diff --git a/retail/cardengine/arm7/source/cardengine.c b/retail/cardengine/arm7/source/cardengine.c index 8dea334e3..6e27a6a15 100644 --- a/retail/cardengine/arm7/source/cardengine.c +++ b/retail/cardengine/arm7/source/cardengine.c @@ -99,7 +99,7 @@ static bool customMusic = false; static bool wifiIrq = false; static int wifiIrqTimer = 0; #endif -bool returnToMenu = false; +// bool returnToMenu = false; bool isSdk5Set = false; static const tNDSHeader* ndsHeader = NULL; diff --git a/retail/cardengine/arm7/source/inGameMenu.c b/retail/cardengine/arm7/source/inGameMenu.c index b85aca2c4..13c651f56 100644 --- a/retail/cardengine/arm7/source/inGameMenu.c +++ b/retail/cardengine/arm7/source/inGameMenu.c @@ -19,7 +19,7 @@ extern u32 valueBits; extern vu32* volatile sharedAddr; extern bool ipcEveryFrame; -extern bool returnToMenu; +// extern bool returnToMenu; extern void rebootConsole(void); extern void reset(void); @@ -102,9 +102,9 @@ void inGameMenu(void) { while (REG_VCOUNT == 191) swiDelay(100); switch (sharedAddr[4]) { - case 0x54495845: // EXIT + /* case 0x54495845: // EXIT exitMenu = true; - break; + break; */ case 0x54455352: // RSET case 0x54495551: // QUIT exitMenu = true; @@ -159,14 +159,17 @@ void inGameMenu(void) { break; } - if (!exitMenu) { + if (sharedAddr[4] == 0x54495845) { // EXIT + // returnToMenu = (sharedAddr[1]); + exitMenu = true; + } else if (!exitMenu) { sharedAddr[4] = 0x554E454D; // MENU } } } sharedAddr[0] = errorBak; - sharedAddr[4] = 0x54495845; // EXIT + sharedAddr[4] = 0; sharedAddr[7] -= 0x10000000; // Clear time receive flag timeTillStatusRefresh = 7; diff --git a/retail/cardenginei/arm7/source/cardengine.c b/retail/cardenginei/arm7/source/cardengine.c index 5e8a56084..19d4a1fe2 100644 --- a/retail/cardenginei/arm7/source/cardengine.c +++ b/retail/cardenginei/arm7/source/cardengine.c @@ -1542,10 +1542,12 @@ void myIrqHandlerVBlank(void) { if (language >= 0 && language <= 7 && languageTimer < 60*3) { // Change language personalData->language = language; + #ifndef TWLSDK if (languageAddr > 0) { // Extra measure for specific games *languageAddr = language; } + #endif languageTimer++; } @@ -1598,11 +1600,13 @@ void myIrqHandlerVBlank(void) { funcsUnpatched = true; } +#ifndef TWLSDK if (!(valueBits & gameOnFlashcard) && !(valueBits & ROMinRAM) && isSdEjected()) { tonccpy((u32*)0x02000300, sr_data_error, 0x020); i2cWriteRegister(0x4A, 0x70, 0x01); i2cWriteRegister(0x4A, 0x11, 0x01); // Reboot into error screen if SD card is removed } +#endif /* #ifndef TWLSDK if (valueBits & isDlp) { @@ -1613,7 +1617,7 @@ void myIrqHandlerVBlank(void) { } #endif */ - if ((0 == (REG_KEYINPUT & igmHotkey) && 0 == (REG_EXTKEYINPUT & (((igmHotkey >> 10) & 3) | ((igmHotkey >> 6) & 0xC0))) && (valueBits & igmAccessible) && !wifiIrq) || returnToMenu || sharedAddr[5] == 0x4C4D4749 /* IGML */) { + if ((0 == (REG_KEYINPUT & igmHotkey) && 0 == (REG_EXTKEYINPUT & (((igmHotkey >> 10) & 3) | ((igmHotkey >> 6) & 0xC0))) && (valueBits & igmAccessible) && !wifiIrq) /* || returnToMenu */ || sharedAddr[5] == 0x4C4D4749 /* IGML */) { #ifdef TWLSDK igmText = (struct IgmText *)INGAME_MENU_LOCATION; i2cWriteRegister(0x4A, 0x12, 0x00); diff --git a/retail/cardenginei/arm7/source/inGameMenu.c b/retail/cardenginei/arm7/source/inGameMenu.c index a83820dab..716568782 100644 --- a/retail/cardenginei/arm7/source/inGameMenu.c +++ b/retail/cardenginei/arm7/source/inGameMenu.c @@ -22,7 +22,7 @@ extern u8 consoleModel; extern vu32* volatile sharedAddr; extern bool ipcEveryFrame; -extern bool returnToMenu; +// extern bool returnToMenu; extern struct IgmText *igmText; @@ -53,7 +53,7 @@ void biosRead(void* dst, const void* src, u32 len) volatile int timeTillStatusRefresh = 7; void inGameMenu(void) { - returnToMenu = false; + // returnToMenu = false; sharedAddr[4] = 0x554E454D; // 'MENU' u32 errorBak = sharedAddr[0]; IPC_SendSync(0x9); @@ -122,9 +122,9 @@ void inGameMenu(void) { while (REG_VCOUNT == 191) swiDelay(100); switch (sharedAddr[4]) { - case 0x54495845: // EXIT + /* case 0x54495845: // EXIT exitMenu = true; - break; + break; */ case 0x54455352: // RSET exitMenu = true; timeTillStatusRefresh = 7; @@ -152,10 +152,10 @@ void inGameMenu(void) { dumpRam(); exitMenu = true; break; - case 0x50455453: // STEP + /* case 0x50455453: // STEP returnToMenu = true; exitMenu = true; - break; + break; */ case 0x50505353: // SSPP prepareScreenshot(); break; @@ -208,14 +208,17 @@ void inGameMenu(void) { break; } - if (!exitMenu) { + if (sharedAddr[4] == 0x54495845) { // EXIT + // returnToMenu = (sharedAddr[1]); + exitMenu = true; + } else if (!exitMenu) { sharedAddr[4] = 0x554E454D; // MENU } } } sharedAddr[0] = errorBak; - sharedAddr[4] = 0x54495845; // EXIT + sharedAddr[4] = 0; sharedAddr[7] -= 0x10000000; // Clear time receive flag timeTillStatusRefresh = 7; diff --git a/retail/cardenginei/arm7_dsiware/source/cardengine.c b/retail/cardenginei/arm7_dsiware/source/cardengine.c index 0ddc450c1..2f47f08a2 100644 --- a/retail/cardenginei/arm7_dsiware/source/cardengine.c +++ b/retail/cardenginei/arm7_dsiware/source/cardengine.c @@ -717,10 +717,10 @@ void myIrqHandlerVBlank(void) { if (language >= 0 && language <= 7 && languageTimer < 60*3) { // Change language personalData->language = language; - if (languageAddr > 0) { + /* if (languageAddr > 0) { // Extra measure for specific games *languageAddr = language; - } + } */ languageTimer++; } @@ -743,13 +743,13 @@ void myIrqHandlerVBlank(void) { funcsUnpatched = true; } - if (isSdEjected()) { + /* if (isSdEjected()) { tonccpy((u32*)0x02000300, sr_data_error, 0x020); i2cWriteRegister(0x4A, 0x70, 0x01); i2cWriteRegister(0x4A, 0x11, 0x01); // Reboot into error screen if SD card is removed - } + } */ - if ((0 == (REG_KEYINPUT & igmHotkey) && 0 == (REG_EXTKEYINPUT & (((igmHotkey >> 10) & 3) | ((igmHotkey >> 6) & 0xC0))) && (valueBits & igmAccessible) && !wifiIrq) || returnToMenu || sharedAddr[5] == 0x4C4D4749 /* IGML */) { + if ((0 == (REG_KEYINPUT & igmHotkey) && 0 == (REG_EXTKEYINPUT & (((igmHotkey >> 10) & 3) | ((igmHotkey >> 6) & 0xC0))) && (valueBits & igmAccessible) && !wifiIrq) /* || returnToMenu */ || sharedAddr[5] == 0x4C4D4749 /* IGML */) { bakData(); inGameMenu(); restoreBakData(); diff --git a/retail/cardenginei/arm7_dsiware/source/inGameMenu.c b/retail/cardenginei/arm7_dsiware/source/inGameMenu.c index da80d910b..93d944a63 100644 --- a/retail/cardenginei/arm7_dsiware/source/inGameMenu.c +++ b/retail/cardenginei/arm7_dsiware/source/inGameMenu.c @@ -22,7 +22,7 @@ extern u8 consoleModel; extern vu32* volatile sharedAddr; extern bool ipcEveryFrame; -extern bool returnToMenu; +// extern bool returnToMenu; extern struct IgmText *igmText; @@ -53,8 +53,9 @@ void biosRead(void* dst, const void* src, u32 len) volatile int timeTillStatusRefresh = 7; void inGameMenu(void) { - returnToMenu = false; + // returnToMenu = false; sharedAddr[4] = 0x554E454D; // 'MENU' + u32 errorBak = sharedAddr[0]; IPC_SendSync(0x9); REG_MASTER_VOLUME = 0; int oldIME = enterCriticalSection(); @@ -121,9 +122,9 @@ void inGameMenu(void) { while (REG_VCOUNT == 191) swiDelay(100); switch (sharedAddr[4]) { - case 0x54495845: // EXIT + /* case 0x54495845: // EXIT exitMenu = true; - break; + break; */ case 0x54455352: // RSET exitMenu = true; timeTillStatusRefresh = 7; @@ -150,10 +151,10 @@ void inGameMenu(void) { dumpRam(); exitMenu = true; break; - case 0x50455453: // STEP + /* case 0x50455453: // STEP returnToMenu = true; exitMenu = true; - break; + break; */ case 0x50505353: // SSPP prepareScreenshot(); break; @@ -206,13 +207,17 @@ void inGameMenu(void) { break; } - if (!exitMenu) { + if (sharedAddr[4] == 0x54495845) { // EXIT + // returnToMenu = (sharedAddr[1]); + exitMenu = true; + } else if (!exitMenu) { sharedAddr[4] = 0x554E454D; // MENU } } } - sharedAddr[4] = 0x54495845; // EXIT + sharedAddr[0] = errorBak; + sharedAddr[4] = 0; sharedAddr[7] -= 0x10000000; // Clear time receive flag timeTillStatusRefresh = 7; diff --git a/retail/cardenginei/arm9_igm/source/inGameMenu.c b/retail/cardenginei/arm9_igm/source/inGameMenu.c index ff0153596..93e1a94f5 100644 --- a/retail/cardenginei/arm9_igm/source/inGameMenu.c +++ b/retail/cardenginei/arm9_igm/source/inGameMenu.c @@ -888,7 +888,9 @@ void inGameMenu(s32 *mainScreen, u32 consoleModel, s32 *exceptionRegisters) { while (REG_VCOUNT != 191) mySwiDelay(100); while (REG_VCOUNT == 191) mySwiDelay(100); } while(KEYS & KEY_A); + // sharedAddr[1] = 0; sharedAddr[4] = 0x54495845; // EXIT + while (sharedAddr[4] != 0) swiDelay(100); break; case MENU_RESET: extern bool exceptionPrinted; @@ -910,8 +912,10 @@ void inGameMenu(s32 *mainScreen, u32 consoleModel, s32 *exceptionRegisters) { while (REG_VCOUNT == 191) mySwiDelay(100); } #else + // sharedAddr[1] = 0; sharedAddr[3] = 0x444D4152; // RAMD sharedAddr[4] = 0x54495845; // EXIT + while (sharedAddr[4] != 0) swiDelay(100); #endif break; case MENU_OPTIONS: @@ -932,17 +936,18 @@ void inGameMenu(s32 *mainScreen, u32 consoleModel, s32 *exceptionRegisters) { while (REG_VCOUNT != 191) mySwiDelay(100); while (REG_VCOUNT == 191) mySwiDelay(100); } while(KEYS & KEY_B); + // sharedAddr[1] = 0; sharedAddr[4] = 0x54495845; // EXIT - } - #ifndef B4DS - else if (KEYS & KEY_R && !exception) { + while (sharedAddr[4] != 0) swiDelay(100); + } /* else if (KEYS & KEY_R && !exception) { do { while (REG_VCOUNT != 191) mySwiDelay(100); while (REG_VCOUNT == 191) mySwiDelay(100); } while(KEYS & KEY_R); - sharedAddr[4] = 0x50455453; // STEP - } - #endif + sharedAddr[1] = 1; + sharedAddr[4] = 0x54495845; // EXIT + while (sharedAddr[4] != 0) swiDelay(100); + } */ } tonccpy(BG_MAP_RAM_SUB(15), bgMapBak, sizeof(bgMapBak)); // Restore BG_MAP_RAM