summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCameron Hall <cameronghall@cox.net>2019-08-11 19:15:53 -0500
committerCameron Hall <cameronghall@cox.net>2019-08-11 19:15:53 -0500
commitd06a2d63c051f4f5eef247944e006ff93a9f3160 (patch)
treebdd49f0b063df840eda899cf71e40c2f20cad772
parent0de7fdc6139127391a6afdb810d992b99aedcc39 (diff)
cleanup
-rwxr-xr-xdata/rom.s2
-rw-r--r--include/variables.h20
-rw-r--r--src/field_select.c304
-rw-r--r--sym_ewram.txt2
4 files changed, 163 insertions, 165 deletions
diff --git a/data/rom.s b/data/rom.s
index 557f716..b8a476b 100755
--- a/data/rom.s
+++ b/data/rom.s
@@ -699,7 +699,7 @@ gUnknown_0805C8E0:: @ 0x0805C8E0
gUnknown_0805C8F6:: @ 0x0805C8F6
.incbin "baserom.gba", 0x5C8F6, 0x1C9CA
-gUnknown_080792C0:: @ 0x080792C0
+gFieldSelectStateFuncs:: @ 0x080792C0
.incbin "baserom.gba", 0x792C0, 0xC
gUnknown_080792CC:: @ 0x080792CC
diff --git a/include/variables.h b/include/variables.h
index 0f9c113..c1137b8 100644
--- a/include/variables.h
+++ b/include/variables.h
@@ -3,6 +3,8 @@
// Place all external variable declarations in this file
+extern struct {u16 unk0[5]; u16 unkA[5];} gUnknown_086A6B14;
+extern s8 gUnknown_02002850;
extern struct ToneData gUnknown_08532D6C[];
extern struct ToneData gUnknown_08533360[];
extern struct ToneData gUnknown_08533960[];
@@ -126,15 +128,19 @@ extern const s16 gEReaderAccessButtonSequence[];
//extern ? gMonHatchSpriteGroup3_Gfx;
//extern ? gMonHatchSpriteGroup4_Gfx;
//extern ? gMonHatchSpriteGroup5_Gfx;
-//extern ? gFieldSelectWindow_Gfx;
+extern struct Coord16 gUnknown_086A6B28[];
+extern const struct SpriteSet *const gUnknown_086A6AD4[];
+extern void (*gFieldSelectStateFuncs[])(void);
+extern u8 gUnknown_080A2400[];
+extern u8 gFieldSelectWindow_Gfx[];
//extern ? gUnknown_080A4000;
-//extern ? gFieldSelectFrameShadowTilemap;
-//extern ? gFieldSelectMiniFields_Gfx;
+extern u8 gFieldSelectFrameShadowTilemap[];
+extern u8 gFieldSelectMiniFields_Gfx[];
//extern ? gUnknown_080A8020;
-//extern ? gFieldSelectWindowTilemap;
-//extern ? gFieldSelectBGPals;
-//extern ? gFieldSelectSpritePals;
-//extern ? gFieldSelectSpriteGfx;
+extern u8 gFieldSelectWindowTilemap[];
+extern u16 gFieldSelectBGPals[];
+extern u16 gFieldSelectSpritePals[];
+extern u8 gFieldSelectSpriteGfx[];
extern const u8 gTitlescreenBgTilemap[];
extern const u16 gTitlescreenBg_Pals[];
extern const u8 gTitlescreenBg_Gfx[];
diff --git a/src/field_select.c b/src/field_select.c
index 381e047..40bfb2a 100644
--- a/src/field_select.c
+++ b/src/field_select.c
@@ -3,20 +3,14 @@
#include "m4a.h"
#include "titlescreen.h"
-extern void (*gUnknown_080792C0[])(void);
-
-extern u16 gFieldSelectBGPals[];
-extern u8 gFieldSelectWindow_Gfx[];
-extern u8 gFieldSelectMiniFields_Gfx[];
-extern u8 gUnknown_080A2400[];
-extern u8 gFieldSelectFrameShadowTilemap[];
-extern u8 gFieldSelectWindowTilemap[];
-extern u16 gFieldSelectSpritePals[];
-extern u8 gFieldSelectSpriteGfx[];
-extern s8 gUnknown_02002850;
+enum
+{
+ FIELD_RUBY,
+ FIELD_SAPPHIRE,
+};
-extern void sub_8F94(void);
-extern void sub_8C38(void);
+static void sub_8F94(void);
+static void sub_8C38(void);
struct FieldSelectData
{
@@ -24,34 +18,37 @@ struct FieldSelectData
u16 unk2;
u16 unk4;
u16 unk6;
- u16 unk8;
- u16 unkA;
+ u16 selectedField;
+ u16 state;
s16 unkC;
s16 unkE;
- u8 unk10;
+ u8 ballSpeed;
s16 unk12;
s8 unk14;
u16 unk16;
};
-extern struct FieldSelectData gUnknown_02002838;
+extern struct FieldSelectData gFieldSelectData;
void FieldSelectMain(void)
{
- gUnknown_080792C0[gMain.subState]();
+ gFieldSelectStateFuncs[gMain.subState]();
}
void LoadFieldSelectGraphics(void)
{
sub_438();
- REG_DISPCNT = 0x1080;
- REG_BG0CNT = 4;
- REG_DISPCNT |= 0x100;
- REG_BG1CNT = 0x105;
- REG_DISPCNT |= 0x200;
- REG_BG2CNT = 0x20A;
- REG_DISPCNT |= 0x400;
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_FORCED_BLANK | DISPCNT_OBJ_ON;
+
+ REG_BG0CNT = BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(0) | BGCNT_PRIORITY(0) | BGCNT_TXT256x256;
+ REG_DISPCNT |= DISPCNT_BG0_ON;
+
+ REG_BG1CNT = BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(1) | BGCNT_PRIORITY(1) | BGCNT_TXT256x256;
+ REG_DISPCNT |= DISPCNT_BG1_ON;
+
+ REG_BG2CNT = BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(2) | BGCNT_PRIORITY(2) | BGCNT_TXT256x256;
+ REG_DISPCNT |= DISPCNT_BG2_ON;
gMain.unk16 = REG_DISPCNT;
@@ -71,106 +68,104 @@ void LoadFieldSelectGraphics(void)
m4aSongNumStart(3);
}
-void sub_8C38(void)
+static void sub_8C38(void)
{
- gUnknown_02002838.unk0 = 2;
- gUnknown_02002838.unk2 = 3;
- gUnknown_02002838.unk4 = 0;
- gUnknown_02002838.unk6 = 1;
- gUnknown_02002838.unk8 = 0;
- gUnknown_02002838.unkA = 0;
- gUnknown_02002838.unkC = 0;
- gUnknown_02002838.unkE = 0;
- gUnknown_02002838.unk16 = 0;
- gUnknown_02002838.unk12 = 0;
- gUnknown_02002838.unk14 = 0;
+ gFieldSelectData.unk0 = 2;
+ gFieldSelectData.unk2 = 3;
+ gFieldSelectData.unk4 = 0;
+ gFieldSelectData.unk6 = 1;
+ gFieldSelectData.selectedField = FIELD_RUBY;
+ gFieldSelectData.state = 0;
+ gFieldSelectData.unkC = 0;
+ gFieldSelectData.unkE = 0;
+ gFieldSelectData.unk16 = 0;
+ gFieldSelectData.unk12 = 0;
+ gFieldSelectData.unk14 = 0;
- gUnknown_02002838.unk10 = gMain_saveData.unk142;
+ gFieldSelectData.ballSpeed = gMain_saveData.unk142;
gMain.unk4 = 0;
gUnknown_02002850 = 0;
}
-extern struct {u16 unk0[5]; u16 unkA[5];} gUnknown_086A6B14;
-
void sub_8C7C(void)
{
sub_8F94();
- if ((gMain.heldKeys & 0xF) == 0xF)
+ if ((gMain.heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON)) == (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON))
{
gUnknown_02002850 = 1;
- gUnknown_02002838.unk16 = 0;
+ gFieldSelectData.unk16 = 0;
gMain.subState++;
}
if (gUnknown_02002850 == 0)
{
- switch (gUnknown_02002838.unkA)
+ switch (gFieldSelectData.state)
{
case 0:
- if (gMain.newKeys & 0x20)
+ if (gMain.newKeys & DPAD_LEFT)
{
- if (gUnknown_02002838.unk8 == 1)
+ if (gFieldSelectData.selectedField == FIELD_SAPPHIRE)
{
m4aSongNumStart(0x6D);
- gUnknown_02002838.unk8 = 0;
- gUnknown_02002838.unk4 = 0;
- gUnknown_02002838.unk6 = 1;
- gUnknown_02002838.unkA = 1;
+ gFieldSelectData.selectedField = FIELD_RUBY;
+ gFieldSelectData.unk4 = 0;
+ gFieldSelectData.unk6 = 1;
+ gFieldSelectData.state = 1;
}
}
- else if (gMain.newKeys & 0x10)
+ else if (gMain.newKeys & DPAD_RIGHT)
{
- if (gUnknown_02002838.unk8 == 0)
+ if (gFieldSelectData.selectedField == FIELD_RUBY)
{
m4aSongNumStart(0x6D);
- gUnknown_02002838.unk8 = 1;
- gUnknown_02002838.unk4 = 1;
- gUnknown_02002838.unk6 = 0;
- gUnknown_02002838.unkA = 1;
+ gFieldSelectData.selectedField = FIELD_SAPPHIRE;
+ gFieldSelectData.unk4 = 1;
+ gFieldSelectData.unk6 = 0;
+ gFieldSelectData.state = 1;
}
}
- if (gMain.newKeys & 1)
+ if (gMain.newKeys & A_BUTTON)
{
m4aSongNumStart(0x65);
- gUnknown_02002838.unkA = 2;
- gUnknown_02002838.unk14 = 1;
- gUnknown_02002838.unkE = 0;
- if (gUnknown_02002838.unk8 == 0)
+ gFieldSelectData.state = 2;
+ gFieldSelectData.unk14 = 1;
+ gFieldSelectData.unkE = 0;
+ if (gFieldSelectData.selectedField == FIELD_RUBY)
{
- gUnknown_02002838.unk4 = 0;
- gUnknown_02002838.unk6 = 1;
- gUnknown_02002838.unk0 = 2;
- gUnknown_02002838.unk2 = 3;
- gUnknown_02002838.unkC = 0;
+ gFieldSelectData.unk4 = 0;
+ gFieldSelectData.unk6 = 1;
+ gFieldSelectData.unk0 = 2;
+ gFieldSelectData.unk2 = 3;
+ gFieldSelectData.unkC = 0;
}
else
{
- gUnknown_02002838.unk4 = 1;
- gUnknown_02002838.unk6 = 0;
- gUnknown_02002838.unk0 = 7;
- gUnknown_02002838.unk2 = 11;
- gUnknown_02002838.unkC = 0;
+ gFieldSelectData.unk4 = 1;
+ gFieldSelectData.unk6 = 0;
+ gFieldSelectData.unk0 = 7;
+ gFieldSelectData.unk2 = 11;
+ gFieldSelectData.unkC = 0;
}
}
- if (gMain.newKeys & 2)
+ if (gMain.newKeys & B_BUTTON)
{
m4aSongNumStart(0x66);
gMain.subState++;
- gUnknown_02002838.unk16 = 1;
- if (gUnknown_02002838.unk8 == 0)
+ gFieldSelectData.unk16 = 1;
+ if (gFieldSelectData.selectedField == FIELD_RUBY)
{
- gUnknown_02002838.unk4 = 0;
- gUnknown_02002838.unk6 = 1;
- gUnknown_02002838.unk0 = 2;
- gUnknown_02002838.unk2 = 3;
- gUnknown_02002838.unkC = 0;
+ gFieldSelectData.unk4 = 0;
+ gFieldSelectData.unk6 = 1;
+ gFieldSelectData.unk0 = 2;
+ gFieldSelectData.unk2 = 3;
+ gFieldSelectData.unkC = 0;
}
else
{
- gUnknown_02002838.unk4 = 1;
- gUnknown_02002838.unk6 = 0;
- gUnknown_02002838.unk0 = 7;
- gUnknown_02002838.unk2 = 11;
- gUnknown_02002838.unkC = 0;
+ gFieldSelectData.unk4 = 1;
+ gFieldSelectData.unk6 = 0;
+ gFieldSelectData.unk0 = 7;
+ gFieldSelectData.unk2 = 11;
+ gFieldSelectData.unkC = 0;
}
}
if (gMain.unk4 < 2)
@@ -178,106 +173,106 @@ void sub_8C7C(void)
else
gMain.unk6 = 1;
break;
- case 2:
- if (gMain.newKeys & 0x30)
+ case 2: // Choose ball speed
+ if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
{
m4aSongNumStart(0x67);
- gUnknown_02002838.unk10 = 1 - gUnknown_02002838.unk10;
+ gFieldSelectData.ballSpeed = 1 - gFieldSelectData.ballSpeed;
}
- if (gMain.newKeys & 1)
+ if (gMain.newKeys & A_BUTTON)
{
m4aSongNumStart(0x65);
- gUnknown_02002838.unkE = 0;
- gUnknown_02002838.unkC = 0;
- gMain_saveData.unk142 = gUnknown_02002838.unk10;
+ gFieldSelectData.unkE = 0;
+ gFieldSelectData.unkC = 0;
+ gMain_saveData.unk142 = gFieldSelectData.ballSpeed;
SaveFile_WriteToSram();
- gUnknown_02002838.unkA = 3;
+ gFieldSelectData.state = 3;
}
- if (gMain.newKeys & 2)
+ if (gMain.newKeys & B_BUTTON)
{
m4aSongNumStart(0x66);
- gUnknown_02002838.unk14 = 0;
- gUnknown_02002838.unkA = 0;
+ gFieldSelectData.unk14 = 0;
+ gFieldSelectData.state = 0;
}
- gUnknown_02002838.unkE++;
- if (gUnknown_02002838.unkE > 4)
+ gFieldSelectData.unkE++;
+ if (gFieldSelectData.unkE > 4)
{
- gUnknown_02002838.unkE = 0;
- gUnknown_02002838.unk12 = 1 - gUnknown_02002838.unk12;
+ gFieldSelectData.unkE = 0;
+ gFieldSelectData.unk12 = 1 - gFieldSelectData.unk12;
}
break;
case 1:
- if (gUnknown_02002838.unk8 == 0)
+ if (gFieldSelectData.selectedField == FIELD_RUBY)
{
- gUnknown_02002838.unk0 = gUnknown_086A6B14.unk0[4 - gUnknown_02002838.unkC];
- gUnknown_02002838.unk2 = gUnknown_086A6B14.unkA[4 - gUnknown_02002838.unkC];
+ gFieldSelectData.unk0 = gUnknown_086A6B14.unk0[4 - gFieldSelectData.unkC];
+ gFieldSelectData.unk2 = gUnknown_086A6B14.unkA[4 - gFieldSelectData.unkC];
}
else
{
- gUnknown_02002838.unk0 = gUnknown_086A6B14.unk0[gUnknown_02002838.unkC];
- gUnknown_02002838.unk2 = gUnknown_086A6B14.unkA[gUnknown_02002838.unkC];
+ gFieldSelectData.unk0 = gUnknown_086A6B14.unk0[gFieldSelectData.unkC];
+ gFieldSelectData.unk2 = gUnknown_086A6B14.unkA[gFieldSelectData.unkC];
}
if (!(gMain.unk4C & 1))
{
- if (gUnknown_02002838.unkC < 4)
+ if (gFieldSelectData.unkC < 4)
{
- gUnknown_02002838.unkC++;
+ gFieldSelectData.unkC++;
}
else
{
- gUnknown_02002838.unkC = 0;
- gUnknown_02002838.unkA = 0;
+ gFieldSelectData.unkC = 0;
+ gFieldSelectData.state = 0;
}
}
- if (gMain.newKeys & 0x20)
+ if (gMain.newKeys & DPAD_LEFT)
{
- if (gUnknown_02002838.unk8 == 1)
+ if (gFieldSelectData.selectedField == FIELD_SAPPHIRE)
{
m4aSongNumStart(0x6D);
- gUnknown_02002838.unk8 = 0;
- gUnknown_02002838.unk4 = 0;
- gUnknown_02002838.unk6 = 1;
- gUnknown_02002838.unk0 = 2;
- gUnknown_02002838.unk2 = 3;
- gUnknown_02002838.unkC = 0;
- gUnknown_02002838.unkA = 0;
+ gFieldSelectData.selectedField = FIELD_RUBY;
+ gFieldSelectData.unk4 = 0;
+ gFieldSelectData.unk6 = 1;
+ gFieldSelectData.unk0 = 2;
+ gFieldSelectData.unk2 = 3;
+ gFieldSelectData.unkC = 0;
+ gFieldSelectData.state = 0;
}
}
- else if (gMain.newKeys & 0x10)
+ else if (gMain.newKeys & DPAD_RIGHT)
{
- if (gUnknown_02002838.unk8 == 0)
+ if (gFieldSelectData.selectedField == FIELD_RUBY)
{
m4aSongNumStart(0x6D);
- gUnknown_02002838.unk8 = 1;
- gUnknown_02002838.unk4 = 1;
- gUnknown_02002838.unk6 = 0;
- gUnknown_02002838.unk0 = 7;
- gUnknown_02002838.unk2 = 11;
- gUnknown_02002838.unkC = 0;
- gUnknown_02002838.unkA = 0;
+ gFieldSelectData.selectedField = FIELD_SAPPHIRE;
+ gFieldSelectData.unk4 = 1;
+ gFieldSelectData.unk6 = 0;
+ gFieldSelectData.unk0 = 7;
+ gFieldSelectData.unk2 = 11;
+ gFieldSelectData.unkC = 0;
+ gFieldSelectData.state = 0;
}
}
break;
case 3:
- gUnknown_02002838.unkE++;
- if (gUnknown_02002838.unkE > 3)
+ gFieldSelectData.unkE++;
+ if (gFieldSelectData.unkE > 3)
{
- gUnknown_02002838.unkE = 0;
- if (gUnknown_02002838.unk8 == 0)
- gUnknown_02002838.unk4 = 1 - gUnknown_02002838.unk4;
+ gFieldSelectData.unkE = 0;
+ if (gFieldSelectData.selectedField == FIELD_RUBY)
+ gFieldSelectData.unk4 = 1 - gFieldSelectData.unk4;
else
- gUnknown_02002838.unk6 = 1 - gUnknown_02002838.unk6;
- gUnknown_02002838.unkC++;
- if (gUnknown_02002838.unkC > 5)
+ gFieldSelectData.unk6 = 1 - gFieldSelectData.unk6;
+ gFieldSelectData.unkC++;
+ if (gFieldSelectData.unkC > 5)
{
- gUnknown_02002838.unk16 = 2;
+ gFieldSelectData.unk16 = 2;
gMain.subState++;
}
}
break;
}
- gMain.unk4 = gUnknown_02002838.unk8;
- gMain.unk5 = gUnknown_02002838.unk8;
+ gMain.unk4 = gFieldSelectData.selectedField;
+ gMain.unk5 = gFieldSelectData.selectedField;
}
}
@@ -286,14 +281,11 @@ void sub_8F64(void)
sub_FE04(sub_8F94);
m4aMPlayAllStop();
sub_D10();
- gAutoDisplayTitlescreenMenu = 1;
- SetMainGameState(gUnknown_02002838.unk16);
+ gAutoDisplayTitlescreenMenu = TRUE;
+ SetMainGameState(gFieldSelectData.unk16);
}
-extern const struct SpriteSet *const gUnknown_086A6AD4[];
-extern struct Coord16 gUnknown_086A6B28[];
-
-void sub_8F94(void)
+static void sub_8F94(void)
{
struct SpriteGroup *r6;
struct SpriteGroup *r9;
@@ -303,26 +295,26 @@ void sub_8F94(void)
const struct SpriteSet *spriteSet;
int i;
- gMain.blendControl = 0x642;
- gMain.blendAlpha = 0x808;
+ gMain.blendControl = BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2;
+ gMain.blendAlpha = BLDALPHA_BLEND(8, 8);
REG_BLDCNT = gMain.blendControl;
REG_BLDALPHA = gMain.blendAlpha;
r6 = &gMain.spriteGroups[0];
r9 = &gMain.spriteGroups[1];
- sp0 = &gMain.spriteGroups[gUnknown_02002838.unk0];
- r10 = &gMain.spriteGroups[gUnknown_02002838.unk2];
- r8 = &gMain.spriteGroups[12 + gUnknown_02002838.unk10 * 2 + gUnknown_02002838.unk12];
+ sp0 = &gMain.spriteGroups[gFieldSelectData.unk0];
+ r10 = &gMain.spriteGroups[gFieldSelectData.unk2];
+ r8 = &gMain.spriteGroups[12 + gFieldSelectData.ballSpeed * 2 + gFieldSelectData.unk12];
- r6->available = gUnknown_02002838.unk4;
- r9->available = gUnknown_02002838.unk6;
+ r6->available = gFieldSelectData.unk4;
+ r9->available = gFieldSelectData.unk6;
sp0->available = 1;
r10->available = 1;
- r8->available = gUnknown_02002838.unk14;
+ r8->available = gFieldSelectData.unk14;
LoadSpriteSets(gUnknown_086A6AD4, 16, r6);
- if (gUnknown_02002838.unk4 == 1)
+ if (gFieldSelectData.unk4 == 1)
{
r6->baseX = 0x25;
r6->baseY = 0x18;
@@ -333,7 +325,7 @@ void sub_8F94(void)
}
}
- if (gUnknown_02002838.unk6 == 1)
+ if (gFieldSelectData.unk6 == 1)
{
r9->baseX = 0x8D;
r9->baseY = 0x18;
@@ -346,7 +338,7 @@ void sub_8F94(void)
sp0->baseX = 32;
sp0->baseY = 32;
- spriteSet = gUnknown_086A6AD4[gUnknown_02002838.unk0];
+ spriteSet = gUnknown_086A6AD4[gFieldSelectData.unk0];
for (i = 0; i < spriteSet->count; i++)
{
gOamBuffer[sp0->oam[i].oamId].objMode = 1;
@@ -356,7 +348,7 @@ void sub_8F94(void)
r10->baseX = 0x88;
r10->baseY = 32;
- spriteSet = gUnknown_086A6AD4[gUnknown_02002838.unk2];
+ spriteSet = gUnknown_086A6AD4[gFieldSelectData.unk2];
for (i = 0; i < spriteSet->count; i++)
{
gOamBuffer[r10->oam[i].oamId].objMode = 1;
@@ -366,8 +358,8 @@ void sub_8F94(void)
if (r8->available == 1)
{
- r8->baseX = gUnknown_086A6B28[gUnknown_02002838.unk8].x;
- r8->baseY = gUnknown_086A6B28[gUnknown_02002838.unk8].y;
+ r8->baseX = gUnknown_086A6B28[gFieldSelectData.selectedField].x;
+ r8->baseY = gUnknown_086A6B28[gFieldSelectData.selectedField].y;
for (i = 0; i < 5; i++)
{
gOamBuffer[r8->oam[i].oamId].objMode = 0;
diff --git a/sym_ewram.txt b/sym_ewram.txt
index aa1a5a7..f89b3d5 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -38,7 +38,7 @@ gUnknown_02002830: @ 0x02002830
.space 0x1
gUnknown_02002831: @ 0x02002831
.space 0x7
-gUnknown_02002838: @ 0x02002838
+gFieldSelectData: @ 0x02002838
.space 0x18
gUnknown_02002850: @ 0x02002850
.space 0x8