From 716572be08ec797a4d23d6c3b86f41ba66678651 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 21 May 2020 14:22:44 -0400 Subject: Some cleanup --- arm9/src/FUN_02000DE4.c | 219 ------------------------------------------------ arm9/src/FUN_020910A4.c | 32 ------- arm9/src/GFLIB_sysctl.c | 219 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 219 insertions(+), 251 deletions(-) delete mode 100644 arm9/src/FUN_02000DE4.c delete mode 100644 arm9/src/FUN_020910A4.c create mode 100644 arm9/src/GFLIB_sysctl.c (limited to 'arm9/src') diff --git a/arm9/src/FUN_02000DE4.c b/arm9/src/FUN_02000DE4.c deleted file mode 100644 index 9a7d8566..00000000 --- a/arm9/src/FUN_02000DE4.c +++ /dev/null @@ -1,219 +0,0 @@ -#include "global.h" -#include "SPI_pm.h" -#include "OS_interrupt.h" -#include "OS_system.h" -#include "CARD_backup.h" -#include "CARD_pullOut.h" -#include "CTRDG_common.h" -#include "PAD_pad.h" -#include "main.h" -#include "poke_overlay.h" - -extern struct Unk21C48B8 gUnknown21C48B8; - -extern BOOL FUN_02006234(struct Unk21DBE18 *, s32 *, int); -extern BOOL FUN_02006290(int); -extern void FUN_02006260(int); -extern BOOL FUN_02033678(void); -extern int FUN_020335B8(void); -extern BOOL FUN_0202FB80(void); -extern void FUN_02000FE8(void); -extern void FUN_02016464(void); - -void FUN_02000F4C(int arg0, int arg1); -void FUN_02000FE8(void); - -THUMB_FUNC void FUN_02000DF4(void) -{ - gBacklightTop.unk8 = -1; - gBacklightTop.unkC = 0; - gBacklightTop.unk10 = -1; // overlay invalid - gBacklightTop.unk14 = NULL; -} - -THUMB_FUNC void FUN_02000E0C(void) -{ - if (!gBacklightTop.unkC) - { - if (gBacklightTop.unk14 == NULL) - return; - if (gBacklightTop.unk10 != -1u) - HandleLoadOverlay(gBacklightTop.unk10, 0); - gBacklightTop.unk8 = gBacklightTop.unk10; - gBacklightTop.unkC = FUN_02006234(gBacklightTop.unk14, &gBacklightTop.unk18, 0); - gBacklightTop.unk10 = -1u; - gBacklightTop.unk14 = NULL; - } - if (FUN_02006290(gBacklightTop.unkC)) - { - FUN_02006260(gBacklightTop.unkC); - gBacklightTop.unkC = 0; - if (gBacklightTop.unk8 != -1u) - UnloadOverlayByID(gBacklightTop.unk8); - } -} - -THUMB_FUNC void FUN_02000E7C(FSOverlayID id, struct Unk21DBE18 * arg1) -{ - if (gBacklightTop.unk14 != NULL) - ErrorHandling(); - gBacklightTop.unk10 = id; - gBacklightTop.unk14 = arg1; -} - -THUMB_FUNC void FUN_02000E9C(void) -{ - FUN_0202FB80(); - OS_WaitIrq(TRUE, OS_IE_V_BLANK); - gUnknown21C48B8.unk2C++; - gUnknown21C48B8.unk30 = 0; - if (gUnknown21C48B8.unk0 != NULL) - gUnknown21C48B8.unk0(gUnknown21C48B8.unk4); -} - -THUMB_FUNC void FUN_02000EC8(u32 parameter) -{ - if (FUN_02033678() && CARD_TryWaitBackupAsync() == TRUE) - { - OS_ResetSystem(parameter); - } - FUN_02000E9C(); -} - -THUMB_FUNC void FUN_02000EE8(void) -{ - int r1 = FUN_020335B8(); - switch (r1) - { - case 1: - FUN_02000F4C(1, r1); - break; - case 2: - FUN_02000F4C(0, r1); - break; - case 3: - FUN_02000F4C(1, r1); - break; - } -} - -extern void FUN_0200E3A0(int, int); -extern BOOL FUN_02032DAC(void); -extern void FUN_020225F8(void); -extern void FUN_0202287C(void); - -// No Return -THUMB_FUNC void DoSoftReset(u32 parameter) -{ - FUN_0200E3A0(0, 0x7FFF); - FUN_0200E3A0(1, 0x7FFF); - if (FUN_02032DAC()) - { - FUN_020225F8(); - FUN_0202287C(); - } - do - { - FUN_02000FE8(); - FUN_02000EC8(parameter); - } while (1); -} - -extern void FUN_02033F70(int, int, int); - -THUMB_FUNC void FUN_02000F4C(int arg0, int arg1) -{ - if (arg1 == 3) - { - FUN_02033F70(0, 3, 0); - } - else if (arg0 == 0) - { - FUN_02033F70(0, 2, 0); - } - else - { - FUN_02033F70(0, 0, 0); - } - FUN_02032DAC(); - while (1) - { - FUN_02000FE8(); - FUN_02016464(); - if (gUnknown21C48B8.unk48 & 1) - break; - FUN_02000E9C(); - } - DoSoftReset(arg0); -} - -extern void FUN_0201265C(struct Unk21C4818 *, struct Unk21C4828 *); -extern void seedr_MT(int); -extern void seedr_LC(int); - -void InitializeMainRNG(void) -{ - struct Unk21C4818 spC; - struct Unk21C4828 sp0; - FUN_0201265C(&spC, &sp0); - { - int r4 = gUnknown21C48B8.unk2C; - int r5 = ((sp0.unk4 + sp0.unk8) << 24) + (spC.unk0 + ((256 * spC.unk4 * spC.unk8) << 16) + (sp0.unk0 << 16)); - seedr_MT(r4 + r5); - seedr_LC(r4 + r5); - } -} - -extern void FUN_0201CE04(void); -extern void FUN_0201CDD0(void); - -void FUN_02000FE8(void) -{ - PMBackLightSwitch top, bottom; - if (PAD_DetectFold()) - { - if (!gUnk021C4918.unk7) - { - FUN_0201CE04(); - if (CTRDG_IsPulledOut() == TRUE) - { - gBacklightTop.unk4 = 1; - } - { - int r1 = gBacklightTop.unk4; - while (1) - { - PMWakeUpTrigger trigger = PM_TRIGGER_COVER_OPEN | PM_TRIGGER_CARD; - if (gUnk021C4918.unk6 && !r1) - trigger |= PM_TRIGGER_CARTRIDGE; - PM_GoSleepMode(trigger, PM_PAD_LOGIC_OR, 0); - if (CARD_IsPulledOut()) - { - PM_ForceToPowerOff(); - break; - } - else if (PAD_DetectFold()) - { - r1 = gBacklightTop.unk4 = 1; - } - else - break; - } - FUN_0201CDD0(); - return; - } - } - else - { - PM_GetBackLight(&top, &bottom); - if (top == PM_BACKLIGHT_ON) - PM_SetBackLight(PM_LCD_ALL, PM_BACKLIGHT_OFF); - } - } - else - { - PM_GetBackLight(&top, &bottom); - if (top == PM_BACKLIGHT_OFF) - PM_SetBackLight(PM_LCD_ALL, gBacklightTop.unk0); - } -} diff --git a/arm9/src/FUN_020910A4.c b/arm9/src/FUN_020910A4.c deleted file mode 100644 index c5b7c916..00000000 --- a/arm9/src/FUN_020910A4.c +++ /dev/null @@ -1,32 +0,0 @@ -#include "global.h" - -typedef void * (* AllocFunc)(u32 size); -typedef void (* FreeFunc)(void * ptr); - -static FreeFunc gUnk021C8C74; -static AllocFunc gUnk021C8C70; - -// Custom allocator -ARM_FUNC void* FUN_020910A4(u32 size) -{ - if (gUnk021C8C70 != NULL) - return gUnk021C8C70(size); - else - return OS_AllocFromHeap(OS_ARENA_MAIN, -1, size); -} - -// Custom destructor -ARM_FUNC void FUN_0209105C(void * ptr) -{ - if (gUnk021C8C74 != NULL) - gUnk021C8C74(ptr); - else - OS_FreeToHeap(OS_ARENA_MAIN, -1, ptr); -} - -// Custom alloc/free setter -ARM_FUNC void SetCustomAllocator(AllocFunc allocator, FreeFunc destructor) -{ - gUnk021C8C70 = allocator; - gUnk021C8C74 = destructor; -} diff --git a/arm9/src/GFLIB_sysctl.c b/arm9/src/GFLIB_sysctl.c new file mode 100644 index 00000000..9a7d8566 --- /dev/null +++ b/arm9/src/GFLIB_sysctl.c @@ -0,0 +1,219 @@ +#include "global.h" +#include "SPI_pm.h" +#include "OS_interrupt.h" +#include "OS_system.h" +#include "CARD_backup.h" +#include "CARD_pullOut.h" +#include "CTRDG_common.h" +#include "PAD_pad.h" +#include "main.h" +#include "poke_overlay.h" + +extern struct Unk21C48B8 gUnknown21C48B8; + +extern BOOL FUN_02006234(struct Unk21DBE18 *, s32 *, int); +extern BOOL FUN_02006290(int); +extern void FUN_02006260(int); +extern BOOL FUN_02033678(void); +extern int FUN_020335B8(void); +extern BOOL FUN_0202FB80(void); +extern void FUN_02000FE8(void); +extern void FUN_02016464(void); + +void FUN_02000F4C(int arg0, int arg1); +void FUN_02000FE8(void); + +THUMB_FUNC void FUN_02000DF4(void) +{ + gBacklightTop.unk8 = -1; + gBacklightTop.unkC = 0; + gBacklightTop.unk10 = -1; // overlay invalid + gBacklightTop.unk14 = NULL; +} + +THUMB_FUNC void FUN_02000E0C(void) +{ + if (!gBacklightTop.unkC) + { + if (gBacklightTop.unk14 == NULL) + return; + if (gBacklightTop.unk10 != -1u) + HandleLoadOverlay(gBacklightTop.unk10, 0); + gBacklightTop.unk8 = gBacklightTop.unk10; + gBacklightTop.unkC = FUN_02006234(gBacklightTop.unk14, &gBacklightTop.unk18, 0); + gBacklightTop.unk10 = -1u; + gBacklightTop.unk14 = NULL; + } + if (FUN_02006290(gBacklightTop.unkC)) + { + FUN_02006260(gBacklightTop.unkC); + gBacklightTop.unkC = 0; + if (gBacklightTop.unk8 != -1u) + UnloadOverlayByID(gBacklightTop.unk8); + } +} + +THUMB_FUNC void FUN_02000E7C(FSOverlayID id, struct Unk21DBE18 * arg1) +{ + if (gBacklightTop.unk14 != NULL) + ErrorHandling(); + gBacklightTop.unk10 = id; + gBacklightTop.unk14 = arg1; +} + +THUMB_FUNC void FUN_02000E9C(void) +{ + FUN_0202FB80(); + OS_WaitIrq(TRUE, OS_IE_V_BLANK); + gUnknown21C48B8.unk2C++; + gUnknown21C48B8.unk30 = 0; + if (gUnknown21C48B8.unk0 != NULL) + gUnknown21C48B8.unk0(gUnknown21C48B8.unk4); +} + +THUMB_FUNC void FUN_02000EC8(u32 parameter) +{ + if (FUN_02033678() && CARD_TryWaitBackupAsync() == TRUE) + { + OS_ResetSystem(parameter); + } + FUN_02000E9C(); +} + +THUMB_FUNC void FUN_02000EE8(void) +{ + int r1 = FUN_020335B8(); + switch (r1) + { + case 1: + FUN_02000F4C(1, r1); + break; + case 2: + FUN_02000F4C(0, r1); + break; + case 3: + FUN_02000F4C(1, r1); + break; + } +} + +extern void FUN_0200E3A0(int, int); +extern BOOL FUN_02032DAC(void); +extern void FUN_020225F8(void); +extern void FUN_0202287C(void); + +// No Return +THUMB_FUNC void DoSoftReset(u32 parameter) +{ + FUN_0200E3A0(0, 0x7FFF); + FUN_0200E3A0(1, 0x7FFF); + if (FUN_02032DAC()) + { + FUN_020225F8(); + FUN_0202287C(); + } + do + { + FUN_02000FE8(); + FUN_02000EC8(parameter); + } while (1); +} + +extern void FUN_02033F70(int, int, int); + +THUMB_FUNC void FUN_02000F4C(int arg0, int arg1) +{ + if (arg1 == 3) + { + FUN_02033F70(0, 3, 0); + } + else if (arg0 == 0) + { + FUN_02033F70(0, 2, 0); + } + else + { + FUN_02033F70(0, 0, 0); + } + FUN_02032DAC(); + while (1) + { + FUN_02000FE8(); + FUN_02016464(); + if (gUnknown21C48B8.unk48 & 1) + break; + FUN_02000E9C(); + } + DoSoftReset(arg0); +} + +extern void FUN_0201265C(struct Unk21C4818 *, struct Unk21C4828 *); +extern void seedr_MT(int); +extern void seedr_LC(int); + +void InitializeMainRNG(void) +{ + struct Unk21C4818 spC; + struct Unk21C4828 sp0; + FUN_0201265C(&spC, &sp0); + { + int r4 = gUnknown21C48B8.unk2C; + int r5 = ((sp0.unk4 + sp0.unk8) << 24) + (spC.unk0 + ((256 * spC.unk4 * spC.unk8) << 16) + (sp0.unk0 << 16)); + seedr_MT(r4 + r5); + seedr_LC(r4 + r5); + } +} + +extern void FUN_0201CE04(void); +extern void FUN_0201CDD0(void); + +void FUN_02000FE8(void) +{ + PMBackLightSwitch top, bottom; + if (PAD_DetectFold()) + { + if (!gUnk021C4918.unk7) + { + FUN_0201CE04(); + if (CTRDG_IsPulledOut() == TRUE) + { + gBacklightTop.unk4 = 1; + } + { + int r1 = gBacklightTop.unk4; + while (1) + { + PMWakeUpTrigger trigger = PM_TRIGGER_COVER_OPEN | PM_TRIGGER_CARD; + if (gUnk021C4918.unk6 && !r1) + trigger |= PM_TRIGGER_CARTRIDGE; + PM_GoSleepMode(trigger, PM_PAD_LOGIC_OR, 0); + if (CARD_IsPulledOut()) + { + PM_ForceToPowerOff(); + break; + } + else if (PAD_DetectFold()) + { + r1 = gBacklightTop.unk4 = 1; + } + else + break; + } + FUN_0201CDD0(); + return; + } + } + else + { + PM_GetBackLight(&top, &bottom); + if (top == PM_BACKLIGHT_ON) + PM_SetBackLight(PM_LCD_ALL, PM_BACKLIGHT_OFF); + } + } + else + { + PM_GetBackLight(&top, &bottom); + if (top == PM_BACKLIGHT_OFF) + PM_SetBackLight(PM_LCD_ALL, gBacklightTop.unk0); + } +} -- cgit v1.2.3 From 08c3453ffb413262818b4960c68ee94f4b6a5eea Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 22 May 2020 11:03:33 -0400 Subject: Split bss up to poke_overlay --- arm9/src/GFLIB_sysctl.c | 2 ++ arm9/src/main.c | 3 ++- arm9/src/poke_overlay.c | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/GFLIB_sysctl.c b/arm9/src/GFLIB_sysctl.c index 9a7d8566..bc856768 100644 --- a/arm9/src/GFLIB_sysctl.c +++ b/arm9/src/GFLIB_sysctl.c @@ -11,6 +11,8 @@ extern struct Unk21C48B8 gUnknown21C48B8; +struct Unk2106FA0 gBacklightTop; + extern BOOL FUN_02006234(struct Unk21DBE18 *, s32 *, int); extern BOOL FUN_02006290(int); extern void FUN_02006260(int); diff --git a/arm9/src/main.c b/arm9/src/main.c index c097bfca..93858cc2 100644 --- a/arm9/src/main.c +++ b/arm9/src/main.c @@ -50,6 +50,7 @@ extern void FUN_02016464(void); extern struct Unk21DBE18 MOD63_UNK_021DBE18; extern struct Unk21DBE18 MOD52_UNK_021D76C8; +extern u8 SDK_STATIC_BSS_START[]; THUMB_FUNC void NitroMain(void) { @@ -58,7 +59,7 @@ THUMB_FUNC void NitroMain(void) FUN_020163BC(); FUN_02016438(0); - PM_GetBackLight(&gBacklightTop_2.unk0, NULL); + PM_GetBackLight((PMBackLightSwitch *)SDK_STATIC_BSS_START, NULL); FUN_02022294(); FUN_0201259C(); diff --git a/arm9/src/poke_overlay.c b/arm9/src/poke_overlay.c index 2b6fe790..787cd65a 100644 --- a/arm9/src/poke_overlay.c +++ b/arm9/src/poke_overlay.c @@ -8,7 +8,7 @@ struct LoadedOverlay { BOOL active; }; -extern struct LoadedOverlay gLoadedOverlays[3][8]; +static struct LoadedOverlay gLoadedOverlays[3][8]; struct LoadedOverlay* GetLoadedOverlaysInRegion(int); BOOL GetOverlayRamBounds(FSOverlayID, void**, void**); -- cgit v1.2.3 From 3f3f956859234211a090cbe5dae09e59143609d7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 22 May 2020 13:41:35 -0400 Subject: Distribute rom2.o --- arm9/src/main.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'arm9/src') diff --git a/arm9/src/main.c b/arm9/src/main.c index 93858cc2..9e6a6227 100644 --- a/arm9/src/main.c +++ b/arm9/src/main.c @@ -52,6 +52,9 @@ extern struct Unk21DBE18 MOD52_UNK_021D76C8; extern u8 SDK_STATIC_BSS_START[]; +const enum GameVersion gGameVersion = VERSION_DIAMOND; +const enum GameLanguage gGameLanguage = LANGUAGE_ENGLISH; + THUMB_FUNC void NitroMain(void) { InitSystemForTheGame(); -- cgit v1.2.3