Merge pull request #80 from AsparagusEduardo/document4
Some checks failed
CI / build (push) Has been cancelled

Some documentation
This commit is contained in:
WhenGryphonsFly 2025-02-21 17:00:30 -06:00 committed by GitHub
commit 9136e33d6c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 234 additions and 207 deletions

View File

@ -1,4 +1,5 @@
.section .rodata
#include "constants/fields.h"
#include "constants/species.h"
@ field select palettes 0xA8840
@ -771,18 +772,18 @@ gUnknown_08079870:: @ 0x08079870
.incbin "baserom.gba", 0x79870, 0x20
gTitlescreenStateFuncs:: @ 0x08079890
.4byte LoadTitlescreenGraphics
.4byte TitleScreen1_WaitForStartButton
.4byte TitleScreen2_8010CF0
.4byte TitleScreen3_8010E00
.4byte TitleScreen4_MenuInputNoSavedGame
.4byte TitleScreen5_MenuInputSavedGame
.4byte TitleScreen6_AnimCloseMenu
.4byte TitleScreen7_8011020
.4byte TitleScreen8_8011228
.4byte TitleScreen9_8010D84
.4byte TitleScreen10_ExecMenuSelection
.4byte TitleScreen11_80114B4
.4byte LoadTitlescreenGraphics @ SUBSTATE_LOAD_GRAPHICS
.4byte TitleScreen1_WaitForStartButton @ SUBSTATE_WAIT_FOR_START_BUTTON
.4byte TitleScreen2_8010CF0 @ SUBSTATE_2
.4byte TitleScreen3_8010E00 @ SUBSTATE_3
.4byte TitleScreen4_MenuInputNoSavedGame @ SUBSTATE_MENU_INPUT_NO_SAVED_GAME
.4byte TitleScreen5_MenuInputSavedGame @ SUBSTATE_MENU_INPUT_SAVED_GAME
.4byte TitleScreen6_AnimCloseMenu @ SUBSTATE_ANIM_CLOSE_MENU
.4byte TitleScreen7_8011020 @ SUBSTATE_7
.4byte TitleScreen8_8011228 @ SUBSTATE_8
.4byte TitleScreen9_8010D84 @ SUBSTATE_9
.4byte TitleScreen10_ExecMenuSelection @ SUBSTATE_EXEC_MENU_SELECTION
.4byte TitleScreen11_80114B4 @ SUBSTATE_11
gUnknown_080798C0:: @ 0x080798C0
.incbin "baserom.gba", 0x798C0, 0x800
@ -2185,8 +2186,13 @@ gUnknown_086A4CD8:: @ 0x086A4CD8
.2byte 0x58, 0x5C
.2byte 0x98, 0x5C
gUnknown_086A4CF0:: @ 0x086A4CF0
.byte 2, 3, 7, 5, 4, 6
gBonusFieldMenuSelectionToField:: @ 0x086A4CF0
.byte FIELD_DUSCLOPS
.byte FIELD_KECLEON
.byte FIELD_SPHEAL
.byte FIELD_GROUDON
.byte FIELD_KYOGRE
.byte FIELD_RAYQUAZA
.align 2, 0
gUnknown_086A4CF8:: @ 0x086A4CF8

View File

@ -1,16 +1,13 @@
#ifndef GUARD_CONSTANTS_FIELDS_H
#define GUARD_CONSTANTS_FIELDS_H
enum
{
FIELD_RUBY,
FIELD_SAPPHIRE,
FIELD_2,
FIELD_3,
FIELD_4,
FIELD_5,
FIELD_6,
FIELD_7,
};
#define FIELD_RUBY 0
#define FIELD_SAPPHIRE 1
#define FIELD_DUSCLOPS 2
#define FIELD_KECLEON 3
#define FIELD_KYOGRE 4
#define FIELD_GROUDON 5
#define FIELD_RAYQUAZA 6
#define FIELD_SPHEAL 7
#endif // GUARD_CONSTANTS_FIELDS_H

View File

@ -50,7 +50,7 @@ void ResetVCountIntrFunc(void);
void TitlescreenMain(void);
void LoadTitlescreenGraphics(void);
void sub_10AC0(void);
void InitTitlescreenStates(void);
void TitleScreen1_WaitForStartButton(void);
void TitleScreen2_8010CF0(void);
void TitleScreen9_8010D84(void);

View File

@ -9,15 +9,15 @@ struct TitlescreenStruct
/*0x06*/ s8 unk6;
/*0x07*/ u8 unk7;
/*0x08*/ s8 unk8;
/*0x09*/ s8 unk9;
/*0x0A*/ s8 unkA;
/*0x09*/ s8 pressStartAndFlippersVisible;
/*0x0A*/ s8 unkA; // Menu options sprite ID?
/*0x0B*/ s8 unkB;
/*0x0C*/ s8 unkC;
/*0x0D*/ s8 unkD;
/*0x0E*/ s8 unkE;
/*0x0F*/ s8 unkF;
/*0x10*/ s8 unk10;
/*0x11*/ s8 unk11;
/*0x10*/ s8 unk10; // Delete save window sprite ID?
/*0x11*/ s8 deleteSaveWindowVisible;
/*0x12*/ s16 idleFadeoutCounter;
/*0x14*/ s16 idleFramesCounter;
};

View File

@ -5,14 +5,31 @@
#include "functions.h"
#include "titlescreen.h"
enum BonusFieldSelectStates
{
BONUS_FIELD_SELECT_STATE_CHOOSE_FIELD,
BONUS_FIELD_SELECT_STATE_BALL_SPEED,
BONUS_FIELD_SELECT_STATE_LOAD_FIELD,
};
enum BonusFieldSelection
{
FIELD_SELECT_DUSCLOPS,
FIELD_SELECT_KECLEON,
FIELD_SELECT_SPHEAL,
FIELD_SELECT_GROUDON,
FIELD_SELECT_KYOGRE,
FIELD_SELECT_RAYQUAZA,
};
EWRAM_DATA s8 gUnknown_0201A4B0 = 0;
EWRAM_DATA u8 gUnknown_0201A4C0 = 0;
EWRAM_DATA s16 gUnknown_0201A4F4 = 0;
EWRAM_DATA s8 gUnknown_0201A4F8 = 0;
EWRAM_DATA s16 gUnknown_0202A560 = 0;
EWRAM_DATA s8 gSelectedBonusField = 0;
EWRAM_DATA s16 gBonusFieldSelectTimer = 0;
EWRAM_DATA s16 gUnknown_0202BE1C = 0;
EWRAM_DATA s8 gUnknown_0202BED0 = 0;
EWRAM_DATA s8 gUnknown_0202BEE4 = 0;
EWRAM_DATA s8 gBonusFieldSelectState = BONUS_FIELD_SELECT_STATE_CHOOSE_FIELD;
EWRAM_DATA s8 gBonusFieldSelectNextMainState = STATE_INTRO;
EWRAM_DATA u8 gUnknown_0202BEE8 = 0;
extern void (*const gBonusFieldSelectStateFuncs[])(void);
@ -20,7 +37,7 @@ extern void (*const gBonusFieldSelectStateFuncs[])(void);
extern const struct SpriteSet *const gUnknown_086A4C80[16];
extern const struct UCoords16 gUnknown_086A4CC0[];
extern const struct UCoords16 gUnknown_086A4CD8[];
extern const u8 gUnknown_086A4CF0[];
extern const u8 gBonusFieldMenuSelectionToField[];
extern const u8 gUnknown_0807AAE0[];
extern const u8 gUnknown_0807B2E0[];
@ -69,70 +86,70 @@ void LoadBonusFieldSelectGraphics(void)
void sub_2710(void)
{
gUnknown_0201A4F8 = 0;
gUnknown_0202BED0 = 0;
gUnknown_0202A560 = 0;
gSelectedBonusField = FIELD_SELECT_DUSCLOPS;
gBonusFieldSelectState = BONUS_FIELD_SELECT_STATE_CHOOSE_FIELD;
gBonusFieldSelectTimer = 0;
gUnknown_0202BE1C = 0;
gUnknown_0202BEE8 = 0;
gUnknown_0201A4F4 = 0;
gUnknown_0201A4B0 = 0;
gUnknown_0202BEE4 = 0;
gBonusFieldSelectNextMainState = STATE_INTRO;
gUnknown_0201A4C0 = gMain_saveData.ballSpeed;
}
void sub_2768(void)
{
sub_29C8();
switch (gUnknown_0202BED0)
switch (gBonusFieldSelectState)
{
case 0:
case BONUS_FIELD_SELECT_STATE_CHOOSE_FIELD:
if (JOY_NEW(DPAD_LEFT))
{
if (gUnknown_0201A4F8 != 0 && gUnknown_0201A4F8 != 3)
if (gSelectedBonusField != FIELD_SELECT_DUSCLOPS && gSelectedBonusField != FIELD_SELECT_GROUDON)
{
m4aSongNumStart(SE_UNKNOWN_0x6D);
gUnknown_0201A4F8--;
gSelectedBonusField--;
}
}
else if (JOY_NEW(DPAD_RIGHT))
{
if (gUnknown_0201A4F8 != 2 && gUnknown_0201A4F8 != 5)
if (gSelectedBonusField != FIELD_SELECT_SPHEAL && gSelectedBonusField != FIELD_SELECT_RAYQUAZA)
{
m4aSongNumStart(SE_UNKNOWN_0x6D);
gUnknown_0201A4F8++;
gSelectedBonusField++;
}
}
if (JOY_NEW(DPAD_UP))
{
if (gUnknown_0201A4F8 > 2)
if (gSelectedBonusField > FIELD_SELECT_SPHEAL)
{
m4aSongNumStart(SE_UNKNOWN_0x6D);
gUnknown_0201A4F8 -= 3;
gSelectedBonusField -= 3;
}
}
else if (JOY_NEW(DPAD_DOWN))
{
if (gUnknown_0201A4F8 < 3)
if (gSelectedBonusField < FIELD_SELECT_GROUDON)
{
m4aSongNumStart(SE_UNKNOWN_0x6D);
gUnknown_0201A4F8 += 3;
gSelectedBonusField += 3;
}
}
if (JOY_NEW(A_BUTTON))
{
m4aSongNumStart(SE_UNKNOWN_0x65);
gUnknown_0202BED0 = 1;
gBonusFieldSelectState = BONUS_FIELD_SELECT_STATE_BALL_SPEED;
gUnknown_0201A4B0 = 1;
gUnknown_0202A560 = 0;
gBonusFieldSelectTimer = 0;
}
if (JOY_NEW(B_BUTTON))
{
m4aSongNumStart(SE_UNKNOWN_0x66);
gUnknown_0202BEE4 = 1;
gBonusFieldSelectNextMainState = STATE_TITLE;
gMain.subState++;
}
break;
case 1:
case BONUS_FIELD_SELECT_STATE_BALL_SPEED:
if (JOY_NEW(DPAD_LEFT | DPAD_RIGHT))
{
m4aSongNumStart(SE_SELECT);
@ -141,38 +158,38 @@ void sub_2768(void)
if (JOY_NEW(A_BUTTON))
{
m4aSongNumStart(SE_UNKNOWN_0x65);
gUnknown_0202A560 = 0;
gBonusFieldSelectTimer = 0;
gUnknown_0202BE1C = 0;
gMain.saveData.ballSpeed = gUnknown_0201A4C0;
SaveFile_WriteToSram();
gUnknown_0202BED0 = 2;
gBonusFieldSelectState = BONUS_FIELD_SELECT_STATE_LOAD_FIELD;
}
if (JOY_NEW(B_BUTTON))
{
m4aSongNumStart(SE_UNKNOWN_0x66);
gUnknown_0201A4B0 = 0;
gUnknown_0202BED0 = 0;
gBonusFieldSelectState = BONUS_FIELD_SELECT_STATE_CHOOSE_FIELD;
}
gUnknown_0202A560++;
if (gUnknown_0202A560 > 4)
gBonusFieldSelectTimer++;
if (gBonusFieldSelectTimer > 4)
{
gUnknown_0202A560 = 0;
gBonusFieldSelectTimer = 0;
gUnknown_0201A4F4 = 1 - gUnknown_0201A4F4;
}
break;
case 2:
gUnknown_0202A560++;
if (gUnknown_0202A560 > 5)
case BONUS_FIELD_SELECT_STATE_LOAD_FIELD:
gBonusFieldSelectTimer++;
if (gBonusFieldSelectTimer > 5)
{
gUnknown_0202A560 = 0;
gBonusFieldSelectTimer = 0;
gUnknown_0202BEE8 = 2 - gUnknown_0202BEE8;
gUnknown_0202BE1C++;
if (gUnknown_0202BE1C > 5)
{
gMain.unkD = 0;
gMain.unk5 = gMain.selectedField = gUnknown_086A4CF0[gUnknown_0201A4F8];
gMain.unk5 = gMain.selectedField = gBonusFieldMenuSelectionToField[gSelectedBonusField];
gMain.unk6 = 1;
gUnknown_0202BEE4 = 2;
gBonusFieldSelectNextMainState = STATE_GAME_MAIN;
gMain.subState++;
}
}
@ -186,7 +203,7 @@ void sub_2990(void)
m4aMPlayAllStop();
sub_0D10();
gAutoDisplayTitlescreenMenu = 1;
SetMainGameState(gUnknown_0202BEE4);
SetMainGameState(gBonusFieldSelectNextMainState);
}
void sub_29C8(void)
@ -206,13 +223,13 @@ void sub_29C8(void)
{
sgptrs[i] = &gMain.spriteGroups[i];
}
r10 = &gMain.spriteGroups[6 + gUnknown_0201A4F8];
r10 = &gMain.spriteGroups[6 + gSelectedBonusField];
r8 = &gMain.spriteGroups[12 + gUnknown_0201A4C0 * 2 + gUnknown_0201A4F4];
for (j = 0; j < 6; j++)
{
sgptrs[j]->available = 1;
}
sgptrs[gUnknown_0201A4F8]->available = 0;
sgptrs[gSelectedBonusField]->available = 0;
r10->available = 1;
r8->available = gUnknown_0201A4B0;
LoadSpriteSets(gUnknown_086A4C80, 16, gUnknown_0200B3B8);
@ -243,8 +260,8 @@ void sub_29C8(void)
}
if (r8->available == 1)
{
r8->baseX = gUnknown_086A4CD8[gUnknown_0201A4F8].x;
r8->baseY = gUnknown_086A4CD8[gUnknown_0201A4F8].y;
r8->baseX = gUnknown_086A4CD8[gSelectedBonusField].x;
r8->baseY = gUnknown_086A4CD8[gSelectedBonusField].y;
for (j = 0; j < 5; j++)
{
simple = &r8->oam[j];

View File

@ -1,10 +1,11 @@
#include "global.h"
#include "constants/bg_music.h"
#include "functions.h"
#include "link.h"
#include "main.h"
#include "m4a.h"
#include "variables.h"
#include "constants/bg_music.h"
#include "constants/fields.h"
extern StateFunc gHighScoresStateFuncs[15];
extern StateFunc gIdleHighScoresStateFuncs[15];
@ -141,7 +142,7 @@ void sub_CFD4(void)
{
gUnknown_02002858.unk0 = gMain.unk5C;
gUnknown_02002858.unk4 = gMain.unk58;
if(gMain.selectedField == 1)
if(gMain.selectedField == FIELD_SAPPHIRE)
{
gUnknown_02002858.unkB = 1;
gUnknown_02002882 = 0xF0;
@ -748,7 +749,7 @@ void sub_DEB4(void)
gUnknown_02002858.unkB = 0;
gUnknown_02002882 = 0;
gUnknown_02002880 = -1;
gUnknown_02002858.unk24 = 0;
gUnknown_02002858.unk24 = STATE_INTRO;
gUnknown_02002858.unkA = 0;
gMain.bgOffsets[3].xOffset = gUnknown_02002882;
gMain.bgOffsets[2].xOffset = gUnknown_02002882;
@ -795,7 +796,7 @@ void sub_DF68(void)
if (gUnknown_02002858.unk8 > 600)
{
gUnknown_02002858.unk8 = 0;
gUnknown_02002858.unk24 = 0;
gUnknown_02002858.unk24 = STATE_INTRO;
gMain.subState++;
}
break;
@ -807,7 +808,7 @@ void sub_DF68(void)
if (JOY_NEW(START_BUTTON | A_BUTTON | B_BUTTON))
{
m4aSongNumStart(SE_UNKNOWN_0x66);
gUnknown_02002858.unk24 = 1;
gUnknown_02002858.unk24 = STATE_TITLE;
gMain.subState++;
}
}

View File

@ -170,11 +170,11 @@ void sub_49ED4(void)
gUnknown_086B085C[gMain.unk6]();
if (gMain.selectedField == FIELD_RUBY || gMain.selectedField == FIELD_SAPPHIRE)
sub_1D4D0();
else if (gMain.selectedField == FIELD_2)
else if (gMain.selectedField == FIELD_DUSCLOPS)
sub_356A0();
else if (gMain.selectedField == FIELD_4)
else if (gMain.selectedField == FIELD_KYOGRE)
sub_3ADA0();
else if (gMain.selectedField == FIELD_5)
else if (gMain.selectedField == FIELD_GROUDON)
sub_3E5D0();
break;
case 1:
@ -273,7 +273,7 @@ static void sub_4A270(void)
REG_BG0CNT = BGCNT_TXT256x512 | BGCNT_SCREENBASE(4) | BGCNT_CHARBASE(1) | BGCNT_PRIORITY(0);
REG_DISPCNT |= DISPCNT_BG0_ON;
break;
case FIELD_2:
case FIELD_DUSCLOPS:
REG_BG3CNT = BGCNT_TXT256x256 | BGCNT_SCREENBASE(0) | BGCNT_CHARBASE(2) | BGCNT_PRIORITY(3);
REG_DISPCNT |= DISPCNT_BG3_ON;
REG_BG2CNT = BGCNT_TXT256x256 | BGCNT_SCREENBASE(1) | BGCNT_CHARBASE(2) | BGCNT_PRIORITY(2);
@ -283,7 +283,7 @@ static void sub_4A270(void)
REG_BG0CNT = BGCNT_TXT256x512 | BGCNT_SCREENBASE(4) | BGCNT_CHARBASE(1) | BGCNT_PRIORITY(0);
REG_DISPCNT |= DISPCNT_BG0_ON;
break;
case FIELD_3:
case FIELD_KECLEON:
REG_BG3CNT = BGCNT_TXT256x256 | BGCNT_SCREENBASE(0) | BGCNT_CHARBASE(2) | BGCNT_PRIORITY(3);
REG_DISPCNT |= DISPCNT_BG3_ON;
REG_BG2CNT = BGCNT_TXT256x256 | BGCNT_SCREENBASE(1) | BGCNT_CHARBASE(2) | BGCNT_PRIORITY(2);
@ -293,7 +293,7 @@ static void sub_4A270(void)
REG_BG0CNT = BGCNT_TXT256x512 | BGCNT_SCREENBASE(4) | BGCNT_CHARBASE(1) | BGCNT_PRIORITY(0);
REG_DISPCNT |= DISPCNT_BG0_ON;
break;
case FIELD_4:
case FIELD_KYOGRE:
REG_BG3CNT = BGCNT_TXT256x256 | BGCNT_SCREENBASE(0) | BGCNT_CHARBASE(2) | BGCNT_PRIORITY(3);
REG_DISPCNT |= DISPCNT_BG3_ON;
REG_BG2CNT = BGCNT_TXT256x256 | BGCNT_SCREENBASE(1) | BGCNT_CHARBASE(2) | BGCNT_PRIORITY(2);
@ -301,7 +301,7 @@ static void sub_4A270(void)
REG_BG0CNT = BGCNT_TXT256x512 | BGCNT_SCREENBASE(4) | BGCNT_CHARBASE(1) | BGCNT_PRIORITY(0);
REG_DISPCNT |= DISPCNT_BG0_ON;
break;
case FIELD_5:
case FIELD_GROUDON:
REG_BG3CNT = BGCNT_TXT256x256 | BGCNT_SCREENBASE(0) | BGCNT_CHARBASE(2) | BGCNT_PRIORITY(3);
REG_DISPCNT |= DISPCNT_BG3_ON;
REG_BG2CNT = BGCNT_TXT256x256 | BGCNT_SCREENBASE(1) | BGCNT_CHARBASE(2) | BGCNT_PRIORITY(2);
@ -309,7 +309,7 @@ static void sub_4A270(void)
REG_BG0CNT = BGCNT_TXT256x512 | BGCNT_SCREENBASE(4) | BGCNT_CHARBASE(1) | BGCNT_PRIORITY(0);
REG_DISPCNT |= DISPCNT_BG0_ON;
break;
case FIELD_6:
case FIELD_RAYQUAZA:
REG_BG3CNT = BGCNT_TXT256x512 | BGCNT_SCREENBASE(0) | BGCNT_CHARBASE(2) | BGCNT_PRIORITY(3);
REG_DISPCNT |= DISPCNT_BG3_ON;
REG_BG2CNT = BGCNT_TXT256x512 | BGCNT_SCREENBASE(2) | BGCNT_CHARBASE(2) | BGCNT_PRIORITY(2);
@ -319,7 +319,7 @@ static void sub_4A270(void)
REG_BG0CNT = BGCNT_TXT256x512 | BGCNT_SCREENBASE(4) | BGCNT_CHARBASE(1) | BGCNT_PRIORITY(0);
REG_DISPCNT |= DISPCNT_BG0_ON;
break;
case FIELD_7:
case FIELD_SPHEAL:
REG_BG3CNT = BGCNT_TXT256x256 | BGCNT_SCREENBASE(0) | BGCNT_CHARBASE(2) | BGCNT_PRIORITY(3);
REG_DISPCNT |= DISPCNT_BG3_ON;
REG_BG2CNT = BGCNT_TXT256x256 | BGCNT_SCREENBASE(1) | BGCNT_CHARBASE(2) | BGCNT_PRIORITY(2);
@ -496,7 +496,7 @@ void sub_4A90C(void)
gUnknown_020028D8[5] = gUnknown_086B077C[13];
gMain.unk44 = &gUnknown_086B02CC[gMain.selectedField * 2];
break;
case FIELD_2:
case FIELD_DUSCLOPS:
gUnknown_020028D8[3] = gUnknown_086B077C[5];
gUnknown_020028D8[7] = gUnknown_086B077C[17];
gUnknown_020028D8[0] = gUnknown_086B077C[21];
@ -505,7 +505,7 @@ void sub_4A90C(void)
gUnknown_020028D8[5] = gUnknown_086B077C[14];
gMain.unk44 = &gUnknown_086B03BC[gMain.selectedField];
break;
case FIELD_3:
case FIELD_KECLEON:
gUnknown_020028D8[3] = gUnknown_086B077C[6];
gUnknown_020028D8[7] = gUnknown_086B077C[17];
gUnknown_020028D8[0] = gUnknown_086B077C[22];
@ -514,7 +514,7 @@ void sub_4A90C(void)
gUnknown_020028D8[5] = gUnknown_086B077C[14];
gMain.unk44 = &gUnknown_086B03BC[gMain.selectedField];
break;
case FIELD_4:
case FIELD_KYOGRE:
gUnknown_020028D8[3] = gUnknown_086B077C[7];
gUnknown_020028D8[7] = gUnknown_086B077C[17];
gUnknown_020028D8[0] = gUnknown_086B077C[23];
@ -523,7 +523,7 @@ void sub_4A90C(void)
gUnknown_020028D8[5] = gUnknown_086B077C[14];
gMain.unk44 = &gUnknown_086B03BC[gMain.selectedField];
break;
case FIELD_5:
case FIELD_GROUDON:
gUnknown_020028D8[3] = gUnknown_086B077C[8];
gUnknown_020028D8[7] = gUnknown_086B077C[17];
gUnknown_020028D8[0] = gUnknown_086B077C[24];
@ -532,7 +532,7 @@ void sub_4A90C(void)
gUnknown_020028D8[5] = gUnknown_086B077C[14];
gMain.unk44 = &gUnknown_086B03BC[gMain.selectedField];
break;
case FIELD_6:
case FIELD_RAYQUAZA:
gUnknown_020028D8[3] = gUnknown_086B077C[9];
gUnknown_020028D8[7] = gUnknown_086B077C[17];
gUnknown_020028D8[0] = gUnknown_086B077C[25];
@ -541,7 +541,7 @@ void sub_4A90C(void)
gUnknown_020028D8[5] = gUnknown_086B077C[14];
gMain.unk44 = &gUnknown_086B03BC[gMain.selectedField];
break;
case FIELD_7:
case FIELD_SPHEAL:
gUnknown_020028D8[3] = gUnknown_086B077C[10];
gUnknown_020028D8[7] = gUnknown_086B077C[17];
gUnknown_020028D8[0] = gUnknown_086B077C[26];
@ -573,15 +573,15 @@ void sub_4AAD8(void)
sub_1D4D0();
sub_31BE8(0);
}
else if (gMain.selectedField == FIELD_2)
else if (gMain.selectedField == FIELD_DUSCLOPS)
{
sub_356A0();
}
else if (gMain.selectedField == FIELD_4)
else if (gMain.selectedField == FIELD_KYOGRE)
{
sub_3ADA0();
}
else if (gMain.selectedField == FIELD_5)
else if (gMain.selectedField == FIELD_GROUDON)
{
sub_3E5D0();
}
@ -1168,22 +1168,22 @@ void sub_4B678(u16 arg0)
case FIELD_SAPPHIRE:
sub_50AD4();
break;
case FIELD_2:
case FIELD_DUSCLOPS:
sub_50D48();
break;
case FIELD_3:
case FIELD_KECLEON:
sub_50DE0();
break;
case FIELD_4:
case FIELD_KYOGRE:
sub_50F04();
break;
case FIELD_5:
case FIELD_GROUDON:
sub_50FD4();
break;
case FIELD_6:
case FIELD_RAYQUAZA:
sub_51090();
break;
case FIELD_7:
case FIELD_SPHEAL:
sub_51150();
break;
}
@ -1215,27 +1215,27 @@ void sub_4BC34(void)
sub_4C290();
sub_4CA18();
break;
case FIELD_2:
case FIELD_DUSCLOPS:
nullsub_18();
sub_4CAE8();
break;
case FIELD_3:
case FIELD_KECLEON:
nullsub_18();
sub_4CB0C();
break;
case FIELD_4:
case FIELD_KYOGRE:
nullsub_18();
sub_4CB30();
break;
case FIELD_5:
case FIELD_GROUDON:
nullsub_18();
sub_4CBB4();
break;
case FIELD_6:
case FIELD_RAYQUAZA:
nullsub_18();
sub_4CC58();
break;
case FIELD_7:
case FIELD_SPHEAL:
nullsub_18();
sub_4CD60();
break;

View File

@ -17,12 +17,18 @@ static void sub_11640(void);
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
SUBSTATE_LOAD_GRAPHICS,
SUBSTATE_WAIT_FOR_START_BUTTON,
SUBSTATE_2,
SUBSTATE_3,
SUBSTATE_MENU_INPUT_NO_SAVED_GAME,
SUBSTATE_MENU_INPUT_SAVED_GAME,
SUBSTATE_ANIM_CLOSE_MENU,
SUBSTATE_7,
SUBSTATE_8,
SUBSTATE_9,
SUBSTATE_EXEC_MENU_SELECTION,
SUBSTATE_11,
};
void TitlescreenMain(void)
@ -60,15 +66,15 @@ void LoadTitlescreenGraphics(void)
DmaCopy16(3, gOptionsSprites_Gfx, (void *)OBJ_VRAM0 + 0x7000, 0x400);
}
sub_10AC0();
InitTitlescreenStates();
autoDisplayMenu = gAutoDisplayTitlescreenMenu;
if (autoDisplayMenu == 1)
{
gUnknown_202BE24 = 0;
gTitlescreen.unk9 = 0;
gTitlescreen.pressStartAndFlippersVisible = FALSE;
gTitlescreen.unkB = autoDisplayMenu;
gMain.subState = 3;
gMain.subState = SUBSTATE_3;
sub_0CBC();
sub_FD5C(NULL);
}
@ -82,7 +88,7 @@ void LoadTitlescreenGraphics(void)
m4aSongNumStart(MUS_TITLE);
}
void sub_10AC0(void)
void InitTitlescreenStates(void)
{
int i;
@ -91,8 +97,8 @@ void sub_10AC0(void)
gTitlescreen.unk6 = 0;
gTitlescreen.unk8 = 0;
gTitlescreen.unk10 = 4;
gTitlescreen.unk9 = 1;
gTitlescreen.unk11 = 0;
gTitlescreen.pressStartAndFlippersVisible = TRUE;
gTitlescreen.deleteSaveWindowVisible = FALSE;
gTitlescreen.unkA = 6;
gTitlescreen.unkC = 0;
gTitlescreen.unkE = 3;
@ -142,7 +148,7 @@ void TitleScreen1_WaitForStartButton(void)
{
gUnknown_020028A4 = 1;
gTitlescreen.unk6 = 9;
gMain.subState = 11;
gMain.subState = SUBSTATE_11;
}
}
else
@ -168,7 +174,7 @@ void TitleScreen1_WaitForStartButton(void)
m4aSongNumStart(SE_UNKNOWN_0x65);
gTitlescreen.animTimer = 0;
gTitlescreen.unk2 = 0;
gMain.subState = 2;
gMain.subState = SUBSTATE_2;
}
sub_114FC();
@ -187,7 +193,7 @@ void TitleScreen1_WaitForStartButton(void)
{
gTitlescreen.idleFramesCounter = 0;
gTitlescreen.unk6 = 7;
gMain.subState = 11;
gMain.subState = SUBSTATE_11;
}
}
}
@ -201,7 +207,7 @@ void TitleScreen2_8010CF0(void)
{
gUnknown_020028A4 = 1;
gTitlescreen.unk6 = 9;
gMain.subState = 11;
gMain.subState = SUBSTATE_11;
}
if (!gUnknown_020028A4)
@ -215,9 +221,9 @@ void TitleScreen2_8010CF0(void)
{
gTitlescreen.unk2 = 0;
gUnknown_202BE24 = 0;
gTitlescreen.unk9 = 0;
gTitlescreen.pressStartAndFlippersVisible = FALSE;
gTitlescreen.unkB = 1;
gMain.subState = 3;
gMain.subState = SUBSTATE_3;
}
}
}
@ -248,7 +254,7 @@ void TitleScreen9_8010D84(void)
else if (JOY_NEW(B_BUTTON))
{
m4aSongNumStart(SE_UNKNOWN_0x66);
gTitlescreen.unk11 = 0;
gTitlescreen.deleteSaveWindowVisible = FALSE;
gMain.subState = SUBSTATE_WAIT_FOR_START_BUTTON;
}
}
@ -262,47 +268,47 @@ void TitleScreen3_8010E00(void)
{
gUnknown_020028A4 = 1;
gTitlescreen.unk6 = 9;
gMain.subState = 11;
gMain.subState = SUBSTATE_11;
}
if (gUnknown_020028A4)
return;
if (!gUnknown_020028A4)
if (!gTitlescreen.unk7)
{
if (!gTitlescreen.unk7)
gTitlescreen.animTimer++;
if (gTitlescreen.animTimer >= gUnknown_086A9748[gTitlescreen.unk2])
{
gTitlescreen.animTimer++;
if (gTitlescreen.animTimer >= gUnknown_086A9748[gTitlescreen.unk2])
gTitlescreen.animTimer = 0;
gUnknown_0201C190[6] = gUnknown_086A9714[gTitlescreen.unk2];
if (++gTitlescreen.unk2 > 11)
{
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 = SUBSTATE_MENU_INPUT_NO_SAVED_GAME;
}
gTitlescreen.unk2 = 0;
gTitlescreen.unkD = 1;
gTitlescreen.unkF = 1;
gMain.subState = SUBSTATE_MENU_INPUT_NO_SAVED_GAME;
}
sub_1175C();
}
else
sub_1175C();
}
else
{
gTitlescreen.animTimer++;
if (gTitlescreen.animTimer >= gUnknown_086A9748[gTitlescreen.unk2])
{
gTitlescreen.animTimer++;
if (gTitlescreen.animTimer >= gUnknown_086A9748[gTitlescreen.unk2])
gTitlescreen.animTimer = 0;
gUnknown_0202BE00[6] = gUnknown_086A9778[gTitlescreen.unk2];
if (++gTitlescreen.unk2 > 11)
{
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 = SUBSTATE_MENU_INPUT_SAVED_GAME;
}
gTitlescreen.unk2 = 0;
gTitlescreen.unkD = 1;
gTitlescreen.unkF = 1;
gMain.subState = SUBSTATE_MENU_INPUT_SAVED_GAME;
}
sub_11968();
}
sub_11968();
}
}
@ -346,7 +352,7 @@ void TitleScreen4_MenuInputNoSavedGame(void)
m4aSongNumStart(SE_UNKNOWN_0x65);
gTitlescreen.animTimer = 0;
gTitlescreen.unk2 = 0;
gMain.subState = 7;
gMain.subState = SUBSTATE_7;
}
else if (JOY_NEW(B_BUTTON))
{
@ -370,7 +376,7 @@ void TitleScreen7_8011020(void)
{
gUnknown_020028A4 = 1;
gTitlescreen.unk6 = 9;
gMain.subState = 11;
gMain.subState = SUBSTATE_11;
}
if (!gUnknown_020028A4)
@ -445,7 +451,7 @@ void TitleScreen5_MenuInputSavedGame(void)
m4aSongNumStart(SE_UNKNOWN_0x65);
gTitlescreen.animTimer = 0;
gTitlescreen.unk2 = 0;
gMain.subState = 8;
gMain.subState = SUBSTATE_8;
}
else if (JOY_NEW(B_BUTTON))
{
@ -469,7 +475,7 @@ void TitleScreen8_8011228(void)
{
gUnknown_020028A4 = 1;
gTitlescreen.unk6 = 9;
gMain.subState = 11;
gMain.subState = SUBSTATE_11;
}
if (!gUnknown_020028A4)
@ -516,53 +522,53 @@ void TitleScreen6_AnimCloseMenu(void)
{
gUnknown_020028A4 = 1;
gTitlescreen.unk6 = 9;
gMain.subState = 11;
gMain.subState = SUBSTATE_11;
}
if (!gUnknown_020028A4)
if (gUnknown_020028A4)
return;
if (!gTitlescreen.unk7)
{
if (!gTitlescreen.unk7)
gTitlescreen.animTimer++;
if (gTitlescreen.animTimer >= gUnknown_086A9748[gTitlescreen.unk2])
{
gTitlescreen.animTimer++;
if (gTitlescreen.animTimer >= gUnknown_086A9748[gTitlescreen.unk2])
gTitlescreen.animTimer = 0;
if (--gTitlescreen.unk2 < 0)
{
gTitlescreen.animTimer = 0;
if (--gTitlescreen.unk2 < 0)
{
gTitlescreen.unk2 = 0;
gTitlescreen.menuCursorIndex = 0;
gUnknown_202BE24 = 1;
gTitlescreen.unk9 = 1;
gTitlescreen.unkB = 0;
gMain.subState = SUBSTATE_WAIT_FOR_START_BUTTON;
}
gUnknown_0201C190[6] = gUnknown_086A9714[gTitlescreen.unk2];
gTitlescreen.unk2 = 0;
gTitlescreen.menuCursorIndex = 0;
gUnknown_202BE24 = 1;
gTitlescreen.pressStartAndFlippersVisible = TRUE;
gTitlescreen.unkB = 0;
gMain.subState = SUBSTATE_WAIT_FOR_START_BUTTON;
}
sub_1175C();
gUnknown_0201C190[6] = gUnknown_086A9714[gTitlescreen.unk2];
}
else
{
gTitlescreen.animTimer++;
if (gTitlescreen.animTimer >= gUnknown_086A9748[gTitlescreen.unk2])
{
gTitlescreen.animTimer = 0;
if (--gTitlescreen.unk2 < 0)
{
gTitlescreen.unk2 = 0;
gTitlescreen.menuCursorIndex = 1;
gUnknown_202BE24 = 1;
gTitlescreen.unk9 = 1;
gTitlescreen.unkB = 0;
gMain.subState = SUBSTATE_WAIT_FOR_START_BUTTON;
}
gUnknown_0202BE00[6] = gUnknown_086A9778[gTitlescreen.unk2];
sub_1175C();
}
else
{
gTitlescreen.animTimer++;
if (gTitlescreen.animTimer >= gUnknown_086A9748[gTitlescreen.unk2])
{
gTitlescreen.animTimer = 0;
if (--gTitlescreen.unk2 < 0)
{
gTitlescreen.unk2 = 0;
gTitlescreen.menuCursorIndex = 1;
gUnknown_202BE24 = 1;
gTitlescreen.pressStartAndFlippersVisible = TRUE;
gTitlescreen.unkB = 0;
gMain.subState = SUBSTATE_WAIT_FOR_START_BUTTON;
}
sub_11968();
gUnknown_0202BE00[6] = gUnknown_086A9778[gTitlescreen.unk2];
}
sub_11968();
}
}
@ -576,7 +582,7 @@ void TitleScreen10_ExecMenuSelection(void)
m4aMPlayAllStop();
sub_0D10();
if (gUnknown_086A964C[gTitlescreen.unk6] == 8)
if (gUnknown_086A964C[gTitlescreen.unk6] == STATE_SCORES_MAIN)
gUnknown_0202C588 = 0;
else
gUnknown_0202C588 = 1;
@ -608,8 +614,8 @@ static void sub_114FC(void)
gEraseSaveDataAccessStep = 0;
gEraseSaveDataAccessCounter = 0;
m4aSongNumStart(SE_UNKNOWN_0x68);
gTitlescreen.unk11 = 1;
gMain.subState = 9;
gTitlescreen.deleteSaveWindowVisible = TRUE;
gMain.subState = SUBSTATE_9;
}
}
}
@ -639,7 +645,7 @@ static void sub_1157C(void)
m4aSongNumStart(SE_UNKNOWN_0x65);
gTitlescreen.unk6 = 5;
if (gMain.subState == SUBSTATE_WAIT_FOR_START_BUTTON)
gMain.subState = 11;
gMain.subState = SUBSTATE_11;
else
gMain.subState = SUBSTATE_EXEC_MENU_SELECTION;
}
@ -668,12 +674,12 @@ static void sub_11640(void)
struct SpriteGroup *group1 = &gUnknown_0200B3B8[gTitlescreen.unk8];
struct SpriteGroup *group2 = &gUnknown_0200B3B8[gTitlescreen.unk10];
group1->available = gTitlescreen.unk9;
group2->available = gTitlescreen.unk11;
group1->available = gTitlescreen.pressStartAndFlippersVisible;
group2->available = gTitlescreen.deleteSaveWindowVisible;
LoadSpriteSets(gUnknown_086A96E4, 5, gUnknown_0200B3B8);
if (group1->available == 1)
if (group1->available == TRUE)
{
group1->baseX = 120;
group1->baseY = 102;
@ -687,7 +693,7 @@ static void sub_11640(void)
}
}
if (group2->available == 1)
if (group2->available == TRUE)
{
group2->baseX = 120;
group2->baseY = 80;
@ -700,8 +706,8 @@ static void sub_11640(void)
}
}
group1->available = 0;
group2->available = 0;
group1->available = FALSE;
group2->available = FALSE;
}
struct UnknownStruct1

View File

@ -306,7 +306,7 @@ gUnknown_0201A4F0: @ 0x0201A4F0
.space 0x4
gUnknown_0201A4F4: @ 0x0201A4F4
.space 0x4
gUnknown_0201A4F8: @ 0x0201A4F8
gSelectedBonusField: @ 0x0201A4F8
.space 0x8
gUnknown_0201A500: @ 0x0201A500
.space 0x10
@ -364,7 +364,7 @@ gUnknown_0202A558: @ 0x0202A558
.space 0x4
gUnknown_0202A55C: @ 0x0202A55C
.space 0x4
gUnknown_0202A560: @ 0x0202A560
gBonusFieldSelectTimer: @ 0x0202A560
.space 0x4
gUnknown_0202A564: @ 0x0202A564
.space 0x4
@ -434,7 +434,7 @@ gUnknown_0202BEC8: @ 0x0202BEC8
.space 0x4
gUnknown_0202BECC: @ 0x0202BECC
.space 0x4
gUnknown_0202BED0: @ 0x0202BED0
gBonusFieldSelectState: @ 0x0202BED0
.space 0x4
gUnknown_0202BED4: @ 0x0202BED4
.space 0x4
@ -444,7 +444,7 @@ gUnknown_0202BEDC: @ 0x0202BEDC
.space 0x4
gUnknown_0202BEE0: @ 0x0202BEE0
.space 0x4
gUnknown_0202BEE4: @ 0x0202BEE4
gBonusFieldSelectNextMainState: @ 0x0202BEE4
.space 0x4
gUnknown_0202BEE8: @ 0x0202BEE8
.space 0x4