Show correct game logo(s) for existing save file(s)

ALSO: Add .ini-only settings to force a specific region for each game
This commit is contained in:
RocketRobz 2023-02-27 01:10:12 -07:00
parent e9aa93e96f
commit ee9f22fdcb
4 changed files with 138 additions and 42 deletions

View File

@ -48,6 +48,11 @@ static bool musicPlaying = false;
static bool musicLoopPlaying = false;
static int musicLoopDelay = 0;
int ss1Region = -1;
static int ss2Region = -1;
static int ss3Region = -1;
static int ss4Region = -1;
void loadSettings(void) {
CIniFile settingsini(settingsIni);
@ -55,6 +60,11 @@ void loadSettings(void) {
iFps = settingsini.GetInt("SAVVY-MANAGER", "FRAME_RATE", iFps);
horiHd = settingsini.GetInt("SAVVY-MANAGER", "HORI_HD", horiHd);
ss1Region = settingsini.GetInt("SS1", "REGION", ss1Region);
ss2Region = settingsini.GetInt("SS2", "REGION", ss2Region);
ss3Region = settingsini.GetInt("SS3", "REGION", ss3Region);
ss4Region = settingsini.GetInt("SS4", "REGION", ss4Region);
currentMusicPack = settingsini.GetString("SS2", "CURRENT_MUSIC_PACK", currentMusicPack);
}
@ -120,10 +130,11 @@ int cursorAlpha = 0;
int ss1Logo = gameSelSprites_title1_idx;
int ss2Logo = gameSelSprites_title2_idx;
int ss1LogoXpos = 0;
int ssLogoXpos = 0;
int ss3Logo = gameSelSprites_title3_idx;
int ss4Logo = gameSelSprites_title4_idx;
int ss1LogoXpos = 0;
int ss2LogoXpos = 0;
int ss4LogoXpos = 0;
u32 hDown = 0;
u32 hDownRepeat = 0;
@ -247,54 +258,88 @@ int main()
u32 ss3Id[3] = {0x00196500, 0x0016A100, 0x0012D800};
u32 ss4Id[3] = {0x00001C25, 0x00001C26, 0x000019F6};
switch (sysRegion) {
if (ss1Region < 0 || ss1Region >= 6) {
ss1Region = sysRegion;
}
switch (ss1Region) {
case CFG_REGION_EUR:
case CFG_REGION_AUS:
ss1Logo = gameSelSprites_title1_E_idx;
ss1LogoXpos = 32;
break;
case CFG_REGION_JPN:
ss1Logo = gameSelSprites_title1_J_idx;
break;
case CFG_REGION_KOR:
ss1Logo = gameSelSprites_title1_K_idx;
ss1LogoXpos = 64;
break;
default:
break;
}
if (ss2Region < 0 || ss2Region >= 6) {
ss2Region = sysRegion;
}
switch (ss2Region) {
case CFG_REGION_EUR:
case CFG_REGION_AUS:
ss2Id[0] = 0x000A9000;
ss2Id[1] = 0x000A9100; // Fallback: USA
ss3Id[0] = 0x0016A100;
ss3Id[1] = 0x00196500; // Fallback: USA
ss4Id[0] = 0x00001C26;
ss4Id[1] = 0x00001C25; // Fallback: USA
ss1Logo = gameSelSprites_title1_E_idx;
ss2Logo = gameSelSprites_title2_E_idx;
ss3Logo = gameSelSprites_title3_E_idx;
ss4Logo = gameSelSprites_title4_E_idx;
ss1LogoXpos = 32;
ssLogoXpos = 32;
break;
case CFG_REGION_JPN:
ss2Id[0] = 0x0005D100;
ss2Id[1] = 0x000C4F00; // Fallback: KOR
ss2Id[2] = 0x000A9100; // Fallback: USA
ss2Id[3] = 0x000A9000; // Fallback: EUR/AUS
ss3Id[0] = 0x0012D800;
ss3Id[1] = 0x00196500; // Fallback: USA
ss3Id[2] = 0x0016A100; // Fallback: EUR/AUS
ss4Id[0] = 0x000019F6;
ss4Id[1] = 0x00001C25; // Fallback: USA
ss4Id[2] = 0x00001C26; // Fallback: EUR/AUS
ss1Logo = gameSelSprites_title1_J_idx;
ss2Logo = gameSelSprites_title2_J_idx;
ss3Logo = gameSelSprites_title3_J_idx;
ss4Logo = gameSelSprites_title4_J_idx;
break;
case CFG_REGION_KOR:
ss2Id[0] = 0x000C4F00;
ss2Id[1] = 0x0005D100; // Fallback: JPN
ss2Id[2] = 0x000A9100; // Fallback: USA
ss2Id[3] = 0x000A9000; // Fallback: EUR/AUS
ss3Id[0] = 0x0012D800; // JPN
break;
default:
break;
}
if (ss3Region < 0 || ss3Region >= 6) {
ss3Region = sysRegion;
}
switch (ss3Region) {
case CFG_REGION_EUR:
case CFG_REGION_AUS:
ss3Id[0] = 0x0016A100;
ss3Id[1] = 0x00196500; // Fallback: USA
break;
case CFG_REGION_JPN:
case CFG_REGION_KOR:
ss3Id[0] = 0x0012D800;
ss3Id[1] = 0x00196500; // Fallback: USA
ss3Id[2] = 0x0016A100; // Fallback: EUR/AUS
ss4Id[0] = 0x000019F6; // JPN
break;
default:
break;
}
if (ss4Region < 0 || ss4Region >= 6) {
ss4Region = sysRegion;
}
switch (ss4Region) {
case CFG_REGION_EUR:
case CFG_REGION_AUS:
ss4Id[0] = 0x00001C26;
ss4Id[1] = 0x00001C25; // Fallback: USA
break;
case CFG_REGION_JPN:
case CFG_REGION_KOR:
ss4Id[0] = 0x000019F6;
ss4Id[1] = 0x00001C25; // Fallback: USA
ss4Id[2] = 0x00001C26; // Fallback: EUR/AUS
ss1Logo = gameSelSprites_title1_K_idx;
ss2Logo = gameSelSprites_title2_K_idx;
ss3Logo = gameSelSprites_title3_J_idx;
ss4Logo = gameSelSprites_title4_J_idx;
ss1LogoXpos = 64;
break;
default:
break;
@ -450,6 +495,54 @@ int main()
ss3DLCharactersBackedUp = (access("sdmc:/3ds/SavvyManager/SS3/dlCharacters.bak", F_OK) == 0);
switch (saveRegion[1]) {
case CFG_REGION_EUR:
case CFG_REGION_AUS:
ss2Logo = gameSelSprites_title2_E_idx;
ss2LogoXpos = 32;
break;
case CFG_REGION_JPN:
ss2Logo = gameSelSprites_title2_J_idx;
break;
case CFG_REGION_KOR:
ss2Logo = gameSelSprites_title2_K_idx;
break;
default:
break;
}
switch (saveRegion[2]) {
case CFG_REGION_EUR:
case CFG_REGION_AUS:
ss3Logo = gameSelSprites_title3_E_idx;
break;
case CFG_REGION_JPN:
case CFG_REGION_KOR:
ss3Logo = gameSelSprites_title3_J_idx;
break;
default:
break;
}
switch (saveRegion[3]) {
case CFG_REGION_EUR:
case CFG_REGION_AUS:
ss4Id[0] = 0x00001C26;
ss4Id[1] = 0x00001C25; // Fallback: USA
ss4Logo = gameSelSprites_title4_E_idx;
ss4LogoXpos = 32;
break;
case CFG_REGION_JPN:
case CFG_REGION_KOR:
ss4Id[0] = 0x000019F6;
ss4Id[1] = 0x00001C25; // Fallback: USA
ss4Id[2] = 0x00001C26; // Fallback: EUR/AUS
ss4Logo = gameSelSprites_title4_J_idx;
break;
default:
break;
}
sprintf(verText, "Ver. %i.%i.%i", VERSION_MAJOR, VERSION_MINOR, VERSION_MICRO);
C3D_FrameRate(iFps);

View File

@ -571,7 +571,8 @@ const char* CharacterChange::import_characterNameDisplay(void) const {
}
const char* CharacterChange::ss1Title(void) const {
switch (sysRegion) {
extern int ss1Region;
switch (ss1Region) {
default:
return "Style Savvy";
case CFG_REGION_EUR:
@ -585,7 +586,7 @@ const char* CharacterChange::ss1Title(void) const {
}
const char* CharacterChange::ss2Title(void) const {
switch (sysRegion) {
switch (saveRegion[1]) {
default:
return "Style Savvy: Trendsetters";
case CFG_REGION_EUR:
@ -599,7 +600,7 @@ const char* CharacterChange::ss2Title(void) const {
}
const char* CharacterChange::ss3Title(void) const {
switch (sysRegion) {
switch (saveRegion[2]) {
default:
return "Style Savvy: Fashion Forward";
case CFG_REGION_EUR:
@ -613,7 +614,7 @@ const char* CharacterChange::ss3Title(void) const {
}
const char* CharacterChange::ss4Title(void) const {
switch (sysRegion) {
switch (saveRegion[3]) {
default:
return "Style Savvy: Styling Star";
case CFG_REGION_EUR:

View File

@ -9,10 +9,11 @@ extern bool exiting;
extern int ss1Logo;
extern int ss2Logo;
extern int ss1LogoXpos;
extern int ssLogoXpos;
extern int ss3Logo;
extern int ss4Logo;
extern int ss1LogoXpos;
extern int ss2LogoXpos;
extern int ss4LogoXpos;
extern bool ss2SaveFound;
extern bool ss3SaveFound;
extern bool ss4SaveFound;
@ -114,7 +115,7 @@ void GameSelect::Draw(void) const {
break;
case 1:
GFX::DrawGameBgSprite(gameBgSprites_title2_bg_idx, 0, 0);
GFX::DrawGameSelSprite(ss2Logo, ssLogoXpos, 56);
GFX::DrawGameSelSprite(ss2Logo, ss2LogoXpos, 56);
break;
case 2:
GFX::DrawGameBgSprite(gameBgSprites_title3_bg_idx, 0, 0);
@ -122,7 +123,7 @@ void GameSelect::Draw(void) const {
break;
case 3:
GFX::DrawGameBgSprite((sysRegion==CFG_REGION_EUR || sysRegion==CFG_REGION_AUS) ? gameBgSprites_title4_bgE_idx : gameBgSprites_title4_bg_idx, 0, 0);
GFX::DrawGameSelSprite(ss4Logo, ssLogoXpos, 56);
GFX::DrawGameSelSprite(ss4Logo, ss4LogoXpos, 56);
break;
}
Gui::DrawString(8, 8, 0.50, BLACK, "Select a game to manage its save data.");

View File

@ -10,10 +10,11 @@
extern int ss1Logo;
extern int ss2Screenshot;
extern int ss2Logo;
extern int ss1LogoXpos;
extern int ssLogoXpos;
extern int ss3Logo;
extern int ss4Logo;
extern int ss1LogoXpos;
extern int ss2LogoXpos;
extern int ss4LogoXpos;
extern bool ss2SaveFound;
extern bool ss3SaveFound;
extern bool ss4SaveFound;
@ -70,13 +71,13 @@ void WhatToDo::Draw(void) const {
GFX::DrawGameSelSprite(ss1Logo, 40+ss1LogoXpos, 56);
break;
case 1:
GFX::DrawGameSelSprite(ss2Logo, 40+ssLogoXpos, 56);
GFX::DrawGameSelSprite(ss2Logo, 40+ss2LogoXpos, 56);
break;
case 2:
GFX::DrawGameSelSprite(ss3Logo, 40, 56);
break;
case 3:
GFX::DrawGameSelSprite(ss4Logo, 40+ssLogoXpos, 56);
GFX::DrawGameSelSprite(ss4Logo, 40+ss4LogoXpos, 56);
break;
}