From f35596c1e2bb7cc222d751d50391c7ab074e2b92 Mon Sep 17 00:00:00 2001 From: RocketRobz Date: Mon, 24 Apr 2023 00:16:19 -0600 Subject: [PATCH] First step to merge all code into one .srldr file #2177 --- 3dssplash/arm9/Makefile | 2 +- booter/arm9/Makefile | 2 +- booter_fc/arm9/Makefile | 2 +- gbapatcher/arm9/Makefile | 4 +- imageview/arm9/Makefile | 8 +- imageview/arm9/source/main.cpp | 31 ++---- imageview/arm9/source/standaloneStubs.cpp | 13 +++ manual/arm9/Makefile | 8 +- manual/arm9/source/main.cpp | 20 +--- manual/arm9/source/standaloneStubs.cpp | 13 +++ quickmenu/arm9/Makefile | 4 +- quickmenu/arm9/source/main.cpp | 21 +--- quickmenu/arm9/source/standaloneStubs.cpp | 13 +++ romsel_dsimenutheme/arm9/Makefile | 4 +- romsel_dsimenutheme/arm9/source/main.cpp | 21 +--- .../arm9/source/standaloneStubs.cpp | 13 +++ romsel_r4theme/arm9/Makefile | 4 +- romsel_r4theme/arm9/source/main.cpp | 23 +--- .../arm9/source/standaloneStubs.cpp | 13 +++ settings/arm9/Makefile | 8 +- settings/arm9/source/main.cpp | 25 +---- settings/arm9/source/standaloneStubs.cpp | 13 +++ slot1launch/arm9/Makefile | 2 +- title/arm9/Makefile | 4 +- title/arm9/source/main.cpp | 20 +--- title/arm9/source/standaloneStubs.cpp | 13 +++ universal/arm9/source/mainAll.cpp | 103 ++++++++++++++++++ 27 files changed, 247 insertions(+), 160 deletions(-) create mode 100644 imageview/arm9/source/standaloneStubs.cpp create mode 100644 manual/arm9/source/standaloneStubs.cpp create mode 100644 quickmenu/arm9/source/standaloneStubs.cpp create mode 100644 romsel_dsimenutheme/arm9/source/standaloneStubs.cpp create mode 100644 romsel_r4theme/arm9/source/standaloneStubs.cpp create mode 100644 settings/arm9/source/standaloneStubs.cpp create mode 100644 title/arm9/source/standaloneStubs.cpp create mode 100644 universal/arm9/source/mainAll.cpp diff --git a/3dssplash/arm9/Makefile b/3dssplash/arm9/Makefile index 7bbcc1fb84..4506b66de4 100644 --- a/3dssplash/arm9/Makefile +++ b/3dssplash/arm9/Makefile @@ -36,7 +36,7 @@ CFLAGS := -g -Wall -O2\ -ffast-math \ $(ARCH) -CFLAGS += $(INCLUDE) -DARM9 +CFLAGS += $(INCLUDE) -DARM9 -DSTANDALONE -D_NO_MAIN_ALL CXXFLAGS := $(CFLAGS) -fno-exceptions -std=gnu++17 ASFLAGS := -g $(ARCH) diff --git a/booter/arm9/Makefile b/booter/arm9/Makefile index b0d3756bee..96d7c1f92c 100644 --- a/booter/arm9/Makefile +++ b/booter/arm9/Makefile @@ -36,7 +36,7 @@ CFLAGS := -g -Wall -O2\ -ffast-math \ $(ARCH) -CFLAGS += $(INCLUDE) -DARM9 +CFLAGS += $(INCLUDE) -DARM9 -DSTANDALONE -D_NO_MAIN_ALL CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++17 ASFLAGS := -g $(ARCH) diff --git a/booter_fc/arm9/Makefile b/booter_fc/arm9/Makefile index 87c9902fc4..36b3fa0106 100644 --- a/booter_fc/arm9/Makefile +++ b/booter_fc/arm9/Makefile @@ -32,7 +32,7 @@ CFLAGS := -g -Wall -O2\ -ffast-math \ $(ARCH) -CFLAGS += $(INCLUDE) -DARM9 -DNO_SDMMC +CFLAGS += $(INCLUDE) -DARM9 -DNO_SDMMC -DSTANDALONE -D_NO_MAIN_ALL CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions ASFLAGS := -g $(ARCH) diff --git a/gbapatcher/arm9/Makefile b/gbapatcher/arm9/Makefile index 87d63e3f6b..c18214910d 100644 --- a/gbapatcher/arm9/Makefile +++ b/gbapatcher/arm9/Makefile @@ -20,7 +20,7 @@ include $(DEVKITARM)/ds_rules UNIVERSAL := ../../universal TARGET := gbapatcher BUILD := build -SOURCES := source source/common source/graphics source/save source/tool $(UNIVERSAL)/source/common $(UNIVERSAL)/source/flashcard $(UNIVERSAL)/source/lodepng $(UNIVERSAL)/source/tonccpy +SOURCES := source source/common source/graphics source/save source/tool $(UNIVERSAL)/source/common $(UNIVERSAL)/source/flashcard $(UNIVERSAL)/source/tonccpy INCLUDES := include source source/common source/graphics source/save source/tool $(UNIVERSAL)/include DATA := ../data GRAPHICS := ../gfx @@ -36,7 +36,7 @@ CFLAGS := -g -Wall -O3\ -ffast-math \ $(ARCH) -CFLAGS += $(INCLUDE) -DARM9 +CFLAGS += $(INCLUDE) -DARM9 -DSTANDALONE -D_NO_MAIN_ALL CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++17 ASFLAGS := -g $(ARCH) diff --git a/imageview/arm9/Makefile b/imageview/arm9/Makefile index 8c97ddaf49..29c4e81f84 100644 --- a/imageview/arm9/Makefile +++ b/imageview/arm9/Makefile @@ -8,6 +8,8 @@ endif include $(DEVKITARM)/ds_rules +CURRENT_SCREEN_MODE := 6 + #--------------------------------------------------------------------------------- # TARGET is the name of the output # BUILD is the directory where object files & intermediate files will be placed @@ -20,8 +22,8 @@ include $(DEVKITARM)/ds_rules UNIVERSAL := ../../universal TARGET := imageview BUILD := build -SOURCES := source source/graphics source/tool source/common $(UNIVERSAL)/source/common $(UNIVERSAL)/source/nds_loader $(UNIVERSAL)/source/lodepng $(UNIVERSAL)/source/tonccpy $(UNIVERSAL)/sdmmc/arm9/source -INCLUDES := source $(UNIVERSAL)/include $(UNIVERSAL)/sdmmc/arm9/include +SOURCES := source source/graphics source/tool source/common $(UNIVERSAL)/source/common $(UNIVERSAL)/source/nds_loader $(UNIVERSAL)/source/lodepng $(UNIVERSAL)/source/tonccpy $(UNIVERSAL)/arm9/source $(UNIVERSAL)/sdmmc/arm9/source +INCLUDES := source $(UNIVERSAL)/include $(UNIVERSAL)/arm9/include $(UNIVERSAL)/sdmmc/arm9/include DATA := ../data GRAPHICS := ../gfx MUSIC := ../music @@ -36,7 +38,7 @@ CFLAGS := -g -Wall -O2\ -ffast-math \ $(ARCH) -CFLAGS += $(INCLUDE) -DARM9 +CFLAGS += $(INCLUDE) -DARM9 -DSTANDALONE -DCURRENT_SCREEN_MODE=$(CURRENT_SCREEN_MODE) CXXFLAGS := $(CFLAGS) -fno-exceptions -std=gnu++17 ASFLAGS := -g $(ARCH) diff --git a/imageview/arm9/source/main.cpp b/imageview/arm9/source/main.cpp index b2f74f2476..4c03cab729 100644 --- a/imageview/arm9/source/main.cpp +++ b/imageview/arm9/source/main.cpp @@ -32,7 +32,6 @@ bool fadeType = false; // false = out, true = in bool fadeSpeed = true; // false = slow (for DSi launch effect), true = fast bool controlTopBright = true; bool controlBottomBright = true; -bool useTwlCfg = false; extern void ClearBrightness(); extern int imageType; @@ -109,33 +108,21 @@ void customSleep() { } //--------------------------------------------------------------------------------- -int main(int argc, char **argv) { +int imageViewer(void) { //--------------------------------------------------------------------------------- - fifoSendValue32(FIFO_PM, PM_REQ_SLEEP_DISABLE); // Disable sleep mode to prevent unexpected crashes from exiting sleep mode - defaultExceptionHandler(); - sys().initFilesystem(argv[0]); - sys().initArm7RegStatuses(); - - if (!sys().fatInitOk()) { - SetBrightness(0, 0); - SetBrightness(1, 0); - consoleDemoInit(); - iprintf("FAT init failed!"); - stop(); - } - keysSetRepeat(25, 25); - useTwlCfg = (dsiFeatures() && (*(u8*)0x02000400 != 0) && (*(u8*)0x02000401 == 0) && (*(u8*)0x02000402 == 0) && (*(u8*)0x02000404 == 0) && (*(u8*)0x02000448 != 0)); - ms().loadSettings(); - if (argc >= 2) { - if (extension(argv[1], {".gif"})) { + std::string imagePath = ms().homebrewArg[ms().previousUsedDevice]; + const char* imagePathChar = imagePath.c_str(); + + if (strlen(imagePathChar) >= 2) { + if (extension(imagePathChar, {".gif"})) { imageType = 0; - } else if (extension(argv[1], {".bmp"})) { + } else if (extension(imagePathChar, {".bmp"})) { imageType = 1; - } else if (extension(argv[1], {".png"})) { + } else if (extension(imagePathChar, {".png"})) { imageType = 2; } } else { @@ -147,7 +134,7 @@ int main(int argc, char **argv) { langInit(); - imageLoad((argc >= 2) ? argv[1] : "nitro:/graphics/test.png"); + imageLoad((strlen(imagePathChar) >= 2) ? imagePathChar : "nitro:/graphics/test.png"); bgLoad(); if (!ms().macroMode) { printSmall(false, -88, 174, STR_BACK, Alignment::center); diff --git a/imageview/arm9/source/standaloneStubs.cpp b/imageview/arm9/source/standaloneStubs.cpp new file mode 100644 index 0000000000..d50f0aa79d --- /dev/null +++ b/imageview/arm9/source/standaloneStubs.cpp @@ -0,0 +1,13 @@ +#ifdef STANDALONE + +#include + +int titleMode(void); +int settingsMode(void); +int dsClassicMenu(void); +int dsiMenuTheme(void); +int r4Theme(void); +int manualScreen(void); +// Used: int imageViewer(void); + +#endif \ No newline at end of file diff --git a/manual/arm9/Makefile b/manual/arm9/Makefile index 1f3ed08fe9..7b58d71058 100644 --- a/manual/arm9/Makefile +++ b/manual/arm9/Makefile @@ -8,6 +8,8 @@ endif include $(DEVKITARM)/ds_rules +CURRENT_SCREEN_MODE := 5 + #--------------------------------------------------------------------------------- # TARGET is the name of the output # BUILD is the directory where object files & intermediate files will be placed @@ -20,8 +22,8 @@ include $(DEVKITARM)/ds_rules UNIVERSAL := ../../universal TARGET := manual BUILD := build -SOURCES := source source/graphics source/tool source/common $(UNIVERSAL)/source/common $(UNIVERSAL)/source/nds_loader $(UNIVERSAL)/source/tonccpy $(UNIVERSAL)/sdmmc/arm9/source -INCLUDES := source $(UNIVERSAL)/include $(UNIVERSAL)/sdmmc/arm9/include +SOURCES := source source/graphics source/tool source/common $(UNIVERSAL)/source/common $(UNIVERSAL)/source/nds_loader $(UNIVERSAL)/source/lodepng $(UNIVERSAL)/source/tonccpy $(UNIVERSAL)/arm9/source $(UNIVERSAL)/sdmmc/arm9/source +INCLUDES := source $(UNIVERSAL)/include $(UNIVERSAL)/arm9/include $(UNIVERSAL)/sdmmc/arm9/include DATA := ../data GRAPHICS := ../gfx MUSIC := ../music @@ -36,7 +38,7 @@ CFLAGS := -g -Wall -O2\ -ffast-math \ $(ARCH) -CFLAGS += $(INCLUDE) -DARM9 +CFLAGS += $(INCLUDE) -DARM9 -DSTANDALONE -DCURRENT_SCREEN_MODE=$(CURRENT_SCREEN_MODE) CXXFLAGS := $(CFLAGS) -fno-exceptions -std=gnu++17 ASFLAGS := -g $(ARCH) diff --git a/manual/arm9/source/main.cpp b/manual/arm9/source/main.cpp index 983540d8e6..1939bd5750 100644 --- a/manual/arm9/source/main.cpp +++ b/manual/arm9/source/main.cpp @@ -48,7 +48,6 @@ bool fadeType = false; // false = out, true = in bool fadeSpeed = true; // false = slow (for DSi launch effect), true = fast bool controlTopBright = true; bool controlBottomBright = true; -bool useTwlCfg = false; extern int bgColor1; extern int bgColor2; @@ -252,27 +251,10 @@ void customSleep() { } //--------------------------------------------------------------------------------- -int main(int argc, char **argv) { +int manualScreen(void) { //--------------------------------------------------------------------------------- - fifoSendValue32(FIFO_PM, PM_REQ_SLEEP_DISABLE); // Disable sleep mode to prevent unexpected crashes from exiting sleep mode - defaultExceptionHandler(); - sys().initFilesystem(argv[0]); - sys().initArm7RegStatuses(); - - if (!sys().fatInitOk()) { - SetBrightness(0, 0); - SetBrightness(1, 0); - consoleDemoInit(); - iprintf("FAT init failed!"); - stop(); - } - keysSetRepeat(25, 25); - useTwlCfg = (dsiFeatures() && (*(u8*)0x02000400 != 0) && (*(u8*)0x02000401 == 0) && (*(u8*)0x02000402 == 0) && (*(u8*)0x02000404 == 0) && (*(u8*)0x02000448 != 0)); - - sysSetCartOwner(BUS_OWNER_ARM9); // Allow arm9 to access GBA ROM - ms().loadSettings(); graphicsInit(); diff --git a/manual/arm9/source/standaloneStubs.cpp b/manual/arm9/source/standaloneStubs.cpp new file mode 100644 index 0000000000..ce4645ec9e --- /dev/null +++ b/manual/arm9/source/standaloneStubs.cpp @@ -0,0 +1,13 @@ +#ifdef STANDALONE + +#include + +int titleMode(void); +int settingsMode(void); +int dsClassicMenu(void); +int dsiMenuTheme(void); +int r4Theme(void); +// Used: int manualScreen(void); +int imageViewer(void); + +#endif \ No newline at end of file diff --git a/quickmenu/arm9/Makefile b/quickmenu/arm9/Makefile index 1e69cb25a9..640c1b9145 100644 --- a/quickmenu/arm9/Makefile +++ b/quickmenu/arm9/Makefile @@ -8,6 +8,8 @@ endif include $(DEVKITARM)/ds_rules +CURRENT_SCREEN_MODE := 2 + #--------------------------------------------------------------------------------- # TARGET is the name of the output # BUILD is the directory where object files & intermediate files will be placed @@ -36,7 +38,7 @@ CFLAGS := -g -Wall -O2\ -ffast-math \ $(ARCH) -CFLAGS += $(INCLUDE) -DARM9 +CFLAGS += $(INCLUDE) -DARM9 -DSTANDALONE -DCURRENT_SCREEN_MODE=$(CURRENT_SCREEN_MODE) CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++17 ASFLAGS := -g $(ARCH) diff --git a/quickmenu/arm9/source/main.cpp b/quickmenu/arm9/source/main.cpp index 021e87b9d6..ac3d83d0c3 100644 --- a/quickmenu/arm9/source/main.cpp +++ b/quickmenu/arm9/source/main.cpp @@ -60,7 +60,7 @@ #include "saveMap.h" #include "ROMList.h" -bool useTwlCfg = false; +extern bool useTwlCfg; bool whiteScreen = true; bool fadeType = false; // false = out, true = in @@ -1125,25 +1125,8 @@ void customSleep() { } //--------------------------------------------------------------------------------- -int main(int argc, char **argv) { +int dsClassicMenu(void) { //--------------------------------------------------------------------------------- - - defaultExceptionHandler(); - fifoSendValue32(FIFO_PM, PM_REQ_SLEEP_DISABLE); // Disable sleep mode to prevent unexpected crashes from exiting sleep mode - - useTwlCfg = (dsiFeatures() && (*(u8*)0x02000400 != 0) && (*(u8*)0x02000401 == 0) && (*(u8*)0x02000402 == 0) && (*(u8*)0x02000404 == 0) && (*(u8*)0x02000448 != 0)); - - sys().initFilesystem(argv[0]); - sys().initArm7RegStatuses(); - - if (!sys().fatInitOk()) { - SetBrightness(0, 0); - SetBrightness(1, 0); - consoleDemoInit(); - iprintf("FAT init failed!"); - stop(); - } - // Read user name /*char *username = (char*)PersonalData->name; diff --git a/quickmenu/arm9/source/standaloneStubs.cpp b/quickmenu/arm9/source/standaloneStubs.cpp new file mode 100644 index 0000000000..dd40eec050 --- /dev/null +++ b/quickmenu/arm9/source/standaloneStubs.cpp @@ -0,0 +1,13 @@ +#ifdef STANDALONE + +#include + +int titleMode(void); +int settingsMode(void); +// Used: int dsClassicMenu(void); +int dsiMenuTheme(void); +int r4Theme(void); +int manualScreen(void); +int imageViewer(void); + +#endif \ No newline at end of file diff --git a/romsel_dsimenutheme/arm9/Makefile b/romsel_dsimenutheme/arm9/Makefile index 2b70b32138..4b37037b2e 100644 --- a/romsel_dsimenutheme/arm9/Makefile +++ b/romsel_dsimenutheme/arm9/Makefile @@ -8,6 +8,8 @@ endif include $(DEVKITARM)/ds_rules +CURRENT_SCREEN_MODE := 3 + #--------------------------------------------------------------------------------- # TARGET is the name of the output # BUILD is the directory where object files & intermediate files will be placed @@ -37,7 +39,7 @@ CFLAGS := -g -Wall -O2 \ -ffast-math \ $(ARCH) -CFLAGS += $(INCLUDE) -DARM9 +CFLAGS += $(INCLUDE) -DARM9 -DSTANDALONE -DCURRENT_SCREEN_MODE=$(CURRENT_SCREEN_MODE) CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++17 ASFLAGS := -g $(ARCH) diff --git a/romsel_dsimenutheme/arm9/source/main.cpp b/romsel_dsimenutheme/arm9/source/main.cpp index 78120c296d..f91116ecfb 100644 --- a/romsel_dsimenutheme/arm9/source/main.cpp +++ b/romsel_dsimenutheme/arm9/source/main.cpp @@ -65,7 +65,7 @@ #include "saveMap.h" #include "ROMList.h" -bool useTwlCfg = false; +extern bool useTwlCfg; bool whiteScreen = true; bool fadeType = false; // false = out, true = in @@ -918,24 +918,7 @@ void bgOperations(bool waitFrame) { } } -int main(int argc, char **argv) { - defaultExceptionHandler(); - fifoSendValue32(FIFO_PM, PM_REQ_SLEEP_DISABLE); // Disable sleep mode to prevent unexpected crashes from exiting sleep mode - sys().initFilesystem(argv[0]); - sys().initArm7RegStatuses(); - - if (!sys().fatInitOk()) { - SetBrightness(0, 0); - SetBrightness(1, 0); - consoleDemoInit(); - iprintf("FAT init failed!"); - stop(); - } - - useTwlCfg = (dsiFeatures() && (*(u8*)0x02000400 != 0) && (*(u8*)0x02000401 == 0) && (*(u8*)0x02000402 == 0) && (*(u8*)0x02000404 == 0) && (*(u8*)0x02000448 != 0)); - - sysSetCartOwner(BUS_OWNER_ARM9); // Allow arm9 to access GBA ROM - +int dsiMenuTheme(void) { ms().loadSettings(); bs().loadSettings(); logInit(); diff --git a/romsel_dsimenutheme/arm9/source/standaloneStubs.cpp b/romsel_dsimenutheme/arm9/source/standaloneStubs.cpp new file mode 100644 index 0000000000..bc2a92baf2 --- /dev/null +++ b/romsel_dsimenutheme/arm9/source/standaloneStubs.cpp @@ -0,0 +1,13 @@ +#ifdef STANDALONE + +#include + +int titleMode(void); +int settingsMode(void); +int dsClassicMenu(void); +// Used: int dsiMenuTheme(void); +int r4Theme(void); +int manualScreen(void); +int imageViewer(void); + +#endif \ No newline at end of file diff --git a/romsel_r4theme/arm9/Makefile b/romsel_r4theme/arm9/Makefile index 4eeec6ec68..8a206749e1 100644 --- a/romsel_r4theme/arm9/Makefile +++ b/romsel_r4theme/arm9/Makefile @@ -8,6 +8,8 @@ endif include $(DEVKITARM)/ds_rules +CURRENT_SCREEN_MODE := 4 + #--------------------------------------------------------------------------------- # TARGET is the name of the output # BUILD is the directory where object files & intermediate files will be placed @@ -35,7 +37,7 @@ CFLAGS := -g -Wall -O2\ -ffast-math \ $(ARCH) -CFLAGS += $(INCLUDE) -DARM9 +CFLAGS += $(INCLUDE) -DARM9 -DSTANDALONE -DCURRENT_SCREEN_MODE=$(CURRENT_SCREEN_MODE) CXXFLAGS := $(CFLAGS) -fno-exceptions -std=gnu++17 ASFLAGS := -g $(ARCH) diff --git a/romsel_r4theme/arm9/source/main.cpp b/romsel_r4theme/arm9/source/main.cpp index 039a17c468..66f750f3df 100644 --- a/romsel_r4theme/arm9/source/main.cpp +++ b/romsel_r4theme/arm9/source/main.cpp @@ -56,7 +56,7 @@ #include "saveMap.h" #include "ROMList.h" -bool useTwlCfg = false; +extern bool useTwlCfg; bool whiteScreen = false; bool blackScreen = false; @@ -1026,27 +1026,8 @@ void bgOperations(bool waitFrame) { } //--------------------------------------------------------------------------------- -int main(int argc, char **argv) { +int r4Theme(void) { //--------------------------------------------------------------------------------- - - defaultExceptionHandler(); - fifoSendValue32(FIFO_PM, PM_REQ_SLEEP_DISABLE); // Disable sleep mode to prevent unexpected crashes from exiting sleep mode - - sysSetCartOwner(BUS_OWNER_ARM9); // Allow arm9 to access GBA ROM - - sys().initFilesystem(argv[0]); - sys().initArm7RegStatuses(); - - if (!sys().fatInitOk()) { - SetBrightness(0, 0); - SetBrightness(1, 0); - consoleDemoInit(); - iprintf("FAT init failed!"); - stop(); - } - - useTwlCfg = (dsiFeatures() && (*(u8*)0x02000400 != 0) && (*(u8*)0x02000401 == 0) && (*(u8*)0x02000402 == 0) && (*(u8*)0x02000404 == 0) && (*(u8*)0x02000448 != 0)); - graphicsInit(); if (sdFound()) statvfs("sd:/", &st[0]); diff --git a/romsel_r4theme/arm9/source/standaloneStubs.cpp b/romsel_r4theme/arm9/source/standaloneStubs.cpp new file mode 100644 index 0000000000..3b7de702ea --- /dev/null +++ b/romsel_r4theme/arm9/source/standaloneStubs.cpp @@ -0,0 +1,13 @@ +#ifdef STANDALONE + +#include + +int titleMode(void); +int settingsMode(void); +int dsClassicMenu(void); +int dsiMenuTheme(void); +// Used: int r4Theme(void); +int manualScreen(void); +int imageViewer(void); + +#endif \ No newline at end of file diff --git a/settings/arm9/Makefile b/settings/arm9/Makefile index e5770ba788..fa158188fe 100644 --- a/settings/arm9/Makefile +++ b/settings/arm9/Makefile @@ -26,6 +26,8 @@ endif include $(DEVKITARM)/ds_rules +CURRENT_SCREEN_MODE := 1 + #--------------------------------------------------------------------------------- # TARGET is the name of the output # BUILD is the directory where object files & intermediate files will be placed @@ -38,8 +40,8 @@ include $(DEVKITARM)/ds_rules UNIVERSAL := ../../universal TARGET := settings BUILD := build -SOURCES := source source/graphics source/tool source/common $(UNIVERSAL)/source $(UNIVERSAL)/source/common $(UNIVERSAL)/source/nds_loader $(UNIVERSAL)/source/tonccpy $(UNIVERSAL)/sdmmc/arm9/source -INCLUDES := include source $(UNIVERSAL)/include $(UNIVERSAL)/sdmmc/arm9/include +SOURCES := source source/graphics source/tool source/common $(UNIVERSAL)/source $(UNIVERSAL)/source/common $(UNIVERSAL)/source/nds_loader $(UNIVERSAL)/source/tonccpy $(UNIVERSAL)/arm9/source $(UNIVERSAL)/sdmmc/arm9/source +INCLUDES := include source $(UNIVERSAL)/include $(UNIVERSAL)/arm9/include $(UNIVERSAL)/sdmmc/arm9/include DATA := ../data GRAPHICS := ../gfx MUSIC := ../music @@ -54,7 +56,7 @@ CFLAGS := -g -Wall -O2\ -ffast-math \ $(ARCH) -CFLAGS += $(INCLUDE) -DARM9 +CFLAGS += $(INCLUDE) -DARM9 -DSTANDALONE -DCURRENT_SCREEN_MODE=$(CURRENT_SCREEN_MODE) CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++17 ASFLAGS := -g $(ARCH) diff --git a/settings/arm9/source/main.cpp b/settings/arm9/source/main.cpp index e4078b919e..cb0f2acf4e 100644 --- a/settings/arm9/source/main.cpp +++ b/settings/arm9/source/main.cpp @@ -45,8 +45,6 @@ #define UNLAUNCH_BG_DIRECTORY "/_nds/TWiLightMenu/unlaunch/backgrounds/" #define FONT_DIRECTORY "/_nds/TWiLightMenu/extras/fonts/" -bool useTwlCfg = false; - //bool widescreenEffects = false; int currentTheme = 0; @@ -780,28 +778,9 @@ void customSleep() { } //--------------------------------------------------------------------------------- -int main(int argc, char **argv) +int settingsMode(void) { - //--------------------------------------------------------------------------------- - -//#pragma region init - - defaultExceptionHandler(); - fifoSendValue32(FIFO_PM, PM_REQ_SLEEP_DISABLE); // Disable sleep mode to prevent unexpected crashes from exiting sleep mode - sys().initFilesystem(argv[0]); - sys().initArm7RegStatuses(); - ms(); - - useTwlCfg = (dsiFeatures() && (*(u8*)0x02000400 != 0) && (*(u8*)0x02000401 == 0) && (*(u8*)0x02000402 == 0) && (*(u8*)0x02000404 == 0) && (*(u8*)0x02000448 != 0)); - - if (!sys().fatInitOk()) { - graphicsInit(); - fontInit(); - fadeType = true; - printSmall(false, 4, 4, "fatinitDefault failed!"); - stop(); - } - +//--------------------------------------------------------------------------------- ms().loadSettings(); gs().loadSettings(); bs().loadSettings(); diff --git a/settings/arm9/source/standaloneStubs.cpp b/settings/arm9/source/standaloneStubs.cpp new file mode 100644 index 0000000000..9223ac3f32 --- /dev/null +++ b/settings/arm9/source/standaloneStubs.cpp @@ -0,0 +1,13 @@ +#ifdef STANDALONE + +#include + +int titleMode(void); +// Used: int settingsMode(void); +int dsClassicMenu(void); +int dsiMenuTheme(void); +int r4Theme(void); +int manualScreen(void); +int imageViewer(void); + +#endif \ No newline at end of file diff --git a/slot1launch/arm9/Makefile b/slot1launch/arm9/Makefile index 046947c930..7a6d97a8be 100644 --- a/slot1launch/arm9/Makefile +++ b/slot1launch/arm9/Makefile @@ -32,7 +32,7 @@ CFLAGS := -g -Wall -O2\ -ffast-math \ $(ARCH) -CFLAGS += $(INCLUDE) -DARM9 +CFLAGS += $(INCLUDE) -DARM9 -DSTANDALONE -D_NO_MAIN_ALL CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++17 ASFLAGS := -g $(ARCH) $(INCLUDE) diff --git a/title/arm9/Makefile b/title/arm9/Makefile index d7618ce987..6b8fa8352e 100644 --- a/title/arm9/Makefile +++ b/title/arm9/Makefile @@ -8,6 +8,8 @@ endif include $(DEVKITARM)/ds_rules +CURRENT_SCREEN_MODE := 0 + #--------------------------------------------------------------------------------- # TARGET is the name of the output # BUILD is the directory where object files & intermediate files will be placed @@ -37,7 +39,7 @@ CFLAGS := -g -Wall -O2\ -ffast-math \ $(ARCH) -CFLAGS += $(INCLUDE) -DARM9 +CFLAGS += $(INCLUDE) -DARM9 -DSTANDALONE -DCURRENT_SCREEN_MODE=$(CURRENT_SCREEN_MODE) CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++17 ASFLAGS := -g $(ARCH) diff --git a/title/arm9/source/main.cpp b/title/arm9/source/main.cpp index 2937356d5c..f63467d5e5 100644 --- a/title/arm9/source/main.cpp +++ b/title/arm9/source/main.cpp @@ -40,7 +40,7 @@ #include "saveMap.h" #include "ROMList.h" -bool useTwlCfg = false; +extern bool useTwlCfg; bool renderScreens = false; bool fadeType = false; // false = out, true = in @@ -1707,25 +1707,9 @@ void regionSelect(void) { } //--------------------------------------------------------------------------------- -int main(int argc, char **argv) +int titleMode(void) { //--------------------------------------------------------------------------------- - - // overwrite reboot stub identifier - /*extern char *fake_heap_end; - *fake_heap_end = 0;*/ - - defaultExceptionHandler(); - fifoSendValue32(FIFO_PM, PM_REQ_SLEEP_DISABLE); // Disable sleep mode to prevent unexpected crashes from exiting sleep mode - sys().initFilesystem(argc==0 ? "sd:/_nds/TWiLightMenu/main.srldr" : argv[0]); - sys().initArm7RegStatuses(); - ms(); - - if (!sys().fatInitOk()) { - iprintf("FAT init failed!"); - stop(); - } - keysSetRepeat(25, 5); *(u32*)0x02FFFDFC = 0; // Reset TWLCFG location diff --git a/title/arm9/source/standaloneStubs.cpp b/title/arm9/source/standaloneStubs.cpp new file mode 100644 index 0000000000..fe792ce095 --- /dev/null +++ b/title/arm9/source/standaloneStubs.cpp @@ -0,0 +1,13 @@ +#ifdef STANDALONE + +#include + +// Used: int titleMode(void); +int settingsMode(void); +int dsClassicMenu(void); +int dsiMenuTheme(void); +int r4Theme(void); +int manualScreen(void); +int imageViewer(void); + +#endif \ No newline at end of file diff --git a/universal/arm9/source/mainAll.cpp b/universal/arm9/source/mainAll.cpp new file mode 100644 index 0000000000..d4d608da56 --- /dev/null +++ b/universal/arm9/source/mainAll.cpp @@ -0,0 +1,103 @@ +#ifndef _NO_MAIN_ALL + +#include + +#include +#include +#include +#include + +#include +#include + +#include "common/twlmenusettings.h" +#include "common/systemdetails.h" +#include "myDSiMode.h" + +bool useTwlCfg = false; + +// Ported from PAlib (obsolete) +static void SetBrightness(u8 screen, s8 bright) { + u16 mode = 1 << 14; + + if (bright < 0) { + mode = 2 << 14; + bright = -bright; + } + if (bright > 31) + bright = 31; + *(vu16 *)(0x0400006C + (0x1000 * screen)) = bright + mode; +} + +//--------------------------------------------------------------------------------- +static void stop(void) { +//--------------------------------------------------------------------------------- + while (1) { + swiWaitForVBlank(); + } +} + +static int screenMode = CURRENT_SCREEN_MODE; + +int main(int argc, char **argv) { + // overwrite reboot stub identifier + /*extern char *fake_heap_end; + *fake_heap_end = 0;*/ + + defaultExceptionHandler(); + fifoSendValue32(FIFO_PM, PM_REQ_SLEEP_DISABLE); // Disable sleep mode to prevent unexpected crashes from exiting sleep mode + + sys().initFilesystem(argc==0 ? "sd:/_nds/TWiLightMenu/main.srldr" : argv[0]); + sys().initArm7RegStatuses(); + + if (!sys().fatInitOk()) { + SetBrightness(0, 0); + SetBrightness(1, 0); + consoleDemoInit(); + iprintf("FAT init failed!"); + stop(); + } + + useTwlCfg = (dsiFeatures() && (*(u8*)0x02000400 != 0) && (*(u8*)0x02000401 == 0) && (*(u8*)0x02000402 == 0) && (*(u8*)0x02000404 == 0) && (*(u8*)0x02000448 != 0)); + + sysSetCartOwner(BUS_OWNER_ARM9); // Allow arm9 to access GBA ROM + + ms(); + + while (1) { + switch (screenMode) { + case 0: + extern int titleMode(void); + titleMode(); + break; + case 1: + extern int settingsMode(void); + settingsMode(); + break; + case 2: + extern int dsClassicMenu(void); + dsClassicMenu(); + break; + case 3: + extern int dsiMenuTheme(void); + dsiMenuTheme(); + break; + case 4: + extern int r4Theme(void); + r4Theme(); + break; + case 5: + extern int manualScreen(void); + manualScreen(); + break; + case 6: + extern int imageViewer(void); + imageViewer(); + break; + } + } + + return 0; +} + +#endif \ No newline at end of file