Change screen swap to an ini option (#183)

This commit is contained in:
Pk11 2022-08-02 21:04:55 -05:00 committed by GitHub
parent 7647d311bc
commit 1605dcf8f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 58 additions and 84 deletions

View File

@ -39,6 +39,7 @@ Config::Config() {
sniprintf(defaultLanguagePath, sizeof(defaultLanguagePath), "nitro:/languages/%s/language.ini", getSystemLanguage()); sniprintf(defaultLanguagePath, sizeof(defaultLanguagePath), "nitro:/languages/%s/language.ini", getSystemLanguage());
_languageIniPath = ini.GetString("GODMODE9I", "LANGUAGE_INI_PATH", defaultLanguagePath); _languageIniPath = ini.GetString("GODMODE9I", "LANGUAGE_INI_PATH", defaultLanguagePath);
_fontPath = ini.GetString("GODMODE9I", "FONT_PATH", "sd:/gm9i/font.frf"); _fontPath = ini.GetString("GODMODE9I", "FONT_PATH", "sd:/gm9i/font.frf");
_screenSwap = ini.GetInt("GODMODE9I", "SCREEN_SWAP", 0);
// If the config doesn't exist, create it // If the config doesn't exist, create it
if(access(_configPath, F_OK) != 0) if(access(_configPath, F_OK) != 0)
@ -50,6 +51,7 @@ void Config::save() {
ini.SetString("GODMODE9I", "LANGUAGE_INI_PATH", _languageIniPath); ini.SetString("GODMODE9I", "LANGUAGE_INI_PATH", _languageIniPath);
ini.SetString("GODMODE9I", "FONT_PATH", _fontPath); ini.SetString("GODMODE9I", "FONT_PATH", _fontPath);
ini.SetInt("GODMODE9I", "SCREEN_SWAP", _screenSwap);
ini.SaveIniFile(_configPath); ini.SaveIniFile(_configPath);
} }

View File

@ -3,11 +3,14 @@
#include "inifile.h" #include "inifile.h"
#include <nds.h>
class Config { class Config {
const char *_configPath; const char *_configPath;
std::string _languageIniPath; std::string _languageIniPath;
std::string _fontPath; std::string _fontPath;
bool _screenSwap;
static const char *getSystemLanguage(void); static const char *getSystemLanguage(void);
@ -21,6 +24,10 @@ public:
void languageIniPath(const std::string &languageIniPath) { _languageIniPath = languageIniPath; } void languageIniPath(const std::string &languageIniPath) { _languageIniPath = languageIniPath; }
const std::string &fontPath(void) { return _fontPath; } const std::string &fontPath(void) { return _fontPath; }
bool screenSwap(void) { return _screenSwap; }
void screenSwap(bool &screenSwap) { _screenSwap = screenSwap; }
u32 screenSwapKey(void) { return _screenSwap ? KEY_TOUCH : 0; }
}; };
extern Config *config; extern Config *config;

View File

@ -28,6 +28,7 @@
#include <dirent.h> #include <dirent.h>
#include "main.h" #include "main.h"
#include "config.h"
#include "date.h" #include "date.h"
#include "screenshot.h" #include "screenshot.h"
#include "dumpOperations.h" #include "dumpOperations.h"
@ -302,11 +303,7 @@ void driveMenu (void) {
break; break;
} }
} }
} while (!(pressed & (KEY_UP | KEY_DOWN | KEY_LEFT | KEY_RIGHT | KEY_A | KEY_B | KEY_X | KEY_L | KEY_START } while (!(pressed & (KEY_UP | KEY_DOWN | KEY_LEFT | KEY_RIGHT | KEY_A | KEY_B | KEY_X | KEY_L | KEY_START | config->screenSwapKey())));
#ifdef SCREENSWAP
| KEY_TOUCH
#endif
)));
if(dmOperations.size() != 0) { if(dmOperations.size() != 0) {
if (pressed & KEY_UP) { if (pressed & KEY_UP) {
@ -415,13 +412,11 @@ void driveMenu (void) {
startMenu(); startMenu();
} }
#ifdef SCREENSWAP
// Swap screens // Swap screens
if (pressed & KEY_TOUCH) { if (pressed & config->screenSwapKey()) {
screenSwapped = !screenSwapped; screenSwapped = !screenSwapped;
screenSwapped ? lcdMainOnBottom() : lcdMainOnTop(); screenSwapped ? lcdMainOnBottom() : lcdMainOnTop();
} }
#endif
// Make a screenshot // Make a screenshot
if ((held & KEY_R) && (pressed & KEY_L)) { if ((held & KEY_R) && (pressed & KEY_L)) {

View File

@ -1,6 +1,7 @@
#include "dumpOperations.h" #include "dumpOperations.h"
#include "auxspi.h" #include "auxspi.h"
#include "config.h"
#include "date.h" #include "date.h"
#include "driveOperations.h" #include "driveOperations.h"
#include "fileOperations.h" #include "fileOperations.h"
@ -745,9 +746,8 @@ void ndsCardSaveRestore(const char *filename) {
} }
void ndsCardDump(void) { void ndsCardDump(void) {
#ifdef SCREENSWAP if(config->screenSwap())
lcdMainOnTop(); lcdMainOnTop();
#endif
u16 pressed; u16 pressed;
@ -767,9 +767,9 @@ void ndsCardDump(void) {
break; break;
} }
if (pressed & KEY_B) { if (pressed & KEY_B) {
#ifdef SCREENSWAP if(config->screenSwap())
screenSwapped ? lcdMainOnBottom() : lcdMainOnTop(); screenSwapped ? lcdMainOnBottom() : lcdMainOnTop();
#endif
return; return;
} }
} }
@ -944,9 +944,8 @@ void ndsCardDump(void) {
} }
} }
#ifdef SCREENSWAP if(config->screenSwap())
screenSwapped ? lcdMainOnBottom() : lcdMainOnTop(); screenSwapped ? lcdMainOnBottom() : lcdMainOnTop();
#endif
} }
void gbaCartSaveDump(const char *filename) { void gbaCartSaveDump(const char *filename) {
@ -1041,9 +1040,8 @@ void readChange(void) {
} }
void gbaCartDump(void) { void gbaCartDump(void) {
#ifdef SCREENSWAP if(config->screenSwap())
lcdMainOnTop(); lcdMainOnTop();
#endif
font->clear(false); font->clear(false);
font->print(firstCol, 0, false, STR_LOADING, alignStart); font->print(firstCol, 0, false, STR_LOADING, alignStart);
@ -1265,7 +1263,6 @@ void gbaCartDump(void) {
} }
} }
#ifdef SCREENSWAP if(config->screenSwap())
screenSwapped ? lcdMainOnBottom() : lcdMainOnTop(); screenSwapped ? lcdMainOnBottom() : lcdMainOnTop();
#endif
} }

View File

@ -33,6 +33,7 @@
#include <fat.h> #include <fat.h>
#include "main.h" #include "main.h"
#include "config.h"
#include "date.h" #include "date.h"
#include "screenshot.h" #include "screenshot.h"
#include "fileOperations.h" #include "fileOperations.h"
@ -170,9 +171,8 @@ void showDirectoryContents(std::vector<DirEntry> &dirContents, int fileOffset, i
} }
FileOperation fileBrowse_A(DirEntry* entry, char path[PATH_MAX]) { FileOperation fileBrowse_A(DirEntry* entry, char path[PATH_MAX]) {
#ifdef SCREENSWAP if(config->screenSwap())
lcdMainOnTop(); lcdMainOnTop();
#endif
int pressed = 0, held = 0; int pressed = 0, held = 0;
std::vector<FileOperation> operations; std::vector<FileOperation> operations;
@ -301,9 +301,9 @@ FileOperation fileBrowse_A(DirEntry* entry, char path[PATH_MAX]) {
swiWaitForVBlank(); swiWaitForVBlank();
if(driveRemoved(currentDrive)) { if(driveRemoved(currentDrive)) {
#ifdef SCREENSWAP if(config->screenSwap())
screenSwapped ? lcdMainOnBottom() : lcdMainOnTop(); screenSwapped ? lcdMainOnBottom() : lcdMainOnTop();
#endif
return FileOperation::none; return FileOperation::none;
} }
} while (!(pressed & (KEY_UP| KEY_DOWN | KEY_A | KEY_B | KEY_L))); } while (!(pressed & (KEY_UP| KEY_DOWN | KEY_A | KEY_B | KEY_L)));
@ -468,14 +468,15 @@ FileOperation fileBrowse_A(DirEntry* entry, char path[PATH_MAX]) {
} }
} }
keysDownRepeat(); // prevent unwanted key repeat keysDownRepeat(); // prevent unwanted key repeat
#ifdef SCREENSWAP
screenSwapped ? lcdMainOnBottom() : lcdMainOnTop(); if(config->screenSwap())
#endif screenSwapped ? lcdMainOnBottom() : lcdMainOnTop();
return operations[optionOffset]; return operations[optionOffset];
} else if (pressed & KEY_B) { } else if (pressed & KEY_B) {
#ifdef SCREENSWAP if(config->screenSwap())
screenSwapped ? lcdMainOnBottom() : lcdMainOnTop(); screenSwapped ? lcdMainOnBottom() : lcdMainOnTop();
#endif
return FileOperation::none; return FileOperation::none;
} }
// Make a screenshot // Make a screenshot
@ -486,9 +487,8 @@ FileOperation fileBrowse_A(DirEntry* entry, char path[PATH_MAX]) {
} }
bool fileBrowse_paste(char dest[256]) { bool fileBrowse_paste(char dest[256]) {
#ifdef SCREENSWAP if(config->screenSwap())
lcdMainOnTop(); lcdMainOnTop();
#endif
int pressed = 0; int pressed = 0;
int optionOffset = 0; int optionOffset = 0;
@ -549,15 +549,16 @@ bool fileBrowse_paste(char dest[256]) {
} }
clipboardUsed = true; // Disable clipboard restore clipboardUsed = true; // Disable clipboard restore
clipboardOn = false; // Clear clipboard after copying or moving clipboardOn = false; // Clear clipboard after copying or moving
#ifdef SCREENSWAP
screenSwapped ? lcdMainOnBottom() : lcdMainOnTop(); if(config->screenSwap())
#endif screenSwapped ? lcdMainOnBottom() : lcdMainOnTop();
return true; return true;
} }
if (pressed & KEY_B) { if (pressed & KEY_B) {
#ifdef SCREENSWAP if(config->screenSwap())
screenSwapped ? lcdMainOnBottom() : lcdMainOnTop(); screenSwapped ? lcdMainOnBottom() : lcdMainOnTop();
#endif
return false; return false;
} }
} }
@ -966,18 +967,10 @@ std::string browseForFile (void) {
clipboardOn = !clipboardOn; clipboardOn = !clipboardOn;
} if (pressed & KEY_START) { // START menu } if (pressed & KEY_START) { // START menu
startMenu(); startMenu();
} } else if (pressed & config->screenSwapKey()) { // Swap screens
#ifdef SCREENSWAP
// Swap screens
else if (pressed & KEY_TOUCH) {
screenSwapped = !screenSwapped; screenSwapped = !screenSwapped;
screenSwapped ? lcdMainOnBottom() : lcdMainOnTop(); screenSwapped ? lcdMainOnBottom() : lcdMainOnTop();
} } else if ((held & KEY_R) && (pressed & KEY_L)) { // Make a screenshot
#endif
// Make a screenshot
else if ((held & KEY_R) && (pressed & KEY_L)) {
if(screenshot()) if(screenshot())
getDirectoryContents(dirContents); getDirectoryContents(dirContents);
} }

View File

@ -1,4 +1,5 @@
#include "keyboard.h" #include "keyboard.h"
#include "config.h"
#include "font.h" #include "font.h"
#include "language.h" #include "language.h"
#include "main.h" #include "main.h"
@ -7,9 +8,8 @@
#include <string.h> #include <string.h>
std::string kbdGetString(std::string label, int maxSize, std::string oldStr) { std::string kbdGetString(std::string label, int maxSize, std::string oldStr) {
#ifdef SCREENSWAP if(config->screenSwap())
lcdMainOnTop(); lcdMainOnTop();
#endif
font->clear(false); font->clear(false);
font->update(false); font->update(false);
@ -182,9 +182,8 @@ std::string kbdGetString(std::string label, int maxSize, std::string oldStr) {
} }
keyboardHide(); keyboardHide();
#ifdef SCREENSWAP if(config->screenSwap())
screenSwapped ? lcdMainOnBottom() : lcdMainOnTop(); screenSwapped ? lcdMainOnBottom() : lcdMainOnTop();
#endif
return output; return output;
} }

View File

@ -50,9 +50,7 @@ char titleName[64] = {" "};
int screenMode = 0; int screenMode = 0;
bool appInited = false; bool appInited = false;
#ifdef SCREENSWAP
bool screenSwapped = false; bool screenSwapped = false;
#endif
bool arm7SCFGLocked = false; bool arm7SCFGLocked = false;
bool isRegularDS = true; bool isRegularDS = true;
@ -115,11 +113,7 @@ int main(int argc, char **argv) {
bool yHeld = false; bool yHeld = false;
#ifdef SCREENSWAP
sprintf(titleName, "GodMode9i (Screen Swap) %s", VER_NUMBER);
#else
sprintf(titleName, "GodMode9i %s", VER_NUMBER); sprintf(titleName, "GodMode9i %s", VER_NUMBER);
#endif
// initialize video mode // initialize video mode
videoSetMode(MODE_5_2D); videoSetMode(MODE_5_2D);

View File

@ -6,9 +6,7 @@ extern char titleName[32];
extern int screenMode; extern int screenMode;
extern bool appInited; extern bool appInited;
#ifdef SCREENSWAP
extern bool screenSwapped; extern bool screenSwapped;
#endif
extern bool arm7SCFGLocked; extern bool arm7SCFGLocked;
extern bool isRegularDS; extern bool isRegularDS;

View File

@ -1,4 +1,5 @@
#include "titleManager.h" #include "titleManager.h"
#include "config.h"
#include "driveOperations.h" #include "driveOperations.h"
#include "file_browse.h" #include "file_browse.h"
#include "fileOperations.h" #include "fileOperations.h"
@ -111,11 +112,7 @@ void dumpTitle(TitleInfo &title) {
pressed = keysDownRepeat(); pressed = keysDownRepeat();
held = keysHeld(); held = keysHeld();
swiWaitForVBlank(); swiWaitForVBlank();
} while (!(pressed & (KEY_UP| KEY_DOWN | KEY_A | KEY_B | KEY_L)) } while (!(pressed & (KEY_UP| KEY_DOWN | KEY_A | KEY_B | KEY_L | config->screenSwapKey())));
#ifdef SCREENSWAP
&& !(pressed & KEY_TOUCH)
#endif
);
if (pressed & KEY_UP) if (pressed & KEY_UP)
optionOffset--; optionOffset--;
@ -186,13 +183,11 @@ void dumpTitle(TitleInfo &title) {
if (pressed & KEY_B) if (pressed & KEY_B)
return; return;
#ifdef SCREENSWAP
// Swap screens // Swap screens
if (pressed & KEY_TOUCH) { if (pressed & config->screenSwapKey()) {
screenSwapped = !screenSwapped; screenSwapped = !screenSwapped;
screenSwapped ? lcdMainOnBottom() : lcdMainOnTop(); screenSwapped ? lcdMainOnBottom() : lcdMainOnTop();
} }
#endif
// Make a screenshot // Make a screenshot
if ((held & KEY_R) && (pressed & KEY_L)) { if ((held & KEY_R) && (pressed & KEY_L)) {
@ -301,11 +296,7 @@ void titleManager() {
scanKeys(); scanKeys();
pressed = keysDown(); pressed = keysDown();
held = keysDownRepeat(); held = keysDownRepeat();
} while(!(held & (KEY_UP | KEY_DOWN | KEY_LEFT | KEY_RIGHT | KEY_A | KEY_B | KEY_L } while(!(held & (KEY_UP | KEY_DOWN | KEY_LEFT | KEY_RIGHT | KEY_A | KEY_B | KEY_L | config->screenSwapKey())));
#ifdef SCREENSWAP
| KEY_TOUCH
#endif
)));
if(held & KEY_UP) { if(held & KEY_UP) {
cursorPosition--; cursorPosition--;
@ -335,13 +326,11 @@ void titleManager() {
if (cursorPosition > scrollOffset + ENTRIES_PER_SCREEN - 1) if (cursorPosition > scrollOffset + ENTRIES_PER_SCREEN - 1)
scrollOffset = cursorPosition - ENTRIES_PER_SCREEN + 1; scrollOffset = cursorPosition - ENTRIES_PER_SCREEN + 1;
#ifdef SCREENSWAP
// Swap screens // Swap screens
if (pressed & KEY_TOUCH) { if (pressed & config->screenSwapKey()) {
screenSwapped = !screenSwapped; screenSwapped = !screenSwapped;
screenSwapped ? lcdMainOnBottom() : lcdMainOnTop(); screenSwapped ? lcdMainOnBottom() : lcdMainOnTop();
} }
#endif
if((pressed & KEY_L) && (keysHeld() & KEY_R)) { if((pressed & KEY_L) && (keysHeld() & KEY_R)) {
screenshot(); screenshot();