summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCameron Hall <cameronghall@cox.net>2019-08-11 14:20:54 -0500
committerCameron Hall <cameronghall@cox.net>2019-08-11 14:20:54 -0500
commit68de07eabfe27625e4b5b43502da0efade337456 (patch)
tree0778a30ee71ca7afc89b2967560a28dbd2a42e91 /src
parentb0870ee7fbf34fe4fa8bf6a622a3c46aa326f1fb (diff)
cleanup
Diffstat (limited to 'src')
-rwxr-xr-xsrc/gbplayer.c2
-rw-r--r--src/options.c43
-rw-r--r--src/rom_528AC.c135
-rwxr-xr-xsrc/titlescreen.c4
-rwxr-xr-xsrc/util.c4
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));
}
diff --git a/src/util.c b/src/util.c
index d0f3f42..eab2e9e 100755
--- a/src/util.c
+++ b/src/util.c
@@ -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);