summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/gbplayer.c1
-rw-r--r--src/rom_1068C.c124
-rwxr-xr-xsrc/rom_3219C.c16
-rw-r--r--src/rom_528AC.c254
-rwxr-xr-xsrc/titlescreen.c149
5 files changed, 467 insertions, 77 deletions
diff --git a/src/gbplayer.c b/src/gbplayer.c
index 00d30d5..c0d9655 100755
--- a/src/gbplayer.c
+++ b/src/gbplayer.c
@@ -292,6 +292,7 @@ void sub_1198(void)
void sub_11B0(int arg0)
{
if (gUnknown_0200B134[0xCD])
+ //if (gMain.saveData.unk141)
{
gUnknown_02019BF8 = arg0;
gUnknown_02019BFC = 0;
diff --git a/src/rom_1068C.c b/src/rom_1068C.c
new file mode 100644
index 0000000..4a5e619
--- /dev/null
+++ b/src/rom_1068C.c
@@ -0,0 +1,124 @@
+#include "global.h"
+#include "main.h"
+
+void sub_1068C(int a, int b, int c, int d, u16 e)
+{
+ u16 i;
+ u16 j;
+
+ for (i = 0; i < d; i++)
+ {
+ for (j = 0; j < c; j++)
+ {
+ u16 index = b * 32 + a + i * 32 + j;
+
+ gUnknown_03005C00[index] = (gUnknown_03005C00[index] & 0xFFF) | (e << 12);
+ }
+ }
+}
+
+// This requires volatile parameters to match. There is no reason, *ever*, to do this.
+void sub_10708(void *volatile src, void *volatile dest, s16 numTilesX, s16 numTilesY)
+{
+ int i;
+
+ for (i = 0; i < numTilesY; i++)
+ {
+ DmaCopy16(3, (u8 *)src + 0x400 * i, (u8 *)dest + 0x400 * i, numTilesX * 32);
+ }
+}
+
+void sub_10750(void *volatile src, void *volatile dest, s16 numTilesX, s16 numTilesY)
+{
+ int i;
+
+ for (i = 0; i < numTilesY; i++)
+ {
+ DmaCopy16(3, (u8 *)src + 0x40 * i, (u8 *)dest + 0x40 * i, numTilesX * 2);
+ }
+}
+
+void sub_10798(void *a, void *b, void (*func)(void))
+{
+ u16 i;
+
+ DmaCopy16(3, a, gUnknown_0201A920, 0x200);
+ DmaCopy16(3, b, gUnknown_0201A920 + 0x200, 0x200);
+ DmaFill16(3, 0x7FFF, gUnknown_0201A920 - 0x200, 0x400);
+ DmaCopy16(3, gUnknown_0201A920 - 0x200, gUnknown_0201A920 + 0x200, 0x400);
+ DmaCopy16(3, gUnknown_0201A920 + 0x200, (void *)PLTT, 0x400);
+
+ sub_1050C();
+ gMain.unk16 = REG_DISPCNT;
+
+ for (i = 0; i <= 32; i += 16)
+ {
+ if (func != NULL)
+ func();
+ sub_1001C(i);
+ sub_D74();
+ if (i == 32)
+ {
+ DmaCopy16(3, gUnknown_0201A920, (void *)PLTT, 0x400);
+ }
+ else
+ {
+ DmaCopy16(3, gUnknown_0201AD20, (void *)PLTT, 0x400);
+ }
+ }
+}
+
+void sub_10860(void (*func)(void))
+{
+ u16 i;
+
+ DmaCopy16(3, (void *)PLTT, gUnknown_0201A520, 0x400);
+ DmaFill16(3, 0x7FFF, gUnknown_0201A520 + 0x200, 0x400);
+ DmaCopy16(3, gUnknown_0201A520, gUnknown_0201A520 + 0x400, 0x400);
+
+ for (i = 0; i <= 32; i += 16)
+ {
+ if (func != NULL)
+ func();
+ sub_1001C(i);
+ sub_D74();
+ if (i == 32)
+ {
+ DmaCopy16(3, gUnknown_0201A920, (void *)PLTT, 0x400);
+ }
+ else
+ {
+ DmaCopy16(3, gUnknown_0201AD20, (void *)PLTT, 0x400);
+ }
+ }
+ sub_D74();
+}
+
+#ifdef NONMATCHING
+// Like sub_C24, it matches except for that damn 'push {lr}/pop {lr}'
+void sub_1090C(void)
+{
+ int i;
+
+ for (i = 0; i < 4; i++)
+ gUnknown_0201A500[i] = 0;
+}
+#else
+NAKED
+void sub_1090C(void)
+{
+ asm_unified("\n\
+ ldr r1, _08010920 @ =gUnknown_0201A500\n\
+ movs r2, #0\n\
+ adds r0, r1, #0\n\
+ adds r0, #0xc\n\
+_08010914:\n\
+ str r2, [r0]\n\
+ subs r0, #4\n\
+ cmp r0, r1\n\
+ bge _08010914\n\
+ bx lr\n\
+ .align 2, 0\n\
+_08010920: .4byte gUnknown_0201A500");
+}
+#endif
diff --git a/src/rom_3219C.c b/src/rom_3219C.c
index 6954fbe..77eb7ac 100755
--- a/src/rom_3219C.c
+++ b/src/rom_3219C.c
@@ -43,31 +43,31 @@ void sub_3219C(void)
{
s16 numSpecialMons = 0;
gUnknown_020314E0->catchModeSpecies = 0;
- if (gUnknown_0200B134[SPECIES_AERODACTYL])
+ if (gMain+0x74[SPECIES_AERODACTYL])
{
specialMons[numSpecialMons++] = SPECIES_AERODACTYL;
- if (gUnknown_0200B134[SPECIES_AERODACTYL] < 4)
+ if (gMain+0x74[SPECIES_AERODACTYL] < 4)
gUnknown_020314E0->catchModeSpecies = SPECIES_AERODACTYL;
}
- if (gUnknown_0200B134[SPECIES_CHIKORITA])
+ if (gMain+0x74[SPECIES_CHIKORITA])
{
specialMons[numSpecialMons++] = SPECIES_CHIKORITA;
- if (gUnknown_0200B134[SPECIES_CHIKORITA] < 4)
+ if (gMain+0x74[SPECIES_CHIKORITA] < 4)
gUnknown_020314E0->catchModeSpecies = SPECIES_CHIKORITA;
}
- if (gUnknown_0200B134[SPECIES_TOTODILE])
+ if (gMain+0x74[SPECIES_TOTODILE])
{
specialMons[numSpecialMons++] = SPECIES_TOTODILE;
- if (gUnknown_0200B134[SPECIES_TOTODILE] < 4)
+ if (gMain+0x74[SPECIES_TOTODILE] < 4)
gUnknown_020314E0->catchModeSpecies = SPECIES_TOTODILE;
}
- if (gUnknown_0200B134[SPECIES_CYNDAQUIL])
+ if (gMain+0x74[SPECIES_CYNDAQUIL])
{
specialMons[numSpecialMons++] = SPECIES_CYNDAQUIL;
- if (gUnknown_0200B134[SPECIES_CYNDAQUIL] < 4)
+ if (gMain+0x74[SPECIES_CYNDAQUIL] < 4)
gUnknown_020314E0->catchModeSpecies = SPECIES_CYNDAQUIL;
}
diff --git a/src/rom_528AC.c b/src/rom_528AC.c
new file mode 100644
index 0000000..f1c7d5f
--- /dev/null
+++ b/src/rom_528AC.c
@@ -0,0 +1,254 @@
+#include "global.h"
+#include "m4a.h"
+#include "agb_sram.h"
+#include "main.h"
+
+extern const u16 gUnknown_08527F18[];
+
+#ifdef NONMATCHING
+// Like sub_C24, it matches except for that damn 'push {lr}/pop {lr}'
+int sub_528AC(u16 a)
+{
+ if (a <= 0xFA)
+ return a;
+ if (a <= 0x113)
+ return 0xC8;
+ return gUnknown_08527F18[a - 0x114];
+}
+#else
+NAKED
+int sub_528AC(u16 a)
+{
+ asm_unified("\n\
+ lsls r0, r0, #0x10\n\
+ lsrs r0, r0, #0x10\n\
+ adds r1, r0, #0\n\
+ cmp r0, #0xfa\n\
+ bls _080528DA\n\
+ ldr r0, _080528CC @ =0x00000113\n\
+ cmp r1, r0\n\
+ bls _080528D8\n\
+ ldr r0, _080528D0 @ =gUnknown_08527F18\n\
+ ldr r2, _080528D4 @ =0xFFFFFEEC\n\
+ adds r1, r1, r2\n\
+ lsls r1, r1, #1\n\
+ adds r1, r1, r0\n\
+ ldrh r0, [r1]\n\
+ b _080528DA\n\
+ .align 2, 0\n\
+_080528CC: .4byte 0x00000113\n\
+_080528D0: .4byte gUnknown_08527F18\n\
+_080528D4: .4byte 0xFFFFFEEC\n\
+_080528D8:\n\
+ movs r0, #0xc8\n\
+_080528DA:\n\
+ bx lr");
+}
+#endif
+
+void sub_52940(u16, s8, s8, u8, int);
+
+void sub_528DC(u16 a, s8 b)
+{
+ m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x99);
+ sub_52940(a, b, 0x7D, 10, 0);
+}
+
+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)
+{
+ u16 r5 = a - 1;
+ u32 pitch = 0x3C00;
+ u32 var;
+ u32 r1;
+ u8 r0;
+
+ SetPokemonCryVolume(c);
+ SetPokemonCryPanpot(b);
+ SetPokemonCryPitch(pitch);
+ SetPokemonCryLength(0x8C);
+ SetPokemonCryProgress(0);
+ SetPokemonCryRelease(0);
+ SetPokemonCryChorus(0);
+ SetPokemonCryPriority(d);
+ var = sub_528AC(r5);
+ r1 = var & 0x7F;
+ r0 = var >> 7;
+ switch (r0)
+ {
+ case 0:
+ SetPokemonCryTone(&gUnknown_08532D6C[r1]);
+ break;
+ case 1:
+ SetPokemonCryTone(&gUnknown_08533360[r1]);
+ break;
+ case 2:
+ SetPokemonCryTone(&gUnknown_08533960[r1]);
+ break;
+ case 3:
+ SetPokemonCryTone(&gUnknown_08533F60[r1]);
+ break;
+ }
+}
+
+extern u16 sub_52A68(void);
+extern void sub_525CC(s8);
+
+void sub_52A18(void)
+{
+ SetSramFastFunc();
+ gMain.unkC = 0;
+ if (sub_52A68() == 0)
+ {
+ sub_52C64();
+ sub_52B30();
+ if (sub_52A68() == 0)
+ {
+ gMain.unkC = 1;
+ sub_52C64();
+ }
+ }
+ else
+ {
+ sub_525CC(gMain.saveData.unk143);
+ }
+}
+
+extern struct Main2 gMain_;
+extern u8 gSaveFileSignature[];
+
+u16 sub_52A68(void)
+{
+ u16 r8 = 0;
+ u16 fileNum;
+ u16 i;
+ u32 checksum;
+
+ // 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;
+
+ ReadSramFast((u8 *)0x0E000004 + fileNum * 672, (u8 *)saveData, size);
+
+ // Verify signature
+ for (i = 0; i < 10; i++)
+ {
+ if (gMain.saveData.signature[i] != gSaveFileSignature[i])
+ break;
+ }
+ if (i != 10)
+ continue;
+
+ // Verify checksum
+ 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);
+ if (checksum == 0xFFFF)
+ {
+ r8 = 1;
+ break;
+ }
+ }
+ return r8;
+}
+
+// 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)
+{
+ u32 checksum;
+ u16 *saveData = (u16 *)&gUnknown_0200B134_;
+ u32 size = 0x274;
+
+ gUnknown_0200B134_.unk2E4++;
+ gUnknown_0200B134_.unk2E2 = 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);
+ gUnknown_0200B134_.unk2E2 = ~((checksum >> 16) + checksum);
+
+ WriteAndVerifySramFast((u8 *)&gUnknown_0200B134_, (u8 *)0x0E000004, 0x274);
+ WriteAndVerifySramFast((u8 *)&gUnknown_0200B134_, (u8 *)0x0E0002A4, 0x274);
+}
+
+void sub_52BB0(s16 a, u8 b)
+{
+ u16 *saveData = (u16 *)&gUnknown_0200B134_;
+ u32 size = 0x274;
+ u32 checksum;
+
+ if (gUnknown_0200B134_.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);
+ }
+}
+
+void sub_52C44(void)
+{
+ ReadSramFast((u8 *)0x0E000544, (u8 *)&gMain.hasSavedGame, sizeof(gMain.hasSavedGame));
+}
+
+void sub_52C64(void)
+{
+ s16 r1;
+
+ for (r1 = 0; r1 < 10; r1++)
+ gUnknown_0200B134_.signature[r1] = gSaveFileSignature[r1];
+ gUnknown_0200B134_.unk2E4 = 0;
+ gUnknown_0200B134_.unk141 = 0;
+ gUnknown_0200B134_.unk142 = 0;
+ sub_525CC(-1);
+ sub_F6E0();
+ sub_8ABC();
+ gUnknown_0200B134_.unk143 = 0;
+}
diff --git a/src/titlescreen.c b/src/titlescreen.c
index 6a2bcac..22bc699 100755
--- a/src/titlescreen.c
+++ b/src/titlescreen.c
@@ -12,6 +12,15 @@ static void sub_11640(void);
// it will transition to a demo gameplay experience.
#define NUM_IDLE_FRAMES 1800
+enum
+{
+ SUBSTATE_LOAD_GRAPHICS = 0,
+ SUBSTATE_WAIT_FOR_START_BUTTON = 1,
+ SUBSTATE_MENU_INPUT_NO_SAVED_GAME = 4,
+ SUBSTATE_MENU_INPUT_SAVED_GAME = 5,
+ SUBSTATE_ANIM_CLOSE_MENU = 6,
+ SUBSTATE_EXEC_MENU_SELECTION = 10
+};
void TitlescreenMain(void)
{
@@ -33,7 +42,7 @@ void LoadTitlescreenGraphics(void)
DmaCopy16(3, gTitlescreenBgTilemap, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE);
sub_52C44();
- if (gMain.unk40 == 1)
+ if (gMain.hasSavedGame == TRUE)
{
DmaCopy16(3, gTitlescreenSprites_Pals, (void *)OBJ_PLTT, 0xA0);
DmaCopy16(3, gTitlescreenSpritesSavedGame_Gfx, (void *)BG_CHAR_ADDR(4), 0x7000);
@@ -62,7 +71,7 @@ void LoadTitlescreenGraphics(void)
}
else
{
- gMain.subState = 1;
+ gMain.subState = SUBSTATE_WAIT_FOR_START_BUTTON;
sub_CBC();
sub_FD5C(sub_11640);
}
@@ -74,7 +83,7 @@ void sub_10AC0(void)
{
int i;
- gTitlescreen.unk4 = 0;
+ gTitlescreen.animTimer = 0;
gTitlescreen.unk2 = 0;
gTitlescreen.unk6 = 0;
gTitlescreen.unk8 = 0;
@@ -93,7 +102,7 @@ void sub_10AC0(void)
gEReaderAccessStep = 0;
gEReaderAccessCounter = 0;
- if (gMain.unk40 == 1)
+ if (gMain.hasSavedGame == TRUE)
{
for (i = 0; i < 7; i++)
gUnknown_0202BE00[i] = gUnknown_086A975C[i];
@@ -123,7 +132,7 @@ void sub_10AC0(void)
gUnknown_202BE24 = 0;
}
-void sub_10BB8(void)
+void TitleScreen1_WaitForStartButton(void)
{
if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
== (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
@@ -142,10 +151,10 @@ void sub_10BB8(void)
if (!gUnknown_020028A4)
{
- gTitlescreen.unk4++;
- if (gTitlescreen.unk4 >= gUnknown_086A9662[gTitlescreen.unk8])
+ gTitlescreen.animTimer++;
+ if (gTitlescreen.animTimer >= gUnknown_086A9662[gTitlescreen.unk8])
{
- gTitlescreen.unk4 = 0;
+ gTitlescreen.animTimer = 0;
if (++gTitlescreen.unk8 > 3)
gTitlescreen.unk8 = 0;
}
@@ -156,7 +165,7 @@ void sub_10BB8(void)
if (gMain.newKeys & (A_BUTTON | START_BUTTON))
{
m4aSongNumStart(0x65);
- gTitlescreen.unk4 = 0;
+ gTitlescreen.animTimer = 0;
gTitlescreen.unk2 = 0;
gMain.subState = 2;
}
@@ -185,7 +194,7 @@ void sub_10BB8(void)
sub_11640();
}
-void sub_10CF0(void)
+void TitleScreen2_Unknown(void)
{
if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
== (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
@@ -197,10 +206,10 @@ void sub_10CF0(void)
if (!gUnknown_020028A4)
{
- gTitlescreen.unk4++;
- if (gTitlescreen.unk4 >= gUnknown_086A9666[gTitlescreen.unk2][1])
+ gTitlescreen.animTimer++;
+ if (gTitlescreen.animTimer >= gUnknown_086A9666[gTitlescreen.unk2][1])
{
- gTitlescreen.unk4 = 0;
+ gTitlescreen.animTimer = 0;
gTitlescreen.unk8 = gUnknown_086A9666[gTitlescreen.unk2][0];
if (++gTitlescreen.unk2 > 5)
{
@@ -216,14 +225,14 @@ void sub_10CF0(void)
sub_11640();
}
-void sub_10D84(void)
+void TitleScreen9_Unknown(void)
{
if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
== (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
{
gUnknown_020028A4 = 1;
gTitlescreen.unk6 = 9;
- gMain.subState = 10;
+ gMain.subState = SUBSTATE_EXEC_MENU_SELECTION;
}
if (!gUnknown_020028A4)
@@ -235,20 +244,20 @@ void sub_10D84(void)
sub_2B4();
m4aMPlayAllStop();
sub_D10();
- gMain.subState = 0;
+ gMain.subState = SUBSTATE_LOAD_GRAPHICS;
}
else if (gMain.newKeys & B_BUTTON)
{
m4aSongNumStart(0x66);
gTitlescreen.unk11 = 0;
- gMain.subState = 1;
+ gMain.subState = SUBSTATE_WAIT_FOR_START_BUTTON;
}
}
sub_11640();
}
-void sub_10E00(void)
+void TitleScreen3_Unknown(void)
{
if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
== (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
@@ -262,17 +271,17 @@ void sub_10E00(void)
{
if (!gTitlescreen.unk7)
{
- gTitlescreen.unk4++;
- if (gTitlescreen.unk4 >= gUnknown_086A9748[gTitlescreen.unk2])
+ gTitlescreen.animTimer++;
+ if (gTitlescreen.animTimer >= gUnknown_086A9748[gTitlescreen.unk2])
{
- gTitlescreen.unk4 = 0;
+ gTitlescreen.animTimer = 0;
gUnknown_0201C190[6] = gUnknown_086A9714[gTitlescreen.unk2];
if (++gTitlescreen.unk2 > 11)
{
gTitlescreen.unk2 = 0;
gTitlescreen.unkD = 1;
gTitlescreen.unkF = 1;
- gMain.subState = 4;
+ gMain.subState = SUBSTATE_MENU_INPUT_NO_SAVED_GAME;
}
}
@@ -280,17 +289,17 @@ void sub_10E00(void)
}
else
{
- gTitlescreen.unk4++;
- if (gTitlescreen.unk4 >= gUnknown_086A9748[gTitlescreen.unk2])
+ gTitlescreen.animTimer++;
+ if (gTitlescreen.animTimer >= gUnknown_086A9748[gTitlescreen.unk2])
{
- gTitlescreen.unk4 = 0;
+ gTitlescreen.animTimer = 0;
gUnknown_0202BE00[6] = gUnknown_086A9778[gTitlescreen.unk2];
if (++gTitlescreen.unk2 > 11)
{
gTitlescreen.unk2 = 0;
gTitlescreen.unkD = 1;
gTitlescreen.unkF = 1;
- gMain.subState = 5;
+ gMain.subState = SUBSTATE_MENU_INPUT_SAVED_GAME;
}
}
@@ -299,22 +308,22 @@ void sub_10E00(void)
}
}
-void sub_10EF4(void)
+void TitleScreen4_MenuInputNoSavedGame(void)
{
if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
== (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
{
gUnknown_020028A4 = 1;
gTitlescreen.unk6 = 9;
- gMain.subState = 10;
+ gMain.subState = SUBSTATE_EXEC_MENU_SELECTION;
}
if (!gUnknown_020028A4)
{
- gTitlescreen.unk4++;
- if (gTitlescreen.unk4 >= gUnknown_086A9672[gTitlescreen.unk2][1])
+ gTitlescreen.animTimer++;
+ if (gTitlescreen.animTimer >= gUnknown_086A9672[gTitlescreen.unk2][1])
{
- gTitlescreen.unk4 = 0;
+ gTitlescreen.animTimer = 0;
if (++gTitlescreen.unk2 > 6)
gTitlescreen.unk2 = 0;
@@ -338,18 +347,18 @@ void sub_10EF4(void)
if (gMain.newKeys & (A_BUTTON | START_BUTTON))
{
m4aSongNumStart(0x65);
- gTitlescreen.unk4 = 0;
+ gTitlescreen.animTimer = 0;
gTitlescreen.unk2 = 0;
gMain.subState = 7;
}
else if (gMain.newKeys & B_BUTTON)
{
m4aSongNumStart(0x66);
- gTitlescreen.unk4 = 0;
+ gTitlescreen.animTimer = 0;
gTitlescreen.unk2 = 12;
gTitlescreen.unkD = 0;
gTitlescreen.unkF = 0;
- gMain.subState = 6;
+ gMain.subState = SUBSTATE_ANIM_CLOSE_MENU;
}
sub_1157C();
@@ -358,7 +367,7 @@ void sub_10EF4(void)
sub_1175C();
}
-void sub_11020(void)
+void TitleScreen7_Unknown(void)
{
if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
== (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
@@ -370,9 +379,9 @@ void sub_11020(void)
if (!gUnknown_020028A4)
{
- u16 unk4 = gTitlescreen.unk4;
+ u16 animTimer = gTitlescreen.animTimer;
u16 mask = 0x3;
- if (!(unk4 & mask))
+ if (!(animTimer & mask))
{
if (!gTitlescreen.unk2)
{
@@ -387,35 +396,35 @@ void sub_11020(void)
}
}
- if (gTitlescreen.unk4 > 20)
+ if (gTitlescreen.animTimer > 20)
{
gMain.unkD = 0;
gTitlescreen.unk6 = gUnknown_086A96A4[gTitlescreen.menuCursorIndex];
- gMain.subState = 10;
+ gMain.subState = SUBSTATE_EXEC_MENU_SELECTION;
}
- gTitlescreen.unk4++;
+ gTitlescreen.animTimer++;
}
sub_1175C();
}
-void sub_110FC(void)
+void TitleScreen5_MenuInputSavedGame(void)
{
if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
== (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
{
gUnknown_020028A4 = 1;
gTitlescreen.unk6 = 9;
- gMain.subState = 10;
+ gMain.subState = SUBSTATE_EXEC_MENU_SELECTION;
}
if (!gUnknown_020028A4)
{
- gTitlescreen.unk4++;
- if (gTitlescreen.unk4 >= gUnknown_086A9672[gTitlescreen.unk2][1])
+ gTitlescreen.animTimer++;
+ if (gTitlescreen.animTimer >= gUnknown_086A9672[gTitlescreen.unk2][1])
{
- gTitlescreen.unk4 = 0;
+ gTitlescreen.animTimer = 0;
if (++gTitlescreen.unk2 > 6)
gTitlescreen.unk2 = 0;
@@ -439,18 +448,18 @@ void sub_110FC(void)
if (gMain.newKeys & (A_BUTTON | START_BUTTON))
{
m4aSongNumStart(0x65);
- gTitlescreen.unk4 = 0;
+ gTitlescreen.animTimer = 0;
gTitlescreen.unk2 = 0;
gMain.subState = 8;
}
else if (gMain.newKeys & B_BUTTON)
{
m4aSongNumStart(0x66);
- gTitlescreen.unk4 = 0;
+ gTitlescreen.animTimer = 0;
gTitlescreen.unk2 = 12;
gTitlescreen.unkD = 0;
gTitlescreen.unkF = 0;
- gMain.subState = 6;
+ gMain.subState = SUBSTATE_ANIM_CLOSE_MENU;
}
sub_1157C();
@@ -459,7 +468,7 @@ void sub_110FC(void)
sub_11968();
}
-void sub_11228(void)
+void TitleScreen8_Unknown(void)
{
if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
== (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
@@ -471,9 +480,11 @@ void sub_11228(void)
if (!gUnknown_020028A4)
{
- u16 unk4 = gTitlescreen.unk4;
+ u16 animTimer = gTitlescreen.animTimer;
u16 mask = 0x3;
- if (!(unk4 & mask))
+
+ // Blink menu item
+ if (!(animTimer & mask))
{
if (!gTitlescreen.unk2)
{
@@ -488,7 +499,7 @@ void sub_11228(void)
}
}
- if (gTitlescreen.unk4 > 20)
+ if (gTitlescreen.animTimer > 20)
{
if (gTitlescreen.menuCursorIndex == 1)
gMain.unkD = 1;
@@ -496,16 +507,16 @@ void sub_11228(void)
gMain.unkD = 0;
gTitlescreen.unk6 = gUnknown_086A96D4[gTitlescreen.menuCursorIndex];
- gMain.subState = 10;
+ gMain.subState = SUBSTATE_EXEC_MENU_SELECTION;
}
- gTitlescreen.unk4++;
+ gTitlescreen.animTimer++;
}
sub_11968();
}
-void sub_11320(void)
+void TitleScreen6_AnimCloseMenu(void)
{
if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
== (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
@@ -519,10 +530,10 @@ void sub_11320(void)
{
if (!gTitlescreen.unk7)
{
- gTitlescreen.unk4++;
- if (gTitlescreen.unk4 >= gUnknown_086A9748[gTitlescreen.unk2])
+ gTitlescreen.animTimer++;
+ if (gTitlescreen.animTimer >= gUnknown_086A9748[gTitlescreen.unk2])
{
- gTitlescreen.unk4 = 0;
+ gTitlescreen.animTimer = 0;
if (--gTitlescreen.unk2 < 0)
{
gTitlescreen.unk2 = 0;
@@ -530,7 +541,7 @@ void sub_11320(void)
gUnknown_202BE24 = 1;
gTitlescreen.unk9 = 1;
gTitlescreen.unkB = 0;
- gMain.subState = 1;
+ gMain.subState = SUBSTATE_WAIT_FOR_START_BUTTON;
}
gUnknown_0201C190[6] = gUnknown_086A9714[gTitlescreen.unk2];
@@ -540,10 +551,10 @@ void sub_11320(void)
}
else
{
- gTitlescreen.unk4++;
- if (gTitlescreen.unk4 >= gUnknown_086A9748[gTitlescreen.unk2])
+ gTitlescreen.animTimer++;
+ if (gTitlescreen.animTimer >= gUnknown_086A9748[gTitlescreen.unk2])
{
- gTitlescreen.unk4 = 0;
+ gTitlescreen.animTimer = 0;
if (--gTitlescreen.unk2 < 0)
{
gTitlescreen.unk2 = 0;
@@ -551,7 +562,7 @@ void sub_11320(void)
gUnknown_202BE24 = 1;
gTitlescreen.unk9 = 1;
gTitlescreen.unkB = 0;
- gMain.subState = 1;
+ gMain.subState = SUBSTATE_WAIT_FOR_START_BUTTON;
}
gUnknown_0202BE00[6] = gUnknown_086A9778[gTitlescreen.unk2];
@@ -562,7 +573,7 @@ void sub_11320(void)
}
}
-void sub_11428(void)
+void TitleScreen10_ExecMenuSelection(void)
{
if (!gTitlescreen.unk7)
sub_FE04(sub_1175C);
@@ -581,7 +592,7 @@ void sub_11428(void)
SetMainGameState(gUnknown_086A964C[gTitlescreen.unk6]);
}
-void sub_114B4(void)
+void TitleScreen11_Unknown(void)
{
sub_FE04(sub_11640);
m4aMPlayAllStop();
@@ -634,10 +645,10 @@ static void sub_1157C(void)
gEReaderAccessCounter = 0;
m4aSongNumStart(0x65);
gTitlescreen.unk6 = 5;
- if (gMain.subState == 1)
+ if (gMain.subState == SUBSTATE_WAIT_FOR_START_BUTTON)
gMain.subState = 11;
else
- gMain.subState = 10;
+ gMain.subState = SUBSTATE_EXEC_MENU_SELECTION;
}
}
@@ -852,6 +863,6 @@ void sub_11B74(void)
{
sub_52C64();
sub_52B30();
- gMain.unk40 = 0;
- WriteAndVerifySramFast((const u8 *)&gMain.unk40, (void *)0x0E000544, 4);
+ gMain.hasSavedGame = FALSE;
+ WriteAndVerifySramFast((const u8 *)&gMain.hasSavedGame, (void *)0x0E000544, sizeof(gMain.hasSavedGame));
}