diff --git a/source/3dsinput.cpp b/source/3dsinput.cpp index 29c3a25..13058ea 100644 --- a/source/3dsinput.cpp +++ b/source/3dsinput.cpp @@ -60,7 +60,7 @@ u32 input3dsScanInputForEmulation() // ----------------------------------------------- #endif - if (keysDown & KEY_TOUCH) + if ((keysDown & KEY_TOUCH) || ((keysDown & (KEY_ZL | KEY_ZR)) && ((currKeysHeld & (KEY_ZL | KEY_ZR)) == (KEY_ZL | KEY_ZR)))) { impl3dsTouchScreenPressed(); diff --git a/source/3dsmain.cpp b/source/3dsmain.cpp index 015f055..78dc0ae 100644 --- a/source/3dsmain.cpp +++ b/source/3dsmain.cpp @@ -1082,7 +1082,11 @@ void menuSetupCheats() //-------------------------------------------------------- void emulatorInitialize() { - file3dsInitialize(); + // Performance: use the higher clock speed for new 3DS. + osSetSpeedupEnable(true); + APT_CheckNew3DS(&settings3DS.IsNew3DS); + + file3dsInitialize(); romFileNameLastSelected[0] = 0; @@ -1116,8 +1120,6 @@ void emulatorInitialize() */ printf ("Initialization complete\n"); - osSetSpeedupEnable(1); // Performance: use the higher clock speed for new 3DS. - enableExitHook(); settingsLoad(false); @@ -1272,7 +1274,8 @@ void emulatorLoop() menu3dsDrawBlackScreen(); if (settings3DS.HideUnnecessaryBottomScrText == 0) { - ui3dsDrawStringWithNoWrapping(0, 100, 320, 115, 0x7f7f7f, HALIGN_CENTER, "Touch screen for menu"); + ui3dsDrawStringWithNoWrapping(0, 100, 320, 115, 0x7f7f7f, HALIGN_CENTER, + settings3DS.IsNew3DS ? "Touch screen or press ZL + ZR for menu" : "Touch screen for menu"); } snd3dsStartPlaying(); diff --git a/source/3dssettings.h b/source/3dssettings.h index 927102b..c5a75ad 100644 --- a/source/3dssettings.h +++ b/source/3dssettings.h @@ -40,4 +40,6 @@ typedef struct // 3 - 60 seconds // 4 - Never + bool IsNew3DS; // Whether the 3DS this is running on is a New or an Old model. + } S9xSettings3DS;