diff options
author | Cameron Hall <cameronghall@cox.net> | 2019-08-11 14:20:54 -0500 |
---|---|---|
committer | Cameron Hall <cameronghall@cox.net> | 2019-08-11 14:20:54 -0500 |
commit | 68de07eabfe27625e4b5b43502da0efade337456 (patch) | |
tree | 0778a30ee71ca7afc89b2967560a28dbd2a42e91 /src | |
parent | b0870ee7fbf34fe4fa8bf6a622a3c46aa326f1fb (diff) |
cleanup
Diffstat (limited to 'src')
-rwxr-xr-x | src/gbplayer.c | 2 | ||||
-rw-r--r-- | src/options.c | 43 | ||||
-rw-r--r-- | src/rom_528AC.c | 135 | ||||
-rwxr-xr-x | src/titlescreen.c | 4 | ||||
-rwxr-xr-x | src/util.c | 4 |
5 files changed, 90 insertions, 98 deletions
diff --git a/src/gbplayer.c b/src/gbplayer.c index e2c1cea..412be7d 100755 --- a/src/gbplayer.c +++ b/src/gbplayer.c @@ -291,7 +291,7 @@ void sub_1198(void) void sub_11B0(int arg0) { - if (gUnknown_0200B134.unk141) + if (gMain_saveData.unk141) { gUnknown_02019BF8 = arg0; gUnknown_02019BFC = 0; diff --git a/src/options.c b/src/options.c index ef31b58..e05d727 100644 --- a/src/options.c +++ b/src/options.c @@ -1,6 +1,7 @@ #include "global.h" #include "m4a.h" #include "main.h" +#include "titlescreen.h" struct OptionsData { @@ -85,9 +86,6 @@ void sub_51240(void) gMain.subState++; } -extern u8 gUnknown_02031AF0[][10]; -extern u8 gUnknown_08527ED6[][10]; - void sub_513B8(void) { int i; @@ -99,7 +97,7 @@ void sub_513B8(void) gUnknown_02002920.unk6 = 1; gUnknown_02002920.unk8 = 0; gUnknown_02002920.unkA = 0; - gUnknown_02002920.unkC = gUnknown_0200B134.unk143; + gUnknown_02002920.unkC = gMain_saveData.unk143; gUnknown_02002920.unkE = 0; gUnknown_02002920.unk10 = 0; gUnknown_02002920.unk12 = 0; @@ -124,13 +122,13 @@ void sub_513B8(void) sub_52528(); if (gGameBoyPlayerEnabled == 1) { - gUnknown_02002920.unk2A = gUnknown_0200B134.unk141; - gUnknown_0200B134.unk141 = 1; + gUnknown_02002920.unk2A = gMain_saveData.unk141; + gMain_saveData.unk141 = 1; } else { gUnknown_02002920.unk2A = 0; - gUnknown_0200B134.unk141 = 0; + gMain_saveData.unk141 = 0; } gUnknown_02002920.unk2E = 0; gUnknown_02002920.unk2B = 0; @@ -140,11 +138,6 @@ void sub_513B8(void) gUnknown_02002920.unk30 = 0; } -extern u16 gUnknown_08527D22[]; -extern u16 gUnknown_086BB910[][4]; -extern struct {u8 unk0; s16 unk2;} gUnknown_086BB9B4[]; -extern u16 gUnknown_08527D66[]; - void sub_514B8(void) { s16 r4; @@ -238,12 +231,12 @@ void sub_514B8(void) case 5: m4aSongNumStart(0x65); gUnknown_02002920.unkC = gUnknown_02002920.unkA - 2; - gUnknown_0200B134.unk143 = gUnknown_02002920.unkC; + gMain_saveData.unk143 = gUnknown_02002920.unkC; break; case 6: m4aSongNumStart(0x65); gUnknown_02002920.unkC = gUnknown_02002920.unkA - 2; - gUnknown_0200B134.unk143 = gUnknown_02002920.unkC; + gMain_saveData.unk143 = gUnknown_02002920.unkC; gUnknown_02002920.unkA = 7; gUnknown_02002920.unk0 = 3; break; @@ -448,8 +441,8 @@ void sub_514B8(void) { gUnknown_02031AF0[4][(gUnknown_02002920.unkA - 7) * 2 + 0] = gUnknown_02002920.unk24[0]; gUnknown_02031AF0[4][(gUnknown_02002920.unkA - 7) * 2 + 1] = gUnknown_02002920.unk24[1]; - gUnknown_0200B134.unk144[(gUnknown_02002920.unkA - 7)][0] = gUnknown_086BB910[gUnknown_02002920.unk24[0]][0]; - gUnknown_0200B134.unk144[(gUnknown_02002920.unkA - 7)][1] = gUnknown_086BB910[gUnknown_02002920.unk24[1]][0]; + gMain_saveData.unk144[(gUnknown_02002920.unkA - 7)][0] = gUnknown_086BB910[gUnknown_02002920.unk24[0]][0]; + gMain_saveData.unk144[(gUnknown_02002920.unkA - 7)][1] = gUnknown_086BB910[gUnknown_02002920.unk24[1]][0]; gUnknown_02002920.unk0 = 3; gUnknown_02002920.unk1A[gUnknown_02002920.unkA - 7] = 0; gUnknown_02002920.unk8 = 0; @@ -499,3 +492,21 @@ void sub_51C3C(void) gMain.subState++; } } + +void sub_51C60(void) +{ + gMain_saveData.unk141 = gUnknown_02002920.unk2A; + SaveFile_WriteToSram(); + sub_2B4(); + m4aMPlayAllStop(); + sub_D10(); + gAutoDisplayTitlescreenMenu = 1; + SetMainGameState(1); +} + +/* +void sub_51C9C(void) +{ + +} +*/ diff --git a/src/rom_528AC.c b/src/rom_528AC.c index f1c7d5f..6f33318 100644 --- a/src/rom_528AC.c +++ b/src/rom_528AC.c @@ -5,6 +5,9 @@ extern const u16 gUnknown_08527F18[]; +static void sub_52940(u16, s8, s8, u8, int); +static u16 LoadSaveDataFromSram(void); + #ifdef NONMATCHING // Like sub_C24, it matches except for that damn 'push {lr}/pop {lr}' int sub_528AC(u16 a) @@ -46,8 +49,6 @@ _080528DA:\n\ } #endif -void sub_52940(u16, s8, s8, u8, int); - void sub_528DC(u16 a, s8 b) { m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x99); @@ -59,12 +60,7 @@ void sub_5291C(u16 a, s8 b, s8 c, u8 d) sub_52940(a, b, c, d, 0); } -extern struct ToneData gUnknown_08532D6C[]; -extern struct ToneData gUnknown_08533360[]; -extern struct ToneData gUnknown_08533960[]; -extern struct ToneData gUnknown_08533F60[]; - -void sub_52940(u16 a, s8 b, s8 c, u8 d, int unused) +static void sub_52940(u16 a, s8 b, s8 c, u8 d, int unused) { u16 r5 = a - 1; u32 pitch = 0x3C00; @@ -100,18 +96,15 @@ void sub_52940(u16 a, s8 b, s8 c, u8 d, int unused) } } -extern u16 sub_52A68(void); -extern void sub_525CC(s8); - void sub_52A18(void) { SetSramFastFunc(); gMain.unkC = 0; - if (sub_52A68() == 0) + if (LoadSaveDataFromSram() == 0) { sub_52C64(); - sub_52B30(); - if (sub_52A68() == 0) + SaveFile_WriteToSram(); + if (LoadSaveDataFromSram() == 0) { gMain.unkC = 1; sub_52C64(); @@ -119,16 +112,15 @@ void sub_52A18(void) } else { - sub_525CC(gMain.saveData.unk143); + sub_525CC(gMain_saveData.unk143); } } -extern struct Main2 gMain_; extern u8 gSaveFileSignature[]; -u16 sub_52A68(void) +static u16 LoadSaveDataFromSram(void) { - u16 r8 = 0; + u16 isOk = FALSE; u16 fileNum; u16 i; u32 checksum; @@ -136,15 +128,15 @@ u16 sub_52A68(void) // Looks like there are two copies of the save data, one used as a backup? for (fileNum = 0; fileNum < 2; fileNum++) { - u16 *saveData = (u16 *)&gMain.saveData; - u32 size = 0x274; + u16 *saveData = (u16 *)&gMain_saveData; + size_t size = sizeof(gMain_saveData); - ReadSramFast((u8 *)0x0E000004 + fileNum * 672, (u8 *)saveData, size); + ReadSramFast((void *)(SRAM + 0x4 + fileNum * 672), (u8 *)saveData, size); // Verify signature for (i = 0; i < 10; i++) { - if (gMain.saveData.signature[i] != gSaveFileSignature[i]) + if (gMain_saveData.signature[i] != gSaveFileSignature[i]) break; } if (i != 10) @@ -162,93 +154,82 @@ u16 sub_52A68(void) checksum = (checksum & 0xFFFF) + (checksum >> 16); if (checksum == 0xFFFF) { - r8 = 1; + isOk = TRUE; break; } } - return r8; + return isOk; } -// I really think gUnknown_0200B134_ is part of gMain, but the code doesn't -// match if I do that. -#ifdef NONMATCHING -#define gUnknown_0200B134_ gMain.saveData -#else -extern struct SaveData gUnknown_0200B134_; // gMain.saveData -asm(".set gUnknown_0200B134_, gMain+0x74"); -#endif - -void sub_52B30(void) +void SaveFile_WriteToSram(void) { u32 checksum; - u16 *saveData = (u16 *)&gUnknown_0200B134_; - u32 size = 0x274; + u16 *saveData = (u16 *)&gMain_saveData; + size_t size = sizeof(gMain_saveData); - gUnknown_0200B134_.unk2E4++; - gUnknown_0200B134_.unk2E2 = 0; + gMain_saveData.unk2E4++; + gMain_saveData.checksum = 0; checksum = 0; while (size > 1) { - checksum += *saveData++; - size -= 2; + checksum += *saveData++; + size -= 2; } if (size != 0) // never happens (size is even) - checksum += *saveData & 0xFF00; + checksum += *saveData & 0xFF00; checksum = (checksum & 0xFFFF) + (checksum >> 16); - gUnknown_0200B134_.unk2E2 = ~((checksum >> 16) + checksum); + gMain_saveData.checksum = ~((checksum >> 16) + checksum); - WriteAndVerifySramFast((u8 *)&gUnknown_0200B134_, (u8 *)0x0E000004, 0x274); - WriteAndVerifySramFast((u8 *)&gUnknown_0200B134_, (u8 *)0x0E0002A4, 0x274); + WriteAndVerifySramFast((u8 *)&gMain_saveData, (void *)(SRAM + 0x4), sizeof(gMain_saveData)); + WriteAndVerifySramFast((u8 *)&gMain_saveData, (void *)(SRAM + 0x2A4), sizeof(gMain_saveData)); } -void sub_52BB0(s16 a, u8 b) +void SaveFile_SetPokedexFlags(s16 a, u8 b) { - u16 *saveData = (u16 *)&gUnknown_0200B134_; - u32 size = 0x274; + u16 *saveData = (u16 *)&gMain_saveData; + size_t size = sizeof(gMain_saveData); u32 checksum; - if (gUnknown_0200B134_.pokedexFlags[a] < b) + if (gMain_saveData.pokedexFlags[a] < b) { - u16 r1; - - gUnknown_0200B134_.unk2E4++; - r1 = 0; - gUnknown_0200B134_.pokedexFlags[a] = b; - gUnknown_0200B134_.unk2E2 = r1; - - checksum = 0; - while (size > 1) - { - checksum += *saveData++; - size -= 2; - } - if (size != 0) // never happens (size is even) - checksum += *saveData & 0xFF00; - checksum = (checksum & 0xFFFF) + (checksum >> 16); - gUnknown_0200B134_.unk2E2 = ~((checksum >> 16) + checksum); - - WriteAndVerifySramFast((u8 *)&gUnknown_0200B134_, (u8 *)0x0E000004, 0x274); - WriteAndVerifySramFast((u8 *)&gUnknown_0200B134_, (u8 *)0x0E0002A4, 0x274); + gMain_saveData.unk2E4++; + gMain_saveData.pokedexFlags[a] = b; + gMain_saveData.checksum = 0; + + checksum = 0; + while (size > 1) + { + checksum += *saveData++; + size -= 2; + } + if (size != 0) // never happens (size is even) + checksum += *saveData & 0xFF00; + checksum = (checksum & 0xFFFF) + (checksum >> 16); + gMain_saveData.checksum = ~((checksum >> 16) + checksum); + + WriteAndVerifySramFast((u8 *)&gMain_saveData, (void *)(SRAM + 0x4), sizeof(gMain_saveData)); + WriteAndVerifySramFast((u8 *)&gMain_saveData, (void *)(SRAM + 0x2A4), sizeof(gMain_saveData)); } } -void sub_52C44(void) +void SaveFile_ReadSavedGamePresent(void) { - ReadSramFast((u8 *)0x0E000544, (u8 *)&gMain.hasSavedGame, sizeof(gMain.hasSavedGame)); + ReadSramFast((void *)(SRAM + 0x544), (u8 *)&gMain.hasSavedGame, sizeof(gMain.hasSavedGame)); } void sub_52C64(void) { - s16 r1; + s16 i; + + for (i = 0; i < 10; i++) + gMain_saveData.signature[i] = gSaveFileSignature[i]; - for (r1 = 0; r1 < 10; r1++) - gUnknown_0200B134_.signature[r1] = gSaveFileSignature[r1]; - gUnknown_0200B134_.unk2E4 = 0; - gUnknown_0200B134_.unk141 = 0; - gUnknown_0200B134_.unk142 = 0; + gMain_saveData.unk2E4 = 0; + gMain_saveData.unk141 = 0; + gMain_saveData.unk142 = 0; sub_525CC(-1); sub_F6E0(); sub_8ABC(); - gUnknown_0200B134_.unk143 = 0; + gMain_saveData.unk143 = 0; } diff --git a/src/titlescreen.c b/src/titlescreen.c index 22bc699..8e19997 100755 --- a/src/titlescreen.c +++ b/src/titlescreen.c @@ -41,7 +41,7 @@ void LoadTitlescreenGraphics(void) DmaCopy16(3, gTitlescreenBg_Pals, (void *)BG_PLTT, BG_PLTT_SIZE); DmaCopy16(3, gTitlescreenBgTilemap, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE); - sub_52C44(); + SaveFile_ReadSavedGamePresent(); if (gMain.hasSavedGame == TRUE) { DmaCopy16(3, gTitlescreenSprites_Pals, (void *)OBJ_PLTT, 0xA0); @@ -862,7 +862,7 @@ void sub_11968(void) void sub_11B74(void) { sub_52C64(); - sub_52B30(); + SaveFile_WriteToSram(); gMain.hasSavedGame = FALSE; WriteAndVerifySramFast((const u8 *)&gMain.hasSavedGame, (void *)0x0E000544, sizeof(gMain.hasSavedGame)); } @@ -96,7 +96,7 @@ void sub_438(void) { gMain.unk16 |= DISPCNT_FORCED_BLANK; REG_DISPCNT |= DISPCNT_FORCED_BLANK; - sub_490(); + ClearGraphicsMemory(); sub_518(); sub_578(); gMain.unkF = 0; @@ -115,7 +115,7 @@ void sub_438(void) gMain.unk2C = 0; } -void sub_490(void) +void ClearGraphicsMemory(void) { DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE); DmaFill32(3, 0, (void *)OAM, OAM_SIZE); |