From c45fe11d5c520cb6c125c3e264516d4dc5cf6ca3 Mon Sep 17 00:00:00 2001 From: RocketRobz Date: Thu, 11 Oct 2018 16:58:39 -0600 Subject: [PATCH] Revert "Press Y to swap screens" This reverts commit f22f96873aef952b8ad673a7836939eeb5409360. --- arm9/source/driveMenu.cpp | 27 ++++++++++----- arm9/source/file_browse.cpp | 67 ++++++++++++++++++++++--------------- arm9/source/main.cpp | 31 ++++------------- arm9/source/main.h | 2 -- 4 files changed, 65 insertions(+), 62 deletions(-) diff --git a/arm9/source/driveMenu.cpp b/arm9/source/driveMenu.cpp index 01184b1..85c305d 100644 --- a/arm9/source/driveMenu.cpp +++ b/arm9/source/driveMenu.cpp @@ -45,6 +45,8 @@ static int dmCursorPosition = 0; static u8 gbaFixedValue = 0; void gbaCartDump(void) { + int pressed = 0; + printf ("\x1b[0;27H"); printf (" "); // Clear time consoleInit(NULL, 1, BgType_Text4bpp, BgSize_T_256x256, 15, 0, false, true); @@ -54,10 +56,12 @@ void gbaCartDump(void) { while (true) { // Power saving loop. Only poll the keys once per frame and sleep the CPU if there is nothing else to do do { + scanKeys(); + pressed = keysDownRepeat(); swiWaitForVBlank(); - } while (!(buttonsPressed & KEY_A) && !(buttonsPressed & KEY_B)); + } while (!(pressed & KEY_A) && !(pressed & KEY_B)); - if (buttonsPressed & KEY_A) { + if (pressed & KEY_A) { consoleClear(); if (access("fat:/gm9i", F_OK) != 0) { printf("Creating directory..."); @@ -108,13 +112,15 @@ void gbaCartDump(void) { fclose(destinationFile); break; } - if (buttonsPressed & KEY_B) { + if (pressed & KEY_B) { break; } } } void driveMenu (void) { + int pressed = 0; + int held = 0; int assignedOp[3] = {-1}; int maxCursors = -1; @@ -244,6 +250,9 @@ void driveMenu (void) { // Print time printf (RetTime().c_str()); + scanKeys(); + pressed = keysDownRepeat(); + held = keysHeld(); swiWaitForVBlank(); if (!isDSiMode() && isRegularDS) { @@ -257,13 +266,13 @@ void driveMenu (void) { break; } } - } while (!(buttonsPressed & KEY_UP) && !(buttonsPressed & KEY_DOWN) && !(buttonsPressed & KEY_A) && !(buttonsHeld & KEY_R)); + } while (!(pressed & KEY_UP) && !(pressed & KEY_DOWN) && !(pressed & KEY_A) && !(held & KEY_R)); - if ((buttonsPressed & KEY_UP) && maxCursors != -1) { + if ((pressed & KEY_UP) && maxCursors != -1) { dmCursorPosition -= 1; dmTextPrinted = false; } - if ((buttonsPressed & KEY_DOWN) && maxCursors != -1) { + if ((pressed & KEY_DOWN) && maxCursors != -1) { dmCursorPosition += 1; dmTextPrinted = false; } @@ -271,7 +280,7 @@ void driveMenu (void) { if (dmCursorPosition < 0) dmCursorPosition = maxCursors; // Wrap around to bottom of list if (dmCursorPosition > maxCursors) dmCursorPosition = 0; // Wrap around to top of list - if (buttonsPressed & KEY_A) { + if (pressed & KEY_A) { if (assignedOp[dmCursorPosition] == 0 && isDSiMode() && sdMounted) { dmTextPrinted = false; secondaryDrive = false; @@ -301,7 +310,7 @@ void driveMenu (void) { } // Unmount/Remount SD card - if ((buttonsHeld & KEY_R) && (buttonsPressed & KEY_B)) { + if ((held & KEY_R) && (pressed & KEY_B)) { dmTextPrinted = false; if (isDSiMode()) { if (sdMounted) { @@ -316,7 +325,7 @@ void driveMenu (void) { } } - if (isDSiMode() && !flashcardMountSkipped && !buttonsPressed && !buttonsHeld) { + if (isDSiMode() && !flashcardMountSkipped && !pressed && !held) { if (REG_SCFG_MC == 0x11) { if (flashcardMounted) { flashcardUnmount(); diff --git a/arm9/source/file_browse.cpp b/arm9/source/file_browse.cpp index a451202..8b4df79 100644 --- a/arm9/source/file_browse.cpp +++ b/arm9/source/file_browse.cpp @@ -156,6 +156,7 @@ void showDirectoryContents (const vector& dirContents, int startRow) { } int fileBrowse_A(DirEntry* entry, char path[PATH_MAX]) { + int pressed = 0; int assignedOp[3] = {0}; int optionOffset = 0; int cursorScreenPos = 0; @@ -211,17 +212,19 @@ int fileBrowse_A(DirEntry* entry, char path[PATH_MAX]) { // Power saving loop. Only poll the keys once per frame and sleep the CPU if there is nothing else to do do { + scanKeys(); + pressed = keysDownRepeat(); swiWaitForVBlank(); - } while (!(buttonsPressed & KEY_UP) && !(buttonsPressed & KEY_DOWN) - && !(buttonsPressed & KEY_A) && !(buttonsPressed & KEY_B)); + } while (!(pressed & KEY_UP) && !(pressed & KEY_DOWN) + && !(pressed & KEY_A) && !(pressed & KEY_B)); - if (buttonsPressed & KEY_UP) optionOffset -= 1; - if (buttonsPressed & KEY_DOWN) optionOffset += 1; + if (pressed & KEY_UP) optionOffset -= 1; + if (pressed & KEY_DOWN) optionOffset += 1; if (optionOffset < 0) optionOffset = maxCursors; // Wrap around to bottom of list if (optionOffset > maxCursors) optionOffset = 0; // Wrap around to top of list - if (buttonsPressed & KEY_A) { + if (pressed & KEY_A) { if (assignedOp[optionOffset] == 0) { applaunch = true; iprintf ("\x1b[%d;3H", optionOffset + ENTRIES_START_ROW+cursorScreenPos); @@ -269,13 +272,14 @@ int fileBrowse_A(DirEntry* entry, char path[PATH_MAX]) { } return assignedOp[optionOffset]; } - if (buttonsPressed & KEY_B) { + if (pressed & KEY_B) { return -1; } } } bool fileBrowse_paste(char path[PATH_MAX]) { + int pressed = 0; int optionOffset = 0; int maxCursors = -1; @@ -302,17 +306,19 @@ bool fileBrowse_paste(char path[PATH_MAX]) { // Power saving loop. Only poll the keys once per frame and sleep the CPU if there is nothing else to do do { + scanKeys(); + pressed = keysDownRepeat(); swiWaitForVBlank(); - } while (!(buttonsPressed & KEY_UP) && !(buttonsPressed & KEY_DOWN) - && !(buttonsPressed & KEY_A) && !(buttonsPressed & KEY_B)); + } while (!(pressed & KEY_UP) && !(pressed & KEY_DOWN) + && !(pressed & KEY_A) && !(pressed & KEY_B)); - if (buttonsPressed & KEY_UP) optionOffset -= 1; - if (buttonsPressed & KEY_DOWN) optionOffset += 1; + if (pressed & KEY_UP) optionOffset -= 1; + if (pressed & KEY_DOWN) optionOffset += 1; if (optionOffset < 0) optionOffset = maxCursors; // Wrap around to bottom of list if (optionOffset > maxCursors) optionOffset = 0; // Wrap around to top of list - if (buttonsPressed & KEY_A) { + if (pressed & KEY_A) { char destPath[256]; snprintf(destPath, sizeof(destPath), "%s%s", path, clipboardFilename); iprintf ("\x1b[%d;3H", optionOffset + ENTRIES_START_ROW); @@ -333,13 +339,14 @@ bool fileBrowse_paste(char path[PATH_MAX]) { clipboardOn = false; // Clear clipboard after copying or moving return true; } - if (buttonsPressed & KEY_B) { + if (pressed & KEY_B) { return false; } } } string browseForFile (void) { + int pressed = 0; int screenOffset = 0; int fileOffset = 0; off_t fileSize = 0; @@ -393,27 +400,29 @@ string browseForFile (void) { // Print time printf (RetTime().c_str()); + scanKeys(); + pressed = keysDownRepeat(); swiWaitForVBlank(); if (REG_SCFG_MC != stored_SCFG_MC) { break; } - } while (!(buttonsPressed & KEY_UP) && !(buttonsPressed & KEY_DOWN) && !(buttonsPressed & KEY_LEFT) && !(buttonsPressed & KEY_RIGHT) - && !(buttonsPressed & KEY_A) && !(buttonsPressed & KEY_B) && !(buttonsPressed & KEY_X) && !(buttonsPressed & KEY_Y) - && !(buttonsPressed & KEY_SELECT)); + } while (!(pressed & KEY_UP) && !(pressed & KEY_DOWN) && !(pressed & KEY_LEFT) && !(pressed & KEY_RIGHT) + && !(pressed & KEY_A) && !(pressed & KEY_B) && !(pressed & KEY_X) && !(pressed & KEY_Y) + && !(pressed & KEY_SELECT)); iprintf ("\x1b[%d;0H*", fileOffset - screenOffset + ENTRIES_START_ROW); - if (isDSiMode() && !buttonsPressed && secondaryDrive && REG_SCFG_MC == 0x11 && flashcardMounted) { + if (isDSiMode() && !pressed && secondaryDrive && REG_SCFG_MC == 0x11 && flashcardMounted) { flashcardUnmount(); screenMode = 0; return "null"; } - if (buttonsPressed & KEY_UP) fileOffset -= 1; - if (buttonsPressed & KEY_DOWN) fileOffset += 1; - if (buttonsPressed & KEY_LEFT) fileOffset -= ENTRY_PAGE_LENGTH; - if (buttonsPressed & KEY_RIGHT) fileOffset += ENTRY_PAGE_LENGTH; + if (pressed & KEY_UP) fileOffset -= 1; + if (pressed & KEY_DOWN) fileOffset += 1; + if (pressed & KEY_LEFT) fileOffset -= ENTRY_PAGE_LENGTH; + if (pressed & KEY_RIGHT) fileOffset += ENTRY_PAGE_LENGTH; if (fileOffset < 0) fileOffset = dirContents.size() - 1; // Wrap around to bottom of list if (fileOffset > ((int)dirContents.size() - 1)) fileOffset = 0; // Wrap around to top of list @@ -430,7 +439,7 @@ string browseForFile (void) { getcwd(path, PATH_MAX); - if (buttonsPressed & KEY_A) { + if (pressed & KEY_A) { DirEntry* entry = &dirContents.at(fileOffset); if (entry->isDirectory) { iprintf("Entering directory\n"); @@ -456,7 +465,7 @@ string browseForFile (void) { } } - if (buttonsPressed & KEY_B) { + if (pressed & KEY_B) { if ((strcmp (path, "sd:/") == 0) || (strcmp (path, "fat:/") == 0) || (strcmp (path, "nitro:/") == 0)) { screenMode = 0; return "null"; @@ -469,15 +478,17 @@ string browseForFile (void) { } // Delete file/folder - if ((buttonsPressed & KEY_X) && (strcmp (entry->name.c_str(), "..") != 0) && (strncmp (path, "nitro:/", 7) != 0)) { + if ((pressed & KEY_X) && (strcmp (entry->name.c_str(), "..") != 0) && (strncmp (path, "nitro:/", 7) != 0)) { printf ("\x1b[0;27H"); printf (" "); // Clear time consoleInit(NULL, 1, BgType_Text4bpp, BgSize_T_256x256, 15, 0, false, true); iprintf("Delete \"%s\"?\n", entry->name.c_str()); printf ("( yes, no)"); while (true) { + scanKeys(); + pressed = keysDownRepeat(); swiWaitForVBlank(); - if (buttonsPressed & KEY_A) { + if (pressed & KEY_A) { consoleClear(); if (entry->isDirectory) { printf ("Deleting folder, please wait..."); @@ -493,15 +504,17 @@ string browseForFile (void) { } getDirectoryContents (dirContents); fileOffset--; + pressed = 0; break; } - if (buttonsPressed & KEY_B) { + if (pressed & KEY_B) { + pressed = 0; break; } } } - if (buttonsPressed & KEY_Y) { + if (pressed & KEY_Y) { if (clipboardOn) { if (strncmp (path, "nitro:/", 7) != 0) { if (fileBrowse_paste(path)) { @@ -518,7 +531,7 @@ string browseForFile (void) { } } - if ((buttonsPressed & KEY_SELECT) && clipboardUsed) { + if ((pressed & KEY_SELECT) && clipboardUsed) { clipboardOn = !clipboardOn; } } diff --git a/arm9/source/main.cpp b/arm9/source/main.cpp index 16c0d97..c0c8dff 100644 --- a/arm9/source/main.cpp +++ b/arm9/source/main.cpp @@ -58,25 +58,6 @@ void stop (void) { char filePath[PATH_MAX]; -static bool screenSwapped = false; - -int buttonsPressed = 0; -int buttonsHeld = 0; - -void vBlankHandler(void) { - scanKeys(); - buttonsPressed = keysDownRepeat(); - buttonsHeld = keysHeld(); - if (buttonsPressed & KEY_L) { - if (screenSwapped) { - lcdMainOnTop(); - } else { - lcdMainOnBottom(); - } - screenSwapped = !screenSwapped; - } -} - //--------------------------------------------------------------------------------- int main(int argc, char **argv) { //--------------------------------------------------------------------------------- @@ -90,6 +71,8 @@ int main(int argc, char **argv) { int pathLen; std::string filename; + bool yHeld = false; + snprintf(titleName, sizeof(titleName), "GodMode9i v%i.%i.%i", 1, 2, 1); // initialize video mode @@ -124,10 +107,6 @@ int main(int argc, char **argv) { printf ("Y Held - Disable cart access"); } - // Set up key press and screen swap IRQ - irqSet(IRQ_VBLANK, vBlankHandler); - irqEnable(IRQ_VBLANK); - // Display for 2 seconds for (int i = 0; i < 60*2; i++) { swiWaitForVBlank(); @@ -148,9 +127,13 @@ int main(int argc, char **argv) { sysSetCartOwner (BUS_OWNER_ARM9); // Allow arm9 to access GBA ROM if (isDSiMode()) { + scanKeys(); + if (keysHeld() & KEY_Y) { + yHeld = true; + } sdMounted = sdMount(); } - if (!isDSiMode() || !(buttonsHeld & KEY_Y)) { + if (!isDSiMode() || !yHeld) { flashcardMounted = flashcardMount(); flashcardMountSkipped = false; } diff --git a/arm9/source/main.h b/arm9/source/main.h index 195626e..9f33b80 100644 --- a/arm9/source/main.h +++ b/arm9/source/main.h @@ -12,8 +12,6 @@ extern bool isRegularDS; extern bool applaunch; -extern int buttonsPressed; -extern int buttonsHeld; #endif //MAIN_H