Dusclops Bonus Deep Dive Naming & incidental dump/naming (#202)
Some checks failed
CI / build (push) Has been cancelled

* checkpoint

* checkpoint 2

* checkpoint

* checkpoint

* checkpoint

* checkpoint

* final mode_change update

* remove temporary whitespace from gDuskullSpritesheetOam

* correct spelling of collision

* remove unneeded .orig files

* remove unneeded comment

* Rename PlayRumble function
This commit is contained in:
Retnuhytnuob 2026-02-28 13:06:45 -06:00 committed by GitHub
parent 97bf71ef12
commit 15da57f3f7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
52 changed files with 1237 additions and 985 deletions

View File

@ -94,7 +94,7 @@ gPokedexStateFuncs:: @ 0x0805C880
.4byte Pokedex_State8_4B34 @ POKEDEX_STATE_8
.4byte Pokedex_State9_4BB4 @ POKEDEX_STATE_9
.4byte Pokedex_State10_4B10 @ POKEDEX_STATE_10
.4byte Pokedex_State11_4C80 @ POKEDEX_STATE_11
.4byte Pokedex_DeleteConfirmation @ POKEDEX_STATE_DELETE_CONFIRMATION
.4byte Pokedex_ReturnToTitle @ POKEDEX_STATE_RETURN_TO_TITLE
gPokedexEntries:: @ 0x0805C8B4
@ -292,7 +292,7 @@ gTitlescreenStateFuncs:: @ 0x08079890
.4byte TitleScreen6_AnimCloseMenu @ SUBSTATE_ANIM_CLOSE_MENU
.4byte TitleScreen7_8011020 @ SUBSTATE_7
.4byte TitleScreen8_8011228 @ SUBSTATE_8
.4byte TitleScreen9_8010D84 @ SUBSTATE_9
.4byte TitleScreen9_8010D84 @ SUBSTATE_DELETE_SAVE_GAME_CONFIRMATION
.4byte TitleScreen10_ExecMenuSelection @ SUBSTATE_EXEC_MENU_SELECTION
.4byte TitleScreen11_80114B4 @ SUBSTATE_11
@ -1593,7 +1593,7 @@ gOptionsSEList:: @ 0x08527D66
.2byte SE_UNKNOWN_0xE0, SE_UNKNOWN_0xE1, SE_UNKNOWN_0xE2, SE_UNKNOWN_0xE3, SE_UNKNOWN_0xE4
.2byte SE_UNKNOWN_0xE5, SE_UNKNOWN_0xE6, SE_UNKNOWN_0xE7, SE_UNKNOWN_0xE8, SE_UNKNOWN_0xE9
.2byte SE_UNKNOWN_0xEA, SE_UNKNOWN_0xEB, SE_UNKNOWN_0xEC, SE_UNKNOWN_0xF1, SE_UNKNOWN_0xF2
.2byte SE_UNKNOWN_0xEA, SE_UNKNOWN_0xEB, SE_UNKNOWN_0xEC, SE_DUSKULL_APPEAR, SE_DUSKULL_DEATH_CRY
.2byte SE_DUSCLOPS_DEPART_INCOMPLETE, SE_DUSCLOPS_MOVE, SE_DUSCLOPS_APPEAR, SE_DUSCLOPS_HIT, SE_DUSCLOPS_BALL_ABSORB
.2byte SE_DUSCLOPS_BALL_LAUNCH, SE_UNKNOWN_0xF9, SE_UNKNOWN_0xFC, SE_UNKNOWN_0xFD, SE_UNKNOWN_0xFE
.2byte SE_UNKNOWN_0xFF, SE_UNKNOWN_0x100, SE_UNKNOWN_0x101, SE_UNKNOWN_0x102, SE_UNKNOWN_0x103

View File

@ -2253,7 +2253,7 @@ gUnknown_086ACDF4:: @ 0x086ACDF4
.2byte 0x0000, 0x00F0, 0x008C, 0x00C8
.2byte 0,0,0,0,0,0,0,0
@ suspected as board level colision detection logic; one per board;
@ suspected as board level collision detection logic; one per board;
@ similar contents for boards decompiled.
BoardCollisionFuncts_086ACE0C:: @ 0x086ACE0C
.4byte COLLISION_CHECK_RUBY_14E08, COLLISION_CHECK_SAPPHIRE_16090;
@ -2645,11 +2645,74 @@ gUnknown_086AE5A0:: @ 0x086AE5A0
gCommonAndEggWeights:: @ 0x086AE5E0
.2byte 10, 10, 15, 15, 2, 0
gUnknown_086AE5EC:: @ 0x086AE5EC
.incbin "baserom.gba", 0x6AE5EC, 0xA2
DuskullFramesetData:: @ 0x086AE5EC
@OamIx, timeTillChange, tileOffset
.2byte 0x0000, 0x000F, 0x0000
.2byte 0x0001, 0x000F, 0x0001
.2byte 0x0000, 0x000F, 0x0000
.2byte 0x0002, 0x000F, 0x0002
.2byte 0x0003, 0x0005, 0x0003
.2byte 0x0004, 0x0007, 0x0004
.2byte 0x0005, 0x000B, 0x0005
.2byte 0x0006, 0x000F, 0x0000
.2byte 0x0007, 0x000F, 0x0001
.2byte 0x0006, 0x000F, 0x0000
.2byte 0x0008, 0x000F, 0x0002
.2byte 0x0009, 0x0005, 0x0003
.2byte 0x000A, 0x0007, 0x0004
.2byte 0x000B, 0x000B, 0x0005
.2byte 0x000C, 0x0007, 0x0006
.2byte 0x000C, 0x0016, 0x0006
.2byte 0x0003, 0x0005, 0x0003
.2byte 0x0003, 0x0005, 0x0003
.2byte 0x000E, 0x0005, 0x0008
.2byte 0x000F, 0x0004, 0x0009
.2byte 0x0010, 0x0001, 0x000A
.2byte 0x000F, 0x0004, 0x0009
.2byte 0x000E, 0x0005, 0x0008
.2byte 0x000F, 0x0004, 0x0009
.2byte 0x0010, 0x0001, 0x000A
.2byte 0x000F, 0x0004, 0x0009
.2byte 0x0003, 0x0005, 0x0003
gUnknown_086AE68E:: @ 0x086AE68E
.incbin "baserom.gba", 0x6AE68E, 0x8A
DuclopsFramesetData:: @ 0x086AE68E
@ tileOffset, timeTillChange
.2byte 0x0000, 0x000F
.2byte 0x0001, 0x000F
.2byte 0x0002, 0x000F
.2byte 0x0003, 0x000F
.2byte 0x0000, 0x000F
.2byte 0x0004, 0x000F
.2byte 0x0005, 0x000F
.2byte 0x0006, 0x000F
.2byte 0x0007, 0x0013
.2byte 0x0008, 0x000F
.2byte 0x0009, 0x0011
.2byte 0x0008, 0x0007
.2byte 0x000A, 0x0005
.2byte 0x000B, 0x0047
.2byte 0x000B, 0x000B
.2byte 0x000A, 0x0005
.2byte 0x0008, 0x0013
.2byte 0x000C, 0x000F
.2byte 0x000D, 0x000F
.2byte 0x000C, 0x000F
.2byte 0x000E, 0x000F
.2byte 0x0000, 0x001B
.2byte 0x0001, 0x001B
.2byte 0x0002, 0x001B
.2byte 0x0003, 0x001B
.2byte 0x0000, 0x001B
.2byte 0x0004, 0x001B
.2byte 0x0005, 0x001B
.2byte 0x0006, 0x001B
@ Likely pointed to by something else.
.2byte 0x0000, 0x049C
.2byte 0x01C2, 0x049C
.2byte 0x02EE, 0x049C
.2byte 0x041A, 0x049C
.2byte 0x02EE, 0x049C, 0x01C2
gUnknown_086AE718:: @ 0x086AE718
.incbin "baserom.gba", 0x6AE718, 0x2AC

View File

@ -3947,8 +3947,8 @@ gDirectSound_086885EC:: @ 0x086885EC
.include "sound/songs/se_unk_ea.s"
.include "sound/songs/se_unk_eb.s"
.include "sound/songs/se_unk_ec.s"
.include "sound/songs/se_unk_f1.s"
.include "sound/songs/se_unk_f2.s"
.include "sound/songs/se_duskull_appear.s"
.include "sound/songs/se_duskull_death_cry.s"
.include "sound/songs/se_dusclops_depart_incomplete.s"
.include "sound/songs/se_dusclops_move.s"
.include "sound/songs/se_dusclops_appear.s"

View File

@ -9,6 +9,12 @@
"palette": ""
},
"files": [
{
"gfx_filename": "duskull",
"oam": true,
"mheight": 4,
"mwidth": 5
},
{
"gfx_filename": "dusclops_bonus_clear",
"segments": [

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -192,8 +192,8 @@
#define SE_UNKNOWN_0xEE 0xEE // No Sound
#define SE_UNKNOWN_0xEF 0xEF // No Sound
#define SE_UNKNOWN_0xF0 0xF0 // No Sound
#define SE_UNKNOWN_0xF1 0xF1 // SE109 Dusclops stage start, and Duskull hit (same as 119)
#define SE_UNKNOWN_0xF2 0xF2 // SE110 Duskull death cry
#define SE_DUSKULL_APPEAR 0xF1 // SE109 Dusclops stage start, and Duskull hit (same as 119)
#define SE_DUSKULL_DEATH_CRY 0xF2 // SE110 Duskull death cry
#define SE_DUSCLOPS_DEPART_INCOMPLETE 0xF3 // SE111 Duskull leaves, unhit
#define SE_DUSCLOPS_MOVE 0xF4 // SE112 Dusclops entry, footsteps
#define SE_DUSCLOPS_APPEAR 0xF5 // SE113 Dusclops appears

View File

@ -0,0 +1,86 @@
#ifndef GUARD_CONSTANTS_DUSCLOPS_STATES_H
#define GUARD_CONSTANTS_DUSCLOPS_STATES_H
enum DusclopsBoardStates{
DUSCLOPS_BOARD_STATE_0_INTRO = 0,
DUSCLOPS_BOARD_STATE_1_DUSKULL_PHASE = 1,
DUSCLOPS_BOARD_STATE_2_INIT_DUSCLOPS_PHASE = 2,
DUSCLOPS_BOARD_STATE_3_DUSCLOPS_PHASE = 3,
DUSCLOPS_BOARD_STATE_4_INIT_SCORE_PHASE = 4,
DUSCLOPS_BOARD_STATE_SCORE_PHASE = 5,
DUSCLOPS_BOARD_STATE_SCORE_COUNTING_FINISHED = 6
};
enum DusclopsEntityColisionMode{
DUSCLOPS_ENTITY_COLLISION_MODE_NONE = 0,
DUSCLOPS_ENTITY_COLLISION_MODE_DUSKULL = 1,
DUSCLOPS_ENTITY_COLLISION_MODE_DUSCLOPS = 2
};
enum DuskullEntityState{
DUSKULL_ENTITY_STATE_SPAWN = 0,
DUSKULL_ENTITY_STATE_APPEARS = 1,
DUSKULL_ENTITY_STATE_MOVE_LEFT = 2,
DUSKULL_ENTITY_STATE_MOVE_RIGHT = 3,
DUSKULL_ENTITY_STATE_HIT = 4,
DUSKULL_ENTITY_STATE_DYING = 5,
DUSKULL_ENTITY_STATE_ESCAPE_WHILE_WALKING_LEFT = 6,
DUSKULL_ENTITY_STATE_ESCAPE_WHILE_WALKING_RIGHT = 7,
DUSKULL_ENTITY_STATE_ESCAPE = 8,
DUSKULL_ENTITY_STATE_CLEANUP = 9
};
enum DuskullFramesetIx{
DUSKULL_FRAME_MOVE_LEFT_START = 0,
DUSKULL_FRAME_MOVE_LEFT_END = 3,
DUSKULL_FRAME_NEUTRAL_FACING = 6,
DUSKULL_FRAME_MOVE_RIGHT_START = 7,
DUSKULL_FRAME_MOVE_RIGHT_END = 10,
DUSKULL_FRAME_TURN_TO_FACE_LEFT_END = 13,
DUSKULL_FRAME_HIT = 14,
DUSKULL_FRAME_DYING = 15,
DUSKULL_FRAME_ESCAPE_PREP = 18,
DUSKULL_FRAME_ESCAPE = 25
};
enum DuskullTileOffset{
DUSKULL_TILE_OFFSET_QUARTER_FACING = 3,
DUSKULL_TILE_OFFSET_FACE_FORWARD = 4
};
enum DusclopsEntityState{
DUSCLOPS_ENTITY_STATE_INIT = 0,
DUSCLOPS_ENTITY_STATE_INTRO_APPEARANCE = 1,
DUSCLOPS_ENTITY_STATE_GUARD_READY = 2,
DUSCLOPS_ENTITY_STATE_WALKING = 3,
DUSCLOPS_ENTITY_STATE_HIT = 4,
DUSCLOPS_ENTITY_STATE_HIT_STUN = 5,
DUSCLOPS_ENTITY_STATE_HIT_ABSORB_ZONE = 6,
DUSCLOPS_ENTITY_STATE_ABSORBED_BALL = 7,
DUSCLOPS_ENTITY_STATE_VANISH = 8
};
enum DusclopsFramesetIx{
DUSCLOPS_FRAME_WALK_NEUTRAL = 0,
DUSCLOPS_FRAME_LEFT_FOOT_LANDS = 2,
DUSCLOPS_FRAME_WALK_NEUTRAL_RIGHT_FOOT_FORWARD = 4,
DUSCLOPS_FRAME_RIGHT_FOOT_LANDS = 6,
DUSCLOPS_FRAME_RIGHT_FOOT_FORWARD = 7,
DUSCLOPS_FRAME_ABSORB_START = 9,
DUSCLOPS_FRAME_ABSORB_VORTEX_START = 10,
DUSCLOPS_FRAME_ABSORB_VORTEX_END = 12,
DUSCLOPS_FRAME_ABSORB_LAUNCH_PREP = 15,
DUSCLOPS_FRAME_ABSOLB_LAUNCH = 16,
DUSCLOPS_FRAME_INTRO_START = 21,
DUSCLOPS_FRAME_INTRO_FOOTSTEP_LEFT = 23,
DUSCLOPS_FRAME_INTRO_FOOTSTEP_RIGHT = 27,
DUSCLOPS_FRAME_INTRO_END = 28,
};
enum DusclopsTileOffset{
DUSCLOPS_TILE_OFFSET_HIT = 7,
DUSCLOPS_TILE_OFFSET_ABSORB_START = 8,
DUSCLOPS_TILE_OFFSET_VANQUISHED = 15
};
#endif // GUARD_CONSTANTS_DUSCLOPS_STATES_H

View File

@ -10,7 +10,7 @@ void sub_10C0(void);
void sub_111C(void);
int sub_1170(void);
void sub_1198(void);
void sub_11B0(int arg0);
void PlayRumble(int arg0);
void sub_11E4(int arg0);
void sub_11F0(int arg0);
void sub_11FC(void);
@ -350,7 +350,7 @@ extern void sub_3FAC(void);
//extern ? Pokedex_State10_4B10();
//extern ? Pokedex_State8_4B34();
//extern ? Pokedex_State9_4BB4();
//extern ? Pokedex_State11_4C80();
//extern ? Pokedex_DeleteConfirmation();
//extern ? Pokedex_ReturnToTitle();
//extern ? sub_71DC();
extern void sub_8974(s16);
@ -389,8 +389,8 @@ void sub_153CC(s32, s16*, u16*);
extern void sub_162B8(struct Vector16 *arg0, s16* arg1, u8* arg2);
extern void sub_1642C(u8, u16*, u16*);
//extern ? COLLISION_CHECK_DUSCLOPS_171C8();
extern void sub_173FC(struct Vector16 *arg0, s16* arg1, u8* arg2);
extern void sub_17634(u8, u16*, u16*);
extern void CheckDusclopsEntitiesCollision(struct Vector16 *arg0, s16* arg1, u8* arg2);
extern void CheckDusclopsAbzorbZoneHit(u8, u16*, u16*);
//extern ? COLLISION_CHECK_KECLEON_176B0();
extern void sub_17898(struct Vector16 *, u16 *, u8 *);
extern void sub_179D0(u8, u16 *, u16 *);
@ -572,12 +572,12 @@ extern void sub_32B74();
extern void sub_32BE4();
//extern ? DuskullBonus_Setup();
//extern ? DusclopsBoardProcess_3B_33130();
extern void sub_3342C(s16 index1, s16 index2);
extern void sub_336E0();
extern void sub_340EC();
extern void sub_34450();
extern void sub_350F0();
extern void sub_351A8();
extern void SwapDuskullEntityIndex(s16 index1, s16 index2);
extern void DuskullPhase_ProcessEntityLogic();
extern void DuskullPhase_ProcessGraphics();
extern void DusclopsPhase_ProcessEntityLogicAndGraphics();
extern void FadeToMainBoard();
extern void ProceessBonusBannerAndScoring();
extern void sub_356A0();
extern void sub_357B8(void);
//extern ? KecleonBoardProcess_3A_35860();
@ -625,7 +625,7 @@ extern void sub_46FD4(s16);
extern void sub_47030(void);
//extern ? AllBoardProcess_1A_47100();
//extern ? AllBoardProcess_1B_47160();
extern void sub_472E4();
extern void BonusStage_HandleModeChangeFlags();
extern void sub_47344(void);
extern void sub_474F4(void);
extern void sub_47670(void);

View File

@ -71,6 +71,18 @@
#define JOY_NEW(button) TEST_BUTTON(gMain.newKeys, button)
#define JOY_HELD(button) TEST_BUTTON(gMain.heldKeys, button)
#define MODE_CHANGE_NONE 0 // Used for If checks
#define MODE_CHANGE_BANNER 0x1 //2^0
#define MODE_CHANGE_PAUSE 0x2 //2^1
#define MODE_CHANGE_DEBUG 0x4 //2^2
#define MODE_CHANGE_BALL_SAVER 0x8 //2^3
#define MODE_CHANGE_END_OF_BALL 0x10 //2^4
#define MODE_CHANGE_END_OF_GAME 0x20 //2^5
#define MODE_CHANGE_EXPIRED_BONUS 0x40 //2^6
#define MODE_CHANGE_BONUS_BANNER 0x80 //2^7
#define MODE_CHANGE_EXPIRED_BONUS_BANNER 0xC0 // 2^6 + 2^7
struct BgOffsets
{
u16 xOffset;
@ -489,10 +501,10 @@ struct PinballGame
/*0x380*/ u16 unk380;
/*0x382*/ s8 unk382;
/*0x383*/ s8 unk383;
/*0x384*/ s8 unk384;
/*0x385*/ s8 unk385;
/*0x386*/ s8 unk386;
/*0x387*/ s8 unk387;
/*0x384*/ s8 legendaryHitsRequired;
/*0x385*/ s8 bonusModeHitCount;
/*0x386*/ s8 returnToMainBoardFlag;
/*0x387*/ s8 boardEntityCollisionMode;
/*0x388*/ s8 unk388;
/*0x389*/ s8 unk389;
/*0x38A*/ s16 unk38A;
@ -501,21 +513,21 @@ struct PinballGame
/*0x390*/ u16 unk390;
/*0x392*/ u16 unk392;
/*0x394*/ s16 unk394;
/*0x396*/ s8 unk396;
/*0x397*/ s8 unk397[3];
/*0x39A*/ u8 unk39A[3];
/*0x39D*/ s8 unk39D[3];
/*0x3A0*/ s8 unk3A0[3];
/*0x3A3*/ s8 unk3A3[3];
/*0x3A6*/ s8 unk3A6[3];
/*0x3A9*/ s8 unk3A9[3];
/*0x3AC*/ s8 unk3AC[3];
/*0x3B0*/ u16 unk3B0[3];
/*0x3B6*/ u16 unk3B6[3];
/*0x3BC*/ u16 unk3BC[3];
/*0x396*/ s8 minionActiveCount;
/*0x397*/ s8 minionSpriteVariant[3];
/*0x39A*/ u8 minionNextSpriteVariant[3];
/*0x39D*/ s8 minionOamIx[3];
/*0x3A0*/ s8 minionState[3];
/*0x3A3*/ s8 minionFramesetIx[3];
/*0x3A6*/ s8 minionDrawInFrame[3];
/*0x3A9*/ s8 minionCanCollide[3];
/*0x3AC*/ s8 minionDeathTimer[3];
/*0x3B0*/ u16 minionStateTimer[3];
/*0x3B6*/ u16 minionTimeAlive[3];
/*0x3BC*/ u16 minionEscapeAtTime[3];
/*0x3C2*/ u8 filler3C2[0x2];
/*0x3C4*/ struct Vector16 unk3C4[3];
/*0x3D0*/ struct Vector16 unk3D0[3];
/*0x3C4*/ struct Vector16 minionLogicPosition[3];
/*0x3D0*/ struct Vector16 minionCollisionPosition[3];
/*0x3DC*/ s8 unk3DC;
/*0x3DD*/ s8 unk3DD;
/*0x3DE*/ s8 unk3DE;
@ -958,7 +970,7 @@ extern struct Unk086ACE8C gUnknown_086ACE8C[13];
extern u16 gUnknown_086ACEF4[2];
extern const u8 *const gUnknown_086ACEF8[];
extern const u8 *const gUnknown_086ACF18[];
extern s16 gUnknown_086AE68E[][2];
extern s16 DuclopsFramesetData[][2];
extern u16 gUnknown_086B4568[14][45];
extern const u8 gUnknown_084F61EC[];
extern u8 gUnknown_081B45A4[];

View File

@ -56,7 +56,7 @@ struct Main
// x40 End of bonus with expired timer,
// x80 Bonus Score banner
// Most cause a board state transition once conditions are met.
/*0x0F*/ u8 unkF;
/*0x0F*/ u8 modeChangeFlags;
/*0x10*/ u8 unk10;
/*0x11*/ u8 unk11;
/*0x12*/ u16 unk12;

View File

@ -286,9 +286,18 @@ extern s16 gUnknown_0202BF14;
extern s8 gUnknown_0202C590;
extern s16 gUnknown_0201B120;
extern s8 gUnknown_0202BEC4;
extern s8 gUnknown_0202BEFC;
extern s8 gUnknown_02002830;
extern s8 gUnknown_02002831;
/****
* Yellow confirmation/info window mode
* 0= Transmession connection prompt,
* 1= Transferring in progress?
* 2= transmission error message
* 3= transfer complete?
* 4= delete save data confirmation
* ****/
extern s8 Pokedex_PopupTypeIx;
extern s8 gPokedex_EraseSaveDataAccessCounter;
extern s8 gPokedex_EraseSaveDataAccessStep;
extern s8 gUnknown_0202C794;
extern s8 gUnknown_0201C1B4;
extern s8 gUnknown_0202C5AC;

View File

@ -248,8 +248,8 @@ gSongTable:: @ 0x08534E04
song mus_dummy, MUSIC_PLAYER_BGM, 0
song mus_dummy, MUSIC_PLAYER_BGM, 0
song mus_dummy, MUSIC_PLAYER_BGM, 0
song se_unk_f1, MUSIC_PLAYER_SE2, 2
song se_unk_f2, MUSIC_PLAYER_SE2, 2
song se_duskull_appear, MUSIC_PLAYER_SE2, 2
song se_duskull_death_cry, MUSIC_PLAYER_SE2, 2
song se_dusclops_depart_incomplete, MUSIC_PLAYER_SE2, 2
song se_dusclops_move, MUSIC_PLAYER_SE2, 2
song se_dusclops_appear, MUSIC_PLAYER_SE2, 2

View File

@ -1,58 +1,58 @@
.include "sound/MPlayDef.s"
.equ se_unk_f1_grp, gUnknown_08531D4C
.equ se_unk_f1_pri, 5
.equ se_unk_f1_rev, reverb_set+50
.equ se_unk_f1_mvl, 127
.equ se_unk_f1_key, 0
.equ se_unk_f1_tbs, 1
.equ se_unk_f1_exg, 0
.equ se_unk_f1_cmp, 1
.equ se_duskull_appear_grp, gUnknown_08531D4C
.equ se_duskull_appear_pri, 5
.equ se_duskull_appear_rev, reverb_set+50
.equ se_duskull_appear_mvl, 127
.equ se_duskull_appear_key, 0
.equ se_duskull_appear_tbs, 1
.equ se_duskull_appear_exg, 0
.equ se_duskull_appear_cmp, 1
.section .rodata
.global se_unk_f1
.global se_duskull_appear
.align 2
@*********************** Track 01 ***********************@
se_unk_f1_0: @ 0x086A14B4
.byte KEYSH , se_unk_f1_key+0
.byte TEMPO , 150*se_unk_f1_tbs/2
se_duskull_appear_0: @ 0x086A14B4
.byte KEYSH , se_duskull_appear_key+0
.byte TEMPO , 150*se_duskull_appear_tbs/2
.byte VOICE , 45
.byte BENDR , 24
.byte PAN , c_v+0
.byte VOL , 32*se_unk_f1_mvl/mxv
.byte VOL , 32*se_duskull_appear_mvl/mxv
.byte MOD , 30
.byte BEND , c_v+0
.byte N06 , Cn3 , v127
.byte W01
.byte BEND , c_v+4
.byte W01
.byte VOL , 49*se_unk_f1_mvl/mxv
.byte VOL , 49*se_duskull_appear_mvl/mxv
.byte PAN , c_v+5
.byte BEND , c_v+9
.byte W01
.byte c_v+16
.byte W01
.byte VOL , 61*se_unk_f1_mvl/mxv
.byte VOL , 61*se_duskull_appear_mvl/mxv
.byte BEND , c_v+24
.byte W02
.byte PAN , c_v+0
.byte BEND , c_v+2
.byte N06 , Dn3 , v116
.byte W01
.byte VOL , 71*se_unk_f1_mvl/mxv
.byte VOL , 71*se_duskull_appear_mvl/mxv
.byte BEND , c_v+7
.byte W01
.byte PAN , c_v-4
.byte BEND , c_v+12
.byte W01
.byte VOL , 81*se_unk_f1_mvl/mxv
.byte VOL , 81*se_duskull_appear_mvl/mxv
.byte BEND , c_v+18
.byte W01
.byte c_v+27
.byte W02
.byte VOL , 95*se_unk_f1_mvl/mxv
.byte VOL , 95*se_duskull_appear_mvl/mxv
.byte PAN , c_v+0
.byte BEND , c_v+4
.byte N06 , En3 , v112
@ -92,20 +92,20 @@ se_unk_f1_0: @ 0x086A14B4
.byte W01
.byte c_v+34
.byte W02
.byte VOL , 82*se_unk_f1_mvl/mxv
.byte VOL , 82*se_duskull_appear_mvl/mxv
.byte PAN , c_v+0
.byte BEND , c_v+14
.byte N06 , An3 , v100
.byte W01
.byte BEND , c_v+18
.byte W01
.byte VOL , 71*se_unk_f1_mvl/mxv
.byte VOL , 71*se_duskull_appear_mvl/mxv
.byte PAN , c_v-8
.byte BEND , c_v+23
.byte W01
.byte c_v+30
.byte W01
.byte VOL , 61*se_unk_f1_mvl/mxv
.byte VOL , 61*se_duskull_appear_mvl/mxv
.byte BEND , c_v+38
.byte W02
.byte PAN , c_v+0
@ -153,13 +153,13 @@ se_unk_f1_0: @ 0x086A14B4
.align 2
se_unk_f1: @ 0x086A1588
se_duskull_appear: @ 0x086A1588
.byte 1 @ NumTrks
.byte 0 @ NumBlks
.byte se_unk_f1_pri @ Priority
.byte se_unk_f1_rev @ Reverb
.byte se_duskull_appear_pri @ Priority
.byte se_duskull_appear_rev @ Reverb
.word se_unk_f1_grp
.word se_duskull_appear_grp
.word se_unk_f1_0
.word se_duskull_appear_0
@ 0x086A1594

View File

@ -1,24 +1,24 @@
.include "sound/MPlayDef.s"
.equ se_unk_f2_grp, gUnknown_08531D4C
.equ se_unk_f2_pri, 5
.equ se_unk_f2_rev, reverb_set+50
.equ se_unk_f2_mvl, 127
.equ se_unk_f2_key, 0
.equ se_unk_f2_tbs, 1
.equ se_unk_f2_exg, 0
.equ se_unk_f2_cmp, 1
.equ se_duskull_death_cry_grp, gUnknown_08531D4C
.equ se_duskull_death_cry_pri, 5
.equ se_duskull_death_cry_rev, reverb_set+50
.equ se_duskull_death_cry_mvl, 127
.equ se_duskull_death_cry_key, 0
.equ se_duskull_death_cry_tbs, 1
.equ se_duskull_death_cry_exg, 0
.equ se_duskull_death_cry_cmp, 1
.section .rodata
.global se_unk_f2
.global se_duskull_death_cry
.align 2
@*********************** Track 01 ***********************@
se_unk_f2_0: @ 0x086A1594
.byte VOL , 110*se_unk_f2_mvl/mxv
.byte KEYSH , se_unk_f2_key+0
.byte TEMPO , 150*se_unk_f2_tbs/2
se_duskull_death_cry_0: @ 0x086A1594
.byte VOL , 110*se_duskull_death_cry_mvl/mxv
.byte KEYSH , se_duskull_death_cry_key+0
.byte TEMPO , 150*se_duskull_death_cry_tbs/2
.byte VOICE , 61
.byte BENDR , 44
.byte PAN , c_v+0
@ -87,26 +87,26 @@ se_unk_f2_0: @ 0x086A1594
@*********************** Track 02 ***********************@
se_unk_f2_1: @ 0x086A15E8
.byte KEYSH , se_unk_f2_key+0
se_duskull_death_cry_1: @ 0x086A15E8
.byte KEYSH , se_duskull_death_cry_key+0
.byte VOICE , 66
.byte BENDR , 44
.byte PAN , c_v+1
.byte VOL , 110*se_unk_f2_mvl/mxv
.byte VOL , 110*se_duskull_death_cry_mvl/mxv
.byte N48 , Dn3 , v020
.byte W24
.byte W03
.byte VOL , 103*se_unk_f2_mvl/mxv
.byte VOL , 103*se_duskull_death_cry_mvl/mxv
.byte W04
.byte 96*se_unk_f2_mvl/mxv
.byte 96*se_duskull_death_cry_mvl/mxv
.byte W03
.byte 83*se_unk_f2_mvl/mxv
.byte 83*se_duskull_death_cry_mvl/mxv
.byte W04
.byte 67*se_unk_f2_mvl/mxv
.byte 67*se_duskull_death_cry_mvl/mxv
.byte W04
.byte 49*se_unk_f2_mvl/mxv
.byte 49*se_duskull_death_cry_mvl/mxv
.byte W03
.byte 23*se_unk_f2_mvl/mxv
.byte 23*se_duskull_death_cry_mvl/mxv
.byte W03
.byte FINE
@ -114,14 +114,14 @@ se_unk_f2_1: @ 0x086A15E8
.align 2
se_unk_f2: @ 0x086A1608
se_duskull_death_cry: @ 0x086A1608
.byte 2 @ NumTrks
.byte 0 @ NumBlks
.byte se_unk_f2_pri @ Priority
.byte se_unk_f2_rev @ Reverb
.byte se_duskull_death_cry_pri @ Priority
.byte se_duskull_death_cry_rev @ Reverb
.word se_unk_f2_grp
.word se_duskull_death_cry_grp
.word se_unk_f2_0
.word se_unk_f2_1
.word se_duskull_death_cry_0
.word se_duskull_death_cry_1
@ 0x086A1618

View File

@ -25,20 +25,20 @@ void AllBoardProcess_1B_47160(void)
{
if (JOY_NEW(START_BUTTON) && gMain.mainState != STATE_GAME_IDLE && gCurrentPinballGame->unk1100 == 0)
{
if (gMain.unkF & 0x2)
if (gMain.modeChangeFlags & MODE_CHANGE_PAUSE)
{
gMain.unkF &= ~0x2;
gMain.modeChangeFlags &= ~MODE_CHANGE_PAUSE;
sub_497BC();
}
else if ((gMain.unkF & 0x20) == 0)
else if ((gMain.modeChangeFlags & MODE_CHANGE_END_OF_GAME) == 0)
{
gMain.unkF |= 0x2;
gMain.modeChangeFlags |= MODE_CHANGE_PAUSE;
sub_495A0();
}
}
//Game is paused
if (gMain.unkF & 0x2)
if (gMain.modeChangeFlags & MODE_CHANGE_PAUSE)
{
if (JOY_NEW(DPAD_UP))
{
@ -60,24 +60,24 @@ void AllBoardProcess_1B_47160(void)
sub_49850();
}
gMain.unkF &= ~0x2;
gMain.modeChangeFlags &= ~MODE_CHANGE_PAUSE;
sub_497BC();
gMain.newKeys &= ~A_BUTTON;
}
if (JOY_NEW(B_BUTTON))
{
gMain.unkF &= ~0x2;
gMain.modeChangeFlags &= ~MODE_CHANGE_PAUSE;
sub_497BC();
gMain.newKeys &= ~B_BUTTON;
}
if (gMain.unkF & 0x2)
if (gMain.modeChangeFlags & MODE_CHANGE_PAUSE)
sub_49A34();
}
//Game is not paused
if (gMain.unkF == 0x0)
if (gMain.modeChangeFlags == MODE_CHANGE_NONE)
{
gCurrentPinballGame->unk740 = 0;
if (gMain.unk14 != 0)
@ -94,7 +94,7 @@ void AllBoardProcess_1B_47160(void)
}
if (gMain.unk14 == 0)
gMain.unkF = gMain.unk11;
gMain.modeChangeFlags = gMain.unk11;
}
}
}

View File

@ -96,7 +96,7 @@ void MainBoardProcess_2B_4D960(void)
int var4;
var0 = 0x1000;
if (gMain.unkF == 0)
if (gMain.modeChangeFlags == MODE_CHANGE_NONE)
sub_4E2F8();
if (gCurrentPinballGame->unk5FB)
@ -185,7 +185,7 @@ void BonusBoardProcess_2B_4DBFC(void)
int var4;
var0 = 0x1000;
if ((gMain.unkF & ~0x40) == 0)
if ((gMain.modeChangeFlags & ~MODE_CHANGE_EXPIRED_BONUS) == 0)
sub_4E468();
if (gCurrentPinballGame->unk5FB)
@ -302,7 +302,7 @@ void sub_4DFA0(void)
{
gCurrentPinballGame->unk128 = 4;
m4aSongNumStart(SE_TILT_TRIGGERED);
sub_11B0(8);
PlayRumble(8);
}
}
}
@ -314,7 +314,7 @@ void sub_4DFA0(void)
{
gCurrentPinballGame->unk128 = 4;
m4aSongNumStart(SE_TILT_TRIGGERED);
sub_11B0(8);
PlayRumble(8);
}
}
@ -325,7 +325,7 @@ void sub_4DFA0(void)
{
gCurrentPinballGame->unk128 = 4;
m4aSongNumStart(SE_TILT_TRIGGERED);
sub_11B0(8);
PlayRumble(8);
}
}
}
@ -428,7 +428,7 @@ void sub_4E2F8(void)
gCurrentPinballGame->unk163 = 3;
if (gCurrentPinballGame->unk20)
{
sub_11B0(7);
PlayRumble(7);
gCurrentPinballGame->ball->velocity.y = -590;
gCurrentPinballGame->ball->velocity.x = 0;
m4aSongNumStart(SE_UNKNOWN_0xCD);
@ -489,10 +489,10 @@ void sub_4E468(void)
{
unk1334->velocity.x = 0;
gCurrentPinballGame->ball->velocity.y = 0;
if (gMain.unkF & 0x40)
if (gMain.modeChangeFlags & MODE_CHANGE_EXPIRED_BONUS)
{
gCurrentPinballGame->unk386 = 1;
gMain.unkF = 0x80;
gCurrentPinballGame->returnToMainBoardFlag = 1;
gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER;
gCurrentPinballGame->ball->positionQ0.y = gUnknown_02031520.unk14.unk2A - 10;
}
else

File diff suppressed because it is too large Load Diff

View File

@ -40,9 +40,9 @@ void GroudonBoardProcess_3A_3B120(void)
gCurrentPinballGame->unk17 = 0;
gCurrentPinballGame->unk13 = 0;
if (gCurrentPinballGame->numCompletedBonusStages % 5 == 3)
gCurrentPinballGame->unk384 = 18;
gCurrentPinballGame->legendaryHitsRequired = 18;
else
gCurrentPinballGame->unk384 = 15;
gCurrentPinballGame->legendaryHitsRequired = 15;
gCurrentPinballGame->unk294 = 0;
gCurrentPinballGame->eventTimer = gCurrentPinballGame->timerBonus + 10800;
@ -50,12 +50,12 @@ void GroudonBoardProcess_3A_3B120(void)
gCurrentPinballGame->unk388 = 3;
gCurrentPinballGame->unk392 = 0;
gCurrentPinballGame->ball->unk0 = 1;
gCurrentPinballGame->unk386 = 0;
gCurrentPinballGame->unk387 = 1;
gCurrentPinballGame->returnToMainBoardFlag = 0;
gCurrentPinballGame->boardEntityCollisionMode = 1;
gCurrentPinballGame->unk6C4 = 3;
gCurrentPinballGame->unk382 = 0;
gCurrentPinballGame->unk383 = 0;
gCurrentPinballGame->unk385 = 0;
gCurrentPinballGame->bonusModeHitCount = 0;
gCurrentPinballGame->unk389 = 0;
gCurrentPinballGame->unk38E = 0;
gCurrentPinballGame->unk390 = 0;
@ -175,12 +175,12 @@ void GroudonBoardProcess_3B_3B49C(void)
gMain.spriteGroups[5].available = 1;
DmaCopy16(3, gGroudonBonusClear_Gfx, (void *)0x06015800, 0x2000);
gCurrentPinballGame->unk394 = 136;
gMain.unkF = 0x80;
gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER;
gCurrentPinballGame->unk5FA = 1;
}
break;
case 3:
sub_351A8();
ProceessBonusBannerAndScoring();
if (gCurrentPinballGame->scoreCounterAnimationEnabled)
gCurrentPinballGame->unk18 = 181;
@ -217,10 +217,10 @@ void GroudonBoardProcess_3B_3B49C(void)
gMain.spriteGroups[5].available = 1;
DmaCopy16(3, gGroudonBonusClear_Gfx, (void *)0x06015800, 0x2000);
gCurrentPinballGame->unk394 = 136;
gMain.unkF = 0x80;
gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER;
break;
case 5:
sub_351A8();
ProceessBonusBannerAndScoring();
if (gCurrentPinballGame->scoreCounterAnimationEnabled)
gCurrentPinballGame->unk18 = 181;
@ -243,8 +243,8 @@ void GroudonBoardProcess_3B_3B49C(void)
}
break;
case 6:
sub_351A8();
gCurrentPinballGame->unk386 = 1;
ProceessBonusBannerAndScoring();
gCurrentPinballGame->returnToMainBoardFlag = 1;
gCurrentPinballGame->unk5FA = 1;
break;
}
@ -253,20 +253,20 @@ void GroudonBoardProcess_3B_3B49C(void)
sub_3B7C4();
sub_3C6E0();
sub_3E644();
if (gCurrentPinballGame->unk294 && gCurrentPinballGame->eventTimer < 2 && gMain.unkF == 0)
if (gCurrentPinballGame->unk294 && gCurrentPinballGame->eventTimer < 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE)
{
m4aMPlayAllStop();
m4aSongNumStart(MUS_END_OF_BALL3);
gMain.unkF |= 0x40;
gMain.modeChangeFlags |= MODE_CHANGE_EXPIRED_BONUS;
}
if (gCurrentPinballGame->unk386)
if (gCurrentPinballGame->returnToMainBoardFlag)
{
gCurrentPinballGame->unk5FA = 1;
sub_350F0();
FadeToMainBoard();
}
sub_472E4();
BonusStage_HandleModeChangeFlags();
}
void sub_3B7C4(void)
@ -282,9 +282,9 @@ void sub_3B7C4(void)
{
MPlayStart(&gMPlayInfo_SE1, &se_unk_118);
gCurrentPinballGame->scoreAddedInFrame = 500000;
sub_11B0(7);
gCurrentPinballGame->unk385++;
if (gCurrentPinballGame->unk385 >= gCurrentPinballGame->unk384)
PlayRumble(7);
gCurrentPinballGame->bonusModeHitCount++;
if (gCurrentPinballGame->bonusModeHitCount >= gCurrentPinballGame->legendaryHitsRequired)
gCurrentPinballGame->unk3DC = 6;
}
@ -338,7 +338,7 @@ void sub_3B7C4(void)
gCurrentPinballGame->unk4CA = 31;
gCurrentPinballGame->unk4C9 = gCurrentPinballGame->unk3E4 / 110;
m4aSongNumStart(SE_GROUDON_STEP);
sub_11B0(8);
PlayRumble(8);
}
if (gCurrentPinballGame->unk3E4 == 160 || gCurrentPinballGame->unk3E4 == 380)
@ -346,7 +346,7 @@ void sub_3B7C4(void)
gCurrentPinballGame->unk4CA = 31;
gCurrentPinballGame->unk4C9 = gCurrentPinballGame->unk3E4 / 110;
m4aSongNumStart(SE_GROUDON_STEP);
sub_11B0(8);
PlayRumble(8);
}
if (gCurrentPinballGame->unk3E4 == 490)
@ -354,7 +354,7 @@ void sub_3B7C4(void)
gCurrentPinballGame->unk4CA = 31;
gCurrentPinballGame->unk4C9 = 4;
m4aSongNumStart(SE_UNKNOWN_0x11A);
sub_11B0(8);
PlayRumble(8);
}
}
@ -373,7 +373,7 @@ void sub_3B7C4(void)
{
gCurrentPinballGame->unk4C8 = 60;
MPlayStart(&gMPlayInfo_SE1, &se_unk_11b);
sub_11B0(13);
PlayRumble(13);
}
}
@ -586,7 +586,7 @@ void sub_3B7C4(void)
gCurrentPinballGame->unk129 = 0;
gCurrentPinballGame->unk128 = 1;
gCurrentPinballGame->unk4C8 = 60;
sub_11B0(13);
PlayRumble(13);
MPlayStart(&gMPlayInfo_SE1, &se_unk_11b);
}
}
@ -594,8 +594,10 @@ void sub_3B7C4(void)
break;
case 6:
gCurrentPinballGame->unk294 = 3;
if (gCurrentPinballGame->numCompletedBonusStages % 5 == 3)
{
// catch groudon
gCurrentPinballGame->unk3DC = 9;
gCurrentPinballGame->unk3E2 = 0;
gMain.spriteGroups[10].available = 1;
@ -608,10 +610,11 @@ void sub_3B7C4(void)
}
else
{
// bonus completed
gCurrentPinballGame->unk3DC = 7;
gCurrentPinballGame->unk3E2 = 32;
gCurrentPinballGame->unk387 = 0;
gMain.unkF = 0x80;
gCurrentPinballGame->boardEntityCollisionMode = 0;
gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER;
gCurrentPinballGame->unk388 = 2;
gCurrentPinballGame->unk392 = 0;
}
@ -693,7 +696,7 @@ void sub_3B7C4(void)
gCurrentPinballGame->unk4CA = 31;
gCurrentPinballGame->unk4C9 = 6;
m4aSongNumStart(SE_GROUDON_STEP);
sub_11B0(8);
PlayRumble(8);
}
}
@ -704,7 +707,7 @@ void sub_3B7C4(void)
gCurrentPinballGame->unk4CA = 31;
gCurrentPinballGame->unk4C9 = 5;
m4aSongNumStart(SE_GROUDON_STEP);
sub_11B0(8);
PlayRumble(8);
}
}
}
@ -1093,7 +1096,7 @@ void sub_3CBC4(void)
gCurrentPinballGame->unk482 = 10;
gMain.spriteGroups[24].available = 1;
gCurrentPinballGame->unk486 = 612;
sub_11B0(9);
PlayRumble(9);
}
gCurrentPinballGame->unk488.x += (Cos(gCurrentPinballGame->unk484) * 40) / 20000;
@ -1199,7 +1202,7 @@ void sub_3CBC4(void)
if (gCurrentPinballGame->unk4D8[i] == 0)
{
m4aSongNumStart(SE_GROUDON_BOULDER_LAND);
sub_11B0(7);
PlayRumble(7);
}
if (gCurrentPinballGame->unk4D8[i] < 5)
@ -1231,7 +1234,7 @@ void sub_3CBC4(void)
if (gCurrentPinballGame->unk4D8[i] == 1)
{
m4aSongNumStart(SE_GROUDON_BOULDER_LAND);
sub_11B0(7);
PlayRumble(7);
}
if (gCurrentPinballGame->unk4D8[i] < 5)
@ -1261,7 +1264,7 @@ void sub_3CBC4(void)
if (gCurrentPinballGame->unk4D8[i] == 1)
{
m4aSongNumStart(SE_GROUDON_BOULDER_LAND);
sub_11B0(7);
PlayRumble(7);
}
if (gCurrentPinballGame->unk4D8[i] < 5)
@ -1291,7 +1294,7 @@ void sub_3CBC4(void)
if (gCurrentPinballGame->unk4D8[i] == 1)
{
m4aSongNumStart(SE_GROUDON_BOULDER_LAND);
sub_11B0(7);
PlayRumble(7);
}
if (gCurrentPinballGame->unk4D8[i] < 3)
@ -1380,7 +1383,7 @@ void sub_3CBC4(void)
{
m4aSongNumStart(SE_GROUDON_BALL_HIT_FIRE);
gCurrentPinballGame->unk48C[i] = 3;
sub_11B0(7);
PlayRumble(7);
}
}
break;
@ -1399,7 +1402,7 @@ void sub_3CBC4(void)
{
m4aSongNumStart(SE_GROUDON_BALL_HIT_FIRE);
gCurrentPinballGame->unk48C[i] = 5;
sub_11B0(7);
PlayRumble(7);
}
}
break;
@ -1418,7 +1421,7 @@ void sub_3CBC4(void)
{
m4aSongNumStart(SE_GROUDON_BALL_HIT_FIRE);
gCurrentPinballGame->unk48C[i] = 7;
sub_11B0(7);
PlayRumble(7);
}
}
break;
@ -1447,7 +1450,7 @@ void sub_3CBC4(void)
}
m4aSongNumStart(SE_GROUDON_BALL_HIT_FIRE);
sub_11B0(7);
PlayRumble(7);
}
}
break;
@ -1601,7 +1604,7 @@ void sub_3CBC4(void)
gCurrentPinballGame->unk46C[2].y = 0x20 + scale / 8;
gCurrentPinballGame->unk46C[3].y = 0x20 + scale / 8;
if ((gMain.unkF & 0xC0) == 0)
if ((gMain.modeChangeFlags & MODE_CHANGE_EXPIRED_BONUS_BANNER) == 0)
{
gMain.blendControl = 0x1E10;
gMain.blendAlpha = BLDALPHA_BLEND(var6, 16 - var6);
@ -1633,11 +1636,11 @@ void sub_3CBC4(void)
gCurrentPinballGame->unk5B0 = ArcTan2(-tempVector.x, tempVector.y);
gCurrentPinballGame->ball->velocity.x = (Cos(gCurrentPinballGame->unk5B0) * -400) / 20000;
gCurrentPinballGame->ball->velocity.y = (Sin(gCurrentPinballGame->unk5B0) * 400) / 20000;
sub_11B0(9);
PlayRumble(9);
}
}
if ((gMain.unkF & 0xC0) != 0)
if ((gMain.modeChangeFlags & MODE_CHANGE_EXPIRED_BONUS_BANNER) != 0)
gMain.spriteGroups[30].available = 0;
}
}

View File

@ -68,14 +68,14 @@ void KecleonBoardProcess_3A_35860(void)
gCurrentPinballGame->unk388 = 3;
gCurrentPinballGame->unk392 = 0;
gCurrentPinballGame->ball->unk0 = 1;
gCurrentPinballGame->unk386 = 0;
gCurrentPinballGame->returnToMainBoardFlag = 0;
gCurrentPinballGame->unk3F7 = 1;
gCurrentPinballGame->unk3DC = 0;
gCurrentPinballGame->unk3E8 = 750;
gCurrentPinballGame->unk3EA = 360;
gCurrentPinballGame->unk3DF = 3;
gCurrentPinballGame->unk385 = 0;
gCurrentPinballGame->unk387 = 0;
gCurrentPinballGame->bonusModeHitCount = 0;
gCurrentPinballGame->boardEntityCollisionMode = 0;
gCurrentPinballGame->unk394 = 0;
gCurrentPinballGame->unk3DE = 0;
gCurrentPinballGame->unk3E0 = 0;
@ -108,7 +108,7 @@ void KecleonBoardProcess_3A_35860(void)
gCurrentPinballGame->unk1A = 0;
gCurrentPinballGame->unk400.y = gCurrentPinballGame->unk3EA / 10 + 58;
sub_38218();
gCurrentPinballGame->unk387 = 1;
gCurrentPinballGame->boardEntityCollisionMode = 1;
sub_35D54();
sub_36CB4();
m4aSongNumStart(MUS_BONUS_FIELD_KECLEON);
@ -137,14 +137,14 @@ void KecleonBoardProcess_3B_35AA4(void)
gCurrentPinballGame->unk18 = 0;
}
if (gCurrentPinballGame->unk386 == 0)
if (gCurrentPinballGame->returnToMainBoardFlag == 0)
{
gMain.blendControl = 0x1C10;
gMain.blendAlpha = BLDALPHA_BLEND(16, 0);
}
break;
case 1:
if (gCurrentPinballGame->unk386 == 0)
if (gCurrentPinballGame->returnToMainBoardFlag == 0)
{
if (gCurrentPinballGame->unk40E == 0)
{
@ -173,11 +173,11 @@ void KecleonBoardProcess_3B_35AA4(void)
gMain.spriteGroups[5].available = 1;
DmaCopy16(3, gKecleonBonusClear_Gfx, (void *)0x6015800, 0x2000);
gCurrentPinballGame->unk394 = 0x88;
gMain.unkF = 0x80;
gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER;
}
break;
case 3:
sub_351A8();
ProceessBonusBannerAndScoring();
if (gCurrentPinballGame->scoreCounterAnimationEnabled)
gCurrentPinballGame->unk18 = 181;
@ -206,8 +206,8 @@ void KecleonBoardProcess_3B_35AA4(void)
}
break;
case 4:
sub_351A8();
gCurrentPinballGame->unk386 = 1;
ProceessBonusBannerAndScoring();
gCurrentPinballGame->returnToMainBoardFlag = 1;
break;
}
@ -215,20 +215,20 @@ void KecleonBoardProcess_3B_35AA4(void)
sub_36CB4();
sub_372B4();
sub_3751C();
if (gCurrentPinballGame->unk294 && gCurrentPinballGame->eventTimer < 2 && gMain.unkF == 0)
if (gCurrentPinballGame->unk294 && gCurrentPinballGame->eventTimer < 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE)
{
m4aMPlayAllStop();
m4aSongNumStart(MUS_END_OF_BALL3);
gCurrentPinballGame->unk404 = 0;
gCurrentPinballGame->unk408 = 0;
gCurrentPinballGame->unk406 = 0;
gMain.unkF |= 0x40;
gMain.modeChangeFlags |= MODE_CHANGE_EXPIRED_BONUS;
}
if (gCurrentPinballGame->unk386)
sub_350F0();
if (gCurrentPinballGame->returnToMainBoardFlag)
FadeToMainBoard();
sub_472E4();
BonusStage_HandleModeChangeFlags();
sub_37850();
}
@ -415,7 +415,7 @@ void sub_35D54(void)
gCurrentPinballGame->unk3EA += tempVec.y;
if (deltaMagSquared < 2500)
{
if (gCurrentPinballGame->unk385 > 9)
if (gCurrentPinballGame->bonusModeHitCount > 9)
{
if (gCurrentPinballGame->unk3DE == 66)
{
@ -614,9 +614,9 @@ void sub_35D54(void)
gCurrentPinballGame->unk3E4 = 0;
gCurrentPinballGame->unk3FA = 0;
gCurrentPinballGame->scoreAddedInFrame = 500000;
gCurrentPinballGame->unk385++;
gCurrentPinballGame->bonusModeHitCount++;
MPlayStart(&gMPlayInfo_SE1, &se_unk_101);
sub_11B0(7);
PlayRumble(7);
break;
case 12:
if (gUnknown_086AE718[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4)
@ -630,21 +630,21 @@ void sub_35D54(void)
if (gCurrentPinballGame->unk3E2 == gCurrentPinballGame->unk3DE + 4)
{
gCurrentPinballGame->unk3E2 = gCurrentPinballGame->unk3DE + 3;
if (gCurrentPinballGame->unk385 < 10)
if (gCurrentPinballGame->bonusModeHitCount < 10)
{
gCurrentPinballGame->unk3DC = 13;
}
else
{
gCurrentPinballGame->unk294 = 3;
gMain.unkF = 0x80;
gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER;
gCurrentPinballGame->unk388 = 2;
gCurrentPinballGame->unk392 = 0;
gCurrentPinballGame->unk3DC = 13;
gCurrentPinballGame->unk404 = 0;
gCurrentPinballGame->unk408 = 0;
gCurrentPinballGame->unk406 = 0;
gCurrentPinballGame->unk387 = 0;
gCurrentPinballGame->boardEntityCollisionMode = 0;
}
}
}
@ -657,7 +657,7 @@ void sub_35D54(void)
}
else
{
if (gCurrentPinballGame->unk385 > 9)
if (gCurrentPinballGame->bonusModeHitCount > 9)
{
if (gCurrentPinballGame->unk3F6 == 0)
{
@ -797,22 +797,22 @@ void sub_36CB4(void)
{
gCurrentPinballGame->unk3F0 = 2 * (gCurrentPinballGame->unk3E8 / 10) + 144;
gCurrentPinballGame->unk3F2 = 2 * (gCurrentPinballGame->unk3EA / 10) + 84;
if (gCurrentPinballGame->unk385 < 10)
gCurrentPinballGame->unk387 = 2;
if (gCurrentPinballGame->bonusModeHitCount < 10)
gCurrentPinballGame->boardEntityCollisionMode = 2;
}
else if (gCurrentPinballGame->unk3E2 >= 33 && gCurrentPinballGame->unk3E2 < 36)
{
gCurrentPinballGame->unk3F0 = 2 * (gCurrentPinballGame->unk3E8 / 10) + 240;
gCurrentPinballGame->unk3F2 = 2 * (gCurrentPinballGame->unk3EA / 10) + 84;
if (gCurrentPinballGame->unk385 < 10)
gCurrentPinballGame->unk387 = 2;
if (gCurrentPinballGame->bonusModeHitCount < 10)
gCurrentPinballGame->boardEntityCollisionMode = 2;
}
else
{
gCurrentPinballGame->unk3F0 = 2 * (gCurrentPinballGame->unk3E8 / 10) + 208;
gCurrentPinballGame->unk3F2 = 2 * (gCurrentPinballGame->unk3EA / 10) + 56;
if (gCurrentPinballGame->unk385 < 10)
gCurrentPinballGame->unk387 = 1;
if (gCurrentPinballGame->bonusModeHitCount < 10)
gCurrentPinballGame->boardEntityCollisionMode = 1;
}
gCurrentPinballGame->unk400.x = (gCurrentPinballGame->unk3E8 / 10) + 120;
@ -1135,7 +1135,7 @@ void sub_37850(void)
if (gCurrentPinballGame->unk40C == 40)
{
m4aSongNumStart(SE_KECLEON_TREE_HIT);
sub_11B0(7);
PlayRumble(7);
}
if (var0 < 0)

View File

@ -46,9 +46,9 @@ void KyogreBoardProcess_3A_383E4(void)
gCurrentPinballGame->eventTimer = gCurrentPinballGame->timerBonus + 10800;
gCurrentPinballGame->timerBonus = 0;
if (gCurrentPinballGame->numCompletedBonusStages % 5 == 3)
gCurrentPinballGame->unk384 = 18;
gCurrentPinballGame->legendaryHitsRequired = 18;
else
gCurrentPinballGame->unk384 = 15;
gCurrentPinballGame->legendaryHitsRequired = 15;
gCurrentPinballGame->unk390 = 0;
gCurrentPinballGame->unk389 = 0;
@ -57,11 +57,11 @@ void KyogreBoardProcess_3A_383E4(void)
gCurrentPinballGame->unk388 = 3;
gCurrentPinballGame->unk392 = 0;
gCurrentPinballGame->ball->unk0 = 1;
gCurrentPinballGame->unk386 = 0;
gCurrentPinballGame->returnToMainBoardFlag = 0;
gCurrentPinballGame->unk394 = 0;
gCurrentPinballGame->unk38E = 0;
gCurrentPinballGame->unk385 = 0;
gCurrentPinballGame->unk387 = 0;
gCurrentPinballGame->bonusModeHitCount = 0;
gCurrentPinballGame->boardEntityCollisionMode = 0;
gCurrentPinballGame->unk6C4 = 3;
gCurrentPinballGame->unk3DF = 14;
gCurrentPinballGame->unk3DC = 0;
@ -155,12 +155,12 @@ void KyogreBoardProcess_3B_3869C(void)
gMain.spriteGroups[5].available = 1;
DmaCopy16(3, gKyogreBonusClear_Gfx, (void *)0x06015800, 0x2000);
gCurrentPinballGame->unk394 = 136;
gMain.unkF = 0x80;
gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER;
gCurrentPinballGame->unk5FA = 1;
}
break;
case 3:
sub_351A8();
ProceessBonusBannerAndScoring();
if (gCurrentPinballGame->scoreCounterAnimationEnabled)
gCurrentPinballGame->unk18 = 181;
@ -197,10 +197,10 @@ void KyogreBoardProcess_3B_3869C(void)
gMain.spriteGroups[5].available = 1;
DmaCopy16(3, gKyogreBonusClear_Gfx, (void *)0x06015800, 0x2000);
gCurrentPinballGame->unk394 = 136;
gMain.unkF = 0x80;
gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER;
break;
case 5:
sub_351A8();
ProceessBonusBannerAndScoring();
if (gCurrentPinballGame->scoreCounterAnimationEnabled)
gCurrentPinballGame->unk18 = 181;
@ -223,8 +223,8 @@ void KyogreBoardProcess_3B_3869C(void)
}
break;
case 6:
sub_351A8();
gCurrentPinballGame->unk386 = 1;
ProceessBonusBannerAndScoring();
gCurrentPinballGame->returnToMainBoardFlag = 1;
gCurrentPinballGame->unk5FA = 1;
}
@ -232,20 +232,20 @@ void KyogreBoardProcess_3B_3869C(void)
sub_38A20();
sub_395D8();
sub_3AE14();
if (gCurrentPinballGame->unk294 && gCurrentPinballGame->eventTimer < 2 && gMain.unkF == 0)
if (gCurrentPinballGame->unk294 && gCurrentPinballGame->eventTimer < 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE)
{
m4aMPlayAllStop();
m4aSongNumStart(MUS_END_OF_BALL3);
gMain.unkF |= 0x40;
gMain.modeChangeFlags |= MODE_CHANGE_EXPIRED_BONUS;
}
if (gCurrentPinballGame->unk386)
if (gCurrentPinballGame->returnToMainBoardFlag)
{
gCurrentPinballGame->unk5FA = 1;
sub_350F0();
FadeToMainBoard();
}
sub_472E4();
BonusStage_HandleModeChangeFlags();
}
void sub_38A20(void)
@ -262,10 +262,11 @@ void sub_38A20(void)
if (gCurrentPinballGame->unk452 == 4)
{
MPlayStart(&gMPlayInfo_SE1, &se_unk_10a);
sub_11B0(7);
PlayRumble(7);
gCurrentPinballGame->scoreAddedInFrame = 500000;
gCurrentPinballGame->unk385++;
if (gCurrentPinballGame->unk385 >= gCurrentPinballGame->unk384 && gCurrentPinballGame->unk387 == 1)
gCurrentPinballGame->bonusModeHitCount++;
if (gCurrentPinballGame->bonusModeHitCount >= gCurrentPinballGame->legendaryHitsRequired &&
gCurrentPinballGame->boardEntityCollisionMode == 1)
gCurrentPinballGame->unk3DC = 7;
}
}
@ -312,7 +313,7 @@ void sub_38A20(void)
if (gCurrentPinballGame->unk3E2 == 33)
{
MPlayStart(&gMPlayInfo_SE1, &se_unk_10b);
gCurrentPinballGame->unk387 = 1;
gCurrentPinballGame->boardEntityCollisionMode = 1;
}
}
@ -338,7 +339,7 @@ void sub_38A20(void)
if (gCurrentPinballGame->unk3E2 == 11)
{
gCurrentPinballGame->unk387 = 1;
gCurrentPinballGame->boardEntityCollisionMode = 1;
MPlayStart(&gMPlayInfo_SE1, &se_unk_10b);
}
}
@ -361,7 +362,7 @@ void sub_38A20(void)
if (gCurrentPinballGame->unk3E2 == 5)
{
gCurrentPinballGame->unk387 = 0;
gCurrentPinballGame->boardEntityCollisionMode = 0;
MPlayStart(&gMPlayInfo_SE1, &se_unk_10c);
}
}
@ -386,7 +387,7 @@ void sub_38A20(void)
{
if (gCurrentPinballGame->unk3DD == 3)
{
if (gCurrentPinballGame->unk385 >= gCurrentPinballGame->unk384)
if (gCurrentPinballGame->bonusModeHitCount >= gCurrentPinballGame->legendaryHitsRequired)
{
gCurrentPinballGame->unk3E2 = 0;
gCurrentPinballGame->unk3DC = 4;
@ -483,8 +484,10 @@ void sub_38A20(void)
break;
case 7:
gCurrentPinballGame->unk294 = 3;
if (gCurrentPinballGame->numCompletedBonusStages % 5 == 3)
{
// catch kyogre
gCurrentPinballGame->unk3DC = 10;
gCurrentPinballGame->unk3E2 = 0;
gMain.spriteGroups[10].available = 1;
@ -497,9 +500,10 @@ void sub_38A20(void)
}
else
{
// normal completion
gCurrentPinballGame->unk3DC = 9;
gCurrentPinballGame->unk3E2 = 79;
gMain.unkF = 0x80;
gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER;
gCurrentPinballGame->unk388 = 2;
gCurrentPinballGame->unk392 = 0;
}
@ -533,7 +537,7 @@ void sub_38A20(void)
if (gCurrentPinballGame->unk3E2 == 97)
{
gCurrentPinballGame->unk387 = 0;
gCurrentPinballGame->boardEntityCollisionMode = 0;
MPlayStart(&gMPlayInfo_SE1, &se_unk_10f);
}
}
@ -600,9 +604,9 @@ void sub_38A20(void)
gCurrentPinballGame->unk3E4 = 0;
gCurrentPinballGame->unk3E2 = 67;
gCurrentPinballGame->unk3DC = 12;
gCurrentPinballGame->unk387 = 2;
gCurrentPinballGame->boardEntityCollisionMode = 2;
MPlayStart(&gMPlayInfo_SE1, &se_unk_10b);
sub_11B0(8);
PlayRumble(8);
}
break;
case 12:
@ -633,15 +637,15 @@ void sub_38A20(void)
}
if (gCurrentPinballGame->unk3E2 == 70)
gCurrentPinballGame->unk387 = 3;
gCurrentPinballGame->boardEntityCollisionMode = 3;
if (gCurrentPinballGame->unk3E2 == 73)
gCurrentPinballGame->unk387 = 0;
gCurrentPinballGame->boardEntityCollisionMode = 0;
if (gCurrentPinballGame->unk3E2 == 72)
{
MPlayStart(&gMPlayInfo_SE1, &se_unk_10c);
sub_11B0(8);
PlayRumble(8);
}
}
break;
@ -691,12 +695,12 @@ void sub_395D8(void)
group->baseY = gCurrentPinballGame->unk3EA / 10 + 66u - gCurrentPinballGame->unk5A;
gCurrentPinballGame->unk288 = gCurrentPinballGame->unk3E8 / 10 + 120;
gCurrentPinballGame->unk28A = gCurrentPinballGame->unk3EA / 10 + 50;
if (gCurrentPinballGame->unk387 == 2)
if (gCurrentPinballGame->boardEntityCollisionMode == 2)
{
gCurrentPinballGame->unk3F0 = (gCurrentPinballGame->unk3E8 / 10) * 2 + 192;
gCurrentPinballGame->unk3F2 = (gCurrentPinballGame->unk3EA / 10) * 2 + 134;
}
else if (gCurrentPinballGame->unk387 == 3)
else if (gCurrentPinballGame->boardEntityCollisionMode == 3)
{
gCurrentPinballGame->unk3F0 = (gCurrentPinballGame->unk3E8 / 10) * 2 + 192;
gCurrentPinballGame->unk3F2 = (gCurrentPinballGame->unk3EA / 10) * 2 + 150;
@ -1002,7 +1006,7 @@ void sub_39A40(void)
for (i = 0; i < 2; i++)
{
group = &gMain.spriteGroups[22 + i];
if ((gMain.unkF & 0x80) == 0)
if ((gMain.modeChangeFlags & MODE_CHANGE_BONUS_BANNER) == 0)
{
switch (gCurrentPinballGame->unk441[i]) {
case 0:
@ -1040,11 +1044,11 @@ void sub_39A40(void)
yy = tempVector.y * tempVector.y;
squaredMagnitude = xx + yy;
if (gCurrentPinballGame->unk383 == 0 && gCurrentPinballGame->unk388 == 0 &&
gCurrentPinballGame->unk385 < gCurrentPinballGame->unk384 &&
gCurrentPinballGame->bonusModeHitCount < gCurrentPinballGame->legendaryHitsRequired &&
gCurrentPinballGame->unk452 == 0 && squaredMagnitude < 400)
{
m4aSongNumStart(SE_UNKNOWN_0x113);
sub_11B0(12);
PlayRumble(12);
gCurrentPinballGame->unk1F = 1;
gCurrentPinballGame->unk458[i] = 0;
gCurrentPinballGame->unk441[i] = 3;
@ -1092,7 +1096,7 @@ void sub_39A40(void)
{
gCurrentPinballGame->unk458[i]++;
if (gCurrentPinballGame->unk458[i] % 9 == 0)
sub_11B0(12);
PlayRumble(12);
}
else
{
@ -1222,7 +1226,7 @@ void sub_39A40(void)
gCurrentPinballGame->unk46C[2].y = 0x20 + scale / 8;
gCurrentPinballGame->unk46C[3].y = 0x20 + scale / 8;
if ((gMain.unkF & 0xC0) == 0)
if ((gMain.modeChangeFlags & MODE_CHANGE_EXPIRED_BONUS_BANNER) == 0)
{
gMain.blendControl = 0x1E10;
gMain.blendAlpha = BLDALPHA_BLEND(var6, 16 - var6);
@ -1255,13 +1259,13 @@ void sub_39A40(void)
gCurrentPinballGame->unk448 = 0;
gCurrentPinballGame->unk454 = 0;
if (!gMain.spriteGroups[16].available)
sub_11B0(8);
PlayRumble(8);
gMain.spriteGroups[16].available = 1;
}
}
if (gMain.unkF & 0xC0)
if (gMain.modeChangeFlags & MODE_CHANGE_EXPIRED_BONUS_BANNER)
gMain.spriteGroups[24].available = 0;
}
}

View File

@ -34,9 +34,9 @@ void RayquazaBoardProcess_3A_3E79C(void)
gCurrentPinballGame->unk17 = 0;
gCurrentPinballGame->unk13 = 0;
if (gCurrentPinballGame->numCompletedBonusStages % 10 == 9)
gCurrentPinballGame->unk384 = 18;
gCurrentPinballGame->legendaryHitsRequired = 18;
else
gCurrentPinballGame->unk384 = 15;
gCurrentPinballGame->legendaryHitsRequired = 15;
gCurrentPinballGame->unk294 = 0;
gCurrentPinballGame->eventTimer = gCurrentPinballGame->timerBonus + 10800;
@ -45,12 +45,12 @@ void RayquazaBoardProcess_3A_3E79C(void)
gCurrentPinballGame->unk392 = 0;
gCurrentPinballGame->ball->unk0 = 1;
gCurrentPinballGame->unkE6 = -88;
gCurrentPinballGame->unk387 = 1;
gCurrentPinballGame->boardEntityCollisionMode = 1;
gCurrentPinballGame->unk6C4 = 3;
gCurrentPinballGame->unk382 = 0;
gCurrentPinballGame->unk383 = 0;
gCurrentPinballGame->unk385 = 0;
gCurrentPinballGame->unk386 = 0;
gCurrentPinballGame->bonusModeHitCount = 0;
gCurrentPinballGame->returnToMainBoardFlag = 0;
gCurrentPinballGame->unk389 = 0;
gCurrentPinballGame->unk38A = 0;
gCurrentPinballGame->unk38C = 0;
@ -60,8 +60,8 @@ void RayquazaBoardProcess_3A_3E79C(void)
for (i = 0; i < 3; i++)
{
gCurrentPinballGame->unk3C4[i].x = 0;
gCurrentPinballGame->unk3C4[i].y = 0;
gCurrentPinballGame->minionLogicPosition[i].x = 0;
gCurrentPinballGame->minionLogicPosition[i].y = 0;
}
gCurrentPinballGame->unk3DC = 0;
@ -153,11 +153,11 @@ void RayquazaBoardProcess_3B_3EB2C(void)
gMain.spriteGroups[5].available = 1;
DmaCopy16(3, gRayquazaBonusClear_Gfx, (void *)0x06015800, 0x2000);
gCurrentPinballGame->unk394 = 136;
gMain.unkF = 0x80;
gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER;
gCurrentPinballGame->unk5FA = 1;
break;
case 3:
sub_351A8();
ProceessBonusBannerAndScoring();
if (gCurrentPinballGame->scoreCounterAnimationEnabled)
gCurrentPinballGame->unk18 = 181;
@ -194,10 +194,10 @@ void RayquazaBoardProcess_3B_3EB2C(void)
gMain.spriteGroups[5].available = 1;
DmaCopy16(3, gRayquazaBonusClear_Gfx, (void *)0x06015800, 0x2000);
gCurrentPinballGame->unk394 = 136;
gMain.unkF = 0x80;
gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER;
break;
case 5:
sub_351A8();
ProceessBonusBannerAndScoring();
if (gCurrentPinballGame->scoreCounterAnimationEnabled)
gCurrentPinballGame->unk18 = 181;
@ -221,8 +221,8 @@ void RayquazaBoardProcess_3B_3EB2C(void)
}
break;
case 6:
sub_351A8();
gCurrentPinballGame->unk386 = 1;
ProceessBonusBannerAndScoring();
gCurrentPinballGame->returnToMainBoardFlag = 1;
gCurrentPinballGame->unk5FA = 1;
break;
}
@ -231,20 +231,20 @@ void RayquazaBoardProcess_3B_3EB2C(void)
sub_40288();
sub_3EDF0();
sub_3FAE0();
if (gCurrentPinballGame->unk294 && gCurrentPinballGame->eventTimer < 2 && gMain.unkF == 0)
if (gCurrentPinballGame->unk294 && gCurrentPinballGame->eventTimer < 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE)
{
m4aMPlayAllStop();
m4aSongNumStart(MUS_END_OF_BALL3);
gMain.unkF |= 0x40;
gMain.modeChangeFlags |= MODE_CHANGE_EXPIRED_BONUS;
}
if (gCurrentPinballGame->unk386)
if (gCurrentPinballGame->returnToMainBoardFlag)
{
gCurrentPinballGame->unk5FA = 1;
sub_350F0();
FadeToMainBoard();
}
sub_472E4();
BonusStage_HandleModeChangeFlags();
}
void sub_3EDF0(void)
@ -257,9 +257,9 @@ void sub_3EDF0(void)
{
m4aSongNumStart(SE_RAYQUAZA_HIT);
gCurrentPinballGame->scoreAddedInFrame = 1000000;
gCurrentPinballGame->unk385++;
sub_11B0(7);
if (gCurrentPinballGame->unk385 >= gCurrentPinballGame->unk384 && gCurrentPinballGame->unk3DC != 6)
gCurrentPinballGame->bonusModeHitCount++;
PlayRumble(7);
if (gCurrentPinballGame->bonusModeHitCount >= gCurrentPinballGame->legendaryHitsRequired && gCurrentPinballGame->unk3DC != 6)
gCurrentPinballGame->unk3DC = 9;
}
@ -271,11 +271,11 @@ void sub_3EDF0(void)
if (gCurrentPinballGame->unk50C)
{
gCurrentPinballGame->unk50C--;
gCurrentPinballGame->unk387 = 0;
gCurrentPinballGame->boardEntityCollisionMode = 0;
}
else
{
gCurrentPinballGame->unk387 = 1;
gCurrentPinballGame->boardEntityCollisionMode = 1;
}
switch (gCurrentPinballGame->unk3DC)
@ -409,7 +409,7 @@ void sub_3EDF0(void)
}
else if (gCurrentPinballGame->unk3DD == 6)
{
if (gCurrentPinballGame->unk385 >= gCurrentPinballGame->unk384 - 1)
if (gCurrentPinballGame->bonusModeHitCount >= gCurrentPinballGame->legendaryHitsRequired - 1)
{
gCurrentPinballGame->unk3E2 = 13;
gCurrentPinballGame->unk3DC = 4;
@ -559,6 +559,7 @@ void sub_3EDF0(void)
gCurrentPinballGame->unk294 = 3;
if (gCurrentPinballGame->numCompletedBonusStages % 10 == 9)
{
// Catch Rayquaza
gCurrentPinballGame->unk3DC = 14;
gCurrentPinballGame->unk3E2 = 0;
gMain.spriteGroups[10].available = 1;
@ -571,9 +572,10 @@ void sub_3EDF0(void)
}
else
{
// Normal Completion
gCurrentPinballGame->unk3DC = 10;
gCurrentPinballGame->unk3E2 = 98;
gMain.unkF = 0x80;
gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER;
gCurrentPinballGame->unk388 = 2;
gCurrentPinballGame->unk392 = 0;
}
@ -642,12 +644,12 @@ void sub_3EDF0(void)
gCurrentPinballGame->unk506 = 2;
gCurrentPinballGame->unk516 = 0;
gCurrentPinballGame->unk5FA = 1;
gMain.unkF = 0x80;
gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER;
gMain.spriteGroups[14].available = 1;
gCurrentPinballGame->unk3C4[0].x = 0;
gCurrentPinballGame->unk3C4[0].y = -5000;
gCurrentPinballGame->unk3C4[1].x = 1400;
gCurrentPinballGame->unk3C4[1].y = -2000;
gCurrentPinballGame->minionLogicPosition[0].x = 0;
gCurrentPinballGame->minionLogicPosition[0].y = -5000;
gCurrentPinballGame->minionLogicPosition[1].x = 1400;
gCurrentPinballGame->minionLogicPosition[1].y = -2000;
gCurrentPinballGame->unk418.x = -200;
gCurrentPinballGame->unk418.y = 800;
gCurrentPinballGame->unk414.x = 24;
@ -888,7 +890,7 @@ void sub_3FAE0(void)
}
else
{
if ((gMain.unkF & 0xC0) == 0)
if ((gMain.modeChangeFlags & MODE_CHANGE_EXPIRED_BONUS_BANNER) == 0)
{
gMain.blendControl = 0x1E10;
gMain.blendAlpha = BLDALPHA_BLEND(var2, 0x10 - var2);
@ -1088,14 +1090,14 @@ void sub_40288(void)
yy = tempVector.y * tempVector.y;
squaredMagnitude = xx + yy;
sub_11B0(8);
PlayRumble(8);
if (gCurrentPinballGame->unk441[0] < 3 && gCurrentPinballGame->unk441[1] < 3 &&
gCurrentPinballGame->unk388 == 0 && squaredMagnitude < 200)
{
gMain.spriteGroups[36].available = 1;
gCurrentPinballGame->unk486 = 600;
m4aSongNumStart(SE_UNKNOWN_0x12A);
sub_11B0(9);
PlayRumble(9);
}
}
}
@ -1263,7 +1265,7 @@ void sub_40288(void)
yy = tempVector.y * tempVector.y;
squaredMagnitude = xx + yy;
if (gCurrentPinballGame->unk383 == 0 && gCurrentPinballGame->unk388 == 0 &&
gCurrentPinballGame->unk385 < gCurrentPinballGame->unk384 &&
gCurrentPinballGame->bonusModeHitCount < gCurrentPinballGame->legendaryHitsRequired &&
gCurrentPinballGame->unk452 == 0 && squaredMagnitude < 300)
{
gCurrentPinballGame->unk486 = 6;
@ -1284,7 +1286,7 @@ void sub_40288(void)
gCurrentPinballGame->unk520.x = gCurrentPinballGame->unk45C[i].x;
gCurrentPinballGame->unk520.y = gCurrentPinballGame->unk45C[i].y;
m4aSongNumStart(SE_UNKNOWN_0x12B);
sub_11B0(13);
PlayRumble(13);
}
}
@ -1360,7 +1362,7 @@ void sub_40288(void)
gCurrentPinballGame->ball->velocity.x = 0;
gCurrentPinballGame->unk441[i] = 0;
gCurrentPinballGame->unk5FA = 0;
sub_11B0(8);
PlayRumble(8);
}
gCurrentPinballGame->unk458[i]++;
@ -1685,7 +1687,7 @@ void sub_417F8(void)
if (gCurrentPinballGame->unk441[0] < 3 && gCurrentPinballGame->unk441[1] < 3 && gCurrentPinballGame->unk388 == 0)
{
gCurrentPinballGame->ball->velocity.x += 500;
sub_11B0(13);
PlayRumble(13);
}
}
@ -1714,7 +1716,7 @@ void sub_417F8(void)
if (gCurrentPinballGame->unk441[0] < 3 && gCurrentPinballGame->unk441[1] < 3 && gCurrentPinballGame->unk388 == 0)
{
gCurrentPinballGame->ball->velocity.x -= 500;
sub_11B0(13);
PlayRumble(13);
}
}
@ -1843,59 +1845,59 @@ void sub_423D8(void)
if (gCurrentPinballGame->unk516 == 1)
{
gCurrentPinballGame->unk3C4[0].x = 300;
gCurrentPinballGame->unk3C4[0].y = 1200;
gCurrentPinballGame->unk3C4[1].x = 1200;
gCurrentPinballGame->unk3C4[1].y = 400;
gCurrentPinballGame->unk3C4[2].x = 1000;
gCurrentPinballGame->unk3C4[2].y = 2500;
gCurrentPinballGame->minionLogicPosition[0].x = 300;
gCurrentPinballGame->minionLogicPosition[0].y = 1200;
gCurrentPinballGame->minionLogicPosition[1].x = 1200;
gCurrentPinballGame->minionLogicPosition[1].y = 400;
gCurrentPinballGame->minionLogicPosition[2].x = 1000;
gCurrentPinballGame->minionLogicPosition[2].y = 2500;
}
if (gCurrentPinballGame->unk516 == 88)
{
gCurrentPinballGame->unk3C4[0].x = 1600;
gCurrentPinballGame->unk3C4[0].y = 1800;
gCurrentPinballGame->minionLogicPosition[0].x = 1600;
gCurrentPinballGame->minionLogicPosition[0].y = 1800;
}
if (gCurrentPinballGame->unk516 == 120)
{
gCurrentPinballGame->unk3C4[1].x = 600;
gCurrentPinballGame->unk3C4[1].y = 1800;
gCurrentPinballGame->minionLogicPosition[1].x = 600;
gCurrentPinballGame->minionLogicPosition[1].y = 1800;
}
if (gCurrentPinballGame->unk516 == 170)
{
gCurrentPinballGame->unk3C4[2].x = 1800;
gCurrentPinballGame->unk3C4[2].y = 2000;
gCurrentPinballGame->minionLogicPosition[2].x = 1800;
gCurrentPinballGame->minionLogicPosition[2].y = 2000;
}
if (gCurrentPinballGame->unk516 == 215)
{
gCurrentPinballGame->unk3C4[0].x = 0;
gCurrentPinballGame->unk3C4[0].y = 2000;
gCurrentPinballGame->minionLogicPosition[0].x = 0;
gCurrentPinballGame->minionLogicPosition[0].y = 2000;
}
if (gCurrentPinballGame->unk516 == 305)
{
gCurrentPinballGame->unk3C4[1].x = 1800;
gCurrentPinballGame->unk3C4[1].y = 1800;
gCurrentPinballGame->minionLogicPosition[1].x = 1800;
gCurrentPinballGame->minionLogicPosition[1].y = 1800;
}
if (gCurrentPinballGame->unk516 == 315)
{
gCurrentPinballGame->unk3C4[2].x = 300;
gCurrentPinballGame->unk3C4[2].y = 1800;
gCurrentPinballGame->minionLogicPosition[2].x = 300;
gCurrentPinballGame->minionLogicPosition[2].y = 1800;
}
group = &gMain.spriteGroups[11];
if (group->available)
{
group->baseX = gCurrentPinballGame->unk3C4[0].x / 10;
group->baseY = gCurrentPinballGame->unk3C4[0].y / 10;
group->baseX = gCurrentPinballGame->minionLogicPosition[0].x / 10;
group->baseY = gCurrentPinballGame->minionLogicPosition[0].y / 10;
if (group->baseY <= -60)
group->baseY = -60;
else
gCurrentPinballGame->unk3C4[0].y -= 20;
gCurrentPinballGame->minionLogicPosition[0].y -= 20;
if (group->baseY > 200)
group->baseY = 180;
@ -1911,12 +1913,12 @@ void sub_423D8(void)
group = &gMain.spriteGroups[12];
if (group->available)
{
group->baseX = gCurrentPinballGame->unk3C4[1].x / 10;
group->baseY = gCurrentPinballGame->unk3C4[1].y / 10;
group->baseX = gCurrentPinballGame->minionLogicPosition[1].x / 10;
group->baseY = gCurrentPinballGame->minionLogicPosition[1].y / 10;
if (group->baseY <= -60)
group->baseY = -60;
else
gCurrentPinballGame->unk3C4[1].y -= 12;
gCurrentPinballGame->minionLogicPosition[1].y -= 12;
if (group->baseY > 200)
group->baseY = 180;
@ -1932,12 +1934,12 @@ void sub_423D8(void)
group = &gMain.spriteGroups[13];
if (group->available)
{
group->baseX = gCurrentPinballGame->unk3C4[2].x / 10;
group->baseY = gCurrentPinballGame->unk3C4[2].y / 10;
group->baseX = gCurrentPinballGame->minionLogicPosition[2].x / 10;
group->baseY = gCurrentPinballGame->minionLogicPosition[2].y / 10;
if (group->baseY <= -60)
group->baseY = -60;
else
gCurrentPinballGame->unk3C4[2].y -= 18;
gCurrentPinballGame->minionLogicPosition[2].y -= 18;
if (group->baseY > 200)
group->baseY = 180;
@ -2016,12 +2018,12 @@ void sub_423D8(void)
group = &gMain.spriteGroups[11];
if (group->available)
{
group->baseX = gCurrentPinballGame->unk3C4[0].x / 10;
group->baseY = gCurrentPinballGame->unk3C4[0].y / 10;
group->baseX = gCurrentPinballGame->minionLogicPosition[0].x / 10;
group->baseY = gCurrentPinballGame->minionLogicPosition[0].y / 10;
if (group->baseY > 180)
group->baseY = 180;
else if (gCurrentPinballGame->unk516 < 256)
gCurrentPinballGame->unk3C4[0].y += 20;
gCurrentPinballGame->minionLogicPosition[0].y += 20;
if (group->baseY < -60)
group->baseY = -60;
@ -2037,12 +2039,12 @@ void sub_423D8(void)
group = &gMain.spriteGroups[12];
if (group->available)
{
group->baseX = gCurrentPinballGame->unk3C4[1].x / 10;
group->baseY = gCurrentPinballGame->unk3C4[1].y / 10;
group->baseX = gCurrentPinballGame->minionLogicPosition[1].x / 10;
group->baseY = gCurrentPinballGame->minionLogicPosition[1].y / 10;
if (group->baseY > 180)
group->baseY = 180;
else if (gCurrentPinballGame->unk516 < 256)
gCurrentPinballGame->unk3C4[1].y += 10;
gCurrentPinballGame->minionLogicPosition[1].y += 10;
if (group->baseY < -60)
group->baseY = -60;

View File

@ -75,7 +75,7 @@ void RubyBoardProcess_3B_19B10(void)
sub_19B90();
sub_19E10();
if (gMain.unkF == 0)
if (gMain.modeChangeFlags == MODE_CHANGE_NONE)
{
sub_19F70();
}
@ -287,7 +287,7 @@ void sub_19E10(void)
{
sub_225F0();
}
sub_472E4();
BonusStage_HandleModeChangeFlags();
if (gCurrentPinballGame->unk1328 != 0)
{

View File

@ -35,7 +35,7 @@ void SapphireBoardProcess_3B_3276C(void)
sub_19B90();
sub_327C0();
if (!gMain.unkF)
if (!gMain.modeChangeFlags)
sub_328C8();
sub_32DF8();
@ -118,7 +118,7 @@ void sub_327C0(void)
if (gCurrentPinballGame->unk194)
sub_225F0();
sub_472E4();
BonusStage_HandleModeChangeFlags();
}
void sub_328C8(void)
@ -134,13 +134,13 @@ void sub_328C8(void)
sub_2E67C();
sub_31144();
if (!(gMain.unkF & 0x20))
if (!(gMain.modeChangeFlags & MODE_CHANGE_END_OF_GAME))
sub_2F79C();
}
void sub_32914(void)
{
if (gMain.unkF != 0)
if (gMain.modeChangeFlags != MODE_CHANGE_NONE)
return;
switch (gCurrentPinballGame->unk25)
@ -263,7 +263,7 @@ void sub_32B74(void)
gCurrentPinballGame->scoreAddedInFrame = 50000;
m4aSongNumStart(SE_UNKNOWN_0xD5);
sub_11B0(8);
PlayRumble(8);
}
void sub_32BE4(void)
@ -345,7 +345,7 @@ void sub_32BE4(void)
gCurrentPinballGame->ball->unk6 = 0;
gCurrentPinballGame->ball->velocity.x = -0x66;
gCurrentPinballGame->ball->velocity.y = 0xC8;
sub_11B0(7);
PlayRumble(7);
gCurrentPinballGame->ball->unk6 = 0;
gCurrentPinballGame->ball->positionQ0.x = 0xAB;
gCurrentPinballGame->ball->positionQ0.y = 0xD4;

View File

@ -58,7 +58,7 @@ void SphealBoardProcess_3A_42E48(void)
gCurrentPinballGame->ball->velocity.x = 0;
gCurrentPinballGame->ball->velocity.y = 0;
gCurrentPinballGame->ball->unk6 = 0;
gCurrentPinballGame->unk386 = 0;
gCurrentPinballGame->returnToMainBoardFlag = 0;
gCurrentPinballGame->unk53A = 0;
gCurrentPinballGame->unk542 = 0;
gCurrentPinballGame->unk544 = 0;
@ -73,9 +73,9 @@ void SphealBoardProcess_3A_42E48(void)
for (i = 0; i < 3; i++)
{
gCurrentPinballGame->unk3A0[i] = 0;
gCurrentPinballGame->unk3A3[i] = 0;
gCurrentPinballGame->unk3B0[i] = 0;
gCurrentPinballGame->minionState[i] = 0;
gCurrentPinballGame->minionFramesetIx[i] = 0;
gCurrentPinballGame->minionStateTimer[i] = 0;
}
for (i = 0; i < 3; i++)
@ -171,7 +171,7 @@ void SphealBoardProcess_3B_43228(void)
{
m4aMPlayAllStop();
MPlayStart(&gMPlayInfo_SE1, &se_unk_13b);
gMain.unkF = 0x80;
gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER;
gCurrentPinballGame->unk388 = 2;
gCurrentPinballGame->unk392 = 0;
}
@ -257,7 +257,7 @@ void SphealBoardProcess_3B_43228(void)
break;
case 5:
sub_45E90();
gCurrentPinballGame->unk386 = 1;
gCurrentPinballGame->returnToMainBoardFlag = 1;
gCurrentPinballGame->unk5FA = 1;
break;
}
@ -266,13 +266,13 @@ void SphealBoardProcess_3B_43228(void)
sub_43500();
sub_44D58();
sub_45E08();
if (gCurrentPinballGame->unk386)
if (gCurrentPinballGame->returnToMainBoardFlag)
{
gCurrentPinballGame->unk5FA = 1;
sub_350F0();
FadeToMainBoard();
}
sub_472E4();
BonusStage_HandleModeChangeFlags();
}
void sub_43500(void)
@ -282,10 +282,10 @@ void sub_43500(void)
struct OamDataSimple *oamSimple;
s16 var0;
if (gCurrentPinballGame->unk13 < 2 && gMain.unkF == 0)
if (gCurrentPinballGame->unk13 < 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE)
sub_455D0();
if (gCurrentPinballGame->unk13 < 2 && gMain.unkF == 0)
if (gCurrentPinballGame->unk13 < 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE)
{
for (i = 0; i < 2; i++)
{
@ -293,15 +293,15 @@ void sub_43500(void)
{
MPlayStart(&gMPlayInfo_SE1, &se_unk_13c);
gCurrentPinballGame->scoreAddedInFrame = 5000;
sub_11B0(8);
PlayRumble(8);
}
switch (gCurrentPinballGame->unk3A0[i])
switch (gCurrentPinballGame->minionState[i])
{
case 0:
gCurrentPinballGame->unk3B0[i] = 0;
gCurrentPinballGame->unk3A3[i] = 4;
gCurrentPinballGame->unk3A0[i] = 1;
gCurrentPinballGame->minionStateTimer[i] = 0;
gCurrentPinballGame->minionFramesetIx[i] = 4;
gCurrentPinballGame->minionState[i] = 1;
break;
case 1:
if (gCurrentPinballGame->unk548[i] > 0)
@ -310,16 +310,16 @@ void sub_43500(void)
}
else
{
if (gUnknown_086AFAE2[gCurrentPinballGame->unk3A3[i]][0] > gCurrentPinballGame->unk3B0[i])
if (gUnknown_086AFAE2[gCurrentPinballGame->minionFramesetIx[i]][0] > gCurrentPinballGame->minionStateTimer[i])
{
gCurrentPinballGame->unk3B0[i]++;
gCurrentPinballGame->minionStateTimer[i]++;
}
else
{
gCurrentPinballGame->unk3B0[i] = 0;
gCurrentPinballGame->unk3A3[i]++;
if (gCurrentPinballGame->unk3A3[i] == 6)
gCurrentPinballGame->unk3A3[i] = 4;
gCurrentPinballGame->minionStateTimer[i] = 0;
gCurrentPinballGame->minionFramesetIx[i]++;
if (gCurrentPinballGame->minionFramesetIx[i] == 6)
gCurrentPinballGame->minionFramesetIx[i] = 4;
}
}
break;
@ -330,14 +330,14 @@ void sub_43500(void)
}
else
{
if (gCurrentPinballGame->unk3B0[i] != 0)
if (gCurrentPinballGame->minionStateTimer[i] != 0)
{
gCurrentPinballGame->unk3B0[i]--;
gCurrentPinballGame->unk3A3[i] = 8;
gCurrentPinballGame->minionStateTimer[i]--;
gCurrentPinballGame->minionFramesetIx[i] = 8;
}
else
{
gCurrentPinballGame->unk3A3[i] = 7;
gCurrentPinballGame->minionFramesetIx[i] = 7;
}
}
break;
@ -348,18 +348,18 @@ void sub_43500(void)
}
else
{
if (gUnknown_086AFAE2[gCurrentPinballGame->unk3A3[i]][0] > gCurrentPinballGame->unk3B0[i])
if (gUnknown_086AFAE2[gCurrentPinballGame->minionFramesetIx[i]][0] > gCurrentPinballGame->minionStateTimer[i])
{
gCurrentPinballGame->unk3B0[i]++;
gCurrentPinballGame->minionStateTimer[i]++;
}
else
{
gCurrentPinballGame->unk3B0[i] = 0;
gCurrentPinballGame->unk3A3[i]++;
if (gCurrentPinballGame->unk3A3[i] > 14)
gCurrentPinballGame->minionStateTimer[i] = 0;
gCurrentPinballGame->minionFramesetIx[i]++;
if (gCurrentPinballGame->minionFramesetIx[i] > 14)
{
gCurrentPinballGame->unk3A3[i] = 4;
gCurrentPinballGame->unk3A0[i] = 1;
gCurrentPinballGame->minionFramesetIx[i] = 4;
gCurrentPinballGame->minionState[i] = 1;
}
}
}
@ -376,7 +376,7 @@ void sub_43500(void)
if (gCurrentPinballGame->unk548[0] > 0)
var0 = 0;
else
var0 = gUnknown_086AFAE0[gCurrentPinballGame->unk3A3[0]][0];
var0 = gUnknown_086AFAE0[gCurrentPinballGame->minionFramesetIx[0]][0];
DmaCopy16(3, gUnknown_084B47EC[var0], (void *)0x060114A0, 0x600);
oamSimple = &group->oam[0];
@ -392,7 +392,7 @@ void sub_43500(void)
if (gCurrentPinballGame->unk548[1] > 0)
var0 = 0;
else
var0 = gUnknown_086AFAE0[gCurrentPinballGame->unk3A3[1]][0];
var0 = gUnknown_086AFAE0[gCurrentPinballGame->minionFramesetIx[1]][0];
DmaCopy16(3, gUnknown_084B47EC[var0], (void *)0x06010CA0, 0x600);
oamSimple = &group->oam[0];
@ -416,7 +416,7 @@ void sub_4387C(void)
s16 var4;
const struct Unk_086AFAC0 *var5;
if (gCurrentPinballGame->unk13 == 1 && gMain.unkF == 0)
if (gCurrentPinballGame->unk13 == 1 && gMain.modeChangeFlags == MODE_CHANGE_NONE)
{
for (i = 0; i < 2; i++)
{
@ -561,7 +561,7 @@ void sub_4387C(void)
}
}
sub_11B0(7);
PlayRumble(7);
gCurrentPinballGame->unk54F[i] = 0;
gCurrentPinballGame->scoreAddedInFrame = 3000;
break;
@ -955,7 +955,7 @@ void sub_44D58(void)
if (gCurrentPinballGame->unk13 == 1)
gMain.spriteGroups[11].available = 1;
if (gCurrentPinballGame->unk13 < 2 && gMain.unkF == 0 && gCurrentPinballGame->unk542)
if (gCurrentPinballGame->unk13 < 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE && gCurrentPinballGame->unk542)
{
if (gCurrentPinballGame->unk542 == 21)
MPlayStart(&gMPlayInfo_SE1, &se_unk_138);
@ -1024,7 +1024,7 @@ void sub_44F3C(void)
gCurrentPinballGame->ball->velocity.x = -0x60;
gCurrentPinballGame->ball->velocity.y = 0x54;
gCurrentPinballGame->ball->oamPriority = 3;
sub_11B0(7);
PlayRumble(7);
}
if (gCurrentPinballGame->unk591 == 2)
@ -1143,7 +1143,7 @@ void sub_45164(void)
gCurrentPinballGame->unk24 = 0;
gCurrentPinballGame->unk7E = 0;
m4aSongNumStart(SE_UNKNOWN_0xE5);
sub_11B0(7);
PlayRumble(7);
}
gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2;
@ -1173,18 +1173,18 @@ void sub_455D0(void)
break;
case 1:
var0 = gCurrentPinballGame->unk530[i];
gCurrentPinballGame->unk3A0[var0] = 2;
gCurrentPinballGame->unk3B0[var0] = 0;
gCurrentPinballGame->unk3A3[var0] = 7;
gCurrentPinballGame->minionState[var0] = 2;
gCurrentPinballGame->minionStateTimer[var0] = 0;
gCurrentPinballGame->minionFramesetIx[var0] = 7;
if (gCurrentPinballGame->unk53C[i])
{
gCurrentPinballGame->unk53C[i]--;
if (gCurrentPinballGame->unk53C[i] == 0)
{
gCurrentPinballGame->unk536[i] = 0;
gCurrentPinballGame->unk3A0[var0] = 1;
gCurrentPinballGame->unk3B0[var0] = 0;
gCurrentPinballGame->unk3A3[var0] = 4;
gCurrentPinballGame->minionState[var0] = 1;
gCurrentPinballGame->minionStateTimer[var0] = 0;
gCurrentPinballGame->minionFramesetIx[var0] = 4;
}
}
break;
@ -1198,9 +1198,9 @@ void sub_455D0(void)
gCurrentPinballGame->unk536[i] = 3;
gCurrentPinballGame->unk533[i] = 0;
gCurrentPinballGame->unk3A0[var0] = 2;
gCurrentPinballGame->unk3B0[var0] = 0;
gCurrentPinballGame->unk3A3[var0] = 7;
gCurrentPinballGame->minionState[var0] = 2;
gCurrentPinballGame->minionStateTimer[var0] = 0;
gCurrentPinballGame->minionFramesetIx[var0] = 7;
break;
case 3:
var0 = gCurrentPinballGame->unk530[i];
@ -1225,9 +1225,9 @@ void sub_455D0(void)
{
gCurrentPinballGame->unk533[i] = 0;
gCurrentPinballGame->unk536[i] = 5;
gCurrentPinballGame->unk3A0[var0] = 3;
gCurrentPinballGame->unk3A3[var0] = 15;
gCurrentPinballGame->unk3B0[var0] = 0;
gCurrentPinballGame->minionState[var0] = 3;
gCurrentPinballGame->minionFramesetIx[var0] = 15;
gCurrentPinballGame->minionStateTimer[var0] = 0;
}
}
else
@ -1241,9 +1241,9 @@ void sub_455D0(void)
gCurrentPinballGame->unk580[i].y = 0x6600;
gCurrentPinballGame->unk578[i].y = 0xFED4;
gCurrentPinballGame->unk553[i] = 13;
gCurrentPinballGame->unk3A0[var0] = 2;
gCurrentPinballGame->unk3A3[var0] = 8;
gCurrentPinballGame->unk3B0[var0] = 12;
gCurrentPinballGame->minionState[var0] = 2;
gCurrentPinballGame->minionFramesetIx[var0] = 8;
gCurrentPinballGame->minionStateTimer[var0] = 12;
}
else
{
@ -1251,9 +1251,9 @@ void sub_455D0(void)
gCurrentPinballGame->unk578[i].y = 0xFE70;
gCurrentPinballGame->unk533[i] = 0;
gCurrentPinballGame->unk536[i] = 4;
gCurrentPinballGame->unk3A0[var0] = 3;
gCurrentPinballGame->unk3A3[var0] = 11;
gCurrentPinballGame->unk3B0[var0] = 0;
gCurrentPinballGame->minionState[var0] = 3;
gCurrentPinballGame->minionFramesetIx[var0] = 11;
gCurrentPinballGame->minionStateTimer[var0] = 0;
gCurrentPinballGame->unk542 = 100;
gCurrentPinballGame->unk52C[0]++;
}
@ -1278,14 +1278,14 @@ void sub_455D0(void)
{
gCurrentPinballGame->unk533[i]++;
MPlayStart(&gMPlayInfo_SE1, &se_unk_13d);
sub_11B0(7);
PlayRumble(7);
if (gCurrentPinballGame->unk533[i] < 3)
{
gCurrentPinballGame->ball->positionQ8.y = 0x6500;
gCurrentPinballGame->ball->velocity.y = -0x5A;
gCurrentPinballGame->unk3A0[var0] = 2;
gCurrentPinballGame->unk3A3[var0] = 8;
gCurrentPinballGame->unk3B0[var0] = 12;
gCurrentPinballGame->minionState[var0] = 2;
gCurrentPinballGame->minionFramesetIx[var0] = 8;
gCurrentPinballGame->minionStateTimer[var0] = 12;
}
else
{
@ -1293,9 +1293,9 @@ void sub_455D0(void)
gCurrentPinballGame->ball->velocity.y = -0x78;
gCurrentPinballGame->unk533[i] = 0;
gCurrentPinballGame->unk536[i] = 4;
gCurrentPinballGame->unk3A0[var0] = 3;
gCurrentPinballGame->unk3A3[var0] = 11;
gCurrentPinballGame->unk3B0[var0] = 0;
gCurrentPinballGame->minionState[var0] = 3;
gCurrentPinballGame->minionFramesetIx[var0] = 11;
gCurrentPinballGame->minionStateTimer[var0] = 0;
gCurrentPinballGame->unk542 = 106;
gCurrentPinballGame->unk52C[1]++;
}
@ -1349,7 +1349,7 @@ void sub_455D0(void)
gCurrentPinballGame->ball->velocity.y = -gCurrentPinballGame->ball->velocity.y / 3;
gCurrentPinballGame->ball->velocity.x = 0;
if (gCurrentPinballGame->unk533[i] == 1)
sub_11B0(7);
PlayRumble(7);
}
else
{

View File

@ -51,7 +51,7 @@ void MainBoardProcess_4B_19490(void)
{
s16 i;
if ((gMain.unkF & 1) == 0)
if ((gMain.modeChangeFlags & MODE_CHANGE_BANNER) == 0)
sub_195C4();
for (i = 0; i < 2; i++)
@ -127,7 +127,7 @@ void sub_195C4(void)
gCurrentPinballGame->unk1334[0].velocity.x = gCurrentPinballGame->unk60.x;
gCurrentPinballGame->unk1334[0].velocity.y = gCurrentPinballGame->unk60.y;
gCurrentPinballGame->unk5C = 0;
sub_11B0(7);
PlayRumble(7);
}
flipper->unk2 = flipper->position / 2 + 1;
flipper->position += 4;
@ -144,7 +144,7 @@ void sub_195C4(void)
gCurrentPinballGame->unk1334[0].velocity.x = gCurrentPinballGame->unk60.x;
gCurrentPinballGame->unk1334[0].velocity.y = gCurrentPinballGame->unk60.y;
gCurrentPinballGame->unk5C = 0;
sub_11B0(7);
PlayRumble(7);
}
flipper->position -= 2;
}
@ -160,10 +160,10 @@ void BonusBoardProcess_4B_19734(void)
s16 i;
s16 priority = 1;
if ((gMain.unkF & 1) == 0)
if ((gMain.modeChangeFlags & MODE_CHANGE_BANNER) == 0)
{
sub_19894();
gMain.unkF = gMain.unkF;
gMain.modeChangeFlags = gMain.modeChangeFlags;
}
for (i = 0; i < 2; i++)
{
@ -212,7 +212,7 @@ void sub_19894(void)
flipper->prevPosition = flipper->position;
flipper->unk2 = 0;
if (gCurrentPinballGame->heldButtonActions[i] && gMain.unkF == 0)
if (gCurrentPinballGame->heldButtonActions[i] && gMain.modeChangeFlags == MODE_CHANGE_NONE)
{
if (flipper->active == 0 && gCurrentPinballGame->unk25 == 0 && gCurrentPinballGame->unk1A == 0)
{
@ -243,7 +243,7 @@ void sub_19894(void)
gCurrentPinballGame->unk1334[0].velocity.x = gCurrentPinballGame->unk60.x;
gCurrentPinballGame->unk1334[0].velocity.y = gCurrentPinballGame->unk60.y;
gCurrentPinballGame->unk5C = 0;
sub_11B0(7);
PlayRumble(7);
}
flipper->unk2 = flipper->position / 2 + 1;
flipper->position += 4;
@ -260,7 +260,7 @@ void sub_19894(void)
gCurrentPinballGame->unk1334[0].velocity.x = gCurrentPinballGame->unk60.x;
gCurrentPinballGame->unk1334[0].velocity.y = gCurrentPinballGame->unk60.y;
gCurrentPinballGame->unk5C = 0;
sub_11B0(7);
PlayRumble(7);
}
flipper->position -= 2;
}

View File

@ -407,7 +407,7 @@ void sub_13D24(u16 arg0, struct Vector16 *arg1, struct Vector16 *arg2)
&& gCurrentPinballGame->unk61C == 0
&& gMain.selectedField < MAIN_FIELD_COUNT)
{
sub_11B0(6);
PlayRumble(6);
}
}
@ -796,7 +796,7 @@ u16 sub_14740(struct Vector16 *arg0, u16 *arg1)
res = 1;
m4aSongNumStart(SE_JIRACHI_HIT);
sub_11B0(7);
PlayRumble(7);
}
else
{
@ -822,7 +822,7 @@ u16 sub_14740(struct Vector16 *arg0, u16 *arg1)
res = 1;
m4aSongNumStart(SE_POKEMON_CATCH_HIT);
sub_11B0(7);
PlayRumble(7);
}
}
}

View File

@ -336,7 +336,7 @@ void BonusBoardProcess_7B_12BF8()
unk1334_0->unk6 -= 40;
}
if ((gMain.unkF & -0x41) == 0) // 1011 1111
if ((gMain.modeChangeFlags & ~MODE_CHANGE_EXPIRED_BONUS) == 0)
{
gCurrentPinballGame->unk392++;
if (r5 >= 7 && r5 <= 10)
@ -379,7 +379,7 @@ void BonusBoardProcess_7B_12BF8()
unk1334_0->unk6 -= 20;
}
if ((gMain.unkF & -0x81) == 0) // 0111 1111
if ((gMain.modeChangeFlags & ~MODE_CHANGE_BONUS_BANNER) == 0)
gCurrentPinballGame->unk392++;
if (gCurrentPinballGame->unk392 == 23)

View File

@ -170,7 +170,7 @@ void sub_4D3D0(void)
if (gCurrentPinballGame->eventTimer == 0)
return;
if (gCurrentPinballGame->unk294 == 2 && gMain.unkF == 0)
if (gCurrentPinballGame->unk294 == 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE)
gCurrentPinballGame->eventTimer--;
sp0[0] = gCurrentPinballGame->eventTimer / 3600;

View File

@ -2,6 +2,7 @@
#include "main.h"
#include "m4a.h"
#include "constants/bg_music.h"
#include "constants/dusclops_states.h"
extern const u16 gUnknown_08254B10[];
extern const u16 gUnknown_08257390[];
@ -765,7 +766,7 @@ void sub_153CC(s32 arg0, s16* arg1, u16* arg2)
*arg1 = 1;
gCurrentPinballGame->scoreAddedInFrame = 5000;
m4aSongNumStart(SE_UNKNOWN_0xB7);
sub_11B0(7);
PlayRumble(7);
return;
case 13:
if (gCurrentPinballGame->unk2D8 == 0)
@ -786,7 +787,7 @@ void sub_153CC(s32 arg0, s16* arg1, u16* arg2)
m4aSongNumStart(SE_UNKNOWN_0xB7);
gCurrentPinballGame->scoreAddedInFrame = 5000;
sub_11B0(7);
PlayRumble(7);
return;
case 14:
if ((gCurrentPinballGame->unk13 > 2) && (gCurrentPinballGame->unk13 != 5))
@ -803,7 +804,7 @@ void sub_153CC(s32 arg0, s16* arg1, u16* arg2)
m4aSongNumStart(SE_UNKNOWN_0xB7);
gCurrentPinballGame->scoreAddedInFrame = 5000;
sub_11B0(7);
PlayRumble(7);
return;
}
else if (gCurrentPinballGame->unk2DA == 3)
@ -815,7 +816,7 @@ void sub_153CC(s32 arg0, s16* arg1, u16* arg2)
m4aSongNumStart(SE_UNKNOWN_0xB7);
gCurrentPinballGame->unk2D9 = 1;
sub_11B0(7);
PlayRumble(7);
return;
}
}
@ -831,7 +832,7 @@ void sub_153CC(s32 arg0, s16* arg1, u16* arg2)
m4aSongNumStart(SE_UNKNOWN_0xB7);
gCurrentPinballGame->scoreAddedInFrame = 5000;
sub_11B0(7);
PlayRumble(7);
}
break;
@ -1055,7 +1056,7 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2)
gCurrentPinballGame->unk36E[1] = 0;
gCurrentPinballGame->unk36A[1] = 1;
sub_11B0(7);
PlayRumble(7);
gCurrentPinballGame->ball->velocity.x /= 2;
gCurrentPinballGame->ball->velocity.y /= 2;
@ -1078,7 +1079,7 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2)
gCurrentPinballGame->unk36E[0] = 0;
gCurrentPinballGame->unk36A[0] = 1;
sub_11B0(7);
PlayRumble(7);
gCurrentPinballGame->ball->velocity.x /= 2;
gCurrentPinballGame->ball->velocity.y /= 2;
@ -1505,7 +1506,7 @@ s16 COLLISION_CHECK_DUSCLOPS_171C8(struct Vector16* arg0, u16* arg1) {
sp00 = gUnknown_02031520.unk14.unk48[unk2 + unk1][unk0 * 64 + vec2.y * 8 + vec2.x];
sp02 = gUnknown_02031520.unk14.unk58[unk2 + unk1][unk0 * 64 + vec2.y * 8 + vec2.x];
sub_173FC(arg0, &sp00, &sp02);
CheckDusclopsEntitiesCollision(arg0, &sp00, &sp02);
switch_enum = sp02 & 0xF;
some_enum = sp02 >> 4;
@ -1563,11 +1564,11 @@ s16 COLLISION_CHECK_DUSCLOPS_171C8(struct Vector16* arg0, u16* arg1) {
break;
}
sub_17634(some_enum, &return_val, arg1);
CheckDusclopsAbzorbZoneHit(some_enum, &return_val, arg1);
return return_val;
}
void sub_173FC(struct Vector16 *arg0, s16* arg1, u8* arg2) {
void CheckDusclopsEntitiesCollision(struct Vector16 *arg0, s16* arg1, u8* arg2) {
s16 deltaX;
s16 deltaY;
u16 maskedResult;
@ -1577,7 +1578,7 @@ void sub_173FC(struct Vector16 *arg0, s16* arg1, u8* arg2) {
maskedResult = 0;
lowerNibble = 0;
if(gCurrentPinballGame->unk387 == 2)
if(gCurrentPinballGame->boardEntityCollisionMode == DUSCLOPS_ENTITY_COLLISION_MODE_DUSCLOPS)
{
if (*arg2 != 0)
return;
@ -1594,27 +1595,28 @@ void sub_173FC(struct Vector16 *arg0, s16* arg1, u8* arg2) {
if (lowerNibble == 0)
return;
//Can be hit when ready to absorb (2) or when walking (3)
temp = gCurrentPinballGame->unk3DC -3;
if (temp <= 1U)
*arg2 = 1;
else
*arg2 = lowerNibble;
gCurrentPinballGame->unk3DC = 4;
gCurrentPinballGame->unk3DC = DUSCLOPS_ENTITY_STATE_HIT;
*arg1 = maskedResult;
return;
}
if(gCurrentPinballGame->unk387 == 1)
if(gCurrentPinballGame->boardEntityCollisionMode == DUSCLOPS_ENTITY_COLLISION_MODE_DUSKULL)
{
if (*arg2 != 0)
return;
if (gCurrentPinballGame->unk3A9[0] != 0)
if (gCurrentPinballGame->minionCanCollide[0] )
{
deltaX = arg0->x - gCurrentPinballGame->unk3D0[0].x;
deltaY = arg0->y - gCurrentPinballGame->unk3D0[0].y;
deltaX = arg0->x - gCurrentPinballGame->minionCollisionPosition[0].x;
deltaY = arg0->y - gCurrentPinballGame->minionCollisionPosition[0].y;
if (deltaX < 64U && deltaY < 64U)
{
@ -1622,16 +1624,16 @@ void sub_173FC(struct Vector16 *arg0, s16* arg1, u8* arg2) {
lowerNibble = 0xF & gUnknown_08252B10[deltaY * 64 + deltaX];
if (lowerNibble != 0)
gCurrentPinballGame->unk3A0[0] = 4;
gCurrentPinballGame->minionState[0] = DUSKULL_ENTITY_STATE_HIT;
}
}
if (lowerNibble == 0)
{
if (gCurrentPinballGame->unk3A9[1] != 0)
if (gCurrentPinballGame->minionCanCollide[1] )
{
deltaX = arg0->x - gCurrentPinballGame->unk3D0[1].x;
deltaY = arg0->y - gCurrentPinballGame->unk3D0[1].y;
deltaX = arg0->x - gCurrentPinballGame->minionCollisionPosition[1].x;
deltaY = arg0->y - gCurrentPinballGame->minionCollisionPosition[1].y;
if (deltaX < 64U && deltaY < 64U)
{
@ -1639,17 +1641,17 @@ void sub_173FC(struct Vector16 *arg0, s16* arg1, u8* arg2) {
lowerNibble = 0xF & gUnknown_08252B10[deltaY * 64 + deltaX];
if (lowerNibble != 0)
gCurrentPinballGame->unk3A0[1] = 4;
gCurrentPinballGame->minionState[1] = DUSKULL_ENTITY_STATE_HIT;
}
}
}
if (lowerNibble == 0)
{
if ( gCurrentPinballGame->unk3A9[2] != 0)
if ( gCurrentPinballGame->minionCanCollide[2] )
{
deltaX = arg0->x - gCurrentPinballGame->unk3D0[2].x;
deltaY = arg0->y - gCurrentPinballGame->unk3D0[2].y;
deltaX = arg0->x - gCurrentPinballGame->minionCollisionPosition[2].x;
deltaY = arg0->y - gCurrentPinballGame->minionCollisionPosition[2].y;
if (deltaX < 64U && deltaY < 64U)
{
@ -1658,7 +1660,7 @@ void sub_173FC(struct Vector16 *arg0, s16* arg1, u8* arg2) {
if (lowerNibble != 0)
{
gCurrentPinballGame->unk3A0[2] = 4;
gCurrentPinballGame->minionState[2] = DUSKULL_ENTITY_STATE_HIT;
}
}
}
@ -1673,8 +1675,7 @@ void sub_173FC(struct Vector16 *arg0, s16* arg1, u8* arg2) {
}
}
void sub_17634(u8 arg0, u16 *arg1, u16 *arg2)
void CheckDusclopsAbzorbZoneHit(u8 arg0, u16 *arg1, u16 *arg2)
{
switch (arg0)
{
@ -1683,9 +1684,9 @@ void sub_17634(u8 arg0, u16 *arg1, u16 *arg2)
case 3:
break;
case 4:
gCurrentPinballGame->unk3DC = 6;
gCurrentPinballGame->unk3DC = DUSCLOPS_ENTITY_STATE_HIT_ABSORB_ZONE;
gCurrentPinballGame->unk1F = 1;
gCurrentPinballGame->unk387 = 0;
gCurrentPinballGame->boardEntityCollisionMode = DUSCLOPS_ENTITY_COLLISION_MODE_NONE;
break;
case 5:
case 6:
@ -1776,7 +1777,7 @@ void sub_17898(struct Vector16 *arg0, u16 *arg1, u8 *arg2)
s16 deltaY;
u16 arrayValue;
if (gCurrentPinballGame->unk387 == 1)
if (gCurrentPinballGame->boardEntityCollisionMode == 1)
{
if (*arg2 & 0xF)
return;
@ -1798,7 +1799,7 @@ void sub_17898(struct Vector16 *arg0, u16 *arg1, u8 *arg2)
gCurrentPinballGame->unk3DC = 9;
}
else if (gCurrentPinballGame->unk387 == 2)
else if (gCurrentPinballGame->boardEntityCollisionMode == 2)
{
u16 maskedResult;
@ -2217,7 +2218,7 @@ void sub_18180(struct Vector16 *arg0, u16 *arg1, u8 *arg2)
u16 arrayValue;
u16 maskedResult;
if (gCurrentPinballGame->unk387 == 1)
if (gCurrentPinballGame->boardEntityCollisionMode == 1)
{
if (*arg2 & 0xF)
return;
@ -2238,7 +2239,7 @@ void sub_18180(struct Vector16 *arg0, u16 *arg1, u8 *arg2)
*arg1 = maskedResult;
*arg2 = 6;
}
else if (gCurrentPinballGame->unk387 == 2)
else if (gCurrentPinballGame->boardEntityCollisionMode == 2)
{
if (*arg2 & 0xF)
return;
@ -2259,7 +2260,7 @@ void sub_18180(struct Vector16 *arg0, u16 *arg1, u8 *arg2)
*arg1 = maskedResult;
*arg2 = 6;
}
else if (gCurrentPinballGame->unk387 == 3)
else if (gCurrentPinballGame->boardEntityCollisionMode == 3)
{
if (*arg2 & 0xF)
return;
@ -2412,7 +2413,7 @@ void sub_1857C(struct Vector16 *arg0, u16 *arg1, u8 *arg2)
u16 lowerNibble;
s16 i;
if (gCurrentPinballGame->unk387 == 1)
if (gCurrentPinballGame->boardEntityCollisionMode == 1)
{
if ((*arg2 & 0xF) == 0)
{
@ -2612,7 +2613,7 @@ void sub_18A4C(struct Vector16 *arg0, u16 *arg1, u8 *arg2)
u16 maskedResult;
u16 lowerNibble;
if (gCurrentPinballGame->unk387 != 1)
if (gCurrentPinballGame->boardEntityCollisionMode != 1)
return;
if (*arg2 & 0xF)
return;

View File

@ -35,33 +35,33 @@ struct Unk_86AFCB0
extern const struct Unk_86AFCB0 gUnknown_086AFCB0[][2];
// Handle debug system flags
void sub_472E4(void)
void BonusStage_HandleModeChangeFlags(void)
{
if (gMain.unkF == 0x0)
if (gMain.modeChangeFlags == MODE_CHANGE_NONE)
return;
if (gMain.unkF & 0x8)
if (gMain.modeChangeFlags & MODE_CHANGE_BALL_SAVER)
{
// instantly reset ball
sub_478D8();
return;
}
if (gMain.unkF & 0x10)
if (gMain.modeChangeFlags & MODE_CHANGE_END_OF_BALL)
{
// lose life, and reset ball
sub_47670();
return;
}
if (gMain.unkF & 0x20)
if (gMain.modeChangeFlags & MODE_CHANGE_END_OF_GAME)
{
// end game
sub_474F4();
return;
}
if (gMain.unkF & 0x4)
if (gMain.modeChangeFlags & MODE_CHANGE_DEBUG)
{
// debug tool (move ball position, and change ball speed)
sub_47344();
@ -240,7 +240,7 @@ void sub_47670(void)
}
else
{
gMain.unkF &= 0xEF;
gMain.modeChangeFlags &= ~MODE_CHANGE_END_OF_BALL;
sub_47FBC();
if (gCurrentPinballGame->numLives > 0)
{
@ -281,7 +281,7 @@ void sub_47670(void)
}
else
{
gMain.unkF |= 0x20;
gMain.modeChangeFlags |= MODE_CHANGE_END_OF_GAME;
gMain.unk12 = 3600;
m4aSongNumStart(MUS_SLOTS_PRIZE);
}
@ -415,7 +415,7 @@ void sub_478D8(void)
{
gCurrentPinballGame->unk5FA = 0;
m4aSongNumStart(SE_UNKNOWN_0x96);
sub_11B0(6);
PlayRumble(6);
}
gCurrentPinballGame->ball->positionQ8.x = (gCurrentPinballGame->unk110 / 100 + 86) << 8;
@ -490,7 +490,7 @@ void sub_478D8(void)
}
else
{
gMain.unkF &= 0xF7;
gMain.modeChangeFlags &= ~MODE_CHANGE_BALL_SAVER;
gCurrentPinballGame->unk26 = 60;
sub_11C14(0);
gCurrentPinballGame->unk1F = 0;

View File

@ -46,6 +46,18 @@ extern u8 gEReaderBackground_Gfx[];
extern u8 gUnknown_0807FD00[];
extern s16 gUnknown_086A550C[];
enum EReaderState{
EREADER_STATE_0_LOAD_GRAPHICS = 0,
EREADER_STATE_1 = 1,
EREADER_STATE_2 = 2,
EREADER_STATE_3 = 3,
EREADER_STATE_4 = 4,
EREADER_STATE_5 = 5,
EREADER_STATE_6 = 6,
EREADER_STATE_7 = 7,
EREADER_STATE_8 = 8,
};
void EReaderMain(void)
{
gEReaderStateFuncs[gMain.subState]();
@ -85,7 +97,7 @@ void LoadEReaderGraphics(void)
m4aSongNumStart(MUS_UNKNOWN_0x5);
sub_0CBC();
sub_024C();
gMain.subState = 1;
gMain.subState = EREADER_STATE_1;
}
void sub_2DF0(void)
@ -130,7 +142,7 @@ void Ereader_State1_2E40(void)
gUnknown_0202C604 = gUnknown_086A551A[gUnknown_0202AD90] + 1;
}
else if (gUnknown_086A5528[gUnknown_0202AD90] == 0) {
gMain.subState = 2;
gMain.subState = EREADER_STATE_2;
}
else {
sub_377C();
@ -143,7 +155,7 @@ void Ereader_State1_2E40(void)
else if (JOY_NEW(B_BUTTON)) {
m4aSongNumStart(SE_MENU_CANCEL);
gUnknown_0202BEF8 = STATE_TITLE;
gMain.subState = 8;
gMain.subState = EREADER_STATE_8;
}
sub_394C();
DmaCopy16(3, gUnknown_03000000, (void*) VRAM + 0x4000, 0x3000);
@ -161,7 +173,7 @@ void Ereader_State2_2FC0(void)
gUnknown_0201B124 = 0;
gUnknown_0202C584 = 1;
m4aSongNumStart(SE_TRIGGER_BUTTON_HIT);
gMain.subState = 3;
gMain.subState = EREADER_STATE_3;
}
}
gUnknown_0202A58C = 0;
@ -198,7 +210,7 @@ void Ereader_State3_304C(void)
}
gMain.eReaderBonuses[gEReaderCardIndex] = 1;
gUnknown_0201A44C = 0;
gMain.subState = 5;
gMain.subState = EREADER_STATE_5;
}
else {
gUnknown_0201A44C = 0;
@ -208,7 +220,7 @@ void Ereader_State3_304C(void)
gUnknown_0202C5A4 = 0;
gUnknown_0202AD90 = 13;
sub_377C();
gMain.subState = 4;
gMain.subState = EREADER_STATE_4;
m4aSongNumStart(SE_FAILURE);
}
}
@ -227,7 +239,7 @@ void Ereader_State3_304C(void)
gUnknown_0202C5A4 = 0;
gUnknown_0202AD90 = 13;
sub_377C();
gMain.subState = 4;
gMain.subState = EREADER_STATE_4;
m4aSongNumStart(SE_FAILURE);
}
}
@ -307,7 +319,7 @@ void Ereader_State5_33A0(void)
sub_02B4();
m4aMPlayAllStop();
sub_0D10();
gMain.subState = 6;
gMain.subState = EREADER_STATE_6;
break;
}
@ -351,7 +363,7 @@ void Ereader_State6_343C(void)
m4aSongNumStart(MUS_UNKNOWN_0x5);
sub_0CBC();
sub_024C();
gMain.subState = 7;
gMain.subState = EREADER_STATE_7;
}
void Ereader_State7_33C8(void)
@ -389,7 +401,7 @@ void Ereader_State7_33C8(void)
else {
gUnknown_0202BEF8 = STATE_TITLE;
}
gMain.subState = 8;
gMain.subState = EREADER_STATE_8;
}
else {
sub_377C();

View File

@ -110,7 +110,7 @@ void PinballGameIdle1_19190(void)
sub_356A0();
}
if ((gMain.unkF & 2) != 0)
if ((gMain.modeChangeFlags & MODE_CHANGE_PAUSE) != 0)
{
DmaCopy16(3, gCurrentPinballGame->unk111A, (void *)OBJ_PLTT, OBJ_PLTT_SIZE);
}

View File

@ -152,7 +152,7 @@ void sub_1198(void)
gIntrTable[1] = Timer3Intr;
}
void sub_11B0(int arg0)
void PlayRumble(int arg0)
{
if (gMain_saveData.rumbleEnabled)
{

View File

@ -54,6 +54,24 @@ struct unkStruct_2002858
s8 unk26;
};
enum HighScoreStates{
HIGH_SCORE_STATE_0 = 0,
HIGH_SCORE_STATE_1 = 1,
HIGH_SCORE_STATE_2 = 2,
HIGH_SCORE_STATE_3 = 3,
HIGH_SCORE_STATE_4 = 4,
HIGH_SCORE_STATE_5 = 5,
HIGH_SCORE_STATE_6 = 6,
HIGH_SCORE_STATE_7 = 7,
HIGH_SCORE_STATE_8 = 8,
HIGH_SCORE_STATE_9 = 9,
HIGH_SCORE_STATE_10 = 10,
HIGH_SCORE_STATE_11 = 11,
HIGH_SCORE_STATE_12 = 12,
HIGH_SCORE_STATE_13 = 13,
HIGH_SCORE_STATE_14 = 14
};
struct unkStruct_2002858 gUnknown_02002858;
extern struct HighScoreEntry gUnknown_0202C610[MAIN_FIELD_COUNT][NUM_HIGH_SCORES];
@ -243,7 +261,7 @@ void HighScore_State1_D20C(void)
gUnknown_02002858.unk18 = 0;
gUnknown_0202BEB0 = 1;
gUnknown_0201C18C = 0;
gMain.subState = 2;
gMain.subState = HIGH_SCORE_STATE_2;
}
break;
}
@ -266,7 +284,7 @@ void HighScore_State2_D308(void)
gUnknown_02002858.unk18 = 999;
gUnknown_02002858.unk1A = 0;
m4aSongNumStart(MUS_HIGH_SCORE);
gMain.subState = 3;
gMain.subState = HIGH_SCORE_STATE_3;
}
else
{
@ -313,7 +331,7 @@ void HighScore_State2_D308(void)
CopyString(0, 0x15, 6 - (gUnknown_02002858.mainField << 1), gUnknown_08079870[gUnknown_02002858.highScoreIndex] +(gUnknown_02002858.mainField << 5), 4, 2);
}
m4aSongNumStart(MUS_HIGH_SCORE);
gMain.subState = 4;
gMain.subState = HIGH_SCORE_STATE_4;
}
DmaCopy16(3, gUnknown_03005C00, 0x6000000, 0x1000);
@ -354,7 +372,7 @@ void HighScore_State3_D4B8(void)
if(JOY_NEW(A_BUTTON | B_BUTTON))
{
m4aSongNumStart(SE_MENU_CANCEL);
gMain.subState = 0xb;
gMain.subState = HIGH_SCORE_STATE_11;
}
if(JOY_NEW(START_BUTTON))
{
@ -363,7 +381,7 @@ void HighScore_State3_D4B8(void)
m4aSongNumStart(SE_MENU_POPUP_OPEN);
gUnknown_0201B178 = 1;
gUnknown_0202BEBC = 0;
gMain.subState = 5;
gMain.subState = HIGH_SCORE_STATE_5;
}
}
@ -382,7 +400,7 @@ void HighScore_State3_D4B8(void)
m4aSongNumStart(SE_MENU_POPUP_OPEN);
gUnknown_0201B178 = 1;
gUnknown_0202BEBC = 4;
gMain.subState = 0xA;
gMain.subState = HIGH_SCORE_STATE_10;
}
}
if(gUnknown_02002884 > 0)
@ -509,7 +527,7 @@ void HighScore_State4_D664(void)
}
SaveFile_WriteToSram();
gMain.subState = 3;
gMain.subState = HIGH_SCORE_STATE_3;
}
else
{
@ -546,7 +564,7 @@ void HighScore_State5_D9F8(void)
sub_E908();
gUnknown_0201B124 = 0;
sub_E464();
gMain.subState = 6;
gMain.subState = HIGH_SCORE_STATE_6;
}
void HighScore_State6_DA20(void)
@ -558,7 +576,7 @@ void HighScore_State6_DA20(void)
gUnknown_0201B178 = 0;
gUnknown_0202BEBC = 0;
sub_2568();
gMain.subState = 3;
gMain.subState = HIGH_SCORE_STATE_3;
}
else
{
@ -574,12 +592,12 @@ void HighScore_State6_DA20(void)
s16 var0 = sub_E94C();
if (var0 == -1)
{
gMain.subState = 8;
gMain.subState = HIGH_SCORE_STATE_8;
}
else if (var0 == 1)
{
gUnknown_0202BEBC = 2;
gMain.subState = 7;
gMain.subState = HIGH_SCORE_STATE_7;
m4aSongNumStart(SE_FAILURE);
}
}
@ -588,7 +606,7 @@ void HighScore_State6_DA20(void)
if ((gUnknown_0202ADD0 & 0x7f0000) != 0 && gUnknown_0202ADE4 == -1 && ++gUnknown_0201A444 > 180)
{
gUnknown_0202BEBC = 2;
gMain.subState = 7;
gMain.subState = HIGH_SCORE_STATE_7;
m4aSongNumStart(SE_FAILURE);
}
}
@ -600,7 +618,7 @@ void HighScore_State9_DB4C(void)
if (++gUnknown_0201A444 > 2)
{
gUnknown_0201A444 = 0;
gMain.subState = 5;
gMain.subState = HIGH_SCORE_STATE_5;
}
}
@ -626,7 +644,7 @@ void HighScore_State7_DB70(void)
sub_02B4();
m4aMPlayAllStop();
sub_0D10();
gMain.subState = 0;
gMain.subState = HIGH_SCORE_STATE_0;
}
}
@ -665,7 +683,7 @@ void HighScore_State8_DBF4(void)
sub_02B4();
m4aMPlayAllStop();
sub_0D10();
gMain.subState = 12;
gMain.subState = HIGH_SCORE_STATE_12;
break;
}
@ -683,14 +701,14 @@ void HighScore_State10_DCF0(void)
sub_02B4();
m4aMPlayAllStop();
sub_0D10();
gMain.subState = 0;
gMain.subState = HIGH_SCORE_STATE_0;
}
else if (JOY_NEW(B_BUTTON))
{
m4aSongNumStart(SE_MENU_CANCEL);
gUnknown_0201B178 = 0;
gUnknown_0202BEBC = 0;
gMain.subState = 3;
gMain.subState = HIGH_SCORE_STATE_3;
}
}

View File

@ -284,7 +284,7 @@ void Options_HandleInput(void)
if (gGameBoyPlayerEnabled == TRUE)
{
m4aSongNumStart(SE_MENU_SELECT);
sub_11B0(11);
PlayRumble(11);
if (gOptionsData.unk2E == 0)
gOptionsData.unk2E = 1;

View File

@ -317,7 +317,7 @@ static void sub_4A270(void)
void sub_4A518(void)
{
gMain.unkF = 0;
gMain.modeChangeFlags = MODE_CHANGE_NONE;
gMain.unk10 = 0;
gMain.fieldFrameCount = 0;
gMain.unk11 = 0;
@ -566,7 +566,7 @@ void PinballGame_State1_4AAD8(void)
sub_3E5D0();
}
if (gMain.unkF & 0x2)
if (gMain.modeChangeFlags & MODE_CHANGE_PAUSE)
DmaCopy16(3, gCurrentPinballGame->unk111A, (void *)OBJ_PLTT, OBJ_PLTT_SIZE);
gCurrentPinballGame->unk1D = 2;
@ -600,13 +600,13 @@ void sub_4ABEC(void)
UpdateButtonActionsFromJoy();
CurrentBoardProcPairs_020028D8[1].unk4();
if (gMain.unkE == 0 && !(gMain.unkF & 0x2))
if (gMain.unkE == 0 && !(gMain.modeChangeFlags & MODE_CHANGE_PAUSE))
{
CurrentBoardProcPairs_020028D8[2].unk4();
CurrentBoardProcPairs_020028D8[0].unk4();
CurrentBoardProcPairs_020028D8[3].unk4();
CurrentBoardProcPairs_020028D8[4].unk4();
if (gMain.unkF)
if (gMain.modeChangeFlags)
{
if (!gCurrentPinballGame->unk1F)
{
@ -656,13 +656,13 @@ void sub_4ACF0(void)
sub_4B334();
CurrentBoardProcPairs_020028D8[1].unk4();
if (!(gMain.unkF & 0x2))
if (!(gMain.modeChangeFlags & MODE_CHANGE_PAUSE))
{
CurrentBoardProcPairs_020028D8[2].unk4();
CurrentBoardProcPairs_020028D8[0].unk4();
CurrentBoardProcPairs_020028D8[3].unk4();
CurrentBoardProcPairs_020028D8[4].unk4();
if (gMain.unkF)
if (gMain.modeChangeFlags)
{
if (!gCurrentPinballGame->unk1F)
{
@ -724,14 +724,14 @@ void sub_4AE8C(void)
UpdateButtonActionsFromJoy();
CurrentBoardProcPairs_020028D8[1].unk4();
if (gMain.unkF & 0x2)
if (gMain.modeChangeFlags & MODE_CHANGE_PAUSE)
return;
CurrentBoardProcPairs_020028D8[0].unk4();
CurrentBoardProcPairs_020028D8[2].unk4();
CurrentBoardProcPairs_020028D8[3].unk4();
CurrentBoardProcPairs_020028D8[4].unk4();
if (gMain.unkF & ~0x40)
if (gMain.modeChangeFlags & ~MODE_CHANGE_EXPIRED_BONUS)
{
if (!gCurrentPinballGame->unk1F)
{
@ -789,13 +789,13 @@ void sub_4B000(void)
s16 i;
sub_4B334();
if (!(gMain.unkF & 0x2))
if (!(gMain.modeChangeFlags & MODE_CHANGE_PAUSE))
{
CurrentBoardProcPairs_020028D8[0].unk4();
CurrentBoardProcPairs_020028D8[2].unk4();
CurrentBoardProcPairs_020028D8[3].unk4();
CurrentBoardProcPairs_020028D8[4].unk4();
if (gMain.unkF & ~0x40)
if (gMain.modeChangeFlags & ~MODE_CHANGE_EXPIRED_BONUS)
{
if (!gCurrentPinballGame->unk1F)
{
@ -909,7 +909,7 @@ void UpdateButtonActionsFromJoy(void)
gCurrentPinballGame->releasedButtonActions[i] = 0;
}
if (gMain.unkF)
if (gMain.modeChangeFlags)
return;
for (i = 0; i < 5; i++)
@ -942,7 +942,7 @@ void sub_4B334(void)
gCurrentPinballGame->releasedButtonActions[i] = 0;
}
if (gMain.unkF)
if (gMain.modeChangeFlags)
return;
if (gUnknown_02031510 < 60 * 60)
@ -991,7 +991,7 @@ void sub_4B408(s16 arg0)
gCurrentPinballGame->field = gMain.selectedField;
gCurrentPinballGame->unk10FE = gMain.unk5;
gCurrentPinballGame->unk10FF = gMain.unk6;
gCurrentPinballGame->unk1101 = gMain.unkF;
gCurrentPinballGame->unk1101 = gMain.modeChangeFlags;
gCurrentPinballGame->unk1102 = gMain.unk10;
gCurrentPinballGame->unk1103 = gMain.unk11;
gCurrentPinballGame->unk1320 = gMain.unk12;
@ -1054,7 +1054,7 @@ void sub_4B678(u16 arg0)
gMain.selectedField = gCurrentPinballGame->field;
gMain.unk5 = gCurrentPinballGame->unk10FE;
gMain.unk6 = gCurrentPinballGame->unk10FF;
gMain.unkF = gCurrentPinballGame->unk1101;
gMain.modeChangeFlags = gCurrentPinballGame->unk1101;
gMain.unk10 = gCurrentPinballGame->unk1102;
gMain.unk11 = gCurrentPinballGame->unk1103;
gMain.unk12 = gCurrentPinballGame->unk1320;

View File

@ -25,7 +25,7 @@ enum PokedexStates
POKEDEX_STATE_8,
POKEDEX_STATE_9,
POKEDEX_STATE_10,
POKEDEX_STATE_11,
POKEDEX_STATE_DELETE_CONFIRMATION,
POKEDEX_STATE_RETURN_TO_TITLE,
};
@ -34,7 +34,7 @@ static void PokedexListScrollUp(void);
static void PokedexListScrollDown(void);
static void PokedexListScrollUpFast(void);
static void PokedexListScrollDownFast(void);
void sub_4FC8(void);
void Pokedex_CheckDeleteKeyComboPressed(void);
void sub_5064(void);
void sub_51CC(void);
static s16 sub_5EA4(void);
@ -76,6 +76,14 @@ extern const s16 gUnknown_086A6014[][51];
extern const u16 gUnknown_086A5E12[][4];
extern s16 gUnknown_086A64F0[];
enum PokedexPopupType {
POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT = 0,
POKEDEX_POPUP_TRANSMITTING_ACTIVE = 1,
POKEDEX_POPUP_TRANSMISSION_ERROR = 2,
POKEDEX_POPUP_TRANSMISSION_COMPLETE = 3,
POKEDEX_POPUP_DELETE_CONFIRMATION_PROMPT = 4
};
// The japanese and english text glyphs are sourced from the same blob of tile graphics, and
// each glyph is two tiles high.
#define ENGLISH_GLYPHS_START 0x2820
@ -184,10 +192,10 @@ void sub_3FAC(void)
}
gUnknown_0202BEC4 = 0;
gUnknown_0202BEFC = 0;
Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT;
gUnknown_0201B120 = 0;
gUnknown_02002830 = 0;
gUnknown_02002831 = 0;
gPokedex_EraseSaveDataAccessCounter = 0;
gPokedex_EraseSaveDataAccessStep = 0;
gUnknown_0202C794 = 0;
gUnknown_0201C1B4 = 0;
gUnknown_0202C5AC = 0;
@ -332,13 +340,13 @@ void Pokedex_HandleListInput(void)
{
m4aSongNumStart(SE_MENU_POPUP_OPEN);
gUnknown_0202BEC4 = 1;
gUnknown_0202BEFC = 0;
Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT;
gUnknown_0202BF04 = 0;
gUnknown_0202A588 = 0;
gMain.subState = POKEDEX_STATE_LINK_SETUP;
}
sub_4FC8();
Pokedex_CheckDeleteKeyComboPressed();
}
if (gPokedexScrollWaitFrames > 0)
@ -582,7 +590,7 @@ void Pokedex_State7_49D0(void)
{
m4aSongNumStart(SE_MENU_CANCEL);
gUnknown_0202BEC4 = 0;
gUnknown_0202BEFC = 0;
Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT;
gUnknown_0202BF04 = 1;
gUnknown_0202A588 = 1;
sub_2568();
@ -608,7 +616,7 @@ void Pokedex_State7_49D0(void)
}
else if (var0 == 1)
{
gUnknown_0202BEFC = 2;
Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMISSION_ERROR;
gMain.subState = POKEDEX_STATE_8;
m4aSongNumStart(SE_FAILURE);
}
@ -621,7 +629,7 @@ void Pokedex_State7_49D0(void)
gUnknown_0201A444++;
if (0xB4 < gUnknown_0201A444)
{
gUnknown_0202BEFC = 2;
Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMISSION_ERROR;
gMain.subState = POKEDEX_STATE_8;
m4aSongNumStart(SE_FAILURE);
}
@ -651,7 +659,7 @@ void Pokedex_State8_4B34(void)
{
gUnknown_0201B120 = 0;
gUnknown_0202BEC4 = 0;
gUnknown_0202BEFC = 0;
Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT;
gUnknown_0202BF04 = 1;
gUnknown_0202A588 = 1;
@ -682,13 +690,13 @@ void Pokedex_State9_4BB4(void)
DisableSerial();
break;
case 0x82:
gUnknown_0202BEFC = 3;
Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMISSION_COMPLETE;
m4aSongNumStart(SE_MENU_SELECT);
break;
case 0xFA:
gUnknown_0201B120 = 0;
gUnknown_0202BEC4 = 0;
gUnknown_0202BEFC = 0;
Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT;
gUnknown_0202BF04 = 1;
gUnknown_0202A588 = 1;
for(index = 0; index < 0xE1; index++)
@ -709,7 +717,7 @@ void Pokedex_State9_4BB4(void)
gUnknown_0201B120++;
}
void Pokedex_State11_4C80(void)
void Pokedex_DeleteConfirmation(void)
{
s32 i;
@ -729,7 +737,7 @@ void Pokedex_State11_4C80(void)
}
gUnknown_0202BEC4 = 0;
gUnknown_0202BEFC = 0;
Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT;
gUnknown_0202BF04 = 1;
gUnknown_0202A588 = 1;
@ -743,7 +751,7 @@ void Pokedex_State11_4C80(void)
{
m4aSongNumStart(SE_MENU_CANCEL);
gUnknown_0202BEC4 = 0;
gUnknown_0202BEFC = 0;
Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT;
gUnknown_0202BF04 = 1;
gUnknown_0202A588 = 1;
gMain.subState = POKEDEX_STATE_HANDLE_LIST_INPUT;
@ -880,31 +888,31 @@ static void PokedexListScrollDownFast(void)
gPokedexScrollWaitFrames = SCROLL_WAIT_FRAMES;
}
void sub_4FC8(void)
void Pokedex_CheckDeleteKeyComboPressed(void)
{
// To delete save file, press R_BUTTON 3 times while holding L_BUTTON And DPAD_LEFT.
if (JOY_HELD(L_BUTTON | DPAD_LEFT) == (L_BUTTON | DPAD_LEFT) && JOY_NEW(R_BUTTON))
{
gUnknown_02002830 = 40;
if (++gUnknown_02002831 == 3)
gPokedex_EraseSaveDataAccessCounter = 40;
if (++gPokedex_EraseSaveDataAccessStep == 3)
{
gUnknown_02002831 = 0;
gUnknown_02002830 = 0;
gPokedex_EraseSaveDataAccessStep = 0;
gPokedex_EraseSaveDataAccessCounter = 0;
m4aSongNumStart(SE_MENU_POPUP_OPEN);
gUnknown_0202BEC4 = 1;
gUnknown_0202BEFC = 4;
Pokedex_PopupTypeIx = POKEDEX_POPUP_DELETE_CONFIRMATION_PROMPT;
gUnknown_0202BF04 = 0;
gUnknown_0202A588 = 0;
gMain.subState = POKEDEX_STATE_11;
gMain.subState = POKEDEX_STATE_DELETE_CONFIRMATION;
}
}
if (gUnknown_02002830 > 0)
if (gPokedex_EraseSaveDataAccessCounter > 0)
{
gUnknown_02002830--;
if (gUnknown_02002830 <= 0)
if (--gPokedex_EraseSaveDataAccessCounter <= 0)
{
gUnknown_02002830 = 0;
gUnknown_02002831 = 0;
gPokedex_EraseSaveDataAccessCounter = 0;
gPokedex_EraseSaveDataAccessStep = 0;
}
}
}
@ -1002,7 +1010,7 @@ void sub_51FC(void)
group3 = &gMain_spriteGroups[3];
group4 = &gMain_spriteGroups[4];
group5 = &gMain_spriteGroups[5 + gUnknown_0201A448];
group6 = &gMain_spriteGroups[17 + gUnknown_0202BEFC];
group6 = &gMain_spriteGroups[17 + Pokedex_PopupTypeIx];
group7 = &gMain_spriteGroups[22 + gUnknown_0202BEE0];
group8 = &gMain_spriteGroups[24];
group9 = &gMain_spriteGroups[25 + gUnknown_02019C28 * 2 + gUnknown_0202C5AC];
@ -1128,7 +1136,8 @@ void sub_51FC(void)
if (group6->available == 1)
{
if (gUnknown_0202BEFC == 0 || gUnknown_0202BEFC == 4)
if (Pokedex_PopupTypeIx == POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT ||
Pokedex_PopupTypeIx == POKEDEX_POPUP_DELETE_CONFIRMATION_PROMPT)
{
group6->baseX = 120;
group6->baseY = 100;
@ -1139,7 +1148,7 @@ void sub_51FC(void)
group6->baseY = 80;
}
spriteSet = gUnknown_086A6148[17 + gUnknown_0202BEFC];
spriteSet = gUnknown_086A6148[17 + Pokedex_PopupTypeIx];
for (i = 0; i < spriteSet->count; i++)
{
groupOam = &group6->oam[i];
@ -1217,7 +1226,7 @@ static void RenderLinkGraphics(void)
group3 = &gMain_spriteGroups[3];
group4 = &gMain_spriteGroups[4];
group6 = &gMain_spriteGroups[5 + gUnknown_0201A448];
group7 = &gMain_spriteGroups[17 + gUnknown_0202BEFC];
group7 = &gMain_spriteGroups[17 + Pokedex_PopupTypeIx];
group5 = &gMain_spriteGroups[24];
group0->available = TRUE;
@ -1300,7 +1309,8 @@ static void RenderLinkGraphics(void)
if (group7->available == 1)
{
if (gUnknown_0202BEFC == 0 || gUnknown_0202BEFC == 4)
if (Pokedex_PopupTypeIx == POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT ||
Pokedex_PopupTypeIx == POKEDEX_POPUP_DELETE_CONFIRMATION_PROMPT)
{
group7->baseX = 120;
group7->baseY = 100;
@ -1311,7 +1321,7 @@ static void RenderLinkGraphics(void)
group7->baseY = 80;
}
spriteSet = gUnknown_086A6148[17 + gUnknown_0202BEFC];
spriteSet = gUnknown_086A6148[17 + Pokedex_PopupTypeIx];
for (i = 0; i < spriteSet->count; i++)
{
groupOam = &group7->oam[i];
@ -1519,6 +1529,7 @@ static int sub_6144(void)
return 0;
}
//Link transfer as host (See sub_65DC for client)
int sub_639C(void)
{
int i, j;
@ -1539,7 +1550,7 @@ int sub_639C(void)
if (gUnknown_0201A4D0[0][0] == 0xECEC && gUnknown_0201A4D0[0][1] == 0xECEC)
{
gUnknown_0201B128 = -1;
gUnknown_0202BEFC = 1;
Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMITTING_ACTIVE;
gUnknown_0201C180 = 1;
}
else if (++gUnknown_0202BECC > 10)
@ -1607,6 +1618,7 @@ int sub_639C(void)
return 0;
}
//Link transfer as client (See sub_639C for host)
static int sub_65DC(void)
{
int i, j;
@ -1627,7 +1639,7 @@ static int sub_65DC(void)
if (gUnknown_0201A4D0[0][0] == 0xECEC && gUnknown_0201A4D0[0][1] == 0xECEC)
{
gUnknown_0201B128 = -1;
gUnknown_0202BEFC = 1;
Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMITTING_ACTIVE;
gUnknown_0201C180 = 1;
}
else if (++gUnknown_0202BECC > 10)

View File

@ -8,7 +8,7 @@ extern void sub_1A2C0(void);
void sub_1A0F4(void)
{
if ((gMain.unkF & 1) != 0)
if ((gMain.modeChangeFlags & MODE_CHANGE_BANNER) != 0)
{
gCurrentPinballGame->unk5F7 = 1;
if (gCurrentPinballGame->unkFA != 0)
@ -61,7 +61,7 @@ void sub_1A0F4(void)
{
gCurrentPinballGame->unkE6 = 0;
gCurrentPinballGame->unk1F = 0;
gMain.unkF = gMain.unkF & 254;
gMain.modeChangeFlags &= ~MODE_CHANGE_BANNER;
gCurrentPinballGame->unk5F7 = 0;
if (gCurrentPinballGame->unkFB == 0)
@ -80,7 +80,7 @@ void sub_1A0F4(void)
gCurrentPinballGame->unkE6 = 0;
gCurrentPinballGame->unk1F = 0;
gMain.unkF = gMain.unkF & 254;
gMain.modeChangeFlags &= ~MODE_CHANGE_BANNER;
gCurrentPinballGame->unk5F7 = 0;
if (gCurrentPinballGame->unkFB == 0)
@ -96,7 +96,7 @@ void sub_1A0F4(void)
{
gCurrentPinballGame->unkE6 = 0;
gCurrentPinballGame->unk1F = 0;
gMain.unkF = gMain.unkF & 254;
gMain.modeChangeFlags &= ~MODE_CHANGE_BANNER;
gCurrentPinballGame->unk5F7 = 0;
if (gCurrentPinballGame->unkFB == 0)

View File

@ -18,7 +18,7 @@ void sub_22D54(void);
void sub_1A98C(void)
{
if (gMain.unkF != 0)
if (gMain.modeChangeFlags != MODE_CHANGE_NONE)
return;
switch (gCurrentPinballGame->unk25)
@ -77,7 +77,7 @@ void sub_1AA38(void)
m4aSongNumStart(SE_UNKNOWN_0xCE);
gCurrentPinballGame->scoreAddedInFrame = 50000;
sub_11B0(8);
PlayRumble(8);
}
/*
@ -88,7 +88,7 @@ void sub_1AA38(void)
* When this function is nulled out at sub_1A9E8, the banner *doesn't* show, and
* the ball bounces off the sharpedo. However, the grid still shows a picked mon,
* and the mode otherwise works mostly normally, with the exception of affecting
* the 'tilt' behavior, and the colision with the cyndaquil pushback.
* the 'tilt' behavior, and the collision with the cyndaquil pushback.
*/
void sub_1AAA0(void)
{
@ -199,7 +199,7 @@ void sub_1AAA0(void)
if (gCurrentPinballGame->unk28 == 18)
{
m4aSongNumStart(194);
sub_11B0(7);
PlayRumble(7);
}
}
else if (gCurrentPinballGame->unk28 > 12)
@ -248,7 +248,7 @@ void sub_1AD84(void)
{
gCurrentPinballGame->unk2DA = 4;
m4aSongNumStart(SE_UNKNOWN_0xB7);
sub_11B0(7);
PlayRumble(7);
gCurrentPinballGame->unk28 = 500;
}
else if (gCurrentPinballGame->unk2D0 !=0)
@ -409,7 +409,7 @@ void sub_1B140(s16 arg0)
{
int var_r7 = 0;
if (gMain.unkF == 0 && gCurrentPinballGame->unk1BA != 0)
if (gMain.modeChangeFlags == MODE_CHANGE_NONE && gCurrentPinballGame->unk1BA != 0)
gCurrentPinballGame->unk1BA--;
if (arg0 == 0)
@ -761,7 +761,7 @@ void sub_1B140(s16 arg0)
{
m4aMPlayAllStop();
gMain.unkF |= 1;
gMain.modeChangeFlags |= MODE_CHANGE_BANNER;
gCurrentPinballGame->unkEA = 0;
gCurrentPinballGame->unkEC = 120;
gCurrentPinballGame->unkE8 = 0;
@ -1180,7 +1180,7 @@ void sub_1C560(void)
gCurrentPinballGame->unk5F3 = 0;
gCurrentPinballGame->scoreAddedInFrame = 10000;
gCurrentPinballGame->unk5F7 = 1;
sub_11B0(8);
PlayRumble(8);
}
void sub_1C5AC(void)

View File

@ -390,7 +390,7 @@ void sub_1D5D8(void)
var1 = gUnknown_086AD7C0[gCurrentPinballGame->unk2FD][0];
var0 = gUnknown_086AD7C0[gCurrentPinballGame->unk2FD][2];
m4aSongNumStart(SE_UNKNOWN_0xCF);
sub_11B0(7);
PlayRumble(7);
gCurrentPinballGame->scoreAddedInFrame = 50000;
break;
case 2:
@ -419,7 +419,7 @@ void sub_1D5D8(void)
var1 = gUnknown_086AD7C0[gCurrentPinballGame->unk2FD][0];
var0 = gUnknown_086AD7C0[gCurrentPinballGame->unk2FD][2];
m4aSongNumStart(SE_UNKNOWN_0xCF);
sub_11B0(7);
PlayRumble(7);
gCurrentPinballGame->scoreAddedInFrame = 100000;
break;
case 4:
@ -526,7 +526,7 @@ void sub_1DAD8(void)
{
if (gCurrentPinballGame->unk2F2 == 5)
{
gMain.unkF |= 0x1;
gMain.modeChangeFlags |= MODE_CHANGE_BANNER;
gCurrentPinballGame->unkEA = 0;
gCurrentPinballGame->unkEC = 3;
gCurrentPinballGame->unkE8 = 0;
@ -663,7 +663,7 @@ void sub_1DDDC(void)
gCurrentPinballGame->ball->oamPriority = 0;
gCurrentPinballGame->scoreAddedInFrame = 5000;
m4aSongNumStart(SE_UNKNOWN_0xD5);
sub_11B0(7);
PlayRumble(7);
break;
case 3:
if (gUnknown_086AD862[gCurrentPinballGame->unk2A5][1] > gCurrentPinballGame->unk2A6)
@ -790,7 +790,7 @@ void sub_1DDDC(void)
gCurrentPinballGame->unk2A2 = 8;
gCurrentPinballGame->scoreAddedInFrame = 10;
m4aSongNumStart(SE_UNKNOWN_0xB6);
sub_11B0(7);
PlayRumble(7);
if (gCurrentPinballGame->unk724)
gCurrentPinballGame->unk724 = 1;
break;
@ -823,7 +823,7 @@ void sub_1DDDC(void)
MPlayStart(&gMPlayInfo_SE3, &se_unk_d7);
if (gCurrentPinballGame->unk2A6 % 10 == 0)
sub_11B0(12);
PlayRumble(12);
}
break;
case 9:
@ -1053,7 +1053,7 @@ void sub_1EC48(void)
{
gCurrentPinballGame->scoreAddedInFrame = 500;
m4aSongNumStart(SE_UNKNOWN_0xB6);
sub_11B0(7);
PlayRumble(7);
if (gCurrentPinballGame->unk13 == 4 && gCurrentPinballGame->unk17 == 5 && gCurrentPinballGame->unk625 < 6)
{
if (gCurrentPinballGame->unk625 == 0)
@ -1069,7 +1069,7 @@ void sub_1EC48(void)
{
if (gCurrentPinballGame->unk16C == 4)
{
gMain.unkF |= 0x1;
gMain.modeChangeFlags |= MODE_CHANGE_BANNER;
gCurrentPinballGame->unkEA = 50;
gCurrentPinballGame->unkEC = 600;
gCurrentPinballGame->unkE8 = 236;
@ -1087,7 +1087,7 @@ void sub_1EC48(void)
}
else
{
gMain.unkF |= 0x1;
gMain.modeChangeFlags |= MODE_CHANGE_BANNER;
gCurrentPinballGame->unkEA = 50;
gCurrentPinballGame->unkEC = 600;
gCurrentPinballGame->unkE8 = 236;
@ -1768,7 +1768,7 @@ void sub_1FF0C(void)
gCurrentPinballGame->unk2E3[0] = 0;
gCurrentPinballGame->unk2E3[1] = 0;
gCurrentPinballGame->unk2E2 = 0;
sub_11B0(7);
PlayRumble(7);
m4aSongNumStart(SE_UNKNOWN_0xB7);
gCurrentPinballGame->scoreAddedInFrame = 3000;
gCurrentPinballGame->unk2E5[0] = 0;
@ -1818,7 +1818,7 @@ void sub_201B8(void)
if (gCurrentPinballGame->unk6C2 == 0)
{
gMain.unkF |= 0x1;
gMain.modeChangeFlags |= MODE_CHANGE_BANNER;
gCurrentPinballGame->unkEA = 70;
gCurrentPinballGame->unkEC = 160;
gCurrentPinballGame->unkE8 = 0;
@ -2019,7 +2019,7 @@ void sub_203CC(void)
gCurrentPinballGame->scoreAddedInFrame = 4000;
}
sub_11B0(11);
PlayRumble(11);
}
if (gCurrentPinballGame->unk61E >= 100)

View File

@ -1581,7 +1581,7 @@ void sub_23E18(void)
gCurrentPinballGame->unk1EC = 2;
gCurrentPinballGame->unk746 = 1;
DmaCopy16(3, gRubyStageCyndaquil_Gfx[gCurrentPinballGame->unk746], (void *)0x06013300, 0x280);
gMain.unkF |= 0x1;
gMain.modeChangeFlags |= MODE_CHANGE_BANNER;
gCurrentPinballGame->unkEA = 0;
gCurrentPinballGame->unkEC = 60;
gCurrentPinballGame->unkE8 = 72;
@ -2045,7 +2045,7 @@ void sub_24408(void)
gCurrentPinballGame->ball->velocity.y = -(Sin(angle2) * 160) / 20000;
}
sub_11B0(7);
PlayRumble(7);
}
}
break;
@ -2846,7 +2846,7 @@ void sub_26A10(void)
switch (gCurrentPinballGame->unk17)
{
case 0:
if (gMain.unkF == 0)
if (gMain.modeChangeFlags == MODE_CHANGE_NONE)
{
gCurrentPinballGame->unk17++;
gCurrentPinballGame->unk708 = 0;

View File

@ -87,7 +87,7 @@ void sub_27F94(void)
gCurrentPinballGame->unk6D3[i] = 15;
break;
case 4:
if (gMain.unkF == 0)
if (gMain.modeChangeFlags == MODE_CHANGE_NONE)
{
if (gMain.selectedField == FIELD_RUBY)
{
@ -97,7 +97,7 @@ void sub_27F94(void)
}
else if (gCurrentPinballGame->unk28 == 93)
{
gMain.unkF |= 1;
gMain.modeChangeFlags |= MODE_CHANGE_BANNER;
gCurrentPinballGame->unkEA = 0;
gCurrentPinballGame->unkEC = 120;
gCurrentPinballGame->unkE8 = 0;
@ -132,7 +132,7 @@ void sub_27F94(void)
}
else if (gCurrentPinballGame->unk28 == 67)
{
gMain.unkF |= 1;
gMain.modeChangeFlags |= MODE_CHANGE_BANNER;
gCurrentPinballGame->unkEA = 0;
gCurrentPinballGame->unkEC = 120;
gCurrentPinballGame->unkE8 = 0;
@ -294,7 +294,7 @@ void sub_28544(void)
gCurrentPinballGame->unk17++;
return;
case 1:
if (gMain.unkF == 0)
if (gMain.modeChangeFlags == MODE_CHANGE_NONE)
{
if (gMain.selectedField == FIELD_RUBY)
{
@ -304,7 +304,7 @@ void sub_28544(void)
}
else if (gCurrentPinballGame->unk28 == 93)
{
gMain.unkF |= 1;
gMain.modeChangeFlags |= MODE_CHANGE_BANNER;
gCurrentPinballGame->unkEA = 0;
gCurrentPinballGame->unkEC = 120;
gCurrentPinballGame->unkE8 = 0;
@ -338,7 +338,7 @@ void sub_28544(void)
}
else if (gCurrentPinballGame->unk28 == 67)
{
gMain.unkF |= 1;
gMain.modeChangeFlags |= MODE_CHANGE_BANNER;
gCurrentPinballGame->unkEA = 0;
gCurrentPinballGame->unkEC = 120;
gCurrentPinballGame->unkE8 = 0;
@ -367,7 +367,7 @@ void sub_28544(void)
}
}
}
else if ((gMain.unkF & 0x1) && gCurrentPinballGame->unkF0 == 1)
else if ((gMain.modeChangeFlags & MODE_CHANGE_BANNER) && gCurrentPinballGame->unkF0 == 1)
{
gCurrentPinballGame->unk6C4 = 3;
return;
@ -1273,7 +1273,7 @@ void sub_2A354(void)
{
if (gCurrentPinballGame->unk6DE == 120)
{
gMain.unkF |= 1;
gMain.modeChangeFlags |= MODE_CHANGE_BANNER;
gCurrentPinballGame->unkEA = 0;
gCurrentPinballGame->unkEC = 250;
gCurrentPinballGame->unkE8 = 272;
@ -1862,7 +1862,7 @@ void sub_2AADC(void)
if (gCurrentPinballGame->unk5A6 == 0)
{
m4aMPlayAllStop();
sub_11B0(8);
PlayRumble(8);
}
if (gCurrentPinballGame->unk5A6 == 2)
@ -2061,7 +2061,7 @@ void sub_2AADC(void)
if (temp_r0 > 183)
{
if (temp_r0 == 185)
sub_11B0(6);
PlayRumble(6);
if (temp_r0 == 184)
m4aSongNumStart(158);
@ -2077,7 +2077,7 @@ void sub_2AADC(void)
else if (temp_r0 > 167)
{
if (temp_r0 == 169)
sub_11B0(6);
PlayRumble(6);
if (temp_r0 == 168)
m4aSongNumStart(0x9E);
@ -2095,7 +2095,7 @@ void sub_2AADC(void)
if (temp_r0 > 115)
{
if (temp_r0 == 117)
sub_11B0(6);
PlayRumble(6);
if (temp_r0 == 116)
m4aSongNumStart(0x9E);
@ -2111,7 +2111,7 @@ void sub_2AADC(void)
else if (temp_r0 > 99)
{
if (temp_r0 == 101)
sub_11B0(6);
PlayRumble(6);
if (temp_r0 == 100)
m4aSongNumStart(0x9E);

View File

@ -128,7 +128,7 @@ void sub_2C538(void)
gCurrentPinballGame->ball->unk6 = 0;
gMain.spriteGroups[68].available = 1;
gCurrentPinballGame->unk302 = 6;
sub_11B0(8);
PlayRumble(8);
}
}
}

View File

@ -942,7 +942,7 @@ void sub_2E6AC(void)
gCurrentPinballGame->ball->velocity.y = 0;
gCurrentPinballGame->ball->unk6 = 0;
m4aSongNumStart(SE_UNKNOWN_0xE2);
sub_11B0(7);
PlayRumble(7);
gCurrentPinballGame->scoreAddedInFrame = 100000;
}
@ -1128,7 +1128,7 @@ void sub_2E6AC(void)
gCurrentPinballGame->ball->oamPriority = 3;
gCurrentPinballGame->unk24 = 0;
m4aSongNumStart(SE_UNKNOWN_0xE5);
sub_11B0(7);
PlayRumble(7);
}
gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2;
@ -1529,7 +1529,7 @@ void sub_2F79C(void)
{
m4aSongNumStart(SE_UNKNOWN_0xE8);
gCurrentPinballGame->scoreAddedInFrame = 10;
sub_11B0(13);
PlayRumble(13);
}
mosaicVal = gUnknown_08137CD6[gCurrentPinballGame->unk368 / 3];
@ -1701,7 +1701,7 @@ void sub_30178(void)
{
gCurrentPinballGame->scoreAddedInFrame = 500;
m4aSongNumStart(SE_UNKNOWN_0xB6);
sub_11B0(7);
PlayRumble(7);
if (gCurrentPinballGame->unk13 == 4 && gCurrentPinballGame->unk17 == 5)
{
if (gCurrentPinballGame->unk625 < 6)
@ -1717,7 +1717,7 @@ void sub_30178(void)
{
if (gCurrentPinballGame->unk6C6 == 0)
{
gMain.unkF |= 0x1;
gMain.modeChangeFlags |= MODE_CHANGE_BANNER;
gCurrentPinballGame->unkEA = 50;
gCurrentPinballGame->unkEC = 600;
gCurrentPinballGame->unkE8 = 0xEC;

View File

@ -160,7 +160,7 @@ void sub_304C8(void)
if (group->available)
{
group->baseX = 192 - gCurrentPinballGame->unk58;
if (gCurrentPinballGame->unk346 > 2 && gMain.unkF)
if (gCurrentPinballGame->unk346 > 2 && gMain.modeChangeFlags)
group->baseY = 56 - gCurrentPinballGame->unk5A;
else
group->baseY = 200;
@ -273,7 +273,7 @@ void sub_308DC(void)
}
else if (var0 < 38)
{
if (var0 == 32 && (gMain.unkF & 0x20) == 0)
if (var0 == 32 && (gMain.modeChangeFlags & MODE_CHANGE_END_OF_GAME) == 0)
m4aSongNumStart(SE_UNKNOWN_0xEB);
gCurrentPinballGame->unk32F[i] = 6;
@ -315,7 +315,7 @@ void sub_308DC(void)
if (gCurrentPinballGame->unk6C2 == 0)
{
gMain.unkF |= 1;
gMain.modeChangeFlags |= MODE_CHANGE_BANNER;
gCurrentPinballGame->unkEA = 70;
gCurrentPinballGame->unkEC = 160;
gCurrentPinballGame->unkE8 = 0;

View File

@ -61,7 +61,7 @@ void sub_31498(void)
}
else
{
gMain.unkF |= 0x1;
gMain.modeChangeFlags |= MODE_CHANGE_BANNER;
gCurrentPinballGame->unkEA = 0;
gCurrentPinballGame->unkEC = 920;
gCurrentPinballGame->unkE8 = 0;
@ -150,7 +150,7 @@ void sub_31498(void)
case 4:
if (gCurrentPinballGame->unk343 && gCurrentPinballGame->unk344)
{
gMain.unkF |= 0x1;
gMain.modeChangeFlags |= MODE_CHANGE_BANNER;
gCurrentPinballGame->unkEA = 0;
gCurrentPinballGame->unkEC = 160;
gCurrentPinballGame->unkE8 = 0;

View File

@ -11,7 +11,7 @@ extern const u8 gKyogreBonusClear_Gfx[];
extern const u8 gGroudonBonusClear_Gfx[];
extern const u8 gRayquazaBonusClear_Gfx[];
void sub_350F0(void)
void FadeToMainBoard(void)
{
gCurrentPinballGame->unk1100 = 1;
switch (gCurrentPinballGame->unk17)
@ -55,7 +55,7 @@ void sub_350F0(void)
}
}
void sub_351A8(void)
void ProceessBonusBannerAndScoring(void)
{
s16 i;
struct SpriteGroup *group;
@ -251,7 +251,7 @@ void sub_357B8(void)
gMain.unk5 = gMain.selectedField;
gMain.selectedField = temp;
gMain.unk6 = 0;
gMain.unkF = 0;
gMain.modeChangeFlags = MODE_CHANGE_NONE;
gCurrentPinballGame->eventTimer = 0;
gCurrentPinballGame->unk294 = 0;
if (gCurrentPinballGame->numCompletedBonusStages > 4)

View File

@ -83,7 +83,7 @@ void sub_4E920(void)
{
m4aSongNumStart(SE_SLINGSHOT_HIT);
gCurrentPinballGame->scoreAddedInFrame = 500;
sub_11B0(7);
PlayRumble(7);
}
}

View File

@ -347,7 +347,7 @@ void sub_4F9F0(void)
{
m4aSongNumStart(SE_SLINGSHOT_HIT);
gCurrentPinballGame->scoreAddedInFrame = 500;
sub_11B0(7);
PlayRumble(7);
}
}

View File

@ -5,7 +5,7 @@
#include "main.h"
#include "constants/bg_music.h"
static void sub_114FC(void);
static void TitleScreen_CheckDeleteKeyComboPressed(void);
static void sub_1157C(void);
static void sub_11640(void);
@ -26,7 +26,7 @@ enum
SUBSTATE_ANIM_CLOSE_MENU,
SUBSTATE_7,
SUBSTATE_8,
SUBSTATE_9,
SUBSTATE_DELETE_SAVE_GAME_CONFIRMATION,
SUBSTATE_EXEC_MENU_SELECTION,
SUBSTATE_11,
};
@ -177,7 +177,7 @@ void TitleScreen1_WaitForStartButton(void)
gMain.subState = SUBSTATE_2;
}
sub_114FC();
TitleScreen_CheckDeleteKeyComboPressed();
sub_1157C();
gTitlescreen.idleFramesCounter++;
@ -601,22 +601,19 @@ void TitleScreen11_80114B4(void)
SetMainGameState(gUnknown_086A964C[gTitlescreen.unk6]);
}
static void sub_114FC(void)
static void TitleScreen_CheckDeleteKeyComboPressed(void)
{
// To delete save file, press R_BUTTON 3 times while holding L_BUTTON And DPAD_LEFT.
if (JOY_HELD(L_BUTTON | DPAD_LEFT) == (L_BUTTON | DPAD_LEFT))
if (JOY_HELD(L_BUTTON | DPAD_LEFT) == (L_BUTTON | DPAD_LEFT) && JOY_NEW(R_BUTTON))
{
if (JOY_NEW(R_BUTTON))
gEraseSaveDataAccessCounter = 40;
if (++gEraseSaveDataAccessStep == 3)
{
gEraseSaveDataAccessCounter = 40;
if (++gEraseSaveDataAccessStep == 3)
{
gEraseSaveDataAccessStep = 0;
gEraseSaveDataAccessCounter = 0;
m4aSongNumStart(SE_MENU_POPUP_OPEN);
gTitlescreen.deleteSaveWindowVisible = TRUE;
gMain.subState = SUBSTATE_9;
}
gEraseSaveDataAccessStep = 0;
gEraseSaveDataAccessCounter = 0;
m4aSongNumStart(SE_MENU_POPUP_OPEN);
gTitlescreen.deleteSaveWindowVisible = TRUE;
gMain.subState = SUBSTATE_DELETE_SAVE_GAME_CONFIRMATION;
}
}

View File

@ -99,7 +99,7 @@ void ResetSomeGraphicsRelatedStuff(void)
ClearGraphicsMemory();
sub_0518();
ClearSprites();
gMain.unkF = 0;
gMain.modeChangeFlags = MODE_CHANGE_NONE;
gMain.unk10 = 0;
gMain.fieldFrameCount = 0;
gMain.unk11 = 0;

View File

@ -34,9 +34,9 @@ gUnknown_0200282C: @ 0x0200282C
.space 0x1
gUnknown_0200282D: @ 0x0200282D
.space 0x3
gUnknown_02002830: @ 0x02002830
gPokedex_EraseSaveDataAccessCounter: @ 0x02002830
.space 0x1
gUnknown_02002831: @ 0x02002831
gPokedex_EraseSaveDataAccessStep: @ 0x02002831
.space 0x7
gFieldSelectData: @ 0x02002838
.space 0x18
@ -467,7 +467,7 @@ gUnknown_0202BEF4: @ 0x0202BEF4
.space 0x4
gUnknown_0202BEF8: @ 0x0202BEF8
.space 0x4
gUnknown_0202BEFC: @ 0x0202BEFC
Pokedex_PopupTypeIx: @ 0x0202BEFC
.space 0x4
gUnknown_0202BF00: @ 0x0202BF00
.space 0x4