diff options
author | Cameron Hall <cameronghall@cox.net> | 2019-08-11 19:15:53 -0500 |
---|---|---|
committer | Cameron Hall <cameronghall@cox.net> | 2019-08-11 19:15:53 -0500 |
commit | d06a2d63c051f4f5eef247944e006ff93a9f3160 (patch) | |
tree | bdd49f0b063df840eda899cf71e40c2f20cad772 | |
parent | 0de7fdc6139127391a6afdb810d992b99aedcc39 (diff) |
cleanup
-rwxr-xr-x | data/rom.s | 2 | ||||
-rw-r--r-- | include/variables.h | 20 | ||||
-rw-r--r-- | src/field_select.c | 304 | ||||
-rw-r--r-- | sym_ewram.txt | 2 |
4 files changed, 163 insertions, 165 deletions
@@ -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 |