diff --git a/data/rom_1.s b/data/rom_1.s index 6f420e6..38408db 100644 --- a/data/rom_1.s +++ b/data/rom_1.s @@ -6,7 +6,7 @@ #include "gba/io_reg.h" .include "asm/macros.inc" -gUnknown_08055A68:: @ 0x08055A68 +gAreaRouletteTable:: @ 0x08055A68 .2byte AREA_FOREST_RUBY .2byte AREA_VOLCANO .2byte AREA_PLAINS_RUBY @@ -85,15 +85,15 @@ gDexInfoWindowEmptyTextRowTiles:: @ 0x0805C840 gPokedexStateFuncs:: @ 0x0805C880 .4byte LoadPokedexGraphics @ POKEDEX_STATE_LOAD_GRAPHICS .4byte Pokedex_HandleListInput @ POKEDEX_STATE_HANDLE_LIST_INPUT - .4byte Pokedex_State2_43D4 @ POKEDEX_STATE_2 - .4byte Pokedex_State3_4428 @ POKEDEX_STATE_3 - .4byte Pokedex_State4_4860 @ POKEDEX_STATE_4 - .4byte Pokedex_State5_45A4 @ POKEDEX_STATE_5 + .4byte Pokedex_PostScrollRefresh @ POKEDEX_STATE_2 + .4byte Pokedex_InfoWindowSlideIn @ POKEDEX_STATE_3 + .4byte Pokedex_InfoWindowSlideOut @ POKEDEX_STATE_4 + .4byte Pokedex_DetailViewInput @ POKEDEX_STATE_5 .4byte Pokedex_LinkSetup @ POKEDEX_STATE_LINK_SETUP - .4byte Pokedex_State7_49D0 @ POKEDEX_STATE_7 - .4byte Pokedex_State8_4B34 @ POKEDEX_STATE_8 - .4byte Pokedex_State9_4BB4 @ POKEDEX_STATE_9 - .4byte Pokedex_State10_4B10 @ POKEDEX_STATE_10 + .4byte Pokedex_LinkTransferLoop @ POKEDEX_STATE_7 + .4byte Pokedex_LinkErrorTimeout @ POKEDEX_STATE_8 + .4byte Pokedex_LinkSuccessSequence @ POKEDEX_STATE_9 + .4byte Pokedex_LinkRetryDelay @ POKEDEX_STATE_10 .4byte Pokedex_DeleteConfirmation @ POKEDEX_STATE_DELETE_CONFIRMATION .4byte Pokedex_ReturnToTitle @ POKEDEX_STATE_RETURN_TO_TITLE @@ -114,94 +114,94 @@ gIntroStateFuncs:: @ 0x080792CC .4byte Intro_State4_93D0 gIntroSceneFuncs:: @ 0x080792E0 - .4byte sub_9498 - .4byte sub_978C - .4byte sub_9830 - .4byte sub_9878 - .4byte sub_98B4 - .4byte sub_9920 - .4byte sub_999C - .4byte sub_9AB8 + .4byte IntroScene1_LoadGraphics + .4byte IntroScene1_AnimateTitleReveal + .4byte IntroScene1_ZoomOutTitle + .4byte IntroScene1_ResetAfterZoom + .4byte IntroScene1_AnimateSecondReveal + .4byte IntroScene1_FadeInOverlay + .4byte IntroScene1_ScrollAndFade + .4byte IntroScene1_ParallaxScroll .4byte nullsub_4 - .4byte sub_9C10 + .4byte IntroScene1_FinalScroll .4byte nullsub_5 .4byte nullsub_17 - .4byte sub_9C9C - .4byte sub_A154 - .4byte sub_A16C + .4byte IntroScene1_BeginFadeOut + .4byte IntroScene1_ClearGraphics + .4byte IntroScene2_LoadGraphics .4byte nullsub_6 - .4byte sub_A2F0 + .4byte IntroScene2_ScrollBGs .4byte nullsub_7 - .4byte sub_A39C - .4byte sub_A43C - .4byte sub_A454 - .4byte sub_A674 - .4byte sub_A710 + .4byte IntroScene2_FinalScrollAndFade + .4byte IntroScene2_ClearGraphics + .4byte IntroScene3_LoadGraphics + .4byte IntroScene3_ScrollIn + .4byte IntroScene3_AnimateAndSwapBG .4byte nullsub_8 - .4byte sub_A860 - .4byte sub_A950 - .4byte sub_A968 + .4byte IntroScene3_BeginFadeOut + .4byte IntroScene3_ClearGraphics + .4byte IntroScene4_LoadGraphics .4byte nullsub_9 - .4byte sub_AAF4 + .4byte IntroScene4_ScrollBGs .4byte nullsub_10 - .4byte sub_AB90 - .4byte sub_AC20 - .4byte sub_AC38 - .4byte sub_AE74 - .4byte sub_AF80 + .4byte IntroScene4_FinalScrollAndFade + .4byte IntroScene4_ClearGraphics + .4byte IntroScene5_LoadGraphics + .4byte IntroScene5_ScrollIn + .4byte IntroScene5_AnimateEntities .4byte nullsub_11 - .4byte sub_B090 - .4byte sub_B2E0 - .4byte sub_B2F8 - .4byte sub_B560 - .4byte sub_B6C4 - .4byte sub_B7A0 - .4byte sub_BA2C - .4byte sub_BA3C - .4byte sub_BC54 - .4byte sub_BCE8 - .4byte sub_BDC0 - .4byte sub_BED0 - .4byte sub_C018 - .4byte sub_C0BC - .4byte sub_C210 - .4byte sub_C228 - .4byte sub_C38C - .4byte sub_C3D0 - .4byte sub_C450 + .4byte IntroScene5_FadeOutAndClearOAM + .4byte IntroScene5_ClearGraphics + .4byte IntroScene6_LoadGraphics + .4byte IntroScene6_AnimateStarsScrollIn + .4byte IntroScene6_ContinueBounce + .4byte IntroScene6_FadeOutAndClearOAM + .4byte IntroScene6_AdvanceIndex + .4byte IntroScene7_LoadGraphics + .4byte IntroScene7_ScrollWaves1 + .4byte IntroScene7_ScrollWaves2 + .4byte IntroScene7_ScrollWaves3 + .4byte IntroScene7_WailmerAndAllWaves + .4byte IntroScene7_WailmerShakeAndShrink + .4byte IntroScene7_BeginFadeOut + .4byte IntroScene7_ClearGraphics + .4byte IntroScene8a_LoadGraphics + .4byte IntroScene8a_WaitForExplosion + .4byte IntroScene8a_ExplodeAndLaunch + .4byte IntroScene8a_DriftAndFade .4byte nullsub_12 .4byte nullsub_13 - .4byte sub_C498 - .4byte sub_C814 - .4byte sub_C948 - .4byte sub_CAA0 - .4byte sub_CB6C - .4byte sub_CBA4 + .4byte IntroScene8a_FadeOutAndClearOAM + .4byte IntroScene8a_ClearAndResetOAM + .4byte IntroScene8b_LoadGraphics + .4byte IntroScene8b_BallFlyIn + .4byte IntroScene8b_ScrollClouds + .4byte IntroScene8b_CloudSpriteAndWhiteFlash .4byte nullsub_14 - .4byte sub_CC94 - .4byte sub_CCF8 + .4byte IntroScene8b_FadeOutMusic + .4byte IntroScene8b_EndIntro gHighScoresStateFuncs:: @ 0x080793E8 .4byte LoadHighScoreGraphics - .4byte HighScore_State1_D20C - .4byte HighScore_State2_D308 - .4byte HighScore_State3_D4B8 - .4byte HighScore_State4_D664 - .4byte HighScore_State5_D9F8 - .4byte HighScore_State6_DA20 - .4byte HighScore_State7_DB70 - .4byte HighScore_State8_DBF4 - .4byte HighScore_State9_DB4C - .4byte HighScore_State10_DCF0 - .4byte HighScore_State11_DD4C - .4byte HighScore_State12_E0EC - .4byte HighScore_State13_E230 - .4byte HighScore_State14_E390 + .4byte HighScore_ShowCompletionBanner + .4byte HighScore_FlashNewEntry + .4byte HighScore_BrowseScores + .4byte HighScore_NameEntry + .4byte HighScore_InitLinkExchange + .4byte HighScore_LinkExchangeLoop + .4byte HighScore_LinkError + .4byte HighScore_LinkSuccess + .4byte HighScore_LinkRetryWait + .4byte HighScore_ResetConfirmation + .4byte HighScore_ExitToTitle + .4byte HighScore_ReloadAfterLink + .4byte HighScore_ShowMergedScores + .4byte HighScore_ReturnToMain gIdleHighScoresStateFuncs:: @ 0x08079424 - .4byte IdleHighScore_State0_DD70 - .4byte IdleHighScore_State1_DF68 - .4byte IdleHighScore_State2_E0C4 + .4byte IdleHighScore_LoadGraphics + .4byte IdleHighScore_AutoScroll + .4byte IdleHighScore_Exit gDefaultHighScores:: @ 0x08079430 @ 4 'name' blocks followed by 2 score high/low @@ -243,7 +243,7 @@ gDefaultHighScoresDebug:: @ 0x080795B0 .4byte 0xb, 0x26, 0x26, 0x26, 0xc8, 0x7d0 @ 20000002000 .4byte 0xa, 0x26, 0x26, 0x26, 0x0, 0xd0020 @ 852000 -gUnknown_08079730:: @ 0x08079730 +gHighScoreNamePositions:: @ 0x08079730 .4byte 0x06, 0x03, 0x00 .4byte 0x06, 0x05, 0x01 .4byte 0x06, 0x07, 0x01 @@ -261,7 +261,7 @@ gUnknown_08079730:: @ 0x08079730 .4byte 0x04, 0x2F, 0x01 .4byte 0x04, 0x31, 0x01 -gUnknown_080797F0:: @ 0x080797F0 +gHighScoreNamePixelPositions:: @ 0x080797F0 .4byte 0x30, 0x18 .4byte 0x30, 0x2C .4byte 0x30, 0x3C @@ -279,20 +279,20 @@ gUnknown_080797F0:: @ 0x080797F0 .4byte 0x30, 0x7C .4byte 0x30, 0x8C -gUnknown_08079870:: @ 0x08079870 +gHighScoreNameRowTilemapOffsets:: @ 0x08079870 .4byte 0x02, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 0x11 gTitlescreenStateFuncs:: @ 0x08079890 .4byte LoadTitlescreenGraphics @ SUBSTATE_LOAD_GRAPHICS .4byte TitleScreen1_WaitForStartButton @ SUBSTATE_WAIT_FOR_START_BUTTON - .4byte TitleScreen2_8010CF0 @ SUBSTATE_2 + .4byte TitleScreen2_AnimOpenMenu @ SUBSTATE_2 .4byte TitleScreen3_8010E00 @ SUBSTATE_3 .4byte TitleScreen4_MenuInputNoSavedGame @ SUBSTATE_MENU_INPUT_NO_SAVED_GAME .4byte TitleScreen5_MenuInputSavedGame @ SUBSTATE_MENU_INPUT_SAVED_GAME .4byte TitleScreen6_AnimCloseMenu @ SUBSTATE_ANIM_CLOSE_MENU .4byte TitleScreen7_8011020 @ SUBSTATE_7 .4byte TitleScreen8_8011228 @ SUBSTATE_8 - .4byte TitleScreen9_8010D84 @ SUBSTATE_DELETE_SAVE_GAME_CONFIRMATION + .4byte TitleScreen9_DeleteSaveConfirmation @ SUBSTATE_DELETE_SAVE_GAME_CONFIRMATION .4byte TitleScreen10_ExecMenuSelection @ SUBSTATE_EXEC_MENU_SELECTION .4byte TitleScreen11_80114B4 @ SUBSTATE_11 @@ -322,17 +322,17 @@ gBonusFieldSelectStages_Gfx:: @ 0x0807C4E0 .incbin "graphics/field_select/bonus_field_select_stages.4bpp" .space 0x20 -gUnknown_0807DD00:: @ 0x0807DD00 +gEReaderText_Tilemap:: @ 0x0807DD00 .incbin "baserom.gba", 0x7DD00, 0x2000 -gUnknown_0807FD00:: @ 0x0807FD00 +gEReaderOverlay_Tilemap:: @ 0x0807FD00 .incbin "baserom.gba", 0x7FD00, 0x800 gEReaderBackground_Gfx:: @ 0x08080500 .incbin "graphics/ereader/background.4bpp" .space 0x20 -gUnknown_08081D20:: @ 0x08081D20 +gEReaderBackground_Pals:: @ 0x08081D20 .incbin "baserom.gba", 0x81D20, 0x200 gPokedexBg1_Tilemap:: @ 0x08081F20 @@ -342,7 +342,7 @@ gPokedexBgText_Gfx:: @ 0x08082720 .incbin "graphics/pokedex/bg_text.4bpp" .space 0x20 -gUnknown_08086B40:: @ 0x08086B40 +gPokedexInfoWindowTiles:: @ 0x08086B40 .incbin "baserom.gba", 0x86B40, 0x800 gPokedexBg2_Tilemap:: @ 0x08087340 @@ -368,24 +368,24 @@ gPokedexSprites_Gfx:: @ 0x08089B60 gPokedexTextGlyphs_Gfx:: @ 0x08090780 .incbin "graphics/pokedex/text_glyphs.4bpp" -gUnknown_080947A0:: @ 0x080947A0 +gHighScoreScoreTable_Tilemap:: @ 0x080947A0 .incbin "baserom.gba", 0x947A0, 0x1000 gHighScoreText_Gfx:: @ 0x080957A0 .incbin "graphics/high_score/text.4bpp" .space 0x20 -gUnknown_08099FC0:: @ 0x08099FC0 +gHighScoreBallWatermark_Tilemap:: @ 0x08099FC0 .incbin "baserom.gba", 0x99FC0, 0x1000 gHighScoreBallWatermark_Gfx:: @ 0x0809AFC0 .incbin "graphics/high_score/ball_watermark.4bpp" .space 0x20 -gUnknown_0809DBE0:: @ 0x0809DBE0 +gHighScoreBG_Pals:: @ 0x0809DBE0 .incbin "baserom.gba", 0x9DBE0, 0x200 -gUnknown_0809DDE0:: @ 0x0809DDE0 +gHighScoreSprite_Pals:: @ 0x0809DDE0 .incbin "baserom.gba", 0x9DDE0, 0x200 gHighScoreDialogs_Gfx:: @ 0x0809DFE0 @@ -394,7 +394,7 @@ gHighScoreDialogs_Gfx:: @ 0x0809DFE0 .incbin "graphics/high_score/dialogs.4bpp" .space 0x20 -gUnknown_080A2400:: @ 0x080A2400 +gFieldSelectBG0Tilemap:: @ 0x080A2400 .incbin "baserom.gba", 0xA2400, 0x800 .include "data/graphics/field_select.inc" @@ -406,20 +406,20 @@ gEReaderText_Gfx:: @ 0x080ACC60 gIntroScene1Sprites_Pals:: @ 0x080B3AA0 .incbin "graphics/intro/scene_1_sprites.gbapal" -gUnknown_080B3CA0:: @ 0x080B3CA0 +gIntroScene1_BG3Tilemap:: @ 0x080B3CA0 .incbin "baserom.gba", 0xB3CA0, 0x800 gIntroScene1Text_Gfx:: @ 0x080B44A0 .incbin "graphics/intro/scene_1_text.4bpp" .space 0x20 -gUnknown_080B9CC0:: @ 0x080B9CC0 +gIntroScene1_BG0Tilemap:: @ 0x080B9CC0 .incbin "baserom.gba", 0xB9CC0, 0x1800 -gUnknown_080BB4C0:: @ 0x080BB4C0 +gIntroScene1_BG2Tilemap:: @ 0x080BB4C0 .incbin "baserom.gba", 0xBB4C0, 0x1000 -gUnknown_080BC4C0:: @ 0x080BC4C0 +gIntroScene1_BG1Tilemap:: @ 0x080BC4C0 .incbin "baserom.gba", 0xBC4C0, 0x1000 gIntroScene1Ball_Gfx:: @ 0x080BD4C0 @@ -429,10 +429,10 @@ gIntroScene1Ball_Gfx:: @ 0x080BD4C0 gIntroScene1Sprites_Gfx:: @ 0x080C3CE0 .incbin "graphics/intro/scene_1_sprites.4bpp" -gUnknown_080CBCE0:: @ 0x080CBCE0 +gIntroScene2_Pal:: @ 0x080CBCE0 .incbin "baserom.gba", 0xCBCE0, 0x200 -gUnknown_080CBEE0:: @ 0x080CBEE0 +gIntroScene2_BG3Tilemap:: @ 0x080CBEE0 .incbin "baserom.gba", 0xCBEE0, 0x800 gIntroScene2Sprites_Gfx:: @ 0x080CC6E0 @@ -443,19 +443,19 @@ gIntroScene2Sprites_Gfx:: @ 0x080CC6E0 .incbin "graphics/intro/scene_2_sprites.4bpp" .space 0x20 -gUnknown_080D0700:: @ 0x080D0700 +gIntroScene2_BG0Tiles:: @ 0x080D0700 .incbin "baserom.gba", 0xD0700, 0x2000 -gUnknown_080D2700:: @ 0x080D2700 +gIntroScene2_BG1Tiles:: @ 0x080D2700 .incbin "baserom.gba", 0xD2700, 0x2000 -gUnknown_080D4700:: @ 0x080D4700 +gIntroScene3_Pal:: @ 0x080D4700 .incbin "baserom.gba", 0xD4700, 0x200 -gUnknown_080D4900:: @ 0x080D4900 +gIntroScene3_BG2Tilemap:: @ 0x080D4900 .incbin "baserom.gba", 0xD4900, 0x1000 -gUnknown_080D5900:: @ 0x080D5900 +gIntroScene3_BG3Tilemap:: @ 0x080D5900 .incbin "baserom.gba", 0xD5900, 0x800 gIntroScene3Sprites_Gfx:: @ 0x080D6100 @@ -463,54 +463,54 @@ gIntroScene3Sprites_Gfx:: @ 0x080D6100 .incbin "graphics/intro/scene_3_sprites.4bpp" .space 0x20 -gUnknown_080DCD20:: @ 0x080DCD20 +gIntroScene3_BG1Tilemap:: @ 0x080DCD20 .incbin "baserom.gba", 0xDCD20, 0x800 -gUnknown_080DD520:: @ 0x080DD520 +gIntroScene3_BG1TilemapA:: @ 0x080DD520 .incbin "baserom.gba", 0xDD520, 0x800 -gUnknown_080DDD20:: @ 0x080DDD20 +gIntroScene3_BG1TilemapB:: @ 0x080DDD20 .incbin "baserom.gba", 0xDDD20, 0x800 -gUnknown_080DE520:: @ 0x080DE520 +gIntroScene3_BG0Tilemap:: @ 0x080DE520 .incbin "baserom.gba", 0xDE520, 0x1000 gIntroScene3Treecko_Gfx:: @ 0x080DF520 .incbin "graphics/intro/treecko.4bpp" .space 0x20 -gUnknown_080E1540:: @ 0x080E1540 +gIntroScene4_Pal:: @ 0x080E1540 .incbin "baserom.gba", 0xE1540, 0x200 -gUnknown_080E1740:: @ 0x080E1740 +gIntroScene4_BG3Tilemap:: @ 0x080E1740 .incbin "baserom.gba", 0xE1740, 0x800 gIntroScene4Sprites_Gfx:: @ 0x080E1F40 .incbin "graphics/intro/scene_4_sprites.4bpp" -gUnknown_080E5F60:: @ 0x080E5F60 +gIntroScene4_BG0Tiles:: @ 0x080E5F60 .incbin "baserom.gba", 0xE5F60, 0x2000 -gUnknown_080E7F60:: @ 0x080E7F60 +gIntroScene4_BG1Tiles:: @ 0x080E7F60 .incbin "baserom.gba", 0xE7F60, 0x2000 -gUnknown_080E9F60:: @ 0x080E9F60 +gIntroScene5_Pal:: @ 0x080E9F60 .incbin "baserom.gba", 0xE9F60, 0x200 -gUnknown_080EA160:: @ 0x080EA160 +gIntroScene5_BG2Tilemap:: @ 0x080EA160 .incbin "baserom.gba", 0xEA160, 0x1000 -gUnknown_080EB160:: @ 0x080EB160 +gIntroScene5_BG1Tiles:: @ 0x080EB160 .incbin "baserom.gba", 0xEB160, 0x1000 -gUnknown_080EC160:: @ 0x080EC160 +gIntroScene5_BG3Tilemap:: @ 0x080EC160 .incbin "baserom.gba", 0xEC160, 0x800 gIntroScene5Text_Gfx:: @ 0x080EC960 .incbin "graphics/intro/scene_5_text.4bpp" .space 0x20 -gUnknown_080F1980:: @ 0x080F1980 +gIntroScene5_BG0Tiles:: @ 0x080F1980 .incbin "baserom.gba", 0xF1980, 0x800 gIntroScene5Sprites_Gfx:: @ 0x080F2180 @@ -518,33 +518,33 @@ gIntroScene5Sprites_Gfx:: @ 0x080F2180 .space 0x20 .incbin "baserom.gba", 0xF51A0, 0x1000 -gUnknown_080F61A0:: @ 0x080F61A0 +gIntroScene6_Pal:: @ 0x080F61A0 .incbin "baserom.gba", 0xF61A0, 0x200 -gUnknown_080F63A0:: @ 0x080F63A0 +gIntroScene6_BG3Tilemap:: @ 0x080F63A0 .incbin "baserom.gba", 0xF63A0, 0x800 gIntroScene6Sprites_Gfx:: @ 0x080F6BA0 .incbin "graphics/intro/scene_6_sprites.4bpp" .space 0x20 -gUnknown_080FCFC0:: @ 0x080FCFC0 +gIntroScene6_BG2Tilemap:: @ 0x080FCFC0 .incbin "baserom.gba", 0xFCFC0, 0x800 -gUnknown_080FD7C0:: @ 0x080FD7C0 +gIntroScene6_BG0Tilemap:: @ 0x080FD7C0 .incbin "baserom.gba", 0xFD7C0, 0x800 -gUnknown_080FDFC0:: @ 0x080FDFC0 +gIntroScene6_BG1Tiles:: @ 0x080FDFC0 .incbin "baserom.gba", 0xFDFC0, 0x2000 gIntroScene6Stars_Gfx:: @ 0x080FFFC0 .incbin "graphics/intro/scene_6_stars.4bpp" .space 0x20 -gUnknown_08100FE0:: @ 0x08100FE0 +gIntroScene7_Pal:: @ 0x08100FE0 .incbin "baserom.gba", 0x100FE0, 0x200 -gUnknown_081011E0:: @ 0x081011E0 +gIntroScene7_BG3Tilemap:: @ 0x081011E0 .incbin "baserom.gba", 0x1011E0, 0x800 gIntroScene7Sprites_Gfx:: @ 0x081019E0 @@ -556,23 +556,23 @@ gIntroScene7Sprites_Gfx:: @ 0x081019E0 .incbin "graphics/intro/scene_7_sprites.4bpp" .space 0x20 -gUnknown_08106A00:: @ 0x08106A00 +gIntroScene7_BG2Tiles:: @ 0x08106A00 .incbin "baserom.gba", 0x106A00, 0x2000 -gUnknown_08108A00:: @ 0x08108A00 +gIntroScene7_BG0Tiles:: @ 0x08108A00 .incbin "baserom.gba", 0x108A00, 0x2000 -gUnknown_0810AA00:: @ 0x0810AA00 +gIntroScene7_BG1Tiles:: @ 0x0810AA00 .incbin "baserom.gba", 0x10AA00, 0x2000 gIntroScene7Wailmer_Gfx:: @ 0x0810CA00 .incbin "graphics/intro/scene_7_wailmer.4bpp" .space 0x20 -gUnknown_0810EA20:: @ 0x0810EA20 +gIntroScene8a_Pal:: @ 0x0810EA20 .incbin "baserom.gba", 0x10EA20, 0x200 -gUnknown_0810EC20:: @ 0x0810EC20 +gIntroScene8a_BG2Tilemap:: @ 0x0810EC20 .incbin "baserom.gba", 0x10EC20, 0x800 gIntroScene7Explosion_Gfx:: @ 0x0810F420 @@ -583,10 +583,10 @@ gIntroScene7WailmerLaunch_Gfx:: @ 0x08112840 .incbin "graphics/intro/scene_7_wailmer_launch.4bpp" .space 0x20 -gUnknown_08115860:: @ 0x08115860 +gIntroScene8b_Pal:: @ 0x08115860 .incbin "baserom.gba", 0x115860, 0x200 -gUnknown_08115A60:: @ 0x08115A60 +gIntroScene8b_BG3Tilemap:: @ 0x08115A60 .incbin "baserom.gba", 0x115A60, 0x800 gIntroScene8Clouds_Gfx:: @ 0x08116260 @@ -615,65 +615,65 @@ gIdlePinballGameStateFuncs:: @ 0x08137918 .4byte PinballGame_State2_4ABC8 @shared with main game mode .4byte PinballGameIdle3_19288 -gUnknown_08137928:: @ 0x08137928 +gAreaToSpeciesTable:: @ 0x08137928 .incbin "baserom.gba", 0x137928, 0x1C -gUnknown_08137944:: @ 0x08137944 +gPondDialAnimFrames:: @ 0x08137944 .incbin "baserom.gba", 0x137944, 0x24 -gUnknown_08137968:: @ 0x08137968 +gPondBumperTransitionFrames:: @ 0x08137968 .2byte 0,2,3,4,5,6,7,10,10,10,7,6,5,4,3,2,1,0 @.incbin "baserom.gba", 0x137968, 0x24 -gUnknown_0813798C:: @ 0x0813798C +gLotadBobOffsets:: @ 0x0813798C .incbin "baserom.gba", 0x13798C, 0xC -gUnknown_08137998:: @ 0x08137998 +gChinchouBumperPalettes:: @ 0x08137998 .incbin "baserom.gba", 0x137998, 0x20 -gUnknown_081379B8:: @ 0x081379B8 +gLotadBumperPalettes:: @ 0x081379B8 .incbin "baserom.gba", 0x1379B8, 0x20 -gUnknown_081379D8:: @ 0x081379D8 +gWhiscashPalettes:: @ 0x081379D8 .incbin "baserom.gba", 0x1379D8, 0xE0 -gUnknown_08137AB8:: @ 0x08137AB8 +gBumperAnimFrames:: @ 0x08137AB8 .incbin "baserom.gba", 0x137AB8, 0x84 -gUnknown_08137B3C:: @ 0x08137B3C +gFieldPaletteVariants:: @ 0x08137B3C .incbin "baserom.gba", 0x137B3C, 0x20 gUnknown_08137B5C:: @ 0x08137B5C .incbin "baserom.gba", 0x137B5C, 0x160 -gUnknown_08137CBC:: @ 0x08137CBC +gPelipperFlyAnimTable:: @ 0x08137CBC .incbin "baserom.gba", 0x137CBC, 0x1A -gUnknown_08137CD6:: @ 0x08137CD6 +gBumperMosaicValues:: @ 0x08137CD6 .incbin "baserom.gba", 0x137CD6, 0xC -gUnknown_08137CE2:: @ 0x08137CE2 +gShopSignLoopFrames:: @ 0x08137CE2 .incbin "baserom.gba", 0x137CE2, 0x14 -gUnknown_08137CF6:: @ 0x08137CF6 +gShopSignIntroFrames:: @ 0x08137CF6 .incbin "baserom.gba", 0x137CF6, 0x10 -gUnknown_08137D06:: @ 0x08137D06 +gShopSignTransitionFrames:: @ 0x08137D06 .incbin "baserom.gba", 0x137D06, 0x3A -gUnknown_08137D40:: @ 0x08137D40 +gDusclopsBossAnimFrames:: @ 0x08137D40 .incbin "baserom.gba", 0x137D40, 0x8 -gUnknown_08137D48:: @ 0x08137D48 +gWhirlwindGrabAnimFrameIndices:: @ 0x08137D48 .incbin "baserom.gba", 0x137D48, 0x18 -gUnknown_08137D60:: @ 0x08137D60 +gSphealScoreDigitSpriteIndices:: @ 0x08137D60 .incbin "baserom.gba", 0x137D60, 0x18 -gUnknown_08137D78:: @ 0x08137D78 +gPauseMenuSpriteOffsets:: @ 0x08137D78 .incbin "baserom.gba", 0x137D78, 0x2C -gUnknown_08137DA4:: @ 0x08137DA4 +gPauseMenuTextAnimFrames:: @ 0x08137DA4 .incbin "baserom.gba", 0x137DA4, 0x1A gDebugTextStrings:: @ 0x08137DBE @@ -684,13 +684,13 @@ gDebugTextStrings:: @ 0x08137DBE .ascii " DEBUG1:" .byte 0,0,0,0,0 -gUnknown_08137DE8:: @ 0x08137DE8 +gDebugMenuValueTemplate:: @ 0x08137DE8 .ascii "(000 000)" .byte 0,0,0 .ascii "(000) " .byte 0,0,0 -gUnknown_08137E00:: @ 0x08137E00 +gDebugMenuCursorGfx:: @ 0x08137E00 .incbin "baserom.gba", 0x137E00, 0x4 gPinballGameStateFuncs:: @ 0x08137E04 @@ -699,13 +699,13 @@ gPinballGameStateFuncs:: @ 0x08137E04 .4byte PinballGame_State2_4ABC8 @ called once on game over (losing all balls) .4byte PinballGame_State3_4B20C @ called once after game over? -gUnknown_08137E14:: @ 0x08137E14 +gBallPalettes:: @ 0x08137E14 .incbin "baserom.gba", 0x137E14, 0x100 -gUnknown_08137F14:: @ 0x08137F14 +gBallFlashPalette:: @ 0x08137F14 .incbin "baserom.gba", 0x137F14, 0x100 -gUnknown_08138014:: @ 0x08138014 +gBallUpgradeTilesGfx:: @ 0x08138014 .incbin "baserom.gba", 0x138014, 0x820 gDusclopsBonusClear_Gfx:: @ 0x08138834 @@ -728,45 +728,45 @@ gRayquazaBonusClear_Gfx:: @ 0x081408B4 .incbin "graphics/stage/rayquaza/rayquaza_bonus_clear.4bpp" .space 0x20 -gUnknown_081428D4:: @ 0x081428D4 +gCaptureScreenTilesGfx:: @ 0x081428D4 .incbin "baserom.gba", 0x1428D4, 0x1C20 .include "data/graphics/mon_hatch_sprites_pals.inc" -gUnknown_081450F4:: @ 0x081450F4 +gIdleBoardConfig0:: @ 0x081450F4 .incbin "baserom.gba", 0x1450F4, 0x3840 -gUnknown_08148934:: @ 0x08148934 +gIdleBoardConfig2:: @ 0x08148934 .incbin "baserom.gba", 0x148934, 0x3840 -gUnknown_0814C174:: @ 0x0814C174 +gIdleBoardConfig3:: @ 0x0814C174 .incbin "baserom.gba", 0x14C174, 0x3840 -gUnknown_0814F9B4:: @ 0x0814F9B4 +gIdleBoardConfig1:: @ 0x0814F9B4 .incbin "baserom.gba", 0x14F9B4, 0x3840 -gUnknown_081531F4:: @ 0x081531F4 +gIdleBoardGameState0:: @ 0x081531F4 .incbin "baserom.gba", 0x1531F4, 0x1424 -gUnknown_08154618:: @ 0x08154618 +gIdleBoardGameState2:: @ 0x08154618 .incbin "baserom.gba", 0x154618, 0x1424 -gUnknown_08155A3C:: @ 0x08155A3C +gIdleBoardGameState3:: @ 0x08155A3C .incbin "baserom.gba", 0x155A3C, 0x1424 -gUnknown_08156E60:: @ 0x08156E60 +gIdleBoardGameState1:: @ 0x08156E60 .incbin "baserom.gba", 0x156E60, 0x1424 -gUnknown_08158284:: @ 0x08158284 +gBoardActionTilesGfx:: @ 0x08158284 .incbin "baserom.gba", 0x158284, 0x2420 -gUnknown_0815A6A4:: @ 0x0815A6A4 +gBoardActionObjPal:: @ 0x0815A6A4 .incbin "baserom.gba", 0x15A6A4, 0x200 gEvoExAppear_Gfx:: @ 0x0815A8A4 .incbin "graphics/board_pickups/evo_item_ex.4bpp"; -gUnknown_0815C4C4:: @ 0x0815C4C4 +gEvoItemPalettes:: @ 0x0815C4C4 .incbin "baserom.gba", 0x15C4C4, 0x200 gEvoLeafAppear_Gfx:: @ 0x0815C6C4 @@ -796,28 +796,28 @@ gEvoSunAppear_Gfx:: @ 0x08168BA4 gEvoBoltAppear_Gfx:: @ 0x0816A7C4 .incbin "graphics/board_pickups/evo_item_bolt.4bpp"; -gUnknown_0816C3E4:: @ 0x0816C3E4 +gFlipperCollisionData:: @ 0x0816C3E4 .incbin "baserom.gba", 0x16C3E4, 0x42800 .include "data/graphics/mon_catch_sprites_pals.inc" @ .incbin "baserom.gba", 0x1AEBE4, 0xA80 .incbin "baserom.gba", 0x1B0C64, 0x180 -gUnknown_081B0DE4:: @ 0x081B0DE4 +gKyogreWaterAnimPaletteFrames:: @ 0x081B0DE4 .incbin "baserom.gba", 0x1B0DE4, 0x200 -gUnknown_081B0FE4:: @ 0x081B0FE4 +gPokeballCaptureOamFrames:: @ 0x081B0FE4 .incbin "baserom.gba", 0x1B0FE4, 0x26C0 -gUnknown_081B36A4:: @ 0x081B36A4 +gBonusStageObjPal:: @ 0x081B36A4 .incbin "baserom.gba", 0x1B36A4, 0xEE0 -gUnknown_081B4584:: @ 0x081B4584 +gEvoNameDisplay_Pals:: @ 0x081B4584 .incbin "baserom.gba", 0x1B4584, 0x20 -gUnknown_081B45A4:: @ 0x081B45A4 +gShopNameDisplay_Pals:: @ 0x081B45A4 .incbin "baserom.gba", 0x1B45A4, 0x1E0 -gUnknown_081B4784:: @ 0x081B4784 +gEvoModeBG_Gfx:: @ 0x081B4784 .incbin "baserom.gba", 0x1B4784, 0x1000 gUnknown_081B5784:: @ 0x081B5784 @@ -829,10 +829,10 @@ gUnknown_081B6784:: @ 0x081B6784 gUnknown_081B7784:: @ 0x081B7784 .incbin "baserom.gba", 0x1B7784, 0x1000 -gUnknown_081B8784:: @ 0x081B8784 +gShopEvoUI_Pals:: @ 0x081B8784 .incbin "baserom.gba", 0x1B8784, 0x200 -gUnknown_081B8984:: @ 0x081B8984 +gShopModeBG_Gfx:: @ 0x081B8984 .incbin "baserom.gba", 0x1B8984, 0x1000 gUnknown_081B9984:: @ 0x081B9984 @@ -844,285 +844,285 @@ gUnknown_081BA984:: @ 0x081BA984 gUnknown_081BB984:: @ 0x081BB984 .incbin "baserom.gba", 0x1BB984, 0x1000 -gUnknown_081BC984:: @ 0x081BC984 +gSapphireShopSignPalettes:: @ 0x081BC984 .incbin "baserom.gba", 0x1BC984, 0x120 -gUnknown_081BCAA4:: @ 0x081BCAA4 +gRubyBoardBonusGfx:: @ 0x081BCAA4 .incbin "baserom.gba", 0x1BCAA4, 0x1820 -gUnknown_081BE2C4:: @ 0x081BE2C4 +gRubyBoardBonusObjPalette:: @ 0x081BE2C4 .incbin "baserom.gba", 0x1BE2C4, 0x200 -gUnknown_081BE4C4:: @ 0x081BE4C4 +gSapphireBoardBonusGfx:: @ 0x081BE4C4 .incbin "baserom.gba", 0x1BE4C4, 0x1820 -gUnknown_081BFCE4:: @ 0x081BFCE4 +gSapphireBoardBonusObjPalette:: @ 0x081BFCE4 .incbin "baserom.gba", 0x1BFCE4, 0x200 -gUnknown_081BFEE4:: @ 0x081BFEE4 +gRubyBoardPalette:: @ 0x081BFEE4 .incbin "baserom.gba", 0x1BFEE4, 0x180 -gUnknown_081C0064:: @ 0x081C0064 +gDefaultBallPalette:: @ 0x081C0064 .incbin "baserom.gba", 0x1C0064, 0x80 -gUnknown_081C00E4:: @ 0x081C00E4 +gPortraitGenericPalettes:: @ 0x081C00E4 .incbin "baserom.gba", 0x1C00E4, 0x200 -gUnknown_081C02E4:: @ 0x081C02E4 +gPortraitAnimPalettes:: @ 0x081C02E4 .incbin "baserom.gba", 0x1C02E4, 0x600 -gUnknown_081C08E4:: @ 0x081C08E4 +gRubyBoardBG0Tilemap:: @ 0x081C08E4 .incbin "baserom.gba", 0x1C08E4, 0x6DB40 -gUnknown_0822E424:: @ 0x0822E424 +gRubyBoardBG1Tilemap:: @ 0x0822E424 .incbin "baserom.gba", 0x22E424, 0x1DDC0 -gUnknown_0824C1E4:: @ 0x0824C1E4 +gRubyBoardCompressedTiles1:: @ 0x0824C1E4 .incbin "baserom.gba", 0x24C1E4, 0x1B7C -gUnknown_0824DD60:: @ 0x0824DD60 +gRubyBoardCompressedTiles2:: @ 0x0824DD60 .incbin "baserom.gba", 0x24DD60, 0x2BD4 -gUnknown_08250934:: @ 0x08250934 +gRubyBoardCompressedBGTileBuffer:: @ 0x08250934 .incbin "baserom.gba", 0x250934, 0x21DC -gUnknown_08252B10:: @ 0x08252B10 +gSharedBumperCollisionMap:: @ 0x08252B10 .incbin "baserom.gba", 0x252B10, 0x2000 -gUnknown_08254B10:: @ 0x08254B10 +gRubyAltEntity0CollisionMap:: @ 0x08254B10 .incbin "baserom.gba", 0x254B10, 0x2880 -gUnknown_08257390:: @ 0x08257390 +gRubyAltEntity1CollisionMap:: @ 0x08257390 .incbin "baserom.gba", 0x257390, 0x2880 -gUnknown_08259C10:: @ 0x08259C10 +gWhiscashCollisionMap:: @ 0x08259C10 .incbin "baserom.gba", 0x259C10, 0xC000 -gUnknown_08265C10:: @ 0x08265C10 +gRubyBoardBGTiles:: @ 0x08265C10 .incbin "baserom.gba", 0x265C10, 0x8000 -gUnknown_0826DC10:: @ 0x0826DC10 +gRubyBoardBGTilemap:: @ 0x0826DC10 .incbin "baserom.gba", 0x26DC10, 0x1000 -gUnknown_0826EC10:: @ 0x0826EC10 +gSapphireBoardPalette:: @ 0x0826EC10 .incbin "baserom.gba", 0x26EC10, 0x200 -gUnknown_0826EE10:: @ 0x0826EE10 +gSapphireBoardBG0Tilemap:: @ 0x0826EE10 .incbin "baserom.gba", 0x26EE10, 0x3F8C0 -gUnknown_082AE6D0:: @ 0x082AE6D0 +gSapphireBoardBG1Tilemap:: @ 0x082AE6D0 .incbin "baserom.gba", 0x2AE6D0, 0x24E00 -gUnknown_082D34D0:: @ 0x082D34D0 +gSapphireBoardCompressedTiles1:: @ 0x082D34D0 .incbin "baserom.gba", 0x2D34D0, 0x1D6C -gUnknown_082D523C:: @ 0x082D523C +gSapphireBoardCompressedTiles2:: @ 0x082D523C .incbin "baserom.gba", 0x2D523C, 0x375C -gUnknown_082D8998:: @ 0x082D8998 +gSapphireBoardCompressedBGTileBuffer:: @ 0x082D8998 .incbin "baserom.gba", 0x2D8998, 0xC548 -gUnknown_082E4EE0:: @ 0x082E4EE0 +gSapphireBoardBGTiles:: @ 0x082E4EE0 .incbin "baserom.gba", 0x2E4EE0, 0x8000 -gUnknown_082ECEE0:: @ 0x082ECEE0 +gSapphireBoardBGTilemap:: @ 0x082ECEE0 .incbin "baserom.gba", 0x2ECEE0, 0x1000 -gUnknown_082EDEE0:: @ 0x082EDEE0 +gDusclopsBoardPalette:: @ 0x082EDEE0 .incbin "baserom.gba", 0x2EDEE0, 0x200 -gUnknown_082EE0E0:: @ 0x082EE0E0 +gDusclopsAnimPalettes:: @ 0x082EE0E0 .incbin "baserom.gba", 0x2EE0E0, 0x3E0 -gUnknown_082EE4C0:: @ 0x082EE4C0 +gDusclopsBoardBG0Tilemap:: @ 0x082EE4C0 .incbin "baserom.gba", 0x2EE4C0, 0x13240 -gUnknown_08301700:: @ 0x08301700 +gDusclopsBoardBG1Tilemap:: @ 0x08301700 .incbin "baserom.gba", 0x301700, 0x800 -gUnknown_08301F00:: @ 0x08301F00 +gDusclopsBoardBG2Tilemap:: @ 0x08301F00 .incbin "baserom.gba", 0x301F00, 0x800 -gUnknown_08302700:: @ 0x08302700 +gBonusFieldCompressedBaseTiles:: @ 0x08302700 .incbin "baserom.gba", 0x302700, 0x1228 -gUnknown_08303928:: @ 0x08303928 +gDusclopsBoardCompressedBGTiles:: @ 0x08303928 .incbin "baserom.gba", 0x303928, 0x38AC -gUnknown_083071D4:: @ 0x083071D4 +gDusclopsBodyCollisionMap:: @ 0x083071D4 .incbin "baserom.gba", 0x3071D4, 0x5A00 -gUnknown_0830CBD4:: @ 0x0830CBD4 +gKecleonBoardPalette:: @ 0x0830CBD4 .incbin "baserom.gba", 0x30CBD4, 0x200 -gUnknown_0830CDD4:: @ 0x0830CDD4 +gKecleonBoardBG1Tilemap:: @ 0x0830CDD4 .incbin "baserom.gba", 0x30CDD4, 0x1ABC0 -gUnknown_08327994:: @ 0x08327994 +gKecleonBerryOverlayTilemap:: @ 0x08327994 .incbin "baserom.gba", 0x327994, 0x2000 -gUnknown_08329994:: @ 0x08329994 +gKecleonBoardBG0Tilemap:: @ 0x08329994 .incbin "baserom.gba", 0x329994, 0x800 -gUnknown_0832A194:: @ 0x0832A194 +gKecleonBoardCompressedBGTiles:: @ 0x0832A194 .incbin "baserom.gba", 0x32A194, 0x3470 -gUnknown_0832D604:: @ 0x0832D604 +gKecleonTongueCollisionMap:: @ 0x0832D604 .incbin "baserom.gba", 0x32D604, 0x2C00 -gUnknown_08330204:: @ 0x08330204 +gKecleonBodyCollisionMap:: @ 0x08330204 .incbin "baserom.gba", 0x330204, 0x2C00 -gUnknown_08332E04:: @ 0x08332E04 +gKyogreBoardPalette:: @ 0x08332E04 .incbin "baserom.gba", 0x332E04, 0x200 -gUnknown_08333004:: @ 0x08333004 +gKyogreWaterBackgroundTilemap:: @ 0x08333004 .incbin "baserom.gba", 0x333004, 0xA840 -gUnknown_0833D844:: @ 0x0833D844 +gKyogreBoardBG1Tilemap:: @ 0x0833D844 .incbin "baserom.gba", 0x33D844, 0x800 -gUnknown_0833E044:: @ 0x0833E044 +gKyogreBoardCompressedBGTiles:: @ 0x0833E044 .incbin "baserom.gba", 0x33E044, 0x1F14 -gUnknown_0833FF58:: @ 0x0833FF58 +gKyogreIntroShorePalette:: @ 0x0833FF58 .incbin "baserom.gba", 0x33FF58, 0xC00 -gUnknown_08340B58:: @ 0x08340B58 +gKyogreForm1CollisionMap:: @ 0x08340B58 .incbin "baserom.gba", 0x340B58, 0x8E80 -gUnknown_083499D8:: @ 0x083499D8 +gKyogreForm2CollisionMap:: @ 0x083499D8 .incbin "baserom.gba", 0x3499D8, 0x4200 -gUnknown_0834DBD8:: @ 0x0834DBD8 +gKyogreForm3CollisionMap:: @ 0x0834DBD8 .incbin "baserom.gba", 0x34DBD8, 0x4E00 -gUnknown_083529D8:: @ 0x083529D8 +gKyogreIntroIcePalette:: @ 0x083529D8 .incbin "baserom.gba", 0x3529D8, 0x200 -gUnknown_08352BD8:: @ 0x08352BD8 +gGroudonLavaPaletteCycleData:: @ 0x08352BD8 .incbin "baserom.gba", 0x352BD8, 0x200 -gUnknown_08352DD8:: @ 0x08352DD8 +gGroudonBoardBG0Tilemap:: @ 0x08352DD8 .incbin "baserom.gba", 0x352DD8, 0x800 -gUnknown_083535D8:: @ 0x083535D8 +gGroudonBoardBG1Tilemap:: @ 0x083535D8 .incbin "baserom.gba", 0x3535D8, 0x800 -gUnknown_08353DD8:: @ 0x08353DD8 +gGroudonBoardCompressedBGTiles:: @ 0x08353DD8 .incbin "baserom.gba", 0x353DD8, 0x3BF0 -gUnknown_083579C8:: @ 0x083579C8 +gGroudonBodyCollisionMap:: @ 0x083579C8 .incbin "baserom.gba", 0x3579C8, 0x7000 -gUnknown_0835E9C8:: @ 0x0835E9C8 +gGroudonProjectileCollisionMap:: @ 0x0835E9C8 .incbin "baserom.gba", 0x35E9C8, 0x5500 -gUnknown_08363EC8:: @ 0x08363EC8 +gRayquazaBoardPalette:: @ 0x08363EC8 .incbin "baserom.gba", 0x363EC8, 0x200 -gUnknown_083640C8:: @ 0x083640C8 +gRayquazaBoardBG0Tilemap:: @ 0x083640C8 .incbin "baserom.gba", 0x3640C8, 0xA740 -gUnknown_0836E808:: @ 0x0836E808 +gRayquazaBoardBGScrollTilemap:: @ 0x0836E808 .incbin "baserom.gba", 0x36E808, 0x1000 -gUnknown_0836F808:: @ 0x0836F808 +gRayquazaBoardBG1Tilemap:: @ 0x0836F808 .incbin "baserom.gba", 0x36F808, 0x1000 -gUnknown_08370808:: @ 0x08370808 +gRayquazaBoardCompressedBGTiles:: @ 0x08370808 .incbin "baserom.gba", 0x370808, 0x1AE0 -gUnknown_083722E8:: @ 0x083722E8 +gRayquazaBodyCollisionMap:: @ 0x083722E8 .incbin "baserom.gba", 0x3722E8, 0x8000 -gUnknown_0837A2E8:: @ 0x0837A2E8 +gSphealBoardPalette:: @ 0x0837A2E8 .incbin "baserom.gba", 0x37A2E8, 0x200 -gUnknown_0837A4E8:: @ 0x0837A4E8 +gSphealWaterBackgroundTilemap:: @ 0x0837A4E8 .incbin "baserom.gba", 0x37A4E8, 0x13B40 -gUnknown_0838E028:: @ 0x0838E028 +gSphealBoardBG1Tilemap:: @ 0x0838E028 .incbin "baserom.gba", 0x38E028, 0x800 -gUnknown_0838E828:: @ 0x0838E828 +gSphealBoardCompressedBGTiles:: @ 0x0838E828 .incbin "baserom.gba", 0x38E828, 0x3224 -gUnknown_08391A4C:: @ 0x08391A4C +gSphealCrackedIceCollisionMap:: @ 0x08391A4C .incbin "baserom.gba", 0x391A4C, 0x2000 -gUnknown_08393A4C:: @ 0x08393A4C +gSphealFrozenIceCollisionMap:: @ 0x08393A4C .incbin "baserom.gba", 0x393A4C, 0x2000 -gUnknown_08395A4C:: @ 0x08395A4C +gPikaSaverFullCoverageGfx:: @ 0x08395A4C .incbin "baserom.gba", 0x395A4C, 0x2420 -gUnknown_08397E6C:: @ 0x08397E6C +gPikaSaverPartialCoverageGfx:: @ 0x08397E6C .incbin "baserom.gba", 0x397E6C, 0x2420 -gUnknown_0839A28C:: @ 0x0839A28C +gCatchTargetCollisionBitmap:: @ 0x0839A28C .incbin "baserom.gba", 0x39A28C, 0x900 .include "data/graphics/mon_portraits_pals.inc" -gUnknown_0839C78C:: @ 0x0839C78C +gSapphireCatchTilesGfx:: @ 0x0839C78C .incbin "baserom.gba", 0x39C78C, 0x1420 -gUnknown_0839DBAC:: @ 0x0839DBAC +gSapphireCatchPalette:: @ 0x0839DBAC .incbin "baserom.gba", 0x39DBAC, 0x200 -gUnknown_0839DDAC:: @ 0x0839DDAC +gHatchRevealTilesGfx:: @ 0x0839DDAC .incbin "baserom.gba", 0x39DDAC, 0x2820 -gUnknown_083A05CC:: @ 0x083A05CC +gHatchRevealPalette:: @ 0x083A05CC .incbin "baserom.gba", 0x3A05CC, 0x200 -gUnknown_083A07CC:: @ 0x083A07CC +gHatchStartTilesGfx:: @ 0x083A07CC .incbin "baserom.gba", 0x3A07CC, 0x2020 -gUnknown_083A27EC:: @ 0x083A27EC +gHatchStartPalette:: @ 0x083A27EC .incbin "baserom.gba", 0x3A27EC, 0x200 -gUnknown_083A29EC:: @ 0x083A29EC +gHatchStage2TilesGfx:: @ 0x083A29EC .incbin "baserom.gba", 0x3A29EC, 0x820 -gUnknown_083A320C:: @ 0x083A320C +gHatchStage2Palette:: @ 0x083A320C .incbin "baserom.gba", 0x3A320C, 0x200 -gUnknown_083A340C:: @ 0x083A340C +gHatchStage3TilesGfx:: @ 0x083A340C .incbin "baserom.gba", 0x3A340C, 0x2020 -gUnknown_083A542C:: @ 0x083A542C +gHatchStage3Palette:: @ 0x083A542C .incbin "baserom.gba", 0x3A542C, 0x200 -gUnknown_083A562C:: @ 0x083A562C +gHatchFinalTilesGfx:: @ 0x083A562C .incbin "baserom.gba", 0x3A562C, 0x1820 -gUnknown_083A6E4C:: @ 0x083A6E4C +gHatchFinalPalette:: @ 0x083A6E4C .incbin "baserom.gba", 0x3A6E4C, 0x200 -gUnknown_083A704C:: @ 0x083A704C +gEggModeTilesGfx:: @ 0x083A704C .incbin "baserom.gba", 0x3A704C, 0x1020 -gUnknown_083A806C:: @ 0x083A806C +gEggModePalette:: @ 0x083A806C .incbin "baserom.gba", 0x3A806C, 0x20 -gUnknown_083A808C:: @ 0x083A808C +gCaptureModePalette:: @ 0x083A808C .incbin "baserom.gba", 0x3A808C, 0x1E0 -gUnknown_083A826C:: @ 0x083A826C +gBoardHudTilemapB:: @ 0x083A826C .incbin "baserom.gba", 0x3A826C, 0x820 -gUnknown_083A8A8C:: @ 0x083A8A8C +gShopPalette:: @ 0x083A8A8C .incbin "baserom.gba", 0x3A8A8C, 0x20 -gUnknown_083A8AAC:: @ 0x083A8AAC +gHatchCompletePalette:: @ 0x083A8AAC .incbin "baserom.gba", 0x3A8AAC, 0x20 -gUnknown_083A8ACC:: @ 0x083A8ACC +gBoardHudTilemapA:: @ 0x083A8ACC .incbin "baserom.gba", 0x3A8ACC, 0x420 -gUnknown_083A8EEC:: @ 0x083A8EEC +gPortraitAnimFrameGraphics:: @ 0x083A8EEC .incbin "graphics/slot_options/slot_options_1.4bpp" .incbin "graphics/slot_options/slot_options_2.4bpp" .incbin "graphics/slot_options/slot_options_3.4bpp" @@ -1221,43 +1221,43 @@ gUnknown_083A8EEC:: @ 0x083A8EEC .incbin "graphics/slot_options/slot_options_96.4bpp" .incbin "graphics/slot_options/slot_options_97.4bpp" -gUnknown_083BB16C:: @ 0x083BB16C +gBallRotationTileGraphics:: @ 0x083BB16C .incbin "graphics/stage/main/pokeball_regular.4bpp" .incbin "graphics/stage/main/pokeball_great.4bpp" .incbin "graphics/stage/main/pokeball_ultra.4bpp" .incbin "graphics/stage/main/pokeball_master.4bpp" -gUnknown_083BD36C:: @ 0x083BD36C +gBallShadowTileGraphics:: @ 0x083BD36C .incbin "baserom.gba", 0x3BD36C, 0xC00 -gUnknown_083BDF6C:: @ 0x083BDF6C +gBallSpawnGlowTiles_Type2:: @ 0x083BDF6C .incbin "baserom.gba", 0x3BDF6C, 0x1200 -gUnknown_083BF16C:: @ 0x083BF16C +gBallSpawnGlowTiles_Type1:: @ 0x083BF16C .incbin "baserom.gba", 0x3BF16C, 0x1600 -gUnknown_083C076C:: @ 0x083C076C +gSapphirePondEntity_Gfx:: @ 0x083C076C .incbin "baserom.gba", 0x3C076C, 0xC40 -gUnknown_083C13AC:: @ 0x083C13AC +gKyogreSplashSpriteFrames:: @ 0x083C13AC .incbin "baserom.gba", 0x3C13AC, 0x6C0 -gUnknown_083C1A6C:: @ 0x083C1A6C +gKyogreWhirlpoolSpriteFrames:: @ 0x083C1A6C .incbin "baserom.gba", 0x3C1A6C, 0x21C0 -gUnknown_083C3C2C:: @ 0x083C3C2C +gRubyFlashingDecorationTiles:: @ 0x083C3C2C .incbin "baserom.gba", 0x3C3C2C, 0x1800 -gUnknown_083C542C:: @ 0x083C542C +gChikoritaProjectileTiles:: @ 0x083C542C .incbin "baserom.gba", 0x3C542C, 0x200 -gUnknown_083C562C:: @ 0x083C562C +gChikoritaExplosionTiles:: @ 0x083C562C .incbin "baserom.gba", 0x3C562C, 0x400 -gUnknown_083C5A2C:: @ 0x083C5A2C +gRayquazaSkyBackgroundGfx:: @ 0x083C5A2C .incbin "baserom.gba", 0x3C5A2C, 0x2640 -gUnknown_083C806C:: @ 0x083C806C +gRubyFlashingTiles_Secondary:: @ 0x083C806C .incbin "baserom.gba", 0x3C806C, 0xB00 .include "data/graphics/mon_hatch_sprites.inc" @@ -1283,13 +1283,13 @@ gPickupIcon8_Gfx:: @ 0x083FA84C gPickupIcon7_Gfx:: @ 0x083FC64C .incbin "graphics/board_pickups/icon7.4bpp" -gUnknown_083FE44C:: @ 0x083FE44C +gFlipperTileGraphics:: @ 0x083FE44C .incbin "baserom.gba", 0x3FE44C, 0xC00 -gUnknown_083FF04C:: @ 0x083FF04C +gAlphabetTilesGfx:: @ 0x083FF04C .incbin "baserom.gba", 0x3FF04C, 0xD00 -gUnknown_083FFD4C:: @ 0x083FFD4C +gSpaceTileGfx:: @ 0x083FFD4C .incbin "baserom.gba", 0x3FFD4C, 0x40 gSapphireBoardWailmer_Gfx:: @ 0x083FFD8C @@ -1303,13 +1303,13 @@ gRubyStageGulpin_Gfx:: @ 0x08447A8C gMainStageBonusTrap_Gfx:: @ 0x0844838C .incbin "graphics/stage/main/bonus_trap.4bpp" -gUnknown_0844928C:: @ 0x0844928C +gLotadBumperTiles:: @ 0x0844928C .incbin "baserom.gba", 0x44928C, 0xB00 gRubyStageCyndaquil_Gfx:: @ 0x08449D8C .incbin "graphics/stage/ruby/cyndaquil.4bpp" -gUnknown_0844AA0C:: @ 0x0844AA0C +gBasketAnimationTilesGfx:: @ 0x0844AA0C .incbin "graphics/stage/main/gunk_0844AA0C.4bpp" gSapphireStageBasket_Gfx:: @ 0x0844F20C @@ -1321,19 +1321,19 @@ gKecleonStageKecleon_Gfx:: @ 0x0844F98C gKecleonStageKecleonFx_Gfx:: @ 0x0845588C .incbin "graphics/stage/kecleon/kecleon_fx.4bpp" -gUnknown_08455E8C:: @ 0x08455E8C +gOneUpBannerSprite_Gfx:: @ 0x08455E8C .incbin "graphics/stage/misc/gunk_08455E8C.4bpp" -gUnknown_0845648C:: @ 0x0845648C +gLifeCountDigit_Gfx:: @ 0x0845648C .incbin "graphics/stage/misc/gunk_0845648C.4bpp" -gUnknown_0845690C:: @ 0x0845690C +gPondBumper_Gfx:: @ 0x0845690C .incbin "graphics/stage/misc/gunk_0845690C.4bpp" gRubyStageNuzleaf_Gfx:: @ 0x0845710C .incbin "graphics/stage/ruby/nuzleaf.4bpp" -gUnknown_0845A08C:: @ 0x0845A08C +gSplashEffectTileGfx:: @ 0x0845A08C .incbin "baserom.gba", 0x45A08C, 0x400 gRubyIntroSprites_Gfx:: @ 0x0845A48C @@ -1357,110 +1357,110 @@ gGroudonIntroSprite_Gfx:: @ 0x0846D2AC gRayquazaIntroSprite_Gfx:: @ 0x08472A6C .incbin "graphics/stage/rayquaza/intro_sprite.4bpp" -gUnknown_084779EC:: @ 0x084779EC +gSphealIntroSprites_Gfx:: @ 0x084779EC .incbin "baserom.gba", 0x4779EC, 0x2A20 -gUnknown_0847A40C:: @ 0x0847A40C +gSapphireBumperLeft_Gfx:: @ 0x0847A40C .incbin "baserom.gba", 0x47A40C, 0x2D00 -gUnknown_0847D10C:: @ 0x0847D10C +gSapphireBumperLeftHit_Gfx:: @ 0x0847D10C .incbin "baserom.gba", 0x47D10C, 0xE00 -gUnknown_0847DF0C:: @ 0x0847DF0C +gRubyRampGateTileGfx:: @ 0x0847DF0C .incbin "baserom.gba", 0x47DF0C, 0x1E00 -gUnknown_0847FD0C:: @ 0x0847FD0C +gSideBumperGfx:: @ 0x0847FD0C .incbin "baserom.gba", 0x47FD0C, 0x200 -gUnknown_0847FF0C:: @ 0x0847FF0C +gShopDigitTilesGfx:: @ 0x0847FF0C .incbin "baserom.gba", 0x47FF0C, 0xF00 -gUnknown_08480E0C:: @ 0x08480E0C +gDecimalDigitTilesGfx:: @ 0x08480E0C .incbin "baserom.gba", 0x480E0C, 0x280 -gUnknown_0848108C:: @ 0x0848108C +gSapphireShopSignTileGfx:: @ 0x0848108C .incbin "baserom.gba", 0x48108C, 0x2D00 -gUnknown_08483D8C:: @ 0x08483D8C +gRubyTravelVolbeat_Gfx:: @ 0x08483D8C .incbin "baserom.gba", 0x483D8C, 0x4C80 -gUnknown_08488A0C:: @ 0x08488A0C +gSapphireTravelIllumise_Gfx:: @ 0x08488A0C .incbin "baserom.gba", 0x488A0C, 0x4C80 -gUnknown_0848D68C:: @ 0x0848D68C +gPortraitGenericGraphics:: @ 0x0848D68C .incbin "baserom.gba", 0x48D68C, 0x2700 -gUnknown_0848FD8C:: @ 0x0848FD8C +gCaptureModeTilesGfx:: @ 0x0848FD8C .incbin "baserom.gba", 0x48FD8C, 0xCC0 -gUnknown_08490A4C:: @ 0x08490A4C +gHoleIndicatorTileGfx:: @ 0x08490A4C .incbin "baserom.gba", 0x490A4C, 0x4400 gDusclopsBoardDusclopsAppearFx_Gfx:: @ 0x08494E4C .incbin "graphics/stage/dusclops/dusclops_appear_fx.4bpp"; -gUnknown_0849664C:: @ 0x0849664C +gKyogreBodySprites_First15:: @ 0x0849664C .incbin "baserom.gba", 0x49664C, 0x5280 -gUnknown_0849B8CC:: @ 0x0849B8CC +gKyogreBodySprites_After15:: @ 0x0849B8CC .incbin "baserom.gba", 0x49B8CC, 0x3900 -gUnknown_0849F1CC:: @ 0x0849F1CC +gGroudonBoardBackgroundGfx:: @ 0x0849F1CC .incbin "baserom.gba", 0x49F1CC, 0x2020 -gUnknown_084A11EC:: @ 0x084A11EC +gGroudonBoulderSpriteFrames:: @ 0x084A11EC .incbin "baserom.gba", 0x4A11EC, 0x5D00 -gUnknown_084A6EEC:: @ 0x084A6EEC +gRayquazaMinionOrbFrames:: @ 0x084A6EEC .incbin "baserom.gba", 0x4A6EEC, 0x1680 -gUnknown_084A856C:: @ 0x084A856C +gRayquazaWindBoardGfx:: @ 0x084A856C .incbin "baserom.gba", 0x4A856C, 0x1C20 -gUnknown_084AA18C:: @ 0x084AA18C +gRayquazaSpriteSheet:: @ 0x084AA18C .incbin "baserom.gba", 0x4AA18C, 0x860 -gUnknown_084AA9EC:: @ 0x084AA9EC +gRayquazaBodyVariantTiles:: @ 0x084AA9EC .incbin "baserom.gba", 0x4AA9EC, 0x5000 -gUnknown_084AF9EC:: @ 0x084AF9EC +gSphealScoreCounterDigitSprites:: @ 0x084AF9EC .incbin "baserom.gba", 0x4AF9EC, 0x600 -gUnknown_084AFFEC:: @ 0x084AFFEC +gSphealExtendedScoreSprites:: @ 0x084AFFEC .incbin "baserom.gba", 0x4AFFEC, 0x480 -gUnknown_084B046C:: @ 0x084B046C +gSphealFlyingEnemyVariantSprites:: @ 0x084B046C .incbin "baserom.gba", 0x4B046C, 0x4380 -gUnknown_084B47EC:: @ 0x084B47EC +gSphealMinionBodySprites:: @ 0x084B47EC .incbin "baserom.gba", 0x4B47EC, 0x3000 -gUnknown_084B77EC:: @ 0x084B77EC +gSphealResultsScreenGfx:: @ 0x084B77EC .incbin "baserom.gba", 0x4B77EC, 0x800 gWhiscash_Gfx:: @ 0x084B7FEC .incbin "graphics/stage/ruby/whiscash.4bpp" -gPelliper_Gfx:: @ 0x084BB16C - .incbin "graphics/stage/sapphire/pelliper.4bpp" +gPelipper_Gfx:: @ 0x084BB16C + .incbin "graphics/stage/sapphire/pelipper.4bpp" .incbin "graphics/stage/sapphire/charger.4bpp" -gUnknown_084C00EC:: @ 0x084C00EC +gCatchCounterDigitTilesGfx:: @ 0x084C00EC .incbin "baserom.gba", 0x4C00EC, 0x700 -gUnknown_084C07EC:: @ 0x084C07EC +gPikaSaverTilesGfx:: @ 0x084C07EC .incbin "baserom.gba", 0x4C07EC, 0x480 -gUnknown_084C0C6C:: @ 0x084C0C6C +gDxModePikachuObjTiles:: @ 0x084C0C6C .incbin "baserom.gba", 0x4C0C6C, 0x900 -gUnknown_084C156C:: @ 0x084C156C +gPikachuSaverTilesGfx:: @ 0x084C156C .incbin "baserom.gba", 0x4C156C, 0x900 -gUnknown_084C1E6C:: @ 0x084C1E6C +gSapphireBumperRight_Gfx:: @ 0x084C1E6C .incbin "baserom.gba", 0x4C1E6C, 0x2D00 -gUnknown_084C4B6C:: @ 0x084C4B6C +gSapphireBumperRightHit_Gfx:: @ 0x084C4B6C .incbin "baserom.gba", 0x4C4B6C, 0xE00 .include "data/graphics/mon_portraits.inc" @@ -1470,7 +1470,7 @@ gUnknown_084C4B6C:: @ 0x084C4B6C gRubyBoardShopDoor_Gfx:: @ 0x084ED0CC .incbin "graphics/stage/ruby/shop_door.4bpp"; -gUnknown_084ED6CC:: @ 0x084ED6CC +gZigzagoonShockWallIndicator_Gfx:: @ 0x084ED6CC .incbin "graphics/stage/gunk_084ED6CC.4bpp"; gDusclopsBoardDusclops_Gfx:: @ 0x084EDACC @@ -1479,13 +1479,13 @@ gDusclopsBoardDusclops_Gfx:: @ 0x084EDACC gRubyBoardSharpedo_Gfx:: @ 0x084F5ACC .incbin "graphics/stage/ruby/sharpedo.4bpp"; -gUnknown_084F61EC:: @ 0x084F61EC +gPokemonNameDisplayGfx:: @ 0x084F61EC .incbin "graphics/stage/main/gunk_084F61EC.4bpp"; gRubyBoardShop_Gfx:: @ 0x084F6B0C .incbin "graphics/stage/ruby/shop.4bpp"; -gUnknown_084FA20C:: @ 0x084FA20C +gEggPortraitTilesGfx:: @ 0x084FA20C .incbin "graphics/stage/misc/gunk_084FA20C.4bpp"; gMainBoardPikaSpinner_Gfx:: @ 0x084FA48C @@ -1494,7 +1494,7 @@ gMainBoardPikaSpinner_Gfx:: @ 0x084FA48C gRubyBoardHatchCave_Gfx:: @ 0x084FB68C .incbin "graphics/stage/ruby/hatch_cave.4bpp"; -gUnknown_084FD18C:: @ 0x084FD18C +gEggFrameTilesGfx:: @ 0x084FD18C .incbin "graphics/stage/main/egg.4bpp"; gSapphireBoardSeedot_Gfx:: @ 0x084FDF8C @@ -1509,7 +1509,7 @@ gRubyBoardRampPrize_Gfx:: @ 0x084FEF0C gDusclopsBoardDusclopsBallGrabSwirl_Gfx:: @ 0x084FF30C .incbin "graphics/stage/dusclops/dusclops_ball_grab.4bpp"; -gUnknown_084FF90C:: @ 0x084FF90C +gKyogreWhirlpoolMinionSprites:: @ 0x084FF90C .incbin "baserom.gba", 0x4FF90C, 0x1700 gMainBoardBallSave_Gfx:: @ 0x0850100C @@ -1524,7 +1524,7 @@ gMainBoardBallSaveLatiosArm_Gfx:: @ 0x085038CC gMainBoardEndOfBall_Gfx:: @ 0x0850398C .incbin "graphics/stage/main/end_of_ball.4bpp"; -gUnknown_0850558C:: @ 0x0850558C +gBonusSummaryCharTiles:: @ 0x0850558C .incbin "graphics/stage/misc/gunk_0850558C.4bpp"; gUnknown_08505B8C:: @ 0x08505B8C @@ -1551,10 +1551,10 @@ gDusclopsBoardDuskull_Gfx:: @ 0x08510E4C gSapphireBoardZigzagoon_Gfx:: @ 0x08512C4C .incbin "graphics/stage/sapphire/zigzagoon.4bpp"; -gUnknown_08514F4C:: @ 0x08514F4C +gBonusStagePal_Lit:: @ 0x08514F4C .incbin "baserom.gba", 0x514F4C, 0x20 -gUnknown_08514F6C:: @ 0x08514F6C +gBonusStagePal_Dark:: @ 0x08514F6C .incbin "baserom.gba", 0x514F6C, 0x1E0 gUnknown_0851514C:: @ 0x0851514C @@ -1575,10 +1575,10 @@ gUnknown_0851976C:: @ 0x0851976C gUnknown_0851DB8C:: @ 0x0851DB8C .incbin "baserom.gba", 0x51DB8C, 0x4420 -gUnknown_08521FAC:: @ 0x08521FAC +gBonusClearTextPal_Lit:: @ 0x08521FAC .incbin "baserom.gba", 0x521FAC, 0x20 -gUnknown_08521FCC:: @ 0x08521FCC +gBonusClearTextPal_Dark:: @ 0x08521FCC .incbin "baserom.gba", 0x521FCC, 0x1E0 gUnknown_085221AC:: @ 0x085221AC @@ -1659,7 +1659,7 @@ gDefaultButtonConfigs:: @ 0x08527ED6 .byte 0x09, 0x0A, 0x08, 0x0A, 0x05, 0x0A, 0x00, 0x0A, 0x05, 0x00; .byte 0x09, 0x0A, 0x08, 0x0A, 0x05, 0x0A, 0x04, 0x0A, 0x06, 0x0A; -gUnknown_08527EFE:: @ 0x08527EFE +gDefaultCustomButtonConfigTileIds:: @ 0x08527EFE .incbin "baserom.gba", 0x527EFE, 0xA gOptionsStateFuncs:: @ 0x08527F08 diff --git a/data/rom_2.s b/data/rom_2.s index d8c32df..2e7045e 100644 --- a/data/rom_2.s +++ b/data/rom_2.s @@ -82,7 +82,7 @@ gUnknown_086A4C18:: @ 0x086A4C18 gUnknown_086A4C2C:: @ 0x086A4C2C .4byte 2, 2, 1, -11, 3, -1 -gUnknown_086A4C44:: @ 0x086A4C44 +gRumblePatterns:: @ 0x086A4C44 .4byte gUnknown_086A4B08 .4byte gUnknown_086A4B14 .4byte gUnknown_086A4B20 @@ -100,7 +100,7 @@ gUnknown_086A4C44:: @ 0x086A4C44 .4byte gUnknown_086A4C2C .align 2, 0 -gUnknown_086A4C80:: @ 0x086A4C80 +gBonusFieldSelectSpriteSets:: @ 0x086A4C80 .4byte gUnknown_086A699E .4byte gUnknown_086A699E .4byte gUnknown_086A699E @@ -118,7 +118,7 @@ gUnknown_086A4C80:: @ 0x086A4C80 .4byte gUnknown_086A6A80 .4byte gUnknown_086A6AAA -gUnknown_086A4CC0:: @ 0x086A4CC0 +gBonusFieldStageIconPositions:: @ 0x086A4CC0 .2byte 0x20, 0x20 .2byte 0x60, 0x20 .2byte 0xa0, 0x20 @@ -126,7 +126,7 @@ gUnknown_086A4CC0:: @ 0x086A4CC0 .2byte 0x60, 0x58 .2byte 0xa0, 0x58 -gUnknown_086A4CD8:: @ 0x086A4CD8 +gBonusFieldSpeedIndicatorPositions:: @ 0x086A4CD8 .2byte 0x18, 0x24 .2byte 0x58, 0x24 .2byte 0x98, 0x24 @@ -143,10 +143,10 @@ gBonusFieldMenuSelectionToField:: @ 0x086A4CF0 .byte FIELD_RAYQUAZA .align 2, 0 -gUnknown_086A4CF8:: @ 0x086A4CF8 +gEReaderTextGlyphTable:: @ 0x086A4CF8 .incbin "baserom.gba", 0x6A4CF8, 0x7E0 -gUnknown_086A54D8:: @ 0x086A54D8 +gCatchHatchSpriteSets:: @ 0x086A54D8 .4byte gUnknown_086A5710 .4byte gUnknown_086A573A .4byte gUnknown_086A574C @@ -161,19 +161,19 @@ gUnknown_086A54D8:: @ 0x086A54D8 .4byte gUnknown_086A5C4E .4byte gUnknown_086A5CC0 -gUnknown_086A550C:: @ 0x086A550C +gEReaderTransitionStepDurations:: @ 0x086A550C .2byte 0x0002, 0x0002, 0x0002, 0x0002, 0x0004; .2byte 0x0004, 0x003C; -gUnknown_086A551A:: @ 0x086A551A +gEReaderTextLengths:: @ 0x086A551A .byte 0x21, 0x2A, 0x41, 0x3D, 0x18, 0x47, 0x18, 0x2F, 0x2D, 0x18; .byte 0x46, 0x18, 0x24, 0x43; -gUnknown_086A5528:: @ 0x086A5528 +gEReaderTextHasNextPage:: @ 0x086A5528 .byte 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01; .byte 0x00, 0x01, 0x00, 0x00; -gUnknown_086A5536:: @ 0x086A5536 +gEReaderCardStartPages:: @ 0x086A5536 .byte 0x02, 0x04, 0x06, 0x09, 0x0B, 0x00 gUnknown_086A553C:: @ 0x086A553C @@ -526,22 +526,22 @@ gUnknown_086A5DC6:: @ 0x086A5DC6 gUnknown_086A5DD0:: @ 0x086A5DD0 .incbin "baserom.gba", 0x6A5DD0, 0xA -gUnknown_086A5DDA:: @ 0x086A5DDA +gPokedexAnimBaseTileNums:: @ 0x086A5DDA .incbin "baserom.gba", 0x6A5DDA, 0x18 -gUnknown_086A5DF2:: @ 0x086A5DF2 +gPokedexCatchAnimTileOffsets:: @ 0x086A5DF2 .incbin "baserom.gba", 0x6A5DF2, 0x20 -gUnknown_086A5E12:: @ 0x086A5E12 +gPokedexAnimTileDeltas:: @ 0x086A5E12 .incbin "baserom.gba", 0x6A5E12, 0xD0 -gUnknown_086A5EE2:: @ 0x086A5EE2 +gPokedexHatchAnimTileOffsets:: @ 0x086A5EE2 .incbin "baserom.gba", 0x6A5EE2, 0x132 -gUnknown_086A6014:: @ 0x086A6014 +gPokedexAnimFrameDurations:: @ 0x086A6014 .incbin "baserom.gba", 0x6A6014, 0x134 -gUnknown_086A6148:: @ 0x086A6148 +gPokedexSpriteSets:: @ 0x086A6148 .4byte gUnknown_086A553C .4byte gUnknown_086A5706 .4byte gUnknown_086A566E @@ -619,7 +619,7 @@ gDexAnimationIx:: @ 0x086A61BC .2byte 79, 80, 81, 82, 83 -gUnknown_086A6356:: @ 0x086A6356 +gPokedexCatchAnimIndices:: @ 0x086A6356 .2byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 .2byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 .2byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 @@ -646,7 +646,7 @@ gUnknown_086A6356:: @ 0x086A6356 .2byte 0, 0, 0, 0, 0 -gUnknown_086A64F0:: @ 0x086A64F0 +gPokedexListNameVramOffsets:: @ 0x086A64F0 .2byte 0x4E20, 0x5400, 0x5500, 0x5600, 0x5700 gUnknown_086A64FA:: @ 0x086A64FA @@ -867,7 +867,7 @@ gUnknown_086A6AAA:: @ 0x086A6AAA packed_sprite_oam x=0x10, y=0x10, affineMode=0x0, objMode=0x0, mosaic=0x0, bpp=0x0, shape=0x1, matrixNum=0x0, hFlip=0x0, vFlip=0x0, size=0x2, tileNum=0x15c, priority=0x0, paletteNum=0x1 .2byte 0 -gUnknown_086A6AD4:: @ 0x086A6AD4 +gFieldSelectSpriteSets:: @ 0x086A6AD4 .4byte gUnknown_086A697A .4byte gUnknown_086A698C .4byte gUnknown_086A6830 @@ -885,11 +885,11 @@ gUnknown_086A6AD4:: @ 0x086A6AD4 .4byte gUnknown_086A6A80 .4byte gUnknown_086A6AAA -gUnknown_086A6B14:: @ 0x086A6B14 +gFieldTransitionAnimData:: @ 0x086A6B14 .2byte 2, 4, 5, 6, 7 .2byte 3, 8, 9, 10, 11 -gUnknown_086A6B28:: @ 0x086A6B28 +gFieldSelectBallSpeedPositions:: @ 0x086A6B28 .2byte 36, 72 .2byte 140, 72 @@ -1741,7 +1741,7 @@ gUnknown_086A7658:: @ 0x086A7658 packed_sprite_oam x=0x30, y=-0x28, affineMode=0x0, objMode=0x0, mosaic=0x0, bpp=0x0, shape=0x0, matrixNum=0x0, hFlip=0x0, vFlip=0x0, size=0x1, tileNum=0x396, priority=0x0, paletteNum=0x0 .2byte 0,0 -gUnknown_086A769C:: @ 0x086A769C +gIntroScene1_SpriteSets:: @ 0x086A769C .4byte gUnknown_086A7570 .4byte gUnknown_086A75C2 .4byte gUnknown_086A7636 @@ -1795,7 +1795,7 @@ gUnknown_086A769C:: @ 0x086A769C gUnknown_086A7760:: @ 0x086A7760 .incbin "baserom.gba", 0x6A7760, 0x8 -gUnknown_086A7768:: @ 0x086A7768 +gIntroScene1_BGAnimTiming:: @ 0x086A7768 .2byte 0x1, 0x14 .2byte 0x2, 0x20 .2byte 0x3, 0x28 @@ -1805,10 +1805,10 @@ gUnknown_086A7768:: @ 0x086A7768 .2byte 0x7, 0x37 .2byte 0x8, 0x39 -gUnknown_086A7788:: @ 0x086A7788 +gIntroScene1_TileOffsets:: @ 0x086A7788 .2byte 0x80, 0x100, 0x180, 0x1000, 0x1080, 0x1100, 0x1180, 0x2000 -gUnknown_086A7798:: @ 0x086A7798 +gIntroScene1_ScaleOffsets:: @ 0x086A7798 .2byte -64, -16 .2byte -32, -16 .2byte 0, -16 @@ -1929,7 +1929,7 @@ gUnknown_086A7938:: @ 0x086A7938 packed_sprite_oam x=0x40, y=0x40, affineMode=0x0, objMode=0x0, mosaic=0x0, bpp=0x0, shape=0x2, matrixNum=0x0, hFlip=0x0, vFlip=0x0, size=0x3, tileNum=0x14, priority=0x0, paletteNum=0x6 .2byte 0,0 -gUnknown_086A795C:: @ 0x086A795C +gIntroScene3_SpriteSets:: @ 0x086A795C .4byte gUnknown_086A7938 .space 0x4 @@ -1975,13 +1975,13 @@ gUnknown_086A79A8:: @ 0x086A79A8 .2byte 0,0 -gUnknown_086A79EC:: @ 0x086A79EC +gIntroScene5_SpriteSets:: @ 0x086A79EC .4byte gUnknown_086A7986 .4byte gUnknown_086A7964 .4byte gUnknown_086A79A8 .4byte 0 -gUnknown_086A79FC:: @ 0x086A79FC +gIntroScene5_BGAnimTiming:: @ 0x086A79FC .2byte 1, 3 .2byte 2, 6 .2byte 3, 9 @@ -1991,7 +1991,7 @@ gUnknown_086A79FC:: @ 0x086A79FC .2byte 7, 20 .2byte 0, 0 -gUnknown_086A7A1C:: @ 0x086A7A1C +gIntroScene5_TileOffsets:: @ 0x086A7A1C .2byte 0x1100, 0x1080, 0x1000, 0x0180, 0x100, 0x80, 0, 0 gUnknown_086A7A2C:: @ 0x086A7A2C @@ -2028,7 +2028,7 @@ gUnknown_086A7A6E:: @ 0x086A7A6E packed_sprite_oam x=-0x8, y=-0x8, affineMode=0x0, objMode=0x0, mosaic=0x0, bpp=0x0, shape=0x0, matrixNum=0x0, hFlip=0x0, vFlip=0x1, size=0x1, tileNum=0x14, priority=0x0, paletteNum=0x1 .2byte 0 -gUnknown_086A7A78:: @ 0x086A7A78 +gIntroScene6_SpriteSets:: @ 0x086A7A78 .4byte gUnknown_086A7A48 .4byte gUnknown_086A7A6E .4byte gUnknown_086A7A48 @@ -2048,13 +2048,13 @@ gUnknown_086A7A78:: @ 0x086A7A78 .4byte gUnknown_086A7A2C .4byte gUnknown_086A7A52 -gUnknown_086A7AC0:: @ 0x086A7AC0 +gIntroScene6_ScrollVelocity:: @ 0x086A7AC0 .incbin "baserom.gba", 0x6A7AC0, 0x24 -gUnknown_086A7AE4:: @ 0x086A7AE4 +gIntroScene6_BounceFlags:: @ 0x086A7AE4 .incbin "baserom.gba", 0x6A7AE4, 0x50 -gUnknown_086A7B34:: @ 0x086A7B34 +gIntroScene6_EntityMovement:: @ 0x086A7B34 .incbin "baserom.gba", 0x6A7B34, 0x1C gUnknown_086A7B50:: @ 0x086A7B50 @@ -2068,11 +2068,11 @@ gUnknown_086A7B50:: @ 0x086A7B50 packed_sprite_oam x=0x0, y=0x0, affineMode=0x0, objMode=0x0, mosaic=0x0, bpp=0x0, shape=0x0, matrixNum=0x0, hFlip=0x0, vFlip=0x0, size=0x3, tileNum=0x18, priority=0x0, paletteNum=0x1 .2byte 0,0 -gUnknown_086A7B74:: @ 0x086A7B74 +gIntroScene7_SpriteSets:: @ 0x086A7B74 .4byte gUnknown_086A7B50 .4byte 0 -gUnknown_086A7B7C:: @ 0x086A7B7C +gIntroScene7_WailmerQuadOffsets:: @ 0x086A7B7C .2byte -64, -64 .2byte 0, -64 .2byte -64, 0 @@ -2102,7 +2102,7 @@ gUnknown_086A7BF8:: @ 0x086A7BF8 gUnknown_086A7C1A:: @ 0x086A7C1A .incbin "baserom.gba", 0x6A7C1A, 0xA -gUnknown_086A7C24:: @ 0x086A7C24 +gIntroScene8a_SpriteSets:: @ 0x086A7C24 .4byte gUnknown_086A7C1A .4byte gUnknown_086A7BF8 .4byte gUnknown_086A7BB8 @@ -2121,7 +2121,7 @@ gUnknown_086A7C24:: @ 0x086A7C24 .4byte gUnknown_086A7BC2 .4byte gUnknown_086A7B8C -gUnknown_086A7C68:: @ 0x086A7C68 +gIntroScene8a_DebrisMovement:: @ 0x086A7C68 .byte 0x05, 0x02, 0x03, 0x01, 0x06, 0x01 .align 2,0 .byte 0x05, 0xFE, 0x03, 0xFF, 0x19, 0x02 @@ -2168,7 +2168,7 @@ gUnknown_086A7CF2:: @ 0x086A7CF2 gUnknown_086A7CFC:: @ 0x086A7CFC .incbin "baserom.gba", 0x6A7CFC, 0x24 -gUnknown_086A7D20:: @ 0x086A7D20 +gIntroScene8b_SpriteSets:: @ 0x086A7D20 .4byte gUnknown_086A7CFC .4byte gUnknown_086A7C98 .4byte gUnknown_086A7CA2 @@ -2181,14 +2181,14 @@ gUnknown_086A7D20:: @ 0x086A7D20 .4byte gUnknown_086A7CE8 .4byte gUnknown_086A7CF2 -gUnknown_086A7D4C:: @ 0x086A7D4C +gIntroScene8b_BallDecelTable:: @ 0x086A7D4C .incbin "baserom.gba", 0x6A7D4C, 0x5C -gUnknown_086A7DA8:: @ 0x086A7DA8 +gNameEntryCursorSpriteSets:: @ 0x086A7DA8 .4byte gUnknown_086A7DE8 .4byte gUnknown_086A7DFA -gUnknown_086A7DB0:: @ 0x086A7DB0 +gHighScoreScreenSpriteSets:: @ 0x086A7DB0 .4byte gUnknown_086A7E0C .4byte gUnknown_086A7E20 .4byte gUnknown_086A7E34 @@ -2200,7 +2200,7 @@ gUnknown_086A7DB0:: @ 0x086A7DB0 .4byte gUnknown_086A7EC8 -gUnknown_086A7DD4:: @ 0x086A7DD4 +gCompletionBannerSpriteSets:: @ 0x086A7DD4 .4byte gUnknown_086A7EFA .4byte gUnknown_086A7F1C .4byte gUnknown_086A7F3E @@ -2356,15 +2356,15 @@ gUnknown_086A7F82:: @ 0x086A7F82 packed_sprite_oam x=0x8, y=-0x18, affineMode=0x0, objMode=0x0, mosaic=0x0, bpp=0x0, shape=0x0, matrixNum=0x0, hFlip=0x0, vFlip=0x0, size=0x3, tileNum=0x12e, priority=0x0, paletteNum=0x7 .2byte 0 -gUnknown_086A7FA4:: @ 0x086A7FA4 +gScorePaletteAnimOffsets:: @ 0x086A7FA4 .byte 0x0B, 0x0B, 0xEA; .align 1, 0; -gUnknown_086A7FA8:: @ 0x086A7FA8 +gScorePaletteResetOffsets:: @ 0x086A7FA8 .byte 0x00, 0xF5, 0xEA; .align 1, 0; -gUnknown_086A7FAC:: @ 0x086A7FAC +gHighScoreCharToTileMap:: @ 0x086A7FAC .incbin "baserom.gba", 0x6A7FAC, 0x54 gUnknown_086A8000:: @ 0x086A8000 @@ -2538,7 +2538,7 @@ gUnknown_086A9630:: @ 0x086A9630 .incbin "baserom.gba", 0x6A9630, 0x1C -gUnknown_086A964C:: @ 0x086A964C +gTitleMenuStateTable:: @ 0x086A964C .2byte 0x0002 .2byte 0x000A .2byte 0x0005 @@ -2551,10 +2551,10 @@ gUnknown_086A964C:: @ 0x086A964C .2byte 0x0000 .2byte 0x000B -gUnknown_086A9662:: @ 0x086A9662 +gTitlePressStartAnimDurations:: @ 0x086A9662 .byte 0x14, 0x05, 0x14, 0x05 -gUnknown_086A9666:: @ 0x086A9666 +gTitleMenuSlideInAnimData:: @ 0x086A9666 .byte 0x01, 0x05 .byte 0x03, 0x05 .byte 0x01, 0x05 @@ -2562,7 +2562,7 @@ gUnknown_086A9666:: @ 0x086A9666 .byte 0x01, 0x05 .byte 0x03, 0x05 -gUnknown_086A9672:: @ 0x086A9672 +gTitleMenuSlideOutAnimData:: @ 0x086A9672 .byte 0x00, 0x10 .byte 0x01, 0x04 .byte 0x02, 0x10 @@ -2573,27 +2573,27 @@ gUnknown_086A9672:: @ 0x086A9672 .byte 0x01, 0x04 .byte 0x00, 0x00 -gUnknown_086A9684:: @ 0x086A9684 +gTitleNoSaveArrowPositions:: @ 0x086A9684 @Vector16 pairs .2byte 0x004B, 0x003C; .2byte 0x0052, 0x004A; .2byte 0x0052, 0x0058; .2byte 0x0052, 0x0066; -gUnknown_086A9694:: @ 0x086A9694 +gTitleNoSaveSelectorPositions:: @ 0x086A9694 @Vector16 pairs .2byte 0x0095, 0x003C; .2byte 0x008E, 0x004A; .2byte 0x008E, 0x0058; .2byte 0x008E, 0x0066; -gUnknown_086A96A4:: @ 0x086A96A4 +gTitleNoSaveMenuActions:: @ 0x086A96A4 .2byte 0x0001 .2byte 0x0002 .2byte 0x0003 .2byte 0x0004 -gUnknown_086A96AC:: @ 0x086A96AC +gTitleSavedArrowPositions:: @ 0x086A96AC @Vector16 pairs .2byte 0x0052, 0x0038; .2byte 0x0052, 0x0045; @@ -2601,7 +2601,7 @@ gUnknown_086A96AC:: @ 0x086A96AC .2byte 0x0052, 0x005F; .2byte 0x0052, 0x006B; -gUnknown_086A96C0:: @ 0x086A96C0 +gTitleSavedSelectorPositions:: @ 0x086A96C0 @Vector16 pairs .2byte 0x008E, 0x0038; .2byte 0x008E, 0x0045; @@ -2609,7 +2609,7 @@ gUnknown_086A96C0:: @ 0x086A96C0 .2byte 0x008E, 0x005F; .2byte 0x008E, 0x006B; -gUnknown_086A96D4:: @ 0x086A96D4 +gTitleSavedMenuActions:: @ 0x086A96D4 .2byte 0x0001 .2byte 0x0000 .2byte 0x0002 @@ -2620,14 +2620,14 @@ gUnknown_086A96D4:: @ 0x086A96D4 @ Can't find code pointing to this... possibly part of the last array when testing? .2byte 0x0500, 0x0302, 0x0000 -gUnknown_086A96E4:: @ 0x086A96E4 +gTitlePressStartSpriteSets:: @ 0x086A96E4 .4byte gUnknown_086A8000 .4byte gUnknown_086A802A .4byte gUnknown_086A8054 .4byte gUnknown_086A807E .4byte gUnknown_086A8AFC -gUnknown_086A96F8:: @ 0x086A96F8 +gTitleNoSaveDefaultSprites:: @ 0x086A96F8 .4byte gUnknown_086A8AC0 .4byte gUnknown_086A8ACA .4byte gUnknown_086A8AD4 @@ -2636,7 +2636,7 @@ gUnknown_086A96F8:: @ 0x086A96F8 .4byte gUnknown_086A8AF2 .4byte gUnknown_086A80A8 -gUnknown_086A9714:: @ 0x086A9714 +gTitleNoSaveAnimSprites:: @ 0x086A9714 .4byte gUnknown_086A80A8 .4byte gUnknown_086A8122 .4byte gUnknown_086A81B4 @@ -2651,10 +2651,10 @@ gUnknown_086A9714:: @ 0x086A9714 .4byte gUnknown_086A89AE .4byte 0x00000000 -gUnknown_086A9748:: @ 0x086A9748 +gTitleMenuRetractDurations:: @ 0x086A9748 .byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 -gUnknown_086A975C:: @ 0x086A975C +gTitleSavedDefaultSprites:: @ 0x086A975C .4byte gUnknown_086A95FE .4byte gUnknown_086A9608 .4byte gUnknown_086A9612 @@ -2663,7 +2663,7 @@ gUnknown_086A975C:: @ 0x086A975C .4byte gUnknown_086A9630 .4byte gUnknown_086A8BB6 -gUnknown_086A9778:: @ 0x086A9778 +gTitleSavedAnimSprites:: @ 0x086A9778 .4byte gUnknown_086A8BB6 .4byte gUnknown_086A8C30 .4byte gUnknown_086A8CC2 @@ -3760,45 +3760,45 @@ gUnknown_086ACC98:: @ 0x086ACC98 gUnknown_086ACCA0:: @ 0x086ACCA0 .incbin "baserom.gba", 0x6ACCA0, 0xB0 -gUnknown_086ACD50:: @ 0x086ACD50 +gWallCollisionPositionCorrection:: @ 0x086ACD50 .incbin "baserom.gba", 0x6ACD50, 0x24 -gUnknown_086ACD74:: @ 0x086ACD74 +gFlipperCollisionAngleCorrection:: @ 0x086ACD74 .incbin "baserom.gba", 0x6ACD74, 0x10 -gUnknown_086ACD84:: @ 0x086ACD84 +gFlipperCollisionAngles:: @ 0x086ACD84 .incbin "baserom.gba", 0x6ACD84, 0x34 -gUnknown_086ACDB8:: @ 0x086ACDB8 +gFlipperCollisionFrameMapping:: @ 0x086ACDB8 .incbin "baserom.gba", 0x6ACDB8, 0x3C -gUnknown_086ACDF4:: @ 0x086ACDF4 +gBounceBackForceMagnitudes:: @ 0x086ACDF4 .2byte 0x0000, 0x00F0, 0x008C, 0x00C8 .2byte 0,0,0,0,0,0,0,0 @ 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; - .4byte COLLISION_CHECK_DUSCLOPS_171C8, COLLISION_CHECK_KECLEON_176B0; - .4byte COLLISION_CHECK_KYOGRE_17F28, COLLISION_CHECK_GROUDON_18324; - .4byte COLLISION_CHECK_RAYQUAZA_187F4, COLLISION_CHECK_SPHEAL_18B50; + .4byte CollisionCheck_Ruby, CollisionCheck_Sapphire; + .4byte CollisionCheck_Dusclops, CollisionCheck_Kecleon; + .4byte CollisionCheck_Kyogre, CollisionCheck_Groudon; + .4byte CollisionCheck_Rayquaza, CollisionCheck_Spheal; -gUnknown_086ACE2C:: @ 0x086ACE2C +gFlipperLaunchVelocityParams:: @ 0x086ACE2C .incbin "baserom.gba", 0x6ACE2C, 0x34 -gUnknown_086ACE60:: @ 0x086ACE60 +gWallEscapeOffsets:: @ 0x086ACE60 @Vector16 pairs .2byte 1, 0; .2byte -1, 0; .2byte 0, 1; .2byte 0, -1; -gUnknown_086ACE70:: @ 0x086ACE70 +gSapphireTargetBumperIndexMap:: @ 0x086ACE70 .2byte 0, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 9 .space 0x2 -gUnknown_086ACE8C:: @ 0x086ACE8C +gFlipperLineGeometry:: @ 0x086ACE8C @tagged in sets of 4 .2byte 0x0004, 0x0010, 0x001B, 0x001E; .2byte 0x0004, 0x0010, 0x001D, 0x001B; @@ -3814,10 +3814,10 @@ gUnknown_086ACE8C:: @ 0x086ACE8C .2byte 0x0004, 0x0010, 0x001B, 0x0005; .2byte 0x0004, 0x0010, 0x0019, 0x0003; -gUnknown_086ACEF4:: @ 0x086ACEF4 +gFlipperBaseXPositions:: @ 0x086ACEF4 .2byte 0x0053, 0x007D -gUnknown_086ACEF8:: @ 0x086ACEF8 +gModeBannerTilemaps:: @ 0x086ACEF8 .4byte 0x000000 .4byte gUnknown_0851514C .4byte gUnknown_085223AC @@ -3827,7 +3827,7 @@ gUnknown_086ACEF8:: @ 0x086ACEF8 .4byte gUnknown_0851976C .4byte gUnknown_0851DB8C -gUnknown_086ACF18:: @ 0x086ACF18 +gModeBannerPalettes:: @ 0x086ACF18 .4byte 0x000000 .4byte gUnknown_0851956C .4byte gUnknown_085267CC @@ -3837,7 +3837,7 @@ gUnknown_086ACF18:: @ 0x086ACF18 .4byte gUnknown_0851958C .4byte gUnknown_085195AC -gUnknown_086ACF38:: @ 0x086ACF38 +gCaptureSequenceTimings:: @ 0x086ACF38 @frame timer, 34 frame states. .2byte 20, 5, 4, 4, 4 .2byte 4, 4, 4, 4, 4 @@ -3849,32 +3849,32 @@ gUnknown_086ACF38:: @ 0x086ACF38 .space 0x4 -gUnknown_086ACF80:: @ 0x086ACF80 +gCapturePalette:: @ 0x086ACF80 .incbin "baserom.gba", 0x6ACF80, 0x20 -gUnknown_086ACFA0:: @ 0x086ACFA0 +gEvoItemPositions:: @ 0x086ACFA0 .incbin "baserom.gba", 0x6ACFA0, 0x40 -gUnknown_086ACFE0:: @ 0x086ACFE0 +gCaughtTextChars:: @ 0x086ACFE0 .2byte 'W','A','S',' ','C','A','U','G','H','T'; -gUnknown_086ACFF4:: @ 0x086ACFF4 +gCaptureShakeOffsets:: @ 0x086ACFF4 .byte 0, 1, 2, 3, 1, 2, 4, 5, 1, 1, 6, 7 -gUnknown_086AD000:: @ 0x086AD000 +gShopItemData:: @ 0x086AD000 .incbin "baserom.gba", 0x6AD000, 0x70 -gUnknown_086AD070:: @ 0x086AD070 +gPortraitIdleCycleData:: @ 0x086AD070 .incbin "baserom.gba", 0x6AD070, 0x110 -gUnknown_086AD180:: @ 0x086AD180 +gRouletteWheelContents:: @ 0x086AD180 .incbin "baserom.gba", 0x6AD180, 0x15E -gUnknown_086AD2DE:: @ 0x086AD2DE +gShopCursorToItemMap:: @ 0x086AD2DE .2byte 0x0000, 0x0001, 0x0002, 0x000A, 0x0014; .2byte 0x0003, 0x0016, 0x0004; -gUnknown_086AD2EE:: @ 0x086AD2EE +gEggAnimationFrameData:: @ 0x086AD2EE .incbin "baserom.gba", 0x6AD2EE, 0x110 gHatchSequentialTileFramesetData:: @ 0x086AD3FE @@ -3895,7 +3895,7 @@ gHatchSequentialTileFramesetData:: @ 0x086AD3FE @ 8 bytes unidentified data .byte 0, 0, 0, 0x70, 0, 0, 0xff, 0x7f -gUnknown_086AD436:: @ 0x086AD436 +gHatchSequentialFrameData:: @ 0x086AD436 .2byte 0x0000, 0x0005 .2byte 0x0001, 0x0003 .2byte 0x0002, 0x0004 @@ -3906,7 +3906,7 @@ gUnknown_086AD436:: @ 0x086AD436 .2byte 0x0006, 0x7000 -gUnknown_086AD456:: @ 0x086AD456 +gEvoShopAnimFrames:: @ 0x086AD456 .2byte 0x0006, 0x0007, 0x0008, 0x0003, 0x0009, 0x000A, 0x0000; .2byte 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006; @@ -3923,7 +3923,7 @@ gEvoItemAppear_GfxList:: @ 0x086AD474 .4byte gEvoHeartAppear_Gfx .4byte gEvoBoxAppear_Gfx -gUnknown_086AD49C:: @ 0x086AD49C +gEvoItemTilesGfxPtrs:: @ 0x086AD49C .4byte gPickupIcon1_Gfx .4byte gPickupIcon2_Gfx .4byte gPickupIcon3_Gfx @@ -3936,45 +3936,45 @@ gUnknown_086AD49C:: @ 0x086AD49C .4byte gPickupIcon10_Gfx -gUnknown_086AD4C4:: @ 0x086AD4C4 - .4byte sub_25F64 - .4byte sub_19C04 - .4byte sub_21300 - .4byte sub_21578 - .4byte sub_27E08 - .4byte sub_24350 - .4byte sub_26F38 - .4byte sub_269A4 - .4byte sub_28404 +gBoardStateInitFuncs:: @ 0x086AD4C4 + .4byte InitAreaRoulette + .4byte InitFieldIdle + .4byte InitCatchTrigger + .4byte InitBonusStageSelect + .4byte InitCatchEmMode + .4byte InitEggMode + .4byte InitEvolutionMode + .4byte InitTravelMode + .4byte InitJirachiBonus -gUnknown_086AD4E8:: @ 0x086AD4E8 - .4byte sub_260B8 - .4byte sub_19CC8 - .4byte sub_21320 - .4byte sub_216FC - .4byte sub_27F94 - .4byte sub_24408 - .4byte sub_27080 - .4byte sub_26A10 - .4byte sub_28544 +gBoardStateUpdateFuncs:: @ 0x086AD4E8 + .4byte UpdateAreaRoulette + .4byte UpdateFieldIdle + .4byte UpdateCatchTrigger + .4byte UpdateBonusStageSelect + .4byte UpdateCatchEmMode + .4byte UpdateEggMode + .4byte UpdateEvolutionMode + .4byte UpdateTravelMode + .4byte UpdateJirachiBonus -gUnknown_086AD50C:: @ 0x086AD50C - .4byte gUnknown_081B8984 +gShopEvoBGAnimFrames:: @ 0x086AD50C + .4byte gShopModeBG_Gfx .4byte gUnknown_081B9984 .4byte gUnknown_081BA984 .4byte gUnknown_081BB984 - .4byte gUnknown_081B4784 + .4byte gEvoModeBG_Gfx .4byte gUnknown_081B5784 .4byte gUnknown_081B6784 .4byte gUnknown_081B7784 -gUnknown_086AD52C:: @ 0x086AD52C +gEggHatchAnimData:: @ 0x086AD52C .incbin "baserom.gba", 0x6AD52C, 0x54 -gUnknown_086AD580:: @ 0x086AD580 +gEggWalkPathWaypoints:: @ 0x086AD580 .incbin "baserom.gba", 0x6AD580, 0x1D0 -gUnknown_086AD750:: @ 0x086AD750 +gSapphireEggWaypoints:: @ 0x086AD750 @Vector32 pairs .4byte 0x00000974, 0x00000384 .4byte 0x00000974, 0x000006cc @@ -3985,16 +3985,16 @@ gUnknown_086AD750:: @ 0x086AD750 .4byte 0x00000708, 0x00000960 -gUnknown_086AD788:: @ 0x086AD788 +gAngleToDirectionTable:: @ 0x086AD788 .2byte 0x0005, 0x0008, 0x0008, 0x000B, 0x000B, 0x0002, 0x0002, 0x0005 -gUnknown_086AD798:: @ 0x086AD798 +gPortraitPaletteSlots:: @ 0x086AD798 .2byte 0x000D, 0x000C; -gUnknown_086AD79C:: @ 0x086AD79C +gRouletteOutcomeFrameOffsets:: @ 0x086AD79C .2byte 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 -gUnknown_086AD7C0:: @ 0x086AD7C0 +gNuzleafAnimFrameData:: @ 0x086AD7C0 .2byte 0x000E, 0x0003, 0x0008; .2byte 0x000F, 0x0003, 0x0009; .2byte 0x0010, 0x0003, 0x0009; @@ -4021,7 +4021,7 @@ gUnknown_086AD7C0:: @ 0x086AD7C0 .2byte 0x001B, 0x0004, 0x0011; .2byte 0x001C, 0x0014, 0x0012; -gUnknown_086AD856:: @ 0x086AD856 +gNuzleafPositions:: @ 0x086AD856 .2byte 28, 51 .2byte 64, 33 .2byte 28, 51 @@ -4077,18 +4077,18 @@ gWhiscashFramesetData:: @ 0x086AD862 .2byte 0x000A, 0x0031, 0x0000, 0x0000 .align 2, 0 -gUnknown_086AD9DC:: @ 0x086AD9DC +gChinchouWaypointPositions:: @ 0x086AD9DC @ 4 Vector16 .2byte 120, 135 .2byte 159, 144 .2byte 151, 167 .2byte 131, 179 -gUnknown_086AD9EC:: @ 0x086AD9EC +gWhiscashShakeOffsets:: @ 0x086AD9EC @ 8 s16 vals .2byte 1,3,1,0,-1,-3,-1,0 -gUnknown_086AD9FC:: @ 0x086AD9FC +gSharpedoAnimFrameData:: @ 0x086AD9FC .2byte 0x0, 0x0 .2byte 0x1, 0x0 .2byte 0x2, 0x1 @@ -4113,67 +4113,67 @@ gUnknown_086AD9FC:: @ 0x086AD9FC .2byte 0x13, 0x2 .2byte 0x14, 0x2 -gUnknown_086ADA58:: @ 0x086ADA58 +gChikoritaFlashFrameIndices:: @ 0x086ADA58 .incbin "baserom.gba", 0x6ADA58, 0x16 -gUnknown_086ADA6E:: @ 0x086ADA6E +gGulpinAnimData:: @ 0x086ADA6E .incbin "baserom.gba", 0x6ADA6E, 0x442 -gUnknown_086ADEB0:: @ 0x086ADEB0 +gSideBumperGfxFrameIndices:: @ 0x086ADEB0 .2byte 0x00 -gUnknown_086ADEB2:: @ 0x086ADEB2 +gSideBumperAnimDurations:: @ 0x086ADEB2 .incbin "baserom.gba", 0x6ADEB2, 0x2E -gUnknown_086ADEE0:: @ 0x086ADEE0 +gCatchOverlayAnimData:: @ 0x086ADEE0 .incbin "baserom.gba", 0x6ADEE0, 0x68 -gUnknown_086ADF48:: @ 0x086ADF48 +gPikaSaverAnimFrameTable:: @ 0x086ADF48 .incbin "baserom.gba", 0x6ADF48, 0x42 -gUnknown_086ADF8A:: @ 0x086ADF8A +gCatchHoleXPositions:: @ 0x086ADF8A .incbin "baserom.gba", 0x6ADF8A, 0x6 -gUnknown_086ADF90:: @ 0x086ADF90 +gPikaSaverWaypoints:: @ 0x086ADF90 .incbin "baserom.gba", 0x6ADF90, 0x38 -gUnknown_086ADFC8:: @ 0x086ADFC8 +gArrowBounceOffsets:: @ 0x086ADFC8 .incbin "baserom.gba", 0x6ADFC8, 0xC -gUnknown_086ADFD4:: @ 0x086ADFD4 +gTimerIndicatorFrames:: @ 0x086ADFD4 .incbin "baserom.gba", 0x6ADFD4, 0xE -gUnknown_086ADFE2:: @ 0x086ADFE2 +gPikaSaverFrameData:: @ 0x086ADFE2 .incbin "baserom.gba", 0x6ADFE2, 0xA6 -gUnknown_086AE088:: @ 0x086AE088 +gFlyingCreatureCameraOffsets:: @ 0x086AE088 .incbin "baserom.gba", 0x6AE088, 0x1C -gUnknown_086AE0A4:: @ 0x086AE0A4 +gCyndaquilCavePositions:: @ 0x086AE0A4 .incbin "baserom.gba", 0x6AE0A4, 0x10 -gUnknown_086AE0B4:: @ 0x086AE0B4 +gCyndaquilFrameIndices:: @ 0x086AE0B4 .incbin "baserom.gba", 0x6AE0B4, 0xC -gUnknown_086AE0C0:: @ 0x086AE0C0 +gHatchRevealSparkleTimings:: @ 0x086AE0C0 .incbin "baserom.gba", 0x6AE0C0, 0x10 -gUnknown_086AE0D0:: @ 0x086AE0D0 +gHatchRevealFinalTimings:: @ 0x086AE0D0 .incbin "baserom.gba", 0x6AE0D0, 0x16 -gUnknown_086AE0E6:: @ 0x086AE0E6 +gEvoItemAppearFrameThresholds:: @ 0x086AE0E6 .incbin "baserom.gba", 0x6AE0E6, 0x3E -gUnknown_086AE124:: @ 0x086AE124 +gJirachiWaypoints:: @ 0x086AE124 .incbin "baserom.gba", 0x6AE124, 0x30 -gUnknown_086AE154:: @ 0x086AE154 +gJirachiStarFrameIndices:: @ 0x086AE154 .incbin "baserom.gba", 0x6AE154, 0x50 -gUnknown_086AE1A4:: @ 0x086AE1A4 +gHatchPieceAnimIndices:: @ 0x086AE1A4 .incbin "baserom.gba", 0x6AE1A4, 0x90 -gUnknown_086AE234:: @ 0x086AE234 +gHatchRevealPieceIndices:: @ 0x086AE234 .2byte 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0 .2byte 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1 .2byte 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0 @@ -4181,7 +4181,7 @@ gUnknown_086AE234:: @ 0x086AE234 .2byte 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1 .2byte 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4 -gUnknown_086AE2F4:: @ 0x086AE2F4 +gHatchPieceVelocities:: @ 0x086AE2F4 .2byte -240, -130 .2byte 100, -300 .2byte 240, -100 @@ -4189,28 +4189,28 @@ gUnknown_086AE2F4:: @ 0x086AE2F4 .2byte -280, 90 .2byte 340, 150 -gUnknown_086AE30C:: @ 0x086AE30C +gHatchPieceAffineModes:: @ 0x086AE30C .incbin "baserom.gba", 0x6AE30C, 0xC -gUnknown_086AE318:: @ 0x086AE318 +gHatchPieceMatrixNums:: @ 0x086AE318 .2byte 0x0002, 0x0003, 0x0002, 0x0004, 0x0005, 0x0003 -gUnknown_086AE324:: @ 0x086AE324 +gOneUpSpritePalette:: @ 0x086AE324 .incbin "baserom.gba", 0x6AE324, 0x20 -gUnknown_086AE344:: @ 0x086AE344 +gSapphirePondAnimFramesets:: @ 0x086AE344 .incbin "baserom.gba", 0x6AE344, 0x50 -gUnknown_086AE394:: @ 0x086AE394 +gTravelEventAnimData:: @ 0x086AE394 .incbin "baserom.gba", 0x6AE394, 0x48 -gUnknown_086AE3DC:: @ 0x086AE3DC +gPelipperSwallowAnimData:: @ 0x086AE3DC .incbin "baserom.gba", 0x6AE3DC, 0x7E -gUnknown_086AE45A:: @ 0x086AE45A +gPelipperIdleFrameIndices:: @ 0x086AE45A .incbin "baserom.gba", 0x6AE45A, 0x8 -gUnknown_086AE462:: @ 0x086AE462 +gWailmerAnimFrameMap:: @ 0x086AE462 .2byte 0x0, 0x0 .2byte 0x1, 0x1 .2byte 0x2, 0x2 @@ -4225,28 +4225,28 @@ gUnknown_086AE462:: @ 0x086AE462 .2byte 0xB, 0x4 .2byte 0xC, 0x0 -gUnknown_086AE496:: @ 0x086AE496 +gZigzagoonAnimKeyframes:: @ 0x086AE496 .incbin "baserom.gba", 0x6AE496, 0x66 -gUnknown_086AE4FC:: @ 0x086AE4FC +gSapphireBumperAnimFrames:: @ 0x086AE4FC .incbin "baserom.gba", 0x6AE4FC, 0x48 -gUnknown_086AE544:: @ 0x086AE544 +gSeedotBaseXPositions:: @ 0x086AE544 .incbin "baserom.gba", 0x6AE544, 0x6 -gUnknown_086AE54A:: @ 0x086AE54A +gSeedotBasketBounceFrames:: @ 0x086AE54A .incbin "baserom.gba", 0x6AE54A, 0xA -gUnknown_086AE554:: @ 0x086AE554 +gSplashEffectPositions:: @ 0x086AE554 .incbin "baserom.gba", 0x6AE554, 0x34 -gUnknown_086AE588:: @ 0x086AE588 +gSplashEffectTileIndices:: @ 0x086AE588 .incbin "baserom.gba", 0x6AE588, 0x2 -gUnknown_086AE58A:: @ 0x086AE58A +gSplashEffectFrameDurations:: @ 0x086AE58A .incbin "baserom.gba", 0x6AE58A, 0x16 -gUnknown_086AE5A0:: @ 0x086AE5A0 +gHoleAnimKeyframeData:: @ 0x086AE5A0 .2byte 0x0006, 0x0001; .2byte 0x0007, 0x0003; .2byte 0x0008, 0x000E; @@ -4336,136 +4336,136 @@ DuclopsFramesetData:: @ 0x086AE68E .2byte 0x041A, 0x049C .2byte 0x02EE, 0x049C, 0x01C2 -gUnknown_086AE718:: @ 0x086AE718 +gKecleonAnimFramesetTable:: @ 0x086AE718 .incbin "baserom.gba", 0x6AE718, 0x2AC -gUnknown_086AE9C4:: @ 0x086AE9C4 +gKecleonVisibleWalkDirectionMap:: @ 0x086AE9C4 .incbin "baserom.gba", 0x6AE9C4, 0x10 -gUnknown_086AE9D4:: @ 0x086AE9D4 +gKecleonInvisibleDashDirectionMap:: @ 0x086AE9D4 .incbin "baserom.gba", 0x6AE9D4, 0x10 -gUnknown_086AE9E4:: @ 0x086AE9E4 +gKecleonMovementTargetGraph:: @ 0x086AE9E4 .incbin "baserom.gba", 0x6AE9E4, 0x58 -gUnknown_086AEA3C:: @ 0x086AEA3C +gKecleonScopeFallTargets:: @ 0x086AEA3C .incbin "baserom.gba", 0x6AEA3C, 0x14 -gUnknown_086AEA50:: @ 0x086AEA50 +gKecleonOverlayTilemapPointers:: @ 0x086AEA50 .incbin "baserom.gba", 0x6AEA50, 0x10 -gUnknown_086AEA60:: @ 0x086AEA60 +gKecleonOverlayTileAnimIndices:: @ 0x086AEA60 .incbin "baserom.gba", 0x6AEA60, 0x8 -gUnknown_086AEA68:: @ 0x086AEA68 +gKecleonBerryFlashAnimIndices:: @ 0x086AEA68 .incbin "baserom.gba", 0x6AEA68, 0x8 -gUnknown_086AEA70:: @ 0x086AEA70 +gKecleonSpriteYSortData:: @ 0x086AEA70 .incbin "baserom.gba", 0x6AEA70, 0x70 -gUnknown_086AEAE0:: @ 0x086AEAE0 +gKyogreOceanPaletteProgression:: @ 0x086AEAE0 .incbin "baserom.gba", 0x6AEAE0, 0x18 -gUnknown_086AEAF8:: @ 0x086AEAF8 +gKyogreAnimFramesetTable:: @ 0x086AEAF8 .incbin "baserom.gba", 0x6AEAF8, 0x2AC -gUnknown_086AEDA4:: @ 0x086AEDA4 +gKyogreRisingPaletteCycleIndices:: @ 0x086AEDA4 .incbin "baserom.gba", 0x6AEDA4, 0x28 -gUnknown_086AEDCC:: @ 0x086AEDCC +gKyogreSplashAnimIndices:: @ 0x086AEDCC .incbin "baserom.gba", 0x6AEDCC, 0x1C -gUnknown_086AEDE8:: @ 0x086AEDE8 +gKyogreWhirlpoolTargetPositions:: @ 0x086AEDE8 .incbin "baserom.gba", 0x6AEDE8, 0x38 -gUnknown_086AEE20:: @ 0x086AEE20 +gShockwaveSplashDistanceThresholds:: @ 0x086AEE20 .incbin "baserom.gba", 0x6AEE20, 0x3E -gUnknown_086AEE5E:: @ 0x086AEE5E +gKyogreWhirlpoolTrapAnimFrameset:: @ 0x086AEE5E .incbin "baserom.gba", 0x6AEE5E, 0x78 -gUnknown_086AEED6:: @ 0x086AEED6 +gWaterTilePaletteCycle:: @ 0x086AEED6 .incbin "baserom.gba", 0x6AEED6, 0x8 -gUnknown_086AEEDE:: @ 0x086AEEDE +gKyogreWaterPaletteSegmentCycle:: @ 0x086AEEDE .incbin "baserom.gba", 0x6AEEDE, 0x8 -gUnknown_086AEEE6:: @ 0x086AEEE6 +gKyogreBgTileVariantCycle:: @ 0x086AEEE6 .incbin "baserom.gba", 0x6AEEE6, 0x18 -gUnknown_086AEEFE:: @ 0x086AEEFE +gKyogreBgSpriteBaseTileNums:: @ 0x086AEEFE .incbin "baserom.gba", 0x6AEEFE, 0x6 -gUnknown_086AEF04:: @ 0x086AEF04 +gKyogreIntroPaletteCycleIndices:: @ 0x086AEF04 .incbin "baserom.gba", 0x6AEF04, 0x24 -gUnknown_086AEF28:: @ 0x086AEF28 +gScreenShakeOscillationValues:: @ 0x086AEF28 .incbin "baserom.gba", 0x6AEF28, 0x18 -gUnknown_086AEF40:: @ 0x086AEF40 +gGroudonFootstepShakePatterns:: @ 0x086AEF40 .incbin "baserom.gba", 0x6AEF40, 0x174 -gUnknown_086AF0B4:: @ 0x086AF0B4 +gGroudonCryShakePattern:: @ 0x086AF0B4 .incbin "baserom.gba", 0x6AF0B4, 0x8C -gUnknown_086AF140:: @ 0x086AF140 +gGroudonAnimFramesetTable:: @ 0x086AF140 .incbin "baserom.gba", 0x6AF140, 0x18C -gUnknown_086AF2CC:: @ 0x086AF2CC +gGroudonFirePillarBasePositions:: @ 0x086AF2CC .incbin "baserom.gba", 0x6AF2CC, 0x10 -gUnknown_086AF2DC:: @ 0x086AF2DC +gGroudonFirePillarAnimFrameset:: @ 0x086AF2DC .incbin "baserom.gba", 0x6AF2DC, 0x70 -gUnknown_086AF34C:: @ 0x086AF34C +gGroudonBoulderPositionTable:: @ 0x086AF34C .incbin "baserom.gba", 0x6AF34C, 0x60 -gUnknown_086AF3AC:: @ 0x086AF3AC +gGroudonBoulderBaseSpriteIndices:: @ 0x086AF3AC .incbin "baserom.gba", 0x6AF3AC, 0x6 -gUnknown_086AF3B2:: @ 0x086AF3B2 +gGroudonLavaPaletteAnimIndices:: @ 0x086AF3B2 .incbin "baserom.gba", 0x6AF3B2, 0xC -gUnknown_086AF3BE:: @ 0x086AF3BE +gGroudonBgTileAnimIndices:: @ 0x086AF3BE .incbin "baserom.gba", 0x6AF3BE, 0x8 -gUnknown_086AF3C6:: @ 0x086AF3C6 +gGroudonBgSpriteBaseTileNums:: @ 0x086AF3C6 .incbin "baserom.gba", 0x6AF3C6, 0x6 -gUnknown_086AF3CC:: @ 0x086AF3CC +gRayquazaAnimFramesetTable:: @ 0x086AF3CC .incbin "baserom.gba", 0x6AF3CC, 0x378 -gUnknown_086AF744:: @ 0x086AF744 +gRayquazaMinionOrbitWaypoints:: @ 0x086AF744 .incbin "baserom.gba", 0x6AF744, 0x40 -gUnknown_086AF784:: @ 0x086AF784 +gRayquazaCloudScrollPositions:: @ 0x086AF784 .incbin "baserom.gba", 0x6AF784, 0x33C -gUnknown_086AFAC0:: @ 0x086AFAC0 +gSphealFlightPathData:: @ 0x086AFAC0 .incbin "baserom.gba", 0x6AFAC0, 0x20 -gUnknown_086AFAE0:: @ 0x086AFAE0 +gSphealFramesetToSpriteMap:: @ 0x086AFAE0 .incbin "baserom.gba", 0x6AFAE0, 0x2 -gUnknown_086AFAE2:: @ 0x086AFAE2 +gSphealAnimTimingTable:: @ 0x086AFAE2 .incbin "baserom.gba", 0x6AFAE2, 0x4A -gUnknown_086AFB2C:: @ 0x086AFB2C +gSphealFlyingEnemyFramesetTable:: @ 0x086AFB2C .incbin "baserom.gba", 0x6AFB2C, 0xEA -gUnknown_086AFC16:: @ 0x086AFC16 +gSphealWhiscashAnimFrameset:: @ 0x086AFC16 .incbin "baserom.gba", 0x6AFC16, 0x9A -gUnknown_086AFCB0:: @ 0x086AFCB0 +gBoardCollisionDataSets:: @ 0x086AFCB0 .incbin "baserom.gba", 0x6AFCB0, 0xC0 -gUnknown_086AFD70:: @ 0x086AFD70 +gFieldBoardConfigs:: @ 0x086AFD70 .incbin "baserom.gba", 0x6AFD70, 0x2A0 -gUnknown_086B0010:: @ 0x086B0010 +gScrollTileUpdateTable:: @ 0x086B0010 .incbin "baserom.gba", 0x6B0010, 0x118 -gUnknown_086B0128:: @ 0x086B0128 +gBonusSummaryTextTemplates:: @ 0x086B0128 .ascii "POK^MON_CAUGHT______BONUS_______________" gUnknown_086B0150:: @ 0x086B0150 @@ -4507,141 +4507,141 @@ BoardProcPairs_086B077C:: @ 0x086B077C .4byte SphealBoardProcess_0A_51150, SphealBoardProcess_0B_511F8 .4byte nullsub_19, nullsub_19 -gUnknown_086B085C:: @ 0x086B085C - .4byte sub_4ABEC - .4byte sub_4AE8C +gFieldInitFuncs:: @ 0x086B085C + .4byte MainGameFrameUpdate + .4byte BonusFieldFrameUpdate gUnknown_086B0864:: @ 0x086B0664 .incbin "baserom.gba", 0x6B0864, 0x20 -gUnknown_086B0884:: @ 0x086B0884 +gTimerWarningPalette_Fast:: @ 0x086B0884 .incbin "baserom.gba", 0x6B0884, 0x20 -gUnknown_086B08A4:: @ 0x086B08A4 +gTimerWarningPalette_Slow:: @ 0x086B08A4 .incbin "baserom.gba", 0x6B08A4, 0x20 -gUnknown_086B08C4:: @ 0x086B08C4 +gCoinRewardLevelTimerThresholds:: @ 0x086B08C4 .incbin "baserom.gba", 0x6B08C4, 0x6 -gUnknown_086B08CA:: @ 0x086B08CA +gRubySlingshotAnimIndices:: @ 0x086B08CA .incbin "baserom.gba", 0x6B08CA, 0xA -gUnknown_086B08D4:: @ 0x086B08D4 +gRubySlingshotTilePointers:: @ 0x086B08D4 .incbin "baserom.gba", 0x6B08D4, 0x78 -gUnknown_086B094C:: @ 0x086B094C +gShopItemTilePointers:: @ 0x086B094C .incbin "baserom.gba", 0x6B094C, 0x24 -gUnknown_086B0970:: @ 0x086B0970 +gRubyProgressDigitTilePointers:: @ 0x086B0970 .incbin "baserom.gba", 0x6B0970, 0x58 -gUnknown_086B09C8:: @ 0x086B09C8 +gRubyTrapIndicatorTilePointers:: @ 0x086B09C8 .incbin "baserom.gba", 0x6B09C8, 0x20 -gUnknown_086B09E8:: @ 0x086B09E8 +gRubyCatchLightTilePointers:: @ 0x086B09E8 .incbin "baserom.gba", 0x6B09E8, 0xA8 -gUnknown_086B0A90:: @ 0x086B0A90 +gRubyModeTimerTilePointers:: @ 0x086B0A90 .incbin "baserom.gba", 0x6B0A90, 0x30 -gUnknown_086B0AC0:: @ 0x086B0AC0 +gRubyCatchArrowTilePointers:: @ 0x086B0AC0 .incbin "baserom.gba", 0x6B0AC0, 0x30 -gUnknown_086B0AF0:: @ 0x086B0AF0 +gRubyEvoArrowTilePointers:: @ 0x086B0AF0 .incbin "baserom.gba", 0x6B0AF0, 0x30 -gUnknown_086B0B20:: @ 0x086B0B20 +gRubyRouletteSlotTilePointers:: @ 0x086B0B20 .incbin "baserom.gba", 0x6B0B20, 0x50 -gUnknown_086B0B70:: @ 0x086B0B70 +gRubyBallPowerUpLightTilePointers:: @ 0x086B0B70 .incbin "baserom.gba", 0x6B0B70, 0x24 -gUnknown_086B0B94:: @ 0x086B0B94 +gRubyCatchProgressArrowTilePointers:: @ 0x086B0B94 .incbin "baserom.gba", 0x6B0B94, 0x30 -gUnknown_086B0BC4:: @ 0x086B0BC4 +gRubyHoleIndicatorTilePointers:: @ 0x086B0BC4 .incbin "baserom.gba", 0x6B0BC4, 0x40 -gUnknown_086B0C04:: @ 0x086B0C04 +gSapphireEvoArrowTilePtrs:: @ 0x086B0C04 .incbin "baserom.gba", 0x6B0C04, 0xB4 -gUnknown_086B0CB8:: @ 0x086B0CB8 +gSapphireCoinRewardTilePtrs:: @ 0x086B0CB8 .incbin "baserom.gba", 0x6B0CB8, 0xB4 -gUnknown_086B0D6C:: @ 0x086B0D6C +gSapphireCatchArrowTilePtrs:: @ 0x086B0D6C .incbin "baserom.gba", 0x6B0D6C, 0xB4 -gUnknown_086B0E20:: @ 0x086B0E20 +gBallShadowTileIndices:: @ 0x086B0E20 .incbin "baserom.gba", 0x6B0E20, 0x40 -gUnknown_086B0E60:: @ 0x086B0E60 +gSlingshotHitFrameIndices:: @ 0x086B0E60 .incbin "baserom.gba", 0x6B0E60, 0xC -gUnknown_086B0E6C:: @ 0x086B0E6C +gBumperHitCounterTilePtrs:: @ 0x086B0E6C .incbin "baserom.gba", 0x6B0E6C, 0x30 -gUnknown_086B0E9C:: @ 0x086B0E9C +gSapphireProgressDigitTilePtrs:: @ 0x086B0E9C .incbin "baserom.gba", 0x6B0E9C, 0xB0 -gUnknown_086B0F4C:: @ 0x086B0F4C +gRotatingBackgroundTilePtrs:: @ 0x086B0F4C .incbin "baserom.gba", 0x6B0F4C, 0x50 -gUnknown_086B0F9C:: @ 0x086B0F9C +gBonusModeIndicatorTilePtrs:: @ 0x086B0F9C .incbin "baserom.gba", 0x6B0F9C, 0x10 gUnknown_086B0FAC:: @ 0x086B0FAC .incbin "baserom.gba", 0x6B0FAC, 0xE0 -gUnknown_086B108C:: @ 0x086B108C +gSapphireSlingshotTilePtrs:: @ 0x086B108C .incbin "baserom.gba", 0x6B108C, 0x78 -gUnknown_086B1104:: @ 0x086B1104 +gSapphireTrapIndicatorTilePtrs:: @ 0x086B1104 .incbin "baserom.gba", 0x6B1104, 0x20 -gUnknown_086B1124:: @ 0x086B1124 +gSapphireCatchLightTilePtrs:: @ 0x086B1124 .incbin "baserom.gba", 0x6B1124, 0xA8 -gUnknown_086B11CC:: @ 0x086B11CC +gSapphireModeTimerDisplayTilePtrs:: @ 0x086B11CC .incbin "baserom.gba", 0x6B11CC, 0x30 -gUnknown_086B11FC:: @ 0x086B11FC +gSapphireCatchArrowPaletteTilePtrs:: @ 0x086B11FC .incbin "baserom.gba", 0x6B11FC, 0x30 -gUnknown_086B122C:: @ 0x086B122C +gSapphireEvoArrowPaletteTilePtrs:: @ 0x086B122C .incbin "baserom.gba", 0x6B122C, 0x30 -gUnknown_086B125C:: @ 0x086B125C +gSapphireRouletteSlotTilePtrs:: @ 0x086B125C .incbin "baserom.gba", 0x6B125C, 0x50 -gUnknown_086B12AC:: @ 0x086B12AC +gSapphireBallPowerUpLightTilePtrs:: @ 0x086B12AC .incbin "baserom.gba", 0x6B12AC, 0x24 -gUnknown_086B12D0:: @ 0x086B12D0 +gSapphireCatchFlashTilePtrs:: @ 0x086B12D0 .incbin "baserom.gba", 0x6B12D0, 0x30 -gUnknown_086B1300:: @ 0x086B1300 +gSapphireHoleIndicatorTilePtrs:: @ 0x086B1300 .incbin "baserom.gba", 0x6B1300, 0x40 -gUnknown_086B1340:: @ 0x086B1340 +gSapphireEvoArrowBonusTilePtrs:: @ 0x086B1340 .incbin "baserom.gba", 0x6B1340, 0xB4 -gUnknown_086B13F4:: @ 0x086B13F4 +gSapphireCoinRewardAltTilePtrs:: @ 0x086B13F4 .incbin "baserom.gba", 0x6B13F4, 0x78 gUnknown_086B146C:: @ 0x086B146C .incbin "baserom.gba", 0x6B146C, 0x3C -gUnknown_086B14A8:: @ 0x086B14A8 +gSapphireCatchArrowBonusTilePtrs:: @ 0x086B14A8 .incbin "baserom.gba", 0x6B14A8, 0xB4 -gUnknown_086B155C:: @ 0x086B155C +gFieldSpriteSets:: @ 0x086B155C .4byte gUnknown_086B2390 .2byte 0x54, 0 .4byte gUnknown_086B24E0 .2byte 0x57, 0 .4byte gUnknown_086BB3E4 .2byte 0xF, 0 - .4byte gUnknown_086BB420 + .4byte gKecleonDefaultSpriteSets .2byte 0x21, 0 .4byte gUnknown_086BB4A4 .2byte 0x1B, 0 @@ -4660,7 +4660,7 @@ gMonHatchSpriteGroupPals:: @ 0x086B159C .4byte gMonHatchSpriteGroup4_Pals .4byte gMonHatchSpriteGroup5_Pals -gUnknown_086B15B4:: @ 0x086B15B4 +gMonIconPalettes:: @ 0x086B15B4 .incbin "baserom.gba", 0x6B15B4, 0x44 gUnknown_086B15F8:: @ 0x086B15F8 @@ -5969,7 +5969,7 @@ gUnknown_086B24E0:: @ 0x086B24E0 .4byte gUnknown_086B1A98 -gUnknown_086B263C:: @ 0x086B263C +gSapphireFloatOamFramesets:: @ 0x086B263C packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_8x8, tileNum=0x291, priority=0x1, paletteNum=0xd packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_8x8, tileNum=0x291, priority=0x1, paletteNum=0xd packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_8x8, tileNum=0x291, priority=0x1, paletteNum=0xd @@ -6074,7 +6074,7 @@ gUnknown_086B263C:: @ 0x086B263C packed_sprite_oam x=0xD, y=0x1B, spriteSize=SPRITE_SIZE_8x8, tileNum=0x291, priority=0x1, paletteNum=0xd -gUnknown_086B28A0:: @ 0x086B28A0 +gPokemonFloatOamFramesets:: @ 0x086B28A0 packed_sprite_oam x=-0xC, y=-0x2A, spriteSize=SPRITE_SIZE_32x16, tileNum=0x2c0, paletteNum=0xe packed_sprite_oam x=-0xC, y=-0x1A, spriteSize=SPRITE_SIZE_32x8, tileNum=0x2c8, paletteNum=0xe packed_sprite_oam x=-0xC, y=-0x2A, spriteSize=SPRITE_SIZE_32x16, tileNum=0x2c0, paletteNum=0xe @@ -6323,7 +6323,7 @@ gUnknown_086B28A0:: @ 0x086B28A0 packed_sprite_oam x=0x0, y=0x10, spriteSize=SPRITE_SIZE_16x8, tileNum=0x322, paletteNum=0xb -gUnknown_086B2E64:: @ 0x086B2E64 +gNuzleafOamData:: @ 0x086B2E64 packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_32x32, tileNum=0x21c, priority=0x2, paletteNum=0x4 packed_sprite_oam x=0x0, y=0x20, spriteSize=SPRITE_SIZE_32x8, tileNum=0x22c, priority=0x2, paletteNum=0x4 packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_32x32, tileNum=0x21c, priority=0x2, paletteNum=0x4 @@ -6384,7 +6384,7 @@ gUnknown_086B2E64:: @ 0x086B2E64 packed_sprite_oam x=0x38, y=0x10, spriteSize=SPRITE_SIZE_8x32, tileNum=0x22c, priority=0x2, paletteNum=0x4 -gUnknown_086B2FC0:: @ 0x086B2FC0 +gGulpinOamData:: @ 0x086B2FC0 packed_sprite_oam x=-0x20, y=-0x9, spriteSize=SPRITE_SIZE_32x16, tileNum=0x1c4, priority=0x1, paletteNum=0x7 packed_sprite_oam x=-0x20, y=0x7, spriteSize=SPRITE_SIZE_32x8, tileNum=0x1cc, priority=0x1, paletteNum=0x7 packed_sprite_oam x=-0x21, y=-0xB, spriteSize=SPRITE_SIZE_32x16, tileNum=0x1d0, priority=0x1, paletteNum=0x7 @@ -6891,7 +6891,7 @@ gSharpedoSpritesheetOam:: @ 0x086B3A04 packed_sprite_oam x=0x1E, y=0x18, spriteSize=SPRITE_SIZE_8x8, tileNum=0x173, priority=0x1, paletteNum=0x6 -gUnknown_086B3B7E:: @ 0x086B3B7E +gZigzagoonFxSpritesheetOam:: @ 0x086B3B7E packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_8x8, tileNum=0x31a, priority=0x1, paletteNum=0x6 packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_8x8, tileNum=0x31a, priority=0x1, paletteNum=0x6 packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_8x8, tileNum=0x31a, priority=0x1, paletteNum=0x6 @@ -7048,7 +7048,7 @@ gSapphireBoardSeedotSpritesheetOam:: @ 0x086B3E1E packed_sprite_oam x=-0x20, y=-0x18, spriteSize=SPRITE_SIZE_8x32, tileNum=0x201, priority=0x1, paletteNum=0x7 -gUnknown_086B3EF6:: @ 0x086B3EF6 +gPelipperPondSpritesheetOam:: @ 0x086B3EF6 packed_sprite_oam x=0x0, y=0x0, mosaic=0x1, spriteSize=SPRITE_SIZE_32x32, tileNum=0x115, priority=0x1, paletteNum=0x4 packed_sprite_oam x=0x20, y=0x0, mosaic=0x1, spriteSize=SPRITE_SIZE_16x32, tileNum=0x125, priority=0x1, paletteNum=0x4 packed_sprite_oam x=0x0, y=0x20, mosaic=0x1, spriteSize=SPRITE_SIZE_32x16, tileNum=0x12d, priority=0x1, paletteNum=0x4 @@ -7091,7 +7091,7 @@ gUnknown_086B3EF6:: @ 0x086B3EF6 packed_sprite_oam x=0x0, y=0x20, mosaic=0x1, spriteSize=SPRITE_SIZE_16x16, hFlip=0x1, tileNum=0x135, priority=0x1, paletteNum=0x4 -gUnknown_086B3FE6:: @ 0x086B3FE6 +gTravelEventSpritesheetOam:: @ 0x086B3FE6 packed_sprite_oam x=0x0, y=-0x8, spriteSize=SPRITE_SIZE_32x32, tileNum=0x2c0, paletteNum=0xe packed_sprite_oam x=0x20, y=-0x8, spriteSize=SPRITE_SIZE_16x32, tileNum=0x2d0, paletteNum=0xe packed_sprite_oam x=0x0, y=0x18, spriteSize=SPRITE_SIZE_32x16, tileNum=0x2d8, paletteNum=0xe @@ -7145,7 +7145,7 @@ gUnknown_086B3FE6:: @ 0x086B3FE6 -gUnknown_086B4112:: @ 0x086B4112 +gEvolutionSparkleSpritesheetOam:: @ 0x086B4112 packed_sprite_oam x=-0x38, y=0x0, spriteSize=SPRITE_SIZE_16x32, tileNum=0x386, paletteNum=0xe packed_sprite_oam x=-0x38, y=0x0, spriteSize=SPRITE_SIZE_16x32, tileNum=0x386, paletteNum=0xe packed_sprite_oam x=-0x38, y=0x0, spriteSize=SPRITE_SIZE_16x32, tileNum=0x386, paletteNum=0xe @@ -7188,7 +7188,7 @@ gUnknown_086B4112:: @ 0x086B4112 packed_sprite_oam x=0x20, y=0x18, spriteSize=SPRITE_SIZE_16x16, tileNum=0x3b2, paletteNum=0xe -gUnknown_086B4202:: @ 0x086B4202 +gEvoItemAnimOamFramesets:: @ 0x086B4202 packed_sprite_oam x=-0x10, y=-0x10, spriteSize=SPRITE_SIZE_32x16, tileNum=0x2c0, paletteNum=0xf packed_sprite_oam x=-0x10, y=0x0, spriteSize=SPRITE_SIZE_32x16, hFlip=0x1, vFlip=0x1, tileNum=0x2c0, paletteNum=0xf packed_sprite_oam x=-0x10, y=-0x10, spriteSize=SPRITE_SIZE_32x16, tileNum=0x2c0, paletteNum=0xf @@ -7336,7 +7336,7 @@ gUnknown_086B4202:: @ 0x086B4202 packed_sprite_oam x=-0x8, y=-0x10, spriteSize=SPRITE_SIZE_16x16, tileNum=0x364, paletteNum=0xf -gUnknown_086B4568:: @ 0x086B4568 +gModeBannerOamAttributes:: @ 0x086B4568 packed_sprite_oam x=-0x7F, y=0x0, spriteSize=SPRITE_SIZE_64x64, tileNum=0x2c0, paletteNum=0xe packed_sprite_oam x=-0x3F, y=0x0, spriteSize=SPRITE_SIZE_64x64, tileNum=0x300, paletteNum=0xe packed_sprite_oam x=0x1, y=0x0, spriteSize=SPRITE_SIZE_64x64, tileNum=0x340, paletteNum=0xe @@ -7444,7 +7444,7 @@ gUnknown_086B4568:: @ 0x086B4568 packed_sprite_oam x=0x61, y=0x40, spriteSize=SPRITE_SIZE_16x8, tileNum=0x3cc, paletteNum=0xe -gUnknown_086B47DE:: @ 0x086B47DE +gShopNumberOamFramesets:: @ 0x086B47DE packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_8x32, tileNum=0x2f5, paletteNum=0xe packed_sprite_oam x=0x8, y=0x0, spriteSize=SPRITE_SIZE_32x32, tileNum=0x2f9, paletteNum=0xe packed_sprite_oam x=0x48, y=0x0, spriteSize=SPRITE_SIZE_8x32, hFlip=0x1, tileNum=0x2f5, paletteNum=0xe @@ -7457,7 +7457,7 @@ gUnknown_086B47DE:: @ 0x086B47DE packed_sprite_oam x=0x68, y=0x0, spriteSize=SPRITE_SIZE_16x32, tileNum=0x309, paletteNum=0xe -gUnknown_086B481A:: @ 0x086B481A +gShopOamAttributes:: @ 0x086B481A packed_sprite_oam x=-0x10, y=0x0, spriteSize=SPRITE_SIZE_16x16, tileNum=0xdb, paletteNum=0x3 packed_sprite_oam x=-0x10, y=0x4, spriteSize=SPRITE_SIZE_16x16, tileNum=0xdf, paletteNum=0x3 packed_sprite_oam x=-0x10, y=-0x8, spriteSize=SPRITE_SIZE_16x16, tileNum=0xe3, paletteNum=0x3 @@ -7469,7 +7469,7 @@ gUnknown_086B481A:: @ 0x086B481A packed_sprite_oam x=-0x10, y=-0x19, spriteSize=SPRITE_SIZE_16x16, tileNum=0xdb, paletteNum=0x3 -gUnknown_086B4850:: @ 0x086B4850 +gEggFloatOamFramesets:: @ 0x086B4850 packed_sprite_oam x=0x3, y=0xA, spriteSize=SPRITE_SIZE_32x32, tileNum=0x2c0, paletteNum=0xe packed_sprite_oam x=0x3, y=0x2A, spriteSize=SPRITE_SIZE_16x8, tileNum=0x2d0, paletteNum=0xe packed_sprite_oam x=0x23, y=0x2, spriteSize=SPRITE_SIZE_16x32, tileNum=0x2d2, paletteNum=0xe @@ -7507,7 +7507,7 @@ gUnknown_086B4850:: @ 0x086B4850 packed_sprite_oam x=0x4, y=0x27, spriteSize=SPRITE_SIZE_16x8, tileNum=0x2f8, paletteNum=0xe -gUnknown_086B4922:: @ 0x086B4922 +gCatchOverlayOamData:: @ 0x086B4922 packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_32x16, tileNum=0x2c0, priority=0x2, paletteNum=0x3 packed_sprite_oam x=0x8, y=0x10, spriteSize=SPRITE_SIZE_16x8, tileNum=0x2c8, priority=0x2, paletteNum=0x3 packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_32x16, tileNum=0x2c0, priority=0x2, paletteNum=0x3 @@ -7595,7 +7595,7 @@ gWailmerSpritesheetOam:: @ 0x086B4A72 packed_sprite_oam x=0x20, y=0x0, mosaic=0x1, spriteSize=SPRITE_SIZE_16x32, tileNum=0x149, priority=0x3, paletteNum=0x2 -gUnknown_086B4B0E:: @ 0x086B4B0E +gCatchCreatureOamFramesets:: @ 0x086B4B0E packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_16x16, tileNum=0x95, priority=0x1, paletteNum=0xd packed_sprite_oam x=0x10, y=0x0, spriteSize=SPRITE_SIZE_8x16, tileNum=0x99, priority=0x1, paletteNum=0xd packed_sprite_oam x=0x0, y=0x10, spriteSize=SPRITE_SIZE_16x8, tileNum=0x9b, priority=0x1, paletteNum=0xd @@ -7694,7 +7694,7 @@ gUnknown_086B4B0E:: @ 0x086B4B0E packed_sprite_oam x=0x10, y=0xC, spriteSize=SPRITE_SIZE_8x8, tileNum=0x9d, priority=0x1, paletteNum=0xd -gUnknown_086B4D4E:: @ 0x086B4D4E +gHatchCaveOamFramesets:: @ 0x086B4D4E packed_sprite_oam x=-0x10, y=-0x28, spriteSize=SPRITE_SIZE_32x32, tileNum=0xe7, priority=0x1, paletteNum=0xb packed_sprite_oam x=-0x10, y=-0x28, spriteSize=SPRITE_SIZE_32x32, tileNum=0xe7, priority=0x1, paletteNum=0xb packed_sprite_oam x=-0x10, y=-0x28, spriteSize=SPRITE_SIZE_32x32, tileNum=0xe7, priority=0x1, paletteNum=0xb @@ -7737,13 +7737,13 @@ gUnknown_086B4D4E:: @ 0x086B4D4E packed_sprite_oam x=0x2, y=-0x20, spriteSize=SPRITE_SIZE_32x16, tileNum=0xef, priority=0x1, paletteNum=0xb -gUnknown_086B4E3E:: @ 0x086B4E3E +gHatchParticleOamAttributes:: @ 0x086B4E3E .incbin "baserom.gba", 0x6B4E3E, 0x4 gUnknown_086B4E42:: @ 0x086B4E42 .incbin "baserom.gba", 0x6B4E42, 0x20 -gUnknown_086B4E62:: @ 0x086B4E62 +gHatchSequentialOamFramesets:: @ 0x086B4E62 packed_sprite_oam x=0x18, y=0x18, spriteSize=SPRITE_SIZE_16x16, tileNum=0x2c8, paletteNum=0xe packed_sprite_oam x=0x28, y=0x8, spriteSize=SPRITE_SIZE_16x32, tileNum=0x2c0, paletteNum=0xe packed_sprite_oam x=0x18, y=0x18, spriteSize=SPRITE_SIZE_16x16, tileNum=0x2c8, paletteNum=0xe @@ -7790,7 +7790,7 @@ gUnknown_086B4E62:: @ 0x086B4E62 packed_sprite_oam x=-0xE, y=-0x8, spriteSize=SPRITE_SIZE_16x32, tileNum=0x356, paletteNum=0xe -gUnknown_086B4F6A:: @ 0x086B4F6A +gHatchFullRevealOamFramesets:: @ 0x086B4F6A packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_16x16, tileNum=0x2c4, paletteNum=0xe packed_sprite_oam x=0x10, y=0x0, spriteSize=SPRITE_SIZE_16x16, tileNum=0x2c0, paletteNum=0xe packed_sprite_oam x=0x20, y=0x0, spriteSize=SPRITE_SIZE_16x16, tileNum=0x2c0, paletteNum=0xe @@ -7847,7 +7847,7 @@ gUnknown_086B4F6A:: @ 0x086B4F6A packed_sprite_oam x=0x0, y=0x10, spriteSize=SPRITE_SIZE_16x16, tileNum=0x2c0, paletteNum=0xe -gUnknown_086B50AE:: @ 0x086B50AE +gHatchRevealOamFramesets:: @ 0x086B50AE packed_sprite_oam x=0x0, y=-0x10, spriteSize=SPRITE_SIZE_16x32, tileNum=0x2c0, paletteNum=0xe packed_sprite_oam x=0x0, y=-0x10, spriteSize=SPRITE_SIZE_16x32, tileNum=0x2c0, paletteNum=0xe packed_sprite_oam x=0x0, y=-0x10, spriteSize=SPRITE_SIZE_16x32, tileNum=0x2c0, paletteNum=0xe @@ -7898,7 +7898,7 @@ gUnknown_086B50AE:: @ 0x086B50AE packed_sprite_oam x=0x8, y=0x38, spriteSize=SPRITE_SIZE_8x16, tileNum=0x3ae, paletteNum=0xe -gUnknown_086B51CE:: @ 0x086B51CE +gAreaRouletteOamFramesets:: @ 0x086B51CE packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_16x16, tileNum=0x2c0, paletteNum=0xe packed_sprite_oam x=0x10, y=0x0, spriteSize=SPRITE_SIZE_16x16, tileNum=0x2c0, paletteNum=0xe packed_sprite_oam x=0x0, y=0x10, spriteSize=SPRITE_SIZE_16x16, tileNum=0x2c0, paletteNum=0xe @@ -7982,7 +7982,7 @@ gUnknown_086B51CE:: @ 0x086B51CE packed_sprite_oam x=-0x13, y=0xC, spriteSize=SPRITE_SIZE_16x16, vFlip=0x1, tileNum=0x2c8, paletteNum=0xe -gUnknown_086B53B4:: @ 0x086B53B4 +gHatchAnimOamAttributes:: @ 0x086B53B4 .incbin "baserom.gba", 0x6B53B4, 0x4 gUnknown_086B53B8:: @ 0x086B53B8 @@ -8075,7 +8075,7 @@ gHatchSequentialTileBreakSpritesheetOam:: @ 0x086B53E4 packed_sprite_oam x=0x8, y=0x5, spriteSize=SPRITE_SIZE_32x32, hFlip=0x1, vFlip=0x1, tileNum=0x3a1, paletteNum=0xe -gUnknown_086B55DC:: @ 0x086B55DC +gSapphireHatchOamFramesets:: @ 0x086B55DC packed_sprite_oam x=0x10, y=0x8, spriteSize=SPRITE_SIZE_16x16, tileNum=0x2c0, paletteNum=0xe packed_sprite_oam x=0x10, y=0x8, spriteSize=SPRITE_SIZE_16x16, tileNum=0x2c0, paletteNum=0xe packed_sprite_oam x=0x10, y=0x8, spriteSize=SPRITE_SIZE_16x16, tileNum=0x2c0, paletteNum=0xe @@ -8120,7 +8120,7 @@ gUnknown_086B55DC:: @ 0x086B55DC packed_sprite_oam x=0x24, y=0x1C, spriteSize=SPRITE_SIZE_8x8, tileNum=0x358, paletteNum=0xe -gUnknown_086B56D8:: @ 0x086B56D8 +gSphealFlyingEnemyOamData:: @ 0x086B56D8 packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_16x16, tileNum=0xe5, priority=0x1, paletteNum=0x4 packed_sprite_oam x=0x10, y=0x0, spriteSize=SPRITE_SIZE_8x16, tileNum=0xe9, priority=0x1, paletteNum=0x4 packed_sprite_oam x=0x0, y=0x10, spriteSize=SPRITE_SIZE_16x8, tileNum=0xeb, priority=0x1, paletteNum=0x4 @@ -8375,7 +8375,7 @@ gUnknown_086B56D8:: @ 0x086B56D8 packed_sprite_oam x=0x10, y=0x10, spriteSize=SPRITE_SIZE_8x8, tileNum=0xed, priority=0x1, paletteNum=0x4 -gUnknown_086B5CC0:: @ 0x086B5CC0 +gRayquazaHitBurstOamData:: @ 0x086B5CC0 packed_sprite_oam x=0x0, y=-0x8, spriteSize=SPRITE_SIZE_32x32, tileNum=0x121, priority=0x1, paletteNum=0xc packed_sprite_oam x=0x0, y=0x18, spriteSize=SPRITE_SIZE_32x16, tileNum=0x131, priority=0x1, paletteNum=0xc packed_sprite_oam x=0x0, y=-0x8, spriteSize=SPRITE_SIZE_32x32, tileNum=0x121, priority=0x1, paletteNum=0xc @@ -8403,7 +8403,7 @@ gUnknown_086B5CC0:: @ 0x086B5CC0 packed_sprite_oam x=0x0, y=-0x10, spriteSize=SPRITE_SIZE_32x16, tileNum=0x15d, priority=0x1, paletteNum=0xc -gUnknown_086B5D56:: @ 0x086B5D56 +gRayquazaWhirlwindGrabOamData:: @ 0x086B5D56 packed_sprite_oam x=-0x2, y=0x8, spriteSize=SPRITE_SIZE_16x8, tileNum=0x254, priority=0x1, paletteNum=0xc packed_sprite_oam x=0xE, y=0x0, spriteSize=SPRITE_SIZE_8x16, tileNum=0x256, priority=0x1, paletteNum=0xc packed_sprite_oam x=-0x4, y=0x5, spriteSize=SPRITE_SIZE_16x8, tileNum=0x258, priority=0x1, paletteNum=0xc @@ -8426,7 +8426,7 @@ gUnknown_086B5D56:: @ 0x086B5D56 packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_8x8, tileNum=0x18c, priority=0x1, paletteNum=0xc -gUnknown_086B5DCE:: @ 0x086B5DCE +gRayquazaSwoopAttackOamData:: @ 0x086B5DCE packed_sprite_oam x=-0x18, y=-0x60, spriteSize=SPRITE_SIZE_16x32, tileNum=0x208, priority=0x1, paletteNum=0xc packed_sprite_oam x=-0x8, y=-0x50, spriteSize=SPRITE_SIZE_8x16, tileNum=0x210, priority=0x1, paletteNum=0xc packed_sprite_oam x=-0x10, y=-0x40, spriteSize=SPRITE_SIZE_16x32, tileNum=0x212, priority=0x1, paletteNum=0xc @@ -8471,7 +8471,7 @@ gUnknown_086B5DCE:: @ 0x086B5DCE packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_8x8, tileNum=0x18c, priority=0x1, paletteNum=0xc -gUnknown_086B5ECA:: @ 0x086B5ECA +gRayquazaNeckSegmentOamData:: @ 0x086B5ECA packed_sprite_oam x=-0x3, y=-0x3D, spriteSize=SPRITE_SIZE_8x32, tileNum=0x1da, priority=0x1, paletteNum=0xc packed_sprite_oam x=-0x2, y=-0x1D, spriteSize=SPRITE_SIZE_8x16, tileNum=0x1de, priority=0x1, paletteNum=0xc packed_sprite_oam x=0x5, y=-0xD, spriteSize=SPRITE_SIZE_8x32, tileNum=0x1e0, priority=0x1, paletteNum=0xc @@ -8552,7 +8552,7 @@ gUnknown_086B5ECA:: @ 0x086B5ECA packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_8x8, tileNum=0x18c, priority=0x1, paletteNum=0xc -gUnknown_086B609E:: @ 0x086B609E +gRayquazaHeadOamData:: @ 0x086B609E packed_sprite_oam x=0x0, y=0x2B, spriteSize=SPRITE_SIZE_32x16, tileNum=0x18a, priority=0x1, paletteNum=0xc packed_sprite_oam x=0x20, y=0x28, spriteSize=SPRITE_SIZE_32x16, tileNum=0x192, priority=0x1, paletteNum=0xc packed_sprite_oam x=0x20, y=0x28, spriteSize=SPRITE_SIZE_32x16, tileNum=0x192, priority=0x1, paletteNum=0xc @@ -8579,7 +8579,7 @@ gUnknown_086B609E:: @ 0x086B609E packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_8x8, tileNum=0x18c, priority=0x1, paletteNum=0xc -gUnknown_086B612E:: @ 0x086B612E +gRayquazaMainBodyOamData:: @ 0x086B612E packed_sprite_oam x=0x0, y=-0x2, spriteSize=SPRITE_SIZE_64x64, tileNum=0xb1, priority=0x1, paletteNum=0xf packed_sprite_oam x=0x0, y=-0x1, spriteSize=SPRITE_SIZE_64x64, tileNum=0xb1, priority=0x1, paletteNum=0xf packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_64x64, tileNum=0xb1, priority=0x1, paletteNum=0xf @@ -8688,7 +8688,7 @@ gUnknown_086B612E:: @ 0x086B612E packed_sprite_oam x=0x0, y=0x9, spriteSize=SPRITE_SIZE_64x64, tileNum=0xb1, priority=0x1, paletteNum=0x7 -gUnknown_086B63AA:: @ 0x086B63AA +gGroudonBallGrabOamData:: @ 0x086B63AA packed_sprite_oam x=-0x7, y=-0x2, spriteSize=SPRITE_SIZE_32x16, tileNum=0x364, paletteNum=0xc packed_sprite_oam x=-0x7, y=0xE, spriteSize=SPRITE_SIZE_32x8, tileNum=0x36c, paletteNum=0xc packed_sprite_oam x=-0x8, y=-0x8, spriteSize=SPRITE_SIZE_32x32, tileNum=0x370, paletteNum=0xc @@ -8703,7 +8703,7 @@ gUnknown_086B63AA:: @ 0x086B63AA packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_8x8, tileNum=0x3bf, paletteNum=0xc -gUnknown_086B63F2:: @ 0x086B63F2 +gGroudonProjectileOamData:: @ 0x086B63F2 packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_16x32, tileNum=0x2f4, paletteNum=0xc packed_sprite_oam x=0x10, y=0x0, spriteSize=SPRITE_SIZE_8x32, tileNum=0x2fc, paletteNum=0xc packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_16x32, tileNum=0x2f4, paletteNum=0xc @@ -8754,7 +8754,7 @@ gUnknown_086B63F2:: @ 0x086B63F2 packed_sprite_oam x=-0xE, y=-0x1, spriteSize=SPRITE_SIZE_16x32, hFlip=0x1, tileNum=0x35c, paletteNum=0xc -gUnknown_086B6512:: @ 0x086B6512 +gGroudonProjectileAttackOamData:: @ 0x086B6512 packed_sprite_oam x=-0x4, y=0x1D, spriteSize=SPRITE_SIZE_16x16, tileNum=0x2c0, paletteNum=0xc packed_sprite_oam x=0xC, y=0x1D, spriteSize=SPRITE_SIZE_8x16, tileNum=0x2c4, paletteNum=0xc packed_sprite_oam x=0x1C, y=0x1D, spriteSize=SPRITE_SIZE_16x16, hFlip=0x1, tileNum=0x2c0, paletteNum=0xc @@ -8793,7 +8793,7 @@ gUnknown_086B6512:: @ 0x086B6512 packed_sprite_oam x=0x1, y=0x23, spriteSize=SPRITE_SIZE_16x16, hFlip=0x1, tileNum=0x2ee, paletteNum=0xc -gUnknown_086B65EA:: @ 0x086B65EA +gGroudonMainBodyOamData:: @ 0x086B65EA packed_sprite_oam x=0x1, y=0x11, spriteSize=SPRITE_SIZE_16x8, tileNum=0x1d1, priority=0x1, paletteNum=0xf packed_sprite_oam x=0x1, y=0x19, spriteSize=SPRITE_SIZE_16x16, tileNum=0x1d3, priority=0x1, paletteNum=0xf packed_sprite_oam x=0x17, y=0x11, spriteSize=SPRITE_SIZE_16x8, hFlip=0x1, tileNum=0x1d1, priority=0x1, paletteNum=0xf @@ -10373,7 +10373,7 @@ gUnknown_086B65EA:: @ 0x086B65EA packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_8x8, tileNum=0x19c, priority=0x1, paletteNum=0x4 -gUnknown_086B8AE0:: @ 0x086B8AE0 +gGroudonFirePillarOamData:: @ 0x086B8AE0 packed_sprite_oam x=0x0, y=0x32, spriteSize=SPRITE_SIZE_32x16, tileNum=0x16d, priority=0x1, paletteNum=0x5 packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_8x8, tileNum=0x19c, priority=0x1, paletteNum=0x4 packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_8x8, tileNum=0x19c, priority=0x1, paletteNum=0x4 @@ -10665,7 +10665,7 @@ gUnknown_086B8AE0:: @ 0x086B8AE0 packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_8x8, tileNum=0x19c, priority=0x1, paletteNum=0x4 packed_sprite_oam x=0x0, y=0x0, spriteSize=SPRITE_SIZE_8x8, tileNum=0x19c, priority=0x1, paletteNum=0x4 -gUnknown_086B91AC:: @ 0x086B91AC +gKyogreWhirlpoolTrapOamData:: @ 0x086B91AC packed_sprite_oam x=-0x10, y=-0x9, spriteSize=SPRITE_SIZE_32x32, tileNum=0x127, priority=0x1, paletteNum=0xc packed_sprite_oam x=0x10, y=-0x9, spriteSize=SPRITE_SIZE_16x32, tileNum=0x137, priority=0x1, paletteNum=0xc packed_sprite_oam x=-0x10, y=0x17, spriteSize=SPRITE_SIZE_32x8, tileNum=0x13f, priority=0x1, paletteNum=0xc @@ -10724,7 +10724,7 @@ gUnknown_086B91AC:: @ 0x086B91AC packed_sprite_oam x=0x10, y=0x17, spriteSize=SPRITE_SIZE_16x8, tileNum=0x143, priority=0x1, paletteNum=0xc -gUnknown_086B92FC:: @ 0x086B92FC +gKyogreMainBodyOamData:: @ 0x086B92FC packed_sprite_oam x=0x10, y=0x0, spriteSize=SPRITE_SIZE_32x16, tileNum=0x7d, priority=0x1, paletteNum=0xf packed_sprite_oam x=0x0, y=0x10, spriteSize=SPRITE_SIZE_32x32, tileNum=0x85, priority=0x1, paletteNum=0xf packed_sprite_oam x=0x20, y=0x10, spriteSize=SPRITE_SIZE_16x32, tileNum=0x95, priority=0x1, paletteNum=0xf @@ -11057,7 +11057,7 @@ gUnknown_086B92FC:: @ 0x086B92FC packed_sprite_oam x=0x30, y=0x3C, spriteSize=SPRITE_SIZE_16x8, hFlip=0x1, tileNum=0xa1, priority=0x1, paletteNum=0xf -gUnknown_086B9AB8:: @ 0x086B9AB8 +gKecleonLowerBodyOamData:: @ 0x086B9AB8 packed_sprite_oam x=0x0, y=0x8, objMode=ST_OAM_OBJ_BLEND, spriteSize=SPRITE_SIZE_32x32, vFlip=0x1, tileNum=0x49, priority=0x3, paletteNum=0x4 packed_sprite_oam x=0x0, y=0x0, objMode=ST_OAM_OBJ_BLEND, spriteSize=SPRITE_SIZE_32x8, vFlip=0x1, tileNum=0x59, priority=0x3, paletteNum=0x4 packed_sprite_oam x=0x0, y=0x8, objMode=ST_OAM_OBJ_BLEND, spriteSize=SPRITE_SIZE_32x32, vFlip=0x1, tileNum=0x49, priority=0x3, paletteNum=0x4 @@ -11186,7 +11186,7 @@ gUnknown_086B9AB8:: @ 0x086B9AB8 packed_sprite_oam x=0x18, y=0x0, objMode=ST_OAM_OBJ_BLEND, spriteSize=SPRITE_SIZE_32x8, hFlip=0x1, vFlip=0x1, tileNum=0x59, priority=0x3, paletteNum=0x4 -gUnknown_086B9DAC:: @ 0x086B9DAC +gKecleonUpperBodyOamData:: @ 0x086B9DAC packed_sprite_oam x=0x0, y=0x0, objMode=ST_OAM_OBJ_BLEND, spriteSize=SPRITE_SIZE_32x32, tileNum=0x49, priority=0x2, paletteNum=0x2 packed_sprite_oam x=0x0, y=0x20, objMode=ST_OAM_OBJ_BLEND, spriteSize=SPRITE_SIZE_32x8, tileNum=0x59, priority=0x2, paletteNum=0x2 packed_sprite_oam x=0x0, y=0x0, objMode=ST_OAM_OBJ_BLEND, spriteSize=SPRITE_SIZE_32x32, tileNum=0x49, priority=0x2, paletteNum=0x2 @@ -12778,7 +12778,7 @@ gUnknown_086BB3E4:: @ 0x086BB3E4 .4byte gUnknown_086BA25A .4byte gUnknown_086BA250 -gUnknown_086BB420:: @ 0x086BB420 +gKecleonDefaultSpriteSets:: @ 0x086BB420 .4byte gUnknown_086BA18A .4byte gUnknown_086BA1E4 .4byte gUnknown_086BA1F6 @@ -12974,7 +12974,7 @@ gMonHatchSpriteGroupGfx:: @ 0x086BB6DC .4byte gMonHatchSpriteGroup4_Gfx .4byte gMonHatchSpriteGroup5_Gfx -gUnknown_086BB6F4:: @ 0x086BB6F4 +gCatchSpriteGfxPtrs:: @ 0x086BB6F4 .incbin "baserom.gba", 0x6BB6F4, 0x44 gMonPortraitGroupGfx:: @ 0x086BB738 @@ -12995,7 +12995,7 @@ gMonPortraitGroupGfx:: @ 0x086BB738 .incbin "baserom.gba", 0x6BB770, 0x1A0 @ 0x6BB910 - 0x6BB770 -gUnknown_086BB910:: @ 0x086BB910 +gButtonInfoTable:: @ 0x086BB910 .2byte A_BUTTON, 0x4, 0x0, 0x8 .2byte B_BUTTON, 0x5, 0x0, 0x8 .2byte SELECT_BUTTON, 0xE, 0x101, 0x20 @@ -13008,16 +13008,16 @@ gUnknown_086BB910:: @ 0x086BB910 .2byte L_BUTTON, 0x6, 0x1, 0x10 .2byte 0x0, 0x2A, 0x0, 0x08 -gUnknown_086BB968:: @ 0x086BB968 +gOptionsCursorPositionTable:: @ 0x086BB968 .incbin "baserom.gba", 0x6BB968, 0x40 -gUnknown_086BB9A8:: @ 0x086BB9A8 +gOptionsBGMSelectorYPositions:: @ 0x086BB9A8 .2byte 0x0054, 0x0060, 0x006c, 0x0078, 0x0084, 0x00 -gUnknown_086BB9B4:: @ 0x086BB9B4 +gButtonAnimData:: @ 0x086BB9B4 .incbin "baserom.gba", 0x6BB9B4, 0x38 -gUnknown_086BB9EC:: @ 0x086BB9EC +gOptionsSpriteSets:: @ 0x086BB9EC .incbin "baserom.gba", 0x6BB9EC, 0x80 gSaveFileSignature:: @ 0x086BBA6C diff --git a/data/sound_data.s b/data/sound_data.s index 6ff01b6..368fa87 100644 --- a/data/sound_data.s +++ b/data/sound_data.s @@ -1841,7 +1841,7 @@ gUnknown_08532808:: @ 0x08532808 voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 voice_directsound_no_resample 60, 0, gDirectSound_0853854C, 255, 89, 0, 89 -gUnknown_08532D6C:: @ 0x08532D6C +gPokemonCryToneBank0:: @ 0x08532D6C voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @@ -1970,7 +1970,7 @@ gUnknown_08532D6C:: @ 0x08532D6C voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 voice_directsound_compressed gDirectSound_085DDBE4 -gUnknown_08533360:: @ 0x08533360 +gPokemonCryToneBank1:: @ 0x08533360 voice_directsound_compressed gDirectSound_085DE840 voice_directsound_compressed gDirectSound_085DFB48 voice_square_1 60, 0, 0, 2, 0, 0, 15, 0 @@ -2100,7 +2100,7 @@ gUnknown_08533360:: @ 0x08533360 voice_directsound_compressed gDirectSound_0860173C voice_directsound_compressed gDirectSound_08602398 -gUnknown_08533960:: @ 0x08533960 +gPokemonCryToneBank2:: @ 0x08533960 voice_directsound_compressed gDirectSound_086038A0 voice_directsound_compressed gDirectSound_08604338 voice_directsound_compressed gDirectSound_08604F68 @@ -2230,7 +2230,7 @@ gUnknown_08533960:: @ 0x08533960 voice_directsound_compressed gDirectSound_08683470 voice_directsound_compressed gDirectSound_08683C94 -gUnknown_08533F60:: @ 0x08533F60 +gPokemonCryToneBank3:: @ 0x08533F60 voice_directsound_compressed gDirectSound_08684D9C voice_directsound_compressed gDirectSound_08686394 voice_directsound_compressed gDirectSound_08687118 diff --git a/graphics/stage/sapphire/pelipper.png b/graphics/stage/sapphire/pelipper.png new file mode 100644 index 0000000..fed97e9 Binary files /dev/null and b/graphics/stage/sapphire/pelipper.png differ diff --git a/graphics/stage/sapphire/sapphire_gfx.json b/graphics/stage/sapphire/sapphire_gfx.json index cfc13e8..708cf58 100644 --- a/graphics/stage/sapphire/sapphire_gfx.json +++ b/graphics/stage/sapphire/sapphire_gfx.json @@ -245,7 +245,7 @@ ] }, { - "gfx_filename": "pelliper", + "gfx_filename": "pelipper", "oam": true, "mheight": 6, "mwidth": 6 diff --git a/include/constants/global.h b/include/constants/global.h index 1863add..eecb642 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -7,7 +7,7 @@ #define STATE_GAME_IDLE 3 #define STATE_OPTIONS 4 #define STATE_POKEDEX 5 -#define STATE_UNKNOWN6 6 +#define STATE_SAVE_ERASE 6 #define STATE_EREADER 7 #define STATE_SCORES_MAIN 8 #define STATE_SCORES_IDLE 9 diff --git a/include/functions.h b/include/functions.h index 5a16e6c..dfe7b53 100644 --- a/include/functions.h +++ b/include/functions.h @@ -6,17 +6,17 @@ // src/gbplayer.c void InitGameBoyPlayer(void); -void sub_10C0(void); -void sub_111C(void); -int sub_1170(void); -void sub_1198(void); +void EnableGbPlayerRumble(void); +void DisableGbPlayerRumble(void); +int IsGbPlayerReady(void); +void RestoreDefaultInterrupts(void); void PlayRumble(int arg0); -void sub_11E4(int arg0); -void sub_11F0(int arg0); -void sub_11FC(void); -void sub_1340(void); -extern u32 sub_16A0(u8 param_1); -extern u32 sub_1748(u8 param_1); +void SetRumbleMode(int arg0); +void SetRumblePaused(int arg0); +void ProcessRumbleFrame(void); +void InitSio32Hardware(void); +extern u32 Sio32ValidateResponse(u8 param_1); +extern u32 Sio32BuildCommand(u8 param_1); void Sio32IDIntr(void); // src/main.c @@ -30,7 +30,7 @@ void Timer3Intr(void); void IntrDummy(void); s16 Sin(u16 arg0); s16 Cos(u16 arg0); -void sub_0D10(void); +void DisableVBlankInterrupts(void); void MainLoopIter(void); void DefaultMainCallback(void); @@ -54,8 +54,8 @@ void TitlescreenMain(void); void LoadTitlescreenGraphics(void); void InitTitlescreenStates(void); void TitleScreen1_WaitForStartButton(void); -void TitleScreen2_8010CF0(void); -void TitleScreen9_8010D84(void); +void TitleScreen2_AnimOpenMenu(void); +void TitleScreen9_DeleteSaveConfirmation(void); void TitleScreen3_8010E00(void); void TitleScreen4_MenuInputNoSavedGame(void); void TitleScreen7_8011020(void); @@ -68,31 +68,31 @@ void TitleScreen11_80114B4(void); // src/util.c void SetMainGameState(u16 mainState); -void sub_024C(void); -void sub_02B4(void); +void FadeInScreen(void); +void FadeOutScreen(void); s16 LoadSpriteSets(const struct SpriteSet *const *spriteSets, u16 numSpriteSets, struct SpriteGroup *spriteGroups); -void ResetSomeGraphicsRelatedStuff(void); +void ResetDisplayState(void); void ClearGraphicsMemory(void); -void sub_0518(void); +void ClearBgTilemapAndOffsets(void); void ClearSprites(void); -void sub_0678(u8 *arg0, s16 arg1, s16 arg2); -u8 *sub_06CC(int arg0, u8 *arg1, int arg2, s16 arg3); +void DrawTextToTilemap(u8 *arg0, s16 arg1, s16 arg2); +u8 *FormatIntToString(int arg0, u8 *arg1, int arg2, s16 arg3); void SetMatrixScale(s16 xScale, s16 yScale, s16 matrixNum); // src/bonus_field_select.s extern void BonusFieldSelectMain(void); extern void LoadBonusFieldSelectGraphics(void); -extern void sub_2710(void); +extern void InitBonusFieldSelectState(void); extern void BonusFieldSelect_State1_2768(void); extern void BonusFieldSelect_State2_2990(void); -extern void sub_29C8(void); +extern void RenderBonusFieldSelectSprites(void); // src/ereader.c extern void EReaderMain(void); extern void LoadEReaderGraphics(void); -extern void sub_2DF0(void); +extern void InitEReaderTextState(void); extern void Ereader_State1_2E40(void); extern void Ereader_State2_2FC0(void); extern void Ereader_State3_304C(void); @@ -101,16 +101,16 @@ extern void Ereader_State5_33A0(void); extern void Ereader_State6_343C(void); extern void Ereader_State7_33C8(void); extern void Ereader_State8_374C(void); -extern void sub_377C(void); -extern void sub_37B4(s8); -extern void sub_3828(s8, s8); -extern void sub_38A0(s8, u16); +extern void ClearEReaderTextRows(void); +extern void DrawEReaderTextPage(s8); +extern void DrawEReaderTextCharacter(s8, s8); +extern void BlinkEReaderTextCursor(s8, u16); extern s16 GetEReaderCardIndex(void); -extern void sub_394C(void); -extern void sub_3AB4(void); -extern void sub_3C1C(void); -extern s32 sub_3C78(void); -extern s16 sub_3CD8(void); +extern void UpdateEReaderSprites(void); +extern void UpdateEReaderSpritesViaOam(void); +extern void InitEReaderLinkBuffers(void); +extern s32 PrepareEReaderLinkSendCmd(void); +extern s16 ProcessEReaderLinkReceive(void); // src/field_select.s @@ -123,59 +123,59 @@ extern void FieldSelect_State2_8F64(void); extern void HighScoresMain(void); extern void IdleHighScoresMain(void); extern void LoadHighScoreGraphics(void); -extern void sub_CFD4(void); -extern void HighScore_State1_D20C(void); -extern void HighScore_State2_D308(void); -extern void HighScore_State3_D4B8(void); +extern void InitHighScoreData(void); +extern void HighScore_ShowCompletionBanner(void); +extern void HighScore_FlashNewEntry(void); +extern void HighScore_BrowseScores(void); // asm/high_scores.s -extern void HighScore_State4_D664(void); -extern void HighScore_State5_D9F8(void); -//extern ? HighScore_State9_DB4C(); -//extern ? HighScore_State7_DB70(); -//extern ? HighScore_State8_DBF4(); -//extern ? HighScore_State10_DCF0(); -//extern ? HighScore_State11_DD4C(); -//extern ? IdleHighScore_State0_DD70(); -extern void sub_DEB4(void); -//extern ? IdleHighScore_State2_E0C4(); -//extern ? HighScore_State12_E0EC(); -//extern ? HighScore_State13_E230(); -//extern ? HighScore_State14_E390(); -extern void sub_E3A8(void); -extern void sub_E464(void); -extern void sub_E860(void); -extern void sub_E908(void); -extern s16 sub_E94C(void); -extern s16 sub_E970(void); -extern s16 sub_E994(); -extern s16 sub_EAC0(); -extern s16 sub_EBEC(void); -extern s16 sub_ED28(void); -extern void sub_EE64(void); -extern void sub_F21C(u32, u32); +extern void HighScore_NameEntry(void); +extern void HighScore_InitLinkExchange(void); +//extern ? HighScore_LinkRetryWait(); +//extern ? HighScore_LinkError(); +//extern ? HighScore_LinkSuccess(); +//extern ? HighScore_ResetConfirmation(); +//extern ? HighScore_ExitToTitle(); +//extern ? IdleHighScore_LoadGraphics(); +extern void InitIdleHighScoreData(void); +//extern ? IdleHighScore_Exit(); +//extern ? HighScore_ReloadAfterLink(); +//extern ? HighScore_ShowMergedScores(); +//extern ? HighScore_ReturnToMain(); +extern void UpdateNameEntryCursor(void); +extern void RenderHighScoreSprites(void); +extern void RenderCompletionBanner(void); +extern void InitLinkExchangeBuffers(void); +extern s16 HighScore_ProcessLinkExchange(void); +extern s16 ProcessLinkSendData(void); +extern s16 MasterSendHighScores(); +extern s16 SlaveSendHighScores(); +extern s16 MasterReceiveHighScores(void); +extern s16 SlaveReceiveHighScores(void); +extern void DrawAllHighScoreText(void); +extern void FormatScoreDigits(u32, u32); extern int CompareScores(u32, u32, u32, u32); extern s32 GetNewHighScoreIndex(u32, u32, u32); -extern void sub_F434(u32, u32, u32, int); -extern u32 sub_F4FC(u32); -extern void sub_F670(u32, u32, s16, u32); +extern void InsertNewHighScore(u32, u32, u32, int); +extern u32 MergeReceivedTopScore(u32); +extern void PrintHighScoreNameChar(u32, u32, s16, u32); extern void SetDefaultHighScores(void); -extern void sub_F8B0(u32, u32, s16); -extern void sub_FAE8(u32, u32, s16); -extern s8 sub_FD20(void); -extern void sub_FD5C(void (*func)(void)); -extern void sub_FE04(void (*func)(void)); -extern void sub_FEB8(u8 *, u8 *, void (*func)(void)); -extern void sub_FF74(void (*func)(void)); -extern void sub_1001C(u16); -extern void sub_10170(u8 *, u8 *, u16, u16); // Very much subject to change -extern void sub_102A8(u8 *, u8 *, u16, u16); -extern void sub_10424(void); -extern void sub_10480(void); +extern void AnimateScoreTilemapPalette(u32, u32, s16); +extern void ResetScoreTilemapPalette(u32, u32, s16); +extern s8 CheckAllPokemonCaught(void); +extern void FadeInFromWhite(void (*func)(void)); +extern void FadeOutToWhite(void (*func)(void)); +extern void FadeInWithCustomPalettes(u8 *, u8 *, void (*func)(void)); +extern void FadeOutToBlack(void (*func)(void)); +extern void InterpolatePaletteStep(u16); +extern void DarkenPalette(u8 *, u8 *, u16, u16); // Very much subject to change +extern void BrightenPalette(u8 *, u8 *, u16, u16); +extern void FlashWhiteTransitionIn(void); +extern void FlashWhiteTransitionOut(void); extern void UnblankLCD(void); -extern void ForceBlankLDC(void); -extern void sub_10544(void); +extern void ForceBlankLCD(void); +extern void DisableDisplayInterrupts(void); extern void PrintString(u16 glyph, u16 color, int x, int y, int arg4, int arg5); // src/intro.c @@ -185,93 +185,93 @@ extern void Intro_State1_9348(void); extern void Intro_State2_9370(void); extern void Intro_State3_938C(void); extern void Intro_State4_93D0(void); -extern void sub_93F8(void); -extern void sub_9498(void); -extern void sub_96A8(void); +extern void IntroVBlankCallback(void); +extern void IntroScene1_LoadGraphics(void); +extern void IntroScene1_InitVars(void); // asm/intro.s -extern void sub_978C(void); -extern void sub_9830(void); -extern void sub_9878(void); -extern void sub_98B4(void); -extern void sub_9920(void); -extern void sub_999C(void); -extern void sub_9AB8(void); +extern void IntroScene1_AnimateTitleReveal(void); +extern void IntroScene1_ZoomOutTitle(void); +extern void IntroScene1_ResetAfterZoom(void); +extern void IntroScene1_AnimateSecondReveal(void); +extern void IntroScene1_FadeInOverlay(void); +extern void IntroScene1_ScrollAndFade(void); +extern void IntroScene1_ParallaxScroll(void); extern void nullsub_4(void); -//extern ? sub_9C10(); +//extern ? IntroScene1_FinalScroll(); //extern ? nullsub_5(); //extern ? nullsub_17(); -//extern ? sub_9C9C(); -extern void sub_9CB8(void); -extern void sub_9D70(void); -extern void sub_9E90(void); -//extern ? sub_A154(); -//extern ? sub_A16C(); -extern void sub_A2A8(void); +//extern ? IntroScene1_BeginFadeOut(); +extern void IntroScene1_RenderTitleSprite(void); +extern void IntroScene1_RenderScaledTitle(void); +extern void IntroScene1_RenderAllSprites(void); +//extern ? IntroScene1_ClearGraphics(); +//extern ? IntroScene2_LoadGraphics(); +extern void IntroScene2_InitVars(void); //extern ? nullsub_6(); -//extern ? sub_A2F0(); +//extern ? IntroScene2_ScrollBGs(); //extern ? nullsub_7(); -//extern ? sub_A39C(); -//extern ? sub_A43C(); -//extern ? sub_A454(); -//extern ? sub_A628(); -//extern ? sub_A674(); -//extern ? sub_A710(); +//extern ? IntroScene2_FinalScrollAndFade(); +//extern ? IntroScene2_ClearGraphics(); +//extern ? IntroScene3_LoadGraphics(); +//extern ? IntroScene3_InitVars(); +//extern ? IntroScene3_ScrollIn(); +//extern ? IntroScene3_AnimateAndSwapBG(); //extern ? nullsub_8(); -//extern ? sub_A860(); -//extern ? sub_A87C(); -//extern ? sub_A950(); -//extern ? sub_A968(); -//extern ? sub_AAA8(); +//extern ? IntroScene3_BeginFadeOut(); +//extern ? IntroScene3_RenderPokeball(); +//extern ? IntroScene3_ClearGraphics(); +//extern ? IntroScene4_LoadGraphics(); +//extern ? IntroScene4_InitVars(); //extern ? nullsub_9(); -//extern ? sub_AAF4(); +//extern ? IntroScene4_ScrollBGs(); //extern ? nullsub_10(); -//extern ? sub_AB90(); -//extern ? sub_AC20(); -//extern ? sub_AC38(); -//extern ? sub_ADFC(); -//extern ? sub_AE74(); -//extern ? sub_AF80(); +//extern ? IntroScene4_FinalScrollAndFade(); +//extern ? IntroScene4_ClearGraphics(); +//extern ? IntroScene5_LoadGraphics(); +//extern ? IntroScene5_InitVars(); +//extern ? IntroScene5_ScrollIn(); +//extern ? IntroScene5_AnimateEntities(); //extern ? nullsub_11(); -//extern ? sub_B090(); -//extern ? sub_B0E8(); -//extern ? sub_B2E0(); -//extern ? sub_B2F8(); -//extern ? sub_B4A0(); -//extern ? sub_B560(); -//extern ? sub_B6C4(); -//extern ? sub_B7A0(); -//extern ? sub_B7F8(); -//extern ? sub_BA2C(); -//extern ? sub_BA3C(); -//extern ? sub_BBE0(); -//extern ? sub_BC54(); -//extern ? sub_BCE8(); -//extern ? sub_BDC0(); -//extern ? sub_BED0(); -//extern ? sub_C018(); -//extern ? sub_C0BC(); -//extern ? sub_C0D8(); -//extern ? sub_C210(); -//extern ? sub_C228(); -//extern ? sub_C2F0(); -//extern ? sub_C38C(); -//extern ? sub_C3D0(); -//extern ? sub_C450(); +//extern ? IntroScene5_FadeOutAndClearOAM(); +//extern ? IntroScene5_RenderAllSprites(); +//extern ? IntroScene5_ClearGraphics(); +//extern ? IntroScene6_LoadGraphics(); +//extern ? IntroScene6_InitVars(); +//extern ? IntroScene6_AnimateStarsScrollIn(); +//extern ? IntroScene6_ContinueBounce(); +//extern ? IntroScene6_FadeOutAndClearOAM(); +//extern ? IntroScene6_RenderStarSprites(); +//extern ? IntroScene6_AdvanceIndex(); +//extern ? IntroScene7_LoadGraphics(); +//extern ? IntroScene7_InitVars(); +//extern ? IntroScene7_ScrollWaves1(); +//extern ? IntroScene7_ScrollWaves2(); +//extern ? IntroScene7_ScrollWaves3(); +//extern ? IntroScene7_WailmerAndAllWaves(); +//extern ? IntroScene7_WailmerShakeAndShrink(); +//extern ? IntroScene7_BeginFadeOut(); +//extern ? IntroScene7_RenderWailmer(); +//extern ? IntroScene7_ClearGraphics(); +//extern ? IntroScene8a_LoadGraphics(); +//extern ? IntroScene8a_InitVars(); +//extern ? IntroScene8a_WaitForExplosion(); +//extern ? IntroScene8a_ExplodeAndLaunch(); +//extern ? IntroScene8a_DriftAndFade(); //extern ? nullsub_12(); //extern ? nullsub_13(); -//extern ? sub_C498(); -//extern ? sub_C4F0(); -//extern ? sub_C814(); -//extern ? sub_C948(); -//extern ? sub_CA28(); -//extern ? sub_CAA0(); -//extern ? sub_CB6C(); -//extern ? sub_CBA4(); +//extern ? IntroScene8a_FadeOutAndClearOAM(); +//extern ? IntroScene8a_RenderAllSprites(); +//extern ? IntroScene8a_ClearAndResetOAM(); +//extern ? IntroScene8b_LoadGraphics(); +//extern ? IntroScene8b_InitVars(); +//extern ? IntroScene8b_BallFlyIn(); +//extern ? IntroScene8b_ScrollClouds(); +//extern ? IntroScene8b_CloudSpriteAndWhiteFlash(); //extern ? nullsub_14(); -//extern ? sub_CC94(); -//extern ? sub_CCF8(); +//extern ? IntroScene8b_FadeOutMusic(); +//extern ? IntroScene8b_EndIntro(); // asm/libagbsyscall.s @@ -330,31 +330,31 @@ extern void Options_InitStates(void); //extern ? Options_HandleInput(); //extern ? Options_State2_51C3C(); //extern ? Options_State3_51C60(); -extern void sub_51C9C(void); -extern void sub_524BC(void); -extern void sub_52528(void); +extern void UpdateOptionsSpritePositions(void); +extern void CaptureButtonConfigInput(void); +extern void InitCustomButtonConfigDisplay(void); extern void SetButtonConfigInputs(s8); // asm/pokedex.s extern void PokedexMain(void); //extern ? LoadPokedexGraphics(); -extern void sub_3FAC(void); +extern void InitPokedexState(void); //extern ? Pokedex_HandleListInput(); -//extern ? Pokedex_State2_43D4(); -//extern ? Pokedex_State3_4428(); -//extern ? Pokedex_State5_45A4(); -//extern ? Pokedex_State4_4860(); +//extern ? Pokedex_PostScrollRefresh(); +//extern ? Pokedex_InfoWindowSlideIn(); +//extern ? Pokedex_DetailViewInput(); +//extern ? Pokedex_InfoWindowSlideOut(); //extern ? Pokedex_LinkSetup(); -//extern ? Pokedex_State7_49D0(); -//extern ? Pokedex_State10_4B10(); -//extern ? Pokedex_State8_4B34(); -//extern ? Pokedex_State9_4BB4(); +//extern ? Pokedex_LinkTransferLoop(); +//extern ? Pokedex_LinkRetryDelay(); +//extern ? Pokedex_LinkErrorTimeout(); +//extern ? Pokedex_LinkSuccessSequence(); //extern ? Pokedex_DeleteConfirmation(); //extern ? Pokedex_ReturnToTitle(); -//extern ? sub_71DC(); -extern void sub_8974(s16); -extern s16 sub_8A78(s16); +//extern ? BlitGlyphToTileBuffer(); +extern void LoadMonAnimationSprite(s16); +extern s16 CheckMonHasAnimation(s16); extern void ResetPokedex(void); // asm/rom_1068C.s @@ -362,197 +362,197 @@ extern void ResetPokedex(void); extern void CopyString(int, int, int, int, int, int); void SetStringPalette(int, int, int, int, u16); extern void CopyBgTilesRect(void *volatile, void *volatile, s16, s16); -//extern ? sub_10860(); +//extern ? FadeOutToWhite(); extern void ClearHighScoreNameEntry(void); // asm/rom_11B9C.s //extern ? AllBoardProcess_5A_11B9C(); -extern void sub_11C14(s16); +extern void InitBallState(s16); //extern ? MainBoardProcess_5B_11C98(); extern void AllBoardProcess_6A_4CEA8(); extern void AllBoardProcess_6B_1333C(); -extern u16 sub_13824(struct Vector16*); -extern void sub_13B28(struct Vector16*, struct Vector16*, s16); -extern void sub_13D24(u16, struct Vector16*, struct Vector16*); -extern void sub_14074(u16, struct Vector32*, u16); -extern u16 sub_14488(struct Vector16*, struct Vector16); -extern u16 sub_1467C(struct Vector16*, u16*); -extern u16 sub_14740(struct Vector16*, u16*); -extern void sub_1493C(void); -extern u16 sub_14AF4(struct Vector16 r0, s16 r1, u16 *r2, s16 r3); -//extern ? sub_14B84(); -//extern ? COLLISION_CHECK_RUBY_14E08(); +extern u16 DetectBallCollision(struct Vector16*); +extern void ComputeFlipperBounce(struct Vector16*, struct Vector16*, s16); +extern void ComputeWallReflection(u16, struct Vector16*, struct Vector16*); +extern void ApplyBounceBackForce(u16, struct Vector32*, u16); +extern u16 PixelWalkCollisionDetection(struct Vector16*, struct Vector16); +extern u16 CheckFlipperCollision(struct Vector16*, u16*); +extern u16 CheckCatchTargetCollision(struct Vector16*, u16*); +extern void ProcessBonusTrapPhysics(void); +extern u16 LookupFlipperCollisionMap(struct Vector16 r0, s16 r1, u16 *r2, s16 r3); +//extern ? ComputeFlipperLaunchVelocity(); +//extern ? CollisionCheck_Ruby(); void CheckRubyPondBumperCollision(struct Vector16*, u16*, u8*); -void sub_153CC(s32, s16*, u16*); -//extern ? COLLISION_CHECK_SAPPHIRE_16090(); -extern void sub_162B8(struct Vector16 *arg0, s16* arg1, u8* arg2); -extern void sub_1642C(u8, u16*, u16*); -//extern ? COLLISION_CHECK_DUSCLOPS_171C8(); +void ProcessRubyCollisionEvent(s32, s16*, u16*); +//extern ? CollisionCheck_Sapphire(); +extern void CheckSapphireBumperCollision(struct Vector16 *arg0, s16* arg1, u8* arg2); +extern void ProcessSapphireCollisionEvent(u8, u16*, u16*); +//extern ? CollisionCheck_Dusclops(); 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 *); -extern void sub_17C1C(struct Vector16 *); -//extern ? COLLISION_CHECK_KYOGRE_17F28(); -extern void sub_18180(struct Vector16 *, u16 *, u8 *); -extern void sub_182B4(u8, u16 *, u16 *); -//extern ? COLLISION_CHECK_GROUDON_18324(); -extern void sub_1857C(struct Vector16 *, u16 *, u8 *); -extern void sub_18784(u8, u16 *, u16 *); -extern s16 COLLISION_CHECK_RAYQUAZA_187F4(struct Vector16*, u16*); -extern void sub_18A4C(struct Vector16*, u16*, u8*); -extern void sub_18AE0(u8, u16*, u16*); -extern s16 COLLISION_CHECK_SPHEAL_18B50(struct Vector16*, u16*); -extern void sub_18DAC(struct Vector16*, u16*, u8*); -extern void sub_18F38(u8, u16*, u16*); +extern void CheckDusclopsAbsorbZoneHit(u8, u16*, u16*); +//extern ? CollisionCheck_Kecleon(); +extern void CheckKecleonEntityCollision(struct Vector16 *, u16 *, u8 *); +extern void ProcessKecleonCollisionEvent(u8, u16 *, u16 *); +extern void CheckKecleonProjectileCollision(struct Vector16 *); +//extern ? CollisionCheck_Kyogre(); +extern void CheckKyogreEntityCollision(struct Vector16 *, u16 *, u8 *); +extern void ProcessKyogreCollisionEvent(u8, u16 *, u16 *); +//extern ? CollisionCheck_Groudon(); +extern void CheckGroudonEntityCollision(struct Vector16 *, u16 *, u8 *); +extern void ProcessGroudonCollisionEvent(u8, u16 *, u16 *); +extern s16 CollisionCheck_Rayquaza(struct Vector16*, u16*); +extern void CheckRayquazaEntityCollision(struct Vector16*, u16*, u8*); +extern void ProcessRayquazaCollisionEvent(u8, u16*, u16*); +extern s16 CollisionCheck_Spheal(struct Vector16*, u16*); +extern void CheckSphealEntityCollision(struct Vector16*, u16*, u8*); +extern void ProcessSphealCollisionEvent(u8, u16*, u16*); extern void IdlePinballGameMain(); extern void PinballGameIdle0_19048(void);//gMain.subState = 0 extern void PinballGameIdle1_19190(void);//gMain.subState = 1 extern void PinballGame_State2_4ABC8(void);//gMain.subState = 2 extern void PinballGameIdle3_19288(void);//gMain.subState = 3 //extern ? AllBoardProcess_4A_19304(); -extern void sub_1931C(struct Vector16 arg0); +extern void DetermineFlipperBallSide(struct Vector16 arg0); //extern ? MainBoardProcess_4B_19490(); -extern void sub_195C4(void); +extern void UpdateMainBoardFlipperPhysics(void); extern void BonusBoardProcess_4B_19734(void); -extern void sub_19894(void); +extern void UpdateBonusBoardFlipperPhysics(void); //extern ? RubyBoardProcess_3A_19A20(); //extern ? RubyBoardProcess_3B_19B10(); -extern void sub_19B64(u8); -extern void sub_19B90(void); -//extern ? sub_19C04(); -//extern ? sub_19CC8(); -//extern ? sub_19D04(); -//extern ? sub_19E10(); -//extern ? sub_19F70(); -//extern ? sub_19FA0(); -extern void sub_1A0F4(void); -//extern ? sub_1A2C0(); +extern void RequestBoardStateTransition(u8); +extern void BoardStateDispatcher(void); +//extern ? InitFieldIdle(); +//extern ? UpdateFieldIdle(); +//extern ? HandleBoardStateTransitionTeardown(); +//extern ? UpdateRubyBoardEntityRendering(); +//extern ? UpdateRubyBoardEntityLogic(); +//extern ? HandleRubyFlipperButtonInput(); +extern void ProcessBannerCameraTransition(void); +//extern ? RenderBannerSlideAnimation(); -extern void sub_1A98C(); -extern void sub_1A9E8(void); -//extern ? sub_1AA38(); -extern void sub_1AAA0(); -extern void sub_1AD84(void); -//extern ? sub_1ADF4(); -//extern ? sub_1AF84(); -//extern ? sub_1AFD4(); -extern void sub_1B140(s16); -extern void sub_1C560(void); -extern void sub_1C5AC(void); -extern void sub_1C73C(void); -extern void sub_1C7F4(s16, s16); -extern void sub_1D128(void); -extern void sub_1D4D0(void); -//extern ? sub_1D5D8(); -//extern ? sub_1DA74(); -//extern ? sub_1DAD8(); +extern void DispatchRubyCatchModeInit(); +extern void UpdateRubyCatchModeAnimation(void); +//extern ? InitSharpedoCatchMode(); +extern void AnimateSharpedoCatchSequence(); +extern void InitEggHatchMode(void); +//extern ? AnimateEggHatchSequence(); +//extern ? InitRubyEvolutionShopMode(); +//extern ? AnimateRubyEvolutionShopSequence(); +extern void UpdateShopEntryAnimation(s16); +extern void InitCenterTrapMode(void); +extern void AnimateCenterTrapSequence(void); +extern void TransitionToBonusField(void); +extern void LoadPortraitGraphics(s16, s16); +extern void UpdatePortraitSpritePositions(void); +extern void ClampPortraitSpritesToOffscreen(void); +//extern ? UpdateNuzleafEntity(); +//extern ? SelectShopDoorState(); +//extern ? AnimateShopDoor(); //extern ? DrawWhiscash(); //extern ? RubyPond_EntityLogic(); //extern ? RubyPondTriBumperHandleHitAndDraw(); -//extern ? sub_1F158(); -extern void sub_1F2A4(); -extern void sub_1F59C(); -//extern ? sub_1F698(); -//extern ? sub_1FA48(); -//extern ? sub_1FBC4(); -//extern ? sub_1FF0C(); -//extern ? sub_201B8(); -extern void sub_203CC(); -extern void sub_20EC0(); -extern void sub_21238(s16); -//extern ? sub_21300(); -//extern ? sub_21320(); -extern void sub_21514(void); -//extern ? sub_21578(); -//extern ? sub_216FC(); -extern void sub_219A8(void); -extern void sub_219EC(void); -extern void sub_21B0C(); -//extern ? sub_21D78(); -extern void sub_21FBC(s16); -extern void sub_225F0(); -extern void sub_22978(); -//extern ? sub_22A30(); -//extern ? sub_22C6C(); -//extern ? sub_22D54(); -extern void sub_22FA4(); -extern void sub_23070(); -extern void sub_2310C(); -extern void sub_2312C(void); -extern void sub_23300(void); -extern void sub_23954(void); -//extern ? sub_239A4(); -//extern ? sub_23E18(); -extern void sub_242B4(void); -//extern ? sub_24350(); -//extern ? sub_24408(); -extern void sub_2530C(void); +//extern ? AnimateSharpedoEntity(); +extern void UpdatePikachuChargeCounter(); +extern void DrawPikachuSpinner(); +//extern ? UpdateChikoritaAttackAnimation(); +//extern ? AnimateChikoritaSprite(); +//extern ? UpdateGulpinBossState(); +//extern ? UpdateSideBumperAnimation(); +//extern ? DrawSideBumperSprites(); +extern void UpdateCatchModeLogic(); +extern void AnimateCreatureApproach(); +extern void ResetCatchState(s16); +//extern ? InitCatchTrigger(); +//extern ? UpdateCatchTrigger(); +extern void FullCatchStateCleanup(void); +//extern ? InitBonusStageSelect(); +//extern ? UpdateBonusStageSelect(); +extern void ShowBonusTrapSprite(void); +extern void AnimateBonusTrapSprite(void); +extern void AnimateCatchCounterDisplay(); +//extern ? UpdateEvolutionShopSprite(); +extern void RenderEvolutionUI(s16); +extern void AnimateCoinReward(); +extern void InitTotodileEggDelivery(); +//extern ? AnimateTotodileEggDelivery(); +//extern ? InitAerodactylEggDelivery(); +//extern ? AnimateAerodactylEggDelivery(); +extern void LoadPokemonNameGraphics(); +extern void UpdatePokemonNamePosition(); +extern void HidePokemonNameDisplay(); +extern void InitEvolutionSuccessDisplay(void); +extern void AnimateEvolutionSuccessScreen(void); +extern void InitEggModeAnimation(void); +//extern ? UpdateEggModeAnimation(); +//extern ? UpdateEggHatchDisplay(); +extern void CleanupEggModeState(void); +//extern ? InitEggMode(); +//extern ? UpdateEggMode(); +extern void DisableHatchTileDisplay(void); extern void RevealSequentialHatchTiles(void); extern void RevealAllHatchTilesAtOnce(void); -//extern ? sub_25F64(); -//extern ? sub_260B8(); -extern void sub_26778(void); -extern void sub_26820(s16); -extern void sub_268CC(void); -//extern ? sub_269A4(); -//extern ? sub_26A10(); -extern void sub_26EA4(void); -//extern ? sub_26F38(); -//extern ? sub_27080(); -extern void sub_278F4(void); -extern void sub_27D44(void); -//extern ? sub_27E08(); -//extern ? sub_27F94(); -//extern ? sub_28404(); -//extern ? sub_28544(); -extern void sub_28AE0(void); -extern void sub_28BFC(void); -extern void sub_28C90(void); -extern void sub_28E2C(void); -extern void sub_28EA0(void); -extern void sub_292A0(void); +//extern ? InitAreaRoulette(); +//extern ? UpdateAreaRoulette(); +extern void UpdateRouletteAnimState(void); +extern void SetRouletteActiveState(s16); +extern void CleanupTravelModeState(void); +//extern ? InitTravelMode(); +//extern ? UpdateTravelMode(); +extern void CleanupEvolutionModeState(void); +//extern ? InitEvolutionMode(); +//extern ? UpdateEvolutionMode(); +extern void UpdateEvolutionItemAnimation(void); +extern void CleanupCatchEmState(void); +//extern ? InitCatchEmMode(); +//extern ? UpdateCatchEmMode(); +//extern ? InitJirachiBonus(); +//extern ? UpdateJirachiBonus(); +extern void LoadCatchSpriteGraphics(void); +extern void LoadEggSpriteGraphics(void); +extern void DrawCaughtPokemonSprite(void); +extern void CleanupCaughtPokemonSprite(void); +extern void DrawJirachiSprites(void); +extern void CleanupJirachiSprites(void); extern void CheckHatchTileRevealState(void); -extern void sub_293D8(void); -extern void sub_29624(void); -extern void sub_29664(void); -extern void sub_2971C(void); -extern void sub_29924(void); -extern void sub_29A6C(void); -extern void sub_29D9C(void); -extern void sub_2A054(void); -extern void sub_2A354(); +extern void PlayEggCrackAnimation(void); +extern void ResetHatchFrameState(void); +extern void InitSequentialTileParticles(void); +extern void UpdateSequentialTileParticles(void); +extern void InitBurstTileParticles(void); +extern void UpdateBurstTileParticles(void); +extern void InitRouletteWheel(void); +extern void RunRouletteWheel(void); +extern void ProcessRouletteOutcome(); //extern ? sub_2C518(); -//extern ? sub_2C538(); -//extern ? sub_2C9A4(); -extern void sub_2CA9C(); -extern void sub_2CD98(void); -extern void sub_2CE80(); -extern void sub_2D104(); -extern void sub_2D204(void); +//extern ? UpdateRubyRampPrizeGate(); +//extern ? DrawRubyNuzleafPlatformSprite(); +extern void AnimateOneUpSprite(); +extern void AnimateBannerSlide(void); +extern void UpdateSpoinkAnimation(); +extern void DrawSpoinkSprite(); +extern void RunEvolutionCutscene(void); //extern ? sub_2DE54(); -extern void sub_2E094(void); -extern void sub_2E67C(); -extern void sub_2E6AC(); -extern void sub_2F140(); -extern void sub_2F26C(); -extern void sub_2F504(); -extern void sub_2F79C(); -extern void sub_2FCD0(); -extern void sub_300D8(); -extern void sub_30178(); -extern void sub_30480(); -extern void sub_304C8(); -extern void sub_308DC(); -extern void sub_30EB4(); -extern void sub_31144(); -extern void sub_313A0(void); -extern void sub_31498(); -extern void sub_31B30(void); -extern void sub_31BE8(s16); -extern void sub_31CF8(s16); +extern void RunTravelEventCutscene(void); +extern void DecrementFieldTimer(); +extern void UpdatePelipperPondEntity(); +extern void AnimateWailmerEntity(); +extern void UpdateZigzagoonEntity(); +extern void DrawZigzagoonAndShockWall(); +extern void UpdateSapphireBumperLogic(); +extern void DrawSapphireBumperSprites(); +extern void CalculateRubyBumperBounce(); +extern void HandleRubyBumperHit(); +extern void InitSapphireEggCaveState(); +extern void UpdateSapphireEggCaveAnimation(); +extern void UpdateSapphireSeedotCollection(); +extern void DrawSapphireSeedotAndBasketSprites(); +extern void UpdateSapphireShopSignAnimation(); +extern void DrawSapphireShopSignSprite(void); +extern void UpdateSapphireHoleLetterSystem(); +extern void DrawBoardEdgeBanner(void); +extern void RestoreBoardObjPalettes(s16); +extern void RegisterCaptureOrEvolution(s16); extern void BuildSpeciesWeightsForCatchEmMode(void); @@ -562,14 +562,14 @@ extern void BuildSpeciesWeightsForEggMode(void); extern void PickSpeciesForEggMode(void); //extern ? SapphireBoardProcess_3A_326F4(); //extern ? SapphireBoardProcess_3B_3276C(); -extern void sub_327C0(); -extern void sub_328C8(); -extern void sub_32914(); -extern void sub_32968(); -extern void sub_329B0(); -extern void sub_329F4(); -extern void sub_32B74(); -extern void sub_32BE4(); +extern void UpdateSapphireBoardEntityRendering(); +extern void UpdateSapphireBoardEntityLogic(); +extern void DispatchSapphireCatchModeInit(); +extern void UpdateSapphireCatchModeAnimation(); +extern void InitSapphireEvolutionShopCatch(); +extern void UpdateSapphireEvolutionShopSequence(); +extern void InitSapphireWailmerCatch(); +extern void UpdateSapphireWailmerCatchSequence(); //extern ? DuskullBonus_Setup(); //extern ? DusclopsBoardProcess_3B_33130(); extern void SwapDuskullEntityIndex(s16 index1, s16 index2); @@ -577,118 +577,118 @@ 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 void ProcessBonusBannerAndScoring(); +extern void RenderBonusStageOverlaySprites(); +extern void TransitionFromBonusToMainBoard(void); //extern ? KecleonBoardProcess_3A_35860(); //extern ? KecleonBoardProcess_3B_35AA4(); -//extern ? sub_35D54(); -//extern ? sub_372B4(); -//extern ? sub_3751C(); -//extern ? sub_37850(); -//extern ? sub_38218(); +//extern ? UpdateKecleonEntityLogic(); +//extern ? UpdateKecleonScopeItem(); +//extern ? UpdateKecleonScopeVision(); +//extern ? RenderKecleonBoardElements(); +//extern ? SortKecleonSpritesByY(); //extern ? KyogreBoardProcess_3A_383E4(); //extern ? KyogreBoardProcess_3B_3869C(); -extern void sub_38A20(void); -extern void sub_395D8(void); -extern void sub_39A40(void); +extern void UpdateKyogreEntityLogic(void); +extern void RenderKyogreSprites(void); +extern void UpdateKyogreFieldEntities(void); //extern ? sub_3A150(); -extern void sub_3ADA0(void); -extern void sub_3AE14(void); +extern void HideKyogreSplashSprite(void); +extern void AnimateKyogreBackground(void); //extern ? GroudonBoardProcess_3A_3B120(); //extern ? GroudonBoardProcess_3B_3B49C(); -extern void sub_3B7C4(void); -extern void sub_3C6E0(void); -extern void sub_3CBC4(void); -extern void sub_3E5D0(void); -extern void sub_3E644(void); +extern void UpdateGroudonEntityLogic(void); +extern void RenderGroudonSprites(void); +extern void UpdateGroudonFieldEntities(void); +extern void HideGroudonShockwaveSprite(void); +extern void AnimateGroudonBackground(void); //extern ? RayquazaBoardProcess_3A_3E79C(); //extern ? RayquazaBoardProcess_3B_3EB2C(); -extern void sub_3EDF0(void); -extern void sub_3FAE0(void); -extern void sub_40288(void); -extern void sub_41580(void); -extern void sub_417F8(void); -extern void sub_423D8(void); +extern void UpdateRayquazaEntityLogic(void); +extern void RenderRayquazaSprites(void); +extern void UpdateRayquazaMinionsAndEffects(void); +extern void UpdateWhirlwindGrabEntity(void); +extern void RenderWindCloudSprites(void); +extern void UpdateRayquazaIntroSequence(void); //extern ? SphealBoardProcess_3A_42E48(); //extern ? SphealBoardProcess_3B_43228(); -extern void sub_43500(void); -extern void sub_4387C(void); -extern void sub_44D58(void); +extern void UpdateSealeoEntityLogic(void); +extern void UpdateSphealEntityLogic(void); +extern void UpdateSphealScoreAndDelivery(void); extern void SphealBoard_WhiscashDeliversBall(void); -extern void SphealBoard_PelliperDeliversBall(void); -extern void sub_455D0(void); -extern void sub_45E08(void); -extern void sub_45E90(void); +extern void SphealBoard_PelipperDeliversBall(void); +extern void UpdateSealeoKnockdownPhysics(void); +extern void AnimateSphealBackground(void); +extern void UpdateSphealResultsScreen(void); extern void loadIntroduction(void); -extern void sub_46FD4(s16); -extern void sub_47030(void); +extern void SetBoardCollisionConfig(s16); +extern void UpdateScrollingBackgroundTiles(void); //extern ? AllBoardProcess_1A_47100(); //extern ? AllBoardProcess_1B_47160(); extern void BonusStage_HandleModeChangeFlags(); -extern void sub_47344(void); -extern void sub_474F4(void); -extern void sub_47670(void); -extern void sub_478D8(void); -extern void sub_47FBC(void); -extern void sub_47FF8(void); -extern void sub_48124(void); -extern void sub_48190(void); -extern void sub_495A0(void); -extern void sub_497BC(void); -extern void sub_49850(void); -extern void sub_49A34(void); -extern void sub_4ACF0(); -extern void sub_4B000(); -extern void sub_4B408(s16); +extern void DebugMenu_RenderAndHandleInput(void); +extern void GameOverAnimation(void); +extern void EndOfBallSequence(void); +extern void BallSaverAnimation(void); +extern void ClearDebugTextDisplay(void); +extern void DebugMoveBallPosition(void); +extern void DebugToggleBallSpeed(void); +extern void EndOfBallBonusSummary(void); +extern void PauseGame(void); +extern void UnpauseGame(void); +extern void PositionPauseMenuSprites(void); +extern void AnimatePauseMenuOverlay(void); +extern void IdleGameFrameUpdate(); +extern void IdleBonusFieldFrameUpdate(); +extern void SaveGameStateSnapshot(s16); //extern ? AllBoardProcess_8A_4CEA8(); extern void AllBoardProcess_8B_4CEB4(void); extern void PinballGame_State0_49ED4(void); -extern void sub_4D3D0(void); -extern void sub_4D648(void); +extern void ProcessEventTimer(void); +extern void ResetEventState(void); //extern ? AllBoardProcess_2A_4D6C4(); //extern ? MainBoardProcess_2B_4D960(); //extern ? BonusBoardProcess_2B_4DBFC(); -extern void sub_4DFA0(void); -extern void sub_4E2F8(void); -extern void sub_4E468(void); -extern void sub_4E598(void); -extern void sub_4E814(void); -extern void sub_4E920(void); -extern void sub_4E9F0(s16); -extern void sub_4EA44(void); -extern void sub_4EAB0(void); -extern void sub_4EAF8(void); -extern void sub_4EBD0(void); -extern void sub_4ECDC(void); -extern void sub_4EDC0(void); -extern void sub_4EE74(void); -extern void sub_4EF38(void); -extern void sub_4F028(void); -extern void sub_4F0F0(void); -extern void sub_4F258(void); -extern void sub_4F2B8(void); -extern void sub_4F30C(void); -extern void sub_4F4B4(void); -extern void sub_4F660(void); -extern void sub_4F814(void); -extern void sub_4F95C(void); -extern void sub_4F9F0(void); -extern void sub_4FAC0(void); -extern void sub_4FB08(void); -extern void sub_4FBA4(void); -extern void sub_4FC7C(void); -extern void sub_4FD88(void); -extern void sub_4FE6C(void); -extern void sub_50000(void); -extern void sub_500B4(void); -extern void sub_50154(void); -extern void sub_5030C(void); -extern void sub_504C0(void); -extern void sub_505A4(void); -extern void sub_506B0(void); -extern void sub_50710(void); -extern void sub_507D4(void); +extern void ProcessTiltInput(void); +extern void ProcessMainBoardBallDrainAndLaunch(void); +extern void ProcessBonusBoardBallDrain(void); +extern void ResetBoardStateOnDeath(void); +extern void UpdateRubyBoardAnimations(void); +extern void AnimateRubySlingshotTimer(void); +extern void LoadShopItemGraphics(s16); +extern void DrawRubyProgressDigits(void); +extern void AnimateRubyTrapIndicator(void); +extern void AnimateRubyCatchLightBlink(void); +extern void AnimateRubyHoleIndicators(void); +extern void DrawRubyModeTimerDisplay(void); +extern void AnimateRubyCatchArrow(void); +extern void AnimateRubyEvoArrow(void); +extern void AnimateRubyRouletteSlot(void); +extern void AnimateRubyCatchProgressArrow(void); +extern void AnimateRubyBallPowerUpSequence(void); +extern void DrawRubyBallPowerUpLights(void); +extern void UpdateCoinRewardTimer(void); +extern void DrawCoinRewardMeter(void); +extern void DrawEvoArrowProgress(void); +extern void DrawCatchArrowProgress(void); +extern void UpdateSapphireBoardAnimations(void); +extern void DrawSapphireProgressDigits(void); +extern void AnimateSapphireSlingshotHit(void); +extern void AnimateSapphireTrapIndicator(void); +extern void AnimateRotatingBackground(void); +extern void AnimateSapphireCatchLightBlink(void); +extern void AnimateSapphireHoleIndicators(void); +extern void DrawSapphireModeTimerDisplay(void); +extern void DrawCoinRewardMeterAlt(void); +extern void AnimateSapphireCatchArrowPalette(void); +extern void AnimateSapphireEvoArrowPalette(void); +extern void DrawEvoArrowBonusField(void); +extern void DrawCatchArrowBonusField(void); +extern void AnimateCatchArrowPaletteFlash(void); +extern void AnimateSapphireRouletteSlot(void); +extern void DrawBallPowerUpLights(void); +extern void AnimateBonusModeIndicators(void); +extern void AnimateBumperHitCounter(void); extern void RubyBoardProcess_0A_50848(void); //extern ? RubyBoardProcess_0B_50918(); extern void SapphireBoardProcess_0A_50AD4(void); @@ -721,28 +721,28 @@ extern void ResetSaveFile(void); // asm/rom_9BC.s -extern void sub_13FC(void); -//extern ? sub_1668(); -//extern ? sub_16A0(); -//extern ? sub_170C(); -//extern ? sub_1748(); -//extern ? sub_17D8(); -extern void sub_1828(void); -extern s16 sub_2414(const struct SpriteSet *const *spriteSets, u16 numSpriteSets, struct SpriteGroup *spriteGroups); +//extern void sub_13FC(void); // dead declaration — no definition or call sites +//extern ? Sio32EncodePacket(); +//extern ? Sio32ValidateResponse(); +//extern ? Sio32VerifyChecksum(); +//extern ? Sio32BuildCommand(); +//extern ? EncodeRumbleCommand(); +extern void Sio32TimeoutIntr(void); +extern s16 LoadSpriteSetsWithCpuCopy(const struct SpriteSet *const *spriteSets, u16 numSpriteSets, struct SpriteGroup *spriteGroups); //extern ? nullsub_16(); -extern void sub_24DC(void); -extern void sub_250C(void); -extern void sub_2538(void); -extern void sub_2568(void); +extern void ResetSerialIO(void); +extern void SetupDefaultInterrupts(void); +extern void ResetLinkState(void); +extern void ResetSerialAndInterrupts(void); // asm/start.s // asm/titlescreen.s -//extern ? sub_11640(); -extern void sub_1175C(void); -extern void sub_11968(void); -extern void sub_11B74(void); +//extern ? RenderTitlePressStartSprites(); +extern void RenderTitleMenuNoSavedGame(void); +extern void RenderTitleMenuSavedGame(void); +extern void DeleteSaveFile(void); #endif // GUARD_FUNCTIONS_H diff --git a/include/gbplayer.h b/include/gbplayer.h index 3f1c2da..8d1c622 100644 --- a/include/gbplayer.h +++ b/include/gbplayer.h @@ -4,8 +4,8 @@ #include "global.h" void InitGameBoyPlayer(void); -u32 sub_1668(u32 arg1, u32 arg2); -u32 sub_170C(void); -u32 sub_17D8(u32 arg1); +u32 Sio32EncodePacket(u32 arg1, u32 arg2); +u32 Sio32VerifyChecksum(void); +u32 EncodeRumbleCommand(u32 arg1); #endif // GUARD_GBPLAYER_H diff --git a/include/global.h b/include/global.h index e688d0b..fbcc890 100644 --- a/include/global.h +++ b/include/global.h @@ -92,14 +92,14 @@ struct BgOffsets // This struct holds data about the ball's velocity, position, etc. struct BallState { - /*0x00*/ s8 unk0; + /*0x00*/ s8 ballHidden; /*0x01*/ s8 oamPriority; /*0x02*/ u8 filler2[0x2]; - /*0x04*/ u16 unk4; - /*0x06*/ s16 unk6; - /*0x08*/ s16 unk8; - /*0x0A*/ u16 unkA; - /*0x0C*/ u16 unkC; + /*0x04*/ u16 spinAcceleration; + /*0x06*/ s16 spinSpeed; + /*0x08*/ s16 prevSpinSpeed; + /*0x0A*/ u16 spinAngle; + /*0x0C*/ u16 prevSpinAngle; /*0x0E*/ u16 scale; /*0x10*/ struct Vector16 positionQ0; /*0x14*/ struct Vector16 prevPositionsQ0[4]; @@ -117,402 +117,402 @@ struct FlipperState { /*0x00*/ s8 position; /*0x01*/ s8 prevPosition; - /*0x02*/ s8 unk2; - /*0x03*/ s8 unk3; - /*0x04*/ s8 unk4; - /*0x05*/ s8 unk5; + /*0x02*/ s8 collisionFrameIndex; + /*0x03*/ s8 movementDirection; + /*0x04*/ s8 bounceApplied; + /*0x05*/ s8 collisionMapFrame; /*0x06*/ s8 active; /*0x07*/ u8 stallTicks; - /*0x08*/ s8 unk8; + /*0x08*/ s8 ballSide; /*0x09*/ u8 filler9[0x3]; }; struct PinballGame { - /*0x000*/ u32 unk0; + /*0x000*/ u32 saveDataValid; /*0x004*/ u8 newButtonActions[5]; // e.g. player pressing the appropriate buttons to trigger the left flipper action, etc. /*0x009*/ u8 releasedButtonActions[5]; /*0x00E*/ u8 heldButtonActions[5]; - /*0x013*/ s8 unk13; // Current field state. In main fields seems to be related to the 3 Pokeballs that unlock bonus fields, in bonus fields acts as a field state - /*0x014*/ s8 unk14; - /*0x015*/ s8 unk15; - /*0x016*/ s8 unk16; - /*0x017*/ s8 unk17; - /*0x018*/ u16 unk18; - /*0x01A*/ s8 unk1A; + /*0x013*/ s8 boardState; // Indexes into gBoardStateInitFuncs/gBoardStateUpdateFuncs dispatch tables (9 states) + /*0x014*/ s8 nextBoardState; // Target state set by RequestBoardStateTransition + /*0x015*/ s8 prevBoardState; // Previous state saved during dispatcher teardown + /*0x016*/ s8 boardTransitionPhase; // 0=init, 1=update, 2=transition + /*0x017*/ s8 boardSubState; // Sub-state switch variable within each board state handler + /*0x018*/ u16 stageTimer; // Frame counter used across all board processes + /*0x01A*/ s8 flippersDisabled; /*0x01B*/ u8 unk1B; /*0x01C*/ bool8 scoreCounterAnimationEnabled; - /*0x01D*/ u8 unk1D; - /*0x01E*/ u8 unk1E; - /*0x01F*/ u8 unk1F; - /*0x020*/ u8 unk20; - /*0x021*/ u8 unk21; - /*0x022*/ s8 unk22; - /*0x023*/ u8 unk23; // Holds the value of some enum state - /*0x024*/ s8 unk24; - /*0x025*/ s8 unk25; - /*0x026*/ u16 unk26; - /*0x028*/ u16 unk28; + /*0x01D*/ u8 fadeSubState; + /*0x01E*/ u8 gravityStrengthIndex; + /*0x01F*/ u8 ballFrozenState; + /*0x020*/ u8 ballInLaunchChute; + /*0x021*/ u8 launcherCharging; + /*0x022*/ s8 collisionResponseType; + /*0x023*/ u8 collisionSurfaceType; // Holds the value of some enum state + /*0x024*/ s8 boardLayerDepth; + /*0x025*/ s8 ballCatchState; + /*0x026*/ u16 collisionCooldownTimer; + /*0x028*/ u16 modeAnimTimer; /*0x02A*/ u16 unk2A; - /*0x02C*/ int unk2C; + /*0x02C*/ int cameraLookAhead; /*0x030*/ s8 numLives; /*0x031*/ u8 ballSpeed; - /*0x032*/ s8 unk32; - /*0x033*/ s8 unk33; - /*0x034*/ s8 unk34; + /*0x032*/ s8 areaRouletteSlotIndex; + /*0x033*/ s8 areaRouletteNextSlot; + /*0x034*/ s8 areaRouletteFarSlot; /*0x035*/ s8 area; - /*0x036*/ s8 unk36; + /*0x036*/ s8 areaVisitCount; /*0x038*/ u32 scoreAddStepSize; //score to add every frame until scoreAddedInFrame score has been added to player's total /*0x03C*/ u32 scoreAddedInFrame; //score to add in a bonus field or mode (by completion or other ways, like hitting Duskulls) /*0x040*/ u32 scoreAdditionAccumulator; //score left to be counted up on the score registers /*0x044*/ u32 scoreLo; //counts score until 99_999_999, overflows into scoreHi /*0x048*/ u32 scoreHi; //counts score until 9_999, then freezes total score to 999_999_999_999! - /*0x04C*/ s16 unk4C; - /*0x04E*/ s16 unk4E; + /*0x04C*/ s16 cameraBaseX; + /*0x04E*/ s16 cameraBaseY; /*0x050*/ u8 filler50[0x4]; - /*0x054*/ u32 unk54; - /*0x058*/ u16 unk58; - /*0x05A*/ u16 unk5A; - /*0x05C*/ s16 unk5C; + /*0x054*/ u32 cameraYQ8; + /*0x058*/ u16 cameraXOffset; + /*0x05A*/ u16 cameraYOffset; + /*0x05C*/ s16 flipperLaunchPending; /*0x05E*/ u8 filler5E[0x2]; - /*0x060*/ struct Vector16 unk60; - /*0x064*/ s16 unk64; - /*0x066*/ u16 unk66; - /*0x068*/ s16 unk68; - /*0x06A*/ s16 unk6A; + /*0x060*/ struct Vector16 flipperLaunchVelocity; + /*0x064*/ s16 ballLaunchSpeed; + /*0x066*/ u16 activeBallIndex; + /*0x068*/ s16 cameraYViewport; + /*0x06A*/ s16 hudSpriteBaseY; /*0x06C*/ u16 timerBonus; //Additional time to be added to next timed event (Only for bonus fields or all timers?) - /*0x06E*/ s8 unk6E; - /*0x06F*/ s8 unk6F; - /*0x070*/ s8 unk70; - /*0x071*/ s8 unk71; - /*0x072*/ s8 unk72; - /*0x073*/ s8 unk73; - /*0x074*/ u16 unk74[4]; - /*0x07C*/ u16 unk7C; - /*0x07E*/ u16 unk7E; - /*0x080*/ s16 unk80; - /*0x082*/ s16 unk82; - /*0x084*/ struct Vector16 unk84[4]; + /*0x06E*/ s8 ballShadowTileIndex; + /*0x06F*/ s8 activePaletteIndex; + /*0x070*/ s8 paletteSwapActive; + /*0x071*/ s8 ballTrailEnabled; + /*0x072*/ s8 jirachiActivationFlags; + /*0x073*/ s8 jirachiWaypoint; + /*0x074*/ u16 jirachiTagTimer[4]; + /*0x07C*/ u16 jirachiWaypointTimer; + /*0x07E*/ u16 ballDeliveryActive; + /*0x080*/ s16 jirachiLogicX; + /*0x082*/ s16 jirachiLogicY; + /*0x084*/ struct Vector16 jirachiStarTagPos[4]; /*0x094*/ u8 filler94[0x28]; - /*0x0BC*/ s16 unkBC; - /*0x0BE*/ s16 unkBE; - /*0x0C0*/ s16 unkC0; - /*0x0C2*/ s16 unkC2; - /*0x0C4*/ u16 unkC4; - /*0x0C6*/ u16 unkC6; + /*0x0BC*/ s16 jirachiTargetX; + /*0x0BE*/ s16 jirachiTargetY; + /*0x0C0*/ s16 jirachiDisplayX; + /*0x0C2*/ s16 jirachiDisplayY; + /*0x0C4*/ u16 jirachiCenterX; + /*0x0C6*/ u16 jirachiCenterY; /*0x0C8*/ u8 fillerC8[0x2]; - /*0x0CA*/ s16 unkCA; - /*0x0CC*/ s16 unkCC; + /*0x0CA*/ s16 scrollEffectX; + /*0x0CC*/ s16 scrollEffectY; /*0x0CE*/ u16 unkCE; - /*0x0D0*/ struct Vector16 unkD0[5]; - /*0x0E4*/ u8 unkE4; - /*0x0E6*/ s16 unkE6; - /*0x0E8*/ s16 unkE8; - /*0x0EA*/ u16 unkEA; - /*0x0EC*/ u16 unkEC; - /*0x0EE*/ s16 unkEE; - /*0x0F0*/ u16 unkF0; - /*0x0F2*/ s8 unkF2; + /*0x0D0*/ struct Vector16 ballTrailPosition[5]; + /*0x0E4*/ u8 activePortraitType; + /*0x0E6*/ s16 cameraYAdjust; + /*0x0E8*/ s16 cameraYScrollTarget; + /*0x0EA*/ u16 bannerDelayTimer; + /*0x0EC*/ u16 bannerDisplayTimer; + /*0x0EE*/ s16 cameraYScrollSpeed; + /*0x0F0*/ u16 bannerSlideTimer; + /*0x0F2*/ s8 bannerGfxIndex; /*0x0F3*/ u8 unkF3; - /*0x0F4*/ s16 unkF4; - /*0x0F6*/ s16 unkF6; - /*0x0F8*/ s16 unkF8; - /*0x0FA*/ s8 unkFA; - /*0x0FB*/ s8 unkFB; - /*0x0FC*/ s16 unkFC; - /*0x0FE*/ s16 unkFE; - /*0x100*/ s32 unk100; - /*0x104*/ s32 unk104; - /*0x108*/ s16 unk108; - /*0x10A*/ s16 unk10A; - /*0x10C*/ s16 unk10C; - /*0x10E*/ s16 unk10E; - /*0x110*/ s32 unk110; - /*0x114*/ s32 unk114; - /*0x118*/ s8 unk118[4]; - /*0x11C*/ s8 unk11C[4]; - /*0x120*/ s8 unk120; - /*0x121*/ s8 unk121; - /*0x122*/ s8 unk122; - /*0x123*/ s8 unk123; - /*0x124*/ s8 unk124; - /*0x125*/ s8 unk125; - /*0x126*/ s8 unk126; - /*0x127*/ s8 unk127; - /*0x128*/ u8 unk128; - /*0x129*/ s8 unk129; - /*0x12A*/ u8 unk12A; + /*0x0F4*/ s16 bannerDisplayDuration; + /*0x0F6*/ s16 bannerSlidePosition; + /*0x0F8*/ s16 bannerSlideVelocity; + /*0x0FA*/ s8 bannerActive; + /*0x0FB*/ s8 bannerPreserveBallState; + /*0x0FC*/ s16 bonusSummarySlideY; + /*0x0FE*/ s16 ballSaverSlideY; + /*0x100*/ s32 ballSaverPosX; + /*0x104*/ s32 ballSaverPosY; + /*0x108*/ s16 ballSaverVelX; + /*0x10A*/ s16 ballSaverVelY; + /*0x10C*/ s16 ballSaverBallVelX; + /*0x10E*/ s16 ballSaverBallVelY; + /*0x110*/ s32 ballSaverBallPosX; + /*0x114*/ s32 ballSaverBallPosY; + /*0x118*/ s8 tiltShakeAmplitude[4]; + /*0x11C*/ s8 tiltShakeVelocity[4]; + /*0x120*/ s8 tiltXOffset; + /*0x121*/ s8 tiltYOffset; + /*0x122*/ s8 tiltTargetXOffset; + /*0x123*/ s8 tiltTargetYOffset; + /*0x124*/ s8 tiltInputCounterX; + /*0x125*/ s8 tiltInputCounterY; + /*0x126*/ s8 tiltLockoutTimer; + /*0x127*/ s8 tiltLockoutActive; + /*0x128*/ u8 boardShakeIntensity; + /*0x129*/ s8 boardShakeDirection; + /*0x12A*/ u8 boardShakeTimer; /*0x12B*/ s8 forceSpecialMons; // When on, force next catch mode species to be special mons /*0x12C*/ s8 forcePichuEgg; // When on, force next egg mode species to be Pichu /*0x12D*/ u8 filler12D; /*0x12E*/ s16 totalWeight; // Added weight of all possible mons in area /*0x130*/ s16 speciesWeights[25]; // Weight of each species /*0x162*/ s8 forcePondToWhiscash; - /*0x163*/ s8 unk163; - /*0x164*/ s8 unk164; - /*0x165*/ s8 unk165; - /*0x166*/ u16 unk166; - /*0x168*/ u16 unk168; - /*0x16A*/ s16 unk16A; + /*0x163*/ s8 sapphirePondFlag; + /*0x164*/ s8 pondAnimFrameIndex; + /*0x165*/ s8 sapphireEntityCollisionFlag; + /*0x166*/ u16 sapphireSpriteTimer; + /*0x168*/ u16 pondAnimSubTimer; + /*0x16A*/ s16 bannerSlideX; /*0x16C*/ s8 rubyPondState; /*0x16D*/ u8 filler16D[0x1]; - /*0x16E*/ s8 unk16E; + /*0x16E*/ s8 chinchouWaypointTarget; /*0x16F*/ s8 rubyPondContentsChanging; - /*0x170*/ s8 unk170[3]; + /*0x170*/ s8 pondBumperStates[3]; /*0x173*/ u8 unk173; /*0x174*/ u16 rubyPondChangeTimer; - /*0x176*/ u8 unk176; + /*0x176*/ u8 pondEntitySpriteFlag; /*0x177*/ u8 filler177[0x1]; /*0x178*/ struct Vector16 rubyBumperLogicPosition[3]; //chinchou or lotad /*0x184*/ struct Vector16 rubyBumperCollisionPosition[3]; //chinchou or lotad - /*0x190*/ s16 unk190; + /*0x190*/ s16 bumperOrbitRadius; /*0x192*/ u8 coins; - /*0x193*/ s8 unk193; - /*0x194*/ s8 unk194; - /*0x195*/ s8 unk195; - /*0x196*/ u16 unk196; - /*0x198*/ s16 unk198[2]; - /*0x19C*/ struct Vector16 unk19C[2]; - /*0x1A4*/ s8 unk1A4; - /*0x1A5*/ s8 unk1A5; - /*0x1A6*/ s8 unk1A6; - /*0x1A7*/ s8 unk1A7; - /*0x1A8*/ s8 unk1A8; - /*0x1A9*/ u8 unk1A9; - /*0x1AA*/ s8 unk1AA; - /*0x1AB*/ s8 unk1AB; - /*0x1AC*/ s8 unk1AC; - /*0x1AD*/ s8 unk1AD; - /*0x1AE*/ u8 unk1AE; - /*0x1AF*/ u8 unk1AF; - /*0x1B0*/ s8 unk1B0; + /*0x193*/ s8 coinsAwarded; + /*0x194*/ s8 coinRewardAmount; + /*0x195*/ s8 coinRewardFastPayout; + /*0x196*/ u16 coinRewardTimer; + /*0x198*/ s16 coinBounceTimer[2]; + /*0x19C*/ struct Vector16 coinSpritePos[2]; + /*0x1A4*/ s8 shopTransitionActive; + /*0x1A5*/ s8 evolutionShopActive; + /*0x1A6*/ s8 shopItemCursor; + /*0x1A7*/ s8 shopSelectedItemId; + /*0x1A8*/ s8 shopSlideDirection; + /*0x1A9*/ u8 shopBgAnimFrame; + /*0x1AA*/ s8 shopPikaSaverMaxed; + /*0x1AB*/ s8 shopDoorOpenLevel; + /*0x1AC*/ s8 shopSignFrame; + /*0x1AD*/ s8 shopSignPaletteIndex; + /*0x1AE*/ u8 shopOutcomeRepeatCount; + /*0x1AF*/ u8 shopBonusStageAlreadyBought; + /*0x1B0*/ s8 evoNameSlideOnly; /*0x1B1*/ u8 filler1B1[0x1]; - /*0x1B2*/ u16 unk1B2; - /*0x1B4*/ u16 unk1B4; - /*0x1B6*/ u16 unk1B6; - /*0x1B8*/ s16 unk1B8; - /*0x1BA*/ u16 unk1BA; - /*0x1BC*/ u16 unk1BC; - /*0x1BE*/ s8 unk1BE; + /*0x1B2*/ u16 evoFormAlternateTimer; + /*0x1B4*/ u16 shopAnimTimer; + /*0x1B6*/ u16 shopUISlideOffset; + /*0x1B8*/ s16 shopAnimSlideTimer; + /*0x1BA*/ u16 shopEntryTimer; + /*0x1BC*/ u16 randomSpriteVariantSeed; + /*0x1BE*/ s8 pikaRescuePath; /*0x1BF*/ u8 filler1BF[0x1]; - /*0x1C0*/ u16 unk1C0; - /*0x1C2*/ s8 unk1C2; + /*0x1C0*/ u16 pikaSaverTimer; + /*0x1C2*/ s8 outLaneSide; /*0x1C3*/ u8 filler1C3[0x1]; - /*0x1C4*/ u16 unk1C4; - /*0x1C6*/ s16 unk1C6; - /*0x1C8*/ s16 unk1C8; - /*0x1CA*/ s16 unk1CA; - /*0x1CC*/ s16 unk1CC; - /*0x1CE*/ u16 unk1CE; - /*0x1D0*/ u16 unk1D0; + /*0x1C4*/ u16 pikaKickbackTimer; + /*0x1C6*/ s16 pikaChargeTarget; + /*0x1C8*/ s16 pikaChargeProgress; + /*0x1CA*/ s16 catchCounterValue; + /*0x1CC*/ s16 prevCatchCounterValue; + /*0x1CE*/ u16 pikachuAnimTimer; + /*0x1D0*/ u16 catchCounterSlideTimer; /*0x1D2*/ u16 unk1D2; - /*0x1D4*/ u16 unk1D4; - /*0x1D6*/ u16 unk1D6; - /*0x1D8*/ u16 unk1D8; - /*0x1DA*/ u16 unk1DA; - /*0x1DC*/ u16 unk1DC; - /*0x1DE*/ u16 unk1DE; - /*0x1E0*/ u16 unk1E0; + /*0x1D4*/ u16 catchCounterXShift; + /*0x1D6*/ u16 catchCounterSlideOffsetY; + /*0x1D8*/ u16 catchCounterAnimState; + /*0x1DA*/ u16 catchCounterScaleY; + /*0x1DC*/ u16 catchCounterBlinkTimer; + /*0x1DE*/ u16 catchAnimProgress; + /*0x1E0*/ u16 catchAnimDuration; /*0x1E2*/ s8 outLanePikaPosition; //Pikachu coverage. 0= left lane, 1=right lane, 2 = both - /*0x1E3*/ s8 unk1E3[2]; - /*0x1E5*/ s8 unk1E5; - /*0x1E6*/ s8 unk1E6; + /*0x1E3*/ s8 catchHoleOccupied[2]; + /*0x1E5*/ s8 pikachuSpinFrame; + /*0x1E6*/ s8 pikachuSpinPrevFrame; /*0x1E7*/ u8 filler1E7[0x1]; - /*0x1E8*/ s16 unk1E8; - /*0x1EA*/ s16 unk1EA; - /*0x1EC*/ s8 unk1EC; - /*0x1ED*/ s8 unk1ED; - /*0x1EE*/ s8 unk1EE; + /*0x1E8*/ s16 eggBasePosX; + /*0x1EA*/ s16 eggBasePosY; + /*0x1EC*/ s8 eggAnimationPhase; + /*0x1ED*/ s8 eggAnimFrameIndex; + /*0x1EE*/ s8 prevEggAnimFrame; /*0x1EF*/ u8 unk1EF; - /*0x1F0*/ u16 unk1F0; + /*0x1F0*/ u16 eggFrameTimer; /*0x1F2*/ u8 unk1F2; /*0x1F3*/ u8 unk1F3; - /*0x1F4*/ s16 unk1F4; - /*0x1F6*/ s16 unk1F6; - /*0x1F8*/ s16 unk1F8; - /*0x1FA*/ s16 unk1FA; - /*0x1FC*/ s32 unk1FC; - /*0x200*/ s32 unk200; - /*0x204*/ s8 unk204; + /*0x1F4*/ s16 portraitOffsetX; + /*0x1F6*/ s16 portraitOffsetY; + /*0x1F8*/ s16 creatureVelX; + /*0x1FA*/ s16 creatureVelY; + /*0x1FC*/ s32 catchCreatureX; + /*0x200*/ s32 catchCreatureY; + /*0x204*/ s8 creatureWaypointIndex; /*0x205*/ u8 filler205[0x1]; - /*0x206*/ u16 unk206; - /*0x208*/ u16 unk208; - /*0x20A*/ s8 unk20A; - /*0x20B*/ s8 unk20B; - /*0x20C*/ s8 unk20C; + /*0x206*/ u16 waypointSubTimer; + /*0x208*/ u16 catchOverlayFrameTimer; + /*0x20A*/ s8 catchOverlayKeyframeIndex; + /*0x20B*/ s8 bonusTrapAnimFrame; + /*0x20C*/ s8 prevBonusTrapFrame; /*0x20D*/ u8 filler20D[0x1]; - /*0x20E*/ s16 unk20E; - /*0x210*/ u16 unk210; - /*0x212*/ u16 unk212[10]; - /*0x228*/ struct Vector16 unk228[10]; - /*0x250*/ u16 unk250; - /*0x252*/ u16 unk252; + /*0x20E*/ s16 nameSpacingOffset; + /*0x210*/ u16 nameRevealAnimFrame; + /*0x212*/ u16 nameRevealDelays[10]; + /*0x228*/ struct Vector16 nameSlideRow1[10]; + /*0x250*/ u16 evoModeShuffleRound; + /*0x252*/ u16 catchModeEventTimer; /*0x254*/ u8 filler254[0x4]; - /*0x258*/ s16 unk258; - /*0x25A*/ s16 unk25A; - /*0x25C*/ s8 unk25C; - /*0x25D*/ s8 unk25D; - /*0x25E*/ s8 unk25E; - /*0x25F*/ s8 unk25F; - /*0x260*/ s8 unk260[3]; - /*0x263*/ s8 unk263[8]; - /*0x26B*/ s8 unk26B; - /*0x26C*/ s8 unk26C; + /*0x258*/ s16 evoItemPosX; + /*0x25A*/ s16 evoItemPosY; + /*0x25C*/ s8 evoChainPosition; + /*0x25D*/ s8 evoChainMaxStage; + /*0x25E*/ s8 evoItemSlotIndex; + /*0x25F*/ s8 evoItemGfxIndex; + /*0x260*/ s8 evoShuffledSlots[3]; + /*0x263*/ s8 evoItemShufflePool[8]; + /*0x26B*/ s8 evoItemsCaught; + /*0x26C*/ s8 evoModeResetFlag; /*0x26D*/ u8 filler26D[0x1]; - /*0x26E*/ u16 unk26E; + /*0x26E*/ u16 evoItemAppearTimer; /*0x270*/ u8 evolvablePartySpecies[MAX_EVOLVABLE_PARTY_SIZE]; /*0x280*/ s8 evolvingPartyIndex; /*0x281*/ s8 evolvablePartySize; - /*0x282*/ s8 unk282; + /*0x282*/ s8 bonusReturnState; /*0x283*/ u8 numCompletedBonusStages; - /*0x284*/ s8 unk284; // Bonus Field to transition to? + /*0x284*/ s8 nextBonusField; // Bonus Field to transition to? /*0x285*/ u8 filler285[0x1]; - /*0x286*/ u16 unk286; - /*0x288*/ s16 unk288; - /*0x28A*/ s16 unk28A; + /*0x286*/ u16 oneUpAnimTimer; + /*0x288*/ s16 catchTargetX; + /*0x28A*/ s16 catchTargetY; /*0x28C*/ u8 filler28C[0x4]; - /*0x290*/ u32 unk290; - /*0x294*/ s8 unk294; + /*0x290*/ u32 globalAnimFrameCounter; + /*0x294*/ s8 boardModeType; /*0x295*/ u8 unk295; /*0x296*/ u16 eventTimer; //Timer for events (Only bonus fields or all events?) - /*0x298*/ u16 unk298; - /*0x29A*/ u16 unk29A; - /*0x29C*/ u16 unk29C; - /*0x29E*/ u8 unk29E; - /*0x29F*/ s8 unk29F; - /*0x2A0*/ u16 unk2A0; + /*0x298*/ u16 cutsceneTilemapColumn; + /*0x29A*/ u16 catchEmModeStartCount; + /*0x29C*/ u16 bgmFadeTimer; + /*0x29E*/ u8 boardCollisionConfigChanged; + /*0x29F*/ s8 rampPrizeType; + /*0x2A0*/ u16 rampPrizeRespawnTimer; /*0x2A2*/ s8 whiscashState; - /*0x2A3*/ s8 unk2A3; //Whiscash alternating invuln timer? + /*0x2A3*/ s8 whiscashInvulnerable; /*0x2A4*/ s8 shouldProcessWhiscash; /*0x2A5*/ s8 whiscashFrameIx; /*0x2A6*/ u16 whiscashStateTimer; /*0x2A8*/ u16 pondSwitchesSinceLastWhiscash; - /*0x2AA*/ u16 unk2AA; - /*0x2AC*/ s16 unk2AC; + /*0x2AA*/ u16 screenShakeX; + /*0x2AC*/ s16 screenShakeY; /*0x2AE*/ u8 filler2AE[0x2]; - /*0x2B0*/ u16 unk2B0; - /*0x2B2*/ s8 unk2B2; + /*0x2B0*/ u16 chikoritaFlashTimer; + /*0x2B2*/ s8 chikoritaFlashActive; /*0x2B3*/ u8 filler2B3[0x1]; - /*0x2B4*/ s16 unk2B4; - /*0x2B6*/ s16 unk2B6; - /*0x2B8*/ u16 unk2B8; - /*0x2BA*/ u16 unk2BA; - /*0x2BC*/ u16 unk2BC; - /*0x2BE*/ s8 unk2BE; - /*0x2C0*/ u16 unk2C0; - /*0x2C2*/ s8 unk2C2; - /*0x2C3*/ s8 unk2C3; - /*0x2C4*/ u16 unk2C4; - /*0x2C6*/ u16 unk2C6; - /*0x2C8*/ s16 unk2C8; - /*0x2CA*/ s16 unk2CA; - /*0x2CC*/ s16 unk2CC; - /*0x2CE*/ s16 unk2CE; - /*0x2D0*/ s8 unk2D0; + /*0x2B4*/ s16 chikoritaProjectileX; + /*0x2B6*/ s16 chikoritaProjectileY; + /*0x2B8*/ u16 chikoritaProjectileVelX; + /*0x2BA*/ u16 chikoritaProjectileUnused; + /*0x2BC*/ u16 chikoritaProjectileTimer; + /*0x2BE*/ s8 gulpinCurrentLevel; + /*0x2C0*/ u16 gulpinAnimFrameTimer; + /*0x2C2*/ s8 gulpinAnimFrameIndex; + /*0x2C3*/ s8 totodileDeliveryFrame; + /*0x2C4*/ u16 totodileDeliveryTimer; + /*0x2C6*/ u16 eggDropTimer; + /*0x2C8*/ s16 eggDeliveryX; + /*0x2CA*/ s16 eggDeliveryY; + /*0x2CC*/ s16 eggDeliveryVelX; + /*0x2CE*/ s16 eggDeliveryVelY; + /*0x2D0*/ s8 eggDeliveryState; /*0x2D1*/ u8 filler2D1[3]; - /*0x2D4*/ u16 unk2D4; - /*0x2D6*/ u16 unk2D6; - /*0x2D8*/ s8 unk2D8; - /*0x2D9*/ s8 unk2D9; - /*0x2DA*/ s8 unk2DA; + /*0x2D4*/ u16 cyndaquilCaveSpriteX; + /*0x2D6*/ u16 cyndaquilCaveSpriteY; + /*0x2D8*/ s8 cyndaquilCollisionEnabled; + /*0x2D9*/ s8 eggCaveReEntryFlag; + /*0x2DA*/ s8 eggCaveState; /*0x2DB*/ u8 filler2DB[0x3]; - /*0x2DE*/ u16 unk2DE; - /*0x2E0*/ u16 unk2E0; - /*0x2E2*/ s8 unk2E2; - /*0x2E3*/ s8 unk2E3[2]; - /*0x2E5*/ s8 unk2E5[2]; + /*0x2DE*/ u16 eggCaveLiftTimer; + /*0x2E0*/ u16 eggCaveExitDelayTimer; + /*0x2E2*/ s8 sideBumperHitFlag; + /*0x2E3*/ s8 sideBumperBounceCount[2]; + /*0x2E5*/ s8 sideBumperAnimPhase[2]; /*0x2E7*/ u8 filler2E7[0x1]; - /*0x2E8*/ u16 unk2E8[2]; - /*0x2EC*/ s16 unk2EC[2]; - /*0x2F0*/ u8 unk2F0; - /*0x2F1*/ u8 unk2F1; - /*0x2F2*/ u16 unk2F2; - /*0x2F4*/ s8 unk2F4; //Sharpedo/Wailmer Oam Ix - /*0x2F5*/ s8 unk2F5; //Sharpedo tile variant Ix - /*0x2F6*/ u16 unk2F6; - /*0x2F8*/ s8 unk2F8; - /*0x2F9*/ s8 unk2F9; - /*0x2FA*/ s8 unk2FA; - /*0x2FB*/ s8 unk2FB; - /*0x2FC*/ s8 unk2FC; - /*0x2FD*/ s8 unk2FD; - /*0x2FE*/ u16 unk2FE; - /*0x300*/ s8 unk300; - /*0x301*/ s8 unk301; - /*0x302*/ s8 unk302; + /*0x2E8*/ u16 sideBumperAnimTimer[2]; + /*0x2EC*/ s16 sideBumperShakeOffset[2]; + /*0x2F0*/ u8 shopDoorTargetFrame; + /*0x2F1*/ u8 shopDoorCurrentFrame; + /*0x2F2*/ u16 shopDoorAnimDelay; + /*0x2F4*/ s8 catchHoleAnimFrame; //Sharpedo/Wailmer Oam Ix + /*0x2F5*/ s8 catchHoleTileVariant; //Sharpedo tile variant Ix + /*0x2F6*/ u16 catchHolePauseTimer; + /*0x2F8*/ s8 ballPowerUpOverride; + /*0x2F9*/ s8 nuzleafPositionIndex; + /*0x2FA*/ s8 nuzleafHitFlag; + /*0x2FB*/ s8 nuzleafAnimState; + /*0x2FC*/ s8 nuzleafGfxTileIndex; + /*0x2FD*/ s8 nuzleafFrameIndex; + /*0x2FE*/ u16 nuzleafFrameTimer; + /*0x300*/ s8 rampGateState; + /*0x301*/ s8 rampGateHitFlag; + /*0x302*/ s8 rampPrizeVisibilityTimer; /*0x303*/ s8 unk303; - /*0x304*/ u16 unk304; - /*0x306*/ s8 unk306; - /*0x307*/ s8 unk307; + /*0x304*/ u16 rampGateAnimCounter; + /*0x306*/ s8 pelipperState; + /*0x307*/ s8 pelipperSwallowAnimIndex; /*0x308*/ u16 bumperHitsSinceReset; - /*0x30A*/ u16 unk30A; - /*0x30C*/ u16 unk30C; - /*0x30E*/ s16 unk30E; - /*0x310*/ s16 unk310; + /*0x30A*/ u16 pelipperSwallowSubTimer; + /*0x30C*/ u16 pelipperFrameTimer; + /*0x30E*/ s16 pelipperYBobOffset; + /*0x310*/ s16 pelipperSfxTimer; /*0x312*/ u8 filler312[0x2]; - /*0x314*/ s16 unk314; - /*0x316*/ s16 unk316; - /*0x318*/ s16 unk318; - /*0x31A*/ s16 unk31A; - /*0x31C*/ s16 unk31C; - /*0x31E*/ s16 unk31E; - /*0x320*/ s16 unk320; - /*0x322*/ s16 unk322; - /*0x324*/ s8 unk324; + /*0x314*/ s16 pelipperBallDropVelX; + /*0x316*/ s16 pelipperBallDropVelY; + /*0x318*/ s16 pelipperBallDropPosX; + /*0x31A*/ s16 pelipperBallDropPosY; + /*0x31C*/ s16 pelipperFlyVelX; + /*0x31E*/ s16 pelipperFlyVelY; + /*0x320*/ s16 pelipperPosX; + /*0x322*/ s16 pelipperPosY; + /*0x324*/ s8 basketBounceFrame; /*0x325*/ u8 filler325[0x1]; - /*0x326*/ u16 unk326; - /*0x328*/ s8 unk328; + /*0x326*/ u16 basketBounceTimer; + /*0x328*/ s8 seedotCollisionTrigger; /*0x329*/ u8 filler329[0x1]; - /*0x32A*/ u16 unk32A; - /*0x32C*/ s8 unk32C[3]; - /*0x32F*/ s8 unk32F[3]; - /*0x332*/ s8 unk332[3]; + /*0x32A*/ u16 seedotDecayTimer; + /*0x32C*/ s8 seedotState[3]; + /*0x32F*/ s8 seedotSpriteFrame[3]; + /*0x332*/ s8 seedotOamFramesetIndex[3]; /*0x335*/ u8 filler335[0x1]; - /*0x336*/ u16 unk336[3]; - /*0x33C*/ u16 unk33C[3]; - /*0x342*/ s8 unk342; - /*0x343*/ s8 unk343; - /*0x344*/ s8 unk344; - /*0x345*/ s8 unk345; - /*0x346*/ s8 unk346; + /*0x336*/ u16 seedotAnimTimer[3]; + /*0x33C*/ u16 seedotYOffset[3]; + /*0x342*/ s8 sapphireDiverterActive; + /*0x343*/ s8 holeCaptureReady; + /*0x344*/ s8 holeLetterNewHit; + /*0x345*/ s8 holeLetterCount; + /*0x346*/ s8 holeLetterSystemState; /*0x347*/ u8 filler347[0x1]; - /*0x348*/ u16 unk348; - /*0x34A*/ s8 unk34A; - /*0x34B*/ s8 unk34B[10]; - /*0x355*/ s8 unk355[4]; - /*0x359*/ s8 unk359[4]; + /*0x348*/ u16 holeAnimFrameCounter; + /*0x34A*/ s8 targetBumperHitCounter; + /*0x34B*/ s8 targetBumperAnimTimers[10]; + /*0x355*/ s8 splashEffectFrameIndex[4]; + /*0x359*/ s8 splashEffectPositionIndex[4]; /*0x35D*/ u8 filler35D[0x1]; - /*0x35E*/ u16 unk35E[4]; - /*0x366*/ s8 unk366; - /*0x367*/ s8 unk367; - /*0x368*/ u16 unk368; - /*0x36A*/ s8 unk36A[2]; - /*0x36C*/ s8 unk36C[2]; - /*0x36E*/ u16 unk36E[2]; - /*0x372*/ u16 unk372[2]; - /*0x376*/ u16 unk376; - /*0x378*/ s8 unk378; - /*0x379*/ s8 unk379; - /*0x37A*/ s8 unk37A; - /*0x37B*/ s8 unk37B; - /*0x37C*/ s8 unk37C; - /*0x37D*/ s8 unk37D; - /*0x37E*/ u16 unk37E; - /*0x380*/ u16 unk380; - /*0x382*/ s8 unk382; - /*0x383*/ s8 unk383; + /*0x35E*/ u16 splashEffectFrameTimer[4]; + /*0x366*/ s8 shopShockWallAnimState; + /*0x367*/ s8 eggHatchShockWallOverride; + /*0x368*/ u16 shopBumperHitTimer; + /*0x36A*/ s8 sapphireBumperState[2]; + /*0x36C*/ s8 sapphireBumperAnimKeyframe[2]; + /*0x36E*/ u16 sapphireBumperAnimSubTimer[2]; + /*0x372*/ u16 sapphireBumperHitFxTimer[2]; + /*0x376*/ u16 sapphireBumperLitCountdown; + /*0x378*/ s8 zigzagoonState; + /*0x379*/ s8 zigzagoonGfxFrame; + /*0x37A*/ s8 zigzagoonOamFrame; + /*0x37B*/ s8 zigzagoonFxFrame; + /*0x37C*/ s8 zigzagoonShockWallActive; + /*0x37D*/ s8 zigzagoonAnimKeyframeIndex; + /*0x37E*/ u16 sapphireBumperAnimFrame; + /*0x380*/ u16 sapphireBumperTimer; + /*0x382*/ s8 bossPhaseCounter; + /*0x383*/ s8 ballGrabbed; /*0x384*/ s8 legendaryHitsRequired; /*0x385*/ s8 bonusModeHitCount; /*0x386*/ s8 returnToMainBoardFlag; /*0x387*/ s8 boardEntityCollisionMode; - /*0x388*/ s8 unk388; - /*0x389*/ s8 unk389; - /*0x38A*/ s16 unk38A; - /*0x38C*/ s16 unk38C; - /*0x38E*/ s16 unk38E; - /*0x390*/ u16 unk390; - /*0x392*/ u16 unk392; - /*0x394*/ s16 unk394; + /*0x388*/ s8 ballRespawnState; + /*0x389*/ s8 legendaryFlashState; + /*0x38A*/ s16 rayquazaOrbAngle; + /*0x38C*/ s16 bossRenderOffsetY; + /*0x38E*/ s16 bossAttackTimer; + /*0x390*/ u16 bossRoarTimer; + /*0x392*/ u16 ballRespawnTimer; + /*0x394*/ s16 bannerSlideYOffset; /*0x396*/ s8 minionActiveCount; /*0x397*/ s8 minionSpriteVariant[3]; /*0x39A*/ u8 minionNextSpriteVariant[3]; @@ -528,480 +528,482 @@ struct PinballGame /*0x3C2*/ u8 filler3C2[0x2]; /*0x3C4*/ struct Vector16 minionLogicPosition[3]; /*0x3D0*/ struct Vector16 minionCollisionPosition[3]; - /*0x3DC*/ s8 unk3DC; - /*0x3DD*/ s8 unk3DD; - /*0x3DE*/ s8 unk3DE; - /*0x3DF*/ s8 unk3DF; - /*0x3E0*/ s8 unk3E0; - /*0x3E1*/ s8 unk3E1; - /*0x3E2*/ s16 unk3E2; - /*0x3E4*/ u16 unk3E4; - /*0x3E6*/ s16 unk3E6; - /*0x3E8*/ s16 unk3E8; - /*0x3EA*/ s16 unk3EA; - /*0x3EC*/ s16 unk3EC; - /*0x3EE*/ s16 unk3EE; - /*0x3F0*/ u16 unk3F0; - /*0x3F2*/ u16 unk3F2; - /*0x3F4*/ s8 unk3F4; - /*0x3F5*/ s8 unk3F5; - /*0x3F6*/ s8 unk3F6; - /*0x3F7*/ s8 unk3F7; - /*0x3F8*/ s8 unk3F8; + /*0x3DC*/ s8 bossEntityState; + /*0x3DD*/ s8 bossAttackPhase; + /*0x3DE*/ s8 kecleonFramesetBase; + /*0x3DF*/ s8 bossVulnerable; + /*0x3E0*/ s8 dusclopsWalkFootIndex; + /*0x3E1*/ s8 bossMovementPhase; + /*0x3E2*/ s16 bossFramesetIndex; + /*0x3E4*/ u16 bossFrameTimer; + /*0x3E6*/ s16 bossAnimLoopCount; + /*0x3E8*/ s16 bossPositionX; + /*0x3EA*/ s16 bossPositionY; + /*0x3EC*/ s16 bossVelocityX; + /*0x3EE*/ s16 bossVelocityY; + /*0x3F0*/ u16 bossCollisionX; + /*0x3F2*/ u16 bossCollisionY; + /*0x3F4*/ s8 kecleonTargetState; + /*0x3F5*/ s8 kecleonTargetFrameIndex; + /*0x3F6*/ s8 kecleonTargetColorMatch; + /*0x3F7*/ s8 kecleonTargetVisible; + /*0x3F8*/ s8 kecleonCollisionEnabled; /*0x3F9*/ u8 filler3F9[0x1]; - /*0x3FA*/ s16 unk3FA; - /*0x3FC*/ s16 unk3FC; + /*0x3FA*/ s16 kecleonTargetX; + /*0x3FC*/ s16 kecleonTargetY; /*0x3FE*/ u8 filler3FE[0x2]; - /*0x400*/ struct Vector16 unk400; - /*0x404*/ s8 unk404; - /*0x405*/ s8 unk405; - /*0x406*/ s8 unk406; + /*0x400*/ struct Vector16 kecleonCollisionPos; + /*0x404*/ s8 kecleonBoardHitState; + /*0x405*/ s8 kecleonHitFrameIndex; + /*0x406*/ s8 kecleonTargetActive; /*0x407*/ u8 filler407[0x1]; - /*0x408*/ u16 unk408; - /*0x40A*/ u16 unk40A; - /*0x40C*/ u16 unk40C; - /*0x40E*/ u16 unk40E; - /*0x410*/ s16 unk410; - /*0x412*/ s16 unk412; - /*0x414*/ struct Vector16 unk414; - /*0x418*/ struct Vector16 unk418; - /*0x41C*/ s8 unk41C[4]; - /*0x420*/ s8 unk420[10]; - /*0x42A*/ s8 unk42A[7]; + /*0x408*/ u16 kecleonAnimTimer; + /*0x40A*/ u16 kecleonCollisionX; + /*0x40C*/ u16 kecleonCollisionY; + /*0x40E*/ u16 kecleonFrameTimer; + /*0x410*/ s16 kecleonHitboxX; + /*0x412*/ s16 kecleonHitboxY; + /*0x414*/ struct Vector16 orbLogicPosition; + /*0x418*/ struct Vector16 orbCollisionPosition; + /*0x41C*/ s8 kecleonBerryLargeFlashTimer[4]; + /*0x420*/ s8 kecleonBerrySmallFlashTimer[10]; + /*0x42A*/ s8 kecleonHitSparkTimer[7]; /*0x431*/ u8 filler431[0x3]; - /*0x434*/ struct Vector16 unk434[3]; - /*0x440*/ s8 unk440; - /*0x441*/ s8 unk441[2]; - /*0x443*/ s8 unk443[2]; - /*0x445*/ s8 unk445; - /*0x446*/ s8 unk446; - /*0x447*/ s8 unk447; - /*0x448*/ s8 unk448; - /*0x449*/ s8 unk449; - /*0x44A*/ s8 unk44A; + /*0x434*/ struct Vector16 kecleonBerryHitPosition[3]; + /*0x440*/ s8 shockwaveAlreadyHit; + /*0x441*/ s8 orbEntityState[2]; + /*0x443*/ s8 orbTargetWaypointIndex[2]; + /*0x445*/ s8 whirlpoolTrapPhase; + /*0x446*/ s8 whirlpoolTrapAnimEndFrame; + /*0x447*/ s8 whirlpoolTrapNextPhase; + /*0x448*/ s8 whirlpoolTrapAnimFrame; + /*0x449*/ s8 whirlpoolTrapAnimLoopStart; + /*0x44A*/ s8 whirlpoolTrapLoopCount; /*0x44B*/ u8 filler44B[0x1]; - /*0x44C*/ u16 unk44C; - /*0x44E*/ s16 unk44E; - /*0x450*/ u16 unk450; - /*0x452*/ u16 unk452; - /*0x454*/ u16 unk454; - /*0x456*/ u16 unk456; - /*0x458*/ u16 unk458[2]; - /*0x45C*/ struct Vector16 unk45C[2]; - /*0x464*/ struct Vector16 unk464[2]; - /*0x46C*/ struct Vector16 unk46C[4]; - /*0x47C*/ s8 unk47C; - /*0x47D*/ s8 unk47D; - /*0x47E*/ s8 unk47E; - /*0x47F*/ s8 unk47F; - /*0x480*/ u16 unk480; - /*0x482*/ u16 unk482; - /*0x484*/ u16 unk484; - /*0x486*/ s16 unk486; - /*0x488*/ struct Vector16 unk488; - /*0x48C*/ s8 unk48C[4]; - /*0x490*/ s8 unk490[4]; - /*0x494*/ s8 unk494[4]; - /*0x498*/ s8 unk498[4]; - /*0x49C*/ s8 unk49C[4]; - /*0x4A0*/ s8 unk4A0[4]; - /*0x4A4*/ s8 unk4A4[4]; - /*0x4A8*/ s8 unk4A8[4]; - /*0x4AC*/ u16 unk4AC[4]; - /*0x4B4*/ struct Vector16 unk4B4[4]; - /*0x4C4*/ u16 unk4C4; - /*0x4C6*/ u16 unk4C6; - /*0x4C8*/ s8 unk4C8; - /*0x4C9*/ u8 unk4C9; - /*0x4CA*/ u16 unk4CA; - /*0x4CC*/ s8 unk4CC[3]; - /*0x4CF*/ s8 unk4CF[3]; - /*0x4D2*/ s8 unk4D2[3]; - /*0x4D5*/ s8 unk4D5[3]; - /*0x4D8*/ u16 unk4D8[3]; - /*0x4DE*/ s16 unk4DE[3]; - /*0x4E4*/ s16 unk4E4[3]; + /*0x44C*/ u16 kyogreBgAnimTimer; + /*0x44E*/ s16 whirlpoolTrapPauseTimer; + /*0x450*/ u16 kyogreWaveTimer; + /*0x452*/ u16 bossHitFlashTimer; + /*0x454*/ u16 whirlpoolTrapFrameTimer; + /*0x456*/ u16 shockwaveAnimTimer; + /*0x458*/ u16 orbAnimTimer[2]; + /*0x45C*/ struct Vector16 orbScreenPosition[2]; + /*0x464*/ struct Vector16 orbOrbitCenter[2]; + /*0x46C*/ struct Vector16 shockwaveQuadrantOffset[4]; + /*0x47C*/ s8 projectileAttackCount; + /*0x47D*/ s8 projectileDirection; + /*0x47E*/ s8 projectileAttackAnimTimer; + /*0x47F*/ s8 ballGrabShakeTimer; + /*0x480*/ u16 ballGrabFlashTimer; + /*0x482*/ u16 projectileFlightTimer; + /*0x484*/ u16 projectileAngle; + /*0x486*/ s16 ballGrabTimer; + /*0x488*/ struct Vector16 projectilePosition; + /*0x48C*/ s8 firePillarState[4]; + /*0x490*/ s8 firePillarAnimEndFrame[4]; + /*0x494*/ s8 firePillarNextState[4]; + /*0x498*/ s8 firePillarAnimFrame[4]; + /*0x49C*/ s8 firePillarAnimStartFrame[4]; + /*0x4A0*/ s8 firePillarAnimLoopCount[4]; + /*0x4A4*/ s8 firePillarHitTimer[4]; + /*0x4A8*/ s8 firePillarExtraHitCount[4]; + /*0x4AC*/ u16 firePillarFrameTimer[4]; + /*0x4B4*/ struct Vector16 firePillarCollisionPos[4]; + /*0x4C4*/ u16 firePillarSpawnSfxTimer; + /*0x4C6*/ u16 bossDropVelocity; + /*0x4C8*/ s8 impactShakeTimer; + /*0x4C9*/ u8 footstepShakePattern; + /*0x4CA*/ u16 footstepShakeTimer; + /*0x4CC*/ s8 boulderPositionIndex[3]; + /*0x4CF*/ s8 boulderState[3]; + /*0x4D2*/ s8 boulderSpriteFrame[3]; + /*0x4D5*/ s8 boulderHitFlag[3]; + /*0x4D8*/ u16 boulderAnimTimer[3]; + /*0x4DE*/ s16 boulderFallVelocity[3]; + /*0x4E4*/ s16 boulderFallHeight[3]; /*0x4EA*/ u8 filler4EA[0x2]; - /*0x4EC*/ struct Vector16 unk4EC[3]; - /*0x4F8*/ struct Vector16 unk4F8[3]; - /*0x504*/ u8 unk504; - /*0x505*/ s8 unk505; - /*0x506*/ s8 unk506; - /*0x507*/ s8 unk507; - /*0x508*/ s16 unk508; - /*0x50A*/ s16 unk50A; - /*0x50C*/ u16 unk50C; - /*0x50E*/ u16 unk50E; - /*0x510*/ u16 unk510; - /*0x512*/ u16 unk512; - /*0x514*/ u16 unk514; - /*0x516*/ u16 unk516; - /*0x518*/ s16 unk518; - /*0x51A*/ s16 unk51A; - /*0x51C*/ struct Vector16 unk51C; - /*0x520*/ struct Vector16 unk520; - /*0x524*/ struct Vector16 unk524; - /*0x528*/ struct Vector16 unk528; - /*0x52C*/ s8 unk52C[2]; - /*0x52E*/ s8 unk52E[2]; - /*0x530*/ s8 unk530[3]; - /*0x533*/ s8 unk533[3]; - /*0x536*/ s8 unk536[3]; + /*0x4EC*/ struct Vector16 boulderGroundPosition[3]; + /*0x4F8*/ struct Vector16 boulderCollisionPos[3]; + /*0x504*/ u8 windAttackCount; + /*0x505*/ s8 orbHitIndex; + /*0x506*/ s8 introSequencePhase; + /*0x507*/ s8 swoopAttackState; + /*0x508*/ s16 horizontalShakeTimer; + /*0x50A*/ s16 roarBrightnessFlashTimer; + /*0x50C*/ u16 bossInvulnTimer; + /*0x50E*/ u16 hitBurstAnimFrame; + /*0x510*/ u16 swoopAttackAnimFrame; + /*0x512*/ u16 bossSineAngle; + /*0x514*/ u16 windCloudSpawnTimer; + /*0x516*/ u16 introFrameCounter; + /*0x518*/ s16 bgScrollSpeed; + /*0x51A*/ s16 bossHeadScreenY; + /*0x51C*/ struct Vector16 swoopTargetPosition; + /*0x520*/ struct Vector16 orbHitPosition; + /*0x524*/ struct Vector16 windEntityPosition; + /*0x528*/ struct Vector16 windCloudPosition; + /*0x52C*/ s8 sphealKnockdownCount[2]; + /*0x52E*/ s8 sphealKnockdownDisplayCount[2]; + /*0x530*/ s8 knockdownTargetIndex[3]; + /*0x533*/ s8 knockdownBounceCount[3]; + /*0x536*/ s8 knockdownPhase[3]; /*0x539*/ u8 filler539[0x1]; - /*0x53A*/ u16 unk53A; - /*0x53C*/ u16 unk53C[3]; - /*0x542*/ u16 unk542; - /*0x544*/ u32 unk544; - /*0x548*/ s8 unk548[2]; + /*0x53A*/ u16 resultsAnimTimer; + /*0x53C*/ u16 knockdownStunTimer[3]; + /*0x542*/ u16 scoreCountdownTimer; + /*0x544*/ u32 totalBonusScore; + /*0x548*/ s8 minionHitFlashTimer[2]; /*0x54A*/ s8 unk54A; - /*0x54B*/ s8 unk54B[2]; - /*0x54D*/ s8 unk54D[2]; - /*0x54F*/ s8 unk54F[2]; - /*0x551*/ s8 unk551[2]; - /*0x553*/ s8 unk553[2]; - /*0x555*/ s8 unk555[2]; - /*0x557*/ s8 unk557[2]; - /*0x559*/ s8 unk559[2]; - /*0x55B*/ s8 unk55B[2]; - /*0x55D*/ s8 unk55D[2]; - /*0x55F*/ s8 unk55F[2]; + /*0x54B*/ s8 flyingEnemySinkSpeed[2]; + /*0x54D*/ s8 flyingEnemyHitCooldown[2]; + /*0x54F*/ s8 flyingEnemyCollisionType[2]; + /*0x551*/ s8 flyingEnemyDirection[2]; + /*0x553*/ s8 flyingEnemyState[2]; + /*0x555*/ s8 flyingEnemyPrevSpriteIndex[2]; + /*0x557*/ s8 flyingEnemySpawnVariant[2]; + /*0x559*/ s8 flyingEnemyPathIndex[2]; + /*0x55B*/ s8 flyingEnemyFramesetIndex[2]; + /*0x55D*/ s8 flyingEnemyOamXOffset[2]; + /*0x55F*/ s8 flyingEnemyOamYOffset[2]; /*0x561*/ u8 filler561[0x1]; - /*0x562*/ u16 unk562[2]; - /*0x566*/ s16 unk566[2]; - /*0x56A*/ s16 unk56A[2]; + /*0x562*/ u16 flyingEnemyAnimTimer[2]; + /*0x566*/ s16 flyingEnemyScreenY[2]; + /*0x56A*/ s16 flyingEnemyFlyTimer[2]; /*0x56E*/ u8 filler56E[0x2]; - /*0x570*/ struct Vector16 unk570[2]; - /*0x578*/ struct Vector16 unk578[2]; - /*0x580*/ struct Vector32 unk580[2]; + /*0x570*/ struct Vector16 flyingEnemyCollisionPos[2]; + /*0x578*/ struct Vector16 flyingEnemyVelocity[2]; + /*0x580*/ struct Vector32 flyingEnemyPositionQ8[2]; /*0x590*/ s8 unk590; - /*0x591*/ s8 unk591; - /*0x592*/ u16 unk592; + /*0x591*/ s8 deliveryAnimFrameIndex; + /*0x592*/ u16 deliveryAnimTimer; /*0x594*/ u16 unk594; /*0x596*/ u16 unk596; /*0x598*/ u16 currentSpecies; // Current catch/hatch mode species? Is it evo mode as well? - /*0x59A*/ u16 unk59A; + /*0x59A*/ u16 evoTargetSpecies; /*0x59C*/ u16 lastCatchSpecies; // Previous catch mode species? /*0x59E*/ u16 lastEggSpecies; // Previous hatch/evo mode species? - /*0x5A0*/ u16 unk5A0; - /*0x5A2*/ u16 unk5A2; - /*0x5A4*/ u8 unk5A4; - /*0x5A5*/ u8 unk5A5; - /*0x5A6*/ u16 unk5A6; - /*0x5A8*/ s8 unk5A8; - /*0x5A9*/ u8 unk5A9; - /*0x5AA*/ u16 unk5AA; - /*0x5AC*/ s32 unk5AC; - /*0x5B0*/ u16 unk5B0; - /*0x5B2*/ s8 unk5B2; + /*0x5A0*/ u16 preEvoSpecies; + /*0x5A2*/ u16 postEvoSpecies; + /*0x5A4*/ u8 captureState; + /*0x5A5*/ u8 creatureHitCount; + /*0x5A6*/ u16 captureSequenceFrame; + /*0x5A8*/ s8 captureSequenceTimer; + /*0x5A9*/ u8 captureFlashTimer; + /*0x5AA*/ u16 creatureHitCooldown; + /*0x5AC*/ s32 trapSpinRadius; + /*0x5B0*/ u16 trapAngleQ16; + /*0x5B2*/ s8 ballInLowerHalf; /*0x5B3*/ u8 filler5B3[0x6]; - /*0x5B9*/ s8 unk5B9[6]; + /*0x5B9*/ s8 tileParticleGravity[6]; /*0x5BF*/ u8 filler5BF[0x1]; - /*0x5C0*/ struct Vector16 unk5C0[6]; - /*0x5D8*/ struct Vector16 unk5D8[6]; + /*0x5C0*/ struct Vector16 tileParticlePos[6]; + /*0x5D8*/ struct Vector16 tileParticleVel[6]; /*0x5F0*/ u16 caughtMonCount; // Number of mons caught in this game - /*0x5F2*/ s8 unk5F2; - /*0x5F3*/ s8 unk5F3; - /*0x5F4*/ u16 unk5F4; + /*0x5F2*/ s8 jirachiCollisionEnabled; + /*0x5F3*/ s8 bonusTrapEnabled; + /*0x5F4*/ u16 collisionMapScrollY; /*0x5F6*/ s8 ballUpgradeType; - /*0x5F7*/ u8 unk5F7; + /*0x5F7*/ u8 ballUpgradeTimerFrozen; /*0x5F8*/ u16 ballUpgradeCounter; - /*0x5FA*/ s8 unk5FA; - /*0x5FB*/ s8 unk5FB; - /*0x5FC*/ s16 unk5FC; - /*0x5FE*/ s16 unk5FE; - /*0x600*/ u16 unk600; - /*0x602*/ s8 unk602; - /*0x603*/ s8 unk603; - /*0x604*/ u16 unk604; - /*0x606*/ u16 unk606; - /*0x608*/ u16 unk608; - /*0x60A*/ s8 unk60A; + /*0x5FA*/ s8 boardEntityActive; + /*0x5FB*/ s8 cameraScrollEnabled; + /*0x5FC*/ s16 cameraScrollOffset; + /*0x5FE*/ s16 cameraScrollTarget; + /*0x600*/ u16 mainBoardCountdownTimer; + /*0x602*/ s8 hatchRevealPhase; + /*0x603*/ s8 revealFramesetIndex; + /*0x604*/ u16 revealAnimFrameCounter; + /*0x606*/ u16 particleAnimTimer; + /*0x608*/ u16 travelAnimSubTimer; + /*0x60A*/ s8 travelAnimKeyframeIndex; /*0x60B*/ s8 unk60B; - /*0x60C*/ s16 unk60C; - /*0x60E*/ s16 unk60E; - /*0x610*/ u16 unk610; - /*0x612*/ u16 unk612; - /*0x614*/ s16 unk614; - /*0x616*/ u16 unk616; - /*0x618*/ u16 unk618; - /*0x61A*/ s16 unk61A; - /*0x61C*/ s8 unk61C; + /*0x60C*/ s16 travelPainterPosX; + /*0x60E*/ s16 travelPainterPosY; + /*0x610*/ u16 travelPainterVelX; + /*0x612*/ u16 travelPainterVelY; + /*0x614*/ s16 pikaSpinMomentum; + /*0x616*/ u16 pikaSpinCooldownTimer; + /*0x618*/ u16 pikaSpinFrameCounter; + /*0x61A*/ s16 pikaSpinPeriod; + /*0x61C*/ s8 entityOverlayCollisionState; /*0x61D*/ u8 filler61D; - /*0x61E*/ u16 unk61E; - /*0x620*/ struct Vector16 unk620; + /*0x61E*/ u16 catchOverlayTimer; + /*0x620*/ struct Vector16 catchBallStartPos; /*0x624*/ s8 bumperHitCountdown; // 2 when Hit, one frame of ignored collision, then ready to hit again /*0x625*/ s8 hatchTilesBumperAcknowledged; - /*0x626*/ s8 unk626; + /*0x626*/ s8 evoItemAnimFrame; /*0x627*/ u8 filler627[0x1]; - /*0x628*/ u16 unk628; - /*0x62A*/ u8 unk62A; - /*0x62B*/ u8 unk62B; - /*0x62C*/ u8 unk62C; - /*0x62D*/ u8 unk62D; - /*0x62E*/ u8 unk62E; - /*0x62F*/ u8 unk62F; - /*0x630*/ u32 unk630; - /*0x634*/ u32 unk634; - /*0x638*/ s8 unk638; - /*0x639*/ s8 unk639; - /*0x63A*/ u16 unk63A; - /*0x63C*/ s8 unk63C[3][20]; - /*0x678*/ s8 unk678[3][20]; - /*0x6B4*/ u32 unk6B4; - /*0x6B8*/ u32 unk6B8; - /*0x6BC*/ s8 unk6BC; - /*0x6BD*/ s8 unk6BD; - /*0x6BE*/ s8 unk6BE; + /*0x628*/ u16 evoItemAnimFrameTimer; + /*0x62A*/ u8 bonusCatchCount; + /*0x62B*/ u8 bonusMonCatchCount; + /*0x62C*/ u8 travelModeCompletionCount; + /*0x62D*/ u8 catchTriggerCompletionCount; + /*0x62E*/ u8 bonusPikaSaverCount; + /*0x62F*/ u8 bonusMultiplier; + /*0x630*/ u32 bonusSubtotal; + /*0x634*/ u32 bonusCategoryScore; + /*0x638*/ s8 bonusSummaryPhase; + /*0x639*/ s8 bonusSummaryComplete; + /*0x63A*/ u16 bonusSummaryTimer; + /*0x63C*/ s8 bonusTextRevealMask[3][20]; + /*0x678*/ s8 bonusTextContent[3][20]; + /*0x6B4*/ u32 bonusTotalScoreLo; + /*0x6B8*/ u32 bonusTotalScoreHi; + /*0x6BC*/ s8 travelRouletteSlotHitType; + /*0x6BD*/ s8 seedotCount; + /*0x6BE*/ s8 seedotExitSequenceActive; /*0x6BF*/ u8 filler6BF[0x1]; - /*0x6C0*/ u16 unk6C0; - /*0x6C2*/ u16 unk6C2; - /*0x6C4*/ s8 unk6C4; + /*0x6C0*/ u16 seedotExitSequenceTimer; + /*0x6C2*/ u16 seedotModeStartDelay; + /*0x6C4*/ s8 portraitDisplayState; /*0x6C5*/ s8 hatchTileRevealState; /*0x6C6*/ s8 hatchTilesBoardAcknowledged; /*0x6C7*/ s8 hatchSequentialTilesRevealed; - /*0x6C8*/ s8 unk6C8; - /*0x6C9*/ s8 unk6C9; + /*0x6C8*/ s8 hatchGridCellIndex; + /*0x6C9*/ s8 hatchTilesRemaining; /*0x6CA*/ u16 hatchSequentialTileRevealFrameAnimTimer; /*0x6CC*/ s8 hatchFrameId; - /*0x6CD*/ u8 unk6CD[6]; - /*0x6D3*/ u8 unk6D3[6]; - /*0x6D9*/ s8 unk6D9[2]; - /*0x6DB*/ u8 unk6DB; - /*0x6DC*/ u8 unk6DC; - /*0x6DD*/ s8 unk6DD; - /*0x6DE*/ u16 unk6DE; - /*0x6E0*/ s16 unk6E0; + /*0x6CD*/ u8 hatchTileShufflePool[6]; + /*0x6D3*/ u8 hatchTilePalette[6]; + /*0x6D9*/ s8 rouletteAreaIndex[2]; + /*0x6DB*/ u8 creatureOamPriority; + /*0x6DC*/ u8 rouletteOutcomeId; + /*0x6DD*/ s8 shopPurchaseConfirmed; + /*0x6DE*/ u16 outcomeFrameCounter; + /*0x6E0*/ s16 rouletteSubOffset; /*0x6E2*/ u8 filler6E2[0x2]; - /*0x6E4*/ struct Vector16 unk6E4; - /*0x6E8*/ s8 unk6E8; - /*0x6E9*/ s8 unk6E9; - /*0x6EA*/ s8 unk6EA; - /*0x6EB*/ s8 unk6EB; - /*0x6EC*/ s8 unk6EC[2]; - /*0x6EE*/ u16 unk6EE; - /*0x6F0*/ u16 unk6F0; - /*0x6F2*/ u16 unk6F2; - /*0x6F4*/ u16 unk6F4; - /*0x6F6*/ u16 unk6F6; - /*0x6F8*/ u16 unk6F8[6]; - /*0x704*/ u16 unk704; + /*0x6E4*/ struct Vector16 rouletteBasePos; + /*0x6E8*/ s8 rouletteStopRequested; + /*0x6E9*/ s8 rouletteLevel; + /*0x6EA*/ s8 rouletteSlotCount; + /*0x6EB*/ s8 rouletteSlotCursor; + /*0x6EC*/ s8 modeOutcomeValues[2]; + /*0x6EE*/ u16 allHolesLitDelayTimer; + /*0x6F0*/ u16 rouletteFrameIndex; + /*0x6F2*/ u16 rouletteRotationPeriod; + /*0x6F4*/ u16 rouletteSpinSpeed; + /*0x6F6*/ u16 rouletteInitialSpeed; + /*0x6F8*/ u16 rouletteSlotValues[6]; + /*0x704*/ u16 roulettePortraitId; /*0x706*/ u8 filler706[0x2]; - /*0x708*/ u32 unk708; - /*0x70C*/ u16 unk70C; - /*0x70E*/ s8 unk70E; + /*0x708*/ u32 portraitCycleFrame; + /*0x70C*/ u16 hudAnimFrameCounter; + /*0x70E*/ s8 progressLevel; // Becomes bonusMultiplier at end-of-ball; displayed on the blue bonus sign /*0x70F*/ s8 unk70F; /*0x710*/ s8 holeIndicators[4]; // 'HOLE' light indicators in Ruby/Sapphire field - /*0x714*/ s8 unk714; - /*0x715*/ u8 unk715; - /*0x716*/ u8 unk716; - /*0x717*/ u8 unk717; + /*0x714*/ s8 allHolesLit; + /*0x715*/ u8 allHolesLitBlinkTimer; + /*0x716*/ u8 slingshotHitAnimTimer; + /*0x717*/ u8 slingshotSideIndex; /*0x718*/ s8 ballPowerUpLight[3]; - /*0x71B*/ s8 unk71B; - /*0x71C*/ u8 unk71C; - /*0x71D*/ s8 unk71D[3]; - /*0x720*/ u8 unk720; - /*0x721*/ s8 unk721; - /*0x722*/ s8 unk722; - /*0x723*/ s8 unk723; - /*0x724*/ u16 unk724; - /*0x726*/ s8 unk726; + /*0x71B*/ s8 ballPowerUpAnimActive; + /*0x71C*/ u8 ballShadowTimer; + /*0x71D*/ s8 catchLights[3]; + /*0x720*/ u8 evoBlinkTimer; + /*0x721*/ s8 evoCatchLightSlot1; + /*0x722*/ s8 evoCatchLightSlot2; + /*0x723*/ s8 evoItemCount; + /*0x724*/ u16 modeTimeRemaining; + /*0x726*/ s8 modeTimerDisplayIndex; /*0x727*/ u8 filler727[0x1]; - /*0x728*/ s8 unk728; - /*0x729*/ s8 unk729; - /*0x72A*/ s8 unk72A; - /*0x72B*/ s8 unk72B; - /*0x72C*/ u16 unk72C; - /*0x72E*/ s8 unk72E; - /*0x72F*/ s8 unk72F; - /*0x730*/ s8 unk730; - /*0x731*/ s8 unk731; - /*0x732*/ s8 unk732; + /*0x728*/ s8 catchArrowPaletteActive; + /*0x729*/ s8 evoArrowPaletteActive; + /*0x72A*/ s8 rouletteSlotActive; + /*0x72B*/ s8 coinRewardLevel; + /*0x72C*/ u16 coinRewardLevelTimer; + /*0x72E*/ s8 evoArrowProgress; + /*0x72F*/ s8 catchArrowProgress; + /*0x730*/ s8 trapAnimState; + /*0x731*/ s8 catchProgressFlashing; + /*0x732*/ s8 ballCollisionZone; /*0x733*/ u8 filler733[0x1]; - /*0x734*/ s16 unk734; - /*0x736*/ s8 unk736[3]; - /*0x739*/ s8 unk739[3]; - /*0x73C*/ u8 unk73C; // TODO: unknown type + /*0x734*/ s16 hudBlinkPhase; + /*0x736*/ s8 travelArrowTiles[3]; + /*0x739*/ s8 prevTravelArrowTiles[3]; + /*0x73C*/ u8 arrowProgressPreserved; // TODO: unknown type /*0x73D*/ s8 catchModeArrows; // Affects which encounter table is used per area /*0x73E*/ u8 filler73E[0x2]; - /*0x740*/ u8 unk740; + /*0x740*/ u8 debugMenuSelection; /*0x741*/ u8 filler741[0x3]; - /*0x744*/ u8 unk744[2]; - /*0x746*/ u8 unk746; - /*0x747*/ u8 unk747[2]; - /*0x749*/ u8 unk749[2]; + /*0x744*/ u8 pikaSaverTileIndex[2]; + /*0x746*/ u8 cyndaquilFrame; + /*0x747*/ u8 portraitRenderMode[2]; + /*0x749*/ u8 portraitGfxIndex[2]; /*0x74B*/ u8 filler74B[0x1]; - /*0x74C*/ volatile u8 unk74C[2][OBJ_PLTT_SIZE]; - /*0xB4C*/ volatile u8 unkB4C[2][BG_PLTT_SIZE]; - /*0xF4C*/ struct SongHeader *unkF4C; + /*0x74C*/ volatile u8 savedObjPalette[2][OBJ_PLTT_SIZE]; + /*0xB4C*/ volatile u8 savedBgPalette[2][BG_PLTT_SIZE]; + /*0xF4C*/ struct SongHeader *savedBgmSongHeader; /*0xF50*/ u8 fillerF50[0x8]; /*0xF58*/ struct BgOffsets bgOffsets0; /*0xF5C*/ struct BgOffsets bgOffsets1; /*0xF60*/ struct BgOffsets bgOffsets2; /*0xF64*/ struct BgOffsets bgOffsets3; - /*0xF68*/ u16 unkF68[2][100]; + /*0xF68*/ u16 savedSpriteAvailability[2][100]; /*0x10F8*/u8 eReaderBonuses[NUM_EREADER_CARDS]; - /*0x10FD*/u8 field; - /*0x10FE*/u8 unk10FE; - /*0x10FF*/u8 unk10FF; - /*0x1100*/u8 unk1100; - /*0x1101*/u8 unk1101; - /*0x1102*/u8 unk1102; - /*0x1103*/u8 unk1103; - /*0x1104*/s8 unk1104; //Pause Menu Pointer index + /*0x10FD*/u8 savedField; + /*0x10FE*/u8 savedTempField; + /*0x10FF*/u8 savedIsBonusField; + /*0x1100*/u8 startButtonDisabled; + /*0x1101*/u8 savedModeChangeFlags; + /*0x1102*/u8 savedDebugMenuCursorIndex; + /*0x1103*/u8 savedPendingModeChangeType; + /*0x1104*/s8 pauseMenuCursorIndex; //Pause Menu Pointer index /*0x1105*/u8 filler1105[0x1]; - /*0x1106*/volatile u16 unk1106; - /*0x1108*/volatile u16 unk1108; - /*0x110A*/volatile u16 unk110A; - /*0x110C*/u16 unk110C; - /*0x110E*/u16 unk110E; - /*0x1110*/volatile u16 unk1110; - /*0x1112*/volatile u16 unk1112; - /*0x1114*/volatile u16 unk1114; - /*0x1116*/u16 unk1116; - /*0x1118*/u16 unk1118; - /*0x111A*/u16 unk111A[OBJ_PLTT_SIZE / 0x20][0x10]; + // Values applied by the pause process (set when pausing) + /*0x1106*/volatile u16 pauseBlendControl; + /*0x1108*/volatile u16 pauseBlendAlpha; + /*0x110A*/volatile u16 pauseBlendBrightness; + /*0x110C*/u16 pauseScoreOverlayActive; + /*0x110E*/u16 pauseVCount; + // Values preserved from before pause (restored when unpausing) + /*0x1110*/volatile u16 savedBlendControl; + /*0x1112*/volatile u16 savedBlendAlpha; + /*0x1114*/volatile u16 savedBlendBrightness; + /*0x1116*/u16 savedScoreOverlayActive; + /*0x1118*/u16 savedVCount; + /*0x111A*/u16 pauseObjPalette[OBJ_PLTT_SIZE / 0x20][0x10]; /*0x131A*/u8 filler131A[0x2]; - /*0x131C*/u32 unk131C; //Time since paused - /*0x1320*/s16 unk1320; - /*0x1322*/s16 unk1322; - /*0x1324*/s16 unk1324; - /*0x1326*/s16 unk1326; - /*0x1328*/u16 unk1328; + /*0x131C*/u32 pauseAnimTimer; //Time since paused + /*0x1320*/s16 savedAnimationTimer; + /*0x1322*/s16 savedModeChangeDelayTimer; + /*0x1324*/s16 savedShopPanelActive; + /*0x1326*/s16 savedShopPanelSlideOffset; + /*0x1328*/u16 ballLaunchTimer; // Countdown to activate secondaryBall (multiball) /*0x132A*/u8 filler132A[0x2]; /*0x132C*/struct BallState *ball; - /*0x1330*/struct BallState *unk1330; - /*0x1334*/struct BallState unk1334[2]; + /*0x1330*/struct BallState *secondaryBall; + /*0x1334*/struct BallState ballStates[2]; /*0x13BC*/struct FlipperState flipper[2]; - /*0x13D4*/u16 unk13D4[10]; - /*0x13E8*/struct Vector16 unk13E8[10]; + /*0x13D4*/u16 nameRevealDelaysRow2[10]; + /*0x13E8*/struct Vector16 nameSlideRow2[10]; } /* size=0x1410 */; -struct Unk02031520_unk10 +struct ReplayInputFrame { - /*0x0*/ u8 unk0; - /*0x1*/ u8 unk1; - /*0x2*/ u8 unk2; + /*0x0*/ u8 newButtonBits; + /*0x1*/ u8 releasedButtonBits; + /*0x2*/ u8 heldButtonBits; }; -struct Unk02031520_unk14 +struct FieldBoardLayout { /* These field offsets are intentionally kept as relative to - struct Unk02031520 to make decompiling easier. This struct - is basically always accessed relative to struct Unk02031520. */ - /*0x14*/ s16 unk14; - /*0x16*/ s16 unk16; - /*0x18*/ s16 unk18; - /*0x1A*/ s16 unk1A; - /*0x1C*/ u16 unk1C; + struct BoardConfig to make decompiling easier. This struct + is basically always accessed relative to struct BoardConfig. */ + /*0x14*/ s16 cameraStartX; + /*0x16*/ s16 cameraStartY; + /*0x18*/ s16 cameraScrollMaxY; + /*0x1A*/ s16 cameraScrollMinY; + /*0x1C*/ u16 flipperBaseY; /*0x1E*/ u8 filler1E[0x2]; - /*0x20*/ s16 unk20; - /*0x22*/ s16 unk22; - /*0x24*/ s16 unk24; - /*0x26*/ s16 unk26; - /*0x28*/ s16 unk28; - /*0x2A*/ s16 unk2A; - /*0x2C*/ u8 *unk2C[3]; - /*0x38*/ const s16 *unk38[4]; - /*0x48*/ const u16 *unk48[4]; - /*0x58*/ const u8 *unk58[4]; + /*0x20*/ s16 flipperOriginY; + /*0x22*/ s16 leftFlipperOriginX; + /*0x24*/ s16 rightFlipperOriginX; + /*0x26*/ s16 ballSpawnX; + /*0x28*/ s16 ballSpawnY; + /*0x2A*/ s16 ballDrainY; + /*0x2C*/ u8 *objPaletteSets[3]; + /*0x38*/ const s16 *collisionTileMap[4]; + /*0x48*/ const u16 *collisionAngleMap[4]; + /*0x58*/ const u8 *collisionTypeMap[4]; }; -struct Unk02031520 +struct BoardConfig { /*0x00*/ u8 eReaderBonuses[NUM_EREADER_CARDS]; /*0x05*/ bool8 rumbleEnabled; - /*0x06*/ s16 unk6; - /*0x08*/ s16 unk8; + /*0x06*/ s16 idleDemoDuration; + /*0x08*/ s16 caughtSpeciesCount; /*0x0A*/ u8 fillerA[0x2]; - /*0x0C*/ struct PinballGame *unkC; - /*0x10*/ struct Unk02031520_unk10 *unk10; - /*0x14*/ struct Unk02031520_unk14 unk14; - /*0x68*/ const u16 *unk68; + /*0x0C*/ struct PinballGame *pinballGame; + /*0x10*/ struct ReplayInputFrame *replayInputData; + /*0x14*/ struct FieldBoardLayout fieldLayout; + /*0x68*/ const u16 *flipperCollisionData; }; -struct Unk086ACE8C +struct FlipperLineSegment { - u16 unk0; - u16 unk2; - u16 unk4; - u16 unk6; + u16 x1; + u16 y1; + u16 x2; + u16 y2; }; extern struct PinballGame *gCurrentPinballGame; extern const StateFunc gIdlePinballGameStateFuncs[]; -extern u32 gUnknown_02031510; -extern struct Unk02031520 gUnknown_02031520; -extern u8 gUnknown_02031590[]; -extern u16 gUnknown_08137B3C[][6][16]; -extern u16 gUnknown_08137D40[]; -extern const u8 gUnknown_08137E14[][0x20]; +extern u32 gReplayFrameCounter; +extern struct BoardConfig gBoardConfig; +extern u8 gKecleonSpriteOrderMap[]; +extern u16 gFieldPaletteVariants[][6][16]; +extern u16 gDusclopsBossAnimFrames[]; +extern const u8 gBallPalettes[][0x20]; extern const u8 gDusclopsBonusClear_Gfx[]; -extern struct Unk02031520_unk10 gUnknown_081450F4; -extern struct Unk02031520_unk10 gUnknown_08148934; -extern struct Unk02031520_unk10 gUnknown_0814C174; -extern struct Unk02031520_unk10 gUnknown_0814F9B4; -extern struct PinballGame gUnknown_081531F4; -extern struct PinballGame gUnknown_08154618; -extern struct PinballGame gUnknown_08155A3C; -extern struct PinballGame gUnknown_08156E60; -extern s32 gUnknown_081B36A4[64]; -extern s32 gUnknown_082EE0E0[0x3E0]; -extern u16 gUnknown_0832D604[0x1600]; -extern u16 gUnknown_08330204[0x1600]; -extern u16 gUnknown_08340B58[]; -extern u16 gUnknown_083499D8[]; -extern u16 gUnknown_0834DBD8[]; -extern u16 gUnknown_083579C8[0x3800]; -extern u16 gUnknown_0835E9C8[0x2A80]; -extern const u16 gUnknown_08391A4C[0x1000]; -extern const u16 gUnknown_08393A4C[0x1000]; -extern u8 gUnknown_083FE44C[][0x200]; +extern struct ReplayInputFrame gIdleBoardConfig0; +extern struct ReplayInputFrame gIdleBoardConfig2; +extern struct ReplayInputFrame gIdleBoardConfig3; +extern struct ReplayInputFrame gIdleBoardConfig1; +extern struct PinballGame gIdleBoardGameState0; +extern struct PinballGame gIdleBoardGameState2; +extern struct PinballGame gIdleBoardGameState3; +extern struct PinballGame gIdleBoardGameState1; +extern s32 gBonusStageObjPal[64]; +extern s32 gDusclopsAnimPalettes[0x3E0]; +extern u16 gKecleonTongueCollisionMap[0x1600]; +extern u16 gKecleonBodyCollisionMap[0x1600]; +extern u16 gKyogreForm1CollisionMap[]; +extern u16 gKyogreForm2CollisionMap[]; +extern u16 gKyogreForm3CollisionMap[]; +extern u16 gGroudonBodyCollisionMap[0x3800]; +extern u16 gGroudonProjectileCollisionMap[0x2A80]; +extern const u16 gSphealCrackedIceCollisionMap[0x1000]; +extern const u16 gSphealFrozenIceCollisionMap[0x1000]; +extern u8 gFlipperTileGraphics[][0x200]; extern u16 gDusclopsBoardDusclopsAppearFx_Gfx[]; extern u16 gDusclopsBoardDusclops_Gfx[]; extern u8 gDusclopsBoardDusclopsBallGrabSwirl_Gfx[]; extern struct SongHeader se_unk_8b; extern struct SongHeader se_dusclops_appear; -extern const s16 gUnknown_086ACDF4[9]; //Possibly only 4, with a gap? -extern const s16 gUnknown_086ACDF4[9]; +extern const s16 gBounceBackForceMagnitudes[9]; //Possibly only 4, with a gap? +extern const s16 gBounceBackForceMagnitudes[9]; typedef s16 (*Unk86ACE0C)(struct Vector16*, u16*); extern Unk86ACE0C BoardCollisionFuncts_086ACE0C[8]; -extern struct Vector16 gUnknown_086ACE60[4]; -extern struct Unk086ACE8C gUnknown_086ACE8C[13]; -extern u16 gUnknown_086ACEF4[2]; -extern const u8 *const gUnknown_086ACEF8[]; -extern const u8 *const gUnknown_086ACF18[]; +extern struct Vector16 gWallEscapeOffsets[4]; +extern struct FlipperLineSegment gFlipperLineGeometry[13]; +extern u16 gFlipperBaseXPositions[2]; +extern const u8 *const gModeBannerTilemaps[]; +extern const u8 *const gModeBannerPalettes[]; extern s16 DuclopsFramesetData[][2]; -extern u16 gUnknown_086B4568[14][45]; -extern const u8 gUnknown_084F61EC[]; -extern u8 gUnknown_081B45A4[]; -extern const u16 gUnknown_086AD2DE[]; -extern u8 gUnknown_081B8984[]; -extern u8 gUnknown_081B8784[]; -extern u8 gUnknown_081B4584[]; -extern u8 gUnknown_081B4784[]; -extern const u16 gUnknown_086AD000[][4]; -extern u32 gUnknown_086AD50C[]; +extern u16 gModeBannerOamAttributes[14][45]; +extern const u8 gPokemonNameDisplayGfx[]; +extern u8 gShopNameDisplay_Pals[]; +extern const u16 gShopCursorToItemMap[]; +extern u8 gShopModeBG_Gfx[]; +extern u8 gShopEvoUI_Pals[]; +extern u8 gEvoNameDisplay_Pals[]; +extern u8 gEvoModeBG_Gfx[]; +extern const u16 gShopItemData[][4]; +extern u32 gShopEvoBGAnimFrames[]; -extern const u16 gUnknown_08252B10[]; -extern const u16 gUnknown_083071D4[]; +extern const u16 gSharedBumperCollisionMap[]; +extern const u16 gDusclopsBodyCollisionMap[]; extern u8 *gMonPortraitGroupGfx[]; extern u8 *gMonPortraitGroupPals[]; -extern u8 gUnknown_02030760[]; -extern u8 gUnknown_02031060[]; -extern const u8 gUnknown_08395A4C[]; -extern const u8 gUnknown_08397E6C[]; -extern const u8 gUnknown_083A8EEC[][0x300]; -extern const u8 gUnknown_083BB16C[][0x80]; -extern const u8 gUnknown_083BD36C[][0x200]; +extern u8 gCatchSpriteGfxBuffer[]; +extern u8 gCatchSpriteFlashGfx[]; +extern const u8 gPikaSaverFullCoverageGfx[]; +extern const u8 gPikaSaverPartialCoverageGfx[]; +extern const u8 gPortraitAnimFrameGraphics[][0x300]; +extern const u8 gBallRotationTileGraphics[][0x80]; +extern const u8 gBallShadowTileGraphics[][0x200]; extern const u8 gMainStageBonusTrap_Gfx[][0x300]; -extern const u8 gUnknown_0848D68C[][0x300]; -extern const u8 gUnknown_084C00EC[][0x80]; -extern const u8 gUnknown_084C07EC[]; +extern const u8 gPortraitGenericGraphics[][0x300]; +extern const u8 gCatchCounterDigitTilesGfx[][0x80]; +extern const u8 gPikaSaverTilesGfx[]; extern const u8 gMainBoardPikaSpinner_Gfx[][0x120]; -extern const u8 gUnknown_084FD18C[][0x200]; -extern const u8 *gUnknown_086AD49C[]; -extern const u16 gUnknown_086AD2EE[][4]; +extern const u8 gEggFrameTilesGfx[][0x200]; +extern const u8 *gEvoItemTilesGfxPtrs[]; +extern const u16 gEggAnimationFrameData[][4]; #endif // GUARD_GLOBAL_H \ No newline at end of file diff --git a/include/link.h b/include/link.h index d84d1b2..7d7bef1 100644 --- a/include/link.h +++ b/include/link.h @@ -35,14 +35,14 @@ struct Link u16 handshakeBuffer[4]; // 0x4 bool8 receivedNothing; // 0xC u8 serialIntrCounter; // 0xD - u8 unkE; // 0xE + u8 sendPaused; // 0xE u8 fillerF; // 0xF bool8 handshakeAsMaster; // 0x10 - u8 unk11; + u8 checksumError; u8 hardwareError; - u8 unk13; + u8 invalidIdError; u8 queueFull; // 0x14 - u8 unk15; + u8 lagError; u16 checksum; // 0x16 u8 sendCmdIndex; // 0x18 u8 recvCmdIndex; // 0x19 @@ -53,7 +53,7 @@ struct Link }; // extern function declarations -extern void sub_19B4(void); +extern void InitLinkHardware(void); extern void DisableSerial(void); extern s32 LinkMain1(u8 *shouldAdvanceLinkState, s16 *sendCmd, u16 (*recvCmds)[MAX_LINK_PLAYERS]); extern void Timer3Init(void); @@ -62,7 +62,7 @@ extern void SerialCB(void); // extern IWRAM variable declarations // extern EWRAM variable declarations -extern u8 gUnknown_0202BEC8; +extern u8 gLinkAdvanceState; extern struct Link gLink; // extern const definitions diff --git a/include/main.h b/include/main.h index 21e0248..996232e 100644 --- a/include/main.h +++ b/include/main.h @@ -30,7 +30,7 @@ struct SaveData /*0x158*/ struct HighScoreEntry highScores[2][NUM_HIGH_SCORES]; /*0x2D8*/ s8 signature[10]; u16 checksum; - u32 unk2E4; + u32 saveChangeCounter; }; struct Main @@ -39,12 +39,12 @@ struct Main /*0x02*/ u8 mainState; /*0x03*/ u8 subState; /*0x04*/ u8 selectedField; - /*0x05*/ u8 unk5; // tempField (?) - /*0x06*/ u8 unk6; // isBonusField (?) + /*0x05*/ u8 tempField; + /*0x06*/ u8 isBonusField; /*0x07*/ s8 eReaderBonuses[NUM_EREADER_CARDS]; - /*0x0C*/ u8 unkC; - /*0x0D*/ u8 unkD; - /*0x0E*/ u8 unkE; + /*0x0C*/ u8 sramError; + /*0x0D*/ u8 continueFromSave; + /*0x0E*/ u8 gameExitState; // UnkF hold a Bitmask for the following: // x1 mode start banner Evo/Catch/Travel, @@ -57,10 +57,10 @@ struct Main // x80 Bonus Score banner // Most cause a board state transition once conditions are met. /*0x0F*/ u8 modeChangeFlags; - /*0x10*/ u8 unk10; - /*0x11*/ u8 unk11; - /*0x12*/ u16 unk12; - /*0x14*/ u16 unk14; + /*0x10*/ u8 debugMenuCursorIndex; + /*0x11*/ u8 pendingModeChangeType; + /*0x12*/ u16 animationTimer; + /*0x14*/ u16 modeChangeDelayTimer; /*0x16*/ u16 dispcntBackup; /*0x18*/ u16 newKeys; /*0x1A*/ u16 releasedKeys; @@ -69,23 +69,23 @@ struct Main /*0x20*/ u16 unk20; /*0x22*/ u8 filler22[0x4]; /*0x26*/ s16 vCount; - /*0x28*/ s16 unk28; - /*0x2A*/ s16 unk2A; - /*0x2C*/ s16 unk2C; - /*0x2E*/ s16 unk2E; - /*0x30*/ u16 unk30; + /*0x28*/ s16 shopPanelActive; + /*0x2A*/ s16 shopPanelSlideOffset; + /*0x2C*/ s16 scoreOverlayActive; + /*0x2E*/ s16 kecleonOverlayHeight; + /*0x30*/ u16 idleDemoVariant; /*0x32*/ u8 filler32[0x4]; - /*0x36*/ u8 unk36; + /*0x36*/ u8 blendEnabled; /*0x38*/ volatile u16 blendControl; /*0x3A*/ volatile u16 blendAlpha; /*0x3C*/ volatile u16 blendBrightness; // may be a sub-struct. possibly for saved game? /*0x40*/ int hasSavedGame; - /*0x44*/ struct SpriteGroup **unk44; + /*0x44*/ struct SpriteGroup **fieldSpriteGroups; /*0x48*/ int rngValue; /*0x4C*/ u32 systemFrameCount; /*0x50*/ u32 fieldFrameCount; - /*0x54*/ u32 unk54; + /*0x54*/ u32 idleFrameCounter; /*0x58*/ u32 finalScoreLo; /*0x5C*/ u32 finalScoreHi; @@ -128,40 +128,40 @@ extern u32 IntrMain_Buffer[0x200]; extern u32 IntrMain[]; extern IntrFunc *gVBlankIntrFuncPtr; extern IntrFunc *gVCountIntrFuncPtr; -extern int gUnknown_02019BE4; -extern int gUnknown_02019BE8; -extern int gUnknown_02019BEC; -extern u32 gUnknown_02019BF0; -extern int gUnknown_02019BF4; -extern int gUnknown_02019BF8; -extern int gUnknown_02019BFC; -extern int gUnknown_02019C00; -extern int gUnknown_02019C04; -extern int gUnknown_02019C08; +extern int gRumbleLoopCounter; +extern int gRumbleFrameCounter; +extern int gRumbleMotorMode; +extern u32 gSio32ReconnectTimer; +extern int gSio32SerialEnabled; +extern int gRumblePatternIndex; +extern int gRumblePatternPosition; +extern int gRumbleCommand; +extern int gRumblePaused; +extern int gRumbleSpeedMode; extern int gGameBoyPlayerEnabled; -extern u8 gUnknown_02019C10; +extern u8 gSio32CommState; extern u8 gGbPlayerTilemapBuffer[]; #define INTR_COUNT 14 extern IntrFunc gIntrTable[14]; extern void (*gMainCallback)(void); -extern void (*gUnknown_0200FBA0)(void); -extern void (*gUnknown_02017BD0)(void); -extern void (*gUnknown_02017BD4)(void); +extern void (*gVCountIntrFuncShadow)(void); +extern void (*gVBlankIntrFuncShadow)(void); +extern void (*gMainCallbackShadow)(void); extern StateFunc gMainFuncs[]; extern struct OamData gOamBuffer[128]; -void sub_024C(void); -void sub_02B4(void); +void FadeInScreen(void); +void FadeOutScreen(void); void ClearGraphicsMemory(void); -void sub_0518(void); +void ClearBgTilemapAndOffsets(void); void ClearSprites(void); u32 Random(void); void VBlankIntr(void); void VCountIntr(void); void SerialIntr(void); void Timer3Intr(void); -void sub_0CBC(void); -void sub_0D10(void); +void EnableVBlankInterrupts(void); +void DisableVBlankInterrupts(void); void MainLoopIter(void); void DefaultMainCallback(void); diff --git a/include/titlescreen.h b/include/titlescreen.h index 68c20fc..53749c1 100644 --- a/include/titlescreen.h +++ b/include/titlescreen.h @@ -4,19 +4,19 @@ struct TitlescreenStruct { /*0x00*/ s8 menuCursorIndex; - /*0x02*/ s16 unk2; + /*0x02*/ s16 animPhase; /*0x04*/ s16 animTimer; - /*0x06*/ s8 unk6; - /*0x07*/ u8 unk7; - /*0x08*/ s8 unk8; + /*0x06*/ s8 menuAction; + /*0x07*/ u8 hasSavedGame; + /*0x08*/ s8 pressStartAnimFrame; /*0x09*/ s8 pressStartAndFlippersVisible; - /*0x0A*/ s8 unkA; // Menu options sprite ID? + /*0x0A*/ s8 menuSpriteGroupId; /*0x0B*/ s8 menuVisible; - /*0x0C*/ s8 unkC; - /*0x0D*/ s8 unkD; - /*0x0E*/ s8 unkE; - /*0x0F*/ s8 unkF; - /*0x10*/ s8 unk10; // Delete save window sprite ID? + /*0x0C*/ s8 cursorSpriteGroupId; + /*0x0D*/ s8 cursorArrowVisible; + /*0x0E*/ s8 selectorSpriteGroupId; + /*0x0F*/ s8 selectorVisible; + /*0x10*/ s8 deleteSaveGroupId; /*0x11*/ s8 deleteSaveWindowVisible; /*0x12*/ s16 idleFadeoutCounter; /*0x14*/ s16 idleFramesCounter; @@ -24,15 +24,15 @@ struct TitlescreenStruct extern struct TitlescreenStruct gTitlescreen; extern s8 gAutoDisplayTitlescreenMenu; -extern u8 gUnknown_202BE24; -extern u16 gUnknown_0202C588; +extern u8 gTitleReturnedFromMenu; +extern u16 gHighScoreEntrySource; extern s8 gEraseSaveDataAccessStep; extern s8 gEraseSaveDataAccessCounter; extern s8 gEReaderAccessStep; extern s8 gEReaderAccessCounter; -extern s8 gUnknown_020028A4; -extern s8 gUnknown_020028A5; -extern const u8 *gUnknown_0201C190[]; -extern const u8 *gUnknown_0202BE00[]; +extern s8 gTitleTransitionActive; +extern s8 gTitleRestartDebounce; +extern const u8 *gTitleNoSaveMenuSpriteSets[]; +extern const u8 *gTitleSavedMenuSpriteSets[]; #endif // GUARD_TITLESCREEN_H diff --git a/include/types.h b/include/types.h index 455c11f..52dd156 100644 --- a/include/types.h +++ b/include/types.h @@ -72,13 +72,13 @@ struct VectorU32 }; struct PokemonSpecies { - /*0x00*/ u16 mainSeriesIndexNumber; // Refers to the generation three internal index number; e.g. Treecko is 0x115 (decimal 227). + /*0x00*/ u16 speciesIdRS; // Refers to the generation three internal index number; e.g. Treecko is 0x115 (decimal 227). /*0x02*/ u8 nameJapanese[5]; /*0x07*/ u8 name[10]; // Space-padded ASCII /*0x11*/ u8 catchIndex; // Non-zero for all catch pokemon other than Treecko, zero for Treecko and all non-catch pokemon /*0x12*/ u8 eggIndex; // Non-zero for all hatch pokemon other than Wurmple, zero for Wurmple and all non-hatch pokemon - /*0x13*/ u8 unk13; // Something egg related; only hatch pokemon have this set to 1, but not all do, and there is no other pattern - // unk13 list: Azurill, Skitty, Zubat, Plusle, Minun, Igglybuff, Shuppet, Chimecho, Pichu, Natu + /*0x13*/ u8 specialEggFlag; // Something egg related; only hatch pokemon have this set to 1, but not all do, and there is no other pattern + // specialEggFlag list: Azurill, Skitty, Zubat, Plusle, Minun, Igglybuff, Shuppet, Chimecho, Pichu, Natu /*0x14*/ s8 evolutionMethod; // Exp, Stone, etc. /*0x15*/ u8 evolutionTarget; // Uses the standard index numbers; e.g. Treecko is 0x00 (SPECIES_TREECKO) }; diff --git a/include/variables.h b/include/variables.h index 94d3ac1..a2075c5 100644 --- a/include/variables.h +++ b/include/variables.h @@ -17,12 +17,12 @@ // Place all external variable declarations in this file -extern struct {u16 unk0[5]; u16 unkA[5];} gUnknown_086A6B14; -extern s8 gUnknown_02002850; -extern struct ToneData gUnknown_08532D6C[]; -extern struct ToneData gUnknown_08533360[]; -extern struct ToneData gUnknown_08533960[]; -extern struct ToneData gUnknown_08533F60[]; +extern struct {u16 rubyTransitionFrames[5]; u16 sapphireTransitionFrames[5];} gFieldTransitionAnimData; +extern s8 gFieldSelectSoftReset; +extern struct ToneData gPokemonCryToneBank0[]; +extern struct ToneData gPokemonCryToneBank1[]; +extern struct ToneData gPokemonCryToneBank2[]; +extern struct ToneData gPokemonCryToneBank3[]; extern u16 gOptionsBGMList[]; /*** @@ -47,19 +47,19 @@ extern u16 gOptionsBGMList[]; * 2 : unknown * 3 : px wide ***/ -extern u16 gUnknown_086BB910[11][4]; -extern struct {u8 unk0; s16 unk2;} gUnknown_086BB9B4[]; +extern u16 gButtonInfoTable[11][4]; +extern struct {u8 tileId; s16 frameDuration;} gButtonAnimData[]; extern u16 gOptionsSEList[]; -extern u8 gUnknown_02031AF0[][10]; +extern u8 gCustomButtonConfigs[][10]; extern u8 gDefaultButtonConfigs[4][10]; extern void (*const gOptionsStateFuncs[])(void); extern u32 gHighScoreNameEntry[HIGH_SCORE_NAME_LENGTH]; -extern u16 gUnknown_0201A520[3][BG_PLTT_SIZE]; -extern u16 gUnknown_03000000[]; -extern u8 gUnknown_03001800[3][0x800]; +extern u16 gPaletteFadeBuffers[3][BG_PLTT_SIZE]; +extern u16 gTempGfxBuffer[]; +extern u8 gEReaderTextTileBuffer[3][0x800]; //extern ? gOamBuffer; //extern ? IntrMain_Buffer; -extern u16 gUnknown_03005C00[]; +extern u16 gBG0TilemapBuffer[]; //extern ? SoundMainRAM_Buffer; extern u16 sGbPlayerCurKeys; extern u16 sGbPlayerPrevKeys; @@ -72,17 +72,17 @@ struct RfuSIO32Id { u16 lastId; // size 0xC }; -extern struct RfuSIO32Id gUnknown_02002808; -extern u32 gUnknown_02002818; -extern u32 gUnknown_0200281C; +extern struct RfuSIO32Id gSio32Id; +extern u32 gSio32ReceivedData; +extern u32 gSio32RemoteDeviceId; //extern ? gTitlescreen; //extern ? gEraseSaveDataAccessStep; //extern ? gEraseSaveDataAccessCounter; //extern ? gEReaderAccessStep; //extern ? gEReaderAccessCounter; -//extern ? gUnknown_020028A4; -//extern ? gUnknown_020028A5; -//extern ? gUnknown_02002958; +//extern ? gTitleTransitionActive; +//extern ? gTitleRestartDebounce; +//extern ? gDpcmSampleBuffer; //extern ? gIntrTable; //extern ? gMain; //extern ? gVBlankIntrFuncPtr; @@ -92,26 +92,26 @@ extern u32 gUnknown_0200281C; //extern ? gUnknown_02017BD4; //extern ? gUnknown_02017BE0; //extern ? gVCountIntrFuncPtr; -//extern ? gUnknown_02019BE4; -//extern ? gUnknown_02019BE8; -//extern ? gUnknown_02019BEC; -//extern ? gUnknown_02019BF0; -//extern ? gUnknown_02019BF4; -//extern ? gUnknown_02019BF8; -//extern ? gUnknown_02019BFC; -//extern ? gUnknown_02019C00; -//extern ? gUnknown_02019C04; -//extern ? gUnknown_02019C08; +//extern ? gRumbleLoopCounter; +//extern ? gRumbleFrameCounter; +//extern ? gRumbleMotorMode; +//extern ? gSio32ReconnectTimer; +//extern ? gSio32SerialEnabled; +//extern ? gRumblePatternIndex; +//extern ? gRumblePatternPosition; +//extern ? gRumbleCommand; +//extern ? gRumblePaused; +//extern ? gRumbleSpeedMode; //extern ? gGameBoyPlayerEnabled; -//extern ? gUnknown_02019C10; +//extern ? gSio32CommState; extern s8 gAutoDisplayTitlescreenMenu; -//extern ? gUnknown_0201C190; -//extern ? gUnknown_0202BE00; -//extern ? gUnknown_202BE24; -extern s16 gUnknown_0202BEEC; -//extern ? gUnknown_0202C588; +//extern ? gTitleNoSaveMenuSpriteSets; +//extern ? gTitleSavedMenuSpriteSets; +//extern ? gTitleReturnedFromMenu; +extern s16 gEReaderReceivedCardId; +//extern ? gHighScoreEntrySource; //extern ? gCurrentPinballGame; -//extern ? gUnknown_02031520; +//extern ? gBoardConfig; //extern ? gSoundInfo; //extern ? gPokemonCryMusicPlayers; //extern ? gMPlayJumpTable; @@ -149,22 +149,22 @@ extern const IntrFunc gIntrTableTemplate[14]; //extern ? gUnknown_086A4BFC; //extern ? gUnknown_086A4C18; //extern ? gUnknown_086A4C2C; -extern const int *gUnknown_086A4C44[]; -extern const u16 gUnknown_086A4CF8[][3*0x18]; -extern const s8 gUnknown_086A7FA4[3]; //Sized based on call using gUnknown_02002858.unk1C + data -extern const s8 gUnknown_086A7FA8[3]; //Same as above -extern const s16 gUnknown_086A964C[11]; -extern const s8 gUnknown_086A9662[4]; -extern const s8 gUnknown_086A9666[6][2]; -extern const s8 gUnknown_086A9672[9][2]; -extern const u16 gUnknown_086A96A4[4]; -extern const u16 gUnknown_086A96D4[]; -extern const struct SpriteSet *const gUnknown_086A96E4[]; -extern const u8 *const gUnknown_086A96F8[7]; -extern const u8 *const gUnknown_086A9714[]; -extern const s8 gUnknown_086A9748[]; -extern const u8 *const gUnknown_086A975C[7]; -extern const u8 *const gUnknown_086A9778[]; +extern const int *gRumblePatterns[]; +extern const u16 gEReaderTextGlyphTable[][3*0x18]; +extern const s8 gScorePaletteAnimOffsets[3]; //Sized based on call using gHighScoreScreenState.paletteAnimPhase + data +extern const s8 gScorePaletteResetOffsets[3]; //Same as above +extern const s16 gTitleMenuStateTable[11]; +extern const s8 gTitlePressStartAnimDurations[4]; +extern const s8 gTitleMenuSlideInAnimData[6][2]; +extern const s8 gTitleMenuSlideOutAnimData[9][2]; +extern const u16 gTitleNoSaveMenuActions[4]; +extern const u16 gTitleSavedMenuActions[]; +extern const struct SpriteSet *const gTitlePressStartSpriteSets[]; +extern const u8 *const gTitleNoSaveDefaultSprites[7]; +extern const u8 *const gTitleNoSaveAnimSprites[]; +extern const s8 gTitleMenuRetractDurations[]; +extern const u8 *const gTitleSavedDefaultSprites[7]; +extern const u8 *const gTitleSavedAnimSprites[]; extern const s16 gEReaderAccessButtonSequence[]; //extern ? gMonPortraitGroupPals; //extern ? gMonPortraitGroupGfx; @@ -174,13 +174,13 @@ extern const s16 gEReaderAccessButtonSequence[]; //extern ? gMonHatchSpriteGroup3_Gfx; //extern ? gMonHatchSpriteGroup4_Gfx; extern const u8 gMonHatchSpriteGroup5_Gfx[]; -extern struct VectorU16 gUnknown_086A6B28[]; -extern const struct SpriteSet *const gUnknown_086A6AD4[]; -extern const struct SpriteSet *const gUnknown_086A7DA8[]; -extern const struct SpriteSet *const gUnknown_086A7DB0[]; -extern const struct SpriteSet *const gUnknown_086A7DD4[]; +extern struct VectorU16 gFieldSelectBallSpeedPositions[]; +extern const struct SpriteSet *const gFieldSelectSpriteSets[]; +extern const struct SpriteSet *const gNameEntryCursorSpriteSets[]; +extern const struct SpriteSet *const gHighScoreScreenSpriteSets[]; +extern const struct SpriteSet *const gCompletionBannerSpriteSets[]; extern void (*gFieldSelectStateFuncs[])(void); -extern u8 gUnknown_080A2400[]; +extern u8 gFieldSelectBG0Tilemap[]; extern u8 gFieldSelectWindow_Gfx[]; //extern ? gUnknown_080A4000; extern u8 gFieldSelectFrameShadowTilemap[]; @@ -233,25 +233,25 @@ extern const u16 gTitlescreenSprites_Pals[]; //extern ? gMonPortraitsGroup11_Pals; //extern ? gMonPortraitsGroup12_Pals; //extern ? gMonPortraitsGroup13_Pals; -extern struct VectorU16 gUnknown_086A9684[4]; -extern struct VectorU16 gUnknown_086A9694[4]; -extern struct VectorU16 gUnknown_086A96AC[5]; -extern struct VectorU16 gUnknown_086A96C0[5]; -extern const struct VectorU32 gUnknown_080797F0[2][8]; +extern struct VectorU16 gTitleNoSaveArrowPositions[4]; +extern struct VectorU16 gTitleNoSaveSelectorPositions[4]; +extern struct VectorU16 gTitleSavedArrowPositions[5]; +extern struct VectorU16 gTitleSavedSelectorPositions[5]; +extern const struct VectorU32 gHighScoreNamePixelPositions[2][8]; -struct Unk086ACD50 +struct CollisionCorrectionEntry { - s8 unk0; - s8 unk1; - u16 unk2; + s8 correctionX; + s8 correctionY; + u16 angleThreshold; }; -extern struct Unk086ACD50 gUnknown_086ACD50[8]; -extern struct Unk086ACD50 gUnknown_086ACD74[3]; +extern struct CollisionCorrectionEntry gWallCollisionPositionCorrection[8]; +extern struct CollisionCorrectionEntry gFlipperCollisionAngleCorrection[3]; -extern u16 gUnknown_02019C40[]; +extern u16 gPokedexVramBuffer[]; extern s16 gPokedexNumOwned; extern s16 gPokedexSelectedMon; -extern s8 gUnknown_0202ADE4; +extern s8 gLinkExchangeResult; extern s16 gPokedexNumSeen; extern s16 gPokedexListPosition; @@ -265,27 +265,27 @@ extern u8 gPokedexBackground_Pals[]; extern u8 gPokedexSprites_Pals[]; extern u8 gPokedexSprites_Gfx[]; -extern s16 gUnknown_0201A448; -extern s16 gUnknown_0202BF00; -extern s16 gUnknown_0202A57C; -extern s16 gUnknown_0201A4F0; -extern s16 gUnknown_0202BE20; +extern s16 gPokedexAnimatedIconFrame; +extern s16 gPokedexAnimatedIconTimer; +extern s16 gPokedexCursorOffset; +extern s16 gPokedexCursorBlinkOffset; +extern s16 gPokedexBlinkTimer; extern s16 gPokedexScrollWaitFrames; -extern s8 gUnknown_02019C24; -extern s16 gUnknown_0202BF0C; -extern s16 gUnknown_0201A440; -extern s16 gUnknown_0202BEF4; -extern s16 gUnknown_0202A588; -extern s16 gUnknown_0202A55C; -extern s16 gUnknown_0202A568[2]; -extern s16 gUnknown_0202C5E8; -extern s16 gUnknown_0202A558; -extern s8 gUnknown_0202BEE0; -extern s8 gUnknown_0202BF04; -extern s16 gUnknown_0202BF14; -extern s8 gUnknown_0202C590; -extern s16 gUnknown_0201B120; -extern s8 gUnknown_0202BEC4; +extern s8 gPokedexScrollActive; +extern s16 gPokedexSpriteAnimFrame; +extern s16 gPokedexSpriteAnimTimer; +extern s16 gPokedexPageIndicatorTimer; +extern s16 gPokedexShowAnimSprite; +extern s16 gPokedexShowPortrait; +extern s16 gPokedexShowCatchHatch[2]; +extern s16 gPokedexDetailFrameCount; +extern s16 gPokedexInfoWindowSlideStep; +extern s8 gPokedexButtonPromptFrame; +extern s8 gPokedexShowButtonPrompt; +extern s16 gPokedexSpriteCategory; +extern s8 gPokedexShowLinkCableIcon; +extern s16 gPokedexLinkStateTimer; +extern s8 gPokedexShowPopupWindow; /**** * Yellow confirmation/info window mode @@ -295,135 +295,135 @@ extern s8 gUnknown_0202BEC4; * 3= transfer complete? * 4= delete save data confirmation * ****/ -extern s8 Pokedex_PopupTypeIx; +extern s8 gPokedexPopupTypeIndex; extern s8 gPokedex_EraseSaveDataAccessCounter; extern s8 gPokedex_EraseSaveDataAccessStep; -extern s8 gUnknown_0202C794; -extern s8 gUnknown_0201C1B4; -extern s8 gUnknown_0202C5AC; -extern s8 gUnknown_02019C28; +extern s8 gPokedexDescriptionPage; +extern s8 gPokedexShowPageIndicator; +extern s8 gPokedexPageIndicatorBlink; +extern s8 gPokedexSpriteIndexBase; extern s16 gPokedexFlags[]; extern s16 gPokedexFlagExchangeBuffer[]; extern s16 gPokedexListEntryCount; -extern u32 gUnknown_0201B170; -extern u32 gUnknown_0202BED8; +extern u32 gMergedSapphireScoreIndex; +extern u32 gMergedRubyScoreIndex; extern u16 gDexInfoWindowEmptyTextRowTiles[]; extern u16 gDexInfoWindowMiddleRowTiles[]; extern u16 gDexInfoWindowBottomRowTiles[]; extern u16 gDexInfoWindowEmptyRowTiles[]; -extern u16 gUnknown_0202A590[]; -extern u16 gUnknown_08086B40[]; -extern u16 gUnknown_083722E8[0x4000]; +extern u16 gPokedexInfoWindowBackupTiles[]; +extern u16 gPokedexInfoWindowTiles[]; +extern u16 gRayquazaBodyCollisionMap[0x4000]; extern s16 gDexAnimationIx[]; extern s16 gTitleRevealJingle[][10][2]; -extern u8 gUnknown_0201B124; +extern u8 gLinkExchangeStep; extern const struct PokemonSpecies gSpeciesInfo[]; -extern const struct SpriteSet * const gUnknown_086A54D8[13]; +extern const struct SpriteSet * const gCatchHatchSpriteSets[13]; extern u8 (*gMonHatchSpriteGroupGfx[])[0x10E0]; extern u8 (*gMonHatchSpriteGroupPals[])[0x20]; -extern u32 gUnknown_0202ADD0; -extern s16 gUnknown_0202C5F0[]; -extern u16 gUnknown_0201A4D0[][2]; -extern u32 gUnknown_0202BDF0; -extern u8 gUnknown_0201C1AC; -extern u8 gUnknown_0202ADDC; -extern u16 gUnknown_0201A510; -extern s16 gUnknown_0201A444; -extern s8 gUnknown_0201B128; -extern s8 gUnknown_0202A564; -extern s8 gUnknown_02019C20; -extern s8 gUnknown_0202ADE8; +extern u32 gLinkStatusResult; +extern s16 gLinkSendBuffer[]; +extern u16 gLinkRecvBuffer[][2]; +extern u32 gLinkConnectionState; +extern u8 gLinkPlayerCount; +extern u8 gLinkNegotiationFlags; +extern u16 gLinkExchangeFrameCounter; +extern s16 gLinkTimeoutCounter; +extern s8 gPokedexLinkTransferPhase; +extern s8 gEReaderLinkHandshakeStarted; +extern s8 gEReaderLinkDataReceived; +extern s8 gEReaderLinkAckSent; -extern const u16 gUnknown_086A7FAC[]; -extern s16 gUnknown_0202C5C0[]; +extern const u16 gHighScoreCharToTileMap[]; +extern s16 gScoreDigitBuffer[]; -struct unkStruct_8079730 +struct HighScoreNamePosition { - u32 unk0; - u32 unk4; - u32 unk8; + u32 yBaseOffset; + u32 yPixelPosition; + u32 fieldWidth; }; -extern const struct unkStruct_8079730 gUnknown_08079730[][8]; +extern const struct HighScoreNamePosition gHighScoreNamePositions[][8]; -extern struct Vector16 gUnknown_086A7768[0x8]; -extern s16 gUnknown_086A7788[0x8]; -extern s16 gUnknown_0202ADA0[]; -extern s32 gUnknown_0202BEF0; -extern const struct SpriteSet *const gUnknown_086A769C[]; +extern struct Vector16 gIntroScene1_BGAnimTiming[0x8]; +extern s16 gIntroScene1_TileOffsets[0x8]; +extern s16 gIntroBGParams[]; +extern s32 gIntroPalFadeLevel; +extern const struct SpriteSet *const gIntroScene1_SpriteSets[]; extern struct SpriteGroup gMain_spriteGroups_40[]; extern struct SpriteGroup gMain_spriteGroups_48; -extern struct Vector16 gUnknown_086A7798[0x4]; -extern s32 gUnknown_0201C188; +extern struct Vector16 gIntroScene1_ScaleOffsets[0x4]; +extern s32 gIntroScaleY; -extern const struct SpriteSet *const gUnknown_086A795C[]; -extern const struct SpriteSet *const gUnknown_086A79EC[]; -extern u8 gUnknown_080E1540[]; -extern u8 gUnknown_080E1740[]; +extern const struct SpriteSet *const gIntroScene3_SpriteSets[]; +extern const struct SpriteSet *const gIntroScene5_SpriteSets[]; +extern u8 gIntroScene4_Pal[]; +extern u8 gIntroScene4_BG3Tilemap[]; extern u8 gIntroScene4Sprites_Gfx[]; -extern u8 gUnknown_080E5F60[]; -extern u8 gUnknown_080E7F60[]; +extern u8 gIntroScene4_BG0Tiles[]; +extern u8 gIntroScene4_BG1Tiles[]; -extern u16 gUnknown_03002300[]; +extern u16 gTextTilemapBuffer[]; -extern u8 gUnknown_080E9F60[]; -extern u8 gUnknown_080EA160[]; -extern u8 gUnknown_080EB160[]; -extern u8 gUnknown_080EC160[]; +extern u8 gIntroScene5_Pal[]; +extern u8 gIntroScene5_BG2Tilemap[]; +extern u8 gIntroScene5_BG1Tiles[]; +extern u8 gIntroScene5_BG3Tilemap[]; extern u8 gIntroScene5Text_Gfx[]; -extern u8 gUnknown_080F1980[]; +extern u8 gIntroScene5_BG0Tiles[]; extern u8 gIntroScene5Sprites_Gfx[]; -extern s16 gUnknown_086A7A1C[]; +extern s16 gIntroScene5_TileOffsets[]; -extern s8 gUnknown_0202C548; -extern s8 gUnknown_0202BEB4; +extern s8 gIntroScene6VelocityIndex; +extern s8 gIntroScene6EntitySpawnIndex; -extern u8 gUnknown_080F61A0[]; -extern u8 gUnknown_080F63A0[]; +extern u8 gIntroScene6_Pal[]; +extern u8 gIntroScene6_BG3Tilemap[]; extern u8 gIntroScene6Sprites_Gfx[]; -extern u8 gUnknown_080FCFC0[]; -extern u8 gUnknown_080FD7C0[]; -extern u8 gUnknown_080FDFC0[]; +extern u8 gIntroScene6_BG2Tilemap[]; +extern u8 gIntroScene6_BG0Tilemap[]; +extern u8 gIntroScene6_BG1Tiles[]; extern u8 gIntroScene6Stars_Gfx[]; -extern u8 gUnknown_086A7AE4[]; -extern const struct SpriteSet *const gUnknown_086A7A78[]; +extern u8 gIntroScene6_BounceFlags[]; +extern const struct SpriteSet *const gIntroScene6_SpriteSets[]; -extern s16 gUnknown_0202C5E4; -extern s16 gUnknown_0202ADD8; -extern const struct SpriteSet *const gUnknown_086A7B74[]; -extern const struct SpriteSetTableEntry gUnknown_086B155C[]; -extern u8 gUnknown_08100FE0[]; -extern u8 gUnknown_081011E0[]; +extern s16 gIntroWailmerScaleX; +extern s16 gIntroWailmerScaleY; +extern const struct SpriteSet *const gIntroScene7_SpriteSets[]; +extern const struct SpriteSetTableEntry gFieldSpriteSets[]; +extern u8 gIntroScene7_Pal[]; +extern u8 gIntroScene7_BG3Tilemap[]; extern u8 gIntroScene7Sprites_Gfx[]; -extern u8 gUnknown_08106A00[]; -extern u8 gUnknown_08108A00[]; -extern u8 gUnknown_0810AA00[]; +extern u8 gIntroScene7_BG2Tiles[]; +extern u8 gIntroScene7_BG0Tiles[]; +extern u8 gIntroScene7_BG1Tiles[]; extern u8 gIntroScene7Wailmer_Gfx[]; -extern s8 gUnknown_0201A4BC; +extern s8 gLinkExchangeSendPhase; -extern u8 gUnknown_0810EA20[]; -extern u8 gUnknown_0810EC20[]; +extern u8 gIntroScene8a_Pal[]; +extern u8 gIntroScene8a_BG2Tilemap[]; extern u8 gIntroScene7Explosion_Gfx[]; extern u8 gIntroScene7WailmerLaunch_Gfx[]; -extern s8 gUnknown_086A7D4C[]; -extern s8 gUnknown_0202BEDC; -extern s8 gUnknown_0202A56C; +extern s8 gIntroScene8b_BallDecelTable[]; +extern s8 gIntroObjWhiteFlash; +extern s8 gIntroBGWhiteFlash; -extern u8 gUnknown_08115860[]; -extern u8 gUnknown_08115A60[]; +extern u8 gIntroScene8b_Pal[]; +extern u8 gIntroScene8b_BG3Tilemap[]; extern u8 gIntroScene8Clouds_Gfx[]; extern u8 gIntroScene8Ball_Gfx[]; extern u16 gCommonAndEggWeights[]; extern u16 gMain_saveData_pokedexFlags_90[10]; extern u16 Sio32ConnectionData[4]; -extern u32 gUnknown_02002814; +extern u32 gSio32SendData; /* Note: gMain lives at gUnknown_0200B0C0 in running memory. diff --git a/src/board_process0.c b/src/board_process0.c index bfc52cf..3171144 100644 --- a/src/board_process0.c +++ b/src/board_process0.c @@ -27,8 +27,8 @@ void RubyBoardProcess_0A_50848(void) gMain.spriteGroups[52].available = 1; gMain.spriteGroups[62].available = 1; LoadSpriteSets( - gUnknown_086B155C[gMain.selectedField].spriteSets, - gUnknown_086B155C[gMain.selectedField].numSpriteSets, + gFieldSpriteSets[gMain.selectedField].spriteSets, + gFieldSpriteSets[gMain.selectedField].numSpriteSets, gMain.spriteGroups); } @@ -43,21 +43,21 @@ void RubyBoardProcess_0B_50918(void) for (i = 51; i < 67; i++) gMain.spriteGroups[i].available = 0; - gCurrentPinballGame->unk1BC = gMain.systemFrameCount % 25; - if (gCurrentPinballGame->unk68 < 110) + gCurrentPinballGame->randomSpriteVariantSeed = gMain.systemFrameCount % 25; + if (gCurrentPinballGame->cameraYViewport < 110) { gMain.spriteGroups[65].available = 1; gMain.spriteGroups[71].available = 1; gMain.spriteGroups[66].available = 1; } - if (gCurrentPinballGame->unk68 < 168) + if (gCurrentPinballGame->cameraYViewport < 168) { gMain.spriteGroups[48].available = 1; gMain.spriteGroups[52].available = 1; } - if (gCurrentPinballGame->unk68 < 220) + if (gCurrentPinballGame->cameraYViewport < 220) { gMain.spriteGroups[51].available = 1; gMain.spriteGroups[61].available = 1; @@ -68,22 +68,22 @@ void RubyBoardProcess_0B_50918(void) gMain.spriteGroups[62].available = 1; } - if (gCurrentPinballGame->unk68 > 63) + if (gCurrentPinballGame->cameraYViewport > 63) { gMain.spriteGroups[53].available = 1; gMain.spriteGroups[57].available = 1; } - if (gCurrentPinballGame->unk68 > 115) + if (gCurrentPinballGame->cameraYViewport > 115) gMain.spriteGroups[58].available = 1; - if (gCurrentPinballGame->unk68 > 130) + if (gCurrentPinballGame->cameraYViewport > 130) { gMain.spriteGroups[59].available = 1; gMain.spriteGroups[60].available = 1; } - if (gCurrentPinballGame->unk68 > 216) + if (gCurrentPinballGame->cameraYViewport > 216) { gMain.spriteGroups[56].available = 1; gMain.spriteGroups[54].available = 1; @@ -93,8 +93,8 @@ void RubyBoardProcess_0B_50918(void) } LoadSpriteSets( - gUnknown_086B155C[gMain.selectedField].spriteSets, - gUnknown_086B155C[gMain.selectedField].numSpriteSets, + gFieldSpriteSets[gMain.selectedField].spriteSets, + gFieldSpriteSets[gMain.selectedField].numSpriteSets, gMain.spriteGroups); } @@ -116,8 +116,8 @@ void SapphireBoardProcess_0A_50AD4(void) gMain.spriteGroups[2].available = 1; gMain.spriteGroups[25].available = 1; gMain.spriteGroups[85].available = 1; - LoadSpriteSets(gUnknown_086B155C[gMain.selectedField].spriteSets, - gUnknown_086B155C[gMain.selectedField].numSpriteSets, + LoadSpriteSets(gFieldSpriteSets[gMain.selectedField].spriteSets, + gFieldSpriteSets[gMain.selectedField].numSpriteSets, gMain.spriteGroups); } @@ -136,27 +136,27 @@ void SapphireBoardProcess_0B_50B80(void) gMain.spriteGroups[75].available = 0; gMain.spriteGroups[10].available = 0; gMain.spriteGroups[11].available = 0; - gCurrentPinballGame->unk1BC = gMain.systemFrameCount % 25; - if (gCurrentPinballGame->unk68 < 90) + gCurrentPinballGame->randomSpriteVariantSeed = gMain.systemFrameCount % 25; + if (gCurrentPinballGame->cameraYViewport < 90) { gMain.spriteGroups[52].available = 1; gMain.spriteGroups[51].available = 1; } - if (gCurrentPinballGame->unk68 < 220) + if (gCurrentPinballGame->cameraYViewport < 220) { gMain.spriteGroups[72].available = 1; } - if (gCurrentPinballGame->unk68 < 150) + if (gCurrentPinballGame->cameraYViewport < 150) { gMain.spriteGroups[60].available = 1; gMain.spriteGroups[69].available = 1; } - if (gCurrentPinballGame->unk68 < 196) + if (gCurrentPinballGame->cameraYViewport < 196) { gMain.spriteGroups[63].available = 1; gMain.spriteGroups[75].available = 1; } - if (gCurrentPinballGame->unk68 < 202) + if (gCurrentPinballGame->cameraYViewport < 202) { gMain.spriteGroups[61].available = 1; gMain.spriteGroups[58].available = 1; @@ -164,7 +164,7 @@ void SapphireBoardProcess_0B_50B80(void) gMain.spriteGroups[59].available = 1; gMain.spriteGroups[76].available = 1; } - if (gCurrentPinballGame->unk68 > 118) + if (gCurrentPinballGame->cameraYViewport > 118) { gMain.spriteGroups[70].available = 1; gMain.spriteGroups[26].available = 1; @@ -174,7 +174,7 @@ void SapphireBoardProcess_0B_50B80(void) gMain.spriteGroups[66].available = 1; gMain.spriteGroups[67].available = 1; } - if (gCurrentPinballGame->unk68 > 216) + if (gCurrentPinballGame->cameraYViewport > 216) { gMain.spriteGroups[57].available = 1; gMain.spriteGroups[55].available = 1; @@ -183,7 +183,7 @@ void SapphireBoardProcess_0B_50B80(void) gMain.spriteGroups[11].available = 1; } - LoadSpriteSets(gUnknown_086B155C[gMain.selectedField].spriteSets, gUnknown_086B155C[gMain.selectedField].numSpriteSets, gMain.spriteGroups); + LoadSpriteSets(gFieldSpriteSets[gMain.selectedField].spriteSets, gFieldSpriteSets[gMain.selectedField].numSpriteSets, gMain.spriteGroups); } void DusclopsBoardProcess_0A_50D48(void) @@ -198,17 +198,17 @@ void DusclopsBoardProcess_0A_50D48(void) gMain.spriteGroups[i].available = 0; } - gMain.unk44[0]->available = 1; + gMain.fieldSpriteGroups[0]->available = 1; - LoadSpriteSets(gUnknown_086B155C[gMain.selectedField].spriteSets, - gUnknown_086B155C[gMain.selectedField].numSpriteSets, + LoadSpriteSets(gFieldSpriteSets[gMain.selectedField].spriteSets, + gFieldSpriteSets[gMain.selectedField].numSpriteSets, gMain.spriteGroups); } void DusclopsBoardProcess_0B_50DB8(void) { - LoadSpriteSets(gUnknown_086B155C[gMain.selectedField].spriteSets, - gUnknown_086B155C[gMain.selectedField].numSpriteSets, + LoadSpriteSets(gFieldSpriteSets[gMain.selectedField].spriteSets, + gFieldSpriteSets[gMain.selectedField].numSpriteSets, gMain.spriteGroups); } @@ -224,7 +224,7 @@ void KecleonBoardProcess_0A_50DE0(void) gMain.spriteGroups[i].available = 0; } - gMain.unk44[0]->available = 1; + gMain.fieldSpriteGroups[0]->available = 1; gMain.spriteGroups[23].available = 1; gMain.spriteGroups[9].available = 1; gMain.spriteGroups[24].available = 1; @@ -251,8 +251,8 @@ void KecleonBoardProcess_0A_50DE0(void) gMain.spriteGroups[30].available = 1; LoadSpriteSets( - gUnknown_086B155C[gMain.selectedField].spriteSets, - gUnknown_086B155C[gMain.selectedField].numSpriteSets, + gFieldSpriteSets[gMain.selectedField].spriteSets, + gFieldSpriteSets[gMain.selectedField].numSpriteSets, gMain.spriteGroups ); } @@ -272,7 +272,7 @@ void KyogreBoardProcess_0A_50F04() gMain.spriteGroups[i].available = 0; } - gMain.unk44[0]->available = 1; + gMain.fieldSpriteGroups[0]->available = 1; gMain.spriteGroups[11].available = 1; gMain.spriteGroups[12].available = 1; gMain.spriteGroups[13].available = 1; @@ -282,15 +282,15 @@ void KyogreBoardProcess_0A_50F04() gMain.spriteGroups[23].available = 1; gMain.spriteGroups[15].available = 1; - LoadSpriteSets(gUnknown_086B155C[gMain.selectedField].spriteSets, - gUnknown_086B155C[gMain.selectedField].numSpriteSets, + LoadSpriteSets(gFieldSpriteSets[gMain.selectedField].spriteSets, + gFieldSpriteSets[gMain.selectedField].numSpriteSets, gMain.spriteGroups); } void KyogreBoardProcess_0B_50FAC(void) { - LoadSpriteSets(gUnknown_086B155C[gMain.selectedField].spriteSets, - gUnknown_086B155C[gMain.selectedField].numSpriteSets, + LoadSpriteSets(gFieldSpriteSets[gMain.selectedField].spriteSets, + gFieldSpriteSets[gMain.selectedField].numSpriteSets, gMain.spriteGroups); } @@ -307,22 +307,22 @@ void GroudonBoardProcess_0A_50FD4(void) } } - gMain.unk44[0]->available = 1; + gMain.fieldSpriteGroups[0]->available = 1; gMain.spriteGroups[11].available = 1; gMain.spriteGroups[12].available = 1; gMain.spriteGroups[13].available = 1; gMain.spriteGroups[14].available = 1; gMain.spriteGroups[29].available = 1; - LoadSpriteSets(gUnknown_086B155C[gMain.selectedField].spriteSets, - gUnknown_086B155C[gMain.selectedField].numSpriteSets, + LoadSpriteSets(gFieldSpriteSets[gMain.selectedField].spriteSets, + gFieldSpriteSets[gMain.selectedField].numSpriteSets, gMain.spriteGroups); } void GroudonBoardProcess_0B_51068(void) { - LoadSpriteSets(gUnknown_086B155C[gMain.selectedField].spriteSets, - gUnknown_086B155C[gMain.selectedField].numSpriteSets, + LoadSpriteSets(gFieldSpriteSets[gMain.selectedField].spriteSets, + gFieldSpriteSets[gMain.selectedField].numSpriteSets, gMain.spriteGroups); } @@ -338,22 +338,22 @@ void RayquazaBoardProcess_0A_51090(void) gMain.spriteGroups[i].available = 0; } - gMain.unk44[0]->available = 1; + gMain.fieldSpriteGroups[0]->available = 1; gMain.spriteGroups[42].available = 1; gMain.spriteGroups[11].available = 1; gMain.spriteGroups[12].available = 1; gMain.spriteGroups[13].available = 1; gMain.spriteGroups[21].available = 1; - LoadSpriteSets(gUnknown_086B155C[gMain.selectedField].spriteSets, - gUnknown_086B155C[gMain.selectedField].numSpriteSets, + LoadSpriteSets(gFieldSpriteSets[gMain.selectedField].spriteSets, + gFieldSpriteSets[gMain.selectedField].numSpriteSets, gMain.spriteGroups); } void RayquazaBoardProcess_0B_51128(void) { - LoadSpriteSets(gUnknown_086B155C[gMain.selectedField].spriteSets, - gUnknown_086B155C[gMain.selectedField].numSpriteSets, + LoadSpriteSets(gFieldSpriteSets[gMain.selectedField].spriteSets, + gFieldSpriteSets[gMain.selectedField].numSpriteSets, gMain.spriteGroups); } @@ -369,7 +369,7 @@ void SphealBoardProcess_0A_51150(void) gMain.spriteGroups[i].available = 0; } - gMain.unk44[0]->available = 1; + gMain.fieldSpriteGroups[0]->available = 1; gMain.spriteGroups[18].available = 1; gMain.spriteGroups[21].available = 1; gMain.spriteGroups[22].available = 1; @@ -378,14 +378,14 @@ void SphealBoardProcess_0A_51150(void) gMain.spriteGroups[16].available = 1; gMain.spriteGroups[17].available = 1; - LoadSpriteSets(gUnknown_086B155C[gMain.selectedField].spriteSets, - gUnknown_086B155C[gMain.selectedField].numSpriteSets, + LoadSpriteSets(gFieldSpriteSets[gMain.selectedField].spriteSets, + gFieldSpriteSets[gMain.selectedField].numSpriteSets, gMain.spriteGroups); } void SphealBoardProcess_0B_511F8(void) { - LoadSpriteSets(gUnknown_086B155C[gMain.selectedField].spriteSets, - gUnknown_086B155C[gMain.selectedField].numSpriteSets, + LoadSpriteSets(gFieldSpriteSets[gMain.selectedField].spriteSets, + gFieldSpriteSets[gMain.selectedField].numSpriteSets, gMain.spriteGroups); } diff --git a/src/board_process1.c b/src/board_process1.c index 77a291a..8e7af46 100644 --- a/src/board_process1.c +++ b/src/board_process1.c @@ -7,33 +7,33 @@ void AllBoardProcess_1A_47100(void) { - gCurrentPinballGame->unkFC = 128; + gCurrentPinballGame->bonusSummarySlideY = 128; } -void sub_47110(void) +void ClearBG0Tilemap(void) { s16 i; for (i = 0; i < 0x800; i++) - gUnknown_03005C00[i] = 0x1FF; + gBG0TilemapBuffer[i] = 0x1FF; - DmaCopy16(3, gUnknown_03005C00, (void *)0x06002000, 0x1000); + DmaCopy16(3, gBG0TilemapBuffer, (void *)0x06002000, 0x1000); } void AllBoardProcess_1B_47160(void) { - if (JOY_NEW(START_BUTTON) && gMain.mainState != STATE_GAME_IDLE && gCurrentPinballGame->unk1100 == 0) + if (JOY_NEW(START_BUTTON) && gMain.mainState != STATE_GAME_IDLE && gCurrentPinballGame->startButtonDisabled == 0) { if (gMain.modeChangeFlags & MODE_CHANGE_PAUSE) { gMain.modeChangeFlags &= ~MODE_CHANGE_PAUSE; - sub_497BC(); + UnpauseGame(); } else if ((gMain.modeChangeFlags & MODE_CHANGE_END_OF_GAME) == 0) { gMain.modeChangeFlags |= MODE_CHANGE_PAUSE; - sub_495A0(); + PauseGame(); } } @@ -42,59 +42,59 @@ void AllBoardProcess_1B_47160(void) { if (JOY_NEW(DPAD_UP)) { - gCurrentPinballGame->unk1104 ^= 1; + gCurrentPinballGame->pauseMenuCursorIndex ^= 1; m4aSongNumStart(SE_UNKNOWN_0xA3); } if (JOY_NEW(DPAD_DOWN)) { - gCurrentPinballGame->unk1104 ^= 1; + gCurrentPinballGame->pauseMenuCursorIndex ^= 1; m4aSongNumStart(SE_UNKNOWN_0xA3); } if (JOY_NEW(A_BUTTON) && !JOY_HELD(B_BUTTON | SELECT_BUTTON | START_BUTTON)) { - if (gCurrentPinballGame->unk1104 == 0) + if (gCurrentPinballGame->pauseMenuCursorIndex == 0) { - gMain.unkE = 2; - sub_49850(); + gMain.gameExitState = 2; + PositionPauseMenuSprites(); } gMain.modeChangeFlags &= ~MODE_CHANGE_PAUSE; - sub_497BC(); + UnpauseGame(); gMain.newKeys &= ~A_BUTTON; } if (JOY_NEW(B_BUTTON)) { gMain.modeChangeFlags &= ~MODE_CHANGE_PAUSE; - sub_497BC(); + UnpauseGame(); gMain.newKeys &= ~B_BUTTON; } if (gMain.modeChangeFlags & MODE_CHANGE_PAUSE) - sub_49A34(); + AnimatePauseMenuOverlay(); } //Game is not paused if (gMain.modeChangeFlags == MODE_CHANGE_NONE) { - gCurrentPinballGame->unk740 = 0; - if (gMain.unk14 != 0) + gCurrentPinballGame->debugMenuSelection = 0; + if (gMain.modeChangeDelayTimer != 0) { - gMain.unk14--; - if (gMain.unk14 == 1) + gMain.modeChangeDelayTimer--; + if (gMain.modeChangeDelayTimer == 1) { - if (gCurrentPinballGame->unkE4) - gMain.unk14 = 10; - else if (gMain.unk11 == 0x8) - gCurrentPinballGame->unkE4 = 19; + if (gCurrentPinballGame->activePortraitType) + gMain.modeChangeDelayTimer = 10; + else if (gMain.pendingModeChangeType == 0x8) + gCurrentPinballGame->activePortraitType = 19; else - gCurrentPinballGame->unkE4 = 20; + gCurrentPinballGame->activePortraitType = 20; } - if (gMain.unk14 == 0) - gMain.modeChangeFlags = gMain.unk11; + if (gMain.modeChangeDelayTimer == 0) + gMain.modeChangeFlags = gMain.pendingModeChangeType; } } } diff --git a/src/board_process2.c b/src/board_process2.c index fb0fb93..fa36621 100644 --- a/src/board_process2.c +++ b/src/board_process2.c @@ -26,20 +26,20 @@ void AllBoardProcess_2A_4D6C4(void) if (gMain.selectedField < MAIN_FIELD_COUNT) { - gCurrentPinballGame->unk5FC = var1 - 244; - gCurrentPinballGame->unk5FE = 0; - gCurrentPinballGame->unk5FB = 0; - gCurrentPinballGame->unk4C = gUnknown_02031520.unk14.unk14; - gCurrentPinballGame->unk4E = gUnknown_02031520.unk14.unk16; - gCurrentPinballGame->unk54 = gUnknown_02031520.unk14.unk16 << 8; - gCurrentPinballGame->unk58 = gCurrentPinballGame->unk4C; - gCurrentPinballGame->unk5A = gCurrentPinballGame->unk4E + gCurrentPinballGame->unk5FC; - gMain.bgOffsets[2].xOffset = gCurrentPinballGame->unk4C + var0; - gMain.bgOffsets[2].yOffset = gCurrentPinballGame->unk4E + gCurrentPinballGame->unk5FC; - gMain.bgOffsets[3].xOffset = gCurrentPinballGame->unk4C + var0; - gMain.bgOffsets[3].yOffset = gCurrentPinballGame->unk4E + gCurrentPinballGame->unk5FC; - gMain.bgOffsets[1].xOffset = gCurrentPinballGame->unk4C + var0; - gMain.bgOffsets[1].yOffset = gCurrentPinballGame->unk4E + gCurrentPinballGame->unk5FC; + gCurrentPinballGame->cameraScrollOffset = var1 - 244; + gCurrentPinballGame->cameraScrollTarget = 0; + gCurrentPinballGame->cameraScrollEnabled = 0; + gCurrentPinballGame->cameraBaseX = gBoardConfig.fieldLayout.cameraStartX; + gCurrentPinballGame->cameraBaseY = gBoardConfig.fieldLayout.cameraStartY; + gCurrentPinballGame->cameraYQ8 = gBoardConfig.fieldLayout.cameraStartY << 8; + gCurrentPinballGame->cameraXOffset = gCurrentPinballGame->cameraBaseX; + gCurrentPinballGame->cameraYOffset = gCurrentPinballGame->cameraBaseY + gCurrentPinballGame->cameraScrollOffset; + gMain.bgOffsets[2].xOffset = gCurrentPinballGame->cameraBaseX + var0; + gMain.bgOffsets[2].yOffset = gCurrentPinballGame->cameraBaseY + gCurrentPinballGame->cameraScrollOffset; + gMain.bgOffsets[3].xOffset = gCurrentPinballGame->cameraBaseX + var0; + gMain.bgOffsets[3].yOffset = gCurrentPinballGame->cameraBaseY + gCurrentPinballGame->cameraScrollOffset; + gMain.bgOffsets[1].xOffset = gCurrentPinballGame->cameraBaseX + var0; + gMain.bgOffsets[1].yOffset = gCurrentPinballGame->cameraBaseY + gCurrentPinballGame->cameraScrollOffset; if (gMain.selectedField == FIELD_RUBY) { if ((gCurrentPinballGame->numCompletedBonusStages / 5) % 2 == 0) @@ -57,35 +57,35 @@ void AllBoardProcess_2A_4D6C4(void) } else { - gCurrentPinballGame->unk5FC = 0; - gCurrentPinballGame->unk5FE = 0; - gCurrentPinballGame->unk5FB = 0; + gCurrentPinballGame->cameraScrollOffset = 0; + gCurrentPinballGame->cameraScrollTarget = 0; + gCurrentPinballGame->cameraScrollEnabled = 0; if (gMain.selectedField <= FIELD_KECLEON) - gCurrentPinballGame->unkE6 = -24; + gCurrentPinballGame->cameraYAdjust = -24; else if (gMain.selectedField == FIELD_RAYQUAZA) - gCurrentPinballGame->unkE6 = -88; + gCurrentPinballGame->cameraYAdjust = -88; else - gCurrentPinballGame->unkE6 = -64; + gCurrentPinballGame->cameraYAdjust = -64; - gCurrentPinballGame->unk4C = gUnknown_02031520.unk14.unk14; - gCurrentPinballGame->unk4E = gUnknown_02031520.unk14.unk16 + gCurrentPinballGame->unkE6; - gCurrentPinballGame->unk54 = gUnknown_02031520.unk14.unk16 << 8; - gCurrentPinballGame->unk58 = gCurrentPinballGame->unk4C; - gCurrentPinballGame->unk5A = gCurrentPinballGame->unk4E + gCurrentPinballGame->unk5FC; - gMain.bgOffsets[2].xOffset = gCurrentPinballGame->unk4C + var0; - gMain.bgOffsets[2].yOffset = gCurrentPinballGame->unk4E; - gMain.bgOffsets[3].xOffset = gCurrentPinballGame->unk4C + var0; - gMain.bgOffsets[3].yOffset = gCurrentPinballGame->unk4E; - gMain.bgOffsets[1].xOffset = gCurrentPinballGame->unk4C + var0; - gMain.bgOffsets[1].yOffset = gCurrentPinballGame->unk4E / 2; + gCurrentPinballGame->cameraBaseX = gBoardConfig.fieldLayout.cameraStartX; + gCurrentPinballGame->cameraBaseY = gBoardConfig.fieldLayout.cameraStartY + gCurrentPinballGame->cameraYAdjust; + gCurrentPinballGame->cameraYQ8 = gBoardConfig.fieldLayout.cameraStartY << 8; + gCurrentPinballGame->cameraXOffset = gCurrentPinballGame->cameraBaseX; + gCurrentPinballGame->cameraYOffset = gCurrentPinballGame->cameraBaseY + gCurrentPinballGame->cameraScrollOffset; + gMain.bgOffsets[2].xOffset = gCurrentPinballGame->cameraBaseX + var0; + gMain.bgOffsets[2].yOffset = gCurrentPinballGame->cameraBaseY; + gMain.bgOffsets[3].xOffset = gCurrentPinballGame->cameraBaseX + var0; + gMain.bgOffsets[3].yOffset = gCurrentPinballGame->cameraBaseY; + gMain.bgOffsets[1].xOffset = gCurrentPinballGame->cameraBaseX + var0; + gMain.bgOffsets[1].yOffset = gCurrentPinballGame->cameraBaseY / 2; if (gMain.selectedField == FIELD_KECLEON) - gMain.bgOffsets[3].xOffset = gMain.bgOffsets[2].xOffset + (gCurrentPinballGame->unk290 & 0x7FF) / 8; + gMain.bgOffsets[3].xOffset = gMain.bgOffsets[2].xOffset + (gCurrentPinballGame->globalAnimFrameCounter & 0x7FF) / 8; } gMain.bgOffsets[0].yOffset = 80; - gCurrentPinballGame->unkCC = gMain.bgOffsets[3].yOffset; - gCurrentPinballGame->unkCA = gCurrentPinballGame->unkCC; - gCurrentPinballGame->unk2C = 0x1000; + gCurrentPinballGame->scrollEffectY = gMain.bgOffsets[3].yOffset; + gCurrentPinballGame->scrollEffectX = gCurrentPinballGame->scrollEffectY; + gCurrentPinballGame->cameraLookAhead = 0x1000; } void MainBoardProcess_2B_4D960(void) @@ -98,35 +98,35 @@ void MainBoardProcess_2B_4D960(void) var0 = 0x1000; if (gMain.modeChangeFlags == MODE_CHANGE_NONE) - sub_4E2F8(); + ProcessMainBoardBallDrainAndLaunch(); - if (gCurrentPinballGame->unk5FB) + if (gCurrentPinballGame->cameraScrollEnabled) { - if (gCurrentPinballGame->unk5FC != gCurrentPinballGame->unk5FE) + if (gCurrentPinballGame->cameraScrollOffset != gCurrentPinballGame->cameraScrollTarget) { - if (gCurrentPinballGame->unk5FC > gCurrentPinballGame->unk5FE) - gCurrentPinballGame->unk5FC--; + if (gCurrentPinballGame->cameraScrollOffset > gCurrentPinballGame->cameraScrollTarget) + gCurrentPinballGame->cameraScrollOffset--; else - gCurrentPinballGame->unk5FC++; + gCurrentPinballGame->cameraScrollOffset++; } else { - gCurrentPinballGame->unk5FB = 0; + gCurrentPinballGame->cameraScrollEnabled = 0; } } - if (gCurrentPinballGame->unk1F == 0) - var0 = (gCurrentPinballGame->unk1330->velocity.y * 40) + 0x1000; + if (gCurrentPinballGame->ballFrozenState == 0) + var0 = (gCurrentPinballGame->secondaryBall->velocity.y * 40) + 0x1000; - gCurrentPinballGame->unk2C += (var0 - gCurrentPinballGame->unk2C) / 10; - var1 = gCurrentPinballGame->unk1330->positionQ8.y + gCurrentPinballGame->unk2C; - if (var1 > gUnknown_02031520.unk14.unk18 << 8) - var1 = gUnknown_02031520.unk14.unk18 << 8; - else if (var1 < gUnknown_02031520.unk14.unk1A << 8) - var1 = gUnknown_02031520.unk14.unk1A << 8; + gCurrentPinballGame->cameraLookAhead += (var0 - gCurrentPinballGame->cameraLookAhead) / 10; + var1 = gCurrentPinballGame->secondaryBall->positionQ8.y + gCurrentPinballGame->cameraLookAhead; + if (var1 > gBoardConfig.fieldLayout.cameraScrollMaxY << 8) + var1 = gBoardConfig.fieldLayout.cameraScrollMaxY << 8; + else if (var1 < gBoardConfig.fieldLayout.cameraScrollMinY << 8) + var1 = gBoardConfig.fieldLayout.cameraScrollMinY << 8; var1 -= 0x5000; - var4 = gCurrentPinballGame->unk54; + var4 = gCurrentPinballGame->cameraYQ8; var2 = (var1 - var4) / 12; if (var2 > 0) { @@ -140,25 +140,25 @@ void MainBoardProcess_2B_4D960(void) } var4 += var2; - if (gCurrentPinballGame->unk5FA == 0) + if (gCurrentPinballGame->boardEntityActive == 0) { - gCurrentPinballGame->unk54 = var4; - gCurrentPinballGame->unk4E = var4 / 0x100; - if (gCurrentPinballGame->unk1330->positionQ0.x >= 230) - gCurrentPinballGame->unk4C++; + gCurrentPinballGame->cameraYQ8 = var4; + gCurrentPinballGame->cameraBaseY = var4 / 0x100; + if (gCurrentPinballGame->secondaryBall->positionQ0.x >= 230) + gCurrentPinballGame->cameraBaseX++; else - gCurrentPinballGame->unk4C--; + gCurrentPinballGame->cameraBaseX--; - if (gCurrentPinballGame->unk4C > 16) - gCurrentPinballGame->unk4C = 16; - else if (gCurrentPinballGame->unk4C < 0) - gCurrentPinballGame->unk4C = 0; + if (gCurrentPinballGame->cameraBaseX > 16) + gCurrentPinballGame->cameraBaseX = 16; + else if (gCurrentPinballGame->cameraBaseX < 0) + gCurrentPinballGame->cameraBaseX = 0; } - sub_4DFA0(); - gMain.bgOffsets[3].xOffset = gCurrentPinballGame->unk4C + gCurrentPinballGame->unk120 + gCurrentPinballGame->unk2AA; - gCurrentPinballGame->unkCC = gCurrentPinballGame->unk4E + gCurrentPinballGame->unk121 + gCurrentPinballGame->unk5FC + gCurrentPinballGame->unkE6; - var3 = gMain.bgOffsets[3].yOffset - gCurrentPinballGame->unkCC; + ProcessTiltInput(); + gMain.bgOffsets[3].xOffset = gCurrentPinballGame->cameraBaseX + gCurrentPinballGame->tiltXOffset + gCurrentPinballGame->screenShakeX; + gCurrentPinballGame->scrollEffectY = gCurrentPinballGame->cameraBaseY + gCurrentPinballGame->tiltYOffset + gCurrentPinballGame->cameraScrollOffset + gCurrentPinballGame->cameraYAdjust; + var3 = gMain.bgOffsets[3].yOffset - gCurrentPinballGame->scrollEffectY; if (var3 > 8) var3 = 8; else if (var3 < -8) @@ -171,10 +171,10 @@ void MainBoardProcess_2B_4D960(void) gMain.bgOffsets[2].yOffset = gMain.bgOffsets[3].yOffset; gMain.bgOffsets[1].xOffset = gMain.bgOffsets[3].xOffset; gMain.bgOffsets[1].yOffset = gMain.bgOffsets[3].yOffset; - gCurrentPinballGame->unk58 = gCurrentPinballGame->unk4C + gCurrentPinballGame->unk120 + gCurrentPinballGame->unk2AA; - gCurrentPinballGame->unk5A = gCurrentPinballGame->unk4E + gCurrentPinballGame->unk121 + gCurrentPinballGame->unk5FC + gCurrentPinballGame->unkE6; - gCurrentPinballGame->unk6A = gCurrentPinballGame->unk68; - gCurrentPinballGame->unk68 = gCurrentPinballGame->unk4E + gCurrentPinballGame->unk121 + gCurrentPinballGame->unk5FC + gCurrentPinballGame->unkE6; + gCurrentPinballGame->cameraXOffset = gCurrentPinballGame->cameraBaseX + gCurrentPinballGame->tiltXOffset + gCurrentPinballGame->screenShakeX; + gCurrentPinballGame->cameraYOffset = gCurrentPinballGame->cameraBaseY + gCurrentPinballGame->tiltYOffset + gCurrentPinballGame->cameraScrollOffset + gCurrentPinballGame->cameraYAdjust; + gCurrentPinballGame->hudSpriteBaseY = gCurrentPinballGame->cameraYViewport; + gCurrentPinballGame->cameraYViewport = gCurrentPinballGame->cameraBaseY + gCurrentPinballGame->tiltYOffset + gCurrentPinballGame->cameraScrollOffset + gCurrentPinballGame->cameraYAdjust; } void BonusBoardProcess_2B_4DBFC(void) @@ -187,35 +187,35 @@ void BonusBoardProcess_2B_4DBFC(void) var0 = 0x1000; if ((gMain.modeChangeFlags & ~MODE_CHANGE_EXPIRED_BONUS) == 0) - sub_4E468(); + ProcessBonusBoardBallDrain(); - if (gCurrentPinballGame->unk5FB) + if (gCurrentPinballGame->cameraScrollEnabled) { - if (gCurrentPinballGame->unk5FC != gCurrentPinballGame->unk5FE) + if (gCurrentPinballGame->cameraScrollOffset != gCurrentPinballGame->cameraScrollTarget) { - if (gCurrentPinballGame->unk5FC > gCurrentPinballGame->unk5FE) - gCurrentPinballGame->unk5FC--; + if (gCurrentPinballGame->cameraScrollOffset > gCurrentPinballGame->cameraScrollTarget) + gCurrentPinballGame->cameraScrollOffset--; else - gCurrentPinballGame->unk5FC++; + gCurrentPinballGame->cameraScrollOffset++; } else { - gCurrentPinballGame->unk5FB = 0; + gCurrentPinballGame->cameraScrollEnabled = 0; } } - if (gCurrentPinballGame->unk1F == 0) - var0 = gCurrentPinballGame->unk1330->velocity.y * 40 + 0x1000; + if (gCurrentPinballGame->ballFrozenState == 0) + var0 = gCurrentPinballGame->secondaryBall->velocity.y * 40 + 0x1000; - gCurrentPinballGame->unk2C += (var0 - gCurrentPinballGame->unk2C) / 10; - var1 = gCurrentPinballGame->unk1330->positionQ8.y + gCurrentPinballGame->unk2C; - if (var1 > gUnknown_02031520.unk14.unk18 << 8) - var1 = gUnknown_02031520.unk14.unk18 << 8; - else if (var1 < gUnknown_02031520.unk14.unk1A << 8) - var1 = gUnknown_02031520.unk14.unk1A << 8; + gCurrentPinballGame->cameraLookAhead += (var0 - gCurrentPinballGame->cameraLookAhead) / 10; + var1 = gCurrentPinballGame->secondaryBall->positionQ8.y + gCurrentPinballGame->cameraLookAhead; + if (var1 > gBoardConfig.fieldLayout.cameraScrollMaxY << 8) + var1 = gBoardConfig.fieldLayout.cameraScrollMaxY << 8; + else if (var1 < gBoardConfig.fieldLayout.cameraScrollMinY << 8) + var1 = gBoardConfig.fieldLayout.cameraScrollMinY << 8; var1 -= 0x5000; - var4 = gCurrentPinballGame->unk54; + var4 = gCurrentPinballGame->cameraYQ8; var2 = (var1 - var4) / 12; if (var2 > 0) { @@ -229,25 +229,25 @@ void BonusBoardProcess_2B_4DBFC(void) } var4 += var2; - if (gCurrentPinballGame->unk5FA == 0) + if (gCurrentPinballGame->boardEntityActive == 0) { - gCurrentPinballGame->unk54 = var4; - gCurrentPinballGame->unk4E = var4 / 0x100; + gCurrentPinballGame->cameraYQ8 = var4; + gCurrentPinballGame->cameraBaseY = var4 / 0x100; } - sub_4DFA0(); - gMain.bgOffsets[2].xOffset = gCurrentPinballGame->unk4C + gCurrentPinballGame->unk120 + 8 + gCurrentPinballGame->unk2AA; - gCurrentPinballGame->unkCC = gCurrentPinballGame->unk4E + gCurrentPinballGame->unk121 + gCurrentPinballGame->unk5FC + gCurrentPinballGame->unkE6 + gCurrentPinballGame->unk2AC; - var3 = gCurrentPinballGame->unkCA - gCurrentPinballGame->unkCC; + ProcessTiltInput(); + gMain.bgOffsets[2].xOffset = gCurrentPinballGame->cameraBaseX + gCurrentPinballGame->tiltXOffset + 8 + gCurrentPinballGame->screenShakeX; + gCurrentPinballGame->scrollEffectY = gCurrentPinballGame->cameraBaseY + gCurrentPinballGame->tiltYOffset + gCurrentPinballGame->cameraScrollOffset + gCurrentPinballGame->cameraYAdjust + gCurrentPinballGame->screenShakeY; + var3 = gCurrentPinballGame->scrollEffectX - gCurrentPinballGame->scrollEffectY; if (var3 > 8) var3 = 8; else if (var3 < -8) var3 = -8; if (var3) - gCurrentPinballGame->unkCA -= var3; + gCurrentPinballGame->scrollEffectX -= var3; - gMain.bgOffsets[2].yOffset = gCurrentPinballGame->unkCA; + gMain.bgOffsets[2].yOffset = gCurrentPinballGame->scrollEffectX; switch (gMain.selectedField) { @@ -255,10 +255,10 @@ void BonusBoardProcess_2B_4DBFC(void) gMain.bgOffsets[3].xOffset = gMain.bgOffsets[2].xOffset; gMain.bgOffsets[3].yOffset = gMain.bgOffsets[2].yOffset; gMain.bgOffsets[1].xOffset = gMain.bgOffsets[2].xOffset; - gMain.bgOffsets[1].yOffset = gCurrentPinballGame->unkCA / 2; + gMain.bgOffsets[1].yOffset = gCurrentPinballGame->scrollEffectX / 2; break; case 3: - gMain.bgOffsets[3].xOffset = gMain.bgOffsets[2].xOffset + (gCurrentPinballGame->unk290 & 0x7FF) / 8; + gMain.bgOffsets[3].xOffset = gMain.bgOffsets[2].xOffset + (gCurrentPinballGame->globalAnimFrameCounter & 0x7FF) / 8; gMain.bgOffsets[3].yOffset = gMain.bgOffsets[2].yOffset; gMain.bgOffsets[1].xOffset = gMain.bgOffsets[2].xOffset; gMain.bgOffsets[1].yOffset = 0; @@ -282,152 +282,152 @@ void BonusBoardProcess_2B_4DBFC(void) break; } - gCurrentPinballGame->unk58 = gCurrentPinballGame->unk4C + gCurrentPinballGame->unk120 + gCurrentPinballGame->unk2AA; - gCurrentPinballGame->unk5A = gCurrentPinballGame->unk4E + gCurrentPinballGame->unk121 + gCurrentPinballGame->unk5FC + gCurrentPinballGame->unkE6 + gCurrentPinballGame->unk2AC; - gCurrentPinballGame->unk68 = gCurrentPinballGame->unk4E + gCurrentPinballGame->unk121 + gCurrentPinballGame->unk5FC + gCurrentPinballGame->unkE6; + gCurrentPinballGame->cameraXOffset = gCurrentPinballGame->cameraBaseX + gCurrentPinballGame->tiltXOffset + gCurrentPinballGame->screenShakeX; + gCurrentPinballGame->cameraYOffset = gCurrentPinballGame->cameraBaseY + gCurrentPinballGame->tiltYOffset + gCurrentPinballGame->cameraScrollOffset + gCurrentPinballGame->cameraYAdjust + gCurrentPinballGame->screenShakeY; + gCurrentPinballGame->cameraYViewport = gCurrentPinballGame->cameraBaseY + gCurrentPinballGame->tiltYOffset + gCurrentPinballGame->cameraScrollOffset + gCurrentPinballGame->cameraYAdjust; } -void sub_4DFA0(void) +void ProcessTiltInput(void) { int i; s16 sp0[4]; - if (gCurrentPinballGame->unk25 == 0 && gCurrentPinballGame->unk5A4 != 2 && gCurrentPinballGame->unk61C == 0) + if (gCurrentPinballGame->ballCatchState == 0 && gCurrentPinballGame->captureState != 2 && gCurrentPinballGame->entityOverlayCollisionState == 0) { if (gCurrentPinballGame->newButtonActions[2]) { - if (gCurrentPinballGame->unk12A == 0) + if (gCurrentPinballGame->boardShakeTimer == 0) { - gCurrentPinballGame->unk129 = 0; - if (gCurrentPinballGame->unk128 == 0) + gCurrentPinballGame->boardShakeDirection = 0; + if (gCurrentPinballGame->boardShakeIntensity == 0) { - gCurrentPinballGame->unk128 = 4; + gCurrentPinballGame->boardShakeIntensity = 4; m4aSongNumStart(SE_TILT_TRIGGERED); PlayRumble(8); } } } - if (gCurrentPinballGame->newButtonActions[3] && gCurrentPinballGame->unk12A == 0) + if (gCurrentPinballGame->newButtonActions[3] && gCurrentPinballGame->boardShakeTimer == 0) { - gCurrentPinballGame->unk129 = 1; - if (gCurrentPinballGame->unk128 == 0) + gCurrentPinballGame->boardShakeDirection = 1; + if (gCurrentPinballGame->boardShakeIntensity == 0) { - gCurrentPinballGame->unk128 = 4; + gCurrentPinballGame->boardShakeIntensity = 4; m4aSongNumStart(SE_TILT_TRIGGERED); PlayRumble(8); } } - if (gCurrentPinballGame->newButtonActions[4] && gCurrentPinballGame->unk12A == 0) + if (gCurrentPinballGame->newButtonActions[4] && gCurrentPinballGame->boardShakeTimer == 0) { - gCurrentPinballGame->unk129 = 2; - if (gCurrentPinballGame->unk128 == 0) + gCurrentPinballGame->boardShakeDirection = 2; + if (gCurrentPinballGame->boardShakeIntensity == 0) { - gCurrentPinballGame->unk128 = 4; + gCurrentPinballGame->boardShakeIntensity = 4; m4aSongNumStart(SE_TILT_TRIGGERED); PlayRumble(8); } } } - if (gCurrentPinballGame->unk128) + if (gCurrentPinballGame->boardShakeIntensity) { - gCurrentPinballGame->unk128--; - if (gCurrentPinballGame->unk128 == 0) + gCurrentPinballGame->boardShakeIntensity--; + if (gCurrentPinballGame->boardShakeIntensity == 0) { - switch (gCurrentPinballGame->unk129) + switch (gCurrentPinballGame->boardShakeDirection) { case 0: - gCurrentPinballGame->unk118[0] = 6; - gCurrentPinballGame->unk11C[0] = -1; - gCurrentPinballGame->unk118[2] = 6; - gCurrentPinballGame->unk11C[2] = 1; + gCurrentPinballGame->tiltShakeAmplitude[0] = 6; + gCurrentPinballGame->tiltShakeVelocity[0] = -1; + gCurrentPinballGame->tiltShakeAmplitude[2] = 6; + gCurrentPinballGame->tiltShakeVelocity[2] = 1; break; case 1: - gCurrentPinballGame->unk118[1] = 6; - gCurrentPinballGame->unk11C[1] = 1; - gCurrentPinballGame->unk118[3] = 6; - gCurrentPinballGame->unk11C[3] = 1; + gCurrentPinballGame->tiltShakeAmplitude[1] = 6; + gCurrentPinballGame->tiltShakeVelocity[1] = 1; + gCurrentPinballGame->tiltShakeAmplitude[3] = 6; + gCurrentPinballGame->tiltShakeVelocity[3] = 1; break; case 2: - gCurrentPinballGame->unk118[2] = 6; - gCurrentPinballGame->unk11C[2] = 1; - gCurrentPinballGame->unk118[3] = 0; - gCurrentPinballGame->unk11C[3] = 1; + gCurrentPinballGame->tiltShakeAmplitude[2] = 6; + gCurrentPinballGame->tiltShakeVelocity[2] = 1; + gCurrentPinballGame->tiltShakeAmplitude[3] = 0; + gCurrentPinballGame->tiltShakeVelocity[3] = 1; break; } - gCurrentPinballGame->unk12A = 24; + gCurrentPinballGame->boardShakeTimer = 24; } } - if (gCurrentPinballGame->unk12A) - gCurrentPinballGame->unk12A--; + if (gCurrentPinballGame->boardShakeTimer) + gCurrentPinballGame->boardShakeTimer--; for (i = 0; i < 4; i++) { - if (gCurrentPinballGame->unk118[i] > 0) - gCurrentPinballGame->unk118[i]--; + if (gCurrentPinballGame->tiltShakeAmplitude[i] > 0) + gCurrentPinballGame->tiltShakeAmplitude[i]--; - if (gCurrentPinballGame->unk118[i] < 3) - sp0[i] = gCurrentPinballGame->unk11C[i] * gCurrentPinballGame->unk118[i]; + if (gCurrentPinballGame->tiltShakeAmplitude[i] < 3) + sp0[i] = gCurrentPinballGame->tiltShakeVelocity[i] * gCurrentPinballGame->tiltShakeAmplitude[i]; else - sp0[i] = gCurrentPinballGame->unk11C[i] * (6 - gCurrentPinballGame->unk118[i]); + sp0[i] = gCurrentPinballGame->tiltShakeVelocity[i] * (6 - gCurrentPinballGame->tiltShakeAmplitude[i]); } - gCurrentPinballGame->unk120 = sp0[0] + sp0[1]; - gCurrentPinballGame->unk121 = sp0[2] + sp0[3]; + gCurrentPinballGame->tiltXOffset = sp0[0] + sp0[1]; + gCurrentPinballGame->tiltYOffset = sp0[2] + sp0[3]; - if (gCurrentPinballGame->unk120 == 0 && gCurrentPinballGame->unk121 == 0) + if (gCurrentPinballGame->tiltXOffset == 0 && gCurrentPinballGame->tiltYOffset == 0) { - gCurrentPinballGame->unk126 = 0; - gCurrentPinballGame->unk127 = 0; + gCurrentPinballGame->tiltLockoutTimer = 0; + gCurrentPinballGame->tiltLockoutActive = 0; } - if (gCurrentPinballGame->unk120 > 0) + if (gCurrentPinballGame->tiltXOffset > 0) { - if (gCurrentPinballGame->unk120 < gCurrentPinballGame->unk122) - gCurrentPinballGame->unk122--; + if (gCurrentPinballGame->tiltXOffset < gCurrentPinballGame->tiltTargetXOffset) + gCurrentPinballGame->tiltTargetXOffset--; } - else if (gCurrentPinballGame->unk120 < 0) + else if (gCurrentPinballGame->tiltXOffset < 0) { - if (gCurrentPinballGame->unk120 > gCurrentPinballGame->unk122) - gCurrentPinballGame->unk122++; + if (gCurrentPinballGame->tiltXOffset > gCurrentPinballGame->tiltTargetXOffset) + gCurrentPinballGame->tiltTargetXOffset++; } - if (gCurrentPinballGame->unk121 > 0) + if (gCurrentPinballGame->tiltYOffset > 0) { - if (gCurrentPinballGame->unk121 < gCurrentPinballGame->unk123) - gCurrentPinballGame->unk123--; + if (gCurrentPinballGame->tiltYOffset < gCurrentPinballGame->tiltTargetYOffset) + gCurrentPinballGame->tiltTargetYOffset--; } - else if (gCurrentPinballGame->unk121 < 0) + else if (gCurrentPinballGame->tiltYOffset < 0) { - if (gCurrentPinballGame->unk121 > gCurrentPinballGame->unk123) - gCurrentPinballGame->unk123++; + if (gCurrentPinballGame->tiltYOffset > gCurrentPinballGame->tiltTargetYOffset) + gCurrentPinballGame->tiltTargetYOffset++; } - if (gCurrentPinballGame->unk126 == 0) + if (gCurrentPinballGame->tiltLockoutTimer == 0) { - gCurrentPinballGame->unk122 = gCurrentPinballGame->unk120; - gCurrentPinballGame->unk123 = gCurrentPinballGame->unk121; + gCurrentPinballGame->tiltTargetXOffset = gCurrentPinballGame->tiltXOffset; + gCurrentPinballGame->tiltTargetYOffset = gCurrentPinballGame->tiltYOffset; } } -void sub_4E2F8(void) +void ProcessMainBoardBallDrainAndLaunch(void) { - struct BallState *unk1334; + struct BallState *ballStates; - if (gCurrentPinballGame->unk13 && gCurrentPinballGame->newButtonActions[1] && gCurrentPinballGame->unk20) + if (gCurrentPinballGame->boardState && gCurrentPinballGame->newButtonActions[1] && gCurrentPinballGame->ballInLaunchChute) { - gCurrentPinballGame->unk21 = 1; - gCurrentPinballGame->unk163 = 1; + gCurrentPinballGame->launcherCharging = 1; + gCurrentPinballGame->sapphirePondFlag = 1; } - if (gCurrentPinballGame->unk21 && gCurrentPinballGame->releasedButtonActions[1]) + if (gCurrentPinballGame->launcherCharging && gCurrentPinballGame->releasedButtonActions[1]) { - gCurrentPinballGame->unk163 = 3; - if (gCurrentPinballGame->unk20) + gCurrentPinballGame->sapphirePondFlag = 3; + if (gCurrentPinballGame->ballInLaunchChute) { PlayRumble(7); gCurrentPinballGame->ball->velocity.y = -590; @@ -435,79 +435,79 @@ void sub_4E2F8(void) m4aSongNumStart(SE_UNKNOWN_0xCD); } - gCurrentPinballGame->unk21 = 0; + gCurrentPinballGame->launcherCharging = 0; } - gCurrentPinballGame->ball = &gCurrentPinballGame->unk1334[0]; - unk1334 = &gCurrentPinballGame->unk1334[0]; + gCurrentPinballGame->ball = &gCurrentPinballGame->ballStates[0]; + ballStates = &gCurrentPinballGame->ballStates[0]; - if (unk1334->positionQ0.y >= gUnknown_02031520.unk14.unk2A) + if (ballStates->positionQ0.y >= gBoardConfig.fieldLayout.ballDrainY) { - unk1334->positionQ0.y = gUnknown_02031520.unk14.unk2A; + ballStates->positionQ0.y = gBoardConfig.fieldLayout.ballDrainY; gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2; gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2; gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ0.x << 8; gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ0.y << 8; gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; - if (gMain.unk14 == 0) + if (gMain.modeChangeDelayTimer == 0) { - if (gCurrentPinballGame->unk724) + if (gCurrentPinballGame->modeTimeRemaining) { - gMain.unk14 = 4; - gMain.unk11 = 8; - gMain.unk12 = 204; + gMain.modeChangeDelayTimer = 4; + gMain.pendingModeChangeType = 8; + gMain.animationTimer = 204; } else { - gMain.unk14 = 80; - gMain.unk11 = 16; - gMain.unk12 = 200; + gMain.modeChangeDelayTimer = 80; + gMain.pendingModeChangeType = 16; + gMain.animationTimer = 200; m4aMPlayAllStop(); m4aSongNumStart(MUS_END_OF_BALL); - sub_4E598(); + ResetBoardStateOnDeath(); if (gCurrentPinballGame->outLanePikaPosition == 2 && gMain.eReaderBonuses[EREADER_DX_MODE_CARD] == 0) { - gCurrentPinballGame->unk1BE = 2; - gCurrentPinballGame->unk1C0 = 800; + gCurrentPinballGame->pikaRescuePath = 2; + gCurrentPinballGame->pikaSaverTimer = 800; gCurrentPinballGame->outLanePikaPosition = 0; } } } } - gCurrentPinballGame->unk20 = 0; + gCurrentPinballGame->ballInLaunchChute = 0; } -void sub_4E468(void) +void ProcessBonusBoardBallDrain(void) { - struct BallState *unk1334; + struct BallState *ballStates; - gCurrentPinballGame->ball = &gCurrentPinballGame->unk1334[0]; - unk1334 = &gCurrentPinballGame->unk1334[0]; + gCurrentPinballGame->ball = &gCurrentPinballGame->ballStates[0]; + ballStates = &gCurrentPinballGame->ballStates[0]; - if (unk1334->positionQ0.y >= gUnknown_02031520.unk14.unk2A) + if (ballStates->positionQ0.y >= gBoardConfig.fieldLayout.ballDrainY) { - unk1334->velocity.x = 0; + ballStates->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; if (gMain.modeChangeFlags & MODE_CHANGE_EXPIRED_BONUS) { gCurrentPinballGame->returnToMainBoardFlag = 1; gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER; - gCurrentPinballGame->ball->positionQ0.y = gUnknown_02031520.unk14.unk2A - 10; + gCurrentPinballGame->ball->positionQ0.y = gBoardConfig.fieldLayout.ballDrainY - 10; } else { - gCurrentPinballGame->ball->unk0 = 1; - gCurrentPinballGame->unk388 = 1; - gCurrentPinballGame->unk392 = 0; - gCurrentPinballGame->ball->positionQ0.x = gUnknown_02031520.unk14.unk26; - gCurrentPinballGame->ball->positionQ0.y = gUnknown_02031520.unk14.unk28; + gCurrentPinballGame->ball->ballHidden = 1; + gCurrentPinballGame->ballRespawnState = 1; + gCurrentPinballGame->ballRespawnTimer = 0; + gCurrentPinballGame->ball->positionQ0.x = gBoardConfig.fieldLayout.ballSpawnX; + gCurrentPinballGame->ball->positionQ0.y = gBoardConfig.fieldLayout.ballSpawnY; if (gCurrentPinballGame->ballUpgradeType > BALL_UPGRADE_TYPE_POKE_BALL) gCurrentPinballGame->ballUpgradeType--; gCurrentPinballGame->ballUpgradeCounter = 3600; - DmaCopy16(3, gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], (void *)0x05000220, 0x20); + DmaCopy16(3, gBallPalettes[gCurrentPinballGame->ballUpgradeType], (void *)0x05000220, 0x20); } gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2; @@ -517,41 +517,41 @@ void sub_4E468(void) } } -void sub_4E598(void) +void ResetBoardStateOnDeath(void) { - gCurrentPinballGame->unk18 = 10199; + gCurrentPinballGame->stageTimer = 10199; - if (gCurrentPinballGame->unk13 == 2) - gCurrentPinballGame->unk17 = 5; - if (gCurrentPinballGame->unk13 == 7) - gCurrentPinballGame->unk17 = 6; - if (gCurrentPinballGame->unk13 == 4) - gCurrentPinballGame->unk17 = 10; - if (gCurrentPinballGame->unk13 == 5) - gCurrentPinballGame->unk17 = 6; - if (gCurrentPinballGame->unk13 == 6) - gCurrentPinballGame->unk17 = 8; + if (gCurrentPinballGame->boardState == 2) + gCurrentPinballGame->boardSubState = 5; + if (gCurrentPinballGame->boardState == 7) + gCurrentPinballGame->boardSubState = 6; + if (gCurrentPinballGame->boardState == 4) + gCurrentPinballGame->boardSubState = 10; + if (gCurrentPinballGame->boardState == 5) + gCurrentPinballGame->boardSubState = 6; + if (gCurrentPinballGame->boardState == 6) + gCurrentPinballGame->boardSubState = 8; - gCurrentPinballGame->unk714 = 0; + gCurrentPinballGame->allHolesLit = 0; gCurrentPinballGame->holeIndicators[0] = 0; gCurrentPinballGame->holeIndicators[1] = gCurrentPinballGame->holeIndicators[0]; gCurrentPinballGame->holeIndicators[2] = gCurrentPinballGame->holeIndicators[0]; gCurrentPinballGame->holeIndicators[3] = gCurrentPinballGame->holeIndicators[0]; - gCurrentPinballGame->unk614 = 0; - gCurrentPinballGame->unk208 = 0; - gCurrentPinballGame->unk20A = 0; + gCurrentPinballGame->pikaSpinMomentum = 0; + gCurrentPinballGame->catchOverlayFrameTimer = 0; + gCurrentPinballGame->catchOverlayKeyframeIndex = 0; if (gCurrentPinballGame->outLanePikaPosition != 2 || !gMain.eReaderBonuses[EREADER_DX_MODE_CARD]) { - gCurrentPinballGame->unk1C6 = 0; - gCurrentPinballGame->unk1C8 = 0; - gCurrentPinballGame->unk1CC = 0; - gCurrentPinballGame->unk1CA = 0; - gCurrentPinballGame->unk1D4 = 0; - gCurrentPinballGame->unk1D6 = -4; - gCurrentPinballGame->unk1D8 = 0x100; - gCurrentPinballGame->unk1DA = 0x100; - gCurrentPinballGame->unk1CE = 0; - gCurrentPinballGame->unk1D0 = 0; + gCurrentPinballGame->pikaChargeTarget = 0; + gCurrentPinballGame->pikaChargeProgress = 0; + gCurrentPinballGame->prevCatchCounterValue = 0; + gCurrentPinballGame->catchCounterValue = 0; + gCurrentPinballGame->catchCounterXShift = 0; + gCurrentPinballGame->catchCounterSlideOffsetY = -4; + gCurrentPinballGame->catchCounterAnimState = 0x100; + gCurrentPinballGame->catchCounterScaleY = 0x100; + gCurrentPinballGame->pikachuAnimTimer = 0; + gCurrentPinballGame->catchCounterSlideTimer = 0; } gCurrentPinballGame->ballPowerUpLight[0] = 0; @@ -562,7 +562,7 @@ void sub_4E598(void) { gCurrentPinballGame->ballUpgradeType = BALL_UPGRADE_TYPE_MASTER_BALL; gCurrentPinballGame->ballUpgradeCounter = 60 * 60; - DmaCopy16(3, &gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], (void *)OBJ_PLTT + 0x20, 0x20); + DmaCopy16(3, &gBallPalettes[gCurrentPinballGame->ballUpgradeType], (void *)OBJ_PLTT + 0x20, 0x20); } else { @@ -570,10 +570,10 @@ void sub_4E598(void) gCurrentPinballGame->ballUpgradeCounter = 0; } - gCurrentPinballGame->unk5F7 = 0; - DmaCopy16(3, &gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], (void *)OBJ_PLTT + 0x20, 0x20); - gCurrentPinballGame->unk62F = gCurrentPinballGame->unk70E; - gCurrentPinballGame->unk70E = 1; + gCurrentPinballGame->ballUpgradeTimerFrozen = 0; + DmaCopy16(3, &gBallPalettes[gCurrentPinballGame->ballUpgradeType], (void *)OBJ_PLTT + 0x20, 0x20); + gCurrentPinballGame->bonusMultiplier = gCurrentPinballGame->progressLevel; + gCurrentPinballGame->progressLevel = 1; if (gCurrentPinballGame->whiscashFrameIx == WHISCASH_FRAME_GONE_AFTER_HIT) { gCurrentPinballGame->shouldProcessWhiscash = FALSE; @@ -581,9 +581,9 @@ void sub_4E598(void) gCurrentPinballGame->whiscashStateTimer = 0; gCurrentPinballGame->rubyPondContentsChanging = TRUE; gCurrentPinballGame->rubyPondChangeTimer = 0x40; - gCurrentPinballGame->unk2AA = 0; + gCurrentPinballGame->screenShakeX = 0; } - gCurrentPinballGame->unk300 = 0; + gCurrentPinballGame->rampGateState = 0; } diff --git a/src/board_process3_dusclops.c b/src/board_process3_dusclops.c index feb5366..0079b74 100644 --- a/src/board_process3_dusclops.c +++ b/src/board_process3_dusclops.c @@ -21,20 +21,20 @@ extern s16 DuskullFramesetData[][3]; void DuskullBonus_Setup(void) { s16 i; - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk17 = 0; - gCurrentPinballGame->unk13 = DUSCLOPS_BOARD_STATE_0_INTRO; - gCurrentPinballGame->unk294 = 1; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardSubState = 0; + gCurrentPinballGame->boardState = DUSCLOPS_BOARD_STATE_0_INTRO; + gCurrentPinballGame->boardModeType = 1; gCurrentPinballGame->eventTimer = gCurrentPinballGame->timerBonus + BONUS_DUSKULL_TIME; gCurrentPinballGame->timerBonus = 0; - gCurrentPinballGame->unk383 = 0; - gCurrentPinballGame->unk388 = 3; - gCurrentPinballGame->ball->unk0 = 1; + gCurrentPinballGame->ballGrabbed = 0; + gCurrentPinballGame->ballRespawnState = 3; + gCurrentPinballGame->ball->ballHidden = 1; gCurrentPinballGame->bonusModeHitCount = 0; gCurrentPinballGame->returnToMainBoardFlag = 0; gCurrentPinballGame->boardEntityCollisionMode = DUSCLOPS_ENTITY_COLLISION_MODE_NONE; - gCurrentPinballGame->unk392 = 0; - gCurrentPinballGame->unk394 = 0; + gCurrentPinballGame->ballRespawnTimer = 0; + gCurrentPinballGame->bannerSlideYOffset = 0; gCurrentPinballGame->minionActiveCount = 0; for (i = 0; i < DUSKULL_CONCURRENT_MAX; i++) @@ -56,52 +56,52 @@ void DuskullBonus_Setup(void) gCurrentPinballGame->minionCollisionPosition[i].y = 0; } - gCurrentPinballGame->unk3DC = 0; - gCurrentPinballGame->unk3DE = 0; - gCurrentPinballGame->unk3DF = 0; - gCurrentPinballGame->unk3E0 = 0; - gCurrentPinballGame->unk3E2 = 0; - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E6 = 0; - gCurrentPinballGame->unk3E8 = 0; - gCurrentPinballGame->unk3EA = 0; - gCurrentPinballGame->unk3EC = 0; - gCurrentPinballGame->unk3EE = 0; - gCurrentPinballGame->unk3F0 = 0; - gCurrentPinballGame->unk3F2 = 0; - gCurrentPinballGame->unk1A = 0; + gCurrentPinballGame->bossEntityState = 0; + gCurrentPinballGame->kecleonFramesetBase = 0; + gCurrentPinballGame->bossVulnerable = 0; + gCurrentPinballGame->dusclopsWalkFootIndex = 0; + gCurrentPinballGame->bossFramesetIndex = 0; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossAnimLoopCount = 0; + gCurrentPinballGame->bossPositionX = 0; + gCurrentPinballGame->bossPositionY = 0; + gCurrentPinballGame->bossVelocityX = 0; + gCurrentPinballGame->bossVelocityY = 0; + gCurrentPinballGame->bossCollisionX = 0; + gCurrentPinballGame->bossCollisionY = 0; + gCurrentPinballGame->flippersDisabled = 0; DuskullPhase_ProcessEntityLogic(); DuskullPhase_ProcessGraphics(); m4aSongNumStart(MUS_BONUS_FIELD_DUSKULL); - DmaCopy16(3, (void *)gUnknown_081B36A4, (void *)0x05000320, 32); + DmaCopy16(3, (void *)gBonusStageObjPal, (void *)0x05000320, 32); } void DusclopsBoardProcess_3B_33130(void) { s16 temp; - switch (gCurrentPinballGame->unk13) + switch (gCurrentPinballGame->boardState) { case DUSCLOPS_BOARD_STATE_0_INTRO: - gCurrentPinballGame->unk5F7 = 1; - if (gCurrentPinballGame->unk18 < 120) + gCurrentPinballGame->ballUpgradeTimerFrozen = 1; + if (gCurrentPinballGame->stageTimer < 120) { - temp = gCurrentPinballGame->unk18 / 24; - DmaCopy16(3, gUnknown_082EE0E0 + temp * 40, 0x05000000, 160); + temp = gCurrentPinballGame->stageTimer / 24; + DmaCopy16(3, gDusclopsAnimPalettes + temp * 40, 0x05000000, 160); - gCurrentPinballGame->unkE6 = gCurrentPinballGame->unk18 / 5 + 0xFFE8; - gCurrentPinballGame->unk18++; + gCurrentPinballGame->cameraYAdjust = gCurrentPinballGame->stageTimer / 5 + 0xFFE8; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unkE6 = 0; + gCurrentPinballGame->cameraYAdjust = 0; gMain.spriteGroups[7].available = TRUE; gMain.spriteGroups[8].available = TRUE; gMain.spriteGroups[9].available = TRUE; - gCurrentPinballGame->unk13 = DUSCLOPS_BOARD_STATE_1_DUSKULL_PHASE; - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->boardState = DUSCLOPS_BOARD_STATE_1_DUSKULL_PHASE; + gCurrentPinballGame->stageTimer = 0; } break; @@ -116,7 +116,7 @@ void DusclopsBoardProcess_3B_33130(void) DuskullPhase_ProcessGraphics(); break; case DUSCLOPS_BOARD_STATE_2_INIT_DUSCLOPS_PHASE: - gCurrentPinballGame->unk13 = DUSCLOPS_BOARD_STATE_3_DUSCLOPS_PHASE; + gCurrentPinballGame->boardState = DUSCLOPS_BOARD_STATE_3_DUSCLOPS_PHASE; gMain.spriteGroups[13].available = TRUE; gMain.spriteGroups[14].available = TRUE; gMain.spriteGroups[12].available = TRUE; @@ -133,56 +133,56 @@ void DusclopsBoardProcess_3B_33130(void) DusclopsPhase_ProcessEntityLogicAndGraphics(); break; case DUSCLOPS_BOARD_STATE_4_INIT_SCORE_PHASE: - if (gCurrentPinballGame->unk18 < 120) + if (gCurrentPinballGame->stageTimer < 120) { - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unk13 = DUSCLOPS_BOARD_STATE_SCORE_PHASE; - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->boardState = DUSCLOPS_BOARD_STATE_SCORE_PHASE; + gCurrentPinballGame->stageTimer = 0; gMain.spriteGroups[6].available = TRUE; gMain.spriteGroups[5].available = TRUE; DmaCopy16(3, gDusclopsBonusClear_Gfx, OBJ_VRAM1+0x1800, 8192); - gCurrentPinballGame->unk394 = 136; + gCurrentPinballGame->bannerSlideYOffset = 136; } break; case DUSCLOPS_BOARD_STATE_SCORE_PHASE: - ProceessBonusBannerAndScoring(); + ProcessBonusBannerAndScoring(); if (gCurrentPinballGame->scoreCounterAnimationEnabled) { - gCurrentPinballGame->unk18 = 181; + gCurrentPinballGame->stageTimer = 181; } - if (gCurrentPinballGame->unk18 == 180) + if (gCurrentPinballGame->stageTimer == 180) { gCurrentPinballGame->scoreCounterAnimationEnabled = TRUE; gCurrentPinballGame->scoreAddStepSize = 400000; gCurrentPinballGame->scoreAddedInFrame = BONUS_DUSKULL_COMPLETE_POINTS; } - if (gCurrentPinballGame->unk18 < 240) + if (gCurrentPinballGame->stageTimer < 240) { - if (gCurrentPinballGame->unk18 == 20) + if (gCurrentPinballGame->stageTimer == 20) { m4aMPlayAllStop(); m4aSongNumStart(MUS_SUCCESS3); } - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk13 = DUSCLOPS_BOARD_STATE_SCORE_COUNTING_FINISHED; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardState = DUSCLOPS_BOARD_STATE_SCORE_COUNTING_FINISHED; gCurrentPinballGame->numCompletedBonusStages++; } break; case DUSCLOPS_BOARD_STATE_SCORE_COUNTING_FINISHED: - ProceessBonusBannerAndScoring(); + ProcessBonusBannerAndScoring(); gCurrentPinballGame->returnToMainBoardFlag = 1; break; } - if (gCurrentPinballGame->unk294) + if (gCurrentPinballGame->boardModeType) { if (gCurrentPinballGame->eventTimer < 2) { @@ -272,7 +272,7 @@ void DuskullPhase_ProcessEntityLogic(void) { } if (r4) { - gCurrentPinballGame->unk13 = DUSCLOPS_BOARD_STATE_2_INIT_DUSCLOPS_PHASE; + gCurrentPinballGame->boardState = DUSCLOPS_BOARD_STATE_2_INIT_DUSCLOPS_PHASE; gMain.spriteGroups[7].available = FALSE; gMain.spriteGroups[8].available = FALSE; gMain.spriteGroups[9].available = FALSE; @@ -572,8 +572,8 @@ void DuskullPhase_ProcessGraphics() { if (gCurrentPinballGame->minionDrawInFrame[i]) { s32 x = 0; // Scrub C to get the compiler to add before subtracting - spriteGroup->baseX = gCurrentPinballGame->minionLogicPosition[i].x / 10 + 108 + x - gCurrentPinballGame->unk58; - spriteGroup->baseY = gCurrentPinballGame->minionLogicPosition[i].y / 10 + 28 + x - gCurrentPinballGame->unk5A; + spriteGroup->baseX = gCurrentPinballGame->minionLogicPosition[i].x / 10 + 108 + x - gCurrentPinballGame->cameraXOffset; + spriteGroup->baseY = gCurrentPinballGame->minionLogicPosition[i].y / 10 + 28 + x - gCurrentPinballGame->cameraYOffset; } else { // Draw off screen, past lower right bounds of screen spriteGroup->baseX = 240; @@ -640,54 +640,54 @@ void DusclopsPhase_ProcessEntityLogicAndGraphics(void) tileOffset = 0; spriteGroup = &gMain.spriteGroups[14]; - switch(gCurrentPinballGame->unk3DC) + switch(gCurrentPinballGame->bossEntityState) { case DUSCLOPS_ENTITY_STATE_INIT: { - gCurrentPinballGame->unk3E8 = 880; - gCurrentPinballGame->unk3EA = 300; - gCurrentPinballGame->unk3DC = DUSCLOPS_ENTITY_STATE_INTRO_APPEARANCE; - gCurrentPinballGame->unk3E6 = 184; - gCurrentPinballGame->unk3E2 = DUSCLOPS_FRAME_INTRO_START; + gCurrentPinballGame->bossPositionX = 880; + gCurrentPinballGame->bossPositionY = 300; + gCurrentPinballGame->bossEntityState = DUSCLOPS_ENTITY_STATE_INTRO_APPEARANCE; + gCurrentPinballGame->bossAnimLoopCount = 184; + gCurrentPinballGame->bossFramesetIndex = DUSCLOPS_FRAME_INTRO_START; tileOffset = 0; - gCurrentPinballGame->unk294 = 1; + gCurrentPinballGame->boardModeType = 1; break; } case DUSCLOPS_ENTITY_STATE_INTRO_APPEARANCE: { - if (DuclopsFramesetData[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) - gCurrentPinballGame->unk3E4++; + if (DuclopsFramesetData[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) + gCurrentPinballGame->bossFrameTimer++; else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; - if (gCurrentPinballGame->unk3E2 > DUSCLOPS_FRAME_INTRO_END) + if (gCurrentPinballGame->bossFramesetIndex > DUSCLOPS_FRAME_INTRO_END) { - gCurrentPinballGame->unk3E2 = DUSCLOPS_FRAME_INTRO_START; + gCurrentPinballGame->bossFramesetIndex = DUSCLOPS_FRAME_INTRO_START; - if (gCurrentPinballGame->unk3E0 <= 0) - gCurrentPinballGame->unk3E0++; + if (gCurrentPinballGame->dusclopsWalkFootIndex <= 0) + gCurrentPinballGame->dusclopsWalkFootIndex++; else { - gCurrentPinballGame->unk3E0 = 0; - gCurrentPinballGame->unk3DC = DUSCLOPS_ENTITY_STATE_GUARD_READY; + gCurrentPinballGame->dusclopsWalkFootIndex = 0; + gCurrentPinballGame->bossEntityState = DUSCLOPS_ENTITY_STATE_GUARD_READY; } } - if (gCurrentPinballGame->unk3E2 == DUSCLOPS_FRAME_INTRO_FOOTSTEP_LEFT) + if (gCurrentPinballGame->bossFramesetIndex == DUSCLOPS_FRAME_INTRO_FOOTSTEP_LEFT) { - gCurrentPinballGame->unk129 = 0; - gCurrentPinballGame->unk128 = 1; + gCurrentPinballGame->boardShakeDirection = 0; + gCurrentPinballGame->boardShakeIntensity = 1; m4aSongNumStart(SE_DUSCLOPS_MOVE); PlayRumble(8); } - if (gCurrentPinballGame->unk3E2 == DUSCLOPS_FRAME_INTRO_FOOTSTEP_RIGHT) + if (gCurrentPinballGame->bossFramesetIndex == DUSCLOPS_FRAME_INTRO_FOOTSTEP_RIGHT) { - gCurrentPinballGame->unk129 = 1; - gCurrentPinballGame->unk128 = 1; + gCurrentPinballGame->boardShakeDirection = 1; + gCurrentPinballGame->boardShakeIntensity = 1; m4aSongNumStart(SE_DUSCLOPS_MOVE); PlayRumble(8); @@ -699,147 +699,147 @@ void DusclopsPhase_ProcessEntityLogicAndGraphics(void) } case DUSCLOPS_ENTITY_STATE_GUARD_READY: { - if (gCurrentPinballGame->unk3E4 <= 255) + if (gCurrentPinballGame->bossFrameTimer <= 255) { - tileOffset = gUnknown_08137D40[(gCurrentPinballGame->unk3E4 % 0x40) / 16]; - gCurrentPinballGame->unk3E4++; + tileOffset = gDusclopsBossAnimFrames[(gCurrentPinballGame->bossFrameTimer % 0x40) / 16]; + gCurrentPinballGame->bossFrameTimer++; - if (gCurrentPinballGame->unk3E4 == 256) + if (gCurrentPinballGame->bossFrameTimer == 256) { - gCurrentPinballGame->unk3DC = DUSCLOPS_ENTITY_STATE_WALKING; - gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->bossEntityState = DUSCLOPS_ENTITY_STATE_WALKING; + gCurrentPinballGame->bossFrameTimer = 0; - if (gCurrentPinballGame->unk3E0 > 3) - gCurrentPinballGame->unk3E0 = 0; - if (gCurrentPinballGame->unk3E0 <= 1) - gCurrentPinballGame->unk3E2 = DUSCLOPS_FRAME_WALK_NEUTRAL; + if (gCurrentPinballGame->dusclopsWalkFootIndex > 3) + gCurrentPinballGame->dusclopsWalkFootIndex = 0; + if (gCurrentPinballGame->dusclopsWalkFootIndex <= 1) + gCurrentPinballGame->bossFramesetIndex = DUSCLOPS_FRAME_WALK_NEUTRAL; else - gCurrentPinballGame->unk3E2 = DUSCLOPS_FRAME_RIGHT_FOOT_FORWARD; + gCurrentPinballGame->bossFramesetIndex = DUSCLOPS_FRAME_RIGHT_FOOT_FORWARD; } } - if (gCurrentPinballGame->unk3E6 > 0) + if (gCurrentPinballGame->bossAnimLoopCount > 0) { - if (gCurrentPinballGame->unk3E6 > 64) - gCurrentPinballGame->unk3E6--; + if (gCurrentPinballGame->bossAnimLoopCount > 64) + gCurrentPinballGame->bossAnimLoopCount--; else - gCurrentPinballGame->unk3E6 -= 2; + gCurrentPinballGame->bossAnimLoopCount -= 2; - if (gCurrentPinballGame->unk3E6 == 154) + if (gCurrentPinballGame->bossAnimLoopCount == 154) m4aSongNumStart(SE_DUSCLOPS_APPEAR); //Dusclops Appears } else { gCurrentPinballGame->boardEntityCollisionMode = DUSCLOPS_ENTITY_COLLISION_MODE_DUSCLOPS; - gCurrentPinballGame->unk294 = 2; + gCurrentPinballGame->boardModeType = 2; } break; } case DUSCLOPS_ENTITY_STATE_WALKING: { - if (DuclopsFramesetData[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (DuclopsFramesetData[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->bossFrameTimer = 0; - if (gCurrentPinballGame->unk3E0 <= 1) + if (gCurrentPinballGame->dusclopsWalkFootIndex <= 1) { - gCurrentPinballGame->unk3E2++; + gCurrentPinballGame->bossFramesetIndex++; - if (gCurrentPinballGame->unk3E2 > DUSCLOPS_FRAME_RIGHT_FOOT_FORWARD) + if (gCurrentPinballGame->bossFramesetIndex > DUSCLOPS_FRAME_RIGHT_FOOT_FORWARD) { - gCurrentPinballGame->unk3E2 = DUSCLOPS_FRAME_WALK_NEUTRAL; - gCurrentPinballGame->unk3E0++; + gCurrentPinballGame->bossFramesetIndex = DUSCLOPS_FRAME_WALK_NEUTRAL; + gCurrentPinballGame->dusclopsWalkFootIndex++; - if ((gCurrentPinballGame->unk3E0 & 1) == 0) + if ((gCurrentPinballGame->dusclopsWalkFootIndex & 1) == 0) { - gCurrentPinballGame->unk3DC = DUSCLOPS_ENTITY_STATE_GUARD_READY; - gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->bossEntityState = DUSCLOPS_ENTITY_STATE_GUARD_READY; + gCurrentPinballGame->bossFrameTimer = 0; } } } - else if (--gCurrentPinballGame->unk3E2 < 0) + else if (--gCurrentPinballGame->bossFramesetIndex < 0) { - gCurrentPinballGame->unk3E0++; + gCurrentPinballGame->dusclopsWalkFootIndex++; - if ((gCurrentPinballGame->unk3E0 & 1) == 0) + if ((gCurrentPinballGame->dusclopsWalkFootIndex & 1) == 0) { - gCurrentPinballGame->unk3DC = DUSCLOPS_ENTITY_STATE_GUARD_READY; - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2 = DUSCLOPS_FRAME_WALK_NEUTRAL; + gCurrentPinballGame->bossEntityState = DUSCLOPS_ENTITY_STATE_GUARD_READY; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex = DUSCLOPS_FRAME_WALK_NEUTRAL; } else - gCurrentPinballGame->unk3E2 = DUSCLOPS_FRAME_RIGHT_FOOT_FORWARD; + gCurrentPinballGame->bossFramesetIndex = DUSCLOPS_FRAME_RIGHT_FOOT_FORWARD; } - if (gCurrentPinballGame->unk3E2 == DUSCLOPS_FRAME_LEFT_FOOT_LANDS) + if (gCurrentPinballGame->bossFramesetIndex == DUSCLOPS_FRAME_LEFT_FOOT_LANDS) { - gCurrentPinballGame->unk129 = 0; - gCurrentPinballGame->unk128 = 1; + gCurrentPinballGame->boardShakeDirection = 0; + gCurrentPinballGame->boardShakeIntensity = 1; m4aSongNumStart(SE_DUSCLOPS_MOVE); PlayRumble(8); } - if (gCurrentPinballGame->unk3E2 == DUSCLOPS_FRAME_RIGHT_FOOT_LANDS) + if (gCurrentPinballGame->bossFramesetIndex == DUSCLOPS_FRAME_RIGHT_FOOT_LANDS) { - gCurrentPinballGame->unk129 = 1; - gCurrentPinballGame->unk128 = 1; + gCurrentPinballGame->boardShakeDirection = 1; + gCurrentPinballGame->boardShakeIntensity = 1; m4aSongNumStart(SE_DUSCLOPS_MOVE); PlayRumble(8); } } - tileOffset = DuclopsFramesetData[gCurrentPinballGame->unk3E2][0]; + tileOffset = DuclopsFramesetData[gCurrentPinballGame->bossFramesetIndex][0]; - if( gCurrentPinballGame->unk3E2 == DUSCLOPS_FRAME_WALK_NEUTRAL || - gCurrentPinballGame->unk3E2 == DUSCLOPS_FRAME_WALK_NEUTRAL_RIGHT_FOOT_FORWARD ) + if( gCurrentPinballGame->bossFramesetIndex == DUSCLOPS_FRAME_WALK_NEUTRAL || + gCurrentPinballGame->bossFramesetIndex == DUSCLOPS_FRAME_WALK_NEUTRAL_RIGHT_FOOT_FORWARD ) { break; } - if (gCurrentPinballGame->unk3E0 <= 1) + if (gCurrentPinballGame->dusclopsWalkFootIndex <= 1) { - if (gCurrentPinballGame->unk3EA <= 583) + if (gCurrentPinballGame->bossPositionY <= 583) { - gCurrentPinballGame->unk3EA++; + gCurrentPinballGame->bossPositionY++; break; } - if ((gCurrentPinballGame->unk3E2 % 4) != 0) + if ((gCurrentPinballGame->bossFramesetIndex % 4) != 0) break; - gCurrentPinballGame->unk3DC = DUSCLOPS_ENTITY_STATE_GUARD_READY; - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2 = DUSCLOPS_FRAME_WALK_NEUTRAL; - gCurrentPinballGame->unk3E0 = 2; + gCurrentPinballGame->bossEntityState = DUSCLOPS_ENTITY_STATE_GUARD_READY; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex = DUSCLOPS_FRAME_WALK_NEUTRAL; + gCurrentPinballGame->dusclopsWalkFootIndex = 2; break; } - if (gCurrentPinballGame->unk3EA > 300) + if (gCurrentPinballGame->bossPositionY > 300) { - gCurrentPinballGame->unk3EA--; + gCurrentPinballGame->bossPositionY--; break; } - if ((gCurrentPinballGame->unk3E2 % 4) != 0) + if ((gCurrentPinballGame->bossFramesetIndex % 4) != 0) break; - gCurrentPinballGame->unk3DC = DUSCLOPS_ENTITY_STATE_GUARD_READY; - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2 = DUSCLOPS_FRAME_WALK_NEUTRAL; - gCurrentPinballGame->unk3E0 = 4; + gCurrentPinballGame->bossEntityState = DUSCLOPS_ENTITY_STATE_GUARD_READY; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex = DUSCLOPS_FRAME_WALK_NEUTRAL; + gCurrentPinballGame->dusclopsWalkFootIndex = 4; break; } case DUSCLOPS_ENTITY_STATE_HIT: { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2 = DUSCLOPS_FRAME_WALK_NEUTRAL; - gCurrentPinballGame->unk3DC = DUSCLOPS_ENTITY_STATE_HIT_STUN; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex = DUSCLOPS_FRAME_WALK_NEUTRAL; + gCurrentPinballGame->bossEntityState = DUSCLOPS_ENTITY_STATE_HIT_STUN; tileOffset = DUSCLOPS_TILE_OFFSET_HIT; m4aSongNumStart(SE_DUSCLOPS_HIT); //Dusclops hit @@ -849,24 +849,24 @@ void DusclopsPhase_ProcessEntityLogicAndGraphics(void) } case DUSCLOPS_ENTITY_STATE_HIT_STUN: { - if (gCurrentPinballGame->unk3E4 <= 27) + if (gCurrentPinballGame->bossFrameTimer <= 27) { tileOffset = DUSCLOPS_TILE_OFFSET_HIT; - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; break; } if (gCurrentPinballGame->bonusModeHitCount < DUSCLOPS_HITS_NEEDED_TO_SUCCEED -1) { - gCurrentPinballGame->unk3E4 = 128; - gCurrentPinballGame->unk3E2 = DUSCLOPS_FRAME_WALK_NEUTRAL; - gCurrentPinballGame->unk3DC = DUSCLOPS_ENTITY_STATE_GUARD_READY; + gCurrentPinballGame->bossFrameTimer = 128; + gCurrentPinballGame->bossFramesetIndex = DUSCLOPS_FRAME_WALK_NEUTRAL; + gCurrentPinballGame->bossEntityState = DUSCLOPS_ENTITY_STATE_GUARD_READY; gCurrentPinballGame->boardEntityCollisionMode = DUSCLOPS_ENTITY_COLLISION_MODE_NONE; tileOffset = DUSCLOPS_TILE_OFFSET_HIT; } else { - gCurrentPinballGame->unk3DC = DUSCLOPS_ENTITY_STATE_VANISH; + gCurrentPinballGame->bossEntityState = DUSCLOPS_ENTITY_STATE_VANISH; tileOffset = DUSCLOPS_TILE_OFFSET_HIT; } @@ -879,117 +879,117 @@ void DusclopsPhase_ProcessEntityLogicAndGraphics(void) { struct Vector16 tempVector; - gCurrentPinballGame->unk3E2 = DUSCLOPS_FRAME_ABSORB_START; - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3DC = DUSCLOPS_ENTITY_STATE_ABSORBED_BALL; - gCurrentPinballGame->unk5A6 = 0; + gCurrentPinballGame->bossFramesetIndex = DUSCLOPS_FRAME_ABSORB_START; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossEntityState = DUSCLOPS_ENTITY_STATE_ABSORBED_BALL; + gCurrentPinballGame->captureSequenceFrame = 0; tileOffset = DUSCLOPS_TILE_OFFSET_ABSORB_START; m4aSongNumStart(SE_DUSCLOPS_BALL_ABSORB); //Dusclops absorbs ball - gCurrentPinballGame->unk288 = (gCurrentPinballGame->unk3E8 / 10) + 32; - gCurrentPinballGame->unk28A = (gCurrentPinballGame->unk3EA / 10) + 36; + gCurrentPinballGame->catchTargetX = (gCurrentPinballGame->bossPositionX / 10) + 32; + gCurrentPinballGame->catchTargetY = (gCurrentPinballGame->bossPositionY / 10) + 36; - tempVector.x = (gCurrentPinballGame->unk288 << 8) - gCurrentPinballGame->ball->positionQ8.x; - tempVector.y = (gCurrentPinballGame->unk28A << 8) - gCurrentPinballGame->ball->positionQ8.y; + tempVector.x = (gCurrentPinballGame->catchTargetX << 8) - gCurrentPinballGame->ball->positionQ8.x; + tempVector.y = (gCurrentPinballGame->catchTargetY << 8) - gCurrentPinballGame->ball->positionQ8.y; - gCurrentPinballGame->unk5AC = (tempVector.x * tempVector.x) + (tempVector.y * tempVector.y); - gCurrentPinballGame->unk5AC = Sqrt(gCurrentPinballGame->unk5AC * 4) / 2; - gCurrentPinballGame->unk5B0 = ArcTan2(-tempVector.x, tempVector.y); + gCurrentPinballGame->trapSpinRadius = (tempVector.x * tempVector.x) + (tempVector.y * tempVector.y); + gCurrentPinballGame->trapSpinRadius = Sqrt(gCurrentPinballGame->trapSpinRadius * 4) / 2; + gCurrentPinballGame->trapAngleQ16 = ArcTan2(-tempVector.x, tempVector.y); PlayRumble(13); break; } case DUSCLOPS_ENTITY_STATE_ABSORBED_BALL: { - if (DuclopsFramesetData[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) - gCurrentPinballGame->unk3E4++; + if (DuclopsFramesetData[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) + gCurrentPinballGame->bossFrameTimer++; else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; - if (gCurrentPinballGame->unk3E2 == DUSCLOPS_FRAME_ABSORB_LAUNCH_PREP) + if (gCurrentPinballGame->bossFramesetIndex == DUSCLOPS_FRAME_ABSORB_LAUNCH_PREP) { gCurrentPinballGame->ball->velocity.x = (gMain.systemFrameCount % 2 * 300) + 65386; gCurrentPinballGame->ball->velocity.y = 300; - gCurrentPinballGame->ball->unk0 = 0; + gCurrentPinballGame->ball->ballHidden = 0; m4aSongNumStart(SE_DUSCLOPS_BALL_LAUNCH); //Dusclops launch ball PlayRumble(8); } - if (gCurrentPinballGame->unk3E2 == DUSCLOPS_FRAME_ABSOLB_LAUNCH) - gCurrentPinballGame->unk1F = 0; + if (gCurrentPinballGame->bossFramesetIndex == DUSCLOPS_FRAME_ABSOLB_LAUNCH) + gCurrentPinballGame->ballFrozenState = 0; - if (gCurrentPinballGame->unk3E2 > DUSCLOPS_FRAME_ABSOLB_LAUNCH) + if (gCurrentPinballGame->bossFramesetIndex > DUSCLOPS_FRAME_ABSOLB_LAUNCH) { - gCurrentPinballGame->unk3E4 = 128; - gCurrentPinballGame->unk3E2 = DUSCLOPS_FRAME_WALK_NEUTRAL; - gCurrentPinballGame->unk3DC = DUSCLOPS_ENTITY_STATE_GUARD_READY; + gCurrentPinballGame->bossFrameTimer = 128; + gCurrentPinballGame->bossFramesetIndex = DUSCLOPS_FRAME_WALK_NEUTRAL; + gCurrentPinballGame->bossEntityState = DUSCLOPS_ENTITY_STATE_GUARD_READY; } } if (gCurrentPinballGame->ballSpeed != 0) { - if ((gCurrentPinballGame->unk3E2 == DUSCLOPS_FRAME_ABSOLB_LAUNCH) && (gCurrentPinballGame->unk3E4 > 4)) + if ((gCurrentPinballGame->bossFramesetIndex == DUSCLOPS_FRAME_ABSOLB_LAUNCH) && (gCurrentPinballGame->bossFrameTimer > 4)) gCurrentPinballGame->boardEntityCollisionMode = DUSCLOPS_ENTITY_COLLISION_MODE_DUSCLOPS; } else { - if ((gCurrentPinballGame->unk3E2 == DUSCLOPS_FRAME_ABSOLB_LAUNCH) && (gCurrentPinballGame->unk3E4 != 0)) + if ((gCurrentPinballGame->bossFramesetIndex == DUSCLOPS_FRAME_ABSOLB_LAUNCH) && (gCurrentPinballGame->bossFrameTimer != 0)) gCurrentPinballGame->boardEntityCollisionMode = DUSCLOPS_ENTITY_COLLISION_MODE_DUSCLOPS; } - if (gCurrentPinballGame->unk5A6 <= 29) + if (gCurrentPinballGame->captureSequenceFrame <= 29) { - s16 tr4 = 29 - gCurrentPinballGame->unk5A6; + s16 tr4 = 29 - gCurrentPinballGame->captureSequenceFrame; s32 sl; - gCurrentPinballGame->unk5B0 -= ((tr4 * 8192) / 30) - 8192; - gCurrentPinballGame->ball->unkA = gCurrentPinballGame->ball->unkA - 8192; + gCurrentPinballGame->trapAngleQ16 -= ((tr4 * 8192) / 30) - 8192; + gCurrentPinballGame->ball->spinAngle = gCurrentPinballGame->ball->spinAngle - 8192; - sl = (gCurrentPinballGame->unk5AC * tr4) / 30; + sl = (gCurrentPinballGame->trapSpinRadius * tr4) / 30; - gCurrentPinballGame->ball->positionQ8.x = (gCurrentPinballGame->unk288 * 256) + ((Cos(gCurrentPinballGame->unk5B0) * sl) / 20000); + gCurrentPinballGame->ball->positionQ8.x = (gCurrentPinballGame->catchTargetX * 256) + ((Cos(gCurrentPinballGame->trapAngleQ16) * sl) / 20000); - gCurrentPinballGame->ball->positionQ8.y = (gCurrentPinballGame->unk28A * 256) - ((Sin(gCurrentPinballGame->unk5B0) * sl) / 20000); + gCurrentPinballGame->ball->positionQ8.y = (gCurrentPinballGame->catchTargetY * 256) - ((Sin(gCurrentPinballGame->trapAngleQ16) * sl) / 20000); gCurrentPinballGame->ball->velocity.x = (gCurrentPinballGame->ball->velocity.x * 4) / 5; gCurrentPinballGame->ball->velocity.y = (gCurrentPinballGame->ball->velocity.y * 4) / 5; } - if (gCurrentPinballGame->unk5A6 == 40) + if (gCurrentPinballGame->captureSequenceFrame == 40) { - gCurrentPinballGame->ball->unk0 = 1; + gCurrentPinballGame->ball->ballHidden = 1; gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; } - gCurrentPinballGame->unk5A6++; - tileOffset = DuclopsFramesetData[gCurrentPinballGame->unk3E2][0]; + gCurrentPinballGame->captureSequenceFrame++; + tileOffset = DuclopsFramesetData[gCurrentPinballGame->bossFramesetIndex][0]; break; } case DUSCLOPS_ENTITY_STATE_VANISH: { - gCurrentPinballGame->unk294 = 3; + gCurrentPinballGame->boardModeType = 3; gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER; - if (gCurrentPinballGame->unk3E6 == 0) + if (gCurrentPinballGame->bossAnimLoopCount == 0) { - gCurrentPinballGame->unk388 = 2; - gCurrentPinballGame->unk392 = 0; + gCurrentPinballGame->ballRespawnState = 2; + gCurrentPinballGame->ballRespawnTimer = 0; } tileOffset = DUSCLOPS_TILE_OFFSET_VANQUISHED; - if (gCurrentPinballGame->unk3E6 <= 183) + if (gCurrentPinballGame->bossAnimLoopCount <= 183) { - if (gCurrentPinballGame->unk3E6 <= 63) - gCurrentPinballGame->unk3E6++; + if (gCurrentPinballGame->bossAnimLoopCount <= 63) + gCurrentPinballGame->bossAnimLoopCount++; else - gCurrentPinballGame->unk3E6 += 2; + gCurrentPinballGame->bossAnimLoopCount += 2; - if (gCurrentPinballGame->unk3E6 == 30) + if (gCurrentPinballGame->bossAnimLoopCount == 30) { MPlayStart(&gMPlayInfo_SE1, &se_dusclops_appear); } @@ -999,8 +999,8 @@ void DusclopsPhase_ProcessEntityLogicAndGraphics(void) gMain.spriteGroups[13].available = FALSE; gMain.spriteGroups[14].available = FALSE; gMain.spriteGroups[12].available = FALSE; - gCurrentPinballGame->unk13 = DUSCLOPS_BOARD_STATE_4_INIT_SCORE_PHASE; - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->boardState = DUSCLOPS_BOARD_STATE_4_INIT_SCORE_PHASE; + gCurrentPinballGame->stageTimer = 0; break; } default: @@ -1009,21 +1009,21 @@ void DusclopsPhase_ProcessEntityLogicAndGraphics(void) DmaCopy16(3 , gDusclopsBoardDusclops_Gfx + tileOffset * 1024, (void *)OBJ_VRAM0+0x10a0, BG_SCREEN_SIZE); - gCurrentPinballGame->unk3F0 = ((gCurrentPinballGame->unk3E8 / 10) * 2) + 16; - gCurrentPinballGame->unk3F2 = ((gCurrentPinballGame->unk3EA / 10) * 2) + 16; + gCurrentPinballGame->bossCollisionX = ((gCurrentPinballGame->bossPositionX / 10) * 2) + 16; + gCurrentPinballGame->bossCollisionY = ((gCurrentPinballGame->bossPositionY / 10) * 2) + 16; // Draw dusclops if(spriteGroup->available != 0) { struct OamDataSimple *new_var; - spriteGroup->baseX = (-gCurrentPinballGame->unk58) + (gCurrentPinballGame->unk3E8 / 10); - spriteGroup->baseY = (-gCurrentPinballGame->unk5A) + (gCurrentPinballGame->unk3EA / 10); + spriteGroup->baseX = (-gCurrentPinballGame->cameraXOffset) + (gCurrentPinballGame->bossPositionX / 10); + spriteGroup->baseY = (-gCurrentPinballGame->cameraYOffset) + (gCurrentPinballGame->bossPositionY / 10); oamSimple = spriteGroup->oam; if (tileOffset == DUSCLOPS_TILE_OFFSET_HIT) { - if (gCurrentPinballGame->unk3E4 <= 5) + if (gCurrentPinballGame->bossFrameTimer <= 5) gOamBuffer[oamSimple->oamId].paletteNum = 4; else gOamBuffer[oamSimple->oamId].paletteNum = 3; @@ -1043,9 +1043,9 @@ void DusclopsPhase_ProcessEntityLogicAndGraphics(void) { u32 offY = 92; - spriteGroup->baseX = -gCurrentPinballGame->unk58 + (gCurrentPinballGame->unk3E8 / 10); - spriteGroup->baseY = -gCurrentPinballGame->unk5A + (gCurrentPinballGame->unk3EA / 10) - + ((gCurrentPinballGame->unk3E6 / 2) - offY); + spriteGroup->baseX = -gCurrentPinballGame->cameraXOffset + (gCurrentPinballGame->bossPositionX / 10); + spriteGroup->baseY = -gCurrentPinballGame->cameraYOffset + (gCurrentPinballGame->bossPositionY / 10) + + ((gCurrentPinballGame->bossAnimLoopCount / 2) - offY); } else { @@ -1075,13 +1075,13 @@ void DusclopsPhase_ProcessEntityLogicAndGraphics(void) { s32 offX = 16; s32 offY = 20; - spriteGroup->baseX = gCurrentPinballGame->unk3E8 / 10 + offX - gCurrentPinballGame->unk58; - if (gCurrentPinballGame->unk3E2 >= DUSCLOPS_FRAME_ABSORB_VORTEX_START && - gCurrentPinballGame->unk3E2 <= DUSCLOPS_FRAME_ABSORB_VORTEX_END ) + spriteGroup->baseX = gCurrentPinballGame->bossPositionX / 10 + offX - gCurrentPinballGame->cameraXOffset; + if (gCurrentPinballGame->bossFramesetIndex >= DUSCLOPS_FRAME_ABSORB_VORTEX_START && + gCurrentPinballGame->bossFramesetIndex <= DUSCLOPS_FRAME_ABSORB_VORTEX_END ) { s16 r0; - spriteGroup->baseY = ((gCurrentPinballGame->unk3EA / 10) + offY) - gCurrentPinballGame->unk5A; - r0 = gCurrentPinballGame->unk5A6 % 24; + spriteGroup->baseY = ((gCurrentPinballGame->bossPositionY / 10) + offY) - gCurrentPinballGame->cameraYOffset; + r0 = gCurrentPinballGame->captureSequenceFrame % 24; if(r0 <= 10) tileOffset = 0; else if (r0 <= 17) diff --git a/src/board_process3_groudon.c b/src/board_process3_groudon.c index e7fb39b..153604c 100644 --- a/src/board_process3_groudon.c +++ b/src/board_process3_groudon.c @@ -5,255 +5,255 @@ extern const u8 gGroudonBonusClear_Gfx[]; -extern const u8 gUnknown_08352BD8[]; -extern const u8 gUnknown_0849F1CC[]; -extern const s8 gUnknown_084A11EC[][0x300]; +extern const u8 gGroudonLavaPaletteCycleData[]; +extern const u8 gGroudonBoardBackgroundGfx[]; +extern const s8 gGroudonBoulderSpriteFrames[][0x300]; extern struct SongHeader se_unk_118; extern struct SongHeader se_unk_11b; extern struct SongHeader se_unk_11c; extern struct SongHeader se_unk_11d; extern struct SongHeader se_unk_11f; -extern const s16 gUnknown_086AEE20[]; -extern const s16 gUnknown_086AEF28[]; -extern const u16 gUnknown_086AEF40[][31]; -extern const u16 gUnknown_086AF0B4[]; -extern const u16 gUnknown_086AF140[][2]; -extern const struct Vector16 gUnknown_086AF2CC[]; -extern const u16 gUnknown_086AF2DC[][2]; -extern const s16 gUnknown_086AF34C[][3]; -extern const s16 gUnknown_086AF3AC[]; -extern const s16 gUnknown_086AF3B2[]; -extern const s16 gUnknown_086AF3BE[]; -extern const u16 gUnknown_086AF3C6[]; -extern const u16 gUnknown_086B63AA[12][2][3]; -extern const u16 gUnknown_086B63F2[24][4][3]; -extern const u16 gUnknown_086B6512[12][6][3]; -extern const u16 gUnknown_086B65EA[166][19][3]; -extern const u16 gUnknown_086B8AE0[58][10][3]; +extern const s16 gShockwaveSplashDistanceThresholds[]; +extern const s16 gScreenShakeOscillationValues[]; +extern const u16 gGroudonFootstepShakePatterns[][31]; +extern const u16 gGroudonCryShakePattern[]; +extern const u16 gGroudonAnimFramesetTable[][2]; +extern const struct Vector16 gGroudonFirePillarBasePositions[]; +extern const u16 gGroudonFirePillarAnimFrameset[][2]; +extern const s16 gGroudonBoulderPositionTable[][3]; +extern const s16 gGroudonBoulderBaseSpriteIndices[]; +extern const s16 gGroudonLavaPaletteAnimIndices[]; +extern const s16 gGroudonBgTileAnimIndices[]; +extern const u16 gGroudonBgSpriteBaseTileNums[]; +extern const u16 gGroudonBallGrabOamData[12][2][3]; +extern const u16 gGroudonProjectileOamData[24][4][3]; +extern const u16 gGroudonProjectileAttackOamData[12][6][3]; +extern const u16 gGroudonMainBodyOamData[166][19][3]; +extern const u16 gGroudonFirePillarOamData[58][10][3]; void GroudonBoardProcess_3A_3B120(void) { s16 i; - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk17 = 0; - gCurrentPinballGame->unk13 = 0; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardSubState = 0; + gCurrentPinballGame->boardState = 0; if (gCurrentPinballGame->numCompletedBonusStages % 5 == 3) gCurrentPinballGame->legendaryHitsRequired = 18; else gCurrentPinballGame->legendaryHitsRequired = 15; - gCurrentPinballGame->unk294 = 0; + gCurrentPinballGame->boardModeType = 0; gCurrentPinballGame->eventTimer = gCurrentPinballGame->timerBonus + 10800; gCurrentPinballGame->timerBonus = 0; - gCurrentPinballGame->unk388 = 3; - gCurrentPinballGame->unk392 = 0; - gCurrentPinballGame->ball->unk0 = 1; + gCurrentPinballGame->ballRespawnState = 3; + gCurrentPinballGame->ballRespawnTimer = 0; + gCurrentPinballGame->ball->ballHidden = 1; gCurrentPinballGame->returnToMainBoardFlag = 0; gCurrentPinballGame->boardEntityCollisionMode = 1; - gCurrentPinballGame->unk6C4 = 3; - gCurrentPinballGame->unk382 = 0; - gCurrentPinballGame->unk383 = 0; + gCurrentPinballGame->portraitDisplayState = 3; + gCurrentPinballGame->bossPhaseCounter = 0; + gCurrentPinballGame->ballGrabbed = 0; gCurrentPinballGame->bonusModeHitCount = 0; - gCurrentPinballGame->unk389 = 0; - gCurrentPinballGame->unk38E = 0; - gCurrentPinballGame->unk390 = 0; - gCurrentPinballGame->unk394 = 0; - gCurrentPinballGame->unk3DC = 0; - gCurrentPinballGame->unk3DD = 0; - gCurrentPinballGame->unk3DE = 0; - gCurrentPinballGame->unk3DF = 0; - gCurrentPinballGame->unk3E0 = 0; - gCurrentPinballGame->unk3E2 = 0; - gCurrentPinballGame->unk3E1 = 0; - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E6 = 0; - gCurrentPinballGame->unk3E8 = 0; - gCurrentPinballGame->unk3EA = 0; - gCurrentPinballGame->unk3EC = 0; - gCurrentPinballGame->unk3EE = 0; - gCurrentPinballGame->unk3F0 = 0; - gCurrentPinballGame->unk3F2 = 0; - gCurrentPinballGame->unk452 = 0; - gCurrentPinballGame->unk456 = 0; - gCurrentPinballGame->unk47C = 0; - gCurrentPinballGame->unk47D = 0; - gCurrentPinballGame->unk47E = 0; - gCurrentPinballGame->unk47F = 0; - gCurrentPinballGame->unk480 = 0; - gCurrentPinballGame->unk482 = 0; - gCurrentPinballGame->unk484 = 0; - gCurrentPinballGame->unk486 = 0; - gCurrentPinballGame->unk488.x = 0; - gCurrentPinballGame->unk488.y = 0; - gCurrentPinballGame->unk4C4 = 0; - gCurrentPinballGame->unk4C6 = 0; - gCurrentPinballGame->unk4C8 = 0; - gCurrentPinballGame->unk4CA = 0; - gCurrentPinballGame->unk4C9 = 0; + gCurrentPinballGame->legendaryFlashState = 0; + gCurrentPinballGame->bossAttackTimer = 0; + gCurrentPinballGame->bossRoarTimer = 0; + gCurrentPinballGame->bannerSlideYOffset = 0; + gCurrentPinballGame->bossEntityState = 0; + gCurrentPinballGame->bossAttackPhase = 0; + gCurrentPinballGame->kecleonFramesetBase = 0; + gCurrentPinballGame->bossVulnerable = 0; + gCurrentPinballGame->dusclopsWalkFootIndex = 0; + gCurrentPinballGame->bossFramesetIndex = 0; + gCurrentPinballGame->bossMovementPhase = 0; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossAnimLoopCount = 0; + gCurrentPinballGame->bossPositionX = 0; + gCurrentPinballGame->bossPositionY = 0; + gCurrentPinballGame->bossVelocityX = 0; + gCurrentPinballGame->bossVelocityY = 0; + gCurrentPinballGame->bossCollisionX = 0; + gCurrentPinballGame->bossCollisionY = 0; + gCurrentPinballGame->bossHitFlashTimer = 0; + gCurrentPinballGame->shockwaveAnimTimer = 0; + gCurrentPinballGame->projectileAttackCount = 0; + gCurrentPinballGame->projectileDirection = 0; + gCurrentPinballGame->projectileAttackAnimTimer = 0; + gCurrentPinballGame->ballGrabShakeTimer = 0; + gCurrentPinballGame->ballGrabFlashTimer = 0; + gCurrentPinballGame->projectileFlightTimer = 0; + gCurrentPinballGame->projectileAngle = 0; + gCurrentPinballGame->ballGrabTimer = 0; + gCurrentPinballGame->projectilePosition.x = 0; + gCurrentPinballGame->projectilePosition.y = 0; + gCurrentPinballGame->firePillarSpawnSfxTimer = 0; + gCurrentPinballGame->bossDropVelocity = 0; + gCurrentPinballGame->impactShakeTimer = 0; + gCurrentPinballGame->footstepShakeTimer = 0; + gCurrentPinballGame->footstepShakePattern = 0; for (i = 0; i < 4; i++) { - gCurrentPinballGame->unk46C[i].x = 0; - gCurrentPinballGame->unk46C[i].y = 0; - gCurrentPinballGame->unk48C[i] = 0; - gCurrentPinballGame->unk490[i] = 0; - gCurrentPinballGame->unk494[i] = 0; - gCurrentPinballGame->unk498[i] = 0; - gCurrentPinballGame->unk49C[i] = 0; - gCurrentPinballGame->unk4A0[i] = 0; - gCurrentPinballGame->unk4A4[i] = 0; - gCurrentPinballGame->unk4AC[i] = 0; - gCurrentPinballGame->unk4B4[i].x = 0; - gCurrentPinballGame->unk4B4[i].y = 0; + gCurrentPinballGame->shockwaveQuadrantOffset[i].x = 0; + gCurrentPinballGame->shockwaveQuadrantOffset[i].y = 0; + gCurrentPinballGame->firePillarState[i] = 0; + gCurrentPinballGame->firePillarAnimEndFrame[i] = 0; + gCurrentPinballGame->firePillarNextState[i] = 0; + gCurrentPinballGame->firePillarAnimFrame[i] = 0; + gCurrentPinballGame->firePillarAnimStartFrame[i] = 0; + gCurrentPinballGame->firePillarAnimLoopCount[i] = 0; + gCurrentPinballGame->firePillarHitTimer[i] = 0; + gCurrentPinballGame->firePillarFrameTimer[i] = 0; + gCurrentPinballGame->firePillarCollisionPos[i].x = 0; + gCurrentPinballGame->firePillarCollisionPos[i].y = 0; } for (i = 0; i < 3; i++) { - gCurrentPinballGame->unk4CC[i] = 0; - gCurrentPinballGame->unk4CF[i] = 0; - gCurrentPinballGame->unk4D2[i] = 0; - gCurrentPinballGame->unk4D5[i] = 0; - gCurrentPinballGame->unk4D8[i] = 0; - gCurrentPinballGame->unk4DE[i] = 0; - gCurrentPinballGame->unk4E4[i] = 0; - gCurrentPinballGame->unk4EC[i].x = 0; - gCurrentPinballGame->unk4EC[i].y = 0; - gCurrentPinballGame->unk4F8[i].x = 0; - gCurrentPinballGame->unk4F8[i].y = 0; + gCurrentPinballGame->boulderPositionIndex[i] = 0; + gCurrentPinballGame->boulderState[i] = 0; + gCurrentPinballGame->boulderSpriteFrame[i] = 0; + gCurrentPinballGame->boulderHitFlag[i] = 0; + gCurrentPinballGame->boulderAnimTimer[i] = 0; + gCurrentPinballGame->boulderFallVelocity[i] = 0; + gCurrentPinballGame->boulderFallHeight[i] = 0; + gCurrentPinballGame->boulderGroundPosition[i].x = 0; + gCurrentPinballGame->boulderGroundPosition[i].y = 0; + gCurrentPinballGame->boulderCollisionPos[i].x = 0; + gCurrentPinballGame->boulderCollisionPos[i].y = 0; } - gCurrentPinballGame->unk1A = 1; - sub_3CBC4(); - sub_3B7C4(); - sub_3C6E0(); - DmaCopy16(3, gUnknown_0849F1CC, (void *)0x06015800, 0x2000); - sub_3E644(); + gCurrentPinballGame->flippersDisabled = 1; + UpdateGroudonFieldEntities(); + UpdateGroudonEntityLogic(); + RenderGroudonSprites(); + DmaCopy16(3, gGroudonBoardBackgroundGfx, (void *)0x06015800, 0x2000); + AnimateGroudonBackground(); m4aSongNumStart(MUS_BONUS_FIELD_GROUDON); - DmaCopy16(3, gUnknown_081B36A4, (void *)0x05000320, 0x20); + DmaCopy16(3, gBonusStageObjPal, (void *)0x05000320, 0x20); } void GroudonBoardProcess_3B_3B49C(void) { - switch (gCurrentPinballGame->unk13) + switch (gCurrentPinballGame->boardState) { case 0: - gCurrentPinballGame->unk5F7 = 1; - if (gCurrentPinballGame->unk18 < 500) + gCurrentPinballGame->ballUpgradeTimerFrozen = 1; + if (gCurrentPinballGame->stageTimer < 500) { - gCurrentPinballGame->unkE6 = -64; - gCurrentPinballGame->unk18++; + gCurrentPinballGame->cameraYAdjust = -64; + gCurrentPinballGame->stageTimer++; } - else if (gCurrentPinballGame->unk18 < 820) + else if (gCurrentPinballGame->stageTimer < 820) { - gCurrentPinballGame->unkE6 = (gCurrentPinballGame->unk18 - 500) / 5 - 64; - gCurrentPinballGame->unk18++;; - if (gCurrentPinballGame->unkE6 >= -32) - gCurrentPinballGame->unk1A = 0; + gCurrentPinballGame->cameraYAdjust = (gCurrentPinballGame->stageTimer - 500) / 5 - 64; + gCurrentPinballGame->stageTimer++;; + if (gCurrentPinballGame->cameraYAdjust >= -32) + gCurrentPinballGame->flippersDisabled = 0; - if (gCurrentPinballGame->unk18 == 650) - gCurrentPinballGame->unk294 = 1; + if (gCurrentPinballGame->stageTimer == 650) + gCurrentPinballGame->boardModeType = 1; } else { - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unk13 = 1; - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->boardState = 1; + gCurrentPinballGame->stageTimer = 0; } break; case 2: - if (gCurrentPinballGame->unk18 < 120) + if (gCurrentPinballGame->stageTimer < 120) { - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unk13 = 3; - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->boardState = 3; + gCurrentPinballGame->stageTimer = 0; gMain.spriteGroups[6].available = 1; gMain.spriteGroups[5].available = 1; DmaCopy16(3, gGroudonBonusClear_Gfx, (void *)0x06015800, 0x2000); - gCurrentPinballGame->unk394 = 136; + gCurrentPinballGame->bannerSlideYOffset = 136; gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER; - gCurrentPinballGame->unk5FA = 1; + gCurrentPinballGame->boardEntityActive = 1; } break; case 3: - ProceessBonusBannerAndScoring(); + ProcessBonusBannerAndScoring(); if (gCurrentPinballGame->scoreCounterAnimationEnabled) - gCurrentPinballGame->unk18 = 181; + gCurrentPinballGame->stageTimer = 181; - if (gCurrentPinballGame->unk18 == 180) + if (gCurrentPinballGame->stageTimer == 180) { gCurrentPinballGame->scoreCounterAnimationEnabled = TRUE; gCurrentPinballGame->scoreAddStepSize = 400000; gCurrentPinballGame->scoreAddedInFrame = 50000000; } - if (gCurrentPinballGame->unk18 < 240) + if (gCurrentPinballGame->stageTimer < 240) { - if (gCurrentPinballGame->unk18 == 20) + if (gCurrentPinballGame->stageTimer == 20) { m4aMPlayAllStop(); m4aSongNumStart(MUS_SUCCESS3); } - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk13 = 6; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardState = 6; gCurrentPinballGame->numCompletedBonusStages++; } - gCurrentPinballGame->unk5FA = 1; + gCurrentPinballGame->boardEntityActive = 1; break; case 4: - gCurrentPinballGame->unk13 = 5; - gCurrentPinballGame->unk18 = 140; + gCurrentPinballGame->boardState = 5; + gCurrentPinballGame->stageTimer = 140; gMain.spriteGroups[6].available = 1; gMain.spriteGroups[5].available = 1; DmaCopy16(3, gGroudonBonusClear_Gfx, (void *)0x06015800, 0x2000); - gCurrentPinballGame->unk394 = 136; + gCurrentPinballGame->bannerSlideYOffset = 136; gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER; break; case 5: - ProceessBonusBannerAndScoring(); + ProcessBonusBannerAndScoring(); if (gCurrentPinballGame->scoreCounterAnimationEnabled) - gCurrentPinballGame->unk18 = 181; + gCurrentPinballGame->stageTimer = 181; - if (gCurrentPinballGame->unk18 == 180) + if (gCurrentPinballGame->stageTimer == 180) { gCurrentPinballGame->scoreCounterAnimationEnabled = TRUE; gCurrentPinballGame->scoreAddStepSize = 400000; gCurrentPinballGame->scoreAddedInFrame = 50000000; } - if (gCurrentPinballGame->unk18 < 240) + if (gCurrentPinballGame->stageTimer < 240) { - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk13 = 6; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardState = 6; gCurrentPinballGame->numCompletedBonusStages++; } break; case 6: - ProceessBonusBannerAndScoring(); + ProcessBonusBannerAndScoring(); gCurrentPinballGame->returnToMainBoardFlag = 1; - gCurrentPinballGame->unk5FA = 1; + gCurrentPinballGame->boardEntityActive = 1; break; } - sub_3CBC4(); - sub_3B7C4(); - sub_3C6E0(); - sub_3E644(); - if (gCurrentPinballGame->unk294 && gCurrentPinballGame->eventTimer < 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE) + UpdateGroudonFieldEntities(); + UpdateGroudonEntityLogic(); + RenderGroudonSprites(); + AnimateGroudonBackground(); + if (gCurrentPinballGame->boardModeType && gCurrentPinballGame->eventTimer < 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE) { m4aMPlayAllStop(); m4aSongNumStart(MUS_END_OF_BALL3); @@ -262,330 +262,330 @@ void GroudonBoardProcess_3B_3B49C(void) if (gCurrentPinballGame->returnToMainBoardFlag) { - gCurrentPinballGame->unk5FA = 1; + gCurrentPinballGame->boardEntityActive = 1; FadeToMainBoard(); } BonusStage_HandleModeChangeFlags(); } -void sub_3B7C4(void) +void UpdateGroudonEntityLogic(void) { s16 i; struct Vector32 tempVector; - if (gCurrentPinballGame->unk452) + if (gCurrentPinballGame->bossHitFlashTimer) { - gCurrentPinballGame->unk452--; - gCurrentPinballGame->unk389 = 1; - if (gCurrentPinballGame->unk452 == 35) + gCurrentPinballGame->bossHitFlashTimer--; + gCurrentPinballGame->legendaryFlashState = 1; + if (gCurrentPinballGame->bossHitFlashTimer == 35) { MPlayStart(&gMPlayInfo_SE1, &se_unk_118); gCurrentPinballGame->scoreAddedInFrame = 500000; PlayRumble(7); gCurrentPinballGame->bonusModeHitCount++; if (gCurrentPinballGame->bonusModeHitCount >= gCurrentPinballGame->legendaryHitsRequired) - gCurrentPinballGame->unk3DC = 6; + gCurrentPinballGame->bossEntityState = 6; } - if (gCurrentPinballGame->unk452 < 31) - gCurrentPinballGame->unk389 = 0; + if (gCurrentPinballGame->bossHitFlashTimer < 31) + gCurrentPinballGame->legendaryFlashState = 0; } - switch (gCurrentPinballGame->unk3DC) + switch (gCurrentPinballGame->bossEntityState) { case 0: - gCurrentPinballGame->unk3DC = 1; - gCurrentPinballGame->unk3E2 = 22; - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E1 = 0; - gCurrentPinballGame->unk3E8 = 0; - gCurrentPinballGame->unk3EA = -1200; - gCurrentPinballGame->unk4C6 = 0; + gCurrentPinballGame->bossEntityState = 1; + gCurrentPinballGame->bossFramesetIndex = 22; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossMovementPhase = 0; + gCurrentPinballGame->bossPositionX = 0; + gCurrentPinballGame->bossPositionY = -1200; + gCurrentPinballGame->bossDropVelocity = 0; break; case 1: - if (gUnknown_086AF140[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gGroudonAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 36) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 36) { - if (gCurrentPinballGame->unk3E1 < 18) + if (gCurrentPinballGame->bossMovementPhase < 18) { - gCurrentPinballGame->unk3E2 = 34; - gCurrentPinballGame->unk3E1++; + gCurrentPinballGame->bossFramesetIndex = 34; + gCurrentPinballGame->bossMovementPhase++; } else { - gCurrentPinballGame->unk3E2 = 0; - gCurrentPinballGame->unk3DC = 2; - gCurrentPinballGame->unk3DD = 4; - gCurrentPinballGame->unk3E1 = 9; + gCurrentPinballGame->bossFramesetIndex = 0; + gCurrentPinballGame->bossEntityState = 2; + gCurrentPinballGame->bossAttackPhase = 4; + gCurrentPinballGame->bossMovementPhase = 9; } } } - if (gCurrentPinballGame->unk3E2 == 22) + if (gCurrentPinballGame->bossFramesetIndex == 22) { - if (gCurrentPinballGame->unk3E4 < 500) + if (gCurrentPinballGame->bossFrameTimer < 500) { - if (gCurrentPinballGame->unk3E4 == 50 || gCurrentPinballGame->unk3E4 == 270) + if (gCurrentPinballGame->bossFrameTimer == 50 || gCurrentPinballGame->bossFrameTimer == 270) { - gCurrentPinballGame->unk4CA = 31; - gCurrentPinballGame->unk4C9 = gCurrentPinballGame->unk3E4 / 110; + gCurrentPinballGame->footstepShakeTimer = 31; + gCurrentPinballGame->footstepShakePattern = gCurrentPinballGame->bossFrameTimer / 110; m4aSongNumStart(SE_GROUDON_STEP); PlayRumble(8); } - if (gCurrentPinballGame->unk3E4 == 160 || gCurrentPinballGame->unk3E4 == 380) + if (gCurrentPinballGame->bossFrameTimer == 160 || gCurrentPinballGame->bossFrameTimer == 380) { - gCurrentPinballGame->unk4CA = 31; - gCurrentPinballGame->unk4C9 = gCurrentPinballGame->unk3E4 / 110; + gCurrentPinballGame->footstepShakeTimer = 31; + gCurrentPinballGame->footstepShakePattern = gCurrentPinballGame->bossFrameTimer / 110; m4aSongNumStart(SE_GROUDON_STEP); PlayRumble(8); } - if (gCurrentPinballGame->unk3E4 == 490) + if (gCurrentPinballGame->bossFrameTimer == 490) { - gCurrentPinballGame->unk4CA = 31; - gCurrentPinballGame->unk4C9 = 4; + gCurrentPinballGame->footstepShakeTimer = 31; + gCurrentPinballGame->footstepShakePattern = 4; m4aSongNumStart(SE_UNKNOWN_0x11A); PlayRumble(8); } } - if (gCurrentPinballGame->unk3E4 >= 630) + if (gCurrentPinballGame->bossFrameTimer >= 630) { - if (gCurrentPinballGame->unk3EA < 0) + if (gCurrentPinballGame->bossPositionY < 0) { - gCurrentPinballGame->unk4C6 += 4; - gCurrentPinballGame->unk3EA += gCurrentPinballGame->unk4C6; - if (gCurrentPinballGame->unk3EA > 0) - gCurrentPinballGame->unk3EA = 0; + gCurrentPinballGame->bossDropVelocity += 4; + gCurrentPinballGame->bossPositionY += gCurrentPinballGame->bossDropVelocity; + if (gCurrentPinballGame->bossPositionY > 0) + gCurrentPinballGame->bossPositionY = 0; } } - if (gCurrentPinballGame->unk3EA >= 0) + if (gCurrentPinballGame->bossPositionY >= 0) { - gCurrentPinballGame->unk4C8 = 60; + gCurrentPinballGame->impactShakeTimer = 60; MPlayStart(&gMPlayInfo_SE1, &se_unk_11b); PlayRumble(13); } } - if (gCurrentPinballGame->unk3E2 == 33) + if (gCurrentPinballGame->bossFramesetIndex == 33) { - if (gCurrentPinballGame->unk3E4 == 0) - gCurrentPinballGame->unk390 = 41; + if (gCurrentPinballGame->bossFrameTimer == 0) + gCurrentPinballGame->bossRoarTimer = 41; } - if (gCurrentPinballGame->unk392 > 120) - gCurrentPinballGame->unk392--; + if (gCurrentPinballGame->ballRespawnTimer > 120) + gCurrentPinballGame->ballRespawnTimer--; break; case 2: - if (gCurrentPinballGame->unk452 > 30) + if (gCurrentPinballGame->bossHitFlashTimer > 30) { - gCurrentPinballGame->unk3E2 = 21; - gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->bossFramesetIndex = 21; + gCurrentPinballGame->bossFrameTimer = 0; break; } - if (gUnknown_086AF140[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gGroudonAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 2) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 2) { - if (gCurrentPinballGame->unk3E1 < 12) + if (gCurrentPinballGame->bossMovementPhase < 12) { - gCurrentPinballGame->unk3E2 = 0; - gCurrentPinballGame->unk3E1++; - if (gCurrentPinballGame->unk3E1 == 12 && gCurrentPinballGame->unk3DD == 4) + gCurrentPinballGame->bossFramesetIndex = 0; + gCurrentPinballGame->bossMovementPhase++; + if (gCurrentPinballGame->bossMovementPhase == 12 && gCurrentPinballGame->bossAttackPhase == 4) { for (i = 0; i < 4; i++) { - if (gCurrentPinballGame->unk48C[i] < 9) - gCurrentPinballGame->unk48C[i] = 9; + if (gCurrentPinballGame->firePillarState[i] < 9) + gCurrentPinballGame->firePillarState[i] = 9; } } } else { - if (gCurrentPinballGame->unk3DD == 4) + if (gCurrentPinballGame->bossAttackPhase == 4) { - gCurrentPinballGame->unk3E2 = 36; - gCurrentPinballGame->unk3DC = 4; - gCurrentPinballGame->unk3E1 = 0; + gCurrentPinballGame->bossFramesetIndex = 36; + gCurrentPinballGame->bossEntityState = 4; + gCurrentPinballGame->bossMovementPhase = 0; } - else if (gCurrentPinballGame->unk3DD == 3) + else if (gCurrentPinballGame->bossAttackPhase == 3) { - gCurrentPinballGame->unk3E2 = 76; - gCurrentPinballGame->unk3DC = 3; - gCurrentPinballGame->unk3E1 = 0; + gCurrentPinballGame->bossFramesetIndex = 76; + gCurrentPinballGame->bossEntityState = 3; + gCurrentPinballGame->bossMovementPhase = 0; } else { - gCurrentPinballGame->unk3E2 = 58; - gCurrentPinballGame->unk3DC = 5; - gCurrentPinballGame->unk3E1 = 0; + gCurrentPinballGame->bossFramesetIndex = 58; + gCurrentPinballGame->bossEntityState = 5; + gCurrentPinballGame->bossMovementPhase = 0; } } } } - if (gCurrentPinballGame->unk3E2 == 21) - gCurrentPinballGame->unk3E2 = 0; + if (gCurrentPinballGame->bossFramesetIndex == 21) + gCurrentPinballGame->bossFramesetIndex = 0; break; case 3: - if (gUnknown_086AF140[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gGroudonAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { s16 varZZ; - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 93 || gCurrentPinballGame->unk3E2 == 96 || gCurrentPinballGame->unk3E2 == 99) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 93 || gCurrentPinballGame->bossFramesetIndex == 96 || gCurrentPinballGame->bossFramesetIndex == 99) { - gCurrentPinballGame->unk3E2 = 0; - gCurrentPinballGame->unk3DC = 2; + gCurrentPinballGame->bossFramesetIndex = 0; + gCurrentPinballGame->bossEntityState = 2; - if (gCurrentPinballGame->unk47C & 1) + if (gCurrentPinballGame->projectileAttackCount & 1) { - gCurrentPinballGame->unk3DD = 4; - gCurrentPinballGame->unk3E1 = 8; + gCurrentPinballGame->bossAttackPhase = 4; + gCurrentPinballGame->bossMovementPhase = 8; } else { - gCurrentPinballGame->unk3DD = 5; - gCurrentPinballGame->unk3E1 = 8; + gCurrentPinballGame->bossAttackPhase = 5; + gCurrentPinballGame->bossMovementPhase = 8; } - gCurrentPinballGame->unk47C++; + gCurrentPinballGame->projectileAttackCount++; } - if (gCurrentPinballGame->unk3E2 == 90) + if (gCurrentPinballGame->bossFramesetIndex == 90) { MPlayStart(&gMPlayInfo_SE1, &se_unk_11c); - gCurrentPinballGame->unk47E = 8; - gCurrentPinballGame->unk482 = 35; + gCurrentPinballGame->projectileAttackAnimTimer = 8; + gCurrentPinballGame->projectileFlightTimer = 35; gMain.spriteGroups[22].available = 1; - gCurrentPinballGame->unk488.x = 1200; - gCurrentPinballGame->unk488.y = 1240; - tempVector.x = gCurrentPinballGame->unk488.x / 10 - gCurrentPinballGame->ball->positionQ0.x; - tempVector.y = gCurrentPinballGame->unk488.y / 10 - gCurrentPinballGame->ball->positionQ0.y; - gCurrentPinballGame->unk484 = ArcTan2(-tempVector.x, tempVector.y); - if (gCurrentPinballGame->unk388) - gCurrentPinballGame->unk484 = (((Random() * gMain.systemFrameCount) % 100) * 0x5000) / 100 + 0x9800; + gCurrentPinballGame->projectilePosition.x = 1200; + gCurrentPinballGame->projectilePosition.y = 1240; + tempVector.x = gCurrentPinballGame->projectilePosition.x / 10 - gCurrentPinballGame->ball->positionQ0.x; + tempVector.y = gCurrentPinballGame->projectilePosition.y / 10 - gCurrentPinballGame->ball->positionQ0.y; + gCurrentPinballGame->projectileAngle = ArcTan2(-tempVector.x, tempVector.y); + if (gCurrentPinballGame->ballRespawnState) + gCurrentPinballGame->projectileAngle = (((Random() * gMain.systemFrameCount) % 100) * 0x5000) / 100 + 0x9800; - if (gCurrentPinballGame->unk484 < 0x4000) + if (gCurrentPinballGame->projectileAngle < 0x4000) { - gCurrentPinballGame->unk484 = 0xE800; - gCurrentPinballGame->unk47D = 2; - gCurrentPinballGame->unk488.x = 1340; + gCurrentPinballGame->projectileAngle = 0xE800; + gCurrentPinballGame->projectileDirection = 2; + gCurrentPinballGame->projectilePosition.x = 1340; } - else if (gCurrentPinballGame->unk484 < 0x9800) + else if (gCurrentPinballGame->projectileAngle < 0x9800) { - gCurrentPinballGame->unk484 = 0x9800; - gCurrentPinballGame->unk47D = 1; - gCurrentPinballGame->unk488.x = 1060; + gCurrentPinballGame->projectileAngle = 0x9800; + gCurrentPinballGame->projectileDirection = 1; + gCurrentPinballGame->projectilePosition.x = 1060; } - else if (gCurrentPinballGame->unk484 < 0xB000) + else if (gCurrentPinballGame->projectileAngle < 0xB000) { - gCurrentPinballGame->unk47D = 1; - gCurrentPinballGame->unk488.x = 1060; + gCurrentPinballGame->projectileDirection = 1; + gCurrentPinballGame->projectilePosition.x = 1060; } - else if (gCurrentPinballGame->unk484 < 0xD000) + else if (gCurrentPinballGame->projectileAngle < 0xD000) { - gCurrentPinballGame->unk47D = 0; + gCurrentPinballGame->projectileDirection = 0; } - else if (gCurrentPinballGame->unk484 < 0xE800) + else if (gCurrentPinballGame->projectileAngle < 0xE800) { - gCurrentPinballGame->unk47D = 2; - gCurrentPinballGame->unk488.x = 1340; + gCurrentPinballGame->projectileDirection = 2; + gCurrentPinballGame->projectilePosition.x = 1340; } else { - gCurrentPinballGame->unk484 = 0xE800; - gCurrentPinballGame->unk47D = 2; - gCurrentPinballGame->unk488.x = 1340; + gCurrentPinballGame->projectileAngle = 0xE800; + gCurrentPinballGame->projectileDirection = 2; + gCurrentPinballGame->projectilePosition.x = 1340; } - gCurrentPinballGame->unk3E2 += gCurrentPinballGame->unk47D * 3; - if (gCurrentPinballGame->unk388) - gCurrentPinballGame->unk388 -= 0; + gCurrentPinballGame->bossFramesetIndex += gCurrentPinballGame->projectileDirection * 3; + if (gCurrentPinballGame->ballRespawnState) + gCurrentPinballGame->ballRespawnState -= 0; } } break; case 4: - if (gUnknown_086AF140[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gGroudonAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 56) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 56) { - if (gCurrentPinballGame->unk3E1 < 6) + if (gCurrentPinballGame->bossMovementPhase < 6) { - gCurrentPinballGame->unk3E2 = 54; - gCurrentPinballGame->unk3E1++; + gCurrentPinballGame->bossFramesetIndex = 54; + gCurrentPinballGame->bossMovementPhase++; } else { - gCurrentPinballGame->unk3E2 = 0; - gCurrentPinballGame->unk3DC = 2; - gCurrentPinballGame->unk3DD = 3; - gCurrentPinballGame->unk3E1 = 6; + gCurrentPinballGame->bossFramesetIndex = 0; + gCurrentPinballGame->bossEntityState = 2; + gCurrentPinballGame->bossAttackPhase = 3; + gCurrentPinballGame->bossMovementPhase = 6; } } - if (gCurrentPinballGame->unk3E2 == 50) + if (gCurrentPinballGame->bossFramesetIndex == 50) { - if (gCurrentPinballGame->unk3E4 == 0) + if (gCurrentPinballGame->bossFrameTimer == 0) { gMain.spriteGroups[30].available = 1; - gCurrentPinballGame->unk456 = 0; + gCurrentPinballGame->shockwaveAnimTimer = 0; MPlayStart(&gMPlayInfo_SE1, &se_unk_11d); } } } break; case 5: - if (gUnknown_086AF140[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gGroudonAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 74) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 74) { - gCurrentPinballGame->unk3E2 = 0; - gCurrentPinballGame->unk3DC = 2; - gCurrentPinballGame->unk3DD = 3; - gCurrentPinballGame->unk3E1 = 8; + gCurrentPinballGame->bossFramesetIndex = 0; + gCurrentPinballGame->bossEntityState = 2; + gCurrentPinballGame->bossAttackPhase = 3; + gCurrentPinballGame->bossMovementPhase = 8; } - if (gCurrentPinballGame->unk3E2 == 71) + if (gCurrentPinballGame->bossFramesetIndex == 71) { - if (gCurrentPinballGame->unk3E4 == 0) + if (gCurrentPinballGame->bossFrameTimer == 0) { - gCurrentPinballGame->unk129 = 0; - gCurrentPinballGame->unk128 = 1; - gCurrentPinballGame->unk4C8 = 60; + gCurrentPinballGame->boardShakeDirection = 0; + gCurrentPinballGame->boardShakeIntensity = 1; + gCurrentPinballGame->impactShakeTimer = 60; PlayRumble(13); MPlayStart(&gMPlayInfo_SE1, &se_unk_11b); } @@ -593,119 +593,119 @@ void sub_3B7C4(void) } break; case 6: - gCurrentPinballGame->unk294 = 3; + gCurrentPinballGame->boardModeType = 3; if (gCurrentPinballGame->numCompletedBonusStages % 5 == 3) { // catch groudon - gCurrentPinballGame->unk3DC = 9; - gCurrentPinballGame->unk3E2 = 0; + gCurrentPinballGame->bossEntityState = 9; + gCurrentPinballGame->bossFramesetIndex = 0; gMain.spriteGroups[10].available = 1; gMain.spriteGroups[9].available = 1; gCurrentPinballGame->currentSpecies = SPECIES_GROUDON; - gCurrentPinballGame->unk38E = 0; - gCurrentPinballGame->unk5A8 = 0; - gCurrentPinballGame->unk5A6 = 0; - gCurrentPinballGame->unk5A4 = 2; + gCurrentPinballGame->bossAttackTimer = 0; + gCurrentPinballGame->captureSequenceTimer = 0; + gCurrentPinballGame->captureSequenceFrame = 0; + gCurrentPinballGame->captureState = 2; } else { // bonus completed - gCurrentPinballGame->unk3DC = 7; - gCurrentPinballGame->unk3E2 = 32; + gCurrentPinballGame->bossEntityState = 7; + gCurrentPinballGame->bossFramesetIndex = 32; gCurrentPinballGame->boardEntityCollisionMode = 0; gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER; - gCurrentPinballGame->unk388 = 2; - gCurrentPinballGame->unk392 = 0; + gCurrentPinballGame->ballRespawnState = 2; + gCurrentPinballGame->ballRespawnTimer = 0; } - gCurrentPinballGame->unk3E1 = 0; - gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->bossMovementPhase = 0; + gCurrentPinballGame->bossFrameTimer = 0; if (gMain.spriteGroups[24].available) - gCurrentPinballGame->unk486 = 1; + gCurrentPinballGame->ballGrabTimer = 1; break; case 7: - if (gUnknown_086AF140[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gGroudonAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 36) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 36) { - if (gCurrentPinballGame->unk3E1 < 18) + if (gCurrentPinballGame->bossMovementPhase < 18) { - gCurrentPinballGame->unk3E2 = 34; - gCurrentPinballGame->unk3E1++; + gCurrentPinballGame->bossFramesetIndex = 34; + gCurrentPinballGame->bossMovementPhase++; } else { - gCurrentPinballGame->unk3E2 = 2; - gCurrentPinballGame->unk3DC = 8; - gCurrentPinballGame->unk3E1 = 0; + gCurrentPinballGame->bossFramesetIndex = 2; + gCurrentPinballGame->bossEntityState = 8; + gCurrentPinballGame->bossMovementPhase = 0; } } } - if (gCurrentPinballGame->unk3E2 == 33) + if (gCurrentPinballGame->bossFramesetIndex == 33) { - if (gCurrentPinballGame->unk3E4 == 0) - gCurrentPinballGame->unk390 = 41; + if (gCurrentPinballGame->bossFrameTimer == 0) + gCurrentPinballGame->bossRoarTimer = 41; } break; case 8: - if (gUnknown_086AF140[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gGroudonAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 20) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 20) { - if (gCurrentPinballGame->unk3E1 < 7) + if (gCurrentPinballGame->bossMovementPhase < 7) { - gCurrentPinballGame->unk3E2 = 3; - gCurrentPinballGame->unk3E1++; + gCurrentPinballGame->bossFramesetIndex = 3; + gCurrentPinballGame->bossMovementPhase++; } else { - gCurrentPinballGame->unk3E2 = 3; - gCurrentPinballGame->unk3DC = 10; - gCurrentPinballGame->unk13 = 2; - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->bossFramesetIndex = 3; + gCurrentPinballGame->bossEntityState = 10; + gCurrentPinballGame->boardState = 2; + gCurrentPinballGame->stageTimer = 0; } } - if (gCurrentPinballGame->unk3E2 == 3 || gCurrentPinballGame->unk3E2 == 12) - gCurrentPinballGame->unk3EA -= 10; + if (gCurrentPinballGame->bossFramesetIndex == 3 || gCurrentPinballGame->bossFramesetIndex == 12) + gCurrentPinballGame->bossPositionY -= 10; - if ((gCurrentPinballGame->unk3E2 >= 4 && gCurrentPinballGame->unk3E2 < 6) || - gCurrentPinballGame->unk3E2 == 13 || gCurrentPinballGame->unk3E2 == 14) + if ((gCurrentPinballGame->bossFramesetIndex >= 4 && gCurrentPinballGame->bossFramesetIndex < 6) || + gCurrentPinballGame->bossFramesetIndex == 13 || gCurrentPinballGame->bossFramesetIndex == 14) { - gCurrentPinballGame->unk3EA -= 20; + gCurrentPinballGame->bossPositionY -= 20; } - if (gCurrentPinballGame->unk3E2 == 5) + if (gCurrentPinballGame->bossFramesetIndex == 5) { - if (gCurrentPinballGame->unk3E4 == 0) + if (gCurrentPinballGame->bossFrameTimer == 0) { - gCurrentPinballGame->unk4CA = 31; - gCurrentPinballGame->unk4C9 = 6; + gCurrentPinballGame->footstepShakeTimer = 31; + gCurrentPinballGame->footstepShakePattern = 6; m4aSongNumStart(SE_GROUDON_STEP); PlayRumble(8); } } - if (gCurrentPinballGame->unk3E2 == 14) + if (gCurrentPinballGame->bossFramesetIndex == 14) { - if (gCurrentPinballGame->unk3E4 == 0) + if (gCurrentPinballGame->bossFrameTimer == 0) { - gCurrentPinballGame->unk4CA = 31; - gCurrentPinballGame->unk4C9 = 5; + gCurrentPinballGame->footstepShakeTimer = 31; + gCurrentPinballGame->footstepShakePattern = 5; m4aSongNumStart(SE_GROUDON_STEP); PlayRumble(8); } @@ -713,107 +713,107 @@ void sub_3B7C4(void) } break; case 9: - if (gUnknown_086AF140[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gGroudonAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 2) - gCurrentPinballGame->unk3E2 = 0; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 2) + gCurrentPinballGame->bossFramesetIndex = 0; } - if (gCurrentPinballGame->unk38E > -500) + if (gCurrentPinballGame->bossAttackTimer > -500) { - gCurrentPinballGame->unk38E += (-500 - gCurrentPinballGame->unk38E) / 30; - gCurrentPinballGame->unkE6 = gCurrentPinballGame->unk38E / 10; - if (gCurrentPinballGame->unkE6 < -38) - gCurrentPinballGame->unkE6 = -38; + gCurrentPinballGame->bossAttackTimer += (-500 - gCurrentPinballGame->bossAttackTimer) / 30; + gCurrentPinballGame->cameraYAdjust = gCurrentPinballGame->bossAttackTimer / 10; + if (gCurrentPinballGame->cameraYAdjust < -38) + gCurrentPinballGame->cameraYAdjust = -38; } - if (gCurrentPinballGame->unk5A8 == 21) - gCurrentPinballGame->unk3E2 = 74; + if (gCurrentPinballGame->captureSequenceTimer == 21) + gCurrentPinballGame->bossFramesetIndex = 74; - if (gCurrentPinballGame->unk5A8 == 22) - gCurrentPinballGame->unk3E2 = 75; + if (gCurrentPinballGame->captureSequenceTimer == 22) + gCurrentPinballGame->bossFramesetIndex = 75; break; case 10: break; } - if (gCurrentPinballGame->unk4C8 > 0) + if (gCurrentPinballGame->impactShakeTimer > 0) { - gCurrentPinballGame->unk4C8--; - if (gCurrentPinballGame->unk4C8 < 20) - gCurrentPinballGame->unk2AC = gUnknown_086AEF28[gCurrentPinballGame->unk4C8 % 12] * 2; + gCurrentPinballGame->impactShakeTimer--; + if (gCurrentPinballGame->impactShakeTimer < 20) + gCurrentPinballGame->screenShakeY = gScreenShakeOscillationValues[gCurrentPinballGame->impactShakeTimer % 12] * 2; else - gCurrentPinballGame->unk2AC = gUnknown_086AEF28[gCurrentPinballGame->unk4C8 % 12] * 4; + gCurrentPinballGame->screenShakeY = gScreenShakeOscillationValues[gCurrentPinballGame->impactShakeTimer % 12] * 4; - if (gCurrentPinballGame->unk4C8 == 0) - gCurrentPinballGame->unk2AC = 0; + if (gCurrentPinballGame->impactShakeTimer == 0) + gCurrentPinballGame->screenShakeY = 0; - if (gCurrentPinballGame->unk4C8 == 8) + if (gCurrentPinballGame->impactShakeTimer == 8) { i = 0; gMain.spriteGroups[15 + i].available = 1; - gCurrentPinballGame->unk4CF[i] = 0; - gCurrentPinballGame->unk4D2[i] = 0; - gCurrentPinballGame->unk4D8[i] = 0; + gCurrentPinballGame->boulderState[i] = 0; + gCurrentPinballGame->boulderSpriteFrame[i] = 0; + gCurrentPinballGame->boulderAnimTimer[i] = 0; } - if (gCurrentPinballGame->unk4C8 == 20) + if (gCurrentPinballGame->impactShakeTimer == 20) { i = 1; gMain.spriteGroups[15 + i].available = 1; - gCurrentPinballGame->unk4CF[i] = 0; - gCurrentPinballGame->unk4D2[i] = 13; - gCurrentPinballGame->unk4D8[i] = 0; + gCurrentPinballGame->boulderState[i] = 0; + gCurrentPinballGame->boulderSpriteFrame[i] = 13; + gCurrentPinballGame->boulderAnimTimer[i] = 0; } - if (gCurrentPinballGame->unk4C8 == 53) + if (gCurrentPinballGame->impactShakeTimer == 53) { i = 2; gMain.spriteGroups[15 + i].available = 1; - gCurrentPinballGame->unk4CF[i] = 0; - gCurrentPinballGame->unk4D2[i] = 22; - gCurrentPinballGame->unk4D8[i] = 0; + gCurrentPinballGame->boulderState[i] = 0; + gCurrentPinballGame->boulderSpriteFrame[i] = 22; + gCurrentPinballGame->boulderAnimTimer[i] = 0; } } - if (gCurrentPinballGame->unk4CA) + if (gCurrentPinballGame->footstepShakeTimer) { - gCurrentPinballGame->unk4CA--; - if (gCurrentPinballGame->unk4C9 < 6) + gCurrentPinballGame->footstepShakeTimer--; + if (gCurrentPinballGame->footstepShakePattern < 6) { - gCurrentPinballGame->unk2AC = gUnknown_086AEF40[gCurrentPinballGame->unk4C9][30 - gCurrentPinballGame->unk4CA % 31]; + gCurrentPinballGame->screenShakeY = gGroudonFootstepShakePatterns[gCurrentPinballGame->footstepShakePattern][30 - gCurrentPinballGame->footstepShakeTimer % 31]; } else { - gCurrentPinballGame->unk2AC = gUnknown_086AF0B4[69 - gCurrentPinballGame->unk4CA % 70]; + gCurrentPinballGame->screenShakeY = gGroudonCryShakePattern[69 - gCurrentPinballGame->footstepShakeTimer % 70]; } - if (gCurrentPinballGame->unk4CA == 0) - gCurrentPinballGame->unk2AC = 0; + if (gCurrentPinballGame->footstepShakeTimer == 0) + gCurrentPinballGame->screenShakeY = 0; } - if (gCurrentPinballGame->unk390) + if (gCurrentPinballGame->bossRoarTimer) { - gCurrentPinballGame->unk390--; - if (gCurrentPinballGame->unk390 == 20) + gCurrentPinballGame->bossRoarTimer--; + if (gCurrentPinballGame->bossRoarTimer == 20) { - PlayCry_Normal(gSpeciesInfo[SPECIES_GROUDON].mainSeriesIndexNumber, 0); - gCurrentPinballGame->unk4CA = 70; - gCurrentPinballGame->unk4C9 = 6; + PlayCry_Normal(gSpeciesInfo[SPECIES_GROUDON].speciesIdRS, 0); + gCurrentPinballGame->footstepShakeTimer = 70; + gCurrentPinballGame->footstepShakePattern = 6; } - if (gCurrentPinballGame->unk390 == 0) + if (gCurrentPinballGame->bossRoarTimer == 0) m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x100); } } -void sub_3C6E0(void) +void RenderGroudonSprites(void) { s16 i; struct SpriteGroup *group; @@ -826,19 +826,19 @@ void sub_3C6E0(void) group = &gMain.spriteGroups[29]; if (group->available) { - var0 = gUnknown_086AF140[gCurrentPinballGame->unk3E2][0]; - group->baseX = gCurrentPinballGame->unk3E8 / 10 + 100u - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk3EA / 10 + 84u - gCurrentPinballGame->unk5A; - gCurrentPinballGame->unk288 = gCurrentPinballGame->unk3E8 / 10 + 118; - gCurrentPinballGame->unk28A = gCurrentPinballGame->unk3EA / 10 + 60; - gCurrentPinballGame->unk3F0 = (gCurrentPinballGame->unk3E8 / 10) * 2 + 184; - gCurrentPinballGame->unk3F2 = (gCurrentPinballGame->unk3EA / 10) * 2 + 156; + var0 = gGroudonAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][0]; + group->baseX = gCurrentPinballGame->bossPositionX / 10 + 100u - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->bossPositionY / 10 + 84u - gCurrentPinballGame->cameraYOffset; + gCurrentPinballGame->catchTargetX = gCurrentPinballGame->bossPositionX / 10 + 118; + gCurrentPinballGame->catchTargetY = gCurrentPinballGame->bossPositionY / 10 + 60; + gCurrentPinballGame->bossCollisionX = (gCurrentPinballGame->bossPositionX / 10) * 2 + 184; + gCurrentPinballGame->bossCollisionY = (gCurrentPinballGame->bossPositionY / 10) * 2 + 156; if (group->baseY < -60) group->baseY = -60; if (group->baseY > 180) group->baseY = 180; - if (gCurrentPinballGame->unk389 > 9) + if (gCurrentPinballGame->legendaryFlashState > 9) { palette = 11; for (i = 0; i < 19; i++) @@ -849,14 +849,14 @@ void sub_3C6E0(void) gOamBuffer[oamSimple->oamId].paletteNum = palette; } } - else if (gCurrentPinballGame->unk389 == 1) + else if (gCurrentPinballGame->legendaryFlashState == 1) { palette = 14; for (i = 0; i < 19; i++) { oamSimple = &group->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B65EA[var0][i]; + src = gGroudonMainBodyOamData[var0][i]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -866,14 +866,14 @@ void sub_3C6E0(void) gOamBuffer[oamSimple->oamId].paletteNum = palette; } } - else if (gCurrentPinballGame->unk389 == 3) + else if (gCurrentPinballGame->legendaryFlashState == 3) { palette = 11; for (i = 0; i < 19; i++) { oamSimple = &group->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B65EA[var0][i]; + src = gGroudonMainBodyOamData[var0][i]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -889,7 +889,7 @@ void sub_3C6E0(void) { oamSimple = &group->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B65EA[var0][i]; + src = gGroudonMainBodyOamData[var0][i]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -903,21 +903,21 @@ void sub_3C6E0(void) group = &gMain.spriteGroups[23]; if (group->available) { - if (gCurrentPinballGame->unk47E > 0) + if (gCurrentPinballGame->projectileAttackAnimTimer > 0) { - gCurrentPinballGame->unk47E--; - if (gCurrentPinballGame->unk47E == 0) + gCurrentPinballGame->projectileAttackAnimTimer--; + if (gCurrentPinballGame->projectileAttackAnimTimer == 0) group->available = 0; } - var0 = gCurrentPinballGame->unk47D * 2 - (gCurrentPinballGame->unk47E / 4 - 1); - group->baseX = gCurrentPinballGame->unk3E8 / 10 + 100u - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk3EA / 10 + 84u - gCurrentPinballGame->unk5A; + var0 = gCurrentPinballGame->projectileDirection * 2 - (gCurrentPinballGame->projectileAttackAnimTimer / 4 - 1); + group->baseX = gCurrentPinballGame->bossPositionX / 10 + 100u - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->bossPositionY / 10 + 84u - gCurrentPinballGame->cameraYOffset; for (i = 0; i < 6; i++) { oamSimple = &group->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B6512[var0][i]; + src = gGroudonProjectileAttackOamData[var0][i]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -926,20 +926,20 @@ void sub_3C6E0(void) gOamBuffer[oamSimple->oamId].y += group->baseY; } - if (gCurrentPinballGame->unk5A4 == 2) + if (gCurrentPinballGame->captureState == 2) { gMain.spriteGroups[23].available = 0; - gCurrentPinballGame->unk47E = 0; + gCurrentPinballGame->projectileAttackAnimTimer = 0; } } else { - if (gCurrentPinballGame->unk47E == 8) + if (gCurrentPinballGame->projectileAttackAnimTimer == 8) group->available = 1; } } -void sub_3CBC4(void) +void UpdateGroudonFieldEntities(void) { s16 i, j; struct SpriteGroup *group; @@ -956,7 +956,7 @@ void sub_3CBC4(void) group = &gMain.spriteGroups[10]; if (group->available) { - if (gCurrentPinballGame->unk6C4 == 3) + if (gCurrentPinballGame->portraitDisplayState == 3) { group->baseX = 240; group->baseY = 180; @@ -967,8 +967,8 @@ void sub_3CBC4(void) group->baseY = 55; } - gCurrentPinballGame->unk6E4.x = group->baseX; - gCurrentPinballGame->unk6E4.y = group->baseY; + gCurrentPinballGame->rouletteBasePos.x = group->baseX; + gCurrentPinballGame->rouletteBasePos.y = group->baseY; if (group->baseY >= 200) group->baseY = 200; @@ -976,21 +976,21 @@ void sub_3CBC4(void) { oamSimple = &group->oam[j]; gOamBuffer[oamSimple->oamId].paletteNum = 13; - gOamBuffer[oamSimple->oamId].priority = gCurrentPinballGame->unk6DB; + gOamBuffer[oamSimple->oamId].priority = gCurrentPinballGame->creatureOamPriority; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } group = &gMain.spriteGroups[9]; - group->baseX = gCurrentPinballGame->unk6E4.x - 8; - group->baseY = gCurrentPinballGame->unk6E4.y - 8; + group->baseX = gCurrentPinballGame->rouletteBasePos.x - 8; + group->baseY = gCurrentPinballGame->rouletteBasePos.y - 8; if (group->baseY >= 200) group->baseY = 200; for (j = 0; j < 6; j++) { oamSimple = &group->oam[j]; - gOamBuffer[oamSimple->oamId].priority = gCurrentPinballGame->unk6DB; + gOamBuffer[oamSimple->oamId].priority = gCurrentPinballGame->creatureOamPriority; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } @@ -999,46 +999,46 @@ void sub_3CBC4(void) group = &gMain.spriteGroups[24]; if (group->available) { - gCurrentPinballGame->unk486--; - if (gCurrentPinballGame->unk486 >= 600) + gCurrentPinballGame->ballGrabTimer--; + if (gCurrentPinballGame->ballGrabTimer >= 600) { varSL = 0; } - else if (gCurrentPinballGame->unk486 >= 6) + else if (gCurrentPinballGame->ballGrabTimer >= 6) { - varSL = (gCurrentPinballGame->unk486 % 15) / 5 + 1; - if (gCurrentPinballGame->unk47F > 0) + varSL = (gCurrentPinballGame->ballGrabTimer % 15) / 5 + 1; + if (gCurrentPinballGame->ballGrabShakeTimer > 0) { - if (gCurrentPinballGame->unk47F == 7) + if (gCurrentPinballGame->ballGrabShakeTimer == 7) gCurrentPinballGame->ball->positionQ8.x += 0x100; - else if (gCurrentPinballGame->unk47F == 4) + else if (gCurrentPinballGame->ballGrabShakeTimer == 4) gCurrentPinballGame->ball->positionQ8.x -= 0x200; - else if (gCurrentPinballGame->unk47F == 1) + else if (gCurrentPinballGame->ballGrabShakeTimer == 1) gCurrentPinballGame->ball->positionQ8.x += 0x100; - gCurrentPinballGame->unk47F--; + gCurrentPinballGame->ballGrabShakeTimer--; } else if (gCurrentPinballGame->newButtonActions[0] || gCurrentPinballGame->newButtonActions[1]) { - gCurrentPinballGame->unk486 = gCurrentPinballGame->unk486 - 30; - if (gCurrentPinballGame->unk486 < 5) - gCurrentPinballGame->unk486 = 5; + gCurrentPinballGame->ballGrabTimer = gCurrentPinballGame->ballGrabTimer - 30; + if (gCurrentPinballGame->ballGrabTimer < 5) + gCurrentPinballGame->ballGrabTimer = 5; - gCurrentPinballGame->unk47F = 7; + gCurrentPinballGame->ballGrabShakeTimer = 7; m4aSongNumStart(SE_UNKNOWN_0x11E); } - if (gCurrentPinballGame->unk480) + if (gCurrentPinballGame->ballGrabFlashTimer) { - gCurrentPinballGame->unk480--; - if (gCurrentPinballGame->unk480 > 50) + gCurrentPinballGame->ballGrabFlashTimer--; + if (gCurrentPinballGame->ballGrabFlashTimer > 50) varSL = 4; - else if (gCurrentPinballGame->unk480 > 40) + else if (gCurrentPinballGame->ballGrabFlashTimer > 40) varSL = 5; } else if (gCurrentPinballGame->newButtonActions[0] || gCurrentPinballGame->newButtonActions[1]) { - gCurrentPinballGame->unk480 = 60; + gCurrentPinballGame->ballGrabFlashTimer = 60; } } else @@ -1046,27 +1046,27 @@ void sub_3CBC4(void) varSL = 4; } - if (gCurrentPinballGame->unk486 == 0) + if (gCurrentPinballGame->ballGrabTimer == 0) { gMain.spriteGroups[24].available = 0; - gCurrentPinballGame->unk480 = 0; - gCurrentPinballGame->unk383 = 0; + gCurrentPinballGame->ballGrabFlashTimer = 0; + gCurrentPinballGame->ballGrabbed = 0; } else { - gCurrentPinballGame->unk383 = 1; + gCurrentPinballGame->ballGrabbed = 1; gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; - gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->ball->spinSpeed = 0; } - group->baseX = gCurrentPinballGame->ball->positionQ0.x - gCurrentPinballGame->unk58 - 8; - group->baseY = gCurrentPinballGame->ball->positionQ0.y - gCurrentPinballGame->unk5A - 8; + group->baseX = gCurrentPinballGame->ball->positionQ0.x - gCurrentPinballGame->cameraXOffset - 8; + group->baseY = gCurrentPinballGame->ball->positionQ0.y - gCurrentPinballGame->cameraYOffset - 8; for (j = 0; j < 2; j++) { oamSimple = &group->oam[j]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B63AA[varSL][j]; + src = gGroudonBallGrabOamData[varSL][j]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -1079,56 +1079,56 @@ void sub_3CBC4(void) group = &gMain.spriteGroups[22]; if (group->available) { - tempVector.x = gCurrentPinballGame->unk488.x / 10 - gCurrentPinballGame->ball->positionQ0.x; - tempVector.y = gCurrentPinballGame->unk488.y / 10 - gCurrentPinballGame->ball->positionQ0.y; + tempVector.x = gCurrentPinballGame->projectilePosition.x / 10 - gCurrentPinballGame->ball->positionQ0.x; + tempVector.y = gCurrentPinballGame->projectilePosition.y / 10 - gCurrentPinballGame->ball->positionQ0.y; xx = tempVector.x * tempVector.x; yy = tempVector.y * tempVector.y; squaredMagnitude = xx + yy; - if (gCurrentPinballGame->unk482) + if (gCurrentPinballGame->projectileFlightTimer) { - gCurrentPinballGame->unk482--; - if (gCurrentPinballGame->unk482 >= 10) + gCurrentPinballGame->projectileFlightTimer--; + if (gCurrentPinballGame->projectileFlightTimer >= 10) { - varSL = (gCurrentPinballGame->unk482 % 8) / 4 + gCurrentPinballGame->unk47D * 2; - if (squaredMagnitude <= 240 && gCurrentPinballGame->unk388 == 0 && gCurrentPinballGame->unk486 < 600) + varSL = (gCurrentPinballGame->projectileFlightTimer % 8) / 4 + gCurrentPinballGame->projectileDirection * 2; + if (squaredMagnitude <= 240 && gCurrentPinballGame->ballRespawnState == 0 && gCurrentPinballGame->ballGrabTimer < 600) { MPlayStart(&gMPlayInfo_SE1, &se_unk_11f); - gCurrentPinballGame->unk482 = 10; + gCurrentPinballGame->projectileFlightTimer = 10; gMain.spriteGroups[24].available = 1; - gCurrentPinballGame->unk486 = 612; + gCurrentPinballGame->ballGrabTimer = 612; PlayRumble(9); } - gCurrentPinballGame->unk488.x += (Cos(gCurrentPinballGame->unk484) * 40) / 20000; - gCurrentPinballGame->unk488.y += (Sin(gCurrentPinballGame->unk484) * -40) / 20000; + gCurrentPinballGame->projectilePosition.x += (Cos(gCurrentPinballGame->projectileAngle) * 40) / 20000; + gCurrentPinballGame->projectilePosition.y += (Sin(gCurrentPinballGame->projectileAngle) * -40) / 20000; } else { - varSL = (gCurrentPinballGame->unk47D * 2) - ((gCurrentPinballGame->unk482 / 5) - 7); - if (gCurrentPinballGame->unk482 == 9) + varSL = (gCurrentPinballGame->projectileDirection * 2) - ((gCurrentPinballGame->projectileFlightTimer / 5) - 7); + if (gCurrentPinballGame->projectileFlightTimer == 9) { if (squaredMagnitude <= 240) { - gCurrentPinballGame->unk488.x = (gCurrentPinballGame->ball->positionQ0.x + 4) * 10; - gCurrentPinballGame->unk488.y = (gCurrentPinballGame->ball->positionQ0.y + 14) * 10; + gCurrentPinballGame->projectilePosition.x = (gCurrentPinballGame->ball->positionQ0.x + 4) * 10; + gCurrentPinballGame->projectilePosition.y = (gCurrentPinballGame->ball->positionQ0.y + 14) * 10; } else { - if (gCurrentPinballGame->unk47D == 0) + if (gCurrentPinballGame->projectileDirection == 0) { - gCurrentPinballGame->unk488.x += 0; - gCurrentPinballGame->unk488.y += 240; + gCurrentPinballGame->projectilePosition.x += 0; + gCurrentPinballGame->projectilePosition.y += 240; } - else if (gCurrentPinballGame->unk47D == 1) + else if (gCurrentPinballGame->projectileDirection == 1) { - gCurrentPinballGame->unk488.x -= 120; - gCurrentPinballGame->unk488.y += 240; + gCurrentPinballGame->projectilePosition.x -= 120; + gCurrentPinballGame->projectilePosition.y += 240; } else { - gCurrentPinballGame->unk488.x += 120; - gCurrentPinballGame->unk488.y += 240; + gCurrentPinballGame->projectilePosition.x += 120; + gCurrentPinballGame->projectilePosition.y += 240; } } @@ -1136,17 +1136,17 @@ void sub_3CBC4(void) } } - if (gCurrentPinballGame->unk482 == 0) + if (gCurrentPinballGame->projectileFlightTimer == 0) gMain.spriteGroups[22].available = 0; } - group->baseX = gCurrentPinballGame->unk488.x / 10 - gCurrentPinballGame->unk58 - 12; - group->baseY = gCurrentPinballGame->unk488.y / 10 - gCurrentPinballGame->unk5A - 22; + group->baseX = gCurrentPinballGame->projectilePosition.x / 10 - gCurrentPinballGame->cameraXOffset - 12; + group->baseY = gCurrentPinballGame->projectilePosition.y / 10 - gCurrentPinballGame->cameraYOffset - 22; for (j = 0; j < 4; j++) { oamSimple = &group->oam[j]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B63F2[varSL][j]; + src = gGroudonProjectileOamData[varSL][j]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -1155,10 +1155,10 @@ void sub_3CBC4(void) gOamBuffer[oamSimple->oamId].y += group->baseY; } - if (gCurrentPinballGame->unk5A4 == 2) + if (gCurrentPinballGame->captureState == 2) { gMain.spriteGroups[22].available = 0; - gCurrentPinballGame->unk482 = 0; + gCurrentPinballGame->projectileFlightTimer = 0; } } @@ -1167,175 +1167,175 @@ void sub_3CBC4(void) group = &gMain.spriteGroups[15 + i]; if (group->available) { - switch (gCurrentPinballGame->unk4CF[i]) + switch (gCurrentPinballGame->boulderState[i]) { case 0: - gCurrentPinballGame->unk4D2[i] = gUnknown_086AF3AC[i]; - gCurrentPinballGame->unk4EC[i].x = (((Random() % 101) * 145) / 100 + 30) * 10; - gCurrentPinballGame->unk4CC[i] = Random() % 16; - if (gCurrentPinballGame->unk4CC[i] == gCurrentPinballGame->unk4CC[(i + 1) % 3]) - gCurrentPinballGame->unk4CC[i] = (gCurrentPinballGame->unk4CC[i] + 1) % 16; + gCurrentPinballGame->boulderSpriteFrame[i] = gGroudonBoulderBaseSpriteIndices[i]; + gCurrentPinballGame->boulderGroundPosition[i].x = (((Random() % 101) * 145) / 100 + 30) * 10; + gCurrentPinballGame->boulderPositionIndex[i] = Random() % 16; + if (gCurrentPinballGame->boulderPositionIndex[i] == gCurrentPinballGame->boulderPositionIndex[(i + 1) % 3]) + gCurrentPinballGame->boulderPositionIndex[i] = (gCurrentPinballGame->boulderPositionIndex[i] + 1) % 16; - if (gCurrentPinballGame->unk4CC[i] == gCurrentPinballGame->unk4CC[(i + 2) % 3]) - gCurrentPinballGame->unk4CC[i] = (gCurrentPinballGame->unk4CC[i] + 1) % 16; + if (gCurrentPinballGame->boulderPositionIndex[i] == gCurrentPinballGame->boulderPositionIndex[(i + 2) % 3]) + gCurrentPinballGame->boulderPositionIndex[i] = (gCurrentPinballGame->boulderPositionIndex[i] + 1) % 16; - gCurrentPinballGame->unk4EC[i].x = gUnknown_086AF34C[gCurrentPinballGame->unk4CC[i]][0] * 10; - gCurrentPinballGame->unk4EC[i].y = gUnknown_086AF34C[gCurrentPinballGame->unk4CC[i]][1] * 10; - gCurrentPinballGame->unk4E4[i] = -1200; - gCurrentPinballGame->unk4DE[i] = 0; - gCurrentPinballGame->unk4CF[i] = 1; - gCurrentPinballGame->unk4F8[i].x = 0; - gCurrentPinballGame->unk4F8[i].y = 0; - gCurrentPinballGame->unk4D5[i] = 0; + gCurrentPinballGame->boulderGroundPosition[i].x = gGroudonBoulderPositionTable[gCurrentPinballGame->boulderPositionIndex[i]][0] * 10; + gCurrentPinballGame->boulderGroundPosition[i].y = gGroudonBoulderPositionTable[gCurrentPinballGame->boulderPositionIndex[i]][1] * 10; + gCurrentPinballGame->boulderFallHeight[i] = -1200; + gCurrentPinballGame->boulderFallVelocity[i] = 0; + gCurrentPinballGame->boulderState[i] = 1; + gCurrentPinballGame->boulderCollisionPos[i].x = 0; + gCurrentPinballGame->boulderCollisionPos[i].y = 0; + gCurrentPinballGame->boulderHitFlag[i] = 0; break; case 1: - if (gCurrentPinballGame->unk4E4[i] < 0) { - gCurrentPinballGame->unk4DE[i] += 3; - gCurrentPinballGame->unk4E4[i] += gCurrentPinballGame->unk4DE[i]; - if (gCurrentPinballGame->unk4E4[i] > 0) { - gCurrentPinballGame->unk4E4[i] = 0; + if (gCurrentPinballGame->boulderFallHeight[i] < 0) { + gCurrentPinballGame->boulderFallVelocity[i] += 3; + gCurrentPinballGame->boulderFallHeight[i] += gCurrentPinballGame->boulderFallVelocity[i]; + if (gCurrentPinballGame->boulderFallHeight[i] > 0) { + gCurrentPinballGame->boulderFallHeight[i] = 0; } } - if (gCurrentPinballGame->unk4E4[i] >= 0) + if (gCurrentPinballGame->boulderFallHeight[i] >= 0) { - if (gCurrentPinballGame->unk4D8[i] == 0) + if (gCurrentPinballGame->boulderAnimTimer[i] == 0) { m4aSongNumStart(SE_GROUDON_BOULDER_LAND); PlayRumble(7); } - if (gCurrentPinballGame->unk4D8[i] < 5) + if (gCurrentPinballGame->boulderAnimTimer[i] < 5) { - gCurrentPinballGame->unk4D2[i] = gUnknown_086AF3AC[i] + 1; + gCurrentPinballGame->boulderSpriteFrame[i] = gGroudonBoulderBaseSpriteIndices[i] + 1; } - else if (gCurrentPinballGame->unk4D8[i] < 10) + else if (gCurrentPinballGame->boulderAnimTimer[i] < 10) { - gCurrentPinballGame->unk4D2[i] = gUnknown_086AF3AC[i] + 2; + gCurrentPinballGame->boulderSpriteFrame[i] = gGroudonBoulderBaseSpriteIndices[i] + 2; } else { - gCurrentPinballGame->unk4D8[i] = 0; - gCurrentPinballGame->unk4D2[i] = gUnknown_086AF3AC[i]; - gCurrentPinballGame->unk4CF[i] = 2; + gCurrentPinballGame->boulderAnimTimer[i] = 0; + gCurrentPinballGame->boulderSpriteFrame[i] = gGroudonBoulderBaseSpriteIndices[i]; + gCurrentPinballGame->boulderState[i] = 2; } - gCurrentPinballGame->unk4D8[i]++; + gCurrentPinballGame->boulderAnimTimer[i]++; } - gCurrentPinballGame->unk4F8[i].x = 0; - gCurrentPinballGame->unk4F8[i].y = 0; + gCurrentPinballGame->boulderCollisionPos[i].x = 0; + gCurrentPinballGame->boulderCollisionPos[i].y = 0; break; case 2: - gCurrentPinballGame->unk4F8[i].x = (gCurrentPinballGame->unk4EC[i].x / 10) * 2; - gCurrentPinballGame->unk4F8[i].y = (gCurrentPinballGame->unk4EC[i].y / 10) * 2 + 8; - if (gCurrentPinballGame->unk4D5[i]) + gCurrentPinballGame->boulderCollisionPos[i].x = (gCurrentPinballGame->boulderGroundPosition[i].x / 10) * 2; + gCurrentPinballGame->boulderCollisionPos[i].y = (gCurrentPinballGame->boulderGroundPosition[i].y / 10) * 2 + 8; + if (gCurrentPinballGame->boulderHitFlag[i]) { - if (gCurrentPinballGame->unk4D8[i] == 1) + if (gCurrentPinballGame->boulderAnimTimer[i] == 1) { m4aSongNumStart(SE_GROUDON_BOULDER_LAND); PlayRumble(7); } - if (gCurrentPinballGame->unk4D8[i] < 5) + if (gCurrentPinballGame->boulderAnimTimer[i] < 5) { - gCurrentPinballGame->unk4D2[i] = gUnknown_086AF3AC[i] + 3; + gCurrentPinballGame->boulderSpriteFrame[i] = gGroudonBoulderBaseSpriteIndices[i] + 3; } - else if (gCurrentPinballGame->unk4D8[i] < 10) + else if (gCurrentPinballGame->boulderAnimTimer[i] < 10) { - gCurrentPinballGame->unk4D2[i] = gUnknown_086AF3AC[i] + 4; + gCurrentPinballGame->boulderSpriteFrame[i] = gGroudonBoulderBaseSpriteIndices[i] + 4; } else { - gCurrentPinballGame->unk4D8[i] = 0; - gCurrentPinballGame->unk4D2[i] = gUnknown_086AF3AC[i] + 5; - gCurrentPinballGame->unk4CF[i] = 3; - gCurrentPinballGame->unk4D5[i] = 0; + gCurrentPinballGame->boulderAnimTimer[i] = 0; + gCurrentPinballGame->boulderSpriteFrame[i] = gGroudonBoulderBaseSpriteIndices[i] + 5; + gCurrentPinballGame->boulderState[i] = 3; + gCurrentPinballGame->boulderHitFlag[i] = 0; } - gCurrentPinballGame->unk4D8[i]++; + gCurrentPinballGame->boulderAnimTimer[i]++; } break; case 3: - gCurrentPinballGame->unk4F8[i].x = (gCurrentPinballGame->unk4EC[i].x / 10) * 2; - gCurrentPinballGame->unk4F8[i].y = (gCurrentPinballGame->unk4EC[i].y / 10) * 2 + 8; - if (gCurrentPinballGame->unk4D5[i]) + gCurrentPinballGame->boulderCollisionPos[i].x = (gCurrentPinballGame->boulderGroundPosition[i].x / 10) * 2; + gCurrentPinballGame->boulderCollisionPos[i].y = (gCurrentPinballGame->boulderGroundPosition[i].y / 10) * 2 + 8; + if (gCurrentPinballGame->boulderHitFlag[i]) { - if (gCurrentPinballGame->unk4D8[i] == 1) + if (gCurrentPinballGame->boulderAnimTimer[i] == 1) { m4aSongNumStart(SE_GROUDON_BOULDER_LAND); PlayRumble(7); } - if (gCurrentPinballGame->unk4D8[i] < 5) + if (gCurrentPinballGame->boulderAnimTimer[i] < 5) { - gCurrentPinballGame->unk4D2[i] = gUnknown_086AF3AC[i] + 6; + gCurrentPinballGame->boulderSpriteFrame[i] = gGroudonBoulderBaseSpriteIndices[i] + 6; } - else if (gCurrentPinballGame->unk4D8[i] < 10) + else if (gCurrentPinballGame->boulderAnimTimer[i] < 10) { - gCurrentPinballGame->unk4D2[i] = gUnknown_086AF3AC[i] + 7; + gCurrentPinballGame->boulderSpriteFrame[i] = gGroudonBoulderBaseSpriteIndices[i] + 7; } else { - gCurrentPinballGame->unk4D8[i] = 0; - gCurrentPinballGame->unk4D2[i] = gUnknown_086AF3AC[i] + 8; - gCurrentPinballGame->unk4CF[i] = 4; - gCurrentPinballGame->unk4D5[i] = 0; + gCurrentPinballGame->boulderAnimTimer[i] = 0; + gCurrentPinballGame->boulderSpriteFrame[i] = gGroudonBoulderBaseSpriteIndices[i] + 8; + gCurrentPinballGame->boulderState[i] = 4; + gCurrentPinballGame->boulderHitFlag[i] = 0; } - gCurrentPinballGame->unk4D8[i]++; + gCurrentPinballGame->boulderAnimTimer[i]++; } break; case 4: - gCurrentPinballGame->unk4F8[i].x = (gCurrentPinballGame->unk4EC[i].x / 10) * 2; - gCurrentPinballGame->unk4F8[i].y = (gCurrentPinballGame->unk4EC[i].y / 10) * 2 + 8; - if (gCurrentPinballGame->unk4D5[i]) + gCurrentPinballGame->boulderCollisionPos[i].x = (gCurrentPinballGame->boulderGroundPosition[i].x / 10) * 2; + gCurrentPinballGame->boulderCollisionPos[i].y = (gCurrentPinballGame->boulderGroundPosition[i].y / 10) * 2 + 8; + if (gCurrentPinballGame->boulderHitFlag[i]) { - if (gCurrentPinballGame->unk4D8[i] == 1) + if (gCurrentPinballGame->boulderAnimTimer[i] == 1) { m4aSongNumStart(SE_GROUDON_BOULDER_LAND); PlayRumble(7); } - if (gCurrentPinballGame->unk4D8[i] < 3) + if (gCurrentPinballGame->boulderAnimTimer[i] < 3) { - gCurrentPinballGame->unk4D2[i] = 9; + gCurrentPinballGame->boulderSpriteFrame[i] = 9; } - else if (gCurrentPinballGame->unk4D8[i] < 8) + else if (gCurrentPinballGame->boulderAnimTimer[i] < 8) { - gCurrentPinballGame->unk4D2[i] = 10; + gCurrentPinballGame->boulderSpriteFrame[i] = 10; } - else if (gCurrentPinballGame->unk4D8[i] < 14) + else if (gCurrentPinballGame->boulderAnimTimer[i] < 14) { - gCurrentPinballGame->unk4D2[i] = 11; + gCurrentPinballGame->boulderSpriteFrame[i] = 11; } - else if (gCurrentPinballGame->unk4D8[i] < 23) + else if (gCurrentPinballGame->boulderAnimTimer[i] < 23) { - gCurrentPinballGame->unk4D2[i] = 12; + gCurrentPinballGame->boulderSpriteFrame[i] = 12; } else { - gCurrentPinballGame->unk4D8[i] = 0; - gCurrentPinballGame->unk4D2[i] = 12; - gCurrentPinballGame->unk4CF[i] = 5; - gCurrentPinballGame->unk4D5[i] = 0; + gCurrentPinballGame->boulderAnimTimer[i] = 0; + gCurrentPinballGame->boulderSpriteFrame[i] = 12; + gCurrentPinballGame->boulderState[i] = 5; + gCurrentPinballGame->boulderHitFlag[i] = 0; } - gCurrentPinballGame->unk4D8[i]++; + gCurrentPinballGame->boulderAnimTimer[i]++; } break; case 5: - gCurrentPinballGame->unk4F8[i].x = 0; - gCurrentPinballGame->unk4F8[i].y = 0; + gCurrentPinballGame->boulderCollisionPos[i].x = 0; + gCurrentPinballGame->boulderCollisionPos[i].y = 0; gMain.spriteGroups[15 + i].available = 0; break; } - var0 = gCurrentPinballGame->unk4D2[i]; - DmaCopy16(3, gUnknown_084A11EC[var0], (void *)0x06010FA0 + i * 0x300, 0x300); + var0 = gCurrentPinballGame->boulderSpriteFrame[i]; + DmaCopy16(3, gGroudonBoulderSpriteFrames[var0], (void *)0x06010FA0 + i * 0x300, 0x300); - group->baseX = (gCurrentPinballGame->unk4EC[i].x / 10) + i - gCurrentPinballGame->unk58; - group->baseY = (gCurrentPinballGame->unk4E4[i] / 10) + (gCurrentPinballGame->unk4EC[i].y / 10) - gCurrentPinballGame->unk5A; + group->baseX = (gCurrentPinballGame->boulderGroundPosition[i].x / 10) + i - gCurrentPinballGame->cameraXOffset; + group->baseY = (gCurrentPinballGame->boulderFallHeight[i] / 10) + (gCurrentPinballGame->boulderGroundPosition[i].y / 10) - gCurrentPinballGame->cameraYOffset; for (j = 0; j < 3; j++) { oamSimple = &group->oam[j]; @@ -1343,13 +1343,13 @@ void sub_3CBC4(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - if (gCurrentPinballGame->unk4CF[i] >= 2 && gCurrentPinballGame->unk4CF[i] < 5) + if (gCurrentPinballGame->boulderState[i] >= 2 && gCurrentPinballGame->boulderState[i] < 5) { - if (gUnknown_086AF34C[gCurrentPinballGame->unk4CC[i]][2] == gCurrentPinballGame->unk456) + if (gGroudonBoulderPositionTable[gCurrentPinballGame->boulderPositionIndex[i]][2] == gCurrentPinballGame->shockwaveAnimTimer) { - gCurrentPinballGame->unk4CF[i] = 4; - gCurrentPinballGame->unk4D5[i] = 1; - gCurrentPinballGame->unk4D8[i] = 0; + gCurrentPinballGame->boulderState[i] = 4; + gCurrentPinballGame->boulderHitFlag[i] = 1; + gCurrentPinballGame->boulderAnimTimer[i] = 0; } } } @@ -1360,93 +1360,93 @@ void sub_3CBC4(void) group = &gMain.spriteGroups[18 + i]; if (group->available) { - switch(gCurrentPinballGame->unk48C[i]) + switch(gCurrentPinballGame->firePillarState[i]) { case 0: - gCurrentPinballGame->unk49C[i] = 0; - gCurrentPinballGame->unk490[i] = 8; - gCurrentPinballGame->unk494[i] = 1; - gCurrentPinballGame->unk4A0[i] = 0; + gCurrentPinballGame->firePillarAnimStartFrame[i] = 0; + gCurrentPinballGame->firePillarAnimEndFrame[i] = 8; + gCurrentPinballGame->firePillarNextState[i] = 1; + gCurrentPinballGame->firePillarAnimLoopCount[i] = 0; break; case 1: - gCurrentPinballGame->unk49C[i] = 8; - gCurrentPinballGame->unk490[i] = 12; - gCurrentPinballGame->unk494[i] = 3; - gCurrentPinballGame->unk4A0[i] = 14; - gCurrentPinballGame->unk48C[i] = 2; + gCurrentPinballGame->firePillarAnimStartFrame[i] = 8; + gCurrentPinballGame->firePillarAnimEndFrame[i] = 12; + gCurrentPinballGame->firePillarNextState[i] = 3; + gCurrentPinballGame->firePillarAnimLoopCount[i] = 14; + gCurrentPinballGame->firePillarState[i] = 2; break; case 2: - if (gCurrentPinballGame->unk4A4[i] > 0) + if (gCurrentPinballGame->firePillarHitTimer[i] > 0) { - gCurrentPinballGame->unk4A4[i]--; - if (gCurrentPinballGame->unk4A4[i] == 7) + gCurrentPinballGame->firePillarHitTimer[i]--; + if (gCurrentPinballGame->firePillarHitTimer[i] == 7) { m4aSongNumStart(SE_GROUDON_BALL_HIT_FIRE); - gCurrentPinballGame->unk48C[i] = 3; + gCurrentPinballGame->firePillarState[i] = 3; PlayRumble(7); } } break; case 3: - gCurrentPinballGame->unk49C[i] = 12; - gCurrentPinballGame->unk490[i] = 16; - gCurrentPinballGame->unk494[i] = 5; - gCurrentPinballGame->unk4A0[i] = 14; - gCurrentPinballGame->unk48C[i] = 4; + gCurrentPinballGame->firePillarAnimStartFrame[i] = 12; + gCurrentPinballGame->firePillarAnimEndFrame[i] = 16; + gCurrentPinballGame->firePillarNextState[i] = 5; + gCurrentPinballGame->firePillarAnimLoopCount[i] = 14; + gCurrentPinballGame->firePillarState[i] = 4; break; case 4: - if (gCurrentPinballGame->unk4A4[i] > 0) + if (gCurrentPinballGame->firePillarHitTimer[i] > 0) { - gCurrentPinballGame->unk4A4[i]--; - if (gCurrentPinballGame->unk4A4[i] == 7) + gCurrentPinballGame->firePillarHitTimer[i]--; + if (gCurrentPinballGame->firePillarHitTimer[i] == 7) { m4aSongNumStart(SE_GROUDON_BALL_HIT_FIRE); - gCurrentPinballGame->unk48C[i] = 5; + gCurrentPinballGame->firePillarState[i] = 5; PlayRumble(7); } } break; case 5: - gCurrentPinballGame->unk49C[i] = 16; - gCurrentPinballGame->unk490[i] = 20; - gCurrentPinballGame->unk494[i] = 7; - gCurrentPinballGame->unk4A0[i] = 14; - gCurrentPinballGame->unk48C[i] = 6; + gCurrentPinballGame->firePillarAnimStartFrame[i] = 16; + gCurrentPinballGame->firePillarAnimEndFrame[i] = 20; + gCurrentPinballGame->firePillarNextState[i] = 7; + gCurrentPinballGame->firePillarAnimLoopCount[i] = 14; + gCurrentPinballGame->firePillarState[i] = 6; break; case 6: - if (gCurrentPinballGame->unk4A4[i] > 0) + if (gCurrentPinballGame->firePillarHitTimer[i] > 0) { - gCurrentPinballGame->unk4A4[i]--; - if (gCurrentPinballGame->unk4A4[i] == 7) + gCurrentPinballGame->firePillarHitTimer[i]--; + if (gCurrentPinballGame->firePillarHitTimer[i] == 7) { m4aSongNumStart(SE_GROUDON_BALL_HIT_FIRE); - gCurrentPinballGame->unk48C[i] = 7; + gCurrentPinballGame->firePillarState[i] = 7; PlayRumble(7); } } break; case 7: - gCurrentPinballGame->unk49C[i] = 20; - gCurrentPinballGame->unk490[i] = 24; - gCurrentPinballGame->unk494[i] = 9; - gCurrentPinballGame->unk4A0[i] = 14; - gCurrentPinballGame->unk48C[i] = 8; - gCurrentPinballGame->unk4A8[i] = 0; + gCurrentPinballGame->firePillarAnimStartFrame[i] = 20; + gCurrentPinballGame->firePillarAnimEndFrame[i] = 24; + gCurrentPinballGame->firePillarNextState[i] = 9; + gCurrentPinballGame->firePillarAnimLoopCount[i] = 14; + gCurrentPinballGame->firePillarState[i] = 8; + gCurrentPinballGame->firePillarExtraHitCount[i] = 0; break; case 8: - if (gCurrentPinballGame->unk4A4[i] > 0) + if (gCurrentPinballGame->firePillarHitTimer[i] > 0) { - gCurrentPinballGame->unk4A4[i]--; - if (gCurrentPinballGame->unk4A4[i] == 7) + gCurrentPinballGame->firePillarHitTimer[i]--; + if (gCurrentPinballGame->firePillarHitTimer[i] == 7) { - if (gCurrentPinballGame->unk4A8[i] <= 0) + if (gCurrentPinballGame->firePillarExtraHitCount[i] <= 0) { - gCurrentPinballGame->unk4A8[i]++; + gCurrentPinballGame->firePillarExtraHitCount[i]++; } else { - gCurrentPinballGame->unk4A8[i] = 0; - gCurrentPinballGame->unk48C[i] = 9; + gCurrentPinballGame->firePillarExtraHitCount[i] = 0; + gCurrentPinballGame->firePillarState[i] = 9; } m4aSongNumStart(SE_GROUDON_BALL_HIT_FIRE); @@ -1455,56 +1455,56 @@ void sub_3CBC4(void) } break; case 9: - gCurrentPinballGame->unk49C[i] = 24; - gCurrentPinballGame->unk490[i] = 27; - gCurrentPinballGame->unk494[i] = 10; - gCurrentPinballGame->unk4A0[i] = 0; + gCurrentPinballGame->firePillarAnimStartFrame[i] = 24; + gCurrentPinballGame->firePillarAnimEndFrame[i] = 27; + gCurrentPinballGame->firePillarNextState[i] = 10; + gCurrentPinballGame->firePillarAnimLoopCount[i] = 0; break; case 10: gMain.spriteGroups[18 + i].available = 0; break; } - if (gUnknown_086AF2DC[gCurrentPinballGame->unk498[i]][1] > gCurrentPinballGame->unk4AC[i]) + if (gGroudonFirePillarAnimFrameset[gCurrentPinballGame->firePillarAnimFrame[i]][1] > gCurrentPinballGame->firePillarFrameTimer[i]) { - gCurrentPinballGame->unk4AC[i]++; + gCurrentPinballGame->firePillarFrameTimer[i]++; } else { - gCurrentPinballGame->unk4AC[i] = 0; - gCurrentPinballGame->unk498[i]++; - if (gCurrentPinballGame->unk498[i] == gCurrentPinballGame->unk490[i]) + gCurrentPinballGame->firePillarFrameTimer[i] = 0; + gCurrentPinballGame->firePillarAnimFrame[i]++; + if (gCurrentPinballGame->firePillarAnimFrame[i] == gCurrentPinballGame->firePillarAnimEndFrame[i]) { - if (gCurrentPinballGame->unk4A0[i] > 0) + if (gCurrentPinballGame->firePillarAnimLoopCount[i] > 0) { - gCurrentPinballGame->unk498[i] = gCurrentPinballGame->unk49C[i]; - gCurrentPinballGame->unk4A0[i]--; + gCurrentPinballGame->firePillarAnimFrame[i] = gCurrentPinballGame->firePillarAnimStartFrame[i]; + gCurrentPinballGame->firePillarAnimLoopCount[i]--; } else { - gCurrentPinballGame->unk498[i] = gCurrentPinballGame->unk490[i] - 1; - gCurrentPinballGame->unk48C[i] = gCurrentPinballGame->unk494[i]; + gCurrentPinballGame->firePillarAnimFrame[i] = gCurrentPinballGame->firePillarAnimEndFrame[i] - 1; + gCurrentPinballGame->firePillarState[i] = gCurrentPinballGame->firePillarNextState[i]; } } } - varSL = gUnknown_086AF2DC[gCurrentPinballGame->unk498[i]][0]; + varSL = gGroudonFirePillarAnimFrameset[gCurrentPinballGame->firePillarAnimFrame[i]][0]; // Unsigned integers for matching - group->baseX = gUnknown_086AF2CC[i].x + 65u - gCurrentPinballGame->unk58; - group->baseY = gUnknown_086AF2CC[i].y + 60u - gCurrentPinballGame->unk5A; - if (gCurrentPinballGame->unk48C[i] < 9) + group->baseX = gGroudonFirePillarBasePositions[i].x + 65u - gCurrentPinballGame->cameraXOffset; + group->baseY = gGroudonFirePillarBasePositions[i].y + 60u - gCurrentPinballGame->cameraYOffset; + if (gCurrentPinballGame->firePillarState[i] < 9) { - gCurrentPinballGame->unk4B4[i].x = (gUnknown_086AF2CC[i].x + 61) * 2; - gCurrentPinballGame->unk4B4[i].y = (gUnknown_086AF2CC[i].y + 96) * 2; + gCurrentPinballGame->firePillarCollisionPos[i].x = (gGroudonFirePillarBasePositions[i].x + 61) * 2; + gCurrentPinballGame->firePillarCollisionPos[i].y = (gGroudonFirePillarBasePositions[i].y + 96) * 2; } - if (gCurrentPinballGame->unk4A4[i] > 0) + if (gCurrentPinballGame->firePillarHitTimer[i] > 0) { for (j = 0; j < 10; j++) { oamSimple = &group->oam[j]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B8AE0[varSL][j]; + src = gGroudonFirePillarOamData[varSL][j]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -1520,7 +1520,7 @@ void sub_3CBC4(void) { oamSimple = &group->oam[j]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B8AE0[varSL][j]; + src = gGroudonFirePillarOamData[varSL][j]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -1532,24 +1532,24 @@ void sub_3CBC4(void) } else { - gCurrentPinballGame->unk4B4[i].x = 0; - gCurrentPinballGame->unk4B4[i].y = 0; + gCurrentPinballGame->firePillarCollisionPos[i].x = 0; + gCurrentPinballGame->firePillarCollisionPos[i].y = 0; } } - if (gCurrentPinballGame->unk4C4) + if (gCurrentPinballGame->firePillarSpawnSfxTimer) { - gCurrentPinballGame->unk4C4--; - if (gCurrentPinballGame->unk4C4 == 36) + gCurrentPinballGame->firePillarSpawnSfxTimer--; + if (gCurrentPinballGame->firePillarSpawnSfxTimer == 36) m4aSongNumStart(SE_GROUDON_DUSTORM_LIFT); - if (gCurrentPinballGame->unk4C4 == 24) + if (gCurrentPinballGame->firePillarSpawnSfxTimer == 24) m4aSongNumStart(SE_GROUDON_DUSTORM_LIFT); - if (gCurrentPinballGame->unk4C4 == 12) + if (gCurrentPinballGame->firePillarSpawnSfxTimer == 12) m4aSongNumStart(SE_GROUDON_DUSTORM_LIFT); - if (gCurrentPinballGame->unk4C4 == 0) + if (gCurrentPinballGame->firePillarSpawnSfxTimer == 0) m4aSongNumStart(SE_GROUDON_DUSTORM_LIFT); } @@ -1558,9 +1558,9 @@ void sub_3CBC4(void) { s16 scale; s16 var6; - if (gCurrentPinballGame->unk456 <= 35) + if (gCurrentPinballGame->shockwaveAnimTimer <= 35) { - scale = (gCurrentPinballGame->unk456 * 0x200) / 35 + 0x10; + scale = (gCurrentPinballGame->shockwaveAnimTimer * 0x200) / 35 + 0x10; if (scale > 0x200) scale = 0x200; @@ -1568,12 +1568,12 @@ void sub_3CBC4(void) SetMatrixScale(-scale, scale, 2); SetMatrixScale(scale, -scale, 3); SetMatrixScale(-scale, -scale, 4); - if (gCurrentPinballGame->unk456 > 30) - var6 = 12 - ((gCurrentPinballGame->unk456 - 30) * 11) / 5; + if (gCurrentPinballGame->shockwaveAnimTimer > 30) + var6 = 12 - ((gCurrentPinballGame->shockwaveAnimTimer - 30) * 11) / 5; else - var6 = 16 - (gCurrentPinballGame->unk456 * 4) / 30; + var6 = 16 - (gCurrentPinballGame->shockwaveAnimTimer * 4) / 30; - gCurrentPinballGame->unk456++; + gCurrentPinballGame->shockwaveAnimTimer++; } else { @@ -1582,27 +1582,27 @@ void sub_3CBC4(void) group->available = 0; } - if (gCurrentPinballGame->unk456 == 34) + if (gCurrentPinballGame->shockwaveAnimTimer == 34) { for (i = 0; i < 4; i++) { gMain.spriteGroups[i + 18].available = 1; - gCurrentPinballGame->unk48C[i] = 0; - gCurrentPinballGame->unk498[i] = 0; - gCurrentPinballGame->unk4AC[i] = 0; + gCurrentPinballGame->firePillarState[i] = 0; + gCurrentPinballGame->firePillarAnimFrame[i] = 0; + gCurrentPinballGame->firePillarFrameTimer[i] = 0; } - gCurrentPinballGame->unk4C4 = 37; + gCurrentPinballGame->firePillarSpawnSfxTimer = 37; } - gCurrentPinballGame->unk46C[0].x = 0x20 - scale / 8; - gCurrentPinballGame->unk46C[1].x = 0x20 + scale / 8; - gCurrentPinballGame->unk46C[2].x = 0x20 - scale / 8; - gCurrentPinballGame->unk46C[3].x = 0x20 + scale / 8; - gCurrentPinballGame->unk46C[0].y = 0x20 - scale / 8; - gCurrentPinballGame->unk46C[1].y = 0x20 - scale / 8; - gCurrentPinballGame->unk46C[2].y = 0x20 + scale / 8; - gCurrentPinballGame->unk46C[3].y = 0x20 + scale / 8; + gCurrentPinballGame->shockwaveQuadrantOffset[0].x = 0x20 - scale / 8; + gCurrentPinballGame->shockwaveQuadrantOffset[1].x = 0x20 + scale / 8; + gCurrentPinballGame->shockwaveQuadrantOffset[2].x = 0x20 - scale / 8; + gCurrentPinballGame->shockwaveQuadrantOffset[3].x = 0x20 + scale / 8; + gCurrentPinballGame->shockwaveQuadrantOffset[0].y = 0x20 - scale / 8; + gCurrentPinballGame->shockwaveQuadrantOffset[1].y = 0x20 - scale / 8; + gCurrentPinballGame->shockwaveQuadrantOffset[2].y = 0x20 + scale / 8; + gCurrentPinballGame->shockwaveQuadrantOffset[3].y = 0x20 + scale / 8; if ((gMain.modeChangeFlags & MODE_CHANGE_EXPIRED_BONUS_BANNER) == 0) { @@ -1612,30 +1612,30 @@ void sub_3CBC4(void) if (group->available) { - group->baseX = 23 - gCurrentPinballGame->unk58; - group->baseY = 50 - gCurrentPinballGame->unk5A; + group->baseX = 23 - gCurrentPinballGame->cameraXOffset; + group->baseY = 50 - gCurrentPinballGame->cameraYOffset; for (j = 0; j < 4; j++) { oamSimple = &group->oam[j]; - gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX + gCurrentPinballGame->unk46C[j].x; - gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY + gCurrentPinballGame->unk46C[j].y; + gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX + gCurrentPinballGame->shockwaveQuadrantOffset[j].x; + gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY + gCurrentPinballGame->shockwaveQuadrantOffset[j].y; gOamBuffer[oamSimple->oamId].affineMode = ST_OAM_AFFINE_DOUBLE; gOamBuffer[oamSimple->oamId].matrixNum = 1 + j; } } - if (gCurrentPinballGame->unk456 < 30) + if (gCurrentPinballGame->shockwaveAnimTimer < 30) { tempVector.x = gCurrentPinballGame->ball->positionQ0.x - 119; tempVector.y = gCurrentPinballGame->ball->positionQ0.y - 147; xx = tempVector.x * tempVector.x; yy = tempVector.y * tempVector.y; squaredMagnitude = xx + yy; - if (gCurrentPinballGame->unk388 == 0 && squaredMagnitude < gUnknown_086AEE20[gCurrentPinballGame->unk456]) + if (gCurrentPinballGame->ballRespawnState == 0 && squaredMagnitude < gShockwaveSplashDistanceThresholds[gCurrentPinballGame->shockwaveAnimTimer]) { - 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; + gCurrentPinballGame->trapAngleQ16 = ArcTan2(-tempVector.x, tempVector.y); + gCurrentPinballGame->ball->velocity.x = (Cos(gCurrentPinballGame->trapAngleQ16) * -400) / 20000; + gCurrentPinballGame->ball->velocity.y = (Sin(gCurrentPinballGame->trapAngleQ16) * 400) / 20000; PlayRumble(9); } } @@ -1645,7 +1645,7 @@ void sub_3CBC4(void) } } -void sub_3E5D0(void) +void HideGroudonShockwaveSprite(void) { s16 i; struct SpriteGroup *group; @@ -1665,29 +1665,29 @@ void sub_3E5D0(void) } } -void sub_3E644(void) +void AnimateGroudonBackground(void) { s16 i, j; s16 var0; struct SpriteGroup *group; struct OamDataSimple *oamSimple; - var0 = gUnknown_086AF3B2[(gMain.systemFrameCount % 144) / 24]; - DmaCopy16(3, &gUnknown_08352BD8[var0 * 0x20], (void *)0x05000000, 0x20); - DmaCopy16(3, &gUnknown_08352BD8[(var0 + 4) * 0x20], (void *)0x05000080, 0x20); + var0 = gGroudonLavaPaletteAnimIndices[(gMain.systemFrameCount % 144) / 24]; + DmaCopy16(3, &gGroudonLavaPaletteCycleData[var0 * 0x20], (void *)0x05000000, 0x20); + DmaCopy16(3, &gGroudonLavaPaletteCycleData[(var0 + 4) * 0x20], (void *)0x05000080, 0x20); - var0 = gUnknown_086AF3BE[(gMain.systemFrameCount % 96) / 24]; + var0 = gGroudonBgTileAnimIndices[(gMain.systemFrameCount % 96) / 24]; for (i = 0; i < 4; i++) { group = &gMain.spriteGroups[11 + i]; - group->baseX = 120 - gCurrentPinballGame->unk58; - group->baseY = 128 - gCurrentPinballGame->unk5A; + group->baseX = 120 - gCurrentPinballGame->cameraXOffset; + group->baseY = 128 - gCurrentPinballGame->cameraYOffset; for (j = 0; j < 3; j++) { oamSimple = &group->oam[j]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; - gOamBuffer[oamSimple->oamId].tileNum = gUnknown_086AF3C6[j] + var0 * 8; + gOamBuffer[oamSimple->oamId].tileNum = gGroudonBgSpriteBaseTileNums[j] + var0 * 8; } } } \ No newline at end of file diff --git a/src/board_process3_kecleon.c b/src/board_process3_kecleon.c index 280b0fb..017c840 100644 --- a/src/board_process3_kecleon.c +++ b/src/board_process3_kecleon.c @@ -8,29 +8,29 @@ extern struct SpriteGroup gMain_spriteGroups_9; extern struct SpriteGroup gMain_spriteGroups_31; -extern void sub_35D54(void); -extern void sub_36CB4(void); -extern void sub_372B4(void); -extern void sub_3751C(void); -extern void sub_37850(void); -extern void sub_38218(void); +extern void UpdateKecleonEntityLogic(void); +extern void RenderKecleonSprites(void); +extern void UpdateKecleonScopeItem(void); +extern void UpdateKecleonScopeVision(void); +extern void RenderKecleonBoardElements(void); +extern void SortKecleonSpritesByY(void); -extern const struct SpriteSet *gUnknown_0202D880[]; +extern const struct SpriteSet *gKecleonSpriteSets[]; -struct Unk_086AE9E4 +struct KecleonMoveNode { - u8 unk0[4]; - u16 unk4[2]; + u8 adjacentStates[4]; + u16 velocity[2]; }; -struct Unk_086AEA70 +struct KecleonSpriteSortEntry { - const struct SpriteSet *unk0; - u8 unk4; - u8 unk5; + const struct SpriteSet *spriteSet; + u8 ySortKey; + u8 spriteIndex; }; extern const u8 gKecleonBonusClear_Gfx[]; -extern const u16 gUnknown_08327994[]; +extern const u16 gKecleonBerryOverlayTilemap[]; extern const u8 gKecleonStageKecleon_Gfx[][0x280]; extern const u8 gKecleonStageKecleonFx_Gfx[][0x100]; extern struct SongHeader se_unk_fc; @@ -41,100 +41,100 @@ extern struct SongHeader se_unk_100; extern struct SongHeader se_unk_101; extern struct SongHeader se_unk_102; extern struct SongHeader se_unk_103; -extern const u16 gUnknown_086AE718[][3]; -extern const s16 gUnknown_086AEA60[]; -extern const u16 gUnknown_086AE9C4[]; -extern const u16 gUnknown_086AE9D4[]; -extern const struct Unk_086AE9E4 gUnknown_086AE9E4[]; -extern const struct Vector16 gUnknown_086AEA3C[]; -extern const u16 *gUnknown_086AEA50[]; -extern const s16 gUnknown_086AEA68[]; -extern const struct Unk_086AEA70 gUnknown_086AEA70[]; -extern const u16 gUnknown_086B9AB8[126][2][3]; -extern const u16 gUnknown_086B9DAC[126][2][3]; -extern const struct SpriteSet *gUnknown_086BB420[]; +extern const u16 gKecleonAnimFramesetTable[][3]; +extern const s16 gKecleonOverlayTileAnimIndices[]; +extern const u16 gKecleonVisibleWalkDirectionMap[]; +extern const u16 gKecleonInvisibleDashDirectionMap[]; +extern const struct KecleonMoveNode gKecleonMovementTargetGraph[]; +extern const struct Vector16 gKecleonScopeFallTargets[]; +extern const u16 *gKecleonOverlayTilemapPointers[]; +extern const s16 gKecleonBerryFlashAnimIndices[]; +extern const struct KecleonSpriteSortEntry gKecleonSpriteYSortData[]; +extern const u16 gKecleonLowerBodyOamData[126][2][3]; +extern const u16 gKecleonUpperBodyOamData[126][2][3]; +extern const struct SpriteSet *gKecleonDefaultSpriteSets[]; void KecleonBoardProcess_3A_35860(void) { s16 i; - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk17 = 0; - gCurrentPinballGame->unk13 = 0; - gCurrentPinballGame->unk294 = 1; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardSubState = 0; + gCurrentPinballGame->boardState = 0; + gCurrentPinballGame->boardModeType = 1; gCurrentPinballGame->eventTimer = gCurrentPinballGame->timerBonus + 120 * 60; // 120 seconds gCurrentPinballGame->timerBonus = 0; - gCurrentPinballGame->unk383 = 0; - gCurrentPinballGame->unk388 = 3; - gCurrentPinballGame->unk392 = 0; - gCurrentPinballGame->ball->unk0 = 1; + gCurrentPinballGame->ballGrabbed = 0; + gCurrentPinballGame->ballRespawnState = 3; + gCurrentPinballGame->ballRespawnTimer = 0; + gCurrentPinballGame->ball->ballHidden = 1; gCurrentPinballGame->returnToMainBoardFlag = 0; - gCurrentPinballGame->unk3F7 = 1; - gCurrentPinballGame->unk3DC = 0; - gCurrentPinballGame->unk3E8 = 750; - gCurrentPinballGame->unk3EA = 360; - gCurrentPinballGame->unk3DF = 3; + gCurrentPinballGame->kecleonTargetVisible = 1; + gCurrentPinballGame->bossEntityState = 0; + gCurrentPinballGame->bossPositionX = 750; + gCurrentPinballGame->bossPositionY = 360; + gCurrentPinballGame->bossVulnerable = 3; gCurrentPinballGame->bonusModeHitCount = 0; gCurrentPinballGame->boardEntityCollisionMode = 0; - gCurrentPinballGame->unk394 = 0; - gCurrentPinballGame->unk3DE = 0; - gCurrentPinballGame->unk3E0 = 0; - gCurrentPinballGame->unk3E2 = 0; - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3F4 = 0; - gCurrentPinballGame->unk3F5 = 0; - gCurrentPinballGame->unk3F6 = 0; - gCurrentPinballGame->unk3F8 = 0; - gCurrentPinballGame->unk3FA = 0; - gCurrentPinballGame->unk3FC = 0; - gCurrentPinballGame->unk404 = 0; - gCurrentPinballGame->unk405 = 0; - gCurrentPinballGame->unk406 = 0; - gCurrentPinballGame->unk408 = 0; - gCurrentPinballGame->unk40A = 0; - gCurrentPinballGame->unk40C = 0; - gCurrentPinballGame->unk40E = 0; - gCurrentPinballGame->unk410 = 0; - gCurrentPinballGame->unk412 = 0; + gCurrentPinballGame->bannerSlideYOffset = 0; + gCurrentPinballGame->kecleonFramesetBase = 0; + gCurrentPinballGame->dusclopsWalkFootIndex = 0; + gCurrentPinballGame->bossFramesetIndex = 0; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->kecleonTargetState = 0; + gCurrentPinballGame->kecleonTargetFrameIndex = 0; + gCurrentPinballGame->kecleonTargetColorMatch = 0; + gCurrentPinballGame->kecleonCollisionEnabled = 0; + gCurrentPinballGame->kecleonTargetX = 0; + gCurrentPinballGame->kecleonTargetY = 0; + gCurrentPinballGame->kecleonBoardHitState = 0; + gCurrentPinballGame->kecleonHitFrameIndex = 0; + gCurrentPinballGame->kecleonTargetActive = 0; + gCurrentPinballGame->kecleonAnimTimer = 0; + gCurrentPinballGame->kecleonCollisionX = 0; + gCurrentPinballGame->kecleonCollisionY = 0; + gCurrentPinballGame->kecleonFrameTimer = 0; + gCurrentPinballGame->kecleonHitboxX = 0; + gCurrentPinballGame->kecleonHitboxY = 0; for (i = 0; i < 4; i++) - gCurrentPinballGame->unk41C[i] = 0; + gCurrentPinballGame->kecleonBerryLargeFlashTimer[i] = 0; for (i = 0; i < 10; i++) - gCurrentPinballGame->unk420[i] = 0; + gCurrentPinballGame->kecleonBerrySmallFlashTimer[i] = 0; for (i = 0; i < 7; i++) - gCurrentPinballGame->unk42A[i] = 0; + gCurrentPinballGame->kecleonHitSparkTimer[i] = 0; - gCurrentPinballGame->unk1A = 0; - gCurrentPinballGame->unk400.y = gCurrentPinballGame->unk3EA / 10 + 58; - sub_38218(); + gCurrentPinballGame->flippersDisabled = 0; + gCurrentPinballGame->kecleonCollisionPos.y = gCurrentPinballGame->bossPositionY / 10 + 58; + SortKecleonSpritesByY(); gCurrentPinballGame->boardEntityCollisionMode = 1; - sub_35D54(); - sub_36CB4(); + UpdateKecleonEntityLogic(); + RenderKecleonSprites(); m4aSongNumStart(MUS_BONUS_FIELD_KECLEON); - sub_372B4(); - sub_3751C(); - sub_37850(); - DmaCopy16(3, gUnknown_081B36A4, (void *)0x05000320, 0x20); + UpdateKecleonScopeItem(); + UpdateKecleonScopeVision(); + RenderKecleonBoardElements(); + DmaCopy16(3, gBonusStageObjPal, (void *)0x05000320, 0x20); } void KecleonBoardProcess_3B_35AA4(void) { - sub_38218(); - switch (gCurrentPinballGame->unk13) + SortKecleonSpritesByY(); + switch (gCurrentPinballGame->boardState) { case 0: - gCurrentPinballGame->unk5F7 = 1; - if (gCurrentPinballGame->unk18 < 120) + gCurrentPinballGame->ballUpgradeTimerFrozen = 1; + if (gCurrentPinballGame->stageTimer < 120) { - gCurrentPinballGame->unkE6 = (gCurrentPinballGame->unk18 / 5) + 0xFFE8; - gCurrentPinballGame->unk18++; + gCurrentPinballGame->cameraYAdjust = (gCurrentPinballGame->stageTimer / 5) + 0xFFE8; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unk13 = 1; - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->boardState = 1; + gCurrentPinballGame->stageTimer = 0; } if (gCurrentPinballGame->returnToMainBoardFlag == 0) @@ -146,10 +146,10 @@ void KecleonBoardProcess_3B_35AA4(void) case 1: if (gCurrentPinballGame->returnToMainBoardFlag == 0) { - if (gCurrentPinballGame->unk40E == 0) + if (gCurrentPinballGame->kecleonFrameTimer == 0) { - u16 var0 = 16 - gCurrentPinballGame->unk3FA; - u16 var1 = gCurrentPinballGame->unk3FA; + u16 var0 = 16 - gCurrentPinballGame->kecleonTargetX; + u16 var1 = gCurrentPinballGame->kecleonTargetX; gMain.blendControl = 0x1C10; gMain.blendAlpha = BLDALPHA_BLEND(var0, var1); } @@ -161,67 +161,67 @@ void KecleonBoardProcess_3B_35AA4(void) } break; case 2: - if (gCurrentPinballGame->unk18 < 10) + if (gCurrentPinballGame->stageTimer < 10) { - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unk13 = 3; - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->boardState = 3; + gCurrentPinballGame->stageTimer = 0; gMain.spriteGroups[6].available = 1; gMain.spriteGroups[5].available = 1; DmaCopy16(3, gKecleonBonusClear_Gfx, (void *)0x6015800, 0x2000); - gCurrentPinballGame->unk394 = 0x88; + gCurrentPinballGame->bannerSlideYOffset = 0x88; gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER; } break; case 3: - ProceessBonusBannerAndScoring(); + ProcessBonusBannerAndScoring(); if (gCurrentPinballGame->scoreCounterAnimationEnabled) - gCurrentPinballGame->unk18 = 181; + gCurrentPinballGame->stageTimer = 181; - if (gCurrentPinballGame->unk18 == 180) + if (gCurrentPinballGame->stageTimer == 180) { gCurrentPinballGame->scoreCounterAnimationEnabled = TRUE; gCurrentPinballGame->scoreAddStepSize = 400000; gCurrentPinballGame->scoreAddedInFrame = BONUS_KECLEON_COMPLETE_POINTS; } - if (gCurrentPinballGame->unk18 < 240) + if (gCurrentPinballGame->stageTimer < 240) { - if (gCurrentPinballGame->unk18 == 20) + if (gCurrentPinballGame->stageTimer == 20) { m4aMPlayAllStop(); m4aSongNumStart(MUS_SUCCESS3); } - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk13 = 4; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardState = 4; gCurrentPinballGame->numCompletedBonusStages++; } break; case 4: - ProceessBonusBannerAndScoring(); + ProcessBonusBannerAndScoring(); gCurrentPinballGame->returnToMainBoardFlag = 1; break; } - sub_35D54(); - sub_36CB4(); - sub_372B4(); - sub_3751C(); - if (gCurrentPinballGame->unk294 && gCurrentPinballGame->eventTimer < 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE) + UpdateKecleonEntityLogic(); + RenderKecleonSprites(); + UpdateKecleonScopeItem(); + UpdateKecleonScopeVision(); + if (gCurrentPinballGame->boardModeType && gCurrentPinballGame->eventTimer < 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE) { m4aMPlayAllStop(); m4aSongNumStart(MUS_END_OF_BALL3); - gCurrentPinballGame->unk404 = 0; - gCurrentPinballGame->unk408 = 0; - gCurrentPinballGame->unk406 = 0; + gCurrentPinballGame->kecleonBoardHitState = 0; + gCurrentPinballGame->kecleonAnimTimer = 0; + gCurrentPinballGame->kecleonTargetActive = 0; gMain.modeChangeFlags |= MODE_CHANGE_EXPIRED_BONUS; } @@ -229,10 +229,10 @@ void KecleonBoardProcess_3B_35AA4(void) FadeToMainBoard(); BonusStage_HandleModeChangeFlags(); - sub_37850(); + RenderKecleonBoardElements(); } -void sub_35D54(void) +void UpdateKecleonEntityLogic(void) { const u16 VECTORSCALEDOWN = 20000; int deltaX; @@ -243,533 +243,533 @@ void sub_35D54(void) int xx, yy; int deltaMagSquared; - switch (gCurrentPinballGame->unk3DC) + switch (gCurrentPinballGame->bossEntityState) { case 0: - gCurrentPinballGame->unk3DC = 1; - gCurrentPinballGame->unk3E2 = 3; - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E8 = 750; - gCurrentPinballGame->unk3EA = 360; - gCurrentPinballGame->unk3F4 = gUnknown_086AE9E4[10].unk0[(Random() * gMain.systemFrameCount) & 0x3]; + gCurrentPinballGame->bossEntityState = 1; + gCurrentPinballGame->bossFramesetIndex = 3; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossPositionX = 750; + gCurrentPinballGame->bossPositionY = 360; + gCurrentPinballGame->kecleonTargetState = gKecleonMovementTargetGraph[10].adjacentStates[(Random() * gMain.systemFrameCount) & 0x3]; break; case 1: - if (gUnknown_086AE718[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gKecleonAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - if (++gCurrentPinballGame->unk3E2 == 9) - gCurrentPinballGame->unk3E2 = 3; + gCurrentPinballGame->bossFrameTimer = 0; + if (++gCurrentPinballGame->bossFramesetIndex == 9) + gCurrentPinballGame->bossFramesetIndex = 3; } - if (gCurrentPinballGame->unk3E8 > 0) + if (gCurrentPinballGame->bossPositionX > 0) { - gCurrentPinballGame->unk3E8 -= 6; + gCurrentPinballGame->bossPositionX -= 6; } else { - gCurrentPinballGame->unk3DC = 2; - gCurrentPinballGame->unk3E2 = 59; - gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->bossEntityState = 2; + gCurrentPinballGame->bossFramesetIndex = 59; + gCurrentPinballGame->bossFrameTimer = 0; } - if (gCurrentPinballGame->unk392 > 2) - gCurrentPinballGame->unk392--; + if (gCurrentPinballGame->ballRespawnTimer > 2) + gCurrentPinballGame->ballRespawnTimer--; break; case 2: - if (gUnknown_086AE718[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gKecleonAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - if (++gCurrentPinballGame->unk3E2 == 66) + gCurrentPinballGame->bossFrameTimer = 0; + if (++gCurrentPinballGame->bossFramesetIndex == 66) { - gCurrentPinballGame->unk3E2 = 65; - if (gCurrentPinballGame->unk40E < 8) + gCurrentPinballGame->bossFramesetIndex = 65; + if (gCurrentPinballGame->kecleonFrameTimer < 8) { - gCurrentPinballGame->unk3DC = 3; + gCurrentPinballGame->bossEntityState = 3; } else { int rand, mask; - if (gCurrentPinballGame->unk3F5) + if (gCurrentPinballGame->kecleonTargetFrameIndex) { - gCurrentPinballGame->unk3E4 = 20; + gCurrentPinballGame->bossFrameTimer = 20; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3F5 = 1; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->kecleonTargetFrameIndex = 1; } - gCurrentPinballGame->unk3DC = 5; + gCurrentPinballGame->bossEntityState = 5; rand = Random() + gMain.systemFrameCount; mask = 0x3; - gCurrentPinballGame->unk3F4 = gUnknown_086AE9E4[gCurrentPinballGame->unk3F4].unk0[rand & mask]; + gCurrentPinballGame->kecleonTargetState = gKecleonMovementTargetGraph[gCurrentPinballGame->kecleonTargetState].adjacentStates[rand & mask]; } } - if (gCurrentPinballGame->unk3E2 == 60 || gCurrentPinballGame->unk3E2 == 61) + if (gCurrentPinballGame->bossFramesetIndex == 60 || gCurrentPinballGame->bossFramesetIndex == 61) MPlayStart(&gMPlayInfo_SE1, &se_unk_fc); } - if (gCurrentPinballGame->unk3E2 == 64) + if (gCurrentPinballGame->bossFramesetIndex == 64) { - gCurrentPinballGame->unk3FA = gCurrentPinballGame->unk3E4 / 2; - if (gCurrentPinballGame->unk3E4 == 4) + gCurrentPinballGame->kecleonTargetX = gCurrentPinballGame->bossFrameTimer / 2; + if (gCurrentPinballGame->bossFrameTimer == 4) MPlayStart(&gMPlayInfo_SE1, &se_unk_fd); } break; case 3: - gCurrentPinballGame->unk3EC = gUnknown_086AE9E4[gCurrentPinballGame->unk3F4].unk4[0]; - gCurrentPinballGame->unk3EE = gUnknown_086AE9E4[gCurrentPinballGame->unk3F4].unk4[1]; - deltaVec.x = gCurrentPinballGame->unk3EC - gCurrentPinballGame->unk3E8; - deltaVec.y = gCurrentPinballGame->unk3EE - gCurrentPinballGame->unk3EA; + gCurrentPinballGame->bossVelocityX = gKecleonMovementTargetGraph[gCurrentPinballGame->kecleonTargetState].velocity[0]; + gCurrentPinballGame->bossVelocityY = gKecleonMovementTargetGraph[gCurrentPinballGame->kecleonTargetState].velocity[1]; + deltaVec.x = gCurrentPinballGame->bossVelocityX - gCurrentPinballGame->bossPositionX; + deltaVec.y = gCurrentPinballGame->bossVelocityY - gCurrentPinballGame->bossPositionY; angle = ArcTan2(deltaVec.x, -deltaVec.y); - gCurrentPinballGame->unk3DE = gUnknown_086AE9C4[angle / 0x2000]; - gCurrentPinballGame->unk3E2 = gCurrentPinballGame->unk3DE; - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3DC = 4; + gCurrentPinballGame->kecleonFramesetBase = gKecleonVisibleWalkDirectionMap[angle / 0x2000]; + gCurrentPinballGame->bossFramesetIndex = gCurrentPinballGame->kecleonFramesetBase; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossEntityState = 4; break; case 4: - deltaVec.x = gCurrentPinballGame->unk3EC - gCurrentPinballGame->unk3E8; - deltaVec.y = gCurrentPinballGame->unk3EE - gCurrentPinballGame->unk3EA; + deltaVec.x = gCurrentPinballGame->bossVelocityX - gCurrentPinballGame->bossPositionX; + deltaVec.y = gCurrentPinballGame->bossVelocityY - gCurrentPinballGame->bossPositionY; xx = deltaVec.x * deltaVec.x; yy = deltaVec.y * deltaVec.y; deltaMagSquared = xx + yy; angle = ArcTan2(deltaVec.x, -deltaVec.y); tempVec.x = 6 * Cos(angle) / VECTORSCALEDOWN; tempVec.y = -6 * Sin(angle) / VECTORSCALEDOWN; - gCurrentPinballGame->unk3E8 += tempVec.x; - gCurrentPinballGame->unk3EA += tempVec.y; + gCurrentPinballGame->bossPositionX += tempVec.x; + gCurrentPinballGame->bossPositionY += tempVec.y; if (deltaMagSquared < 2500) { - gCurrentPinballGame->unk3DC = 8; - if (gCurrentPinballGame->unk3DE == 3) + gCurrentPinballGame->bossEntityState = 8; + if (gCurrentPinballGame->kecleonFramesetBase == 3) { - gCurrentPinballGame->unk3DE = 66; - gCurrentPinballGame->unk3E2 = 66; + gCurrentPinballGame->kecleonFramesetBase = 66; + gCurrentPinballGame->bossFramesetIndex = 66; } else { - gCurrentPinballGame->unk3DE = 69; - gCurrentPinballGame->unk3E2 = 69; + gCurrentPinballGame->kecleonFramesetBase = 69; + gCurrentPinballGame->bossFramesetIndex = 69; } - gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->bossFrameTimer = 0; } - if (gUnknown_086AE718[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gKecleonAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == gCurrentPinballGame->unk3DE + 6) - gCurrentPinballGame->unk3E2 = gCurrentPinballGame->unk3DE; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == gCurrentPinballGame->kecleonFramesetBase + 6) + gCurrentPinballGame->bossFramesetIndex = gCurrentPinballGame->kecleonFramesetBase; } break; case 5: - if (gCurrentPinballGame->unk3E4 < 18) + if (gCurrentPinballGame->bossFrameTimer < 18) { - if (gCurrentPinballGame->unk3E4 == 0) + if (gCurrentPinballGame->bossFrameTimer == 0) MPlayStart(&gMPlayInfo_SE1, &se_unk_fe); - gCurrentPinballGame->unk3E4++; - if (gCurrentPinballGame->unk3DE == 66) - gCurrentPinballGame->unk3E2 = 37; + gCurrentPinballGame->bossFrameTimer++; + if (gCurrentPinballGame->kecleonFramesetBase == 66) + gCurrentPinballGame->bossFramesetIndex = 37; else - gCurrentPinballGame->unk3E2 = 48; + gCurrentPinballGame->bossFramesetIndex = 48; } else { - gCurrentPinballGame->unk3EC = gUnknown_086AE9E4[gCurrentPinballGame->unk3F4].unk4[0]; - gCurrentPinballGame->unk3EE = gUnknown_086AE9E4[gCurrentPinballGame->unk3F4].unk4[1]; - deltaVec.x = gCurrentPinballGame->unk3EC - gCurrentPinballGame->unk3E8; - deltaVec.y = gCurrentPinballGame->unk3EE - gCurrentPinballGame->unk3EA; + gCurrentPinballGame->bossVelocityX = gKecleonMovementTargetGraph[gCurrentPinballGame->kecleonTargetState].velocity[0]; + gCurrentPinballGame->bossVelocityY = gKecleonMovementTargetGraph[gCurrentPinballGame->kecleonTargetState].velocity[1]; + deltaVec.x = gCurrentPinballGame->bossVelocityX - gCurrentPinballGame->bossPositionX; + deltaVec.y = gCurrentPinballGame->bossVelocityY - gCurrentPinballGame->bossPositionY; angle = ArcTan2(deltaVec.x, -deltaVec.y); - gCurrentPinballGame->unk3DE = gUnknown_086AE9D4[angle / 0x2000]; - gCurrentPinballGame->unk3E2 = gCurrentPinballGame->unk3DE; - gCurrentPinballGame->unk3DC = 6; + gCurrentPinballGame->kecleonFramesetBase = gKecleonInvisibleDashDirectionMap[angle / 0x2000]; + gCurrentPinballGame->bossFramesetIndex = gCurrentPinballGame->kecleonFramesetBase; + gCurrentPinballGame->bossEntityState = 6; } break; case 6: - deltaVec.x = gCurrentPinballGame->unk3EC - gCurrentPinballGame->unk3E8; - deltaVec.y = gCurrentPinballGame->unk3EE - gCurrentPinballGame->unk3EA; + deltaVec.x = gCurrentPinballGame->bossVelocityX - gCurrentPinballGame->bossPositionX; + deltaVec.y = gCurrentPinballGame->bossVelocityY - gCurrentPinballGame->bossPositionY; xx = deltaVec.x * deltaVec.x; yy = deltaVec.y * deltaVec.y; deltaMagSquared = xx + yy; angle = ArcTan2(deltaVec.x, -deltaVec.y); tempVec.x = 10 * Cos(angle) / VECTORSCALEDOWN; tempVec.y = -10 * Sin(angle) / VECTORSCALEDOWN; - gCurrentPinballGame->unk3E8 += tempVec.x; - gCurrentPinballGame->unk3EA += tempVec.y; + gCurrentPinballGame->bossPositionX += tempVec.x; + gCurrentPinballGame->bossPositionY += tempVec.y; if (deltaMagSquared < 2500) { if (gCurrentPinballGame->bonusModeHitCount > 9) { - if (gCurrentPinballGame->unk3DE == 66) + if (gCurrentPinballGame->kecleonFramesetBase == 66) { - gCurrentPinballGame->unk3DE = 75; - gCurrentPinballGame->unk3E8 += 240; + gCurrentPinballGame->kecleonFramesetBase = 75; + gCurrentPinballGame->bossPositionX += 240; } else { - gCurrentPinballGame->unk3DE = 95; - gCurrentPinballGame->unk3E8 -= 240; + gCurrentPinballGame->kecleonFramesetBase = 95; + gCurrentPinballGame->bossPositionX -= 240; } - gCurrentPinballGame->unk3DC = 14; - gCurrentPinballGame->unk3E2 = gCurrentPinballGame->unk3DE; + gCurrentPinballGame->bossEntityState = 14; + gCurrentPinballGame->bossFramesetIndex = gCurrentPinballGame->kecleonFramesetBase; } else { - if (gCurrentPinballGame->unk3FA < 16) + if (gCurrentPinballGame->kecleonTargetX < 16) { - gCurrentPinballGame->unk3DC = 2; - gCurrentPinballGame->unk3E2 = 62; - gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->bossEntityState = 2; + gCurrentPinballGame->bossFramesetIndex = 62; + gCurrentPinballGame->bossFrameTimer = 0; } else { - gCurrentPinballGame->unk3DC = 7; - if (gCurrentPinballGame->unk3DE == 38) + gCurrentPinballGame->bossEntityState = 7; + if (gCurrentPinballGame->kecleonFramesetBase == 38) { - gCurrentPinballGame->unk3DE = 42; - gCurrentPinballGame->unk3E2 = 42; + gCurrentPinballGame->kecleonFramesetBase = 42; + gCurrentPinballGame->bossFramesetIndex = 42; } else { - gCurrentPinballGame->unk3DE = 53; - gCurrentPinballGame->unk3E2 = 53; + gCurrentPinballGame->kecleonFramesetBase = 53; + gCurrentPinballGame->bossFramesetIndex = 53; } - gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->bossFrameTimer = 0; } } } - if (gUnknown_086AE718[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gKecleonAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == gCurrentPinballGame->unk3DE + 4) - gCurrentPinballGame->unk3E2 = gCurrentPinballGame->unk3DE; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == gCurrentPinballGame->kecleonFramesetBase + 4) + gCurrentPinballGame->bossFramesetIndex = gCurrentPinballGame->kecleonFramesetBase; - if (gCurrentPinballGame->unk3E2 == gCurrentPinballGame->unk3DE + 1) + if (gCurrentPinballGame->bossFramesetIndex == gCurrentPinballGame->kecleonFramesetBase + 1) MPlayStart(&gMPlayInfo_SE1, &se_unk_ff); - if (gCurrentPinballGame->unk3E2 == gCurrentPinballGame->unk3DE + 3) + if (gCurrentPinballGame->bossFramesetIndex == gCurrentPinballGame->kecleonFramesetBase + 3) MPlayStart(&gMPlayInfo_SE1, &se_unk_ff); } break; case 7: - if (gUnknown_086AE718[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gKecleonAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == gCurrentPinballGame->unk3DE + 6) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == gCurrentPinballGame->kecleonFramesetBase + 6) { int rand, mask; - if (gCurrentPinballGame->unk40E < 8) + if (gCurrentPinballGame->kecleonFrameTimer < 8) { - gCurrentPinballGame->unk3DC = 3; + gCurrentPinballGame->bossEntityState = 3; } else { - if (gCurrentPinballGame->unk3F5) + if (gCurrentPinballGame->kecleonTargetFrameIndex) { - gCurrentPinballGame->unk3E4 = 20; + gCurrentPinballGame->bossFrameTimer = 20; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3F5 = 1; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->kecleonTargetFrameIndex = 1; } - gCurrentPinballGame->unk3DC = 5; + gCurrentPinballGame->bossEntityState = 5; } rand = Random() + gMain.systemFrameCount; mask = 0x3; - gCurrentPinballGame->unk3F4 = gUnknown_086AE9E4[gCurrentPinballGame->unk3F4].unk0[rand & mask]; - gCurrentPinballGame->unk3E2 = gCurrentPinballGame->unk3DE + 5; + gCurrentPinballGame->kecleonTargetState = gKecleonMovementTargetGraph[gCurrentPinballGame->kecleonTargetState].adjacentStates[rand & mask]; + gCurrentPinballGame->bossFramesetIndex = gCurrentPinballGame->kecleonFramesetBase + 5; } } break; case 8: - if (gUnknown_086AE718[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gKecleonAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { int rand, mask; - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == gCurrentPinballGame->unk3DE + 2) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == gCurrentPinballGame->kecleonFramesetBase + 2) { - if (gCurrentPinballGame->unk40E < 8) + if (gCurrentPinballGame->kecleonFrameTimer < 8) { - gCurrentPinballGame->unk3DC = 3; + gCurrentPinballGame->bossEntityState = 3; } else { - if (gCurrentPinballGame->unk3F5) + if (gCurrentPinballGame->kecleonTargetFrameIndex) { - gCurrentPinballGame->unk3E4 = 20; + gCurrentPinballGame->bossFrameTimer = 20; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3F5 = 1; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->kecleonTargetFrameIndex = 1; } - gCurrentPinballGame->unk3DC = 5; + gCurrentPinballGame->bossEntityState = 5; } rand = Random() + gMain.systemFrameCount; mask = 0x3; - gCurrentPinballGame->unk3F4 = gUnknown_086AE9E4[gCurrentPinballGame->unk3F4].unk0[rand & mask]; - gCurrentPinballGame->unk3E2 = gCurrentPinballGame->unk3DE + 1; + gCurrentPinballGame->kecleonTargetState = gKecleonMovementTargetGraph[gCurrentPinballGame->kecleonTargetState].adjacentStates[rand & mask]; + gCurrentPinballGame->bossFramesetIndex = gCurrentPinballGame->kecleonFramesetBase + 1; } } break; case 9: - gCurrentPinballGame->unk3DC = 10; + gCurrentPinballGame->bossEntityState = 10; if (gMain.systemFrameCount & 1) { - if (gCurrentPinballGame->unk3E8 < -640) + if (gCurrentPinballGame->bossPositionX < -640) { - gCurrentPinballGame->unk3F6 = 1; - gCurrentPinballGame->unk3DE = 32; + gCurrentPinballGame->kecleonTargetColorMatch = 1; + gCurrentPinballGame->kecleonFramesetBase = 32; } else { - gCurrentPinballGame->unk3F6 = 0; - gCurrentPinballGame->unk3DE = 27; + gCurrentPinballGame->kecleonTargetColorMatch = 0; + gCurrentPinballGame->kecleonFramesetBase = 27; } } else { - if (gCurrentPinballGame->unk3E8 > 640) + if (gCurrentPinballGame->bossPositionX > 640) { - gCurrentPinballGame->unk3F6 = 0; - gCurrentPinballGame->unk3DE = 27; + gCurrentPinballGame->kecleonTargetColorMatch = 0; + gCurrentPinballGame->kecleonFramesetBase = 27; } else { - gCurrentPinballGame->unk3F6 = 1; - gCurrentPinballGame->unk3DE = 32; + gCurrentPinballGame->kecleonTargetColorMatch = 1; + gCurrentPinballGame->kecleonFramesetBase = 32; } } - if (gCurrentPinballGame->unk3FA < 16) - gCurrentPinballGame->unk3FA = 0; + if (gCurrentPinballGame->kecleonTargetX < 16) + gCurrentPinballGame->kecleonTargetX = 0; - gCurrentPinballGame->unk3E2 = gCurrentPinballGame->unk3DE; - gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->bossFramesetIndex = gCurrentPinballGame->kecleonFramesetBase; + gCurrentPinballGame->bossFrameTimer = 0; MPlayStart(&gMPlayInfo_SE1, &se_unk_100); break; case 10: - if (gUnknown_086AE718[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gKecleonAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == gCurrentPinballGame->unk3DE + 1) - gCurrentPinballGame->unk3FC = 23; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == gCurrentPinballGame->kecleonFramesetBase + 1) + gCurrentPinballGame->kecleonTargetY = 23; - if (gCurrentPinballGame->unk3E2 == gCurrentPinballGame->unk3DE + 2) + if (gCurrentPinballGame->bossFramesetIndex == gCurrentPinballGame->kecleonFramesetBase + 2) { - gCurrentPinballGame->unk3DC = 13; - gCurrentPinballGame->unk3E2 = gCurrentPinballGame->unk3DE + 1; + gCurrentPinballGame->bossEntityState = 13; + gCurrentPinballGame->bossFramesetIndex = gCurrentPinballGame->kecleonFramesetBase + 1; } } break; case 11: - gCurrentPinballGame->unk3DC = 12; - gCurrentPinballGame->unk3E2 = gCurrentPinballGame->unk3DE + 2; - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3FA = 0; + gCurrentPinballGame->bossEntityState = 12; + gCurrentPinballGame->bossFramesetIndex = gCurrentPinballGame->kecleonFramesetBase + 2; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->kecleonTargetX = 0; gCurrentPinballGame->scoreAddedInFrame = 500000; gCurrentPinballGame->bonusModeHitCount++; MPlayStart(&gMPlayInfo_SE1, &se_unk_101); PlayRumble(7); break; case 12: - if (gUnknown_086AE718[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gKecleonAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == gCurrentPinballGame->unk3DE + 4) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == gCurrentPinballGame->kecleonFramesetBase + 4) { - gCurrentPinballGame->unk3E2 = gCurrentPinballGame->unk3DE + 3; + gCurrentPinballGame->bossFramesetIndex = gCurrentPinballGame->kecleonFramesetBase + 3; if (gCurrentPinballGame->bonusModeHitCount < 10) { - gCurrentPinballGame->unk3DC = 13; + gCurrentPinballGame->bossEntityState = 13; } else { - gCurrentPinballGame->unk294 = 3; + gCurrentPinballGame->boardModeType = 3; 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->ballRespawnState = 2; + gCurrentPinballGame->ballRespawnTimer = 0; + gCurrentPinballGame->bossEntityState = 13; + gCurrentPinballGame->kecleonBoardHitState = 0; + gCurrentPinballGame->kecleonAnimTimer = 0; + gCurrentPinballGame->kecleonTargetActive = 0; gCurrentPinballGame->boardEntityCollisionMode = 0; } } } break; case 13: - gCurrentPinballGame->unk3E2 = gCurrentPinballGame->unk3DE + 4; - if (gCurrentPinballGame->unk3E4 < 8) + gCurrentPinballGame->bossFramesetIndex = gCurrentPinballGame->kecleonFramesetBase + 4; + if (gCurrentPinballGame->bossFrameTimer < 8) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { if (gCurrentPinballGame->bonusModeHitCount > 9) { - if (gCurrentPinballGame->unk3F6 == 0) + if (gCurrentPinballGame->kecleonTargetColorMatch == 0) { - gCurrentPinballGame->unk3E2 = 72; - gCurrentPinballGame->unk3E8 -= 240; + gCurrentPinballGame->bossFramesetIndex = 72; + gCurrentPinballGame->bossPositionX -= 240; } else { - gCurrentPinballGame->unk3E2 = 73; - gCurrentPinballGame->unk3E8 += 240; + gCurrentPinballGame->bossFramesetIndex = 73; + gCurrentPinballGame->bossPositionX += 240; } - gCurrentPinballGame->unk3DC = 5; - gCurrentPinballGame->unk3E4 = 20; - gCurrentPinballGame->unk3F4 = 3 + ((Random() * gMain.systemFrameCount) & 0x3); + gCurrentPinballGame->bossEntityState = 5; + gCurrentPinballGame->bossFrameTimer = 20; + gCurrentPinballGame->kecleonTargetState = 3 + ((Random() * gMain.systemFrameCount) & 0x3); } else { - if (gCurrentPinballGame->unk3FA < 16) + if (gCurrentPinballGame->kecleonTargetX < 16) { - if (gCurrentPinballGame->unk3F6 == 0) + if (gCurrentPinballGame->kecleonTargetColorMatch == 0) { - gCurrentPinballGame->unk3E2 = 72; - gCurrentPinballGame->unk3E8 -= 240; + gCurrentPinballGame->bossFramesetIndex = 72; + gCurrentPinballGame->bossPositionX -= 240; } else { - gCurrentPinballGame->unk3E2 = 73; - gCurrentPinballGame->unk3E8 += 240; + gCurrentPinballGame->bossFramesetIndex = 73; + gCurrentPinballGame->bossPositionX += 240; } - gCurrentPinballGame->unk3DC = 5; - gCurrentPinballGame->unk3E4 = 20; - gCurrentPinballGame->unk3F4 = 3 + ((Random() * gMain.systemFrameCount) & 0x3); + gCurrentPinballGame->bossEntityState = 5; + gCurrentPinballGame->bossFrameTimer = 20; + gCurrentPinballGame->kecleonTargetState = 3 + ((Random() * gMain.systemFrameCount) & 0x3); } else { - if (gCurrentPinballGame->unk3F6 == 0) + if (gCurrentPinballGame->kecleonTargetColorMatch == 0) { - gCurrentPinballGame->unk3E2 = 72; - gCurrentPinballGame->unk3E8 -= 240; + gCurrentPinballGame->bossFramesetIndex = 72; + gCurrentPinballGame->bossPositionX -= 240; } else { - gCurrentPinballGame->unk3E2 = 73; - gCurrentPinballGame->unk3E8 += 240; + gCurrentPinballGame->bossFramesetIndex = 73; + gCurrentPinballGame->bossPositionX += 240; } - gCurrentPinballGame->unk3E4 = 0; - if (gCurrentPinballGame->unk40E < 8) + gCurrentPinballGame->bossFrameTimer = 0; + if (gCurrentPinballGame->kecleonFrameTimer < 8) { - gCurrentPinballGame->unk3DC = 3; + gCurrentPinballGame->bossEntityState = 3; } else { - if (gCurrentPinballGame->unk3F5) + if (gCurrentPinballGame->kecleonTargetFrameIndex) { - gCurrentPinballGame->unk3E4 = 20; + gCurrentPinballGame->bossFrameTimer = 20; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3F5 = 1; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->kecleonTargetFrameIndex = 1; } - gCurrentPinballGame->unk3DC = 5; + gCurrentPinballGame->bossEntityState = 5; } } } } break; case 14: - gCurrentPinballGame->unk3FA = 0; - if (gUnknown_086AE718[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + gCurrentPinballGame->kecleonTargetX = 0; + if (gKecleonAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == gCurrentPinballGame->unk3DE + 19) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == gCurrentPinballGame->kecleonFramesetBase + 19) { - gCurrentPinballGame->unk3E2 = gCurrentPinballGame->unk3DE + 18; - gCurrentPinballGame->unk3DC = 15; + gCurrentPinballGame->bossFramesetIndex = gCurrentPinballGame->kecleonFramesetBase + 18; + gCurrentPinballGame->bossEntityState = 15; } - if (gCurrentPinballGame->unk3E2 == gCurrentPinballGame->unk3DE + 6) + if (gCurrentPinballGame->bossFramesetIndex == gCurrentPinballGame->kecleonFramesetBase + 6) MPlayStart(&gMPlayInfo_SE1, &se_unk_102); - if (gCurrentPinballGame->unk3E2 == gCurrentPinballGame->unk3DE + 8) + if (gCurrentPinballGame->bossFramesetIndex == gCurrentPinballGame->kecleonFramesetBase + 8) MPlayStart(&gMPlayInfo_SE1, &se_unk_103); } break; case 15: - if (gCurrentPinballGame->unk3E4 < 100) + if (gCurrentPinballGame->bossFrameTimer < 100) { - if (gCurrentPinballGame->unk3E4 == 0) + if (gCurrentPinballGame->bossFrameTimer == 0) { - gCurrentPinballGame->unk13 = 2; - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->boardState = 2; + gCurrentPinballGame->stageTimer = 0; } - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } - gCurrentPinballGame->unk3E2 = gCurrentPinballGame->unk3DE + 15; + gCurrentPinballGame->bossFramesetIndex = gCurrentPinballGame->kecleonFramesetBase + 15; break; } } -void sub_36CB4(void) +void RenderKecleonSprites(void) { s16 i; struct SpriteGroup *spriteGroup; @@ -783,62 +783,62 @@ void sub_36CB4(void) int baseX = 104; int baseY = 28; - spriteGroup = &gMain_spriteGroups[gUnknown_02031590[23]]; + spriteGroup = &gMain_spriteGroups[gKecleonSpriteOrderMap[23]]; if (!spriteGroup->available) return; - sp0 = gCurrentPinballGame->unk3DF; - gCurrentPinballGame->unk3DF = gUnknown_086AE718[gCurrentPinballGame->unk3E2][2]; + sp0 = gCurrentPinballGame->bossVulnerable; + gCurrentPinballGame->bossVulnerable = gKecleonAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][2]; DmaCopy16(3, gKecleonStageKecleon_Gfx[sp0], (void *)0x6010920, 0x280); - sp4 = gUnknown_086AE718[gCurrentPinballGame->unk3E2][0]; - spriteGroup->baseX = gCurrentPinballGame->unk3E8 / 10 + baseX - gCurrentPinballGame->unk58; - spriteGroup->baseY = gCurrentPinballGame->unk3EA / 10 + baseY - gCurrentPinballGame->unk5A; - if (gCurrentPinballGame->unk3E2 >= 28 && gCurrentPinballGame->unk3E2 < 31) + sp4 = gKecleonAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][0]; + spriteGroup->baseX = gCurrentPinballGame->bossPositionX / 10 + baseX - gCurrentPinballGame->cameraXOffset; + spriteGroup->baseY = gCurrentPinballGame->bossPositionY / 10 + baseY - gCurrentPinballGame->cameraYOffset; + if (gCurrentPinballGame->bossFramesetIndex >= 28 && gCurrentPinballGame->bossFramesetIndex < 31) { - gCurrentPinballGame->unk3F0 = 2 * (gCurrentPinballGame->unk3E8 / 10) + 144; - gCurrentPinballGame->unk3F2 = 2 * (gCurrentPinballGame->unk3EA / 10) + 84; + gCurrentPinballGame->bossCollisionX = 2 * (gCurrentPinballGame->bossPositionX / 10) + 144; + gCurrentPinballGame->bossCollisionY = 2 * (gCurrentPinballGame->bossPositionY / 10) + 84; if (gCurrentPinballGame->bonusModeHitCount < 10) gCurrentPinballGame->boardEntityCollisionMode = 2; } - else if (gCurrentPinballGame->unk3E2 >= 33 && gCurrentPinballGame->unk3E2 < 36) + else if (gCurrentPinballGame->bossFramesetIndex >= 33 && gCurrentPinballGame->bossFramesetIndex < 36) { - gCurrentPinballGame->unk3F0 = 2 * (gCurrentPinballGame->unk3E8 / 10) + 240; - gCurrentPinballGame->unk3F2 = 2 * (gCurrentPinballGame->unk3EA / 10) + 84; + gCurrentPinballGame->bossCollisionX = 2 * (gCurrentPinballGame->bossPositionX / 10) + 240; + gCurrentPinballGame->bossCollisionY = 2 * (gCurrentPinballGame->bossPositionY / 10) + 84; if (gCurrentPinballGame->bonusModeHitCount < 10) gCurrentPinballGame->boardEntityCollisionMode = 2; } else { - gCurrentPinballGame->unk3F0 = 2 * (gCurrentPinballGame->unk3E8 / 10) + 208; - gCurrentPinballGame->unk3F2 = 2 * (gCurrentPinballGame->unk3EA / 10) + 56; + gCurrentPinballGame->bossCollisionX = 2 * (gCurrentPinballGame->bossPositionX / 10) + 208; + gCurrentPinballGame->bossCollisionY = 2 * (gCurrentPinballGame->bossPositionY / 10) + 56; if (gCurrentPinballGame->bonusModeHitCount < 10) gCurrentPinballGame->boardEntityCollisionMode = 1; } - gCurrentPinballGame->unk400.x = (gCurrentPinballGame->unk3E8 / 10) + 120; - gCurrentPinballGame->unk400.y = (gCurrentPinballGame->unk3EA / 10) + 58; - if (gCurrentPinballGame->unk40E > 7) - gCurrentPinballGame->unk3F7 = 1; - else if (gCurrentPinballGame->unk3FA > 15) - gCurrentPinballGame->unk3F7 = 0; + gCurrentPinballGame->kecleonCollisionPos.x = (gCurrentPinballGame->bossPositionX / 10) + 120; + gCurrentPinballGame->kecleonCollisionPos.y = (gCurrentPinballGame->bossPositionY / 10) + 58; + if (gCurrentPinballGame->kecleonFrameTimer > 7) + gCurrentPinballGame->kecleonTargetVisible = 1; + else if (gCurrentPinballGame->kecleonTargetX > 15) + gCurrentPinballGame->kecleonTargetVisible = 0; else - gCurrentPinballGame->unk3F7 = 1; + gCurrentPinballGame->kecleonTargetVisible = 1; for (i = 0; i < 2; i++) { oamSimple = &spriteGroup->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B9DAC[sp4][i]; + src = gKecleonUpperBodyOamData[sp4][i]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; - if (gCurrentPinballGame->unk3F7) + if (gCurrentPinballGame->kecleonTargetVisible) { gOamBuffer[oamSimple->oamId].x += spriteGroup->baseX; gOamBuffer[oamSimple->oamId].y += spriteGroup->baseY; - if (gCurrentPinballGame->unk3DF == 20) { - if(gCurrentPinballGame->unk3E4 < 10) + if (gCurrentPinballGame->bossVulnerable == 20) { + if(gCurrentPinballGame->bossFrameTimer < 10) gOamBuffer[oamSimple->oamId].paletteNum = 10; else gOamBuffer[oamSimple->oamId].paletteNum = 2; @@ -858,25 +858,25 @@ void sub_36CB4(void) baseX = 104; baseY = 60; spriteGroup = &gMain_spriteGroups_31; - spriteGroup->baseX = gCurrentPinballGame->unk3E8 / 10 + baseX - gCurrentPinballGame->unk58; - spriteGroup->baseY = gCurrentPinballGame->unk3EA / 10 + baseY - gCurrentPinballGame->unk5A; + spriteGroup->baseX = gCurrentPinballGame->bossPositionX / 10 + baseX - gCurrentPinballGame->cameraXOffset; + spriteGroup->baseY = gCurrentPinballGame->bossPositionY / 10 + baseY - gCurrentPinballGame->cameraYOffset; for (i = 0; i < 2; i++) { oamSimple = &spriteGroup->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B9AB8[sp4][i]; + src = gKecleonLowerBodyOamData[sp4][i]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; - if (gCurrentPinballGame->unk3F7) + if (gCurrentPinballGame->kecleonTargetVisible) { gOamBuffer[oamSimple->oamId].x += spriteGroup->baseX; gOamBuffer[oamSimple->oamId].y += spriteGroup->baseY; if (sp0 == 20) { - if (gCurrentPinballGame->unk3E4 < 10) + if (gCurrentPinballGame->bossFrameTimer < 10) gOamBuffer[oamSimple->oamId].paletteNum = 11; else gOamBuffer[oamSimple->oamId].paletteNum = 4; @@ -896,15 +896,15 @@ void sub_36CB4(void) baseX = 104; baseY = 26; spriteGroup = &gMain_spriteGroups_9; - var0 = gCurrentPinballGame->unk3F8 * 3; - var1 = gCurrentPinballGame->unk3FC / 8 - 2; + var0 = gCurrentPinballGame->kecleonCollisionEnabled * 3; + var1 = gCurrentPinballGame->kecleonTargetY / 8 - 2; DmaCopy16(3, gKecleonStageKecleonFx_Gfx[var0 - var1], (void *)0x6010BA0, 0x100); - if (gCurrentPinballGame->unk3FC > 0) + if (gCurrentPinballGame->kecleonTargetY > 0) { - gCurrentPinballGame->unk3FC--; - spriteGroup->baseX = gCurrentPinballGame->unk3E8 / 10 + baseX - gCurrentPinballGame->unk58; - spriteGroup->baseY = gCurrentPinballGame->unk3EA / 10 + - gCurrentPinballGame->unk5A + baseY; + gCurrentPinballGame->kecleonTargetY--; + spriteGroup->baseX = gCurrentPinballGame->bossPositionX / 10 + baseX - gCurrentPinballGame->cameraXOffset; + spriteGroup->baseY = gCurrentPinballGame->bossPositionY / 10 + - gCurrentPinballGame->cameraYOffset + baseY; } else { @@ -915,14 +915,14 @@ void sub_36CB4(void) oamSimple = &spriteGroup->oam[0]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + spriteGroup->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + spriteGroup->baseY; - if (gCurrentPinballGame->unk3F6 == 0) + if (gCurrentPinballGame->kecleonTargetColorMatch == 0) gOamBuffer[oamSimple->oamId].hFlip = 0; else gOamBuffer[oamSimple->oamId].hFlip = 1; } -void sub_372B4(void) +void UpdateKecleonScopeItem(void) { s16 i; struct SpriteGroup *group; @@ -935,52 +935,52 @@ void sub_372B4(void) if (!group->available) return; - if (gCurrentPinballGame->unk404) + if (gCurrentPinballGame->kecleonBoardHitState) { - if (gCurrentPinballGame->unk40A == 0) + if (gCurrentPinballGame->kecleonCollisionX == 0) { - gCurrentPinballGame->unk405 = (Random() * gMain.systemFrameCount) % 5; - gCurrentPinballGame->unk414.y = 0; - gCurrentPinballGame->unk418.y = 0; + gCurrentPinballGame->kecleonHitFrameIndex = (Random() * gMain.systemFrameCount) % 5; + gCurrentPinballGame->orbLogicPosition.y = 0; + gCurrentPinballGame->orbCollisionPosition.y = 0; } - if (gCurrentPinballGame->unk40A < 40) - gCurrentPinballGame->unk40A++; + if (gCurrentPinballGame->kecleonCollisionX < 40) + gCurrentPinballGame->kecleonCollisionX++; - if (gCurrentPinballGame->unk40A == 20) + if (gCurrentPinballGame->kecleonCollisionX == 20) m4aMPlayStop(&gMPlayInfo_SE2); - if (gCurrentPinballGame->unk40A == 22) + if (gCurrentPinballGame->kecleonCollisionX == 22) m4aSongNumStart(SE_KECLEON_SCOPE_FALL); - if (gCurrentPinballGame->unk40A > 20) + if (gCurrentPinballGame->kecleonCollisionX > 20) { - gCurrentPinballGame->unk414.x = 4; - gCurrentPinballGame->unk414.y += 3; - gCurrentPinballGame->unk418.x = gUnknown_086AEA3C[gCurrentPinballGame->unk405].x; - gCurrentPinballGame->unk418.y += gCurrentPinballGame->unk414.y; - if (gCurrentPinballGame->unk418.y > gUnknown_086AEA3C[gCurrentPinballGame->unk405].y) + gCurrentPinballGame->orbLogicPosition.x = 4; + gCurrentPinballGame->orbLogicPosition.y += 3; + gCurrentPinballGame->orbCollisionPosition.x = gKecleonScopeFallTargets[gCurrentPinballGame->kecleonHitFrameIndex].x; + gCurrentPinballGame->orbCollisionPosition.y += gCurrentPinballGame->orbLogicPosition.y; + if (gCurrentPinballGame->orbCollisionPosition.y > gKecleonScopeFallTargets[gCurrentPinballGame->kecleonHitFrameIndex].y) { - gCurrentPinballGame->unk418.y = gUnknown_086AEA3C[gCurrentPinballGame->unk405].y; - gCurrentPinballGame->unk414.y = -(gCurrentPinballGame->unk414.y / 6); + gCurrentPinballGame->orbCollisionPosition.y = gKecleonScopeFallTargets[gCurrentPinballGame->kecleonHitFrameIndex].y; + gCurrentPinballGame->orbLogicPosition.y = -(gCurrentPinballGame->orbLogicPosition.y / 6); } - tempVector.x = gCurrentPinballGame->ball->positionQ0.x - (gCurrentPinballGame->unk418.x / 10 + 8); - tempVector.y = gCurrentPinballGame->ball->positionQ0.y - (gCurrentPinballGame->unk418.y / 10 + 8); + tempVector.x = gCurrentPinballGame->ball->positionQ0.x - (gCurrentPinballGame->orbCollisionPosition.x / 10 + 8); + tempVector.y = gCurrentPinballGame->ball->positionQ0.y - (gCurrentPinballGame->orbCollisionPosition.y / 10 + 8); xx = tempVector.x * tempVector.x; yy = tempVector.y * tempVector.y; squaredMagnitude = xx + yy; if (squaredMagnitude <= 120) { - gCurrentPinballGame->unk404 = 0; - gCurrentPinballGame->unk406 = 1; - gCurrentPinballGame->unk408 = 0; + gCurrentPinballGame->kecleonBoardHitState = 0; + gCurrentPinballGame->kecleonTargetActive = 1; + gCurrentPinballGame->kecleonAnimTimer = 0; gCurrentPinballGame->scoreAddedInFrame = 10000; m4aSongNumStart(SE_KECLEON_SCOPE_ACTIVATED); } - group->baseX = -gCurrentPinballGame->unk58 + gCurrentPinballGame->unk418.x / 10; - group->baseY = -gCurrentPinballGame->unk5A + gCurrentPinballGame->unk418.y / 10; + group->baseX = -gCurrentPinballGame->cameraXOffset + gCurrentPinballGame->orbCollisionPosition.x / 10; + group->baseY = -gCurrentPinballGame->cameraYOffset + gCurrentPinballGame->orbCollisionPosition.y / 10; } else { @@ -1000,7 +1000,7 @@ void sub_372B4(void) } -void sub_3751C(void) +void UpdateKecleonScopeVision(void) { s16 i, j; s16 var0; @@ -1010,51 +1010,51 @@ void sub_3751C(void) s16 var3; const u16 *ptr; - if (gCurrentPinballGame->unk406) + if (gCurrentPinballGame->kecleonTargetActive) { - if (gCurrentPinballGame->unk408 < 600) + if (gCurrentPinballGame->kecleonAnimTimer < 600) { - gCurrentPinballGame->unk408++; + gCurrentPinballGame->kecleonAnimTimer++; } else { - gCurrentPinballGame->unk408 = 0; - gCurrentPinballGame->unk406 = 0; + gCurrentPinballGame->kecleonAnimTimer = 0; + gCurrentPinballGame->kecleonTargetActive = 0; } } - if (gCurrentPinballGame->unk406) + if (gCurrentPinballGame->kecleonTargetActive) { - if (gCurrentPinballGame->unk40E < 10) - gCurrentPinballGame->unk40E++; + if (gCurrentPinballGame->kecleonFrameTimer < 10) + gCurrentPinballGame->kecleonFrameTimer++; } else { - if (gCurrentPinballGame->unk40E) - gCurrentPinballGame->unk40E--; + if (gCurrentPinballGame->kecleonFrameTimer) + gCurrentPinballGame->kecleonFrameTimer--; else - gCurrentPinballGame->unk3F5 = 0; + gCurrentPinballGame->kecleonTargetFrameIndex = 0; } - gMain.unk2E = gCurrentPinballGame->unk40E * 16; - var0 = gCurrentPinballGame->unk40E * 64; - var1 = (20 - gCurrentPinballGame->unk40E * 2) * 32; - index = (gCurrentPinballGame->unk408 % 36) / 9; - var3 = gUnknown_086AEA60[index]; - ptr = gUnknown_086AEA50[index]; + gMain.kecleonOverlayHeight = gCurrentPinballGame->kecleonFrameTimer * 16; + var0 = gCurrentPinballGame->kecleonFrameTimer * 64; + var1 = (20 - gCurrentPinballGame->kecleonFrameTimer * 2) * 32; + index = (gCurrentPinballGame->kecleonAnimTimer % 36) / 9; + var3 = gKecleonOverlayTileAnimIndices[index]; + ptr = gKecleonOverlayTilemapPointers[index]; for (j = 0; j < var0; j++) - gUnknown_03005C00[0x400 + j] = ptr[var1 + j]; + gBG0TilemapBuffer[0x400 + j] = ptr[var1 + j]; for (j = var0; j < 0x280; j++) - gUnknown_03005C00[0x400 + j] = 0x3FF; + gBG0TilemapBuffer[0x400 + j] = 0x3FF; - index = gCurrentPinballGame->unk408 % 150; + index = gCurrentPinballGame->kecleonAnimTimer % 150; if (index >= 10 && index < 80) { for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { - gUnknown_03005C00[0x408 + ((i + 6) * 0x20) + j] = gUnknown_08327994[((i + 21) * 0x20) + (j + var3 * 4)]; + gBG0TilemapBuffer[0x408 + ((i + 6) * 0x20) + j] = gKecleonBerryOverlayTilemap[((i + 21) * 0x20) + (j + var3 * 4)]; } } @@ -1064,7 +1064,7 @@ void sub_3751C(void) for (j = 0; j < var2; j++) { - gUnknown_03005C00[0x4C3 + j] = gUnknown_08327994[0x2EC + j]; + gBG0TilemapBuffer[0x4C3 + j] = gKecleonBerryOverlayTilemap[0x2EC + j]; } } @@ -1074,7 +1074,7 @@ void sub_3751C(void) { for (j = 0; j < 6; j++) { - gUnknown_03005C00[0x411 + ((i + 14) * 0x20) + j] = gUnknown_08327994[((i + 21) * 0x20) + (j + 0xC + var3 * 6)]; + gBG0TilemapBuffer[0x411 + ((i + 14) * 0x20) + j] = gKecleonBerryOverlayTilemap[((i + 21) * 0x20) + (j + 0xC + var3 * 6)]; } } @@ -1084,14 +1084,14 @@ void sub_3751C(void) for (j = 0; j < var2; j++) { - gUnknown_03005C00[0x5F7 + j] = gUnknown_08327994[0x2EC + j]; + gBG0TilemapBuffer[0x5F7 + j] = gKecleonBerryOverlayTilemap[0x2EC + j]; } } - DmaCopy16(3, &gUnknown_03005C00[0x400], (void *)0x06001000, 0x500); + DmaCopy16(3, &gBG0TilemapBuffer[0x400], (void *)0x06001000, 0x500); } -void sub_37850(void) +void RenderKecleonBoardElements(void) { s16 i, j; struct SpriteGroup *group; @@ -1102,13 +1102,13 @@ void sub_37850(void) s16 var1; s16 var2; - tempVector.x = gCurrentPinballGame->unk400.x * 2; - tempVector.y = gCurrentPinballGame->unk400.y * 2; - sub_17C1C(&tempVector); + tempVector.x = gCurrentPinballGame->kecleonCollisionPos.x * 2; + tempVector.y = gCurrentPinballGame->kecleonCollisionPos.y * 2; + CheckKecleonProjectileCollision(&tempVector); - group = &gMain.spriteGroups[gUnknown_02031590[16]]; - group->baseX = 120 - gCurrentPinballGame->unk58; - group->baseY = -gCurrentPinballGame->unk5A - 128; + group = &gMain.spriteGroups[gKecleonSpriteOrderMap[16]]; + group->baseX = 120 - gCurrentPinballGame->cameraXOffset; + group->baseY = -gCurrentPinballGame->cameraYOffset - 128; for (j = 0; j < 4; j++) { oamSimple = &group->oam[j]; @@ -1116,23 +1116,23 @@ void sub_37850(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - group = &gMain.spriteGroups[gUnknown_02031590[17]]; - group->baseX = 120 - gCurrentPinballGame->unk58; - group->baseY = -gCurrentPinballGame->unk5A - 128; + group = &gMain.spriteGroups[gKecleonSpriteOrderMap[17]]; + group->baseX = 120 - gCurrentPinballGame->cameraXOffset; + group->baseY = -gCurrentPinballGame->cameraYOffset - 128; oamSimple = &group->oam[0]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; group = &gMain.spriteGroups[7]; - var0 = 5 - gCurrentPinballGame->unk40C % 10; - if (gCurrentPinballGame->unk40C > 30) + var0 = 5 - gCurrentPinballGame->kecleonCollisionY % 10; + if (gCurrentPinballGame->kecleonCollisionY > 30) var1 = 20; - else if (gCurrentPinballGame->unk40C > 10) + else if (gCurrentPinballGame->kecleonCollisionY > 10) var1 = 10; else var1 = 5; - if (gCurrentPinballGame->unk40C == 40) + if (gCurrentPinballGame->kecleonCollisionY == 40) { m4aSongNumStart(SE_KECLEON_TREE_HIT); PlayRumble(7); @@ -1141,8 +1141,8 @@ void sub_37850(void) if (var0 < 0) var0 = -var0; - group->baseX = (var1 * (5 - var0)) / 10 + 120u - gCurrentPinballGame->unk58; - group->baseY = -gCurrentPinballGame->unk5A - 128; + group->baseX = (var1 * (5 - var0)) / 10 + 120u - gCurrentPinballGame->cameraXOffset; + group->baseY = -gCurrentPinballGame->cameraYOffset - 128; for (j = 0; j < 5; j++) { oamSimple = &group->oam[j]; @@ -1150,19 +1150,19 @@ void sub_37850(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - if (gCurrentPinballGame->unk40C) - gCurrentPinballGame->unk40C--; + if (gCurrentPinballGame->kecleonCollisionY) + gCurrentPinballGame->kecleonCollisionY--; for (i = 0; i < 6; i++) { - group = &gMain.spriteGroups[gUnknown_02031590[10 + i]]; - group->baseX = 120 - gCurrentPinballGame->unk58; - group->baseY = -gCurrentPinballGame->unk5A - 128; + group = &gMain.spriteGroups[gKecleonSpriteOrderMap[10 + i]]; + group->baseX = 120 - gCurrentPinballGame->cameraXOffset; + group->baseY = -gCurrentPinballGame->cameraYOffset - 128; var2 = 0; - if (gCurrentPinballGame->unk420[i]) + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[i]) { - var2 = gUnknown_086AEA68[(gCurrentPinballGame->unk420[i] % 24) / 6]; - gCurrentPinballGame->unk420[i]--; + var2 = gKecleonBerryFlashAnimIndices[(gCurrentPinballGame->kecleonBerrySmallFlashTimer[i] % 24) / 6]; + gCurrentPinballGame->kecleonBerrySmallFlashTimer[i]--; } for (j = 0; j < 2; j++) @@ -1176,14 +1176,14 @@ void sub_37850(void) for (i = 6; i < 10; i++) { - group = &gMain.spriteGroups[gUnknown_02031590[12 + i]]; - group->baseX = 120 - gCurrentPinballGame->unk58; - group->baseY = -gCurrentPinballGame->unk5A - 128; + group = &gMain.spriteGroups[gKecleonSpriteOrderMap[12 + i]]; + group->baseX = 120 - gCurrentPinballGame->cameraXOffset; + group->baseY = -gCurrentPinballGame->cameraYOffset - 128; var2 = 0; - if (gCurrentPinballGame->unk420[i]) + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[i]) { - var2 = gUnknown_086AEA68[(gCurrentPinballGame->unk420[i] % 24) / 6]; - gCurrentPinballGame->unk420[i]--; + var2 = gKecleonBerryFlashAnimIndices[(gCurrentPinballGame->kecleonBerrySmallFlashTimer[i] % 24) / 6]; + gCurrentPinballGame->kecleonBerrySmallFlashTimer[i]--; } for (j = 0; j < 2; j++) @@ -1196,13 +1196,13 @@ void sub_37850(void) } group = &gMain.spriteGroups[25]; - group->baseX = 120 - gCurrentPinballGame->unk58; - group->baseY = -gCurrentPinballGame->unk5A - 128; + group->baseX = 120 - gCurrentPinballGame->cameraXOffset; + group->baseY = -gCurrentPinballGame->cameraYOffset - 128; var2 = 0; - if (gCurrentPinballGame->unk41C[0]) + if (gCurrentPinballGame->kecleonBerryLargeFlashTimer[0]) { - var2 = gUnknown_086AEA68[(gCurrentPinballGame->unk41C[0] % 24) / 6]; - gCurrentPinballGame->unk41C[0]--; + var2 = gKecleonBerryFlashAnimIndices[(gCurrentPinballGame->kecleonBerryLargeFlashTimer[0] % 24) / 6]; + gCurrentPinballGame->kecleonBerryLargeFlashTimer[0]--; } for (j = 0; j < 3; j++) @@ -1216,14 +1216,14 @@ void sub_37850(void) for (i = 0; i < 2; i++) { group = &gMain.spriteGroups[26 + i]; - group->baseX = 120 - gCurrentPinballGame->unk58; - group->baseY = -gCurrentPinballGame->unk5A - 128; + group->baseX = 120 - gCurrentPinballGame->cameraXOffset; + group->baseY = -gCurrentPinballGame->cameraYOffset - 128; var2 = 0; - if (gCurrentPinballGame->unk41C[1 + i]) + if (gCurrentPinballGame->kecleonBerryLargeFlashTimer[1 + i]) { - var2 = gUnknown_086AEA68[(gCurrentPinballGame->unk41C[1 + i] % 24) / 6]; - gCurrentPinballGame->unk41C[1 + i]--; + var2 = gKecleonBerryFlashAnimIndices[(gCurrentPinballGame->kecleonBerryLargeFlashTimer[1 + i] % 24) / 6]; + gCurrentPinballGame->kecleonBerryLargeFlashTimer[1 + i]--; } for (j = 0; j < 2; j++) @@ -1236,13 +1236,13 @@ void sub_37850(void) } group = &gMain.spriteGroups[28]; - group->baseX = 120 - gCurrentPinballGame->unk58; - group->baseY = -gCurrentPinballGame->unk5A - 128; + group->baseX = 120 - gCurrentPinballGame->cameraXOffset; + group->baseY = -gCurrentPinballGame->cameraYOffset - 128; var2 = 0; - if (gCurrentPinballGame->unk41C[3]) + if (gCurrentPinballGame->kecleonBerryLargeFlashTimer[3]) { - var2 = gUnknown_086AEA68[(gCurrentPinballGame->unk41C[3] % 24) / 6]; - gCurrentPinballGame->unk41C[3]--; + var2 = gKecleonBerryFlashAnimIndices[(gCurrentPinballGame->kecleonBerryLargeFlashTimer[3] % 24) / 6]; + gCurrentPinballGame->kecleonBerryLargeFlashTimer[3]--; } for (j = 0; j < 2; j++) @@ -1258,25 +1258,25 @@ void sub_37850(void) group->baseY = gCurrentPinballGame->ball->screenPosition.y + 14; oamSimple = &group->oam[0]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; - if (gCurrentPinballGame->ball->unk0) + if (gCurrentPinballGame->ball->ballHidden) gOamBuffer[oamSimple->oamId].y = 200; else gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; group = &gMain.spriteGroups[29]; - if (gCurrentPinballGame->unk410 < 12) - gCurrentPinballGame->unk410++; + if (gCurrentPinballGame->kecleonHitboxX < 12) + gCurrentPinballGame->kecleonHitboxX++; else - gCurrentPinballGame->unk410 = 0; + gCurrentPinballGame->kecleonHitboxX = 0; for (i = 0; i < 4; i++) { - if (gCurrentPinballGame->unk42A[i]) + if (gCurrentPinballGame->kecleonHitSparkTimer[i]) { - var2 = 2 - gCurrentPinballGame->unk42A[i] / 4; - gCurrentPinballGame->unk42A[i]--; - group->baseX = gCurrentPinballGame->unkD0[i].x - gCurrentPinballGame->unk4C + 4; - group->baseY = gCurrentPinballGame->unkD0[i].y - gCurrentPinballGame->unk4E- gCurrentPinballGame->unk5FC - gCurrentPinballGame->unkE6 + 4; + var2 = 2 - gCurrentPinballGame->kecleonHitSparkTimer[i] / 4; + gCurrentPinballGame->kecleonHitSparkTimer[i]--; + group->baseX = gCurrentPinballGame->ballTrailPosition[i].x - gCurrentPinballGame->cameraBaseX + 4; + group->baseY = gCurrentPinballGame->ballTrailPosition[i].y - gCurrentPinballGame->cameraBaseY- gCurrentPinballGame->cameraScrollOffset - gCurrentPinballGame->cameraYAdjust + 4; } else { @@ -1291,19 +1291,19 @@ void sub_37850(void) } group = &gMain.spriteGroups[30]; - if (gCurrentPinballGame->unk412 < 24) - gCurrentPinballGame->unk412++; + if (gCurrentPinballGame->kecleonHitboxY < 24) + gCurrentPinballGame->kecleonHitboxY++; else - gCurrentPinballGame->unk412 = 0; + gCurrentPinballGame->kecleonHitboxY = 0; for (i = 0; i < 3; i++) { - if (gCurrentPinballGame->unk42A[4 + i]) + if (gCurrentPinballGame->kecleonHitSparkTimer[4 + i]) { - var2 = 2 - gCurrentPinballGame->unk42A[4 + i] / 6; - gCurrentPinballGame->unk42A[4 + i]--; - group->baseX = gCurrentPinballGame->unk434[i].x - gCurrentPinballGame->unk58 - 4; - group->baseY = gCurrentPinballGame->unk434[i].y - gCurrentPinballGame->unk5A + 2; + var2 = 2 - gCurrentPinballGame->kecleonHitSparkTimer[4 + i] / 6; + gCurrentPinballGame->kecleonHitSparkTimer[4 + i]--; + group->baseX = gCurrentPinballGame->kecleonBerryHitPosition[i].x - gCurrentPinballGame->cameraXOffset - 4; + group->baseY = gCurrentPinballGame->kecleonBerryHitPosition[i].y - gCurrentPinballGame->cameraYOffset + 2; } else { @@ -1318,52 +1318,52 @@ void sub_37850(void) } } -void sub_38218(void) +void SortKecleonSpritesByY(void) { s16 i, j; - struct Unk_086AEA70 sp0[14]; + struct KecleonSpriteSortEntry sp0[14]; for (i = 0; i < 33; i++) - gUnknown_0202D880[i] = gUnknown_086BB420[i]; + gKecleonSpriteSets[i] = gKecleonDefaultSpriteSets[i]; - sp0[12] = gUnknown_086AEA70[12]; - sp0[12].unk4 = gCurrentPinballGame->ball->positionQ0.y; + sp0[12] = gKecleonSpriteYSortData[12]; + sp0[12].ySortKey = gCurrentPinballGame->ball->positionQ0.y; for (i = 0; i < 12; i++) { - if (gUnknown_086AEA70[i].unk4 < gCurrentPinballGame->ball->positionQ0.y) + if (gKecleonSpriteYSortData[i].ySortKey < gCurrentPinballGame->ball->positionQ0.y) { for (j = 11; j >= i; j--) - sp0[j + 1] = gUnknown_086AEA70[j]; + sp0[j + 1] = gKecleonSpriteYSortData[j]; - sp0[i] = gUnknown_086AEA70[12]; - sp0[i].unk4 = gCurrentPinballGame->ball->positionQ0.y; + sp0[i] = gKecleonSpriteYSortData[12]; + sp0[i].ySortKey = gCurrentPinballGame->ball->positionQ0.y; break; } else { - sp0[i] = gUnknown_086AEA70[i]; + sp0[i] = gKecleonSpriteYSortData[i]; } } - sp0[13] = gUnknown_086AEA70[13]; + sp0[13] = gKecleonSpriteYSortData[13]; for (i = 0; i < 13; i++) { - if (sp0[i].unk4 < gCurrentPinballGame->unk400.y) + if (sp0[i].ySortKey < gCurrentPinballGame->kecleonCollisionPos.y) { for (j = 12; j >= i; j--) sp0[j + 1] = sp0[j]; - sp0[i] = gUnknown_086AEA70[13]; - sp0[i].unk4 = gCurrentPinballGame->unk400.y; + sp0[i] = gKecleonSpriteYSortData[13]; + sp0[i].ySortKey = gCurrentPinballGame->kecleonCollisionPos.y; break; } } for (i = 0; i < 14; i++) { - gUnknown_02031590[sp0[i].unk5 + 10] = i + 10; - gUnknown_0202D880[i + 10] = sp0[i].unk0; + gKecleonSpriteOrderMap[sp0[i].spriteIndex + 10] = i + 10; + gKecleonSpriteSets[i + 10] = sp0[i].spriteSet; } - LoadSpriteSets(gUnknown_0202D880, 33, gMain.spriteGroups); + LoadSpriteSets(gKecleonSpriteSets, 33, gMain.spriteGroups); } diff --git a/src/board_process3_kyogre.c b/src/board_process3_kyogre.c index a4ecfd3..23c541a 100644 --- a/src/board_process3_kyogre.c +++ b/src/board_process3_kyogre.c @@ -4,45 +4,45 @@ #include "constants/bg_music.h" extern const u8 gKyogreBonusClear_Gfx[]; -extern const u8 gUnknown_081B0DE4[][0x20]; -extern const u16 gUnknown_08333004[]; -extern const u8 gUnknown_0833FF58[][0x20]; -extern const u8 gUnknown_083529D8[][0x20]; -extern const u8 gUnknown_083C13AC[][0xC0]; -extern const u8 gUnknown_083C1A6C[][0x3C0]; -extern const u8 gUnknown_0849664C[][0x580]; -extern const u8 gUnknown_0849B8CC[][0x4C0]; -extern const u8 gUnknown_084FF90C[][0x200]; +extern const u8 gKyogreWaterAnimPaletteFrames[][0x20]; +extern const u16 gKyogreWaterBackgroundTilemap[]; +extern const u8 gKyogreIntroShorePalette[][0x20]; +extern const u8 gKyogreIntroIcePalette[][0x20]; +extern const u8 gKyogreSplashSpriteFrames[][0xC0]; +extern const u8 gKyogreWhirlpoolSpriteFrames[][0x3C0]; +extern const u8 gKyogreBodySprites_First15[][0x580]; +extern const u8 gKyogreBodySprites_After15[][0x4C0]; +extern const u8 gKyogreWhirlpoolMinionSprites[][0x200]; extern struct SongHeader se_unk_10a; extern struct SongHeader se_unk_10b; extern struct SongHeader se_unk_10c; extern struct SongHeader se_unk_10d; extern struct SongHeader se_unk_10e; extern struct SongHeader se_unk_10f; -extern const u8 *gUnknown_086AEAE0[]; -extern const u16 gUnknown_086AEAF8[][3]; -extern const s16 gUnknown_086AEDA4[]; -extern const s16 gUnknown_086AEDCC[]; -extern const struct Vector16 gUnknown_086AEDE8[]; -extern const s16 gUnknown_086AEE20[]; -extern const s16 gUnknown_086AEE5E[][3]; -extern const s16 gUnknown_086AEED6[]; -extern const s16 gUnknown_086AEEDE[]; -extern const s16 gUnknown_086AEEE6[]; -extern const u16 gUnknown_086AEEFE[]; -extern const s16 gUnknown_086AEF04[]; -extern const u16 gUnknown_086B91AC[28][4][3]; -extern const u16 gUnknown_086B92FC[66][10][3]; +extern const u8 *gKyogreOceanPaletteProgression[]; +extern const u16 gKyogreAnimFramesetTable[][3]; +extern const s16 gKyogreRisingPaletteCycleIndices[]; +extern const s16 gKyogreSplashAnimIndices[]; +extern const struct Vector16 gKyogreWhirlpoolTargetPositions[]; +extern const s16 gShockwaveSplashDistanceThresholds[]; +extern const s16 gKyogreWhirlpoolTrapAnimFrameset[][3]; +extern const s16 gWaterTilePaletteCycle[]; +extern const s16 gKyogreWaterPaletteSegmentCycle[]; +extern const s16 gKyogreBgTileVariantCycle[]; +extern const u16 gKyogreBgSpriteBaseTileNums[]; +extern const s16 gKyogreIntroPaletteCycleIndices[]; +extern const u16 gKyogreWhirlpoolTrapOamData[28][4][3]; +extern const u16 gKyogreMainBodyOamData[66][10][3]; void KyogreBoardProcess_3A_383E4(void) { s16 i; - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk17 = 0; - gCurrentPinballGame->unk13 = 0; - gCurrentPinballGame->unk294 = 0; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardSubState = 0; + gCurrentPinballGame->boardState = 0; + gCurrentPinballGame->boardModeType = 0; gCurrentPinballGame->eventTimer = gCurrentPinballGame->timerBonus + 10800; gCurrentPinballGame->timerBonus = 0; if (gCurrentPinballGame->numCompletedBonusStages % 5 == 3) @@ -50,189 +50,189 @@ void KyogreBoardProcess_3A_383E4(void) else gCurrentPinballGame->legendaryHitsRequired = 15; - gCurrentPinballGame->unk390 = 0; - gCurrentPinballGame->unk389 = 0; - gCurrentPinballGame->unk383 = 0; - gCurrentPinballGame->unk382 = 0; - gCurrentPinballGame->unk388 = 3; - gCurrentPinballGame->unk392 = 0; - gCurrentPinballGame->ball->unk0 = 1; + gCurrentPinballGame->bossRoarTimer = 0; + gCurrentPinballGame->legendaryFlashState = 0; + gCurrentPinballGame->ballGrabbed = 0; + gCurrentPinballGame->bossPhaseCounter = 0; + gCurrentPinballGame->ballRespawnState = 3; + gCurrentPinballGame->ballRespawnTimer = 0; + gCurrentPinballGame->ball->ballHidden = 1; gCurrentPinballGame->returnToMainBoardFlag = 0; - gCurrentPinballGame->unk394 = 0; - gCurrentPinballGame->unk38E = 0; + gCurrentPinballGame->bannerSlideYOffset = 0; + gCurrentPinballGame->bossAttackTimer = 0; gCurrentPinballGame->bonusModeHitCount = 0; gCurrentPinballGame->boardEntityCollisionMode = 0; - gCurrentPinballGame->unk6C4 = 3; - gCurrentPinballGame->unk3DF = 14; - gCurrentPinballGame->unk3DC = 0; - gCurrentPinballGame->unk3E8 = 0; - gCurrentPinballGame->unk3EA = 0; - gCurrentPinballGame->unk3DE = 0; - gCurrentPinballGame->unk3E0 = 0; - gCurrentPinballGame->unk3E2 = 0; - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk440 = 0; - gCurrentPinballGame->unk445 = 0; - gCurrentPinballGame->unk446 = 0; - gCurrentPinballGame->unk447 = 0; - gCurrentPinballGame->unk448 = 0; - gCurrentPinballGame->unk449 = 0; - gCurrentPinballGame->unk44A = 0; - gCurrentPinballGame->unk44E = 0; - gCurrentPinballGame->unk452 = 0; - gCurrentPinballGame->unk454 = 0; - gCurrentPinballGame->unk456 = 0; - gCurrentPinballGame->unk450 = 0; + gCurrentPinballGame->portraitDisplayState = 3; + gCurrentPinballGame->bossVulnerable = 14; + gCurrentPinballGame->bossEntityState = 0; + gCurrentPinballGame->bossPositionX = 0; + gCurrentPinballGame->bossPositionY = 0; + gCurrentPinballGame->kecleonFramesetBase = 0; + gCurrentPinballGame->dusclopsWalkFootIndex = 0; + gCurrentPinballGame->bossFramesetIndex = 0; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->shockwaveAlreadyHit = 0; + gCurrentPinballGame->whirlpoolTrapPhase = 0; + gCurrentPinballGame->whirlpoolTrapAnimEndFrame = 0; + gCurrentPinballGame->whirlpoolTrapNextPhase = 0; + gCurrentPinballGame->whirlpoolTrapAnimFrame = 0; + gCurrentPinballGame->whirlpoolTrapAnimLoopStart = 0; + gCurrentPinballGame->whirlpoolTrapLoopCount = 0; + gCurrentPinballGame->whirlpoolTrapPauseTimer = 0; + gCurrentPinballGame->bossHitFlashTimer = 0; + gCurrentPinballGame->whirlpoolTrapFrameTimer = 0; + gCurrentPinballGame->shockwaveAnimTimer = 0; + gCurrentPinballGame->kyogreWaveTimer = 0; for (i = 0; i < 2; i++) { - gCurrentPinballGame->unk441[i] = 0; - gCurrentPinballGame->unk443[i] = 0; - gCurrentPinballGame->unk458[i] = 0; - gCurrentPinballGame->unk45C[i].x = 0; - gCurrentPinballGame->unk45C[i].y = 0; - gCurrentPinballGame->unk464[i].x = 0; - gCurrentPinballGame->unk464[i].y = 0; + gCurrentPinballGame->orbEntityState[i] = 0; + gCurrentPinballGame->orbTargetWaypointIndex[i] = 0; + gCurrentPinballGame->orbAnimTimer[i] = 0; + gCurrentPinballGame->orbScreenPosition[i].x = 0; + gCurrentPinballGame->orbScreenPosition[i].y = 0; + gCurrentPinballGame->orbOrbitCenter[i].x = 0; + gCurrentPinballGame->orbOrbitCenter[i].y = 0; } for (i = 0; i < 4; i ++) { - gCurrentPinballGame->unk46C[i].x = 0; - gCurrentPinballGame->unk46C[i].y = 0; + gCurrentPinballGame->shockwaveQuadrantOffset[i].x = 0; + gCurrentPinballGame->shockwaveQuadrantOffset[i].y = 0; } - gCurrentPinballGame->unk1A = 1; - sub_38A20(); - sub_395D8(); - sub_39A40(); - sub_3AE14(); + gCurrentPinballGame->flippersDisabled = 1; + UpdateKyogreEntityLogic(); + RenderKyogreSprites(); + UpdateKyogreFieldEntities(); + AnimateKyogreBackground(); m4aSongNumStart(MUS_BONUS_FIELD_KYOGRE); - DmaCopy16(3, gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], (void *)0x05000220, 0x20); - DmaCopy16(3, &gUnknown_086AEAE0[0][0], (void *)0x05000000, 0x100); - DmaCopy16(3, gUnknown_081B36A4, (void *)0x05000320, 0x20); + DmaCopy16(3, gBallPalettes[gCurrentPinballGame->ballUpgradeType], (void *)0x05000220, 0x20); + DmaCopy16(3, &gKyogreOceanPaletteProgression[0][0], (void *)0x05000000, 0x100); + DmaCopy16(3, gBonusStageObjPal, (void *)0x05000320, 0x20); } void KyogreBoardProcess_3B_3869C(void) { - switch (gCurrentPinballGame->unk13) + switch (gCurrentPinballGame->boardState) { case 0: - gCurrentPinballGame->unk5F7 = 1; - if (gCurrentPinballGame->unk18 < 500) + gCurrentPinballGame->ballUpgradeTimerFrozen = 1; + if (gCurrentPinballGame->stageTimer < 500) { - gCurrentPinballGame->unkE6 = -64; - gCurrentPinballGame->unk18++; + gCurrentPinballGame->cameraYAdjust = -64; + gCurrentPinballGame->stageTimer++; } - else if (gCurrentPinballGame->unk18 < 820) + else if (gCurrentPinballGame->stageTimer < 820) { - gCurrentPinballGame->unkE6 = (gCurrentPinballGame->unk18 - 500) / 5 - 64; - gCurrentPinballGame->unk382 = (gCurrentPinballGame->unk18 - 500) / 24; - if (gCurrentPinballGame->unk382 > 5) - gCurrentPinballGame->unk382 = 5; + gCurrentPinballGame->cameraYAdjust = (gCurrentPinballGame->stageTimer - 500) / 5 - 64; + gCurrentPinballGame->bossPhaseCounter = (gCurrentPinballGame->stageTimer - 500) / 24; + if (gCurrentPinballGame->bossPhaseCounter > 5) + gCurrentPinballGame->bossPhaseCounter = 5; - gCurrentPinballGame->unk18++; - DmaCopy16(3, &gUnknown_086AEAE0[gCurrentPinballGame->unk382][0], (void *)0x05000000, 0x60); - DmaCopy16(3, &gUnknown_086AEAE0[gCurrentPinballGame->unk382][0x80], (void *)0x05000080, 0x80); - if (gCurrentPinballGame->unkE6 >= -32) - gCurrentPinballGame->unk1A = 0; + gCurrentPinballGame->stageTimer++; + DmaCopy16(3, &gKyogreOceanPaletteProgression[gCurrentPinballGame->bossPhaseCounter][0], (void *)0x05000000, 0x60); + DmaCopy16(3, &gKyogreOceanPaletteProgression[gCurrentPinballGame->bossPhaseCounter][0x80], (void *)0x05000080, 0x80); + if (gCurrentPinballGame->cameraYAdjust >= -32) + gCurrentPinballGame->flippersDisabled = 0; } else { - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unk13 = 1; - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->boardState = 1; + gCurrentPinballGame->stageTimer = 0; } break; case 2: - if (gCurrentPinballGame->unk18 < 120) + if (gCurrentPinballGame->stageTimer < 120) { - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unk13 = 3; - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->boardState = 3; + gCurrentPinballGame->stageTimer = 0; gMain.spriteGroups[6].available = 1; gMain.spriteGroups[5].available = 1; DmaCopy16(3, gKyogreBonusClear_Gfx, (void *)0x06015800, 0x2000); - gCurrentPinballGame->unk394 = 136; + gCurrentPinballGame->bannerSlideYOffset = 136; gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER; - gCurrentPinballGame->unk5FA = 1; + gCurrentPinballGame->boardEntityActive = 1; } break; case 3: - ProceessBonusBannerAndScoring(); + ProcessBonusBannerAndScoring(); if (gCurrentPinballGame->scoreCounterAnimationEnabled) - gCurrentPinballGame->unk18 = 181; + gCurrentPinballGame->stageTimer = 181; - if (gCurrentPinballGame->unk18 == 180) + if (gCurrentPinballGame->stageTimer == 180) { gCurrentPinballGame->scoreCounterAnimationEnabled = TRUE; gCurrentPinballGame->scoreAddStepSize = 400000; gCurrentPinballGame->scoreAddedInFrame = 50000000; } - if (gCurrentPinballGame->unk18 < 240) + if (gCurrentPinballGame->stageTimer < 240) { - if (gCurrentPinballGame->unk18 == 20) + if (gCurrentPinballGame->stageTimer == 20) { m4aMPlayAllStop(); m4aSongNumStart(MUS_SUCCESS3); } - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk13 = 6; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardState = 6; gCurrentPinballGame->numCompletedBonusStages++; } - gCurrentPinballGame->unk5FA = 1; + gCurrentPinballGame->boardEntityActive = 1; break; case 4: - gCurrentPinballGame->unk13 = 5; - gCurrentPinballGame->unk18 = 140; + gCurrentPinballGame->boardState = 5; + gCurrentPinballGame->stageTimer = 140; gMain.spriteGroups[6].available = 1; gMain.spriteGroups[5].available = 1; DmaCopy16(3, gKyogreBonusClear_Gfx, (void *)0x06015800, 0x2000); - gCurrentPinballGame->unk394 = 136; + gCurrentPinballGame->bannerSlideYOffset = 136; gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER; break; case 5: - ProceessBonusBannerAndScoring(); + ProcessBonusBannerAndScoring(); if (gCurrentPinballGame->scoreCounterAnimationEnabled) - gCurrentPinballGame->unk18 = 181; + gCurrentPinballGame->stageTimer = 181; - if (gCurrentPinballGame->unk18 == 180) + if (gCurrentPinballGame->stageTimer == 180) { gCurrentPinballGame->scoreCounterAnimationEnabled = TRUE; gCurrentPinballGame->scoreAddStepSize = 400000; gCurrentPinballGame->scoreAddedInFrame = 50000000; } - if (gCurrentPinballGame->unk18 < 240) + if (gCurrentPinballGame->stageTimer < 240) { - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk13 = 6; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardState = 6; gCurrentPinballGame->numCompletedBonusStages++; } break; case 6: - ProceessBonusBannerAndScoring(); + ProcessBonusBannerAndScoring(); gCurrentPinballGame->returnToMainBoardFlag = 1; - gCurrentPinballGame->unk5FA = 1; + gCurrentPinballGame->boardEntityActive = 1; } - sub_39A40(); - sub_38A20(); - sub_395D8(); - sub_3AE14(); - if (gCurrentPinballGame->unk294 && gCurrentPinballGame->eventTimer < 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE) + UpdateKyogreFieldEntities(); + UpdateKyogreEntityLogic(); + RenderKyogreSprites(); + AnimateKyogreBackground(); + if (gCurrentPinballGame->boardModeType && gCurrentPinballGame->eventTimer < 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE) { m4aMPlayAllStop(); m4aSongNumStart(MUS_END_OF_BALL3); @@ -241,25 +241,25 @@ void KyogreBoardProcess_3B_3869C(void) if (gCurrentPinballGame->returnToMainBoardFlag) { - gCurrentPinballGame->unk5FA = 1; + gCurrentPinballGame->boardEntityActive = 1; FadeToMainBoard(); } BonusStage_HandleModeChangeFlags(); } -void sub_38A20(void) +void UpdateKyogreEntityLogic(void) { s16 i; s16 index; - if (gCurrentPinballGame->unk452) + if (gCurrentPinballGame->bossHitFlashTimer) { - gCurrentPinballGame->unk452--; - if (gCurrentPinballGame->unk3DC != 8) + gCurrentPinballGame->bossHitFlashTimer--; + if (gCurrentPinballGame->bossEntityState != 8) { - gCurrentPinballGame->unk389 = 1; - if (gCurrentPinballGame->unk452 == 4) + gCurrentPinballGame->legendaryFlashState = 1; + if (gCurrentPinballGame->bossHitFlashTimer == 4) { MPlayStart(&gMPlayInfo_SE1, &se_unk_10a); PlayRumble(7); @@ -267,77 +267,77 @@ void sub_38A20(void) gCurrentPinballGame->bonusModeHitCount++; if (gCurrentPinballGame->bonusModeHitCount >= gCurrentPinballGame->legendaryHitsRequired && gCurrentPinballGame->boardEntityCollisionMode == 1) - gCurrentPinballGame->unk3DC = 7; + gCurrentPinballGame->bossEntityState = 7; } } - if (gCurrentPinballGame->unk452 == 0) - gCurrentPinballGame->unk389 = 0; + if (gCurrentPinballGame->bossHitFlashTimer == 0) + gCurrentPinballGame->legendaryFlashState = 0; } - switch (gCurrentPinballGame->unk3DC) + switch (gCurrentPinballGame->bossEntityState) { case 0: - gCurrentPinballGame->unk3DC = 1; - gCurrentPinballGame->unk3E2 = 12; - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E8 = 0; - gCurrentPinballGame->unk3EA = 0; - gCurrentPinballGame->unk450 = 0; + gCurrentPinballGame->bossEntityState = 1; + gCurrentPinballGame->bossFramesetIndex = 12; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossPositionX = 0; + gCurrentPinballGame->bossPositionY = 0; + gCurrentPinballGame->kyogreWaveTimer = 0; break; case 1: - index = gUnknown_086AEDA4[(gCurrentPinballGame->unk450 % 280) / 14]; - DmaCopy16(3, gUnknown_081B0DE4[index], (void *)0x050003E0, 0x20); - gCurrentPinballGame->unk450++; - if (gUnknown_086AEAF8[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + index = gKyogreRisingPaletteCycleIndices[(gCurrentPinballGame->kyogreWaveTimer % 280) / 14]; + DmaCopy16(3, gKyogreWaterAnimPaletteFrames[index], (void *)0x050003E0, 0x20); + gCurrentPinballGame->kyogreWaveTimer++; + if (gKyogreAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 34) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 34) { - gCurrentPinballGame->unk3E2 = 0; - gCurrentPinballGame->unk3DC = 4; - gCurrentPinballGame->unk3DD = 6; - gCurrentPinballGame->unk3E1 = 0; - gCurrentPinballGame->unk390 = 60; - DmaCopy16(3, &gUnknown_081B0DE4[5], (void *)0x050003E0, 0x20); + gCurrentPinballGame->bossFramesetIndex = 0; + gCurrentPinballGame->bossEntityState = 4; + gCurrentPinballGame->bossAttackPhase = 6; + gCurrentPinballGame->bossMovementPhase = 0; + gCurrentPinballGame->bossRoarTimer = 60; + DmaCopy16(3, &gKyogreWaterAnimPaletteFrames[5], (void *)0x050003E0, 0x20); } - if (gCurrentPinballGame->unk3E2 == 32) - gCurrentPinballGame->unk294 = 1; + if (gCurrentPinballGame->bossFramesetIndex == 32) + gCurrentPinballGame->boardModeType = 1; - if (gCurrentPinballGame->unk3E2 == 33) + if (gCurrentPinballGame->bossFramesetIndex == 33) { MPlayStart(&gMPlayInfo_SE1, &se_unk_10b); gCurrentPinballGame->boardEntityCollisionMode = 1; } } - if (gCurrentPinballGame->unk392 > 2) - gCurrentPinballGame->unk392--; + if (gCurrentPinballGame->ballRespawnTimer > 2) + gCurrentPinballGame->ballRespawnTimer--; break; case 2: - if (gUnknown_086AEAF8[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gKyogreAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 12) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 12) { - gCurrentPinballGame->unk3E2 = 0; - gCurrentPinballGame->unk3DC = 4; - gCurrentPinballGame->unk3DD = 6; - gCurrentPinballGame->unk3E1 = 2; + gCurrentPinballGame->bossFramesetIndex = 0; + gCurrentPinballGame->bossEntityState = 4; + gCurrentPinballGame->bossAttackPhase = 6; + gCurrentPinballGame->bossMovementPhase = 2; } - if (gCurrentPinballGame->unk3E2 == 11) + if (gCurrentPinballGame->bossFramesetIndex == 11) { gCurrentPinballGame->boardEntityCollisionMode = 1; MPlayStart(&gMPlayInfo_SE1, &se_unk_10b); @@ -345,22 +345,22 @@ void sub_38A20(void) } break; case 3: - if (gUnknown_086AEAF8[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gKyogreAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 8) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 8) { - gCurrentPinballGame->unk3E2 = 8; - gCurrentPinballGame->unk3DC = 11; - gCurrentPinballGame->unk3E1 = 0; + gCurrentPinballGame->bossFramesetIndex = 8; + gCurrentPinballGame->bossEntityState = 11; + gCurrentPinballGame->bossMovementPhase = 0; } - if (gCurrentPinballGame->unk3E2 == 5) + if (gCurrentPinballGame->bossFramesetIndex == 5) { gCurrentPinballGame->boardEntityCollisionMode = 0; MPlayStart(&gMPlayInfo_SE1, &se_unk_10c); @@ -368,174 +368,174 @@ void sub_38A20(void) } break; case 4: - if (gUnknown_086AEAF8[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gKyogreAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 4) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 4) { - if (gCurrentPinballGame->unk3E1 < 3) + if (gCurrentPinballGame->bossMovementPhase < 3) { - gCurrentPinballGame->unk3E2 = 0; - gCurrentPinballGame->unk3E1++; + gCurrentPinballGame->bossFramesetIndex = 0; + gCurrentPinballGame->bossMovementPhase++; } else { - if (gCurrentPinballGame->unk3DD == 3) + if (gCurrentPinballGame->bossAttackPhase == 3) { if (gCurrentPinballGame->bonusModeHitCount >= gCurrentPinballGame->legendaryHitsRequired) { - gCurrentPinballGame->unk3E2 = 0; - gCurrentPinballGame->unk3DC = 4; - gCurrentPinballGame->unk3E1 = 0; - gCurrentPinballGame->unk3DD = 6; + gCurrentPinballGame->bossFramesetIndex = 0; + gCurrentPinballGame->bossEntityState = 4; + gCurrentPinballGame->bossMovementPhase = 0; + gCurrentPinballGame->bossAttackPhase = 6; } else { - gCurrentPinballGame->unk3E2 = 4; - gCurrentPinballGame->unk3DC = gCurrentPinballGame->unk3DD; + gCurrentPinballGame->bossFramesetIndex = 4; + gCurrentPinballGame->bossEntityState = gCurrentPinballGame->bossAttackPhase; } } else { - gCurrentPinballGame->unk3E2 = 34; - gCurrentPinballGame->unk3DC = gCurrentPinballGame->unk3DD; - gCurrentPinballGame->unk440 = 0; - gCurrentPinballGame->unk3E1 = 0; + gCurrentPinballGame->bossFramesetIndex = 34; + gCurrentPinballGame->bossEntityState = gCurrentPinballGame->bossAttackPhase; + gCurrentPinballGame->shockwaveAlreadyHit = 0; + gCurrentPinballGame->bossMovementPhase = 0; } } } } break; case 5: - if (gUnknown_086AEAF8[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gKyogreAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 67) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 67) { - if (gCurrentPinballGame->unk3E1 <= 0) + if (gCurrentPinballGame->bossMovementPhase <= 0) { - gCurrentPinballGame->unk3E2 = 45; - gCurrentPinballGame->unk3E1++; + gCurrentPinballGame->bossFramesetIndex = 45; + gCurrentPinballGame->bossMovementPhase++; } else { - gCurrentPinballGame->unk3E2 = 0; - gCurrentPinballGame->unk3DC = 4; - gCurrentPinballGame->unk3E1 = 1; - gCurrentPinballGame->unk3DD = 3; + gCurrentPinballGame->bossFramesetIndex = 0; + gCurrentPinballGame->bossEntityState = 4; + gCurrentPinballGame->bossMovementPhase = 1; + gCurrentPinballGame->bossAttackPhase = 3; } } - if (gCurrentPinballGame->unk3E2 == 52) + if (gCurrentPinballGame->bossFramesetIndex == 52) { - gCurrentPinballGame->unk458[gCurrentPinballGame->unk3E1] = 0; - gCurrentPinballGame->unk441[gCurrentPinballGame->unk3E1] = 1; + gCurrentPinballGame->orbAnimTimer[gCurrentPinballGame->bossMovementPhase] = 0; + gCurrentPinballGame->orbEntityState[gCurrentPinballGame->bossMovementPhase] = 1; } - if (gCurrentPinballGame->unk3E2 == 50 || gCurrentPinballGame->unk3E2 == 56 || gCurrentPinballGame->unk3E2 == 62) + if (gCurrentPinballGame->bossFramesetIndex == 50 || gCurrentPinballGame->bossFramesetIndex == 56 || gCurrentPinballGame->bossFramesetIndex == 62) MPlayStart(&gMPlayInfo_SE1, &se_unk_10d); } break; case 6: - if (gUnknown_086AEAF8[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gKyogreAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 40) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 40) { - if (gCurrentPinballGame->unk3E1 <= 0) + if (gCurrentPinballGame->bossMovementPhase <= 0) { - gCurrentPinballGame->unk3E2 = 34; - gCurrentPinballGame->unk3E1++; + gCurrentPinballGame->bossFramesetIndex = 34; + gCurrentPinballGame->bossMovementPhase++; } } - if (gCurrentPinballGame->unk3E2 == 45) + if (gCurrentPinballGame->bossFramesetIndex == 45) { - gCurrentPinballGame->unk3E2 = 45; - gCurrentPinballGame->unk3DC = 5; - gCurrentPinballGame->unk3E1 = 0; + gCurrentPinballGame->bossFramesetIndex = 45; + gCurrentPinballGame->bossEntityState = 5; + gCurrentPinballGame->bossMovementPhase = 0; } - if (gCurrentPinballGame->unk440 == 0 && gCurrentPinballGame->unk3E2 == 42) + if (gCurrentPinballGame->shockwaveAlreadyHit == 0 && gCurrentPinballGame->bossFramesetIndex == 42) { gMain.spriteGroups[24].available = 1; - gCurrentPinballGame->unk456 = 0; + gCurrentPinballGame->shockwaveAnimTimer = 0; MPlayStart(&gMPlayInfo_SE1, &se_unk_10e); } } - if (gCurrentPinballGame->unk452 > 6) - gCurrentPinballGame->unk440 = 1; + if (gCurrentPinballGame->bossHitFlashTimer > 6) + gCurrentPinballGame->shockwaveAlreadyHit = 1; break; case 7: - gCurrentPinballGame->unk294 = 3; + gCurrentPinballGame->boardModeType = 3; if (gCurrentPinballGame->numCompletedBonusStages % 5 == 3) { // catch kyogre - gCurrentPinballGame->unk3DC = 10; - gCurrentPinballGame->unk3E2 = 0; + gCurrentPinballGame->bossEntityState = 10; + gCurrentPinballGame->bossFramesetIndex = 0; gMain.spriteGroups[10].available = 1; gMain.spriteGroups[9].available = 1; gCurrentPinballGame->currentSpecies = SPECIES_KYOGRE; - gCurrentPinballGame->unk38E = 0; - gCurrentPinballGame->unk5A8 = 0; - gCurrentPinballGame->unk5A6 = 0; - gCurrentPinballGame->unk5A4 = 2; + gCurrentPinballGame->bossAttackTimer = 0; + gCurrentPinballGame->captureSequenceTimer = 0; + gCurrentPinballGame->captureSequenceFrame = 0; + gCurrentPinballGame->captureState = 2; } else { // normal completion - gCurrentPinballGame->unk3DC = 9; - gCurrentPinballGame->unk3E2 = 79; + gCurrentPinballGame->bossEntityState = 9; + gCurrentPinballGame->bossFramesetIndex = 79; gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER; - gCurrentPinballGame->unk388 = 2; - gCurrentPinballGame->unk392 = 0; + gCurrentPinballGame->ballRespawnState = 2; + gCurrentPinballGame->ballRespawnTimer = 0; } if (gMain.spriteGroups[16].available) { - gCurrentPinballGame->unk445 = 7; - gCurrentPinballGame->unk44E = 1; + gCurrentPinballGame->whirlpoolTrapPhase = 7; + gCurrentPinballGame->whirlpoolTrapPauseTimer = 1; } - gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->bossFrameTimer = 0; break; case 8: break; case 9: - if (gUnknown_086AEAF8[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gKyogreAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 108) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 108) { - gCurrentPinballGame->unk3E2 = 107; - gCurrentPinballGame->unk3DC = 13; - gCurrentPinballGame->unk13 = 2; - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->bossFramesetIndex = 107; + gCurrentPinballGame->bossEntityState = 13; + gCurrentPinballGame->boardState = 2; + gCurrentPinballGame->stageTimer = 0; } - if (gCurrentPinballGame->unk3E2 == 97) + if (gCurrentPinballGame->bossFramesetIndex == 97) { gCurrentPinballGame->boardEntityCollisionMode = 0; MPlayStart(&gMPlayInfo_SE1, &se_unk_10f); @@ -543,106 +543,106 @@ void sub_38A20(void) } break; case 10: - if (gUnknown_086AEAF8[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gKyogreAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 4) - gCurrentPinballGame->unk3E2 = 0; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 4) + gCurrentPinballGame->bossFramesetIndex = 0; } - if (gCurrentPinballGame->unk38E > -500) + if (gCurrentPinballGame->bossAttackTimer > -500) { - gCurrentPinballGame->unk38E += (-500 - gCurrentPinballGame->unk38E) / 30; - gCurrentPinballGame->unkE6 = gCurrentPinballGame->unk38E / 10; - if (gCurrentPinballGame->unkE6 < -50) - gCurrentPinballGame->unkE6 = -50; + gCurrentPinballGame->bossAttackTimer += (-500 - gCurrentPinballGame->bossAttackTimer) / 30; + gCurrentPinballGame->cameraYAdjust = gCurrentPinballGame->bossAttackTimer / 10; + if (gCurrentPinballGame->cameraYAdjust < -50) + gCurrentPinballGame->cameraYAdjust = -50; } - if (gCurrentPinballGame->unk5A8 == 21) - gCurrentPinballGame->unk3E2 = 114; + if (gCurrentPinballGame->captureSequenceTimer == 21) + gCurrentPinballGame->bossFramesetIndex = 114; - if (gCurrentPinballGame->unk5A8 == 22) - gCurrentPinballGame->unk3E2 = 115; + if (gCurrentPinballGame->captureSequenceTimer == 22) + gCurrentPinballGame->bossFramesetIndex = 115; break; case 11: - if (gCurrentPinballGame->unk3E4 < 300) + if (gCurrentPinballGame->bossFrameTimer < 300) { - gCurrentPinballGame->unk3E4++; - if (gCurrentPinballGame->unk3E4 == 218) + gCurrentPinballGame->bossFrameTimer++; + if (gCurrentPinballGame->bossFrameTimer == 218) { - gCurrentPinballGame->unk456 = 0; - gCurrentPinballGame->unk3E8 = 500 - (Random() % 100) * 10; - gCurrentPinballGame->unk3EA = 200 + (Random() % 100) * 4; + gCurrentPinballGame->shockwaveAnimTimer = 0; + gCurrentPinballGame->bossPositionX = 500 - (Random() % 100) * 10; + gCurrentPinballGame->bossPositionY = 200 + (Random() % 100) * 4; } - if (gCurrentPinballGame->unk3E4 == 260) + if (gCurrentPinballGame->bossFrameTimer == 260) { for (i = 0; i < 2; i++) { - if (gCurrentPinballGame->unk441[i] == 3) + if (gCurrentPinballGame->orbEntityState[i] == 3) { - gCurrentPinballGame->unk458[i] = 0; - gCurrentPinballGame->unk441[i] = 4; - gCurrentPinballGame->unk5AC /= 2; + gCurrentPinballGame->orbAnimTimer[i] = 0; + gCurrentPinballGame->orbEntityState[i] = 4; + gCurrentPinballGame->trapSpinRadius /= 2; } - if (gCurrentPinballGame->unk441[i] == 2) + if (gCurrentPinballGame->orbEntityState[i] == 2) { - gCurrentPinballGame->unk458[i] = 0; - gCurrentPinballGame->unk441[i] = 5; + gCurrentPinballGame->orbAnimTimer[i] = 0; + gCurrentPinballGame->orbEntityState[i] = 5; } } } } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2 = 67; - gCurrentPinballGame->unk3DC = 12; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex = 67; + gCurrentPinballGame->bossEntityState = 12; gCurrentPinballGame->boardEntityCollisionMode = 2; MPlayStart(&gMPlayInfo_SE1, &se_unk_10b); PlayRumble(8); } break; case 12: - if (gUnknown_086AEAF8[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gKyogreAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 79) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 79) { - if (gCurrentPinballGame->unk3E1 <= 0) + if (gCurrentPinballGame->bossMovementPhase <= 0) { - gCurrentPinballGame->unk3E2 = 78; - gCurrentPinballGame->unk3DC = 11; - gCurrentPinballGame->unk3E1++; + gCurrentPinballGame->bossFramesetIndex = 78; + gCurrentPinballGame->bossEntityState = 11; + gCurrentPinballGame->bossMovementPhase++; } else { - gCurrentPinballGame->unk3E1 = 0; - gCurrentPinballGame->unk3E2 = 8; - gCurrentPinballGame->unk3DC = 2; - gCurrentPinballGame->unk3E8 = 0; - gCurrentPinballGame->unk3EA = 0; + gCurrentPinballGame->bossMovementPhase = 0; + gCurrentPinballGame->bossFramesetIndex = 8; + gCurrentPinballGame->bossEntityState = 2; + gCurrentPinballGame->bossPositionX = 0; + gCurrentPinballGame->bossPositionY = 0; } } - if (gCurrentPinballGame->unk3E2 == 70) + if (gCurrentPinballGame->bossFramesetIndex == 70) gCurrentPinballGame->boardEntityCollisionMode = 3; - if (gCurrentPinballGame->unk3E2 == 73) + if (gCurrentPinballGame->bossFramesetIndex == 73) gCurrentPinballGame->boardEntityCollisionMode = 0; - if (gCurrentPinballGame->unk3E2 == 72) + if (gCurrentPinballGame->bossFramesetIndex == 72) { MPlayStart(&gMPlayInfo_SE1, &se_unk_10c); PlayRumble(8); @@ -653,18 +653,18 @@ void sub_38A20(void) break; } - if (gCurrentPinballGame->unk390) + if (gCurrentPinballGame->bossRoarTimer) { - gCurrentPinballGame->unk390--; - if (gCurrentPinballGame->unk390 == 20) - PlayCry_Normal(gSpeciesInfo[SPECIES_KYOGRE].mainSeriesIndexNumber, 0); + gCurrentPinballGame->bossRoarTimer--; + if (gCurrentPinballGame->bossRoarTimer == 20) + PlayCry_Normal(gSpeciesInfo[SPECIES_KYOGRE].speciesIdRS, 0); - if (gCurrentPinballGame->unk390 == 0) + if (gCurrentPinballGame->bossRoarTimer == 0) m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x100); } } -void sub_395D8(void) +void RenderKyogreSprites(void) { s16 i; struct SpriteGroup *group; @@ -678,40 +678,40 @@ void sub_395D8(void) group = &gMain.spriteGroups[21]; if (group->available) { - index = gCurrentPinballGame->unk3DF; - gCurrentPinballGame->unk3DF = gUnknown_086AEAF8[gCurrentPinballGame->unk3E2][2]; - var2 = gUnknown_086AEAF8[gCurrentPinballGame->unk3E2][0]; + index = gCurrentPinballGame->bossVulnerable; + gCurrentPinballGame->bossVulnerable = gKyogreAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][2]; + var2 = gKyogreAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][0]; if (index < 15) { - DmaCopy16(3, gUnknown_0849664C[index], (void *)0x06010FA0, 0x580); + DmaCopy16(3, gKyogreBodySprites_First15[index], (void *)0x06010FA0, 0x580); } else { index -= 15; - DmaCopy16(3, gUnknown_0849B8CC[index], (void *)0x06010FA0, 0x4C0); + DmaCopy16(3, gKyogreBodySprites_After15[index], (void *)0x06010FA0, 0x4C0); } - group->baseX = gCurrentPinballGame->unk3E8 / 10 + 72u - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk3EA / 10 + 66u - gCurrentPinballGame->unk5A; - gCurrentPinballGame->unk288 = gCurrentPinballGame->unk3E8 / 10 + 120; - gCurrentPinballGame->unk28A = gCurrentPinballGame->unk3EA / 10 + 50; + group->baseX = gCurrentPinballGame->bossPositionX / 10 + 72u - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->bossPositionY / 10 + 66u - gCurrentPinballGame->cameraYOffset; + gCurrentPinballGame->catchTargetX = gCurrentPinballGame->bossPositionX / 10 + 120; + gCurrentPinballGame->catchTargetY = gCurrentPinballGame->bossPositionY / 10 + 50; if (gCurrentPinballGame->boardEntityCollisionMode == 2) { - gCurrentPinballGame->unk3F0 = (gCurrentPinballGame->unk3E8 / 10) * 2 + 192; - gCurrentPinballGame->unk3F2 = (gCurrentPinballGame->unk3EA / 10) * 2 + 134; + gCurrentPinballGame->bossCollisionX = (gCurrentPinballGame->bossPositionX / 10) * 2 + 192; + gCurrentPinballGame->bossCollisionY = (gCurrentPinballGame->bossPositionY / 10) * 2 + 134; } else if (gCurrentPinballGame->boardEntityCollisionMode == 3) { - gCurrentPinballGame->unk3F0 = (gCurrentPinballGame->unk3E8 / 10) * 2 + 192; - gCurrentPinballGame->unk3F2 = (gCurrentPinballGame->unk3EA / 10) * 2 + 150; + gCurrentPinballGame->bossCollisionX = (gCurrentPinballGame->bossPositionX / 10) * 2 + 192; + gCurrentPinballGame->bossCollisionY = (gCurrentPinballGame->bossPositionY / 10) * 2 + 150; } else { - gCurrentPinballGame->unk3F0 = (gCurrentPinballGame->unk3E8 / 10) * 2 + 180; - gCurrentPinballGame->unk3F2 = (gCurrentPinballGame->unk3EA / 10) * 2 + 116; + gCurrentPinballGame->bossCollisionX = (gCurrentPinballGame->bossPositionX / 10) * 2 + 180; + gCurrentPinballGame->bossCollisionY = (gCurrentPinballGame->bossPositionY / 10) * 2 + 116; } - if (gCurrentPinballGame->unk389 > 9) + if (gCurrentPinballGame->legendaryFlashState > 9) { palette = 11; for (i = 0; i < 10; i++) @@ -724,9 +724,9 @@ void sub_395D8(void) } else { - if (gCurrentPinballGame->unk389 == 1) + if (gCurrentPinballGame->legendaryFlashState == 1) palette = 14; - else if (gCurrentPinballGame->unk389 == 3) + else if (gCurrentPinballGame->legendaryFlashState == 3) palette = 11; else if (var2 == 20) palette = 4; @@ -739,7 +739,7 @@ void sub_395D8(void) { oamSimple = &group->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B92FC[var2][i]; + src = gKyogreMainBodyOamData[var2][i]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -754,13 +754,13 @@ void sub_395D8(void) group = &gMain.spriteGroups[26]; if (group->available) { - group->baseX = gCurrentPinballGame->unk3E8 / 10 + 108 - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk3EA / 10 + 82 - gCurrentPinballGame->unk5A; + group->baseX = gCurrentPinballGame->bossPositionX / 10 + 108 - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->bossPositionY / 10 + 82 - gCurrentPinballGame->cameraYOffset; if (group->baseY >= 200) group->baseY = 200; - index = gUnknown_086AEDCC[(gCurrentPinballGame->unk456 % 84) / 6]; - DmaCopy16(3, gUnknown_083C13AC[index], (void *)0x06012420, 0xC0); + index = gKyogreSplashAnimIndices[(gCurrentPinballGame->shockwaveAnimTimer % 84) / 6]; + DmaCopy16(3, gKyogreSplashSpriteFrames[index], (void *)0x06012420, 0xC0); for (i = 0; i < 2; i++) { oamSimple = &group->oam[i]; @@ -768,24 +768,24 @@ void sub_395D8(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - if (gCurrentPinballGame->unk456 < 83) + if (gCurrentPinballGame->shockwaveAnimTimer < 83) { - gCurrentPinballGame->unk456++; + gCurrentPinballGame->shockwaveAnimTimer++; } else { - gCurrentPinballGame->unk456 = 0; + gCurrentPinballGame->shockwaveAnimTimer = 0; gMain.spriteGroups[26].available = 0; } } else { - if (gCurrentPinballGame->unk3DC == 11 && gCurrentPinballGame->unk3E4 == 218) + if (gCurrentPinballGame->bossEntityState == 11 && gCurrentPinballGame->bossFrameTimer == 218) group->available = 1; } } -void sub_39A40(void) +void UpdateKyogreFieldEntities(void) { s16 i, j; s16 var4; @@ -807,7 +807,7 @@ void sub_39A40(void) group = &gMain.spriteGroups[10]; if (group->available) { - if (gCurrentPinballGame->unk6C4 == 3) + if (gCurrentPinballGame->portraitDisplayState == 3) { group->baseX = 240; group->baseY = 180; @@ -818,8 +818,8 @@ void sub_39A40(void) group->baseY = 55; } - gCurrentPinballGame->unk6E4.x = group->baseX; - gCurrentPinballGame->unk6E4.y = group->baseY; + gCurrentPinballGame->rouletteBasePos.x = group->baseX; + gCurrentPinballGame->rouletteBasePos.y = group->baseY; if (group->baseY >= 200) group->baseY = 200; @@ -827,21 +827,21 @@ void sub_39A40(void) { oamSimple = &group->oam[i]; gOamBuffer[oamSimple->oamId].paletteNum = 13; - gOamBuffer[oamSimple->oamId].priority = gCurrentPinballGame->unk6DB; + gOamBuffer[oamSimple->oamId].priority = gCurrentPinballGame->creatureOamPriority; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } group = &gMain.spriteGroups[9]; - group->baseX = gCurrentPinballGame->unk6E4.x - 8; - group->baseY = gCurrentPinballGame->unk6E4.y - 8; + group->baseX = gCurrentPinballGame->rouletteBasePos.x - 8; + group->baseY = gCurrentPinballGame->rouletteBasePos.y - 8; if (group->baseY >= 200) group->baseY = 200; for (i = 0; i < 6; i++) { oamSimple = &group->oam[i]; - gOamBuffer[oamSimple->oamId].priority = gCurrentPinballGame->unk6DB; + gOamBuffer[oamSimple->oamId].priority = gCurrentPinballGame->creatureOamPriority; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } @@ -850,135 +850,135 @@ void sub_39A40(void) group = &gMain.spriteGroups[16]; if (group->available) { - switch (gCurrentPinballGame->unk445) + switch (gCurrentPinballGame->whirlpoolTrapPhase) { case 0: - gCurrentPinballGame->unk449 = 0; - gCurrentPinballGame->unk446 = 5; - gCurrentPinballGame->unk447 = 1; - gCurrentPinballGame->unk44A = 0; - gCurrentPinballGame->unk44E = 0; - if (gCurrentPinballGame->unk448 == 2) + gCurrentPinballGame->whirlpoolTrapAnimLoopStart = 0; + gCurrentPinballGame->whirlpoolTrapAnimEndFrame = 5; + gCurrentPinballGame->whirlpoolTrapNextPhase = 1; + gCurrentPinballGame->whirlpoolTrapLoopCount = 0; + gCurrentPinballGame->whirlpoolTrapPauseTimer = 0; + if (gCurrentPinballGame->whirlpoolTrapAnimFrame == 2) { int a; // force addition of 8 instead of offsetting the global constant - DmaCopy16(3, &gUnknown_08137E14[a = gCurrentPinballGame->ballUpgradeType + 8], (void *)0x05000220, 0x20); + DmaCopy16(3, &gBallPalettes[a = gCurrentPinballGame->ballUpgradeType + 8], (void *)0x05000220, 0x20); } break; case 1: - gCurrentPinballGame->unk44A = 4; - gCurrentPinballGame->unk44E = 90; - gCurrentPinballGame->unk445 = 2; + gCurrentPinballGame->whirlpoolTrapLoopCount = 4; + gCurrentPinballGame->whirlpoolTrapPauseTimer = 90; + gCurrentPinballGame->whirlpoolTrapPhase = 2; break; case 2: if (gCurrentPinballGame->newButtonActions[0] || gCurrentPinballGame->newButtonActions[1]) { - gCurrentPinballGame->unk44E -= 90; - if (gCurrentPinballGame->unk44E < 0) - gCurrentPinballGame->unk44E = 0; + gCurrentPinballGame->whirlpoolTrapPauseTimer -= 90; + if (gCurrentPinballGame->whirlpoolTrapPauseTimer < 0) + gCurrentPinballGame->whirlpoolTrapPauseTimer = 0; m4aSongNumStart(SE_UNKNOWN_0x111); } - gCurrentPinballGame->unk449 = 5; - gCurrentPinballGame->unk446 = 9; - gCurrentPinballGame->unk447 = 3; + gCurrentPinballGame->whirlpoolTrapAnimLoopStart = 5; + gCurrentPinballGame->whirlpoolTrapAnimEndFrame = 9; + gCurrentPinballGame->whirlpoolTrapNextPhase = 3; break; case 3: - gCurrentPinballGame->unk44A = 4; - gCurrentPinballGame->unk44E = 90; - gCurrentPinballGame->unk445 = 4; + gCurrentPinballGame->whirlpoolTrapLoopCount = 4; + gCurrentPinballGame->whirlpoolTrapPauseTimer = 90; + gCurrentPinballGame->whirlpoolTrapPhase = 4; break; case 4: if (gCurrentPinballGame->newButtonActions[0] || gCurrentPinballGame->newButtonActions[1]) { - gCurrentPinballGame->unk44E -= 90; - if (gCurrentPinballGame->unk44E < 0) - gCurrentPinballGame->unk44E = 0; + gCurrentPinballGame->whirlpoolTrapPauseTimer -= 90; + if (gCurrentPinballGame->whirlpoolTrapPauseTimer < 0) + gCurrentPinballGame->whirlpoolTrapPauseTimer = 0; m4aSongNumStart(SE_UNKNOWN_0x111); } - gCurrentPinballGame->unk449 = 9; - gCurrentPinballGame->unk446 = 13; - gCurrentPinballGame->unk447 = 5; + gCurrentPinballGame->whirlpoolTrapAnimLoopStart = 9; + gCurrentPinballGame->whirlpoolTrapAnimEndFrame = 13; + gCurrentPinballGame->whirlpoolTrapNextPhase = 5; break; case 5: - gCurrentPinballGame->unk44A = 0; - gCurrentPinballGame->unk44E = 90; - gCurrentPinballGame->unk445 = 6; + gCurrentPinballGame->whirlpoolTrapLoopCount = 0; + gCurrentPinballGame->whirlpoolTrapPauseTimer = 90; + gCurrentPinballGame->whirlpoolTrapPhase = 6; break; case 6: if (gCurrentPinballGame->newButtonActions[0] || gCurrentPinballGame->newButtonActions[1]) { - gCurrentPinballGame->unk44E -= 90; - if (gCurrentPinballGame->unk44E < 0) - gCurrentPinballGame->unk44E = 0; + gCurrentPinballGame->whirlpoolTrapPauseTimer -= 90; + if (gCurrentPinballGame->whirlpoolTrapPauseTimer < 0) + gCurrentPinballGame->whirlpoolTrapPauseTimer = 0; m4aSongNumStart(SE_UNKNOWN_0x111); } - gCurrentPinballGame->unk449 = 13; - gCurrentPinballGame->unk446 = 19; - gCurrentPinballGame->unk447 = 7; + gCurrentPinballGame->whirlpoolTrapAnimLoopStart = 13; + gCurrentPinballGame->whirlpoolTrapAnimEndFrame = 19; + gCurrentPinballGame->whirlpoolTrapNextPhase = 7; break; case 7: gMain.spriteGroups[16].available = 0; break; } - if (gCurrentPinballGame->unk44E > 0) + if (gCurrentPinballGame->whirlpoolTrapPauseTimer > 0) { - gCurrentPinballGame->unk44E--; - if (gCurrentPinballGame->unk44E == 0) + gCurrentPinballGame->whirlpoolTrapPauseTimer--; + if (gCurrentPinballGame->whirlpoolTrapPauseTimer == 0) m4aSongNumStart(SE_UNKNOWN_0x111); } else { - if (gUnknown_086AEE5E[gCurrentPinballGame->unk448][1] > gCurrentPinballGame->unk454) + if (gKyogreWhirlpoolTrapAnimFrameset[gCurrentPinballGame->whirlpoolTrapAnimFrame][1] > gCurrentPinballGame->whirlpoolTrapFrameTimer) { - gCurrentPinballGame->unk454++; + gCurrentPinballGame->whirlpoolTrapFrameTimer++; } else { - gCurrentPinballGame->unk454 = 0; - gCurrentPinballGame->unk448++; - if (gCurrentPinballGame->unk448 == gCurrentPinballGame->unk446) + gCurrentPinballGame->whirlpoolTrapFrameTimer = 0; + gCurrentPinballGame->whirlpoolTrapAnimFrame++; + if (gCurrentPinballGame->whirlpoolTrapAnimFrame == gCurrentPinballGame->whirlpoolTrapAnimEndFrame) { - if (gCurrentPinballGame->unk44A > 0) + if (gCurrentPinballGame->whirlpoolTrapLoopCount > 0) { - gCurrentPinballGame->unk448 = gCurrentPinballGame->unk449; - gCurrentPinballGame->unk44A--; + gCurrentPinballGame->whirlpoolTrapAnimFrame = gCurrentPinballGame->whirlpoolTrapAnimLoopStart; + gCurrentPinballGame->whirlpoolTrapLoopCount--; } else { - gCurrentPinballGame->unk448 = gCurrentPinballGame->unk446 - 1; - gCurrentPinballGame->unk445 = gCurrentPinballGame->unk447; + gCurrentPinballGame->whirlpoolTrapAnimFrame = gCurrentPinballGame->whirlpoolTrapAnimEndFrame - 1; + gCurrentPinballGame->whirlpoolTrapPhase = gCurrentPinballGame->whirlpoolTrapNextPhase; } - gCurrentPinballGame->unk44E = 90; + gCurrentPinballGame->whirlpoolTrapPauseTimer = 90; } - if (gCurrentPinballGame->unk448 == 1) + if (gCurrentPinballGame->whirlpoolTrapAnimFrame == 1) m4aSongNumStart(SE_UNKNOWN_0x110); - if (gCurrentPinballGame->unk448 == 15) + if (gCurrentPinballGame->whirlpoolTrapAnimFrame == 15) { - DmaCopy16(3, gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], (void *)0x05000220, 0x20); + DmaCopy16(3, gBallPalettes[gCurrentPinballGame->ballUpgradeType], (void *)0x05000220, 0x20); m4aSongNumStart(SE_UNKNOWN_0x112); } } } - if (gCurrentPinballGame->unk448 < 18) + if (gCurrentPinballGame->whirlpoolTrapAnimFrame < 18) { - gCurrentPinballGame->unk383 = 1; + gCurrentPinballGame->ballGrabbed = 1; gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; - gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->ball->spinSpeed = 0; } else { - gCurrentPinballGame->unk383 = 0; + gCurrentPinballGame->ballGrabbed = 0; } group->baseX = gCurrentPinballGame->ball->screenPosition.x; @@ -986,14 +986,14 @@ void sub_39A40(void) if (group->baseY >= 200) group->baseY = 200; - index = gUnknown_086AEE5E[gCurrentPinballGame->unk448][2]; - DmaCopy16(3, gUnknown_083C1A6C[index], (void *)0x060124E0, 0x3C0); - var0 = gUnknown_086AEE5E[gCurrentPinballGame->unk448][0]; + index = gKyogreWhirlpoolTrapAnimFrameset[gCurrentPinballGame->whirlpoolTrapAnimFrame][2]; + DmaCopy16(3, gKyogreWhirlpoolSpriteFrames[index], (void *)0x060124E0, 0x3C0); + var0 = gKyogreWhirlpoolTrapAnimFrameset[gCurrentPinballGame->whirlpoolTrapAnimFrame][0]; for (i = 0; i < 4; i++) { oamSimple = &group->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B91AC[var0][i]; + src = gKyogreWhirlpoolTrapOamData[var0][i]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -1008,172 +1008,172 @@ void sub_39A40(void) group = &gMain.spriteGroups[22 + i]; if ((gMain.modeChangeFlags & MODE_CHANGE_BONUS_BANNER) == 0) { - switch (gCurrentPinballGame->unk441[i]) { + switch (gCurrentPinballGame->orbEntityState[i]) { case 0: index = 0; - gCurrentPinballGame->unk45C[i].x = 0; - gCurrentPinballGame->unk45C[i].y = 0; + gCurrentPinballGame->orbScreenPosition[i].x = 0; + gCurrentPinballGame->orbScreenPosition[i].y = 0; break; case 1: - index = gCurrentPinballGame->unk458[i] / 9; - if (gCurrentPinballGame->unk458[i] < 98) + index = gCurrentPinballGame->orbAnimTimer[i] / 9; + if (gCurrentPinballGame->orbAnimTimer[i] < 98) { - gCurrentPinballGame->unk458[i]++; + gCurrentPinballGame->orbAnimTimer[i]++; } else { - gCurrentPinballGame->unk458[i] = 0; - gCurrentPinballGame->unk441[i] = 2; - gCurrentPinballGame->unk443[i] = i * 7 + ((Random() + gMain.systemFrameCount) % 7); - gCurrentPinballGame->unk464[i].x = gUnknown_086AEDE8[gCurrentPinballGame->unk443[i]].x; - gCurrentPinballGame->unk464[i].y = gUnknown_086AEDE8[gCurrentPinballGame->unk443[i]].y; + gCurrentPinballGame->orbAnimTimer[i] = 0; + gCurrentPinballGame->orbEntityState[i] = 2; + gCurrentPinballGame->orbTargetWaypointIndex[i] = i * 7 + ((Random() + gMain.systemFrameCount) % 7); + gCurrentPinballGame->orbOrbitCenter[i].x = gKyogreWhirlpoolTargetPositions[gCurrentPinballGame->orbTargetWaypointIndex[i]].x; + gCurrentPinballGame->orbOrbitCenter[i].y = gKyogreWhirlpoolTargetPositions[gCurrentPinballGame->orbTargetWaypointIndex[i]].y; } - gCurrentPinballGame->unk45C[i].x = 0; - gCurrentPinballGame->unk45C[i].y = 0; + gCurrentPinballGame->orbScreenPosition[i].x = 0; + gCurrentPinballGame->orbScreenPosition[i].y = 0; break; case 2: - index = ((gCurrentPinballGame->unk458[i] % 40) / 8) + 6; - if (gCurrentPinballGame->unk441[0] < 3 && gCurrentPinballGame->unk441[1] < 3) + index = ((gCurrentPinballGame->orbAnimTimer[i] % 40) / 8) + 6; + if (gCurrentPinballGame->orbEntityState[0] < 3 && gCurrentPinballGame->orbEntityState[1] < 3) { int xoff = 120; int yoff = 144; - tempVector.x = (gCurrentPinballGame->ball->positionQ0.x - xoff) - (gCurrentPinballGame->unk45C[i].x / 10); - tempVector.y = (gCurrentPinballGame->ball->positionQ0.y - yoff) - (gCurrentPinballGame->unk45C[i].y / 10); + tempVector.x = (gCurrentPinballGame->ball->positionQ0.x - xoff) - (gCurrentPinballGame->orbScreenPosition[i].x / 10); + tempVector.y = (gCurrentPinballGame->ball->positionQ0.y - yoff) - (gCurrentPinballGame->orbScreenPosition[i].y / 10); xx = tempVector.x * tempVector.x; yy = tempVector.y * tempVector.y; squaredMagnitude = xx + yy; - if (gCurrentPinballGame->unk383 == 0 && gCurrentPinballGame->unk388 == 0 && + if (gCurrentPinballGame->ballGrabbed == 0 && gCurrentPinballGame->ballRespawnState == 0 && gCurrentPinballGame->bonusModeHitCount < gCurrentPinballGame->legendaryHitsRequired && - gCurrentPinballGame->unk452 == 0 && squaredMagnitude < 400) + gCurrentPinballGame->bossHitFlashTimer == 0 && squaredMagnitude < 400) { m4aSongNumStart(SE_UNKNOWN_0x113); PlayRumble(12); - gCurrentPinballGame->unk1F = 1; - gCurrentPinballGame->unk458[i] = 0; - gCurrentPinballGame->unk441[i] = 3; - gCurrentPinballGame->unk5FA = 1; - tempVector2.x = gCurrentPinballGame->unk45C[i].x / 10 + 120; - tempVector2.y = gCurrentPinballGame->unk45C[i].y / 10 + 144; + gCurrentPinballGame->ballFrozenState = 1; + gCurrentPinballGame->orbAnimTimer[i] = 0; + gCurrentPinballGame->orbEntityState[i] = 3; + gCurrentPinballGame->boardEntityActive = 1; + tempVector2.x = gCurrentPinballGame->orbScreenPosition[i].x / 10 + 120; + tempVector2.y = gCurrentPinballGame->orbScreenPosition[i].y / 10 + 144; tempVector.x = (tempVector2.x << 8) - gCurrentPinballGame->ball->positionQ8.x; tempVector.y = (tempVector2.y << 8) - gCurrentPinballGame->ball->positionQ8.y; - gCurrentPinballGame->unk5AC = (tempVector.x * tempVector.x) + (tempVector.y * tempVector.y); - gCurrentPinballGame->unk5AC = Sqrt(gCurrentPinballGame->unk5AC * 4) / 2; - gCurrentPinballGame->unk5B0 = ArcTan2(-tempVector.x, tempVector.y); + gCurrentPinballGame->trapSpinRadius = (tempVector.x * tempVector.x) + (tempVector.y * tempVector.y); + gCurrentPinballGame->trapSpinRadius = Sqrt(gCurrentPinballGame->trapSpinRadius * 4) / 2; + gCurrentPinballGame->trapAngleQ16 = ArcTan2(-tempVector.x, tempVector.y); } } - if (gCurrentPinballGame->unk458[i] < 900) + if (gCurrentPinballGame->orbAnimTimer[i] < 900) { - gCurrentPinballGame->unk458[i]++; + gCurrentPinballGame->orbAnimTimer[i]++; } else { - gCurrentPinballGame->unk458[i] = 0; - gCurrentPinballGame->unk441[i] = 5; + gCurrentPinballGame->orbAnimTimer[i] = 0; + gCurrentPinballGame->orbEntityState[i] = 5; } break; case 3: - index = ((gCurrentPinballGame->unk458[i] % 40) / 8) + 6; + index = ((gCurrentPinballGame->orbAnimTimer[i] % 40) / 8) + 6; if (gCurrentPinballGame->newButtonActions[0] || gCurrentPinballGame->newButtonActions[1]) - gCurrentPinballGame->unk458[i] += 8; + gCurrentPinballGame->orbAnimTimer[i] += 8; - var4 = 29 - gCurrentPinballGame->unk458[i]; + var4 = 29 - gCurrentPinballGame->orbAnimTimer[i]; if (var4 < 10) var4 = 10; - gCurrentPinballGame->unk5B0 -= ((0x2000 - (var4 * 0x2000) / 30) * 2) / 5; - gCurrentPinballGame->ball->unkA -= 0x2000; - var5 = (gCurrentPinballGame->unk5AC * var4) / 30; - tempVector2.x = gCurrentPinballGame->unk45C[i].x / 10 + 120; - tempVector2.y = gCurrentPinballGame->unk45C[i].y / 10 + 144; - gCurrentPinballGame->ball->positionQ8.x = (tempVector2.x << 8) + ((Cos(gCurrentPinballGame->unk5B0) * var5) / 20000); - gCurrentPinballGame->ball->positionQ8.y = (tempVector2.y << 8) - ((Sin(gCurrentPinballGame->unk5B0) * var5) / 20000); + gCurrentPinballGame->trapAngleQ16 -= ((0x2000 - (var4 * 0x2000) / 30) * 2) / 5; + gCurrentPinballGame->ball->spinAngle -= 0x2000; + var5 = (gCurrentPinballGame->trapSpinRadius * var4) / 30; + tempVector2.x = gCurrentPinballGame->orbScreenPosition[i].x / 10 + 120; + tempVector2.y = gCurrentPinballGame->orbScreenPosition[i].y / 10 + 144; + gCurrentPinballGame->ball->positionQ8.x = (tempVector2.x << 8) + ((Cos(gCurrentPinballGame->trapAngleQ16) * var5) / 20000); + gCurrentPinballGame->ball->positionQ8.y = (tempVector2.y << 8) - ((Sin(gCurrentPinballGame->trapAngleQ16) * var5) / 20000); gCurrentPinballGame->ball->velocity.x = (gCurrentPinballGame->ball->velocity.x * 4) / 5; gCurrentPinballGame->ball->velocity.y = (gCurrentPinballGame->ball->velocity.y * 4) / 5; - if (gCurrentPinballGame->unk458[i] < 480) + if (gCurrentPinballGame->orbAnimTimer[i] < 480) { - gCurrentPinballGame->unk458[i]++; - if (gCurrentPinballGame->unk458[i] % 9 == 0) + gCurrentPinballGame->orbAnimTimer[i]++; + if (gCurrentPinballGame->orbAnimTimer[i] % 9 == 0) PlayRumble(12); } else { - gCurrentPinballGame->unk458[i] = 0; - gCurrentPinballGame->unk441[i] = 4; - gCurrentPinballGame->unk5AC /= 2; + gCurrentPinballGame->orbAnimTimer[i] = 0; + gCurrentPinballGame->orbEntityState[i] = 4; + gCurrentPinballGame->trapSpinRadius /= 2; } break; case 4: - index = 5 - gCurrentPinballGame->unk458[i] / 8; - var4 = 47 - gCurrentPinballGame->unk458[i]; - gCurrentPinballGame->unk5B0 -= ((0x2000 - (var4 * 0x1000) / 47) * 2) / 5; - gCurrentPinballGame->ball->unkA -= 0x2000; - var5 = (gCurrentPinballGame->unk5AC * var4) / 47; - tempVector2.x = gCurrentPinballGame->unk45C[i].x / 10 + 120; - tempVector2.y = gCurrentPinballGame->unk45C[i].y / 10 + 144; - gCurrentPinballGame->ball->positionQ8.x = (tempVector2.x << 8) + ((Cos(gCurrentPinballGame->unk5B0) * var5) / 20000); - gCurrentPinballGame->ball->positionQ8.y = (tempVector2.y << 8) - ((Sin(gCurrentPinballGame->unk5B0) * var5) / 20000); + index = 5 - gCurrentPinballGame->orbAnimTimer[i] / 8; + var4 = 47 - gCurrentPinballGame->orbAnimTimer[i]; + gCurrentPinballGame->trapAngleQ16 -= ((0x2000 - (var4 * 0x1000) / 47) * 2) / 5; + gCurrentPinballGame->ball->spinAngle -= 0x2000; + var5 = (gCurrentPinballGame->trapSpinRadius * var4) / 47; + tempVector2.x = gCurrentPinballGame->orbScreenPosition[i].x / 10 + 120; + tempVector2.y = gCurrentPinballGame->orbScreenPosition[i].y / 10 + 144; + gCurrentPinballGame->ball->positionQ8.x = (tempVector2.x << 8) + ((Cos(gCurrentPinballGame->trapAngleQ16) * var5) / 20000); + gCurrentPinballGame->ball->positionQ8.y = (tempVector2.y << 8) - ((Sin(gCurrentPinballGame->trapAngleQ16) * var5) / 20000); gCurrentPinballGame->ball->velocity.x = (gCurrentPinballGame->ball->velocity.x * 4) / 5; gCurrentPinballGame->ball->velocity.y = (gCurrentPinballGame->ball->velocity.y * 4) / 5; - if (gCurrentPinballGame->unk458[i] < 47) + if (gCurrentPinballGame->orbAnimTimer[i] < 47) { - gCurrentPinballGame->unk458[i]++; + gCurrentPinballGame->orbAnimTimer[i]++; } else { - gCurrentPinballGame->unk458[i] = 0; + gCurrentPinballGame->orbAnimTimer[i] = 0; gCurrentPinballGame->ball->velocity.x = -150 + (gMain.systemFrameCount % 2) * 300; gCurrentPinballGame->ball->velocity.y = 300; - gCurrentPinballGame->unk1F = 0; - gCurrentPinballGame->unk441[i] = 0; - gCurrentPinballGame->unk5FA = 0; + gCurrentPinballGame->ballFrozenState = 0; + gCurrentPinballGame->orbEntityState[i] = 0; + gCurrentPinballGame->boardEntityActive = 0; } break; case 5: - index = 5 - gCurrentPinballGame->unk458[i] / 6; - if (gCurrentPinballGame->unk458[i] < 36) + index = 5 - gCurrentPinballGame->orbAnimTimer[i] / 6; + if (gCurrentPinballGame->orbAnimTimer[i] < 36) { - gCurrentPinballGame->unk458[i]++; + gCurrentPinballGame->orbAnimTimer[i]++; } else { - gCurrentPinballGame->unk458[i] = 0; - gCurrentPinballGame->unk441[i] = 0; + gCurrentPinballGame->orbAnimTimer[i] = 0; + gCurrentPinballGame->orbEntityState[i] = 0; } break; } - if (gCurrentPinballGame->unk441[i] >= 2 && gCurrentPinballGame->unk441[i] < 4) + if (gCurrentPinballGame->orbEntityState[i] >= 2 && gCurrentPinballGame->orbEntityState[i] < 4) { - tempVector.x = gCurrentPinballGame->unk464[i].x - gCurrentPinballGame->unk45C[i].x; - tempVector.y = gCurrentPinballGame->unk464[i].y - gCurrentPinballGame->unk45C[i].y; + tempVector.x = gCurrentPinballGame->orbOrbitCenter[i].x - gCurrentPinballGame->orbScreenPosition[i].x; + tempVector.y = gCurrentPinballGame->orbOrbitCenter[i].y - gCurrentPinballGame->orbScreenPosition[i].y; xx = tempVector.x * tempVector.x; yy = tempVector.y * tempVector.y; squaredMagnitude = xx + yy; angle = ArcTan2(tempVector.x, -tempVector.y); tempVector3.x = (Cos(angle) * 4) / 20000; tempVector3.y = -(Sin(angle) * 4) / 20000; - gCurrentPinballGame->unk45C[i].x += tempVector3.x; - gCurrentPinballGame->unk45C[i].y += tempVector3.y; + gCurrentPinballGame->orbScreenPosition[i].x += tempVector3.x; + gCurrentPinballGame->orbScreenPosition[i].y += tempVector3.y; if (squaredMagnitude < 2500) { - gCurrentPinballGame->unk443[i] = i * 7 + ((Random() + gMain.systemFrameCount) % 7); - gCurrentPinballGame->unk464[i].x = gUnknown_086AEDE8[gCurrentPinballGame->unk443[i]].x; - gCurrentPinballGame->unk464[i].y = gUnknown_086AEDE8[gCurrentPinballGame->unk443[i]].y; + gCurrentPinballGame->orbTargetWaypointIndex[i] = i * 7 + ((Random() + gMain.systemFrameCount) % 7); + gCurrentPinballGame->orbOrbitCenter[i].x = gKyogreWhirlpoolTargetPositions[gCurrentPinballGame->orbTargetWaypointIndex[i]].x; + gCurrentPinballGame->orbOrbitCenter[i].y = gKyogreWhirlpoolTargetPositions[gCurrentPinballGame->orbTargetWaypointIndex[i]].y; } } } - DmaCopy16(3, gUnknown_084FF90C[index], (void *)0x06011520 + i * 0x200, 0x200); + DmaCopy16(3, gKyogreWhirlpoolMinionSprites[index], (void *)0x06011520 + i * 0x200, 0x200); if (group->available) { - if (gCurrentPinballGame->unk441[i] > 0) + if (gCurrentPinballGame->orbEntityState[i] > 0) { - group->baseX = gCurrentPinballGame->unk45C[i].x / 10 - (gCurrentPinballGame->unk58 - 104u); - group->baseY = gCurrentPinballGame->unk45C[i].y / 10 - (gCurrentPinballGame->unk5A - 128u); + group->baseX = gCurrentPinballGame->orbScreenPosition[i].x / 10 - (gCurrentPinballGame->cameraXOffset - 104u); + group->baseY = gCurrentPinballGame->orbScreenPosition[i].y / 10 - (gCurrentPinballGame->cameraYOffset - 128u); } else { @@ -1193,9 +1193,9 @@ void sub_39A40(void) s16 scale; s16 var6; - if (gCurrentPinballGame->unk456 < 36) + if (gCurrentPinballGame->shockwaveAnimTimer < 36) { - scale = (gCurrentPinballGame->unk456 * 0x200) / 35 + 0x10; + scale = (gCurrentPinballGame->shockwaveAnimTimer * 0x200) / 35 + 0x10; if (scale > 0x200) scale = 0x200; @@ -1203,12 +1203,12 @@ void sub_39A40(void) SetMatrixScale(-scale, scale, 2); SetMatrixScale(scale, -scale, 3); SetMatrixScale(-scale, -scale, 4); - if (gCurrentPinballGame->unk456 > 30) - var6 = 12 - ((gCurrentPinballGame->unk456 - 30) * 11) / 5; + if (gCurrentPinballGame->shockwaveAnimTimer > 30) + var6 = 12 - ((gCurrentPinballGame->shockwaveAnimTimer - 30) * 11) / 5; else - var6 = 16 - (gCurrentPinballGame->unk456 * 4) / 30; + var6 = 16 - (gCurrentPinballGame->shockwaveAnimTimer * 4) / 30; - gCurrentPinballGame->unk456++; + gCurrentPinballGame->shockwaveAnimTimer++; } else { @@ -1217,14 +1217,14 @@ void sub_39A40(void) group->available = 0; } - gCurrentPinballGame->unk46C[0].x = 0x20 - scale / 8; - gCurrentPinballGame->unk46C[1].x = 0x20 + scale / 8; - gCurrentPinballGame->unk46C[2].x = 0x20 - scale / 8; - gCurrentPinballGame->unk46C[3].x = 0x20 + scale / 8; - gCurrentPinballGame->unk46C[0].y = 0x20 - scale / 8; - gCurrentPinballGame->unk46C[1].y = 0x20 - scale / 8; - gCurrentPinballGame->unk46C[2].y = 0x20 + scale / 8; - gCurrentPinballGame->unk46C[3].y = 0x20 + scale / 8; + gCurrentPinballGame->shockwaveQuadrantOffset[0].x = 0x20 - scale / 8; + gCurrentPinballGame->shockwaveQuadrantOffset[1].x = 0x20 + scale / 8; + gCurrentPinballGame->shockwaveQuadrantOffset[2].x = 0x20 - scale / 8; + gCurrentPinballGame->shockwaveQuadrantOffset[3].x = 0x20 + scale / 8; + gCurrentPinballGame->shockwaveQuadrantOffset[0].y = 0x20 - scale / 8; + gCurrentPinballGame->shockwaveQuadrantOffset[1].y = 0x20 - scale / 8; + gCurrentPinballGame->shockwaveQuadrantOffset[2].y = 0x20 + scale / 8; + gCurrentPinballGame->shockwaveQuadrantOffset[3].y = 0x20 + scale / 8; if ((gMain.modeChangeFlags & MODE_CHANGE_EXPIRED_BONUS_BANNER) == 0) { @@ -1234,30 +1234,30 @@ void sub_39A40(void) if (group->available) { - group->baseX = 23 - gCurrentPinballGame->unk58; - group->baseY = 30 - gCurrentPinballGame->unk5A; + group->baseX = 23 - gCurrentPinballGame->cameraXOffset; + group->baseY = 30 - gCurrentPinballGame->cameraYOffset; for (i = 0; i < 4; i++) { oamSimple = &group->oam[i]; - gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX + gCurrentPinballGame->unk46C[i].x; - gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY + gCurrentPinballGame->unk46C[i].y; + gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX + gCurrentPinballGame->shockwaveQuadrantOffset[i].x; + gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY + gCurrentPinballGame->shockwaveQuadrantOffset[i].y; gOamBuffer[oamSimple->oamId].affineMode = ST_OAM_AFFINE_DOUBLE; gOamBuffer[oamSimple->oamId].matrixNum = 1 + i; } } - if (gCurrentPinballGame->unk456 < 30) + if (gCurrentPinballGame->shockwaveAnimTimer < 30) { tempVector.x = gCurrentPinballGame->ball->positionQ0.x - 119; tempVector.y = gCurrentPinballGame->ball->positionQ0.y - 127; xx = tempVector.x * tempVector.x; yy = tempVector.y * tempVector.y; squaredMagnitude = xx + yy; - if (gCurrentPinballGame->unk388 == 0 && squaredMagnitude < gUnknown_086AEE20[gCurrentPinballGame->unk456]) + if (gCurrentPinballGame->ballRespawnState == 0 && squaredMagnitude < gShockwaveSplashDistanceThresholds[gCurrentPinballGame->shockwaveAnimTimer]) { - gCurrentPinballGame->unk445 = 0; - gCurrentPinballGame->unk448 = 0; - gCurrentPinballGame->unk454 = 0; + gCurrentPinballGame->whirlpoolTrapPhase = 0; + gCurrentPinballGame->whirlpoolTrapAnimFrame = 0; + gCurrentPinballGame->whirlpoolTrapFrameTimer = 0; if (!gMain.spriteGroups[16].available) PlayRumble(8); @@ -1270,7 +1270,7 @@ void sub_39A40(void) } } -void sub_3ADA0(void) +void HideKyogreSplashSprite(void) { s16 i; struct SpriteGroup *group; @@ -1290,7 +1290,7 @@ void sub_3ADA0(void) } } -void sub_3AE14(void) +void AnimateKyogreBackground(void) { s16 i, j; struct SpriteGroup *group; @@ -1298,48 +1298,48 @@ void sub_3AE14(void) s16 var0; s16 index; - if (gCurrentPinballGame->unk13 == 0 && gCurrentPinballGame->unk18 < 600) + if (gCurrentPinballGame->boardState == 0 && gCurrentPinballGame->stageTimer < 600) { - index = gUnknown_086AEF04[(gCurrentPinballGame->unk18 % 240) / 24]; - DmaCopy16(3, gUnknown_083529D8[index], (void *)0x05000340, 0x20); - DmaCopy16(3, gUnknown_0833FF58[index], (void *)0x050002A0, 0x20); + index = gKyogreIntroPaletteCycleIndices[(gCurrentPinballGame->stageTimer % 240) / 24]; + DmaCopy16(3, gKyogreIntroIcePalette[index], (void *)0x05000340, 0x20); + DmaCopy16(3, gKyogreIntroShorePalette[index], (void *)0x050002A0, 0x20); var0 = 2; index = 0; - gCurrentPinballGame->unk44C = index; + gCurrentPinballGame->kyogreBgAnimTimer = index; } else { - var0 = gUnknown_086AEEE6[(gCurrentPinballGame->unk44C % 96) / 24]; - gCurrentPinballGame->unk44C++; + var0 = gKyogreBgTileVariantCycle[(gCurrentPinballGame->kyogreBgAnimTimer % 96) / 24]; + gCurrentPinballGame->kyogreBgAnimTimer++; } - index = gUnknown_086AEED6[(gCurrentPinballGame->unk290 % 96) / 24]; + index = gWaterTilePaletteCycle[(gCurrentPinballGame->globalAnimFrameCounter % 96) / 24]; for (i = 0; i < 0x400; i++) - gUnknown_03005C00[0x800 + i] = gUnknown_08333004[i] + index * 4; + gBG0TilemapBuffer[0x800 + i] = gKyogreWaterBackgroundTilemap[i] + index * 4; - DmaCopy16(3, &gUnknown_03005C00[0x800], (void *)0x06000000, 0x800); - index = gUnknown_086AEEDE[(gMain.systemFrameCount % 96) / 24]; - DmaCopy16(3, &gUnknown_086AEAE0[gCurrentPinballGame->unk382][index * 0x20], (void *)0x05000060, 0x20); + DmaCopy16(3, &gBG0TilemapBuffer[0x800], (void *)0x06000000, 0x800); + index = gKyogreWaterPaletteSegmentCycle[(gMain.systemFrameCount % 96) / 24]; + DmaCopy16(3, &gKyogreOceanPaletteProgression[gCurrentPinballGame->bossPhaseCounter][index * 0x20], (void *)0x05000060, 0x20); for (j = 0; j < 4; j++) { group = &gMain.spriteGroups[11 + j]; - group->baseX = 120 - gCurrentPinballGame->unk58; - group->baseY = 128 - gCurrentPinballGame->unk5A; + group->baseX = 120 - gCurrentPinballGame->cameraXOffset; + group->baseY = 128 - gCurrentPinballGame->cameraYOffset; for (i = 0; i < 3; i++) { oamSimple = &group->oam[i]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; - gOamBuffer[oamSimple->oamId].tileNum = gUnknown_086AEEFE[i] + var0 * 8; + gOamBuffer[oamSimple->oamId].tileNum = gKyogreBgSpriteBaseTileNums[i] + var0 * 8; } } group = &gMain.spriteGroups[15]; if (group->available) { - group->baseX = 120 - gCurrentPinballGame->unk58; - group->baseY = 128 - gCurrentPinballGame->unk5A; + group->baseX = 120 - gCurrentPinballGame->cameraXOffset; + group->baseY = 128 - gCurrentPinballGame->cameraYOffset; for (i = 0; i < 8; i++) { oamSimple = &group->oam[i]; @@ -1347,7 +1347,7 @@ void sub_3AE14(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - if (gCurrentPinballGame->unk18 == 480) + if (gCurrentPinballGame->stageTimer == 480) gMain.spriteGroups[15].available = 0; } } diff --git a/src/board_process3_rayquaza.c b/src/board_process3_rayquaza.c index 4a01662..7977ea2 100644 --- a/src/board_process3_rayquaza.c +++ b/src/board_process3_rayquaza.c @@ -3,23 +3,23 @@ #include "main.h" #include "constants/bg_music.h" -extern const s16 gUnknown_08137D48[]; +extern const s16 gWhirlwindGrabAnimFrameIndices[]; extern const u8 gRayquazaBonusClear_Gfx[]; -extern const u8 gUnknown_083C5A2C[]; -extern const u8 gUnknown_084A6EEC[][0x280]; -extern const u8 gUnknown_084A856C[]; -extern const u8 gUnknown_084AA18C[]; -extern const u8 gUnknown_084AA9EC[][0x800]; -extern const s16 gUnknown_086AEF28[]; -extern const u16 gUnknown_086AF3CC[][3]; -extern const struct Vector16 gUnknown_086AF744[32]; -extern const s16 gUnknown_086AF784[]; -extern const u16 gUnknown_086B5ECA[39][6][3]; -extern const u16 gUnknown_086B5CC0[10][5][3]; -extern const u16 gUnknown_086B5D56[20][2][3]; -extern const u16 gUnknown_086B5DCE[12][7][3]; -extern const u16 gUnknown_086B609E[10][3][3]; -extern const u16 gUnknown_086B612E[212][3]; +extern const u8 gRayquazaSkyBackgroundGfx[]; +extern const u8 gRayquazaMinionOrbFrames[][0x280]; +extern const u8 gRayquazaWindBoardGfx[]; +extern const u8 gRayquazaSpriteSheet[]; +extern const u8 gRayquazaBodyVariantTiles[][0x800]; +extern const s16 gScreenShakeOscillationValues[]; +extern const u16 gRayquazaAnimFramesetTable[][3]; +extern const struct Vector16 gRayquazaMinionOrbitWaypoints[32]; +extern const s16 gRayquazaCloudScrollPositions[]; +extern const u16 gRayquazaNeckSegmentOamData[39][6][3]; +extern const u16 gRayquazaHitBurstOamData[10][5][3]; +extern const u16 gRayquazaWhirlwindGrabOamData[20][2][3]; +extern const u16 gRayquazaSwoopAttackOamData[12][7][3]; +extern const u16 gRayquazaHeadOamData[10][3][3]; +extern const u16 gRayquazaMainBodyOamData[212][3]; void RayquazaBoardProcess_3A_3E79C(void) { @@ -30,33 +30,33 @@ void RayquazaBoardProcess_3A_3E79C(void) for (i = 0; i < frame; i++) Random(); - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk17 = 0; - gCurrentPinballGame->unk13 = 0; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardSubState = 0; + gCurrentPinballGame->boardState = 0; if (gCurrentPinballGame->numCompletedBonusStages % 10 == 9) gCurrentPinballGame->legendaryHitsRequired = 18; else gCurrentPinballGame->legendaryHitsRequired = 15; - gCurrentPinballGame->unk294 = 0; + gCurrentPinballGame->boardModeType = 0; gCurrentPinballGame->eventTimer = gCurrentPinballGame->timerBonus + 10800; gCurrentPinballGame->timerBonus = 0; - gCurrentPinballGame->unk388 = 3; - gCurrentPinballGame->unk392 = 0; - gCurrentPinballGame->ball->unk0 = 1; - gCurrentPinballGame->unkE6 = -88; + gCurrentPinballGame->ballRespawnState = 3; + gCurrentPinballGame->ballRespawnTimer = 0; + gCurrentPinballGame->ball->ballHidden = 1; + gCurrentPinballGame->cameraYAdjust = -88; gCurrentPinballGame->boardEntityCollisionMode = 1; - gCurrentPinballGame->unk6C4 = 3; - gCurrentPinballGame->unk382 = 0; - gCurrentPinballGame->unk383 = 0; + gCurrentPinballGame->portraitDisplayState = 3; + gCurrentPinballGame->bossPhaseCounter = 0; + gCurrentPinballGame->ballGrabbed = 0; gCurrentPinballGame->bonusModeHitCount = 0; gCurrentPinballGame->returnToMainBoardFlag = 0; - gCurrentPinballGame->unk389 = 0; - gCurrentPinballGame->unk38A = 0; - gCurrentPinballGame->unk38C = 0; - gCurrentPinballGame->unk38E = 0; - gCurrentPinballGame->unk390 = 0; - gCurrentPinballGame->unk394 = 0; + gCurrentPinballGame->legendaryFlashState = 0; + gCurrentPinballGame->rayquazaOrbAngle = 0; + gCurrentPinballGame->bossRenderOffsetY = 0; + gCurrentPinballGame->bossAttackTimer = 0; + gCurrentPinballGame->bossRoarTimer = 0; + gCurrentPinballGame->bannerSlideYOffset = 0; for (i = 0; i < 3; i++) { @@ -64,174 +64,174 @@ void RayquazaBoardProcess_3A_3E79C(void) gCurrentPinballGame->minionLogicPosition[i].y = 0; } - gCurrentPinballGame->unk3DC = 0; - gCurrentPinballGame->unk3DD = 0; - gCurrentPinballGame->unk3DE = 0; - gCurrentPinballGame->unk3DF = 0; - gCurrentPinballGame->unk3E0 = 0; - gCurrentPinballGame->unk3E2 = 0; - gCurrentPinballGame->unk3E1 = 0; - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E6 = 0; - gCurrentPinballGame->unk3E8 = 0; - gCurrentPinballGame->unk3EA = 0; - gCurrentPinballGame->unk3EC = 0; - gCurrentPinballGame->unk3EE = 0; - gCurrentPinballGame->unk3F0 = 0; - gCurrentPinballGame->unk3F2 = 0; - gCurrentPinballGame->unk414.x = 0; - gCurrentPinballGame->unk414.y = 0; - gCurrentPinballGame->unk418.x = 0; - gCurrentPinballGame->unk418.y = 0; - gCurrentPinballGame->unk452 = 0; + gCurrentPinballGame->bossEntityState = 0; + gCurrentPinballGame->bossAttackPhase = 0; + gCurrentPinballGame->kecleonFramesetBase = 0; + gCurrentPinballGame->bossVulnerable = 0; + gCurrentPinballGame->dusclopsWalkFootIndex = 0; + gCurrentPinballGame->bossFramesetIndex = 0; + gCurrentPinballGame->bossMovementPhase = 0; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossAnimLoopCount = 0; + gCurrentPinballGame->bossPositionX = 0; + gCurrentPinballGame->bossPositionY = 0; + gCurrentPinballGame->bossVelocityX = 0; + gCurrentPinballGame->bossVelocityY = 0; + gCurrentPinballGame->bossCollisionX = 0; + gCurrentPinballGame->bossCollisionY = 0; + gCurrentPinballGame->orbLogicPosition.x = 0; + gCurrentPinballGame->orbLogicPosition.y = 0; + gCurrentPinballGame->orbCollisionPosition.x = 0; + gCurrentPinballGame->orbCollisionPosition.y = 0; + gCurrentPinballGame->bossHitFlashTimer = 0; for (i = 0; i < 2; i++) { - gCurrentPinballGame->unk441[i] = 0; - gCurrentPinballGame->unk443[i] = 0; - gCurrentPinballGame->unk458[i] = 0; - gCurrentPinballGame->unk45C[i].x = 0; - gCurrentPinballGame->unk45C[i].y = 0; - gCurrentPinballGame->unk464[i].x = 0; - gCurrentPinballGame->unk464[i].y = 0; + gCurrentPinballGame->orbEntityState[i] = 0; + gCurrentPinballGame->orbTargetWaypointIndex[i] = 0; + gCurrentPinballGame->orbAnimTimer[i] = 0; + gCurrentPinballGame->orbScreenPosition[i].x = 0; + gCurrentPinballGame->orbScreenPosition[i].y = 0; + gCurrentPinballGame->orbOrbitCenter[i].x = 0; + gCurrentPinballGame->orbOrbitCenter[i].y = 0; } - gCurrentPinballGame->unk4C8 = 0; - gCurrentPinballGame->unk47F = 0; - gCurrentPinballGame->unk480 = 0; - gCurrentPinballGame->unk486 = 0; - gCurrentPinballGame->unk504 = 0; - gCurrentPinballGame->unk505 = 0; - gCurrentPinballGame->unk506 = 0; - gCurrentPinballGame->unk507 = 0; - gCurrentPinballGame->unk508 = 0; - gCurrentPinballGame->unk50A = 0; - gCurrentPinballGame->unk50C = 0; - gCurrentPinballGame->unk50E = 0; - gCurrentPinballGame->unk510 = 0; - gCurrentPinballGame->unk512 = 0; - gCurrentPinballGame->unk514 = 0; - gCurrentPinballGame->unk516 = 0; - gCurrentPinballGame->unk518 = 0; - gCurrentPinballGame->unk51A = 0; - gCurrentPinballGame->unk51C.x = 0; - gCurrentPinballGame->unk51C.y = 0; - gCurrentPinballGame->unk520.x = 0; - gCurrentPinballGame->unk520.y = 0; - gCurrentPinballGame->unk524.x = 0; - gCurrentPinballGame->unk524.y = 0; - gCurrentPinballGame->unk528.x = 0; - gCurrentPinballGame->unk528.y = 0; - gCurrentPinballGame->unk1A = 1; - sub_423D8(); - DmaCopy16(3, gUnknown_083C5A2C, (void *)0x06015800, 0x2800); - DmaCopy16(3, gUnknown_084AA18C, (void *)0x06011620, 0x860); - sub_3EDF0(); - sub_3FAE0(); - DmaCopy16(3, gUnknown_081B36A4, (void *)0x05000320, 0x20); + gCurrentPinballGame->impactShakeTimer = 0; + gCurrentPinballGame->ballGrabShakeTimer = 0; + gCurrentPinballGame->ballGrabFlashTimer = 0; + gCurrentPinballGame->ballGrabTimer = 0; + gCurrentPinballGame->windAttackCount = 0; + gCurrentPinballGame->orbHitIndex = 0; + gCurrentPinballGame->introSequencePhase = 0; + gCurrentPinballGame->swoopAttackState = 0; + gCurrentPinballGame->horizontalShakeTimer = 0; + gCurrentPinballGame->roarBrightnessFlashTimer = 0; + gCurrentPinballGame->bossInvulnTimer = 0; + gCurrentPinballGame->hitBurstAnimFrame = 0; + gCurrentPinballGame->swoopAttackAnimFrame = 0; + gCurrentPinballGame->bossSineAngle = 0; + gCurrentPinballGame->windCloudSpawnTimer = 0; + gCurrentPinballGame->introFrameCounter = 0; + gCurrentPinballGame->bgScrollSpeed = 0; + gCurrentPinballGame->bossHeadScreenY = 0; + gCurrentPinballGame->swoopTargetPosition.x = 0; + gCurrentPinballGame->swoopTargetPosition.y = 0; + gCurrentPinballGame->orbHitPosition.x = 0; + gCurrentPinballGame->orbHitPosition.y = 0; + gCurrentPinballGame->windEntityPosition.x = 0; + gCurrentPinballGame->windEntityPosition.y = 0; + gCurrentPinballGame->windCloudPosition.x = 0; + gCurrentPinballGame->windCloudPosition.y = 0; + gCurrentPinballGame->flippersDisabled = 1; + UpdateRayquazaIntroSequence(); + DmaCopy16(3, gRayquazaSkyBackgroundGfx, (void *)0x06015800, 0x2800); + DmaCopy16(3, gRayquazaSpriteSheet, (void *)0x06011620, 0x860); + UpdateRayquazaEntityLogic(); + RenderRayquazaSprites(); + DmaCopy16(3, gBonusStageObjPal, (void *)0x05000320, 0x20); } void RayquazaBoardProcess_3B_3EB2C(void) { - switch (gCurrentPinballGame->unk13) + switch (gCurrentPinballGame->boardState) { case 0: - gCurrentPinballGame->unk5F7 = 1; - if (gCurrentPinballGame->unk506 == 1) + gCurrentPinballGame->ballUpgradeTimerFrozen = 1; + if (gCurrentPinballGame->introSequencePhase == 1) { - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unk13 = 1; - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->boardState = 1; + gCurrentPinballGame->stageTimer = 0; } break; case 1: break; case 2: - gCurrentPinballGame->unk13 = 3; - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->boardState = 3; + gCurrentPinballGame->stageTimer = 0; gMain.spriteGroups[6].available = 1; gMain.spriteGroups[5].available = 1; DmaCopy16(3, gRayquazaBonusClear_Gfx, (void *)0x06015800, 0x2000); - gCurrentPinballGame->unk394 = 136; + gCurrentPinballGame->bannerSlideYOffset = 136; gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER; - gCurrentPinballGame->unk5FA = 1; + gCurrentPinballGame->boardEntityActive = 1; break; case 3: - ProceessBonusBannerAndScoring(); + ProcessBonusBannerAndScoring(); if (gCurrentPinballGame->scoreCounterAnimationEnabled) - gCurrentPinballGame->unk18 = 181; + gCurrentPinballGame->stageTimer = 181; - if (gCurrentPinballGame->unk18 == 180) + if (gCurrentPinballGame->stageTimer == 180) { gCurrentPinballGame->scoreCounterAnimationEnabled = TRUE; gCurrentPinballGame->scoreAddStepSize = 400000; gCurrentPinballGame->scoreAddedInFrame = 99999999; } - if (gCurrentPinballGame->unk18 < 240) + if (gCurrentPinballGame->stageTimer < 240) { - if (gCurrentPinballGame->unk18 == 20) + if (gCurrentPinballGame->stageTimer == 20) { m4aMPlayAllStop(); m4aSongNumStart(MUS_SUCCESS3); } - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk13 = 6; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardState = 6; gCurrentPinballGame->numCompletedBonusStages++; } - gCurrentPinballGame->unk5FA = 1; + gCurrentPinballGame->boardEntityActive = 1; break; case 4: - gCurrentPinballGame->unk13 = 5; - gCurrentPinballGame->unk18 = 140; + gCurrentPinballGame->boardState = 5; + gCurrentPinballGame->stageTimer = 140; gMain.spriteGroups[6].available = 1; gMain.spriteGroups[5].available = 1; DmaCopy16(3, gRayquazaBonusClear_Gfx, (void *)0x06015800, 0x2000); - gCurrentPinballGame->unk394 = 136; + gCurrentPinballGame->bannerSlideYOffset = 136; gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER; break; case 5: - ProceessBonusBannerAndScoring(); + ProcessBonusBannerAndScoring(); if (gCurrentPinballGame->scoreCounterAnimationEnabled) - gCurrentPinballGame->unk18 = 181; + gCurrentPinballGame->stageTimer = 181; - if (gCurrentPinballGame->unk18 == 180) + if (gCurrentPinballGame->stageTimer == 180) { gCurrentPinballGame->scoreCounterAnimationEnabled = TRUE; gCurrentPinballGame->scoreAddStepSize = 400000; gCurrentPinballGame->scoreAddedInFrame = 99999999; } - if (gCurrentPinballGame->unk18 < 240) + if (gCurrentPinballGame->stageTimer < 240) { - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk13 = 6; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardState = 6; gCurrentPinballGame->numCompletedBonusStages++; - gCurrentPinballGame->unk1AF = 0; + gCurrentPinballGame->shopBonusStageAlreadyBought = 0; } break; case 6: - ProceessBonusBannerAndScoring(); + ProcessBonusBannerAndScoring(); gCurrentPinballGame->returnToMainBoardFlag = 1; - gCurrentPinballGame->unk5FA = 1; + gCurrentPinballGame->boardEntityActive = 1; break; } - sub_423D8(); - sub_40288(); - sub_3EDF0(); - sub_3FAE0(); - if (gCurrentPinballGame->unk294 && gCurrentPinballGame->eventTimer < 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE) + UpdateRayquazaIntroSequence(); + UpdateRayquazaMinionsAndEffects(); + UpdateRayquazaEntityLogic(); + RenderRayquazaSprites(); + if (gCurrentPinballGame->boardModeType && gCurrentPinballGame->eventTimer < 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE) { m4aMPlayAllStop(); m4aSongNumStart(MUS_END_OF_BALL3); @@ -240,37 +240,37 @@ void RayquazaBoardProcess_3B_3EB2C(void) if (gCurrentPinballGame->returnToMainBoardFlag) { - gCurrentPinballGame->unk5FA = 1; + gCurrentPinballGame->boardEntityActive = 1; FadeToMainBoard(); } BonusStage_HandleModeChangeFlags(); } -void sub_3EDF0(void) +void UpdateRayquazaEntityLogic(void) { - if (gCurrentPinballGame->unk452) + if (gCurrentPinballGame->bossHitFlashTimer) { - gCurrentPinballGame->unk452--; - gCurrentPinballGame->unk389 = 1; - if (gCurrentPinballGame->unk452 == 5) + gCurrentPinballGame->bossHitFlashTimer--; + gCurrentPinballGame->legendaryFlashState = 1; + if (gCurrentPinballGame->bossHitFlashTimer == 5) { m4aSongNumStart(SE_RAYQUAZA_HIT); gCurrentPinballGame->scoreAddedInFrame = 1000000; gCurrentPinballGame->bonusModeHitCount++; PlayRumble(7); - if (gCurrentPinballGame->bonusModeHitCount >= gCurrentPinballGame->legendaryHitsRequired && gCurrentPinballGame->unk3DC != 6) - gCurrentPinballGame->unk3DC = 9; + if (gCurrentPinballGame->bonusModeHitCount >= gCurrentPinballGame->legendaryHitsRequired && gCurrentPinballGame->bossEntityState != 6) + gCurrentPinballGame->bossEntityState = 9; } - gCurrentPinballGame->unk50C = 20; - if (gCurrentPinballGame->unk452 == 0) - gCurrentPinballGame->unk389 = 0; + gCurrentPinballGame->bossInvulnTimer = 20; + if (gCurrentPinballGame->bossHitFlashTimer == 0) + gCurrentPinballGame->legendaryFlashState = 0; } - if (gCurrentPinballGame->unk50C) + if (gCurrentPinballGame->bossInvulnTimer) { - gCurrentPinballGame->unk50C--; + gCurrentPinballGame->bossInvulnTimer--; gCurrentPinballGame->boardEntityCollisionMode = 0; } else @@ -278,218 +278,218 @@ void sub_3EDF0(void) gCurrentPinballGame->boardEntityCollisionMode = 1; } - switch (gCurrentPinballGame->unk3DC) + switch (gCurrentPinballGame->bossEntityState) { case 0: - gCurrentPinballGame->unk3E8 = 1140; - gCurrentPinballGame->unk3EA = 2400; - gCurrentPinballGame->unk3DC = 1; - gCurrentPinballGame->unk3E2 = 13; - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E1 = 0; - gCurrentPinballGame->unk51A = 0; + gCurrentPinballGame->bossPositionX = 1140; + gCurrentPinballGame->bossPositionY = 2400; + gCurrentPinballGame->bossEntityState = 1; + gCurrentPinballGame->bossFramesetIndex = 13; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossMovementPhase = 0; + gCurrentPinballGame->bossHeadScreenY = 0; break; case 1: - if (gCurrentPinballGame->unk516 > 530) + if (gCurrentPinballGame->introFrameCounter > 530) { - if (gCurrentPinballGame->unk3EA > -1200) - gCurrentPinballGame->unk3EA -= 70; + if (gCurrentPinballGame->bossPositionY > -1200) + gCurrentPinballGame->bossPositionY -= 70; - if (gCurrentPinballGame->unk516 == 672) + if (gCurrentPinballGame->introFrameCounter == 672) { - gCurrentPinballGame->unk3DC = 2; - gCurrentPinballGame->unk3E8 = 0; - gCurrentPinballGame->unk3EA = -640; + gCurrentPinballGame->bossEntityState = 2; + gCurrentPinballGame->bossPositionX = 0; + gCurrentPinballGame->bossPositionY = -640; } } - if (gCurrentPinballGame->unk516 == 530) - gCurrentPinballGame->unk390 = 25; + if (gCurrentPinballGame->introFrameCounter == 530) + gCurrentPinballGame->bossRoarTimer = 25; break; case 2: - if (gUnknown_086AF3CC[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gRayquazaAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 63) - gCurrentPinballGame->unk3E2 = 13; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 63) + gCurrentPinballGame->bossFramesetIndex = 13; } - if (gCurrentPinballGame->unk3EA < 0) + if (gCurrentPinballGame->bossPositionY < 0) { - gCurrentPinballGame->unk3EA += 18; - if (gCurrentPinballGame->unk3EA > 0) + gCurrentPinballGame->bossPositionY += 18; + if (gCurrentPinballGame->bossPositionY > 0) { - gCurrentPinballGame->unk3EA = 0; + gCurrentPinballGame->bossPositionY = 0; m4aSongNumStart(MUS_BONUS_FIELD_RAYQUAZA); } } - if (gCurrentPinballGame->unk3EA == 0) + if (gCurrentPinballGame->bossPositionY == 0) { - gCurrentPinballGame->unk3DC = 5; - gCurrentPinballGame->unk3E1 = 0; - gCurrentPinballGame->unk3DD = 6; + gCurrentPinballGame->bossEntityState = 5; + gCurrentPinballGame->bossMovementPhase = 0; + gCurrentPinballGame->bossAttackPhase = 6; } break; case 3: - if (gUnknown_086AF3CC[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gRayquazaAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 63) - gCurrentPinballGame->unk3E2 = 13; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 63) + gCurrentPinballGame->bossFramesetIndex = 13; } - if (gCurrentPinballGame->unk3EA < 0) + if (gCurrentPinballGame->bossPositionY < 0) { - gCurrentPinballGame->unk3EA += 18; - if (gCurrentPinballGame->unk3EA > 0) - gCurrentPinballGame->unk3EA = 0; + gCurrentPinballGame->bossPositionY += 18; + if (gCurrentPinballGame->bossPositionY > 0) + gCurrentPinballGame->bossPositionY = 0; } - if (gCurrentPinballGame->unk3EA == 0) + if (gCurrentPinballGame->bossPositionY == 0) { - gCurrentPinballGame->unk3DC = 5; - gCurrentPinballGame->unk3E1 = 0; - gCurrentPinballGame->unk3DD = 6; + gCurrentPinballGame->bossEntityState = 5; + gCurrentPinballGame->bossMovementPhase = 0; + gCurrentPinballGame->bossAttackPhase = 6; } break; case 4: - if (gUnknown_086AF3CC[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gRayquazaAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 34) - gCurrentPinballGame->unk3E2 = 33; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 34) + gCurrentPinballGame->bossFramesetIndex = 33; } - if (gCurrentPinballGame->unk3E2 == 33 && gCurrentPinballGame->unk3EA > -0x300) + if (gCurrentPinballGame->bossFramesetIndex == 33 && gCurrentPinballGame->bossPositionY > -0x300) { - gCurrentPinballGame->unk3EA -= 0x18; - if (gCurrentPinballGame->unk3EA < -0x300) - gCurrentPinballGame->unk3EA = -0x300; + gCurrentPinballGame->bossPositionY -= 0x18; + if (gCurrentPinballGame->bossPositionY < -0x300) + gCurrentPinballGame->bossPositionY = -0x300; } - if (gCurrentPinballGame->unk3EA == -0x300) + if (gCurrentPinballGame->bossPositionY == -0x300) { - gCurrentPinballGame->unk3E2 = 0; - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3DC = 7; - gCurrentPinballGame->unk3E1 = 0; + gCurrentPinballGame->bossFramesetIndex = 0; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossEntityState = 7; + gCurrentPinballGame->bossMovementPhase = 0; } break; case 5: - if (gUnknown_086AF3CC[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gRayquazaAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 63) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 63) { - if (gCurrentPinballGame->unk3E1 < 6) + if (gCurrentPinballGame->bossMovementPhase < 6) { - gCurrentPinballGame->unk3E2 = 13; - gCurrentPinballGame->unk3E1++; + gCurrentPinballGame->bossFramesetIndex = 13; + gCurrentPinballGame->bossMovementPhase++; } - else if (gCurrentPinballGame->unk3DD == 6) + else if (gCurrentPinballGame->bossAttackPhase == 6) { if (gCurrentPinballGame->bonusModeHitCount >= gCurrentPinballGame->legendaryHitsRequired - 1) { - gCurrentPinballGame->unk3E2 = 13; - gCurrentPinballGame->unk3DC = 4; - gCurrentPinballGame->unk3E1 = 0; + gCurrentPinballGame->bossFramesetIndex = 13; + gCurrentPinballGame->bossEntityState = 4; + gCurrentPinballGame->bossMovementPhase = 0; } else { - gCurrentPinballGame->unk3E2 = 98; - gCurrentPinballGame->unk3DC = 6; - gCurrentPinballGame->unk3E1 = 0; + gCurrentPinballGame->bossFramesetIndex = 98; + gCurrentPinballGame->bossEntityState = 6; + gCurrentPinballGame->bossMovementPhase = 0; } } else { - gCurrentPinballGame->unk3E2 = 13; - gCurrentPinballGame->unk3DC = 4; - gCurrentPinballGame->unk3E1 = 0; + gCurrentPinballGame->bossFramesetIndex = 13; + gCurrentPinballGame->bossEntityState = 4; + gCurrentPinballGame->bossMovementPhase = 0; } } } - if (gCurrentPinballGame->unk3E1 > 1) + if (gCurrentPinballGame->bossMovementPhase > 1) { - gCurrentPinballGame->unk512 += 0x80; - gCurrentPinballGame->unk3E8 = ((Sin(gCurrentPinballGame->unk512) * 62) / 20000) * 10; + gCurrentPinballGame->bossSineAngle += 0x80; + gCurrentPinballGame->bossPositionX = ((Sin(gCurrentPinballGame->bossSineAngle) * 62) / 20000) * 10; } break; case 6: - gCurrentPinballGame->unk389 = 2; - if (gUnknown_086AF3CC[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + gCurrentPinballGame->legendaryFlashState = 2; + if (gRayquazaAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 116 && gCurrentPinballGame->unk3E1 < 15) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 116 && gCurrentPinballGame->bossMovementPhase < 15) { - gCurrentPinballGame->unk3E1++; - gCurrentPinballGame->unk3E2 = 114; + gCurrentPinballGame->bossMovementPhase++; + gCurrentPinballGame->bossFramesetIndex = 114; } - if (gCurrentPinballGame->unk3E2 == 131) + if (gCurrentPinballGame->bossFramesetIndex == 131) { - gCurrentPinballGame->unk3E2 = 29; - gCurrentPinballGame->unk3E1 = 0; - gCurrentPinballGame->unk3DC = 5; - gCurrentPinballGame->unk3DD = 4; - gCurrentPinballGame->unk389 = 0; + gCurrentPinballGame->bossFramesetIndex = 29; + gCurrentPinballGame->bossMovementPhase = 0; + gCurrentPinballGame->bossEntityState = 5; + gCurrentPinballGame->bossAttackPhase = 4; + gCurrentPinballGame->legendaryFlashState = 0; } - if (gCurrentPinballGame->unk3E2 == 114) + if (gCurrentPinballGame->bossFramesetIndex == 114) { - if (gCurrentPinballGame->unk3E1 == 0) + if (gCurrentPinballGame->bossMovementPhase == 0) { gMain.spriteGroups[17].available = 1; gMain.spriteGroups[18].available = 1; gMain.spriteGroups[19].available = 1; - gCurrentPinballGame->unk507 = 1; + gCurrentPinballGame->swoopAttackState = 1; } } - if (gCurrentPinballGame->unk3E2 == 120) - gCurrentPinballGame->unk390 = 21; + if (gCurrentPinballGame->bossFramesetIndex == 120) + gCurrentPinballGame->bossRoarTimer = 21; - if (gCurrentPinballGame->unk3E2 == 124) - gCurrentPinballGame->unk50A = 16; + if (gCurrentPinballGame->bossFramesetIndex == 124) + gCurrentPinballGame->roarBrightnessFlashTimer = 16; } break; case 7: - if (gCurrentPinballGame->unk3E4 < 120) + if (gCurrentPinballGame->bossFrameTimer < 120) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3DC = 8; - DmaCopy16(3, gUnknown_084A856C, (void *)0x06015800, 0x1C00); - if (gCurrentPinballGame->unk504 & 1) + gCurrentPinballGame->bossEntityState = 8; + DmaCopy16(3, gRayquazaWindBoardGfx, (void *)0x06015800, 0x1C00); + if (gCurrentPinballGame->windAttackCount & 1) { gMain.spriteGroups[22].available = 1; gMain.spriteGroups[24].available = 1; @@ -502,200 +502,200 @@ void sub_3EDF0(void) gMain.spriteGroups[31].available = 1; } - gCurrentPinballGame->unk504++; - gCurrentPinballGame->unk524.x = 0; - gCurrentPinballGame->unk524.y = 0; - gCurrentPinballGame->unk528.x = 0; - gCurrentPinballGame->unk528.y = 0; - gCurrentPinballGame->unk514 = 0; - gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->windAttackCount++; + gCurrentPinballGame->windEntityPosition.x = 0; + gCurrentPinballGame->windEntityPosition.y = 0; + gCurrentPinballGame->windCloudPosition.x = 0; + gCurrentPinballGame->windCloudPosition.y = 0; + gCurrentPinballGame->windCloudSpawnTimer = 0; + gCurrentPinballGame->bossFrameTimer = 0; m4aSongNumStart(SE_RAYQUAZA_WIND); } break; case 8: if (gMain.spriteGroups[22].available) { - if (gCurrentPinballGame->unk524.x < 4800) - gCurrentPinballGame->unk524.x += 140; + if (gCurrentPinballGame->windEntityPosition.x < 4800) + gCurrentPinballGame->windEntityPosition.x += 140; else gMain.spriteGroups[22].available = 0; - if (gCurrentPinballGame->unk524.x > 2400) + if (gCurrentPinballGame->windEntityPosition.x > 2400) { - if (gCurrentPinballGame->unk528.x < 4960) - gCurrentPinballGame->unk528.x += 200; + if (gCurrentPinballGame->windCloudPosition.x < 4960) + gCurrentPinballGame->windCloudPosition.x += 200; - gCurrentPinballGame->unk514++; + gCurrentPinballGame->windCloudSpawnTimer++; } } else { - if (gCurrentPinballGame->unk524.x > -4800) - gCurrentPinballGame->unk524.x -= 140; + if (gCurrentPinballGame->windEntityPosition.x > -4800) + gCurrentPinballGame->windEntityPosition.x -= 140; else gMain.spriteGroups[23].available = 0; - if (gCurrentPinballGame->unk524.x < -2400) + if (gCurrentPinballGame->windEntityPosition.x < -2400) { - if (gCurrentPinballGame->unk528.x > -4960) - gCurrentPinballGame->unk528.x -= 200; + if (gCurrentPinballGame->windCloudPosition.x > -4960) + gCurrentPinballGame->windCloudPosition.x -= 200; - gCurrentPinballGame->unk514++; + gCurrentPinballGame->windCloudSpawnTimer++; } } - if (gCurrentPinballGame->unk3E4 == 20) - gCurrentPinballGame->unk4C8 = 60; + if (gCurrentPinballGame->bossFrameTimer == 20) + gCurrentPinballGame->impactShakeTimer = 60; - gCurrentPinballGame->unk3E4++; - if (gCurrentPinballGame->unk3E4 >= 200) + gCurrentPinballGame->bossFrameTimer++; + if (gCurrentPinballGame->bossFrameTimer >= 200) { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2 = 13; - gCurrentPinballGame->unk3DC = 3; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex = 13; + gCurrentPinballGame->bossEntityState = 3; } break; case 9: - gCurrentPinballGame->unk294 = 3; + gCurrentPinballGame->boardModeType = 3; if (gCurrentPinballGame->numCompletedBonusStages % 10 == 9) { // Catch Rayquaza - gCurrentPinballGame->unk3DC = 14; - gCurrentPinballGame->unk3E2 = 0; + gCurrentPinballGame->bossEntityState = 14; + gCurrentPinballGame->bossFramesetIndex = 0; gMain.spriteGroups[10].available = 1; gMain.spriteGroups[9].available = 1; gCurrentPinballGame->currentSpecies = SPECIES_RAYQUAZA; - gCurrentPinballGame->unk38E = 0; - gCurrentPinballGame->unk5A8 = 0; - gCurrentPinballGame->unk5A6 = 0; - gCurrentPinballGame->unk5A4 = 2; + gCurrentPinballGame->bossAttackTimer = 0; + gCurrentPinballGame->captureSequenceTimer = 0; + gCurrentPinballGame->captureSequenceFrame = 0; + gCurrentPinballGame->captureState = 2; } else { // Normal Completion - gCurrentPinballGame->unk3DC = 10; - gCurrentPinballGame->unk3E2 = 98; + gCurrentPinballGame->bossEntityState = 10; + gCurrentPinballGame->bossFramesetIndex = 98; gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER; - gCurrentPinballGame->unk388 = 2; - gCurrentPinballGame->unk392 = 0; + gCurrentPinballGame->ballRespawnState = 2; + gCurrentPinballGame->ballRespawnTimer = 0; } - gCurrentPinballGame->unk3E4 = 0; + gCurrentPinballGame->bossFrameTimer = 0; if (gMain.spriteGroups[36].available) - gCurrentPinballGame->unk486 = 1; + gCurrentPinballGame->ballGrabTimer = 1; break; case 10: - if (gUnknown_086AF3CC[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gRayquazaAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 131) + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 131) { - gCurrentPinballGame->unk3E2 = 13; - gCurrentPinballGame->unk3E1 = 0; - gCurrentPinballGame->unk3DC = 11; - gCurrentPinballGame->unk389 = 0; + gCurrentPinballGame->bossFramesetIndex = 13; + gCurrentPinballGame->bossMovementPhase = 0; + gCurrentPinballGame->bossEntityState = 11; + gCurrentPinballGame->legendaryFlashState = 0; } - if (gCurrentPinballGame->unk3E2 == 120) - gCurrentPinballGame->unk390 = 21; + if (gCurrentPinballGame->bossFramesetIndex == 120) + gCurrentPinballGame->bossRoarTimer = 21; } break; case 11: - if (gUnknown_086AF3CC[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) + if (gRayquazaAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer) { - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->bossFrameTimer++; } else { - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3E2++; - if (gCurrentPinballGame->unk3E2 == 34) - gCurrentPinballGame->unk3E2 = 33; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossFramesetIndex++; + if (gCurrentPinballGame->bossFramesetIndex == 34) + gCurrentPinballGame->bossFramesetIndex = 33; } - if (gCurrentPinballGame->unk3E2 == 33) + if (gCurrentPinballGame->bossFramesetIndex == 33) { - if (gCurrentPinballGame->unk3EA > -0x300) + if (gCurrentPinballGame->bossPositionY > -0x300) { - gCurrentPinballGame->unk3EA -= 0x18; - if (gCurrentPinballGame->unk3EA < -0x300) - gCurrentPinballGame->unk3EA = -0x300; + gCurrentPinballGame->bossPositionY -= 0x18; + if (gCurrentPinballGame->bossPositionY < -0x300) + gCurrentPinballGame->bossPositionY = -0x300; } } - if (gCurrentPinballGame->unk3EA == -0x300) + if (gCurrentPinballGame->bossPositionY == -0x300) { - gCurrentPinballGame->unk3E2 = 0; - gCurrentPinballGame->unk3E4 = 0; - gCurrentPinballGame->unk3DC = 12; - gCurrentPinballGame->unk3E1 = 0; + gCurrentPinballGame->bossFramesetIndex = 0; + gCurrentPinballGame->bossFrameTimer = 0; + gCurrentPinballGame->bossEntityState = 12; + gCurrentPinballGame->bossMovementPhase = 0; } break; case 12: - DmaCopy16(3, gUnknown_084AA18C, (void *)0x06011620, 0x860); - gCurrentPinballGame->unk3DC = 13; - gCurrentPinballGame->unk3E8 = 1140; - gCurrentPinballGame->unk3EA = -1200; - gCurrentPinballGame->unk506 = 2; - gCurrentPinballGame->unk516 = 0; - gCurrentPinballGame->unk5FA = 1; + DmaCopy16(3, gRayquazaSpriteSheet, (void *)0x06011620, 0x860); + gCurrentPinballGame->bossEntityState = 13; + gCurrentPinballGame->bossPositionX = 1140; + gCurrentPinballGame->bossPositionY = -1200; + gCurrentPinballGame->introSequencePhase = 2; + gCurrentPinballGame->introFrameCounter = 0; + gCurrentPinballGame->boardEntityActive = 1; gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER; gMain.spriteGroups[14].available = 1; 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; - gCurrentPinballGame->unk414.y = -16; + gCurrentPinballGame->orbCollisionPosition.x = -200; + gCurrentPinballGame->orbCollisionPosition.y = 800; + gCurrentPinballGame->orbLogicPosition.x = 24; + gCurrentPinballGame->orbLogicPosition.y = -16; break; case 13: - if (gCurrentPinballGame->unk516 < 256) + if (gCurrentPinballGame->introFrameCounter < 256) { - if (gCurrentPinballGame->unk3E4 < 80) - gCurrentPinballGame->unk3E4++; - else if (gCurrentPinballGame->unk3EA < 2400) - gCurrentPinballGame->unk3EA += 80; + if (gCurrentPinballGame->bossFrameTimer < 80) + gCurrentPinballGame->bossFrameTimer++; + else if (gCurrentPinballGame->bossPositionY < 2400) + gCurrentPinballGame->bossPositionY += 80; } else { - gCurrentPinballGame->unk13 = 2; - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk3DC = 15; + gCurrentPinballGame->boardState = 2; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->bossEntityState = 15; } break; case 14: - gCurrentPinballGame->unk38C = 1; - if (gCurrentPinballGame->unk38E > -500) + gCurrentPinballGame->bossRenderOffsetY = 1; + if (gCurrentPinballGame->bossAttackTimer > -500) { - gCurrentPinballGame->unk38E += (-500 - gCurrentPinballGame->unk38E) / 30; - gCurrentPinballGame->unkE6 = gCurrentPinballGame->unk38E / 10; - if (gCurrentPinballGame->unkE6 < -38) - gCurrentPinballGame->unkE6 = -38; + gCurrentPinballGame->bossAttackTimer += (-500 - gCurrentPinballGame->bossAttackTimer) / 30; + gCurrentPinballGame->cameraYAdjust = gCurrentPinballGame->bossAttackTimer / 10; + if (gCurrentPinballGame->cameraYAdjust < -38) + gCurrentPinballGame->cameraYAdjust = -38; } break; case 15: break; } - if (gCurrentPinballGame->unk390) + if (gCurrentPinballGame->bossRoarTimer) { - gCurrentPinballGame->unk390--; - if (gCurrentPinballGame->unk390 == 20) - PlayCry_Normal(gSpeciesInfo[SPECIES_RAYQUAZA].mainSeriesIndexNumber, 0); + gCurrentPinballGame->bossRoarTimer--; + if (gCurrentPinballGame->bossRoarTimer == 20) + PlayCry_Normal(gSpeciesInfo[SPECIES_RAYQUAZA].speciesIdRS, 0); - if (gCurrentPinballGame->unk390 == 0) + if (gCurrentPinballGame->bossRoarTimer == 0) m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x100); } } -void sub_3FAE0(void) +void RenderRayquazaSprites(void) { s16 i; s16 sp0; @@ -714,8 +714,8 @@ void sub_3FAE0(void) group = &gMain.spriteGroups[43]; if (group->available) { - group->baseX = gCurrentPinballGame->unk3E8 / 10; - group->baseY = gCurrentPinballGame->unk3EA / 10; + group->baseX = gCurrentPinballGame->bossPositionX / 10; + group->baseY = gCurrentPinballGame->bossPositionY / 10; for (i = 0; i < 14; i++) { oamSimple = &group->oam[i]; @@ -736,8 +736,8 @@ void sub_3FAE0(void) group = &gMain.spriteGroups[42]; if (group->available) { - group->baseX = gCurrentPinballGame->unk3E8 / 10; - group->baseY = gCurrentPinballGame->unk3EA / 10; + group->baseX = gCurrentPinballGame->bossPositionX / 10; + group->baseY = gCurrentPinballGame->bossPositionY / 10; for (i = 0; i < 14; i++) { oamSimple = &group->oam[i]; @@ -754,7 +754,7 @@ void sub_3FAE0(void) } } - if (gCurrentPinballGame->unk516 == 671) + if (gCurrentPinballGame->introFrameCounter == 671) { group->available = 0; gMain.spriteGroups[41].available = 1; @@ -766,19 +766,19 @@ void sub_3FAE0(void) group = &gMain.spriteGroups[41]; if (group->available) { - group->baseX = gCurrentPinballGame->unk3E8 / 10 - (gCurrentPinballGame->unk58 - 88); - group->baseY = gCurrentPinballGame->unk3EA / 10 - (gCurrentPinballGame->unk5A - 78); - gCurrentPinballGame->unk288 = gCurrentPinballGame->unk3E8 / 10 + 116; - gCurrentPinballGame->unk28A = gCurrentPinballGame->unk3EA / 10 + 60; - if (gCurrentPinballGame->unk51A > 91) + group->baseX = gCurrentPinballGame->bossPositionX / 10 - (gCurrentPinballGame->cameraXOffset - 88); + group->baseY = gCurrentPinballGame->bossPositionY / 10 - (gCurrentPinballGame->cameraYOffset - 78); + gCurrentPinballGame->catchTargetX = gCurrentPinballGame->bossPositionX / 10 + 116; + gCurrentPinballGame->catchTargetY = gCurrentPinballGame->bossPositionY / 10 + 60; + if (gCurrentPinballGame->bossHeadScreenY > 91) { - gCurrentPinballGame->unk3F0 = (gCurrentPinballGame->unk3E8 / 10) * 2 + 172; - gCurrentPinballGame->unk3F2 = (gCurrentPinballGame->unk3EA / 10) * 2 + 184; + gCurrentPinballGame->bossCollisionX = (gCurrentPinballGame->bossPositionX / 10) * 2 + 172; + gCurrentPinballGame->bossCollisionY = (gCurrentPinballGame->bossPositionY / 10) * 2 + 184; } else { - gCurrentPinballGame->unk3F0 = 0; - gCurrentPinballGame->unk3F2 = -160; + gCurrentPinballGame->bossCollisionX = 0; + gCurrentPinballGame->bossCollisionY = -160; } if (group->baseY < -70) @@ -786,8 +786,8 @@ void sub_3FAE0(void) if (group->baseY > 180) group->baseY = 180; - var1 = gUnknown_086AF3CC[gCurrentPinballGame->unk3E2][0]; - if (gCurrentPinballGame->unk389 > 9) + var1 = gRayquazaAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][0]; + if (gCurrentPinballGame->legendaryFlashState > 9) { sp0 = 11; oamSimple = &group->oam[0]; @@ -797,47 +797,47 @@ void sub_3FAE0(void) } else { - if (gCurrentPinballGame->unk389 == 1) + if (gCurrentPinballGame->legendaryFlashState == 1) { varSL = 2; sp0 = 14; } - else if (gCurrentPinballGame->unk389 == 3) + else if (gCurrentPinballGame->legendaryFlashState == 3) { varSL = 2; sp0 = 11; } else { - varSL = gCurrentPinballGame->unk3DF; + varSL = gCurrentPinballGame->bossVulnerable; sp0 = 15; } - if (gCurrentPinballGame->unk5A8 == 21) + if (gCurrentPinballGame->captureSequenceTimer == 21) varSL = 8; - if (gCurrentPinballGame->unk5A8 == 22) + if (gCurrentPinballGame->captureSequenceTimer == 22) varSL = 9; oamSimple = &group->oam[0]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B612E[var1]; + src = gRayquazaMainBodyOamData[var1]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; y = gOamBuffer[oamSimple->oamId].y; - gCurrentPinballGame->unk51A = (y + 78u) + (gCurrentPinballGame->unk3EA / 10); + gCurrentPinballGame->bossHeadScreenY = (y + 78u) + (gCurrentPinballGame->bossPositionY / 10); gOamBuffer[oamSimple->oamId].x += group->baseX; gOamBuffer[oamSimple->oamId].y += group->baseY; - if (gCurrentPinballGame->unk389 < 2) + if (gCurrentPinballGame->legendaryFlashState < 2) gOamBuffer[oamSimple->oamId].paletteNum = sp0; else sp0 = gOamBuffer[oamSimple->oamId].paletteNum; } - gCurrentPinballGame->unk3DF = gUnknown_086AF3CC[gCurrentPinballGame->unk3E2][2]; - DmaCopy16(3, gUnknown_084AA9EC[varSL], (void *)0x06011620, 0x800); + gCurrentPinballGame->bossVulnerable = gRayquazaAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][2]; + DmaCopy16(3, gRayquazaBodyVariantTiles[varSL], (void *)0x06011620, 0x800); } group = &gMain.spriteGroups[21]; @@ -851,8 +851,8 @@ void sub_3FAE0(void) } else if (varSL >= 6) { - group->baseX = gCurrentPinballGame->unk3E8 / 10 - (gCurrentPinballGame->unk58 - 88); - group->baseY = gCurrentPinballGame->unk3EA / 10 - gCurrentPinballGame->unk5A + 96; + group->baseX = gCurrentPinballGame->bossPositionX / 10 - (gCurrentPinballGame->cameraXOffset - 88); + group->baseY = gCurrentPinballGame->bossPositionY / 10 - gCurrentPinballGame->cameraYOffset + 96; varSL -= 6; } else @@ -874,19 +874,19 @@ void sub_3FAE0(void) group = &gMain.spriteGroups[45]; if (group->available) { - s16 var2 = (gCurrentPinballGame->unk51A - 70) / 3 + 1; + s16 var2 = (gCurrentPinballGame->bossHeadScreenY - 70) / 3 + 1; if (var2 < 0) var2 = 0; else if (var2 > 9) var2 = 9; - if (gCurrentPinballGame->unk3DC != 14) + if (gCurrentPinballGame->bossEntityState != 14) { - if (gCurrentPinballGame->unk50A > 0) + if (gCurrentPinballGame->roarBrightnessFlashTimer > 0) { gMain.blendControl = 0x9E; - gMain.blendBrightness = gCurrentPinballGame->unk50A; - gCurrentPinballGame->unk50A--; + gMain.blendBrightness = gCurrentPinballGame->roarBrightnessFlashTimer; + gCurrentPinballGame->roarBrightnessFlashTimer--; } else { @@ -898,13 +898,13 @@ void sub_3FAE0(void) } } - group->baseX = gCurrentPinballGame->unk3E8 / 10 - (gCurrentPinballGame->unk58 - 88); - group->baseY = gCurrentPinballGame->unk3EA / 10 - (gCurrentPinballGame->unk5A - 78) + 36 + var2; + group->baseX = gCurrentPinballGame->bossPositionX / 10 - (gCurrentPinballGame->cameraXOffset - 88); + group->baseY = gCurrentPinballGame->bossPositionY / 10 - (gCurrentPinballGame->cameraYOffset - 78) + 36 + var2; oamSimple = &group->oam[0]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; - if (gCurrentPinballGame->unk3DC == 12) + if (gCurrentPinballGame->bossEntityState == 12) { gMain.spriteGroups[43].available = 1; gMain.spriteGroups[41].available = 0; @@ -912,7 +912,7 @@ void sub_3FAE0(void) gMain.spriteGroups[21].available = 0; } - if (gCurrentPinballGame->unk5A8 == 21) + if (gCurrentPinballGame->captureSequenceTimer == 21) { gMain.spriteGroups[45].available = 0; gMain.spriteGroups[21].available = 0; @@ -921,7 +921,7 @@ void sub_3FAE0(void) } } -void sub_40288(void) +void UpdateRayquazaMinionsAndEffects(void) { s16 sp0; s16 sp4; @@ -945,7 +945,7 @@ void sub_40288(void) group = &gMain.spriteGroups[10]; if (group->available) { - if (gCurrentPinballGame->unk6C4 == 3) + if (gCurrentPinballGame->portraitDisplayState == 3) { group->baseX = 240; group->baseY = 180; @@ -956,8 +956,8 @@ void sub_40288(void) group->baseY = 55; } - gCurrentPinballGame->unk6E4.x = group->baseX; - gCurrentPinballGame->unk6E4.y = group->baseY; + gCurrentPinballGame->rouletteBasePos.x = group->baseX; + gCurrentPinballGame->rouletteBasePos.y = group->baseY; if (group->baseY >= 200) group->baseY = 200; @@ -965,137 +965,137 @@ void sub_40288(void) { oamSimple = &group->oam[j]; gOamBuffer[oamSimple->oamId].paletteNum = 13; - gOamBuffer[oamSimple->oamId].priority = gCurrentPinballGame->unk6DB; + gOamBuffer[oamSimple->oamId].priority = gCurrentPinballGame->creatureOamPriority; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } group = &gMain.spriteGroups[9]; - group->baseX = gCurrentPinballGame->unk6E4.x - 8; - group->baseY = gCurrentPinballGame->unk6E4.y - 8; + group->baseX = gCurrentPinballGame->rouletteBasePos.x - 8; + group->baseY = gCurrentPinballGame->rouletteBasePos.y - 8; if (group->baseY >= 200) group->baseY = 200; for (j = 0; j < 6; j++) { oamSimple = &group->oam[j]; - gOamBuffer[oamSimple->oamId].priority = gCurrentPinballGame->unk6DB; + gOamBuffer[oamSimple->oamId].priority = gCurrentPinballGame->creatureOamPriority; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } } - sub_41580(); - switch (gCurrentPinballGame->unk507) + UpdateWhirlwindGrabEntity(); + switch (gCurrentPinballGame->swoopAttackState) { case 0: - gCurrentPinballGame->unk510 = 0; + gCurrentPinballGame->swoopAttackAnimFrame = 0; var0 = 7; sp4 = 12; sp8 = 5; break; case 1: - if (gCurrentPinballGame->unk510 == 0) + if (gCurrentPinballGame->swoopAttackAnimFrame == 0) m4aSongNumStart(SE_UNKNOWN_0x128); - if (gCurrentPinballGame->unk510 == 8) + if (gCurrentPinballGame->swoopAttackAnimFrame == 8) m4aSongNumStop(SE_UNKNOWN_0x128); - if (gCurrentPinballGame->unk510 == 24) + if (gCurrentPinballGame->swoopAttackAnimFrame == 24) m4aSongNumStart(SE_UNKNOWN_0x128); - if (gCurrentPinballGame->unk510 == 36) + if (gCurrentPinballGame->swoopAttackAnimFrame == 36) m4aSongNumStop(SE_UNKNOWN_0x128); - if (gCurrentPinballGame->unk510 == 50) + if (gCurrentPinballGame->swoopAttackAnimFrame == 50) m4aSongNumStart(SE_UNKNOWN_0x128); - if (gCurrentPinballGame->unk510 == 56) + if (gCurrentPinballGame->swoopAttackAnimFrame == 56) m4aSongNumStop(SE_UNKNOWN_0x128); - if (gCurrentPinballGame->unk510 < 14) - var0 = gCurrentPinballGame->unk510 / 2; - else if (gCurrentPinballGame->unk510 < 42) + if (gCurrentPinballGame->swoopAttackAnimFrame < 14) + var0 = gCurrentPinballGame->swoopAttackAnimFrame / 2; + else if (gCurrentPinballGame->swoopAttackAnimFrame < 42) var0 = 7; - else if (gCurrentPinballGame->unk510 < 56) - var0 = (gCurrentPinballGame->unk510 - 42) / 2; - else if (gCurrentPinballGame->unk510 < 61) + else if (gCurrentPinballGame->swoopAttackAnimFrame < 56) + var0 = (gCurrentPinballGame->swoopAttackAnimFrame - 42) / 2; + else if (gCurrentPinballGame->swoopAttackAnimFrame < 61) var0 = 7; else - var0 = (gCurrentPinballGame->unk510 - 61) / 2; + var0 = (gCurrentPinballGame->swoopAttackAnimFrame - 61) / 2; - if (gCurrentPinballGame->unk510 < 8) - sp4 = gCurrentPinballGame->unk510 / 2; - else if (gCurrentPinballGame->unk510 < 48) + if (gCurrentPinballGame->swoopAttackAnimFrame < 8) + sp4 = gCurrentPinballGame->swoopAttackAnimFrame / 2; + else if (gCurrentPinballGame->swoopAttackAnimFrame < 48) sp4 = 12; - else if (gCurrentPinballGame->unk510 < 64) - sp4 = (gCurrentPinballGame->unk510 - 48) / 2 + 4; + else if (gCurrentPinballGame->swoopAttackAnimFrame < 64) + sp4 = (gCurrentPinballGame->swoopAttackAnimFrame - 48) / 2 + 4; else sp4 = 12; sp8 = 5; - gCurrentPinballGame->unk510++; - if (gCurrentPinballGame->unk510 == 75) + gCurrentPinballGame->swoopAttackAnimFrame++; + if (gCurrentPinballGame->swoopAttackAnimFrame == 75) { - gCurrentPinballGame->unk510 = 0; - gCurrentPinballGame->unk507 = 2; + gCurrentPinballGame->swoopAttackAnimFrame = 0; + gCurrentPinballGame->swoopAttackState = 2; } break; case 2: var0 = 7; sp4 = 12; sp8 = 5; - if (gCurrentPinballGame->unk510 < 34) + if (gCurrentPinballGame->swoopAttackAnimFrame < 34) { - gCurrentPinballGame->unk510++; - if (gCurrentPinballGame->unk510 == 28) + gCurrentPinballGame->swoopAttackAnimFrame++; + if (gCurrentPinballGame->swoopAttackAnimFrame == 28) { - if (gCurrentPinballGame->unk388) + if (gCurrentPinballGame->ballRespawnState) { - gCurrentPinballGame->unk51C.x = 200 - (Random() % 160); - gCurrentPinballGame->unk51C.y = gCurrentPinballGame->ball->positionQ0.y - 347 - (Random() % 80); + gCurrentPinballGame->swoopTargetPosition.x = 200 - (Random() % 160); + gCurrentPinballGame->swoopTargetPosition.y = gCurrentPinballGame->ball->positionQ0.y - 347 - (Random() % 80); } else { - gCurrentPinballGame->unk51C.x = gCurrentPinballGame->ball->positionQ0.x - 13; - gCurrentPinballGame->unk51C.y = gCurrentPinballGame->ball->positionQ0.y - 347; + gCurrentPinballGame->swoopTargetPosition.x = gCurrentPinballGame->ball->positionQ0.x - 13; + gCurrentPinballGame->swoopTargetPosition.y = gCurrentPinballGame->ball->positionQ0.y - 347; } } } else { - gCurrentPinballGame->unk510 = 0; - gCurrentPinballGame->unk507 = 3; + gCurrentPinballGame->swoopAttackAnimFrame = 0; + gCurrentPinballGame->swoopAttackState = 3; m4aSongNumStart(SE_RAYQUAZA_FLYBY); } break; case 3: var0 = 7; sp4 = 12; - if (gCurrentPinballGame->unk510 < 2) + if (gCurrentPinballGame->swoopAttackAnimFrame < 2) { - sp8 = gCurrentPinballGame->unk510; + sp8 = gCurrentPinballGame->swoopAttackAnimFrame; } - else if (gCurrentPinballGame->unk510 < 10) + else if (gCurrentPinballGame->swoopAttackAnimFrame < 10) { - sp8 = (gCurrentPinballGame->unk510 - 2) / 2 + 2; - gCurrentPinballGame->unk508 = sp4; + sp8 = (gCurrentPinballGame->swoopAttackAnimFrame - 2) / 2 + 2; + gCurrentPinballGame->horizontalShakeTimer = sp4; if (sp8 == 2) { int a = 13; int b = 347; - tempVector.x = gCurrentPinballGame->ball->positionQ0.x - a - gCurrentPinballGame->unk51C.x; - tempVector.y = gCurrentPinballGame->ball->positionQ0.y - b - gCurrentPinballGame->unk51C.y; + tempVector.x = gCurrentPinballGame->ball->positionQ0.x - a - gCurrentPinballGame->swoopTargetPosition.x; + tempVector.y = gCurrentPinballGame->ball->positionQ0.y - b - gCurrentPinballGame->swoopTargetPosition.y; xx = tempVector.x * tempVector.x; yy = tempVector.y * tempVector.y; squaredMagnitude = xx + yy; PlayRumble(8); - if (gCurrentPinballGame->unk441[0] < 3 && gCurrentPinballGame->unk441[1] < 3 && - gCurrentPinballGame->unk388 == 0 && squaredMagnitude < 200) + if (gCurrentPinballGame->orbEntityState[0] < 3 && gCurrentPinballGame->orbEntityState[1] < 3 && + gCurrentPinballGame->ballRespawnState == 0 && squaredMagnitude < 200) { gMain.spriteGroups[36].available = 1; - gCurrentPinballGame->unk486 = 600; + gCurrentPinballGame->ballGrabTimer = 600; m4aSongNumStart(SE_UNKNOWN_0x12A); PlayRumble(9); } @@ -1104,14 +1104,14 @@ void sub_40288(void) else { sp8 = 5; - gCurrentPinballGame->unk507 = 4; + gCurrentPinballGame->swoopAttackState = 4; } - gCurrentPinballGame->unk510++; + gCurrentPinballGame->swoopAttackAnimFrame++; break; case 4: - gCurrentPinballGame->unk510 = 0; - gCurrentPinballGame->unk507 = 0; + gCurrentPinballGame->swoopAttackAnimFrame = 0; + gCurrentPinballGame->swoopAttackState = 0; break; } @@ -1119,13 +1119,13 @@ void sub_40288(void) if (group->available) { // ! odd behavior in the assembly with the addition and subtraction - group->baseX = gCurrentPinballGame->unk3E8 / 10 - (gCurrentPinballGame->unk58 - 88); - group->baseY = gCurrentPinballGame->unk3EA / 10 - gCurrentPinballGame->unk5A + 96; + group->baseX = gCurrentPinballGame->bossPositionX / 10 - (gCurrentPinballGame->cameraXOffset - 88); + group->baseY = gCurrentPinballGame->bossPositionY / 10 - gCurrentPinballGame->cameraYOffset + 96; for (j = 0; j < 3; j++) { oamSimple = &group->oam[j]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B609E[var0][j]; + src = gRayquazaHeadOamData[var0][j]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -1134,20 +1134,20 @@ void sub_40288(void) gOamBuffer[oamSimple->oamId].y += group->baseY; } - if (gCurrentPinballGame->unk507 == 4) + if (gCurrentPinballGame->swoopAttackState == 4) gMain.spriteGroups[17].available = 0; } group = &gMain.spriteGroups[18]; if (group->available) { - group->baseX = gCurrentPinballGame->unk3E8 / 10 - (gCurrentPinballGame->unk58 - 88); - group->baseY = gCurrentPinballGame->unk3EA / 10 - gCurrentPinballGame->unk5A + 96; + group->baseX = gCurrentPinballGame->bossPositionX / 10 - (gCurrentPinballGame->cameraXOffset - 88); + group->baseY = gCurrentPinballGame->bossPositionY / 10 - gCurrentPinballGame->cameraYOffset + 96; for (j = 0; j < 6; j++) { oamSimple = &group->oam[j]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B5ECA[sp4][j]; + src = gRayquazaNeckSegmentOamData[sp4][j]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -1156,20 +1156,20 @@ void sub_40288(void) gOamBuffer[oamSimple->oamId].y += group->baseY; } - if (gCurrentPinballGame->unk507 == 4) + if (gCurrentPinballGame->swoopAttackState == 4) gMain.spriteGroups[18].available = 0; } group = &gMain.spriteGroups[19]; if (group->available) { - group->baseX = gCurrentPinballGame->unk51C.x - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk51C.y - gCurrentPinballGame->unk5A; + group->baseX = gCurrentPinballGame->swoopTargetPosition.x - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->swoopTargetPosition.y - gCurrentPinballGame->cameraYOffset; for (j = 0; j < 7; j++) { oamSimple = &group->oam[j]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B5DCE[sp8][j]; + src = gRayquazaSwoopAttackOamData[sp8][j]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -1186,15 +1186,15 @@ void sub_40288(void) } } - if (gCurrentPinballGame->unk507 == 4) + if (gCurrentPinballGame->swoopAttackState == 4) gMain.spriteGroups[19].available = 0; } group = &gMain.spriteGroups[22]; if (group->available) { - group->baseX = gCurrentPinballGame->unk524.x / 10 - (gCurrentPinballGame->unk58 + 120); - group->baseY = gCurrentPinballGame->unk524.y / 10 - (gCurrentPinballGame->unk5A - 128); + group->baseX = gCurrentPinballGame->windEntityPosition.x / 10 - (gCurrentPinballGame->cameraXOffset + 120); + group->baseY = gCurrentPinballGame->windEntityPosition.y / 10 - (gCurrentPinballGame->cameraYOffset - 128); for (j = 0; j < 18; j++) { oamSimple = &group->oam[j]; @@ -1206,8 +1206,8 @@ void sub_40288(void) group = &gMain.spriteGroups[23]; if (group->available) { - group->baseX = gCurrentPinballGame->unk524.x / 10 - (gCurrentPinballGame->unk58 - 360); - group->baseY = gCurrentPinballGame->unk524.y / 10 - (gCurrentPinballGame->unk5A - 128); + group->baseX = gCurrentPinballGame->windEntityPosition.x / 10 - (gCurrentPinballGame->cameraXOffset - 360); + group->baseY = gCurrentPinballGame->windEntityPosition.y / 10 - (gCurrentPinballGame->cameraYOffset - 128); for (j = 0; j < 18; j++) { oamSimple = &group->oam[j]; @@ -1216,7 +1216,7 @@ void sub_40288(void) } } - if (gCurrentPinballGame->unk38C > 0) + if (gCurrentPinballGame->bossRenderOffsetY > 0) gCurrentPinballGame->ball->oamPriority = 1; else gCurrentPinballGame->ball->oamPriority = 2; @@ -1224,27 +1224,27 @@ void sub_40288(void) for (i = 0; i < 2; i++) { group = &gMain.spriteGroups[15 + i]; - switch (gCurrentPinballGame->unk441[i]) + switch (gCurrentPinballGame->orbEntityState[i]) { case 0: sp0 = 0; - gCurrentPinballGame->unk45C[i].x = 0; - gCurrentPinballGame->unk45C[i].y = 0; + gCurrentPinballGame->orbScreenPosition[i].x = 0; + gCurrentPinballGame->orbScreenPosition[i].y = 0; break; case 1: - sp0 = gCurrentPinballGame->unk458[i] / 5 + 1; - if (gCurrentPinballGame->unk458[i] < 14) + sp0 = gCurrentPinballGame->orbAnimTimer[i] / 5 + 1; + if (gCurrentPinballGame->orbAnimTimer[i] < 14) { - gCurrentPinballGame->unk458[i]++; + gCurrentPinballGame->orbAnimTimer[i]++; } else { - gCurrentPinballGame->unk458[i] = 0; - gCurrentPinballGame->unk441[i] = 2; + gCurrentPinballGame->orbAnimTimer[i] = 0; + gCurrentPinballGame->orbEntityState[i] = 2; } break; case 2: - sp0 = gCurrentPinballGame->unk458[i] % 16; + sp0 = gCurrentPinballGame->orbAnimTimer[i] % 16; if (sp0 < 4) sp0 = 4; else if (sp0 < 10) @@ -1252,59 +1252,59 @@ void sub_40288(void) else sp0 = 6; - if (gCurrentPinballGame->unk441[i] < 3) + if (gCurrentPinballGame->orbEntityState[i] < 3) { s16 angle = (((gMain.systemFrameCount + 120 * i) % 240) << 0x10) / 240; - gCurrentPinballGame->unk45C[i].x = gCurrentPinballGame->unk464[i].x + (Cos(angle) * 4) / 2000; - gCurrentPinballGame->unk45C[i].y = gCurrentPinballGame->unk464[i].y + (Sin(angle) * 4) / 2000; + gCurrentPinballGame->orbScreenPosition[i].x = gCurrentPinballGame->orbOrbitCenter[i].x + (Cos(angle) * 4) / 2000; + gCurrentPinballGame->orbScreenPosition[i].y = gCurrentPinballGame->orbOrbitCenter[i].y + (Sin(angle) * 4) / 2000; - tempVector.x = gCurrentPinballGame->ball->positionQ0.x - (gCurrentPinballGame->unk45C[i].x / 10) - 16; - tempVector.y = gCurrentPinballGame->ball->positionQ0.y - (gCurrentPinballGame->unk45C[i].y / 10) - 32;; + tempVector.x = gCurrentPinballGame->ball->positionQ0.x - (gCurrentPinballGame->orbScreenPosition[i].x / 10) - 16; + tempVector.y = gCurrentPinballGame->ball->positionQ0.y - (gCurrentPinballGame->orbScreenPosition[i].y / 10) - 32;; xx = tempVector.x * tempVector.x; yy = tempVector.y * tempVector.y; squaredMagnitude = xx + yy; - if (gCurrentPinballGame->unk383 == 0 && gCurrentPinballGame->unk388 == 0 && + if (gCurrentPinballGame->ballGrabbed == 0 && gCurrentPinballGame->ballRespawnState == 0 && gCurrentPinballGame->bonusModeHitCount < gCurrentPinballGame->legendaryHitsRequired && - gCurrentPinballGame->unk452 == 0 && squaredMagnitude < 300) + gCurrentPinballGame->bossHitFlashTimer == 0 && squaredMagnitude < 300) { - gCurrentPinballGame->unk486 = 6; - gCurrentPinballGame->unk1F = 1; - gCurrentPinballGame->unk458[i] = 0; - gCurrentPinballGame->unk441[i] = 3; - gCurrentPinballGame->unk5FA = 1; + gCurrentPinballGame->ballGrabTimer = 6; + gCurrentPinballGame->ballFrozenState = 1; + gCurrentPinballGame->orbAnimTimer[i] = 0; + gCurrentPinballGame->orbEntityState[i] = 3; + gCurrentPinballGame->boardEntityActive = 1; - tempVector2.x = gCurrentPinballGame->unk45C[i].x / 10 + 16; - tempVector2.y = gCurrentPinballGame->unk45C[i].y / 10 + 32; + tempVector2.x = gCurrentPinballGame->orbScreenPosition[i].x / 10 + 16; + tempVector2.y = gCurrentPinballGame->orbScreenPosition[i].y / 10 + 32; tempVector.x = (tempVector2.x << 8) - gCurrentPinballGame->ball->positionQ8.x; tempVector.y = (tempVector2.y << 8) - gCurrentPinballGame->ball->positionQ8.y; - gCurrentPinballGame->unk5AC = (tempVector.x * tempVector.x) + (tempVector.y * tempVector.y); - gCurrentPinballGame->unk5AC = Sqrt(gCurrentPinballGame->unk5AC * 4) / 2; - gCurrentPinballGame->unk5B0 = ArcTan2(-tempVector.x, tempVector.y); + gCurrentPinballGame->trapSpinRadius = (tempVector.x * tempVector.x) + (tempVector.y * tempVector.y); + gCurrentPinballGame->trapSpinRadius = Sqrt(gCurrentPinballGame->trapSpinRadius * 4) / 2; + gCurrentPinballGame->trapAngleQ16 = ArcTan2(-tempVector.x, tempVector.y); - gCurrentPinballGame->unk505 = i + 1; - gCurrentPinballGame->unk520.x = gCurrentPinballGame->unk45C[i].x; - gCurrentPinballGame->unk520.y = gCurrentPinballGame->unk45C[i].y; + gCurrentPinballGame->orbHitIndex = i + 1; + gCurrentPinballGame->orbHitPosition.x = gCurrentPinballGame->orbScreenPosition[i].x; + gCurrentPinballGame->orbHitPosition.y = gCurrentPinballGame->orbScreenPosition[i].y; m4aSongNumStart(SE_UNKNOWN_0x12B); PlayRumble(13); } } - if (gCurrentPinballGame->unk458[i] < 840) + if (gCurrentPinballGame->orbAnimTimer[i] < 840) { - gCurrentPinballGame->unk458[i]++; + gCurrentPinballGame->orbAnimTimer[i]++; } else { - gCurrentPinballGame->unk458[i] = 0; - gCurrentPinballGame->unk441[i] = 5; + gCurrentPinballGame->orbAnimTimer[i] = 0; + gCurrentPinballGame->orbEntityState[i] = 5; } break; case 3: { s16 var4; int var5; - sp0 = gCurrentPinballGame->unk458[i] % 16; + sp0 = gCurrentPinballGame->orbAnimTimer[i] % 16; if (sp0 < 4) sp0 = 4; else if (sp0 < 10) @@ -1312,81 +1312,81 @@ void sub_40288(void) else sp0 = 6; - var4 = 29 - gCurrentPinballGame->unk458[i]; + var4 = 29 - gCurrentPinballGame->orbAnimTimer[i]; if (var4 < 10) var4 = 10; - gCurrentPinballGame->unk5B0 -= ((0x2000 - (var4 * 0x2000) / 30) * 2) / 5; - gCurrentPinballGame->ball->unkA -= 0x2000; - var5 = (gCurrentPinballGame->unk5AC * var4) / 30; - tempVector2.x = gCurrentPinballGame->unk45C[i].x / 10 + 16; - tempVector2.y = gCurrentPinballGame->unk45C[i].y / 10 + 32; - gCurrentPinballGame->ball->positionQ8.x = (tempVector2.x << 8) + ((Cos(gCurrentPinballGame->unk5B0) * var5) / 20000); - gCurrentPinballGame->ball->positionQ8.y = (tempVector2.y << 8) - ((Sin(gCurrentPinballGame->unk5B0) * var5) / 20000); + gCurrentPinballGame->trapAngleQ16 -= ((0x2000 - (var4 * 0x2000) / 30) * 2) / 5; + gCurrentPinballGame->ball->spinAngle -= 0x2000; + var5 = (gCurrentPinballGame->trapSpinRadius * var4) / 30; + tempVector2.x = gCurrentPinballGame->orbScreenPosition[i].x / 10 + 16; + tempVector2.y = gCurrentPinballGame->orbScreenPosition[i].y / 10 + 32; + gCurrentPinballGame->ball->positionQ8.x = (tempVector2.x << 8) + ((Cos(gCurrentPinballGame->trapAngleQ16) * var5) / 20000); + gCurrentPinballGame->ball->positionQ8.y = (tempVector2.y << 8) - ((Sin(gCurrentPinballGame->trapAngleQ16) * var5) / 20000); gCurrentPinballGame->ball->velocity.x = (gCurrentPinballGame->ball->velocity.x * 4) / 5; gCurrentPinballGame->ball->velocity.y = (gCurrentPinballGame->ball->velocity.y * 4) / 5; - if (gCurrentPinballGame->unk38C < 1800) + if (gCurrentPinballGame->bossRenderOffsetY < 1800) { - gCurrentPinballGame->unk38A = 0; - gCurrentPinballGame->unk38C += 32; + gCurrentPinballGame->rayquazaOrbAngle = 0; + gCurrentPinballGame->bossRenderOffsetY += 32; } - if (gCurrentPinballGame->unk458[i] < 180) + if (gCurrentPinballGame->orbAnimTimer[i] < 180) { - gCurrentPinballGame->unk458[i]++; + gCurrentPinballGame->orbAnimTimer[i]++; } else { - gCurrentPinballGame->unk458[i] = 0; - gCurrentPinballGame->unk441[i] = 4; - gCurrentPinballGame->unk5AC /= 2; + gCurrentPinballGame->orbAnimTimer[i] = 0; + gCurrentPinballGame->orbEntityState[i] = 4; + gCurrentPinballGame->trapSpinRadius /= 2; gCurrentPinballGame->ball->positionQ8.y = 0xA500; } break; } case 4: - if (gCurrentPinballGame->unk458[i] < 130) + if (gCurrentPinballGame->orbAnimTimer[i] < 130) { - if (gCurrentPinballGame->unk458[i] == 10) + if (gCurrentPinballGame->orbAnimTimer[i] == 10) m4aSongNumStart(SE_UNKNOWN_0x12C); - gCurrentPinballGame->unk38A--; - gCurrentPinballGame->unk38C += gCurrentPinballGame->unk38A; - if (gCurrentPinballGame->unk38C <= 0) + gCurrentPinballGame->rayquazaOrbAngle--; + gCurrentPinballGame->bossRenderOffsetY += gCurrentPinballGame->rayquazaOrbAngle; + if (gCurrentPinballGame->bossRenderOffsetY <= 0) { - gCurrentPinballGame->unk38C = 0; - gCurrentPinballGame->ball->velocity.y = -((gCurrentPinballGame->unk38A * 0x80) / 10) / 2; - gCurrentPinballGame->unk1F = 0; - gCurrentPinballGame->unk458[i] = 0; + gCurrentPinballGame->bossRenderOffsetY = 0; + gCurrentPinballGame->ball->velocity.y = -((gCurrentPinballGame->rayquazaOrbAngle * 0x80) / 10) / 2; + gCurrentPinballGame->ballFrozenState = 0; + gCurrentPinballGame->orbAnimTimer[i] = 0; gCurrentPinballGame->ball->velocity.x = 0; - gCurrentPinballGame->unk441[i] = 0; - gCurrentPinballGame->unk5FA = 0; + gCurrentPinballGame->orbEntityState[i] = 0; + gCurrentPinballGame->boardEntityActive = 0; PlayRumble(8); } - gCurrentPinballGame->unk458[i]++; + gCurrentPinballGame->orbAnimTimer[i]++; } break; case 5: - sp0 = gCurrentPinballGame->unk458[i] / 6 + 7; - if (gCurrentPinballGame->unk458[i] < 11) + sp0 = gCurrentPinballGame->orbAnimTimer[i] / 6 + 7; + if (gCurrentPinballGame->orbAnimTimer[i] < 11) { - gCurrentPinballGame->unk458[i]++; + gCurrentPinballGame->orbAnimTimer[i]++; } else { - gCurrentPinballGame->unk458[i] = 0; - gCurrentPinballGame->unk441[i] = 0; + gCurrentPinballGame->orbAnimTimer[i] = 0; + gCurrentPinballGame->orbEntityState[i] = 0; } break; } if (group->available) { - DmaCopy16(3, gUnknown_084A6EEC[sp0], (void *)0x06011EA0, 0x280); - group->baseX = gCurrentPinballGame->unk45C[i].x / 10 - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk45C[i].y / 10 - gCurrentPinballGame->unk5A; + DmaCopy16(3, gRayquazaMinionOrbFrames[sp0], (void *)0x06011EA0, 0x280); + group->baseX = gCurrentPinballGame->orbScreenPosition[i].x / 10 - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->orbScreenPosition[i].y / 10 - gCurrentPinballGame->cameraYOffset; for (j = 0; j < 2; j++) { oamSimple = &group->oam[j]; @@ -1394,27 +1394,27 @@ void sub_40288(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - if (gCurrentPinballGame->unk441[i] == 0) + if (gCurrentPinballGame->orbEntityState[i] == 0) group->available = 0; - if (gCurrentPinballGame->unk505 && i == (gCurrentPinballGame->unk505 - 1)) + if (gCurrentPinballGame->orbHitIndex && i == (gCurrentPinballGame->orbHitIndex - 1)) group->available = 0; } } - sub_417F8(); + RenderWindCloudSprites(); group = &gMain.spriteGroups[20]; if (group->available) { s16 a; - group->baseX = gCurrentPinballGame->unk520.x / 10 - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk520.y / 10 - gCurrentPinballGame->unk5A; - a = gCurrentPinballGame->unk50E / 5; + group->baseX = gCurrentPinballGame->orbHitPosition.x / 10 - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->orbHitPosition.y / 10 - gCurrentPinballGame->cameraYOffset; + a = gCurrentPinballGame->hitBurstAnimFrame / 5; for (j = 0; j < 5; j++) { oamSimple = &group->oam[j]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B5CC0[a][j]; + src = gRayquazaHitBurstOamData[a][j]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -1423,23 +1423,23 @@ void sub_40288(void) gOamBuffer[oamSimple->oamId].y += group->baseY; } - if (gCurrentPinballGame->unk50E < 25) + if (gCurrentPinballGame->hitBurstAnimFrame < 25) { - gCurrentPinballGame->unk50E++; - if (gCurrentPinballGame->unk50E == 25) + gCurrentPinballGame->hitBurstAnimFrame++; + if (gCurrentPinballGame->hitBurstAnimFrame == 25) group->available = 0; } } - if (gCurrentPinballGame->unk505) + if (gCurrentPinballGame->orbHitIndex) { - gCurrentPinballGame->unk505 = 0; - gCurrentPinballGame->unk50E = 0; + gCurrentPinballGame->orbHitIndex = 0; + gCurrentPinballGame->hitBurstAnimFrame = 0; group->available = 1; } } -void sub_41580(void) +void UpdateWhirlwindGrabEntity(void) { s16 i; struct SpriteGroup *group; @@ -1452,46 +1452,46 @@ void sub_41580(void) if (!group->available) return; - gCurrentPinballGame->unk486--; - if (gCurrentPinballGame->unk486 > 5) + gCurrentPinballGame->ballGrabTimer--; + if (gCurrentPinballGame->ballGrabTimer > 5) { - var0 = gUnknown_08137D48[(gCurrentPinballGame->unk486 % 33) / 3]; - if (gCurrentPinballGame->unk47F > 0) + var0 = gWhirlwindGrabAnimFrameIndices[(gCurrentPinballGame->ballGrabTimer % 33) / 3]; + if (gCurrentPinballGame->ballGrabShakeTimer > 0) { - if (gCurrentPinballGame->unk47F == 7) + if (gCurrentPinballGame->ballGrabShakeTimer == 7) gCurrentPinballGame->ball->positionQ8.x += 0x100; - else if (gCurrentPinballGame->unk47F == 4) + else if (gCurrentPinballGame->ballGrabShakeTimer == 4) gCurrentPinballGame->ball->positionQ8.x -= 0x200; - else if (gCurrentPinballGame->unk47F == 1) + else if (gCurrentPinballGame->ballGrabShakeTimer == 1) gCurrentPinballGame->ball->positionQ8.x += 0x100; - gCurrentPinballGame->unk47F--; + gCurrentPinballGame->ballGrabShakeTimer--; } else { if (gCurrentPinballGame->newButtonActions[0] || gCurrentPinballGame->newButtonActions[1]) { - gCurrentPinballGame->unk486 -= 30; - if (gCurrentPinballGame->unk486 < 5) - gCurrentPinballGame->unk486 = 5; + gCurrentPinballGame->ballGrabTimer -= 30; + if (gCurrentPinballGame->ballGrabTimer < 5) + gCurrentPinballGame->ballGrabTimer = 5; - gCurrentPinballGame->unk47F = 7; + gCurrentPinballGame->ballGrabShakeTimer = 7; m4aSongNumStart(SE_UNKNOWN_0x12A); } } - if (gCurrentPinballGame->unk480) + if (gCurrentPinballGame->ballGrabFlashTimer) { - gCurrentPinballGame->unk480--; - if (gCurrentPinballGame->unk480 > 52) + gCurrentPinballGame->ballGrabFlashTimer--; + if (gCurrentPinballGame->ballGrabFlashTimer > 52) var0 = 8; - else if (gCurrentPinballGame->unk480 > 42) + else if (gCurrentPinballGame->ballGrabFlashTimer > 42) var0 = 9; } else { if (gCurrentPinballGame->newButtonActions[0] || gCurrentPinballGame->newButtonActions[1]) - gCurrentPinballGame->unk480 = 60; + gCurrentPinballGame->ballGrabFlashTimer = 60; } } @@ -1500,27 +1500,27 @@ void sub_41580(void) var0 = 8; } - if (gCurrentPinballGame->unk486 == 0) + if (gCurrentPinballGame->ballGrabTimer == 0) { gMain.spriteGroups[36].available = 0; - gCurrentPinballGame->unk480 = 0; - gCurrentPinballGame->unk383 = 0; + gCurrentPinballGame->ballGrabFlashTimer = 0; + gCurrentPinballGame->ballGrabbed = 0; } else { - gCurrentPinballGame->unk383 = 1; + gCurrentPinballGame->ballGrabbed = 1; gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; - gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->ball->spinSpeed = 0; } - group->baseX = gCurrentPinballGame->ball->positionQ0.x - gCurrentPinballGame->unk58 - 8; - group->baseY = gCurrentPinballGame->ball->positionQ0.y - gCurrentPinballGame->unk5A - 8; + group->baseX = gCurrentPinballGame->ball->positionQ0.x - gCurrentPinballGame->cameraXOffset - 8; + group->baseY = gCurrentPinballGame->ball->positionQ0.y - gCurrentPinballGame->cameraYOffset - 8; for (i = 0; i < 2; i++) { oamSimple = &group->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B5D56[var0][i]; + src = gRayquazaWhirlwindGrabOamData[var0][i]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -1530,7 +1530,7 @@ void sub_41580(void) } } -void sub_417F8(void) +void RenderWindCloudSprites(void) { s16 i; struct SpriteGroup *group; @@ -1541,8 +1541,8 @@ void sub_417F8(void) group = &gMain.spriteGroups[24]; if (group->available) { - group->baseX = gCurrentPinballGame->unk528.x / 10 - (gCurrentPinballGame->unk58 + 128); - group->baseY = gCurrentPinballGame->unk528.y / 10 - (gCurrentPinballGame->unk5A - 90); + group->baseX = gCurrentPinballGame->windCloudPosition.x / 10 - (gCurrentPinballGame->cameraXOffset + 128); + group->baseY = gCurrentPinballGame->windCloudPosition.y / 10 - (gCurrentPinballGame->cameraYOffset - 90); for (i = 0; i < 15; i++) { oamSimple = &group->oam[i]; @@ -1551,8 +1551,8 @@ void sub_417F8(void) } group = &gMain.spriteGroups[25]; - group->baseX = gCurrentPinballGame->unk528.x / 10 - (gCurrentPinballGame->unk58 + 128); - group->baseY = gCurrentPinballGame->unk528.y / 10 - (gCurrentPinballGame->unk5A - 90); + group->baseX = gCurrentPinballGame->windCloudPosition.x / 10 - (gCurrentPinballGame->cameraXOffset + 128); + group->baseY = gCurrentPinballGame->windCloudPosition.y / 10 - (gCurrentPinballGame->cameraYOffset - 90); for (i = 0; i < 14; i++) { oamSimple = &group->oam[i]; @@ -1564,8 +1564,8 @@ void sub_417F8(void) group = &gMain.spriteGroups[26]; if (group->available) { - group->baseX = gCurrentPinballGame->unk528.x / 10 - (gCurrentPinballGame->unk58 + 128); - group->baseY = gCurrentPinballGame->unk528.y / 10 - (gCurrentPinballGame->unk5A - 90); + group->baseX = gCurrentPinballGame->windCloudPosition.x / 10 - (gCurrentPinballGame->cameraXOffset + 128); + group->baseY = gCurrentPinballGame->windCloudPosition.y / 10 - (gCurrentPinballGame->cameraYOffset - 90); for (i = 0; i < 15; i++) { oamSimple = &group->oam[i]; @@ -1574,8 +1574,8 @@ void sub_417F8(void) } group = &gMain.spriteGroups[27]; - group->baseX = gCurrentPinballGame->unk528.x / 10 - (gCurrentPinballGame->unk58 + 128); - group->baseY = gCurrentPinballGame->unk528.y / 10 - (gCurrentPinballGame->unk5A - 90); + group->baseX = gCurrentPinballGame->windCloudPosition.x / 10 - (gCurrentPinballGame->cameraXOffset + 128); + group->baseY = gCurrentPinballGame->windCloudPosition.y / 10 - (gCurrentPinballGame->cameraYOffset - 90); for (i = 0; i < 9; i++) { oamSimple = &group->oam[i]; @@ -1587,8 +1587,8 @@ void sub_417F8(void) group = &gMain.spriteGroups[28]; if (group->available) { - group->baseX = gCurrentPinballGame->unk528.x / 10 - (gCurrentPinballGame->unk58 + 128); - group->baseY = gCurrentPinballGame->unk528.y / 10 - (gCurrentPinballGame->unk5A - 90); + group->baseX = gCurrentPinballGame->windCloudPosition.x / 10 - (gCurrentPinballGame->cameraXOffset + 128); + group->baseY = gCurrentPinballGame->windCloudPosition.y / 10 - (gCurrentPinballGame->cameraYOffset - 90); for (i = 0; i < 15; i++) { oamSimple = &group->oam[i]; @@ -1597,8 +1597,8 @@ void sub_417F8(void) } group = &gMain.spriteGroups[29]; - group->baseX = gCurrentPinballGame->unk528.x / 10 - (gCurrentPinballGame->unk58 + 128); - group->baseY = gCurrentPinballGame->unk528.y / 10 - (gCurrentPinballGame->unk5A - 90); + group->baseX = gCurrentPinballGame->windCloudPosition.x / 10 - (gCurrentPinballGame->cameraXOffset + 128); + group->baseY = gCurrentPinballGame->windCloudPosition.y / 10 - (gCurrentPinballGame->cameraYOffset - 90); for (i = 0; i < 12; i++) { oamSimple = &group->oam[i]; @@ -1610,8 +1610,8 @@ void sub_417F8(void) group = &gMain.spriteGroups[30]; if (group->available) { - group->baseX = gCurrentPinballGame->unk528.x / 10 - (gCurrentPinballGame->unk58 - 368); - group->baseY = gCurrentPinballGame->unk528.y / 10 - (gCurrentPinballGame->unk5A - 90); + group->baseX = gCurrentPinballGame->windCloudPosition.x / 10 - (gCurrentPinballGame->cameraXOffset - 368); + group->baseY = gCurrentPinballGame->windCloudPosition.y / 10 - (gCurrentPinballGame->cameraYOffset - 90); for (i = 0; i < 15; i++) { oamSimple = &group->oam[i]; @@ -1620,8 +1620,8 @@ void sub_417F8(void) } group = &gMain.spriteGroups[31]; - group->baseX = gCurrentPinballGame->unk528.x / 10 - (gCurrentPinballGame->unk58 - 368); - group->baseY = gCurrentPinballGame->unk528.y / 10 - (gCurrentPinballGame->unk5A - 90); + group->baseX = gCurrentPinballGame->windCloudPosition.x / 10 - (gCurrentPinballGame->cameraXOffset - 368); + group->baseY = gCurrentPinballGame->windCloudPosition.y / 10 - (gCurrentPinballGame->cameraYOffset - 90); for (i = 0; i < 14; i++) { oamSimple = &group->oam[i]; @@ -1633,8 +1633,8 @@ void sub_417F8(void) group = &gMain.spriteGroups[32]; if (group->available) { - group->baseX = gCurrentPinballGame->unk528.x / 10 - (gCurrentPinballGame->unk58 - 368); - group->baseY = gCurrentPinballGame->unk528.y / 10 - (gCurrentPinballGame->unk5A - 90); + group->baseX = gCurrentPinballGame->windCloudPosition.x / 10 - (gCurrentPinballGame->cameraXOffset - 368); + group->baseY = gCurrentPinballGame->windCloudPosition.y / 10 - (gCurrentPinballGame->cameraYOffset - 90); for (i = 0; i < 15; i++) { oamSimple = &group->oam[i]; @@ -1643,8 +1643,8 @@ void sub_417F8(void) } group = &gMain.spriteGroups[33]; - group->baseX = gCurrentPinballGame->unk528.x / 10 - (gCurrentPinballGame->unk58 - 368); - group->baseY = gCurrentPinballGame->unk528.y / 10 - (gCurrentPinballGame->unk5A - 90); + group->baseX = gCurrentPinballGame->windCloudPosition.x / 10 - (gCurrentPinballGame->cameraXOffset - 368); + group->baseY = gCurrentPinballGame->windCloudPosition.y / 10 - (gCurrentPinballGame->cameraYOffset - 90); for (i = 0; i < 9; i++) { oamSimple = &group->oam[i]; @@ -1656,8 +1656,8 @@ void sub_417F8(void) group = &gMain.spriteGroups[34]; if (group->available) { - group->baseX = gCurrentPinballGame->unk528.x / 10 - (gCurrentPinballGame->unk58 - 368); - group->baseY = gCurrentPinballGame->unk528.y / 10 - (gCurrentPinballGame->unk5A - 90); + group->baseX = gCurrentPinballGame->windCloudPosition.x / 10 - (gCurrentPinballGame->cameraXOffset - 368); + group->baseY = gCurrentPinballGame->windCloudPosition.y / 10 - (gCurrentPinballGame->cameraYOffset - 90); for (i = 0; i < 15; i++) { oamSimple = &group->oam[i]; @@ -1666,8 +1666,8 @@ void sub_417F8(void) } group = &gMain.spriteGroups[35]; - group->baseX = gCurrentPinballGame->unk528.x / 10 - (gCurrentPinballGame->unk58 - 368); - group->baseY = gCurrentPinballGame->unk528.y / 10 - (gCurrentPinballGame->unk5A - 90); + group->baseX = gCurrentPinballGame->windCloudPosition.x / 10 - (gCurrentPinballGame->cameraXOffset - 368); + group->baseY = gCurrentPinballGame->windCloudPosition.y / 10 - (gCurrentPinballGame->cameraYOffset - 90); for (i = 0; i < 12; i++) { oamSimple = &group->oam[i]; @@ -1678,20 +1678,20 @@ void sub_417F8(void) if (gMain.spriteGroups[22].available) { - if (gCurrentPinballGame->unk514 == 6) + if (gCurrentPinballGame->windCloudSpawnTimer == 6) { gMain.spriteGroups[24].available = 0; gMain.spriteGroups[25].available = 0; gMain.spriteGroups[26].available = 1; gMain.spriteGroups[27].available = 1; - if (gCurrentPinballGame->unk441[0] < 3 && gCurrentPinballGame->unk441[1] < 3 && gCurrentPinballGame->unk388 == 0) + if (gCurrentPinballGame->orbEntityState[0] < 3 && gCurrentPinballGame->orbEntityState[1] < 3 && gCurrentPinballGame->ballRespawnState == 0) { gCurrentPinballGame->ball->velocity.x += 500; PlayRumble(13); } } - if (gCurrentPinballGame->unk514 == 11) + if (gCurrentPinballGame->windCloudSpawnTimer == 11) { gMain.spriteGroups[26].available = 0; gMain.spriteGroups[27].available = 0; @@ -1699,7 +1699,7 @@ void sub_417F8(void) gMain.spriteGroups[29].available = 1; } - if (gCurrentPinballGame->unk514 == 14) + if (gCurrentPinballGame->windCloudSpawnTimer == 14) { gMain.spriteGroups[28].available = 0; gMain.spriteGroups[29].available = 0; @@ -1707,20 +1707,20 @@ void sub_417F8(void) } else { - if (gCurrentPinballGame->unk514 == 6) + if (gCurrentPinballGame->windCloudSpawnTimer == 6) { gMain.spriteGroups[30].available = 0; gMain.spriteGroups[31].available = 0; gMain.spriteGroups[32].available = 1; gMain.spriteGroups[33].available = 1; - if (gCurrentPinballGame->unk441[0] < 3 && gCurrentPinballGame->unk441[1] < 3 && gCurrentPinballGame->unk388 == 0) + if (gCurrentPinballGame->orbEntityState[0] < 3 && gCurrentPinballGame->orbEntityState[1] < 3 && gCurrentPinballGame->ballRespawnState == 0) { gCurrentPinballGame->ball->velocity.x -= 500; PlayRumble(13); } } - if (gCurrentPinballGame->unk514 == 11) + if (gCurrentPinballGame->windCloudSpawnTimer == 11) { gMain.spriteGroups[32].available = 0; gMain.spriteGroups[33].available = 0; @@ -1728,122 +1728,122 @@ void sub_417F8(void) gMain.spriteGroups[35].available = 1; } - if (gCurrentPinballGame->unk514 == 14) + if (gCurrentPinballGame->windCloudSpawnTimer == 14) { gMain.spriteGroups[34].available = 0; gMain.spriteGroups[35].available = 0; } } - if (gCurrentPinballGame->unk514 == 10) + if (gCurrentPinballGame->windCloudSpawnTimer == 10) { - if (gCurrentPinballGame->unk441[0] < 3) + if (gCurrentPinballGame->orbEntityState[0] < 3) { - gCurrentPinballGame->unk458[0] = 0; - gCurrentPinballGame->unk441[0] = 1; + gCurrentPinballGame->orbAnimTimer[0] = 0; + gCurrentPinballGame->orbEntityState[0] = 1; gMain.spriteGroups[15].available = 1; rand = Random() % 8; var0 = ((gMain.systemFrameCount % 240) << 0x10) / 240; - gCurrentPinballGame->unk464[0].x = gUnknown_086AF744[rand].x; - gCurrentPinballGame->unk464[0].y = gUnknown_086AF744[rand].y; - gCurrentPinballGame->unk45C[0].x = gCurrentPinballGame->unk464[0].x + (Cos(var0) * 4) / 2000; - gCurrentPinballGame->unk45C[0].y = gCurrentPinballGame->unk464[0].y + (Sin(var0) * 4) / 2000; + gCurrentPinballGame->orbOrbitCenter[0].x = gRayquazaMinionOrbitWaypoints[rand].x; + gCurrentPinballGame->orbOrbitCenter[0].y = gRayquazaMinionOrbitWaypoints[rand].y; + gCurrentPinballGame->orbScreenPosition[0].x = gCurrentPinballGame->orbOrbitCenter[0].x + (Cos(var0) * 4) / 2000; + gCurrentPinballGame->orbScreenPosition[0].y = gCurrentPinballGame->orbOrbitCenter[0].y + (Sin(var0) * 4) / 2000; m4aSongNumStart(SE_UNKNOWN_0x12D); } } - if (gCurrentPinballGame->unk514 == 16) + if (gCurrentPinballGame->windCloudSpawnTimer == 16) { - if (gCurrentPinballGame->unk441[1] < 3) + if (gCurrentPinballGame->orbEntityState[1] < 3) { - gCurrentPinballGame->unk458[1] = 0; - gCurrentPinballGame->unk441[1] = 1; + gCurrentPinballGame->orbAnimTimer[1] = 0; + gCurrentPinballGame->orbEntityState[1] = 1; gMain.spriteGroups[16].available = 1; rand = (Random() % 8 + 8) % 32; // Force 8 to be added to r1 var0 = (((gMain.systemFrameCount + 120) % 240) << 0x10) / 240; - gCurrentPinballGame->unk464[1].x = gUnknown_086AF744[rand].x; - gCurrentPinballGame->unk464[1].y = gUnknown_086AF744[rand].y; - gCurrentPinballGame->unk45C[1].x = gCurrentPinballGame->unk464[1].x + (Cos(var0) * 4) / 2000; - gCurrentPinballGame->unk45C[1].y = gCurrentPinballGame->unk464[1].y + (Sin(var0) * 4) / 2000; + gCurrentPinballGame->orbOrbitCenter[1].x = gRayquazaMinionOrbitWaypoints[rand].x; + gCurrentPinballGame->orbOrbitCenter[1].y = gRayquazaMinionOrbitWaypoints[rand].y; + gCurrentPinballGame->orbScreenPosition[1].x = gCurrentPinballGame->orbOrbitCenter[1].x + (Cos(var0) * 4) / 2000; + gCurrentPinballGame->orbScreenPosition[1].y = gCurrentPinballGame->orbOrbitCenter[1].y + (Sin(var0) * 4) / 2000; m4aSongNumStart(SE_UNKNOWN_0x12D); } } - if (gCurrentPinballGame->unk4C8 > 0) + if (gCurrentPinballGame->impactShakeTimer > 0) { - gCurrentPinballGame->unk4C8--; - if (gCurrentPinballGame->unk4C8 < 12) - gCurrentPinballGame->unk2AC = gUnknown_086AEF28[gCurrentPinballGame->unk4C8 % 12]; - else if (gCurrentPinballGame->unk4C8 < 24) - gCurrentPinballGame->unk2AC = gUnknown_086AEF28[gCurrentPinballGame->unk4C8 % 12] * 2; - else if (gCurrentPinballGame->unk4C8 < 36) - gCurrentPinballGame->unk2AC = gUnknown_086AEF28[gCurrentPinballGame->unk4C8 % 12] * 4; - else if (gCurrentPinballGame->unk4C8 < 48) - gCurrentPinballGame->unk2AC = gUnknown_086AEF28[gCurrentPinballGame->unk4C8 % 12] * 2; + gCurrentPinballGame->impactShakeTimer--; + if (gCurrentPinballGame->impactShakeTimer < 12) + gCurrentPinballGame->screenShakeY = gScreenShakeOscillationValues[gCurrentPinballGame->impactShakeTimer % 12]; + else if (gCurrentPinballGame->impactShakeTimer < 24) + gCurrentPinballGame->screenShakeY = gScreenShakeOscillationValues[gCurrentPinballGame->impactShakeTimer % 12] * 2; + else if (gCurrentPinballGame->impactShakeTimer < 36) + gCurrentPinballGame->screenShakeY = gScreenShakeOscillationValues[gCurrentPinballGame->impactShakeTimer % 12] * 4; + else if (gCurrentPinballGame->impactShakeTimer < 48) + gCurrentPinballGame->screenShakeY = gScreenShakeOscillationValues[gCurrentPinballGame->impactShakeTimer % 12] * 2; else - gCurrentPinballGame->unk2AC = gUnknown_086AEF28[gCurrentPinballGame->unk4C8 % 12]; + gCurrentPinballGame->screenShakeY = gScreenShakeOscillationValues[gCurrentPinballGame->impactShakeTimer % 12]; - if (gCurrentPinballGame->unk4C8 == 0) - gCurrentPinballGame->unk2AC = 0; + if (gCurrentPinballGame->impactShakeTimer == 0) + gCurrentPinballGame->screenShakeY = 0; } - if (gCurrentPinballGame->unk508 > 0) + if (gCurrentPinballGame->horizontalShakeTimer > 0) { - s16 var0 = gCurrentPinballGame->unk508 % 4; + s16 var0 = gCurrentPinballGame->horizontalShakeTimer % 4; if (var0 / 2 != 0) - gCurrentPinballGame->unk2AA = 2; + gCurrentPinballGame->screenShakeX = 2; else - gCurrentPinballGame->unk2AA = -2; + gCurrentPinballGame->screenShakeX = -2; - gCurrentPinballGame->unk508--; - if (gCurrentPinballGame->unk508 == 0) - gCurrentPinballGame->unk2AA = 0; + gCurrentPinballGame->horizontalShakeTimer--; + if (gCurrentPinballGame->horizontalShakeTimer == 0) + gCurrentPinballGame->screenShakeX = 0; } } -void sub_423D8(void) +void UpdateRayquazaIntroSequence(void) { s16 i; struct SpriteGroup *group; struct OamDataSimple *oamSimple; s16 var0; - if (gCurrentPinballGame->unk506 == 0) + if (gCurrentPinballGame->introSequencePhase == 0) { - if (gCurrentPinballGame->unk516 < 689) + if (gCurrentPinballGame->introFrameCounter < 689) { - if (gCurrentPinballGame->unk516 < 569) + if (gCurrentPinballGame->introFrameCounter < 569) { - if (gCurrentPinballGame->unk516 % 160 == 20) + if (gCurrentPinballGame->introFrameCounter % 160 == 20) m4aMPlayVolumeControl(&gMPlayInfo_SE1, TRACKS_ALL, 0x80); - if (gCurrentPinballGame->unk516 % 160 == 90) + if (gCurrentPinballGame->introFrameCounter % 160 == 90) m4aMPlayFadeOutTemporarily(&gMPlayInfo_SE1, 5); - if (gCurrentPinballGame->unk516 % 160 == 1) + if (gCurrentPinballGame->introFrameCounter % 160 == 1) m4aSongNumStart(SE_RAYQUAZA_STAGE_WIND); - if (gCurrentPinballGame->unk516 % 160 == 2) + if (gCurrentPinballGame->introFrameCounter % 160 == 2) m4aMPlayVolumeControl(&gMPlayInfo_SE1, TRACKS_ALL, 0x33); } - if (gCurrentPinballGame->unk516 >= 512) - gCurrentPinballGame->unkE6 = (gCurrentPinballGame->unk516 - 512) / 2 - 88; + if (gCurrentPinballGame->introFrameCounter >= 512) + gCurrentPinballGame->cameraYAdjust = (gCurrentPinballGame->introFrameCounter - 512) / 2 - 88; - if (gCurrentPinballGame->unk516 == 624) - gCurrentPinballGame->unk294 = 1; + if (gCurrentPinballGame->introFrameCounter == 624) + gCurrentPinballGame->boardModeType = 1; - if (gCurrentPinballGame->unk516 < 513) - gCurrentPinballGame->unk518 = gCurrentPinballGame->unk516 / 2; + if (gCurrentPinballGame->introFrameCounter < 513) + gCurrentPinballGame->bgScrollSpeed = gCurrentPinballGame->introFrameCounter / 2; - if (gCurrentPinballGame->unk516 == 688) - gCurrentPinballGame->unk506 = 1; + if (gCurrentPinballGame->introFrameCounter == 688) + gCurrentPinballGame->introSequencePhase = 1; - gCurrentPinballGame->unk516++; - if (gCurrentPinballGame->unk516 <= 568 && gCurrentPinballGame->unk392 > 5) - gCurrentPinballGame->unk392--; + gCurrentPinballGame->introFrameCounter++; + if (gCurrentPinballGame->introFrameCounter <= 568 && gCurrentPinballGame->ballRespawnTimer > 5) + gCurrentPinballGame->ballRespawnTimer--; - if (gCurrentPinballGame->unk516 == 1) + if (gCurrentPinballGame->introFrameCounter == 1) { gCurrentPinballGame->minionLogicPosition[0].x = 300; gCurrentPinballGame->minionLogicPosition[0].y = 1200; @@ -1853,37 +1853,37 @@ void sub_423D8(void) gCurrentPinballGame->minionLogicPosition[2].y = 2500; } - if (gCurrentPinballGame->unk516 == 88) + if (gCurrentPinballGame->introFrameCounter == 88) { gCurrentPinballGame->minionLogicPosition[0].x = 1600; gCurrentPinballGame->minionLogicPosition[0].y = 1800; } - if (gCurrentPinballGame->unk516 == 120) + if (gCurrentPinballGame->introFrameCounter == 120) { gCurrentPinballGame->minionLogicPosition[1].x = 600; gCurrentPinballGame->minionLogicPosition[1].y = 1800; } - if (gCurrentPinballGame->unk516 == 170) + if (gCurrentPinballGame->introFrameCounter == 170) { gCurrentPinballGame->minionLogicPosition[2].x = 1800; gCurrentPinballGame->minionLogicPosition[2].y = 2000; } - if (gCurrentPinballGame->unk516 == 215) + if (gCurrentPinballGame->introFrameCounter == 215) { gCurrentPinballGame->minionLogicPosition[0].x = 0; gCurrentPinballGame->minionLogicPosition[0].y = 2000; } - if (gCurrentPinballGame->unk516 == 305) + if (gCurrentPinballGame->introFrameCounter == 305) { gCurrentPinballGame->minionLogicPosition[1].x = 1800; gCurrentPinballGame->minionLogicPosition[1].y = 1800; } - if (gCurrentPinballGame->unk516 == 315) + if (gCurrentPinballGame->introFrameCounter == 315) { gCurrentPinballGame->minionLogicPosition[2].x = 300; gCurrentPinballGame->minionLogicPosition[2].y = 1800; @@ -1952,7 +1952,7 @@ void sub_423D8(void) } } - if (gCurrentPinballGame->unk516 == 660) + if (gCurrentPinballGame->introFrameCounter == 660) { gMain.spriteGroups[11].available = 0; gMain.spriteGroups[12].available = 0; @@ -1962,13 +1962,13 @@ void sub_423D8(void) group = &gMain.spriteGroups[14]; if (group->available) { - if (gCurrentPinballGame->unk516 >= 195 && gCurrentPinballGame->unk516 < 205) - var0 = gUnknown_086AF784[(gCurrentPinballGame->unk516 - 195) / 2]; + if (gCurrentPinballGame->introFrameCounter >= 195 && gCurrentPinballGame->introFrameCounter < 205) + var0 = gRayquazaCloudScrollPositions[(gCurrentPinballGame->introFrameCounter - 195) / 2]; else - var0 = (gCurrentPinballGame->unk516 % 4) / 2; + var0 = (gCurrentPinballGame->introFrameCounter % 4) / 2; - group->baseX = gCurrentPinballGame->unk418.x / 10; - group->baseY = gCurrentPinballGame->unk418.y / 10; + group->baseX = gCurrentPinballGame->orbCollisionPosition.x / 10; + group->baseY = gCurrentPinballGame->orbCollisionPosition.y / 10; if (group->baseY < -60) group->baseY = -60; @@ -1981,38 +1981,38 @@ void sub_423D8(void) gOamBuffer[oamSimple->oamId].tileNum = 0x7D + var0 * 4; } - if (gCurrentPinballGame->unk516 == 150) + if (gCurrentPinballGame->introFrameCounter == 150) { gMain.spriteGroups[14].available = 1; - gCurrentPinballGame->unk418.x = 1600; - gCurrentPinballGame->unk418.y = -100; - gCurrentPinballGame->unk414.x = -21; - gCurrentPinballGame->unk414.y = 14; + gCurrentPinballGame->orbCollisionPosition.x = 1600; + gCurrentPinballGame->orbCollisionPosition.y = -100; + gCurrentPinballGame->orbLogicPosition.x = -21; + gCurrentPinballGame->orbLogicPosition.y = 14; } - if (gCurrentPinballGame->unk516 > 205) + if (gCurrentPinballGame->introFrameCounter > 205) { - gCurrentPinballGame->unk414.y++; - gCurrentPinballGame->unk418.x += gCurrentPinballGame->unk414.x; - gCurrentPinballGame->unk418.y += gCurrentPinballGame->unk414.y; + gCurrentPinballGame->orbLogicPosition.y++; + gCurrentPinballGame->orbCollisionPosition.x += gCurrentPinballGame->orbLogicPosition.x; + gCurrentPinballGame->orbCollisionPosition.y += gCurrentPinballGame->orbLogicPosition.y; } - else if (gCurrentPinballGame->unk516 > 150) + else if (gCurrentPinballGame->introFrameCounter > 150) { - gCurrentPinballGame->unk418.x += gCurrentPinballGame->unk414.x; - gCurrentPinballGame->unk418.y += gCurrentPinballGame->unk414.y; + gCurrentPinballGame->orbCollisionPosition.x += gCurrentPinballGame->orbLogicPosition.x; + gCurrentPinballGame->orbCollisionPosition.y += gCurrentPinballGame->orbLogicPosition.y; } - if (gCurrentPinballGame->unk516 == 350) + if (gCurrentPinballGame->introFrameCounter == 350) gMain.spriteGroups[14].available = 0; } } - if (gCurrentPinballGame->unk506 == 2) + if (gCurrentPinballGame->introSequencePhase == 2) { - if (gCurrentPinballGame->unk516 < 256) + if (gCurrentPinballGame->introFrameCounter < 256) { - gCurrentPinballGame->unkE6 = gCurrentPinballGame->unk516 / -2; - gCurrentPinballGame->unk516++; + gCurrentPinballGame->cameraYAdjust = gCurrentPinballGame->introFrameCounter / -2; + gCurrentPinballGame->introFrameCounter++; } group = &gMain.spriteGroups[11]; @@ -2022,7 +2022,7 @@ void sub_423D8(void) group->baseY = gCurrentPinballGame->minionLogicPosition[0].y / 10; if (group->baseY > 180) group->baseY = 180; - else if (gCurrentPinballGame->unk516 < 256) + else if (gCurrentPinballGame->introFrameCounter < 256) gCurrentPinballGame->minionLogicPosition[0].y += 20; if (group->baseY < -60) @@ -2043,7 +2043,7 @@ void sub_423D8(void) group->baseY = gCurrentPinballGame->minionLogicPosition[1].y / 10; if (group->baseY > 180) group->baseY = 180; - else if (gCurrentPinballGame->unk516 < 256) + else if (gCurrentPinballGame->introFrameCounter < 256) gCurrentPinballGame->minionLogicPosition[1].y += 10; if (group->baseY < -60) @@ -2060,13 +2060,13 @@ void sub_423D8(void) group = &gMain.spriteGroups[14]; if (group->available) { - if (gCurrentPinballGame->unk516 >= 190 && gCurrentPinballGame->unk516 < 200) - var0 = gUnknown_086AF784[(gCurrentPinballGame->unk516 - 190) / 2]; + if (gCurrentPinballGame->introFrameCounter >= 190 && gCurrentPinballGame->introFrameCounter < 200) + var0 = gRayquazaCloudScrollPositions[(gCurrentPinballGame->introFrameCounter - 190) / 2]; else - var0 = (gCurrentPinballGame->unk516 % 4) / 2; + var0 = (gCurrentPinballGame->introFrameCounter % 4) / 2; - group->baseX = gCurrentPinballGame->unk418.x / 10; - group->baseY = gCurrentPinballGame->unk418.y / 10; + group->baseX = gCurrentPinballGame->orbCollisionPosition.x / 10; + group->baseY = gCurrentPinballGame->orbCollisionPosition.y / 10; if (group->baseY < -60) group->baseY = -60; @@ -2078,21 +2078,21 @@ void sub_423D8(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; gOamBuffer[oamSimple->oamId].tileNum = 0x7D + var0 * 4; - if (gCurrentPinballGame->unk516 > 160) + if (gCurrentPinballGame->introFrameCounter > 160) { - gCurrentPinballGame->unk418.x += gCurrentPinballGame->unk414.x; - gCurrentPinballGame->unk418.y += gCurrentPinballGame->unk414.y; + gCurrentPinballGame->orbCollisionPosition.x += gCurrentPinballGame->orbLogicPosition.x; + gCurrentPinballGame->orbCollisionPosition.y += gCurrentPinballGame->orbLogicPosition.y; } } } - if (gCurrentPinballGame->unkE6 >= -0x20) - gCurrentPinballGame->unk1A = 0; + if (gCurrentPinballGame->cameraYAdjust >= -0x20) + gCurrentPinballGame->flippersDisabled = 0; else - gCurrentPinballGame->unk1A = 1; + gCurrentPinballGame->flippersDisabled = 1; - gMain.bgOffsets[2].yOffset += gCurrentPinballGame->unk518; - gMain.bgOffsets[1].yOffset += gCurrentPinballGame->unk518; - gMain.bgOffsets[3].yOffset += gCurrentPinballGame->unk518 / 4 + 224; + gMain.bgOffsets[2].yOffset += gCurrentPinballGame->bgScrollSpeed; + gMain.bgOffsets[1].yOffset += gCurrentPinballGame->bgScrollSpeed; + gMain.bgOffsets[3].yOffset += gCurrentPinballGame->bgScrollSpeed / 4 + 224; } diff --git a/src/board_process3_ruby.c b/src/board_process3_ruby.c index b9f65bc..72926d3 100644 --- a/src/board_process3_ruby.c +++ b/src/board_process3_ruby.c @@ -5,127 +5,127 @@ #include "constants/bg_music.h" #include "constants/ruby_states.h" -extern const void (*gUnknown_086AD4C4[])(void); -extern const void (*gUnknown_086AD4E8[])(void); +extern const void (*gBoardStateInitFuncs[])(void); +extern const void (*gBoardStateUpdateFuncs[])(void); -extern void sub_19D04(void); -extern void sub_19E10(void); -extern void sub_19F70(void); -extern void sub_19FA0(void); -extern void sub_1D5D8(void); -extern void sub_1DA74(void); -extern void sub_1DAD8(void); +extern void HandleBoardStateTransitionTeardown(void); +extern void UpdateRubyBoardEntityRendering(void); +extern void UpdateRubyBoardEntityLogic(void); +extern void HandleRubyFlipperButtonInput(void); +extern void UpdateNuzleafEntity(void); +extern void SelectShopDoorState(void); +extern void AnimateShopDoor(void); extern void DrawWhiscash(void); extern void RubyPond_EntityLogic(void); extern void RubyPondTriBumperHandleHitAndDraw(void); -extern void sub_1F158(void); -extern void sub_1F59C(void); -extern void sub_1F698(void); -extern void sub_1FA48(void); -extern void sub_1FBC4(void); -extern void sub_1FF0C(void); -extern void sub_201B8(void); -extern void sub_21D78(void); -extern void sub_23954(void); -extern void sub_239A4(void); -extern void sub_23E18(void); -extern void sub_2C538(void); -extern void sub_2C9A4(void); -extern void sub_4E9F0(s16); +extern void AnimateSharpedoEntity(void); +extern void DrawPikachuSpinner(void); +extern void UpdateChikoritaAttackAnimation(void); +extern void AnimateChikoritaSprite(void); +extern void UpdateGulpinBossState(void); +extern void UpdateSideBumperAnimation(void); +extern void DrawSideBumperSprites(void); +extern void UpdateEvolutionShopSprite(void); +extern void InitEggModeAnimation(void); +extern void UpdateEggModeAnimation(void); +extern void UpdateEggHatchDisplay(void); +extern void UpdateRubyRampPrizeGate(void); +extern void DrawRubyNuzleafPlatformSprite(void); +extern void LoadShopItemGraphics(s16); void RubyBoardProcess_3A_19A20(void) { gCurrentPinballGame->catchModeArrows = 2; - sub_1D5D8(); - sub_4E9F0(0); - sub_1DAD8(); - sub_23954(); - sub_239A4(); + UpdateNuzleafEntity(); + LoadShopItemGraphics(0); + AnimateShopDoor(); + InitEggModeAnimation(); + UpdateEggModeAnimation(); - gCurrentPinballGame->unk2D4 = 73; - gCurrentPinballGame->unk2D6 = 154; - gCurrentPinballGame->unk2DA = 0; - sub_23E18(); + gCurrentPinballGame->cyndaquilCaveSpriteX = 73; + gCurrentPinballGame->cyndaquilCaveSpriteY = 154; + gCurrentPinballGame->eggCaveState = 0; + UpdateEggHatchDisplay(); RubyPond_EntityLogic(); - gCurrentPinballGame->unk170[0] = 10; - gCurrentPinballGame->unk170[1] = 10; - gCurrentPinballGame->unk170[2] = 10; + gCurrentPinballGame->pondBumperStates[0] = 10; + gCurrentPinballGame->pondBumperStates[1] = 10; + gCurrentPinballGame->pondBumperStates[2] = 10; gCurrentPinballGame->rubyPondState = RUBY_POND_STATE_CHINCHOU_STAGGERED; RubyPondTriBumperHandleHitAndDraw(); - sub_1F158(); + AnimateSharpedoEntity(); - gCurrentPinballGame->unk1E5 = 0; - gCurrentPinballGame->unk1E6 = 1; - sub_1F2A4(); - sub_21B0C(); - sub_1F59C(); + gCurrentPinballGame->pikachuSpinFrame = 0; + gCurrentPinballGame->pikachuSpinPrevFrame = 1; + UpdatePikachuChargeCounter(); + AnimateCatchCounterDisplay(); + DrawPikachuSpinner(); - gCurrentPinballGame->unk1D8 = 256; - gCurrentPinballGame->unk1DA = 256; - gCurrentPinballGame->unk29F = 2; - sub_2C9A4(); + gCurrentPinballGame->catchCounterAnimState = 256; + gCurrentPinballGame->catchCounterScaleY = 256; + gCurrentPinballGame->rampPrizeType = 2; + DrawRubyNuzleafPlatformSprite(); - gCurrentPinballGame->unk2EC[0] = 3; - gCurrentPinballGame->unk2EC[1] = 3; - sub_31B30(); + gCurrentPinballGame->sideBumperShakeOffset[0] = 3; + gCurrentPinballGame->sideBumperShakeOffset[1] = 3; + DrawBoardEdgeBanner(); } void RubyBoardProcess_3B_19B10(void) { - sub_19B90(); - sub_19E10(); + BoardStateDispatcher(); + UpdateRubyBoardEntityRendering(); if (gMain.modeChangeFlags == MODE_CHANGE_NONE) { - sub_19F70(); + UpdateRubyBoardEntityLogic(); } - sub_19FA0(); - if (gCurrentPinballGame->unk29C != 0) + HandleRubyFlipperButtonInput(); + if (gCurrentPinballGame->bgmFadeTimer != 0) { - gCurrentPinballGame->unk29C--; - if (gCurrentPinballGame->unk29C == 0) + gCurrentPinballGame->bgmFadeTimer--; + if (gCurrentPinballGame->bgmFadeTimer == 0) { m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 256); } } } -void sub_19B64(u8 arg0) +void RequestBoardStateTransition(u8 arg0) { - gCurrentPinballGame->unk16 = 2; - gCurrentPinballGame->unk14 = arg0; - if (gCurrentPinballGame->unk13 == 2) - gMain.unk44[13]->available = 0; + gCurrentPinballGame->boardTransitionPhase = 2; + gCurrentPinballGame->nextBoardState = arg0; + if (gCurrentPinballGame->boardState == 2) + gMain.fieldSpriteGroups[13]->available = 0; } -void sub_19B90(void) +void BoardStateDispatcher(void) { - switch (gCurrentPinballGame->unk16) + switch (gCurrentPinballGame->boardTransitionPhase) { case 0: - gUnknown_086AD4C4[gCurrentPinballGame->unk13](); - gCurrentPinballGame->unk16++; + gBoardStateInitFuncs[gCurrentPinballGame->boardState](); + gCurrentPinballGame->boardTransitionPhase++; break; case 1: - gUnknown_086AD4E8[gCurrentPinballGame->unk13](); + gBoardStateUpdateFuncs[gCurrentPinballGame->boardState](); break; case 2: - sub_19D04(); - gCurrentPinballGame->unk15 = gCurrentPinballGame->unk13; - gCurrentPinballGame->unk13 = gCurrentPinballGame->unk14; - gCurrentPinballGame->unk16 = 0; + HandleBoardStateTransitionTeardown(); + gCurrentPinballGame->prevBoardState = gCurrentPinballGame->boardState; + gCurrentPinballGame->boardState = gCurrentPinballGame->nextBoardState; + gCurrentPinballGame->boardTransitionPhase = 0; break; } } -void sub_19C04(void) +void InitFieldIdle(void) { s16 num1; u8 num2; - if (gCurrentPinballGame->unk15 > 0) + if (gCurrentPinballGame->prevBoardState > 0) { if (gMain.selectedField == FIELD_RUBY) { @@ -153,100 +153,100 @@ void sub_19C04(void) } } - num2 = gCurrentPinballGame->unk15 - 1; + num2 = gCurrentPinballGame->prevBoardState - 1; if (num2 > 1) { - gCurrentPinballGame->unk72E = gCurrentPinballGame->unk73C; - gCurrentPinballGame->unk72F = gCurrentPinballGame->catchModeArrows; - gCurrentPinballGame->unk73C = 0; + gCurrentPinballGame->evoArrowProgress = gCurrentPinballGame->arrowProgressPreserved; + gCurrentPinballGame->catchArrowProgress = gCurrentPinballGame->catchModeArrows; + gCurrentPinballGame->arrowProgressPreserved = 0; gCurrentPinballGame->catchModeArrows = 0; } } -void sub_19CC8(void) +void UpdateFieldIdle(void) { - if (gCurrentPinballGame->unk714 != 0) + if (gCurrentPinballGame->allHolesLit != 0) { - if (gCurrentPinballGame->unk6EE != 0) + if (gCurrentPinballGame->allHolesLitDelayTimer != 0) { - gCurrentPinballGame->unk6EE--; + gCurrentPinballGame->allHolesLitDelayTimer--; } else { - sub_19B64(2); + RequestBoardStateTransition(2); } } } -void sub_19D04(void) +void HandleBoardStateTransitionTeardown(void) { - if (gCurrentPinballGame->unk13 == 2 && gCurrentPinballGame->unk14 > 2) - sub_21238(0); + if (gCurrentPinballGame->boardState == 2 && gCurrentPinballGame->nextBoardState > 2) + ResetCatchState(0); - if (gCurrentPinballGame->unk13 > 2) + if (gCurrentPinballGame->boardState > 2) return; - if (gCurrentPinballGame->unk14 == 3) + if (gCurrentPinballGame->nextBoardState == 3) { - gCurrentPinballGame->unk73C = gCurrentPinballGame->unk72E; - gCurrentPinballGame->catchModeArrows = gCurrentPinballGame->unk72F; - gCurrentPinballGame->unk72E = 0; - gCurrentPinballGame->unk72F = 0; + gCurrentPinballGame->arrowProgressPreserved = gCurrentPinballGame->evoArrowProgress; + gCurrentPinballGame->catchModeArrows = gCurrentPinballGame->catchArrowProgress; + gCurrentPinballGame->evoArrowProgress = 0; + gCurrentPinballGame->catchArrowProgress = 0; } - if (gCurrentPinballGame->unk14 == 4) + if (gCurrentPinballGame->nextBoardState == 4) { - gCurrentPinballGame->unk73C = gCurrentPinballGame->unk72E; - gCurrentPinballGame->catchModeArrows = gCurrentPinballGame->unk72F; - gCurrentPinballGame->unk72E = 0; - gCurrentPinballGame->unk72F = 0; + gCurrentPinballGame->arrowProgressPreserved = gCurrentPinballGame->evoArrowProgress; + gCurrentPinballGame->catchModeArrows = gCurrentPinballGame->catchArrowProgress; + gCurrentPinballGame->evoArrowProgress = 0; + gCurrentPinballGame->catchArrowProgress = 0; } - else if (gCurrentPinballGame->unk14 == 6) + else if (gCurrentPinballGame->nextBoardState == 6) { - gCurrentPinballGame->catchModeArrows = gCurrentPinballGame->unk72F; - gCurrentPinballGame->unk73C = 0; - gCurrentPinballGame->unk72E = 0; - gCurrentPinballGame->unk72F = 0; + gCurrentPinballGame->catchModeArrows = gCurrentPinballGame->catchArrowProgress; + gCurrentPinballGame->arrowProgressPreserved = 0; + gCurrentPinballGame->evoArrowProgress = 0; + gCurrentPinballGame->catchArrowProgress = 0; } - else if (gCurrentPinballGame->unk14 > 3) + else if (gCurrentPinballGame->nextBoardState > 3) { - gCurrentPinballGame->unk73C = gCurrentPinballGame->unk72E; - gCurrentPinballGame->catchModeArrows = gCurrentPinballGame->unk72F; - gCurrentPinballGame->unk72E = 0; - gCurrentPinballGame->unk72F = 0; + gCurrentPinballGame->arrowProgressPreserved = gCurrentPinballGame->evoArrowProgress; + gCurrentPinballGame->catchModeArrows = gCurrentPinballGame->catchArrowProgress; + gCurrentPinballGame->evoArrowProgress = 0; + gCurrentPinballGame->catchArrowProgress = 0; } } -void sub_19E10(void) +void UpdateRubyBoardEntityRendering(void) { int randNum; - sub_1A0F4(); - sub_1DA74(); - if (gCurrentPinballGame->unk2A0 != 0) + ProcessBannerCameraTransition(); + SelectShopDoorState(); + if (gCurrentPinballGame->rampPrizeRespawnTimer != 0) { - gCurrentPinballGame->unk2A0--; - if (gCurrentPinballGame->unk2A0 == 0) + gCurrentPinballGame->rampPrizeRespawnTimer--; + if (gCurrentPinballGame->rampPrizeRespawnTimer == 0) { randNum = Random(); - gCurrentPinballGame->unk29F = ((randNum + gMain.systemFrameCount) % 100) + 1; + gCurrentPinballGame->rampPrizeType = ((randNum + gMain.systemFrameCount) % 100) + 1; } } - if (gCurrentPinballGame->unk68 < 110) + if (gCurrentPinballGame->cameraYViewport < 110) { - sub_1D5D8(); - sub_1DAD8(); - sub_2C9A4(); + UpdateNuzleafEntity(); + AnimateShopDoor(); + DrawRubyNuzleafPlatformSprite(); } - sub_2CA9C(); - if (gCurrentPinballGame->unk68 < 168) + AnimateOneUpSprite(); + if (gCurrentPinballGame->cameraYViewport < 168) { - sub_239A4(); + UpdateEggModeAnimation(); } - if (gCurrentPinballGame->unk68 < 220) + if (gCurrentPinballGame->cameraYViewport < 220) { - sub_23E18(); + UpdateEggHatchDisplay(); if (gCurrentPinballGame->shouldProcessWhiscash) { DrawWhiscash(); @@ -255,72 +255,72 @@ void sub_19E10(void) { RubyPondTriBumperHandleHitAndDraw(); } - sub_1F158(); - sub_1F59C(); + AnimateSharpedoEntity(); + DrawPikachuSpinner(); } - sub_1F698(); - if (gCurrentPinballGame->unk68 > 63) + UpdateChikoritaAttackAnimation(); + if (gCurrentPinballGame->cameraYViewport > 63) { - sub_1FA48(); - sub_1FBC4(); + AnimateChikoritaSprite(); + UpdateGulpinBossState(); } - if (gCurrentPinballGame->unk68 > 115) + if (gCurrentPinballGame->cameraYViewport > 115) { - sub_2C538(); + UpdateRubyRampPrizeGate(); } - if (gCurrentPinballGame->unk68 > 130) + if (gCurrentPinballGame->cameraYViewport > 130) { - sub_201B8(); + DrawSideBumperSprites(); } - sub_2CE80(); - if (gCurrentPinballGame->unk68 > 168) + UpdateSpoinkAnimation(); + if (gCurrentPinballGame->cameraYViewport > 168) { - sub_2D104(); + DrawSpoinkSprite(); } - sub_203CC(); - sub_21B0C(); - sub_4E814(); - sub_1D128(); - sub_21D78(); - sub_31B30(); + UpdateCatchModeLogic(); + AnimateCatchCounterDisplay(); + UpdateRubyBoardAnimations(); + UpdatePortraitSpritePositions(); + UpdateEvolutionShopSprite(); + DrawBoardEdgeBanner(); - if (gCurrentPinballGame->unk194 != 0) + if (gCurrentPinballGame->coinRewardAmount != 0) { - sub_225F0(); + AnimateCoinReward(); } BonusStage_HandleModeChangeFlags(); - if (gCurrentPinballGame->unk1328 != 0) + if (gCurrentPinballGame->ballLaunchTimer != 0) { - gCurrentPinballGame->unk1328--; - if (gCurrentPinballGame->unk1328 == 0) + gCurrentPinballGame->ballLaunchTimer--; + if (gCurrentPinballGame->ballLaunchTimer == 0) { - gCurrentPinballGame->unk1330 = gCurrentPinballGame->unk1334; + gCurrentPinballGame->secondaryBall = gCurrentPinballGame->ballStates; } } } -void sub_19F70(void) +void UpdateRubyBoardEntityLogic(void) { RubyPond_EntityLogic(); - sub_1A9E8(); - sub_1F2A4(); - sub_1FF0C(); - if (gCurrentPinballGame->unk600 != 0) + UpdateRubyCatchModeAnimation(); + UpdatePikachuChargeCounter(); + UpdateSideBumperAnimation(); + if (gCurrentPinballGame->mainBoardCountdownTimer != 0) { - gCurrentPinballGame->unk600--; + gCurrentPinballGame->mainBoardCountdownTimer--; } } -//Duplicate of sub_32DF8, with "gCurrentPinballGame->unk301 = 1;" added in the final if statement -void sub_19FA0(void) +//Duplicate of HandleSapphireFlipperButtonInput, with "gCurrentPinballGame->rampGateHitFlag = 1;" added in the final if statement +void HandleRubyFlipperButtonInput(void) { int tmp; if (gCurrentPinballGame->newButtonActions[0]) { - if (gCurrentPinballGame->unk1C4 == 0 && gCurrentPinballGame->outLanePikaPosition != 2 && - gCurrentPinballGame->unk1C0 == 0 && gCurrentPinballGame->unk61C == 0) + if (gCurrentPinballGame->pikaKickbackTimer == 0 && gCurrentPinballGame->outLanePikaPosition != 2 && + gCurrentPinballGame->pikaSaverTimer == 0 && gCurrentPinballGame->entityOverlayCollisionState == 0) { gCurrentPinballGame->outLanePikaPosition = 0; } @@ -339,8 +339,8 @@ void sub_19FA0(void) if (gCurrentPinballGame->newButtonActions[1]) { - if (gCurrentPinballGame->unk1C4 == 0 && gCurrentPinballGame->outLanePikaPosition != 2 && - gCurrentPinballGame->unk1C0 == 0 && gCurrentPinballGame->unk61C == 0) + if (gCurrentPinballGame->pikaKickbackTimer == 0 && gCurrentPinballGame->outLanePikaPosition != 2 && + gCurrentPinballGame->pikaSaverTimer == 0 && gCurrentPinballGame->entityOverlayCollisionState == 0) { gCurrentPinballGame->outLanePikaPosition = 1; } @@ -356,6 +356,6 @@ void sub_19FA0(void) gCurrentPinballGame->ballPowerUpLight[1] = gCurrentPinballGame->ballPowerUpLight[0]; gCurrentPinballGame->ballPowerUpLight[0] = tmp; - gCurrentPinballGame->unk301 = 1; + gCurrentPinballGame->rampGateHitFlag = 1; } } diff --git a/src/board_process3_sapphire.c b/src/board_process3_sapphire.c index 75481b2..e61072c 100644 --- a/src/board_process3_sapphire.c +++ b/src/board_process3_sapphire.c @@ -5,198 +5,198 @@ #include "constants/bg_music.h" //#include "constants/pinball_game.h" -extern void sub_32DF8(void); +extern void HandleSapphireFlipperButtonInput(void); void SapphireBoardProcess_3A_326F4(void) { gCurrentPinballGame->catchModeArrows = 2; - gCurrentPinballGame->unk1E5 = 0; - gCurrentPinballGame->unk1E6 = 1; + gCurrentPinballGame->pikachuSpinFrame = 0; + gCurrentPinballGame->pikachuSpinPrevFrame = 1; - sub_1F2A4(); - sub_21B0C(); - sub_1F59C(); - sub_300D8(); - sub_30178(); + UpdatePikachuChargeCounter(); + AnimateCatchCounterDisplay(); + DrawPikachuSpinner(); + CalculateRubyBumperBounce(); + HandleRubyBumperHit(); - gCurrentPinballGame->unk1D8 = 0x100; - gCurrentPinballGame->unk1DA = 0x100; + gCurrentPinballGame->catchCounterAnimState = 0x100; + gCurrentPinballGame->catchCounterScaleY = 0x100; - sub_30480(); - sub_304C8(); - sub_31144(); - sub_313A0(); - sub_2E6AC(); - sub_31B30(); + InitSapphireEggCaveState(); + UpdateSapphireEggCaveAnimation(); + UpdateSapphireShopSignAnimation(); + DrawSapphireShopSignSprite(); + UpdatePelipperPondEntity(); + DrawBoardEdgeBanner(); } void SapphireBoardProcess_3B_3276C(void) { - sub_19B90(); - sub_327C0(); + BoardStateDispatcher(); + UpdateSapphireBoardEntityRendering(); if (!gMain.modeChangeFlags) - sub_328C8(); + UpdateSapphireBoardEntityLogic(); - sub_32DF8(); + HandleSapphireFlipperButtonInput(); - if (gCurrentPinballGame->unk29C) + if (gCurrentPinballGame->bgmFadeTimer) { - gCurrentPinballGame->unk29C--; - if (!gCurrentPinballGame->unk29C) + gCurrentPinballGame->bgmFadeTimer--; + if (!gCurrentPinballGame->bgmFadeTimer) m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x100); } } -void sub_327C0(void) +void UpdateSapphireBoardEntityRendering(void) { s32 temp; - sub_4F814(); - sub_1A0F4(); - sub_2CA9C(); + UpdateSapphireBoardAnimations(); + ProcessBannerCameraTransition(); + AnimateOneUpSprite(); - if (gCurrentPinballGame->unk68 < 0x5a) + if (gCurrentPinballGame->cameraYViewport < 0x5a) { - sub_304C8(); - sub_31498(); + UpdateSapphireEggCaveAnimation(); + UpdateSapphireHoleLetterSystem(); } - if (gCurrentPinballGame->unk13 < 3) + if (gCurrentPinballGame->boardState < 3) { - if (gCurrentPinballGame->unk345 == 3 && gCurrentPinballGame->unk346 == 0) + if (gCurrentPinballGame->holeLetterCount == 3 && gCurrentPinballGame->holeLetterSystemState == 0) { - gCurrentPinballGame->unk728 = 1; + gCurrentPinballGame->catchArrowPaletteActive = 1; } else { - gCurrentPinballGame->unk728 = 0; + gCurrentPinballGame->catchArrowPaletteActive = 0; } } else { - gCurrentPinballGame->unk728 = 0; + gCurrentPinballGame->catchArrowPaletteActive = 0; } - if (gCurrentPinballGame->unk68 < 0x96) + if (gCurrentPinballGame->cameraYViewport < 0x96) { - sub_2E6AC(); - sub_313A0(); + UpdatePelipperPondEntity(); + DrawSapphireShopSignSprite(); } - if (gCurrentPinballGame->unk68 < 0xC4) + if (gCurrentPinballGame->cameraYViewport < 0xC4) { - sub_30178(); - sub_2F140(); + HandleRubyBumperHit(); + AnimateWailmerEntity(); } - if (gCurrentPinballGame->unk68 < 0xCA) + if (gCurrentPinballGame->cameraYViewport < 0xCA) { - sub_2FCD0(); + DrawSapphireBumperSprites(); } - if (gCurrentPinballGame->unk68 < 0xDC) + if (gCurrentPinballGame->cameraYViewport < 0xDC) { - sub_1F59C(); + DrawPikachuSpinner(); } - sub_308DC(); + UpdateSapphireSeedotCollection(); - if (0x76 < gCurrentPinballGame->unk68) + if (0x76 < gCurrentPinballGame->cameraYViewport) { - sub_2F504(); - sub_30EB4(); + DrawZigzagoonAndShockWall(); + DrawSapphireSeedotAndBasketSprites(); } - sub_2CE80(); + UpdateSpoinkAnimation(); - if (0xA8 < gCurrentPinballGame->unk68) - sub_2D104(); + if (0xA8 < gCurrentPinballGame->cameraYViewport) + DrawSpoinkSprite(); - sub_203CC(); - sub_21B0C(); - sub_1D128(); - sub_31B30(); + UpdateCatchModeLogic(); + AnimateCatchCounterDisplay(); + UpdatePortraitSpritePositions(); + DrawBoardEdgeBanner(); - if (gCurrentPinballGame->unk194) - sub_225F0(); + if (gCurrentPinballGame->coinRewardAmount) + AnimateCoinReward(); BonusStage_HandleModeChangeFlags(); } -void sub_328C8(void) +void UpdateSapphireBoardEntityLogic(void) { - sub_300D8(); - sub_32968(); - sub_1F2A4(); + CalculateRubyBumperBounce(); + UpdateSapphireCatchModeAnimation(); + UpdatePikachuChargeCounter(); - if (gCurrentPinballGame->unk600) - gCurrentPinballGame->unk600--; + if (gCurrentPinballGame->mainBoardCountdownTimer) + gCurrentPinballGame->mainBoardCountdownTimer--; - sub_2F26C(); - sub_2E67C(); - sub_31144(); + UpdateZigzagoonEntity(); + DecrementFieldTimer(); + UpdateSapphireShopSignAnimation(); if (!(gMain.modeChangeFlags & MODE_CHANGE_END_OF_GAME)) - sub_2F79C(); + UpdateSapphireBumperLogic(); } -void sub_32914(void) +void DispatchSapphireCatchModeInit(void) { if (gMain.modeChangeFlags != MODE_CHANGE_NONE) return; - switch (gCurrentPinballGame->unk25) + switch (gCurrentPinballGame->ballCatchState) { case 1: - sub_32B74(); + InitSapphireWailmerCatch(); break; case 3: - sub_329B0(); + InitSapphireEvolutionShopCatch(); break; case 4: - sub_1C560(); + InitCenterTrapMode(); break; } - gCurrentPinballGame->unk26 = 60; + gCurrentPinballGame->collisionCooldownTimer = 60; } -void sub_32968(void) +void UpdateSapphireCatchModeAnimation(void) { - if (gCurrentPinballGame->unk26) - gCurrentPinballGame->unk26--; + if (gCurrentPinballGame->collisionCooldownTimer) + gCurrentPinballGame->collisionCooldownTimer--; - switch (gCurrentPinballGame->unk25) + switch (gCurrentPinballGame->ballCatchState) { case 1: - sub_32BE4(); + UpdateSapphireWailmerCatchSequence(); break; case 3: - sub_329F4(); + UpdateSapphireEvolutionShopSequence(); break; case 4: - sub_1C5AC(); //Center Hole + AnimateCenterTrapSequence(); //Center Hole break; } } -void sub_329B0(void) +void InitSapphireEvolutionShopCatch(void) { - gCurrentPinballGame->unk28 = 0xB4; - gCurrentPinballGame->unk1BA = 0xB4; + gCurrentPinballGame->modeAnimTimer = 0xB4; + gCurrentPinballGame->shopEntryTimer = 0xB4; gCurrentPinballGame->scoreAddedInFrame = 500000; gMain.blendControl = 0xCE; gMain.blendBrightness = 0; - gCurrentPinballGame->unk5F7 = 1; + gCurrentPinballGame->ballUpgradeTimerFrozen = 1; } -void sub_329F4(void) +void UpdateSapphireEvolutionShopSequence(void) { s16 i; - if (gCurrentPinballGame->unk28 > 0x18) + if (gCurrentPinballGame->modeAnimTimer > 0x18) { - gCurrentPinballGame->ball->unk0 = 1; - gCurrentPinballGame->unk1F = 1; - gCurrentPinballGame->unk28--; + gCurrentPinballGame->ball->ballHidden = 1; + gCurrentPinballGame->ballFrozenState = 1; + gCurrentPinballGame->modeAnimTimer--; gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; gCurrentPinballGame->ball->positionQ0.x = 58; @@ -206,128 +206,128 @@ void sub_329F4(void) gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ0.x << 8; gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ0.y << 8; - if (gCurrentPinballGame->unk28 <= 0x31) + if (gCurrentPinballGame->modeAnimTimer <= 0x31) { - gCurrentPinballGame->unk28++; + gCurrentPinballGame->modeAnimTimer++; } - sub_1B140(gCurrentPinballGame->unk1A5); + UpdateShopEntryAnimation(gCurrentPinballGame->evolutionShopActive); - if (gCurrentPinballGame->unk1A5) + if (gCurrentPinballGame->evolutionShopActive) { for (i = 0; i < 2; i++) { - gCurrentPinballGame->unk36C[i] = 10; - gCurrentPinballGame->unk36E[i] = 0; - gCurrentPinballGame->unk36A[i] = 4; + gCurrentPinballGame->sapphireBumperAnimKeyframe[i] = 10; + gCurrentPinballGame->sapphireBumperAnimSubTimer[i] = 0; + gCurrentPinballGame->sapphireBumperState[i] = 4; } } } - else if (gCurrentPinballGame->unk28 > 0) + else if (gCurrentPinballGame->modeAnimTimer > 0) { - gCurrentPinballGame->unk28--; + gCurrentPinballGame->modeAnimTimer--; } else { - gCurrentPinballGame->ball->unk0 = 0; - gCurrentPinballGame->unk1F = 0; - gCurrentPinballGame->unk26 = 0x3C; + gCurrentPinballGame->ball->ballHidden = 0; + gCurrentPinballGame->ballFrozenState = 0; + gCurrentPinballGame->collisionCooldownTimer = 0x3C; gCurrentPinballGame->ball->velocity.x = 0x60; gCurrentPinballGame->ball->velocity.y = 0xC0; gCurrentPinballGame->ball->positionQ0.x = 0x3C; gCurrentPinballGame->ball->positionQ0.y = 0xB4; - gCurrentPinballGame->ball->unk6 = 0; - gCurrentPinballGame->unk5F7 = 0; + gCurrentPinballGame->ball->spinSpeed = 0; + gCurrentPinballGame->ballUpgradeTimerFrozen = 0; gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2; gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2; - gCurrentPinballGame->unk25 = 0; + gCurrentPinballGame->ballCatchState = 0; m4aSongNumStart(SE_UNKNOWN_0xC3); - if (gCurrentPinballGame->unk72E > 2 && gCurrentPinballGame->evolvablePartySize > 0) { - sub_19B64(6); + if (gCurrentPinballGame->evoArrowProgress > 2 && gCurrentPinballGame->evolvablePartySize > 0) { + RequestBoardStateTransition(6); } } } -void sub_32B74(void) +void InitSapphireWailmerCatch(void) { - if (gCurrentPinballGame->unk72F > 1) - sub_19B64(4); + if (gCurrentPinballGame->catchArrowProgress > 1) + RequestBoardStateTransition(4); - gCurrentPinballGame->unk28 = 100; - gCurrentPinballGame->unk2F4 = 2; - gCurrentPinballGame->unk5FC = 0; - gCurrentPinballGame->unk5FE = 30; - gCurrentPinballGame->unk5FB = 0; + gCurrentPinballGame->modeAnimTimer = 100; + gCurrentPinballGame->catchHoleAnimFrame = 2; + gCurrentPinballGame->cameraScrollOffset = 0; + gCurrentPinballGame->cameraScrollTarget = 30; + gCurrentPinballGame->cameraScrollEnabled = 0; gCurrentPinballGame->scoreAddedInFrame = 50000; m4aSongNumStart(SE_WHISCASH_CATCH_BALL); PlayRumble(8); } -void sub_32BE4(void) +void UpdateSapphireWailmerCatchSequence(void) { - if (gCurrentPinballGame->unk28) + if (gCurrentPinballGame->modeAnimTimer) { - gCurrentPinballGame->unk5F7 = 1; - gCurrentPinballGame->unk1F = 1; - gCurrentPinballGame->unk28--; + gCurrentPinballGame->ballUpgradeTimerFrozen = 1; + gCurrentPinballGame->ballFrozenState = 1; + gCurrentPinballGame->modeAnimTimer--; gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; - gCurrentPinballGame->ball->unk6 = 0; - if (gCurrentPinballGame->unk28 > 97) + gCurrentPinballGame->ball->spinSpeed = 0; + if (gCurrentPinballGame->modeAnimTimer > 97) { - gCurrentPinballGame->unk5FA = 1; - gCurrentPinballGame->unk2F4 = 2; + gCurrentPinballGame->boardEntityActive = 1; + gCurrentPinballGame->catchHoleAnimFrame = 2; gCurrentPinballGame->ball->positionQ0.x = 0xb5; gCurrentPinballGame->ball->positionQ0.y = 0xc3; } - else if (gCurrentPinballGame->unk28 > 94) + else if (gCurrentPinballGame->modeAnimTimer > 94) { - gCurrentPinballGame->unk2F4 = 3; + gCurrentPinballGame->catchHoleAnimFrame = 3; gCurrentPinballGame->ball->positionQ0.x = 0xb8; gCurrentPinballGame->ball->positionQ0.y = 0xbb; } - else if (gCurrentPinballGame->unk28 > 91) + else if (gCurrentPinballGame->modeAnimTimer > 91) { - gCurrentPinballGame->ball->unk0 = 1; - gCurrentPinballGame->unk2F4 = 4; + gCurrentPinballGame->ball->ballHidden = 1; + gCurrentPinballGame->catchHoleAnimFrame = 4; } - else if (gCurrentPinballGame->unk28 > 83) + else if (gCurrentPinballGame->modeAnimTimer > 83) { - gCurrentPinballGame->unk2F4 = 5; + gCurrentPinballGame->catchHoleAnimFrame = 5; } - else if (gCurrentPinballGame->unk28 > 34) + else if (gCurrentPinballGame->modeAnimTimer > 34) { - gCurrentPinballGame->unk2F4 = 6; + gCurrentPinballGame->catchHoleAnimFrame = 6; } - else if (gCurrentPinballGame->unk28 > 26) + else if (gCurrentPinballGame->modeAnimTimer > 26) { - gCurrentPinballGame->unk2F4 = 7; + gCurrentPinballGame->catchHoleAnimFrame = 7; } - else if (gCurrentPinballGame->unk28 > 18) + else if (gCurrentPinballGame->modeAnimTimer > 18) { - gCurrentPinballGame->unk2F4 = 8; + gCurrentPinballGame->catchHoleAnimFrame = 8; } - else if (gCurrentPinballGame->unk28 > 10) + else if (gCurrentPinballGame->modeAnimTimer > 10) { - gCurrentPinballGame->unk2F4 = 9; + gCurrentPinballGame->catchHoleAnimFrame = 9; } - else if (gCurrentPinballGame->unk28 > 4) + else if (gCurrentPinballGame->modeAnimTimer > 4) { - gCurrentPinballGame->ball->unk0 = 0; - gCurrentPinballGame->unk2F4 = 10; + gCurrentPinballGame->ball->ballHidden = 0; + gCurrentPinballGame->catchHoleAnimFrame = 10; gCurrentPinballGame->ball->positionQ0.x = 0xb5; gCurrentPinballGame->ball->positionQ0.y = 0xc3; } else { - gCurrentPinballGame->unk2F4 = 11; + gCurrentPinballGame->catchHoleAnimFrame = 11; gCurrentPinballGame->ball->positionQ0.x = 0xb0; gCurrentPinballGame->ball->positionQ0.y = 0xca; } @@ -339,36 +339,36 @@ void sub_32BE4(void) } else { - gCurrentPinballGame->unk2F4 = 0; - gCurrentPinballGame->unk1F = 0; - gCurrentPinballGame->unk26 = 60; - gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->catchHoleAnimFrame = 0; + gCurrentPinballGame->ballFrozenState = 0; + gCurrentPinballGame->collisionCooldownTimer = 60; + gCurrentPinballGame->ball->spinSpeed = 0; gCurrentPinballGame->ball->velocity.x = -0x66; gCurrentPinballGame->ball->velocity.y = 0xC8; PlayRumble(7); - gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->ball->spinSpeed = 0; gCurrentPinballGame->ball->positionQ0.x = 0xAB; gCurrentPinballGame->ball->positionQ0.y = 0xD4; gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2; gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2; gCurrentPinballGame->ball->prevPositionQ1 = gCurrentPinballGame->ball->positionQ1; - gCurrentPinballGame->unk25 = 0; - gCurrentPinballGame->unk5F7 = 0; + gCurrentPinballGame->ballCatchState = 0; + gCurrentPinballGame->ballUpgradeTimerFrozen = 0; m4aSongNumStart(SE_WHISCASH_SPIT_BALL); - gCurrentPinballGame->unk5FE = 0; - gCurrentPinballGame->unk5FB = 1; - gCurrentPinballGame->unk5FA = 0; + gCurrentPinballGame->cameraScrollTarget = 0; + gCurrentPinballGame->cameraScrollEnabled = 1; + gCurrentPinballGame->boardEntityActive = 0; } } -void sub_32DF8(void) +void HandleSapphireFlipperButtonInput(void) { int tmp; if (gCurrentPinballGame->newButtonActions[0]) { - if (gCurrentPinballGame->unk1C4 == 0 && gCurrentPinballGame->outLanePikaPosition != 2 && - gCurrentPinballGame->unk1C0 == 0 && gCurrentPinballGame->unk61C == 0) + if (gCurrentPinballGame->pikaKickbackTimer == 0 && gCurrentPinballGame->outLanePikaPosition != 2 && + gCurrentPinballGame->pikaSaverTimer == 0 && gCurrentPinballGame->entityOverlayCollisionState == 0) { gCurrentPinballGame->outLanePikaPosition = 0; } @@ -387,8 +387,8 @@ void sub_32DF8(void) if (gCurrentPinballGame->newButtonActions[1]) { - if (gCurrentPinballGame->unk1C4 == 0 && gCurrentPinballGame->outLanePikaPosition != 2 && - gCurrentPinballGame->unk1C0 == 0 && gCurrentPinballGame->unk61C == 0) + if (gCurrentPinballGame->pikaKickbackTimer == 0 && gCurrentPinballGame->outLanePikaPosition != 2 && + gCurrentPinballGame->pikaSaverTimer == 0 && gCurrentPinballGame->entityOverlayCollisionState == 0) { gCurrentPinballGame->outLanePikaPosition = 1; } diff --git a/src/board_process3_spheal.c b/src/board_process3_spheal.c index 01cb2b9..7198830 100644 --- a/src/board_process3_spheal.c +++ b/src/board_process3_spheal.c @@ -3,14 +3,14 @@ #include "main.h" #include "constants/bg_music.h" -struct Unk_086AFAC0 +struct SphealFlightPath { - struct Vector16 *unk0; - s16 unk4; + struct Vector16 *pathWaypoints; + s16 pathLength; }; -extern const struct Unk_086AFAC0 gUnknown_086AFAC0[]; +extern const struct SphealFlightPath gSphealFlightPathData[]; -extern const s16 gUnknown_086AFC16[][4]; +extern const s16 gSphealWhiscashAnimFrameset[][4]; extern struct SongHeader se_unk_137; extern struct SongHeader se_unk_138; extern struct SongHeader se_unk_139; @@ -18,20 +18,20 @@ extern struct SongHeader se_unk_13b; extern struct SongHeader se_unk_13c; extern struct SongHeader se_unk_13d; -extern const s8 gUnknown_08137D60[]; -extern const u16 gUnknown_0837A4E8[]; -extern const u8 gUnknown_084AF9EC[][0x200]; -extern const u8 gUnknown_084AFFEC[][0x180]; -extern const u8 gUnknown_084B046C[][0x120]; -extern const u8 gUnknown_084B47EC[][0x800]; -extern const u8 gUnknown_084B77EC[]; +extern const s8 gSphealScoreDigitSpriteIndices[]; +extern const u16 gSphealWaterBackgroundTilemap[]; +extern const u8 gSphealScoreCounterDigitSprites[][0x200]; +extern const u8 gSphealExtendedScoreSprites[][0x180]; +extern const u8 gSphealFlyingEnemyVariantSprites[][0x120]; +extern const u8 gSphealMinionBodySprites[][0x800]; +extern const u8 gSphealResultsScreenGfx[]; extern const u8 gWhiscash_Gfx[][0x480]; -extern const u8 gPelliper_Gfx[][0x480]; -extern const s16 gUnknown_086AEED6[]; -extern const u16 gUnknown_086AFAE0[][2]; -extern const u16 gUnknown_086AFAE2[][2]; -extern const u16 gUnknown_086AFB2C[][3]; -extern const u16 gUnknown_086B56D8[126][4][3]; +extern const u8 gPelipper_Gfx[][0x480]; +extern const s16 gWaterTilePaletteCycle[]; +extern const u16 gSphealFramesetToSpriteMap[][2]; +extern const u16 gSphealAnimTimingTable[][2]; +extern const u16 gSphealFlyingEnemyFramesetTable[][3]; +extern const u16 gSphealFlyingEnemyOamData[126][4][3]; void SphealBoardProcess_3A_42E48(void) @@ -44,32 +44,32 @@ void SphealBoardProcess_3A_42E48(void) Random(); gMain.rngValue = gMain.systemFrameCount; - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk17 = 0; - gCurrentPinballGame->unk13 = 0; - gCurrentPinballGame->unk294 = 1; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardSubState = 0; + gCurrentPinballGame->boardState = 0; + gCurrentPinballGame->boardModeType = 1; gCurrentPinballGame->eventTimer = gCurrentPinballGame->timerBonus + 7200; gCurrentPinballGame->timerBonus = 0; - gCurrentPinballGame->unk392 = 0; - gCurrentPinballGame->unk383 = 0; - gCurrentPinballGame->unk388 = 0; - gCurrentPinballGame->ball->unk0 = 1; - gCurrentPinballGame->unk1F = 1; + gCurrentPinballGame->ballRespawnTimer = 0; + gCurrentPinballGame->ballGrabbed = 0; + gCurrentPinballGame->ballRespawnState = 0; + gCurrentPinballGame->ball->ballHidden = 1; + gCurrentPinballGame->ballFrozenState = 1; gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; - gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->ball->spinSpeed = 0; gCurrentPinballGame->returnToMainBoardFlag = 0; - gCurrentPinballGame->unk53A = 0; - gCurrentPinballGame->unk542 = 0; - gCurrentPinballGame->unk544 = 0; + gCurrentPinballGame->resultsAnimTimer = 0; + gCurrentPinballGame->scoreCountdownTimer = 0; + gCurrentPinballGame->totalBonusScore = 0; gCurrentPinballGame->unk54A = 0; - gCurrentPinballGame->unk394 = 0; + gCurrentPinballGame->bannerSlideYOffset = 0; gCurrentPinballGame->unk590 = 0; - gCurrentPinballGame->unk591 = 0; - gCurrentPinballGame->unk592 = 0; + gCurrentPinballGame->deliveryAnimFrameIndex = 0; + gCurrentPinballGame->deliveryAnimTimer = 0; gCurrentPinballGame->unk594 = 0; gCurrentPinballGame->unk596 = 0; - gCurrentPinballGame->unk7E = 1; + gCurrentPinballGame->ballDeliveryActive = 1; for (i = 0; i < 3; i++) { @@ -80,49 +80,49 @@ void SphealBoardProcess_3A_42E48(void) for (i = 0; i < 3; i++) { - gCurrentPinballGame->unk530[i] = 0; - gCurrentPinballGame->unk533[i] = 0; - gCurrentPinballGame->unk536[i] = 0; - gCurrentPinballGame->unk53C[i] = 0; + gCurrentPinballGame->knockdownTargetIndex[i] = 0; + gCurrentPinballGame->knockdownBounceCount[i] = 0; + gCurrentPinballGame->knockdownPhase[i] = 0; + gCurrentPinballGame->knockdownStunTimer[i] = 0; } for (i = 0; i < 2; i++) { - gCurrentPinballGame->unk52C[i] = 0; - gCurrentPinballGame->unk52E[i] = 0; - gCurrentPinballGame->unk548[i] = 0; - gCurrentPinballGame->unk54B[i] = 0; - gCurrentPinballGame->unk54D[i] = 0; - gCurrentPinballGame->unk54F[i] = 0; - gCurrentPinballGame->unk551[i] = 0; - gCurrentPinballGame->unk553[i] = 0; - gCurrentPinballGame->unk555[i] = 0; - gCurrentPinballGame->unk557[i] = 0; - gCurrentPinballGame->unk559[i] = 0; - gCurrentPinballGame->unk55B[i] = 0; - gCurrentPinballGame->unk55D[i] = 0; - gCurrentPinballGame->unk55F[i] = 0; - gCurrentPinballGame->unk562[i] = 0; - gCurrentPinballGame->unk566[i] = 0; - gCurrentPinballGame->unk56A[i] = 0; - gCurrentPinballGame->unk570[i].x = 0; - gCurrentPinballGame->unk570[i].y = 0; - gCurrentPinballGame->unk578[i].x = 0; - gCurrentPinballGame->unk578[i].y = 0; - gCurrentPinballGame->unk580[i].x = 0; - gCurrentPinballGame->unk580[i].y = 0; + gCurrentPinballGame->sphealKnockdownCount[i] = 0; + gCurrentPinballGame->sphealKnockdownDisplayCount[i] = 0; + gCurrentPinballGame->minionHitFlashTimer[i] = 0; + gCurrentPinballGame->flyingEnemySinkSpeed[i] = 0; + gCurrentPinballGame->flyingEnemyHitCooldown[i] = 0; + gCurrentPinballGame->flyingEnemyCollisionType[i] = 0; + gCurrentPinballGame->flyingEnemyDirection[i] = 0; + gCurrentPinballGame->flyingEnemyState[i] = 0; + gCurrentPinballGame->flyingEnemyPrevSpriteIndex[i] = 0; + gCurrentPinballGame->flyingEnemySpawnVariant[i] = 0; + gCurrentPinballGame->flyingEnemyPathIndex[i] = 0; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 0; + gCurrentPinballGame->flyingEnemyOamXOffset[i] = 0; + gCurrentPinballGame->flyingEnemyOamYOffset[i] = 0; + gCurrentPinballGame->flyingEnemyAnimTimer[i] = 0; + gCurrentPinballGame->flyingEnemyScreenY[i] = 0; + gCurrentPinballGame->flyingEnemyFlyTimer[i] = 0; + gCurrentPinballGame->flyingEnemyCollisionPos[i].x = 0; + gCurrentPinballGame->flyingEnemyCollisionPos[i].y = 0; + gCurrentPinballGame->flyingEnemyVelocity[i].x = 0; + gCurrentPinballGame->flyingEnemyVelocity[i].y = 0; + gCurrentPinballGame->flyingEnemyPositionQ8[i].x = 0; + gCurrentPinballGame->flyingEnemyPositionQ8[i].y = 0; } - gCurrentPinballGame->unk1A = 0; - sub_4387C(); - sub_43500(); - sub_44D58(); - sub_45E08(); + gCurrentPinballGame->flippersDisabled = 0; + UpdateSphealEntityLogic(); + UpdateSealeoEntityLogic(); + UpdateSphealScoreAndDelivery(); + AnimateSphealBackground(); for (i = 0; i < 0x800; i++) - gUnknown_03005C00[0x400 + i] = 0x200; + gBG0TilemapBuffer[0x400 + i] = 0x200; - DmaCopy16(3, &gUnknown_03005C00[0x400], (void *)0x06001000, 0x1000); + DmaCopy16(3, &gBG0TilemapBuffer[0x400], (void *)0x06001000, 0x1000); gMain.blendControl = 0x1C42; gMain.blendAlpha = 0xC04; @@ -130,166 +130,166 @@ void SphealBoardProcess_3A_42E48(void) { u16 var0 = i - ((i / 0x20) * 0x20) - 2; if (var0 < 28) - gUnknown_03005C00[0x800 + i] = 0x9000; + gBG0TilemapBuffer[0x800 + i] = 0x9000; } gMain.bgOffsets[1].yOffset = 126; - DmaCopy16(3, &gUnknown_03005C00[0x800], (void *)0x06001140, 0x280); - DmaCopy16(3, &gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], (void *)0x05000220, 0x20); + DmaCopy16(3, &gBG0TilemapBuffer[0x800], (void *)0x06001140, 0x280); + DmaCopy16(3, &gBallPalettes[gCurrentPinballGame->ballUpgradeType], (void *)0x05000220, 0x20); m4aSongNumStart(MUS_BONUS_FIELD_SPHEAL); - DmaCopy16(3, gUnknown_081B36A4, (void *)0x05000320, 0x20); + DmaCopy16(3, gBonusStageObjPal, (void *)0x05000320, 0x20); } void SphealBoardProcess_3B_43228(void) { - switch (gCurrentPinballGame->unk13) + switch (gCurrentPinballGame->boardState) { case 0: - gCurrentPinballGame->unk5F7 = 1; - if (gCurrentPinballGame->unk18 < 340) + gCurrentPinballGame->ballUpgradeTimerFrozen = 1; + if (gCurrentPinballGame->stageTimer < 340) { - if (gCurrentPinballGame->unk18 < 321) - gCurrentPinballGame->unkE6 = (gCurrentPinballGame->unk18 / 5) + 0xFFC0; + if (gCurrentPinballGame->stageTimer < 321) + gCurrentPinballGame->cameraYAdjust = (gCurrentPinballGame->stageTimer / 5) + 0xFFC0; - if (gCurrentPinballGame->unk18 == 325) - gCurrentPinballGame->unk294 = 2; + if (gCurrentPinballGame->stageTimer == 325) + gCurrentPinballGame->boardModeType = 2; - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unk13 = 1; - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->boardState = 1; + gCurrentPinballGame->stageTimer = 0; } break; case 1: if (gCurrentPinballGame->eventTimer == 0) { - gCurrentPinballGame->unk294 = 3; - if (gCurrentPinballGame->unk18 == 0) + gCurrentPinballGame->boardModeType = 3; + if (gCurrentPinballGame->stageTimer == 0) { m4aMPlayAllStop(); MPlayStart(&gMPlayInfo_SE1, &se_unk_13b); gMain.modeChangeFlags = MODE_CHANGE_BONUS_BANNER; - gCurrentPinballGame->unk388 = 2; - gCurrentPinballGame->unk392 = 0; + gCurrentPinballGame->ballRespawnState = 2; + gCurrentPinballGame->ballRespawnTimer = 0; } - if (gCurrentPinballGame->unk18 < 60) + if (gCurrentPinballGame->stageTimer < 60) { - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unk13 = 2; - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->boardState = 2; + gCurrentPinballGame->stageTimer = 0; } } break; case 2: - if (gCurrentPinballGame->unk18 == 0) + if (gCurrentPinballGame->stageTimer == 0) { m4aMPlayAllStop(); m4aSongNumStart(MUS_SUCCESS3); } - if (gCurrentPinballGame->unk18 < 20) + if (gCurrentPinballGame->stageTimer < 20) { - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unk13 = 3; - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->boardState = 3; + gCurrentPinballGame->stageTimer = 0; gMain.spriteGroups[7].available = 1; gMain.spriteGroups[8].available = 1; gMain.spriteGroups[9].available = 1; gMain.spriteGroups[10].available = 1; - DmaCopy16(3, gUnknown_084B77EC, (void *)0x06015800, 0x800); - gCurrentPinballGame->unk394 = -126; - gCurrentPinballGame->unk5FA = 1; + DmaCopy16(3, gSphealResultsScreenGfx, (void *)0x06015800, 0x800); + gCurrentPinballGame->bannerSlideYOffset = -126; + gCurrentPinballGame->boardEntityActive = 1; } break; case 3: - sub_45E90(); + UpdateSphealResultsScreen(); if (gCurrentPinballGame->scoreCounterAnimationEnabled) - gCurrentPinballGame->unk18 = 181; + gCurrentPinballGame->stageTimer = 181; - if (gCurrentPinballGame->unk18 == 180 && gCurrentPinballGame->unk544 != 0) + if (gCurrentPinballGame->stageTimer == 180 && gCurrentPinballGame->totalBonusScore != 0) { gCurrentPinballGame->scoreCounterAnimationEnabled = TRUE; gCurrentPinballGame->scoreAddStepSize = 400000; - gCurrentPinballGame->scoreAddedInFrame = gCurrentPinballGame->unk544; + gCurrentPinballGame->scoreAddedInFrame = gCurrentPinballGame->totalBonusScore; } - if (gCurrentPinballGame->unk18 > 189 && JOY_NEW(A_BUTTON)) - gCurrentPinballGame->unk18 = 540; + if (gCurrentPinballGame->stageTimer > 189 && JOY_NEW(A_BUTTON)) + gCurrentPinballGame->stageTimer = 540; - if (gCurrentPinballGame->unk18 < 540) + if (gCurrentPinballGame->stageTimer < 540) { - if (gCurrentPinballGame->unk18 == 4) + if (gCurrentPinballGame->stageTimer == 4) m4aSongNumStart(SE_UNKNOWN_0xA4); - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk13 = 4; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardState = 4; } - gCurrentPinballGame->unk5FA = 1; + gCurrentPinballGame->boardEntityActive = 1; break; case 4: - sub_45E90(); - if (gCurrentPinballGame->unk18 < 30) + UpdateSphealResultsScreen(); + if (gCurrentPinballGame->stageTimer < 30) { - gCurrentPinballGame->unk18++; - if (gCurrentPinballGame->unk18 == 2) + gCurrentPinballGame->stageTimer++; + if (gCurrentPinballGame->stageTimer == 2) m4aSongNumStart(SE_UNKNOWN_0xA4); } else { - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk13 = 5; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardState = 5; } break; case 5: - sub_45E90(); + UpdateSphealResultsScreen(); gCurrentPinballGame->returnToMainBoardFlag = 1; - gCurrentPinballGame->unk5FA = 1; + gCurrentPinballGame->boardEntityActive = 1; break; } - sub_4387C(); - sub_43500(); - sub_44D58(); - sub_45E08(); + UpdateSphealEntityLogic(); + UpdateSealeoEntityLogic(); + UpdateSphealScoreAndDelivery(); + AnimateSphealBackground(); if (gCurrentPinballGame->returnToMainBoardFlag) { - gCurrentPinballGame->unk5FA = 1; + gCurrentPinballGame->boardEntityActive = 1; FadeToMainBoard(); } BonusStage_HandleModeChangeFlags(); } -void sub_43500(void) +void UpdateSealeoEntityLogic(void) { s16 i; struct SpriteGroup *group; struct OamDataSimple *oamSimple; s16 var0; - if (gCurrentPinballGame->unk13 < 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE) - sub_455D0(); + if (gCurrentPinballGame->boardState < 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE) + UpdateSealeoKnockdownPhysics(); - if (gCurrentPinballGame->unk13 < 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE) + if (gCurrentPinballGame->boardState < 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE) { for (i = 0; i < 2; i++) { - if (gCurrentPinballGame->unk548[i] == 23) + if (gCurrentPinballGame->minionHitFlashTimer[i] == 23) { MPlayStart(&gMPlayInfo_SE1, &se_unk_13c); gCurrentPinballGame->scoreAddedInFrame = 5000; @@ -304,13 +304,13 @@ void sub_43500(void) gCurrentPinballGame->minionState[i] = 1; break; case 1: - if (gCurrentPinballGame->unk548[i] > 0) + if (gCurrentPinballGame->minionHitFlashTimer[i] > 0) { - gCurrentPinballGame->unk548[i]--; + gCurrentPinballGame->minionHitFlashTimer[i]--; } else { - if (gUnknown_086AFAE2[gCurrentPinballGame->minionFramesetIx[i]][0] > gCurrentPinballGame->minionStateTimer[i]) + if (gSphealAnimTimingTable[gCurrentPinballGame->minionFramesetIx[i]][0] > gCurrentPinballGame->minionStateTimer[i]) { gCurrentPinballGame->minionStateTimer[i]++; } @@ -324,9 +324,9 @@ void sub_43500(void) } break; case 2: - if (gCurrentPinballGame->unk548[i] > 0) + if (gCurrentPinballGame->minionHitFlashTimer[i] > 0) { - gCurrentPinballGame->unk548[i]--; + gCurrentPinballGame->minionHitFlashTimer[i]--; } else { @@ -342,13 +342,13 @@ void sub_43500(void) } break; case 3: - if (gCurrentPinballGame->unk548[i] > 0) + if (gCurrentPinballGame->minionHitFlashTimer[i] > 0) { - gCurrentPinballGame->unk548[i]--; + gCurrentPinballGame->minionHitFlashTimer[i]--; } else { - if (gUnknown_086AFAE2[gCurrentPinballGame->minionFramesetIx[i]][0] > gCurrentPinballGame->minionStateTimer[i]) + if (gSphealAnimTimingTable[gCurrentPinballGame->minionFramesetIx[i]][0] > gCurrentPinballGame->minionStateTimer[i]) { gCurrentPinballGame->minionStateTimer[i]++; } @@ -371,14 +371,14 @@ void sub_43500(void) group = &gMain.spriteGroups[22]; if (group->available) { - group->baseX = 100 - gCurrentPinballGame->unk58; - group->baseY = 94 - gCurrentPinballGame->unk5A; - if (gCurrentPinballGame->unk548[0] > 0) + group->baseX = 100 - gCurrentPinballGame->cameraXOffset; + group->baseY = 94 - gCurrentPinballGame->cameraYOffset; + if (gCurrentPinballGame->minionHitFlashTimer[0] > 0) var0 = 0; else - var0 = gUnknown_086AFAE0[gCurrentPinballGame->minionFramesetIx[0]][0]; + var0 = gSphealFramesetToSpriteMap[gCurrentPinballGame->minionFramesetIx[0]][0]; - DmaCopy16(3, gUnknown_084B47EC[var0], (void *)0x060114A0, 0x600); + DmaCopy16(3, gSphealMinionBodySprites[var0], (void *)0x060114A0, 0x600); oamSimple = &group->oam[0]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; @@ -387,21 +387,21 @@ void sub_43500(void) group = &gMain.spriteGroups[21]; if (group->available) { - group->baseX = 140 - gCurrentPinballGame->unk58; - group->baseY = 94 - gCurrentPinballGame->unk5A; - if (gCurrentPinballGame->unk548[1] > 0) + group->baseX = 140 - gCurrentPinballGame->cameraXOffset; + group->baseY = 94 - gCurrentPinballGame->cameraYOffset; + if (gCurrentPinballGame->minionHitFlashTimer[1] > 0) var0 = 0; else - var0 = gUnknown_086AFAE0[gCurrentPinballGame->minionFramesetIx[1]][0]; + var0 = gSphealFramesetToSpriteMap[gCurrentPinballGame->minionFramesetIx[1]][0]; - DmaCopy16(3, gUnknown_084B47EC[var0], (void *)0x06010CA0, 0x600); + DmaCopy16(3, gSphealMinionBodySprites[var0], (void *)0x06010CA0, 0x600); oamSimple = &group->oam[0]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } } -void sub_4387C(void) +void UpdateSphealEntityLogic(void) { s16 i; s16 j; @@ -414,419 +414,419 @@ void sub_4387C(void) const u16 *src; int var3; s16 var4; - const struct Unk_086AFAC0 *var5; + const struct SphealFlightPath *var5; - if (gCurrentPinballGame->unk13 == 1 && gMain.modeChangeFlags == MODE_CHANGE_NONE) + if (gCurrentPinballGame->boardState == 1 && gMain.modeChangeFlags == MODE_CHANGE_NONE) { for (i = 0; i < 2; i++) { - switch (gCurrentPinballGame->unk553[i]) + switch (gCurrentPinballGame->flyingEnemyState[i]) { case 0: - gCurrentPinballGame->unk553[i] = 1; - gCurrentPinballGame->unk55B[i] = 0; - gCurrentPinballGame->unk562[i] = 0; - gCurrentPinballGame->unk54F[i] = 0; - gCurrentPinballGame->unk557[i] = -1; + gCurrentPinballGame->flyingEnemyState[i] = 1; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 0; + gCurrentPinballGame->flyingEnemyAnimTimer[i] = 0; + gCurrentPinballGame->flyingEnemyCollisionType[i] = 0; + gCurrentPinballGame->flyingEnemySpawnVariant[i] = -1; break; case 1: - if (gCurrentPinballGame->unk562[i] < i * 30 + 120) + if (gCurrentPinballGame->flyingEnemyAnimTimer[i] < i * 30 + 120) { - gCurrentPinballGame->unk562[i]++; + gCurrentPinballGame->flyingEnemyAnimTimer[i]++; } else { u16 var0 = gMain.systemFrameCount + Random(); - gCurrentPinballGame->unk557[i] = var0 % 6; - if (gCurrentPinballGame->unk557[0] == gCurrentPinballGame->unk557[1]) - gCurrentPinballGame->unk557[i] = (gCurrentPinballGame->unk557[i] + 2) % 6; + gCurrentPinballGame->flyingEnemySpawnVariant[i] = var0 % 6; + if (gCurrentPinballGame->flyingEnemySpawnVariant[0] == gCurrentPinballGame->flyingEnemySpawnVariant[1]) + gCurrentPinballGame->flyingEnemySpawnVariant[i] = (gCurrentPinballGame->flyingEnemySpawnVariant[i] + 2) % 6; - if (gCurrentPinballGame->unk557[i] < 2) + if (gCurrentPinballGame->flyingEnemySpawnVariant[i] < 2) { - if (gCurrentPinballGame->unk557[i] == 0) + if (gCurrentPinballGame->flyingEnemySpawnVariant[i] == 0) { - gCurrentPinballGame->unk580[i].x = 0x4900; - gCurrentPinballGame->unk580[i].y = 0xAB00; - gCurrentPinballGame->unk551[i] = 0; + gCurrentPinballGame->flyingEnemyPositionQ8[i].x = 0x4900; + gCurrentPinballGame->flyingEnemyPositionQ8[i].y = 0xAB00; + gCurrentPinballGame->flyingEnemyDirection[i] = 0; } else { - gCurrentPinballGame->unk580[i].x = 0xA700; - gCurrentPinballGame->unk580[i].y = 0xAC00; - gCurrentPinballGame->unk551[i] = 1; + gCurrentPinballGame->flyingEnemyPositionQ8[i].x = 0xA700; + gCurrentPinballGame->flyingEnemyPositionQ8[i].y = 0xAC00; + gCurrentPinballGame->flyingEnemyDirection[i] = 1; } - gCurrentPinballGame->unk55B[i] = 9; - gCurrentPinballGame->unk553[i] = 7; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 9; + gCurrentPinballGame->flyingEnemyState[i] = 7; } else { - gCurrentPinballGame->unk551[i] = (gMain.systemFrameCount + Random()) % 2; - if (gCurrentPinballGame->unk551[i]) + gCurrentPinballGame->flyingEnemyDirection[i] = (gMain.systemFrameCount + Random()) % 2; + if (gCurrentPinballGame->flyingEnemyDirection[i]) { - if (gCurrentPinballGame->unk557[i] == 5) - gCurrentPinballGame->unk580[i].x = (((Random() % 101) / 5) + 80) << 8; + if (gCurrentPinballGame->flyingEnemySpawnVariant[i] == 5) + gCurrentPinballGame->flyingEnemyPositionQ8[i].x = (((Random() % 101) / 5) + 80) << 8; else - gCurrentPinballGame->unk580[i].x = (((Random() % 101) / 2) + 50) << 8; + gCurrentPinballGame->flyingEnemyPositionQ8[i].x = (((Random() % 101) / 2) + 50) << 8; } else { - if (gCurrentPinballGame->unk557[i] == 5) - gCurrentPinballGame->unk580[i].x = (((Random() % 101) / 5) + 140) << 8; + if (gCurrentPinballGame->flyingEnemySpawnVariant[i] == 5) + gCurrentPinballGame->flyingEnemyPositionQ8[i].x = (((Random() % 101) / 5) + 140) << 8; else - gCurrentPinballGame->unk580[i].x = (((Random() % 101) / 2) + 140) << 8; + gCurrentPinballGame->flyingEnemyPositionQ8[i].x = (((Random() % 101) / 2) + 140) << 8; } - gCurrentPinballGame->unk580[i].y = 0xAF00 + ((gCurrentPinballGame->unk557[i] - 2) * 0xA00); + gCurrentPinballGame->flyingEnemyPositionQ8[i].y = 0xAF00 + ((gCurrentPinballGame->flyingEnemySpawnVariant[i] - 2) * 0xA00); - gCurrentPinballGame->unk55B[i] = 0; - gCurrentPinballGame->unk553[i] = 2; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 0; + gCurrentPinballGame->flyingEnemyState[i] = 2; } - gCurrentPinballGame->unk562[i] = 0; + gCurrentPinballGame->flyingEnemyAnimTimer[i] = 0; } - gCurrentPinballGame->unk54F[i] = 0; + gCurrentPinballGame->flyingEnemyCollisionType[i] = 0; break; case 2: - if (gUnknown_086AFB2C[gCurrentPinballGame->unk55B[i]][1] > gCurrentPinballGame->unk562[i]) + if (gSphealFlyingEnemyFramesetTable[gCurrentPinballGame->flyingEnemyFramesetIndex[i]][1] > gCurrentPinballGame->flyingEnemyAnimTimer[i]) { - gCurrentPinballGame->unk562[i]++; + gCurrentPinballGame->flyingEnemyAnimTimer[i]++; } else { - gCurrentPinballGame->unk562[i] = 0; - gCurrentPinballGame->unk55B[i]++; - if (gCurrentPinballGame->unk55B[i] == 3) + gCurrentPinballGame->flyingEnemyAnimTimer[i] = 0; + gCurrentPinballGame->flyingEnemyFramesetIndex[i]++; + if (gCurrentPinballGame->flyingEnemyFramesetIndex[i] == 3) { - gCurrentPinballGame->unk55B[i] = 3; - gCurrentPinballGame->unk553[i] = 3; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 3; + gCurrentPinballGame->flyingEnemyState[i] = 3; } - if (gCurrentPinballGame->unk55B[i] == 1) + if (gCurrentPinballGame->flyingEnemyFramesetIndex[i] == 1) m4aSongNumStart(SE_UNKNOWN_0x134); } - gCurrentPinballGame->unk56A[i] = 0; - gCurrentPinballGame->unk54F[i] = 1; + gCurrentPinballGame->flyingEnemyFlyTimer[i] = 0; + gCurrentPinballGame->flyingEnemyCollisionType[i] = 1; break; case 3: - if (gUnknown_086AFB2C[gCurrentPinballGame->unk55B[i]][1] > gCurrentPinballGame->unk562[i]) + if (gSphealFlyingEnemyFramesetTable[gCurrentPinballGame->flyingEnemyFramesetIndex[i]][1] > gCurrentPinballGame->flyingEnemyAnimTimer[i]) { - gCurrentPinballGame->unk562[i]++; + gCurrentPinballGame->flyingEnemyAnimTimer[i]++; } else { - gCurrentPinballGame->unk562[i] = 0; - gCurrentPinballGame->unk55B[i]++; - if (gCurrentPinballGame->unk55B[i] == 5) - gCurrentPinballGame->unk55B[i] = 3; + gCurrentPinballGame->flyingEnemyAnimTimer[i] = 0; + gCurrentPinballGame->flyingEnemyFramesetIndex[i]++; + if (gCurrentPinballGame->flyingEnemyFramesetIndex[i] == 5) + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 3; } - if (gCurrentPinballGame->unk56A[i] < 400) + if (gCurrentPinballGame->flyingEnemyFlyTimer[i] < 400) { - gCurrentPinballGame->unk56A[i]++; - if (gCurrentPinballGame->unk551[i]) - gCurrentPinballGame->unk580[i].x += 35; + gCurrentPinballGame->flyingEnemyFlyTimer[i]++; + if (gCurrentPinballGame->flyingEnemyDirection[i]) + gCurrentPinballGame->flyingEnemyPositionQ8[i].x += 35; else - gCurrentPinballGame->unk580[i].x -= 35; + gCurrentPinballGame->flyingEnemyPositionQ8[i].x -= 35; } else { - gCurrentPinballGame->unk55B[i] = 6; - gCurrentPinballGame->unk562[i] = 0; - gCurrentPinballGame->unk553[i] = 6; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 6; + gCurrentPinballGame->flyingEnemyAnimTimer[i] = 0; + gCurrentPinballGame->flyingEnemyState[i] = 6; } - gCurrentPinballGame->unk54F[i] = 1; + gCurrentPinballGame->flyingEnemyCollisionType[i] = 1; break; case 4: MPlayStart(&gMPlayInfo_SE1, &se_unk_137); - if (gCurrentPinballGame->unk54F[i] == 1) + if (gCurrentPinballGame->flyingEnemyCollisionType[i] == 1) { - gCurrentPinballGame->unk562[i] = 0; - gCurrentPinballGame->unk55B[i] = 5; - gCurrentPinballGame->unk553[i] = 5; + gCurrentPinballGame->flyingEnemyAnimTimer[i] = 0; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 5; + gCurrentPinballGame->flyingEnemyState[i] = 5; } else { - if (gCurrentPinballGame->unk580[i].y + (gCurrentPinballGame->unk55F[i] << 8) < gCurrentPinballGame->ball->positionQ8.y) + if (gCurrentPinballGame->flyingEnemyPositionQ8[i].y + (gCurrentPinballGame->flyingEnemyOamYOffset[i] << 8) < gCurrentPinballGame->ball->positionQ8.y) { - gCurrentPinballGame->unk553[i] = 10; + gCurrentPinballGame->flyingEnemyState[i] = 10; } else { - gCurrentPinballGame->unk562[i] = 0xAC - (gCurrentPinballGame->unk562[i] * 12) / 0xA0; - gCurrentPinballGame->unk553[i] = 8; + gCurrentPinballGame->flyingEnemyAnimTimer[i] = 0xAC - (gCurrentPinballGame->flyingEnemyAnimTimer[i] * 12) / 0xA0; + gCurrentPinballGame->flyingEnemyState[i] = 8; } } PlayRumble(7); - gCurrentPinballGame->unk54F[i] = 0; + gCurrentPinballGame->flyingEnemyCollisionType[i] = 0; gCurrentPinballGame->scoreAddedInFrame = 3000; break; case 5: - if (gCurrentPinballGame->unk562[i] < 10) + if (gCurrentPinballGame->flyingEnemyAnimTimer[i] < 10) { - gCurrentPinballGame->unk562[i]++; - gCurrentPinballGame->unk55B[i] = 5; + gCurrentPinballGame->flyingEnemyAnimTimer[i]++; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 5; } else { - gCurrentPinballGame->unk562[i] = 0; - gCurrentPinballGame->unk553[i] = 6; + gCurrentPinballGame->flyingEnemyAnimTimer[i] = 0; + gCurrentPinballGame->flyingEnemyState[i] = 6; } break; case 6: - if (gUnknown_086AFB2C[gCurrentPinballGame->unk55B[i]][1] > gCurrentPinballGame->unk562[i]) + if (gSphealFlyingEnemyFramesetTable[gCurrentPinballGame->flyingEnemyFramesetIndex[i]][1] > gCurrentPinballGame->flyingEnemyAnimTimer[i]) { - gCurrentPinballGame->unk562[i]++; + gCurrentPinballGame->flyingEnemyAnimTimer[i]++; } else { - gCurrentPinballGame->unk562[i] = 0; - gCurrentPinballGame->unk55B[i]++; - if (gCurrentPinballGame->unk55B[i] == 9) + gCurrentPinballGame->flyingEnemyAnimTimer[i] = 0; + gCurrentPinballGame->flyingEnemyFramesetIndex[i]++; + if (gCurrentPinballGame->flyingEnemyFramesetIndex[i] == 9) { - gCurrentPinballGame->unk55B[i] = 0; - gCurrentPinballGame->unk553[i] = 0; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 0; + gCurrentPinballGame->flyingEnemyState[i] = 0; } - if (gCurrentPinballGame->unk55B[i] == 7) + if (gCurrentPinballGame->flyingEnemyFramesetIndex[i] == 7) m4aSongNumStart(SE_UNKNOWN_0x135); } - gCurrentPinballGame->unk54F[i] = 0; + gCurrentPinballGame->flyingEnemyCollisionType[i] = 0; break; case 7: - if (gUnknown_086AFB2C[gCurrentPinballGame->unk55B[i]][1] > gCurrentPinballGame->unk562[i]) + if (gSphealFlyingEnemyFramesetTable[gCurrentPinballGame->flyingEnemyFramesetIndex[i]][1] > gCurrentPinballGame->flyingEnemyAnimTimer[i]) { - gCurrentPinballGame->unk562[i]++; + gCurrentPinballGame->flyingEnemyAnimTimer[i]++; } else { - gCurrentPinballGame->unk562[i] = 0; - gCurrentPinballGame->unk55B[i]++; - if (gCurrentPinballGame->unk55B[i] == 14) + gCurrentPinballGame->flyingEnemyAnimTimer[i] = 0; + gCurrentPinballGame->flyingEnemyFramesetIndex[i]++; + if (gCurrentPinballGame->flyingEnemyFramesetIndex[i] == 14) { - gCurrentPinballGame->unk553[i] = 8; - gCurrentPinballGame->unk580[i].x += gCurrentPinballGame->unk55D[i] << 8; - gCurrentPinballGame->unk580[i].y += gCurrentPinballGame->unk55F[i] << 8; + gCurrentPinballGame->flyingEnemyState[i] = 8; + gCurrentPinballGame->flyingEnemyPositionQ8[i].x += gCurrentPinballGame->flyingEnemyOamXOffset[i] << 8; + gCurrentPinballGame->flyingEnemyPositionQ8[i].y += gCurrentPinballGame->flyingEnemyOamYOffset[i] << 8; } - if (gCurrentPinballGame->unk55B[i] == 10) + if (gCurrentPinballGame->flyingEnemyFramesetIndex[i] == 10) m4aSongNumStart(SE_UNKNOWN_0x140); } - gCurrentPinballGame->unk54F[i] = 2; + gCurrentPinballGame->flyingEnemyCollisionType[i] = 2; break; case 8: - if (gCurrentPinballGame->unk562[i] < 184) + if (gCurrentPinballGame->flyingEnemyAnimTimer[i] < 184) { - if (gCurrentPinballGame->unk562[i] < 160) + if (gCurrentPinballGame->flyingEnemyAnimTimer[i] < 160) { - if (gCurrentPinballGame->unk551[i] == 0) - gCurrentPinballGame->unk580[i].x -= 0x10; + if (gCurrentPinballGame->flyingEnemyDirection[i] == 0) + gCurrentPinballGame->flyingEnemyPositionQ8[i].x -= 0x10; else - gCurrentPinballGame->unk580[i].x += 0x10; + gCurrentPinballGame->flyingEnemyPositionQ8[i].x += 0x10; - if (gCurrentPinballGame->unk562[i] & 1) - gCurrentPinballGame->unk580[i].y -= 0x10; + if (gCurrentPinballGame->flyingEnemyAnimTimer[i] & 1) + gCurrentPinballGame->flyingEnemyPositionQ8[i].y -= 0x10; else - gCurrentPinballGame->unk580[i].y -= 0x20; + gCurrentPinballGame->flyingEnemyPositionQ8[i].y -= 0x20; - if (gCurrentPinballGame->unk562[i] % 19 < 10) - gCurrentPinballGame->unk55B[i] = 14; + if (gCurrentPinballGame->flyingEnemyAnimTimer[i] % 19 < 10) + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 14; else - gCurrentPinballGame->unk55B[i] = 15; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 15; } else { - if (gCurrentPinballGame->unk551[i] == 0) - gCurrentPinballGame->unk580[i].x += 0x140; + if (gCurrentPinballGame->flyingEnemyDirection[i] == 0) + gCurrentPinballGame->flyingEnemyPositionQ8[i].x += 0x140; else - gCurrentPinballGame->unk580[i].x -= 0x140; + gCurrentPinballGame->flyingEnemyPositionQ8[i].x -= 0x140; - if (gCurrentPinballGame->unk562[i] & 1) - gCurrentPinballGame->unk580[i].y += 0x140; + if (gCurrentPinballGame->flyingEnemyAnimTimer[i] & 1) + gCurrentPinballGame->flyingEnemyPositionQ8[i].y += 0x140; else - gCurrentPinballGame->unk580[i].y += 0x1E0; + gCurrentPinballGame->flyingEnemyPositionQ8[i].y += 0x1E0; - gCurrentPinballGame->unk55B[i] = 15; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 15; } - gCurrentPinballGame->unk562[i]++; + gCurrentPinballGame->flyingEnemyAnimTimer[i]++; } else { - gCurrentPinballGame->unk553[i] = 9; - gCurrentPinballGame->unk55B[i] = 16; - gCurrentPinballGame->unk562[i] = 0; - if (gCurrentPinballGame->unk551[i] == 0) - gCurrentPinballGame->unk580[i].x += 0xF0; + gCurrentPinballGame->flyingEnemyState[i] = 9; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 16; + gCurrentPinballGame->flyingEnemyAnimTimer[i] = 0; + if (gCurrentPinballGame->flyingEnemyDirection[i] == 0) + gCurrentPinballGame->flyingEnemyPositionQ8[i].x += 0xF0; else - gCurrentPinballGame->unk580[i].x -= 0xF0; + gCurrentPinballGame->flyingEnemyPositionQ8[i].x -= 0xF0; } break; case 9: - if (gUnknown_086AFB2C[gCurrentPinballGame->unk55B[i]][1] > gCurrentPinballGame->unk562[i]) + if (gSphealFlyingEnemyFramesetTable[gCurrentPinballGame->flyingEnemyFramesetIndex[i]][1] > gCurrentPinballGame->flyingEnemyAnimTimer[i]) { - gCurrentPinballGame->unk562[i]++; + gCurrentPinballGame->flyingEnemyAnimTimer[i]++; } else { - gCurrentPinballGame->unk562[i] = 0; - gCurrentPinballGame->unk55B[i]++; - if (gCurrentPinballGame->unk55B[i] == 20) + gCurrentPinballGame->flyingEnemyAnimTimer[i] = 0; + gCurrentPinballGame->flyingEnemyFramesetIndex[i]++; + if (gCurrentPinballGame->flyingEnemyFramesetIndex[i] == 20) { - gCurrentPinballGame->unk55B[i] = 0; - gCurrentPinballGame->unk553[i] = 0; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 0; + gCurrentPinballGame->flyingEnemyState[i] = 0; } - if (gCurrentPinballGame->unk55B[i] == 17) + if (gCurrentPinballGame->flyingEnemyFramesetIndex[i] == 17) m4aSongNumStart(SE_UNKNOWN_0x135); } break; case 10: { s16 len; - if (gCurrentPinballGame->unk551[i] == 0) + if (gCurrentPinballGame->flyingEnemyDirection[i] == 0) var1 = 3; else var1 = 0; - len = gUnknown_086AFAC0[var1].unk4; + len = gSphealFlightPathData[var1].pathLength; for (j = 0; j < len; j++) { - if (gUnknown_086AFAC0[var1].unk0[j].y <= gCurrentPinballGame->unk566[i]) + if (gSphealFlightPathData[var1].pathWaypoints[j].y <= gCurrentPinballGame->flyingEnemyScreenY[i]) break; } - gCurrentPinballGame->unk559[i] = j; - gCurrentPinballGame->unk553[i] = 11; - gCurrentPinballGame->unk55B[i] = 29; - gCurrentPinballGame->unk562[i] = 0; + gCurrentPinballGame->flyingEnemyPathIndex[i] = j; + gCurrentPinballGame->flyingEnemyState[i] = 11; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 29; + gCurrentPinballGame->flyingEnemyAnimTimer[i] = 0; - gCurrentPinballGame->unk580[i].x = gUnknown_086AFAC0[var1].unk0[gCurrentPinballGame->unk559[i]].x << 8; - gCurrentPinballGame->unk580[i].y = gUnknown_086AFAC0[var1].unk0[gCurrentPinballGame->unk559[i]].y << 8; + gCurrentPinballGame->flyingEnemyPositionQ8[i].x = gSphealFlightPathData[var1].pathWaypoints[gCurrentPinballGame->flyingEnemyPathIndex[i]].x << 8; + gCurrentPinballGame->flyingEnemyPositionQ8[i].y = gSphealFlightPathData[var1].pathWaypoints[gCurrentPinballGame->flyingEnemyPathIndex[i]].y << 8; - gCurrentPinballGame->unk559[i]++; - gCurrentPinballGame->unk54F[i] = 0; + gCurrentPinballGame->flyingEnemyPathIndex[i]++; + gCurrentPinballGame->flyingEnemyCollisionType[i] = 0; break; } case 11: - if (gCurrentPinballGame->unk551[i] == 0) + if (gCurrentPinballGame->flyingEnemyDirection[i] == 0) var1 = 3; else var1 = 0; - var4 = gCurrentPinballGame->unk559[i]; - var5 = gUnknown_086AFAC0; - if (var4 < var5[var1].unk4) + var4 = gCurrentPinballGame->flyingEnemyPathIndex[i]; + var5 = gSphealFlightPathData; + if (var4 < var5[var1].pathLength) { - gCurrentPinballGame->unk580[i].x = var5[var1].unk0[gCurrentPinballGame->unk559[i]].x << 8; - gCurrentPinballGame->unk580[i].y = var5[var1].unk0[gCurrentPinballGame->unk559[i]].y << 8; - gCurrentPinballGame->unk559[i]++; - if (gCurrentPinballGame->unk559[i] == var5[var1].unk4) + gCurrentPinballGame->flyingEnemyPositionQ8[i].x = var5[var1].pathWaypoints[gCurrentPinballGame->flyingEnemyPathIndex[i]].x << 8; + gCurrentPinballGame->flyingEnemyPositionQ8[i].y = var5[var1].pathWaypoints[gCurrentPinballGame->flyingEnemyPathIndex[i]].y << 8; + gCurrentPinballGame->flyingEnemyPathIndex[i]++; + if (gCurrentPinballGame->flyingEnemyPathIndex[i] == var5[var1].pathLength) { - gCurrentPinballGame->unk553[i] = 12; - gCurrentPinballGame->unk530[i] = gCurrentPinballGame->unk551[i]; - gCurrentPinballGame->unk536[i] = 2; - if (gCurrentPinballGame->unk551[i] == 0) - gCurrentPinballGame->unk578[i].x = 0x140; + gCurrentPinballGame->flyingEnemyState[i] = 12; + gCurrentPinballGame->knockdownTargetIndex[i] = gCurrentPinballGame->flyingEnemyDirection[i]; + gCurrentPinballGame->knockdownPhase[i] = 2; + if (gCurrentPinballGame->flyingEnemyDirection[i] == 0) + gCurrentPinballGame->flyingEnemyVelocity[i].x = 0x140; else - gCurrentPinballGame->unk578[i].x = -0x140; + gCurrentPinballGame->flyingEnemyVelocity[i].x = -0x140; - gCurrentPinballGame->unk578[i].y = 0x1D0; + gCurrentPinballGame->flyingEnemyVelocity[i].y = 0x1D0; } } - gCurrentPinballGame->unk55B[i] = ((gCurrentPinballGame->unk562[i] % 32) / 4) + 30; - gCurrentPinballGame->unk562[i]++; - gCurrentPinballGame->unk54F[i] = 0; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = ((gCurrentPinballGame->flyingEnemyAnimTimer[i] % 32) / 4) + 30; + gCurrentPinballGame->flyingEnemyAnimTimer[i]++; + gCurrentPinballGame->flyingEnemyCollisionType[i] = 0; break; case 12: - gCurrentPinballGame->unk580[i].x += gCurrentPinballGame->unk578[i].x; - gCurrentPinballGame->unk580[i].y += gCurrentPinballGame->unk578[i].y; - gCurrentPinballGame->unk55B[i] = ((gCurrentPinballGame->unk562[i] % 32) / 4) + 30; - gCurrentPinballGame->unk562[i]++; - gCurrentPinballGame->unk54F[i] = 0; + gCurrentPinballGame->flyingEnemyPositionQ8[i].x += gCurrentPinballGame->flyingEnemyVelocity[i].x; + gCurrentPinballGame->flyingEnemyPositionQ8[i].y += gCurrentPinballGame->flyingEnemyVelocity[i].y; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = ((gCurrentPinballGame->flyingEnemyAnimTimer[i] % 32) / 4) + 30; + gCurrentPinballGame->flyingEnemyAnimTimer[i]++; + gCurrentPinballGame->flyingEnemyCollisionType[i] = 0; break; case 13: - gCurrentPinballGame->unk580[i].x += gCurrentPinballGame->unk578[i].x; - gCurrentPinballGame->unk580[i].y += gCurrentPinballGame->unk578[i].y; - gCurrentPinballGame->unk55B[i] = ((gCurrentPinballGame->unk562[i] % 32) / 8) + 26; - gCurrentPinballGame->unk562[i]++; - gCurrentPinballGame->unk54F[i] = 0; + gCurrentPinballGame->flyingEnemyPositionQ8[i].x += gCurrentPinballGame->flyingEnemyVelocity[i].x; + gCurrentPinballGame->flyingEnemyPositionQ8[i].y += gCurrentPinballGame->flyingEnemyVelocity[i].y; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = ((gCurrentPinballGame->flyingEnemyAnimTimer[i] % 32) / 8) + 26; + gCurrentPinballGame->flyingEnemyAnimTimer[i]++; + gCurrentPinballGame->flyingEnemyCollisionType[i] = 0; break; case 14: - gCurrentPinballGame->unk557[i] = -1; - if (gCurrentPinballGame->unk54D[i] > 0) + gCurrentPinballGame->flyingEnemySpawnVariant[i] = -1; + if (gCurrentPinballGame->flyingEnemyHitCooldown[i] > 0) { - gCurrentPinballGame->unk54D[i]--; - gCurrentPinballGame->unk55B[i] = 38; - gCurrentPinballGame->unk54B[i] = 1; + gCurrentPinballGame->flyingEnemyHitCooldown[i]--; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 38; + gCurrentPinballGame->flyingEnemySinkSpeed[i] = 1; } else { - if (gCurrentPinballGame->unk562[i] < 334) + if (gCurrentPinballGame->flyingEnemyAnimTimer[i] < 334) { - if (gCurrentPinballGame->unk562[i] < 16) + if (gCurrentPinballGame->flyingEnemyAnimTimer[i] < 16) { - gCurrentPinballGame->unk55B[i] = 21; - if (gCurrentPinballGame->unk562[i] == 1) + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 21; + if (gCurrentPinballGame->flyingEnemyAnimTimer[i] == 1) m4aSongNumStart(SE_UNKNOWN_0x13E); - gCurrentPinballGame->unk54F[i] = 3; + gCurrentPinballGame->flyingEnemyCollisionType[i] = 3; } - else if (gCurrentPinballGame->unk562[i] < 316) + else if (gCurrentPinballGame->flyingEnemyAnimTimer[i] < 316) { - if (gCurrentPinballGame->unk54B[i] == 0) + if (gCurrentPinballGame->flyingEnemySinkSpeed[i] == 0) { - gCurrentPinballGame->unk580[i].y += 0x40; - if (gCurrentPinballGame->unk562[i] % 19 < 10) - gCurrentPinballGame->unk55B[i] = 22; + gCurrentPinballGame->flyingEnemyPositionQ8[i].y += 0x40; + if (gCurrentPinballGame->flyingEnemyAnimTimer[i] % 19 < 10) + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 22; else - gCurrentPinballGame->unk55B[i] = 23; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 23; } else { - gCurrentPinballGame->unk580[i].y += 0x80; - if (gCurrentPinballGame->unk562[i] % 10 < 5) - gCurrentPinballGame->unk55B[i] = 22; + gCurrentPinballGame->flyingEnemyPositionQ8[i].y += 0x80; + if (gCurrentPinballGame->flyingEnemyAnimTimer[i] % 10 < 5) + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 22; else - gCurrentPinballGame->unk55B[i] = 23; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 23; } - if (gCurrentPinballGame->unk580[i].y > 0xAC00) - gCurrentPinballGame->unk562[i] = 316; + if (gCurrentPinballGame->flyingEnemyPositionQ8[i].y > 0xAC00) + gCurrentPinballGame->flyingEnemyAnimTimer[i] = 316; - gCurrentPinballGame->unk54F[i] = 3; + gCurrentPinballGame->flyingEnemyCollisionType[i] = 3; } else { s16 var20; - gCurrentPinballGame->unk580[i].y += 0x30; - var20 = gCurrentPinballGame->unk562[i] - 316; + gCurrentPinballGame->flyingEnemyPositionQ8[i].y += 0x30; + var20 = gCurrentPinballGame->flyingEnemyAnimTimer[i] - 316; if (var20 < 10) - gCurrentPinballGame->unk55B[i] = 24; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 24; else - gCurrentPinballGame->unk55B[i] = 25; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 25; if (var20 == 1) m4aSongNumStart(SE_UNKNOWN_0x136); - gCurrentPinballGame->unk54F[i] = 0; + gCurrentPinballGame->flyingEnemyCollisionType[i] = 0; } - gCurrentPinballGame->unk562[i]++; + gCurrentPinballGame->flyingEnemyAnimTimer[i]++; } else { - gCurrentPinballGame->unk553[i] = 0; - gCurrentPinballGame->unk55B[i] = 0; - gCurrentPinballGame->unk562[i] = 0; + gCurrentPinballGame->flyingEnemyState[i] = 0; + gCurrentPinballGame->flyingEnemyFramesetIndex[i] = 0; + gCurrentPinballGame->flyingEnemyAnimTimer[i] = 0; } } break; @@ -839,39 +839,39 @@ void sub_4387C(void) group = &gMain.spriteGroups[14 + i]; if (group->available) { - sp4 = gCurrentPinballGame->unk555[i]; - gCurrentPinballGame->unk555[i] = gUnknown_086AFB2C[gCurrentPinballGame->unk55B[i]][2] + (1 - gCurrentPinballGame->unk551[i]) * 30 ; - var2 = gUnknown_086AFB2C[gCurrentPinballGame->unk55B[i]][0]; + sp4 = gCurrentPinballGame->flyingEnemyPrevSpriteIndex[i]; + gCurrentPinballGame->flyingEnemyPrevSpriteIndex[i] = gSphealFlyingEnemyFramesetTable[gCurrentPinballGame->flyingEnemyFramesetIndex[i]][2] + (1 - gCurrentPinballGame->flyingEnemyDirection[i]) * 30 ; + var2 = gSphealFlyingEnemyFramesetTable[gCurrentPinballGame->flyingEnemyFramesetIndex[i]][0]; - group->baseX = (gCurrentPinballGame->unk580[i].x / 256) - (gCurrentPinballGame->unk58 + 12); - group->baseY = (gCurrentPinballGame->unk580[i].y / 256) - (gCurrentPinballGame->unk5A + 14); + group->baseX = (gCurrentPinballGame->flyingEnemyPositionQ8[i].x / 256) - (gCurrentPinballGame->cameraXOffset + 12); + group->baseY = (gCurrentPinballGame->flyingEnemyPositionQ8[i].y / 256) - (gCurrentPinballGame->cameraYOffset + 14); - DmaCopy16(3, gUnknown_084B046C[sp4], (void *)0x06011CA0 + i * 0x120, 0x120); + DmaCopy16(3, gSphealFlyingEnemyVariantSprites[sp4], (void *)0x06011CA0 + i * 0x120, 0x120); for (j = 0; j < 4; j++) { oamSimple = &group->oam[j]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B56D8[var2][j]; + src = gSphealFlyingEnemyOamData[var2][j]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; - if (gCurrentPinballGame->unk551[i] == 0) + if (gCurrentPinballGame->flyingEnemyDirection[i] == 0) { if (j == 0) { - gCurrentPinballGame->unk55D[i] = -gOamBuffer[oamSimple->oamId].x; - gCurrentPinballGame->unk55F[i] = gOamBuffer[oamSimple->oamId].y; + gCurrentPinballGame->flyingEnemyOamXOffset[i] = -gOamBuffer[oamSimple->oamId].x; + gCurrentPinballGame->flyingEnemyOamYOffset[i] = gOamBuffer[oamSimple->oamId].y; } - gOamBuffer[oamSimple->oamId].x += group->baseX + gCurrentPinballGame->unk55D[i] * 2; + gOamBuffer[oamSimple->oamId].x += group->baseX + gCurrentPinballGame->flyingEnemyOamXOffset[i] * 2; } else { if (j == 0) { - gCurrentPinballGame->unk55D[i] = gOamBuffer[oamSimple->oamId].x; - gCurrentPinballGame->unk55F[i] = gOamBuffer[oamSimple->oamId].y; + gCurrentPinballGame->flyingEnemyOamXOffset[i] = gOamBuffer[oamSimple->oamId].x; + gCurrentPinballGame->flyingEnemyOamYOffset[i] = gOamBuffer[oamSimple->oamId].y; } gOamBuffer[oamSimple->oamId].x += group->baseX; @@ -882,17 +882,17 @@ void sub_4387C(void) } var3 = 0x10; - gCurrentPinballGame->unk570[i].x = ((gCurrentPinballGame->unk580[i].x / 256) + (gCurrentPinballGame->unk55D[i] - var3)) * 2; + gCurrentPinballGame->flyingEnemyCollisionPos[i].x = ((gCurrentPinballGame->flyingEnemyPositionQ8[i].x / 256) + (gCurrentPinballGame->flyingEnemyOamXOffset[i] - var3)) * 2; var3 = 0x12; - gCurrentPinballGame->unk570[i].y = ((gCurrentPinballGame->unk580[i].y / 256) + (gCurrentPinballGame->unk55F[i] - var3)) * 2; + gCurrentPinballGame->flyingEnemyCollisionPos[i].y = ((gCurrentPinballGame->flyingEnemyPositionQ8[i].y / 256) + (gCurrentPinballGame->flyingEnemyOamYOffset[i] - var3)) * 2; - gCurrentPinballGame->unk566[i] = gCurrentPinballGame->unk580[i].y / 256 + gCurrentPinballGame->unk55F[i]; + gCurrentPinballGame->flyingEnemyScreenY[i] = gCurrentPinballGame->flyingEnemyPositionQ8[i].y / 256 + gCurrentPinballGame->flyingEnemyOamYOffset[i]; group = &gMain.spriteGroups[16 + i]; if (sp4 == 12 || sp4 == 42) { - if (gCurrentPinballGame->unk55B[i] == 11) + if (gCurrentPinballGame->flyingEnemyFramesetIndex[i] == 11) sp4 = 8; else sp4 = 9; @@ -902,10 +902,10 @@ void sub_4387C(void) sp4 = 0; } - group->baseX = (gCurrentPinballGame->unk580[i].x / 256) - (gCurrentPinballGame->unk58 + 12); - group->baseY = (gCurrentPinballGame->unk580[i].y / 256) - (gCurrentPinballGame->unk5A + 14); + group->baseX = (gCurrentPinballGame->flyingEnemyPositionQ8[i].x / 256) - (gCurrentPinballGame->cameraXOffset + 12); + group->baseY = (gCurrentPinballGame->flyingEnemyPositionQ8[i].y / 256) - (gCurrentPinballGame->cameraYOffset + 14); - DmaCopy16(3, gUnknown_084B046C[sp4], (void *)0x06011EE0 + i * 0x120, 0x120); + DmaCopy16(3, gSphealFlyingEnemyVariantSprites[sp4], (void *)0x06011EE0 + i * 0x120, 0x120); for (j = 0; j < 4; j++) { oamSimple = &group->oam[j]; @@ -916,7 +916,7 @@ void sub_4387C(void) } } -void sub_44D58(void) +void UpdateSphealScoreAndDelivery(void) { s16 i; s16 var0; @@ -927,12 +927,12 @@ void sub_44D58(void) group = &gMain.spriteGroups[18]; if (group->available) { - group->baseX = 104 - gCurrentPinballGame->unk58; - group->baseY = 86 - gCurrentPinballGame->unk5A; - if (gCurrentPinballGame->unk542 < 22) - var0 = gUnknown_08137D60[gCurrentPinballGame->unk542]; + group->baseX = 104 - gCurrentPinballGame->cameraXOffset; + group->baseY = 86 - gCurrentPinballGame->cameraYOffset; + if (gCurrentPinballGame->scoreCountdownTimer < 22) + var0 = gSphealScoreDigitSpriteIndices[gCurrentPinballGame->scoreCountdownTimer]; - DmaCopy16(3, gUnknown_084AF9EC[var0], (void *)0x06010920, 0x200); + DmaCopy16(3, gSphealScoreCounterDigitSprites[var0], (void *)0x06010920, 0x200); oamSimple = &group->oam[0]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; @@ -941,9 +941,9 @@ void sub_44D58(void) group = &gMain.spriteGroups[11]; if (group->available) { - group->baseX = 104 - gCurrentPinballGame->unk58; - group->baseY = 94 - gCurrentPinballGame->unk5A; - DmaCopy16(3, gUnknown_084AFFEC[var0], (void *)0x06010B20, 0x180); + group->baseX = 104 - gCurrentPinballGame->cameraXOffset; + group->baseY = 94 - gCurrentPinballGame->cameraYOffset; + DmaCopy16(3, gSphealExtendedScoreSprites[var0], (void *)0x06010B20, 0x180); for (i = 0; i < 2; i++) { oamSimple = &group->oam[i]; @@ -952,25 +952,25 @@ void sub_44D58(void) } } - if (gCurrentPinballGame->unk13 == 1) + if (gCurrentPinballGame->boardState == 1) gMain.spriteGroups[11].available = 1; - if (gCurrentPinballGame->unk13 < 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE && gCurrentPinballGame->unk542) + if (gCurrentPinballGame->boardState < 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE && gCurrentPinballGame->scoreCountdownTimer) { - if (gCurrentPinballGame->unk542 == 21) + if (gCurrentPinballGame->scoreCountdownTimer == 21) MPlayStart(&gMPlayInfo_SE1, &se_unk_138); - gCurrentPinballGame->unk542--; - if (gCurrentPinballGame->unk542 == 0) + gCurrentPinballGame->scoreCountdownTimer--; + if (gCurrentPinballGame->scoreCountdownTimer == 0) MPlayStart(&gMPlayInfo_SE1, &se_unk_139); } - if (gCurrentPinballGame->unk7E) + if (gCurrentPinballGame->ballDeliveryActive) { - if (gMain.unk5 == FIELD_RUBY) + if (gMain.tempField == FIELD_RUBY) SphealBoard_WhiscashDeliversBall(); else - SphealBoard_PelliperDeliversBall(); + SphealBoard_PelipperDeliversBall(); } } @@ -985,9 +985,9 @@ void SphealBoard_WhiscashDeliversBall(void) group = &gMain.spriteGroups[19]; if (group->available) { - offsets = gUnknown_086AFC16[gCurrentPinballGame->unk591]; - group->baseX = 134 + offsets[2] - gCurrentPinballGame->unk58; - group->baseY = 154 + offsets[3] - gCurrentPinballGame->unk5A; + offsets = gSphealWhiscashAnimFrameset[gCurrentPinballGame->deliveryAnimFrameIndex]; + group->baseX = 134 + offsets[2] - gCurrentPinballGame->cameraXOffset; + group->baseY = 154 + offsets[3] - gCurrentPinballGame->cameraYOffset; var0 = offsets[0]; DmaCopy16(3, gWhiscash_Gfx[var0], (void *)0x06012120, 0x460); for (i = 0; i < 4; i++) @@ -998,27 +998,27 @@ void SphealBoard_WhiscashDeliversBall(void) } } - if (gUnknown_086AFC16[gCurrentPinballGame->unk591][1] > gCurrentPinballGame->unk592) + if (gSphealWhiscashAnimFrameset[gCurrentPinballGame->deliveryAnimFrameIndex][1] > gCurrentPinballGame->deliveryAnimTimer) { - gCurrentPinballGame->unk592++; + gCurrentPinballGame->deliveryAnimTimer++; } else { - gCurrentPinballGame->unk592 = 0; - gCurrentPinballGame->unk591++; - if (gCurrentPinballGame->unk591 == 1) + gCurrentPinballGame->deliveryAnimTimer = 0; + gCurrentPinballGame->deliveryAnimFrameIndex++; + if (gCurrentPinballGame->deliveryAnimFrameIndex == 1) gMain.spriteGroups[19].available = 1; - if (gCurrentPinballGame->unk591 == 19) + if (gCurrentPinballGame->deliveryAnimFrameIndex == 19) { - gCurrentPinballGame->unk591 = 18; + gCurrentPinballGame->deliveryAnimFrameIndex = 18; gMain.spriteGroups[19].available = 0; - gCurrentPinballGame->unk7E = 0; + gCurrentPinballGame->ballDeliveryActive = 0; } - if (gCurrentPinballGame->unk591 == 9) + if (gCurrentPinballGame->deliveryAnimFrameIndex == 9) { - gCurrentPinballGame->ball->unkA -= 0x40; + gCurrentPinballGame->ball->spinAngle -= 0x40; gCurrentPinballGame->ball->positionQ8.x = 0x8D00; gCurrentPinballGame->ball->positionQ8.y = 0xC800; gCurrentPinballGame->ball->velocity.x = -0x60; @@ -1027,29 +1027,29 @@ void SphealBoard_WhiscashDeliversBall(void) PlayRumble(7); } - if (gCurrentPinballGame->unk591 == 2) + if (gCurrentPinballGame->deliveryAnimFrameIndex == 2) m4aSongNumStart(SE_WHISCASH_EMERGE_SPLASH); - if (gCurrentPinballGame->unk591 == 15) + if (gCurrentPinballGame->deliveryAnimFrameIndex == 15) m4aSongNumStart(SE_WHISCASH_LEAVE_BURBLE); - if (gCurrentPinballGame->unk591 == 8) + if (gCurrentPinballGame->deliveryAnimFrameIndex == 8) { m4aSongNumStart(SE_WHISCASH_SPIT_BALL); - gCurrentPinballGame->ball->unk0 = 0; - gCurrentPinballGame->ball->unkA -= 0x40; + gCurrentPinballGame->ball->ballHidden = 0; + gCurrentPinballGame->ball->spinAngle -= 0x40; gCurrentPinballGame->ball->positionQ8.x = 0x8F00; gCurrentPinballGame->ball->positionQ8.y = 0xC300; gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; } - if (gCurrentPinballGame->unk591 == 10) - gCurrentPinballGame->unk1F = 0; + if (gCurrentPinballGame->deliveryAnimFrameIndex == 10) + gCurrentPinballGame->ballFrozenState = 0; } } -void SphealBoard_PelliperDeliversBall(void) +void SphealBoard_PelipperDeliversBall(void) { s16 i; struct SpriteGroup *group; @@ -1059,10 +1059,10 @@ void SphealBoard_PelliperDeliversBall(void) group = &gMain.spriteGroups[20]; if (group->available) { - group->baseX = (gCurrentPinballGame->unk320 / 10) - (gCurrentPinballGame->unk58 - 146); - group->baseY = (gCurrentPinballGame->unk322 / 10) - (gCurrentPinballGame->unk5A - 110) + (gCurrentPinballGame->unk30E / 10); - index = gCurrentPinballGame->unk591; - DmaCopy16(3, gPelliper_Gfx[index], (void *)0x060125A0, 0x480); + group->baseX = (gCurrentPinballGame->pelipperPosX / 10) - (gCurrentPinballGame->cameraXOffset - 146); + group->baseY = (gCurrentPinballGame->pelipperPosY / 10) - (gCurrentPinballGame->cameraYOffset - 110) + (gCurrentPinballGame->pelipperYBobOffset / 10); + index = gCurrentPinballGame->deliveryAnimFrameIndex; + DmaCopy16(3, gPelipper_Gfx[index], (void *)0x060125A0, 0x480); for (i = 0; i < 4; i++) { oamSimple = &group->oam[i]; @@ -1071,54 +1071,54 @@ void SphealBoard_PelliperDeliversBall(void) } } - if (gCurrentPinballGame->unk592 <= 250) + if (gCurrentPinballGame->deliveryAnimTimer <= 250) { - if (gCurrentPinballGame->unk592 == 250) + if (gCurrentPinballGame->deliveryAnimTimer == 250) { - gCurrentPinballGame->unk320 = 920; - gCurrentPinballGame->unk322 = -100; - gCurrentPinballGame->unk31C = -82; - gCurrentPinballGame->unk31E = 0; - gCurrentPinballGame->unk30C = 0; - gCurrentPinballGame->unk306 = 8; - gCurrentPinballGame->unk591 = 13; + gCurrentPinballGame->pelipperPosX = 920; + gCurrentPinballGame->pelipperPosY = -100; + gCurrentPinballGame->pelipperFlyVelX = -82; + gCurrentPinballGame->pelipperFlyVelY = 0; + gCurrentPinballGame->pelipperFrameTimer = 0; + gCurrentPinballGame->pelipperState = 8; + gCurrentPinballGame->deliveryAnimFrameIndex = 13; gMain.spriteGroups[20].available = 1; - gCurrentPinballGame->unk5FA = 1; + gCurrentPinballGame->boardEntityActive = 1; } } else { - gCurrentPinballGame->unk591 = (gCurrentPinballGame->unk30C % 24) / 6 + 13; - gCurrentPinballGame->unk30E = (Sin(gCurrentPinballGame->unk30C * 0x400) * 240) / 20000; - if (gCurrentPinballGame->unk30C == 0) + gCurrentPinballGame->deliveryAnimFrameIndex = (gCurrentPinballGame->pelipperFrameTimer % 24) / 6 + 13; + gCurrentPinballGame->pelipperYBobOffset = (Sin(gCurrentPinballGame->pelipperFrameTimer * 0x400) * 240) / 20000; + if (gCurrentPinballGame->pelipperFrameTimer == 0) m4aSongNumStart(SE_UNKNOWN_0xE4); - if (gCurrentPinballGame->unk30C < 40) + if (gCurrentPinballGame->pelipperFrameTimer < 40) { - gCurrentPinballGame->unk320 += gCurrentPinballGame->unk31C; - gCurrentPinballGame->unk322 += gCurrentPinballGame->unk31E; + gCurrentPinballGame->pelipperPosX += gCurrentPinballGame->pelipperFlyVelX; + gCurrentPinballGame->pelipperPosY += gCurrentPinballGame->pelipperFlyVelY; } else { gMain.spriteGroups[20].available = 0; } - if (gCurrentPinballGame->unk30C == 13) + if (gCurrentPinballGame->pelipperFrameTimer == 13) { - gCurrentPinballGame->ball->unk0 = 0; - gCurrentPinballGame->unk314 = -10; - gCurrentPinballGame->unk316 = -25; - gCurrentPinballGame->unk318 = ((gCurrentPinballGame->unk320 / 10) + 157) * 10; - gCurrentPinballGame->unk31A = ((gCurrentPinballGame->unk322 / 10) + 134) * 10; + gCurrentPinballGame->ball->ballHidden = 0; + gCurrentPinballGame->pelipperBallDropVelX = -10; + gCurrentPinballGame->pelipperBallDropVelY = -25; + gCurrentPinballGame->pelipperBallDropPosX = ((gCurrentPinballGame->pelipperPosX / 10) + 157) * 10; + gCurrentPinballGame->pelipperBallDropPosY = ((gCurrentPinballGame->pelipperPosY / 10) + 134) * 10; gCurrentPinballGame->ball->oamPriority = 1; } - if (gCurrentPinballGame->unk1F) + if (gCurrentPinballGame->ballFrozenState) { - if (gCurrentPinballGame->unk30C < 13) + if (gCurrentPinballGame->pelipperFrameTimer < 13) { - gCurrentPinballGame->ball->positionQ0.x = (gCurrentPinballGame->unk320 / 10) + 157; - gCurrentPinballGame->ball->positionQ0.y = (gCurrentPinballGame->unk322 / 10) + 134; + gCurrentPinballGame->ball->positionQ0.x = (gCurrentPinballGame->pelipperPosX / 10) + 157; + gCurrentPinballGame->ball->positionQ0.y = (gCurrentPinballGame->pelipperPosY / 10) + 134; gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2; gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2; gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ0.x << 8; @@ -1126,22 +1126,22 @@ void SphealBoard_PelliperDeliversBall(void) } else { - gCurrentPinballGame->unk316 += 2; - gCurrentPinballGame->unk318 += gCurrentPinballGame->unk314; - gCurrentPinballGame->unk31A += gCurrentPinballGame->unk316; - gCurrentPinballGame->ball->positionQ0.x = gCurrentPinballGame->unk318 / 10; - gCurrentPinballGame->ball->positionQ0.y = gCurrentPinballGame->unk31A / 10; + gCurrentPinballGame->pelipperBallDropVelY += 2; + gCurrentPinballGame->pelipperBallDropPosX += gCurrentPinballGame->pelipperBallDropVelX; + gCurrentPinballGame->pelipperBallDropPosY += gCurrentPinballGame->pelipperBallDropVelY; + gCurrentPinballGame->ball->positionQ0.x = gCurrentPinballGame->pelipperBallDropPosX / 10; + gCurrentPinballGame->ball->positionQ0.y = gCurrentPinballGame->pelipperBallDropPosY / 10; if (gCurrentPinballGame->ball->positionQ0.y >= 181) { gCurrentPinballGame->ball->positionQ0.y = 181; - gCurrentPinballGame->unk5F7 = 0; - gCurrentPinballGame->unk1F = 0; + gCurrentPinballGame->ballUpgradeTimerFrozen = 0; + gCurrentPinballGame->ballFrozenState = 0; gCurrentPinballGame->ball->velocity.x = -10; gCurrentPinballGame->ball->velocity.y = 0; - gCurrentPinballGame->unk5FA = 0; + gCurrentPinballGame->boardEntityActive = 0; gCurrentPinballGame->ball->oamPriority = 3; - gCurrentPinballGame->unk24 = 0; - gCurrentPinballGame->unk7E = 0; + gCurrentPinballGame->boardLayerDepth = 0; + gCurrentPinballGame->ballDeliveryActive = 0; m4aSongNumStart(SE_UNKNOWN_0xE5); PlayRumble(7); } @@ -1153,35 +1153,35 @@ void SphealBoard_PelliperDeliversBall(void) } } - gCurrentPinballGame->unk30C++; + gCurrentPinballGame->pelipperFrameTimer++; } - gCurrentPinballGame->unk592++; + gCurrentPinballGame->deliveryAnimTimer++; } -void sub_455D0(void) +void UpdateSealeoKnockdownPhysics(void) { s16 i; s16 var0; for (i = 0; i < 3; i++) { - switch (gCurrentPinballGame->unk536[i]) + switch (gCurrentPinballGame->knockdownPhase[i]) { case 0: - gCurrentPinballGame->unk530[i] = 0; + gCurrentPinballGame->knockdownTargetIndex[i] = 0; break; case 1: - var0 = gCurrentPinballGame->unk530[i]; + var0 = gCurrentPinballGame->knockdownTargetIndex[i]; gCurrentPinballGame->minionState[var0] = 2; gCurrentPinballGame->minionStateTimer[var0] = 0; gCurrentPinballGame->minionFramesetIx[var0] = 7; - if (gCurrentPinballGame->unk53C[i]) + if (gCurrentPinballGame->knockdownStunTimer[i]) { - gCurrentPinballGame->unk53C[i]--; - if (gCurrentPinballGame->unk53C[i] == 0) + gCurrentPinballGame->knockdownStunTimer[i]--; + if (gCurrentPinballGame->knockdownStunTimer[i] == 0) { - gCurrentPinballGame->unk536[i] = 0; + gCurrentPinballGame->knockdownPhase[i] = 0; gCurrentPinballGame->minionState[var0] = 1; gCurrentPinballGame->minionStateTimer[var0] = 0; gCurrentPinballGame->minionFramesetIx[var0] = 4; @@ -1189,42 +1189,42 @@ void sub_455D0(void) } break; case 2: - var0 = gCurrentPinballGame->unk530[i]; + var0 = gCurrentPinballGame->knockdownTargetIndex[i]; if (i == 2) { - gCurrentPinballGame->unk1F = 1; + gCurrentPinballGame->ballFrozenState = 1; gCurrentPinballGame->ball->velocity.x += 5 - var0 * 10; } - gCurrentPinballGame->unk536[i] = 3; - gCurrentPinballGame->unk533[i] = 0; + gCurrentPinballGame->knockdownPhase[i] = 3; + gCurrentPinballGame->knockdownBounceCount[i] = 0; gCurrentPinballGame->minionState[var0] = 2; gCurrentPinballGame->minionStateTimer[var0] = 0; gCurrentPinballGame->minionFramesetIx[var0] = 7; break; case 3: - var0 = gCurrentPinballGame->unk530[i]; + var0 = gCurrentPinballGame->knockdownTargetIndex[i]; if (i < 2) { if (var0 == 0) { - if (gCurrentPinballGame->unk580[i].x >= 0x5600) - gCurrentPinballGame->unk578[i].x = 0; + if (gCurrentPinballGame->flyingEnemyPositionQ8[i].x >= 0x5600) + gCurrentPinballGame->flyingEnemyVelocity[i].x = 0; } else { - if (gCurrentPinballGame->unk580[i].x <= 0x9C00) - gCurrentPinballGame->unk578[i].x = 0; + if (gCurrentPinballGame->flyingEnemyPositionQ8[i].x <= 0x9C00) + gCurrentPinballGame->flyingEnemyVelocity[i].x = 0; } - gCurrentPinballGame->unk578[i].y += 12; - if (gCurrentPinballGame->unk548[var0] > 0) + gCurrentPinballGame->flyingEnemyVelocity[i].y += 12; + if (gCurrentPinballGame->minionHitFlashTimer[var0] > 0) { - if (gCurrentPinballGame->unk580[i].y >= 0x6600) + if (gCurrentPinballGame->flyingEnemyPositionQ8[i].y >= 0x6600) { - gCurrentPinballGame->unk533[i] = 0; - gCurrentPinballGame->unk536[i] = 5; + gCurrentPinballGame->knockdownBounceCount[i] = 0; + gCurrentPinballGame->knockdownPhase[i] = 5; gCurrentPinballGame->minionState[var0] = 3; gCurrentPinballGame->minionFramesetIx[var0] = 15; gCurrentPinballGame->minionStateTimer[var0] = 0; @@ -1232,30 +1232,30 @@ void sub_455D0(void) } else { - if (gCurrentPinballGame->unk580[i].y >= 0x6600) + if (gCurrentPinballGame->flyingEnemyPositionQ8[i].y >= 0x6600) { - gCurrentPinballGame->unk533[i]++; + gCurrentPinballGame->knockdownBounceCount[i]++; MPlayStart(&gMPlayInfo_SE1, &se_unk_13d); - if (gCurrentPinballGame->unk533[i] < 3) + if (gCurrentPinballGame->knockdownBounceCount[i] < 3) { - gCurrentPinballGame->unk580[i].y = 0x6600; - gCurrentPinballGame->unk578[i].y = 0xFED4; - gCurrentPinballGame->unk553[i] = 13; + gCurrentPinballGame->flyingEnemyPositionQ8[i].y = 0x6600; + gCurrentPinballGame->flyingEnemyVelocity[i].y = 0xFED4; + gCurrentPinballGame->flyingEnemyState[i] = 13; gCurrentPinballGame->minionState[var0] = 2; gCurrentPinballGame->minionFramesetIx[var0] = 8; gCurrentPinballGame->minionStateTimer[var0] = 12; } else { - gCurrentPinballGame->unk578[i].x = (30 - var0 * 60) * 4; - gCurrentPinballGame->unk578[i].y = 0xFE70; - gCurrentPinballGame->unk533[i] = 0; - gCurrentPinballGame->unk536[i] = 4; + gCurrentPinballGame->flyingEnemyVelocity[i].x = (30 - var0 * 60) * 4; + gCurrentPinballGame->flyingEnemyVelocity[i].y = 0xFE70; + gCurrentPinballGame->knockdownBounceCount[i] = 0; + gCurrentPinballGame->knockdownPhase[i] = 4; gCurrentPinballGame->minionState[var0] = 3; gCurrentPinballGame->minionFramesetIx[var0] = 11; gCurrentPinballGame->minionStateTimer[var0] = 0; - gCurrentPinballGame->unk542 = 100; - gCurrentPinballGame->unk52C[0]++; + gCurrentPinballGame->scoreCountdownTimer = 100; + gCurrentPinballGame->sphealKnockdownCount[0]++; } } } @@ -1276,10 +1276,10 @@ void sub_455D0(void) gCurrentPinballGame->ball->velocity.y += 3; if (gCurrentPinballGame->ball->positionQ8.y >= 0x6500) { - gCurrentPinballGame->unk533[i]++; + gCurrentPinballGame->knockdownBounceCount[i]++; MPlayStart(&gMPlayInfo_SE1, &se_unk_13d); PlayRumble(7); - if (gCurrentPinballGame->unk533[i] < 3) + if (gCurrentPinballGame->knockdownBounceCount[i] < 3) { gCurrentPinballGame->ball->positionQ8.y = 0x6500; gCurrentPinballGame->ball->velocity.y = -0x5A; @@ -1291,39 +1291,39 @@ void sub_455D0(void) { gCurrentPinballGame->ball->velocity.x = 28 - var0 * 56; gCurrentPinballGame->ball->velocity.y = -0x78; - gCurrentPinballGame->unk533[i] = 0; - gCurrentPinballGame->unk536[i] = 4; + gCurrentPinballGame->knockdownBounceCount[i] = 0; + gCurrentPinballGame->knockdownPhase[i] = 4; gCurrentPinballGame->minionState[var0] = 3; gCurrentPinballGame->minionFramesetIx[var0] = 11; gCurrentPinballGame->minionStateTimer[var0] = 0; - gCurrentPinballGame->unk542 = 106; - gCurrentPinballGame->unk52C[1]++; + gCurrentPinballGame->scoreCountdownTimer = 106; + gCurrentPinballGame->sphealKnockdownCount[1]++; } } } break; case 4: - var0 = gCurrentPinballGame->unk530[i]; + var0 = gCurrentPinballGame->knockdownTargetIndex[i]; if (i < 2) { - gCurrentPinballGame->unk578[i].y += 12; + gCurrentPinballGame->flyingEnemyVelocity[i].y += 12; if (var0 == 0) { - if (gCurrentPinballGame->unk580[i].x >= 0x7800) - gCurrentPinballGame->unk578[i].x = 0; + if (gCurrentPinballGame->flyingEnemyPositionQ8[i].x >= 0x7800) + gCurrentPinballGame->flyingEnemyVelocity[i].x = 0; } else { - if (gCurrentPinballGame->unk580[i].x <= 0x7800) - gCurrentPinballGame->unk578[i].x = 0; + if (gCurrentPinballGame->flyingEnemyPositionQ8[i].x <= 0x7800) + gCurrentPinballGame->flyingEnemyVelocity[i].x = 0; } - if (gCurrentPinballGame->unk580[i].y >= 0x8400) + if (gCurrentPinballGame->flyingEnemyPositionQ8[i].y >= 0x8400) { - gCurrentPinballGame->unk536[i] = 0; - gCurrentPinballGame->unk553[i] = 14; - gCurrentPinballGame->unk562[i] = 0; - gCurrentPinballGame->unk54B[i] = 0; + gCurrentPinballGame->knockdownPhase[i] = 0; + gCurrentPinballGame->flyingEnemyState[i] = 14; + gCurrentPinballGame->flyingEnemyAnimTimer[i] = 0; + gCurrentPinballGame->flyingEnemySinkSpeed[i] = 0; } } else @@ -1342,47 +1342,47 @@ void sub_455D0(void) if (gCurrentPinballGame->ball->positionQ8.y >= 0x8400) { - gCurrentPinballGame->unk533[i]++; - if (gCurrentPinballGame->unk533[i] < 2) + gCurrentPinballGame->knockdownBounceCount[i]++; + if (gCurrentPinballGame->knockdownBounceCount[i] < 2) { gCurrentPinballGame->ball->positionQ8.y = 0x8400; gCurrentPinballGame->ball->velocity.y = -gCurrentPinballGame->ball->velocity.y / 3; gCurrentPinballGame->ball->velocity.x = 0; - if (gCurrentPinballGame->unk533[i] == 1) + if (gCurrentPinballGame->knockdownBounceCount[i] == 1) PlayRumble(7); } else { gCurrentPinballGame->ball->velocity.y = 0; gCurrentPinballGame->ball->velocity.x = 5 - var0 * 10; - gCurrentPinballGame->unk1F = 0; - gCurrentPinballGame->unk536[i] = 0; + gCurrentPinballGame->ballFrozenState = 0; + gCurrentPinballGame->knockdownPhase[i] = 0; } } } break; case 5: - var0 = gCurrentPinballGame->unk530[i]; + var0 = gCurrentPinballGame->knockdownTargetIndex[i]; if (i < 2) { - gCurrentPinballGame->unk578[i].y += 12; + gCurrentPinballGame->flyingEnemyVelocity[i].y += 12; if (var0 == 0) { - if (gCurrentPinballGame->unk580[i].x >= 0x7800) - gCurrentPinballGame->unk578[i].x = 0; + if (gCurrentPinballGame->flyingEnemyPositionQ8[i].x >= 0x7800) + gCurrentPinballGame->flyingEnemyVelocity[i].x = 0; } else { - if (gCurrentPinballGame->unk580[i].x <= 0x7800) - gCurrentPinballGame->unk578[i].x = 0; + if (gCurrentPinballGame->flyingEnemyPositionQ8[i].x <= 0x7800) + gCurrentPinballGame->flyingEnemyVelocity[i].x = 0; } - if (gCurrentPinballGame->unk580[i].y >= 0x8E00) + if (gCurrentPinballGame->flyingEnemyPositionQ8[i].y >= 0x8E00) { - gCurrentPinballGame->unk536[i] = 0; - gCurrentPinballGame->unk553[i] = 14; - gCurrentPinballGame->unk562[i] = 0; - gCurrentPinballGame->unk54B[i] = 0; + gCurrentPinballGame->knockdownPhase[i] = 0; + gCurrentPinballGame->flyingEnemyState[i] = 14; + gCurrentPinballGame->flyingEnemyAnimTimer[i] = 0; + gCurrentPinballGame->flyingEnemySinkSpeed[i] = 0; } } else @@ -1401,8 +1401,8 @@ void sub_455D0(void) if (gCurrentPinballGame->ball->positionQ8.y >= 0x8E00) { - gCurrentPinballGame->unk533[i]++; - if (gCurrentPinballGame->unk533[i] < 2) + gCurrentPinballGame->knockdownBounceCount[i]++; + if (gCurrentPinballGame->knockdownBounceCount[i] < 2) { gCurrentPinballGame->ball->positionQ8.y = 0x8E00; gCurrentPinballGame->ball->velocity.y = -gCurrentPinballGame->ball->velocity.y / 3; @@ -1412,8 +1412,8 @@ void sub_455D0(void) { gCurrentPinballGame->ball->velocity.y = 0; gCurrentPinballGame->ball->velocity.x = 5 - var0 * 10; - gCurrentPinballGame->unk1F = 0; - gCurrentPinballGame->unk536[i] = 0; + gCurrentPinballGame->ballFrozenState = 0; + gCurrentPinballGame->knockdownPhase[i] = 0; } } } @@ -1422,19 +1422,19 @@ void sub_455D0(void) } } -void sub_45E08(void) +void AnimateSphealBackground(void) { s16 i; s16 var0; - var0 = gUnknown_086AEED6[(gMain.systemFrameCount % 96) / 24]; + var0 = gWaterTilePaletteCycle[(gMain.systemFrameCount % 96) / 24]; for (i = 0x100; i < 0x400; i++) - gUnknown_03005C00[0x800 + i] = gUnknown_0837A4E8[i] + var0 * 4; + gBG0TilemapBuffer[0x800 + i] = gSphealWaterBackgroundTilemap[i] + var0 * 4; - DmaCopy16(3, &gUnknown_03005C00[0x800], (void *)0x06000000, 0x800); + DmaCopy16(3, &gBG0TilemapBuffer[0x800], (void *)0x06000000, 0x800); } -void sub_45E90(void) +void UpdateSphealResultsScreen(void) { s16 i; struct SpriteGroup *group; @@ -1443,81 +1443,81 @@ void sub_45E90(void) s16 sp0[12]; s16 sp18[12]; - if (gCurrentPinballGame->unk13 > 3) + if (gCurrentPinballGame->boardState > 3) { - if (gCurrentPinballGame->unk394 > -126) + if (gCurrentPinballGame->bannerSlideYOffset > -126) { - gCurrentPinballGame->unk394 -= 6; - gMain.bgOffsets[1].yOffset = -gCurrentPinballGame->unk394 + 4; + gCurrentPinballGame->bannerSlideYOffset -= 6; + gMain.bgOffsets[1].yOffset = -gCurrentPinballGame->bannerSlideYOffset + 4; } } else { - if (gCurrentPinballGame->unk394 < 0) + if (gCurrentPinballGame->bannerSlideYOffset < 0) { - gCurrentPinballGame->unk394 += 6; - if (gCurrentPinballGame->unk394 > 0) - gCurrentPinballGame->unk394 = 0; + gCurrentPinballGame->bannerSlideYOffset += 6; + if (gCurrentPinballGame->bannerSlideYOffset > 0) + gCurrentPinballGame->bannerSlideYOffset = 0; } - gMain.bgOffsets[1].yOffset = -gCurrentPinballGame->unk394 + 4; + gMain.bgOffsets[1].yOffset = -gCurrentPinballGame->bannerSlideYOffset + 4; } - if (gCurrentPinballGame->unk13 < 5) + if (gCurrentPinballGame->boardState < 5) { gMain.blendControl = 0x1C42; gMain.blendAlpha = 0xC04; } - if (gCurrentPinballGame->unk13 == 3) + if (gCurrentPinballGame->boardState == 3) { - if (gCurrentPinballGame->unk18) - gCurrentPinballGame->unk18 += 0; + if (gCurrentPinballGame->stageTimer) + gCurrentPinballGame->stageTimer += 0; } - if (gCurrentPinballGame->unk53A > 100 && gCurrentPinballGame->unk53A < 450) + if (gCurrentPinballGame->resultsAnimTimer > 100 && gCurrentPinballGame->resultsAnimTimer < 450) { - if (gCurrentPinballGame->unk52E[0] != gCurrentPinballGame->unk52C[0]) + if (gCurrentPinballGame->sphealKnockdownDisplayCount[0] != gCurrentPinballGame->sphealKnockdownCount[0]) { - if ((gCurrentPinballGame->unk53A % 3) == 0) + if ((gCurrentPinballGame->resultsAnimTimer % 3) == 0) { - gCurrentPinballGame->unk52E[0]++; + gCurrentPinballGame->sphealKnockdownDisplayCount[0]++; m4aSongNumStart(SE_UNKNOWN_0x91); } } else { - gCurrentPinballGame->unk53A = 490; + gCurrentPinballGame->resultsAnimTimer = 490; } } - if (gCurrentPinballGame->unk53A > 500 && gCurrentPinballGame->unk53A < 800) + if (gCurrentPinballGame->resultsAnimTimer > 500 && gCurrentPinballGame->resultsAnimTimer < 800) { - if (gCurrentPinballGame->unk52E[1] != gCurrentPinballGame->unk52C[1]) + if (gCurrentPinballGame->sphealKnockdownDisplayCount[1] != gCurrentPinballGame->sphealKnockdownCount[1]) { - if ((gCurrentPinballGame->unk53A % 3) == 0) + if ((gCurrentPinballGame->resultsAnimTimer % 3) == 0) { - gCurrentPinballGame->unk52E[1]++; + gCurrentPinballGame->sphealKnockdownDisplayCount[1]++; m4aSongNumStart(SE_UNKNOWN_0x91); } } else { - gCurrentPinballGame->unk53A = 800; + gCurrentPinballGame->resultsAnimTimer = 800; } } - if (gCurrentPinballGame->unk53A < 800 && gCurrentPinballGame->unk18 > 160) - gCurrentPinballGame->unk18 = 160; + if (gCurrentPinballGame->resultsAnimTimer < 800 && gCurrentPinballGame->stageTimer > 160) + gCurrentPinballGame->stageTimer = 160; - gCurrentPinballGame->unk53A++; + gCurrentPinballGame->resultsAnimTimer++; group = &gMain.spriteGroups[7]; if (!group->available) return; group->baseX = 120; - group->baseY = 60 + gCurrentPinballGame->unk394; + group->baseY = 60 + gCurrentPinballGame->bannerSlideYOffset; for (i = 0; i < 22; i++) { oamSimple = &group->oam[i]; @@ -1525,7 +1525,7 @@ void sub_45E90(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - value = gCurrentPinballGame->unk52E[0] * 5000000; + value = gCurrentPinballGame->sphealKnockdownDisplayCount[0] * 5000000; sp0[0] = value / 10000000; sp0[1] = (value % 10000000) / 1000000; sp0[2] = 10; @@ -1555,7 +1555,7 @@ void sub_45E90(void) sp18[8] = sp0[8] * 2 + 0x2D0; sp18[9] = sp0[9] * 2 + 0x2D0; - value = gCurrentPinballGame->unk52E[0]; + value = gCurrentPinballGame->sphealKnockdownDisplayCount[0]; sp0[0] = value / 10; sp0[1] = value % 10; if (sp0[0] == 0) @@ -1565,7 +1565,7 @@ void sub_45E90(void) group = &gMain.spriteGroups[8]; group->baseX = 120; - group->baseY = 60 + gCurrentPinballGame->unk394; + group->baseY = 60 + gCurrentPinballGame->bannerSlideYOffset; for (i = 0; i < 12; i++) { oamSimple = &group->oam[i]; @@ -1574,7 +1574,7 @@ void sub_45E90(void) gOamBuffer[oamSimple->oamId].tileNum = sp18[i]; } - value = gCurrentPinballGame->unk52E[1] * 1000000; + value = gCurrentPinballGame->sphealKnockdownDisplayCount[1] * 1000000; sp0[0] = value / 10000000; sp0[1] = (value % 10000000) / 1000000; sp0[2] = 10; @@ -1604,7 +1604,7 @@ void sub_45E90(void) sp18[8] = sp0[8] * 2 + 0x2D0; sp18[9] = sp0[9] * 2 + 0x2D0; - value = gCurrentPinballGame->unk52E[1]; + value = gCurrentPinballGame->sphealKnockdownDisplayCount[1]; sp0[0] = value / 10; sp0[1] = value % 10; if (sp0[0] == 0) @@ -1614,7 +1614,7 @@ void sub_45E90(void) group = &gMain.spriteGroups[9]; group->baseX = 120; - group->baseY = 60 + gCurrentPinballGame->unk394; + group->baseY = 60 + gCurrentPinballGame->bannerSlideYOffset; for (i = 0; i < 12; i++) { oamSimple = &group->oam[i]; @@ -1623,9 +1623,9 @@ void sub_45E90(void) gOamBuffer[oamSimple->oamId].tileNum = sp18[i]; } - value = gCurrentPinballGame->unk52E[0] * 5000000 - + gCurrentPinballGame->unk52E[1] * 1000000; - gCurrentPinballGame->unk544 = value; + value = gCurrentPinballGame->sphealKnockdownDisplayCount[0] * 5000000 + + gCurrentPinballGame->sphealKnockdownDisplayCount[1] * 1000000; + gCurrentPinballGame->totalBonusScore = value; sp0[0] = value / 100000000; sp0[1] = (value % 100000000) / 10000000; sp0[2] = (value % 10000000) / 1000000; @@ -1662,7 +1662,7 @@ void sub_45E90(void) group = &gMain.spriteGroups[10]; group->baseX = 120; - group->baseY = 60 + gCurrentPinballGame->unk394; + group->baseY = 60 + gCurrentPinballGame->bannerSlideYOffset; for (i = 0; i < 12; i++) { oamSimple = &group->oam[i]; diff --git a/src/board_process4.c b/src/board_process4.c index 0406983..fe86f28 100644 --- a/src/board_process4.c +++ b/src/board_process4.c @@ -11,40 +11,40 @@ void AllBoardProcess_4A_19304(void) BonusBoardProcess_4B_19734(); } -void sub_1931C(struct Vector16 arg0) +void DetermineFlipperBallSide(struct Vector16 arg0) { s16 check; - struct Unk086ACE8C *line; + struct FlipperLineSegment *line; struct Vector16 point1, point2; - line = &gUnknown_086ACE8C[gCurrentPinballGame->flipper[0].position]; - point1.x = line->unk0 + 0x53; - point1.y = line->unk2 + gUnknown_02031520.unk14.unk1C; + line = &gFlipperLineGeometry[gCurrentPinballGame->flipper[0].position]; + point1.x = line->x1 + 0x53; + point1.y = line->y1 + gBoardConfig.fieldLayout.flipperBaseY; - point2.x = line->unk4 + 0x53; - point2.y = line->unk6 + gUnknown_02031520.unk14.unk1C; + point2.x = line->x2 + 0x53; + point2.y = line->y2 + gBoardConfig.fieldLayout.flipperBaseY; check = (point2.y - point1.y) * (arg0.x - point1.x) * 30 / (point2.x - point1.x) + (point1.y - arg0.y) * 30; if (check >= 0) - gCurrentPinballGame->flipper[0].unk8 = 1; + gCurrentPinballGame->flipper[0].ballSide = 1; else - gCurrentPinballGame->flipper[0].unk8 = -1; + gCurrentPinballGame->flipper[0].ballSide = -1; - line = &gUnknown_086ACE8C[gCurrentPinballGame->flipper[1].position]; + line = &gFlipperLineGeometry[gCurrentPinballGame->flipper[1].position]; - point1.x = 0x9C - line->unk0; - point1.y = line->unk2 + gUnknown_02031520.unk14.unk1C; + point1.x = 0x9C - line->x1; + point1.y = line->y1 + gBoardConfig.fieldLayout.flipperBaseY; - point2.x = 0x9C - line->unk4; - point2.y = line->unk6 + gUnknown_02031520.unk14.unk1C; + point2.x = 0x9C - line->x2; + point2.y = line->y2 + gBoardConfig.fieldLayout.flipperBaseY; check = (point2.y - point1.y) * (arg0.x - point1.x) * 30 / (point2.x - point1.x) + (point1.y - arg0.y) * 30; if (check >= 0) - gCurrentPinballGame->flipper[1].unk8 = 1; + gCurrentPinballGame->flipper[1].ballSide = 1; else - gCurrentPinballGame->flipper[1].unk8 = -1; + gCurrentPinballGame->flipper[1].ballSide = -1; } void MainBoardProcess_4B_19490(void) @@ -52,7 +52,7 @@ void MainBoardProcess_4B_19490(void) s16 i; if ((gMain.modeChangeFlags & MODE_CHANGE_BANNER) == 0) - sub_195C4(); + UpdateMainBoardFlipperPhysics(); for (i = 0; i < 2; i++) { @@ -66,14 +66,14 @@ void MainBoardProcess_4B_19490(void) spriteGroup = &gMain.spriteGroups[10 + i]; if (spriteGroup->available) { - s8 unk0; + s8 flipperTileIndex; struct OamDataSimple *oamData; - unk0 = gCurrentPinballGame->flipper[i].position / 2; - spriteGroup->baseX = gUnknown_086ACEF4[i] - gCurrentPinballGame->unk58; - spriteGroup->baseY = gUnknown_02031520.unk14.unk1C - gCurrentPinballGame->unk5A; + flipperTileIndex = gCurrentPinballGame->flipper[i].position / 2; + spriteGroup->baseX = gFlipperBaseXPositions[i] - gCurrentPinballGame->cameraXOffset; + spriteGroup->baseY = gBoardConfig.fieldLayout.flipperBaseY - gCurrentPinballGame->cameraYOffset; - DmaCopy16(3, gUnknown_083FE44C[unk0], OBJ_VRAM0 + i * 0x200, 0x200); + DmaCopy16(3, gFlipperTileGraphics[flipperTileIndex], OBJ_VRAM0 + i * 0x200, 0x200); oamData = &spriteGroup->oam[0]; gOamBuffer[oamData->oamId].x = oamData->xOffset + spriteGroup->baseX; @@ -82,11 +82,11 @@ void MainBoardProcess_4B_19490(void) } } -void sub_195C4(void) +void UpdateMainBoardFlipperPhysics(void) { s16 i; - sub_1931C(gCurrentPinballGame->ball->positionQ0); + DetermineFlipperBallSide(gCurrentPinballGame->ball->positionQ0); for (i = 0; i < 2; i++) { @@ -95,11 +95,11 @@ void sub_195C4(void) flipper = &gCurrentPinballGame->flipper[i]; flipper->prevPosition = flipper->position; - flipper->unk2 = 0; + flipper->collisionFrameIndex = 0; if (gCurrentPinballGame->heldButtonActions[i]) { - if (flipper->active == 0 && gCurrentPinballGame->unk25 == 0) + if (flipper->active == 0 && gCurrentPinballGame->ballCatchState == 0) m4aSongNumStart(SE_FLIPPER_PRESSED); flipper->active = 1; @@ -122,36 +122,36 @@ void sub_195C4(void) { dir = 1; } - else if (gCurrentPinballGame->unk5C != 0) + else if (gCurrentPinballGame->flipperLaunchPending != 0) { - gCurrentPinballGame->unk1334[0].velocity.x = gCurrentPinballGame->unk60.x; - gCurrentPinballGame->unk1334[0].velocity.y = gCurrentPinballGame->unk60.y; - gCurrentPinballGame->unk5C = 0; + gCurrentPinballGame->ballStates[0].velocity.x = gCurrentPinballGame->flipperLaunchVelocity.x; + gCurrentPinballGame->ballStates[0].velocity.y = gCurrentPinballGame->flipperLaunchVelocity.y; + gCurrentPinballGame->flipperLaunchPending = 0; PlayRumble(7); } - flipper->unk2 = flipper->position / 2 + 1; + flipper->collisionFrameIndex = flipper->position / 2 + 1; flipper->position += 4; } else { if (flipper->position != 0) { - flipper->unk2 = flipper->position / 2 + 6; + flipper->collisionFrameIndex = flipper->position / 2 + 6; dir = -1; } - else if (gCurrentPinballGame->unk5C != 0) + else if (gCurrentPinballGame->flipperLaunchPending != 0) { - gCurrentPinballGame->unk1334[0].velocity.x = gCurrentPinballGame->unk60.x; - gCurrentPinballGame->unk1334[0].velocity.y = gCurrentPinballGame->unk60.y; - gCurrentPinballGame->unk5C = 0; + gCurrentPinballGame->ballStates[0].velocity.x = gCurrentPinballGame->flipperLaunchVelocity.x; + gCurrentPinballGame->ballStates[0].velocity.y = gCurrentPinballGame->flipperLaunchVelocity.y; + gCurrentPinballGame->flipperLaunchPending = 0; PlayRumble(7); } flipper->position -= 2; } - flipper->unk3 = flipper->unk3 * dir; - if (flipper->unk3 <= 0) - flipper->unk4 = 0; - flipper->unk3 = dir; + flipper->movementDirection = flipper->movementDirection * dir; + if (flipper->movementDirection <= 0) + flipper->bounceApplied = 0; + flipper->movementDirection = dir; } } @@ -162,7 +162,7 @@ void BonusBoardProcess_4B_19734(void) if ((gMain.modeChangeFlags & MODE_CHANGE_BANNER) == 0) { - sub_19894(); + UpdateBonusBoardFlipperPhysics(); gMain.modeChangeFlags = gMain.modeChangeFlags; } for (i = 0; i < 2; i++) @@ -177,14 +177,14 @@ void BonusBoardProcess_4B_19734(void) spriteGroup = &gMain.spriteGroups[3 + i]; if (spriteGroup->available) { - s8 unk0; + s8 flipperTileIndex; struct OamDataSimple *oamData; - unk0 = gCurrentPinballGame->flipper[i].position / 2; - spriteGroup->baseX = gUnknown_086ACEF4[i] - gCurrentPinballGame->unk58; - spriteGroup->baseY = gUnknown_02031520.unk14.unk1C - gCurrentPinballGame->unk5A; + flipperTileIndex = gCurrentPinballGame->flipper[i].position / 2; + spriteGroup->baseX = gFlipperBaseXPositions[i] - gCurrentPinballGame->cameraXOffset; + spriteGroup->baseY = gBoardConfig.fieldLayout.flipperBaseY - gCurrentPinballGame->cameraYOffset; - DmaCopy16(3, gUnknown_083FE44C[unk0], OBJ_VRAM0 + i * 0x200, 0x200); + DmaCopy16(3, gFlipperTileGraphics[flipperTileIndex], OBJ_VRAM0 + i * 0x200, 0x200); if (spriteGroup->baseY > 180) spriteGroup->baseY = 180; @@ -197,11 +197,11 @@ void BonusBoardProcess_4B_19734(void) } } -void sub_19894(void) +void UpdateBonusBoardFlipperPhysics(void) { s16 i; - sub_1931C(gCurrentPinballGame->ball->positionQ0); + DetermineFlipperBallSide(gCurrentPinballGame->ball->positionQ0); for (i = 0; i < 2; i++) { @@ -210,11 +210,11 @@ void sub_19894(void) flipper = &gCurrentPinballGame->flipper[i]; flipper->prevPosition = flipper->position; - flipper->unk2 = 0; + flipper->collisionFrameIndex = 0; if (gCurrentPinballGame->heldButtonActions[i] && gMain.modeChangeFlags == MODE_CHANGE_NONE) { - if (flipper->active == 0 && gCurrentPinballGame->unk25 == 0 && gCurrentPinballGame->unk1A == 0) + if (flipper->active == 0 && gCurrentPinballGame->ballCatchState == 0 && gCurrentPinballGame->flippersDisabled == 0) { m4aSongNumStart(SE_FLIPPER_PRESSED); } @@ -238,35 +238,35 @@ void sub_19894(void) { dir = 1; } - else if (gCurrentPinballGame->unk5C != 0) + else if (gCurrentPinballGame->flipperLaunchPending != 0) { - gCurrentPinballGame->unk1334[0].velocity.x = gCurrentPinballGame->unk60.x; - gCurrentPinballGame->unk1334[0].velocity.y = gCurrentPinballGame->unk60.y; - gCurrentPinballGame->unk5C = 0; + gCurrentPinballGame->ballStates[0].velocity.x = gCurrentPinballGame->flipperLaunchVelocity.x; + gCurrentPinballGame->ballStates[0].velocity.y = gCurrentPinballGame->flipperLaunchVelocity.y; + gCurrentPinballGame->flipperLaunchPending = 0; PlayRumble(7); } - flipper->unk2 = flipper->position / 2 + 1; + flipper->collisionFrameIndex = flipper->position / 2 + 1; flipper->position += 4; } else { if (flipper->position != 0) { - flipper->unk2 = flipper->position / 2 + 6; + flipper->collisionFrameIndex = flipper->position / 2 + 6; dir = -1; } - else if (gCurrentPinballGame->unk5C != 0) + else if (gCurrentPinballGame->flipperLaunchPending != 0) { - gCurrentPinballGame->unk1334[0].velocity.x = gCurrentPinballGame->unk60.x; - gCurrentPinballGame->unk1334[0].velocity.y = gCurrentPinballGame->unk60.y; - gCurrentPinballGame->unk5C = 0; + gCurrentPinballGame->ballStates[0].velocity.x = gCurrentPinballGame->flipperLaunchVelocity.x; + gCurrentPinballGame->ballStates[0].velocity.y = gCurrentPinballGame->flipperLaunchVelocity.y; + gCurrentPinballGame->flipperLaunchPending = 0; PlayRumble(7); } flipper->position -= 2; } - flipper->unk3 = flipper->unk3 * dir; - if (flipper->unk3 <= 0) - flipper->unk4 = 0; - flipper->unk3 = dir; + flipper->movementDirection = flipper->movementDirection * dir; + if (flipper->movementDirection <= 0) + flipper->bounceApplied = 0; + flipper->movementDirection = dir; } } diff --git a/src/board_process5.c b/src/board_process5.c index bcd898f..eac50bb 100644 --- a/src/board_process5.c +++ b/src/board_process5.c @@ -6,39 +6,39 @@ extern void MainBoardProcess_7B_12524(void); extern void BonusBoardProcess_7B_12BF8(void); -extern void sub_2AADC(void); +extern void RunBallCaptureSequence(void); -extern const u8 gUnknown_08137E14[][0x20]; +extern const u8 gBallPalettes[][0x20]; void AllBoardProcess_5A_11B9C(void) { s16 i; - if (gMain.unk6 == 0) + if (gMain.isBonusField == 0) { - gCurrentPinballGame->ball = &gCurrentPinballGame->unk1334[0]; - sub_11C14(0); + gCurrentPinballGame->ball = &gCurrentPinballGame->ballStates[0]; + InitBallState(0); MainBoardProcess_7B_12524(); } else { for (i = 0; i < 2; i++) { - gCurrentPinballGame->ball = &gCurrentPinballGame->unk1334[i]; - sub_11C14(i); + gCurrentPinballGame->ball = &gCurrentPinballGame->ballStates[i]; + InitBallState(i); } BonusBoardProcess_7B_12BF8(); } } -void sub_11C14(s16 arg0) +void InitBallState(s16 arg0) { - struct BallState *ball = &gCurrentPinballGame->unk1334[arg0]; - ball->positionQ0.x = gUnknown_02031520.unk14.unk26; - ball->positionQ0.y = gUnknown_02031520.unk14.unk28; + struct BallState *ball = &gCurrentPinballGame->ballStates[arg0]; + ball->positionQ0.x = gBoardConfig.fieldLayout.ballSpawnX; + ball->positionQ0.y = gBoardConfig.fieldLayout.ballSpawnY; ball->positionQ8.x = Q_24_8(ball->positionQ0.x); ball->positionQ8.y = Q_24_8(ball->positionQ0.y); - ball->positionQ1.x = gUnknown_02031520.unk14.unk26 * 2; - ball->positionQ1.y = gUnknown_02031520.unk14.unk28 * 2; + ball->positionQ1.x = gBoardConfig.fieldLayout.ballSpawnX * 2; + ball->positionQ1.y = gBoardConfig.fieldLayout.ballSpawnY * 2; ball->scale = 0x100; ball->velocity.x = 0; ball->velocity.y = 0; @@ -47,8 +47,8 @@ void sub_11C14(s16 arg0) else ball->oamPriority = 1; - ball->unk6 = 0; - gCurrentPinballGame->unk5B2 = 1; + ball->spinSpeed = 0; + gCurrentPinballGame->ballInLowerHalf = 1; } extern const u16 gGravityDeltas_Strong[4]; @@ -68,47 +68,47 @@ extern const u16 gGravityDeltas_Light[4]; } \ else \ { \ - velocity.x = unk132c->velocity.x; \ - velocity.y = unk132c->velocity.y; \ + velocity.x = currentBall->velocity.x; \ + velocity.y = currentBall->velocity.y; \ } \ - unk132c->positionQ8.x += velocity.x; \ - unk132c->positionQ8.y += velocity.y; \ + currentBall->positionQ8.x += velocity.x; \ + currentBall->positionQ8.y += velocity.y; \ } void MainBoardProcess_5B_11C98(void) { struct Vector16 velocity; - struct BallState *unk132c; + struct BallState *currentBall; int xx, yy; int squaredMagnitude; int maxSpeed; - unk132c = gCurrentPinballGame->ball; - unk132c->prevPositionQ8 = unk132c->positionQ8; - if (gCurrentPinballGame->unk5A4 != 2) + currentBall = gCurrentPinballGame->ball; + currentBall->prevPositionQ8 = currentBall->positionQ8; + if (gCurrentPinballGame->captureState != 2) { if (gCurrentPinballGame->ballSpeed != 0) { u16 angle; - if (!gCurrentPinballGame->unk1F) + if (!gCurrentPinballGame->ballFrozenState) { // Gravity is applied at different strengths, depending on fast the ball is // currently moving downwards. - if (unk132c->velocity.y > 160) - unk132c->velocity.y += gGravityDeltas_Light[gCurrentPinballGame->unk1E]; - else if (unk132c->velocity.y > 80) - unk132c->velocity.y += gGravityDeltas_Medium[gCurrentPinballGame->unk1E]; + if (currentBall->velocity.y > 160) + currentBall->velocity.y += gGravityDeltas_Light[gCurrentPinballGame->gravityStrengthIndex]; + else if (currentBall->velocity.y > 80) + currentBall->velocity.y += gGravityDeltas_Medium[gCurrentPinballGame->gravityStrengthIndex]; else - unk132c->velocity.y += gGravityDeltas_Strong[gCurrentPinballGame->unk1E]; + currentBall->velocity.y += gGravityDeltas_Strong[gCurrentPinballGame->gravityStrengthIndex]; } - angle = ArcTan2(unk132c->velocity.x, -unk132c->velocity.y); - xx = unk132c->velocity.x * unk132c->velocity.x; - yy = unk132c->velocity.y * unk132c->velocity.y; + angle = ArcTan2(currentBall->velocity.x, -currentBall->velocity.y); + xx = currentBall->velocity.x * currentBall->velocity.x; + yy = currentBall->velocity.y * currentBall->velocity.y; squaredMagnitude = xx + yy; - if (unk132c->positionQ0.y < 380) + if (currentBall->positionQ0.y < 380) { UPDATE_BALL_POSITION(272, angle); } @@ -121,24 +121,24 @@ void MainBoardProcess_5B_11C98(void) { u16 angle; - if (!gCurrentPinballGame->unk1F) + if (!gCurrentPinballGame->ballFrozenState) { // Gravity is applied at different strengths, depending on fast the ball is // currently moving downwards. - if (unk132c->velocity.y > 200) - unk132c->velocity.y += gGravityDeltas_Light[gCurrentPinballGame->unk1E]; - else if (unk132c->velocity.y > 100) - unk132c->velocity.y += gGravityDeltas_Medium[gCurrentPinballGame->unk1E]; + if (currentBall->velocity.y > 200) + currentBall->velocity.y += gGravityDeltas_Light[gCurrentPinballGame->gravityStrengthIndex]; + else if (currentBall->velocity.y > 100) + currentBall->velocity.y += gGravityDeltas_Medium[gCurrentPinballGame->gravityStrengthIndex]; else - unk132c->velocity.y += gGravityDeltas_Strong[gCurrentPinballGame->unk1E]; + currentBall->velocity.y += gGravityDeltas_Strong[gCurrentPinballGame->gravityStrengthIndex]; } - angle = ArcTan2(unk132c->velocity.x, -unk132c->velocity.y); - xx = unk132c->velocity.x * unk132c->velocity.x; - yy = unk132c->velocity.y * unk132c->velocity.y; + angle = ArcTan2(currentBall->velocity.x, -currentBall->velocity.y); + xx = currentBall->velocity.x * currentBall->velocity.x; + yy = currentBall->velocity.y * currentBall->velocity.y; squaredMagnitude = xx + yy; - if (unk132c->positionQ0.y < 380) + if (currentBall->positionQ0.y < 380) { UPDATE_BALL_POSITION(336, angle); } @@ -150,51 +150,51 @@ void MainBoardProcess_5B_11C98(void) } else { - sub_2AADC(); + RunBallCaptureSequence(); } - unk132c->prevPositionQ1 = unk132c->positionQ1; - unk132c->positionQ1.x = (unk132c->positionQ8.x + 64) / 128; - unk132c->positionQ1.y = (unk132c->positionQ8.y + 64) / 128; - unk132c->unk8 = unk132c->unk6; - unk132c->unkA += unk132c->unk6; + currentBall->prevPositionQ1 = currentBall->positionQ1; + currentBall->positionQ1.x = (currentBall->positionQ8.x + 64) / 128; + currentBall->positionQ1.y = (currentBall->positionQ8.y + 64) / 128; + currentBall->prevSpinSpeed = currentBall->spinSpeed; + currentBall->spinAngle += currentBall->spinSpeed; } void BonusBoardProcess_5B_11F88(void) { struct Vector16 velocity; - struct BallState *unk132c; + struct BallState *currentBall; int xx, yy; int squaredMagnitude; int maxSpeed; - unk132c = gCurrentPinballGame->ball; - unk132c->prevPositionQ8 = unk132c->positionQ8; - if (gCurrentPinballGame->unk5A4 != 2) + currentBall = gCurrentPinballGame->ball; + currentBall->prevPositionQ8 = currentBall->positionQ8; + if (gCurrentPinballGame->captureState != 2) { - if (!gCurrentPinballGame->unk1F && !gCurrentPinballGame->unk383) + if (!gCurrentPinballGame->ballFrozenState && !gCurrentPinballGame->ballGrabbed) { // Gravity is applied at different strengths, depending on fast the ball is // currently moving downwards. - if (unk132c->velocity.y > 150) - unk132c->velocity.y += gGravityDeltas_Light[gCurrentPinballGame->unk1E]; - else if (unk132c->velocity.y > 75) - unk132c->velocity.y += gGravityDeltas_Medium[gCurrentPinballGame->unk1E]; + if (currentBall->velocity.y > 150) + currentBall->velocity.y += gGravityDeltas_Light[gCurrentPinballGame->gravityStrengthIndex]; + else if (currentBall->velocity.y > 75) + currentBall->velocity.y += gGravityDeltas_Medium[gCurrentPinballGame->gravityStrengthIndex]; else - unk132c->velocity.y += gGravityDeltas_Strong[gCurrentPinballGame->unk1E]; + currentBall->velocity.y += gGravityDeltas_Strong[gCurrentPinballGame->gravityStrengthIndex]; } if (gCurrentPinballGame->ballSpeed != 0) { u16 angle; - angle = ArcTan2(unk132c->velocity.x, -unk132c->velocity.y); - xx = unk132c->velocity.x * unk132c->velocity.x; - yy = unk132c->velocity.y * unk132c->velocity.y; + angle = ArcTan2(currentBall->velocity.x, -currentBall->velocity.y); + xx = currentBall->velocity.x * currentBall->velocity.x; + yy = currentBall->velocity.y * currentBall->velocity.y; squaredMagnitude = xx + yy; if (gMain.selectedField <= FIELD_KECLEON) { - if (unk132c->positionQ0.y < 150) + if (currentBall->positionQ0.y < 150) { UPDATE_BALL_POSITION(272, angle); } @@ -205,7 +205,7 @@ void BonusBoardProcess_5B_11F88(void) } else if (gMain.selectedField == FIELD_SPHEAL) { - if (unk132c->positionQ0.y < 218) + if (currentBall->positionQ0.y < 218) { UPDATE_BALL_POSITION(272, angle); } @@ -216,7 +216,7 @@ void BonusBoardProcess_5B_11F88(void) } else { - if (unk132c->positionQ0.y < 218) + if (currentBall->positionQ0.y < 218) { UPDATE_BALL_POSITION(272, angle); } @@ -229,14 +229,14 @@ void BonusBoardProcess_5B_11F88(void) else { u16 angle; - angle = ArcTan2(unk132c->velocity.x, -unk132c->velocity.y); - xx = unk132c->velocity.x * unk132c->velocity.x; - yy = unk132c->velocity.y * unk132c->velocity.y; + angle = ArcTan2(currentBall->velocity.x, -currentBall->velocity.y); + xx = currentBall->velocity.x * currentBall->velocity.x; + yy = currentBall->velocity.y * currentBall->velocity.y; squaredMagnitude = xx + yy; if (gMain.selectedField <= FIELD_KECLEON) { - if (unk132c->positionQ0.y < 150) + if (currentBall->positionQ0.y < 150) { UPDATE_BALL_POSITION(304, angle); } @@ -247,7 +247,7 @@ void BonusBoardProcess_5B_11F88(void) } else if (gMain.selectedField == FIELD_SPHEAL) { - if (unk132c->positionQ0.y < 218) + if (currentBall->positionQ0.y < 218) { UPDATE_BALL_POSITION(272, angle); } @@ -258,7 +258,7 @@ void BonusBoardProcess_5B_11F88(void) } else { - if (unk132c->positionQ0.y < 218) + if (currentBall->positionQ0.y < 218) { UPDATE_BALL_POSITION(304, angle); } @@ -271,12 +271,12 @@ void BonusBoardProcess_5B_11F88(void) } else { - sub_2AADC(); + RunBallCaptureSequence(); } - unk132c->prevPositionQ1 = unk132c->positionQ1; - unk132c->positionQ1.x = (unk132c->positionQ8.x + 64) / 128; - unk132c->positionQ1.y = (unk132c->positionQ8.y + 64) / 128; - unk132c->unk8 = unk132c->unk6; - unk132c->unkA += unk132c->unk6; + currentBall->prevPositionQ1 = currentBall->positionQ1; + currentBall->positionQ1.x = (currentBall->positionQ8.x + 64) / 128; + currentBall->positionQ1.y = (currentBall->positionQ8.y + 64) / 128; + currentBall->prevSpinSpeed = currentBall->spinSpeed; + currentBall->spinAngle += currentBall->spinSpeed; } diff --git a/src/board_process6.c b/src/board_process6.c index 2f35f9f..e317636 100644 --- a/src/board_process6.c +++ b/src/board_process6.c @@ -4,23 +4,23 @@ #include "m4a.h" #include "constants/anglemath.h" -extern u8 gUnknown_0839A28C[]; -extern u16 gUnknown_086ACD84[][2]; -extern u16 gUnknown_086ACE2C[][2]; -extern s8 gUnknown_086ACDB8[]; +extern u8 gCatchTargetCollisionBitmap[]; +extern u16 gFlipperCollisionAngles[][2]; +extern u16 gFlipperLaunchVelocityParams[][2]; +extern s8 gFlipperCollisionFrameMapping[]; -u16 sub_13824(struct Vector16*); -void sub_13D24(u16,struct Vector16*, struct Vector16*); -void sub_13934(struct Vector16 *arg0, struct Vector16 *arg1, u16 angle); -void sub_1493C(void); -u16 sub_14488(struct Vector16*, struct Vector16); +u16 DetectBallCollision(struct Vector16*); +void ComputeWallReflection(u16,struct Vector16*, struct Vector16*); +void ApplyTiltEffectOnCollision(struct Vector16 *arg0, struct Vector16 *arg1, u16 angle); +void ProcessBonusTrapPhysics(void); +u16 PixelWalkCollisionDetection(struct Vector16*, struct Vector16); -void sub_14B84(s32 arg0, s16 arg1, struct Vector16* arg2, u16 arg3); +void ComputeFlipperLaunchVelocity(s32 arg0, s16 arg1, struct Vector16* arg2, u16 arg3); void AllBoardProcess_6A_4CEA8() { - gCurrentPinballGame->unk26 = 60; + gCurrentPinballGame->collisionCooldownTimer = 60; } void AllBoardProcess_6B_1333C() @@ -31,22 +31,22 @@ void AllBoardProcess_6B_1333C() s16 i; u16 r7; - r7 = sub_13824(&var0); - switch (gCurrentPinballGame->unk22) + r7 = DetectBallCollision(&var0); + switch (gCurrentPinballGame->collisionResponseType) { case 7: gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; break; case 1: - sub_13934(&var0, &var1, r7); - sub_13D24(r7, &gCurrentPinballGame->ball->velocity, &var2); + ApplyTiltEffectOnCollision(&var0, &var1, r7); + ComputeWallReflection(r7, &gCurrentPinballGame->ball->velocity, &var2); for (i = 0; i < 9; i++) { - if (gUnknown_086ACD50[i].unk2 <= r7) + if (gWallCollisionPositionCorrection[i].angleThreshold <= r7) { - var0.x += gUnknown_086ACD50[i].unk0; - var0.y += gUnknown_086ACD50[i].unk1; + var0.x += gWallCollisionPositionCorrection[i].correctionX; + var0.y += gWallCollisionPositionCorrection[i].correctionY; break; } } @@ -54,20 +54,20 @@ void AllBoardProcess_6B_1333C() gCurrentPinballGame->ball->velocity.y = var2.y + var1.y; break; case 6: - sub_13934(&var0, &var1,r7); - sub_13D24(r7, &gCurrentPinballGame->ball->velocity, &var2); + ApplyTiltEffectOnCollision(&var0, &var1,r7); + ComputeWallReflection(r7, &gCurrentPinballGame->ball->velocity, &var2); gCurrentPinballGame->ball->velocity.x = var2.x + var1.x; gCurrentPinballGame->ball->velocity.y = var2.y + var1.y; break; case 2: - sub_13934(&var0, &var1, r7); - sub_13D24(r7, &gCurrentPinballGame->ball->velocity, &var2); + ApplyTiltEffectOnCollision(&var0, &var1, r7); + ComputeWallReflection(r7, &gCurrentPinballGame->ball->velocity, &var2); for (i = 0; i < 9; i++) { - if (gUnknown_086ACD50[i].unk2 <= r7) + if (gWallCollisionPositionCorrection[i].angleThreshold <= r7) { - var0.x += gUnknown_086ACD50[i].unk0; - var0.y += gUnknown_086ACD50[i].unk1; + var0.x += gWallCollisionPositionCorrection[i].correctionX; + var0.y += gWallCollisionPositionCorrection[i].correctionY; break; } } @@ -75,45 +75,45 @@ void AllBoardProcess_6B_1333C() gCurrentPinballGame->ball->velocity.y = var2.y + var1.y; break; case 3: - sub_13934(&var0, &var1, r7); - var0.x -= (gUnknown_02031520.unk14.unk22 * 2); - var0.y -= (gUnknown_02031520.unk14.unk20 * 2); - if (gCurrentPinballGame->flipper[0].unk4 == 0) + ApplyTiltEffectOnCollision(&var0, &var1, r7); + var0.x -= (gBoardConfig.fieldLayout.leftFlipperOriginX * 2); + var0.y -= (gBoardConfig.fieldLayout.flipperOriginY * 2); + if (gCurrentPinballGame->flipper[0].bounceApplied == 0) { - sub_13D24(r7, &gCurrentPinballGame->ball->velocity, &var2); - gCurrentPinballGame->flipper[0].unk4 = 1; + ComputeWallReflection(r7, &gCurrentPinballGame->ball->velocity, &var2); + gCurrentPinballGame->flipper[0].bounceApplied = 1; } else { var2.x = gCurrentPinballGame->ball->velocity.x; var2.y = gCurrentPinballGame->ball->velocity.y; } - sub_13B28(&var0, &var2, 0); + ComputeFlipperBounce(&var0, &var2, 0); gCurrentPinballGame->ball->velocity.x = var2.x + var1.x; gCurrentPinballGame->ball->velocity.y = var2.y + var1.y; - if (gCurrentPinballGame->unk22 == 5) + if (gCurrentPinballGame->collisionResponseType == 5) { for (i = 0; i < 4; i++) { - if (gUnknown_086ACD74[i].unk2 <= r7) + if (gFlipperCollisionAngleCorrection[i].angleThreshold <= r7) { - var0.x += gUnknown_086ACD74[i].unk0; - var0.y += gUnknown_086ACD74[i].unk1; + var0.x += gFlipperCollisionAngleCorrection[i].correctionX; + var0.y += gFlipperCollisionAngleCorrection[i].correctionY; break; } } } - var0.x += gUnknown_02031520.unk14.unk22 * 2; - var0.y += gUnknown_02031520.unk14.unk20 * 2; + var0.x += gBoardConfig.fieldLayout.leftFlipperOriginX * 2; + var0.y += gBoardConfig.fieldLayout.flipperOriginY * 2; break; case 4: - sub_13934(&var0, &var1, r7); - var0.x -= (gUnknown_02031520.unk14.unk24 * 2); - var0.y -= (gUnknown_02031520.unk14.unk20 * 2); - if (gCurrentPinballGame->flipper[1].unk4 == 0) + ApplyTiltEffectOnCollision(&var0, &var1, r7); + var0.x -= (gBoardConfig.fieldLayout.rightFlipperOriginX * 2); + var0.y -= (gBoardConfig.fieldLayout.flipperOriginY * 2); + if (gCurrentPinballGame->flipper[1].bounceApplied == 0) { - sub_13D24(r7, &gCurrentPinballGame->ball->velocity, &var2); - gCurrentPinballGame->flipper[1].unk4 = 1; + ComputeWallReflection(r7, &gCurrentPinballGame->ball->velocity, &var2); + gCurrentPinballGame->flipper[1].bounceApplied = 1; } else { @@ -122,49 +122,49 @@ void AllBoardProcess_6B_1333C() } var0.x = 0x5f - var0.x; var2.x = -var2.x; - sub_13B28(&var0, &var2, 1); + ComputeFlipperBounce(&var0, &var2, 1); var2.x = -var2.x; gCurrentPinballGame->ball->velocity.x = var2.x + var1.x; gCurrentPinballGame->ball->velocity.y = var2.y + var1.y; - if (gCurrentPinballGame->unk22 == 5) + if (gCurrentPinballGame->collisionResponseType == 5) { for (i = 0; i < 4; i++) { - if (gUnknown_086ACD74[i].unk2 <= r7) + if (gFlipperCollisionAngleCorrection[i].angleThreshold <= r7) { - var0.x -= gUnknown_086ACD74[i].unk0; - var0.y += gUnknown_086ACD74[i].unk1; + var0.x -= gFlipperCollisionAngleCorrection[i].correctionX; + var0.y += gFlipperCollisionAngleCorrection[i].correctionY; break; } } } var0.x = 0x5f - var0.x; - var0.x += gUnknown_02031520.unk14.unk24 * 2; - var0.y += gUnknown_02031520.unk14.unk20 * 2; + var0.x += gBoardConfig.fieldLayout.rightFlipperOriginX * 2; + var0.y += gBoardConfig.fieldLayout.flipperOriginY * 2; break; default: - if (gCurrentPinballGame->unk122 > 0) + if (gCurrentPinballGame->tiltTargetXOffset > 0) { - if (gCurrentPinballGame->unk127 != 1) + if (gCurrentPinballGame->tiltLockoutActive != 1) { gCurrentPinballGame->ball->velocity.x -= 4; - gCurrentPinballGame->unk127 = 1; + gCurrentPinballGame->tiltLockoutActive = 1; } } - else if (gCurrentPinballGame->unk122 < 0) + else if (gCurrentPinballGame->tiltTargetXOffset < 0) { - if (gCurrentPinballGame->unk127 != -1) + if (gCurrentPinballGame->tiltLockoutActive != -1) { gCurrentPinballGame->ball->velocity.x += 4; - gCurrentPinballGame->unk127 = -1; + gCurrentPinballGame->tiltLockoutActive = -1; } } - if (gCurrentPinballGame->unk5F3) + if (gCurrentPinballGame->bonusTrapEnabled) { - sub_1493C(); + ProcessBonusTrapPhysics(); } } - if (gCurrentPinballGame->unk22 != 0) + if (gCurrentPinballGame->collisionResponseType != 0) { gCurrentPinballGame->ball->positionQ1.x = var0.x; gCurrentPinballGame->ball->positionQ1.y = var0.y; @@ -173,7 +173,7 @@ void AllBoardProcess_6B_1333C() } } -u16 sub_13824(struct Vector16* param) +u16 DetectBallCollision(struct Vector16* param) { u16 retVal; struct Vector16 test; @@ -181,66 +181,66 @@ u16 sub_13824(struct Vector16* param) test.y = gCurrentPinballGame->ball->positionQ1.y - gCurrentPinballGame->ball->prevPositionQ1.y; param->x = gCurrentPinballGame->ball->prevPositionQ1.x; param->y = gCurrentPinballGame->ball->prevPositionQ1.y; - retVal = sub_14488(param, test); + retVal = PixelWalkCollisionDetection(param, test); - gCurrentPinballGame->unk124 = 0; - gCurrentPinballGame->unk125 = 0; + gCurrentPinballGame->tiltInputCounterX = 0; + gCurrentPinballGame->tiltInputCounterY = 0; - if (!gCurrentPinballGame->unk22 && (gCurrentPinballGame->unk122 || gCurrentPinballGame->unk123)) + if (!gCurrentPinballGame->collisionResponseType && (gCurrentPinballGame->tiltTargetXOffset || gCurrentPinballGame->tiltTargetYOffset)) { param->x = gCurrentPinballGame->ball->positionQ1.x; param->y = gCurrentPinballGame->ball->positionQ1.y; - test.x = gCurrentPinballGame->unk122; - test.y = gCurrentPinballGame->unk123; - retVal = sub_14488(param, test); - gCurrentPinballGame->unk124 = param->x - gCurrentPinballGame->ball->positionQ1.x; - gCurrentPinballGame->unk125 = param->y - gCurrentPinballGame->ball->positionQ1.y; + test.x = gCurrentPinballGame->tiltTargetXOffset; + test.y = gCurrentPinballGame->tiltTargetYOffset; + retVal = PixelWalkCollisionDetection(param, test); + gCurrentPinballGame->tiltInputCounterX = param->x - gCurrentPinballGame->ball->positionQ1.x; + gCurrentPinballGame->tiltInputCounterY = param->y - gCurrentPinballGame->ball->positionQ1.y; } return retVal; } -void sub_13934(struct Vector16 *arg0, struct Vector16 *arg1, u16 angle) +void ApplyTiltEffectOnCollision(struct Vector16 *arg0, struct Vector16 *arg1, u16 angle) { s16 cos; arg1->x = 0; arg1->y = 0; - if (gCurrentPinballGame->unk122) + if (gCurrentPinballGame->tiltTargetXOffset) { - arg0->x -= gCurrentPinballGame->unk124; - if (gCurrentPinballGame->unk122 > 0) + arg0->x -= gCurrentPinballGame->tiltInputCounterX; + if (gCurrentPinballGame->tiltTargetXOffset > 0) { cos = Cos(angle); if (cos < 0) { arg1->x = (Cos(angle) * 70) / 20000; - gCurrentPinballGame->unk126 = 1; + gCurrentPinballGame->tiltLockoutTimer = 1; } } - else if (gCurrentPinballGame->unk122 < 0) + else if (gCurrentPinballGame->tiltTargetXOffset < 0) { cos = Cos(angle); if (cos > 0) { arg1->x = (Cos(angle) * 70) / 20000; - gCurrentPinballGame->unk126 = 1; + gCurrentPinballGame->tiltLockoutTimer = 1; } } } - if (gCurrentPinballGame->unk123 > 0) + if (gCurrentPinballGame->tiltTargetYOffset > 0) { - arg0->y -= gCurrentPinballGame->unk125; + arg0->y -= gCurrentPinballGame->tiltInputCounterY; if (gCurrentPinballGame->ball->positionQ0.y > 364) { - if (gCurrentPinballGame->unk122 == 0) + if (gCurrentPinballGame->tiltTargetXOffset == 0) arg1->y = -(Sin(angle) * 130) / 20000; else arg1->y = -(Sin(angle) * 100) / 20000; } else { - if (gCurrentPinballGame->unk122 == 0) + if (gCurrentPinballGame->tiltTargetXOffset == 0) arg1->y = -(Sin(angle) * 100) / 20000; else arg1->y = -(Sin(angle) * 75) / 20000; @@ -251,17 +251,17 @@ void sub_13934(struct Vector16 *arg0, struct Vector16 *arg1, u16 angle) gCurrentPinballGame->ball->velocity.x /= 4; } - gCurrentPinballGame->unk126 = 1; + gCurrentPinballGame->tiltLockoutTimer = 1; } - if (gCurrentPinballGame->unk126) + if (gCurrentPinballGame->tiltLockoutTimer) { - gCurrentPinballGame->unk122 = 0; - gCurrentPinballGame->unk123 = 0; + gCurrentPinballGame->tiltTargetXOffset = 0; + gCurrentPinballGame->tiltTargetYOffset = 0; } } -void sub_13B28(struct Vector16* arg0, struct Vector16* arg1, s16 arg2) +void ComputeFlipperBounce(struct Vector16* arg0, struct Vector16* arg1, s16 arg2) { struct Vector16 r7; u16 r4; @@ -278,12 +278,12 @@ void sub_13B28(struct Vector16* arg0, struct Vector16* arg1, s16 arg2) { sp12 = gCurrentPinballGame->flipper[arg2].position - gCurrentPinballGame->flipper[arg2].prevPosition; - if ((sp12 *= gCurrentPinballGame->flipper[arg2].unk8) > 0) + if ((sp12 *= gCurrentPinballGame->flipper[arg2].ballSide) > 0) { - if (gCurrentPinballGame->flipper[arg2].unk2 < 7) - r4 = gUnknown_086ACD84[gCurrentPinballGame->flipper[arg2].unk5 - 1][0] + 0x4000; + if (gCurrentPinballGame->flipper[arg2].collisionFrameIndex < 7) + r4 = gFlipperCollisionAngles[gCurrentPinballGame->flipper[arg2].collisionMapFrame - 1][0] + 0x4000; else - r4 = gUnknown_086ACD84[gCurrentPinballGame->flipper[arg2].unk5 + 1][1] + -0x4000; // This changes compilation, apparently + r4 = gFlipperCollisionAngles[gCurrentPinballGame->flipper[arg2].collisionMapFrame + 1][1] + -0x4000; // This changes compilation, apparently } else { @@ -297,7 +297,7 @@ void sub_13B28(struct Vector16* arg0, struct Vector16* arg1, s16 arg2) yy = r7.y * r7.y; temp = xx + yy - 0x240000; temp = Sqrt(temp * 4) / 2; - sub_14B84(temp, arg2, &sp4, r4); + ComputeFlipperLaunchVelocity(temp, arg2, &sp4, r4); if (sp4.x > 0x1C2) sp4.x = 0x1C2; @@ -313,9 +313,9 @@ void sub_13B28(struct Vector16* arg0, struct Vector16* arg1, s16 arg2) if (arg0->x < 50) break; - for (i = gCurrentPinballGame->unk1E; i < 4; i++) + for (i = gCurrentPinballGame->gravityStrengthIndex; i < 4; i++) { - if (sub_14AF4(*arg0, i + 1, &sp0, arg2)) + if (LookupFlipperCollisionMap(*arg0, i + 1, &sp0, arg2)) { flag = TRUE; break; @@ -328,7 +328,7 @@ void sub_13B28(struct Vector16* arg0, struct Vector16* arg1, s16 arg2) if (sp12 <= 0) { - gCurrentPinballGame->unk22 = 5; + gCurrentPinballGame->collisionResponseType = 5; } else { @@ -338,7 +338,7 @@ void sub_13B28(struct Vector16* arg0, struct Vector16* arg1, s16 arg2) } -void sub_13D24(u16 arg0, struct Vector16 *arg1, struct Vector16 *arg2) +void ComputeWallReflection(u16 arg0, struct Vector16 *arg1, struct Vector16 *arg2) { u16 angleOfFlippedArg1; s32 angleDelta, adjustedAngle; @@ -404,7 +404,7 @@ void sub_13D24(u16 arg0, struct Vector16 *arg1, struct Vector16 *arg2) m4aSongNumStart(SE_WALL_HIT); if (forwardMag > 0x118 - && gCurrentPinballGame->unk61C == 0 + && gCurrentPinballGame->entityOverlayCollisionState == 0 && gMain.selectedField < MAIN_FIELD_COUNT) { PlayRumble(6); @@ -419,13 +419,13 @@ void sub_13D24(u16 arg0, struct Vector16 *arg1, struct Vector16 *arg2) forwardMag = scaledForwardMag / 100; scaledLateralMag = (lateralMag * 8) / 10; - curveScaleFactor = gCurrentPinballGame->ball->unk6 * 0xEB8 / 0x2BC00; + curveScaleFactor = gCurrentPinballGame->ball->spinSpeed * 0xEB8 / 0x2BC00; curveDir = -angleSign; curveDirScaledFactor = (curveDir * 25) * 1024; - gCurrentPinballGame->ball->unk6 = + gCurrentPinballGame->ball->spinSpeed = curveDirScaledFactor * scaledLateralMag / 0xEB8 - + gCurrentPinballGame->ball->unk4; + + gCurrentPinballGame->ball->spinAcceleration; tempVec.x = forwardMag * Cos(arg0); tempVec.y = -forwardMag * Sin(arg0); @@ -463,7 +463,7 @@ void sub_13D24(u16 arg0, struct Vector16 *arg1, struct Vector16 *arg2) finalAngle = ArcTan2( tempVec.x, -tempVec.y); if (gMain.selectedField == FIELD_SAPPHIRE - && gCurrentPinballGame->unk24 > 0 + && gCurrentPinballGame->boardLayerDepth > 0 && gCurrentPinballGame->ball->positionQ0.y < 0xD2) { tempVec.x = halfMag * Cos(finalAngle) / 20000; @@ -475,13 +475,13 @@ void sub_13D24(u16 arg0, struct Vector16 *arg1, struct Vector16 *arg2) tempVec.y = -halfMag2 * Sin(finalAngle) / 20000; } - sub_14074(arg0, &tempVec, angleOfFlippedArg1); + ApplyBounceBackForce(arg0, &tempVec, angleOfFlippedArg1); arg2->x = tempVec.x; arg2->y = tempVec.y; } -void sub_14074(u16 arg0, struct Vector32 *arg1, u16 arg2) +void ApplyBounceBackForce(u16 arg0, struct Vector32 *arg1, u16 arg2) { const u16 VECTORSCALEDOWN = 20000; s32 vMagSquared; @@ -494,7 +494,7 @@ void sub_14074(u16 arg0, struct Vector32 *arg1, u16 arg2) y = gCurrentPinballGame->ball->velocity.y; vMagSquared = (x * x) + (y * y); - if (gCurrentPinballGame->unk23 == 2) + if (gCurrentPinballGame->collisionSurfaceType == 2) { if (gCurrentPinballGame->ball->positionQ1.x > 0xE0) { @@ -519,7 +519,7 @@ void sub_14074(u16 arg0, struct Vector32 *arg1, u16 arg2) arg1->x = arg1->x / 5; arg1->y = arg1->y / 5; - gCurrentPinballGame->ball->unk6 = (gCurrentPinballGame->ball->unk6 * 4) / 10; + gCurrentPinballGame->ball->spinSpeed = (gCurrentPinballGame->ball->spinSpeed * 4) / 10; if ( gCurrentPinballGame->ballSpeed > 0) { @@ -532,16 +532,16 @@ void sub_14074(u16 arg0, struct Vector32 *arg1, u16 arg2) tempVec.y = -285 * Sin(arg0) / VECTORSCALEDOWN; } - gCurrentPinballGame->unk716 = 4; + gCurrentPinballGame->slingshotHitAnimTimer = 4; if (gCurrentPinballGame->ball->positionQ0.x < 120) - gCurrentPinballGame->unk717 = 0; + gCurrentPinballGame->slingshotSideIndex = 0; else - gCurrentPinballGame->unk717 = 1; + gCurrentPinballGame->slingshotSideIndex = 1; } } else { - if (gCurrentPinballGame->unk23 == 1) + if (gCurrentPinballGame->collisionSurfaceType == 1) { arg1->x = arg1->x / 5; arg1->y = arg1->y / 5; @@ -564,22 +564,22 @@ void sub_14074(u16 arg0, struct Vector32 *arg1, u16 arg2) } else { - tempVec.x = gUnknown_086ACDF4[gCurrentPinballGame->unk23] * Cos(arg0) / VECTORSCALEDOWN; - tempVec.y = -gUnknown_086ACDF4[gCurrentPinballGame->unk23] * Sin(arg0) / VECTORSCALEDOWN; + tempVec.x = gBounceBackForceMagnitudes[gCurrentPinballGame->collisionSurfaceType] * Cos(arg0) / VECTORSCALEDOWN; + tempVec.y = -gBounceBackForceMagnitudes[gCurrentPinballGame->collisionSurfaceType] * Sin(arg0) / VECTORSCALEDOWN; } } arg1->x = arg1->x + tempVec.x; arg1->y = arg1->y + tempVec.y; - if (gCurrentPinballGame->unk5A4 != 0) + if (gCurrentPinballGame->captureState != 0) { s16 x2 = arg1->x; s16 xSign = 1; u16 angle; - if (gCurrentPinballGame->unk5A4 == 1) + if (gCurrentPinballGame->captureState == 1) { - gCurrentPinballGame->unk5A4 = 0; + gCurrentPinballGame->captureState = 0; vMagSquared = 0x80; } else @@ -596,14 +596,14 @@ void sub_14074(u16 arg0, struct Vector32 *arg1, u16 arg2) if (x2 < 0x100) arg1->x = xSign * 256; - gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->ball->spinSpeed = 0; angle = ArcTan2(arg1->x, -arg1->y); arg1->x = vMagSquared * Cos(angle) / VECTORSCALEDOWN; arg1->y = -vMagSquared * Sin(angle) / VECTORSCALEDOWN; } } -u16 sub_14488(struct Vector16* arg0, struct Vector16 arg1) { +u16 PixelWalkCollisionDetection(struct Vector16* arg0, struct Vector16 arg1) { struct Vector16 r8; u32 toggleShiftMode; @@ -630,8 +630,8 @@ u16 sub_14488(struct Vector16* arg0, struct Vector16 arg1) { else toggleShiftMode = 1; - gCurrentPinballGame->unk22 = 0; - gCurrentPinballGame->unk23 = 0; + gCurrentPinballGame->collisionResponseType = 0; + gCurrentPinballGame->collisionSurfaceType = 0; spC = BoardCollisionFuncts_086ACE0C[gMain.selectedField]; @@ -639,9 +639,9 @@ u16 sub_14488(struct Vector16* arg0, struct Vector16 arg1) { { if(spC(arg0, &sp0_return) != 0) { - if (gCurrentPinballGame->unk22 == 1) + if (gCurrentPinballGame->collisionResponseType == 1) { - if (gCurrentPinballGame->unk23 == 3) + if (gCurrentPinballGame->collisionSurfaceType == 3) { u16 j; u16 sp2_testRes; @@ -649,12 +649,12 @@ u16 sub_14488(struct Vector16* arg0, struct Vector16 arg1) { for(j=0; j < 4; j++) { - sp4_testPos.x = arg0->x + gUnknown_086ACE60[j].x; - sp4_testPos.y = arg0->y + gUnknown_086ACE60[j].y; + sp4_testPos.x = arg0->x + gWallEscapeOffsets[j].x; + sp4_testPos.y = arg0->y + gWallEscapeOffsets[j].y; spC(&sp4_testPos, &sp2_testRes); - if (gCurrentPinballGame->unk22 == 1 && gCurrentPinballGame->unk23 == 0) + if (gCurrentPinballGame->collisionResponseType == 1 && gCurrentPinballGame->collisionSurfaceType == 0) { arg0->x = sp4_testPos.x; arg0->y = sp4_testPos.y; @@ -671,10 +671,10 @@ u16 sub_14488(struct Vector16* arg0, struct Vector16 arg1) { } else { - gCurrentPinballGame->unk22 = 0; + gCurrentPinballGame->collisionResponseType = 0; - if (sub_1467C(arg0, &sp0_return) != 0 || - (gCurrentPinballGame->unk5F2 != 0 && sub_14740(arg0, &sp0_return) != 0)) + if (CheckFlipperCollision(arg0, &sp0_return) != 0 || + (gCurrentPinballGame->jirachiCollisionEnabled != 0 && CheckCatchTargetCollision(arg0, &sp0_return) != 0)) break; } @@ -700,7 +700,7 @@ u16 sub_14488(struct Vector16* arg0, struct Vector16 arg1) { return sp0_return; } -u16 sub_1467C(struct Vector16* arg0, u16* arg1) +u16 CheckFlipperCollision(struct Vector16* arg0, u16* arg1) { u16 res; struct Vector16 vec1; @@ -708,18 +708,18 @@ u16 sub_1467C(struct Vector16* arg0, u16* arg1) res = 0; - vec1.x = arg0->x - gUnknown_02031520.unk14.unk22 * 2; - vec2.x = arg0->x - gUnknown_02031520.unk14.unk24 * 2; - vec1.y = arg0->y - gUnknown_02031520.unk14.unk20 * 2; + vec1.x = arg0->x - gBoardConfig.fieldLayout.leftFlipperOriginX * 2; + vec2.x = arg0->x - gBoardConfig.fieldLayout.rightFlipperOriginX * 2; + vec1.y = arg0->y - gBoardConfig.fieldLayout.flipperOriginY * 2; vec2.y = vec1.y; if (vec1.y <= 95 && vec1.y >= 0) { if (vec1.x <= 95 && vec1.x >= 0) { - if(sub_14AF4(vec1, gCurrentPinballGame->unk1E + 1, arg1, 0)) + if(LookupFlipperCollisionMap(vec1, gCurrentPinballGame->gravityStrengthIndex + 1, arg1, 0)) { - gCurrentPinballGame->unk22 = 3; + gCurrentPinballGame->collisionResponseType = 3; res = 1; } } @@ -729,9 +729,9 @@ u16 sub_1467C(struct Vector16* arg0, u16* arg1) if (vec2.x <= 95 && vec2.x >= 0) { vec2.x = 95 - vec2.x; - if (sub_14AF4(vec2, gCurrentPinballGame->unk1E + 1, arg1, 1)) + if (LookupFlipperCollisionMap(vec2, gCurrentPinballGame->gravityStrengthIndex + 1, arg1, 1)) { - gCurrentPinballGame->unk22 = 4; + gCurrentPinballGame->collisionResponseType = 4; res = 1; } } @@ -742,7 +742,7 @@ u16 sub_1467C(struct Vector16* arg0, u16* arg1) } -u16 sub_14740(struct Vector16 *arg0, u16 *arg1) +u16 CheckCatchTargetCollision(struct Vector16 *arg0, u16 *arg1) { struct Vector16 vec1; u16 x, y; @@ -750,48 +750,48 @@ u16 sub_14740(struct Vector16 *arg0, u16 *arg1) u16 var0; res = 0; - if (gCurrentPinballGame->unk5A4 != 2) + if (gCurrentPinballGame->captureState != 2) { - vec1.x = arg0->x / 2 - gCurrentPinballGame->unkC4; - vec1.y = arg0->y / 2 - gCurrentPinballGame->unkC6; + vec1.x = arg0->x / 2 - gCurrentPinballGame->jirachiCenterX; + vec1.y = arg0->y / 2 - gCurrentPinballGame->jirachiCenterY; if ((vec1.y >= 0 && vec1.y < 48) && (vec1.x >= 0 && vec1.x < 48)) { s32 ix = vec1.y * 48 + vec1.x; - var0 = gUnknown_0839A28C[ix]; + var0 = gCatchTargetCollisionBitmap[ix]; if (var0 & 0x80) { - gCurrentPinballGame->unk22 = 2; - gCurrentPinballGame->unk23 = 3; + gCurrentPinballGame->collisionResponseType = 2; + gCurrentPinballGame->collisionSurfaceType = 3; //Todo: fakematch; used to swap register order *arg1 = (var0 & 0x7F & var0) * 512; - gCurrentPinballGame->unk5A6 = 20; + gCurrentPinballGame->captureSequenceFrame = 20; - if (gCurrentPinballGame->unk5A9) - gCurrentPinballGame->unk5A9 = 24; + if (gCurrentPinballGame->captureFlashTimer) + gCurrentPinballGame->captureFlashTimer = 24; else - gCurrentPinballGame->unk5A9 = 20; + gCurrentPinballGame->captureFlashTimer = 20; // Only difference between these two branches is the played sound if (gCurrentPinballGame->currentSpecies == SPECIES_JIRACHI) { - if (gCurrentPinballGame->unk5AA == 0) + if (gCurrentPinballGame->creatureHitCooldown == 0) { - gCurrentPinballGame->unk5A5++; - if (gCurrentPinballGame->unk5A5 == 3) + gCurrentPinballGame->creatureHitCount++; + if (gCurrentPinballGame->creatureHitCount == 3) { - gCurrentPinballGame->unk71D[gCurrentPinballGame->unk5A5 - 1] = 3; - gCurrentPinballGame->unk5A4 = 2; - gCurrentPinballGame->unk5A6 = 0; + gCurrentPinballGame->catchLights[gCurrentPinballGame->creatureHitCount - 1] = 3; + gCurrentPinballGame->captureState = 2; + gCurrentPinballGame->captureSequenceFrame = 0; gCurrentPinballGame->scoreAddedInFrame = 10000; } else { - gCurrentPinballGame->unk71D[gCurrentPinballGame->unk5A5 - 1] = 3; - gCurrentPinballGame->unk5A4 = 1; + gCurrentPinballGame->catchLights[gCurrentPinballGame->creatureHitCount - 1] = 3; + gCurrentPinballGame->captureState = 1; gCurrentPinballGame->scoreAddedInFrame = 10000; } - gCurrentPinballGame->unk5AA = 4; + gCurrentPinballGame->creatureHitCooldown = 4; } res = 1; @@ -800,24 +800,24 @@ u16 sub_14740(struct Vector16 *arg0, u16 *arg1) } else { - if (gCurrentPinballGame->unk5AA == 0) + if (gCurrentPinballGame->creatureHitCooldown == 0) { - gCurrentPinballGame->unk5A5++; - if (gCurrentPinballGame->unk5A5 == 3) + gCurrentPinballGame->creatureHitCount++; + if (gCurrentPinballGame->creatureHitCount == 3) { - gCurrentPinballGame->unk71D[gCurrentPinballGame->unk5A5 - 1] = 3; - gCurrentPinballGame->unk5A4 = 2; - gCurrentPinballGame->unk5A6 = 0; + gCurrentPinballGame->catchLights[gCurrentPinballGame->creatureHitCount - 1] = 3; + gCurrentPinballGame->captureState = 2; + gCurrentPinballGame->captureSequenceFrame = 0; gCurrentPinballGame->scoreAddedInFrame = 10000; } else { - gCurrentPinballGame->unk71D[gCurrentPinballGame->unk5A5 - 1] = 3; - gCurrentPinballGame->unk5A4 = 1; + gCurrentPinballGame->catchLights[gCurrentPinballGame->creatureHitCount - 1] = 3; + gCurrentPinballGame->captureState = 1; gCurrentPinballGame->scoreAddedInFrame = 10000; } - gCurrentPinballGame->unk5AA = 4; + gCurrentPinballGame->creatureHitCooldown = 4; } res = 1; @@ -832,7 +832,7 @@ u16 sub_14740(struct Vector16 *arg0, u16 *arg1) } -void sub_1493C(void) +void ProcessBonusTrapPhysics(void) { struct Vector16 vec1; struct Vector32 vec2; @@ -844,7 +844,7 @@ void sub_1493C(void) vec1.y = gCurrentPinballGame->ball->positionQ1.y - 558; squaredMagnitude = (vec1.x * vec1.x) + (vec1.y * vec1.y); - if (squaredMagnitude < 1764 && (gCurrentPinballGame->unk1E & 1) == 0) + if (squaredMagnitude < 1764 && (gCurrentPinballGame->gravityStrengthIndex & 1) == 0) { angle = ArcTan2(-vec1.x, vec1.y); temp_adjust = 30; @@ -854,48 +854,48 @@ void sub_1493C(void) gCurrentPinballGame->ball->velocity.y = ((vec2.y * 100) + (98 * gCurrentPinballGame->ball->velocity.y)) / 100; } - if (gCurrentPinballGame->unk5F4 < 20) + if (gCurrentPinballGame->collisionMapScrollY < 20) { if (squaredMagnitude < 40) { - gCurrentPinballGame->unk5F4++; + gCurrentPinballGame->collisionMapScrollY++; gCurrentPinballGame->ball->scale = 0x100; } else { gCurrentPinballGame->ball->scale = 0x100; if (squaredMagnitude > 100) - gCurrentPinballGame->unk5F4 = 0; + gCurrentPinballGame->collisionMapScrollY = 0; } } else { - if (gCurrentPinballGame->unk5F4 < 30) + if (gCurrentPinballGame->collisionMapScrollY < 30) { - gCurrentPinballGame->unk5F4++; - gCurrentPinballGame->ball->scale = ((30 - gCurrentPinballGame->unk5F4) * 0x80) / 10 + 0x80; + gCurrentPinballGame->collisionMapScrollY++; + gCurrentPinballGame->ball->scale = ((30 - gCurrentPinballGame->collisionMapScrollY) * 0x80) / 10 + 0x80; gCurrentPinballGame->ball->positionQ0.x = 119; gCurrentPinballGame->ball->positionQ0.y = 279; - gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->ball->spinSpeed = 0; gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ0.x << 8; gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ0.y << 8; } else { - gCurrentPinballGame->unk5F4 = 0; - gCurrentPinballGame->unk25 = 4; + gCurrentPinballGame->collisionMapScrollY = 0; + gCurrentPinballGame->ballCatchState = 4; if (gMain.selectedField == FIELD_RUBY) - sub_1A98C(); + DispatchRubyCatchModeInit(); else - sub_32914(); + DispatchSapphireCatchModeInit(); - gCurrentPinballGame->unk22 = 7; + gCurrentPinballGame->collisionResponseType = 7; gCurrentPinballGame->ball->scale = 0x80; } } } -u16 sub_14AF4(struct Vector16 r0, s16 r1, u16 *r2, s16 r3) { +u16 LookupFlipperCollisionMap(struct Vector16 r0, s16 r1, u16 *r2, s16 r3) { struct FlipperState* flipper; u16 res; int new_var; @@ -906,11 +906,11 @@ u16 sub_14AF4(struct Vector16 r0, s16 r1, u16 *r2, s16 r3) { ix = (r0.y * 96) + r0.x; flipper = &gCurrentPinballGame->flipper[r3]; - flipper->unk5 = gUnknown_086ACDB8[r1 + (flipper->unk2 * 5)]; + flipper->collisionMapFrame = gFlipperCollisionFrameMapping[r1 + (flipper->collisionFrameIndex * 5)]; - if (0xF & (&gUnknown_02031520.unk68[flipper->unk5 * 0x2400])[ix]) + if (0xF & (&gBoardConfig.flipperCollisionData[flipper->collisionMapFrame * 0x2400])[ix]) { - *r2 = 0xFFF0 & (&gUnknown_02031520.unk68[flipper->unk5 * 0x2400])[ix]; + *r2 = 0xFFF0 & (&gBoardConfig.flipperCollisionData[flipper->collisionMapFrame * 0x2400])[ix]; if (r3 == 1) { new_var = 0x8000; @@ -922,22 +922,22 @@ u16 sub_14AF4(struct Vector16 r0, s16 r1, u16 *r2, s16 r3) { return res; } -void sub_14B84(s32 arg0, s16 arg1, struct Vector16* arg2, u16 arg3) +void ComputeFlipperLaunchVelocity(s32 arg0, s16 arg1, struct Vector16* arg2, u16 arg3) { u16 angle; - angle = gCurrentPinballGame->flipper[arg1].unk5; + angle = gCurrentPinballGame->flipper[arg1].collisionMapFrame; - if (gCurrentPinballGame->flipper[arg1].unk8 > 0) + if (gCurrentPinballGame->flipper[arg1].ballSide > 0) { - if (gCurrentPinballGame->unk5C == 0) + if (gCurrentPinballGame->flipperLaunchPending == 0) { u16 var0; s32 scale; s16 temp_r2; s16 temp_r5; - temp_r2 = gCurrentPinballGame->flipper[arg1].unk5; + temp_r2 = gCurrentPinballGame->flipper[arg1].collisionMapFrame; temp_r5 = (temp_r2 - 2) * 25; arg0 -= temp_r5; @@ -949,8 +949,8 @@ void sub_14B84(s32 arg0, s16 arg1, struct Vector16* arg2, u16 arg3) else { var0 = - gUnknown_086ACE2C[temp_r2][0] - - ((gUnknown_086ACE2C[temp_r2][1] * (arg0 -2600)) / 5400); + gFlipperLaunchVelocityParams[temp_r2][0] - + ((gFlipperLaunchVelocityParams[temp_r2][1] * (arg0 -2600)) / 5400); scale = ((arg0 -2600) * 348 / 5400) + 406; } @@ -958,20 +958,20 @@ void sub_14B84(s32 arg0, s16 arg1, struct Vector16* arg2, u16 arg3) var0 = 0x8000 - var0; angle = (gCurrentPinballGame->ball->velocity.x * -0x600) / 0x80 + - (gCurrentPinballGame->ball->unk8 * -0x180) / 0x100 + + (gCurrentPinballGame->ball->prevSpinSpeed * -0x180) / 0x100 + var0; - gCurrentPinballGame->unk60.x = scale * Cos(angle) / 20000; - gCurrentPinballGame->unk60.y = -scale * Sin(angle) / 20000; + gCurrentPinballGame->flipperLaunchVelocity.x = scale * Cos(angle) / 20000; + gCurrentPinballGame->flipperLaunchVelocity.y = -scale * Sin(angle) / 20000; } - gCurrentPinballGame->unk5C = 1; + gCurrentPinballGame->flipperLaunchPending = 1; if (arg1) - arg2->x = -gCurrentPinballGame->unk60.x; + arg2->x = -gCurrentPinballGame->flipperLaunchVelocity.x; else - arg2->x = gCurrentPinballGame->unk60.x; + arg2->x = gCurrentPinballGame->flipperLaunchVelocity.x; - arg2->y = gCurrentPinballGame->unk60.y; + arg2->y = gCurrentPinballGame->flipperLaunchVelocity.y; } else { diff --git a/src/board_process7.c b/src/board_process7.c index bfa3f79..42a90c0 100644 --- a/src/board_process7.c +++ b/src/board_process7.c @@ -4,8 +4,8 @@ #include "constants/fields.h" #include "m4a.h" -extern const u32 gUnknown_083BF16C[][0x80]; -extern const u32 gUnknown_083BDF6C[][0x80]; +extern const u32 gBallSpawnGlowTiles_Type1[][0x80]; +extern const u32 gBallSpawnGlowTiles_Type2[][0x80]; void MainBoardProcess_7B_12524(void) { @@ -17,14 +17,14 @@ void MainBoardProcess_7B_12524(void) s16 r8; currentBallState = gCurrentPinballGame->ball; - r8 = currentBallState->unkA >> 12; + r8 = currentBallState->spinAngle >> 12; if (currentBallState->positionQ0.y == 340 && (currentBallState->positionQ0.x == 90 || currentBallState->positionQ0.x == 149)) - currentBallState->unkA = currentBallState->unkC; + currentBallState->spinAngle = currentBallState->prevSpinAngle; - currentBallState->unkC = currentBallState->unkA; + currentBallState->prevSpinAngle = currentBallState->spinAngle; - if (!gCurrentPinballGame->unk5F7 && gCurrentPinballGame->ballUpgradeCounter > 0) + if (!gCurrentPinballGame->ballUpgradeTimerFrozen && gCurrentPinballGame->ballUpgradeCounter > 0) { if (--gCurrentPinballGame->ballUpgradeCounter == 0) { @@ -36,29 +36,29 @@ void MainBoardProcess_7B_12524(void) gCurrentPinballGame->ballUpgradeCounter = 3600; } - DmaCopy16(3, gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], (void *)OBJ_PLTT + 0x20, 0x20); + DmaCopy16(3, gBallPalettes[gCurrentPinballGame->ballUpgradeType], (void *)OBJ_PLTT + 0x20, 0x20); } } if (currentBallState->positionQ0.y >= 244) { - gCurrentPinballGame->unk5B2 = 1; - gCurrentPinballGame->unk176 = 0; + gCurrentPinballGame->ballInLowerHalf = 1; + gCurrentPinballGame->pondEntitySpriteFlag = 0; } else - gCurrentPinballGame->unk5B2 = 0; + gCurrentPinballGame->ballInLowerHalf = 0; currentBallState->positionQ0.x = currentBallState->positionQ1.x / 2; currentBallState->positionQ0.y = currentBallState->positionQ1.y / 2; - spriteGroup = gMain.unk44[0]; + spriteGroup = gMain.fieldSpriteGroups[0]; if (spriteGroup->available) { SetMatrixScale(currentBallState->scale, currentBallState->scale, 0); - spriteGroup->baseX = -(gCurrentPinballGame->unk4C + 7) + currentBallState->positionQ0.x - gCurrentPinballGame->unk2AA; - spriteGroup->baseY = -(gCurrentPinballGame->unk4E + 7) + currentBallState->positionQ0.y - gCurrentPinballGame->unk5FC - gCurrentPinballGame->unkE6 + gCurrentPinballGame->unk166; + spriteGroup->baseX = -(gCurrentPinballGame->cameraBaseX + 7) + currentBallState->positionQ0.x - gCurrentPinballGame->screenShakeX; + spriteGroup->baseY = -(gCurrentPinballGame->cameraBaseY + 7) + currentBallState->positionQ0.y - gCurrentPinballGame->cameraScrollOffset - gCurrentPinballGame->cameraYAdjust + gCurrentPinballGame->sapphireSpriteTimer; currentBallState->screenPosition.x = spriteGroup->baseX; currentBallState->screenPosition.y = spriteGroup->baseY; @@ -77,7 +77,7 @@ void MainBoardProcess_7B_12524(void) oamData->priority = currentBallState->oamPriority; r8 = r8; // this fools the compiler into thinking r8 holds something that could need sign extending/truncation - DmaCopy16(3, gUnknown_083BB16C[r8 + gCurrentPinballGame->ballUpgradeType * 17], (void *)0x6010400, 0x80); + DmaCopy16(3, gBallRotationTileGraphics[r8 + gCurrentPinballGame->ballUpgradeType * 17], (void *)0x6010400, 0x80); if (spriteGroup->baseY > 200) spriteGroup->baseY = 200; @@ -87,20 +87,20 @@ void MainBoardProcess_7B_12524(void) oamData->x = oam->xOffset + spriteGroup->baseX; - if (currentBallState->unk0) + if (currentBallState->ballHidden) oamData->y = 200; else oamData->y = oam->yOffset + spriteGroup->baseY; } - spriteGroup = gMain.unk44[49]; + spriteGroup = gMain.fieldSpriteGroups[49]; if (spriteGroup->available) { SetMatrixScale(currentBallState->scale, currentBallState->scale, 0); - spriteGroup->baseX = -(gCurrentPinballGame->unk4C + 7) + currentBallState->positionQ0.x - gCurrentPinballGame->unk2AA; - spriteGroup->baseY = -(gCurrentPinballGame->unk4E + 7) + currentBallState->positionQ0.y - gCurrentPinballGame->unk5FC - gCurrentPinballGame->unkE6 + gCurrentPinballGame->unk166; + spriteGroup->baseX = -(gCurrentPinballGame->cameraBaseX + 7) + currentBallState->positionQ0.x - gCurrentPinballGame->screenShakeX; + spriteGroup->baseY = -(gCurrentPinballGame->cameraBaseY + 7) + currentBallState->positionQ0.y - gCurrentPinballGame->cameraScrollOffset - gCurrentPinballGame->cameraYAdjust + gCurrentPinballGame->sapphireSpriteTimer; currentBallState->screenPosition.x = spriteGroup->baseX; currentBallState->screenPosition.y = spriteGroup->baseY; @@ -118,7 +118,7 @@ void MainBoardProcess_7B_12524(void) else oamData->priority = currentBallState->oamPriority; - DmaCopy16(3, gUnknown_083BB16C[r8 + gCurrentPinballGame->ballUpgradeType * 17], (void *)0x6010400, 0x80); + DmaCopy16(3, gBallRotationTileGraphics[r8 + gCurrentPinballGame->ballUpgradeType * 17], (void *)0x6010400, 0x80); if (spriteGroup->baseY > 200) spriteGroup->baseY = 200; @@ -128,7 +128,7 @@ void MainBoardProcess_7B_12524(void) oamData->x = oam->xOffset + spriteGroup->baseX; - if (currentBallState->unk0) + if (currentBallState->ballHidden) oamData->y = 200; else oamData->y = oam->yOffset + spriteGroup->baseY; @@ -136,18 +136,18 @@ void MainBoardProcess_7B_12524(void) for (i = 4; i > 0; i--) { - gCurrentPinballGame->unkD0[i].x = gCurrentPinballGame->unkD0[(i - 1)].x; - gCurrentPinballGame->unkD0[i].y = gCurrentPinballGame->unkD0[(i - 1)].y; + gCurrentPinballGame->ballTrailPosition[i].x = gCurrentPinballGame->ballTrailPosition[(i - 1)].x; + gCurrentPinballGame->ballTrailPosition[i].y = gCurrentPinballGame->ballTrailPosition[(i - 1)].y; } - gCurrentPinballGame->unkD0[0].x = currentBallState->positionQ0.x - 7; - gCurrentPinballGame->unkD0[0].y = currentBallState->positionQ0.y - 7; + gCurrentPinballGame->ballTrailPosition[0].x = currentBallState->positionQ0.x - 7; + gCurrentPinballGame->ballTrailPosition[0].y = currentBallState->positionQ0.y - 7; - if (gCurrentPinballGame->unk71) + if (gCurrentPinballGame->ballTrailEnabled) { for (i = 0; i < 2; i++) { - spriteGroup = gMain.unk44[i + 1]; + spriteGroup = gMain.fieldSpriteGroups[i + 1]; if (spriteGroup->available) { @@ -155,30 +155,30 @@ void MainBoardProcess_7B_12524(void) oamData = &gOamBuffer[oam->oamId]; oamData->priority = currentBallState->oamPriority; - oamData->x = oam->xOffset + (gCurrentPinballGame->unkD0[(i + 1) * 2].x - gCurrentPinballGame->unk4C); + oamData->x = oam->xOffset + (gCurrentPinballGame->ballTrailPosition[(i + 1) * 2].x - gCurrentPinballGame->cameraBaseX); if (i == 0) - oamData->y = gCurrentPinballGame->unkD0[2].y - gCurrentPinballGame->unk4E + oam->yOffset; + oamData->y = gCurrentPinballGame->ballTrailPosition[2].y - gCurrentPinballGame->cameraBaseY + oam->yOffset; else if (i == 1) { if (gMain.systemFrameCount % 2 == 0) - oamData->y = gCurrentPinballGame->unkD0[4].y - gCurrentPinballGame->unk4E + oam->yOffset; + oamData->y = gCurrentPinballGame->ballTrailPosition[4].y - gCurrentPinballGame->cameraBaseY + oam->yOffset; else oamData->y = 200; } } } - gMain.unk44[1]->available = 1; - gMain.unk44[2]->available = 1; - gMain.unk44[49]->available = 1; - gMain.unk44[0]->available = 0; + gMain.fieldSpriteGroups[1]->available = 1; + gMain.fieldSpriteGroups[2]->available = 1; + gMain.fieldSpriteGroups[49]->available = 1; + gMain.fieldSpriteGroups[0]->available = 0; } else { for (i = 0; i < 2; i++) { - spriteGroup = gMain.unk44[i + 1]; + spriteGroup = gMain.fieldSpriteGroups[i + 1]; if (spriteGroup->available) { @@ -186,26 +186,26 @@ void MainBoardProcess_7B_12524(void) oamData = &gOamBuffer[oam->oamId]; oamData->priority = currentBallState->oamPriority; - oamData->x = oam->xOffset + (gCurrentPinballGame->unkD0[(i + 1) * 2].x - gCurrentPinballGame->unk4C); + oamData->x = oam->xOffset + (gCurrentPinballGame->ballTrailPosition[(i + 1) * 2].x - gCurrentPinballGame->cameraBaseX); oamData->y = 200; } } - gMain.unk44[1]->available = 0; - gMain.unk44[2]->available = 0; - gMain.unk44[49]->available = 0; - gMain.unk44[0]->available = 1; + gMain.fieldSpriteGroups[1]->available = 0; + gMain.fieldSpriteGroups[2]->available = 0; + gMain.fieldSpriteGroups[49]->available = 0; + gMain.fieldSpriteGroups[0]->available = 1; } - spriteGroup = gMain.unk44[43]; + spriteGroup = gMain.fieldSpriteGroups[43]; if (spriteGroup->available) { s8 newIx; - if (gCurrentPinballGame->unk71C < 59) + if (gCurrentPinballGame->ballShadowTimer < 59) { - spriteGroup->baseX = gMain.unk44[0]->baseX - 8; - spriteGroup->baseY = gMain.unk44[0]->baseY - 8; + spriteGroup->baseX = gMain.fieldSpriteGroups[0]->baseX - 8; + spriteGroup->baseY = gMain.fieldSpriteGroups[0]->baseY - 8; } else { @@ -213,8 +213,8 @@ void MainBoardProcess_7B_12524(void) spriteGroup->baseY = 180; } - newIx = gCurrentPinballGame->unk6E; - DmaCopy16(3, gUnknown_083BD36C[newIx], (void *)0x6011EE0, 0x200); + newIx = gCurrentPinballGame->ballShadowTileIndex; + DmaCopy16(3, gBallShadowTileGraphics[newIx], (void *)0x6011EE0, 0x200); oam = &spriteGroup->oam[0]; @@ -223,8 +223,8 @@ void MainBoardProcess_7B_12524(void) gOamBuffer[oam->oamId].priority = currentBallState->oamPriority; - if (gCurrentPinballGame->unk71C < 14) - gMain.unk44[43]->available = 0; + if (gCurrentPinballGame->ballShadowTimer < 14) + gMain.fieldSpriteGroups[43]->available = 0; } } @@ -235,52 +235,52 @@ void BonusBoardProcess_7B_12BF8() struct SpriteGroup *spriteGroup; struct OamData *oamData; struct OamDataSimple *oam; - struct BallState *unk1334_0; + struct BallState *primaryBall; - gCurrentPinballGame->unk1330 = gCurrentPinballGame->unk1334; - gCurrentPinballGame->ball = gCurrentPinballGame->unk1334; + gCurrentPinballGame->secondaryBall = gCurrentPinballGame->ballStates; + gCurrentPinballGame->ball = gCurrentPinballGame->ballStates; - unk1334_0 = &gCurrentPinballGame->unk1334[0]; + primaryBall = &gCurrentPinballGame->ballStates[0]; switch (gMain.selectedField) { case FIELD_KECLEON: - unk1334_0->oamPriority = 2; - spriteGroup = &gMain_spriteGroups[gUnknown_02031590[22]]; + primaryBall->oamPriority = 2; + spriteGroup = &gMain_spriteGroups[gKecleonSpriteOrderMap[22]]; break; case FIELD_KYOGRE: case FIELD_GROUDON: case FIELD_SPHEAL: - unk1334_0->oamPriority = 1; - spriteGroup = gMain.unk44[0]; + primaryBall->oamPriority = 1; + spriteGroup = gMain.fieldSpriteGroups[0]; break; case FIELD_RAYQUAZA: - if (unk1334_0->oamPriority > 2) - unk1334_0->oamPriority = 2; - spriteGroup = gMain.unk44[0]; + if (primaryBall->oamPriority > 2) + primaryBall->oamPriority = 2; + spriteGroup = gMain.fieldSpriteGroups[0]; break; default: - unk1334_0->oamPriority = 3; - spriteGroup = gMain.unk44[0]; + primaryBall->oamPriority = 3; + spriteGroup = gMain.fieldSpriteGroups[0]; break; } - r5 = gCurrentPinballGame->ball->unkA >> 12; - DmaCopy16(3, &gUnknown_083BB16C[r5 + gCurrentPinballGame->ballUpgradeType * 17], (void *)VRAM + 0x10400, 0x80); + r5 = gCurrentPinballGame->ball->spinAngle >> 12; + DmaCopy16(3, &gBallRotationTileGraphics[r5 + gCurrentPinballGame->ballUpgradeType * 17], (void *)VRAM + 0x10400, 0x80); - unk1334_0->positionQ0.x = unk1334_0->positionQ1.x / 2; - unk1334_0->positionQ0.y = unk1334_0->positionQ1.y / 2; + primaryBall->positionQ0.x = primaryBall->positionQ1.x / 2; + primaryBall->positionQ0.y = primaryBall->positionQ1.y / 2; - spriteGroup->baseX = unk1334_0->positionQ0.x - - (gCurrentPinballGame->unk4C + 7) - - gCurrentPinballGame->unk2AA; - spriteGroup->baseY = unk1334_0->positionQ0.y + spriteGroup->baseX = primaryBall->positionQ0.x + - (gCurrentPinballGame->cameraBaseX + 7) + - gCurrentPinballGame->screenShakeX; + spriteGroup->baseY = primaryBall->positionQ0.y - 7 - - gCurrentPinballGame->unk4E - - gCurrentPinballGame->unk5FC - - gCurrentPinballGame->unkE6 - - gCurrentPinballGame->unk2AC - - (gCurrentPinballGame->unk38C / 10); + - gCurrentPinballGame->cameraBaseY + - gCurrentPinballGame->cameraScrollOffset + - gCurrentPinballGame->cameraYAdjust + - gCurrentPinballGame->screenShakeY + - (gCurrentPinballGame->bossRenderOffsetY / 10); if (spriteGroup->baseY < -60) spriteGroup->baseY = -60; @@ -288,117 +288,117 @@ void BonusBoardProcess_7B_12BF8() if (spriteGroup->baseY > 180) spriteGroup->baseY = 180; - unk1334_0->screenPosition.x = spriteGroup->baseX; - unk1334_0->screenPosition.y = spriteGroup->baseY; + primaryBall->screenPosition.x = spriteGroup->baseX; + primaryBall->screenPosition.y = spriteGroup->baseY; oam = &spriteGroup->oam[0]; oamData = &gOamBuffer[oam->oamId]; - oamData->priority = unk1334_0->oamPriority; + oamData->priority = primaryBall->oamPriority; oamData->x = oam->xOffset + spriteGroup->baseX; - if (unk1334_0->unk0) + if (primaryBall->ballHidden) oamData->y = 200; else oamData->y = oam->yOffset + spriteGroup->baseY; - if (gCurrentPinballGame->unk388) + if (gCurrentPinballGame->ballRespawnState) { - spriteGroup = gMain.unk44[1]; + spriteGroup = gMain.fieldSpriteGroups[1]; if (spriteGroup->available) { - spriteGroup->baseX = unk1334_0->screenPosition.x - 8; - spriteGroup->baseY = unk1334_0->screenPosition.y - 8; + spriteGroup->baseX = primaryBall->screenPosition.x - 8; + spriteGroup->baseY = primaryBall->screenPosition.y - 8; oam = &spriteGroup->oam[0]; gOamBuffer[oam->oamId].x = oam->xOffset + spriteGroup->baseX; gOamBuffer[oam->oamId].y = oam->yOffset + spriteGroup->baseY; } - if (gCurrentPinballGame->unk388 == 1 || gCurrentPinballGame->unk388 == 3) + if (gCurrentPinballGame->ballRespawnState == 1 || gCurrentPinballGame->ballRespawnState == 3) { - if (gCurrentPinballGame->unk392 == 0) + if (gCurrentPinballGame->ballRespawnTimer == 0) { - gCurrentPinballGame->unk1F = 1; - unk1334_0->velocity.x = 0; - unk1334_0->velocity.y = 0; - unk1334_0->unk6 = 0; + gCurrentPinballGame->ballFrozenState = 1; + primaryBall->velocity.x = 0; + primaryBall->velocity.y = 0; + primaryBall->spinSpeed = 0; } - if (gCurrentPinballGame->unk392 == 150) + if (gCurrentPinballGame->ballRespawnTimer == 150) spriteGroup->available = TRUE; - if (gCurrentPinballGame->unk392 == 154) + if (gCurrentPinballGame->ballRespawnTimer == 154) m4aSongNumStart(SE_UNKNOWN_0xF9); - if (gCurrentPinballGame->unk392 > 149) + if (gCurrentPinballGame->ballRespawnTimer > 149) { - r5 = ((gCurrentPinballGame->unk392 - 150) % 66) / 6; - DmaCopy16(3, &gUnknown_083BF16C[r5], (void *)VRAM + 0x10720, 0x200); - unk1334_0->unk6 -= 40; + r5 = ((gCurrentPinballGame->ballRespawnTimer - 150) % 66) / 6; + DmaCopy16(3, &gBallSpawnGlowTiles_Type1[r5], (void *)VRAM + 0x10720, 0x200); + primaryBall->spinSpeed -= 40; } if ((gMain.modeChangeFlags & ~MODE_CHANGE_EXPIRED_BONUS) == 0) { - gCurrentPinballGame->unk392++; + gCurrentPinballGame->ballRespawnTimer++; if (r5 >= 7 && r5 <= 10) { - DmaCopy16(3, &gUnknown_08137E14[(s16) (gCurrentPinballGame->ballUpgradeType + 4)], (void *)PLTT + 0x220, 0x20); + DmaCopy16(3, &gBallPalettes[(s16) (gCurrentPinballGame->ballUpgradeType + 4)], (void *)PLTT + 0x220, 0x20); } } - if (gCurrentPinballGame->unk392 == 186) - unk1334_0->unk0 = 0; + if (gCurrentPinballGame->ballRespawnTimer == 186) + primaryBall->ballHidden = 0; - if (gCurrentPinballGame->unk392 > 215) + if (gCurrentPinballGame->ballRespawnTimer > 215) { - if (gCurrentPinballGame->unk388 == 3) - gCurrentPinballGame->unk294 = 2; + if (gCurrentPinballGame->ballRespawnState == 3) + gCurrentPinballGame->boardModeType = 2; - gCurrentPinballGame->unk388 = 0; + gCurrentPinballGame->ballRespawnState = 0; spriteGroup->available = FALSE; - gCurrentPinballGame->unk1F = 0; - DmaCopy16(3, &gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], (void *)PLTT + 0x220, 0x20); + gCurrentPinballGame->ballFrozenState = 0; + DmaCopy16(3, &gBallPalettes[gCurrentPinballGame->ballUpgradeType], (void *)PLTT + 0x220, 0x20); } } else { - if (gCurrentPinballGame->unk392 == 0) + if (gCurrentPinballGame->ballRespawnTimer == 0) { - gCurrentPinballGame->unk1F = 1; - unk1334_0->velocity.x = 0; - unk1334_0->velocity.y = 0; - unk1334_0->unk6 = 0; + gCurrentPinballGame->ballFrozenState = 1; + primaryBall->velocity.x = 0; + primaryBall->velocity.y = 0; + primaryBall->spinSpeed = 0; } - if (gCurrentPinballGame->unk392 == 5) + if (gCurrentPinballGame->ballRespawnTimer == 5) spriteGroup->available = TRUE; - if (gCurrentPinballGame->unk392 > 4) + if (gCurrentPinballGame->ballRespawnTimer > 4) { - r5 = ((gCurrentPinballGame->unk392 - 5) % 63 / 7); - DmaCopy16(3, &gUnknown_083BDF6C[r5], (void *)VRAM + 0x10720, 0x200); - unk1334_0->unk6 -= 20; + r5 = ((gCurrentPinballGame->ballRespawnTimer - 5) % 63 / 7); + DmaCopy16(3, &gBallSpawnGlowTiles_Type2[r5], (void *)VRAM + 0x10720, 0x200); + primaryBall->spinSpeed -= 20; } if ((gMain.modeChangeFlags & ~MODE_CHANGE_BONUS_BANNER) == 0) - gCurrentPinballGame->unk392++; + gCurrentPinballGame->ballRespawnTimer++; - if (gCurrentPinballGame->unk392 == 23) + if (gCurrentPinballGame->ballRespawnTimer == 23) m4aSongNumStart(SE_UNKNOWN_0xF9); - if (gCurrentPinballGame->unk392 == 20) - unk1334_0->unk0 = 1; + if (gCurrentPinballGame->ballRespawnTimer == 20) + primaryBall->ballHidden = 1; - if (gCurrentPinballGame->unk392 > 67) + if (gCurrentPinballGame->ballRespawnTimer > 67) { - gCurrentPinballGame->unk388 = 0; + gCurrentPinballGame->ballRespawnState = 0; spriteGroup->available = FALSE; - DmaCopy16(3, &gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], (void *)PLTT + 0x220, 0x20); + DmaCopy16(3, &gBallPalettes[gCurrentPinballGame->ballUpgradeType], (void *)PLTT + 0x220, 0x20); } } } else { - if (gCurrentPinballGame->unk5F7 == 0 && gCurrentPinballGame->ballUpgradeCounter != 0) + if (gCurrentPinballGame->ballUpgradeTimerFrozen == 0 && gCurrentPinballGame->ballUpgradeCounter != 0) { gCurrentPinballGame->ballUpgradeCounter--; if (gCurrentPinballGame->ballUpgradeCounter == 0) @@ -411,7 +411,7 @@ void BonusBoardProcess_7B_12BF8() gCurrentPinballGame->ballUpgradeCounter = 60 * 60; } } - DmaCopy16(3, &gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], (void *)PLTT + 0x220, 0x20); + DmaCopy16(3, &gBallPalettes[gCurrentPinballGame->ballUpgradeType], (void *)PLTT + 0x220, 0x20); } } } @@ -420,43 +420,43 @@ void BonusBoardProcess_7B_12BF8() case FIELD_KYOGRE: case FIELD_GROUDON: case FIELD_RAYQUAZA: - if (gCurrentPinballGame->unk71) + if (gCurrentPinballGame->ballTrailEnabled) { for (i = 4; i > 0; i--) { - gCurrentPinballGame->unkD0[i].x = gCurrentPinballGame->unkD0[i - 1].x; - gCurrentPinballGame->unkD0[i].y = gCurrentPinballGame->unkD0[i - 1].y; + gCurrentPinballGame->ballTrailPosition[i].x = gCurrentPinballGame->ballTrailPosition[i - 1].x; + gCurrentPinballGame->ballTrailPosition[i].y = gCurrentPinballGame->ballTrailPosition[i - 1].y; } - gCurrentPinballGame->unkD0[0].x = unk1334_0->positionQ0.x - 7; - gCurrentPinballGame->unkD0[0].y = unk1334_0->positionQ0.y - 7; + gCurrentPinballGame->ballTrailPosition[0].x = primaryBall->positionQ0.x - 7; + gCurrentPinballGame->ballTrailPosition[0].y = primaryBall->positionQ0.y - 7; for (i = 0; i < 2; i++) { - spriteGroup = gMain.unk44[i + 6]; + spriteGroup = gMain.fieldSpriteGroups[i + 6]; if (spriteGroup->available) { oam = &spriteGroup->oam[0]; oamData = &gOamBuffer[oam->oamId]; - oamData->priority = unk1334_0->oamPriority; + oamData->priority = primaryBall->oamPriority; oamData->x = oam->xOffset - + (gCurrentPinballGame->unkD0[(i + 1) * 2].x - - gCurrentPinballGame->unk4C); + + (gCurrentPinballGame->ballTrailPosition[(i + 1) * 2].x + - gCurrentPinballGame->cameraBaseX); if (i == 0) { oamData->y = oam->yOffset - + (gCurrentPinballGame->unkD0[2].y - - gCurrentPinballGame->unk4E - - gCurrentPinballGame->unkE6); + + (gCurrentPinballGame->ballTrailPosition[2].y + - gCurrentPinballGame->cameraBaseY + - gCurrentPinballGame->cameraYAdjust); } else if (i == 1) { if ((gMain.systemFrameCount & i) == 0) { oamData->y = oam->yOffset - + (gCurrentPinballGame->unkD0[4].y - - gCurrentPinballGame->unk4E - - gCurrentPinballGame->unkE6); + + (gCurrentPinballGame->ballTrailPosition[4].y + - gCurrentPinballGame->cameraBaseY + - gCurrentPinballGame->cameraYAdjust); } else { @@ -465,26 +465,26 @@ void BonusBoardProcess_7B_12BF8() } } } - gMain.unk44[6]->available = TRUE; - gMain.unk44[7]->available = TRUE; + gMain.fieldSpriteGroups[6]->available = TRUE; + gMain.fieldSpriteGroups[7]->available = TRUE; } else { for (i = 0; i < 2; i++) { - spriteGroup = gMain.unk44[i + 6]; + spriteGroup = gMain.fieldSpriteGroups[i + 6]; if (spriteGroup->available) { oam = &spriteGroup->oam[0]; oamData = &gOamBuffer[oam->oamId]; - oamData->priority = unk1334_0->oamPriority; + oamData->priority = primaryBall->oamPriority; oamData->x = oam->xOffset - + (gCurrentPinballGame->unkD0[(i + 1) * 2].x - gCurrentPinballGame->unk4C); + + (gCurrentPinballGame->ballTrailPosition[(i + 1) * 2].x - gCurrentPinballGame->cameraBaseX); oamData->y = 200; } } - gMain.unk44[6]->available = FALSE; - gMain.unk44[7]->available = FALSE; + gMain.fieldSpriteGroups[6]->available = FALSE; + gMain.fieldSpriteGroups[7]->available = FALSE; } } } diff --git a/src/board_process8.c b/src/board_process8.c index 43000f0..763c403 100644 --- a/src/board_process8.c +++ b/src/board_process8.c @@ -3,9 +3,9 @@ #include "main.h" #include "constants/bg_music.h" -extern const u8 gUnknown_086B0884[]; -extern const u8 gUnknown_081C0064[]; -extern const u8 gUnknown_086B08A4[]; +extern const u8 gTimerWarningPalette_Fast[]; +extern const u8 gDefaultBallPalette[]; +extern const u8 gTimerWarningPalette_Slow[]; void AllBoardProcess_8A_4CEA8(void) { @@ -18,7 +18,7 @@ void AllBoardProcess_8B_4CEB4(void) s16 sp0[12]; u32 value; - sub_4D3D0(); + ProcessEventTimer(); gCurrentPinballGame->scoreAdditionAccumulator += (gCurrentPinballGame->ballUpgradeType + 1) * gCurrentPinballGame->scoreAddedInFrame; if (gCurrentPinballGame->scoreCounterAnimationEnabled) { @@ -97,8 +97,8 @@ void AllBoardProcess_8B_4CEB4(void) } for (j = i; j < 12; j++) { - gUnknown_03005C00[0x7C1 + (j - i)] = sp0[j] * 2 - 0x3EA0; - gUnknown_03005C00[0x7E1 + (j - i)] = sp0[j] * 2 - 0x3E9F; + gBG0TilemapBuffer[0x7C1 + (j - i)] = sp0[j] * 2 - 0x3EA0; + gBG0TilemapBuffer[0x7E1 + (j - i)] = sp0[j] * 2 - 0x3E9F; } if (gCurrentPinballGame->caughtMonCount > 999) @@ -106,71 +106,71 @@ void AllBoardProcess_8B_4CEB4(void) sp0[2] = gCurrentPinballGame->caughtMonCount / 100; sp0[1] = (gCurrentPinballGame->caughtMonCount % 100) / 10; sp0[0] = gCurrentPinballGame->caughtMonCount % 10; - gUnknown_03005C00[0x7D1] = 0xC17E; - gUnknown_03005C00[0x7F1] = 0xC17F; - gUnknown_03005C00[0x7D2] = (sp0[2] + 5) * 2 - 0x3EA0; - gUnknown_03005C00[0x7F2] = (sp0[2] + 5) * 2 - 0x3E9F; - gUnknown_03005C00[0x7D3] = (sp0[1] + 5) * 2 - 0x3EA0; - gUnknown_03005C00[0x7F3] = (sp0[1] + 5) * 2 - 0x3E9F; - gUnknown_03005C00[0x7D4] = (sp0[0] + 5) * 2 - 0x3EA0; - gUnknown_03005C00[0x7F4] = (sp0[0] + 5) * 2 - 0x3E9F; + gBG0TilemapBuffer[0x7D1] = 0xC17E; + gBG0TilemapBuffer[0x7F1] = 0xC17F; + gBG0TilemapBuffer[0x7D2] = (sp0[2] + 5) * 2 - 0x3EA0; + gBG0TilemapBuffer[0x7F2] = (sp0[2] + 5) * 2 - 0x3E9F; + gBG0TilemapBuffer[0x7D3] = (sp0[1] + 5) * 2 - 0x3EA0; + gBG0TilemapBuffer[0x7F3] = (sp0[1] + 5) * 2 - 0x3E9F; + gBG0TilemapBuffer[0x7D4] = (sp0[0] + 5) * 2 - 0x3EA0; + gBG0TilemapBuffer[0x7F4] = (sp0[0] + 5) * 2 - 0x3E9F; if (gCurrentPinballGame->coins > 99) gCurrentPinballGame->coins = 99; sp0[1] = gCurrentPinballGame->coins / 10; sp0[0] = gCurrentPinballGame->coins % 10; - gUnknown_03005C00[0x7D6] = 0xC19C; - gUnknown_03005C00[0x7F6] = 0xC19D; - gUnknown_03005C00[0x7D7] = (sp0[1] + 5) * 2 - 0x3EA0; - gUnknown_03005C00[0x7F7] = (sp0[1] + 5) * 2 - 0x3E9F; - gUnknown_03005C00[0x7D8] = (sp0[0] + 5) * 2 - 0x3EA0; - gUnknown_03005C00[0x7F8] = (sp0[0] + 5) * 2 - 0x3E9F; + gBG0TilemapBuffer[0x7D6] = 0xC19C; + gBG0TilemapBuffer[0x7F6] = 0xC19D; + gBG0TilemapBuffer[0x7D7] = (sp0[1] + 5) * 2 - 0x3EA0; + gBG0TilemapBuffer[0x7F7] = (sp0[1] + 5) * 2 - 0x3E9F; + gBG0TilemapBuffer[0x7D8] = (sp0[0] + 5) * 2 - 0x3EA0; + gBG0TilemapBuffer[0x7F8] = (sp0[0] + 5) * 2 - 0x3E9F; if (gCurrentPinballGame->numLives > 9) gCurrentPinballGame->numLives = 9; - gUnknown_03005C00[0x7DA] = 0xC180; - gUnknown_03005C00[0x7FA] = 0xC181; - gUnknown_03005C00[0x7DB] = (gCurrentPinballGame->numLives + 5) * 2 - 0x3EA0; - gUnknown_03005C00[0x7FB] = (gCurrentPinballGame->numLives + 5) * 2 - 0x3E9F; + gBG0TilemapBuffer[0x7DA] = 0xC180; + gBG0TilemapBuffer[0x7FA] = 0xC181; + gBG0TilemapBuffer[0x7DB] = (gCurrentPinballGame->numLives + 5) * 2 - 0x3EA0; + gBG0TilemapBuffer[0x7FB] = (gCurrentPinballGame->numLives + 5) * 2 - 0x3E9F; - if (gCurrentPinballGame->unk1CA == 13) + if (gCurrentPinballGame->catchCounterValue == 13) { - if (gCurrentPinballGame->unk1DC & 0x8) + if (gCurrentPinballGame->catchCounterBlinkTimer & 0x8) { - gUnknown_03005C00[0x7DD] = 0xC19A; - gUnknown_03005C00[0x7FD] = 0xC19B; + gBG0TilemapBuffer[0x7DD] = 0xC19A; + gBG0TilemapBuffer[0x7FD] = 0xC19B; } else { - gUnknown_03005C00[0x7DD] = 0xC182; - gUnknown_03005C00[0x7FD] = 0xC183; + gBG0TilemapBuffer[0x7DD] = 0xC182; + gBG0TilemapBuffer[0x7FD] = 0xC183; } - if (gCurrentPinballGame->unk1DC) - gCurrentPinballGame->unk1DC--; + if (gCurrentPinballGame->catchCounterBlinkTimer) + gCurrentPinballGame->catchCounterBlinkTimer--; } else { - gUnknown_03005C00[0x7DD] = 0xC19E; - gUnknown_03005C00[0x7FD] = 0xC19F; + gBG0TilemapBuffer[0x7DD] = 0xC19E; + gBG0TilemapBuffer[0x7FD] = 0xC19F; } - DmaCopy16(3, &gUnknown_03005C00[0x7C0], (void *)0x06002F80, 0x80); + DmaCopy16(3, &gBG0TilemapBuffer[0x7C0], (void *)0x06002F80, 0x80); } -void sub_4D3D0(void) +void ProcessEventTimer(void) { s16 i; s16 sp0[4]; s16 var2; - if (gCurrentPinballGame->unk294 == 0) + if (gCurrentPinballGame->boardModeType == 0) return; if (gCurrentPinballGame->eventTimer == 0) return; - if (gCurrentPinballGame->unk294 == 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE) + if (gCurrentPinballGame->boardModeType == 2 && gMain.modeChangeFlags == MODE_CHANGE_NONE) gCurrentPinballGame->eventTimer--; sp0[0] = gCurrentPinballGame->eventTimer / 3600; @@ -179,44 +179,44 @@ void sub_4D3D0(void) sp0[2] = var2 / 600; var2 %= 600; sp0[3] = var2 / 60; - if (gCurrentPinballGame->unk294 == 3) + if (gCurrentPinballGame->boardModeType == 3) { for (i = 0; i < 4; i++) { - gUnknown_03005C00[0x179 + i] = 0x1FF; - gUnknown_03005C00[0x199 + i] = 0x1FF; + gBG0TilemapBuffer[0x179 + i] = 0x1FF; + gBG0TilemapBuffer[0x199 + i] = 0x1FF; } - DmaCopy16(3, &gUnknown_03005C00[0x160], (void *)0x060022C0, 0x80); - gCurrentPinballGame->unk294 = 0; + DmaCopy16(3, &gBG0TilemapBuffer[0x160], (void *)0x060022C0, 0x80); + gCurrentPinballGame->boardModeType = 0; gCurrentPinballGame->eventTimer = 0; } else { if (gCurrentPinballGame->eventTimer == 0) { - sub_4D648(); + ResetEventState(); } else { for (i = 0; i < 4; i++) { - gUnknown_03005C00[i + 0x179] = sp0[i] * 2 - 0x3EC0; - gUnknown_03005C00[i + 0x199] = sp0[i] * 2 - 0x3EBF; + gBG0TilemapBuffer[i + 0x179] = sp0[i] * 2 - 0x3EC0; + gBG0TilemapBuffer[i + 0x199] = sp0[i] * 2 - 0x3EBF; } } - DmaCopy16(3, &gUnknown_03005C00[0x160], (void *)0x060022C0, 0x80); + DmaCopy16(3, &gBG0TilemapBuffer[0x160], (void *)0x060022C0, 0x80); } if (gCurrentPinballGame->eventTimer <= 900) { if (gCurrentPinballGame->eventTimer & 0x8) { - DmaCopy16(3, gUnknown_086B0884, (void *)0x05000180, 0x20); + DmaCopy16(3, gTimerWarningPalette_Fast, (void *)0x05000180, 0x20); } else { - DmaCopy16(3, gUnknown_081C0064, (void *)0x05000180, 0x20); + DmaCopy16(3, gDefaultBallPalette, (void *)0x05000180, 0x20); } if (gCurrentPinballGame->eventTimer == 900) @@ -226,26 +226,26 @@ void sub_4D3D0(void) { if ((gCurrentPinballGame->eventTimer % 22) / 11) { - DmaCopy16(3, gUnknown_086B08A4, (void *)0x05000180, 0x20); + DmaCopy16(3, gTimerWarningPalette_Slow, (void *)0x05000180, 0x20); } else { - DmaCopy16(3, gUnknown_081C0064, (void *)0x05000180, 0x20); + DmaCopy16(3, gDefaultBallPalette, (void *)0x05000180, 0x20); } } } -void sub_4D648(void) +void ResetEventState(void) { s16 i; - gCurrentPinballGame->unk294 = 0; + gCurrentPinballGame->boardModeType = 0; gCurrentPinballGame->eventTimer = 0; for (i = 0; i < 4; i++) { - gUnknown_03005C00[0x179 + i] = 0x1FF; - gUnknown_03005C00[0x199 + i] = 0x1FF; + gBG0TilemapBuffer[0x179 + i] = 0x1FF; + gBG0TilemapBuffer[0x199 + i] = 0x1FF; } - DmaCopy16(3, &gUnknown_03005C00[0x160], (void *)0x060022C0, 0x80); + DmaCopy16(3, &gBG0TilemapBuffer[0x160], (void *)0x060022C0, 0x80); } diff --git a/src/bonus_field_select.c b/src/bonus_field_select.c index 5373554..9fd41b0 100644 --- a/src/bonus_field_select.c +++ b/src/bonus_field_select.c @@ -22,21 +22,21 @@ enum BonusFieldSelection FIELD_SELECT_RAYQUAZA, }; -EWRAM_DATA s8 gUnknown_0201A4B0 = 0; -EWRAM_DATA u8 gUnknown_0201A4C0 = 0; -EWRAM_DATA s16 gUnknown_0201A4F4 = 0; +EWRAM_DATA s8 gBallSpeedSubmenuVisible = 0; +EWRAM_DATA u8 gSelectedBallSpeed = 0; +EWRAM_DATA s16 gBallSpeedDisplayToggle = 0; EWRAM_DATA s8 gSelectedBonusField = 0; EWRAM_DATA s16 gBonusFieldSelectTimer = 0; -EWRAM_DATA s16 gUnknown_0202BE1C = 0; +EWRAM_DATA s16 gBonusFieldLoadingCounter = 0; EWRAM_DATA s8 gBonusFieldSelectState = BONUS_FIELD_SELECT_STATE_CHOOSE_FIELD; EWRAM_DATA s8 gBonusFieldSelectNextMainState = STATE_INTRO; -EWRAM_DATA u8 gUnknown_0202BEE8 = 0; +EWRAM_DATA u8 gBonusFieldHighlightPalette = 0; extern void (*const gBonusFieldSelectStateFuncs[])(void); -extern const struct SpriteSet *const gUnknown_086A4C80[16]; -extern const struct VectorU16 gUnknown_086A4CC0[]; -extern const struct VectorU16 gUnknown_086A4CD8[]; +extern const struct SpriteSet *const gBonusFieldSelectSpriteSets[16]; +extern const struct VectorU16 gBonusFieldStageIconPositions[]; +extern const struct VectorU16 gBonusFieldSpeedIndicatorPositions[]; extern const u8 gBonusFieldMenuSelectionToField[]; extern const u8 gBonusFieldSelectBg0_Tilemap[]; @@ -45,8 +45,8 @@ extern const u8 gBonusFieldSelectBg2_Tilemap[]; extern const u16 gBonusFieldSelectStages_Pals[]; extern const u8 gBonusFieldSelectStages_Gfx[]; -void sub_2710(void); -void sub_29C8(void); +void InitBonusFieldSelectState(void); +void RenderBonusFieldSelectSprites(void); void BonusFieldSelectMain(void) { @@ -55,7 +55,7 @@ void BonusFieldSelectMain(void) void LoadBonusFieldSelectGraphics(void) { - ResetSomeGraphicsRelatedStuff(); + ResetDisplayState(); REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_FORCED_BLANK | DISPCNT_OBJ_ON; REG_BG0CNT = BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(0) | BGCNT_PRIORITY(1) | BGCNT_TXT256x256; @@ -76,30 +76,30 @@ void LoadBonusFieldSelectGraphics(void) DmaCopy16(3, gFieldSelectSpritePals, (void *)(PLTT + 0x200), 0x60); DmaCopy16(3, gFieldSelectSpriteGfx, (void *)(VRAM + 0x10000), 0x4020); - sub_0CBC(); - sub_2710(); - sub_FD5C(sub_29C8); + EnableVBlankInterrupts(); + InitBonusFieldSelectState(); + FadeInFromWhite(RenderBonusFieldSelectSprites); m4aSongNumStart(MUS_TABLE_SELECT); gMain.subState++; } -void sub_2710(void) +void InitBonusFieldSelectState(void) { gSelectedBonusField = FIELD_SELECT_DUSCLOPS; gBonusFieldSelectState = BONUS_FIELD_SELECT_STATE_CHOOSE_FIELD; gBonusFieldSelectTimer = 0; - gUnknown_0202BE1C = 0; - gUnknown_0202BEE8 = 0; - gUnknown_0201A4F4 = 0; - gUnknown_0201A4B0 = 0; + gBonusFieldLoadingCounter = 0; + gBonusFieldHighlightPalette = 0; + gBallSpeedDisplayToggle = 0; + gBallSpeedSubmenuVisible = 0; gBonusFieldSelectNextMainState = STATE_INTRO; - gUnknown_0201A4C0 = gMain_saveData.ballSpeed; + gSelectedBallSpeed = gMain_saveData.ballSpeed; } void BonusFieldSelect_State1_2768(void) { - sub_29C8(); + RenderBonusFieldSelectSprites(); switch (gBonusFieldSelectState) { case BONUS_FIELD_SELECT_STATE_CHOOSE_FIELD: @@ -139,7 +139,7 @@ void BonusFieldSelect_State1_2768(void) { m4aSongNumStart(SE_MENU_SELECT); gBonusFieldSelectState = BONUS_FIELD_SELECT_STATE_BALL_SPEED; - gUnknown_0201A4B0 = 1; + gBallSpeedSubmenuVisible = 1; gBonusFieldSelectTimer = 0; } if (JOY_NEW(B_BUTTON)) @@ -153,28 +153,28 @@ void BonusFieldSelect_State1_2768(void) if (JOY_NEW(DPAD_LEFT | DPAD_RIGHT)) { m4aSongNumStart(SE_MENU_MOVE); - gUnknown_0201A4C0 = 1 - gUnknown_0201A4C0; + gSelectedBallSpeed = 1 - gSelectedBallSpeed; } if (JOY_NEW(A_BUTTON)) { m4aSongNumStart(SE_MENU_SELECT); gBonusFieldSelectTimer = 0; - gUnknown_0202BE1C = 0; - gMain.saveData.ballSpeed = gUnknown_0201A4C0; + gBonusFieldLoadingCounter = 0; + gMain.saveData.ballSpeed = gSelectedBallSpeed; SaveFile_WriteToSram(); gBonusFieldSelectState = BONUS_FIELD_SELECT_STATE_LOAD_FIELD; } if (JOY_NEW(B_BUTTON)) { m4aSongNumStart(SE_MENU_CANCEL); - gUnknown_0201A4B0 = 0; + gBallSpeedSubmenuVisible = 0; gBonusFieldSelectState = BONUS_FIELD_SELECT_STATE_CHOOSE_FIELD; } gBonusFieldSelectTimer++; if (gBonusFieldSelectTimer > 4) { gBonusFieldSelectTimer = 0; - gUnknown_0201A4F4 = 1 - gUnknown_0201A4F4; + gBallSpeedDisplayToggle = 1 - gBallSpeedDisplayToggle; } break; case BONUS_FIELD_SELECT_STATE_LOAD_FIELD: @@ -182,13 +182,13 @@ void BonusFieldSelect_State1_2768(void) if (gBonusFieldSelectTimer > 5) { gBonusFieldSelectTimer = 0; - gUnknown_0202BEE8 = 2 - gUnknown_0202BEE8; - gUnknown_0202BE1C++; - if (gUnknown_0202BE1C > 5) + gBonusFieldHighlightPalette = 2 - gBonusFieldHighlightPalette; + gBonusFieldLoadingCounter++; + if (gBonusFieldLoadingCounter > 5) { - gMain.unkD = 0; - gMain.unk5 = gMain.selectedField = gBonusFieldMenuSelectionToField[gSelectedBonusField]; - gMain.unk6 = 1; + gMain.continueFromSave = 0; + gMain.tempField = gMain.selectedField = gBonusFieldMenuSelectionToField[gSelectedBonusField]; + gMain.isBonusField = 1; gBonusFieldSelectNextMainState = STATE_GAME_MAIN; gMain.subState++; } @@ -199,14 +199,14 @@ void BonusFieldSelect_State1_2768(void) void BonusFieldSelect_State2_2990(void) { - sub_FE04(sub_29C8); + FadeOutToWhite(RenderBonusFieldSelectSprites); m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); gAutoDisplayTitlescreenMenu = TRUE; SetMainGameState(gBonusFieldSelectNextMainState); } -void sub_29C8(void) +void RenderBonusFieldSelectSprites(void) { struct SpriteGroup * sgptrs[6]; struct SpriteGroup * r8; @@ -224,21 +224,21 @@ void sub_29C8(void) sgptrs[i] = &gMain.spriteGroups[i]; } r10 = &gMain.spriteGroups[6 + gSelectedBonusField]; - r8 = &gMain.spriteGroups[12 + gUnknown_0201A4C0 * 2 + gUnknown_0201A4F4]; + r8 = &gMain.spriteGroups[12 + gSelectedBallSpeed * 2 + gBallSpeedDisplayToggle]; for (j = 0; j < 6; j++) { sgptrs[j]->available = TRUE; } sgptrs[gSelectedBonusField]->available = FALSE; r10->available = TRUE; - r8->available = gUnknown_0201A4B0; - LoadSpriteSets(gUnknown_086A4C80, 16, gMain_spriteGroups); + r8->available = gBallSpeedSubmenuVisible; + LoadSpriteSets(gBonusFieldSelectSpriteSets, 16, gMain_spriteGroups); for (i = 0; i < 6; i++) { if (sgptrs[i]->available == 1) { - sgptrs[i]->baseX = gUnknown_086A4CC0[i].x; - sgptrs[i]->baseY = gUnknown_086A4CC0[i].y; + sgptrs[i]->baseX = gBonusFieldStageIconPositions[i].x; + sgptrs[i]->baseY = gBonusFieldStageIconPositions[i].y; for (j = 0; j < 4; j++) { simple = &sgptrs[i]->oam[j]; @@ -254,14 +254,14 @@ void sub_29C8(void) { simple = &r10->oam[j]; gOamBuffer[simple->oamId].objMode = ST_OAM_OBJ_NORMAL; - gOamBuffer[simple->oamId].paletteNum = gUnknown_0202BEE8; + gOamBuffer[simple->oamId].paletteNum = gBonusFieldHighlightPalette; gOamBuffer[simple->oamId].x = simple->xOffset + r10->baseX; gOamBuffer[simple->oamId].y = simple->yOffset + r10->baseY; } if (r8->available == 1) { - r8->baseX = gUnknown_086A4CD8[gSelectedBonusField].x; - r8->baseY = gUnknown_086A4CD8[gSelectedBonusField].y; + r8->baseX = gBonusFieldSpeedIndicatorPositions[gSelectedBonusField].x; + r8->baseY = gBonusFieldSpeedIndicatorPositions[gSelectedBonusField].y; for (j = 0; j < 5; j++) { simple = &r8->oam[j]; diff --git a/src/catch_hatch_picker.c b/src/catch_hatch_picker.c index 7593db2..5d0f80f 100644 --- a/src/catch_hatch_picker.c +++ b/src/catch_hatch_picker.c @@ -155,7 +155,7 @@ void PickSpeciesForCatchEmMode(void) else rand %= 100; - if (gUnknown_02031520.unk8 < 100) + if (gBoardConfig.caughtSpeciesCount < 100) rand = 1; if ((rand == 0 && gCurrentPinballGame->caughtMonCount >= 5) || gCurrentPinballGame->forceSpecialMons) diff --git a/src/collision_checks.c b/src/collision_checks.c index 1a79c3e..4ebf33e 100644 --- a/src/collision_checks.c +++ b/src/collision_checks.c @@ -5,41 +5,41 @@ #include "constants/dusclops_states.h" #include "constants/ruby_states.h" -extern const u16 gUnknown_08254B10[]; -extern const u16 gUnknown_08257390[]; -extern const u16 gUnknown_08259C10[]; +extern const u16 gRubyAltEntity0CollisionMap[]; +extern const u16 gRubyAltEntity1CollisionMap[]; +extern const u16 gWhiscashCollisionMap[]; extern struct SongHeader se_unk_99; -extern u16 gUnknown_086ACE70[]; +extern u16 gSapphireTargetBumperIndexMap[]; -s16 COLLISION_CHECK_RUBY_14E08(struct Vector16 *arg0, u16* arg1) { +s16 CollisionCheck_Ruby(struct Vector16 *arg0, u16* arg1) { struct Vector16 vec1; struct Vector16 vec2; u16 sp00; u8 sp02; u16 return_val; - s16 unk0; - s32 unk1; - s32 unk2; + s16 collisionTileIndex; + s32 tileMapPage; + s32 boardLayer; u32 some_enum; u32 switch_enum; return_val = 0; - gCurrentPinballGame->ball->unk4 = 0; + gCurrentPinballGame->ball->spinAcceleration = 0; vec1.x = arg0->x / 8; vec1.y = arg0->y / 8; vec2.x = arg0->x % 8; vec2.y = arg0->y % 8; - unk1 = vec1.y / 64; - unk2 = gCurrentPinballGame->unk24; + tileMapPage = vec1.y / 64; + boardLayer = gCurrentPinballGame->boardLayerDepth; vec1.y %= 64; - unk0 = gUnknown_02031520.unk14.unk38[unk2 + unk1][vec1.y * 64 + vec1.x]; - 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]; + collisionTileIndex = gBoardConfig.fieldLayout.collisionTileMap[boardLayer + tileMapPage][vec1.y * 64 + vec1.x]; + sp00 = gBoardConfig.fieldLayout.collisionAngleMap[boardLayer + tileMapPage][collisionTileIndex * 64 + vec2.y * 8 + vec2.x]; + sp02 = gBoardConfig.fieldLayout.collisionTypeMap[boardLayer + tileMapPage][collisionTileIndex * 64 + vec2.y * 8 + vec2.x]; CheckRubyPondBumperCollision(arg0, &sp00, &sp02); @@ -50,21 +50,21 @@ s16 COLLISION_CHECK_RUBY_14E08(struct Vector16 *arg0, u16* arg1) { case 0: case 3: case 5: - gCurrentPinballGame->unk23 = (switch_enum - 1); - gCurrentPinballGame->unk22 = 1; + gCurrentPinballGame->collisionSurfaceType = (switch_enum - 1); + gCurrentPinballGame->collisionResponseType = 1; *arg1 = sp00; if (*arg1 >= 0x3FF0 && *arg1 <= 0x4010) { - if (gCurrentPinballGame->ball->positionQ0.x < gUnknown_02031520.unk14.unk26 - 8 || - gCurrentPinballGame->ball->positionQ0.y < gUnknown_02031520.unk14.unk28 - 8) + if (gCurrentPinballGame->ball->positionQ0.x < gBoardConfig.fieldLayout.ballSpawnX - 8 || + gCurrentPinballGame->ball->positionQ0.y < gBoardConfig.fieldLayout.ballSpawnY - 8) { - if (gCurrentPinballGame->ball->unk6 > 0) + if (gCurrentPinballGame->ball->spinSpeed > 0) { *arg1 = 0x3E00; } - else if (gCurrentPinballGame->ball->unk6 != 0) + else if (gCurrentPinballGame->ball->spinSpeed != 0) { *arg1 = 0x4100; } @@ -72,14 +72,14 @@ s16 COLLISION_CHECK_RUBY_14E08(struct Vector16 *arg0, u16* arg1) { { if (gMain.systemFrameCount & 1) { - gCurrentPinballGame->ball->unk4 = 0x28; - gCurrentPinballGame->ball->unk6 = 1; + gCurrentPinballGame->ball->spinAcceleration = 0x28; + gCurrentPinballGame->ball->spinSpeed = 1; *arg1 = 0x3E00; } else { - gCurrentPinballGame->ball->unk4 = 0xFFD8; - gCurrentPinballGame->ball->unk6 = 0xFFFF; + gCurrentPinballGame->ball->spinAcceleration = 0xFFD8; + gCurrentPinballGame->ball->spinSpeed = 0xFFFF; *arg1 = 0x4100; } } @@ -89,19 +89,19 @@ s16 COLLISION_CHECK_RUBY_14E08(struct Vector16 *arg0, u16* arg1) { break; case 1: case 2: - gCurrentPinballGame->unk23 = switch_enum - 1; - gCurrentPinballGame->unk22 = 2; + gCurrentPinballGame->collisionSurfaceType = switch_enum - 1; + gCurrentPinballGame->collisionResponseType = 2; *arg1 = sp00 & 0x0000FFF0; return_val = 1; break; case 4: gCurrentPinballGame->whiscashState = WHISCASH_STATE_ABSORB_ZONE_HIT; - gCurrentPinballGame->unk1F = 1; + gCurrentPinballGame->ballFrozenState = 1; some_enum = 0; break; } - sub_153CC((s32) some_enum, &return_val, arg1); + ProcessRubyCollisionEvent((s32) some_enum, &return_val, arg1); return return_val; } @@ -119,14 +119,14 @@ void CheckRubyPondBumperCollision(struct Vector16* arg0, u16* arg1, u8* arg2) lowerNibble = 0; ix = 0; - if (gCurrentPinballGame->unk5B2 == 0) + if (gCurrentPinballGame->ballInLowerHalf == 0) { - if (gCurrentPinballGame->unk24 != 0) + if (gCurrentPinballGame->boardLayerDepth != 0) return; if (gCurrentPinballGame->shouldProcessWhiscash) { - if (gCurrentPinballGame->unk2A3 == 0) + if (gCurrentPinballGame->whiscashInvulnerable == 0) return; deltaX = arg0->x + gCurrentPinballGame->rubyBumperCollisionPosition[0].x; @@ -138,8 +138,8 @@ void CheckRubyPondBumperCollision(struct Vector16* arg0, u16* arg1, u8* arg2) if (deltaY > 87U) return; - maskedResult = 0xFFF0 & gUnknown_08259C10[(deltaY * 80) + deltaX]; - lowerNibble = 0xF & gUnknown_08259C10[(deltaY * 80) + deltaX]; + maskedResult = 0xFFF0 & gWhiscashCollisionMap[(deltaY * 80) + deltaX]; + lowerNibble = 0xF & gWhiscashCollisionMap[(deltaY * 80) + deltaX]; if (lowerNibble == 0) return; @@ -167,8 +167,8 @@ void CheckRubyPondBumperCollision(struct Vector16* arg0, u16* arg1, u8* arg2) if (deltaX <= 63U && deltaY <= 63U) { - maskedResult = 0xFFF0 & gUnknown_08252B10[(deltaY * 64) + deltaX]; - lowerNibble = 0xF & gUnknown_08252B10[(deltaY * 64) + deltaX]; + maskedResult = 0xFFF0 & gSharedBumperCollisionMap[(deltaY * 64) + deltaX]; + lowerNibble = 0xF & gSharedBumperCollisionMap[(deltaY * 64) + deltaX]; if (lowerNibble != 0) ix = 0; @@ -181,8 +181,8 @@ void CheckRubyPondBumperCollision(struct Vector16* arg0, u16* arg1, u8* arg2) if (deltaX <= 63U && deltaY <= 63U) { - maskedResult = 0xFFF0 & gUnknown_08252B10[(deltaY * 64) + deltaX]; - lowerNibble = 0xF & gUnknown_08252B10[(deltaY * 64) + deltaX]; + maskedResult = 0xFFF0 & gSharedBumperCollisionMap[(deltaY * 64) + deltaX]; + lowerNibble = 0xF & gSharedBumperCollisionMap[(deltaY * 64) + deltaX]; if (lowerNibble != 0) ix = 1; } @@ -194,8 +194,8 @@ void CheckRubyPondBumperCollision(struct Vector16* arg0, u16* arg1, u8* arg2) if (deltaX <= 63U && deltaY <= 63U) { - maskedResult = 0xFFF0 & gUnknown_08252B10[(deltaY * 64) + deltaX]; - lowerNibble = 0xF & gUnknown_08252B10[(deltaY * 64) + deltaX]; + maskedResult = 0xFFF0 & gSharedBumperCollisionMap[(deltaY * 64) + deltaX]; + lowerNibble = 0xF & gSharedBumperCollisionMap[(deltaY * 64) + deltaX]; if (lowerNibble == 0) return; @@ -209,7 +209,7 @@ void CheckRubyPondBumperCollision(struct Vector16* arg0, u16* arg1, u8* arg2) } if (!gCurrentPinballGame->rubyPondContentsChanging) - gCurrentPinballGame->unk170[ix] = 107; + gCurrentPinballGame->pondBumperStates[ix] = 107; *arg1 = maskedResult; *arg2 = lowerNibble; @@ -223,38 +223,38 @@ void CheckRubyPondBumperCollision(struct Vector16* arg0, u16* arg1, u8* arg2) { if ((*arg2 & 0xF) == 0) { - if (gCurrentPinballGame->unk2E5[0] > 0) + if (gCurrentPinballGame->sideBumperAnimPhase[0] > 0) { s16 deltaY_alt; - deltaX = 2 * (-24 -gCurrentPinballGame->unk2EC[0]) + arg0->x; + deltaX = 2 * (-24 -gCurrentPinballGame->sideBumperShakeOffset[0]) + arg0->x; deltaY_alt = arg0->y -580; if (deltaX <= 71U && deltaY_alt <= 71U) { - *arg1 = 0xFFF0 & gUnknown_08254B10[(deltaY_alt * 72) + deltaX]; - *arg2 = 0xF & gUnknown_08254B10[(deltaY_alt * 72) + deltaX]; + *arg1 = 0xFFF0 & gRubyAltEntity0CollisionMap[(deltaY_alt * 72) + deltaX]; + *arg2 = 0xF & gRubyAltEntity0CollisionMap[(deltaY_alt * 72) + deltaX]; if (*arg2 & 1) { - gCurrentPinballGame->unk2E2 = 1; + gCurrentPinballGame->sideBumperHitFlag = 1; *arg2 = 6; } } } - if (gCurrentPinballGame->unk2E5[1] > 0) + if (gCurrentPinballGame->sideBumperAnimPhase[1] > 0) { - deltaX = ((gCurrentPinballGame->unk2EC[1] - 180) * 2) + arg0->x; + deltaX = ((gCurrentPinballGame->sideBumperShakeOffset[1] - 180) * 2) + arg0->x; deltaY = arg0->y -580; if (deltaX <= 71U && deltaY <= 71U) { - *arg1 = 0xFFF0 & gUnknown_08257390[(deltaY * 72) + deltaX]; - *arg2 = 0xF & gUnknown_08257390[(deltaY * 72) + deltaX]; + *arg1 = 0xFFF0 & gRubyAltEntity1CollisionMap[(deltaY * 72) + deltaX]; + *arg2 = 0xF & gRubyAltEntity1CollisionMap[(deltaY * 72) + deltaX]; if (*arg2 & 1) { - gCurrentPinballGame->unk2E2 = 2; + gCurrentPinballGame->sideBumperHitFlag = 2; *arg2 = 6; return; } @@ -264,78 +264,78 @@ void CheckRubyPondBumperCollision(struct Vector16* arg0, u16* arg1, u8* arg2) } } -void sub_153CC(s32 arg0, s16* arg1, u16* arg2) +void ProcessRubyCollisionEvent(s32 arg0, s16* arg1, u16* arg2) { s16 absVelY; switch ((u8)arg0 - 1) { case 0: - if (gCurrentPinballGame->unk26 == 0) + if (gCurrentPinballGame->collisionCooldownTimer == 0) { if (gCurrentPinballGame->ball->positionQ1.x > 359) { if (gCurrentPinballGame->ball->positionQ1.y > 199) - gCurrentPinballGame->unk25 = 1; + gCurrentPinballGame->ballCatchState = 1; else - gCurrentPinballGame->unk25 = 3; + gCurrentPinballGame->ballCatchState = 3; } else - gCurrentPinballGame->unk25= 2; + gCurrentPinballGame->ballCatchState= 2; - sub_1A98C(); - gCurrentPinballGame->unk22 = 7; + DispatchRubyCatchModeInit(); + gCurrentPinballGame->collisionResponseType = 7; *arg1 = 1; return; } default: return; case 1: - if (gCurrentPinballGame->unk24 == 0) + if (gCurrentPinballGame->boardLayerDepth == 0) { gCurrentPinballGame->ball->oamPriority = 2; - gCurrentPinballGame->unk24 = 2; + gCurrentPinballGame->boardLayerDepth = 2; break; } - if (gCurrentPinballGame->unk24 == 2) + if (gCurrentPinballGame->boardLayerDepth == 2) { gCurrentPinballGame->ball->oamPriority = 2; - gCurrentPinballGame->unk24 = 3; + gCurrentPinballGame->boardLayerDepth = 3; } break; case 2: - if (gCurrentPinballGame->unk24 == 2) + if (gCurrentPinballGame->boardLayerDepth == 2) { gCurrentPinballGame->ball->oamPriority = 3; - gCurrentPinballGame->unk24 = 0; + gCurrentPinballGame->boardLayerDepth = 0; } - else if (gCurrentPinballGame->unk24 == 3) + else if (gCurrentPinballGame->boardLayerDepth == 3) { gCurrentPinballGame->ball->oamPriority = 2; - gCurrentPinballGame->unk24 = 2; + gCurrentPinballGame->boardLayerDepth = 2; } - if (gCurrentPinballGame->unk2FB == 6) - gCurrentPinballGame->unk2FB = 7; + if (gCurrentPinballGame->nuzleafAnimState == 6) + gCurrentPinballGame->nuzleafAnimState = 7; - if (gCurrentPinballGame->unk2F0 & 0xF0 ) - gCurrentPinballGame->unk2F0 = 0; + if (gCurrentPinballGame->shopDoorTargetFrame & 0xF0 ) + gCurrentPinballGame->shopDoorTargetFrame = 0; - if (gCurrentPinballGame->unk1AB & 0xF0) - gCurrentPinballGame->unk1AB = 0; + if (gCurrentPinballGame->shopDoorOpenLevel & 0xF0) + gCurrentPinballGame->shopDoorOpenLevel = 0; break; case 3: - if (gCurrentPinballGame->unk600 == 0) + if (gCurrentPinballGame->mainBoardCountdownTimer == 0) { if (gCurrentPinballGame->ball->positionQ0.x > 131) { gCurrentPinballGame->scoreAddedInFrame = 1000; - if (gCurrentPinballGame->unk70E <= 98) - gCurrentPinballGame->unk70E++; + if (gCurrentPinballGame->progressLevel <= 98) + gCurrentPinballGame->progressLevel++; } else if (gCurrentPinballGame->ball->positionQ0.x > 91) { @@ -347,117 +347,117 @@ void sub_153CC(s32 arg0, s16* arg1, u16* arg2) { gCurrentPinballGame->scoreAddedInFrame = 1000; - if (gCurrentPinballGame->unk2B2 == 0) + if (gCurrentPinballGame->chikoritaFlashActive == 0) { - gCurrentPinballGame->unk2B2 = 1; - gCurrentPinballGame->unk2B0 = 0; + gCurrentPinballGame->chikoritaFlashActive = 1; + gCurrentPinballGame->chikoritaFlashTimer = 0; } } - gCurrentPinballGame->unk600 = 45; + gCurrentPinballGame->mainBoardCountdownTimer = 45; m4aSongNumStart(SE_TRIGGER_BUTTON_HIT); } break; case 4: - gCurrentPinballGame->unk20 = 1; - gCurrentPinballGame->unk165 = 1; - gCurrentPinballGame->unk732 = 0; + gCurrentPinballGame->ballInLaunchChute = 1; + gCurrentPinballGame->sapphireEntityCollisionFlag = 1; + gCurrentPinballGame->ballCollisionZone = 0; return; case 5: - if (gCurrentPinballGame->unk5B2 == 0) + if (gCurrentPinballGame->ballInLowerHalf == 0) { - sub_46FD4(1); - gCurrentPinballGame->unk29E = 1; + SetBoardCollisionConfig(1); + gCurrentPinballGame->boardCollisionConfigChanged = 1; } break; case 6: if (gCurrentPinballGame->ball->positionQ0.x < 50) { - if (gCurrentPinballGame->unk2FA == 0) + if (gCurrentPinballGame->nuzleafHitFlag == 0) { - gCurrentPinballGame->unk2FA = 1; - gCurrentPinballGame->unk2FB = 1; - gCurrentPinballGame->unk23 = 0; - gCurrentPinballGame->unk22 = 2; + gCurrentPinballGame->nuzleafHitFlag = 1; + gCurrentPinballGame->nuzleafAnimState = 1; + gCurrentPinballGame->collisionSurfaceType = 0; + gCurrentPinballGame->collisionResponseType = 2; *arg2 = 0xB000; *arg1 = 1; } } - else if (gCurrentPinballGame->unk2FA == 1) + else if (gCurrentPinballGame->nuzleafHitFlag == 1) { - gCurrentPinballGame->unk2FA = 2; - gCurrentPinballGame->unk2FB = 3; - gCurrentPinballGame->unk23 = 0; - gCurrentPinballGame->unk22 = 2; + gCurrentPinballGame->nuzleafHitFlag = 2; + gCurrentPinballGame->nuzleafAnimState = 3; + gCurrentPinballGame->collisionSurfaceType = 0; + gCurrentPinballGame->collisionResponseType = 2; *arg2 = 0xA000; *arg1 = 1; gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; - memcpy(&gCurrentPinballGame->unk1334[1], gCurrentPinballGame->unk1334, 0x44U); + memcpy(&gCurrentPinballGame->ballStates[1], gCurrentPinballGame->ballStates, 0x44U); - gCurrentPinballGame->unk1330 = &gCurrentPinballGame->unk1334[1]; - gCurrentPinballGame->unk1328 = 120; + gCurrentPinballGame->secondaryBall = &gCurrentPinballGame->ballStates[1]; + gCurrentPinballGame->ballLaunchTimer = 120; } - gCurrentPinballGame->unk732 = 14; + gCurrentPinballGame->ballCollisionZone = 14; return; case 7: if (gCurrentPinballGame->ball->positionQ0.x <= 50) { - if (gCurrentPinballGame->unk732 == 8) + if (gCurrentPinballGame->ballCollisionZone == 8) { - if (gCurrentPinballGame->unk13 <= 2 && gCurrentPinballGame->unk72E <= 2) + if (gCurrentPinballGame->boardState <= 2 && gCurrentPinballGame->evoArrowProgress <= 2) { - if (gCurrentPinballGame->unk72E == 0) + if (gCurrentPinballGame->evoArrowProgress == 0) gCurrentPinballGame->scoreAddedInFrame = 2000; - else if (gCurrentPinballGame->unk72E == 1) + else if (gCurrentPinballGame->evoArrowProgress == 1) gCurrentPinballGame->scoreAddedInFrame = 5000; else gCurrentPinballGame->scoreAddedInFrame = 10000; - gCurrentPinballGame->unk72E++; + gCurrentPinballGame->evoArrowProgress++; m4aSongNumStart(SE_UNKNOWN_0x99); } - gCurrentPinballGame->unk6BC = 1; + gCurrentPinballGame->travelRouletteSlotHitType = 1; } - gCurrentPinballGame->unk732 = 2; + gCurrentPinballGame->ballCollisionZone = 2; return; } if (gCurrentPinballGame->ball->positionQ0.x <= 100) { - if (gCurrentPinballGame->unk732 == 7) + if (gCurrentPinballGame->ballCollisionZone == 7) { - gCurrentPinballGame->unk194 = 10; + gCurrentPinballGame->coinRewardAmount = 10; - if(gCurrentPinballGame->unk72B <= 2) + if(gCurrentPinballGame->coinRewardLevel <= 2) { - if(gCurrentPinballGame->unk72B == 0) + if(gCurrentPinballGame->coinRewardLevel == 0) { gCurrentPinballGame->scoreAddedInFrame = 2000; - gCurrentPinballGame->unk194 = 1; + gCurrentPinballGame->coinRewardAmount = 1; } - else if(gCurrentPinballGame->unk72B == 1) + else if(gCurrentPinballGame->coinRewardLevel == 1) { gCurrentPinballGame->scoreAddedInFrame = 5000; - gCurrentPinballGame->unk194 = 5; + gCurrentPinballGame->coinRewardAmount = 5; } else { gCurrentPinballGame->scoreAddedInFrame = 10000; - gCurrentPinballGame->unk194 = 10; + gCurrentPinballGame->coinRewardAmount = 10; } - gCurrentPinballGame->unk72B++; + gCurrentPinballGame->coinRewardLevel++; } - gCurrentPinballGame->unk196 = 0; - gCurrentPinballGame->unk72C = 0; + gCurrentPinballGame->coinRewardTimer = 0; + gCurrentPinballGame->coinRewardLevelTimer = 0; } - gCurrentPinballGame->unk732 = 1; + gCurrentPinballGame->ballCollisionZone = 1; return; } @@ -467,16 +467,16 @@ void sub_153CC(s32 arg0, s16* arg1, u16* arg2) gCurrentPinballGame->scoreAddedInFrame = 1000; gCurrentPinballGame->ballPowerUpLight[0] = 1; - gCurrentPinballGame->unk732 = 3; + gCurrentPinballGame->ballCollisionZone = 3; - if (gCurrentPinballGame->unk71B == 0) + if (gCurrentPinballGame->ballPowerUpAnimActive == 0) { if (!(gCurrentPinballGame->ballPowerUpLight[1] & gCurrentPinballGame->ballPowerUpLight[2])) return; - gCurrentPinballGame->unk71B = 1; - gCurrentPinballGame->unk71C = 60; + gCurrentPinballGame->ballPowerUpAnimActive = 1; + gCurrentPinballGame->ballShadowTimer = 60; gCurrentPinballGame->scoreAddedInFrame = 4000; return; } @@ -489,17 +489,17 @@ void sub_153CC(s32 arg0, s16* arg1, u16* arg2) gCurrentPinballGame->scoreAddedInFrame = 1000; gCurrentPinballGame->ballPowerUpLight[1] = 1; - gCurrentPinballGame->unk732 = 4; + gCurrentPinballGame->ballCollisionZone = 4; - if (gCurrentPinballGame->unk71B != 0) + if (gCurrentPinballGame->ballPowerUpAnimActive != 0) return; if (!(gCurrentPinballGame->ballPowerUpLight[0] & gCurrentPinballGame->ballPowerUpLight[2])) return; - gCurrentPinballGame->unk71B = 1; - gCurrentPinballGame->unk71C = 60; + gCurrentPinballGame->ballPowerUpAnimActive = 1; + gCurrentPinballGame->ballShadowTimer = 60; gCurrentPinballGame->scoreAddedInFrame = 4000; return; } @@ -510,66 +510,66 @@ void sub_153CC(s32 arg0, s16* arg1, u16* arg2) gCurrentPinballGame->scoreAddedInFrame = 1000; gCurrentPinballGame->ballPowerUpLight[2] = 1; - gCurrentPinballGame->unk732 = 5; + gCurrentPinballGame->ballCollisionZone = 5; - if (gCurrentPinballGame->unk71B != 0) + if (gCurrentPinballGame->ballPowerUpAnimActive != 0) return; if (!(gCurrentPinballGame->ballPowerUpLight[0] & gCurrentPinballGame->ballPowerUpLight[1])) return; - gCurrentPinballGame->unk71B = 1; - gCurrentPinballGame->unk71C = 60; + gCurrentPinballGame->ballPowerUpAnimActive = 1; + gCurrentPinballGame->ballShadowTimer = 60; gCurrentPinballGame->scoreAddedInFrame = 4000; return; } - if (gCurrentPinballGame->unk732 == 9) + if (gCurrentPinballGame->ballCollisionZone == 9) { - if (gCurrentPinballGame->unk13 <= 2 && gCurrentPinballGame->unk72F <= 2) + if (gCurrentPinballGame->boardState <= 2 && gCurrentPinballGame->catchArrowProgress <= 2) { - if (gCurrentPinballGame->unk72F == 0) + if (gCurrentPinballGame->catchArrowProgress == 0) gCurrentPinballGame->scoreAddedInFrame = 2000; - else if (gCurrentPinballGame->unk72F == 1) + else if (gCurrentPinballGame->catchArrowProgress == 1) gCurrentPinballGame->scoreAddedInFrame = 5000; else gCurrentPinballGame->scoreAddedInFrame = 10000; - gCurrentPinballGame->unk72F++; + gCurrentPinballGame->catchArrowProgress++; MPlayStart(&gMPlayInfo_SE1, &se_unk_99); - if (gCurrentPinballGame->unk72F > 1) - gCurrentPinballGame->unk731 = 1; + if (gCurrentPinballGame->catchArrowProgress > 1) + gCurrentPinballGame->catchProgressFlashing = 1; } - gCurrentPinballGame->unk6BC = 2; + gCurrentPinballGame->travelRouletteSlotHitType = 2; } - gCurrentPinballGame->unk732 = 6; + gCurrentPinballGame->ballCollisionZone = 6; return; } break; case 8: if (gCurrentPinballGame->ball->positionQ0.x <= 50) { - gCurrentPinballGame->unk732 = 8; + gCurrentPinballGame->ballCollisionZone = 8; return; } if (gCurrentPinballGame->ball->positionQ0.x <= 100) { - gCurrentPinballGame->unk732 = 7; + gCurrentPinballGame->ballCollisionZone = 7; return; } - gCurrentPinballGame->unk732 = 9; + gCurrentPinballGame->ballCollisionZone = 9; return; case 9: if (gCurrentPinballGame->ball->positionQ0.x <= 46) { - gCurrentPinballGame->unk732 = 10; + gCurrentPinballGame->ballCollisionZone = 10; if (gCurrentPinballGame->holeIndicators[0] != 0) return; @@ -577,7 +577,7 @@ void sub_153CC(s32 arg0, s16* arg1, u16* arg2) gCurrentPinballGame->scoreAddedInFrame = 1000; gCurrentPinballGame->holeIndicators[0] = 1; - if (gCurrentPinballGame->unk714 != 0) + if (gCurrentPinballGame->allHolesLit != 0) return; if (!(gCurrentPinballGame->holeIndicators[1] & @@ -585,15 +585,15 @@ void sub_153CC(s32 arg0, s16* arg1, u16* arg2) gCurrentPinballGame->holeIndicators[3])) return; - gCurrentPinballGame->unk714 = 1; - gCurrentPinballGame->unk715 = 126; + gCurrentPinballGame->allHolesLit = 1; + gCurrentPinballGame->allHolesLitBlinkTimer = 126; gCurrentPinballGame->scoreAddedInFrame = 4000; return; } if (gCurrentPinballGame->ball->positionQ0.x <= 120) { - gCurrentPinballGame->unk732 = 11; + gCurrentPinballGame->ballCollisionZone = 11; if (gCurrentPinballGame->holeIndicators[1] != 0) return; @@ -601,7 +601,7 @@ void sub_153CC(s32 arg0, s16* arg1, u16* arg2) gCurrentPinballGame->scoreAddedInFrame = 1000; gCurrentPinballGame->holeIndicators[1] = 1; - if (gCurrentPinballGame->unk714 != 0) + if (gCurrentPinballGame->allHolesLit != 0) return; if (!(gCurrentPinballGame->holeIndicators[0] & @@ -609,15 +609,15 @@ void sub_153CC(s32 arg0, s16* arg1, u16* arg2) gCurrentPinballGame->holeIndicators[3])) return; - gCurrentPinballGame->unk714 = 1; - gCurrentPinballGame->unk715 = 126; + gCurrentPinballGame->allHolesLit = 1; + gCurrentPinballGame->allHolesLitBlinkTimer = 126; gCurrentPinballGame->scoreAddedInFrame = 4000; return; } if (gCurrentPinballGame->ball->positionQ0.x <= 193) { - gCurrentPinballGame->unk732 = 12; + gCurrentPinballGame->ballCollisionZone = 12; if (gCurrentPinballGame->holeIndicators[2] != 0) return; @@ -625,7 +625,7 @@ void sub_153CC(s32 arg0, s16* arg1, u16* arg2) gCurrentPinballGame->scoreAddedInFrame = 1000; gCurrentPinballGame->holeIndicators[2] = 1; - if (gCurrentPinballGame->unk714 != 0) + if (gCurrentPinballGame->allHolesLit != 0) return; if (!(gCurrentPinballGame->holeIndicators[0] & @@ -633,13 +633,13 @@ void sub_153CC(s32 arg0, s16* arg1, u16* arg2) gCurrentPinballGame->holeIndicators[3])) return; - gCurrentPinballGame->unk714 = 1; - gCurrentPinballGame->unk715 = 126; + gCurrentPinballGame->allHolesLit = 1; + gCurrentPinballGame->allHolesLitBlinkTimer = 126; gCurrentPinballGame->scoreAddedInFrame = 4000; return; } - gCurrentPinballGame->unk732 = 13; + gCurrentPinballGame->ballCollisionZone = 13; if (gCurrentPinballGame->holeIndicators[3] != 0) return; @@ -647,7 +647,7 @@ void sub_153CC(s32 arg0, s16* arg1, u16* arg2) gCurrentPinballGame->scoreAddedInFrame = 1000; gCurrentPinballGame->holeIndicators[3] = 1; - if (gCurrentPinballGame->unk714 != 0) + if (gCurrentPinballGame->allHolesLit != 0) return; if (!(gCurrentPinballGame->holeIndicators[0] & @@ -655,115 +655,115 @@ void sub_153CC(s32 arg0, s16* arg1, u16* arg2) gCurrentPinballGame->holeIndicators[2])) return; - gCurrentPinballGame->unk714 = 1; - gCurrentPinballGame->unk715 = 126; + gCurrentPinballGame->allHolesLit = 1; + gCurrentPinballGame->allHolesLitBlinkTimer = 126; gCurrentPinballGame->scoreAddedInFrame = 4000; return; case 10: - if (gCurrentPinballGame->unk5B2 == 0) + if (gCurrentPinballGame->ballInLowerHalf == 0) { if (gCurrentPinballGame->ball->positionQ0.x > 170) { - if (gCurrentPinballGame->unk2F0 > 2U) + if (gCurrentPinballGame->shopDoorTargetFrame > 2U) return; - gCurrentPinballGame->unk23 = 0; - gCurrentPinballGame->unk22 = 2; + gCurrentPinballGame->collisionSurfaceType = 0; + gCurrentPinballGame->collisionResponseType = 2; *arg2 = 0xB000; *arg1 = 1; - if (gCurrentPinballGame->unk13 <= 2 && gCurrentPinballGame->unk1AB <= 2) + if (gCurrentPinballGame->boardState <= 2 && gCurrentPinballGame->shopDoorOpenLevel <= 2) { - gCurrentPinballGame->unk1AB = 3; - gCurrentPinballGame->unk2F2 = 5; + gCurrentPinballGame->shopDoorOpenLevel = 3; + gCurrentPinballGame->shopDoorAnimDelay = 5; } gCurrentPinballGame->scoreAddedInFrame = 50000; return; } - if (gCurrentPinballGame->unk2FB <= 4) + if (gCurrentPinballGame->nuzleafAnimState <= 4) { - gCurrentPinballGame->unk23 = 0; - gCurrentPinballGame->unk22 = 2; + gCurrentPinballGame->collisionSurfaceType = 0; + gCurrentPinballGame->collisionResponseType = 2; *arg2 = 0xF800; *arg1 = 1; } - if (gCurrentPinballGame->unk2FB == 5) - gCurrentPinballGame->unk2FB = 6; + if (gCurrentPinballGame->nuzleafAnimState == 5) + gCurrentPinballGame->nuzleafAnimState = 6; - if (gCurrentPinballGame->unk29F == 0) + if (gCurrentPinballGame->rampPrizeType == 0) return; - if (gCurrentPinballGame->unk29F == 1) - gCurrentPinballGame->unk286 = 90; + if (gCurrentPinballGame->rampPrizeType == 1) + gCurrentPinballGame->oneUpAnimTimer = 90; else { - gCurrentPinballGame->unk2F8 = 1; - gCurrentPinballGame->unk71B = 1; - gCurrentPinballGame->unk71C = 60; + gCurrentPinballGame->ballPowerUpOverride = 1; + gCurrentPinballGame->ballPowerUpAnimActive = 1; + gCurrentPinballGame->ballShadowTimer = 60; m4aSongNumStart(SE_UNKNOWN_0xD8); } - gCurrentPinballGame->unk29F = 0; - gCurrentPinballGame->unk2A0 = 600; + gCurrentPinballGame->rampPrizeType = 0; + gCurrentPinballGame->rampPrizeRespawnTimer = 600; return; } - if (gCurrentPinballGame->unk1C4 != 0) + if (gCurrentPinballGame->pikaKickbackTimer != 0) return; if (gCurrentPinballGame->ball->positionQ0.x <= 120) - gCurrentPinballGame->unk1C2 = 1; + gCurrentPinballGame->outLaneSide = 1; else - gCurrentPinballGame->unk1C2 = 2; + gCurrentPinballGame->outLaneSide = 2; if (gCurrentPinballGame->outLanePikaPosition <= 1) { - if (gCurrentPinballGame->outLanePikaPosition != gCurrentPinballGame->unk1C2 - 1) + if (gCurrentPinballGame->outLanePikaPosition != gCurrentPinballGame->outLaneSide - 1) return; else - gCurrentPinballGame->unk1C4 = 120; + gCurrentPinballGame->pikaKickbackTimer = 120; return; } - gCurrentPinballGame->unk1C4 = 120; + gCurrentPinballGame->pikaKickbackTimer = 120; return; case 11: - if (gCurrentPinballGame->unk616 != 0) + if (gCurrentPinballGame->pikaSpinCooldownTimer != 0) return; absVelY = gCurrentPinballGame->ball->velocity.y; - gCurrentPinballGame->unk614 = gCurrentPinballGame->ball->velocity.y; + gCurrentPinballGame->pikaSpinMomentum = gCurrentPinballGame->ball->velocity.y; if (absVelY < 0) { absVelY = -absVelY; } - gCurrentPinballGame->unk1C6 += (absVelY) / 3; + gCurrentPinballGame->pikaChargeTarget += (absVelY) / 3; - if (gCurrentPinballGame->unk1C6 > 168) - gCurrentPinballGame->unk1C6 = 168; + if (gCurrentPinballGame->pikaChargeTarget > 168) + gCurrentPinballGame->pikaChargeTarget = 168; - gCurrentPinballGame->unk616 = 20; + gCurrentPinballGame->pikaSpinCooldownTimer = 20; return; case 12: - if (gCurrentPinballGame->unk2D8 == 0) + if (gCurrentPinballGame->cyndaquilCollisionEnabled == 0) return; - if (gCurrentPinballGame->unk26 != 0) + if (gCurrentPinballGame->collisionCooldownTimer != 0) return; - if (gCurrentPinballGame->unk2DA != 0) + if (gCurrentPinballGame->eggCaveState != 0) return; - gCurrentPinballGame->unk2DA++; + gCurrentPinballGame->eggCaveState++; - gCurrentPinballGame->unk2D8 = 0; - gCurrentPinballGame->unk23 = 0; - gCurrentPinballGame->unk22 = 2; + gCurrentPinballGame->cyndaquilCollisionEnabled = 0; + gCurrentPinballGame->collisionSurfaceType = 0; + gCurrentPinballGame->collisionResponseType = 2; *arg2 = 0xD000; *arg1 = 1; @@ -772,19 +772,19 @@ void sub_153CC(s32 arg0, s16* arg1, u16* arg2) PlayRumble(7); return; case 13: - if (gCurrentPinballGame->unk2D8 == 0) + if (gCurrentPinballGame->cyndaquilCollisionEnabled == 0) return; - if (gCurrentPinballGame->unk26 != 0) + if (gCurrentPinballGame->collisionCooldownTimer != 0) return; - if (gCurrentPinballGame->unk2DA != 1) + if (gCurrentPinballGame->eggCaveState != 1) return; - gCurrentPinballGame->unk2DA++; - gCurrentPinballGame->unk2D8 = 0; - gCurrentPinballGame->unk23 = 0; - gCurrentPinballGame->unk22 = 2; + gCurrentPinballGame->eggCaveState++; + gCurrentPinballGame->cyndaquilCollisionEnabled = 0; + gCurrentPinballGame->collisionSurfaceType = 0; + gCurrentPinballGame->collisionResponseType = 2; *arg2 = 0xCC00; *arg1 = 1; @@ -793,43 +793,43 @@ void sub_153CC(s32 arg0, s16* arg1, u16* arg2) PlayRumble(7); return; case 14: - if ((gCurrentPinballGame->unk13 > 2) && (gCurrentPinballGame->unk13 != 5)) + if ((gCurrentPinballGame->boardState > 2) && (gCurrentPinballGame->boardState != 5)) { - if (gCurrentPinballGame->unk2E0 == 0) + if (gCurrentPinballGame->eggCaveExitDelayTimer == 0) { - if (gCurrentPinballGame->unk2DA == 2) + if (gCurrentPinballGame->eggCaveState == 2) { - gCurrentPinballGame->unk23 = 0; - gCurrentPinballGame->unk22 = 2; + gCurrentPinballGame->collisionSurfaceType = 0; + gCurrentPinballGame->collisionResponseType = 2; *arg2 = 0xC800; *arg1 = 1; - gCurrentPinballGame->unk2DA++; + gCurrentPinballGame->eggCaveState++; m4aSongNumStart(SE_UNKNOWN_0xB7); gCurrentPinballGame->scoreAddedInFrame = 5000; PlayRumble(7); return; } - else if (gCurrentPinballGame->unk2DA == 3) + else if (gCurrentPinballGame->eggCaveState == 3) { - gCurrentPinballGame->unk23 = 0; - gCurrentPinballGame->unk22 = 2; + gCurrentPinballGame->collisionSurfaceType = 0; + gCurrentPinballGame->collisionResponseType = 2; *arg2 = 0xC800; *arg1 = 1; m4aSongNumStart(SE_UNKNOWN_0xB7); - gCurrentPinballGame->unk2D9 = 1; + gCurrentPinballGame->eggCaveReEntryFlag = 1; PlayRumble(7); return; } } } - else if (gCurrentPinballGame->unk2D8 != 0 && gCurrentPinballGame->unk2DA == 2) + else if (gCurrentPinballGame->cyndaquilCollisionEnabled != 0 && gCurrentPinballGame->eggCaveState == 2) { - gCurrentPinballGame->unk2DA++; - gCurrentPinballGame->unk2D8 = 0; - gCurrentPinballGame->unk23 = 0; - gCurrentPinballGame->unk22 = 2; + gCurrentPinballGame->eggCaveState++; + gCurrentPinballGame->cyndaquilCollisionEnabled = 0; + gCurrentPinballGame->collisionSurfaceType = 0; + gCurrentPinballGame->collisionResponseType = 2; *arg2 = 0xC800; *arg1 = 1; @@ -843,35 +843,35 @@ void sub_153CC(s32 arg0, s16* arg1, u16* arg2) } -s16 COLLISION_CHECK_SAPPHIRE_16090(struct Vector16 *arg0, u16* arg1) { +s16 CollisionCheck_Sapphire(struct Vector16 *arg0, u16* arg1) { struct Vector16 vec1; struct Vector16 vec2; u16 sp00; u8 sp02; u16 return_val; - s16 unk0; - s32 unk1; - s32 unk2; + s16 collisionTileIndex; + s32 tileMapPage; + s32 boardLayer; u32 some_enum; u8 switch_enum; return_val = 0; - gCurrentPinballGame->ball->unk4 = 0; + gCurrentPinballGame->ball->spinAcceleration = 0; vec1.x = arg0->x / 8; vec1.y = arg0->y / 8; vec2.x = arg0->x % 8; vec2.y = arg0->y % 8; - unk1 = vec1.y / 64; - unk2 = gCurrentPinballGame->unk24; + tileMapPage = vec1.y / 64; + boardLayer = gCurrentPinballGame->boardLayerDepth; vec1.y %= 64; - unk0 = gUnknown_02031520.unk14.unk38[unk2 + unk1][vec1.y * 64 + vec1.x]; - 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]; + collisionTileIndex = gBoardConfig.fieldLayout.collisionTileMap[boardLayer + tileMapPage][vec1.y * 64 + vec1.x]; + sp00 = gBoardConfig.fieldLayout.collisionAngleMap[boardLayer + tileMapPage][collisionTileIndex * 64 + vec2.y * 8 + vec2.x]; + sp02 = gBoardConfig.fieldLayout.collisionTypeMap[boardLayer + tileMapPage][collisionTileIndex * 64 + vec2.y * 8 + vec2.x]; - sub_162B8(arg0, &sp00, &sp02); + CheckSapphireBumperCollision(arg0, &sp00, &sp02); switch_enum = sp02 & 0xF; some_enum = sp02 >> 4; @@ -880,20 +880,20 @@ s16 COLLISION_CHECK_SAPPHIRE_16090(struct Vector16 *arg0, u16* arg1) { { case 1: case 4: - gCurrentPinballGame->unk23 = switch_enum - 1; - gCurrentPinballGame->unk22 = 1; + gCurrentPinballGame->collisionSurfaceType = switch_enum - 1; + gCurrentPinballGame->collisionResponseType = 1; *arg1 = sp00; if (*arg1 >= 0x3FF0 && *arg1 <= 0x4010) { - if (gCurrentPinballGame->ball->positionQ0.x < gUnknown_02031520.unk14.unk26 - 8 || - gCurrentPinballGame->ball->positionQ0.y < gUnknown_02031520.unk14.unk28 - 8) + if (gCurrentPinballGame->ball->positionQ0.x < gBoardConfig.fieldLayout.ballSpawnX - 8 || + gCurrentPinballGame->ball->positionQ0.y < gBoardConfig.fieldLayout.ballSpawnY - 8) { - if (gCurrentPinballGame->ball->unk6 > 0) + if (gCurrentPinballGame->ball->spinSpeed > 0) { *arg1 = 0x3E00; } - else if (gCurrentPinballGame->ball->unk6 != 0) + else if (gCurrentPinballGame->ball->spinSpeed != 0) { *arg1 = 0x4100; } @@ -901,14 +901,14 @@ s16 COLLISION_CHECK_SAPPHIRE_16090(struct Vector16 *arg0, u16* arg1) { { if (gMain.systemFrameCount & 1) { - gCurrentPinballGame->ball->unk4 = 0x28; - gCurrentPinballGame->ball->unk6 = 1; + gCurrentPinballGame->ball->spinAcceleration = 0x28; + gCurrentPinballGame->ball->spinSpeed = 1; *arg1 = 0x3E00; } else { - gCurrentPinballGame->ball->unk4 = 0xFFD8; - gCurrentPinballGame->ball->unk6 = 0xFFFF; + gCurrentPinballGame->ball->spinAcceleration = 0xFFD8; + gCurrentPinballGame->ball->spinSpeed = 0xFFFF; *arg1 = 0x4100; } } @@ -919,18 +919,18 @@ s16 COLLISION_CHECK_SAPPHIRE_16090(struct Vector16 *arg0, u16* arg1) { break; case 3: case 2: - gCurrentPinballGame->unk23 = switch_enum - 1; - gCurrentPinballGame->unk22 = 2; + gCurrentPinballGame->collisionSurfaceType = switch_enum - 1; + gCurrentPinballGame->collisionResponseType = 2; *arg1 = sp00 & 0x0000FFF0; return_val = 1; break; } - sub_1642C((s32) some_enum, &return_val, arg1); + ProcessSapphireCollisionEvent((s32) some_enum, &return_val, arg1); return return_val; } -void sub_162B8(struct Vector16 *arg0, s16 *arg1, u8 *arg2) { +void CheckSapphireBumperCollision(struct Vector16 *arg0, s16 *arg1, u8 *arg2) { s16 deltaX; s16 deltaY; @@ -938,9 +938,9 @@ void sub_162B8(struct Vector16 *arg0, s16 *arg1, u8 *arg2) { u8 lowerNibble = 0; s32 ix = 0; - if (gCurrentPinballGame->unk5B2 == 0) + if (gCurrentPinballGame->ballInLowerHalf == 0) { - if (gCurrentPinballGame->unk24 != 0) + if (gCurrentPinballGame->boardLayerDepth != 0) return; deltaX = arg0->x + gCurrentPinballGame->rubyBumperCollisionPosition[0].x; @@ -948,8 +948,8 @@ void sub_162B8(struct Vector16 *arg0, s16 *arg1, u8 *arg2) { if (deltaX <= 63U && deltaY <= 63U) { - maskedResult = 0xFFF0 & gUnknown_08252B10[(deltaY * 64) + deltaX]; - lowerNibble = 0xF & gUnknown_08252B10[(deltaY * 64) + deltaX]; + maskedResult = 0xFFF0 & gSharedBumperCollisionMap[(deltaY * 64) + deltaX]; + lowerNibble = 0xF & gSharedBumperCollisionMap[(deltaY * 64) + deltaX]; ix = 0; } if (lowerNibble == 0) @@ -959,8 +959,8 @@ void sub_162B8(struct Vector16 *arg0, s16 *arg1, u8 *arg2) { if (deltaX <= 63U && deltaY <= 63U) { - maskedResult = 0xFFF0 & gUnknown_08252B10[(deltaY * 64) + deltaX]; - lowerNibble = 0xF & gUnknown_08252B10[(deltaY * 64) + deltaX]; + maskedResult = 0xFFF0 & gSharedBumperCollisionMap[(deltaY * 64) + deltaX]; + lowerNibble = 0xF & gSharedBumperCollisionMap[(deltaY * 64) + deltaX]; ix = 1; } @@ -971,8 +971,8 @@ void sub_162B8(struct Vector16 *arg0, s16 *arg1, u8 *arg2) { if (deltaX <= 63U && deltaY <= 63U) { - maskedResult = 0xFFF0 & gUnknown_08252B10[(deltaY * 64) + deltaX]; - lowerNibble = 0xF & gUnknown_08252B10[(deltaY * 64) + deltaX]; + maskedResult = 0xFFF0 & gSharedBumperCollisionMap[(deltaY * 64) + deltaX]; + lowerNibble = 0xF & gSharedBumperCollisionMap[(deltaY * 64) + deltaX]; ix = 2; } @@ -980,7 +980,7 @@ void sub_162B8(struct Vector16 *arg0, s16 *arg1, u8 *arg2) { return; } } - gCurrentPinballGame->unk170[ix] = 6; + gCurrentPinballGame->pondBumperStates[ix] = 6; *arg1 = maskedResult; *arg2 = lowerNibble; @@ -991,7 +991,7 @@ void sub_162B8(struct Vector16 *arg0, s16 *arg1, u8 *arg2) { } -void sub_1642C(u8 arg0, u16* arg1, u16* arg2) +void ProcessSapphireCollisionEvent(u8 arg0, u16* arg1, u16* arg2) { s16 absVelY; s16 x0Position; @@ -1003,103 +1003,103 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) switch (arg0) { case 1: - if (gCurrentPinballGame->unk26 == 0) + if (gCurrentPinballGame->collisionCooldownTimer == 0) { if (gCurrentPinballGame->ball->positionQ1.x >= 200) - gCurrentPinballGame->unk25 = 1; + gCurrentPinballGame->ballCatchState = 1; else - gCurrentPinballGame->unk25 = 3; + gCurrentPinballGame->ballCatchState = 3; - sub_32914(); - gCurrentPinballGame->unk22 = 7; + DispatchSapphireCatchModeInit(); + gCurrentPinballGame->collisionResponseType = 7; *arg1 = 1; } break; case 2: - if (gCurrentPinballGame->unk24 == 0) + if (gCurrentPinballGame->boardLayerDepth == 0) { gCurrentPinballGame->ball->oamPriority = 2; - gCurrentPinballGame->unk24 = 2; + gCurrentPinballGame->boardLayerDepth = 2; } - else if (gCurrentPinballGame->unk24 == 2) + else if (gCurrentPinballGame->boardLayerDepth == 2) { gCurrentPinballGame->ball->oamPriority = 2; - gCurrentPinballGame->unk24 = 3; + gCurrentPinballGame->boardLayerDepth = 3; } - else if (gCurrentPinballGame->unk24 == 3) + else if (gCurrentPinballGame->boardLayerDepth == 3) { gCurrentPinballGame->ball->oamPriority = 1; } break; case 3: - if (gCurrentPinballGame->unk24 == 2) + if (gCurrentPinballGame->boardLayerDepth == 2) { gCurrentPinballGame->ball->oamPriority = 3; - gCurrentPinballGame->unk24 = 0; + gCurrentPinballGame->boardLayerDepth = 0; } - else if (gCurrentPinballGame->unk24 == 3) + else if (gCurrentPinballGame->boardLayerDepth == 3) { gCurrentPinballGame->ball->oamPriority = 2; - gCurrentPinballGame->unk24 = 2; + gCurrentPinballGame->boardLayerDepth = 2; } break; case 4: - if (gCurrentPinballGame->unk600 == 0) + if (gCurrentPinballGame->mainBoardCountdownTimer == 0) { if (gCurrentPinballGame->ball->positionQ0.y < 260) { if (gCurrentPinballGame->ball->positionQ0.x < 74) { - if (gCurrentPinballGame->unk13 < 3 && gCurrentPinballGame->unk36A[1] < 3) + if (gCurrentPinballGame->boardState < 3 && gCurrentPinballGame->sapphireBumperState[1] < 3) { - if (gCurrentPinballGame->unk36A[1] == 1) - gCurrentPinballGame->unk36C[1] = 6; + if (gCurrentPinballGame->sapphireBumperState[1] == 1) + gCurrentPinballGame->sapphireBumperAnimKeyframe[1] = 6; else - gCurrentPinballGame->unk36C[1] = 4; + gCurrentPinballGame->sapphireBumperAnimKeyframe[1] = 4; - gCurrentPinballGame->unk36E[1] = 0; - gCurrentPinballGame->unk36A[1] = 1; + gCurrentPinballGame->sapphireBumperAnimSubTimer[1] = 0; + gCurrentPinballGame->sapphireBumperState[1] = 1; PlayRumble(7); gCurrentPinballGame->ball->velocity.x /= 2; gCurrentPinballGame->ball->velocity.y /= 2; - memcpy(&gCurrentPinballGame->unk1334[1], &gCurrentPinballGame->unk1334[0], sizeof(*gCurrentPinballGame->unk1334)); + memcpy(&gCurrentPinballGame->ballStates[1], &gCurrentPinballGame->ballStates[0], sizeof(*gCurrentPinballGame->ballStates)); - gCurrentPinballGame->unk1330 = &gCurrentPinballGame->unk1334[1]; - gCurrentPinballGame->unk1328 = 25; + gCurrentPinballGame->secondaryBall = &gCurrentPinballGame->ballStates[1]; + gCurrentPinballGame->ballLaunchTimer = 25; } } else if (gCurrentPinballGame->ball->positionQ0.x < 116) { - if (gCurrentPinballGame->unk13 < 3 && gCurrentPinballGame->unk36A[0] < 3) + if (gCurrentPinballGame->boardState < 3 && gCurrentPinballGame->sapphireBumperState[0] < 3) { - if (gCurrentPinballGame->unk36A[0] == 1) - gCurrentPinballGame->unk36C[0] = 6; + if (gCurrentPinballGame->sapphireBumperState[0] == 1) + gCurrentPinballGame->sapphireBumperAnimKeyframe[0] = 6; else - gCurrentPinballGame->unk36C[0] = 4; + gCurrentPinballGame->sapphireBumperAnimKeyframe[0] = 4; - gCurrentPinballGame->unk36E[0] = 0; - gCurrentPinballGame->unk36A[0] = 1; + gCurrentPinballGame->sapphireBumperAnimSubTimer[0] = 0; + gCurrentPinballGame->sapphireBumperState[0] = 1; PlayRumble(7); gCurrentPinballGame->ball->velocity.x /= 2; gCurrentPinballGame->ball->velocity.y /= 2; - memcpy(&gCurrentPinballGame->unk1334[1], &gCurrentPinballGame->unk1334[0], sizeof(*gCurrentPinballGame->unk1334)); + memcpy(&gCurrentPinballGame->ballStates[1], &gCurrentPinballGame->ballStates[0], sizeof(*gCurrentPinballGame->ballStates)); - gCurrentPinballGame->unk1330 = &gCurrentPinballGame->unk1334[1]; - gCurrentPinballGame->unk1328 = 25; + gCurrentPinballGame->secondaryBall = &gCurrentPinballGame->ballStates[1]; + gCurrentPinballGame->ballLaunchTimer = 25; } } else { - gCurrentPinballGame->unk30C = 1800; - gCurrentPinballGame->unk306 = 1; + gCurrentPinballGame->pelipperFrameTimer = 1800; + gCurrentPinballGame->pelipperState = 1; - if (gCurrentPinballGame->unk70E < 99) - gCurrentPinballGame->unk70E++; + if (gCurrentPinballGame->progressLevel < 99) + gCurrentPinballGame->progressLevel++; gCurrentPinballGame->scoreAddedInFrame = 5000; } @@ -1108,30 +1108,30 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) { if (gCurrentPinballGame->ball->positionQ0.x < 110) { - gCurrentPinballGame->unk328 = 1; + gCurrentPinballGame->seedotCollisionTrigger = 1; gCurrentPinballGame->ball->velocity.y /= 2; } else { - if (gCurrentPinballGame->unk378 == 0) - gCurrentPinballGame->unk378 = 1; + if (gCurrentPinballGame->zigzagoonState == 0) + gCurrentPinballGame->zigzagoonState = 1; else - gCurrentPinballGame->unk378 = 0; + gCurrentPinballGame->zigzagoonState = 0; gCurrentPinballGame->ball->velocity.y /=2; gCurrentPinballGame->scoreAddedInFrame = 3000; } } - gCurrentPinballGame->unk600 = 45; + gCurrentPinballGame->mainBoardCountdownTimer = 45; m4aSongNumStart(SE_TRIGGER_BUTTON_HIT); } break; case 5: - gCurrentPinballGame->unk165 = 1; - gCurrentPinballGame->unk20 = 1; - gCurrentPinballGame->unk732 = 0; - gCurrentPinballGame->unk342 = 0; + gCurrentPinballGame->sapphireEntityCollisionFlag = 1; + gCurrentPinballGame->ballInLaunchChute = 1; + gCurrentPinballGame->ballCollisionZone = 0; + gCurrentPinballGame->sapphireDiverterActive = 0; break; case 6: if (gCurrentPinballGame->ball->positionQ0.x < 120) @@ -1149,75 +1149,75 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) } } else - gCurrentPinballGame->unk342 = 1; + gCurrentPinballGame->sapphireDiverterActive = 1; break; case 7: - if (gCurrentPinballGame->unk366 != 3) + if (gCurrentPinballGame->shopShockWallAnimState != 3) { - gCurrentPinballGame->unk368 = 17; - gCurrentPinballGame->unk23 = 0; - gCurrentPinballGame->unk22 = 2; + gCurrentPinballGame->shopBumperHitTimer = 17; + gCurrentPinballGame->collisionSurfaceType = 0; + gCurrentPinballGame->collisionResponseType = 2; *arg2 = 0xD800; *arg1 = 1; } break; case 8: x0Position = gCurrentPinballGame->ball->positionQ0.x; - if (gCurrentPinballGame->unk24 > 0) + if (gCurrentPinballGame->boardLayerDepth > 0) { - if (gCurrentPinballGame->unk732 == 7) + if (gCurrentPinballGame->ballCollisionZone == 7) { - gCurrentPinballGame->unk194 = 10; - if (gCurrentPinballGame->unk72B < 3) + gCurrentPinballGame->coinRewardAmount = 10; + if (gCurrentPinballGame->coinRewardLevel < 3) { - if (gCurrentPinballGame->unk72B == 0) + if (gCurrentPinballGame->coinRewardLevel == 0) { gCurrentPinballGame->scoreAddedInFrame = 2000; - gCurrentPinballGame->unk194 = 1; + gCurrentPinballGame->coinRewardAmount = 1; } - else if (gCurrentPinballGame->unk72B == 1) + else if (gCurrentPinballGame->coinRewardLevel == 1) { gCurrentPinballGame->scoreAddedInFrame = 5000; - gCurrentPinballGame->unk194 = 5; + gCurrentPinballGame->coinRewardAmount = 5; } else { gCurrentPinballGame->scoreAddedInFrame = 10000; - gCurrentPinballGame->unk194 = 10; + gCurrentPinballGame->coinRewardAmount = 10; } - gCurrentPinballGame->unk72B++; + gCurrentPinballGame->coinRewardLevel++; } - gCurrentPinballGame->unk196 = 0; - gCurrentPinballGame->unk72C = 0; + gCurrentPinballGame->coinRewardTimer = 0; + gCurrentPinballGame->coinRewardLevelTimer = 0; } - gCurrentPinballGame->unk732 = 1; + gCurrentPinballGame->ballCollisionZone = 1; } else { if (x0Position <= 72) { - if (gCurrentPinballGame->unk732 == 8) + if (gCurrentPinballGame->ballCollisionZone == 8) { - if (gCurrentPinballGame->unk13 < 3 && gCurrentPinballGame->unk72E < 3) + if (gCurrentPinballGame->boardState < 3 && gCurrentPinballGame->evoArrowProgress < 3) { - if (gCurrentPinballGame->unk72E == 0) + if (gCurrentPinballGame->evoArrowProgress == 0) gCurrentPinballGame->scoreAddedInFrame = 2000; - else if (gCurrentPinballGame->unk72E == 1) + else if (gCurrentPinballGame->evoArrowProgress == 1) gCurrentPinballGame->scoreAddedInFrame = 5000; else gCurrentPinballGame->scoreAddedInFrame = 10000; - gCurrentPinballGame->unk72E++; + gCurrentPinballGame->evoArrowProgress++; m4aSongNumStart(SE_UNKNOWN_0x99); } - gCurrentPinballGame->unk6BC = 1; + gCurrentPinballGame->travelRouletteSlotHitType = 1; } - gCurrentPinballGame->unk732 = 2; + gCurrentPinballGame->ballCollisionZone = 2; } else if (x0Position <= 98) { @@ -1225,12 +1225,12 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) gCurrentPinballGame->scoreAddedInFrame = 1000; gCurrentPinballGame->ballPowerUpLight[0] = 1; - gCurrentPinballGame->unk732 = 3; + gCurrentPinballGame->ballCollisionZone = 3; - if (gCurrentPinballGame->unk71B == 0 && (gCurrentPinballGame->ballPowerUpLight[1] & gCurrentPinballGame->ballPowerUpLight[2])) + if (gCurrentPinballGame->ballPowerUpAnimActive == 0 && (gCurrentPinballGame->ballPowerUpLight[1] & gCurrentPinballGame->ballPowerUpLight[2])) { - gCurrentPinballGame->unk71B = 1; - gCurrentPinballGame->unk71C = 60; + gCurrentPinballGame->ballPowerUpAnimActive = 1; + gCurrentPinballGame->ballShadowTimer = 60; gCurrentPinballGame->scoreAddedInFrame = 4000; } } @@ -1240,12 +1240,12 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) gCurrentPinballGame->scoreAddedInFrame = 1000; gCurrentPinballGame->ballPowerUpLight[1] = 1; - gCurrentPinballGame->unk732 = 4; + gCurrentPinballGame->ballCollisionZone = 4; - if (gCurrentPinballGame->unk71B == 0 && (gCurrentPinballGame->ballPowerUpLight[0] & gCurrentPinballGame->ballPowerUpLight[2])) + if (gCurrentPinballGame->ballPowerUpAnimActive == 0 && (gCurrentPinballGame->ballPowerUpLight[0] & gCurrentPinballGame->ballPowerUpLight[2])) { - gCurrentPinballGame->unk71B = 1; - gCurrentPinballGame->unk71C = 60; + gCurrentPinballGame->ballPowerUpAnimActive = 1; + gCurrentPinballGame->ballShadowTimer = 60; gCurrentPinballGame->scoreAddedInFrame = 4000; } } @@ -1255,189 +1255,189 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) gCurrentPinballGame->scoreAddedInFrame = 1000; gCurrentPinballGame->ballPowerUpLight[2] = 1; - gCurrentPinballGame->unk732 = 5; + gCurrentPinballGame->ballCollisionZone = 5; - if (gCurrentPinballGame->unk71B == 0 && (gCurrentPinballGame->ballPowerUpLight[0] & gCurrentPinballGame->ballPowerUpLight[1])) + if (gCurrentPinballGame->ballPowerUpAnimActive == 0 && (gCurrentPinballGame->ballPowerUpLight[0] & gCurrentPinballGame->ballPowerUpLight[1])) { - gCurrentPinballGame->unk71B = 1; - gCurrentPinballGame->unk71C = 60; + gCurrentPinballGame->ballPowerUpAnimActive = 1; + gCurrentPinballGame->ballShadowTimer = 60; gCurrentPinballGame->scoreAddedInFrame = 4000; } } else { - if (gCurrentPinballGame->unk732 == 9) + if (gCurrentPinballGame->ballCollisionZone == 9) { - if (gCurrentPinballGame->unk13 <= 2 && gCurrentPinballGame->unk72F < 3) + if (gCurrentPinballGame->boardState <= 2 && gCurrentPinballGame->catchArrowProgress < 3) { - if (gCurrentPinballGame->unk72F == 0) + if (gCurrentPinballGame->catchArrowProgress == 0) gCurrentPinballGame->scoreAddedInFrame = 2000; - else if (gCurrentPinballGame->unk72F == 1) + else if (gCurrentPinballGame->catchArrowProgress == 1) gCurrentPinballGame->scoreAddedInFrame = 5000; else gCurrentPinballGame->scoreAddedInFrame = 10000; - gCurrentPinballGame->unk72F++; + gCurrentPinballGame->catchArrowProgress++; - if (gCurrentPinballGame->unk1CA == 13) + if (gCurrentPinballGame->catchCounterValue == 13) m4aSongNumStart(SE_UNKNOWN_0x99); - if (gCurrentPinballGame->unk72F > 1) - gCurrentPinballGame->unk731 = 1; + if (gCurrentPinballGame->catchArrowProgress > 1) + gCurrentPinballGame->catchProgressFlashing = 1; } - gCurrentPinballGame->unk6BC = 2; + gCurrentPinballGame->travelRouletteSlotHitType = 2; } - gCurrentPinballGame->unk732 = 6; + gCurrentPinballGame->ballCollisionZone = 6; } } break; case 9: x0Position = gCurrentPinballGame->ball->positionQ0.x; - if (gCurrentPinballGame->unk24 > 0) - gCurrentPinballGame->unk732 = 7; + if (gCurrentPinballGame->boardLayerDepth > 0) + gCurrentPinballGame->ballCollisionZone = 7; else if (x0Position <= 50) - gCurrentPinballGame->unk732 = 8; + gCurrentPinballGame->ballCollisionZone = 8; else - gCurrentPinballGame->unk732 = 9; + gCurrentPinballGame->ballCollisionZone = 9; break; case 10: if (gCurrentPinballGame->ball->positionQ0.x <= 46) { - gCurrentPinballGame->unk732 = 10; + gCurrentPinballGame->ballCollisionZone = 10; if (gCurrentPinballGame->holeIndicators[0] == 0) { gCurrentPinballGame->scoreAddedInFrame = 1000; gCurrentPinballGame->holeIndicators[0] = 1; - if (gCurrentPinballGame->unk714 == 0 && ( + if (gCurrentPinballGame->allHolesLit == 0 && ( gCurrentPinballGame->holeIndicators[1] & gCurrentPinballGame->holeIndicators[2] & gCurrentPinballGame->holeIndicators[3])) { - gCurrentPinballGame->unk714 = 1; - gCurrentPinballGame->unk715 = 126; + gCurrentPinballGame->allHolesLit = 1; + gCurrentPinballGame->allHolesLitBlinkTimer = 126; gCurrentPinballGame->scoreAddedInFrame = 4000; } } } else if (gCurrentPinballGame->ball->positionQ0.x <= 120) { - gCurrentPinballGame->unk732 = 11; + gCurrentPinballGame->ballCollisionZone = 11; if (gCurrentPinballGame->holeIndicators[1] == 0) { gCurrentPinballGame->scoreAddedInFrame = 1000; gCurrentPinballGame->holeIndicators[1] = 1; - if (gCurrentPinballGame->unk714 == 0 && ( + if (gCurrentPinballGame->allHolesLit == 0 && ( gCurrentPinballGame->holeIndicators[0] & gCurrentPinballGame->holeIndicators[2] & gCurrentPinballGame->holeIndicators[3])) { - gCurrentPinballGame->unk714 = 1; - gCurrentPinballGame->unk715 = 126; + gCurrentPinballGame->allHolesLit = 1; + gCurrentPinballGame->allHolesLitBlinkTimer = 126; gCurrentPinballGame->scoreAddedInFrame = 4000; } } } else if (gCurrentPinballGame->ball->positionQ0.x <= 193) { - gCurrentPinballGame->unk732 = 12; + gCurrentPinballGame->ballCollisionZone = 12; if (gCurrentPinballGame->holeIndicators[2] == 0) { gCurrentPinballGame->scoreAddedInFrame = 1000; gCurrentPinballGame->holeIndicators[2] = 1; - if (gCurrentPinballGame->unk714 == 0 && ( + if (gCurrentPinballGame->allHolesLit == 0 && ( gCurrentPinballGame->holeIndicators[0] & gCurrentPinballGame->holeIndicators[1] & gCurrentPinballGame->holeIndicators[3])) { - gCurrentPinballGame->unk714 = 1; - gCurrentPinballGame->unk715 = 126; + gCurrentPinballGame->allHolesLit = 1; + gCurrentPinballGame->allHolesLitBlinkTimer = 126; gCurrentPinballGame->scoreAddedInFrame = 4000; } } } else { - gCurrentPinballGame->unk732 = 13; + gCurrentPinballGame->ballCollisionZone = 13; if (gCurrentPinballGame->holeIndicators[3] == 0) { gCurrentPinballGame->scoreAddedInFrame = 1000; gCurrentPinballGame->holeIndicators[3] = 1; - if (gCurrentPinballGame->unk714 == 0 && ( + if (gCurrentPinballGame->allHolesLit == 0 && ( gCurrentPinballGame->holeIndicators[0] & gCurrentPinballGame->holeIndicators[1] & gCurrentPinballGame->holeIndicators[2])) { - gCurrentPinballGame->unk714 = 1; - gCurrentPinballGame->unk715 = 126; + gCurrentPinballGame->allHolesLit = 1; + gCurrentPinballGame->allHolesLitBlinkTimer = 126; gCurrentPinballGame->scoreAddedInFrame = 4000; } } } break; case 11: - if (gCurrentPinballGame->unk1C4 == 0) + if (gCurrentPinballGame->pikaKickbackTimer == 0) { if (gCurrentPinballGame->ball->positionQ0.x <= 120) - gCurrentPinballGame->unk1C2 = 1; + gCurrentPinballGame->outLaneSide = 1; else - gCurrentPinballGame->unk1C2 = 2; + gCurrentPinballGame->outLaneSide = 2; if (gCurrentPinballGame->outLanePikaPosition < 2) { - if (gCurrentPinballGame->outLanePikaPosition == gCurrentPinballGame->unk1C2 - 1) - gCurrentPinballGame->unk1C4 = 120; + if (gCurrentPinballGame->outLanePikaPosition == gCurrentPinballGame->outLaneSide - 1) + gCurrentPinballGame->pikaKickbackTimer = 120; } else { - gCurrentPinballGame->unk1C4 = 120; + gCurrentPinballGame->pikaKickbackTimer = 120; } } break; case 12: - if (gCurrentPinballGame->unk616 == 0) + if (gCurrentPinballGame->pikaSpinCooldownTimer == 0) { absVelY = gCurrentPinballGame->ball->velocity.y; - gCurrentPinballGame->unk614 = absVelY; + gCurrentPinballGame->pikaSpinMomentum = absVelY; if (absVelY < 0) absVelY = -absVelY; - gCurrentPinballGame->unk1C6 = gCurrentPinballGame->unk1C6 + (absVelY / 3); - if (gCurrentPinballGame->unk1C6 > 168) - gCurrentPinballGame->unk1C6 = 168; + gCurrentPinballGame->pikaChargeTarget = gCurrentPinballGame->pikaChargeTarget + (absVelY / 3); + if (gCurrentPinballGame->pikaChargeTarget > 168) + gCurrentPinballGame->pikaChargeTarget = 168; - gCurrentPinballGame->unk616 = 20; + gCurrentPinballGame->pikaSpinCooldownTimer = 20; } break; case 13: - if (gCurrentPinballGame->unk732 != 14) + if (gCurrentPinballGame->ballCollisionZone != 14) { - gCurrentPinballGame->unk732 = 14; - index = gUnknown_086ACE70[gCurrentPinballGame->unk34A]; - gCurrentPinballGame->unk34B[index] = 10; - gCurrentPinballGame->unk34A++; - if (gCurrentPinballGame->unk34A == 3) + gCurrentPinballGame->ballCollisionZone = 14; + index = gSapphireTargetBumperIndexMap[gCurrentPinballGame->targetBumperHitCounter]; + gCurrentPinballGame->targetBumperAnimTimers[index] = 10; + gCurrentPinballGame->targetBumperHitCounter++; + if (gCurrentPinballGame->targetBumperHitCounter == 3) { - memcpy(&gCurrentPinballGame->unk1334[1], &gCurrentPinballGame->unk1334[0], sizeof(*gCurrentPinballGame->unk1334)); - gCurrentPinballGame->unk1330 = &gCurrentPinballGame->unk1334[1]; - if (gCurrentPinballGame->unk342) - gCurrentPinballGame->unk344 = 1; + memcpy(&gCurrentPinballGame->ballStates[1], &gCurrentPinballGame->ballStates[0], sizeof(*gCurrentPinballGame->ballStates)); + gCurrentPinballGame->secondaryBall = &gCurrentPinballGame->ballStates[1]; + if (gCurrentPinballGame->sapphireDiverterActive) + gCurrentPinballGame->holeLetterNewHit = 1; } - if (gCurrentPinballGame->unk34A == 11) - gCurrentPinballGame->unk1330 = gCurrentPinballGame->unk1334; + if (gCurrentPinballGame->targetBumperHitCounter == 11) + gCurrentPinballGame->secondaryBall = gCurrentPinballGame->ballStates; - modRes = (gCurrentPinballGame->unk34A - 1) % 4; + modRes = (gCurrentPinballGame->targetBumperHitCounter - 1) % 4; gMain.spriteGroups[modRes + 47].available = 1; - gCurrentPinballGame->unk355[modRes] = 0; - gCurrentPinballGame->unk35E[modRes] = 0; - gCurrentPinballGame->unk359[modRes] = gCurrentPinballGame->unk34A - 1; + gCurrentPinballGame->splashEffectFrameIndex[modRes] = 0; + gCurrentPinballGame->splashEffectFrameTimer[modRes] = 0; + gCurrentPinballGame->splashEffectPositionIndex[modRes] = gCurrentPinballGame->targetBumperHitCounter - 1; - if (gCurrentPinballGame->unk34A > 12) - gCurrentPinballGame->unk34A = 0; + if (gCurrentPinballGame->targetBumperHitCounter > 12) + gCurrentPinballGame->targetBumperHitCounter = 0; if (index == 0 && gCurrentPinballGame->ball->velocity.y > -120) gCurrentPinballGame->ball->velocity.y = -120; @@ -1447,18 +1447,18 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) } break; case 14: - if (gCurrentPinballGame->unk732 != 15) + if (gCurrentPinballGame->ballCollisionZone != 15) { - gCurrentPinballGame->unk732 = 15; - index = gUnknown_086ACE70[gCurrentPinballGame->unk34A]; - gCurrentPinballGame->unk34B[index] = 10; - gCurrentPinballGame->unk34A++; + gCurrentPinballGame->ballCollisionZone = 15; + index = gSapphireTargetBumperIndexMap[gCurrentPinballGame->targetBumperHitCounter]; + gCurrentPinballGame->targetBumperAnimTimers[index] = 10; + gCurrentPinballGame->targetBumperHitCounter++; - modRes = (gCurrentPinballGame->unk34A -1) % 4; + modRes = (gCurrentPinballGame->targetBumperHitCounter -1) % 4; gMain.spriteGroups[modRes + 47].available = 1; - gCurrentPinballGame->unk355[modRes] = 0; - gCurrentPinballGame->unk35E[modRes] = 0; - gCurrentPinballGame->unk359[modRes] = gCurrentPinballGame->unk34A - 1; + gCurrentPinballGame->splashEffectFrameIndex[modRes] = 0; + gCurrentPinballGame->splashEffectFrameTimer[modRes] = 0; + gCurrentPinballGame->splashEffectPositionIndex[modRes] = gCurrentPinballGame->targetBumperHitCounter - 1; if (index == 1 && gCurrentPinballGame->ball->velocity.y > -150) gCurrentPinballGame->ball->velocity.y = -150; } @@ -1466,15 +1466,15 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) case 15: if (gCurrentPinballGame->ball->positionQ0.y < 80) { - if (gCurrentPinballGame->unk306 == 1) - gCurrentPinballGame->unk306 = 2; + if (gCurrentPinballGame->pelipperState == 1) + gCurrentPinballGame->pelipperState = 2; } else { - if (gCurrentPinballGame->unk306 == 2) + if (gCurrentPinballGame->pelipperState == 2) { - gCurrentPinballGame->unk306 = 3; - gCurrentPinballGame->unk30C = 0; + gCurrentPinballGame->pelipperState = 3; + gCurrentPinballGame->pelipperFrameTimer = 0; } } @@ -1482,32 +1482,32 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) } } -s16 COLLISION_CHECK_DUSCLOPS_171C8(struct Vector16* arg0, u16* arg1) { +s16 CollisionCheck_Dusclops(struct Vector16* arg0, u16* arg1) { struct Vector16 vec1; struct Vector16 vec2; u16 sp00; u8 sp02; u16 return_val; - s16 unk0; - s32 unk1; - s32 unk2; + s16 collisionTileIndex; + s32 tileMapPage; + s32 boardLayer; u32 some_enum; u32 switch_enum; return_val = 0; - gCurrentPinballGame->ball->unk4 = 0; + gCurrentPinballGame->ball->spinAcceleration = 0; vec1.x = arg0->x / 8; vec1.y = arg0->y / 8; vec2.x = arg0->x % 8; vec2.y = arg0->y % 8; - unk1 = vec1.y / 64; - unk2 = gCurrentPinballGame->unk24; + tileMapPage = vec1.y / 64; + boardLayer = gCurrentPinballGame->boardLayerDepth; vec1.y %= 64; - unk0 = gUnknown_02031520.unk14.unk38[unk2 + unk1][vec1.y * 64 + vec1.x]; - 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]; + collisionTileIndex = gBoardConfig.fieldLayout.collisionTileMap[boardLayer + tileMapPage][vec1.y * 64 + vec1.x]; + sp00 = gBoardConfig.fieldLayout.collisionAngleMap[boardLayer + tileMapPage][collisionTileIndex * 64 + vec2.y * 8 + vec2.x]; + sp02 = gBoardConfig.fieldLayout.collisionTypeMap[boardLayer + tileMapPage][collisionTileIndex * 64 + vec2.y * 8 + vec2.x]; CheckDusclopsEntitiesCollision(arg0, &sp00, &sp02); switch_enum = sp02 & 0xF; @@ -1518,20 +1518,20 @@ s16 COLLISION_CHECK_DUSCLOPS_171C8(struct Vector16* arg0, u16* arg1) { case 1: case 4: case 6: - gCurrentPinballGame->unk23 = switch_enum - 1; - gCurrentPinballGame->unk22 = 1; + gCurrentPinballGame->collisionSurfaceType = switch_enum - 1; + gCurrentPinballGame->collisionResponseType = 1; *arg1 = sp00; if (*arg1 >= 0x3FF0 && *arg1 <= 0x4010) { - if (gCurrentPinballGame->ball->positionQ0.x < gUnknown_02031520.unk14.unk26 - 8 || - gCurrentPinballGame->ball->positionQ0.y < gUnknown_02031520.unk14.unk28 - 8) + if (gCurrentPinballGame->ball->positionQ0.x < gBoardConfig.fieldLayout.ballSpawnX - 8 || + gCurrentPinballGame->ball->positionQ0.y < gBoardConfig.fieldLayout.ballSpawnY - 8) { - if (gCurrentPinballGame->ball->unk6 > 0) + if (gCurrentPinballGame->ball->spinSpeed > 0) { *arg1 = 0x3E00; } - else if (gCurrentPinballGame->ball->unk6 != 0) + else if (gCurrentPinballGame->ball->spinSpeed != 0) { *arg1 = 0x4100; } @@ -1539,14 +1539,14 @@ s16 COLLISION_CHECK_DUSCLOPS_171C8(struct Vector16* arg0, u16* arg1) { { if (gMain.systemFrameCount & 1) { - gCurrentPinballGame->ball->unk4 = 0x28; - gCurrentPinballGame->ball->unk6 = 1; + gCurrentPinballGame->ball->spinAcceleration = 0x28; + gCurrentPinballGame->ball->spinSpeed = 1; *arg1 = 0x3E00; } else { - gCurrentPinballGame->ball->unk4 = 0xFFD8; - gCurrentPinballGame->ball->unk6 = 0xFFFF; + gCurrentPinballGame->ball->spinAcceleration = 0xFFD8; + gCurrentPinballGame->ball->spinSpeed = 0xFFFF; *arg1 = 0x4100; } } @@ -1557,8 +1557,8 @@ s16 COLLISION_CHECK_DUSCLOPS_171C8(struct Vector16* arg0, u16* arg1) { break; case 2: case 3: - gCurrentPinballGame->unk23 = switch_enum - 1; - gCurrentPinballGame->unk22 = 2; + gCurrentPinballGame->collisionSurfaceType = switch_enum - 1; + gCurrentPinballGame->collisionResponseType = 2; *arg1 = sp00 & 0x0000FFF0; return_val = 1; break; @@ -1567,7 +1567,7 @@ s16 COLLISION_CHECK_DUSCLOPS_171C8(struct Vector16* arg0, u16* arg1) { break; } - CheckDusclopsAbzorbZoneHit(some_enum, &return_val, arg1); + CheckDusclopsAbsorbZoneHit(some_enum, &return_val, arg1); return return_val; } @@ -1586,26 +1586,26 @@ void CheckDusclopsEntitiesCollision(struct Vector16 *arg0, s16* arg1, u8* arg2) if (*arg2 != 0) return; - deltaX = arg0->x -gCurrentPinballGame->unk3F0; - deltaY = arg0->y -gCurrentPinballGame->unk3F2; + deltaX = arg0->x -gCurrentPinballGame->bossCollisionX; + deltaY = arg0->y -gCurrentPinballGame->bossCollisionY; if (deltaX > 95U || deltaY > 119U) return; - maskedResult = 0xFFF0 & gUnknown_083071D4[(deltaY * 96 ) + deltaX]; - lowerNibble = 0xF & gUnknown_083071D4[(deltaY * 96 ) + deltaX]; + maskedResult = 0xFFF0 & gDusclopsBodyCollisionMap[(deltaY * 96 ) + deltaX]; + lowerNibble = 0xF & gDusclopsBodyCollisionMap[(deltaY * 96 ) + deltaX]; if (lowerNibble == 0) return; //Can be hit when ready to absorb (2) or when walking (3) - temp = gCurrentPinballGame->unk3DC -3; + temp = gCurrentPinballGame->bossEntityState -3; if (temp <= 1U) *arg2 = 1; else *arg2 = lowerNibble; - gCurrentPinballGame->unk3DC = DUSCLOPS_ENTITY_STATE_HIT; + gCurrentPinballGame->bossEntityState = DUSCLOPS_ENTITY_STATE_HIT; *arg1 = maskedResult; return; @@ -1623,8 +1623,8 @@ void CheckDusclopsEntitiesCollision(struct Vector16 *arg0, s16* arg1, u8* arg2) if (deltaX < 64U && deltaY < 64U) { - maskedResult = 0xFFF0 & gUnknown_08252B10[deltaY * 64 + deltaX]; - lowerNibble = 0xF & gUnknown_08252B10[deltaY * 64 + deltaX]; + maskedResult = 0xFFF0 & gSharedBumperCollisionMap[deltaY * 64 + deltaX]; + lowerNibble = 0xF & gSharedBumperCollisionMap[deltaY * 64 + deltaX]; if (lowerNibble != 0) gCurrentPinballGame->minionState[0] = DUSKULL_ENTITY_STATE_HIT; @@ -1640,8 +1640,8 @@ void CheckDusclopsEntitiesCollision(struct Vector16 *arg0, s16* arg1, u8* arg2) if (deltaX < 64U && deltaY < 64U) { - maskedResult = 0xFFF0 & gUnknown_08252B10[deltaY * 64 + deltaX]; - lowerNibble = 0xF & gUnknown_08252B10[deltaY * 64 + deltaX]; + maskedResult = 0xFFF0 & gSharedBumperCollisionMap[deltaY * 64 + deltaX]; + lowerNibble = 0xF & gSharedBumperCollisionMap[deltaY * 64 + deltaX]; if (lowerNibble != 0) gCurrentPinballGame->minionState[1] = DUSKULL_ENTITY_STATE_HIT; @@ -1658,8 +1658,8 @@ void CheckDusclopsEntitiesCollision(struct Vector16 *arg0, s16* arg1, u8* arg2) if (deltaX < 64U && deltaY < 64U) { - maskedResult = 0xFFF0 & gUnknown_08252B10[deltaY * 64 + deltaX]; - lowerNibble = 0xF & gUnknown_08252B10[deltaY * 64 + deltaX]; + maskedResult = 0xFFF0 & gSharedBumperCollisionMap[deltaY * 64 + deltaX]; + lowerNibble = 0xF & gSharedBumperCollisionMap[deltaY * 64 + deltaX]; if (lowerNibble != 0) { @@ -1678,7 +1678,7 @@ void CheckDusclopsEntitiesCollision(struct Vector16 *arg0, s16* arg1, u8* arg2) } } -void CheckDusclopsAbzorbZoneHit(u8 arg0, u16 *arg1, u16 *arg2) +void CheckDusclopsAbsorbZoneHit(u8 arg0, u16 *arg1, u16 *arg2) { switch (arg0) { @@ -1687,8 +1687,8 @@ void CheckDusclopsAbzorbZoneHit(u8 arg0, u16 *arg1, u16 *arg2) case 3: break; case 4: - gCurrentPinballGame->unk3DC = DUSCLOPS_ENTITY_STATE_HIT_ABSORB_ZONE; - gCurrentPinballGame->unk1F = 1; + gCurrentPinballGame->bossEntityState = DUSCLOPS_ENTITY_STATE_HIT_ABSORB_ZONE; + gCurrentPinballGame->ballFrozenState = 1; gCurrentPinballGame->boardEntityCollisionMode = DUSCLOPS_ENTITY_COLLISION_MODE_NONE; break; case 5: @@ -1706,35 +1706,35 @@ void CheckDusclopsAbzorbZoneHit(u8 arg0, u16 *arg1, u16 *arg2) } } -s16 COLLISION_CHECK_KECLEON_176B0(struct Vector16 *arg0, u16 *arg1) +s16 CollisionCheck_Kecleon(struct Vector16 *arg0, u16 *arg1) { struct Vector16 vec1; struct Vector16 vec2; u16 sp00; u8 sp02; u16 return_val; - s16 unk0; - s32 unk1; - s32 unk2; + s16 collisionTileIndex; + s32 tileMapPage; + s32 boardLayer; u32 some_enum; u32 switch_enum; return_val = 0; - gCurrentPinballGame->ball->unk4 = 0; + gCurrentPinballGame->ball->spinAcceleration = 0; vec1.x = arg0->x / 8; vec1.y = arg0->y / 8; vec2.x = arg0->x % 8; vec2.y = arg0->y % 8; - unk1 = vec1.y / 64; - unk2 = gCurrentPinballGame->unk24; + tileMapPage = vec1.y / 64; + boardLayer = gCurrentPinballGame->boardLayerDepth; vec1.y %= 64; - unk0 = gUnknown_02031520.unk14.unk38[unk2 + unk1][vec1.y * 64 + vec1.x]; - 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]; + collisionTileIndex = gBoardConfig.fieldLayout.collisionTileMap[boardLayer + tileMapPage][vec1.y * 64 + vec1.x]; + sp00 = gBoardConfig.fieldLayout.collisionAngleMap[boardLayer + tileMapPage][collisionTileIndex * 64 + vec2.y * 8 + vec2.x]; + sp02 = gBoardConfig.fieldLayout.collisionTypeMap[boardLayer + tileMapPage][collisionTileIndex * 64 + vec2.y * 8 + vec2.x]; - sub_17898(arg0, &sp00, &sp02); + CheckKecleonEntityCollision(arg0, &sp00, &sp02); switch_enum = sp02 & 0xF; some_enum = sp02 >> 4; @@ -1743,38 +1743,38 @@ s16 COLLISION_CHECK_KECLEON_176B0(struct Vector16 *arg0, u16 *arg1) case 1: case 4: case 6: - gCurrentPinballGame->unk23 = switch_enum - 1; - gCurrentPinballGame->unk22 = 1; + gCurrentPinballGame->collisionSurfaceType = switch_enum - 1; + gCurrentPinballGame->collisionResponseType = 1; *arg1 = sp00; return_val = 1; break; case 2: case 3: - gCurrentPinballGame->unk23 = 0; - gCurrentPinballGame->unk22 = 1; + gCurrentPinballGame->collisionSurfaceType = 0; + gCurrentPinballGame->collisionResponseType = 1; *arg1 = sp00 & 0x0000FFF0; return_val = 1; - if (gCurrentPinballGame->unk404 == 0) + if (gCurrentPinballGame->kecleonBoardHitState == 0) { - s32 unk3 = gCurrentPinballGame->unk406; - if (unk3 == 0) + s32 kecleonActive = gCurrentPinballGame->kecleonTargetActive; + if (kecleonActive == 0) { - gCurrentPinballGame->unk404 = 1; - gCurrentPinballGame->unk40A = unk3; + gCurrentPinballGame->kecleonBoardHitState = 1; + gCurrentPinballGame->kecleonCollisionX = kecleonActive; } } - gCurrentPinballGame->unk40C = 40; + gCurrentPinballGame->kecleonCollisionY = 40; break; case 5: some_enum = 4; break; } - sub_179D0(some_enum, &return_val, arg1); + ProcessKecleonCollisionEvent(some_enum, &return_val, arg1); return return_val; } -void sub_17898(struct Vector16 *arg0, u16 *arg1, u8 *arg2) +void CheckKecleonEntityCollision(struct Vector16 *arg0, u16 *arg1, u8 *arg2) { s16 deltaX; s16 deltaY; @@ -1785,22 +1785,22 @@ void sub_17898(struct Vector16 *arg0, u16 *arg1, u8 *arg2) if (*arg2 & 0xF) return; - deltaX = arg0->x - gCurrentPinballGame->unk3F0; - deltaY = arg0->y - gCurrentPinballGame->unk3F2; + deltaX = arg0->x - gCurrentPinballGame->bossCollisionX; + deltaY = arg0->y - gCurrentPinballGame->bossCollisionY; if ((deltaX < 0 || deltaX > 0x3F) || (deltaY < 0 || deltaY > 0x57)) return; - arrayValue = (u8)(gUnknown_0832D604[(deltaY * 0x40) + deltaX]) & 0xF; + arrayValue = (u8)(gKecleonTongueCollisionMap[(deltaY * 0x40) + deltaX]) & 0xF; if (arrayValue == 0) return; - if (gCurrentPinballGame->ball->unk0 != 0) + if (gCurrentPinballGame->ball->ballHidden != 0) return; - if (gCurrentPinballGame->unk3DC > 8) + if (gCurrentPinballGame->bossEntityState > 8) return; - gCurrentPinballGame->unk3DC = 9; + gCurrentPinballGame->bossEntityState = 9; } else if (gCurrentPinballGame->boardEntityCollisionMode == 2) { @@ -1809,29 +1809,29 @@ void sub_17898(struct Vector16 *arg0, u16 *arg1, u8 *arg2) if (*arg2 & 0xF) return; - deltaX = arg0->x - gCurrentPinballGame->unk3F0; - deltaY = arg0->y - gCurrentPinballGame->unk3F2; + deltaX = arg0->x - gCurrentPinballGame->bossCollisionX; + deltaY = arg0->y - gCurrentPinballGame->bossCollisionY; if ((deltaX < 0 || deltaX > 0x57) || (deltaY < 0 || deltaY > 0x3F)) return; - maskedResult = gUnknown_08330204[(deltaY * 0x58) + deltaX] & 0xFFF0; - arrayValue = gUnknown_08330204[(deltaY * 0x58) + deltaX] & 0xF; + maskedResult = gKecleonBodyCollisionMap[(deltaY * 0x58) + deltaX] & 0xFFF0; + arrayValue = gKecleonBodyCollisionMap[(deltaY * 0x58) + deltaX] & 0xF; if (arrayValue == 0) return; - if (gCurrentPinballGame->ball->unk0 != 0) + if (gCurrentPinballGame->ball->ballHidden != 0) return; - if (gCurrentPinballGame->unk3DC == 12) + if (gCurrentPinballGame->bossEntityState == 12) return; - gCurrentPinballGame->unk3DC = 11; + gCurrentPinballGame->bossEntityState = 11; *arg1 = maskedResult; *arg2 = 6; } } -void sub_179D0(u8 arg0, u16 *arg1, u16 *arg2) +void ProcessKecleonCollisionEvent(u8 arg0, u16 *arg1, u16 *arg2) { s16 x, y; x = gCurrentPinballGame->ball->positionQ0.x; @@ -1855,24 +1855,24 @@ void sub_179D0(u8 arg0, u16 *arg1, u16 *arg2) { if (y <= 0x38) { - if (gCurrentPinballGame->unk41C[0] <= 0) - gCurrentPinballGame->unk41C[0] = 0x18; + if (gCurrentPinballGame->kecleonBerryLargeFlashTimer[0] <= 0) + gCurrentPinballGame->kecleonBerryLargeFlashTimer[0] = 0x18; } else { - if (gCurrentPinballGame->unk41C[1] <= 0) - gCurrentPinballGame->unk41C[1] = 0x18; + if (gCurrentPinballGame->kecleonBerryLargeFlashTimer[1] <= 0) + gCurrentPinballGame->kecleonBerryLargeFlashTimer[1] = 0x18; } } else if (y <= 0x63) { - if (gCurrentPinballGame->unk41C[3] <= 0) - gCurrentPinballGame->unk41C[3] = 0x18; + if (gCurrentPinballGame->kecleonBerryLargeFlashTimer[3] <= 0) + gCurrentPinballGame->kecleonBerryLargeFlashTimer[3] = 0x18; } else { - if (gCurrentPinballGame->unk41C[2] <= 0) - gCurrentPinballGame->unk41C[2] = 0x18; + if (gCurrentPinballGame->kecleonBerryLargeFlashTimer[2] <= 0) + gCurrentPinballGame->kecleonBerryLargeFlashTimer[2] = 0x18; } break; case 9: @@ -1880,50 +1880,50 @@ void sub_179D0(u8 arg0, u16 *arg1, u16 *arg2) { if (y <= 0x45) { - if (gCurrentPinballGame->unk420[7] <= 0) - gCurrentPinballGame->unk420[7] = 0x18; + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[7] <= 0) + gCurrentPinballGame->kecleonBerrySmallFlashTimer[7] = 0x18; } else { - if (gCurrentPinballGame->unk420[5] <= 0) - gCurrentPinballGame->unk420[5] = 0x18; + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[5] <= 0) + gCurrentPinballGame->kecleonBerrySmallFlashTimer[5] = 0x18; } } else if (y <= 0x45) { - if (gCurrentPinballGame->unk420[8] <= 0) - gCurrentPinballGame->unk420[8] = 0x18; + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[8] <= 0) + gCurrentPinballGame->kecleonBerrySmallFlashTimer[8] = 0x18; } else { - if (gCurrentPinballGame->unk420[0] <= 0) - gCurrentPinballGame->unk420[0] = 0x18; + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[0] <= 0) + gCurrentPinballGame->kecleonBerrySmallFlashTimer[0] = 0x18; } break; case 10: - if (gCurrentPinballGame->unk410 == 0) + if (gCurrentPinballGame->kecleonHitboxX == 0) { - gCurrentPinballGame->unk42A[0] = 0xB; - gCurrentPinballGame->unkD0[0].x = gCurrentPinballGame->ball->positionQ0.x - 7; - gCurrentPinballGame->unkD0[0].y = gCurrentPinballGame->ball->positionQ0.y - 7; + gCurrentPinballGame->kecleonHitSparkTimer[0] = 0xB; + gCurrentPinballGame->ballTrailPosition[0].x = gCurrentPinballGame->ball->positionQ0.x - 7; + gCurrentPinballGame->ballTrailPosition[0].y = gCurrentPinballGame->ball->positionQ0.y - 7; } - else if (gCurrentPinballGame->unk410 == 3) + else if (gCurrentPinballGame->kecleonHitboxX == 3) { - gCurrentPinballGame->unk42A[1] = 0xB; - gCurrentPinballGame->unkD0[1].x = gCurrentPinballGame->ball->positionQ0.x - 7; - gCurrentPinballGame->unkD0[1].y = gCurrentPinballGame->ball->positionQ0.y - 7; + gCurrentPinballGame->kecleonHitSparkTimer[1] = 0xB; + gCurrentPinballGame->ballTrailPosition[1].x = gCurrentPinballGame->ball->positionQ0.x - 7; + gCurrentPinballGame->ballTrailPosition[1].y = gCurrentPinballGame->ball->positionQ0.y - 7; } - else if (gCurrentPinballGame->unk410 == 6) + else if (gCurrentPinballGame->kecleonHitboxX == 6) { - gCurrentPinballGame->unk42A[2] = 0xB; - gCurrentPinballGame->unkD0[2].x = gCurrentPinballGame->ball->positionQ0.x - 7; - gCurrentPinballGame->unkD0[2].y = gCurrentPinballGame->ball->positionQ0.y - 7; + gCurrentPinballGame->kecleonHitSparkTimer[2] = 0xB; + gCurrentPinballGame->ballTrailPosition[2].x = gCurrentPinballGame->ball->positionQ0.x - 7; + gCurrentPinballGame->ballTrailPosition[2].y = gCurrentPinballGame->ball->positionQ0.y - 7; } - else if (gCurrentPinballGame->unk410 == 9) + else if (gCurrentPinballGame->kecleonHitboxX == 9) { - gCurrentPinballGame->unk42A[3] = 0xB; - gCurrentPinballGame->unkD0[3].x = gCurrentPinballGame->ball->positionQ0.x - 7; - gCurrentPinballGame->unkD0[3].y = gCurrentPinballGame->ball->positionQ0.y - 7; + gCurrentPinballGame->kecleonHitSparkTimer[3] = 0xB; + gCurrentPinballGame->ballTrailPosition[3].x = gCurrentPinballGame->ball->positionQ0.x - 7; + gCurrentPinballGame->ballTrailPosition[3].y = gCurrentPinballGame->ball->positionQ0.y - 7; } break; case 11: @@ -1931,69 +1931,69 @@ void sub_179D0(u8 arg0, u16 *arg1, u16 *arg2) { if (y <= 0x45) { - if (gCurrentPinballGame->unk420[9] <= 0) - gCurrentPinballGame->unk420[9] = 0x18; + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[9] <= 0) + gCurrentPinballGame->kecleonBerrySmallFlashTimer[9] = 0x18; } else { - if (gCurrentPinballGame->unk420[2] <= 0) - gCurrentPinballGame->unk420[2] = 0x18; + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[2] <= 0) + gCurrentPinballGame->kecleonBerrySmallFlashTimer[2] = 0x18; } } else if (y <= 0x45) { - if (gCurrentPinballGame->unk420[6] <= 0) - gCurrentPinballGame->unk420[6] = 0x18; + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[6] <= 0) + gCurrentPinballGame->kecleonBerrySmallFlashTimer[6] = 0x18; } else { - if (gCurrentPinballGame->unk420[1] <= 0) - gCurrentPinballGame->unk420[1] = 0x18; + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[1] <= 0) + gCurrentPinballGame->kecleonBerrySmallFlashTimer[1] = 0x18; } break; case 12: if (x <= 0x72) { - if (gCurrentPinballGame->unk420[4] <= 0) - gCurrentPinballGame->unk420[4] = 0x18; + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[4] <= 0) + gCurrentPinballGame->kecleonBerrySmallFlashTimer[4] = 0x18; } else { - if (gCurrentPinballGame->unk420[3] <= 0) - gCurrentPinballGame->unk420[3] = 0x18; + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[3] <= 0) + gCurrentPinballGame->kecleonBerrySmallFlashTimer[3] = 0x18; } break; } } -void sub_17C1C(struct Vector16 *arg0) +void CheckKecleonProjectileCollision(struct Vector16 *arg0) { struct Vector16 vec1; struct Vector16 vec2; s16 x, y; u16 sp00; u8 sp02; - s16 unk0; - s32 unk1; - s32 unk2; + s16 collisionTileIndex; + s32 tileMapPage; + s32 boardLayer; u32 some_enum; - gCurrentPinballGame->unk3F8 = 1; + gCurrentPinballGame->kecleonCollisionEnabled = 1; vec1.x = arg0->x / 8; vec1.y = arg0->y / 8; vec2.x = arg0->x % 8; vec2.y = arg0->y % 8; - unk1 = vec1.y / 64; - unk2 = gCurrentPinballGame->unk24; + tileMapPage = vec1.y / 64; + boardLayer = gCurrentPinballGame->boardLayerDepth; vec1.y %= 64; - unk0 = gUnknown_02031520.unk14.unk38[unk2 + unk1][vec1.y * 64 + vec1.x]; - 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]; + collisionTileIndex = gBoardConfig.fieldLayout.collisionTileMap[boardLayer + tileMapPage][vec1.y * 64 + vec1.x]; + sp00 = gBoardConfig.fieldLayout.collisionAngleMap[boardLayer + tileMapPage][collisionTileIndex * 64 + vec2.y * 8 + vec2.x]; + sp02 = gBoardConfig.fieldLayout.collisionTypeMap[boardLayer + tileMapPage][collisionTileIndex * 64 + vec2.y * 8 + vec2.x]; some_enum = (sp02 >> 2) >> 2; - x = gCurrentPinballGame->unk400.x; - y = gCurrentPinballGame->unk400.y; + x = gCurrentPinballGame->kecleonCollisionPos.x; + y = gCurrentPinballGame->kecleonCollisionPos.y; switch (some_enum) { @@ -2002,24 +2002,24 @@ void sub_17C1C(struct Vector16 *arg0) { if (y <= 0x38) { - if (gCurrentPinballGame->unk41C[0] <= 0) - gCurrentPinballGame->unk41C[0] = 0x18; + if (gCurrentPinballGame->kecleonBerryLargeFlashTimer[0] <= 0) + gCurrentPinballGame->kecleonBerryLargeFlashTimer[0] = 0x18; } else { - if (gCurrentPinballGame->unk41C[1] <= 0) - gCurrentPinballGame->unk41C[1] = 0x18; + if (gCurrentPinballGame->kecleonBerryLargeFlashTimer[1] <= 0) + gCurrentPinballGame->kecleonBerryLargeFlashTimer[1] = 0x18; } } else if (y <= 0x63) { - if (gCurrentPinballGame->unk41C[3] <= 0) - gCurrentPinballGame->unk41C[3] = 0x18; + if (gCurrentPinballGame->kecleonBerryLargeFlashTimer[3] <= 0) + gCurrentPinballGame->kecleonBerryLargeFlashTimer[3] = 0x18; } else { - if (gCurrentPinballGame->unk41C[2] <= 0) - gCurrentPinballGame->unk41C[2] = 0x18; + if (gCurrentPinballGame->kecleonBerryLargeFlashTimer[2] <= 0) + gCurrentPinballGame->kecleonBerryLargeFlashTimer[2] = 0x18; } break; case 9: @@ -2027,53 +2027,53 @@ void sub_17C1C(struct Vector16 *arg0) { if (y <= 0x45) { - if (gCurrentPinballGame->unk420[7] <= 0) - gCurrentPinballGame->unk420[7] = 0x18; + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[7] <= 0) + gCurrentPinballGame->kecleonBerrySmallFlashTimer[7] = 0x18; } else { - if (gCurrentPinballGame->unk420[5] <= 0) - gCurrentPinballGame->unk420[5] = 0x18; + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[5] <= 0) + gCurrentPinballGame->kecleonBerrySmallFlashTimer[5] = 0x18; } } else if (y <= 0x45) { - if (gCurrentPinballGame->unk420[8] <= 0) - gCurrentPinballGame->unk420[8] = 0x18; + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[8] <= 0) + gCurrentPinballGame->kecleonBerrySmallFlashTimer[8] = 0x18; } else { - if (gCurrentPinballGame->unk420[0] <= 0) - gCurrentPinballGame->unk420[0] = 0x18; + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[0] <= 0) + gCurrentPinballGame->kecleonBerrySmallFlashTimer[0] = 0x18; } break; case 10: - gCurrentPinballGame->unk3F8 = 0; - if (gCurrentPinballGame->unk412 == 0) + gCurrentPinballGame->kecleonCollisionEnabled = 0; + if (gCurrentPinballGame->kecleonHitboxY == 0) { - if (gCurrentPinballGame->unk400.x != gCurrentPinballGame->unk434[0].x || gCurrentPinballGame->unk400.y != gCurrentPinballGame->unk434[0].y) + if (gCurrentPinballGame->kecleonCollisionPos.x != gCurrentPinballGame->kecleonBerryHitPosition[0].x || gCurrentPinballGame->kecleonCollisionPos.y != gCurrentPinballGame->kecleonBerryHitPosition[0].y) { - gCurrentPinballGame->unk42A[4] = 0x11; - gCurrentPinballGame->unk434[0].x = gCurrentPinballGame->unk400.x; - gCurrentPinballGame->unk434[0].y = gCurrentPinballGame->unk400.y; + gCurrentPinballGame->kecleonHitSparkTimer[4] = 0x11; + gCurrentPinballGame->kecleonBerryHitPosition[0].x = gCurrentPinballGame->kecleonCollisionPos.x; + gCurrentPinballGame->kecleonBerryHitPosition[0].y = gCurrentPinballGame->kecleonCollisionPos.y; } } - else if (gCurrentPinballGame->unk412 == 8) + else if (gCurrentPinballGame->kecleonHitboxY == 8) { - if (gCurrentPinballGame->unk400.x != gCurrentPinballGame->unk434[1].x || gCurrentPinballGame->unk400.y != gCurrentPinballGame->unk434[1].y) + if (gCurrentPinballGame->kecleonCollisionPos.x != gCurrentPinballGame->kecleonBerryHitPosition[1].x || gCurrentPinballGame->kecleonCollisionPos.y != gCurrentPinballGame->kecleonBerryHitPosition[1].y) { - gCurrentPinballGame->unk42A[5] = 0x11; - gCurrentPinballGame->unk434[1].x = gCurrentPinballGame->unk400.x; - gCurrentPinballGame->unk434[1].y = gCurrentPinballGame->unk400.y; + gCurrentPinballGame->kecleonHitSparkTimer[5] = 0x11; + gCurrentPinballGame->kecleonBerryHitPosition[1].x = gCurrentPinballGame->kecleonCollisionPos.x; + gCurrentPinballGame->kecleonBerryHitPosition[1].y = gCurrentPinballGame->kecleonCollisionPos.y; } } - else if (gCurrentPinballGame->unk412 == 16) + else if (gCurrentPinballGame->kecleonHitboxY == 16) { - if (gCurrentPinballGame->unk400.x != gCurrentPinballGame->unk434[2].x || gCurrentPinballGame->unk400.y != gCurrentPinballGame->unk434[2].y) + if (gCurrentPinballGame->kecleonCollisionPos.x != gCurrentPinballGame->kecleonBerryHitPosition[2].x || gCurrentPinballGame->kecleonCollisionPos.y != gCurrentPinballGame->kecleonBerryHitPosition[2].y) { - gCurrentPinballGame->unk42A[6] = 0x11; - gCurrentPinballGame->unk434[2].x = gCurrentPinballGame->unk400.x; - gCurrentPinballGame->unk434[2].y = gCurrentPinballGame->unk400.y; + gCurrentPinballGame->kecleonHitSparkTimer[6] = 0x11; + gCurrentPinballGame->kecleonBerryHitPosition[2].x = gCurrentPinballGame->kecleonCollisionPos.x; + gCurrentPinballGame->kecleonBerryHitPosition[2].y = gCurrentPinballGame->kecleonCollisionPos.y; } } break; @@ -2082,69 +2082,69 @@ void sub_17C1C(struct Vector16 *arg0) { if (y <= 0x45) { - if (gCurrentPinballGame->unk420[9] <= 0) - gCurrentPinballGame->unk420[9] = 0x18; + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[9] <= 0) + gCurrentPinballGame->kecleonBerrySmallFlashTimer[9] = 0x18; } else { - if (gCurrentPinballGame->unk420[2] <= 0) - gCurrentPinballGame->unk420[2] = 0x18; + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[2] <= 0) + gCurrentPinballGame->kecleonBerrySmallFlashTimer[2] = 0x18; } } else if (y <= 0x45) { - if (gCurrentPinballGame->unk420[6] <= 0) - gCurrentPinballGame->unk420[6] = 0x18; + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[6] <= 0) + gCurrentPinballGame->kecleonBerrySmallFlashTimer[6] = 0x18; } else { - if (gCurrentPinballGame->unk420[1] <= 0) - gCurrentPinballGame->unk420[1] = 0x18; + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[1] <= 0) + gCurrentPinballGame->kecleonBerrySmallFlashTimer[1] = 0x18; } break; case 12: if (x <= 0x72) { - if (gCurrentPinballGame->unk420[4] <= 0) - gCurrentPinballGame->unk420[4] = 0x18; + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[4] <= 0) + gCurrentPinballGame->kecleonBerrySmallFlashTimer[4] = 0x18; } else { - if (gCurrentPinballGame->unk420[3] <= 0) - gCurrentPinballGame->unk420[3] = 0x18; + if (gCurrentPinballGame->kecleonBerrySmallFlashTimer[3] <= 0) + gCurrentPinballGame->kecleonBerrySmallFlashTimer[3] = 0x18; } break; } } -s16 COLLISION_CHECK_KYOGRE_17F28(struct Vector16 *arg0, u16 *arg1) +s16 CollisionCheck_Kyogre(struct Vector16 *arg0, u16 *arg1) { struct Vector16 vec1; struct Vector16 vec2; u16 sp00; u8 sp02; u16 return_val; - s16 unk0; - s32 unk1; - s32 unk2; + s16 collisionTileIndex; + s32 tileMapPage; + s32 boardLayer; u32 some_enum; u32 switch_enum; return_val = 0; - gCurrentPinballGame->ball->unk4 = 0; + gCurrentPinballGame->ball->spinAcceleration = 0; if (arg0->y < 0x200) { vec1.x = arg0->x / 8; vec1.y = arg0->y / 8; vec2.x = arg0->x % 8; vec2.y = arg0->y % 8; - unk1 = vec1.y / 64; - unk2 = gCurrentPinballGame->unk24; + tileMapPage = vec1.y / 64; + boardLayer = gCurrentPinballGame->boardLayerDepth; vec1.y %= 64; - unk0 = gUnknown_02031520.unk14.unk38[unk2 + unk1][vec1.y * 64 + vec1.x]; - 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]; + collisionTileIndex = gBoardConfig.fieldLayout.collisionTileMap[boardLayer + tileMapPage][vec1.y * 64 + vec1.x]; + sp00 = gBoardConfig.fieldLayout.collisionAngleMap[boardLayer + tileMapPage][collisionTileIndex * 64 + vec2.y * 8 + vec2.x]; + sp02 = gBoardConfig.fieldLayout.collisionTypeMap[boardLayer + tileMapPage][collisionTileIndex * 64 + vec2.y * 8 + vec2.x]; } else { @@ -2152,7 +2152,7 @@ s16 COLLISION_CHECK_KYOGRE_17F28(struct Vector16 *arg0, u16 *arg1) sp02 = 0; } - sub_18180(arg0, &sp00, &sp02); + CheckKyogreEntityCollision(arg0, &sp00, &sp02); switch_enum = sp02 & 0xF; some_enum = sp02 >> 4; @@ -2161,20 +2161,20 @@ s16 COLLISION_CHECK_KYOGRE_17F28(struct Vector16 *arg0, u16 *arg1) case 1: case 4: case 6: - gCurrentPinballGame->unk23 = switch_enum - 1; - gCurrentPinballGame->unk22 = 1; + gCurrentPinballGame->collisionSurfaceType = switch_enum - 1; + gCurrentPinballGame->collisionResponseType = 1; *arg1 = sp00; if (*arg1 >= 0x3FF0 && *arg1 <= 0x4010) { - if (gCurrentPinballGame->ball->positionQ0.x < gUnknown_02031520.unk14.unk26 - 8 || - gCurrentPinballGame->ball->positionQ0.y < gUnknown_02031520.unk14.unk28 - 8) + if (gCurrentPinballGame->ball->positionQ0.x < gBoardConfig.fieldLayout.ballSpawnX - 8 || + gCurrentPinballGame->ball->positionQ0.y < gBoardConfig.fieldLayout.ballSpawnY - 8) { - if (gCurrentPinballGame->ball->unk6 > 0) + if (gCurrentPinballGame->ball->spinSpeed > 0) { *arg1 = 0x3E00; } - else if (gCurrentPinballGame->ball->unk6 != 0) + else if (gCurrentPinballGame->ball->spinSpeed != 0) { *arg1 = 0x4100; } @@ -2182,14 +2182,14 @@ s16 COLLISION_CHECK_KYOGRE_17F28(struct Vector16 *arg0, u16 *arg1) { if (gMain.systemFrameCount & 1) { - gCurrentPinballGame->ball->unk4 = 0x28; - gCurrentPinballGame->ball->unk6 = 1; + gCurrentPinballGame->ball->spinAcceleration = 0x28; + gCurrentPinballGame->ball->spinSpeed = 1; *arg1 = 0x3E00; } else { - gCurrentPinballGame->ball->unk4 = 0xFFD8; - gCurrentPinballGame->ball->unk6 = 0xFFFF; + gCurrentPinballGame->ball->spinAcceleration = 0xFFD8; + gCurrentPinballGame->ball->spinSpeed = 0xFFFF; *arg1 = 0x4100; } } @@ -2200,8 +2200,8 @@ s16 COLLISION_CHECK_KYOGRE_17F28(struct Vector16 *arg0, u16 *arg1) break; case 2: case 3: - gCurrentPinballGame->unk23 = switch_enum - 1; - gCurrentPinballGame->unk22 = 2; + gCurrentPinballGame->collisionSurfaceType = switch_enum - 1; + gCurrentPinballGame->collisionResponseType = 2; *arg1 = sp00 & 0x0000FFF0; return_val = 1; break; @@ -2210,11 +2210,11 @@ s16 COLLISION_CHECK_KYOGRE_17F28(struct Vector16 *arg0, u16 *arg1) break; } - sub_182B4(some_enum, &return_val, arg1); + ProcessKyogreCollisionEvent(some_enum, &return_val, arg1); return return_val; } -void sub_18180(struct Vector16 *arg0, u16 *arg1, u8 *arg2) +void CheckKyogreEntityCollision(struct Vector16 *arg0, u16 *arg1, u8 *arg2) { s16 deltaX; s16 deltaY; @@ -2226,19 +2226,19 @@ void sub_18180(struct Vector16 *arg0, u16 *arg1, u8 *arg2) if (*arg2 & 0xF) return; - deltaX = arg0->x - gCurrentPinballGame->unk3F0; - deltaY = arg0->y - gCurrentPinballGame->unk3F2; + deltaX = arg0->x - gCurrentPinballGame->bossCollisionX; + deltaY = arg0->y - gCurrentPinballGame->bossCollisionY; if ((deltaX < 0 || deltaX >= 0x78) || (deltaY < 0 || deltaY >= 0x98)) return; - maskedResult = gUnknown_08340B58[(deltaY * 0x78) + deltaX] & 0xFFF0; - arrayValue = gUnknown_08340B58[(deltaY * 0x78) + deltaX] & 0xF; + maskedResult = gKyogreForm1CollisionMap[(deltaY * 0x78) + deltaX] & 0xFFF0; + arrayValue = gKyogreForm1CollisionMap[(deltaY * 0x78) + deltaX] & 0xF; if (arrayValue == 0) return; - gCurrentPinballGame->unk452 = 8; + gCurrentPinballGame->bossHitFlashTimer = 8; *arg1 = maskedResult; *arg2 = 6; } @@ -2247,19 +2247,19 @@ void sub_18180(struct Vector16 *arg0, u16 *arg1, u8 *arg2) if (*arg2 & 0xF) return; - deltaX = arg0->x - gCurrentPinballGame->unk3F0; - deltaY = arg0->y - gCurrentPinballGame->unk3F2; + deltaX = arg0->x - gCurrentPinballGame->bossCollisionX; + deltaY = arg0->y - gCurrentPinballGame->bossCollisionY; if ((deltaX < 0 || deltaX >= 0x60) || (deltaY < 0 || deltaY >= 0x58)) return; - maskedResult = gUnknown_083499D8[(deltaY * 0x60) + deltaX] & 0xFFF0; - arrayValue = gUnknown_083499D8[(deltaY * 0x60) + deltaX] & 0xF; + maskedResult = gKyogreForm2CollisionMap[(deltaY * 0x60) + deltaX] & 0xFFF0; + arrayValue = gKyogreForm2CollisionMap[(deltaY * 0x60) + deltaX] & 0xF; if (arrayValue == 0) return; - gCurrentPinballGame->unk452 = 8; + gCurrentPinballGame->bossHitFlashTimer = 8; *arg1 = maskedResult; *arg2 = 6; } @@ -2268,25 +2268,25 @@ void sub_18180(struct Vector16 *arg0, u16 *arg1, u8 *arg2) if (*arg2 & 0xF) return; - deltaX = arg0->x - gCurrentPinballGame->unk3F0; - deltaY = arg0->y - gCurrentPinballGame->unk3F2; + deltaX = arg0->x - gCurrentPinballGame->bossCollisionX; + deltaY = arg0->y - gCurrentPinballGame->bossCollisionY; if ((deltaX < 0 || deltaX >= 0x60) || (deltaY < 0 || deltaY >= 0x68)) return; - maskedResult = gUnknown_0834DBD8[(deltaY * 0x60) + deltaX] & 0xFFF0; - arrayValue = gUnknown_0834DBD8[(deltaY * 0x60) + deltaX] & 0xF; + maskedResult = gKyogreForm3CollisionMap[(deltaY * 0x60) + deltaX] & 0xFFF0; + arrayValue = gKyogreForm3CollisionMap[(deltaY * 0x60) + deltaX] & 0xF; if (arrayValue == 0) return; - gCurrentPinballGame->unk452 = 8; + gCurrentPinballGame->bossHitFlashTimer = 8; *arg1 = maskedResult; *arg2 = 6; } } -void sub_182B4(u8 arg0, u16 *arg1, u16 *arg2) +void ProcessKyogreCollisionEvent(u8 arg0, u16 *arg1, u16 *arg2) { switch (arg0) { @@ -2295,8 +2295,8 @@ void sub_182B4(u8 arg0, u16 *arg1, u16 *arg2) case 3: break; case 4: - gCurrentPinballGame->unk3DC = 6; - gCurrentPinballGame->unk1F = 1; + gCurrentPinballGame->bossEntityState = 6; + gCurrentPinballGame->ballFrozenState = 1; break; case 5: case 6: @@ -2313,7 +2313,7 @@ void sub_182B4(u8 arg0, u16 *arg1, u16 *arg2) } } -s16 COLLISION_CHECK_GROUDON_18324(struct Vector16 *arg0, u16 *arg1) +s16 CollisionCheck_Groudon(struct Vector16 *arg0, u16 *arg1) { struct Vector16 vec1; struct Vector16 vec2; @@ -2324,23 +2324,23 @@ s16 COLLISION_CHECK_GROUDON_18324(struct Vector16 *arg0, u16 *arg1) u32 switch_enum; return_val = 0; - gCurrentPinballGame->ball->unk4 = 0; + gCurrentPinballGame->ball->spinAcceleration = 0; if (arg0->y < 0x200) { s16 r2; - s32 unk1; - s32 unk2; + s32 tileMapPage; + s32 boardLayer; vec1.x = arg0->x / 8; vec1.y = arg0->y / 8; vec2.x = arg0->x % 8; vec2.y = arg0->y % 8; - unk1 = vec1.y / 64; - unk2 = gCurrentPinballGame->unk24; + tileMapPage = vec1.y / 64; + boardLayer = gCurrentPinballGame->boardLayerDepth; vec1.y %= 64; - r2 = gUnknown_02031520.unk14.unk38[unk2 + unk1][vec1.y * 64 + vec1.x]; - sp00 = gUnknown_02031520.unk14.unk48[unk2 + unk1][r2 * 64 + vec2.y * 8 + vec2.x]; - sp02 = gUnknown_02031520.unk14.unk58[unk2 + unk1][r2 * 64 + vec2.y * 8 + vec2.x]; + r2 = gBoardConfig.fieldLayout.collisionTileMap[boardLayer + tileMapPage][vec1.y * 64 + vec1.x]; + sp00 = gBoardConfig.fieldLayout.collisionAngleMap[boardLayer + tileMapPage][r2 * 64 + vec2.y * 8 + vec2.x]; + sp02 = gBoardConfig.fieldLayout.collisionTypeMap[boardLayer + tileMapPage][r2 * 64 + vec2.y * 8 + vec2.x]; } else { @@ -2348,7 +2348,7 @@ s16 COLLISION_CHECK_GROUDON_18324(struct Vector16 *arg0, u16 *arg1) sp02 = 0; } - sub_1857C(arg0, &sp00, &sp02); + CheckGroudonEntityCollision(arg0, &sp00, &sp02); switch_enum = sp02 & 0xF; some_enum = sp02 >> 4; @@ -2357,18 +2357,18 @@ s16 COLLISION_CHECK_GROUDON_18324(struct Vector16 *arg0, u16 *arg1) case 1: case 4: case 6: - gCurrentPinballGame->unk23 = switch_enum - 1; - gCurrentPinballGame->unk22 = 1; + gCurrentPinballGame->collisionSurfaceType = switch_enum - 1; + gCurrentPinballGame->collisionResponseType = 1; *arg1 = sp00; if (*arg1 >= 0x3FF0 && *arg1 <= 0x4010) { - if (gCurrentPinballGame->ball->positionQ0.x < (gUnknown_02031520.unk14.unk26 - 8) || gCurrentPinballGame->ball->positionQ0.y < gUnknown_02031520.unk14.unk28 - 8) + if (gCurrentPinballGame->ball->positionQ0.x < (gBoardConfig.fieldLayout.ballSpawnX - 8) || gCurrentPinballGame->ball->positionQ0.y < gBoardConfig.fieldLayout.ballSpawnY - 8) { - if (gCurrentPinballGame->ball->unk6 > 0) + if (gCurrentPinballGame->ball->spinSpeed > 0) { *arg1 = 0x3E00; } - else if (gCurrentPinballGame->ball->unk6 != 0) + else if (gCurrentPinballGame->ball->spinSpeed != 0) { *arg1 = 0x4100; } @@ -2376,14 +2376,14 @@ s16 COLLISION_CHECK_GROUDON_18324(struct Vector16 *arg0, u16 *arg1) { if (gMain.systemFrameCount & 1) { - gCurrentPinballGame->ball->unk4 = 40; - gCurrentPinballGame->ball->unk6 = 1; + gCurrentPinballGame->ball->spinAcceleration = 40; + gCurrentPinballGame->ball->spinSpeed = 1; *arg1 = 0x3E00; } else { - gCurrentPinballGame->ball->unk4 = -40; - gCurrentPinballGame->ball->unk6 = -1; + gCurrentPinballGame->ball->spinAcceleration = -40; + gCurrentPinballGame->ball->spinSpeed = -1; *arg1 = 0x4100; } } @@ -2393,8 +2393,8 @@ s16 COLLISION_CHECK_GROUDON_18324(struct Vector16 *arg0, u16 *arg1) break; case 2: case 3: - gCurrentPinballGame->unk23 = switch_enum - 1; - gCurrentPinballGame->unk22 = 2; + gCurrentPinballGame->collisionSurfaceType = switch_enum - 1; + gCurrentPinballGame->collisionResponseType = 2; *arg1 = sp00 & 0xFFF0; return_val = 1; break; @@ -2403,11 +2403,11 @@ s16 COLLISION_CHECK_GROUDON_18324(struct Vector16 *arg0, u16 *arg1) break; } - sub_18784(some_enum, &return_val, arg1); + ProcessGroudonCollisionEvent(some_enum, &return_val, arg1); return return_val; } -void sub_1857C(struct Vector16 *arg0, u16 *arg1, u8 *arg2) +void CheckGroudonEntityCollision(struct Vector16 *arg0, u16 *arg1, u8 *arg2) { s16 deltaX; s16 deltaY; @@ -2420,18 +2420,18 @@ void sub_1857C(struct Vector16 *arg0, u16 *arg1, u8 *arg2) { if ((*arg2 & 0xF) == 0) { - deltaX = arg0->x - gCurrentPinballGame->unk3F0; - deltaY = arg0->y - gCurrentPinballGame->unk3F2; + deltaX = arg0->x - gCurrentPinballGame->bossCollisionX; + deltaY = arg0->y - gCurrentPinballGame->bossCollisionY; if ((deltaX >= 0 && deltaX < 0x70) && (deltaY >= 0 && deltaY < 0x80)) { - resultFromArray = gUnknown_083579C8[(deltaY * 0x70) + deltaX]; + resultFromArray = gGroudonBodyCollisionMap[(deltaY * 0x70) + deltaX]; maskedResult = resultFromArray & 0xFFF0; lowerNibble = resultFromArray & 0xF; if (lowerNibble != 0) { - if (gCurrentPinballGame->unk452 == 0) - gCurrentPinballGame->unk452 = 0x27; + if (gCurrentPinballGame->bossHitFlashTimer == 0) + gCurrentPinballGame->bossHitFlashTimer = 0x27; *arg1 = maskedResult; *arg2 = lowerNibble; @@ -2441,53 +2441,53 @@ void sub_1857C(struct Vector16 *arg0, u16 *arg1, u8 *arg2) } for (i = 0; i < 3; i++) { - if (gCurrentPinballGame->unk4F8[i].x <= 0) + if (gCurrentPinballGame->boulderCollisionPos[i].x <= 0) continue; if ((*arg2 & 0xF) != 0) continue; - deltaX = arg0->x - gCurrentPinballGame->unk4F8[i].x; - deltaY = arg0->y - gCurrentPinballGame->unk4F8[i].y; + deltaX = arg0->x - gCurrentPinballGame->boulderCollisionPos[i].x; + deltaY = arg0->y - gCurrentPinballGame->boulderCollisionPos[i].y; if ((deltaX < 0 || deltaX >= 0x50) || (deltaY < 0 || deltaY >= 0x50)) continue; - maskedResult = gUnknown_0835E9C8[(deltaY * 0x50) + deltaX] & 0xFFF0; - lowerNibble = gUnknown_0835E9C8[(deltaY * 0x50) + deltaX] & 0xF; + maskedResult = gGroudonProjectileCollisionMap[(deltaY * 0x50) + deltaX] & 0xFFF0; + lowerNibble = gGroudonProjectileCollisionMap[(deltaY * 0x50) + deltaX] & 0xF; if (lowerNibble == 0) continue; *arg1 = maskedResult; *arg2 = 6; - gCurrentPinballGame->unk4D5[i] = 1; + gCurrentPinballGame->boulderHitFlag[i] = 1; } for (i = 0; i < 4; i++) { - if (gCurrentPinballGame->unk4B4[i].x <= 0) + if (gCurrentPinballGame->firePillarCollisionPos[i].x <= 0) continue; if ((*arg2 & 0xF) != 0) continue; - deltaX = arg0->x - gCurrentPinballGame->unk4B4[i].x; - deltaY = arg0->y - gCurrentPinballGame->unk4B4[i].y; + deltaX = arg0->x - gCurrentPinballGame->firePillarCollisionPos[i].x; + deltaY = arg0->y - gCurrentPinballGame->firePillarCollisionPos[i].y; if ((deltaX < 0 || deltaX >= 0x50) || (deltaY < 0 || deltaY >= 0x50)) continue; - maskedResult = gUnknown_0835E9C8[(deltaY * 0x50) + deltaX] & 0xFFF0; - lowerNibble = gUnknown_0835E9C8[(deltaY * 0x50) + deltaX] & 0xF; + maskedResult = gGroudonProjectileCollisionMap[(deltaY * 0x50) + deltaX] & 0xFFF0; + lowerNibble = gGroudonProjectileCollisionMap[(deltaY * 0x50) + deltaX] & 0xF; if (lowerNibble == 0) continue; *arg1 = maskedResult; *arg2 = 6; - gCurrentPinballGame->unk4A4[i] = 8; + gCurrentPinballGame->firePillarHitTimer[i] = 8; } } -void sub_18784(u8 arg0, u16 *arg1, u16 *arg2) +void ProcessGroudonCollisionEvent(u8 arg0, u16 *arg1, u16 *arg2) { switch (arg0) { @@ -2496,8 +2496,8 @@ void sub_18784(u8 arg0, u16 *arg1, u16 *arg2) case 3: break; case 4: - gCurrentPinballGame->unk3DC = 6; - gCurrentPinballGame->unk1F = 1; + gCurrentPinballGame->bossEntityState = 6; + gCurrentPinballGame->ballFrozenState = 1; break; case 5: case 6: @@ -2515,7 +2515,7 @@ void sub_18784(u8 arg0, u16 *arg1, u16 *arg2) } //One known callsite is 080145D2 during the rayquaza bonus stage -s16 COLLISION_CHECK_RAYQUAZA_187F4(struct Vector16 *arg0, u16 *arg1) +s16 CollisionCheck_Rayquaza(struct Vector16 *arg0, u16 *arg1) { struct Vector16 vec1; struct Vector16 vec2; @@ -2526,23 +2526,23 @@ s16 COLLISION_CHECK_RAYQUAZA_187F4(struct Vector16 *arg0, u16 *arg1) u32 switch_enum; return_val = 0; - gCurrentPinballGame->ball->unk4 = 0; + gCurrentPinballGame->ball->spinAcceleration = 0; if (arg0->y < 0x200) { s16 r2; - s32 unk1; - s32 unk2; + s32 tileMapPage; + s32 boardLayer; vec1.x = arg0->x / 8; vec1.y = arg0->y / 8; vec2.x = arg0->x % 8; vec2.y = arg0->y % 8; - unk1 = vec1.y / 64; - unk2 = gCurrentPinballGame->unk24; + tileMapPage = vec1.y / 64; + boardLayer = gCurrentPinballGame->boardLayerDepth; vec1.y %= 64; - r2 = gUnknown_02031520.unk14.unk38[unk2 + unk1][vec1.y * 64 + vec1.x]; - sp00 = gUnknown_02031520.unk14.unk48[unk2 + unk1][r2 * 64 + vec2.y * 8 + vec2.x]; - sp02 = gUnknown_02031520.unk14.unk58[unk2 + unk1][r2 * 64 + vec2.y * 8 + vec2.x]; + r2 = gBoardConfig.fieldLayout.collisionTileMap[boardLayer + tileMapPage][vec1.y * 64 + vec1.x]; + sp00 = gBoardConfig.fieldLayout.collisionAngleMap[boardLayer + tileMapPage][r2 * 64 + vec2.y * 8 + vec2.x]; + sp02 = gBoardConfig.fieldLayout.collisionTypeMap[boardLayer + tileMapPage][r2 * 64 + vec2.y * 8 + vec2.x]; } else { @@ -2550,7 +2550,7 @@ s16 COLLISION_CHECK_RAYQUAZA_187F4(struct Vector16 *arg0, u16 *arg1) sp02 = 0; } - sub_18A4C(arg0, &sp00, &sp02); + CheckRayquazaEntityCollision(arg0, &sp00, &sp02); switch_enum = sp02 & 0xF; some_enum = sp02 >> 4; @@ -2559,18 +2559,18 @@ s16 COLLISION_CHECK_RAYQUAZA_187F4(struct Vector16 *arg0, u16 *arg1) case 1: case 4: case 6: - gCurrentPinballGame->unk23 = switch_enum - 1; - gCurrentPinballGame->unk22 = 1; + gCurrentPinballGame->collisionSurfaceType = switch_enum - 1; + gCurrentPinballGame->collisionResponseType = 1; *arg1 = sp00; if (*arg1 >= 0x3FF0 && *arg1 <= 0x4010) { - if (gCurrentPinballGame->ball->positionQ0.x < (gUnknown_02031520.unk14.unk26 - 8) || gCurrentPinballGame->ball->positionQ0.y < gUnknown_02031520.unk14.unk28 - 8) + if (gCurrentPinballGame->ball->positionQ0.x < (gBoardConfig.fieldLayout.ballSpawnX - 8) || gCurrentPinballGame->ball->positionQ0.y < gBoardConfig.fieldLayout.ballSpawnY - 8) { - if (gCurrentPinballGame->ball->unk6 > 0) + if (gCurrentPinballGame->ball->spinSpeed > 0) { *arg1 = 0x3E00; } - else if (gCurrentPinballGame->ball->unk6 != 0) + else if (gCurrentPinballGame->ball->spinSpeed != 0) { *arg1 = 0x4100; } @@ -2578,14 +2578,14 @@ s16 COLLISION_CHECK_RAYQUAZA_187F4(struct Vector16 *arg0, u16 *arg1) { if (gMain.systemFrameCount & 1) { - gCurrentPinballGame->ball->unk4 = 40; - gCurrentPinballGame->ball->unk6 = 1; + gCurrentPinballGame->ball->spinAcceleration = 40; + gCurrentPinballGame->ball->spinSpeed = 1; *arg1 = 0x3E00; } else { - gCurrentPinballGame->ball->unk4 = -40; - gCurrentPinballGame->ball->unk6 = -1; + gCurrentPinballGame->ball->spinAcceleration = -40; + gCurrentPinballGame->ball->spinSpeed = -1; *arg1 = 0x4100; } } @@ -2595,8 +2595,8 @@ s16 COLLISION_CHECK_RAYQUAZA_187F4(struct Vector16 *arg0, u16 *arg1) break; case 2: case 3: - gCurrentPinballGame->unk23 = switch_enum - 1; - gCurrentPinballGame->unk22 = 2; + gCurrentPinballGame->collisionSurfaceType = switch_enum - 1; + gCurrentPinballGame->collisionResponseType = 2; *arg1 = sp00 & 0xFFF0; return_val = 1; break; @@ -2605,11 +2605,11 @@ s16 COLLISION_CHECK_RAYQUAZA_187F4(struct Vector16 *arg0, u16 *arg1) break; } - sub_18AE0(some_enum, &return_val, arg1); + ProcessRayquazaCollisionEvent(some_enum, &return_val, arg1); return return_val; } -void sub_18A4C(struct Vector16 *arg0, u16 *arg1, u8 *arg2) +void CheckRayquazaEntityCollision(struct Vector16 *arg0, u16 *arg1, u8 *arg2) { s16 deltaX; s16 deltaY; @@ -2621,24 +2621,24 @@ void sub_18A4C(struct Vector16 *arg0, u16 *arg1, u8 *arg2) if (*arg2 & 0xF) return; - deltaX = arg0->x - gCurrentPinballGame->unk3F0; - deltaY = arg0->y - gCurrentPinballGame->unk3F2; + deltaX = arg0->x - gCurrentPinballGame->bossCollisionX; + deltaY = arg0->y - gCurrentPinballGame->bossCollisionY; if ((deltaX < 0 || deltaX >= 0x80) || (deltaY < 0 || deltaY >= 0x80)) return; - maskedResult = gUnknown_083722E8[(deltaY * 0x80) + deltaX] & 0xFFF0; - lowerNibble = gUnknown_083722E8[(deltaY * 0x80) + deltaX] & 0xF; + maskedResult = gRayquazaBodyCollisionMap[(deltaY * 0x80) + deltaX] & 0xFFF0; + lowerNibble = gRayquazaBodyCollisionMap[(deltaY * 0x80) + deltaX] & 0xF; if (lowerNibble == 0) return; - gCurrentPinballGame->unk452 = 9; + gCurrentPinballGame->bossHitFlashTimer = 9; *arg1 = maskedResult; *arg2 = lowerNibble; } -void sub_18AE0(u8 arg0, u16 *arg1, u16 *arg2) +void ProcessRayquazaCollisionEvent(u8 arg0, u16 *arg1, u16 *arg2) { switch (arg0) { @@ -2647,8 +2647,8 @@ void sub_18AE0(u8 arg0, u16 *arg1, u16 *arg2) case 3: break; case 4: - gCurrentPinballGame->unk3DC = 6; - gCurrentPinballGame->unk1F = 1; + gCurrentPinballGame->bossEntityState = 6; + gCurrentPinballGame->ballFrozenState = 1; break; case 5: case 6: @@ -2665,7 +2665,7 @@ void sub_18AE0(u8 arg0, u16 *arg1, u16 *arg2) } } -s16 COLLISION_CHECK_SPHEAL_18B50(struct Vector16 *arg0, u16 *arg1) +s16 CollisionCheck_Spheal(struct Vector16 *arg0, u16 *arg1) { u16 sp0; u8 sp2; @@ -2673,27 +2673,27 @@ s16 COLLISION_CHECK_SPHEAL_18B50(struct Vector16 *arg0, u16 *arg1) struct Vector16 div_result; struct Vector16 div_remainder; - s32 unk1; - s32 unk2; - s16 unk3; + s32 tileMapPage; + s32 boardLayer; + s16 collisionTileIndex; u8 enum1, enum2; sp4_return = 0; - gCurrentPinballGame->ball->unk4 = 0; + gCurrentPinballGame->ball->spinAcceleration = 0; div_result.x = arg0->x / 8; div_result.y = arg0->y / 8; div_remainder.x = arg0->x % 8; div_remainder.y = arg0->y % 8; - unk1 = div_result.y / 64; - unk2 = gCurrentPinballGame->unk24; + tileMapPage = div_result.y / 64; + boardLayer = gCurrentPinballGame->boardLayerDepth; div_result.y %= 64; - unk3 = gUnknown_02031520.unk14.unk38[unk2 + unk1][div_result.y * 64 + div_result.x]; - sp0 = gUnknown_02031520.unk14.unk48[unk2 + unk1][unk3 * 64 + div_remainder.y * 8 + div_remainder.x]; - sp2 = gUnknown_02031520.unk14.unk58[unk2 + unk1][unk3 * 64 + div_remainder.y * 8 + div_remainder.x]; + collisionTileIndex = gBoardConfig.fieldLayout.collisionTileMap[boardLayer + tileMapPage][div_result.y * 64 + div_result.x]; + sp0 = gBoardConfig.fieldLayout.collisionAngleMap[boardLayer + tileMapPage][collisionTileIndex * 64 + div_remainder.y * 8 + div_remainder.x]; + sp2 = gBoardConfig.fieldLayout.collisionTypeMap[boardLayer + tileMapPage][collisionTileIndex * 64 + div_remainder.y * 8 + div_remainder.x]; - sub_18DAC(arg0, &sp0, &sp2); + CheckSphealEntityCollision(arg0, &sp0, &sp2); enum1 = sp2 & 0xF; enum2 = sp2 >> 4; @@ -2702,19 +2702,19 @@ s16 COLLISION_CHECK_SPHEAL_18B50(struct Vector16 *arg0, u16 *arg1) case 1: case 4: case 6: - gCurrentPinballGame->unk23 = enum1 - 1; - gCurrentPinballGame->unk22 = 1; + gCurrentPinballGame->collisionSurfaceType = enum1 - 1; + gCurrentPinballGame->collisionResponseType = 1; *arg1 = sp0; if (*arg1 >= 0x3FF0 && *arg1 <= 0x4010) { - if (gCurrentPinballGame->ball->positionQ0.x < (gUnknown_02031520.unk14.unk26 - 8) || - gCurrentPinballGame->ball->positionQ0.y < (gUnknown_02031520.unk14.unk28 - 8)) + if (gCurrentPinballGame->ball->positionQ0.x < (gBoardConfig.fieldLayout.ballSpawnX - 8) || + gCurrentPinballGame->ball->positionQ0.y < (gBoardConfig.fieldLayout.ballSpawnY - 8)) { - if (gCurrentPinballGame->ball->unk6 > 0) + if (gCurrentPinballGame->ball->spinSpeed > 0) { *arg1 = 0x3E00; } - else if (gCurrentPinballGame->ball->unk6 != 0) + else if (gCurrentPinballGame->ball->spinSpeed != 0) { *arg1 = 0x4100; } @@ -2722,14 +2722,14 @@ s16 COLLISION_CHECK_SPHEAL_18B50(struct Vector16 *arg0, u16 *arg1) { if (gMain.systemFrameCount & 1) { - gCurrentPinballGame->ball->unk4 = 40; - gCurrentPinballGame->ball->unk6 = 1; + gCurrentPinballGame->ball->spinAcceleration = 40; + gCurrentPinballGame->ball->spinSpeed = 1; *arg1 = 0x3E00; } else { - gCurrentPinballGame->ball->unk4 = -40; - gCurrentPinballGame->ball->unk6 = -1; + gCurrentPinballGame->ball->spinAcceleration = -40; + gCurrentPinballGame->ball->spinSpeed = -1; *arg1 = 0x4100; } } @@ -2739,14 +2739,14 @@ s16 COLLISION_CHECK_SPHEAL_18B50(struct Vector16 *arg0, u16 *arg1) break; case 2: case 3: - gCurrentPinballGame->unk23 = 0; - gCurrentPinballGame->unk22 = 1; + gCurrentPinballGame->collisionSurfaceType = 0; + gCurrentPinballGame->collisionResponseType = 1; *arg1 = sp0 & 0x0000FFF0; if (gCurrentPinballGame->ball->positionQ0.x < 120) - gCurrentPinballGame->unk548[0] = 24; + gCurrentPinballGame->minionHitFlashTimer[0] = 24; else - gCurrentPinballGame->unk548[1] = 24; + gCurrentPinballGame->minionHitFlashTimer[1] = 24; sp4_return = 1; break; @@ -2755,11 +2755,11 @@ s16 COLLISION_CHECK_SPHEAL_18B50(struct Vector16 *arg0, u16 *arg1) break; } - sub_18F38(enum2, &sp4_return, arg1); + ProcessSphealCollisionEvent(enum2, &sp4_return, arg1); return sp4_return; } -void sub_18DAC(struct Vector16 *arg0, u16 *arg1, u8 *arg2) +void CheckSphealEntityCollision(struct Vector16 *arg0, u16 *arg1, u8 *arg2) { s16 i; s16 deltaX, deltaY; @@ -2768,80 +2768,80 @@ void sub_18DAC(struct Vector16 *arg0, u16 *arg1, u8 *arg2) for (i = 0; i < 2; i++) { - if (gCurrentPinballGame->unk54F[i] == 1) + if (gCurrentPinballGame->flyingEnemyCollisionType[i] == 1) { if ((arg2[0] & 0xf) != 0) continue; - deltaX = arg0->x - gCurrentPinballGame->unk570[i].x; - deltaY = arg0->y - gCurrentPinballGame->unk570[i].y; + deltaX = arg0->x - gCurrentPinballGame->flyingEnemyCollisionPos[i].x; + deltaY = arg0->y - gCurrentPinballGame->flyingEnemyCollisionPos[i].y; if ((deltaX >= 64 || deltaX < 0) || (deltaY >= 64 || deltaY < 0)) continue; - upperReadFromRom = gUnknown_08393A4C[(deltaY * 64) + deltaX] & 0xFFF0; - lowerReadFromRom = gUnknown_08393A4C[(deltaY * 64) + deltaX] & 0xF; + upperReadFromRom = gSphealFrozenIceCollisionMap[(deltaY * 64) + deltaX] & 0xFFF0; + lowerReadFromRom = gSphealFrozenIceCollisionMap[(deltaY * 64) + deltaX] & 0xF; if (lowerReadFromRom == 0) continue; - if (gCurrentPinballGame->unk388 != 0) + if (gCurrentPinballGame->ballRespawnState != 0) continue; arg1[0] = upperReadFromRom; arg2[0] = lowerReadFromRom; arg2[0] = 6; - gCurrentPinballGame->unk553[i] = 4; + gCurrentPinballGame->flyingEnemyState[i] = 4; } - else if (gCurrentPinballGame->unk54F[i] != 0) + else if (gCurrentPinballGame->flyingEnemyCollisionType[i] != 0) { if ((arg2[0] & 0xf) != 0) continue; - deltaX = arg0->x - gCurrentPinballGame->unk570[i].x; - deltaY = arg0->y - gCurrentPinballGame->unk570[i].y; + deltaX = arg0->x - gCurrentPinballGame->flyingEnemyCollisionPos[i].x; + deltaY = arg0->y - gCurrentPinballGame->flyingEnemyCollisionPos[i].y; if ((deltaX >= 64 || deltaX < 0) || (deltaY >= 64 || deltaY < 0)) continue; - upperReadFromRom = gUnknown_08391A4C[(deltaY * 64) + deltaX] & 0xFFF0; - lowerReadFromRom = gUnknown_08391A4C[(deltaY * 64) + deltaX] & 0xF; + upperReadFromRom = gSphealCrackedIceCollisionMap[(deltaY * 64) + deltaX] & 0xFFF0; + lowerReadFromRom = gSphealCrackedIceCollisionMap[(deltaY * 64) + deltaX] & 0xF; if (lowerReadFromRom == 0) continue; arg1[0] = upperReadFromRom; arg2[0] = lowerReadFromRom; arg2[0] = 6; - if (gCurrentPinballGame->unk54F[i] == 2) + if (gCurrentPinballGame->flyingEnemyCollisionType[i] == 2) { - gCurrentPinballGame->unk553[i] = 4; + gCurrentPinballGame->flyingEnemyState[i] = 4; } else { - gCurrentPinballGame->unk54D[i] = 24; + gCurrentPinballGame->flyingEnemyHitCooldown[i] = 24; } } } } -void sub_18F38(u8 arg0_enum, u16 *arg1, u16 *arg2) +void ProcessSphealCollisionEvent(u8 arg0_enum, u16 *arg1, u16 *arg2) { switch (arg0_enum) { case 2: - gCurrentPinballGame->unk530[2] = 0; - gCurrentPinballGame->unk536[2] = 2; + gCurrentPinballGame->knockdownTargetIndex[2] = 0; + gCurrentPinballGame->knockdownPhase[2] = 2; break; case 3: - gCurrentPinballGame->unk530[2] = 1; - gCurrentPinballGame->unk536[2] = 2; + gCurrentPinballGame->knockdownTargetIndex[2] = 1; + gCurrentPinballGame->knockdownPhase[2] = 2; break; case 8: - gCurrentPinballGame->unk530[2] = 0; - gCurrentPinballGame->unk536[2] = 1; - gCurrentPinballGame->unk53C[2] = 100; + gCurrentPinballGame->knockdownTargetIndex[2] = 0; + gCurrentPinballGame->knockdownPhase[2] = 1; + gCurrentPinballGame->knockdownStunTimer[2] = 100; break; case 9: - gCurrentPinballGame->unk530[2] = 1; - gCurrentPinballGame->unk536[2] = 1; - gCurrentPinballGame->unk53C[2] = 100; + gCurrentPinballGame->knockdownTargetIndex[2] = 1; + gCurrentPinballGame->knockdownPhase[2] = 1; + gCurrentPinballGame->knockdownStunTimer[2] = 100; break; case 1: case 4: diff --git a/src/data/species.h b/src/data/species.h index 0a39f8b..e3d604f 100644 --- a/src/data/species.h +++ b/src/data/species.h @@ -1,2051 +1,2051 @@ const struct PokemonSpecies gSpeciesInfo[NUM_SPECIES] = { [SPECIES_TREECKO] = { - .mainSeriesIndexNumber = 277, + .speciesIdRS = 277, .nameJapanese = __("キモリ  "), .name = "TREECKO ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_GROVYLE }, [SPECIES_GROVYLE] = { - .mainSeriesIndexNumber = 278, + .speciesIdRS = 278, .nameJapanese = __("ジュプトル"), .name = "GROVYLE ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_SCEPTILE }, [SPECIES_SCEPTILE] = { - .mainSeriesIndexNumber = 279, + .speciesIdRS = 279, .nameJapanese = __("ジュカイン"), .name = "SCEPTILE ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_TORCHIC] = { - .mainSeriesIndexNumber = 280, + .speciesIdRS = 280, .nameJapanese = __("アチャモ "), .name = "TORCHIC ", .catchIndex = 1, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_COMBUSKEN }, [SPECIES_COMBUSKEN] = { - .mainSeriesIndexNumber = 281, + .speciesIdRS = 281, .nameJapanese = __("ワカシャモ"), .name = "COMBUSKEN ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_BLAZIKEN }, [SPECIES_BLAZIKEN] = { - .mainSeriesIndexNumber = 282, + .speciesIdRS = 282, .nameJapanese = __("バシャーモ"), .name = "BLAZIKEN ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_MUDKIP] = { - .mainSeriesIndexNumber = 283, + .speciesIdRS = 283, .nameJapanese = __("ミズゴロウ"), .name = "MUDKIP ", .catchIndex = 2, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_MARSHTOMP }, [SPECIES_MARSHTOMP] = { - .mainSeriesIndexNumber = 284, + .speciesIdRS = 284, .nameJapanese = __("ヌマクロー"), .name = "MARSHTOMP ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_SWAMPERT }, [SPECIES_SWAMPERT] = { - .mainSeriesIndexNumber = 285, + .speciesIdRS = 285, .nameJapanese = __("ラグラージ"), .name = "SWAMPERT ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_POOCHYENA] = { - .mainSeriesIndexNumber = 286, + .speciesIdRS = 286, .nameJapanese = __("ポチエナ "), .name = "POOCHYENA ", .catchIndex = 3, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_MIGHTYENA }, [SPECIES_MIGHTYENA] = { - .mainSeriesIndexNumber = 287, + .speciesIdRS = 287, .nameJapanese = __("グラエナ "), .name = "MIGHTYENA ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_ZIGZAGOON] = { - .mainSeriesIndexNumber = 288, + .speciesIdRS = 288, .nameJapanese = __("ジグザグマ"), .name = "ZIGZAGOON ", .catchIndex = 4, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_LINOONE }, [SPECIES_LINOONE] = { - .mainSeriesIndexNumber = 289, + .speciesIdRS = 289, .nameJapanese = __("マッスグマ"), .name = "LINOONE ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_WURMPLE] = { - .mainSeriesIndexNumber = 290, + .speciesIdRS = 290, .nameJapanese = __("ケムッソ "), .name = "WURMPLE ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 11, .evolutionTarget = SPECIES_SILCOON }, [SPECIES_SILCOON] = { - .mainSeriesIndexNumber = 291, + .speciesIdRS = 291, .nameJapanese = __("カラサリス"), .name = "SILCOON ", .catchIndex = 5, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_BEAUTIFLY }, [SPECIES_BEAUTIFLY] = { - .mainSeriesIndexNumber = 292, + .speciesIdRS = 292, .nameJapanese = __("アゲハント"), .name = "BEAUTIFLY ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_CASCOON] = { - .mainSeriesIndexNumber = 293, + .speciesIdRS = 293, .nameJapanese = __("マユルド "), .name = "CASCOON ", .catchIndex = 6, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_DUSTOX }, [SPECIES_DUSTOX] = { - .mainSeriesIndexNumber = 294, + .speciesIdRS = 294, .nameJapanese = __("ドクケイル"), .name = "DUSTOX ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_LOTAD] = { - .mainSeriesIndexNumber = 295, + .speciesIdRS = 295, .nameJapanese = __("ハスボー "), .name = "LOTAD ", .catchIndex = 0, .eggIndex = 1, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_LOMBRE }, [SPECIES_LOMBRE] = { - .mainSeriesIndexNumber = 296, + .speciesIdRS = 296, .nameJapanese = __("ハスブレロ"), .name = "LOMBRE ", .catchIndex = 7, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 6, .evolutionTarget = SPECIES_LUDICOLO }, [SPECIES_LUDICOLO] = { - .mainSeriesIndexNumber = 297, + .speciesIdRS = 297, .nameJapanese = __("ルンパッパ"), .name = "LUDICOLO ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_SEEDOT] = { - .mainSeriesIndexNumber = 298, + .speciesIdRS = 298, .nameJapanese = __("タネボー "), .name = "SEEDOT ", .catchIndex = 0, .eggIndex = 2, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_NUZLEAF }, [SPECIES_NUZLEAF] = { - .mainSeriesIndexNumber = 299, + .speciesIdRS = 299, .nameJapanese = __("コノハナ "), .name = "NUZLEAF ", .catchIndex = 8, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 2, .evolutionTarget = SPECIES_SHIFTRY }, [SPECIES_SHIFTRY] = { - .mainSeriesIndexNumber = 300, + .speciesIdRS = 300, .nameJapanese = __("ダーテング"), .name = "SHIFTRY ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_TAILLOW] = { - .mainSeriesIndexNumber = 304, + .speciesIdRS = 304, .nameJapanese = __("スバメ  "), .name = "TAILLOW ", .catchIndex = 9, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_SWELLOW }, [SPECIES_SWELLOW] = { - .mainSeriesIndexNumber = 305, + .speciesIdRS = 305, .nameJapanese = __("オオスバメ"), .name = "SWELLOW ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_WINGULL] = { - .mainSeriesIndexNumber = 309, + .speciesIdRS = 309, .nameJapanese = __("キャモメ "), .name = "WINGULL ", .catchIndex = 10, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_PELIPPER }, [SPECIES_PELIPPER] = { - .mainSeriesIndexNumber = 310, + .speciesIdRS = 310, .nameJapanese = __("ペリッパー"), .name = "PELIPPER ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_RALTS] = { - .mainSeriesIndexNumber = 392, + .speciesIdRS = 392, .nameJapanese = __("ラルトス "), .name = "RALTS ", .catchIndex = 0, .eggIndex = 3, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_KIRLIA }, [SPECIES_KIRLIA] = { - .mainSeriesIndexNumber = 393, + .speciesIdRS = 393, .nameJapanese = __("キルリア "), .name = "KIRLIA ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_GARDEVOIR }, [SPECIES_GARDEVOIR] = { - .mainSeriesIndexNumber = 394, + .speciesIdRS = 394, .nameJapanese = __("サーナイト"), .name = "GARDEVOIR ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_SURSKIT] = { - .mainSeriesIndexNumber = 311, + .speciesIdRS = 311, .nameJapanese = __("アメタマ "), .name = "SURSKIT ", .catchIndex = 0, .eggIndex = 4, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_MASQUERAIN }, [SPECIES_MASQUERAIN] = { - .mainSeriesIndexNumber = 312, + .speciesIdRS = 312, .nameJapanese = __("アメモース"), .name = "MASQUERAIN", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_SHROOMISH] = { - .mainSeriesIndexNumber = 306, + .speciesIdRS = 306, .nameJapanese = __("キノココ "), .name = "SHROOMISH ", .catchIndex = 0, .eggIndex = 5, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_BRELOOM }, [SPECIES_BRELOOM] = { - .mainSeriesIndexNumber = 307, + .speciesIdRS = 307, .nameJapanese = __("キノガッサ"), .name = "BRELOOM ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_SLAKOTH] = { - .mainSeriesIndexNumber = 364, + .speciesIdRS = 364, .nameJapanese = __("ナマケロ "), .name = "SLAKOTH ", .catchIndex = 11, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_VIGOROTH }, [SPECIES_VIGOROTH] = { - .mainSeriesIndexNumber = 365, + .speciesIdRS = 365, .nameJapanese = __("ヤルキモノ"), .name = "VIGOROTH ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_SLAKING }, [SPECIES_SLAKING] = { - .mainSeriesIndexNumber = 366, + .speciesIdRS = 366, .nameJapanese = __("ケッキング"), .name = "SLAKING ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_ABRA] = { - .mainSeriesIndexNumber = 63, + .speciesIdRS = 63, .nameJapanese = __("ケーシィ "), .name = "ABRA ", .catchIndex = 12, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_KADABRA }, [SPECIES_KADABRA] = { - .mainSeriesIndexNumber = 64, + .speciesIdRS = 64, .nameJapanese = __("ユンゲラー"), .name = "KADABRA ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 4, .evolutionTarget = SPECIES_ALAKAZAM }, [SPECIES_ALAKAZAM] = { - .mainSeriesIndexNumber = 65, + .speciesIdRS = 65, .nameJapanese = __("フーディン"), .name = "ALAKAZAM ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_NINCADA] = { - .mainSeriesIndexNumber = 301, + .speciesIdRS = 301, .nameJapanese = __("ツチニン "), .name = "NINCADA ", .catchIndex = 13, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_NINJASK }, [SPECIES_NINJASK] = { - .mainSeriesIndexNumber = 302, + .speciesIdRS = 302, .nameJapanese = __("テッカニン"), .name = "NINJASK ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_SHEDINJA] = { - .mainSeriesIndexNumber = 303, + .speciesIdRS = 303, .nameJapanese = __("ヌケニン "), .name = "SHEDINJA ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_WHISMUR] = { - .mainSeriesIndexNumber = 370, + .speciesIdRS = 370, .nameJapanese = __("ゴニョニョ"), .name = "WHISMUR ", .catchIndex = 0, .eggIndex = 6, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_LOUDRED }, [SPECIES_LOUDRED] = { - .mainSeriesIndexNumber = 371, + .speciesIdRS = 371, .nameJapanese = __("ドゴーム "), .name = "LOUDRED ", .catchIndex = 14, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_EXPLOUD }, [SPECIES_EXPLOUD] = { - .mainSeriesIndexNumber = 372, + .speciesIdRS = 372, .nameJapanese = __("バクオング"), .name = "EXPLOUD ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_MAKUHITA] = { - .mainSeriesIndexNumber = 335, + .speciesIdRS = 335, .nameJapanese = __("マクノシタ"), .name = "MAKUHITA ", .catchIndex = 15, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_HARIYAMA }, [SPECIES_HARIYAMA] = { - .mainSeriesIndexNumber = 336, + .speciesIdRS = 336, .nameJapanese = __("ハリテヤマ"), .name = "HARIYAMA ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_GOLDEEN] = { - .mainSeriesIndexNumber = 118, + .speciesIdRS = 118, .nameJapanese = __("トサキント"), .name = "GOLDEEN ", .catchIndex = 16, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_SEAKING }, [SPECIES_SEAKING] = { - .mainSeriesIndexNumber = 119, + .speciesIdRS = 119, .nameJapanese = __("アズマオウ"), .name = "SEAKING ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_MAGIKARP] = { - .mainSeriesIndexNumber = 129, + .speciesIdRS = 129, .nameJapanese = __("コイキング"), .name = "MAGIKARP ", .catchIndex = 17, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_GYARADOS }, [SPECIES_GYARADOS] = { - .mainSeriesIndexNumber = 130, + .speciesIdRS = 130, .nameJapanese = __("ギャラドス"), .name = "GYARADOS ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_AZURILL] = { - .mainSeriesIndexNumber = 350, + .speciesIdRS = 350, .nameJapanese = __("ルリリ  "), .name = "AZURILL ", .catchIndex = 0, .eggIndex = 7, - .unk13 = 1, + .specialEggFlag = 1, .evolutionMethod = 9, .evolutionTarget = SPECIES_MARILL }, [SPECIES_MARILL] = { - .mainSeriesIndexNumber = 183, + .speciesIdRS = 183, .nameJapanese = __("マリル  "), .name = "MARILL ", .catchIndex = 18, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_AZUMARILL }, [SPECIES_AZUMARILL] = { - .mainSeriesIndexNumber = 184, + .speciesIdRS = 184, .nameJapanese = __("マリルリ "), .name = "AZUMARILL ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_GEODUDE] = { - .mainSeriesIndexNumber = 74, + .speciesIdRS = 74, .nameJapanese = __("イシツブテ"), .name = "GEODUDE ", .catchIndex = 19, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_GRAVELER }, [SPECIES_GRAVELER] = { - .mainSeriesIndexNumber = 75, + .speciesIdRS = 75, .nameJapanese = __("ゴローン "), .name = "GRAVELER ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 4, .evolutionTarget = SPECIES_GOLEM }, [SPECIES_GOLEM] = { - .mainSeriesIndexNumber = 76, + .speciesIdRS = 76, .nameJapanese = __("ゴローニャ"), .name = "GOLEM ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_NOSEPASS] = { - .mainSeriesIndexNumber = 320, + .speciesIdRS = 320, .nameJapanese = __("ノズパス "), .name = "NOSEPASS ", .catchIndex = 20, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_SKITTY] = { - .mainSeriesIndexNumber = 315, + .speciesIdRS = 315, .nameJapanese = __("エネコ  "), .name = "SKITTY ", .catchIndex = 0, .eggIndex = 8, - .unk13 = 1, + .specialEggFlag = 1, .evolutionMethod = 5, .evolutionTarget = SPECIES_DELCATTY }, [SPECIES_DELCATTY] = { - .mainSeriesIndexNumber = 316, + .speciesIdRS = 316, .nameJapanese = __("エネコロロ"), .name = "DELCATTY ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_ZUBAT] = { - .mainSeriesIndexNumber = 41, + .speciesIdRS = 41, .nameJapanese = __("ズバット "), .name = "ZUBAT ", .catchIndex = 0, .eggIndex = 9, - .unk13 = 1, + .specialEggFlag = 1, .evolutionMethod = 1, .evolutionTarget = SPECIES_GOLBAT }, [SPECIES_GOLBAT] = { - .mainSeriesIndexNumber = 42, + .speciesIdRS = 42, .nameJapanese = __("ゴルバット"), .name = "GOLBAT ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 9, .evolutionTarget = SPECIES_CROBAT }, [SPECIES_CROBAT] = { - .mainSeriesIndexNumber = 169, + .speciesIdRS = 169, .nameJapanese = __("クロバット"), .name = "CROBAT ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_TENTACOOL] = { - .mainSeriesIndexNumber = 72, + .speciesIdRS = 72, .nameJapanese = __("メノクラゲ"), .name = "TENTACOOL ", .catchIndex = 21, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_TENTACRUEL }, [SPECIES_TENTACRUEL] = { - .mainSeriesIndexNumber = 73, + .speciesIdRS = 73, .nameJapanese = __("ドククラゲ"), .name = "TENTACRUEL", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_SABLEYE] = { - .mainSeriesIndexNumber = 322, + .speciesIdRS = 322, .nameJapanese = __("ヤミラミ "), .name = "SABLEYE ", .catchIndex = 22, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_MAWILE] = { - .mainSeriesIndexNumber = 355, + .speciesIdRS = 355, .nameJapanese = __("クチート "), .name = "MAWILE ", .catchIndex = 23, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_ARON] = { - .mainSeriesIndexNumber = 382, + .speciesIdRS = 382, .nameJapanese = __("ココドラ "), .name = "ARON ", .catchIndex = 0, .eggIndex = 10, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_LAIRON }, [SPECIES_LAIRON] = { - .mainSeriesIndexNumber = 383, + .speciesIdRS = 383, .nameJapanese = __("コドラ  "), .name = "LAIRON ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_AGGRON }, [SPECIES_AGGRON] = { - .mainSeriesIndexNumber = 384, + .speciesIdRS = 384, .nameJapanese = __("ボスゴドラ"), .name = "AGGRON ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_MACHOP] = { - .mainSeriesIndexNumber = 66, + .speciesIdRS = 66, .nameJapanese = __("ワンリキー"), .name = "MACHOP ", .catchIndex = 24, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_MACHOKE }, [SPECIES_MACHOKE] = { - .mainSeriesIndexNumber = 67, + .speciesIdRS = 67, .nameJapanese = __("ゴーリキー"), .name = "MACHOKE ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 4, .evolutionTarget = SPECIES_MACHAMP }, [SPECIES_MACHAMP] = { - .mainSeriesIndexNumber = 68, + .speciesIdRS = 68, .nameJapanese = __("カイリキー"), .name = "MACHAMP ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_MEDITITE] = { - .mainSeriesIndexNumber = 356, + .speciesIdRS = 356, .nameJapanese = __("アサナン "), .name = "MEDITITE ", .catchIndex = 25, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_MEDICHAM }, [SPECIES_MEDICHAM] = { - .mainSeriesIndexNumber = 357, + .speciesIdRS = 357, .nameJapanese = __("チャーレム"), .name = "MEDICHAM ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_ELECTRIKE] = { - .mainSeriesIndexNumber = 337, + .speciesIdRS = 337, .nameJapanese = __("ラクライ "), .name = "ELECTRIKE ", .catchIndex = 26, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_MANECTRIC }, [SPECIES_MANECTRIC] = { - .mainSeriesIndexNumber = 338, + .speciesIdRS = 338, .nameJapanese = __("ライボルト"), .name = "MANECTRIC ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_PLUSLE] = { - .mainSeriesIndexNumber = 353, + .speciesIdRS = 353, .nameJapanese = __("プラスル "), .name = "PLUSLE ", .catchIndex = 0, .eggIndex = 11, - .unk13 = 1, + .specialEggFlag = 1, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_MINUN] = { - .mainSeriesIndexNumber = 354, + .speciesIdRS = 354, .nameJapanese = __("マイナン "), .name = "MINUN ", .catchIndex = 0, .eggIndex = 12, - .unk13 = 1, + .specialEggFlag = 1, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_MAGNEMITE] = { - .mainSeriesIndexNumber = 81, + .speciesIdRS = 81, .nameJapanese = __("コイル  "), .name = "MAGNEMITE ", .catchIndex = 27, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_MAGNETON }, [SPECIES_MAGNETON] = { - .mainSeriesIndexNumber = 82, + .speciesIdRS = 82, .nameJapanese = __("レアコイル"), .name = "MAGNETON ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_VOLTORB] = { - .mainSeriesIndexNumber = 100, + .speciesIdRS = 100, .nameJapanese = __("ビリリダマ"), .name = "VOLTORB ", .catchIndex = 28, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_ELECTRODE }, [SPECIES_ELECTRODE] = { - .mainSeriesIndexNumber = 101, + .speciesIdRS = 101, .nameJapanese = __("マルマイン"), .name = "ELECTRODE ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_VOLBEAT] = { - .mainSeriesIndexNumber = 386, + .speciesIdRS = 386, .nameJapanese = __("バルビート"), .name = "VOLBEAT ", .catchIndex = 29, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_ILLUMISE] = { - .mainSeriesIndexNumber = 387, + .speciesIdRS = 387, .nameJapanese = __("イルミーゼ"), .name = "ILLUMISE ", .catchIndex = 30, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_ODDISH] = { - .mainSeriesIndexNumber = 43, + .speciesIdRS = 43, .nameJapanese = __("ナゾノクサ"), .name = "ODDISH ", .catchIndex = 0, .eggIndex = 13, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_GLOOM }, [SPECIES_GLOOM] = { - .mainSeriesIndexNumber = 44, + .speciesIdRS = 44, .nameJapanese = __("クサイハナ"), .name = "GLOOM ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 11, .evolutionTarget = SPECIES_VILEPLUME }, [SPECIES_VILEPLUME] = { - .mainSeriesIndexNumber = 45, + .speciesIdRS = 45, .nameJapanese = __("ラフレシア"), .name = "VILEPLUME ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_BELLOSSOM] = { - .mainSeriesIndexNumber = 182, + .speciesIdRS = 182, .nameJapanese = __("キレイハナ"), .name = "BELLOSSOM ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_DODUO] = { - .mainSeriesIndexNumber = 84, + .speciesIdRS = 84, .nameJapanese = __("ドードー "), .name = "DODUO ", .catchIndex = 31, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_DODRIO }, [SPECIES_DODRIO] = { - .mainSeriesIndexNumber = 85, + .speciesIdRS = 85, .nameJapanese = __("ドードリオ"), .name = "DODRIO ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_ROSELIA] = { - .mainSeriesIndexNumber = 363, + .speciesIdRS = 363, .nameJapanese = __("ロゼリア "), .name = "ROSELIA ", .catchIndex = 32, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_GULPIN] = { - .mainSeriesIndexNumber = 367, + .speciesIdRS = 367, .nameJapanese = __("ゴクリン "), .name = "GULPIN ", .catchIndex = 0, .eggIndex = 14, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_SWALOT }, [SPECIES_SWALOT] = { - .mainSeriesIndexNumber = 368, + .speciesIdRS = 368, .nameJapanese = __("マルノーム"), .name = "SWALOT ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_CARVANHA] = { - .mainSeriesIndexNumber = 330, + .speciesIdRS = 330, .nameJapanese = __("キバニア "), .name = "CARVANHA ", .catchIndex = 33, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_SHARPEDO }, [SPECIES_SHARPEDO] = { - .mainSeriesIndexNumber = 331, + .speciesIdRS = 331, .nameJapanese = __("サメハダー"), .name = "SHARPEDO ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_WAILMER] = { - .mainSeriesIndexNumber = 313, + .speciesIdRS = 313, .nameJapanese = __("ホエルコ "), .name = "WAILMER ", .catchIndex = 34, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_WAILORD }, [SPECIES_WAILORD] = { - .mainSeriesIndexNumber = 314, + .speciesIdRS = 314, .nameJapanese = __("ホエルオー"), .name = "WAILORD ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_NUMEL] = { - .mainSeriesIndexNumber = 339, + .speciesIdRS = 339, .nameJapanese = __("ドンメル "), .name = "NUMEL ", .catchIndex = 35, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_CAMERUPT }, [SPECIES_CAMERUPT] = { - .mainSeriesIndexNumber = 340, + .speciesIdRS = 340, .nameJapanese = __("バクーダ "), .name = "CAMERUPT ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_SLUGMA] = { - .mainSeriesIndexNumber = 218, + .speciesIdRS = 218, .nameJapanese = __("マグマッグ"), .name = "SLUGMA ", .catchIndex = 36, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_MAGCARGO }, [SPECIES_MAGCARGO] = { - .mainSeriesIndexNumber = 219, + .speciesIdRS = 219, .nameJapanese = __("マグカルゴ"), .name = "MAGCARGO ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_TORKOAL] = { - .mainSeriesIndexNumber = 321, + .speciesIdRS = 321, .nameJapanese = __("コータス "), .name = "TORKOAL ", .catchIndex = 37, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_GRIMER] = { - .mainSeriesIndexNumber = 88, + .speciesIdRS = 88, .nameJapanese = __("ベトベター"), .name = "GRIMER ", .catchIndex = 38, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_MUK }, [SPECIES_MUK] = { - .mainSeriesIndexNumber = 89, + .speciesIdRS = 89, .nameJapanese = __("ベトベトン"), .name = "MUK ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_KOFFING] = { - .mainSeriesIndexNumber = 109, + .speciesIdRS = 109, .nameJapanese = __("ドガース "), .name = "KOFFING ", .catchIndex = 39, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_WEEZING }, [SPECIES_WEEZING] = { - .mainSeriesIndexNumber = 110, + .speciesIdRS = 110, .nameJapanese = __("マタドガス"), .name = "WEEZING ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_SPOINK] = { - .mainSeriesIndexNumber = 351, + .speciesIdRS = 351, .nameJapanese = __("バネブー "), .name = "SPOINK ", .catchIndex = 0, .eggIndex = 15, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_GRUMPIG }, [SPECIES_GRUMPIG] = { - .mainSeriesIndexNumber = 352, + .speciesIdRS = 352, .nameJapanese = __("ブーピッグ"), .name = "GRUMPIG ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_SANDSHREW] = { - .mainSeriesIndexNumber = 27, + .speciesIdRS = 27, .nameJapanese = __("サンド  "), .name = "SANDSHREW ", .catchIndex = 0, .eggIndex = 16, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_SANDSLASH }, [SPECIES_SANDSLASH] = { - .mainSeriesIndexNumber = 28, + .speciesIdRS = 28, .nameJapanese = __("サンドパン"), .name = "SANDSLASH ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_SPINDA] = { - .mainSeriesIndexNumber = 308, + .speciesIdRS = 308, .nameJapanese = __("パッチール"), .name = "SPINDA ", .catchIndex = 0, .eggIndex = 17, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_SKARMORY] = { - .mainSeriesIndexNumber = 227, + .speciesIdRS = 227, .nameJapanese = __("エアームド"), .name = "SKARMORY ", .catchIndex = 40, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_TRAPINCH] = { - .mainSeriesIndexNumber = 332, + .speciesIdRS = 332, .nameJapanese = __("ナックラー"), .name = "TRAPINCH ", .catchIndex = 0, .eggIndex = 18, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_VIBRAVA }, [SPECIES_VIBRAVA] = { - .mainSeriesIndexNumber = 333, + .speciesIdRS = 333, .nameJapanese = __("ビブラーバ"), .name = "VIBRAVA ", .catchIndex = 41, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_FLYGON }, [SPECIES_FLYGON] = { - .mainSeriesIndexNumber = 334, + .speciesIdRS = 334, .nameJapanese = __("フライゴン"), .name = "FLYGON ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_CACNEA] = { - .mainSeriesIndexNumber = 344, + .speciesIdRS = 344, .nameJapanese = __("サボネア "), .name = "CACNEA ", .catchIndex = 42, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_CACTURNE }, [SPECIES_CACTURNE] = { - .mainSeriesIndexNumber = 345, + .speciesIdRS = 345, .nameJapanese = __("ノクタス "), .name = "CACTURNE ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_SWABLU] = { - .mainSeriesIndexNumber = 358, + .speciesIdRS = 358, .nameJapanese = __("チルット "), .name = "SWABLU ", .catchIndex = 43, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_ALTARIA }, [SPECIES_ALTARIA] = { - .mainSeriesIndexNumber = 359, + .speciesIdRS = 359, .nameJapanese = __("チルタリス"), .name = "ALTARIA ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_ZANGOOSE] = { - .mainSeriesIndexNumber = 380, + .speciesIdRS = 380, .nameJapanese = __("ザングース"), .name = "ZANGOOSE ", .catchIndex = 44, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_SEVIPER] = { - .mainSeriesIndexNumber = 379, + .speciesIdRS = 379, .nameJapanese = __("ハブネーク"), .name = "SEVIPER ", .catchIndex = 45, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_LUNATONE] = { - .mainSeriesIndexNumber = 348, + .speciesIdRS = 348, .nameJapanese = __("ルナトーン"), .name = "LUNATONE ", .catchIndex = 46, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_SOLROCK] = { - .mainSeriesIndexNumber = 349, + .speciesIdRS = 349, .nameJapanese = __("ソルロック"), .name = "SOLROCK ", .catchIndex = 47, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_BARBOACH] = { - .mainSeriesIndexNumber = 323, + .speciesIdRS = 323, .nameJapanese = __("ドジョッチ"), .name = "BARBOACH ", .catchIndex = 48, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_WHISCASH }, [SPECIES_WHISCASH] = { - .mainSeriesIndexNumber = 324, + .speciesIdRS = 324, .nameJapanese = __("ナマズン "), .name = "WHISCASH ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_CORPHISH] = { - .mainSeriesIndexNumber = 326, + .speciesIdRS = 326, .nameJapanese = __("ヘイガニ "), .name = "CORPHISH ", .catchIndex = 49, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_CRAWDAUNT }, [SPECIES_CRAWDAUNT] = { - .mainSeriesIndexNumber = 327, + .speciesIdRS = 327, .nameJapanese = __("シザリガー"), .name = "CRAWDAUNT ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_BALTOY] = { - .mainSeriesIndexNumber = 318, + .speciesIdRS = 318, .nameJapanese = __("ヤジロン "), .name = "BALTOY ", .catchIndex = 50, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_CLAYDOL }, [SPECIES_CLAYDOL] = { - .mainSeriesIndexNumber = 319, + .speciesIdRS = 319, .nameJapanese = __("ネンドール"), .name = "CLAYDOL ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_LILEEP] = { - .mainSeriesIndexNumber = 388, + .speciesIdRS = 388, .nameJapanese = __("リリーラ "), .name = "LILEEP ", .catchIndex = 51, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_CRADILY }, [SPECIES_CRADILY] = { - .mainSeriesIndexNumber = 389, + .speciesIdRS = 389, .nameJapanese = __("ユレイドル"), .name = "CRADILY ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_ANORITH] = { - .mainSeriesIndexNumber = 390, + .speciesIdRS = 390, .nameJapanese = __("アノプス "), .name = "ANORITH ", .catchIndex = 52, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_ARMALDO }, [SPECIES_ARMALDO] = { - .mainSeriesIndexNumber = 391, + .speciesIdRS = 391, .nameJapanese = __("アーマルド"), .name = "ARMALDO ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_IGGLYBUFF] = { - .mainSeriesIndexNumber = 174, + .speciesIdRS = 174, .nameJapanese = __("ププリン "), .name = "IGGLYBUFF ", .catchIndex = 0, .eggIndex = 19, - .unk13 = 1, + .specialEggFlag = 1, .evolutionMethod = 9, .evolutionTarget = SPECIES_JIGGLYPUFF }, [SPECIES_JIGGLYPUFF] = { - .mainSeriesIndexNumber = 39, + .speciesIdRS = 39, .nameJapanese = __("プリン  "), .name = "JIGGLYPUFF", .catchIndex = 53, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 5, .evolutionTarget = SPECIES_WIGGLYTUFF }, [SPECIES_WIGGLYTUFF] = { - .mainSeriesIndexNumber = 40, + .speciesIdRS = 40, .nameJapanese = __("プクリン "), .name = "WIGGLYTUFF", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_FEEBAS] = { - .mainSeriesIndexNumber = 328, + .speciesIdRS = 328, .nameJapanese = __("ヒンバス "), .name = "FEEBAS ", .catchIndex = 54, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 10, .evolutionTarget = SPECIES_MILOTIC }, [SPECIES_MILOTIC] = { - .mainSeriesIndexNumber = 329, + .speciesIdRS = 329, .nameJapanese = __("ミロカロス"), .name = "MILOTIC ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_CASTFORM] = { - .mainSeriesIndexNumber = 385, + .speciesIdRS = 385, .nameJapanese = __("ポワルン "), .name = "CASTFORM ", .catchIndex = 55, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_STARYU] = { - .mainSeriesIndexNumber = 120, + .speciesIdRS = 120, .nameJapanese = __("ヒトデマン"), .name = "STARYU ", .catchIndex = 56, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 6, .evolutionTarget = SPECIES_STARMIE }, [SPECIES_STARMIE] = { - .mainSeriesIndexNumber = 121, + .speciesIdRS = 121, .nameJapanese = __("スターミー"), .name = "STARMIE ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_KECLEON] = { - .mainSeriesIndexNumber = 317, + .speciesIdRS = 317, .nameJapanese = __("カクレオン"), .name = "KECLEON ", .catchIndex = 57, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_SHUPPET] = { - .mainSeriesIndexNumber = 377, + .speciesIdRS = 377, .nameJapanese = __("カゲボウズ"), .name = "SHUPPET ", .catchIndex = 0, .eggIndex = 20, - .unk13 = 1, + .specialEggFlag = 1, .evolutionMethod = 1, .evolutionTarget = SPECIES_BANETTE }, [SPECIES_BANETTE] = { - .mainSeriesIndexNumber = 378, + .speciesIdRS = 378, .nameJapanese = __("ジュペッタ"), .name = "BANETTE ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_DUSKULL] = { - .mainSeriesIndexNumber = 361, + .speciesIdRS = 361, .nameJapanese = __("ヨマワル "), .name = "DUSKULL ", .catchIndex = 58, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_DUSCLOPS }, [SPECIES_DUSCLOPS] = { - .mainSeriesIndexNumber = 362, + .speciesIdRS = 362, .nameJapanese = __("サマヨール"), .name = "DUSCLOPS ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_TROPIUS] = { - .mainSeriesIndexNumber = 369, + .speciesIdRS = 369, .nameJapanese = __("トロピウス"), .name = "TROPIUS ", .catchIndex = 59, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_CHIMECHO] = { - .mainSeriesIndexNumber = 411, + .speciesIdRS = 411, .nameJapanese = __("チリーン "), .name = "CHIMECHO ", .catchIndex = 0, .eggIndex = 21, - .unk13 = 1, + .specialEggFlag = 1, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_ABSOL] = { - .mainSeriesIndexNumber = 376, + .speciesIdRS = 376, .nameJapanese = __("アブソル "), .name = "ABSOL ", .catchIndex = 60, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_VULPIX] = { - .mainSeriesIndexNumber = 37, + .speciesIdRS = 37, .nameJapanese = __("ロコン  "), .name = "VULPIX ", .catchIndex = 61, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 3, .evolutionTarget = SPECIES_NINETALES }, [SPECIES_NINETALES] = { - .mainSeriesIndexNumber = 38, + .speciesIdRS = 38, .nameJapanese = __("キュウコン"), .name = "NINETALES ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_PICHU] = { - .mainSeriesIndexNumber = 172, + .speciesIdRS = 172, .nameJapanese = __("ピチュー "), .name = "PICHU ", .catchIndex = 0, .eggIndex = 22, - .unk13 = 1, + .specialEggFlag = 1, .evolutionMethod = 9, .evolutionTarget = SPECIES_PIKACHU }, [SPECIES_PIKACHU] = { - .mainSeriesIndexNumber = 25, + .speciesIdRS = 25, .nameJapanese = __("ピカチュウ"), .name = "PIKACHU ", .catchIndex = 62, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 7, .evolutionTarget = SPECIES_RAICHU }, [SPECIES_RAICHU] = { - .mainSeriesIndexNumber = 26, + .speciesIdRS = 26, .nameJapanese = __("ライチュウ"), .name = "RAICHU ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_PSYDUCK] = { - .mainSeriesIndexNumber = 54, + .speciesIdRS = 54, .nameJapanese = __("コダック "), .name = "PSYDUCK ", .catchIndex = 63, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_GOLDUCK }, [SPECIES_GOLDUCK] = { - .mainSeriesIndexNumber = 55, + .speciesIdRS = 55, .nameJapanese = __("ゴルダック"), .name = "GOLDUCK ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_WYNAUT] = { - .mainSeriesIndexNumber = 360, + .speciesIdRS = 360, .nameJapanese = __("ソーナノ "), .name = "WYNAUT ", .catchIndex = 0, .eggIndex = 23, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_WOBBUFFET }, [SPECIES_WOBBUFFET] = { - .mainSeriesIndexNumber = 202, + .speciesIdRS = 202, .nameJapanese = __("ソーナンス"), .name = "WOBBUFFET ", .catchIndex = 64, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_NATU] = { - .mainSeriesIndexNumber = 177, + .speciesIdRS = 177, .nameJapanese = __("ネイティ "), .name = "NATU ", .catchIndex = 0, .eggIndex = 24, - .unk13 = 1, + .specialEggFlag = 1, .evolutionMethod = 1, .evolutionTarget = SPECIES_XATU }, [SPECIES_XATU] = { - .mainSeriesIndexNumber = 178, + .speciesIdRS = 178, .nameJapanese = __("ネイティオ"), .name = "XATU ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_GIRAFARIG] = { - .mainSeriesIndexNumber = 203, + .speciesIdRS = 203, .nameJapanese = __("キリンリキ"), .name = "GIRAFARIG ", .catchIndex = 65, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_PHANPY] = { - .mainSeriesIndexNumber = 231, + .speciesIdRS = 231, .nameJapanese = __("ゴマゾウ "), .name = "PHANPY ", .catchIndex = 0, .eggIndex = 25, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_DONPHAN }, [SPECIES_DONPHAN] = { - .mainSeriesIndexNumber = 232, + .speciesIdRS = 232, .nameJapanese = __("ドンファン"), .name = "DONPHAN ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_PINSIR] = { - .mainSeriesIndexNumber = 127, + .speciesIdRS = 127, .nameJapanese = __("カイロス "), .name = "PINSIR ", .catchIndex = 66, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_HERACROSS] = { - .mainSeriesIndexNumber = 214, + .speciesIdRS = 214, .nameJapanese = __("ヘラクロス"), .name = "HERACROSS ", .catchIndex = 67, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_RHYHORN] = { - .mainSeriesIndexNumber = 111, + .speciesIdRS = 111, .nameJapanese = __("サイホーン"), .name = "RHYHORN ", .catchIndex = 68, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_RHYDON }, [SPECIES_RHYDON] = { - .mainSeriesIndexNumber = 112, + .speciesIdRS = 112, .nameJapanese = __("サイドン "), .name = "RHYDON ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_SNORUNT] = { - .mainSeriesIndexNumber = 346, + .speciesIdRS = 346, .nameJapanese = __("ユキワラシ"), .name = "SNORUNT ", .catchIndex = 0, .eggIndex = 26, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_GLALIE }, [SPECIES_GLALIE] = { - .mainSeriesIndexNumber = 347, + .speciesIdRS = 347, .nameJapanese = __("オニゴーリ"), .name = "GLALIE ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_SPHEAL] = { - .mainSeriesIndexNumber = 341, + .speciesIdRS = 341, .nameJapanese = __("タマザラシ"), .name = "SPHEAL ", .catchIndex = 0, .eggIndex = 27, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_SEALEO }, [SPECIES_SEALEO] = { - .mainSeriesIndexNumber = 342, + .speciesIdRS = 342, .nameJapanese = __("トドグラー"), .name = "SEALEO ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_WALREIN }, [SPECIES_WALREIN] = { - .mainSeriesIndexNumber = 343, + .speciesIdRS = 343, .nameJapanese = __("トドゼルガ"), .name = "WALREIN ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_CLAMPERL] = { - .mainSeriesIndexNumber = 373, + .speciesIdRS = 373, .nameJapanese = __("パールル "), .name = "CLAMPERL ", .catchIndex = 69, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 11, .evolutionTarget = SPECIES_HUNTAIL }, [SPECIES_HUNTAIL] = { - .mainSeriesIndexNumber = 374, + .speciesIdRS = 374, .nameJapanese = __("ハンテール"), .name = "HUNTAIL ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_GOREBYSS] = { - .mainSeriesIndexNumber = 375, + .speciesIdRS = 375, .nameJapanese = __("サクラビス"), .name = "GOREBYSS ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_RELICANTH] = { - .mainSeriesIndexNumber = 381, + .speciesIdRS = 381, .nameJapanese = __("ジーランス"), .name = "RELICANTH ", .catchIndex = 70, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_CORSOLA] = { - .mainSeriesIndexNumber = 222, + .speciesIdRS = 222, .nameJapanese = __("サニーゴ "), .name = "CORSOLA ", .catchIndex = 0, .eggIndex = 28, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_CHINCHOU] = { - .mainSeriesIndexNumber = 170, + .speciesIdRS = 170, .nameJapanese = __("チョンチー"), .name = "CHINCHOU ", .catchIndex = 0, .eggIndex = 29, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_LANTURN }, [SPECIES_LANTURN] = { - .mainSeriesIndexNumber = 171, + .speciesIdRS = 171, .nameJapanese = __("ランターン"), .name = "LANTURN ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_LUVDISC] = { - .mainSeriesIndexNumber = 325, + .speciesIdRS = 325, .nameJapanese = __("ラブカス "), .name = "LUVDISC ", .catchIndex = 71, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_HORSEA] = { - .mainSeriesIndexNumber = 116, + .speciesIdRS = 116, .nameJapanese = __("タッツー "), .name = "HORSEA ", .catchIndex = 0, .eggIndex = 30, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_SEADRA }, [SPECIES_SEADRA] = { - .mainSeriesIndexNumber = 117, + .speciesIdRS = 117, .nameJapanese = __("シードラ "), .name = "SEADRA ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 4, .evolutionTarget = SPECIES_KINGDRA }, [SPECIES_KINGDRA] = { - .mainSeriesIndexNumber = 230, + .speciesIdRS = 230, .nameJapanese = __("キングドラ"), .name = "KINGDRA ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_BAGON] = { - .mainSeriesIndexNumber = 395, + .speciesIdRS = 395, .nameJapanese = __("タツベイ "), .name = "BAGON ", .catchIndex = 0, .eggIndex = 31, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_SHELGON }, [SPECIES_SHELGON] = { - .mainSeriesIndexNumber = 396, + .speciesIdRS = 396, .nameJapanese = __("コモルー "), .name = "SHELGON ", .catchIndex = 72, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_SALAMENCE }, [SPECIES_SALAMENCE] = { - .mainSeriesIndexNumber = 397, + .speciesIdRS = 397, .nameJapanese = __("ボーマンダ"), .name = "SALAMENCE ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_BELDUM] = { - .mainSeriesIndexNumber = 398, + .speciesIdRS = 398, .nameJapanese = __("ダンバル "), .name = "BELDUM ", .catchIndex = 73, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_METANG }, [SPECIES_METANG] = { - .mainSeriesIndexNumber = 399, + .speciesIdRS = 399, .nameJapanese = __("メタング "), .name = "METANG ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 1, .evolutionTarget = SPECIES_METAGROSS }, [SPECIES_METAGROSS] = { - .mainSeriesIndexNumber = 400, + .speciesIdRS = 400, .nameJapanese = __("メタグロス"), .name = "METAGROSS ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_REGIROCK] = { - .mainSeriesIndexNumber = 401, + .speciesIdRS = 401, .nameJapanese = __("レジロック"), .name = "REGIROCK ", .catchIndex = 74, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_REGICE] = { - .mainSeriesIndexNumber = 402, + .speciesIdRS = 402, .nameJapanese = __("レジアイス"), .name = "REGICE ", .catchIndex = 75, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_REGISTEEL] = { - .mainSeriesIndexNumber = 403, + .speciesIdRS = 403, .nameJapanese = __("レジスチル"), .name = "REGISTEEL ", .catchIndex = 76, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_LATIAS] = { - .mainSeriesIndexNumber = 407, + .speciesIdRS = 407, .nameJapanese = __("ラティアス"), .name = "LATIAS ", .catchIndex = 77, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_LATIOS] = { - .mainSeriesIndexNumber = 408, + .speciesIdRS = 408, .nameJapanese = __("ラティオス"), .name = "LATIOS ", .catchIndex = 78, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_KYOGRE] = { - .mainSeriesIndexNumber = 404, + .speciesIdRS = 404, .nameJapanese = __("カイオーガ"), .name = "KYOGRE ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_GROUDON] = { - .mainSeriesIndexNumber = 405, + .speciesIdRS = 405, .nameJapanese = __("グラードン"), .name = "GROUDON ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_RAYQUAZA] = { - .mainSeriesIndexNumber = 406, + .speciesIdRS = 406, .nameJapanese = __("レックウザ"), .name = "RAYQUAZA ", .catchIndex = 0, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_JIRACHI] = { - .mainSeriesIndexNumber = 409, + .speciesIdRS = 409, .nameJapanese = __("ジラーチ "), .name = "JIRACHI ", .catchIndex = 79, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_CHIKORITA] = { - .mainSeriesIndexNumber = 152, + .speciesIdRS = 152, .nameJapanese = __("チコリータ"), .name = "CHIKORITA ", .catchIndex = 80, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_CYNDAQUIL] = { - .mainSeriesIndexNumber = 155, + .speciesIdRS = 155, .nameJapanese = __("ヒノアラシ"), .name = "CYNDAQUIL ", .catchIndex = 81, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_TOTODILE] = { - .mainSeriesIndexNumber = 158, + .speciesIdRS = 158, .nameJapanese = __("ワニノコ "), .name = "TOTODILE ", .catchIndex = 82, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, [SPECIES_AERODACTYL] = { - .mainSeriesIndexNumber = 142, + .speciesIdRS = 142, .nameJapanese = __("プテラ  "), .name = "AERODACTYL", .catchIndex = 83, .eggIndex = 0, - .unk13 = 0, + .specialEggFlag = 0, .evolutionMethod = 0, .evolutionTarget = SPECIES_NONE }, diff --git a/src/debug_menu.c b/src/debug_menu.c index ed9378c..7b7ef38 100644 --- a/src/debug_menu.c +++ b/src/debug_menu.c @@ -4,35 +4,35 @@ #include "constants/bg_music.h" -extern s16 gUnknown_020306C0[]; -extern s16 gUnknown_02030750[]; -extern s16 gUnknown_02031500[]; +extern s16 gGameOverLetterXOffsets[]; +extern s16 gGameOverLetterAmplitudes[]; +extern s16 gGameOverLetterYOffsets[]; extern const u8 gDebugTextStrings[]; -extern const u8 gUnknown_08137DE8[]; -extern u8 gUnknown_08137E00[]; +extern const u8 gDebugMenuValueTemplate[]; +extern u8 gDebugMenuCursorGfx[]; extern const u8 gMainBoardBallSave_Gfx[]; extern const u8 gMainBoardBallSaveLatios_Gfx[]; extern const u8 gMainBoardBallSaveLatiosArm_Gfx[]; extern const u8 gMainBoardEndOfBall_Gfx[]; -extern const u8 gUnknown_0850558C[][0x20]; +extern const u8 gBonusSummaryCharTiles[][0x20]; extern const u8 gMainBoardGameOverText_Gfx[]; -extern const u8 gUnknown_08514F4C[]; -extern const u8 gUnknown_08514F6C[]; -extern const u8 gUnknown_08521FAC[]; -extern const u8 gUnknown_08521FCC[]; -extern const s8 gUnknown_086B0128[][3][20]; +extern const u8 gBonusStagePal_Lit[]; +extern const u8 gBonusStagePal_Dark[]; +extern const u8 gBonusClearTextPal_Lit[]; +extern const u8 gBonusClearTextPal_Dark[]; +extern const s8 gBonusSummaryTextTemplates[][3][20]; -struct Unk_86AFCB0 +struct BoardCollisionDataSet { - const s16 *unk0; + const s16 *tileData; u8 filler4[0xC]; - const u16 *unk10; + const u16 *angleData; u8 filler14[0xC]; - const u8 *unk20; + const u8 *typeData; u8 filler24[0xC]; }; -extern const struct Unk_86AFCB0 gUnknown_086AFCB0[][2]; +extern const struct BoardCollisionDataSet gBoardCollisionDataSets[][2]; // Handle debug system flags void BonusStage_HandleModeChangeFlags(void) @@ -43,29 +43,29 @@ void BonusStage_HandleModeChangeFlags(void) if (gMain.modeChangeFlags & MODE_CHANGE_BALL_SAVER) { // instantly reset ball - sub_478D8(); + BallSaverAnimation(); return; } if (gMain.modeChangeFlags & MODE_CHANGE_END_OF_BALL) { // lose life, and reset ball - sub_47670(); + EndOfBallSequence(); return; } if (gMain.modeChangeFlags & MODE_CHANGE_END_OF_GAME) { // end game - sub_474F4(); + GameOverAnimation(); return; } if (gMain.modeChangeFlags & MODE_CHANGE_DEBUG) { // debug tool (move ball position, and change ball speed) - sub_47344(); - gCurrentPinballGame->unk740 = gMain.unk10 + 1; + DebugMenu_RenderAndHandleInput(); + gCurrentPinballGame->debugMenuSelection = gMain.debugMenuCursorIndex + 1; return; } } @@ -74,70 +74,70 @@ void BonusStage_HandleModeChangeFlags(void) // However, the menu text rendering is only half-implemented--the second // menu item is for changing the ball's speed (toggling between fast and slow), // but there is no indication of happening on-screen. -void sub_47344(void) +void DebugMenu_RenderAndHandleInput(void) { int i; u8 str0[42]; u8 str1[24]; memcpy(str0, gDebugTextStrings, 42); - memcpy(str1, gUnknown_08137DE8, 24); + memcpy(str1, gDebugMenuValueTemplate, 24); for (i = 0x340; i < 0x380; i++) - gUnknown_03005C00[i] = 0; + gBG0TilemapBuffer[i] = 0; - sub_06CC(gCurrentPinballGame->ball->positionQ0.x, &str1[1], 3, 1); - sub_06CC(gCurrentPinballGame->ball->positionQ0.y, &str1[5], 3, 1); - sub_0678(&str1[0], 26, 9); - sub_06CC(gCurrentPinballGame->unk68, &str1[13], 3, 1); - sub_0678(&str1[12], 26, 18); - sub_0678(str0, 26, 0); + FormatIntToString(gCurrentPinballGame->ball->positionQ0.x, &str1[1], 3, 1); + FormatIntToString(gCurrentPinballGame->ball->positionQ0.y, &str1[5], 3, 1); + DrawTextToTilemap(&str1[0], 26, 9); + FormatIntToString(gCurrentPinballGame->cameraYViewport, &str1[13], 3, 1); + DrawTextToTilemap(&str1[12], 26, 18); + DrawTextToTilemap(str0, 26, 0); if (JOY_HELD(B_BUTTON)) { if (gMain.systemFrameCount & 0x8) - sub_0678(gUnknown_08137E00, gMain.unk10 + 26, 0); + DrawTextToTilemap(gDebugMenuCursorGfx, gMain.debugMenuCursorIndex + 26, 0); - if (JOY_NEW(DPAD_UP) && gMain.unk10 != 0) - gMain.unk10--; + if (JOY_NEW(DPAD_UP) && gMain.debugMenuCursorIndex != 0) + gMain.debugMenuCursorIndex--; - if (JOY_NEW(DPAD_DOWN) && gMain.unk10 == 0) - gMain.unk10++; + if (JOY_NEW(DPAD_DOWN) && gMain.debugMenuCursorIndex == 0) + gMain.debugMenuCursorIndex++; - if (gCurrentPinballGame->unk740 == 2) - sub_48124(); + if (gCurrentPinballGame->debugMenuSelection == 2) + DebugToggleBallSpeed(); } else { - switch (gCurrentPinballGame->unk740) + switch (gCurrentPinballGame->debugMenuSelection) { case 1: - sub_47FF8(); + DebugMoveBallPosition(); break; case 2: - sub_48124(); + DebugToggleBallSpeed(); break; } - sub_0678(gUnknown_08137E00, gMain.unk10 + 26, 0); + DrawTextToTilemap(gDebugMenuCursorGfx, gMain.debugMenuCursorIndex + 26, 0); } for (i = 0x340; i < 0x380; i++) - gUnknown_03005C00[i] += 0xC100; + gBG0TilemapBuffer[i] += 0xC100; - DmaCopy16(3, gUnknown_03005C00, (void *)0x06002000, 0x800); + DmaCopy16(3, gBG0TilemapBuffer, (void *)0x06002000, 0x800); if (JOY_HELD(A_BUTTON)) - sub_47FBC(); + ClearDebugTextDisplay(); } -void sub_474F4(void) +void GameOverAnimation(void) { int i; struct SpriteGroup *group; struct OamDataSimple *oamSimple; u16 var0; - group = gMain.unk44[42]; + group = gMain.fieldSpriteGroups[42]; if (group->available) { group->baseX = 63; @@ -153,64 +153,64 @@ void sub_474F4(void) var0 = gMain.systemFrameCount * 0x1000; for (i = 0; i < 8; i++) { - gUnknown_02031500[i] = (gUnknown_02030750[i] * Cos(var0)) / 200; + gGameOverLetterYOffsets[i] = (gGameOverLetterAmplitudes[i] * Cos(var0)) / 200; if ((gMain.systemFrameCount & 1) == 0) { - gUnknown_02030750[i]++; - if (gUnknown_02030750[i] >= 0) - gUnknown_02030750[i] = 0; + gGameOverLetterAmplitudes[i]++; + if (gGameOverLetterAmplitudes[i] >= 0) + gGameOverLetterAmplitudes[i] = 0; } } - if (gMain.unk12 == 3600) + if (gMain.animationTimer == 3600) { DmaCopy16(3, gMainBoardGameOverText_Gfx, (void *)0x06015800, 0x400); - gMain.unk44[42]->available = 1; + gMain.fieldSpriteGroups[42]->available = 1; for (i = 0; i < 8; i++) { - gUnknown_02031500[i] = 0xE0C0; - gUnknown_020306C0[i] = 0; - gUnknown_02030750[i] = (Random() % 30) + 0xFFCE; + gGameOverLetterYOffsets[i] = 0xE0C0; + gGameOverLetterXOffsets[i] = 0; + gGameOverLetterAmplitudes[i] = (Random() % 30) + 0xFFCE; } } - if (gMain.unk12) + if (gMain.animationTimer) { - gMain.unk12--; - if (gMain.unk12 == 0) - gCurrentPinballGame->unk1D = 2; + gMain.animationTimer--; + if (gMain.animationTimer == 0) + gCurrentPinballGame->fadeSubState = 2; } if (JOY_NEW(A_BUTTON)) - gCurrentPinballGame->unk1D = 2; + gCurrentPinballGame->fadeSubState = 2; } -void sub_47670(void) +void EndOfBallSequence(void) { s16 i, j; u8 var0; - if (gMain.unk12) + if (gMain.animationTimer) { - if (gMain.unk12 < 21) + if (gMain.animationTimer < 21) { - if (gMain.unk12 == 20) + if (gMain.animationTimer == 20) m4aSongNumStart(SE_UNKNOWN_0xA4); - if (gCurrentPinballGame->unkFC < 128) - gCurrentPinballGame->unkFC += 8; + if (gCurrentPinballGame->bonusSummarySlideY < 128) + gCurrentPinballGame->bonusSummarySlideY += 8; } else { - if (gCurrentPinballGame->unkFC > 0) - gCurrentPinballGame->unkFC -= 8; + if (gCurrentPinballGame->bonusSummarySlideY > 0) + gCurrentPinballGame->bonusSummarySlideY -= 8; } - sub_48190(); - gMain.unk12--; - if (gMain.unk12 == 199) + EndOfBallBonusSummary(); + gMain.animationTimer--; + if (gMain.animationTimer == 199) { - gCurrentPinballGame->unkFC = 128; + gCurrentPinballGame->bonusSummarySlideY = 128; gMain.spriteGroups[9].available = 1; gMain.spriteGroups[6].available = 1; gMain.spriteGroups[7].available = 1; @@ -218,19 +218,19 @@ void sub_47670(void) DmaCopy16(3, gMainBoardEndOfBall_Gfx, (void *)0x6015800, 0x2800); if (gMain.selectedField == FIELD_RUBY) { - DmaCopy16(3, gUnknown_08521FAC, (void *)0x050003C0, 0x20); + DmaCopy16(3, gBonusClearTextPal_Lit, (void *)0x050003C0, 0x20); } else { - DmaCopy16(3, gUnknown_08521FCC, (void *)0x050003C0, 0x20); + DmaCopy16(3, gBonusClearTextPal_Dark, (void *)0x050003C0, 0x20); } m4aSongNumStart(SE_UNKNOWN_0xA4); for (i = 0; i < 3; i++) for (j = 0; j < 20; j++) - gCurrentPinballGame->unk63C[i][j] = 0; + gCurrentPinballGame->bonusTextRevealMask[i][j] = 0; } - else if (gMain.unk12 == 1) + else if (gMain.animationTimer == 1) { gMain.spriteGroups[9].available = 0; gMain.spriteGroups[6].available = 0; @@ -241,22 +241,22 @@ void sub_47670(void) else { gMain.modeChangeFlags &= ~MODE_CHANGE_END_OF_BALL; - sub_47FBC(); + ClearDebugTextDisplay(); if (gCurrentPinballGame->numLives > 0) { - gCurrentPinballGame->unk724 = 1800; + gCurrentPinballGame->modeTimeRemaining = 1800; gCurrentPinballGame->numLives--; - gCurrentPinballGame->unk26 = 60; - gCurrentPinballGame->unk62A = 0; - gCurrentPinballGame->unk62B = 0; - gCurrentPinballGame->unk62C = 0; - gCurrentPinballGame->unk62D = 0; - gCurrentPinballGame->unk62E = 0; - gCurrentPinballGame->unk62F = 0; - sub_11C14(0); - sub_46FD4(0); - gCurrentPinballGame->unk29E = 0; - if (gCurrentPinballGame->unk13 == 3) + gCurrentPinballGame->collisionCooldownTimer = 60; + gCurrentPinballGame->bonusCatchCount = 0; + gCurrentPinballGame->bonusMonCatchCount = 0; + gCurrentPinballGame->travelModeCompletionCount = 0; + gCurrentPinballGame->catchTriggerCompletionCount = 0; + gCurrentPinballGame->bonusPikaSaverCount = 0; + gCurrentPinballGame->bonusMultiplier = 0; + InitBallState(0); + SetBoardCollisionConfig(0); + gCurrentPinballGame->boardCollisionConfigChanged = 0; + if (gCurrentPinballGame->boardState == 3) { var0 = gCurrentPinballGame->numCompletedBonusStages % 5; switch (var0) @@ -274,21 +274,21 @@ void sub_47670(void) } else { - sub_19B64(1); + RequestBoardStateTransition(1); } - gCurrentPinballGame->unkE4 = 0; + gCurrentPinballGame->activePortraitType = 0; } else { gMain.modeChangeFlags |= MODE_CHANGE_END_OF_GAME; - gMain.unk12 = 3600; + gMain.animationTimer = 3600; m4aSongNumStart(MUS_SLOTS_PRIZE); } } } -void sub_478D8(void) +void BallSaverAnimation(void) { s16 i; struct SpriteGroup *group; @@ -297,13 +297,13 @@ void sub_478D8(void) s16 mat3Scale; s16 mat4Scale; - if (gMain.unk12) + if (gMain.animationTimer) { group = &gMain.spriteGroups[5]; if (group->available) { group->baseX = 88; - group->baseY = 20 + gCurrentPinballGame->unkFE; + group->baseY = 20 + gCurrentPinballGame->ballSaverSlideY; for (i = 0; i < 2; i++) { oamSimple = &group->oam[i]; @@ -317,8 +317,8 @@ void sub_478D8(void) group = &gMain.spriteGroups[4]; if (group->available) { - group->baseX = 24 + gCurrentPinballGame->unk100 / 100; - group->baseY = gCurrentPinballGame->unkFE + 20 + gCurrentPinballGame->unk104 / 100; + group->baseX = 24 + gCurrentPinballGame->ballSaverPosX / 100; + group->baseY = gCurrentPinballGame->ballSaverSlideY + 20 + gCurrentPinballGame->ballSaverPosY / 100; oamSimple = &group->oam[0]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; @@ -330,8 +330,8 @@ void sub_478D8(void) group = &gMain.spriteGroups[3]; if (group->available) { - group->baseX = 56 + gCurrentPinballGame->unk100 / 100; - group->baseY = gCurrentPinballGame->unkFE + 52 + gCurrentPinballGame->unk104 / 100; + group->baseX = 56 + gCurrentPinballGame->ballSaverPosX / 100; + group->baseY = gCurrentPinballGame->ballSaverSlideY + 52 + gCurrentPinballGame->ballSaverPosY / 100; for (i = 0; i < 2; i++) { oamSimple = &group->oam[i]; @@ -340,38 +340,38 @@ void sub_478D8(void) } } - gMain.unk12--; - if (gMain.unk12 > 70) + gMain.animationTimer--; + if (gMain.animationTimer > 70) { - int var0 = (gMain.unk12 + 20) % 0x40; - gCurrentPinballGame->unk104 = (Sin(var0 * 0x400) * 500) / 20000; - gCurrentPinballGame->unk108 = 10; - gCurrentPinballGame->unk10A = 400; + int var0 = (gMain.animationTimer + 20) % 0x40; + gCurrentPinballGame->ballSaverPosY = (Sin(var0 * 0x400) * 500) / 20000; + gCurrentPinballGame->ballSaverVelX = 10; + gCurrentPinballGame->ballSaverVelY = 400; } else { - gCurrentPinballGame->unk108 = 400; - gCurrentPinballGame->unk10A -= 35; - gCurrentPinballGame->unk100 += gCurrentPinballGame->unk108; - gCurrentPinballGame->unk104 += gCurrentPinballGame->unk10A; + gCurrentPinballGame->ballSaverVelX = 400; + gCurrentPinballGame->ballSaverVelY -= 35; + gCurrentPinballGame->ballSaverPosX += gCurrentPinballGame->ballSaverVelX; + gCurrentPinballGame->ballSaverPosY += gCurrentPinballGame->ballSaverVelY; } - if (gMain.unk12 >= 30 && gMain.unk12 < 60) + if (gMain.animationTimer >= 30 && gMain.animationTimer < 60) { - mat4Scale = (60 - gMain.unk12) * 0x100 / 30 + 0x100; + mat4Scale = (60 - gMain.animationTimer) * 0x100 / 30 + 0x100; } else { mat4Scale = 0x100; - if (gMain.unk12 < 30) + if (gMain.animationTimer < 30) gMain.spriteGroups[4].available = 0; } - if (gMain.unk12 < 31) + if (gMain.animationTimer < 31) { - if (gMain.unk12 > 10) + if (gMain.animationTimer > 10) { - mat3Scale = ((gMain.unk12 - 10) * 248) / 20 + 8; + mat3Scale = ((gMain.animationTimer - 10) * 248) / 20 + 8; } else { @@ -381,54 +381,54 @@ void sub_478D8(void) } else { - if (gCurrentPinballGame->unkFE > 0) + if (gCurrentPinballGame->ballSaverSlideY > 0) { - gCurrentPinballGame->unkFE -= 8; - if (gCurrentPinballGame->unkFE < 0) - gCurrentPinballGame->unkFE = 0; + gCurrentPinballGame->ballSaverSlideY -= 8; + if (gCurrentPinballGame->ballSaverSlideY < 0) + gCurrentPinballGame->ballSaverSlideY = 0; } mat3Scale = 0x100; } - if (gMain.unk12 < 203) + if (gMain.animationTimer < 203) { - if (gMain.unk12 > 55) + if (gMain.animationTimer > 55) { - gCurrentPinballGame->unk10C = gCurrentPinballGame->unk108; - gCurrentPinballGame->unk10E = gCurrentPinballGame->unk10A - 90; - gCurrentPinballGame->unk110 = gCurrentPinballGame->unk100; - gCurrentPinballGame->unk114 = gCurrentPinballGame->unk104; - if (gMain.unk12 == 56) + gCurrentPinballGame->ballSaverBallVelX = gCurrentPinballGame->ballSaverVelX; + gCurrentPinballGame->ballSaverBallVelY = gCurrentPinballGame->ballSaverVelY - 90; + gCurrentPinballGame->ballSaverBallPosX = gCurrentPinballGame->ballSaverPosX; + gCurrentPinballGame->ballSaverBallPosY = gCurrentPinballGame->ballSaverPosY; + if (gMain.animationTimer == 56) m4aSongNumStart(SE_UNKNOWN_0x95); - gCurrentPinballGame->ball->positionQ8.x = (gCurrentPinballGame->unk110 / 100 + 86) << 8; - gCurrentPinballGame->ball->positionQ8.y = (gCurrentPinballGame->unkFE + 372 + gCurrentPinballGame->unk114 / 100) << 8; + gCurrentPinballGame->ball->positionQ8.x = (gCurrentPinballGame->ballSaverBallPosX / 100 + 86) << 8; + gCurrentPinballGame->ball->positionQ8.y = (gCurrentPinballGame->ballSaverSlideY + 372 + gCurrentPinballGame->ballSaverBallPosY / 100) << 8; } - else if (gMain.unk12 > 31) + else if (gMain.animationTimer > 31) { - gCurrentPinballGame->unk10E += 6; - gCurrentPinballGame->unk110 += gCurrentPinballGame->unk10C; - gCurrentPinballGame->unk114 += gCurrentPinballGame->unk10E; + gCurrentPinballGame->ballSaverBallVelY += 6; + gCurrentPinballGame->ballSaverBallPosX += gCurrentPinballGame->ballSaverBallVelX; + gCurrentPinballGame->ballSaverBallPosY += gCurrentPinballGame->ballSaverBallVelY; gMain.spriteGroups[3].available = 0; - if (gMain.unk12 == 32) + if (gMain.animationTimer == 32) { - gCurrentPinballGame->unk5FA = 0; + gCurrentPinballGame->boardEntityActive = 0; m4aSongNumStart(SE_UNKNOWN_0x96); PlayRumble(6); } - gCurrentPinballGame->ball->positionQ8.x = (gCurrentPinballGame->unk110 / 100 + 86) << 8; - gCurrentPinballGame->ball->positionQ8.y = (gCurrentPinballGame->unkFE + 372 + gCurrentPinballGame->unk114 / 100) << 8; + gCurrentPinballGame->ball->positionQ8.x = (gCurrentPinballGame->ballSaverBallPosX / 100 + 86) << 8; + gCurrentPinballGame->ball->positionQ8.y = (gCurrentPinballGame->ballSaverSlideY + 372 + gCurrentPinballGame->ballSaverBallPosY / 100) << 8; } else { - gCurrentPinballGame->unk10C = 0; - gCurrentPinballGame->unk10E += 20; - gCurrentPinballGame->unk110 += gCurrentPinballGame->unk10C; - gCurrentPinballGame->unk114 += gCurrentPinballGame->unk10E; - gCurrentPinballGame->ball->positionQ8.x = (gCurrentPinballGame->unk110 / 100 + 86) << 8; - gCurrentPinballGame->ball->positionQ8.y = (gCurrentPinballGame->unkFE + 372 + gCurrentPinballGame->unk114 / 100) << 8; + gCurrentPinballGame->ballSaverBallVelX = 0; + gCurrentPinballGame->ballSaverBallVelY += 20; + gCurrentPinballGame->ballSaverBallPosX += gCurrentPinballGame->ballSaverBallVelX; + gCurrentPinballGame->ballSaverBallPosY += gCurrentPinballGame->ballSaverBallVelY; + gCurrentPinballGame->ball->positionQ8.x = (gCurrentPinballGame->ballSaverBallPosX / 100 + 86) << 8; + gCurrentPinballGame->ball->positionQ8.y = (gCurrentPinballGame->ballSaverSlideY + 372 + gCurrentPinballGame->ballSaverBallPosY / 100) << 8; if (gCurrentPinballGame->ball->positionQ8.y > 0x17100) gCurrentPinballGame->ball->positionQ8.y = 0x17100; } @@ -453,13 +453,13 @@ void sub_478D8(void) SetMatrixScale(0x100, mat3Scale, 3); SetMatrixScale(mat4Scale, mat4Scale, 4); - if (gMain.unk12 == 203) + if (gMain.animationTimer == 203) { - gCurrentPinballGame->unk100 = 0; - gCurrentPinballGame->unk104 = 0; - gCurrentPinballGame->unk108 = 0; - gCurrentPinballGame->unk10A = 0; - gCurrentPinballGame->unkFE = 100; + gCurrentPinballGame->ballSaverPosX = 0; + gCurrentPinballGame->ballSaverPosY = 0; + gCurrentPinballGame->ballSaverVelX = 0; + gCurrentPinballGame->ballSaverVelY = 0; + gCurrentPinballGame->ballSaverSlideY = 100; gMain.spriteGroups[5].available = 1; gMain.spriteGroups[4].available = 1; gMain.spriteGroups[3].available = 1; @@ -468,21 +468,21 @@ void sub_478D8(void) DmaCopy16(3, gMainBoardBallSave_Gfx, (void *)0x06015800, 0x2400); DmaCopy16(3, gMainBoardBallSaveLatios_Gfx, (void *)0x06016800, 0x800); DmaCopy16(3, gMainBoardBallSaveLatiosArm_Gfx, (void *)0x06017000, 0xC0); - DmaCopy16(3, gUnknown_08514F4C, (void *)0x050003C0, 0x20); + DmaCopy16(3, gBonusStagePal_Lit, (void *)0x050003C0, 0x20); } else { DmaCopy16(3, gMainBoardBallSave_Gfx, (void *)0x06015800, 0x2400); - DmaCopy16(3, gUnknown_08514F6C, (void *)0x050003C0, 0x20); + DmaCopy16(3, gBonusStagePal_Dark, (void *)0x050003C0, 0x20); } - gCurrentPinballGame->unk1F = 2; - gCurrentPinballGame->unk5FA = 1; - gCurrentPinballGame->unk5F7 = 1; - gCurrentPinballGame->unk1100 = 1; + gCurrentPinballGame->ballFrozenState = 2; + gCurrentPinballGame->boardEntityActive = 1; + gCurrentPinballGame->ballUpgradeTimerFrozen = 1; + gCurrentPinballGame->startButtonDisabled = 1; m4aSongNumStart(SE_UNKNOWN_0x94); } - else if (gMain.unk12 == 0) + else if (gMain.animationTimer == 0) { gMain.spriteGroups[5].available = 0; gMain.spriteGroups[4].available = 0; @@ -491,32 +491,32 @@ void sub_478D8(void) else { gMain.modeChangeFlags &= ~MODE_CHANGE_BALL_SAVER; - gCurrentPinballGame->unk26 = 60; - sub_11C14(0); - gCurrentPinballGame->unk1F = 0; - sub_46FD4(0); - gCurrentPinballGame->unk29E = 0; + gCurrentPinballGame->collisionCooldownTimer = 60; + InitBallState(0); + gCurrentPinballGame->ballFrozenState = 0; + SetBoardCollisionConfig(0); + gCurrentPinballGame->boardCollisionConfigChanged = 0; if (gMain.selectedField == FIELD_RUBY) gCurrentPinballGame->ball->oamPriority = 3; else gCurrentPinballGame->ball->oamPriority = 1; - gCurrentPinballGame->unk5F7 = 0; - gCurrentPinballGame->unkE4 = 0; - gCurrentPinballGame->unk1100 = 0; + gCurrentPinballGame->ballUpgradeTimerFrozen = 0; + gCurrentPinballGame->activePortraitType = 0; + gCurrentPinballGame->startButtonDisabled = 0; } } -void sub_47FBC(void) +void ClearDebugTextDisplay(void) { int i; for (i = 0x340; i < 0x380; i++) - gUnknown_03005C00[i] = 0x1FF; + gBG0TilemapBuffer[i] = 0x1FF; - DmaCopy16(3, gUnknown_03005C00, (void *)0x6002000, 0x800); + DmaCopy16(3, gBG0TilemapBuffer, (void *)0x6002000, 0x800); } -void sub_47FF8(void) +void DebugMoveBallPosition(void) { int newX, newY; @@ -558,7 +558,7 @@ void sub_47FF8(void) gCurrentPinballGame->ball->velocity.y = 0; } -void sub_48124(void) +void DebugToggleBallSpeed(void) { if (JOY_NEW(DPAD_UP)) gCurrentPinballGame->ballSpeed^= 1; @@ -571,7 +571,7 @@ void sub_48124(void) } // This function updates/draws the "End of Ball Bonus" summary -void sub_48190(void) +void EndOfBallBonusSummary(void) { int i, j; s16 var0; @@ -586,7 +586,7 @@ void sub_48190(void) s16 sp14; s16 sp18; - var0 = 212 - gCurrentPinballGame->unk63A; + var0 = 212 - gCurrentPinballGame->bonusSummaryTimer; sp10 = 0; sp14 = 0; sp18 = 0; @@ -595,7 +595,7 @@ void sub_48190(void) { for (j = 0; j < 20; j++) { - s16 var1 = gCurrentPinballGame->unk678[i][j]; + s16 var1 = gCurrentPinballGame->bonusTextContent[i][j]; if (var1 == 95) var1 = 48; else if (var1 == 94) @@ -603,60 +603,60 @@ void sub_48190(void) else if (var1 > 46) var1 -= 65; - if (gCurrentPinballGame->unk63C[i][j]) + if (gCurrentPinballGame->bonusTextRevealMask[i][j]) { - DmaCopy16(3, gUnknown_0850558C[var1], (void *)0x06016000 + (j + i * 22 + 0xA0) * 0x20, 0x20); + DmaCopy16(3, gBonusSummaryCharTiles[var1], (void *)0x06016000 + (j + i * 22 + 0xA0) * 0x20, 0x20); } else { - DmaCopy16(3, gUnknown_0850558C[48], (void *)0x06016000 + (j + i * 22 + 0xA0) * 0x20, 0x20); + DmaCopy16(3, gBonusSummaryCharTiles[48], (void *)0x06016000 + (j + i * 22 + 0xA0) * 0x20, 0x20); } } } - if (gMain.unk12 < 180) + if (gMain.animationTimer < 180) { - if (gMain.unk12 > 50 && JOY_NEW(A_BUTTON)) + if (gMain.animationTimer > 50 && JOY_NEW(A_BUTTON)) { - if (gCurrentPinballGame->unk639 == 0) + if (gCurrentPinballGame->bonusSummaryComplete == 0) { - gCurrentPinballGame->unk63A = 100; + gCurrentPinballGame->bonusSummaryTimer = 100; var0 = 100; - gCurrentPinballGame->unk638 = 6; - gCurrentPinballGame->unk630 = - gCurrentPinballGame->unk62A * 500000 + - gCurrentPinballGame->unk62B * 750000 + - gCurrentPinballGame->unk62C * 500000 + - gCurrentPinballGame->unk62D * 100000 + - gCurrentPinballGame->unk62E * 100000; + gCurrentPinballGame->bonusSummaryPhase = 6; + gCurrentPinballGame->bonusSubtotal = + gCurrentPinballGame->bonusCatchCount * 500000 + + gCurrentPinballGame->bonusMonCatchCount * 750000 + + gCurrentPinballGame->travelModeCompletionCount * 500000 + + gCurrentPinballGame->catchTriggerCompletionCount * 100000 + + gCurrentPinballGame->bonusPikaSaverCount * 100000; - gCurrentPinballGame->unk634 = 0; - gMain.unk12 = 150; + gCurrentPinballGame->bonusCategoryScore = 0; + gMain.animationTimer = 150; for (j = 0; j < 20; j++) - gCurrentPinballGame->unk63C[0][j] = 1; + gCurrentPinballGame->bonusTextRevealMask[0][j] = 1; for (j = 0; j < 20; j++) - gCurrentPinballGame->unk63C[1][j] = 1; + gCurrentPinballGame->bonusTextRevealMask[1][j] = 1; for (j = 0; j < 20; j++) - gCurrentPinballGame->unk63C[2][j] = 1; + gCurrentPinballGame->bonusTextRevealMask[2][j] = 1; for (i = 0; i < 3; i++) for (j = 0; j < 20; j++) - gCurrentPinballGame->unk678[i][j] = gUnknown_086B0128[gCurrentPinballGame->unk638][i][j]; + gCurrentPinballGame->bonusTextContent[i][j] = gBonusSummaryTextTemplates[gCurrentPinballGame->bonusSummaryPhase][i][j]; sp14 = 1; } else { - gCurrentPinballGame->unk63A = 1; - gMain.unk12 = 51; + gCurrentPinballGame->bonusSummaryTimer = 1; + gMain.animationTimer = 51; var0 = 100; - if (gCurrentPinballGame->unk6B4 || gCurrentPinballGame->unk6B8) + if (gCurrentPinballGame->bonusTotalScoreLo || gCurrentPinballGame->bonusTotalScoreHi) { - gCurrentPinballGame->scoreLo += gCurrentPinballGame->unk6B4; - gCurrentPinballGame->scoreHi += gCurrentPinballGame->unk6B8; - gCurrentPinballGame->unk6B4 = 0; - gCurrentPinballGame->unk6B8 = 0; + gCurrentPinballGame->scoreLo += gCurrentPinballGame->bonusTotalScoreLo; + gCurrentPinballGame->scoreHi += gCurrentPinballGame->bonusTotalScoreHi; + gCurrentPinballGame->bonusTotalScoreLo = 0; + gCurrentPinballGame->bonusTotalScoreHi = 0; m4aSongNumStart(SE_UNKNOWN_0x91); } } @@ -664,24 +664,24 @@ void sub_48190(void) } } - if (gMain.unk12 == 185) + if (gMain.animationTimer == 185) { - gCurrentPinballGame->unk639 = 0; - gCurrentPinballGame->unk63A = 212; - gCurrentPinballGame->unk638 = 0; - gCurrentPinballGame->unk630 = 0; - gCurrentPinballGame->unk634 = 0; + gCurrentPinballGame->bonusSummaryComplete = 0; + gCurrentPinballGame->bonusSummaryTimer = 212; + gCurrentPinballGame->bonusSummaryPhase = 0; + gCurrentPinballGame->bonusSubtotal = 0; + gCurrentPinballGame->bonusCategoryScore = 0; for (i = 0; i < 3; i++) for (j = 0; j < 20; j++) - gCurrentPinballGame->unk678[i][j] = gUnknown_086B0128[gCurrentPinballGame->unk638][i][j]; + gCurrentPinballGame->bonusTextContent[i][j] = gBonusSummaryTextTemplates[gCurrentPinballGame->bonusSummaryPhase][i][j]; } - if (gCurrentPinballGame->unk63A != 0) + if (gCurrentPinballGame->bonusSummaryTimer != 0) { - if (gMain.unk12 < 150) - gMain.unk12++; + if (gMain.animationTimer < 150) + gMain.animationTimer++; - if (gCurrentPinballGame->unk638 < 5) + if (gCurrentPinballGame->bonusSummaryPhase < 5) { if (var0 < 89) { @@ -692,13 +692,13 @@ void sub_48190(void) for (i = 0; i <= var2; i++) { j = ((var0 - i * 24) % 40) / 2; - if (gCurrentPinballGame->unk638 == 0 || i != 2) + if (gCurrentPinballGame->bonusSummaryPhase == 0 || i != 2) { - if (gCurrentPinballGame->unk63C[i][j] == 0 && gCurrentPinballGame->unk678[i][j] != 95) + if (gCurrentPinballGame->bonusTextRevealMask[i][j] == 0 && gCurrentPinballGame->bonusTextContent[i][j] != 95) sp18 = 1; } - gCurrentPinballGame->unk63C[i][j] = 1; + gCurrentPinballGame->bonusTextRevealMask[i][j] = 1; } } else if (var0 >= 148) @@ -711,20 +711,20 @@ void sub_48190(void) for (i = 0; i <= var2; i++) { j = ((var0 - i * 24) % 40) / 2; - gCurrentPinballGame->unk63C[i][j] = 0; + gCurrentPinballGame->bonusTextRevealMask[i][j] = 0; } } - if (gCurrentPinballGame->unk63A == 1) + if (gCurrentPinballGame->bonusSummaryTimer == 1) { - gCurrentPinballGame->unk63A = 212; - gCurrentPinballGame->unk638++; + gCurrentPinballGame->bonusSummaryTimer = 212; + gCurrentPinballGame->bonusSummaryPhase++; for (i = 0; i < 3; i++) for (j = 0; j < 20; j++) - gCurrentPinballGame->unk678[i][j] = gUnknown_086B0128[gCurrentPinballGame->unk638][i][j]; + gCurrentPinballGame->bonusTextContent[i][j] = gBonusSummaryTextTemplates[gCurrentPinballGame->bonusSummaryPhase][i][j]; } } - else if (gCurrentPinballGame->unk638 == 5) + else if (gCurrentPinballGame->bonusSummaryPhase == 5) { if (var0 < 17) { @@ -735,18 +735,18 @@ void sub_48190(void) else { sp10 = 0; - gCurrentPinballGame->unk63A = 212; - gCurrentPinballGame->unk638++; + gCurrentPinballGame->bonusSummaryTimer = 212; + gCurrentPinballGame->bonusSummaryPhase++; for (j = 0; j < 20; j++) - gCurrentPinballGame->unk63C[0][j] = 1; + gCurrentPinballGame->bonusTextRevealMask[0][j] = 1; for (j = 0; j < 20; j++) - gCurrentPinballGame->unk63C[1][j] = 0; + gCurrentPinballGame->bonusTextRevealMask[1][j] = 0; for (j = 0; j < 20; j++) - gCurrentPinballGame->unk63C[2][j] = 0; + gCurrentPinballGame->bonusTextRevealMask[2][j] = 0; for (i = 0; i < 3; i++) for (j = 0; j < 20; j++) - gCurrentPinballGame->unk678[i][j] = gUnknown_086B0128[gCurrentPinballGame->unk638][i][j]; + gCurrentPinballGame->bonusTextContent[i][j] = gBonusSummaryTextTemplates[gCurrentPinballGame->bonusSummaryPhase][i][j]; } } else @@ -762,11 +762,11 @@ void sub_48190(void) j = ((var0 - i * 24) % 40) / 2; if (i != 0) { - if (gCurrentPinballGame->unk63C[i][j] == 0 && gCurrentPinballGame->unk678[i][j] != 95) + if (gCurrentPinballGame->bonusTextRevealMask[i][j] == 0 && gCurrentPinballGame->bonusTextContent[i][j] != 95) sp18 = 1; } - gCurrentPinballGame->unk63C[i][j] = 1; + gCurrentPinballGame->bonusTextRevealMask[i][j] = 1; } } } @@ -777,28 +777,28 @@ void sub_48190(void) value = 0; multiplier = 0; - if (gCurrentPinballGame->unk63A == 212 || sp14 != 0) + if (gCurrentPinballGame->bonusSummaryTimer == 212 || sp14 != 0) { - switch (gCurrentPinballGame->unk638) + switch (gCurrentPinballGame->bonusSummaryPhase) { case 0: - value = gCurrentPinballGame->unk62A; + value = gCurrentPinballGame->bonusCatchCount; multiplier = 500000; break; case 1: - value = gCurrentPinballGame->unk62B; + value = gCurrentPinballGame->bonusMonCatchCount; multiplier = 750000; break; case 2: - value = gCurrentPinballGame->unk62C; + value = gCurrentPinballGame->travelModeCompletionCount; multiplier = 500000; break; case 3: - value = gCurrentPinballGame->unk62D; + value = gCurrentPinballGame->catchTriggerCompletionCount; multiplier = 100000; break; case 4: - value = gCurrentPinballGame->unk62E; + value = gCurrentPinballGame->bonusPikaSaverCount; multiplier = 100000; break; case 5: @@ -809,7 +809,7 @@ void sub_48190(void) break; } - if (gCurrentPinballGame->unk638 < 5) + if (gCurrentPinballGame->bonusSummaryPhase < 5) { for (i = 0; i < 10; i++) sp0[i] = 0; @@ -818,12 +818,12 @@ void sub_48190(void) sp0[0] = value % 10; for (i = 2; i > 0 && (sp0[i] <= 0 || sp0[i] == 10); i--) {} for (j = 0; j <= i; j++) - gCurrentPinballGame->unk678[0][19 - j] = sp0[j] + 27; + gCurrentPinballGame->bonusTextContent[0][19 - j] = sp0[j] + 27; for (i = 0; i < 10; i++) sp0[i] = 0; value = value * multiplier; - gCurrentPinballGame->unk634 = value; + gCurrentPinballGame->bonusCategoryScore = value; sp0[7] = value / 10000000; sp0[6] = ((value % 10000000) / 1000000) + 10; sp0[5] = (value % 1000000) / 100000; @@ -834,11 +834,11 @@ void sub_48190(void) sp0[0] = value % 10; for (i = 7; i > 0 && (sp0[i] <= 0 || sp0[i] == 10); i--) {} for (j = 0; j <= i; j++) - gCurrentPinballGame->unk678[1][19 - j] = sp0[j] + 27; + gCurrentPinballGame->bonusTextContent[1][19 - j] = sp0[j] + 27; for (i = 0; i < 10; i++) sp0[i] = 0; - value = gCurrentPinballGame->unk630; + value = gCurrentPinballGame->bonusSubtotal; sp0[8] = value / 100000000; sp0[7] = (value % 100000000) / 10000000; sp0[6] = ((value % 10000000) / 1000000) + 10; @@ -850,13 +850,13 @@ void sub_48190(void) sp0[0] = value % 10; for (i = 8; i > 0 && (sp0[i] <= 0 || sp0[i] == 10); i--) {} for (j = 0; j <= i; j++) - gCurrentPinballGame->unk678[2][19 - j] = sp0[j] + 27; + gCurrentPinballGame->bonusTextContent[2][19 - j] = sp0[j] + 27; } - else if (gCurrentPinballGame->unk638 == 5) + else if (gCurrentPinballGame->bonusSummaryPhase == 5) { for (i = 0; i < 10; i++) sp0[i] = 0; - value = gCurrentPinballGame->unk630; + value = gCurrentPinballGame->bonusSubtotal; sp0[8] = value / 100000000; sp0[7] = (value % 100000000) / 10000000; sp0[6] = ((value % 10000000) / 1000000) + 10; @@ -868,13 +868,13 @@ void sub_48190(void) sp0[0] = value % 10; for (i = 8; i > 0 && (sp0[i] <= 0 || sp0[i] == 10); i--) {} for (j = 0; j <= i; j++) - gCurrentPinballGame->unk678[2][19 - j] = sp0[j] + 27; + gCurrentPinballGame->bonusTextContent[2][19 - j] = sp0[j] + 27; } else { for (i = 0; i < 10; i++) sp0[i] = 0; - value = gCurrentPinballGame->unk630; + value = gCurrentPinballGame->bonusSubtotal; sp0[8] = value / 100000000; sp0[7] = (value % 100000000) / 10000000; sp0[6] = ((value % 10000000) / 1000000) + 10; @@ -886,11 +886,11 @@ void sub_48190(void) sp0[0] = value % 10; for (i = 8; i > 0 && (sp0[i] <= 0 || sp0[i] == 10); i--) {} for (j = 0; j <= i; j++) - gCurrentPinballGame->unk678[0][19 - j] = sp0[j] + 27; + gCurrentPinballGame->bonusTextContent[0][19 - j] = sp0[j] + 27; for (i = 0; i < 10; i++) sp0[i] = 0; - value = gCurrentPinballGame->unk62F; + value = gCurrentPinballGame->bonusMultiplier; sp0[5] = (value % 1000000) / 100000; sp0[4] = (value % 100000) / 10000; sp0[3] = ((value % 10000) / 1000) + 10; @@ -899,21 +899,21 @@ void sub_48190(void) sp0[0] = value % 10; for (i = 5; i > 0 && (sp0[i] <= 0 || sp0[i] == 10); i--) {} for (j = 0; j <= i; j++) - gCurrentPinballGame->unk678[1][19 - j] = sp0[j] + 27; + gCurrentPinballGame->bonusTextContent[1][19 - j] = sp0[j] + 27; for (i = 0; i < 11; i++) sp0[i] = 0; value = 0; var4 = 0; - while (gCurrentPinballGame->unk62F != 0) + while (gCurrentPinballGame->bonusMultiplier != 0) { - value += gCurrentPinballGame->unk630; + value += gCurrentPinballGame->bonusSubtotal; if (value / 200000000 > 0) { value -= 200000000; var4 += 2; } - gCurrentPinballGame->unk62F--; + gCurrentPinballGame->bonusMultiplier--; } if (value / 100000000 > 0) @@ -922,8 +922,8 @@ void sub_48190(void) var4++; } - gCurrentPinballGame->unk6B8 = var4; - gCurrentPinballGame->unk6B4 = value; + gCurrentPinballGame->bonusTotalScoreHi = var4; + gCurrentPinballGame->bonusTotalScoreLo = value; sp0[10] = (var4 % 1000) / 100; sp0[9] = ((var4 % 100) / 10) + 10; sp0[8] = var4 % 10; @@ -937,34 +937,34 @@ void sub_48190(void) sp0[0] = value % 10; for (i = 10; i > 0 && (sp0[i] <= 0 || sp0[i] == 10); i--) {} for (j = 0; j <= i; j++) - gCurrentPinballGame->unk678[2][19 - j] = sp0[j] + 27; + gCurrentPinballGame->bonusTextContent[2][19 - j] = sp0[j] + 27; } } if (var0 >= 90 && var0 <= 140) { - if (gCurrentPinballGame->unk638 < 5) + if (gCurrentPinballGame->bonusSummaryPhase < 5) { - if (gCurrentPinballGame->unk634 != 0) - gCurrentPinballGame->unk63A = 100; + if (gCurrentPinballGame->bonusCategoryScore != 0) + gCurrentPinballGame->bonusSummaryTimer = 100; if ((gMain.systemFrameCount & 1) == 0) { - if (gCurrentPinballGame->unk634 >= 200000) + if (gCurrentPinballGame->bonusCategoryScore >= 200000) { - gCurrentPinballGame->unk634 -= 200000; - gCurrentPinballGame->unk630 += 200000; + gCurrentPinballGame->bonusCategoryScore -= 200000; + gCurrentPinballGame->bonusSubtotal += 200000; m4aSongNumStart(SE_UNKNOWN_0x91); } - else if (gCurrentPinballGame->unk634 != 0) + else if (gCurrentPinballGame->bonusCategoryScore != 0) { - gCurrentPinballGame->unk630 += gCurrentPinballGame->unk634; - gCurrentPinballGame->unk634 = 0; + gCurrentPinballGame->bonusSubtotal += gCurrentPinballGame->bonusCategoryScore; + gCurrentPinballGame->bonusCategoryScore = 0; m4aSongNumStart(SE_UNKNOWN_0x91); } } - value = gCurrentPinballGame->unk630; + value = gCurrentPinballGame->bonusSubtotal; sp0[8] = value / 100000000; sp0[7] = (value % 100000000) / 10000000; sp0[6] = ((value % 10000000) / 1000000) + 10; @@ -976,33 +976,33 @@ void sub_48190(void) sp0[0] = value % 10; for (i = 8; i > 0 && (sp0[i] <= 0 || sp0[i] == 10); i--) {} for (j = 0; j <= i; j++) - gCurrentPinballGame->unk678[2][19 - j] = sp0[j] + 27; + gCurrentPinballGame->bonusTextContent[2][19 - j] = sp0[j] + 27; } - else if (gCurrentPinballGame->unk638 == 6) + else if (gCurrentPinballGame->bonusSummaryPhase == 6) { - gCurrentPinballGame->unk639 = 1; - if (gCurrentPinballGame->unk6B4 || gCurrentPinballGame->unk6B8) - gCurrentPinballGame->unk63A = 100; + gCurrentPinballGame->bonusSummaryComplete = 1; + if (gCurrentPinballGame->bonusTotalScoreLo || gCurrentPinballGame->bonusTotalScoreHi) + gCurrentPinballGame->bonusSummaryTimer = 100; if ((gMain.systemFrameCount & 1) == 0) { - if (gCurrentPinballGame->unk6B4 >= 200000) + if (gCurrentPinballGame->bonusTotalScoreLo >= 200000) { - gCurrentPinballGame->unk6B4 -= 200000; + gCurrentPinballGame->bonusTotalScoreLo -= 200000; gCurrentPinballGame->scoreLo += 200000; m4aSongNumStart(SE_UNKNOWN_0x91); } - else if (gCurrentPinballGame->unk6B8 != 0) + else if (gCurrentPinballGame->bonusTotalScoreHi != 0) { - gCurrentPinballGame->unk6B8--; - gCurrentPinballGame->unk6B4 += 99800000; + gCurrentPinballGame->bonusTotalScoreHi--; + gCurrentPinballGame->bonusTotalScoreLo += 99800000; gCurrentPinballGame->scoreLo += 200000; m4aSongNumStart(SE_UNKNOWN_0x91); } - else if (gCurrentPinballGame->unk6B4 != 0) + else if (gCurrentPinballGame->bonusTotalScoreLo != 0) { - gCurrentPinballGame->scoreLo += gCurrentPinballGame->unk6B4; - gCurrentPinballGame->unk6B4 = 0; + gCurrentPinballGame->scoreLo += gCurrentPinballGame->bonusTotalScoreLo; + gCurrentPinballGame->bonusTotalScoreLo = 0; m4aSongNumStart(SE_UNKNOWN_0x91); } } @@ -1010,10 +1010,10 @@ void sub_48190(void) for (i = 0; i < 11; i++) sp0[i] = 0; for (j = 0; j < 20; j++) - gCurrentPinballGame->unk678[2][j] = gUnknown_086B0128[gCurrentPinballGame->unk638][2][j]; + gCurrentPinballGame->bonusTextContent[2][j] = gBonusSummaryTextTemplates[gCurrentPinballGame->bonusSummaryPhase][2][j]; - var4 = gCurrentPinballGame->unk6B8; - value = gCurrentPinballGame->unk6B4; + var4 = gCurrentPinballGame->bonusTotalScoreHi; + value = gCurrentPinballGame->bonusTotalScoreLo; sp0[10] = (var4 % 1000) / 100; sp0[9] = ((var4 % 100) / 10) + 10; sp0[8] = var4 % 10; @@ -1027,18 +1027,18 @@ void sub_48190(void) sp0[0] = value % 10; for (i = 10; i > 0 && (sp0[i] <= 0 || sp0[i] == 10); i--) {} for (j = 0; j <= i; j++) - gCurrentPinballGame->unk678[2][19 - j] = sp0[j] + 27; + gCurrentPinballGame->bonusTextContent[2][19 - j] = sp0[j] + 27; } } - if (gCurrentPinballGame->unk63A) - gCurrentPinballGame->unk63A--; + if (gCurrentPinballGame->bonusSummaryTimer) + gCurrentPinballGame->bonusSummaryTimer--; group = &gMain.spriteGroups[9]; if (group->available) { group->baseX = 120; - group->baseY = gCurrentPinballGame->unkFC + 38; + group->baseY = gCurrentPinballGame->bonusSummarySlideY + 38; for (j = 0; j < 14; j++) { oamSimple = &group->oam[j]; @@ -1050,7 +1050,7 @@ void sub_48190(void) { group = &gMain.spriteGroups[6 + i]; group->baseX = 104; - group->baseY = 64 + i * 16 + gCurrentPinballGame->unkFC + sp10; + group->baseY = 64 + i * 16 + gCurrentPinballGame->bonusSummarySlideY + sp10; for (j = 0; j < 5; j++) { oamSimple = &group->oam[j]; diff --git a/src/ereader.c b/src/ereader.c index 7838bf0..d0c9fa0 100644 --- a/src/ereader.c +++ b/src/ereader.c @@ -9,42 +9,42 @@ #include "variables.h" extern StateFunc gEReaderStateFuncs[11]; -extern s8 gUnknown_0202C604; -extern s8 gUnknown_0202A580; -extern s8 gUnknown_0202C5A4; -extern s8 gUnknown_0202AD90; +extern s8 gEReaderTextCharIndex; +extern s8 gEReaderTextAnimDelay; +extern s8 gEReaderTextBlinkToggle; +extern s8 gEReaderTextPageIndex; -extern s8 gUnknown_0202A58C; -extern s8 gUnknown_0202C584; -extern s8 gUnknown_0202BEC0; -extern s8 gUnknown_0201B174; -extern s16 gUnknown_0202C5A0; -extern s16 gUnknown_0201A44C; -extern u8 gUnknown_0200282C; -extern u8 gUnknown_0200282D; -extern s8 gUnknown_0202BEF8; -extern u8 gUnknown_0201B124; -extern u32 gUnknown_0202ADD0; -extern s16 gUnknown_0202C5F0[]; -extern u16 gUnknown_0201A4D0[][2]; -extern u32 gUnknown_0202BDF0; -extern u8 gUnknown_0201C1AC; -extern u8 gUnknown_0202ADDC; +extern s8 gEReaderStatusSpriteIndex; +extern s8 gEReaderStatusSpriteVisible; +extern s8 gEReaderHeaderSpriteIndex; +extern s8 gEReaderTransitionStep; +extern s16 gEReaderTransitionTimer; +extern s16 gEReaderGeneralTimer; +extern u8 gEReaderUnused1; +extern u8 gEReaderUnused2; +extern s8 gEReaderExitTargetState; +extern u8 gLinkExchangeStep; +extern u32 gLinkStatusResult; +extern s16 gLinkSendBuffer[]; +extern u16 gLinkRecvBuffer[][2]; +extern u32 gLinkConnectionState; +extern u8 gLinkPlayerCount; +extern u8 gLinkNegotiationFlags; extern s16 gEReaderCardIndex; -extern s16 gUnknown_0201A444; +extern s16 gLinkTimeoutCounter; -extern s8 gUnknown_086A551A[10]; -extern s8 gUnknown_086A5528[10]; -extern u8 gUnknown_086A5536[NUM_EREADER_CARDS + 1]; +extern s8 gEReaderTextLengths[10]; +extern s8 gEReaderTextHasNextPage[10]; +extern u8 gEReaderCardStartPages[NUM_EREADER_CARDS + 1]; extern u8 gPokedexSprites_Gfx[]; -extern u8 gUnknown_08081D20[]; -extern u8 gUnknown_0807DD00[]; -extern u8 gUnknown_0807D000[]; +extern u8 gEReaderBackground_Pals[]; +extern u8 gEReaderText_Tilemap[]; +// extern u8 gUnknown_0807D000[]; // dead declaration, never referenced extern u8 gPokedexSprites_Pals[]; -extern u16 gUnknown_03000000[]; +extern u16 gTempGfxBuffer[]; extern u8 gEReaderBackground_Gfx[]; -extern u8 gUnknown_0807FD00[]; -extern s16 gUnknown_086A550C[]; +extern u8 gEReaderOverlay_Tilemap[]; +extern s16 gEReaderTransitionStepDurations[]; enum EReaderState{ EREADER_STATE_0_LOAD_GRAPHICS = 0, @@ -65,7 +65,7 @@ void EReaderMain(void) void LoadEReaderGraphics(void) { - ResetSomeGraphicsRelatedStuff(); + ResetDisplayState(); REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP | DISPCNT_FORCED_BLANK; REG_BG0CNT = BGCNT_CHARBASE(1); REG_DISPCNT |= DISPCNT_BG0_ON; @@ -76,109 +76,109 @@ void LoadEReaderGraphics(void) gMain.bgOffsets[0].yOffset = (0xffe8 - 0x48); gMain.dispcntBackup = REG_DISPCNT; - DmaCopy16(3, gUnknown_08081D20, (void*) PLTT, 0x40); + DmaCopy16(3, gEReaderBackground_Pals, (void*) PLTT, 0x40); DmaCopy16(3, gPokedexBackground_Pals + 0x80, (void*) PLTT + 0x40, 0x20); - DmaCopy16(3, gEReaderBackground_Gfx, gUnknown_03000000, 0x3000); - DmaCopy16(3, gUnknown_0807DD00, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE); - DmaCopy16(3, gUnknown_0807FD00, (void *)BG_SCREEN_ADDR(1), BG_SCREEN_SIZE); + DmaCopy16(3, gEReaderBackground_Gfx, gTempGfxBuffer, 0x3000); + DmaCopy16(3, gEReaderText_Tilemap, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE); + DmaCopy16(3, gEReaderOverlay_Tilemap, (void *)BG_SCREEN_ADDR(1), BG_SCREEN_SIZE); DmaCopy16(3, gPokedexSprites_Pals, (void *)OBJ_PLTT, 0xC0); DmaCopy16(3, gPokedexSprites_Gfx, (void *)OBJ_VRAM0, 0x6C20); - sub_2DF0(); - gUnknown_0202C604 = 0; - gUnknown_0202A580 = 0; - gUnknown_0202C5A4 = 0; - gUnknown_0202AD90 = 0; - sub_377C(); + InitEReaderTextState(); + gEReaderTextCharIndex = 0; + gEReaderTextAnimDelay = 0; + gEReaderTextBlinkToggle = 0; + gEReaderTextPageIndex = 0; + ClearEReaderTextRows(); - DmaCopy16(3, gUnknown_03000000, (void *)VRAM + 0x4000, 0x3000); + DmaCopy16(3, gTempGfxBuffer, (void *)VRAM + 0x4000, 0x3000); - sub_394C(); + UpdateEReaderSprites(); m4aSongNumStart(MUS_UNKNOWN_0x5); - sub_0CBC(); - sub_024C(); + EnableVBlankInterrupts(); + FadeInScreen(); gMain.subState = EREADER_STATE_1; } -void sub_2DF0(void) +void InitEReaderTextState(void) { - gUnknown_0202A58C = 0; - gUnknown_0202C584 = 0; - gUnknown_0202BEC0 = 4; - gUnknown_0201B174 = 0; - gUnknown_0202C5A0 = 0; - gUnknown_0201A44C = 0; - gUnknown_0202BEF8 = STATE_INTRO; - gUnknown_0200282C = 0; - gUnknown_0200282D = 0; + gEReaderStatusSpriteIndex = 0; + gEReaderStatusSpriteVisible = 0; + gEReaderHeaderSpriteIndex = 4; + gEReaderTransitionStep = 0; + gEReaderTransitionTimer = 0; + gEReaderGeneralTimer = 0; + gEReaderExitTargetState = STATE_INTRO; + gEReaderUnused1 = 0; + gEReaderUnused2 = 0; } void Ereader_State1_2E40(void) { - if (gUnknown_0202C604 <= gUnknown_086A551A[gUnknown_0202AD90]) { - gUnknown_0202A580++; - if (2 < gUnknown_0202A580) { - gUnknown_0202A580 = 0; - sub_3828(gUnknown_0202AD90,gUnknown_0202C604); - gUnknown_0202C604++; + if (gEReaderTextCharIndex <= gEReaderTextLengths[gEReaderTextPageIndex]) { + gEReaderTextAnimDelay++; + if (2 < gEReaderTextAnimDelay) { + gEReaderTextAnimDelay = 0; + DrawEReaderTextCharacter(gEReaderTextPageIndex,gEReaderTextCharIndex); + gEReaderTextCharIndex++; } } else { - gUnknown_0202A580++; - if (6 < gUnknown_0202A580) { - gUnknown_0202A580 = 0; - if (gUnknown_0202C5A4 == 0) { - sub_38A0(gUnknown_086A551A[gUnknown_0202AD90],0x3a80); + gEReaderTextAnimDelay++; + if (6 < gEReaderTextAnimDelay) { + gEReaderTextAnimDelay = 0; + if (gEReaderTextBlinkToggle == 0) { + BlinkEReaderTextCursor(gEReaderTextLengths[gEReaderTextPageIndex],0x3a80); } else { - sub_38A0(gUnknown_086A551A[gUnknown_0202AD90],0); + BlinkEReaderTextCursor(gEReaderTextLengths[gEReaderTextPageIndex],0); } - gUnknown_0202C5A4 = 1 - gUnknown_0202C5A4; + gEReaderTextBlinkToggle = 1 - gEReaderTextBlinkToggle; } } if (JOY_NEW(A_BUTTON)) { - if (gUnknown_0202C604 <= gUnknown_086A551A[gUnknown_0202AD90]) { - sub_37B4(gUnknown_0202AD90); - gUnknown_0202C604 = gUnknown_086A551A[gUnknown_0202AD90] + 1; + if (gEReaderTextCharIndex <= gEReaderTextLengths[gEReaderTextPageIndex]) { + DrawEReaderTextPage(gEReaderTextPageIndex); + gEReaderTextCharIndex = gEReaderTextLengths[gEReaderTextPageIndex] + 1; } - else if (gUnknown_086A5528[gUnknown_0202AD90] == 0) { + else if (gEReaderTextHasNextPage[gEReaderTextPageIndex] == 0) { gMain.subState = EREADER_STATE_2; } else { - sub_377C(); - gUnknown_0202C604 = 0; - gUnknown_0202A580 = 0; - gUnknown_0202C5A4 = 0; - gUnknown_0202AD90++; + ClearEReaderTextRows(); + gEReaderTextCharIndex = 0; + gEReaderTextAnimDelay = 0; + gEReaderTextBlinkToggle = 0; + gEReaderTextPageIndex++; } } else if (JOY_NEW(B_BUTTON)) { m4aSongNumStart(SE_MENU_CANCEL); - gUnknown_0202BEF8 = STATE_TITLE; + gEReaderExitTargetState = STATE_TITLE; gMain.subState = EREADER_STATE_8; } - sub_394C(); - DmaCopy16(3, gUnknown_03000000, (void*) VRAM + 0x4000, 0x3000); + UpdateEReaderSprites(); + DmaCopy16(3, gTempGfxBuffer, (void*) VRAM + 0x4000, 0x3000); } void Ereader_State2_2FC0(void) { - gUnknown_0202C5A0++; - if (gUnknown_0202C5A0 > gUnknown_086A550C[gUnknown_0201B174]) { - gUnknown_0202C5A0 = 0; - gUnknown_0201B174++; - if (gUnknown_0201B174 == 6) { - sub_19B4(); - sub_3C1C(); - gUnknown_0201B124 = 0; - gUnknown_0202C584 = 1; + gEReaderTransitionTimer++; + if (gEReaderTransitionTimer > gEReaderTransitionStepDurations[gEReaderTransitionStep]) { + gEReaderTransitionTimer = 0; + gEReaderTransitionStep++; + if (gEReaderTransitionStep == 6) { + InitLinkHardware(); + InitEReaderLinkBuffers(); + gLinkExchangeStep = 0; + gEReaderStatusSpriteVisible = 1; m4aSongNumStart(SE_TRIGGER_BUTTON_HIT); gMain.subState = EREADER_STATE_3; } } - gUnknown_0202A58C = 0; - gUnknown_0202BEC0 = gUnknown_0201B174 + 4; - sub_3AB4(); + gEReaderStatusSpriteIndex = 0; + gEReaderHeaderSpriteIndex = gEReaderTransitionStep + 4; + UpdateEReaderSpritesViaOam(); } void Ereader_State3_304C(void) @@ -186,22 +186,22 @@ void Ereader_State3_304C(void) s32 index; u16 temp; - sub_3AB4(); + UpdateEReaderSpritesViaOam(); if (JOY_NEW(B_BUTTON)) { - sub_2568(); + ResetSerialAndInterrupts(); DisableSerial(); - sub_02B4(); + FadeOutScreen(); m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); gMain.subState = 0; } - gUnknown_0202ADD0 = LinkMain1(&gUnknown_0202BEC8, gUnknown_0202C5F0, gUnknown_0201A4D0); - gUnknown_0202BDF0 = gUnknown_0202ADD0 & 3; - gUnknown_0201C1AC = ((gUnknown_0202ADD0 & 0x1c) >> 2); - gUnknown_0202ADDC = ((gUnknown_0202ADD0 & 0xe00) >> 9); - if (((gUnknown_0202ADD0 & 0x40) != 0) && (gUnknown_0202BDF0 < 2)) { - sub_3C78(); - if (((gUnknown_0202ADD0 & 0x100) == 0) && (sub_3CD8() == -1)) { + gLinkStatusResult = LinkMain1(&gLinkAdvanceState, gLinkSendBuffer, gLinkRecvBuffer); + gLinkConnectionState = gLinkStatusResult & 3; + gLinkPlayerCount = ((gLinkStatusResult & 0x1c) >> 2); + gLinkNegotiationFlags = ((gLinkStatusResult & 0xe00) >> 9); + if (((gLinkStatusResult & 0x40) != 0) && (gLinkConnectionState < 2)) { + PrepareEReaderLinkSendCmd(); + if (((gLinkStatusResult & 0x100) == 0) && (ProcessEReaderLinkReceive() == -1)) { gEReaderCardIndex = GetEReaderCardIndex(); if ((gEReaderCardIndex != -1) && (NUM_EREADER_CARDS > gEReaderCardIndex)) { for(index = 0; index < NUM_EREADER_CARDS; index++) @@ -209,36 +209,36 @@ void Ereader_State3_304C(void) gMain.eReaderBonuses[index] = 0; } gMain.eReaderBonuses[gEReaderCardIndex] = 1; - gUnknown_0201A44C = 0; + gEReaderGeneralTimer = 0; gMain.subState = EREADER_STATE_5; } else { - gUnknown_0201A44C = 0; - gUnknown_0202A58C = 2; - gUnknown_0202BEC0 = 10; - gUnknown_0202C604 = 0; - gUnknown_0202C5A4 = 0; - gUnknown_0202AD90 = 13; - sub_377C(); + gEReaderGeneralTimer = 0; + gEReaderStatusSpriteIndex = 2; + gEReaderHeaderSpriteIndex = 10; + gEReaderTextCharIndex = 0; + gEReaderTextBlinkToggle = 0; + gEReaderTextPageIndex = 13; + ClearEReaderTextRows(); gMain.subState = EREADER_STATE_4; m4aSongNumStart(SE_FAILURE); } } - if (gUnknown_0202A58C == 1) { - gUnknown_0201A44C++; - temp = gUnknown_0201A44C; // TODO: FAKEMATCH - if ((gUnknown_0201A44C & 7) == 0) { - gUnknown_0202BEC0 = 21 - gUnknown_0202BEC0; + if (gEReaderStatusSpriteIndex == 1) { + gEReaderGeneralTimer++; + temp = gEReaderGeneralTimer; // TODO: FAKEMATCH + if ((gEReaderGeneralTimer & 7) == 0) { + gEReaderHeaderSpriteIndex = 21 - gEReaderHeaderSpriteIndex; } - if (((gUnknown_0202ADD0 & 0x7f0000) != 0) && - (gUnknown_0201A444++, 0xb4 < gUnknown_0201A444)) { - gUnknown_0201A44C = 0; - gUnknown_0202A58C = 2; - gUnknown_0202BEC0 = 10; - gUnknown_0202C604 = 0; - gUnknown_0202C5A4 = 0; - gUnknown_0202AD90 = 13; - sub_377C(); + if (((gLinkStatusResult & 0x7f0000) != 0) && + (gLinkTimeoutCounter++, 0xb4 < gLinkTimeoutCounter)) { + gEReaderGeneralTimer = 0; + gEReaderStatusSpriteIndex = 2; + gEReaderHeaderSpriteIndex = 10; + gEReaderTextCharIndex = 0; + gEReaderTextBlinkToggle = 0; + gEReaderTextPageIndex = 13; + ClearEReaderTextRows(); gMain.subState = EREADER_STATE_4; m4aSongNumStart(SE_FAILURE); } @@ -248,90 +248,90 @@ void Ereader_State3_304C(void) void Ereader_State4_3208(void) { - gUnknown_0201A44C++; - if (8 < gUnknown_0201A44C) { - gUnknown_0201A44C = 0; - gUnknown_0202BEC0 = 22 - gUnknown_0202BEC0; + gEReaderGeneralTimer++; + if (8 < gEReaderGeneralTimer) { + gEReaderGeneralTimer = 0; + gEReaderHeaderSpriteIndex = 22 - gEReaderHeaderSpriteIndex; } - if (gUnknown_0202C604 <= gUnknown_086A551A[gUnknown_0202AD90]) { - gUnknown_0202A580++; - if (2 < gUnknown_0202A580) { - gUnknown_0202A580 = 0; - sub_3828(gUnknown_0202AD90,gUnknown_0202C604); - gUnknown_0202C604++; + if (gEReaderTextCharIndex <= gEReaderTextLengths[gEReaderTextPageIndex]) { + gEReaderTextAnimDelay++; + if (2 < gEReaderTextAnimDelay) { + gEReaderTextAnimDelay = 0; + DrawEReaderTextCharacter(gEReaderTextPageIndex,gEReaderTextCharIndex); + gEReaderTextCharIndex++; } } else { - gUnknown_0202A580++; - if (6 < gUnknown_0202A580) { - gUnknown_0202A580 = 0; - if (gUnknown_0202C5A4 == 0) { - sub_38A0(gUnknown_086A551A[gUnknown_0202AD90],0x3a80); + gEReaderTextAnimDelay++; + if (6 < gEReaderTextAnimDelay) { + gEReaderTextAnimDelay = 0; + if (gEReaderTextBlinkToggle == 0) { + BlinkEReaderTextCursor(gEReaderTextLengths[gEReaderTextPageIndex],0x3a80); } else { - sub_38A0(gUnknown_086A551A[gUnknown_0202AD90],0); + BlinkEReaderTextCursor(gEReaderTextLengths[gEReaderTextPageIndex],0); } - gUnknown_0202C5A4 = 1 - gUnknown_0202C5A4; + gEReaderTextBlinkToggle = 1 - gEReaderTextBlinkToggle; } } if (JOY_NEW(A_BUTTON)) { - if (gUnknown_0202C604 <= gUnknown_086A551A[gUnknown_0202AD90]) { - sub_37B4(gUnknown_0202AD90); - gUnknown_0202C604 = gUnknown_086A551A[gUnknown_0202AD90] + 1; + if (gEReaderTextCharIndex <= gEReaderTextLengths[gEReaderTextPageIndex]) { + DrawEReaderTextPage(gEReaderTextPageIndex); + gEReaderTextCharIndex = gEReaderTextLengths[gEReaderTextPageIndex] + 1; } - else if (gUnknown_086A5528[gUnknown_0202AD90] == 0) { - sub_2568(); + else if (gEReaderTextHasNextPage[gEReaderTextPageIndex] == 0) { + ResetSerialAndInterrupts(); DisableSerial(); - sub_02B4(); + FadeOutScreen(); m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); gMain.subState = 0; } else { - sub_377C(); - gUnknown_0202C604 = 0; - gUnknown_0202A580 = 0; - gUnknown_0202C5A4 = 0; - gUnknown_0202AD90++; + ClearEReaderTextRows(); + gEReaderTextCharIndex = 0; + gEReaderTextAnimDelay = 0; + gEReaderTextBlinkToggle = 0; + gEReaderTextPageIndex++; } } - sub_394C(); - DmaCopy16(3, gUnknown_03000000, (void*) VRAM + 0x4000, 0x3000); + UpdateEReaderSprites(); + DmaCopy16(3, gTempGfxBuffer, (void*) VRAM + 0x4000, 0x3000); } void Ereader_State5_33A0(void) { u16 temp; - sub_3AB4(); + UpdateEReaderSpritesViaOam(); - switch(gUnknown_0201A44C) + switch(gEReaderGeneralTimer) { case 4: - sub_2568(); + ResetSerialAndInterrupts(); DisableSerial(); break; case 0x96: - gUnknown_0202A58C = 3; + gEReaderStatusSpriteIndex = 3; m4aSongNumStart(SE_MENU_SELECT); break; case 0x10e: - gUnknown_0201A44C = 0; - sub_02B4(); + gEReaderGeneralTimer = 0; + FadeOutScreen(); m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); gMain.subState = EREADER_STATE_6; break; } - if ((gUnknown_0202A58C == 1) && ((temp = gUnknown_0201A44C, gUnknown_0201A44C & 7) == 0)) { - gUnknown_0202BEC0 = 21 - gUnknown_0202BEC0; + if ((gEReaderStatusSpriteIndex == 1) && ((temp = gEReaderGeneralTimer, gEReaderGeneralTimer & 7) == 0)) { + gEReaderHeaderSpriteIndex = 21 - gEReaderHeaderSpriteIndex; } - gUnknown_0201A44C++; + gEReaderGeneralTimer++; } void Ereader_State6_343C(void) { - ResetSomeGraphicsRelatedStuff(); + ResetDisplayState(); REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP | DISPCNT_FORCED_BLANK; REG_BG0CNT = BGCNT_CHARBASE(1); REG_DISPCNT |= DISPCNT_BG0_ON; @@ -342,89 +342,89 @@ void Ereader_State6_343C(void) gMain.bgOffsets[0].yOffset = (0xffe8 - 0x48); gMain.dispcntBackup = REG_DISPCNT; - DmaCopy16(3, gUnknown_08081D20, (void*) PLTT, 0x40); + DmaCopy16(3, gEReaderBackground_Pals, (void*) PLTT, 0x40); DmaCopy16(3, gPokedexBackground_Pals + 0x80, (void*) PLTT + 0x40, 0x20); - DmaCopy16(3, gEReaderBackground_Gfx, gUnknown_03000000, 0x3000); - DmaCopy16(3, gUnknown_0807DD00, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE); - DmaCopy16(3, gUnknown_0807FD00, (void *)BG_SCREEN_ADDR(1), BG_SCREEN_SIZE); + DmaCopy16(3, gEReaderBackground_Gfx, gTempGfxBuffer, 0x3000); + DmaCopy16(3, gEReaderText_Tilemap, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE); + DmaCopy16(3, gEReaderOverlay_Tilemap, (void *)BG_SCREEN_ADDR(1), BG_SCREEN_SIZE); DmaCopy16(3, gPokedexSprites_Pals, (void *)OBJ_PLTT, 0xC0); DmaCopy16(3, gPokedexSprites_Gfx, (void *)OBJ_VRAM0, 0x6C20); - sub_2DF0(); - gUnknown_0202C604 = 0; - gUnknown_0202A580 = 0; - gUnknown_0202C5A4 = 0; - gUnknown_0202AD90 = gUnknown_086A5536[gEReaderCardIndex]; - sub_377C(); + InitEReaderTextState(); + gEReaderTextCharIndex = 0; + gEReaderTextAnimDelay = 0; + gEReaderTextBlinkToggle = 0; + gEReaderTextPageIndex = gEReaderCardStartPages[gEReaderCardIndex]; + ClearEReaderTextRows(); - DmaCopy16(3, gUnknown_03000000, (void *)VRAM + 0x4000, 0x3000); + DmaCopy16(3, gTempGfxBuffer, (void *)VRAM + 0x4000, 0x3000); - sub_394C(); + UpdateEReaderSprites(); m4aSongNumStart(MUS_UNKNOWN_0x5); - sub_0CBC(); - sub_024C(); + EnableVBlankInterrupts(); + FadeInScreen(); gMain.subState = EREADER_STATE_7; } void Ereader_State7_33C8(void) { - if (gUnknown_0202C604 <= gUnknown_086A551A[gUnknown_0202AD90]) { - gUnknown_0202A580++; - if (2 < gUnknown_0202A580) { - gUnknown_0202A580 = 0; - sub_3828(gUnknown_0202AD90, gUnknown_0202C604); - gUnknown_0202C604++; + if (gEReaderTextCharIndex <= gEReaderTextLengths[gEReaderTextPageIndex]) { + gEReaderTextAnimDelay++; + if (2 < gEReaderTextAnimDelay) { + gEReaderTextAnimDelay = 0; + DrawEReaderTextCharacter(gEReaderTextPageIndex, gEReaderTextCharIndex); + gEReaderTextCharIndex++; } } else { - gUnknown_0202A580++; - if (6 < gUnknown_0202A580) { - gUnknown_0202A580 = 0; - if (gUnknown_0202C5A4 == 0) { - sub_38A0(gUnknown_086A551A[gUnknown_0202AD90], 0x3a80); + gEReaderTextAnimDelay++; + if (6 < gEReaderTextAnimDelay) { + gEReaderTextAnimDelay = 0; + if (gEReaderTextBlinkToggle == 0) { + BlinkEReaderTextCursor(gEReaderTextLengths[gEReaderTextPageIndex], 0x3a80); } else { - sub_38A0(gUnknown_086A551A[gUnknown_0202AD90], 0); + BlinkEReaderTextCursor(gEReaderTextLengths[gEReaderTextPageIndex], 0); } - gUnknown_0202C5A4 = 1 - gUnknown_0202C5A4; + gEReaderTextBlinkToggle = 1 - gEReaderTextBlinkToggle; } } if (JOY_NEW(A_BUTTON)) { - if (gUnknown_0202C604 <= gUnknown_086A551A[gUnknown_0202AD90]) { - sub_37B4(gUnknown_0202AD90); - gUnknown_0202C604 = gUnknown_086A551A[gUnknown_0202AD90] + 1; + if (gEReaderTextCharIndex <= gEReaderTextLengths[gEReaderTextPageIndex]) { + DrawEReaderTextPage(gEReaderTextPageIndex); + gEReaderTextCharIndex = gEReaderTextLengths[gEReaderTextPageIndex] + 1; } - else if (gUnknown_086A5528[gUnknown_0202AD90] == 0) { + else if (gEReaderTextHasNextPage[gEReaderTextPageIndex] == 0) { if (gEReaderCardIndex == EREADER_BONUS_STAGE_CARD) { - gUnknown_0202BEF8 = STATE_BONUS_FIELD_SELECT; + gEReaderExitTargetState = STATE_BONUS_FIELD_SELECT; } else { - gUnknown_0202BEF8 = STATE_TITLE; + gEReaderExitTargetState = STATE_TITLE; } gMain.subState = EREADER_STATE_8; } else { - sub_377C(); - gUnknown_0202C604 = 0; - gUnknown_0202A580 = 0; - gUnknown_0202C5A4 = 0; - gUnknown_0202AD90++; + ClearEReaderTextRows(); + gEReaderTextCharIndex = 0; + gEReaderTextAnimDelay = 0; + gEReaderTextBlinkToggle = 0; + gEReaderTextPageIndex++; } } - sub_394C(); - DmaCopy16(3, gUnknown_03000000, (void*) VRAM + 0x4000, 0x3000); + UpdateEReaderSprites(); + DmaCopy16(3, gTempGfxBuffer, (void*) VRAM + 0x4000, 0x3000); } void Ereader_State8_374C(void) { - sub_02B4(); + FadeOutScreen(); m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); gAutoDisplayTitlescreenMenu = TRUE; - SetMainGameState(gUnknown_0202BEF8); + SetMainGameState(gEReaderExitTargetState); } -void sub_377C(void) +void ClearEReaderTextRows(void) { s32 iVar2; s32 iVar4; @@ -433,12 +433,12 @@ void sub_377C(void) { for(iVar4 = 0; iVar4 < 0x18; iVar4++) { - CopyBgTilesRect(gEReaderText_Gfx, &gUnknown_03001800[iVar2][iVar4*0x20], 1, 2); + CopyBgTilesRect(gEReaderText_Gfx, &gEReaderTextTileBuffer[iVar2][iVar4*0x20], 1, 2); } } } -void sub_37B4(s8 arg0) +void DrawEReaderTextPage(s8 arg0) { s32 iVar4; s32 iVar3; @@ -447,48 +447,48 @@ void sub_37B4(s8 arg0) { for (iVar3 = 0; iVar3 < 0x18; iVar3++) { - CopyBgTilesRect(gEReaderText_Gfx + (gUnknown_086A4CF8[arg0][iVar4*0x18 + iVar3] & 0xFFF0), &gUnknown_03001800[iVar4][iVar3*0x20], 1, 2); + CopyBgTilesRect(gEReaderText_Gfx + (gEReaderTextGlyphTable[arg0][iVar4*0x18 + iVar3] & 0xFFF0), &gEReaderTextTileBuffer[iVar4][iVar3*0x20], 1, 2); } } } -void sub_3828(s8 arg0, s8 arg1) +void DrawEReaderTextCharacter(s8 arg0, s8 arg1) { s32 quotient = arg1 / 0x18; s32 remainder = arg1 % 0x18; - CopyBgTilesRect(gEReaderText_Gfx + (gUnknown_086A4CF8[arg0][quotient*0x18 + remainder] & 0xFFF0), &gUnknown_03001800[quotient][remainder*0x20], 1, 2); + CopyBgTilesRect(gEReaderText_Gfx + (gEReaderTextGlyphTable[arg0][quotient*0x18 + remainder] & 0xFFF0), &gEReaderTextTileBuffer[quotient][remainder*0x20], 1, 2); } -void sub_38A0(s8 arg0, u16 arg1) +void BlinkEReaderTextCursor(s8 arg0, u16 arg1) { s32 quotient = arg0 / 0x18; s32 remainder = arg0 % 0x18; - CopyBgTilesRect(gEReaderText_Gfx + arg1, &gUnknown_03001800[quotient][remainder*0x20], 1, 2); + CopyBgTilesRect(gEReaderText_Gfx + arg1, &gEReaderTextTileBuffer[quotient][remainder*0x20], 1, 2); } s16 GetEReaderCardIndex(void) { s32 uVar1; - if (gUnknown_0202BEEC == 0x1f52) + if (gEReaderReceivedCardId == 0x1f52) { return 0; } - else if (gUnknown_0202BEEC == 0x3e1a) + else if (gEReaderReceivedCardId == 0x3e1a) { return 1; } - else if (gUnknown_0202BEEC == 0x25af) + else if (gEReaderReceivedCardId == 0x25af) { return 2; } - else if (gUnknown_0202BEEC == 0x4a09) + else if (gEReaderReceivedCardId == 0x4a09) { return 3; } - else if (gUnknown_0202BEEC == 0x6b12) + else if (gEReaderReceivedCardId == 0x6b12) { return 4; } @@ -498,7 +498,7 @@ s16 GetEReaderCardIndex(void) } } -void sub_394C(void) +void UpdateEReaderSprites(void) { struct SpriteGroup *puVar9; struct SpriteGroup *puVar5; @@ -506,15 +506,15 @@ void sub_394C(void) const struct SpriteSet *puVar8; struct OamDataSimple *test2; - puVar9 = &gMain_spriteGroups[gUnknown_0202A58C]; - puVar5 = &gMain_spriteGroups[gUnknown_0202BEC0]; - puVar9->available = gUnknown_0202C584; + puVar9 = &gMain_spriteGroups[gEReaderStatusSpriteIndex]; + puVar5 = &gMain_spriteGroups[gEReaderHeaderSpriteIndex]; + puVar9->available = gEReaderStatusSpriteVisible; puVar5->available = TRUE; - LoadSpriteSets(gUnknown_086A54D8, 13, gMain_spriteGroups); + LoadSpriteSets(gCatchHatchSpriteSets, 13, gMain_spriteGroups); if (puVar9->available == 1) { - if (gUnknown_0202A58C == 0) + if (gEReaderStatusSpriteIndex == 0) { puVar9->baseX = 0x78; puVar9->baseY = 100; @@ -525,7 +525,7 @@ void sub_394C(void) puVar9->baseY = 0x50; } - puVar8 = gUnknown_086A54D8[gUnknown_0202A58C]; + puVar8 = gCatchHatchSpriteSets[gEReaderStatusSpriteIndex]; for (iVar7 = 0; iVar7 < puVar8->count; iVar7++) { @@ -537,7 +537,7 @@ void sub_394C(void) puVar5->baseX = 0x78; puVar5->baseY = 0x18; - puVar8 = gUnknown_086A54D8[gUnknown_0202BEC0]; + puVar8 = gCatchHatchSpriteSets[gEReaderHeaderSpriteIndex]; for (iVar7 = 0; iVar7 < puVar8->count; iVar7++) { @@ -550,22 +550,22 @@ void sub_394C(void) puVar5->available = FALSE; } -void sub_3AB4(void) { +void UpdateEReaderSpritesViaOam(void) { struct SpriteGroup *puVar9; struct SpriteGroup *puVar5; s32 iVar7; const struct SpriteSet *puVar8; struct OamDataSimple *test2; - puVar9 = &gMain_spriteGroups[gUnknown_0202A58C]; - puVar5 = &gMain_spriteGroups[gUnknown_0202BEC0]; - puVar9->available = gUnknown_0202C584; + puVar9 = &gMain_spriteGroups[gEReaderStatusSpriteIndex]; + puVar5 = &gMain_spriteGroups[gEReaderHeaderSpriteIndex]; + puVar9->available = gEReaderStatusSpriteVisible; puVar5->available = TRUE; - sub_2414(gUnknown_086A54D8, 13, gMain_spriteGroups); + LoadSpriteSetsWithCpuCopy(gCatchHatchSpriteSets, 13, gMain_spriteGroups); if (puVar9->available == 1) { - if (gUnknown_0202A58C == 0) + if (gEReaderStatusSpriteIndex == 0) { puVar9->baseX = 0x78; puVar9->baseY = 100; @@ -576,7 +576,7 @@ void sub_3AB4(void) { puVar9->baseY = 0x50; } - puVar8 = gUnknown_086A54D8[gUnknown_0202A58C]; + puVar8 = gCatchHatchSpriteSets[gEReaderStatusSpriteIndex]; for (iVar7 = 0; iVar7 < puVar8->count; iVar7++) { @@ -588,7 +588,7 @@ void sub_3AB4(void) { puVar5->baseX = 0x78; puVar5->baseY = 0x18; - puVar8 = gUnknown_086A54D8[gUnknown_0202BEC0]; + puVar8 = gCatchHatchSpriteSets[gEReaderHeaderSpriteIndex]; for (iVar7 = 0; iVar7 < puVar8->count; iVar7++) { @@ -601,49 +601,49 @@ void sub_3AB4(void) { puVar5->available = FALSE; } -void sub_3C1C(void) +void InitEReaderLinkBuffers(void) { s32 i; s32 j; - gUnknown_0202A564 = 0; - gUnknown_02019C20 = 0; - gUnknown_0202ADE8 = 0; + gEReaderLinkHandshakeStarted = 0; + gEReaderLinkDataReceived = 0; + gEReaderLinkAckSent = 0; for (i = 0; i < 0x8; i++) { - gUnknown_0202C5F0[i] = 0; + gLinkSendBuffer[i] = 0; } for (i = 0; i < 2; i++) { for (j = 0; j < 8; j++) { - gUnknown_0201A4D0[j][i] = 0; + gLinkRecvBuffer[j][i] = 0; } } } -s32 sub_3C78(void) +s32 PrepareEReaderLinkSendCmd(void) { s32 i; - if (gUnknown_02019C20) + if (gEReaderLinkDataReceived) { - gUnknown_0202C5F0[0] = 0xDFDF; + gLinkSendBuffer[0] = 0xDFDF; } else { - if (gUnknown_0202ADE8 == -1) + if (gEReaderLinkAckSent == -1) { - gUnknown_0202C5F0[0] = 0xCDFE; - gUnknown_0202ADE8 = 0; + gLinkSendBuffer[0] = 0xCDFE; + gEReaderLinkAckSent = 0; } else { for (i = 0; i < 8; i++) { - gUnknown_0202C5F0[i] = 0; + gLinkSendBuffer[i] = 0; } } } @@ -651,41 +651,41 @@ s32 sub_3C78(void) return 0; } -s16 sub_3CD8(void) +s16 ProcessEReaderLinkReceive(void) { s32 i; s32 j; if ((JOY_NEW(A_BUTTON))) { - if (gUnknown_0202A564 == 0) + if (gEReaderLinkHandshakeStarted == 0) { - gUnknown_0202A564 = -1; - gUnknown_0202ADE8 = -1; - gUnknown_0202A58C = 1; + gEReaderLinkHandshakeStarted = -1; + gEReaderLinkAckSent = -1; + gEReaderStatusSpriteIndex = 1; } } - if (gUnknown_0202A564 != 0) + if (gEReaderLinkHandshakeStarted != 0) { - if (gUnknown_02019C20 == 0) + if (gEReaderLinkDataReceived == 0) { - if (gUnknown_0201A4D0[0][0] == 0xFEDC) + if (gLinkRecvBuffer[0][0] == 0xFEDC) { - gUnknown_0202BEEC = gUnknown_0201A4D0[1][0]; - gUnknown_02019C20 = -1; + gEReaderReceivedCardId = gLinkRecvBuffer[1][0]; + gEReaderLinkDataReceived = -1; } - else if (gUnknown_0201A4D0[0][1] == 0xFEDC) + else if (gLinkRecvBuffer[0][1] == 0xFEDC) { - gUnknown_0202BEEC = gUnknown_0201A4D0[1][1]; - gUnknown_02019C20 = -1; + gEReaderReceivedCardId = gLinkRecvBuffer[1][1]; + gEReaderLinkDataReceived = -1; } } else { for (i = 0; i < 2; i++) { - if (gUnknown_0201A4D0[0][i] == 0xDFDF) + if (gLinkRecvBuffer[0][i] == 0xDFDF) { return -1; } @@ -697,7 +697,7 @@ s16 sub_3CD8(void) { for (j = 0; j < 8; j++) { - gUnknown_0201A4D0[j][i] = 0; + gLinkRecvBuffer[j][i] = 0; } } return 0; diff --git a/src/field_select.c b/src/field_select.c index d46e249..ecd8a4a 100644 --- a/src/field_select.c +++ b/src/field_select.c @@ -5,8 +5,8 @@ #include "m4a.h" #include "titlescreen.h" -static void sub_8F94(void); -static void sub_8C38(void); +static void RenderFieldSelectSprites(void); +static void InitFieldSelectData(void); enum FieldSelectStates { @@ -18,17 +18,17 @@ enum FieldSelectStates struct FieldSelectData { - u16 unk0; - u16 unk2; - u16 unk4; - u16 unk6; + u16 rubyFieldSpriteId; + u16 sapphireFieldSpriteId; + u16 rubyHighlightVisible; + u16 sapphireHighlightVisible; u16 selectedField; u16 state; - s16 unkC; - s16 unkE; + s16 transitionFrame; + s16 speedBlinkTimer; u8 ballSpeed; - s16 unk12; - s8 unk14; + s16 speedBlinkToggle; + s8 ballSpeedVisible; u16 nextMainState; }; @@ -41,7 +41,7 @@ void FieldSelectMain(void) void LoadFieldSelectGraphics(void) { - ResetSomeGraphicsRelatedStuff(); + ResetDisplayState(); REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_FORCED_BLANK | DISPCNT_OBJ_ON; @@ -59,50 +59,50 @@ void LoadFieldSelectGraphics(void) DmaCopy16(3, gFieldSelectBGPals, (void *)(PLTT), 0x200); DmaCopy16(3, gFieldSelectWindow_Gfx, (void *)(VRAM + 0x4000), 0x1400); DmaCopy16(3, gFieldSelectMiniFields_Gfx, (void *)(VRAM + 0x8000), 0x3800); - DmaCopy16(3, gUnknown_080A2400, (void *)(VRAM), 0x800); + DmaCopy16(3, gFieldSelectBG0Tilemap, (void *)(VRAM), 0x800); DmaCopy16(3, gFieldSelectFrameShadowTilemap, (void *)(VRAM + 0x800), 0x800); DmaCopy16(3, gFieldSelectWindowTilemap, (void *)(VRAM + 0x1000), 0x800); DmaCopy16(3, gFieldSelectSpritePals, (void *)(PLTT + 0x200), 0x200); DmaCopy16(3, gFieldSelectSpriteGfx, (void *)(VRAM + 0x10000), 0x4020); - sub_0CBC(); - sub_8C38(); - sub_FD5C(sub_8F94); + EnableVBlankInterrupts(); + InitFieldSelectData(); + FadeInFromWhite(RenderFieldSelectSprites); gMain.subState++; m4aSongNumStart(MUS_TABLE_SELECT); } -static void sub_8C38(void) +static void InitFieldSelectData(void) { - gFieldSelectData.unk0 = 2; - gFieldSelectData.unk2 = 3; - gFieldSelectData.unk4 = 0; - gFieldSelectData.unk6 = 1; + gFieldSelectData.rubyFieldSpriteId = 2; + gFieldSelectData.sapphireFieldSpriteId = 3; + gFieldSelectData.rubyHighlightVisible = 0; + gFieldSelectData.sapphireHighlightVisible = 1; gFieldSelectData.selectedField = FIELD_RUBY; gFieldSelectData.state = FIELD_SELECT_STATE_CHOOSE_FIELD; - gFieldSelectData.unkC = 0; - gFieldSelectData.unkE = 0; + gFieldSelectData.transitionFrame = 0; + gFieldSelectData.speedBlinkTimer = 0; gFieldSelectData.nextMainState = STATE_INTRO; - gFieldSelectData.unk12 = 0; - gFieldSelectData.unk14 = 0; + gFieldSelectData.speedBlinkToggle = 0; + gFieldSelectData.ballSpeedVisible = 0; gFieldSelectData.ballSpeed = gMain_saveData.ballSpeed; gMain.selectedField = FIELD_RUBY; - gUnknown_02002850 = 0; + gFieldSelectSoftReset = 0; } #define RESTART_GAME_BUTTONS (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON) void FieldSelect_State1_8C7C(void) { - sub_8F94(); + RenderFieldSelectSprites(); if (JOY_HELD(RESTART_GAME_BUTTONS) == RESTART_GAME_BUTTONS) { - gUnknown_02002850 = 1; + gFieldSelectSoftReset = 1; gFieldSelectData.nextMainState = STATE_INTRO; gMain.subState++; } - if (gUnknown_02002850 == 0) + if (gFieldSelectSoftReset == 0) { switch (gFieldSelectData.state) { @@ -113,8 +113,8 @@ void FieldSelect_State1_8C7C(void) { m4aSongNumStart(SE_UNKNOWN_0x6D); gFieldSelectData.selectedField = FIELD_RUBY; - gFieldSelectData.unk4 = 0; - gFieldSelectData.unk6 = 1; + gFieldSelectData.rubyHighlightVisible = 0; + gFieldSelectData.sapphireHighlightVisible = 1; gFieldSelectData.state = FIELD_SELECT_STATE_1; } } @@ -124,8 +124,8 @@ void FieldSelect_State1_8C7C(void) { m4aSongNumStart(SE_UNKNOWN_0x6D); gFieldSelectData.selectedField = FIELD_SAPPHIRE; - gFieldSelectData.unk4 = 1; - gFieldSelectData.unk6 = 0; + gFieldSelectData.rubyHighlightVisible = 1; + gFieldSelectData.sapphireHighlightVisible = 0; gFieldSelectData.state = FIELD_SELECT_STATE_1; } } @@ -133,23 +133,23 @@ void FieldSelect_State1_8C7C(void) { m4aSongNumStart(SE_MENU_SELECT); gFieldSelectData.state = FIELD_SELECT_STATE_BALL_SPEED; - gFieldSelectData.unk14 = 1; - gFieldSelectData.unkE = 0; + gFieldSelectData.ballSpeedVisible = 1; + gFieldSelectData.speedBlinkTimer = 0; if (gFieldSelectData.selectedField == FIELD_RUBY) { - gFieldSelectData.unk4 = 0; - gFieldSelectData.unk6 = 1; - gFieldSelectData.unk0 = 2; - gFieldSelectData.unk2 = 3; - gFieldSelectData.unkC = 0; + gFieldSelectData.rubyHighlightVisible = 0; + gFieldSelectData.sapphireHighlightVisible = 1; + gFieldSelectData.rubyFieldSpriteId = 2; + gFieldSelectData.sapphireFieldSpriteId = 3; + gFieldSelectData.transitionFrame = 0; } else { - gFieldSelectData.unk4 = 1; - gFieldSelectData.unk6 = 0; - gFieldSelectData.unk0 = 7; - gFieldSelectData.unk2 = 11; - gFieldSelectData.unkC = 0; + gFieldSelectData.rubyHighlightVisible = 1; + gFieldSelectData.sapphireHighlightVisible = 0; + gFieldSelectData.rubyFieldSpriteId = 7; + gFieldSelectData.sapphireFieldSpriteId = 11; + gFieldSelectData.transitionFrame = 0; } } if (JOY_NEW(B_BUTTON)) @@ -159,25 +159,25 @@ void FieldSelect_State1_8C7C(void) gFieldSelectData.nextMainState = STATE_TITLE; if (gFieldSelectData.selectedField == FIELD_RUBY) { - gFieldSelectData.unk4 = 0; - gFieldSelectData.unk6 = 1; - gFieldSelectData.unk0 = 2; - gFieldSelectData.unk2 = 3; - gFieldSelectData.unkC = 0; + gFieldSelectData.rubyHighlightVisible = 0; + gFieldSelectData.sapphireHighlightVisible = 1; + gFieldSelectData.rubyFieldSpriteId = 2; + gFieldSelectData.sapphireFieldSpriteId = 3; + gFieldSelectData.transitionFrame = 0; } else { - gFieldSelectData.unk4 = 1; - gFieldSelectData.unk6 = 0; - gFieldSelectData.unk0 = 7; - gFieldSelectData.unk2 = 11; - gFieldSelectData.unkC = 0; + gFieldSelectData.rubyHighlightVisible = 1; + gFieldSelectData.sapphireHighlightVisible = 0; + gFieldSelectData.rubyFieldSpriteId = 7; + gFieldSelectData.sapphireFieldSpriteId = 11; + gFieldSelectData.transitionFrame = 0; } } if (gMain.selectedField < MAIN_FIELD_COUNT) - gMain.unk6 = 0; + gMain.isBonusField = 0; else - gMain.unk6 = 1; + gMain.isBonusField = 1; break; case FIELD_SELECT_STATE_BALL_SPEED: if (JOY_NEW(DPAD_LEFT | DPAD_RIGHT)) @@ -188,8 +188,8 @@ void FieldSelect_State1_8C7C(void) if (JOY_NEW(A_BUTTON)) { m4aSongNumStart(SE_MENU_SELECT); - gFieldSelectData.unkE = 0; - gFieldSelectData.unkC = 0; + gFieldSelectData.speedBlinkTimer = 0; + gFieldSelectData.transitionFrame = 0; gMain_saveData.ballSpeed = gFieldSelectData.ballSpeed; SaveFile_WriteToSram(); gFieldSelectData.state = FIELD_SELECT_STATE_3; @@ -197,36 +197,36 @@ void FieldSelect_State1_8C7C(void) if (JOY_NEW(B_BUTTON)) { m4aSongNumStart(SE_MENU_CANCEL); - gFieldSelectData.unk14 = 0; + gFieldSelectData.ballSpeedVisible = 0; gFieldSelectData.state = FIELD_SELECT_STATE_CHOOSE_FIELD; } - gFieldSelectData.unkE++; - if (gFieldSelectData.unkE > 4) + gFieldSelectData.speedBlinkTimer++; + if (gFieldSelectData.speedBlinkTimer > 4) { - gFieldSelectData.unkE = 0; - gFieldSelectData.unk12 = 1 - gFieldSelectData.unk12; + gFieldSelectData.speedBlinkTimer = 0; + gFieldSelectData.speedBlinkToggle = 1 - gFieldSelectData.speedBlinkToggle; } break; case FIELD_SELECT_STATE_1: if (gFieldSelectData.selectedField == FIELD_RUBY) { - gFieldSelectData.unk0 = gUnknown_086A6B14.unk0[4 - gFieldSelectData.unkC]; - gFieldSelectData.unk2 = gUnknown_086A6B14.unkA[4 - gFieldSelectData.unkC]; + gFieldSelectData.rubyFieldSpriteId = gFieldTransitionAnimData.rubyTransitionFrames[4 - gFieldSelectData.transitionFrame]; + gFieldSelectData.sapphireFieldSpriteId = gFieldTransitionAnimData.sapphireTransitionFrames[4 - gFieldSelectData.transitionFrame]; } else { - gFieldSelectData.unk0 = gUnknown_086A6B14.unk0[gFieldSelectData.unkC]; - gFieldSelectData.unk2 = gUnknown_086A6B14.unkA[gFieldSelectData.unkC]; + gFieldSelectData.rubyFieldSpriteId = gFieldTransitionAnimData.rubyTransitionFrames[gFieldSelectData.transitionFrame]; + gFieldSelectData.sapphireFieldSpriteId = gFieldTransitionAnimData.sapphireTransitionFrames[gFieldSelectData.transitionFrame]; } if (!(gMain.systemFrameCount & 1)) { - if (gFieldSelectData.unkC < 4) + if (gFieldSelectData.transitionFrame < 4) { - gFieldSelectData.unkC++; + gFieldSelectData.transitionFrame++; } else { - gFieldSelectData.unkC = 0; + gFieldSelectData.transitionFrame = 0; gFieldSelectData.state = FIELD_SELECT_STATE_CHOOSE_FIELD; } } @@ -236,11 +236,11 @@ void FieldSelect_State1_8C7C(void) { m4aSongNumStart(SE_UNKNOWN_0x6D); gFieldSelectData.selectedField = FIELD_RUBY; - gFieldSelectData.unk4 = 0; - gFieldSelectData.unk6 = 1; - gFieldSelectData.unk0 = 2; - gFieldSelectData.unk2 = 3; - gFieldSelectData.unkC = 0; + gFieldSelectData.rubyHighlightVisible = 0; + gFieldSelectData.sapphireHighlightVisible = 1; + gFieldSelectData.rubyFieldSpriteId = 2; + gFieldSelectData.sapphireFieldSpriteId = 3; + gFieldSelectData.transitionFrame = 0; gFieldSelectData.state = FIELD_SELECT_STATE_CHOOSE_FIELD; } } @@ -250,26 +250,26 @@ void FieldSelect_State1_8C7C(void) { m4aSongNumStart(SE_UNKNOWN_0x6D); gFieldSelectData.selectedField = FIELD_SAPPHIRE; - gFieldSelectData.unk4 = 1; - gFieldSelectData.unk6 = 0; - gFieldSelectData.unk0 = 7; - gFieldSelectData.unk2 = 11; - gFieldSelectData.unkC = 0; + gFieldSelectData.rubyHighlightVisible = 1; + gFieldSelectData.sapphireHighlightVisible = 0; + gFieldSelectData.rubyFieldSpriteId = 7; + gFieldSelectData.sapphireFieldSpriteId = 11; + gFieldSelectData.transitionFrame = 0; gFieldSelectData.state = FIELD_SELECT_STATE_CHOOSE_FIELD; } } break; case FIELD_SELECT_STATE_3: - gFieldSelectData.unkE++; - if (gFieldSelectData.unkE > 3) + gFieldSelectData.speedBlinkTimer++; + if (gFieldSelectData.speedBlinkTimer > 3) { - gFieldSelectData.unkE = 0; + gFieldSelectData.speedBlinkTimer = 0; if (gFieldSelectData.selectedField == FIELD_RUBY) - gFieldSelectData.unk4 = 1 - gFieldSelectData.unk4; + gFieldSelectData.rubyHighlightVisible = 1 - gFieldSelectData.rubyHighlightVisible; else - gFieldSelectData.unk6 = 1 - gFieldSelectData.unk6; - gFieldSelectData.unkC++; - if (gFieldSelectData.unkC > 5) + gFieldSelectData.sapphireHighlightVisible = 1 - gFieldSelectData.sapphireHighlightVisible; + gFieldSelectData.transitionFrame++; + if (gFieldSelectData.transitionFrame > 5) { gFieldSelectData.nextMainState = STATE_GAME_MAIN; gMain.subState++; @@ -278,20 +278,20 @@ void FieldSelect_State1_8C7C(void) break; } gMain.selectedField = gFieldSelectData.selectedField; - gMain.unk5 = gFieldSelectData.selectedField; + gMain.tempField = gFieldSelectData.selectedField; } } void FieldSelect_State2_8F64(void) { - sub_FE04(sub_8F94); + FadeOutToWhite(RenderFieldSelectSprites); m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); gAutoDisplayTitlescreenMenu = TRUE; SetMainGameState(gFieldSelectData.nextMainState); } -static void sub_8F94(void) +static void RenderFieldSelectSprites(void) { struct SpriteGroup *r6; struct SpriteGroup *r9; @@ -308,19 +308,19 @@ static void sub_8F94(void) r6 = &gMain.spriteGroups[0]; r9 = &gMain.spriteGroups[1]; - sp0 = &gMain.spriteGroups[gFieldSelectData.unk0]; - r10 = &gMain.spriteGroups[gFieldSelectData.unk2]; - r8 = &gMain.spriteGroups[12 + gFieldSelectData.ballSpeed * 2 + gFieldSelectData.unk12]; + sp0 = &gMain.spriteGroups[gFieldSelectData.rubyFieldSpriteId]; + r10 = &gMain.spriteGroups[gFieldSelectData.sapphireFieldSpriteId]; + r8 = &gMain.spriteGroups[12 + gFieldSelectData.ballSpeed * 2 + gFieldSelectData.speedBlinkToggle]; - r6->available = gFieldSelectData.unk4; - r9->available = gFieldSelectData.unk6; + r6->available = gFieldSelectData.rubyHighlightVisible; + r9->available = gFieldSelectData.sapphireHighlightVisible; sp0->available = TRUE; r10->available = TRUE; - r8->available = gFieldSelectData.unk14; + r8->available = gFieldSelectData.ballSpeedVisible; - LoadSpriteSets(gUnknown_086A6AD4, 16, r6); + LoadSpriteSets(gFieldSelectSpriteSets, 16, r6); - if (gFieldSelectData.unk4 == 1) + if (gFieldSelectData.rubyHighlightVisible == 1) { r6->baseX = 0x25; r6->baseY = 0x18; @@ -331,7 +331,7 @@ static void sub_8F94(void) } } - if (gFieldSelectData.unk6 == 1) + if (gFieldSelectData.sapphireHighlightVisible == 1) { r9->baseX = 0x8D; r9->baseY = 0x18; @@ -344,7 +344,7 @@ static void sub_8F94(void) sp0->baseX = 32; sp0->baseY = 32; - spriteSet = gUnknown_086A6AD4[gFieldSelectData.unk0]; + spriteSet = gFieldSelectSpriteSets[gFieldSelectData.rubyFieldSpriteId]; for (i = 0; i < spriteSet->count; i++) { gOamBuffer[sp0->oam[i].oamId].objMode = 1; @@ -354,7 +354,7 @@ static void sub_8F94(void) r10->baseX = 0x88; r10->baseY = 32; - spriteSet = gUnknown_086A6AD4[gFieldSelectData.unk2]; + spriteSet = gFieldSelectSpriteSets[gFieldSelectData.sapphireFieldSpriteId]; for (i = 0; i < spriteSet->count; i++) { gOamBuffer[r10->oam[i].oamId].objMode = 1; @@ -364,8 +364,8 @@ static void sub_8F94(void) if (r8->available == 1) { - r8->baseX = gUnknown_086A6B28[gFieldSelectData.selectedField].x; - r8->baseY = gUnknown_086A6B28[gFieldSelectData.selectedField].y; + r8->baseX = gFieldSelectBallSpeedPositions[gFieldSelectData.selectedField].x; + r8->baseY = gFieldSelectBallSpeedPositions[gFieldSelectData.selectedField].y; for (i = 0; i < 5; i++) { gOamBuffer[r8->oam[i].oamId].objMode = 0; diff --git a/src/game_idle.c b/src/game_idle.c index 01873ae..b394656 100644 --- a/src/game_idle.c +++ b/src/game_idle.c @@ -13,48 +13,48 @@ void IdlePinballGameMain(void) void PinballGameIdle0_19048(void) { s16 i; - s16 unk30; - s8 unk30LowerBits; + s16 demoVariant; + s8 demoFieldVariant; - gMain.unk54 = 0; - gMain.unkD = 1; - gUnknown_02031510 = 0; + gMain.idleFrameCounter = 0; + gMain.continueFromSave = 1; + gReplayFrameCounter = 0; for (i = 0; i < NUM_EREADER_CARDS; i++) - gUnknown_02031520.eReaderBonuses[i] = gMain.eReaderBonuses[i]; + gBoardConfig.eReaderBonuses[i] = gMain.eReaderBonuses[i]; - if (gMain.unk30 == 0) - gMain.unk30 = (Random() + gMain.systemFrameCount) % 30; + if (gMain.idleDemoVariant == 0) + gMain.idleDemoVariant = (Random() + gMain.systemFrameCount) % 30; - unk30 = gMain.unk30; - unk30LowerBits = unk30 & 3; - switch (unk30LowerBits) + demoVariant = gMain.idleDemoVariant; + demoFieldVariant = demoVariant & 3; + switch (demoFieldVariant) { case 0: - gUnknown_02031520.unk6 = 0xA14; - gUnknown_02031520.unk10 = &gUnknown_081450F4; - gUnknown_02031520.unkC = &gUnknown_081531F4; + gBoardConfig.idleDemoDuration = 0xA14; + gBoardConfig.replayInputData = &gIdleBoardConfig0; + gBoardConfig.pinballGame = &gIdleBoardGameState0; break; case 1: - gUnknown_02031520.unk6 = 0xF00; - gUnknown_02031520.unk10 = &gUnknown_0814F9B4; - gUnknown_02031520.unkC = &gUnknown_08156E60; + gBoardConfig.idleDemoDuration = 0xF00; + gBoardConfig.replayInputData = &gIdleBoardConfig1; + gBoardConfig.pinballGame = &gIdleBoardGameState1; break; case 2: - gUnknown_02031520.unk6 = 0xD20; - gUnknown_02031520.unk10 = &gUnknown_08148934; - gUnknown_02031520.unkC = &gUnknown_08154618; + gBoardConfig.idleDemoDuration = 0xD20; + gBoardConfig.replayInputData = &gIdleBoardConfig2; + gBoardConfig.pinballGame = &gIdleBoardGameState2; break; case 3: - gUnknown_02031520.unk6 = 0xE4C; - gUnknown_02031520.unk10 = &gUnknown_0814C174; - gUnknown_02031520.unkC = &gUnknown_08155A3C; + gBoardConfig.idleDemoDuration = 0xE4C; + gBoardConfig.replayInputData = &gIdleBoardConfig3; + gBoardConfig.pinballGame = &gIdleBoardGameState3; break; } PinballGame_State0_49ED4(); - switch (unk30LowerBits) + switch (demoFieldVariant) { case 0: m4aSongNumStart(MUS_FIELD_RUBY); @@ -70,54 +70,54 @@ void PinballGameIdle0_19048(void) break; } - gUnknown_02031520.rumbleEnabled = gMain_saveData.rumbleEnabled; + gBoardConfig.rumbleEnabled = gMain_saveData.rumbleEnabled; gMain_saveData.rumbleEnabled = 0; - gMain.unk30++; + gMain.idleDemoVariant++; } void PinballGameIdle1_19190(void) { - u8 unk1D; + u8 fadeSubState; - unk1D = gCurrentPinballGame->unk1D; - switch (unk1D) + fadeSubState = gCurrentPinballGame->fadeSubState; + switch (fadeSubState) { case 0: - gCurrentPinballGame->unk1D = 1; - gMain.unkE = unk1D; + gCurrentPinballGame->fadeSubState = 1; + gMain.gameExitState = fadeSubState; break; case 1: if (gMain.selectedField < MAIN_FIELD_COUNT) - sub_4ACF0(); + IdleGameFrameUpdate(); else - sub_4B000(); + IdleBonusFieldFrameUpdate(); - if (gMain.unk54++ > gUnknown_02031520.unk6) - gMain.unkE = 1; + if (gMain.idleFrameCounter++ > gBoardConfig.idleDemoDuration) + gMain.gameExitState = 1; if (gMain.heldKeys & JOY_EXCL_LR) - gMain.unkE = 1; + gMain.gameExitState = 1; - if (gMain.unkE != 0) + if (gMain.gameExitState != 0) { if (gMain.selectedField < MAIN_FIELD_COUNT) { - sub_1D4D0(); - sub_31BE8(0); + ClampPortraitSpritesToOffscreen(); + RestoreBoardObjPalettes(0); } else if (gMain.selectedField == FIELD_KECLEON) { - sub_356A0(); + RenderBonusStageOverlaySprites(); } if ((gMain.modeChangeFlags & MODE_CHANGE_PAUSE) != 0) { - DmaCopy16(3, gCurrentPinballGame->unk111A, (void *)OBJ_PLTT, OBJ_PLTT_SIZE); + DmaCopy16(3, gCurrentPinballGame->pauseObjPalette, (void *)OBJ_PLTT, OBJ_PLTT_SIZE); } - gCurrentPinballGame->unk1D = 2; - if (gMain.unkE == 2) - sub_4B408(1); + gCurrentPinballGame->fadeSubState = 2; + if (gMain.gameExitState == 2) + SaveGameStateSnapshot(1); } break; case 2: @@ -130,18 +130,18 @@ void PinballGameIdle3_19288(void) { s16 i; - gMain.unk36 = 0; - gMain_saveData.rumbleEnabled = gUnknown_02031520.rumbleEnabled; + gMain.blendEnabled = 0; + gMain_saveData.rumbleEnabled = gBoardConfig.rumbleEnabled; for (i = 0; i < NUM_EREADER_CARDS; i++) - gMain.eReaderBonuses[i] = gUnknown_02031520.eReaderBonuses[i]; + gMain.eReaderBonuses[i] = gBoardConfig.eReaderBonuses[i]; - sub_02B4(); + FadeOutScreen(); m4aMPlayAllStop(); - sub_0D10(); - if (gMain.unk54 < gUnknown_02031520.unk6) + DisableVBlankInterrupts(); + if (gMain.idleFrameCounter < gBoardConfig.idleDemoDuration) SetMainGameState(STATE_TITLE); else SetMainGameState(STATE_SCORES_IDLE); - gMain.unk54 = 0; + gMain.idleFrameCounter = 0; } diff --git a/src/gbplayer.c b/src/gbplayer.c index e581e58..5a41915 100644 --- a/src/gbplayer.c +++ b/src/gbplayer.c @@ -87,58 +87,58 @@ void InitGameBoyPlayer(void) REG_BLDCNT = BLDCNT_TGT2_ALL | BLDCNT_EFFECT_LIGHTEN | BLDCNT_TGT1_ALL; REG_BLDY = 0x10; REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON; - gUnknown_02019C00 = 0; - gUnknown_02019BEC = 0; - gUnknown_02019BF4 = 0; - gUnknown_02019BF0 = 0; + gRumbleCommand = 0; + gRumbleMotorMode = 0; + gSio32SerialEnabled = 0; + gSio32ReconnectTimer = 0; gGameBoyPlayerEnabled = CheckGameBoyPlayer(); REG_IE &= ~INTR_FLAG_VBLANK; REG_DISPSTAT &= ~DISPSTAT_VBLANK_INTR; REG_DISPCNT = 0; - gUnknown_02019BFC = -1; - gUnknown_02019BE4 = 0; - gUnknown_02019BE8 = 0; - gUnknown_02019BF8 = 0; - gUnknown_02019C08 = 2; + gRumblePatternPosition = -1; + gRumbleLoopCounter = 0; + gRumbleFrameCounter = 0; + gRumblePatternIndex = 0; + gRumbleSpeedMode = 2; } -void sub_10C0(void) +void EnableGbPlayerRumble(void) { if (gGameBoyPlayerEnabled == 1) { gIntrTable[0] = Sio32IDIntr; - gIntrTable[1] = sub_1828; - gUnknown_02019BF4 = 1; - sub_1340(); + gIntrTable[1] = Sio32TimeoutIntr; + gSio32SerialEnabled = 1; + InitSio32Hardware(); } - gUnknown_02019BFC = -1; - gUnknown_02019BE4 = 0; - gUnknown_02019C08 = 2; - gUnknown_02019C04 = 0; + gRumblePatternPosition = -1; + gRumbleLoopCounter = 0; + gRumbleSpeedMode = 2; + gRumblePaused = 0; } -void sub_111C(void) +void DisableGbPlayerRumble(void) { // TODO This probably wasn't the original code, but it matches. - int *var0 = &gUnknown_02019BF4; + int *var0 = &gSio32SerialEnabled; int val = 0; - gUnknown_02019C00 = val; - gUnknown_02019BEC = val; + gRumbleCommand = val; + gRumbleMotorMode = val; *var0 = val; - gUnknown_02019BF0 = val; - gUnknown_02019BFC = -1; - gUnknown_02019BE4 = val; - gUnknown_02019BE8 = val; - gUnknown_02019BF8 = val; - gUnknown_02019C08 = 2; + gSio32ReconnectTimer = val; + gRumblePatternPosition = -1; + gRumbleLoopCounter = val; + gRumbleFrameCounter = val; + gRumblePatternIndex = val; + gRumbleSpeedMode = 2; } -int sub_1170(void) +int IsGbPlayerReady(void) { if (gGameBoyPlayerEnabled == 1) { - u8 val = gUnknown_02019C10 - 4; + u8 val = gSio32CommState - 4; if (val > 1) return 0; } @@ -146,7 +146,7 @@ int sub_1170(void) return 1; } -void sub_1198(void) +void RestoreDefaultInterrupts(void) { gIntrTable[0] = SerialIntr; gIntrTable[1] = Timer3Intr; @@ -156,31 +156,31 @@ void PlayRumble(int arg0) { if (gMain_saveData.rumbleEnabled) { - gUnknown_02019BF8 = arg0; - gUnknown_02019BFC = 0; - gUnknown_02019BE4 = 0; - gUnknown_02019BE8 = 0; + gRumblePatternIndex = arg0; + gRumblePatternPosition = 0; + gRumbleLoopCounter = 0; + gRumbleFrameCounter = 0; } } -void sub_11E4(int arg0) +void SetRumbleMode(int arg0) { - gUnknown_02019C08 = arg0; + gRumbleSpeedMode = arg0; } -void sub_11F0(int arg0) +void SetRumblePaused(int arg0) { - gUnknown_02019C04 = arg0; + gRumblePaused = arg0; } -void sub_11FC(void) +void ProcessRumbleFrame(void) { int var0; int var1; if (gGameBoyPlayerEnabled == 1) { - switch (gUnknown_02019C10) + switch (gSio32CommState) { case 0: case 1: @@ -188,75 +188,75 @@ void sub_11FC(void) break; case 3: case 4: - if (gUnknown_02019BFC >= 0 && gUnknown_02019C08 && !gUnknown_02019C04) + if (gRumblePatternPosition >= 0 && gRumbleSpeedMode && !gRumblePaused) { - if (!(gUnknown_02019BE8 & 1)) + if (!(gRumbleFrameCounter & 1)) { while (1) { - var0 = gUnknown_086A4C44[gUnknown_02019BF8][gUnknown_02019BFC++]; - var1 = gUnknown_086A4C44[gUnknown_02019BF8][gUnknown_02019BFC]; + var0 = gRumblePatterns[gRumblePatternIndex][gRumblePatternPosition++]; + var1 = gRumblePatterns[gRumblePatternIndex][gRumblePatternPosition]; if (var0 == -1) { - gUnknown_02019BFC = var0; - gUnknown_02019C00 = 0; + gRumblePatternPosition = var0; + gRumbleCommand = 0; break; } if (var0 < -1) { - if (gUnknown_02019BE4) + if (gRumbleLoopCounter) { - if (--gUnknown_02019BE4 == 0) + if (--gRumbleLoopCounter == 0) { - gUnknown_02019BFC++; + gRumblePatternPosition++; } else { - gUnknown_02019BFC--; - gUnknown_02019BFC -= var1; + gRumblePatternPosition--; + gRumblePatternPosition -= var1; } } else { - gUnknown_02019BE4 = ~var0; - gUnknown_02019BFC--; - gUnknown_02019BFC -= var1; + gRumbleLoopCounter = ~var0; + gRumblePatternPosition--; + gRumblePatternPosition -= var1; } } else { - gUnknown_02019C00 = var0; + gRumbleCommand = var0; break; } } } - else if (gUnknown_02019BE8 % 2 == 1 && gUnknown_02019C08 == 1) + else if (gRumbleFrameCounter % 2 == 1 && gRumbleSpeedMode == 1) { - gUnknown_02019C00 = 0; + gRumbleCommand = 0; } } else { - gUnknown_02019C00 = 0; + gRumbleCommand = 0; } break; case 5: - if (++gUnknown_02019BF0 > 60) + if (++gSio32ReconnectTimer > 60) { - if (gUnknown_02019BF4) - sub_1340(); + if (gSio32SerialEnabled) + InitSio32Hardware(); - gUnknown_02019BF0 = 0; + gSio32ReconnectTimer = 0; } break; } } - gUnknown_02019BE8++; + gRumbleFrameCounter++; } -void sub_1340(void) +void InitSio32Hardware(void) { REG_IME = 0; REG_IE &= ~(INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL); @@ -269,8 +269,8 @@ void sub_1340(void) REG_IE |= INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL; REG_IME = INTR_FLAG_VBLANK; REG_SIOCNT_L &= -2; - gUnknown_02019C10 = 0; - CpuFill32(0, &gUnknown_02002808, 0xC); + gSio32CommState = 0; + CpuFill32(0, &gSio32Id, 0xC); REG_IME = 0; REG_SIOCNT |= SIO_MULTI_BUSY; REG_IME = INTR_FLAG_VBLANK; @@ -283,129 +283,129 @@ void sub_1340(void) void Sio32IDIntr(void) { s32 iVar6; - gUnknown_02002818 = REG_SIODATA32; + gSio32ReceivedData = REG_SIODATA32; REG_TM3CNT_H = 0; REG_TM3CNT_L = 0x8000; - switch (gUnknown_02019C10) + switch (gSio32CommState) { case 0: { u32 receiverChunk = REG_SIODATA32; u32 senderChunk; - senderChunk = receiverChunk << 16 * gUnknown_02002808.MS_mode >> 16; - receiverChunk = receiverChunk << 16 * (1 - gUnknown_02002808.MS_mode) >> 16; - if (gUnknown_02002808.lastId == 0) + senderChunk = receiverChunk << 16 * gSio32Id.MS_mode >> 16; + receiverChunk = receiverChunk << 16 * (1 - gSio32Id.MS_mode) >> 16; + if (gSio32Id.lastId == 0) { - if ((u16) senderChunk == gUnknown_02002808.recv_id) + if ((u16) senderChunk == gSio32Id.recv_id) { - if (gUnknown_02002808.count < 4) + if (gSio32Id.count < 4) { - if (gUnknown_02002808.recv_id == (u16)~gUnknown_02002808.send_id) + if (gSio32Id.recv_id == (u16)~gSio32Id.send_id) { - if ((u16) receiverChunk == (u16)~gUnknown_02002808.recv_id) - ++gUnknown_02002808.count; + if ((u16) receiverChunk == (u16)~gSio32Id.recv_id) + ++gSio32Id.count; } // goto green } else // blue { - gUnknown_02002808.lastId = receiverChunk; + gSio32Id.lastId = receiverChunk; if (receiverChunk == 0x8002) { - gUnknown_02019C10 = 1; - gUnknown_02002814 = sub_1748(1); - REG_SIODATA32 = gUnknown_02002814; - gUnknown_02002808.count = 0; + gSio32CommState = 1; + gSio32SendData = Sio32BuildCommand(1); + REG_SIODATA32 = gSio32SendData; + gSio32Id.count = 0; break; } else { - gUnknown_02002808.lastId = 0; - gUnknown_02002808.count = 0; + gSio32Id.lastId = 0; + gSio32Id.count = 0; } } } else { - gUnknown_02002808.count = 0; + gSio32Id.count = 0; } } // green - if (gUnknown_02002808.count < 4) + if (gSio32Id.count < 4) { - gUnknown_02002808.send_id = *(gUnknown_02002808.count + Sio32ConnectionData); // oh no + gSio32Id.send_id = *(gSio32Id.count + Sio32ConnectionData); // oh no } else { - gUnknown_02002808.send_id = 0x8000; + gSio32Id.send_id = 0x8000; } - gUnknown_02002808.recv_id = ~receiverChunk; + gSio32Id.recv_id = ~receiverChunk; REG_SIODATA32 = - (gUnknown_02002808.send_id << ((1 - gUnknown_02002808.MS_mode) << 4)) + - (gUnknown_02002808.recv_id << (gUnknown_02002808.MS_mode << 4)); + (gSio32Id.send_id << ((1 - gSio32Id.MS_mode) << 4)) + + (gSio32Id.recv_id << (gSio32Id.MS_mode << 4)); break; } case 1: - iVar6 = sub_16A0(gUnknown_02019C10); + iVar6 = Sio32ValidateResponse(gSio32CommState); if (iVar6 != 0) { u32 stack_temp; - gUnknown_02002808.count = 0; + gSio32Id.count = 0; stack_temp = 0; - CpuSet(&stack_temp, &gUnknown_02002808, 0x5000003); - gUnknown_02019C10 = 0; + CpuSet(&stack_temp, &gSio32Id, 0x5000003); + gSio32CommState = 0; } else { - gUnknown_02019C10 = 2; + gSio32CommState = 2; } - if (gUnknown_02019BF4 == 0) + if (gSio32SerialEnabled == 0) { - gUnknown_02019C10 = 4; + gSio32CommState = 4; } - gUnknown_02002814 = sub_1748(gUnknown_02019C10); - REG_SIODATA32 = gUnknown_02002814; + gSio32SendData = Sio32BuildCommand(gSio32CommState); + REG_SIODATA32 = gSio32SendData; break; case 2: - iVar6 = sub_16A0(gUnknown_02019C10); + iVar6 = Sio32ValidateResponse(gSio32CommState); if (iVar6 != 0) { u32 stack_temp; - gUnknown_02002808.count = 0; + gSio32Id.count = 0; stack_temp = 0; - CpuSet(&stack_temp, &gUnknown_02002808, 0x5000003); - gUnknown_02019C10 = 0; + CpuSet(&stack_temp, &gSio32Id, 0x5000003); + gSio32CommState = 0; } else { - gUnknown_02019C10 = 3; + gSio32CommState = 3; } - if (gUnknown_02019BF4 == 0) + if (gSio32SerialEnabled == 0) { - gUnknown_02019C10 = 4; + gSio32CommState = 4; } - gUnknown_02002814 = sub_1748(gUnknown_02019C10); - REG_SIODATA32 = gUnknown_02002814; + gSio32SendData = Sio32BuildCommand(gSio32CommState); + REG_SIODATA32 = gSio32SendData; break; case 3: - iVar6 = sub_16A0(gUnknown_02019C10); + iVar6 = Sio32ValidateResponse(gSio32CommState); if (iVar6 != 0) { u32 stack_temp; - gUnknown_02002808.count = 0; + gSio32Id.count = 0; stack_temp = 0; - CpuSet(&stack_temp, &gUnknown_02002808, 0x5000003); - gUnknown_02019C10 = 0; + CpuSet(&stack_temp, &gSio32Id, 0x5000003); + gSio32CommState = 0; } - if (gUnknown_02019BF4 == 0) + if (gSio32SerialEnabled == 0) { - gUnknown_02019C10 = 4; + gSio32CommState = 4; } - gUnknown_02002814 = sub_1748(gUnknown_02019C10); - REG_SIODATA32 = gUnknown_02002814; + gSio32SendData = Sio32BuildCommand(gSio32CommState); + REG_SIODATA32 = gSio32SendData; break; case 4: case 5: @@ -420,7 +420,7 @@ void Sio32IDIntr(void) REG_TM3CNT_H = 0xC1; } -u32 sub_1668(u32 arg1, u32 arg2) +u32 Sio32EncodePacket(u32 arg1, u32 arg2) { u8 uVar1; u32 uVar2; @@ -441,13 +441,13 @@ u32 sub_1668(u32 arg1, u32 arg2) return uVar2; } -u32 sub_16A0(u8 param_1) +u32 Sio32ValidateResponse(u8 param_1) { s8 cVar1; u32 uVar3; - uVar3 = gUnknown_02002818 >> 0x1C; - cVar1 = sub_170C(); + uVar3 = gSio32ReceivedData >> 0x1C; + cVar1 = Sio32VerifyChecksum(); if (cVar1) return 1; switch (param_1) @@ -456,8 +456,8 @@ u32 sub_16A0(u8 param_1) return 1; case 1: { - u32 *r1 = &gUnknown_0200281C; - u32 r0 = (gUnknown_02002818 << 4) >> 8; + u32 *r1 = &gSio32RemoteDeviceId; + u32 r0 = (gSio32ReceivedData << 4) >> 8; *r1 = r0 & 1; if (uVar3 != 1) return 1; } @@ -466,8 +466,8 @@ u32 sub_16A0(u8 param_1) if (uVar3 != 2) return 1; { - u32* r0 = &gUnknown_0200281C; - u32 r1 = (gUnknown_02002818 << 4) >> 8; + u32* r0 = &gSio32RemoteDeviceId; + u32 r1 = (gSio32ReceivedData << 4) >> 8; if (*r0 != r1) return 1; } break; @@ -478,7 +478,7 @@ u32 sub_16A0(u8 param_1) return 0; } -u32 sub_170C(void) +u32 Sio32VerifyChecksum(void) { u8 uVar1; u32 uVar2; @@ -486,9 +486,9 @@ u32 sub_170C(void) u32 uVar4; u32 uVar5; - uVar2 = gUnknown_02002818 / 16; + uVar2 = gSio32ReceivedData / 16; ++uVar2; --uVar2; - uVar3 = gUnknown_02002818 % 16; + uVar3 = gSio32ReceivedData % 16; uVar4 = uVar2 >> 0x18; for (uVar1 = 6; uVar1 != 0; uVar1--) @@ -508,7 +508,7 @@ u32 sub_170C(void) } } -u32 sub_1748(u8 param_1) +u32 Sio32BuildCommand(u8 param_1) { u32 uVar1; u32 uVar2; @@ -517,22 +517,22 @@ u32 sub_1748(u8 param_1) switch (param_1) { case 2: - uVar1 = gUnknown_0200281C; + uVar1 = gSio32RemoteDeviceId; uVar2 = 2; goto case_fallthrough; case 3: - if (gUnknown_02019C00 == 0) + if (gRumbleCommand == 0) { - uVar1 = sub_17D8(0); - param_3 = sub_1668(uVar1, 4); + uVar1 = EncodeRumbleCommand(0); + param_3 = Sio32EncodePacket(uVar1, 4); } - if (gUnknown_02019C00 == 1) + if (gRumbleCommand == 1) { - uVar1 = sub_17D8(1); - param_3 = sub_1668(uVar1, 4); + uVar1 = EncodeRumbleCommand(1); + param_3 = Sio32EncodePacket(uVar1, 4); } - if (gUnknown_02019C00 != 2) break; - uVar1 = sub_17D8(2); + if (gRumbleCommand != 2) break; + uVar1 = EncodeRumbleCommand(2); uVar2 = 4; goto case_fallthrough; case 1: @@ -541,17 +541,17 @@ u32 sub_1748(u8 param_1) uVar1 = 1; uVar2 = 1; case_fallthrough: // Fairly confident that this is not in fact a fakematch, due to the break above - param_3 = sub_1668(uVar1, uVar2); + param_3 = Sio32EncodePacket(uVar1, uVar2); } return param_3; } -u32 sub_17D8(u32 arg1) +u32 EncodeRumbleCommand(u32 arg1) { u32 retVal; - switch (gUnknown_02019BEC) + switch (gRumbleMotorMode) { case 0: retVal = arg1; @@ -572,7 +572,7 @@ u32 sub_17D8(u32 arg1) return retVal; } -void sub_1828(void) +void Sio32TimeoutIntr(void) { // TODO macro? REG_IME = 0; @@ -586,5 +586,5 @@ void sub_1828(void) REG_TM3CNT_H = 0; REG_TM3CNT_L = 0x8000; - gUnknown_02019C10 = 5; + gSio32CommState = 5; } diff --git a/src/high_scores.c b/src/high_scores.c index 9990c0a..1a98b1c 100644 --- a/src/high_scores.c +++ b/src/high_scores.c @@ -9,49 +9,49 @@ extern StateFunc gHighScoresStateFuncs[15]; extern StateFunc gIdleHighScoresStateFuncs[15]; -extern u8 gUnknown_0809DBE0[]; -extern u8 gUnknown_08099FC0[]; +extern u8 gHighScoreBG_Pals[]; +extern u8 gHighScoreBallWatermark_Tilemap[]; extern u8 gHighScoreText_Gfx[]; -extern s16 gUnknown_0202C588; -extern s8 gUnknown_0202BEB0; -extern s8 gUnknown_0201C18C; -extern s16 gUnknown_0201A4B8; -extern s8 gUnknown_0202BED4; -extern s8 gUnknown_0202C580; -extern s8 gUnknown_0201B178; -extern u8 gUnknown_0202BEBC; -extern u16 gUnknown_0201C1B0; -extern u16 gUnknown_0202C59C; -extern s8 gUnknown_0201A4BC; -extern s8 gUnknown_0202C598; -extern s8 gUnknown_0202C54C; +extern s16 gHighScoreEntrySource; +extern s8 gCompletionBannerDone; +extern s8 gCompletionBannerVisible; +extern s16 gCompletionBannerY; +extern s8 gCompletionBannerPhase; +extern s8 gCompletionBannerFrame; +extern s8 gShowDialogFlag; +extern u8 gDialogType; +extern u16 gLinkExchangeCommand; +extern u16 gLinkPacketCounter; +extern s8 gLinkExchangeSendPhase; +extern s8 gLinkExchangeRecvPhase; +extern s8 gLinkExchangeTimeout; -extern s16 gUnknown_02002880; -extern s16 gUnknown_02002882; -extern s8 gUnknown_02002884; -extern s8 gUnknown_02002885; +extern s16 gScrollDirection; +extern s16 gScrollXOffset; +extern s8 gResetComboTimer; +extern s8 gResetComboCount; -struct unkStruct_2002858 +struct HighScoreScreenState { u32 newScoreHi; u32 newScoreLo; - s16 unk8; - u8 unkA; + s16 displayTimer; + u8 nextSubState; u8 mainField; s32 highScoreIndex; s16 currentNameCharIndex; - s16 unk12; - s16 unk14; + s16 nameFlashToggle; + s16 flashFrameCounter; s16 currentNameChar; - s16 unk18; - s16 unk1A; - s16 unk1C; - s16 unk1E; - s16 unk20; - s16 unk22; - s8 unk24; - u8 unk25; - s8 unk26; + s16 flashDuration; + s16 flashElapsedFrames; + s16 paletteAnimPhase; + s16 paletteAnimTimer; + s16 inputRepeatDelay; + s16 linkWaitTimer; + s8 nextIdleState; + u8 arrowBlinkToggle; + s8 displayModeVisible; }; enum HighScoreStates{ @@ -72,15 +72,15 @@ enum HighScoreStates{ HIGH_SCORE_STATE_14 = 14 }; -struct unkStruct_2002858 gUnknown_02002858; +struct HighScoreScreenState gHighScoreScreenState; -extern struct HighScoreEntry gUnknown_0202C610[MAIN_FIELD_COUNT][NUM_HIGH_SCORES]; -extern struct HighScoreEntry gUnknown_0202C550[2]; +extern struct HighScoreEntry gWorkingHighScores[MAIN_FIELD_COUNT][NUM_HIGH_SCORES]; +extern struct HighScoreEntry gRemoteTopScores[2]; extern u8 gHighScoreBallWatermark_Gfx[]; -extern u8 gUnknown_080947A0[]; -extern u8 gUnknown_0809DDE0[]; +extern u8 gHighScoreScoreTable_Tilemap[]; +extern u8 gHighScoreSprite_Pals[]; extern u8 gHighScoreDialogs_Gfx[]; -extern u32 gUnknown_08079870[8]; +extern u32 gHighScoreNameRowTilemapOffsets[8]; extern const struct HighScoreEntry gDefaultHighScores[2][8]; void HighScoresMain(void) @@ -95,7 +95,7 @@ void IdleHighScoresMain(void) void LoadHighScoreGraphics(void) { - ResetSomeGraphicsRelatedStuff(); + ResetDisplayState(); REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_FORCED_BLANK; REG_BG2CNT = 0x4006; REG_DISPCNT |= DISPCNT_BG2_ON; @@ -103,26 +103,26 @@ void LoadHighScoreGraphics(void) REG_DISPCNT |= DISPCNT_BG3_ON; gMain.dispcntBackup = REG_DISPCNT; - DmaCopy16(3, gUnknown_0809DBE0, (void*) PLTT, 0x200); + DmaCopy16(3, gHighScoreBG_Pals, (void*) PLTT, 0x200); DmaCopy16(3, gHighScoreText_Gfx, (void*) BG_VRAM + 0x4000, 0x4800); DmaCopy16(3, gHighScoreBallWatermark_Gfx, (void *)BG_VRAM + 0xC000, 0x2C00); - DmaCopy16(3, gUnknown_080947A0, gUnknown_03005C00, 0x1000); - DmaCopy16(3, gUnknown_08099FC0, (void *)BG_SCREEN_ADDR(2), 0x1000); - DmaCopy16(3, gUnknown_0809DDE0, (void *)OBJ_PLTT, 0x100); + DmaCopy16(3, gHighScoreScoreTable_Tilemap, gBG0TilemapBuffer, 0x1000); + DmaCopy16(3, gHighScoreBallWatermark_Tilemap, (void *)BG_SCREEN_ADDR(2), 0x1000); + DmaCopy16(3, gHighScoreSprite_Pals, (void *)OBJ_PLTT, 0x100); DmaCopy16(3, gHighScoreDialogs_Gfx, (void *)OBJ_VRAM0, 0x4420); - sub_CFD4(); - sub_EE64(); - DmaCopy16(3, gUnknown_03005C00,0x6000000, 0x1000); - if(gUnknown_0202C588 == 0) + InitHighScoreData(); + DrawAllHighScoreText(); + DmaCopy16(3, gBG0TilemapBuffer,0x6000000, 0x1000); + if(gHighScoreEntrySource == 0) m4aSongNumStart(MUS_HIGH_SCORE); - gUnknown_0202C588 = 0; - sub_0CBC(); - sub_024C(); - gMain.subState = gUnknown_02002858.unkA; + gHighScoreEntrySource = 0; + EnableVBlankInterrupts(); + FadeInScreen(); + gMain.subState = gHighScoreScreenState.nextSubState; } -void sub_CFD4(void) +void InitHighScoreData(void) { int i, j, k; for(i = 0; i < MAIN_FIELD_COUNT; i++) @@ -130,244 +130,244 @@ void sub_CFD4(void) for(j = 0; j < NUM_HIGH_SCORES; j++) { for(k = 0; k < HIGH_SCORE_NAME_LENGTH + 2; k++) // ? use an array count instead? - gUnknown_0202C610[i][j].data.raw[k] = gMain_saveData.highScores[i][j].data.raw[k]; + gWorkingHighScores[i][j].data.raw[k] = gMain_saveData.highScores[i][j].data.raw[k]; } } for(i = 0; i < MAIN_FIELD_COUNT; i++) { for(j = 0; j < HIGH_SCORE_NAME_LENGTH + 2; j++) { - gUnknown_0202C550[i].data.raw[j] = gUnknown_0202C610[i][0].data.raw[j]; + gRemoteTopScores[i].data.raw[j] = gWorkingHighScores[i][0].data.raw[j]; } } - gUnknown_02002858.currentNameCharIndex = 0; - gUnknown_02002858.unk12 = 0; - gUnknown_02002858.unk14 = 0; - gUnknown_02002858.unk18 = 0; - gUnknown_02002858.unk1A = 0; - gUnknown_02002858.unk1E = 0; - gUnknown_02002858.unk1C = 0; - gUnknown_02002858.unk20 = 0; - gUnknown_02002858.unk22 = 0; - gUnknown_02002858.unk25 = 0; - gUnknown_02002858.unk26 = 1; - gUnknown_0201B178 = 0; - gUnknown_0202BEBC = 1; - gUnknown_0201C18C = 0; - gUnknown_02002884 = 0; - gUnknown_02002885 = 0; - if(gUnknown_0202C588 == 1) + gHighScoreScreenState.currentNameCharIndex = 0; + gHighScoreScreenState.nameFlashToggle = 0; + gHighScoreScreenState.flashFrameCounter = 0; + gHighScoreScreenState.flashDuration = 0; + gHighScoreScreenState.flashElapsedFrames = 0; + gHighScoreScreenState.paletteAnimTimer = 0; + gHighScoreScreenState.paletteAnimPhase = 0; + gHighScoreScreenState.inputRepeatDelay = 0; + gHighScoreScreenState.linkWaitTimer = 0; + gHighScoreScreenState.arrowBlinkToggle = 0; + gHighScoreScreenState.displayModeVisible = 1; + gShowDialogFlag = 0; + gDialogType = 1; + gCompletionBannerVisible = 0; + gResetComboTimer = 0; + gResetComboCount = 0; + if(gHighScoreEntrySource == 1) { - gUnknown_02002858.newScoreHi = gMain.finalScoreHi; - gUnknown_02002858.newScoreLo = gMain.finalScoreLo; + gHighScoreScreenState.newScoreHi = gMain.finalScoreHi; + gHighScoreScreenState.newScoreLo = gMain.finalScoreLo; if(gMain.selectedField == FIELD_SAPPHIRE) { - gUnknown_02002858.mainField = FIELD_SAPPHIRE; - gUnknown_02002882 = 0xF0; - gUnknown_02002880 = 1; + gHighScoreScreenState.mainField = FIELD_SAPPHIRE; + gScrollXOffset = 0xF0; + gScrollDirection = 1; } else { - gUnknown_02002858.mainField = FIELD_RUBY; - gUnknown_02002882 = 0; - gUnknown_02002880 = -1; + gHighScoreScreenState.mainField = FIELD_RUBY; + gScrollXOffset = 0; + gScrollDirection = -1; } - gUnknown_02002858.highScoreIndex = GetNewHighScoreIndex(gUnknown_02002858.newScoreHi, gUnknown_02002858.newScoreLo, gUnknown_02002858.mainField); - if(gUnknown_02002858.highScoreIndex != -1) + gHighScoreScreenState.highScoreIndex = GetNewHighScoreIndex(gHighScoreScreenState.newScoreHi, gHighScoreScreenState.newScoreLo, gHighScoreScreenState.mainField); + if(gHighScoreScreenState.highScoreIndex != -1) { - sub_F434(gUnknown_02002858.newScoreHi, gUnknown_02002858.newScoreLo, gUnknown_02002858.mainField, gUnknown_02002858.highScoreIndex); + InsertNewHighScore(gHighScoreScreenState.newScoreHi, gHighScoreScreenState.newScoreLo, gHighScoreScreenState.mainField, gHighScoreScreenState.highScoreIndex); for(i = 0; i < HIGH_SCORE_NAME_LENGTH; i++) { - gUnknown_0202C610[gUnknown_02002858.mainField][gUnknown_02002858.highScoreIndex].data.parts.name[i] = gHighScoreNameEntry[i]; + gWorkingHighScores[gHighScoreScreenState.mainField][gHighScoreScreenState.highScoreIndex].data.parts.name[i] = gHighScoreNameEntry[i]; } - gUnknown_02002858.currentNameChar = gHighScoreNameEntry[0]; + gHighScoreScreenState.currentNameChar = gHighScoreNameEntry[0]; } - if(sub_FD20() == 1) + if(CheckAllPokemonCaught() == 1) { - if(gUnknown_0202BEB0 == 0) + if(gCompletionBannerDone == 0) { - gUnknown_0201C18C = 1; - gUnknown_0201A4B8 = 0xB8; - gUnknown_0202C580 = 0; - gUnknown_0202BED4 = 0; - gUnknown_02002858.unkA = 1; + gCompletionBannerVisible = 1; + gCompletionBannerY = 0xB8; + gCompletionBannerFrame = 0; + gCompletionBannerPhase = 0; + gHighScoreScreenState.nextSubState = 1; } else { - gUnknown_0201C18C = 0; - gUnknown_02002858.unkA = 2; + gCompletionBannerVisible = 0; + gHighScoreScreenState.nextSubState = 2; } } else { - gUnknown_0202BEB0 = 0; - gUnknown_02002858.unkA = 2; + gCompletionBannerDone = 0; + gHighScoreScreenState.nextSubState = 2; } } else { - gUnknown_02002858.mainField = 0; - gUnknown_02002882 = 0; - gUnknown_02002880 = -1; - sub_E464(); - gUnknown_02002858.unkA = 3; + gHighScoreScreenState.mainField = 0; + gScrollXOffset = 0; + gScrollDirection = -1; + RenderHighScoreSprites(); + gHighScoreScreenState.nextSubState = 3; } - gMain.bgOffsets[3].xOffset = gUnknown_02002882; - gMain.bgOffsets[2].xOffset = gUnknown_02002882; + gMain.bgOffsets[3].xOffset = gScrollXOffset; + gMain.bgOffsets[2].xOffset = gScrollXOffset; } -void HighScore_State1_D20C(void) +void HighScore_ShowCompletionBanner(void) { u16 temp; - switch(gUnknown_0202BED4) + switch(gCompletionBannerPhase) { case 0: - if(gUnknown_02002858.unk18 == 3) + if(gHighScoreScreenState.flashDuration == 3) { m4aSongNumStart(MUS_SUCCESS); - gUnknown_0202BED4++; + gCompletionBannerPhase++; } break; case 1: - gUnknown_0201A4B8--; + gCompletionBannerY--; // TODO: FAKEMATCH - Seth - temp = gUnknown_02002858.unk18; - if((gUnknown_02002858.unk18 & 3) == 0) + temp = gHighScoreScreenState.flashDuration; + if((gHighScoreScreenState.flashDuration & 3) == 0) { - gUnknown_0202C580++; - if(gUnknown_0202C580 > 4) + gCompletionBannerFrame++; + if(gCompletionBannerFrame > 4) { - gUnknown_0202C580 = 0; + gCompletionBannerFrame = 0; } } - if(gUnknown_0201A4B8 == 0x50) + if(gCompletionBannerY == 0x50) { - gUnknown_0202C580 = 0; - gUnknown_0202BED4++; + gCompletionBannerFrame = 0; + gCompletionBannerPhase++; } break; case 2: if(JOY_NEW(A_BUTTON | B_BUTTON)) { - gUnknown_0202C580 = 0; - gUnknown_0202BED4++; + gCompletionBannerFrame = 0; + gCompletionBannerPhase++; } break; case 3: - gUnknown_0201A4B8 -= 4; - if(gUnknown_0201A4B8 < -0x18) + gCompletionBannerY -= 4; + if(gCompletionBannerY < -0x18) { - gUnknown_02002858.unk18 = 0; - gUnknown_0202BEB0 = 1; - gUnknown_0201C18C = 0; + gHighScoreScreenState.flashDuration = 0; + gCompletionBannerDone = 1; + gCompletionBannerVisible = 0; gMain.subState = HIGH_SCORE_STATE_2; } break; } - gUnknown_02002858.unk18++; - sub_E860(); + gHighScoreScreenState.flashDuration++; + RenderCompletionBanner(); } -void HighScore_State2_D308(void) +void HighScore_FlashNewEntry(void) { - if(!gUnknown_02002858.unk1A) + if(!gHighScoreScreenState.flashElapsedFrames) { - if(gUnknown_02002858.highScoreIndex == 0) + if(gHighScoreScreenState.highScoreIndex == 0) { m4aSongNumStart(SE_HIGH_SCORE_EARNED); - gUnknown_02002858.unk18 = 0xA0; + gHighScoreScreenState.flashDuration = 0xA0; } - else if(gUnknown_02002858.highScoreIndex == -1) + else if(gHighScoreScreenState.highScoreIndex == -1) { - gUnknown_02002858.unk18 = 999; - gUnknown_02002858.unk1A = 0; + gHighScoreScreenState.flashDuration = 999; + gHighScoreScreenState.flashElapsedFrames = 0; m4aSongNumStart(MUS_HIGH_SCORE); gMain.subState = HIGH_SCORE_STATE_3; } else { m4aSongNumStart(SE_UNKNOWN_0x14B); - gUnknown_02002858.unk18 = 0x5A; + gHighScoreScreenState.flashDuration = 0x5A; } } - gUnknown_02002858.unk14++; - if(gUnknown_02002858.unk14 > 8) + gHighScoreScreenState.flashFrameCounter++; + if(gHighScoreScreenState.flashFrameCounter > 8) { - gUnknown_02002858.unk14 = 0; - if(!gUnknown_02002858.unk12) + gHighScoreScreenState.flashFrameCounter = 0; + if(!gHighScoreScreenState.nameFlashToggle) { - gUnknown_02002858.unk12 = 1; - CopyString(6 - (gUnknown_02002858.mainField << 1), gUnknown_08079870[gUnknown_02002858.highScoreIndex] + (gUnknown_02002858.mainField << 5), 0, 0x15, 4, 2); - CopyString(0, 0x17, 6 - (gUnknown_02002858.mainField << 1), gUnknown_08079870[gUnknown_02002858.highScoreIndex] + (gUnknown_02002858.mainField << 5), 4, 2); + gHighScoreScreenState.nameFlashToggle = 1; + CopyString(6 - (gHighScoreScreenState.mainField << 1), gHighScoreNameRowTilemapOffsets[gHighScoreScreenState.highScoreIndex] + (gHighScoreScreenState.mainField << 5), 0, 0x15, 4, 2); + CopyString(0, 0x17, 6 - (gHighScoreScreenState.mainField << 1), gHighScoreNameRowTilemapOffsets[gHighScoreScreenState.highScoreIndex] + (gHighScoreScreenState.mainField << 5), 4, 2); } else { - gUnknown_02002858.unk12 = 0; - CopyString(0, 0x15, 6 - (gUnknown_02002858.mainField << 1), gUnknown_08079870[gUnknown_02002858.highScoreIndex] + (gUnknown_02002858.mainField << 5), 4, 2); + gHighScoreScreenState.nameFlashToggle = 0; + CopyString(0, 0x15, 6 - (gHighScoreScreenState.mainField << 1), gHighScoreNameRowTilemapOffsets[gHighScoreScreenState.highScoreIndex] + (gHighScoreScreenState.mainField << 5), 4, 2); } } - gUnknown_02002858.unk1E++; - if(gUnknown_02002858.unk1E > 8) + gHighScoreScreenState.paletteAnimTimer++; + if(gHighScoreScreenState.paletteAnimTimer > 8) { - gUnknown_02002858.unk1E = 0; - sub_F8B0(gUnknown_02002858.mainField, gUnknown_02002858.highScoreIndex, gUnknown_02002858.unk1C); - gUnknown_02002858.unk1C++; - if( gUnknown_02002858.unk1C > 2) + gHighScoreScreenState.paletteAnimTimer = 0; + AnimateScoreTilemapPalette(gHighScoreScreenState.mainField, gHighScoreScreenState.highScoreIndex, gHighScoreScreenState.paletteAnimPhase); + gHighScoreScreenState.paletteAnimPhase++; + if( gHighScoreScreenState.paletteAnimPhase > 2) { - gUnknown_02002858.unk1C = 0; + gHighScoreScreenState.paletteAnimPhase = 0; } } - gUnknown_02002858.unk1A++; - if(gUnknown_02002858.unk1A > gUnknown_02002858.unk18) + gHighScoreScreenState.flashElapsedFrames++; + if(gHighScoreScreenState.flashElapsedFrames > gHighScoreScreenState.flashDuration) { - gUnknown_02002858.unk1A = 0; - if(gUnknown_02002858.unk12 == 1) + gHighScoreScreenState.flashElapsedFrames = 0; + if(gHighScoreScreenState.nameFlashToggle == 1) { - gUnknown_02002858.unk12 = 0; - gUnknown_02002858.unk14 = 0; - CopyString(0, 0x15, 6 - (gUnknown_02002858.mainField << 1), gUnknown_08079870[gUnknown_02002858.highScoreIndex] +(gUnknown_02002858.mainField << 5), 4, 2); + gHighScoreScreenState.nameFlashToggle = 0; + gHighScoreScreenState.flashFrameCounter = 0; + CopyString(0, 0x15, 6 - (gHighScoreScreenState.mainField << 1), gHighScoreNameRowTilemapOffsets[gHighScoreScreenState.highScoreIndex] +(gHighScoreScreenState.mainField << 5), 4, 2); } m4aSongNumStart(MUS_HIGH_SCORE); gMain.subState = HIGH_SCORE_STATE_4; } - DmaCopy16(3, gUnknown_03005C00, 0x6000000, 0x1000); + DmaCopy16(3, gBG0TilemapBuffer, 0x6000000, 0x1000); } -void HighScore_State3_D4B8(void) +void HighScore_BrowseScores(void) { - sub_E464(); + RenderHighScoreSprites(); if(!(gMain.systemFrameCount % 0xC)) { - gUnknown_02002858.unk1A = 1 - gUnknown_02002858.unk1A; - gUnknown_02002858.unk25 = 1 - gUnknown_02002858.unk25; + gHighScoreScreenState.flashElapsedFrames = 1 - gHighScoreScreenState.flashElapsedFrames; + gHighScoreScreenState.arrowBlinkToggle = 1 - gHighScoreScreenState.arrowBlinkToggle; } if(JOY_NEW(DPAD_LEFT)) { - if(gUnknown_02002880 != -1) + if(gScrollDirection != -1) { - gUnknown_02002880 = -1; + gScrollDirection = -1; } } else if(JOY_NEW(DPAD_RIGHT)) { - if(gUnknown_02002880 != 1) + if(gScrollDirection != 1) { - gUnknown_02002880 = 1; + gScrollDirection = 1; } } - if(gUnknown_02002880 > 0) + if(gScrollDirection > 0) { - if(gUnknown_02002882 < 0xF0) - gUnknown_02002882 += 8; + if(gScrollXOffset < 0xF0) + gScrollXOffset += 8; } - else if(gUnknown_02002880 < 0) + else if(gScrollDirection < 0) { - if(gUnknown_02002882 > 0) - gUnknown_02002882 -= 8; + if(gScrollXOffset > 0) + gScrollXOffset -= 8; } if(JOY_NEW(A_BUTTON | B_BUTTON)) { @@ -376,11 +376,11 @@ void HighScore_State3_D4B8(void) } if(JOY_NEW(START_BUTTON)) { - if(gUnknown_02002882 == 0 || (gUnknown_02002882 == 0xF0)) + if(gScrollXOffset == 0 || (gScrollXOffset == 0xF0)) { m4aSongNumStart(SE_MENU_POPUP_OPEN); - gUnknown_0201B178 = 1; - gUnknown_0202BEBC = 0; + gShowDialogFlag = 1; + gDialogType = 0; gMain.subState = HIGH_SCORE_STATE_5; } } @@ -389,140 +389,140 @@ void HighScore_State3_D4B8(void) { if(JOY_NEW(R_BUTTON)) { - if(gUnknown_02002882 == 0 || gUnknown_02002882 == 0xF0) + if(gScrollXOffset == 0 || gScrollXOffset == 0xF0) { - gUnknown_02002884 = 0x28; - gUnknown_02002885++; - if(gUnknown_02002885 == 3) + gResetComboTimer = 0x28; + gResetComboCount++; + if(gResetComboCount == 3) { - gUnknown_02002885 = 0; - gUnknown_02002884 = 0; + gResetComboCount = 0; + gResetComboTimer = 0; m4aSongNumStart(SE_MENU_POPUP_OPEN); - gUnknown_0201B178 = 1; - gUnknown_0202BEBC = 4; + gShowDialogFlag = 1; + gDialogType = 4; gMain.subState = HIGH_SCORE_STATE_10; } } - if(gUnknown_02002884 > 0) + if(gResetComboTimer > 0) { - gUnknown_02002884--; - if(gUnknown_02002884 <= 0) + gResetComboTimer--; + if(gResetComboTimer <= 0) { - gUnknown_02002884 = 0; - gUnknown_02002885 = 0; + gResetComboTimer = 0; + gResetComboCount = 0; } } } } - else if(gUnknown_02002884 > 0) + else if(gResetComboTimer > 0) { - gUnknown_02002884--; - if(gUnknown_02002884 <= 0) + gResetComboTimer--; + if(gResetComboTimer <= 0) { - gUnknown_02002884 = 0; - gUnknown_02002885 = 0; + gResetComboTimer = 0; + gResetComboCount = 0; } } - gMain.bgOffsets[3].xOffset = gUnknown_02002882; - gMain.bgOffsets[2].xOffset = gUnknown_02002882; + gMain.bgOffsets[3].xOffset = gScrollXOffset; + gMain.bgOffsets[2].xOffset = gScrollXOffset; } -void HighScore_State4_D664(void) +void HighScore_NameEntry(void) { int i, j, k; - sub_E3A8(); - if (++gUnknown_02002858.unk14 > 12) + UpdateNameEntryCursor(); + if (++gHighScoreScreenState.flashFrameCounter > 12) { - gUnknown_02002858.unk14 = 0; - gUnknown_02002858.unk12 = 1 - gUnknown_02002858.unk12; + gHighScoreScreenState.flashFrameCounter = 0; + gHighScoreScreenState.nameFlashToggle = 1 - gHighScoreScreenState.nameFlashToggle; } - if (++gUnknown_02002858.unk1E > 8) + if (++gHighScoreScreenState.paletteAnimTimer > 8) { - gUnknown_02002858.unk1E = 0; - sub_F8B0(gUnknown_02002858.mainField, gUnknown_02002858.highScoreIndex, gUnknown_02002858.unk1C); - if (++gUnknown_02002858.unk1C > 2) - gUnknown_02002858.unk1C = 0; + gHighScoreScreenState.paletteAnimTimer = 0; + AnimateScoreTilemapPalette(gHighScoreScreenState.mainField, gHighScoreScreenState.highScoreIndex, gHighScoreScreenState.paletteAnimPhase); + if (++gHighScoreScreenState.paletteAnimPhase > 2) + gHighScoreScreenState.paletteAnimPhase = 0; } if (JOY_HELD(DPAD_DOWN)) { - if (gUnknown_02002858.unk20 == 0) + if (gHighScoreScreenState.inputRepeatDelay == 0) { m4aSongNumStart(SE_SCORE_ENTRY_LETTER_CHANGE); - if (--gUnknown_02002858.currentNameChar < 0) - gUnknown_02002858.currentNameChar = 41; + if (--gHighScoreScreenState.currentNameChar < 0) + gHighScoreScreenState.currentNameChar = 41; - sub_F670(gUnknown_02002858.currentNameChar, gUnknown_02002858.highScoreIndex, gUnknown_02002858.currentNameCharIndex, gUnknown_02002858.mainField); - gUnknown_02002858.unk20 = 9; + PrintHighScoreNameChar(gHighScoreScreenState.currentNameChar, gHighScoreScreenState.highScoreIndex, gHighScoreScreenState.currentNameCharIndex, gHighScoreScreenState.mainField); + gHighScoreScreenState.inputRepeatDelay = 9; } } else if (JOY_HELD(DPAD_UP)) { - if (gUnknown_02002858.unk20 == 0) + if (gHighScoreScreenState.inputRepeatDelay == 0) { m4aSongNumStart(SE_SCORE_ENTRY_LETTER_CHANGE); - if (++gUnknown_02002858.currentNameChar > 41) - gUnknown_02002858.currentNameChar = 0; + if (++gHighScoreScreenState.currentNameChar > 41) + gHighScoreScreenState.currentNameChar = 0; - sub_F670(gUnknown_02002858.currentNameChar, gUnknown_02002858.highScoreIndex, gUnknown_02002858.currentNameCharIndex, gUnknown_02002858.mainField); - gUnknown_02002858.unk20 = 9; + PrintHighScoreNameChar(gHighScoreScreenState.currentNameChar, gHighScoreScreenState.highScoreIndex, gHighScoreScreenState.currentNameCharIndex, gHighScoreScreenState.mainField); + gHighScoreScreenState.inputRepeatDelay = 9; } } if (JOY_NEW(DPAD_RIGHT)) { - if (gUnknown_02002858.currentNameCharIndex == HIGH_SCORE_NAME_LENGTH - 1) + if (gHighScoreScreenState.currentNameCharIndex == HIGH_SCORE_NAME_LENGTH - 1) { m4aSongNumStart(SE_FAILURE); } else { m4aSongNumStart(SE_MENU_MOVE); - gUnknown_02002858.unk12 = 1; - sub_F670(gUnknown_02002858.currentNameChar, gUnknown_02002858.highScoreIndex, gUnknown_02002858.currentNameCharIndex, gUnknown_02002858.mainField); - gUnknown_0202C610[gUnknown_02002858.mainField][gUnknown_02002858.highScoreIndex].data.parts.name[gUnknown_02002858.currentNameCharIndex] = gUnknown_02002858.currentNameChar; - gUnknown_02002858.currentNameCharIndex++; - gUnknown_02002858.currentNameChar = gUnknown_0202C610[gUnknown_02002858.mainField][gUnknown_02002858.highScoreIndex].data.parts.name[gUnknown_02002858.currentNameCharIndex]; + gHighScoreScreenState.nameFlashToggle = 1; + PrintHighScoreNameChar(gHighScoreScreenState.currentNameChar, gHighScoreScreenState.highScoreIndex, gHighScoreScreenState.currentNameCharIndex, gHighScoreScreenState.mainField); + gWorkingHighScores[gHighScoreScreenState.mainField][gHighScoreScreenState.highScoreIndex].data.parts.name[gHighScoreScreenState.currentNameCharIndex] = gHighScoreScreenState.currentNameChar; + gHighScoreScreenState.currentNameCharIndex++; + gHighScoreScreenState.currentNameChar = gWorkingHighScores[gHighScoreScreenState.mainField][gHighScoreScreenState.highScoreIndex].data.parts.name[gHighScoreScreenState.currentNameCharIndex]; } } else if (JOY_NEW(DPAD_LEFT)) { - if (gUnknown_02002858.currentNameCharIndex == 0) + if (gHighScoreScreenState.currentNameCharIndex == 0) { m4aSongNumStart(SE_FAILURE); } else { m4aSongNumStart(SE_MENU_MOVE); - gUnknown_02002858.unk12 = 1; - sub_F670(gUnknown_02002858.currentNameChar, gUnknown_02002858.highScoreIndex, gUnknown_02002858.currentNameCharIndex, gUnknown_02002858.mainField); - gUnknown_0202C610[gUnknown_02002858.mainField][gUnknown_02002858.highScoreIndex].data.parts.name[gUnknown_02002858.currentNameCharIndex] = gUnknown_02002858.currentNameChar; - gUnknown_02002858.currentNameCharIndex--; - gUnknown_02002858.currentNameChar = gUnknown_0202C610[gUnknown_02002858.mainField][gUnknown_02002858.highScoreIndex].data.parts.name[gUnknown_02002858.currentNameCharIndex]; + gHighScoreScreenState.nameFlashToggle = 1; + PrintHighScoreNameChar(gHighScoreScreenState.currentNameChar, gHighScoreScreenState.highScoreIndex, gHighScoreScreenState.currentNameCharIndex, gHighScoreScreenState.mainField); + gWorkingHighScores[gHighScoreScreenState.mainField][gHighScoreScreenState.highScoreIndex].data.parts.name[gHighScoreScreenState.currentNameCharIndex] = gHighScoreScreenState.currentNameChar; + gHighScoreScreenState.currentNameCharIndex--; + gHighScoreScreenState.currentNameChar = gWorkingHighScores[gHighScoreScreenState.mainField][gHighScoreScreenState.highScoreIndex].data.parts.name[gHighScoreScreenState.currentNameCharIndex]; } } if (JOY_NEW(A_BUTTON)) { - gUnknown_02002858.unk12 = 1; - sub_F670(gUnknown_02002858.currentNameChar, gUnknown_02002858.highScoreIndex, gUnknown_02002858.currentNameCharIndex, gUnknown_02002858.mainField); - gUnknown_0202C610[gUnknown_02002858.mainField][gUnknown_02002858.highScoreIndex].data.parts.name[gUnknown_02002858.currentNameCharIndex] = gUnknown_02002858.currentNameChar; - if (gUnknown_02002858.currentNameCharIndex == HIGH_SCORE_NAME_LENGTH - 1) + gHighScoreScreenState.nameFlashToggle = 1; + PrintHighScoreNameChar(gHighScoreScreenState.currentNameChar, gHighScoreScreenState.highScoreIndex, gHighScoreScreenState.currentNameCharIndex, gHighScoreScreenState.mainField); + gWorkingHighScores[gHighScoreScreenState.mainField][gHighScoreScreenState.highScoreIndex].data.parts.name[gHighScoreScreenState.currentNameCharIndex] = gHighScoreScreenState.currentNameChar; + if (gHighScoreScreenState.currentNameCharIndex == HIGH_SCORE_NAME_LENGTH - 1) { m4aSongNumStart(SE_MENU_SELECT); - sub_FAE8(gUnknown_02002858.mainField, gUnknown_02002858.highScoreIndex, gUnknown_02002858.unk1C); + ResetScoreTilemapPalette(gHighScoreScreenState.mainField, gHighScoreScreenState.highScoreIndex, gHighScoreScreenState.paletteAnimPhase); for (i = 0; i < HIGH_SCORE_NAME_LENGTH; i++) - gHighScoreNameEntry[i] = gUnknown_0202C610[gUnknown_02002858.mainField][gUnknown_02002858.highScoreIndex].data.parts.name[i]; + gHighScoreNameEntry[i] = gWorkingHighScores[gHighScoreScreenState.mainField][gHighScoreScreenState.highScoreIndex].data.parts.name[i]; for (i = 0; i < MAIN_FIELD_COUNT; i++) { for (j = 0; j < NUM_HIGH_SCORES; j++) { for (k = 0; k < 6; k++) - gMain_saveData.highScores[i][j].data.raw[k] = gUnknown_0202C610[i][j].data.raw[k]; + gMain_saveData.highScores[i][j].data.raw[k] = gWorkingHighScores[i][j].data.raw[k]; } } @@ -532,80 +532,80 @@ void HighScore_State4_D664(void) else { m4aSongNumStart(SE_SCORE_ENTRY_A_B_MOVE); - gUnknown_02002858.currentNameCharIndex++; - gUnknown_02002858.currentNameChar = gUnknown_0202C610[gUnknown_02002858.mainField][gUnknown_02002858.highScoreIndex].data.parts.name[gUnknown_02002858.currentNameCharIndex]; + gHighScoreScreenState.currentNameCharIndex++; + gHighScoreScreenState.currentNameChar = gWorkingHighScores[gHighScoreScreenState.mainField][gHighScoreScreenState.highScoreIndex].data.parts.name[gHighScoreScreenState.currentNameCharIndex]; } } else if (JOY_NEW(B_BUTTON)) { - if (gUnknown_02002858.currentNameCharIndex == 0) + if (gHighScoreScreenState.currentNameCharIndex == 0) { m4aSongNumStart(SE_FAILURE); } else { m4aSongNumStart(SE_SCORE_ENTRY_A_B_MOVE); - gUnknown_02002858.unk12 = 1; - sub_F670(gUnknown_02002858.currentNameChar, gUnknown_02002858.highScoreIndex, gUnknown_02002858.currentNameCharIndex, gUnknown_02002858.mainField); - gUnknown_0202C610[gUnknown_02002858.mainField][gUnknown_02002858.highScoreIndex].data.parts.name[gUnknown_02002858.currentNameCharIndex] = gUnknown_02002858.currentNameChar; - gUnknown_02002858.currentNameCharIndex--; - gUnknown_02002858.currentNameChar = gUnknown_0202C610[gUnknown_02002858.mainField][gUnknown_02002858.highScoreIndex].data.parts.name[gUnknown_02002858.currentNameCharIndex]; + gHighScoreScreenState.nameFlashToggle = 1; + PrintHighScoreNameChar(gHighScoreScreenState.currentNameChar, gHighScoreScreenState.highScoreIndex, gHighScoreScreenState.currentNameCharIndex, gHighScoreScreenState.mainField); + gWorkingHighScores[gHighScoreScreenState.mainField][gHighScoreScreenState.highScoreIndex].data.parts.name[gHighScoreScreenState.currentNameCharIndex] = gHighScoreScreenState.currentNameChar; + gHighScoreScreenState.currentNameCharIndex--; + gHighScoreScreenState.currentNameChar = gWorkingHighScores[gHighScoreScreenState.mainField][gHighScoreScreenState.highScoreIndex].data.parts.name[gHighScoreScreenState.currentNameCharIndex]; } } - DmaCopy16(3, gUnknown_03005C00, 0x6000000, 0x1000); - if (gUnknown_02002858.unk20 > 0) - gUnknown_02002858.unk20--; + DmaCopy16(3, gBG0TilemapBuffer, 0x6000000, 0x1000); + if (gHighScoreScreenState.inputRepeatDelay > 0) + gHighScoreScreenState.inputRepeatDelay--; } -void HighScore_State5_D9F8(void) +void HighScore_InitLinkExchange(void) { - sub_19B4(); - sub_E908(); - gUnknown_0201B124 = 0; - sub_E464(); + InitLinkHardware(); + InitLinkExchangeBuffers(); + gLinkExchangeStep = 0; + RenderHighScoreSprites(); gMain.subState = HIGH_SCORE_STATE_6; } -void HighScore_State6_DA20(void) +void HighScore_LinkExchangeLoop(void) { - sub_E464(); + RenderHighScoreSprites(); if (JOY_NEW(B_BUTTON)) { m4aSongNumStart(SE_MENU_CANCEL); - gUnknown_0201B178 = 0; - gUnknown_0202BEBC = 0; - sub_2568(); + gShowDialogFlag = 0; + gDialogType = 0; + ResetSerialAndInterrupts(); gMain.subState = HIGH_SCORE_STATE_3; } else { - gUnknown_0202ADD0 = LinkMain1(&gUnknown_0202BEC8, gUnknown_0202C5F0, gUnknown_0201A4D0); - gUnknown_0202BDF0 = gUnknown_0202ADD0 & 3; - gUnknown_0201C1AC = (gUnknown_0202ADD0 & 0x1c) >> 2; - gUnknown_0202ADDC = (gUnknown_0202ADD0 & 0xe00) >> 9; - if (((gUnknown_0202ADD0 & 0x40) != 0) && gUnknown_0202BDF0 < 2) + gLinkStatusResult = LinkMain1(&gLinkAdvanceState, gLinkSendBuffer, gLinkRecvBuffer); + gLinkConnectionState = gLinkStatusResult & 3; + gLinkPlayerCount = (gLinkStatusResult & 0x1c) >> 2; + gLinkNegotiationFlags = (gLinkStatusResult & 0xe00) >> 9; + if (((gLinkStatusResult & 0x40) != 0) && gLinkConnectionState < 2) { - sub_E970(); - if ((gUnknown_0202ADD0 & 0x100) == 0) + ProcessLinkSendData(); + if ((gLinkStatusResult & 0x100) == 0) { - s16 var0 = sub_E94C(); + s16 var0 = HighScore_ProcessLinkExchange(); if (var0 == -1) { gMain.subState = HIGH_SCORE_STATE_8; } else if (var0 == 1) { - gUnknown_0202BEBC = 2; + gDialogType = 2; gMain.subState = HIGH_SCORE_STATE_7; m4aSongNumStart(SE_FAILURE); } } - gUnknown_0201A510++; - if ((gUnknown_0202ADD0 & 0x7f0000) != 0 && gUnknown_0202ADE4 == -1 && ++gUnknown_0201A444 > 180) + gLinkExchangeFrameCounter++; + if ((gLinkStatusResult & 0x7f0000) != 0 && gLinkExchangeResult == -1 && ++gLinkTimeoutCounter > 180) { - gUnknown_0202BEBC = 2; + gDialogType = 2; gMain.subState = HIGH_SCORE_STATE_7; m4aSongNumStart(SE_FAILURE); } @@ -613,140 +613,140 @@ void HighScore_State6_DA20(void) } } -void HighScore_State9_DB4C(void) +void HighScore_LinkRetryWait(void) { - if (++gUnknown_0201A444 > 2) + if (++gLinkTimeoutCounter > 2) { - gUnknown_0201A444 = 0; + gLinkTimeoutCounter = 0; gMain.subState = HIGH_SCORE_STATE_5; } } -void HighScore_State7_DB70(void) +void HighScore_LinkError(void) { int i, j; - sub_E464(); - if (++gUnknown_02002858.unk22 > 90) + RenderHighScoreSprites(); + if (++gHighScoreScreenState.linkWaitTimer > 90) { - gUnknown_02002858.unk22 = 0; - gUnknown_0201B178 = 0; - gUnknown_0202BEBC = 0; - sub_2568(); + gHighScoreScreenState.linkWaitTimer = 0; + gShowDialogFlag = 0; + gDialogType = 0; + ResetSerialAndInterrupts(); DisableSerial(); for (i = 0; i < MAIN_FIELD_COUNT; i++) { for (j = 0; j < 6; j++) { - gUnknown_0202C550[i].data.raw[j] = gUnknown_0202C610[i][0].data.raw[j]; + gRemoteTopScores[i].data.raw[j] = gWorkingHighScores[i][0].data.raw[j]; } } - sub_02B4(); + FadeOutScreen(); m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); gMain.subState = HIGH_SCORE_STATE_0; } } -void HighScore_State8_DBF4(void) +void HighScore_LinkSuccess(void) { int i, j, k; - sub_E464(); - switch (gUnknown_02002858.unk22) + RenderHighScoreSprites(); + switch (gHighScoreScreenState.linkWaitTimer) { case 4: - sub_2568(); + ResetSerialAndInterrupts(); DisableSerial(); break; case 130: - gUnknown_0202BEBC = 3; + gDialogType = 3; m4aSongNumStart(SE_MENU_SELECT); break; case 250: - gUnknown_02002858.unk22 = 0; - gUnknown_0201B178 = 0; - gUnknown_0202BEBC = 0; - gUnknown_0202BED8 = sub_F4FC(0); - gUnknown_0201B170 = sub_F4FC(1); + gHighScoreScreenState.linkWaitTimer = 0; + gShowDialogFlag = 0; + gDialogType = 0; + gMergedRubyScoreIndex = MergeReceivedTopScore(0); + gMergedSapphireScoreIndex = MergeReceivedTopScore(1); for (i = 0; i < MAIN_FIELD_COUNT; i++) { for (j = 0; j < NUM_HIGH_SCORES; j++) { for (k = 0; k < 6; k++) { - gMain_saveData.highScores[i][j].data.raw[k] = gUnknown_0202C610[i][j].data.raw[k]; + gMain_saveData.highScores[i][j].data.raw[k] = gWorkingHighScores[i][j].data.raw[k]; } } } SaveFile_WriteToSram(); - sub_02B4(); + FadeOutScreen(); m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); gMain.subState = HIGH_SCORE_STATE_12; break; } - gUnknown_02002858.unk22++; + gHighScoreScreenState.linkWaitTimer++; } -void HighScore_State10_DCF0(void) +void HighScore_ResetConfirmation(void) { - sub_E464(); + RenderHighScoreSprites(); if (JOY_NEW(A_BUTTON)) { m4aSongNumStart(SE_MENU_SELECT); SetDefaultHighScores(); SaveFile_WriteToSram(); - sub_02B4(); + FadeOutScreen(); m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); gMain.subState = HIGH_SCORE_STATE_0; } else if (JOY_NEW(B_BUTTON)) { m4aSongNumStart(SE_MENU_CANCEL); - gUnknown_0201B178 = 0; - gUnknown_0202BEBC = 0; + gShowDialogFlag = 0; + gDialogType = 0; gMain.subState = HIGH_SCORE_STATE_3; } } -void HighScore_State11_DD4C(void) +void HighScore_ExitToTitle(void) { - sub_02B4(); + FadeOutScreen(); m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); gAutoDisplayTitlescreenMenu = TRUE; SetMainGameState(STATE_TITLE); } -void IdleHighScore_State0_DD70(void) +void IdleHighScore_LoadGraphics(void) { - ResetSomeGraphicsRelatedStuff(); + ResetDisplayState(); REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_FORCED_BLANK; REG_BG2CNT = 0x4006; REG_DISPCNT |= DISPCNT_BG2_ON; REG_BG3CNT = 0x420F; REG_DISPCNT |= DISPCNT_BG3_ON; gMain.dispcntBackup = REG_DISPCNT; - DmaCopy16(3, gUnknown_0809DBE0, (void*) PLTT, 0x200); + DmaCopy16(3, gHighScoreBG_Pals, (void*) PLTT, 0x200); DmaCopy16(3, gHighScoreText_Gfx, (void*) BG_VRAM + 0x4000, 0x4800); DmaCopy16(3, gHighScoreBallWatermark_Gfx, (void *)BG_VRAM + 0xC000, 0x2C00); - DmaCopy16(3, gUnknown_080947A0, gUnknown_03005C00, 0x1000); - DmaCopy16(3, gUnknown_08099FC0, (void *)BG_SCREEN_ADDR(2), 0x1000); - DmaCopy16(3, gUnknown_0809DDE0, (void *)OBJ_PLTT, 0x20); + DmaCopy16(3, gHighScoreScoreTable_Tilemap, gBG0TilemapBuffer, 0x1000); + DmaCopy16(3, gHighScoreBallWatermark_Tilemap, (void *)BG_SCREEN_ADDR(2), 0x1000); + DmaCopy16(3, gHighScoreSprite_Pals, (void *)OBJ_PLTT, 0x20); DmaCopy16(3, gHighScoreDialogs_Gfx, (void *)OBJ_VRAM0, 0x4420); - sub_DEB4(); - sub_EE64(); - DmaCopy16(3, gUnknown_03005C00,0x6000000, 0x1000); + InitIdleHighScoreData(); + DrawAllHighScoreText(); + DmaCopy16(3, gBG0TilemapBuffer,0x6000000, 0x1000); m4aSongNumStart(MUS_HIGH_SCORE); - sub_0CBC(); - sub_024C(); + EnableVBlankInterrupts(); + FadeInScreen(); gMain.subState++; } -void sub_DEB4(void) +void InitIdleHighScoreData(void) { int i, j, k; @@ -756,168 +756,168 @@ void sub_DEB4(void) { for (k = 0; k < 6; k++) { - gUnknown_0202C610[i][j].data.raw[k] = gMain_saveData.highScores[i][j].data.raw[k]; + gWorkingHighScores[i][j].data.raw[k] = gMain_saveData.highScores[i][j].data.raw[k]; } } } - gUnknown_02002858.unk8 = 0; - gUnknown_02002858.unk1E = 0; - gUnknown_02002858.unk1C = 0; - gUnknown_02002858.mainField = 0; - gUnknown_02002882 = 0; - gUnknown_02002880 = -1; - gUnknown_02002858.unk24 = STATE_INTRO; - gUnknown_02002858.unkA = 0; - gMain.bgOffsets[3].xOffset = gUnknown_02002882; - gMain.bgOffsets[2].xOffset = gUnknown_02002882; + gHighScoreScreenState.displayTimer = 0; + gHighScoreScreenState.paletteAnimTimer = 0; + gHighScoreScreenState.paletteAnimPhase = 0; + gHighScoreScreenState.mainField = 0; + gScrollXOffset = 0; + gScrollDirection = -1; + gHighScoreScreenState.nextIdleState = STATE_INTRO; + gHighScoreScreenState.nextSubState = 0; + gMain.bgOffsets[3].xOffset = gScrollXOffset; + gMain.bgOffsets[2].xOffset = gScrollXOffset; } -void IdleHighScore_State1_DF68(void) +void IdleHighScore_AutoScroll(void) { - switch (gUnknown_02002858.unkA) + switch (gHighScoreScreenState.nextSubState) { case 0: - if (++gUnknown_02002858.unk1E > 8) + if (++gHighScoreScreenState.paletteAnimTimer > 8) { - gUnknown_02002858.unk1E = 0; - sub_F8B0(0, 0, gUnknown_02002858.unk1C); - if (++gUnknown_02002858.unk1C > 2) - gUnknown_02002858.unk1C = 0; + gHighScoreScreenState.paletteAnimTimer = 0; + AnimateScoreTilemapPalette(0, 0, gHighScoreScreenState.paletteAnimPhase); + if (++gHighScoreScreenState.paletteAnimPhase > 2) + gHighScoreScreenState.paletteAnimPhase = 0; } - if (gUnknown_02002858.unk8 > 600) + if (gHighScoreScreenState.displayTimer > 600) { - gUnknown_02002858.unk8 = 0; - gUnknown_02002858.unk1E = 0; - gUnknown_02002858.unk1C = 0; - gUnknown_02002858.unkA = 1; + gHighScoreScreenState.displayTimer = 0; + gHighScoreScreenState.paletteAnimTimer = 0; + gHighScoreScreenState.paletteAnimPhase = 0; + gHighScoreScreenState.nextSubState = 1; } break; case 1: - gUnknown_02002882 += 8; - if (gUnknown_02002882 >= 240) + gScrollXOffset += 8; + if (gScrollXOffset >= 240) { - gUnknown_02002858.unk8 = 0; - gUnknown_02002858.unkA = 2; + gHighScoreScreenState.displayTimer = 0; + gHighScoreScreenState.nextSubState = 2; } - gMain.bgOffsets[3].xOffset = gUnknown_02002882; - gMain.bgOffsets[2].xOffset = gUnknown_02002882; + gMain.bgOffsets[3].xOffset = gScrollXOffset; + gMain.bgOffsets[2].xOffset = gScrollXOffset; break; case 2: - if (++gUnknown_02002858.unk1E > 8) + if (++gHighScoreScreenState.paletteAnimTimer > 8) { - gUnknown_02002858.unk1E = 0; - sub_F8B0(1, 0, gUnknown_02002858.unk1C); - if (++gUnknown_02002858.unk1C > 2) - gUnknown_02002858.unk1C = 0; + gHighScoreScreenState.paletteAnimTimer = 0; + AnimateScoreTilemapPalette(1, 0, gHighScoreScreenState.paletteAnimPhase); + if (++gHighScoreScreenState.paletteAnimPhase > 2) + gHighScoreScreenState.paletteAnimPhase = 0; } - if (gUnknown_02002858.unk8 > 600) + if (gHighScoreScreenState.displayTimer > 600) { - gUnknown_02002858.unk8 = 0; - gUnknown_02002858.unk24 = STATE_INTRO; + gHighScoreScreenState.displayTimer = 0; + gHighScoreScreenState.nextIdleState = STATE_INTRO; gMain.subState++; } break; } - gUnknown_02002858.unk8++; - DmaCopy16(3, gUnknown_03005C00, 0x6000000, 0x1000); + gHighScoreScreenState.displayTimer++; + DmaCopy16(3, gBG0TilemapBuffer, 0x6000000, 0x1000); if (JOY_NEW(START_BUTTON | A_BUTTON | B_BUTTON)) { m4aSongNumStart(SE_MENU_CANCEL); - gUnknown_02002858.unk24 = STATE_TITLE; + gHighScoreScreenState.nextIdleState = STATE_TITLE; gMain.subState++; } } -void IdleHighScore_State2_E0C4(void) +void IdleHighScore_Exit(void) { - sub_02B4(); + FadeOutScreen(); m4aMPlayAllStop(); - sub_0D10(); - SetMainGameState(gUnknown_02002858.unk24); + DisableVBlankInterrupts(); + SetMainGameState(gHighScoreScreenState.nextIdleState); } -void HighScore_State12_E0EC(void) +void HighScore_ReloadAfterLink(void) { - ResetSomeGraphicsRelatedStuff(); + ResetDisplayState(); REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_FORCED_BLANK; REG_BG2CNT = 0x4006; REG_DISPCNT |= DISPCNT_BG2_ON; REG_BG3CNT = 0x420f; REG_DISPCNT |= DISPCNT_BG3_ON; gMain.dispcntBackup = REG_DISPCNT; - DmaCopy16(3, gUnknown_0809DBE0, (void*) PLTT, 0x200); + DmaCopy16(3, gHighScoreBG_Pals, (void*) PLTT, 0x200); DmaCopy16(3, gHighScoreText_Gfx, (void*) BG_VRAM + 0x4000, 0x4800); DmaCopy16(3, gHighScoreBallWatermark_Gfx, (void *)BG_VRAM + 0xC000, 0x2C00); - DmaCopy16(3, gUnknown_080947A0, gUnknown_03005C00, 0x1000); - DmaCopy16(3, gUnknown_08099FC0, (void *)BG_SCREEN_ADDR(2), 0x1000); - DmaCopy16(3, gUnknown_0809DDE0, (void *)OBJ_PLTT, 0x20); + DmaCopy16(3, gHighScoreScoreTable_Tilemap, gBG0TilemapBuffer, 0x1000); + DmaCopy16(3, gHighScoreBallWatermark_Tilemap, (void *)BG_SCREEN_ADDR(2), 0x1000); + DmaCopy16(3, gHighScoreSprite_Pals, (void *)OBJ_PLTT, 0x20); DmaCopy16(3, gHighScoreDialogs_Gfx, (void *)OBJ_VRAM0, 0x4420); - sub_DEB4(); - sub_EE64(); - DmaCopy16(3, gUnknown_03005C00,0x6000000, 0x1000); + InitIdleHighScoreData(); + DrawAllHighScoreText(); + DmaCopy16(3, gBG0TilemapBuffer,0x6000000, 0x1000); m4aSongNumStart(MUS_HIGH_SCORE); - sub_0CBC(); - sub_024C(); + EnableVBlankInterrupts(); + FadeInScreen(); gMain.subState++; } -void HighScore_State13_E230(void) +void HighScore_ShowMergedScores(void) { - switch (gUnknown_02002858.unkA) + switch (gHighScoreScreenState.nextSubState) { case 0: - if (gUnknown_0202BED8 != -1) + if (gMergedRubyScoreIndex != -1) { - if (++gUnknown_02002858.unk1E > 8) + if (++gHighScoreScreenState.paletteAnimTimer > 8) { - gUnknown_02002858.unk1E = 0; - sub_F8B0(0, gUnknown_0202BED8, gUnknown_02002858.unk1C); - if (++gUnknown_02002858.unk1C > 2) - gUnknown_02002858.unk1C = 0; + gHighScoreScreenState.paletteAnimTimer = 0; + AnimateScoreTilemapPalette(0, gMergedRubyScoreIndex, gHighScoreScreenState.paletteAnimPhase); + if (++gHighScoreScreenState.paletteAnimPhase > 2) + gHighScoreScreenState.paletteAnimPhase = 0; } } - if (gUnknown_02002858.unk8 > 120) + if (gHighScoreScreenState.displayTimer > 120) { - gUnknown_02002858.unk8 = 0; - gUnknown_02002858.unk1E = 0; - gUnknown_02002858.unk1C = 0; - gUnknown_02002858.unkA = 1; + gHighScoreScreenState.displayTimer = 0; + gHighScoreScreenState.paletteAnimTimer = 0; + gHighScoreScreenState.paletteAnimPhase = 0; + gHighScoreScreenState.nextSubState = 1; } break; case 1: - gUnknown_02002882 += 8; - if (gUnknown_02002882 >= 240) + gScrollXOffset += 8; + if (gScrollXOffset >= 240) { - gUnknown_02002858.unk8 = 0; - gUnknown_02002858.unkA = 2; + gHighScoreScreenState.displayTimer = 0; + gHighScoreScreenState.nextSubState = 2; } - gMain.bgOffsets[3].xOffset = gUnknown_02002882; - gMain.bgOffsets[2].xOffset = gUnknown_02002882; + gMain.bgOffsets[3].xOffset = gScrollXOffset; + gMain.bgOffsets[2].xOffset = gScrollXOffset; break; case 2: - if (gUnknown_0201B170 != -1) + if (gMergedSapphireScoreIndex != -1) { - if (++gUnknown_02002858.unk1E > 8) + if (++gHighScoreScreenState.paletteAnimTimer > 8) { - gUnknown_02002858.unk1E = 0; - sub_F8B0(1, gUnknown_0201B170, gUnknown_02002858.unk1C); - if (++gUnknown_02002858.unk1C > 2) - gUnknown_02002858.unk1C = 0; + gHighScoreScreenState.paletteAnimTimer = 0; + AnimateScoreTilemapPalette(1, gMergedSapphireScoreIndex, gHighScoreScreenState.paletteAnimPhase); + if (++gHighScoreScreenState.paletteAnimPhase > 2) + gHighScoreScreenState.paletteAnimPhase = 0; } } - if (gUnknown_02002858.unk8 > 120) + if (gHighScoreScreenState.displayTimer > 120) { - gUnknown_02002858.unk8 = 0; + gHighScoreScreenState.displayTimer = 0; gMain.subState++; } break; } - gUnknown_02002858.unk8++; - DmaCopy16(3, gUnknown_03005C00, 0x6000000, 0x1000); + gHighScoreScreenState.displayTimer++; + DmaCopy16(3, gBG0TilemapBuffer, 0x6000000, 0x1000); if (JOY_NEW(START_BUTTON | A_BUTTON | B_BUTTON)) { @@ -926,25 +926,25 @@ void HighScore_State13_E230(void) } } -void HighScore_State14_E390(void) +void HighScore_ReturnToMain(void) { - sub_02B4(); + FadeOutScreen(); m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); SetMainGameState(STATE_SCORES_MAIN); } -void sub_E3A8(void) +void UpdateNameEntryCursor(void) { int i; struct SpriteGroup *spriteGroup; - spriteGroup = &gMain_spriteGroups[gUnknown_02002858.unk12]; + spriteGroup = &gMain_spriteGroups[gHighScoreScreenState.nameFlashToggle]; spriteGroup->available = TRUE; - LoadSpriteSets(gUnknown_086A7DA8, 2, gMain_spriteGroups); + LoadSpriteSets(gNameEntryCursorSpriteSets, 2, gMain_spriteGroups); - spriteGroup->baseX = gUnknown_080797F0[gUnknown_02002858.mainField][gUnknown_02002858.highScoreIndex].x + gUnknown_02002858.currentNameCharIndex * 8; - spriteGroup->baseY = gUnknown_080797F0[gUnknown_02002858.mainField][gUnknown_02002858.highScoreIndex].y; + spriteGroup->baseX = gHighScoreNamePixelPositions[gHighScoreScreenState.mainField][gHighScoreScreenState.highScoreIndex].x + gHighScoreScreenState.currentNameCharIndex * 8; + spriteGroup->baseY = gHighScoreNamePixelPositions[gHighScoreScreenState.mainField][gHighScoreScreenState.highScoreIndex].y; for (i = 0; i < 2; i++) { gOamBuffer[spriteGroup->oam[i].oamId].x = spriteGroup->oam[i].xOffset + spriteGroup->baseX; @@ -954,11 +954,11 @@ void sub_E3A8(void) spriteGroup->available = FALSE; } -extern s8 gUnknown_0200287D; +extern s8 gHighScoreDisplayMode; #ifdef NONMATCHING -static inline void sub_E464_HELPER(int x, struct SpriteGroup *spriteGroup, struct SpriteGroup *spriteGroup4, struct SpriteGroup *spriteGroup3) +static inline void RenderHighScoreSprites_HELPER(int x, struct SpriteGroup *spriteGroup, struct SpriteGroup *spriteGroup4, struct SpriteGroup *spriteGroup3) { int i; const struct SpriteSet *spriteSet; @@ -966,14 +966,14 @@ static inline void sub_E464_HELPER(int x, struct SpriteGroup *spriteGroup, struc spriteGroup->baseX = x; spriteGroup->baseY = 144; oamData = &spriteGroup->oam[0]; - gOamBuffer[oamData->oamId].tileNum = gUnknown_02002858.unk1A * 2 + 2; + gOamBuffer[oamData->oamId].tileNum = gHighScoreScreenState.flashElapsedFrames * 2 + 2; gOamBuffer[oamData->oamId].x = oamData->xOffset + spriteGroup->baseX; gOamBuffer[oamData->oamId].y = oamData->yOffset + spriteGroup->baseY; } // This one is tough. I think there might be an inline function used for the shared logic // of the two main if statements. -void sub_E464(void) +void RenderHighScoreSprites(void) { int i; int count; @@ -983,30 +983,30 @@ void sub_E464(void) struct SpriteGroup *spriteGroup3; struct SpriteGroup *spriteGroup4; struct SpriteGroup *spriteGroup5; - register struct unkStruct_2002858 *var1_02002858 asm("r9"); + register struct HighScoreScreenState *var1_02002858 asm("r9"); const struct SpriteSet *spriteSet; struct OamDataSimple *oamData; spriteGroups = gMain_spriteGroups; spriteGroup1 = spriteGroups; spriteGroup2 = &spriteGroups[1]; - spriteGroup3 = &spriteGroups[(s8)gUnknown_0202BEBC + 2]; - var1_02002858 = &gUnknown_02002858; - spriteGroup4 = &spriteGroups[gUnknown_0200287D + 7]; + spriteGroup3 = &spriteGroups[(s8)gDialogType + 2]; + var1_02002858 = &gHighScoreScreenState; + spriteGroup4 = &spriteGroups[gHighScoreDisplayMode + 7]; - if (gUnknown_02002882 == 0) + if (gScrollXOffset == 0) { spriteGroups->available = TRUE; spriteGroup2->available = FALSE; - spriteGroup3->available = gUnknown_0201B178; - spriteGroup4->available = var1_02002858->unk26; - LoadSpriteSets(gUnknown_086A7DB0, 9, spriteGroups); - sub_E464_HELPER(220, spriteGroup1, spriteGroup4, spriteGroup3); + spriteGroup3->available = gShowDialogFlag; + spriteGroup4->available = var1_02002858->collisionCooldownTimer; + LoadSpriteSets(gHighScoreScreenSpriteSets, 9, spriteGroups); + RenderHighScoreSprites_HELPER(220, spriteGroup1, spriteGroup4, spriteGroup3); if (spriteGroup4->available == 1) { spriteGroup4->baseX = 84; spriteGroup4->baseY = 150; - spriteSet = gUnknown_086A7DB0[gUnknown_0200287D + 7]; + spriteSet = gHighScoreScreenSpriteSets[gHighScoreDisplayMode + 7]; for (i = 0; i < spriteSet->count; i++) { oamData = &spriteGroup4->oam[i]; @@ -1016,7 +1016,7 @@ void sub_E464(void) } if (spriteGroup3->available == 1) { - switch ((s8)gUnknown_0202BEBC) + switch ((s8)gDialogType) { case 0: case 4: @@ -1028,7 +1028,7 @@ void sub_E464(void) spriteGroup3->baseY = 80; break; } - spriteSet = gUnknown_086A7DB0[(s8)gUnknown_0202BEBC + 2]; + spriteSet = gHighScoreScreenSpriteSets[(s8)gDialogType + 2]; for (i = 0; i < spriteSet->count; i++) { oamData = &spriteGroup3->oam[i]; @@ -1037,19 +1037,19 @@ void sub_E464(void) } } } - else if (gUnknown_02002882 == 240) + else if (gScrollXOffset == 240) { spriteGroup1->available = FALSE; spriteGroup2->available = TRUE; - spriteGroup3->available = gUnknown_0201B178; - spriteGroup4->available = var1_02002858->unk26; - LoadSpriteSets(gUnknown_086A7DB0, 2, gMain_spriteGroups); - sub_E464_HELPER(4, spriteGroup2, spriteGroup4, spriteGroup3); + spriteGroup3->available = gShowDialogFlag; + spriteGroup4->available = var1_02002858->collisionCooldownTimer; + LoadSpriteSets(gHighScoreScreenSpriteSets, 2, gMain_spriteGroups); + RenderHighScoreSprites_HELPER(4, spriteGroup2, spriteGroup4, spriteGroup3); if (spriteGroup4->available == 1) { spriteGroup4->baseX = 84; spriteGroup4->baseY = 150; - spriteSet = gUnknown_086A7DB0[gUnknown_0200287D + 7]; + spriteSet = gHighScoreScreenSpriteSets[gHighScoreDisplayMode + 7]; for (i = 0; i < spriteSet->count; i++) { oamData = &spriteGroup4->oam[i]; @@ -1059,7 +1059,7 @@ void sub_E464(void) } if (spriteGroup3->available == 1) { - switch ((s8)gUnknown_0202BEBC) + switch ((s8)gDialogType) { case 0: case 4: @@ -1071,7 +1071,7 @@ void sub_E464(void) spriteGroup3->baseY = 80; break; } - spriteSet = gUnknown_086A7DB0[(s8)gUnknown_0202BEBC + 2]; + spriteSet = gHighScoreScreenSpriteSets[(s8)gDialogType + 2]; for (i = 0; i < spriteSet->count; i++) { oamData = &spriteGroup3->oam[i]; @@ -1084,7 +1084,7 @@ void sub_E464(void) { spriteGroup1->available = FALSE; spriteGroup2->available = FALSE; - LoadSpriteSets(gUnknown_086A7DB0, 9, gMain_spriteGroups); + LoadSpriteSets(gHighScoreScreenSpriteSets, 9, gMain_spriteGroups); } spriteGroup3->available = FALSE; @@ -1092,7 +1092,7 @@ void sub_E464(void) } #else NAKED -void sub_E464(void) +void RenderHighScoreSprites(void) { asm_unified("\n\ push {r4, r5, r6, r7, lr}\n\ @@ -1106,7 +1106,7 @@ void sub_E464(void) adds r0, r0, r6\n\ mov sl, r0\n\ mov r5, sl\n\ - ldr r0, _0800E5D0 @ =gUnknown_0202BEBC\n\ + ldr r0, _0800E5D0 @ =gDialogType\n\ ldrb r0, [r0]\n\ lsls r0, r0, #0x18\n\ asrs r0, r0, #0x18\n\ @@ -1117,9 +1117,9 @@ void sub_E464(void) lsls r3, r3, #1\n\ adds r0, r6, r3\n\ adds r7, r1, r0\n\ - ldr r0, _0800E5D4 @ =gUnknown_02002858\n\ + ldr r0, _0800E5D4 @ =gHighScoreScreenState\n\ mov sb, r0\n\ - ldr r1, _0800E5D8 @ =gUnknown_0200287D\n\ + ldr r1, _0800E5D8 @ =gHighScoreDisplayMode\n\ movs r0, #0\n\ ldrsb r0, [r1, r0]\n\ adds r1, r0, #0\n\ @@ -1129,7 +1129,7 @@ void sub_E464(void) adds r0, r6, r2\n\ adds r1, r1, r0\n\ mov r8, r1\n\ - ldr r0, _0800E5DC @ =gUnknown_02002882\n\ + ldr r0, _0800E5DC @ =gScrollXOffset\n\ movs r3, #0\n\ ldrsh r1, [r0, r3]\n\ cmp r1, #0\n\ @@ -1139,7 +1139,7 @@ _0800E4B4:\n\ movs r0, #1\n\ strh r0, [r6]\n\ strh r1, [r5]\n\ - ldr r0, _0800E5E0 @ =gUnknown_0201B178\n\ + ldr r0, _0800E5E0 @ =gShowDialogFlag\n\ ldrb r0, [r0]\n\ lsls r0, r0, #0x18\n\ asrs r0, r0, #0x18\n\ @@ -1151,7 +1151,7 @@ _0800E4B4:\n\ asrs r0, r0, #0x18\n\ mov r1, r8\n\ strh r0, [r1]\n\ - ldr r0, _0800E5E4 @ =gUnknown_086A7DB0\n\ + ldr r0, _0800E5E4 @ =gHighScoreScreenSpriteSets\n\ movs r1, #9\n\ adds r2, r6, #0\n\ bl LoadSpriteSets\n\ @@ -1210,12 +1210,12 @@ _0800E4B4:\n\ strh r0, [r1, #2]\n\ movs r0, #0x96\n\ strh r0, [r1, #4]\n\ - ldr r2, _0800E5D8 @ =gUnknown_0200287D\n\ + ldr r2, _0800E5D8 @ =gHighScoreDisplayMode\n\ movs r0, #0\n\ ldrsb r0, [r2, r0]\n\ adds r0, #7\n\ lsls r0, r0, #2\n\ - ldr r3, _0800E5E4 @ =gUnknown_086A7DB0\n\ + ldr r3, _0800E5E4 @ =gHighScoreScreenSpriteSets\n\ adds r0, r0, r3\n\ ldr r6, [r0]\n\ movs r5, #0\n\ @@ -1265,7 +1265,7 @@ _0800E5AA:\n\ beq _0800E5B2\n\ b _0800E846\n\ _0800E5B2:\n\ - ldr r0, _0800E5D0 @ =gUnknown_0202BEBC\n\ + ldr r0, _0800E5D0 @ =gDialogType\n\ movs r1, #0\n\ ldrsb r1, [r0, r1]\n\ adds r2, r0, #0\n\ @@ -1280,12 +1280,12 @@ _0800E5C2:\n\ b _0800E602\n\ .align 2, 0\n\ _0800E5CC: .4byte gMain_spriteGroups\n\ -_0800E5D0: .4byte gUnknown_0202BEBC\n\ -_0800E5D4: .4byte gUnknown_02002858\n\ -_0800E5D8: .4byte gUnknown_0200287D\n\ -_0800E5DC: .4byte gUnknown_02002882\n\ -_0800E5E0: .4byte gUnknown_0201B178\n\ -_0800E5E4: .4byte gUnknown_086A7DB0\n\ +_0800E5D0: .4byte gDialogType\n\ +_0800E5D4: .4byte gHighScoreScreenState\n\ +_0800E5D8: .4byte gHighScoreDisplayMode\n\ +_0800E5DC: .4byte gScrollXOffset\n\ +_0800E5E0: .4byte gShowDialogFlag\n\ +_0800E5E4: .4byte gHighScoreScreenSpriteSets\n\ _0800E5E8: .4byte gOamBuffer\n\ _0800E5EC: .4byte 0x000003FF\n\ _0800E5F0: .4byte 0xFFFFFC00\n\ @@ -1297,7 +1297,7 @@ _0800E5FC:\n\ movs r0, #0x50\n\ _0800E602:\n\ strh r0, [r7, #4]\n\ - ldr r1, _0800E664 @ =gUnknown_086A7DB0\n\ + ldr r1, _0800E664 @ =gHighScoreScreenSpriteSets\n\ movs r0, #0\n\ ldrsb r0, [r2, r0]\n\ adds r0, #2\n\ @@ -1347,7 +1347,7 @@ _0800E628:\n\ blt _0800E628\n\ b _0800E846\n\ .align 2, 0\n\ -_0800E664: .4byte gUnknown_086A7DB0\n\ +_0800E664: .4byte gHighScoreScreenSpriteSets\n\ _0800E668: .4byte gOamBuffer\n\ _0800E66C: .4byte 0xFFFFFE00\n\ _0800E670: .4byte 0x000001FF\n\ @@ -1361,7 +1361,7 @@ _0800E67A:\n\ movs r0, #1\n\ mov r1, sl\n\ strh r0, [r1]\n\ - ldr r0, _0800E79C @ =gUnknown_0201B178\n\ + ldr r0, _0800E79C @ =gShowDialogFlag\n\ ldrb r0, [r0]\n\ lsls r0, r0, #0x18\n\ asrs r0, r0, #0x18\n\ @@ -1373,7 +1373,7 @@ _0800E67A:\n\ asrs r0, r0, #0x18\n\ mov r2, r8\n\ strh r0, [r2]\n\ - ldr r0, _0800E7A0 @ =gUnknown_086A7DB0\n\ + ldr r0, _0800E7A0 @ =gHighScoreScreenSpriteSets\n\ movs r1, #9\n\ adds r2, r6, #0\n\ bl LoadSpriteSets\n\ @@ -1435,12 +1435,12 @@ _0800E67A:\n\ strh r0, [r1, #2]\n\ movs r0, #0x96\n\ strh r0, [r1, #4]\n\ - ldr r2, _0800E7B8 @ =gUnknown_0200287D\n\ + ldr r2, _0800E7B8 @ =gHighScoreDisplayMode\n\ movs r0, #0\n\ ldrsb r0, [r2, r0]\n\ adds r0, #7\n\ lsls r0, r0, #2\n\ - ldr r3, _0800E7A0 @ =gUnknown_086A7DB0\n\ + ldr r3, _0800E7A0 @ =gHighScoreScreenSpriteSets\n\ adds r0, r0, r3\n\ ldr r6, [r0]\n\ movs r5, #0\n\ @@ -1489,7 +1489,7 @@ _0800E77C:\n\ ldrh r0, [r7]\n\ cmp r0, #1\n\ bne _0800E846\n\ - ldr r0, _0800E7BC @ =gUnknown_0202BEBC\n\ + ldr r0, _0800E7BC @ =gDialogType\n\ movs r1, #0\n\ ldrsb r1, [r0, r1]\n\ adds r2, r0, #0\n\ @@ -1503,22 +1503,22 @@ _0800E792:\n\ movs r0, #0x64\n\ b _0800E7C6\n\ .align 2, 0\n\ -_0800E79C: .4byte gUnknown_0201B178\n\ -_0800E7A0: .4byte gUnknown_086A7DB0\n\ +_0800E79C: .4byte gShowDialogFlag\n\ +_0800E7A0: .4byte gHighScoreScreenSpriteSets\n\ _0800E7A4: .4byte gOamBuffer\n\ _0800E7A8: .4byte 0x000003FF\n\ _0800E7AC: .4byte 0xFFFFFC00\n\ _0800E7B0: .4byte 0x000001FF\n\ _0800E7B4: .4byte 0xFFFFFE00\n\ -_0800E7B8: .4byte gUnknown_0200287D\n\ -_0800E7BC: .4byte gUnknown_0202BEBC\n\ +_0800E7B8: .4byte gHighScoreDisplayMode\n\ +_0800E7BC: .4byte gDialogType\n\ _0800E7C0:\n\ movs r0, #0x78\n\ strh r0, [r7, #2]\n\ movs r0, #0x50\n\ _0800E7C6:\n\ strh r0, [r7, #4]\n\ - ldr r1, _0800E824 @ =gUnknown_086A7DB0\n\ + ldr r1, _0800E824 @ =gHighScoreScreenSpriteSets\n\ movs r0, #0\n\ ldrsb r0, [r2, r0]\n\ adds r0, #2\n\ @@ -1566,7 +1566,7 @@ _0800E7EA:\n\ blt _0800E7EA\n\ b _0800E846\n\ .align 2, 0\n\ -_0800E824: .4byte gUnknown_086A7DB0\n\ +_0800E824: .4byte gHighScoreScreenSpriteSets\n\ _0800E828: .4byte gOamBuffer\n\ _0800E82C: .4byte 0xFFFFFE00\n\ _0800E830: .4byte 0x000001FF\n\ @@ -1575,7 +1575,7 @@ _0800E834:\n\ strh r0, [r6]\n\ mov r1, sl\n\ strh r0, [r1]\n\ - ldr r0, _0800E85C @ =gUnknown_086A7DB0\n\ + ldr r0, _0800E85C @ =gHighScoreScreenSpriteSets\n\ movs r1, #9\n\ adds r2, r6, #0\n\ bl LoadSpriteSets\n\ @@ -1592,23 +1592,23 @@ _0800E846:\n\ pop {r0}\n\ bx r0\n\ .align 2, 0\n\ -_0800E85C: .4byte gUnknown_086A7DB0\n\ +_0800E85C: .4byte gHighScoreScreenSpriteSets\n\ "); } #endif -void sub_E860(void) +void RenderCompletionBanner(void) { int i; struct SpriteGroup *spriteGroup; - spriteGroup = &gMain_spriteGroups[gUnknown_0202C580]; - spriteGroup->available = gUnknown_0201C18C; - LoadSpriteSets(gUnknown_086A7DD4, 5, gMain_spriteGroups); + spriteGroup = &gMain_spriteGroups[gCompletionBannerFrame]; + spriteGroup->available = gCompletionBannerVisible; + LoadSpriteSets(gCompletionBannerSpriteSets, 5, gMain_spriteGroups); if (spriteGroup->available == 1) { spriteGroup->baseX = 120; - spriteGroup->baseY = gUnknown_0201A4B8; + spriteGroup->baseY = gCompletionBannerY; for (i = 0; i < 4; i++) { gOamBuffer[spriteGroup->oam[i].oamId].x = spriteGroup->oam[i].xOffset + spriteGroup->baseX; @@ -1619,179 +1619,179 @@ void sub_E860(void) spriteGroup->available = FALSE; } -void sub_E908(void) +void InitLinkExchangeBuffers(void) { - gUnknown_0202C5F0[0] = 0xCFCF; - gUnknown_0201C1B0 = 1; - gUnknown_0202C59C = 1; - gUnknown_0202ADE4 = 0; - gUnknown_0201A4BC = 0; - gUnknown_0202C598 = 0; - gUnknown_0202C54C = 0; + gLinkSendBuffer[0] = 0xCFCF; + gLinkExchangeCommand = 1; + gLinkPacketCounter = 1; + gLinkExchangeResult = 0; + gLinkExchangeSendPhase = 0; + gLinkExchangeRecvPhase = 0; + gLinkExchangeTimeout = 0; } -s16 sub_E94C(void) +s16 HighScore_ProcessLinkExchange(void) { s16 result; if (gLink.isMaster) - result = sub_EBEC(); + result = MasterReceiveHighScores(); else - result = sub_ED28(); + result = SlaveReceiveHighScores(); return result; } -s16 sub_E970(void) +s16 ProcessLinkSendData(void) { s16 result; if (gLink.isMaster) - result = sub_E994(); + result = MasterSendHighScores(); else - result = sub_EAC0(); + result = SlaveSendHighScores(); return result; } -s16 sub_E994(void) +s16 MasterSendHighScores(void) { int i; struct HighScoreEntry *topScore; - if (gUnknown_0202ADE4 == 0) + if (gLinkExchangeResult == 0) { - switch (gUnknown_0201A4BC) + switch (gLinkExchangeSendPhase) { case 0: if (JOY_NEW(A_BUTTON)) { - gUnknown_0202C5F0[0] = 0xDEDE; + gLinkSendBuffer[0] = 0xDEDE; } else { for (i = 0; i < 8; i++) - gUnknown_0202C5F0[i] = 0; + gLinkSendBuffer[i] = 0; } break; case 1: - gUnknown_0202C5F0[0] = 0xEDED; + gLinkSendBuffer[0] = 0xEDED; break; } } else { - if (gUnknown_0202C59C < 8) + if (gLinkPacketCounter < 8) { for (i = 0; i < 8; i++) - gUnknown_0202C5F0[i] = 0xCFCF; + gLinkSendBuffer[i] = 0xCFCF; } - else if (gUnknown_0202C59C < 10) + else if (gLinkPacketCounter < 10) { - u16 field = gUnknown_0202C59C - 8; - gUnknown_0202C5F0[0] = gUnknown_0202C59C; - gUnknown_0202C5F0[1] = (gUnknown_0202C610[field][0].data.parts.name[0] << 8) | - gUnknown_0202C610[field][0].data.parts.name[1]; - gUnknown_0202C5F0[2] = (gUnknown_0202C610[field][0].data.parts.name[2] << 8) | - gUnknown_0202C610[field][0].data.parts.name[3]; - gUnknown_0202C5F0[3] = gUnknown_0202C610[field][0].data.parts.scoreHi >> 16; - gUnknown_0202C5F0[4] = gUnknown_0202C610[field][0].data.parts.scoreHi; - gUnknown_0202C5F0[5] = gUnknown_0202C610[field][0].data.parts.scoreLo >> 16; - gUnknown_0202C5F0[6] = gUnknown_0202C610[field][0].data.parts.scoreLo; - gUnknown_0202C5F0[7] = 0; + u16 field = gLinkPacketCounter - 8; + gLinkSendBuffer[0] = gLinkPacketCounter; + gLinkSendBuffer[1] = (gWorkingHighScores[field][0].data.parts.name[0] << 8) | + gWorkingHighScores[field][0].data.parts.name[1]; + gLinkSendBuffer[2] = (gWorkingHighScores[field][0].data.parts.name[2] << 8) | + gWorkingHighScores[field][0].data.parts.name[3]; + gLinkSendBuffer[3] = gWorkingHighScores[field][0].data.parts.scoreHi >> 16; + gLinkSendBuffer[4] = gWorkingHighScores[field][0].data.parts.scoreHi; + gLinkSendBuffer[5] = gWorkingHighScores[field][0].data.parts.scoreLo >> 16; + gLinkSendBuffer[6] = gWorkingHighScores[field][0].data.parts.scoreLo; + gLinkSendBuffer[7] = 0; } else { for (i = 0; i < 8; i++) - gUnknown_0202C5F0[i] = 0; + gLinkSendBuffer[i] = 0; } - gUnknown_0202C59C++; + gLinkPacketCounter++; } return 0; } -s16 sub_EAC0(void) +s16 SlaveSendHighScores(void) { int i; struct HighScoreEntry *topScore; - if (gUnknown_0202ADE4 == 0) + if (gLinkExchangeResult == 0) { - switch (gUnknown_0202C598) + switch (gLinkExchangeRecvPhase) { case 0: if (JOY_NEW(A_BUTTON)) { - gUnknown_0202C5F0[0] = 0xDEDE; + gLinkSendBuffer[0] = 0xDEDE; } else { for (i = 0; i < 8; i++) - gUnknown_0202C5F0[i] = 0; + gLinkSendBuffer[i] = 0; } break; case 1: - gUnknown_0202C5F0[0] = 0xEDED; + gLinkSendBuffer[0] = 0xEDED; break; } } else { - if (gUnknown_0202C59C < 8) + if (gLinkPacketCounter < 8) { for (i = 0; i < 8; i++) - gUnknown_0202C5F0[i] = 0xCFCF; + gLinkSendBuffer[i] = 0xCFCF; } - else if (gUnknown_0202C59C < 10) + else if (gLinkPacketCounter < 10) { - u16 field = gUnknown_0202C59C - 8; - gUnknown_0202C5F0[0] = gUnknown_0202C59C; - gUnknown_0202C5F0[1] = (gUnknown_0202C610[field][0].data.parts.name[0] << 8) | - gUnknown_0202C610[field][0].data.parts.name[1]; - gUnknown_0202C5F0[2] = (gUnknown_0202C610[field][0].data.parts.name[2] << 8) | - gUnknown_0202C610[field][0].data.parts.name[3]; - gUnknown_0202C5F0[3] = gUnknown_0202C610[field][0].data.parts.scoreHi >> 16; - gUnknown_0202C5F0[4] = gUnknown_0202C610[field][0].data.parts.scoreHi; - gUnknown_0202C5F0[5] = gUnknown_0202C610[field][0].data.parts.scoreLo >> 16; - gUnknown_0202C5F0[6] = gUnknown_0202C610[field][0].data.parts.scoreLo; - gUnknown_0202C5F0[7] = 0; + u16 field = gLinkPacketCounter - 8; + gLinkSendBuffer[0] = gLinkPacketCounter; + gLinkSendBuffer[1] = (gWorkingHighScores[field][0].data.parts.name[0] << 8) | + gWorkingHighScores[field][0].data.parts.name[1]; + gLinkSendBuffer[2] = (gWorkingHighScores[field][0].data.parts.name[2] << 8) | + gWorkingHighScores[field][0].data.parts.name[3]; + gLinkSendBuffer[3] = gWorkingHighScores[field][0].data.parts.scoreHi >> 16; + gLinkSendBuffer[4] = gWorkingHighScores[field][0].data.parts.scoreHi; + gLinkSendBuffer[5] = gWorkingHighScores[field][0].data.parts.scoreLo >> 16; + gLinkSendBuffer[6] = gWorkingHighScores[field][0].data.parts.scoreLo; + gLinkSendBuffer[7] = 0; } else { for (i = 0; i < 8; i++) - gUnknown_0202C5F0[i] = 0; + gLinkSendBuffer[i] = 0; } - gUnknown_0202C59C++; + gLinkPacketCounter++; } return 0; } -s16 sub_EBEC(void) +s16 MasterReceiveHighScores(void) { int i, j; struct HighScoreEntry *topScore; u16 field; - if (gUnknown_0202ADE4 == 0) + if (gLinkExchangeResult == 0) { - switch (gUnknown_0201A4BC) + switch (gLinkExchangeSendPhase) { case 0: - if (gUnknown_0201A4D0[0][0] == 0xDEDE || gUnknown_0201A4D0[0][1] == 0xDEDE) - gUnknown_0201A4BC = 1; + if (gLinkRecvBuffer[0][0] == 0xDEDE || gLinkRecvBuffer[0][1] == 0xDEDE) + gLinkExchangeSendPhase = 1; break; case 1: - if (gUnknown_0201A4D0[0][0] == 0xEDED && gUnknown_0201A4D0[0][1] == 0xEDED) + if (gLinkRecvBuffer[0][0] == 0xEDED && gLinkRecvBuffer[0][1] == 0xEDED) { - gUnknown_0202ADE4 = -1; - gUnknown_0202BEBC = 1; - gUnknown_0202C59C = 1; + gLinkExchangeResult = -1; + gDialogType = 1; + gLinkPacketCounter = 1; } else { - if (++gUnknown_0202C54C > 10) + if (++gLinkExchangeTimeout > 10) return 1; } break; @@ -1799,54 +1799,54 @@ s16 sub_EBEC(void) } else { - field = gUnknown_0201A4D0[0][1] - 8; + field = gLinkRecvBuffer[0][1] - 8; if (field > 1) return 0; - gUnknown_0201C1B0 = gUnknown_0201A4D0[0][1]; - gUnknown_0202C550[field].data.parts.name[0] = (gUnknown_0201A4D0[1][1] >> 8) & 0xFF; - gUnknown_0202C550[field].data.parts.name[1] = gUnknown_0201A4D0[1][1] & 0xFF; - gUnknown_0202C550[field].data.parts.name[2] = (gUnknown_0201A4D0[2][1] >> 8) & 0xFF; - gUnknown_0202C550[field].data.parts.name[3] = gUnknown_0201A4D0[2][1] & 0xFF; - gUnknown_0202C550[field].data.parts.scoreHi = (gUnknown_0201A4D0[3][1] << 16) | - gUnknown_0201A4D0[4][1]; - gUnknown_0202C550[field].data.parts.scoreLo = (gUnknown_0201A4D0[5][1] << 16) | - gUnknown_0201A4D0[6][1]; - if (gUnknown_0201C1B0 == 9) + gLinkExchangeCommand = gLinkRecvBuffer[0][1]; + gRemoteTopScores[field].data.parts.name[0] = (gLinkRecvBuffer[1][1] >> 8) & 0xFF; + gRemoteTopScores[field].data.parts.name[1] = gLinkRecvBuffer[1][1] & 0xFF; + gRemoteTopScores[field].data.parts.name[2] = (gLinkRecvBuffer[2][1] >> 8) & 0xFF; + gRemoteTopScores[field].data.parts.name[3] = gLinkRecvBuffer[2][1] & 0xFF; + gRemoteTopScores[field].data.parts.scoreHi = (gLinkRecvBuffer[3][1] << 16) | + gLinkRecvBuffer[4][1]; + gRemoteTopScores[field].data.parts.scoreLo = (gLinkRecvBuffer[5][1] << 16) | + gLinkRecvBuffer[6][1]; + if (gLinkExchangeCommand == 9) return -1; } for (i = 0; i < 8; i++) for (j = 0; j < 2; j++) - gUnknown_0201A4D0[i][j] = 0; + gLinkRecvBuffer[i][j] = 0; return 0; } -s16 sub_ED28(void) +s16 SlaveReceiveHighScores(void) { int i, j; struct HighScoreEntry *topScore; u16 field; - if (gUnknown_0202ADE4 == 0) + if (gLinkExchangeResult == 0) { - switch (gUnknown_0202C598) + switch (gLinkExchangeRecvPhase) { case 0: - if (gUnknown_0201A4D0[0][0] == 0xDEDE || gUnknown_0201A4D0[0][1] == 0xDEDE) - gUnknown_0202C598 = 1; + if (gLinkRecvBuffer[0][0] == 0xDEDE || gLinkRecvBuffer[0][1] == 0xDEDE) + gLinkExchangeRecvPhase = 1; break; case 1: - if (gUnknown_0201A4D0[0][0] == 0xEDED && gUnknown_0201A4D0[0][1] == 0xEDED) + if (gLinkRecvBuffer[0][0] == 0xEDED && gLinkRecvBuffer[0][1] == 0xEDED) { - gUnknown_0202ADE4 = -1; - gUnknown_0202BEBC = 1; - gUnknown_0202C59C = 1; + gLinkExchangeResult = -1; + gDialogType = 1; + gLinkPacketCounter = 1; } else { - if (++gUnknown_0202C54C > 10) + if (++gLinkExchangeTimeout > 10) return 1; } break; @@ -1854,38 +1854,38 @@ s16 sub_ED28(void) } else { - field = gUnknown_0201A4D0[0][0] - 8; + field = gLinkRecvBuffer[0][0] - 8; if (field > 1) return 0; - gUnknown_0201C1B0 = gUnknown_0201A4D0[0][0]; - gUnknown_0202C550[field].data.parts.name[0] = (gUnknown_0201A4D0[1][0] >> 8) & 0xFF; - gUnknown_0202C550[field].data.parts.name[1] = gUnknown_0201A4D0[1][0] & 0xFF; - gUnknown_0202C550[field].data.parts.name[2] = (gUnknown_0201A4D0[2][0] >> 8) & 0xFF; - gUnknown_0202C550[field].data.parts.name[3] = gUnknown_0201A4D0[2][0] & 0xFF; - gUnknown_0202C550[field].data.parts.scoreHi = (gUnknown_0201A4D0[3][0] << 16) | - gUnknown_0201A4D0[4][0]; - gUnknown_0202C550[field].data.parts.scoreLo = (gUnknown_0201A4D0[5][0] << 16) | - gUnknown_0201A4D0[6][0]; - if (gUnknown_0201C1B0 == 9) + gLinkExchangeCommand = gLinkRecvBuffer[0][0]; + gRemoteTopScores[field].data.parts.name[0] = (gLinkRecvBuffer[1][0] >> 8) & 0xFF; + gRemoteTopScores[field].data.parts.name[1] = gLinkRecvBuffer[1][0] & 0xFF; + gRemoteTopScores[field].data.parts.name[2] = (gLinkRecvBuffer[2][0] >> 8) & 0xFF; + gRemoteTopScores[field].data.parts.name[3] = gLinkRecvBuffer[2][0] & 0xFF; + gRemoteTopScores[field].data.parts.scoreHi = (gLinkRecvBuffer[3][0] << 16) | + gLinkRecvBuffer[4][0]; + gRemoteTopScores[field].data.parts.scoreLo = (gLinkRecvBuffer[5][0] << 16) | + gLinkRecvBuffer[6][0]; + if (gLinkExchangeCommand == 9) return -1; } for (i = 0; i < 8; i++) for (j = 0; j < 2; j++) - gUnknown_0201A4D0[i][j] = 0; + gLinkRecvBuffer[i][j] = 0; return 0; } -void sub_EE64(void) +void DrawAllHighScoreText(void) { int i, j; // Ruby Field Top name for (j = 0; j < HIGH_SCORE_NAME_LENGTH; j++) { - PrintString(gUnknown_086A7FAC[gUnknown_0202C610[FIELD_RUBY][0].data.parts.name[j]] + 0x80, 8, j + 6, 3, 1, 1); + PrintString(gHighScoreCharToTileMap[gWorkingHighScores[FIELD_RUBY][0].data.parts.name[j]] + 0x80, 8, j + 6, 3, 1, 1); } // Ruby Field 2nd-8th names @@ -1893,39 +1893,39 @@ void sub_EE64(void) { for (j = 0; j < HIGH_SCORE_NAME_LENGTH; j++) { - PrintString(gUnknown_086A7FAC[gUnknown_0202C610[FIELD_RUBY][i].data.parts.name[j]] + 0xA0, 8, j + 6, i * 2 + 3, 1, 2); + PrintString(gHighScoreCharToTileMap[gWorkingHighScores[FIELD_RUBY][i].data.parts.name[j]] + 0xA0, 8, j + 6, i * 2 + 3, 1, 2); } } // Ruby Field Top score - sub_F21C(gUnknown_0202C610[FIELD_RUBY][0].data.parts.scoreHi, gUnknown_0202C610[FIELD_RUBY][0].data.parts.scoreLo); + FormatScoreDigits(gWorkingHighScores[FIELD_RUBY][0].data.parts.scoreHi, gWorkingHighScores[FIELD_RUBY][0].data.parts.scoreLo); for (j = 0; j < 14; j++) { if ((j + 1) % 3 == 0) - PrintString(gUnknown_0202C5C0[j] + 0x120, 9, j + 12, 2, 1, 2); // Thousands separator? + PrintString(gScoreDigitBuffer[j] + 0x120, 9, j + 12, 2, 1, 2); // Thousands separator? else - PrintString(gUnknown_0202C5C0[j] + 0xE0, 9, j + 12, 2, 1, 2); + PrintString(gScoreDigitBuffer[j] + 0xE0, 9, j + 12, 2, 1, 2); } - PrintString(gUnknown_0202C5C0[14] + 0xE0, 9, 26, 2, 1, 2); + PrintString(gScoreDigitBuffer[14] + 0xE0, 9, 26, 2, 1, 2); // Ruby Field 2nd-8th scores for (i = 1; i < NUM_HIGH_SCORES; i++) { - sub_F21C(gUnknown_0202C610[FIELD_RUBY][i].data.parts.scoreHi, gUnknown_0202C610[FIELD_RUBY][i].data.parts.scoreLo); + FormatScoreDigits(gWorkingHighScores[FIELD_RUBY][i].data.parts.scoreHi, gWorkingHighScores[FIELD_RUBY][i].data.parts.scoreLo); for (j = 0; j < 14; j++) { if ((j + 1) % 3 == 0) - PrintString(gUnknown_0202C5C0[j] + 0x1A0, 9, j + 12, i * 2 + 3, 1, 2); // Thousands separator? + PrintString(gScoreDigitBuffer[j] + 0x1A0, 9, j + 12, i * 2 + 3, 1, 2); // Thousands separator? else - PrintString(gUnknown_0202C5C0[j] + 0x160, 9, j + 12, i * 2 + 3, 1, 2); + PrintString(gScoreDigitBuffer[j] + 0x160, 9, j + 12, i * 2 + 3, 1, 2); } - PrintString(gUnknown_0202C5C0[14] + 0x160, 9, 26, 3 + i * 2, 1, 2); + PrintString(gScoreDigitBuffer[14] + 0x160, 9, 26, 3 + i * 2, 1, 2); } // Sapphire Field Top name for (j = 0; j < HIGH_SCORE_NAME_LENGTH; j++) { - PrintString(gUnknown_086A7FAC[gUnknown_0202C610[FIELD_SAPPHIRE][0].data.parts.name[j]] + 0x80, 8, j + 4, 35, 1, 1); + PrintString(gHighScoreCharToTileMap[gWorkingHighScores[FIELD_SAPPHIRE][0].data.parts.name[j]] + 0x80, 8, j + 4, 35, 1, 1); } // Sapphire Field 2nd-8th names @@ -1933,37 +1933,37 @@ void sub_EE64(void) { for (j = 0; j < HIGH_SCORE_NAME_LENGTH; j++) { - PrintString(gUnknown_086A7FAC[gUnknown_0202C610[FIELD_SAPPHIRE][i].data.parts.name[j]] + 0xA0, 8, j + 4, i * 2 + 35, 1, 2); + PrintString(gHighScoreCharToTileMap[gWorkingHighScores[FIELD_SAPPHIRE][i].data.parts.name[j]] + 0xA0, 8, j + 4, i * 2 + 35, 1, 2); } } - sub_F21C(gUnknown_0202C610[FIELD_SAPPHIRE][0].data.parts.scoreHi, gUnknown_0202C610[FIELD_SAPPHIRE][0].data.parts.scoreLo); + FormatScoreDigits(gWorkingHighScores[FIELD_SAPPHIRE][0].data.parts.scoreHi, gWorkingHighScores[FIELD_SAPPHIRE][0].data.parts.scoreLo); // Sapphire Field Top score for (j = 0; j < 14; j++) { if ((j + 1) % 3 == 0) - PrintString(gUnknown_0202C5C0[j] + 0x120, 9, j + 10, 34, 1, 2); // Thousands separator? + PrintString(gScoreDigitBuffer[j] + 0x120, 9, j + 10, 34, 1, 2); // Thousands separator? else - PrintString(gUnknown_0202C5C0[j] + 0xE0, 9, j + 10, 34, 1, 2); + PrintString(gScoreDigitBuffer[j] + 0xE0, 9, j + 10, 34, 1, 2); } - PrintString(gUnknown_0202C5C0[j] + 0xE0, 9, 24, 34, 1, 2); + PrintString(gScoreDigitBuffer[j] + 0xE0, 9, 24, 34, 1, 2); // Sapphire Field 2nd-8th scores for (i = 1; i < NUM_HIGH_SCORES; i++) { - sub_F21C(gUnknown_0202C610[FIELD_SAPPHIRE][i].data.parts.scoreHi, gUnknown_0202C610[FIELD_SAPPHIRE][i].data.parts.scoreLo); + FormatScoreDigits(gWorkingHighScores[FIELD_SAPPHIRE][i].data.parts.scoreHi, gWorkingHighScores[FIELD_SAPPHIRE][i].data.parts.scoreLo); for (j = 0; j < 14; j++) { if ((j + 1) % 3 == 0) - PrintString(gUnknown_0202C5C0[j] + 0x1A0, 9, j + 10, i * 2 + 35, 1, 2); // Thousands separator?s + PrintString(gScoreDigitBuffer[j] + 0x1A0, 9, j + 10, i * 2 + 35, 1, 2); // Thousands separator?s else - PrintString(gUnknown_0202C5C0[j] + 0x160, 9, j + 10, i * 2 + 35, 1, 2); + PrintString(gScoreDigitBuffer[j] + 0x160, 9, j + 10, i * 2 + 35, 1, 2); } - PrintString(gUnknown_0202C5C0[j] + 0x160, 9, 24, i * 2 + 35, 1, 2); + PrintString(gScoreDigitBuffer[j] + 0x160, 9, 24, i * 2 + 35, 1, 2); } } -void sub_F21C(u32 scoreHi, u32 scoreLo) +void FormatScoreDigits(u32 scoreHi, u32 scoreLo) { int i; u32 var0; @@ -1973,9 +1973,9 @@ void sub_F21C(u32 scoreHi, u32 scoreLo) if (scoreHi == 0 && scoreLo == 0) { for (i = 0; i < 14; i++) - gUnknown_0202C5C0[i] = 10; + gScoreDigitBuffer[i] = 10; - gUnknown_0202C5C0[14] = 0; + gScoreDigitBuffer[14] = 0; } else { @@ -1989,7 +1989,7 @@ void sub_F21C(u32 scoreHi, u32 scoreLo) scoreLo = 99999999; } - arr = gUnknown_0202C5C0; + arr = gScoreDigitBuffer; var0 = scoreHi / 1000000; arr[0] = var0; @@ -2022,8 +2022,8 @@ void sub_F21C(u32 scoreHi, u32 scoreLo) if ((s16)var0 == 0) { - for (i = 0; i < 15 && gUnknown_0202C5C0[i] == 0; i++) - gUnknown_0202C5C0[i] = 10; + for (i = 0; i < 15 && gScoreDigitBuffer[i] == 0; i++) + gScoreDigitBuffer[i] = 10; } } } @@ -2051,8 +2051,8 @@ int GetNewHighScoreIndex(u32 scoreHi, u32 scoreLo, u32 field) int comparisonResult = CompareScores( scoreHi, scoreLo, - gUnknown_0202C610[field][i].data.parts.scoreHi, - gUnknown_0202C610[field][i].data.parts.scoreLo + gWorkingHighScores[field][i].data.parts.scoreHi, + gWorkingHighScores[field][i].data.parts.scoreLo ); if (comparisonResult >= 0) return i; @@ -2061,46 +2061,46 @@ int GetNewHighScoreIndex(u32 scoreHi, u32 scoreLo, u32 field) return -1; } -void sub_F434(u32 scoreHi, u32 scoreLo, u32 field, int newHighScoreIndex) +void InsertNewHighScore(u32 scoreHi, u32 scoreLo, u32 field, int newHighScoreIndex) { int i; for (i = 7; i > newHighScoreIndex; i--) { - gUnknown_0202C610[field][i].data.parts.name[0] = gUnknown_0202C610[field][i-1].data.parts.name[0]; - gUnknown_0202C610[field][i].data.parts.name[1] = gUnknown_0202C610[field][i-1].data.parts.name[1]; - gUnknown_0202C610[field][i].data.parts.name[2] = gUnknown_0202C610[field][i-1].data.parts.name[2]; - gUnknown_0202C610[field][i].data.parts.name[3] = gUnknown_0202C610[field][i-1].data.parts.name[3]; - gUnknown_0202C610[field][i].data.parts.scoreHi = gUnknown_0202C610[field][i-1].data.parts.scoreHi; - gUnknown_0202C610[field][i].data.parts.scoreLo = gUnknown_0202C610[field][i-1].data.parts.scoreLo; + gWorkingHighScores[field][i].data.parts.name[0] = gWorkingHighScores[field][i-1].data.parts.name[0]; + gWorkingHighScores[field][i].data.parts.name[1] = gWorkingHighScores[field][i-1].data.parts.name[1]; + gWorkingHighScores[field][i].data.parts.name[2] = gWorkingHighScores[field][i-1].data.parts.name[2]; + gWorkingHighScores[field][i].data.parts.name[3] = gWorkingHighScores[field][i-1].data.parts.name[3]; + gWorkingHighScores[field][i].data.parts.scoreHi = gWorkingHighScores[field][i-1].data.parts.scoreHi; + gWorkingHighScores[field][i].data.parts.scoreLo = gWorkingHighScores[field][i-1].data.parts.scoreLo; } - gUnknown_0202C610[field][i].data.parts.name[0] = 0; - gUnknown_0202C610[field][i].data.parts.name[1] = 0; - gUnknown_0202C610[field][i].data.parts.name[2] = 0; - gUnknown_0202C610[field][i].data.parts.name[3] = 0; - gUnknown_0202C610[field][i].data.parts.scoreHi = scoreHi; - gUnknown_0202C610[field][i].data.parts.scoreLo = scoreLo; + gWorkingHighScores[field][i].data.parts.name[0] = 0; + gWorkingHighScores[field][i].data.parts.name[1] = 0; + gWorkingHighScores[field][i].data.parts.name[2] = 0; + gWorkingHighScores[field][i].data.parts.name[3] = 0; + gWorkingHighScores[field][i].data.parts.scoreHi = scoreHi; + gWorkingHighScores[field][i].data.parts.scoreLo = scoreLo; } -u32 sub_F4FC(u32 field) +u32 MergeReceivedTopScore(u32 field) { int i, j; int newHighScoreIndex; int comparisonResult; - newHighScoreIndex = GetNewHighScoreIndex(gUnknown_0202C550[field].data.parts.scoreHi, gUnknown_0202C550[field].data.parts.scoreLo, field); + newHighScoreIndex = GetNewHighScoreIndex(gRemoteTopScores[field].data.parts.scoreHi, gRemoteTopScores[field].data.parts.scoreLo, field); comparisonResult = CompareScores( - gUnknown_0202C610[field][newHighScoreIndex].data.parts.scoreHi, - gUnknown_0202C610[field][newHighScoreIndex].data.parts.scoreLo, - gUnknown_0202C550[field].data.parts.scoreHi, - gUnknown_0202C550[field].data.parts.scoreLo + gWorkingHighScores[field][newHighScoreIndex].data.parts.scoreHi, + gWorkingHighScores[field][newHighScoreIndex].data.parts.scoreLo, + gRemoteTopScores[field].data.parts.scoreHi, + gRemoteTopScores[field].data.parts.scoreLo ); if (comparisonResult == 0 && - gUnknown_0202C610[field][newHighScoreIndex].data.parts.name[0] == gUnknown_0202C550[field].data.parts.name[0] && - gUnknown_0202C610[field][newHighScoreIndex].data.parts.name[1] == gUnknown_0202C550[field].data.parts.name[1] && - gUnknown_0202C610[field][newHighScoreIndex].data.parts.name[2] == gUnknown_0202C550[field].data.parts.name[2] && - gUnknown_0202C610[field][newHighScoreIndex].data.parts.name[3] == gUnknown_0202C550[field].data.parts.name[3]) + gWorkingHighScores[field][newHighScoreIndex].data.parts.name[0] == gRemoteTopScores[field].data.parts.name[0] && + gWorkingHighScores[field][newHighScoreIndex].data.parts.name[1] == gRemoteTopScores[field].data.parts.name[1] && + gWorkingHighScores[field][newHighScoreIndex].data.parts.name[2] == gRemoteTopScores[field].data.parts.name[2] && + gWorkingHighScores[field][newHighScoreIndex].data.parts.name[3] == gRemoteTopScores[field].data.parts.name[3]) { return newHighScoreIndex; } @@ -2114,29 +2114,29 @@ u32 sub_F4FC(u32 field) { for (j = 0; j < 6; j++) { - gUnknown_0202C610[field][i].data.raw[j] = gUnknown_0202C610[field][i-1].data.raw[j]; + gWorkingHighScores[field][i].data.raw[j] = gWorkingHighScores[field][i-1].data.raw[j]; } } - gUnknown_0202C610[field][i].data.parts.name[0] = gUnknown_0202C550[field].data.parts.name[0]; - gUnknown_0202C610[field][i].data.parts.name[1] = gUnknown_0202C550[field].data.parts.name[1]; - gUnknown_0202C610[field][i].data.parts.name[2] = gUnknown_0202C550[field].data.parts.name[2]; - gUnknown_0202C610[field][i].data.parts.name[3] = gUnknown_0202C550[field].data.parts.name[3]; - gUnknown_0202C610[field][i].data.parts.scoreHi = gUnknown_0202C550[field].data.parts.scoreHi; - gUnknown_0202C610[field][i].data.parts.scoreLo = gUnknown_0202C550[field].data.parts.scoreLo; + gWorkingHighScores[field][i].data.parts.name[0] = gRemoteTopScores[field].data.parts.name[0]; + gWorkingHighScores[field][i].data.parts.name[1] = gRemoteTopScores[field].data.parts.name[1]; + gWorkingHighScores[field][i].data.parts.name[2] = gRemoteTopScores[field].data.parts.name[2]; + gWorkingHighScores[field][i].data.parts.name[3] = gRemoteTopScores[field].data.parts.name[3]; + gWorkingHighScores[field][i].data.parts.scoreHi = gRemoteTopScores[field].data.parts.scoreHi; + gWorkingHighScores[field][i].data.parts.scoreLo = gRemoteTopScores[field].data.parts.scoreLo; return newHighScoreIndex; } -void sub_F670(u32 currNameChar, u32 hsIndex, s16 currNameCharIndex, u32 mainField) +void PrintHighScoreNameChar(u32 currNameChar, u32 hsIndex, s16 currNameCharIndex, u32 mainField) { - currNameChar = gUnknown_086A7FAC[currNameChar]; + currNameChar = gHighScoreCharToTileMap[currNameChar]; PrintString( - gUnknown_08079730[mainField][hsIndex].unk8 * 32 + 0x80 + currNameChar, + gHighScoreNamePositions[mainField][hsIndex].fieldWidth * 32 + 0x80 + currNameChar, 8, - gUnknown_08079730[mainField][hsIndex].unk0 + currNameCharIndex, - gUnknown_08079730[mainField][hsIndex].unk4, + gHighScoreNamePositions[mainField][hsIndex].yBaseOffset + currNameCharIndex, + gHighScoreNamePositions[mainField][hsIndex].yPixelPosition, 1, - gUnknown_08079730[mainField][hsIndex].unk8 + 1 + gHighScoreNamePositions[mainField][hsIndex].fieldWidth + 1 ); } @@ -2144,14 +2144,14 @@ void SetDefaultHighScores(void) { int field, highScoreIndex, i; - gUnknown_0202BEB0 = 0; + gCompletionBannerDone = 0; for (field = 0; field < 2; field++) for (highScoreIndex = 0; highScoreIndex < 8; highScoreIndex++) for (i = 0; i < 6; i++) gMain_saveData.highScores[field][highScoreIndex].data.raw[i] = gDefaultHighScores[field][highScoreIndex].data.raw[i]; } -void sub_F74C(void) +void GenerateRandomHighScores(void) { int field, highScoreIndex, k; u8 letter; @@ -2197,7 +2197,7 @@ void sub_F74C(void) } } -void sub_F8B0(u32 arg0, u32 arg1, s16 arg2) +void AnimateScoreTilemapPalette(u32 arg0, u32 arg1, s16 arg2) { int i; u32 r3; @@ -2208,17 +2208,17 @@ void sub_F8B0(u32 arg0, u32 arg1, s16 arg2) r3 = (0 * 2 + 2) * 32 + 12; for(i = 0; i < 15; i++) { - if(gUnknown_03005C00[r3 + i] != 0x90EA && gUnknown_03005C00[r3 + i] != 0x912A) + if(gBG0TilemapBuffer[r3 + i] != 0x90EA && gBG0TilemapBuffer[r3 + i] != 0x912A) { - gUnknown_03005C00[r3 + i] += gUnknown_086A7FA4[arg2]; + gBG0TilemapBuffer[r3 + i] += gScorePaletteAnimOffsets[arg2]; } } r3 = (0 * 2 + 3) * 32 + 12; for(i = 0; i < 15; i++) { - if(gUnknown_03005C00[r3 + i] != 0x910A && gUnknown_03005C00[r3 + i] != 0x914A) + if(gBG0TilemapBuffer[r3 + i] != 0x910A && gBG0TilemapBuffer[r3 + i] != 0x914A) { - gUnknown_03005C00[r3 + i] += gUnknown_086A7FA4[arg2]; + gBG0TilemapBuffer[r3 + i] += gScorePaletteAnimOffsets[arg2]; } } } @@ -2227,17 +2227,17 @@ void sub_F8B0(u32 arg0, u32 arg1, s16 arg2) r3 = (arg1 * 2 + 3) * 32 + 12; for(i = 0; i < 15; i++) { - if(gUnknown_03005C00[r3 + i] != 0x916A && gUnknown_03005C00[r3 + i] != 0x91AA) + if(gBG0TilemapBuffer[r3 + i] != 0x916A && gBG0TilemapBuffer[r3 + i] != 0x91AA) { - gUnknown_03005C00[r3 + i] += gUnknown_086A7FA4[arg2]; + gBG0TilemapBuffer[r3 + i] += gScorePaletteAnimOffsets[arg2]; } } r3 = (arg1 * 2 + 4) * 32 + 12; for(i = 0; i < 15; i++) { - if(gUnknown_03005C00[r3 + i] != 0x918A && gUnknown_03005C00[r3 + i] != 0x91CA) + if(gBG0TilemapBuffer[r3 + i] != 0x918A && gBG0TilemapBuffer[r3 + i] != 0x91CA) { - gUnknown_03005C00[r3 + i] += gUnknown_086A7FA4[arg2]; + gBG0TilemapBuffer[r3 + i] += gScorePaletteAnimOffsets[arg2]; } } } @@ -2249,17 +2249,17 @@ void sub_F8B0(u32 arg0, u32 arg1, s16 arg2) r3 = (0 * 2 + 2) * 32 + 32 * 32 + 10; for(i = 0; i < 15; i++) { - if(gUnknown_03005C00[r3 + i] != 0x90EA && gUnknown_03005C00[r3 + i] != 0x912A) + if(gBG0TilemapBuffer[r3 + i] != 0x90EA && gBG0TilemapBuffer[r3 + i] != 0x912A) { - gUnknown_03005C00[r3 + i] += gUnknown_086A7FA4[arg2]; + gBG0TilemapBuffer[r3 + i] += gScorePaletteAnimOffsets[arg2]; } } r3 = (0 * 2 + 3) * 32 + 32 * 32 + 10; for(i = 0; i < 15; i++) { - if(gUnknown_03005C00[r3 + i] != 0x910A && gUnknown_03005C00[r3 + i] != 0x914A) + if(gBG0TilemapBuffer[r3 + i] != 0x910A && gBG0TilemapBuffer[r3 + i] != 0x914A) { - gUnknown_03005C00[r3 + i] += gUnknown_086A7FA4[arg2]; + gBG0TilemapBuffer[r3 + i] += gScorePaletteAnimOffsets[arg2]; } } } @@ -2268,24 +2268,24 @@ void sub_F8B0(u32 arg0, u32 arg1, s16 arg2) r3 = (arg1 * 2 + 3) * 32 + 32 * 32 + 10; for(i = 0; i < 15; i++) { - if(gUnknown_03005C00[r3 + i] != 0x916A && gUnknown_03005C00[r3 + i] != 0x91AA) + if(gBG0TilemapBuffer[r3 + i] != 0x916A && gBG0TilemapBuffer[r3 + i] != 0x91AA) { - gUnknown_03005C00[r3 + i] += gUnknown_086A7FA4[arg2]; + gBG0TilemapBuffer[r3 + i] += gScorePaletteAnimOffsets[arg2]; } } r3 = (arg1 * 2 + 4) * 32 + 32 * 32 + 10; for(i = 0; i < 15; i++) { - if(gUnknown_03005C00[r3 + i] != 0x918A && gUnknown_03005C00[r3 + i] != 0x91CA) + if(gBG0TilemapBuffer[r3 + i] != 0x918A && gBG0TilemapBuffer[r3 + i] != 0x91CA) { - gUnknown_03005C00[r3 + i] += gUnknown_086A7FA4[arg2]; + gBG0TilemapBuffer[r3 + i] += gScorePaletteAnimOffsets[arg2]; } } } } } -void sub_FAE8(u32 arg0, u32 arg1, s16 arg2) +void ResetScoreTilemapPalette(u32 arg0, u32 arg1, s16 arg2) { int i; u32 r3; @@ -2296,17 +2296,17 @@ void sub_FAE8(u32 arg0, u32 arg1, s16 arg2) r3 = (0 * 2 + 2) * 32 + 12; for(i = 0; i < 15; i++) { - if(gUnknown_03005C00[r3 + i] != 0x90EA && gUnknown_03005C00[r3 + i] != 0x912A) + if(gBG0TilemapBuffer[r3 + i] != 0x90EA && gBG0TilemapBuffer[r3 + i] != 0x912A) { - gUnknown_03005C00[r3 + i] += gUnknown_086A7FA8[arg2]; + gBG0TilemapBuffer[r3 + i] += gScorePaletteResetOffsets[arg2]; } } r3 = (0 * 2 + 3) * 32 + 12; for(i = 0; i < 15; i++) { - if(gUnknown_03005C00[r3 + i] != 0x910A && gUnknown_03005C00[r3 + i] != 0x914A) + if(gBG0TilemapBuffer[r3 + i] != 0x910A && gBG0TilemapBuffer[r3 + i] != 0x914A) { - gUnknown_03005C00[r3 + i] += gUnknown_086A7FA8[arg2]; + gBG0TilemapBuffer[r3 + i] += gScorePaletteResetOffsets[arg2]; } } } @@ -2315,17 +2315,17 @@ void sub_FAE8(u32 arg0, u32 arg1, s16 arg2) r3 = (arg1 * 2 + 3) * 32 + 12; for(i = 0; i < 15; i++) { - if(gUnknown_03005C00[r3 + i] != 0x916A && gUnknown_03005C00[r3 + i] != 0x91AA) + if(gBG0TilemapBuffer[r3 + i] != 0x916A && gBG0TilemapBuffer[r3 + i] != 0x91AA) { - gUnknown_03005C00[r3 + i] += gUnknown_086A7FA8[arg2]; + gBG0TilemapBuffer[r3 + i] += gScorePaletteResetOffsets[arg2]; } } r3 = (arg1 * 2 + 4) * 32 + 12; for(i = 0; i < 15; i++) { - if(gUnknown_03005C00[r3 + i] != 0x918A && gUnknown_03005C00[r3 + i] != 0x91CA) + if(gBG0TilemapBuffer[r3 + i] != 0x918A && gBG0TilemapBuffer[r3 + i] != 0x91CA) { - gUnknown_03005C00[r3 + i] += gUnknown_086A7FA8[arg2]; + gBG0TilemapBuffer[r3 + i] += gScorePaletteResetOffsets[arg2]; } } } @@ -2337,17 +2337,17 @@ void sub_FAE8(u32 arg0, u32 arg1, s16 arg2) r3 = (0 * 2 + 2) * 32 + 32 * 32 + 10; for(i = 0; i < 15; i++) { - if(gUnknown_03005C00[r3 + i] != 0x90EA && gUnknown_03005C00[r3 + i] != 0x912A) + if(gBG0TilemapBuffer[r3 + i] != 0x90EA && gBG0TilemapBuffer[r3 + i] != 0x912A) { - gUnknown_03005C00[r3 + i] += gUnknown_086A7FA8[arg2]; + gBG0TilemapBuffer[r3 + i] += gScorePaletteResetOffsets[arg2]; } } r3 = (0 * 2 + 3) * 32 + 32 * 32 + 10; for(i = 0; i < 15; i++) { - if(gUnknown_03005C00[r3 + i] != 0x910A && gUnknown_03005C00[r3 + i] != 0x914A) + if(gBG0TilemapBuffer[r3 + i] != 0x910A && gBG0TilemapBuffer[r3 + i] != 0x914A) { - gUnknown_03005C00[r3 + i] += gUnknown_086A7FA8[arg2]; + gBG0TilemapBuffer[r3 + i] += gScorePaletteResetOffsets[arg2]; } } } @@ -2356,24 +2356,24 @@ void sub_FAE8(u32 arg0, u32 arg1, s16 arg2) r3 = (arg1 * 2 + 3) * 32 + 32 * 32 + 10; for(i = 0; i < 15; i++) { - if(gUnknown_03005C00[r3 + i] != 0x916A && gUnknown_03005C00[r3 + i] != 0x91AA) + if(gBG0TilemapBuffer[r3 + i] != 0x916A && gBG0TilemapBuffer[r3 + i] != 0x91AA) { - gUnknown_03005C00[r3 + i] += gUnknown_086A7FA8[arg2]; + gBG0TilemapBuffer[r3 + i] += gScorePaletteResetOffsets[arg2]; } } r3 = (arg1 * 2 + 4) * 32 + 32 * 32 + 10; for(i = 0; i < 15; i++) { - if(gUnknown_03005C00[r3 + i] != 0x918A && gUnknown_03005C00[r3 + i] != 0x91CA) + if(gBG0TilemapBuffer[r3 + i] != 0x918A && gBG0TilemapBuffer[r3 + i] != 0x91CA) { - gUnknown_03005C00[r3 + i] += gUnknown_086A7FA8[arg2]; + gBG0TilemapBuffer[r3 + i] += gScorePaletteResetOffsets[arg2]; } } } } } -s8 sub_FD20(void) +s8 CheckAllPokemonCaught(void) { int i; s16 sp0[NUM_SPECIES]; @@ -2389,14 +2389,14 @@ s8 sub_FD20(void) return 1; } -void sub_FD5C(void (*func)(void)) +void FadeInFromWhite(void (*func)(void)) { u16 i; - DmaCopy16(3, (void*)PLTT, gUnknown_0201A520[1], PLTT_SIZE); - DmaFill16(3, 0x7FFF, gUnknown_0201A520[0], PLTT_SIZE); - DmaCopy16(3, gUnknown_0201A520[0], gUnknown_0201A520[2], PLTT_SIZE); - DmaCopy16(3, gUnknown_0201A520[2], (void*)PLTT, PLTT_SIZE); + DmaCopy16(3, (void*)PLTT, gPaletteFadeBuffers[1], PLTT_SIZE); + DmaFill16(3, 0x7FFF, gPaletteFadeBuffers[0], PLTT_SIZE); + DmaCopy16(3, gPaletteFadeBuffers[0], gPaletteFadeBuffers[2], PLTT_SIZE); + DmaCopy16(3, gPaletteFadeBuffers[2], (void*)PLTT, PLTT_SIZE); UnblankLCD(); @@ -2404,56 +2404,56 @@ void sub_FD5C(void (*func)(void)) { if (func != NULL) func(); - sub_1001C(i); + InterpolatePaletteStep(i); MainLoopIter(); if (i == 31) { - DmaCopy16(3, gUnknown_0201A520[1], (void *)PLTT, 0x400); + DmaCopy16(3, gPaletteFadeBuffers[1], (void *)PLTT, 0x400); } else { - DmaCopy16(3, gUnknown_0201A520[2], (void *)PLTT, 0x400); + DmaCopy16(3, gPaletteFadeBuffers[2], (void *)PLTT, 0x400); } } } -void sub_FE04(void (*func)(void)) +void FadeOutToWhite(void (*func)(void)) { u16 i; - DmaCopy16(3, (void*)PLTT, gUnknown_0201A520[0], PLTT_SIZE); - DmaFill16(3, 0x7FFF, gUnknown_0201A520[1], PLTT_SIZE); - DmaCopy16(3, gUnknown_0201A520[0], gUnknown_0201A520[2], PLTT_SIZE); + DmaCopy16(3, (void*)PLTT, gPaletteFadeBuffers[0], PLTT_SIZE); + DmaFill16(3, 0x7FFF, gPaletteFadeBuffers[1], PLTT_SIZE); + DmaCopy16(3, gPaletteFadeBuffers[0], gPaletteFadeBuffers[2], PLTT_SIZE); for (i = 0; i < 32; i++) { if (func != NULL) func(); - sub_1001C(i); + InterpolatePaletteStep(i); MainLoopIter(); if (i == 31) { - DmaCopy16(3, gUnknown_0201A520[1], (void *)PLTT, 0x400); + DmaCopy16(3, gPaletteFadeBuffers[1], (void *)PLTT, 0x400); } else { - DmaCopy16(3, gUnknown_0201A520[2], (void *)PLTT, 0x400); + DmaCopy16(3, gPaletteFadeBuffers[2], (void *)PLTT, 0x400); } } - ForceBlankLDC(); + ForceBlankLCD(); MainLoopIter(); ClearGraphicsMemory(); } -void sub_FEB8(u8 * arg0, u8 * arg1, void (*func)(void)) +void FadeInWithCustomPalettes(u8 * arg0, u8 * arg1, void (*func)(void)) { u16 i; - DmaCopy16(3, arg0, gUnknown_0201A520[1], 0x200); - DmaCopy16(3, arg1, gUnknown_0201A520[2], 0x200); - DmaFill16(3, 0, gUnknown_0201A520[0], PLTT_SIZE); - DmaCopy16(3, gUnknown_0201A520[0], gUnknown_0201A520[2], PLTT_SIZE); - DmaCopy16(3, gUnknown_0201A520[2], (void*)PLTT, PLTT_SIZE); + DmaCopy16(3, arg0, gPaletteFadeBuffers[1], 0x200); + DmaCopy16(3, arg1, gPaletteFadeBuffers[2], 0x200); + DmaFill16(3, 0, gPaletteFadeBuffers[0], PLTT_SIZE); + DmaCopy16(3, gPaletteFadeBuffers[0], gPaletteFadeBuffers[2], PLTT_SIZE); + DmaCopy16(3, gPaletteFadeBuffers[2], (void*)PLTT, PLTT_SIZE); UnblankLCD(); gMain.dispcntBackup = REG_DISPCNT; @@ -2462,46 +2462,46 @@ void sub_FEB8(u8 * arg0, u8 * arg1, void (*func)(void)) { if (func != NULL) func(); - sub_1001C(i); + InterpolatePaletteStep(i); MainLoopIter(); if (i == 31) { - DmaCopy16(3, gUnknown_0201A520[1], (void *)PLTT, 0x400); + DmaCopy16(3, gPaletteFadeBuffers[1], (void *)PLTT, 0x400); } else { - DmaCopy16(3, gUnknown_0201A520[2], (void *)PLTT, 0x400); + DmaCopy16(3, gPaletteFadeBuffers[2], (void *)PLTT, 0x400); } } } -void sub_FF74(void (*func)(void)) +void FadeOutToBlack(void (*func)(void)) { u16 i; - DmaCopy16(3, (void*)PLTT, gUnknown_0201A520[0], PLTT_SIZE); - DmaFill16(3, 0, gUnknown_0201A520[1], PLTT_SIZE); - DmaCopy16(3, gUnknown_0201A520[0], gUnknown_0201A520[2], PLTT_SIZE); + DmaCopy16(3, (void*)PLTT, gPaletteFadeBuffers[0], PLTT_SIZE); + DmaFill16(3, 0, gPaletteFadeBuffers[1], PLTT_SIZE); + DmaCopy16(3, gPaletteFadeBuffers[0], gPaletteFadeBuffers[2], PLTT_SIZE); for (i = 0; i < 32; i++) { if (func != NULL) func(); - sub_1001C(i); + InterpolatePaletteStep(i); MainLoopIter(); if (i == 31) { - DmaCopy16(3, gUnknown_0201A520[1], (void *)PLTT, 0x400); + DmaCopy16(3, gPaletteFadeBuffers[1], (void *)PLTT, 0x400); } else { - DmaCopy16(3, gUnknown_0201A520[2], (void *)PLTT, 0x400); + DmaCopy16(3, gPaletteFadeBuffers[2], (void *)PLTT, 0x400); } } MainLoopIter(); } -void sub_1001C(u16 arg0) +void InterpolatePaletteStep(u16 arg0) { u16 var0; u16 var1; @@ -2522,13 +2522,13 @@ void sub_1001C(u16 arg0) while(var0 < var1) { - r[0] = gUnknown_0201A520[0][var0] & 0x1F; - g[0] = (gUnknown_0201A520[0][var0] & 0x3E0) >> 5; - b[0] = (gUnknown_0201A520[0][var0] & 0x7C00) >> 10; + r[0] = gPaletteFadeBuffers[0][var0] & 0x1F; + g[0] = (gPaletteFadeBuffers[0][var0] & 0x3E0) >> 5; + b[0] = (gPaletteFadeBuffers[0][var0] & 0x7C00) >> 10; - r[1] = gUnknown_0201A520[1][var0] & 0x1F; - g[1] = (gUnknown_0201A520[1][var0] & 0x3E0) >> 5; - b[1] = (gUnknown_0201A520[1][var0] & 0x7C00) >> 10; + r[1] = gPaletteFadeBuffers[1][var0] & 0x1F; + g[1] = (gPaletteFadeBuffers[1][var0] & 0x3E0) >> 5; + b[1] = (gPaletteFadeBuffers[1][var0] & 0x7C00) >> 10; if(b[0] < b[1]) b[0] += ((b[1] - b[0]) * arg0) >> 5; @@ -2545,29 +2545,29 @@ void sub_1001C(u16 arg0) else r[0] -= ((r[0] - r[1]) * arg0) >> 5; - gUnknown_0201A520[2][var0] = (b[0] << 10) | (g[0] << 5) | r[0]; + gPaletteFadeBuffers[2][var0] = (b[0] << 10) | (g[0] << 5) | r[0]; var0++; } } -void sub_10170(u8 * pal, u8 * dest, u16 arg2, u16 arg3) +void DarkenPalette(u8 * pal, u8 * dest, u16 arg2, u16 arg3) { u16 i; u16 b[2]; u16 g[2]; u16 r[2]; - DmaCopy16(3, pal, gUnknown_0201A520[0], arg2); - DmaFill16(3, 0, gUnknown_0201A520[1], arg2); + DmaCopy16(3, pal, gPaletteFadeBuffers[0], arg2); + DmaFill16(3, 0, gPaletteFadeBuffers[1], arg2); for(i = 0; i < arg2; i++) { - r[0] = gUnknown_0201A520[0][i] & 0x1F; - g[0] = (gUnknown_0201A520[0][i] & 0x3E0) >> 5; - b[0] = (gUnknown_0201A520[0][i] & 0x7C00) >> 10; + r[0] = gPaletteFadeBuffers[0][i] & 0x1F; + g[0] = (gPaletteFadeBuffers[0][i] & 0x3E0) >> 5; + b[0] = (gPaletteFadeBuffers[0][i] & 0x7C00) >> 10; - r[1] = gUnknown_0201A520[1][i] & 0x1F; - g[1] = (gUnknown_0201A520[1][i] & 0x3E0) >> 5; - b[1] = (gUnknown_0201A520[1][i] & 0x7C00) >> 10; + r[1] = gPaletteFadeBuffers[1][i] & 0x1F; + g[1] = (gPaletteFadeBuffers[1][i] & 0x3E0) >> 5; + b[1] = (gPaletteFadeBuffers[1][i] & 0x7C00) >> 10; if(b[0] > b[1]) b[0] -= (b[0] * arg3) >> 5; @@ -2584,29 +2584,29 @@ void sub_10170(u8 * pal, u8 * dest, u16 arg2, u16 arg3) else r[0] = r[1]; - gUnknown_0201A520[2][i] = (b[0] << 10) | (g[0] << 5) | r[0]; + gPaletteFadeBuffers[2][i] = (b[0] << 10) | (g[0] << 5) | r[0]; } - DmaCopy16(3, gUnknown_0201A520[2], dest, arg2); + DmaCopy16(3, gPaletteFadeBuffers[2], dest, arg2); } -void sub_102A8(u8 * pal, u8 * dest, u16 arg2, u16 arg3) +void BrightenPalette(u8 * pal, u8 * dest, u16 arg2, u16 arg3) { u16 i; u16 b[2]; u16 g[2]; u16 r[2]; - DmaCopy16(3, pal, gUnknown_0201A520[0], arg2); - DmaFill16(3, 0x7FFF, gUnknown_0201A520[1], arg2); + DmaCopy16(3, pal, gPaletteFadeBuffers[0], arg2); + DmaFill16(3, 0x7FFF, gPaletteFadeBuffers[1], arg2); for(i = 0; i < arg2; i++) { - r[0] = gUnknown_0201A520[0][i] & 0x1F; - g[0] = (gUnknown_0201A520[0][i] & 0x3E0) >> 5; - b[0] = (gUnknown_0201A520[0][i] & 0x7C00) >> 10; + r[0] = gPaletteFadeBuffers[0][i] & 0x1F; + g[0] = (gPaletteFadeBuffers[0][i] & 0x3E0) >> 5; + b[0] = (gPaletteFadeBuffers[0][i] & 0x7C00) >> 10; - r[1] = gUnknown_0201A520[1][i] & 0x1F; - g[1] = (gUnknown_0201A520[1][i] & 0x3E0) >> 5; - b[1] = (gUnknown_0201A520[1][i] & 0x7C00) >> 10; + r[1] = gPaletteFadeBuffers[1][i] & 0x1F; + g[1] = (gPaletteFadeBuffers[1][i] & 0x3E0) >> 5; + b[1] = (gPaletteFadeBuffers[1][i] & 0x7C00) >> 10; if(b[0] < b[1]) b[0] += ((b[1] - b[0]) * arg3) >> 5; @@ -2623,12 +2623,12 @@ void sub_102A8(u8 * pal, u8 * dest, u16 arg2, u16 arg3) else r[0] -= ((r[0] - r[1]) * arg3) >> 5; - gUnknown_0201A520[2][i] = (b[0] << 10) | (g[0] << 5) | r[0]; + gPaletteFadeBuffers[2][i] = (b[0] << 10) | (g[0] << 5) | r[0]; } - DmaCopy16(3, gUnknown_0201A520[2], dest, arg2); + DmaCopy16(3, gPaletteFadeBuffers[2], dest, arg2); } -void sub_10424(void) +void FlashWhiteTransitionIn(void) { REG_BLDY = 0x10; REG_BLDCNT = ((REG_DISPCNT & (DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON)) >> 8) | BLDCNT_EFFECT_LIGHTEN | BLDCNT_TGT1_BD; @@ -2643,7 +2643,7 @@ void sub_10424(void) REG_BLDCNT = 0; } -void sub_10480(void) +void FlashWhiteTransitionOut(void) { REG_BLDY = 0; REG_BLDCNT = ((REG_DISPCNT & (DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON)) >> 8) | BLDCNT_EFFECT_LIGHTEN | BLDCNT_TGT1_BD; @@ -2671,13 +2671,13 @@ void UnblankLCD(void) gMain.dispcntBackup = REG_DISPCNT; } -void ForceBlankLDC(void) +void ForceBlankLCD(void) { gMain.dispcntBackup |= DISPCNT_FORCED_BLANK; REG_DISPCNT |= DISPCNT_FORCED_BLANK; } -void sub_10544(void) +void DisableDisplayInterrupts(void) { REG_DISPSTAT &= ~DISPSTAT_VBLANK_INTR; REG_DISPSTAT &= ~DISPSTAT_VCOUNT_INTR; diff --git a/src/intro.c b/src/intro.c index 13b2d70..f44daeb 100644 --- a/src/intro.c +++ b/src/intro.c @@ -6,19 +6,19 @@ #include "titlescreen.h" #include "constants/bg_music.h" -void sub_A628(void); -void sub_A87C(void); -void sub_AAA8(void); -void sub_ADFC(void); -extern void sub_B0E8(void); -void sub_B4A0(void); -void sub_B7F8(void); -void sub_BBE0(void); -void sub_C0D8(void); -void sub_C2F0(void); -void sub_C4F0(void); -void sub_CA28(void); -void sub_CD18(void); +void IntroScene3_InitVars(void); +void IntroScene3_RenderPokeball(void); +void IntroScene4_InitVars(void); +void IntroScene5_InitVars(void); +extern void IntroScene5_RenderAllSprites(void); +void IntroScene6_InitVars(void); +void IntroScene6_RenderStarSprites(void); +void IntroScene7_InitVars(void); +void IntroScene7_RenderWailmer(void); +void IntroScene8a_InitVars(void); +void IntroScene8a_RenderAllSprites(void); +void IntroScene8b_InitVars(void); +void IntroScene8b_RenderBallAndCloud(void); extern StateFunc gIntroStateFuncs[15]; extern u8 gIntroCopyright_Tilemap[]; @@ -28,89 +28,89 @@ extern u8 gIntroCopyright_Pal[]; extern u8 gIntroScene1Sprites_Gfx[]; extern u8 gIntroScene1Sprites_Pals[]; -extern u8 gUnknown_080B9CC0[]; -extern u8 gUnknown_080BC4C0[]; -extern u8 gUnknown_080BB4C0[]; -extern u8 gUnknown_080B3CA0[]; +extern u8 gIntroScene1_BG0Tilemap[]; +extern u8 gIntroScene1_BG1Tilemap[]; +extern u8 gIntroScene1_BG2Tilemap[]; +extern u8 gIntroScene1_BG3Tilemap[]; extern u8 gIntroScene1Text_Gfx[]; extern u8 gIntroScene1Ball_Gfx[]; -extern s16 gUnknown_086A7788[0x8]; +extern s16 gIntroScene1_TileOffsets[0x8]; -extern u16 gUnknown_0201C1C0[]; -extern s16 gUnknown_0202ADA0[]; -extern s16 gUnknown_0202BF10; -extern u8 gUnknown_0201C1B8; -extern u8 gUnknown_0202ADD4; -extern s16 gUnknown_0202C594; -extern s32 gUnknown_02019C30; -extern s32 gUnknown_0201C188; -extern s16 gUnknown_0202A578; -extern s32 gUnknown_0202BEF0; -extern s8 gUnknown_0202C5A8; +extern u16 gIntroTileBuffer[]; +extern s16 gIntroBGParams[]; +extern s16 gIntroFrameCounter; +extern u8 gIntroBlendSrc; +extern u8 gIntroBlendDst; +extern s16 gIntroOverlayFadeStep; +extern s32 gIntroScaleX; +extern s32 gIntroScaleY; +extern s16 gIntroAnimStep; +extern s32 gIntroPalFadeLevel; +extern s8 gIntroJingleVariant; extern s8 gIntroSceneIndex; -extern u8 gUnknown_0202BE70[]; +extern u8 gIntroPalSwapBuffer[]; -extern u8 gUnknown_080CBEE0[]; +extern u8 gIntroScene2_BG3Tilemap[]; extern u8 gIntroScene2Sprites_Gfx[]; -extern u8 gUnknown_080CBCE0[]; -extern u8 gUnknown_080D0700[]; -extern u8 gUnknown_080D2700[]; +extern u8 gIntroScene2_Pal[]; +extern u8 gIntroScene2_BG0Tiles[]; +extern u8 gIntroScene2_BG1Tiles[]; -extern u8 gUnknown_0201B180[]; +extern u8 gIntroScene3_AltBG1TilemapBuffer[]; -extern u8 gUnknown_080D4700[]; -extern u8 gUnknown_080DE520[]; -extern u8 gUnknown_080DCD20[]; -extern u8 gUnknown_080D4900[]; -extern u8 gUnknown_080D5900[]; +extern u8 gIntroScene3_Pal[]; +extern u8 gIntroScene3_BG0Tilemap[]; +extern u8 gIntroScene3_BG1Tilemap[]; +extern u8 gIntroScene3_BG2Tilemap[]; +extern u8 gIntroScene3_BG3Tilemap[]; extern u8 gIntroScene3Sprites_Gfx[]; -extern u8 gUnknown_080DD520[]; -extern u8 gUnknown_080DDD20[]; +extern u8 gIntroScene3_BG1TilemapA[]; +extern u8 gIntroScene3_BG1TilemapB[]; extern u8 gIntroScene3Treecko_Gfx[]; -extern const struct SpriteSet *const gUnknown_086A7D20[]; +extern const struct SpriteSet *const gIntroScene8b_SpriteSets[]; typedef void (*IntroFunc)(void); extern const IntroFunc gIntroSceneFuncs[]; struct UnkStruct_0201A450 { - u16 unk0; - s16 unk2; - u16 unk4; - s16 unk6; - s16 unk8; - s16 unkA; - s8 unkC; + u16 posX; + s16 posY; + u16 velX; + s16 velY; + s16 animFrame; + s16 frameTimer; + s8 visible; }; // 0x10 size in memory -extern struct UnkStruct_0201A450 gUnknown_0201A450[6]; +extern struct UnkStruct_0201A450 gIntroSpriteEntities[6]; -extern struct Vector16 gUnknown_086A7768[0x8]; -extern struct Vector16 gUnknown_086A7798[0x4]; -extern struct Vector16 gUnknown_086A79FC[]; -extern struct Vector16 gUnknown_086A7B7C[0x4]; +extern struct Vector16 gIntroScene1_BGAnimTiming[0x8]; +extern struct Vector16 gIntroScene1_ScaleOffsets[0x4]; +extern struct Vector16 gIntroScene5_BGAnimTiming[]; +extern struct Vector16 gIntroScene7_WailmerQuadOffsets[0x4]; -struct UnkStruct_086A7AC0 { - s8 unk0; - s8 unk1; - s8 unk2; - s8 unk3; +struct IntroAnimVelocity { + s8 velocityX; + s8 velocityY; + s8 frameDuration; + s8 spawnFrame; }; -extern struct UnkStruct_086A7AC0 gUnknown_086A7AC0[]; -extern struct UnkStruct_086A7AC0 gUnknown_086A7B34[]; +extern struct IntroAnimVelocity gIntroScene6_ScrollVelocity[]; +extern struct IntroAnimVelocity gIntroScene6_EntityMovement[]; -extern const struct SpriteSet *const gUnknown_086A7C24[]; +extern const struct SpriteSet *const gIntroScene8a_SpriteSets[]; -struct UnkStruct_086A7C68 +struct IntroDebrisMovement { - u8 unk0; - u8 unk1; - u8 unk2; - u8 unk3; - u8 unk4; - u8 unk5; + u8 earlyVelX; + u8 earlyVelY; + u8 lateVelX; + u8 lateVelY; + u8 filler4; + u8 oamPriority; }; // 0x8 size in memory -extern const struct UnkStruct_086A7C68 gUnknown_086A7C68[]; +extern const struct IntroDebrisMovement gIntroScene8a_DebrisMovement[]; void IntroMain(void) { @@ -119,7 +119,7 @@ void IntroMain(void) void Intro_State0_929C(void) { - ResetSomeGraphicsRelatedStuff(); + ResetDisplayState(); REG_DISPCNT = 0x80; REG_BG1CNT = 5; REG_DISPCNT |= DISPCNT_BG1_ON; @@ -129,45 +129,45 @@ void Intro_State0_929C(void) DmaCopy16(3, gIntroCopyright_Pal, BG_PLTT, BG_PLTT_SIZE); gMain.dispcntBackup = REG_DISPCNT; - gUnknown_0202BF10 = 0; + gIntroFrameCounter = 0; gIntroSceneIndex = 0; - SetMainCallback(sub_93F8 + 1); - sub_0CBC(); - sub_024C(); + SetMainCallback(IntroVBlankCallback + 1); + EnableVBlankInterrupts(); + FadeInScreen(); gMain.subState++; } void Intro_State1_9348(void) { - gUnknown_0202BF10++; - if (gUnknown_0202BF10 > 0x78) + gIntroFrameCounter++; + if (gIntroFrameCounter > 0x78) { - gUnknown_0202BF10 = 0; + gIntroFrameCounter = 0; gMain.subState++; } } void Intro_State2_9370(void) { - sub_FF74(NULL); - sub_0D10(); + FadeOutToBlack(NULL); + DisableVBlankInterrupts(); gMain.subState++; } void Intro_State3_938C(void) { gIntroSceneFuncs[gIntroSceneIndex](); - gUnknown_0202BF10++; + gIntroFrameCounter++; if (JOY_NEW(A_BUTTON | START_BUTTON)) gMain.subState = 4; } void Intro_State4_93D0(void) { - sub_02B4(); + FadeOutScreen(); m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); ResetMainCallback(); gAutoDisplayTitlescreenMenu = FALSE; SetMainGameState(STATE_TITLE); @@ -175,7 +175,7 @@ void Intro_State4_93D0(void) // ? Main callback for intro state? -void sub_93F8(void) +void IntroVBlankCallback(void) { if (REG_DISPSTAT & DISPSTAT_VBLANK_INTR) { @@ -194,10 +194,10 @@ void sub_93F8(void) } } -void sub_9498(void) +void IntroScene1_LoadGraphics(void) { ClearGraphicsMemory(); - sub_0518(); + ClearBgTilemapAndOffsets(); ClearSprites(); REG_DISPCNT = DISPCNT_OBJ_ON; @@ -210,291 +210,291 @@ void sub_9498(void) REG_BG3CNT = 0x1f03; REG_DISPCNT |= (DISPCNT_BG3_ON); - DmaCopy16(3, gUnknown_080B9CC0, 0x0600d000, BG_SCREEN_SIZE); - DmaCopy16(3, gUnknown_080BC4C0, 0x0600d800, 0x1000); - DmaCopy16(3, gUnknown_080BB4C0, 0x0600e800 , 0x1000); - DmaCopy16(3, gUnknown_080B3CA0, 0x0600f800 , BG_SCREEN_SIZE); + DmaCopy16(3, gIntroScene1_BG0Tilemap, 0x0600d000, BG_SCREEN_SIZE); + DmaCopy16(3, gIntroScene1_BG1Tilemap, 0x0600d800, 0x1000); + DmaCopy16(3, gIntroScene1_BG2Tilemap, 0x0600e800 , 0x1000); + DmaCopy16(3, gIntroScene1_BG3Tilemap, 0x0600f800 , BG_SCREEN_SIZE); DmaCopy16(3, gIntroScene1Text_Gfx, BG_CHAR_ADDR(0), 0x5800); - DmaCopy16(3, gIntroScene1Ball_Gfx, gUnknown_0201C1C0, 0x6800); - sub_10170(gIntroScene1Sprites_Pals, (void*)BG_PLTT, BG_PLTT_SIZE, 0x20); + DmaCopy16(3, gIntroScene1Ball_Gfx, gIntroTileBuffer, 0x6800); + DarkenPalette(gIntroScene1Sprites_Pals, (void*)BG_PLTT, BG_PLTT_SIZE, 0x20); DmaCopy16(3, gIntroScene1Sprites_Gfx, BG_CHAR_ADDR(4), 0x8000); DmaCopy16(3, gIntroScene1Sprites_Pals, 0x05000200, BG_PLTT_SIZE); - sub_96A8(); - gMain.bgOffsets[0].xOffset = gUnknown_0202ADA0[0]; - gMain.bgOffsets[0].yOffset = gUnknown_0202ADA0[1]; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[18]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[19]; - gMain.bgOffsets[2].xOffset = gUnknown_0202ADA0[6]; - gMain.bgOffsets[2].yOffset = gUnknown_0202ADA0[7]; - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[12]; - gMain.bgOffsets[3].yOffset = gUnknown_0202ADA0[13]; - sub_0CBC(); - sub_FEB8((void*)BG_PLTT, gIntroScene1Sprites_Pals, NULL); + IntroScene1_InitVars(); + gMain.bgOffsets[0].xOffset = gIntroBGParams[0]; + gMain.bgOffsets[0].yOffset = gIntroBGParams[1]; + gMain.bgOffsets[1].xOffset = gIntroBGParams[18]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[19]; + gMain.bgOffsets[2].xOffset = gIntroBGParams[6]; + gMain.bgOffsets[2].yOffset = gIntroBGParams[7]; + gMain.bgOffsets[3].xOffset = gIntroBGParams[12]; + gMain.bgOffsets[3].yOffset = gIntroBGParams[13]; + EnableVBlankInterrupts(); + FadeInWithCustomPalettes((void*)BG_PLTT, gIntroScene1Sprites_Pals, NULL); DmaCopy16(3, gIntroScene1Sprites_Pals, 0x05000200, BG_PLTT_SIZE); DmaCopy16(3, 0, 0x05000200, 0x20); gIntroSceneIndex++; } -void sub_96A8(void) +void IntroScene1_InitVars(void) { - gUnknown_0201A450[1].unk0 = 0x78; - gUnknown_0201A450[1].unk2 = 0x50; - gUnknown_0201A450[1].unk8 = 0; - gUnknown_0201A450[1].unkC = 1; - gUnknown_0201A450[3].unk0 = 0x9c; - gUnknown_0201A450[3].unk2 = 0x92; - gUnknown_0201A450[3].unkC = 0; - gUnknown_0201A450[3].unkA = 0; - gUnknown_0201A450[2].unk0 = 0x9d; - gUnknown_0201A450[2].unk2 = 0x93; - gUnknown_0201A450[2].unkC = 0; - gUnknown_0201A450[4].unk0 = 0x80; - gUnknown_0201A450[4].unk2 = 0x80; - gUnknown_0201A450[4].unkC = 1; - gUnknown_0202ADA0[0] = 0xffa8; - gUnknown_0202ADA0[1] = 0xffca; - gUnknown_0202ADA0[4] = 0; - gUnknown_0202ADA0[5] = 0; - gUnknown_0202ADA0[6] = 0x100; - gUnknown_0202ADA0[7] = 0; - gUnknown_0202ADA0[10] = 0; - gUnknown_0202ADA0[18] = 0xfb; - gUnknown_0202ADA0[19] = 0; - gUnknown_0202ADA0[22] = 0; - gUnknown_0202ADA0[12] = 0; - gUnknown_0202ADA0[13] = 0; - gUnknown_0201A450[0].unk0 = 0x78; - gUnknown_0201A450[0].unk2 = 0x50; - gUnknown_0201A450[0].unk8 = 0; - gUnknown_0201A450[0].unkA = 0; - gUnknown_0201A450[0].unkC = 1; - gUnknown_0201C1B8 = 0; - gUnknown_0202ADD4 = 0x10; - gUnknown_0202C594 = 0; - gUnknown_02019C30 = 0x100; - gUnknown_0201C188 = 0x100; - gUnknown_0202BF10 = 0; - gUnknown_0202A578 = 0; - gUnknown_0202BEF0 = 0x20; - gUnknown_0202C5A8 = 8; + gIntroSpriteEntities[1].posX = 0x78; + gIntroSpriteEntities[1].posY = 0x50; + gIntroSpriteEntities[1].animFrame = 0; + gIntroSpriteEntities[1].visible = 1; + gIntroSpriteEntities[3].posX = 0x9c; + gIntroSpriteEntities[3].posY = 0x92; + gIntroSpriteEntities[3].visible = 0; + gIntroSpriteEntities[3].frameTimer = 0; + gIntroSpriteEntities[2].posX = 0x9d; + gIntroSpriteEntities[2].posY = 0x93; + gIntroSpriteEntities[2].visible = 0; + gIntroSpriteEntities[4].posX = 0x80; + gIntroSpriteEntities[4].posY = 0x80; + gIntroSpriteEntities[4].visible = 1; + gIntroBGParams[0] = 0xffa8; + gIntroBGParams[1] = 0xffca; + gIntroBGParams[4] = 0; + gIntroBGParams[5] = 0; + gIntroBGParams[6] = 0x100; + gIntroBGParams[7] = 0; + gIntroBGParams[10] = 0; + gIntroBGParams[18] = 0xfb; + gIntroBGParams[19] = 0; + gIntroBGParams[22] = 0; + gIntroBGParams[12] = 0; + gIntroBGParams[13] = 0; + gIntroSpriteEntities[0].posX = 0x78; + gIntroSpriteEntities[0].posY = 0x50; + gIntroSpriteEntities[0].animFrame = 0; + gIntroSpriteEntities[0].frameTimer = 0; + gIntroSpriteEntities[0].visible = 1; + gIntroBlendSrc = 0; + gIntroBlendDst = 0x10; + gIntroOverlayFadeStep = 0; + gIntroScaleX = 0x100; + gIntroScaleY = 0x100; + gIntroFrameCounter = 0; + gIntroAnimStep = 0; + gIntroPalFadeLevel = 0x20; + gIntroJingleVariant = 8; } -void sub_978C(void) +void IntroScene1_AnimateTitleReveal(void) { - sub_9CB8(); - if (gUnknown_0201A450[0].unk8 == 0x24) + IntroScene1_RenderTitleSprite(); + if (gIntroSpriteEntities[0].animFrame == 0x24) { - if (++gUnknown_0201A450[0].unkA > 27) + if (++gIntroSpriteEntities[0].frameTimer > 27) { - gUnknown_0201A450[0].unkA = 0; - gUnknown_0202A578 = 0; + gIntroSpriteEntities[0].frameTimer = 0; + gIntroAnimStep = 0; gIntroSceneIndex++; } } else { - if (++gUnknown_0201A450[0].unkA > 1) + if (++gIntroSpriteEntities[0].frameTimer > 1) { - gUnknown_0201A450[0].unkA = 0; - gUnknown_0201A450[0].unk8++; + gIntroSpriteEntities[0].frameTimer = 0; + gIntroSpriteEntities[0].animFrame++; } - if (gUnknown_0202BF10 >= gTitleRevealJingle[gUnknown_0202C5A8][gUnknown_0202A578][1]) + if (gIntroFrameCounter >= gTitleRevealJingle[gIntroJingleVariant][gIntroAnimStep][1]) { - m4aSongNumStart(gTitleRevealJingle[gUnknown_0202C5A8][gUnknown_0202A578][0]); - gUnknown_0202A578++; + m4aSongNumStart(gTitleRevealJingle[gIntroJingleVariant][gIntroAnimStep][0]); + gIntroAnimStep++; } } } -void sub_9830(void) +void IntroScene1_ZoomOutTitle(void) { - gUnknown_02019C30 -= 0x10; - gUnknown_0201C188 -= 0x10; - gUnknown_0201A450[0].unk0--; + gIntroScaleX -= 0x10; + gIntroScaleY -= 0x10; + gIntroSpriteEntities[0].posX--; - if (gUnknown_02019C30 < 0x20) + if (gIntroScaleX < 0x20) { - gUnknown_0201A450[0].unkA = 0; - gUnknown_0201A450[0].unk8 = 0x25; + gIntroSpriteEntities[0].frameTimer = 0; + gIntroSpriteEntities[0].animFrame = 0x25; gIntroSceneIndex++; } - sub_9D70(); + IntroScene1_RenderScaledTitle(); } -void sub_9878(void) +void IntroScene1_ResetAfterZoom(void) { - if (++gUnknown_0201A450[0].unkA > 3) + if (++gIntroSpriteEntities[0].frameTimer > 3) { - gUnknown_0201A450[0].unkA = 0; - gUnknown_0201A450[0].unk0 = 0x78; - gUnknown_0201A450[0].unk2 = 0x58; - gUnknown_0201A450[0].unkC = 1; + gIntroSpriteEntities[0].frameTimer = 0; + gIntroSpriteEntities[0].posX = 0x78; + gIntroSpriteEntities[0].posY = 0x58; + gIntroSpriteEntities[0].visible = 1; m4aSongNumStart(SE_UNKNOWN_0xD8); gIntroSceneIndex++; } } -void sub_98B4(void) +void IntroScene1_AnimateSecondReveal(void) { - if (gUnknown_0201A450[0].unk8 == 43) + if (gIntroSpriteEntities[0].animFrame == 43) { - if (++gUnknown_0201A450[0].unkA > 1) + if (++gIntroSpriteEntities[0].frameTimer > 1) { - gUnknown_0201A450[0].unkC = 0; - sub_10170(&gIntroScene1Sprites_Pals[0x1C0], (void*)BG_PLTT + 0xE0, 0x20, 0); + gIntroSpriteEntities[0].visible = 0; + DarkenPalette(&gIntroScene1Sprites_Pals[0x1C0], (void*)BG_PLTT + 0xE0, 0x20, 0); m4aSongNumStart(MUS_OPENING); gIntroSceneIndex++; } } else { - if (++gUnknown_0201A450[0].unkA > 1) + if (++gIntroSpriteEntities[0].frameTimer > 1) { - gUnknown_0201A450[0].unkA = 0; - gUnknown_0201A450[0].unk8++; + gIntroSpriteEntities[0].frameTimer = 0; + gIntroSpriteEntities[0].animFrame++; } } - sub_9CB8(); + IntroScene1_RenderTitleSprite(); } -void sub_9920(void) +void IntroScene1_FadeInOverlay(void) { int remainder; - remainder = gUnknown_0202BF10 % 3; + remainder = gIntroFrameCounter % 3; if (remainder == 0) { - if (gUnknown_0202C594 < 8) + if (gIntroOverlayFadeStep < 8) { - gUnknown_0202C594++; - gUnknown_0201C1B8++; - gUnknown_0202ADD4--; + gIntroOverlayFadeStep++; + gIntroBlendSrc++; + gIntroBlendDst--; } else { - CopyBgTilesRect(&gUnknown_0201C1C0, (void *)0x60036e0, 8, 8); + CopyBgTilesRect(&gIntroTileBuffer, (void *)0x60036e0, 8, 8); gIntroSceneIndex++; } - gUnknown_0201A450[1].unk8 = 1 - gUnknown_0201A450[1].unk8; + gIntroSpriteEntities[1].animFrame = 1 - gIntroSpriteEntities[1].animFrame; } - sub_9E90(); + IntroScene1_RenderAllSprites(); } -void sub_999C(void) +void IntroScene1_ScrollAndFade(void) { - if (gUnknown_0202BEF0 > 0) + if (gIntroPalFadeLevel > 0) { - gUnknown_0202BEF0 -= 2; - if (gUnknown_0202BEF0 < 1) + gIntroPalFadeLevel -= 2; + if (gIntroPalFadeLevel < 1) { - gUnknown_0202BEF0 = 0; + gIntroPalFadeLevel = 0; } - sub_10170(gIntroScene1Sprites_Pals, (void*)BG_PLTT, 0x200, gUnknown_0202BEF0); - sub_10170(gIntroScene1Sprites_Pals, (void*)OBJ_PLTT, 0x20, gUnknown_0202BEF0); + DarkenPalette(gIntroScene1Sprites_Pals, (void*)BG_PLTT, 0x200, gIntroPalFadeLevel); + DarkenPalette(gIntroScene1Sprites_Pals, (void*)OBJ_PLTT, 0x20, gIntroPalFadeLevel); } - if (gUnknown_0202BF10 % 3 == 0) - gUnknown_0201A450[1].unk8 = 1 - gUnknown_0201A450[1].unk8; + if (gIntroFrameCounter % 3 == 0) + gIntroSpriteEntities[1].animFrame = 1 - gIntroSpriteEntities[1].animFrame; - gUnknown_0202ADA0[0]--; + gIntroBGParams[0]--; - if (gUnknown_0202BF10 % 2 == 0) - gUnknown_0202ADA0[1]--; + if (gIntroFrameCounter % 2 == 0) + gIntroBGParams[1]--; - gMain.bgOffsets[0].xOffset = gUnknown_0202ADA0[0]; - gMain.bgOffsets[0].yOffset = gUnknown_0202ADA0[1]; - if (++gUnknown_0202ADA0[5] > gUnknown_086A7768[gUnknown_0202ADA0[4]].y) + gMain.bgOffsets[0].xOffset = gIntroBGParams[0]; + gMain.bgOffsets[0].yOffset = gIntroBGParams[1]; + if (++gIntroBGParams[5] > gIntroScene1_BGAnimTiming[gIntroBGParams[4]].y) { - CopyBgTilesRect(&gUnknown_0201C1C0[gUnknown_086A7788[gUnknown_0202ADA0[4]]], (void *)0x60036E0, 8, 8); - if (++gUnknown_0202ADA0[4] > 3) + CopyBgTilesRect(&gIntroTileBuffer[gIntroScene1_TileOffsets[gIntroBGParams[4]]], (void *)0x60036E0, 8, 8); + if (++gIntroBGParams[4] > 3) { - gUnknown_0201A450[3].unkC = 1; - gUnknown_0201A450[2].unkC = 1; - gUnknown_0201A450[1].unkC = 0; - gUnknown_0202ADA0[10] = 0; + gIntroSpriteEntities[3].visible = 1; + gIntroSpriteEntities[2].visible = 1; + gIntroSpriteEntities[1].visible = 0; + gIntroBGParams[10] = 0; gIntroSceneIndex++; } } - sub_9E90(); + IntroScene1_RenderAllSprites(); } -void sub_9AB8(void) +void IntroScene1_ParallaxScroll(void) { - gUnknown_0201A450[3].unk0 -= 0xE; - gUnknown_0201A450[3].unk2 -= 0xD; + gIntroSpriteEntities[3].posX -= 0xE; + gIntroSpriteEntities[3].posY -= 0xD; - gUnknown_0202ADA0[0x12] -= 0x10; - gUnknown_0202ADA0[0x13]++; - gUnknown_0202ADA0[0x6] -= 0x10; + gIntroBGParams[0x12] -= 0x10; + gIntroBGParams[0x13]++; + gIntroBGParams[0x6] -= 0x10; - gUnknown_0201A450[2].unk0 -= 0xE; - gUnknown_0201A450[2].unk2 -= 0xD; - gUnknown_0201A450[4].unk0 += 0xB; - gUnknown_0201A450[4].unk2 -= 0x2; + gIntroSpriteEntities[2].posX -= 0xE; + gIntroSpriteEntities[2].posY -= 0xD; + gIntroSpriteEntities[4].posX += 0xB; + gIntroSpriteEntities[4].posY -= 0x2; - if (gUnknown_0202BF10 % 2 == 0) + if (gIntroFrameCounter % 2 == 0) { - gUnknown_0202ADA0[0x0]--; - gUnknown_0202ADA0[0x1]--; + gIntroBGParams[0x0]--; + gIntroBGParams[0x1]--; } - if (++gUnknown_0202ADA0[5] > gUnknown_086A7768[gUnknown_0202ADA0[4]].y) + if (++gIntroBGParams[5] > gIntroScene1_BGAnimTiming[gIntroBGParams[4]].y) { - if (gUnknown_0202ADA0[4] < 7) - CopyBgTilesRect(&gUnknown_0201C1C0[gUnknown_086A7788[gUnknown_0202ADA0[0x4]]], (void *)0x60036e0, 8, 8); + if (gIntroBGParams[4] < 7) + CopyBgTilesRect(&gIntroTileBuffer[gIntroScene1_TileOffsets[gIntroBGParams[0x4]]], (void *)0x60036e0, 8, 8); else - CopyBgTilesRect(&gUnknown_0201C1C0[gUnknown_086A7788[gUnknown_0202ADA0[0x4]]], (void *)0x60032c0, 10, 10); + CopyBgTilesRect(&gIntroTileBuffer[gIntroScene1_TileOffsets[gIntroBGParams[0x4]]], (void *)0x60032c0, 10, 10); - gUnknown_0202ADA0[0x4]++; + gIntroBGParams[0x4]++; } - gUnknown_0202ADA0[0xA]++; - if (gUnknown_0202ADA0[0xA] > 9) + gIntroBGParams[0xA]++; + if (gIntroBGParams[0xA] > 9) { - gUnknown_0202ADA0[0xA] = 0; + gIntroBGParams[0xA] = 0; gIntroSceneIndex += 2; } - sub_9E90(); - gMain.bgOffsets[0].xOffset = gUnknown_0202ADA0[0x0]; - gMain.bgOffsets[0].yOffset = gUnknown_0202ADA0[0x1]; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[0x12]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[0x13]; - gMain.bgOffsets[2].xOffset = gUnknown_0202ADA0[0x6]; - gMain.bgOffsets[2].yOffset = gUnknown_0202ADA0[0x7]; + IntroScene1_RenderAllSprites(); + gMain.bgOffsets[0].xOffset = gIntroBGParams[0x0]; + gMain.bgOffsets[0].yOffset = gIntroBGParams[0x1]; + gMain.bgOffsets[1].xOffset = gIntroBGParams[0x12]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[0x13]; + gMain.bgOffsets[2].xOffset = gIntroBGParams[0x6]; + gMain.bgOffsets[2].yOffset = gIntroBGParams[0x7]; } void nullsub_4(void) { } -void sub_9C10(void) +void IntroScene1_FinalScroll(void) { - gUnknown_0202ADA0[0xC]++; + gIntroBGParams[0xC]++; - if (gUnknown_0202BF10 % 2 == 0) + if (gIntroFrameCounter % 2 == 0) { - gUnknown_0201A450[3].unk0--; - gUnknown_0201A450[3].unk2--; - gUnknown_0201A450[2].unk0 -= 2; - gUnknown_0201A450[2].unk2 -= 2; + gIntroSpriteEntities[3].posX--; + gIntroSpriteEntities[3].posY--; + gIntroSpriteEntities[2].posX -= 2; + gIntroSpriteEntities[2].posY -= 2; } - sub_9E90(); + IntroScene1_RenderAllSprites(); - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0xC]; - gMain.bgOffsets[3].yOffset = gUnknown_0202ADA0[0xD]; - gUnknown_0201A450[3].unkA++; + gMain.bgOffsets[3].xOffset = gIntroBGParams[0xC]; + gMain.bgOffsets[3].yOffset = gIntroBGParams[0xD]; + gIntroSpriteEntities[3].frameTimer++; - if (gUnknown_0201A450[3].unkA > 0x14) + if (gIntroSpriteEntities[3].frameTimer > 0x14) { - gUnknown_0201A450[3].unkA = 0; + gIntroSpriteEntities[3].frameTimer = 0; gIntroSceneIndex += 3; } } @@ -507,30 +507,30 @@ void nullsub_17(void) { } -void sub_9C9C(void) +void IntroScene1_BeginFadeOut(void) { - sub_10480(); - sub_10544(); + FlashWhiteTransitionOut(); + DisableDisplayInterrupts(); gIntroSceneIndex++; } -void sub_9CB8(void) +void IntroScene1_RenderTitleSprite(void) { s32 i; struct OamDataSimple *test2; struct SpriteGroup *puVar4; const struct SpriteSet *puVar6; - puVar4 = &gMain.spriteGroups[4 + gUnknown_0201A450[0].unk8]; - puVar4->available = gUnknown_0201A450[0].unkC; - LoadSpriteSets(gUnknown_086A769C, 0x31, gMain.spriteGroups); + puVar4 = &gMain.spriteGroups[4 + gIntroSpriteEntities[0].animFrame]; + puVar4->available = gIntroSpriteEntities[0].visible; + LoadSpriteSets(gIntroScene1_SpriteSets, 0x31, gMain.spriteGroups); if (puVar4->available == 1) { - puVar4->baseX = gUnknown_0201A450[0].unk0; - puVar4->baseY = gUnknown_0201A450[0].unk2; + puVar4->baseX = gIntroSpriteEntities[0].posX; + puVar4->baseY = gIntroSpriteEntities[0].posY; - puVar6 = gUnknown_086A769C[gUnknown_0201A450[0].unk8 + 4]; + puVar6 = gIntroScene1_SpriteSets[gIntroSpriteEntities[0].animFrame + 4]; for (i = 0; i < puVar6->count; i++) { test2 = &puVar4->oam[i]; @@ -542,27 +542,27 @@ void sub_9CB8(void) puVar4->available = FALSE; } -void sub_9D70(void) +void IntroScene1_RenderScaledTitle(void) { s32 i; struct SpriteGroup *puVar4; struct OamDataSimple *puVar2; puVar4 = &gMain.spriteGroups[0x28]; - puVar4->available = gUnknown_0201A450[0].unkC; - LoadSpriteSets(gUnknown_086A769C, 0x31, gMain.spriteGroups); + puVar4->available = gIntroSpriteEntities[0].visible; + LoadSpriteSets(gIntroScene1_SpriteSets, 0x31, gMain.spriteGroups); if (puVar4->available == 1) { - SetMatrixScale(gUnknown_02019C30, gUnknown_0201C188, 0); - puVar4->baseX = gUnknown_0201A450[0].unk0; - puVar4->baseY = gUnknown_0201A450[0].unk2; + SetMatrixScale(gIntroScaleX, gIntroScaleY, 0); + puVar4->baseX = gIntroSpriteEntities[0].posX; + puVar4->baseY = gIntroSpriteEntities[0].posY; for (i = 0; i < 4; i++) { puVar2 = &puVar4->oam[i]; - gOamBuffer[puVar2->oamId].x = gUnknown_086A7798[i].x * gUnknown_02019C30 / 0x100 + puVar4->baseX; - gOamBuffer[puVar2->oamId].y = gUnknown_086A7798[i].y * gUnknown_0201C188 / 0x100 + puVar4->baseY; + gOamBuffer[puVar2->oamId].x = gIntroScene1_ScaleOffsets[i].x * gIntroScaleX / 0x100 + puVar4->baseX; + gOamBuffer[puVar2->oamId].y = gIntroScene1_ScaleOffsets[i].y * gIntroScaleY / 0x100 + puVar4->baseY; gOamBuffer[puVar2->oamId].affineMode = 1; gOamBuffer[puVar2->oamId].matrixNum = 0; @@ -571,7 +571,7 @@ void sub_9D70(void) puVar4->available = FALSE; } -void sub_9E90(void) +void IntroScene1_RenderAllSprites(void) { struct OamDataSimple *puVar5; struct SpriteGroup *puVar1; @@ -582,26 +582,26 @@ void sub_9E90(void) const u16 *p; // TODO Fakematch gMain.blendControl = 0xF10; - gMain.blendAlpha = gUnknown_0201C1B8 | (gUnknown_0202ADD4 << 8); + gMain.blendAlpha = gIntroBlendSrc | (gIntroBlendDst << 8); REG_BLDCNT = gMain.blendControl; REG_BLDALPHA = gMain.blendAlpha; - puVar1 = &gMain.spriteGroups[gUnknown_0201A450[1].unk8]; + puVar1 = &gMain.spriteGroups[gIntroSpriteEntities[1].animFrame]; mainSg3 = &gMain.spriteGroups[3]; mainSg2 = &gMain.spriteGroups[2]; otherSg = &gMain_spriteGroups_48; - puVar1->available = gUnknown_0201A450[1].unkC; - mainSg3->available = gUnknown_0201A450[2].unkC; - mainSg2->available = gUnknown_0201A450[3].unkC; - otherSg->available = gUnknown_0201A450[4].unkC; - LoadSpriteSets(gUnknown_086A769C, 0x31, gMain.spriteGroups); + puVar1->available = gIntroSpriteEntities[1].visible; + mainSg3->available = gIntroSpriteEntities[2].visible; + mainSg2->available = gIntroSpriteEntities[3].visible; + otherSg->available = gIntroSpriteEntities[4].visible; + LoadSpriteSets(gIntroScene1_SpriteSets, 0x31, gMain.spriteGroups); if (puVar1->available == 1) { - puVar1->baseX = gUnknown_0201A450[1].unk0; - puVar1->baseY = gUnknown_0201A450[1].unk2; - p = &gUnknown_086A769C[gUnknown_0201A450[1].unk8]->count; + puVar1->baseX = gIntroSpriteEntities[1].posX; + puVar1->baseY = gIntroSpriteEntities[1].posY; + p = &gIntroScene1_SpriteSets[gIntroSpriteEntities[1].animFrame]->count; for (i = 0; i < *p; @@ -615,8 +615,8 @@ void sub_9E90(void) } if (mainSg3->available == 1) { - mainSg3->baseX = gUnknown_0201A450[2].unk0; - mainSg3->baseY = gUnknown_0201A450[2].unk2; + mainSg3->baseX = gIntroSpriteEntities[2].posX; + mainSg3->baseY = gIntroSpriteEntities[2].posY; for (i = 0; i < 4; i++) { @@ -629,8 +629,8 @@ void sub_9E90(void) } if (mainSg2->available == 1) { - mainSg2->baseX = gUnknown_0201A450[3].unk0; - mainSg2->baseY = gUnknown_0201A450[3].unk2; + mainSg2->baseX = gIntroSpriteEntities[3].posX; + mainSg2->baseY = gIntroSpriteEntities[3].posY; for (i = 0; i < 4; i++) { @@ -643,8 +643,8 @@ void sub_9E90(void) } if (otherSg->available == 1) { - otherSg->baseX = gUnknown_0201A450[4].unk0; - otherSg->baseY = gUnknown_0201A450[4].unk2; + otherSg->baseX = gIntroSpriteEntities[4].posX; + otherSg->baseY = gIntroSpriteEntities[4].posY; for (i = 0; i < 8; i++) { @@ -661,13 +661,13 @@ void sub_9E90(void) otherSg->available = FALSE; // TODO Possible Bug? } -void sub_A154(void) +void IntroScene1_ClearGraphics(void) { - sub_0518(); + ClearBgTilemapAndOffsets(); gIntroSceneIndex++; } -void sub_A16C(void) +void IntroScene2_LoadGraphics(void) { // TODO use proper constants - see LoadEReaderGraphics? REG_DISPCNT = 0; @@ -678,71 +678,71 @@ void sub_A16C(void) REG_BG3CNT = 0x1E03; REG_DISPCNT |= 0x800; - DmaCopy16(3, gUnknown_080D0700, (void*) 0x06006000, 0x2000); - DmaCopy16(3, gUnknown_080D2700, (void*) 0x0600D000, 0x2000); - DmaCopy16(3, gUnknown_080CBEE0, (void*) 0x0600F000, 0x800); + DmaCopy16(3, gIntroScene2_BG0Tiles, (void*) 0x06006000, 0x2000); + DmaCopy16(3, gIntroScene2_BG1Tiles, (void*) 0x0600D000, 0x2000); + DmaCopy16(3, gIntroScene2_BG3Tilemap, (void*) 0x0600F000, 0x800); DmaCopy16(3, gIntroScene2Sprites_Gfx, (void*) 0x06000000, 0x3C00); - DmaCopy16(3, gUnknown_080CBCE0, (void*) PLTT, 0x80); - sub_A2A8(); - gMain.bgOffsets[0].xOffset = gUnknown_0202ADA0[0x0]; - gMain.bgOffsets[0].yOffset = gUnknown_0202ADA0[0x1]; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[0x6]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[0x7]; - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0xC]; - gMain.bgOffsets[3].yOffset = gUnknown_0202ADA0[0xD]; - sub_0CBC(); - sub_10424(); + DmaCopy16(3, gIntroScene2_Pal, (void*) PLTT, 0x80); + IntroScene2_InitVars(); + gMain.bgOffsets[0].xOffset = gIntroBGParams[0x0]; + gMain.bgOffsets[0].yOffset = gIntroBGParams[0x1]; + gMain.bgOffsets[1].xOffset = gIntroBGParams[0x6]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[0x7]; + gMain.bgOffsets[3].xOffset = gIntroBGParams[0xC]; + gMain.bgOffsets[3].yOffset = gIntroBGParams[0xD]; + EnableVBlankInterrupts(); + FlashWhiteTransitionIn(); gIntroSceneIndex += 2; } -void sub_A2A8(void) +void IntroScene2_InitVars(void) { - gUnknown_0202ADA0[0x0] = 0x1C; - gUnknown_0202ADA0[0x1] = 0xFF2C; - gUnknown_0202ADA0[0x2] = 0; - gUnknown_0202ADA0[0x3] = 0xE; - gUnknown_0202ADA0[0x6] = 0xFF5C; - gUnknown_0202ADA0[0x7] = 0xFF08; - gUnknown_0202ADA0[0x8] = 0; - gUnknown_0202ADA0[0x9] = 0x10; - gUnknown_0202ADA0[0xC] = 0; - gUnknown_0202ADA0[0xD] = 0; - gUnknown_0202ADA0[0x10] = 0; - gUnknown_0202BF10 = 0; - gUnknown_0202A578 = 0; + gIntroBGParams[0x0] = 0x1C; + gIntroBGParams[0x1] = 0xFF2C; + gIntroBGParams[0x2] = 0; + gIntroBGParams[0x3] = 0xE; + gIntroBGParams[0x6] = 0xFF5C; + gIntroBGParams[0x7] = 0xFF08; + gIntroBGParams[0x8] = 0; + gIntroBGParams[0x9] = 0x10; + gIntroBGParams[0xC] = 0; + gIntroBGParams[0xD] = 0; + gIntroBGParams[0x10] = 0; + gIntroFrameCounter = 0; + gIntroAnimStep = 0; } void nullsub_6(void) { } -void sub_A2F0(void) +void IntroScene2_ScrollBGs(void) { - gUnknown_0202ADA0[0x1] += gUnknown_0202ADA0[0x3]; - gUnknown_0202ADA0[0x7] += gUnknown_0202ADA0[0x9]; - gUnknown_0202ADA0[0xC]--; - gUnknown_0202ADA0[0xD]--; - gUnknown_0202ADA0[0x0]--; - gUnknown_0202ADA0[0x6]++; + gIntroBGParams[0x1] += gIntroBGParams[0x3]; + gIntroBGParams[0x7] += gIntroBGParams[0x9]; + gIntroBGParams[0xC]--; + gIntroBGParams[0xD]--; + gIntroBGParams[0x0]--; + gIntroBGParams[0x6]++; - if (gUnknown_0202BF10 % 2 == 0) + if (gIntroFrameCounter % 2 == 0) { - gUnknown_0202ADA0[0x3]--; - gUnknown_0202ADA0[0x9]--; + gIntroBGParams[0x3]--; + gIntroBGParams[0x9]--; } - // TODO same as sub_A16C - possible inline function? - gMain.bgOffsets[0].xOffset = gUnknown_0202ADA0[0x0]; - gMain.bgOffsets[0].yOffset = gUnknown_0202ADA0[0x1]; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[0x6]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[0x7]; - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0xC]; - gMain.bgOffsets[3].yOffset = gUnknown_0202ADA0[0xD]; + // TODO same as IntroScene2_LoadGraphics - possible inline function? + gMain.bgOffsets[0].xOffset = gIntroBGParams[0x0]; + gMain.bgOffsets[0].yOffset = gIntroBGParams[0x1]; + gMain.bgOffsets[1].xOffset = gIntroBGParams[0x6]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[0x7]; + gMain.bgOffsets[3].xOffset = gIntroBGParams[0xC]; + gMain.bgOffsets[3].yOffset = gIntroBGParams[0xD]; - gUnknown_0202ADA0[0x10]++; - if (gUnknown_0202ADA0[0x10] > 0x27) + gIntroBGParams[0x10]++; + if (gIntroBGParams[0x10] > 0x27) { - gUnknown_0202ADA0[0x10] = 0; + gIntroBGParams[0x10] = 0; gIntroSceneIndex += 2; } } @@ -751,42 +751,42 @@ void nullsub_7(void) { } -void sub_A39C(void) +void IntroScene2_FinalScrollAndFade(void) { - gUnknown_0202ADA0[0x1]++; - gUnknown_0202ADA0[0x7]++; - gUnknown_0202ADA0[0xC]--; - gUnknown_0202ADA0[0xD]--; - gUnknown_0202ADA0[0x0]--; - gUnknown_0202ADA0[0x6]++; + gIntroBGParams[0x1]++; + gIntroBGParams[0x7]++; + gIntroBGParams[0xC]--; + gIntroBGParams[0xD]--; + gIntroBGParams[0x0]--; + gIntroBGParams[0x6]++; - // TODO same as sub_A2F0 - possible inline function? - if (gUnknown_0202BF10 % 2 == 0) + // TODO same as IntroScene2_ScrollBGs - possible inline function? + if (gIntroFrameCounter % 2 == 0) { - gUnknown_0202ADA0[0x3]--; - gUnknown_0202ADA0[0x9]--; + gIntroBGParams[0x3]--; + gIntroBGParams[0x9]--; } - // TODO same as sub_A16C - possible inline function? - gMain.bgOffsets[0].xOffset = gUnknown_0202ADA0[0x0]; - gMain.bgOffsets[0].yOffset = gUnknown_0202ADA0[0x1]; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[0x6]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[0x7]; - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0xC]; - gMain.bgOffsets[3].yOffset = gUnknown_0202ADA0[0xD]; + // TODO same as IntroScene2_LoadGraphics - possible inline function? + gMain.bgOffsets[0].xOffset = gIntroBGParams[0x0]; + gMain.bgOffsets[0].yOffset = gIntroBGParams[0x1]; + gMain.bgOffsets[1].xOffset = gIntroBGParams[0x6]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[0x7]; + gMain.bgOffsets[3].xOffset = gIntroBGParams[0xC]; + gMain.bgOffsets[3].yOffset = gIntroBGParams[0xD]; - sub_10480(); - sub_10544(); + FlashWhiteTransitionOut(); + DisableDisplayInterrupts(); gIntroSceneIndex++; } -void sub_A43C(void) +void IntroScene2_ClearGraphics(void) { - sub_0518(); + ClearBgTilemapAndOffsets(); gIntroSceneIndex++; } -void sub_A454(void) +void IntroScene3_LoadGraphics(void) { // TODO use proper constants - see LoadEReaderGraphics? REG_DISPCNT = 0x1000; @@ -799,127 +799,127 @@ void sub_A454(void) REG_BG3CNT = 0x1F03; REG_DISPCNT |= 0x800; - DmaCopy16(3, gUnknown_080DE520, (void*) 0x0600D000, 0x1000); - DmaCopy16(3, gUnknown_080DCD20, (void*) 0x0600E000, 0x800); - DmaCopy16(3, gUnknown_080D4900, (void*) 0x0600E800, 0x1000); - DmaCopy16(3, gUnknown_080D5900, (void*) 0x0600F800, 0x800); - DmaCopy16(3, gUnknown_080DD520, gUnknown_03005C00, 0x800); - DmaCopy16(3, gUnknown_080DDD20, gUnknown_0201B180, 0x800); + DmaCopy16(3, gIntroScene3_BG0Tilemap, (void*) 0x0600D000, 0x1000); + DmaCopy16(3, gIntroScene3_BG1Tilemap, (void*) 0x0600E000, 0x800); + DmaCopy16(3, gIntroScene3_BG2Tilemap, (void*) 0x0600E800, 0x1000); + DmaCopy16(3, gIntroScene3_BG3Tilemap, (void*) 0x0600F800, 0x800); + DmaCopy16(3, gIntroScene3_BG1TilemapA, gBG0TilemapBuffer, 0x800); + DmaCopy16(3, gIntroScene3_BG1TilemapB, gIntroScene3_AltBG1TilemapBuffer, 0x800); DmaCopy16(3, gIntroScene3Sprites_Gfx, (void*) 0x06000000, 0x6C00); - DmaCopy16(3, gUnknown_080D4700, (void*) PLTT, 0xE0); + DmaCopy16(3, gIntroScene3_Pal, (void*) PLTT, 0xE0); DmaCopy16(3, gIntroScene3Treecko_Gfx, (void*) 0x06010000, 0x2000); - DmaCopy16(3, gUnknown_080D4700, (void*) OBJ_PLTT, 0xE0); + DmaCopy16(3, gIntroScene3_Pal, (void*) OBJ_PLTT, 0xE0); - sub_A628(); - sub_A87C(); + IntroScene3_InitVars(); + IntroScene3_RenderPokeball(); - gMain.bgOffsets[0].xOffset = gUnknown_0202ADA0[0x0]; - gMain.bgOffsets[0].yOffset = gUnknown_0202ADA0[0x1]; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[0x6]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[0x7]; - gMain.bgOffsets[2].xOffset = gUnknown_0202ADA0[0xC]; - gMain.bgOffsets[2].yOffset = gUnknown_0202ADA0[0xD]; - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0x12]; - gMain.bgOffsets[3].yOffset = gUnknown_0202ADA0[0x13]; + gMain.bgOffsets[0].xOffset = gIntroBGParams[0x0]; + gMain.bgOffsets[0].yOffset = gIntroBGParams[0x1]; + gMain.bgOffsets[1].xOffset = gIntroBGParams[0x6]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[0x7]; + gMain.bgOffsets[2].xOffset = gIntroBGParams[0xC]; + gMain.bgOffsets[2].yOffset = gIntroBGParams[0xD]; + gMain.bgOffsets[3].xOffset = gIntroBGParams[0x12]; + gMain.bgOffsets[3].yOffset = gIntroBGParams[0x13]; - sub_0CBC(); - sub_10424(); + EnableVBlankInterrupts(); + FlashWhiteTransitionIn(); gIntroSceneIndex++; } -void sub_A628(void) +void IntroScene3_InitVars(void) { - gUnknown_0202ADA0[0x0] = 0x2C; - gUnknown_0202ADA0[0x1] = 0xFF8E; + gIntroBGParams[0x0] = 0x2C; + gIntroBGParams[0x1] = 0xFF8E; - gUnknown_0201A450[0].unk0 = 0xFFD4; - gUnknown_0201A450[0].unk2 = 0x72; + gIntroSpriteEntities[0].posX = 0xFFD4; + gIntroSpriteEntities[0].posY = 0x72; - gUnknown_0202ADA0[0x6] = 0xFFCE; - gUnknown_0202ADA0[0x7] = 0x1E; - gUnknown_0202ADA0[0xC] = 0; - gUnknown_0202ADA0[0xD] = 0; - gUnknown_0202ADA0[0x10] = 0; - gUnknown_0202ADA0[0x12] = 0; - gUnknown_0202ADA0[0x13] = 0; + gIntroBGParams[0x6] = 0xFFCE; + gIntroBGParams[0x7] = 0x1E; + gIntroBGParams[0xC] = 0; + gIntroBGParams[0xD] = 0; + gIntroBGParams[0x10] = 0; + gIntroBGParams[0x12] = 0; + gIntroBGParams[0x13] = 0; - gUnknown_0202BF10 = 0; - gUnknown_0202A578 = 0; + gIntroFrameCounter = 0; + gIntroAnimStep = 0; } -void sub_A674(void) +void IntroScene3_ScrollIn(void) { - gUnknown_0202ADA0[0x0] -= 0x11; - gUnknown_0202ADA0[0x1] += 0xA; + gIntroBGParams[0x0] -= 0x11; + gIntroBGParams[0x1] += 0xA; - gUnknown_0201A450[0].unk0 += 0x11; - gUnknown_0201A450[0].unk2 -= 0xA; + gIntroSpriteEntities[0].posX += 0x11; + gIntroSpriteEntities[0].posY -= 0xA; - gUnknown_0202ADA0[0xC] += 0x10; - gUnknown_0202ADA0[0x6] += 0x4; - gUnknown_0202ADA0[0x7] -= 0x8; - gUnknown_0202ADA0[0x10]++; + gIntroBGParams[0xC] += 0x10; + gIntroBGParams[0x6] += 0x4; + gIntroBGParams[0x7] -= 0x8; + gIntroBGParams[0x10]++; - if (gUnknown_0202ADA0[0x10] > 9) + if (gIntroBGParams[0x10] > 9) { - gUnknown_0202ADA0[0x10] = 0; + gIntroBGParams[0x10] = 0; gIntroSceneIndex++; } - sub_A87C(); - gMain.bgOffsets[0].xOffset = gUnknown_0202ADA0[0x0]; - gMain.bgOffsets[0].yOffset = gUnknown_0202ADA0[0x1]; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[0x6]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[0x7]; - gMain.bgOffsets[2].xOffset = gUnknown_0202ADA0[0xC]; - gMain.bgOffsets[2].yOffset = gUnknown_0202ADA0[0xD]; + IntroScene3_RenderPokeball(); + gMain.bgOffsets[0].xOffset = gIntroBGParams[0x0]; + gMain.bgOffsets[0].yOffset = gIntroBGParams[0x1]; + gMain.bgOffsets[1].xOffset = gIntroBGParams[0x6]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[0x7]; + gMain.bgOffsets[2].xOffset = gIntroBGParams[0xC]; + gMain.bgOffsets[2].yOffset = gIntroBGParams[0xD]; } -void sub_A710(void) +void IntroScene3_AnimateAndSwapBG(void) { - gUnknown_0202ADA0[0x12]--; + gIntroBGParams[0x12]--; - if (gUnknown_0202BF10 % 2 == 0) + if (gIntroFrameCounter % 2 == 0) { - gUnknown_0202ADA0[0x0]--; - gUnknown_0202ADA0[0x1]++; - gUnknown_0201A450[0].unk0 += 2; - gUnknown_0201A450[0].unk2 -= 2; + gIntroBGParams[0x0]--; + gIntroBGParams[0x1]++; + gIntroSpriteEntities[0].posX += 2; + gIntroSpriteEntities[0].posY -= 2; } - if (gUnknown_0202BF10 % 3 == 0) + if (gIntroFrameCounter % 3 == 0) { - DmaCopy16(3, (void *) 0x05000000, gUnknown_0202BE70, 0x20); + DmaCopy16(3, (void *) 0x05000000, gIntroPalSwapBuffer, 0x20); DmaCopy16(3, (void *) 0x05000040, 0x05000000, 0x20); - DmaCopy16(3, (void *) gUnknown_0202BE70, 0x05000040, 0x20); + DmaCopy16(3, (void *) gIntroPalSwapBuffer, 0x05000040, 0x20); } - gMain.bgOffsets[0].xOffset = gUnknown_0202ADA0[0x0]; - gMain.bgOffsets[0].yOffset = gUnknown_0202ADA0[0x1]; - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0x12]; - gMain.bgOffsets[3].yOffset = gUnknown_0202ADA0[0x13]; - sub_A87C(); + gMain.bgOffsets[0].xOffset = gIntroBGParams[0x0]; + gMain.bgOffsets[0].yOffset = gIntroBGParams[0x1]; + gMain.bgOffsets[3].xOffset = gIntroBGParams[0x12]; + gMain.bgOffsets[3].yOffset = gIntroBGParams[0x13]; + IntroScene3_RenderPokeball(); - if (gUnknown_0202ADA0[0x10] == 2) + if (gIntroBGParams[0x10] == 2) { - DmaCopy16(3, gUnknown_03005C00, (void*) 0x0600E000, 0x800); - gUnknown_0202ADA0[0x6] = 0; - gUnknown_0202ADA0[0x7] = 0; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[0x6]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[0x7]; + DmaCopy16(3, gBG0TilemapBuffer, (void*) 0x0600E000, 0x800); + gIntroBGParams[0x6] = 0; + gIntroBGParams[0x7] = 0; + gMain.bgOffsets[1].xOffset = gIntroBGParams[0x6]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[0x7]; } - else if (gUnknown_0202ADA0[0x10] == 4) + else if (gIntroBGParams[0x10] == 4) { - DmaCopy16(3, gUnknown_0201B180, (void*) 0x0600E000, 0x800); - gUnknown_0202ADA0[0x6] = 0; - gUnknown_0202ADA0[0x7] = 0; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[0x6]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[0x7]; + DmaCopy16(3, gIntroScene3_AltBG1TilemapBuffer, (void*) 0x0600E000, 0x800); + gIntroBGParams[0x6] = 0; + gIntroBGParams[0x7] = 0; + gMain.bgOffsets[1].xOffset = gIntroBGParams[0x6]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[0x7]; } - gUnknown_0202ADA0[0x10]++; - if (gUnknown_0202ADA0[0x10] > 0x1D) + gIntroBGParams[0x10]++; + if (gIntroBGParams[0x10] > 0x1D) { - gUnknown_0202ADA0[0x10] = 0; + gIntroBGParams[0x10] = 0; gIntroSceneIndex += 2; } } @@ -928,14 +928,14 @@ void nullsub_8(void) { } -void sub_A860(void) +void IntroScene3_BeginFadeOut(void) { - sub_10480(); - sub_10544(); + FlashWhiteTransitionOut(); + DisableDisplayInterrupts(); gIntroSceneIndex++; } -void sub_A87C(void) +void IntroScene3_RenderPokeball(void) { s32 i; struct SpriteGroup *puVar4; @@ -948,12 +948,12 @@ void sub_A87C(void) puVar4 = &gMain.spriteGroups[0]; puVar4->available = TRUE; - LoadSpriteSets(gUnknown_086A795C, 0x1, puVar4); + LoadSpriteSets(gIntroScene3_SpriteSets, 0x1, puVar4); if (puVar4->available == 1) { - puVar4->baseX = gUnknown_0201A450[0].unk0; - puVar4->baseY = gUnknown_0201A450[0].unk2; + puVar4->baseX = gIntroSpriteEntities[0].posX; + puVar4->baseY = gIntroSpriteEntities[0].posY; for (i = 0; i < 4; i++) { @@ -966,13 +966,13 @@ void sub_A87C(void) puVar4->available = FALSE; } -void sub_A950(void) +void IntroScene3_ClearGraphics(void) { - sub_0518(); + ClearBgTilemapAndOffsets(); gIntroSceneIndex++; } -void sub_A968(void) +void IntroScene4_LoadGraphics(void) { // TODO use proper constants - see LoadEReaderGraphics? REG_DISPCNT = 0; @@ -983,72 +983,72 @@ void sub_A968(void) REG_BG3CNT = 0x1E03; REG_DISPCNT |= 0x800; - DmaCopy16(3, gUnknown_080E5F60, (void *) 0x6006000, 0x2000); - DmaCopy16(3, gUnknown_080E7F60, (void *) 0x600D000, 0x2000); - DmaCopy16(3, gUnknown_080E1740, (void *) 0x600F000, 0x800); + DmaCopy16(3, gIntroScene4_BG0Tiles, (void *) 0x6006000, 0x2000); + DmaCopy16(3, gIntroScene4_BG1Tiles, (void *) 0x600D000, 0x2000); + DmaCopy16(3, gIntroScene4_BG3Tilemap, (void *) 0x600F000, 0x800); DmaCopy16(3, gIntroScene4Sprites_Gfx, (void *) 0x6000000, 0x4000); - DmaCopy16(3, gUnknown_080E1540, PLTT, 0x60); + DmaCopy16(3, gIntroScene4_Pal, PLTT, 0x60); gMain.dispcntBackup = REG_DISPCNT; - sub_AAA8(); - gMain.bgOffsets[0].xOffset = gUnknown_0202ADA0[0x0]; - gMain.bgOffsets[0].yOffset = gUnknown_0202ADA0[0x1]; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[0x6]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[0x7]; - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0xC]; - gMain.bgOffsets[3].yOffset = gUnknown_0202ADA0[0xD]; + IntroScene4_InitVars(); + gMain.bgOffsets[0].xOffset = gIntroBGParams[0x0]; + gMain.bgOffsets[0].yOffset = gIntroBGParams[0x1]; + gMain.bgOffsets[1].xOffset = gIntroBGParams[0x6]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[0x7]; + gMain.bgOffsets[3].xOffset = gIntroBGParams[0xC]; + gMain.bgOffsets[3].yOffset = gIntroBGParams[0xD]; - sub_0CBC(); - sub_10424(); + EnableVBlankInterrupts(); + FlashWhiteTransitionIn(); gIntroSceneIndex += 2; } -void sub_AAA8(void) +void IntroScene4_InitVars(void) { - gUnknown_0202ADA0[0x0] = 0x1C; - gUnknown_0202ADA0[0x1] = 0xFF20; - gUnknown_0202ADA0[0x2] = 0; - gUnknown_0202ADA0[0x3] = 0xF; - gUnknown_0202ADA0[0x6] = 0xFF64; - gUnknown_0202ADA0[0x7] = 0xE0; - gUnknown_0202ADA0[0x8] = 0; - gUnknown_0202ADA0[0x9] = 0xFFF1; - gUnknown_0202ADA0[0xC] = 0; - gUnknown_0202ADA0[0xD] = 0; - gUnknown_0202ADA0[0x10] = 0; + gIntroBGParams[0x0] = 0x1C; + gIntroBGParams[0x1] = 0xFF20; + gIntroBGParams[0x2] = 0; + gIntroBGParams[0x3] = 0xF; + gIntroBGParams[0x6] = 0xFF64; + gIntroBGParams[0x7] = 0xE0; + gIntroBGParams[0x8] = 0; + gIntroBGParams[0x9] = 0xFFF1; + gIntroBGParams[0xC] = 0; + gIntroBGParams[0xD] = 0; + gIntroBGParams[0x10] = 0; - gUnknown_0202BF10 = 0; - gUnknown_0202A578 = 0; + gIntroFrameCounter = 0; + gIntroAnimStep = 0; } void nullsub_9(void) { } -void sub_AAF4(void) +void IntroScene4_ScrollBGs(void) { - gUnknown_0202ADA0[0x1] += gUnknown_0202ADA0[0x3]; - gUnknown_0202ADA0[0x7] += gUnknown_0202ADA0[0x9]; - gUnknown_0202ADA0[0xC]--; - gUnknown_0202ADA0[0x0]--; - gUnknown_0202ADA0[0x6]++; + gIntroBGParams[0x1] += gIntroBGParams[0x3]; + gIntroBGParams[0x7] += gIntroBGParams[0x9]; + gIntroBGParams[0xC]--; + gIntroBGParams[0x0]--; + gIntroBGParams[0x6]++; - if (gUnknown_0202BF10 % 2 == 0) + if (gIntroFrameCounter % 2 == 0) { - gUnknown_0202ADA0[0x3]--; - gUnknown_0202ADA0[0x9]++; + gIntroBGParams[0x3]--; + gIntroBGParams[0x9]++; } - gMain.bgOffsets[0].xOffset = gUnknown_0202ADA0[0x0]; - gMain.bgOffsets[0].yOffset = gUnknown_0202ADA0[0x1]; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[0x6]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[0x7]; - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0xC]; + gMain.bgOffsets[0].xOffset = gIntroBGParams[0x0]; + gMain.bgOffsets[0].yOffset = gIntroBGParams[0x1]; + gMain.bgOffsets[1].xOffset = gIntroBGParams[0x6]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[0x7]; + gMain.bgOffsets[3].xOffset = gIntroBGParams[0xC]; - gUnknown_0202ADA0[0x10]++; - if (0x27 < gUnknown_0202ADA0[0x10]) + gIntroBGParams[0x10]++; + if (0x27 < gIntroBGParams[0x10]) { - gUnknown_0202ADA0[0x10] = 0; + gIntroBGParams[0x10] = 0; gIntroSceneIndex += 2; } } @@ -1057,40 +1057,40 @@ void nullsub_10(void) { } -void sub_AB90(void) +void IntroScene4_FinalScrollAndFade(void) { - // TODO Near duplicate of sub_AAF4 - gUnknown_0202ADA0[0x1] += gUnknown_0202ADA0[0x3]; - gUnknown_0202ADA0[0x7] += gUnknown_0202ADA0[0x9]; - gUnknown_0202ADA0[0xC]--; - gUnknown_0202ADA0[0x0]--; - gUnknown_0202ADA0[0x6]++; + // TODO Near duplicate of IntroScene4_ScrollBGs + gIntroBGParams[0x1] += gIntroBGParams[0x3]; + gIntroBGParams[0x7] += gIntroBGParams[0x9]; + gIntroBGParams[0xC]--; + gIntroBGParams[0x0]--; + gIntroBGParams[0x6]++; - if (gUnknown_0202BF10 % 2 == 0) + if (gIntroFrameCounter % 2 == 0) { - gUnknown_0202ADA0[0x3]--; - gUnknown_0202ADA0[0x9]++; + gIntroBGParams[0x3]--; + gIntroBGParams[0x9]++; } - gMain.bgOffsets[0].xOffset = gUnknown_0202ADA0[0x0]; - gMain.bgOffsets[0].yOffset = gUnknown_0202ADA0[0x1]; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[0x6]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[0x7]; - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0xC]; + gMain.bgOffsets[0].xOffset = gIntroBGParams[0x0]; + gMain.bgOffsets[0].yOffset = gIntroBGParams[0x1]; + gMain.bgOffsets[1].xOffset = gIntroBGParams[0x6]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[0x7]; + gMain.bgOffsets[3].xOffset = gIntroBGParams[0xC]; - sub_10480(); - sub_10544(); + FlashWhiteTransitionOut(); + DisableDisplayInterrupts(); gIntroSceneIndex++; } -void sub_AC20(void) +void IntroScene4_ClearGraphics(void) { - // TODO Duplicate of sub_A950? - sub_0518(); + // TODO Duplicate of IntroScene3_ClearGraphics? + ClearBgTilemapAndOffsets(); gIntroSceneIndex++; } -void sub_AC38(void) +void IntroScene5_LoadGraphics(void) { // TODO use proper constants - see LoadEReaderGraphics? REG_DISPCNT = 0x1000; @@ -1103,134 +1103,134 @@ void sub_AC38(void) REG_BG3CNT = 0x1E03; REG_DISPCNT |= 0x800; - DmaCopy16(3, gUnknown_080F1980, (void *) 0x6006000, 0x800); - DmaCopy16(3, gUnknown_080EB160, (void *) 0x6007000, 0x1000); - DmaCopy16(3, gUnknown_080EA160, (void *) 0x600E000, 0x1000); - DmaCopy16(3, gUnknown_080EC160, (void *) 0x600F000, 0x800); + DmaCopy16(3, gIntroScene5_BG0Tiles, (void *) 0x6006000, 0x800); + DmaCopy16(3, gIntroScene5_BG1Tiles, (void *) 0x6007000, 0x1000); + DmaCopy16(3, gIntroScene5_BG2Tilemap, (void *) 0x600E000, 0x1000); + DmaCopy16(3, gIntroScene5_BG3Tilemap, (void *) 0x600F000, 0x800); DmaCopy16(3, gIntroScene5Text_Gfx, (void *) 0x6000000, 0x2800); - DmaCopy16(3, gIntroScene1Ball_Gfx, gUnknown_03000000, 0x4000); - DmaCopy16(3, gUnknown_080E9F60, (void *) 0x5000000, 0x180); + DmaCopy16(3, gIntroScene1Ball_Gfx, gTempGfxBuffer, 0x4000); + DmaCopy16(3, gIntroScene5_Pal, (void *) 0x5000000, 0x180); DmaCopy16(3, gIntroScene5Sprites_Gfx, (void *) 0x6010000, 0x3000); - DmaCopy16(3, gUnknown_080E9F60, OBJ_PLTT, 0x180); + DmaCopy16(3, gIntroScene5_Pal, OBJ_PLTT, 0x180); - sub_ADFC(); - sub_B0E8(); + IntroScene5_InitVars(); + IntroScene5_RenderAllSprites(); - gMain.bgOffsets[0].xOffset = gUnknown_0202ADA0[0x0]; - gMain.bgOffsets[0].yOffset = gUnknown_0202ADA0[0x1]; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[0x6]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[0x7]; - gMain.bgOffsets[2].xOffset = gUnknown_0202ADA0[0xC]; - gMain.bgOffsets[2].yOffset = gUnknown_0202ADA0[0xD]; - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0x12]; - gMain.bgOffsets[3].yOffset = gUnknown_0202ADA0[0x13]; + gMain.bgOffsets[0].xOffset = gIntroBGParams[0x0]; + gMain.bgOffsets[0].yOffset = gIntroBGParams[0x1]; + gMain.bgOffsets[1].xOffset = gIntroBGParams[0x6]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[0x7]; + gMain.bgOffsets[2].xOffset = gIntroBGParams[0xC]; + gMain.bgOffsets[2].yOffset = gIntroBGParams[0xD]; + gMain.bgOffsets[3].xOffset = gIntroBGParams[0x12]; + gMain.bgOffsets[3].yOffset = gIntroBGParams[0x13]; - sub_0CBC(); - sub_10424(); + EnableVBlankInterrupts(); + FlashWhiteTransitionIn(); gIntroSceneIndex++; } -void sub_ADFC(void) +void IntroScene5_InitVars(void) { - gUnknown_0201A450[1].unk0 = 0xB4; - gUnknown_0201A450[1].unk2 = 0xFFBC; - gUnknown_0201A450[0].unk0 = 0xB4; - gUnknown_0201A450[0].unk2 = 0xFFBC; - gUnknown_0201A450[2].unk0 = 0x80; - gUnknown_0201A450[2].unk2 = 0x88; + gIntroSpriteEntities[1].posX = 0xB4; + gIntroSpriteEntities[1].posY = 0xFFBC; + gIntroSpriteEntities[0].posX = 0xB4; + gIntroSpriteEntities[0].posY = 0xFFBC; + gIntroSpriteEntities[2].posX = 0x80; + gIntroSpriteEntities[2].posY = 0x88; - gUnknown_0202ADA0[0x0] = 0xFF58; - gUnknown_0202ADA0[0x1] = 0xFF98; - gUnknown_0202ADA0[0x4] = 0; - gUnknown_0202ADA0[0x5] = 0; - gUnknown_0202ADA0[0x2] = 0; + gIntroBGParams[0x0] = 0xFF58; + gIntroBGParams[0x1] = 0xFF98; + gIntroBGParams[0x4] = 0; + gIntroBGParams[0x5] = 0; + gIntroBGParams[0x2] = 0; - CopyBgTilesRect(&gUnknown_03002300, (void *) 0x6002ee0, 8, 8); + CopyBgTilesRect(&gTextTilemapBuffer, (void *) 0x6002ee0, 8, 8); - gUnknown_0202ADA0[0x6] = 0xA5; - gUnknown_0202ADA0[0x7] = 0; - gUnknown_0202ADA0[0xA] = 0; - gUnknown_0202ADA0[0xC] = 0xA0; - gUnknown_0202ADA0[0xD] = 0; - gUnknown_0202ADA0[0x10] = 0; - gUnknown_0202ADA0[0x12] = 0; - gUnknown_0202ADA0[0x13] = 0; + gIntroBGParams[0x6] = 0xA5; + gIntroBGParams[0x7] = 0; + gIntroBGParams[0xA] = 0; + gIntroBGParams[0xC] = 0xA0; + gIntroBGParams[0xD] = 0; + gIntroBGParams[0x10] = 0; + gIntroBGParams[0x12] = 0; + gIntroBGParams[0x13] = 0; - gUnknown_0202BF10 = 0; - gUnknown_0202A578 = 0; + gIntroFrameCounter = 0; + gIntroAnimStep = 0; } -void sub_AE74(void) +void IntroScene5_ScrollIn(void) { - gUnknown_0201A450[1].unk0 -= 0x10; - gUnknown_0201A450[1].unk2 += 0xA; - gUnknown_0201A450[0].unk0 -= 0x10; - gUnknown_0201A450[0].unk2 += 0xA; - gUnknown_0201A450[2].unk0 += 0x5; - gUnknown_0201A450[2].unk2 -= 0x3; + gIntroSpriteEntities[1].posX -= 0x10; + gIntroSpriteEntities[1].posY += 0xA; + gIntroSpriteEntities[0].posX -= 0x10; + gIntroSpriteEntities[0].posY += 0xA; + gIntroSpriteEntities[2].posX += 0x5; + gIntroSpriteEntities[2].posY -= 0x3; - gUnknown_0202ADA0[0x6] -= 0x10; - gUnknown_0202ADA0[0x7]++; - gUnknown_0202ADA0[0xC] -= 0x10; - gUnknown_0202ADA0[0x0] += gUnknown_0202ADA0[0x2]; - gUnknown_0202ADA0[0x1] += 0x9; - gUnknown_0202ADA0[0x2]++; - gUnknown_0202ADA0[0x5]++; + gIntroBGParams[0x6] -= 0x10; + gIntroBGParams[0x7]++; + gIntroBGParams[0xC] -= 0x10; + gIntroBGParams[0x0] += gIntroBGParams[0x2]; + gIntroBGParams[0x1] += 0x9; + gIntroBGParams[0x2]++; + gIntroBGParams[0x5]++; - if (gUnknown_0202ADA0[0x5] > gUnknown_086A79FC[gUnknown_0202ADA0[4]].y) + if (gIntroBGParams[0x5] > gIntroScene5_BGAnimTiming[gIntroBGParams[4]].y) { - gUnknown_0202ADA0[4]++; - CopyBgTilesRect(&gUnknown_03000000[gUnknown_086A7A1C[gUnknown_0202ADA0[4]]], (void *) 0x6002EE0, 8, 8); + gIntroBGParams[4]++; + CopyBgTilesRect(&gTempGfxBuffer[gIntroScene5_TileOffsets[gIntroBGParams[4]]], (void *) 0x6002EE0, 8, 8); } - sub_B0E8(); - gMain.bgOffsets[0].xOffset = gUnknown_0202ADA0[0x0]; - gMain.bgOffsets[0].yOffset = gUnknown_0202ADA0[0x1]; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[0x6]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[0x7]; - gMain.bgOffsets[2].xOffset = gUnknown_0202ADA0[0xC]; - gMain.bgOffsets[2].yOffset = gUnknown_0202ADA0[0xD]; + IntroScene5_RenderAllSprites(); + gMain.bgOffsets[0].xOffset = gIntroBGParams[0x0]; + gMain.bgOffsets[0].yOffset = gIntroBGParams[0x1]; + gMain.bgOffsets[1].xOffset = gIntroBGParams[0x6]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[0x7]; + gMain.bgOffsets[2].xOffset = gIntroBGParams[0xC]; + gMain.bgOffsets[2].yOffset = gIntroBGParams[0xD]; - if (++gUnknown_0202ADA0[0x10] > 9) + if (++gIntroBGParams[0x10] > 9) { - gUnknown_0202ADA0[0x10] = 0; + gIntroBGParams[0x10] = 0; gIntroSceneIndex++; } } -void sub_AF80(void) +void IntroScene5_AnimateEntities(void) { - if (++gUnknown_0202ADA0[0x5] > gUnknown_086A79FC[gUnknown_0202ADA0[0x4]].y) + if (++gIntroBGParams[0x5] > gIntroScene5_BGAnimTiming[gIntroBGParams[0x4]].y) { - if (gUnknown_0202ADA0[0x04] < 7) + if (gIntroBGParams[0x04] < 7) { - gUnknown_0202ADA0[0x4]++; - CopyBgTilesRect(&gUnknown_03000000[gUnknown_086A7A1C[gUnknown_0202ADA0[0x4]]], (void *) 0x6002EE0, 8, 8); + gIntroBGParams[0x4]++; + CopyBgTilesRect(&gTempGfxBuffer[gIntroScene5_TileOffsets[gIntroBGParams[0x4]]], (void *) 0x6002EE0, 8, 8); } } - sub_B0E8(); - gUnknown_0202ADA0[0x12]++; - if (gUnknown_0202BF10 % 2 == 0) + IntroScene5_RenderAllSprites(); + gIntroBGParams[0x12]++; + if (gIntroFrameCounter % 2 == 0) { - gUnknown_0201A450[1].unk0--; - gUnknown_0201A450[1].unk2++; - gUnknown_0201A450[0].unk0 -= 2; - gUnknown_0201A450[0].unk2 += 2; + gIntroSpriteEntities[1].posX--; + gIntroSpriteEntities[1].posY++; + gIntroSpriteEntities[0].posX -= 2; + gIntroSpriteEntities[0].posY += 2; } - gMain.bgOffsets[0].xOffset = gUnknown_0202ADA0[0x0]; - gMain.bgOffsets[0].yOffset = gUnknown_0202ADA0[0x1]; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[0x6]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[0x7]; - gMain.bgOffsets[2].xOffset = gUnknown_0202ADA0[0xC]; - gMain.bgOffsets[2].yOffset = gUnknown_0202ADA0[0xD]; - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0x12]; - gMain.bgOffsets[3].yOffset = gUnknown_0202ADA0[0x13]; + gMain.bgOffsets[0].xOffset = gIntroBGParams[0x0]; + gMain.bgOffsets[0].yOffset = gIntroBGParams[0x1]; + gMain.bgOffsets[1].xOffset = gIntroBGParams[0x6]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[0x7]; + gMain.bgOffsets[2].xOffset = gIntroBGParams[0xC]; + gMain.bgOffsets[2].yOffset = gIntroBGParams[0xD]; + gMain.bgOffsets[3].xOffset = gIntroBGParams[0x12]; + gMain.bgOffsets[3].yOffset = gIntroBGParams[0x13]; - if (++gUnknown_0202ADA0[0x16] > 29) + if (++gIntroBGParams[0x16] > 29) { - gUnknown_0202ADA0[0x16] = 0; + gIntroBGParams[0x16] = 0; gIntroSceneIndex += 2; } } @@ -1239,17 +1239,17 @@ void nullsub_11(void) { } -void sub_B090(void) +void IntroScene5_FadeOutAndClearOAM(void) { - sub_10480(); + FlashWhiteTransitionOut(); ClearSprites(); DmaFill32(3, 0, OAM, 0x400); DmaFill16(3, 0, OBJ_VRAM0, 0x5000); - sub_10544(); + DisableDisplayInterrupts(); gIntroSceneIndex++; } -void sub_B0E8(void) +void IntroScene5_RenderAllSprites(void) { int i; struct OamDataSimple *oamData; @@ -1269,12 +1269,12 @@ void sub_B0E8(void) mainSg1->available = TRUE; mainSg0->available = TRUE; mainSg2->available = TRUE; - LoadSpriteSets(gUnknown_086A79EC, 3, gMain.spriteGroups); + LoadSpriteSets(gIntroScene5_SpriteSets, 3, gMain.spriteGroups); if (mainSg1->available == 1) { - mainSg1->baseX = gUnknown_0201A450[0].unk0; - mainSg1->baseY = gUnknown_0201A450[0].unk2; + mainSg1->baseX = gIntroSpriteEntities[0].posX; + mainSg1->baseY = gIntroSpriteEntities[0].posY; for (i = 0; i < 4; i++) { oamData = &mainSg1->oam[i]; @@ -1287,8 +1287,8 @@ void sub_B0E8(void) if (mainSg0->available == 1) { - mainSg0->baseX = gUnknown_0201A450[1].unk0; - mainSg0->baseY = gUnknown_0201A450[1].unk2; + mainSg0->baseX = gIntroSpriteEntities[1].posX; + mainSg0->baseY = gIntroSpriteEntities[1].posY; for (i = 0; i < 4; i++) { oamData = &mainSg0->oam[i]; @@ -1301,8 +1301,8 @@ void sub_B0E8(void) if (mainSg2->available == 1) { - mainSg2->baseX = gUnknown_0201A450[2].unk0; - mainSg2->baseY = gUnknown_0201A450[2].unk2; + mainSg2->baseX = gIntroSpriteEntities[2].posX; + mainSg2->baseY = gIntroSpriteEntities[2].posY; for (i = 0; i < 8; i++) { oamData = &mainSg2->oam[i]; @@ -1317,13 +1317,13 @@ void sub_B0E8(void) mainSg2->available = FALSE; } -void sub_B2E0(void) +void IntroScene5_ClearGraphics(void) { - sub_0518(); + ClearBgTilemapAndOffsets(); gIntroSceneIndex++; } -void sub_B2F8(void) +void IntroScene6_LoadGraphics(void) { REG_DISPCNT = DISPCNT_OBJ_ON; REG_BG0CNT = 0xF00; @@ -1335,194 +1335,194 @@ void sub_B2F8(void) REG_BG3CNT = 0x1f03; REG_DISPCNT |= (DISPCNT_BG3_ON); - DmaCopy16(3, gUnknown_080FD7C0, 0x06007800, 0x800); - DmaCopy16(3, gUnknown_080FDFC0, 0x0600D000, 0x2000); - DmaCopy16(3, gUnknown_080FCFC0, 0x0600F000, 0x800); - DmaCopy16(3, gUnknown_080F63A0, 0x0600F800, 0x800); + DmaCopy16(3, gIntroScene6_BG0Tilemap, 0x06007800, 0x800); + DmaCopy16(3, gIntroScene6_BG1Tiles, 0x0600D000, 0x2000); + DmaCopy16(3, gIntroScene6_BG2Tilemap, 0x0600F000, 0x800); + DmaCopy16(3, gIntroScene6_BG3Tilemap, 0x0600F800, 0x800); DmaCopy16(3, gIntroScene6Sprites_Gfx, 0x06000000, 0x6400); - DmaCopy16(3, gUnknown_080F61A0, 0x05000000, 0x80); + DmaCopy16(3, gIntroScene6_Pal, 0x05000000, 0x80); DmaCopy16(3, gIntroScene6Stars_Gfx, 0x06010000, 0x1000); - DmaCopy16(3, gUnknown_080F61A0, 0x05000200, 0x80); + DmaCopy16(3, gIntroScene6_Pal, 0x05000200, 0x80); - sub_B4A0(); + IntroScene6_InitVars(); - gMain.bgOffsets[0].xOffset = gUnknown_0202ADA0[0x0]; - gMain.bgOffsets[0].yOffset = gUnknown_0202ADA0[0x1]; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[0x6]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[0x7]; - gMain.bgOffsets[2].xOffset = gUnknown_0202ADA0[0xC]; - gMain.bgOffsets[2].yOffset = gUnknown_0202ADA0[0xD]; - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0x12]; - gMain.bgOffsets[3].yOffset = gUnknown_0202ADA0[0x13]; + gMain.bgOffsets[0].xOffset = gIntroBGParams[0x0]; + gMain.bgOffsets[0].yOffset = gIntroBGParams[0x1]; + gMain.bgOffsets[1].xOffset = gIntroBGParams[0x6]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[0x7]; + gMain.bgOffsets[2].xOffset = gIntroBGParams[0xC]; + gMain.bgOffsets[2].yOffset = gIntroBGParams[0xD]; + gMain.bgOffsets[3].xOffset = gIntroBGParams[0x12]; + gMain.bgOffsets[3].yOffset = gIntroBGParams[0x13]; - sub_0CBC(); - sub_10424(); + EnableVBlankInterrupts(); + FlashWhiteTransitionIn(); gIntroSceneIndex++; } -void sub_B4A0(void) +void IntroScene6_InitVars(void) { int i; - gUnknown_0202ADA0[0x6] = 0x1E; - gUnknown_0202ADA0[0x7] = 0xFF6A; - gUnknown_0202ADA0[0xA] = 0x1; - gUnknown_0202ADA0[0x0] = 0xFFFE; - gUnknown_0202ADA0[0x1] = 0xFFFB; - gUnknown_0202ADA0[0x2] = 0x0; - gUnknown_0202ADA0[0x3] = 0x8; - gUnknown_0202ADA0[0xC] = 0xFF90; - gUnknown_0202ADA0[0xD] = 0xFFD4; - gUnknown_0202ADA0[0xE] = 0x8; - gUnknown_0202ADA0[0xF] = 0x0; - gUnknown_0202ADA0[0x12] = 0x0; - gUnknown_0202ADA0[0x13] = 0x0; + gIntroBGParams[0x6] = 0x1E; + gIntroBGParams[0x7] = 0xFF6A; + gIntroBGParams[0xA] = 0x1; + gIntroBGParams[0x0] = 0xFFFE; + gIntroBGParams[0x1] = 0xFFFB; + gIntroBGParams[0x2] = 0x0; + gIntroBGParams[0x3] = 0x8; + gIntroBGParams[0xC] = 0xFF90; + gIntroBGParams[0xD] = 0xFFD4; + gIntroBGParams[0xE] = 0x8; + gIntroBGParams[0xF] = 0x0; + gIntroBGParams[0x12] = 0x0; + gIntroBGParams[0x13] = 0x0; - gUnknown_0201A450[0].unk0 = 0x32; - gUnknown_0201A450[0].unk2 = 0x3C; - gUnknown_0201A450[1].unk0 = 0x50; - gUnknown_0201A450[1].unk2 = 0x3C; - gUnknown_0201A450[2].unk0 = 0x8C; - gUnknown_0201A450[2].unk2 = 0x64; - gUnknown_0201A450[3].unk0 = 0xC8; - gUnknown_0201A450[3].unk2 = 0x5A; - gUnknown_0201A450[4].unk0 = 0x3C; - gUnknown_0201A450[4].unk2 = 0x1E; - gUnknown_0201A450[5].unk0 = 0x96; - gUnknown_0201A450[5].unk2 = 0x64; + gIntroSpriteEntities[0].posX = 0x32; + gIntroSpriteEntities[0].posY = 0x3C; + gIntroSpriteEntities[1].posX = 0x50; + gIntroSpriteEntities[1].posY = 0x3C; + gIntroSpriteEntities[2].posX = 0x8C; + gIntroSpriteEntities[2].posY = 0x64; + gIntroSpriteEntities[3].posX = 0xC8; + gIntroSpriteEntities[3].posY = 0x5A; + gIntroSpriteEntities[4].posX = 0x3C; + gIntroSpriteEntities[4].posY = 0x1E; + gIntroSpriteEntities[5].posX = 0x96; + gIntroSpriteEntities[5].posY = 0x64; for (i = 0; i < 6; i++) { - gUnknown_0201A450[i].unk8 = 0; - gUnknown_0201A450[i].unkA = 0; - gUnknown_0201A450[i].unkC = 0; + gIntroSpriteEntities[i].animFrame = 0; + gIntroSpriteEntities[i].frameTimer = 0; + gIntroSpriteEntities[i].visible = 0; } - gUnknown_0202C548 = 0; - gUnknown_0202BF10 = 0; - gUnknown_0202A578 = 0; - gUnknown_0202BEB4 = 0; + gIntroScene6VelocityIndex = 0; + gIntroFrameCounter = 0; + gIntroAnimStep = 0; + gIntroScene6EntitySpawnIndex = 0; } -void sub_B560(void) +void IntroScene6_AnimateStarsScrollIn(void) { - gUnknown_0202ADA0[0x6] += gUnknown_086A7AC0[gUnknown_0202C548].unk0; - gUnknown_0202ADA0[0x7] += gUnknown_086A7AC0[gUnknown_0202C548].unk1; + gIntroBGParams[0x6] += gIntroScene6_ScrollVelocity[gIntroScene6VelocityIndex].velocityX; + gIntroBGParams[0x7] += gIntroScene6_ScrollVelocity[gIntroScene6VelocityIndex].velocityY; - if (gUnknown_086A7AE4[gUnknown_0202BF10] & 0x10) + if (gIntroScene6_BounceFlags[gIntroFrameCounter] & 0x10) { - gUnknown_0202ADA0[0x1] += gUnknown_0202ADA0[0x3]; - gUnknown_0202ADA0[0x3] -= 2; - if (gUnknown_0202ADA0[0x3] <= -0xA) - gUnknown_0202ADA0[0x3] = 0x8; + gIntroBGParams[0x1] += gIntroBGParams[0x3]; + gIntroBGParams[0x3] -= 2; + if (gIntroBGParams[0x3] <= -0xA) + gIntroBGParams[0x3] = 0x8; } - if (gUnknown_086A7AE4[gUnknown_0202BF10] & 0x1) + if (gIntroScene6_BounceFlags[gIntroFrameCounter] & 0x1) { - gUnknown_0202ADA0[0xC] += gUnknown_0202ADA0[0xE]; - gUnknown_0202ADA0[0xE] -= 2; - if (gUnknown_0202ADA0[0xE] <= -10) - gUnknown_0202ADA0[0xE] = 8; + gIntroBGParams[0xC] += gIntroBGParams[0xE]; + gIntroBGParams[0xE] -= 2; + if (gIntroBGParams[0xE] <= -10) + gIntroBGParams[0xE] = 8; } - gMain.bgOffsets[0].xOffset = gUnknown_0202ADA0[0x0]; - gMain.bgOffsets[0].yOffset = gUnknown_0202ADA0[0x1]; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[0x6]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[0x7]; - gMain.bgOffsets[2].xOffset = gUnknown_0202ADA0[0xC]; - gMain.bgOffsets[2].yOffset = gUnknown_0202ADA0[0xD]; + gMain.bgOffsets[0].xOffset = gIntroBGParams[0x0]; + gMain.bgOffsets[0].yOffset = gIntroBGParams[0x1]; + gMain.bgOffsets[1].xOffset = gIntroBGParams[0x6]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[0x7]; + gMain.bgOffsets[2].xOffset = gIntroBGParams[0xC]; + gMain.bgOffsets[2].yOffset = gIntroBGParams[0xD]; - if (gUnknown_0202BF10 == gUnknown_086A7B34[gUnknown_0202BEB4].unk2) + if (gIntroFrameCounter == gIntroScene6_EntityMovement[gIntroScene6EntitySpawnIndex].frameDuration) { - gUnknown_0201A450[gUnknown_0202BEB4].unkC = 1; - gUnknown_0202BEB4++; + gIntroSpriteEntities[gIntroScene6EntitySpawnIndex].visible = 1; + gIntroScene6EntitySpawnIndex++; } - sub_B7F8(); - if (++gUnknown_0202A578 > gUnknown_086A7AC0[gUnknown_0202C548].unk2) + IntroScene6_RenderStarSprites(); + if (++gIntroAnimStep > gIntroScene6_ScrollVelocity[gIntroScene6VelocityIndex].frameDuration) { - gUnknown_0202A578 = 0; - if (++gUnknown_0202C548 > 8) + gIntroAnimStep = 0; + if (++gIntroScene6VelocityIndex > 8) gIntroSceneIndex++; } } -void sub_B6C4(void) +void IntroScene6_ContinueBounce(void) { - if (gUnknown_086A7AE4[gUnknown_0202BF10] & 0x10) + if (gIntroScene6_BounceFlags[gIntroFrameCounter] & 0x10) { - gUnknown_0202ADA0[0x1] += gUnknown_0202ADA0[0x3]; - gUnknown_0202ADA0[0x3] -= 2; - if (gUnknown_0202ADA0[0x3] <= -10) - gUnknown_0202ADA0[0x3] = 8; + gIntroBGParams[0x1] += gIntroBGParams[0x3]; + gIntroBGParams[0x3] -= 2; + if (gIntroBGParams[0x3] <= -10) + gIntroBGParams[0x3] = 8; } - if (gUnknown_086A7AE4[gUnknown_0202BF10] & 0x1) + if (gIntroScene6_BounceFlags[gIntroFrameCounter] & 0x1) { - gUnknown_0202ADA0[0xC] += gUnknown_0202ADA0[0xE]; - gUnknown_0202ADA0[0xE] -= 2; - if (gUnknown_0202ADA0[0xE] <= -10) - gUnknown_0202ADA0[0xE] = 8; + gIntroBGParams[0xC] += gIntroBGParams[0xE]; + gIntroBGParams[0xE] -= 2; + if (gIntroBGParams[0xE] <= -10) + gIntroBGParams[0xE] = 8; } - gMain.bgOffsets[0].xOffset = gUnknown_0202ADA0[0x0]; - gMain.bgOffsets[0].yOffset = gUnknown_0202ADA0[0x1]; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[0x6]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[0x7]; - gMain.bgOffsets[2].xOffset = gUnknown_0202ADA0[0xC]; - gMain.bgOffsets[2].yOffset = gUnknown_0202ADA0[0xD]; + gMain.bgOffsets[0].xOffset = gIntroBGParams[0x0]; + gMain.bgOffsets[0].yOffset = gIntroBGParams[0x1]; + gMain.bgOffsets[1].xOffset = gIntroBGParams[0x6]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[0x7]; + gMain.bgOffsets[2].xOffset = gIntroBGParams[0xC]; + gMain.bgOffsets[2].yOffset = gIntroBGParams[0xD]; - sub_B7F8(); - if (++gUnknown_0202A578 > 16) + IntroScene6_RenderStarSprites(); + if (++gIntroAnimStep > 16) { - gUnknown_0202A578 = 0; + gIntroAnimStep = 0; gIntroSceneIndex++; } } -void sub_B7A0(void) +void IntroScene6_FadeOutAndClearOAM(void) { ClearSprites(); DmaFill32(3, 0, OAM, 0x400); DmaFill16(3, 0, OBJ_VRAM0, 0x5000); - sub_10480(); - sub_10544(); + FlashWhiteTransitionOut(); + DisableDisplayInterrupts(); gIntroSceneIndex++; } -void sub_B7F8(void) +void IntroScene6_RenderStarSprites(void) { s32 i; s32 j; const struct SpriteSet *p; struct SpriteGroup *spriteGroups[6]; - spriteGroups[0] = &gMain.spriteGroups[6 * gUnknown_0201A450[0].unk8]; - spriteGroups[1] = &gMain.spriteGroups[6 * gUnknown_0201A450[1].unk8 + 1]; - spriteGroups[2] = &gMain.spriteGroups[6 * gUnknown_0201A450[2].unk8 + 2]; - spriteGroups[3] = &gMain.spriteGroups[6 * gUnknown_0201A450[3].unk8 + 3]; - spriteGroups[4] = &gMain.spriteGroups[6 * gUnknown_0201A450[4].unk8 + 4]; - spriteGroups[5] = &gMain.spriteGroups[6 * gUnknown_0201A450[5].unk8 + 5]; + spriteGroups[0] = &gMain.spriteGroups[6 * gIntroSpriteEntities[0].animFrame]; + spriteGroups[1] = &gMain.spriteGroups[6 * gIntroSpriteEntities[1].animFrame + 1]; + spriteGroups[2] = &gMain.spriteGroups[6 * gIntroSpriteEntities[2].animFrame + 2]; + spriteGroups[3] = &gMain.spriteGroups[6 * gIntroSpriteEntities[3].animFrame + 3]; + spriteGroups[4] = &gMain.spriteGroups[6 * gIntroSpriteEntities[4].animFrame + 4]; + spriteGroups[5] = &gMain.spriteGroups[6 * gIntroSpriteEntities[5].animFrame + 5]; - spriteGroups[0]->available = gUnknown_0201A450[0].unkC; - spriteGroups[1]->available = gUnknown_0201A450[1].unkC; - spriteGroups[2]->available = gUnknown_0201A450[2].unkC; - spriteGroups[3]->available = gUnknown_0201A450[3].unkC; - spriteGroups[4]->available = gUnknown_0201A450[4].unkC; - spriteGroups[5]->available = gUnknown_0201A450[5].unkC; + spriteGroups[0]->available = gIntroSpriteEntities[0].visible; + spriteGroups[1]->available = gIntroSpriteEntities[1].visible; + spriteGroups[2]->available = gIntroSpriteEntities[2].visible; + spriteGroups[3]->available = gIntroSpriteEntities[3].visible; + spriteGroups[4]->available = gIntroSpriteEntities[4].visible; + spriteGroups[5]->available = gIntroSpriteEntities[5].visible; - LoadSpriteSets(gUnknown_086A7A78, 0x12, &gMain.spriteGroups[0]); + LoadSpriteSets(gIntroScene6_SpriteSets, 0x12, &gMain.spriteGroups[0]); for (i = 0; i < 6; i++) { if (spriteGroups[i]->available != 1) continue; - gUnknown_0201A450[i].unk0 += gUnknown_086A7B34[i].unk0; - gUnknown_0201A450[i].unk2 += gUnknown_086A7B34[i].unk1; - spriteGroups[i]->baseX = gUnknown_0201A450[i].unk0; - spriteGroups[i]->baseY = gUnknown_0201A450[i].unk2; + gIntroSpriteEntities[i].posX += gIntroScene6_EntityMovement[i].velocityX; + gIntroSpriteEntities[i].posY += gIntroScene6_EntityMovement[i].velocityY; + spriteGroups[i]->baseX = gIntroSpriteEntities[i].posX; + spriteGroups[i]->baseY = gIntroSpriteEntities[i].posY; - p = gUnknown_086A7A78[i + gUnknown_0201A450[i].unk8 * 6]; + p = gIntroScene6_SpriteSets[i + gIntroSpriteEntities[i].animFrame * 6]; for (j = 0; j < p->count; j++) { struct OamDataSimple *ods = &spriteGroups[i]->oam[j]; @@ -1530,15 +1530,15 @@ void sub_B7F8(void) gOamBuffer[ods->oamId].y = ods->yOffset + spriteGroups[i]->baseY; } - if (++gUnknown_0201A450[i].unkA > 4) + if (++gIntroSpriteEntities[i].frameTimer > 4) { - gUnknown_0201A450[i].unkA = 0; - if (gUnknown_0201A450[i].unk8 < 2) - gUnknown_0201A450[i].unk8++; + gIntroSpriteEntities[i].frameTimer = 0; + if (gIntroSpriteEntities[i].animFrame < 2) + gIntroSpriteEntities[i].animFrame++; } - if (gUnknown_0202BF10 == gUnknown_086A7B34[i].unk3) - gUnknown_0201A450[i].unkC = 0; + if (gIntroFrameCounter == gIntroScene6_EntityMovement[i].spawnFrame) + gIntroSpriteEntities[i].visible = 0; } spriteGroups[0]->available = 0; @@ -1549,12 +1549,12 @@ void sub_B7F8(void) spriteGroups[5]->available = 0; } -void sub_BA2C(void) +void IntroScene6_AdvanceIndex(void) { gIntroSceneIndex++; } -void sub_BA3C(void) +void IntroScene7_LoadGraphics(void) { REG_DISPCNT = DISPCNT_OBJ_ON; REG_BG0CNT = 0xD400; @@ -1566,240 +1566,240 @@ void sub_BA3C(void) REG_BG3CNT = 0xf03; REG_DISPCNT |= (DISPCNT_BG3_ON); - DmaCopy16(3, gUnknown_08108A00, 0x0600A000, 0x2000); - DmaCopy16(3, gUnknown_0810AA00, 0x0600C000, 0x2000); - DmaCopy16(3, gUnknown_08106A00, 0x0600E000, 0x2000); - DmaCopy16(3, gUnknown_081011E0, 0x06007800, 0x800); + DmaCopy16(3, gIntroScene7_BG0Tiles, 0x0600A000, 0x2000); + DmaCopy16(3, gIntroScene7_BG1Tiles, 0x0600C000, 0x2000); + DmaCopy16(3, gIntroScene7_BG2Tiles, 0x0600E000, 0x2000); + DmaCopy16(3, gIntroScene7_BG3Tilemap, 0x06007800, 0x800); DmaCopy16(3, gIntroScene7Sprites_Gfx, 0x06000000, 0x5000); - DmaCopy16(3, gUnknown_08100FE0, 0x05000000, 0x160); + DmaCopy16(3, gIntroScene7_Pal, 0x05000000, 0x160); DmaCopy16(3, gIntroScene7Wailmer_Gfx, 0x06010000, 0x2000); - DmaCopy16(3, gUnknown_08100FE0, 0x05000200, 0x160); + DmaCopy16(3, gIntroScene7_Pal, 0x05000200, 0x160); gMain.dispcntBackup = REG_DISPCNT; - sub_BBE0(); + IntroScene7_InitVars(); - gMain.bgOffsets[0].xOffset = gUnknown_0202ADA0[0x0]; - gMain.bgOffsets[0].yOffset = gUnknown_0202ADA0[0x1]; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[0x6]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[0x7]; - gMain.bgOffsets[2].xOffset = gUnknown_0202ADA0[0xC]; - gMain.bgOffsets[2].yOffset = gUnknown_0202ADA0[0xD]; - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0x12]; - gMain.bgOffsets[3].yOffset = gUnknown_0202ADA0[0x13]; + gMain.bgOffsets[0].xOffset = gIntroBGParams[0x0]; + gMain.bgOffsets[0].yOffset = gIntroBGParams[0x1]; + gMain.bgOffsets[1].xOffset = gIntroBGParams[0x6]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[0x7]; + gMain.bgOffsets[2].xOffset = gIntroBGParams[0xC]; + gMain.bgOffsets[2].yOffset = gIntroBGParams[0xD]; + gMain.bgOffsets[3].xOffset = gIntroBGParams[0x12]; + gMain.bgOffsets[3].yOffset = gIntroBGParams[0x13]; - sub_0CBC(); - sub_10424(); + EnableVBlankInterrupts(); + FlashWhiteTransitionIn(); gIntroSceneIndex++; } -void sub_BBE0(void) +void IntroScene7_InitVars(void) { - gUnknown_0202ADA0[0x0] = 0xFEFC; - gUnknown_0202ADA0[0x1] = 0x46; - gUnknown_0202ADA0[0x3] = 0; - gUnknown_0202ADA0[0x6] = 0xFEE8; - gUnknown_0202ADA0[0x7] = 0x5A; - gUnknown_0202ADA0[0x9] = 0; - gUnknown_0202ADA0[0xC] = 0xFF10; - gUnknown_0202ADA0[0xD] = 0xFFCE; - gUnknown_0202ADA0[0xF] = 0xFFFD; - gUnknown_0202ADA0[0x12] = 0; - gUnknown_0202ADA0[0x13] = 0; + gIntroBGParams[0x0] = 0xFEFC; + gIntroBGParams[0x1] = 0x46; + gIntroBGParams[0x3] = 0; + gIntroBGParams[0x6] = 0xFEE8; + gIntroBGParams[0x7] = 0x5A; + gIntroBGParams[0x9] = 0; + gIntroBGParams[0xC] = 0xFF10; + gIntroBGParams[0xD] = 0xFFCE; + gIntroBGParams[0xF] = 0xFFFD; + gIntroBGParams[0x12] = 0; + gIntroBGParams[0x13] = 0; - gUnknown_0201A450[0].unk0 = 0x128; - gUnknown_0201A450[0].unk2 = 0x2C; - gUnknown_0201A450[0].unk4 = 0; - gUnknown_0201A450[0].unk6 = 0; + gIntroSpriteEntities[0].posX = 0x128; + gIntroSpriteEntities[0].posY = 0x2C; + gIntroSpriteEntities[0].velX = 0; + gIntroSpriteEntities[0].velY = 0; - gUnknown_0202BF10 = 0; - gUnknown_0202A578 = 0; - gUnknown_0202C5E4 = 0x100; - gUnknown_0202ADD8 = 0x100; + gIntroFrameCounter = 0; + gIntroAnimStep = 0; + gIntroWailmerScaleX = 0x100; + gIntroWailmerScaleY = 0x100; } -void sub_BC54(void) +void IntroScene7_ScrollWaves1(void) { - gUnknown_0202ADA0[0xC] += 2; - gUnknown_0202ADA0[0xD] -= gUnknown_0202ADA0[0xF]; - if (gUnknown_0202BF10 % 3 == 0) + gIntroBGParams[0xC] += 2; + gIntroBGParams[0xD] -= gIntroBGParams[0xF]; + if (gIntroFrameCounter % 3 == 0) { - if (++gUnknown_0202ADA0[0xF] > 4) - gUnknown_0202ADA0[0xF] = -3; + if (++gIntroBGParams[0xF] > 4) + gIntroBGParams[0xF] = -3; } - gUnknown_0202ADA0[0x12]--; - gUnknown_0202ADA0[0x13]--; + gIntroBGParams[0x12]--; + gIntroBGParams[0x13]--; - gMain.bgOffsets[2].xOffset = gUnknown_0202ADA0[0xC]; - gMain.bgOffsets[2].yOffset = gUnknown_0202ADA0[0xD]; - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0x12]; - gMain.bgOffsets[3].yOffset = gUnknown_0202ADA0[0x13]; + gMain.bgOffsets[2].xOffset = gIntroBGParams[0xC]; + gMain.bgOffsets[2].yOffset = gIntroBGParams[0xD]; + gMain.bgOffsets[3].xOffset = gIntroBGParams[0x12]; + gMain.bgOffsets[3].yOffset = gIntroBGParams[0x13]; - if (gUnknown_0202BF10 > 32) + if (gIntroFrameCounter > 32) gIntroSceneIndex++; } -void sub_BCE8(void) +void IntroScene7_ScrollWaves2(void) { - gUnknown_0202ADA0[0xC] += 2; - gUnknown_0202ADA0[0xD] -= gUnknown_0202ADA0[0xF]; - if (gUnknown_0202BF10 % 3 == 0) + gIntroBGParams[0xC] += 2; + gIntroBGParams[0xD] -= gIntroBGParams[0xF]; + if (gIntroFrameCounter % 3 == 0) { - if (++gUnknown_0202ADA0[0xF] > 4) - gUnknown_0202ADA0[0xF] = -3; + if (++gIntroBGParams[0xF] > 4) + gIntroBGParams[0xF] = -3; } - gUnknown_0202ADA0[0x6] += 3; - gUnknown_0202ADA0[0x7] -= gUnknown_0202ADA0[0x9]; - if (gUnknown_0202BF10 % 5 == 0) + gIntroBGParams[0x6] += 3; + gIntroBGParams[0x7] -= gIntroBGParams[0x9]; + if (gIntroFrameCounter % 5 == 0) { - if (++gUnknown_0202ADA0[0x9] > 7) - gUnknown_0202ADA0[0x9] = -6; + if (++gIntroBGParams[0x9] > 7) + gIntroBGParams[0x9] = -6; } - gUnknown_0202ADA0[0x12]--; - gUnknown_0202ADA0[0x13]--; + gIntroBGParams[0x12]--; + gIntroBGParams[0x13]--; - // TODO rearrangement like this suggests one inline function per pair of statements, but see sub_9498 - gMain.bgOffsets[2].xOffset = gUnknown_0202ADA0[0xC]; - gMain.bgOffsets[2].yOffset = gUnknown_0202ADA0[0xD]; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[0x6]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[0x7]; - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0x12]; - gMain.bgOffsets[3].yOffset = gUnknown_0202ADA0[0x13]; + // TODO rearrangement like this suggests one inline function per pair of statements, but see IntroScene1_LoadGraphics + gMain.bgOffsets[2].xOffset = gIntroBGParams[0xC]; + gMain.bgOffsets[2].yOffset = gIntroBGParams[0xD]; + gMain.bgOffsets[1].xOffset = gIntroBGParams[0x6]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[0x7]; + gMain.bgOffsets[3].xOffset = gIntroBGParams[0x12]; + gMain.bgOffsets[3].yOffset = gIntroBGParams[0x13]; - if (gUnknown_0202BF10 > 80) + if (gIntroFrameCounter > 80) gIntroSceneIndex++; } -void sub_BDC0(void) +void IntroScene7_ScrollWaves3(void) { - gUnknown_0202ADA0[0xC] += 2; - gUnknown_0202ADA0[0xD] -= gUnknown_0202ADA0[0xF]; - if (gUnknown_0202BF10 % 3 == 0) + gIntroBGParams[0xC] += 2; + gIntroBGParams[0xD] -= gIntroBGParams[0xF]; + if (gIntroFrameCounter % 3 == 0) { - if (++gUnknown_0202ADA0[0xF] > 4) - gUnknown_0202ADA0[0xF] = -3; + if (++gIntroBGParams[0xF] > 4) + gIntroBGParams[0xF] = -3; } - gUnknown_0202ADA0[0x6] += 3; - gUnknown_0202ADA0[0x7] -= gUnknown_0202ADA0[0x9]; - if (gUnknown_0202BF10 % 5 == 0) + gIntroBGParams[0x6] += 3; + gIntroBGParams[0x7] -= gIntroBGParams[0x9]; + if (gIntroFrameCounter % 5 == 0) { - if (++gUnknown_0202ADA0[0x9] > 7) - gUnknown_0202ADA0[0x9] = -6; + if (++gIntroBGParams[0x9] > 7) + gIntroBGParams[0x9] = -6; } - gUnknown_0202ADA0[0x0] += 4; - gUnknown_0202ADA0[0x1] -= gUnknown_0202ADA0[0x3]; - if (gUnknown_0202BF10 % 4 == 0) + gIntroBGParams[0x0] += 4; + gIntroBGParams[0x1] -= gIntroBGParams[0x3]; + if (gIntroFrameCounter % 4 == 0) { - if (++gUnknown_0202ADA0[0x3] > 7) - gUnknown_0202ADA0[0x3] = -3; + if (++gIntroBGParams[0x3] > 7) + gIntroBGParams[0x3] = -3; } - gUnknown_0202ADA0[0x12]--; - gUnknown_0202ADA0[0x13]--; + gIntroBGParams[0x12]--; + gIntroBGParams[0x13]--; - gMain.bgOffsets[2].xOffset = gUnknown_0202ADA0[0xC]; - gMain.bgOffsets[2].yOffset = gUnknown_0202ADA0[0xD]; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[0x6]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[0x7]; - gMain.bgOffsets[0].xOffset = gUnknown_0202ADA0[0x0]; - gMain.bgOffsets[0].yOffset = gUnknown_0202ADA0[0x1]; - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0x12]; - gMain.bgOffsets[3].yOffset = gUnknown_0202ADA0[0x13]; + gMain.bgOffsets[2].xOffset = gIntroBGParams[0xC]; + gMain.bgOffsets[2].yOffset = gIntroBGParams[0xD]; + gMain.bgOffsets[1].xOffset = gIntroBGParams[0x6]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[0x7]; + gMain.bgOffsets[0].xOffset = gIntroBGParams[0x0]; + gMain.bgOffsets[0].yOffset = gIntroBGParams[0x1]; + gMain.bgOffsets[3].xOffset = gIntroBGParams[0x12]; + gMain.bgOffsets[3].yOffset = gIntroBGParams[0x13]; - if (gUnknown_0202BF10 > 100) + if (gIntroFrameCounter > 100) gIntroSceneIndex++; } -void sub_BED0(void) +void IntroScene7_WailmerAndAllWaves(void) { - gUnknown_0202ADA0[0xC] += 2; - gUnknown_0202ADA0[0xD] -= gUnknown_0202ADA0[0xF]; - if (gUnknown_0202BF10 % 3 == 0) + gIntroBGParams[0xC] += 2; + gIntroBGParams[0xD] -= gIntroBGParams[0xF]; + if (gIntroFrameCounter % 3 == 0) { - if (++gUnknown_0202ADA0[0xF] > 4) - gUnknown_0202ADA0[0xF] = -3; + if (++gIntroBGParams[0xF] > 4) + gIntroBGParams[0xF] = -3; } - gUnknown_0202ADA0[0x6] += 3; - gUnknown_0202ADA0[0x7] -= gUnknown_0202ADA0[0x9]; - if (gUnknown_0202BF10 % 5 == 0) + gIntroBGParams[0x6] += 3; + gIntroBGParams[0x7] -= gIntroBGParams[0x9]; + if (gIntroFrameCounter % 5 == 0) { - if (++gUnknown_0202ADA0[0x9] > 7) - gUnknown_0202ADA0[0x9] = -6; + if (++gIntroBGParams[0x9] > 7) + gIntroBGParams[0x9] = -6; } - gUnknown_0202ADA0[0x0] += 4; - gUnknown_0202ADA0[0x1] -= gUnknown_0202ADA0[0x3]; - if (gUnknown_0202BF10 % 4 == 0) + gIntroBGParams[0x0] += 4; + gIntroBGParams[0x1] -= gIntroBGParams[0x3]; + if (gIntroFrameCounter % 4 == 0) { - if (++gUnknown_0202ADA0[0x3] > 7) - gUnknown_0202ADA0[0x3] = -3; + if (++gIntroBGParams[0x3] > 7) + gIntroBGParams[0x3] = -3; } - gUnknown_0201A450[0].unk0 -= 2; - gUnknown_0201A450[0].unk2 += gUnknown_0201A450[0].unk6; - if (gUnknown_0202BF10 % 4 == 0) + gIntroSpriteEntities[0].posX -= 2; + gIntroSpriteEntities[0].posY += gIntroSpriteEntities[0].velY; + if (gIntroFrameCounter % 4 == 0) { - if (++gUnknown_0201A450[0].unk6 > 4) - gUnknown_0201A450[0].unk6 = -4; + if (++gIntroSpriteEntities[0].velY > 4) + gIntroSpriteEntities[0].velY = -4; } - gUnknown_0202ADA0[0x12]--; - gUnknown_0202ADA0[0x13]--; + gIntroBGParams[0x12]--; + gIntroBGParams[0x13]--; - gMain.bgOffsets[2].xOffset = gUnknown_0202ADA0[0xC]; - gMain.bgOffsets[2].yOffset = gUnknown_0202ADA0[0xD]; - gMain.bgOffsets[1].xOffset = gUnknown_0202ADA0[0x6]; - gMain.bgOffsets[1].yOffset = gUnknown_0202ADA0[0x7]; - gMain.bgOffsets[0].xOffset = gUnknown_0202ADA0[0x0]; - gMain.bgOffsets[0].yOffset = gUnknown_0202ADA0[0x1]; - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0x12]; - gMain.bgOffsets[3].yOffset = gUnknown_0202ADA0[0x13]; + gMain.bgOffsets[2].xOffset = gIntroBGParams[0xC]; + gMain.bgOffsets[2].yOffset = gIntroBGParams[0xD]; + gMain.bgOffsets[1].xOffset = gIntroBGParams[0x6]; + gMain.bgOffsets[1].yOffset = gIntroBGParams[0x7]; + gMain.bgOffsets[0].xOffset = gIntroBGParams[0x0]; + gMain.bgOffsets[0].yOffset = gIntroBGParams[0x1]; + gMain.bgOffsets[3].xOffset = gIntroBGParams[0x12]; + gMain.bgOffsets[3].yOffset = gIntroBGParams[0x13]; - sub_C0D8(); - if (gUnknown_0202BF10 > 192) + IntroScene7_RenderWailmer(); + if (gIntroFrameCounter > 192) gIntroSceneIndex++; } -void sub_C018(void) +void IntroScene7_WailmerShakeAndShrink(void) { int remainder; - gUnknown_0202ADA0[0x12]--; - gUnknown_0202ADA0[0x13]--; + gIntroBGParams[0x12]--; + gIntroBGParams[0x13]--; - remainder = gUnknown_0202BF10 % 6; + remainder = gIntroFrameCounter % 6; if (remainder == 0) - gUnknown_0201A450[0].unk0 -= 3; + gIntroSpriteEntities[0].posX -= 3; else if (remainder == 3) - gUnknown_0201A450[0].unk0 += 3; + gIntroSpriteEntities[0].posX += 3; - if (gUnknown_0202BF10 > 202) + if (gIntroFrameCounter > 202) { - gUnknown_0202C5E4--; - gUnknown_0202ADD8--; + gIntroWailmerScaleX--; + gIntroWailmerScaleY--; } - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0x12]; - gMain.bgOffsets[3].yOffset = gUnknown_0202ADA0[0x13]; + gMain.bgOffsets[3].xOffset = gIntroBGParams[0x12]; + gMain.bgOffsets[3].yOffset = gIntroBGParams[0x13]; - sub_C0D8(); - if (gUnknown_0202BF10 > 222) + IntroScene7_RenderWailmer(); + if (gIntroFrameCounter > 222) gIntroSceneIndex++; } -void sub_C0BC(void) +void IntroScene7_BeginFadeOut(void) { - sub_10480(); - sub_10544(); + FlashWhiteTransitionOut(); + DisableDisplayInterrupts(); gIntroSceneIndex++; } -void sub_C0D8(void) +void IntroScene7_RenderWailmer(void) { s32 i; struct SpriteGroup *spriteGroup; @@ -1807,18 +1807,18 @@ void sub_C0D8(void) spriteGroup = &gMain.spriteGroups[0]; spriteGroup->available = TRUE; - LoadSpriteSets(gUnknown_086A7B74, 0x1, gMain.spriteGroups); + LoadSpriteSets(gIntroScene7_SpriteSets, 0x1, gMain.spriteGroups); if (spriteGroup->available == 1) { - SetMatrixScale(gUnknown_0202C5E4, gUnknown_0202ADD8, 0); - spriteGroup->baseX = gUnknown_0201A450[0].unk0; - spriteGroup->baseY = gUnknown_0201A450[0].unk2; + SetMatrixScale(gIntroWailmerScaleX, gIntroWailmerScaleY, 0); + spriteGroup->baseX = gIntroSpriteEntities[0].posX; + spriteGroup->baseY = gIntroSpriteEntities[0].posY; for (i = 0; i < 4; i++) { oamData = &spriteGroup->oam[i]; gOamBuffer[oamData->oamId].priority = 1; - gOamBuffer[oamData->oamId].x = gUnknown_086A7B7C[i].x * gUnknown_0202C5E4 / 0x100 + spriteGroup->baseX; - gOamBuffer[oamData->oamId].y = gUnknown_086A7B7C[i].y * gUnknown_0202ADD8 / 0x100 + spriteGroup->baseY; + gOamBuffer[oamData->oamId].x = gIntroScene7_WailmerQuadOffsets[i].x * gIntroWailmerScaleX / 0x100 + spriteGroup->baseX; + gOamBuffer[oamData->oamId].y = gIntroScene7_WailmerQuadOffsets[i].y * gIntroWailmerScaleY / 0x100 + spriteGroup->baseY; gOamBuffer[oamData->oamId].affineMode = 1; gOamBuffer[oamData->oamId].matrixNum = 0; } @@ -1827,130 +1827,130 @@ void sub_C0D8(void) spriteGroup->available = FALSE; } -void sub_C210(void) +void IntroScene7_ClearGraphics(void) { - sub_0518(); + ClearBgTilemapAndOffsets(); gIntroSceneIndex++; } -void sub_C228(void) +void IntroScene8a_LoadGraphics(void) { REG_DISPCNT = DISPCNT_OBJ_ON; REG_BG2CNT = 0x7; REG_DISPCNT |= (DISPCNT_BG2_ON); - DmaCopy16(3, gUnknown_0810EC20, 0x06000000, 0x800); + DmaCopy16(3, gIntroScene8a_BG2Tilemap, 0x06000000, 0x800); DmaCopy16(3, gIntroScene7Explosion_Gfx, 0x06004000, 0x3400); - DmaCopy16(3, gUnknown_0810EA20, 0x05000000, 0x140); + DmaCopy16(3, gIntroScene8a_Pal, 0x05000000, 0x140); DmaCopy16(3, gIntroScene7WailmerLaunch_Gfx, 0x06010000, 0x2C00); - DmaCopy16(3, gUnknown_0810EA20, 0x05000200, 0x140); + DmaCopy16(3, gIntroScene8a_Pal, 0x05000200, 0x140); gMain.dispcntBackup = REG_DISPCNT; - sub_C2F0(); - sub_C4F0(); - sub_0CBC(); - sub_10424(); + IntroScene8a_InitVars(); + IntroScene8a_RenderAllSprites(); + EnableVBlankInterrupts(); + FlashWhiteTransitionIn(); gIntroSceneIndex++; } -void sub_C2F0(void) +void IntroScene8a_InitVars(void) { - gUnknown_0201A450[1].unk0 = 0x78; - gUnknown_0201A450[1].unk2 = 0x50; - gUnknown_0201A450[1].unk4 = 0x4; - gUnknown_0201A450[1].unk6 = 0x4; - gUnknown_0201A450[1].unk8 = 0; + gIntroSpriteEntities[1].posX = 0x78; + gIntroSpriteEntities[1].posY = 0x50; + gIntroSpriteEntities[1].velX = 0x4; + gIntroSpriteEntities[1].velY = 0x4; + gIntroSpriteEntities[1].animFrame = 0; - gUnknown_0201A450[0].unk0 = 0x78; - gUnknown_0201A450[0].unk2 = 0x50; - gUnknown_0201A450[0].unkC = 0; + gIntroSpriteEntities[0].posX = 0x78; + gIntroSpriteEntities[0].posY = 0x50; + gIntroSpriteEntities[0].visible = 0; - gUnknown_0201A450[2].unk0 = 0x80; - gUnknown_0201A450[2].unk2 = 0x58; - gUnknown_0201A450[2].unk8 = 0; - gUnknown_0201A450[2].unkA = 0; - gUnknown_0201A450[2].unkC = 0; + gIntroSpriteEntities[2].posX = 0x80; + gIntroSpriteEntities[2].posY = 0x58; + gIntroSpriteEntities[2].animFrame = 0; + gIntroSpriteEntities[2].frameTimer = 0; + gIntroSpriteEntities[2].visible = 0; - gUnknown_0201A450[3].unk0 = 0x80; - gUnknown_0201A450[3].unk2 = 0x48; - gUnknown_0201A450[3].unk8 = 0; - gUnknown_0201A450[3].unkA = 0; - gUnknown_0201A450[3].unkC = 0; + gIntroSpriteEntities[3].posX = 0x80; + gIntroSpriteEntities[3].posY = 0x48; + gIntroSpriteEntities[3].animFrame = 0; + gIntroSpriteEntities[3].frameTimer = 0; + gIntroSpriteEntities[3].visible = 0; - gUnknown_0201A450[4].unk0 = 0x70; - gUnknown_0201A450[4].unk2 = 0x58; - gUnknown_0201A450[4].unk8 = 0; - gUnknown_0201A450[4].unkA = 0; - gUnknown_0201A450[4].unkC = 0; + gIntroSpriteEntities[4].posX = 0x70; + gIntroSpriteEntities[4].posY = 0x58; + gIntroSpriteEntities[4].animFrame = 0; + gIntroSpriteEntities[4].frameTimer = 0; + gIntroSpriteEntities[4].visible = 0; - gUnknown_0201A450[5].unk0 = 0x78; - gUnknown_0201A450[5].unk2 = 0x58; - gUnknown_0201A450[5].unk8 = 0; - gUnknown_0201A450[5].unkA = 0; - gUnknown_0201A450[5].unkC = 0; + gIntroSpriteEntities[5].posX = 0x78; + gIntroSpriteEntities[5].posY = 0x58; + gIntroSpriteEntities[5].animFrame = 0; + gIntroSpriteEntities[5].frameTimer = 0; + gIntroSpriteEntities[5].visible = 0; // TODO FIXME overlapping symbols (gAutoDisplayTitlescreenMenu) - gUnknown_0201A450[6].unk0 = 0x70; - gUnknown_0201A450[6].unk2 = 0x48; - gUnknown_0201A450[6].unk8 = 0; - gUnknown_0201A450[6].unkA = 0; - gUnknown_0201A450[6].unkC = 0; + gIntroSpriteEntities[6].posX = 0x70; + gIntroSpriteEntities[6].posY = 0x48; + gIntroSpriteEntities[6].animFrame = 0; + gIntroSpriteEntities[6].frameTimer = 0; + gIntroSpriteEntities[6].visible = 0; - gUnknown_0202BF10 = 0; - gUnknown_0202A578 = 0; + gIntroFrameCounter = 0; + gIntroAnimStep = 0; } -void sub_C38C(void) +void IntroScene8a_WaitForExplosion(void) { - sub_C4F0(); + IntroScene8a_RenderAllSprites(); - if (gUnknown_0202BF10 > 1) + if (gIntroFrameCounter > 1) { - gUnknown_0201A450[0].unkC = 1; - gUnknown_0201A450[2].unkC = 1; - gUnknown_0201A450[3].unkC = 1; - gUnknown_0201A450[4].unkC = 1; - gUnknown_0201A450[5].unkC = 1; - gUnknown_0201A450[6].unkC = 1; // TODO FIXME overlapping symbols (gAutoDisplayTitlescreenMenu) + gIntroSpriteEntities[0].visible = 1; + gIntroSpriteEntities[2].visible = 1; + gIntroSpriteEntities[3].visible = 1; + gIntroSpriteEntities[4].visible = 1; + gIntroSpriteEntities[5].visible = 1; + gIntroSpriteEntities[6].visible = 1; // TODO FIXME overlapping symbols (gAutoDisplayTitlescreenMenu) gIntroSceneIndex++; } } -void sub_C3D0(void) +void IntroScene8a_ExplodeAndLaunch(void) { - gUnknown_0201A450[0].unk0 -= 9; - gUnknown_0201A450[0].unk2 -= 6; - gUnknown_0201A450[1].unk8++; + gIntroSpriteEntities[0].posX -= 9; + gIntroSpriteEntities[0].posY -= 6; + gIntroSpriteEntities[1].animFrame++; - if (gUnknown_0201A450[1].unk8 < 4) + if (gIntroSpriteEntities[1].animFrame < 4) { - gUnknown_0201A450[1].unk0 += gUnknown_0201A450[1].unk4; - gUnknown_0201A450[1].unk2 += gUnknown_0201A450[1].unk6; - gUnknown_0201A450[1].unk4--; - gUnknown_0201A450[1].unk6--; + gIntroSpriteEntities[1].posX += gIntroSpriteEntities[1].velX; + gIntroSpriteEntities[1].posY += gIntroSpriteEntities[1].velY; + gIntroSpriteEntities[1].velX--; + gIntroSpriteEntities[1].velY--; } - else if (gUnknown_0202BF10 % 2 == 0) + else if (gIntroFrameCounter % 2 == 0) { - gUnknown_0201A450[1].unk0++; - gUnknown_0201A450[1].unk2++; + gIntroSpriteEntities[1].posX++; + gIntroSpriteEntities[1].posY++; } - sub_C4F0(); - if (gUnknown_0201A450[0].unk2 < -32) + IntroScene8a_RenderAllSprites(); + if (gIntroSpriteEntities[0].posY < -32) gIntroSceneIndex++; } -void sub_C450(void) +void IntroScene8a_DriftAndFade(void) { - sub_C4F0(); + IntroScene8a_RenderAllSprites(); - if ((gUnknown_0202BF10 % 2) == 0) + if ((gIntroFrameCounter % 2) == 0) { - gUnknown_0201A450[1].unk0++; - gUnknown_0201A450[1].unk2++; + gIntroSpriteEntities[1].posX++; + gIntroSpriteEntities[1].posY++; } - if (gUnknown_0202BF10 > 20) + if (gIntroFrameCounter > 20) gIntroSceneIndex += 3; } @@ -1962,17 +1962,17 @@ void nullsub_13(void) { } -void sub_C498(void) +void IntroScene8a_FadeOutAndClearOAM(void) { - sub_10480(); + FlashWhiteTransitionOut(); ClearSprites(); DmaFill32(3, 0, OAM, 0x400); DmaFill16(3, 0, OBJ_VRAM0, 0x5000); - sub_10544(); + DisableDisplayInterrupts(); gIntroSceneIndex++; } -void sub_C4F0(void) +void IntroScene8a_RenderAllSprites(void) { struct SpriteGroup *sg0; struct SpriteGroup *sg1; @@ -1988,28 +1988,28 @@ void sub_C4F0(void) sg0 = &gMain.spriteGroups[0]; sg1 = &gMain.spriteGroups[1]; - spriteGroups[0] = &gMain.spriteGroups[(5 * gUnknown_0201A450[2].unk8) + 2]; - spriteGroups[1] = &gMain.spriteGroups[(5 * gUnknown_0201A450[3].unk8) + 3]; - spriteGroups[2] = &gMain.spriteGroups[(5 * gUnknown_0201A450[4].unk8) + 4]; - spriteGroups[3] = &gMain.spriteGroups[(5 * gUnknown_0201A450[5].unk8) + 5]; - spriteGroups[4] = &gMain.spriteGroups[(5 * gUnknown_0201A450[6].unk8) + 6]; + spriteGroups[0] = &gMain.spriteGroups[(5 * gIntroSpriteEntities[2].animFrame) + 2]; + spriteGroups[1] = &gMain.spriteGroups[(5 * gIntroSpriteEntities[3].animFrame) + 3]; + spriteGroups[2] = &gMain.spriteGroups[(5 * gIntroSpriteEntities[4].animFrame) + 4]; + spriteGroups[3] = &gMain.spriteGroups[(5 * gIntroSpriteEntities[5].animFrame) + 5]; + spriteGroups[4] = &gMain.spriteGroups[(5 * gIntroSpriteEntities[6].animFrame) + 6]; - sg0->available = gUnknown_0201A450[0].unkC; + sg0->available = gIntroSpriteEntities[0].visible; sg1->available = 1; - spriteGroups[0]->available = gUnknown_0201A450[2].unkC; - spriteGroups[1]->available = gUnknown_0201A450[3].unkC; - spriteGroups[2]->available = gUnknown_0201A450[4].unkC; - spriteGroups[3]->available = gUnknown_0201A450[5].unkC; - spriteGroups[4]->available = gUnknown_0201A450[6].unkC; + spriteGroups[0]->available = gIntroSpriteEntities[2].visible; + spriteGroups[1]->available = gIntroSpriteEntities[3].visible; + spriteGroups[2]->available = gIntroSpriteEntities[4].visible; + spriteGroups[3]->available = gIntroSpriteEntities[5].visible; + spriteGroups[4]->available = gIntroSpriteEntities[6].visible; - LoadSpriteSets(gUnknown_086A7C24, 0x11, gMain.spriteGroups); + LoadSpriteSets(gIntroScene8a_SpriteSets, 0x11, gMain.spriteGroups); if (sg0->available == 1) { - sg0->baseX = gUnknown_0201A450[0].unk0; - sg0->baseY = gUnknown_0201A450[0].unk2; + sg0->baseX = gIntroSpriteEntities[0].posX; + sg0->baseY = gIntroSpriteEntities[0].posY; oamData = &sg0->oam[0]; gOamBuffer[oamData->oamId].priority = 0; gOamBuffer[oamData->oamId].x = oamData->xOffset + sg0->baseX; @@ -2020,41 +2020,41 @@ void sub_C4F0(void) { if (spriteGroups[i]->available == 1) { - gUnknown_0202A578++; - if (gUnknown_0202A578 > 5) + gIntroAnimStep++; + if (gIntroAnimStep > 5) { - cVar1 = gUnknown_086A7C68[i].unk2; - cVar2 = gUnknown_086A7C68[i].unk3; + cVar1 = gIntroScene8a_DebrisMovement[i].lateVelX; + cVar2 = gIntroScene8a_DebrisMovement[i].lateVelY; } else { - cVar1 = gUnknown_086A7C68[i].unk0; - cVar2 = gUnknown_086A7C68[i].unk1; + cVar1 = gIntroScene8a_DebrisMovement[i].earlyVelX; + cVar2 = gIntroScene8a_DebrisMovement[i].earlyVelY; } - gUnknown_0201A450[2 + i].unk0 += cVar1; - gUnknown_0201A450[2 + i].unk2 += cVar2; - spriteGroups[i]->baseX = gUnknown_0201A450[2 + i].unk0; - spriteGroups[i]->baseY = gUnknown_0201A450[2 + i].unk2; + gIntroSpriteEntities[2 + i].posX += cVar1; + gIntroSpriteEntities[2 + i].posY += cVar2; + spriteGroups[i]->baseX = gIntroSpriteEntities[2 + i].posX; + spriteGroups[i]->baseY = gIntroSpriteEntities[2 + i].posY; - p = gUnknown_086A7C24[( 2 + i) + (5 * gUnknown_0201A450[2 + i].unk8)]; + p = gIntroScene8a_SpriteSets[( 2 + i) + (5 * gIntroSpriteEntities[2 + i].animFrame)]; for (j = 0; j < p->count; j++) { oamData = &spriteGroups[i]->oam[j]; - gOamBuffer[oamData->oamId].priority = (&gUnknown_086A7C68[i])->unk5; + gOamBuffer[oamData->oamId].priority = (&gIntroScene8a_DebrisMovement[i])->oamPriority; gOamBuffer[oamData->oamId].x = oamData->xOffset + spriteGroups[i]->baseX; gOamBuffer[oamData->oamId].y = oamData->yOffset + spriteGroups[i]->baseY; } - gUnknown_0201A450[2 + i].unkA++; + gIntroSpriteEntities[2 + i].frameTimer++; - if (gUnknown_0201A450[2 + i].unkA > 0x4) + if (gIntroSpriteEntities[2 + i].frameTimer > 0x4) { - gUnknown_0201A450[2 + i].unkA = 0; - if (gUnknown_0201A450[2 + i].unk8 < 0x2) + gIntroSpriteEntities[2 + i].frameTimer = 0; + if (gIntroSpriteEntities[2 + i].animFrame < 0x2) { - gUnknown_0201A450[2 + i].unk8++; + gIntroSpriteEntities[2 + i].animFrame++; } } } @@ -2062,8 +2062,8 @@ void sub_C4F0(void) if (sg1->available == 1) { - sg1->baseX = gUnknown_0201A450[1].unk0; - sg1->baseY = gUnknown_0201A450[1].unk2; + sg1->baseX = gIntroSpriteEntities[1].posX; + sg1->baseY = gIntroSpriteEntities[1].posY; for (j = 0; j < 4; j++) { @@ -2084,12 +2084,12 @@ void sub_C4F0(void) spriteGroups[3]->available = 0; spriteGroups[4]->available = 0; } -void sub_C814(void) +void IntroScene8a_ClearAndResetOAM(void) { u16 i; u16 j; - sub_0518(); + ClearBgTilemapAndOffsets(); DmaFill32(3, 0, OAM, 0x400); for (i = 0; i < 20; i++) { @@ -2126,122 +2126,122 @@ void sub_C814(void) gIntroSceneIndex++; } -void sub_C948(void) +void IntroScene8b_LoadGraphics(void) { REG_DISPCNT = DISPCNT_OBJ_ON; REG_BG3CNT = 0x7; REG_DISPCNT |= (DISPCNT_BG3_ON); - DmaCopy16(3, gUnknown_08115A60, 0x06000000, 0x800); + DmaCopy16(3, gIntroScene8b_BG3Tilemap, 0x06000000, 0x800); DmaCopy16(3, gIntroScene8Clouds_Gfx, 0x06004000, 0x2400); - DmaCopy16(3, gUnknown_08115860, 0x05000000, 0x40); + DmaCopy16(3, gIntroScene8b_Pal, 0x05000000, 0x40); DmaCopy16(3, gIntroScene8Ball_Gfx, 0x06010000, 0x7000); - DmaCopy16(3, gUnknown_08115860, 0x05000200, 0x40); + DmaCopy16(3, gIntroScene8b_Pal, 0x05000200, 0x40); gMain.dispcntBackup = REG_DISPCNT; - sub_CA28(); - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0x0]; - gMain.bgOffsets[3].yOffset = gUnknown_0202ADA0[0x1]; - sub_0CBC(); - sub_10424(); + IntroScene8b_InitVars(); + gMain.bgOffsets[3].xOffset = gIntroBGParams[0x0]; + gMain.bgOffsets[3].yOffset = gIntroBGParams[0x1]; + EnableVBlankInterrupts(); + FlashWhiteTransitionIn(); gIntroSceneIndex++; } -void sub_CA28(void) +void IntroScene8b_InitVars(void) { - gUnknown_0202ADA0[0x0] = 0; - gUnknown_0202ADA0[0x1] = 0; + gIntroBGParams[0x0] = 0; + gIntroBGParams[0x1] = 0; - gUnknown_0201A450[0].unk0 = 0xF0; - gUnknown_0201A450[0].unk2 = 0x1E; - gUnknown_0201A450[0].unk4 = 0xE; - gUnknown_0201A450[0].unk8 = 0x1; - gUnknown_0201A450[0].unkC = 0x1; + gIntroSpriteEntities[0].posX = 0xF0; + gIntroSpriteEntities[0].posY = 0x1E; + gIntroSpriteEntities[0].velX = 0xE; + gIntroSpriteEntities[0].animFrame = 0x1; + gIntroSpriteEntities[0].visible = 0x1; - gUnknown_0201A450[1].unk0 = 0x108; - gUnknown_0201A450[1].unk2 = 0x50; - gUnknown_0201A450[1].unk4 = 0x6; - gUnknown_0201A450[1].unkC = 0; + gIntroSpriteEntities[1].posX = 0x108; + gIntroSpriteEntities[1].posY = 0x50; + gIntroSpriteEntities[1].velX = 0x6; + gIntroSpriteEntities[1].visible = 0; - gUnknown_0202BF10 = 0; - gUnknown_0202A578 = 0; - gUnknown_0202C5E4 = 0x100; - gUnknown_0202ADD8 = 0x100; - gUnknown_0202BEDC = 0; - gUnknown_0202A56C = 0; + gIntroFrameCounter = 0; + gIntroAnimStep = 0; + gIntroWailmerScaleX = 0x100; + gIntroWailmerScaleY = 0x100; + gIntroObjWhiteFlash = 0; + gIntroBGWhiteFlash = 0; } -void sub_CAA0(void) +void IntroScene8b_BallFlyIn(void) { - gUnknown_0202ADA0[0x0] -= 0x24; - gUnknown_0201A450[0].unk0 -= gUnknown_086A7D4C[gUnknown_0202A578]; - gUnknown_0202A578++; + gIntroBGParams[0x0] -= 0x24; + gIntroSpriteEntities[0].posX -= gIntroScene8b_BallDecelTable[gIntroAnimStep]; + gIntroAnimStep++; - if (gUnknown_0202BF10 % 5 == 0) + if (gIntroFrameCounter % 5 == 0) { - if (++gUnknown_0201A450[0].unk8 > 10) - gUnknown_0201A450[0].unk8 = 1; + if (++gIntroSpriteEntities[0].animFrame > 10) + gIntroSpriteEntities[0].animFrame = 1; } - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0x0]; - sub_CD18(); + gMain.bgOffsets[3].xOffset = gIntroBGParams[0x0]; + IntroScene8b_RenderBallAndCloud(); - if (gUnknown_0202BF10 > 40) + if (gIntroFrameCounter > 40) { - gUnknown_0202C5E4 += 6; - gUnknown_0202ADD8 += 6; - if (gUnknown_0202BF10 % 2 == 0) - gUnknown_0201A450[0].unk2++; + gIntroWailmerScaleX += 6; + gIntroWailmerScaleY += 6; + if (gIntroFrameCounter % 2 == 0) + gIntroSpriteEntities[0].posY++; } - if (gUnknown_0202BF10 > 90) + if (gIntroFrameCounter > 90) { - gUnknown_0201A450[0].unkC = 0; - gUnknown_0201A450[1].unkC = 1; + gIntroSpriteEntities[0].visible = 0; + gIntroSpriteEntities[1].visible = 1; gIntroSceneIndex++; } } -void sub_CB6C(void) +void IntroScene8b_ScrollClouds(void) { - gUnknown_0202ADA0[0] -= 0x24; - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0]; - if (gUnknown_0202BF10 > 120) + gIntroBGParams[0] -= 0x24; + gMain.bgOffsets[3].xOffset = gIntroBGParams[0]; + if (gIntroFrameCounter > 120) gIntroSceneIndex++; } -void sub_CBA4(void) +void IntroScene8b_CloudSpriteAndWhiteFlash(void) { - if (gUnknown_0202BF10 < 135) - gUnknown_0201A450[1].unk0 -= 12; + if (gIntroFrameCounter < 135) + gIntroSpriteEntities[1].posX -= 12; else - gUnknown_0201A450[1].unk0--; + gIntroSpriteEntities[1].posX--; - if (gUnknown_0202BF10 % 2 == 0) + if (gIntroFrameCounter % 2 == 0) { - gUnknown_0202BEDC += 3; - if (gUnknown_0202BEDC > 32) - gUnknown_0202BEDC = 32; + gIntroObjWhiteFlash += 3; + if (gIntroObjWhiteFlash > 32) + gIntroObjWhiteFlash = 32; } - sub_102A8(gUnknown_08115860, (void *) OBJ_PLTT, 0x20, gUnknown_0202BEDC); - if (gUnknown_0202BF10 > 136) + BrightenPalette(gIntroScene8b_Pal, (void *) OBJ_PLTT, 0x20, gIntroObjWhiteFlash); + if (gIntroFrameCounter > 136) { - gUnknown_0202A56C += 2; - if (gUnknown_0202A56C > 32) - gUnknown_0202A56C = 0x20; + gIntroBGWhiteFlash += 2; + if (gIntroBGWhiteFlash > 32) + gIntroBGWhiteFlash = 0x20; - sub_102A8(gUnknown_08115860, (void *) PLTT, 0x40, gUnknown_0202A56C); + BrightenPalette(gIntroScene8b_Pal, (void *) PLTT, 0x40, gIntroBGWhiteFlash); } - gUnknown_0202ADA0[0x0] -= 0x24; - gMain.bgOffsets[3].xOffset = gUnknown_0202ADA0[0x0]; - sub_CD18(); + gIntroBGParams[0x0] -= 0x24; + gMain.bgOffsets[3].xOffset = gIntroBGParams[0x0]; + IntroScene8b_RenderBallAndCloud(); - if (gUnknown_0202BF10 > 152) + if (gIntroFrameCounter > 152) { - gUnknown_0202BF10 = 0; - gUnknown_0202A578 = 1; + gIntroFrameCounter = 0; + gIntroAnimStep = 1; gIntroSceneIndex += 2; } } @@ -2250,43 +2250,43 @@ void nullsub_14(void) { } -void sub_CC94(void) +void IntroScene8b_FadeOutMusic(void) { - if (gUnknown_0202BF10 % 10 == 0) + if (gIntroFrameCounter % 10 == 0) { - gUnknown_0202A578++; - m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, (0x100 / gUnknown_0202A578)); + gIntroAnimStep++; + m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, (0x100 / gIntroAnimStep)); } - if (gUnknown_0202BF10 > 45) + if (gIntroFrameCounter > 45) gIntroSceneIndex++; } -void sub_CCF8(void) +void IntroScene8b_EndIntro(void) { - sub_02B4(); + FadeOutScreen(); m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); gMain.subState++; } -void sub_CD18(void) +void IntroScene8b_RenderBallAndCloud(void) { int i; struct SpriteGroup *spriteGroup0; struct SpriteGroup *spriteGroup1; struct OamDataSimple *oamData; - spriteGroup0 = &gMain.spriteGroups[gUnknown_0201A450[0].unk8]; + spriteGroup0 = &gMain.spriteGroups[gIntroSpriteEntities[0].animFrame]; spriteGroup1 = &gMain.spriteGroups[0]; - spriteGroup0->available = gUnknown_0201A450[0].unkC; - spriteGroup1->available = gUnknown_0201A450[1].unkC; - LoadSpriteSets(gUnknown_086A7D20, 11, gMain.spriteGroups); + spriteGroup0->available = gIntroSpriteEntities[0].visible; + spriteGroup1->available = gIntroSpriteEntities[1].visible; + LoadSpriteSets(gIntroScene8b_SpriteSets, 11, gMain.spriteGroups); if (spriteGroup0->available == 1) { - SetMatrixScale(gUnknown_0202C5E4, gUnknown_0202ADD8, 0); - spriteGroup0->baseX = gUnknown_0201A450[0].unk0; - spriteGroup0->baseY = gUnknown_0201A450[0].unk2; + SetMatrixScale(gIntroWailmerScaleX, gIntroWailmerScaleY, 0); + spriteGroup0->baseX = gIntroSpriteEntities[0].posX; + spriteGroup0->baseY = gIntroSpriteEntities[0].posY; oamData = &spriteGroup0->oam[0]; gOamBuffer[oamData->oamId].x = oamData->xOffset + spriteGroup0->baseX; gOamBuffer[oamData->oamId].y = oamData->yOffset + spriteGroup0->baseY; @@ -2296,8 +2296,8 @@ void sub_CD18(void) if (spriteGroup1->available == 1) { - spriteGroup1->baseX = gUnknown_0201A450[1].unk0; - spriteGroup1->baseY = gUnknown_0201A450[1].unk2; + spriteGroup1->baseX = gIntroSpriteEntities[1].posX; + spriteGroup1->baseY = gIntroSpriteEntities[1].posY; for (i = 0; i < 4; i++) { oamData = &spriteGroup1->oam[i]; diff --git a/src/link.c b/src/link.c index 743f2bc..df5d90d 100644 --- a/src/link.c +++ b/src/link.c @@ -87,7 +87,7 @@ enum // static function declarations static void EnableSerial(void); -static void sub_19CC(void); +static void LinkMainCallback(void); static void LinkVBlankIntr(void); static void nullsub_15(void); static void CheckMasterOrSlave(void); @@ -112,13 +112,13 @@ extern u8 sChecksumAvailable; extern u16 gLinkSavedIme; extern u8 sNumVBlanksWithoutSerialIntr; extern u8 sSendBufferEmpty; -extern u8 gUnknown_02002826; -extern u8 gUnknown_02002827; // sHandshakePlayerCount ? +extern u8 sLinkFlowControlDelay; +extern u8 sHandshakePlayerCount; // sHandshakePlayerCount ? extern u16 sSendNonzeroCheck; -extern u16 gUnknown_0200282A; +extern u16 sRecvNonzeroCheck; extern u8 gLastSendQueueCount; -extern u8 gUnknown_0202A554; // ??? -extern s8 gUnknown_0202C5E0; +extern u8 sRecvQueueSnapshot; // ??? +extern s8 sLinkMasterHandshakeState; // static const definitions @@ -131,7 +131,7 @@ static void EnableSerial(void) REG_SIOCNT |= SIO_115200_BPS | SIO_INTR_ENABLE; gLinkSavedIme = REG_IME; - SetMainCallback(sub_19CC); + SetMainCallback(LinkMainCallback); SetVBlankIntrFunc(LinkVBlankIntr); REG_IME = 0; REG_IE |= INTR_FLAG_SERIAL; @@ -143,30 +143,30 @@ static void EnableSerial(void) sNumVBlanksWithoutSerialIntr = 0; sSendBufferEmpty = 0; - gUnknown_02002827 = 0; + sHandshakePlayerCount = 0; gLastSendQueueCount = 0; - gUnknown_0202A554 = 0; - gUnknown_0202C5E0 = 0; - gUnknown_0202ADD0 = 0; - gUnknown_0201A444 = 0; - gUnknown_0202BDF0 = 0; - gUnknown_0201C1AC = 0; - gUnknown_0202ADDC = 0; - gUnknown_0202BEC8 = 0; + sRecvQueueSnapshot = 0; + sLinkMasterHandshakeState = 0; + gLinkStatusResult = 0; + gLinkTimeoutCounter = 0; + gLinkConnectionState = 0; + gLinkPlayerCount = 0; + gLinkNegotiationFlags = 0; + gLinkAdvanceState = 0; sChecksumAvailable = 0; sSendNonzeroCheck = 0; - gUnknown_0200282A = 0; + sRecvNonzeroCheck = 0; } -extern void sub_19B4(void) // TODO +extern void InitLinkHardware(void) // TODO { - sub_24DC(); - sub_250C(); + ResetSerialIO(); + SetupDefaultInterrupts(); EnableSerial(); DisableSerial(); } -static void sub_19CC(void) // TODO +static void LinkMainCallback(void) // TODO { if ((REG_DISPSTAT & 0x8) != 0) { @@ -182,7 +182,7 @@ static void sub_19CC(void) // TODO REG_BG3HOFS = gMain.bgOffsets[3].xOffset; REG_BG3VOFS = gMain.bgOffsets[3].yOffset; - if (gMain.unk36) + if (gMain.blendEnabled) { REG_BLDCNT = gMain.blendControl; REG_BLDALPHA = gMain.blendAlpha; @@ -238,16 +238,16 @@ extern s32 LinkMain1(u8 *shouldAdvanceLinkState, s16 *sendCmd, u16 (*recvCmds)[M { default: CheckMasterOrSlave(); - if (gUnknown_0202C5E0 == 0 && gLink.isMaster && gLink.playerCount == 2) + if (sLinkMasterHandshakeState == 0 && gLink.isMaster && gLink.playerCount == 2) { gLink.handshakeAsMaster = TRUE; - gUnknown_0202C5E0 = -1; + sLinkMasterHandshakeState = -1; } break; case 1: if (gLink.isMaster != LINK_SLAVE && gLink.playerCount == 2) gLink.handshakeAsMaster = TRUE; - gUnknown_0202C5E0 = -1; + sLinkMasterHandshakeState = -1; break; case 2: gLink.state = LINK_STATE_START0; @@ -260,7 +260,7 @@ extern s32 LinkMain1(u8 *shouldAdvanceLinkState, s16 *sendCmd, u16 (*recvCmds)[M gLink.state = LINK_STATE_CONN_ESTABLISHED; // fallthrough case LINK_STATE_CONN_ESTABLISHED: - if (gLink.unkE == 0) + if (gLink.sendPaused == 0) { EnqueueSendCmd(sendCmd); } @@ -277,11 +277,11 @@ extern s32 LinkMain1(u8 *shouldAdvanceLinkState, s16 *sendCmd, u16 (*recvCmds)[M { u32 receivedNothing = gLink.receivedNothing << 8; - u32 unk11 = gLink.unk11 << 9; + u32 checksumError = gLink.checksumError << 9; u32 hardwareError = gLink.hardwareError << 0x10; - u32 unk13 = gLink.unk13 << 0x11; + u32 invalidIdError = gLink.invalidIdError << 0x11; u32 queueFull = gLink.queueFull << 0x12; - u32 unk15 = gLink.unk15 << 0x14; + u32 lagError = gLink.lagError << 0x14; u32 val; if (gLink.state == LINK_STATE_CONN_ESTABLISHED) @@ -289,21 +289,21 @@ extern s32 LinkMain1(u8 *shouldAdvanceLinkState, s16 *sendCmd, u16 (*recvCmds)[M val = LINK_STAT_CONN_ESTABLISHED; val |= receivedNothing; val |= retVal; - val |= unk11; + val |= checksumError; val |= hardwareError; - val |= unk13; + val |= invalidIdError; val |= queueFull; - val |= unk15; + val |= lagError; } else { val = retVal; val |= receivedNothing; - val |= unk11; + val |= checksumError; val |= hardwareError; - val |= unk13; + val |= invalidIdError; val |= queueFull; - val |= unk15; + val |= lagError; } retVal = val; @@ -423,13 +423,13 @@ static void DequeueRecvCmds(u16 (*recvCmds)[MAX_LINK_PLAYERS]) static void LinkVSync(void) { - if (gLink.unkE) + if (gLink.sendPaused) { - if (--gUnknown_02002826 != 0) + if (--sLinkFlowControlDelay != 0) { return; } - gLink.unkE = 0; + gLink.sendPaused = 0; } if (gLink.isMaster) @@ -441,14 +441,14 @@ static void LinkVSync(void) { if (!gLink.hardwareError) { - gLink.unk15 = LAG_MASTER; + gLink.lagError = LAG_MASTER; } else { StartTransfer(); } } - else if (gLink.unk15 == LAG_NONE) + else if (gLink.lagError == LAG_NONE) { gLink.serialIntrCounter = 0; StartTransfer(); @@ -465,13 +465,13 @@ static void LinkVSync(void) { if (gLink.state == LINK_STATE_CONN_ESTABLISHED) { - gLink.unk15 = LAG_SLAVE; + gLink.lagError = LAG_SLAVE; } if (gLink.state == LINK_STATE_HANDSHAKE) { gLink.localId = 0; gLink.playerCount = 0; - gLink.unk11 = FALSE; + gLink.checksumError = FALSE; } } } @@ -518,7 +518,7 @@ extern void SerialCB(void) sNumVBlanksWithoutSerialIntr = 0; if (gLink.serialIntrCounter == 8) { - gUnknown_0202A554 = gLink.recvQueue.count; + sRecvQueueSnapshot = gLink.recvQueue.count; } } @@ -569,19 +569,19 @@ static bool8 DoHandshake(void) } } gLink.playerCount = playerCount; - if (gLink.playerCount == 2 && gLink.playerCount == gUnknown_02002827 && gLink.handshakeBuffer[0] == MASTER_HANDSHAKE) + if (gLink.playerCount == 2 && gLink.playerCount == sHandshakePlayerCount && gLink.handshakeBuffer[0] == MASTER_HANDSHAKE) { return TRUE; } if (gLink.playerCount == 2) // ??? { - gLink.unk11 = (minRecv & 3) + 1; + gLink.checksumError = (minRecv & 3) + 1; } else { - gLink.unk11 = 0; + gLink.checksumError = 0; } - gUnknown_02002827 = gLink.playerCount; + sHandshakePlayerCount = gLink.playerCount; return FALSE; } @@ -598,7 +598,7 @@ static void DoRecv(void) { if (gLink.checksum != recv[i] && sChecksumAvailable) { - gLink.unk13 = TRUE; + gLink.invalidIdError = TRUE; } } gLink.checksum = 0; @@ -616,12 +616,12 @@ static void DoRecv(void) for (i = 0; i < gLink.playerCount; i++) { gLink.checksum += recv[i]; - gUnknown_0200282A |= recv[i]; + sRecvNonzeroCheck |= recv[i]; gLink.recvQueue.data[i][gLink.recvCmdIndex][index] = recv[i]; - if ((gLink.sendCmdIndex == 1) && (gLink.unkE == 0) && ((recv[i] & 0xF) == 1)) + if ((gLink.sendCmdIndex == 1) && (gLink.sendPaused == 0) && ((recv[i] & 0xF) == 1)) { - gLink.unkE = 1; - gUnknown_02002826 = 5; + gLink.sendPaused = 1; + sLinkFlowControlDelay = 5; } } } @@ -630,10 +630,10 @@ static void DoRecv(void) gLink.queueFull |= QUEUE_FULL_RECV; } gLink.recvCmdIndex++; - if (gLink.recvCmdIndex == CMD_LENGTH && gUnknown_0200282A) + if (gLink.recvCmdIndex == CMD_LENGTH && sRecvNonzeroCheck) { gLink.recvQueue.count++; - gUnknown_0200282A = 0; + sRecvNonzeroCheck = 0; } } } @@ -671,7 +671,7 @@ static void DoSend(void) { REG_SIOMLT_SEND = gLink.sendQueue.data[gLink.sendCmdIndex][gLink.sendQueue.pos]; } - if ((gLink.unkE == 0) && (gLink.sendCmdIndex == 0) && (3 < gLink.recvQueue.count)) { + if ((gLink.sendPaused == 0) && (gLink.sendCmdIndex == 0) && (3 < gLink.recvQueue.count)) { REG_SIOMLT_SEND |= 1; // TODO } gLink.sendCmdIndex++; diff --git a/src/m4a_1.s b/src/m4a_1.s index a55b1d4..bf1a247 100644 --- a/src/m4a_1.s +++ b/src/m4a_1.s @@ -678,7 +678,7 @@ sub_522D0: ldr r1, [r4, o_SoundChannel_wav] add r2, r2, r1 add r2, r2, 0x10 - ldr r5, =gUnknown_02002958 + ldr r5, =gDpcmSampleBuffer ldr r6, =0x852D918 @ gDeltaEncodingTable mov r7, 0x40 ldrb lr, [r2], 1 @@ -699,7 +699,7 @@ _081DD57C: subs r7, r7, 2 bgt _081DD568 _081DD594: - ldr r5, =gUnknown_02002958 + ldr r5, =gDpcmSampleBuffer and r0, r3, 0x3F ldrsb r1, [r5, r0] pop {r0,r2,r5-r7,pc} diff --git a/src/main.c b/src/main.c index df0b274..fc56c7e 100644 --- a/src/main.c +++ b/src/main.c @@ -5,7 +5,7 @@ #include "m4a.h" static void InitGame(void); -static void sub_0B8C(void); +static void InitMainState(void); static void InitIntrHandlers(void); static void ReadKeys(void); @@ -30,8 +30,8 @@ void Main_09BC(void) switch (gMain.subState) { case 0: - sub_0CBC(); - sub_024C(); + EnableVBlankInterrupts(); + FadeInScreen(); gMain.subState++; break; case 1: @@ -39,8 +39,8 @@ void Main_09BC(void) gMain.subState = 2; break; default: - sub_02B4(); - sub_0D10(); + FadeOutScreen(); + DisableVBlankInterrupts(); SetMainGameState(STATE_TITLE); break; } @@ -59,11 +59,11 @@ void VCountIntr(void) if (gMain.mainState == STATE_GAME_MAIN) { REG_BG0HOFS = 0; - if (gMain.unk28) + if (gMain.shopPanelActive) { if (gMain.vCount == 72) { - REG_BG0VOFS = gMain.unk2A * 4 + 88; + REG_BG0VOFS = gMain.shopPanelSlideOffset * 4 + 88; gMain.vCount = 144; REG_DISPSTAT &= 0xFF; REG_DISPSTAT |= (gMain.vCount << 8) + DISPSTAT_VCOUNT_INTR; @@ -76,7 +76,7 @@ void VCountIntr(void) REG_DISPSTAT |= (gMain.vCount << 8) + DISPSTAT_VCOUNT_INTR; } } - else if (gMain.unk2C) + else if (gMain.scoreOverlayActive) { if (gMain.vCount == 40) { @@ -137,13 +137,13 @@ static void InitGame(void) | WAITCNT_SRAM_2; REG_IE = INTR_FLAG_GAMEPAK; REG_IME = INTR_FLAG_VBLANK; - sub_0B8C(); + InitMainState(); m4aSoundInit(); m4aSoundVSyncOff(); SaveFile_LoadGameData(); } -static void sub_0B8C(void) +static void InitMainState(void) { gMain.mainState = STATE_INTRO; gMain.subState = 0; @@ -153,11 +153,11 @@ static void sub_0B8C(void) gMain.unk20 = 0; gMain.rngValue = 0; gMain.systemFrameCount = 0; - gMain.unk30 = 0; + gMain.idleDemoVariant = 0; gMain.vCount = 144; - gMain.unk2C = 0; + gMain.scoreOverlayActive = 0; ClearHighScoreNameEntry(); - ResetSomeGraphicsRelatedStuff(); + ResetDisplayState(); } static void InitIntrHandlers(void) @@ -211,7 +211,7 @@ static void ReadKeys(void) gMain.heldKeys = keyInput; } -void sub_0CBC(void) +void EnableVBlankInterrupts(void) { if (!(REG_IE & INTR_FLAG_VBLANK)) { @@ -237,7 +237,7 @@ void sub_0CBC(void) } } -void sub_0D10(void) +void DisableVBlankInterrupts(void) { REG_DISPSTAT &= ~DISPSTAT_VBLANK_INTR; REG_DISPSTAT &= ~DISPSTAT_VCOUNT_INTR; @@ -277,9 +277,9 @@ void sub_0D10(void) void MainLoopIter(void) { - gMainCallback = gUnknown_02017BD4; - *gVBlankIntrFuncPtr = gUnknown_02017BD0; - *gVCountIntrFuncPtr = gUnknown_0200FBA0; + gMainCallback = gMainCallbackShadow; + *gVBlankIntrFuncPtr = gVBlankIntrFuncShadow; + *gVCountIntrFuncPtr = gVCountIntrFuncShadow; if (gMainCallback) gMainCallback(); @@ -301,7 +301,7 @@ void DefaultMainCallback(void) REG_BG2VOFS = gMain.bgOffsets[2].yOffset; REG_BG3HOFS = gMain.bgOffsets[3].xOffset; REG_BG3VOFS = gMain.bgOffsets[3].yOffset; - if (gMain.unk36) + if (gMain.blendEnabled) { REG_BLDCNT = gMain.blendControl; REG_BLDALPHA = gMain.blendAlpha; diff --git a/src/options.c b/src/options.c index d4c6fb9..934d616 100644 --- a/src/options.c +++ b/src/options.c @@ -37,10 +37,10 @@ enum CursorPositions struct OptionsData { s16 stateMain; - u16 unk2; - u16 unk4; - u16 unk6; - s16 unk8; + u16 cursorBlinkToggle; + u16 soundTestBlinkToggle; + u16 buttonFlashVisible; + s16 buttonFlashTimer; s16 cursorPosition; u16 buttonConfigType; s16 selectedBGM; @@ -52,23 +52,23 @@ struct OptionsData u8 digit10sSE; u8 digit1sSE; s16 scollWaitFrames; - u8 unk1A[6]; - s16 unk20; - s16 unk22; - s16 unk24[2]; - s16 unk28; + u8 buttonEditFlags[6]; + s16 captureFramesRemaining; + s16 capturedKeysMask; + s16 capturedButtonSlots[2]; + s16 capturedButtonCount; bool8 rumbleEnabled; - s8 unk2B; - s8 unk2C; - u8 unk2D; - s8 unk2E; - u8 unk2F; - u8 unk30; + s8 rumbleAnimTimer; + s8 rumbleAnimFrame; + u8 rumbleAnimTileId; + s8 rumbleAnimActive; + u8 rumbleIdleBlinkState; + u8 soundTestActive; }; extern struct OptionsData gOptionsData; extern s16 gMain_saveData_customButtonConfig[][2]; -extern u8 gUnknown_02031B18[]; +extern u8 gCustomButtonConfigTileIds[]; extern const u16 gOptionsBackground_Pals[]; extern const u8 gOptionsText_Gfx[]; @@ -83,7 +83,7 @@ void Options_Main(void) void Options_LoadGraphics(void) { - ResetSomeGraphicsRelatedStuff(); + ResetDisplayState(); REG_DISPCNT = 0x1080; REG_BG0CNT = 4; @@ -96,8 +96,8 @@ void Options_LoadGraphics(void) DmaCopy16(3, gOptionsBackground_Pals, (void *)PLTT, 0x200); DmaCopy16(3, gOptionsText_Gfx, (void *)(VRAM + 0x4000), 0x1800); DmaCopy16(3, gOptionsBackground_Gfx, (void *)(VRAM + 0x8000), 0xC00); - DmaCopy16(3, gOptionsText_Tilemap, gUnknown_03005C00, 0x800); - DmaCopy16(3, gUnknown_03005C00, (void *)VRAM, 0x800); + DmaCopy16(3, gOptionsText_Tilemap, gBG0TilemapBuffer, 0x800); + DmaCopy16(3, gBG0TilemapBuffer, (void *)VRAM, 0x800); if (gGameBoyPlayerEnabled != TRUE) { @@ -105,16 +105,16 @@ void Options_LoadGraphics(void) SetStringPalette(18, 5, 3, 2, 2); } - DmaCopy16(3, gUnknown_03005C00, (void *)VRAM, 0x800); + DmaCopy16(3, gBG0TilemapBuffer, (void *)VRAM, 0x800); DmaCopy16(3, gOptionsBackground_Tilemap, (void *)(VRAM + 0x800), 0x800); DmaCopy16(3, gGBAButtonIcons_Pals, (void *)(PLTT + 0x200), 0x60); DmaCopy16(3, gOptionsSprites_Gfx, (void *)(VRAM + 0x10000), 0x2020); Options_InitStates(); - sub_51C9C(); + UpdateOptionsSpritePositions(); m4aMPlayAllStop(); - sub_0CBC(); - sub_024C(); - sub_10C0(); + EnableVBlankInterrupts(); + FadeInScreen(); + EnableGbPlayerRumble(); gMain.subState++; } @@ -125,10 +125,10 @@ void Options_InitStates(void) int j; gOptionsData.stateMain = OPTIONS_STATE_MAIN; - gOptionsData.unk2 = 0; - gOptionsData.unk4 = 0; - gOptionsData.unk6 = 1; - gOptionsData.unk8 = 0; + gOptionsData.cursorBlinkToggle = 0; + gOptionsData.soundTestBlinkToggle = 0; + gOptionsData.buttonFlashVisible = 1; + gOptionsData.buttonFlashTimer = 0; gOptionsData.cursorPosition = CURSOR_POS_BGM; gOptionsData.buttonConfigType = gMain_saveData.buttonConfigType; gOptionsData.selectedBGM = 0; @@ -141,18 +141,18 @@ void Options_InitStates(void) gOptionsData.digit1sSE = 1; gOptionsData.scollWaitFrames = 0; for (i = 0; i < 6; i++) - gOptionsData.unk1A[i] = 0; - gOptionsData.unk20 = 0; - gOptionsData.unk22 = 0; + gOptionsData.buttonEditFlags[i] = 0; + gOptionsData.captureFramesRemaining = 0; + gOptionsData.capturedKeysMask = 0; for (i = 0; i < 2; i++) - gOptionsData.unk24[i] = 10; - gOptionsData.unk28 = 0; + gOptionsData.capturedButtonSlots[i] = 10; + gOptionsData.capturedButtonCount = 0; for (i = 0; i < 4; i++) { for (j = 0; j < 10; j++) - gUnknown_02031AF0[i][j] = gDefaultButtonConfigs[i][j]; + gCustomButtonConfigs[i][j] = gDefaultButtonConfigs[i][j]; } - sub_52528(); + InitCustomButtonConfigDisplay(); if (gGameBoyPlayerEnabled == TRUE) { gOptionsData.rumbleEnabled = gMain_saveData.rumbleEnabled; @@ -163,19 +163,19 @@ void Options_InitStates(void) gOptionsData.rumbleEnabled = FALSE; gMain_saveData.rumbleEnabled = FALSE; } - gOptionsData.unk2E = 0; - gOptionsData.unk2B = 0; - gOptionsData.unk2C = 0; - gOptionsData.unk2D = 0; - gOptionsData.unk2F = 0; - gOptionsData.unk30 = 0; + gOptionsData.rumbleAnimActive = 0; + gOptionsData.rumbleAnimTimer = 0; + gOptionsData.rumbleAnimFrame = 0; + gOptionsData.rumbleAnimTileId = 0; + gOptionsData.rumbleIdleBlinkState = 0; + gOptionsData.soundTestActive = 0; } void Options_HandleInput(void) { s16 r4; - sub_51C9C(); + UpdateOptionsSpritePositions(); switch (gOptionsData.stateMain) { case OPTIONS_STATE_MAIN: @@ -231,26 +231,26 @@ void Options_HandleInput(void) m4aSongNumStart(SE_MENU_SELECT); gOptionsData.stateMain = OPTIONS_STATE_BGM_SELECT, gOptionsData.scollWaitFrames = 0; - gOptionsData.unk30 = 1; - if (gOptionsData.unk2E == 1) + gOptionsData.soundTestActive = 1; + if (gOptionsData.rumbleAnimActive == 1) { - gOptionsData.unk2B = 0; - gOptionsData.unk2D = 0; - gOptionsData.unk2C = 0; - gOptionsData.unk2E = 0; + gOptionsData.rumbleAnimTimer = 0; + gOptionsData.rumbleAnimTileId = 0; + gOptionsData.rumbleAnimFrame = 0; + gOptionsData.rumbleAnimActive = 0; } break; case CURSOR_POS_SE: m4aSongNumStart(SE_MENU_SELECT); gOptionsData.stateMain = OPTIONS_STATE_SE_MENU_MOVE_0x67, gOptionsData.scollWaitFrames = 0; - gOptionsData.unk30 = 1; - if (gOptionsData.unk2E == 1) + gOptionsData.soundTestActive = 1; + if (gOptionsData.rumbleAnimActive == 1) { - gOptionsData.unk2B = 0; - gOptionsData.unk2D = 0; - gOptionsData.unk2C = 0; - gOptionsData.unk2E = 0; + gOptionsData.rumbleAnimTimer = 0; + gOptionsData.rumbleAnimTileId = 0; + gOptionsData.rumbleAnimFrame = 0; + gOptionsData.rumbleAnimActive = 0; } break; case CURSOR_POS_BUTTON_CONFIG_TYPE_A: @@ -272,11 +272,11 @@ void Options_HandleInput(void) if (gGameBoyPlayerEnabled == TRUE) { m4aSongNumStart(SE_MENU_SELECT); - gOptionsData.unk2D = 0; - if (gOptionsData.unk2E == 1) - gOptionsData.unk2E = 0; - gOptionsData.unk2B = 0; - gOptionsData.unk2C = 0; + gOptionsData.rumbleAnimTileId = 0; + if (gOptionsData.rumbleAnimActive == 1) + gOptionsData.rumbleAnimActive = 0; + gOptionsData.rumbleAnimTimer = 0; + gOptionsData.rumbleAnimFrame = 0; gOptionsData.rumbleEnabled = FALSE; } break; @@ -285,11 +285,11 @@ void Options_HandleInput(void) { m4aSongNumStart(SE_MENU_SELECT); PlayRumble(11); - if (gOptionsData.unk2E == 0) - gOptionsData.unk2E = 1; + if (gOptionsData.rumbleAnimActive == 0) + gOptionsData.rumbleAnimActive = 1; - gOptionsData.unk2B = 0; - gOptionsData.unk2C = 0; + gOptionsData.rumbleAnimTimer = 0; + gOptionsData.rumbleAnimFrame = 0; gOptionsData.rumbleEnabled = TRUE; } break; @@ -302,7 +302,7 @@ void Options_HandleInput(void) SetButtonConfigInputs(gMain_saveData.buttonConfigType); } if (!(gMain.systemFrameCount & 7)) - gOptionsData.unk2 = 1 - gOptionsData.unk2; + gOptionsData.cursorBlinkToggle = 1 - gOptionsData.cursorBlinkToggle; break; case OPTIONS_STATE_BGM_SELECT: if (JOY_HELD(DPAD_LEFT)) @@ -346,12 +346,12 @@ void Options_HandleInput(void) { m4aMPlayAllStop(); m4aSongNumStart(SE_MENU_CANCEL); - gOptionsData.unk4 = 0; - gOptionsData.unk30 = 0; + gOptionsData.soundTestBlinkToggle = 0; + gOptionsData.soundTestActive = 0; gOptionsData.stateMain = OPTIONS_STATE_MAIN; } if (!(gMain.systemFrameCount & 7)) - gOptionsData.unk4 = 1 - gOptionsData.unk4; + gOptionsData.soundTestBlinkToggle = 1 - gOptionsData.soundTestBlinkToggle; if (gOptionsData.scollWaitFrames > 0) gOptionsData.scollWaitFrames--; break; @@ -397,12 +397,12 @@ void Options_HandleInput(void) { m4aMPlayAllStop(); m4aSongNumStart(SE_MENU_CANCEL); - gOptionsData.unk4 = 0; - gOptionsData.unk30 = 0; + gOptionsData.soundTestBlinkToggle = 0; + gOptionsData.soundTestActive = 0; gOptionsData.stateMain = OPTIONS_STATE_MAIN; } if (!(gMain.systemFrameCount & 7)) - gOptionsData.unk4 = 1 - gOptionsData.unk4; + gOptionsData.soundTestBlinkToggle = 1 - gOptionsData.soundTestBlinkToggle; if (gOptionsData.scollWaitFrames > 0) gOptionsData.scollWaitFrames--; break; @@ -427,7 +427,7 @@ void Options_HandleInput(void) { m4aSongNumStart(SE_MENU_SELECT); gOptionsData.stateMain = OPTIONS_STATE_BUTTON_CONFIG_INPUT, - gOptionsData.unk1A[gOptionsData.cursorPosition - CURSOR_POS_LEFT_FLIPPER] = 1; + gOptionsData.buttonEditFlags[gOptionsData.cursorPosition - CURSOR_POS_LEFT_FLIPPER] = 1; } else if (JOY_NEW(B_BUTTON)) { @@ -436,77 +436,77 @@ void Options_HandleInput(void) gOptionsData.stateMain = OPTIONS_STATE_MAIN; } if (!(gMain.systemFrameCount & 7)) - gOptionsData.unk2 = 1 - gOptionsData.unk2; + gOptionsData.cursorBlinkToggle = 1 - gOptionsData.cursorBlinkToggle; break; case OPTIONS_STATE_BUTTON_CONFIG_INPUT: - gOptionsData.unk8++; - if (gOptionsData.unk8 > 24) + gOptionsData.buttonFlashTimer++; + if (gOptionsData.buttonFlashTimer > 24) { - gOptionsData.unk8 = 0; - gOptionsData.unk6 = 1 - gOptionsData.unk6; + gOptionsData.buttonFlashTimer = 0; + gOptionsData.buttonFlashVisible = 1 - gOptionsData.buttonFlashVisible; } if (JOY_NEW(KEYS_MASK ^ START_BUTTON)) { s16 i; m4aSongNumStart(SE_MENU_SELECT); - gOptionsData.unk20 = 10; - gOptionsData.unk22 = 0; + gOptionsData.captureFramesRemaining = 10; + gOptionsData.capturedKeysMask = 0; for (i = 0; i < 2; i++) - gOptionsData.unk24[i] = 10; - gOptionsData.unk28 = 0; + gOptionsData.capturedButtonSlots[i] = 10; + gOptionsData.capturedButtonCount = 0; } - if (gOptionsData.unk20 > 0) + if (gOptionsData.captureFramesRemaining > 0) { - sub_524BC(); - gOptionsData.unk20--; - if (gOptionsData.unk20 == 0) + CaptureButtonConfigInput(); + gOptionsData.captureFramesRemaining--; + if (gOptionsData.captureFramesRemaining == 0) { - gUnknown_02031AF0[4][(gOptionsData.cursorPosition - CURSOR_POS_LEFT_FLIPPER) * 2 + 0] = gOptionsData.unk24[0]; - gUnknown_02031AF0[4][(gOptionsData.cursorPosition - CURSOR_POS_LEFT_FLIPPER) * 2 + 1] = gOptionsData.unk24[1]; - gMain_saveData.customButtonConfig[(gOptionsData.cursorPosition - CURSOR_POS_LEFT_FLIPPER)][0] = gUnknown_086BB910[gOptionsData.unk24[0]][0]; - gMain_saveData.customButtonConfig[(gOptionsData.cursorPosition - CURSOR_POS_LEFT_FLIPPER)][1] = gUnknown_086BB910[gOptionsData.unk24[1]][0]; + gCustomButtonConfigs[4][(gOptionsData.cursorPosition - CURSOR_POS_LEFT_FLIPPER) * 2 + 0] = gOptionsData.capturedButtonSlots[0]; + gCustomButtonConfigs[4][(gOptionsData.cursorPosition - CURSOR_POS_LEFT_FLIPPER) * 2 + 1] = gOptionsData.capturedButtonSlots[1]; + gMain_saveData.customButtonConfig[(gOptionsData.cursorPosition - CURSOR_POS_LEFT_FLIPPER)][0] = gButtonInfoTable[gOptionsData.capturedButtonSlots[0]][0]; + gMain_saveData.customButtonConfig[(gOptionsData.cursorPosition - CURSOR_POS_LEFT_FLIPPER)][1] = gButtonInfoTable[gOptionsData.capturedButtonSlots[1]][0]; gOptionsData.stateMain = OPTIONS_STATE_BUTTON_CONFIG_SELECT, - gOptionsData.unk1A[gOptionsData.cursorPosition - CURSOR_POS_LEFT_FLIPPER] = 0; - gOptionsData.unk8 = 0; - gOptionsData.unk6 = 1; + gOptionsData.buttonEditFlags[gOptionsData.cursorPosition - CURSOR_POS_LEFT_FLIPPER] = 0; + gOptionsData.buttonFlashTimer = 0; + gOptionsData.buttonFlashVisible = 1; } } break; } - if (gOptionsData.unk2E == 1) + if (gOptionsData.rumbleAnimActive == 1) { - if (++gOptionsData.unk2B > gUnknown_086BB9B4[gOptionsData.unk2C].unk2) + if (++gOptionsData.rumbleAnimTimer > gButtonAnimData[gOptionsData.rumbleAnimFrame].frameDuration) { - gOptionsData.unk2B = 0; - gOptionsData.unk2C++; - if (gOptionsData.unk2C > 12) + gOptionsData.rumbleAnimTimer = 0; + gOptionsData.rumbleAnimFrame++; + if (gOptionsData.rumbleAnimFrame > 12) { - gOptionsData.unk2C = 0; - gOptionsData.unk2D = 0; - gOptionsData.unk2E = 0; + gOptionsData.rumbleAnimFrame = 0; + gOptionsData.rumbleAnimTileId = 0; + gOptionsData.rumbleAnimActive = 0; } - gOptionsData.unk2D = gUnknown_086BB9B4[gOptionsData.unk2C].unk0; + gOptionsData.rumbleAnimTileId = gButtonAnimData[gOptionsData.rumbleAnimFrame].tileId; } } else { - gOptionsData.unk2B++; - if (gOptionsData.unk2B > 18) + gOptionsData.rumbleAnimTimer++; + if (gOptionsData.rumbleAnimTimer > 18) { - gOptionsData.unk2B = 0; - gOptionsData.unk2D = 1 - gOptionsData.unk2D; + gOptionsData.rumbleAnimTimer = 0; + gOptionsData.rumbleAnimTileId = 1 - gOptionsData.rumbleAnimTileId; } } - sub_11FC(); + ProcessRumbleFrame(); } void Options_State2_51C3C(void) { - sub_111C(); - if (sub_1170()) + DisableGbPlayerRumble(); + if (IsGbPlayerReady()) { - sub_1198(); + RestoreDefaultInterrupts(); gMain.subState++; } } @@ -515,16 +515,16 @@ void Options_State3_51C60(void) { gMain_saveData.rumbleEnabled = gOptionsData.rumbleEnabled; SaveFile_WriteToSram(); - sub_02B4(); + FadeOutScreen(); m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); gAutoDisplayTitlescreenMenu = TRUE; SetMainGameState(STATE_TITLE); } // TODO NAKED -void sub_51C9C(void) +void UpdateOptionsSpritePositions(void) { asm_unified("\n\ push {r4, r5, r6, r7, lr}\n\ @@ -594,7 +594,7 @@ _08051CEA:\n\ adds r2, r5, #0\n\ subs r2, #0xb8\n\ _08051D1E:\n\ - ldr r0, _08051D48 @ =gUnknown_0200293A\n\ + ldr r0, _08051D48 @ =gOptionsButtonConfigEditFlags\n\ add r0, ip\n\ ldrb r0, [r0]\n\ cmp r0, #1\n\ @@ -612,7 +612,7 @@ _08051D38: .4byte gMain_spriteGroups\n\ _08051D3C: .4byte gOptionsData\n\ _08051D40: .4byte gMain_spriteGroups_8\n\ _08051D44: .4byte gMain_spriteGroups_10\n\ -_08051D48: .4byte gUnknown_0200293A\n\ +_08051D48: .4byte gOptionsButtonConfigEditFlags\n\ _08051D4C: .4byte gMain_spriteGroups_28\n\ _08051D50:\n\ str r2, [r1]\n\ @@ -707,11 +707,11 @@ _08051DCE:\n\ asrs r0, r0, #0x18\n\ ldr r1, _08051F74 @ =gMain_spriteGroups_31\n\ strh r0, [r1]\n\ - ldr r0, _08051F78 @ =gUnknown_086BB9EC\n\ + ldr r0, _08051F78 @ =gOptionsSpriteSets\n\ movs r1, #0x20\n\ ldr r2, _08051F7C @ =gMain_spriteGroups\n\ bl LoadSpriteSets\n\ - ldr r2, _08051F80 @ =gUnknown_086BB968\n\ + ldr r2, _08051F80 @ =gOptionsCursorPositionTable\n\ movs r3, #0xa\n\ ldrsh r1, [r5, r3]\n\ lsls r1, r1, #2\n\ @@ -774,7 +774,7 @@ _08051E6C:\n\ ldrh r2, [r4, #8]\n\ lsls r2, r2, #3\n\ add r2, r8\n\ - ldr r0, _08051F90 @ =gUnknown_02002932\n\ + ldr r0, _08051F90 @ =gOptionsBGMDigitTileIds\n\ add r0, ip\n\ ldrb r1, [r0]\n\ adds r1, #0x16\n\ @@ -835,7 +835,7 @@ _08051EE2:\n\ ldrh r2, [r4, #8]\n\ lsls r2, r2, #3\n\ add r2, r8\n\ - ldr r0, _08051F98 @ =gUnknown_02002935\n\ + ldr r0, _08051F98 @ =gOptionsSEDigitTileIds\n\ add r0, ip\n\ ldrb r1, [r0]\n\ adds r1, #0x16\n\ @@ -892,15 +892,15 @@ _08051F68: .4byte gMain_spriteGroups_8\n\ _08051F6C: .4byte gMain_spriteGroups_30\n\ _08051F70: .4byte gOptionsData\n\ _08051F74: .4byte gMain_spriteGroups_31\n\ -_08051F78: .4byte gUnknown_086BB9EC\n\ +_08051F78: .4byte gOptionsSpriteSets\n\ _08051F7C: .4byte gMain_spriteGroups\n\ -_08051F80: .4byte gUnknown_086BB968\n\ +_08051F80: .4byte gOptionsCursorPositionTable\n\ _08051F84: .4byte gOamBuffer\n\ _08051F88: .4byte 0x000001FF\n\ _08051F8C: .4byte 0xFFFFFE00\n\ -_08051F90: .4byte gUnknown_02002932\n\ +_08051F90: .4byte gOptionsBGMDigitTileIds\n\ _08051F94: .4byte 0xFFFFFC00\n\ -_08051F98: .4byte gUnknown_02002935\n\ +_08051F98: .4byte gOptionsSEDigitTileIds\n\ _08051F9C:\n\ cmp r0, #1\n\ bne _08051FA6\n\ @@ -954,7 +954,7 @@ _08051FB2:\n\ movs r4, #0xc\n\ ldrsh r0, [r3, r4]\n\ lsls r0, r0, #1\n\ - ldr r7, _080520E4 @ =gUnknown_086BB9A8\n\ + ldr r7, _080520E4 @ =gOptionsBGMSelectorYPositions\n\ adds r0, r0, r7\n\ ldrh r0, [r0]\n\ strh r0, [r2, #4]\n\ @@ -1067,7 +1067,7 @@ _080520D4: .4byte 0xFFFFFE00\n\ _080520D8: .4byte 0x000001FF\n\ _080520DC: .4byte gMain_spriteGroups_8\n\ _080520E0: .4byte gOptionsData\n\ -_080520E4: .4byte gUnknown_086BB9A8\n\ +_080520E4: .4byte gOptionsBGMSelectorYPositions\n\ _080520E8:\n\ mov r2, r8\n\ ldr r1, [r2]\n\ @@ -1088,7 +1088,7 @@ _080520E8:\n\ lsls r0, r0, #1\n\ ldr r1, [sp, #0x88]\n\ adds r0, r1, r0\n\ - ldr r2, _08052490 @ =gUnknown_02031AF0\n\ + ldr r2, _08052490 @ =gCustomButtonConfigs\n\ adds r0, r0, r2\n\ ldrb r0, [r0]\n\ ldrh r2, [r4, #8]\n\ @@ -1096,7 +1096,7 @@ _080520E8:\n\ ldr r3, _08052494 @ =gOamBuffer\n\ adds r2, r2, r3\n\ lsls r0, r0, #3\n\ - ldr r1, _08052498 @ =gUnknown_086BB910\n\ + ldr r1, _08052498 @ =gButtonInfoTable\n\ adds r6, r0, r1\n\ ldrh r0, [r6, #2]\n\ ldr r1, _0805249C @ =0x000003FF\n\ @@ -1166,7 +1166,7 @@ _080520E8:\n\ adds r0, #1\n\ ldr r1, [sp, #0x88]\n\ adds r0, r1, r0\n\ - ldr r2, _08052490 @ =gUnknown_02031AF0\n\ + ldr r2, _08052490 @ =gCustomButtonConfigs\n\ adds r0, r0, r2\n\ ldrb r0, [r0]\n\ mov sb, r0\n\ @@ -1265,7 +1265,7 @@ _080521B8:\n\ adds r3, r3, r4\n\ mov r0, sb\n\ lsls r4, r0, #3\n\ - ldr r1, _08052498 @ =gUnknown_086BB910\n\ + ldr r1, _08052498 @ =gButtonInfoTable\n\ adds r4, r4, r1\n\ ldrh r0, [r4, #2]\n\ ldr r1, _0805249C @ =0x000003FF\n\ @@ -1544,9 +1544,9 @@ _08052470:\n\ pop {r0}\n\ bx r0\n\ .align 2, 0\n\ -_08052490: .4byte gUnknown_02031AF0\n\ +_08052490: .4byte gCustomButtonConfigs\n\ _08052494: .4byte gOamBuffer\n\ -_08052498: .4byte gUnknown_086BB910\n\ +_08052498: .4byte gButtonInfoTable\n\ _0805249C: .4byte 0x000003FF\n\ _080524A0: .4byte 0xFFFFFC00\n\ _080524A4: .4byte 0x000001FF\n\ @@ -1557,10 +1557,10 @@ _080524B4: .4byte gMain_spriteGroups_31\n\ _080524B8: .4byte gMain"); } -void sub_524BC(void) +void CaptureButtonConfigInput(void) { int i, pressedKeys; - if (gOptionsData.unk28 >= 2) + if (gOptionsData.capturedButtonCount >= 2) return; pressedKeys = JOY_HELD(KEYS_MASK ^ START_BUTTON); @@ -1570,17 +1570,17 @@ void sub_524BC(void) for (i = 0; i < 10; i++) { int key = pressedKeys & (1 << i); - if (key && !(gOptionsData.unk22 & key)) + if (key && !(gOptionsData.capturedKeysMask & key)) { - gOptionsData.unk22 |= key; - gOptionsData.unk24[gOptionsData.unk28] = i; - if (++gOptionsData.unk28 == 2) + gOptionsData.capturedKeysMask |= key; + gOptionsData.capturedButtonSlots[gOptionsData.capturedButtonCount] = i; + if (++gOptionsData.capturedButtonCount == 2) return; } } } -void sub_52528(void) +void InitCustomButtonConfigDisplay(void) { int i, j; u8 var0; @@ -1622,12 +1622,12 @@ void sub_52528(void) var0 = 10; break; } - gUnknown_02031B18[i * 2 + j] = var0; + gCustomButtonConfigTileIds[i * 2 + j] = var0; } } } -extern const u8 gUnknown_08527EFE[]; +extern const u8 gDefaultCustomButtonConfigTileIds[]; void SetButtonConfigInputs(s8 buttonConfigType) { @@ -1635,76 +1635,76 @@ void SetButtonConfigInputs(s8 buttonConfigType) switch (buttonConfigType) { case BUTTON_CONFIG_RESET: - gMain.buttonConfigs[0][0] = gUnknown_086BB910[5][0]; - gMain.buttonConfigs[0][1] = gUnknown_086BB910[10][0]; - gMain.buttonConfigs[1][0] = gUnknown_086BB910[0][0]; - gMain.buttonConfigs[1][1] = gUnknown_086BB910[10][0]; - gMain.buttonConfigs[2][0] = gUnknown_086BB910[9][0]; - gMain.buttonConfigs[2][1] = gUnknown_086BB910[10][0]; - gMain.buttonConfigs[3][0] = gUnknown_086BB910[8][0]; - gMain.buttonConfigs[3][1] = gUnknown_086BB910[10][0]; - gMain.buttonConfigs[4][0] = gUnknown_086BB910[9][0]; - gMain.buttonConfigs[4][1] = gUnknown_086BB910[8][0]; - gMain_saveData.customButtonConfig[PINBALL_INPUT_LEFT_FLIPPER][0] = gUnknown_086BB910[1][0]; - gMain_saveData.customButtonConfig[PINBALL_INPUT_LEFT_FLIPPER][1] = gUnknown_086BB910[10][0]; - gMain_saveData.customButtonConfig[PINBALL_INPUT_RIGHT_FLIPPER][0] = gUnknown_086BB910[0][0]; - gMain_saveData.customButtonConfig[PINBALL_INPUT_RIGHT_FLIPPER][1] = gUnknown_086BB910[10][0]; - gMain_saveData.customButtonConfig[PINBALL_INPUT_TILT_LEFT][0] = gUnknown_086BB910[5][0]; - gMain_saveData.customButtonConfig[PINBALL_INPUT_TILT_LEFT][1] = gUnknown_086BB910[10][0]; - gMain_saveData.customButtonConfig[PINBALL_INPUT_TILT_RIGHT][0] = gUnknown_086BB910[4][0]; - gMain_saveData.customButtonConfig[PINBALL_INPUT_TILT_RIGHT][1] = gUnknown_086BB910[10][0]; - gMain_saveData.customButtonConfig[PINBALL_INPUT_TILT_UP][0] = gUnknown_086BB910[6][0]; - gMain_saveData.customButtonConfig[PINBALL_INPUT_TILT_UP][1] = gUnknown_086BB910[10][0]; + gMain.buttonConfigs[0][0] = gButtonInfoTable[5][0]; + gMain.buttonConfigs[0][1] = gButtonInfoTable[10][0]; + gMain.buttonConfigs[1][0] = gButtonInfoTable[0][0]; + gMain.buttonConfigs[1][1] = gButtonInfoTable[10][0]; + gMain.buttonConfigs[2][0] = gButtonInfoTable[9][0]; + gMain.buttonConfigs[2][1] = gButtonInfoTable[10][0]; + gMain.buttonConfigs[3][0] = gButtonInfoTable[8][0]; + gMain.buttonConfigs[3][1] = gButtonInfoTable[10][0]; + gMain.buttonConfigs[4][0] = gButtonInfoTable[9][0]; + gMain.buttonConfigs[4][1] = gButtonInfoTable[8][0]; + gMain_saveData.customButtonConfig[PINBALL_INPUT_LEFT_FLIPPER][0] = gButtonInfoTable[1][0]; + gMain_saveData.customButtonConfig[PINBALL_INPUT_LEFT_FLIPPER][1] = gButtonInfoTable[10][0]; + gMain_saveData.customButtonConfig[PINBALL_INPUT_RIGHT_FLIPPER][0] = gButtonInfoTable[0][0]; + gMain_saveData.customButtonConfig[PINBALL_INPUT_RIGHT_FLIPPER][1] = gButtonInfoTable[10][0]; + gMain_saveData.customButtonConfig[PINBALL_INPUT_TILT_LEFT][0] = gButtonInfoTable[5][0]; + gMain_saveData.customButtonConfig[PINBALL_INPUT_TILT_LEFT][1] = gButtonInfoTable[10][0]; + gMain_saveData.customButtonConfig[PINBALL_INPUT_TILT_RIGHT][0] = gButtonInfoTable[4][0]; + gMain_saveData.customButtonConfig[PINBALL_INPUT_TILT_RIGHT][1] = gButtonInfoTable[10][0]; + gMain_saveData.customButtonConfig[PINBALL_INPUT_TILT_UP][0] = gButtonInfoTable[6][0]; + gMain_saveData.customButtonConfig[PINBALL_INPUT_TILT_UP][1] = gButtonInfoTable[10][0]; for (i = 0; i < 10; i++) - gUnknown_02031B18[i] = gUnknown_08527EFE[i]; + gCustomButtonConfigTileIds[i] = gDefaultCustomButtonConfigTileIds[i]; break; case BUTTON_CONFIG_TYPE_A: - gMain.buttonConfigs[0][0] = gUnknown_086BB910[5][0]; - gMain.buttonConfigs[0][1] = gUnknown_086BB910[10][0]; - gMain.buttonConfigs[1][0] = gUnknown_086BB910[0][0]; - gMain.buttonConfigs[1][1] = gUnknown_086BB910[10][0]; - gMain.buttonConfigs[2][0] = gUnknown_086BB910[9][0]; - gMain.buttonConfigs[2][1] = gUnknown_086BB910[10][0]; - gMain.buttonConfigs[3][0] = gUnknown_086BB910[8][0]; - gMain.buttonConfigs[3][1] = gUnknown_086BB910[10][0]; - gMain.buttonConfigs[4][0] = gUnknown_086BB910[9][0]; - gMain.buttonConfigs[4][1] = gUnknown_086BB910[8][0]; + gMain.buttonConfigs[0][0] = gButtonInfoTable[5][0]; + gMain.buttonConfigs[0][1] = gButtonInfoTable[10][0]; + gMain.buttonConfigs[1][0] = gButtonInfoTable[0][0]; + gMain.buttonConfigs[1][1] = gButtonInfoTable[10][0]; + gMain.buttonConfigs[2][0] = gButtonInfoTable[9][0]; + gMain.buttonConfigs[2][1] = gButtonInfoTable[10][0]; + gMain.buttonConfigs[3][0] = gButtonInfoTable[8][0]; + gMain.buttonConfigs[3][1] = gButtonInfoTable[10][0]; + gMain.buttonConfigs[4][0] = gButtonInfoTable[9][0]; + gMain.buttonConfigs[4][1] = gButtonInfoTable[8][0]; break; case BUTTON_CONFIG_TYPE_B: - gMain.buttonConfigs[0][0] = gUnknown_086BB910[5][0]; - gMain.buttonConfigs[0][1] = gUnknown_086BB910[10][0]; - gMain.buttonConfigs[1][0] = gUnknown_086BB910[0][0]; - gMain.buttonConfigs[1][1] = gUnknown_086BB910[10][0]; - gMain.buttonConfigs[2][0] = gUnknown_086BB910[9][0]; - gMain.buttonConfigs[2][1] = gUnknown_086BB910[10][0]; - gMain.buttonConfigs[3][0] = gUnknown_086BB910[8][0]; - gMain.buttonConfigs[3][1] = gUnknown_086BB910[10][0]; - gMain.buttonConfigs[4][0] = gUnknown_086BB910[1][0]; - gMain.buttonConfigs[4][1] = gUnknown_086BB910[10][0]; + gMain.buttonConfigs[0][0] = gButtonInfoTable[5][0]; + gMain.buttonConfigs[0][1] = gButtonInfoTable[10][0]; + gMain.buttonConfigs[1][0] = gButtonInfoTable[0][0]; + gMain.buttonConfigs[1][1] = gButtonInfoTable[10][0]; + gMain.buttonConfigs[2][0] = gButtonInfoTable[9][0]; + gMain.buttonConfigs[2][1] = gButtonInfoTable[10][0]; + gMain.buttonConfigs[3][0] = gButtonInfoTable[8][0]; + gMain.buttonConfigs[3][1] = gButtonInfoTable[10][0]; + gMain.buttonConfigs[4][0] = gButtonInfoTable[1][0]; + gMain.buttonConfigs[4][1] = gButtonInfoTable[10][0]; break; case BUTTON_CONFIG_TYPE_C: - gMain.buttonConfigs[0][0] = gUnknown_086BB910[9][0]; - gMain.buttonConfigs[0][1] = gUnknown_086BB910[10][0]; - gMain.buttonConfigs[1][0] = gUnknown_086BB910[8][0]; - gMain.buttonConfigs[1][1] = gUnknown_086BB910[10][0]; - gMain.buttonConfigs[2][0] = gUnknown_086BB910[5][0]; - gMain.buttonConfigs[2][1] = gUnknown_086BB910[10][0]; - gMain.buttonConfigs[3][0] = gUnknown_086BB910[0][0]; - gMain.buttonConfigs[3][1] = gUnknown_086BB910[10][0]; - gMain.buttonConfigs[4][0] = gUnknown_086BB910[5][0]; - gMain.buttonConfigs[4][1] = gUnknown_086BB910[0][0]; + gMain.buttonConfigs[0][0] = gButtonInfoTable[9][0]; + gMain.buttonConfigs[0][1] = gButtonInfoTable[10][0]; + gMain.buttonConfigs[1][0] = gButtonInfoTable[8][0]; + gMain.buttonConfigs[1][1] = gButtonInfoTable[10][0]; + gMain.buttonConfigs[2][0] = gButtonInfoTable[5][0]; + gMain.buttonConfigs[2][1] = gButtonInfoTable[10][0]; + gMain.buttonConfigs[3][0] = gButtonInfoTable[0][0]; + gMain.buttonConfigs[3][1] = gButtonInfoTable[10][0]; + gMain.buttonConfigs[4][0] = gButtonInfoTable[5][0]; + gMain.buttonConfigs[4][1] = gButtonInfoTable[0][0]; break; case BUTTON_CONFIG_TYPE_D: - gMain.buttonConfigs[0][0] = gUnknown_086BB910[9][0]; - gMain.buttonConfigs[0][1] = gUnknown_086BB910[10][0]; - gMain.buttonConfigs[1][0] = gUnknown_086BB910[8][0]; - gMain.buttonConfigs[1][1] = gUnknown_086BB910[10][0]; - gMain.buttonConfigs[2][0] = gUnknown_086BB910[5][0]; - gMain.buttonConfigs[2][1] = gUnknown_086BB910[10][0]; - gMain.buttonConfigs[3][0] = gUnknown_086BB910[4][0]; - gMain.buttonConfigs[3][1] = gUnknown_086BB910[10][0]; - gMain.buttonConfigs[4][0] = gUnknown_086BB910[6][0]; - gMain.buttonConfigs[4][1] = gUnknown_086BB910[10][0]; + gMain.buttonConfigs[0][0] = gButtonInfoTable[9][0]; + gMain.buttonConfigs[0][1] = gButtonInfoTable[10][0]; + gMain.buttonConfigs[1][0] = gButtonInfoTable[8][0]; + gMain.buttonConfigs[1][1] = gButtonInfoTable[10][0]; + gMain.buttonConfigs[2][0] = gButtonInfoTable[5][0]; + gMain.buttonConfigs[2][1] = gButtonInfoTable[10][0]; + gMain.buttonConfigs[3][0] = gButtonInfoTable[4][0]; + gMain.buttonConfigs[3][1] = gButtonInfoTable[10][0]; + gMain.buttonConfigs[4][0] = gButtonInfoTable[6][0]; + gMain.buttonConfigs[4][1] = gButtonInfoTable[10][0]; break; case BUTTON_CONFIG_TYPE_EDIT: gMain.buttonConfigs[0][0] = gMain_saveData.customButtonConfig[PINBALL_INPUT_LEFT_FLIPPER][0]; diff --git a/src/pause_game.c b/src/pause_game.c index 551713d..59d254e 100644 --- a/src/pause_game.c +++ b/src/pause_game.c @@ -3,58 +3,58 @@ #include "main.h" #include "constants/bg_music.h" -extern const struct Vector16 gUnknown_08137D78[]; -extern const u16 gUnknown_08137DA4[]; +extern const struct Vector16 gPauseMenuSpriteOffsets[]; +extern const u16 gPauseMenuTextAnimFrames[]; extern const u8 gPauseMenuText_Gfx[][0x20]; // Pauses the game and saves the blend settings // Also stops the BGM if it was playing before // Sets the blend settings to a dimmed state -void sub_495A0(void) +void PauseGame(void) { s16 i, j; u16 objPalettes[OBJ_PLTT_SIZE / 0x20][0x10]; u8 rgb[3]; - gCurrentPinballGame->unk1104 = 1; - gCurrentPinballGame->unk131C = 0; + gCurrentPinballGame->pauseMenuCursorIndex = 1; + gCurrentPinballGame->pauseAnimTimer = 0; if (gMPlayInfo_BGM.status >= 0) { - gCurrentPinballGame->unkF4C = gMPlayInfo_BGM.songHeader; + gCurrentPinballGame->savedBgmSongHeader = gMPlayInfo_BGM.songHeader; m4aMPlayStop(&gMPlayInfo_BGM); } else { - gCurrentPinballGame->unkF4C = NULL; + gCurrentPinballGame->savedBgmSongHeader = NULL; } m4aMPlayAllStop(); m4aSongNumStart(SE_UNKNOWN_0xA5); if (gMain.selectedField < MAIN_FIELD_COUNT) { - gCurrentPinballGame->unk6A = gCurrentPinballGame->unk68; + gCurrentPinballGame->hudSpriteBaseY = gCurrentPinballGame->cameraYViewport; if (gMain.selectedField == FIELD_RUBY) - sub_4E814(); + UpdateRubyBoardAnimations(); else if (gMain.selectedField == FIELD_SAPPHIRE) - sub_4F814(); + UpdateSapphireBoardAnimations(); } - gCurrentPinballGame->unk1106 = gMain.blendControl; - gCurrentPinballGame->unk1108 = gMain.blendAlpha; - gCurrentPinballGame->unk110A = gMain.blendBrightness; - gCurrentPinballGame->unk110C = gMain.unk2C; - gCurrentPinballGame->unk110E = gMain.vCount; - DmaCopy16(3, (void *)OBJ_PLTT, gCurrentPinballGame->unk111A, OBJ_PLTT_SIZE); + gCurrentPinballGame->pauseBlendControl = gMain.blendControl; + gCurrentPinballGame->pauseBlendAlpha = gMain.blendAlpha; + gCurrentPinballGame->pauseBlendBrightness = gMain.blendBrightness; + gCurrentPinballGame->pauseScoreOverlayActive = gMain.scoreOverlayActive; + gCurrentPinballGame->pauseVCount = gMain.vCount; + DmaCopy16(3, (void *)OBJ_PLTT, gCurrentPinballGame->pauseObjPalette, OBJ_PLTT_SIZE); for (i = 0; i < 16; i++) { for (j = 0; j < 16; j++) { if (i != 9 || j != 12) { - rgb[0] = (((gCurrentPinballGame->unk111A[i][j] & 0x001F) >> 0) * 2) / 5; - rgb[1] = (((gCurrentPinballGame->unk111A[i][j] & 0x03E0) >> 5) * 2) / 5; - rgb[2] = (((gCurrentPinballGame->unk111A[i][j] & 0x7C00) >> 10) * 2) / 5; + rgb[0] = (((gCurrentPinballGame->pauseObjPalette[i][j] & 0x001F) >> 0) * 2) / 5; + rgb[1] = (((gCurrentPinballGame->pauseObjPalette[i][j] & 0x03E0) >> 5) * 2) / 5; + rgb[2] = (((gCurrentPinballGame->pauseObjPalette[i][j] & 0x7C00) >> 10) * 2) / 5; objPalettes[i][j] = rgb[0] | (rgb[1] << 5) | (rgb[2] << 10); } else @@ -66,35 +66,35 @@ void sub_495A0(void) DmaCopy16(3, objPalettes, (void *)OBJ_PLTT, OBJ_PLTT_SIZE); if (gMain.selectedField < MAIN_FIELD_COUNT) - sub_1D4D0(); + ClampPortraitSpritesToOffscreen(); else if (gMain.selectedField == FIELD_DUSCLOPS) - sub_356A0(); + RenderBonusStageOverlaySprites(); else if (gMain.selectedField == FIELD_KYOGRE) - sub_3ADA0(); + HideKyogreSplashSprite(); else if (gMain.selectedField == FIELD_GROUDON) - sub_3E5D0(); + HideGroudonShockwaveSprite(); - sub_11F0(1); + SetRumblePaused(1); } //Unpauses the game and restores the blend settings //Also starts the BGM if it was playing before -void sub_497BC(void) +void UnpauseGame(void) { - gMain.blendControl = gCurrentPinballGame->unk1106; - gMain.blendAlpha = gCurrentPinballGame->unk1108; - gMain.blendBrightness = gCurrentPinballGame->unk110A; - gMain.unk2C = gCurrentPinballGame->unk110C; - gMain.vCount = gCurrentPinballGame->unk110E; - DmaCopy16(3, gCurrentPinballGame->unk111A, (void *)OBJ_PLTT, OBJ_PLTT_SIZE); - if (gCurrentPinballGame->unkF4C) + gMain.blendControl = gCurrentPinballGame->pauseBlendControl; + gMain.blendAlpha = gCurrentPinballGame->pauseBlendAlpha; + gMain.blendBrightness = gCurrentPinballGame->pauseBlendBrightness; + gMain.scoreOverlayActive = gCurrentPinballGame->pauseScoreOverlayActive; + gMain.vCount = gCurrentPinballGame->pauseVCount; + DmaCopy16(3, gCurrentPinballGame->pauseObjPalette, (void *)OBJ_PLTT, OBJ_PLTT_SIZE); + if (gCurrentPinballGame->savedBgmSongHeader) m4aMPlayContinue(&gMPlayInfo_BGM); m4aSongNumStart(SE_UNKNOWN_0xA6); - sub_11F0(0); + SetRumblePaused(0); } -void sub_49850(void) +void PositionPauseMenuSprites(void) { s16 i; struct SpriteGroup *group; @@ -142,7 +142,7 @@ void sub_49850(void) } } -void sub_49A34(void) +void AnimatePauseMenuOverlay(void) { s16 i; struct SpriteGroup *group; @@ -154,57 +154,57 @@ void sub_49A34(void) s16 sb; s16 yScale = 8; - if (gCurrentPinballGame->unk131C == 0) + if (gCurrentPinballGame->pauseAnimTimer == 0) { gMain.blendControl = 0xCF; gMain.blendBrightness = 0xA; - gMain.unk2C = 0; + gMain.scoreOverlayActive = 0; gMain.vCount = 144; } - if (gCurrentPinballGame->unk131C < 16) + if (gCurrentPinballGame->pauseAnimTimer < 16) { - xOffset = 160 - gCurrentPinballGame->unk131C * 10; + xOffset = 160 - gCurrentPinballGame->pauseAnimTimer * 10; yOffset = 24; var0 = -1; sb = -1; yScale = 16; } - else if (gCurrentPinballGame->unk131C < 24) + else if (gCurrentPinballGame->pauseAnimTimer < 24) { xOffset = 0; - yOffset = 24 - (gCurrentPinballGame->unk131C - 15) * 3; - if (gCurrentPinballGame->unk131C < 18) + yOffset = 24 - (gCurrentPinballGame->pauseAnimTimer - 15) * 3; + if (gCurrentPinballGame->pauseAnimTimer < 18) { var0 = -1; sb = -1; yScale = 8; } - else if (gCurrentPinballGame->unk131C == 18) + else if (gCurrentPinballGame->pauseAnimTimer == 18) { var0 = 9; sb = -10; yScale = 16; } - else if (gCurrentPinballGame->unk131C == 19) + else if (gCurrentPinballGame->pauseAnimTimer == 19) { var0 = 9; sb = -9; yScale = 128; } - else if (gCurrentPinballGame->unk131C == 20) + else if (gCurrentPinballGame->pauseAnimTimer == 20) { var0 = 7; sb = -8; yScale = 160; } - else if (gCurrentPinballGame->unk131C == 21) + else if (gCurrentPinballGame->pauseAnimTimer == 21) { var0 = 6; sb = -7; yScale = 192; } - else if (gCurrentPinballGame->unk131C == 22) + else if (gCurrentPinballGame->pauseAnimTimer == 22) { var0 = 4; sb = -5; @@ -234,12 +234,12 @@ void sub_49A34(void) group->baseX = 100; group->baseY = 80 + var0; oamSimple = &group->oam[0]; - gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX + gUnknown_08137D78[0].x; - gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY + gUnknown_08137D78[0].y + gCurrentPinballGame->unk1104 * 12; + gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX + gPauseMenuSpriteOffsets[0].x; + gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY + gPauseMenuSpriteOffsets[0].y + gCurrentPinballGame->pauseMenuCursorIndex * 12; gOamBuffer[oamSimple->oamId].affineMode = ST_OAM_AFFINE_DOUBLE; gOamBuffer[oamSimple->oamId].matrixNum = 5; - index = gUnknown_08137DA4[(gMain.systemFrameCount % 65) / 5]; + index = gPauseMenuTextAnimFrames[(gMain.systemFrameCount % 65) / 5]; if (gMain.selectedField < MAIN_FIELD_COUNT) { DmaCopy16(3, gPauseMenuText_Gfx[index], (void *)0x060118C0, 0x20); @@ -249,7 +249,7 @@ void sub_49A34(void) DmaCopy16(3, gPauseMenuText_Gfx[index], (void *)0x06010480, 0x20); } - offsets = gUnknown_08137D78; + offsets = gPauseMenuSpriteOffsets; group->baseX = 100; group->baseY = 80 + var0; for (i = 1; i < 5; i++) @@ -295,5 +295,5 @@ void sub_49A34(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - gCurrentPinballGame->unk131C++; + gCurrentPinballGame->pauseAnimTimer++; } diff --git a/src/pinball_game_main.c b/src/pinball_game_main.c index b908a66..8cf75e8 100644 --- a/src/pinball_game_main.c +++ b/src/pinball_game_main.c @@ -6,94 +6,94 @@ #include "constants/fields.h" #include "constants/ruby_states.h" -extern struct PinballGame gUnknown_02000000; +extern struct PinballGame gPinballGameState; typedef void (*VoidFunc)(void); -struct Unk20028D8 +struct BoardProcessPair { - void (*unk0)(void); - void (*unk4)(void); + void (*initFunc)(void); + void (*updateFunc)(void); }; -extern struct Unk20028D8 CurrentBoardProcPairs_020028D8[9]; -extern u8 gUnknown_0200FBB0[]; -extern u8 gUnknown_020030A0[]; +extern struct BoardProcessPair CurrentBoardProcPairs_020028D8[9]; +extern u8 gBoardGfxBuffer[]; +extern u8 gBoardBGTileBufferAlt[]; -extern const struct Unk20028D8 BoardProcPairs_086B077C[]; -extern const VoidFunc gUnknown_086B085C[]; +extern const struct BoardProcessPair BoardProcPairs_086B077C[]; +extern const VoidFunc gFieldInitFuncs[]; extern struct SpriteGroup *gMainFieldSpriteGroups[][60]; extern struct SpriteGroup *gBonusFieldSpriteGroups[][30]; -extern const u8 gUnknown_08158284[]; -extern const u8 gUnknown_083A704C[]; -extern const u8 gUnknown_0848FD8C[]; -extern const u8 gUnknown_081428D4[]; -extern const u8 gUnknown_081BCAA4[]; -extern const u8 gUnknown_081BE2C4[]; -extern const u8 gUnknown_081BE4C4[]; -extern const u8 gUnknown_081BFCE4[]; -extern const u8 gUnknown_0839C78C[]; -extern const u8 gUnknown_0839DDAC[]; -extern const u8 gUnknown_083A07CC[]; -extern const u8 gUnknown_083A29EC[]; -extern const u8 gUnknown_083A340C[]; -extern const u8 gUnknown_083A562C[]; -extern const u8 gUnknown_083FF04C[][0x40]; -extern const u8 gUnknown_083FFD4C[0x40]; -extern const u8 gUnknown_08480E0C[][0x40]; -extern const u8 gUnknown_084F61EC[]; -extern const u8 gUnknown_084FA20C[]; +extern const u8 gBoardActionTilesGfx[]; +extern const u8 gEggModeTilesGfx[]; +extern const u8 gCaptureModeTilesGfx[]; +extern const u8 gCaptureScreenTilesGfx[]; +extern const u8 gRubyBoardBonusGfx[]; +extern const u8 gRubyBoardBonusObjPalette[]; +extern const u8 gSapphireBoardBonusGfx[]; +extern const u8 gSapphireBoardBonusObjPalette[]; +extern const u8 gSapphireCatchTilesGfx[]; +extern const u8 gHatchRevealTilesGfx[]; +extern const u8 gHatchStartTilesGfx[]; +extern const u8 gHatchStage2TilesGfx[]; +extern const u8 gHatchStage3TilesGfx[]; +extern const u8 gHatchFinalTilesGfx[]; +extern const u8 gAlphabetTilesGfx[][0x40]; +extern const u8 gSpaceTileGfx[0x40]; +extern const u8 gDecimalDigitTilesGfx[][0x40]; +extern const u8 gPokemonNameDisplayGfx[]; +extern const u8 gEggPortraitTilesGfx[]; extern const u8 gMainBoardBallSave_Gfx[]; extern const u8 gMainBoardEndOfBall_Gfx[]; extern const u8 gSapphireBoardZigzagoonFx_Gfx[]; -extern const s16 gUnknown_086ACFE0[]; -extern const u16 gUnknown_086AD2DE[]; +extern const s16 gCaughtTextChars[]; +extern const u16 gShopCursorToItemMap[]; extern const u8 *gEvoItemAppear_GfxList[]; -extern const s16 gUnknown_086AD456[][7]; +extern const s16 gEvoShopAnimFrames[][7]; extern const u8 gRubyBoardHatchCave_Gfx[][0x480]; -extern const u8 gUnknown_083C3C2C[][0x300]; +extern const u8 gRubyFlashingDecorationTiles[][0x300]; extern const u8 gRubyBoardSharpedo_Gfx[][0x260]; -extern const u8 gUnknown_083C806C[][0x100]; +extern const u8 gRubyFlashingTiles_Secondary[][0x100]; extern const u8 gRubyBoardShopDoor_Gfx[][0x180]; extern const u8 gRubyStageCyndaquil_Gfx[][0x280]; extern const u8 gRubyBoardShop_Gfx[][0x500]; -extern const u8 gUnknown_08490A4C[][0x440]; -extern const s16 gUnknown_086AE5A0[][2]; +extern const u8 gHoleIndicatorTileGfx[][0x440]; +extern const s16 gHoleAnimKeyframeData[][2]; extern const u8 gKecleonBonusClear_Gfx[0x2000]; extern const u8 gKyogreBonusClear_Gfx[0x2000]; -extern const u8 gUnknown_0849F1CC[0x2000]; +extern const u8 gGroudonBoardBackgroundGfx[0x2000]; extern const u8 gGroudonBonusClear_Gfx[0x2000]; -extern const u8 gUnknown_083C5A2C[0x2800]; -extern const u8 gUnknown_084A856C[0x1C00]; +extern const u8 gRayquazaSkyBackgroundGfx[0x2800]; +extern const u8 gRayquazaWindBoardGfx[0x1C00]; extern const u8 gRayquazaBonusClear_Gfx[0x2000]; -extern const u8 gUnknown_084AA18C[0x860]; -extern const u8 gUnknown_084B77EC[0x800]; +extern const u8 gRayquazaSpriteSheet[0x860]; +extern const u8 gSphealResultsScreenGfx[0x800]; extern const StateFunc gPinballGameStateFuncs[]; -extern const u8 gUnknown_084C0C6C[]; +extern const u8 gDxModePikachuObjTiles[]; -void sub_1D4D0(void); -void sub_4A6A0(void); -void sub_47110(void); -static void sub_4A270(void); -void sub_4A518(void); -void sub_4A90C(void); +void ClampPortraitSpritesToOffscreen(void); +void SetBallPositionForBonusReturn(void); +void ClearBG0Tilemap(void); +static void SetupDisplayRegistersForField(void); +void InitPinballGameState(void); +void ConfigureBoardProcessesForField(void); void UpdateButtonActionsFromJoy(void); -void sub_4B334(void); -void sub_4B408(s16); -void sub_4B654(void); -void sub_4B678(u16); -void sub_4BC34(void); -void sub_4C290(void); -void sub_4C808(void); -void sub_4CA18(void); +void ReplayButtonActionsFromRecording(void); +void SaveGameStateSnapshot(s16); +void SaveGameToSram(void); +void RestoreGameState(u16); +void RestoreFieldSpecificGraphics(void); +void RestoreMainFieldDynamicGraphics(void); +void RestoreRubyBoardTileGraphics(void); +void RestoreSapphireBoardTileGraphics(void); void nullsub_18(void); -void sub_4CAE8(void); -void sub_4CB0C(void); -void sub_4CB30(void); -void sub_4CBB4(void); -void sub_4CC58(void); -void sub_4CD60(void); +void RestoreDusclopsBonusGraphics(void); +void RestoreKecleonBonusGraphics(void); +void RestoreKyogreBonusGraphics(void); +void RestoreGroudonBonusGraphics(void); +void RestoreRayquazaBonusGraphics(void); +void RestoreSphealBonusGraphics(void); void PinballGameMain(void) @@ -111,13 +111,13 @@ void PinballGame_State0_49ED4(void) for (i = 0; i < numRngAdvances; i++) Random(); - sub_10C0(); - gCurrentPinballGame = &gUnknown_02000000; - ResetSomeGraphicsRelatedStuff(); - gMain.unkE = 0; - if (gMain.unkD) + EnableGbPlayerRumble(); + gCurrentPinballGame = &gPinballGameState; + ResetDisplayState(); + gMain.gameExitState = 0; + if (gMain.continueFromSave) var0 = 0; - else if (gMain.unk5 == gMain.selectedField) + else if (gMain.tempField == gMain.selectedField) var0 = 1; else if (gMain.selectedField < MAIN_FIELD_COUNT) var0 = 2; @@ -127,95 +127,95 @@ void PinballGame_State0_49ED4(void) switch (var0) { case 0: - sub_4A270(); - sub_4A518(); + SetupDisplayRegistersForField(); + InitPinballGameState(); loadIntroduction(); - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0], (void *)OBJ_PLTT, OBJ_PLTT_SIZE); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0], (void *)OBJ_PLTT, OBJ_PLTT_SIZE); if (gMain.eReaderBonuses[EREADER_DX_MODE_CARD]) - DmaCopy16(3, &gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], (void *)OBJ_PLTT + 0x20, 0x20); + DmaCopy16(3, &gBallPalettes[gCurrentPinballGame->ballUpgradeType], (void *)OBJ_PLTT + 0x20, 0x20); - sub_4A90C(); + ConfigureBoardProcessesForField(); for (i = 0; i < 9; i++) - CurrentBoardProcPairs_020028D8[i].unk0(); + CurrentBoardProcPairs_020028D8[i].initFunc(); m4aMPlayAllStop(); - sub_47110(); - sub_4A518(); + ClearBG0Tilemap(); + InitPinballGameState(); if (gMain.mainState == STATE_GAME_IDLE) - sub_4B678(2); + RestoreGameState(2); else - sub_4B678(1); + RestoreGameState(1); - sub_4A270(); - sub_4A90C(); - gUnknown_086B085C[gMain.unk6](); + SetupDisplayRegistersForField(); + ConfigureBoardProcessesForField(); + gFieldInitFuncs[gMain.isBonusField](); if (gMain.selectedField == FIELD_RUBY || gMain.selectedField == FIELD_SAPPHIRE) - sub_1D4D0(); + ClampPortraitSpritesToOffscreen(); else if (gMain.selectedField == FIELD_DUSCLOPS) - sub_356A0(); + RenderBonusStageOverlaySprites(); else if (gMain.selectedField == FIELD_KYOGRE) - sub_3ADA0(); + HideKyogreSplashSprite(); else if (gMain.selectedField == FIELD_GROUDON) - sub_3E5D0(); + HideGroudonShockwaveSprite(); break; case 1: - sub_4A270(); - sub_4A518(); + SetupDisplayRegistersForField(); + InitPinballGameState(); loadIntroduction(); - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0], (void *)OBJ_PLTT, OBJ_PLTT_SIZE); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0], (void *)OBJ_PLTT, OBJ_PLTT_SIZE); if (gMain.eReaderBonuses[EREADER_DX_MODE_CARD]) - DmaCopy16(3, &gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], (void *)OBJ_PLTT + 0x20, 0x20); + DmaCopy16(3, &gBallPalettes[gCurrentPinballGame->ballUpgradeType], (void *)OBJ_PLTT + 0x20, 0x20); - sub_4A90C(); + ConfigureBoardProcessesForField(); for (i = 0; i < 9; i++) - CurrentBoardProcPairs_020028D8[i].unk0(); + CurrentBoardProcPairs_020028D8[i].initFunc(); - sub_47110(); + ClearBG0Tilemap(); break; case 2: - sub_4A270(); - sub_4A6A0(); - sub_4B678(0); - sub_4A90C(); - gUnknown_086B085C[gMain.unk6](); + SetupDisplayRegistersForField(); + SetBallPositionForBonusReturn(); + RestoreGameState(0); + ConfigureBoardProcessesForField(); + gFieldInitFuncs[gMain.isBonusField](); if (gMain.selectedField == FIELD_RUBY) - sub_46FD4(1); + SetBoardCollisionConfig(1); - sub_1C7F4(0, 0); - gCurrentPinballGame->unk6C4 = 0; + LoadPortraitGraphics(0, 0); + gCurrentPinballGame->portraitDisplayState = 0; break; case 3: - sub_4A270(); - sub_4A518(); + SetupDisplayRegistersForField(); + InitPinballGameState(); loadIntroduction(); - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0], (void *)OBJ_PLTT, OBJ_PLTT_SIZE); - sub_4A90C(); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0], (void *)OBJ_PLTT, OBJ_PLTT_SIZE); + ConfigureBoardProcessesForField(); for (i = 0; i < 9; i++) - CurrentBoardProcPairs_020028D8[i].unk0(); + CurrentBoardProcPairs_020028D8[i].initFunc(); - sub_47110(); + ClearBG0Tilemap(); break; } - gUnknown_02031520.unk8 = 0; + gBoardConfig.caughtSpeciesCount = 0; for (j = 0; j < NUM_SPECIES; j++) { if (gMain_saveData.pokedexFlags[j] > SPECIES_SHARED_AND_SEEN) - gUnknown_02031520.unk8++; + gBoardConfig.caughtSpeciesCount++; } - sub_0CBC(); - sub_024C(); - gCurrentPinballGame->unk1100 = 0; - gMain.unk36 = 1; + EnableVBlankInterrupts(); + FadeInScreen(); + gCurrentPinballGame->startButtonDisabled = 0; + gMain.blendEnabled = 1; switch (var0) { case 0: - if (gMain.mainState != STATE_GAME_IDLE && gCurrentPinballGame->unkF4C && gMPlayInfo_BGM.status < 0) - MPlayStart(&gMPlayInfo_BGM, gCurrentPinballGame->unkF4C); + if (gMain.mainState != STATE_GAME_IDLE && gCurrentPinballGame->savedBgmSongHeader && gMPlayInfo_BGM.status < 0) + MPlayStart(&gMPlayInfo_BGM, gCurrentPinballGame->savedBgmSongHeader); if (gMain.selectedField < MAIN_FIELD_COUNT) - sub_31BE8(gCurrentPinballGame->unk6F); + RestoreBoardObjPalettes(gCurrentPinballGame->activePaletteIndex); break; case 1: case 2: @@ -229,7 +229,7 @@ void PinballGame_State0_49ED4(void) gMain.subState++; } -static void sub_4A270(void) +static void SetupDisplayRegistersForField(void) { REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_FORCED_BLANK | DISPCNT_OBJ_ON; switch (gMain.selectedField) @@ -316,38 +316,38 @@ static void sub_4A270(void) REG_MOSAIC = 0; } -void sub_4A518(void) +void InitPinballGameState(void) { gMain.modeChangeFlags = MODE_CHANGE_NONE; - gMain.unk10 = 0; + gMain.debugMenuCursorIndex = 0; gMain.fieldFrameCount = 0; - gMain.unk11 = 0; - gMain.unk12 = 0; - gMain.unk14 = 0; + gMain.pendingModeChangeType = 0; + gMain.animationTimer = 0; + gMain.modeChangeDelayTimer = 0; gMain.vCount = 144; - gMain.unk28 = 0; - gMain.unk2A = 0; - gMain.unk36 = 0; + gMain.shopPanelActive = 0; + gMain.shopPanelSlideOffset = 0; + gMain.blendEnabled = 0; gMain.blendControl = 0; gMain.blendAlpha = 0; gMain.blendBrightness = 0; - if (gMain.unk5 == gMain.selectedField) + if (gMain.tempField == gMain.selectedField) { DmaFill16(3, 0, gCurrentPinballGame, sizeof(struct PinballGame)); if (gMain.eReaderBonuses[EREADER_DX_MODE_CARD]) { - gCurrentPinballGame->unk1C6 = 168; - gCurrentPinballGame->unk1C8 = 168; - gCurrentPinballGame->unk1CC = 13; - gCurrentPinballGame->unk1CA = 13; - gCurrentPinballGame->unk1D0 = 0; - gCurrentPinballGame->unk1D4 = 0; - gCurrentPinballGame->unk1D6 = 120; - gCurrentPinballGame->unk1DC = 60; - DmaCopy16(3, gUnknown_084C0C6C, (void *)OBJ_VRAM0 + 0x600, 0x180); + gCurrentPinballGame->pikaChargeTarget = 168; + gCurrentPinballGame->pikaChargeProgress = 168; + gCurrentPinballGame->prevCatchCounterValue = 13; + gCurrentPinballGame->catchCounterValue = 13; + gCurrentPinballGame->catchCounterSlideTimer = 0; + gCurrentPinballGame->catchCounterXShift = 0; + gCurrentPinballGame->catchCounterSlideOffsetY = 120; + gCurrentPinballGame->catchCounterBlinkTimer = 60; + DmaCopy16(3, gDxModePikachuObjTiles, (void *)OBJ_VRAM0 + 0x600, 0x180); gCurrentPinballGame->outLanePikaPosition = 2; - gMain.unk44[41]->available = FALSE; - gCurrentPinballGame->unk1C0 = 1; + gMain.fieldSpriteGroups[41]->available = FALSE; + gCurrentPinballGame->pikaSaverTimer = 1; gCurrentPinballGame->ballUpgradeType = BALL_UPGRADE_TYPE_MASTER_BALL; gCurrentPinballGame->ballUpgradeCounter = 60 * 60; gCurrentPinballGame->numLives = 9; @@ -355,8 +355,8 @@ void sub_4A518(void) } else { - gCurrentPinballGame->unk1D4 = 0; - gCurrentPinballGame->unk1D6 = -4; + gCurrentPinballGame->catchCounterXShift = 0; + gCurrentPinballGame->catchCounterSlideOffsetY = -4; gCurrentPinballGame->numLives = 2; gCurrentPinballGame->coins = 10; } @@ -366,93 +366,93 @@ void sub_4A518(void) gCurrentPinballGame->ballSpeed = gMain_saveData.ballSpeed; gCurrentPinballGame->scoreAddStepSize = 40000; - gCurrentPinballGame->unk1D = 0; - gCurrentPinballGame->ball = &gCurrentPinballGame->unk1334[0]; - gCurrentPinballGame->unk1330 = &gCurrentPinballGame->unk1334[0]; - gCurrentPinballGame->unk66 = 0; + gCurrentPinballGame->fadeSubState = 0; + gCurrentPinballGame->ball = &gCurrentPinballGame->ballStates[0]; + gCurrentPinballGame->secondaryBall = &gCurrentPinballGame->ballStates[0]; + gCurrentPinballGame->activeBallIndex = 0; } -void sub_4A6A0(void) +void SetBallPositionForBonusReturn(void) { - switch (gCurrentPinballGame->unk282) + switch (gCurrentPinballGame->bonusReturnState) { case 0: gCurrentPinballGame->ball->positionQ0.x = 119; gCurrentPinballGame->ball->positionQ0.y = 279; gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; - gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->ball->spinSpeed = 0; gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ0.x << 8; gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ0.y << 8; gCurrentPinballGame->ball->scale = 0x80; - gCurrentPinballGame->ball->unk0 = 1; - gCurrentPinballGame->unk1F = 1; - gCurrentPinballGame->unk730 = 0; - gCurrentPinballGame->unk28 = 120; - gCurrentPinballGame->unk25 = 4; + gCurrentPinballGame->ball->ballHidden = 1; + gCurrentPinballGame->ballFrozenState = 1; + gCurrentPinballGame->trapAnimState = 0; + gCurrentPinballGame->modeAnimTimer = 120; + gCurrentPinballGame->ballCatchState = 4; if (gMain.selectedField == FIELD_RUBY) - sub_1A9E8(); + UpdateRubyCatchModeAnimation(); else - sub_32968(); + UpdateSapphireCatchModeAnimation(); - gCurrentPinballGame->unk4C = 0; - gCurrentPinballGame->unk4E = 215; + gCurrentPinballGame->cameraBaseX = 0; + gCurrentPinballGame->cameraBaseY = 215; break; case 1: gCurrentPinballGame->ball->positionQ0.x = 140; gCurrentPinballGame->ball->positionQ0.y = 183; gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; - gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->ball->spinSpeed = 0; gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ0.x << 8; gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ0.y << 8; gCurrentPinballGame->ball->scale = 0x80; - gCurrentPinballGame->ball->unk0 = 1; - gCurrentPinballGame->unk1F = 1; - gCurrentPinballGame->unk730 = 0; + gCurrentPinballGame->ball->ballHidden = 1; + gCurrentPinballGame->ballFrozenState = 1; + gCurrentPinballGame->trapAnimState = 0; gCurrentPinballGame->whiscashState = WHISCASH_STATE_INIT_RETURN_FROM_BONUS; - gCurrentPinballGame->unk4C = 0; - gCurrentPinballGame->unk4E = 118; + gCurrentPinballGame->cameraBaseX = 0; + gCurrentPinballGame->cameraBaseY = 118; break; case 2: gCurrentPinballGame->ball->positionQ0.x = -28; gCurrentPinballGame->ball->positionQ0.y = -10; gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; - gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->ball->spinSpeed = 0; gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ0.x << 8; gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ0.y << 8; gCurrentPinballGame->ball->scale = 0x80; - gCurrentPinballGame->ball->unk0 = 1; - gCurrentPinballGame->unk1F = 1; - gCurrentPinballGame->unk730 = 0; - gCurrentPinballGame->unk30C = 0; - gCurrentPinballGame->unk306 = 7; - gCurrentPinballGame->unk4C = 0; - gCurrentPinballGame->unk4E = 0; + gCurrentPinballGame->ball->ballHidden = 1; + gCurrentPinballGame->ballFrozenState = 1; + gCurrentPinballGame->trapAnimState = 0; + gCurrentPinballGame->pelipperFrameTimer = 0; + gCurrentPinballGame->pelipperState = 7; + gCurrentPinballGame->cameraBaseX = 0; + gCurrentPinballGame->cameraBaseY = 0; break; } - gCurrentPinballGame->unk5FC = 0; - gCurrentPinballGame->unk5FE = 0; - gCurrentPinballGame->unk5FB = 0; - gCurrentPinballGame->unk54 = gCurrentPinballGame->unk4E << 8; - gCurrentPinballGame->unk58 = gCurrentPinballGame->unk4C; - gCurrentPinballGame->unk5A = gCurrentPinballGame->unk4E + gCurrentPinballGame->unk5FC; + gCurrentPinballGame->cameraScrollOffset = 0; + gCurrentPinballGame->cameraScrollTarget = 0; + gCurrentPinballGame->cameraScrollEnabled = 0; + gCurrentPinballGame->cameraYQ8 = gCurrentPinballGame->cameraBaseY << 8; + gCurrentPinballGame->cameraXOffset = gCurrentPinballGame->cameraBaseX; + gCurrentPinballGame->cameraYOffset = gCurrentPinballGame->cameraBaseY + gCurrentPinballGame->cameraScrollOffset; - gMain.bgOffsets[2].xOffset = gCurrentPinballGame->unk4C; - gMain.bgOffsets[2].yOffset = gCurrentPinballGame->unk4E; - gMain.bgOffsets[3].xOffset = gCurrentPinballGame->unk4C; - gMain.bgOffsets[3].yOffset = gCurrentPinballGame->unk4E; - gMain.bgOffsets[1].xOffset = gCurrentPinballGame->unk4C; - gMain.bgOffsets[1].yOffset = gCurrentPinballGame->unk4E; + gMain.bgOffsets[2].xOffset = gCurrentPinballGame->cameraBaseX; + gMain.bgOffsets[2].yOffset = gCurrentPinballGame->cameraBaseY; + gMain.bgOffsets[3].xOffset = gCurrentPinballGame->cameraBaseX; + gMain.bgOffsets[3].yOffset = gCurrentPinballGame->cameraBaseY; + gMain.bgOffsets[1].xOffset = gCurrentPinballGame->cameraBaseX; + gMain.bgOffsets[1].yOffset = gCurrentPinballGame->cameraBaseY; gMain.bgOffsets[0].yOffset = 80; - gCurrentPinballGame->unkCC = gMain.bgOffsets[3].yOffset; - gCurrentPinballGame->unk64 = gMain.bgOffsets[3].yOffset / 8; + gCurrentPinballGame->scrollEffectY = gMain.bgOffsets[3].yOffset; + gCurrentPinballGame->ballLaunchSpeed = gMain.bgOffsets[3].yOffset / 8; } -void sub_4A90C(void) +void ConfigureBoardProcessesForField(void) { CurrentBoardProcPairs_020028D8[1] = BoardProcPairs_086B077C[0]; CurrentBoardProcPairs_020028D8[8] = BoardProcPairs_086B077C[18]; @@ -466,7 +466,7 @@ void sub_4A90C(void) CurrentBoardProcPairs_020028D8[4] = BoardProcPairs_086B077C[11]; CurrentBoardProcPairs_020028D8[2] = BoardProcPairs_086B077C[1]; CurrentBoardProcPairs_020028D8[5] = BoardProcPairs_086B077C[13]; - gMain.unk44 = gMainFieldSpriteGroups[gMain.selectedField]; + gMain.fieldSpriteGroups = gMainFieldSpriteGroups[gMain.selectedField]; break; case FIELD_SAPPHIRE: CurrentBoardProcPairs_020028D8[3] = BoardProcPairs_086B077C[4]; @@ -475,7 +475,7 @@ void sub_4A90C(void) CurrentBoardProcPairs_020028D8[4] = BoardProcPairs_086B077C[11]; CurrentBoardProcPairs_020028D8[2] = BoardProcPairs_086B077C[1]; CurrentBoardProcPairs_020028D8[5] = BoardProcPairs_086B077C[13]; - gMain.unk44 = gMainFieldSpriteGroups[gMain.selectedField]; + gMain.fieldSpriteGroups = gMainFieldSpriteGroups[gMain.selectedField]; break; case FIELD_DUSCLOPS: CurrentBoardProcPairs_020028D8[3] = BoardProcPairs_086B077C[5]; @@ -484,7 +484,7 @@ void sub_4A90C(void) CurrentBoardProcPairs_020028D8[4] = BoardProcPairs_086B077C[12]; CurrentBoardProcPairs_020028D8[2] = BoardProcPairs_086B077C[2]; CurrentBoardProcPairs_020028D8[5] = BoardProcPairs_086B077C[14]; - gMain.unk44 = gBonusFieldSpriteGroups[gMain.selectedField - FIELD_DUSCLOPS]; + gMain.fieldSpriteGroups = gBonusFieldSpriteGroups[gMain.selectedField - FIELD_DUSCLOPS]; break; case FIELD_KECLEON: CurrentBoardProcPairs_020028D8[3] = BoardProcPairs_086B077C[6]; @@ -493,7 +493,7 @@ void sub_4A90C(void) CurrentBoardProcPairs_020028D8[4] = BoardProcPairs_086B077C[12]; CurrentBoardProcPairs_020028D8[2] = BoardProcPairs_086B077C[2]; CurrentBoardProcPairs_020028D8[5] = BoardProcPairs_086B077C[14]; - gMain.unk44 = gBonusFieldSpriteGroups[gMain.selectedField - FIELD_DUSCLOPS]; + gMain.fieldSpriteGroups = gBonusFieldSpriteGroups[gMain.selectedField - FIELD_DUSCLOPS]; break; case FIELD_KYOGRE: CurrentBoardProcPairs_020028D8[3] = BoardProcPairs_086B077C[7]; @@ -502,7 +502,7 @@ void sub_4A90C(void) CurrentBoardProcPairs_020028D8[4] = BoardProcPairs_086B077C[12]; CurrentBoardProcPairs_020028D8[2] = BoardProcPairs_086B077C[2]; CurrentBoardProcPairs_020028D8[5] = BoardProcPairs_086B077C[14]; - gMain.unk44 = gBonusFieldSpriteGroups[gMain.selectedField - FIELD_DUSCLOPS]; + gMain.fieldSpriteGroups = gBonusFieldSpriteGroups[gMain.selectedField - FIELD_DUSCLOPS]; break; case FIELD_GROUDON: CurrentBoardProcPairs_020028D8[3] = BoardProcPairs_086B077C[8]; @@ -511,7 +511,7 @@ void sub_4A90C(void) CurrentBoardProcPairs_020028D8[4] = BoardProcPairs_086B077C[12]; CurrentBoardProcPairs_020028D8[2] = BoardProcPairs_086B077C[2]; CurrentBoardProcPairs_020028D8[5] = BoardProcPairs_086B077C[14]; - gMain.unk44 = gBonusFieldSpriteGroups[gMain.selectedField - FIELD_DUSCLOPS]; + gMain.fieldSpriteGroups = gBonusFieldSpriteGroups[gMain.selectedField - FIELD_DUSCLOPS]; break; case FIELD_RAYQUAZA: CurrentBoardProcPairs_020028D8[3] = BoardProcPairs_086B077C[9]; @@ -520,7 +520,7 @@ void sub_4A90C(void) CurrentBoardProcPairs_020028D8[4] = BoardProcPairs_086B077C[12]; CurrentBoardProcPairs_020028D8[2] = BoardProcPairs_086B077C[2]; CurrentBoardProcPairs_020028D8[5] = BoardProcPairs_086B077C[14]; - gMain.unk44 = gBonusFieldSpriteGroups[gMain.selectedField - FIELD_DUSCLOPS]; + gMain.fieldSpriteGroups = gBonusFieldSpriteGroups[gMain.selectedField - FIELD_DUSCLOPS]; break; case FIELD_SPHEAL: CurrentBoardProcPairs_020028D8[3] = BoardProcPairs_086B077C[10]; @@ -529,50 +529,50 @@ void sub_4A90C(void) CurrentBoardProcPairs_020028D8[4] = BoardProcPairs_086B077C[12]; CurrentBoardProcPairs_020028D8[2] = BoardProcPairs_086B077C[2]; CurrentBoardProcPairs_020028D8[5] = BoardProcPairs_086B077C[14]; - gMain.unk44 = gBonusFieldSpriteGroups[gMain.selectedField - FIELD_DUSCLOPS]; + gMain.fieldSpriteGroups = gBonusFieldSpriteGroups[gMain.selectedField - FIELD_DUSCLOPS]; break; } } void PinballGame_State1_4AAD8(void) { - switch (gCurrentPinballGame->unk1D) + switch (gCurrentPinballGame->fadeSubState) { case 0: - gCurrentPinballGame->unk1D = 1; - gMain.unkE = 0; + gCurrentPinballGame->fadeSubState = 1; + gMain.gameExitState = 0; break; case 1: - gUnknown_086B085C[gMain.unk6](); + gFieldInitFuncs[gMain.isBonusField](); if (JOY_HELD(A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON) == (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON)) - gMain.unkE = 1; + gMain.gameExitState = 1; - if (gMain.unkE) + if (gMain.gameExitState) { if (gMain.selectedField < MAIN_FIELD_COUNT) { - sub_1D4D0(); - sub_31BE8(0); + ClampPortraitSpritesToOffscreen(); + RestoreBoardObjPalettes(0); } else if (gMain.selectedField == FIELD_DUSCLOPS) { - sub_356A0(); + RenderBonusStageOverlaySprites(); } else if (gMain.selectedField == FIELD_KYOGRE) { - sub_3ADA0(); + HideKyogreSplashSprite(); } else if (gMain.selectedField == FIELD_GROUDON) { - sub_3E5D0(); + HideGroudonShockwaveSprite(); } if (gMain.modeChangeFlags & MODE_CHANGE_PAUSE) - DmaCopy16(3, gCurrentPinballGame->unk111A, (void *)OBJ_PLTT, OBJ_PLTT_SIZE); + DmaCopy16(3, gCurrentPinballGame->pauseObjPalette, (void *)OBJ_PLTT, OBJ_PLTT_SIZE); - gCurrentPinballGame->unk1D = 2; - if (gMain.unkE == 2) - sub_4B408(1); + gCurrentPinballGame->fadeSubState = 2; + if (gMain.gameExitState == 2) + SaveGameStateSnapshot(1); } break; case 2: @@ -580,56 +580,56 @@ void PinballGame_State1_4AAD8(void) break; } - sub_11FC(); + ProcessRumbleFrame(); } //Note: Used by both the main game mode and the idle game mode //gMain.subState = 2 in both. void PinballGame_State2_4ABC8(void) { - sub_111C(); - if (sub_1170()) + DisableGbPlayerRumble(); + if (IsGbPlayerReady()) { - sub_1198(); + RestoreDefaultInterrupts(); gMain.subState++; } } -void sub_4ABEC(void) +void MainGameFrameUpdate(void) { s16 i; UpdateButtonActionsFromJoy(); - CurrentBoardProcPairs_020028D8[1].unk4(); - if (gMain.unkE == 0 && !(gMain.modeChangeFlags & MODE_CHANGE_PAUSE)) + CurrentBoardProcPairs_020028D8[1].updateFunc(); + if (gMain.gameExitState == 0 && !(gMain.modeChangeFlags & MODE_CHANGE_PAUSE)) { - CurrentBoardProcPairs_020028D8[2].unk4(); - CurrentBoardProcPairs_020028D8[0].unk4(); - CurrentBoardProcPairs_020028D8[3].unk4(); - CurrentBoardProcPairs_020028D8[4].unk4(); + CurrentBoardProcPairs_020028D8[2].updateFunc(); + CurrentBoardProcPairs_020028D8[0].updateFunc(); + CurrentBoardProcPairs_020028D8[3].updateFunc(); + CurrentBoardProcPairs_020028D8[4].updateFunc(); if (gMain.modeChangeFlags) { - if (!gCurrentPinballGame->unk1F) + if (!gCurrentPinballGame->ballFrozenState) { for (i = 0; i < 4; i++) { - gCurrentPinballGame->unk1E = i; - CurrentBoardProcPairs_020028D8[6].unk4(); + gCurrentPinballGame->gravityStrengthIndex = i; + CurrentBoardProcPairs_020028D8[6].updateFunc(); } } } else { gMain.fieldFrameCount++; - gCurrentPinballGame->unk290++; - if (gCurrentPinballGame->unk1F) + gCurrentPinballGame->globalAnimFrameCounter++; + if (gCurrentPinballGame->ballFrozenState) { - if (gCurrentPinballGame->unk1F != 2) + if (gCurrentPinballGame->ballFrozenState != 2) { for (i = 0; i < 4; i++) { - gCurrentPinballGame->unk1E = i; - CurrentBoardProcPairs_020028D8[5].unk4(); + gCurrentPinballGame->gravityStrengthIndex = i; + CurrentBoardProcPairs_020028D8[5].updateFunc(); } } } @@ -637,55 +637,55 @@ void sub_4ABEC(void) { for (i = 0; i < 4; i++) { - gCurrentPinballGame->unk1E = i; - CurrentBoardProcPairs_020028D8[5].unk4(); - CurrentBoardProcPairs_020028D8[6].unk4(); + gCurrentPinballGame->gravityStrengthIndex = i; + CurrentBoardProcPairs_020028D8[5].updateFunc(); + CurrentBoardProcPairs_020028D8[6].updateFunc(); } } } - CurrentBoardProcPairs_020028D8[7].unk4(); - CurrentBoardProcPairs_020028D8[8].unk4(); + CurrentBoardProcPairs_020028D8[7].updateFunc(); + CurrentBoardProcPairs_020028D8[8].updateFunc(); } - sub_47030(); + UpdateScrollingBackgroundTiles(); } -void sub_4ACF0(void) +void IdleGameFrameUpdate(void) { s16 i; - sub_4B334(); - CurrentBoardProcPairs_020028D8[1].unk4(); + ReplayButtonActionsFromRecording(); + CurrentBoardProcPairs_020028D8[1].updateFunc(); if (!(gMain.modeChangeFlags & MODE_CHANGE_PAUSE)) { - CurrentBoardProcPairs_020028D8[2].unk4(); - CurrentBoardProcPairs_020028D8[0].unk4(); - CurrentBoardProcPairs_020028D8[3].unk4(); - CurrentBoardProcPairs_020028D8[4].unk4(); + CurrentBoardProcPairs_020028D8[2].updateFunc(); + CurrentBoardProcPairs_020028D8[0].updateFunc(); + CurrentBoardProcPairs_020028D8[3].updateFunc(); + CurrentBoardProcPairs_020028D8[4].updateFunc(); if (gMain.modeChangeFlags) { - if (!gCurrentPinballGame->unk1F) + if (!gCurrentPinballGame->ballFrozenState) { for (i = 0; i < 4; i++) { - gCurrentPinballGame->unk1E = i; - CurrentBoardProcPairs_020028D8[6].unk4(); + gCurrentPinballGame->gravityStrengthIndex = i; + CurrentBoardProcPairs_020028D8[6].updateFunc(); } } } else { gMain.fieldFrameCount++; - gCurrentPinballGame->unk290++; - if (gCurrentPinballGame->unk1F) + gCurrentPinballGame->globalAnimFrameCounter++; + if (gCurrentPinballGame->ballFrozenState) { - if (gCurrentPinballGame->unk1F != 2) + if (gCurrentPinballGame->ballFrozenState != 2) { for (i = 0; i < 4; i++) { - gCurrentPinballGame->unk1E = i; - CurrentBoardProcPairs_020028D8[5].unk4(); + gCurrentPinballGame->gravityStrengthIndex = i; + CurrentBoardProcPairs_020028D8[5].updateFunc(); } } } @@ -693,78 +693,78 @@ void sub_4ACF0(void) { for (i = 0; i < 4; i++) { - gCurrentPinballGame->unk1E = i; - CurrentBoardProcPairs_020028D8[5].unk4(); - CurrentBoardProcPairs_020028D8[6].unk4(); + gCurrentPinballGame->gravityStrengthIndex = i; + CurrentBoardProcPairs_020028D8[5].updateFunc(); + CurrentBoardProcPairs_020028D8[6].updateFunc(); } } } - CurrentBoardProcPairs_020028D8[7].unk4(); - CurrentBoardProcPairs_020028D8[8].unk4(); + CurrentBoardProcPairs_020028D8[7].updateFunc(); + CurrentBoardProcPairs_020028D8[8].updateFunc(); } - sub_47030(); + UpdateScrollingBackgroundTiles(); if ((gMain.systemFrameCount % 32) / 16 > 0) { for (i = 0; i < 10; i++) - gUnknown_03005C00[0x34A + i] = 0xC156 + i; + gBG0TilemapBuffer[0x34A + i] = 0xC156 + i; } else { for (i = 0; i < 10; i++) - gUnknown_03005C00[0x34A + i] = 0x1FF; + gBG0TilemapBuffer[0x34A + i] = 0x1FF; } - DmaCopy16(3, &gUnknown_03005C00[0x340], (void *)0x6002680, 0x40); + DmaCopy16(3, &gBG0TilemapBuffer[0x340], (void *)0x6002680, 0x40); } -void sub_4AE8C(void) +void BonusFieldFrameUpdate(void) { s16 i; UpdateButtonActionsFromJoy(); - CurrentBoardProcPairs_020028D8[1].unk4(); + CurrentBoardProcPairs_020028D8[1].updateFunc(); if (gMain.modeChangeFlags & MODE_CHANGE_PAUSE) return; - CurrentBoardProcPairs_020028D8[0].unk4(); - CurrentBoardProcPairs_020028D8[2].unk4(); - CurrentBoardProcPairs_020028D8[3].unk4(); - CurrentBoardProcPairs_020028D8[4].unk4(); + CurrentBoardProcPairs_020028D8[0].updateFunc(); + CurrentBoardProcPairs_020028D8[2].updateFunc(); + CurrentBoardProcPairs_020028D8[3].updateFunc(); + CurrentBoardProcPairs_020028D8[4].updateFunc(); if (gMain.modeChangeFlags & ~MODE_CHANGE_EXPIRED_BONUS) { - if (!gCurrentPinballGame->unk1F) + if (!gCurrentPinballGame->ballFrozenState) { for (i = 0; i < 4; i++) { - gCurrentPinballGame->unk66 = 0; - gCurrentPinballGame->ball = &gCurrentPinballGame->unk1334[0]; - gCurrentPinballGame->unk1E = i; - CurrentBoardProcPairs_020028D8[6].unk4(); + gCurrentPinballGame->activeBallIndex = 0; + gCurrentPinballGame->ball = &gCurrentPinballGame->ballStates[0]; + gCurrentPinballGame->gravityStrengthIndex = i; + CurrentBoardProcPairs_020028D8[6].updateFunc(); } } } else { gMain.fieldFrameCount++; - gCurrentPinballGame->unk290++; - if (gCurrentPinballGame->unk1F) + gCurrentPinballGame->globalAnimFrameCounter++; + if (gCurrentPinballGame->ballFrozenState) { - if (gCurrentPinballGame->unk1F == 2) + if (gCurrentPinballGame->ballFrozenState == 2) { - gCurrentPinballGame->unk66 = 0; - gCurrentPinballGame->ball = &gCurrentPinballGame->unk1334[0]; - gCurrentPinballGame->unk1E = 0; + gCurrentPinballGame->activeBallIndex = 0; + gCurrentPinballGame->ball = &gCurrentPinballGame->ballStates[0]; + gCurrentPinballGame->gravityStrengthIndex = 0; } else { for (i = 0; i < 4; i++) { - gCurrentPinballGame->unk66 = 0; - gCurrentPinballGame->ball = &gCurrentPinballGame->unk1334[0]; - gCurrentPinballGame->unk1E = i; - CurrentBoardProcPairs_020028D8[5].unk4(); + gCurrentPinballGame->activeBallIndex = 0; + gCurrentPinballGame->ball = &gCurrentPinballGame->ballStates[0]; + gCurrentPinballGame->gravityStrengthIndex = i; + CurrentBoardProcPairs_020028D8[5].updateFunc(); } } } @@ -772,63 +772,63 @@ void sub_4AE8C(void) { for (i = 0; i < 4; i++) { - gCurrentPinballGame->unk66 = 0; - gCurrentPinballGame->ball = &gCurrentPinballGame->unk1334[0]; - gCurrentPinballGame->unk1E = i; - CurrentBoardProcPairs_020028D8[5].unk4(); - CurrentBoardProcPairs_020028D8[6].unk4(); + gCurrentPinballGame->activeBallIndex = 0; + gCurrentPinballGame->ball = &gCurrentPinballGame->ballStates[0]; + gCurrentPinballGame->gravityStrengthIndex = i; + CurrentBoardProcPairs_020028D8[5].updateFunc(); + CurrentBoardProcPairs_020028D8[6].updateFunc(); } } } - CurrentBoardProcPairs_020028D8[7].unk4(); - CurrentBoardProcPairs_020028D8[8].unk4(); + CurrentBoardProcPairs_020028D8[7].updateFunc(); + CurrentBoardProcPairs_020028D8[8].updateFunc(); } -void sub_4B000(void) +void IdleBonusFieldFrameUpdate(void) { s16 i; - sub_4B334(); + ReplayButtonActionsFromRecording(); if (!(gMain.modeChangeFlags & MODE_CHANGE_PAUSE)) { - CurrentBoardProcPairs_020028D8[0].unk4(); - CurrentBoardProcPairs_020028D8[2].unk4(); - CurrentBoardProcPairs_020028D8[3].unk4(); - CurrentBoardProcPairs_020028D8[4].unk4(); + CurrentBoardProcPairs_020028D8[0].updateFunc(); + CurrentBoardProcPairs_020028D8[2].updateFunc(); + CurrentBoardProcPairs_020028D8[3].updateFunc(); + CurrentBoardProcPairs_020028D8[4].updateFunc(); if (gMain.modeChangeFlags & ~MODE_CHANGE_EXPIRED_BONUS) { - if (!gCurrentPinballGame->unk1F) + if (!gCurrentPinballGame->ballFrozenState) { for (i = 0; i < 4; i++) { - gCurrentPinballGame->unk66 = 0; - gCurrentPinballGame->ball = &gCurrentPinballGame->unk1334[0]; - gCurrentPinballGame->unk1E = i; - CurrentBoardProcPairs_020028D8[6].unk4(); + gCurrentPinballGame->activeBallIndex = 0; + gCurrentPinballGame->ball = &gCurrentPinballGame->ballStates[0]; + gCurrentPinballGame->gravityStrengthIndex = i; + CurrentBoardProcPairs_020028D8[6].updateFunc(); } } } else { gMain.fieldFrameCount++; - gCurrentPinballGame->unk290++; - if (gCurrentPinballGame->unk1F) + gCurrentPinballGame->globalAnimFrameCounter++; + if (gCurrentPinballGame->ballFrozenState) { - if (gCurrentPinballGame->unk1F == 2) + if (gCurrentPinballGame->ballFrozenState == 2) { - gCurrentPinballGame->unk66 = 0; - gCurrentPinballGame->ball = &gCurrentPinballGame->unk1334[0]; - gCurrentPinballGame->unk1E = 0; + gCurrentPinballGame->activeBallIndex = 0; + gCurrentPinballGame->ball = &gCurrentPinballGame->ballStates[0]; + gCurrentPinballGame->gravityStrengthIndex = 0; } else { for (i = 0; i < 4; i++) { - gCurrentPinballGame->unk66 = 0; - gCurrentPinballGame->ball = &gCurrentPinballGame->unk1334[0]; - gCurrentPinballGame->unk1E = i; - CurrentBoardProcPairs_020028D8[5].unk4(); + gCurrentPinballGame->activeBallIndex = 0; + gCurrentPinballGame->ball = &gCurrentPinballGame->ballStates[0]; + gCurrentPinballGame->gravityStrengthIndex = i; + CurrentBoardProcPairs_020028D8[5].updateFunc(); } } } @@ -836,45 +836,45 @@ void sub_4B000(void) { for (i = 0; i < 4; i++) { - gCurrentPinballGame->unk66 = 0; - gCurrentPinballGame->ball = &gCurrentPinballGame->unk1334[0]; - gCurrentPinballGame->unk1E = i; - CurrentBoardProcPairs_020028D8[5].unk4(); - CurrentBoardProcPairs_020028D8[6].unk4(); + gCurrentPinballGame->activeBallIndex = 0; + gCurrentPinballGame->ball = &gCurrentPinballGame->ballStates[0]; + gCurrentPinballGame->gravityStrengthIndex = i; + CurrentBoardProcPairs_020028D8[5].updateFunc(); + CurrentBoardProcPairs_020028D8[6].updateFunc(); } } } - CurrentBoardProcPairs_020028D8[7].unk4(); - CurrentBoardProcPairs_020028D8[8].unk4(); + CurrentBoardProcPairs_020028D8[7].updateFunc(); + CurrentBoardProcPairs_020028D8[8].updateFunc(); } if ((gMain.systemFrameCount % 32) / 16 > 0) { for (i = 0; i < 9; i++) - gUnknown_03005C00[0x32B + i] = 0xC156 + i; + gBG0TilemapBuffer[0x32B + i] = 0xC156 + i; } else { for (i = 0; i < 9; i++) - gUnknown_03005C00[0x32B + i] = 0x1FF; + gBG0TilemapBuffer[0x32B + i] = 0x1FF; } - DmaCopy16(3, &gUnknown_03005C00[0x320], (void *)0x6002640, 0x40); + DmaCopy16(3, &gBG0TilemapBuffer[0x320], (void *)0x6002640, 0x40); } void PinballGame_State3_4B20C(void) { - gMain.unk36 = 0; - sub_02B4(); + gMain.blendEnabled = 0; + FadeOutScreen(); m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); gMain.finalScoreLo = gCurrentPinballGame->scoreLo; gMain.finalScoreHi = gCurrentPinballGame->scoreHi; - if (gMain.unkE == 2) - sub_4B654(); + if (gMain.gameExitState == 2) + SaveGameToSram(); - if (gMain.unkE == 0) + if (gMain.gameExitState == 0) { if (gMain.selectedField >= MAIN_FIELD_COUNT) { @@ -933,7 +933,7 @@ void UpdateButtonActionsFromJoy(void) } } -void sub_4B334(void) +void ReplayButtonActionsFromRecording(void) { u16 i; @@ -946,42 +946,42 @@ void sub_4B334(void) if (gMain.modeChangeFlags) return; - if (gUnknown_02031510 < 60 * 60) + if (gReplayFrameCounter < 60 * 60) { for (i = 0; i < 5; i++) { - gCurrentPinballGame->newButtonActions[i] = (gUnknown_02031520.unk10[gUnknown_02031510].unk0 >> i) & 0x1; - gCurrentPinballGame->releasedButtonActions[i] = (gUnknown_02031520.unk10[gUnknown_02031510].unk1 >> i) & 0x1; - gCurrentPinballGame->heldButtonActions[i] = (gUnknown_02031520.unk10[gUnknown_02031510].unk2 >> i) & 0x1; + gCurrentPinballGame->newButtonActions[i] = (gBoardConfig.replayInputData[gReplayFrameCounter].newButtonBits >> i) & 0x1; + gCurrentPinballGame->releasedButtonActions[i] = (gBoardConfig.replayInputData[gReplayFrameCounter].releasedButtonBits >> i) & 0x1; + gCurrentPinballGame->heldButtonActions[i] = (gBoardConfig.replayInputData[gReplayFrameCounter].heldButtonBits >> i) & 0x1; } - gUnknown_02031510++; + gReplayFrameCounter++; } if (gCurrentPinballGame->newButtonActions[1]) gMain.newKeys = A_BUTTON; } -void sub_4B408(s16 arg0) +void SaveGameStateSnapshot(s16 arg0) { s16 i; u16 *var0; if (gMPlayInfo_BGM.status >= 0) { - gCurrentPinballGame->unkF4C = gMPlayInfo_BGM.songHeader; + gCurrentPinballGame->savedBgmSongHeader = gMPlayInfo_BGM.songHeader; m4aMPlayStop(&gMPlayInfo_BGM); } else { - gCurrentPinballGame->unkF4C = NULL; + gCurrentPinballGame->savedBgmSongHeader = NULL; } for (i = 0; i < 100; i++) - gCurrentPinballGame->unkF68[gMain.unk6][i] = gMain.spriteGroups[i].available; + gCurrentPinballGame->savedSpriteAvailability[gMain.isBonusField][i] = gMain.spriteGroups[i].available; - DmaCopy16(3, (void *)OBJ_PLTT, gCurrentPinballGame->unk74C[gMain.unk6], OBJ_PLTT_SIZE); - DmaCopy16(3, (void *)BG_PLTT, gCurrentPinballGame->unkB4C[gMain.unk6], BG_PLTT_SIZE); + DmaCopy16(3, (void *)OBJ_PLTT, gCurrentPinballGame->savedObjPalette[gMain.isBonusField], OBJ_PLTT_SIZE); + DmaCopy16(3, (void *)BG_PLTT, gCurrentPinballGame->savedBgPalette[gMain.isBonusField], BG_PLTT_SIZE); if (!arg0) return; @@ -989,34 +989,34 @@ void sub_4B408(s16 arg0) gCurrentPinballGame->bgOffsets1 = gMain.bgOffsets[1]; gCurrentPinballGame->bgOffsets2 = gMain.bgOffsets[2]; gCurrentPinballGame->bgOffsets3 = gMain.bgOffsets[3]; - gCurrentPinballGame->field = gMain.selectedField; - gCurrentPinballGame->unk10FE = gMain.unk5; - gCurrentPinballGame->unk10FF = gMain.unk6; - gCurrentPinballGame->unk1101 = gMain.modeChangeFlags; - gCurrentPinballGame->unk1102 = gMain.unk10; - gCurrentPinballGame->unk1103 = gMain.unk11; - gCurrentPinballGame->unk1320 = gMain.unk12; - gCurrentPinballGame->unk1322 = gMain.unk14; - gCurrentPinballGame->unk1324 = gMain.unk28; - gCurrentPinballGame->unk1326 = gMain.unk2A; - gCurrentPinballGame->unk1110 = gCurrentPinballGame->unk1106; - gCurrentPinballGame->unk1112 = gCurrentPinballGame->unk1108; - gCurrentPinballGame->unk1114 = gCurrentPinballGame->unk110A; - gCurrentPinballGame->unk1116 = gCurrentPinballGame->unk110C; - gCurrentPinballGame->unk1118 = gCurrentPinballGame->unk110E; + gCurrentPinballGame->savedField = gMain.selectedField; + gCurrentPinballGame->savedTempField = gMain.tempField; + gCurrentPinballGame->savedIsBonusField = gMain.isBonusField; + gCurrentPinballGame->savedModeChangeFlags = gMain.modeChangeFlags; + gCurrentPinballGame->savedDebugMenuCursorIndex = gMain.debugMenuCursorIndex; + gCurrentPinballGame->savedPendingModeChangeType = gMain.pendingModeChangeType; + gCurrentPinballGame->savedAnimationTimer = gMain.animationTimer; + gCurrentPinballGame->savedModeChangeDelayTimer = gMain.modeChangeDelayTimer; + gCurrentPinballGame->savedShopPanelActive = gMain.shopPanelActive; + gCurrentPinballGame->savedShopPanelSlideOffset = gMain.shopPanelSlideOffset; + gCurrentPinballGame->savedBlendControl = gCurrentPinballGame->pauseBlendControl; + gCurrentPinballGame->savedBlendAlpha = gCurrentPinballGame->pauseBlendAlpha; + gCurrentPinballGame->savedBlendBrightness = gCurrentPinballGame->pauseBlendBrightness; + gCurrentPinballGame->savedScoreOverlayActive = gCurrentPinballGame->pauseScoreOverlayActive; + gCurrentPinballGame->savedVCount = gCurrentPinballGame->pauseVCount; gCurrentPinballGame->ballSpeed = gMain_saveData.ballSpeed; for (i = 0; i < NUM_EREADER_CARDS; i++) gCurrentPinballGame->eReaderBonuses[i] = gMain.eReaderBonuses[i]; } -void sub_4B654(void) +void SaveGameToSram(void) { - gCurrentPinballGame->unk0 = 1; + gCurrentPinballGame->saveDataValid = 1; WriteAndVerifySramFast((const u8 *)gCurrentPinballGame, (void *)SRAM + 0x544, sizeof(*gCurrentPinballGame)); } -void sub_4B678(u16 arg0) +void RestoreGameState(u16 arg0) { s16 i, j; s16 var0, var1; @@ -1028,45 +1028,45 @@ void sub_4B678(u16 arg0) } else if (arg0 == 2) { - DmaCopy16(3, gUnknown_02031520.unkC, gCurrentPinballGame, sizeof(*gCurrentPinballGame)); - gCurrentPinballGame->ball = &gCurrentPinballGame->unk1334[0]; - gCurrentPinballGame->unk1330 = &gCurrentPinballGame->unk1334[0]; - var2 = gMain.unk30; + DmaCopy16(3, gBoardConfig.pinballGame, gCurrentPinballGame, sizeof(*gCurrentPinballGame)); + gCurrentPinballGame->ball = &gCurrentPinballGame->ballStates[0]; + gCurrentPinballGame->secondaryBall = &gCurrentPinballGame->ballStates[0]; + var2 = gMain.idleDemoVariant; if ((var2 & 0x3) == 1) { - gCurrentPinballGame->unk614 = 0; - gCurrentPinballGame->unk208 = 0; - gCurrentPinballGame->unk20A = 0; - gCurrentPinballGame->unk1C6 = 0; - gCurrentPinballGame->unk1C8 = 0; - gCurrentPinballGame->unk1CC = 0; - gCurrentPinballGame->unk1CA = 0; - gCurrentPinballGame->unk1D4 = 0; - gCurrentPinballGame->unk1D6 = -4; - gCurrentPinballGame->unk1D8 = 256; - gCurrentPinballGame->unk1DA = 256; - gCurrentPinballGame->unk1CE = 0; - gCurrentPinballGame->unk1D0 = 0; + gCurrentPinballGame->pikaSpinMomentum = 0; + gCurrentPinballGame->catchOverlayFrameTimer = 0; + gCurrentPinballGame->catchOverlayKeyframeIndex = 0; + gCurrentPinballGame->pikaChargeTarget = 0; + gCurrentPinballGame->pikaChargeProgress = 0; + gCurrentPinballGame->prevCatchCounterValue = 0; + gCurrentPinballGame->catchCounterValue = 0; + gCurrentPinballGame->catchCounterXShift = 0; + gCurrentPinballGame->catchCounterSlideOffsetY = -4; + gCurrentPinballGame->catchCounterAnimState = 256; + gCurrentPinballGame->catchCounterScaleY = 256; + gCurrentPinballGame->pikachuAnimTimer = 0; + gCurrentPinballGame->catchCounterSlideTimer = 0; } } if (arg0 != 0) { - gMain.selectedField = gCurrentPinballGame->field; - gMain.unk5 = gCurrentPinballGame->unk10FE; - gMain.unk6 = gCurrentPinballGame->unk10FF; - gMain.modeChangeFlags = gCurrentPinballGame->unk1101; - gMain.unk10 = gCurrentPinballGame->unk1102; - gMain.unk11 = gCurrentPinballGame->unk1103; - gMain.unk12 = gCurrentPinballGame->unk1320; - gMain.unk14 = gCurrentPinballGame->unk1322; - gMain.unk28 = gCurrentPinballGame->unk1324; - gMain.unk2A = gCurrentPinballGame->unk1326; - gMain.blendControl = gCurrentPinballGame->unk1110; - gMain.blendAlpha = gCurrentPinballGame->unk1112; - gMain.blendBrightness = gCurrentPinballGame->unk1114; - gMain.unk2C = gCurrentPinballGame->unk1116; - gMain.vCount = gCurrentPinballGame->unk1118; + gMain.selectedField = gCurrentPinballGame->savedField; + gMain.tempField = gCurrentPinballGame->savedTempField; + gMain.isBonusField = gCurrentPinballGame->savedIsBonusField; + gMain.modeChangeFlags = gCurrentPinballGame->savedModeChangeFlags; + gMain.debugMenuCursorIndex = gCurrentPinballGame->savedDebugMenuCursorIndex; + gMain.pendingModeChangeType = gCurrentPinballGame->savedPendingModeChangeType; + gMain.animationTimer = gCurrentPinballGame->savedAnimationTimer; + gMain.modeChangeDelayTimer = gCurrentPinballGame->savedModeChangeDelayTimer; + gMain.shopPanelActive = gCurrentPinballGame->savedShopPanelActive; + gMain.shopPanelSlideOffset = gCurrentPinballGame->savedShopPanelSlideOffset; + gMain.blendControl = gCurrentPinballGame->savedBlendControl; + gMain.blendAlpha = gCurrentPinballGame->savedBlendAlpha; + gMain.blendBrightness = gCurrentPinballGame->savedBlendBrightness; + gMain.scoreOverlayActive = gCurrentPinballGame->savedScoreOverlayActive; + gMain.vCount = gCurrentPinballGame->savedVCount; gMain.bgOffsets[0] = gCurrentPinballGame->bgOffsets0; gMain.bgOffsets[1] = gCurrentPinballGame->bgOffsets1; gMain.bgOffsets[2] = gCurrentPinballGame->bgOffsets2; @@ -1074,79 +1074,79 @@ void sub_4B678(u16 arg0) for (i = 0; i < NUM_EREADER_CARDS; i++) gMain.eReaderBonuses[i] = gCurrentPinballGame->eReaderBonuses[i]; - gCurrentPinballGame->unk1100 = 1; + gCurrentPinballGame->startButtonDisabled = 1; if (arg0 == 1 && gMain.selectedField < MAIN_FIELD_COUNT) { - gCurrentPinballGame->unk68 = gCurrentPinballGame->unk4E + - gCurrentPinballGame->unk121 + - gCurrentPinballGame->unk5FC + - gCurrentPinballGame->unkE6; + gCurrentPinballGame->cameraYViewport = gCurrentPinballGame->cameraBaseY + + gCurrentPinballGame->tiltYOffset + + gCurrentPinballGame->cameraScrollOffset + + gCurrentPinballGame->cameraYAdjust; } } else { - gCurrentPinballGame->unk68 = gCurrentPinballGame->unk6A; + gCurrentPinballGame->cameraYViewport = gCurrentPinballGame->hudSpriteBaseY; } - gCurrentPinballGame->unk1D = 0; - gMain.unkD = 0; + gCurrentPinballGame->fadeSubState = 0; + gMain.continueFromSave = 0; loadIntroduction(); - if (gMain.selectedField == FIELD_RUBY && gCurrentPinballGame->unk29E) - sub_46FD4(1); + if (gMain.selectedField == FIELD_RUBY && gCurrentPinballGame->boardCollisionConfigChanged) + SetBoardCollisionConfig(1); if (gMain.selectedField < MAIN_FIELD_COUNT) { for (i = 0; i < 22; i++) { - var0 = i + gCurrentPinballGame->unk64; - var1 = (i + 10 + gCurrentPinballGame->unk64) % 22; + var0 = i + gCurrentPinballGame->ballLaunchSpeed; + var1 = (i + 10 + gCurrentPinballGame->ballLaunchSpeed) % 22; if (var0 < 32) { - DmaCopy16(3, &gUnknown_0200FBB0[var0 * 0x400], (void *)0x6008000 + var1 * 0x400, 0x400); + DmaCopy16(3, &gBoardGfxBuffer[var0 * 0x400], (void *)0x6008000 + var1 * 0x400, 0x400); } else { var0 -= 32; - DmaCopy16(3, &gUnknown_020030A0[var0 * 0x400], (void *)0x6008000 + var1 * 0x400, 0x400); + DmaCopy16(3, &gBoardBGTileBufferAlt[var0 * 0x400], (void *)0x6008000 + var1 * 0x400, 0x400); } } } for (i = 0; i < 0x800; i++) - gUnknown_03005C00[i] = 0x1FF; + gBG0TilemapBuffer[i] = 0x1FF; - DmaCopy16(3, gUnknown_03005C00, (void *)0x6002000, 0x1000); - if (gMain.unk2C) + DmaCopy16(3, gBG0TilemapBuffer, (void *)0x6002000, 0x1000); + if (gMain.scoreOverlayActive) { - if (gCurrentPinballGame->unk13 == 6) + if (gCurrentPinballGame->boardState == 6) { - for (j = 0; j <= gCurrentPinballGame->unk298; j++) + for (j = 0; j <= gCurrentPinballGame->cutsceneTilemapColumn; j++) { for (i = 2; i < 12; i++) - gUnknown_03005C00[(i + 15) * 0x20 + j] = 0xC100; + gBG0TilemapBuffer[(i + 15) * 0x20 + j] = 0xC100; } } else { - for (j = 0; j <= gCurrentPinballGame->unk298; j++) + for (j = 0; j <= gCurrentPinballGame->cutsceneTilemapColumn; j++) { for (i = 1; i < 11; i++) - gUnknown_03005C00[(i + 15) * 0x20 + j] = 0xC100; + gBG0TilemapBuffer[(i + 15) * 0x20 + j] = 0xC100; } } - DmaCopy16(3, gUnknown_03005C00, (void *)0x6002000, 0x800); + DmaCopy16(3, gBG0TilemapBuffer, (void *)0x6002000, 0x800); } - DmaCopy16(3, gCurrentPinballGame->unk74C[gMain.unk6], (void *)OBJ_PLTT, OBJ_PLTT_SIZE); - DmaCopy16(3, gCurrentPinballGame->unkB4C[gMain.unk6], (void *)BG_PLTT, BG_PLTT_SIZE); - DmaCopy16(3, &gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], (void *)OBJ_PLTT + 0x20, 0x20); - sub_4BC34(); + DmaCopy16(3, gCurrentPinballGame->savedObjPalette[gMain.isBonusField], (void *)OBJ_PLTT, OBJ_PLTT_SIZE); + DmaCopy16(3, gCurrentPinballGame->savedBgPalette[gMain.isBonusField], (void *)BG_PLTT, BG_PLTT_SIZE); + DmaCopy16(3, &gBallPalettes[gCurrentPinballGame->ballUpgradeType], (void *)OBJ_PLTT + 0x20, 0x20); + RestoreFieldSpecificGraphics(); switch (gMain.selectedField) { case FIELD_RUBY: RubyBoardProcess_0A_50848(); - sub_4E9F0(gCurrentPinballGame->unk1A5); + LoadShopItemGraphics(gCurrentPinballGame->evolutionShopActive); break; case FIELD_SAPPHIRE: SapphireBoardProcess_0A_50AD4(); @@ -1172,16 +1172,16 @@ void sub_4B678(u16 arg0) } for (i = 0; i < 100; i++) - gMain.spriteGroups[i].available = gCurrentPinballGame->unkF68[gMain.unk6][i]; + gMain.spriteGroups[i].available = gCurrentPinballGame->savedSpriteAvailability[gMain.isBonusField][i]; if (arg0 == 1) { - gCurrentPinballGame->unk0 = 0; - WriteAndVerifySramFast((const u8 *)gCurrentPinballGame, (void *)SRAM + 0x544, sizeof(gCurrentPinballGame->unk0)); + gCurrentPinballGame->saveDataValid = 0; + WriteAndVerifySramFast((const u8 *)gCurrentPinballGame, (void *)SRAM + 0x544, sizeof(gCurrentPinballGame->saveDataValid)); } } -void sub_4BC34(void) +void RestoreFieldSpecificGraphics(void) { s16 i; struct PokemonSpecies *species; @@ -1191,144 +1191,144 @@ void sub_4BC34(void) switch (gMain.selectedField) { case FIELD_RUBY: - sub_4C290(); - sub_4C808(); + RestoreMainFieldDynamicGraphics(); + RestoreRubyBoardTileGraphics(); break; case FIELD_SAPPHIRE: - sub_4C290(); - sub_4CA18(); + RestoreMainFieldDynamicGraphics(); + RestoreSapphireBoardTileGraphics(); break; case FIELD_DUSCLOPS: nullsub_18(); - sub_4CAE8(); + RestoreDusclopsBonusGraphics(); break; case FIELD_KECLEON: nullsub_18(); - sub_4CB0C(); + RestoreKecleonBonusGraphics(); break; case FIELD_KYOGRE: nullsub_18(); - sub_4CB30(); + RestoreKyogreBonusGraphics(); break; case FIELD_GROUDON: nullsub_18(); - sub_4CBB4(); + RestoreGroudonBonusGraphics(); break; case FIELD_RAYQUAZA: nullsub_18(); - sub_4CC58(); + RestoreRayquazaBonusGraphics(); break; case FIELD_SPHEAL: nullsub_18(); - sub_4CD60(); + RestoreSphealBonusGraphics(); break; } - switch (gCurrentPinballGame->unkE4 - 1) + switch (gCurrentPinballGame->activePortraitType - 1) { case 0: - if (gCurrentPinballGame->outLanePikaPosition == 2 && gCurrentPinballGame->unk1C2 == 2) + if (gCurrentPinballGame->outLanePikaPosition == 2 && gCurrentPinballGame->outLaneSide == 2) { - DmaCopy16(3, gUnknown_08395A4C, (void *)0x6015800, 0x2400); + DmaCopy16(3, gPikaSaverFullCoverageGfx, (void *)0x6015800, 0x2400); } else { - DmaCopy16(3, gUnknown_08397E6C, (void *)0x6015800, 0x2400); + DmaCopy16(3, gPikaSaverPartialCoverageGfx, (void *)0x6015800, 0x2400); } break; case 1: - DmaCopy16(3, gUnknown_083A704C, (void *)0x6015800, 0x1000); + DmaCopy16(3, gEggModeTilesGfx, (void *)0x6015800, 0x1000); break; case 2: - DmaCopy16(3, gUnknown_0848FD8C, (void *)0x6015800, 0xCA0); + DmaCopy16(3, gCaptureModeTilesGfx, (void *)0x6015800, 0xCA0); break; case 3: - DmaCopy16(3, gUnknown_086ACEF8[gCurrentPinballGame->unkF2], (void *)0x6015800, 0x25E0); + DmaCopy16(3, gModeBannerTilemaps[gCurrentPinballGame->bannerGfxIndex], (void *)0x6015800, 0x25E0); break; case 4: - DmaCopy16(3, gUnknown_083A07CC, (void *)0x6015800, 0x2000); + DmaCopy16(3, gHatchStartTilesGfx, (void *)0x6015800, 0x2000); break; case 5: - DmaCopy16(3, gUnknown_083A29EC, (void *)0x6015800, 0x800); + DmaCopy16(3, gHatchStage2TilesGfx, (void *)0x6015800, 0x800); break; case 6: - DmaCopy16(3, gUnknown_083A340C, (void *)0x6015800, 0x2000); + DmaCopy16(3, gHatchStage3TilesGfx, (void *)0x6015800, 0x2000); break; case 7: - DmaCopy16(3, gUnknown_083A562C, (void *)0x6015800, 0x1800); + DmaCopy16(3, gHatchFinalTilesGfx, (void *)0x6015800, 0x1800); break; case 8: - DmaCopy16(3, gUnknown_081428D4, (void *)0x6015800, 0x1C00); + DmaCopy16(3, gCaptureScreenTilesGfx, (void *)0x6015800, 0x1C00); break; case 9: - DmaCopy16(3, gUnknown_0839C78C, (void *)0x6015800, 0x1400); + DmaCopy16(3, gSapphireCatchTilesGfx, (void *)0x6015800, 0x1400); break; case 10: - DmaCopy16(3, gUnknown_0839DDAC, (void *)0x6015800, 0x2800); + DmaCopy16(3, gHatchRevealTilesGfx, (void *)0x6015800, 0x2800); break; case 11: - DmaCopy16(3, gUnknown_084FA20C, (void *)0x6015800, 0x280); + DmaCopy16(3, gEggPortraitTilesGfx, (void *)0x6015800, 0x280); break; case 13: for (i = 0; i < 10; i++) { if (gSpeciesInfo[gCurrentPinballGame->currentSpecies].name[i] == ' ') { - DmaCopy16(3, gUnknown_083FFD4C, (void *)0x6015800 + i * 0x40, 0x40); + DmaCopy16(3, gSpaceTileGfx, (void *)0x6015800 + i * 0x40, 0x40); } else { int var0 = gSpeciesInfo[gCurrentPinballGame->currentSpecies].name[i] - 'A'; - DmaCopy16(3, gUnknown_083FF04C[var0], (void *)0x6015800 + i * 0x40, 0x40); + DmaCopy16(3, gAlphabetTilesGfx[var0], (void *)0x6015800 + i * 0x40, 0x40); } } - DmaCopy16(3, gUnknown_084F61EC, (void *)0x6015C00, 0x940); + DmaCopy16(3, gPokemonNameDisplayGfx, (void *)0x6015C00, 0x940); break; case 12: for (i = 0; i < 10; i++) { if (gSpeciesInfo[gCurrentPinballGame->currentSpecies].name[i] == ' ') { - DmaCopy16(3, gUnknown_083FFD4C, (void *)0x6015800 + i * 0x40, 0x40); + DmaCopy16(3, gSpaceTileGfx, (void *)0x6015800 + i * 0x40, 0x40); } else { int var0 = gSpeciesInfo[gCurrentPinballGame->currentSpecies].name[i] - 'A'; - DmaCopy16(3, gUnknown_083FF04C[var0], (void *)0x6015800 + i * 0x40, 0x40); + DmaCopy16(3, gAlphabetTilesGfx[var0], (void *)0x6015800 + i * 0x40, 0x40); } } for (i = 0; i < 10; i++) { - if (gUnknown_086ACFE0[i] == ' ') + if (gCaughtTextChars[i] == ' ') { - DmaCopy16(3, gUnknown_083FFD4C, (void *)0x6015800 + (i + 10) * 0x40, 0x40); + DmaCopy16(3, gSpaceTileGfx, (void *)0x6015800 + (i + 10) * 0x40, 0x40); } else { - int var0 = gUnknown_086ACFE0[i] - 'A'; - DmaCopy16(3, gUnknown_083FF04C[var0], (void *)0x6015800 + (i + 10) * 0x40, 0x40); + int var0 = gCaughtTextChars[i] - 'A'; + DmaCopy16(3, gAlphabetTilesGfx[var0], (void *)0x6015800 + (i + 10) * 0x40, 0x40); } } break; case 14: - DmaCopy16(3, gEvoItemAppear_GfxList[gCurrentPinballGame->unk25F], (void *)0x6015800, 0x1C00); + DmaCopy16(3, gEvoItemAppear_GfxList[gCurrentPinballGame->evoItemGfxIndex], (void *)0x6015800, 0x1C00); break; case 15: - DmaCopy16(3, gUnknown_08158284, (void *)0x6015800, 0x2400); + DmaCopy16(3, gBoardActionTilesGfx, (void *)0x6015800, 0x2400); break; case 16: - DmaCopy16(3, gUnknown_083A562C, (void *)0x6015800, 0x1800); + DmaCopy16(3, gHatchFinalTilesGfx, (void *)0x6015800, 0x1800); break; case 17: - DmaCopy16(3, gUnknown_084F61EC, (void *)0x6015C00, 0x940); - if (gCurrentPinballGame->unk1A5 == 0) + DmaCopy16(3, gPokemonNameDisplayGfx, (void *)0x6015C00, 0x940); + if (gCurrentPinballGame->evolutionShopActive == 0) { - var1 = gUnknown_086AD000[gUnknown_086AD2DE[gCurrentPinballGame->unk1A6]]; + var1 = gShopItemData[gShopCursorToItemMap[gCurrentPinballGame->shopItemCursor]]; var2 = var1[3] / 10; - DmaCopy16(3, gUnknown_08480E0C[var2], (void *)0x6015DA0, 0x40); + DmaCopy16(3, gDecimalDigitTilesGfx[var2], (void *)0x6015DA0, 0x40); var3 = var1[3] % 10; - DmaCopy16(3, gUnknown_08480E0C[var3], (void *)0x6015E60, 0x40); + DmaCopy16(3, gDecimalDigitTilesGfx[var3], (void *)0x6015E60, 0x40); } break; case 18: @@ -1340,13 +1340,13 @@ void sub_4BC34(void) case 20: if (gMain.selectedField == FIELD_RUBY) { - DmaCopy16(3, gUnknown_081BCAA4, (void *)0x6015800, 0x1800); - DmaCopy16(3, gUnknown_081BE2C4, (void *)OBJ_PLTT + 0x1C0, 0x20); + DmaCopy16(3, gRubyBoardBonusGfx, (void *)0x6015800, 0x1800); + DmaCopy16(3, gRubyBoardBonusObjPalette, (void *)OBJ_PLTT + 0x1C0, 0x20); } else { - DmaCopy16(3, gUnknown_081BE4C4, (void *)0x6015800, 0x1800); - DmaCopy16(3, gUnknown_081BFCE4, (void *)OBJ_PLTT + 0x1C0, 0x20); + DmaCopy16(3, gSapphireBoardBonusGfx, (void *)0x6015800, 0x1800); + DmaCopy16(3, gSapphireBoardBonusObjPalette, (void *)OBJ_PLTT + 0x1C0, 0x20); } break; case 21: @@ -1355,67 +1355,67 @@ void sub_4BC34(void) } } -void sub_4C290(void) +void RestoreMainFieldDynamicGraphics(void) { s16 i; s16 var0; - sub_28AE0(); - sub_28BFC(); + LoadCatchSpriteGraphics(); + LoadEggSpriteGraphics(); for (i = 0; i <= 1; i++) { var0 = gCurrentPinballGame->flipper[i].position / 2; - DmaCopy16(3, gUnknown_083FE44C[var0], ((i * 0x200) + 0x06010000), 0x200); + DmaCopy16(3, gFlipperTileGraphics[var0], ((i * 0x200) + 0x06010000), 0x200); } - var0 = gCurrentPinballGame->ball->unkA / 0x1000; - DmaCopy16(3, gUnknown_083BB16C[var0], 0x06010400, 0x80); + var0 = gCurrentPinballGame->ball->spinAngle / 0x1000; + DmaCopy16(3, gBallRotationTileGraphics[var0], 0x06010400, 0x80); for (i = 0; i <= 1; i++) { - DmaCopy16(3, gUnknown_084C07EC + ((var0 =gCurrentPinballGame->unk744[i]) * 0x180), 0x06010480 + (i * 0x180), 0x180); + DmaCopy16(3, gPikaSaverTilesGfx + ((var0 =gCurrentPinballGame->pikaSaverTileIndex[i]) * 0x180), 0x06010480 + (i * 0x180), 0x180); } - var0 = gCurrentPinballGame->unk1E5; - DmaCopy16(3, gMainBoardPikaSpinner_Gfx[var0 = gCurrentPinballGame->unk1E5], 0x06010780, 0x120); - var0 = gCurrentPinballGame->unk1CA; - DmaCopy16(3, gUnknown_084C00EC[var0], 0x06010AE0, 0x80); + var0 = gCurrentPinballGame->pikachuSpinFrame; + DmaCopy16(3, gMainBoardPikaSpinner_Gfx[var0 = gCurrentPinballGame->pikachuSpinFrame], 0x06010780, 0x120); + var0 = gCurrentPinballGame->catchCounterValue; + DmaCopy16(3, gCatchCounterDigitTilesGfx[var0], 0x06010AE0, 0x80); for (i = 0; i <= 1; i++) { - switch (gCurrentPinballGame->unk747[i]) + switch (gCurrentPinballGame->portraitRenderMode[i]) { case 0: - DmaCopy16(3, gUnknown_0848D68C[gCurrentPinballGame->unk749[i]], 0x06010CA0 + (i * 0x300), 0x300); + DmaCopy16(3, gPortraitGenericGraphics[gCurrentPinballGame->portraitGfxIndex[i]], 0x06010CA0 + (i * 0x300), 0x300); gCurrentPinballGame->ball += 0; //TODO: Dumb match is still a match... break; case 9: - if (gCurrentPinballGame->unk25C > 0) + if (gCurrentPinballGame->evoChainPosition > 0) { - if (gMain_saveData.pokedexFlags[gCurrentPinballGame->unk59A] == 0) + if (gMain_saveData.pokedexFlags[gCurrentPinballGame->evoTargetSpecies] == 0) { - gCurrentPinballGame->unk749[i] = 205; - DmaCopy16(3, gMonPortraitGroupPals[gCurrentPinballGame->unk749[i] / 15] + (gCurrentPinballGame->unk749[i] % 15) * 0x20, 0x050003A0, 0x20); + gCurrentPinballGame->portraitGfxIndex[i] = 205; + DmaCopy16(3, gMonPortraitGroupPals[gCurrentPinballGame->portraitGfxIndex[i] / 15] + (gCurrentPinballGame->portraitGfxIndex[i] % 15) * 0x20, 0x050003A0, 0x20); } - else if (gMain_saveData.pokedexFlags[gCurrentPinballGame->unk59A] <= 3) + else if (gMain_saveData.pokedexFlags[gCurrentPinballGame->evoTargetSpecies] <= 3) { - gCurrentPinballGame->unk749[i] = gCurrentPinballGame->unk59A; + gCurrentPinballGame->portraitGfxIndex[i] = gCurrentPinballGame->evoTargetSpecies; DmaCopy16(3, gMonPortraitGroupPals[0] + 15 * 0x20, 0x050003A0, 0x20); } else { - gCurrentPinballGame->unk749[i] = gCurrentPinballGame->unk59A; - DmaCopy16(3, gMonPortraitGroupPals[gCurrentPinballGame->unk749[i] / 15] + (gCurrentPinballGame->unk749[i] % 15) * 0x20, 0x050003A0, 0x20); + gCurrentPinballGame->portraitGfxIndex[i] = gCurrentPinballGame->evoTargetSpecies; + DmaCopy16(3, gMonPortraitGroupPals[gCurrentPinballGame->portraitGfxIndex[i] / 15] + (gCurrentPinballGame->portraitGfxIndex[i] % 15) * 0x20, 0x050003A0, 0x20); } } else { - gCurrentPinballGame->unk749[i] = gCurrentPinballGame->currentSpecies; - DmaCopy16(3, gMonPortraitGroupPals[gCurrentPinballGame->unk749[i] / 15] + ((gCurrentPinballGame->unk749[i] % 15) * 0x20), 0x050003A0, 0x20); + gCurrentPinballGame->portraitGfxIndex[i] = gCurrentPinballGame->currentSpecies; + DmaCopy16(3, gMonPortraitGroupPals[gCurrentPinballGame->portraitGfxIndex[i] / 15] + ((gCurrentPinballGame->portraitGfxIndex[i] % 15) * 0x20), 0x050003A0, 0x20); } case 3: - DmaCopy16(3, gMonPortraitGroupGfx[gCurrentPinballGame->unk749[i] / 15] + (gCurrentPinballGame->unk749[i] % 15) * 0x300, 0x06010CA0 + (i * 0x18), 0x300); + DmaCopy16(3, gMonPortraitGroupGfx[gCurrentPinballGame->portraitGfxIndex[i] / 15] + (gCurrentPinballGame->portraitGfxIndex[i] % 15) * 0x300, 0x06010CA0 + (i * 0x18), 0x300); break; case 1: case 2: @@ -1423,157 +1423,157 @@ void sub_4C290(void) case 6: case 7: case 8: - DmaCopy16(3, gUnknown_083A8EEC[gCurrentPinballGame->unk749[i]], 0x06010CA0 + (i * 0x300), 0x300); + DmaCopy16(3, gPortraitAnimFrameGraphics[gCurrentPinballGame->portraitGfxIndex[i]], 0x06010CA0 + (i * 0x300), 0x300); break; } } - if (gCurrentPinballGame->unk13 == 4) + if (gCurrentPinballGame->boardState == 4) { - switch (gCurrentPinballGame->unk17) + switch (gCurrentPinballGame->boardSubState) { case 7: case 8: - if ((u32) gCurrentPinballGame->unk5A9 > 4) + if ((u32) gCurrentPinballGame->captureFlashTimer > 4) { - DmaCopy16(3, gUnknown_02031060, 0x06010CA0, 0x480); + DmaCopy16(3, gCatchSpriteFlashGfx, 0x06010CA0, 0x480); } else { - DmaCopy16(3, gUnknown_02030760, 0x06010CA0, 0x480); + DmaCopy16(3, gCatchSpriteGfxBuffer, 0x06010CA0, 0x480); } break; case 9: - if (gCurrentPinballGame->unk5A8 <= 31) + if (gCurrentPinballGame->captureSequenceTimer <= 31) { - if (gCurrentPinballGame->unk5A9 > 4) + if (gCurrentPinballGame->captureFlashTimer > 4) { - DmaCopy16(3, gUnknown_02031060, 0x06010CA0, 0x480); + DmaCopy16(3, gCatchSpriteFlashGfx, 0x06010CA0, 0x480); } else { - DmaCopy16(3, gUnknown_02030760, 0x06010CA0, 0x480); + DmaCopy16(3, gCatchSpriteGfxBuffer, 0x06010CA0, 0x480); } } break; } } - if (gCurrentPinballGame->unk13 == 8) + if (gCurrentPinballGame->boardState == 8) { - switch (gCurrentPinballGame->unk17) + switch (gCurrentPinballGame->boardSubState) { case 2: - if (gCurrentPinballGame->unk5A9 > 4U) + if (gCurrentPinballGame->captureFlashTimer > 4U) { - DmaCopy16(3, gUnknown_02031060, 0x06010CA0, 0x480); + DmaCopy16(3, gCatchSpriteFlashGfx, 0x06010CA0, 0x480); } else { - DmaCopy16(3, gUnknown_02030760, 0x06010CA0, 0x480); + DmaCopy16(3, gCatchSpriteGfxBuffer, 0x06010CA0, 0x480); } break; case 3: - if (gCurrentPinballGame->unk5A8 <= 31) + if (gCurrentPinballGame->captureSequenceTimer <= 31) { - if (gCurrentPinballGame->unk5A9 > 4U) + if (gCurrentPinballGame->captureFlashTimer > 4U) { - DmaCopy16(3, gUnknown_02031060, 0x06010CA0, 0x480); + DmaCopy16(3, gCatchSpriteFlashGfx, 0x06010CA0, 0x480); } else { - DmaCopy16(3, gUnknown_02030760, 0x06010CA0, 0x480); + DmaCopy16(3, gCatchSpriteGfxBuffer, 0x06010CA0, 0x480); } } break; } } - DmaCopy16(3, gMainStageBonusTrap_Gfx[gCurrentPinballGame->unk20B], 0x060113C0, 0x300); - DmaCopy16(3, gUnknown_086AD49C[gCurrentPinballGame->unk25F] + var0 * 0x200, 0x060116C0, 0x200); - DmaCopy16(3, gUnknown_084FD18C[(s16)gUnknown_086AD2EE[gCurrentPinballGame->unk1ED][3]], 0x06011CE0, 0x200); - DmaCopy16(3, gUnknown_083BD36C[gCurrentPinballGame->unk6E], 0x06011EE0, 0x200); + DmaCopy16(3, gMainStageBonusTrap_Gfx[gCurrentPinballGame->bonusTrapAnimFrame], 0x060113C0, 0x300); + DmaCopy16(3, gEvoItemTilesGfxPtrs[gCurrentPinballGame->evoItemGfxIndex] + var0 * 0x200, 0x060116C0, 0x200); + DmaCopy16(3, gEggFrameTilesGfx[(s16)gEggAnimationFrameData[gCurrentPinballGame->eggAnimFrameIndex][3]], 0x06011CE0, 0x200); + DmaCopy16(3, gBallShadowTileGraphics[gCurrentPinballGame->ballShadowTileIndex], 0x06011EE0, 0x200); return; } -void sub_4C808(void) +void RestoreRubyBoardTileGraphics(void) { s16 i; s16 var0; - var0 = gUnknown_086AD2EE[gCurrentPinballGame->unk1ED][2]; + var0 = gEggAnimationFrameData[gCurrentPinballGame->eggAnimFrameIndex][2]; DmaCopy16(3, gRubyBoardHatchCave_Gfx[var0], (void *)0x60122A0, 0x480); var0 = (gMain.systemFrameCount % 50) / 25; - DmaCopy16(3, gUnknown_083C3C2C[var0], (void *)0x6012720, 0x300); - DmaCopy16(3, gRubyBoardSharpedo_Gfx[gCurrentPinballGame->unk2F5], (void *)0x6012C20, 0x260); + DmaCopy16(3, gRubyFlashingDecorationTiles[var0], (void *)0x6012720, 0x300); + DmaCopy16(3, gRubyBoardSharpedo_Gfx[gCurrentPinballGame->catchHoleTileVariant], (void *)0x6012C20, 0x260); for (i = 0; i < 2; i++) - DmaCopy16(3, gUnknown_083C806C[var0], (void *)0x6010000 + (0x174 + i * 8) * 0x20, 0x100); + DmaCopy16(3, gRubyFlashingTiles_Secondary[var0], (void *)0x6010000 + (0x174 + i * 8) * 0x20, 0x100); - var0 = gCurrentPinballGame->unk2F1 & 0xF; + var0 = gCurrentPinballGame->shopDoorCurrentFrame & 0xF; DmaCopy16(3, gRubyBoardShopDoor_Gfx[var0], (void *)0x6013180, 0x180); - if (gCurrentPinballGame->unk2DA < 3) - gCurrentPinballGame->unk746 = 0; + if (gCurrentPinballGame->eggCaveState < 3) + gCurrentPinballGame->cyndaquilFrame = 0; else - gCurrentPinballGame->unk746 = 1; + gCurrentPinballGame->cyndaquilFrame = 1; - DmaCopy16(3, gRubyStageCyndaquil_Gfx[gCurrentPinballGame->unk746], (void *)0x6013300, 0x280); - var0 = gUnknown_086AD456[gCurrentPinballGame->unk1A5][(gCurrentPinballGame->unk1B4 % 42) / 6]; + DmaCopy16(3, gRubyStageCyndaquil_Gfx[gCurrentPinballGame->cyndaquilFrame], (void *)0x6013300, 0x280); + var0 = gEvoShopAnimFrames[gCurrentPinballGame->evolutionShopActive][(gCurrentPinballGame->shopAnimTimer % 42) / 6]; DmaCopy16(3, gRubyBoardShop_Gfx[var0], (void *)0x6013D00, 0x500); } -void sub_4CA18(void) +void RestoreSapphireBoardTileGraphics(void) { s16 index; - switch (gCurrentPinballGame->unk346) + switch (gCurrentPinballGame->holeLetterSystemState) { case 0: case 1: case 2: - index = gCurrentPinballGame->unk345; - DmaCopy16(3, gUnknown_08490A4C[index], (void *)0x600D900, 0x440); + index = gCurrentPinballGame->holeLetterCount; + DmaCopy16(3, gHoleIndicatorTileGfx[index], (void *)0x600D900, 0x440); break; case 3: case 4: index = 15; - DmaCopy16(3, gUnknown_08490A4C[index], (void *)0x600D900, 0x440); + DmaCopy16(3, gHoleIndicatorTileGfx[index], (void *)0x600D900, 0x440); break; case 5: - index = gUnknown_086AE5A0[gCurrentPinballGame->unk345][0]; - DmaCopy16(3, gUnknown_08490A4C[index], (void *)0x600D900, 0x440); + index = gHoleAnimKeyframeData[gCurrentPinballGame->holeLetterCount][0]; + DmaCopy16(3, gHoleIndicatorTileGfx[index], (void *)0x600D900, 0x440); break; case 6: break; } } -void sub_4CAE8(void) +void RestoreDusclopsBonusGraphics(void) { DmaCopy16(3, gDusclopsBonusClear_Gfx, (void *)0x6015800, 0x2000); } -void sub_4CB0C(void) +void RestoreKecleonBonusGraphics(void) { DmaCopy16(3, gKecleonBonusClear_Gfx, (void *)0x6015800, 0x2000); } -void sub_4CB30(void) +void RestoreKyogreBonusGraphics(void) { DmaCopy16(3, gKyogreBonusClear_Gfx, (void *)0x6015800, 0x2000); DmaCopy16( 3, - gMonPortraitGroupGfx[gCurrentPinballGame->unk749[0] / 15] + (gCurrentPinballGame->unk749[0] % 15) * 0x300, + gMonPortraitGroupGfx[gCurrentPinballGame->portraitGfxIndex[0] / 15] + (gCurrentPinballGame->portraitGfxIndex[0] % 15) * 0x300, (void *)0x6010CA0, 0x300 ); } -void sub_4CBB4(void) +void RestoreGroudonBonusGraphics(void) { - if (gCurrentPinballGame->unk13 < 2) + if (gCurrentPinballGame->boardState < 2) { - DmaCopy16(3, gUnknown_0849F1CC, (void *)0x6015800, 0x2000); + DmaCopy16(3, gGroudonBoardBackgroundGfx, (void *)0x6015800, 0x2000); } else { @@ -1582,53 +1582,53 @@ void sub_4CBB4(void) DmaCopy16( 3, - gMonPortraitGroupGfx[gCurrentPinballGame->unk749[0] / 15] + (gCurrentPinballGame->unk749[0] % 15) * 0x300, + gMonPortraitGroupGfx[gCurrentPinballGame->portraitGfxIndex[0] / 15] + (gCurrentPinballGame->portraitGfxIndex[0] % 15) * 0x300, (void *)0x6010CA0, 0x300 ); } -void sub_4CC58(void) +void RestoreRayquazaBonusGraphics(void) { u8 var0; - if (gCurrentPinballGame->unk13 == 0) + if (gCurrentPinballGame->boardState == 0) { - DmaCopy16(3, gUnknown_083C5A2C, (void *)0x6015800, 0x2800); + DmaCopy16(3, gRayquazaSkyBackgroundGfx, (void *)0x6015800, 0x2800); } - else if (gCurrentPinballGame->unk13 == 1) + else if (gCurrentPinballGame->boardState == 1) { - DmaCopy16(3, gUnknown_084A856C, (void *)0x6015800, 0x1C00); + DmaCopy16(3, gRayquazaWindBoardGfx, (void *)0x6015800, 0x1C00); } else { DmaCopy16(3, gRayquazaBonusClear_Gfx, (void *)0x6015800, 0x2000); } - var0 = gCurrentPinballGame->unk3DC - 2; + var0 = gCurrentPinballGame->bossEntityState - 2; if (var0 > 9) { - DmaCopy16(3, gUnknown_084AA18C, (void *)0x6011620, 0x860); + DmaCopy16(3, gRayquazaSpriteSheet, (void *)0x6011620, 0x860); } DmaCopy16( 3, - gMonPortraitGroupGfx[gCurrentPinballGame->unk749[0] / 15] + (gCurrentPinballGame->unk749[0] % 15) * 0x300, + gMonPortraitGroupGfx[gCurrentPinballGame->portraitGfxIndex[0] / 15] + (gCurrentPinballGame->portraitGfxIndex[0] % 15) * 0x300, (void *)0x6010CA0, 0x300 ); } -void sub_4CD60(void) +void RestoreSphealBonusGraphics(void) { s16 i; int var0; u16 var1; for (i = 0; i < 0x800; i++) - gUnknown_03005C00[0x400 + i] = 0x200; + gBG0TilemapBuffer[0x400 + i] = 0x200; - DmaCopy16(3, &gUnknown_03005C00[0x400], (void *)0x6001000, 0x1000); + DmaCopy16(3, &gBG0TilemapBuffer[0x400], (void *)0x6001000, 0x1000); gMain.blendControl = 0x1C42; gMain.blendAlpha = 0xC04; for (i = 0; i < 0x140; i++) @@ -1640,16 +1640,16 @@ void sub_4CD60(void) var0 = (var0 >> 5) << 5; var1 = i - var0 - 2; if (var1 < 28) - gUnknown_03005C00[0x800 + i] = 0x9000; + gBG0TilemapBuffer[0x800 + i] = 0x9000; } gMain.bgOffsets[1].xOffset = 8; gMain.bgOffsets[1].yOffset = 126; - DmaCopy16(3, &gUnknown_03005C00[0x800], (void *)0x6001140, 0x280); + DmaCopy16(3, &gBG0TilemapBuffer[0x800], (void *)0x6001140, 0x280); for (i = 0; i < 0x800; i++) - gUnknown_03005C00[i] = 0x1FF; + gBG0TilemapBuffer[i] = 0x1FF; - DmaCopy16(3, gUnknown_084B77EC, (void *)0x6015800, 0x800); + DmaCopy16(3, gSphealResultsScreenGfx, (void *)0x6015800, 0x800); } void nullsub_18(void) diff --git a/src/pokedex.c b/src/pokedex.c index 9e84ba4..bfcff94 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -29,52 +29,52 @@ enum PokedexStates POKEDEX_STATE_RETURN_TO_TITLE, }; -void sub_5174(void); +void RefreshPokedexListDisplay(void); static void PokedexListScrollUp(void); static void PokedexListScrollDown(void); static void PokedexListScrollUpFast(void); static void PokedexListScrollDownFast(void); void Pokedex_CheckDeleteKeyComboPressed(void); -void sub_5064(void); -void sub_51CC(void); -static s16 sub_5EA4(void); -s16 sub_5EC8(void); -void sub_70E0(s16, u32); -void sub_88E4(void); -void sub_51FC(void); +void UpdateMonSpriteVisibility(void); +void RefreshMonPreviewSprite(void); +static s16 Pokedex_ProcessLinkExchange(void); +s16 SendLinkPokedexData(void); +void PrintDexDescription(s16, u32); +void LoadPokedexFlagsFromSave(void); +void RenderPokedexSprites(void); static void RenderLinkGraphics(void); -static void sub_5E60(void); -int sub_639C(void); -static int sub_5EEC(void); -static int sub_6144(void); -static int sub_65DC(void); +static void InitLinkTransferState(void); +int MasterReceivePokedexFlags(void); +static int MasterSendPokedexFlags(void); +static int ClientSendPokedexFlags(void); +static int ClientReceivePokedexFlags(void); static void PrintSelectedMonDexNum(s16); static void PrintSeenOwnedTotals(s16, s16); -void sub_71DC(int, int, int); +void BlitGlyphToTileBuffer(int, int, int); void PrintDexNumbersFromListPosition(s16); static void PrintCaughtBallFromListPosition(s16); -void sub_6F78(s16); +void LoadMonPortrait(s16); -extern u8 *gUnknown_086B15B4[]; -extern u8 *gUnknown_086BB6F4[]; +extern u8 *gMonIconPalettes[]; +extern u8 *gCatchSpriteGfxPtrs[]; -extern u16 gUnknown_0201C180; -extern u16 gUnknown_0202C5B4; -extern s8 gUnknown_0201C1BC; -extern s8 gUnknown_0202C544; -extern s8 gUnknown_0202BECC; -extern u16 gUnknown_0202BE30[]; -extern u16 gUnknown_0201B130[]; +extern u16 gPokedexLinkSendCounter; +extern u16 gPokedexLinkChunkIndex; +extern s8 gPokedexMasterHandshakeState; +extern s8 gPokedexClientHandshakeState; +extern s8 gPokedexHandshakeRetryCount; +extern u16 gGlyphUpperRowBuffer[]; +extern u16 gGlyphLowerRowBuffer[]; -extern const struct SpriteSet *const gUnknown_086A6148[]; -extern u16 gUnknown_0202BF08; -extern const u16 gUnknown_086A5DDA[][4]; -extern const u16 gUnknown_086A5DF2[][20]; -extern const s16 gUnknown_086A6356[]; -extern const u16 gUnknown_086A5EE2[][51]; -extern const s16 gUnknown_086A6014[][51]; -extern const u16 gUnknown_086A5E12[][4]; -extern s16 gUnknown_086A64F0[]; +extern const struct SpriteSet *const gPokedexSpriteSets[]; +extern u16 gPokedexScrollbarY; +extern const u16 gPokedexAnimBaseTileNums[][4]; +extern const u16 gPokedexCatchAnimTileOffsets[][20]; +extern const s16 gPokedexCatchAnimIndices[]; +extern const u16 gPokedexHatchAnimTileOffsets[][51]; +extern const s16 gPokedexAnimFrameDurations[][51]; +extern const u16 gPokedexAnimTileDeltas[][4]; +extern s16 gPokedexListNameVramOffsets[]; enum PokedexPopupType { POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT = 0, @@ -109,7 +109,7 @@ void PokedexMain(void) void LoadPokedexGraphics(void) { - ResetSomeGraphicsRelatedStuff(); + ResetDisplayState(); REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_FORCED_BLANK | DISPCNT_OBJ_ON; REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_16COLOR | BGCNT_SCREENBASE(0) | BGCNT_TXT256x256; @@ -124,82 +124,82 @@ void LoadPokedexGraphics(void) DmaCopy16(3, gPokedexBgText_Gfx, (void *)BG_CHAR_ADDR(1), 0x4400); DmaCopy16(3, gPokedexBg_Gfx, (void *)BG_CHAR_ADDR(3), 0x1400); DmaCopy16(3, gPokedexBackground_Pals, (void *)BG_PLTT, BG_PLTT_SIZE); - DmaCopy16(3, gPokedexBg1_Tilemap, gUnknown_03005C00, BG_SCREEN_SIZE); - DmaCopy16(3, gPokedexBg2_Tilemap, gUnknown_02019C40, BG_SCREEN_SIZE); + DmaCopy16(3, gPokedexBg1_Tilemap, gBG0TilemapBuffer, BG_SCREEN_SIZE); + DmaCopy16(3, gPokedexBg2_Tilemap, gPokedexVramBuffer, BG_SCREEN_SIZE); DmaCopy16(3, gPokedexBg3_Tilemap, (void *)BG_SCREEN_ADDR(2), BG_SCREEN_SIZE); DmaCopy16(3, gPokedexSprites_Pals, (void *)OBJ_PLTT, OBJ_PLTT_SIZE); DmaCopy16(3, gPokedexSprites_Gfx, (void *)OBJ_VRAM0, 0x6C20); - sub_3FAC(); + InitPokedexState(); PrintSeenOwnedTotals(gPokedexNumSeen, gPokedexNumOwned); PrintSelectedMonDexNum(gPokedexSelectedMon); PrintDexNumbersFromListPosition(gPokedexListPosition); PrintCaughtBallFromListPosition(gPokedexListPosition); - sub_6F78(gPokedexSelectedMon); - sub_8974(gPokedexSelectedMon); - sub_8A78(gPokedexSelectedMon); + LoadMonPortrait(gPokedexSelectedMon); + LoadMonAnimationSprite(gPokedexSelectedMon); + CheckMonHasAnimation(gPokedexSelectedMon); - gUnknown_02019C40[0x134] = 0x59; + gPokedexVramBuffer[0x134] = 0x59; - DmaCopy16(3, gUnknown_03005C00, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE); - DmaCopy16(3, gUnknown_02019C40, (void *)BG_SCREEN_ADDR(1), BG_SCREEN_SIZE); + DmaCopy16(3, gBG0TilemapBuffer, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE); + DmaCopy16(3, gPokedexVramBuffer, (void *)BG_SCREEN_ADDR(1), BG_SCREEN_SIZE); - sub_51FC(); - sub_0CBC(); - sub_024C(); + RenderPokedexSprites(); + EnableVBlankInterrupts(); + FadeInScreen(); gMain.subState = POKEDEX_STATE_HANDLE_LIST_INPUT; m4aSongNumStart(MUS_POKEDEX); } -void sub_3FAC(void) +void InitPokedexState(void) { s32 i; gPokedexSelectedMon = 0; gPokedexListPosition = 0; - gUnknown_0201A448 = 0; - gUnknown_0202BF00 = 0; - gUnknown_0202A57C = 0; - gUnknown_0201A4F0 = 0; - gUnknown_0202BE20 = 0; + gPokedexAnimatedIconFrame = 0; + gPokedexAnimatedIconTimer = 0; + gPokedexCursorOffset = 0; + gPokedexCursorBlinkOffset = 0; + gPokedexBlinkTimer = 0; gPokedexScrollWaitFrames = 0; - gUnknown_02019C24 = 0; - gUnknown_0202BF0C = 0; - gUnknown_0201A440 = 0; - gUnknown_0202C5E8 = 0; - gUnknown_0202BEF4 = 0; - gUnknown_0202A588 = 1; - gUnknown_0202A55C = 1; + gPokedexScrollActive = 0; + gPokedexSpriteAnimFrame = 0; + gPokedexSpriteAnimTimer = 0; + gPokedexDetailFrameCount = 0; + gPokedexPageIndicatorTimer = 0; + gPokedexShowAnimSprite = 1; + gPokedexShowPortrait = 1; - gUnknown_0202A568[0] = 0; - gUnknown_0202A568[1] = 0; + gPokedexShowCatchHatch[0] = 0; + gPokedexShowCatchHatch[1] = 0; - gUnknown_0202BF14 = 0; - gUnknown_0202A558 = 0; - gUnknown_0202BEE0 = 0; - gUnknown_0202BF04 = 1; + gPokedexSpriteCategory = 0; + gPokedexInfoWindowSlideStep = 0; + gPokedexButtonPromptFrame = 0; + gPokedexShowButtonPrompt = 1; - sub_88E4(); - if (sub_FD20() == 1) + LoadPokedexFlagsFromSave(); + if (CheckAllPokemonCaught() == 1) { - gUnknown_0202C590 = 1; + gPokedexShowLinkCableIcon = 1; } else { - gUnknown_0202C590 = 0; + gPokedexShowLinkCableIcon = 0; } - gUnknown_0202BEC4 = 0; - Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT; - gUnknown_0201B120 = 0; + gPokedexShowPopupWindow = 0; + gPokedexPopupTypeIndex = POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT; + gPokedexLinkStateTimer = 0; gPokedex_EraseSaveDataAccessCounter = 0; gPokedex_EraseSaveDataAccessStep = 0; - gUnknown_0202C794 = 0; - gUnknown_0201C1B4 = 0; - gUnknown_0202C5AC = 0; - gUnknown_02019C28 = 0; + gPokedexDescriptionPage = 0; + gPokedexShowPageIndicator = 0; + gPokedexPageIndicatorBlink = 0; + gPokedexSpriteIndexBase = 0; for (i = 0; i < 0xE1; i++) { @@ -224,50 +224,50 @@ void Pokedex_HandleListInput(void) { if (JOY_HELD(SELECT_BUTTON)) { - gUnknown_0202BF04 = 0; + gPokedexShowButtonPrompt = 0; if (JOY_HELD(DPAD_UP)) { PokedexListScrollUp(); - sub_5064(); - sub_51CC(); + UpdateMonSpriteVisibility(); + RefreshMonPreviewSprite(); gMain.subState = POKEDEX_STATE_2; } else if (JOY_HELD(DPAD_DOWN)) { PokedexListScrollDown(); - sub_5064(); - sub_51CC(); + UpdateMonSpriteVisibility(); + RefreshMonPreviewSprite(); gMain.subState = POKEDEX_STATE_2; } else if (JOY_HELD(DPAD_LEFT)) { PokedexListScrollUpFast(); - sub_5064(); - sub_51CC(); + UpdateMonSpriteVisibility(); + RefreshMonPreviewSprite(); gMain.subState = POKEDEX_STATE_2; } else if (JOY_HELD(DPAD_RIGHT)) { PokedexListScrollDownFast(); - sub_5064(); - sub_51CC(); + UpdateMonSpriteVisibility(); + RefreshMonPreviewSprite(); gMain.subState = POKEDEX_STATE_2; } else { - gUnknown_02019C24 = 0; - sub_5064(); + gPokedexScrollActive = 0; + UpdateMonSpriteVisibility(); } if (JOY_NEW(A_BUTTON)) { - gUnknown_0202C5E8 = 0; + gPokedexDetailFrameCount = 0; if (gPokedexFlags[gPokedexSelectedMon] >= 2) { - gUnknown_0202BF04 = 0; - DmaCopy16(3, 0x6000280, (void *)gUnknown_0202A590, 0x200); + gPokedexShowButtonPrompt = 0; + DmaCopy16(3, 0x6000280, (void *)gPokedexInfoWindowBackupTiles, 0x200); gMain.subState = POKEDEX_STATE_3; } else @@ -278,52 +278,52 @@ void Pokedex_HandleListInput(void) } else { - gUnknown_0202BF04 = 1; + gPokedexShowButtonPrompt = 1; if (JOY_HELD(DPAD_UP)) { PokedexListScrollUp(); - sub_5174(); + RefreshPokedexListDisplay(); } else if (JOY_HELD(DPAD_DOWN)) { PokedexListScrollDown(); - sub_5174(); + RefreshPokedexListDisplay(); } else if (JOY_HELD(DPAD_LEFT)) { PokedexListScrollUpFast(); - sub_5174(); + RefreshPokedexListDisplay(); } else if (JOY_HELD(DPAD_RIGHT)) { PokedexListScrollDownFast(); - sub_5174(); + RefreshPokedexListDisplay(); } else { - gUnknown_02019C24 = 0; + gPokedexScrollActive = 0; } - if (sub_8A78(gPokedexSelectedMon) == 1) - gUnknown_0202A588 = 1; + if (CheckMonHasAnimation(gPokedexSelectedMon) == 1) + gPokedexShowAnimSprite = 1; else - gUnknown_0202A588 = 0; + gPokedexShowAnimSprite = 0; - gUnknown_0202A55C = 1; - gUnknown_0202A568[0] = 0; - gUnknown_0202A568[1] = 0; - gUnknown_0201A440 = 0; - gUnknown_0202BF0C = 0; + gPokedexShowPortrait = 1; + gPokedexShowCatchHatch[0] = 0; + gPokedexShowCatchHatch[1] = 0; + gPokedexSpriteAnimTimer = 0; + gPokedexSpriteAnimFrame = 0; if (JOY_NEW(A_BUTTON)) { - gUnknown_0202C5E8 = 0; + gPokedexDetailFrameCount = 0; if (gPokedexFlags[gPokedexSelectedMon] >= SPECIES_SHARED) { - gUnknown_0202BF04 = 0; - DmaCopy16(3, 0x6000280, (void *)gUnknown_0202A590, 0x200); + gPokedexShowButtonPrompt = 0; + DmaCopy16(3, 0x6000280, (void *)gPokedexInfoWindowBackupTiles, 0x200); gMain.subState = POKEDEX_STATE_3; } else @@ -339,10 +339,10 @@ void Pokedex_HandleListInput(void) else if (JOY_NEW(START_BUTTON)) { m4aSongNumStart(SE_MENU_POPUP_OPEN); - gUnknown_0202BEC4 = 1; - Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT; - gUnknown_0202BF04 = 0; - gUnknown_0202A588 = 0; + gPokedexShowPopupWindow = 1; + gPokedexPopupTypeIndex = POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT; + gPokedexShowButtonPrompt = 0; + gPokedexShowAnimSprite = 0; gMain.subState = POKEDEX_STATE_LINK_SETUP; } @@ -352,97 +352,97 @@ void Pokedex_HandleListInput(void) if (gPokedexScrollWaitFrames > 0) gPokedexScrollWaitFrames--; - sub_51FC(); - DmaCopy16(3, gUnknown_03005C00, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE); + RenderPokedexSprites(); + DmaCopy16(3, gBG0TilemapBuffer, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE); } -void Pokedex_State2_43D4(void) +void Pokedex_PostScrollRefresh(void) { - sub_5174(); - gUnknown_0202A588 = 0; + RefreshPokedexListDisplay(); + gPokedexShowAnimSprite = 0; if (gPokedexScrollWaitFrames > 0) gPokedexScrollWaitFrames--; - sub_51FC(); - DmaCopy16(3, gUnknown_03005C00, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE); + RenderPokedexSprites(); + DmaCopy16(3, gBG0TilemapBuffer, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE); gMain.subState = POKEDEX_STATE_HANDLE_LIST_INPUT; } -void Pokedex_State3_4428(void) +void Pokedex_InfoWindowSlideIn(void) { int i; for (i = 0; i < 0x20; i++) { - gUnknown_03005C00[0x20*(gUnknown_0202A558 + 10) + i] = gDexInfoWindowEmptyTextRowTiles[i]; - gUnknown_02019C40[0x20*(gUnknown_0202A558 + 9) + i] = gDexInfoWindowMiddleRowTiles[i]; - gUnknown_02019C40[0x20*(gUnknown_0202A558 + 10) + i] = gDexInfoWindowBottomRowTiles[i]; + gBG0TilemapBuffer[0x20*(gPokedexInfoWindowSlideStep + 10) + i] = gDexInfoWindowEmptyTextRowTiles[i]; + gPokedexVramBuffer[0x20*(gPokedexInfoWindowSlideStep + 9) + i] = gDexInfoWindowMiddleRowTiles[i]; + gPokedexVramBuffer[0x20*(gPokedexInfoWindowSlideStep + 10) + i] = gDexInfoWindowBottomRowTiles[i]; } - gUnknown_0202A558++; - gUnknown_02019C40[0x134] = 0x59; - DmaCopy16(3, gUnknown_03005C00, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE); - DmaCopy16(3, gUnknown_02019C40, (void *)BG_SCREEN_ADDR(1), BG_SCREEN_SIZE); + gPokedexInfoWindowSlideStep++; + gPokedexVramBuffer[0x134] = 0x59; + DmaCopy16(3, gBG0TilemapBuffer, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE); + DmaCopy16(3, gPokedexVramBuffer, (void *)BG_SCREEN_ADDR(1), BG_SCREEN_SIZE); - if (gUnknown_0202A558 > 7) + if (gPokedexInfoWindowSlideStep > 7) { - gUnknown_0202A558 = 0; - gUnknown_0202C5E8 = 0; - gUnknown_0202BEF4 = 0; - gUnknown_02019C28 = 0; - gUnknown_0202C5AC = 0; + gPokedexInfoWindowSlideStep = 0; + gPokedexDetailFrameCount = 0; + gPokedexPageIndicatorTimer = 0; + gPokedexSpriteIndexBase = 0; + gPokedexPageIndicatorBlink = 0; if (gPokedexSelectedMon < BONUS_SPECIES_START) - gUnknown_0201C1B4 = 1; + gPokedexShowPageIndicator = 1; - DmaCopy16(3, gUnknown_08086B40, (void *)0x6000280, 2*0xE0); - sub_70E0(gPokedexSelectedMon, gUnknown_0202C794); + DmaCopy16(3, gPokedexInfoWindowTiles, (void *)0x6000280, 2*0xE0); + PrintDexDescription(gPokedexSelectedMon, gPokedexDescriptionPage); m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x40); - PlayCry_NormalNoDucking(gSpeciesInfo[gPokedexSelectedMon].mainSeriesIndexNumber, 0, 127, 10); + PlayCry_NormalNoDucking(gSpeciesInfo[gPokedexSelectedMon].speciesIdRS, 0, 127, 10); gMain.subState = POKEDEX_STATE_5; } } -void Pokedex_State5_45A4(void) +void Pokedex_DetailViewInput(void) { u16 var0; - if (gUnknown_0202C5E8 < 0x51) + if (gPokedexDetailFrameCount < 0x51) { - gUnknown_0202C5E8++; - if (gUnknown_0202C5E8 == 0x50) + gPokedexDetailFrameCount++; + if (gPokedexDetailFrameCount == 0x50) { m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x100); } } - gUnknown_0202BEF4++; - if (0x1e < gUnknown_0202BEF4) + gPokedexPageIndicatorTimer++; + if (0x1e < gPokedexPageIndicatorTimer) { - gUnknown_0202BEF4 = 0; - gUnknown_0202C5AC = 1 - gUnknown_0202C5AC; + gPokedexPageIndicatorTimer = 0; + gPokedexPageIndicatorBlink = 1 - gPokedexPageIndicatorBlink; } - gUnknown_0202BE20 = 0; + gPokedexBlinkTimer = 0; if (JOY_NEW(DPAD_UP)) { - if ((gPokedexSelectedMon < BONUS_SPECIES_START) && (gUnknown_0202C794 == 1)) + if ((gPokedexSelectedMon < BONUS_SPECIES_START) && (gPokedexDescriptionPage == 1)) { m4aSongNumStart(SE_UNKNOWN_0x6D); - gUnknown_0202C794 = 0; - sub_70E0(gPokedexSelectedMon, 0); - gUnknown_02019C28 = gUnknown_0202C794; + gPokedexDescriptionPage = 0; + PrintDexDescription(gPokedexSelectedMon, 0); + gPokedexSpriteIndexBase = gPokedexDescriptionPage; } } else if (JOY_NEW(DPAD_DOWN)) { - if ((gPokedexSelectedMon < BONUS_SPECIES_START) && (gUnknown_0202C794 == 0)) + if ((gPokedexSelectedMon < BONUS_SPECIES_START) && (gPokedexDescriptionPage == 0)) { m4aSongNumStart(SE_UNKNOWN_0x6D); - gUnknown_0202C794 = 1; - sub_70E0(gPokedexSelectedMon, 1); - gUnknown_02019C28 = gUnknown_0202C794; + gPokedexDescriptionPage = 1; + PrintDexDescription(gPokedexSelectedMon, 1); + gPokedexSpriteIndexBase = gPokedexDescriptionPage; } } @@ -450,21 +450,21 @@ void Pokedex_State5_45A4(void) { if (gPokedexSelectedMon < BONUS_SPECIES_START) { - if (!gUnknown_0202C794) + if (!gPokedexDescriptionPage) { m4aSongNumStart(SE_UNKNOWN_0x6D); - gUnknown_0202C794 = 1 - gUnknown_0202C794; - sub_70E0(gPokedexSelectedMon, gUnknown_0202C794); - gUnknown_02019C28 = gUnknown_0202C794; + gPokedexDescriptionPage = 1 - gPokedexDescriptionPage; + PrintDexDescription(gPokedexSelectedMon, gPokedexDescriptionPage); + gPokedexSpriteIndexBase = gPokedexDescriptionPage; } else { m4aSongNumStart(SE_MENU_POPUP_CLOSE); m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x100); - gUnknown_0202C794 = 0; - gUnknown_0202C5E8 = 0; - gUnknown_0202BEF4 = gUnknown_0202C5E8; - gUnknown_0201C1B4 = 0; + gPokedexDescriptionPage = 0; + gPokedexDetailFrameCount = 0; + gPokedexPageIndicatorTimer = gPokedexDetailFrameCount; + gPokedexShowPageIndicator = 0; gMain.subState = POKEDEX_STATE_4; } } @@ -473,10 +473,10 @@ void Pokedex_State5_45A4(void) { m4aSongNumStart(SE_MENU_POPUP_CLOSE); m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x100); - gUnknown_0202C794 = 0; - gUnknown_0202C5E8 = 0; - gUnknown_0202BEF4 = gUnknown_0202C5E8; - gUnknown_0201C1B4 = 0; + gPokedexDescriptionPage = 0; + gPokedexDetailFrameCount = 0; + gPokedexPageIndicatorTimer = gPokedexDetailFrameCount; + gPokedexShowPageIndicator = 0; gMain.subState = POKEDEX_STATE_4; } @@ -486,86 +486,86 @@ void Pokedex_State5_45A4(void) { if (gDexAnimationIx[gPokedexSelectedMon] == -1) { - gUnknown_0202A588 = 0; - gUnknown_0202A55C = 1; - gUnknown_0202A568[0] = 0; - gUnknown_0202A568[1] = 0; - gUnknown_0201A440 = 0; - gUnknown_0202BF0C = 0; + gPokedexShowAnimSprite = 0; + gPokedexShowPortrait = 1; + gPokedexShowCatchHatch[0] = 0; + gPokedexShowCatchHatch[1] = 0; + gPokedexSpriteAnimTimer = 0; + gPokedexSpriteAnimFrame = 0; } else { if (gDexAnimationIx[gPokedexSelectedMon] < 100) { - gUnknown_0202A588 = 0; - gUnknown_0202A55C = 0; - gUnknown_0202A568[0] = 1; - gUnknown_0202A568[1] = 0; + gPokedexShowAnimSprite = 0; + gPokedexShowPortrait = 0; + gPokedexShowCatchHatch[0] = 1; + gPokedexShowCatchHatch[1] = 0; } else { - gUnknown_0202A588 = 0; - gUnknown_0202A55C = 0; - gUnknown_0202A568[0] = 0; - gUnknown_0202A568[1] = 1; + gPokedexShowAnimSprite = 0; + gPokedexShowPortrait = 0; + gPokedexShowCatchHatch[0] = 0; + gPokedexShowCatchHatch[1] = 1; } } } else { - gUnknown_0202A588 = 0; - gUnknown_0202A55C = 1; - gUnknown_0202A568[0] = 0; - gUnknown_0202A568[1] = 0; + gPokedexShowAnimSprite = 0; + gPokedexShowPortrait = 1; + gPokedexShowCatchHatch[0] = 0; + gPokedexShowCatchHatch[1] = 0; } } else { - if (sub_8A78(gPokedexSelectedMon) == 1) - gUnknown_0202A588 = 1; + if (CheckMonHasAnimation(gPokedexSelectedMon) == 1) + gPokedexShowAnimSprite = 1; else - gUnknown_0202A588 = 0; + gPokedexShowAnimSprite = 0; - gUnknown_0202A55C = 1; - gUnknown_0202A568[0] = 0; - gUnknown_0202A568[1] = 0; - gUnknown_0201A440 = 0; - gUnknown_0202BF0C = 0; + gPokedexShowPortrait = 1; + gPokedexShowCatchHatch[0] = 0; + gPokedexShowCatchHatch[1] = 0; + gPokedexSpriteAnimTimer = 0; + gPokedexSpriteAnimFrame = 0; } - sub_51FC(); + RenderPokedexSprites(); } -void Pokedex_State4_4860(void) +void Pokedex_InfoWindowSlideOut(void) { s32 i; for (i = 0; i < 0x20; i++) { - gUnknown_02019C40[0x20 * (0x11 - gUnknown_0202A558) + i] = gDexInfoWindowBottomRowTiles[i]; - gUnknown_02019C40[0x20 * (0x12 - gUnknown_0202A558) + i] = gDexInfoWindowEmptyRowTiles[i]; + gPokedexVramBuffer[0x20 * (0x11 - gPokedexInfoWindowSlideStep) + i] = gDexInfoWindowBottomRowTiles[i]; + gPokedexVramBuffer[0x20 * (0x12 - gPokedexInfoWindowSlideStep) + i] = gDexInfoWindowEmptyRowTiles[i]; } - if (gUnknown_0202A558 < 8) + if (gPokedexInfoWindowSlideStep < 8) { for (i = 0; i < 0x20; i++) { - gUnknown_03005C00[0x20 * (0x11 - gUnknown_0202A558) + i] = gUnknown_0202A590[0x20 * (0x7 - gUnknown_0202A558) + i]; + gBG0TilemapBuffer[0x20 * (0x11 - gPokedexInfoWindowSlideStep) + i] = gPokedexInfoWindowBackupTiles[0x20 * (0x7 - gPokedexInfoWindowSlideStep) + i]; } } - gUnknown_0202A558++; + gPokedexInfoWindowSlideStep++; - gUnknown_02019C40[0x134] = 0x59; - DmaCopy16(3, gUnknown_02019C40, (void *)BG_SCREEN_ADDR(1), BG_SCREEN_SIZE); - DmaCopy16(3, gUnknown_03005C00, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE); + gPokedexVramBuffer[0x134] = 0x59; + DmaCopy16(3, gPokedexVramBuffer, (void *)BG_SCREEN_ADDR(1), BG_SCREEN_SIZE); + DmaCopy16(3, gBG0TilemapBuffer, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE); - if (gUnknown_0202A558 > 8) + if (gPokedexInfoWindowSlideStep > 8) { - gUnknown_0202A558 = 0; - gUnknown_0202A588 = 0; - gUnknown_0202BF04 = 1; + gPokedexInfoWindowSlideStep = 0; + gPokedexShowAnimSprite = 0; + gPokedexShowButtonPrompt = 1; - DmaFill16(3, 0, (void *)gUnknown_03000000, 0x1800); + DmaFill16(3, 0, (void *)gTempGfxBuffer, 0x1800); DmaFill16(3, 0, (void *)0x6005C00, 0x1800); gMain.subState = POKEDEX_STATE_HANDLE_LIST_INPUT; } @@ -573,14 +573,14 @@ void Pokedex_State4_4860(void) void Pokedex_LinkSetup(void) { - sub_19B4(); - sub_5E60(); - gUnknown_0201B124 = 0; + InitLinkHardware(); + InitLinkTransferState(); + gLinkExchangeStep = 0; RenderLinkGraphics(); gMain.subState = POKEDEX_STATE_7; } -void Pokedex_State7_49D0(void) +void Pokedex_LinkTransferLoop(void) { s16 var0; @@ -589,47 +589,47 @@ void Pokedex_State7_49D0(void) if (JOY_NEW(B_BUTTON)) { m4aSongNumStart(SE_MENU_CANCEL); - gUnknown_0202BEC4 = 0; - Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT; - gUnknown_0202BF04 = 1; - gUnknown_0202A588 = 1; - sub_2568(); + gPokedexShowPopupWindow = 0; + gPokedexPopupTypeIndex = POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT; + gPokedexShowButtonPrompt = 1; + gPokedexShowAnimSprite = 1; + ResetSerialAndInterrupts(); gMain.subState = POKEDEX_STATE_HANDLE_LIST_INPUT; } else { - gUnknown_0202ADD0 = LinkMain1(&gUnknown_0202BEC8, gUnknown_0202C5F0, gUnknown_0201A4D0); - gUnknown_0202BDF0 = gUnknown_0202ADD0 & 3; - gUnknown_0201C1AC = (gUnknown_0202ADD0 & 0x1C) >> 2; - gUnknown_0202ADDC = (gUnknown_0202ADD0 & 0xe00) >> 9; + gLinkStatusResult = LinkMain1(&gLinkAdvanceState, gLinkSendBuffer, gLinkRecvBuffer); + gLinkConnectionState = gLinkStatusResult & 3; + gLinkPlayerCount = (gLinkStatusResult & 0x1C) >> 2; + gLinkNegotiationFlags = (gLinkStatusResult & 0xe00) >> 9; - if ((gUnknown_0202ADD0 & 0x40) && (gUnknown_0202BDF0 < 2)) + if ((gLinkStatusResult & 0x40) && (gLinkConnectionState < 2)) { - sub_5EC8(); + SendLinkPokedexData(); - if (!(gUnknown_0202ADD0 & 0x100)) + if (!(gLinkStatusResult & 0x100)) { - var0 = sub_5EA4(); + var0 = Pokedex_ProcessLinkExchange(); if (var0 == -1) { gMain.subState = POKEDEX_STATE_9; } else if (var0 == 1) { - Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMISSION_ERROR; + gPokedexPopupTypeIndex = POKEDEX_POPUP_TRANSMISSION_ERROR; gMain.subState = POKEDEX_STATE_8; m4aSongNumStart(SE_FAILURE); } } - gUnknown_0201A510++; + gLinkExchangeFrameCounter++; - if ((gUnknown_0202ADD0 & 0x7f0000) && gUnknown_0201B128 == -1) + if ((gLinkStatusResult & 0x7f0000) && gPokedexLinkTransferPhase == -1) { - gUnknown_0201A444++; - if (0xB4 < gUnknown_0201A444) + gLinkTimeoutCounter++; + if (0xB4 < gLinkTimeoutCounter) { - Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMISSION_ERROR; + gPokedexPopupTypeIndex = POKEDEX_POPUP_TRANSMISSION_ERROR; gMain.subState = POKEDEX_STATE_8; m4aSongNumStart(SE_FAILURE); } @@ -638,32 +638,32 @@ void Pokedex_State7_49D0(void) } } -void Pokedex_State10_4B10(void) +void Pokedex_LinkRetryDelay(void) { - gUnknown_0201A444++; + gLinkTimeoutCounter++; - if (2 < gUnknown_0201A444) { - gUnknown_0201A444 = 0; + if (2 < gLinkTimeoutCounter) { + gLinkTimeoutCounter = 0; gMain.subState = POKEDEX_STATE_LINK_SETUP; } } -void Pokedex_State8_4B34(void) +void Pokedex_LinkErrorTimeout(void) { s32 iVar1; RenderLinkGraphics(); - gUnknown_0201B120++; + gPokedexLinkStateTimer++; - if (0x5A < gUnknown_0201B120) + if (0x5A < gPokedexLinkStateTimer) { - gUnknown_0201B120 = 0; - gUnknown_0202BEC4 = 0; - Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT; - gUnknown_0202BF04 = 1; - gUnknown_0202A588 = 1; + gPokedexLinkStateTimer = 0; + gPokedexShowPopupWindow = 0; + gPokedexPopupTypeIndex = POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT; + gPokedexShowButtonPrompt = 1; + gPokedexShowAnimSprite = 1; - sub_2568(); + ResetSerialAndInterrupts(); DisableSerial(); for(iVar1 = 0; iVar1 < 0xE1; iVar1++) @@ -671,34 +671,34 @@ void Pokedex_State8_4B34(void) gPokedexFlagExchangeBuffer[iVar1] = gPokedexFlags[iVar1]; } - sub_02B4(); + FadeOutScreen(); m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); gMain.subState = POKEDEX_STATE_LOAD_GRAPHICS; } } -void Pokedex_State9_4BB4(void) +void Pokedex_LinkSuccessSequence(void) { s32 index; RenderLinkGraphics(); - switch(gUnknown_0201B120) + switch(gPokedexLinkStateTimer) { case 0x4: - sub_2568(); + ResetSerialAndInterrupts(); DisableSerial(); break; case 0x82: - Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMISSION_COMPLETE; + gPokedexPopupTypeIndex = POKEDEX_POPUP_TRANSMISSION_COMPLETE; m4aSongNumStart(SE_MENU_SELECT); break; case 0xFA: - gUnknown_0201B120 = 0; - gUnknown_0202BEC4 = 0; - Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT; - gUnknown_0202BF04 = 1; - gUnknown_0202A588 = 1; + gPokedexLinkStateTimer = 0; + gPokedexShowPopupWindow = 0; + gPokedexPopupTypeIndex = POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT; + gPokedexShowButtonPrompt = 1; + gPokedexShowAnimSprite = 1; for(index = 0; index < 0xE1; index++) { gPokedexFlags[index] = gPokedexFlagExchangeBuffer[index]; @@ -708,20 +708,20 @@ void Pokedex_State9_4BB4(void) gMain_saveData.pokedexFlags[index] = gPokedexFlags[index]; } SaveFile_WriteToSram(); - sub_02B4(); + FadeOutScreen(); m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); gMain.subState = POKEDEX_STATE_LOAD_GRAPHICS; break; } - gUnknown_0201B120++; + gPokedexLinkStateTimer++; } void Pokedex_DeleteConfirmation(void) { s32 i; - sub_51FC(); + RenderPokedexSprites(); if (JOY_NEW(A_BUTTON)) { @@ -736,24 +736,24 @@ void Pokedex_DeleteConfirmation(void) gMain_saveData.pokedexFlags[i] = gPokedexFlags[i]; } - gUnknown_0202BEC4 = 0; - Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT; - gUnknown_0202BF04 = 1; - gUnknown_0202A588 = 1; + gPokedexShowPopupWindow = 0; + gPokedexPopupTypeIndex = POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT; + gPokedexShowButtonPrompt = 1; + gPokedexShowAnimSprite = 1; SaveFile_WriteToSram(); - sub_02B4(); + FadeOutScreen(); m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); gMain.subState = POKEDEX_STATE_LOAD_GRAPHICS; } else if (JOY_NEW(B_BUTTON)) { m4aSongNumStart(SE_MENU_CANCEL); - gUnknown_0202BEC4 = 0; - Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT; - gUnknown_0202BF04 = 1; - gUnknown_0202A588 = 1; + gPokedexShowPopupWindow = 0; + gPokedexPopupTypeIndex = POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT; + gPokedexShowButtonPrompt = 1; + gPokedexShowAnimSprite = 1; gMain.subState = POKEDEX_STATE_HANDLE_LIST_INPUT; @@ -762,9 +762,9 @@ void Pokedex_DeleteConfirmation(void) void Pokedex_ReturnToTitle(void) { - sub_02B4(); + FadeOutScreen(); m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); gAutoDisplayTitlescreenMenu = TRUE; SetMainGameState(STATE_TITLE); @@ -775,18 +775,18 @@ static void PokedexListScrollUp(void) if (gPokedexScrollWaitFrames != 0) return; - gUnknown_0201A440 = 0; - gUnknown_0202BF0C = 0; + gPokedexSpriteAnimTimer = 0; + gPokedexSpriteAnimFrame = 0; - if (gUnknown_0202A57C == 0) + if (gPokedexCursorOffset == 0) { if (gPokedexListPosition == 0) { - if (gUnknown_02019C24 == 0) + if (gPokedexScrollActive == 0) { gPokedexListPosition = gPokedexListEntryCount - NUM_BONUS_SPECIES - 1; gPokedexSelectedMon = gPokedexListEntryCount - 1; - gUnknown_0202A57C = 4; + gPokedexCursorOffset = 4; m4aSongNumStart(SE_MENU_MOVE); } } @@ -802,13 +802,13 @@ static void PokedexListScrollUp(void) else { m4aSongNumStart(SE_MENU_MOVE); - gUnknown_0202A57C--; + gPokedexCursorOffset--; gPokedexSelectedMon--; gPokedexScrollWaitFrames = SCROLL_WAIT_FRAMES; } - gUnknown_02019C24 = 1; + gPokedexScrollActive = 1; } static void PokedexListScrollDown(void) @@ -816,17 +816,17 @@ static void PokedexListScrollDown(void) if (gPokedexScrollWaitFrames != 0) return; - gUnknown_0201A440 = 0; - gUnknown_0202BF0C = 0; - if (gUnknown_0202A57C == 4) + gPokedexSpriteAnimTimer = 0; + gPokedexSpriteAnimFrame = 0; + if (gPokedexCursorOffset == 4) { if (gPokedexListPosition == gPokedexListEntryCount - NUM_BONUS_SPECIES - 1) { - if (gUnknown_02019C24 == 0) + if (gPokedexScrollActive == 0) { gPokedexListPosition = 0; gPokedexSelectedMon = 0; - gUnknown_0202A57C = 0; + gPokedexCursorOffset = 0; m4aSongNumStart(SE_MENU_MOVE); } } @@ -842,12 +842,12 @@ static void PokedexListScrollDown(void) else { m4aSongNumStart(SE_MENU_MOVE); - gUnknown_0202A57C++; + gPokedexCursorOffset++; gPokedexSelectedMon++; gPokedexScrollWaitFrames = SCROLL_WAIT_FRAMES; } - gUnknown_02019C24 = 1; + gPokedexScrollActive = 1; } static void PokedexListScrollUpFast(void) @@ -855,8 +855,8 @@ static void PokedexListScrollUpFast(void) if (gPokedexScrollWaitFrames != 0) return; - gUnknown_0201A440 = 0; - gUnknown_0202BF0C = 0; + gPokedexSpriteAnimTimer = 0; + gPokedexSpriteAnimFrame = 0; if (gPokedexListPosition == 0) return; @@ -865,7 +865,7 @@ static void PokedexListScrollUpFast(void) if (gPokedexListPosition < 0) gPokedexListPosition = 0; - gPokedexSelectedMon = gPokedexListPosition + gUnknown_0202A57C; + gPokedexSelectedMon = gPokedexListPosition + gPokedexCursorOffset; gPokedexScrollWaitFrames = SCROLL_WAIT_FRAMES; } @@ -874,8 +874,8 @@ static void PokedexListScrollDownFast(void) if (gPokedexScrollWaitFrames != 0) return; - gUnknown_0201A440 = 0; - gUnknown_0202BF0C = 0; + gPokedexSpriteAnimTimer = 0; + gPokedexSpriteAnimFrame = 0; if (gPokedexListPosition == gPokedexListEntryCount - NUM_BONUS_SPECIES - 1) return; @@ -884,7 +884,7 @@ static void PokedexListScrollDownFast(void) if (gPokedexListPosition > gPokedexListEntryCount - NUM_BONUS_SPECIES - 1) gPokedexListPosition = gPokedexListEntryCount - NUM_BONUS_SPECIES - 1; - gPokedexSelectedMon = gPokedexListPosition + gUnknown_0202A57C; + gPokedexSelectedMon = gPokedexListPosition + gPokedexCursorOffset; gPokedexScrollWaitFrames = SCROLL_WAIT_FRAMES; } @@ -899,10 +899,10 @@ void Pokedex_CheckDeleteKeyComboPressed(void) gPokedex_EraseSaveDataAccessStep = 0; gPokedex_EraseSaveDataAccessCounter = 0; m4aSongNumStart(SE_MENU_POPUP_OPEN); - gUnknown_0202BEC4 = 1; - Pokedex_PopupTypeIx = POKEDEX_POPUP_DELETE_CONFIRMATION_PROMPT; - gUnknown_0202BF04 = 0; - gUnknown_0202A588 = 0; + gPokedexShowPopupWindow = 1; + gPokedexPopupTypeIndex = POKEDEX_POPUP_DELETE_CONFIRMATION_PROMPT; + gPokedexShowButtonPrompt = 0; + gPokedexShowAnimSprite = 0; gMain.subState = POKEDEX_STATE_DELETE_CONFIRMATION; } } @@ -917,44 +917,44 @@ void Pokedex_CheckDeleteKeyComboPressed(void) } } -void sub_5064(void) +void UpdateMonSpriteVisibility(void) { if (gPokedexFlags[gPokedexSelectedMon] == SPECIES_CAUGHT) { if (gDexAnimationIx[gPokedexSelectedMon] == -1) { - gUnknown_0202A588 = 0; - gUnknown_0202A55C = 1; - gUnknown_0202A568[0] = 0; - gUnknown_0202A568[1] = 0; - gUnknown_0201A440 = 0; - gUnknown_0202BF0C = 0; + gPokedexShowAnimSprite = 0; + gPokedexShowPortrait = 1; + gPokedexShowCatchHatch[0] = 0; + gPokedexShowCatchHatch[1] = 0; + gPokedexSpriteAnimTimer = 0; + gPokedexSpriteAnimFrame = 0; } else if (gDexAnimationIx[gPokedexSelectedMon] < 100) { - gUnknown_0202A588 = 0; - gUnknown_0202A55C = 0; - gUnknown_0202A568[0] = 1; - gUnknown_0202A568[1] = 0; + gPokedexShowAnimSprite = 0; + gPokedexShowPortrait = 0; + gPokedexShowCatchHatch[0] = 1; + gPokedexShowCatchHatch[1] = 0; } else { - gUnknown_0202A588 = 0; - gUnknown_0202A55C = 0; - gUnknown_0202A568[0] = 0; - gUnknown_0202A568[1] = 1; + gPokedexShowAnimSprite = 0; + gPokedexShowPortrait = 0; + gPokedexShowCatchHatch[0] = 0; + gPokedexShowCatchHatch[1] = 1; } } else { - gUnknown_0202A588 = 0; - gUnknown_0202A55C = 1; - gUnknown_0202A568[0] = 0; - gUnknown_0202A568[1] = 0; + gPokedexShowAnimSprite = 0; + gPokedexShowPortrait = 1; + gPokedexShowCatchHatch[0] = 0; + gPokedexShowCatchHatch[1] = 0; } } -u8 sub_5134(void) +u8 GetSelectedMonSpriteType(void) { if (gPokedexFlags[gPokedexSelectedMon] == SPECIES_CAUGHT && gDexAnimationIx[gPokedexSelectedMon] != -1) { @@ -967,27 +967,27 @@ u8 sub_5134(void) return 0; } -void sub_5174(void) +void RefreshPokedexListDisplay(void) { PrintDexNumbersFromListPosition(gPokedexListPosition); PrintCaughtBallFromListPosition(gPokedexListPosition); PrintSelectedMonDexNum(gPokedexSelectedMon); - sub_6F78(gPokedexSelectedMon); - sub_8974(gPokedexSelectedMon); - sub_8A78(gPokedexSelectedMon); - gUnknown_0202BF00 = 0; - gUnknown_0201A448 = 0; + LoadMonPortrait(gPokedexSelectedMon); + LoadMonAnimationSprite(gPokedexSelectedMon); + CheckMonHasAnimation(gPokedexSelectedMon); + gPokedexAnimatedIconTimer = 0; + gPokedexAnimatedIconFrame = 0; } -void sub_51CC(void) +void RefreshMonPreviewSprite(void) { - if (sub_5134() == 0) - sub_6F78(gPokedexSelectedMon); + if (GetSelectedMonSpriteType() == 0) + LoadMonPortrait(gPokedexSelectedMon); else - sub_8974(gPokedexSelectedMon); + LoadMonAnimationSprite(gPokedexSelectedMon); } -void sub_51FC(void) +void RenderPokedexSprites(void) { int i; struct SpriteGroup *group0; @@ -1009,38 +1009,38 @@ void sub_51FC(void) group2 = &gMain_spriteGroups[2]; group3 = &gMain_spriteGroups[3]; group4 = &gMain_spriteGroups[4]; - group5 = &gMain_spriteGroups[5 + gUnknown_0201A448]; - group6 = &gMain_spriteGroups[17 + Pokedex_PopupTypeIx]; - group7 = &gMain_spriteGroups[22 + gUnknown_0202BEE0]; + group5 = &gMain_spriteGroups[5 + gPokedexAnimatedIconFrame]; + group6 = &gMain_spriteGroups[17 + gPokedexPopupTypeIndex]; + group7 = &gMain_spriteGroups[22 + gPokedexButtonPromptFrame]; group8 = &gMain_spriteGroups[24]; - group9 = &gMain_spriteGroups[25 + gUnknown_02019C28 * 2 + gUnknown_0202C5AC]; + group9 = &gMain_spriteGroups[25 + gPokedexSpriteIndexBase * 2 + gPokedexPageIndicatorBlink]; group0->available = TRUE; group1->available = TRUE; - group2->available = gUnknown_0202A55C; - group3->available = gUnknown_0202A568[0]; - group4->available = gUnknown_0202A568[1]; - group5->available = gUnknown_0202A588; - group6->available = gUnknown_0202BEC4; - group7->available = gUnknown_0202BF04; - group8->available = gUnknown_0202C590; - group9->available = gUnknown_0201C1B4; - LoadSpriteSets(gUnknown_086A6148, 29, group0); + group2->available = gPokedexShowPortrait; + group3->available = gPokedexShowCatchHatch[0]; + group4->available = gPokedexShowCatchHatch[1]; + group5->available = gPokedexShowAnimSprite; + group6->available = gPokedexShowPopupWindow; + group7->available = gPokedexShowButtonPrompt; + group8->available = gPokedexShowLinkCableIcon; + group9->available = gPokedexShowPageIndicator; + LoadSpriteSets(gPokedexSpriteSets, 29, group0); - group0->baseX = 20 + gUnknown_0201A4F0; - group0->baseY = 84 + gUnknown_0202A57C * 16; + group0->baseX = 20 + gPokedexCursorBlinkOffset; + group0->baseY = 84 + gPokedexCursorOffset * 16; groupOam = &group0->oam[0]; gOamBuffer[groupOam->oamId].priority = 3; gOamBuffer[groupOam->oamId].x = groupOam->xOffset + group0->baseX; gOamBuffer[groupOam->oamId].y = groupOam->yOffset + group0->baseY; if (gPokedexSelectedMon < 200) - gUnknown_0202BF08 = 86 + gPokedexSelectedMon / 3; + gPokedexScrollbarY = 86 + gPokedexSelectedMon / 3; else - gUnknown_0202BF08 = 152; + gPokedexScrollbarY = 152; group1->baseX = 13; - group1->baseY = gUnknown_0202BF08; + group1->baseY = gPokedexScrollbarY; groupOam = &group1->oam[0]; gOamBuffer[groupOam->oamId].priority = 3; gOamBuffer[groupOam->oamId].x = groupOam->xOffset + group1->baseX; @@ -1067,23 +1067,23 @@ void sub_51FC(void) { groupOam = &group3->oam[i]; gOamBuffer[groupOam->oamId].priority = 1; - gOamBuffer[groupOam->oamId].tileNum = gUnknown_086A5DDA[gUnknown_0202BF14][i] + - gUnknown_086A5DF2[gUnknown_0202BF14][gUnknown_0202BF0C]; + gOamBuffer[groupOam->oamId].tileNum = gPokedexAnimBaseTileNums[gPokedexSpriteCategory][i] + + gPokedexCatchAnimTileOffsets[gPokedexSpriteCategory][gPokedexSpriteAnimFrame]; gOamBuffer[groupOam->oamId].x = groupOam->xOffset + group3->baseX; gOamBuffer[groupOam->oamId].y = groupOam->yOffset + group3->baseY; } - if (++gUnknown_0201A440 > 14) + if (++gPokedexSpriteAnimTimer > 14) { - gUnknown_0201A440 = 0; - if (++gUnknown_0202BF0C > 8) - gUnknown_0202BF0C = 0; + gPokedexSpriteAnimTimer = 0; + if (++gPokedexSpriteAnimFrame > 8) + gPokedexSpriteAnimFrame = 0; } } if (group4->available == 1) { - if (gUnknown_086A6356[gPokedexSelectedMon] == -1) + if (gPokedexCatchAnimIndices[gPokedexSelectedMon] == -1) { var0 = 1; var1 = 36; @@ -1100,16 +1100,16 @@ void sub_51FC(void) { groupOam = &group4->oam[i]; gOamBuffer[groupOam->oamId].priority = 1; - gOamBuffer[groupOam->oamId].tileNum = gUnknown_086A5DDA[var0][i] + gUnknown_086A5EE2[var0][gUnknown_0202BF0C]; + gOamBuffer[groupOam->oamId].tileNum = gPokedexAnimBaseTileNums[var0][i] + gPokedexHatchAnimTileOffsets[var0][gPokedexSpriteAnimFrame]; gOamBuffer[groupOam->oamId].x = groupOam->xOffset + group4->baseX; gOamBuffer[groupOam->oamId].y = groupOam->yOffset + group4->baseY; } - if (++gUnknown_0201A440 > gUnknown_086A6014[var0][gUnknown_0202BF0C]) + if (++gPokedexSpriteAnimTimer > gPokedexAnimFrameDurations[var0][gPokedexSpriteAnimFrame]) { - gUnknown_0201A440 = 0; - if (++gUnknown_0202BF0C > var1) - gUnknown_0202BF0C = 0; + gPokedexSpriteAnimTimer = 0; + if (++gPokedexSpriteAnimFrame > var1) + gPokedexSpriteAnimFrame = 0; } } @@ -1117,7 +1117,7 @@ void sub_51FC(void) { group5->baseX = 36; group5->baseY = 64; - spriteSet = gUnknown_086A6148[5 + gUnknown_0201A448]; + spriteSet = gPokedexSpriteSets[5 + gPokedexAnimatedIconFrame]; for (i = 0; i < spriteSet->count; i++) { groupOam = &group5->oam[i]; @@ -1126,18 +1126,18 @@ void sub_51FC(void) gOamBuffer[groupOam->oamId].y = groupOam->yOffset + group5->baseY; } - if (++gUnknown_0202BF00 > 8) + if (++gPokedexAnimatedIconTimer > 8) { - gUnknown_0202BF00 = 0; - if (++gUnknown_0201A448 > 11) - gUnknown_0201A448 = 0; + gPokedexAnimatedIconTimer = 0; + if (++gPokedexAnimatedIconFrame > 11) + gPokedexAnimatedIconFrame = 0; } } if (group6->available == 1) { - if (Pokedex_PopupTypeIx == POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT || - Pokedex_PopupTypeIx == POKEDEX_POPUP_DELETE_CONFIRMATION_PROMPT) + if (gPokedexPopupTypeIndex == POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT || + gPokedexPopupTypeIndex == POKEDEX_POPUP_DELETE_CONFIRMATION_PROMPT) { group6->baseX = 120; group6->baseY = 100; @@ -1148,7 +1148,7 @@ void sub_51FC(void) group6->baseY = 80; } - spriteSet = gUnknown_086A6148[17 + Pokedex_PopupTypeIx]; + spriteSet = gPokedexSpriteSets[17 + gPokedexPopupTypeIndex]; for (i = 0; i < spriteSet->count; i++) { groupOam = &group6->oam[i]; @@ -1162,7 +1162,7 @@ void sub_51FC(void) { group7->baseX = 158; group7->baseY = 148; - spriteSet = gUnknown_086A6148[22 + gUnknown_0202BEE0]; + spriteSet = gPokedexSpriteSets[22 + gPokedexButtonPromptFrame]; for (i = 0; i < spriteSet->count; i++) { groupOam = &group7->oam[i]; @@ -1193,11 +1193,11 @@ void sub_51FC(void) gOamBuffer[groupOam->oamId].y = groupOam->yOffset + group9->baseY; } - if (++gUnknown_0202BE20 > 12) + if (++gPokedexBlinkTimer > 12) { - gUnknown_0202BE20 = 0; - gUnknown_0201A4F0 = 1 - gUnknown_0201A4F0; - gUnknown_0202BEE0 = 1 - gUnknown_0202BEE0; + gPokedexBlinkTimer = 0; + gPokedexCursorBlinkOffset = 1 - gPokedexCursorBlinkOffset; + gPokedexButtonPromptFrame = 1 - gPokedexButtonPromptFrame; } group5->available = FALSE; @@ -1225,30 +1225,30 @@ static void RenderLinkGraphics(void) group2 = &gMain_spriteGroups[2]; group3 = &gMain_spriteGroups[3]; group4 = &gMain_spriteGroups[4]; - group6 = &gMain_spriteGroups[5 + gUnknown_0201A448]; - group7 = &gMain_spriteGroups[17 + Pokedex_PopupTypeIx]; + group6 = &gMain_spriteGroups[5 + gPokedexAnimatedIconFrame]; + group7 = &gMain_spriteGroups[17 + gPokedexPopupTypeIndex]; group5 = &gMain_spriteGroups[24]; group0->available = TRUE; group1->available = TRUE; - group2->available = gUnknown_0202A55C; - group3->available = gUnknown_0202A568[0]; - group4->available = gUnknown_0202A568[1]; + group2->available = gPokedexShowPortrait; + group3->available = gPokedexShowCatchHatch[0]; + group4->available = gPokedexShowCatchHatch[1]; group6->available = FALSE; - group7->available = gUnknown_0202BEC4; - group5->available = gUnknown_0202C590; - sub_2414(gUnknown_086A6148, 29, group0); + group7->available = gPokedexShowPopupWindow; + group5->available = gPokedexShowLinkCableIcon; + LoadSpriteSetsWithCpuCopy(gPokedexSpriteSets, 29, group0); - group0->baseX = 20 + gUnknown_0201A4F0; - group0->baseY = 84 + gUnknown_0202A57C * 16; + group0->baseX = 20 + gPokedexCursorBlinkOffset; + group0->baseY = 84 + gPokedexCursorOffset * 16; groupOam = &group0->oam[0]; gOamBuffer[groupOam->oamId].priority = 2; gOamBuffer[groupOam->oamId].x = groupOam->xOffset + group0->baseX; gOamBuffer[groupOam->oamId].y = groupOam->yOffset + group0->baseY; - gUnknown_0202BF08 = 86 + gPokedexSelectedMon / 3; + gPokedexScrollbarY = 86 + gPokedexSelectedMon / 3; group1->baseX = 13; - group1->baseY = gUnknown_0202BF08; + group1->baseY = gPokedexScrollbarY; groupOam = &group1->oam[0]; gOamBuffer[groupOam->oamId].priority = 2; gOamBuffer[groupOam->oamId].x = groupOam->xOffset + group1->baseX; @@ -1273,8 +1273,8 @@ static void RenderLinkGraphics(void) for (i = 0; i < 4; i++) { groupOam = &group3->oam[i]; - gOamBuffer[groupOam->oamId].tileNum = gUnknown_086A5DDA[gUnknown_0202BF14][i] + - gUnknown_086A5DF2[gUnknown_0202BF14][gUnknown_0202BF0C]; + gOamBuffer[groupOam->oamId].tileNum = gPokedexAnimBaseTileNums[gPokedexSpriteCategory][i] + + gPokedexCatchAnimTileOffsets[gPokedexSpriteCategory][gPokedexSpriteAnimFrame]; gOamBuffer[groupOam->oamId].x = groupOam->xOffset + group3->baseX; gOamBuffer[groupOam->oamId].y = groupOam->yOffset + group3->baseY; } @@ -1287,8 +1287,8 @@ static void RenderLinkGraphics(void) for (i = 0; i < 4; i++) { groupOam = &group4->oam[i]; - gOamBuffer[groupOam->oamId].tileNum = gUnknown_086A5DDA[1][i] + - gUnknown_086A5E12[1][gUnknown_0202BF0C]; + gOamBuffer[groupOam->oamId].tileNum = gPokedexAnimBaseTileNums[1][i] + + gPokedexAnimTileDeltas[1][gPokedexSpriteAnimFrame]; gOamBuffer[groupOam->oamId].x = groupOam->xOffset + group4->baseX; gOamBuffer[groupOam->oamId].y = groupOam->yOffset + group4->baseY; } @@ -1298,7 +1298,7 @@ static void RenderLinkGraphics(void) { group6->baseX = 36; group6->baseY = 64; - spriteSet = gUnknown_086A6148[5 + gUnknown_0201A448]; + spriteSet = gPokedexSpriteSets[5 + gPokedexAnimatedIconFrame]; for (i = 0; i < spriteSet->count; i++) { groupOam = &group6->oam[i]; @@ -1309,8 +1309,8 @@ static void RenderLinkGraphics(void) if (group7->available == 1) { - if (Pokedex_PopupTypeIx == POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT || - Pokedex_PopupTypeIx == POKEDEX_POPUP_DELETE_CONFIRMATION_PROMPT) + if (gPokedexPopupTypeIndex == POKEDEX_POPUP_TRANSMISSION_CONNECT_PROMPT || + gPokedexPopupTypeIndex == POKEDEX_POPUP_DELETE_CONFIRMATION_PROMPT) { group7->baseX = 120; group7->baseY = 100; @@ -1321,7 +1321,7 @@ static void RenderLinkGraphics(void) group7->baseY = 80; } - spriteSet = gUnknown_086A6148[17 + Pokedex_PopupTypeIx]; + spriteSet = gPokedexSpriteSets[17 + gPokedexPopupTypeIndex]; for (i = 0; i < spriteSet->count; i++) { groupOam = &group7->oam[i]; @@ -1346,101 +1346,101 @@ static void RenderLinkGraphics(void) group7->available = FALSE; } -static void sub_5E60(void) +static void InitLinkTransferState(void) { - gUnknown_0202C5F0[0] = 0xDDDD; - gUnknown_0202C5B4 = 1; - gUnknown_0201C180 = 1; - gUnknown_0201B128 = 0; - gUnknown_0201C1BC = 0; - gUnknown_0202C544 = 0; - gUnknown_0202BECC = 0; + gLinkSendBuffer[0] = 0xDDDD; + gPokedexLinkChunkIndex = 1; + gPokedexLinkSendCounter = 1; + gPokedexLinkTransferPhase = 0; + gPokedexMasterHandshakeState = 0; + gPokedexClientHandshakeState = 0; + gPokedexHandshakeRetryCount = 0; } -static s16 sub_5EA4(void) +static s16 Pokedex_ProcessLinkExchange(void) { s16 result; if (gLink.isMaster) - result = sub_639C(); + result = MasterReceivePokedexFlags(); else - result = sub_65DC(); + result = ClientReceivePokedexFlags(); return result; } -s16 sub_5EC8(void) +s16 SendLinkPokedexData(void) { s16 result; if (gLink.isMaster) - result = sub_5EEC(); + result = MasterSendPokedexFlags(); else - result = sub_6144(); + result = ClientSendPokedexFlags(); return result; } -static int sub_5EEC(void) +static int MasterSendPokedexFlags(void) { int i; u16 var0; - if (gUnknown_0201B128 == 0) + if (gPokedexLinkTransferPhase == 0) { - switch (gUnknown_0201C1BC) + switch (gPokedexMasterHandshakeState) { case 0: if (JOY_NEW(A_BUTTON)) { - gUnknown_0202C5F0[0] = 0xFEFE; + gLinkSendBuffer[0] = 0xFEFE; } else { for (i = 0; i < 8; i++) - gUnknown_0202C5F0[i] = 0; + gLinkSendBuffer[i] = 0; } return 0; case 1: - gUnknown_0202C5F0[0] = 0xECEC; + gLinkSendBuffer[0] = 0xECEC; return 0; } return 0; } - else if (gUnknown_0201C180 < 8) + else if (gPokedexLinkSendCounter < 8) { for (i = 0; i < 8; i++) - gUnknown_0202C5F0[i] = 0xDDDD; + gLinkSendBuffer[i] = 0xDDDD; } - else if (gUnknown_0201C180 < 16) + else if (gPokedexLinkSendCounter < 16) { - var0 = (gUnknown_0201C180 - 8) * 28; - gUnknown_0202C5F0[0] = gUnknown_0201C180; - gUnknown_0202C5F0[1] = gPokedexFlags[var0] | + var0 = (gPokedexLinkSendCounter - 8) * 28; + gLinkSendBuffer[0] = gPokedexLinkSendCounter; + gLinkSendBuffer[1] = gPokedexFlags[var0] | (gPokedexFlags[var0 + 1] << 4) | (gPokedexFlags[var0 + 2] << 8) | (gPokedexFlags[var0 + 3] << 12); - gUnknown_0202C5F0[2] = gPokedexFlags[var0 + 4] | + gLinkSendBuffer[2] = gPokedexFlags[var0 + 4] | (gPokedexFlags[var0 + 5] << 4) | (gPokedexFlags[var0 + 6] << 8) | (gPokedexFlags[var0 + 7] << 12); - gUnknown_0202C5F0[3] = gPokedexFlags[var0 + 8] | + gLinkSendBuffer[3] = gPokedexFlags[var0 + 8] | (gPokedexFlags[var0 + 9] << 4) | (gPokedexFlags[var0 + 10] << 8) | (gPokedexFlags[var0 + 11] << 12); - gUnknown_0202C5F0[4] = gPokedexFlags[var0 + 12] | + gLinkSendBuffer[4] = gPokedexFlags[var0 + 12] | (gPokedexFlags[var0 + 13] << 4) | (gPokedexFlags[var0 + 14] << 8) | (gPokedexFlags[var0 + 15] << 12); - gUnknown_0202C5F0[5] = gPokedexFlags[var0 + 16] | + gLinkSendBuffer[5] = gPokedexFlags[var0 + 16] | (gPokedexFlags[var0 + 17] << 4) | (gPokedexFlags[var0 + 18] << 8) | (gPokedexFlags[var0 + 19] << 12); - gUnknown_0202C5F0[6] = gPokedexFlags[var0 + 20] | + gLinkSendBuffer[6] = gPokedexFlags[var0 + 20] | (gPokedexFlags[var0 + 21] << 4) | (gPokedexFlags[var0 + 22] << 8) | (gPokedexFlags[var0 + 23] << 12); - gUnknown_0202C5F0[7] = gPokedexFlags[var0 + 24] | + gLinkSendBuffer[7] = gPokedexFlags[var0 + 24] | (gPokedexFlags[var0 + 25] << 4) | (gPokedexFlags[var0 + 26] << 8) | (gPokedexFlags[var0 + 27] << 12); @@ -1448,73 +1448,73 @@ static int sub_5EEC(void) else { for (i = 0; i < 8; i++) - gUnknown_0202C5F0[i] = 0; + gLinkSendBuffer[i] = 0; } - gUnknown_0201C180++; + gPokedexLinkSendCounter++; return 0; } -static int sub_6144(void) +static int ClientSendPokedexFlags(void) { int i; u16 var0; - if (gUnknown_0201B128 == 0) + if (gPokedexLinkTransferPhase == 0) { - switch (gUnknown_0202C544) + switch (gPokedexClientHandshakeState) { case 0: if (JOY_NEW(A_BUTTON)) { - gUnknown_0202C5F0[0] = 0xFEFE; + gLinkSendBuffer[0] = 0xFEFE; } else { for (i = 0; i < 8; i++) - gUnknown_0202C5F0[i] = 0; + gLinkSendBuffer[i] = 0; } return 0; case 1: - gUnknown_0202C5F0[0] = 0xECEC; + gLinkSendBuffer[0] = 0xECEC; return 0; } return 0; } - else if (gUnknown_0201C180 < 8) + else if (gPokedexLinkSendCounter < 8) { for (i = 0; i < 8; i++) - gUnknown_0202C5F0[i] = 0xDDDD; + gLinkSendBuffer[i] = 0xDDDD; } - else if (gUnknown_0201C180 < 16) + else if (gPokedexLinkSendCounter < 16) { - var0 = (gUnknown_0201C180 - 8) * 28; - gUnknown_0202C5F0[0] = gUnknown_0201C180; - gUnknown_0202C5F0[1] = gPokedexFlags[var0] | + var0 = (gPokedexLinkSendCounter - 8) * 28; + gLinkSendBuffer[0] = gPokedexLinkSendCounter; + gLinkSendBuffer[1] = gPokedexFlags[var0] | (gPokedexFlags[var0 + 1] << 4) | (gPokedexFlags[var0 + 2] << 8) | (gPokedexFlags[var0 + 3] << 12); - gUnknown_0202C5F0[2] = gPokedexFlags[var0 + 4] | + gLinkSendBuffer[2] = gPokedexFlags[var0 + 4] | (gPokedexFlags[var0 + 5] << 4) | (gPokedexFlags[var0 + 6] << 8) | (gPokedexFlags[var0 + 7] << 12); - gUnknown_0202C5F0[3] = gPokedexFlags[var0 + 8] | + gLinkSendBuffer[3] = gPokedexFlags[var0 + 8] | (gPokedexFlags[var0 + 9] << 4) | (gPokedexFlags[var0 + 10] << 8) | (gPokedexFlags[var0 + 11] << 12); - gUnknown_0202C5F0[4] = gPokedexFlags[var0 + 12] | + gLinkSendBuffer[4] = gPokedexFlags[var0 + 12] | (gPokedexFlags[var0 + 13] << 4) | (gPokedexFlags[var0 + 14] << 8) | (gPokedexFlags[var0 + 15] << 12); - gUnknown_0202C5F0[5] = gPokedexFlags[var0 + 16] | + gLinkSendBuffer[5] = gPokedexFlags[var0 + 16] | (gPokedexFlags[var0 + 17] << 4) | (gPokedexFlags[var0 + 18] << 8) | (gPokedexFlags[var0 + 19] << 12); - gUnknown_0202C5F0[6] = gPokedexFlags[var0 + 20] | + gLinkSendBuffer[6] = gPokedexFlags[var0 + 20] | (gPokedexFlags[var0 + 21] << 4) | (gPokedexFlags[var0 + 22] << 8) | (gPokedexFlags[var0 + 23] << 12); - gUnknown_0202C5F0[7] = gPokedexFlags[var0 + 24] | + gLinkSendBuffer[7] = gPokedexFlags[var0 + 24] | (gPokedexFlags[var0 + 25] << 4) | (gPokedexFlags[var0 + 26] << 8) | (gPokedexFlags[var0 + 27] << 12); @@ -1522,38 +1522,38 @@ static int sub_6144(void) else { for (i = 0; i < 8; i++) - gUnknown_0202C5F0[i] = 0; + gLinkSendBuffer[i] = 0; } - gUnknown_0201C180++; + gPokedexLinkSendCounter++; return 0; } -//Link transfer as host (See sub_65DC for client) -int sub_639C(void) +//Link transfer as host (See ClientReceivePokedexFlags for client) +int MasterReceivePokedexFlags(void) { int i, j; u16 var0; u16 arr0[28]; - if (gUnknown_0201B128 == 0) + if (gPokedexLinkTransferPhase == 0) { - switch (gUnknown_0201C1BC) + switch (gPokedexMasterHandshakeState) { case 0: - if (gUnknown_0201A4D0[0][0] == 0xFEFE || gUnknown_0201A4D0[0][1] == 0xFEFE) + if (gLinkRecvBuffer[0][0] == 0xFEFE || gLinkRecvBuffer[0][1] == 0xFEFE) { - gUnknown_0201C1BC = 1; + gPokedexMasterHandshakeState = 1; } break; case 1: - if (gUnknown_0201A4D0[0][0] == 0xECEC && gUnknown_0201A4D0[0][1] == 0xECEC) + if (gLinkRecvBuffer[0][0] == 0xECEC && gLinkRecvBuffer[0][1] == 0xECEC) { - gUnknown_0201B128 = -1; - Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMITTING_ACTIVE; - gUnknown_0201C180 = 1; + gPokedexLinkTransferPhase = -1; + gPokedexPopupTypeIndex = POKEDEX_POPUP_TRANSMITTING_ACTIVE; + gPokedexLinkSendCounter = 1; } - else if (++gUnknown_0202BECC > 10) + else if (++gPokedexHandshakeRetryCount > 10) { return 1; } @@ -1562,87 +1562,87 @@ int sub_639C(void) } else { - u16 var1 = gUnknown_0201A4D0[0][1] - 8; + u16 var1 = gLinkRecvBuffer[0][1] - 8; if (var1 > 7) return 0; - gUnknown_0202C5B4 = gUnknown_0201A4D0[0][1]; - arr0[0] = gUnknown_0201A4D0[0][3] & 0xF; - arr0[1] = (gUnknown_0201A4D0[0][3] & 0xF0) >> 4; - arr0[2] = (gUnknown_0201A4D0[0][3] & 0xF00) >> 8; - arr0[3] = (gUnknown_0201A4D0[0][3] & 0xF000) >> 12; - arr0[4] = gUnknown_0201A4D0[0][5] & 0xF; - arr0[5] = (gUnknown_0201A4D0[0][5] & 0xF0) >> 4; - arr0[6] = (gUnknown_0201A4D0[0][5] & 0xF00) >> 8; - arr0[7] = (gUnknown_0201A4D0[0][5] & 0xF000) >> 12; - arr0[8] = gUnknown_0201A4D0[0][7] & 0xF; - arr0[9] = (gUnknown_0201A4D0[0][7] & 0xF0) >> 4; - arr0[10] = (gUnknown_0201A4D0[0][7] & 0xF00) >> 8; - arr0[11] = (gUnknown_0201A4D0[0][7] & 0xF000) >> 12; - arr0[12] = gUnknown_0201A4D0[0][9] & 0xF; - arr0[13] = (gUnknown_0201A4D0[0][9] & 0xF0) >> 4; - arr0[14] = (gUnknown_0201A4D0[0][9] & 0xF00) >> 8; - arr0[15] = (gUnknown_0201A4D0[0][9] & 0xF000) >> 12; - arr0[16] = gUnknown_0201A4D0[0][11] & 0xF; - arr0[17] = (gUnknown_0201A4D0[0][11] & 0xF0) >> 4; - arr0[18] = (gUnknown_0201A4D0[0][11] & 0xF00) >> 8; - arr0[19] = (gUnknown_0201A4D0[0][11] & 0xF000) >> 12; - arr0[20] = gUnknown_0201A4D0[0][13] & 0xF; - arr0[21] = (gUnknown_0201A4D0[0][13] & 0xF0) >> 4; - arr0[22] = (gUnknown_0201A4D0[0][13] & 0xF00) >> 8; - arr0[23] = (gUnknown_0201A4D0[0][13] & 0xF000) >> 12; - arr0[24] = gUnknown_0201A4D0[0][15] & 0xF; - arr0[25] = (gUnknown_0201A4D0[0][15] & 0xF0) >> 4; - arr0[26] = (gUnknown_0201A4D0[0][15] & 0xF00) >> 8; - arr0[27] = (gUnknown_0201A4D0[0][15] & 0xF000) >> 12; + gPokedexLinkChunkIndex = gLinkRecvBuffer[0][1]; + arr0[0] = gLinkRecvBuffer[0][3] & 0xF; + arr0[1] = (gLinkRecvBuffer[0][3] & 0xF0) >> 4; + arr0[2] = (gLinkRecvBuffer[0][3] & 0xF00) >> 8; + arr0[3] = (gLinkRecvBuffer[0][3] & 0xF000) >> 12; + arr0[4] = gLinkRecvBuffer[0][5] & 0xF; + arr0[5] = (gLinkRecvBuffer[0][5] & 0xF0) >> 4; + arr0[6] = (gLinkRecvBuffer[0][5] & 0xF00) >> 8; + arr0[7] = (gLinkRecvBuffer[0][5] & 0xF000) >> 12; + arr0[8] = gLinkRecvBuffer[0][7] & 0xF; + arr0[9] = (gLinkRecvBuffer[0][7] & 0xF0) >> 4; + arr0[10] = (gLinkRecvBuffer[0][7] & 0xF00) >> 8; + arr0[11] = (gLinkRecvBuffer[0][7] & 0xF000) >> 12; + arr0[12] = gLinkRecvBuffer[0][9] & 0xF; + arr0[13] = (gLinkRecvBuffer[0][9] & 0xF0) >> 4; + arr0[14] = (gLinkRecvBuffer[0][9] & 0xF00) >> 8; + arr0[15] = (gLinkRecvBuffer[0][9] & 0xF000) >> 12; + arr0[16] = gLinkRecvBuffer[0][11] & 0xF; + arr0[17] = (gLinkRecvBuffer[0][11] & 0xF0) >> 4; + arr0[18] = (gLinkRecvBuffer[0][11] & 0xF00) >> 8; + arr0[19] = (gLinkRecvBuffer[0][11] & 0xF000) >> 12; + arr0[20] = gLinkRecvBuffer[0][13] & 0xF; + arr0[21] = (gLinkRecvBuffer[0][13] & 0xF0) >> 4; + arr0[22] = (gLinkRecvBuffer[0][13] & 0xF00) >> 8; + arr0[23] = (gLinkRecvBuffer[0][13] & 0xF000) >> 12; + arr0[24] = gLinkRecvBuffer[0][15] & 0xF; + arr0[25] = (gLinkRecvBuffer[0][15] & 0xF0) >> 4; + arr0[26] = (gLinkRecvBuffer[0][15] & 0xF00) >> 8; + arr0[27] = (gLinkRecvBuffer[0][15] & 0xF000) >> 12; for (i = 0; i < 28; i++) { - var0 = (gUnknown_0202C5B4 - 8) * 28 + i; + var0 = (gPokedexLinkChunkIndex - 8) * 28 + i; if (gPokedexFlags[var0] == SPECIES_UNSEEN && arr0[i] == 4) gPokedexFlagExchangeBuffer[var0] = SPECIES_SHARED; else if (gPokedexFlags[var0] == SPECIES_SEEN && arr0[i] == 4) gPokedexFlagExchangeBuffer[var0] = SPECIES_SHARED_AND_SEEN; } - if (gUnknown_0202C5B4 == 15) + if (gPokedexLinkChunkIndex == 15) return -1; } for (i = 0; i < 8; i++) { for (j = 0; j < 2; j++) - gUnknown_0201A4D0[i][j] = 0; + gLinkRecvBuffer[i][j] = 0; } return 0; } -//Link transfer as client (See sub_639C for host) -static int sub_65DC(void) +//Link transfer as client (See MasterReceivePokedexFlags for host) +static int ClientReceivePokedexFlags(void) { int i, j; u16 var0; u16 arr0[28]; - if (gUnknown_0201B128 == 0) + if (gPokedexLinkTransferPhase == 0) { - switch (gUnknown_0202C544) + switch (gPokedexClientHandshakeState) { case 0: - if (gUnknown_0201A4D0[0][0] == 0xFEFE || gUnknown_0201A4D0[0][1] == 0xFEFE) + if (gLinkRecvBuffer[0][0] == 0xFEFE || gLinkRecvBuffer[0][1] == 0xFEFE) { - gUnknown_0202C544 = 1; + gPokedexClientHandshakeState = 1; } break; case 1: - if (gUnknown_0201A4D0[0][0] == 0xECEC && gUnknown_0201A4D0[0][1] == 0xECEC) + if (gLinkRecvBuffer[0][0] == 0xECEC && gLinkRecvBuffer[0][1] == 0xECEC) { - gUnknown_0201B128 = -1; - Pokedex_PopupTypeIx = POKEDEX_POPUP_TRANSMITTING_ACTIVE; - gUnknown_0201C180 = 1; + gPokedexLinkTransferPhase = -1; + gPokedexPopupTypeIndex = POKEDEX_POPUP_TRANSMITTING_ACTIVE; + gPokedexLinkSendCounter = 1; } - else if (++gUnknown_0202BECC > 10) + else if (++gPokedexHandshakeRetryCount > 10) { return 1; } @@ -1651,57 +1651,57 @@ static int sub_65DC(void) } else { - u16 var1 = gUnknown_0201A4D0[0][0] - 8; + u16 var1 = gLinkRecvBuffer[0][0] - 8; if (var1 > 7) return 0; - gUnknown_0202C5B4 = gUnknown_0201A4D0[0][0]; - arr0[0] = gUnknown_0201A4D0[0][2] & 0xF; - arr0[1] = (gUnknown_0201A4D0[0][2] & 0xF0) >> 4; - arr0[2] = (gUnknown_0201A4D0[0][2] & 0xF00) >> 8; - arr0[3] = (gUnknown_0201A4D0[0][2] & 0xF000) >> 12; - arr0[4] = gUnknown_0201A4D0[0][4] & 0xF; - arr0[5] = (gUnknown_0201A4D0[0][4] & 0xF0) >> 4; - arr0[6] = (gUnknown_0201A4D0[0][4] & 0xF00) >> 8; - arr0[7] = (gUnknown_0201A4D0[0][4] & 0xF000) >> 12; - arr0[8] = gUnknown_0201A4D0[0][6] & 0xF; - arr0[9] = (gUnknown_0201A4D0[0][6] & 0xF0) >> 4; - arr0[10] = (gUnknown_0201A4D0[0][6] & 0xF00) >> 8; - arr0[11] = (gUnknown_0201A4D0[0][6] & 0xF000) >> 12; - arr0[12] = gUnknown_0201A4D0[0][8] & 0xF; - arr0[13] = (gUnknown_0201A4D0[0][8] & 0xF0) >> 4; - arr0[14] = (gUnknown_0201A4D0[0][8] & 0xF00) >> 8; - arr0[15] = (gUnknown_0201A4D0[0][8] & 0xF000) >> 12; - arr0[16] = gUnknown_0201A4D0[0][10] & 0xF; - arr0[17] = (gUnknown_0201A4D0[0][10] & 0xF0) >> 4; - arr0[18] = (gUnknown_0201A4D0[0][10] & 0xF00) >> 8; - arr0[19] = (gUnknown_0201A4D0[0][10] & 0xF000) >> 12; - arr0[20] = gUnknown_0201A4D0[0][12] & 0xF; - arr0[21] = (gUnknown_0201A4D0[0][12] & 0xF0) >> 4; - arr0[22] = (gUnknown_0201A4D0[0][12] & 0xF00) >> 8; - arr0[23] = (gUnknown_0201A4D0[0][12] & 0xF000) >> 12; - arr0[24] = gUnknown_0201A4D0[0][14] & 0xF; - arr0[25] = (gUnknown_0201A4D0[0][14] & 0xF0) >> 4; - arr0[26] = (gUnknown_0201A4D0[0][14] & 0xF00) >> 8; - arr0[27] = (gUnknown_0201A4D0[0][14] & 0xF000) >> 12; + gPokedexLinkChunkIndex = gLinkRecvBuffer[0][0]; + arr0[0] = gLinkRecvBuffer[0][2] & 0xF; + arr0[1] = (gLinkRecvBuffer[0][2] & 0xF0) >> 4; + arr0[2] = (gLinkRecvBuffer[0][2] & 0xF00) >> 8; + arr0[3] = (gLinkRecvBuffer[0][2] & 0xF000) >> 12; + arr0[4] = gLinkRecvBuffer[0][4] & 0xF; + arr0[5] = (gLinkRecvBuffer[0][4] & 0xF0) >> 4; + arr0[6] = (gLinkRecvBuffer[0][4] & 0xF00) >> 8; + arr0[7] = (gLinkRecvBuffer[0][4] & 0xF000) >> 12; + arr0[8] = gLinkRecvBuffer[0][6] & 0xF; + arr0[9] = (gLinkRecvBuffer[0][6] & 0xF0) >> 4; + arr0[10] = (gLinkRecvBuffer[0][6] & 0xF00) >> 8; + arr0[11] = (gLinkRecvBuffer[0][6] & 0xF000) >> 12; + arr0[12] = gLinkRecvBuffer[0][8] & 0xF; + arr0[13] = (gLinkRecvBuffer[0][8] & 0xF0) >> 4; + arr0[14] = (gLinkRecvBuffer[0][8] & 0xF00) >> 8; + arr0[15] = (gLinkRecvBuffer[0][8] & 0xF000) >> 12; + arr0[16] = gLinkRecvBuffer[0][10] & 0xF; + arr0[17] = (gLinkRecvBuffer[0][10] & 0xF0) >> 4; + arr0[18] = (gLinkRecvBuffer[0][10] & 0xF00) >> 8; + arr0[19] = (gLinkRecvBuffer[0][10] & 0xF000) >> 12; + arr0[20] = gLinkRecvBuffer[0][12] & 0xF; + arr0[21] = (gLinkRecvBuffer[0][12] & 0xF0) >> 4; + arr0[22] = (gLinkRecvBuffer[0][12] & 0xF00) >> 8; + arr0[23] = (gLinkRecvBuffer[0][12] & 0xF000) >> 12; + arr0[24] = gLinkRecvBuffer[0][14] & 0xF; + arr0[25] = (gLinkRecvBuffer[0][14] & 0xF0) >> 4; + arr0[26] = (gLinkRecvBuffer[0][14] & 0xF00) >> 8; + arr0[27] = (gLinkRecvBuffer[0][14] & 0xF000) >> 12; for (i = 0; i < 28; i++) { - var0 = (gUnknown_0202C5B4 - 8) * 28 + i; + var0 = (gPokedexLinkChunkIndex - 8) * 28 + i; if (gPokedexFlags[var0] == SPECIES_UNSEEN && arr0[i] == 4) gPokedexFlagExchangeBuffer[var0] = SPECIES_SHARED; else if (gPokedexFlags[var0] == SPECIES_SEEN && arr0[i] == 4) gPokedexFlagExchangeBuffer[var0] = SPECIES_SHARED_AND_SEEN; } - if (gUnknown_0202C5B4 == 15) + if (gPokedexLinkChunkIndex == 15) return -1; } for (i = 0; i < 8; i++) { for (j = 0; j < 2; j++) - gUnknown_0201A4D0[i][j] = 0; + gLinkRecvBuffer[i][j] = 0; } return 0; @@ -1714,7 +1714,7 @@ static void PrintSelectedMonDexNum(s16 species) u16 var1; u16 var2; - DmaFill16(3, 0, gUnknown_03000000, 0x800); + DmaFill16(3, 0, gTempGfxBuffer, 0x800); var0 = 0; if (species == SPECIES_JIRACHI) { @@ -1747,14 +1747,14 @@ static void PrintSelectedMonDexNum(s16 species) if (var2 == 0) var2 = 4; - DmaCopy16(3, &gPokedexTextGlyphs_Gfx[var1], gUnknown_0202BE30, 0x20); - DmaCopy16(3, &gPokedexTextGlyphs_Gfx[var1 + 0x400], gUnknown_0201B130, 0x20); - sub_71DC(var2, var0, 0); + DmaCopy16(3, &gPokedexTextGlyphs_Gfx[var1], gGlyphUpperRowBuffer, 0x20); + DmaCopy16(3, &gPokedexTextGlyphs_Gfx[var1 + 0x400], gGlyphLowerRowBuffer, 0x20); + BlitGlyphToTileBuffer(var2, var0, 0); var0 += var2; } - CopyBgTilesRect(gUnknown_03000000, (void *)0x06004C00, 8, 2); - DmaFill16(3, 0, gUnknown_03000000, 0x800); + CopyBgTilesRect(gTempGfxBuffer, (void *)0x06004C00, 8, 2); + DmaFill16(3, 0, gTempGfxBuffer, 0x800); var0 = 0; } else @@ -1772,14 +1772,14 @@ static void PrintSelectedMonDexNum(s16 species) if (var2 == 0) var2 = 6; - DmaCopy16(3, &gPokedexTextGlyphs_Gfx[var1], gUnknown_0202BE30, 0x20); - DmaCopy16(3, &gPokedexTextGlyphs_Gfx[0x400 + var1], gUnknown_0201B130, 0x20); - sub_71DC(var2, var0, 0); + DmaCopy16(3, &gPokedexTextGlyphs_Gfx[var1], gGlyphUpperRowBuffer, 0x20); + DmaCopy16(3, &gPokedexTextGlyphs_Gfx[0x400 + var1], gGlyphLowerRowBuffer, 0x20); + BlitGlyphToTileBuffer(var2, var0, 0); var0 += var2; } - CopyBgTilesRect(gUnknown_03000000, (void *)0x06004D00, 9, 2); - DmaFill16(3, 0, gUnknown_03000000, 0x800); + CopyBgTilesRect(gTempGfxBuffer, (void *)0x06004D00, 9, 2); + DmaFill16(3, 0, gTempGfxBuffer, 0x800); } else { @@ -1840,7 +1840,7 @@ void PrintDexNumbersFromListPosition(s16 listPosition) u16 var1; u16 var2; - DmaFill16(3, 0, gUnknown_03000000, 0x800); + DmaFill16(3, 0, gTempGfxBuffer, 0x800); var0 = 0; for (i = 0; i < ENTRIES_SHOWN_COUNT; i++) { @@ -1883,22 +1883,22 @@ void PrintDexNumbersFromListPosition(s16 listPosition) if (var2 == 0) var2 = 4; - DmaCopy16(3, &gPokedexTextGlyphs_Gfx[var1], gUnknown_0202BE30, 0x20); - DmaCopy16(3, &gPokedexTextGlyphs_Gfx[0x400 + var1], gUnknown_0201B130, 0x20); - sub_71DC(var2, var0, 0); + DmaCopy16(3, &gPokedexTextGlyphs_Gfx[var1], gGlyphUpperRowBuffer, 0x20); + DmaCopy16(3, &gPokedexTextGlyphs_Gfx[0x400 + var1], gGlyphLowerRowBuffer, 0x20); + BlitGlyphToTileBuffer(var2, var0, 0); var0 += var2; } - CopyBgTilesRect(gUnknown_03000000, (void *)0x06000000 + gUnknown_086A64F0[i], 8, 2); - DmaFill16(3, 0, gUnknown_03000000, 0x800); + CopyBgTilesRect(gTempGfxBuffer, (void *)0x06000000 + gPokedexListNameVramOffsets[i], 8, 2); + DmaFill16(3, 0, gTempGfxBuffer, 0x800); var0 = 0; } else { for (j = 0; j < 7; j++) - CopyBgTilesRect((void *)&gPokedexTextGlyphs_Gfx[ENGLISH_GLYPHS_START], (void *)0x06000000 + gUnknown_086A64F0[i] + j * 0x20, 1, 2); + CopyBgTilesRect((void *)&gPokedexTextGlyphs_Gfx[ENGLISH_GLYPHS_START], (void *)0x06000000 + gPokedexListNameVramOffsets[i] + j * 0x20, 1, 2); - CopyBgTilesRect((void *)gPokedexTextGlyphs_Gfx, (void *)0x06000000 + gUnknown_086A64F0[i] + j * 0x20, 1, 2); + CopyBgTilesRect((void *)gPokedexTextGlyphs_Gfx, (void *)0x06000000 + gPokedexListNameVramOffsets[i] + j * 0x20, 1, 2); } } } @@ -1915,7 +1915,7 @@ static void PrintCaughtBallFromListPosition(s16 position) } } -void sub_6F78(s16 species) +void LoadMonPortrait(s16 species) { s16 state = gPokedexFlags[gPokedexSelectedMon]; s16 var1 = species / 15; @@ -1933,7 +1933,7 @@ void sub_6F78(s16 species) case SPECIES_SHARED: case SPECIES_SHARED_AND_SEEN: CopyBgTilesRect(gMonPortraitGroupGfx[var1] + var2 * 0x300, (void *)0x06013400, 24, 1); - sub_10170(gMonPortraitGroupPals[var1] + var2 * 0x20, (void *)OBJ_PLTT + 0x20, 0x20, 0xE); + DarkenPalette(gMonPortraitGroupPals[var1] + var2 * 0x20, (void *)OBJ_PLTT + 0x20, 0x20, 0xE); break; case SPECIES_CAUGHT: CopyBgTilesRect(gMonPortraitGroupGfx[var1] + var2 * 0x300, (void *)0x06013400, 24, 1); @@ -1942,7 +1942,7 @@ void sub_6F78(s16 species) } } -void sub_70E0(s16 species, u32 page) +void PrintDexDescription(s16 species, u32 page) { int i, j; int var0; @@ -1950,7 +1950,7 @@ void sub_70E0(s16 species, u32 page) u16 var2; var0 = 0; - DmaFill16(3, 0, gUnknown_03000000, 0x1800); + DmaFill16(3, 0, gTempGfxBuffer, 0x1800); for (i = 0; i < 3; i++) { for (j = 0; j < 42; j++) @@ -1960,19 +1960,19 @@ void sub_70E0(s16 species, u32 page) if (var2 == 0) var2 = 4; - DmaCopy16(3, &gPokedexTextGlyphs_Gfx[var1], gUnknown_0202BE30, 0x20); - DmaCopy16(3, &gPokedexTextGlyphs_Gfx[0x400 + var1], gUnknown_0201B130, 0x20); - sub_71DC(var2, var0, i); + DmaCopy16(3, &gPokedexTextGlyphs_Gfx[var1], gGlyphUpperRowBuffer, 0x20); + DmaCopy16(3, &gPokedexTextGlyphs_Gfx[0x400 + var1], gGlyphLowerRowBuffer, 0x20); + BlitGlyphToTileBuffer(var2, var0, i); var0 += var2; } var0 = 0; } - DmaCopy16(3, gUnknown_03000000, (void *)VRAM + 0x5C00, 0x1800); + DmaCopy16(3, gTempGfxBuffer, (void *)VRAM + 0x5C00, 0x1800); } -void sub_71DC(s32 arg0, s32 arg1, s32 arg2) { +void BlitGlyphToTileBuffer(s32 arg0, s32 arg1, s32 arg2) { int i; s32 temp_r2; @@ -1984,79 +1984,79 @@ void sub_71DC(s32 arg0, s32 arg1, s32 arg2) { case 0: for(i = 0; i < 8; i++) { - gUnknown_03000000[i * 2 + temp_r2] |= gUnknown_0202BE30[i * 2]; - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= gUnknown_0202BE30[i * 2 + 1] & 0xFF; - gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= gUnknown_0201B130[i * 2]; - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= gUnknown_0201B130[i * 2 + 1] & 0xFF; + gTempGfxBuffer[i * 2 + temp_r2] |= gGlyphUpperRowBuffer[i * 2]; + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= gGlyphUpperRowBuffer[i * 2 + 1] & 0xFF; + gTempGfxBuffer[i * 2 + temp_r2 + 0x200] |= gGlyphLowerRowBuffer[i * 2]; + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= gGlyphLowerRowBuffer[i * 2 + 1] & 0xFF; } return; case 1: for(i = 0; i <=7; i++) { - gUnknown_03000000[i * 2 + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF) << 4; - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xF000) >> 0xC) | ((gUnknown_0202BE30[i * 2 + 1] & 0xFF) << 4); - gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF) << 4; - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xF000) >> 0xC) | ((gUnknown_0201B130[i * 2 + 1] & 0xFF) << 4); + gTempGfxBuffer[i * 2 + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFFF) << 4; + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= ((gGlyphUpperRowBuffer[i * 2] & 0xF000) >> 0xC) | ((gGlyphUpperRowBuffer[i * 2 + 1] & 0xFF) << 4); + gTempGfxBuffer[i * 2 + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFFF) << 4; + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= ((gGlyphLowerRowBuffer[i * 2] & 0xF000) >> 0xC) | ((gGlyphLowerRowBuffer[i * 2 + 1] & 0xFF) << 4); } return; case 2: for(i = 0; i <=7; i++) { - gUnknown_03000000[i * 2 + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 8; - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xFF00) >> 8) | (gUnknown_0202BE30[i * 2 + 1] & 0xFF) << 8; - gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 8; - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xFF00) >> 8) | (gUnknown_0201B130[i * 2 + 1] & 0xFF) << 8; + gTempGfxBuffer[i * 2 + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFF) << 8; + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= ((gGlyphUpperRowBuffer[i * 2] & 0xFF00) >> 8) | (gGlyphUpperRowBuffer[i * 2 + 1] & 0xFF) << 8; + gTempGfxBuffer[i * 2 + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFF) << 8; + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= ((gGlyphLowerRowBuffer[i * 2] & 0xFF00) >> 8) | (gGlyphLowerRowBuffer[i * 2 + 1] & 0xFF) << 8; } return; case 3: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF) << 0xC; - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xFFF0) >> 0x4) | ((gUnknown_0202BE30[i * 2 + 1] & 0xF) << 0xC); - gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= (gUnknown_0202BE30[i * 2 + 1] & 0xF0) >> 0x4; + gTempGfxBuffer[(i * 2) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xF) << 0xC; + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= ((gGlyphUpperRowBuffer[i * 2] & 0xFFF0) >> 0x4) | ((gGlyphUpperRowBuffer[i * 2 + 1] & 0xF) << 0xC); + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2 + 1] & 0xF0) >> 0x4; - gUnknown_03000000[(i * 2) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF) << 0xC; - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xFFF0) >> 0x4) | ((gUnknown_0201B130[i * 2 + 1] & 0xF) << 0xC); - gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2 + 1] & 0xF0) >> 0x4; + gTempGfxBuffer[(i * 2) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xF) << 0xC; + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= ((gGlyphLowerRowBuffer[i * 2] & 0xFFF0) >> 0x4) | ((gGlyphLowerRowBuffer[i * 2 + 1] & 0xF) << 0xC); + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2 + 1] & 0xF0) >> 0x4; } return; case 4: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= gUnknown_0202BE30[i * 2]; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= gUnknown_0202BE30[i * 2 + 1] & 0xFF; - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= gUnknown_0201B130[i * 2]; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= gUnknown_0201B130[i * 2 + 1] & 0xFF; + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= gGlyphUpperRowBuffer[i * 2]; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2] |= gGlyphUpperRowBuffer[i * 2 + 1] & 0xFF; + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= gGlyphLowerRowBuffer[i * 2]; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2 + 0x200] |= gGlyphLowerRowBuffer[i * 2 + 1] & 0xFF; } return; case 5: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF) << 4; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xF000) >> 0xC) | ((gUnknown_0202BE30[i * 2 + 1] & 0xFF) << 4); - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF) << 4; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xF000) >> 0xC) | ((gUnknown_0201B130[i * 2 + 1] & 0xFF) << 4); + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFFF) << 4; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2] |= ((gGlyphUpperRowBuffer[i * 2] & 0xF000) >> 0xC) | ((gGlyphUpperRowBuffer[i * 2 + 1] & 0xFF) << 4); + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFFF) << 4; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2 + 0x200] |= ((gGlyphLowerRowBuffer[i * 2] & 0xF000) >> 0xC) | ((gGlyphLowerRowBuffer[i * 2 + 1] & 0xFF) << 4); } return; case 6: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 8; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xFF00) >> 0x8) | ((gUnknown_0202BE30[i * 2 + 1] & 0xFF) << 8); - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 8; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xFF00) >> 0x8) | ((gUnknown_0201B130[i * 2 + 1] & 0xFF) << 8); + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFF) << 8; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2] |= ((gGlyphUpperRowBuffer[i * 2] & 0xFF00) >> 0x8) | ((gGlyphUpperRowBuffer[i * 2 + 1] & 0xFF) << 8); + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFF) << 8; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2 + 0x200] |= ((gGlyphLowerRowBuffer[i * 2] & 0xFF00) >> 0x8) | ((gGlyphLowerRowBuffer[i * 2 + 1] & 0xFF) << 8); } return; case 7: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF) << 0xC; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xFFF0) >> 0x4) | ((gUnknown_0202BE30[i * 2 + 1] & 0xF) << 0xC); - gUnknown_03000000[(i * 2 + 0x11) + temp_r2] |= (gUnknown_0202BE30[i * 2 + 1] & 0xF0) >> 4; - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF) << 0xC; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xFFF0) >> 0x4) | ((gUnknown_0201B130[i * 2 + 1] & 0xF) << 0xC); - gUnknown_03000000[(i * 2 + 0x11) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2 + 1] & 0xF0) >> 4; + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xF) << 0xC; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2] |= ((gGlyphUpperRowBuffer[i * 2] & 0xFFF0) >> 0x4) | ((gGlyphUpperRowBuffer[i * 2 + 1] & 0xF) << 0xC); + gTempGfxBuffer[(i * 2 + 0x11) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2 + 1] & 0xF0) >> 4; + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xF) << 0xC; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2 + 0x200] |= ((gGlyphLowerRowBuffer[i * 2] & 0xFFF0) >> 0x4) | ((gGlyphLowerRowBuffer[i * 2 + 1] & 0xF) << 0xC); + gTempGfxBuffer[(i * 2 + 0x11) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2 + 1] & 0xF0) >> 4; } return; @@ -2069,80 +2069,80 @@ void sub_71DC(s32 arg0, s32 arg1, s32 arg2) { case 0: for(i = 0; i <=7; i++) { - gUnknown_03000000[i * 2 + temp_r2] |= gUnknown_0202BE30[i * 2]; - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= gUnknown_0202BE30[i * 2 + 1] & 0xF; - gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= gUnknown_0201B130[i * 2]; - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= gUnknown_0201B130[i * 2 + 1] & 0xF; + gTempGfxBuffer[i * 2 + temp_r2] |= gGlyphUpperRowBuffer[i * 2]; + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= gGlyphUpperRowBuffer[i * 2 + 1] & 0xF; + gTempGfxBuffer[i * 2 + temp_r2 + 0x200] |= gGlyphLowerRowBuffer[i * 2]; + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= gGlyphLowerRowBuffer[i * 2 + 1] & 0xF; } return; case 1: for(i = 0; i <=7; i++) { - gUnknown_03000000[i * 2 + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF) << 4; - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xF000) >> 0xC) | ((gUnknown_0202BE30[i * 2 + 1] & 0xF) << 4); - gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF) << 4; - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xF000) >> 0xC) | ((gUnknown_0201B130[i * 2 + 1] & 0xF) << 4); + gTempGfxBuffer[i * 2 + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFFF) << 4; + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= ((gGlyphUpperRowBuffer[i * 2] & 0xF000) >> 0xC) | ((gGlyphUpperRowBuffer[i * 2 + 1] & 0xF) << 4); + gTempGfxBuffer[i * 2 + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFFF) << 4; + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= ((gGlyphLowerRowBuffer[i * 2] & 0xF000) >> 0xC) | ((gGlyphLowerRowBuffer[i * 2 + 1] & 0xF) << 4); } return; case 2: for(i = 0; i <=7; i++) { - gUnknown_03000000[i * 2 + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 8; - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xFF00) >> 0x8) | ((gUnknown_0202BE30[i * 2 + 1] & 0xF) << 8); - gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 8; - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xFF00) >> 0x8) | ((gUnknown_0201B130[i * 2 + 1] & 0xF) << 8); + gTempGfxBuffer[i * 2 + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFF) << 8; + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= ((gGlyphUpperRowBuffer[i * 2] & 0xFF00) >> 0x8) | ((gGlyphUpperRowBuffer[i * 2 + 1] & 0xF) << 8); + gTempGfxBuffer[i * 2 + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFF) << 8; + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= ((gGlyphLowerRowBuffer[i * 2] & 0xFF00) >> 0x8) | ((gGlyphLowerRowBuffer[i * 2 + 1] & 0xF) << 8); } return; case 3: for(i = 0; i <=7; i++) { - gUnknown_03000000[i * 2 + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF) << 0xC; - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xFFF0) >> 0x4) | ((gUnknown_0202BE30[i * 2 + 1] & 0xF) << 0xC); - gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF) << 0xC; - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xFFF0) >> 0x4) | ((gUnknown_0201B130[i * 2 + 1] & 0xF) << 0xC); + gTempGfxBuffer[i * 2 + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xF) << 0xC; + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= ((gGlyphUpperRowBuffer[i * 2] & 0xFFF0) >> 0x4) | ((gGlyphUpperRowBuffer[i * 2 + 1] & 0xF) << 0xC); + gTempGfxBuffer[i * 2 + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xF) << 0xC; + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= ((gGlyphLowerRowBuffer[i * 2] & 0xFFF0) >> 0x4) | ((gGlyphLowerRowBuffer[i * 2 + 1] & 0xF) << 0xC); } return; case 4: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= gUnknown_0202BE30[i * 2]; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= gUnknown_0202BE30[i * 2 + 1] & 0xF; - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= gUnknown_0201B130[i * 2]; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= gUnknown_0201B130[i * 2 + 1] & 0xF; + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= gGlyphUpperRowBuffer[i * 2]; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2] |= gGlyphUpperRowBuffer[i * 2 + 1] & 0xF; + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= gGlyphLowerRowBuffer[i * 2]; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2 + 0x200] |= gGlyphLowerRowBuffer[i * 2 + 1] & 0xF; } return; case 5: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2 + 0x1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF) << 4; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xF000) >> 0xC) | ((gUnknown_0202BE30[i * 2 + 1] & 0xF) << 4); - gUnknown_03000000[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF) << 4; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xF000) >> 0xC) | ((gUnknown_0201B130[i * 2 + 1] & 0xF) << 4); + gTempGfxBuffer[(i * 2 + 0x1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFFF) << 4; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2] |= ((gGlyphUpperRowBuffer[i * 2] & 0xF000) >> 0xC) | ((gGlyphUpperRowBuffer[i * 2 + 1] & 0xF) << 4); + gTempGfxBuffer[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFFF) << 4; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2 + 0x200] |= ((gGlyphLowerRowBuffer[i * 2] & 0xF000) >> 0xC) | ((gGlyphLowerRowBuffer[i * 2 + 1] & 0xF) << 4); } return; case 6: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2 + 0x1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 8; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xFF00) >> 8) | ((gUnknown_0202BE30[i * 2 + 1] & 0xF) << 8); - gUnknown_03000000[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 8; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xFF00) >> 0x8) | ((gUnknown_0201B130[i * 2 + 1] & 0xF) << 8); + gTempGfxBuffer[(i * 2 + 0x1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFF) << 8; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2] |= ((gGlyphUpperRowBuffer[i * 2] & 0xFF00) >> 8) | ((gGlyphUpperRowBuffer[i * 2 + 1] & 0xF) << 8); + gTempGfxBuffer[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFF) << 8; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2 + 0x200] |= ((gGlyphLowerRowBuffer[i * 2] & 0xFF00) >> 0x8) | ((gGlyphLowerRowBuffer[i * 2 + 1] & 0xF) << 8); } return; case 7: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF) << 0xC; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xFFF0) >> 4) | ((gUnknown_0202BE30[i * 2 + 1] & 0xF) << 0xC); - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF) << 0xC; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xFFF0) >> 4) | ((gUnknown_0201B130[i * 2 + 1] & 0xF) << 0xC); + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xF) << 0xC; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2] |= ((gGlyphUpperRowBuffer[i * 2] & 0xFFF0) >> 4) | ((gGlyphUpperRowBuffer[i * 2 + 1] & 0xF) << 0xC); + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xF) << 0xC; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2 + 0x200] |= ((gGlyphLowerRowBuffer[i * 2] & 0xFFF0) >> 4) | ((gGlyphLowerRowBuffer[i * 2 + 1] & 0xF) << 0xC); } return; @@ -2153,69 +2153,69 @@ void sub_71DC(s32 arg0, s32 arg1, s32 arg2) { case 0: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2) + temp_r2] |= gUnknown_0202BE30[i * 2]; - gUnknown_03000000[(i * 2) + temp_r2 + 0x200] |= gUnknown_0201B130[i * 2]; + gTempGfxBuffer[(i * 2) + temp_r2] |= gGlyphUpperRowBuffer[i * 2]; + gTempGfxBuffer[(i * 2) + temp_r2 + 0x200] |= gGlyphLowerRowBuffer[i * 2]; } return; case 1: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF) << 4; - gUnknown_03000000[(i * 2 + 0x1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF000) >> 0xC; - gUnknown_03000000[(i * 2) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF) << 4; - gUnknown_03000000[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF000) >> 0xC; + gTempGfxBuffer[(i * 2) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFFF) << 4; + gTempGfxBuffer[(i * 2 + 0x1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xF000) >> 0xC; + gTempGfxBuffer[(i * 2) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFFF) << 4; + gTempGfxBuffer[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xF000) >> 0xC; } return; case 2: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 8; - gUnknown_03000000[(i * 2 + 0x1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF00) >> 8; - gUnknown_03000000[(i * 2) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 8; - gUnknown_03000000[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF00) >> 8; + gTempGfxBuffer[(i * 2) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFF) << 8; + gTempGfxBuffer[(i * 2 + 0x1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFF00) >> 8; + gTempGfxBuffer[(i * 2) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFF) << 8; + gTempGfxBuffer[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFF00) >> 8; } return; case 3: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF) << 0xC; - gUnknown_03000000[(i * 2 + 0x1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF0) >> 4; - gUnknown_03000000[(i * 2) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF) << 0xC; - gUnknown_03000000[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF0) >> 4; + gTempGfxBuffer[(i * 2) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xF) << 0xC; + gTempGfxBuffer[(i * 2 + 0x1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFFF0) >> 4; + gTempGfxBuffer[(i * 2) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xF) << 0xC; + gTempGfxBuffer[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFFF0) >> 4; } return; case 4: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= gUnknown_0202BE30[i * 2]; - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= gUnknown_0201B130[i * 2]; + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= gGlyphUpperRowBuffer[i * 2]; + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= gGlyphLowerRowBuffer[i * 2]; } return; case 5: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2 + 0x1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF) << 4; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF000) >> 0xC; - gUnknown_03000000[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF) << 4; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF000) >> 0xC; + gTempGfxBuffer[(i * 2 + 0x1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFFF) << 4; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xF000) >> 0xC; + gTempGfxBuffer[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFFF) << 4; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xF000) >> 0xC; } return; case 6: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2 + 0x1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 8; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF00) >> 8; - gUnknown_03000000[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 8; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF00) >> 8; + gTempGfxBuffer[(i * 2 + 0x1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFF) << 8; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFF00) >> 8; + gTempGfxBuffer[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFF) << 8; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFF00) >> 8; } return; case 7: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2 + 0x1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF) << 0xC; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF0) >> 4; - gUnknown_03000000[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF) << 0xC; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF0) >> 4; + gTempGfxBuffer[(i * 2 + 0x1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xF) << 0xC; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFFF0) >> 4; + gTempGfxBuffer[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xF) << 0xC; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFFF0) >> 4; } return; } @@ -2225,65 +2225,65 @@ void sub_71DC(s32 arg0, s32 arg1, s32 arg2) { case 0: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF); - gUnknown_03000000[(i * 2) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF); + gTempGfxBuffer[(i * 2) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFFF); + gTempGfxBuffer[(i * 2) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFFF); } return; case 1: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF) << 4; - gUnknown_03000000[(i * 2) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF) << 4; + gTempGfxBuffer[(i * 2) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFFF) << 4; + gTempGfxBuffer[(i * 2) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFFF) << 4; } return; case 2: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 8; - gUnknown_03000000[(i * 2 + 0x1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF00) >> 8; - gUnknown_03000000[(i * 2) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 8; - gUnknown_03000000[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF00) >> 8; + gTempGfxBuffer[(i * 2) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFF) << 8; + gTempGfxBuffer[(i * 2 + 0x1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xF00) >> 8; + gTempGfxBuffer[(i * 2) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFF) << 8; + gTempGfxBuffer[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xF00) >> 8; } return; case 3: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF) << 0xC; - gUnknown_03000000[(i * 2 + 0x1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF0) >> 4; - gUnknown_03000000[(i * 2) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF) << 0xC; - gUnknown_03000000[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF0) >> 4; + gTempGfxBuffer[(i * 2) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xF) << 0xC; + gTempGfxBuffer[(i * 2 + 0x1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFF0) >> 4; + gTempGfxBuffer[(i * 2) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xF) << 0xC; + gTempGfxBuffer[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFF0) >> 4; } return; case 4: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF); - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF); + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFFF); + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFFF); } return; case 5: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF) << 4; - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF) << 4; + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFFF) << 4; + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFFF) << 4; } return; case 6: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 8; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF00) >> 8; - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 8; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF00) >> 8; + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFF) << 8; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xF00) >> 8; + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFF) << 8; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xF00) >> 8; } return; case 7: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF) << 0xC; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF0) >> 4; - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF) << 0xC; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF0) >> 4; + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xF) << 0xC; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFF0) >> 4; + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xF) << 0xC; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFF0) >> 4; } return; } @@ -2293,61 +2293,61 @@ void sub_71DC(s32 arg0, s32 arg1, s32 arg2) { case 0: for(i = 0; i <=7; i++) { - gUnknown_03000000[i * 2 + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF); - gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF); + gTempGfxBuffer[i * 2 + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFF); + gTempGfxBuffer[i * 2 + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFF); } return; case 1: for(i = 0; i <=7; i++) { - gUnknown_03000000[i * 2 + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 4; - gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 4; + gTempGfxBuffer[i * 2 + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFF) << 4; + gTempGfxBuffer[i * 2 + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFF) << 4; } return; case 2: for(i = 0; i <=7; i++) { - gUnknown_03000000[i * 2 + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 8; - gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 8; + gTempGfxBuffer[i * 2 + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFF) << 8; + gTempGfxBuffer[i * 2 + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFF) << 8; } return; case 3: for(i = 0; i <=7; i++) { - gUnknown_03000000[i * 2 + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF) << 0xC; - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF0) >> 4; - gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF) << 0xC; - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF0) >> 4; + gTempGfxBuffer[i * 2 + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xF) << 0xC; + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xF0) >> 4; + gTempGfxBuffer[i * 2 + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xF) << 0xC; + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xF0) >> 4; } return; case 4: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF); - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF); + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFF); + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFF); } return; case 5: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 0x4; - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 0x4; + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFF) << 0x4; + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFF) << 0x4; } return; case 6: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 0x8; - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 0x8; + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xFF) << 0x8; + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xFF) << 0x8; } return; case 7: for(i = 0; i <=7; i++) { - gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF) << 0xC; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF0) >> 4; - gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF) << 0xC; - gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF0) >> 4; + gTempGfxBuffer[(i * 2 + 1) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xF) << 0xC; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2] |= (gGlyphUpperRowBuffer[i * 2] & 0xF0) >> 4; + gTempGfxBuffer[(i * 2 + 1) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xF) << 0xC; + gTempGfxBuffer[(i * 2 + 0x10) + temp_r2 + 0x200] |= (gGlyphLowerRowBuffer[i * 2] & 0xF0) >> 4; } break; } @@ -2356,7 +2356,7 @@ void sub_71DC(s32 arg0, s32 arg1, s32 arg2) { } -void sub_88E4(void) +void LoadPokedexFlagsFromSave(void) { int i; @@ -2386,7 +2386,7 @@ void sub_88E4(void) } } -void sub_8974(s16 species) +void LoadMonAnimationSprite(s16 species) { int var0; s16 quotient; @@ -2399,16 +2399,16 @@ void sub_8974(s16 species) if (var0 < 100) { - gUnknown_0202BF14 = 0; + gPokedexSpriteCategory = 0; quotient = var0 / 5; remainder = var0 % 5; - CopyBgTilesRect(gUnknown_086BB6F4[quotient] + remainder * 0xD80, (void *)(OBJ_VRAM0 + 0x3800), 108, 1); - DmaCopy16(3, gUnknown_086B15B4[quotient] + remainder * 0x20, (void *)OBJ_PLTT + 0x40, 0x20); + CopyBgTilesRect(gCatchSpriteGfxPtrs[quotient] + remainder * 0xD80, (void *)(OBJ_VRAM0 + 0x3800), 108, 1); + DmaCopy16(3, gMonIconPalettes[quotient] + remainder * 0x20, (void *)OBJ_PLTT + 0x40, 0x20); } else { - gUnknown_0202BF14 = 1; + gPokedexSpriteCategory = 1; quotient = (var0 - 100) / 6; remainder = (var0 - 100) % 6; @@ -2417,14 +2417,14 @@ void sub_8974(s16 species) } } -s16 sub_8A78(s16 species) +s16 CheckMonHasAnimation(s16 species) { if (gPokedexFlags[species] == 4 && gDexAnimationIx[species] != -1) - gUnknown_0202A588 = 1; + gPokedexShowAnimSprite = 1; else - gUnknown_0202A588 = 0; + gPokedexShowAnimSprite = 0; - return gUnknown_0202A588; + return gPokedexShowAnimSprite; } void ResetPokedex(void) diff --git a/src/pokemon_cry.c b/src/pokemon_cry.c index 0ec64a4..41a23ba 100644 --- a/src/pokemon_cry.c +++ b/src/pokemon_cry.c @@ -58,16 +58,16 @@ static void PlayCryInternal(u16 speciesRS, s8 pan, s8 volume, u8 priority, int u switch (table) { case 0: - SetPokemonCryTone(&gUnknown_08532D6C[index]); + SetPokemonCryTone(&gPokemonCryToneBank0[index]); break; case 1: - SetPokemonCryTone(&gUnknown_08533360[index]); + SetPokemonCryTone(&gPokemonCryToneBank1[index]); break; case 2: - SetPokemonCryTone(&gUnknown_08533960[index]); + SetPokemonCryTone(&gPokemonCryToneBank2[index]); break; case 3: - SetPokemonCryTone(&gUnknown_08533F60[index]); + SetPokemonCryTone(&gPokemonCryToneBank3[index]); break; } } diff --git a/src/rom_1068C.c b/src/rom_1068C.c index 6d1a2ef..940db24 100644 --- a/src/rom_1068C.c +++ b/src/rom_1068C.c @@ -7,7 +7,7 @@ void PrintString(u16 glyph, u16 palette, int x, int y, int width, int height) for (j = 0; j < height; j++) for (i = 0; i < width; i++) - gUnknown_03005C00[y * 0x20 + x + j * 0x20 + i] = (glyph + j * 0x20 + i) | (palette << 12); + gBG0TilemapBuffer[y * 0x20 + x + j * 0x20 + i] = (glyph + j * 0x20 + i) | (palette << 12); } void CopyString(int srcX, int srcY, int destX, int destY, int width, int height) @@ -16,7 +16,7 @@ void CopyString(int srcX, int srcY, int destX, int destY, int width, int height) for (j = 0; j < height; j++) for (i = 0; i < width; i++) - gUnknown_03005C00[destY * 0x20 + destX + j * 0x20 + i] = gUnknown_03005C00[srcY * 0x20 + srcX + j * 0x20 + i]; + gBG0TilemapBuffer[destY * 0x20 + destX + j * 0x20 + i] = gBG0TilemapBuffer[srcY * 0x20 + srcX + j * 0x20 + i]; } void SetStringPalette(int x, int y, int width, int height, u16 palette) @@ -29,7 +29,7 @@ void SetStringPalette(int x, int y, int width, int height, u16 palette) for (i = 0; i < width; i++) { index = y * 0x20 + x + j * 0x20 + i; - gUnknown_03005C00[index] = (gUnknown_03005C00[index] & 0xFFF) | (palette << 12); + gBG0TilemapBuffer[index] = (gBG0TilemapBuffer[index] & 0xFFF) | (palette << 12); } } } @@ -47,7 +47,7 @@ void CopyBgTilesRect(void *volatile src, void *volatile dest, s16 width, s16 hei // This function is unused. It appears to operates on a pixel canvas where each "tile" is represented by // 2 bytes. -void sub_10750(void *volatile src, void *volatile dest, s16 width, s16 height) +void CopyPixelCanvasRect(void *volatile src, void *volatile dest, s16 width, s16 height) { int j; @@ -58,15 +58,15 @@ void sub_10750(void *volatile src, void *volatile dest, s16 width, s16 height) } // This function is unused. -void sub_10798(void *src1, void *src2, void (*func)(void)) +void Unused_FadeInWithCustomPalettes(void *src1, void *src2, void (*func)(void)) { u16 i; - DmaCopy16(3, src1, gUnknown_0201A520[1], BG_PLTT_SIZE); - DmaCopy16(3, src2, gUnknown_0201A520[2], BG_PLTT_SIZE); - DmaFill16(3, RGB_WHITE, gUnknown_0201A520, PLTT_SIZE); - DmaCopy16(3, gUnknown_0201A520[0], gUnknown_0201A520[2], PLTT_SIZE); - DmaCopy16(3, gUnknown_0201A520[2], (void *)PLTT, PLTT_SIZE); + DmaCopy16(3, src1, gPaletteFadeBuffers[1], BG_PLTT_SIZE); + DmaCopy16(3, src2, gPaletteFadeBuffers[2], BG_PLTT_SIZE); + DmaFill16(3, RGB_WHITE, gPaletteFadeBuffers, PLTT_SIZE); + DmaCopy16(3, gPaletteFadeBuffers[0], gPaletteFadeBuffers[2], PLTT_SIZE); + DmaCopy16(3, gPaletteFadeBuffers[2], (void *)PLTT, PLTT_SIZE); UnblankLCD(); gMain.dispcntBackup = REG_DISPCNT; @@ -76,41 +76,41 @@ void sub_10798(void *src1, void *src2, void (*func)(void)) if (func != NULL) func(); - sub_1001C(i); + InterpolatePaletteStep(i); MainLoopIter(); if (i == 0x20) { - DmaCopy16(3, gUnknown_0201A520[1], (void *)PLTT, PLTT_SIZE); + DmaCopy16(3, gPaletteFadeBuffers[1], (void *)PLTT, PLTT_SIZE); } else { - DmaCopy16(3, gUnknown_0201A520[2], (void *)PLTT, PLTT_SIZE); + DmaCopy16(3, gPaletteFadeBuffers[2], (void *)PLTT, PLTT_SIZE); } } } // This function is unused. -void sub_10860(void (*func)(void)) +void Unused_FadeOutToWhite(void (*func)(void)) { u16 i; - DmaCopy16(3, (void *)PLTT, gUnknown_0201A520[0], PLTT_SIZE); - DmaFill16(3, RGB_WHITE, gUnknown_0201A520[1], PLTT_SIZE); - DmaCopy16(3, gUnknown_0201A520[0], gUnknown_0201A520[2], PLTT_SIZE); + DmaCopy16(3, (void *)PLTT, gPaletteFadeBuffers[0], PLTT_SIZE); + DmaFill16(3, RGB_WHITE, gPaletteFadeBuffers[1], PLTT_SIZE); + DmaCopy16(3, gPaletteFadeBuffers[0], gPaletteFadeBuffers[2], PLTT_SIZE); for (i = 0; i <= 0x20; i += 0x10) { if (func != NULL) func(); - sub_1001C(i); + InterpolatePaletteStep(i); MainLoopIter(); if (i == 0x20) { - DmaCopy16(3, gUnknown_0201A520[1], (void *)PLTT, PLTT_SIZE); + DmaCopy16(3, gPaletteFadeBuffers[1], (void *)PLTT, PLTT_SIZE); } else { - DmaCopy16(3, gUnknown_0201A520[2], (void *)PLTT, PLTT_SIZE); + DmaCopy16(3, gPaletteFadeBuffers[2], (void *)PLTT, PLTT_SIZE); } } MainLoopIter(); diff --git a/src/rom_1A0F4.c b/src/rom_1A0F4.c index 07bc227..cad4033 100644 --- a/src/rom_1A0F4.c +++ b/src/rom_1A0F4.c @@ -3,105 +3,105 @@ #include "m4a.h" #include "constants/bg_music.h" -extern void sub_1A2C0(void); +extern void RenderBannerSlideAnimation(void); -void sub_1A0F4(void) +void ProcessBannerCameraTransition(void) { if ((gMain.modeChangeFlags & MODE_CHANGE_BANNER) != 0) { - gCurrentPinballGame->unk5F7 = 1; - if (gCurrentPinballGame->unkFA != 0) + gCurrentPinballGame->ballUpgradeTimerFrozen = 1; + if (gCurrentPinballGame->bannerActive != 0) { - gCurrentPinballGame->unk1F = 2; - gCurrentPinballGame->unk5FA = 1; - if (gCurrentPinballGame->unkEA != 0) + gCurrentPinballGame->ballFrozenState = 2; + gCurrentPinballGame->boardEntityActive = 1; + if (gCurrentPinballGame->bannerDelayTimer != 0) { - gCurrentPinballGame->unkEA--; + gCurrentPinballGame->bannerDelayTimer--; } - else if (gCurrentPinballGame->unkEE == 0) + else if (gCurrentPinballGame->cameraYScrollSpeed == 0) { - if (gCurrentPinballGame->unkEC != 0) + if (gCurrentPinballGame->bannerDisplayTimer != 0) { - gCurrentPinballGame->unkEC--; + gCurrentPinballGame->bannerDisplayTimer--; } else { - gCurrentPinballGame->unkFA = 0; + gCurrentPinballGame->bannerActive = 0; } } else { - if (gCurrentPinballGame->unk68 + gCurrentPinballGame->unkEE <= gCurrentPinballGame->unkE8) + if (gCurrentPinballGame->cameraYViewport + gCurrentPinballGame->cameraYScrollSpeed <= gCurrentPinballGame->cameraYScrollTarget) { - gCurrentPinballGame->unkE6 += gCurrentPinballGame->unkEE; + gCurrentPinballGame->cameraYAdjust += gCurrentPinballGame->cameraYScrollSpeed; } - else if (gCurrentPinballGame->unk68 - gCurrentPinballGame->unkEE >= gCurrentPinballGame->unkE8) + else if (gCurrentPinballGame->cameraYViewport - gCurrentPinballGame->cameraYScrollSpeed >= gCurrentPinballGame->cameraYScrollTarget) { - gCurrentPinballGame->unkE6 -= gCurrentPinballGame->unkEE; + gCurrentPinballGame->cameraYAdjust -= gCurrentPinballGame->cameraYScrollSpeed; } - else if (gCurrentPinballGame->unkEC != 0) + else if (gCurrentPinballGame->bannerDisplayTimer != 0) { - gCurrentPinballGame->unkEC--; + gCurrentPinballGame->bannerDisplayTimer--; } else { - gCurrentPinballGame->unkFA = 0; + gCurrentPinballGame->bannerActive = 0; } } - if (gCurrentPinballGame->unkF2 != 0) + if (gCurrentPinballGame->bannerGfxIndex != 0) { - sub_1A2C0(); + RenderBannerSlideAnimation(); } } else { - if (gCurrentPinballGame->unkEE == 0 || gCurrentPinballGame->unkE6 == 0) + if (gCurrentPinballGame->cameraYScrollSpeed == 0 || gCurrentPinballGame->cameraYAdjust == 0) { - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unk1F = 0; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->ballFrozenState = 0; gMain.modeChangeFlags &= ~MODE_CHANGE_BANNER; - gCurrentPinballGame->unk5F7 = 0; + gCurrentPinballGame->ballUpgradeTimerFrozen = 0; - if (gCurrentPinballGame->unkFB == 0) + if (gCurrentPinballGame->bannerPreserveBallState == 0) { - gCurrentPinballGame->unk5FA = 0; + gCurrentPinballGame->boardEntityActive = 0; } } - if (gCurrentPinballGame->unkE6 > 0) + if (gCurrentPinballGame->cameraYAdjust > 0) { - gCurrentPinballGame->unkE6 -= gCurrentPinballGame->unkEE; - if (gCurrentPinballGame->unkE6 > 0) + gCurrentPinballGame->cameraYAdjust -= gCurrentPinballGame->cameraYScrollSpeed; + if (gCurrentPinballGame->cameraYAdjust > 0) { return; } - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unk1F = 0; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->ballFrozenState = 0; gMain.modeChangeFlags &= ~MODE_CHANGE_BANNER; - gCurrentPinballGame->unk5F7 = 0; + gCurrentPinballGame->ballUpgradeTimerFrozen = 0; - if (gCurrentPinballGame->unkFB == 0) + if (gCurrentPinballGame->bannerPreserveBallState == 0) { - gCurrentPinballGame->unk5FA = 0; + gCurrentPinballGame->boardEntityActive = 0; } } - if (gCurrentPinballGame->unkE6 <= -1) + if (gCurrentPinballGame->cameraYAdjust <= -1) { - gCurrentPinballGame->unkE6 += gCurrentPinballGame->unkEE; - if (gCurrentPinballGame->unkE6 >= 0) + gCurrentPinballGame->cameraYAdjust += gCurrentPinballGame->cameraYScrollSpeed; + if (gCurrentPinballGame->cameraYAdjust >= 0) { - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unk1F = 0; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->ballFrozenState = 0; gMain.modeChangeFlags &= ~MODE_CHANGE_BANNER; - gCurrentPinballGame->unk5F7 = 0; + gCurrentPinballGame->ballUpgradeTimerFrozen = 0; - if (gCurrentPinballGame->unkFB == 0) + if (gCurrentPinballGame->bannerPreserveBallState == 0) { - gCurrentPinballGame->unk5FA = 0; + gCurrentPinballGame->boardEntityActive = 0; } } } @@ -109,7 +109,7 @@ void sub_1A0F4(void) } } -void sub_1A2C0(void) +void RenderBannerSlideAnimation(void) { s16 i; s16 sp00; @@ -117,188 +117,188 @@ void sub_1A2C0(void) struct OamDataSimple *simple; u32 frameCount; - sp00 = gCurrentPinballGame->unkF2 - 1; - spriteGroup = gMain.unk44[11]; + sp00 = gCurrentPinballGame->bannerGfxIndex - 1; + spriteGroup = gMain.fieldSpriteGroups[11]; frameCount = ((gMain.systemFrameCount & 7) / 4); if (spriteGroup->available != 0) { spriteGroup->baseX = 0; spriteGroup->baseY = 200; - if (gCurrentPinballGame->unkF2 == 4) + if (gCurrentPinballGame->bannerGfxIndex == 4) { - if (gCurrentPinballGame->unkEA != 0) + if (gCurrentPinballGame->bannerDelayTimer != 0) { spriteGroup->baseX = 370; spriteGroup->baseY = 44; } else { - gCurrentPinballGame->unkE4 = 4; - DmaCopy16(3, gUnknown_086ACEF8[gCurrentPinballGame->unkF2], (void *)(VRAM + 0x15800), 0x25E0); - sub_2CD98(); - if (gCurrentPinballGame->unkF4 > 0) + gCurrentPinballGame->activePortraitType = 4; + DmaCopy16(3, gModeBannerTilemaps[gCurrentPinballGame->bannerGfxIndex], (void *)(VRAM + 0x15800), 0x25E0); + AnimateBannerSlide(); + if (gCurrentPinballGame->bannerDisplayDuration > 0) { - gCurrentPinballGame->unkF4--; - if (gCurrentPinballGame->unkF4 == 0x77) + gCurrentPinballGame->bannerDisplayDuration--; + if (gCurrentPinballGame->bannerDisplayDuration == 0x77) { m4aMPlayAllStop(); m4aSongNumStart(MUS_TRAVEL_MODE_START); } - gCurrentPinballGame->unkF6 -= 0x28; - spriteGroup->baseX = (gCurrentPinballGame->unkF6 / 10) + 370; + gCurrentPinballGame->bannerSlidePosition -= 0x28; + spriteGroup->baseX = (gCurrentPinballGame->bannerSlidePosition / 10) + 370; spriteGroup->baseY = 44; } else { spriteGroup->baseX = -110; spriteGroup->baseY = 44; - gMain.unk44[11]->available = 0; // direct index required here - gCurrentPinballGame->unkF2 = 0; - gCurrentPinballGame->unkE4 = 0; + gMain.fieldSpriteGroups[11]->available = 0; // direct index required here + gCurrentPinballGame->bannerGfxIndex = 0; + gCurrentPinballGame->activePortraitType = 0; } } } else { - gCurrentPinballGame->unkE4 = 4; + gCurrentPinballGame->activePortraitType = 4; // i = framecount ??? - DmaCopy16(3, gUnknown_086ACEF8[gCurrentPinballGame->unkF2] + ((i = frameCount) * 0x21C0), (void *)(VRAM + 0x15800), 0x21C0); - if (gCurrentPinballGame->unkF4 > 0) + DmaCopy16(3, gModeBannerTilemaps[gCurrentPinballGame->bannerGfxIndex] + ((i = frameCount) * 0x21C0), (void *)(VRAM + 0x15800), 0x21C0); + if (gCurrentPinballGame->bannerDisplayDuration > 0) { - gCurrentPinballGame->unkF4--; - if (gCurrentPinballGame->unkF0 != 0) + gCurrentPinballGame->bannerDisplayDuration--; + if (gCurrentPinballGame->bannerSlideTimer != 0) { - if (gCurrentPinballGame->unkF0 == 0x28) + if (gCurrentPinballGame->bannerSlideTimer == 0x28) { MPlayStart(&gMPlayInfo_SE1, &se_unk_8b); } - gCurrentPinballGame->unkF0--; - if (gCurrentPinballGame->unkF0 <= 0xF) + gCurrentPinballGame->bannerSlideTimer--; + if (gCurrentPinballGame->bannerSlideTimer <= 0xF) { - gCurrentPinballGame->unkF6 += 0xA0; + gCurrentPinballGame->bannerSlidePosition += 0xA0; } - if (gCurrentPinballGame->unkF0 > 32 && gCurrentPinballGame->unkF0 <= 40) + if (gCurrentPinballGame->bannerSlideTimer > 32 && gCurrentPinballGame->bannerSlideTimer <= 40) { - if (gCurrentPinballGame->unkF0 <= 36) + if (gCurrentPinballGame->bannerSlideTimer <= 36) { gMain.blendBrightness = 7; - if (gCurrentPinballGame->unkF0 < 36) + if (gCurrentPinballGame->bannerSlideTimer < 36) { - if ((gCurrentPinballGame->unk25 == 3 && gCurrentPinballGame->unk1A5 == 1) || - (gCurrentPinballGame->unk25 == 4 && gCurrentPinballGame->unk6DC == 9)) + if ((gCurrentPinballGame->ballCatchState == 3 && gCurrentPinballGame->evolutionShopActive == 1) || + (gCurrentPinballGame->ballCatchState == 4 && gCurrentPinballGame->rouletteOutcomeId == 9)) { - gCurrentPinballGame->unk70 = 0; + gCurrentPinballGame->paletteSwapActive = 0; } else { - gCurrentPinballGame->unk70 = 1; - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[2], (void *)(OBJ_PLTT), 0x20); + gCurrentPinballGame->paletteSwapActive = 1; + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2], (void *)(OBJ_PLTT), 0x20); } if (gMain.selectedField == FIELD_SAPPHIRE) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[2] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xC0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xC0); } else { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[2] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); } - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[2] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); - gCurrentPinballGame->unk6F = 2; + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); + gCurrentPinballGame->activePaletteIndex = 2; } } - else if (gCurrentPinballGame->unkF0 > 0x24) + else if (gCurrentPinballGame->bannerSlideTimer > 0x24) { gMain.blendBrightness = 4; - if (gCurrentPinballGame->unkF0 <= 0x27) + if (gCurrentPinballGame->bannerSlideTimer <= 0x27) { - if ((gCurrentPinballGame->unk25 == 3 && gCurrentPinballGame->unk1A5 == 1) || - (gCurrentPinballGame->unk25 == 4 && gCurrentPinballGame->unk6DC == 9)) + if ((gCurrentPinballGame->ballCatchState == 3 && gCurrentPinballGame->evolutionShopActive == 1) || + (gCurrentPinballGame->ballCatchState == 4 && gCurrentPinballGame->rouletteOutcomeId == 9)) { - gCurrentPinballGame->unk70 = 0; + gCurrentPinballGame->paletteSwapActive = 0; } else { - gCurrentPinballGame->unk70 = 1; - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1], (void *)(OBJ_PLTT), 0x20); + gCurrentPinballGame->paletteSwapActive = 1; + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1], (void *)(OBJ_PLTT), 0x20); } if (gMain.selectedField == FIELD_SAPPHIRE) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xC0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xC0); } else { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); } - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); - gCurrentPinballGame->unk6F = 1; + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); + gCurrentPinballGame->activePaletteIndex = 1; } } } - if (gCurrentPinballGame->unkF0 == 0) + if (gCurrentPinballGame->bannerSlideTimer == 0) { - gCurrentPinballGame->unkF6 = 0; - gCurrentPinballGame->unkF8 = 0x3C; + gCurrentPinballGame->bannerSlidePosition = 0; + gCurrentPinballGame->bannerSlideVelocity = 0x3C; } } - spriteGroup->baseX = (gCurrentPinballGame->unkF6 / 10) + 127; + spriteGroup->baseX = (gCurrentPinballGame->bannerSlidePosition / 10) + 127; spriteGroup->baseY = 44; } - else if (gCurrentPinballGame->unkF0 < 30) + else if (gCurrentPinballGame->bannerSlideTimer < 30) { - gCurrentPinballGame->unkF6 += gCurrentPinballGame->unkF8; - spriteGroup->baseX = (gCurrentPinballGame->unkF6 / 10) + 127; + gCurrentPinballGame->bannerSlidePosition += gCurrentPinballGame->bannerSlideVelocity; + spriteGroup->baseX = (gCurrentPinballGame->bannerSlidePosition / 10) + 127; spriteGroup->baseY = 44; - gCurrentPinballGame->unkF0++; - gCurrentPinballGame->unkF8 -= 0xA; - if (gCurrentPinballGame->unkF0 > 0x18 && - (gCurrentPinballGame->unk25 != 3 || gCurrentPinballGame->unk1A5 != 1) && - (gCurrentPinballGame->unk25 != 4 || gCurrentPinballGame->unk6DC != 9)) + gCurrentPinballGame->bannerSlideTimer++; + gCurrentPinballGame->bannerSlideVelocity -= 0xA; + if (gCurrentPinballGame->bannerSlideTimer > 0x18 && + (gCurrentPinballGame->ballCatchState != 3 || gCurrentPinballGame->evolutionShopActive != 1) && + (gCurrentPinballGame->ballCatchState != 4 || gCurrentPinballGame->rouletteOutcomeId != 9)) { gMain.blendBrightness = 4; - if (gCurrentPinballGame->unkF0 > 0x19) + if (gCurrentPinballGame->bannerSlideTimer > 0x19) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1], (void *)(OBJ_PLTT), 0x20); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1], (void *)(OBJ_PLTT), 0x20); if (gMain.selectedField == FIELD_SAPPHIRE) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xC0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xC0); } else { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); } - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); - gCurrentPinballGame->unk6F = 1; - gCurrentPinballGame->unk70 = 1; + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); + gCurrentPinballGame->activePaletteIndex = 1; + gCurrentPinballGame->paletteSwapActive = 1; } - if (gCurrentPinballGame->unkF0 == 0x1D) + if (gCurrentPinballGame->bannerSlideTimer == 0x1D) { gMain.blendBrightness = 0; } } - if (gCurrentPinballGame->unkF0 == 0x1E) + if (gCurrentPinballGame->bannerSlideTimer == 0x1E) { - gMain.unk44[11]->available = 0; - gCurrentPinballGame->unkF2 = 0; - gCurrentPinballGame->unkE4 = 0; - if ((gCurrentPinballGame->unk25 != 3 || gCurrentPinballGame->unk1A5 != 1) && - (gCurrentPinballGame->unk25 != 4 || gCurrentPinballGame->unk6DC != 9)) + gMain.fieldSpriteGroups[11]->available = 0; + gCurrentPinballGame->bannerGfxIndex = 0; + gCurrentPinballGame->activePortraitType = 0; + if ((gCurrentPinballGame->ballCatchState != 3 || gCurrentPinballGame->evolutionShopActive != 1) && + (gCurrentPinballGame->ballCatchState != 4 || gCurrentPinballGame->rouletteOutcomeId != 9)) { gMain.blendBrightness = 0; - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0], (void *)(OBJ_PLTT), 0x20); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0], (void *)(OBJ_PLTT), 0x20); if (gMain.selectedField == FIELD_SAPPHIRE) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xC0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xC0); } else { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); } - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); - gCurrentPinballGame->unk6F = 0; - gCurrentPinballGame->unk70 = 1; + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); + gCurrentPinballGame->activePaletteIndex = 0; + gCurrentPinballGame->paletteSwapActive = 1; } } @@ -312,9 +312,9 @@ void sub_1A2C0(void) u16 *dst; simple = &spriteGroup->oam[i]; dst = (u16 *)&gOamBuffer[simple->oamId]; - *dst++ = gUnknown_086B4568[sp00][i * 3 + 0]; - *dst++ = gUnknown_086B4568[sp00][i * 3 + 1]; - *dst++ = gUnknown_086B4568[sp00][i * 3 + 2]; + *dst++ = gModeBannerOamAttributes[sp00][i * 3 + 0]; + *dst++ = gModeBannerOamAttributes[sp00][i * 3 + 1]; + *dst++ = gModeBannerOamAttributes[sp00][i * 3 + 2]; gOamBuffer[simple->oamId].x = gOamBuffer[simple->oamId].x + spriteGroup->baseX; gOamBuffer[simple->oamId].y = gOamBuffer[simple->oamId].y + spriteGroup->baseY; diff --git a/src/rom_1A98C.c b/src/rom_1A98C.c index 7246a08..3e04119 100644 --- a/src/rom_1A98C.c +++ b/src/rom_1A98C.c @@ -4,76 +4,76 @@ #include "constants/bg_music.h" #include "constants/ruby_states.h" -void sub_1AAA0(void); -void sub_1AA38(void); -void sub_1ADF4(void); -void sub_1AF84(void); -void sub_1AFD4(void); -void sub_1C560(void); -void sub_1C5AC(void); -void sub_19B64(u8); -void sub_22A30(void); -void sub_22C6C(void); -void sub_22D54(void); +void AnimateSharpedoCatchSequence(void); +void InitSharpedoCatchMode(void); +void AnimateEggHatchSequence(void); +void InitRubyEvolutionShopMode(void); +void AnimateRubyEvolutionShopSequence(void); +void InitCenterTrapMode(void); +void AnimateCenterTrapSequence(void); +void RequestBoardStateTransition(u8); +void AnimateTotodileEggDelivery(void); +void InitAerodactylEggDelivery(void); +void AnimateAerodactylEggDelivery(void); -void sub_1A98C(void) +void DispatchRubyCatchModeInit(void) { if (gMain.modeChangeFlags != MODE_CHANGE_NONE) return; - switch (gCurrentPinballGame->unk25) + switch (gCurrentPinballGame->ballCatchState) { case 1: - sub_1AA38(); + InitSharpedoCatchMode(); break; case 2: - sub_1AD84(); + InitEggHatchMode(); break; case 3: - sub_1AF84(); + InitRubyEvolutionShopMode(); break; case 4: - sub_1C560(); + InitCenterTrapMode(); break; } - gCurrentPinballGame->unk26 = 60; + gCurrentPinballGame->collisionCooldownTimer = 60; } -void sub_1A9E8(void) +void UpdateRubyCatchModeAnimation(void) { - if (gCurrentPinballGame->unk26 > 0) - gCurrentPinballGame->unk26--; + if (gCurrentPinballGame->collisionCooldownTimer > 0) + gCurrentPinballGame->collisionCooldownTimer--; - switch (gCurrentPinballGame->unk25) + switch (gCurrentPinballGame->ballCatchState) { case 1: - sub_1AAA0(); // Catch hole + AnimateSharpedoCatchSequence(); // Catch hole break; case 2: - sub_1ADF4(); //Hatch hole + AnimateEggHatchSequence(); //Hatch hole break; case 3: - sub_1AFD4(); //Mart / Evo hole + AnimateRubyEvolutionShopSequence(); //Mart / Evo hole break; case 4: - sub_1C5AC(); //Center Hole + AnimateCenterTrapSequence(); //Center Hole break; } } -void sub_1AA38(void) +void InitSharpedoCatchMode(void) { - if (gCurrentPinballGame->unk72F > 1) + if (gCurrentPinballGame->catchArrowProgress > 1) { - sub_19B64(4); + RequestBoardStateTransition(4); } - gCurrentPinballGame->unk5FC = 0; - gCurrentPinballGame->unk5FB = 0; - gCurrentPinballGame->unk5FE = 0; - gCurrentPinballGame->unk28 = 113; + gCurrentPinballGame->cameraScrollOffset = 0; + gCurrentPinballGame->cameraScrollEnabled = 0; + gCurrentPinballGame->cameraScrollTarget = 0; + gCurrentPinballGame->modeAnimTimer = 113; m4aSongNumStart(SE_UNKNOWN_0xCE); gCurrentPinballGame->scoreAddedInFrame = 50000; @@ -83,33 +83,33 @@ void sub_1AA38(void) /* * Ruby board Sharpedo; during the initation of the catch mode -* Echoes sub_32BE4, which is the equivalent 'catch hole' on the sapphire board. +* Echoes UpdateSapphireWailmerCatchSequence, which is the equivalent 'catch hole' on the sapphire board. * * Note: this *does not* affect the start of the catch mode itself. -* When this function is nulled out at sub_1A9E8, the banner *doesn't* show, and +* When this function is nulled out at UpdateRubyCatchModeAnimation, 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 collision with the cyndaquil pushback. */ -void sub_1AAA0(void) +void AnimateSharpedoCatchSequence(void) { - if (gCurrentPinballGame->unk28) //Countdown timer; ball grabbed/held while banner shows + if (gCurrentPinballGame->modeAnimTimer) //Countdown timer; ball grabbed/held while banner shows { - gCurrentPinballGame->unk28--; - if (gCurrentPinballGame->unk28 > 100) + gCurrentPinballGame->modeAnimTimer--; + if (gCurrentPinballGame->modeAnimTimer > 100) { - gCurrentPinballGame->unk5F7 = 1; - gCurrentPinballGame->unk1F = 1; + gCurrentPinballGame->ballUpgradeTimerFrozen = 1; + gCurrentPinballGame->ballFrozenState = 1; gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; - gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->ball->spinSpeed = 0; - if (gCurrentPinballGame->unk28 > 108) + if (gCurrentPinballGame->modeAnimTimer > 108) { - gCurrentPinballGame->unk5FA = 1; + gCurrentPinballGame->boardEntityActive = 1; - if (gCurrentPinballGame->unk28 > 110) + if (gCurrentPinballGame->modeAnimTimer > 110) { gCurrentPinballGame->ball->positionQ0.x = 195; gCurrentPinballGame->ball->positionQ0.y = 222; @@ -121,106 +121,106 @@ void sub_1AAA0(void) } //Presumed controling either the message board 'state'/'tile' // or the sharpedo animation 'state'/tile. - gCurrentPinballGame->unk2F4 =6; + gCurrentPinballGame->catchHoleAnimFrame =6; } - else if (gCurrentPinballGame->unk28 > 104) + else if (gCurrentPinballGame->modeAnimTimer > 104) { gCurrentPinballGame->ball->positionQ0.x = 197; gCurrentPinballGame->ball->positionQ0.y = 219; - gCurrentPinballGame->unk2F4 = 7; + gCurrentPinballGame->catchHoleAnimFrame = 7; } else { - gCurrentPinballGame->ball->unk0 = 1; - gCurrentPinballGame->unk2F4 = 8; + gCurrentPinballGame->ball->ballHidden = 1; + gCurrentPinballGame->catchHoleAnimFrame = 8; } } - else if (gCurrentPinballGame->unk28 > 20) + else if (gCurrentPinballGame->modeAnimTimer > 20) { - if (gCurrentPinballGame->unk28 > 77) + if (gCurrentPinballGame->modeAnimTimer > 77) { - gCurrentPinballGame->unk2F4 = 9; + gCurrentPinballGame->catchHoleAnimFrame = 9; - if (gCurrentPinballGame->unk28 < 80) + if (gCurrentPinballGame->modeAnimTimer < 80) { - if (gCurrentPinballGame->unk2F6 != 0) + if (gCurrentPinballGame->catchHolePauseTimer != 0) { - gCurrentPinballGame->unk2F6--; - gCurrentPinballGame->unk28++; + gCurrentPinballGame->catchHolePauseTimer--; + gCurrentPinballGame->modeAnimTimer++; } } } - else if (gCurrentPinballGame->unk28 > 72) + else if (gCurrentPinballGame->modeAnimTimer > 72) { - gCurrentPinballGame->unk2F4 = 10; + gCurrentPinballGame->catchHoleAnimFrame = 10; } - else if (gCurrentPinballGame->unk28 > 67) + else if (gCurrentPinballGame->modeAnimTimer > 67) { - gCurrentPinballGame->unk2F4 = 11; + gCurrentPinballGame->catchHoleAnimFrame = 11; } - else if (gCurrentPinballGame->unk28 > 44) + else if (gCurrentPinballGame->modeAnimTimer > 44) { - gCurrentPinballGame->unk2F4 = 12; + gCurrentPinballGame->catchHoleAnimFrame = 12; } - else if (gCurrentPinballGame->unk28 > 38) + else if (gCurrentPinballGame->modeAnimTimer > 38) { - gCurrentPinballGame->unk2F4 = 13; + gCurrentPinballGame->catchHoleAnimFrame = 13; } - else if (gCurrentPinballGame->unk28 > 28) + else if (gCurrentPinballGame->modeAnimTimer > 28) { - gCurrentPinballGame->unk2F4 = 14; + gCurrentPinballGame->catchHoleAnimFrame = 14; } - else if (gCurrentPinballGame->unk28 > 23) + else if (gCurrentPinballGame->modeAnimTimer > 23) { - gCurrentPinballGame->unk2F4 = 15; + gCurrentPinballGame->catchHoleAnimFrame = 15; } else { - gCurrentPinballGame->unk2F4 = 16; + gCurrentPinballGame->catchHoleAnimFrame = 16; } } - else if (gCurrentPinballGame->unk28 > 18) + else if (gCurrentPinballGame->modeAnimTimer > 18) { gCurrentPinballGame->ball->positionQ0.x = 193; gCurrentPinballGame->ball->positionQ0.y = 226; - gCurrentPinballGame->ball->unk0 = 0; - gCurrentPinballGame->unk2F4 = 17; + gCurrentPinballGame->ball->ballHidden = 0; + gCurrentPinballGame->catchHoleAnimFrame = 17; } - else if (gCurrentPinballGame->unk28 > 16) + else if (gCurrentPinballGame->modeAnimTimer > 16) { - gCurrentPinballGame->unk1F = 0; - gCurrentPinballGame->unk5FE = 0; - gCurrentPinballGame->unk5FB = 1; - gCurrentPinballGame->unk5FA = 0; - gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->ballFrozenState = 0; + gCurrentPinballGame->cameraScrollTarget = 0; + gCurrentPinballGame->cameraScrollEnabled = 1; + gCurrentPinballGame->boardEntityActive = 0; + gCurrentPinballGame->ball->spinSpeed = 0; gCurrentPinballGame->ball->velocity.x = 0xFF56; gCurrentPinballGame->ball->velocity.y = 220; gCurrentPinballGame->ball->positionQ0.x = 190; gCurrentPinballGame->ball->positionQ0.y = 232; - gCurrentPinballGame->unk2F4 = 18; - if (gCurrentPinballGame->unk28 == 18) + gCurrentPinballGame->catchHoleAnimFrame = 18; + if (gCurrentPinballGame->modeAnimTimer == 18) { m4aSongNumStart(194); PlayRumble(7); } } - else if (gCurrentPinballGame->unk28 > 12) + else if (gCurrentPinballGame->modeAnimTimer > 12) { - gCurrentPinballGame->ball->unk6 = 0; - gCurrentPinballGame->unk2F4 = 19; + gCurrentPinballGame->ball->spinSpeed = 0; + gCurrentPinballGame->catchHoleAnimFrame = 19; } - else if (gCurrentPinballGame->unk28 > 8) + else if (gCurrentPinballGame->modeAnimTimer > 8) { - gCurrentPinballGame->ball->unk6 = 0; - gCurrentPinballGame->unk2F4 = 20; + gCurrentPinballGame->ball->spinSpeed = 0; + gCurrentPinballGame->catchHoleAnimFrame = 20; } - else if (gCurrentPinballGame->unk28 > 4) + else if (gCurrentPinballGame->modeAnimTimer > 4) { - gCurrentPinballGame->ball->unk6 = 0; - gCurrentPinballGame->unk2F4 = 21; + gCurrentPinballGame->ball->spinSpeed = 0; + gCurrentPinballGame->catchHoleAnimFrame = 21; } else { - gCurrentPinballGame->unk2F4 = 22; + gCurrentPinballGame->catchHoleAnimFrame = 22; } gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2; gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2; @@ -232,131 +232,131 @@ void sub_1AAA0(void) } else { - gCurrentPinballGame->unk26 = 30; + gCurrentPinballGame->collisionCooldownTimer = 30; gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2; gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2; - gCurrentPinballGame->unk25 = 0; - gCurrentPinballGame->unk5F7 = 0; - gCurrentPinballGame->unk2F4 = 0; + gCurrentPinballGame->ballCatchState = 0; + gCurrentPinballGame->ballUpgradeTimerFrozen = 0; + gCurrentPinballGame->catchHoleAnimFrame = 0; } } -void sub_1AD84(void) +void InitEggHatchMode(void) { gCurrentPinballGame->scoreAddedInFrame = 100000; - if (gCurrentPinballGame->unk2DA == 3) + if (gCurrentPinballGame->eggCaveState == 3) { - gCurrentPinballGame->unk2DA = 4; + gCurrentPinballGame->eggCaveState = 4; m4aSongNumStart(SE_UNKNOWN_0xB7); PlayRumble(7); - gCurrentPinballGame->unk28 = 500; + gCurrentPinballGame->modeAnimTimer = 500; } - else if (gCurrentPinballGame->unk2D0 !=0) + else if (gCurrentPinballGame->eggDeliveryState !=0) { - gCurrentPinballGame->unk28 = 300; + gCurrentPinballGame->modeAnimTimer = 300; } else { - gCurrentPinballGame->unk28 = 120; + gCurrentPinballGame->modeAnimTimer = 120; } - gCurrentPinballGame->unk5F7 = 1; + gCurrentPinballGame->ballUpgradeTimerFrozen = 1; } -void sub_1ADF4(void) +void AnimateEggHatchSequence(void) { - u16 unk28 = gCurrentPinballGame->unk28; + u16 modeAnimTimer = gCurrentPinballGame->modeAnimTimer; - if (unk28 != 0) + if (modeAnimTimer != 0) { - gCurrentPinballGame->ball->unk0 = 1; - gCurrentPinballGame->unk1F = 1; - gCurrentPinballGame->unk28--; + gCurrentPinballGame->ball->ballHidden = 1; + gCurrentPinballGame->ballFrozenState = 1; + gCurrentPinballGame->modeAnimTimer--; gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; gCurrentPinballGame->ball->positionQ0.x = 0x58; gCurrentPinballGame->ball->positionQ0.y = 0x94; - gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->ball->spinSpeed = 0; gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2; gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2; - if (gCurrentPinballGame->unk2D0 != 1) + if (gCurrentPinballGame->eggDeliveryState != 1) return; - if (gCurrentPinballGame->unk28 > 0xC8) + if (gCurrentPinballGame->modeAnimTimer > 0xC8) return; - if (gCurrentPinballGame->unk28 == 0xC8) + if (gCurrentPinballGame->modeAnimTimer == 0xC8) { - if (gCurrentPinballGame->unkE4 != 0) - gCurrentPinballGame->unk28++; + if (gCurrentPinballGame->activePortraitType != 0) + gCurrentPinballGame->modeAnimTimer++; else { if (gCurrentPinballGame->scoreHi != 0 && gCurrentPinballGame->rubyPondState == RUBY_POND_STATE_LOTAD) - sub_22978(); + InitTotodileEggDelivery(); else - sub_22C6C(); + InitAerodactylEggDelivery(); } } else { if (gCurrentPinballGame->scoreHi != 0 && gCurrentPinballGame->rubyPondState == RUBY_POND_STATE_LOTAD) - sub_22A30(); + AnimateTotodileEggDelivery(); else - sub_22D54(); + AnimateAerodactylEggDelivery(); } - if (gCurrentPinballGame->unk28 <= 9) - gCurrentPinballGame->unk28++; + if (gCurrentPinballGame->modeAnimTimer <= 9) + gCurrentPinballGame->modeAnimTimer++; } else { - gCurrentPinballGame->ball->unk0 = unk28; - gCurrentPinballGame->unk25 = unk28; + gCurrentPinballGame->ball->ballHidden = modeAnimTimer; + gCurrentPinballGame->ballCatchState = modeAnimTimer; gCurrentPinballGame->ball->positionQ0.x = 0x58; gCurrentPinballGame->ball->positionQ0.y = 0xA2; - gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->ball->spinSpeed = 0; gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2; gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2; - gCurrentPinballGame->unk5F7 = 0; + gCurrentPinballGame->ballUpgradeTimerFrozen = 0; - if (gCurrentPinballGame->unk2D0 == 2) + if (gCurrentPinballGame->eggDeliveryState == 2) { - gCurrentPinballGame->unk2DA = 3; - gCurrentPinballGame->unk2DE = 0x30; - gCurrentPinballGame->unk2E0 = 0x1E; + gCurrentPinballGame->eggCaveState = 3; + gCurrentPinballGame->eggCaveLiftTimer = 0x30; + gCurrentPinballGame->eggCaveExitDelayTimer = 0x1E; } else { - gCurrentPinballGame->unk1F = 0; - gCurrentPinballGame->unk26 = 0x3C; + gCurrentPinballGame->ballFrozenState = 0; + gCurrentPinballGame->collisionCooldownTimer = 0x3C; gCurrentPinballGame->ball->velocity.x = 0x14; gCurrentPinballGame->ball->velocity.y = 0xC8; } } } -void sub_1AF84(void) +void InitRubyEvolutionShopMode(void) { - gCurrentPinballGame->unk1B8 = 0; - gCurrentPinballGame->unk1B6 = 0; - gCurrentPinballGame->unk28 = 0xB4; - gCurrentPinballGame->unk1BA = 0xB4; + gCurrentPinballGame->shopAnimSlideTimer = 0; + gCurrentPinballGame->shopUISlideOffset = 0; + gCurrentPinballGame->modeAnimTimer = 0xB4; + gCurrentPinballGame->shopEntryTimer = 0xB4; gCurrentPinballGame->scoreAddedInFrame = 500000; gMain.blendControl = 0xCE; gMain.blendBrightness = 0; - gCurrentPinballGame->unk5F7 = 1; + gCurrentPinballGame->ballUpgradeTimerFrozen = 1; } -void sub_1AFD4(void) +void AnimateRubyEvolutionShopSequence(void) { - if (gCurrentPinballGame->unk28 > 0x18) + if (gCurrentPinballGame->modeAnimTimer > 0x18) { - gCurrentPinballGame->ball->unk0 = 1; - gCurrentPinballGame->unk1F = 1; - gCurrentPinballGame->unk28--; + gCurrentPinballGame->ball->ballHidden = 1; + gCurrentPinballGame->ballFrozenState = 1; + gCurrentPinballGame->modeAnimTimer--; gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; gCurrentPinballGame->ball->positionQ0.x = 0xDC; @@ -366,353 +366,353 @@ void sub_1AFD4(void) gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ0.x * 256; gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ0.y * 256; - if (gCurrentPinballGame->unk28 > 0x9B) - gCurrentPinballGame->unk2F0 = (gCurrentPinballGame->unk28 - 0x9C) / 8; - if (gCurrentPinballGame->unk28 <= 0x31) - gCurrentPinballGame->unk28++; + if (gCurrentPinballGame->modeAnimTimer > 0x9B) + gCurrentPinballGame->shopDoorTargetFrame = (gCurrentPinballGame->modeAnimTimer - 0x9C) / 8; + if (gCurrentPinballGame->modeAnimTimer <= 0x31) + gCurrentPinballGame->modeAnimTimer++; - sub_1B140(gCurrentPinballGame->unk1A5); + UpdateShopEntryAnimation(gCurrentPinballGame->evolutionShopActive); return; } - if (gCurrentPinballGame->unk28 > 0) + if (gCurrentPinballGame->modeAnimTimer > 0) { - gCurrentPinballGame->unk28--; - gCurrentPinballGame->unk2F0 = (0x18 - gCurrentPinballGame->unk28) / 8; + gCurrentPinballGame->modeAnimTimer--; + gCurrentPinballGame->shopDoorTargetFrame = (0x18 - gCurrentPinballGame->modeAnimTimer) / 8; return; } - gCurrentPinballGame->ball->unk0 = 0; - gCurrentPinballGame->unk1F = 0; - gCurrentPinballGame->unk26 = 0x3C; + gCurrentPinballGame->ball->ballHidden = 0; + gCurrentPinballGame->ballFrozenState = 0; + gCurrentPinballGame->collisionCooldownTimer = 0x3C; gCurrentPinballGame->ball->velocity.x = 0x60; gCurrentPinballGame->ball->velocity.y = 0xC0; gCurrentPinballGame->ball->positionQ0.x = 0xDF; gCurrentPinballGame->ball->positionQ0.y = 0x63; - gCurrentPinballGame->ball->unk6 = 0; - gCurrentPinballGame->unk5F7 = 0; + gCurrentPinballGame->ball->spinSpeed = 0; + gCurrentPinballGame->ballUpgradeTimerFrozen = 0; gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2; gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2; - gCurrentPinballGame->unk25 = 0; - gCurrentPinballGame->unk2F0 = 0x13; + gCurrentPinballGame->ballCatchState = 0; + gCurrentPinballGame->shopDoorTargetFrame = 0x13; m4aSongNumStart(SE_UNKNOWN_0xC3); - if (gCurrentPinballGame->unk72E > 2 && gCurrentPinballGame->evolvablePartySize > 0) + if (gCurrentPinballGame->evoArrowProgress > 2 && gCurrentPinballGame->evolvablePartySize > 0) { - sub_19B64(6); + RequestBoardStateTransition(6); } } -void sub_1B140(s16 arg0) +void UpdateShopEntryAnimation(s16 arg0) { int var_r7 = 0; - if (gMain.modeChangeFlags == MODE_CHANGE_NONE && gCurrentPinballGame->unk1BA != 0) - gCurrentPinballGame->unk1BA--; + if (gMain.modeChangeFlags == MODE_CHANGE_NONE && gCurrentPinballGame->shopEntryTimer != 0) + gCurrentPinballGame->shopEntryTimer--; if (arg0 == 0) { - if (gCurrentPinballGame->unk1BA == 149) + if (gCurrentPinballGame->shopEntryTimer == 149) { m4aMPlayAllStop(); - gCurrentPinballGame->unk6DE = 0; - gCurrentPinballGame->unk6DD = 0; - gCurrentPinballGame->unk1AE = 0; - gCurrentPinballGame->unk252 = 0; + gCurrentPinballGame->outcomeFrameCounter = 0; + gCurrentPinballGame->shopPurchaseConfirmed = 0; + gCurrentPinballGame->shopOutcomeRepeatCount = 0; + gCurrentPinballGame->catchModeEventTimer = 0; gMain.blendControl = 206; gMain.blendBrightness = 0; } - if (gCurrentPinballGame->unk1BA == 146) + if (gCurrentPinballGame->shopEntryTimer == 146) { - gCurrentPinballGame->unkE4 = 18; + gCurrentPinballGame->activePortraitType = 18; - DmaCopy16(3, &gUnknown_084F61EC, OBJ_VRAM1 + 0x1C00, 0x940); - DmaCopy16(3, &gUnknown_081B45A4, BG_PLTT + 0x180, 0x20); + DmaCopy16(3, &gPokemonNameDisplayGfx, OBJ_VRAM1 + 0x1C00, 0x940); + DmaCopy16(3, &gShopNameDisplay_Pals, BG_PLTT + 0x180, 0x20); } - if (gCurrentPinballGame->unk1BA >= 145 && gCurrentPinballGame->unk1BA < 150) + if (gCurrentPinballGame->shopEntryTimer >= 145 && gCurrentPinballGame->shopEntryTimer < 150) { - if (gCurrentPinballGame->unk1BA > 146) + if (gCurrentPinballGame->shopEntryTimer > 146) { gMain.blendBrightness = 4; - if (gCurrentPinballGame->unk1BA <= 148) + if (gCurrentPinballGame->shopEntryTimer <= 148) { if (gMain.selectedField == FIELD_SAPPHIRE) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x40, OBJ_PLTT + 0x40, 0xC0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1] + 0x40, OBJ_PLTT + 0x40, 0xC0); } else - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); - gCurrentPinballGame->unk6F = 1; - gCurrentPinballGame->unk70 = 0; + gCurrentPinballGame->activePaletteIndex = 1; + gCurrentPinballGame->paletteSwapActive = 0; } } else { gMain.blendBrightness = 7; - if (gCurrentPinballGame->unk1BA <= 145) + if (gCurrentPinballGame->shopEntryTimer <= 145) { if (gMain.selectedField == FIELD_SAPPHIRE) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[2] + 0x40, OBJ_PLTT + 0x40, 0xC0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2] + 0x40, OBJ_PLTT + 0x40, 0xC0); } else - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[2] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[2] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); - gCurrentPinballGame->unk6F = 2; - gCurrentPinballGame->unk70 = 0; + gCurrentPinballGame->activePaletteIndex = 2; + gCurrentPinballGame->paletteSwapActive = 0; } } } - if (gCurrentPinballGame->unk1BA == 145) + if (gCurrentPinballGame->shopEntryTimer == 145) { m4aSongNumStart(MUS_SHOP); - gCurrentPinballGame->unk1A6 = 0; - gCurrentPinballGame->unk1A8 = 0; - gCurrentPinballGame->unk1A7 = gUnknown_086AD2DE[gCurrentPinballGame->unk1A6]; + gCurrentPinballGame->shopItemCursor = 0; + gCurrentPinballGame->shopSlideDirection = 0; + gCurrentPinballGame->shopSelectedItemId = gShopCursorToItemMap[gCurrentPinballGame->shopItemCursor]; - sub_1C7F4(6, 0); - sub_21FBC(1); + LoadPortraitGraphics(6, 0); + RenderEvolutionUI(1); - gMain.unk44[7]->available = 1; - gMain.unk44[8]->available = 1; - gMain.unk44[6]->available = 1; - gMain.unk44[9]->available = 1; + gMain.fieldSpriteGroups[7]->available = 1; + gMain.fieldSpriteGroups[8]->available = 1; + gMain.fieldSpriteGroups[6]->available = 1; + gMain.fieldSpriteGroups[9]->available = 1; - DmaCopy16(3, gUnknown_081B8784, OBJ_PLTT + 0x1C0, 0x20); - DmaCopy16(3, gUnknown_081B8984, BG_VRAM + 0x2000, 0xC40); + DmaCopy16(3, gShopEvoUI_Pals, OBJ_PLTT + 0x1C0, 0x20); + DmaCopy16(3, gShopModeBG_Gfx, BG_VRAM + 0x2000, 0xC40); gMain.bgOffsets[0].yOffset = 80; - gMain.unk2A = 0; - gCurrentPinballGame->unk1B8 = 15; - gMain.unk28 = 1; + gMain.shopPanelSlideOffset = 0; + gCurrentPinballGame->shopAnimSlideTimer = 15; + gMain.shopPanelActive = 1; m4aSongNumStart(SE_UNKNOWN_0x8F); if (gCurrentPinballGame->outLanePikaPosition == 2) - gCurrentPinballGame->unk1AA = 1; + gCurrentPinballGame->shopPikaSaverMaxed = 1; else - gCurrentPinballGame->unk1AA = 0; + gCurrentPinballGame->shopPikaSaverMaxed = 0; } - if (gCurrentPinballGame->unk1BA <= 144) + if (gCurrentPinballGame->shopEntryTimer <= 144) { - gCurrentPinballGame->unk6E0 = 0; - gCurrentPinballGame->unk6C4 = 2; - gCurrentPinballGame->unk6DB = 0; + gCurrentPinballGame->rouletteSubOffset = 0; + gCurrentPinballGame->portraitDisplayState = 2; + gCurrentPinballGame->creatureOamPriority = 0; var_r7 = 0; - if (gCurrentPinballGame->unk1B8 > 0) + if (gCurrentPinballGame->shopAnimSlideTimer > 0) { - if (--gCurrentPinballGame->unk1B8 > 14) + if (--gCurrentPinballGame->shopAnimSlideTimer > 14) { - gCurrentPinballGame->unk1B6 = (30 - gCurrentPinballGame->unk1B8) * 7; + gCurrentPinballGame->shopUISlideOffset = (30 - gCurrentPinballGame->shopAnimSlideTimer) * 7; - if (gCurrentPinballGame->unk1B8 == 15) + if (gCurrentPinballGame->shopAnimSlideTimer == 15) { - if (gCurrentPinballGame->unk1A6 == 3) + if (gCurrentPinballGame->shopItemCursor == 3) { if (gCurrentPinballGame->ballUpgradeType <= BALL_UPGRADE_TYPE_ULTRA_BALL) - gCurrentPinballGame->unk1A7 = gCurrentPinballGame->ballUpgradeType + 10; + gCurrentPinballGame->shopSelectedItemId = gCurrentPinballGame->ballUpgradeType + 10; else - gCurrentPinballGame->unk1A7 = 12; + gCurrentPinballGame->shopSelectedItemId = 12; } - else if (gCurrentPinballGame->unk1A6 == 6) + else if (gCurrentPinballGame->shopItemCursor == 6) { if (gMain.selectedField == FIELD_RUBY) - gCurrentPinballGame->unk1A7 = 22; + gCurrentPinballGame->shopSelectedItemId = 22; else - gCurrentPinballGame->unk1A7 = 23; + gCurrentPinballGame->shopSelectedItemId = 23; } else - gCurrentPinballGame->unk1A7 = gUnknown_086AD2DE[gCurrentPinballGame->unk1A6]; + gCurrentPinballGame->shopSelectedItemId = gShopCursorToItemMap[gCurrentPinballGame->shopItemCursor]; - sub_1C7F4(6, 0); + LoadPortraitGraphics(6, 0); var_r7 = 1; } } else - gCurrentPinballGame->unk1B6 = gCurrentPinballGame->unk1B8 * 7; + gCurrentPinballGame->shopUISlideOffset = gCurrentPinballGame->shopAnimSlideTimer * 7; } else { - if (JOY_NEW(DPAD_LEFT) && gCurrentPinballGame->unk6DD == 0) + if (JOY_NEW(DPAD_LEFT) && gCurrentPinballGame->shopPurchaseConfirmed == 0) { m4aSongNumStart(SE_EVO_SELECTION_MOVE); - if (gCurrentPinballGame->unk1A6 > 0) - gCurrentPinballGame->unk1A6--; + if (gCurrentPinballGame->shopItemCursor > 0) + gCurrentPinballGame->shopItemCursor--; else - gCurrentPinballGame->unk1A6 = 7; + gCurrentPinballGame->shopItemCursor = 7; - gCurrentPinballGame->unk1A8 = 1; - gCurrentPinballGame->unk1B8 = 30; + gCurrentPinballGame->shopSlideDirection = 1; + gCurrentPinballGame->shopAnimSlideTimer = 30; } if (JOY_NEW(DPAD_RIGHT)) { - if (gCurrentPinballGame->unk6DD == 0) + if (gCurrentPinballGame->shopPurchaseConfirmed == 0) { m4aSongNumStart(SE_EVO_SELECTION_MOVE); - if (gCurrentPinballGame->unk1A6 <= 6) - gCurrentPinballGame->unk1A6++; + if (gCurrentPinballGame->shopItemCursor <= 6) + gCurrentPinballGame->shopItemCursor++; else - gCurrentPinballGame->unk1A6 = 0; + gCurrentPinballGame->shopItemCursor = 0; - gCurrentPinballGame->unk1A8 = 0; - gCurrentPinballGame->unk1B8 = 30; + gCurrentPinballGame->shopSlideDirection = 0; + gCurrentPinballGame->shopAnimSlideTimer = 30; } } } - sub_21FBC(var_r7); + RenderEvolutionUI(var_r7); - if (gCurrentPinballGame->unk1A8 != 0) + if (gCurrentPinballGame->shopSlideDirection != 0) { - if (gCurrentPinballGame->unk1A9 != 0) - gCurrentPinballGame->unk1A9--; + if (gCurrentPinballGame->shopBgAnimFrame != 0) + gCurrentPinballGame->shopBgAnimFrame--; else - gCurrentPinballGame->unk1A9 = 7; + gCurrentPinballGame->shopBgAnimFrame = 7; } - else if (gCurrentPinballGame->unk1A9 < 7) - gCurrentPinballGame->unk1A9++; + else if (gCurrentPinballGame->shopBgAnimFrame < 7) + gCurrentPinballGame->shopBgAnimFrame++; else - gCurrentPinballGame->unk1A9 = 0; + gCurrentPinballGame->shopBgAnimFrame = 0; - DmaCopy16(3, gUnknown_086AD50C[gCurrentPinballGame->unk1A9 / 2], BG_VRAM + 0x2000, 0xC40); - gMain.bgOffsets[0].yOffset = 80 - (4 * gMain.unk2A); + DmaCopy16(3, gShopEvoBGAnimFrames[gCurrentPinballGame->shopBgAnimFrame / 2], BG_VRAM + 0x2000, 0xC40); + gMain.bgOffsets[0].yOffset = 80 - (4 * gMain.shopPanelSlideOffset); - if (gCurrentPinballGame->unk252 != 0) + if (gCurrentPinballGame->catchModeEventTimer != 0) { - if (gMain.unk2A > 0 && --gMain.unk2A == 0) + if (gMain.shopPanelSlideOffset > 0 && --gMain.shopPanelSlideOffset == 0) { - gMain.unk28 = 0; + gMain.shopPanelActive = 0; gMain.vCount = 144; } } - else if (gMain.unk2A < 20) - gMain.unk2A++; + else if (gMain.shopPanelSlideOffset < 20) + gMain.shopPanelSlideOffset++; } - if (gCurrentPinballGame->unk1B8 <= 0 && gMain.unk2A > 19) + if (gCurrentPinballGame->shopAnimSlideTimer <= 0 && gMain.shopPanelSlideOffset > 19) { - if (JOY_NEW(A_BUTTON) && gCurrentPinballGame->unk6DD == 0) + if (JOY_NEW(A_BUTTON) && gCurrentPinballGame->shopPurchaseConfirmed == 0) { s16 var_r3; - const u16 *arr = gUnknown_086AD000[gCurrentPinballGame->unk1A7]; + const u16 *arr = gShopItemData[gCurrentPinballGame->shopSelectedItemId]; - if (gUnknown_086AD2DE[gCurrentPinballGame->unk1A6] == 3 && gCurrentPinballGame->outLanePikaPosition == 2) + if (gShopCursorToItemMap[gCurrentPinballGame->shopItemCursor] == 3 && gCurrentPinballGame->outLanePikaPosition == 2) var_r3 = 999; - else if (gUnknown_086AD2DE[gCurrentPinballGame->unk1A6] == 4 && gCurrentPinballGame->unk1AF) + else if (gShopCursorToItemMap[gCurrentPinballGame->shopItemCursor] == 4 && gCurrentPinballGame->shopBonusStageAlreadyBought) var_r3 = 999; else var_r3 = arr[3]; if (gCurrentPinballGame->coins >= var_r3) { - gCurrentPinballGame->unk6DD = 1; - gCurrentPinballGame->unk6DC = gCurrentPinballGame->unk1A7; + gCurrentPinballGame->shopPurchaseConfirmed = 1; + gCurrentPinballGame->rouletteOutcomeId = gCurrentPinballGame->shopSelectedItemId; gCurrentPinballGame->coins -= var_r3; m4aMPlayAllStop(); m4aSongNumStart(SE_EVO_SELECTION_CONFIRM); - gCurrentPinballGame->unk1AB = 19; - gCurrentPinballGame->unk376 = 30; + gCurrentPinballGame->shopDoorOpenLevel = 19; + gCurrentPinballGame->sapphireBumperLitCountdown = 30; } else m4aSongNumStart(SE_FAILURE); } - else if (JOY_NEW(B_BUTTON) && gCurrentPinballGame->unk6DD == 0) + else if (JOY_NEW(B_BUTTON) && gCurrentPinballGame->shopPurchaseConfirmed == 0) { - gCurrentPinballGame->unk252 = 30; - gCurrentPinballGame->unk1B8 = 30; + gCurrentPinballGame->catchModeEventTimer = 30; + gCurrentPinballGame->shopAnimSlideTimer = 30; m4aSongNumStart(SE_MENU_CANCEL); } } - if (gCurrentPinballGame->unk6DD != 0) + if (gCurrentPinballGame->shopPurchaseConfirmed != 0) { - sub_2A354(); + ProcessRouletteOutcome(); - if (gCurrentPinballGame->unk6DE == 179) + if (gCurrentPinballGame->outcomeFrameCounter == 179) { - gCurrentPinballGame->unk252 = 30; - gCurrentPinballGame->unk1B8 = 30; + gCurrentPinballGame->catchModeEventTimer = 30; + gCurrentPinballGame->shopAnimSlideTimer = 30; - if (gUnknown_086AD2DE[gCurrentPinballGame->unk1A6] == 4) - gCurrentPinballGame->unk1AF = 1; + if (gShopCursorToItemMap[gCurrentPinballGame->shopItemCursor] == 4) + gCurrentPinballGame->shopBonusStageAlreadyBought = 1; } } - if (gCurrentPinballGame->unk252 != 0) + if (gCurrentPinballGame->catchModeEventTimer != 0) { - gCurrentPinballGame->unk252--; + gCurrentPinballGame->catchModeEventTimer--; - if (gCurrentPinballGame->unk1B8 <= 14) - gCurrentPinballGame->unk1B8 = 15; + if (gCurrentPinballGame->shopAnimSlideTimer <= 14) + gCurrentPinballGame->shopAnimSlideTimer = 15; - if (gCurrentPinballGame->unk252 < 5) + if (gCurrentPinballGame->catchModeEventTimer < 5) { - if (gCurrentPinballGame->unk252 > 1) + if (gCurrentPinballGame->catchModeEventTimer > 1) { gMain.blendBrightness = 4; - if (gCurrentPinballGame->unk252 <= 3) + if (gCurrentPinballGame->catchModeEventTimer <= 3) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1], OBJ_PLTT, 0x20); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1], OBJ_PLTT, 0x20); if (gMain.selectedField == FIELD_SAPPHIRE) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x40, OBJ_PLTT + 0x40, 0xC0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1] + 0x40, OBJ_PLTT + 0x40, 0xC0); } else - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); - gCurrentPinballGame->unk6F = 1; - gCurrentPinballGame->unk70 = 1; + gCurrentPinballGame->activePaletteIndex = 1; + gCurrentPinballGame->paletteSwapActive = 1; } } else { gMain.blendBrightness = 0; - if (gCurrentPinballGame->unk252 == 0) + if (gCurrentPinballGame->catchModeEventTimer == 0) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0], OBJ_PLTT, 0x20); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0], OBJ_PLTT, 0x20); if (gMain.selectedField == FIELD_SAPPHIRE) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0] + 0x40, OBJ_PLTT + 0x40, 0xC0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0] + 0x40, OBJ_PLTT + 0x40, 0xC0); } else - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); - gCurrentPinballGame->unk6F = 0; - gCurrentPinballGame->unk70 = 1; + gCurrentPinballGame->activePaletteIndex = 0; + gCurrentPinballGame->paletteSwapActive = 1; } } } - if (gCurrentPinballGame->unk252 == 0) + if (gCurrentPinballGame->catchModeEventTimer == 0) { if (gMain.selectedField == FIELD_RUBY) { @@ -729,26 +729,26 @@ void sub_1B140(s16 arg0) m4aSongNumStart(MUS_FIELD_SAPPHIRE2); } - if (gCurrentPinballGame->unk25 == 4) - gCurrentPinballGame->unk6DE = 170; + if (gCurrentPinballGame->ballCatchState == 4) + gCurrentPinballGame->outcomeFrameCounter = 170; else - gCurrentPinballGame->unk28 = 24; + gCurrentPinballGame->modeAnimTimer = 24; - if (gCurrentPinballGame->unk13 == 2) - sub_1C7F4(1, 0); + if (gCurrentPinballGame->boardState == 2) + LoadPortraitGraphics(1, 0); else - sub_1C7F4(0, 0); + LoadPortraitGraphics(0, 0); - gCurrentPinballGame->unk6C4 = 0; - gCurrentPinballGame->unk6DB = 3; - gCurrentPinballGame->unk6DD = 0; + gCurrentPinballGame->portraitDisplayState = 0; + gCurrentPinballGame->creatureOamPriority = 3; + gCurrentPinballGame->shopPurchaseConfirmed = 0; - gMain.unk44[7]->available = 0; - gMain.unk44[8]->available = 0; - gMain.unk44[6]->available = 0; - gMain.unk44[9]->available = 0; + gMain.fieldSpriteGroups[7]->available = 0; + gMain.fieldSpriteGroups[8]->available = 0; + gMain.fieldSpriteGroups[6]->available = 0; + gMain.fieldSpriteGroups[9]->available = 0; - gCurrentPinballGame->unkE4 = 0; + gCurrentPinballGame->activePortraitType = 0; } } } @@ -758,111 +758,111 @@ void sub_1B140(s16 arg0) if (gCurrentPinballGame->evolvablePartySize > 0) { - if (gCurrentPinballGame->unk1BA == 149) + if (gCurrentPinballGame->shopEntryTimer == 149) { m4aMPlayAllStop(); gMain.modeChangeFlags |= MODE_CHANGE_BANNER; - gCurrentPinballGame->unkEA = 0; - gCurrentPinballGame->unkEC = 120; - gCurrentPinballGame->unkE8 = 0; - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unkEE = 0; - gCurrentPinballGame->unkF2 = 3; - gCurrentPinballGame->unkFA = 1; - gCurrentPinballGame->unkFB = 0; - gCurrentPinballGame->unkF4 = 80; - gCurrentPinballGame->unkF6 = 0xF63C; //-2500 - gCurrentPinballGame->unkF0 = 50; - gCurrentPinballGame->unkF8 = 0; + gCurrentPinballGame->bannerDelayTimer = 0; + gCurrentPinballGame->bannerDisplayTimer = 120; + gCurrentPinballGame->cameraYScrollTarget = 0; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->cameraYScrollSpeed = 0; + gCurrentPinballGame->bannerGfxIndex = 3; + gCurrentPinballGame->bannerActive = 1; + gCurrentPinballGame->bannerPreserveBallState = 0; + gCurrentPinballGame->bannerDisplayDuration = 80; + gCurrentPinballGame->bannerSlidePosition = 0xF63C; //-2500 + gCurrentPinballGame->bannerSlideTimer = 50; + gCurrentPinballGame->bannerSlideVelocity = 0; - DmaCopy16(3, gUnknown_086ACEF8[3], OBJ_VRAM1 + 0x1800, 0x2400); - DmaCopy16(3, gUnknown_086ACF18[3], OBJ_PLTT + 0x1C0, 0x20); + DmaCopy16(3, gModeBannerTilemaps[3], OBJ_VRAM1 + 0x1800, 0x2400); + DmaCopy16(3, gModeBannerPalettes[3], OBJ_PLTT + 0x1C0, 0x20); gMain.blendControl = 206; - gCurrentPinballGame->unk1BA = 148; + gCurrentPinballGame->shopEntryTimer = 148; gCurrentPinballGame->evolvingPartyIndex = 0; - gCurrentPinballGame->unk1A6 = 0; - gCurrentPinballGame->unk25C = 0; - gCurrentPinballGame->unk1B0 = 0; - gCurrentPinballGame->unk1B2 = 0; + gCurrentPinballGame->shopItemCursor = 0; + gCurrentPinballGame->evoChainPosition = 0; + gCurrentPinballGame->evoNameSlideOnly = 0; + gCurrentPinballGame->evoFormAlternateTimer = 0; } - if (gCurrentPinballGame->unk1BA == 146) + if (gCurrentPinballGame->shopEntryTimer == 146) { - gCurrentPinballGame->unkE4 = 18; + gCurrentPinballGame->activePortraitType = 18; - DmaCopy16(3, &gUnknown_084F61EC, OBJ_VRAM1 + 0x1C00, 0x940); - DmaCopy16(3, &gUnknown_081B4584, PLTT + 0x180, 0x20); + DmaCopy16(3, &gPokemonNameDisplayGfx, OBJ_VRAM1 + 0x1C00, 0x940); + DmaCopy16(3, &gEvoNameDisplay_Pals, PLTT + 0x180, 0x20); } - if (gCurrentPinballGame->unk1BA == 145) + if (gCurrentPinballGame->shopEntryTimer == 145) { int stage1Evo; int stage2Evo; - gCurrentPinballGame->unk1A8 = 0; + gCurrentPinballGame->shopSlideDirection = 0; gCurrentPinballGame->currentSpecies = gCurrentPinballGame->evolvablePartySpecies[gCurrentPinballGame->evolvingPartyIndex]; - gCurrentPinballGame->unk25D = 0; + gCurrentPinballGame->evoChainMaxStage = 0; stage1Evo = gSpeciesInfo[gCurrentPinballGame->currentSpecies].evolutionTarget; if (stage1Evo < SPECIES_NONE) { - gCurrentPinballGame->unk25D++; + gCurrentPinballGame->evoChainMaxStage++; stage2Evo = gSpeciesInfo[stage1Evo].evolutionTarget; if (stage2Evo < SPECIES_NONE) - gCurrentPinballGame->unk25D++; + gCurrentPinballGame->evoChainMaxStage++; } - sub_22FA4(); + LoadPokemonNameGraphics(); if (gMain.selectedField == FIELD_RUBY) m4aSongNumStart(MUS_EVO_MODE); else m4aSongNumStart(MUS_EVO_MODE2); - sub_21FBC(var_r7); + RenderEvolutionUI(var_r7); - gMain.unk44[8]->available = 1; - gMain.unk44[9]->available = 1; - gMain.unk44[6]->available = 1; + gMain.fieldSpriteGroups[8]->available = 1; + gMain.fieldSpriteGroups[9]->available = 1; + gMain.fieldSpriteGroups[6]->available = 1; - DmaCopy16(3, &gUnknown_081B8784, PLTT + 0x3C0, 0x20); + DmaCopy16(3, &gShopEvoUI_Pals, PLTT + 0x3C0, 0x20); gMain.bgOffsets[0].yOffset = 80; - gMain.unk2A = 0; - gCurrentPinballGame->unk1B8 = 15; - gMain.unk28 = 1; + gMain.shopPanelSlideOffset = 0; + gCurrentPinballGame->shopAnimSlideTimer = 15; + gMain.shopPanelActive = 1; - DmaCopy16(3, &gUnknown_081B4784, VRAM + 0x2000, 0xC40); + DmaCopy16(3, &gEvoModeBG_Gfx, VRAM + 0x2000, 0xC40); } - if (gCurrentPinballGame->unk1BA <= 144) + if (gCurrentPinballGame->shopEntryTimer <= 144) { - gCurrentPinballGame->unk6E0 = 0; - gCurrentPinballGame->unk6C4 = 2; - gCurrentPinballGame->unk6DB = 0; + gCurrentPinballGame->rouletteSubOffset = 0; + gCurrentPinballGame->portraitDisplayState = 2; + gCurrentPinballGame->creatureOamPriority = 0; - if (gCurrentPinballGame->unk1B8 > 0) + if (gCurrentPinballGame->shopAnimSlideTimer > 0) { - gCurrentPinballGame->unk1B8--; + gCurrentPinballGame->shopAnimSlideTimer--; - if (gCurrentPinballGame->unk1B0 != 0) + if (gCurrentPinballGame->evoNameSlideOnly != 0) { - if (gCurrentPinballGame->unk1B8 == 15) - sub_22FA4(); + if (gCurrentPinballGame->shopAnimSlideTimer == 15) + LoadPokemonNameGraphics(); } else { - if (gCurrentPinballGame->unk1B8 > 14) + if (gCurrentPinballGame->shopAnimSlideTimer > 14) { - gCurrentPinballGame->unk1B6 = (30 - gCurrentPinballGame->unk1B8) * 7; + gCurrentPinballGame->shopUISlideOffset = (30 - gCurrentPinballGame->shopAnimSlideTimer) * 7; - if (gCurrentPinballGame->unk1B8 == 15) - sub_22FA4(); + if (gCurrentPinballGame->shopAnimSlideTimer == 15) + LoadPokemonNameGraphics(); } else - gCurrentPinballGame->unk1B6 = gCurrentPinballGame->unk1B8 * 7; + gCurrentPinballGame->shopUISlideOffset = gCurrentPinballGame->shopAnimSlideTimer * 7; } } else @@ -882,20 +882,20 @@ void sub_1B140(s16 arg0) gCurrentPinballGame->evolvingPartyIndex = gCurrentPinballGame->evolvablePartySize - 1; gCurrentPinballGame->currentSpecies = gCurrentPinballGame->evolvablePartySpecies[gCurrentPinballGame->evolvingPartyIndex]; - gCurrentPinballGame->unk1A8 = 1; - gCurrentPinballGame->unk1B8 = 30; - gCurrentPinballGame->unk25C = 0; - gCurrentPinballGame->unk1B0 = 0; - gCurrentPinballGame->unk25D = 0; + gCurrentPinballGame->shopSlideDirection = 1; + gCurrentPinballGame->shopAnimSlideTimer = 30; + gCurrentPinballGame->evoChainPosition = 0; + gCurrentPinballGame->evoNameSlideOnly = 0; + gCurrentPinballGame->evoChainMaxStage = 0; stage1Evo = gSpeciesInfo[gCurrentPinballGame->currentSpecies].evolutionTarget; if (stage1Evo < SPECIES_NONE) { - gCurrentPinballGame->unk25D++; + gCurrentPinballGame->evoChainMaxStage++; stage2Evo = gSpeciesInfo[stage1Evo].evolutionTarget; if (stage2Evo < SPECIES_NONE) - gCurrentPinballGame->unk25D++; + gCurrentPinballGame->evoChainMaxStage++; } } else if (JOY_NEW(DPAD_RIGHT)) @@ -911,374 +911,374 @@ void sub_1B140(s16 arg0) gCurrentPinballGame->evolvingPartyIndex = 0; gCurrentPinballGame->currentSpecies = gCurrentPinballGame->evolvablePartySpecies[gCurrentPinballGame->evolvingPartyIndex]; - gCurrentPinballGame->unk1A8 = 0; - gCurrentPinballGame->unk1B8 = 30; - gCurrentPinballGame->unk25C = 0; - gCurrentPinballGame->unk1B0 = 0; - gCurrentPinballGame->unk25D = 0; + gCurrentPinballGame->shopSlideDirection = 0; + gCurrentPinballGame->shopAnimSlideTimer = 30; + gCurrentPinballGame->evoChainPosition = 0; + gCurrentPinballGame->evoNameSlideOnly = 0; + gCurrentPinballGame->evoChainMaxStage = 0; stage1Evo = gSpeciesInfo[gCurrentPinballGame->currentSpecies].evolutionTarget; if (stage1Evo < SPECIES_NONE) { - gCurrentPinballGame->unk25D++; + gCurrentPinballGame->evoChainMaxStage++; stage2Evo = gSpeciesInfo[stage1Evo].evolutionTarget; if (stage2Evo < SPECIES_NONE) - gCurrentPinballGame->unk25D++; + gCurrentPinballGame->evoChainMaxStage++; } } } if (JOY_NEW(DPAD_UP)) { - if (gCurrentPinballGame->unk25C == 0) + if (gCurrentPinballGame->evoChainPosition == 0) { evoTarget = gSpeciesInfo[gCurrentPinballGame->currentSpecies].evolutionTarget; if (evoTarget < SPECIES_NONE) { m4aSongNumStart(SE_EVO_SELECTION_MOVE); - gCurrentPinballGame->unk59A = evoTarget; - gCurrentPinballGame->unk1B8 = 30; - gCurrentPinballGame->unk1B0 = 1; - gCurrentPinballGame->unk25C++; + gCurrentPinballGame->evoTargetSpecies = evoTarget; + gCurrentPinballGame->shopAnimSlideTimer = 30; + gCurrentPinballGame->evoNameSlideOnly = 1; + gCurrentPinballGame->evoChainPosition++; } } - else if (gCurrentPinballGame->unk25C == 1) + else if (gCurrentPinballGame->evoChainPosition == 1) { - evoTarget = gSpeciesInfo[gCurrentPinballGame->unk59A].evolutionTarget; + evoTarget = gSpeciesInfo[gCurrentPinballGame->evoTargetSpecies].evolutionTarget; if (evoTarget < SPECIES_NONE) { m4aSongNumStart(SE_EVO_SELECTION_MOVE); - gCurrentPinballGame->unk59A = evoTarget; - gCurrentPinballGame->unk1B8 = 30; - gCurrentPinballGame->unk1B0 = 1; - gCurrentPinballGame->unk25C++; + gCurrentPinballGame->evoTargetSpecies = evoTarget; + gCurrentPinballGame->shopAnimSlideTimer = 30; + gCurrentPinballGame->evoNameSlideOnly = 1; + gCurrentPinballGame->evoChainPosition++; } } - gCurrentPinballGame->unk1B2 = 0; + gCurrentPinballGame->evoFormAlternateTimer = 0; } else if (JOY_NEW(DPAD_DOWN)) { - if (gCurrentPinballGame->unk25C == 1) + if (gCurrentPinballGame->evoChainPosition == 1) { evoTarget = gCurrentPinballGame->currentSpecies; if (evoTarget < SPECIES_NONE) { m4aSongNumStart(SE_EVO_SELECTION_MOVE); - gCurrentPinballGame->unk59A = evoTarget; - gCurrentPinballGame->unk1B8 = 30; - gCurrentPinballGame->unk1B0 = 1; - gCurrentPinballGame->unk25C--; + gCurrentPinballGame->evoTargetSpecies = evoTarget; + gCurrentPinballGame->shopAnimSlideTimer = 30; + gCurrentPinballGame->evoNameSlideOnly = 1; + gCurrentPinballGame->evoChainPosition--; } } - else if (gCurrentPinballGame->unk25C == 2) + else if (gCurrentPinballGame->evoChainPosition == 2) { evoTarget = gSpeciesInfo[gCurrentPinballGame->currentSpecies].evolutionTarget; if (evoTarget < SPECIES_NONE) { m4aSongNumStart(SE_EVO_SELECTION_MOVE); - gCurrentPinballGame->unk59A = evoTarget; - gCurrentPinballGame->unk1B8 = 30; - gCurrentPinballGame->unk1B0 = 1; - gCurrentPinballGame->unk25C--; + gCurrentPinballGame->evoTargetSpecies = evoTarget; + gCurrentPinballGame->shopAnimSlideTimer = 30; + gCurrentPinballGame->evoNameSlideOnly = 1; + gCurrentPinballGame->evoChainPosition--; } } - gCurrentPinballGame->unk1B2 = 0; + gCurrentPinballGame->evoFormAlternateTimer = 0; } - if (gCurrentPinballGame->unk25C > 0) + if (gCurrentPinballGame->evoChainPosition > 0) { - switch (gCurrentPinballGame->unk59A) + switch (gCurrentPinballGame->evoTargetSpecies) { case 14: - if (gCurrentPinballGame->unk1B2 == 50) + if (gCurrentPinballGame->evoFormAlternateTimer == 50) { - gCurrentPinballGame->unk1B2 = 0; - gCurrentPinballGame->unk59A = 16; - sub_22FA4(); + gCurrentPinballGame->evoFormAlternateTimer = 0; + gCurrentPinballGame->evoTargetSpecies = 16; + LoadPokemonNameGraphics(); } break; case 16: - if (gCurrentPinballGame->unk1B2 == 50) + if (gCurrentPinballGame->evoFormAlternateTimer == 50) { - gCurrentPinballGame->unk1B2 = 0; - gCurrentPinballGame->unk59A = 14; - sub_22FA4(); + gCurrentPinballGame->evoFormAlternateTimer = 0; + gCurrentPinballGame->evoTargetSpecies = 14; + LoadPokemonNameGraphics(); } break; case 89: - if (gCurrentPinballGame->unk1B2 == 50) + if (gCurrentPinballGame->evoFormAlternateTimer == 50) { - gCurrentPinballGame->unk1B2 = 0; - gCurrentPinballGame->unk59A = 90; - sub_22FA4(); + gCurrentPinballGame->evoFormAlternateTimer = 0; + gCurrentPinballGame->evoTargetSpecies = 90; + LoadPokemonNameGraphics(); } break; case 90: - if (gCurrentPinballGame->unk1B2 == 50) + if (gCurrentPinballGame->evoFormAlternateTimer == 50) { - gCurrentPinballGame->unk1B2 = 0; - gCurrentPinballGame->unk59A = 89; - sub_22FA4(); + gCurrentPinballGame->evoFormAlternateTimer = 0; + gCurrentPinballGame->evoTargetSpecies = 89; + LoadPokemonNameGraphics(); } break; case 176: - if (gCurrentPinballGame->unk1B2 == 50) + if (gCurrentPinballGame->evoFormAlternateTimer == 50) { - gCurrentPinballGame->unk1B2 = 0; - gCurrentPinballGame->unk59A = 177; - sub_22FA4(); + gCurrentPinballGame->evoFormAlternateTimer = 0; + gCurrentPinballGame->evoTargetSpecies = 177; + LoadPokemonNameGraphics(); } break; case 177: - if (gCurrentPinballGame->unk1B2 == 50) + if (gCurrentPinballGame->evoFormAlternateTimer == 50) { - gCurrentPinballGame->unk1B2 = 0; - gCurrentPinballGame->unk59A = 176; - sub_22FA4(); + gCurrentPinballGame->evoFormAlternateTimer = 0; + gCurrentPinballGame->evoTargetSpecies = 176; + LoadPokemonNameGraphics(); } break; } - gCurrentPinballGame->unk1B2++; + gCurrentPinballGame->evoFormAlternateTimer++; } } - sub_23070(); + UpdatePokemonNamePosition(); - if (gCurrentPinballGame->unk1A8 != 0) + if (gCurrentPinballGame->shopSlideDirection != 0) { - if (gCurrentPinballGame->unk1A9 != 0) - gCurrentPinballGame->unk1A9--; + if (gCurrentPinballGame->shopBgAnimFrame != 0) + gCurrentPinballGame->shopBgAnimFrame--; else - gCurrentPinballGame->unk1A9 = 7; + gCurrentPinballGame->shopBgAnimFrame = 7; } else { - if (gCurrentPinballGame->unk1A9 <= 6) - gCurrentPinballGame->unk1A9++; + if (gCurrentPinballGame->shopBgAnimFrame <= 6) + gCurrentPinballGame->shopBgAnimFrame++; else - gCurrentPinballGame->unk1A9 = 0; + gCurrentPinballGame->shopBgAnimFrame = 0; } - DmaCopy16(3, gUnknown_086AD50C[gCurrentPinballGame->unk1A9 / 2 + 4], VRAM + 0x2000, 0xC40); - gMain.bgOffsets[0].yOffset = 80 - (gMain.unk2A * 4); + DmaCopy16(3, gShopEvoBGAnimFrames[gCurrentPinballGame->shopBgAnimFrame / 2 + 4], VRAM + 0x2000, 0xC40); + gMain.bgOffsets[0].yOffset = 80 - (gMain.shopPanelSlideOffset * 4); - if (gCurrentPinballGame->unk252 != 0) + if (gCurrentPinballGame->catchModeEventTimer != 0) { - if (gMain.unk2A > 0 && --gMain.unk2A == 0) + if (gMain.shopPanelSlideOffset > 0 && --gMain.shopPanelSlideOffset == 0) { - gMain.unk28 = 0; + gMain.shopPanelActive = 0; gMain.vCount = 144; } } - else if (gMain.unk2A <= 19) - gMain.unk2A++; + else if (gMain.shopPanelSlideOffset <= 19) + gMain.shopPanelSlideOffset++; - sub_21FBC(0); + RenderEvolutionUI(0); } - if (gCurrentPinballGame->unk1B8 <= 0 && gMain.unk2A > 19 && JOY_NEW(A_BUTTON) == A_BUTTON) + if (gCurrentPinballGame->shopAnimSlideTimer <= 0 && gMain.shopPanelSlideOffset > 19 && JOY_NEW(A_BUTTON) == A_BUTTON) { - gCurrentPinballGame->unk252 = 30; - gCurrentPinballGame->unk1B0 = 0; - gCurrentPinballGame->unk1B8 = 30; + gCurrentPinballGame->catchModeEventTimer = 30; + gCurrentPinballGame->evoNameSlideOnly = 0; + gCurrentPinballGame->shopAnimSlideTimer = 30; m4aSongNumStart(SE_EVO_SELECTION_CONFIRM); } - if (gCurrentPinballGame->unk252 == 0) + if (gCurrentPinballGame->catchModeEventTimer == 0) return; - gCurrentPinballGame->unk252--; + gCurrentPinballGame->catchModeEventTimer--; - if (gCurrentPinballGame->unk1B8 <= 14) - gCurrentPinballGame->unk1B8 = 15; + if (gCurrentPinballGame->shopAnimSlideTimer <= 14) + gCurrentPinballGame->shopAnimSlideTimer = 15; - if (gCurrentPinballGame->unk252 <= 4) + if (gCurrentPinballGame->catchModeEventTimer <= 4) { - if (gCurrentPinballGame->unk252 > 1) + if (gCurrentPinballGame->catchModeEventTimer > 1) { gMain.blendBrightness = 4; - if (gCurrentPinballGame->unk252 <= 3) + if (gCurrentPinballGame->catchModeEventTimer <= 3) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1], OBJ_PLTT, 0x20); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1], OBJ_PLTT, 0x20); if (gMain.selectedField == FIELD_SAPPHIRE) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x40, OBJ_PLTT + 0x40, 0xC0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1] + 0x40, OBJ_PLTT + 0x40, 0xC0); } else - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); - gCurrentPinballGame->unk6F = 1; - gCurrentPinballGame->unk70 = 1; + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); + gCurrentPinballGame->activePaletteIndex = 1; + gCurrentPinballGame->paletteSwapActive = 1; } } else { gMain.blendBrightness = 0; - if (gCurrentPinballGame->unk252 != 0) + if (gCurrentPinballGame->catchModeEventTimer != 0) return; - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0], OBJ_PLTT, 0x20); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0], OBJ_PLTT, 0x20); if (gMain.selectedField == FIELD_SAPPHIRE) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0] + 0x40, OBJ_PLTT + 0x40, 0xC0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0] + 0x40, OBJ_PLTT + 0x40, 0xC0); } else - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); - gCurrentPinballGame->unk6F = 0; - gCurrentPinballGame->unk70 = 1; + gCurrentPinballGame->activePaletteIndex = 0; + gCurrentPinballGame->paletteSwapActive = 1; } } - if (gCurrentPinballGame->unk252 == 0) + if (gCurrentPinballGame->catchModeEventTimer == 0) { - if (gCurrentPinballGame->unk25 == 4) - gCurrentPinballGame->unk6DE = 170; + if (gCurrentPinballGame->ballCatchState == 4) + gCurrentPinballGame->outcomeFrameCounter = 170; else - gCurrentPinballGame->unk28 = 24; + gCurrentPinballGame->modeAnimTimer = 24; - gCurrentPinballGame->unk6C4 = 0; - gCurrentPinballGame->unk6DB = 3; + gCurrentPinballGame->portraitDisplayState = 0; + gCurrentPinballGame->creatureOamPriority = 3; - gMain.unk44[8]->available = 0; - gMain.unk44[6]->available = 0; - gMain.unk44[9]->available = 0; + gMain.fieldSpriteGroups[8]->available = 0; + gMain.fieldSpriteGroups[6]->available = 0; + gMain.fieldSpriteGroups[9]->available = 0; - gCurrentPinballGame->unk720 = 0; - gCurrentPinballGame->unk71D[0] = 4; - gCurrentPinballGame->unk71D[1] = 4; - gCurrentPinballGame->unk71D[2] = 4; + gCurrentPinballGame->evoBlinkTimer = 0; + gCurrentPinballGame->catchLights[0] = 4; + gCurrentPinballGame->catchLights[1] = 4; + gCurrentPinballGame->catchLights[2] = 4; - sub_2310C(); - gCurrentPinballGame->unkE4 = 0; + HidePokemonNameDisplay(); + gCurrentPinballGame->activePortraitType = 0; } } - else if (gCurrentPinballGame->unk1BA == 50) - gCurrentPinballGame->unk28 = 24; + else if (gCurrentPinballGame->shopEntryTimer == 50) + gCurrentPinballGame->modeAnimTimer = 24; } } -void sub_1C560(void) +void InitCenterTrapMode(void) { - gCurrentPinballGame->unk28 = 0x96; - gMain.unk44[13]->available = 0; - gCurrentPinballGame->unk5F3 = 0; + gCurrentPinballGame->modeAnimTimer = 0x96; + gMain.fieldSpriteGroups[13]->available = 0; + gCurrentPinballGame->bonusTrapEnabled = 0; gCurrentPinballGame->scoreAddedInFrame = 10000; - gCurrentPinballGame->unk5F7 = 1; + gCurrentPinballGame->ballUpgradeTimerFrozen = 1; PlayRumble(8); } -void sub_1C5AC(void) +void AnimateCenterTrapSequence(void) { - if (gCurrentPinballGame->unk28) + if (gCurrentPinballGame->modeAnimTimer) { - gCurrentPinballGame->unk28--; - if (gCurrentPinballGame->unk28 > 148) + gCurrentPinballGame->modeAnimTimer--; + if (gCurrentPinballGame->modeAnimTimer > 148) { - gCurrentPinballGame->ball->unk0 = 1; - gCurrentPinballGame->unk1F = 1; + gCurrentPinballGame->ball->ballHidden = 1; + gCurrentPinballGame->ballFrozenState = 1; gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; gCurrentPinballGame->ball->positionQ0.x = 119; gCurrentPinballGame->ball->positionQ0.y = 279; - gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->ball->spinSpeed = 0; gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ0.x << 8; gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ0.y << 8; - gCurrentPinballGame->unk730 = 1; + gCurrentPinballGame->trapAnimState = 1; } - else if (gCurrentPinballGame->unk28 == 148) + else if (gCurrentPinballGame->modeAnimTimer == 148) { - gCurrentPinballGame->unk1F = 1; - gCurrentPinballGame->unk730 = 0; + gCurrentPinballGame->ballFrozenState = 1; + gCurrentPinballGame->trapAnimState = 0; } - else if (gCurrentPinballGame->unk28 > 36) + else if (gCurrentPinballGame->modeAnimTimer > 36) { - gCurrentPinballGame->unk1F = 1; - gCurrentPinballGame->unk730 = 0; + gCurrentPinballGame->ballFrozenState = 1; + gCurrentPinballGame->trapAnimState = 0; } - else if (gCurrentPinballGame->unk28 > 24) + else if (gCurrentPinballGame->modeAnimTimer > 24) { - gCurrentPinballGame->unk1F = 1; - gCurrentPinballGame->unk730 = 1; + gCurrentPinballGame->ballFrozenState = 1; + gCurrentPinballGame->trapAnimState = 1; } - else if (gCurrentPinballGame->unk28 == 24) + else if (gCurrentPinballGame->modeAnimTimer == 24) { m4aSongNumStart(SE_UNKNOWN_0x80); - gCurrentPinballGame->unk730 = 2; + gCurrentPinballGame->trapAnimState = 2; gCurrentPinballGame->ball->velocity.x = 73; gCurrentPinballGame->ball->velocity.y = 236; - gCurrentPinballGame->ball->unk0 = 0; - gCurrentPinballGame->unk1F = 0; - gCurrentPinballGame->unk5FA = 0; + gCurrentPinballGame->ball->ballHidden = 0; + gCurrentPinballGame->ballFrozenState = 0; + gCurrentPinballGame->boardEntityActive = 0; gCurrentPinballGame->ball->scale = 0x88; - gCurrentPinballGame->unk5F7 = 0; + gCurrentPinballGame->ballUpgradeTimerFrozen = 0; } - else if (gCurrentPinballGame->unk28 > 12) + else if (gCurrentPinballGame->modeAnimTimer > 12) { - gCurrentPinballGame->unk730 = 2; - if (gCurrentPinballGame->unk28 > 21) - gCurrentPinballGame->ball->scale = ((24 - gCurrentPinballGame->unk28) * 0x70 / 3) + 0x90; + gCurrentPinballGame->trapAnimState = 2; + if (gCurrentPinballGame->modeAnimTimer > 21) + gCurrentPinballGame->ball->scale = ((24 - gCurrentPinballGame->modeAnimTimer) * 0x70 / 3) + 0x90; else gCurrentPinballGame->ball->scale = 0x100; } else { - gCurrentPinballGame->unk730 = 1; + gCurrentPinballGame->trapAnimState = 1; } - if (gCurrentPinballGame->unk28 <= 40) + if (gCurrentPinballGame->modeAnimTimer <= 40) { - if (gCurrentPinballGame->unkE6 > 0) + if (gCurrentPinballGame->cameraYAdjust > 0) { - gCurrentPinballGame->unkE6--; + gCurrentPinballGame->cameraYAdjust--; } } } else { - gCurrentPinballGame->unk730 = 0; - gCurrentPinballGame->unk25 = 0; + gCurrentPinballGame->trapAnimState = 0; + gCurrentPinballGame->ballCatchState = 0; } } -void sub_1C73C(void) +void TransitionToBonusField(void) { - gMain.unk44[13]->available = 0; - sub_4B408(0); + gMain.fieldSpriteGroups[13]->available = 0; + SaveGameStateSnapshot(0); gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; - gCurrentPinballGame->ball->unk0 = 0; - gCurrentPinballGame->unk1F = 0; + gCurrentPinballGame->ball->ballHidden = 0; + gCurrentPinballGame->ballFrozenState = 0; gCurrentPinballGame->ball->scale = 0x100; - gCurrentPinballGame->unk730 = 0; - gCurrentPinballGame->unk25 = 0; - if (gCurrentPinballGame->unk282 == 0) + gCurrentPinballGame->trapAnimState = 0; + gCurrentPinballGame->ballCatchState = 0; + if (gCurrentPinballGame->bonusReturnState == 0) { - gCurrentPinballGame->unk723 = 0; - gCurrentPinballGame->unk720 = 0; - gCurrentPinballGame->unk71D[0] = 0; - gCurrentPinballGame->unk71D[1] = 0; - gCurrentPinballGame->unk71D[2] = 0; + gCurrentPinballGame->evoItemCount = 0; + gCurrentPinballGame->evoBlinkTimer = 0; + gCurrentPinballGame->catchLights[0] = 0; + gCurrentPinballGame->catchLights[1] = 0; + gCurrentPinballGame->catchLights[2] = 0; } m4aMPlayAllStop(); - sub_0D10(); - gMain.unk5 = gMain.selectedField; - gMain.selectedField = gCurrentPinballGame->unk284; - gMain.unk6 = 1; + DisableVBlankInterrupts(); + gMain.tempField = gMain.selectedField; + gMain.selectedField = gCurrentPinballGame->nextBonusField; + gMain.isBonusField = 1; gMain.subState = 0; } \ No newline at end of file diff --git a/src/rom_201B8.c b/src/rom_201B8.c index a6bd8f0..1c04217 100644 --- a/src/rom_201B8.c +++ b/src/rom_201B8.c @@ -4,40 +4,40 @@ #include "constants/bg_music.h" #include "constants/ruby_states.h" -extern const u8 gUnknown_0847FD0C[][0x100]; -extern const s16 gUnknown_086ADEB0[][2]; -extern const u16 gUnknown_086ADEB2[][2]; -extern const s16 gUnknown_086ADA6E[][5]; -extern const u16 gUnknown_086B2FC0[146][18]; +extern const u8 gSideBumperGfx[][0x100]; +extern const s16 gSideBumperGfxFrameIndices[][2]; +extern const u16 gSideBumperAnimDurations[][2]; +extern const s16 gGulpinAnimData[][5]; +extern const u16 gGulpinOamData[146][18]; extern const u8 gRubyStageGulpin_Gfx[][0x180]; -extern const s16 gUnknown_086ADA58[]; -extern const u8 gUnknown_083C3C2C[][0x300]; -extern const u8 gUnknown_083C562C[][0x100]; -extern const u8 gUnknown_083C542C[][0x80]; +extern const s16 gChikoritaFlashFrameIndices[]; +extern const u8 gRubyFlashingDecorationTiles[][0x300]; +extern const u8 gChikoritaExplosionTiles[][0x100]; +extern const u8 gChikoritaProjectileTiles[][0x80]; extern const u8 gRubyBoardSharpedo_Gfx[][0x260]; -extern const s16 gUnknown_086AD9FC[][2]; +extern const s16 gSharpedoAnimFrameData[][2]; extern const u16 gSharpedoSpritesheetOam[42][3][3]; -extern const u8 gUnknown_083C806C[][0x100]; -extern const u8 gUnknown_0844928C[][0x100]; -extern const u8 gUnknown_08137998[]; -extern const u8 gUnknown_081379B8[]; -extern const s16 gUnknown_08137968[]; -extern const struct Vector16 gUnknown_086AD9DC[]; +extern const u8 gRubyFlashingTiles_Secondary[][0x100]; +extern const u8 gLotadBumperTiles[][0x100]; +extern const u8 gChinchouBumperPalettes[]; +extern const u8 gLotadBumperPalettes[]; +extern const s16 gPondBumperTransitionFrames[]; +extern const struct Vector16 gChinchouWaypointPositions[]; extern const s16 gWhiscashFramesetData[][4]; -extern const s16 gUnknown_086AD9EC[]; -extern const s16 gUnknown_0813798C[]; -extern const u8 gUnknown_081379D8[]; +extern const s16 gWhiscashShakeOffsets[]; +extern const s16 gLotadBobOffsets[]; +extern const u8 gWhiscashPalettes[]; extern const u8 gWhiscash_Gfx[][0x480]; extern const u8 gRubyBoardShopDoor_Gfx[][0x180]; -extern const s16 gUnknown_086AD7C0[50][3]; -extern const s16 gUnknown_086AD856[][2]; +extern const s16 gNuzleafAnimFrameData[50][3]; +extern const s16 gNuzleafPositions[][2]; extern const u8 gRubyStageNuzleaf_Gfx[][0x280]; -extern const u16 gUnknown_086B2E64[58][6]; -extern const u16 gUnknown_081C00E4[]; -extern const u16 gUnknown_086AD798[2]; -extern const u16 gUnknown_086AD070[]; -extern const u16 gUnknown_081C02E4[]; -extern const s16 gUnknown_086AD79C[]; +extern const u16 gNuzleafOamData[58][6]; +extern const u16 gPortraitGenericPalettes[]; +extern const u16 gPortraitPaletteSlots[2]; +extern const u16 gPortraitIdleCycleData[]; +extern const u16 gPortraitAnimPalettes[]; +extern const s16 gRouletteOutcomeFrameOffsets[]; extern struct SongHeader se_unk_7a; extern struct SongHeader se_unk_79; @@ -45,15 +45,15 @@ extern struct SongHeader se_whiscash_splashdown; extern struct SongHeader se_unk_142; extern struct SongHeader se_unk_b1; extern struct SongHeader se_unk_b3; -extern s16 gUnknown_086ADF48[100]; -extern s16 gUnknown_086ADF8A[3]; -extern u16 gUnknown_086ADEE0[][2]; -extern s16 gUnknown_086B4922[28][12]; +extern s16 gPikaSaverAnimFrameTable[100]; +extern s16 gCatchHoleXPositions[3]; +extern u16 gCatchOverlayAnimData[][2]; +extern s16 gCatchOverlayOamData[28][12]; #define MIN_POND_SWITCHES_BEFORE_WHISCASH_AVAILABLE 3 -void sub_1C7F4(s16 arg0, s16 arg1) +void LoadPortraitGraphics(s16 arg0, s16 arg1) { s16 i; s16 var0; @@ -67,113 +67,113 @@ void sub_1C7F4(s16 arg0, s16 arg1) switch (arg0) { case 0: - gCurrentPinballGame->unk6DB = 3; - gCurrentPinballGame->unk749[arg1] = gCurrentPinballGame->unk6D9[arg1]; - DmaCopy16(3, gUnknown_0848D68C[gCurrentPinballGame->unk749[arg1]], (void *)0x06010CA0 + arg1 * 0x300, 0x300); - index = gCurrentPinballGame->unk6D9[arg1] * 0x10; - DmaCopy16(3, &gUnknown_081C00E4[index], (void *)0x05000200 + gUnknown_086AD798[arg1] * 0x20, 0x20); + gCurrentPinballGame->creatureOamPriority = 3; + gCurrentPinballGame->portraitGfxIndex[arg1] = gCurrentPinballGame->rouletteAreaIndex[arg1]; + DmaCopy16(3, gPortraitGenericGraphics[gCurrentPinballGame->portraitGfxIndex[arg1]], (void *)0x06010CA0 + arg1 * 0x300, 0x300); + index = gCurrentPinballGame->rouletteAreaIndex[arg1] * 0x10; + DmaCopy16(3, &gPortraitGenericPalettes[index], (void *)0x05000200 + gPortraitPaletteSlots[arg1] * 0x20, 0x20); break; case 1: - ptr = gUnknown_086AD070; - gCurrentPinballGame->unk749[arg1] = ptr[(gCurrentPinballGame->unk708 % 48) / 24]; + ptr = gPortraitIdleCycleData; + gCurrentPinballGame->portraitGfxIndex[arg1] = ptr[(gCurrentPinballGame->portraitCycleFrame % 48) / 24]; index = ptr[2] * 0x10; - DmaCopy16(3, gUnknown_083A8EEC[gCurrentPinballGame->unk749[arg1]], (void *)0x06010CA0 + arg1 * 0x300, 0x300); - DmaCopy16(3, &gUnknown_081C02E4[index], (void *)0x05000200 + gUnknown_086AD798[arg1] * 0x20, 0x20); + DmaCopy16(3, gPortraitAnimFrameGraphics[gCurrentPinballGame->portraitGfxIndex[arg1]], (void *)0x06010CA0 + arg1 * 0x300, 0x300); + DmaCopy16(3, &gPortraitAnimPalettes[index], (void *)0x05000200 + gPortraitPaletteSlots[arg1] * 0x20, 0x20); break; case 2: - ptr = gUnknown_086AD000[gCurrentPinballGame->unk6EC[arg1]]; - gCurrentPinballGame->unk749[arg1] = ptr[0]; + ptr = gShopItemData[gCurrentPinballGame->modeOutcomeValues[arg1]]; + gCurrentPinballGame->portraitGfxIndex[arg1] = ptr[0]; index = ptr[2] * 0x10; - DmaCopy16(3, gUnknown_083A8EEC[gCurrentPinballGame->unk749[arg1]], (void *)0x06010CA0 + arg1 * 0x300, 0x300); - DmaCopy16(3, &gUnknown_081C02E4[index], (void *)0x05000200 + gUnknown_086AD798[arg1] * 0x20, 0x20); + DmaCopy16(3, gPortraitAnimFrameGraphics[gCurrentPinballGame->portraitGfxIndex[arg1]], (void *)0x06010CA0 + arg1 * 0x300, 0x300); + DmaCopy16(3, &gPortraitAnimPalettes[index], (void *)0x05000200 + gPortraitPaletteSlots[arg1] * 0x20, 0x20); break; case 3: - gCurrentPinballGame->unk749[arg1] = gCurrentPinballGame->currentSpecies; + gCurrentPinballGame->portraitGfxIndex[arg1] = gCurrentPinballGame->currentSpecies; DmaCopy16( 3, - gMonPortraitGroupGfx[gCurrentPinballGame->unk749[arg1] / 15] + (gCurrentPinballGame->unk749[arg1] % 15) * 0x300, + gMonPortraitGroupGfx[gCurrentPinballGame->portraitGfxIndex[arg1] / 15] + (gCurrentPinballGame->portraitGfxIndex[arg1] % 15) * 0x300, (void *)0x06010CA0 + arg1 * 24, 0x300); DmaCopy16( 3, - gMonPortraitGroupPals[gCurrentPinballGame->unk749[arg1] / 15] + (gCurrentPinballGame->unk749[arg1] % 15) * 0x20, + gMonPortraitGroupPals[gCurrentPinballGame->portraitGfxIndex[arg1] / 15] + (gCurrentPinballGame->portraitGfxIndex[arg1] % 15) * 0x20, (void *)0x050003A0 , 0x20); DmaCopy16(3, gMonPortraitGroupPals[0] + 15 * 0x20, (void *)0x050003E0, 0x20); break; case 9: - if (gCurrentPinballGame->unk25C > 0) + if (gCurrentPinballGame->evoChainPosition > 0) { - if (gMain_saveData.pokedexFlags[gCurrentPinballGame->unk59A] == SPECIES_UNSEEN) + if (gMain_saveData.pokedexFlags[gCurrentPinballGame->evoTargetSpecies] == SPECIES_UNSEEN) { - gCurrentPinballGame->unk749[arg1] = SPECIES_NONE; + gCurrentPinballGame->portraitGfxIndex[arg1] = SPECIES_NONE; DmaCopy16( 3, - gMonPortraitGroupPals[gCurrentPinballGame->unk749[arg1] / 15] + (gCurrentPinballGame->unk749[arg1] % 15) * 0x20, + gMonPortraitGroupPals[gCurrentPinballGame->portraitGfxIndex[arg1] / 15] + (gCurrentPinballGame->portraitGfxIndex[arg1] % 15) * 0x20, (void *)0x050003A0, 0x20); } - else if (gMain_saveData.pokedexFlags[gCurrentPinballGame->unk59A] < SPECIES_CAUGHT) + else if (gMain_saveData.pokedexFlags[gCurrentPinballGame->evoTargetSpecies] < SPECIES_CAUGHT) { - gCurrentPinballGame->unk749[arg1] = gCurrentPinballGame->unk59A; + gCurrentPinballGame->portraitGfxIndex[arg1] = gCurrentPinballGame->evoTargetSpecies; DmaCopy16(3, gMonPortraitGroupPals[0] + 15 * 0x20, (void *)0x050003A0, 0x20); } else { - gCurrentPinballGame->unk749[arg1] = gCurrentPinballGame->unk59A; + gCurrentPinballGame->portraitGfxIndex[arg1] = gCurrentPinballGame->evoTargetSpecies; DmaCopy16( 3, - gMonPortraitGroupPals[gCurrentPinballGame->unk749[arg1] / 15] + (gCurrentPinballGame->unk749[arg1] % 15) * 0x20, + gMonPortraitGroupPals[gCurrentPinballGame->portraitGfxIndex[arg1] / 15] + (gCurrentPinballGame->portraitGfxIndex[arg1] % 15) * 0x20, (void *)0x050003A0, 0x20); } } else { - gCurrentPinballGame->unk749[arg1] = gCurrentPinballGame->currentSpecies; + gCurrentPinballGame->portraitGfxIndex[arg1] = gCurrentPinballGame->currentSpecies; DmaCopy16( 3, - gMonPortraitGroupPals[gCurrentPinballGame->unk749[arg1] / 15] + (gCurrentPinballGame->unk749[arg1] % 15) * 0x20, + gMonPortraitGroupPals[gCurrentPinballGame->portraitGfxIndex[arg1] / 15] + (gCurrentPinballGame->portraitGfxIndex[arg1] % 15) * 0x20, (void *)0x050003A0, 0x20); } DmaCopy16( 3, - gMonPortraitGroupGfx[gCurrentPinballGame->unk749[arg1] / 15] + (gCurrentPinballGame->unk749[arg1] % 15) * 0x300, + gMonPortraitGroupGfx[gCurrentPinballGame->portraitGfxIndex[arg1] / 15] + (gCurrentPinballGame->portraitGfxIndex[arg1] % 15) * 0x300, (void *)0x06010CA0 + arg1 * 0x18, 0x300); break; case 4: - if (gCurrentPinballGame->unk17 == 2) + if (gCurrentPinballGame->boardSubState == 2) { - gCurrentPinballGame->unk749[arg1] = gUnknown_086AD000[15][(gCurrentPinballGame->unk708 % 48) / 24]; - DmaCopy16(3, gUnknown_083A8EEC[gCurrentPinballGame->unk749[arg1]], (void *)0x06010CA0 + arg1 * 0x300, 0x300); + gCurrentPinballGame->portraitGfxIndex[arg1] = gShopItemData[15][(gCurrentPinballGame->portraitCycleFrame % 48) / 24]; + DmaCopy16(3, gPortraitAnimFrameGraphics[gCurrentPinballGame->portraitGfxIndex[arg1]], (void *)0x06010CA0 + arg1 * 0x300, 0x300); // !!!!! BUG: this should be multiplied by 16 !! - index = gUnknown_086AD000[15][2]; + index = gShopItemData[15][2]; } else { - gCurrentPinballGame->unk749[arg1] = gUnknown_086AD000[16][(gCurrentPinballGame->unk708 % 48) / 24]; - DmaCopy16(3, gUnknown_083A8EEC[gCurrentPinballGame->unk749[arg1]], (void *)0x06010CA0 + arg1 * 0x300, 0x300); - index = gUnknown_086AD000[16][2] * 16; + gCurrentPinballGame->portraitGfxIndex[arg1] = gShopItemData[16][(gCurrentPinballGame->portraitCycleFrame % 48) / 24]; + DmaCopy16(3, gPortraitAnimFrameGraphics[gCurrentPinballGame->portraitGfxIndex[arg1]], (void *)0x06010CA0 + arg1 * 0x300, 0x300); + index = gShopItemData[16][2] * 16; } - DmaCopy16(3, &gUnknown_081C02E4[index], (void *)0x05000200 + gUnknown_086AD798[arg1] * 0x20, 0x20); + DmaCopy16(3, &gPortraitAnimPalettes[index], (void *)0x05000200 + gPortraitPaletteSlots[arg1] * 0x20, 0x20); break; case 6: - ptr = gUnknown_086AD000[gCurrentPinballGame->unk1A7]; - gCurrentPinballGame->unk749[arg1] = ptr[0]; + ptr = gShopItemData[gCurrentPinballGame->shopSelectedItemId]; + gCurrentPinballGame->portraitGfxIndex[arg1] = ptr[0]; index = ptr[2] * 16; - DmaCopy16(3, gUnknown_083A8EEC[gCurrentPinballGame->unk749[arg1]], (void *)0x06010CA0 + arg1 * 0x300, 0x300); + DmaCopy16(3, gPortraitAnimFrameGraphics[gCurrentPinballGame->portraitGfxIndex[arg1]], (void *)0x06010CA0 + arg1 * 0x300, 0x300); if (gCurrentPinballGame->coins < ptr[3] || ( - (gUnknown_086AD2DE[gCurrentPinballGame->unk1A6] == 3 && gCurrentPinballGame->outLanePikaPosition == 2) + (gShopCursorToItemMap[gCurrentPinballGame->shopItemCursor] == 3 && gCurrentPinballGame->outLanePikaPosition == 2) || - (gUnknown_086AD2DE[gCurrentPinballGame->unk1A6] == 4 && gCurrentPinballGame->unk1AF) + (gShopCursorToItemMap[gCurrentPinballGame->shopItemCursor] == 4 && gCurrentPinballGame->shopBonusStageAlreadyBought) )) { - DmaCopy16(3, &gUnknown_081C02E4[index], sp0, 0x20); + DmaCopy16(3, &gPortraitAnimPalettes[index], sp0, 0x20); for (i = 0; i < 16; i++) { rgb[0] = ((sp0[i] & 0x1F) * 2) / 3; @@ -182,36 +182,36 @@ void sub_1C7F4(s16 arg0, s16 arg1) sp0[i] = rgb[0] | (rgb[1] << 5) | (rgb[2] << 10); } - DmaCopy16(3, sp0, (void *)0x05000200 + gUnknown_086AD798[arg1] * 0x20, 0x20); + DmaCopy16(3, sp0, (void *)0x05000200 + gPortraitPaletteSlots[arg1] * 0x20, 0x20); } else { - DmaCopy16(3, &gUnknown_081C02E4[index], (void *)0x05000200 + gUnknown_086AD798[arg1] * 0x20, 0x20); + DmaCopy16(3, &gPortraitAnimPalettes[index], (void *)0x05000200 + gPortraitPaletteSlots[arg1] * 0x20, 0x20); } break; case 7: // TODO: fake match - ptr2 = ptr = gUnknown_086AD000[gCurrentPinballGame->unk6EC[arg1]]; - gCurrentPinballGame->unk749[arg1] = *(ptr2 += (gCurrentPinballGame->unk708 % 48) / 24); + ptr2 = ptr = gShopItemData[gCurrentPinballGame->modeOutcomeValues[arg1]]; + gCurrentPinballGame->portraitGfxIndex[arg1] = *(ptr2 += (gCurrentPinballGame->portraitCycleFrame % 48) / 24); index = ptr[2] * 16; - DmaCopy16(3, gUnknown_083A8EEC[gCurrentPinballGame->unk749[arg1]], (void *)0x06010CA0 + arg1 * 0x300, 0x300); - DmaCopy16(3, &gUnknown_081C02E4[index], (void *)0x05000200 + gUnknown_086AD798[arg1] * 0x20, 0x20); + DmaCopy16(3, gPortraitAnimFrameGraphics[gCurrentPinballGame->portraitGfxIndex[arg1]], (void *)0x06010CA0 + arg1 * 0x300, 0x300); + DmaCopy16(3, &gPortraitAnimPalettes[index], (void *)0x05000200 + gPortraitPaletteSlots[arg1] * 0x20, 0x20); break; case 8: // TODO: fake match - ptr2 = ptr = gUnknown_086AD000[gCurrentPinballGame->unk6DC]; - gCurrentPinballGame->unk749[arg1] = *(ptr2 += gUnknown_086AD79C[gCurrentPinballGame->unk6DE / 12]); + ptr2 = ptr = gShopItemData[gCurrentPinballGame->rouletteOutcomeId]; + gCurrentPinballGame->portraitGfxIndex[arg1] = *(ptr2 += gRouletteOutcomeFrameOffsets[gCurrentPinballGame->outcomeFrameCounter / 12]); index = ptr[2] * 16; - DmaCopy16(3, gUnknown_083A8EEC[gCurrentPinballGame->unk749[arg1]], (void *)0x06010CA0 + arg1 * 0x300, 0x300); - DmaCopy16(3, &gUnknown_081C02E4[index], (void *)0x05000200 + gUnknown_086AD798[arg1] * 0x20, 0x20); + DmaCopy16(3, gPortraitAnimFrameGraphics[gCurrentPinballGame->portraitGfxIndex[arg1]], (void *)0x06010CA0 + arg1 * 0x300, 0x300); + DmaCopy16(3, &gPortraitAnimPalettes[index], (void *)0x05000200 + gPortraitPaletteSlots[arg1] * 0x20, 0x20); break; } - gCurrentPinballGame->unk747[arg1] = arg0; - gCurrentPinballGame->unk708++; + gCurrentPinballGame->portraitRenderMode[arg1] = arg0; + gCurrentPinballGame->portraitCycleFrame++; } -void sub_1D128(void) +void UpdatePortraitSpritePositions(void) { s16 i; struct SpriteGroup *group; @@ -220,22 +220,22 @@ void sub_1D128(void) s16 var1; s16 var2; - if (gCurrentPinballGame->unk6C4 == 3) + if (gCurrentPinballGame->portraitDisplayState == 3) { baseX = 0; var1 = 180; var2 = 180; } - else if (gCurrentPinballGame->unk6C4 == 2) + else if (gCurrentPinballGame->portraitDisplayState == 2) { - if (gMain.unk2A < 20) + if (gMain.shopPanelSlideOffset < 20) { var1 = 180; var2 = 180; } else { - var1 = 88 + gCurrentPinballGame->unk6E0; + var1 = 88 + gCurrentPinballGame->rouletteSubOffset; var2 = 88; } @@ -243,31 +243,31 @@ void sub_1D128(void) } else { - baseX = 96 - gCurrentPinballGame->unk58; - var1 = gCurrentPinballGame->unk6E0 + 300u - gCurrentPinballGame->unk5A; - var2 = 300 - gCurrentPinballGame->unk5A; + baseX = 96 - gCurrentPinballGame->cameraXOffset; + var1 = gCurrentPinballGame->rouletteSubOffset + 300u - gCurrentPinballGame->cameraYOffset; + var2 = 300 - gCurrentPinballGame->cameraYOffset; } - group = gMain.unk44[22]; + group = gMain.fieldSpriteGroups[22]; group->baseX = baseX; group->baseY = var1; - gCurrentPinballGame->unk6E4.x = baseX; - gCurrentPinballGame->unk6E4.y = group->baseY; + gCurrentPinballGame->rouletteBasePos.x = baseX; + gCurrentPinballGame->rouletteBasePos.y = group->baseY; if (group->baseY >= 200) group->baseY = 200; for (i = 0; i < 6; i++) { oamSimple = &group->oam[i]; - gOamBuffer[oamSimple->oamId].paletteNum = gCurrentPinballGame->unk6D3[i]; - gOamBuffer[oamSimple->oamId].priority = gCurrentPinballGame->unk6DB; + gOamBuffer[oamSimple->oamId].paletteNum = gCurrentPinballGame->hatchTilePalette[i]; + gOamBuffer[oamSimple->oamId].priority = gCurrentPinballGame->creatureOamPriority; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - if (gCurrentPinballGame->unk6C4 == 1) + if (gCurrentPinballGame->portraitDisplayState == 1) { - group = gMain.unk44[23]; + group = gMain.fieldSpriteGroups[23]; group->baseX = baseX; group->baseY = var1 - 0x20; if (group->baseY >= 180) @@ -281,9 +281,9 @@ void sub_1D128(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - group = gMain.unk44[20]; + group = gMain.fieldSpriteGroups[20]; group->baseX = baseX; - group->baseY = 267 - gCurrentPinballGame->unk5A; + group->baseY = 267 - gCurrentPinballGame->cameraYOffset; if (group->baseY >= 200) group->baseY = 200; @@ -294,9 +294,9 @@ void sub_1D128(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - group = gMain.unk44[21]; + group = gMain.fieldSpriteGroups[21]; group->baseX = baseX; - group->baseY = 333 - gCurrentPinballGame->unk5A; + group->baseY = 333 - gCurrentPinballGame->cameraYOffset; if (group->baseY >= 200) group->baseY = 200; @@ -308,7 +308,7 @@ void sub_1D128(void) } } - group = gMain.unk44[19]; + group = gMain.fieldSpriteGroups[19]; group->baseX = baseX - 8; group->baseY = var2 - 8; if (group->baseY >= 200) @@ -317,21 +317,21 @@ void sub_1D128(void) for (i = 0; i < 6; i++) { oamSimple = &group->oam[i]; - gOamBuffer[oamSimple->oamId].priority = gCurrentPinballGame->unk6DB; + gOamBuffer[oamSimple->oamId].priority = gCurrentPinballGame->creatureOamPriority; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } } -void sub_1D4D0(void) +void ClampPortraitSpritesToOffscreen(void) { s16 i; struct SpriteGroup *group; struct OamDataSimple *oamSimple; - if (gCurrentPinballGame->unk6C4 == 1) + if (gCurrentPinballGame->portraitDisplayState == 1) { - group = gMain.unk44[22]; + group = gMain.fieldSpriteGroups[22]; group->baseY = 180; for (i = 0; i < 6; i++) { @@ -339,8 +339,8 @@ void sub_1D4D0(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - group = gMain.unk44[23]; - group->baseY = 300 - gCurrentPinballGame->unk5A; + group = gMain.fieldSpriteGroups[23]; + group->baseY = 300 - gCurrentPinballGame->cameraYOffset; if (group->baseY >= 180) group->baseY = 180; @@ -350,7 +350,7 @@ void sub_1D4D0(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - group = gMain.unk44[20]; + group = gMain.fieldSpriteGroups[20]; group->baseY = 180; for (i = 0; i < 6; i++) { @@ -358,7 +358,7 @@ void sub_1D4D0(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - group = gMain.unk44[21]; + group = gMain.fieldSpriteGroups[21]; group->baseY = 180; for (i = 0; i < 6; i++) { @@ -368,7 +368,7 @@ void sub_1D4D0(void) } } -void sub_1D5D8(void) +void UpdateNuzleafEntity(void) { s16 i; struct SpriteGroup *group; @@ -380,142 +380,142 @@ void sub_1D5D8(void) group = &gMain.spriteGroups[71]; var0 = 0; var1 = 0; - switch (gCurrentPinballGame->unk2FB) + switch (gCurrentPinballGame->nuzleafAnimState) { case 0: var0 = (gMain.systemFrameCount % 36) / 18; var1 = var0; break; case 1: - gCurrentPinballGame->unk2FE = 0; - gCurrentPinballGame->unk2FD = 0; - gCurrentPinballGame->unk2FB = 2; - var1 = gUnknown_086AD7C0[gCurrentPinballGame->unk2FD][0]; - var0 = gUnknown_086AD7C0[gCurrentPinballGame->unk2FD][2]; + gCurrentPinballGame->nuzleafFrameTimer = 0; + gCurrentPinballGame->nuzleafFrameIndex = 0; + gCurrentPinballGame->nuzleafAnimState = 2; + var1 = gNuzleafAnimFrameData[gCurrentPinballGame->nuzleafFrameIndex][0]; + var0 = gNuzleafAnimFrameData[gCurrentPinballGame->nuzleafFrameIndex][2]; m4aSongNumStart(SE_UNKNOWN_0xCF); PlayRumble(7); gCurrentPinballGame->scoreAddedInFrame = 50000; break; case 2: - if (gUnknown_086AD7C0[gCurrentPinballGame->unk2FD][1] > gCurrentPinballGame->unk2FE) + if (gNuzleafAnimFrameData[gCurrentPinballGame->nuzleafFrameIndex][1] > gCurrentPinballGame->nuzleafFrameTimer) { - gCurrentPinballGame->unk2FE++; + gCurrentPinballGame->nuzleafFrameTimer++; } else { - gCurrentPinballGame->unk2FE = 0; - gCurrentPinballGame->unk2FD++; - if (gCurrentPinballGame->unk2FD == 7) + gCurrentPinballGame->nuzleafFrameTimer = 0; + gCurrentPinballGame->nuzleafFrameIndex++; + if (gCurrentPinballGame->nuzleafFrameIndex == 7) { - gCurrentPinballGame->unk2FB = 0; - gCurrentPinballGame->unk2FD = 0; - gCurrentPinballGame->unk2F9 = 1; + gCurrentPinballGame->nuzleafAnimState = 0; + gCurrentPinballGame->nuzleafFrameIndex = 0; + gCurrentPinballGame->nuzleafPositionIndex = 1; } } - var1 = gUnknown_086AD7C0[gCurrentPinballGame->unk2FD][0]; - var0 = gUnknown_086AD7C0[gCurrentPinballGame->unk2FD][2]; + var1 = gNuzleafAnimFrameData[gCurrentPinballGame->nuzleafFrameIndex][0]; + var0 = gNuzleafAnimFrameData[gCurrentPinballGame->nuzleafFrameIndex][2]; break; case 3: - gCurrentPinballGame->unk2FE = 0; - gCurrentPinballGame->unk2FD = 7; - gCurrentPinballGame->unk2FB = 4; - var1 = gUnknown_086AD7C0[gCurrentPinballGame->unk2FD][0]; - var0 = gUnknown_086AD7C0[gCurrentPinballGame->unk2FD][2]; + gCurrentPinballGame->nuzleafFrameTimer = 0; + gCurrentPinballGame->nuzleafFrameIndex = 7; + gCurrentPinballGame->nuzleafAnimState = 4; + var1 = gNuzleafAnimFrameData[gCurrentPinballGame->nuzleafFrameIndex][0]; + var0 = gNuzleafAnimFrameData[gCurrentPinballGame->nuzleafFrameIndex][2]; m4aSongNumStart(SE_UNKNOWN_0xCF); PlayRumble(7); gCurrentPinballGame->scoreAddedInFrame = 100000; break; case 4: - if (gUnknown_086AD7C0[gCurrentPinballGame->unk2FD][1] > gCurrentPinballGame->unk2FE) + if (gNuzleafAnimFrameData[gCurrentPinballGame->nuzleafFrameIndex][1] > gCurrentPinballGame->nuzleafFrameTimer) { - gCurrentPinballGame->unk2FE++; + gCurrentPinballGame->nuzleafFrameTimer++; } else { - gCurrentPinballGame->unk2FE = 0; - gCurrentPinballGame->unk2FD++; - if (gCurrentPinballGame->unk2FD == 18) + gCurrentPinballGame->nuzleafFrameTimer = 0; + gCurrentPinballGame->nuzleafFrameIndex++; + if (gCurrentPinballGame->nuzleafFrameIndex == 18) { - gCurrentPinballGame->unk2FB = 5; + gCurrentPinballGame->nuzleafAnimState = 5; m4aSongNumStart(SE_UNKNOWN_0xD1); } } - if (gCurrentPinballGame->unk2FE == 6) + if (gCurrentPinballGame->nuzleafFrameTimer == 6) m4aSongNumStart(SE_UNKNOWN_0xD0); - var1 = gUnknown_086AD7C0[gCurrentPinballGame->unk2FD][0]; - var0 = gUnknown_086AD7C0[gCurrentPinballGame->unk2FD][2]; + var1 = gNuzleafAnimFrameData[gCurrentPinballGame->nuzleafFrameIndex][0]; + var0 = gNuzleafAnimFrameData[gCurrentPinballGame->nuzleafFrameIndex][2]; break; case 5: case 6: - if (gUnknown_086AD7C0[gCurrentPinballGame->unk2FD][1] > gCurrentPinballGame->unk2FE) + if (gNuzleafAnimFrameData[gCurrentPinballGame->nuzleafFrameIndex][1] > gCurrentPinballGame->nuzleafFrameTimer) { - gCurrentPinballGame->unk2FE++; + gCurrentPinballGame->nuzleafFrameTimer++; } else { - gCurrentPinballGame->unk2FE = 0; - gCurrentPinballGame->unk2FD++; - if (gCurrentPinballGame->unk2FD == 24) - gCurrentPinballGame->unk2FD = 18; + gCurrentPinballGame->nuzleafFrameTimer = 0; + gCurrentPinballGame->nuzleafFrameIndex++; + if (gCurrentPinballGame->nuzleafFrameIndex == 24) + gCurrentPinballGame->nuzleafFrameIndex = 18; } - var1 = gUnknown_086AD7C0[gCurrentPinballGame->unk2FD][0]; - var0 = gUnknown_086AD7C0[gCurrentPinballGame->unk2FD][2]; + var1 = gNuzleafAnimFrameData[gCurrentPinballGame->nuzleafFrameIndex][0]; + var0 = gNuzleafAnimFrameData[gCurrentPinballGame->nuzleafFrameIndex][2]; break; case 7: - gCurrentPinballGame->unk2FA = 0; - gCurrentPinballGame->unk2F9 = 0; - gCurrentPinballGame->unk2FE = 0; - gCurrentPinballGame->unk2FD = 0; - gCurrentPinballGame->unk2FB = 0; - gCurrentPinballGame->unk2FD = 24; - var1 = gUnknown_086AD7C0[gCurrentPinballGame->unk2FD][0]; - var0 = gUnknown_086AD7C0[gCurrentPinballGame->unk2FD][2]; + gCurrentPinballGame->nuzleafHitFlag = 0; + gCurrentPinballGame->nuzleafPositionIndex = 0; + gCurrentPinballGame->nuzleafFrameTimer = 0; + gCurrentPinballGame->nuzleafFrameIndex = 0; + gCurrentPinballGame->nuzleafAnimState = 0; + gCurrentPinballGame->nuzleafFrameIndex = 24; + var1 = gNuzleafAnimFrameData[gCurrentPinballGame->nuzleafFrameIndex][0]; + var0 = gNuzleafAnimFrameData[gCurrentPinballGame->nuzleafFrameIndex][2]; break; } if (group->available) { - group->baseX = gUnknown_086AD856[gCurrentPinballGame->unk2F9][0] - gCurrentPinballGame->unk58; - group->baseY = gUnknown_086AD856[gCurrentPinballGame->unk2F9][1] - gCurrentPinballGame->unk5A; - DmaCopy16(3, gRubyStageNuzleaf_Gfx[gCurrentPinballGame->unk2FC], (void *)0x06014380, 0x260); + group->baseX = gNuzleafPositions[gCurrentPinballGame->nuzleafPositionIndex][0] - gCurrentPinballGame->cameraXOffset; + group->baseY = gNuzleafPositions[gCurrentPinballGame->nuzleafPositionIndex][1] - gCurrentPinballGame->cameraYOffset; + DmaCopy16(3, gRubyStageNuzleaf_Gfx[gCurrentPinballGame->nuzleafGfxTileIndex], (void *)0x06014380, 0x260); for (i = 0; i < 2; i++) { oamSimple = &group->oam[i]; dst = (u16 *)&gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_086B2E64[var1][i * 3 + 0]; - *dst++ = gUnknown_086B2E64[var1][i * 3 + 1]; - *dst++ = gUnknown_086B2E64[var1][i * 3 + 2]; + *dst++ = gNuzleafOamData[var1][i * 3 + 0]; + *dst++ = gNuzleafOamData[var1][i * 3 + 1]; + *dst++ = gNuzleafOamData[var1][i * 3 + 2]; gOamBuffer[oamSimple->oamId].x += group->baseX; gOamBuffer[oamSimple->oamId].y += group->baseY; } } - gCurrentPinballGame->unk2FC = var0; + gCurrentPinballGame->nuzleafGfxTileIndex = var0; } -void sub_1DA74(void) +void SelectShopDoorState(void) { - if (gCurrentPinballGame->unk25 != 3) + if (gCurrentPinballGame->ballCatchState != 3) { - if (gCurrentPinballGame->unk13 < 3) + if (gCurrentPinballGame->boardState < 3) { - if (gCurrentPinballGame->unk1A5 == 0) - gCurrentPinballGame->unk2F0 = gCurrentPinballGame->unk1AB & 0xF; + if (gCurrentPinballGame->evolutionShopActive == 0) + gCurrentPinballGame->shopDoorTargetFrame = gCurrentPinballGame->shopDoorOpenLevel & 0xF; else - gCurrentPinballGame->unk2F0 = 3; + gCurrentPinballGame->shopDoorTargetFrame = 3; } - else if (gCurrentPinballGame->unk13 != 6) + else if (gCurrentPinballGame->boardState != 6) { - gCurrentPinballGame->unk2F0 = 0; + gCurrentPinballGame->shopDoorTargetFrame = 0; } } } -void sub_1DAD8(void) +void AnimateShopDoor(void) { s16 i; struct SpriteGroup *group; @@ -523,50 +523,50 @@ void sub_1DAD8(void) s16 priority; group = &gMain.spriteGroups[65]; - if ((gCurrentPinballGame->unk2F0 & 0xF) != gCurrentPinballGame->unk2F1) + if ((gCurrentPinballGame->shopDoorTargetFrame & 0xF) != gCurrentPinballGame->shopDoorCurrentFrame) { - if (gCurrentPinballGame->unk2F2) + if (gCurrentPinballGame->shopDoorAnimDelay) { - if (gCurrentPinballGame->unk2F2 == 5) + if (gCurrentPinballGame->shopDoorAnimDelay == 5) { gMain.modeChangeFlags |= MODE_CHANGE_BANNER; - gCurrentPinballGame->unkEA = 0; - gCurrentPinballGame->unkEC = 3; - gCurrentPinballGame->unkE8 = 0; - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unkEE = 0; - gCurrentPinballGame->unkF2 = 0; - gCurrentPinballGame->unkFA = 1; - gCurrentPinballGame->unkFB = 0; + gCurrentPinballGame->bannerDelayTimer = 0; + gCurrentPinballGame->bannerDisplayTimer = 3; + gCurrentPinballGame->cameraYScrollTarget = 0; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->cameraYScrollSpeed = 0; + gCurrentPinballGame->bannerGfxIndex = 0; + gCurrentPinballGame->bannerActive = 1; + gCurrentPinballGame->bannerPreserveBallState = 0; m4aSongNumStart(SE_UNKNOWN_0xBD); } - gCurrentPinballGame->unk2F2--; + gCurrentPinballGame->shopDoorAnimDelay--; } else { - if (gCurrentPinballGame->unk2F1 > (gCurrentPinballGame->unk2F0 & 0xF)) + if (gCurrentPinballGame->shopDoorCurrentFrame > (gCurrentPinballGame->shopDoorTargetFrame & 0xF)) { - gCurrentPinballGame->unk2F1--; - gCurrentPinballGame->unk2F2 = 4; + gCurrentPinballGame->shopDoorCurrentFrame--; + gCurrentPinballGame->shopDoorAnimDelay = 4; } else { - gCurrentPinballGame->unk2F1++; - gCurrentPinballGame->unk2F2 = 4; + gCurrentPinballGame->shopDoorCurrentFrame++; + gCurrentPinballGame->shopDoorAnimDelay = 4; } - DmaCopy16(3, gRubyBoardShopDoor_Gfx[gCurrentPinballGame->unk2F1], (void *)0x06013180, 0x180); + DmaCopy16(3, gRubyBoardShopDoor_Gfx[gCurrentPinballGame->shopDoorCurrentFrame], (void *)0x06013180, 0x180); } } - if (gCurrentPinballGame->unk2F1 < 3) + if (gCurrentPinballGame->shopDoorCurrentFrame < 3) priority = 3; else priority = 2; - group->baseX = 208 - gCurrentPinballGame->unk58; - group->baseY = 80 - gCurrentPinballGame->unk5A; + group->baseX = 208 - gCurrentPinballGame->cameraXOffset; + group->baseY = 80 - gCurrentPinballGame->cameraYOffset; for (i = 0; i < 2; i++) { oamSimple = &gMain.spriteGroups[65].oam[i]; @@ -589,12 +589,12 @@ void DrawWhiscash(void) if (group->available) { var0 = var1[0]; - DmaCopy16(3, gUnknown_081379D8 + gCurrentPinballGame->unk6F * 0x60, (void *)0x05000320, 0x20); + DmaCopy16(3, gWhiscashPalettes + gCurrentPinballGame->activePaletteIndex * 0x60, (void *)0x05000320, 0x20); DmaCopy16(3, gWhiscash_Gfx[var0], (void *)0x06014680, 0x460); gCurrentPinballGame->rubyBumperCollisionPosition[0].x = -248; gCurrentPinballGame->rubyBumperCollisionPosition[0].y = -316; - group->baseX = var1[2] + 124u - gCurrentPinballGame->unk58; - group->baseY = var1[3] + 150u - gCurrentPinballGame->unk5A; + group->baseX = var1[2] + 124u - gCurrentPinballGame->cameraXOffset; + group->baseY = var1[3] + 150u - gCurrentPinballGame->cameraYOffset; for (i = 0; i < 4; i++) { oamSimple = &group->oam[i]; @@ -603,9 +603,9 @@ void DrawWhiscash(void) } if (var0 == 4 || var0 == 10) - gCurrentPinballGame->unk2A3 = 0; + gCurrentPinballGame->whiscashInvulnerable = 0; else - gCurrentPinballGame->unk2A3 = 1; + gCurrentPinballGame->whiscashInvulnerable = 1; } } @@ -624,7 +624,7 @@ void RubyPond_EntityLogic(void) if (gCurrentPinballGame->shouldProcessWhiscash) { // If board is currently in one of the modes (catch/etc) force reset to the 3 chinchou - if (gCurrentPinballGame->unk13 > 2) + if (gCurrentPinballGame->boardState > 2) gCurrentPinballGame->rubyPondContentsChanging = TRUE; // Don't immediately force change state if Wishcash is actively doing something @@ -694,7 +694,7 @@ void RubyPond_EntityLogic(void) if (gCurrentPinballGame->whiscashFrameIx == WHISCASH_FRAME_ABSORB_BALL_START) { - gCurrentPinballGame->ball->unkA += 64; + gCurrentPinballGame->ball->spinAngle += 64; gCurrentPinballGame->ball->positionQ8.x = 0x8900; gCurrentPinballGame->ball->positionQ8.y = 0xBD00; gCurrentPinballGame->ball->velocity.x = 0; @@ -703,7 +703,7 @@ void RubyPond_EntityLogic(void) if (gCurrentPinballGame->whiscashFrameIx == WHISCASH_FRAME_ABSORB_BALL_START+1) { - gCurrentPinballGame->ball->unkA += 64; + gCurrentPinballGame->ball->spinAngle += 64; gCurrentPinballGame->ball->positionQ8.x = 0x8C00; gCurrentPinballGame->ball->positionQ8.y = 0xB700; gCurrentPinballGame->ball->velocity.x = 0; @@ -711,10 +711,10 @@ void RubyPond_EntityLogic(void) } if (gCurrentPinballGame->whiscashFrameIx == WHISCASH_FRAME_ABSORB_BALL_START+2) - gCurrentPinballGame->ball->unk0 = 1; + gCurrentPinballGame->ball->ballHidden = 1; break; case WHISCASH_STATE_TO_SPHEAL_BOARD: - gCurrentPinballGame->unk1100 = 1; + gCurrentPinballGame->startButtonDisabled = 1; if (gCurrentPinballGame->whiscashStateTimer == 65) { m4aSongNumStart(SE_WARP); @@ -727,11 +727,11 @@ void RubyPond_EntityLogic(void) gMain.blendBrightness = 16 - gCurrentPinballGame->whiscashStateTimer / 4; if (gCurrentPinballGame->whiscashStateTimer == 0) { - gCurrentPinballGame->unk284 = FIELD_SPHEAL; - gCurrentPinballGame->unk282 = 1; - gCurrentPinballGame->unk73C = gCurrentPinballGame->unk72E; - gCurrentPinballGame->catchModeArrows = gCurrentPinballGame->unk72F; - sub_1C73C(); + gCurrentPinballGame->nextBonusField = FIELD_SPHEAL; + gCurrentPinballGame->bonusReturnState = 1; + gCurrentPinballGame->arrowProgressPreserved = gCurrentPinballGame->evoArrowProgress; + gCurrentPinballGame->catchModeArrows = gCurrentPinballGame->catchArrowProgress; + TransitionToBonusField(); } } break; @@ -758,7 +758,7 @@ void RubyPond_EntityLogic(void) if (gCurrentPinballGame->whiscashFrameIx == WHISCASH_FRAME_SPITBALL + 1) { - gCurrentPinballGame->ball->unkA -= 64; + gCurrentPinballGame->ball->spinAngle -= 64; gCurrentPinballGame->ball->positionQ8.x = 0x8300; gCurrentPinballGame->ball->positionQ8.y = 0xC700; gCurrentPinballGame->ball->velocity.x = -120; @@ -780,8 +780,8 @@ void RubyPond_EntityLogic(void) if (gCurrentPinballGame->whiscashFrameIx == WHISCASH_FRAME_SPITBALL) { - gCurrentPinballGame->ball->unk0 = 0; - gCurrentPinballGame->ball->unkA -= 64; + gCurrentPinballGame->ball->ballHidden = 0; + gCurrentPinballGame->ball->spinAngle -= 64; gCurrentPinballGame->ball->positionQ8.x = 0x8500; gCurrentPinballGame->ball->positionQ8.y = 0xC000; gCurrentPinballGame->ball->velocity.x = 0; @@ -789,7 +789,7 @@ void RubyPond_EntityLogic(void) } if (gCurrentPinballGame->whiscashFrameIx == WHISCASH_FRAME_SPITBALL+2) - gCurrentPinballGame->unk1F = 0; + gCurrentPinballGame->ballFrozenState = 0; break; case WHISCASH_STATE_HIT: gCurrentPinballGame->whiscashFrameIx = WHISCASH_FRAME_HIT; @@ -798,8 +798,8 @@ void RubyPond_EntityLogic(void) gCurrentPinballGame->scoreAddedInFrame = 10; m4aSongNumStart(SE_RUBY_BUMPER_HIT); PlayRumble(7); - if (gCurrentPinballGame->unk724) - gCurrentPinballGame->unk724 = 1; + if (gCurrentPinballGame->modeTimeRemaining) + gCurrentPinballGame->modeTimeRemaining = 1; break; case WHISCASH_STATE_ANGRY: if (gWhiscashFramesetData[gCurrentPinballGame->whiscashFrameIx][1] > gCurrentPinballGame->whiscashStateTimer) @@ -826,7 +826,7 @@ void RubyPond_EntityLogic(void) // Heavy shaking starts if (gCurrentPinballGame->whiscashFrameIx == WHISCASH_FRAME_GONE_AFTER_HIT) { - gCurrentPinballGame->unk2AA = gUnknown_086AD9EC[gCurrentPinballGame->whiscashStateTimer % 8]; + gCurrentPinballGame->screenShakeX = gWhiscashShakeOffsets[gCurrentPinballGame->whiscashStateTimer % 8]; if (gCurrentPinballGame->whiscashStateTimer % 4 == 0) MPlayStart(&gMPlayInfo_SE3, &se_whiscash_splashdown); @@ -859,7 +859,7 @@ void RubyPond_EntityLogic(void) gCurrentPinballGame->whiscashStateTimer = 0; gCurrentPinballGame->rubyPondContentsChanging = TRUE; gCurrentPinballGame->rubyPondChangeTimer = 64; - gCurrentPinballGame->unk2AA = 0; + gCurrentPinballGame->screenShakeX = 0; break; } } @@ -869,16 +869,16 @@ void RubyPond_EntityLogic(void) { if (gCurrentPinballGame->rubyPondChangeTimer < 144) { - gCurrentPinballGame->unk170[0] = gUnknown_08137968[gCurrentPinballGame->rubyPondChangeTimer / 8]; - gCurrentPinballGame->unk170[1] = gCurrentPinballGame->unk170[0]; - gCurrentPinballGame->unk170[2] = gCurrentPinballGame->unk170[0]; + gCurrentPinballGame->pondBumperStates[0] = gPondBumperTransitionFrames[gCurrentPinballGame->rubyPondChangeTimer / 8]; + gCurrentPinballGame->pondBumperStates[1] = gCurrentPinballGame->pondBumperStates[0]; + gCurrentPinballGame->pondBumperStates[2] = gCurrentPinballGame->pondBumperStates[0]; } else { gCurrentPinballGame->rubyPondContentsChanging = FALSE; } - if (gCurrentPinballGame->unk170[0] == 10) + if (gCurrentPinballGame->pondBumperStates[0] == 10) { if (gCurrentPinballGame->rubyPondChangeTimer % 8 == 0 && gCurrentPinballGame->rubyPondChangeTimer / 8 == 8) { @@ -886,7 +886,7 @@ void RubyPond_EntityLogic(void) // of pond states first. gCurrentPinballGame->pondSwitchesSinceLastWhiscash++; if (gCurrentPinballGame->pondSwitchesSinceLastWhiscash < MIN_POND_SWITCHES_BEFORE_WHISCASH_AVAILABLE || - gCurrentPinballGame->unk13 > 2) + gCurrentPinballGame->boardState > 2) { frameDecidedNextPondState = (gMain.systemFrameCount % 5) + 1; if (gCurrentPinballGame->rubyPondState == frameDecidedNextPondState) @@ -921,8 +921,8 @@ void RubyPond_EntityLogic(void) if (gCurrentPinballGame->rubyPondState == RUBY_POND_STATE_CHINCHOU_SINGLE_CLOCKWISE) { - gCurrentPinballGame->rubyBumperLogicPosition[0].x = gUnknown_086AD9DC[0].x * 10; - gCurrentPinballGame->rubyBumperLogicPosition[0].y = gUnknown_086AD9DC[0].y * 10; + gCurrentPinballGame->rubyBumperLogicPosition[0].x = gChinchouWaypointPositions[0].x * 10; + gCurrentPinballGame->rubyBumperLogicPosition[0].y = gChinchouWaypointPositions[0].y * 10; } } } @@ -973,33 +973,33 @@ void RubyPond_EntityLogic(void) case RUBY_POND_STATE_CHINCHOU_CLOCKWISE: for (i = 0; i < 3; i++) { - angle = (gCurrentPinballGame->unk290 & 0x7F) * 0x200 + i * 0x5555; - var1 = (gCurrentPinballGame->unk290 % 60) - 30; + angle = (gCurrentPinballGame->globalAnimFrameCounter & 0x7F) * 0x200 + i * 0x5555; + var1 = (gCurrentPinballGame->globalAnimFrameCounter % 60) - 30; if (var1 < 0) var1 = -var1; - gCurrentPinballGame->unk190 = 180; - gCurrentPinballGame->rubyBumperLogicPosition[i].x = (gCurrentPinballGame->unk190 * Cos(angle)) / 20000 + 1380; - gCurrentPinballGame->rubyBumperLogicPosition[i].y = (gCurrentPinballGame->unk190 * Sin(angle)) / 20000 + 1500; + gCurrentPinballGame->bumperOrbitRadius = 180; + gCurrentPinballGame->rubyBumperLogicPosition[i].x = (gCurrentPinballGame->bumperOrbitRadius * Cos(angle)) / 20000 + 1380; + gCurrentPinballGame->rubyBumperLogicPosition[i].y = (gCurrentPinballGame->bumperOrbitRadius * Sin(angle)) / 20000 + 1500; } break; case RUBY_POND_STATE_CHINCHOU_COUNTERCLOCKWISE: for (i = 0; i < 3; i++) { - angle = 10000 - ((gCurrentPinballGame->unk290 & 0x7F) * 0x200 + i * 0x5555); - var1 = (gCurrentPinballGame->unk290 % 60) - 30; + angle = 10000 - ((gCurrentPinballGame->globalAnimFrameCounter & 0x7F) * 0x200 + i * 0x5555); + var1 = (gCurrentPinballGame->globalAnimFrameCounter % 60) - 30; if (var1 < 0) var1 = -var1; - gCurrentPinballGame->unk190 = 180; - gCurrentPinballGame->rubyBumperLogicPosition[i].x = (gCurrentPinballGame->unk190 * Cos(angle)) / 20000 + 1380; - gCurrentPinballGame->rubyBumperLogicPosition[i].y = (gCurrentPinballGame->unk190 * Sin(angle)) / 20000 + 1500; + gCurrentPinballGame->bumperOrbitRadius = 180; + gCurrentPinballGame->rubyBumperLogicPosition[i].x = (gCurrentPinballGame->bumperOrbitRadius * Cos(angle)) / 20000 + 1380; + gCurrentPinballGame->rubyBumperLogicPosition[i].y = (gCurrentPinballGame->bumperOrbitRadius * Sin(angle)) / 20000 + 1500; } break; case RUBY_POND_STATE_CHINCHOU_ROWS: for (i = 0; i < 2; i++) { - var1 = 23 - (gCurrentPinballGame->unk290 % 46); + var1 = 23 - (gCurrentPinballGame->globalAnimFrameCounter % 46); if (var1 < 0) var1 = -var1; @@ -1007,7 +1007,7 @@ void RubyPond_EntityLogic(void) gCurrentPinballGame->rubyBumperLogicPosition[i + 1].y = var1 * 5 + 1340; } - var1 = 23 - (gCurrentPinballGame->unk290 + 23) % 46; + var1 = 23 - (gCurrentPinballGame->globalAnimFrameCounter + 23) % 46; if (var1 < 0) var1 = 0-var1; @@ -1016,15 +1016,15 @@ void RubyPond_EntityLogic(void) break; case RUBY_POND_STATE_LOTAD: gCurrentPinballGame->rubyBumperLogicPosition[0].x = 1210; - gCurrentPinballGame->rubyBumperLogicPosition[0].y = gUnknown_0813798C[(gCurrentPinballGame->unk290 % 60) / 10] + 1300; + gCurrentPinballGame->rubyBumperLogicPosition[0].y = gLotadBobOffsets[(gCurrentPinballGame->globalAnimFrameCounter % 60) / 10] + 1300; gCurrentPinballGame->rubyBumperLogicPosition[1].x = 1600; - gCurrentPinballGame->rubyBumperLogicPosition[1].y = gUnknown_0813798C[((gCurrentPinballGame->unk290 + 20) % 60) / 10] + 1410; + gCurrentPinballGame->rubyBumperLogicPosition[1].y = gLotadBobOffsets[((gCurrentPinballGame->globalAnimFrameCounter + 20) % 60) / 10] + 1410; gCurrentPinballGame->rubyBumperLogicPosition[2].x = 1370; - gCurrentPinballGame->rubyBumperLogicPosition[2].y = gUnknown_0813798C[((gCurrentPinballGame->unk290 + 40) % 60) / 10] + 1660; + gCurrentPinballGame->rubyBumperLogicPosition[2].y = gLotadBobOffsets[((gCurrentPinballGame->globalAnimFrameCounter + 40) % 60) / 10] + 1660; break; case RUBY_POND_STATE_CHINCHOU_SINGLE_CLOCKWISE: - tempVec.x = gUnknown_086AD9DC[gCurrentPinballGame->unk16E].x * 10 - gCurrentPinballGame->rubyBumperLogicPosition[0].x; - tempVec.y = gUnknown_086AD9DC[gCurrentPinballGame->unk16E].y * 10 - gCurrentPinballGame->rubyBumperLogicPosition[0].y; + tempVec.x = gChinchouWaypointPositions[gCurrentPinballGame->chinchouWaypointTarget].x * 10 - gCurrentPinballGame->rubyBumperLogicPosition[0].x; + tempVec.y = gChinchouWaypointPositions[gCurrentPinballGame->chinchouWaypointTarget].y * 10 - gCurrentPinballGame->rubyBumperLogicPosition[0].y; squaredMagnitude = (tempVec.x * tempVec.x) + (tempVec.y * tempVec.y); angle2 = ArcTan2(tempVec.x, -tempVec.y); tempVec2.x = (Cos(angle2) * 7) / 20000; @@ -1032,7 +1032,7 @@ void RubyPond_EntityLogic(void) gCurrentPinballGame->rubyBumperLogicPosition[0].x += tempVec2.x; gCurrentPinballGame->rubyBumperLogicPosition[0].y += tempVec2.y; if (squaredMagnitude < 2500) - gCurrentPinballGame->unk16E = Random() % 4; + gCurrentPinballGame->chinchouWaypointTarget = Random() % 4; // moved off screen gCurrentPinballGame->rubyBumperLogicPosition[1].x = 0; @@ -1068,7 +1068,7 @@ void RubyPondTriBumperHandleHitAndDraw(void) gCurrentPinballGame->scoreAddedInFrame = 500; m4aSongNumStart(SE_RUBY_BUMPER_HIT); PlayRumble(7); - if (gCurrentPinballGame->unk13 == 4 && gCurrentPinballGame->unk17 == 5 && gCurrentPinballGame->hatchTilesBumperAcknowledged < 6) + if (gCurrentPinballGame->boardState == 4 && gCurrentPinballGame->boardSubState == 5 && gCurrentPinballGame->hatchTilesBumperAcknowledged < 6) { if (gCurrentPinballGame->hatchTilesBumperAcknowledged == 0) gCurrentPinballGame->hatchTilesBumperAcknowledged = 1; @@ -1084,38 +1084,38 @@ void RubyPondTriBumperHandleHitAndDraw(void) if (gCurrentPinballGame->rubyPondState == RUBY_POND_STATE_LOTAD) { gMain.modeChangeFlags |= MODE_CHANGE_BANNER; - gCurrentPinballGame->unkEA = 50; - gCurrentPinballGame->unkEC = 600; - gCurrentPinballGame->unkE8 = 236; - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unkEE = 4; - gCurrentPinballGame->unkF2 = 6; - gCurrentPinballGame->unkFA = 1; - gCurrentPinballGame->unkFB = 0; - gCurrentPinballGame->unkF4 = 80; - gCurrentPinballGame->unkF6 = -2500; - gCurrentPinballGame->unkF0 = 50; - gCurrentPinballGame->unkF8 = 0; - DmaCopy16(3, gUnknown_086ACEF8[6], (void *)0x06015800, 0x2400); - DmaCopy16(3, gUnknown_086ACF18[6], (void *)0x050003C0, 0x20); + gCurrentPinballGame->bannerDelayTimer = 50; + gCurrentPinballGame->bannerDisplayTimer = 600; + gCurrentPinballGame->cameraYScrollTarget = 236; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->cameraYScrollSpeed = 4; + gCurrentPinballGame->bannerGfxIndex = 6; + gCurrentPinballGame->bannerActive = 1; + gCurrentPinballGame->bannerPreserveBallState = 0; + gCurrentPinballGame->bannerDisplayDuration = 80; + gCurrentPinballGame->bannerSlidePosition = -2500; + gCurrentPinballGame->bannerSlideTimer = 50; + gCurrentPinballGame->bannerSlideVelocity = 0; + DmaCopy16(3, gModeBannerTilemaps[6], (void *)0x06015800, 0x2400); + DmaCopy16(3, gModeBannerPalettes[6], (void *)0x050003C0, 0x20); } else { gMain.modeChangeFlags |= MODE_CHANGE_BANNER; - gCurrentPinballGame->unkEA = 50; - gCurrentPinballGame->unkEC = 600; - gCurrentPinballGame->unkE8 = 236; - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unkEE = 4; - gCurrentPinballGame->unkF2 = 1; - gCurrentPinballGame->unkFA = 1; - gCurrentPinballGame->unkFB = 0; - gCurrentPinballGame->unkF4 = 80; - gCurrentPinballGame->unkF6 = -2500; - gCurrentPinballGame->unkF0 = 50; - gCurrentPinballGame->unkF8 = 0; - DmaCopy16(3, gUnknown_086ACEF8[1], (void *)0x06015800, 0x2400); - DmaCopy16(3, gUnknown_086ACF18[1], (void *)0x050003C0, 0x20); + gCurrentPinballGame->bannerDelayTimer = 50; + gCurrentPinballGame->bannerDisplayTimer = 600; + gCurrentPinballGame->cameraYScrollTarget = 236; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->cameraYScrollSpeed = 4; + gCurrentPinballGame->bannerGfxIndex = 1; + gCurrentPinballGame->bannerActive = 1; + gCurrentPinballGame->bannerPreserveBallState = 0; + gCurrentPinballGame->bannerDisplayDuration = 80; + gCurrentPinballGame->bannerSlidePosition = -2500; + gCurrentPinballGame->bannerSlideTimer = 50; + gCurrentPinballGame->bannerSlideVelocity = 0; + DmaCopy16(3, gModeBannerTilemaps[1], (void *)0x06015800, 0x2400); + DmaCopy16(3, gModeBannerPalettes[1], (void *)0x050003C0, 0x20); } gMain.blendControl = 0xCE; @@ -1123,7 +1123,7 @@ void RubyPondTriBumperHandleHitAndDraw(void) } } - gCurrentPinballGame->unk176++; + gCurrentPinballGame->pondEntitySpriteFlag++; gCurrentPinballGame->bumperHitsSinceReset++; } @@ -1135,65 +1135,65 @@ void RubyPondTriBumperHandleHitAndDraw(void) { for (i = 0; i < 3; i++) { - if (gCurrentPinballGame->unk170[i]) + if (gCurrentPinballGame->pondBumperStates[i]) { - if (gCurrentPinballGame->unk170[i] > 100) + if (gCurrentPinballGame->pondBumperStates[i] > 100) { - gCurrentPinballGame->unk170[i]--; - if (gCurrentPinballGame->unk170[i] == 100) - gCurrentPinballGame->unk170[i] = 0; + gCurrentPinballGame->pondBumperStates[i]--; + if (gCurrentPinballGame->pondBumperStates[i] == 100) + gCurrentPinballGame->pondBumperStates[i] = 0; var0 = 8; } else { - var0 = gCurrentPinballGame->unk170[i]; + var0 = gCurrentPinballGame->pondBumperStates[i]; } } else { - var0 = (gCurrentPinballGame->unk290 % 50) / 25; + var0 = (gCurrentPinballGame->globalAnimFrameCounter % 50) / 25; } - DmaCopy16(3, gUnknown_0844928C[var0], (void *)0x06012E80 + i * 0x100, 0x100); + DmaCopy16(3, gLotadBumperTiles[var0], (void *)0x06012E80 + i * 0x100, 0x100); } - DmaCopy16(3, gUnknown_081379B8 + gCurrentPinballGame->unk6F * 0x60, (void *)0x05000320, 0x20); + DmaCopy16(3, gLotadBumperPalettes + gCurrentPinballGame->activePaletteIndex * 0x60, (void *)0x05000320, 0x20); } else // chinchou { for (i = 0; i < 3; i++) { - if (gCurrentPinballGame->unk170[i]) + if (gCurrentPinballGame->pondBumperStates[i]) { - if (gCurrentPinballGame->unk170[i] > 100) + if (gCurrentPinballGame->pondBumperStates[i] > 100) { - var0 = 9 - gCurrentPinballGame->unk170[i] / 105; - gCurrentPinballGame->unk170[i]--; - if (gCurrentPinballGame->unk170[i] == 100) - gCurrentPinballGame->unk170[i] = 0; + var0 = 9 - gCurrentPinballGame->pondBumperStates[i] / 105; + gCurrentPinballGame->pondBumperStates[i]--; + if (gCurrentPinballGame->pondBumperStates[i] == 100) + gCurrentPinballGame->pondBumperStates[i] = 0; } else { - var0 = gCurrentPinballGame->unk170[i]; + var0 = gCurrentPinballGame->pondBumperStates[i]; } } else { - var0 = (gCurrentPinballGame->unk290 % 50) / 25; + var0 = (gCurrentPinballGame->globalAnimFrameCounter % 50) / 25; } - DmaCopy16(3, gUnknown_083C806C[var0], (void *)0x06012E80 + i * 0x100, 0x100); + DmaCopy16(3, gRubyFlashingTiles_Secondary[var0], (void *)0x06012E80 + i * 0x100, 0x100); } - DmaCopy16(3, gUnknown_08137998 + gCurrentPinballGame->unk6F * 0x60, (void *)0x05000320, 0x20); + DmaCopy16(3, gChinchouBumperPalettes + gCurrentPinballGame->activePaletteIndex * 0x60, (void *)0x05000320, 0x20); } // Draw Bumpers: Lotad/chinchou for (i = 0; i < 3; i++) { - group->baseX = gCurrentPinballGame->rubyBumperLogicPosition[i].x / 10 - gCurrentPinballGame->unk58 - 8; - group->baseY = gCurrentPinballGame->rubyBumperLogicPosition[i].y / 10 - gCurrentPinballGame->unk5A - 4; + group->baseX = gCurrentPinballGame->rubyBumperLogicPosition[i].x / 10 - gCurrentPinballGame->cameraXOffset - 8; + group->baseY = gCurrentPinballGame->rubyBumperLogicPosition[i].y / 10 - gCurrentPinballGame->cameraYOffset - 4; gCurrentPinballGame->rubyBumperCollisionPosition[i].x = (-(gCurrentPinballGame->rubyBumperLogicPosition[i].x / 10) + 8) * 2; gCurrentPinballGame->rubyBumperCollisionPosition[i].y = (-(gCurrentPinballGame->rubyBumperLogicPosition[i].y / 10) + 7) * 2; if (group->baseY < -40) @@ -1209,7 +1209,7 @@ void RubyPondTriBumperHandleHitAndDraw(void) } } -void sub_1F158(void) +void AnimateSharpedoEntity(void) { s16 i; struct SpriteGroup *group; @@ -1221,14 +1221,14 @@ void sub_1F158(void) index = (gMain.systemFrameCount % 55) / 11; group = &gMain.spriteGroups[61]; - DmaCopy16(3, gRubyBoardSharpedo_Gfx[gCurrentPinballGame->unk2F5], (void *)0x06012C20, 0x260); - if (gCurrentPinballGame->unk2F4) - index = gCurrentPinballGame->unk2F4; + DmaCopy16(3, gRubyBoardSharpedo_Gfx[gCurrentPinballGame->catchHoleTileVariant], (void *)0x06012C20, 0x260); + if (gCurrentPinballGame->catchHoleAnimFrame) + index = gCurrentPinballGame->catchHoleAnimFrame; - var0 = gUnknown_086AD9FC[index][0]; - gCurrentPinballGame->unk2F5 = gUnknown_086AD9FC[index][1]; - group->baseX = 179 - gCurrentPinballGame->unk58; - group->baseY = 174 - gCurrentPinballGame->unk5A; + var0 = gSharpedoAnimFrameData[index][0]; + gCurrentPinballGame->catchHoleTileVariant = gSharpedoAnimFrameData[index][1]; + group->baseX = 179 - gCurrentPinballGame->cameraXOffset; + group->baseY = 174 - gCurrentPinballGame->cameraYOffset; for (i = 0; i < 3; i++) { oamSimple = &group->oam[i]; @@ -1243,36 +1243,36 @@ void sub_1F158(void) } } -void sub_1F2A4(void) +void UpdatePikachuChargeCounter(void) { - if (gCurrentPinballGame->unk1C6 != gCurrentPinballGame->unk1C8) + if (gCurrentPinballGame->pikaChargeTarget != gCurrentPinballGame->pikaChargeProgress) { - gCurrentPinballGame->unk1C8 += 2; - gCurrentPinballGame->unk1CA = gCurrentPinballGame->unk1C8 / 14; - gCurrentPinballGame->unk1D0 = 80; - gCurrentPinballGame->unk1D8 = 256; - gCurrentPinballGame->unk1DA = 256; - if (gCurrentPinballGame->unk1CA == 11) - gCurrentPinballGame->unk1CE = 120; + gCurrentPinballGame->pikaChargeProgress += 2; + gCurrentPinballGame->catchCounterValue = gCurrentPinballGame->pikaChargeProgress / 14; + gCurrentPinballGame->catchCounterSlideTimer = 80; + gCurrentPinballGame->catchCounterAnimState = 256; + gCurrentPinballGame->catchCounterScaleY = 256; + if (gCurrentPinballGame->catchCounterValue == 11) + gCurrentPinballGame->pikachuAnimTimer = 120; - if (gCurrentPinballGame->unk1CA > 11) + if (gCurrentPinballGame->catchCounterValue > 11) { - gCurrentPinballGame->unk1CA = 12; - gCurrentPinballGame->unk1D0 = 120; - gCurrentPinballGame->unk1D8 = 256; - gCurrentPinballGame->unk1DA = 256; + gCurrentPinballGame->catchCounterValue = 12; + gCurrentPinballGame->catchCounterSlideTimer = 120; + gCurrentPinballGame->catchCounterAnimState = 256; + gCurrentPinballGame->catchCounterScaleY = 256; } - if (gCurrentPinballGame->unk1C8 < 168 && gCurrentPinballGame->unk1C8 % 8 == 0) + if (gCurrentPinballGame->pikaChargeProgress < 168 && gCurrentPinballGame->pikaChargeProgress % 8 == 0) { - s8 offset = gCurrentPinballGame->unk1C8 / 21; + s8 offset = gCurrentPinballGame->pikaChargeProgress / 21; m4aSongNumStart(SE_PIKA_CHARGE_DO + offset); } - if (gCurrentPinballGame->unk1C6 <= gCurrentPinballGame->unk1C8) + if (gCurrentPinballGame->pikaChargeTarget <= gCurrentPinballGame->pikaChargeProgress) { - gCurrentPinballGame->unk1C8 = gCurrentPinballGame->unk1C6; - if (gCurrentPinballGame->unk1C8 >= 168) + gCurrentPinballGame->pikaChargeProgress = gCurrentPinballGame->pikaChargeTarget; + if (gCurrentPinballGame->pikaChargeProgress >= 168) { MPlayStart(&gMPlayInfo_SE1, &se_unk_7a); gCurrentPinballGame->scoreAddedInFrame = 3000; @@ -1280,99 +1280,99 @@ void sub_1F2A4(void) } } - if (gCurrentPinballGame->unk616) - gCurrentPinballGame->unk616--; + if (gCurrentPinballGame->pikaSpinCooldownTimer) + gCurrentPinballGame->pikaSpinCooldownTimer--; - if (gCurrentPinballGame->unk614 > 0) + if (gCurrentPinballGame->pikaSpinMomentum > 0) { - gCurrentPinballGame->unk614 -= 3; - if (gCurrentPinballGame->unk614 < 0) - gCurrentPinballGame->unk614 = 0; + gCurrentPinballGame->pikaSpinMomentum -= 3; + if (gCurrentPinballGame->pikaSpinMomentum < 0) + gCurrentPinballGame->pikaSpinMomentum = 0; - if (gCurrentPinballGame->unk618 < gCurrentPinballGame->unk61A - 1) + if (gCurrentPinballGame->pikaSpinFrameCounter < gCurrentPinballGame->pikaSpinPeriod - 1) { - gCurrentPinballGame->unk618++; + gCurrentPinballGame->pikaSpinFrameCounter++; } else { - gCurrentPinballGame->unk618 = 0; + gCurrentPinballGame->pikaSpinFrameCounter = 0; MPlayStart(&gMPlayInfo_SE3, &se_unk_79); gCurrentPinballGame->scoreAddedInFrame = 100; - if (gCurrentPinballGame->unk1CA < 12 && gCurrentPinballGame->unk61C == 0) + if (gCurrentPinballGame->catchCounterValue < 12 && gCurrentPinballGame->entityOverlayCollisionState == 0) { - gCurrentPinballGame->unk1D0 = 80; - gCurrentPinballGame->unk1D8 = 256; - gCurrentPinballGame->unk1DA = 256; + gCurrentPinballGame->catchCounterSlideTimer = 80; + gCurrentPinballGame->catchCounterAnimState = 256; + gCurrentPinballGame->catchCounterScaleY = 256; } } - gCurrentPinballGame->unk61A = (450 - gCurrentPinballGame->unk614) / 10; - if (gCurrentPinballGame->unk61A < 5) - gCurrentPinballGame->unk61A = 5; + gCurrentPinballGame->pikaSpinPeriod = (450 - gCurrentPinballGame->pikaSpinMomentum) / 10; + if (gCurrentPinballGame->pikaSpinPeriod < 5) + gCurrentPinballGame->pikaSpinPeriod = 5; - gCurrentPinballGame->unk1E5 = (gCurrentPinballGame->unk618 * 16) / gCurrentPinballGame->unk61A; + gCurrentPinballGame->pikachuSpinFrame = (gCurrentPinballGame->pikaSpinFrameCounter * 16) / gCurrentPinballGame->pikaSpinPeriod; } else { - if (gCurrentPinballGame->unk614 < 0) + if (gCurrentPinballGame->pikaSpinMomentum < 0) { - gCurrentPinballGame->unk614 += 3; - if (gCurrentPinballGame->unk614 > 0) - gCurrentPinballGame->unk614 = 0; + gCurrentPinballGame->pikaSpinMomentum += 3; + if (gCurrentPinballGame->pikaSpinMomentum > 0) + gCurrentPinballGame->pikaSpinMomentum = 0; - if (gCurrentPinballGame->unk618 < gCurrentPinballGame->unk61A - 1) + if (gCurrentPinballGame->pikaSpinFrameCounter < gCurrentPinballGame->pikaSpinPeriod - 1) { - gCurrentPinballGame->unk618++; + gCurrentPinballGame->pikaSpinFrameCounter++; } else { - gCurrentPinballGame->unk618 = 0; + gCurrentPinballGame->pikaSpinFrameCounter = 0; MPlayStart(&gMPlayInfo_SE3, &se_unk_79); gCurrentPinballGame->scoreAddedInFrame = 100; - if (gCurrentPinballGame->unk1CA < 12 && gCurrentPinballGame->unk61C == 0) + if (gCurrentPinballGame->catchCounterValue < 12 && gCurrentPinballGame->entityOverlayCollisionState == 0) { - gCurrentPinballGame->unk1D0 = 80; - gCurrentPinballGame->unk1D8 = 256; - gCurrentPinballGame->unk1DA = 256; + gCurrentPinballGame->catchCounterSlideTimer = 80; + gCurrentPinballGame->catchCounterAnimState = 256; + gCurrentPinballGame->catchCounterScaleY = 256; } } - gCurrentPinballGame->unk61A = (450 + gCurrentPinballGame->unk614) / 10; - if (gCurrentPinballGame->unk61A < 5) - gCurrentPinballGame->unk61A = 5; + gCurrentPinballGame->pikaSpinPeriod = (450 + gCurrentPinballGame->pikaSpinMomentum) / 10; + if (gCurrentPinballGame->pikaSpinPeriod < 5) + gCurrentPinballGame->pikaSpinPeriod = 5; - gCurrentPinballGame->unk1E5 = (gCurrentPinballGame->unk618 * 16) / gCurrentPinballGame->unk61A; + gCurrentPinballGame->pikachuSpinFrame = (gCurrentPinballGame->pikaSpinFrameCounter * 16) / gCurrentPinballGame->pikaSpinPeriod; } else { - if (gCurrentPinballGame->unk1E5 > 0) + if (gCurrentPinballGame->pikachuSpinFrame > 0) { - gCurrentPinballGame->unk618++; - gCurrentPinballGame->unk618 %= 40; - gCurrentPinballGame->unk1E5 = (gCurrentPinballGame->unk618 * 16) / 40; + gCurrentPinballGame->pikaSpinFrameCounter++; + gCurrentPinballGame->pikaSpinFrameCounter %= 40; + gCurrentPinballGame->pikachuSpinFrame = (gCurrentPinballGame->pikaSpinFrameCounter * 16) / 40; } } } } -void sub_1F59C(void) +void DrawPikachuSpinner(void) { s16 i; struct SpriteGroup *group; struct OamDataSimple *oamSimple; s16 index; - index = gCurrentPinballGame->unk1E5; - group = gMain.unk44[31]; - group->baseX = 206 - gCurrentPinballGame->unk58; + index = gCurrentPinballGame->pikachuSpinFrame; + group = gMain.fieldSpriteGroups[31]; + group->baseX = 206 - gCurrentPinballGame->cameraXOffset; if (gMain.selectedField == FIELD_RUBY) - group->baseY = 174 - gCurrentPinballGame->unk5A; + group->baseY = 174 - gCurrentPinballGame->cameraYOffset; else - group->baseY = 154 - gCurrentPinballGame->unk5A; + group->baseY = 154 - gCurrentPinballGame->cameraYOffset; - if (gCurrentPinballGame->unk1E5 != gCurrentPinballGame->unk1E6) + if (gCurrentPinballGame->pikachuSpinFrame != gCurrentPinballGame->pikachuSpinPrevFrame) { - gCurrentPinballGame->unk1E6 = gCurrentPinballGame->unk1E5; + gCurrentPinballGame->pikachuSpinPrevFrame = gCurrentPinballGame->pikachuSpinFrame; DmaCopy16(3, gMainBoardPikaSpinner_Gfx[index], (void *)0x06010780, 0x120); } @@ -1384,7 +1384,7 @@ void sub_1F59C(void) } } -void sub_1F698(void) +void UpdateChikoritaAttackAnimation(void) { s16 i; struct SpriteGroup *group; @@ -1394,39 +1394,39 @@ void sub_1F698(void) index = 0; group = &gMain.spriteGroups[14]; - if (gCurrentPinballGame->unk2BC < 60) + if (gCurrentPinballGame->chikoritaProjectileTimer < 60) { - if (gCurrentPinballGame->unk2BC >= 27 && gCurrentPinballGame->unk2BC < 47) + if (gCurrentPinballGame->chikoritaProjectileTimer >= 27 && gCurrentPinballGame->chikoritaProjectileTimer < 47) { - index = (gCurrentPinballGame->unk2BC - 27) / 5; - DmaCopy16(3, gUnknown_083C562C[index], (void *)0x06014280, 0x100); - group->baseX = 176 - gCurrentPinballGame->unk58; + index = (gCurrentPinballGame->chikoritaProjectileTimer - 27) / 5; + DmaCopy16(3, gChikoritaExplosionTiles[index], (void *)0x06014280, 0x100); + group->baseX = 176 - gCurrentPinballGame->cameraXOffset; } else { group->available = 0; - group->baseX = 176 - gCurrentPinballGame->unk58; + group->baseX = 176 - gCurrentPinballGame->cameraXOffset; } } else { - if (gCurrentPinballGame->unk2BC >= 100 && gCurrentPinballGame->unk2BC < 120) + if (gCurrentPinballGame->chikoritaProjectileTimer >= 100 && gCurrentPinballGame->chikoritaProjectileTimer < 120) { - index = (gCurrentPinballGame->unk2BC - 100) / 5; - DmaCopy16(3, gUnknown_083C562C[index], (void *)0x06014280, 0x100); - group->baseX = 32 - gCurrentPinballGame->unk58; + index = (gCurrentPinballGame->chikoritaProjectileTimer - 100) / 5; + DmaCopy16(3, gChikoritaExplosionTiles[index], (void *)0x06014280, 0x100); + group->baseX = 32 - gCurrentPinballGame->cameraXOffset; } else { group->available = 0; - group->baseX = 32 - gCurrentPinballGame->unk58; + group->baseX = 32 - gCurrentPinballGame->cameraXOffset; } } if (group->available) { - group->baseY = 296 - gCurrentPinballGame->unk5A; + group->baseY = 296 - gCurrentPinballGame->cameraYOffset; if (group->baseY > 180) group->baseY = 180; @@ -1441,64 +1441,64 @@ void sub_1F698(void) group = &gMain.spriteGroups[13]; if (group->available) { - if (gCurrentPinballGame->unk2BC < 120) + if (gCurrentPinballGame->chikoritaProjectileTimer < 120) { - if (gCurrentPinballGame->unk2BC % 8 == 0) + if (gCurrentPinballGame->chikoritaProjectileTimer % 8 == 0) m4aSongNumStart(SE_UNKNOWN_0xC6); - index = (gCurrentPinballGame->unk2BC % 16) / 4; - DmaCopy16(3, gUnknown_083C542C[index], (void *)0x06014200, 0x80); - var0 = (gCurrentPinballGame->unk2BC << 0x10) / 90; - gCurrentPinballGame->unk2B8 -= 2; - gCurrentPinballGame->unk2B4 += gCurrentPinballGame->unk2B8; - if (gCurrentPinballGame->unk2BC < 30) - gCurrentPinballGame->unk2B6 = gCurrentPinballGame->unk2BC + (Sin(var0) * 24) / 20000; + index = (gCurrentPinballGame->chikoritaProjectileTimer % 16) / 4; + DmaCopy16(3, gChikoritaProjectileTiles[index], (void *)0x06014200, 0x80); + var0 = (gCurrentPinballGame->chikoritaProjectileTimer << 0x10) / 90; + gCurrentPinballGame->chikoritaProjectileVelX -= 2; + gCurrentPinballGame->chikoritaProjectileX += gCurrentPinballGame->chikoritaProjectileVelX; + if (gCurrentPinballGame->chikoritaProjectileTimer < 30) + gCurrentPinballGame->chikoritaProjectileY = gCurrentPinballGame->chikoritaProjectileTimer + (Sin(var0) * 24) / 20000; else - gCurrentPinballGame->unk2B6 = 30 + (Sin(var0) * 24) / 20000; + gCurrentPinballGame->chikoritaProjectileY = 30 + (Sin(var0) * 24) / 20000; - gCurrentPinballGame->unk2BC++; - if (gCurrentPinballGame->unk2BC == 27) + gCurrentPinballGame->chikoritaProjectileTimer++; + if (gCurrentPinballGame->chikoritaProjectileTimer == 27) { gMain.spriteGroups[14].available = 1; m4aSongNumStart(SE_UNKNOWN_0xC7); - if (gCurrentPinballGame->unk2E3[1] > 0) + if (gCurrentPinballGame->sideBumperBounceCount[1] > 0) { - gCurrentPinballGame->unk2E3[1]++; + gCurrentPinballGame->sideBumperBounceCount[1]++; } else { - gCurrentPinballGame->unk2E3[1] = 2; - gCurrentPinballGame->unk2E8[1] = 190; + gCurrentPinballGame->sideBumperBounceCount[1] = 2; + gCurrentPinballGame->sideBumperAnimTimer[1] = 190; } } - if (gCurrentPinballGame->unk2BC == 100) + if (gCurrentPinballGame->chikoritaProjectileTimer == 100) { gMain.spriteGroups[14].available = 1; m4aSongNumStart(SE_UNKNOWN_0xC7); - if (gCurrentPinballGame->unk2E3[0] > 0) + if (gCurrentPinballGame->sideBumperBounceCount[0] > 0) { - gCurrentPinballGame->unk2E3[0]++; + gCurrentPinballGame->sideBumperBounceCount[0]++; } else { - gCurrentPinballGame->unk2E3[0] = 2; - gCurrentPinballGame->unk2E8[0] = 190; + gCurrentPinballGame->sideBumperBounceCount[0] = 2; + gCurrentPinballGame->sideBumperAnimTimer[0] = 190; } } } else { - gCurrentPinballGame->unk2BC = 0; - gCurrentPinballGame->unk2B4 = 0; - gCurrentPinballGame->unk2B6 = 190; - gCurrentPinballGame->unk2B8 = 100; - gCurrentPinballGame->unk2BA = 0; + gCurrentPinballGame->chikoritaProjectileTimer = 0; + gCurrentPinballGame->chikoritaProjectileX = 0; + gCurrentPinballGame->chikoritaProjectileY = 190; + gCurrentPinballGame->chikoritaProjectileVelX = 100; + gCurrentPinballGame->chikoritaProjectileUnused = 0; group->available = 0; } - group->baseX = (gCurrentPinballGame->unk2B4 / 20) + 71u - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk2B6 + 248u - gCurrentPinballGame->unk5A; + group->baseX = (gCurrentPinballGame->chikoritaProjectileX / 20) + 71u - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->chikoritaProjectileY + 248u - gCurrentPinballGame->cameraYOffset; if (group->baseY > 190) group->baseY = 190; @@ -1508,7 +1508,7 @@ void sub_1F698(void) } } -void sub_1FA48(void) +void AnimateChikoritaSprite(void) { s16 i; struct SpriteGroup *group; @@ -1516,37 +1516,37 @@ void sub_1FA48(void) s16 index; group = &gMain.spriteGroups[53]; - if (gCurrentPinballGame->unk2B2) + if (gCurrentPinballGame->chikoritaFlashActive) { - index = gUnknown_086ADA58[gCurrentPinballGame->unk2B0 / 5]; - if (gCurrentPinballGame->unk2B0 == 40) + index = gChikoritaFlashFrameIndices[gCurrentPinballGame->chikoritaFlashTimer / 5]; + if (gCurrentPinballGame->chikoritaFlashTimer == 40) { - gCurrentPinballGame->unk2BC = 0; - gCurrentPinballGame->unk2B4 = 0; - gCurrentPinballGame->unk2B6 = 0; - gCurrentPinballGame->unk2B8 = 100; - gCurrentPinballGame->unk2BA = 0; + gCurrentPinballGame->chikoritaProjectileTimer = 0; + gCurrentPinballGame->chikoritaProjectileX = 0; + gCurrentPinballGame->chikoritaProjectileY = 0; + gCurrentPinballGame->chikoritaProjectileVelX = 100; + gCurrentPinballGame->chikoritaProjectileUnused = 0; gMain.spriteGroups[13].available = 1; } - if (gCurrentPinballGame->unk2B0 < 54) - gCurrentPinballGame->unk2B0++; + if (gCurrentPinballGame->chikoritaFlashTimer < 54) + gCurrentPinballGame->chikoritaFlashTimer++; else - gCurrentPinballGame->unk2B2 = 0; + gCurrentPinballGame->chikoritaFlashActive = 0; - DmaCopy16(3, gUnknown_083C3C2C[index], (void *)0x06012720, 0x300); + DmaCopy16(3, gRubyFlashingDecorationTiles[index], (void *)0x06012720, 0x300); } else { index = (gMain.systemFrameCount % 50) / 25; - if (gCurrentPinballGame->unk1BC == 1) + if (gCurrentPinballGame->randomSpriteVariantSeed == 1) { - DmaCopy16(3, gUnknown_083C3C2C[index], (void *)0x06012720, 0x300); + DmaCopy16(3, gRubyFlashingDecorationTiles[index], (void *)0x06012720, 0x300); } } - group->baseX = 55 - gCurrentPinballGame->unk58; - group->baseY = 221 - gCurrentPinballGame->unk5A; + group->baseX = 55 - gCurrentPinballGame->cameraXOffset; + group->baseY = 221 - gCurrentPinballGame->cameraYOffset; i = 0; for (i = 0; i < 2; i++) { @@ -1556,7 +1556,7 @@ void sub_1FA48(void) } } -void sub_1FBC4(void) +void UpdateGulpinBossState(void) { s16 i; struct SpriteGroup *group; @@ -1565,112 +1565,112 @@ void sub_1FBC4(void) const s16 *var0; s16 index; - var0 = gUnknown_086ADA6E[gCurrentPinballGame->unk2C2]; + var0 = gGulpinAnimData[gCurrentPinballGame->gulpinAnimFrameIndex]; group = &gMain.spriteGroups[57]; - group->baseX = 9 - gCurrentPinballGame->unk58; - group->baseY = 288 - gCurrentPinballGame->unk5A; - if (gCurrentPinballGame->unk2BE > gCurrentPinballGame->unk6BD) + group->baseX = 9 - gCurrentPinballGame->cameraXOffset; + group->baseY = 288 - gCurrentPinballGame->cameraYOffset; + if (gCurrentPinballGame->gulpinCurrentLevel > gCurrentPinballGame->seedotCount) { - if (gCurrentPinballGame->unk6BE) + if (gCurrentPinballGame->seedotExitSequenceActive) { - if (gCurrentPinballGame->unk6C0 == 0) + if (gCurrentPinballGame->seedotExitSequenceTimer == 0) { - gCurrentPinballGame->unk2C2 = 59; - gCurrentPinballGame->unk2C0 = 0; - gCurrentPinballGame->unk6C0++; + gCurrentPinballGame->gulpinAnimFrameIndex = 59; + gCurrentPinballGame->gulpinAnimFrameTimer = 0; + gCurrentPinballGame->seedotExitSequenceTimer++; } - if (var0[1] > gCurrentPinballGame->unk2C0) + if (var0[1] > gCurrentPinballGame->gulpinAnimFrameTimer) { - gCurrentPinballGame->unk2C0++; + gCurrentPinballGame->gulpinAnimFrameTimer++; } else { - gCurrentPinballGame->unk2C0 = 1; - gCurrentPinballGame->unk2C2++; - if (gCurrentPinballGame->unk2C2 == 84) + gCurrentPinballGame->gulpinAnimFrameTimer = 1; + gCurrentPinballGame->gulpinAnimFrameIndex++; + if (gCurrentPinballGame->gulpinAnimFrameIndex == 84) { - gCurrentPinballGame->unk2C2 = 0; - gCurrentPinballGame->unk6BE = 0; - gCurrentPinballGame->unk6C0 = 0; - gCurrentPinballGame->unk2BE = 0; + gCurrentPinballGame->gulpinAnimFrameIndex = 0; + gCurrentPinballGame->seedotExitSequenceActive = 0; + gCurrentPinballGame->seedotExitSequenceTimer = 0; + gCurrentPinballGame->gulpinCurrentLevel = 0; } - if (gCurrentPinballGame->unk2C2 == 60 || gCurrentPinballGame->unk2C2 == 69 || gCurrentPinballGame->unk2C2 == 78) + if (gCurrentPinballGame->gulpinAnimFrameIndex == 60 || gCurrentPinballGame->gulpinAnimFrameIndex == 69 || gCurrentPinballGame->gulpinAnimFrameIndex == 78) m4aSongNumStart(SE_UNKNOWN_0xD2); } } } - else if (gCurrentPinballGame->unk2BE < gCurrentPinballGame->unk6BD) + else if (gCurrentPinballGame->gulpinCurrentLevel < gCurrentPinballGame->seedotCount) { - if (var0[1] <= gCurrentPinballGame->unk2C0) + if (var0[1] <= gCurrentPinballGame->gulpinAnimFrameTimer) { - gCurrentPinballGame->unk2C0 = 1; - gCurrentPinballGame->unk2C2++; - if (gCurrentPinballGame->unk6BD == 1) + gCurrentPinballGame->gulpinAnimFrameTimer = 1; + gCurrentPinballGame->gulpinAnimFrameIndex++; + if (gCurrentPinballGame->seedotCount == 1) { - if (gCurrentPinballGame->unk2C2 == 9) + if (gCurrentPinballGame->gulpinAnimFrameIndex == 9) { - gCurrentPinballGame->unk2BE = 1; - gCurrentPinballGame->unk2C2 = 84; + gCurrentPinballGame->gulpinCurrentLevel = 1; + gCurrentPinballGame->gulpinAnimFrameIndex = 84; } - if (gCurrentPinballGame->unk2C2 == 6) + if (gCurrentPinballGame->gulpinAnimFrameIndex == 6) m4aSongNumStart(SE_UNKNOWN_0xD2); } - else if (gCurrentPinballGame->unk6BD == 2) + else if (gCurrentPinballGame->seedotCount == 2) { - if (gCurrentPinballGame->unk2C2 == 23) + if (gCurrentPinballGame->gulpinAnimFrameIndex == 23) { - gCurrentPinballGame->unk2BE = 2; - gCurrentPinballGame->unk2C2 = 95; + gCurrentPinballGame->gulpinCurrentLevel = 2; + gCurrentPinballGame->gulpinAnimFrameIndex = 95; } - if (gCurrentPinballGame->unk2C2 == 20) + if (gCurrentPinballGame->gulpinAnimFrameIndex == 20) m4aSongNumStart(SE_UNKNOWN_0xD2); } - else if (gCurrentPinballGame->unk6BD == 3) + else if (gCurrentPinballGame->seedotCount == 3) { - if (gCurrentPinballGame->unk2C2 == 35) + if (gCurrentPinballGame->gulpinAnimFrameIndex == 35) { - gCurrentPinballGame->unk2BE = 3; - gCurrentPinballGame->unk2C2 = 35; - sub_19B64(7); + gCurrentPinballGame->gulpinCurrentLevel = 3; + gCurrentPinballGame->gulpinAnimFrameIndex = 35; + RequestBoardStateTransition(7); } - if (gCurrentPinballGame->unk2C2 == 32) + if (gCurrentPinballGame->gulpinAnimFrameIndex == 32) m4aSongNumStart(SE_UNKNOWN_0xD2); } } else { - gCurrentPinballGame->unk2C0++; + gCurrentPinballGame->gulpinAnimFrameTimer++; } } - else if (gCurrentPinballGame->unk6BD) + else if (gCurrentPinballGame->seedotCount) { - if (var0[1] > gCurrentPinballGame->unk2C0) + if (var0[1] > gCurrentPinballGame->gulpinAnimFrameTimer) { - gCurrentPinballGame->unk2C0++; + gCurrentPinballGame->gulpinAnimFrameTimer++; } else { - gCurrentPinballGame->unk2C0 = 1; - gCurrentPinballGame->unk2C2++; - if (gCurrentPinballGame->unk6BD == 1) + gCurrentPinballGame->gulpinAnimFrameTimer = 1; + gCurrentPinballGame->gulpinAnimFrameIndex++; + if (gCurrentPinballGame->seedotCount == 1) { - if (gCurrentPinballGame->unk2C2 == 95) - gCurrentPinballGame->unk2C2 = 84; + if (gCurrentPinballGame->gulpinAnimFrameIndex == 95) + gCurrentPinballGame->gulpinAnimFrameIndex = 84; } - else if (gCurrentPinballGame->unk6BD == 2) + else if (gCurrentPinballGame->seedotCount == 2) { - if (gCurrentPinballGame->unk2C2 == 109) - gCurrentPinballGame->unk2C2 = 95; + if (gCurrentPinballGame->gulpinAnimFrameIndex == 109) + gCurrentPinballGame->gulpinAnimFrameIndex = 95; } - else if (gCurrentPinballGame->unk6BD == 3) + else if (gCurrentPinballGame->seedotCount == 3) { - if (gCurrentPinballGame->unk2C2 == 60) - gCurrentPinballGame->unk2C2 = 35; + if (gCurrentPinballGame->gulpinAnimFrameIndex == 60) + gCurrentPinballGame->gulpinAnimFrameIndex = 35; } } } @@ -1683,91 +1683,91 @@ void sub_1FBC4(void) { oamSimple = &group->oam[i]; dst = (u16 *)&gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_086B2FC0[index][i * 3 + 0]; - *dst++ = gUnknown_086B2FC0[index][i * 3 + 1]; - *dst++ = gUnknown_086B2FC0[index][i * 3 + 2]; + *dst++ = gGulpinOamData[index][i * 3 + 0]; + *dst++ = gGulpinOamData[index][i * 3 + 1]; + *dst++ = gGulpinOamData[index][i * 3 + 2]; gOamBuffer[oamSimple->oamId].x += group->baseX; gOamBuffer[oamSimple->oamId].y += group->baseY; } } -void sub_1FF0C(void) +void UpdateSideBumperAnimation(void) { s16 i; for (i = 0; i < 2; i++) { - if (gCurrentPinballGame->unk2E3[i] > 0) + if (gCurrentPinballGame->sideBumperBounceCount[i] > 0) { - if (gUnknown_086ADEB2[gCurrentPinballGame->unk2E5[i]][0] > gCurrentPinballGame->unk2E8[i]) + if (gSideBumperAnimDurations[gCurrentPinballGame->sideBumperAnimPhase[i]][0] > gCurrentPinballGame->sideBumperAnimTimer[i]) { - gCurrentPinballGame->unk2E8[i]++; + gCurrentPinballGame->sideBumperAnimTimer[i]++; } else { - gCurrentPinballGame->unk2E8[i] = 0; - gCurrentPinballGame->unk2E5[i]++; - if (gCurrentPinballGame->unk2E5[i] > 11) + gCurrentPinballGame->sideBumperAnimTimer[i] = 0; + gCurrentPinballGame->sideBumperAnimPhase[i]++; + if (gCurrentPinballGame->sideBumperAnimPhase[i] > 11) { - gCurrentPinballGame->unk2E5[i] = 0; - gCurrentPinballGame->unk2E3[i]--; + gCurrentPinballGame->sideBumperAnimPhase[i] = 0; + gCurrentPinballGame->sideBumperBounceCount[i]--; } } - if (gCurrentPinballGame->unk2E5[i] == 1) - gCurrentPinballGame->unk2EC[i] = gCurrentPinballGame->unk2E8[i] / 2; + if (gCurrentPinballGame->sideBumperAnimPhase[i] == 1) + gCurrentPinballGame->sideBumperShakeOffset[i] = gCurrentPinballGame->sideBumperAnimTimer[i] / 2; - if (gCurrentPinballGame->unk2E5[i] == 11) - gCurrentPinballGame->unk2EC[i] = 14 - gCurrentPinballGame->unk2E8[i] / 2; + if (gCurrentPinballGame->sideBumperAnimPhase[i] == 11) + gCurrentPinballGame->sideBumperShakeOffset[i] = 14 - gCurrentPinballGame->sideBumperAnimTimer[i] / 2; - if (gCurrentPinballGame->unk2EC[i] < 3) - gCurrentPinballGame->unk2EC[i] = 3; + if (gCurrentPinballGame->sideBumperShakeOffset[i] < 3) + gCurrentPinballGame->sideBumperShakeOffset[i] = 3; } } - if (gCurrentPinballGame->unk2E2) + if (gCurrentPinballGame->sideBumperHitFlag) { - if (gCurrentPinballGame->unk2E2 == 1) + if (gCurrentPinballGame->sideBumperHitFlag == 1) { - if (gCurrentPinballGame->unk13 != 7) + if (gCurrentPinballGame->boardState != 7) { - if (gCurrentPinballGame->unk13 < 3) { - if (gCurrentPinballGame->unk6BD < 3) + if (gCurrentPinballGame->boardState < 3) { + if (gCurrentPinballGame->seedotCount < 3) { - gCurrentPinballGame->unk6BD++; - if (gCurrentPinballGame->unk6BD == 1) + gCurrentPinballGame->seedotCount++; + if (gCurrentPinballGame->seedotCount == 1) { - gCurrentPinballGame->unk2C2 = 0; - gCurrentPinballGame->unk2C0 = 0; + gCurrentPinballGame->gulpinAnimFrameIndex = 0; + gCurrentPinballGame->gulpinAnimFrameTimer = 0; } - else if (gCurrentPinballGame->unk6BD == 2) + else if (gCurrentPinballGame->seedotCount == 2) { - gCurrentPinballGame->unk2C2 = 12; - gCurrentPinballGame->unk2C0 = 0; + gCurrentPinballGame->gulpinAnimFrameIndex = 12; + gCurrentPinballGame->gulpinAnimFrameTimer = 0; } - else if (gCurrentPinballGame->unk6BD == 3) + else if (gCurrentPinballGame->seedotCount == 3) { - gCurrentPinballGame->unk2C2 = 24; - gCurrentPinballGame->unk2C0 = 0; - gCurrentPinballGame->unk6C2 = 1; + gCurrentPinballGame->gulpinAnimFrameIndex = 24; + gCurrentPinballGame->gulpinAnimFrameTimer = 0; + gCurrentPinballGame->seedotModeStartDelay = 1; } } } else { - if (gCurrentPinballGame->unk6BD < 2) + if (gCurrentPinballGame->seedotCount < 2) { - gCurrentPinballGame->unk6BD++; - if (gCurrentPinballGame->unk6BD == 1) + gCurrentPinballGame->seedotCount++; + if (gCurrentPinballGame->seedotCount == 1) { - gCurrentPinballGame->unk2C2 = 0; - gCurrentPinballGame->unk2C0 = 0; + gCurrentPinballGame->gulpinAnimFrameIndex = 0; + gCurrentPinballGame->gulpinAnimFrameTimer = 0; } - else if (gCurrentPinballGame->unk6BD == 2) + else if (gCurrentPinballGame->seedotCount == 2) { - gCurrentPinballGame->unk2C2 = 12; - gCurrentPinballGame->unk2C0 = 0; + gCurrentPinballGame->gulpinAnimFrameIndex = 12; + gCurrentPinballGame->gulpinAnimFrameTimer = 0; } } } @@ -1775,28 +1775,28 @@ void sub_1FF0C(void) } else { - if (gCurrentPinballGame->unk300 == 0) - gCurrentPinballGame->unk300 = 1; + if (gCurrentPinballGame->rampGateState == 0) + gCurrentPinballGame->rampGateState = 1; else - gCurrentPinballGame->unk300 = 0; + gCurrentPinballGame->rampGateState = 0; } - gCurrentPinballGame->unk2E3[0] = 0; - gCurrentPinballGame->unk2E3[1] = 0; - gCurrentPinballGame->unk2E2 = 0; + gCurrentPinballGame->sideBumperBounceCount[0] = 0; + gCurrentPinballGame->sideBumperBounceCount[1] = 0; + gCurrentPinballGame->sideBumperHitFlag = 0; PlayRumble(7); m4aSongNumStart(SE_UNKNOWN_0xB7); gCurrentPinballGame->scoreAddedInFrame = 3000; - gCurrentPinballGame->unk2E5[0] = 0; - gCurrentPinballGame->unk2E5[1] = 0; - gCurrentPinballGame->unk2E8[0] = 0; - gCurrentPinballGame->unk2E8[1] = 0; - gCurrentPinballGame->unk2EC[0] = 3; - gCurrentPinballGame->unk2EC[1] = 3; + gCurrentPinballGame->sideBumperAnimPhase[0] = 0; + gCurrentPinballGame->sideBumperAnimPhase[1] = 0; + gCurrentPinballGame->sideBumperAnimTimer[0] = 0; + gCurrentPinballGame->sideBumperAnimTimer[1] = 0; + gCurrentPinballGame->sideBumperShakeOffset[0] = 3; + gCurrentPinballGame->sideBumperShakeOffset[1] = 3; } } -void sub_201B8(void) +void DrawSideBumperSprites(void) { s16 i, j; struct SpriteGroup *group; @@ -1805,14 +1805,14 @@ void sub_201B8(void) for (i = 0; i < 2; i++) { - index = gUnknown_086ADEB0[gCurrentPinballGame->unk2E5[i]][0]; - DmaCopy16(3, gUnknown_0847FD0C[index], (void *)0x06012A20 + i * 0x100, 0x100); + index = gSideBumperGfxFrameIndices[gCurrentPinballGame->sideBumperAnimPhase[i]][0]; + DmaCopy16(3, gSideBumperGfx[index], (void *)0x06012A20 + i * 0x100, 0x100); group = &gMain.spriteGroups[59 + i]; if (group->available) { - int var0 = i * 120 - (gCurrentPinballGame->unk58 - 48); - group->baseX = var0 + ((1 - (i * 2)) * (gCurrentPinballGame->unk2EC[i] - 14)); - group->baseY = 301 - gCurrentPinballGame->unk5A; + int var0 = i * 120 - (gCurrentPinballGame->cameraXOffset - 48); + group->baseX = var0 + ((1 - (i * 2)) * (gCurrentPinballGame->sideBumperShakeOffset[i] - 14)); + group->baseY = 301 - gCurrentPinballGame->cameraYOffset; for (j = 0; j < 3; j++) { oamSimple = &group->oam[j]; @@ -1822,40 +1822,40 @@ void sub_201B8(void) } } - if (gCurrentPinballGame->unk6C2) + if (gCurrentPinballGame->seedotModeStartDelay) { - gCurrentPinballGame->unk6C2--; - if (gCurrentPinballGame->unk6C2 == 0) + gCurrentPinballGame->seedotModeStartDelay--; + if (gCurrentPinballGame->seedotModeStartDelay == 0) { - if (gCurrentPinballGame->unkE4) - gCurrentPinballGame->unk6C2 = 1; + if (gCurrentPinballGame->activePortraitType) + gCurrentPinballGame->seedotModeStartDelay = 1; else - gCurrentPinballGame->unkE4 = 4; + gCurrentPinballGame->activePortraitType = 4; - if (gCurrentPinballGame->unk6C2 == 0) + if (gCurrentPinballGame->seedotModeStartDelay == 0) { gMain.modeChangeFlags |= MODE_CHANGE_BANNER; - gCurrentPinballGame->unkEA = 70; - gCurrentPinballGame->unkEC = 160; - gCurrentPinballGame->unkE8 = 0; - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unkEE = 0; - gCurrentPinballGame->unkF2 = 4; - gCurrentPinballGame->unkFA = 1; - gCurrentPinballGame->unkFB = 0; - gCurrentPinballGame->unkF4 = 120; - gCurrentPinballGame->unkF6 = 0; - gCurrentPinballGame->unkF0 = 50; - gCurrentPinballGame->unkF8 = 0; - DmaCopy16(3, gUnknown_086ACEF8[4], (void *)0x06015800, 0x2400); - DmaCopy16(3, gUnknown_086ACF18[4], (void *)0x050003C0, 0x20); + gCurrentPinballGame->bannerDelayTimer = 70; + gCurrentPinballGame->bannerDisplayTimer = 160; + gCurrentPinballGame->cameraYScrollTarget = 0; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->cameraYScrollSpeed = 0; + gCurrentPinballGame->bannerGfxIndex = 4; + gCurrentPinballGame->bannerActive = 1; + gCurrentPinballGame->bannerPreserveBallState = 0; + gCurrentPinballGame->bannerDisplayDuration = 120; + gCurrentPinballGame->bannerSlidePosition = 0; + gCurrentPinballGame->bannerSlideTimer = 50; + gCurrentPinballGame->bannerSlideVelocity = 0; + DmaCopy16(3, gModeBannerTilemaps[4], (void *)0x06015800, 0x2400); + DmaCopy16(3, gModeBannerPalettes[4], (void *)0x050003C0, 0x20); gMain.blendControl = 0xCE; } } } } -void sub_203CC(void) +void UpdateCatchModeLogic(void) { s16 i; s16 j; @@ -1866,124 +1866,124 @@ void sub_203CC(void) u16 *dst; const u16 *src; - sub_20EC0(); + AnimateCreatureApproach(); - if (gCurrentPinballGame->unk1C6 > 167) + if (gCurrentPinballGame->pikaChargeTarget > 167) { - gCurrentPinballGame->unk744[0] = gUnknown_086ADF48[(gMain.fieldFrameCount % 160) / 5]; + gCurrentPinballGame->pikaSaverTileIndex[0] = gPikaSaverAnimFrameTable[(gMain.fieldFrameCount % 160) / 5]; if (gCurrentPinballGame->outLanePikaPosition == 2) - gCurrentPinballGame->unk744[1] = gCurrentPinballGame->unk744[0] + 6; + gCurrentPinballGame->pikaSaverTileIndex[1] = gCurrentPinballGame->pikaSaverTileIndex[0] + 6; else - gCurrentPinballGame->unk744[1] = gCurrentPinballGame->unk744[0]; + gCurrentPinballGame->pikaSaverTileIndex[1] = gCurrentPinballGame->pikaSaverTileIndex[0]; } else { - gCurrentPinballGame->unk744[0] = (gMain.fieldFrameCount % 50) / 25; + gCurrentPinballGame->pikaSaverTileIndex[0] = (gMain.fieldFrameCount % 50) / 25; if (gCurrentPinballGame->outLanePikaPosition == 2) - gCurrentPinballGame->unk744[1] = gCurrentPinballGame->unk744[0] + 9; + gCurrentPinballGame->pikaSaverTileIndex[1] = gCurrentPinballGame->pikaSaverTileIndex[0] + 9; else - gCurrentPinballGame->unk744[1] = gCurrentPinballGame->unk744[0]; + gCurrentPinballGame->pikaSaverTileIndex[1] = gCurrentPinballGame->pikaSaverTileIndex[0]; } if (gCurrentPinballGame->outLanePikaPosition == 2) { - gCurrentPinballGame->unk1E3[0] = 1; - gCurrentPinballGame->unk1E3[1] = 1; + gCurrentPinballGame->catchHoleOccupied[0] = 1; + gCurrentPinballGame->catchHoleOccupied[1] = 1; } else { - gCurrentPinballGame->unk1E3[0 + gCurrentPinballGame->outLanePikaPosition] = 1; - gCurrentPinballGame->unk1E3[1 - gCurrentPinballGame->outLanePikaPosition] = 0; + gCurrentPinballGame->catchHoleOccupied[0 + gCurrentPinballGame->outLanePikaPosition] = 1; + gCurrentPinballGame->catchHoleOccupied[1 - gCurrentPinballGame->outLanePikaPosition] = 0; } - if (gCurrentPinballGame->unk1C4 != 0) + if (gCurrentPinballGame->pikaKickbackTimer != 0) { - if (gCurrentPinballGame->unk1C4 == 120) + if (gCurrentPinballGame->pikaKickbackTimer == 120) { - // gCurrentPinballGame->unk1C2 + gCurrentPinballGame->unk1E2 + // gCurrentPinballGame->outLaneSide + gCurrentPinballGame->outLanePikaPosition // Note: this can be && chained off of the previous if, once we have this line deciphered. - if (gCurrentPinballGame->unk1E3[gCurrentPinballGame->unk1C2 - 1] != 0) + if (gCurrentPinballGame->catchHoleOccupied[gCurrentPinballGame->outLaneSide - 1] != 0) { - if (gCurrentPinballGame->unk1C6 > 167) + if (gCurrentPinballGame->pikaChargeTarget > 167) { - gCurrentPinballGame->unk1F = 1; - gCurrentPinballGame->unk61C = 1; - gCurrentPinballGame->unk1DE = 120; - gCurrentPinballGame->unk1E0 = 120; - gCurrentPinballGame->unk61E = gCurrentPinballGame->unk1DE; - gCurrentPinballGame->unk5F7 = 1; - gCurrentPinballGame->unk208 = 0; - gCurrentPinballGame->unk20A = 0; + gCurrentPinballGame->ballFrozenState = 1; + gCurrentPinballGame->entityOverlayCollisionState = 1; + gCurrentPinballGame->catchAnimProgress = 120; + gCurrentPinballGame->catchAnimDuration = 120; + gCurrentPinballGame->catchOverlayTimer = gCurrentPinballGame->catchAnimProgress; + gCurrentPinballGame->ballUpgradeTimerFrozen = 1; + gCurrentPinballGame->catchOverlayFrameTimer = 0; + gCurrentPinballGame->catchOverlayKeyframeIndex = 0; if (gCurrentPinballGame->outLanePikaPosition != 2) { - gCurrentPinballGame->unk1C6 = 0; - gCurrentPinballGame->unk1C8 = 0; - gCurrentPinballGame->unk1CC = 0; - gCurrentPinballGame->unk1CA = 0; - gCurrentPinballGame->unk1D4 = 0; - gCurrentPinballGame->unk1D6 = -4; - gCurrentPinballGame->unk1D8 = 256; - gCurrentPinballGame->unk1DA = 256; - gCurrentPinballGame->unk1CE = 0; - gCurrentPinballGame->unk1D0 = 0; + gCurrentPinballGame->pikaChargeTarget = 0; + gCurrentPinballGame->pikaChargeProgress = 0; + gCurrentPinballGame->prevCatchCounterValue = 0; + gCurrentPinballGame->catchCounterValue = 0; + gCurrentPinballGame->catchCounterXShift = 0; + gCurrentPinballGame->catchCounterSlideOffsetY = -4; + gCurrentPinballGame->catchCounterAnimState = 256; + gCurrentPinballGame->catchCounterScaleY = 256; + gCurrentPinballGame->pikachuAnimTimer = 0; + gCurrentPinballGame->catchCounterSlideTimer = 0; } - gCurrentPinballGame->unk620 = gCurrentPinballGame->ball->positionQ1; + gCurrentPinballGame->catchBallStartPos = gCurrentPinballGame->ball->positionQ1; gCurrentPinballGame->scoreAddedInFrame = 30000; - if (gCurrentPinballGame->unk62E <= 98) - gCurrentPinballGame->unk62E++; + if (gCurrentPinballGame->bonusPikaSaverCount <= 98) + gCurrentPinballGame->bonusPikaSaverCount++; } else { - gCurrentPinballGame->unk1C4 = 60; + gCurrentPinballGame->pikaKickbackTimer = 60; MPlayStart(&gMPlayInfo_SE1, &se_unk_142); } - i = gCurrentPinballGame->unk1C2 - 1; + i = gCurrentPinballGame->outLaneSide - 1; if (gCurrentPinballGame->outLanePikaPosition == 2) - gCurrentPinballGame->unk744[i] = (i) * 7 + 2; + gCurrentPinballGame->pikaSaverTileIndex[i] = (i) * 7 + 2; else - gCurrentPinballGame->unk744[i] = 2; + gCurrentPinballGame->pikaSaverTileIndex[i] = 2; - DmaCopy16(3, gUnknown_084C07EC + (gCurrentPinballGame->unk744[i] * 0x180), 0x06010480 + ((i) * 0x180), 0x180); + DmaCopy16(3, gPikaSaverTilesGfx + (gCurrentPinballGame->pikaSaverTileIndex[i] * 0x180), 0x06010480 + ((i) * 0x180), 0x180); } } if (gCurrentPinballGame->outLanePikaPosition == 2) - gCurrentPinballGame->unk744[gCurrentPinballGame->unk1C2 - 1] = (gCurrentPinballGame->unk1C2 - 1) * 7 + 2; + gCurrentPinballGame->pikaSaverTileIndex[gCurrentPinballGame->outLaneSide - 1] = (gCurrentPinballGame->outLaneSide - 1) * 7 + 2; else - gCurrentPinballGame->unk744[gCurrentPinballGame->unk1C2 - 1] = 2; + gCurrentPinballGame->pikaSaverTileIndex[gCurrentPinballGame->outLaneSide - 1] = 2; - gCurrentPinballGame->unk1C4--; + gCurrentPinballGame->pikaKickbackTimer--; } - if (gCurrentPinballGame->unk61C != 0) + if (gCurrentPinballGame->entityOverlayCollisionState != 0) { - if (gCurrentPinballGame->unk61E > 1) + if (gCurrentPinballGame->catchOverlayTimer > 1) { - r5 = (gCurrentPinballGame->unk1DE * 0x10000) / 10; - gCurrentPinballGame->unk61E--; - if (gCurrentPinballGame->unk1DE != 0) + r5 = (gCurrentPinballGame->catchAnimProgress * 0x10000) / 10; + gCurrentPinballGame->catchOverlayTimer--; + if (gCurrentPinballGame->catchAnimProgress != 0) { - gCurrentPinballGame->unk1DE--; - if (gCurrentPinballGame->unk1DE == 40 && gCurrentPinballGame->unk61E > 40) + gCurrentPinballGame->catchAnimProgress--; + if (gCurrentPinballGame->catchAnimProgress == 40 && gCurrentPinballGame->catchOverlayTimer > 40) { - gCurrentPinballGame->unk1DE = 60; + gCurrentPinballGame->catchAnimProgress = 60; } } - if (gCurrentPinballGame->unk61E == 116) + if (gCurrentPinballGame->catchOverlayTimer == 116) { - if (gCurrentPinballGame->unkE4) - gCurrentPinballGame->unk61E = 120; + if (gCurrentPinballGame->activePortraitType) + gCurrentPinballGame->catchOverlayTimer = 120; else { - gCurrentPinballGame->unkE4 = 1; + gCurrentPinballGame->activePortraitType = 1; if (gCurrentPinballGame->outLanePikaPosition == 2) { - if (gCurrentPinballGame->unk1C2 == 1) + if (gCurrentPinballGame->outLaneSide == 1) MPlayStart(&gMPlayInfo_SE1, &se_unk_b1); else MPlayStart(&gMPlayInfo_SE1, &se_unk_b3); @@ -1996,22 +1996,22 @@ void sub_203CC(void) } } } - if (gCurrentPinballGame->unk61E == 115 && gCurrentPinballGame->unkE4 == 1) + if (gCurrentPinballGame->catchOverlayTimer == 115 && gCurrentPinballGame->activePortraitType == 1) m4aMPlayVolumeControl(&gMPlayInfo_SE1, 0xFFFF, 0x200); gCurrentPinballGame->ball->positionQ1.x = - gCurrentPinballGame->unk620.x + ((Sin(r5) * 6) / 20000) + - ((gUnknown_086ADF8A[gCurrentPinballGame->unk1C2 - 1] * 2 - gCurrentPinballGame->unk620.x) * (gCurrentPinballGame->unk1E0 - gCurrentPinballGame->unk1DE)) / gCurrentPinballGame->unk1E0; + gCurrentPinballGame->catchBallStartPos.x + ((Sin(r5) * 6) / 20000) + + ((gCatchHoleXPositions[gCurrentPinballGame->outLaneSide - 1] * 2 - gCurrentPinballGame->catchBallStartPos.x) * (gCurrentPinballGame->catchAnimDuration - gCurrentPinballGame->catchAnimProgress)) / gCurrentPinballGame->catchAnimDuration; - tempY = ((gCurrentPinballGame->unk1E0 - gCurrentPinballGame->unk1DE) * 40) / gCurrentPinballGame->unk1E0; - gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->unk620.y - tempY; + tempY = ((gCurrentPinballGame->catchAnimDuration - gCurrentPinballGame->catchAnimProgress) * 40) / gCurrentPinballGame->catchAnimDuration; + gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->catchBallStartPos.y - tempY; gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ1.x * 128; gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ1.y * 128; } - else if (gCurrentPinballGame->unk61E == 1) + else if (gCurrentPinballGame->catchOverlayTimer == 1) { - gCurrentPinballGame->ball->positionQ1.x = gUnknown_086ADF8A[gCurrentPinballGame->unk1C2 - 1] * 2; + gCurrentPinballGame->ball->positionQ1.x = gCatchHoleXPositions[gCurrentPinballGame->outLaneSide - 1] * 2; gCurrentPinballGame->ball->positionQ1.y = 702; gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ1.x * 128; gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ1.y * 128; @@ -2019,131 +2019,131 @@ void sub_203CC(void) // fly me to the moon gCurrentPinballGame->ball->velocity.y = -300; m4aSongNumStart(SE_UNKNOWN_0x7C); - gCurrentPinballGame->unk61E = 0; - gCurrentPinballGame->unk1F = 0; - gCurrentPinballGame->unk5F7 = 0; - gCurrentPinballGame->holeIndicators[(gCurrentPinballGame->unk1C2 - 1) * 3] = 1; + gCurrentPinballGame->catchOverlayTimer = 0; + gCurrentPinballGame->ballFrozenState = 0; + gCurrentPinballGame->ballUpgradeTimerFrozen = 0; + gCurrentPinballGame->holeIndicators[(gCurrentPinballGame->outLaneSide - 1) * 3] = 1; - if (gCurrentPinballGame->unk714 == 0 && + if (gCurrentPinballGame->allHolesLit == 0 && (gCurrentPinballGame->holeIndicators[0] & gCurrentPinballGame->holeIndicators[1] & gCurrentPinballGame->holeIndicators[2] & gCurrentPinballGame->holeIndicators[3])) { - gCurrentPinballGame->unk714 = 1; - gCurrentPinballGame->unk715 = 126; + gCurrentPinballGame->allHolesLit = 1; + gCurrentPinballGame->allHolesLitBlinkTimer = 126; gCurrentPinballGame->scoreAddedInFrame = 4000; } PlayRumble(11); } - if (gCurrentPinballGame->unk61E >= 100) + if (gCurrentPinballGame->catchOverlayTimer >= 100) { if (gCurrentPinballGame->outLanePikaPosition == 2) - gCurrentPinballGame->unk744[gCurrentPinballGame->unk1C2 - 1] = (gCurrentPinballGame->unk1C2 - 1) * 7 + 2; + gCurrentPinballGame->pikaSaverTileIndex[gCurrentPinballGame->outLaneSide - 1] = (gCurrentPinballGame->outLaneSide - 1) * 7 + 2; else - gCurrentPinballGame->unk744[gCurrentPinballGame->unk1C2 - 1] = 2; + gCurrentPinballGame->pikaSaverTileIndex[gCurrentPinballGame->outLaneSide - 1] = 2; - if (gCurrentPinballGame->unk61E == 100) + if (gCurrentPinballGame->catchOverlayTimer == 100) { - gMain.unk44[38]->available = 1; + gMain.fieldSpriteGroups[38]->available = 1; - if (gCurrentPinballGame->outLanePikaPosition == 2 && gCurrentPinballGame->unk1C2 == 2) + if (gCurrentPinballGame->outLanePikaPosition == 2 && gCurrentPinballGame->outLaneSide == 2) { - DmaCopy16(3, gUnknown_08395A4C, 0x06015800, 0x2400); + DmaCopy16(3, gPikaSaverFullCoverageGfx, 0x06015800, 0x2400); } else { - DmaCopy16(3, gUnknown_08397E6C, 0x06015800, 0x2400); + DmaCopy16(3, gPikaSaverPartialCoverageGfx, 0x06015800, 0x2400); } } } else { - if (gUnknown_086ADEE0[gCurrentPinballGame->unk20A][1] > gCurrentPinballGame->unk208) - gCurrentPinballGame->unk208++; + if (gCatchOverlayAnimData[gCurrentPinballGame->catchOverlayKeyframeIndex][1] > gCurrentPinballGame->catchOverlayFrameTimer) + gCurrentPinballGame->catchOverlayFrameTimer++; else { - gCurrentPinballGame->unk208 = 0; - gCurrentPinballGame->unk20A++; + gCurrentPinballGame->catchOverlayFrameTimer = 0; + gCurrentPinballGame->catchOverlayKeyframeIndex++; - if (gCurrentPinballGame->unk20A == 23) + if (gCurrentPinballGame->catchOverlayKeyframeIndex == 23) { m4aSongNumStop(SE_UNKNOWN_0x7C); m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100); } - if (gCurrentPinballGame->unk20A > 25) + if (gCurrentPinballGame->catchOverlayKeyframeIndex > 25) { - gCurrentPinballGame->unk20A = 25; - gCurrentPinballGame->unk61C = 0; - gMain.unk44[38]->available = 0; - gCurrentPinballGame->unkE4 = 0; + gCurrentPinballGame->catchOverlayKeyframeIndex = 25; + gCurrentPinballGame->entityOverlayCollisionState = 0; + gMain.fieldSpriteGroups[38]->available = 0; + gCurrentPinballGame->activePortraitType = 0; - i = gCurrentPinballGame->unk1C2 - 1; + i = gCurrentPinballGame->outLaneSide - 1; if (gCurrentPinballGame->outLanePikaPosition == 2) - gCurrentPinballGame->unk744[i] = i * 9; + gCurrentPinballGame->pikaSaverTileIndex[i] = i * 9; else - gCurrentPinballGame->unk744[i] = 0; + gCurrentPinballGame->pikaSaverTileIndex[i] = 0; - DmaCopy16(3, gUnknown_084C07EC + (gCurrentPinballGame->unk744[i] * 0x180), 0x06010480 + (i * 0x180), 0x180); + DmaCopy16(3, gPikaSaverTilesGfx + (gCurrentPinballGame->pikaSaverTileIndex[i] * 0x180), 0x06010480 + (i * 0x180), 0x180); } } - if (gCurrentPinballGame->unk20A >= 17 && gCurrentPinballGame->unk20A <= 23) + if (gCurrentPinballGame->catchOverlayKeyframeIndex >= 17 && gCurrentPinballGame->catchOverlayKeyframeIndex <= 23) { if ((gMain.systemFrameCount & 3) >> 1) - gCurrentPinballGame->unk4C = -3; + gCurrentPinballGame->cameraBaseX = -3; else - gCurrentPinballGame->unk4C = 3; + gCurrentPinballGame->cameraBaseX = 3; } - r5 = gUnknown_086ADEE0[gCurrentPinballGame->unk20A][0]; - i = gCurrentPinballGame->unk1C2 - 1; + r5 = gCatchOverlayAnimData[gCurrentPinballGame->catchOverlayKeyframeIndex][0]; + i = gCurrentPinballGame->outLaneSide - 1; - spriteGroup = gMain.unk44[38]; - spriteGroup->baseX = (i * 177) - (gCurrentPinballGame->unk58 - 16); - if (gCurrentPinballGame->unk61C) + spriteGroup = gMain.fieldSpriteGroups[38]; + spriteGroup->baseX = (i * 177) - (gCurrentPinballGame->cameraXOffset - 16); + if (gCurrentPinballGame->entityOverlayCollisionState) { - spriteGroup->baseY = 380 - gCurrentPinballGame->unk5A; - gCurrentPinballGame->unk1E3[i] = 0; + spriteGroup->baseY = 380 - gCurrentPinballGame->cameraYOffset; + gCurrentPinballGame->catchHoleOccupied[i] = 0; } else { spriteGroup->baseY = 180; - gCurrentPinballGame->unk1E3[i] = 1; + gCurrentPinballGame->catchHoleOccupied[i] = 1; } for (j = 0; j < 4; j++) { oamSimple = &spriteGroup->oam[j]; dst = (u16 *)&gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_086B4922[r5][j * 3 + 0]; - *dst++ = gUnknown_086B4922[r5][j * 3 + 1]; - *dst++ = gUnknown_086B4922[r5][j * 3 + 2]; + *dst++ = gCatchOverlayOamData[r5][j * 3 + 0]; + *dst++ = gCatchOverlayOamData[r5][j * 3 + 1]; + *dst++ = gCatchOverlayOamData[r5][j * 3 + 2]; gOamBuffer[oamSimple->oamId].x += spriteGroup->baseX; gOamBuffer[oamSimple->oamId].y += spriteGroup->baseY; } } } - spriteGroup = gMain.unk44[29]; + spriteGroup = gMain.fieldSpriteGroups[29]; if (spriteGroup->available) { for (i = 0; i <= 1; i++) { - spriteGroup = gMain.unk44[29 + i]; - spriteGroup->baseX = (i * 177) - (gCurrentPinballGame->unk58 - 16); - if (gCurrentPinballGame->unk1E3[i]) + spriteGroup = gMain.fieldSpriteGroups[29 + i]; + spriteGroup->baseX = (i * 177) - (gCurrentPinballGame->cameraXOffset - 16); + if (gCurrentPinballGame->catchHoleOccupied[i]) { if ((gMain.fieldFrameCount % 5) == 0) { - DmaCopy16(3, gUnknown_084C07EC + (gCurrentPinballGame->unk744[i] * 0x180), 0x06010480 + (i * 0x180), 0x180); + DmaCopy16(3, gPikaSaverTilesGfx + (gCurrentPinballGame->pikaSaverTileIndex[i] * 0x180), 0x06010480 + (i * 0x180), 0x180); } - tempY = 380 - gCurrentPinballGame->unk5A; + tempY = 380 - gCurrentPinballGame->cameraYOffset; spriteGroup->baseY = tempY; } else diff --git a/src/rom_2414.c b/src/rom_2414.c index 88671fa..924de05 100644 --- a/src/rom_2414.c +++ b/src/rom_2414.c @@ -3,13 +3,13 @@ #include "main.h" #include "variables.h" -extern u32 gUnknown_0202ADD0; -extern s16 gUnknown_0201A444; -extern u32 gUnknown_0202BDF0; -extern u8 gUnknown_0201C1AC; -extern u8 gUnknown_0202ADDC; +extern u32 gLinkStatusResult; +extern s16 gLinkTimeoutCounter; +extern u32 gLinkConnectionState; +extern u8 gLinkPlayerCount; +extern u8 gLinkNegotiationFlags; -s16 sub_2414(const struct SpriteSet *const *spriteSets, u16 numSpriteSets, struct SpriteGroup *spriteGroups) +s16 LoadSpriteSetsWithCpuCopy(const struct SpriteSet *const *spriteSets, u16 numSpriteSets, struct SpriteGroup *spriteGroups) { struct SpriteGroup *spriteGroup; struct OamDataSimple *simple; @@ -46,7 +46,7 @@ void nullsub_16(void) { } -void sub_24DC(void) +void ResetSerialIO(void) { REG_RCNT = 0; REG_SIOCNT = 0; @@ -62,7 +62,7 @@ void sub_24DC(void) REG_SIOMULTI3 = 0; } -void sub_250C(void) +void SetupDefaultInterrupts(void) { REG_IME = 0; REG_IE = INTR_FLAG_GAMEPAK | INTR_FLAG_VBLANK; @@ -70,18 +70,18 @@ void sub_250C(void) REG_IME = 1; } -void sub_2538(void) +void ResetLinkState(void) { - gUnknown_0202ADD0 = 0; - gUnknown_0201A444 = 0; - gUnknown_0202BDF0 = 0; - gUnknown_0201C1AC = 0; - gUnknown_0202ADDC = 0; + gLinkStatusResult = 0; + gLinkTimeoutCounter = 0; + gLinkConnectionState = 0; + gLinkPlayerCount = 0; + gLinkNegotiationFlags = 0; } -void sub_2568(void) +void ResetSerialAndInterrupts(void) { - sub_24DC(); + ResetSerialIO(); REG_IME = 0; ResetMainCallback(); ResetVBlankIntrFunc(); diff --git a/src/rom_27E08.c b/src/rom_27E08.c index b891a6e..62619d5 100644 --- a/src/rom_27E08.c +++ b/src/rom_27E08.c @@ -6,82 +6,82 @@ #define BONUS_CATCH_TIME 7200 //2 minutes, 60FPS -extern const u8 gUnknown_081C0064[]; +extern const u8 gDefaultBallPalette[]; extern const u8 *gEvoItemAppear_GfxList[]; -extern const u8 gUnknown_0815C4C4[][0x20]; -extern const s16 gUnknown_086AE0E6[]; -extern const u16 gUnknown_086B4202[58][15]; -extern const struct Vector16 gUnknown_086ACFA0[][8]; -extern const s16 gUnknown_08137AB8[]; -extern const s16 gUnknown_08137944[]; -extern const s16 gUnknown_08055A68[][7]; -extern const s16 gUnknown_08137928[]; -extern const u16 gUnknown_086B51CE[18][27]; -extern const u8 gUnknown_083A8AAC[]; -extern const u8 gUnknown_084FA20C[]; -extern const u8 gUnknown_083A07CC[]; -extern const u8 gUnknown_083A27EC[]; -extern const s16 gUnknown_086AE0C0[]; -extern const u16 gUnknown_086B50AE[16][18]; -extern const u8 gUnknown_083A29EC[]; -extern const u8 gUnknown_083A320C[]; -extern const u16 gUnknown_086B4F6A[18][18]; -extern const u8 gUnknown_083A340C[]; -extern const u8 gUnknown_083A542C[]; -extern const u8 gUnknown_083A562C[]; -extern const u8 gUnknown_083A6E4C[]; -extern const s16 gUnknown_086AE0D0[]; -extern const u16 gUnknown_086B4E62[22][12]; -extern const u8 gUnknown_083A05CC[]; -extern const u8 gUnknown_0839DDAC[]; +extern const u8 gEvoItemPalettes[][0x20]; +extern const s16 gEvoItemAppearFrameThresholds[]; +extern const u16 gEvoItemAnimOamFramesets[58][15]; +extern const struct Vector16 gEvoItemPositions[][8]; +extern const s16 gBumperAnimFrames[]; +extern const s16 gPondDialAnimFrames[]; +extern const s16 gAreaRouletteTable[][7]; +extern const s16 gAreaToSpeciesTable[]; +extern const u16 gAreaRouletteOamFramesets[18][27]; +extern const u8 gHatchCompletePalette[]; +extern const u8 gEggPortraitTilesGfx[]; +extern const u8 gHatchStartTilesGfx[]; +extern const u8 gHatchStartPalette[]; +extern const s16 gHatchRevealSparkleTimings[]; +extern const u16 gHatchRevealOamFramesets[16][18]; +extern const u8 gHatchStage2TilesGfx[]; +extern const u8 gHatchStage2Palette[]; +extern const u16 gHatchFullRevealOamFramesets[18][18]; +extern const u8 gHatchStage3TilesGfx[]; +extern const u8 gHatchStage3Palette[]; +extern const u8 gHatchFinalTilesGfx[]; +extern const u8 gHatchFinalPalette[]; +extern const s16 gHatchRevealFinalTimings[]; +extern const u16 gHatchSequentialOamFramesets[22][12]; +extern const u8 gHatchRevealPalette[]; +extern const u8 gHatchRevealTilesGfx[]; extern const s16 gHatchSequentialTileFramesetData[][2]; extern const u16 gHatchSequentialTileBreakSpritesheetOam[28][18]; -extern const s16 gUnknown_086AD52C[28][3]; -extern const u8 gUnknown_0202C7A0[][0x120]; -extern const struct Vector32 gUnknown_086AD750[]; -extern const u16 gUnknown_086AD788[]; -extern const struct Vector32 gUnknown_086AD580[][29]; -extern const u8 gUnknown_086ACF80[]; -extern const u8 gUnknown_081428D4[]; -extern const u8 gUnknown_08138014[]; -extern const u8 gUnknown_0202D760[]; -extern const u16 gUnknown_086B4B0E[48][4][3]; -extern const u16 gUnknown_086AE0B4[]; -extern const struct Vector16 gUnknown_086AE0A4[]; +extern const s16 gEggHatchAnimData[28][3]; +extern const u8 gCatchSpriteFrameBuffer[][0x120]; +extern const struct Vector32 gSapphireEggWaypoints[]; +extern const u16 gAngleToDirectionTable[]; +extern const struct Vector32 gEggWalkPathWaypoints[][29]; +extern const u8 gCapturePalette[]; +extern const u8 gCaptureScreenTilesGfx[]; +extern const u8 gBallUpgradeTilesGfx[]; +extern const u8 gCatchAnimTileBuffer[]; +extern const u16 gCatchCreatureOamFramesets[48][4][3]; +extern const u16 gCyndaquilFrameIndices[]; +extern const struct Vector16 gCyndaquilCavePositions[]; extern const u8 gRubyStageCyndaquil_Gfx[][0x280]; extern const u8 gRubyBoardHatchCave_Gfx[][0x480]; -extern const u16 gUnknown_086B4D4E[40][2][3]; -extern const u8 gUnknown_083FFD4C[][0x40]; -extern const u8 gUnknown_083FF04C[][0x40]; -extern const s16 gUnknown_086ACFE0[]; -extern const struct Vector16 gUnknown_086AE088[]; -extern const u16 gUnknown_086B4850[14][15]; -extern const u8 gUnknown_083A704C[]; -extern const u8 gUnknown_083A806C[]; -extern const u16 gUnknown_086ADFE2[][2]; -extern const u16 gUnknown_086B28A0[82][6][3]; -extern const u8 gUnknown_083A808C[]; -extern const u8 gUnknown_0848FD8C[]; -extern const u16 gUnknown_086B481A[18][3]; -extern const u16 gUnknown_086B47DE[4][15]; -extern const s16 gUnknown_086ADFC8[]; -extern const s16 gUnknown_086ADFD4[]; -extern const u8 gUnknown_0847FF0C[][0x300]; -extern const u8 gUnknown_08480E0C[][0x40]; -extern const s16 gUnknown_086AD456[][7]; +extern const u16 gHatchCaveOamFramesets[40][2][3]; +extern const u8 gSpaceTileGfx[][0x40]; +extern const u8 gAlphabetTilesGfx[][0x40]; +extern const s16 gCaughtTextChars[]; +extern const struct Vector16 gFlyingCreatureCameraOffsets[]; +extern const u16 gEggFloatOamFramesets[14][15]; +extern const u8 gEggModeTilesGfx[]; +extern const u8 gEggModePalette[]; +extern const u16 gPikaSaverFrameData[][2]; +extern const u16 gPokemonFloatOamFramesets[82][6][3]; +extern const u8 gCaptureModePalette[]; +extern const u8 gCaptureModeTilesGfx[]; +extern const u16 gShopOamAttributes[18][3]; +extern const u16 gShopNumberOamFramesets[4][15]; +extern const s16 gArrowBounceOffsets[]; +extern const s16 gTimerIndicatorFrames[]; +extern const u8 gShopDigitTilesGfx[][0x300]; +extern const u8 gDecimalDigitTilesGfx[][0x40]; +extern const s16 gEvoShopAnimFrames[][7]; extern const u8 gRubyBoardShop_Gfx[][0x500]; -extern const u8 gUnknown_083A8A8C[]; -extern const struct Vector32 gUnknown_086ADF90[]; -extern const u8 gUnknown_084C156C[]; +extern const u8 gShopPalette[]; +extern const struct Vector32 gPikaSaverWaypoints[]; +extern const u8 gPikachuSaverTilesGfx[]; -extern u8 gUnknown_020315D0[]; +extern u8 gCatchSpritePaletteBuffer[]; extern struct SongHeader se_unk_84; extern struct SongHeader se_unk_85; extern struct SongHeader se_unk_86; -void sub_20EC0(void) +void AnimateCreatureApproach(void) { s16 i; struct SpriteGroup *group; @@ -93,50 +93,50 @@ void sub_20EC0(void) int squaredMagnitude; s16 index; - group = gMain.unk44[41]; - if (gCurrentPinballGame->unk1C0 == 0) + group = gMain.fieldSpriteGroups[41]; + if (gCurrentPinballGame->pikaSaverTimer == 0) return; - if (gCurrentPinballGame->unk1C0 == 800) + if (gCurrentPinballGame->pikaSaverTimer == 800) { group->available = 1; - if (gCurrentPinballGame->unk1BE == 1) + if (gCurrentPinballGame->pikaRescuePath == 1) { - gCurrentPinballGame->unk1FC = 1090; - gCurrentPinballGame->unk200 = 4680; - gCurrentPinballGame->unk204 = 0; + gCurrentPinballGame->catchCreatureX = 1090; + gCurrentPinballGame->catchCreatureY = 4680; + gCurrentPinballGame->creatureWaypointIndex = 0; } else { - gCurrentPinballGame->unk1FC = 2000; - gCurrentPinballGame->unk200 = 3820; - gCurrentPinballGame->unk204 = 4; + gCurrentPinballGame->catchCreatureX = 2000; + gCurrentPinballGame->catchCreatureY = 3820; + gCurrentPinballGame->creatureWaypointIndex = 4; } } else { - if (gCurrentPinballGame->unk1C0 == 799) + if (gCurrentPinballGame->pikaSaverTimer == 799) { - if (gCurrentPinballGame->unk1BE != 1) + if (gCurrentPinballGame->pikaRescuePath != 1) { - DmaCopy16(3, gUnknown_084C07EC, (void *)0x06010600, 0x180); + DmaCopy16(3, gPikaSaverTilesGfx, (void *)0x06010600, 0x180); } } - tempVec.x = gUnknown_086ADF90[gCurrentPinballGame->unk204].x - 120 - gCurrentPinballGame->unk1FC; - tempVec.y = gUnknown_086ADF90[gCurrentPinballGame->unk204].y - 160 - gCurrentPinballGame->unk200; + tempVec.x = gPikaSaverWaypoints[gCurrentPinballGame->creatureWaypointIndex].x - 120 - gCurrentPinballGame->catchCreatureX; + tempVec.y = gPikaSaverWaypoints[gCurrentPinballGame->creatureWaypointIndex].y - 160 - gCurrentPinballGame->catchCreatureY; xx = tempVec.x * tempVec.x; yy = tempVec.y * tempVec.y; squaredMagnitude = xx + yy; angle = ArcTan2(tempVec.x, -tempVec.y); tempVec2.x = (Cos(angle) * 7) / 20000; tempVec2.y = (Sin(angle) * -7) / 20000; - index = gUnknown_086AD788[angle / 0x2000] + (gMain.systemFrameCount % 24) / 8; - gCurrentPinballGame->unk1FC += tempVec2.x; - gCurrentPinballGame->unk200 += tempVec2.y; + index = gAngleToDirectionTable[angle / 0x2000] + (gMain.systemFrameCount % 24) / 8; + gCurrentPinballGame->catchCreatureX += tempVec2.x; + gCurrentPinballGame->catchCreatureY += tempVec2.y; if (group->available) { - group->baseX = gCurrentPinballGame->unk1FC / 10 - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk200 / 10 - gCurrentPinballGame->unk5A; + group->baseX = gCurrentPinballGame->catchCreatureX / 10 - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->catchCreatureY / 10 - gCurrentPinballGame->cameraYOffset; if (group->baseY > 180) group->baseY = 180; else if (group->baseY < -30) @@ -154,166 +154,166 @@ void sub_20EC0(void) } if (squaredMagnitude < 2500) { - gCurrentPinballGame->unk204++; - if (gCurrentPinballGame->unk1BE == 1) + gCurrentPinballGame->creatureWaypointIndex++; + if (gCurrentPinballGame->pikaRescuePath == 1) { - if (gCurrentPinballGame->unk204 == 4) + if (gCurrentPinballGame->creatureWaypointIndex == 4) { - DmaCopy16(3, gUnknown_084C156C, (void *)0x06010600, 0x180); + DmaCopy16(3, gPikachuSaverTilesGfx, (void *)0x06010600, 0x180); gCurrentPinballGame->outLanePikaPosition = 2; - gMain.unk44[41]->available = 0; - gCurrentPinballGame->unk1C0 = 1; + gMain.fieldSpriteGroups[41]->available = 0; + gCurrentPinballGame->pikaSaverTimer = 1; m4aSongNumStart(SE_UNKNOWN_0x75); } } - else if (gCurrentPinballGame->unk204 == 7) + else if (gCurrentPinballGame->creatureWaypointIndex == 7) { - gMain.unk44[41]->available = 0; - gCurrentPinballGame->unk1C0 = 1; + gMain.fieldSpriteGroups[41]->available = 0; + gCurrentPinballGame->pikaSaverTimer = 1; } } } - gCurrentPinballGame->unk1C0--; + gCurrentPinballGame->pikaSaverTimer--; } -void sub_21238(s16 arg0) +void ResetCatchState(s16 arg0) { if (arg0) { - gCurrentPinballGame->unk714 = 0; + gCurrentPinballGame->allHolesLit = 0; gCurrentPinballGame->holeIndicators[0] = 0; gCurrentPinballGame->holeIndicators[1] = gCurrentPinballGame->holeIndicators[0]; gCurrentPinballGame->holeIndicators[2] = gCurrentPinballGame->holeIndicators[0]; gCurrentPinballGame->holeIndicators[3] = gCurrentPinballGame->holeIndicators[0]; } - gCurrentPinballGame->unk730 = 0; - gCurrentPinballGame->unk5F3 = 0; - if (gCurrentPinballGame->unk16 != 2 || gCurrentPinballGame->unk14 < 3) + gCurrentPinballGame->trapAnimState = 0; + gCurrentPinballGame->bonusTrapEnabled = 0; + if (gCurrentPinballGame->boardTransitionPhase != 2 || gCurrentPinballGame->nextBoardState < 3) { - if ((gCurrentPinballGame->unk72 & 0xF) == 0) + if ((gCurrentPinballGame->jirachiActivationFlags & 0xF) == 0) { - sub_1C7F4(0, 0); - gCurrentPinballGame->unk6C4 = 0; + LoadPortraitGraphics(0, 0); + gCurrentPinballGame->portraitDisplayState = 0; } } - if (gCurrentPinballGame->unk14 == 6 && gCurrentPinballGame->unk16 == 2) - gCurrentPinballGame->unk2F0 = 0; + if (gCurrentPinballGame->nextBoardState == 6 && gCurrentPinballGame->boardTransitionPhase == 2) + gCurrentPinballGame->shopDoorTargetFrame = 0; } -void sub_21300(void) +void InitCatchTrigger(void) { - gCurrentPinballGame->unk17 = 1; - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk6DD = 0; + gCurrentPinballGame->boardSubState = 1; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->shopPurchaseConfirmed = 0; } -void sub_21320(void) +void UpdateCatchTrigger(void) { - switch (gCurrentPinballGame->unk17) + switch (gCurrentPinballGame->boardSubState) { case 1: - if (gCurrentPinballGame->unk18 < 9) + if (gCurrentPinballGame->stageTimer < 9) { - gCurrentPinballGame->unk18++; - if (gCurrentPinballGame->unk18 < 8) + gCurrentPinballGame->stageTimer++; + if (gCurrentPinballGame->stageTimer < 8) { - gCurrentPinballGame->unk730 = 1; + gCurrentPinballGame->trapAnimState = 1; } - else if (gCurrentPinballGame->unk18 == 8) + else if (gCurrentPinballGame->stageTimer == 8) { - sub_219A8(); - gCurrentPinballGame->unk730 = 2; - gCurrentPinballGame->unk708 = 0; - sub_1C7F4(1, 0); - gCurrentPinballGame->unk17++; + ShowBonusTrapSprite(); + gCurrentPinballGame->trapAnimState = 2; + gCurrentPinballGame->portraitCycleFrame = 0; + LoadPortraitGraphics(1, 0); + gCurrentPinballGame->boardSubState++; } } break; case 2: - sub_219EC(); - if (gCurrentPinballGame->unk25 == 0) - sub_1C7F4(1, 0); + AnimateBonusTrapSprite(); + if (gCurrentPinballGame->ballCatchState == 0) + LoadPortraitGraphics(1, 0); - if (gCurrentPinballGame->unk25 == 4) - gCurrentPinballGame->unk17++; + if (gCurrentPinballGame->ballCatchState == 4) + gCurrentPinballGame->boardSubState++; break; case 3: - gCurrentPinballGame->unk714 = 0; + gCurrentPinballGame->allHolesLit = 0; gCurrentPinballGame->holeIndicators[0] = 0; gCurrentPinballGame->holeIndicators[1] = gCurrentPinballGame->holeIndicators[0]; gCurrentPinballGame->holeIndicators[2] = gCurrentPinballGame->holeIndicators[0]; gCurrentPinballGame->holeIndicators[3] = gCurrentPinballGame->holeIndicators[0]; - gCurrentPinballGame->unk17++; - sub_29D9C(); - if (gCurrentPinballGame->unk62D < 99) - gCurrentPinballGame->unk62D++; + gCurrentPinballGame->boardSubState++; + InitRouletteWheel(); + if (gCurrentPinballGame->catchTriggerCompletionCount < 99) + gCurrentPinballGame->catchTriggerCompletionCount++; break; case 4: - if (gCurrentPinballGame->unk28 == 148) + if (gCurrentPinballGame->modeAnimTimer == 148) { - gCurrentPinballGame->unk28++; - sub_2A054(); + gCurrentPinballGame->modeAnimTimer++; + RunRouletteWheel(); } - else if (gCurrentPinballGame->unk28 == 139) + else if (gCurrentPinballGame->modeAnimTimer == 139) { } - else if (gCurrentPinballGame->unk28 == 24) + else if (gCurrentPinballGame->modeAnimTimer == 24) { - sub_1C7F4(0, 0); + LoadPortraitGraphics(0, 0); } - else if (gCurrentPinballGame->unk28 == 0) + else if (gCurrentPinballGame->modeAnimTimer == 0) { - gCurrentPinballGame->unk17++; + gCurrentPinballGame->boardSubState++; } - if (gCurrentPinballGame->unk6DD) + if (gCurrentPinballGame->shopPurchaseConfirmed) { - sub_2A354(); - if (gCurrentPinballGame->unk6DE < 180) + ProcessRouletteOutcome(); + if (gCurrentPinballGame->outcomeFrameCounter < 180) { - gCurrentPinballGame->unk28 = 140; - if (gCurrentPinballGame->unk6DE == 179) - gCurrentPinballGame->unk28 = 30; + gCurrentPinballGame->modeAnimTimer = 140; + if (gCurrentPinballGame->outcomeFrameCounter == 179) + gCurrentPinballGame->modeAnimTimer = 30; } } - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->stageTimer = 0; break; case 5: - sub_219EC(); - gMain.unk44[13]->available = 0; - gCurrentPinballGame->unk17++; + AnimateBonusTrapSprite(); + gMain.fieldSpriteGroups[13]->available = 0; + gCurrentPinballGame->boardSubState++; break; case 6: - sub_21238(1); - gCurrentPinballGame->unk17++; + ResetCatchState(1); + gCurrentPinballGame->boardSubState++; break; case 7: - if (gCurrentPinballGame->unk18) - gCurrentPinballGame->unk18--; + if (gCurrentPinballGame->stageTimer) + gCurrentPinballGame->stageTimer--; else - sub_19B64(1); + RequestBoardStateTransition(1); break; } } -void sub_21514(void) +void FullCatchStateCleanup(void) { - gCurrentPinballGame->unk730 = 0; - gCurrentPinballGame->unk5F3 = 0; - sub_1C7F4(0, 0); - gCurrentPinballGame->unk6C4 = 0; - gCurrentPinballGame->unk723 = 0; - gCurrentPinballGame->unk720 = 0; - gCurrentPinballGame->unk71D[0] = 0; - gCurrentPinballGame->unk71D[1] = 0; - gCurrentPinballGame->unk71D[2] = 0; + gCurrentPinballGame->trapAnimState = 0; + gCurrentPinballGame->bonusTrapEnabled = 0; + LoadPortraitGraphics(0, 0); + gCurrentPinballGame->portraitDisplayState = 0; + gCurrentPinballGame->evoItemCount = 0; + gCurrentPinballGame->evoBlinkTimer = 0; + gCurrentPinballGame->catchLights[0] = 0; + gCurrentPinballGame->catchLights[1] = 0; + gCurrentPinballGame->catchLights[2] = 0; } -void sub_21578(void) +void InitBonusStageSelect(void) { if (gMain.selectedField == FIELD_RUBY) { @@ -321,17 +321,17 @@ void sub_21578(void) { case 0: case 2: - gCurrentPinballGame->unk6EC[0] = 42; - gCurrentPinballGame->unk284 = FIELD_KECLEON; + gCurrentPinballGame->modeOutcomeValues[0] = 42; + gCurrentPinballGame->nextBonusField = FIELD_KECLEON; break; case 1: case 3: - gCurrentPinballGame->unk6EC[0] = 44; - gCurrentPinballGame->unk284 = FIELD_GROUDON; + gCurrentPinballGame->modeOutcomeValues[0] = 44; + gCurrentPinballGame->nextBonusField = FIELD_GROUDON; break; case 4: - gCurrentPinballGame->unk6EC[0] = 45; - gCurrentPinballGame->unk284 = FIELD_RAYQUAZA; + gCurrentPinballGame->modeOutcomeValues[0] = 45; + gCurrentPinballGame->nextBonusField = FIELD_RAYQUAZA; break; } } @@ -341,60 +341,60 @@ void sub_21578(void) { case 0: case 2: - gCurrentPinballGame->unk6EC[0] = 41; - gCurrentPinballGame->unk284 = FIELD_DUSCLOPS; + gCurrentPinballGame->modeOutcomeValues[0] = 41; + gCurrentPinballGame->nextBonusField = FIELD_DUSCLOPS; break; case 1: case 3: - gCurrentPinballGame->unk6EC[0] = 43; - gCurrentPinballGame->unk284 = FIELD_KYOGRE; + gCurrentPinballGame->modeOutcomeValues[0] = 43; + gCurrentPinballGame->nextBonusField = FIELD_KYOGRE; break; case 4: - gCurrentPinballGame->unk6EC[0] = 45; - gCurrentPinballGame->unk284 = FIELD_RAYQUAZA; + gCurrentPinballGame->modeOutcomeValues[0] = 45; + gCurrentPinballGame->nextBonusField = FIELD_RAYQUAZA; break; } } - if (gCurrentPinballGame->unk25 == 4 && gCurrentPinballGame->unk15 == 2) + if (gCurrentPinballGame->ballCatchState == 4 && gCurrentPinballGame->prevBoardState == 2) { - gCurrentPinballGame->unk28 = 150; - gCurrentPinballGame->unk17 = 3; - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->modeAnimTimer = 150; + gCurrentPinballGame->boardSubState = 3; + gCurrentPinballGame->stageTimer = 0; } else { - gCurrentPinballGame->unk17 = 0; - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk708 = 0; - sub_1C7F4(7, 0); + gCurrentPinballGame->boardSubState = 0; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->portraitCycleFrame = 0; + LoadPortraitGraphics(7, 0); } } -void sub_216FC(void) +void UpdateBonusStageSelect(void) { - switch (gCurrentPinballGame->unk17) + switch (gCurrentPinballGame->boardSubState) { case 0: - if (gCurrentPinballGame->unk18 < 60) + if (gCurrentPinballGame->stageTimer < 60) { - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk17++; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardSubState++; } break; case 1: - if (gCurrentPinballGame->unk18 < 9) + if (gCurrentPinballGame->stageTimer < 9) { - gCurrentPinballGame->unk18++; - if (gCurrentPinballGame->unk18 < 8) + gCurrentPinballGame->stageTimer++; + if (gCurrentPinballGame->stageTimer < 8) { - gCurrentPinballGame->unk730 = 1; + gCurrentPinballGame->trapAnimState = 1; } - else if (gCurrentPinballGame->unk18 == 8) + else if (gCurrentPinballGame->stageTimer == 8) { switch (gCurrentPinballGame->numCompletedBonusStages % 5) { @@ -409,129 +409,129 @@ void sub_216FC(void) break; } - sub_219A8(); - gCurrentPinballGame->unk730 = 2; - gCurrentPinballGame->unk17++; - gCurrentPinballGame->unk708 = 0; + ShowBonusTrapSprite(); + gCurrentPinballGame->trapAnimState = 2; + gCurrentPinballGame->boardSubState++; + gCurrentPinballGame->portraitCycleFrame = 0; } } break; case 2: - sub_219EC(); - sub_1C7F4(7, 0); - if (gCurrentPinballGame->unk25 == 4) - gCurrentPinballGame->unk17++; + AnimateBonusTrapSprite(); + LoadPortraitGraphics(7, 0); + if (gCurrentPinballGame->ballCatchState == 4) + gCurrentPinballGame->boardSubState++; break; case 3: - gCurrentPinballGame->unk17++; - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk708 = 0; - gCurrentPinballGame->unk6EC[0] = 46; - sub_1C7F4(7, 0); + gCurrentPinballGame->boardSubState++; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->portraitCycleFrame = 0; + gCurrentPinballGame->modeOutcomeValues[0] = 46; + LoadPortraitGraphics(7, 0); break; case 4: - if (gCurrentPinballGame->unk28 == 145) + if (gCurrentPinballGame->modeAnimTimer == 145) { - gCurrentPinballGame->unk28++; + gCurrentPinballGame->modeAnimTimer++; if (JOY_NEW(A_BUTTON)) { - gCurrentPinballGame->unk28 = 144; + gCurrentPinballGame->modeAnimTimer = 144; m4aMPlayAllStop(); } else if (JOY_NEW(B_BUTTON)) { m4aMPlayAllStop(); m4aSongNumStart(SE_MENU_CANCEL); - gCurrentPinballGame->unk28 = 60; - gCurrentPinballGame->unk17 = 6; - if (gCurrentPinballGame->unk714) - gCurrentPinballGame->unk6EE = 120; + gCurrentPinballGame->modeAnimTimer = 60; + gCurrentPinballGame->boardSubState = 6; + if (gCurrentPinballGame->allHolesLit) + gCurrentPinballGame->allHolesLitDelayTimer = 120; } - gCurrentPinballGame->unk6EC[0] = 46; - sub_1C7F4(7, 0); + gCurrentPinballGame->modeOutcomeValues[0] = 46; + LoadPortraitGraphics(7, 0); } - if (gCurrentPinballGame->unk28 == 130) + if (gCurrentPinballGame->modeAnimTimer == 130) { m4aSongNumStart(SE_WARP); - gCurrentPinballGame->unk18 = 65; + gCurrentPinballGame->stageTimer = 65; gMain.blendControl = 0x9F; } - if (gCurrentPinballGame->unk28 == 125) - gCurrentPinballGame->unk28++; + if (gCurrentPinballGame->modeAnimTimer == 125) + gCurrentPinballGame->modeAnimTimer++; - if (gCurrentPinballGame->unk18) + if (gCurrentPinballGame->stageTimer) { - gCurrentPinballGame->unk1100 = 1; - gCurrentPinballGame->unk18--; - gMain.blendBrightness = 16 - gCurrentPinballGame->unk18 / 4; - if (gCurrentPinballGame->unk18 == 0) - gCurrentPinballGame->unk17++; + gCurrentPinballGame->startButtonDisabled = 1; + gCurrentPinballGame->stageTimer--; + gMain.blendBrightness = 16 - gCurrentPinballGame->stageTimer / 4; + if (gCurrentPinballGame->stageTimer == 0) + gCurrentPinballGame->boardSubState++; } break; case 5: - if (gCurrentPinballGame->unk18 < 30) + if (gCurrentPinballGame->stageTimer < 30) { - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk17 = 0; - gCurrentPinballGame->unk282 = 0; - sub_1C73C(); + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardSubState = 0; + gCurrentPinballGame->bonusReturnState = 0; + TransitionToBonusField(); } break; case 6: - sub_219EC(); - gMain.unk44[13]->available = 0; - gCurrentPinballGame->unk17++; - gCurrentPinballGame->unk18 = 0; + AnimateBonusTrapSprite(); + gMain.fieldSpriteGroups[13]->available = 0; + gCurrentPinballGame->boardSubState++; + gCurrentPinballGame->stageTimer = 0; break; case 7: - sub_21514(); - gCurrentPinballGame->unk17++; + FullCatchStateCleanup(); + gCurrentPinballGame->boardSubState++; break; case 8: - sub_19B64(1); + RequestBoardStateTransition(1); break; } } -void sub_219A8(void) +void ShowBonusTrapSprite(void) { DmaCopy16(3, gMainStageBonusTrap_Gfx[0], (void *)0x060113C0, 0x300); - gMain.unk44[13]->available = 1; - gCurrentPinballGame->unk5F3 = 1; + gMain.fieldSpriteGroups[13]->available = 1; + gCurrentPinballGame->bonusTrapEnabled = 1; } -void sub_219EC(void) +void AnimateBonusTrapSprite(void) { s16 i; struct SpriteGroup *group; struct OamDataSimple *oamSimple; - group = gMain.unk44[13]; - gCurrentPinballGame->unk20B = (gCurrentPinballGame->unk290 % 35) / 7; + group = gMain.fieldSpriteGroups[13]; + gCurrentPinballGame->bonusTrapAnimFrame = (gCurrentPinballGame->globalAnimFrameCounter % 35) / 7; if (group->available) { - group->baseX = 120 - gCurrentPinballGame->unk58; - group->baseY = 280 - gCurrentPinballGame->unk5A; + group->baseX = 120 - gCurrentPinballGame->cameraXOffset; + group->baseY = 280 - gCurrentPinballGame->cameraYOffset; if (group->baseY >= 200) group->baseY = 200; - if (gCurrentPinballGame->unk25 == 3) + if (gCurrentPinballGame->ballCatchState == 3) { group->baseY = 200; } else { - if (gCurrentPinballGame->unk20B != gCurrentPinballGame->unk20C) + if (gCurrentPinballGame->bonusTrapAnimFrame != gCurrentPinballGame->prevBonusTrapFrame) { - DmaCopy16(3, gMainStageBonusTrap_Gfx[gCurrentPinballGame->unk20B], (void *)0x060113C0, 0x300); - gCurrentPinballGame->unk20C = gCurrentPinballGame->unk20B; + DmaCopy16(3, gMainStageBonusTrap_Gfx[gCurrentPinballGame->bonusTrapAnimFrame], (void *)0x060113C0, 0x300); + gCurrentPinballGame->prevBonusTrapFrame = gCurrentPinballGame->bonusTrapAnimFrame; } } @@ -544,7 +544,7 @@ void sub_219EC(void) } } -void sub_21B0C(void) +void AnimateCatchCounterDisplay(void) { s16 i; struct SpriteGroup *group; @@ -552,62 +552,62 @@ void sub_21B0C(void) s16 index; s16 sp0[3]; - group = gMain.unk44[17]; + group = gMain.fieldSpriteGroups[17]; memset(sp0, 0, sizeof(sp0)); - if (gCurrentPinballGame->unk1CA != gCurrentPinballGame->unk1CC) + if (gCurrentPinballGame->catchCounterValue != gCurrentPinballGame->prevCatchCounterValue) { - if (gCurrentPinballGame->unk1CA == 12) { - if (gCurrentPinballGame->unk1CE) + if (gCurrentPinballGame->catchCounterValue == 12) { + if (gCurrentPinballGame->pikachuAnimTimer) { - gCurrentPinballGame->unk1CE--; - index = ((gCurrentPinballGame->unk1CE % 20) / 10) + 12; - if (gCurrentPinballGame->unk1CE < 41) + gCurrentPinballGame->pikachuAnimTimer--; + index = ((gCurrentPinballGame->pikachuAnimTimer % 20) / 10) + 12; + if (gCurrentPinballGame->pikachuAnimTimer < 41) { - if (gCurrentPinballGame->unk1CE > 2) + if (gCurrentPinballGame->pikachuAnimTimer > 2) { - gCurrentPinballGame->unk1D4 += 3; - gCurrentPinballGame->unk1D6 += 2; + gCurrentPinballGame->catchCounterXShift += 3; + gCurrentPinballGame->catchCounterSlideOffsetY += 2; } - gCurrentPinballGame->unk1D8 = gCurrentPinballGame->unk1DA = ((gCurrentPinballGame->unk1CE * 128) / 40) + 128; - sp0[1] = ((40 - gCurrentPinballGame->unk1CE) * 16) / 40; - sp0[0] = -((40 - gCurrentPinballGame->unk1CE) * 16) / 40; + gCurrentPinballGame->catchCounterAnimState = gCurrentPinballGame->catchCounterScaleY = ((gCurrentPinballGame->pikachuAnimTimer * 128) / 40) + 128; + sp0[1] = ((40 - gCurrentPinballGame->pikachuAnimTimer) * 16) / 40; + sp0[0] = -((40 - gCurrentPinballGame->pikachuAnimTimer) * 16) / 40; sp0[2] = 0; } } else { - gCurrentPinballGame->unk1CC = 13; - gCurrentPinballGame->unk1CA = 13; + gCurrentPinballGame->prevCatchCounterValue = 13; + gCurrentPinballGame->catchCounterValue = 13; index = 13; - gCurrentPinballGame->unk1D0 = 0; - gCurrentPinballGame->unk1D6 = 120; - gCurrentPinballGame->unk1DC = 60; + gCurrentPinballGame->catchCounterSlideTimer = 0; + gCurrentPinballGame->catchCounterSlideOffsetY = 120; + gCurrentPinballGame->catchCounterBlinkTimer = 60; } - DmaCopy16(3, gUnknown_084C00EC[index], (void *)0x06010AE0, 0x80); + DmaCopy16(3, gCatchCounterDigitTilesGfx[index], (void *)0x06010AE0, 0x80); } else { - DmaCopy16(3, gUnknown_084C00EC[gCurrentPinballGame->unk1CA], (void *)0x06010AE0, 0x80); - gCurrentPinballGame->unk1CC = gCurrentPinballGame->unk1CA; + DmaCopy16(3, gCatchCounterDigitTilesGfx[gCurrentPinballGame->catchCounterValue], (void *)0x06010AE0, 0x80); + gCurrentPinballGame->prevCatchCounterValue = gCurrentPinballGame->catchCounterValue; } } - if (gCurrentPinballGame->unk1D0) + if (gCurrentPinballGame->catchCounterSlideTimer) { - gCurrentPinballGame->unk1D0--; - group->baseY = 80 + gCurrentPinballGame->unk1D6; - if (gCurrentPinballGame->unk1D0 < 20) - gCurrentPinballGame->unk1DA = (gCurrentPinballGame->unk1D0 * 12) + 16; + gCurrentPinballGame->catchCounterSlideTimer--; + group->baseY = 80 + gCurrentPinballGame->catchCounterSlideOffsetY; + if (gCurrentPinballGame->catchCounterSlideTimer < 20) + gCurrentPinballGame->catchCounterScaleY = (gCurrentPinballGame->catchCounterSlideTimer * 12) + 16; } else { group->baseY = 180; } - group->baseX = 119 + gCurrentPinballGame->unk1D4; - SetMatrixScale(gCurrentPinballGame->unk1D8, gCurrentPinballGame->unk1DA, 1); + group->baseX = 119 + gCurrentPinballGame->catchCounterXShift; + SetMatrixScale(gCurrentPinballGame->catchCounterAnimState, gCurrentPinballGame->catchCounterScaleY, 1); for (i = 0; i < 3; i++) { oamSimple = &group->oam[i]; @@ -618,7 +618,7 @@ void sub_21B0C(void) } } -void sub_21D78(void) +void UpdateEvolutionShopSprite(void) { s16 i; struct SpriteGroup *group; @@ -626,44 +626,44 @@ void sub_21D78(void) s16 index; group = &gMain.spriteGroups[78]; - if (gCurrentPinballGame->unk1A4 == 0) + if (gCurrentPinballGame->shopTransitionActive == 0) { - if (gCurrentPinballGame->unk72E > 2) + if (gCurrentPinballGame->evoArrowProgress > 2) { - if (gCurrentPinballGame->evolvablePartySize > 0 && gCurrentPinballGame->unk1A5 == 0) + if (gCurrentPinballGame->evolvablePartySize > 0 && gCurrentPinballGame->evolutionShopActive == 0) { - gCurrentPinballGame->unk1A4 = 1; - gCurrentPinballGame->unk1B4 = 0; - gCurrentPinballGame->unk1A5 = 1; + gCurrentPinballGame->shopTransitionActive = 1; + gCurrentPinballGame->shopAnimTimer = 0; + gCurrentPinballGame->evolutionShopActive = 1; } } - else if (gCurrentPinballGame->unk13 != 6 && gCurrentPinballGame->unk1A5 == 1 && gCurrentPinballGame->unk25 != 4) + else if (gCurrentPinballGame->boardState != 6 && gCurrentPinballGame->evolutionShopActive == 1 && gCurrentPinballGame->ballCatchState != 4) { - gCurrentPinballGame->unk1A4 = 1; - gCurrentPinballGame->unk1B4 = 0; - gCurrentPinballGame->unk1A5 = 0; + gCurrentPinballGame->shopTransitionActive = 1; + gCurrentPinballGame->shopAnimTimer = 0; + gCurrentPinballGame->evolutionShopActive = 0; } } else { - index = gUnknown_086AD456[gCurrentPinballGame->unk1A5][(gCurrentPinballGame->unk1B4 % 42) / 6]; - if (gCurrentPinballGame->unk1B4 == 0) + index = gEvoShopAnimFrames[gCurrentPinballGame->evolutionShopActive][(gCurrentPinballGame->shopAnimTimer % 42) / 6]; + if (gCurrentPinballGame->shopAnimTimer == 0) { group->available = 1; - DmaCopy16(3, gUnknown_083A8A8C, (void *)0x05000240, 0x20); + DmaCopy16(3, gShopPalette, (void *)0x05000240, 0x20); } - else if (gCurrentPinballGame->unk1B4 == 37) + else if (gCurrentPinballGame->shopAnimTimer == 37) { m4aSongNumStart(SE_UNKNOWN_0xCA); } - if (gCurrentPinballGame->unk1B4 % 6 == 0) + if (gCurrentPinballGame->shopAnimTimer % 6 == 0) { DmaCopy16(3, gRubyBoardShop_Gfx[index], (void *)0x06013D00, 0x500); } - group->baseX = 181 - gCurrentPinballGame->unk58; - group->baseY = 48 - gCurrentPinballGame->unk5A; + group->baseX = 181 - gCurrentPinballGame->cameraXOffset; + group->baseY = 48 - gCurrentPinballGame->cameraYOffset; if (group->baseY < -50) group->baseY = -50; @@ -674,17 +674,17 @@ void sub_21D78(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - gCurrentPinballGame->unk1B4++; - if (gCurrentPinballGame->unk1B4 > 40) + gCurrentPinballGame->shopAnimTimer++; + if (gCurrentPinballGame->shopAnimTimer > 40) { - sub_4E9F0(gCurrentPinballGame->unk1A5); - gCurrentPinballGame->unk1A4 = 0; + LoadShopItemGraphics(gCurrentPinballGame->evolutionShopActive); + gCurrentPinballGame->shopTransitionActive = 0; gMain.spriteGroups[78].available = 0; } } } -void sub_21FBC(s16 arg0) +void RenderEvolutionUI(s16 arg0) { s16 i; struct SpriteGroup *group; @@ -696,19 +696,19 @@ void sub_21FBC(s16 arg0) s16 sp0[2]; s16 sp4[2]; - group = gMain.unk44[7]; - var1 = gUnknown_086AD000[gUnknown_086AD2DE[gCurrentPinballGame->unk1A6]]; + group = gMain.fieldSpriteGroups[7]; + var1 = gShopItemData[gShopCursorToItemMap[gCurrentPinballGame->shopItemCursor]]; if (arg0) { index = var1[3] / 10; - DmaCopy16(3, gUnknown_08480E0C[index], (void *)0x06015DA0, 0x40); + DmaCopy16(3, gDecimalDigitTilesGfx[index], (void *)0x06015DA0, 0x40); index = var1[3] % 10; - DmaCopy16(3, gUnknown_08480E0C[index], (void *)0x06015E60, 0x40); + DmaCopy16(3, gDecimalDigitTilesGfx[index], (void *)0x06015E60, 0x40); } if (group->available) { - group->baseX = 156 + gCurrentPinballGame->unk1B6; + group->baseX = 156 + gCurrentPinballGame->shopUISlideOffset; group->baseY = 96; for (i = 0; i < 4; i++) { @@ -718,38 +718,38 @@ void sub_21FBC(s16 arg0) } } - group = gMain.unk44[8]; - index = gCurrentPinballGame->unk1A5 != 0 ? 1 : 0; + group = gMain.fieldSpriteGroups[8]; + index = gCurrentPinballGame->evolutionShopActive != 0 ? 1 : 0; if (group->available) { - group->baseX = (gCurrentPinballGame->unk1B6 + 136); + group->baseX = (gCurrentPinballGame->shopUISlideOffset + 136); group->baseY = 88; for (i = 0; i < 5; i++) { oamSimple = &group->oam[i]; dst = (u16 *)&gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_086B47DE[index][i * 3 + 0]; - *dst++ = gUnknown_086B47DE[index][i * 3 + 1]; - *dst++ = gUnknown_086B47DE[index][i * 3 + 2]; + *dst++ = gShopNumberOamFramesets[index][i * 3 + 0]; + *dst++ = gShopNumberOamFramesets[index][i * 3 + 1]; + *dst++ = gShopNumberOamFramesets[index][i * 3 + 2]; gOamBuffer[oamSimple->oamId].x += group->baseX; gOamBuffer[oamSimple->oamId].y += group->baseY; } } - group = gMain.unk44[6]; + group = gMain.fieldSpriteGroups[6]; if (group->available) { - if (gMain.unk2A < 20) + if (gMain.shopPanelSlideOffset < 20) group->baseY = 180; else group->baseY = 86; - sp0[0] = -gUnknown_086ADFC8[(gMain.systemFrameCount % 30) / 5]; - sp0[1] = gUnknown_086ADFC8[(gMain.systemFrameCount % 30) / 5]; + sp0[0] = -gArrowBounceOffsets[(gMain.systemFrameCount % 30) / 5]; + sp0[1] = gArrowBounceOffsets[(gMain.systemFrameCount % 30) / 5]; sp4[0] = sp0[0]; sp4[1] = sp0[1]; - if (gCurrentPinballGame->unk1A5 == 0) + if (gCurrentPinballGame->evolutionShopActive == 0) { for (i = 0; i < 4; i++) { @@ -780,15 +780,15 @@ void sub_21FBC(s16 arg0) } } - if (gCurrentPinballGame->unk1A5 == 0) + if (gCurrentPinballGame->evolutionShopActive == 0) group->baseY = 180; - else if (gMain.unk2A < 20) + else if (gMain.shopPanelSlideOffset < 20) group->baseY = 180; else group->baseY = 86; group->baseX = 48; - if (gCurrentPinballGame->unk25C < gCurrentPinballGame->unk25D) + if (gCurrentPinballGame->evoChainPosition < gCurrentPinballGame->evoChainMaxStage) { oamSimple = &group->oam[4]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; @@ -801,7 +801,7 @@ void sub_21FBC(s16 arg0) gOamBuffer[oamSimple->oamId].y = 180; } - if (gCurrentPinballGame->unk25C > 0) + if (gCurrentPinballGame->evoChainPosition > 0) { oamSimple = &group->oam[5]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; @@ -815,35 +815,35 @@ void sub_21FBC(s16 arg0) } } - group = gMain.unk44[9]; + group = gMain.fieldSpriteGroups[9]; if (group->available) { group->baseX = 48; - if (gMain.unk2A < 20) + if (gMain.shopPanelSlideOffset < 20) group->baseY = 180; else group->baseY = 88; - if (gUnknown_086AD2DE[gCurrentPinballGame->unk1A6] == 4) + if (gShopCursorToItemMap[gCurrentPinballGame->shopItemCursor] == 4) { - if (gCurrentPinballGame->unk1AF && gCurrentPinballGame->unk1B8 / 5 == 0) + if (gCurrentPinballGame->shopBonusStageAlreadyBought && gCurrentPinballGame->shopAnimSlideTimer / 5 == 0) index = 4; else - index = gUnknown_086ADFD4[gCurrentPinballGame->unk1B8 / 5]; + index = gTimerIndicatorFrames[gCurrentPinballGame->shopAnimSlideTimer / 5]; } - else if (gUnknown_086AD2DE[gCurrentPinballGame->unk1A6] == 3) + else if (gShopCursorToItemMap[gCurrentPinballGame->shopItemCursor] == 3) { - if (gCurrentPinballGame->unk1AA && gCurrentPinballGame->unk1B8 / 5 == 0) + if (gCurrentPinballGame->shopPikaSaverMaxed && gCurrentPinballGame->shopAnimSlideTimer / 5 == 0) index = 4; else - index = gUnknown_086ADFD4[gCurrentPinballGame->unk1B8 / 5]; + index = gTimerIndicatorFrames[gCurrentPinballGame->shopAnimSlideTimer / 5]; } else { - index = gUnknown_086ADFD4[gCurrentPinballGame->unk1B8 / 5]; + index = gTimerIndicatorFrames[gCurrentPinballGame->shopAnimSlideTimer / 5]; } - DmaCopy16(3, gUnknown_0847FF0C[index], (void *)0x06016220, 0x300); + DmaCopy16(3, gShopDigitTilesGfx[index], (void *)0x06016220, 0x300); for (i = 0; i < 2; i++) { oamSimple = &group->oam[i]; @@ -853,7 +853,7 @@ void sub_21FBC(s16 arg0) } } -void sub_225F0(void) +void AnimateCoinReward(void) { s16 i; struct SpriteGroup *group; @@ -864,54 +864,54 @@ void sub_225F0(void) int var1; s16 var2; - group = gMain.unk44[39]; - if (gCurrentPinballGame->unk196 < ((gCurrentPinballGame->unk194 - 1) * 9) + 19) + group = gMain.fieldSpriteGroups[39]; + if (gCurrentPinballGame->coinRewardTimer < ((gCurrentPinballGame->coinRewardAmount - 1) * 9) + 19) { - if (gCurrentPinballGame->unk196 == 0) + if (gCurrentPinballGame->coinRewardTimer == 0) { group->available = 1; - gCurrentPinballGame->unk193 = 0; + gCurrentPinballGame->coinsAwarded = 0; for (i = 0; i < 2; i++) { - gCurrentPinballGame->unk198[i] = 0; - gCurrentPinballGame->unk19C[i].x = 70; - gCurrentPinballGame->unk19C[i].y = 180; + gCurrentPinballGame->coinBounceTimer[i] = 0; + gCurrentPinballGame->coinSpritePos[i].x = 70; + gCurrentPinballGame->coinSpritePos[i].y = 180; } - gCurrentPinballGame->unk195 = 0; + gCurrentPinballGame->coinRewardFastPayout = 0; } else { - if (gCurrentPinballGame->unk25 == 4 && (gCurrentPinballGame->newButtonActions[1] || JOY_NEW(A_BUTTON))) - gCurrentPinballGame->unk195 = 1; + if (gCurrentPinballGame->ballCatchState == 4 && (gCurrentPinballGame->newButtonActions[1] || JOY_NEW(A_BUTTON))) + gCurrentPinballGame->coinRewardFastPayout = 1; - if (gCurrentPinballGame->unk193 < gCurrentPinballGame->unk194) + if (gCurrentPinballGame->coinsAwarded < gCurrentPinballGame->coinRewardAmount) { - var1 = gCurrentPinballGame->unk196 - 1; + var1 = gCurrentPinballGame->coinRewardTimer - 1; if (var1 % 9 == 0) { - if (gCurrentPinballGame->unk195) + if (gCurrentPinballGame->coinRewardFastPayout) { var2 = (var1 % 18) / 9; - gCurrentPinballGame->unk198[var2] = 17; - gCurrentPinballGame->unk19C[var2].x = 188; - gCurrentPinballGame->unk19C[var2].y = 140; + gCurrentPinballGame->coinBounceTimer[var2] = 17; + gCurrentPinballGame->coinSpritePos[var2].x = 188; + gCurrentPinballGame->coinSpritePos[var2].y = 140; m4aSongNumStart(SE_UNKNOWN_0x7E); - gCurrentPinballGame->coins += gCurrentPinballGame->unk194 - gCurrentPinballGame->unk193; + gCurrentPinballGame->coins += gCurrentPinballGame->coinRewardAmount - gCurrentPinballGame->coinsAwarded; if (gCurrentPinballGame->coins > 99) gCurrentPinballGame->coins = 99; - gCurrentPinballGame->scoreAddedInFrame = (gCurrentPinballGame->unk194 - gCurrentPinballGame->unk193) * 100; - gCurrentPinballGame->unk196 = (gCurrentPinballGame->unk194 * 9) + 1; - gCurrentPinballGame->unk193 = gCurrentPinballGame->unk194; + gCurrentPinballGame->scoreAddedInFrame = (gCurrentPinballGame->coinRewardAmount - gCurrentPinballGame->coinsAwarded) * 100; + gCurrentPinballGame->coinRewardTimer = (gCurrentPinballGame->coinRewardAmount * 9) + 1; + gCurrentPinballGame->coinsAwarded = gCurrentPinballGame->coinRewardAmount; } else { var2 = (var1 % 18) / 9; - gCurrentPinballGame->unk198[var2] = 17; - gCurrentPinballGame->unk19C[var2].x = 188; - gCurrentPinballGame->unk19C[var2].y = 140; - gCurrentPinballGame->unk193++; + gCurrentPinballGame->coinBounceTimer[var2] = 17; + gCurrentPinballGame->coinSpritePos[var2].x = 188; + gCurrentPinballGame->coinSpritePos[var2].y = 140; + gCurrentPinballGame->coinsAwarded++; m4aSongNumStart(SE_UNKNOWN_0x7E); gCurrentPinballGame->coins++; if (gCurrentPinballGame->coins > 99) @@ -924,16 +924,16 @@ void sub_225F0(void) for (i = 0; i < 2; i++) { - group->baseX = gCurrentPinballGame->unk19C[i].x; - group->baseY = gCurrentPinballGame->unk19C[i].y; - if (gCurrentPinballGame->unk19C[i].y > 160) + group->baseX = gCurrentPinballGame->coinSpritePos[i].x; + group->baseY = gCurrentPinballGame->coinSpritePos[i].y; + if (gCurrentPinballGame->coinSpritePos[i].y > 160) var0 = 0; else - var0 = (17 - gCurrentPinballGame->unk198[i]) / 2; + var0 = (17 - gCurrentPinballGame->coinBounceTimer[i]) / 2; oamSimple = &group->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B481A[var0]; + src = gShopOamAttributes[var0]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -941,45 +941,45 @@ void sub_225F0(void) gOamBuffer[oamSimple->oamId].x += group->baseX; gOamBuffer[oamSimple->oamId].y += group->baseY; - if (gCurrentPinballGame->unk198[i] > 0) + if (gCurrentPinballGame->coinBounceTimer[i] > 0) { - gCurrentPinballGame->unk198[i]--; - if (gCurrentPinballGame->unk198[i] == 0) + gCurrentPinballGame->coinBounceTimer[i]--; + if (gCurrentPinballGame->coinBounceTimer[i] == 0) { - gCurrentPinballGame->unk19C[i].x = 70; - gCurrentPinballGame->unk19C[i].y = 180; + gCurrentPinballGame->coinSpritePos[i].x = 70; + gCurrentPinballGame->coinSpritePos[i].y = 180; } } } } - gCurrentPinballGame->unk196++; - if (gCurrentPinballGame->unk196 == ((gCurrentPinballGame->unk194 - 1) * 9) + 19) + gCurrentPinballGame->coinRewardTimer++; + if (gCurrentPinballGame->coinRewardTimer == ((gCurrentPinballGame->coinRewardAmount - 1) * 9) + 19) { - gMain.unk44[39]->available = 0; - gCurrentPinballGame->unk194 = 0; - if (gCurrentPinballGame->unk25 == 4) - gCurrentPinballGame->unk6DE = 170; + gMain.fieldSpriteGroups[39]->available = 0; + gCurrentPinballGame->coinRewardAmount = 0; + if (gCurrentPinballGame->ballCatchState == 4) + gCurrentPinballGame->outcomeFrameCounter = 170; } } } -void sub_22978(void) +void InitTotodileEggDelivery(void) { - gCurrentPinballGame->unk2C8 = 1600; - gCurrentPinballGame->unk2CA = 2080; - gCurrentPinballGame->unk2C3 = 0; - gCurrentPinballGame->unk2C4 = 0; + gCurrentPinballGame->eggDeliveryX = 1600; + gCurrentPinballGame->eggDeliveryY = 2080; + gCurrentPinballGame->totodileDeliveryFrame = 0; + gCurrentPinballGame->totodileDeliveryTimer = 0; gMain.spriteGroups[82].available = 1; - gCurrentPinballGame->unk1EC = 1; - gCurrentPinballGame->unk1F4 = 240; - gCurrentPinballGame->unk1F6 = 160; - gCurrentPinballGame->unkE4 = 3; - DmaCopy16(3, gUnknown_083A808C, (void *)0x050003C0, 0x20); - DmaCopy16(3, gUnknown_0848FD8C, (void *)0x06015800, 0xCA0); + gCurrentPinballGame->eggAnimationPhase = 1; + gCurrentPinballGame->portraitOffsetX = 240; + gCurrentPinballGame->portraitOffsetY = 160; + gCurrentPinballGame->activePortraitType = 3; + DmaCopy16(3, gCaptureModePalette, (void *)0x050003C0, 0x20); + DmaCopy16(3, gCaptureModeTilesGfx, (void *)0x06015800, 0xCA0); } -void sub_22A30(void) +void AnimateTotodileEggDelivery(void) { s16 i; struct SpriteGroup *group; @@ -990,53 +990,53 @@ void sub_22A30(void) var0 = 0; group = &gMain.spriteGroups[82]; - if (gUnknown_086ADFE2[gCurrentPinballGame->unk2C3][1] > gCurrentPinballGame->unk2C4) + if (gPikaSaverFrameData[gCurrentPinballGame->totodileDeliveryFrame][1] > gCurrentPinballGame->totodileDeliveryTimer) { - gCurrentPinballGame->unk2C4++; + gCurrentPinballGame->totodileDeliveryTimer++; } else { - gCurrentPinballGame->unk2C3++; - gCurrentPinballGame->unk2C4 = 0; - if (gCurrentPinballGame->unk2C3 == 41) + gCurrentPinballGame->totodileDeliveryFrame++; + gCurrentPinballGame->totodileDeliveryTimer = 0; + if (gCurrentPinballGame->totodileDeliveryFrame == 41) { - gCurrentPinballGame->unk2C3 = 40; + gCurrentPinballGame->totodileDeliveryFrame = 40; group->available = 0; - gCurrentPinballGame->unk2D0 = 2; - gCurrentPinballGame->unkE4 = 0; + gCurrentPinballGame->eggDeliveryState = 2; + gCurrentPinballGame->activePortraitType = 0; } - if (gCurrentPinballGame->unk2C3 == 1) + if (gCurrentPinballGame->totodileDeliveryFrame == 1) m4aSongNumStart(SE_UNKNOWN_0x146); - if (gCurrentPinballGame->unk2C3 == 7) + if (gCurrentPinballGame->totodileDeliveryFrame == 7) m4aSongNumStart(SE_UNKNOWN_0x147); - if (gCurrentPinballGame->unk2C3 == 13) + if (gCurrentPinballGame->totodileDeliveryFrame == 13) m4aSongNumStart(SE_UNKNOWN_0x148); - if (gCurrentPinballGame->unk2C3 == 39) + if (gCurrentPinballGame->totodileDeliveryFrame == 39) { - gCurrentPinballGame->unk1F4 = 0; - gCurrentPinballGame->unk1F6 = 0; - DmaCopy16(3, gUnknown_084FD18C[0], (void *)0x06011CE0, 0x200); + gCurrentPinballGame->portraitOffsetX = 0; + gCurrentPinballGame->portraitOffsetY = 0; + DmaCopy16(3, gEggFrameTilesGfx[0], (void *)0x06011CE0, 0x200); } - if (gCurrentPinballGame->unk2C3 == 14) + if (gCurrentPinballGame->totodileDeliveryFrame == 14) gCurrentPinballGame->scoreAddedInFrame = 2000000; } - if (gCurrentPinballGame->unk2C3 >= 14 && gCurrentPinballGame->unk2C3 < 38 && gCurrentPinballGame->unk290 % 7 == 0) + if (gCurrentPinballGame->totodileDeliveryFrame >= 14 && gCurrentPinballGame->totodileDeliveryFrame < 38 && gCurrentPinballGame->globalAnimFrameCounter % 7 == 0) m4aSongNumStart(SE_UNKNOWN_0x149); - group->baseX = gCurrentPinballGame->unk2C8 / 20 - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk2CA / 20 - gCurrentPinballGame->unk5A; - var0 = gUnknown_086ADFE2[gCurrentPinballGame->unk2C3][0]; + group->baseX = gCurrentPinballGame->eggDeliveryX / 20 - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->eggDeliveryY / 20 - gCurrentPinballGame->cameraYOffset; + var0 = gPikaSaverFrameData[gCurrentPinballGame->totodileDeliveryFrame][0]; for (i = 0; i < 6; i++) { oamSimple = &group->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B28A0[var0][i]; + src = gPokemonFloatOamFramesets[var0][i]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -1046,23 +1046,23 @@ void sub_22A30(void) } } -void sub_22C6C(void) +void InitAerodactylEggDelivery(void) { - gCurrentPinballGame->unk2C6 = 0; - gCurrentPinballGame->unk2C8 = 3600; - gCurrentPinballGame->unk2CA = -40; - gCurrentPinballGame->unk2CC = -36; - gCurrentPinballGame->unk2CE = 60; + gCurrentPinballGame->eggDropTimer = 0; + gCurrentPinballGame->eggDeliveryX = 3600; + gCurrentPinballGame->eggDeliveryY = -40; + gCurrentPinballGame->eggDeliveryVelX = -36; + gCurrentPinballGame->eggDeliveryVelY = 60; gMain.spriteGroups[12].available = 1; - gCurrentPinballGame->unk1EC = 1; - gCurrentPinballGame->unk1F4 = gCurrentPinballGame->unk2C8 / 20 - gUnknown_086AE088[0].x; - gCurrentPinballGame->unk1F6 = gCurrentPinballGame->unk2CA / 20 - gUnknown_086AE088[0].y; - gCurrentPinballGame->unkE4 = 2; - DmaCopy16(3, gUnknown_083A806C, (void *)0x050003C0, 0x20); - DmaCopy16(3, gUnknown_083A704C, (void *)0x06015800, 0x1000); + gCurrentPinballGame->eggAnimationPhase = 1; + gCurrentPinballGame->portraitOffsetX = gCurrentPinballGame->eggDeliveryX / 20 - gFlyingCreatureCameraOffsets[0].x; + gCurrentPinballGame->portraitOffsetY = gCurrentPinballGame->eggDeliveryY / 20 - gFlyingCreatureCameraOffsets[0].y; + gCurrentPinballGame->activePortraitType = 2; + DmaCopy16(3, gEggModePalette, (void *)0x050003C0, 0x20); + DmaCopy16(3, gEggModeTilesGfx, (void *)0x06015800, 0x1000); } -void sub_22D54(void) +void AnimateAerodactylEggDelivery(void) { s16 i; struct SpriteGroup *group; @@ -1070,92 +1070,92 @@ void sub_22D54(void) u16 *dst; s16 var0; - var0 = (gCurrentPinballGame->unk2C6 % 56) / 8; + var0 = (gCurrentPinballGame->eggDropTimer % 56) / 8; group = &gMain.spriteGroups[12]; - if (gCurrentPinballGame->unk2C6 < 130) + if (gCurrentPinballGame->eggDropTimer < 130) { - if (gCurrentPinballGame->unk2C6 % 36U == 0) + if (gCurrentPinballGame->eggDropTimer % 36U == 0) m4aSongNumStart(SE_UNKNOWN_0xB8); - gCurrentPinballGame->unk2C6++; - gCurrentPinballGame->unk2C8 += gCurrentPinballGame->unk2CC; - gCurrentPinballGame->unk2CA += gCurrentPinballGame->unk2CE; - if (gCurrentPinballGame->unk2CE > 7 || gMain.systemFrameCount % 3 == 0) - gCurrentPinballGame->unk2CE--; + gCurrentPinballGame->eggDropTimer++; + gCurrentPinballGame->eggDeliveryX += gCurrentPinballGame->eggDeliveryVelX; + gCurrentPinballGame->eggDeliveryY += gCurrentPinballGame->eggDeliveryVelY; + if (gCurrentPinballGame->eggDeliveryVelY > 7 || gMain.systemFrameCount % 3 == 0) + gCurrentPinballGame->eggDeliveryVelY--; - if (gCurrentPinballGame->unk2C6 < 78) + if (gCurrentPinballGame->eggDropTimer < 78) { - gCurrentPinballGame->unk1F4 = gCurrentPinballGame->unk2C8 / 20 - gUnknown_086AE088[var0].x; - gCurrentPinballGame->unk1F6 = gCurrentPinballGame->unk2CA / 20 - gUnknown_086AE088[var0].y; + gCurrentPinballGame->portraitOffsetX = gCurrentPinballGame->eggDeliveryX / 20 - gFlyingCreatureCameraOffsets[var0].x; + gCurrentPinballGame->portraitOffsetY = gCurrentPinballGame->eggDeliveryY / 20 - gFlyingCreatureCameraOffsets[var0].y; } else { - gCurrentPinballGame->unk1F4 = 0; - gCurrentPinballGame->unk1F6 = 0; + gCurrentPinballGame->portraitOffsetX = 0; + gCurrentPinballGame->portraitOffsetY = 0; } - if (gCurrentPinballGame->unk2C6 == 78) + if (gCurrentPinballGame->eggDropTimer == 78) gCurrentPinballGame->scoreAddedInFrame = 100000; - DmaCopy16(3, gUnknown_084FD18C[0], (void *)0x06011CE0, 0x200); + DmaCopy16(3, gEggFrameTilesGfx[0], (void *)0x06011CE0, 0x200); } else { group->available = 0; do {} while (0); // needed to match, there was probably some dead code - gCurrentPinballGame->unk2D0 = 2; - gCurrentPinballGame->unkE4 = 0; + gCurrentPinballGame->eggDeliveryState = 2; + gCurrentPinballGame->activePortraitType = 0; } - group->baseX = gCurrentPinballGame->unk2C8 / 20 - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk2CA / 20 - gCurrentPinballGame->unk5A; + group->baseX = gCurrentPinballGame->eggDeliveryX / 20 - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->eggDeliveryY / 20 - gCurrentPinballGame->cameraYOffset; for (i = 0; i < 5; i++) { oamSimple = &group->oam[i]; dst = (u16 *)&gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_086B4850[var0][i * 3 + 0]; - *dst++ = gUnknown_086B4850[var0][i * 3 + 1]; - *dst++ = gUnknown_086B4850[var0][i * 3 + 2]; + *dst++ = gEggFloatOamFramesets[var0][i * 3 + 0]; + *dst++ = gEggFloatOamFramesets[var0][i * 3 + 1]; + *dst++ = gEggFloatOamFramesets[var0][i * 3 + 2]; gOamBuffer[oamSimple->oamId].x += group->baseX; gOamBuffer[oamSimple->oamId].y += group->baseY; } } -void sub_22FA4(void) +void LoadPokemonNameGraphics(void) { s16 i; int index; - gCurrentPinballGame->unk20E = 0; - sub_1C7F4(9, 0); - gCurrentPinballGame->unkE4 = 14; - gMain.unk44[4]->available = 1; + gCurrentPinballGame->nameSpacingOffset = 0; + LoadPortraitGraphics(9, 0); + gCurrentPinballGame->activePortraitType = 14; + gMain.fieldSpriteGroups[4]->available = 1; for (i = 0; i < 10; i++) { if (gSpeciesInfo[gCurrentPinballGame->currentSpecies].name[i] == 0x20) { - DmaCopy16(3, gUnknown_083FFD4C[0], (void *)0x06015800 + i * 0x40, 0x40); - gCurrentPinballGame->unk20E += 4; + DmaCopy16(3, gSpaceTileGfx[0], (void *)0x06015800 + i * 0x40, 0x40); + gCurrentPinballGame->nameSpacingOffset += 4; } else { index = gSpeciesInfo[gCurrentPinballGame->currentSpecies].name[i] - 0x41; - DmaCopy16(3, gUnknown_083FF04C[index], (void *)0x06015800 + i * 0x40, 0x40); + DmaCopy16(3, gAlphabetTilesGfx[index], (void *)0x06015800 + i * 0x40, 0x40); } } } -void sub_23070(void) +void UpdatePokemonNamePosition(void) { s16 i; struct SpriteGroup *group; struct OamDataSimple *oamSimple; - group = gMain.unk44[4]; + group = gMain.fieldSpriteGroups[4]; for (i = 0; i < 10; i++) { - group->baseX = i * 8 + (gCurrentPinballGame->unk20E + 152) + gCurrentPinballGame->unk1B6; + group->baseX = i * 8 + (gCurrentPinballGame->nameSpacingOffset + 152) + gCurrentPinballGame->shopUISlideOffset; group->baseY = 96; oamSimple = &group->oam[i]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; @@ -1163,78 +1163,78 @@ void sub_23070(void) } } -void sub_2310C(void) +void HidePokemonNameDisplay(void) { - gMain.unk44[4]->available = 0; - gCurrentPinballGame->unkE4 = 0; + gMain.fieldSpriteGroups[4]->available = 0; + gCurrentPinballGame->activePortraitType = 0; } -void sub_2312C(void) +void InitEvolutionSuccessDisplay(void) { s16 i; u8 letter; int index; const u8 *dest; - gCurrentPinballGame->unk20E = 0; - gCurrentPinballGame->unk6DB = 0; - gCurrentPinballGame->unk210 = 0; - sub_1C7F4(3, 0); - gCurrentPinballGame->unkE4 = 13; - gMain.unk44[4]->available = 1; + gCurrentPinballGame->nameSpacingOffset = 0; + gCurrentPinballGame->creatureOamPriority = 0; + gCurrentPinballGame->nameRevealAnimFrame = 0; + LoadPortraitGraphics(3, 0); + gCurrentPinballGame->activePortraitType = 13; + gMain.fieldSpriteGroups[4]->available = 1; for (i = 0; i < 10; i++) { if (gSpeciesInfo[gCurrentPinballGame->currentSpecies].name[i] == 0x20) { - DmaCopy16(3, gUnknown_083FFD4C[0], (void *)0x06015800 + i * 0x40, 0x40); - gCurrentPinballGame->unk20E += 4; + DmaCopy16(3, gSpaceTileGfx[0], (void *)0x06015800 + i * 0x40, 0x40); + gCurrentPinballGame->nameSpacingOffset += 4; } else { index = gSpeciesInfo[gCurrentPinballGame->currentSpecies].name[i] - 0x41; - DmaCopy16(3, gUnknown_083FF04C[index], (void *)0x06015800 + i * 0x40, 0x40); + DmaCopy16(3, gAlphabetTilesGfx[index], (void *)0x06015800 + i * 0x40, 0x40); } } - gMain.unk44[5]->available = 1; + gMain.fieldSpriteGroups[5]->available = 1; for (i = 0; i < 10; i++) { - if (gUnknown_086ACFE0[i] == 0x20) + if (gCaughtTextChars[i] == 0x20) { - DmaCopy16(3, gUnknown_083FFD4C[0], (void *)0x06015800 + (i + 10) * 0x40, 0x40); + DmaCopy16(3, gSpaceTileGfx[0], (void *)0x06015800 + (i + 10) * 0x40, 0x40); } else { - index = gUnknown_086ACFE0[i] - 0x41; - DmaCopy16(3, gUnknown_083FF04C[index], (void *)0x06015800 + (i + 10) * 0x40, 0x40); + index = gCaughtTextChars[i] - 0x41; + DmaCopy16(3, gAlphabetTilesGfx[index], (void *)0x06015800 + (i + 10) * 0x40, 0x40); } } for (i = 0; i < 10; i++) { - gCurrentPinballGame->unk212[i] = i * 2; - gCurrentPinballGame->unk228[i].x = 0; + gCurrentPinballGame->nameRevealDelays[i] = i * 2; + gCurrentPinballGame->nameSlideRow1[i].x = 0; } for (i = 0; i < 10; i++) { - gCurrentPinballGame->unk13D4[i] = (i + 10) * 2; - gCurrentPinballGame->unk13E8[i].x = 0; + gCurrentPinballGame->nameRevealDelaysRow2[i] = (i + 10) * 2; + gCurrentPinballGame->nameSlideRow2[i].x = 0; } } -void sub_23300(void) +void AnimateEvolutionSuccessScreen(void) { s16 i, j, k; struct SpriteGroup *group; struct OamDataSimple *oamSimple; u32 var0; - gCurrentPinballGame->unk6C4 = 0; - if (gCurrentPinballGame->unk210 == 0) + gCurrentPinballGame->portraitDisplayState = 0; + if (gCurrentPinballGame->nameRevealAnimFrame == 0) { - gCurrentPinballGame->unk210++; - group = gMain.unk44[4]; + gCurrentPinballGame->nameRevealAnimFrame++; + group = gMain.fieldSpriteGroups[4]; group->baseX = 0; group->baseY = 180; for (i = 0; i < 10; i++) @@ -1244,7 +1244,7 @@ void sub_23300(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - group = gMain.unk44[5]; + group = gMain.fieldSpriteGroups[5]; group->baseX = 0; group->baseY = 180; for (i = 0; i < 10; i++) @@ -1254,100 +1254,100 @@ void sub_23300(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } } - else if (gCurrentPinballGame->unk210 < 195) + else if (gCurrentPinballGame->nameRevealAnimFrame < 195) { - gCurrentPinballGame->unk210++; - if (gCurrentPinballGame->unk210 < 156) + gCurrentPinballGame->nameRevealAnimFrame++; + if (gCurrentPinballGame->nameRevealAnimFrame < 156) { - group = gMain.unk44[4]; + group = gMain.fieldSpriteGroups[4]; for (i = 0; i < 10; i++) { - if (gCurrentPinballGame->unk212[i]) + if (gCurrentPinballGame->nameRevealDelays[i]) { - gCurrentPinballGame->unk212[i]--; + gCurrentPinballGame->nameRevealDelays[i]--; } else { - gCurrentPinballGame->unk228[i].x += ((1600 - gCurrentPinballGame->unk228[i].x) * 12) / 100; - if (gCurrentPinballGame->unk228[i].x >= 1592) - gCurrentPinballGame->unk228[i].x = 1600; + gCurrentPinballGame->nameSlideRow1[i].x += ((1600 - gCurrentPinballGame->nameSlideRow1[i].x) * 12) / 100; + if (gCurrentPinballGame->nameSlideRow1[i].x >= 1592) + gCurrentPinballGame->nameSlideRow1[i].x = 1600; } var0 = 160; - group->baseX = i * 8 + 80 - gCurrentPinballGame->unk58 - (gCurrentPinballGame->unk228[i].x / 10 - var0) + gCurrentPinballGame->unk20E;; - group->baseY = gCurrentPinballGame->unk6E4.y + 36; + group->baseX = i * 8 + 80 - gCurrentPinballGame->cameraXOffset - (gCurrentPinballGame->nameSlideRow1[i].x / 10 - var0) + gCurrentPinballGame->nameSpacingOffset;; + group->baseY = gCurrentPinballGame->rouletteBasePos.y + 36; oamSimple = &group->oam[i]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - group = gMain.unk44[5]; + group = gMain.fieldSpriteGroups[5]; for (i = 0; i < 10; i++) { - if (gCurrentPinballGame->unk13D4[i]) + if (gCurrentPinballGame->nameRevealDelaysRow2[i]) { - gCurrentPinballGame->unk13D4[i]--; + gCurrentPinballGame->nameRevealDelaysRow2[i]--; } else { - gCurrentPinballGame->unk13E8[i].x += ((1600 - gCurrentPinballGame->unk13E8[i].x) * 12) / 100; - if (gCurrentPinballGame->unk13E8[i].x >= 1592) - gCurrentPinballGame->unk13E8[i].x = 1600; + gCurrentPinballGame->nameSlideRow2[i].x += ((1600 - gCurrentPinballGame->nameSlideRow2[i].x) * 12) / 100; + if (gCurrentPinballGame->nameSlideRow2[i].x >= 1592) + gCurrentPinballGame->nameSlideRow2[i].x = 1600; } var0 = 160; - group->baseX = i * 8 + 80 - gCurrentPinballGame->unk58 - (gCurrentPinballGame->unk13E8[i].x / 10 - var0); - group->baseY = gCurrentPinballGame->unk6E4.y + 52; + group->baseX = i * 8 + 80 - gCurrentPinballGame->cameraXOffset - (gCurrentPinballGame->nameSlideRow2[i].x / 10 - var0); + group->baseY = gCurrentPinballGame->rouletteBasePos.y + 52; oamSimple = &group->oam[i]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - if (gCurrentPinballGame->unk210 == 155) + if (gCurrentPinballGame->nameRevealAnimFrame == 155) { for (j = 0; j < 10; j++) { - gCurrentPinballGame->unk212[j] = j * 2; - gCurrentPinballGame->unk228[j].x = 0; + gCurrentPinballGame->nameRevealDelays[j] = j * 2; + gCurrentPinballGame->nameSlideRow1[j].x = 0; } for (k = 0; k < 10; k++) { - gCurrentPinballGame->unk13D4[k] = (k + 10) * 2; - gCurrentPinballGame->unk13E8[k].x = 0; + gCurrentPinballGame->nameRevealDelaysRow2[k] = (k + 10) * 2; + gCurrentPinballGame->nameSlideRow2[k].x = 0; } } } else { - group = gMain.unk44[4]; + group = gMain.fieldSpriteGroups[4]; for (i = 0; i < 10; i++) { - if (gCurrentPinballGame->unk212[i]) - gCurrentPinballGame->unk212[i]--; + if (gCurrentPinballGame->nameRevealDelays[i]) + gCurrentPinballGame->nameRevealDelays[i]--; else - gCurrentPinballGame->unk228[i].x += ((2000 - gCurrentPinballGame->unk228[i].x) * 12) / 100; + gCurrentPinballGame->nameSlideRow1[i].x += ((2000 - gCurrentPinballGame->nameSlideRow1[i].x) * 12) / 100; var0 = i * 8 + 80; - group->baseX = var0 - gCurrentPinballGame->unk58 - gCurrentPinballGame->unk228[i].x / 10 + gCurrentPinballGame->unk20E; - group->baseY = gCurrentPinballGame->unk6E4.y + 36; + group->baseX = var0 - gCurrentPinballGame->cameraXOffset - gCurrentPinballGame->nameSlideRow1[i].x / 10 + gCurrentPinballGame->nameSpacingOffset; + group->baseY = gCurrentPinballGame->rouletteBasePos.y + 36; oamSimple = &group->oam[i]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - group = gMain.unk44[5]; + group = gMain.fieldSpriteGroups[5]; for (i = 0; i < 10; i++) { - if (gCurrentPinballGame->unk13D4[i]) - gCurrentPinballGame->unk13D4[i]--; + if (gCurrentPinballGame->nameRevealDelaysRow2[i]) + gCurrentPinballGame->nameRevealDelaysRow2[i]--; else - gCurrentPinballGame->unk13E8[i].x += ((2000 - gCurrentPinballGame->unk13E8[i].x) * 12) / 100; + gCurrentPinballGame->nameSlideRow2[i].x += ((2000 - gCurrentPinballGame->nameSlideRow2[i].x) * 12) / 100; var0 = 0; - group->baseX = i * 8 + 80 - gCurrentPinballGame->unk58 - (gCurrentPinballGame->unk13E8[i].x / 10 - var0); - group->baseY = gCurrentPinballGame->unk6E4.y + 52; + group->baseX = i * 8 + 80 - gCurrentPinballGame->cameraXOffset - (gCurrentPinballGame->nameSlideRow2[i].x / 10 - var0); + group->baseY = gCurrentPinballGame->rouletteBasePos.y + 52; oamSimple = &group->oam[i]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; @@ -1356,7 +1356,7 @@ void sub_23300(void) } else { - group = gMain.unk44[4]; + group = gMain.fieldSpriteGroups[4]; if (group->available) { group->baseX = 0; @@ -1369,7 +1369,7 @@ void sub_23300(void) } } - group = gMain.unk44[5]; + group = gMain.fieldSpriteGroups[5]; if (group->available) { group->baseX = 0; @@ -1382,23 +1382,23 @@ void sub_23300(void) } } - gMain.unk44[4]->available = 0; - gMain.unk44[5]->available = 0; - gCurrentPinballGame->unkE4 = 0; + gMain.fieldSpriteGroups[4]->available = 0; + gMain.fieldSpriteGroups[5]->available = 0; + gCurrentPinballGame->activePortraitType = 0; } } -void sub_23954(void) +void InitEggModeAnimation(void) { - gCurrentPinballGame->unk1EC = 1; - gCurrentPinballGame->unk1EE = 0; - gCurrentPinballGame->unk1ED = 0; - gCurrentPinballGame->unk1F0 = 0; - gCurrentPinballGame->unk2DA = 0; - gCurrentPinballGame->unk2D9 = 0; + gCurrentPinballGame->eggAnimationPhase = 1; + gCurrentPinballGame->prevEggAnimFrame = 0; + gCurrentPinballGame->eggAnimFrameIndex = 0; + gCurrentPinballGame->eggFrameTimer = 0; + gCurrentPinballGame->eggCaveState = 0; + gCurrentPinballGame->eggCaveReEntryFlag = 0; } -void sub_239A4(void) +void UpdateEggModeAnimation(void) { s16 i; struct SpriteGroup *group; @@ -1418,7 +1418,7 @@ void sub_239A4(void) var2 = 0; group = &gMain.spriteGroups[48]; var3 = 0; - switch (gCurrentPinballGame->unk1EC) + switch (gCurrentPinballGame->eggAnimationPhase) { case 0: case 1: @@ -1445,76 +1445,76 @@ void sub_239A4(void) break; } - if (gCurrentPinballGame->unk1EE != gCurrentPinballGame->unk1ED) + if (gCurrentPinballGame->prevEggAnimFrame != gCurrentPinballGame->eggAnimFrameIndex) { - index = gUnknown_086AD2EE[gCurrentPinballGame->unk1ED][2]; + index = gEggAnimationFrameData[gCurrentPinballGame->eggAnimFrameIndex][2]; DmaCopy16(3, gRubyBoardHatchCave_Gfx[index], (void *)0x060122A0, 0x480); - index = gUnknown_086AD2EE[gCurrentPinballGame->unk1ED][3]; - DmaCopy16(3, gUnknown_084FD18C[index], (void *)0x06011CE0, 0x200); - gCurrentPinballGame->unk1EE = gCurrentPinballGame->unk1ED; + index = gEggAnimationFrameData[gCurrentPinballGame->eggAnimFrameIndex][3]; + DmaCopy16(3, gEggFrameTilesGfx[index], (void *)0x06011CE0, 0x200); + gCurrentPinballGame->prevEggAnimFrame = gCurrentPinballGame->eggAnimFrameIndex; } - if (gCurrentPinballGame->unk1EC > 1) + if (gCurrentPinballGame->eggAnimationPhase > 1) { - if (gUnknown_086AD2EE[gCurrentPinballGame->unk1ED][1] > gCurrentPinballGame->unk1F0) + if (gEggAnimationFrameData[gCurrentPinballGame->eggAnimFrameIndex][1] > gCurrentPinballGame->eggFrameTimer) { - gCurrentPinballGame->unk1F0++; + gCurrentPinballGame->eggFrameTimer++; } else { - gCurrentPinballGame->unk1ED++; - gCurrentPinballGame->unk1F0 = 0; - if (gCurrentPinballGame->unk1ED >= var0) + gCurrentPinballGame->eggAnimFrameIndex++; + gCurrentPinballGame->eggFrameTimer = 0; + if (gCurrentPinballGame->eggAnimFrameIndex >= var0) { - gCurrentPinballGame->unk1ED = var1; - gCurrentPinballGame->unk1EC = var2; + gCurrentPinballGame->eggAnimFrameIndex = var1; + gCurrentPinballGame->eggAnimationPhase = var2; } - if (gCurrentPinballGame->unk1ED == 18) + if (gCurrentPinballGame->eggAnimFrameIndex == 18) BuildSpeciesWeightsForEggMode(); - if (gCurrentPinballGame->unk1ED == 19) + if (gCurrentPinballGame->eggAnimFrameIndex == 19) { PickSpeciesForEggMode(); if (gMain.mainState != STATE_GAME_IDLE) SaveFile_SetPokedexFlags(gCurrentPinballGame->currentSpecies, 1); } - if (gCurrentPinballGame->unk1ED == 20) - sub_28BFC(); + if (gCurrentPinballGame->eggAnimFrameIndex == 20) + LoadEggSpriteGraphics(); - if ((gCurrentPinballGame->unk1ED == 8 || gCurrentPinballGame->unk1ED == 27) && gCurrentPinballGame->unk1F0 == 0) + if ((gCurrentPinballGame->eggAnimFrameIndex == 8 || gCurrentPinballGame->eggAnimFrameIndex == 27) && gCurrentPinballGame->eggFrameTimer == 0) m4aMPlayAllStop(); - if (gCurrentPinballGame->unk1ED == 12 && gCurrentPinballGame->unk1F0 == 0) + if (gCurrentPinballGame->eggAnimFrameIndex == 12 && gCurrentPinballGame->eggFrameTimer == 0) m4aSongNumStart(MUS_EGG_MODE_START); - if (gCurrentPinballGame->unk1ED == 29) - sub_19B64(5); + if (gCurrentPinballGame->eggAnimFrameIndex == 29) + RequestBoardStateTransition(5); - if (gCurrentPinballGame->unk1ED == 28) + if (gCurrentPinballGame->eggAnimFrameIndex == 28) m4aSongNumStart(SE_UNKNOWN_0x92); } - var3 = gUnknown_086AD2EE[gCurrentPinballGame->unk1ED][0]; + var3 = gEggAnimationFrameData[gCurrentPinballGame->eggAnimFrameIndex][0]; } - gCurrentPinballGame->unk1E8 = 88 - gCurrentPinballGame->unk58; - gCurrentPinballGame->unk1EA = 144 - gCurrentPinballGame->unk5A; - group->baseX = gCurrentPinballGame->unk1E8 + gCurrentPinballGame->unk1F4; - if (gCurrentPinballGame->unk1EC > 0) + gCurrentPinballGame->eggBasePosX = 88 - gCurrentPinballGame->cameraXOffset; + gCurrentPinballGame->eggBasePosY = 144 - gCurrentPinballGame->cameraYOffset; + group->baseX = gCurrentPinballGame->eggBasePosX + gCurrentPinballGame->portraitOffsetX; + if (gCurrentPinballGame->eggAnimationPhase > 0) { - if (gCurrentPinballGame->unk1ED == 32 && gCurrentPinballGame->unk1F0 > 208) + if (gCurrentPinballGame->eggAnimFrameIndex == 32 && gCurrentPinballGame->eggFrameTimer > 208) { - s16 varZ = (0x100 - gCurrentPinballGame->unk1F0) / 16 + 1; + s16 varZ = (0x100 - gCurrentPinballGame->eggFrameTimer) / 16 + 1; if (gMain.systemFrameCount & (varZ << 1)) - group->baseY = gCurrentPinballGame->unk1EA + gCurrentPinballGame->unk1F6; + group->baseY = gCurrentPinballGame->eggBasePosY + gCurrentPinballGame->portraitOffsetY; else group->baseY = 200; } else { - group->baseY = gCurrentPinballGame->unk1EA + gCurrentPinballGame->unk1F6; + group->baseY = gCurrentPinballGame->eggBasePosY + gCurrentPinballGame->portraitOffsetY; } } else @@ -1526,7 +1526,7 @@ void sub_239A4(void) { oamSimple = &group->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B4D4E[var3][i]; + src = gHatchCaveOamFramesets[var3][i]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -1537,8 +1537,8 @@ void sub_239A4(void) } group = &gMain.spriteGroups[52]; - group->baseX = gCurrentPinballGame->unk1E8; - group->baseY = gCurrentPinballGame->unk1EA; + group->baseX = gCurrentPinballGame->eggBasePosX; + group->baseY = gCurrentPinballGame->eggBasePosY; for (i = 0; i < 4; i++) { oamSimple = &gMain.spriteGroups[52].oam[i]; @@ -1548,7 +1548,7 @@ void sub_239A4(void) } } -void sub_23E18(void) +void UpdateEggHatchDisplay(void) { s16 i; struct SpriteGroup *group; @@ -1559,124 +1559,124 @@ void sub_23E18(void) priority = 1; group = &gMain.spriteGroups[51]; var0 = gMain.systemFrameCount % 36; - gCurrentPinballGame->unk746 = 0; - gCurrentPinballGame->unk2D8 = 1; - if (gCurrentPinballGame->unk2DA < 3) + gCurrentPinballGame->cyndaquilFrame = 0; + gCurrentPinballGame->cyndaquilCollisionEnabled = 1; + if (gCurrentPinballGame->eggCaveState < 3) { - gCurrentPinballGame->unk746 = gUnknown_086AE0B4[var0 / 6]; - gCurrentPinballGame->unk2D4 = gUnknown_086AE0A4[gCurrentPinballGame->unk2DA].x; - gCurrentPinballGame->unk2D6 = gUnknown_086AE0A4[gCurrentPinballGame->unk2DA].y; - group->baseX = gCurrentPinballGame->unk2D4 - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk2D6 - gCurrentPinballGame->unk5A; + gCurrentPinballGame->cyndaquilFrame = gCyndaquilFrameIndices[var0 / 6]; + gCurrentPinballGame->cyndaquilCaveSpriteX = gCyndaquilCavePositions[gCurrentPinballGame->eggCaveState].x; + gCurrentPinballGame->cyndaquilCaveSpriteY = gCyndaquilCavePositions[gCurrentPinballGame->eggCaveState].y; + group->baseX = gCurrentPinballGame->cyndaquilCaveSpriteX - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->cyndaquilCaveSpriteY - gCurrentPinballGame->cameraYOffset; if (var0 % 6 == 0) { - DmaCopy16(3, gRubyStageCyndaquil_Gfx[gCurrentPinballGame->unk746], (void *)0x06013300, 0x280); + DmaCopy16(3, gRubyStageCyndaquil_Gfx[gCurrentPinballGame->cyndaquilFrame], (void *)0x06013300, 0x280); } } - else if (gCurrentPinballGame->unk2DA == 3) + else if (gCurrentPinballGame->eggCaveState == 3) { - if (gCurrentPinballGame->unk2D0 != 2) + if (gCurrentPinballGame->eggDeliveryState != 2) { - if (gCurrentPinballGame->unk1EC == 1) + if (gCurrentPinballGame->eggAnimationPhase == 1) { - gCurrentPinballGame->unk1EC = 2; - gCurrentPinballGame->unk746 = 1; - DmaCopy16(3, gRubyStageCyndaquil_Gfx[gCurrentPinballGame->unk746], (void *)0x06013300, 0x280); + gCurrentPinballGame->eggAnimationPhase = 2; + gCurrentPinballGame->cyndaquilFrame = 1; + DmaCopy16(3, gRubyStageCyndaquil_Gfx[gCurrentPinballGame->cyndaquilFrame], (void *)0x06013300, 0x280); gMain.modeChangeFlags |= MODE_CHANGE_BANNER; - gCurrentPinballGame->unkEA = 0; - gCurrentPinballGame->unkEC = 60; - gCurrentPinballGame->unkE8 = 72; - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unkEE = 2; - gCurrentPinballGame->unkF2 = 0; - gCurrentPinballGame->unkFA = 1; - gCurrentPinballGame->unkFB = 0; - gCurrentPinballGame->unk2DE = 48; + gCurrentPinballGame->bannerDelayTimer = 0; + gCurrentPinballGame->bannerDisplayTimer = 60; + gCurrentPinballGame->cameraYScrollTarget = 72; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->cameraYScrollSpeed = 2; + gCurrentPinballGame->bannerGfxIndex = 0; + gCurrentPinballGame->bannerActive = 1; + gCurrentPinballGame->bannerPreserveBallState = 0; + gCurrentPinballGame->eggCaveLiftTimer = 48; } - if (gCurrentPinballGame->unk2D9) + if (gCurrentPinballGame->eggCaveReEntryFlag) { - gCurrentPinballGame->unk2D9 = 0; - gCurrentPinballGame->unk2DE = 48; + gCurrentPinballGame->eggCaveReEntryFlag = 0; + gCurrentPinballGame->eggCaveLiftTimer = 48; } } else { - if (gCurrentPinballGame->unk2DE == 0) + if (gCurrentPinballGame->eggCaveLiftTimer == 0) { - if (gCurrentPinballGame->unk2E0 == 30) + if (gCurrentPinballGame->eggCaveExitDelayTimer == 30) { - gCurrentPinballGame->unk1F = 0; - gCurrentPinballGame->unk26 = 60; + gCurrentPinballGame->ballFrozenState = 0; + gCurrentPinballGame->collisionCooldownTimer = 60; gCurrentPinballGame->ball->velocity.x = 20; gCurrentPinballGame->ball->velocity.y = 200; gCurrentPinballGame->ball->positionQ0.x = 88; gCurrentPinballGame->ball->positionQ0.y = 163; - gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->ball->spinSpeed = 0; gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2; gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2; m4aSongNumStart(SE_UNKNOWN_0xB9); - gCurrentPinballGame->unk5FA = 0; + gCurrentPinballGame->boardEntityActive = 0; } - if (gCurrentPinballGame->unk2E0) + if (gCurrentPinballGame->eggCaveExitDelayTimer) { - gCurrentPinballGame->unk2E0--; + gCurrentPinballGame->eggCaveExitDelayTimer--; } else { - sub_23954(); - gCurrentPinballGame->unk2DA = 0; - gCurrentPinballGame->unk2D0 = 0; + InitEggModeAnimation(); + gCurrentPinballGame->eggCaveState = 0; + gCurrentPinballGame->eggDeliveryState = 0; } } else { gCurrentPinballGame->ball->positionQ0.x = 88; - gCurrentPinballGame->ball->positionQ0.y = 163 - gCurrentPinballGame->unk2DE / 3; - gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->ball->positionQ0.y = 163 - gCurrentPinballGame->eggCaveLiftTimer / 3; + gCurrentPinballGame->ball->spinSpeed = 0; gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2; gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2; gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ0.x << 8; gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ0.y << 8; - gCurrentPinballGame->unk5FA = 1; + gCurrentPinballGame->boardEntityActive = 1; } } - gCurrentPinballGame->unk2D4 = gUnknown_086AE0A4[gCurrentPinballGame->unk2DA].x; - gCurrentPinballGame->unk2D6 = gUnknown_086AE0A4[gCurrentPinballGame->unk2DA].y - gCurrentPinballGame->unk2DE / 3; - group->baseX = gCurrentPinballGame->unk2D4 - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk2D6 - gCurrentPinballGame->unk5A; - if (gCurrentPinballGame->unk13 < 3) + gCurrentPinballGame->cyndaquilCaveSpriteX = gCyndaquilCavePositions[gCurrentPinballGame->eggCaveState].x; + gCurrentPinballGame->cyndaquilCaveSpriteY = gCyndaquilCavePositions[gCurrentPinballGame->eggCaveState].y - gCurrentPinballGame->eggCaveLiftTimer / 3; + group->baseX = gCurrentPinballGame->cyndaquilCaveSpriteX - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->cyndaquilCaveSpriteY - gCurrentPinballGame->cameraYOffset; + if (gCurrentPinballGame->boardState < 3) { - if (gCurrentPinballGame->unk2DA == 3 && gCurrentPinballGame->unk2D0 != 2) - gCurrentPinballGame->unk728 = 1; + if (gCurrentPinballGame->eggCaveState == 3 && gCurrentPinballGame->eggDeliveryState != 2) + gCurrentPinballGame->catchArrowPaletteActive = 1; else - gCurrentPinballGame->unk728 = 0; + gCurrentPinballGame->catchArrowPaletteActive = 0; } else { - gCurrentPinballGame->unk728 = 0; + gCurrentPinballGame->catchArrowPaletteActive = 0; } - if (gCurrentPinballGame->unk2DE) + if (gCurrentPinballGame->eggCaveLiftTimer) { - gCurrentPinballGame->unk2DE--; + gCurrentPinballGame->eggCaveLiftTimer--; priority = 2; } } else { - if (gCurrentPinballGame->unk1EC == 3) + if (gCurrentPinballGame->eggAnimationPhase == 3) { - gCurrentPinballGame->unk728 = 0; - gCurrentPinballGame->unk1EC = 4; - gCurrentPinballGame->unk1ED = 8; - gCurrentPinballGame->unk1F0 = 0; + gCurrentPinballGame->catchArrowPaletteActive = 0; + gCurrentPinballGame->eggAnimationPhase = 4; + gCurrentPinballGame->eggAnimFrameIndex = 8; + gCurrentPinballGame->eggFrameTimer = 0; } - gCurrentPinballGame->unk2D4 = 0; - gCurrentPinballGame->unk2D6 = 0; + gCurrentPinballGame->cyndaquilCaveSpriteX = 0; + gCurrentPinballGame->cyndaquilCaveSpriteY = 0; group->baseX = 0; group->baseY = 160; } @@ -1690,55 +1690,55 @@ void sub_23E18(void) } } -void sub_242B4(void) +void CleanupEggModeState(void) { s16 i; if (gMain.selectedField == FIELD_RUBY) - gCurrentPinballGame->unk2D0 = 1; + gCurrentPinballGame->eggDeliveryState = 1; else - gCurrentPinballGame->unk343 = 1; + gCurrentPinballGame->holeCaptureReady = 1; - gCurrentPinballGame->unk5A5 = 0; - sub_1C7F4(0, 0); - gCurrentPinballGame->unk6C4 = 0; + gCurrentPinballGame->creatureHitCount = 0; + LoadPortraitGraphics(0, 0); + gCurrentPinballGame->portraitDisplayState = 0; for (i = 0; i < 3; i++) { - if (i < gCurrentPinballGame->unk723) - gCurrentPinballGame->unk71D[i] = 1; + if (i < gCurrentPinballGame->evoItemCount) + gCurrentPinballGame->catchLights[i] = 1; else - gCurrentPinballGame->unk71D[i] = 0; + gCurrentPinballGame->catchLights[i] = 0; } } -void sub_24350(void) +void InitEggMode(void) { - gCurrentPinballGame->unk17 = 0; - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk724 = 1800; - gCurrentPinballGame->unk5A5 = 0; - gCurrentPinballGame->unk1F8 = 0; - gCurrentPinballGame->unk1FA = 0; + gCurrentPinballGame->boardSubState = 0; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->modeTimeRemaining = 1800; + gCurrentPinballGame->creatureHitCount = 0; + gCurrentPinballGame->creatureVelX = 0; + gCurrentPinballGame->creatureVelY = 0; if (gMain.selectedField == FIELD_RUBY) { - gCurrentPinballGame->unk1FC = 750; - gCurrentPinballGame->unk200 = 1040; + gCurrentPinballGame->catchCreatureX = 750; + gCurrentPinballGame->catchCreatureY = 1040; } else { - gCurrentPinballGame->unk1FC = 1960; - gCurrentPinballGame->unk200 = 300; + gCurrentPinballGame->catchCreatureX = 1960; + gCurrentPinballGame->catchCreatureY = 300; } - gCurrentPinballGame->unk204 = 0; - gCurrentPinballGame->unk206 = 0; - gCurrentPinballGame->unk1F8 = 0; - gCurrentPinballGame->unk1FA = 0; - gCurrentPinballGame->unk5AA = 0; - gCurrentPinballGame->unk5A9 = 0; + gCurrentPinballGame->creatureWaypointIndex = 0; + gCurrentPinballGame->waypointSubTimer = 0; + gCurrentPinballGame->creatureVelX = 0; + gCurrentPinballGame->creatureVelY = 0; + gCurrentPinballGame->creatureHitCooldown = 0; + gCurrentPinballGame->captureFlashTimer = 0; } -void sub_24408(void) +void UpdateEggMode(void) { s16 i; struct SpriteGroup *group; @@ -1755,88 +1755,88 @@ void sub_24408(void) int xx, yy; int squaredMagnitude; - group = gMain.unk44[41]; + group = gMain.fieldSpriteGroups[41]; priority = 1; - switch (gCurrentPinballGame->unk17) + switch (gCurrentPinballGame->boardSubState) { case 0: - gCurrentPinballGame->unk6C4 = 3; - gMain.unk44[41]->available = 1; - gCurrentPinballGame->unk17++; + gCurrentPinballGame->portraitDisplayState = 3; + gMain.fieldSpriteGroups[41]->available = 1; + gCurrentPinballGame->boardSubState++; break; case 1: - if (gUnknown_086AD52C[gCurrentPinballGame->unk204][1] > gCurrentPinballGame->unk206) + if (gEggHatchAnimData[gCurrentPinballGame->creatureWaypointIndex][1] > gCurrentPinballGame->waypointSubTimer) { - gCurrentPinballGame->unk206++; + gCurrentPinballGame->waypointSubTimer++; } else { - gCurrentPinballGame->unk204++; - gCurrentPinballGame->unk206 = 0; + gCurrentPinballGame->creatureWaypointIndex++; + gCurrentPinballGame->waypointSubTimer = 0; if (gMain.selectedField == FIELD_RUBY) { - if (gCurrentPinballGame->unk204 > 13) + if (gCurrentPinballGame->creatureWaypointIndex > 13) { - gCurrentPinballGame->unk204 = 0; - gCurrentPinballGame->unk17 = 3; - gCurrentPinballGame->unk1F8 = 0; - gCurrentPinballGame->unk1FA = 0; + gCurrentPinballGame->creatureWaypointIndex = 0; + gCurrentPinballGame->boardSubState = 3; + gCurrentPinballGame->creatureVelX = 0; + gCurrentPinballGame->creatureVelY = 0; } - if (gCurrentPinballGame->unk204 == 12) + if (gCurrentPinballGame->creatureWaypointIndex == 12) { - if (gCurrentPinballGame->unk206 == 0) + if (gCurrentPinballGame->waypointSubTimer == 0) m4aSongNumStart(MUS_EGG_MODE); } - if (gCurrentPinballGame->unk204 == 10) + if (gCurrentPinballGame->creatureWaypointIndex == 10) { - gCurrentPinballGame->unk29C = 140; - PlayCry_Normal(gSpeciesInfo[gCurrentPinballGame->currentSpecies].mainSeriesIndexNumber, 0); + gCurrentPinballGame->bgmFadeTimer = 140; + PlayCry_Normal(gSpeciesInfo[gCurrentPinballGame->currentSpecies].speciesIdRS, 0); } - if (gCurrentPinballGame->unk204 == 12) + if (gCurrentPinballGame->creatureWaypointIndex == 12) { - gCurrentPinballGame->unk1F8 = -8; - gCurrentPinballGame->unk1FA = -30; + gCurrentPinballGame->creatureVelX = -8; + gCurrentPinballGame->creatureVelY = -30; } else { - gCurrentPinballGame->unk1F8 = 0; - gCurrentPinballGame->unk1FA = 0; + gCurrentPinballGame->creatureVelX = 0; + gCurrentPinballGame->creatureVelY = 0; } } else { - if (gCurrentPinballGame->unk204 > 9) + if (gCurrentPinballGame->creatureWaypointIndex > 9) { - gCurrentPinballGame->unk206 = 0; - gCurrentPinballGame->unk204 = 10; - gCurrentPinballGame->unk17 = 2; - gCurrentPinballGame->unk1F8 = 0; - gCurrentPinballGame->unk1FA = 0; + gCurrentPinballGame->waypointSubTimer = 0; + gCurrentPinballGame->creatureWaypointIndex = 10; + gCurrentPinballGame->boardSubState = 2; + gCurrentPinballGame->creatureVelX = 0; + gCurrentPinballGame->creatureVelY = 0; } } } - var0 = gUnknown_086AD52C[gCurrentPinballGame->unk204][0]; - var1 = gUnknown_086AD52C[gCurrentPinballGame->unk204][2]; - if (gCurrentPinballGame->unk204 == 12) + var0 = gEggHatchAnimData[gCurrentPinballGame->creatureWaypointIndex][0]; + var1 = gEggHatchAnimData[gCurrentPinballGame->creatureWaypointIndex][2]; + if (gCurrentPinballGame->creatureWaypointIndex == 12) { - gCurrentPinballGame->unk1FA += 2; - gCurrentPinballGame->unk1FC += gCurrentPinballGame->unk1F8; - gCurrentPinballGame->unk200 += gCurrentPinballGame->unk1FA; + gCurrentPinballGame->creatureVelY += 2; + gCurrentPinballGame->catchCreatureX += gCurrentPinballGame->creatureVelX; + gCurrentPinballGame->catchCreatureY += gCurrentPinballGame->creatureVelY; } - group->baseX = gCurrentPinballGame->unk1FC / 10 - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk200 / 10 - gCurrentPinballGame->unk5A; - DmaCopy16(3, gUnknown_0202C7A0[var0], (void *)0x060112A0, 0x120); - DmaCopy16(3, gUnknown_020315D0, (void *)0x050003A0, 0x20); + group->baseX = gCurrentPinballGame->catchCreatureX / 10 - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->catchCreatureY / 10 - gCurrentPinballGame->cameraYOffset; + DmaCopy16(3, gCatchSpriteFrameBuffer[var0], (void *)0x060112A0, 0x120); + DmaCopy16(3, gCatchSpritePaletteBuffer, (void *)0x050003A0, 0x20); for (i = 0; i < 4; i++) { oamSimple = &group->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B4B0E[var1][i]; + src = gCatchCreatureOamFramesets[var1][i]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -1847,39 +1847,39 @@ void sub_24408(void) } break; case 2: - if (gCurrentPinballGame->unk206 < 240) + if (gCurrentPinballGame->waypointSubTimer < 240) { priority = 1; - if (gCurrentPinballGame->unk206 == 0) + if (gCurrentPinballGame->waypointSubTimer == 0) { - gCurrentPinballGame->unk346 = 3; + gCurrentPinballGame->holeLetterSystemState = 3; m4aSongNumStart(SE_UNKNOWN_0xDD); } var0 = 0; } - else if (gCurrentPinballGame->unk206 == 240) + else if (gCurrentPinballGame->waypointSubTimer == 240) { - gCurrentPinballGame->unk1FC = 2260; - gCurrentPinballGame->unk200 = 740; - gCurrentPinballGame->unk204 = 0; + gCurrentPinballGame->catchCreatureX = 2260; + gCurrentPinballGame->catchCreatureY = 740; + gCurrentPinballGame->creatureWaypointIndex = 0; priority = 2; var0 = 0; m4aSongNumStart(MUS_EGG_MODE); } else { - tempVec.x = gUnknown_086AD750[gCurrentPinballGame->unk204].x - 120 - gCurrentPinballGame->unk1FC; - tempVec.y = gUnknown_086AD750[gCurrentPinballGame->unk204].y - 160 - gCurrentPinballGame->unk200; + tempVec.x = gSapphireEggWaypoints[gCurrentPinballGame->creatureWaypointIndex].x - 120 - gCurrentPinballGame->catchCreatureX; + tempVec.y = gSapphireEggWaypoints[gCurrentPinballGame->creatureWaypointIndex].y - 160 - gCurrentPinballGame->catchCreatureY; xx = tempVec.x * tempVec.x; yy = tempVec.y * tempVec.y; squaredMagnitude = xx + yy; angle = ArcTan2(tempVec.x,-tempVec.y); - if (gCurrentPinballGame->unk206 < 324) + if (gCurrentPinballGame->waypointSubTimer < 324) priority = 2; else priority = 1; - if (gCurrentPinballGame->unk204 < 4) + if (gCurrentPinballGame->creatureWaypointIndex < 4) { var0 = 0; tempVec2.x = (Cos(angle) * 14) / 20000; @@ -1887,43 +1887,43 @@ void sub_24408(void) } else { - var0 = gUnknown_086AD788[angle / 0x2000] + (gMain.systemFrameCount % 24) / 8; + var0 = gAngleToDirectionTable[angle / 0x2000] + (gMain.systemFrameCount % 24) / 8; tempVec2.x = (Cos(angle) * 7) / 20000; tempVec2.y = -(Sin(angle) * 7) / 20000; } - gCurrentPinballGame->unk1FC += tempVec2.x; - gCurrentPinballGame->unk200 += tempVec2.y; + gCurrentPinballGame->catchCreatureX += tempVec2.x; + gCurrentPinballGame->catchCreatureY += tempVec2.y; if (squaredMagnitude < 2500) { - if (gCurrentPinballGame->unk204 < 6) + if (gCurrentPinballGame->creatureWaypointIndex < 6) { - gCurrentPinballGame->unk204++; + gCurrentPinballGame->creatureWaypointIndex++; } else { - gCurrentPinballGame->unk204 = 3; - gCurrentPinballGame->unk17 = 3; - gCurrentPinballGame->unk1F8 = 0; - gCurrentPinballGame->unk1FA = 0; + gCurrentPinballGame->creatureWaypointIndex = 3; + gCurrentPinballGame->boardSubState = 3; + gCurrentPinballGame->creatureVelX = 0; + gCurrentPinballGame->creatureVelY = 0; } } - if (gCurrentPinballGame->unk206 < 380) + if (gCurrentPinballGame->waypointSubTimer < 380) { - gCurrentPinballGame->unkE6++; + gCurrentPinballGame->cameraYAdjust++; } - else if (gCurrentPinballGame->unk206 >= 400) + else if (gCurrentPinballGame->waypointSubTimer >= 400) { - if (gCurrentPinballGame->unkE6 > 0) - gCurrentPinballGame->unkE6--; + if (gCurrentPinballGame->cameraYAdjust > 0) + gCurrentPinballGame->cameraYAdjust--; } } - DmaCopy16(3, gUnknown_0202C7A0[var0], (void *)0x060112A0, 0x120); - gCurrentPinballGame->unk206++; - group->baseX = gCurrentPinballGame->unk1FC / 10 - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk200 / 10 - gCurrentPinballGame->unk5A; + DmaCopy16(3, gCatchSpriteFrameBuffer[var0], (void *)0x060112A0, 0x120); + gCurrentPinballGame->waypointSubTimer++; + group->baseX = gCurrentPinballGame->catchCreatureX / 10 - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->catchCreatureY / 10 - gCurrentPinballGame->cameraYOffset; if (group->baseY > 180) group->baseY = 180; else if (group->baseY < -30) @@ -1938,74 +1938,74 @@ void sub_24408(void) } break; case 3: - tempVec.x = gUnknown_086AD580[gMain.selectedField][gCurrentPinballGame->unk204].x - 120 - gCurrentPinballGame->unk1FC; - tempVec.y = gUnknown_086AD580[gMain.selectedField][gCurrentPinballGame->unk204].y - 160 - gCurrentPinballGame->unk200; + tempVec.x = gEggWalkPathWaypoints[gMain.selectedField][gCurrentPinballGame->creatureWaypointIndex].x - 120 - gCurrentPinballGame->catchCreatureX; + tempVec.y = gEggWalkPathWaypoints[gMain.selectedField][gCurrentPinballGame->creatureWaypointIndex].y - 160 - gCurrentPinballGame->catchCreatureY; xx = tempVec.x * tempVec.x; yy = tempVec.y * tempVec.y; squaredMagnitude = xx + yy; angle = ArcTan2(tempVec.x, -tempVec.y); tempVec2.x = (Cos(angle) * 7) / 20000; tempVec2.y = -(Sin(angle) * 7) / 20000; - if (gCurrentPinballGame->unk5A9) + if (gCurrentPinballGame->captureFlashTimer) { - gCurrentPinballGame->unk5A9--; + gCurrentPinballGame->captureFlashTimer--; var0 = 14; } else { - if (gSpeciesInfo[gCurrentPinballGame->currentSpecies].unk13) + if (gSpeciesInfo[gCurrentPinballGame->currentSpecies].specialEggFlag) { - var0 = gUnknown_086AD788[angle / 0x2000] + (gMain.systemFrameCount % 24) / 8; + var0 = gAngleToDirectionTable[angle / 0x2000] + (gMain.systemFrameCount % 24) / 8; } else { - var0 = gUnknown_086AD788[angle / 0x2000] + (gMain.systemFrameCount % 32) / 8 - ((gMain.systemFrameCount % 32) / 24) * 2; + var0 = gAngleToDirectionTable[angle / 0x2000] + (gMain.systemFrameCount % 32) / 8 - ((gMain.systemFrameCount % 32) / 24) * 2; } - gCurrentPinballGame->unk1FC += tempVec2.x; - gCurrentPinballGame->unk200 += tempVec2.y; + gCurrentPinballGame->catchCreatureX += tempVec2.x; + gCurrentPinballGame->catchCreatureY += tempVec2.y; } if (squaredMagnitude < 2500) { - if (gCurrentPinballGame->unk204 < 28) + if (gCurrentPinballGame->creatureWaypointIndex < 28) { - gCurrentPinballGame->unk204++; + gCurrentPinballGame->creatureWaypointIndex++; } else { m4aMPlayAllStop(); m4aSongNumStart(MUS_END_OF_BALL); - gCurrentPinballGame->unk18 = 200; - gCurrentPinballGame->unk17 = 6; + gCurrentPinballGame->stageTimer = 200; + gCurrentPinballGame->boardSubState = 6; } } if (gMain.selectedField == FIELD_RUBY) { - if (gCurrentPinballGame->unk204 > 26) + if (gCurrentPinballGame->creatureWaypointIndex > 26) priority = 2; else priority = 1; } - else if (gCurrentPinballGame->unk204 > 27) + else if (gCurrentPinballGame->creatureWaypointIndex > 27) { priority = 3; - gCurrentPinballGame->unk367 = 1; + gCurrentPinballGame->eggHatchShockWallOverride = 1; } else { priority = 1; } - group->baseX = gCurrentPinballGame->unk1FC / 10 - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk200 / 10 - gCurrentPinballGame->unk5A;; + group->baseX = gCurrentPinballGame->catchCreatureX / 10 - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->catchCreatureY / 10 - gCurrentPinballGame->cameraYOffset;; if (group->baseY > 180) group->baseY = 180; else if (group->baseY < -30) group->baseY = -30; - DmaCopy16(3, gUnknown_0202C7A0[var0], (void *)0x060112A0, 0x120); + DmaCopy16(3, gCatchSpriteFrameBuffer[var0], (void *)0x060112A0, 0x120); for (i = 0; i < 4; i++) { oamSimple = &group->oam[i]; @@ -2014,28 +2014,28 @@ void sub_24408(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - if (gCurrentPinballGame->unk5AA) + if (gCurrentPinballGame->creatureHitCooldown) { - gCurrentPinballGame->unk5AA--; + gCurrentPinballGame->creatureHitCooldown--; } else { - tempVec.x = gCurrentPinballGame->ball->positionQ0.x - (gCurrentPinballGame->unk1FC / 10 + 12); - tempVec.y = gCurrentPinballGame->ball->positionQ0.y - (gCurrentPinballGame->unk200 / 10 + 14); + tempVec.x = gCurrentPinballGame->ball->positionQ0.x - (gCurrentPinballGame->catchCreatureX / 10 + 12); + tempVec.y = gCurrentPinballGame->ball->positionQ0.y - (gCurrentPinballGame->catchCreatureY / 10 + 14); xx = tempVec.x * tempVec.x; yy = tempVec.y * tempVec.y; squaredMagnitude = xx + yy; if (squaredMagnitude < 82) { - gCurrentPinballGame->unk5A5++; - gCurrentPinballGame->unk5AA = 4; - gCurrentPinballGame->unk5A9 = 20; - if (gCurrentPinballGame->unk5A5 > 1) - gCurrentPinballGame->unk17 = 4; + gCurrentPinballGame->creatureHitCount++; + gCurrentPinballGame->creatureHitCooldown = 4; + gCurrentPinballGame->captureFlashTimer = 20; + if (gCurrentPinballGame->creatureHitCount > 1) + gCurrentPinballGame->boardSubState = 4; m4aSongNumStart(SE_UNKNOWN_0x75); angle2 = ArcTan2(-gCurrentPinballGame->ball->velocity.x, gCurrentPinballGame->ball->velocity.y); - if (gCurrentPinballGame->unk5A5 > 1) + if (gCurrentPinballGame->creatureHitCount > 1) { gCurrentPinballGame->ball->velocity.x = (Cos(angle2) * 400) / 20000; gCurrentPinballGame->ball->velocity.y = -(Sin(angle2) * 400) / 20000; @@ -2051,25 +2051,25 @@ void sub_24408(void) } break; case 4: - gCurrentPinballGame->unkE4 = 9; - DmaCopy16(3, gUnknown_086ACF80, (void *)0x050003E0, 0x20); - DmaCopy16(3, gUnknown_081428D4, (void *)0x06015800, 0x1C00); - DmaCopy16(3, &gUnknown_08138014[gCurrentPinballGame->ballUpgradeType * 0x200], (void *)0x060164C0, 0x80); - DmaCopy16(3, &gUnknown_08138014[(gCurrentPinballGame->ballUpgradeType * 8 + 4) * 0x40], (void *)0x06016760, 0x80); - gCurrentPinballGame->unk5A6 = 0; - gCurrentPinballGame->unk5A4 = 2; - gCurrentPinballGame->unk288 = gCurrentPinballGame->unk1FC / 10 + 8; - gCurrentPinballGame->unk28A = gCurrentPinballGame->unk200 / 10 - 31; + gCurrentPinballGame->activePortraitType = 9; + DmaCopy16(3, gCapturePalette, (void *)0x050003E0, 0x20); + DmaCopy16(3, gCaptureScreenTilesGfx, (void *)0x06015800, 0x1C00); + DmaCopy16(3, &gBallUpgradeTilesGfx[gCurrentPinballGame->ballUpgradeType * 0x200], (void *)0x060164C0, 0x80); + DmaCopy16(3, &gBallUpgradeTilesGfx[(gCurrentPinballGame->ballUpgradeType * 8 + 4) * 0x40], (void *)0x06016760, 0x80); + gCurrentPinballGame->captureSequenceFrame = 0; + gCurrentPinballGame->captureState = 2; + gCurrentPinballGame->catchTargetX = gCurrentPinballGame->catchCreatureX / 10 + 8; + gCurrentPinballGame->catchTargetY = gCurrentPinballGame->catchCreatureY / 10 - 31; for (i = 0; i < 6; i++) - gCurrentPinballGame->unk6D3[i] = 13; + gCurrentPinballGame->hatchTilePalette[i] = 13; - gCurrentPinballGame->unk17++; - group->baseX = gCurrentPinballGame->unk1FC / 10 - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk200 / 10 - gCurrentPinballGame->unk5A; + gCurrentPinballGame->boardSubState++; + group->baseX = gCurrentPinballGame->catchCreatureX / 10 - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->catchCreatureY / 10 - gCurrentPinballGame->cameraYOffset; if (group->baseY > 180) group->baseY = 180; - DmaCopy16(3, gUnknown_0202D760, (void *)0x060112A0, 0x120); + DmaCopy16(3, gCatchAnimTileBuffer, (void *)0x060112A0, 0x120); for (i = 0; i < 4; i++) { oamSimple = &group->oam[i]; @@ -2078,18 +2078,18 @@ void sub_24408(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->stageTimer = 0; break; case 5: - if (gCurrentPinballGame->unk5A8 < 17) + if (gCurrentPinballGame->captureSequenceTimer < 17) priority = 2; else priority = 0; if (group->available) { - group->baseX = gCurrentPinballGame->unk1FC / 10 - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk200 / 10 - gCurrentPinballGame->unk5A; + group->baseX = gCurrentPinballGame->catchCreatureX / 10 - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->catchCreatureY / 10 - gCurrentPinballGame->cameraYOffset; for (i = 0; i < 4; i++) { oamSimple = &group->oam[i]; @@ -2098,9 +2098,9 @@ void sub_24408(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - DmaCopy16(3, gUnknown_0202D760, (void *)0x060112A0, 0x120); - if (gCurrentPinballGame->unk5A8 == 23) - gMain.unk44[41]->available = 0; + DmaCopy16(3, gCatchAnimTileBuffer, (void *)0x060112A0, 0x120); + if (gCurrentPinballGame->captureSequenceTimer == 23) + gMain.fieldSpriteGroups[41]->available = 0; } break; case 6: @@ -2115,39 +2115,39 @@ void sub_24408(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } } - gMain.unk44[41]->available = 0; - gCurrentPinballGame->unk17++; + gMain.fieldSpriteGroups[41]->available = 0; + gCurrentPinballGame->boardSubState++; break; case 7: - sub_242B4(); - gCurrentPinballGame->unk17++; - gCurrentPinballGame->unk367 = 0; + CleanupEggModeState(); + gCurrentPinballGame->boardSubState++; + gCurrentPinballGame->eggHatchShockWallOverride = 0; break; case 8: - if (gCurrentPinballGame->unk18) + if (gCurrentPinballGame->stageTimer) { - gCurrentPinballGame->unk18--; + gCurrentPinballGame->stageTimer--; } else { - if (gCurrentPinballGame->unk71D[2] == 1) - sub_19B64(3); + if (gCurrentPinballGame->catchLights[2] == 1) + RequestBoardStateTransition(3); else - sub_19B64(1); + RequestBoardStateTransition(1); - gCurrentPinballGame->unk17 = 0; + gCurrentPinballGame->boardSubState = 0; } break; } } -void sub_2530C(void) +void DisableHatchTileDisplay(void) { s16 i; struct SpriteGroup *group; struct OamDataSimple *oamSimple; - group = gMain.unk44[18]; + group = gMain.fieldSpriteGroups[18]; if (group->available) { for (i = 0; i < 6; i++) @@ -2157,8 +2157,8 @@ void sub_2530C(void) gOamBuffer[oamSimple->oamId].y = 180; } } - gMain.unk44[18]->available = 0; - group = gMain.unk44[12]; + gMain.fieldSpriteGroups[18]->available = 0; + group = gMain.fieldSpriteGroups[12]; if (group->available) { for (i = 0; i < 6; i++) @@ -2168,8 +2168,8 @@ void sub_2530C(void) gOamBuffer[oamSimple->oamId].y = 180; } } - gMain.unk44[12]->available = 0; - gCurrentPinballGame->unkE4 = 0; + gMain.fieldSpriteGroups[12]->available = 0; + gCurrentPinballGame->activePortraitType = 0; } void RevealSequentialHatchTiles(void) @@ -2182,17 +2182,17 @@ void RevealSequentialHatchTiles(void) int var1; var1 = 1; - gMain.unk44[18]->available = 1; + gMain.fieldSpriteGroups[18]->available = 1; if (gCurrentPinballGame->hatchFrameId > 0) - sub_2971C(); + UpdateSequentialTileParticles(); if (gCurrentPinballGame->hatchSequentialTilesRevealed < gCurrentPinballGame->hatchTilesBoardAcknowledged) { if (gCurrentPinballGame->hatchFrameId == 0 && gCurrentPinballGame->hatchSequentialTileRevealFrameAnimTimer == 0) { - gCurrentPinballGame->unkE4 = 11; - DmaCopy16(3, gUnknown_083A05CC, (void *)0x050003C0, 0x20); - DmaCopy16(3, gUnknown_0839DDAC, (void *)0x06015800, 0x2800); + gCurrentPinballGame->activePortraitType = 11; + DmaCopy16(3, gHatchRevealPalette, (void *)0x050003C0, 0x20); + DmaCopy16(3, gHatchRevealTilesGfx, (void *)0x06015800, 0x2800); } if (gHatchSequentialTileFramesetData[gCurrentPinballGame->hatchFrameId][1] > gCurrentPinballGame->hatchSequentialTileRevealFrameAnimTimer) @@ -2208,43 +2208,43 @@ void RevealSequentialHatchTiles(void) gCurrentPinballGame->hatchSequentialTilesRevealed++; gCurrentPinballGame->hatchFrameId = 0; var1 = 0; - gCurrentPinballGame->unk6C9--; + gCurrentPinballGame->hatchTilesRemaining--; if (gCurrentPinballGame->hatchSequentialTilesRevealed == gCurrentPinballGame->hatchTilesBoardAcknowledged) { - if (gCurrentPinballGame->unk6C9 >= 0) - gCurrentPinballGame->unkE4 = 0; + if (gCurrentPinballGame->hatchTilesRemaining >= 0) + gCurrentPinballGame->activePortraitType = 0; } - if (gCurrentPinballGame->unk6C9 < 0) + if (gCurrentPinballGame->hatchTilesRemaining < 0) { gCurrentPinballGame->hatchTilesBoardAcknowledged = 0; gCurrentPinballGame->hatchSequentialTilesRevealed = 0; gCurrentPinballGame->hatchTilesBumperAcknowledged = 0; for (i = 0; i < 6; i++) - gCurrentPinballGame->unk6CD[i] = i; + gCurrentPinballGame->hatchTileShufflePool[i] = i; var0 = gMain.systemFrameCount % 6; - gCurrentPinballGame->unk6C9 = 5; - gCurrentPinballGame->unk17++; - gMain.unk44[18]->available = 0; + gCurrentPinballGame->hatchTilesRemaining = 5; + gCurrentPinballGame->boardSubState++; + gMain.fieldSpriteGroups[18]->available = 0; } - else if (gCurrentPinballGame->unk6C9 == 0) + else if (gCurrentPinballGame->hatchTilesRemaining == 0) { var0 = 0; } else { - var0 = gMain.systemFrameCount % gCurrentPinballGame->unk6C9; + var0 = gMain.systemFrameCount % gCurrentPinballGame->hatchTilesRemaining; } - gCurrentPinballGame->unk6C8 = gCurrentPinballGame->unk6CD[var0]; - for (i = var0; i < gCurrentPinballGame->unk6C9; i++) - gCurrentPinballGame->unk6CD[i] = gCurrentPinballGame->unk6CD[i + 1]; + gCurrentPinballGame->hatchGridCellIndex = gCurrentPinballGame->hatchTileShufflePool[var0]; + for (i = var0; i < gCurrentPinballGame->hatchTilesRemaining; i++) + gCurrentPinballGame->hatchTileShufflePool[i] = gCurrentPinballGame->hatchTileShufflePool[i + 1]; } else { if (gCurrentPinballGame->hatchFrameId == 1) - gCurrentPinballGame->unk6D3[gCurrentPinballGame->unk6C8] = 13; + gCurrentPinballGame->hatchTilePalette[gCurrentPinballGame->hatchGridCellIndex] = 13; } } } @@ -2256,17 +2256,17 @@ void RevealSequentialHatchTiles(void) if (gCurrentPinballGame->hatchFrameId == 1) { m4aSongNumStart(SE_UNKNOWN_0x8C); - sub_29664(); + InitSequentialTileParticles(); } if (gCurrentPinballGame->hatchFrameId == 12) var1 = 0; - group = gMain.unk44[18]; + group = gMain.fieldSpriteGroups[18]; if (var1) { - group->baseX = (gCurrentPinballGame->unk6C8 % 3) * 16 - (gCurrentPinballGame->unk58 - 96); - group->baseY = (gCurrentPinballGame->unk6C8 / 3) * 16 - (gCurrentPinballGame->unk5A - 300); + group->baseX = (gCurrentPinballGame->hatchGridCellIndex % 3) * 16 - (gCurrentPinballGame->cameraXOffset - 96); + group->baseY = (gCurrentPinballGame->hatchGridCellIndex / 3) * 16 - (gCurrentPinballGame->cameraYOffset - 300); } else { @@ -2298,51 +2298,51 @@ void RevealAllHatchTilesAtOnce(void) u16 *dst; s16 var0; - switch (gCurrentPinballGame->unk602) + switch (gCurrentPinballGame->hatchRevealPhase) { case 0: - if (gCurrentPinballGame->unk604 < 60) + if (gCurrentPinballGame->revealAnimFrameCounter < 60) { - gCurrentPinballGame->unk604++; + gCurrentPinballGame->revealAnimFrameCounter++; } else { - gCurrentPinballGame->unk602++; - gCurrentPinballGame->unk604 = 0; + gCurrentPinballGame->hatchRevealPhase++; + gCurrentPinballGame->revealAnimFrameCounter = 0; } gMain.blendControl = 0xCE; break; case 1: - gCurrentPinballGame->unkE4 = 5; - DmaCopy16(3, gUnknown_083A07CC, (void *)0x06015800, 0x2000); - DmaCopy16(3, gUnknown_083A27EC, (void *)0x050003C0, 0x20); - gMain.unk44[35]->available = 1; + gCurrentPinballGame->activePortraitType = 5; + DmaCopy16(3, gHatchStartTilesGfx, (void *)0x06015800, 0x2000); + DmaCopy16(3, gHatchStartPalette, (void *)0x050003C0, 0x20); + gMain.fieldSpriteGroups[35]->available = 1; m4aSongNumStart(SE_UNKNOWN_0x8D); - gCurrentPinballGame->unk602++; - gCurrentPinballGame->unk604 = 0; - gCurrentPinballGame->unk603 = 0; + gCurrentPinballGame->hatchRevealPhase++; + gCurrentPinballGame->revealAnimFrameCounter = 0; + gCurrentPinballGame->revealFramesetIndex = 0; break; case 2: - if (gUnknown_086AE0C0[gCurrentPinballGame->unk603] > gCurrentPinballGame->unk604) + if (gHatchRevealSparkleTimings[gCurrentPinballGame->revealFramesetIndex] > gCurrentPinballGame->revealAnimFrameCounter) { - gCurrentPinballGame->unk604++; + gCurrentPinballGame->revealAnimFrameCounter++; } else { - gCurrentPinballGame->unk604 = 0; - gCurrentPinballGame->unk603++; - if (gCurrentPinballGame->unk603 > 7) + gCurrentPinballGame->revealAnimFrameCounter = 0; + gCurrentPinballGame->revealFramesetIndex++; + if (gCurrentPinballGame->revealFramesetIndex > 7) { - gCurrentPinballGame->unk603 = 7; - gCurrentPinballGame->unk602++; - gMain.unk44[35]->available = 0; + gCurrentPinballGame->revealFramesetIndex = 7; + gCurrentPinballGame->hatchRevealPhase++; + gMain.fieldSpriteGroups[35]->available = 0; } } - var0 = gCurrentPinballGame->unk603; - group = gMain.unk44[35]; - group->baseX = 124 - gCurrentPinballGame->unk58; - group->baseY = 244 - gCurrentPinballGame->unk5A; + var0 = gCurrentPinballGame->revealFramesetIndex; + group = gMain.fieldSpriteGroups[35]; + group->baseX = 124 - gCurrentPinballGame->cameraXOffset; + group->baseY = 244 - gCurrentPinballGame->cameraYOffset; if (group->baseY >= 200) group->baseY = 200; @@ -2350,40 +2350,40 @@ void RevealAllHatchTilesAtOnce(void) { oamSimple = &group->oam[i]; dst = (u16 *)&gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_086B50AE[var0][i * 3 + 0]; - *dst++ = gUnknown_086B50AE[var0][i * 3 + 1]; - *dst++ = gUnknown_086B50AE[var0][i * 3 + 2]; + *dst++ = gHatchRevealOamFramesets[var0][i * 3 + 0]; + *dst++ = gHatchRevealOamFramesets[var0][i * 3 + 1]; + *dst++ = gHatchRevealOamFramesets[var0][i * 3 + 2]; gOamBuffer[oamSimple->oamId].x += group->baseX; gOamBuffer[oamSimple->oamId].y += group->baseY; } break; case 3: - gCurrentPinballGame->unkE4 = 6; - DmaCopy16(3, gUnknown_083A29EC, (void *)0x06015800, 0x800); - DmaCopy16(3, gUnknown_083A320C, (void *)0x050003C0, 0x20); - gMain.unk44[36]->available = 1; - gCurrentPinballGame->unk602++; - gCurrentPinballGame->unk604 = 0; - gCurrentPinballGame->unk1100 = 1; + gCurrentPinballGame->activePortraitType = 6; + DmaCopy16(3, gHatchStage2TilesGfx, (void *)0x06015800, 0x800); + DmaCopy16(3, gHatchStage2Palette, (void *)0x050003C0, 0x20); + gMain.fieldSpriteGroups[36]->available = 1; + gCurrentPinballGame->hatchRevealPhase++; + gCurrentPinballGame->revealAnimFrameCounter = 0; + gCurrentPinballGame->startButtonDisabled = 1; break; case 4: - var0 = gCurrentPinballGame->unk604 / 2; - if (gCurrentPinballGame->unk604 < 15) + var0 = gCurrentPinballGame->revealAnimFrameCounter / 2; + if (gCurrentPinballGame->revealAnimFrameCounter < 15) { - gCurrentPinballGame->unk604++; + gCurrentPinballGame->revealAnimFrameCounter++; } else { - gMain.unk44[36]->available = 0; - gCurrentPinballGame->unk602++; - gCurrentPinballGame->unk604 = 0; - gCurrentPinballGame->unk603 = 0; + gMain.fieldSpriteGroups[36]->available = 0; + gCurrentPinballGame->hatchRevealPhase++; + gCurrentPinballGame->revealAnimFrameCounter = 0; + gCurrentPinballGame->revealFramesetIndex = 0; } - group = gMain.unk44[36]; - group->baseX = 96 - gCurrentPinballGame->unk58; - group->baseY = 300 - gCurrentPinballGame->unk5A; + group = gMain.fieldSpriteGroups[36]; + group->baseX = 96 - gCurrentPinballGame->cameraXOffset; + group->baseY = 300 - gCurrentPinballGame->cameraYOffset; if (group->baseY >= 200) group->baseY = 200; @@ -2391,94 +2391,94 @@ void RevealAllHatchTilesAtOnce(void) { oamSimple = &group->oam[i]; dst = (u16 *)&gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_086B4F6A[var0][i * 3 + 0]; - *dst++ = gUnknown_086B4F6A[var0][i * 3 + 1]; - *dst++ = gUnknown_086B4F6A[var0][i * 3 + 2]; + *dst++ = gHatchFullRevealOamFramesets[var0][i * 3 + 0]; + *dst++ = gHatchFullRevealOamFramesets[var0][i * 3 + 1]; + *dst++ = gHatchFullRevealOamFramesets[var0][i * 3 + 2]; gOamBuffer[oamSimple->oamId].x += group->baseX; gOamBuffer[oamSimple->oamId].y += group->baseY; } break; case 5: - gCurrentPinballGame->unkE4 = 7; - DmaCopy16(3, gUnknown_083A340C, (void *)0x06015800, 0x2000); - DmaCopy16(3, gUnknown_083A542C, (void *)0x050003C0, 0x20); - gCurrentPinballGame->unk602++; - sub_29924(); + gCurrentPinballGame->activePortraitType = 7; + DmaCopy16(3, gHatchStage3TilesGfx, (void *)0x06015800, 0x2000); + DmaCopy16(3, gHatchStage3Palette, (void *)0x050003C0, 0x20); + gCurrentPinballGame->hatchRevealPhase++; + InitBurstTileParticles(); m4aSongNumStart(SE_UNKNOWN_0x8E); break; case 6: gMain.blendBrightness = 0; gMain.blendControl = ((REG_DISPCNT & (DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON)) >> 8) | 0xA0; - if (gCurrentPinballGame->unk604 < 73) + if (gCurrentPinballGame->revealAnimFrameCounter < 73) { s16 var1; - if (gCurrentPinballGame->unk604 < 8) + if (gCurrentPinballGame->revealAnimFrameCounter < 8) { gMain.blendBrightness = 16; } else { for (i = 0; i < 6; i++) - gCurrentPinballGame->unk6D3[i] = 13; + gCurrentPinballGame->hatchTilePalette[i] = 13; - gMain.blendBrightness = ((8 - gCurrentPinballGame->unk604) / 4) + 16; + gMain.blendBrightness = ((8 - gCurrentPinballGame->revealAnimFrameCounter) / 4) + 16; } } - if (gCurrentPinballGame->unk604 < 72) + if (gCurrentPinballGame->revealAnimFrameCounter < 72) { - gCurrentPinballGame->unk604++; + gCurrentPinballGame->revealAnimFrameCounter++; } else { - gCurrentPinballGame->unk602++; - gCurrentPinballGame->unk604 = 0; - gCurrentPinballGame->unk603 = 0; + gCurrentPinballGame->hatchRevealPhase++; + gCurrentPinballGame->revealAnimFrameCounter = 0; + gCurrentPinballGame->revealFramesetIndex = 0; } - if (gCurrentPinballGame->unk604 > 8U) + if (gCurrentPinballGame->revealAnimFrameCounter > 8U) { if (gCurrentPinballGame->hatchSequentialTileRevealFrameAnimTimer < 0x7000) - sub_29A6C(); + UpdateBurstTileParticles(); } break; case 7: - gCurrentPinballGame->unkE4 = 8; - DmaCopy16(3, gUnknown_083A562C, (void *)0x06015800, 0x1800); - DmaCopy16(3, gUnknown_083A6E4C, (void *)0x050003C0, 0x20); - gMain.unk44[37]->available = 1; - gCurrentPinballGame->unk602++; - gCurrentPinballGame->unk1100 = 0; + gCurrentPinballGame->activePortraitType = 8; + DmaCopy16(3, gHatchFinalTilesGfx, (void *)0x06015800, 0x1800); + DmaCopy16(3, gHatchFinalPalette, (void *)0x050003C0, 0x20); + gMain.fieldSpriteGroups[37]->available = 1; + gCurrentPinballGame->hatchRevealPhase++; + gCurrentPinballGame->startButtonDisabled = 0; break; case 8: - if (gUnknown_086AE0D0[gCurrentPinballGame->unk603] > gCurrentPinballGame->unk604) + if (gHatchRevealFinalTimings[gCurrentPinballGame->revealFramesetIndex] > gCurrentPinballGame->revealAnimFrameCounter) { - gCurrentPinballGame->unk604++; + gCurrentPinballGame->revealAnimFrameCounter++; } else { - gCurrentPinballGame->unk604 = 0; - gCurrentPinballGame->unk603++; - if (gCurrentPinballGame->unk603 > 10) + gCurrentPinballGame->revealAnimFrameCounter = 0; + gCurrentPinballGame->revealFramesetIndex++; + if (gCurrentPinballGame->revealFramesetIndex > 10) { - gCurrentPinballGame->unk17++; - gMain.unk44[37]->available = 0; + gCurrentPinballGame->boardSubState++; + gMain.fieldSpriteGroups[37]->available = 0; gCurrentPinballGame->hatchTilesBoardAcknowledged = 0; gCurrentPinballGame->hatchSequentialTilesRevealed = 0; gCurrentPinballGame->hatchTilesBumperAcknowledged = 0; gMain.blendControl = 0xCE; gMain.blendBrightness = 0; - gMain.unk44[37]->available = 0; - gCurrentPinballGame->unk603 = 10; - gCurrentPinballGame->unkE4 = 0; + gMain.fieldSpriteGroups[37]->available = 0; + gCurrentPinballGame->revealFramesetIndex = 10; + gCurrentPinballGame->activePortraitType = 0; } } - var0 = gCurrentPinballGame->unk603; - group = gMain.unk44[37]; - group->baseX = 96 - gCurrentPinballGame->unk58; - group->baseY = 300 - gCurrentPinballGame->unk5A; + var0 = gCurrentPinballGame->revealFramesetIndex; + group = gMain.fieldSpriteGroups[37]; + group->baseX = 96 - gCurrentPinballGame->cameraXOffset; + group->baseY = 300 - gCurrentPinballGame->cameraYOffset; if (group->baseY >= 200) group->baseY = 200; @@ -2486,9 +2486,9 @@ void RevealAllHatchTilesAtOnce(void) { oamSimple = &group->oam[i]; dst = (u16 *)&gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_086B4E62[var0][i * 3 + 0]; - *dst++ = gUnknown_086B4E62[var0][i * 3 + 1]; - *dst++ = gUnknown_086B4E62[var0][i * 3 + 2]; + *dst++ = gHatchSequentialOamFramesets[var0][i * 3 + 0]; + *dst++ = gHatchSequentialOamFramesets[var0][i * 3 + 1]; + *dst++ = gHatchSequentialOamFramesets[var0][i * 3 + 2]; gOamBuffer[oamSimple->oamId].x += group->baseX; gOamBuffer[oamSimple->oamId].y += group->baseY; @@ -2497,30 +2497,30 @@ void RevealAllHatchTilesAtOnce(void) } } -void sub_25F64(void) +void InitAreaRoulette(void) { s16 i; - gCurrentPinballGame->unk17 = 1; - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk6DB = 3; - gCurrentPinballGame->unk36 = 0; - gCurrentPinballGame->unk32 = (Random() + gMain.systemFrameCount) % 6; - gCurrentPinballGame->area = gUnknown_08055A68[gMain.selectedField][gCurrentPinballGame->unk32]; - gCurrentPinballGame->unk6D9[1] = gUnknown_08137928[gCurrentPinballGame->area]; - gCurrentPinballGame->area = gUnknown_08055A68[gMain.selectedField][(gCurrentPinballGame->unk32 + 1) % 6]; - gCurrentPinballGame->unk6D9[0] = gUnknown_08137928[gCurrentPinballGame->area]; - sub_1C7F4(0, 0); - sub_1C7F4(0, 1); + gCurrentPinballGame->boardSubState = 1; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->creatureOamPriority = 3; + gCurrentPinballGame->areaVisitCount = 0; + gCurrentPinballGame->areaRouletteSlotIndex = (Random() + gMain.systemFrameCount) % 6; + gCurrentPinballGame->area = gAreaRouletteTable[gMain.selectedField][gCurrentPinballGame->areaRouletteSlotIndex]; + gCurrentPinballGame->rouletteAreaIndex[1] = gAreaToSpeciesTable[gCurrentPinballGame->area]; + gCurrentPinballGame->area = gAreaRouletteTable[gMain.selectedField][(gCurrentPinballGame->areaRouletteSlotIndex + 1) % 6]; + gCurrentPinballGame->rouletteAreaIndex[0] = gAreaToSpeciesTable[gCurrentPinballGame->area]; + LoadPortraitGraphics(0, 0); + LoadPortraitGraphics(0, 1); for (i = 0; i < 6; i++) - gCurrentPinballGame->unk6D3[i] = 13; + gCurrentPinballGame->hatchTilePalette[i] = 13; - DmaCopy16(3, gUnknown_083A8AAC, (void *)0x050003C0, 0x20); - DmaCopy16(3, gUnknown_084FA20C, (void *)0x06015800, 0x280); - gCurrentPinballGame->unkE4 = 12; + DmaCopy16(3, gHatchCompletePalette, (void *)0x050003C0, 0x20); + DmaCopy16(3, gEggPortraitTilesGfx, (void *)0x06015800, 0x280); + gCurrentPinballGame->activePortraitType = 12; } -void sub_260B8(void) +void UpdateAreaRoulette(void) { s16 i; struct SpriteGroup *group; @@ -2528,200 +2528,200 @@ void sub_260B8(void) u16 *dst; s16 var0; - switch (gCurrentPinballGame->unk17) + switch (gCurrentPinballGame->boardSubState) { case 1: gMain.blendControl = 0x1C10; gMain.blendAlpha = BLDALPHA_BLEND(0, 16); - gCurrentPinballGame->unk17++; - gCurrentPinballGame->unk6E0 = 0; - gCurrentPinballGame->unk5FE = 0; - gCurrentPinballGame->unk5FB = 1; - gMain.unk44[20]->available = 1; - gMain.unk44[21]->available = 1; - gMain.unk44[23]->available = 1; - gMain.unk44[22]->available = 1; - gMain.unk44[19]->available = 1; - gCurrentPinballGame->unk6F0 = 30; - gCurrentPinballGame->unk6F2 = 30; - gCurrentPinballGame->unk6F4 = 0; + gCurrentPinballGame->boardSubState++; + gCurrentPinballGame->rouletteSubOffset = 0; + gCurrentPinballGame->cameraScrollTarget = 0; + gCurrentPinballGame->cameraScrollEnabled = 1; + gMain.fieldSpriteGroups[20]->available = 1; + gMain.fieldSpriteGroups[21]->available = 1; + gMain.fieldSpriteGroups[23]->available = 1; + gMain.fieldSpriteGroups[22]->available = 1; + gMain.fieldSpriteGroups[19]->available = 1; + gCurrentPinballGame->rouletteFrameIndex = 30; + gCurrentPinballGame->rouletteRotationPeriod = 30; + gCurrentPinballGame->rouletteSpinSpeed = 0; if (gMain.selectedField == FIELD_RUBY) { - gCurrentPinballGame->unk170[0] = 10; - gCurrentPinballGame->unk170[1] = 10; - gCurrentPinballGame->unk170[2] = 10; + gCurrentPinballGame->pondBumperStates[0] = 10; + gCurrentPinballGame->pondBumperStates[1] = 10; + gCurrentPinballGame->pondBumperStates[2] = 10; } else { - gCurrentPinballGame->unk170[0] = 0; - gCurrentPinballGame->unk170[1] = 0; - gCurrentPinballGame->unk170[2] = 0; + gCurrentPinballGame->pondBumperStates[0] = 0; + gCurrentPinballGame->pondBumperStates[1] = 0; + gCurrentPinballGame->pondBumperStates[2] = 0; } gCurrentPinballGame->rubyPondChangeTimer = 0; break; case 2: - if (gCurrentPinballGame->unk5FC == 0) + if (gCurrentPinballGame->cameraScrollOffset == 0) { - gCurrentPinballGame->unk17++; - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->boardSubState++; + gCurrentPinballGame->stageTimer = 0; } if (gMain.selectedField == FIELD_RUBY) { if (gCurrentPinballGame->rubyPondChangeTimer < 143) - gCurrentPinballGame->unk170[0] = gUnknown_08137944[gCurrentPinballGame->rubyPondChangeTimer / 8]; + gCurrentPinballGame->pondBumperStates[0] = gPondDialAnimFrames[gCurrentPinballGame->rubyPondChangeTimer / 8]; if (gCurrentPinballGame->rubyPondChangeTimer >= 18 && gCurrentPinballGame->rubyPondChangeTimer < 161) - gCurrentPinballGame->unk170[2] = gUnknown_08137944[(gCurrentPinballGame->rubyPondChangeTimer - 18) / 8]; + gCurrentPinballGame->pondBumperStates[2] = gPondDialAnimFrames[(gCurrentPinballGame->rubyPondChangeTimer - 18) / 8]; if (gCurrentPinballGame->rubyPondChangeTimer >= 36 && gCurrentPinballGame->rubyPondChangeTimer < 179) - gCurrentPinballGame->unk170[1] = gUnknown_08137944[(gCurrentPinballGame->rubyPondChangeTimer - 36) / 8]; + gCurrentPinballGame->pondBumperStates[1] = gPondDialAnimFrames[(gCurrentPinballGame->rubyPondChangeTimer - 36) / 8]; gCurrentPinballGame->rubyPondChangeTimer++; } - gCurrentPinballGame->unk6E0 = (gCurrentPinballGame->unk6F0 * 32) / gCurrentPinballGame->unk6F2; - gCurrentPinballGame->unk6C4 = 1; - gCurrentPinballGame->unk18++; - sub_26778(); + gCurrentPinballGame->rouletteSubOffset = (gCurrentPinballGame->rouletteFrameIndex * 32) / gCurrentPinballGame->rouletteRotationPeriod; + gCurrentPinballGame->portraitDisplayState = 1; + gCurrentPinballGame->stageTimer++; + UpdateRouletteAnimState(); break; case 3: - if (gCurrentPinballGame->unk18 < 15) + if (gCurrentPinballGame->stageTimer < 15) { - gCurrentPinballGame->unk18++; - if (gCurrentPinballGame->unk18 == 15) + gCurrentPinballGame->stageTimer++; + if (gCurrentPinballGame->stageTimer == 15) { - gCurrentPinballGame->unk17++; - gCurrentPinballGame->unk6F2 = 6; - gCurrentPinballGame->unk6F4 = 0; + gCurrentPinballGame->boardSubState++; + gCurrentPinballGame->rouletteRotationPeriod = 6; + gCurrentPinballGame->rouletteSpinSpeed = 0; } } - sub_26820(0); + SetRouletteActiveState(0); /* fallthrough */ case 4: case 5: - if (gCurrentPinballGame->unk17 == 3) + if (gCurrentPinballGame->boardSubState == 3) { - gCurrentPinballGame->unk6F0--; - gCurrentPinballGame->unk6F0 %= gCurrentPinballGame->unk6F2; + gCurrentPinballGame->rouletteFrameIndex--; + gCurrentPinballGame->rouletteFrameIndex %= gCurrentPinballGame->rouletteRotationPeriod; } - else if (gCurrentPinballGame->unk17 == 4) + else if (gCurrentPinballGame->boardSubState == 4) { - gCurrentPinballGame->unk6F0++; - if (gCurrentPinballGame->newButtonActions[1] && gCurrentPinballGame->unk17 == 4) + gCurrentPinballGame->rouletteFrameIndex++; + if (gCurrentPinballGame->newButtonActions[1] && gCurrentPinballGame->boardSubState == 4) { - if (gCurrentPinballGame->unk6F4 == 0) + if (gCurrentPinballGame->rouletteSpinSpeed == 0) { if (gMain.eReaderBonuses[EREADER_RUIN_AREA_CARD]) - gCurrentPinballGame->unk6F4 = 48; + gCurrentPinballGame->rouletteSpinSpeed = 48; else - gCurrentPinballGame->unk6F4 = 1; + gCurrentPinballGame->rouletteSpinSpeed = 1; - gCurrentPinballGame->unk6F6 = gCurrentPinballGame->unk6F4; - gCurrentPinballGame->unk163 = 1; - gCurrentPinballGame->unk21 = 1; - gCurrentPinballGame->unk724 = 3600; + gCurrentPinballGame->rouletteInitialSpeed = gCurrentPinballGame->rouletteSpinSpeed; + gCurrentPinballGame->sapphirePondFlag = 1; + gCurrentPinballGame->launcherCharging = 1; + gCurrentPinballGame->modeTimeRemaining = 3600; gCurrentPinballGame->rubyPondState = RUBY_POND_STATE_CHINCHOU_COUNTERCLOCKWISE; } } - if (gCurrentPinballGame->unk6F4) + if (gCurrentPinballGame->rouletteSpinSpeed) { - gCurrentPinballGame->unk6F4--; + gCurrentPinballGame->rouletteSpinSpeed--; if (gMain.eReaderBonuses[EREADER_RUIN_AREA_CARD]) { gCurrentPinballGame->numCompletedBonusStages = 4; - if (gCurrentPinballGame->unk6F4 < 24) + if (gCurrentPinballGame->rouletteSpinSpeed < 24) { - gCurrentPinballGame->unk6F4 = 24; - if (gCurrentPinballGame->unk32 == 6) - gCurrentPinballGame->unk6F4 = 0; + gCurrentPinballGame->rouletteSpinSpeed = 24; + if (gCurrentPinballGame->areaRouletteSlotIndex == 6) + gCurrentPinballGame->rouletteSpinSpeed = 0; } } - if (gCurrentPinballGame->unk6F4 == 0) + if (gCurrentPinballGame->rouletteSpinSpeed == 0) { - gCurrentPinballGame->unk17 = 5; + gCurrentPinballGame->boardSubState = 5; } else { - if (gCurrentPinballGame->unk6F0 == gCurrentPinballGame->unk6F2) + if (gCurrentPinballGame->rouletteFrameIndex == gCurrentPinballGame->rouletteRotationPeriod) { - gCurrentPinballGame->unk6F2 = 40 - (gCurrentPinballGame->unk6F4 * 30) / gCurrentPinballGame->unk6F6; - gCurrentPinballGame->unk6F0 = 0; + gCurrentPinballGame->rouletteRotationPeriod = 40 - (gCurrentPinballGame->rouletteSpinSpeed * 30) / gCurrentPinballGame->rouletteInitialSpeed; + gCurrentPinballGame->rouletteFrameIndex = 0; } } } - gCurrentPinballGame->unk6F0 %= gCurrentPinballGame->unk6F2; + gCurrentPinballGame->rouletteFrameIndex %= gCurrentPinballGame->rouletteRotationPeriod; } else { - gCurrentPinballGame->unk6F0++; - gCurrentPinballGame->unk6F0 %= gCurrentPinballGame->unk6F2; - if (gCurrentPinballGame->unk6F0 == 0) + gCurrentPinballGame->rouletteFrameIndex++; + gCurrentPinballGame->rouletteFrameIndex %= gCurrentPinballGame->rouletteRotationPeriod; + if (gCurrentPinballGame->rouletteFrameIndex == 0) { - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk17++; - gMain.unk44[23]->available = 0; - gMain.unk44[20]->available = 0; - gMain.unk44[21]->available = 0; - gMain.unk44[34]->available = 1; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardSubState++; + gMain.fieldSpriteGroups[23]->available = 0; + gMain.fieldSpriteGroups[20]->available = 0; + gMain.fieldSpriteGroups[21]->available = 0; + gMain.fieldSpriteGroups[34]->available = 1; m4aSongNumStart(SE_UNKNOWN_0x93); } } - gCurrentPinballGame->unk6E0 = (gCurrentPinballGame->unk6F0 * 32) / gCurrentPinballGame->unk6F2; - if (gCurrentPinballGame->unk6F0 == 0) + gCurrentPinballGame->rouletteSubOffset = (gCurrentPinballGame->rouletteFrameIndex * 32) / gCurrentPinballGame->rouletteRotationPeriod; + if (gCurrentPinballGame->rouletteFrameIndex == 0) { - gCurrentPinballGame->unk6D9[0] = gCurrentPinballGame->unk6D9[1]; - sub_1C7F4(0, 0); + gCurrentPinballGame->rouletteAreaIndex[0] = gCurrentPinballGame->rouletteAreaIndex[1]; + LoadPortraitGraphics(0, 0); } - if (gCurrentPinballGame->unk6F0 == 1) + if (gCurrentPinballGame->rouletteFrameIndex == 1) { if (gMain.eReaderBonuses[EREADER_RUIN_AREA_CARD]) { - gCurrentPinballGame->unk32 = (gCurrentPinballGame->unk32 + 1) % 7; - gCurrentPinballGame->unk33 = 0; - gCurrentPinballGame->unk34 = 1; + gCurrentPinballGame->areaRouletteSlotIndex = (gCurrentPinballGame->areaRouletteSlotIndex + 1) % 7; + gCurrentPinballGame->areaRouletteNextSlot = 0; + gCurrentPinballGame->areaRouletteFarSlot = 1; } else { - gCurrentPinballGame->unk32 = (gCurrentPinballGame->unk32 + 1) % 6; - gCurrentPinballGame->unk33 = (gCurrentPinballGame->unk32 + 1) % 6; - gCurrentPinballGame->unk34 = (gCurrentPinballGame->unk32 + 2) % 6; + gCurrentPinballGame->areaRouletteSlotIndex = (gCurrentPinballGame->areaRouletteSlotIndex + 1) % 6; + gCurrentPinballGame->areaRouletteNextSlot = (gCurrentPinballGame->areaRouletteSlotIndex + 1) % 6; + gCurrentPinballGame->areaRouletteFarSlot = (gCurrentPinballGame->areaRouletteSlotIndex + 2) % 6; } - gCurrentPinballGame->area = gUnknown_08055A68[gMain.selectedField][gCurrentPinballGame->unk32]; - gCurrentPinballGame->unk6D9[1] = gUnknown_08137928[gCurrentPinballGame->area]; - sub_1C7F4(0, 1); + gCurrentPinballGame->area = gAreaRouletteTable[gMain.selectedField][gCurrentPinballGame->areaRouletteSlotIndex]; + gCurrentPinballGame->rouletteAreaIndex[1] = gAreaToSpeciesTable[gCurrentPinballGame->area]; + LoadPortraitGraphics(0, 1); m4aSongNumStart(SE_UNKNOWN_0x81); } break; case 6: - if (gCurrentPinballGame->unk18 < 50) + if (gCurrentPinballGame->stageTimer < 50) { - gCurrentPinballGame->unk18++; - if (gCurrentPinballGame->unk18 == 50) + gCurrentPinballGame->stageTimer++; + if (gCurrentPinballGame->stageTimer == 50) { - gCurrentPinballGame->unk17 = 0; - sub_19B64(1); + gCurrentPinballGame->boardSubState = 0; + RequestBoardStateTransition(1); } } - if (gCurrentPinballGame->unk18 < 29) + if (gCurrentPinballGame->stageTimer < 29) { - if (gCurrentPinballGame->unk18 < 8) - var0 = gCurrentPinballGame->unk18 / 4; + if (gCurrentPinballGame->stageTimer < 8) + var0 = gCurrentPinballGame->stageTimer / 4; else - var0 = ((gCurrentPinballGame->unk18 - 8) / 3) + 2; + var0 = ((gCurrentPinballGame->stageTimer - 8) / 3) + 2; - group = gMain.unk44[34]; + group = gMain.fieldSpriteGroups[34]; if (group->available) { - group->baseX = 96u - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk6E0 + 300u - gCurrentPinballGame->unk5A; + group->baseX = 96u - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->rouletteSubOffset + 300u - gCurrentPinballGame->cameraYOffset; if (group->baseY >= 200) group->baseY = 200; @@ -2729,250 +2729,250 @@ void sub_260B8(void) { oamSimple = &group->oam[i]; dst = (u16 *)&gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_086B51CE[var0][i * 3 + 0]; - *dst++ = gUnknown_086B51CE[var0][i * 3 + 1]; - *dst++ = gUnknown_086B51CE[var0][i * 3 + 2]; + *dst++ = gAreaRouletteOamFramesets[var0][i * 3 + 0]; + *dst++ = gAreaRouletteOamFramesets[var0][i * 3 + 1]; + *dst++ = gAreaRouletteOamFramesets[var0][i * 3 + 2]; gOamBuffer[oamSimple->oamId].x += group->baseX; gOamBuffer[oamSimple->oamId].y += group->baseY; } } - if (gCurrentPinballGame->unk18 == 0x1C) { - gMain.unk44[34]->available = 0; - gCurrentPinballGame->unkE4 = 0; + if (gCurrentPinballGame->stageTimer == 0x1C) { + gMain.fieldSpriteGroups[34]->available = 0; + gCurrentPinballGame->activePortraitType = 0; } } - gCurrentPinballGame->unk6C4 = 0; + gCurrentPinballGame->portraitDisplayState = 0; break; } } -void sub_26778(void) +void UpdateRouletteAnimState(void) { s16 index; index = (gMain.systemFrameCount % 100) / 10; - gCurrentPinballGame->unk70C = 0; - gCurrentPinballGame->unk72F = gUnknown_08137AB8[index]; - gCurrentPinballGame->unk72E = gUnknown_08137AB8[index]; - gCurrentPinballGame->unk72B = gUnknown_08137AB8[index]; + gCurrentPinballGame->hudAnimFrameCounter = 0; + gCurrentPinballGame->catchArrowProgress = gBumperAnimFrames[index]; + gCurrentPinballGame->evoArrowProgress = gBumperAnimFrames[index]; + gCurrentPinballGame->coinRewardLevel = gBumperAnimFrames[index]; if (index == 7 || index == 9) { - gCurrentPinballGame->unk728 = 1; - gCurrentPinballGame->unk72A = 1; - gCurrentPinballGame->unk729 = 1; + gCurrentPinballGame->catchArrowPaletteActive = 1; + gCurrentPinballGame->rouletteSlotActive = 1; + gCurrentPinballGame->evoArrowPaletteActive = 1; } else { - gCurrentPinballGame->unk728 = 0; - gCurrentPinballGame->unk72A = 0; - gCurrentPinballGame->unk729 = 0; + gCurrentPinballGame->catchArrowPaletteActive = 0; + gCurrentPinballGame->rouletteSlotActive = 0; + gCurrentPinballGame->evoArrowPaletteActive = 0; } } -void sub_26820(s16 arg0) +void SetRouletteActiveState(s16 arg0) { if (arg0) { - gCurrentPinballGame->unk72A = 1; - gCurrentPinballGame->unk728 = 1; - gCurrentPinballGame->unk731 = 1; - gCurrentPinballGame->unk72E = 3; - gCurrentPinballGame->unk72B = 3; - gCurrentPinballGame->unk72F = 3; - gCurrentPinballGame->unk729 = 1; + gCurrentPinballGame->rouletteSlotActive = 1; + gCurrentPinballGame->catchArrowPaletteActive = 1; + gCurrentPinballGame->catchProgressFlashing = 1; + gCurrentPinballGame->evoArrowProgress = 3; + gCurrentPinballGame->coinRewardLevel = 3; + gCurrentPinballGame->catchArrowProgress = 3; + gCurrentPinballGame->evoArrowPaletteActive = 1; } else { - gCurrentPinballGame->unk729 = 0; - gCurrentPinballGame->unk72A = 0; - gCurrentPinballGame->unk728 = 0; - gCurrentPinballGame->unk72E = 0; - gCurrentPinballGame->unk72B = 0; - gCurrentPinballGame->unk72F = 2; + gCurrentPinballGame->evoArrowPaletteActive = 0; + gCurrentPinballGame->rouletteSlotActive = 0; + gCurrentPinballGame->catchArrowPaletteActive = 0; + gCurrentPinballGame->evoArrowProgress = 0; + gCurrentPinballGame->coinRewardLevel = 0; + gCurrentPinballGame->catchArrowProgress = 2; } - gCurrentPinballGame->unk70E = 1; + gCurrentPinballGame->progressLevel = 1; } -void sub_268CC(void) +void CleanupTravelModeState(void) { - gCurrentPinballGame->unk6BC = 0; - gCurrentPinballGame->unk6BD = 0; + gCurrentPinballGame->travelRouletteSlotHitType = 0; + gCurrentPinballGame->seedotCount = 0; if (gMain.selectedField == FIELD_RUBY) { - gCurrentPinballGame->unk2BE = 0; - gCurrentPinballGame->unk2C2 = 0; - gCurrentPinballGame->unk2C0 = 0; + gCurrentPinballGame->gulpinCurrentLevel = 0; + gCurrentPinballGame->gulpinAnimFrameIndex = 0; + gCurrentPinballGame->gulpinAnimFrameTimer = 0; } - gCurrentPinballGame->unk6BE = 1; - gCurrentPinballGame->unk6C0 = 0; - sub_1C7F4(0, 0); - gCurrentPinballGame->unk6C4 = 0; - gMain.unk44[13]->available = 0; - gCurrentPinballGame->unk730 = 0; - gCurrentPinballGame->unk5F3 = 0; - gCurrentPinballGame->unk739[0] = gCurrentPinballGame->unk736[0] = 0; - gCurrentPinballGame->unk739[1] = gCurrentPinballGame->unk736[1] = 0; - gCurrentPinballGame->unk739[2] = gCurrentPinballGame->unk736[2] = 0; - sub_4D648(); + gCurrentPinballGame->seedotExitSequenceActive = 1; + gCurrentPinballGame->seedotExitSequenceTimer = 0; + LoadPortraitGraphics(0, 0); + gCurrentPinballGame->portraitDisplayState = 0; + gMain.fieldSpriteGroups[13]->available = 0; + gCurrentPinballGame->trapAnimState = 0; + gCurrentPinballGame->bonusTrapEnabled = 0; + gCurrentPinballGame->prevTravelArrowTiles[0] = gCurrentPinballGame->travelArrowTiles[0] = 0; + gCurrentPinballGame->prevTravelArrowTiles[1] = gCurrentPinballGame->travelArrowTiles[1] = 0; + gCurrentPinballGame->prevTravelArrowTiles[2] = gCurrentPinballGame->travelArrowTiles[2] = 0; + ResetEventState(); } -void sub_269A4(void) +void InitTravelMode(void) { - gCurrentPinballGame->unk17 = 0; - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk294 = 2; + gCurrentPinballGame->boardSubState = 0; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardModeType = 2; gCurrentPinballGame->eventTimer = gCurrentPinballGame->timerBonus + 3600; gCurrentPinballGame->timerBonus = 0; - gCurrentPinballGame->unk724 = 1800; - DmaCopy16(3, gUnknown_081C0064, (void *)0x05000180, 0x20); + gCurrentPinballGame->modeTimeRemaining = 1800; + DmaCopy16(3, gDefaultBallPalette, (void *)0x05000180, 0x20); } -void sub_26A10(void) +void UpdateTravelMode(void) { s16 var0; - if (gCurrentPinballGame->unk294 && gCurrentPinballGame->eventTimer < 2 && gCurrentPinballGame->unk17 < 6) + if (gCurrentPinballGame->boardModeType && gCurrentPinballGame->eventTimer < 2 && gCurrentPinballGame->boardSubState < 6) { m4aMPlayAllStop(); m4aSongNumStart(MUS_END_OF_BALL2); - gCurrentPinballGame->unk18 = 200; - gCurrentPinballGame->unk17 = 6; + gCurrentPinballGame->stageTimer = 200; + gCurrentPinballGame->boardSubState = 6; } - switch (gCurrentPinballGame->unk17) + switch (gCurrentPinballGame->boardSubState) { case 0: if (gMain.modeChangeFlags == MODE_CHANGE_NONE) { - gCurrentPinballGame->unk17++; - gCurrentPinballGame->unk708 = 0; + gCurrentPinballGame->boardSubState++; + gCurrentPinballGame->portraitCycleFrame = 0; } - gCurrentPinballGame->unk6BC = 0; + gCurrentPinballGame->travelRouletteSlotHitType = 0; break; case 1: - sub_1C7F4(4, 0); - if (gCurrentPinballGame->unk18 == 35) + LoadPortraitGraphics(4, 0); + if (gCurrentPinballGame->stageTimer == 35) m4aSongNumStart(MUS_TRAVEL_MODE); - if (gCurrentPinballGame->unk6BC) + if (gCurrentPinballGame->travelRouletteSlotHitType) { - gCurrentPinballGame->unk17++; - if (gCurrentPinballGame->unk18 < 35) + gCurrentPinballGame->boardSubState++; + if (gCurrentPinballGame->stageTimer < 35) m4aSongNumStart(MUS_TRAVEL_MODE); - gCurrentPinballGame->unk6BD = 0; - gCurrentPinballGame->unk6BE = 1; - gCurrentPinballGame->unk6C0 = 0; + gCurrentPinballGame->seedotCount = 0; + gCurrentPinballGame->seedotExitSequenceActive = 1; + gCurrentPinballGame->seedotExitSequenceTimer = 0; } - var0 = (gCurrentPinballGame->unk18 % 40) / 10; - gCurrentPinballGame->unk18++; + var0 = (gCurrentPinballGame->stageTimer % 40) / 10; + gCurrentPinballGame->stageTimer++; if (var0 == 0) { - gCurrentPinballGame->unk736[0] = 0; - gCurrentPinballGame->unk736[1] = 0; - gCurrentPinballGame->unk736[2] = 0; + gCurrentPinballGame->travelArrowTiles[0] = 0; + gCurrentPinballGame->travelArrowTiles[1] = 0; + gCurrentPinballGame->travelArrowTiles[2] = 0; } else if (var0 == 1) { - gCurrentPinballGame->unk736[0] = 3; - gCurrentPinballGame->unk736[1] = 1; - gCurrentPinballGame->unk736[2] = 0; + gCurrentPinballGame->travelArrowTiles[0] = 3; + gCurrentPinballGame->travelArrowTiles[1] = 1; + gCurrentPinballGame->travelArrowTiles[2] = 0; } else if (var0 == 2) { - gCurrentPinballGame->unk736[0] = 3; - gCurrentPinballGame->unk736[1] = 3; - gCurrentPinballGame->unk736[2] = 2; + gCurrentPinballGame->travelArrowTiles[0] = 3; + gCurrentPinballGame->travelArrowTiles[1] = 3; + gCurrentPinballGame->travelArrowTiles[2] = 2; } else { - gCurrentPinballGame->unk736[0] = 3; - gCurrentPinballGame->unk736[1] = 3; - gCurrentPinballGame->unk736[2] = 3; + gCurrentPinballGame->travelArrowTiles[0] = 3; + gCurrentPinballGame->travelArrowTiles[1] = 3; + gCurrentPinballGame->travelArrowTiles[2] = 3; } - gCurrentPinballGame->unk739[0] = gCurrentPinballGame->unk736[0]; - gCurrentPinballGame->unk739[1] = gCurrentPinballGame->unk736[1]; - gCurrentPinballGame->unk739[2] = gCurrentPinballGame->unk736[2]; + gCurrentPinballGame->prevTravelArrowTiles[0] = gCurrentPinballGame->travelArrowTiles[0]; + gCurrentPinballGame->prevTravelArrowTiles[1] = gCurrentPinballGame->travelArrowTiles[1]; + gCurrentPinballGame->prevTravelArrowTiles[2] = gCurrentPinballGame->travelArrowTiles[2]; break; case 2: - sub_219A8(); - gCurrentPinballGame->unk730 = 2; - sub_1C7F4(0, 0); - gCurrentPinballGame->unk739[0] = gCurrentPinballGame->unk736[0] = 0; - gCurrentPinballGame->unk739[1] = gCurrentPinballGame->unk736[1] = 0; - gCurrentPinballGame->unk739[2] = gCurrentPinballGame->unk736[2] = 0; - gCurrentPinballGame->unk17++; + ShowBonusTrapSprite(); + gCurrentPinballGame->trapAnimState = 2; + LoadPortraitGraphics(0, 0); + gCurrentPinballGame->prevTravelArrowTiles[0] = gCurrentPinballGame->travelArrowTiles[0] = 0; + gCurrentPinballGame->prevTravelArrowTiles[1] = gCurrentPinballGame->travelArrowTiles[1] = 0; + gCurrentPinballGame->prevTravelArrowTiles[2] = gCurrentPinballGame->travelArrowTiles[2] = 0; + gCurrentPinballGame->boardSubState++; break; case 3: - sub_219EC(); - if (gCurrentPinballGame->unk25 == 4) - gCurrentPinballGame->unk17++; + AnimateBonusTrapSprite(); + if (gCurrentPinballGame->ballCatchState == 4) + gCurrentPinballGame->boardSubState++; break; case 4: - gCurrentPinballGame->unk294 = 3; - gCurrentPinballGame->unk17++; - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk708 = 0; - gCurrentPinballGame->unk6EC[0] = 47; - sub_1C7F4(7, 0); + gCurrentPinballGame->boardModeType = 3; + gCurrentPinballGame->boardSubState++; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->portraitCycleFrame = 0; + gCurrentPinballGame->modeOutcomeValues[0] = 47; + LoadPortraitGraphics(7, 0); break; case 5: - if (gCurrentPinballGame->unk28 == 145) + if (gCurrentPinballGame->modeAnimTimer == 145) { - gCurrentPinballGame->unk28++; - gCurrentPinballGame->unk6EC[0] = 47; - sub_1C7F4(7, 0); + gCurrentPinballGame->modeAnimTimer++; + gCurrentPinballGame->modeOutcomeValues[0] = 47; + LoadPortraitGraphics(7, 0); if (JOY_NEW(A_BUTTON)) { - gCurrentPinballGame->unk28 = 144; + gCurrentPinballGame->modeAnimTimer = 144; m4aMPlayAllStop(); - sub_1C7F4(0, 0); - if (gCurrentPinballGame->unk36 < 5) + LoadPortraitGraphics(0, 0); + if (gCurrentPinballGame->areaVisitCount < 5) { - var0 = gCurrentPinballGame->unk34; - if (gCurrentPinballGame->unk6BC == 1) - gCurrentPinballGame->unk32 = gCurrentPinballGame->unk33; + var0 = gCurrentPinballGame->areaRouletteFarSlot; + if (gCurrentPinballGame->travelRouletteSlotHitType == 1) + gCurrentPinballGame->areaRouletteSlotIndex = gCurrentPinballGame->areaRouletteNextSlot; else - gCurrentPinballGame->unk32 = gCurrentPinballGame->unk34; + gCurrentPinballGame->areaRouletteSlotIndex = gCurrentPinballGame->areaRouletteFarSlot; - gCurrentPinballGame->unk33 = (var0 + 1) % 6; - gCurrentPinballGame->unk34 = (var0 + 2) % 6; - gCurrentPinballGame->unk36++; + gCurrentPinballGame->areaRouletteNextSlot = (var0 + 1) % 6; + gCurrentPinballGame->areaRouletteFarSlot = (var0 + 2) % 6; + gCurrentPinballGame->areaVisitCount++; } else { - gCurrentPinballGame->unk32 = 6; - gCurrentPinballGame->unk36 = 0; + gCurrentPinballGame->areaRouletteSlotIndex = 6; + gCurrentPinballGame->areaVisitCount = 0; } } else if (JOY_NEW(B_BUTTON)) { m4aMPlayAllStop(); m4aSongNumStart(SE_MENU_CANCEL); - gCurrentPinballGame->unk28 = 60; - gCurrentPinballGame->unk17 = 6; - if (gCurrentPinballGame->unk714) - gCurrentPinballGame->unk6EE = 120; + gCurrentPinballGame->modeAnimTimer = 60; + gCurrentPinballGame->boardSubState = 6; + if (gCurrentPinballGame->allHolesLit) + gCurrentPinballGame->allHolesLitDelayTimer = 120; } } - if (gCurrentPinballGame->unk28 == 130) + if (gCurrentPinballGame->modeAnimTimer == 130) { - gCurrentPinballGame->unk28++; - if (gCurrentPinballGame->unk18 < 490) + gCurrentPinballGame->modeAnimTimer++; + if (gCurrentPinballGame->stageTimer < 490) { - sub_2E094(); - if (gCurrentPinballGame->scoreCounterAnimationEnabled && gCurrentPinballGame->unk18 >= 428) - gCurrentPinballGame->unk18 = 428; + RunTravelEventCutscene(); + if (gCurrentPinballGame->scoreCounterAnimationEnabled && gCurrentPinballGame->stageTimer >= 428) + gCurrentPinballGame->stageTimer = 428; - if (gCurrentPinballGame->unk18 == 394) + if (gCurrentPinballGame->stageTimer == 394) { gCurrentPinballGame->scoreCounterAnimationEnabled = TRUE; gCurrentPinballGame->scoreAddedInFrame = 500000; @@ -2980,101 +2980,101 @@ void sub_26A10(void) } else { - gCurrentPinballGame->unk28 = 120; + gCurrentPinballGame->modeAnimTimer = 120; } - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } - else if (gCurrentPinballGame->unk28 == 0) + else if (gCurrentPinballGame->modeAnimTimer == 0) { - gCurrentPinballGame->unk17++; - gCurrentPinballGame->unk18 = 0; - if (gCurrentPinballGame->unk62C < 99) - gCurrentPinballGame->unk62C++; + gCurrentPinballGame->boardSubState++; + gCurrentPinballGame->stageTimer = 0; + if (gCurrentPinballGame->travelModeCompletionCount < 99) + gCurrentPinballGame->travelModeCompletionCount++; } break; case 6: - sub_219EC(); - gMain.unk44[13]->available = 0; - sub_268CC(); - gCurrentPinballGame->unk17++; + AnimateBonusTrapSprite(); + gMain.fieldSpriteGroups[13]->available = 0; + CleanupTravelModeState(); + gCurrentPinballGame->boardSubState++; break; case 7: - if (gCurrentPinballGame->unk18) + if (gCurrentPinballGame->stageTimer) { - gCurrentPinballGame->unk18--; + gCurrentPinballGame->stageTimer--; } else { - sub_19B64(1); - gCurrentPinballGame->unk17 = 0; + RequestBoardStateTransition(1); + gCurrentPinballGame->boardSubState = 0; } break; } } -void sub_26EA4(void) +void CleanupEvolutionModeState(void) { s16 i; - sub_1C7F4(0, 0); - gCurrentPinballGame->unk6C4 = 0; + LoadPortraitGraphics(0, 0); + gCurrentPinballGame->portraitDisplayState = 0; for (i = 0; i < 3; i++) { - if (i < gCurrentPinballGame->unk723) - gCurrentPinballGame->unk71D[i] = 1; + if (i < gCurrentPinballGame->evoItemCount) + gCurrentPinballGame->catchLights[i] = 1; else - gCurrentPinballGame->unk71D[i] = 0; + gCurrentPinballGame->catchLights[i] = 0; } - gMain.unk44[13]->available = 0; - gCurrentPinballGame->unk730 = 0; - gCurrentPinballGame->unk5F3 = 0; - sub_4D648(); + gMain.fieldSpriteGroups[13]->available = 0; + gCurrentPinballGame->trapAnimState = 0; + gCurrentPinballGame->bonusTrapEnabled = 0; + ResetEventState(); } -void sub_26F38(void) +void InitEvolutionMode(void) { - gCurrentPinballGame->unk17 = 0; - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk294 = 2; + gCurrentPinballGame->boardSubState = 0; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardModeType = 2; gCurrentPinballGame->eventTimer = gCurrentPinballGame->timerBonus + 7200; gCurrentPinballGame->timerBonus = 0; - gCurrentPinballGame->unk724 = 3600; + gCurrentPinballGame->modeTimeRemaining = 3600; if (gCurrentPinballGame->currentSpecies == SPECIES_WURMPLE) { - gCurrentPinballGame->unk25F = 0; + gCurrentPinballGame->evoItemGfxIndex = 0; } else if (gCurrentPinballGame->currentSpecies == SPECIES_GLOOM) { if (gMain.selectedField == FIELD_RUBY) - gCurrentPinballGame->unk25F = 1; + gCurrentPinballGame->evoItemGfxIndex = 1; else - gCurrentPinballGame->unk25F = 7; + gCurrentPinballGame->evoItemGfxIndex = 7; } else if (gCurrentPinballGame->currentSpecies == SPECIES_CLAMPERL) { - gCurrentPinballGame->unk25F = 3; + gCurrentPinballGame->evoItemGfxIndex = 3; } else { - gCurrentPinballGame->unk25F = gSpeciesInfo[gCurrentPinballGame->currentSpecies].evolutionMethod - 1; - if (gCurrentPinballGame->unk25F < 0) - gCurrentPinballGame->unk25F = 0; + gCurrentPinballGame->evoItemGfxIndex = gSpeciesInfo[gCurrentPinballGame->currentSpecies].evolutionMethod - 1; + if (gCurrentPinballGame->evoItemGfxIndex < 0) + gCurrentPinballGame->evoItemGfxIndex = 0; } - DmaCopy16(3, gUnknown_081C0064, (void *)0x05000180, 0x20); - gCurrentPinballGame->unk72E = 0; - gCurrentPinballGame->unk72A = 0; - gCurrentPinballGame->unk252 = 0; - gCurrentPinballGame->unk25E = 0; - gCurrentPinballGame->unk26B = 0; - gCurrentPinballGame->unk26C = 0; - gCurrentPinballGame->unk26E = 0; - sub_1C7F4(3, 0); + DmaCopy16(3, gDefaultBallPalette, (void *)0x05000180, 0x20); + gCurrentPinballGame->evoArrowProgress = 0; + gCurrentPinballGame->rouletteSlotActive = 0; + gCurrentPinballGame->catchModeEventTimer = 0; + gCurrentPinballGame->evoItemSlotIndex = 0; + gCurrentPinballGame->evoItemsCaught = 0; + gCurrentPinballGame->evoModeResetFlag = 0; + gCurrentPinballGame->evoItemAppearTimer = 0; + LoadPortraitGraphics(3, 0); } -void sub_27080(void) +void UpdateEvolutionMode(void) { s16 i, j; s16 var0; @@ -3082,286 +3082,286 @@ void sub_27080(void) struct OamDataSimple *oamSimple; s16 index; - if (gCurrentPinballGame->unk294 && gCurrentPinballGame->eventTimer < 2 && gCurrentPinballGame->unk17 < 8) + if (gCurrentPinballGame->boardModeType && gCurrentPinballGame->eventTimer < 2 && gCurrentPinballGame->boardSubState < 8) { m4aMPlayAllStop(); m4aSongNumStart(MUS_END_OF_BALL2); - gCurrentPinballGame->unk18 = 200; - gCurrentPinballGame->unk17 = 8; + gCurrentPinballGame->stageTimer = 200; + gCurrentPinballGame->boardSubState = 8; } - switch (gCurrentPinballGame->unk17) + switch (gCurrentPinballGame->boardSubState) { case 0: - if (gCurrentPinballGame->unk250 < 2) + if (gCurrentPinballGame->evoModeShuffleRound < 2) { for (i = 0; i < 8; i++) - gCurrentPinballGame->unk263[i] = i; + gCurrentPinballGame->evoItemShufflePool[i] = i; index = (Random() + gMain.systemFrameCount) % 5; - gCurrentPinballGame->unk260[0] = gCurrentPinballGame->unk263[index]; + gCurrentPinballGame->evoShuffledSlots[0] = gCurrentPinballGame->evoItemShufflePool[index]; for (i = index; i < 7; i++) - gCurrentPinballGame->unk263[i] = gCurrentPinballGame->unk263[i + 1]; + gCurrentPinballGame->evoItemShufflePool[i] = gCurrentPinballGame->evoItemShufflePool[i + 1]; index = (Random() + gMain.systemFrameCount) % 4; - gCurrentPinballGame->unk260[1] = gCurrentPinballGame->unk263[index]; + gCurrentPinballGame->evoShuffledSlots[1] = gCurrentPinballGame->evoItemShufflePool[index]; for (i = index; i < 6; i++) - gCurrentPinballGame->unk263[i] = gCurrentPinballGame->unk263[i + 1]; + gCurrentPinballGame->evoItemShufflePool[i] = gCurrentPinballGame->evoItemShufflePool[i + 1]; index = (Random() + gMain.systemFrameCount) % 3; - gCurrentPinballGame->unk260[2] = gCurrentPinballGame->unk263[index]; + gCurrentPinballGame->evoShuffledSlots[2] = gCurrentPinballGame->evoItemShufflePool[index]; } else { for (i = 0; i < 8; i++) - gCurrentPinballGame->unk263[i] = i; + gCurrentPinballGame->evoItemShufflePool[i] = i; index = (Random() + gMain.systemFrameCount) % 6; - gCurrentPinballGame->unk260[0] = gCurrentPinballGame->unk263[index]; + gCurrentPinballGame->evoShuffledSlots[0] = gCurrentPinballGame->evoItemShufflePool[index]; for (i = index; i < 7; i++) - gCurrentPinballGame->unk263[i] = gCurrentPinballGame->unk263[i + 1]; + gCurrentPinballGame->evoItemShufflePool[i] = gCurrentPinballGame->evoItemShufflePool[i + 1]; index = (Random() + gMain.systemFrameCount) % 7; - gCurrentPinballGame->unk260[1] = gCurrentPinballGame->unk263[index]; + gCurrentPinballGame->evoShuffledSlots[1] = gCurrentPinballGame->evoItemShufflePool[index]; for (i = index; i < 6; i++) - gCurrentPinballGame->unk263[i] = gCurrentPinballGame->unk263[i + 1]; + gCurrentPinballGame->evoItemShufflePool[i] = gCurrentPinballGame->evoItemShufflePool[i + 1]; index = (Random() + gMain.systemFrameCount) % 6; - gCurrentPinballGame->unk260[2] = gCurrentPinballGame->unk263[index]; + gCurrentPinballGame->evoShuffledSlots[2] = gCurrentPinballGame->evoItemShufflePool[index]; for (i = index; i < 5; i++) - gCurrentPinballGame->unk263[i] = gCurrentPinballGame->unk263[i + 1]; + gCurrentPinballGame->evoItemShufflePool[i] = gCurrentPinballGame->evoItemShufflePool[i + 1]; if (gMain.selectedField == FIELD_SAPPHIRE && gCurrentPinballGame->numCompletedBonusStages < 5) { for (i = 0; i < 3; i++) { - if (gCurrentPinballGame->unk260[i] == 5) + if (gCurrentPinballGame->evoShuffledSlots[i] == 5) { index = (Random() + gMain.systemFrameCount) % 5; - gCurrentPinballGame->unk260[i] = gCurrentPinballGame->unk263[index]; + gCurrentPinballGame->evoShuffledSlots[i] = gCurrentPinballGame->evoItemShufflePool[index]; } } } } - gCurrentPinballGame->unk250++; - gCurrentPinballGame->unk17++; + gCurrentPinballGame->evoModeShuffleRound++; + gCurrentPinballGame->boardSubState++; break; case 1: - gCurrentPinballGame->unk25E = gCurrentPinballGame->unk260[gCurrentPinballGame->unk26B]; - gCurrentPinballGame->unk258 = gUnknown_086ACFA0[gMain.selectedField][gCurrentPinballGame->unk25E].x; - gCurrentPinballGame->unk25A = gUnknown_086ACFA0[gMain.selectedField][gCurrentPinballGame->unk25E].y; - gCurrentPinballGame->unk26E = 80; - gMain.unk44[40]->available = 1; - gCurrentPinballGame->unk17++; + gCurrentPinballGame->evoItemSlotIndex = gCurrentPinballGame->evoShuffledSlots[gCurrentPinballGame->evoItemsCaught]; + gCurrentPinballGame->evoItemPosX = gEvoItemPositions[gMain.selectedField][gCurrentPinballGame->evoItemSlotIndex].x; + gCurrentPinballGame->evoItemPosY = gEvoItemPositions[gMain.selectedField][gCurrentPinballGame->evoItemSlotIndex].y; + gCurrentPinballGame->evoItemAppearTimer = 80; + gMain.fieldSpriteGroups[40]->available = 1; + gCurrentPinballGame->boardSubState++; break; case 2: - sub_278F4(); - gCurrentPinballGame->unk18 = 0; + UpdateEvolutionItemAnimation(); + gCurrentPinballGame->stageTimer = 0; break; case 3: - gCurrentPinballGame->unk730 = 1; - if (gCurrentPinballGame->unk18 < 8) + gCurrentPinballGame->trapAnimState = 1; + if (gCurrentPinballGame->stageTimer < 8) { - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - sub_219A8(); - gCurrentPinballGame->unk730 = 2; - gCurrentPinballGame->unk17++; + ShowBonusTrapSprite(); + gCurrentPinballGame->trapAnimState = 2; + gCurrentPinballGame->boardSubState++; } break; case 4: - sub_219EC(); - if (gCurrentPinballGame->unk25 == 4) - gCurrentPinballGame->unk17++; + AnimateBonusTrapSprite(); + if (gCurrentPinballGame->ballCatchState == 4) + gCurrentPinballGame->boardSubState++; break; case 5: - gCurrentPinballGame->unk294 = 3; - gCurrentPinballGame->unk5A0 = gCurrentPinballGame->currentSpecies; - sub_31CF8(1); - gCurrentPinballGame->unk5A2 = gCurrentPinballGame->currentSpecies; - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk17++; + gCurrentPinballGame->boardModeType = 3; + gCurrentPinballGame->preEvoSpecies = gCurrentPinballGame->currentSpecies; + RegisterCaptureOrEvolution(1); + gCurrentPinballGame->postEvoSpecies = gCurrentPinballGame->currentSpecies; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardSubState++; break; case 6: - if (gCurrentPinballGame->unk28 == 148) + if (gCurrentPinballGame->modeAnimTimer == 148) { - gCurrentPinballGame->unk28++; + gCurrentPinballGame->modeAnimTimer++; if (gMain.spriteGroups[13].available) { - if (gCurrentPinballGame->unk2BC >= 80) + if (gCurrentPinballGame->chikoritaProjectileTimer >= 80) { - sub_2D204(); - if (gCurrentPinballGame->unk17 == 6) - gCurrentPinballGame->unk18++; + RunEvolutionCutscene(); + if (gCurrentPinballGame->boardSubState == 6) + gCurrentPinballGame->stageTimer++; } } else { - sub_2D204(); - if (gCurrentPinballGame->unk17 == 6) - gCurrentPinballGame->unk18++; + RunEvolutionCutscene(); + if (gCurrentPinballGame->boardSubState == 6) + gCurrentPinballGame->stageTimer++; } } break; case 7: - if (gCurrentPinballGame->unk28 == 148) + if (gCurrentPinballGame->modeAnimTimer == 148) { - gCurrentPinballGame->unk28++; - if (gCurrentPinballGame->unk18 < 280) + gCurrentPinballGame->modeAnimTimer++; + if (gCurrentPinballGame->stageTimer < 280) { - if (gCurrentPinballGame->unk18 == 0) + if (gCurrentPinballGame->stageTimer == 0) { - sub_2312C(); + InitEvolutionSuccessDisplay(); m4aSongNumStart(MUS_SUCCESS2); } else { - sub_23300(); - if (gCurrentPinballGame->unk18 < 230) + AnimateEvolutionSuccessScreen(); + if (gCurrentPinballGame->stageTimer < 230) { - if (gCurrentPinballGame->unk210 == 150) - gCurrentPinballGame->unk210--; + if (gCurrentPinballGame->nameRevealAnimFrame == 150) + gCurrentPinballGame->nameRevealAnimFrame--; } - if (gCurrentPinballGame->unk18 == 270) + if (gCurrentPinballGame->stageTimer == 270) { - sub_1C7F4(0, 0); - gCurrentPinballGame->unk6C4 = 0; + LoadPortraitGraphics(0, 0); + gCurrentPinballGame->portraitDisplayState = 0; } if (gCurrentPinballGame->scoreCounterAnimationEnabled) - gCurrentPinballGame->unk18 = 181; + gCurrentPinballGame->stageTimer = 181; - if (gCurrentPinballGame->unk18 == 180) { + if (gCurrentPinballGame->stageTimer == 180) { gCurrentPinballGame->scoreCounterAnimationEnabled = TRUE; gCurrentPinballGame->scoreAddedInFrame = 5000000; } } - if (gCurrentPinballGame->unk18 < 30) + if (gCurrentPinballGame->stageTimer < 30) { - gMain.unk2C = 1; - var0 = gCurrentPinballGame->unk18; - gCurrentPinballGame->unk298 = gCurrentPinballGame->unk18; + gMain.scoreOverlayActive = 1; + var0 = gCurrentPinballGame->stageTimer; + gCurrentPinballGame->cutsceneTilemapColumn = gCurrentPinballGame->stageTimer; for (i = 0; i <= var0; i++) { for (j = 2; j < 12; j++) - gUnknown_03005C00[((j + 15) * 0x20) + i] = 0xC100; + gBG0TilemapBuffer[((j + 15) * 0x20) + i] = 0xC100; } - DmaCopy16(3, gUnknown_03005C00, (void *)0x06002000, 0x800); + DmaCopy16(3, gBG0TilemapBuffer, (void *)0x06002000, 0x800); } - if (gCurrentPinballGame->unk18 >= 240 && gCurrentPinballGame->unk18 < 270) + if (gCurrentPinballGame->stageTimer >= 240 && gCurrentPinballGame->stageTimer < 270) { - var0 = gCurrentPinballGame->unk18 - 240; + var0 = gCurrentPinballGame->stageTimer - 240; for (i = 0; i <= var0; i ++) { for (j = 2; j < 12; j++) - gUnknown_03005C00[((j + 15) << 5) + i] = 0x1FF; + gBG0TilemapBuffer[((j + 15) << 5) + i] = 0x1FF; } - DmaCopy16(3, gUnknown_03005C00, (void *)0x06002000, 0x800); - if (gCurrentPinballGame->unk18 == 269) + DmaCopy16(3, gBG0TilemapBuffer, (void *)0x06002000, 0x800); + if (gCurrentPinballGame->stageTimer == 269) { - gMain.unk2C = 0; + gMain.scoreOverlayActive = 0; gMain.blendControl = 0; gMain.blendBrightness = 0; gMain.blendAlpha = 0; } } - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unk28 = 40; + gCurrentPinballGame->modeAnimTimer = 40; } } - else if (gCurrentPinballGame->unk28 == 24) + else if (gCurrentPinballGame->modeAnimTimer == 24) { - if (gCurrentPinballGame->unk723 < 3) + if (gCurrentPinballGame->evoItemCount < 3) { - gCurrentPinballGame->unk721 = gCurrentPinballGame->unk723; - gCurrentPinballGame->unk722 = gCurrentPinballGame->unk723; - gCurrentPinballGame->unk71D[gCurrentPinballGame->unk721] = 1; - gCurrentPinballGame->unk720 = 120; - gCurrentPinballGame->unk723++; - if (gCurrentPinballGame->unk723 < 3) + gCurrentPinballGame->evoCatchLightSlot1 = gCurrentPinballGame->evoItemCount; + gCurrentPinballGame->evoCatchLightSlot2 = gCurrentPinballGame->evoItemCount; + gCurrentPinballGame->catchLights[gCurrentPinballGame->evoCatchLightSlot1] = 1; + gCurrentPinballGame->evoBlinkTimer = 120; + gCurrentPinballGame->evoItemCount++; + if (gCurrentPinballGame->evoItemCount < 3) { - gCurrentPinballGame->unk722 = gCurrentPinballGame->unk723; - gCurrentPinballGame->unk71D[gCurrentPinballGame->unk722] = 1; - gCurrentPinballGame->unk720 = 120; - gCurrentPinballGame->unk723++; + gCurrentPinballGame->evoCatchLightSlot2 = gCurrentPinballGame->evoItemCount; + gCurrentPinballGame->catchLights[gCurrentPinballGame->evoCatchLightSlot2] = 1; + gCurrentPinballGame->evoBlinkTimer = 120; + gCurrentPinballGame->evoItemCount++; } } if (gCurrentPinballGame->currentSpecies == SPECIES_NINJASK) { gCurrentPinballGame->caughtMonCount++; - if (gCurrentPinballGame->unk62B < 99) - gCurrentPinballGame->unk62B++; + if (gCurrentPinballGame->bonusMonCatchCount < 99) + gCurrentPinballGame->bonusMonCatchCount++; if (gCurrentPinballGame->caughtMonCount == 15) - gCurrentPinballGame->unk286 = 92; + gCurrentPinballGame->oneUpAnimTimer = 92; } gCurrentPinballGame->caughtMonCount++; if (gCurrentPinballGame->caughtMonCount == 15) - gCurrentPinballGame->unk286 = 92; + gCurrentPinballGame->oneUpAnimTimer = 92; - if (gCurrentPinballGame->unk62B < 99) - gCurrentPinballGame->unk62B++; + if (gCurrentPinballGame->bonusMonCatchCount < 99) + gCurrentPinballGame->bonusMonCatchCount++; - gCurrentPinballGame->unk17++; - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->boardSubState++; + gCurrentPinballGame->stageTimer = 0; } break; case 8: - group = gMain.unk44[32]; + group = gMain.fieldSpriteGroups[32]; oamSimple = &group->oam[0]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset - 56; - gMain.unk44[32]->available = 0; - sub_278F4(); - gMain.unk44[40]->available = 0; - gCurrentPinballGame->unkE4 = 0; - sub_219EC(); - gMain.unk44[13]->available = 0; - gCurrentPinballGame->unk1A4 = 1; - gCurrentPinballGame->unk1B4 = 0; - gCurrentPinballGame->unk1A5 = 0; - gCurrentPinballGame->unk17++; - if (gCurrentPinballGame->unk714) - gCurrentPinballGame->unk6EE = 120; + gMain.fieldSpriteGroups[32]->available = 0; + UpdateEvolutionItemAnimation(); + gMain.fieldSpriteGroups[40]->available = 0; + gCurrentPinballGame->activePortraitType = 0; + AnimateBonusTrapSprite(); + gMain.fieldSpriteGroups[13]->available = 0; + gCurrentPinballGame->shopTransitionActive = 1; + gCurrentPinballGame->shopAnimTimer = 0; + gCurrentPinballGame->evolutionShopActive = 0; + gCurrentPinballGame->boardSubState++; + if (gCurrentPinballGame->allHolesLit) + gCurrentPinballGame->allHolesLitDelayTimer = 120; break; case 9: - sub_26EA4(); - gCurrentPinballGame->unk17++; + CleanupEvolutionModeState(); + gCurrentPinballGame->boardSubState++; break; case 10: - if (gCurrentPinballGame->unk18) + if (gCurrentPinballGame->stageTimer) { - gCurrentPinballGame->unk18--; + gCurrentPinballGame->stageTimer--; } else { - if (gCurrentPinballGame->unk71D[2] == 1) - sub_19B64(3); + if (gCurrentPinballGame->catchLights[2] == 1) + RequestBoardStateTransition(3); else - sub_19B64(1); + RequestBoardStateTransition(1); - gCurrentPinballGame->unk17 = 0; + gCurrentPinballGame->boardSubState = 0; } break; } } -void sub_278F4(void) +void UpdateEvolutionItemAnimation(void) { s16 i; struct SpriteGroup *group; @@ -3374,43 +3374,43 @@ void sub_278F4(void) s16 index; index = (gMain.systemFrameCount % 75) / 3; - group = gMain.unk44[32]; - if (gCurrentPinballGame->unk26E) + group = gMain.fieldSpriteGroups[32]; + if (gCurrentPinballGame->evoItemAppearTimer) { - group = gMain.unk44[40]; - if (gCurrentPinballGame->unk26E == 80) + group = gMain.fieldSpriteGroups[40]; + if (gCurrentPinballGame->evoItemAppearTimer == 80) { - gCurrentPinballGame->unkE4 = 15; - DmaCopy16(3, gEvoItemAppear_GfxList[gCurrentPinballGame->unk25F], (void *)0x06015800, 0x1C00); - DmaCopy16(3, &gUnknown_0815C4C4[gCurrentPinballGame->unk25F], (void *)0x050003E0, 0x20); - gCurrentPinballGame->unk626 = 0; - gCurrentPinballGame->unk628 = 0; + gCurrentPinballGame->activePortraitType = 15; + DmaCopy16(3, gEvoItemAppear_GfxList[gCurrentPinballGame->evoItemGfxIndex], (void *)0x06015800, 0x1C00); + DmaCopy16(3, &gEvoItemPalettes[gCurrentPinballGame->evoItemGfxIndex], (void *)0x050003E0, 0x20); + gCurrentPinballGame->evoItemAnimFrame = 0; + gCurrentPinballGame->evoItemAnimFrameTimer = 0; } - if (gCurrentPinballGame->unk26E == 60) + if (gCurrentPinballGame->evoItemAppearTimer == 60) MPlayStart(&gMPlayInfo_SE1, &se_unk_84); - if (gUnknown_086AE0E6[gCurrentPinballGame->unk626] > gCurrentPinballGame->unk628) + if (gEvoItemAppearFrameThresholds[gCurrentPinballGame->evoItemAnimFrame] > gCurrentPinballGame->evoItemAnimFrameTimer) { - gCurrentPinballGame->unk628++; + gCurrentPinballGame->evoItemAnimFrameTimer++; } else { - gCurrentPinballGame->unk628 = 1; - gCurrentPinballGame->unk626++; - if (gCurrentPinballGame->unk626 == 29) + gCurrentPinballGame->evoItemAnimFrameTimer = 1; + gCurrentPinballGame->evoItemAnimFrame++; + if (gCurrentPinballGame->evoItemAnimFrame == 29) { - gCurrentPinballGame->unk626 = 28; - gCurrentPinballGame->unk26E = 1; - gMain.unk44[40]->available = 0; - gMain.unk44[32]->available = 1; + gCurrentPinballGame->evoItemAnimFrame = 28; + gCurrentPinballGame->evoItemAppearTimer = 1; + gMain.fieldSpriteGroups[40]->available = 0; + gMain.fieldSpriteGroups[32]->available = 1; MPlayStart(&gMPlayInfo_SE1, &se_unk_85); - gCurrentPinballGame->unkE4 = 0; + gCurrentPinballGame->activePortraitType = 0; } } - group->baseX = gCurrentPinballGame->unk258 - gCurrentPinballGame->unk58 + 8; - group->baseY = gCurrentPinballGame->unk25A - gCurrentPinballGame->unk5A + 8; + group->baseX = gCurrentPinballGame->evoItemPosX - gCurrentPinballGame->cameraXOffset + 8; + group->baseY = gCurrentPinballGame->evoItemPosY - gCurrentPinballGame->cameraYOffset + 8; if (group->baseY < -30) group->baseY = -30; if (group->baseY > 200) @@ -3420,42 +3420,42 @@ void sub_278F4(void) { oamSimple = &group->oam[i]; dst = (u16 *)&gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_086B4202[gCurrentPinballGame->unk626][i * 3 + 0]; - *dst++ = gUnknown_086B4202[gCurrentPinballGame->unk626][i * 3 + 1]; - *dst++ = gUnknown_086B4202[gCurrentPinballGame->unk626][i * 3 + 2]; + *dst++ = gEvoItemAnimOamFramesets[gCurrentPinballGame->evoItemAnimFrame][i * 3 + 0]; + *dst++ = gEvoItemAnimOamFramesets[gCurrentPinballGame->evoItemAnimFrame][i * 3 + 1]; + *dst++ = gEvoItemAnimOamFramesets[gCurrentPinballGame->evoItemAnimFrame][i * 3 + 2]; gOamBuffer[oamSimple->oamId].x += group->baseX; gOamBuffer[oamSimple->oamId].y += group->baseY; } - gCurrentPinballGame->unk26E--; + gCurrentPinballGame->evoItemAppearTimer--; } else { - tempVector.x = gCurrentPinballGame->ball->positionQ0.x - (gCurrentPinballGame->unk258 + 8); - tempVector.y = gCurrentPinballGame->ball->positionQ0.y - (gCurrentPinballGame->unk25A + 8); + tempVector.x = gCurrentPinballGame->ball->positionQ0.x - (gCurrentPinballGame->evoItemPosX + 8); + tempVector.y = gCurrentPinballGame->ball->positionQ0.y - (gCurrentPinballGame->evoItemPosY + 8); xx = tempVector.x * tempVector.x; yy = tempVector.y * tempVector.y; squaredMagnitude = xx + yy; if (squaredMagnitude < 82 && - ((gCurrentPinballGame->unk24 == 0 && gCurrentPinballGame->unk25E <= 5) || (gCurrentPinballGame->unk24 == 2 && gCurrentPinballGame->unk25E > 5)) && - gCurrentPinballGame->unk26B < 3) + ((gCurrentPinballGame->boardLayerDepth == 0 && gCurrentPinballGame->evoItemSlotIndex <= 5) || (gCurrentPinballGame->boardLayerDepth == 2 && gCurrentPinballGame->evoItemSlotIndex > 5)) && + gCurrentPinballGame->evoItemsCaught < 3) { gCurrentPinballGame->scoreAddedInFrame = 10000; MPlayStart(&gMPlayInfo_SE1, &se_unk_86); - gCurrentPinballGame->unk17 = 1; - gCurrentPinballGame->unk71D[gCurrentPinballGame->unk26B] = 5; - gCurrentPinballGame->unk26B++; - gMain.unk44[32]->available = 0; - if (gCurrentPinballGame->unk26B == 3) + gCurrentPinballGame->boardSubState = 1; + gCurrentPinballGame->catchLights[gCurrentPinballGame->evoItemsCaught] = 5; + gCurrentPinballGame->evoItemsCaught++; + gMain.fieldSpriteGroups[32]->available = 0; + if (gCurrentPinballGame->evoItemsCaught == 3) { - gCurrentPinballGame->unk26B = 0; - gCurrentPinballGame->unk17 = 3; + gCurrentPinballGame->evoItemsCaught = 0; + gCurrentPinballGame->boardSubState = 3; } } - group->baseX = gCurrentPinballGame->unk258 - gCurrentPinballGame->unk58 - 8; - group->baseY = gCurrentPinballGame->unk25A - gCurrentPinballGame->unk5A - 8; + group->baseX = gCurrentPinballGame->evoItemPosX - gCurrentPinballGame->cameraXOffset - 8; + group->baseY = gCurrentPinballGame->evoItemPosY - gCurrentPinballGame->cameraYOffset - 8; if (group->baseY < -30) group->baseY = -30; if (group->baseY > 200) @@ -3464,79 +3464,79 @@ void sub_278F4(void) if (index > 14) index = 14; - DmaCopy16(3, gUnknown_086AD49C[gCurrentPinballGame->unk25F] + index * 0x200, (void *)0x060116C0, 0x200); + DmaCopy16(3, gEvoItemTilesGfxPtrs[gCurrentPinballGame->evoItemGfxIndex] + index * 0x200, (void *)0x060116C0, 0x200); oamSimple = &group->oam[0]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } } -void sub_27D44(void) +void CleanupCatchEmState(void) { s16 i; - gCurrentPinballGame->unk5A5 = 0; - gCurrentPinballGame->unk5A9 = 0; - gMain.unk44[18]->available = 0; - gMain.unk44[12]->available = 0; - gCurrentPinballGame->unk5F2 = 0; - sub_1C7F4(0, 0); - gCurrentPinballGame->unk6C4 = 0; - sub_4D648(); + gCurrentPinballGame->creatureHitCount = 0; + gCurrentPinballGame->captureFlashTimer = 0; + gMain.fieldSpriteGroups[18]->available = 0; + gMain.fieldSpriteGroups[12]->available = 0; + gCurrentPinballGame->jirachiCollisionEnabled = 0; + LoadPortraitGraphics(0, 0); + gCurrentPinballGame->portraitDisplayState = 0; + ResetEventState(); for (i = 0; i < 6; i++) - gCurrentPinballGame->unk6D3[i] = 13; + gCurrentPinballGame->hatchTilePalette[i] = 13; for (i = 0; i < 3; i++) { - if (i < gCurrentPinballGame->unk723) - gCurrentPinballGame->unk71D[i] = 1; + if (i < gCurrentPinballGame->evoItemCount) + gCurrentPinballGame->catchLights[i] = 1; else - gCurrentPinballGame->unk71D[i] = 0; + gCurrentPinballGame->catchLights[i] = 0; } } -void sub_27E08(void) +void InitCatchEmMode(void) { s16 i, j; - gCurrentPinballGame->unk17 = 0; - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk294 = 1; + gCurrentPinballGame->boardSubState = 0; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardModeType = 1; gCurrentPinballGame->eventTimer = gCurrentPinballGame->timerBonus + BONUS_CATCH_TIME; gCurrentPinballGame->timerBonus = 0; - gCurrentPinballGame->unk5A5 = 0; - gCurrentPinballGame->unk5AA = 0; - gCurrentPinballGame->unk5A9 = 0; + gCurrentPinballGame->creatureHitCount = 0; + gCurrentPinballGame->creatureHitCooldown = 0; + gCurrentPinballGame->captureFlashTimer = 0; gCurrentPinballGame->hatchTilesBoardAcknowledged = 0; gCurrentPinballGame->hatchSequentialTilesRevealed = 0; gCurrentPinballGame->hatchTilesBumperAcknowledged = 0; gCurrentPinballGame->hatchSequentialTileRevealFrameAnimTimer = 0; gCurrentPinballGame->hatchFrameId = 0; - gCurrentPinballGame->unk72F = 0; - gCurrentPinballGame->unk731 = 0; + gCurrentPinballGame->catchArrowProgress = 0; + gCurrentPinballGame->catchProgressFlashing = 0; - if (gCurrentPinballGame->unk29A == 0) + if (gCurrentPinballGame->catchEmModeStartCount == 0) { - gCurrentPinballGame->unk724 = 6000; + gCurrentPinballGame->modeTimeRemaining = 6000; } else { - gCurrentPinballGame->unk724 = 4200; + gCurrentPinballGame->modeTimeRemaining = 4200; } - gCurrentPinballGame->unk29A++; + gCurrentPinballGame->catchEmModeStartCount++; - DmaCopy16(3, gUnknown_081C0064, (void *)PLTT + 0x180, 0x20); + DmaCopy16(3, gDefaultBallPalette, (void *)PLTT + 0x180, 0x20); for (i = 0; i < 6; i++) { - gCurrentPinballGame->unk6CD[i] = i; + gCurrentPinballGame->hatchTileShufflePool[i] = i; } - gCurrentPinballGame->unk6C8 = gMain.systemFrameCount % 6; - gCurrentPinballGame->unk6C9 = 5; + gCurrentPinballGame->hatchGridCellIndex = gMain.systemFrameCount % 6; + gCurrentPinballGame->hatchTilesRemaining = 5; - for (j = gCurrentPinballGame->unk6C8; j < gCurrentPinballGame->unk6C9; j++) + for (j = gCurrentPinballGame->hatchGridCellIndex; j < gCurrentPinballGame->hatchTilesRemaining; j++) { - gCurrentPinballGame->unk6CD[j] = gCurrentPinballGame->unk6CD[j+1]; + gCurrentPinballGame->hatchTileShufflePool[j] = gCurrentPinballGame->hatchTileShufflePool[j+1]; } } diff --git a/src/rom_27F94.c b/src/rom_27F94.c index 755de78..bac8ad7 100644 --- a/src/rom_27F94.c +++ b/src/rom_27F94.c @@ -3,42 +3,42 @@ #include "main.h" #include "constants/bg_music.h" -extern u8 gUnknown_0202C7A0[]; -extern u8 gUnknown_020306D0[]; -extern u8 gUnknown_020306F0; -extern u8 gUnknown_02030710; -extern u8 gUnknown_02030730; -extern struct Unk02031520 gUnknown_02031520; -extern u8 gUnknown_020315D0[]; +extern u8 gCatchSpriteFrameBuffer[]; +extern u8 gCatchSpritePalettes[]; +extern u8 gCatchSequencePalA; +extern u8 gCatchSequencePalB; +extern u8 gCatchSequencePalC; +extern struct BoardConfig gBoardConfig; +extern u8 gCatchSpritePaletteBuffer[]; -extern const u8 gUnknown_0839C78C[]; -extern const u8 gUnknown_0839DBAC[]; -extern const u8 gUnknown_08137F14; -extern const u8 gUnknown_08138014[]; -extern const u8 gUnknown_081428D4[]; -extern const u16 gUnknown_081B0FE4[][0x30]; -extern const u8 gUnknown_081C0064[]; -extern const u8 gUnknown_0844AA0C[][0x480]; -extern const u8 gUnknown_084C156C[]; -extern const s16 gUnknown_086ACF38[34]; -extern const u8 gUnknown_086ACF80[]; -extern const s8 gUnknown_086ACFF4[]; -extern u16 gUnknown_086AD180[][7]; -extern const s16 gUnknown_086AD436[8][2]; -extern const struct Vector16 gUnknown_086AE124[]; -extern const s16 gUnknown_086AE1A4[][12]; -extern const u16 gUnknown_086AE154[][10]; -extern const s16 gUnknown_086AE234[][16]; -extern const s16 gUnknown_086AE2F4[][2]; -extern const s16 gUnknown_086AE30C[]; -extern const s16 gUnknown_086AE318[6]; -extern const u8 (*gUnknown_086B15B4[])[0x20]; -extern const u16 gUnknown_086B263C[68][3][3]; -extern const u16 gUnknown_086B4E3E[][3]; -extern const u16 gUnknown_086B53B4[][3]; -extern const u16 gUnknown_086B55DC[14][18]; -extern const u8 (*gUnknown_086BB6F4[])[0x480]; +extern const u8 gSapphireCatchTilesGfx[]; +extern const u8 gSapphireCatchPalette[]; +extern const u8 gBallFlashPalette; +extern const u8 gBallUpgradeTilesGfx[]; +extern const u8 gCaptureScreenTilesGfx[]; +extern const u16 gPokeballCaptureOamFrames[][0x30]; +extern const u8 gDefaultBallPalette[]; +extern const u8 gBasketAnimationTilesGfx[][0x480]; +extern const u8 gPikachuSaverTilesGfx[]; +extern const s16 gCaptureSequenceTimings[34]; +extern const u8 gCapturePalette[]; +extern const s8 gCaptureShakeOffsets[]; +extern u16 gRouletteWheelContents[][7]; +extern const s16 gHatchSequentialFrameData[8][2]; +extern const struct Vector16 gJirachiWaypoints[]; +extern const s16 gHatchPieceAnimIndices[][12]; +extern const u16 gJirachiStarFrameIndices[][10]; +extern const s16 gHatchRevealPieceIndices[][16]; +extern const s16 gHatchPieceVelocities[][2]; +extern const s16 gHatchPieceAffineModes[]; +extern const s16 gHatchPieceMatrixNums[6]; +extern const u8 (*gMonIconPalettes[])[0x20]; +extern const u16 gSapphireFloatOamFramesets[68][3][3]; +extern const u16 gHatchParticleOamAttributes[][3]; +extern const u16 gHatchAnimOamAttributes[][3]; +extern const u16 gSapphireHatchOamFramesets[14][18]; +extern const u8 (*gCatchSpriteGfxPtrs[])[0x480]; extern struct SongHeader se_unk_84; extern struct SongHeader se_unk_81; @@ -52,115 +52,115 @@ enum HatchTileRevealStates { }; -void sub_27F94(void) +void UpdateCatchEmMode(void) { s16 i; - if (gCurrentPinballGame->unk294 && gCurrentPinballGame->eventTimer < 2 && gCurrentPinballGame->unk17 < 10) + if (gCurrentPinballGame->boardModeType && gCurrentPinballGame->eventTimer < 2 && gCurrentPinballGame->boardSubState < 10) { m4aMPlayAllStop(); m4aSongNumStart(MUS_END_OF_BALL2); - gCurrentPinballGame->unk18 = 200; - gCurrentPinballGame->unk17 = 10; + gCurrentPinballGame->stageTimer = 200; + gCurrentPinballGame->boardSubState = 10; } - switch (gCurrentPinballGame->unk17) + switch (gCurrentPinballGame->boardSubState) { case 0: BuildSpeciesWeightsForCatchEmMode(); - gCurrentPinballGame->unk17++; + gCurrentPinballGame->boardSubState++; break; case 1: PickSpeciesForCatchEmMode(); if (gMain.mainState != STATE_GAME_IDLE) SaveFile_SetPokedexFlags(gCurrentPinballGame->currentSpecies, 1); - gCurrentPinballGame->unk17++; + gCurrentPinballGame->boardSubState++; break; case 2: - sub_28AE0(); + LoadCatchSpriteGraphics(); gCurrentPinballGame->catchModeArrows = 0; - gCurrentPinballGame->unk17++; + gCurrentPinballGame->boardSubState++; break; case 3: - sub_1C7F4(3, 0); + LoadPortraitGraphics(3, 0); gCurrentPinballGame->hatchTileRevealState = HATCH_TILE_REVEAL_NONE; - gCurrentPinballGame->unk602 = 0; - gCurrentPinballGame->unk17++; + gCurrentPinballGame->hatchRevealPhase = 0; + gCurrentPinballGame->boardSubState++; for (i = 0; i < 6; i++) - gCurrentPinballGame->unk6D3[i] = 15; + gCurrentPinballGame->hatchTilePalette[i] = 15; break; case 4: // init hatch mode if (gMain.modeChangeFlags == MODE_CHANGE_NONE) { if (gMain.selectedField == FIELD_RUBY) { - if (gCurrentPinballGame->unk28 == 94) + if (gCurrentPinballGame->modeAnimTimer == 94) { m4aMPlayAllStop(); } - else if (gCurrentPinballGame->unk28 == 93) + else if (gCurrentPinballGame->modeAnimTimer == 93) { gMain.modeChangeFlags |= MODE_CHANGE_BANNER; - gCurrentPinballGame->unkEA = 0; - gCurrentPinballGame->unkEC = 120; - gCurrentPinballGame->unkE8 = 0; - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unkEE = 0; - gCurrentPinballGame->unkF2 = 2; - gCurrentPinballGame->unkFA = 1; - gCurrentPinballGame->unkFB = 1; - gCurrentPinballGame->unkF4 = 80; - gCurrentPinballGame->unkF6 = -2500; - gCurrentPinballGame->unkF0 = 50; - gCurrentPinballGame->unkF8 = 0; - DmaCopy16(3, gUnknown_086ACEF8[2], (void *)0x06015800, 0x2400); - DmaCopy16(3, gUnknown_086ACF18[2], (void *)0x050003C0, 0x20); + gCurrentPinballGame->bannerDelayTimer = 0; + gCurrentPinballGame->bannerDisplayTimer = 120; + gCurrentPinballGame->cameraYScrollTarget = 0; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->cameraYScrollSpeed = 0; + gCurrentPinballGame->bannerGfxIndex = 2; + gCurrentPinballGame->bannerActive = 1; + gCurrentPinballGame->bannerPreserveBallState = 1; + gCurrentPinballGame->bannerDisplayDuration = 80; + gCurrentPinballGame->bannerSlidePosition = -2500; + gCurrentPinballGame->bannerSlideTimer = 50; + gCurrentPinballGame->bannerSlideVelocity = 0; + DmaCopy16(3, gModeBannerTilemaps[2], (void *)0x06015800, 0x2400); + DmaCopy16(3, gModeBannerPalettes[2], (void *)0x050003C0, 0x20); gMain.blendControl = 0xCE; } - else if (gCurrentPinballGame->unk28 == 73) + else if (gCurrentPinballGame->modeAnimTimer == 73) { m4aSongNumStart(MUS_CATCH_EM_MODE); } - else if (gCurrentPinballGame->unk28 < 17) + else if (gCurrentPinballGame->modeAnimTimer < 17) { - gCurrentPinballGame->unk294 = 2; - gCurrentPinballGame->unk17++; + gCurrentPinballGame->boardModeType = 2; + gCurrentPinballGame->boardSubState++; } } else // Sapphire board { - if (gCurrentPinballGame->unk28 == 68) + if (gCurrentPinballGame->modeAnimTimer == 68) { m4aMPlayAllStop(); } - else if (gCurrentPinballGame->unk28 == 67) + else if (gCurrentPinballGame->modeAnimTimer == 67) { gMain.modeChangeFlags |= MODE_CHANGE_BANNER; - gCurrentPinballGame->unkEA = 0; - gCurrentPinballGame->unkEC = 120; - gCurrentPinballGame->unkE8 = 0; - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unkEE = 0; - gCurrentPinballGame->unkF2 = 2; - gCurrentPinballGame->unkFA = 1; - gCurrentPinballGame->unkFB = 1; - gCurrentPinballGame->unkF4 = 80; - gCurrentPinballGame->unkF6 = -2500; - gCurrentPinballGame->unkF0 = 50; - gCurrentPinballGame->unkF8 = 0; - DmaCopy16(3, gUnknown_086ACEF8[2], (void *)0x06015800, 0x2400); - DmaCopy16(3, gUnknown_086ACF18[2], (void *)0x050003C0, 0x20); + gCurrentPinballGame->bannerDelayTimer = 0; + gCurrentPinballGame->bannerDisplayTimer = 120; + gCurrentPinballGame->cameraYScrollTarget = 0; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->cameraYScrollSpeed = 0; + gCurrentPinballGame->bannerGfxIndex = 2; + gCurrentPinballGame->bannerActive = 1; + gCurrentPinballGame->bannerPreserveBallState = 1; + gCurrentPinballGame->bannerDisplayDuration = 80; + gCurrentPinballGame->bannerSlidePosition = -2500; + gCurrentPinballGame->bannerSlideTimer = 50; + gCurrentPinballGame->bannerSlideVelocity = 0; + DmaCopy16(3, gModeBannerTilemaps[2], (void *)0x06015800, 0x2400); + DmaCopy16(3, gModeBannerPalettes[2], (void *)0x050003C0, 0x20); gMain.blendControl = 0xCE; } - else if (gCurrentPinballGame->unk28 == 47) + else if (gCurrentPinballGame->modeAnimTimer == 47) { m4aSongNumStart(MUS_CATCH_EM_MODE2); } - else if (gCurrentPinballGame->unk28 == 0) + else if (gCurrentPinballGame->modeAnimTimer == 0) { - gCurrentPinballGame->unk294 = 2; - gCurrentPinballGame->unk17++; + gCurrentPinballGame->boardModeType = 2; + gCurrentPinballGame->boardSubState++; } } } @@ -168,120 +168,120 @@ void sub_27F94(void) CheckHatchTileRevealState(); return; case 5: // hatch mode running - gCurrentPinballGame->unk729 = 1; + gCurrentPinballGame->evoArrowPaletteActive = 1; CheckHatchTileRevealState(); - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->stageTimer = 0; return; case 6: - gCurrentPinballGame->unk729 = 0; - if (gCurrentPinballGame->unk18 == 0) + gCurrentPinballGame->evoArrowPaletteActive = 0; + if (gCurrentPinballGame->stageTimer == 0) { - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unkE4 = 10; - DmaCopy16(3, gUnknown_0839C78C, (void *)0x06015800, 0x1400); - DmaCopy16(3, gUnknown_0839DBAC, (void *)0x050003C0, 0x20); + gCurrentPinballGame->activePortraitType = 10; + DmaCopy16(3, gSapphireCatchTilesGfx, (void *)0x06015800, 0x1400); + DmaCopy16(3, gSapphireCatchPalette, (void *)0x050003C0, 0x20); m4aSongNumStart(SE_UNKNOWN_0xA7); - gCurrentPinballGame->unk17++; - gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->boardSubState++; + gCurrentPinballGame->stageTimer = 0; } break; case 7: - sub_293D8(); + PlayEggCrackAnimation(); return; case 8: - sub_29624(); - DmaCopy16(3, gUnknown_086ACF80, (void *)0x050003E0, 0x20); - DmaCopy16(3, gUnknown_020306D0, (void *)0x050003A0, 0x20); - gCurrentPinballGame->unk288 = 118; - gCurrentPinballGame->unk28A = 264; - gCurrentPinballGame->unk720 = 0; - gCurrentPinballGame->unk71D[0] = 2; - gCurrentPinballGame->unk71D[1] = 2; - gCurrentPinballGame->unk71D[2] = 2; - sub_28C90(); - gCurrentPinballGame->unk5F2 = 1; - gCurrentPinballGame->unk17++; - gCurrentPinballGame->unk29C = 140; - PlayCry_Normal(gSpeciesInfo[gCurrentPinballGame->currentSpecies].mainSeriesIndexNumber, 0); - gCurrentPinballGame->unk18 = 0; + ResetHatchFrameState(); + DmaCopy16(3, gCapturePalette, (void *)0x050003E0, 0x20); + DmaCopy16(3, gCatchSpritePalettes, (void *)0x050003A0, 0x20); + gCurrentPinballGame->catchTargetX = 118; + gCurrentPinballGame->catchTargetY = 264; + gCurrentPinballGame->evoBlinkTimer = 0; + gCurrentPinballGame->catchLights[0] = 2; + gCurrentPinballGame->catchLights[1] = 2; + gCurrentPinballGame->catchLights[2] = 2; + DrawCaughtPokemonSprite(); + gCurrentPinballGame->jirachiCollisionEnabled = 1; + gCurrentPinballGame->boardSubState++; + gCurrentPinballGame->bgmFadeTimer = 140; + PlayCry_Normal(gSpeciesInfo[gCurrentPinballGame->currentSpecies].speciesIdRS, 0); + gCurrentPinballGame->stageTimer = 0; return; case 9: - if (gCurrentPinballGame->unk18 == 0) + if (gCurrentPinballGame->stageTimer == 0) { - gCurrentPinballGame->unkEC = 0; - gCurrentPinballGame->unk18++; + gCurrentPinballGame->bannerDisplayTimer = 0; + gCurrentPinballGame->stageTimer++; } - sub_28C90(); - if (gCurrentPinballGame->unk5AA) - gCurrentPinballGame->unk5AA--; + DrawCaughtPokemonSprite(); + if (gCurrentPinballGame->creatureHitCooldown) + gCurrentPinballGame->creatureHitCooldown--; break; case 10: - sub_28E2C(); - sub_2530C(); - gCurrentPinballGame->unk17++; + CleanupCaughtPokemonSprite(); + DisableHatchTileDisplay(); + gCurrentPinballGame->boardSubState++; break; case 11: - sub_27D44(); - gCurrentPinballGame->unk17++; + CleanupCatchEmState(); + gCurrentPinballGame->boardSubState++; break; case 12: - gCurrentPinballGame->unk729 = 0; - if (gCurrentPinballGame->unk18) + gCurrentPinballGame->evoArrowPaletteActive = 0; + if (gCurrentPinballGame->stageTimer) { - gCurrentPinballGame->unk18--; + gCurrentPinballGame->stageTimer--; } else { - if (gCurrentPinballGame->unk71D[2] == 1) - sub_19B64(3); + if (gCurrentPinballGame->catchLights[2] == 1) + RequestBoardStateTransition(3); else - sub_19B64(1); + RequestBoardStateTransition(1); - gCurrentPinballGame->unk17 = 0; + gCurrentPinballGame->boardSubState = 0; } break; } } -void sub_28404(void) +void InitJirachiBonus(void) { - gCurrentPinballGame->unk17 = 0; - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk294 = 1; + gCurrentPinballGame->boardSubState = 0; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardModeType = 1; gCurrentPinballGame->eventTimer = gCurrentPinballGame->timerBonus + 1800; gCurrentPinballGame->timerBonus = 0; - gCurrentPinballGame->unk5A5 = 0; - gCurrentPinballGame->unk5AA = 0; - gCurrentPinballGame->unk5A9 = 0; - gCurrentPinballGame->unk7C = 0; - gCurrentPinballGame->unk80 = 900; - gCurrentPinballGame->unk82 = -1400; - gCurrentPinballGame->unk73 = 0; - gCurrentPinballGame->unkBC = 0; - gCurrentPinballGame->unkBE = 0; - gCurrentPinballGame->unkC0 = 0; - gCurrentPinballGame->unkC2 = 0; - gCurrentPinballGame->unkC4 = 0; - gCurrentPinballGame->unkC6 = 0; - gCurrentPinballGame->unk72F = 0; - gCurrentPinballGame->unk731 = 0; - gCurrentPinballGame->unk74[0] = 0; - gCurrentPinballGame->unk74[1] = 10; - gCurrentPinballGame->unk74[2] = 20; - gCurrentPinballGame->unk74[3] = 30; - gCurrentPinballGame->unk724 = 3240; - gCurrentPinballGame->unk714 = 0; + gCurrentPinballGame->creatureHitCount = 0; + gCurrentPinballGame->creatureHitCooldown = 0; + gCurrentPinballGame->captureFlashTimer = 0; + gCurrentPinballGame->jirachiWaypointTimer = 0; + gCurrentPinballGame->jirachiLogicX = 900; + gCurrentPinballGame->jirachiLogicY = -1400; + gCurrentPinballGame->jirachiWaypoint = 0; + gCurrentPinballGame->jirachiTargetX = 0; + gCurrentPinballGame->jirachiTargetY = 0; + gCurrentPinballGame->jirachiDisplayX = 0; + gCurrentPinballGame->jirachiDisplayY = 0; + gCurrentPinballGame->jirachiCenterX = 0; + gCurrentPinballGame->jirachiCenterY = 0; + gCurrentPinballGame->catchArrowProgress = 0; + gCurrentPinballGame->catchProgressFlashing = 0; + gCurrentPinballGame->jirachiTagTimer[0] = 0; + gCurrentPinballGame->jirachiTagTimer[1] = 10; + gCurrentPinballGame->jirachiTagTimer[2] = 20; + gCurrentPinballGame->jirachiTagTimer[3] = 30; + gCurrentPinballGame->modeTimeRemaining = 3240; + gCurrentPinballGame->allHolesLit = 0; gCurrentPinballGame->holeIndicators[0] = 0; gCurrentPinballGame->holeIndicators[1] = gCurrentPinballGame->holeIndicators[0]; gCurrentPinballGame->holeIndicators[2] = gCurrentPinballGame->holeIndicators[0]; gCurrentPinballGame->holeIndicators[3] = gCurrentPinballGame->holeIndicators[0]; - DmaCopy16(3, gUnknown_081C0064, (void *)0x05000180, 0x20); + DmaCopy16(3, gDefaultBallPalette, (void *)0x05000180, 0x20); } -void sub_28544(void) +void UpdateJirachiBonus(void) { struct Vector32 tempVec; struct Vector32 deltaVec; @@ -290,125 +290,125 @@ void sub_28544(void) int deltaMagSquared; u16 var0; - switch (gCurrentPinballGame->unk17) + switch (gCurrentPinballGame->boardSubState) { case 0: gCurrentPinballGame->currentSpecies = SPECIES_JIRACHI; - sub_28AE0(); - gCurrentPinballGame->unk17++; + LoadCatchSpriteGraphics(); + gCurrentPinballGame->boardSubState++; return; case 1: if (gMain.modeChangeFlags == MODE_CHANGE_NONE) { if (gMain.selectedField == FIELD_RUBY) { - if (gCurrentPinballGame->unk28 == 94) + if (gCurrentPinballGame->modeAnimTimer == 94) { m4aMPlayAllStop(); } - else if (gCurrentPinballGame->unk28 == 93) + else if (gCurrentPinballGame->modeAnimTimer == 93) { gMain.modeChangeFlags |= MODE_CHANGE_BANNER; - gCurrentPinballGame->unkEA = 0; - gCurrentPinballGame->unkEC = 120; - gCurrentPinballGame->unkE8 = 0; - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unkEE = 0; - gCurrentPinballGame->unkF2 = 5; - gCurrentPinballGame->unkFA = 1; - gCurrentPinballGame->unkFB = 1; - gCurrentPinballGame->unkF4 = 80; - gCurrentPinballGame->unkF6 = -2500; - gCurrentPinballGame->unkF0 = 50; - gCurrentPinballGame->unkF8 = 0; - DmaCopy16(3, gUnknown_086ACEF8[5], (void *)0x06015800, 0x2400); - DmaCopy16(3, gUnknown_086ACF18[5], (void *)0x050003C0, 0x20); + gCurrentPinballGame->bannerDelayTimer = 0; + gCurrentPinballGame->bannerDisplayTimer = 120; + gCurrentPinballGame->cameraYScrollTarget = 0; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->cameraYScrollSpeed = 0; + gCurrentPinballGame->bannerGfxIndex = 5; + gCurrentPinballGame->bannerActive = 1; + gCurrentPinballGame->bannerPreserveBallState = 1; + gCurrentPinballGame->bannerDisplayDuration = 80; + gCurrentPinballGame->bannerSlidePosition = -2500; + gCurrentPinballGame->bannerSlideTimer = 50; + gCurrentPinballGame->bannerSlideVelocity = 0; + DmaCopy16(3, gModeBannerTilemaps[5], (void *)0x06015800, 0x2400); + DmaCopy16(3, gModeBannerPalettes[5], (void *)0x050003C0, 0x20); gMain.blendControl = 0xCE; } - else if (gCurrentPinballGame->unk28 == 73) + else if (gCurrentPinballGame->modeAnimTimer == 73) { m4aSongNumStart(MUS_JIRACHI); } - else if (gCurrentPinballGame->unk28 == 40) + else if (gCurrentPinballGame->modeAnimTimer == 40) { - gCurrentPinballGame->unk17++; + gCurrentPinballGame->boardSubState++; } } else { - if (gCurrentPinballGame->unk28 == 68) + if (gCurrentPinballGame->modeAnimTimer == 68) { m4aMPlayAllStop(); } - else if (gCurrentPinballGame->unk28 == 67) + else if (gCurrentPinballGame->modeAnimTimer == 67) { gMain.modeChangeFlags |= MODE_CHANGE_BANNER; - gCurrentPinballGame->unkEA = 0; - gCurrentPinballGame->unkEC = 120; - gCurrentPinballGame->unkE8 = 0; - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unkEE = 0; - gCurrentPinballGame->unkF2 = 5; - gCurrentPinballGame->unkFA = 1; - gCurrentPinballGame->unkFB = 1; - gCurrentPinballGame->unkF4 = 80; - gCurrentPinballGame->unkF6 = -2500; - gCurrentPinballGame->unkF0 = 50; - gCurrentPinballGame->unkF8 = 0; - DmaCopy16(3, gUnknown_086ACEF8[5], (void *)0x06015800, 0x2400); - DmaCopy16(3, gUnknown_086ACF18[5], (void *)0x050003C0, 0x20); + gCurrentPinballGame->bannerDelayTimer = 0; + gCurrentPinballGame->bannerDisplayTimer = 120; + gCurrentPinballGame->cameraYScrollTarget = 0; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->cameraYScrollSpeed = 0; + gCurrentPinballGame->bannerGfxIndex = 5; + gCurrentPinballGame->bannerActive = 1; + gCurrentPinballGame->bannerPreserveBallState = 1; + gCurrentPinballGame->bannerDisplayDuration = 80; + gCurrentPinballGame->bannerSlidePosition = -2500; + gCurrentPinballGame->bannerSlideTimer = 50; + gCurrentPinballGame->bannerSlideVelocity = 0; + DmaCopy16(3, gModeBannerTilemaps[5], (void *)0x06015800, 0x2400); + DmaCopy16(3, gModeBannerPalettes[5], (void *)0x050003C0, 0x20); gMain.blendControl = 0xCE; return; } - else if (gCurrentPinballGame->unk28 == 47) + else if (gCurrentPinballGame->modeAnimTimer == 47) { m4aSongNumStart(MUS_JIRACHI); return; } - else if (gCurrentPinballGame->unk28 == 40) + else if (gCurrentPinballGame->modeAnimTimer == 40) { - gCurrentPinballGame->unk17++; + gCurrentPinballGame->boardSubState++; } } } - else if ((gMain.modeChangeFlags & MODE_CHANGE_BANNER) && gCurrentPinballGame->unkF0 == 1) + else if ((gMain.modeChangeFlags & MODE_CHANGE_BANNER) && gCurrentPinballGame->bannerSlideTimer == 1) { - gCurrentPinballGame->unk6C4 = 3; + gCurrentPinballGame->portraitDisplayState = 3; return; } break; case 2: - DmaCopy16(3, gUnknown_086ACF80, (void *)0x050003E0, 0x20); - DmaCopy16(3, gUnknown_020306D0, (void *)0x050003A0, 0x20); - gCurrentPinballGame->unk720 = 0; - gCurrentPinballGame->unk71D[0] = 2; - gCurrentPinballGame->unk71D[1] = 2; - gCurrentPinballGame->unk71D[2] = 2; - gCurrentPinballGame->unk5F2 = 1; - gMain.unk44[33]->available = 1; - DmaCopy16(3, gUnknown_02030760, (void *)0x06010CA0, 0x480); - gCurrentPinballGame->unk28 = 40; - gCurrentPinballGame->unk80 = 900; - gCurrentPinballGame->unk82 = -1400; - gCurrentPinballGame->unk73 = 0; - gCurrentPinballGame->unkBC = gUnknown_086AE124[gCurrentPinballGame->unk73].x; - gCurrentPinballGame->unkBE = gUnknown_086AE124[gCurrentPinballGame->unk73].y; - gCurrentPinballGame->unk18 = 0; + DmaCopy16(3, gCapturePalette, (void *)0x050003E0, 0x20); + DmaCopy16(3, gCatchSpritePalettes, (void *)0x050003A0, 0x20); + gCurrentPinballGame->evoBlinkTimer = 0; + gCurrentPinballGame->catchLights[0] = 2; + gCurrentPinballGame->catchLights[1] = 2; + gCurrentPinballGame->catchLights[2] = 2; + gCurrentPinballGame->jirachiCollisionEnabled = 1; + gMain.fieldSpriteGroups[33]->available = 1; + DmaCopy16(3, gCatchSpriteGfxBuffer, (void *)0x06010CA0, 0x480); + gCurrentPinballGame->modeAnimTimer = 40; + gCurrentPinballGame->jirachiLogicX = 900; + gCurrentPinballGame->jirachiLogicY = -1400; + gCurrentPinballGame->jirachiWaypoint = 0; + gCurrentPinballGame->jirachiTargetX = gJirachiWaypoints[gCurrentPinballGame->jirachiWaypoint].x; + gCurrentPinballGame->jirachiTargetY = gJirachiWaypoints[gCurrentPinballGame->jirachiWaypoint].y; + gCurrentPinballGame->stageTimer = 0; m4aSongNumStart(SE_JIRACHI_MOVE); - gCurrentPinballGame->unk17++; - gCurrentPinballGame->unkC0 = gCurrentPinballGame->unk80; - gCurrentPinballGame->unkC2 = gCurrentPinballGame->unk82; + gCurrentPinballGame->boardSubState++; + gCurrentPinballGame->jirachiDisplayX = gCurrentPinballGame->jirachiLogicX; + gCurrentPinballGame->jirachiDisplayY = gCurrentPinballGame->jirachiLogicY; return; case 3: - if (gCurrentPinballGame->unk5A4 == 2) + if (gCurrentPinballGame->captureState == 2) { - gCurrentPinballGame->unk288 = gCurrentPinballGame->unkC0 / 10 + 118; - gCurrentPinballGame->unk28A = gCurrentPinballGame->unkC2 / 10 + 272; + gCurrentPinballGame->catchTargetX = gCurrentPinballGame->jirachiDisplayX / 10 + 118; + gCurrentPinballGame->catchTargetY = gCurrentPinballGame->jirachiDisplayY / 10 + 272; } else { - deltaVec.x = gCurrentPinballGame->unkBC - gCurrentPinballGame->unk80; - deltaVec.y = gCurrentPinballGame->unkBE - gCurrentPinballGame->unk82; + deltaVec.x = gCurrentPinballGame->jirachiTargetX - gCurrentPinballGame->jirachiLogicX; + deltaVec.y = gCurrentPinballGame->jirachiTargetY - gCurrentPinballGame->jirachiLogicY; xx = deltaVec.x * deltaVec.x; yy = deltaVec.y * deltaVec.y; deltaMagSquared = xx + yy; @@ -417,21 +417,21 @@ void sub_28544(void) { tempVec.x = 0; tempVec.y = 0; - if (gCurrentPinballGame->unk7C < 200) + if (gCurrentPinballGame->jirachiWaypointTimer < 200) { - gCurrentPinballGame->unk7C++; + gCurrentPinballGame->jirachiWaypointTimer++; } else { - gCurrentPinballGame->unk7C = 0; - if (gCurrentPinballGame->unk73 < 11) - gCurrentPinballGame->unk73++; + gCurrentPinballGame->jirachiWaypointTimer = 0; + if (gCurrentPinballGame->jirachiWaypoint < 11) + gCurrentPinballGame->jirachiWaypoint++; else - gCurrentPinballGame->unk73 = 0; + gCurrentPinballGame->jirachiWaypoint = 0; m4aSongNumStart(SE_JIRACHI_MOVE); - gCurrentPinballGame->unkBC = gUnknown_086AE124[gCurrentPinballGame->unk73].x; - gCurrentPinballGame->unkBE = gUnknown_086AE124[gCurrentPinballGame->unk73].y; + gCurrentPinballGame->jirachiTargetX = gJirachiWaypoints[gCurrentPinballGame->jirachiWaypoint].x; + gCurrentPinballGame->jirachiTargetY = gJirachiWaypoints[gCurrentPinballGame->jirachiWaypoint].y; } } else @@ -440,72 +440,72 @@ void sub_28544(void) tempVec.y = (Sin(angle) * -7) / 20000; } - gCurrentPinballGame->unk80 += tempVec.x; - gCurrentPinballGame->unk82 += tempVec.y; - var0 = ((gCurrentPinballGame->unk18 % 80) << 0x10) / 80; - gCurrentPinballGame->unkC0 = gCurrentPinballGame->unk80; - gCurrentPinballGame->unkC2 = gCurrentPinballGame->unk82 + (Sin(var0) * 60) / 20000; + gCurrentPinballGame->jirachiLogicX += tempVec.x; + gCurrentPinballGame->jirachiLogicY += tempVec.y; + var0 = ((gCurrentPinballGame->stageTimer % 80) << 0x10) / 80; + gCurrentPinballGame->jirachiDisplayX = gCurrentPinballGame->jirachiLogicX; + gCurrentPinballGame->jirachiDisplayY = gCurrentPinballGame->jirachiLogicY + (Sin(var0) * 60) / 20000; } - if (gCurrentPinballGame->unk18 < 500) + if (gCurrentPinballGame->stageTimer < 500) { - gCurrentPinballGame->unk28 = 40; - if (gCurrentPinballGame->unk18 == 499) - gCurrentPinballGame->unk294 = 2; + gCurrentPinballGame->modeAnimTimer = 40; + if (gCurrentPinballGame->stageTimer == 499) + gCurrentPinballGame->boardModeType = 2; } - gCurrentPinballGame->unk18++; - sub_28EA0(); - if (gCurrentPinballGame->unk5AA) - gCurrentPinballGame->unk5AA--; + gCurrentPinballGame->stageTimer++; + DrawJirachiSprites(); + if (gCurrentPinballGame->creatureHitCooldown) + gCurrentPinballGame->creatureHitCooldown--; - if (gCurrentPinballGame->unk294 && gCurrentPinballGame->eventTimer < 2 && gCurrentPinballGame->unk17 < 5) + if (gCurrentPinballGame->boardModeType && gCurrentPinballGame->eventTimer < 2 && gCurrentPinballGame->boardSubState < 5) { m4aMPlayAllStop(); m4aSongNumStart(MUS_END_OF_BALL2); - gCurrentPinballGame->unk17 = 4; - gCurrentPinballGame->unk18 = 150; - gCurrentPinballGame->unk5F2 = 0; + gCurrentPinballGame->boardSubState = 4; + gCurrentPinballGame->stageTimer = 150; + gCurrentPinballGame->jirachiCollisionEnabled = 0; MPlayStart(&gMPlayInfo_SE1, &se_unk_84); } return; case 4: - if (gCurrentPinballGame->unk18) - gCurrentPinballGame->unk18--; + if (gCurrentPinballGame->stageTimer) + gCurrentPinballGame->stageTimer--; else - gCurrentPinballGame->unk17 = 5; + gCurrentPinballGame->boardSubState = 5; - sub_28EA0(); - if (gCurrentPinballGame->unk5AA) - gCurrentPinballGame->unk5AA--; + DrawJirachiSprites(); + if (gCurrentPinballGame->creatureHitCooldown) + gCurrentPinballGame->creatureHitCooldown--; break; case 5: - sub_28EA0(); - sub_292A0(); - sub_27D44(); - gCurrentPinballGame->unk72 = 240; - gCurrentPinballGame->unk17 = 6; - gCurrentPinballGame->unk18 = 0; + DrawJirachiSprites(); + CleanupJirachiSprites(); + CleanupCatchEmState(); + gCurrentPinballGame->jirachiActivationFlags = 240; + gCurrentPinballGame->boardSubState = 6; + gCurrentPinballGame->stageTimer = 0; return; case 6: - gCurrentPinballGame->unk729 = 0; - if (gCurrentPinballGame->unk18) + gCurrentPinballGame->evoArrowPaletteActive = 0; + if (gCurrentPinballGame->stageTimer) { - gCurrentPinballGame->unk18--; + gCurrentPinballGame->stageTimer--; } else { - if (gCurrentPinballGame->unk71D[2] == 1) - sub_19B64(3); + if (gCurrentPinballGame->catchLights[2] == 1) + RequestBoardStateTransition(3); else - sub_19B64(1); + RequestBoardStateTransition(1); - gCurrentPinballGame->unk17 = 0; + gCurrentPinballGame->boardSubState = 0; } } } -void sub_28AE0(void) +void LoadCatchSpriteGraphics(void) { s16 i; s16 catchIndex; @@ -515,20 +515,20 @@ void sub_28AE0(void) catchIndex = gSpeciesInfo[gCurrentPinballGame->currentSpecies].catchIndex; for (i = 0; i < 3; i++) { - sp0[i] = gUnknown_086BB6F4[catchIndex / 5][(i + (catchIndex % 5) * 3)]; - spC[i] = gUnknown_086B15B4[catchIndex / 5][i * 5 + catchIndex % 5]; + sp0[i] = gCatchSpriteGfxPtrs[catchIndex / 5][(i + (catchIndex % 5) * 3)]; + spC[i] = gMonIconPalettes[catchIndex / 5][i * 5 + catchIndex % 5]; } for (i = 0; i < 3; i++) { - DmaCopy16(3, sp0[i], &gUnknown_02030760[i * 0x480], 0x480); - DmaCopy16(3, spC[i], &gUnknown_020306D0[i * 0x20], 0x20); + DmaCopy16(3, sp0[i], &gCatchSpriteGfxBuffer[i * 0x480], 0x480); + DmaCopy16(3, spC[i], &gCatchSpritePalettes[i * 0x20], 0x20); } - DmaCopy16(3, gUnknown_086B15B4[0][15], &gUnknown_020306D0[0x60], 0x20); + DmaCopy16(3, gMonIconPalettes[0][15], &gCatchSpritePalettes[0x60], 0x20); } -void sub_28BFC(void) +void LoadEggSpriteGraphics(void) { s16 eggIndex; const u8 *src0; @@ -537,11 +537,11 @@ void sub_28BFC(void) eggIndex= gSpeciesInfo[gCurrentPinballGame->currentSpecies].eggIndex; src0 = gMonHatchSpriteGroupGfx[eggIndex / 6][eggIndex % 6]; src1 = gMonHatchSpriteGroupPals[eggIndex / 6][eggIndex % 6]; - DmaCopy16(3, src0, gUnknown_0202C7A0, 0x10E0); - DmaCopy16(3, src1, gUnknown_020315D0, 0x20); + DmaCopy16(3, src0, gCatchSpriteFrameBuffer, 0x10E0); + DmaCopy16(3, src1, gCatchSpritePaletteBuffer, 0x20); } -void sub_28C90(void) +void DrawCaughtPokemonSprite(void) { s16 i; struct SpriteGroup *group; @@ -550,34 +550,34 @@ void sub_28C90(void) s16 index; index = (gMain.fieldFrameCount % 50) / 25; - group = gMain.unk44[33]; + group = gMain.fieldSpriteGroups[33]; if (!group->available) return; - gCurrentPinballGame->unkC4 = 96; - gCurrentPinballGame->unkC6 = 288; - group->baseX = 96 - gCurrentPinballGame->unk58; - group->baseY = 288 - gCurrentPinballGame->unk5A; - if (gCurrentPinballGame->unk5A9 > 4) + gCurrentPinballGame->jirachiCenterX = 96; + gCurrentPinballGame->jirachiCenterY = 288; + group->baseX = 96 - gCurrentPinballGame->cameraXOffset; + group->baseY = 288 - gCurrentPinballGame->cameraYOffset; + if (gCurrentPinballGame->captureFlashTimer > 4) { - if (gCurrentPinballGame->unk5A9 == 20 || gCurrentPinballGame->unk5A9 == 200) + if (gCurrentPinballGame->captureFlashTimer == 20 || gCurrentPinballGame->captureFlashTimer == 200) { - DmaCopy16(3, gUnknown_02031060, (void *)0x06010CA0, 0x480); + DmaCopy16(3, gCatchSpriteFlashGfx, (void *)0x06010CA0, 0x480); } - if (gCurrentPinballGame->unk5A9 == 24) + if (gCurrentPinballGame->captureFlashTimer == 24) { - DmaCopy16(3, gUnknown_02030760, (void *)0x06010CA0, 0x480); + DmaCopy16(3, gCatchSpriteGfxBuffer, (void *)0x06010CA0, 0x480); } - gCurrentPinballGame->unk5A9--;; + gCurrentPinballGame->captureFlashTimer--;; } - else if (gCurrentPinballGame->unk1BC == 5) + else if (gCurrentPinballGame->randomSpriteVariantSeed == 5) { - DmaCopy16(3, &gUnknown_02030760[index * 0x480], (void *)0x06010CA0, 0x480); + DmaCopy16(3, &gCatchSpriteGfxBuffer[index * 0x480], (void *)0x06010CA0, 0x480); } - if (gCurrentPinballGame->unk5A8 < 13) + if (gCurrentPinballGame->captureSequenceTimer < 13) priority = 2; else priority = 1; @@ -594,13 +594,13 @@ void sub_28C90(void) } } -void sub_28E2C(void) +void CleanupCaughtPokemonSprite(void) { s16 i; struct SpriteGroup *group; struct OamDataSimple *oamSimple; - group = gMain.unk44[33]; + group = gMain.fieldSpriteGroups[33]; if (group->available) { for (i = 0; i < 4; i++) @@ -611,10 +611,10 @@ void sub_28E2C(void) } } - gMain.unk44[33]->available = 0; + gMain.fieldSpriteGroups[33]->available = 0; } -void sub_28EA0(void) +void DrawJirachiSprites(void) { s16 i, j; struct SpriteGroup *group; @@ -626,51 +626,51 @@ void sub_28EA0(void) s16 var1; index = (gMain.fieldFrameCount % 50) / 25; - group = gMain.unk44[33]; + group = gMain.fieldSpriteGroups[33]; if (group->available) { - gCurrentPinballGame->unkC4 = gCurrentPinballGame->unkC0 / 10 + 96; - gCurrentPinballGame->unkC6 = gCurrentPinballGame->unkC2 / 10 + 288; - group->baseX = gCurrentPinballGame->unkC0 / 10 + 96u - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unkC2 / 10 + 288u - gCurrentPinballGame->unk5A; - if (gCurrentPinballGame->unk17 > 3) + gCurrentPinballGame->jirachiCenterX = gCurrentPinballGame->jirachiDisplayX / 10 + 96; + gCurrentPinballGame->jirachiCenterY = gCurrentPinballGame->jirachiDisplayY / 10 + 288; + group->baseX = gCurrentPinballGame->jirachiDisplayX / 10 + 96u - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->jirachiDisplayY / 10 + 288u - gCurrentPinballGame->cameraYOffset; + if (gCurrentPinballGame->boardSubState > 3) { - if (gCurrentPinballGame->unk18 >= 90) + if (gCurrentPinballGame->stageTimer >= 90) { - index = (150 - gCurrentPinballGame->unk18) / 4; - DmaCopy16(3, &gUnknown_0844AA0C[index], (void *)0x06010CA0, 0x480); + index = (150 - gCurrentPinballGame->stageTimer) / 4; + DmaCopy16(3, &gBasketAnimationTilesGfx[index], (void *)0x06010CA0, 0x480); } else { group->baseY = 190; } } - else if (gCurrentPinballGame->unk5A9 > 4) + else if (gCurrentPinballGame->captureFlashTimer > 4) { - if (gCurrentPinballGame->unk5A9 == 20 || gCurrentPinballGame->unk5A9 == 200) + if (gCurrentPinballGame->captureFlashTimer == 20 || gCurrentPinballGame->captureFlashTimer == 200) { - DmaCopy16(3, gUnknown_02031060, (void *)0x06010CA0, 0x480); + DmaCopy16(3, gCatchSpriteFlashGfx, (void *)0x06010CA0, 0x480); } - if (gCurrentPinballGame->unk5A9 == 24) + if (gCurrentPinballGame->captureFlashTimer == 24) { - DmaCopy16(3, gUnknown_02030760, (void *)0x06010CA0, 0x480); + DmaCopy16(3, gCatchSpriteGfxBuffer, (void *)0x06010CA0, 0x480); } - gCurrentPinballGame->unk5A9--; + gCurrentPinballGame->captureFlashTimer--; } - else if (gCurrentPinballGame->unk1BC == 5) + else if (gCurrentPinballGame->randomSpriteVariantSeed == 5) { - DmaCopy16(3, &gUnknown_02030760[index * 0x480], (void *)0x06010CA0, 0x480); + DmaCopy16(3, &gCatchSpriteGfxBuffer[index * 0x480], (void *)0x06010CA0, 0x480); } - if (gCurrentPinballGame->unk5A4 != 2) + if (gCurrentPinballGame->captureState != 2) { priority = 1; } else { - if (gCurrentPinballGame->unk5A8 < 13) + if (gCurrentPinballGame->captureSequenceTimer < 13) priority = 2; else priority = 1; @@ -693,12 +693,12 @@ void sub_28EA0(void) for (j = 0; j < 4; j++) { - group = gMain.unk44[45 + j]; + group = gMain.fieldSpriteGroups[45 + j]; if (group->available) { - group->baseX = gCurrentPinballGame->unk84[j].x - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk84[j].y - gCurrentPinballGame->unk5A; - var1 = gUnknown_086AE154[j][9 - gCurrentPinballGame->unk74[j] / 4]; + group->baseX = gCurrentPinballGame->jirachiStarTagPos[j].x - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->jirachiStarTagPos[j].y - gCurrentPinballGame->cameraYOffset; + var1 = gJirachiStarFrameIndices[j][9 - gCurrentPinballGame->jirachiTagTimer[j] / 4]; if (group->baseY >= 200) group->baseY = 200; else if (group->baseY < -60) @@ -708,7 +708,7 @@ void sub_28EA0(void) { oamSimple = &group->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B263C[var1][i]; + src = gSapphireFloatOamFramesets[var1][i]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -718,33 +718,33 @@ void sub_28EA0(void) } } - if (gCurrentPinballGame->unk5A4 != 2 && gCurrentPinballGame->unk17 < 4) + if (gCurrentPinballGame->captureState != 2 && gCurrentPinballGame->boardSubState < 4) { - if (gCurrentPinballGame->unk74[j] == 0) + if (gCurrentPinballGame->jirachiTagTimer[j] == 0) { - gCurrentPinballGame->unk74[j] = 40; - gCurrentPinballGame->unk84[j].x = gCurrentPinballGame->unkC4; - gCurrentPinballGame->unk84[j].y = gCurrentPinballGame->unkC6 + 16; - gMain.unk44[45 + j]->available = 1; + gCurrentPinballGame->jirachiTagTimer[j] = 40; + gCurrentPinballGame->jirachiStarTagPos[j].x = gCurrentPinballGame->jirachiCenterX; + gCurrentPinballGame->jirachiStarTagPos[j].y = gCurrentPinballGame->jirachiCenterY + 16; + gMain.fieldSpriteGroups[45 + j]->available = 1; } } - if (gCurrentPinballGame->unk74[j]) + if (gCurrentPinballGame->jirachiTagTimer[j]) { - gCurrentPinballGame->unk74[j]--; - if (gCurrentPinballGame->unk74[j] == 0) - gMain.unk44[45 + j]->available = 0; + gCurrentPinballGame->jirachiTagTimer[j]--; + if (gCurrentPinballGame->jirachiTagTimer[j] == 0) + gMain.fieldSpriteGroups[45 + j]->available = 0; } } } -void sub_292A0(void) +void CleanupJirachiSprites(void) { s16 i; struct SpriteGroup *group; struct OamDataSimple *oamSimple; - group = gMain.unk44[33]; + group = gMain.fieldSpriteGroups[33]; if (group->available) { for (i = 0; i < 4; i++) @@ -755,15 +755,15 @@ void sub_292A0(void) } } - gMain.unk44[33]->available = 0; + gMain.fieldSpriteGroups[33]->available = 0; for (i = 0; i < 4; i++) - gMain.unk44[45 + i]->available = 0; + gMain.fieldSpriteGroups[45 + i]->available = 0; } void CheckHatchTileRevealState(void) { // Cross vertical threshold, check completion - if (gCurrentPinballGame->unk68 > 138) + if (gCurrentPinballGame->cameraYViewport > 138) { if (gCurrentPinballGame->hatchTileRevealState == HATCH_TILE_REVEAL_NONE && gCurrentPinballGame->hatchTilesBumperAcknowledged > 0) { @@ -789,14 +789,14 @@ void CheckHatchTileRevealState(void) RevealSequentialHatchTiles(); } -void sub_293D8(void) +void PlayEggCrackAnimation(void) { s16 i; struct SpriteGroup *group; struct OamDataSimple *oamSimple; u16 *dst; - if (gUnknown_086AD436[gCurrentPinballGame->hatchFrameId][1] > gCurrentPinballGame->hatchSequentialTileRevealFrameAnimTimer) + if (gHatchSequentialFrameData[gCurrentPinballGame->hatchFrameId][1] > gCurrentPinballGame->hatchSequentialTileRevealFrameAnimTimer) { gCurrentPinballGame->hatchSequentialTileRevealFrameAnimTimer++; } @@ -808,22 +808,22 @@ void sub_293D8(void) if (gCurrentPinballGame->hatchFrameId == 2 && gCurrentPinballGame->hatchSequentialTileRevealFrameAnimTimer > 3) { - gCurrentPinballGame->unk6C4 = 3; - gMain.unk44[33]->available = 1; + gCurrentPinballGame->portraitDisplayState = 3; + gMain.fieldSpriteGroups[33]->available = 1; } if (gCurrentPinballGame->hatchFrameId > 2) { - DmaCopy16(3, gUnknown_020306D0, (void *)0x050003A0, 0x20); - DmaCopy16(3, gUnknown_02030760, (void *)0x06010CA0, 0x480); - sub_28C90(); + DmaCopy16(3, gCatchSpritePalettes, (void *)0x050003A0, 0x20); + DmaCopy16(3, gCatchSpriteGfxBuffer, (void *)0x06010CA0, 0x480); + DrawCaughtPokemonSprite(); } - group = gMain.unk44[18]; + group = gMain.fieldSpriteGroups[18]; if (group->available) { - group->baseX = 96 - gCurrentPinballGame->unk58; - group->baseY = 296 - gCurrentPinballGame->unk5A; + group->baseX = 96 - gCurrentPinballGame->cameraXOffset; + group->baseY = 296 - gCurrentPinballGame->cameraYOffset; if (group->baseY >= 200) group->baseY = 200; @@ -831,51 +831,51 @@ void sub_293D8(void) { oamSimple = &group->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_086B55DC[gUnknown_086AD436[gCurrentPinballGame->hatchFrameId][0]][i*3+0]; - *dst++ = gUnknown_086B55DC[gUnknown_086AD436[gCurrentPinballGame->hatchFrameId][0]][i*3+1]; - *dst++ = gUnknown_086B55DC[gUnknown_086AD436[gCurrentPinballGame->hatchFrameId][0]][i*3+2]; + *dst++ = gSapphireHatchOamFramesets[gHatchSequentialFrameData[gCurrentPinballGame->hatchFrameId][0]][i*3+0]; + *dst++ = gSapphireHatchOamFramesets[gHatchSequentialFrameData[gCurrentPinballGame->hatchFrameId][0]][i*3+1]; + *dst++ = gSapphireHatchOamFramesets[gHatchSequentialFrameData[gCurrentPinballGame->hatchFrameId][0]][i*3+2]; gOamBuffer[oamSimple->oamId].x += group->baseX; gOamBuffer[oamSimple->oamId].y += group->baseY; } } - gMain.unk44[18]->available = 1; + gMain.fieldSpriteGroups[18]->available = 1; if (gCurrentPinballGame->hatchFrameId > 6) { - gCurrentPinballGame->unk17++; - gMain.unk44[18]->available = 0; - gCurrentPinballGame->unkE4 = 0; + gCurrentPinballGame->boardSubState++; + gMain.fieldSpriteGroups[18]->available = 0; + gCurrentPinballGame->activePortraitType = 0; } } -void sub_29624(void) +void ResetHatchFrameState(void) { s16 i; gCurrentPinballGame->hatchFrameId = 0; for (i = 0; i < 6; i++) - gCurrentPinballGame->unk6D3[i] = 13; + gCurrentPinballGame->hatchTilePalette[i] = 13; } -void sub_29664(void) +void InitSequentialTileParticles(void) { s16 i; for (i = 0; i < 6; i++) { - gCurrentPinballGame->unk5C0[i].x = 0; - gCurrentPinballGame->unk5C0[i].y = 0; - gCurrentPinballGame->unk5D8[i].x = 200 - (Random() % 400); - gCurrentPinballGame->unk5D8[i].y = 80 - (Random() % 550); - gCurrentPinballGame->unk5B9[i] = 10 + (Random() % 15); + gCurrentPinballGame->tileParticlePos[i].x = 0; + gCurrentPinballGame->tileParticlePos[i].y = 0; + gCurrentPinballGame->tileParticleVel[i].x = 200 - (Random() % 400); + gCurrentPinballGame->tileParticleVel[i].y = 80 - (Random() % 550); + gCurrentPinballGame->tileParticleGravity[i] = 10 + (Random() % 15); } - gCurrentPinballGame->unk606 = 0; - gMain.unk44[12]->available = 1; + gCurrentPinballGame->particleAnimTimer = 0; + gMain.fieldSpriteGroups[12]->available = 1; } -void sub_2971C(void) +void UpdateSequentialTileParticles(void) { s16 i; struct SpriteGroup *group; @@ -885,71 +885,71 @@ void sub_2971C(void) s16 var0; struct Vector16 tempVector; - group = gMain.unk44[12]; + group = gMain.fieldSpriteGroups[12]; if (group->available) { for (i = 0; i < 6; i++) { - var0 = gUnknown_086AE1A4[i][gCurrentPinballGame->unk606 / 4]; - gCurrentPinballGame->unk5D8[i].y += gCurrentPinballGame->unk5B9[i]; - if (gCurrentPinballGame->unk5C0[i].y < 14000) + var0 = gHatchPieceAnimIndices[i][gCurrentPinballGame->particleAnimTimer / 4]; + gCurrentPinballGame->tileParticleVel[i].y += gCurrentPinballGame->tileParticleGravity[i]; + if (gCurrentPinballGame->tileParticlePos[i].y < 14000) { - gCurrentPinballGame->unk5C0[i].x += gCurrentPinballGame->unk5D8[i].x; - gCurrentPinballGame->unk5C0[i].y += gCurrentPinballGame->unk5D8[i].y; + gCurrentPinballGame->tileParticlePos[i].x += gCurrentPinballGame->tileParticleVel[i].x; + gCurrentPinballGame->tileParticlePos[i].y += gCurrentPinballGame->tileParticleVel[i].y; } - tempVector.x = ((gCurrentPinballGame->unk6C8 % 3) * 16 + 96u - gCurrentPinballGame->unk58) + (gCurrentPinballGame->unk5C0[i].x / 100); - tempVector.y = ((gCurrentPinballGame->unk6C8 / 3) * 16 + 300u - gCurrentPinballGame->unk5A) + (gCurrentPinballGame->unk5C0[i].y / 100); + tempVector.x = ((gCurrentPinballGame->hatchGridCellIndex % 3) * 16 + 96u - gCurrentPinballGame->cameraXOffset) + (gCurrentPinballGame->tileParticlePos[i].x / 100); + tempVector.y = ((gCurrentPinballGame->hatchGridCellIndex / 3) * 16 + 300u - gCurrentPinballGame->cameraYOffset) + (gCurrentPinballGame->tileParticlePos[i].y / 100); if (tempVector.y >= 200) tempVector.y = 200; oamSimple = &group->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_086B53B4[var0][0]; - *dst++ = gUnknown_086B53B4[var0][1]; - *dst++ = gUnknown_086B53B4[var0][2]; + *dst++ = gHatchAnimOamAttributes[var0][0]; + *dst++ = gHatchAnimOamAttributes[var0][1]; + *dst++ = gHatchAnimOamAttributes[var0][2]; gOamBuffer[oamSimple->oamId].x += tempVector.x; gOamBuffer[oamSimple->oamId].y += tempVector.y; } } - if (gCurrentPinballGame->unk606 < 48) + if (gCurrentPinballGame->particleAnimTimer < 48) { - gCurrentPinballGame->unk606++; + gCurrentPinballGame->particleAnimTimer++; } else { gCurrentPinballGame->hatchSequentialTileRevealFrameAnimTimer = 0x7100; - gMain.unk44[12]->available = 0; + gMain.fieldSpriteGroups[12]->available = 0; } } -void sub_29924(void) +void InitBurstTileParticles(void) { s16 i; const struct Vector16 *var0; for (i = 0; i < 6; i++) { - gCurrentPinballGame->unk5C0[i].x = ((i % 3) * 16 - 24) * 100; - gCurrentPinballGame->unk5C0[i].y = ((i / 3) * 16 - 28) * 100; - gCurrentPinballGame->unk5D8[i].x = gUnknown_086AE2F4[i][0] - ((Random() % 200) - 60); - gCurrentPinballGame->unk5D8[i].y = gUnknown_086AE2F4[i][1] - ((Random() % 200) - 60); - gCurrentPinballGame->unk5B9[i] = (Random() % 4) + 1; + gCurrentPinballGame->tileParticlePos[i].x = ((i % 3) * 16 - 24) * 100; + gCurrentPinballGame->tileParticlePos[i].y = ((i / 3) * 16 - 28) * 100; + gCurrentPinballGame->tileParticleVel[i].x = gHatchPieceVelocities[i][0] - ((Random() % 200) - 60); + gCurrentPinballGame->tileParticleVel[i].y = gHatchPieceVelocities[i][1] - ((Random() % 200) - 60); + gCurrentPinballGame->tileParticleGravity[i] = (Random() % 4) + 1; } - gCurrentPinballGame->unk5C0[0].x = -5600; - gCurrentPinballGame->unk5C0[0].y = -6000; - gCurrentPinballGame->unk5B9[0] = 3; - gCurrentPinballGame->unk5C0[4].x = -4000; - gCurrentPinballGame->unk5C0[4].y = -4400; - gCurrentPinballGame->unk5B9[4] = 3; - gCurrentPinballGame->unk606 = 0; - gMain.unk44[12]->available = 1; + gCurrentPinballGame->tileParticlePos[0].x = -5600; + gCurrentPinballGame->tileParticlePos[0].y = -6000; + gCurrentPinballGame->tileParticleGravity[0] = 3; + gCurrentPinballGame->tileParticlePos[4].x = -4000; + gCurrentPinballGame->tileParticlePos[4].y = -4400; + gCurrentPinballGame->tileParticleGravity[4] = 3; + gCurrentPinballGame->particleAnimTimer = 0; + gMain.fieldSpriteGroups[12]->available = 1; } -void sub_29A6C(void) +void UpdateBurstTileParticles(void) { s16 i; struct SpriteGroup *group; @@ -960,42 +960,42 @@ void sub_29A6C(void) s16 sp0[6]; s16 scale; - group = gMain.unk44[12]; + group = gMain.fieldSpriteGroups[12]; if (group->available) { for (i = 0; i < 6; i++) { - index = gCurrentPinballGame->unk606 / 5; - sp0[i] = gUnknown_086AE234[i][index]; - if (gCurrentPinballGame->unk606 > 4) + index = gCurrentPinballGame->particleAnimTimer / 5; + sp0[i] = gHatchRevealPieceIndices[i][index]; + if (gCurrentPinballGame->particleAnimTimer > 4) { - gCurrentPinballGame->unk5D8[i].y += gCurrentPinballGame->unk5B9[i]; + gCurrentPinballGame->tileParticleVel[i].y += gCurrentPinballGame->tileParticleGravity[i]; if (i == 4) - gCurrentPinballGame->unk5D8[i].x += gCurrentPinballGame->unk5B9[4] * 4; + gCurrentPinballGame->tileParticleVel[i].x += gCurrentPinballGame->tileParticleGravity[4] * 4; - gCurrentPinballGame->unk5C0[i].x += gCurrentPinballGame->unk5D8[i].x; - gCurrentPinballGame->unk5C0[i].y += gCurrentPinballGame->unk5D8[i].y; + gCurrentPinballGame->tileParticlePos[i].x += gCurrentPinballGame->tileParticleVel[i].x; + gCurrentPinballGame->tileParticlePos[i].y += gCurrentPinballGame->tileParticleVel[i].y; } - tempVector.x = (gCurrentPinballGame->unk5C0[i].x / 100) + 96u - gCurrentPinballGame->unk58; - tempVector.y = (gCurrentPinballGame->unk5C0[i].y / 100) + 304u - gCurrentPinballGame->unk5A; + tempVector.x = (gCurrentPinballGame->tileParticlePos[i].x / 100) + 96u - gCurrentPinballGame->cameraXOffset; + tempVector.y = (gCurrentPinballGame->tileParticlePos[i].y / 100) + 304u - gCurrentPinballGame->cameraYOffset; if (tempVector.y >= 160) tempVector.y = 160; oamSimple = &group->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_086B4E3E[sp0[i]][0]; - *dst++ = gUnknown_086B4E3E[sp0[i]][1]; - *dst++ = gUnknown_086B4E3E[sp0[i]][2]; + *dst++ = gHatchParticleOamAttributes[sp0[i]][0]; + *dst++ = gHatchParticleOamAttributes[sp0[i]][1]; + *dst++ = gHatchParticleOamAttributes[sp0[i]][2]; gOamBuffer[oamSimple->oamId].x += tempVector.x; gOamBuffer[oamSimple->oamId].y += tempVector.y; - gOamBuffer[oamSimple->oamId].affineMode = gUnknown_086AE30C[i]; - gOamBuffer[oamSimple->oamId].matrixNum = gUnknown_086AE318[i]; + gOamBuffer[oamSimple->oamId].affineMode = gHatchPieceAffineModes[i]; + gOamBuffer[oamSimple->oamId].matrixNum = gHatchPieceMatrixNums[i]; } } - scale = ((gCurrentPinballGame->unk606 * gCurrentPinballGame->unk606 * 0xD0) / 0x510) + 0x80; + scale = ((gCurrentPinballGame->particleAnimTimer * gCurrentPinballGame->particleAnimTimer * 0xD0) / 0x510) + 0x80; if (sp0[0] == 4) scale = -scale; SetMatrixScale(scale, scale, 2); @@ -1005,47 +1005,47 @@ void sub_29A6C(void) scale = -scale; SetMatrixScale(scale, scale, 3); - scale = ((gCurrentPinballGame->unk606 * gCurrentPinballGame->unk606 * 0x100) / 0x510) + 0x80; + scale = ((gCurrentPinballGame->particleAnimTimer * gCurrentPinballGame->particleAnimTimer * 0x100) / 0x510) + 0x80; if (sp0[3] == 4) scale = -scale; SetMatrixScale(scale, scale, 4); - scale = ((gCurrentPinballGame->unk606 * gCurrentPinballGame->unk606 * 0x1C0) / 0x510) + 0x40; + scale = ((gCurrentPinballGame->particleAnimTimer * gCurrentPinballGame->particleAnimTimer * 0x1C0) / 0x510) + 0x40; if (sp0[4]== 4) scale = -scale; SetMatrixScale(scale, scale, 5); - if (gCurrentPinballGame->unk606 < 47) + if (gCurrentPinballGame->particleAnimTimer < 47) { - gCurrentPinballGame->unk606++; + gCurrentPinballGame->particleAnimTimer++; } else { gCurrentPinballGame->hatchSequentialTileRevealFrameAnimTimer = 0x7100; - gMain.unk44[12]->available = 0; + gMain.fieldSpriteGroups[12]->available = 0; } } -void sub_29D9C(void) +void InitRouletteWheel(void) { s16 i; - gMain.unk44[23]->available = 1; - gMain.unk44[20]->available = 1; - gMain.unk44[21]->available = 1; + gMain.fieldSpriteGroups[23]->available = 1; + gMain.fieldSpriteGroups[20]->available = 1; + gMain.fieldSpriteGroups[21]->available = 1; gMain.blendControl = 0x1C10; gMain.blendAlpha = BLDALPHA_BLEND(0, 16); - gCurrentPinballGame->unk6E8 = 0; - gCurrentPinballGame->unk6F2 = 8; - gCurrentPinballGame->unk6F4 = 0; - gCurrentPinballGame->unk6E0 = 0; - if (gCurrentPinballGame->unk6E9 == 25) - gCurrentPinballGame->unk6E9 = 10; + gCurrentPinballGame->rouletteStopRequested = 0; + gCurrentPinballGame->rouletteRotationPeriod = 8; + gCurrentPinballGame->rouletteSpinSpeed = 0; + gCurrentPinballGame->rouletteSubOffset = 0; + if (gCurrentPinballGame->rouletteLevel == 25) + gCurrentPinballGame->rouletteLevel = 10; for (i = 0; i < 6; i++) { - gCurrentPinballGame->unk6F8[i] = gUnknown_086AD180[gCurrentPinballGame->unk6E9][i]; - if (gCurrentPinballGame->unk6F8[i] == 41) + gCurrentPinballGame->rouletteSlotValues[i] = gRouletteWheelContents[gCurrentPinballGame->rouletteLevel][i]; + if (gCurrentPinballGame->rouletteSlotValues[i] == 41) { if (gMain.selectedField == FIELD_RUBY) { @@ -1053,14 +1053,14 @@ void sub_29D9C(void) { case 0: case 2: - gCurrentPinballGame->unk6F8[i] = 42; + gCurrentPinballGame->rouletteSlotValues[i] = 42; break; case 1: case 3: - gCurrentPinballGame->unk6F8[i] = 44; + gCurrentPinballGame->rouletteSlotValues[i] = 44; break; case 4: - gCurrentPinballGame->unk6F8[i] = 45; + gCurrentPinballGame->rouletteSlotValues[i] = 45; break; } } @@ -1070,361 +1070,361 @@ void sub_29D9C(void) { case 0: case 2: - gCurrentPinballGame->unk6F8[i] = 41; + gCurrentPinballGame->rouletteSlotValues[i] = 41; break; case 1: case 3: - gCurrentPinballGame->unk6F8[i] = 43; + gCurrentPinballGame->rouletteSlotValues[i] = 43; break; case 4: - gCurrentPinballGame->unk6F8[i] = 45; + gCurrentPinballGame->rouletteSlotValues[i] = 45; break; } } } - else if (gCurrentPinballGame->unk6F8[i] == 10) + else if (gCurrentPinballGame->rouletteSlotValues[i] == 10) { if (gCurrentPinballGame->ballUpgradeType < BALL_UPGRADE_TYPE_MASTER_BALL) - gCurrentPinballGame->unk6F8[i] = gCurrentPinballGame->ballUpgradeType + 10; + gCurrentPinballGame->rouletteSlotValues[i] = gCurrentPinballGame->ballUpgradeType + 10; else - gCurrentPinballGame->unk6F8[i] = 12; + gCurrentPinballGame->rouletteSlotValues[i] = 12; } - else if (gCurrentPinballGame->unk6F8[i] == 3) + else if (gCurrentPinballGame->rouletteSlotValues[i] == 3) { if (gCurrentPinballGame->outLanePikaPosition == 2) { if (gMain.systemFrameCount & 1) { if (gCurrentPinballGame->ballUpgradeType < BALL_UPGRADE_TYPE_MASTER_BALL) - gCurrentPinballGame->unk6F8[i] = gCurrentPinballGame->ballUpgradeType + 10; + gCurrentPinballGame->rouletteSlotValues[i] = gCurrentPinballGame->ballUpgradeType + 10; else - gCurrentPinballGame->unk6F8[i] = 12; + gCurrentPinballGame->rouletteSlotValues[i] = 12; } else { - gCurrentPinballGame->unk6F8[i] = 1; + gCurrentPinballGame->rouletteSlotValues[i] = 1; } } } - else if (gCurrentPinballGame->unk6F8[i] == 9) + else if (gCurrentPinballGame->rouletteSlotValues[i] == 9) { if (gCurrentPinballGame->evolvablePartySize <= 0) - gCurrentPinballGame->unk6F8[i] = 8; + gCurrentPinballGame->rouletteSlotValues[i] = 8; } } - gCurrentPinballGame->unk704 = 21; - if (gCurrentPinballGame->unk6E9 < 25) - gCurrentPinballGame->unk6E9++; + gCurrentPinballGame->roulettePortraitId = 21; + if (gCurrentPinballGame->rouletteLevel < 25) + gCurrentPinballGame->rouletteLevel++; - gCurrentPinballGame->unk6EA = 5; - if ((gCurrentPinballGame->unk72 & 0xF0) == 0 && gCurrentPinballGame->area > AREA_WILDERNESS) - gCurrentPinballGame->unk6EA++; + gCurrentPinballGame->rouletteSlotCount = 5; + if ((gCurrentPinballGame->jirachiActivationFlags & 0xF0) == 0 && gCurrentPinballGame->area > AREA_WILDERNESS) + gCurrentPinballGame->rouletteSlotCount++; - gCurrentPinballGame->unk6EB = 1; - gCurrentPinballGame->unk6EC[0] = gCurrentPinballGame->unk6F8[0]; - gCurrentPinballGame->unk6EC[1] = gCurrentPinballGame->unk6F8[1]; - sub_1C7F4(2, 0); - sub_1C7F4(2, 1); + gCurrentPinballGame->rouletteSlotCursor = 1; + gCurrentPinballGame->modeOutcomeValues[0] = gCurrentPinballGame->rouletteSlotValues[0]; + gCurrentPinballGame->modeOutcomeValues[1] = gCurrentPinballGame->rouletteSlotValues[1]; + LoadPortraitGraphics(2, 0); + LoadPortraitGraphics(2, 1); } -void sub_2A054(void) +void RunRouletteWheel(void) { if (gMain.selectedField == FIELD_SAPPHIRE) { - if (gCurrentPinballGame->unk6E8 == 0) + if (gCurrentPinballGame->rouletteStopRequested == 0) { - if ((gCurrentPinballGame->newButtonActions[1] || JOY_NEW(A_BUTTON)) && gCurrentPinballGame->unk37C) + if ((gCurrentPinballGame->newButtonActions[1] || JOY_NEW(A_BUTTON)) && gCurrentPinballGame->zigzagoonShockWallActive) { - gCurrentPinballGame->unk378 = 2; - if (gCurrentPinballGame->unk6E0 < 17) - gCurrentPinballGame->unk6EC[1] = gCurrentPinballGame->unk6EC[0]; + gCurrentPinballGame->zigzagoonState = 2; + if (gCurrentPinballGame->rouletteSubOffset < 17) + gCurrentPinballGame->modeOutcomeValues[1] = gCurrentPinballGame->modeOutcomeValues[0]; - gCurrentPinballGame->unk6E8 = 1; - gCurrentPinballGame->unk6F2 = 40; - gCurrentPinballGame->unk6F0 = 39; + gCurrentPinballGame->rouletteStopRequested = 1; + gCurrentPinballGame->rouletteRotationPeriod = 40; + gCurrentPinballGame->rouletteFrameIndex = 39; } } } - if (gCurrentPinballGame->unk6E8 == 0) + if (gCurrentPinballGame->rouletteStopRequested == 0) { - gCurrentPinballGame->unk6C4 = 1; - gCurrentPinballGame->unk6F0++; - if (gCurrentPinballGame->unk6F4) + gCurrentPinballGame->portraitDisplayState = 1; + gCurrentPinballGame->rouletteFrameIndex++; + if (gCurrentPinballGame->rouletteSpinSpeed) { - gCurrentPinballGame->unk6F4--; - if (gCurrentPinballGame->unk6F4 == 0) + gCurrentPinballGame->rouletteSpinSpeed--; + if (gCurrentPinballGame->rouletteSpinSpeed == 0) { - gCurrentPinballGame->unk6E8 = 1; + gCurrentPinballGame->rouletteStopRequested = 1; } else { - if (gCurrentPinballGame->unk6F0 == gCurrentPinballGame->unk6F2) + if (gCurrentPinballGame->rouletteFrameIndex == gCurrentPinballGame->rouletteRotationPeriod) { - gCurrentPinballGame->unk6F2 = 40 - (gCurrentPinballGame->unk6F4 * 34) / gCurrentPinballGame->unk6F6; - gCurrentPinballGame->unk6F0 = 0; + gCurrentPinballGame->rouletteRotationPeriod = 40 - (gCurrentPinballGame->rouletteSpinSpeed * 34) / gCurrentPinballGame->rouletteInitialSpeed; + gCurrentPinballGame->rouletteFrameIndex = 0; } } } else if (gCurrentPinballGame->newButtonActions[1] || JOY_NEW(A_BUTTON)) { - gCurrentPinballGame->unk6F4 = (Random() % 200) + 100; + gCurrentPinballGame->rouletteSpinSpeed = (Random() % 200) + 100; if (gMain.selectedField == FIELD_SAPPHIRE) { - if (gCurrentPinballGame->unk378 == 1) + if (gCurrentPinballGame->zigzagoonState == 1) { - gCurrentPinballGame->unk6F4 = 320; - gCurrentPinballGame->unk37C = 1; + gCurrentPinballGame->rouletteSpinSpeed = 320; + gCurrentPinballGame->zigzagoonShockWallActive = 1; } } - gCurrentPinballGame->unk6F6 = gCurrentPinballGame->unk6F4; + gCurrentPinballGame->rouletteInitialSpeed = gCurrentPinballGame->rouletteSpinSpeed; } - gCurrentPinballGame->unk6F0 %= gCurrentPinballGame->unk6F2; - gCurrentPinballGame->unk6E0 = (gCurrentPinballGame->unk6F0 * 32) / gCurrentPinballGame->unk6F2; + gCurrentPinballGame->rouletteFrameIndex %= gCurrentPinballGame->rouletteRotationPeriod; + gCurrentPinballGame->rouletteSubOffset = (gCurrentPinballGame->rouletteFrameIndex * 32) / gCurrentPinballGame->rouletteRotationPeriod; } else { - gCurrentPinballGame->unk6F0++; - gCurrentPinballGame->unk6F0 %= gCurrentPinballGame->unk6F2; - gCurrentPinballGame->unk6E0 = (gCurrentPinballGame->unk6F0 * 32) / gCurrentPinballGame->unk6F2; - if (gCurrentPinballGame->unk6F0 == 0) + gCurrentPinballGame->rouletteFrameIndex++; + gCurrentPinballGame->rouletteFrameIndex %= gCurrentPinballGame->rouletteRotationPeriod; + gCurrentPinballGame->rouletteSubOffset = (gCurrentPinballGame->rouletteFrameIndex * 32) / gCurrentPinballGame->rouletteRotationPeriod; + if (gCurrentPinballGame->rouletteFrameIndex == 0) { - gCurrentPinballGame->unk28 = 140; - gMain.unk44[23]->available = 0; - gMain.unk44[20]->available = 0; - gMain.unk44[21]->available = 0; - gCurrentPinballGame->unk6E0 = 0; - gCurrentPinballGame->unk6C4 = 0; + gCurrentPinballGame->modeAnimTimer = 140; + gMain.fieldSpriteGroups[23]->available = 0; + gMain.fieldSpriteGroups[20]->available = 0; + gMain.fieldSpriteGroups[21]->available = 0; + gCurrentPinballGame->rouletteSubOffset = 0; + gCurrentPinballGame->portraitDisplayState = 0; m4aMPlayStop(&gMPlayInfo_BGM); - gCurrentPinballGame->unk6DD = 1; - gCurrentPinballGame->unk6DE = 0; + gCurrentPinballGame->shopPurchaseConfirmed = 1; + gCurrentPinballGame->outcomeFrameCounter = 0; } } - if (gCurrentPinballGame->unk6F0 == 0) + if (gCurrentPinballGame->rouletteFrameIndex == 0) { - gCurrentPinballGame->unk6EC[0] = gCurrentPinballGame->unk6EC[1]; - sub_1C7F4(2, 0); - gCurrentPinballGame->unk6DC = gCurrentPinballGame->unk6EC[0]; + gCurrentPinballGame->modeOutcomeValues[0] = gCurrentPinballGame->modeOutcomeValues[1]; + LoadPortraitGraphics(2, 0); + gCurrentPinballGame->rouletteOutcomeId = gCurrentPinballGame->modeOutcomeValues[0]; } - if (gCurrentPinballGame->unk6F0 == 1) + if (gCurrentPinballGame->rouletteFrameIndex == 1) { - if (gCurrentPinballGame->unk6EB < gCurrentPinballGame->unk6EA) - gCurrentPinballGame->unk6EB++; + if (gCurrentPinballGame->rouletteSlotCursor < gCurrentPinballGame->rouletteSlotCount) + gCurrentPinballGame->rouletteSlotCursor++; else - gCurrentPinballGame->unk6EB = 0; + gCurrentPinballGame->rouletteSlotCursor = 0; - gCurrentPinballGame->unk6EC[1] = gCurrentPinballGame->unk6F8[gCurrentPinballGame->unk6EB]; - sub_1C7F4(2, 1); + gCurrentPinballGame->modeOutcomeValues[1] = gCurrentPinballGame->rouletteSlotValues[gCurrentPinballGame->rouletteSlotCursor]; + LoadPortraitGraphics(2, 1); MPlayStart(&gMPlayInfo_SE1, &se_unk_81); } } -void sub_2A354(void) +void ProcessRouletteOutcome(void) { - if (gCurrentPinballGame->unk6DE < 180) + if (gCurrentPinballGame->outcomeFrameCounter < 180) { - if (gCurrentPinballGame->unk6DE == 4) + if (gCurrentPinballGame->outcomeFrameCounter == 4) m4aSongNumStart(MUS_UNKNOWN_0x14); - if (gCurrentPinballGame->unk6DC == 3) + if (gCurrentPinballGame->rouletteOutcomeId == 3) { - if (gCurrentPinballGame->unk6DE == 120) + if (gCurrentPinballGame->outcomeFrameCounter == 120) m4aSongNumStart(SE_UNKNOWN_0xB2); } - gCurrentPinballGame->unk6DE++; - if (gCurrentPinballGame->unk6DE < 80) - sub_1C7F4(8, 0); + gCurrentPinballGame->outcomeFrameCounter++; + if (gCurrentPinballGame->outcomeFrameCounter < 80) + LoadPortraitGraphics(8, 0); } - switch (gCurrentPinballGame->unk6DC) + switch (gCurrentPinballGame->rouletteOutcomeId) { case 0: case 1: case 2: - gCurrentPinballGame->unk724 = (gCurrentPinballGame->unk6DC + 1) * 1800; + gCurrentPinballGame->modeTimeRemaining = (gCurrentPinballGame->rouletteOutcomeId + 1) * 1800; break; case 3: - if (gCurrentPinballGame->unk25 == 3) + if (gCurrentPinballGame->ballCatchState == 3) { - if (gCurrentPinballGame->unk6DE > 124) + if (gCurrentPinballGame->outcomeFrameCounter > 124) { - if (gCurrentPinballGame->unk1AE < 100) + if (gCurrentPinballGame->shopOutcomeRepeatCount < 100) { - gCurrentPinballGame->unk1AE++; - gCurrentPinballGame->unk6DE = 124; + gCurrentPinballGame->shopOutcomeRepeatCount++; + gCurrentPinballGame->outcomeFrameCounter = 124; } } - if (gCurrentPinballGame->unk6DE == 4) + if (gCurrentPinballGame->outcomeFrameCounter == 4) { - gCurrentPinballGame->unk1C6 = 168; - gCurrentPinballGame->unk1C8 = 168; - gCurrentPinballGame->unk1CC = 13; - gCurrentPinballGame->unk1CA = 13; - gCurrentPinballGame->unk1D0 = 0; - gCurrentPinballGame->unk1D6 = 120; - gCurrentPinballGame->unk1DC = 60; - DmaCopy16(3, gUnknown_084C156C, (void *)0x06010600, 0x180); + gCurrentPinballGame->pikaChargeTarget = 168; + gCurrentPinballGame->pikaChargeProgress = 168; + gCurrentPinballGame->prevCatchCounterValue = 13; + gCurrentPinballGame->catchCounterValue = 13; + gCurrentPinballGame->catchCounterSlideTimer = 0; + gCurrentPinballGame->catchCounterSlideOffsetY = 120; + gCurrentPinballGame->catchCounterBlinkTimer = 60; + DmaCopy16(3, gPikachuSaverTilesGfx, (void *)0x06010600, 0x180); gCurrentPinballGame->outLanePikaPosition = 2; - gMain.unk44[41]->available = 0; - gCurrentPinballGame->unk1C0 = 1; + gMain.fieldSpriteGroups[41]->available = 0; + gCurrentPinballGame->pikaSaverTimer = 1; } } else { - if (gCurrentPinballGame->unk6DE == 120) + if (gCurrentPinballGame->outcomeFrameCounter == 120) { gMain.modeChangeFlags |= MODE_CHANGE_BANNER; - gCurrentPinballGame->unkEA = 0; - gCurrentPinballGame->unkEC = 250; - gCurrentPinballGame->unkE8 = 272; - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unkEE = 2; - gCurrentPinballGame->unkF2 = 0; - gCurrentPinballGame->unkFA = 1; - gCurrentPinballGame->unkFB = 0; - gCurrentPinballGame->unk1BE = 1; - gCurrentPinballGame->unk1C0 = 800; + gCurrentPinballGame->bannerDelayTimer = 0; + gCurrentPinballGame->bannerDisplayTimer = 250; + gCurrentPinballGame->cameraYScrollTarget = 272; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->cameraYScrollSpeed = 2; + gCurrentPinballGame->bannerGfxIndex = 0; + gCurrentPinballGame->bannerActive = 1; + gCurrentPinballGame->bannerPreserveBallState = 0; + gCurrentPinballGame->pikaRescuePath = 1; + gCurrentPinballGame->pikaSaverTimer = 800; gCurrentPinballGame->outLanePikaPosition = 0; - gCurrentPinballGame->unk1C6 = 168; - gCurrentPinballGame->unk1C8 = 168; - gCurrentPinballGame->unk1CC = 13; - gCurrentPinballGame->unk1CA = 13; - gCurrentPinballGame->unk1D0 = 0; - gCurrentPinballGame->unk1D6 = 120; - gCurrentPinballGame->unk1DC = 60; + gCurrentPinballGame->pikaChargeTarget = 168; + gCurrentPinballGame->pikaChargeProgress = 168; + gCurrentPinballGame->prevCatchCounterValue = 13; + gCurrentPinballGame->catchCounterValue = 13; + gCurrentPinballGame->catchCounterSlideTimer = 0; + gCurrentPinballGame->catchCounterSlideOffsetY = 120; + gCurrentPinballGame->catchCounterBlinkTimer = 60; } - if (gCurrentPinballGame->unk1C0) + if (gCurrentPinballGame->pikaSaverTimer) { - if (gCurrentPinballGame->unk6DE >= 176) - gCurrentPinballGame->unk6DE = 176; + if (gCurrentPinballGame->outcomeFrameCounter >= 176) + gCurrentPinballGame->outcomeFrameCounter = 176; } } break; case 4: - if (gCurrentPinballGame->unk6DE == 130) - gCurrentPinballGame->unk286 = 90; + if (gCurrentPinballGame->outcomeFrameCounter == 130) + gCurrentPinballGame->oneUpAnimTimer = 90; break; case 5: - if (gCurrentPinballGame->unk6DE == 95) + if (gCurrentPinballGame->outcomeFrameCounter == 95) { - gCurrentPinballGame->unk6DE = 12; - gCurrentPinballGame->unk6DC = (gMain.systemFrameCount % 3) + 33; + gCurrentPinballGame->outcomeFrameCounter = 12; + gCurrentPinballGame->rouletteOutcomeId = (gMain.systemFrameCount % 3) + 33; } break; case 6: - if (gCurrentPinballGame->unk6DE == 95) + if (gCurrentPinballGame->outcomeFrameCounter == 95) { - gCurrentPinballGame->unk6DE = 12; - if (gCurrentPinballGame->unk6E9 < 6) - gCurrentPinballGame->unk6DC = (gMain.systemFrameCount % 3) + 24; - else if ((s32) gCurrentPinballGame->unk6E9 <= 0xA) - gCurrentPinballGame->unk6DC = (gMain.systemFrameCount % 5) + 24; - else if (gCurrentPinballGame->unk6E9 % 5 == 0) - gCurrentPinballGame->unk6DC = (gMain.systemFrameCount % 5) + 28; + gCurrentPinballGame->outcomeFrameCounter = 12; + if (gCurrentPinballGame->rouletteLevel < 6) + gCurrentPinballGame->rouletteOutcomeId = (gMain.systemFrameCount % 3) + 24; + else if ((s32) gCurrentPinballGame->rouletteLevel <= 0xA) + gCurrentPinballGame->rouletteOutcomeId = (gMain.systemFrameCount % 5) + 24; + else if (gCurrentPinballGame->rouletteLevel % 5 == 0) + gCurrentPinballGame->rouletteOutcomeId = (gMain.systemFrameCount % 5) + 28; else - gCurrentPinballGame->unk6DC = (gMain.systemFrameCount % 7) + 24; + gCurrentPinballGame->rouletteOutcomeId = (gMain.systemFrameCount % 7) + 24; } break; case 7: - if (gCurrentPinballGame->unk6DE == 95) + if (gCurrentPinballGame->outcomeFrameCounter == 95) { - gCurrentPinballGame->unk6DE = 12; - if (gCurrentPinballGame->unk6E9 < 10) - gCurrentPinballGame->unk6DC = (gMain.systemFrameCount % 3) + 36; + gCurrentPinballGame->outcomeFrameCounter = 12; + if (gCurrentPinballGame->rouletteLevel < 10) + gCurrentPinballGame->rouletteOutcomeId = (gMain.systemFrameCount % 3) + 36; else - gCurrentPinballGame->unk6DC = (gMain.systemFrameCount % 5) + 36; + gCurrentPinballGame->rouletteOutcomeId = (gMain.systemFrameCount % 5) + 36; } break; case 8: - if (gCurrentPinballGame->unk6DE == 150) + if (gCurrentPinballGame->outcomeFrameCounter == 150) { - sub_19B64(4); - gCurrentPinballGame->unk28 = 100; + RequestBoardStateTransition(4); + gCurrentPinballGame->modeAnimTimer = 100; } break; case 9: if (gCurrentPinballGame->evolvablePartySize > 0) { - if (gCurrentPinballGame->unk6DE == 149) + if (gCurrentPinballGame->outcomeFrameCounter == 149) { - gCurrentPinballGame->unk1BA = 180; - gCurrentPinballGame->unk6C4 = 3; + gCurrentPinballGame->shopEntryTimer = 180; + gCurrentPinballGame->portraitDisplayState = 3; } - if (gCurrentPinballGame->unk6DE == 150) + if (gCurrentPinballGame->outcomeFrameCounter == 150) { - gCurrentPinballGame->unk6DE = 149; - gCurrentPinballGame->unk1A5 = 1; - sub_1B140(1); - gCurrentPinballGame->unk36A[0] = 3; - gCurrentPinballGame->unk36A[1] = 3; + gCurrentPinballGame->outcomeFrameCounter = 149; + gCurrentPinballGame->evolutionShopActive = 1; + UpdateShopEntryAnimation(1); + gCurrentPinballGame->sapphireBumperState[0] = 3; + gCurrentPinballGame->sapphireBumperState[1] = 3; } - if (gCurrentPinballGame->unk6DE == 170) + if (gCurrentPinballGame->outcomeFrameCounter == 170) { - gCurrentPinballGame->unk2F0 = 0; - gCurrentPinballGame->unk1A5 = 0; - sub_19B64(6); + gCurrentPinballGame->shopDoorTargetFrame = 0; + gCurrentPinballGame->evolutionShopActive = 0; + RequestBoardStateTransition(6); } } break; case 10: case 11: case 12: - if (gCurrentPinballGame->unk6DE == 130) + if (gCurrentPinballGame->outcomeFrameCounter == 130) { if (gCurrentPinballGame->ballUpgradeType < BALL_UPGRADE_TYPE_MASTER_BALL) gCurrentPinballGame->ballUpgradeType++; gCurrentPinballGame->ballUpgradeCounter = 3600; MPlayStart(&gMPlayInfo_SE1, &se_unk_87); - DmaCopy16(3, gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], (void *)0x05000220, 0x20); + DmaCopy16(3, gBallPalettes[gCurrentPinballGame->ballUpgradeType], (void *)0x05000220, 0x20); } break; case 13: - if (gCurrentPinballGame->unk6DE == 130) + if (gCurrentPinballGame->outcomeFrameCounter == 130) { gCurrentPinballGame->ballUpgradeType = BALL_UPGRADE_TYPE_MASTER_BALL; gCurrentPinballGame->ballUpgradeCounter = 3600; MPlayStart(&gMPlayInfo_SE1, &se_unk_87); - DmaCopy16(3, gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], (void *)0x05000220, 0x20); + DmaCopy16(3, gBallPalettes[gCurrentPinballGame->ballUpgradeType], (void *)0x05000220, 0x20); } break; case 17: case 18: case 19: - if (gCurrentPinballGame->unk6DE == 130) + if (gCurrentPinballGame->outcomeFrameCounter == 130) { - gCurrentPinballGame->unk72B = 1; - gCurrentPinballGame->unk194 = (gCurrentPinballGame->unk6DC - 17) * 20 + 10; - gCurrentPinballGame->unk196 = 0; + gCurrentPinballGame->coinRewardLevel = 1; + gCurrentPinballGame->coinRewardAmount = (gCurrentPinballGame->rouletteOutcomeId - 17) * 20 + 10; + gCurrentPinballGame->coinRewardTimer = 0; } - if (gCurrentPinballGame->unk6DE == 140) - gCurrentPinballGame->unk6DE = 139; + if (gCurrentPinballGame->outcomeFrameCounter == 140) + gCurrentPinballGame->outcomeFrameCounter = 139; break; case 20: - if (gCurrentPinballGame->unk6DE == 130) + if (gCurrentPinballGame->outcomeFrameCounter == 130) gCurrentPinballGame->timerBonus = 1800; break; case 21: - if (gCurrentPinballGame->unk6DE == 150) + if (gCurrentPinballGame->outcomeFrameCounter == 150) { - gCurrentPinballGame->unk28 = 100; - gCurrentPinballGame->unk72 = 15; - sub_19B64(8); + gCurrentPinballGame->modeAnimTimer = 100; + gCurrentPinballGame->jirachiActivationFlags = 15; + RequestBoardStateTransition(8); } break; case 22: - if (gCurrentPinballGame->unk6DE == 150 && gCurrentPinballGame->shouldProcessWhiscash == 0) + if (gCurrentPinballGame->outcomeFrameCounter == 150 && gCurrentPinballGame->shouldProcessWhiscash == 0) { gCurrentPinballGame->rubyPondChangeTimer = 0; gCurrentPinballGame->rubyPondContentsChanging = TRUE; @@ -1432,11 +1432,11 @@ void sub_2A354(void) } break; case 23: - if (gCurrentPinballGame->unk6DE == 150) + if (gCurrentPinballGame->outcomeFrameCounter == 150) { gCurrentPinballGame->bumperHitsSinceReset = 100; - gCurrentPinballGame->unk30C = 1800; - gCurrentPinballGame->unk306 = 1; + gCurrentPinballGame->pelipperFrameTimer = 1800; + gCurrentPinballGame->pelipperState = 1; } break; case 24: @@ -1449,29 +1449,29 @@ void sub_2A354(void) case 31: case 32: if (gCurrentPinballGame->scoreCounterAnimationEnabled) - gCurrentPinballGame->unk6DE = 81; + gCurrentPinballGame->outcomeFrameCounter = 81; - if (gCurrentPinballGame->unk6DE == 70) + if (gCurrentPinballGame->outcomeFrameCounter == 70) { gCurrentPinballGame->scoreCounterAnimationEnabled = TRUE; - gCurrentPinballGame->scoreAddedInFrame = (gCurrentPinballGame->unk6DC - 23) * 1000000; + gCurrentPinballGame->scoreAddedInFrame = (gCurrentPinballGame->rouletteOutcomeId - 23) * 1000000; } break; case 33: - if (gCurrentPinballGame->unk6DE == 70) + if (gCurrentPinballGame->outcomeFrameCounter == 70) { m4aSongNumStart(SE_UNKNOWN_0x91); gCurrentPinballGame->scoreAddedInFrame = 100; } break; case 34: - if (gCurrentPinballGame->unk6DE == 70) { + if (gCurrentPinballGame->outcomeFrameCounter == 70) { m4aSongNumStart(SE_UNKNOWN_0x91); gCurrentPinballGame->scoreAddedInFrame = 500; } break; case 35: - if (gCurrentPinballGame->unk6DE == 70) { + if (gCurrentPinballGame->outcomeFrameCounter == 70) { m4aSongNumStart(SE_UNKNOWN_0x91); gCurrentPinballGame->scoreAddedInFrame = 900; } @@ -1481,11 +1481,11 @@ void sub_2A354(void) case 38: case 39: case 40: - if (gCurrentPinballGame->unk6DE == 70) + if (gCurrentPinballGame->outcomeFrameCounter == 70) { - gCurrentPinballGame->unk70E += gCurrentPinballGame->unk6DC + 221; - if (gCurrentPinballGame->unk70E > 99) - gCurrentPinballGame->unk70E = 99; + gCurrentPinballGame->progressLevel += gCurrentPinballGame->rouletteOutcomeId + 221; + if (gCurrentPinballGame->progressLevel > 99) + gCurrentPinballGame->progressLevel = 99; } break; case 41: @@ -1493,13 +1493,13 @@ void sub_2A354(void) case 43: case 44: case 45: - if (gCurrentPinballGame->unk6DE == 150) - sub_19B64(3); + if (gCurrentPinballGame->outcomeFrameCounter == 150) + RequestBoardStateTransition(3); break; } } -void sub_2AADC(void) +void RunBallCaptureSequence(void) { s16 i; s16 j; @@ -1511,60 +1511,60 @@ void sub_2AADC(void) u16 *dst; const u16 *src; - if (gCurrentPinballGame->unk1E != 0) + if (gCurrentPinballGame->gravityStrengthIndex != 0) return; // Handle counter increment logic - if (gCurrentPinballGame->unk5A6 < gUnknown_086ACF38[gCurrentPinballGame->unk5A8]) + if (gCurrentPinballGame->captureSequenceFrame < gCaptureSequenceTimings[gCurrentPinballGame->captureSequenceTimer]) { - gCurrentPinballGame->unk5A6++; + gCurrentPinballGame->captureSequenceFrame++; - if (gCurrentPinballGame->unk5A6 >= gUnknown_086ACF38[gCurrentPinballGame->unk5A8]) + if (gCurrentPinballGame->captureSequenceFrame >= gCaptureSequenceTimings[gCurrentPinballGame->captureSequenceTimer]) { - gCurrentPinballGame->unk5A6 = 0; + gCurrentPinballGame->captureSequenceFrame = 0; - if (gCurrentPinballGame->unk5A8 <= 34) - gCurrentPinballGame->unk5A8++; + if (gCurrentPinballGame->captureSequenceTimer <= 34) + gCurrentPinballGame->captureSequenceTimer++; } } - switch (gCurrentPinballGame->unk5A8) + switch (gCurrentPinballGame->captureSequenceTimer) { case 0: gMain.blendControl = 0xCE; - if (gMain.selectedField < MAIN_FIELD_COUNT && (gCurrentPinballGame->unk13 == 4 || gCurrentPinballGame->unk13 == 8)) - gCurrentPinballGame->unk294 = 1; + if (gMain.selectedField < MAIN_FIELD_COUNT && (gCurrentPinballGame->boardState == 4 || gCurrentPinballGame->boardState == 8)) + gCurrentPinballGame->boardModeType = 1; - gCurrentPinballGame->unk1F = 1; + gCurrentPinballGame->ballFrozenState = 1; gCurrentPinballGame->ball->velocity.x = (gCurrentPinballGame->ball->velocity.x * 4) / 5; gCurrentPinballGame->ball->velocity.y = (gCurrentPinballGame->ball->velocity.y * 4) / 5; gCurrentPinballGame->ball->positionQ8.x += gCurrentPinballGame->ball->velocity.x; gCurrentPinballGame->ball->positionQ8.y += gCurrentPinballGame->ball->velocity.y; - gCurrentPinballGame->unkE4 = 9; - DmaCopy16(3, gUnknown_081428D4, 0x06015800, 0x1C00); - DmaCopy16(3, &gUnknown_08138014[gCurrentPinballGame->ballUpgradeType << 9], 0x060164C0, 0x80); - DmaCopy16(3, &gUnknown_08138014[((gCurrentPinballGame->ballUpgradeType * 8 + 4) << 6)], 0x06016760, 0x80); + gCurrentPinballGame->activePortraitType = 9; + DmaCopy16(3, gCaptureScreenTilesGfx, 0x06015800, 0x1C00); + DmaCopy16(3, &gBallUpgradeTilesGfx[gCurrentPinballGame->ballUpgradeType << 9], 0x060164C0, 0x80); + DmaCopy16(3, &gBallUpgradeTilesGfx[((gCurrentPinballGame->ballUpgradeType * 8 + 4) << 6)], 0x06016760, 0x80); - gCurrentPinballGame->unk5F7 = 1; + gCurrentPinballGame->ballUpgradeTimerFrozen = 1; - if (gCurrentPinballGame->unk5A6 == 1) + if (gCurrentPinballGame->captureSequenceFrame == 1) { m4aMPlayStop(&gMPlayInfo_BGM); - gCurrentPinballGame->unk71 = 1; + gCurrentPinballGame->ballTrailEnabled = 1; } break; case 1: - if (gCurrentPinballGame->unk13 == 4) + if (gCurrentPinballGame->boardState == 4) { - gCurrentPinballGame->unk720 = 0; - gCurrentPinballGame->unk71D[0] = 2; - gCurrentPinballGame->unk71D[1] = 2; - gCurrentPinballGame->unk71D[2] = 2; + gCurrentPinballGame->evoBlinkTimer = 0; + gCurrentPinballGame->catchLights[0] = 2; + gCurrentPinballGame->catchLights[1] = 2; + gCurrentPinballGame->catchLights[2] = 2; } gCurrentPinballGame->ball->oamPriority = 0; @@ -1573,53 +1573,53 @@ void sub_2AADC(void) gCurrentPinballGame->ball->positionQ8.x += gCurrentPinballGame->ball->velocity.x; gCurrentPinballGame->ball->positionQ8.y += gCurrentPinballGame->ball->velocity.y; - if (gCurrentPinballGame->unk5A6 == 0) + if (gCurrentPinballGame->captureSequenceFrame == 0) MPlayStart(&gMPlayInfo_SE1, &se_unk_9a); break; case 2: //TODO: fakematch; unused i. Here for the +4 to parse correctly; - DmaCopy16(3, gUnknown_08137E14[i=gCurrentPinballGame->ballUpgradeType + 4], 0x05000220, 0x20); + DmaCopy16(3, gBallPalettes[i=gCurrentPinballGame->ballUpgradeType + 4], 0x05000220, 0x20); gMain.blendBrightness = 4; - if (gCurrentPinballGame->unk5A6 > 1) + if (gCurrentPinballGame->captureSequenceFrame > 1) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1], 0x05000200, 0x20); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1], 0x05000200, 0x20); if (gMain.selectedField == FIELD_SAPPHIRE) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x40, 0x05000240, 0xC0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1] + 0x40, 0x05000240, 0xC0); } else - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x40, 0x05000240, 0xE0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1] + 0x40, 0x05000240, 0xE0); - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x140, 0x05000340, 0x60); - gCurrentPinballGame->unk6F = 1; - gCurrentPinballGame->unk70 = 1; + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1] + 0x140, 0x05000340, 0x60); + gCurrentPinballGame->activePaletteIndex = 1; + gCurrentPinballGame->paletteSwapActive = 1; } break; case 3: gMain.blendBrightness = 7; - if (gCurrentPinballGame->unk5A6 > 1) + if (gCurrentPinballGame->captureSequenceFrame > 1) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[2], 0x05000200, 0x20); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2], 0x05000200, 0x20); if (gMain.selectedField == FIELD_SAPPHIRE) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[2] + 0x40, 0x05000240, 0xC0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2] + 0x40, 0x05000240, 0xC0); } else - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[2] + 0x40, 0x05000240, 0xE0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2] + 0x40, 0x05000240, 0xE0); - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[2] + 0x140, 0x05000340, 0x60); - gCurrentPinballGame->unk6F = 2; - gCurrentPinballGame->unk70 = 1; + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2] + 0x140, 0x05000340, 0x60); + gCurrentPinballGame->activePaletteIndex = 2; + gCurrentPinballGame->paletteSwapActive = 1; } - DmaCopy16(3, &gUnknown_08137F14, 0x05000220, 0x20); + DmaCopy16(3, &gBallFlashPalette, 0x05000220, 0x20); break; case 4: @@ -1629,45 +1629,45 @@ void sub_2AADC(void) case 8: case 9: case 10: - temp_r3 = gCurrentPinballGame->unk5A8 - 4; + temp_r3 = gCurrentPinballGame->captureSequenceTimer - 4; if (temp_r3 == 0 || temp_r3 == 6) { if (gMain.selectedField <= 3 && ( - (gCurrentPinballGame->unk13 == 4 && gCurrentPinballGame->unk17 == 9) || - (gCurrentPinballGame->unk13 == 8 && gCurrentPinballGame->unk17 == 3) + (gCurrentPinballGame->boardState == 4 && gCurrentPinballGame->boardSubState == 9) || + (gCurrentPinballGame->boardState == 8 && gCurrentPinballGame->boardSubState == 3) )) { - DmaCopy16(3, &gUnknown_02030710, 0x050003A0, 0x20); + DmaCopy16(3, &gCatchSequencePalB, 0x050003A0, 0x20); } - DmaCopy16(3, &gUnknown_08137F14, 0x05000220, 0x20); + DmaCopy16(3, &gBallFlashPalette, 0x05000220, 0x20); gMain.blendBrightness = 6; } else { //TODO: fakematch; unused i. Here for the +4 to parse correctly; - DmaCopy16(3, gUnknown_08137E14[i=gCurrentPinballGame->ballUpgradeType + 4], 0x05000220, 0x20); + DmaCopy16(3, gBallPalettes[i=gCurrentPinballGame->ballUpgradeType + 4], 0x05000220, 0x20); gMain.blendBrightness = 7; } - spriteGroup = gMain.unk44[3]; + spriteGroup = gMain.fieldSpriteGroups[3]; if (spriteGroup->available != 0) { spriteGroup->baseX = gCurrentPinballGame->ball->screenPosition.x; spriteGroup->baseY = gCurrentPinballGame->ball->screenPosition.y; - if (gCurrentPinballGame->unk13 == 5) + if (gCurrentPinballGame->boardState == 5) { for (i = 0; i <= 15; i++) { oamSimple = &spriteGroup->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 0]; - *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 1]; - *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 2]; + *dst++ = gPokeballCaptureOamFrames[temp_r3][i * 3 + 0]; + *dst++ = gPokeballCaptureOamFrames[temp_r3][i * 3 + 1]; + *dst++ = gPokeballCaptureOamFrames[temp_r3][i * 3 + 2]; gOamBuffer[oamSimple->oamId].x += spriteGroup->baseX; gOamBuffer[oamSimple->oamId].y += spriteGroup->baseY; @@ -1680,9 +1680,9 @@ void sub_2AADC(void) { oamSimple = &spriteGroup->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 0]; - *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 1]; - *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 2]; + *dst++ = gPokeballCaptureOamFrames[temp_r3][i * 3 + 0]; + *dst++ = gPokeballCaptureOamFrames[temp_r3][i * 3 + 1]; + *dst++ = gPokeballCaptureOamFrames[temp_r3][i * 3 + 2]; gOamBuffer[oamSimple->oamId].x += spriteGroup->baseX; gOamBuffer[oamSimple->oamId].y += spriteGroup->baseY; @@ -1690,31 +1690,31 @@ void sub_2AADC(void) } } - gMain.unk44[3]->available = 1; + gMain.fieldSpriteGroups[3]->available = 1; - if (gCurrentPinballGame->unk5A8 == 10 && gCurrentPinballGame->unk5A6 == 3) - gMain.unk44[3]->available = 0; + if (gCurrentPinballGame->captureSequenceTimer == 10 && gCurrentPinballGame->captureSequenceFrame == 3) + gMain.fieldSpriteGroups[3]->available = 0; break; case 11: //TODO: fakematch; unused i. Here for the +4 to parse correctly; - DmaCopy16(3, gUnknown_08137E14[i=gCurrentPinballGame->ballUpgradeType + 4], 0x05000220, 0x20); + DmaCopy16(3, gBallPalettes[i=gCurrentPinballGame->ballUpgradeType + 4], 0x05000220, 0x20); - tempVector.x = (gCurrentPinballGame->unk288 << 8) - gCurrentPinballGame->ball->positionQ8.x; - tempVector.y = (gCurrentPinballGame->unk28A << 8) - gCurrentPinballGame->ball->positionQ8.y; + tempVector.x = (gCurrentPinballGame->catchTargetX << 8) - gCurrentPinballGame->ball->positionQ8.x; + tempVector.y = (gCurrentPinballGame->catchTargetY << 8) - gCurrentPinballGame->ball->positionQ8.y; - gCurrentPinballGame->unk5AC = (tempVector.x * tempVector.x) + (tempVector.y * tempVector.y); + gCurrentPinballGame->trapSpinRadius = (tempVector.x * tempVector.x) + (tempVector.y * tempVector.y); - gCurrentPinballGame->unk5AC = Sqrt(gCurrentPinballGame->unk5AC * 4) / 2; - gCurrentPinballGame->unk5B0 = ArcTan2(-tempVector.x, tempVector.y); + gCurrentPinballGame->trapSpinRadius = Sqrt(gCurrentPinballGame->trapSpinRadius * 4) / 2; + gCurrentPinballGame->trapAngleQ16 = ArcTan2(-tempVector.x, tempVector.y); if (gMain.selectedField > 3) { - gCurrentPinballGame->unk389 = 0; + gCurrentPinballGame->legendaryFlashState = 0; } - else if ((gCurrentPinballGame->unk13 == 4 && gCurrentPinballGame->unk17 == 9) || - (gCurrentPinballGame->unk13 == 8 && gCurrentPinballGame->unk17 == 3)) + else if ((gCurrentPinballGame->boardState == 4 && gCurrentPinballGame->boardSubState == 9) || + (gCurrentPinballGame->boardState == 8 && gCurrentPinballGame->boardSubState == 3)) { - DmaCopy16(3, &gUnknown_020306D0, 0x050003A0, 0x20); + DmaCopy16(3, &gCatchSpritePalettes, 0x050003A0, 0x20); } for (i = 0; i < 4; i++) @@ -1724,51 +1724,51 @@ void sub_2AADC(void) } break; case 12: - temp_r0 = 99 - gCurrentPinballGame->unk5A6; - gCurrentPinballGame->unk5B0 -= (temp_r0 * 0x2000) / 100 - 0x2000; - gCurrentPinballGame->ball->unkA -= 0x2000; + temp_r0 = 99 - gCurrentPinballGame->captureSequenceFrame; + gCurrentPinballGame->trapAngleQ16 -= (temp_r0 * 0x2000) / 100 - 0x2000; + gCurrentPinballGame->ball->spinAngle -= 0x2000; temp_r0 -= 20; if (temp_r0 < 0) { temp_r0 = 0; - gCurrentPinballGame->ball->unk0 = 0; + gCurrentPinballGame->ball->ballHidden = 0; } { - s32 var_3 = (gCurrentPinballGame->unk5AC * temp_r0) / 80; + s32 var_3 = (gCurrentPinballGame->trapSpinRadius * temp_r0) / 80; gCurrentPinballGame->ball->positionQ8.x = - (gCurrentPinballGame->unk288 << 8) + Cos(gCurrentPinballGame->unk5B0) * var_3 / 20000; + (gCurrentPinballGame->catchTargetX << 8) + Cos(gCurrentPinballGame->trapAngleQ16) * var_3 / 20000; gCurrentPinballGame->ball->positionQ8.y = - (gCurrentPinballGame->unk28A << 8) - Sin(gCurrentPinballGame->unk5B0) * var_3 / 20000; + (gCurrentPinballGame->catchTargetY << 8) - Sin(gCurrentPinballGame->trapAngleQ16) * var_3 / 20000; } break; case 13: - gCurrentPinballGame->ball->unk6 = 0; - gCurrentPinballGame->unk71 = 0; - gCurrentPinballGame->ball->unkA -= 0x2000; + gCurrentPinballGame->ball->spinSpeed = 0; + gCurrentPinballGame->ballTrailEnabled = 0; + gCurrentPinballGame->ball->spinAngle -= 0x2000; break; case 14: - DmaCopy16(3, gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], 0x05000220, 0x20); - gCurrentPinballGame->ball->unkA -= 0x2000; + DmaCopy16(3, gBallPalettes[gCurrentPinballGame->ballUpgradeType], 0x05000220, 0x20); + gCurrentPinballGame->ball->spinAngle -= 0x2000; break; case 15: //TODO: fakematch; unused i. Here for the +4 to parse correctly; - DmaCopy16(3, gUnknown_08137E14[i= gCurrentPinballGame->ballUpgradeType + 4], 0x05000220, 0x20); - gCurrentPinballGame->ball->unkA -= 0x2000; + DmaCopy16(3, gBallPalettes[i= gCurrentPinballGame->ballUpgradeType + 4], 0x05000220, 0x20); + gCurrentPinballGame->ball->spinAngle -= 0x2000; break; case 16: - if (gCurrentPinballGame->unk5A6 == 0) + if (gCurrentPinballGame->captureSequenceFrame == 0) m4aSongNumStart(0x9B); - DmaCopy16(3, gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], 0x05000220, 0x20); - gCurrentPinballGame->ball->unkA = 0x7000; + DmaCopy16(3, gBallPalettes[gCurrentPinballGame->ballUpgradeType], 0x05000220, 0x20); + gCurrentPinballGame->ball->spinAngle = 0x7000; break; case 17: @@ -1782,24 +1782,24 @@ void sub_2AADC(void) case 25: case 27: case 28: - spriteGroup = gMain.unk44[3]; + spriteGroup = gMain.fieldSpriteGroups[3]; if (spriteGroup->available != 0) { - gCurrentPinballGame->ball->unk0 = 1; + gCurrentPinballGame->ball->ballHidden = 1; spriteGroup->baseX = gCurrentPinballGame->ball->screenPosition.x; spriteGroup->baseY = gCurrentPinballGame->ball->screenPosition.y; - temp_r3 = gUnknown_086ACFF4[gCurrentPinballGame->unk5A8 - 17] + 7; + temp_r3 = gCaptureShakeOffsets[gCurrentPinballGame->captureSequenceTimer - 17] + 7; - if (gCurrentPinballGame->unk13 == 5) + if (gCurrentPinballGame->boardState == 5) { for (i = 0; i <= 15; i++) { oamSimple = &spriteGroup->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 0]; - *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 1]; - *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 2]; + *dst++ = gPokeballCaptureOamFrames[temp_r3][i * 3 + 0]; + *dst++ = gPokeballCaptureOamFrames[temp_r3][i * 3 + 1]; + *dst++ = gPokeballCaptureOamFrames[temp_r3][i * 3 + 2]; gOamBuffer[oamSimple->oamId].x += spriteGroup->baseX; gOamBuffer[oamSimple->oamId].y += spriteGroup->baseY; @@ -1812,90 +1812,90 @@ void sub_2AADC(void) { oamSimple = &spriteGroup->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 0]; - *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 1]; - *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 2]; + *dst++ = gPokeballCaptureOamFrames[temp_r3][i * 3 + 0]; + *dst++ = gPokeballCaptureOamFrames[temp_r3][i * 3 + 1]; + *dst++ = gPokeballCaptureOamFrames[temp_r3][i * 3 + 2]; gOamBuffer[oamSimple->oamId].x += spriteGroup->baseX; gOamBuffer[oamSimple->oamId].y += spriteGroup->baseY; } } } - gMain.unk44[3]->available = 1; + gMain.fieldSpriteGroups[3]->available = 1; - if (gCurrentPinballGame->unk5A8 == 18 || gCurrentPinballGame->unk5A8 == 20 || gCurrentPinballGame->unk5A8 == 21) + if (gCurrentPinballGame->captureSequenceTimer == 18 || gCurrentPinballGame->captureSequenceTimer == 20 || gCurrentPinballGame->captureSequenceTimer == 21) { - gCurrentPinballGame->unk5A9 = 200; + gCurrentPinballGame->captureFlashTimer = 200; if (gMain.selectedField > 3) - gCurrentPinballGame->unk389 = 1; - else if ((gCurrentPinballGame->unk13 == 4 && gCurrentPinballGame->unk17 == 9) || - (gCurrentPinballGame->unk13 == 8 && gCurrentPinballGame->unk17 == 3)) - DmaCopy16(3, &gUnknown_020306F0, 0x050003A0, 0x20); + gCurrentPinballGame->legendaryFlashState = 1; + else if ((gCurrentPinballGame->boardState == 4 && gCurrentPinballGame->boardSubState == 9) || + (gCurrentPinballGame->boardState == 8 && gCurrentPinballGame->boardSubState == 3)) + DmaCopy16(3, &gCatchSequencePalA, 0x050003A0, 0x20); } - else if (gCurrentPinballGame->unk5A8 == 19 || gCurrentPinballGame->unk5A8 == 22) + else if (gCurrentPinballGame->captureSequenceTimer == 19 || gCurrentPinballGame->captureSequenceTimer == 22) { if (gMain.selectedField > 3) - gCurrentPinballGame->unk389 = 3; - else if ((gCurrentPinballGame->unk13 == 4 && gCurrentPinballGame->unk17 == 9) || - (gCurrentPinballGame->unk13 == 8 && gCurrentPinballGame->unk17 == 3)) - DmaCopy16(3, &gUnknown_02030730, 0x050003A0, 0x20); + gCurrentPinballGame->legendaryFlashState = 3; + else if ((gCurrentPinballGame->boardState == 4 && gCurrentPinballGame->boardSubState == 9) || + (gCurrentPinballGame->boardState == 8 && gCurrentPinballGame->boardSubState == 3)) + DmaCopy16(3, &gCatchSequencePalC, 0x050003A0, 0x20); } - if (gCurrentPinballGame->unk5A8 == 23) + if (gCurrentPinballGame->captureSequenceTimer == 23) { if (gMain.selectedField > 3) - gCurrentPinballGame->unk389 = 10; + gCurrentPinballGame->legendaryFlashState = 10; else { - if (gCurrentPinballGame->unk13 == 4 && gCurrentPinballGame->unk17 == 9) + if (gCurrentPinballGame->boardState == 4 && gCurrentPinballGame->boardSubState == 9) { - sub_28E2C(); - gCurrentPinballGame->unk5F2 = 0; + CleanupCaughtPokemonSprite(); + gCurrentPinballGame->jirachiCollisionEnabled = 0; m4aMPlayAllStop(); } - if (gCurrentPinballGame->unk13 == 8 && gCurrentPinballGame->unk17 == 3) + if (gCurrentPinballGame->boardState == 8 && gCurrentPinballGame->boardSubState == 3) { - sub_292A0(); - gCurrentPinballGame->unk5F2 = 0; + CleanupJirachiSprites(); + gCurrentPinballGame->jirachiCollisionEnabled = 0; m4aMPlayAllStop(); } } } - if (gCurrentPinballGame->unk5A8 == 28) + if (gCurrentPinballGame->captureSequenceTimer == 28) { - if (gCurrentPinballGame->unk5A6 == 0) + if (gCurrentPinballGame->captureSequenceFrame == 0) { m4aMPlayAllStop(); PlayRumble(8); } - if (gCurrentPinballGame->unk5A6 == 2) + if (gCurrentPinballGame->captureSequenceFrame == 2) m4aSongNumStart(0x9C); } break; case 26: - spriteGroup = gMain.unk44[3]; + spriteGroup = gMain.fieldSpriteGroups[3]; if (spriteGroup->available != 0) { spriteGroup->baseX = gCurrentPinballGame->ball->screenPosition.x; spriteGroup->baseY = gCurrentPinballGame->ball->screenPosition.y; - temp_r3 = gUnknown_086ACFF4[gCurrentPinballGame->unk5A8 - 17] + 7; + temp_r3 = gCaptureShakeOffsets[gCurrentPinballGame->captureSequenceTimer - 17] + 7; - if (gCurrentPinballGame->unk13 == 5) + if (gCurrentPinballGame->boardState == 5) { for (i = 0; i <= 15; i++) { oamSimple = &spriteGroup->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 0]; - *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 1]; - *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 2]; + *dst++ = gPokeballCaptureOamFrames[temp_r3][i * 3 + 0]; + *dst++ = gPokeballCaptureOamFrames[temp_r3][i * 3 + 1]; + *dst++ = gPokeballCaptureOamFrames[temp_r3][i * 3 + 2]; gOamBuffer[oamSimple->oamId].x += spriteGroup->baseX; gOamBuffer[oamSimple->oamId].y += spriteGroup->baseY; @@ -1908,9 +1908,9 @@ void sub_2AADC(void) { oamSimple = &spriteGroup->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 0]; - *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 1]; - *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 2]; + *dst++ = gPokeballCaptureOamFrames[temp_r3][i * 3 + 0]; + *dst++ = gPokeballCaptureOamFrames[temp_r3][i * 3 + 1]; + *dst++ = gPokeballCaptureOamFrames[temp_r3][i * 3 + 2]; gOamBuffer[oamSimple->oamId].x += spriteGroup->baseX; gOamBuffer[oamSimple->oamId].y += spriteGroup->baseY; @@ -1922,9 +1922,9 @@ void sub_2AADC(void) case 29: gMain.blendBrightness = 4; - DmaCopy16(3, gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], 0x05000220, 0x20); + DmaCopy16(3, gBallPalettes[gCurrentPinballGame->ballUpgradeType], 0x05000220, 0x20); - spriteGroup = gMain.unk44[3]; + spriteGroup = gMain.fieldSpriteGroups[3]; if (spriteGroup->available != 0) { @@ -1935,63 +1935,63 @@ void sub_2AADC(void) } } - gMain.unk44[3]->available = 0; - gCurrentPinballGame->ball->unk0 = 0; + gMain.fieldSpriteGroups[3]->available = 0; + gCurrentPinballGame->ball->ballHidden = 0; gCurrentPinballGame->ball->velocity.y = -256; gCurrentPinballGame->ball->velocity.x = 40; - gCurrentPinballGame->ball->unk6 = 256; + gCurrentPinballGame->ball->spinSpeed = 256; gCurrentPinballGame->ball->positionQ8.y += gCurrentPinballGame->ball->velocity.y; gCurrentPinballGame->ball->positionQ8.x += gCurrentPinballGame->ball->velocity.x; - gCurrentPinballGame->unkE4 = 0; + gCurrentPinballGame->activePortraitType = 0; break; case 30: - if (gCurrentPinballGame->unk5A6 <= 7) + if (gCurrentPinballGame->captureSequenceFrame <= 7) { - if (gCurrentPinballGame->unk5A6 <= 3) + if (gCurrentPinballGame->captureSequenceFrame <= 3) { - if (gCurrentPinballGame->unk5A6 == 0) + if (gCurrentPinballGame->captureSequenceFrame == 0) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1], 0x05000200, 0x20); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1], 0x05000200, 0x20); if (gMain.selectedField == FIELD_SAPPHIRE) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x40, 0x05000240, 0xC0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1] + 0x40, 0x05000240, 0xC0); } else - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x40, 0x05000240, 0xE0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1] + 0x40, 0x05000240, 0xE0); - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x140, 0x05000340, 0x60); - gCurrentPinballGame->unk6F = 1; - gCurrentPinballGame->unk70 = 1; + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1] + 0x140, 0x05000340, 0x60); + gCurrentPinballGame->activePaletteIndex = 1; + gCurrentPinballGame->paletteSwapActive = 1; } } else { gMain.blendBrightness = 0; - if (gCurrentPinballGame->unk5A6 > 4) + if (gCurrentPinballGame->captureSequenceFrame > 4) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0], 0x05000200, 0x20); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0], 0x05000200, 0x20); if (gMain.selectedField == FIELD_SAPPHIRE) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0] + 0x40, 0x05000240, 0xC0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0] + 0x40, 0x05000240, 0xC0); } else - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0] + 0x40, 0x05000240, 0xE0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0] + 0x40, 0x05000240, 0xE0); - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0] + 0x140, 0x05000340, 0x60); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0] + 0x140, 0x05000340, 0x60); - gCurrentPinballGame->unk6F = 0; - gCurrentPinballGame->unk70 = 1; + gCurrentPinballGame->activePaletteIndex = 0; + gCurrentPinballGame->paletteSwapActive = 1; } } } - if (gCurrentPinballGame->unk13 == 5 || gCurrentPinballGame->unk13 == 8) + if (gCurrentPinballGame->boardState == 5 || gCurrentPinballGame->boardState == 8) { gCurrentPinballGame->ball->velocity.y += 16; gCurrentPinballGame->ball->positionQ8.y += gCurrentPinballGame->ball->velocity.y; @@ -2007,10 +2007,10 @@ void sub_2AADC(void) gCurrentPinballGame->ball->positionQ8.y = 314 << 8; gCurrentPinballGame->ball->velocity.y = (gCurrentPinballGame->ball->velocity.y * -45) / 100; - gCurrentPinballGame->ball->unk6 = (gCurrentPinballGame->ball->unk6 * 7) / 10; + gCurrentPinballGame->ball->spinSpeed = (gCurrentPinballGame->ball->spinSpeed * 7) / 10; - if (gCurrentPinballGame->ball->unk6 > 0) - gCurrentPinballGame->ball->unk6 = -gCurrentPinballGame->ball->unk6; + if (gCurrentPinballGame->ball->spinSpeed > 0) + gCurrentPinballGame->ball->spinSpeed = -gCurrentPinballGame->ball->spinSpeed; gCurrentPinballGame->ball->velocity.x = (gCurrentPinballGame->ball->velocity.x * 7) / 10; @@ -2025,7 +2025,7 @@ void sub_2AADC(void) var_4 = -var_4; if (var_4 > 256) - gCurrentPinballGame->unk5A6--; + gCurrentPinballGame->captureSequenceFrame--; } } else @@ -2034,15 +2034,15 @@ void sub_2AADC(void) gCurrentPinballGame->ball->positionQ8.y += gCurrentPinballGame->ball->velocity.y; gCurrentPinballGame->ball->positionQ8.x += gCurrentPinballGame->ball->velocity.x; - if (gCurrentPinballGame->ball->positionQ8.y >= (gCurrentPinballGame->unk28A + 50) << 8) + if (gCurrentPinballGame->ball->positionQ8.y >= (gCurrentPinballGame->catchTargetY + 50) << 8) { m4aSongNumStart(0x9D); - gCurrentPinballGame->ball->positionQ8.y = (gCurrentPinballGame->unk28A + 50) << 8; + gCurrentPinballGame->ball->positionQ8.y = (gCurrentPinballGame->catchTargetY + 50) << 8; gCurrentPinballGame->ball->velocity.y = (gCurrentPinballGame->ball->velocity.y * -45) / 100; - gCurrentPinballGame->ball->unk6 = (gCurrentPinballGame->ball->unk6 * 7) / 10; + gCurrentPinballGame->ball->spinSpeed = (gCurrentPinballGame->ball->spinSpeed * 7) / 10; - if (gCurrentPinballGame->ball->unk6 > 0) - gCurrentPinballGame->ball->unk6 = -gCurrentPinballGame->ball->unk6; + if (gCurrentPinballGame->ball->spinSpeed > 0) + gCurrentPinballGame->ball->spinSpeed = -gCurrentPinballGame->ball->spinSpeed; gCurrentPinballGame->ball->velocity.x = (gCurrentPinballGame->ball->velocity.x * 7) / 10; @@ -2051,17 +2051,17 @@ void sub_2AADC(void) } } - gCurrentPinballGame->unk5B0 = 0; + gCurrentPinballGame->trapAngleQ16 = 0; break; case 31: gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; - gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->ball->spinSpeed = 0; break; case 32: - temp_r0 = 237 - gCurrentPinballGame->unk5A6; + temp_r0 = 237 - gCurrentPinballGame->captureSequenceFrame; if (temp_r0 <= 191) { @@ -2074,12 +2074,12 @@ void sub_2AADC(void) m4aSongNumStart(158); gCurrentPinballGame->ball->positionQ8.x -= 96; - gCurrentPinballGame->ball->unkA -= 0x400; + gCurrentPinballGame->ball->spinAngle -= 0x400; } else if (temp_r0 > 175) { gCurrentPinballGame->ball->positionQ8.x += 96; - gCurrentPinballGame->ball->unkA += 0x400; + gCurrentPinballGame->ball->spinAngle += 0x400; } else if (temp_r0 > 167) { @@ -2090,12 +2090,12 @@ void sub_2AADC(void) m4aSongNumStart(0x9E); gCurrentPinballGame->ball->positionQ8.x -= 96; - gCurrentPinballGame->ball->unkA -= 0x400; + gCurrentPinballGame->ball->spinAngle -= 0x400; } else if (temp_r0 > 159) { gCurrentPinballGame->ball->positionQ8.x += 96; - gCurrentPinballGame->ball->unkA += 0x400; + gCurrentPinballGame->ball->spinAngle += 0x400; } else if (temp_r0 <= 123) { @@ -2108,12 +2108,12 @@ void sub_2AADC(void) m4aSongNumStart(0x9E); gCurrentPinballGame->ball->positionQ8.x -= 96; - gCurrentPinballGame->ball->unkA -= 0x400; + gCurrentPinballGame->ball->spinAngle -= 0x400; } else if (temp_r0 > 107) { gCurrentPinballGame->ball->positionQ8.x += 96; - gCurrentPinballGame->ball->unkA += 0x400; + gCurrentPinballGame->ball->spinAngle += 0x400; } else if (temp_r0 > 99) { @@ -2124,12 +2124,12 @@ void sub_2AADC(void) m4aSongNumStart(0x9E); gCurrentPinballGame->ball->positionQ8.x -= 96; - gCurrentPinballGame->ball->unkA -= 0x400; + gCurrentPinballGame->ball->spinAngle -= 0x400; } else if (temp_r0 > 91) { gCurrentPinballGame->ball->positionQ8.x += 96; - gCurrentPinballGame->ball->unkA += 0x400; + gCurrentPinballGame->ball->spinAngle += 0x400; } } } @@ -2137,58 +2137,58 @@ void sub_2AADC(void) if (temp_r0 == 0) { m4aSongNumStart(0x11); - sub_2312C(); + InitEvolutionSuccessDisplay(); } break; case 33: gCurrentPinballGame->ball->oamPriority = 3; - sub_23300(); + AnimateEvolutionSuccessScreen(); - if (gCurrentPinballGame->unk5A6 <= 229 && gCurrentPinballGame->unk210 == 150) - gCurrentPinballGame->unk210--; + if (gCurrentPinballGame->captureSequenceFrame <= 229 && gCurrentPinballGame->nameRevealAnimFrame == 150) + gCurrentPinballGame->nameRevealAnimFrame--; - if (gCurrentPinballGame->unk5A6 == 270 && gMain.selectedField < MAIN_FIELD_COUNT) + if (gCurrentPinballGame->captureSequenceFrame == 270 && gMain.selectedField < MAIN_FIELD_COUNT) { - sub_1C7F4(0, 0); - gCurrentPinballGame->unk6C4 = 0; + LoadPortraitGraphics(0, 0); + gCurrentPinballGame->portraitDisplayState = 0; } - if (gCurrentPinballGame->unk5A6 <= 29) + if (gCurrentPinballGame->captureSequenceFrame <= 29) { - gMain.unk2C = 1; - temp_r0 = gCurrentPinballGame->unk5A6; - gCurrentPinballGame->unk298 = temp_r0; + gMain.scoreOverlayActive = 1; + temp_r0 = gCurrentPinballGame->captureSequenceFrame; + gCurrentPinballGame->cutsceneTilemapColumn = temp_r0; for (j = 0; j <= temp_r0; j++) { for (i = 1; i <= 10; i++) { - gUnknown_03005C00[(i + 15) * 32 + j] = 0xC100; + gBG0TilemapBuffer[(i + 15) * 32 + j] = 0xC100; } } - DmaCopy16(3, &gUnknown_03005C00, 0x06002000, 0x800); + DmaCopy16(3, &gBG0TilemapBuffer, 0x06002000, 0x800); } - if (gCurrentPinballGame->unk5A6 >= 240 && gCurrentPinballGame->unk5A6 <= 269) + if (gCurrentPinballGame->captureSequenceFrame >= 240 && gCurrentPinballGame->captureSequenceFrame <= 269) { - temp_r0 = gCurrentPinballGame->unk5A6 - 240; + temp_r0 = gCurrentPinballGame->captureSequenceFrame - 240; for (j = 0; j <= temp_r0; j++) { for (i = 1; i <= 10; i++) { - gUnknown_03005C00[(i + 15) * 32 + j] = 511; + gBG0TilemapBuffer[(i + 15) * 32 + j] = 511; } } - DmaCopy16(3, &gUnknown_03005C00, 0x06002000, 0x800); + DmaCopy16(3, &gBG0TilemapBuffer, 0x06002000, 0x800); - if (gCurrentPinballGame->unk5A6 == 269) + if (gCurrentPinballGame->captureSequenceFrame == 269) { - gMain.unk2C = 0; + gMain.scoreOverlayActive = 0; if (gMain.selectedField < MAIN_FIELD_COUNT) { @@ -2200,11 +2200,11 @@ void sub_2AADC(void) } if (gCurrentPinballGame->scoreCounterAnimationEnabled) - gCurrentPinballGame->unk5A6 = 181; + gCurrentPinballGame->captureSequenceFrame = 181; - if (gCurrentPinballGame->unk5A6 == 180) + if (gCurrentPinballGame->captureSequenceFrame == 180) { - if (gCurrentPinballGame->unk13 == 4 || gCurrentPinballGame->unk13 == 8) + if (gCurrentPinballGame->boardState == 4 || gCurrentPinballGame->boardState == 8) { gCurrentPinballGame->scoreCounterAnimationEnabled = TRUE; @@ -2233,7 +2233,7 @@ void sub_2AADC(void) } } - if (gCurrentPinballGame->unk13 == 5) + if (gCurrentPinballGame->boardState == 5) { gCurrentPinballGame->scoreCounterAnimationEnabled = TRUE; @@ -2266,66 +2266,66 @@ void sub_2AADC(void) break; case 34: - gCurrentPinballGame->unk5F7 = 0; + gCurrentPinballGame->ballUpgradeTimerFrozen = 0; gCurrentPinballGame->ball->oamPriority = 3; - gCurrentPinballGame->unk5A4 = 0; - gCurrentPinballGame->unk5A6 = 0; - gCurrentPinballGame->unk5A8 = 0; + gCurrentPinballGame->captureState = 0; + gCurrentPinballGame->captureSequenceFrame = 0; + gCurrentPinballGame->captureSequenceTimer = 0; if (gMain.selectedField < MAIN_FIELD_COUNT) { - gCurrentPinballGame->unk1F = 0; + gCurrentPinballGame->ballFrozenState = 0; gCurrentPinballGame->ball->velocity.y = -10; gCurrentPinballGame->ball->velocity.x = 20; for (i = 0; i <= 2; i++) { - if (i < gCurrentPinballGame->unk723) - gCurrentPinballGame->unk71D[i] = 1; + if (i < gCurrentPinballGame->evoItemCount) + gCurrentPinballGame->catchLights[i] = 1; else - gCurrentPinballGame->unk71D[i] = 0; + gCurrentPinballGame->catchLights[i] = 0; } - if (gCurrentPinballGame->unk723 <= 2) + if (gCurrentPinballGame->evoItemCount <= 2) { - gCurrentPinballGame->unk721 = gCurrentPinballGame->unk723; - gCurrentPinballGame->unk722 = gCurrentPinballGame->unk723; - gCurrentPinballGame->unk71D[gCurrentPinballGame->unk721] = 1; - gCurrentPinballGame->unk720 = 120; - gCurrentPinballGame->unk723++; + gCurrentPinballGame->evoCatchLightSlot1 = gCurrentPinballGame->evoItemCount; + gCurrentPinballGame->evoCatchLightSlot2 = gCurrentPinballGame->evoItemCount; + gCurrentPinballGame->catchLights[gCurrentPinballGame->evoCatchLightSlot1] = 1; + gCurrentPinballGame->evoBlinkTimer = 120; + gCurrentPinballGame->evoItemCount++; } gCurrentPinballGame->caughtMonCount++; if (gCurrentPinballGame->caughtMonCount == 15) - gCurrentPinballGame->unk286 = 90; + gCurrentPinballGame->oneUpAnimTimer = 90; - if (gCurrentPinballGame->unk62A <= 98) - gCurrentPinballGame->unk62A++; + if (gCurrentPinballGame->bonusCatchCount <= 98) + gCurrentPinballGame->bonusCatchCount++; - if (gCurrentPinballGame->unk13 == 4) - gCurrentPinballGame->unk17 = 10; + if (gCurrentPinballGame->boardState == 4) + gCurrentPinballGame->boardSubState = 10; - if (gCurrentPinballGame->unk13 == 8) - gCurrentPinballGame->unk17 = 5; + if (gCurrentPinballGame->boardState == 8) + gCurrentPinballGame->boardSubState = 5; - if (gCurrentPinballGame->unk13 == 5) - gCurrentPinballGame->unk17 = 6; + if (gCurrentPinballGame->boardState == 5) + gCurrentPinballGame->boardSubState = 6; } else { - gCurrentPinballGame->unk1F = 1; + gCurrentPinballGame->ballFrozenState = 1; gCurrentPinballGame->ball->velocity.y = 0; gCurrentPinballGame->ball->velocity.x = 0; - gCurrentPinballGame->unk6C4 = 3; - gCurrentPinballGame->unk13 = 4; + gCurrentPinballGame->portraitDisplayState = 3; + gCurrentPinballGame->boardState = 4; gCurrentPinballGame->caughtMonCount++; if (gCurrentPinballGame->caughtMonCount == 15) - gCurrentPinballGame->unk286 = 91; + gCurrentPinballGame->oneUpAnimTimer = 91; } - sub_31CF8(0); + RegisterCaptureOrEvolution(0); break; } diff --git a/src/rom_2C538.c b/src/rom_2C538.c index 881c3e4..8fa0b7c 100644 --- a/src/rom_2C538.c +++ b/src/rom_2C538.c @@ -3,11 +3,11 @@ #include "main.h" #include "constants/bg_music.h" -extern const u8 gUnknown_0847DF0C[][0x300]; +extern const u8 gRubyRampGateTileGfx[][0x300]; extern const u8 gRubyBoardRampPrize_Gfx[][0x80]; -void sub_2C538(void) +void UpdateRubyRampPrizeGate(void) { s16 i; struct OamDataSimple *oamSimple; @@ -17,71 +17,71 @@ void sub_2C538(void) s16 index; index = 0; - switch (gCurrentPinballGame->unk300) + switch (gCurrentPinballGame->rampGateState) { case 0: - index = (gCurrentPinballGame->unk304 % 36) / 18; - gCurrentPinballGame->unk304++; - gCurrentPinballGame->unk301 = 0; + index = (gCurrentPinballGame->rampGateAnimCounter % 36) / 18; + gCurrentPinballGame->rampGateAnimCounter++; + gCurrentPinballGame->rampGateHitFlag = 0; break; case 1: - index = (gCurrentPinballGame->unk304 % 36) / 18 + 2; - gCurrentPinballGame->unk304++; - if (gCurrentPinballGame->unk301) + index = (gCurrentPinballGame->rampGateAnimCounter % 36) / 18 + 2; + gCurrentPinballGame->rampGateAnimCounter++; + if (gCurrentPinballGame->rampGateHitFlag) { - gCurrentPinballGame->unk300 = 2; - gCurrentPinballGame->unk304 = 0; + gCurrentPinballGame->rampGateState = 2; + gCurrentPinballGame->rampGateAnimCounter = 0; } - gCurrentPinballGame->unk301 = 0; + gCurrentPinballGame->rampGateHitFlag = 0; break; case 2: - index = (gCurrentPinballGame->unk304 % 9) / 3 + 4; - gCurrentPinballGame->unk304++; - if (gCurrentPinballGame->unk304 == 9) + index = (gCurrentPinballGame->rampGateAnimCounter % 9) / 3 + 4; + gCurrentPinballGame->rampGateAnimCounter++; + if (gCurrentPinballGame->rampGateAnimCounter == 9) { - gCurrentPinballGame->unk300 = 3; - gCurrentPinballGame->unk304 = 0; + gCurrentPinballGame->rampGateState = 3; + gCurrentPinballGame->rampGateAnimCounter = 0; } break; case 3: - index = (gCurrentPinballGame->unk304 % 36) / 18 + 2; - gCurrentPinballGame->unk304++; - if (gCurrentPinballGame->unk304 > 65) + index = (gCurrentPinballGame->rampGateAnimCounter % 36) / 18 + 2; + gCurrentPinballGame->rampGateAnimCounter++; + if (gCurrentPinballGame->rampGateAnimCounter > 65) { - gCurrentPinballGame->unk300 = 1; - gCurrentPinballGame->unk304 = 0; + gCurrentPinballGame->rampGateState = 1; + gCurrentPinballGame->rampGateAnimCounter = 0; } - if (gCurrentPinballGame->unk304 > 6 && gCurrentPinballGame->unk301) + if (gCurrentPinballGame->rampGateAnimCounter > 6 && gCurrentPinballGame->rampGateHitFlag) { - gCurrentPinballGame->unk300 = 4; - gCurrentPinballGame->unk304 = 0; - gCurrentPinballGame->unk301 = 0; + gCurrentPinballGame->rampGateState = 4; + gCurrentPinballGame->rampGateAnimCounter = 0; + gCurrentPinballGame->rampGateHitFlag = 0; } break; case 4: - index = (gCurrentPinballGame->unk304 % 9) / 3 + 7; - gCurrentPinballGame->unk304++; - if (gCurrentPinballGame->unk304 == 9) + index = (gCurrentPinballGame->rampGateAnimCounter % 9) / 3 + 7; + gCurrentPinballGame->rampGateAnimCounter++; + if (gCurrentPinballGame->rampGateAnimCounter == 9) { - gCurrentPinballGame->unk300 = 5; - gCurrentPinballGame->unk304 = 0; + gCurrentPinballGame->rampGateState = 5; + gCurrentPinballGame->rampGateAnimCounter = 0; } break; case 5: - index = (gCurrentPinballGame->unk304 % 36) / 18 + 2; - gCurrentPinballGame->unk304++; - if (gCurrentPinballGame->unk304 > 65) + index = (gCurrentPinballGame->rampGateAnimCounter % 36) / 18 + 2; + gCurrentPinballGame->rampGateAnimCounter++; + if (gCurrentPinballGame->rampGateAnimCounter > 65) { - gCurrentPinballGame->unk300 = 1; - gCurrentPinballGame->unk304 = 0; + gCurrentPinballGame->rampGateState = 1; + gCurrentPinballGame->rampGateAnimCounter = 0; } - if (gCurrentPinballGame->unk304 > 6 && gCurrentPinballGame->unk301) + if (gCurrentPinballGame->rampGateAnimCounter > 6 && gCurrentPinballGame->rampGateHitFlag) { - gCurrentPinballGame->unk300 = 2; - gCurrentPinballGame->unk304 = 0; - gCurrentPinballGame->unk301 = 0; + gCurrentPinballGame->rampGateState = 2; + gCurrentPinballGame->rampGateAnimCounter = 0; + gCurrentPinballGame->rampGateHitFlag = 0; } break; } @@ -89,21 +89,21 @@ void sub_2C538(void) group = &gMain.spriteGroups[68]; if (group->available) { - if (gCurrentPinballGame->unk300 < 3) + if (gCurrentPinballGame->rampGateState < 3) { - group->baseX = 188 - gCurrentPinballGame->unk58; - group->baseY = 281 - gCurrentPinballGame->unk5A; + group->baseX = 188 - gCurrentPinballGame->cameraXOffset; + group->baseY = 281 - gCurrentPinballGame->cameraYOffset; } else { - group->baseX = 192 - gCurrentPinballGame->unk58; - group->baseY = 278 - gCurrentPinballGame->unk5A; + group->baseX = 192 - gCurrentPinballGame->cameraXOffset; + group->baseY = 278 - gCurrentPinballGame->cameraYOffset; } - if (gCurrentPinballGame->unk302 > 0) + if (gCurrentPinballGame->rampPrizeVisibilityTimer > 0) { - gCurrentPinballGame->unk302--; - if (gCurrentPinballGame->unk302 == 0) + gCurrentPinballGame->rampPrizeVisibilityTimer--; + if (gCurrentPinballGame->rampPrizeVisibilityTimer == 0) gMain.spriteGroups[68].available = 0; } @@ -112,22 +112,22 @@ void sub_2C538(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - if (gCurrentPinballGame->unk300 == 4 || gCurrentPinballGame->unk300 == 2) + if (gCurrentPinballGame->rampGateState == 4 || gCurrentPinballGame->rampGateState == 2) { x = gCurrentPinballGame->ball->positionQ0.x - 190; y = gCurrentPinballGame->ball->positionQ0.y - 285; squaredMagnitude = (x * x) + (y * y); if(squaredMagnitude >= 0 && squaredMagnitude <= 140) { - if (gCurrentPinballGame->unk302 <= 0) + if (gCurrentPinballGame->rampPrizeVisibilityTimer <= 0) { m4aSongNumStart(SE_UNKNOWN_0xC5); gCurrentPinballGame->scoreAddedInFrame = 10000; gCurrentPinballGame->ball->velocity.x = -600; gCurrentPinballGame->ball->velocity.y = -300; - gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->ball->spinSpeed = 0; gMain.spriteGroups[68].available = 1; - gCurrentPinballGame->unk302 = 6; + gCurrentPinballGame->rampPrizeVisibilityTimer = 6; PlayRumble(8); } } @@ -136,9 +136,9 @@ void sub_2C538(void) group = &gMain.spriteGroups[58]; if (group->available) { - group->baseX = 184 - gCurrentPinballGame->unk58; - group->baseY = 277 - gCurrentPinballGame->unk5A; - DmaCopy16(3, gUnknown_0847DF0C[index], (void*) 0x06013580, 0x300); + group->baseX = 184 - gCurrentPinballGame->cameraXOffset; + group->baseY = 277 - gCurrentPinballGame->cameraYOffset; + DmaCopy16(3, gRubyRampGateTileGfx[index], (void*) 0x06013580, 0x300); for (i = 0; i < 3;i++) { oamSimple = &group->oam[i]; @@ -148,7 +148,7 @@ void sub_2C538(void) } } -void sub_2C9A4(void) +void DrawRubyNuzleafPlatformSprite(void) { struct OamDataSimple *oamSimple; struct SpriteGroup *group; @@ -157,16 +157,16 @@ void sub_2C9A4(void) group = &gMain.spriteGroups[66]; if (group->available) { - if (gCurrentPinballGame->unk29F) - group->baseY = (gCurrentPinballGame->unk290 % 32) / 8 - (gCurrentPinballGame->unk5A - 52); + if (gCurrentPinballGame->rampPrizeType) + group->baseY = (gCurrentPinballGame->globalAnimFrameCounter % 32) / 8 - (gCurrentPinballGame->cameraYOffset - 52); else group->baseY = 180; - group->baseX = 120 - gCurrentPinballGame->unk58; - if (gCurrentPinballGame->unk29F == 1) - index = (gCurrentPinballGame->unk290 % 32) / 8 + 4; + group->baseX = 120 - gCurrentPinballGame->cameraXOffset; + if (gCurrentPinballGame->rampPrizeType == 1) + index = (gCurrentPinballGame->globalAnimFrameCounter % 32) / 8 + 4; else - index = (gCurrentPinballGame->unk290 % 32) / 8; + index = (gCurrentPinballGame->globalAnimFrameCounter % 32) / 8; DmaCopy16(3, gRubyBoardRampPrize_Gfx[index], (void *) 0x06014B00, 0x80); oamSimple = &group->oam[0]; diff --git a/src/rom_2E67C.c b/src/rom_2E67C.c index f6bf99e..d7f86c8 100644 --- a/src/rom_2E67C.c +++ b/src/rom_2E67C.c @@ -3,59 +3,59 @@ #include "main.h" #include "constants/bg_music.h" -extern const s16 gUnknown_086AE45A[]; -extern const s16 gUnknown_086AE3DC[][3]; -extern const s8 gUnknown_08137CBC[][2]; -extern const u8 gPelliper_Gfx[][0x480]; -extern const u16 gUnknown_086B3EF6[20][4][3]; -extern const s16 gUnknown_086AE462[][2]; +extern const s16 gPelipperIdleFrameIndices[]; +extern const s16 gPelipperSwallowAnimData[][3]; +extern const s8 gPelipperFlyAnimTable[][2]; +extern const u8 gPelipper_Gfx[][0x480]; +extern const u16 gPelipperPondSpritesheetOam[20][4][3]; +extern const s16 gWailmerAnimFrameMap[][2]; extern const u8 gSapphireBoardWailmer_Gfx[][0x300]; extern const u16 gWailmerSpritesheetOam[26][2][3]; extern const u8 gSapphireBoardZigzagoonFx_Gfx[]; -extern const s16 gUnknown_086AE496[][3]; +extern const s16 gZigzagoonAnimKeyframes[][3]; extern const u8 gSapphireBoardZigzagoon_Gfx[][0x380]; extern const u16 gSapphireBoardZigzagoonSpritesheetOam[42][3][3]; -extern const u16 gUnknown_086B3B7E[14][7][3]; -extern const u8 gUnknown_084ED6CC[][0x200]; -extern const s16 gUnknown_086AE4FC[][2]; -extern const s16 gUnknown_08137CD6[]; -extern const u8 gUnknown_0847A40C[][0x300]; -extern const u8 gUnknown_0847D10C[][0x200]; -extern const u8 gUnknown_084C1E6C[][0x300]; -extern const u8 gUnknown_084C4B6C[][0x200]; +extern const u16 gZigzagoonFxSpritesheetOam[14][7][3]; +extern const u8 gZigzagoonShockWallIndicator_Gfx[][0x200]; +extern const s16 gSapphireBumperAnimFrames[][2]; +extern const s16 gBumperMosaicValues[]; +extern const u8 gSapphireBumperLeft_Gfx[][0x300]; +extern const u8 gSapphireBumperLeftHit_Gfx[][0x200]; +extern const u8 gSapphireBumperRight_Gfx[][0x300]; +extern const u8 gSapphireBumperRightHit_Gfx[][0x200]; extern const u8 gSapphireBoardShopShockWall_Gfx[][0x80]; -extern const u8 gUnknown_0845690C[][0x200]; -extern const u8 gUnknown_08483D8C[][0x480]; -extern const u8 gUnknown_08488A0C[][0x480]; -extern const u8 gUnknown_081BCAA4[]; -extern const u8 gUnknown_081BE2C4[]; -extern const u8 gUnknown_081BE4C4[]; -extern const u8 gUnknown_081BFCE4[]; -extern const s16 gUnknown_086AE394[][3]; -extern const s16 gUnknown_08137928[]; -extern const s16 gUnknown_08055A68[][7]; -extern u16 gUnknown_086B3FE6[][18]; +extern const u8 gPondBumper_Gfx[][0x200]; +extern const u8 gRubyTravelVolbeat_Gfx[][0x480]; +extern const u8 gSapphireTravelIllumise_Gfx[][0x480]; +extern const u8 gRubyBoardBonusGfx[]; +extern const u8 gRubyBoardBonusObjPalette[]; +extern const u8 gSapphireBoardBonusGfx[]; +extern const u8 gSapphireBoardBonusObjPalette[]; +extern const s16 gTravelEventAnimData[][3]; +extern const s16 gAreaToSpeciesTable[]; +extern const s16 gAreaRouletteTable[][7]; +extern u16 gTravelEventSpritesheetOam[][18]; extern struct SongHeader se_unk_e3; -extern const s16 gUnknown_086AE0D0[]; -extern const u16 gUnknown_086B4E62[22][12]; -extern const u8 gUnknown_08158284[]; -extern const u8 gUnknown_0815A6A4[]; -extern const u16 gUnknown_086B4112[20][12]; -extern const u8 gUnknown_083A562C[]; -extern const u8 gUnknown_083A6E4C[]; -extern const s16 gUnknown_086AE344[][2]; -extern const u8 gUnknown_083C076C[][0x1C0]; -extern const u8 gUnknown_08455E8C[][0x200]; -extern const u8 gUnknown_0845648C[][0x40]; -extern const u8 gUnknown_086AE324[]; +extern const s16 gHatchRevealFinalTimings[]; +extern const u16 gHatchSequentialOamFramesets[22][12]; +extern const u8 gBoardActionTilesGfx[]; +extern const u8 gBoardActionObjPal[]; +extern const u16 gEvolutionSparkleSpritesheetOam[20][12]; +extern const u8 gHatchFinalTilesGfx[]; +extern const u8 gHatchFinalPalette[]; +extern const s16 gSapphirePondAnimFramesets[][2]; +extern const u8 gSapphirePondEntity_Gfx[][0x1C0]; +extern const u8 gOneUpBannerSprite_Gfx[][0x200]; +extern const u8 gLifeCountDigit_Gfx[][0x40]; +extern const u8 gOneUpSpritePalette[]; extern struct SongHeader se_unk_fc; extern struct SongHeader se_unk_7a; -extern u8 gUnknown_020028A8[][3]; +extern u8 gPaletteFadeRGBCache[][3]; -void sub_2CA9C(void) +void AnimateOneUpSprite(void) { s16 i; struct SpriteGroup *group; @@ -66,13 +66,13 @@ void sub_2CA9C(void) s16 scale; var0 = 0; - group = gMain.unk44[50]; + group = gMain.fieldSpriteGroups[50]; if (group->available) { group->baseX = 202; - if (gCurrentPinballGame->unk286 > 48) + if (gCurrentPinballGame->oneUpAnimTimer > 48) { - var1 = gCurrentPinballGame->unk286 - 48; + var1 = gCurrentPinballGame->oneUpAnimTimer - 48; if (var1 >= 34) { group->baseY = 146 - (42 - var1) * 2; @@ -96,7 +96,7 @@ void sub_2CA9C(void) index = 0; } - DmaCopy16(3, gUnknown_08455E8C[index], (void *)0x060152A0, 0x200); + DmaCopy16(3, gOneUpBannerSprite_Gfx[index], (void *)0x060152A0, 0x200); } else { @@ -107,13 +107,13 @@ void sub_2CA9C(void) gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; - if (gCurrentPinballGame->unk286 > 56) + if (gCurrentPinballGame->oneUpAnimTimer > 56) { scale = 0x100; } else { - var1 = gCurrentPinballGame->unk286 - 36; + var1 = gCurrentPinballGame->oneUpAnimTimer - 36; if (var1 >= 0) { scale = (var1 * 0x80) / 20 + 0x80; @@ -135,10 +135,10 @@ void sub_2CA9C(void) gOamBuffer[oamSimple->oamId].matrixNum = 6; SetMatrixScale(scale, scale, 6); - if (gCurrentPinballGame->unk286 < 58) + if (gCurrentPinballGame->oneUpAnimTimer < 58) { - index = gCurrentPinballGame->numLives - 1 + (((gCurrentPinballGame->unk286 % 16) / 8) * 9); - DmaCopy16(3, gUnknown_0845648C[index], (void *)0x06015520, 0x40); + index = gCurrentPinballGame->numLives - 1 + (((gCurrentPinballGame->oneUpAnimTimer % 16) / 8) * 9); + DmaCopy16(3, gLifeCountDigit_Gfx[index], (void *)0x06015520, 0x40); oamSimple = &group->oam[2]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + 216; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset - 112; @@ -151,40 +151,40 @@ void sub_2CA9C(void) } } - if (gCurrentPinballGame->unk286) + if (gCurrentPinballGame->oneUpAnimTimer) { - if (gCurrentPinballGame->unk286 == 90) + if (gCurrentPinballGame->oneUpAnimTimer == 90) { group->available = 1; - DmaCopy16(3, gUnknown_086AE324, (void *)0x05000380, 0x20); + DmaCopy16(3, gOneUpSpritePalette, (void *)0x05000380, 0x20); } - if (gCurrentPinballGame->unk286 == 85) + if (gCurrentPinballGame->oneUpAnimTimer == 85) MPlayStart(&gMPlayInfo_SE1, &se_unk_fc); - if (gCurrentPinballGame->unk286 == 58) + if (gCurrentPinballGame->oneUpAnimTimer == 58) { MPlayStart(&gMPlayInfo_SE1, &se_unk_7a); if (gCurrentPinballGame->numLives < 9) gCurrentPinballGame->numLives++; } - gCurrentPinballGame->unk286--; - if (gCurrentPinballGame->unk286 == 0) + gCurrentPinballGame->oneUpAnimTimer--; + if (gCurrentPinballGame->oneUpAnimTimer == 0) group->available = 0; } } -void sub_2CD98(void) +void AnimateBannerSlide(void) { s16 i; struct SpriteGroup *group; struct OamDataSimple *oamSimple; - group = gMain.unk44[10]; + group = gMain.fieldSpriteGroups[10]; if (group->available) { - group->baseX = gCurrentPinballGame->unk16A; + group->baseX = gCurrentPinballGame->bannerSlideX; group->baseY = 44; for (i = 0; i < 7; i++) { @@ -194,122 +194,122 @@ void sub_2CD98(void) } } - if (gCurrentPinballGame->unkF4 > 0) + if (gCurrentPinballGame->bannerDisplayDuration > 0) { - if (gCurrentPinballGame->unkF4 == 120) - gMain.unk44[10]->available = 1; + if (gCurrentPinballGame->bannerDisplayDuration == 120) + gMain.fieldSpriteGroups[10]->available = 1; - gCurrentPinballGame->unk16A = 270 - ((120 - gCurrentPinballGame->unkF4) * 3); - if (gCurrentPinballGame->unkF4 == 1) - gMain.unk44[10]->available = 0; + gCurrentPinballGame->bannerSlideX = 270 - ((120 - gCurrentPinballGame->bannerDisplayDuration) * 3); + if (gCurrentPinballGame->bannerDisplayDuration == 1) + gMain.fieldSpriteGroups[10]->available = 0; } } -void sub_2CE80(void) +void UpdateSpoinkAnimation(void) { - if (gCurrentPinballGame->unk68 < 170) + if (gCurrentPinballGame->cameraYViewport < 170) { - DmaCopy16(3, gUnknown_08137B3C[gMain.selectedField][gCurrentPinballGame->unk6F * 2], (void *)OBJ_PLTT + 0x160, 0x20); + DmaCopy16(3, gFieldPaletteVariants[gMain.selectedField][gCurrentPinballGame->activePaletteIndex * 2], (void *)OBJ_PLTT + 0x160, 0x20); } else { - DmaCopy16(3, gUnknown_08137B3C[gMain.selectedField][gCurrentPinballGame->unk6F * 2 + 1], (void *)OBJ_PLTT + 0x160, 0x20); + DmaCopy16(3, gFieldPaletteVariants[gMain.selectedField][gCurrentPinballGame->activePaletteIndex * 2 + 1], (void *)OBJ_PLTT + 0x160, 0x20); } - switch (gCurrentPinballGame->unk163) + switch (gCurrentPinballGame->sapphirePondFlag) { case 0: - gCurrentPinballGame->unk164 = 0; - gCurrentPinballGame->unk168 = 0; - if (gCurrentPinballGame->unk165) - gCurrentPinballGame->unk166 = (gCurrentPinballGame->unk290 % 30) / 15; + gCurrentPinballGame->pondAnimFrameIndex = 0; + gCurrentPinballGame->pondAnimSubTimer = 0; + if (gCurrentPinballGame->sapphireEntityCollisionFlag) + gCurrentPinballGame->sapphireSpriteTimer = (gCurrentPinballGame->globalAnimFrameCounter % 30) / 15; else - gCurrentPinballGame->unk166 = 0; + gCurrentPinballGame->sapphireSpriteTimer = 0; - gCurrentPinballGame->unk165 = 0; + gCurrentPinballGame->sapphireEntityCollisionFlag = 0; break; case 1: - if (gCurrentPinballGame->unk168 < 5) + if (gCurrentPinballGame->pondAnimSubTimer < 5) { - if (gCurrentPinballGame->unk168 < 2) + if (gCurrentPinballGame->pondAnimSubTimer < 2) { - gCurrentPinballGame->unk164 = 2; - gCurrentPinballGame->unk166 = 3; + gCurrentPinballGame->pondAnimFrameIndex = 2; + gCurrentPinballGame->sapphireSpriteTimer = 3; } else { - gCurrentPinballGame->unk164 = 3; - gCurrentPinballGame->unk166 = 5; + gCurrentPinballGame->pondAnimFrameIndex = 3; + gCurrentPinballGame->sapphireSpriteTimer = 5; } - if (gCurrentPinballGame->unk168 == 0) + if (gCurrentPinballGame->pondAnimSubTimer == 0) m4aSongNumStart(SE_UNKNOWN_0xCC); - gCurrentPinballGame->unk168++; + gCurrentPinballGame->pondAnimSubTimer++; } else { - gCurrentPinballGame->unk163 = 2; - gCurrentPinballGame->unk164 = 4; - gCurrentPinballGame->unk168 = 0; + gCurrentPinballGame->sapphirePondFlag = 2; + gCurrentPinballGame->pondAnimFrameIndex = 4; + gCurrentPinballGame->pondAnimSubTimer = 0; } break; case 2: - if (gUnknown_086AE344[gCurrentPinballGame->unk164][1] <= gCurrentPinballGame->unk168) + if (gSapphirePondAnimFramesets[gCurrentPinballGame->pondAnimFrameIndex][1] <= gCurrentPinballGame->pondAnimSubTimer) { - gCurrentPinballGame->unk168 = 0; - gCurrentPinballGame->unk164++; - if (gCurrentPinballGame->unk164 > 7) - gCurrentPinballGame->unk164 = 4; + gCurrentPinballGame->pondAnimSubTimer = 0; + gCurrentPinballGame->pondAnimFrameIndex++; + if (gCurrentPinballGame->pondAnimFrameIndex > 7) + gCurrentPinballGame->pondAnimFrameIndex = 4; } else { - gCurrentPinballGame->unk168++; + gCurrentPinballGame->pondAnimSubTimer++; } break; case 3: - gCurrentPinballGame->unk164 = 8; - gCurrentPinballGame->unk168 = 0; - gCurrentPinballGame->unk163 = 4; - gCurrentPinballGame->unk166 = 0; + gCurrentPinballGame->pondAnimFrameIndex = 8; + gCurrentPinballGame->pondAnimSubTimer = 0; + gCurrentPinballGame->sapphirePondFlag = 4; + gCurrentPinballGame->sapphireSpriteTimer = 0; break; case 4: - if (gUnknown_086AE344[gCurrentPinballGame->unk164][1] > gCurrentPinballGame->unk168) + if (gSapphirePondAnimFramesets[gCurrentPinballGame->pondAnimFrameIndex][1] > gCurrentPinballGame->pondAnimSubTimer) { - gCurrentPinballGame->unk168++; + gCurrentPinballGame->pondAnimSubTimer++; } else { - gCurrentPinballGame->unk168 = 0; - gCurrentPinballGame->unk164++; - if (gCurrentPinballGame->unk164 > 0x13) + gCurrentPinballGame->pondAnimSubTimer = 0; + gCurrentPinballGame->pondAnimFrameIndex++; + if (gCurrentPinballGame->pondAnimFrameIndex > 0x13) { - gCurrentPinballGame->unk164 = 0; - gCurrentPinballGame->unk163 = 0; + gCurrentPinballGame->pondAnimFrameIndex = 0; + gCurrentPinballGame->sapphirePondFlag = 0; } } break; } } -void sub_2D104(void) +void DrawSpoinkSprite(void) { s16 i; struct SpriteGroup *group; struct OamDataSimple *oamSimple; s16 index; - group = gMain.unk44[44]; + group = gMain.fieldSpriteGroups[44]; if (group->available) { - if (gCurrentPinballGame->unk164 == 0) - index = (gCurrentPinballGame->unk290 % 30) / 15; + if (gCurrentPinballGame->pondAnimFrameIndex == 0) + index = (gCurrentPinballGame->globalAnimFrameCounter % 30) / 15; else - index = gUnknown_086AE344[gCurrentPinballGame->unk164][0]; + index = gSapphirePondAnimFramesets[gCurrentPinballGame->pondAnimFrameIndex][0]; - DmaCopy16(3, gUnknown_083C076C[index], (void *)0x060120E0, 0x1C0); - group->baseX = 231 - gCurrentPinballGame->unk58; - group->baseY = 376 - gCurrentPinballGame->unk5A; + DmaCopy16(3, gSapphirePondEntity_Gfx[index], (void *)0x060120E0, 0x1C0); + group->baseX = 231 - gCurrentPinballGame->cameraXOffset; + group->baseY = 376 - gCurrentPinballGame->cameraYOffset; for (i = 0; i < 3; i++) { oamSimple = &group->oam[i]; @@ -319,7 +319,7 @@ void sub_2D104(void) } } -void sub_2D204(void) +void RunEvolutionCutscene(void) { s16 i, j; struct SpriteGroup *group; @@ -331,72 +331,72 @@ void sub_2D204(void) s16 sp1B0[0x30]; u8 sp210[3]; - if (gCurrentPinballGame->unk18 <= 360) + if (gCurrentPinballGame->stageTimer <= 360) { - if (gCurrentPinballGame->unk18 == 0) + if (gCurrentPinballGame->stageTimer == 0) { m4aMPlayAllStop(); - DmaCopy16(3, (void *)0x05000200, gCurrentPinballGame->unk111A, 0x200); - gCurrentPinballGame->unk6DB = 0; - gCurrentPinballGame->unk5FA = 0; + DmaCopy16(3, (void *)0x05000200, gCurrentPinballGame->pauseObjPalette, 0x200); + gCurrentPinballGame->creatureOamPriority = 0; + gCurrentPinballGame->boardEntityActive = 0; } - if (gCurrentPinballGame->unk18 == 10) + if (gCurrentPinballGame->stageTimer == 10) { - gCurrentPinballGame->unkE4 = 16; - DmaCopy16(3, gUnknown_08158284, (void *)0x06015800, 0x2400); - DmaCopy16(3, gUnknown_0815A6A4, (void *)0x050003C0, 0x20); - gMain.unk44[24]->available = 1; - gMain.unk44[25]->available = 1; - gMain.unk44[26]->available = 1; - gMain.unk44[27]->available = 1; - gMain.unk44[28]->available = 1; - gMain.unk44[15]->available = 1; + gCurrentPinballGame->activePortraitType = 16; + DmaCopy16(3, gBoardActionTilesGfx, (void *)0x06015800, 0x2400); + DmaCopy16(3, gBoardActionObjPal, (void *)0x050003C0, 0x20); + gMain.fieldSpriteGroups[24]->available = 1; + gMain.fieldSpriteGroups[25]->available = 1; + gMain.fieldSpriteGroups[26]->available = 1; + gMain.fieldSpriteGroups[27]->available = 1; + gMain.fieldSpriteGroups[28]->available = 1; + gMain.fieldSpriteGroups[15]->available = 1; } - if (gCurrentPinballGame->unkCC < 236) - gCurrentPinballGame->unkE6 = gCurrentPinballGame->unk18 / 2;; + if (gCurrentPinballGame->scrollEffectY < 236) + gCurrentPinballGame->cameraYAdjust = gCurrentPinballGame->stageTimer / 2;; - if (gCurrentPinballGame->unk18 > 35) + if (gCurrentPinballGame->stageTimer > 35) { - if (gCurrentPinballGame->unk18 < 68) + if (gCurrentPinballGame->stageTimer < 68) { - var0 = gCurrentPinballGame->unk18 - 36; + var0 = gCurrentPinballGame->stageTimer - 36; for (j = 0; j <= var0; j++) { for (i = 1; i < 11; i++) - gUnknown_03005C00[(i + 15) * 0x20 + j] = 0xC100; + gBG0TilemapBuffer[(i + 15) * 0x20 + j] = 0xC100; } - DmaCopy16(3, gUnknown_03005C00, (void *)0x06002000, 0x800); + DmaCopy16(3, gBG0TilemapBuffer, (void *)0x06002000, 0x800); if (var0 == 30) m4aSongNumStart(MUS_EVOLUTION); - if (gMain.selectedField == FIELD_SAPPHIRE && gCurrentPinballGame->unk18 == 67) - gCurrentPinballGame->unk380 = 120; + if (gMain.selectedField == FIELD_SAPPHIRE && gCurrentPinballGame->stageTimer == 67) + gCurrentPinballGame->sapphireBumperTimer = 120; } - else if (gCurrentPinballGame->unk18 <= 344) + else if (gCurrentPinballGame->stageTimer <= 344) { for (j = 0; j <= 30; j++) { for (i = 1; i < 11; i++) - gUnknown_03005C00[(i + 15) * 32 + j] = 0xC100; + gBG0TilemapBuffer[(i + 15) * 32 + j] = 0xC100; } - DmaCopy16(3, gUnknown_03005C00, (void *)0x06002000, 0x800); + DmaCopy16(3, gBG0TilemapBuffer, (void *)0x06002000, 0x800); } } - if (gCurrentPinballGame->unk18 - 270 >= 0 && gCurrentPinballGame->unk18 - 270 <= 30) + if (gCurrentPinballGame->stageTimer - 270 >= 0 && gCurrentPinballGame->stageTimer - 270 <= 30) { - var0 = gCurrentPinballGame->unk18 - 270; + var0 = gCurrentPinballGame->stageTimer - 270; if (var0 == 0) { for (i = 0; i < 16; i++) { - gUnknown_020028A8[i][0] = gCurrentPinballGame->unk111A[13][i] & 0x1F; - gUnknown_020028A8[i][1] = (gCurrentPinballGame->unk111A[13][i] & 0x3E0) >> 5; - gUnknown_020028A8[i][2] = (gCurrentPinballGame->unk111A[13][i] & 0x7C00) >> 10; + gPaletteFadeRGBCache[i][0] = gCurrentPinballGame->pauseObjPalette[13][i] & 0x1F; + gPaletteFadeRGBCache[i][1] = (gCurrentPinballGame->pauseObjPalette[13][i] & 0x3E0) >> 5; + gPaletteFadeRGBCache[i][2] = (gCurrentPinballGame->pauseObjPalette[13][i] & 0x7C00) >> 10; } } else @@ -405,9 +405,9 @@ void sub_2D204(void) for (i = 0; i < 16; i++) { destColor = sp1B0; - sp210[0] = gUnknown_020028A8[i][0] + ((0x1F - gUnknown_020028A8[i][0]) * var0) / 30; - sp210[1] = gUnknown_020028A8[i][1] + ((0x1F - gUnknown_020028A8[i][1]) * var0) / 30; - sp210[2] = gUnknown_020028A8[i][2] + ((0x1F - gUnknown_020028A8[i][2]) * var0) / 30; + sp210[0] = gPaletteFadeRGBCache[i][0] + ((0x1F - gPaletteFadeRGBCache[i][0]) * var0) / 30; + sp210[1] = gPaletteFadeRGBCache[i][1] + ((0x1F - gPaletteFadeRGBCache[i][1]) * var0) / 30; + sp210[2] = gPaletteFadeRGBCache[i][2] + ((0x1F - gPaletteFadeRGBCache[i][2]) * var0) / 30; destColor[i] = sp210[0] | (sp210[1] << 5) | (sp210[2] << 0xA); } @@ -418,19 +418,19 @@ void sub_2D204(void) m4aSongNumStart(SE_UNKNOWN_0xB0); } - var0 = gCurrentPinballGame->unk18 - 300; + var0 = gCurrentPinballGame->stageTimer - 300; if (var0 >= 0 && var0 <= 16) { - gCurrentPinballGame->unk1100 = 1; - var0 = gCurrentPinballGame->unk18 - 300; + gCurrentPinballGame->startButtonDisabled = 1; + var0 = gCurrentPinballGame->stageTimer - 300; gMain.blendControl = 0x9F; gMain.blendBrightness = var0; } - if (gCurrentPinballGame->unk18 > 10) + if (gCurrentPinballGame->stageTimer > 10) { - group = gMain.unk44[24]; - var0 = -120 + gCurrentPinballGame->unk18; + group = gMain.fieldSpriteGroups[24]; + var0 = -120 + gCurrentPinballGame->stageTimer; if (var0 >= 22) sp0[0] = ((var0 - 22) % 102) * 3 - 160; else @@ -451,8 +451,8 @@ void sub_2D204(void) else sp0[3] = -161; - group->baseX = 96 - gCurrentPinballGame->unk58; - group->baseY = 308 - gCurrentPinballGame->unk5A; + group->baseX = 96 - gCurrentPinballGame->cameraXOffset; + group->baseY = 308 - gCurrentPinballGame->cameraYOffset; for (i = 0; i < 4; i++) { oamSimple = &group->oam[i]; @@ -460,7 +460,7 @@ void sub_2D204(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - var0 = -60 + gCurrentPinballGame->unk18; + var0 = -60 + gCurrentPinballGame->stageTimer; if (var0 >= 22) sp0[0] = ((var0 - 22) % 102) * 3 - 160; else @@ -481,9 +481,9 @@ void sub_2D204(void) else sp0[3] = -161; - group = gMain.unk44[25]; - group->baseX = 96 - gCurrentPinballGame->unk58; - group->baseY = 308 - gCurrentPinballGame->unk5A; + group = gMain.fieldSpriteGroups[25]; + group->baseX = 96 - gCurrentPinballGame->cameraXOffset; + group->baseY = 308 - gCurrentPinballGame->cameraYOffset; for (i = 0; i < 4; i++) { oamSimple = &group->oam[i]; @@ -491,8 +491,8 @@ void sub_2D204(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - group = gMain.unk44[26]; - var0 = -100 + gCurrentPinballGame->unk18; + group = gMain.fieldSpriteGroups[26]; + var0 = -100 + gCurrentPinballGame->stageTimer; if (var0 >= 0) sp0[0] = (var0 % 152) * 2 - 160; else @@ -513,8 +513,8 @@ void sub_2D204(void) else sp0[3] = -160; - group->baseX = 96 - gCurrentPinballGame->unk58; - group->baseY = 308 - gCurrentPinballGame->unk5A; + group->baseX = 96 - gCurrentPinballGame->cameraXOffset; + group->baseY = 308 - gCurrentPinballGame->cameraYOffset; for (i = 0; i < 4; i++) { oamSimple = &group->oam[i]; @@ -522,8 +522,8 @@ void sub_2D204(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - group = gMain.unk44[27]; - var0 = -80 + gCurrentPinballGame->unk18; + group = gMain.fieldSpriteGroups[27]; + var0 = -80 + gCurrentPinballGame->stageTimer; if (var0 >= 0) sp0[0] = (var0 % 152) * 2 - 160; else @@ -544,8 +544,8 @@ void sub_2D204(void) else sp0[3] = -160; - group->baseX = 96 - gCurrentPinballGame->unk58; - group->baseY = 308 - gCurrentPinballGame->unk5A; + group->baseX = 96 - gCurrentPinballGame->cameraXOffset; + group->baseY = 308 - gCurrentPinballGame->cameraYOffset; for (i = 0; i < 4; i++) { oamSimple = &group->oam[i]; @@ -553,7 +553,7 @@ void sub_2D204(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - var0 = -90 + gCurrentPinballGame->unk18; + var0 = -90 + gCurrentPinballGame->stageTimer; if (var0 >= 236) sp0[0] = (var0 - 236) % 272 - 128; else @@ -594,9 +594,9 @@ void sub_2D204(void) else sp0[7] = -128; - group = gMain.unk44[28]; - group->baseX = 96 - gCurrentPinballGame->unk58; - group->baseY = 308 - gCurrentPinballGame->unk5A; + group = gMain.fieldSpriteGroups[28]; + group->baseX = 96 - gCurrentPinballGame->cameraXOffset; + group->baseY = 308 - gCurrentPinballGame->cameraYOffset; for (i = 0; i < 8; i++) { oamSimple = &group->oam[i]; @@ -604,10 +604,10 @@ void sub_2D204(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } - group = gMain.unk44[15]; - group->baseX = 96 - gCurrentPinballGame->unk58; - group->baseY = 308 - gCurrentPinballGame->unk5A; - var0 = -120 + gCurrentPinballGame->unk18; + group = gMain.fieldSpriteGroups[15]; + group->baseX = 96 - gCurrentPinballGame->cameraXOffset; + group->baseY = 308 - gCurrentPinballGame->cameraYOffset; + var0 = -120 + gCurrentPinballGame->stageTimer; if (var0 > 0) { sp0[0] = 0; @@ -623,43 +623,43 @@ void sub_2D204(void) { oamSimple = &group->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_086B4112[index][i * 3 + 0]; - *dst++ = gUnknown_086B4112[index][i * 3 + 1]; - *dst++ = gUnknown_086B4112[index][i * 3 + 2]; + *dst++ = gEvolutionSparkleSpritesheetOam[index][i * 3 + 0]; + *dst++ = gEvolutionSparkleSpritesheetOam[index][i * 3 + 1]; + *dst++ = gEvolutionSparkleSpritesheetOam[index][i * 3 + 2]; gOamBuffer[oamSimple->oamId].x += group->baseX + sp0[0]; gOamBuffer[oamSimple->oamId].y += group->baseY; } } - if (gCurrentPinballGame->unk18 == 350) + if (gCurrentPinballGame->stageTimer == 350) { for (i = 0x1E0; i < 0x340; i++) - gUnknown_03005C00[i] = 0x1FF; + gBG0TilemapBuffer[i] = 0x1FF; - DmaCopy16(3, gUnknown_03005C00, (void *)0x06002000, 0x800); + DmaCopy16(3, gBG0TilemapBuffer, (void *)0x06002000, 0x800); if (gMain.selectedField == FIELD_SAPPHIRE) - gCurrentPinballGame->unk380 = 0; + gCurrentPinballGame->sapphireBumperTimer = 0; } - if (gCurrentPinballGame->unk18 == 360) + if (gCurrentPinballGame->stageTimer == 360) { - gMain.unk44[24]->available = 0; - gMain.unk44[25]->available = 0; - gMain.unk44[26]->available = 0; - gMain.unk44[27]->available = 0; - gMain.unk44[28]->available = 0; - gMain.unk44[15]->available = 0; - gCurrentPinballGame->currentSpecies = gCurrentPinballGame->unk5A2; - sub_1C7F4(3, 0); - gCurrentPinballGame->unkE4 = 17; - DmaCopy16(3, gUnknown_083A562C, (void *)0x06015800, 0x1800); - DmaCopy16(3, gUnknown_083A6E4C, (void *)0x050003C0, 0x20); - gCurrentPinballGame->unk6DB = 3; + gMain.fieldSpriteGroups[24]->available = 0; + gMain.fieldSpriteGroups[25]->available = 0; + gMain.fieldSpriteGroups[26]->available = 0; + gMain.fieldSpriteGroups[27]->available = 0; + gMain.fieldSpriteGroups[28]->available = 0; + gMain.fieldSpriteGroups[15]->available = 0; + gCurrentPinballGame->currentSpecies = gCurrentPinballGame->postEvoSpecies; + LoadPortraitGraphics(3, 0); + gCurrentPinballGame->activePortraitType = 17; + DmaCopy16(3, gHatchFinalTilesGfx, (void *)0x06015800, 0x1800); + DmaCopy16(3, gHatchFinalPalette, (void *)0x050003C0, 0x20); + gCurrentPinballGame->creatureOamPriority = 3; } } else { - var0 = gCurrentPinballGame->unk18 - 360; + var0 = gCurrentPinballGame->stageTimer - 360; if (var0 <= 64) { if (var0 == 1) @@ -669,43 +669,43 @@ void sub_2D204(void) gMain.blendBrightness = 16 - (var0 / 4); if (var0 == 32) { - gCurrentPinballGame->unk29C = 140; - PlayCry_Normal(gSpeciesInfo[gCurrentPinballGame->currentSpecies].mainSeriesIndexNumber, 0); + gCurrentPinballGame->bgmFadeTimer = 140; + PlayCry_Normal(gSpeciesInfo[gCurrentPinballGame->currentSpecies].speciesIdRS, 0); } if (var0 == 64) { - gCurrentPinballGame->unk604 = 0; - gCurrentPinballGame->unk603 = 0; - gMain.unk44[37]->available = 1; + gCurrentPinballGame->revealAnimFrameCounter = 0; + gCurrentPinballGame->revealFramesetIndex = 0; + gMain.fieldSpriteGroups[37]->available = 1; } } else { - gCurrentPinballGame->unk1100 = 0; - if (gUnknown_086AE0D0[gCurrentPinballGame->unk603] > gCurrentPinballGame->unk604) + gCurrentPinballGame->startButtonDisabled = 0; + if (gHatchRevealFinalTimings[gCurrentPinballGame->revealFramesetIndex] > gCurrentPinballGame->revealAnimFrameCounter) { - gCurrentPinballGame->unk604++; + gCurrentPinballGame->revealAnimFrameCounter++; } else { - gCurrentPinballGame->unk604 = 0; - gCurrentPinballGame->unk603++; - if (gCurrentPinballGame->unk603 > 10) + gCurrentPinballGame->revealAnimFrameCounter = 0; + gCurrentPinballGame->revealFramesetIndex++; + if (gCurrentPinballGame->revealFramesetIndex > 10) { - gMain.unk44[37]->available = 0; - gCurrentPinballGame->unk603 = 10; - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk17++; - DmaCopy16(3, gCurrentPinballGame->unk111A, (void *)0x05000200, 0x180); - gCurrentPinballGame->unkE4 = 0; + gMain.fieldSpriteGroups[37]->available = 0; + gCurrentPinballGame->revealFramesetIndex = 10; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardSubState++; + DmaCopy16(3, gCurrentPinballGame->pauseObjPalette, (void *)0x05000200, 0x180); + gCurrentPinballGame->activePortraitType = 0; } } - index = gCurrentPinballGame->unk603; - group = gMain.unk44[37]; - group->baseX = 96 - gCurrentPinballGame->unk58; - group->baseY = 300 - gCurrentPinballGame->unk5A; + index = gCurrentPinballGame->revealFramesetIndex; + group = gMain.fieldSpriteGroups[37]; + group->baseX = 96 - gCurrentPinballGame->cameraXOffset; + group->baseY = 300 - gCurrentPinballGame->cameraYOffset; if (group->baseY >= 200) group->baseY = 200; @@ -713,9 +713,9 @@ void sub_2D204(void) { oamSimple = &group->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_086B4E62[index][i * 3 + 0]; - *dst++ = gUnknown_086B4E62[index][i * 3 + 1]; - *dst++ = gUnknown_086B4E62[index][i * 3 + 2]; + *dst++ = gHatchSequentialOamFramesets[index][i * 3 + 0]; + *dst++ = gHatchSequentialOamFramesets[index][i * 3 + 1]; + *dst++ = gHatchSequentialOamFramesets[index][i * 3 + 2]; gOamBuffer[oamSimple->oamId].x += group->baseX; gOamBuffer[oamSimple->oamId].y += group->baseY; } @@ -723,7 +723,7 @@ void sub_2D204(void) } } -void sub_2E094(void) +void RunTravelEventCutscene(void) { s16 i; struct SpriteGroup *group; @@ -733,41 +733,41 @@ void sub_2E094(void) s16 var0; index = 0; - if (gCurrentPinballGame->unk18 == 0) + if (gCurrentPinballGame->stageTimer == 0) { - gMain.unk44[16]->available = 1; - gCurrentPinballGame->unk60C = 1400; - gCurrentPinballGame->unk60E = -600; - gCurrentPinballGame->unkE4 = 21; + gMain.fieldSpriteGroups[16]->available = 1; + gCurrentPinballGame->travelPainterPosX = 1400; + gCurrentPinballGame->travelPainterPosY = -600; + gCurrentPinballGame->activePortraitType = 21; if (gMain.selectedField == FIELD_RUBY) { - DmaCopy16(3, gUnknown_081BCAA4, (void *)0x06015800, 0x1800); - DmaCopy16(3, gUnknown_081BE2C4, (void *)0x050003C0, 0x20); - DmaCopy16(3, gUnknown_08483D8C, (void *)0x06015800, 0x480); + DmaCopy16(3, gRubyBoardBonusGfx, (void *)0x06015800, 0x1800); + DmaCopy16(3, gRubyBoardBonusObjPalette, (void *)0x050003C0, 0x20); + DmaCopy16(3, gRubyTravelVolbeat_Gfx, (void *)0x06015800, 0x480); } else { - DmaCopy16(3, gUnknown_081BE4C4, (void *)0x06015800, 0x1800); - DmaCopy16(3, gUnknown_081BFCE4, (void *)0x050003C0, 0x20); - DmaCopy16(3, gUnknown_08488A0C, (void *)0x06015800, 0x480); + DmaCopy16(3, gSapphireBoardBonusGfx, (void *)0x06015800, 0x1800); + DmaCopy16(3, gSapphireBoardBonusObjPalette, (void *)0x050003C0, 0x20); + DmaCopy16(3, gSapphireTravelIllumise_Gfx, (void *)0x06015800, 0x480); } } else { - if (gCurrentPinballGame->unk18 < 60) + if (gCurrentPinballGame->stageTimer < 60) { - u16 angle = (gCurrentPinballGame->unk18 * 0x4000) / 60; - gCurrentPinballGame->unk60C = (Cos(angle) * 900) / 20000 + 487; - gCurrentPinballGame->unk60E = (Sin(angle) * 600) / 20000 - 629; - gCurrentPinballGame->unk610 = -17; - gCurrentPinballGame->unk612 = -30; - index = (gCurrentPinballGame->unk18 % 4) / 2; - if (gCurrentPinballGame->unk18 % 10 == 0) + u16 angle = (gCurrentPinballGame->stageTimer * 0x4000) / 60; + gCurrentPinballGame->travelPainterPosX = (Cos(angle) * 900) / 20000 + 487; + gCurrentPinballGame->travelPainterPosY = (Sin(angle) * 600) / 20000 - 629; + gCurrentPinballGame->travelPainterVelX = -17; + gCurrentPinballGame->travelPainterVelY = -30; + index = (gCurrentPinballGame->stageTimer % 4) / 2; + if (gCurrentPinballGame->stageTimer % 10 == 0) m4aSongNumStart(SE_UNKNOWN_0x97); } - else if (gCurrentPinballGame->unk18 < 90) + else if (gCurrentPinballGame->stageTimer < 90) { - var0 = gCurrentPinballGame->unk18 - 60; + var0 = gCurrentPinballGame->stageTimer - 60; if (var0 < 12) { index = (var0 % 12) / 2 + 2; @@ -778,51 +778,51 @@ void sub_2E094(void) index = (var0 % 18) / 3 + 2; } - gCurrentPinballGame->unk612 += 2; - gCurrentPinballGame->unk60C += gCurrentPinballGame->unk610; - gCurrentPinballGame->unk60E += gCurrentPinballGame->unk612; - gCurrentPinballGame->unk60A = 0; - gCurrentPinballGame->unk608 = 0; + gCurrentPinballGame->travelPainterVelY += 2; + gCurrentPinballGame->travelPainterPosX += gCurrentPinballGame->travelPainterVelX; + gCurrentPinballGame->travelPainterPosY += gCurrentPinballGame->travelPainterVelY; + gCurrentPinballGame->travelAnimKeyframeIndex = 0; + gCurrentPinballGame->travelAnimSubTimer = 0; } - else if (gCurrentPinballGame->unk18 < 190) + else if (gCurrentPinballGame->stageTimer < 190) { - if (gUnknown_086AE394[gCurrentPinballGame->unk60A][2] > gCurrentPinballGame->unk608) + if (gTravelEventAnimData[gCurrentPinballGame->travelAnimKeyframeIndex][2] > gCurrentPinballGame->travelAnimSubTimer) { - gCurrentPinballGame->unk608++; + gCurrentPinballGame->travelAnimSubTimer++; } else { - gCurrentPinballGame->unk608 = 0; - gCurrentPinballGame->unk60A++; - if (gCurrentPinballGame->unk60A == 7) + gCurrentPinballGame->travelAnimSubTimer = 0; + gCurrentPinballGame->travelAnimKeyframeIndex++; + if (gCurrentPinballGame->travelAnimKeyframeIndex == 7) { - gCurrentPinballGame->area = gUnknown_08055A68[gMain.selectedField][gCurrentPinballGame->unk32]; - gCurrentPinballGame->unk6D9[0] = gUnknown_08137928[gCurrentPinballGame->area]; - sub_1C7F4(0, 0); + gCurrentPinballGame->area = gAreaRouletteTable[gMain.selectedField][gCurrentPinballGame->areaRouletteSlotIndex]; + gCurrentPinballGame->rouletteAreaIndex[0] = gAreaToSpeciesTable[gCurrentPinballGame->area]; + LoadPortraitGraphics(0, 0); } - if (gCurrentPinballGame->unk60A == 11) - gCurrentPinballGame->unk18 = 189; + if (gCurrentPinballGame->travelAnimKeyframeIndex == 11) + gCurrentPinballGame->stageTimer = 189; } - index = gUnknown_086AE394[gCurrentPinballGame->unk60A][1]; - if (gUnknown_086AE394[gCurrentPinballGame->unk60A][2] == 5 && gCurrentPinballGame->unk608 == 1) + index = gTravelEventAnimData[gCurrentPinballGame->travelAnimKeyframeIndex][1]; + if (gTravelEventAnimData[gCurrentPinballGame->travelAnimKeyframeIndex][2] == 5 && gCurrentPinballGame->travelAnimSubTimer == 1) m4aSongNumStart(SE_UNKNOWN_0x98); if (index == 16) - gCurrentPinballGame->unk60C = -80; + gCurrentPinballGame->travelPainterPosX = -80; else - gCurrentPinballGame->unk60C = 0; + gCurrentPinballGame->travelPainterPosX = 0; - gCurrentPinballGame->unk610 = -24; - gCurrentPinballGame->unk612 = 14; + gCurrentPinballGame->travelPainterVelX = -24; + gCurrentPinballGame->travelPainterVelY = 14; } - else if (gCurrentPinballGame->unk18 < 430) + else if (gCurrentPinballGame->stageTimer < 430) { - var0 = gCurrentPinballGame->unk18 - 190; + var0 = gCurrentPinballGame->stageTimer - 190; if (var0 < 24) { - gCurrentPinballGame->unk60C = var0 * -14; + gCurrentPinballGame->travelPainterPosX = var0 * -14; index = (var0 % 24) / 4 + 2; } else if (var0 < 30) @@ -841,62 +841,62 @@ void sub_2E094(void) index = 15; } } - else if (gCurrentPinballGame->unk18 < 490) + else if (gCurrentPinballGame->stageTimer < 490) { - index = (gCurrentPinballGame->unk18 % 4) / 2; - gCurrentPinballGame->unk612--; - gCurrentPinballGame->unk60C += gCurrentPinballGame->unk610; - gCurrentPinballGame->unk60E += gCurrentPinballGame->unk612; - if (gCurrentPinballGame->unk18 % 10 == 0) + index = (gCurrentPinballGame->stageTimer % 4) / 2; + gCurrentPinballGame->travelPainterVelY--; + gCurrentPinballGame->travelPainterPosX += gCurrentPinballGame->travelPainterVelX; + gCurrentPinballGame->travelPainterPosY += gCurrentPinballGame->travelPainterVelY; + if (gCurrentPinballGame->stageTimer % 10 == 0) m4aSongNumStart(SE_UNKNOWN_0x97); } if (gMain.selectedField == FIELD_RUBY) { - DmaCopy16(3, gUnknown_08483D8C[index], (void *) 0x06015800, 0x480); + DmaCopy16(3, gRubyTravelVolbeat_Gfx[index], (void *) 0x06015800, 0x480); } else { - DmaCopy16(3, gUnknown_08488A0C[index], (void *) 0x06015800, 0x480); + DmaCopy16(3, gSapphireTravelIllumise_Gfx[index], (void *) 0x06015800, 0x480); } - index = gUnknown_086AE394[gCurrentPinballGame->unk60A][0]; - group = gMain.unk44[16]; - group->baseX = gCurrentPinballGame->unk60C / 10 + 96u - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk60E / 10 + 300u - gCurrentPinballGame->unk5A; + index = gTravelEventAnimData[gCurrentPinballGame->travelAnimKeyframeIndex][0]; + group = gMain.fieldSpriteGroups[16]; + group->baseX = gCurrentPinballGame->travelPainterPosX / 10 + 96u - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->travelPainterPosY / 10 + 300u - gCurrentPinballGame->cameraYOffset; for( i = 0; i < 6; i++) { oamSimple = &group->oam[i]; dst =(u16*) &gOamBuffer[oamSimple->oamId]; - *dst++ = gUnknown_086B3FE6[index][i * 3 + 0]; - *dst++ = gUnknown_086B3FE6[index][i * 3 + 1]; - *dst++ = gUnknown_086B3FE6[index][i * 3 + 2]; + *dst++ = gTravelEventSpritesheetOam[index][i * 3 + 0]; + *dst++ = gTravelEventSpritesheetOam[index][i * 3 + 1]; + *dst++ = gTravelEventSpritesheetOam[index][i * 3 + 2]; gOamBuffer[oamSimple->oamId].x += group->baseX; gOamBuffer[oamSimple->oamId].y += group->baseY; } } - if (gCurrentPinballGame->unk18 == 489) + if (gCurrentPinballGame->stageTimer == 489) { - gMain.unk44[16]->available = 0; - gCurrentPinballGame->unkE4 = 0; + gMain.fieldSpriteGroups[16]->available = 0; + gCurrentPinballGame->activePortraitType = 0; } } -void sub_2E67C(void) +void DecrementFieldTimer(void) { - if (gCurrentPinballGame->unk306 == 1) + if (gCurrentPinballGame->pelipperState == 1) { - if (gCurrentPinballGame->unk30C) - gCurrentPinballGame->unk30C--; + if (gCurrentPinballGame->pelipperFrameTimer) + gCurrentPinballGame->pelipperFrameTimer--; else - gCurrentPinballGame->unk306 = 0; + gCurrentPinballGame->pelipperState = 0; } } -//Sapphire pond - Pelliper -void sub_2E6AC(void) +//Sapphire pond - Pelipper +void UpdatePelipperPondEntity(void) { s16 i; struct SpriteGroup *group = &gMain.spriteGroups[60]; @@ -909,23 +909,23 @@ void sub_2E6AC(void) var_sl = 0; sp0 = 0; - switch (gCurrentPinballGame->unk306) + switch (gCurrentPinballGame->pelipperState) { case 0: - gCurrentPinballGame->unk30E = 0; - var_sl = (gCurrentPinballGame->unk290 % 50) / 25; - gCurrentPinballGame->unk320 = 0; - gCurrentPinballGame->unk322 = 0; + gCurrentPinballGame->pelipperYBobOffset = 0; + var_sl = (gCurrentPinballGame->globalAnimFrameCounter % 50) / 25; + gCurrentPinballGame->pelipperPosX = 0; + gCurrentPinballGame->pelipperPosY = 0; break; case 1: - var_sl = gUnknown_086AE45A[(gCurrentPinballGame->unk290 % 40) / 10]; - gCurrentPinballGame->unk320 = 0; - gCurrentPinballGame->unk322 = 0; - gCurrentPinballGame->unk307 = 0; - gCurrentPinballGame->unk30A = 0; - if (gCurrentPinballGame->unk13 > 2) + var_sl = gPelipperIdleFrameIndices[(gCurrentPinballGame->globalAnimFrameCounter % 40) / 10]; + gCurrentPinballGame->pelipperPosX = 0; + gCurrentPinballGame->pelipperPosY = 0; + gCurrentPinballGame->pelipperSwallowAnimIndex = 0; + gCurrentPinballGame->pelipperSwallowSubTimer = 0; + if (gCurrentPinballGame->boardState > 2) { - gCurrentPinballGame->unk306 = 0; + gCurrentPinballGame->pelipperState = 0; var_sl = 0; } break; @@ -933,35 +933,35 @@ void sub_2E6AC(void) var_sl = 4; break; case 3: - if (gCurrentPinballGame->unk30C < 3) + if (gCurrentPinballGame->pelipperFrameTimer < 3) { - if (gCurrentPinballGame->unk30C == 0) + if (gCurrentPinballGame->pelipperFrameTimer == 0) { - gCurrentPinballGame->unk5F7 = 1; - gCurrentPinballGame->unk1F = 1; + gCurrentPinballGame->ballUpgradeTimerFrozen = 1; + gCurrentPinballGame->ballFrozenState = 1; gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; - gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->ball->spinSpeed = 0; m4aSongNumStart(SE_UNKNOWN_0xE2); PlayRumble(7); gCurrentPinballGame->scoreAddedInFrame = 100000; } gCurrentPinballGame->ball->positionQ0.x = 156; - gCurrentPinballGame->ball->positionQ0.y = 121 + gCurrentPinballGame->unk30C * 2; + gCurrentPinballGame->ball->positionQ0.y = 121 + gCurrentPinballGame->pelipperFrameTimer * 2; var_sl = 4; } - else if (gCurrentPinballGame->unk30C < 23) + else if (gCurrentPinballGame->pelipperFrameTimer < 23) { gCurrentPinballGame->ball->positionQ0.x = 157; gCurrentPinballGame->ball->positionQ0.y = 134; - gCurrentPinballGame->ball->unk0 = 1; + gCurrentPinballGame->ball->ballHidden = 1; var_sl = 5; } else { - gCurrentPinballGame->unk306 = 4; - gCurrentPinballGame->unk30C = 0; + gCurrentPinballGame->pelipperState = 4; + gCurrentPinballGame->pelipperFrameTimer = 0; var_sl = 2; } @@ -969,144 +969,144 @@ void sub_2E6AC(void) gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2; gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ0.x << 8; gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ0.y << 8; - gCurrentPinballGame->unk30C++; - gCurrentPinballGame->unk310 = 0; + gCurrentPinballGame->pelipperFrameTimer++; + gCurrentPinballGame->pelipperSfxTimer = 0; break; case 4: - if (gUnknown_086AE3DC[gCurrentPinballGame->unk307][2] > gCurrentPinballGame->unk30A) + if (gPelipperSwallowAnimData[gCurrentPinballGame->pelipperSwallowAnimIndex][2] > gCurrentPinballGame->pelipperSwallowSubTimer) { - gCurrentPinballGame->unk30A++; + gCurrentPinballGame->pelipperSwallowSubTimer++; } else { - gCurrentPinballGame->unk30A = 0; - gCurrentPinballGame->unk307++; - if (gCurrentPinballGame->unk307 == 21) + gCurrentPinballGame->pelipperSwallowSubTimer = 0; + gCurrentPinballGame->pelipperSwallowAnimIndex++; + if (gCurrentPinballGame->pelipperSwallowAnimIndex == 21) { - gCurrentPinballGame->unk307 = 20; - gCurrentPinballGame->unk306 = 5; - gCurrentPinballGame->unk30C = 0; + gCurrentPinballGame->pelipperSwallowAnimIndex = 20; + gCurrentPinballGame->pelipperState = 5; + gCurrentPinballGame->pelipperFrameTimer = 0; } - if (gCurrentPinballGame->unk307 == 1) + if (gCurrentPinballGame->pelipperSwallowAnimIndex == 1) m4aSongNumStart(SE_UNKNOWN_0xE3); } - sp0 = gUnknown_086AE3DC[gCurrentPinballGame->unk307][0]; - var_sl = gUnknown_086AE3DC[gCurrentPinballGame->unk307][1]; - if (gCurrentPinballGame->unk310++ % 35 == 34) + sp0 = gPelipperSwallowAnimData[gCurrentPinballGame->pelipperSwallowAnimIndex][0]; + var_sl = gPelipperSwallowAnimData[gCurrentPinballGame->pelipperSwallowAnimIndex][1]; + if (gCurrentPinballGame->pelipperSfxTimer++ % 35 == 34) m4aSongNumStart(SE_UNKNOWN_0xE3); break; case 5: - if (gCurrentPinballGame->unk30C == 0) + if (gCurrentPinballGame->pelipperFrameTimer == 0) { - gCurrentPinballGame->unk320 = -360; - gCurrentPinballGame->unk322 = -200; + gCurrentPinballGame->pelipperPosX = -360; + gCurrentPinballGame->pelipperPosY = -200; } - index = (gCurrentPinballGame->unk30C % 26) / 2; - var_sl = gUnknown_08137CBC[index][0]; - gCurrentPinballGame->unk30E = gUnknown_08137CBC[index][1] * 10; - gCurrentPinballGame->unk31C = -12; - gCurrentPinballGame->unk31E = -10; - gCurrentPinballGame->unk320 += gCurrentPinballGame->unk31C; - gCurrentPinballGame->unk322 += gCurrentPinballGame->unk31E; - gCurrentPinballGame->ball->positionQ0.x = gCurrentPinballGame->unk320 / 10 + 157; - gCurrentPinballGame->ball->positionQ0.y = gCurrentPinballGame->unk322 / 10 + 134; + index = (gCurrentPinballGame->pelipperFrameTimer % 26) / 2; + var_sl = gPelipperFlyAnimTable[index][0]; + gCurrentPinballGame->pelipperYBobOffset = gPelipperFlyAnimTable[index][1] * 10; + gCurrentPinballGame->pelipperFlyVelX = -12; + gCurrentPinballGame->pelipperFlyVelY = -10; + gCurrentPinballGame->pelipperPosX += gCurrentPinballGame->pelipperFlyVelX; + gCurrentPinballGame->pelipperPosY += gCurrentPinballGame->pelipperFlyVelY; + gCurrentPinballGame->ball->positionQ0.x = gCurrentPinballGame->pelipperPosX / 10 + 157; + gCurrentPinballGame->ball->positionQ0.y = gCurrentPinballGame->pelipperPosY / 10 + 134; gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2; gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2; gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ0.x << 8; gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ0.y << 8; - gCurrentPinballGame->unk30C++; + gCurrentPinballGame->pelipperFrameTimer++; if (gCurrentPinballGame->ball->positionQ0.y < -12) { if (gCurrentPinballGame->bumperHitsSinceReset > 99) { gCurrentPinballGame->bumperHitsSinceReset = 0; - gCurrentPinballGame->unk306 = 6; - gCurrentPinballGame->unk30C = 65; + gCurrentPinballGame->pelipperState = 6; + gCurrentPinballGame->pelipperFrameTimer = 65; m4aMPlayAllStop(); } else { - gCurrentPinballGame->unk30C = 0; - gCurrentPinballGame->unk306 = 7; + gCurrentPinballGame->pelipperFrameTimer = 0; + gCurrentPinballGame->pelipperState = 7; } } - if (gCurrentPinballGame->unk310++ % 35 == 34) + if (gCurrentPinballGame->pelipperSfxTimer++ % 35 == 34) m4aSongNumStart(SE_UNKNOWN_0xE3); break; case 6: - gCurrentPinballGame->unk1100 = 1; - var_sl = gUnknown_08137CBC[0][0]; - if (gCurrentPinballGame->unk30C == 65) + gCurrentPinballGame->startButtonDisabled = 1; + var_sl = gPelipperFlyAnimTable[0][0]; + if (gCurrentPinballGame->pelipperFrameTimer == 65) { m4aSongNumStart(SE_WARP); gMain.blendControl = 0x9E; } - if (gCurrentPinballGame->unk30C) + if (gCurrentPinballGame->pelipperFrameTimer) { - gCurrentPinballGame->unk30C--; - gMain.blendBrightness = 16 - gCurrentPinballGame->unk30C / 4; - if (gCurrentPinballGame->unk30C == 0) + gCurrentPinballGame->pelipperFrameTimer--; + gMain.blendBrightness = 16 - gCurrentPinballGame->pelipperFrameTimer / 4; + if (gCurrentPinballGame->pelipperFrameTimer == 0) { - gCurrentPinballGame->unk284 = FIELD_SPHEAL; - gCurrentPinballGame->unk282 = 2; - gCurrentPinballGame->unk73C = gCurrentPinballGame->unk72E; - gCurrentPinballGame->catchModeArrows = gCurrentPinballGame->unk72F; - sub_1C73C(); + gCurrentPinballGame->nextBonusField = FIELD_SPHEAL; + gCurrentPinballGame->bonusReturnState = 2; + gCurrentPinballGame->arrowProgressPreserved = gCurrentPinballGame->evoArrowProgress; + gCurrentPinballGame->catchModeArrows = gCurrentPinballGame->catchArrowProgress; + TransitionToBonusField(); } } break; case 7: - gCurrentPinballGame->unk320 = -1880; - gCurrentPinballGame->unk322 = -800; - gCurrentPinballGame->unk31C = 82; - gCurrentPinballGame->unk31E = 0; - gCurrentPinballGame->unk30C = 0; - gCurrentPinballGame->unk306 = 8; + gCurrentPinballGame->pelipperPosX = -1880; + gCurrentPinballGame->pelipperPosY = -800; + gCurrentPinballGame->pelipperFlyVelX = 82; + gCurrentPinballGame->pelipperFlyVelY = 0; + gCurrentPinballGame->pelipperFrameTimer = 0; + gCurrentPinballGame->pelipperState = 8; var_sl = 13; sp0 = 9; break; case 8: - var_sl = (gCurrentPinballGame->unk30C % 24) / 6 + 13; - gCurrentPinballGame->unk30E = (Sin(gCurrentPinballGame->unk30C * 0x400) * 240) / 20000; - if (gCurrentPinballGame->unk30C == 0) + var_sl = (gCurrentPinballGame->pelipperFrameTimer % 24) / 6 + 13; + gCurrentPinballGame->pelipperYBobOffset = (Sin(gCurrentPinballGame->pelipperFrameTimer * 0x400) * 240) / 20000; + if (gCurrentPinballGame->pelipperFrameTimer == 0) m4aSongNumStart(SE_UNKNOWN_0xE4); - if (gCurrentPinballGame->unk30C < 40) + if (gCurrentPinballGame->pelipperFrameTimer < 40) { - gCurrentPinballGame->unk320 += gCurrentPinballGame->unk31C; - gCurrentPinballGame->unk322 += gCurrentPinballGame->unk31E; + gCurrentPinballGame->pelipperPosX += gCurrentPinballGame->pelipperFlyVelX; + gCurrentPinballGame->pelipperPosY += gCurrentPinballGame->pelipperFlyVelY; } - else if (gCurrentPinballGame->unk30C >= 70) + else if (gCurrentPinballGame->pelipperFrameTimer >= 70) { - gCurrentPinballGame->unk30C = 0; - gCurrentPinballGame->unk306 = 9; - gCurrentPinballGame->unk320 = 1200; - gCurrentPinballGame->unk322 = -1000; + gCurrentPinballGame->pelipperFrameTimer = 0; + gCurrentPinballGame->pelipperState = 9; + gCurrentPinballGame->pelipperPosX = 1200; + gCurrentPinballGame->pelipperPosY = -1000; m4aSongNumStart(SE_UNKNOWN_0xE3); - gCurrentPinballGame->unk310 = 0; + gCurrentPinballGame->pelipperSfxTimer = 0; } - if (gCurrentPinballGame->unk30C == 13) + if (gCurrentPinballGame->pelipperFrameTimer == 13) { - gCurrentPinballGame->ball->unk0 = 0; - gCurrentPinballGame->unk314 = 5; - gCurrentPinballGame->unk316 = -25; - gCurrentPinballGame->unk318 = (gCurrentPinballGame->unk320 / 10 + 157) * 10; - gCurrentPinballGame->unk31A = (gCurrentPinballGame->unk322 / 10 + 134) * 10; + gCurrentPinballGame->ball->ballHidden = 0; + gCurrentPinballGame->pelipperBallDropVelX = 5; + gCurrentPinballGame->pelipperBallDropVelY = -25; + gCurrentPinballGame->pelipperBallDropPosX = (gCurrentPinballGame->pelipperPosX / 10 + 157) * 10; + gCurrentPinballGame->pelipperBallDropPosY = (gCurrentPinballGame->pelipperPosY / 10 + 134) * 10; gCurrentPinballGame->ball->oamPriority = 1; } - if (gCurrentPinballGame->unk1F) + if (gCurrentPinballGame->ballFrozenState) { - if (gCurrentPinballGame->unk30C < 13) + if (gCurrentPinballGame->pelipperFrameTimer < 13) { - gCurrentPinballGame->ball->positionQ0.x = gCurrentPinballGame->unk320 / 10 + 157; - gCurrentPinballGame->ball->positionQ0.y = gCurrentPinballGame->unk322 / 10 + 134; + gCurrentPinballGame->ball->positionQ0.x = gCurrentPinballGame->pelipperPosX / 10 + 157; + gCurrentPinballGame->ball->positionQ0.y = gCurrentPinballGame->pelipperPosY / 10 + 134; gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2; gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2; gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ0.x << 8; @@ -1114,20 +1114,20 @@ void sub_2E6AC(void) } else { - gCurrentPinballGame->unk316 += 2; - gCurrentPinballGame->unk318 += gCurrentPinballGame->unk314; - gCurrentPinballGame->unk31A += gCurrentPinballGame->unk316; - gCurrentPinballGame->ball->positionQ0.x = gCurrentPinballGame->unk318 / 10; - gCurrentPinballGame->ball->positionQ0.y = gCurrentPinballGame->unk31A / 10; + gCurrentPinballGame->pelipperBallDropVelY += 2; + gCurrentPinballGame->pelipperBallDropPosX += gCurrentPinballGame->pelipperBallDropVelX; + gCurrentPinballGame->pelipperBallDropPosY += gCurrentPinballGame->pelipperBallDropVelY; + gCurrentPinballGame->ball->positionQ0.x = gCurrentPinballGame->pelipperBallDropPosX / 10; + gCurrentPinballGame->ball->positionQ0.y = gCurrentPinballGame->pelipperBallDropPosY / 10; if (gCurrentPinballGame->ball->positionQ0.y >= 91) { gCurrentPinballGame->ball->positionQ0.y = 91; - gCurrentPinballGame->unk5F7 = 0; - gCurrentPinballGame->unk1F = 0; + gCurrentPinballGame->ballUpgradeTimerFrozen = 0; + gCurrentPinballGame->ballFrozenState = 0; gCurrentPinballGame->ball->velocity.x = 128; gCurrentPinballGame->ball->velocity.y = 256; gCurrentPinballGame->ball->oamPriority = 3; - gCurrentPinballGame->unk24 = 0; + gCurrentPinballGame->boardLayerDepth = 0; m4aSongNumStart(SE_UNKNOWN_0xE5); PlayRumble(7); } @@ -1140,49 +1140,49 @@ void sub_2E6AC(void) } sp0 = 9; - gCurrentPinballGame->unk30C++; + gCurrentPinballGame->pelipperFrameTimer++; break; case 9: - index = (gCurrentPinballGame->unk30C % 26) / 2; - var_sl = gUnknown_08137CBC[index][0] + 4; - gCurrentPinballGame->unk30E = gUnknown_08137CBC[index][1]; - gCurrentPinballGame->unk31C = -12; - gCurrentPinballGame->unk31E = 10; - if (gCurrentPinballGame->unk30C < 100) + index = (gCurrentPinballGame->pelipperFrameTimer % 26) / 2; + var_sl = gPelipperFlyAnimTable[index][0] + 4; + gCurrentPinballGame->pelipperYBobOffset = gPelipperFlyAnimTable[index][1]; + gCurrentPinballGame->pelipperFlyVelX = -12; + gCurrentPinballGame->pelipperFlyVelY = 10; + if (gCurrentPinballGame->pelipperFrameTimer < 100) { - gCurrentPinballGame->unk320 += gCurrentPinballGame->unk31C; - gCurrentPinballGame->unk322 += gCurrentPinballGame->unk31E; + gCurrentPinballGame->pelipperPosX += gCurrentPinballGame->pelipperFlyVelX; + gCurrentPinballGame->pelipperPosY += gCurrentPinballGame->pelipperFlyVelY; } else { - gCurrentPinballGame->unk30C = 0; - gCurrentPinballGame->unk306 = 10; + gCurrentPinballGame->pelipperFrameTimer = 0; + gCurrentPinballGame->pelipperState = 10; MPlayStart(&gMPlayInfo_SE1, &se_unk_e3); } - if (gCurrentPinballGame->unk310++ % 35 == 34) + if (gCurrentPinballGame->pelipperSfxTimer++ % 35 == 34) MPlayStart(&gMPlayInfo_SE1, &se_unk_e3); - gCurrentPinballGame->unk30C++; + gCurrentPinballGame->pelipperFrameTimer++; break; case 10: - gCurrentPinballGame->unk30E = 0; - gCurrentPinballGame->unk306 = 0; - gCurrentPinballGame->unk30C = 0; + gCurrentPinballGame->pelipperYBobOffset = 0; + gCurrentPinballGame->pelipperState = 0; + gCurrentPinballGame->pelipperFrameTimer = 0; var_sl = 0; break; } if (group->available) { - DmaCopy16(3, gPelliper_Gfx[var_sl], (void *)0x060122A0, 0x480); - group->baseX = gCurrentPinballGame->unk320 / 10 + 146 - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk322 / 10 + 110 - gCurrentPinballGame->unk5A + gCurrentPinballGame->unk30E / 10; + DmaCopy16(3, gPelipper_Gfx[var_sl], (void *)0x060122A0, 0x480); + group->baseX = gCurrentPinballGame->pelipperPosX / 10 + 146 - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->pelipperPosY / 10 + 110 - gCurrentPinballGame->cameraYOffset + gCurrentPinballGame->pelipperYBobOffset / 10; for (i = 0; i < 4; i++) { oamSimple = &group->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B3EF6[sp0][i]; + src = gPelipperPondSpritesheetOam[sp0][i]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -1193,7 +1193,7 @@ void sub_2E6AC(void) } } -void sub_2F140(void) +void AnimateWailmerEntity(void) { s16 i; struct SpriteGroup *group; @@ -1203,15 +1203,15 @@ void sub_2F140(void) s16 index; s16 var0; - index = (gCurrentPinballGame->unk290 % 32) / 16; + index = (gCurrentPinballGame->globalAnimFrameCounter % 32) / 16; group = &gMain.spriteGroups[75]; - if (gCurrentPinballGame->unk2F4) - index = gCurrentPinballGame->unk2F4; + if (gCurrentPinballGame->catchHoleAnimFrame) + index = gCurrentPinballGame->catchHoleAnimFrame; - var0 = gUnknown_086AE462[index][0]; - index = gUnknown_086AE462[index][1]; - group->baseX = 164 - gCurrentPinballGame->unk58; - group->baseY = 166 - gCurrentPinballGame->unk5A; + var0 = gWailmerAnimFrameMap[index][0]; + index = gWailmerAnimFrameMap[index][1]; + group->baseX = 164 - gCurrentPinballGame->cameraXOffset; + group->baseY = 166 - gCurrentPinballGame->cameraYOffset; DmaCopy16(3, gSapphireBoardWailmer_Gfx[index], (void *)0x06012720, 0x300); for (i = 0; i < 2; i++) { @@ -1227,87 +1227,87 @@ void sub_2F140(void) } } -void sub_2F26C(void) +void UpdateZigzagoonEntity(void) { s16 var0; - switch (gCurrentPinballGame->unk378) + switch (gCurrentPinballGame->zigzagoonState) { case 0: - gCurrentPinballGame->unk379 = (gCurrentPinballGame->unk290 % 50) / 25 + 2; - gCurrentPinballGame->unk37A = gCurrentPinballGame->unk379 + 1; - gCurrentPinballGame->unk37C = 0; + gCurrentPinballGame->zigzagoonGfxFrame = (gCurrentPinballGame->globalAnimFrameCounter % 50) / 25 + 2; + gCurrentPinballGame->zigzagoonOamFrame = gCurrentPinballGame->zigzagoonGfxFrame + 1; + gCurrentPinballGame->zigzagoonShockWallActive = 0; break; case 1: - var0 = gCurrentPinballGame->unk290 % 33; + var0 = gCurrentPinballGame->globalAnimFrameCounter % 33; if (var0 < 13) { - gCurrentPinballGame->unk379 = 0; - gCurrentPinballGame->unk37A = 0; + gCurrentPinballGame->zigzagoonGfxFrame = 0; + gCurrentPinballGame->zigzagoonOamFrame = 0; } else if (var0 < 20) { - gCurrentPinballGame->unk379 = 9; - gCurrentPinballGame->unk37A = 1; + gCurrentPinballGame->zigzagoonGfxFrame = 9; + gCurrentPinballGame->zigzagoonOamFrame = 1; } else if (var0 < 26) { - gCurrentPinballGame->unk379 = 1; - gCurrentPinballGame->unk37A = 2; + gCurrentPinballGame->zigzagoonGfxFrame = 1; + gCurrentPinballGame->zigzagoonOamFrame = 2; } else { - gCurrentPinballGame->unk379 = 9; - gCurrentPinballGame->unk37A = 1; + gCurrentPinballGame->zigzagoonGfxFrame = 9; + gCurrentPinballGame->zigzagoonOamFrame = 1; } - if (gCurrentPinballGame->unk25 != 4) - gCurrentPinballGame->unk37C = 0; + if (gCurrentPinballGame->ballCatchState != 4) + gCurrentPinballGame->zigzagoonShockWallActive = 0; break; case 2: - gCurrentPinballGame->unk37C = 0; - gCurrentPinballGame->unk37D = 0; - gCurrentPinballGame->unk37E = 0; - gCurrentPinballGame->unk378 = 3; - gCurrentPinballGame->unk37B = 0; + gCurrentPinballGame->zigzagoonShockWallActive = 0; + gCurrentPinballGame->zigzagoonAnimKeyframeIndex = 0; + gCurrentPinballGame->sapphireBumperAnimFrame = 0; + gCurrentPinballGame->zigzagoonState = 3; + gCurrentPinballGame->zigzagoonFxFrame = 0; gMain.spriteGroups[27].available = 1; - gCurrentPinballGame->unkE4 = 22; + gCurrentPinballGame->activePortraitType = 22; DmaCopy16(3, gSapphireBoardZigzagoonFx_Gfx, (void *)0x06015800, 0xC00); m4aSongNumStart(SE_UNKNOWN_0xEC); gCurrentPinballGame->scoreAddedInFrame = 5000; break; case 3: - if (gUnknown_086AE496[gCurrentPinballGame->unk37D][1] > gCurrentPinballGame->unk37E) + if (gZigzagoonAnimKeyframes[gCurrentPinballGame->zigzagoonAnimKeyframeIndex][1] > gCurrentPinballGame->sapphireBumperAnimFrame) { - gCurrentPinballGame->unk37E++; + gCurrentPinballGame->sapphireBumperAnimFrame++; } else { - gCurrentPinballGame->unk37D++; - gCurrentPinballGame->unk37E = 0; - if (gCurrentPinballGame->unk37D > 16) + gCurrentPinballGame->zigzagoonAnimKeyframeIndex++; + gCurrentPinballGame->sapphireBumperAnimFrame = 0; + if (gCurrentPinballGame->zigzagoonAnimKeyframeIndex > 16) { - gCurrentPinballGame->unk37D = 16; - gCurrentPinballGame->unk378 = 4; + gCurrentPinballGame->zigzagoonAnimKeyframeIndex = 16; + gCurrentPinballGame->zigzagoonState = 4; } } - gCurrentPinballGame->unk37A = gUnknown_086AE496[gCurrentPinballGame->unk37D][0]; - gCurrentPinballGame->unk379 = gUnknown_086AE496[gCurrentPinballGame->unk37D][2]; - if (gCurrentPinballGame->unk37D < 6) - gCurrentPinballGame->unk37B = gCurrentPinballGame->unk37D + 1; + gCurrentPinballGame->zigzagoonOamFrame = gZigzagoonAnimKeyframes[gCurrentPinballGame->zigzagoonAnimKeyframeIndex][0]; + gCurrentPinballGame->zigzagoonGfxFrame = gZigzagoonAnimKeyframes[gCurrentPinballGame->zigzagoonAnimKeyframeIndex][2]; + if (gCurrentPinballGame->zigzagoonAnimKeyframeIndex < 6) + gCurrentPinballGame->zigzagoonFxFrame = gCurrentPinballGame->zigzagoonAnimKeyframeIndex + 1; else - gCurrentPinballGame->unk37B = 0; + gCurrentPinballGame->zigzagoonFxFrame = 0; break; case 4: - gCurrentPinballGame->unkE4 = 0; + gCurrentPinballGame->activePortraitType = 0; gMain.spriteGroups[27].available = 0; - gCurrentPinballGame->unk378 = 0; + gCurrentPinballGame->zigzagoonState = 0; break; } } -void sub_2F504(void) +void DrawZigzagoonAndShockWall(void) { s16 i; struct SpriteGroup *group; @@ -1319,11 +1319,11 @@ void sub_2F504(void) group = &gMain.spriteGroups[26]; if (group->available) { - group->baseX = 198 - gCurrentPinballGame->unk58; - group->baseY = gCurrentPinballGame->unk380 + 284 - gCurrentPinballGame->unk5A; - index = gCurrentPinballGame->unk379; + group->baseX = 198 - gCurrentPinballGame->cameraXOffset; + group->baseY = gCurrentPinballGame->sapphireBumperTimer + 284 - gCurrentPinballGame->cameraYOffset; + index = gCurrentPinballGame->zigzagoonGfxFrame; DmaCopy16(3, gSapphireBoardZigzagoon_Gfx[index], (void *)0x06012A20, 0x380); - index = gCurrentPinballGame->unk37A; + index = gCurrentPinballGame->zigzagoonOamFrame; for (i = 0; i < 3; i++) { oamSimple = &group->oam[i]; @@ -1341,14 +1341,14 @@ void sub_2F504(void) group = &gMain.spriteGroups[27]; if (group->available) { - group->baseX = 198 - gCurrentPinballGame->unk58; - group->baseY = 284 - gCurrentPinballGame->unk5A; - index = gCurrentPinballGame->unk37B; + group->baseX = 198 - gCurrentPinballGame->cameraXOffset; + group->baseY = 284 - gCurrentPinballGame->cameraYOffset; + index = gCurrentPinballGame->zigzagoonFxFrame; for (i = 0; i < 7; i++) { oamSimple = &group->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B3B7E[index][i]; + src = gZigzagoonFxSpritesheetOam[index][i]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -1361,12 +1361,12 @@ void sub_2F504(void) group = &gMain.spriteGroups[70]; if (group->available) { - group->baseX = 206 - gCurrentPinballGame->unk58; - if (gCurrentPinballGame->unk37C) + group->baseX = 206 - gCurrentPinballGame->cameraXOffset; + if (gCurrentPinballGame->zigzagoonShockWallActive) { - group->baseY = 260 - gCurrentPinballGame->unk5A; - index = (gCurrentPinballGame->unk290 % 50) / 25; - DmaCopy16(3, &gUnknown_084ED6CC[index], (void *)0x06014FA0, 0x200); + group->baseY = 260 - gCurrentPinballGame->cameraYOffset; + index = (gCurrentPinballGame->globalAnimFrameCounter % 50) / 25; + DmaCopy16(3, &gZigzagoonShockWallIndicator_Gfx[index], (void *)0x06014FA0, 0x200); } else { @@ -1379,204 +1379,204 @@ void sub_2F504(void) } } -void sub_2F79C(void) +void UpdateSapphireBumperLogic(void) { s16 i; u32 mosaicVal; for (i = 0; i < 2; i++) { - switch (gCurrentPinballGame->unk36A[i]) + switch (gCurrentPinballGame->sapphireBumperState[i]) { case 0: - if (gUnknown_086AE4FC[gCurrentPinballGame->unk36C[i]][1] > gCurrentPinballGame->unk36E[i]) + if (gSapphireBumperAnimFrames[gCurrentPinballGame->sapphireBumperAnimKeyframe[i]][1] > gCurrentPinballGame->sapphireBumperAnimSubTimer[i]) { - gCurrentPinballGame->unk36E[i]++; + gCurrentPinballGame->sapphireBumperAnimSubTimer[i]++; } else { - gCurrentPinballGame->unk36C[i]++; - gCurrentPinballGame->unk36E[i] = 0; - if (gCurrentPinballGame->unk36C[i] > 3) - gCurrentPinballGame->unk36C[i] = 0; + gCurrentPinballGame->sapphireBumperAnimKeyframe[i]++; + gCurrentPinballGame->sapphireBumperAnimSubTimer[i] = 0; + if (gCurrentPinballGame->sapphireBumperAnimKeyframe[i] > 3) + gCurrentPinballGame->sapphireBumperAnimKeyframe[i] = 0; } - if (gCurrentPinballGame->unk372[i] < 152) - gCurrentPinballGame->unk372[i]++; + if (gCurrentPinballGame->sapphireBumperHitFxTimer[i] < 152) + gCurrentPinballGame->sapphireBumperHitFxTimer[i]++; else - gCurrentPinballGame->unk372[i] = 0; + gCurrentPinballGame->sapphireBumperHitFxTimer[i] = 0; break; case 1: - if (gUnknown_086AE4FC[gCurrentPinballGame->unk36C[i]][1] > gCurrentPinballGame->unk36E[i]) + if (gSapphireBumperAnimFrames[gCurrentPinballGame->sapphireBumperAnimKeyframe[i]][1] > gCurrentPinballGame->sapphireBumperAnimSubTimer[i]) { - gCurrentPinballGame->unk36E[i]++; + gCurrentPinballGame->sapphireBumperAnimSubTimer[i]++; } else { - gCurrentPinballGame->unk36C[i]++; - gCurrentPinballGame->unk36E[i] = 0; - if (gCurrentPinballGame->unk36C[i] == 5) + gCurrentPinballGame->sapphireBumperAnimKeyframe[i]++; + gCurrentPinballGame->sapphireBumperAnimSubTimer[i] = 0; + if (gCurrentPinballGame->sapphireBumperAnimKeyframe[i] == 5) { m4aSongNumStart(SE_UNKNOWN_0xE6); gCurrentPinballGame->scoreAddedInFrame = 2000; } } - if (gCurrentPinballGame->unk36C[i] == 6) + if (gCurrentPinballGame->sapphireBumperAnimKeyframe[i] == 6) { - if (gCurrentPinballGame->unk376) + if (gCurrentPinballGame->sapphireBumperLitCountdown) { - if (gCurrentPinballGame->unk376 == 1) + if (gCurrentPinballGame->sapphireBumperLitCountdown == 1) { - gCurrentPinballGame->unk36C[i] = 7; - gCurrentPinballGame->unk36A[i] = 2; + gCurrentPinballGame->sapphireBumperAnimKeyframe[i] = 7; + gCurrentPinballGame->sapphireBumperState[i] = 2; } } - gCurrentPinballGame->unk36E[i] = 0; + gCurrentPinballGame->sapphireBumperAnimSubTimer[i] = 0; } - gCurrentPinballGame->unk372[i] = 20; + gCurrentPinballGame->sapphireBumperHitFxTimer[i] = 20; break; case 2: - if (gUnknown_086AE4FC[gCurrentPinballGame->unk36C[i]][1] > gCurrentPinballGame->unk36E[i]) + if (gSapphireBumperAnimFrames[gCurrentPinballGame->sapphireBumperAnimKeyframe[i]][1] > gCurrentPinballGame->sapphireBumperAnimSubTimer[i]) { - gCurrentPinballGame->unk36E[i]++; + gCurrentPinballGame->sapphireBumperAnimSubTimer[i]++; } else { - gCurrentPinballGame->unk36C[i]++; - gCurrentPinballGame->unk36E[i] = 0; - if (gCurrentPinballGame->unk36C[i] == 8) + gCurrentPinballGame->sapphireBumperAnimKeyframe[i]++; + gCurrentPinballGame->sapphireBumperAnimSubTimer[i] = 0; + if (gCurrentPinballGame->sapphireBumperAnimKeyframe[i] == 8) m4aSongNumStart(SE_UNKNOWN_0xE7); - if (gCurrentPinballGame->unk36C[i] > 8) + if (gCurrentPinballGame->sapphireBumperAnimKeyframe[i] > 8) { - gCurrentPinballGame->unk36C[i] = 0; - gCurrentPinballGame->unk36A[i] = 0; + gCurrentPinballGame->sapphireBumperAnimKeyframe[i] = 0; + gCurrentPinballGame->sapphireBumperState[i] = 0; } } - gCurrentPinballGame->unk372[i] = 20; + gCurrentPinballGame->sapphireBumperHitFxTimer[i] = 20; break; case 3: - gCurrentPinballGame->unk36C[i] = 9; - gCurrentPinballGame->unk36E[i] = 0; - gCurrentPinballGame->unk36A[i] = 4; - gCurrentPinballGame->unk372[i] = 20; + gCurrentPinballGame->sapphireBumperAnimKeyframe[i] = 9; + gCurrentPinballGame->sapphireBumperAnimSubTimer[i] = 0; + gCurrentPinballGame->sapphireBumperState[i] = 4; + gCurrentPinballGame->sapphireBumperHitFxTimer[i] = 20; break; case 4: - if (gUnknown_086AE4FC[gCurrentPinballGame->unk36C[i]][1] > gCurrentPinballGame->unk36E[i]) + if (gSapphireBumperAnimFrames[gCurrentPinballGame->sapphireBumperAnimKeyframe[i]][1] > gCurrentPinballGame->sapphireBumperAnimSubTimer[i]) { - gCurrentPinballGame->unk36E[i]++; + gCurrentPinballGame->sapphireBumperAnimSubTimer[i]++; } else { - gCurrentPinballGame->unk36C[i]++; - gCurrentPinballGame->unk36E[i] = 0; - if (gCurrentPinballGame->unk36C[i] > 17) + gCurrentPinballGame->sapphireBumperAnimKeyframe[i]++; + gCurrentPinballGame->sapphireBumperAnimSubTimer[i] = 0; + if (gCurrentPinballGame->sapphireBumperAnimKeyframe[i] > 17) { - if (gCurrentPinballGame->unk13 == 6) + if (gCurrentPinballGame->boardState == 6) { - gCurrentPinballGame->unk36C[i] = 0; - gCurrentPinballGame->unk36A[i] = 0; + gCurrentPinballGame->sapphireBumperAnimKeyframe[i] = 0; + gCurrentPinballGame->sapphireBumperState[i] = 0; } else { - gCurrentPinballGame->unk36C[i] = 9; + gCurrentPinballGame->sapphireBumperAnimKeyframe[i] = 9; } } } - gCurrentPinballGame->unk372[i] = 20; + gCurrentPinballGame->sapphireBumperHitFxTimer[i] = 20; break; case 5: - if (gUnknown_086AE4FC[gCurrentPinballGame->unk36C[i]][1] > gCurrentPinballGame->unk36E[i]) + if (gSapphireBumperAnimFrames[gCurrentPinballGame->sapphireBumperAnimKeyframe[i]][1] > gCurrentPinballGame->sapphireBumperAnimSubTimer[i]) { - gCurrentPinballGame->unk36E[i]++; + gCurrentPinballGame->sapphireBumperAnimSubTimer[i]++; } else { - gCurrentPinballGame->unk36C[i]++; - gCurrentPinballGame->unk36E[i] = 0; - if (gCurrentPinballGame->unk36C[i] > 17) + gCurrentPinballGame->sapphireBumperAnimKeyframe[i]++; + gCurrentPinballGame->sapphireBumperAnimSubTimer[i] = 0; + if (gCurrentPinballGame->sapphireBumperAnimKeyframe[i] > 17) { - gCurrentPinballGame->unk36A[i] = 0; - gCurrentPinballGame->unk36C[i] = 0; + gCurrentPinballGame->sapphireBumperState[i] = 0; + gCurrentPinballGame->sapphireBumperAnimKeyframe[i] = 0; } } - gCurrentPinballGame->unk372[i] = 20; + gCurrentPinballGame->sapphireBumperHitFxTimer[i] = 20; break; } } - if (gCurrentPinballGame->unk25 != 3) + if (gCurrentPinballGame->ballCatchState != 3) { - if (gCurrentPinballGame->unk376) - gCurrentPinballGame->unk376--; + if (gCurrentPinballGame->sapphireBumperLitCountdown) + gCurrentPinballGame->sapphireBumperLitCountdown--; } - if (gCurrentPinballGame->unk1328) + if (gCurrentPinballGame->ballLaunchTimer) { - gCurrentPinballGame->unk1328--; - if (gCurrentPinballGame->unk1328 == 0) - gCurrentPinballGame->unk1330 = gCurrentPinballGame->unk1334; + gCurrentPinballGame->ballLaunchTimer--; + if (gCurrentPinballGame->ballLaunchTimer == 0) + gCurrentPinballGame->secondaryBall = gCurrentPinballGame->ballStates; } - if (gCurrentPinballGame->unk368) + if (gCurrentPinballGame->shopBumperHitTimer) { - if (gCurrentPinballGame->unk368 == 17) + if (gCurrentPinballGame->shopBumperHitTimer == 17) { m4aSongNumStart(SE_UNKNOWN_0xE8); gCurrentPinballGame->scoreAddedInFrame = 10; PlayRumble(13); } - mosaicVal = gUnknown_08137CD6[gCurrentPinballGame->unk368 / 3]; + mosaicVal = gBumperMosaicValues[gCurrentPinballGame->shopBumperHitTimer / 3]; REG_MOSAIC = (mosaicVal << 12) | (mosaicVal << 8) | (mosaicVal << 4) | (mosaicVal << 0); - gCurrentPinballGame->unk368--; + gCurrentPinballGame->shopBumperHitTimer--; } - if (gCurrentPinballGame->unk13 > 2) + if (gCurrentPinballGame->boardState > 2) { - if (gCurrentPinballGame->unk13 != 6) + if (gCurrentPinballGame->boardState != 6) { for (i = 0; i < 2; i++) { - if (gCurrentPinballGame->unk36A[i]) + if (gCurrentPinballGame->sapphireBumperState[i]) { - gCurrentPinballGame->unk36A[i] = 0; - gCurrentPinballGame->unk36C[i] = 0; - gCurrentPinballGame->unk36E[i] = 0; + gCurrentPinballGame->sapphireBumperState[i] = 0; + gCurrentPinballGame->sapphireBumperAnimKeyframe[i] = 0; + gCurrentPinballGame->sapphireBumperAnimSubTimer[i] = 0; } } } } - else if (gCurrentPinballGame->unk72E > 2) + else if (gCurrentPinballGame->evoArrowProgress > 2) { if (gCurrentPinballGame->evolvablePartySize > 0) { - if (gCurrentPinballGame->unk36A[0] < 3) + if (gCurrentPinballGame->sapphireBumperState[0] < 3) { - gCurrentPinballGame->unk36A[0] = 3; - gCurrentPinballGame->unk36A[1] = 3; + gCurrentPinballGame->sapphireBumperState[0] = 3; + gCurrentPinballGame->sapphireBumperState[1] = 3; } } } else { - if (gCurrentPinballGame->unk36A[0] > 2) + if (gCurrentPinballGame->sapphireBumperState[0] > 2) { - gCurrentPinballGame->unk36A[0] = 0; - gCurrentPinballGame->unk36C[0] = 0; - gCurrentPinballGame->unk36A[1] = 0; - gCurrentPinballGame->unk36C[1] = 0; + gCurrentPinballGame->sapphireBumperState[0] = 0; + gCurrentPinballGame->sapphireBumperAnimKeyframe[0] = 0; + gCurrentPinballGame->sapphireBumperState[1] = 0; + gCurrentPinballGame->sapphireBumperAnimKeyframe[1] = 0; } } } -void sub_2FCD0(void) +void DrawSapphireBumperSprites(void) { s16 i; struct SpriteGroup *group; @@ -1587,10 +1587,10 @@ void sub_2FCD0(void) if (!group->available) return; - group->baseX = 68 - gCurrentPinballGame->unk58; - group->baseY = 144 - gCurrentPinballGame->unk5A; - index = gUnknown_086AE4FC[gCurrentPinballGame->unk36C[0]][0]; - DmaCopy16(3, &gUnknown_0847A40C[index], (void *)0x06012DA0, 0x280); + group->baseX = 68 - gCurrentPinballGame->cameraXOffset; + group->baseY = 144 - gCurrentPinballGame->cameraYOffset; + index = gSapphireBumperAnimFrames[gCurrentPinballGame->sapphireBumperAnimKeyframe[0]][0]; + DmaCopy16(3, &gSapphireBumperLeft_Gfx[index], (void *)0x06012DA0, 0x280); for (i = 0; i < 2; i++) { oamSimple = &group->oam[i]; @@ -1599,12 +1599,12 @@ void sub_2FCD0(void) } group = &gMain.spriteGroups[58]; - group->baseX = 68 - gCurrentPinballGame->unk58; - if (gCurrentPinballGame->unk372[0] < 14) + group->baseX = 68 - gCurrentPinballGame->cameraXOffset; + if (gCurrentPinballGame->sapphireBumperHitFxTimer[0] < 14) { - group->baseY = 144 - gCurrentPinballGame->unk5A; - index = gCurrentPinballGame->unk372[0] / 2; - DmaCopy16(3, &gUnknown_0847D10C[index], (void *)0x06014720, 0x180); + group->baseY = 144 - gCurrentPinballGame->cameraYOffset; + index = gCurrentPinballGame->sapphireBumperHitFxTimer[0] / 2; + DmaCopy16(3, &gSapphireBumperLeftHit_Gfx[index], (void *)0x06014720, 0x180); } else { @@ -1616,10 +1616,10 @@ void sub_2FCD0(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; group = &gMain.spriteGroups[62]; - group->baseX = 36 - gCurrentPinballGame->unk58; - group->baseY = 163 - gCurrentPinballGame->unk5A; - index = gUnknown_086AE4FC[gCurrentPinballGame->unk36C[1]][0]; - DmaCopy16(3, &gUnknown_084C1E6C[index], (void *)0x060130A0, 0x280); + group->baseX = 36 - gCurrentPinballGame->cameraXOffset; + group->baseY = 163 - gCurrentPinballGame->cameraYOffset; + index = gSapphireBumperAnimFrames[gCurrentPinballGame->sapphireBumperAnimKeyframe[1]][0]; + DmaCopy16(3, &gSapphireBumperRight_Gfx[index], (void *)0x060130A0, 0x280); for (i = 0; i < 2; i++) { oamSimple = &group->oam[i]; @@ -1628,12 +1628,12 @@ void sub_2FCD0(void) } group = &gMain.spriteGroups[59]; - group->baseX = 36 - gCurrentPinballGame->unk58; - if (gCurrentPinballGame->unk372[1] < 14) + group->baseX = 36 - gCurrentPinballGame->cameraXOffset; + if (gCurrentPinballGame->sapphireBumperHitFxTimer[1] < 14) { - group->baseY = 163 - gCurrentPinballGame->unk5A; - index = gCurrentPinballGame->unk372[1] / 2; - DmaCopy16(3, &gUnknown_084C4B6C[index], (void *)0x06014920, 0x180); + group->baseY = 163 - gCurrentPinballGame->cameraYOffset; + index = gCurrentPinballGame->sapphireBumperHitFxTimer[1] / 2; + DmaCopy16(3, &gSapphireBumperRightHit_Gfx[index], (void *)0x06014920, 0x180); } else { @@ -1645,30 +1645,30 @@ void sub_2FCD0(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; group = &gMain.spriteGroups[76]; - group->baseX = 61 - gCurrentPinballGame->unk58; - group->baseY = 186 - gCurrentPinballGame->unk5A; - if (gCurrentPinballGame->unk367) + group->baseX = 61 - gCurrentPinballGame->cameraXOffset; + group->baseY = 186 - gCurrentPinballGame->cameraYOffset; + if (gCurrentPinballGame->eggHatchShockWallOverride) { - gCurrentPinballGame->unk366 = 3; + gCurrentPinballGame->shopShockWallAnimState = 3; } - else if (gCurrentPinballGame->unk36A[0]) + else if (gCurrentPinballGame->sapphireBumperState[0]) { - if (gCurrentPinballGame->unk36A[1]) - gCurrentPinballGame->unk366 = 3; + if (gCurrentPinballGame->sapphireBumperState[1]) + gCurrentPinballGame->shopShockWallAnimState = 3; else - gCurrentPinballGame->unk366 = 2; + gCurrentPinballGame->shopShockWallAnimState = 2; } - else if (gCurrentPinballGame->unk36A[1]) + else if (gCurrentPinballGame->sapphireBumperState[1]) { - gCurrentPinballGame->unk366 = 1; + gCurrentPinballGame->shopShockWallAnimState = 1; } else { - gCurrentPinballGame->unk366 = 0; + gCurrentPinballGame->shopShockWallAnimState = 0; } - if (gCurrentPinballGame->unk366 < 3) - index = gCurrentPinballGame->unk366 * 3 + (gCurrentPinballGame->unk290 % 30) / 10; + if (gCurrentPinballGame->shopShockWallAnimState < 3) + index = gCurrentPinballGame->shopShockWallAnimState * 3 + (gCurrentPinballGame->globalAnimFrameCounter % 30) / 10; else index = 9; @@ -1678,17 +1678,17 @@ void sub_2FCD0(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } -void sub_300D8(void) +void CalculateRubyBumperBounce(void) { gCurrentPinballGame->rubyBumperLogicPosition[0].x = 920; - gCurrentPinballGame->rubyBumperLogicPosition[0].y = (133 - (gCurrentPinballGame->unk290 % 60) / 30) * 10; + gCurrentPinballGame->rubyBumperLogicPosition[0].y = (133 - (gCurrentPinballGame->globalAnimFrameCounter % 60) / 30) * 10; gCurrentPinballGame->rubyBumperLogicPosition[1].x = 1260; - gCurrentPinballGame->rubyBumperLogicPosition[1].y = (131 - ((gCurrentPinballGame->unk290 + 10) % 60) / 30) * 10; + gCurrentPinballGame->rubyBumperLogicPosition[1].y = (131 - ((gCurrentPinballGame->globalAnimFrameCounter + 10) % 60) / 30) * 10; gCurrentPinballGame->rubyBumperLogicPosition[2].x = 1080; - gCurrentPinballGame->rubyBumperLogicPosition[2].y = (161 - ((gCurrentPinballGame->unk290 + 20) % 60) / 30) * 10; + gCurrentPinballGame->rubyBumperLogicPosition[2].y = (161 - ((gCurrentPinballGame->globalAnimFrameCounter + 20) % 60) / 30) * 10; } -void sub_30178(void) +void HandleRubyBumperHit(void) { s16 i; struct SpriteGroup *group; @@ -1703,7 +1703,7 @@ void sub_30178(void) gCurrentPinballGame->scoreAddedInFrame = 500; m4aSongNumStart(SE_RUBY_BUMPER_HIT); PlayRumble(7); - if (gCurrentPinballGame->unk13 == 4 && gCurrentPinballGame->unk17 == 5) + if (gCurrentPinballGame->boardState == 4 && gCurrentPinballGame->boardSubState == 5) { if (gCurrentPinballGame->hatchTilesBumperAcknowledged < 6) { @@ -1719,27 +1719,27 @@ void sub_30178(void) if (gCurrentPinballGame->hatchTilesBoardAcknowledged == 0) { gMain.modeChangeFlags |= MODE_CHANGE_BANNER; - gCurrentPinballGame->unkEA = 50; - gCurrentPinballGame->unkEC = 600; - gCurrentPinballGame->unkE8 = 0xEC; - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unkEE = 4; - gCurrentPinballGame->unkF2 = 7; - gCurrentPinballGame->unkFA = 1; - gCurrentPinballGame->unkFB = 0; - gCurrentPinballGame->unkF4 = 80; - gCurrentPinballGame->unkF6 = -2500; - gCurrentPinballGame->unkF0 = 50; - gCurrentPinballGame->unkF8 = 0; - DmaCopy16(3, gUnknown_086ACEF8[7], (void *)0x06015800, 0x2400); - DmaCopy16(3, gUnknown_086ACF18[7], (void *)0x050003C0, 0x20); + gCurrentPinballGame->bannerDelayTimer = 50; + gCurrentPinballGame->bannerDisplayTimer = 600; + gCurrentPinballGame->cameraYScrollTarget = 0xEC; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->cameraYScrollSpeed = 4; + gCurrentPinballGame->bannerGfxIndex = 7; + gCurrentPinballGame->bannerActive = 1; + gCurrentPinballGame->bannerPreserveBallState = 0; + gCurrentPinballGame->bannerDisplayDuration = 80; + gCurrentPinballGame->bannerSlidePosition = -2500; + gCurrentPinballGame->bannerSlideTimer = 50; + gCurrentPinballGame->bannerSlideVelocity = 0; + DmaCopy16(3, gModeBannerTilemaps[7], (void *)0x06015800, 0x2400); + DmaCopy16(3, gModeBannerPalettes[7], (void *)0x050003C0, 0x20); gMain.blendControl = 0xCE; } } } } - gCurrentPinballGame->unk176++; + gCurrentPinballGame->pondEntitySpriteFlag++; gCurrentPinballGame->bumperHitsSinceReset++; if (gCurrentPinballGame->bumperHitsSinceReset == 100) gCurrentPinballGame->scoreAddedInFrame = 50000; @@ -1752,23 +1752,23 @@ void sub_30178(void) { for (i = 0; i < 3; i++) { - if (gCurrentPinballGame->unk170[i] > 0) + if (gCurrentPinballGame->pondBumperStates[i] > 0) { - if (gCurrentPinballGame->unk170[i] < 0) - gCurrentPinballGame->unk170[i] += 3; + if (gCurrentPinballGame->pondBumperStates[i] < 0) + gCurrentPinballGame->pondBumperStates[i] += 3; - index = gCurrentPinballGame->unk170[i] / 4 + 2; - gCurrentPinballGame->unk170[i]--; + index = gCurrentPinballGame->pondBumperStates[i] / 4 + 2; + gCurrentPinballGame->pondBumperStates[i]--; } else { - index = ((gCurrentPinballGame->unk290 + (i * 10)) % 30) / 15; + index = ((gCurrentPinballGame->globalAnimFrameCounter + (i * 10)) % 30) / 15; } - DmaCopy16(3, &gUnknown_0845690C[index], (void *)0x060133A0 + i * 0x200, 0x200); + DmaCopy16(3, &gPondBumper_Gfx[index], (void *)0x060133A0 + i * 0x200, 0x200); - group->baseX = gCurrentPinballGame->rubyBumperLogicPosition[i].x / 10 - gCurrentPinballGame->unk58 - 8; - group->baseY = gCurrentPinballGame->rubyBumperLogicPosition[i].y / 10 - gCurrentPinballGame->unk5A - 10; + group->baseX = gCurrentPinballGame->rubyBumperLogicPosition[i].x / 10 - gCurrentPinballGame->cameraXOffset - 8; + group->baseY = gCurrentPinballGame->rubyBumperLogicPosition[i].y / 10 - gCurrentPinballGame->cameraYOffset - 10; gCurrentPinballGame->rubyBumperCollisionPosition[i].x = (-(gCurrentPinballGame->rubyBumperLogicPosition[i].x / 10) + 8) * 2; gCurrentPinballGame->rubyBumperCollisionPosition[i].y = (-(gCurrentPinballGame->rubyBumperLogicPosition[i].y / 10) + 3) * 2; diff --git a/src/rom_30480.c b/src/rom_30480.c index 056f60d..35d777f 100644 --- a/src/rom_30480.c +++ b/src/rom_30480.c @@ -3,28 +3,28 @@ #include "main.h" #include "constants/bg_music.h" -extern const u16 gUnknown_086B4D4E[40][2][3]; -extern const u16 gUnknown_086AE54A[]; +extern const u16 gHatchCaveOamFramesets[40][2][3]; +extern const u16 gSeedotBasketBounceFrames[]; extern const u8 gSapphireStageBasket_Gfx[][0x280]; extern const u8 gSapphireBoardSeedot_Gfx[][0x180]; -extern const u16 gUnknown_086AE544[]; +extern const u16 gSeedotBaseXPositions[]; extern const u16 gSapphireBoardSeedotSpritesheetOam[6][6][2][3]; -extern const u16 gUnknown_08137D06[][14]; -extern const u16 gUnknown_08137CF6[][4]; -extern const u16 gUnknown_08137CE2[][5]; +extern const u16 gShopSignTransitionFrames[][14]; +extern const u16 gShopSignIntroFrames[][4]; +extern const u16 gShopSignLoopFrames[][5]; -void sub_30480(void) +void InitSapphireEggCaveState(void) { - gCurrentPinballGame->unk1EC = 1; - gCurrentPinballGame->unk1EE = 0; - gCurrentPinballGame->unk1ED = 0; - gCurrentPinballGame->unk1F0 = 0; - gCurrentPinballGame->unk1F4 = 2080; - gCurrentPinballGame->unk1F6 = 700; + gCurrentPinballGame->eggAnimationPhase = 1; + gCurrentPinballGame->prevEggAnimFrame = 0; + gCurrentPinballGame->eggAnimFrameIndex = 0; + gCurrentPinballGame->eggFrameTimer = 0; + gCurrentPinballGame->portraitOffsetX = 2080; + gCurrentPinballGame->portraitOffsetY = 700; } -void sub_304C8(void) +void UpdateSapphireEggCaveAnimation(void) { s16 i; struct SpriteGroup *group; @@ -43,7 +43,7 @@ void sub_304C8(void) var2 = 0; group = &gMain.spriteGroups[52]; sp0 = 0; - switch (gCurrentPinballGame->unk1EC) + switch (gCurrentPinballGame->eggAnimationPhase) { case 0: case 1: @@ -70,72 +70,72 @@ void sub_304C8(void) break; } - if (gCurrentPinballGame->unk1EE != gCurrentPinballGame->unk1ED) + if (gCurrentPinballGame->prevEggAnimFrame != gCurrentPinballGame->eggAnimFrameIndex) { - index = gUnknown_086AD2EE[gCurrentPinballGame->unk1ED][3]; - DmaCopy16(3, &gUnknown_084FD18C[index], (void *)0x06011CE0, 0x200); - gCurrentPinballGame->unk1EE = gCurrentPinballGame->unk1ED; + index = gEggAnimationFrameData[gCurrentPinballGame->eggAnimFrameIndex][3]; + DmaCopy16(3, &gEggFrameTilesGfx[index], (void *)0x06011CE0, 0x200); + gCurrentPinballGame->prevEggAnimFrame = gCurrentPinballGame->eggAnimFrameIndex; } - if (gCurrentPinballGame->unk1EC > 1) + if (gCurrentPinballGame->eggAnimationPhase > 1) { - if (gUnknown_086AD2EE[gCurrentPinballGame->unk1ED][1] > gCurrentPinballGame->unk1F0) + if (gEggAnimationFrameData[gCurrentPinballGame->eggAnimFrameIndex][1] > gCurrentPinballGame->eggFrameTimer) { - gCurrentPinballGame->unk1F0++; + gCurrentPinballGame->eggFrameTimer++; } else { - gCurrentPinballGame->unk1ED++; - gCurrentPinballGame->unk1F0 = 0; - if (gCurrentPinballGame->unk1ED >= var3) + gCurrentPinballGame->eggAnimFrameIndex++; + gCurrentPinballGame->eggFrameTimer = 0; + if (gCurrentPinballGame->eggAnimFrameIndex >= var3) { - gCurrentPinballGame->unk1ED = var1; - gCurrentPinballGame->unk1EC = var2; + gCurrentPinballGame->eggAnimFrameIndex = var1; + gCurrentPinballGame->eggAnimationPhase = var2; } - if (gCurrentPinballGame->unk1ED == 18) + if (gCurrentPinballGame->eggAnimFrameIndex == 18) BuildSpeciesWeightsForEggMode(); - if (gCurrentPinballGame->unk1ED == 19) + if (gCurrentPinballGame->eggAnimFrameIndex == 19) { PickSpeciesForEggMode(); if (gMain.mainState != STATE_GAME_IDLE) SaveFile_SetPokedexFlags(gCurrentPinballGame->currentSpecies, 1); } - if (gCurrentPinballGame->unk1ED == 20) - sub_28BFC(); + if (gCurrentPinballGame->eggAnimFrameIndex == 20) + LoadEggSpriteGraphics(); - if ((gCurrentPinballGame->unk1ED == 8 || gCurrentPinballGame->unk1ED == 27) && gCurrentPinballGame->unk1F0 == 0) + if ((gCurrentPinballGame->eggAnimFrameIndex == 8 || gCurrentPinballGame->eggAnimFrameIndex == 27) && gCurrentPinballGame->eggFrameTimer == 0) m4aMPlayAllStop(); - if (gCurrentPinballGame->unk1ED == 12 && gCurrentPinballGame->unk1F0 == 0) + if (gCurrentPinballGame->eggAnimFrameIndex == 12 && gCurrentPinballGame->eggFrameTimer == 0) m4aSongNumStart(MUS_EGG_MODE_START); - if (gCurrentPinballGame->unk1ED == 29) - sub_19B64(5); + if (gCurrentPinballGame->eggAnimFrameIndex == 29) + RequestBoardStateTransition(5); - if (gCurrentPinballGame->unk1ED == 28) + if (gCurrentPinballGame->eggAnimFrameIndex == 28) m4aSongNumStart(SE_UNKNOWN_0x92); } - sp0 = gUnknown_086AD2EE[gCurrentPinballGame->unk1ED][0]; + sp0 = gEggAnimationFrameData[gCurrentPinballGame->eggAnimFrameIndex][0]; } - group->baseX = gCurrentPinballGame->unk1F4 / 10 - gCurrentPinballGame->unk58; - if (gCurrentPinballGame->unk1EC > 0) + group->baseX = gCurrentPinballGame->portraitOffsetX / 10 - gCurrentPinballGame->cameraXOffset; + if (gCurrentPinballGame->eggAnimationPhase > 0) { - if (gCurrentPinballGame->unk1ED == 32 && gCurrentPinballGame->unk1F0 > 208) + if (gCurrentPinballGame->eggAnimFrameIndex == 32 && gCurrentPinballGame->eggFrameTimer > 208) { - var0 = (0x100 - gCurrentPinballGame->unk1F0) / 16; + var0 = (0x100 - gCurrentPinballGame->eggFrameTimer) / 16; if (gMain.systemFrameCount & ((var0 + 1) * 2)) - group->baseY = gCurrentPinballGame->unk1F6 / 10 - gCurrentPinballGame->unk5A; + group->baseY = gCurrentPinballGame->portraitOffsetY / 10 - gCurrentPinballGame->cameraYOffset; else group->baseY = 200; } else { - group->baseY = gCurrentPinballGame->unk1F6 / 10 - gCurrentPinballGame->unk5A; + group->baseY = gCurrentPinballGame->portraitOffsetY / 10 - gCurrentPinballGame->cameraYOffset; } } else @@ -147,7 +147,7 @@ void sub_304C8(void) { oamSimple = &group->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; - src = gUnknown_086B4D4E[sp0][i]; + src = gHatchCaveOamFramesets[sp0][i]; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; @@ -159,9 +159,9 @@ void sub_304C8(void) group = &gMain.spriteGroups[51]; if (group->available) { - group->baseX = 192 - gCurrentPinballGame->unk58; - if (gCurrentPinballGame->unk346 > 2 && gMain.modeChangeFlags) - group->baseY = 56 - gCurrentPinballGame->unk5A; + group->baseX = 192 - gCurrentPinballGame->cameraXOffset; + if (gCurrentPinballGame->holeLetterSystemState > 2 && gMain.modeChangeFlags) + group->baseY = 56 - gCurrentPinballGame->cameraYOffset; else group->baseY = 200; @@ -171,207 +171,207 @@ void sub_304C8(void) } } -void sub_308DC(void) +void UpdateSapphireSeedotCollection(void) { s16 i; s16 var0; - if (gCurrentPinballGame->unk328) + if (gCurrentPinballGame->seedotCollisionTrigger) { - if (gCurrentPinballGame->unk13 != 7) + if (gCurrentPinballGame->boardState != 7) { - if (gCurrentPinballGame->unk13 < 3) + if (gCurrentPinballGame->boardState < 3) { - if (gCurrentPinballGame->unk6BD < 3) + if (gCurrentPinballGame->seedotCount < 3) { - gCurrentPinballGame->unk33C[gCurrentPinballGame->unk6BD] = -100; - gCurrentPinballGame->unk332[gCurrentPinballGame->unk6BD] = 0; - gCurrentPinballGame->unk336[gCurrentPinballGame->unk6BD] = 0; - gCurrentPinballGame->unk32C[gCurrentPinballGame->unk6BD] = 1; - gCurrentPinballGame->unk336[gCurrentPinballGame->unk6BD] = 0; - gCurrentPinballGame->unk6BD++; - gCurrentPinballGame->unk32A = 1800; - if (gCurrentPinballGame->unk6BD == 3) - gCurrentPinballGame->unk6C2 = 1; + gCurrentPinballGame->seedotYOffset[gCurrentPinballGame->seedotCount] = -100; + gCurrentPinballGame->seedotOamFramesetIndex[gCurrentPinballGame->seedotCount] = 0; + gCurrentPinballGame->seedotAnimTimer[gCurrentPinballGame->seedotCount] = 0; + gCurrentPinballGame->seedotState[gCurrentPinballGame->seedotCount] = 1; + gCurrentPinballGame->seedotAnimTimer[gCurrentPinballGame->seedotCount] = 0; + gCurrentPinballGame->seedotCount++; + gCurrentPinballGame->seedotDecayTimer = 1800; + if (gCurrentPinballGame->seedotCount == 3) + gCurrentPinballGame->seedotModeStartDelay = 1; } } else { - if (gCurrentPinballGame->unk6BD < 2) + if (gCurrentPinballGame->seedotCount < 2) { - gCurrentPinballGame->unk33C[gCurrentPinballGame->unk6BD] = -100; - gCurrentPinballGame->unk332[gCurrentPinballGame->unk6BD] = 0; - gCurrentPinballGame->unk336[gCurrentPinballGame->unk6BD] = 0; - gCurrentPinballGame->unk32C[gCurrentPinballGame->unk6BD] = 1; - gCurrentPinballGame->unk336[gCurrentPinballGame->unk6BD] = 0; - gCurrentPinballGame->unk32A = 1800; - gCurrentPinballGame->unk6BD++; + gCurrentPinballGame->seedotYOffset[gCurrentPinballGame->seedotCount] = -100; + gCurrentPinballGame->seedotOamFramesetIndex[gCurrentPinballGame->seedotCount] = 0; + gCurrentPinballGame->seedotAnimTimer[gCurrentPinballGame->seedotCount] = 0; + gCurrentPinballGame->seedotState[gCurrentPinballGame->seedotCount] = 1; + gCurrentPinballGame->seedotAnimTimer[gCurrentPinballGame->seedotCount] = 0; + gCurrentPinballGame->seedotDecayTimer = 1800; + gCurrentPinballGame->seedotCount++; } } } - gCurrentPinballGame->unk328 = 0; + gCurrentPinballGame->seedotCollisionTrigger = 0; gCurrentPinballGame->scoreAddedInFrame = 3000; } for (i = 0; i < 3; i++) { - switch (gCurrentPinballGame->unk32C[i]) + switch (gCurrentPinballGame->seedotState[i]) { case 0: - gCurrentPinballGame->unk33C[i] = -100; - gCurrentPinballGame->unk332[i] = 0; - gCurrentPinballGame->unk336[i] = 0; + gCurrentPinballGame->seedotYOffset[i] = -100; + gCurrentPinballGame->seedotOamFramesetIndex[i] = 0; + gCurrentPinballGame->seedotAnimTimer[i] = 0; break; case 1: - if (gCurrentPinballGame->unk336[i] < 33) + if (gCurrentPinballGame->seedotAnimTimer[i] < 33) { - if (gCurrentPinballGame->unk336[i] == 0) + if (gCurrentPinballGame->seedotAnimTimer[i] == 0) m4aSongNumStart(SE_UNKNOWN_0xE9); - if (gCurrentPinballGame->unk336[i] == 26) + if (gCurrentPinballGame->seedotAnimTimer[i] == 26) m4aSongNumStart(SE_UNKNOWN_0xEA); - gCurrentPinballGame->unk336[i]++; - if (gCurrentPinballGame->unk336[i] < 21) + gCurrentPinballGame->seedotAnimTimer[i]++; + if (gCurrentPinballGame->seedotAnimTimer[i] < 21) { - gCurrentPinballGame->unk32F[i] = 0; - gCurrentPinballGame->unk33C[i] = gCurrentPinballGame->unk336[i] * 4 - 80; - if (gCurrentPinballGame->unk336[i] == 20) - gCurrentPinballGame->unk326 = 23; + gCurrentPinballGame->seedotSpriteFrame[i] = 0; + gCurrentPinballGame->seedotYOffset[i] = gCurrentPinballGame->seedotAnimTimer[i] * 4 - 80; + if (gCurrentPinballGame->seedotAnimTimer[i] == 20) + gCurrentPinballGame->basketBounceTimer = 23; } - else if (gCurrentPinballGame->unk336[i] < 25) + else if (gCurrentPinballGame->seedotAnimTimer[i] < 25) { - gCurrentPinballGame->unk32F[i] = 1; + gCurrentPinballGame->seedotSpriteFrame[i] = 1; } else { - gCurrentPinballGame->unk32F[i] = 2; + gCurrentPinballGame->seedotSpriteFrame[i] = 2; } } else { - gCurrentPinballGame->unk32C[i] = 2; - gCurrentPinballGame->unk336[i] = 0; + gCurrentPinballGame->seedotState[i] = 2; + gCurrentPinballGame->seedotAnimTimer[i] = 0; if (i == 2) - sub_19B64(7); + RequestBoardStateTransition(7); } break; case 2: - gCurrentPinballGame->unk32F[i] = (((gCurrentPinballGame->unk290 % 32) / 16) * 2) + 1; - if (gCurrentPinballGame->unk32F[i] == 1) - gCurrentPinballGame->unk33C[i] = -2; + gCurrentPinballGame->seedotSpriteFrame[i] = (((gCurrentPinballGame->globalAnimFrameCounter % 32) / 16) * 2) + 1; + if (gCurrentPinballGame->seedotSpriteFrame[i] == 1) + gCurrentPinballGame->seedotYOffset[i] = -2; else - gCurrentPinballGame->unk33C[i] = 0; + gCurrentPinballGame->seedotYOffset[i] = 0; break; case 3: - var0 = gCurrentPinballGame->unk336[i]; + var0 = gCurrentPinballGame->seedotAnimTimer[i]; if (var0 < 32) { - gCurrentPinballGame->unk32F[i] = var0 / 16 + 4; - gCurrentPinballGame->unk332[i] = var0 / 16 + 1; + gCurrentPinballGame->seedotSpriteFrame[i] = var0 / 16 + 4; + gCurrentPinballGame->seedotOamFramesetIndex[i] = var0 / 16 + 1; } else if (var0 < 38) { if (var0 == 32 && (gMain.modeChangeFlags & MODE_CHANGE_END_OF_GAME) == 0) m4aSongNumStart(SE_UNKNOWN_0xEB); - gCurrentPinballGame->unk32F[i] = 6; - gCurrentPinballGame->unk332[i] = 3; + gCurrentPinballGame->seedotSpriteFrame[i] = 6; + gCurrentPinballGame->seedotOamFramesetIndex[i] = 3; } else if (var0 < 46) { - gCurrentPinballGame->unk332[i] = 4; + gCurrentPinballGame->seedotOamFramesetIndex[i] = 4; } else if (var0 < 54) { - gCurrentPinballGame->unk332[i] = 5; + gCurrentPinballGame->seedotOamFramesetIndex[i] = 5; } else { - gCurrentPinballGame->unk32C[i] = 0; + gCurrentPinballGame->seedotState[i] = 0; } - gCurrentPinballGame->unk336[i]++; + gCurrentPinballGame->seedotAnimTimer[i]++; break; } } - if (gCurrentPinballGame->unk326) + if (gCurrentPinballGame->basketBounceTimer) { - gCurrentPinballGame->unk324 = gUnknown_086AE54A[gCurrentPinballGame->unk326 / 6]; - gCurrentPinballGame->unk326--; + gCurrentPinballGame->basketBounceFrame = gSeedotBasketBounceFrames[gCurrentPinballGame->basketBounceTimer / 6]; + gCurrentPinballGame->basketBounceTimer--; } - if (gCurrentPinballGame->unk6C2) + if (gCurrentPinballGame->seedotModeStartDelay) { - gCurrentPinballGame->unk6C2--; - if (gCurrentPinballGame->unk6C2 == 0) + gCurrentPinballGame->seedotModeStartDelay--; + if (gCurrentPinballGame->seedotModeStartDelay == 0) { - if (gCurrentPinballGame->unkE4) - gCurrentPinballGame->unk6C2 = 1; + if (gCurrentPinballGame->activePortraitType) + gCurrentPinballGame->seedotModeStartDelay = 1; else - gCurrentPinballGame->unkE4 = 4; + gCurrentPinballGame->activePortraitType = 4; - if (gCurrentPinballGame->unk6C2 == 0) + if (gCurrentPinballGame->seedotModeStartDelay == 0) { gMain.modeChangeFlags |= MODE_CHANGE_BANNER; - gCurrentPinballGame->unkEA = 70; - gCurrentPinballGame->unkEC = 160; - gCurrentPinballGame->unkE8 = 0; - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unkEE = 0; - gCurrentPinballGame->unkF2 = 4; - gCurrentPinballGame->unkFA = 1; - gCurrentPinballGame->unkFB = 0; - gCurrentPinballGame->unkF4 = 120; - gCurrentPinballGame->unkF6 = 0; - gCurrentPinballGame->unkF0 = 50; - gCurrentPinballGame->unkF8 = 0; - DmaCopy16(3, gUnknown_086ACEF8[4], (void *)0x06015800, 0x2400); - DmaCopy16(3, gUnknown_086ACF18[4], (void *)0x050003C0, 0x20); + gCurrentPinballGame->bannerDelayTimer = 70; + gCurrentPinballGame->bannerDisplayTimer = 160; + gCurrentPinballGame->cameraYScrollTarget = 0; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->cameraYScrollSpeed = 0; + gCurrentPinballGame->bannerGfxIndex = 4; + gCurrentPinballGame->bannerActive = 1; + gCurrentPinballGame->bannerPreserveBallState = 0; + gCurrentPinballGame->bannerDisplayDuration = 120; + gCurrentPinballGame->bannerSlidePosition = 0; + gCurrentPinballGame->bannerSlideTimer = 50; + gCurrentPinballGame->bannerSlideVelocity = 0; + DmaCopy16(3, gModeBannerTilemaps[4], (void *)0x06015800, 0x2400); + DmaCopy16(3, gModeBannerPalettes[4], (void *)0x050003C0, 0x20); gMain.blendControl = 0xCE; } } } - if (gCurrentPinballGame->unk6BE) + if (gCurrentPinballGame->seedotExitSequenceActive) { - var0 = gCurrentPinballGame->unk6C0++; + var0 = gCurrentPinballGame->seedotExitSequenceTimer++; if (var0 <= 60) { if (var0 % 30 == 0) { - if (gCurrentPinballGame->unk32C[var0 / 30] == 2) + if (gCurrentPinballGame->seedotState[var0 / 30] == 2) { - gCurrentPinballGame->unk32C[var0 / 30] = 3; - gCurrentPinballGame->unk336[var0 / 30] = 0; + gCurrentPinballGame->seedotState[var0 / 30] = 3; + gCurrentPinballGame->seedotAnimTimer[var0 / 30] = 0; } } } else { - gCurrentPinballGame->unk6BE = 0; - gCurrentPinballGame->unk6C0 = 0; + gCurrentPinballGame->seedotExitSequenceActive = 0; + gCurrentPinballGame->seedotExitSequenceTimer = 0; } } - if (gCurrentPinballGame->unk32A) + if (gCurrentPinballGame->seedotDecayTimer) { - gCurrentPinballGame->unk32A--; - if (gCurrentPinballGame->unk32A == 0) + gCurrentPinballGame->seedotDecayTimer--; + if (gCurrentPinballGame->seedotDecayTimer == 0) { - if (gCurrentPinballGame->unk6BD == 1 || gCurrentPinballGame->unk6BD == 2) + if (gCurrentPinballGame->seedotCount == 1 || gCurrentPinballGame->seedotCount == 2) { - gCurrentPinballGame->unk6BD--; - gCurrentPinballGame->unk32C[gCurrentPinballGame->unk6BD] = 3; - gCurrentPinballGame->unk336[gCurrentPinballGame->unk6BD] = 0; - gCurrentPinballGame->unk32A = 1800; + gCurrentPinballGame->seedotCount--; + gCurrentPinballGame->seedotState[gCurrentPinballGame->seedotCount] = 3; + gCurrentPinballGame->seedotAnimTimer[gCurrentPinballGame->seedotCount] = 0; + gCurrentPinballGame->seedotDecayTimer = 1800; } } } } -void sub_30EB4(void) +void DrawSapphireSeedotAndBasketSprites(void) { s16 i, j; struct SpriteGroup *group; @@ -385,9 +385,9 @@ void sub_30EB4(void) if (!group->available) return; - group->baseX = 10 - gCurrentPinballGame->unk58; - group->baseY = 298 - gCurrentPinballGame->unk5A; - index = gCurrentPinballGame->unk324; + group->baseX = 10 - gCurrentPinballGame->cameraXOffset; + group->baseY = 298 - gCurrentPinballGame->cameraYOffset; + index = gCurrentPinballGame->basketBounceFrame; DmaCopy16(3, gSapphireStageBasket_Gfx[index], (void *)0x060139A0, 0x280); for (i = 0; i < 2; i++) @@ -398,8 +398,8 @@ void sub_30EB4(void) } group = &gMain.spriteGroups[68]; - group->baseX = 10 - gCurrentPinballGame->unk58; - group->baseY = 298 - gCurrentPinballGame->unk5A; + group->baseX = 10 - gCurrentPinballGame->cameraXOffset; + group->baseY = 298 - gCurrentPinballGame->cameraYOffset; oamSimple = &group->oam[0]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; @@ -408,15 +408,15 @@ void sub_30EB4(void) { group = &gMain.spriteGroups[65 + j]; - var0 = gUnknown_086AE544[j] - j; - group->baseX = var0 - gCurrentPinballGame->unk58; - if (gCurrentPinballGame->unk32C[j] > 0) - group->baseY = gCurrentPinballGame->unk33C[j] + 292 - gCurrentPinballGame->unk5A; + var0 = gSeedotBaseXPositions[j] - j; + group->baseX = var0 - gCurrentPinballGame->cameraXOffset; + if (gCurrentPinballGame->seedotState[j] > 0) + group->baseY = gCurrentPinballGame->seedotYOffset[j] + 292 - gCurrentPinballGame->cameraYOffset; else group->baseY = 200; - DmaCopy16(3, gSapphireBoardSeedot_Gfx[gCurrentPinballGame->unk32F[j]], (void *)0x06013C20 + j * 0x180, 0x160); - index = gCurrentPinballGame->unk332[j]; + DmaCopy16(3, gSapphireBoardSeedot_Gfx[gCurrentPinballGame->seedotSpriteFrame[j]], (void *)0x06013C20 + j * 0x180, 0x160); + index = gCurrentPinballGame->seedotOamFramesetIndex[j]; for (i = 0; i < 2; i++) { oamSimple = &group->oam[i]; @@ -432,96 +432,96 @@ void sub_30EB4(void) } } -void sub_31144(void) +void UpdateSapphireShopSignAnimation(void) { - if (gCurrentPinballGame->unk1A4 == 0) + if (gCurrentPinballGame->shopTransitionActive == 0) { - if (gCurrentPinballGame->unk1A5 == 1) + if (gCurrentPinballGame->evolutionShopActive == 1) { - if (gCurrentPinballGame->unk1B4 < 96) + if (gCurrentPinballGame->shopAnimTimer < 96) { - if (gCurrentPinballGame->unk1B4 < 8) - gCurrentPinballGame->unk1AC = gUnknown_08137CF6[1][gCurrentPinballGame->unk1B4 / 2]; + if (gCurrentPinballGame->shopAnimTimer < 8) + gCurrentPinballGame->shopSignFrame = gShopSignIntroFrames[1][gCurrentPinballGame->shopAnimTimer / 2]; else - gCurrentPinballGame->unk1AC = gUnknown_08137CE2[1][(gCurrentPinballGame->unk1B4 % 32) / 8]; + gCurrentPinballGame->shopSignFrame = gShopSignLoopFrames[1][(gCurrentPinballGame->shopAnimTimer % 32) / 8]; - gCurrentPinballGame->unk1B4++; + gCurrentPinballGame->shopAnimTimer++; } else { - gCurrentPinballGame->unk1B4 = 0; + gCurrentPinballGame->shopAnimTimer = 0; } - gCurrentPinballGame->unk1AD = 2; + gCurrentPinballGame->shopSignPaletteIndex = 2; } else { - if (gCurrentPinballGame->unk1B4 < 120) + if (gCurrentPinballGame->shopAnimTimer < 120) { - if (gCurrentPinballGame->unk1B4 < 8) - gCurrentPinballGame->unk1AC = gUnknown_08137CF6[0][gCurrentPinballGame->unk1B4 / 2]; + if (gCurrentPinballGame->shopAnimTimer < 8) + gCurrentPinballGame->shopSignFrame = gShopSignIntroFrames[0][gCurrentPinballGame->shopAnimTimer / 2]; else - gCurrentPinballGame->unk1AC = gUnknown_08137CE2[0][(gCurrentPinballGame->unk1B4 % 40) / 8]; + gCurrentPinballGame->shopSignFrame = gShopSignLoopFrames[0][(gCurrentPinballGame->shopAnimTimer % 40) / 8]; - gCurrentPinballGame->unk1B4++; + gCurrentPinballGame->shopAnimTimer++; } else { - gCurrentPinballGame->unk1B4 = 0; + gCurrentPinballGame->shopAnimTimer = 0; } - gCurrentPinballGame->unk1AD = 0; + gCurrentPinballGame->shopSignPaletteIndex = 0; } - if (gCurrentPinballGame->unk72E > 2) + if (gCurrentPinballGame->evoArrowProgress > 2) { - if (gCurrentPinballGame->evolvablePartySize > 0 && gCurrentPinballGame->unk1A5 == 0) + if (gCurrentPinballGame->evolvablePartySize > 0 && gCurrentPinballGame->evolutionShopActive == 0) { - gCurrentPinballGame->unk1A4 = 1; - gCurrentPinballGame->unk1B4 = 0; - gCurrentPinballGame->unk1A5 = 1; + gCurrentPinballGame->shopTransitionActive = 1; + gCurrentPinballGame->shopAnimTimer = 0; + gCurrentPinballGame->evolutionShopActive = 1; } } else { - if (gCurrentPinballGame->unk13 != 6 && gCurrentPinballGame->unk1A5 == 1) + if (gCurrentPinballGame->boardState != 6 && gCurrentPinballGame->evolutionShopActive == 1) { - gCurrentPinballGame->unk1A4 = 1; - gCurrentPinballGame->unk1B4 = 0; - gCurrentPinballGame->unk1A5 = 0; + gCurrentPinballGame->shopTransitionActive = 1; + gCurrentPinballGame->shopAnimTimer = 0; + gCurrentPinballGame->evolutionShopActive = 0; } } } else { - gCurrentPinballGame->unk1AC = gUnknown_08137D06[gCurrentPinballGame->unk1A5][gCurrentPinballGame->unk1B4 / 3]; - if (gCurrentPinballGame->unk1AC >= 4 && gCurrentPinballGame->unk1AC < 6) + gCurrentPinballGame->shopSignFrame = gShopSignTransitionFrames[gCurrentPinballGame->evolutionShopActive][gCurrentPinballGame->shopAnimTimer / 3]; + if (gCurrentPinballGame->shopSignFrame >= 4 && gCurrentPinballGame->shopSignFrame < 6) { - gCurrentPinballGame->unk1AD = 1; + gCurrentPinballGame->shopSignPaletteIndex = 1; } else { - if (gCurrentPinballGame->unk1A5 == 1) + if (gCurrentPinballGame->evolutionShopActive == 1) { - if (gCurrentPinballGame->unk1B4 < 15) - gCurrentPinballGame->unk1AD = 0; + if (gCurrentPinballGame->shopAnimTimer < 15) + gCurrentPinballGame->shopSignPaletteIndex = 0; else - gCurrentPinballGame->unk1AD = 2; + gCurrentPinballGame->shopSignPaletteIndex = 2; } else { - if (gCurrentPinballGame->unk1B4 < 15) - gCurrentPinballGame->unk1AD = 2; + if (gCurrentPinballGame->shopAnimTimer < 15) + gCurrentPinballGame->shopSignPaletteIndex = 2; else - gCurrentPinballGame->unk1AD = 0; + gCurrentPinballGame->shopSignPaletteIndex = 0; } } - gCurrentPinballGame->unk1B4++; - if (gCurrentPinballGame->unk1B4 == 42) + gCurrentPinballGame->shopAnimTimer++; + if (gCurrentPinballGame->shopAnimTimer == 42) { - gCurrentPinballGame->unk1A4 = 0; - gCurrentPinballGame->unk1B4 = 0; + gCurrentPinballGame->shopTransitionActive = 0; + gCurrentPinballGame->shopAnimTimer = 0; } } } diff --git a/src/rom_31BE8.c b/src/rom_31BE8.c index 19715aa..2214367 100644 --- a/src/rom_31BE8.c +++ b/src/rom_31BE8.c @@ -5,17 +5,17 @@ #include "constants/fields.h" #include "constants/bg_music.h" -extern const u8 gUnknown_0845A08C[][0x100]; -extern const s16 gUnknown_086AE5A0[][2]; -extern const s16 gUnknown_086AE58A[][2]; -extern const s16 gUnknown_086AE588[][2]; -extern const u8 gUnknown_08490A4C[][0x440]; -extern struct Vector16 gUnknown_086AE554[]; +extern const u8 gSplashEffectTileGfx[][0x100]; +extern const s16 gHoleAnimKeyframeData[][2]; +extern const s16 gSplashEffectFrameDurations[][2]; +extern const s16 gSplashEffectTileIndices[][2]; +extern const u8 gHoleIndicatorTileGfx[][0x440]; +extern struct Vector16 gSplashEffectPositions[]; extern const u8 gRubyStageCyndaquil_Gfx[][0x280]; -extern const u8 gUnknown_081BC984[][0x20]; -extern const u8 gUnknown_0848108C[][0x480]; +extern const u8 gSapphireShopSignPalettes[][0x20]; +extern const u8 gSapphireShopSignTileGfx[][0x480]; -void sub_313A0(void) +void DrawSapphireShopSignSprite(void) { s16 i; struct SpriteGroup *group; @@ -25,11 +25,11 @@ void sub_313A0(void) group = &gMain.spriteGroups[69]; if (group->available) { - group->baseX = 16 - gCurrentPinballGame->unk58; - group->baseY = 115 - gCurrentPinballGame->unk5A; - index = gCurrentPinballGame->unk1AD + gCurrentPinballGame->unk6F * 3; - DmaCopy16(3, gUnknown_081BC984[index], (void *)0x05000300, 0x20); - DmaCopy16(3, gUnknown_0848108C[gCurrentPinballGame->unk1AC], (void *) 0x06014B20, 0x480); + group->baseX = 16 - gCurrentPinballGame->cameraXOffset; + group->baseY = 115 - gCurrentPinballGame->cameraYOffset; + index = gCurrentPinballGame->shopSignPaletteIndex + gCurrentPinballGame->activePaletteIndex * 3; + DmaCopy16(3, gSapphireShopSignPalettes[index], (void *)0x05000300, 0x20); + DmaCopy16(3, gSapphireShopSignTileGfx[gCurrentPinballGame->shopSignFrame], (void *) 0x06014B20, 0x480); for (i = 0; i < 2; i++) { oamSimple = &group->oam[i]; @@ -39,39 +39,39 @@ void sub_313A0(void) } } -void sub_31498(void) +void UpdateSapphireHoleLetterSystem(void) { s16 i, j; struct SpriteGroup *group; struct OamDataSimple *oamSimple; s16 index; - switch (gCurrentPinballGame->unk346) + switch (gCurrentPinballGame->holeLetterSystemState) { case 0: - if (gCurrentPinballGame->unk344) + if (gCurrentPinballGame->holeLetterNewHit) { - if (gCurrentPinballGame->unk13 < 3) + if (gCurrentPinballGame->boardState < 3) { - if (gCurrentPinballGame->unk345 < 3) + if (gCurrentPinballGame->holeLetterCount < 3) { - gCurrentPinballGame->unk345++; + gCurrentPinballGame->holeLetterCount++; gCurrentPinballGame->scoreAddedInFrame = 20000; m4aSongNumStart(SE_UNKNOWN_0xDE); } else { gMain.modeChangeFlags |= MODE_CHANGE_BANNER; - gCurrentPinballGame->unkEA = 0; - gCurrentPinballGame->unkEC = 920; - gCurrentPinballGame->unkE8 = 0; - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unkEE = 0; - gCurrentPinballGame->unkF2 = 0; - gCurrentPinballGame->unkFA = 1; - gCurrentPinballGame->unkFB = 0; - gCurrentPinballGame->unk346 = 1; - gCurrentPinballGame->unk348 = 0; + gCurrentPinballGame->bannerDelayTimer = 0; + gCurrentPinballGame->bannerDisplayTimer = 920; + gCurrentPinballGame->cameraYScrollTarget = 0; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->cameraYScrollSpeed = 0; + gCurrentPinballGame->bannerGfxIndex = 0; + gCurrentPinballGame->bannerActive = 1; + gCurrentPinballGame->bannerPreserveBallState = 0; + gCurrentPinballGame->holeLetterSystemState = 1; + gCurrentPinballGame->holeAnimFrameCounter = 0; m4aMPlayStop(&gMPlayInfo_BGM); gCurrentPinballGame->scoreAddedInFrame = 200000; m4aSongNumStart(SE_UNKNOWN_0xDF); @@ -79,126 +79,126 @@ void sub_31498(void) } else { - if (gCurrentPinballGame->unk345 < 3) + if (gCurrentPinballGame->holeLetterCount < 3) { - gCurrentPinballGame->unk345++; + gCurrentPinballGame->holeLetterCount++; gCurrentPinballGame->scoreAddedInFrame = 20000; m4aSongNumStart(SE_UNKNOWN_0xDE); } } - index = gCurrentPinballGame->unk345; - DmaCopy16(3, &gUnknown_08490A4C[index], (void *)0x600D900, 0x440); - gCurrentPinballGame->unk344 = 0; + index = gCurrentPinballGame->holeLetterCount; + DmaCopy16(3, &gHoleIndicatorTileGfx[index], (void *)0x600D900, 0x440); + gCurrentPinballGame->holeLetterNewHit = 0; } break; case 1: - if (gCurrentPinballGame->unk348 < 270) + if (gCurrentPinballGame->holeAnimFrameCounter < 270) { - index = (gCurrentPinballGame->unk348 % 60) / 30 + 4; - DmaCopy16(3, &gUnknown_08490A4C[index], (void *)0x600D900, 0x440); + index = (gCurrentPinballGame->holeAnimFrameCounter % 60) / 30 + 4; + DmaCopy16(3, &gHoleIndicatorTileGfx[index], (void *)0x600D900, 0x440); } else { index = 0; - DmaCopy16(3, &gUnknown_08490A4C[index], (void *)0x600D900, 0x440); - gCurrentPinballGame->unk346 = 2; - gCurrentPinballGame->unk345 = 0; + DmaCopy16(3, &gHoleIndicatorTileGfx[index], (void *)0x600D900, 0x440); + gCurrentPinballGame->holeLetterSystemState = 2; + gCurrentPinballGame->holeLetterCount = 0; } - if (gCurrentPinballGame->unk348 == 60) + if (gCurrentPinballGame->holeAnimFrameCounter == 60) { m4aSongNumStart(MUS_EGG_MODE_START); - gCurrentPinballGame->unk728 = 0; - gCurrentPinballGame->unk1EC = 5; - gCurrentPinballGame->unk1ED = 12; - gCurrentPinballGame->unk1F0 = 0; + gCurrentPinballGame->catchArrowPaletteActive = 0; + gCurrentPinballGame->eggAnimationPhase = 5; + gCurrentPinballGame->eggAnimFrameIndex = 12; + gCurrentPinballGame->eggFrameTimer = 0; } - gCurrentPinballGame->unk348++; + gCurrentPinballGame->holeAnimFrameCounter++; break; case 3: - if (gUnknown_086AE5A0[gCurrentPinballGame->unk345][1] > gCurrentPinballGame->unk348) + if (gHoleAnimKeyframeData[gCurrentPinballGame->holeLetterCount][1] > gCurrentPinballGame->holeAnimFrameCounter) { - gCurrentPinballGame->unk348++; + gCurrentPinballGame->holeAnimFrameCounter++; } else { - gCurrentPinballGame->unk348 = 0; - gCurrentPinballGame->unk345++; - if (gCurrentPinballGame->unk345 == 10) - gCurrentPinballGame->unk346 = 4; + gCurrentPinballGame->holeAnimFrameCounter = 0; + gCurrentPinballGame->holeLetterCount++; + if (gCurrentPinballGame->holeLetterCount == 10) + gCurrentPinballGame->holeLetterSystemState = 4; - if (gCurrentPinballGame->unk345 == 6) + if (gCurrentPinballGame->holeLetterCount == 6) m4aSongNumStart(SE_UNKNOWN_0xE0); - index = gUnknown_086AE5A0[gCurrentPinballGame->unk345][0]; - DmaCopy16(3, &gUnknown_08490A4C[index], (void *)0x600D900, 0x440); + index = gHoleAnimKeyframeData[gCurrentPinballGame->holeLetterCount][0]; + DmaCopy16(3, &gHoleIndicatorTileGfx[index], (void *)0x600D900, 0x440); } - if (gCurrentPinballGame->unk345 < 6) + if (gCurrentPinballGame->holeLetterCount < 6) { - gCurrentPinballGame->unk200 = 280; + gCurrentPinballGame->catchCreatureY = 280; } else { - gCurrentPinballGame->unk200 += 6; - if (gCurrentPinballGame->unk346 == 4) - gCurrentPinballGame->unk200 = gCurrentPinballGame->unk200 + 20; + gCurrentPinballGame->catchCreatureY += 6; + if (gCurrentPinballGame->holeLetterSystemState == 4) + gCurrentPinballGame->catchCreatureY = gCurrentPinballGame->catchCreatureY + 20; } break; case 4: - if (gCurrentPinballGame->unk343 && gCurrentPinballGame->unk344) + if (gCurrentPinballGame->holeCaptureReady && gCurrentPinballGame->holeLetterNewHit) { gMain.modeChangeFlags |= MODE_CHANGE_BANNER; - gCurrentPinballGame->unkEA = 0; - gCurrentPinballGame->unkEC = 160; - gCurrentPinballGame->unkE8 = 0; - gCurrentPinballGame->unkE6 = 0; - gCurrentPinballGame->unkEE = 0; - gCurrentPinballGame->unkF2 = 0; - gCurrentPinballGame->unkFA = 1; - gCurrentPinballGame->unkFB = 0; - gCurrentPinballGame->unk346 = 5; - gCurrentPinballGame->unk348 = 0; - gCurrentPinballGame->unk345 = 10; + gCurrentPinballGame->bannerDelayTimer = 0; + gCurrentPinballGame->bannerDisplayTimer = 160; + gCurrentPinballGame->cameraYScrollTarget = 0; + gCurrentPinballGame->cameraYAdjust = 0; + gCurrentPinballGame->cameraYScrollSpeed = 0; + gCurrentPinballGame->bannerGfxIndex = 0; + gCurrentPinballGame->bannerActive = 1; + gCurrentPinballGame->bannerPreserveBallState = 0; + gCurrentPinballGame->holeLetterSystemState = 5; + gCurrentPinballGame->holeAnimFrameCounter = 0; + gCurrentPinballGame->holeLetterCount = 10; m4aSongNumStart(SE_UNKNOWN_0xE0); - gCurrentPinballGame->unk1EC = 1; - gCurrentPinballGame->unk1F4 = 2080; - gCurrentPinballGame->unk1F6 = 960; + gCurrentPinballGame->eggAnimationPhase = 1; + gCurrentPinballGame->portraitOffsetX = 2080; + gCurrentPinballGame->portraitOffsetY = 960; } - gCurrentPinballGame->unk344 = 0; + gCurrentPinballGame->holeLetterNewHit = 0; break; case 5: - if (gUnknown_086AE5A0[gCurrentPinballGame->unk345][1] > gCurrentPinballGame->unk348) + if (gHoleAnimKeyframeData[gCurrentPinballGame->holeLetterCount][1] > gCurrentPinballGame->holeAnimFrameCounter) { - gCurrentPinballGame->unk348++; + gCurrentPinballGame->holeAnimFrameCounter++; } else { - gCurrentPinballGame->unk348 = 0; - gCurrentPinballGame->unk345++; - if (gCurrentPinballGame->unk345 == 15) - gCurrentPinballGame->unk346 = 6; + gCurrentPinballGame->holeAnimFrameCounter = 0; + gCurrentPinballGame->holeLetterCount++; + if (gCurrentPinballGame->holeLetterCount == 15) + gCurrentPinballGame->holeLetterSystemState = 6; - index = gUnknown_086AE5A0[gCurrentPinballGame->unk345][0]; - DmaCopy16(3, gUnknown_08490A4C[index], (void *)0x600D900, 0x440); + index = gHoleAnimKeyframeData[gCurrentPinballGame->holeLetterCount][0]; + DmaCopy16(3, gHoleIndicatorTileGfx[index], (void *)0x600D900, 0x440); } - if (gCurrentPinballGame->unk345 == 14 && gCurrentPinballGame->unk348 == 10) + if (gCurrentPinballGame->holeLetterCount == 14 && gCurrentPinballGame->holeAnimFrameCounter == 10) m4aSongNumStart(SE_UNKNOWN_0xE1); - if (gCurrentPinballGame->unk1F6 > 700) - gCurrentPinballGame->unk1F6 -= 5; + if (gCurrentPinballGame->portraitOffsetY > 700) + gCurrentPinballGame->portraitOffsetY -= 5; else - gCurrentPinballGame->unk1F6 = 700; + gCurrentPinballGame->portraitOffsetY = 700; break; case 6: - gCurrentPinballGame->unk345 = 0; - gCurrentPinballGame->unk348 = 0; - gCurrentPinballGame->unk346 = 0; - gCurrentPinballGame->unk343 = 0; + gCurrentPinballGame->holeLetterCount = 0; + gCurrentPinballGame->holeAnimFrameCounter = 0; + gCurrentPinballGame->holeLetterSystemState = 0; + gCurrentPinballGame->holeCaptureReady = 0; break; } @@ -207,25 +207,25 @@ void sub_31498(void) group = &gMain.spriteGroups[47 + i]; if (group->available) { - if (gUnknown_086AE58A[gCurrentPinballGame->unk355[i]][0] > gCurrentPinballGame->unk35E[i]) + if (gSplashEffectFrameDurations[gCurrentPinballGame->splashEffectFrameIndex[i]][0] > gCurrentPinballGame->splashEffectFrameTimer[i]) { - gCurrentPinballGame->unk35E[i]++; + gCurrentPinballGame->splashEffectFrameTimer[i]++; } else { - gCurrentPinballGame->unk35E[i] = 0; - gCurrentPinballGame->unk355[i]++; - if (gCurrentPinballGame->unk355[i] == 6) + gCurrentPinballGame->splashEffectFrameTimer[i] = 0; + gCurrentPinballGame->splashEffectFrameIndex[i]++; + if (gCurrentPinballGame->splashEffectFrameIndex[i] == 6) { group->available = 0; - gCurrentPinballGame->unk355[i] = 5; + gCurrentPinballGame->splashEffectFrameIndex[i] = 5; } } - index = gUnknown_086AE588[gCurrentPinballGame->unk355[i]][0]; - DmaCopy16(3, &gUnknown_0845A08C[index], (void *)0x060140a0 + i * 0x100, 0x100); - group->baseX = gUnknown_086AE554[gCurrentPinballGame->unk359[i]].x - gCurrentPinballGame->unk58; - group->baseY = gUnknown_086AE554[gCurrentPinballGame->unk359[i]].y - gCurrentPinballGame->unk5A; + index = gSplashEffectTileIndices[gCurrentPinballGame->splashEffectFrameIndex[i]][0]; + DmaCopy16(3, &gSplashEffectTileGfx[index], (void *)0x060140a0 + i * 0x100, 0x100); + group->baseX = gSplashEffectPositions[gCurrentPinballGame->splashEffectPositionIndex[i]].x - gCurrentPinballGame->cameraXOffset; + group->baseY = gSplashEffectPositions[gCurrentPinballGame->splashEffectPositionIndex[i]].y - gCurrentPinballGame->cameraYOffset; for (j = 0; j < 3; j++) { oamSimple = &group->oam[j]; @@ -236,7 +236,7 @@ void sub_31498(void) } } -void sub_31B30(void) +void DrawBoardEdgeBanner(void) { s16 i; struct SpriteGroup *group; @@ -248,14 +248,14 @@ void sub_31B30(void) if (group->available) { - if (gCurrentPinballGame->unk4C < 8) + if (gCurrentPinballGame->cameraBaseX < 8) { - group->baseX = gCurrentPinballGame->unk58; + group->baseX = gCurrentPinballGame->cameraXOffset; group->baseX = -8 - group->baseX; } else { - group->baseX = gCurrentPinballGame->unk58; + group->baseX = gCurrentPinballGame->cameraXOffset; group->baseX = 256 - group->baseX; } @@ -275,31 +275,31 @@ void sub_31B30(void) * 0 when saving and loading normally * 2 when loading into the evo or mart menu */ -void sub_31BE8(s16 arg0) +void RestoreBoardObjPalettes(s16 arg0) { - if (gCurrentPinballGame->unk70 == 1) + if (gCurrentPinballGame->paletteSwapActive == 1) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[arg0], (void*)OBJ_PLTT, 0x20); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[arg0], (void*)OBJ_PLTT, 0x20); } if (gMain.selectedField == FIELD_SAPPHIRE) { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[arg0] + 0x40, (void*)OBJ_PLTT + 0x40, 0xC0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[arg0] + 0x40, (void*)OBJ_PLTT + 0x40, 0xC0); } else { - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[arg0] + 0x40, (void*)OBJ_PLTT + 0x40, 0xE0); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[arg0] + 0x40, (void*)OBJ_PLTT + 0x40, 0xE0); } - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[arg0] + 0x140, (void *)OBJ_PLTT + 0x140, 0x20); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[arg0] + 0x140, (void *)OBJ_PLTT + 0x140, 0x20); // related to Y position of camera on the field - if (gCurrentPinballGame->unk68 < 170) + if (gCurrentPinballGame->cameraYViewport < 170) { - DmaCopy16(3, gUnknown_08137B3C[gMain.selectedField][arg0 * 2], (void *)OBJ_PLTT + 0x160, 0x20); + DmaCopy16(3, gFieldPaletteVariants[gMain.selectedField][arg0 * 2], (void *)OBJ_PLTT + 0x160, 0x20); } else { - DmaCopy16(3, gUnknown_08137B3C[gMain.selectedField][arg0 * 2 + 1], (void *)OBJ_PLTT + 0x160, 0x20); + DmaCopy16(3, gFieldPaletteVariants[gMain.selectedField][arg0 * 2 + 1], (void *)OBJ_PLTT + 0x160, 0x20); } } diff --git a/src/rom_31CF8.c b/src/rom_31CF8.c index f9d118f..988ff5f 100644 --- a/src/rom_31CF8.c +++ b/src/rom_31CF8.c @@ -6,7 +6,7 @@ * 0 if captured via ball * 1 if evolved */ -void sub_31CF8(s16 evolved) +void RegisterCaptureOrEvolution(s16 evolved) { s16 i; diff --git a/src/rom_356A0.c b/src/rom_356A0.c index 9bd6dc9..6b9c69d 100644 --- a/src/rom_356A0.c +++ b/src/rom_356A0.c @@ -13,49 +13,49 @@ extern const u8 gRayquazaBonusClear_Gfx[]; void FadeToMainBoard(void) { - gCurrentPinballGame->unk1100 = 1; - switch (gCurrentPinballGame->unk17) + gCurrentPinballGame->startButtonDisabled = 1; + switch (gCurrentPinballGame->boardSubState) { case 0: - gCurrentPinballGame->unk18 = 65; - gCurrentPinballGame->unk17 = 1; + gCurrentPinballGame->stageTimer = 65; + gCurrentPinballGame->boardSubState = 1; gMain.blendControl = 0x9F; break; case 1: - if (gCurrentPinballGame->unk18) + if (gCurrentPinballGame->stageTimer) { - gCurrentPinballGame->unk18--; - gMain.blendBrightness = 16 - gCurrentPinballGame->unk18 / 4; - if (gCurrentPinballGame->unk18 == 0) - gCurrentPinballGame->unk17++; + gCurrentPinballGame->stageTimer--; + gMain.blendBrightness = 16 - gCurrentPinballGame->stageTimer / 4; + if (gCurrentPinballGame->stageTimer == 0) + gCurrentPinballGame->boardSubState++; } break; case 2: - if (gCurrentPinballGame->unk18 < 30) + if (gCurrentPinballGame->stageTimer < 30) { - gCurrentPinballGame->unk18++; + gCurrentPinballGame->stageTimer++; } else { - gCurrentPinballGame->unk18 = 0; - gCurrentPinballGame->unk17 = 0; + gCurrentPinballGame->stageTimer = 0; + gCurrentPinballGame->boardSubState = 0; gMain.spriteGroups[6].available = 0; gMain.spriteGroups[5].available = 0; - if (gMain.unk5 != gMain.selectedField) + if (gMain.tempField != gMain.selectedField) { - sub_357B8(); + TransitionFromBonusToMainBoard(); } else { - ResetSomeGraphicsRelatedStuff(); - gCurrentPinballGame->unk1D = 2; + ResetDisplayState(); + gCurrentPinballGame->fadeSubState = 2; } } break; } } -void ProceessBonusBannerAndScoring(void) +void ProcessBonusBannerAndScoring(void) { s16 i; struct SpriteGroup *group; @@ -68,48 +68,48 @@ void ProceessBonusBannerAndScoring(void) var0 = 8; var1 = 0; group = &gMain.spriteGroups[6]; - if (gCurrentPinballGame->unk394 > 0) + if (gCurrentPinballGame->bannerSlideYOffset > 0) { - gCurrentPinballGame->unk394 -= 6; - if (gCurrentPinballGame->unk394 < 0) - gCurrentPinballGame->unk394 = 0; + gCurrentPinballGame->bannerSlideYOffset -= 6; + if (gCurrentPinballGame->bannerSlideYOffset < 0) + gCurrentPinballGame->bannerSlideYOffset = 0; } switch (gMain.selectedField) { case FIELD_DUSCLOPS: - if (gCurrentPinballGame->unk13 == 5 && gCurrentPinballGame->unk18 < 180) - var0 = (gCurrentPinballGame->unk18 % 24) / 12 + 8; + if (gCurrentPinballGame->boardState == 5 && gCurrentPinballGame->stageTimer < 180) + var0 = (gCurrentPinballGame->stageTimer % 24) / 12 + 8; var1 = 30000000; break; case FIELD_KECLEON: - if (gCurrentPinballGame->unk13 == 3 && gCurrentPinballGame->unk18 < 180) - var0 = (gCurrentPinballGame->unk18 % 24) / 12 + 8; + if (gCurrentPinballGame->boardState == 3 && gCurrentPinballGame->stageTimer < 180) + var0 = (gCurrentPinballGame->stageTimer % 24) / 12 + 8; var1 = 30000000; break; case FIELD_KYOGRE: - if (gCurrentPinballGame->unk13 == 3 && gCurrentPinballGame->unk18 < 180) - var0 = (gCurrentPinballGame->unk18 % 24) / 12 + 8; + if (gCurrentPinballGame->boardState == 3 && gCurrentPinballGame->stageTimer < 180) + var0 = (gCurrentPinballGame->stageTimer % 24) / 12 + 8; var1 = 50000000; break; case FIELD_GROUDON: - if (gCurrentPinballGame->unk13 == 3 && gCurrentPinballGame->unk18 < 180) - var0 = (gCurrentPinballGame->unk18 % 24) / 12 + 8; + if (gCurrentPinballGame->boardState == 3 && gCurrentPinballGame->stageTimer < 180) + var0 = (gCurrentPinballGame->stageTimer % 24) / 12 + 8; var1 = 50000000; break; case FIELD_RAYQUAZA: - if (gCurrentPinballGame->unk13 == 3 && gCurrentPinballGame->unk18 < 180) - var0 = (gCurrentPinballGame->unk18 % 24) / 12 + 8; + if (gCurrentPinballGame->boardState == 3 && gCurrentPinballGame->stageTimer < 180) + var0 = (gCurrentPinballGame->stageTimer % 24) / 12 + 8; var1 = 99999999; break; } - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0] + var0 * 0x20, (void *)0x05000300, 0x20); + DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0] + var0 * 0x20, (void *)0x05000300, 0x20); if (group->available) { group->baseX = 120; - group->baseY = gCurrentPinballGame->unk394 + 50; + group->baseY = gCurrentPinballGame->bannerSlideYOffset + 50; for (i = 0; i < 3; i++) { oamSimple = &group->oam[i]; @@ -119,7 +119,7 @@ void ProceessBonusBannerAndScoring(void) group = &gMain.spriteGroups[5]; group->baseX = 120; - group->baseY = gCurrentPinballGame->unk394 + 50; + group->baseY = gCurrentPinballGame->bannerSlideYOffset + 50; for (i = 0; i < 18; i++) { oamSimple = &group->oam[i]; @@ -182,14 +182,14 @@ void ProceessBonusBannerAndScoring(void) } } -void sub_356A0(void) +void RenderBonusStageOverlaySprites(void) { s16 i; struct SpriteGroup *group; struct OamDataSimple *oamSimple; group = &gMain_spriteGroups_14; - switch (gCurrentPinballGame->unk3DC) + switch (gCurrentPinballGame->bossEntityState) { case 0: case 1: @@ -205,7 +205,7 @@ void sub_356A0(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; break; case 2: - if (gCurrentPinballGame->unk3E6 <= 0) + if (gCurrentPinballGame->bossAnimLoopCount <= 0) break; if (!group->available) @@ -240,31 +240,31 @@ void sub_356A0(void) } } -void sub_357B8(void) +void TransitionFromBonusToMainBoard(void) { u8 temp; m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); - temp = gMain.unk5; - gMain.unk5 = gMain.selectedField; + temp = gMain.tempField; + gMain.tempField = gMain.selectedField; gMain.selectedField = temp; - gMain.unk6 = 0; + gMain.isBonusField = 0; gMain.modeChangeFlags = MODE_CHANGE_NONE; gCurrentPinballGame->eventTimer = 0; - gCurrentPinballGame->unk294 = 0; + gCurrentPinballGame->boardModeType = 0; if (gCurrentPinballGame->numCompletedBonusStages > 4) gMain.eReaderBonuses[EREADER_ENCOUNTER_RATE_UP_CARD] = 1; gMain.subState = 0; - gCurrentPinballGame->unk15 = 3; - gCurrentPinballGame->unk13 = 1; - gCurrentPinballGame->unk16 = 0; - gCurrentPinballGame->unk5FA = 0; - gCurrentPinballGame->unkE6 = 0; - sub_1C7F4(0, 0); - gCurrentPinballGame->unk6C4 = 0; - if (gCurrentPinballGame->unk714) - gCurrentPinballGame->unk6EE = 120; + gCurrentPinballGame->prevBoardState = 3; + gCurrentPinballGame->boardState = 1; + gCurrentPinballGame->boardTransitionPhase = 0; + gCurrentPinballGame->boardEntityActive = 0; + gCurrentPinballGame->cameraYAdjust = 0; + LoadPortraitGraphics(0, 0); + gCurrentPinballGame->portraitDisplayState = 0; + if (gCurrentPinballGame->allHolesLit) + gCurrentPinballGame->allHolesLitDelayTimer = 120; } diff --git a/src/rom_467F4.c b/src/rom_467F4.c index a2205ee..d0ca021 100644 --- a/src/rom_467F4.c +++ b/src/rom_467F4.c @@ -1,71 +1,71 @@ #include "global.h" #include "main.h" -extern const s16 gUnknown_086B0010[][4]; +extern const s16 gScrollTileUpdateTable[][4]; -struct Unk_86AFCB0 +struct BoardCollisionDataSet { - const s16 *unk0; + const s16 *tileData; u8 filler4[0xC]; - const u16 *unk10; + const u16 *angleData; u8 filler14[0xC]; - const u8 *unk20; + const u8 *typeData; u8 filler24[0xC]; }; -extern const struct Unk_86AFCB0 gUnknown_086AFCB0[][2]; +extern const struct BoardCollisionDataSet gBoardCollisionDataSets[][2]; -extern u8 gUnknown_020030A0[]; -extern u8 gUnknown_0200FBB0[]; +extern u8 gBoardBGTileBufferAlt[]; +extern u8 gBoardGfxBuffer[]; -extern const u16 gUnknown_0816C3E4[]; -extern const u8 gUnknown_081C08E4[]; -extern const u8 gUnknown_081BFEE4[]; -extern const u8 gUnknown_0822E424[]; -extern const u8 gUnknown_0824C1E4[]; -extern const u8 gUnknown_0824DD60[]; -extern const u8 gUnknown_08250934[]; -extern const u8 gUnknown_08265C10[]; -extern const u8 gUnknown_0826DC10[]; -extern const u8 gUnknown_0826EC10[]; -extern const u8 gUnknown_0826EE10[]; -extern const u8 gUnknown_082AE6D0[]; -extern const u8 gUnknown_082D34D0[]; -extern const u8 gUnknown_082E4EE0[]; -extern const u8 gUnknown_082D523C[]; -extern const u8 gUnknown_082D8998[]; -extern const u8 gUnknown_082ECEE0[]; -extern const u8 gUnknown_082EDEE0[]; -extern const u8 gUnknown_082EE4C0[]; +extern const u16 gFlipperCollisionData[]; +extern const u8 gRubyBoardBG0Tilemap[]; +extern const u8 gRubyBoardPalette[]; +extern const u8 gRubyBoardBG1Tilemap[]; +extern const u8 gRubyBoardCompressedTiles1[]; +extern const u8 gRubyBoardCompressedTiles2[]; +extern const u8 gRubyBoardCompressedBGTileBuffer[]; +extern const u8 gRubyBoardBGTiles[]; +extern const u8 gRubyBoardBGTilemap[]; +extern const u8 gSapphireBoardPalette[]; +extern const u8 gSapphireBoardBG0Tilemap[]; +extern const u8 gSapphireBoardBG1Tilemap[]; +extern const u8 gSapphireBoardCompressedTiles1[]; +extern const u8 gSapphireBoardBGTiles[]; +extern const u8 gSapphireBoardCompressedTiles2[]; +extern const u8 gSapphireBoardCompressedBGTileBuffer[]; +extern const u8 gSapphireBoardBGTilemap[]; +extern const u8 gDusclopsBoardPalette[]; +extern const u8 gDusclopsBoardBG0Tilemap[]; -extern const u8 gUnknown_08301700[]; -extern const u8 gUnknown_08301F00[]; -extern const u8 gUnknown_08302700[]; -extern const u8 gUnknown_08303928[]; -extern const u8 gUnknown_0830CBD4[]; -extern const u8 gUnknown_0830CDD4[]; -extern const u16 gUnknown_08327994[]; -extern const u8 gUnknown_08329994[]; -extern const u8 gUnknown_0832A194[]; -extern const u8 gUnknown_08332E04[]; -extern const u16 gUnknown_08333004[]; -extern const u8 gUnknown_0833D844[]; -extern const u8 gUnknown_0833E044[]; -extern const u8 gUnknown_08352BD8[]; -extern const u8 gUnknown_08352DD8[]; -extern const u8 gUnknown_083535D8[]; -extern const u8 gUnknown_08353DD8[]; -extern const u8 gUnknown_08363EC8[]; -extern const u8 gUnknown_083640C8[]; -extern const u8 gUnknown_0836E808[]; -extern const u8 gUnknown_0836F808[]; -extern const u8 gUnknown_08370808[]; -extern const u8 gUnknown_0837A2E8[]; -extern const u16 gUnknown_0837A4E8[]; -extern const u8 gUnknown_0838E028[]; -extern const u8 gUnknown_0838E828[]; -extern const u8 gUnknown_083A826C[]; -extern const u8 gUnknown_083A8ACC[]; +extern const u8 gDusclopsBoardBG1Tilemap[]; +extern const u8 gDusclopsBoardBG2Tilemap[]; +extern const u8 gBonusFieldCompressedBaseTiles[]; +extern const u8 gDusclopsBoardCompressedBGTiles[]; +extern const u8 gKecleonBoardPalette[]; +extern const u8 gKecleonBoardBG1Tilemap[]; +extern const u16 gKecleonBerryOverlayTilemap[]; +extern const u8 gKecleonBoardBG0Tilemap[]; +extern const u8 gKecleonBoardCompressedBGTiles[]; +extern const u8 gKyogreBoardPalette[]; +extern const u16 gKyogreWaterBackgroundTilemap[]; +extern const u8 gKyogreBoardBG1Tilemap[]; +extern const u8 gKyogreBoardCompressedBGTiles[]; +extern const u8 gGroudonLavaPaletteCycleData[]; +extern const u8 gGroudonBoardBG0Tilemap[]; +extern const u8 gGroudonBoardBG1Tilemap[]; +extern const u8 gGroudonBoardCompressedBGTiles[]; +extern const u8 gRayquazaBoardPalette[]; +extern const u8 gRayquazaBoardBG0Tilemap[]; +extern const u8 gRayquazaBoardBGScrollTilemap[]; +extern const u8 gRayquazaBoardBG1Tilemap[]; +extern const u8 gRayquazaBoardCompressedBGTiles[]; +extern const u8 gSphealBoardPalette[]; +extern const u16 gSphealWaterBackgroundTilemap[]; +extern const u8 gSphealBoardBG1Tilemap[]; +extern const u8 gSphealBoardCompressedBGTiles[]; +extern const u8 gBoardHudTilemapB[]; +extern const u8 gBoardHudTilemapA[]; extern const u8 gRubyIntroSprites_Gfx[]; extern const u8 gSapphireIntroSprites_Gfx[]; @@ -74,171 +74,171 @@ extern const u8 gKecleonIntroSprite_Gfx[]; extern const u8 gKyogreIntroSprite_Gfx[]; extern const u8 gGroudonIntroSprite_Gfx[]; extern const u8 gRayquazaIntroSprite_Gfx[]; -extern const u8 gUnknown_084779EC[]; +extern const u8 gSphealIntroSprites_Gfx[]; -extern const struct Unk02031520_unk14 gUnknown_086AFD70[]; +extern const struct FieldBoardLayout gFieldBoardConfigs[]; void loadIntroduction(void) { - struct Unk02031520 *dest = &gUnknown_02031520; - const struct Unk02031520_unk14 *src = gUnknown_086AFD70; - memcpy(&dest->unk14, &src[gMain.selectedField], sizeof(dest->unk14)); + struct BoardConfig *dest = &gBoardConfig; + const struct FieldBoardLayout *src = gFieldBoardConfigs; + memcpy(&dest->fieldLayout, &src[gMain.selectedField], sizeof(dest->fieldLayout)); switch (gMain.selectedField) { case FIELD_RUBY: - DmaCopy16(3, gUnknown_081BFEE4, (void *)BG_PLTT, BG_PLTT_SIZE); - DmaCopy16(3, gUnknown_08265C10, (void *)0x06008000, 0x8000); - DmaCopy16(3, gUnknown_0826DC10, (void *)0x06003000, 0x1000); - LZ77UnCompWram(gUnknown_0824C1E4, gUnknown_0200FBB0); - DmaCopy16(3, gUnknown_0200FBB0, (void *)0x06004000, 0x4000); - LZ77UnCompWram(gUnknown_0824DD60, gUnknown_0200FBB0); - LZ77UnCompWram(gUnknown_08250934, gUnknown_020030A0); - DmaCopy16(3, &gUnknown_0200FBB0[0xC00], (void *)0x0600B400, 0x2400); - DmaCopy16(3, &gUnknown_0200FBB0[0x3000], (void *)0x06008000, 0x3400); - DmaCopy16(3, gUnknown_081C08E4, (void *)BG_VRAM, 0x1000); - DmaCopy16(3, gUnknown_0822E424, (void *)0x06001000, 0x1000); - DmaCopy16(3, gUnknown_083A8ACC, (void *)0x06006800, 0x400); - DmaCopy16(3, gUnknown_083A826C, (void *)0x06006C00, 0x800); + DmaCopy16(3, gRubyBoardPalette, (void *)BG_PLTT, BG_PLTT_SIZE); + DmaCopy16(3, gRubyBoardBGTiles, (void *)0x06008000, 0x8000); + DmaCopy16(3, gRubyBoardBGTilemap, (void *)0x06003000, 0x1000); + LZ77UnCompWram(gRubyBoardCompressedTiles1, gBoardGfxBuffer); + DmaCopy16(3, gBoardGfxBuffer, (void *)0x06004000, 0x4000); + LZ77UnCompWram(gRubyBoardCompressedTiles2, gBoardGfxBuffer); + LZ77UnCompWram(gRubyBoardCompressedBGTileBuffer, gBoardBGTileBufferAlt); + DmaCopy16(3, &gBoardGfxBuffer[0xC00], (void *)0x0600B400, 0x2400); + DmaCopy16(3, &gBoardGfxBuffer[0x3000], (void *)0x06008000, 0x3400); + DmaCopy16(3, gRubyBoardBG0Tilemap, (void *)BG_VRAM, 0x1000); + DmaCopy16(3, gRubyBoardBG1Tilemap, (void *)0x06001000, 0x1000); + DmaCopy16(3, gBoardHudTilemapA, (void *)0x06006800, 0x400); + DmaCopy16(3, gBoardHudTilemapB, (void *)0x06006C00, 0x800); DmaCopy16(3, gRubyIntroSprites_Gfx, (void *)0x06010000, 0x8000); break; case FIELD_SAPPHIRE: - DmaCopy16(3, gUnknown_0826EC10, (void *)BG_PLTT, BG_PLTT_SIZE); - DmaCopy16(3, gUnknown_082E4EE0, (void *)0x06008000, 0x8000); - DmaCopy16(3, gUnknown_082ECEE0, (void *)0x06003000, 0x1000); - LZ77UnCompWram(gUnknown_082D34D0, gUnknown_0200FBB0); - DmaCopy16(3, gUnknown_0200FBB0, (void *)0x06004000, 0x4000); - LZ77UnCompWram(gUnknown_082D523C, gUnknown_0200FBB0); - LZ77UnCompWram(gUnknown_082D8998, gUnknown_020030A0); - DmaCopy16(3, gUnknown_0200FBB0, (void *)0x0600A800, 0x3000); - DmaCopy16(3, &gUnknown_0200FBB0[0x3000], (void *)0x06008000, 0x2800); - DmaCopy16(3, gUnknown_0826EE10, (void *)BG_VRAM, 0x1000); - DmaCopy16(3, gUnknown_082AE6D0, (void *)0x06001000, 0x1000); - DmaCopy16(3, gUnknown_083A8ACC, (void *)0x06006800, 0x400); - DmaCopy16(3, gUnknown_083A826C, (void *)0x06006C00, 0x800); + DmaCopy16(3, gSapphireBoardPalette, (void *)BG_PLTT, BG_PLTT_SIZE); + DmaCopy16(3, gSapphireBoardBGTiles, (void *)0x06008000, 0x8000); + DmaCopy16(3, gSapphireBoardBGTilemap, (void *)0x06003000, 0x1000); + LZ77UnCompWram(gSapphireBoardCompressedTiles1, gBoardGfxBuffer); + DmaCopy16(3, gBoardGfxBuffer, (void *)0x06004000, 0x4000); + LZ77UnCompWram(gSapphireBoardCompressedTiles2, gBoardGfxBuffer); + LZ77UnCompWram(gSapphireBoardCompressedBGTileBuffer, gBoardBGTileBufferAlt); + DmaCopy16(3, gBoardGfxBuffer, (void *)0x0600A800, 0x3000); + DmaCopy16(3, &gBoardGfxBuffer[0x3000], (void *)0x06008000, 0x2800); + DmaCopy16(3, gSapphireBoardBG0Tilemap, (void *)BG_VRAM, 0x1000); + DmaCopy16(3, gSapphireBoardBG1Tilemap, (void *)0x06001000, 0x1000); + DmaCopy16(3, gBoardHudTilemapA, (void *)0x06006800, 0x400); + DmaCopy16(3, gBoardHudTilemapB, (void *)0x06006C00, 0x800); DmaCopy16(3, gSapphireIntroSprites_Gfx, (void *)0x06010000, 0x8000); break; case FIELD_DUSCLOPS: - DmaCopy16(3, gUnknown_082EDEE0, (void *)BG_PLTT, BG_PLTT_SIZE); - LZ77UnCompWram(gUnknown_08302700, gUnknown_0200FBB0); - DmaCopy16(3, gUnknown_0200FBB0, (void *)0x06004000, 0x4000); - LZ77UnCompWram(gUnknown_08303928, gUnknown_0200FBB0); - DmaCopy16(3, gUnknown_0200FBB0, (void *)0x06008000, 0x8000); - DmaCopy16(3, gUnknown_082EE4C0, (void *)0x06000000, 0x800); - DmaCopy16(3, gUnknown_08301700, (void *)0x06000800, 0x800); - DmaCopy16(3, gUnknown_08301F00, (void *)0x06001000, 0x800); - DmaCopy16(3, gUnknown_083A8ACC, (void *)0x06006800, 0x400); - DmaCopy16(3, gUnknown_083A826C, (void *)0x06006C00, 0x800); + DmaCopy16(3, gDusclopsBoardPalette, (void *)BG_PLTT, BG_PLTT_SIZE); + LZ77UnCompWram(gBonusFieldCompressedBaseTiles, gBoardGfxBuffer); + DmaCopy16(3, gBoardGfxBuffer, (void *)0x06004000, 0x4000); + LZ77UnCompWram(gDusclopsBoardCompressedBGTiles, gBoardGfxBuffer); + DmaCopy16(3, gBoardGfxBuffer, (void *)0x06008000, 0x8000); + DmaCopy16(3, gDusclopsBoardBG0Tilemap, (void *)0x06000000, 0x800); + DmaCopy16(3, gDusclopsBoardBG1Tilemap, (void *)0x06000800, 0x800); + DmaCopy16(3, gDusclopsBoardBG2Tilemap, (void *)0x06001000, 0x800); + DmaCopy16(3, gBoardHudTilemapA, (void *)0x06006800, 0x400); + DmaCopy16(3, gBoardHudTilemapB, (void *)0x06006C00, 0x800); DmaCopy16(3, gDusclopsIntroSprite_Gfx, (void *)0x06010000, 0x8000); break; case FIELD_KECLEON: - DmaCopy16(3, gUnknown_0830CBD4, (void *)BG_PLTT, BG_PLTT_SIZE); - LZ77UnCompWram(gUnknown_08302700, gUnknown_0200FBB0); - DmaCopy16(3, gUnknown_0200FBB0, (void *)0x06004000, 0x4000); - LZ77UnCompWram(gUnknown_0832A194, gUnknown_0200FBB0); - DmaCopy16(3, gUnknown_0200FBB0, (void *)0x06008000, 0x8000); - DmaCopy16(3, gUnknown_08329994, (void *)0x06000000, 0x800); - DmaCopy16(3, gUnknown_0830CDD4, (void *)0x06000800, 0x800); - DmaCopy16(3, gUnknown_08327994, (void *)0x06001000, 0x800); - DmaCopy16(3, gUnknown_083A8ACC, (void *)0x06006800, 0x400); - DmaCopy16(3, gUnknown_083A826C, (void *)0x06006C00, 0x800); + DmaCopy16(3, gKecleonBoardPalette, (void *)BG_PLTT, BG_PLTT_SIZE); + LZ77UnCompWram(gBonusFieldCompressedBaseTiles, gBoardGfxBuffer); + DmaCopy16(3, gBoardGfxBuffer, (void *)0x06004000, 0x4000); + LZ77UnCompWram(gKecleonBoardCompressedBGTiles, gBoardGfxBuffer); + DmaCopy16(3, gBoardGfxBuffer, (void *)0x06008000, 0x8000); + DmaCopy16(3, gKecleonBoardBG0Tilemap, (void *)0x06000000, 0x800); + DmaCopy16(3, gKecleonBoardBG1Tilemap, (void *)0x06000800, 0x800); + DmaCopy16(3, gKecleonBerryOverlayTilemap, (void *)0x06001000, 0x800); + DmaCopy16(3, gBoardHudTilemapA, (void *)0x06006800, 0x400); + DmaCopy16(3, gBoardHudTilemapB, (void *)0x06006C00, 0x800); DmaCopy16(3, gKecleonIntroSprite_Gfx, (void *)0x06010000, 0x8000); break; case FIELD_KYOGRE: - DmaCopy16(3, gUnknown_08332E04, (void *)BG_PLTT, BG_PLTT_SIZE); - LZ77UnCompWram(gUnknown_08302700, gUnknown_0200FBB0); - DmaCopy16(3, gUnknown_0200FBB0, (void *)0x06004000, 0x4000); - LZ77UnCompWram(gUnknown_0833E044, gUnknown_0200FBB0); - DmaCopy16(3, gUnknown_0200FBB0, (void *)0x06008000, 0x8000); - DmaCopy16(3, gUnknown_08333004, (void *)0x06000000, 0x800); - DmaCopy16(3, gUnknown_0833D844, (void *)0x06000800, 0x800); - DmaCopy16(3, gUnknown_083A8ACC, (void *)0x06006800, 0x400); - DmaCopy16(3, gUnknown_083A826C, (void *)0x06006C00, 0x800); + DmaCopy16(3, gKyogreBoardPalette, (void *)BG_PLTT, BG_PLTT_SIZE); + LZ77UnCompWram(gBonusFieldCompressedBaseTiles, gBoardGfxBuffer); + DmaCopy16(3, gBoardGfxBuffer, (void *)0x06004000, 0x4000); + LZ77UnCompWram(gKyogreBoardCompressedBGTiles, gBoardGfxBuffer); + DmaCopy16(3, gBoardGfxBuffer, (void *)0x06008000, 0x8000); + DmaCopy16(3, gKyogreWaterBackgroundTilemap, (void *)0x06000000, 0x800); + DmaCopy16(3, gKyogreBoardBG1Tilemap, (void *)0x06000800, 0x800); + DmaCopy16(3, gBoardHudTilemapA, (void *)0x06006800, 0x400); + DmaCopy16(3, gBoardHudTilemapB, (void *)0x06006C00, 0x800); DmaCopy16(3, gKyogreIntroSprite_Gfx, (void *)0x06010000, 0x8000); break; case FIELD_GROUDON: - DmaCopy16(3, gUnknown_08352BD8, (void *)BG_PLTT, BG_PLTT_SIZE); - LZ77UnCompWram(gUnknown_08302700, gUnknown_0200FBB0); - DmaCopy16(3, gUnknown_0200FBB0, (void *)0x06004000, 0x4000); - LZ77UnCompWram(gUnknown_08353DD8, gUnknown_0200FBB0); - DmaCopy16(3, gUnknown_0200FBB0, (void *)0x06008000, 0x8000); - DmaCopy16(3, gUnknown_08352DD8, (void *)0x06000000, 0x800); - DmaCopy16(3, gUnknown_083535D8, (void *)0x06000800, 0x800); - DmaCopy16(3, gUnknown_083A8ACC, (void *)0x06006800, 0x400); - DmaCopy16(3, gUnknown_083A826C, (void *)0x06006C00, 0x800); + DmaCopy16(3, gGroudonLavaPaletteCycleData, (void *)BG_PLTT, BG_PLTT_SIZE); + LZ77UnCompWram(gBonusFieldCompressedBaseTiles, gBoardGfxBuffer); + DmaCopy16(3, gBoardGfxBuffer, (void *)0x06004000, 0x4000); + LZ77UnCompWram(gGroudonBoardCompressedBGTiles, gBoardGfxBuffer); + DmaCopy16(3, gBoardGfxBuffer, (void *)0x06008000, 0x8000); + DmaCopy16(3, gGroudonBoardBG0Tilemap, (void *)0x06000000, 0x800); + DmaCopy16(3, gGroudonBoardBG1Tilemap, (void *)0x06000800, 0x800); + DmaCopy16(3, gBoardHudTilemapA, (void *)0x06006800, 0x400); + DmaCopy16(3, gBoardHudTilemapB, (void *)0x06006C00, 0x800); DmaCopy16(3, gGroudonIntroSprite_Gfx, (void *)0x06010000, 0x8000); break; case FIELD_RAYQUAZA: - DmaCopy16(3, gUnknown_08363EC8, (void *)BG_PLTT, BG_PLTT_SIZE); - LZ77UnCompWram(gUnknown_08302700, gUnknown_0200FBB0); - DmaCopy16(3, gUnknown_0200FBB0, (void *)0x06004000, 0x4000); - LZ77UnCompWram(gUnknown_08370808, gUnknown_0200FBB0); - DmaCopy16(3, gUnknown_0200FBB0, (void *)0x06008000, 0x8000); - DmaCopy16(3, gUnknown_083640C8, (void *)0x06000000, 0x1000); - DmaCopy16(3, gUnknown_0836F808, (void *)0x06001000, 0x1000); - DmaCopy16(3, gUnknown_0836E808, (void *)0x06003000, 0x1000); - DmaCopy16(3, gUnknown_083A8ACC, (void *)0x06006800, 0x400); - DmaCopy16(3, gUnknown_083A826C, (void *)0x06006C00, 0x800); + DmaCopy16(3, gRayquazaBoardPalette, (void *)BG_PLTT, BG_PLTT_SIZE); + LZ77UnCompWram(gBonusFieldCompressedBaseTiles, gBoardGfxBuffer); + DmaCopy16(3, gBoardGfxBuffer, (void *)0x06004000, 0x4000); + LZ77UnCompWram(gRayquazaBoardCompressedBGTiles, gBoardGfxBuffer); + DmaCopy16(3, gBoardGfxBuffer, (void *)0x06008000, 0x8000); + DmaCopy16(3, gRayquazaBoardBG0Tilemap, (void *)0x06000000, 0x1000); + DmaCopy16(3, gRayquazaBoardBG1Tilemap, (void *)0x06001000, 0x1000); + DmaCopy16(3, gRayquazaBoardBGScrollTilemap, (void *)0x06003000, 0x1000); + DmaCopy16(3, gBoardHudTilemapA, (void *)0x06006800, 0x400); + DmaCopy16(3, gBoardHudTilemapB, (void *)0x06006C00, 0x800); DmaCopy16(3, gRayquazaIntroSprite_Gfx, (void *)0x06010000, 0x8000); break; case FIELD_SPHEAL: - DmaCopy16(3, gUnknown_0837A2E8, (void *)BG_PLTT, BG_PLTT_SIZE); - LZ77UnCompWram(gUnknown_08302700, gUnknown_0200FBB0); - DmaCopy16(3, gUnknown_0200FBB0, (void *)0x06004000, 0x4000); - LZ77UnCompWram(gUnknown_0838E828, gUnknown_0200FBB0); - DmaCopy16(3, gUnknown_0200FBB0, (void *)0x06008000, 0x8000); - DmaCopy16(3, gUnknown_0837A4E8, (void *)0x06000000, 0x800); - DmaCopy16(3, gUnknown_0838E028, (void *)0x06000800, 0x800); - DmaCopy16(3, gUnknown_083A8ACC, (void *)0x06006800, 0x400); - DmaCopy16(3, gUnknown_083A826C, (void *)0x06006C00, 0x800); - DmaCopy16(3, gUnknown_084779EC, (void *)0x06010000, 0x8000); + DmaCopy16(3, gSphealBoardPalette, (void *)BG_PLTT, BG_PLTT_SIZE); + LZ77UnCompWram(gBonusFieldCompressedBaseTiles, gBoardGfxBuffer); + DmaCopy16(3, gBoardGfxBuffer, (void *)0x06004000, 0x4000); + LZ77UnCompWram(gSphealBoardCompressedBGTiles, gBoardGfxBuffer); + DmaCopy16(3, gBoardGfxBuffer, (void *)0x06008000, 0x8000); + DmaCopy16(3, gSphealWaterBackgroundTilemap, (void *)0x06000000, 0x800); + DmaCopy16(3, gSphealBoardBG1Tilemap, (void *)0x06000800, 0x800); + DmaCopy16(3, gBoardHudTilemapA, (void *)0x06006800, 0x400); + DmaCopy16(3, gBoardHudTilemapB, (void *)0x06006C00, 0x800); + DmaCopy16(3, gSphealIntroSprites_Gfx, (void *)0x06010000, 0x8000); break; } - gUnknown_02031520.unk68 = gUnknown_0816C3E4; + gBoardConfig.flipperCollisionData = gFlipperCollisionData; } -void sub_46FD4(s16 arg0) +void SetBoardCollisionConfig(s16 arg0) { - gUnknown_02031520.unk14.unk38[0] = gUnknown_086AFCB0[gMain.selectedField][arg0].unk0; - gUnknown_02031520.unk14.unk48[0] = gUnknown_086AFCB0[gMain.selectedField][arg0].unk10; - gUnknown_02031520.unk14.unk58[0] = gUnknown_086AFCB0[gMain.selectedField][arg0].unk20; + gBoardConfig.fieldLayout.collisionTileMap[0] = gBoardCollisionDataSets[gMain.selectedField][arg0].tileData; + gBoardConfig.fieldLayout.collisionAngleMap[0] = gBoardCollisionDataSets[gMain.selectedField][arg0].angleData; + gBoardConfig.fieldLayout.collisionTypeMap[0] = gBoardCollisionDataSets[gMain.selectedField][arg0].typeData; } -void sub_47030(void) +void UpdateScrollingBackgroundTiles(void) { s16 r4; const s16 *r3; r4 = gMain.bgOffsets[3].yOffset / 8; - r3 = gUnknown_086B0010[r4]; - if (r4 == gCurrentPinballGame->unk64) + r3 = gScrollTileUpdateTable[r4]; + if (r4 == gCurrentPinballGame->ballLaunchSpeed) return; - if (r4 > gCurrentPinballGame->unk64) + if (r4 > gCurrentPinballGame->ballLaunchSpeed) { if (r3[0] > 31) { - DmaCopy16(3, &gUnknown_020030A0[(r3[0] - 32) * 0x400], (void *)0x06008000 + r3[1] * 0x400, 0x400); + DmaCopy16(3, &gBoardBGTileBufferAlt[(r3[0] - 32) * 0x400], (void *)0x06008000 + r3[1] * 0x400, 0x400); } else { - DmaCopy16(3, &gUnknown_0200FBB0[r3[0] * 0x400], (void *)0x06008000 + r3[1] * 0x400, 0x400); + DmaCopy16(3, &gBoardGfxBuffer[r3[0] * 0x400], (void *)0x06008000 + r3[1] * 0x400, 0x400); } } else { if (r3[2] > 31) { - DmaCopy16(3, &gUnknown_020030A0[(r3[2] - 32) * 0x400], (void *)0x06008000 + r3[3] * 0x400, 0x400); + DmaCopy16(3, &gBoardBGTileBufferAlt[(r3[2] - 32) * 0x400], (void *)0x06008000 + r3[3] * 0x400, 0x400); } else { - DmaCopy16(3, &gUnknown_0200FBB0[r3[2] * 0x400], (void *)0x06008000 + r3[3] * 0x400, 0x400); + DmaCopy16(3, &gBoardGfxBuffer[r3[2] * 0x400], (void *)0x06008000 + r3[3] * 0x400, 0x400); } } - gCurrentPinballGame->unk64 = r4; + gCurrentPinballGame->ballLaunchSpeed = r4; } diff --git a/src/rom_4F258.c b/src/rom_4F258.c index 42b9584..dee6a64 100644 --- a/src/rom_4F258.c +++ b/src/rom_4F258.c @@ -3,83 +3,83 @@ #include "main.h" #include "constants/bg_music.h" -extern const u8 *gUnknown_086B0B70[][3]; -extern const u16 gUnknown_086B0E20[]; -extern const u8 *gUnknown_086B0B94[][4]; -extern const u8 *gUnknown_086B0B20[][4]; -extern const u8 *gUnknown_086B0AF0[][4]; -extern const u8 *gUnknown_086B0AC0[][4]; -extern const u8 *gUnknown_086B0A90[][4]; -extern const u8 *gUnknown_086B0BC4[][4]; -extern const u8 *gUnknown_086B09E8[][7][2]; -extern const u8 *gUnknown_086B09C8[][2]; -extern const u8 *gUnknown_086B0970[][2]; -extern const u8 *gUnknown_086B094C[][3]; -extern const s16 gUnknown_086B08CA[]; -extern const u8 *gUnknown_086B08D4[][3][5]; +extern const u8 *gRubyBallPowerUpLightTilePointers[][3]; +extern const u16 gBallShadowTileIndices[]; +extern const u8 *gRubyCatchProgressArrowTilePointers[][4]; +extern const u8 *gRubyRouletteSlotTilePointers[][4]; +extern const u8 *gRubyEvoArrowTilePointers[][4]; +extern const u8 *gRubyCatchArrowTilePointers[][4]; +extern const u8 *gRubyModeTimerTilePointers[][4]; +extern const u8 *gRubyHoleIndicatorTilePointers[][4]; +extern const u8 *gRubyCatchLightTilePointers[][7][2]; +extern const u8 *gRubyTrapIndicatorTilePointers[][2]; +extern const u8 *gRubyProgressDigitTilePointers[][2]; +extern const u8 *gShopItemTilePointers[][3]; +extern const s16 gRubySlingshotAnimIndices[]; +extern const u8 *gRubySlingshotTilePointers[][3][5]; extern struct SongHeader se_unk_87; -void sub_4E814(void) +void UpdateRubyBoardAnimations(void) { - gCurrentPinballGame->unk734 = (gCurrentPinballGame->unk70C % 40) / 20; - gCurrentPinballGame->unk70C++; - sub_4EA44(); - if (gCurrentPinballGame->unk6A < 232) + gCurrentPinballGame->hudBlinkPhase = (gCurrentPinballGame->hudAnimFrameCounter % 40) / 20; + gCurrentPinballGame->hudAnimFrameCounter++; + DrawRubyProgressDigits(); + if (gCurrentPinballGame->hudSpriteBaseY < 232) { - sub_4EDC0(); - sub_4EE74(); + AnimateRubyCatchArrow(); + AnimateRubyEvoArrow(); } - if (gCurrentPinballGame->unk6A >= 81 && gCurrentPinballGame->unk6A < 248) - sub_4EF38(); + if (gCurrentPinballGame->hudSpriteBaseY >= 81 && gCurrentPinballGame->hudSpriteBaseY < 248) + AnimateRubyRouletteSlot(); - sub_4F0F0(); - if (gCurrentPinballGame->unk6A < 112) - sub_4F258(); + AnimateRubyBallPowerUpSequence(); + if (gCurrentPinballGame->hudSpriteBaseY < 112) + DrawRubyBallPowerUpLights(); - if (gCurrentPinballGame->unk6A > 112) - sub_4F028(); + if (gCurrentPinballGame->hudSpriteBaseY > 112) + AnimateRubyCatchProgressArrow(); - if (gCurrentPinballGame->unk6A > 104) + if (gCurrentPinballGame->hudSpriteBaseY > 104) { - sub_4F4B4(); - sub_4F660(); + DrawEvoArrowProgress(); + DrawCatchArrowProgress(); } - if (gCurrentPinballGame->unk6A < 256) - sub_4F30C(); + if (gCurrentPinballGame->hudSpriteBaseY < 256) + DrawCoinRewardMeter(); - sub_4F2B8(); - if (gCurrentPinballGame->unk6A > 110) - sub_4EAB0(); + UpdateCoinRewardTimer(); + if (gCurrentPinballGame->hudSpriteBaseY > 110) + AnimateRubyTrapIndicator(); - if (gCurrentPinballGame->unk6A > 178) + if (gCurrentPinballGame->hudSpriteBaseY > 178) { - sub_4EAF8(); - sub_4EBD0(); - sub_4E920(); + AnimateRubyCatchLightBlink(); + AnimateRubyHoleIndicators(); + AnimateRubySlingshotTimer(); } - if (gCurrentPinballGame->unk6A > 202) - sub_4ECDC(); + if (gCurrentPinballGame->hudSpriteBaseY > 202) + DrawRubyModeTimerDisplay(); - if (gCurrentPinballGame->unk724 && gCurrentPinballGame->unk25 == 0) - gCurrentPinballGame->unk724--; + if (gCurrentPinballGame->modeTimeRemaining && gCurrentPinballGame->ballCatchState == 0) + gCurrentPinballGame->modeTimeRemaining--; } -void sub_4E920(void) +void AnimateRubySlingshotTimer(void) { s16 index; const u8 **src; const u8 **dest; - index = gUnknown_086B08CA[gCurrentPinballGame->unk716]; - if (gCurrentPinballGame->unk716) + index = gRubySlingshotAnimIndices[gCurrentPinballGame->slingshotHitAnimTimer]; + if (gCurrentPinballGame->slingshotHitAnimTimer) { - gCurrentPinballGame->unk716--; - if (gCurrentPinballGame->unk716 == 3) + gCurrentPinballGame->slingshotHitAnimTimer--; + if (gCurrentPinballGame->slingshotHitAnimTimer == 3) { m4aSongNumStart(SE_SLINGSHOT_HIT); gCurrentPinballGame->scoreAddedInFrame = 500; @@ -87,8 +87,8 @@ void sub_4E920(void) } } - src = gUnknown_086B08D4[gCurrentPinballGame->unk717][index]; - dest = gUnknown_086B08D4[gCurrentPinballGame->unk717][2]; + src = gRubySlingshotTilePointers[gCurrentPinballGame->slingshotSideIndex][index]; + dest = gRubySlingshotTilePointers[gCurrentPinballGame->slingshotSideIndex][2]; DmaCopy16(3, src[0], dest[0], 0x20); DmaCopy16(3, src[1], dest[1], 0x40); DmaCopy16(3, src[2], dest[2], 0x60); @@ -96,82 +96,82 @@ void sub_4E920(void) DmaCopy16(3, src[4], dest[4], 0x40); } -void sub_4E9F0(s16 arg0) +void LoadShopItemGraphics(s16 arg0) { const u8 **src; const u8 **dest; - src = gUnknown_086B094C[arg0]; - dest = gUnknown_086B094C[2]; + src = gShopItemTilePointers[arg0]; + dest = gShopItemTilePointers[2]; DmaCopy16(3, src[0], dest[0], 0xC0); DmaCopy16(3, src[1], dest[1], 0xC0); DmaCopy16(3, src[2], dest[2], 0x20); } -void sub_4EA44(void) +void DrawRubyProgressDigits(void) { s16 var0, var1; const u8 **src; const u8 **dest; - var0 = gCurrentPinballGame->unk70E / 10; - var1 = gCurrentPinballGame->unk70E % 10; - src = gUnknown_086B0970[var0]; - dest = gUnknown_086B0970[10]; + var0 = gCurrentPinballGame->progressLevel / 10; + var1 = gCurrentPinballGame->progressLevel % 10; + src = gRubyProgressDigitTilePointers[var0]; + dest = gRubyProgressDigitTilePointers[10]; DmaCopy16(3, src[0], dest[0], 0x20); - src = gUnknown_086B0970[var1]; + src = gRubyProgressDigitTilePointers[var1]; DmaCopy16(3, src[1], dest[1], 0x20); } -void sub_4EAB0(void) +void AnimateRubyTrapIndicator(void) { const u8 **src; const u8 **dest; - src = gUnknown_086B09C8[gCurrentPinballGame->unk730]; - dest = gUnknown_086B09C8[3]; + src = gRubyTrapIndicatorTilePointers[gCurrentPinballGame->trapAnimState]; + dest = gRubyTrapIndicatorTilePointers[3]; DmaCopy16(3, src[0], dest[0], 0x40); DmaCopy16(3, src[1], dest[1], 0x40); } -void sub_4EAF8(void) +void AnimateRubyCatchLightBlink(void) { s16 i; const u8 **src; const u8 **dest; - if (gCurrentPinballGame->unk720) + if (gCurrentPinballGame->evoBlinkTimer) { - gCurrentPinballGame->unk71D[gCurrentPinballGame->unk721] = 1 - (gCurrentPinballGame->unk720 % 36) / 18; - gCurrentPinballGame->unk71D[gCurrentPinballGame->unk722] = gCurrentPinballGame->unk71D[gCurrentPinballGame->unk721]; - gCurrentPinballGame->unk720--; + gCurrentPinballGame->catchLights[gCurrentPinballGame->evoCatchLightSlot1] = 1 - (gCurrentPinballGame->evoBlinkTimer % 36) / 18; + gCurrentPinballGame->catchLights[gCurrentPinballGame->evoCatchLightSlot2] = gCurrentPinballGame->catchLights[gCurrentPinballGame->evoCatchLightSlot1]; + gCurrentPinballGame->evoBlinkTimer--; } for (i = 0; i < 3; i++) { - src = gUnknown_086B09E8[i][gCurrentPinballGame->unk71D[i]]; - dest = gUnknown_086B09E8[i][6]; + src = gRubyCatchLightTilePointers[i][gCurrentPinballGame->catchLights[i]]; + dest = gRubyCatchLightTilePointers[i][6]; DmaCopy16(3, src[0], dest[0], 0x40); DmaCopy16(3, src[1], dest[1], 0x40); } } -void sub_4EBD0(void) +void AnimateRubyHoleIndicators(void) { s16 i; const u8 **src; const u8 **dest; - if (gCurrentPinballGame->unk714) + if (gCurrentPinballGame->allHolesLit) { - if (gCurrentPinballGame->unk715) + if (gCurrentPinballGame->allHolesLitBlinkTimer) { - gCurrentPinballGame->holeIndicators[0] = (gCurrentPinballGame->unk715 % 36) / 18; + gCurrentPinballGame->holeIndicators[0] = (gCurrentPinballGame->allHolesLitBlinkTimer % 36) / 18; gCurrentPinballGame->holeIndicators[1] = gCurrentPinballGame->holeIndicators[0]; gCurrentPinballGame->holeIndicators[2] = gCurrentPinballGame->holeIndicators[0]; gCurrentPinballGame->holeIndicators[3] = gCurrentPinballGame->holeIndicators[0]; - gCurrentPinballGame->unk715--; + gCurrentPinballGame->allHolesLitBlinkTimer--; } else { @@ -184,106 +184,106 @@ void sub_4EBD0(void) for (i = 0; i < 4; i++) { - src = &gUnknown_086B0BC4[i][gCurrentPinballGame->holeIndicators[i]]; - dest = &gUnknown_086B0BC4[i][2]; + src = &gRubyHoleIndicatorTilePointers[i][gCurrentPinballGame->holeIndicators[i]]; + dest = &gRubyHoleIndicatorTilePointers[i][2]; DmaCopy16(3, *src, *dest, 0x40); } } -void sub_4ECDC(void) +void DrawRubyModeTimerDisplay(void) { const u8 **src; const u8 **dest; - if (gCurrentPinballGame->unk724 > 300) + if (gCurrentPinballGame->modeTimeRemaining > 300) { - gCurrentPinballGame->unk726 = 1; + gCurrentPinballGame->modeTimerDisplayIndex = 1; } else { - if (gCurrentPinballGame->unk724) + if (gCurrentPinballGame->modeTimeRemaining) { - if (gCurrentPinballGame->unk25) - gCurrentPinballGame->unk726 = 1; + if (gCurrentPinballGame->ballCatchState) + gCurrentPinballGame->modeTimerDisplayIndex = 1; else - gCurrentPinballGame->unk726 = (gMain.fieldFrameCount % 16) / 8; + gCurrentPinballGame->modeTimerDisplayIndex = (gMain.fieldFrameCount % 16) / 8; } else { - gCurrentPinballGame->unk726 = 0; + gCurrentPinballGame->modeTimerDisplayIndex = 0; } } - src = gUnknown_086B0A90[gCurrentPinballGame->unk726]; - dest = gUnknown_086B0A90[2]; + src = gRubyModeTimerTilePointers[gCurrentPinballGame->modeTimerDisplayIndex]; + dest = gRubyModeTimerTilePointers[2]; DmaCopy16(3, src[0], dest[0], 0xC0); DmaCopy16(3, src[1], dest[1], 0xC0); - if (gCurrentPinballGame->unk6A >= 216) + if (gCurrentPinballGame->hudSpriteBaseY >= 216) { DmaCopy16(3, src[2], dest[2], 0xA0); DmaCopy16(3, src[3], dest[3], 0x40); } } -void sub_4EDC0(void) +void AnimateRubyCatchArrow(void) { s16 index; const u8 **src; const u8 **dest; index = 0; - if (gCurrentPinballGame->unk728 > 0) - index = 1 - gCurrentPinballGame->unk734; + if (gCurrentPinballGame->catchArrowPaletteActive > 0) + index = 1 - gCurrentPinballGame->hudBlinkPhase; - src = gUnknown_086B0AC0[index]; - dest = gUnknown_086B0AC0[2]; - if (gCurrentPinballGame->unk6A > 48) + src = gRubyCatchArrowTilePointers[index]; + dest = gRubyCatchArrowTilePointers[2]; + if (gCurrentPinballGame->hudSpriteBaseY > 48) { - if (gCurrentPinballGame->unk6A < 216) + if (gCurrentPinballGame->hudSpriteBaseY < 216) { DmaCopy16(3, src[0], dest[0], 0x80); } - if (gCurrentPinballGame->unk6A < 224) + if (gCurrentPinballGame->hudSpriteBaseY < 224) { DmaCopy16(3, src[1], dest[1], 0x80); } } - if (gCurrentPinballGame->unk6A > 64) + if (gCurrentPinballGame->hudSpriteBaseY > 64) { DmaCopy16(3, src[2], dest[2], 0x80); DmaCopy16(3, src[3], dest[3], 0x80); } } -void sub_4EE74(void) +void AnimateRubyEvoArrow(void) { s16 index; const u8 **src; const u8 **dest; index = 0; - if (gCurrentPinballGame->unk729 > 0) - index = 1 - gCurrentPinballGame->unk734; + if (gCurrentPinballGame->evoArrowPaletteActive > 0) + index = 1 - gCurrentPinballGame->hudBlinkPhase; - src = gUnknown_086B0AF0[index]; - dest = gUnknown_086B0AF0[2]; - if (gCurrentPinballGame->unk6A > 40) + src = gRubyEvoArrowTilePointers[index]; + dest = gRubyEvoArrowTilePointers[2]; + if (gCurrentPinballGame->hudSpriteBaseY > 40) { - if (gCurrentPinballGame->unk6A < 208) + if (gCurrentPinballGame->hudSpriteBaseY < 208) { DmaCopy16(3, src[0], dest[0], 0x40); } - if (gCurrentPinballGame->unk6A < 216) + if (gCurrentPinballGame->hudSpriteBaseY < 216) { DmaCopy16(3, src[1], dest[1], 0x80); } } - if (gCurrentPinballGame->unk6A > 56) + if (gCurrentPinballGame->hudSpriteBaseY > 56) { - if (gCurrentPinballGame->unk6A < 224) + if (gCurrentPinballGame->hudSpriteBaseY < 224) { DmaCopy16(3, src[2], dest[2], 0x80); } @@ -292,55 +292,55 @@ void sub_4EE74(void) } } -void sub_4EF38(void) +void AnimateRubyRouletteSlot(void) { s16 index; const u8 **src; const u8 **dest; index = 0; - if (gCurrentPinballGame->unk2F0 > 2) - gCurrentPinballGame->unk72A = 1; - else if (gCurrentPinballGame->unk13) - gCurrentPinballGame->unk72A = 0; + if (gCurrentPinballGame->shopDoorTargetFrame > 2) + gCurrentPinballGame->rouletteSlotActive = 1; + else if (gCurrentPinballGame->boardState) + gCurrentPinballGame->rouletteSlotActive = 0; - if (gCurrentPinballGame->unk72A > 0) - index = gCurrentPinballGame->unk1A5 * 2 + 1 - gCurrentPinballGame->unk734; + if (gCurrentPinballGame->rouletteSlotActive > 0) + index = gCurrentPinballGame->evolutionShopActive * 2 + 1 - gCurrentPinballGame->hudBlinkPhase; else - index = gCurrentPinballGame->unk1A5 * 2; + index = gCurrentPinballGame->evolutionShopActive * 2; - src = gUnknown_086B0B20[index]; - dest = gUnknown_086B0B20[4]; - if (gCurrentPinballGame->unk6A < 240) + src = gRubyRouletteSlotTilePointers[index]; + dest = gRubyRouletteSlotTilePointers[4]; + if (gCurrentPinballGame->hudSpriteBaseY < 240) { DmaCopy16(3, src[0], dest[0], 0xA0); } DmaCopy16(3, src[1], dest[1], 0xA0); DmaCopy16(3, src[2], dest[2], 0xA0); - if (gCurrentPinballGame->unk6A > 88) + if (gCurrentPinballGame->hudSpriteBaseY > 88) { DmaCopy16(3, src[3], dest[3], 0x60); } } -void sub_4F028(void) +void AnimateRubyCatchProgressArrow(void) { s16 index; const u8 **src; const u8 **dest; index = 0; - gCurrentPinballGame->unk731 = 0; - if (gCurrentPinballGame->unk72F > 1 && gCurrentPinballGame->unk13 < 3) - gCurrentPinballGame->unk731 = 1; + gCurrentPinballGame->catchProgressFlashing = 0; + if (gCurrentPinballGame->catchArrowProgress > 1 && gCurrentPinballGame->boardState < 3) + gCurrentPinballGame->catchProgressFlashing = 1; - if (gCurrentPinballGame->unk731 > 0) - index = 1 - gCurrentPinballGame->unk734; + if (gCurrentPinballGame->catchProgressFlashing > 0) + index = 1 - gCurrentPinballGame->hudBlinkPhase; - src = gUnknown_086B0B94[index]; - dest = gUnknown_086B0B94[2]; - if (gCurrentPinballGame->unk6A < 264) + src = gRubyCatchProgressArrowTilePointers[index]; + dest = gRubyCatchProgressArrowTilePointers[2]; + if (gCurrentPinballGame->hudSpriteBaseY < 264) { DmaCopy16(3, src[0], dest[0], 0x40); } @@ -349,61 +349,61 @@ void sub_4F028(void) DmaCopy16(3, src[3], dest[3], 0x80); } -void sub_4F0F0(void) +void AnimateRubyBallPowerUpSequence(void) { - if (gCurrentPinballGame->unk71B == 0) + if (gCurrentPinballGame->ballPowerUpAnimActive == 0) return; - if (gCurrentPinballGame->unk71C) + if (gCurrentPinballGame->ballShadowTimer) { - if (gCurrentPinballGame->unk2F8 == 0) + if (gCurrentPinballGame->ballPowerUpOverride == 0) { gCurrentPinballGame->ballPowerUpLight[0] = (gMain.fieldFrameCount % 20) / 10; gCurrentPinballGame->ballPowerUpLight[1] = gCurrentPinballGame->ballPowerUpLight[0]; gCurrentPinballGame->ballPowerUpLight[2] = gCurrentPinballGame->ballPowerUpLight[0]; } - if (gCurrentPinballGame->unk71C == 28) + if (gCurrentPinballGame->ballShadowTimer == 28) { if (gCurrentPinballGame->ballUpgradeType < BALL_UPGRADE_TYPE_MASTER_BALL) gCurrentPinballGame->ballUpgradeType++; gCurrentPinballGame->ballUpgradeCounter = 3600; - DmaCopy16(3, gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], (void *)0x05000220, 0x20); + DmaCopy16(3, gBallPalettes[gCurrentPinballGame->ballUpgradeType], (void *)0x05000220, 0x20); } - if (gCurrentPinballGame->unk71C == 40) + if (gCurrentPinballGame->ballShadowTimer == 40) MPlayStart(&gMPlayInfo_SE1, &se_unk_87); - if (gCurrentPinballGame->unk71C == 60) - gMain.unk44[43]->available = 1; + if (gCurrentPinballGame->ballShadowTimer == 60) + gMain.fieldSpriteGroups[43]->available = 1; - gCurrentPinballGame->unk6E = gUnknown_086B0E20[30 - gCurrentPinballGame->unk71C / 2]; - gCurrentPinballGame->unk71C--; + gCurrentPinballGame->ballShadowTileIndex = gBallShadowTileIndices[30 - gCurrentPinballGame->ballShadowTimer / 2]; + gCurrentPinballGame->ballShadowTimer--; } else { - gCurrentPinballGame->unk71B = 0; - if (gCurrentPinballGame->unk2F8 == 0) + gCurrentPinballGame->ballPowerUpAnimActive = 0; + if (gCurrentPinballGame->ballPowerUpOverride == 0) { gCurrentPinballGame->ballPowerUpLight[0] = gCurrentPinballGame->ballPowerUpLight[1] = gCurrentPinballGame->ballPowerUpLight[2] = 0; } - gCurrentPinballGame->unk2F8 = 0; + gCurrentPinballGame->ballPowerUpOverride = 0; } } -void sub_4F258(void) +void DrawRubyBallPowerUpLights(void) { s16 i; const u8 **src; const u8 **dest; for (i = 0; i < 3; i++) { - src = &gUnknown_086B0B70[i][gCurrentPinballGame->ballPowerUpLight[i]]; - dest = &gUnknown_086B0B70[i][2]; + src = &gRubyBallPowerUpLightTilePointers[i][gCurrentPinballGame->ballPowerUpLight[i]]; + dest = &gRubyBallPowerUpLightTilePointers[i][2]; DmaCopy16(3, *src, *dest, 0x40); } } diff --git a/src/rom_50AD4.c b/src/rom_50AD4.c index c387cd6..b93e39b 100644 --- a/src/rom_50AD4.c +++ b/src/rom_50AD4.c @@ -3,69 +3,69 @@ #include "main.h" #include "constants/bg_music.h" -extern const u8 *gUnknown_086B0E6C[][2]; -extern const u8 *gUnknown_086B0F9C[][3][2]; -extern const u8 *gUnknown_086B12AC[][3]; -extern const u8 *gUnknown_086B125C[][4]; -extern const u8 *gUnknown_086B12D0[][4]; -extern const u8 *gUnknown_086B14A8[][5][3]; -extern const u8 *gUnknown_086B1340[][5][3]; -extern const u8 *gUnknown_086B122C[][4]; -extern const u8 *gUnknown_086B11FC[][4]; -extern const u8 *gUnknown_086B13F4[][5][3]; -extern const u8 *gUnknown_086B11CC[][4]; -extern const u8 *gUnknown_086B1300[][4]; -extern const u8 *gUnknown_086B1124[][7][2]; -extern const u8 *gUnknown_086B0F4C[][4]; -extern const u8 *gUnknown_086B1104[][2]; -extern const u16 gUnknown_086B0E60[]; -extern const u8 *gUnknown_086B108C[][3][5]; -extern const u8 *gUnknown_086B0E9C[][4]; -extern const u8 *gUnknown_086B0D6C[][5][3]; -extern const u8 *gUnknown_086B0C04[][5][3]; -extern const u8 *gUnknown_086B0CB8[][5][3]; -extern const s16 gUnknown_086B08C4[]; +extern const u8 *gBumperHitCounterTilePtrs[][2]; +extern const u8 *gBonusModeIndicatorTilePtrs[][3][2]; +extern const u8 *gSapphireBallPowerUpLightTilePtrs[][3]; +extern const u8 *gSapphireRouletteSlotTilePtrs[][4]; +extern const u8 *gSapphireCatchFlashTilePtrs[][4]; +extern const u8 *gSapphireCatchArrowBonusTilePtrs[][5][3]; +extern const u8 *gSapphireEvoArrowBonusTilePtrs[][5][3]; +extern const u8 *gSapphireEvoArrowPaletteTilePtrs[][4]; +extern const u8 *gSapphireCatchArrowPaletteTilePtrs[][4]; +extern const u8 *gSapphireCoinRewardAltTilePtrs[][5][3]; +extern const u8 *gSapphireModeTimerDisplayTilePtrs[][4]; +extern const u8 *gSapphireHoleIndicatorTilePtrs[][4]; +extern const u8 *gSapphireCatchLightTilePtrs[][7][2]; +extern const u8 *gRotatingBackgroundTilePtrs[][4]; +extern const u8 *gSapphireTrapIndicatorTilePtrs[][2]; +extern const u16 gSlingshotHitFrameIndices[]; +extern const u8 *gSapphireSlingshotTilePtrs[][3][5]; +extern const u8 *gSapphireProgressDigitTilePtrs[][4]; +extern const u8 *gSapphireCatchArrowTilePtrs[][5][3]; +extern const u8 *gSapphireEvoArrowTilePtrs[][5][3]; +extern const u8 *gSapphireCoinRewardTilePtrs[][5][3]; +extern const s16 gCoinRewardLevelTimerThresholds[]; -void sub_4F2B8(void) +void UpdateCoinRewardTimer(void) { - if (gCurrentPinballGame->unk72B > 0) + if (gCurrentPinballGame->coinRewardLevel > 0) { - if (gCurrentPinballGame->unk72C < gUnknown_086B08C4[gCurrentPinballGame->unk72B - 1]) + if (gCurrentPinballGame->coinRewardLevelTimer < gCoinRewardLevelTimerThresholds[gCurrentPinballGame->coinRewardLevel - 1]) { - gCurrentPinballGame->unk72C++; + gCurrentPinballGame->coinRewardLevelTimer++; } else { - gCurrentPinballGame->unk72C = 0; - gCurrentPinballGame->unk72B--; + gCurrentPinballGame->coinRewardLevelTimer = 0; + gCurrentPinballGame->coinRewardLevel--; } } } -void sub_4F30C(void) +void DrawCoinRewardMeter(void) { s16 sp0[3]; const u8 **src; const u8 **dest; - if (gCurrentPinballGame->unk72B == 0) + if (gCurrentPinballGame->coinRewardLevel == 0) { - sp0[0] = gCurrentPinballGame->unk734 * 2; - sp0[1] = gCurrentPinballGame->unk734; + sp0[0] = gCurrentPinballGame->hudBlinkPhase * 2; + sp0[1] = gCurrentPinballGame->hudBlinkPhase; sp0[2] = 0; } - else if (gCurrentPinballGame->unk72B == 1) + else if (gCurrentPinballGame->coinRewardLevel == 1) { sp0[0] = 3; - sp0[1] = gCurrentPinballGame->unk734 + 1; - sp0[2] = gCurrentPinballGame->unk734 * 2; + sp0[1] = gCurrentPinballGame->hudBlinkPhase + 1; + sp0[2] = gCurrentPinballGame->hudBlinkPhase * 2; } - else if (gCurrentPinballGame->unk72B == 2) + else if (gCurrentPinballGame->coinRewardLevel == 2) { sp0[0] = 3; sp0[1] = 3; - sp0[2] = gCurrentPinballGame->unk734 + 2; + sp0[2] = gCurrentPinballGame->hudBlinkPhase + 2; } else { @@ -74,73 +74,73 @@ void sub_4F30C(void) sp0[2] = 3; } - src = gUnknown_086B0CB8[0][sp0[0]]; - dest = gUnknown_086B0CB8[0][4]; - if (gCurrentPinballGame->unk6A >= 42 && gCurrentPinballGame->unk6A < 208) + src = gSapphireCoinRewardTilePtrs[0][sp0[0]]; + dest = gSapphireCoinRewardTilePtrs[0][4]; + if (gCurrentPinballGame->hudSpriteBaseY >= 42 && gCurrentPinballGame->hudSpriteBaseY < 208) { DmaCopy16(3, src[0], dest[0], 0x60); } - if (gCurrentPinballGame->unk6A >= 50 && gCurrentPinballGame->unk6A < 216) + if (gCurrentPinballGame->hudSpriteBaseY >= 50 && gCurrentPinballGame->hudSpriteBaseY < 216) { DmaCopy16(3, src[1], dest[1], 0x60); } - src = gUnknown_086B0CB8[1][sp0[1]]; - dest = gUnknown_086B0CB8[1][4]; - if (gCurrentPinballGame->unk6A >= 58 && gCurrentPinballGame->unk6A < 224) + src = gSapphireCoinRewardTilePtrs[1][sp0[1]]; + dest = gSapphireCoinRewardTilePtrs[1][4]; + if (gCurrentPinballGame->hudSpriteBaseY >= 58 && gCurrentPinballGame->hudSpriteBaseY < 224) { DmaCopy16(3, src[0], dest[0], 0x60); } - if (gCurrentPinballGame->unk6A >= 66 && gCurrentPinballGame->unk6A < 232) + if (gCurrentPinballGame->hudSpriteBaseY >= 66 && gCurrentPinballGame->hudSpriteBaseY < 232) { DmaCopy16(3, src[1], dest[1], 0x60); } - src = gUnknown_086B0CB8[2][sp0[2]]; - dest = gUnknown_086B0CB8[2][4]; - if (gCurrentPinballGame->unk6A >= 74 && gCurrentPinballGame->unk6A < 240) + src = gSapphireCoinRewardTilePtrs[2][sp0[2]]; + dest = gSapphireCoinRewardTilePtrs[2][4]; + if (gCurrentPinballGame->hudSpriteBaseY >= 74 && gCurrentPinballGame->hudSpriteBaseY < 240) { DmaCopy16(3, src[0], dest[0], 0x60); } - if (gCurrentPinballGame->unk6A >= 82 && gCurrentPinballGame->unk6A < 248) + if (gCurrentPinballGame->hudSpriteBaseY >= 82 && gCurrentPinballGame->hudSpriteBaseY < 248) { DmaCopy16(3, src[1], dest[1], 0x60); } - if (gCurrentPinballGame->unk6A >= 90) + if (gCurrentPinballGame->hudSpriteBaseY >= 90) { DmaCopy16(3, src[2], dest[2], 0x60); } } -void sub_4F4B4(void) +void DrawEvoArrowProgress(void) { s16 sp0[3]; const u8 **src; const u8 **dest; - if (gCurrentPinballGame->unk13 < 3) + if (gCurrentPinballGame->boardState < 3) { - if (gCurrentPinballGame->unk72E == 0) + if (gCurrentPinballGame->evoArrowProgress == 0) { - sp0[0] = gCurrentPinballGame->unk734 * 2; + sp0[0] = gCurrentPinballGame->hudBlinkPhase * 2; sp0[1] = 0; sp0[2] = 0; } - else if (gCurrentPinballGame->unk72E == 1) + else if (gCurrentPinballGame->evoArrowProgress == 1) { sp0[0] = 3; - sp0[1] = gCurrentPinballGame->unk734 + 1; - sp0[2] = gCurrentPinballGame->unk734 * 2; + sp0[1] = gCurrentPinballGame->hudBlinkPhase + 1; + sp0[2] = gCurrentPinballGame->hudBlinkPhase * 2; } - else if (gCurrentPinballGame->unk72E == 2) + else if (gCurrentPinballGame->evoArrowProgress == 2) { sp0[0] = 3; sp0[1] = 3; - sp0[2] = gCurrentPinballGame->unk734 + 2; + sp0[2] = gCurrentPinballGame->hudBlinkPhase + 2; } else { @@ -151,14 +151,14 @@ void sub_4F4B4(void) } else { - sp0[0] = gCurrentPinballGame->unk739[0]; - sp0[1] = gCurrentPinballGame->unk739[1]; - sp0[2] = gCurrentPinballGame->unk739[2]; + sp0[0] = gCurrentPinballGame->prevTravelArrowTiles[0]; + sp0[1] = gCurrentPinballGame->prevTravelArrowTiles[1]; + sp0[2] = gCurrentPinballGame->prevTravelArrowTiles[2]; } - src = gUnknown_086B0C04[0][sp0[0]]; - dest = gUnknown_086B0C04[0][4]; - if (gCurrentPinballGame->unk6A < 264) + src = gSapphireEvoArrowTilePtrs[0][sp0[0]]; + dest = gSapphireEvoArrowTilePtrs[0][4]; + if (gCurrentPinballGame->hudSpriteBaseY < 264) { DmaCopy16(3, src[0], dest[0], 0x60); } @@ -166,50 +166,50 @@ void sub_4F4B4(void) DmaCopy16(3, src[1], dest[1], 0x60); DmaCopy16(3, src[2], dest[2], 0x60); - if (gCurrentPinballGame->unk6A > 120) + if (gCurrentPinballGame->hudSpriteBaseY > 120) { - src = gUnknown_086B0C04[1][sp0[1]]; - dest = gUnknown_086B0C04[1][4]; + src = gSapphireEvoArrowTilePtrs[1][sp0[1]]; + dest = gSapphireEvoArrowTilePtrs[1][4]; DmaCopy16(3, src[0], dest[0], 0x60); DmaCopy16(3, src[1], dest[1], 0x60); DmaCopy16(3, src[2], dest[2], 0x60); } - if (gCurrentPinballGame->unk6A > 136) + if (gCurrentPinballGame->hudSpriteBaseY > 136) { - src = gUnknown_086B0C04[2][sp0[2]]; - dest = gUnknown_086B0C04[2][4]; + src = gSapphireEvoArrowTilePtrs[2][sp0[2]]; + dest = gSapphireEvoArrowTilePtrs[2][4]; DmaCopy16(3, src[0], dest[0], 0x60); DmaCopy16(3, src[1], dest[1], 0x60); DmaCopy16(3, src[2], dest[2], 0x60); } } -void sub_4F660(void) +void DrawCatchArrowProgress(void) { s16 sp0[3]; const u8 **src; const u8 **dest; - if (gCurrentPinballGame->unk13 < 3) + if (gCurrentPinballGame->boardState < 3) { - if (gCurrentPinballGame->unk72F == 0) + if (gCurrentPinballGame->catchArrowProgress == 0) { - sp0[0] = gCurrentPinballGame->unk734 * 2; + sp0[0] = gCurrentPinballGame->hudBlinkPhase * 2; sp0[1] = 0; sp0[2] = 0; } - else if (gCurrentPinballGame->unk72F == 1) + else if (gCurrentPinballGame->catchArrowProgress == 1) { sp0[0] = 3; - sp0[1] = gCurrentPinballGame->unk734 + 1; - sp0[2] = gCurrentPinballGame->unk734 * 2; + sp0[1] = gCurrentPinballGame->hudBlinkPhase + 1; + sp0[2] = gCurrentPinballGame->hudBlinkPhase * 2; } - else if (gCurrentPinballGame->unk72F == 2) + else if (gCurrentPinballGame->catchArrowProgress == 2) { sp0[0] = 3; sp0[1] = 3; - sp0[2] = (s16) gCurrentPinballGame->unk734 + 2; + sp0[2] = (s16) gCurrentPinballGame->hudBlinkPhase + 2; } else { @@ -220,14 +220,14 @@ void sub_4F660(void) } else { - sp0[0] = gCurrentPinballGame->unk736[0]; - sp0[1] = gCurrentPinballGame->unk736[1]; - sp0[2] = gCurrentPinballGame->unk736[2]; + sp0[0] = gCurrentPinballGame->travelArrowTiles[0]; + sp0[1] = gCurrentPinballGame->travelArrowTiles[1]; + sp0[2] = gCurrentPinballGame->travelArrowTiles[2]; } - src = gUnknown_086B0D6C[0][sp0[0]]; - dest = gUnknown_086B0D6C[0][4]; - if (gCurrentPinballGame->unk6A < 264) + src = gSapphireCatchArrowTilePtrs[0][sp0[0]]; + dest = gSapphireCatchArrowTilePtrs[0][4]; + if (gCurrentPinballGame->hudSpriteBaseY < 264) { DmaCopy16(3, src[0], dest[0], 0x60); } @@ -235,115 +235,115 @@ void sub_4F660(void) DmaCopy16(3, src[1], dest[1], 0x60); DmaCopy16(3, src[2], dest[2], 0x60); - if (gCurrentPinballGame->unk6A > 120) + if (gCurrentPinballGame->hudSpriteBaseY > 120) { - src = gUnknown_086B0D6C[1][sp0[1]]; - dest = gUnknown_086B0D6C[1][4]; + src = gSapphireCatchArrowTilePtrs[1][sp0[1]]; + dest = gSapphireCatchArrowTilePtrs[1][4]; DmaCopy16(3, src[0], dest[0], 0x40); DmaCopy16(3, src[1], dest[1], 0x40); DmaCopy16(3, src[2], dest[2], 0x60); } - if (gCurrentPinballGame->unk6A > 136) + if (gCurrentPinballGame->hudSpriteBaseY > 136) { - src = gUnknown_086B0D6C[2][sp0[2]]; - dest = gUnknown_086B0D6C[2][4]; + src = gSapphireCatchArrowTilePtrs[2][sp0[2]]; + dest = gSapphireCatchArrowTilePtrs[2][4]; DmaCopy16(3, src[0], dest[0], 0x40); DmaCopy16(3, src[1], dest[1], 0x60); DmaCopy16(3, src[2], dest[2], 0x60); } } -void sub_4F814(void) +void UpdateSapphireBoardAnimations(void) { - gCurrentPinballGame->unk734 = (gCurrentPinballGame->unk70C % 40) / 20; - gCurrentPinballGame->unk70C++; - sub_50710(); - if (gCurrentPinballGame->unk6A > 83) - sub_50000(); + gCurrentPinballGame->hudBlinkPhase = (gCurrentPinballGame->hudAnimFrameCounter % 40) / 20; + gCurrentPinballGame->hudAnimFrameCounter++; + AnimateBonusModeIndicators(); + if (gCurrentPinballGame->hudSpriteBaseY > 83) + AnimateSapphireCatchArrowPalette(); - if (gCurrentPinballGame->unk6A > 18) - sub_500B4(); + if (gCurrentPinballGame->hudSpriteBaseY > 18) + AnimateSapphireEvoArrowPalette(); - if (gCurrentPinballGame->unk6A >= 56 && gCurrentPinballGame->unk6A < 243) - sub_505A4(); + if (gCurrentPinballGame->hudSpriteBaseY >= 56 && gCurrentPinballGame->hudSpriteBaseY < 243) + AnimateSapphireRouletteSlot(); - sub_4F0F0(); - if (gCurrentPinballGame->unk6A < 112) - sub_506B0(); + AnimateRubyBallPowerUpSequence(); + if (gCurrentPinballGame->hudSpriteBaseY < 112) + DrawBallPowerUpLights(); - if (gCurrentPinballGame->unk6A >= 64 && gCurrentPinballGame->unk6A < 254) - sub_504C0(); + if (gCurrentPinballGame->hudSpriteBaseY >= 64 && gCurrentPinballGame->hudSpriteBaseY < 254) + AnimateCatchArrowPaletteFlash(); - if (gCurrentPinballGame->unk6A >= 27 && gCurrentPinballGame->unk6A < 211) + if (gCurrentPinballGame->hudSpriteBaseY >= 27 && gCurrentPinballGame->hudSpriteBaseY < 211) { - sub_4FB08(); - sub_4F95C(); + AnimateRotatingBackground(); + DrawSapphireProgressDigits(); } - if (gCurrentPinballGame->unk6A > 104) + if (gCurrentPinballGame->hudSpriteBaseY > 104) { - sub_50154(); - sub_5030C(); + DrawEvoArrowBonusField(); + DrawCatchArrowBonusField(); } - if (gCurrentPinballGame->unk6A > 72) - sub_4FE6C(); + if (gCurrentPinballGame->hudSpriteBaseY > 72) + DrawCoinRewardMeterAlt(); - sub_4F2B8(); - if (gCurrentPinballGame->unk6A > 110) - sub_4FAC0(); + UpdateCoinRewardTimer(); + if (gCurrentPinballGame->hudSpriteBaseY > 110) + AnimateSapphireTrapIndicator(); - if (gCurrentPinballGame->unk6A > 178) + if (gCurrentPinballGame->hudSpriteBaseY > 178) { - sub_4FBA4(); - sub_4FC7C(); - sub_4F9F0(); + AnimateSapphireCatchLightBlink(); + AnimateSapphireHoleIndicators(); + AnimateSapphireSlingshotHit(); } - if (gCurrentPinballGame->unk6A > 202) - sub_4FD88(); + if (gCurrentPinballGame->hudSpriteBaseY > 202) + DrawSapphireModeTimerDisplay(); - if (gCurrentPinballGame->unk6A >= 8 && gCurrentPinballGame->unk6A < 182) - sub_507D4(); + if (gCurrentPinballGame->hudSpriteBaseY >= 8 && gCurrentPinballGame->hudSpriteBaseY < 182) + AnimateBumperHitCounter(); - if (gCurrentPinballGame->unk724 && gCurrentPinballGame->unk25 == 0) - gCurrentPinballGame->unk724--; + if (gCurrentPinballGame->modeTimeRemaining && gCurrentPinballGame->ballCatchState == 0) + gCurrentPinballGame->modeTimeRemaining--; } -void sub_4F95C(void) +void DrawSapphireProgressDigits(void) { s16 var0, var1; const u8 **src; const u8 **dest; - var0 = gCurrentPinballGame->unk70E / 10; - var1 = gCurrentPinballGame->unk70E % 10; - if (gCurrentPinballGame->unk6A > 36) + var0 = gCurrentPinballGame->progressLevel / 10; + var1 = gCurrentPinballGame->progressLevel % 10; + if (gCurrentPinballGame->hudSpriteBaseY > 36) { - src = gUnknown_086B0E9C[var0]; - dest = gUnknown_086B0E9C[10]; + src = gSapphireProgressDigitTilePtrs[var0]; + dest = gSapphireProgressDigitTilePtrs[10]; DmaCopy16(3, src[0], dest[0], 0x20); DmaCopy16(3, src[1], dest[1], 0x20); - src = gUnknown_086B0E9C[var1]; + src = gSapphireProgressDigitTilePtrs[var1]; DmaCopy16(3, src[2], dest[2], 0x20); DmaCopy16(3, src[3], dest[3], 0x20); } } -void sub_4F9F0(void) +void AnimateSapphireSlingshotHit(void) { s16 var0; const u8 **src; const u8 **dest; - var0 = gUnknown_086B0E60[gCurrentPinballGame->unk716]; - if (gCurrentPinballGame->unk716) + var0 = gSlingshotHitFrameIndices[gCurrentPinballGame->slingshotHitAnimTimer]; + if (gCurrentPinballGame->slingshotHitAnimTimer) { - gCurrentPinballGame->unk716--; - if (gCurrentPinballGame->unk716 == 3) + gCurrentPinballGame->slingshotHitAnimTimer--; + if (gCurrentPinballGame->slingshotHitAnimTimer == 3) { m4aSongNumStart(SE_SLINGSHOT_HIT); gCurrentPinballGame->scoreAddedInFrame = 500; @@ -351,8 +351,8 @@ void sub_4F9F0(void) } } - src = gUnknown_086B108C[gCurrentPinballGame->unk717][var0]; - dest = gUnknown_086B108C[gCurrentPinballGame->unk717][2]; + src = gSapphireSlingshotTilePtrs[gCurrentPinballGame->slingshotSideIndex][var0]; + dest = gSapphireSlingshotTilePtrs[gCurrentPinballGame->slingshotSideIndex][2]; DmaCopy16(3, src[0], dest[0], 0x20); DmaCopy16(3, src[1], dest[1], 0x40); DmaCopy16(3, src[2], dest[2], 0x60); @@ -360,35 +360,35 @@ void sub_4F9F0(void) DmaCopy16(3, src[4], dest[4], 0x40); } -void sub_4FAC0(void) +void AnimateSapphireTrapIndicator(void) { const u8 **src; const u8 **dest; - src = gUnknown_086B1104[gCurrentPinballGame->unk730]; - dest = gUnknown_086B1104[3]; + src = gSapphireTrapIndicatorTilePtrs[gCurrentPinballGame->trapAnimState]; + dest = gSapphireTrapIndicatorTilePtrs[3]; DmaCopy16(3, src[0], dest[0], 0x40); DmaCopy16(3, src[1], dest[1], 0x40); } -void sub_4FB08(void) +void AnimateRotatingBackground(void) { const u8 **src; const u8 **dest; - src = gUnknown_086B0F4C[(gMain.systemFrameCount % 64) / 16]; - dest = gUnknown_086B0F4C[4]; - if (gCurrentPinballGame->unk6A < 192) + src = gRotatingBackgroundTilePtrs[(gMain.systemFrameCount % 64) / 16]; + dest = gRotatingBackgroundTilePtrs[4]; + if (gCurrentPinballGame->hudSpriteBaseY < 192) { DmaCopy16(3, src[0], dest[0], 0x40); } - if (gCurrentPinballGame->unk6A < 200) + if (gCurrentPinballGame->hudSpriteBaseY < 200) { DmaCopy16(3, src[1], dest[1], 0x80); } - if (gCurrentPinballGame->unk6A < 208) + if (gCurrentPinballGame->hudSpriteBaseY < 208) { DmaCopy16(3, src[2], dest[2], 0x60); } @@ -396,43 +396,43 @@ void sub_4FB08(void) DmaCopy16(3, src[3], dest[3], 0x60); } -void sub_4FBA4(void) +void AnimateSapphireCatchLightBlink(void) { s16 i; const u8 **src; const u8 **dest; - if (gCurrentPinballGame->unk720) + if (gCurrentPinballGame->evoBlinkTimer) { - gCurrentPinballGame->unk71D[gCurrentPinballGame->unk721] = 1 - (gCurrentPinballGame->unk720 % 36) / 18; - gCurrentPinballGame->unk71D[gCurrentPinballGame->unk722] = gCurrentPinballGame->unk71D[gCurrentPinballGame->unk721]; - gCurrentPinballGame->unk720--; + gCurrentPinballGame->catchLights[gCurrentPinballGame->evoCatchLightSlot1] = 1 - (gCurrentPinballGame->evoBlinkTimer % 36) / 18; + gCurrentPinballGame->catchLights[gCurrentPinballGame->evoCatchLightSlot2] = gCurrentPinballGame->catchLights[gCurrentPinballGame->evoCatchLightSlot1]; + gCurrentPinballGame->evoBlinkTimer--; } for (i = 0; i < 3; i++) { - src = gUnknown_086B1124[i][gCurrentPinballGame->unk71D[i]]; - dest = gUnknown_086B1124[i][6]; + src = gSapphireCatchLightTilePtrs[i][gCurrentPinballGame->catchLights[i]]; + dest = gSapphireCatchLightTilePtrs[i][6]; DmaCopy16(3, src[0], dest[0], 0x40); DmaCopy16(3, src[1], dest[1], 0x40); } } -void sub_4FC7C(void) +void AnimateSapphireHoleIndicators(void) { s16 i; const u8 **src; const u8 **dest; - if (gCurrentPinballGame->unk714) + if (gCurrentPinballGame->allHolesLit) { - if (gCurrentPinballGame->unk715) + if (gCurrentPinballGame->allHolesLitBlinkTimer) { - gCurrentPinballGame->holeIndicators[0] = (gCurrentPinballGame->unk715 % 36) / 18; + gCurrentPinballGame->holeIndicators[0] = (gCurrentPinballGame->allHolesLitBlinkTimer % 36) / 18; gCurrentPinballGame->holeIndicators[1] = gCurrentPinballGame->holeIndicators[0]; gCurrentPinballGame->holeIndicators[2] = gCurrentPinballGame->holeIndicators[0]; gCurrentPinballGame->holeIndicators[3] = gCurrentPinballGame->holeIndicators[0]; - gCurrentPinballGame->unk715--; + gCurrentPinballGame->allHolesLitBlinkTimer--; } else { @@ -445,67 +445,67 @@ void sub_4FC7C(void) for (i = 0; i < 4; i++) { - src = &gUnknown_086B1300[i][gCurrentPinballGame->holeIndicators[i]]; - dest = &gUnknown_086B1300[i][2]; + src = &gSapphireHoleIndicatorTilePtrs[i][gCurrentPinballGame->holeIndicators[i]]; + dest = &gSapphireHoleIndicatorTilePtrs[i][2]; DmaCopy16(3, *src, *dest, 0x40); } } -void sub_4FD88(void) +void DrawSapphireModeTimerDisplay(void) { const u8 **src; const u8 **dest; - if (gCurrentPinballGame->unk724 > 300) + if (gCurrentPinballGame->modeTimeRemaining > 300) { - gCurrentPinballGame->unk726 = 1; + gCurrentPinballGame->modeTimerDisplayIndex = 1; } - else if (gCurrentPinballGame->unk724) + else if (gCurrentPinballGame->modeTimeRemaining) { - if (gCurrentPinballGame->unk25) - gCurrentPinballGame->unk726 = 1; + if (gCurrentPinballGame->ballCatchState) + gCurrentPinballGame->modeTimerDisplayIndex = 1; else - gCurrentPinballGame->unk726 = (gMain.fieldFrameCount & 0xF) / 8; + gCurrentPinballGame->modeTimerDisplayIndex = (gMain.fieldFrameCount & 0xF) / 8; } else { - gCurrentPinballGame->unk726 = 0; + gCurrentPinballGame->modeTimerDisplayIndex = 0; } - src = gUnknown_086B11CC[gCurrentPinballGame->unk726]; - dest = gUnknown_086B11CC[2]; + src = gSapphireModeTimerDisplayTilePtrs[gCurrentPinballGame->modeTimerDisplayIndex]; + dest = gSapphireModeTimerDisplayTilePtrs[2]; DmaCopy16(3, src[0], dest[0], 0xE0); DmaCopy16(3, src[1], dest[1], 0xE0); - if (gCurrentPinballGame->unk6A > 215) + if (gCurrentPinballGame->hudSpriteBaseY > 215) { DmaCopy16(3, src[2], dest[2], 0xC0); DmaCopy16(3, src[3], dest[3], 0x40); } } -void sub_4FE6C(void) +void DrawCoinRewardMeterAlt(void) { s16 sp0[3]; const u8 **src; const u8 **dest; - if (gCurrentPinballGame->unk72B == 0) + if (gCurrentPinballGame->coinRewardLevel == 0) { - sp0[0] = gCurrentPinballGame->unk734; + sp0[0] = gCurrentPinballGame->hudBlinkPhase; sp0[1] = 0; sp0[2] = 0; } - else if (gCurrentPinballGame->unk72B == 1) + else if (gCurrentPinballGame->coinRewardLevel == 1) { sp0[0] = 1; - sp0[1] = gCurrentPinballGame->unk734; - sp0[2] = gCurrentPinballGame->unk734; + sp0[1] = gCurrentPinballGame->hudBlinkPhase; + sp0[2] = gCurrentPinballGame->hudBlinkPhase; } - else if (gCurrentPinballGame->unk72B == 2) + else if (gCurrentPinballGame->coinRewardLevel == 2) { sp0[0] = 2; sp0[1] = 2; - sp0[2] = gCurrentPinballGame->unk734 + 1; + sp0[2] = gCurrentPinballGame->hudBlinkPhase + 1; } else { @@ -514,131 +514,131 @@ void sub_4FE6C(void) sp0[2] = 2; } - src = gUnknown_086B13F4[0][sp0[0]]; - dest = gUnknown_086B13F4[0][3]; - if (gCurrentPinballGame->unk6A < 240) + src = gSapphireCoinRewardAltTilePtrs[0][sp0[0]]; + dest = gSapphireCoinRewardAltTilePtrs[0][3]; + if (gCurrentPinballGame->hudSpriteBaseY < 240) { DmaCopy16(3, src[0], dest[0], 0x40); } - if (gCurrentPinballGame->unk6A < 248) + if (gCurrentPinballGame->hudSpriteBaseY < 248) { DmaCopy16(3, src[1], dest[1], 0x60); } - if (gCurrentPinballGame->unk6A > 88) + if (gCurrentPinballGame->hudSpriteBaseY > 88) { - src = gUnknown_086B13F4[1][sp0[1]]; - dest = gUnknown_086B13F4[1][3]; - if (gCurrentPinballGame->unk6A < 254) + src = gSapphireCoinRewardAltTilePtrs[1][sp0[1]]; + dest = gSapphireCoinRewardAltTilePtrs[1][3]; + if (gCurrentPinballGame->hudSpriteBaseY < 254) { DmaCopy16(3, src[0], dest[0], 0x40); } - if (gCurrentPinballGame->unk6A < 262) + if (gCurrentPinballGame->hudSpriteBaseY < 262) { DmaCopy16(3, src[1], dest[1], 0x40); } } - if (gCurrentPinballGame->unk6A > 96) + if (gCurrentPinballGame->hudSpriteBaseY > 96) { - src = gUnknown_086B13F4[2][sp0[2]]; - dest = gUnknown_086B13F4[2][3]; - if (gCurrentPinballGame->unk6A < 264) + src = gSapphireCoinRewardAltTilePtrs[2][sp0[2]]; + dest = gSapphireCoinRewardAltTilePtrs[2][3]; + if (gCurrentPinballGame->hudSpriteBaseY < 264) { DmaCopy16(3, src[0], dest[0], 0x40); } DmaCopy16(3, src[1], dest[1], 0x40); - if (gCurrentPinballGame->unk6A > 104) + if (gCurrentPinballGame->hudSpriteBaseY > 104) { DmaCopy16(3, src[2], dest[2], 0x40); } } } -void sub_50000(void) +void AnimateSapphireCatchArrowPalette(void) { s16 index; const u8 **src; const u8 **dest; index = 0; - if (gCurrentPinballGame->unk728 > 0) - index = 1 - gCurrentPinballGame->unk734; + if (gCurrentPinballGame->catchArrowPaletteActive > 0) + index = 1 - gCurrentPinballGame->hudBlinkPhase; - src = gUnknown_086B11FC[index]; - dest = gUnknown_086B11FC[2]; - if (gCurrentPinballGame->unk6A < 256) + src = gSapphireCatchArrowPaletteTilePtrs[index]; + dest = gSapphireCatchArrowPaletteTilePtrs[2]; + if (gCurrentPinballGame->hudSpriteBaseY < 256) { DmaCopy16(3, src[0], dest[0], 0x40); } - if (gCurrentPinballGame->unk6A >= 97 && gCurrentPinballGame->unk6A < 264) + if (gCurrentPinballGame->hudSpriteBaseY >= 97 && gCurrentPinballGame->hudSpriteBaseY < 264) { DmaCopy16(3, src[1], dest[1], 0x80); } - if (gCurrentPinballGame->unk6A > 0x67) + if (gCurrentPinballGame->hudSpriteBaseY > 0x67) { DmaCopy16(3, src[2], dest[2], 0x80); DmaCopy16(3, src[3], dest[3], 0x80); } } -void sub_500B4(void) +void AnimateSapphireEvoArrowPalette(void) { s16 index; const u8 **src; const u8 **dest; index = 0; - if (gCurrentPinballGame->unk729 > 0) - index = 1 - gCurrentPinballGame->unk734; + if (gCurrentPinballGame->evoArrowPaletteActive > 0) + index = 1 - gCurrentPinballGame->hudBlinkPhase; - src = gUnknown_086B122C[index]; - dest = gUnknown_086B122C[2]; - if (gCurrentPinballGame->unk6A < 195) + src = gSapphireEvoArrowPaletteTilePtrs[index]; + dest = gSapphireEvoArrowPaletteTilePtrs[2]; + if (gCurrentPinballGame->hudSpriteBaseY < 195) { DmaCopy16(3, src[1], dest[1], 0x80); } - if (gCurrentPinballGame->unk6A > 30) + if (gCurrentPinballGame->hudSpriteBaseY > 30) { DmaCopy16(3, src[2], dest[2], 0x80); } - if (gCurrentPinballGame->unk6A > 38) + if (gCurrentPinballGame->hudSpriteBaseY > 38) { DmaCopy16(3, src[3], dest[3], 0x80); } } -void sub_50154(void) +void DrawEvoArrowBonusField(void) { s16 sp0[3]; const u8 **src; const u8 **dest; - if (gCurrentPinballGame->unk13 < 3) + if (gCurrentPinballGame->boardState < 3) { - if (gCurrentPinballGame->unk72E == 0) + if (gCurrentPinballGame->evoArrowProgress == 0) { - sp0[0] = gCurrentPinballGame->unk734 * 2; - sp0[1] = gCurrentPinballGame->unk734; + sp0[0] = gCurrentPinballGame->hudBlinkPhase * 2; + sp0[1] = gCurrentPinballGame->hudBlinkPhase; sp0[2] = 0; } - else if (gCurrentPinballGame->unk72E == 1) + else if (gCurrentPinballGame->evoArrowProgress == 1) { sp0[0] = 3; - sp0[1] = gCurrentPinballGame->unk734 + 1; - sp0[2] = gCurrentPinballGame->unk734 * 2; + sp0[1] = gCurrentPinballGame->hudBlinkPhase + 1; + sp0[2] = gCurrentPinballGame->hudBlinkPhase * 2; } - else if (gCurrentPinballGame->unk72E == 2) + else if (gCurrentPinballGame->evoArrowProgress == 2) { sp0[0] = 3; sp0[1] = 3; - sp0[2] = gCurrentPinballGame->unk734 + 2; + sp0[2] = gCurrentPinballGame->hudBlinkPhase + 2; } else { @@ -649,64 +649,64 @@ void sub_50154(void) } else { - sp0[0] = gCurrentPinballGame->unk739[0]; - sp0[1] = gCurrentPinballGame->unk739[1]; - sp0[2] = gCurrentPinballGame->unk739[2]; + sp0[0] = gCurrentPinballGame->prevTravelArrowTiles[0]; + sp0[1] = gCurrentPinballGame->prevTravelArrowTiles[1]; + sp0[2] = gCurrentPinballGame->prevTravelArrowTiles[2]; } - src = gUnknown_086B1340[0][sp0[0]]; - dest = gUnknown_086B1340[0][4]; - if (gCurrentPinballGame->unk6A < 264) + src = gSapphireEvoArrowBonusTilePtrs[0][sp0[0]]; + dest = gSapphireEvoArrowBonusTilePtrs[0][4]; + if (gCurrentPinballGame->hudSpriteBaseY < 264) { DmaCopy16(3, src[0], dest[0], 0x60); } DmaCopy16(3, src[1], dest[1], 0x60); DmaCopy16(3, src[2], dest[2], 0x60); - if (gCurrentPinballGame->unk6A > 120) + if (gCurrentPinballGame->hudSpriteBaseY > 120) { - src = gUnknown_086B1340[1][sp0[1]]; - dest = gUnknown_086B1340[1][4]; + src = gSapphireEvoArrowBonusTilePtrs[1][sp0[1]]; + dest = gSapphireEvoArrowBonusTilePtrs[1][4]; DmaCopy16(3, src[0], dest[0], 0x60); DmaCopy16(3, src[1], dest[1], 0x60); DmaCopy16(3, src[2], dest[2], 0x60); } - if (gCurrentPinballGame->unk6A > 136) { - src = gUnknown_086B1340[2][sp0[2]]; - dest = gUnknown_086B1340[2][4]; + if (gCurrentPinballGame->hudSpriteBaseY > 136) { + src = gSapphireEvoArrowBonusTilePtrs[2][sp0[2]]; + dest = gSapphireEvoArrowBonusTilePtrs[2][4]; DmaCopy16(3, src[0], dest[0], 0x60); DmaCopy16(3, src[1], dest[1], 0x60); DmaCopy16(3, src[2], dest[2], 0x40); } } -void sub_5030C(void) +void DrawCatchArrowBonusField(void) { s16 sp0[3]; const u8 **src; const u8 **dest; - if (gCurrentPinballGame->unk13 < 3) + if (gCurrentPinballGame->boardState < 3) { - if (gCurrentPinballGame->unk72F == 0) + if (gCurrentPinballGame->catchArrowProgress == 0) { - sp0[0] = gCurrentPinballGame->unk734 * 2; + sp0[0] = gCurrentPinballGame->hudBlinkPhase * 2; sp0[1] = 0; sp0[2] = 0; } - else if (gCurrentPinballGame->unk72F == 1) + else if (gCurrentPinballGame->catchArrowProgress == 1) { sp0[0] = 3; - sp0[1] = gCurrentPinballGame->unk734 + 1; - sp0[2] = gCurrentPinballGame->unk734 * 2; + sp0[1] = gCurrentPinballGame->hudBlinkPhase + 1; + sp0[2] = gCurrentPinballGame->hudBlinkPhase * 2; } - else if (gCurrentPinballGame->unk72F == 2) + else if (gCurrentPinballGame->catchArrowProgress == 2) { sp0[0] = 3; sp0[1] = 3; - sp0[2] = (s16) gCurrentPinballGame->unk734 + 2; + sp0[2] = (s16) gCurrentPinballGame->hudBlinkPhase + 2; } else { @@ -717,14 +717,14 @@ void sub_5030C(void) } else { - sp0[0] = gCurrentPinballGame->unk736[0]; - sp0[1] = gCurrentPinballGame->unk736[1]; - sp0[2] = gCurrentPinballGame->unk736[2]; + sp0[0] = gCurrentPinballGame->travelArrowTiles[0]; + sp0[1] = gCurrentPinballGame->travelArrowTiles[1]; + sp0[2] = gCurrentPinballGame->travelArrowTiles[2]; } - src = gUnknown_086B14A8[0][sp0[0]]; - dest = gUnknown_086B14A8[0][4]; - if (gCurrentPinballGame->unk6A < 264) + src = gSapphireCatchArrowBonusTilePtrs[0][sp0[0]]; + dest = gSapphireCatchArrowBonusTilePtrs[0][4]; + if (gCurrentPinballGame->hudSpriteBaseY < 264) { DmaCopy16(3, src[0], dest[0], 0x60); } @@ -732,55 +732,55 @@ void sub_5030C(void) DmaCopy16(3, src[1], dest[1], 0x60); DmaCopy16(3, src[2], dest[2], 0x60); - if (gCurrentPinballGame->unk6A > 120) + if (gCurrentPinballGame->hudSpriteBaseY > 120) { - src = gUnknown_086B14A8[1][sp0[1]]; - dest = gUnknown_086B14A8[1][4]; + src = gSapphireCatchArrowBonusTilePtrs[1][sp0[1]]; + dest = gSapphireCatchArrowBonusTilePtrs[1][4]; DmaCopy16(3, src[0], dest[0], 0x40); DmaCopy16(3, src[1], dest[1], 0x40); DmaCopy16(3, src[2], dest[2], 0x60); } - if (gCurrentPinballGame->unk6A > 136) + if (gCurrentPinballGame->hudSpriteBaseY > 136) { - src = gUnknown_086B14A8[2][sp0[2]]; - dest = gUnknown_086B14A8[2][4]; + src = gSapphireCatchArrowBonusTilePtrs[2][sp0[2]]; + dest = gSapphireCatchArrowBonusTilePtrs[2][4]; DmaCopy16(3, src[0], dest[0], 0x40); DmaCopy16(3, src[1], dest[1], 0x60); DmaCopy16(3, src[2], dest[2], 0x40); } } -void sub_504C0(void) +void AnimateCatchArrowPaletteFlash(void) { s16 index; const u8 **src; const u8 **dest; index = 0; - gCurrentPinballGame->unk731 = 0; - if (gCurrentPinballGame->unk72F > 1 && gCurrentPinballGame->unk13 < 3) - gCurrentPinballGame->unk731 = 1; + gCurrentPinballGame->catchProgressFlashing = 0; + if (gCurrentPinballGame->catchArrowProgress > 1 && gCurrentPinballGame->boardState < 3) + gCurrentPinballGame->catchProgressFlashing = 1; - if (gCurrentPinballGame->unk731 > 0) - index = 1 - gCurrentPinballGame->unk734; + if (gCurrentPinballGame->catchProgressFlashing > 0) + index = 1 - gCurrentPinballGame->hudBlinkPhase; - src = gUnknown_086B12D0[index]; - dest = gUnknown_086B12D0[2]; - if (gCurrentPinballGame->unk6A < 232) + src = gSapphireCatchFlashTilePtrs[index]; + dest = gSapphireCatchFlashTilePtrs[2]; + if (gCurrentPinballGame->hudSpriteBaseY < 232) { DmaCopy16(3, src[0], dest[0], 0x60); } - if (gCurrentPinballGame->unk6A < 240) + if (gCurrentPinballGame->hudSpriteBaseY < 240) { DmaCopy16(3, src[1], dest[1], 0x80); } - if (gCurrentPinballGame->unk6A >= 80) + if (gCurrentPinballGame->hudSpriteBaseY >= 80) { - if (gCurrentPinballGame->unk6A < 248) + if (gCurrentPinballGame->hudSpriteBaseY < 248) { DmaCopy16(3, src[2], dest[2], 0x80); } @@ -789,39 +789,39 @@ void sub_504C0(void) } } -void sub_505A4(void) +void AnimateSapphireRouletteSlot(void) { s16 index; const u8 **src; const u8 **dest; index = 0; - if (gCurrentPinballGame->unk366 == 3) - gCurrentPinballGame->unk72A = 1; - else if (gCurrentPinballGame->unk13) - gCurrentPinballGame->unk72A = 0; + if (gCurrentPinballGame->shopShockWallAnimState == 3) + gCurrentPinballGame->rouletteSlotActive = 1; + else if (gCurrentPinballGame->boardState) + gCurrentPinballGame->rouletteSlotActive = 0; - if (gCurrentPinballGame->unk72A > 0) - index = gCurrentPinballGame->unk1A5 * 2 + 1 - gCurrentPinballGame->unk734; + if (gCurrentPinballGame->rouletteSlotActive > 0) + index = gCurrentPinballGame->evolutionShopActive * 2 + 1 - gCurrentPinballGame->hudBlinkPhase; else - index = gCurrentPinballGame->unk1A5 * 2; + index = gCurrentPinballGame->evolutionShopActive * 2; - src = gUnknown_086B125C[index]; - dest = gUnknown_086B125C[4]; - if (gCurrentPinballGame->unk6A < 224) + src = gSapphireRouletteSlotTilePtrs[index]; + dest = gSapphireRouletteSlotTilePtrs[4]; + if (gCurrentPinballGame->hudSpriteBaseY < 224) { DmaCopy16(3, src[0], dest[0], 0x80); } - if (gCurrentPinballGame->unk6A < 232) + if (gCurrentPinballGame->hudSpriteBaseY < 232) { DmaCopy16(3, src[1], dest[1], 0x80); } - if (gCurrentPinballGame->unk6A > 71) + if (gCurrentPinballGame->hudSpriteBaseY > 71) { - if (gCurrentPinballGame->unk6A < 240) + if (gCurrentPinballGame->hudSpriteBaseY < 240) { DmaCopy16(3, src[2], dest[2], 0x80); } @@ -830,35 +830,35 @@ void sub_505A4(void) } } -void sub_506B0(void) +void DrawBallPowerUpLights(void) { s16 i; for (i = 0; i < 3; i++) { - const u8 **src = &gUnknown_086B12AC[i][gCurrentPinballGame->ballPowerUpLight[i]]; - const u8 **dest = &gUnknown_086B12AC[i][2]; + const u8 **src = &gSapphireBallPowerUpLightTilePtrs[i][gCurrentPinballGame->ballPowerUpLight[i]]; + const u8 **dest = &gSapphireBallPowerUpLightTilePtrs[i][2]; DmaCopy16(3, *src, *dest, 0x40); } } -void sub_50710(void) +void AnimateBonusModeIndicators(void) { s16 i; s16 srcIndex; const u8 **src; const u8 **dest; - if (gCurrentPinballGame->unk346 != 3) + if (gCurrentPinballGame->holeLetterSystemState != 3) { for (i = 0; i < 10; i++) { - if (gCurrentPinballGame->unk34B[i] > 0) + if (gCurrentPinballGame->targetBumperAnimTimers[i] > 0) { - if (gCurrentPinballGame->unk34B[i] == 10) + if (gCurrentPinballGame->targetBumperAnimTimers[i] == 10) m4aSongNumStart(SE_UNKNOWN_0xDC); - gCurrentPinballGame->unk34B[i]--; + gCurrentPinballGame->targetBumperAnimTimers[i]--; srcIndex = 1; } else @@ -866,15 +866,15 @@ void sub_50710(void) srcIndex = 0; } - src = gUnknown_086B0F9C[i][srcIndex]; - dest = gUnknown_086B0F9C[i][2]; + src = gBonusModeIndicatorTilePtrs[i][srcIndex]; + dest = gBonusModeIndicatorTilePtrs[i][2]; DmaCopy16(3, src[0], dest[0], 0x40); DmaCopy16(3, src[1], dest[1], 0x40); } } } -void sub_507D4(void) +void AnimateBumperHitCounter(void) { s16 index; const u8 **src; @@ -882,11 +882,11 @@ void sub_507D4(void) index = 0; if (gCurrentPinballGame->bumperHitsSinceReset >= 100) - index = (gCurrentPinballGame->unk70C % 20) / 4; + index = (gCurrentPinballGame->hudAnimFrameCounter % 20) / 4; - src = gUnknown_086B0E6C[index]; - dest = gUnknown_086B0E6C[5]; - if (gCurrentPinballGame->unk6A < 176) + src = gBumperHitCounterTilePtrs[index]; + dest = gBumperHitCounterTilePtrs[5]; + if (gCurrentPinballGame->hudSpriteBaseY < 176) { DmaCopy16(3, src[0], dest[0], 0x40); } diff --git a/src/rom_850.c b/src/rom_850.c index cd820e9..a8a24b4 100644 --- a/src/rom_850.c +++ b/src/rom_850.c @@ -14,7 +14,7 @@ u16 IsInVblank(void) void SetMainCallback(void (*func)(void)) { - gUnknown_02017BD4 = func; + gMainCallbackShadow = func; if (!IsInVblank()) gMainCallback = func; } @@ -22,12 +22,12 @@ void SetMainCallback(void (*func)(void)) void ResetMainCallback(void) { gMainCallback = DefaultMainCallback; - gUnknown_02017BD4 = DefaultMainCallback; + gMainCallbackShadow = DefaultMainCallback; } void SetVBlankIntrFunc(void (*func)(void)) { - gUnknown_02017BD0 = func; + gVBlankIntrFuncShadow = func; if (!IsInVblank()) *gVBlankIntrFuncPtr = func; } @@ -35,12 +35,12 @@ void SetVBlankIntrFunc(void (*func)(void)) void ResetVBlankIntrFunc(void) { *gVBlankIntrFuncPtr = VBlankIntr; - gUnknown_02017BD0 = VBlankIntr; + gVBlankIntrFuncShadow = VBlankIntr; } void SetVCountIntrFunc(void (*func)(void)) { - gUnknown_0200FBA0 = func; + gVCountIntrFuncShadow = func; if (!IsInVblank()) *gVCountIntrFuncPtr = func; } @@ -48,6 +48,6 @@ void SetVCountIntrFunc(void (*func)(void)) void ResetVCountIntrFunc(void) { *gVCountIntrFuncPtr = VCountIntr; - gUnknown_0200FBA0 = VCountIntr; + gVCountIntrFuncShadow = VCountIntr; } diff --git a/src/save.c b/src/save.c index 3b30854..e9b0dc1 100644 --- a/src/save.c +++ b/src/save.c @@ -9,14 +9,14 @@ static bool16 LoadSaveDataFromSram(void); void SaveFile_LoadGameData(void) { SetSramFastFunc(); - gMain.unkC = 0; + gMain.sramError = 0; if (LoadSaveDataFromSram() == FALSE) { ResetSaveFile(); SaveFile_WriteToSram(); if (LoadSaveDataFromSram() == FALSE) { - gMain.unkC = 1; + gMain.sramError = 1; ResetSaveFile(); } } @@ -77,7 +77,7 @@ void SaveFile_WriteToSram(void) u16 *saveData = (u16 *)&gMain_saveData; size_t size = sizeof(gMain_saveData); - gMain_saveData.unk2E4++; + gMain_saveData.saveChangeCounter++; gMain_saveData.checksum = 0; checksum = 0; @@ -103,7 +103,7 @@ void SaveFile_SetPokedexFlags(s16 species, u8 flag) if (gMain_saveData.pokedexFlags[species] < flag) { - gMain_saveData.unk2E4++; + gMain_saveData.saveChangeCounter++; gMain_saveData.pokedexFlags[species] = flag; gMain_saveData.checksum = 0; @@ -135,7 +135,7 @@ void ResetSaveFile(void) for (i = 0; i < 10; i++) gMain_saveData.signature[i] = gSaveFileSignature[i]; - gMain_saveData.unk2E4 = 0; + gMain_saveData.saveChangeCounter = 0; gMain_saveData.rumbleEnabled = FALSE; gMain_saveData.ballSpeed = 0; SetButtonConfigInputs(BUTTON_CONFIG_RESET); diff --git a/src/titlescreen.c b/src/titlescreen.c index 5b29b50..d0c3a0a 100644 --- a/src/titlescreen.c +++ b/src/titlescreen.c @@ -6,8 +6,8 @@ #include "constants/bg_music.h" static void TitleScreen_CheckDeleteKeyComboPressed(void); -static void sub_1157C(void); -static void sub_11640(void); +static void CheckEReaderAccessCombo(void); +static void RenderTitlePressStartSprites(void); // If the user doesn't press any buttons at the title screen, // it will transition to a demo gameplay experience. @@ -40,7 +40,7 @@ void LoadTitlescreenGraphics(void) { int autoDisplayMenu; - ResetSomeGraphicsRelatedStuff(); + ResetDisplayState(); REG_DISPCNT = DISPCNT_OBJ_ON| DISPCNT_FORCED_BLANK; REG_BG1CNT = BGCNT_256COLOR | BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(0); REG_DISPCNT |= DISPCNT_BG1_ON; @@ -71,18 +71,18 @@ void LoadTitlescreenGraphics(void) autoDisplayMenu = gAutoDisplayTitlescreenMenu; if (autoDisplayMenu == TRUE) { - gUnknown_202BE24 = 0; + gTitleReturnedFromMenu = 0; gTitlescreen.pressStartAndFlippersVisible = FALSE; gTitlescreen.menuVisible = autoDisplayMenu; gMain.subState = SUBSTATE_3; - sub_0CBC(); - sub_FD5C(NULL); + EnableVBlankInterrupts(); + FadeInFromWhite(NULL); } else { gMain.subState = SUBSTATE_WAIT_FOR_START_BUTTON; - sub_0CBC(); - sub_FD5C(sub_11640); + EnableVBlankInterrupts(); + FadeInFromWhite(RenderTitlePressStartSprites); } m4aSongNumStart(MUS_TITLE); @@ -93,19 +93,19 @@ void InitTitlescreenStates(void) int i; gTitlescreen.animTimer = 0; - gTitlescreen.unk2 = 0; - gTitlescreen.unk6 = 0; - gTitlescreen.unk8 = 0; - gTitlescreen.unk10 = 4; + gTitlescreen.animPhase = 0; + gTitlescreen.menuAction = 0; + gTitlescreen.pressStartAnimFrame = 0; + gTitlescreen.deleteSaveGroupId = 4; gTitlescreen.pressStartAndFlippersVisible = TRUE; gTitlescreen.deleteSaveWindowVisible = FALSE; - gTitlescreen.unkA = 6; - gTitlescreen.unkC = 0; - gTitlescreen.unkE = 3; + gTitlescreen.menuSpriteGroupId = 6; + gTitlescreen.cursorSpriteGroupId = 0; + gTitlescreen.selectorSpriteGroupId = 3; gTitlescreen.menuVisible = FALSE; - gTitlescreen.unkD = 0; - gTitlescreen.unkF = 0; - gUnknown_0202C588 = 1; + gTitlescreen.cursorArrowVisible = 0; + gTitlescreen.selectorVisible = 0; + gHighScoreEntrySource = 1; gEraseSaveDataAccessStep = 0; gEraseSaveDataAccessCounter = 0; gEReaderAccessStep = 0; @@ -114,56 +114,56 @@ void InitTitlescreenStates(void) if (gMain.hasSavedGame == TRUE) { for (i = 0; i < 7; i++) - gUnknown_0202BE00[i] = gUnknown_086A975C[i]; + gTitleSavedMenuSpriteSets[i] = gTitleSavedDefaultSprites[i]; gTitlescreen.menuCursorIndex = 1; - gTitlescreen.unk7 = 1; + gTitlescreen.hasSavedGame = 1; } else { for (i = 0; i < 7; i++) - gUnknown_0201C190[i] = gUnknown_086A96F8[i]; + gTitleNoSaveMenuSpriteSets[i] = gTitleNoSaveDefaultSprites[i]; gTitlescreen.menuCursorIndex = 0; - gTitlescreen.unk7 = 0; - gMain.unkD = 0; + gTitlescreen.hasSavedGame = 0; + gMain.continueFromSave = 0; } gTitlescreen.idleFramesCounter = 0; gTitlescreen.idleFadeoutCounter = 1; - gUnknown_020028A4 = 0; + gTitleTransitionActive = 0; if (JOY_HELD(RESTART_GAME_BUTTONS) == RESTART_GAME_BUTTONS) - gUnknown_020028A5 = 1; + gTitleRestartDebounce = 1; else - gUnknown_020028A5 = 0; + gTitleRestartDebounce = 0; - gUnknown_202BE24 = 0; + gTitleReturnedFromMenu = 0; } void TitleScreen1_WaitForStartButton(void) { if (JOY_HELD(RESTART_GAME_BUTTONS) == RESTART_GAME_BUTTONS) { - if (!gUnknown_020028A5) + if (!gTitleRestartDebounce) { - gUnknown_020028A4 = 1; - gTitlescreen.unk6 = 9; + gTitleTransitionActive = 1; + gTitlescreen.menuAction = 9; gMain.subState = SUBSTATE_11; } } else { - gUnknown_020028A5 = 0; + gTitleRestartDebounce = 0; } - if (!gUnknown_020028A4) + if (!gTitleTransitionActive) { gTitlescreen.animTimer++; - if (gTitlescreen.animTimer >= gUnknown_086A9662[gTitlescreen.unk8]) + if (gTitlescreen.animTimer >= gTitlePressStartAnimDurations[gTitlescreen.pressStartAnimFrame]) { gTitlescreen.animTimer = 0; - if (++gTitlescreen.unk8 > 3) - gTitlescreen.unk8 = 0; + if (++gTitlescreen.pressStartAnimFrame > 3) + gTitlescreen.pressStartAnimFrame = 0; } if (JOY_HELD(KEYS_MASK)) @@ -173,12 +173,12 @@ void TitleScreen1_WaitForStartButton(void) { m4aSongNumStart(SE_MENU_SELECT); gTitlescreen.animTimer = 0; - gTitlescreen.unk2 = 0; + gTitlescreen.animPhase = 0; gMain.subState = SUBSTATE_2; } TitleScreen_CheckDeleteKeyComboPressed(); - sub_1157C(); + CheckEReaderAccessCombo(); gTitlescreen.idleFramesCounter++; if (gTitlescreen.idleFramesCounter > NUM_IDLE_FRAMES) @@ -192,35 +192,35 @@ void TitleScreen1_WaitForStartButton(void) if (gTitlescreen.idleFadeoutCounter > 9) { gTitlescreen.idleFramesCounter = 0; - gTitlescreen.unk6 = 7; + gTitlescreen.menuAction = 7; gMain.subState = SUBSTATE_11; } } } - sub_11640(); + RenderTitlePressStartSprites(); } -void TitleScreen2_8010CF0(void) +void TitleScreen2_AnimOpenMenu(void) { if (JOY_HELD(RESTART_GAME_BUTTONS) == RESTART_GAME_BUTTONS) { - gUnknown_020028A4 = 1; - gTitlescreen.unk6 = 9; + gTitleTransitionActive = 1; + gTitlescreen.menuAction = 9; gMain.subState = SUBSTATE_11; } - if (!gUnknown_020028A4) + if (!gTitleTransitionActive) { gTitlescreen.animTimer++; - if (gTitlescreen.animTimer >= gUnknown_086A9666[gTitlescreen.unk2][1]) + if (gTitlescreen.animTimer >= gTitleMenuSlideInAnimData[gTitlescreen.animPhase][1]) { gTitlescreen.animTimer = 0; - gTitlescreen.unk8 = gUnknown_086A9666[gTitlescreen.unk2][0]; - if (++gTitlescreen.unk2 > 5) + gTitlescreen.pressStartAnimFrame = gTitleMenuSlideInAnimData[gTitlescreen.animPhase][0]; + if (++gTitlescreen.animPhase > 5) { - gTitlescreen.unk2 = 0; - gUnknown_202BE24 = 0; + gTitlescreen.animPhase = 0; + gTitleReturnedFromMenu = 0; gTitlescreen.pressStartAndFlippersVisible = FALSE; gTitlescreen.menuVisible = TRUE; gMain.subState = SUBSTATE_3; @@ -228,27 +228,27 @@ void TitleScreen2_8010CF0(void) } } - sub_11640(); + RenderTitlePressStartSprites(); } -void TitleScreen9_8010D84(void) +void TitleScreen9_DeleteSaveConfirmation(void) { if (JOY_HELD(RESTART_GAME_BUTTONS) == RESTART_GAME_BUTTONS) { - gUnknown_020028A4 = 1; - gTitlescreen.unk6 = 9; + gTitleTransitionActive = 1; + gTitlescreen.menuAction = 9; gMain.subState = SUBSTATE_EXEC_MENU_SELECTION; } - if (!gUnknown_020028A4) + if (!gTitleTransitionActive) { if (JOY_NEW(A_BUTTON)) { m4aSongNumStart(SE_MENU_SELECT); - sub_11B74(); - sub_02B4(); + DeleteSaveFile(); + FadeOutScreen(); m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); gMain.subState = SUBSTATE_LOAD_GRAPHICS; } else if (JOY_NEW(B_BUTTON)) @@ -259,56 +259,56 @@ void TitleScreen9_8010D84(void) } } - sub_11640(); + RenderTitlePressStartSprites(); } void TitleScreen3_8010E00(void) { if (JOY_HELD(RESTART_GAME_BUTTONS) == RESTART_GAME_BUTTONS) { - gUnknown_020028A4 = 1; - gTitlescreen.unk6 = 9; + gTitleTransitionActive = 1; + gTitlescreen.menuAction = 9; gMain.subState = SUBSTATE_11; } - if (gUnknown_020028A4) + if (gTitleTransitionActive) return; - if (!gTitlescreen.unk7) + if (!gTitlescreen.hasSavedGame) { gTitlescreen.animTimer++; - if (gTitlescreen.animTimer >= gUnknown_086A9748[gTitlescreen.unk2]) + if (gTitlescreen.animTimer >= gTitleMenuRetractDurations[gTitlescreen.animPhase]) { gTitlescreen.animTimer = 0; - gUnknown_0201C190[6] = gUnknown_086A9714[gTitlescreen.unk2]; - if (++gTitlescreen.unk2 > 11) + gTitleNoSaveMenuSpriteSets[6] = gTitleNoSaveAnimSprites[gTitlescreen.animPhase]; + if (++gTitlescreen.animPhase > 11) { - gTitlescreen.unk2 = 0; - gTitlescreen.unkD = 1; - gTitlescreen.unkF = 1; + gTitlescreen.animPhase = 0; + gTitlescreen.cursorArrowVisible = 1; + gTitlescreen.selectorVisible = 1; gMain.subState = SUBSTATE_MENU_INPUT_NO_SAVED_GAME; } } - sub_1175C(); + RenderTitleMenuNoSavedGame(); } else { gTitlescreen.animTimer++; - if (gTitlescreen.animTimer >= gUnknown_086A9748[gTitlescreen.unk2]) + if (gTitlescreen.animTimer >= gTitleMenuRetractDurations[gTitlescreen.animPhase]) { gTitlescreen.animTimer = 0; - gUnknown_0202BE00[6] = gUnknown_086A9778[gTitlescreen.unk2]; - if (++gTitlescreen.unk2 > 11) + gTitleSavedMenuSpriteSets[6] = gTitleSavedAnimSprites[gTitlescreen.animPhase]; + if (++gTitlescreen.animPhase > 11) { - gTitlescreen.unk2 = 0; - gTitlescreen.unkD = 1; - gTitlescreen.unkF = 1; + gTitlescreen.animPhase = 0; + gTitlescreen.cursorArrowVisible = 1; + gTitlescreen.selectorVisible = 1; gMain.subState = SUBSTATE_MENU_INPUT_SAVED_GAME; } } - sub_11968(); + RenderTitleMenuSavedGame(); } } @@ -316,22 +316,22 @@ void TitleScreen4_MenuInputNoSavedGame(void) { if (JOY_HELD(RESTART_GAME_BUTTONS) == RESTART_GAME_BUTTONS) { - gUnknown_020028A4 = 1; - gTitlescreen.unk6 = 9; + gTitleTransitionActive = 1; + gTitlescreen.menuAction = 9; gMain.subState = SUBSTATE_EXEC_MENU_SELECTION; } - if (!gUnknown_020028A4) + if (!gTitleTransitionActive) { gTitlescreen.animTimer++; - if (gTitlescreen.animTimer >= gUnknown_086A9672[gTitlescreen.unk2][1]) + if (gTitlescreen.animTimer >= gTitleMenuSlideOutAnimData[gTitlescreen.animPhase][1]) { gTitlescreen.animTimer = 0; - if (++gTitlescreen.unk2 > 6) - gTitlescreen.unk2 = 0; + if (++gTitlescreen.animPhase > 6) + gTitlescreen.animPhase = 0; - gTitlescreen.unkC = gUnknown_086A9672[gTitlescreen.unk2][0]; - gTitlescreen.unkE = gUnknown_086A9672[gTitlescreen.unk2][0] + 3; + gTitlescreen.cursorSpriteGroupId = gTitleMenuSlideOutAnimData[gTitlescreen.animPhase][0]; + gTitlescreen.selectorSpriteGroupId = gTitleMenuSlideOutAnimData[gTitlescreen.animPhase][0] + 3; } if (JOY_NEW(DPAD_UP)) @@ -351,86 +351,86 @@ void TitleScreen4_MenuInputNoSavedGame(void) { m4aSongNumStart(SE_MENU_SELECT); gTitlescreen.animTimer = 0; - gTitlescreen.unk2 = 0; + gTitlescreen.animPhase = 0; gMain.subState = SUBSTATE_7; } else if (JOY_NEW(B_BUTTON)) { m4aSongNumStart(SE_MENU_CANCEL); gTitlescreen.animTimer = 0; - gTitlescreen.unk2 = 12; - gTitlescreen.unkD = 0; - gTitlescreen.unkF = 0; + gTitlescreen.animPhase = 12; + gTitlescreen.cursorArrowVisible = 0; + gTitlescreen.selectorVisible = 0; gMain.subState = SUBSTATE_ANIM_CLOSE_MENU; } - sub_1157C(); + CheckEReaderAccessCombo(); } - sub_1175C(); + RenderTitleMenuNoSavedGame(); } void TitleScreen7_8011020(void) { if (JOY_HELD(RESTART_GAME_BUTTONS) == RESTART_GAME_BUTTONS) { - gUnknown_020028A4 = 1; - gTitlescreen.unk6 = 9; + gTitleTransitionActive = 1; + gTitlescreen.menuAction = 9; gMain.subState = SUBSTATE_11; } - if (!gUnknown_020028A4) + if (!gTitleTransitionActive) { u16 animTimer = gTitlescreen.animTimer; u16 mask = 0x3; if (!(animTimer & mask)) { - if (!gTitlescreen.unk2) + if (!gTitlescreen.animPhase) { - gTitlescreen.unk2 = 1; - CopyBgTilesRect((void *)(OBJ_VRAM0 + 0x1E0 + gTitlescreen.menuCursorIndex * 0x800), gUnknown_03000000, 8, 2); + gTitlescreen.animPhase = 1; + CopyBgTilesRect((void *)(OBJ_VRAM0 + 0x1E0 + gTitlescreen.menuCursorIndex * 0x800), gTempGfxBuffer, 8, 2); CopyBgTilesRect((void *)(OBJ_VRAM0 + 0x61E0), (void *)(OBJ_VRAM0 + 0x1E0 + gTitlescreen.menuCursorIndex * 0x800), 8, 2); } else { - gTitlescreen.unk2 = 0; - CopyBgTilesRect(gUnknown_03000000, (void *)(OBJ_VRAM0 + 0x1E0 + gTitlescreen.menuCursorIndex * 0x800), 8, 2); + gTitlescreen.animPhase = 0; + CopyBgTilesRect(gTempGfxBuffer, (void *)(OBJ_VRAM0 + 0x1E0 + gTitlescreen.menuCursorIndex * 0x800), 8, 2); } } if (gTitlescreen.animTimer > 20) { - gMain.unkD = 0; - gTitlescreen.unk6 = gUnknown_086A96A4[gTitlescreen.menuCursorIndex]; + gMain.continueFromSave = 0; + gTitlescreen.menuAction = gTitleNoSaveMenuActions[gTitlescreen.menuCursorIndex]; gMain.subState = SUBSTATE_EXEC_MENU_SELECTION; } gTitlescreen.animTimer++; } - sub_1175C(); + RenderTitleMenuNoSavedGame(); } void TitleScreen5_MenuInputSavedGame(void) { if (JOY_HELD(RESTART_GAME_BUTTONS) == RESTART_GAME_BUTTONS) { - gUnknown_020028A4 = 1; - gTitlescreen.unk6 = 9; + gTitleTransitionActive = 1; + gTitlescreen.menuAction = 9; gMain.subState = SUBSTATE_EXEC_MENU_SELECTION; } - if (!gUnknown_020028A4) + if (!gTitleTransitionActive) { gTitlescreen.animTimer++; - if (gTitlescreen.animTimer >= gUnknown_086A9672[gTitlescreen.unk2][1]) + if (gTitlescreen.animTimer >= gTitleMenuSlideOutAnimData[gTitlescreen.animPhase][1]) { gTitlescreen.animTimer = 0; - if (++gTitlescreen.unk2 > 6) - gTitlescreen.unk2 = 0; + if (++gTitlescreen.animPhase > 6) + gTitlescreen.animPhase = 0; - gTitlescreen.unkC = gUnknown_086A9672[gTitlescreen.unk2][0]; - gTitlescreen.unkE = gUnknown_086A9672[gTitlescreen.unk2][0] + 3; + gTitlescreen.cursorSpriteGroupId = gTitleMenuSlideOutAnimData[gTitlescreen.animPhase][0]; + gTitlescreen.selectorSpriteGroupId = gTitleMenuSlideOutAnimData[gTitlescreen.animPhase][0] + 3; } if (JOY_NEW(DPAD_UP)) @@ -450,35 +450,35 @@ void TitleScreen5_MenuInputSavedGame(void) { m4aSongNumStart(SE_MENU_SELECT); gTitlescreen.animTimer = 0; - gTitlescreen.unk2 = 0; + gTitlescreen.animPhase = 0; gMain.subState = SUBSTATE_8; } else if (JOY_NEW(B_BUTTON)) { m4aSongNumStart(SE_MENU_CANCEL); gTitlescreen.animTimer = 0; - gTitlescreen.unk2 = 12; - gTitlescreen.unkD = 0; - gTitlescreen.unkF = 0; + gTitlescreen.animPhase = 12; + gTitlescreen.cursorArrowVisible = 0; + gTitlescreen.selectorVisible = 0; gMain.subState = SUBSTATE_ANIM_CLOSE_MENU; } - sub_1157C(); + CheckEReaderAccessCombo(); } - sub_11968(); + RenderTitleMenuSavedGame(); } void TitleScreen8_8011228(void) { if (JOY_HELD(RESTART_GAME_BUTTONS) == RESTART_GAME_BUTTONS) { - gUnknown_020028A4 = 1; - gTitlescreen.unk6 = 9; + gTitleTransitionActive = 1; + gTitlescreen.menuAction = 9; gMain.subState = SUBSTATE_11; } - if (!gUnknown_020028A4) + if (!gTitleTransitionActive) { u16 animTimer = gTitlescreen.animTimer; u16 mask = 0x3; @@ -486,119 +486,119 @@ void TitleScreen8_8011228(void) // Blink menu item if (!(animTimer & mask)) { - if (!gTitlescreen.unk2) + if (!gTitlescreen.animPhase) { - gTitlescreen.unk2 = 1; - CopyBgTilesRect((void *)(OBJ_VRAM0 + 0x1E0 + gTitlescreen.menuCursorIndex * 0x800), gUnknown_03000000, 8, 2); + gTitlescreen.animPhase = 1; + CopyBgTilesRect((void *)(OBJ_VRAM0 + 0x1E0 + gTitlescreen.menuCursorIndex * 0x800), gTempGfxBuffer, 8, 2); CopyBgTilesRect((void *)(OBJ_VRAM0 + 0x61E0), (void *)(OBJ_VRAM0 + 0x1E0 + gTitlescreen.menuCursorIndex * 0x800), 8, 2); } else { - gTitlescreen.unk2 = 0; - CopyBgTilesRect(gUnknown_03000000, (void *)(OBJ_VRAM0 + 0x1E0 + gTitlescreen.menuCursorIndex * 0x800), 8, 2); + gTitlescreen.animPhase = 0; + CopyBgTilesRect(gTempGfxBuffer, (void *)(OBJ_VRAM0 + 0x1E0 + gTitlescreen.menuCursorIndex * 0x800), 8, 2); } } if (gTitlescreen.animTimer > 20) { if (gTitlescreen.menuCursorIndex == 1) - gMain.unkD = 1; + gMain.continueFromSave = 1; else - gMain.unkD = 0; + gMain.continueFromSave = 0; - gTitlescreen.unk6 = gUnknown_086A96D4[gTitlescreen.menuCursorIndex]; + gTitlescreen.menuAction = gTitleSavedMenuActions[gTitlescreen.menuCursorIndex]; gMain.subState = SUBSTATE_EXEC_MENU_SELECTION; } gTitlescreen.animTimer++; } - sub_11968(); + RenderTitleMenuSavedGame(); } void TitleScreen6_AnimCloseMenu(void) { if (JOY_HELD(RESTART_GAME_BUTTONS) == RESTART_GAME_BUTTONS) { - gUnknown_020028A4 = 1; - gTitlescreen.unk6 = 9; + gTitleTransitionActive = 1; + gTitlescreen.menuAction = 9; gMain.subState = SUBSTATE_11; } - if (gUnknown_020028A4) + if (gTitleTransitionActive) return; - if (!gTitlescreen.unk7) + if (!gTitlescreen.hasSavedGame) { gTitlescreen.animTimer++; - if (gTitlescreen.animTimer >= gUnknown_086A9748[gTitlescreen.unk2]) + if (gTitlescreen.animTimer >= gTitleMenuRetractDurations[gTitlescreen.animPhase]) { gTitlescreen.animTimer = 0; - if (--gTitlescreen.unk2 < 0) + if (--gTitlescreen.animPhase < 0) { - gTitlescreen.unk2 = 0; + gTitlescreen.animPhase = 0; gTitlescreen.menuCursorIndex = 0; - gUnknown_202BE24 = 1; + gTitleReturnedFromMenu = 1; gTitlescreen.pressStartAndFlippersVisible = TRUE; gTitlescreen.menuVisible = FALSE; gMain.subState = SUBSTATE_WAIT_FOR_START_BUTTON; } - gUnknown_0201C190[6] = gUnknown_086A9714[gTitlescreen.unk2]; + gTitleNoSaveMenuSpriteSets[6] = gTitleNoSaveAnimSprites[gTitlescreen.animPhase]; } - sub_1175C(); + RenderTitleMenuNoSavedGame(); } else { gTitlescreen.animTimer++; - if (gTitlescreen.animTimer >= gUnknown_086A9748[gTitlescreen.unk2]) + if (gTitlescreen.animTimer >= gTitleMenuRetractDurations[gTitlescreen.animPhase]) { gTitlescreen.animTimer = 0; - if (--gTitlescreen.unk2 < 0) + if (--gTitlescreen.animPhase < 0) { - gTitlescreen.unk2 = 0; + gTitlescreen.animPhase = 0; gTitlescreen.menuCursorIndex = 1; - gUnknown_202BE24 = 1; + gTitleReturnedFromMenu = 1; gTitlescreen.pressStartAndFlippersVisible = TRUE; gTitlescreen.menuVisible = FALSE; gMain.subState = SUBSTATE_WAIT_FOR_START_BUTTON; } - gUnknown_0202BE00[6] = gUnknown_086A9778[gTitlescreen.unk2]; + gTitleSavedMenuSpriteSets[6] = gTitleSavedAnimSprites[gTitlescreen.animPhase]; } - sub_11968(); + RenderTitleMenuSavedGame(); } } void TitleScreen10_ExecMenuSelection(void) { - if (!gTitlescreen.unk7) - sub_FE04(sub_1175C); + if (!gTitlescreen.hasSavedGame) + FadeOutToWhite(RenderTitleMenuNoSavedGame); else - sub_FE04(sub_11968); + FadeOutToWhite(RenderTitleMenuSavedGame); m4aMPlayAllStop(); - sub_0D10(); + DisableVBlankInterrupts(); - if (gUnknown_086A964C[gTitlescreen.unk6] == STATE_SCORES_MAIN) - gUnknown_0202C588 = 0; + if (gTitleMenuStateTable[gTitlescreen.menuAction] == STATE_SCORES_MAIN) + gHighScoreEntrySource = 0; else - gUnknown_0202C588 = 1; + gHighScoreEntrySource = 1; gAutoDisplayTitlescreenMenu = FALSE; - SetMainGameState(gUnknown_086A964C[gTitlescreen.unk6]); + SetMainGameState(gTitleMenuStateTable[gTitlescreen.menuAction]); } void TitleScreen11_80114B4(void) { - sub_FE04(sub_11640); + FadeOutToWhite(RenderTitlePressStartSprites); m4aMPlayAllStop(); - sub_0D10(); - gUnknown_0202C588 = 1; + DisableVBlankInterrupts(); + gHighScoreEntrySource = 1; gAutoDisplayTitlescreenMenu = FALSE; - SetMainGameState(gUnknown_086A964C[gTitlescreen.unk6]); + SetMainGameState(gTitleMenuStateTable[gTitlescreen.menuAction]); } static void TitleScreen_CheckDeleteKeyComboPressed(void) @@ -627,7 +627,7 @@ static void TitleScreen_CheckDeleteKeyComboPressed(void) } } -static void sub_1157C(void) +static void CheckEReaderAccessCombo(void) { // To access the e-reader screen, alternate pressing R_BUTTON and L_BUTTON 6 times while holding DPAD_RIGHT. s16 buttonMask = gEReaderAccessButtonSequence[gEReaderAccessStep]; @@ -640,7 +640,7 @@ static void sub_1157C(void) gEReaderAccessStep = 0; gEReaderAccessCounter = 0; m4aSongNumStart(SE_MENU_SELECT); - gTitlescreen.unk6 = 5; + gTitlescreen.menuAction = 5; if (gMain.subState == SUBSTATE_WAIT_FOR_START_BUTTON) gMain.subState = SUBSTATE_11; else @@ -664,23 +664,23 @@ static void sub_1157C(void) } } -static void sub_11640(void) +static void RenderTitlePressStartSprites(void) { int i; const struct SpriteSet *spriteSet; - struct SpriteGroup *startAndFlippersGroup = &gMain_spriteGroups[gTitlescreen.unk8]; - struct SpriteGroup *deleteMenuGroup = &gMain_spriteGroups[gTitlescreen.unk10]; + struct SpriteGroup *startAndFlippersGroup = &gMain_spriteGroups[gTitlescreen.pressStartAnimFrame]; + struct SpriteGroup *deleteMenuGroup = &gMain_spriteGroups[gTitlescreen.deleteSaveGroupId]; startAndFlippersGroup->available = gTitlescreen.pressStartAndFlippersVisible; deleteMenuGroup->available = gTitlescreen.deleteSaveWindowVisible; - LoadSpriteSets(gUnknown_086A96E4, 5, gMain_spriteGroups); + LoadSpriteSets(gTitlePressStartSpriteSets, 5, gMain_spriteGroups); if (startAndFlippersGroup->available == TRUE) { startAndFlippersGroup->baseX = 120; startAndFlippersGroup->baseY = 102; - spriteSet = gUnknown_086A96E4[gTitlescreen.unk8]; + spriteSet = gTitlePressStartSpriteSets[gTitlescreen.pressStartAnimFrame]; for (i = 0; i < spriteSet->count; i++) { gOamBuffer[startAndFlippersGroup->oam[i].oamId].x = startAndFlippersGroup->oam[i].xOffset + startAndFlippersGroup->baseX; @@ -713,7 +713,7 @@ struct UnknownStruct1 u8 filler2[6]; }; -void sub_1175C(void) +void RenderTitleMenuNoSavedGame(void) { struct SpriteGroup *menuSpriteGroup; struct SpriteGroup *r9; @@ -726,21 +726,21 @@ void sub_1175C(void) REG_BLDCNT = gMain.blendControl; REG_BLDALPHA = gMain.blendAlpha; - menuSpriteGroup = &gMain.spriteGroups[gTitlescreen.unkA]; - r9 = &gMain.spriteGroups[gTitlescreen.unkC]; - r8 = &gMain.spriteGroups[gTitlescreen.unkE]; + menuSpriteGroup = &gMain.spriteGroups[gTitlescreen.menuSpriteGroupId]; + r9 = &gMain.spriteGroups[gTitlescreen.cursorSpriteGroupId]; + r8 = &gMain.spriteGroups[gTitlescreen.selectorSpriteGroupId]; menuSpriteGroup->available = gTitlescreen.menuVisible; - r9->available = gTitlescreen.unkD; - r8->available = gTitlescreen.unkF; + r9->available = gTitlescreen.cursorArrowVisible; + r8->available = gTitlescreen.selectorVisible; - LoadSpriteSets((const struct SpriteSet *const *)gUnknown_0201C190, 7, gMain.spriteGroups); + LoadSpriteSets((const struct SpriteSet *const *)gTitleNoSaveMenuSpriteSets, 7, gMain.spriteGroups); if (menuSpriteGroup->available == 1) { menuSpriteGroup->baseX = 0x78; menuSpriteGroup->baseY = 0x66; - r12 = (const struct UnknownStruct1 *)gUnknown_0201C190[6]; + r12 = (const struct UnknownStruct1 *)gTitleNoSaveMenuSpriteSets[6]; for (sp0 = 0; sp0 < r12->count; sp0++) { struct OamDataSimple *r4 = &menuSpriteGroup->oam[sp0]; @@ -757,8 +757,8 @@ void sub_1175C(void) { struct OamDataSimple *r5; - r9->baseX = gUnknown_086A9684[gTitlescreen.menuCursorIndex].x; - r9->baseY = gUnknown_086A9684[gTitlescreen.menuCursorIndex].y; + r9->baseX = gTitleNoSaveArrowPositions[gTitlescreen.menuCursorIndex].x; + r9->baseY = gTitleNoSaveArrowPositions[gTitlescreen.menuCursorIndex].y; r5 = &r9->oam[0]; @@ -770,8 +770,8 @@ void sub_1175C(void) { struct OamDataSimple *r5; - r8->baseX = gUnknown_086A9694[gTitlescreen.menuCursorIndex].x; - r8->baseY = gUnknown_086A9694[gTitlescreen.menuCursorIndex].y; + r8->baseX = gTitleNoSaveSelectorPositions[gTitlescreen.menuCursorIndex].x; + r8->baseY = gTitleNoSaveSelectorPositions[gTitlescreen.menuCursorIndex].y; r5 = &r8->oam[0]; @@ -784,7 +784,7 @@ void sub_1175C(void) r8->available = FALSE; } -void sub_11968(void) +void RenderTitleMenuSavedGame(void) { struct SpriteGroup *r10; struct SpriteGroup *r9; @@ -797,21 +797,21 @@ void sub_11968(void) REG_BLDCNT = gMain.blendControl; REG_BLDALPHA = gMain.blendAlpha; - r10 = &gMain.spriteGroups[gTitlescreen.unkA]; - r9 = &gMain.spriteGroups[gTitlescreen.unkC]; - r8 = &gMain.spriteGroups[gTitlescreen.unkE]; + r10 = &gMain.spriteGroups[gTitlescreen.menuSpriteGroupId]; + r9 = &gMain.spriteGroups[gTitlescreen.cursorSpriteGroupId]; + r8 = &gMain.spriteGroups[gTitlescreen.selectorSpriteGroupId]; r10->available = gTitlescreen.menuVisible; - r9->available = gTitlescreen.unkD; - r8->available = gTitlescreen.unkF; + r9->available = gTitlescreen.cursorArrowVisible; + r8->available = gTitlescreen.selectorVisible; - LoadSpriteSets((const struct SpriteSet *const *)gUnknown_0202BE00, 7, gMain.spriteGroups); + LoadSpriteSets((const struct SpriteSet *const *)gTitleSavedMenuSpriteSets, 7, gMain.spriteGroups); if (r10->available == 1) { r10->baseX = 0x78; r10->baseY = 0x66; - r12 = (const struct UnknownStruct1 *)gUnknown_0202BE00[6]; + r12 = (const struct UnknownStruct1 *)gTitleSavedMenuSpriteSets[6]; for (sp0 = 0; sp0 < r12->count; sp0++) { struct OamDataSimple *r4 = &r10->oam[sp0]; @@ -828,8 +828,8 @@ void sub_11968(void) { struct OamDataSimple *r5; - r9->baseX = gUnknown_086A96AC[gTitlescreen.menuCursorIndex].x; - r9->baseY = gUnknown_086A96AC[gTitlescreen.menuCursorIndex].y; + r9->baseX = gTitleSavedArrowPositions[gTitlescreen.menuCursorIndex].x; + r9->baseY = gTitleSavedArrowPositions[gTitlescreen.menuCursorIndex].y; r5 = &r9->oam[0]; @@ -841,8 +841,8 @@ void sub_11968(void) { struct OamDataSimple *r5; - r8->baseX = gUnknown_086A96C0[gTitlescreen.menuCursorIndex].x; - r8->baseY = gUnknown_086A96C0[gTitlescreen.menuCursorIndex].y; + r8->baseX = gTitleSavedSelectorPositions[gTitlescreen.menuCursorIndex].x; + r8->baseY = gTitleSavedSelectorPositions[gTitlescreen.menuCursorIndex].y; r5 = &r8->oam[0]; @@ -855,7 +855,7 @@ void sub_11968(void) r8->available = FALSE; } -void sub_11B74(void) +void DeleteSaveFile(void) { ResetSaveFile(); SaveFile_WriteToSram(); diff --git a/src/util.c b/src/util.c index 9273183..a8ca158 100644 --- a/src/util.c +++ b/src/util.c @@ -1,8 +1,8 @@ #include "global.h" #include "main.h" -static u8 *sub_0734(u32, u8*, u32); -static int sub_0780(int, int); +static u8 *WriteDigitsRecursive(u32, u8*, u32); +static int IntPow(int, int); void SetMainGameState(u16 mainState) { @@ -10,7 +10,7 @@ void SetMainGameState(u16 mainState) gMain.subState = 0; } -void sub_024C(void) +void FadeInScreen(void) { u16 i; @@ -31,7 +31,7 @@ void sub_024C(void) REG_BLDCNT = 0; } -void sub_02B4(void) +void FadeOutScreen(void) { u16 i; @@ -92,27 +92,27 @@ s16 LoadSpriteSets(const struct SpriteSet *const *spriteSets, u16 numSpriteSets, return loadedCount; } -void ResetSomeGraphicsRelatedStuff(void) +void ResetDisplayState(void) { gMain.dispcntBackup |= DISPCNT_FORCED_BLANK; REG_DISPCNT |= DISPCNT_FORCED_BLANK; ClearGraphicsMemory(); - sub_0518(); + ClearBgTilemapAndOffsets(); ClearSprites(); gMain.modeChangeFlags = MODE_CHANGE_NONE; - gMain.unk10 = 0; + gMain.debugMenuCursorIndex = 0; gMain.fieldFrameCount = 0; - gMain.unk11 = 0; - gMain.unk12 = 0; - gMain.unk14 = 0; + gMain.pendingModeChangeType = 0; + gMain.animationTimer = 0; + gMain.modeChangeDelayTimer = 0; gMain.vCount = 144; - gMain.unk28 = 0; - gMain.unk2A = 0; - gMain.unk36 = 0; + gMain.shopPanelActive = 0; + gMain.shopPanelSlideOffset = 0; + gMain.blendEnabled = 0; gMain.blendControl = 0; gMain.blendAlpha = 0; gMain.blendBrightness = 0; - gMain.unk2C = 0; + gMain.scoreOverlayActive = 0; } void ClearGraphicsMemory(void) @@ -134,11 +134,11 @@ void ClearGraphicsMemory(void) REG_BLDALPHA = 0; } -void sub_0518(void) +void ClearBgTilemapAndOffsets(void) { s16 i; - DmaFill16(3, 0, gUnknown_03005C00, 0xC00); + DmaFill16(3, 0, gBG0TilemapBuffer, 0xC00); for (i = 0; i < 4; i++) { gMain.bgOffsets[i].xOffset = 0; @@ -183,11 +183,11 @@ void ClearSprites(void) } } -void sub_0678(u8 *arg0, s16 arg1, s16 arg2) +void DrawTextToTilemap(u8 *arg0, s16 arg1, s16 arg2) { // Rumble Pak related? s16 var0 = strlen(arg0) - 1; - u16 *dest = &gUnknown_03005C00[arg1 * 32 + arg2]; + u16 *dest = &gBG0TilemapBuffer[arg1 * 32 + arg2]; do { *dest = (*arg0) - 32; @@ -196,7 +196,7 @@ void sub_0678(u8 *arg0, s16 arg1, s16 arg2) } while (var0-- > 0); } -u8 *sub_06CC(int arg0, u8 *arg1, int arg2, s16 arg3) +u8 *FormatIntToString(int arg0, u8 *arg1, int arg2, s16 arg3) { if (arg0 < 0) { @@ -211,7 +211,7 @@ u8 *sub_06CC(int arg0, u8 *arg1, int arg2, s16 arg3) break; arg2--; - if (arg0 < sub_0780(10, arg2)) + if (arg0 < IntPow(10, arg2)) { *arg1 = 0x30; arg1++; @@ -224,23 +224,23 @@ u8 *sub_06CC(int arg0, u8 *arg1, int arg2, s16 arg3) if (arg3) { - sub_0734(arg0, arg1, 10); + WriteDigitsRecursive(arg0, arg1, 10); } else { - u8 *ptr = sub_0734(arg0, arg1, 10); + u8 *ptr = WriteDigitsRecursive(arg0, arg1, 10); *ptr = 0; } return arg1; } -static u8 *sub_0734(u32 arg0, u8 *arg1, u32 arg2) +static u8 *WriteDigitsRecursive(u32 arg0, u8 *arg1, u32 arg2) { u8 mod = arg0 % arg2; int div = arg0 / arg2; if (div != 0) - arg1 = sub_0734(div, arg1, arg2); + arg1 = WriteDigitsRecursive(div, arg1, arg2); if (mod < 10) *arg1 = mod + 48; @@ -250,7 +250,7 @@ static u8 *sub_0734(u32 arg0, u8 *arg1, u32 arg2) return arg1 + 1; } -static int sub_0780(int arg0, int arg1) +static int IntPow(int arg0, int arg1) { int var0; int var1 = arg1; diff --git a/sym_bss.txt b/sym_bss.txt index db4a584..fbbe707 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -1,14 +1,14 @@ -gUnknown_03000000: @ 0x03000000 +gTempGfxBuffer: @ 0x03000000 .space 0x1800 -gUnknown_03001800: @ 0x03001800 +gEReaderTextTileBuffer: @ 0x03001800 .space 0xB00 -gUnknown_03002300: @ 0x03002300 +gTextTilemapBuffer: @ 0x03002300 .space 0x2D00 gOamBuffer: @ 0x3005000 .space 0x400 IntrMain_Buffer: @ 0x3005400 .space 0x800 -gUnknown_03005C00: @ 0x03005C00 +gBG0TilemapBuffer: @ 0x03005C00 .space 0x2C0 gUnknown_03005EC0: @ 0x03005EC0 .space 0x380 diff --git a/sym_ewram.txt b/sym_ewram.txt index 202a839..917bfc0 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1,4 +1,4 @@ -gUnknown_02000000: @ 0x02000000 +gPinballGameState: @ 0x02000000 .space 0x2000 sGbPlayerCurKeys: @ 0x2002000 .space 0x2 @@ -6,13 +6,13 @@ sGbPlayerPrevKeys: @ 0x2002002 .space 0x6 gGbPlayerTilemapBuffer: @ 0x2002008 .space 0x800 -gUnknown_02002808: @ 0x2002808 +gSio32Id: @ 0x2002808 .space 0xC -gUnknown_02002814: @ 0x02002814 +gSio32SendData: @ 0x02002814 .space 0x4 -gUnknown_02002818: @ 0x02002818 +gSio32ReceivedData: @ 0x02002818 .space 0x4 -gUnknown_0200281C: @ 0x0200281C +gSio32RemoteDeviceId: @ 0x0200281C .space 0x4 sChecksumAvailable: @ 0x02002820 .space 0x2 @@ -22,17 +22,17 @@ sNumVBlanksWithoutSerialIntr: @ 0x02002824 .space 0x1 sSendBufferEmpty: @ 0x02002825 .space 0x1 -gUnknown_02002826: @ 0x02002826 +sLinkFlowControlDelay: @ 0x02002826 .space 0x1 -gUnknown_02002827: @ 0x02002827 +sHandshakePlayerCount: @ 0x02002827 .space 0x1 sSendNonzeroCheck: @ 0x02002828 .space 0x2 -gUnknown_0200282A: @ 0x0200282A +sRecvNonzeroCheck: @ 0x0200282A .space 0x2 -gUnknown_0200282C: @ 0x0200282C +gEReaderUnused1: @ 0x0200282C .space 0x1 -gUnknown_0200282D: @ 0x0200282D +gEReaderUnused2: @ 0x0200282D .space 0x3 gPokedex_EraseSaveDataAccessCounter: @ 0x02002830 .space 0x1 @@ -40,19 +40,19 @@ gPokedex_EraseSaveDataAccessStep: @ 0x02002831 .space 0x7 gFieldSelectData: @ 0x02002838 .space 0x18 -gUnknown_02002850: @ 0x02002850 +gFieldSelectSoftReset: @ 0x02002850 .space 0x8 -gUnknown_02002858: @ 0x02002858 +gHighScoreScreenState: @ 0x02002858 .space 0x25 -gUnknown_0200287D: @ 0x0200287D +gHighScoreDisplayMode: @ 0x0200287D .space 0x3 -gUnknown_02002880: @ 0x02002880 +gScrollDirection: @ 0x02002880 .space 0x2 -gUnknown_02002882: @ 0x02002882 +gScrollXOffset: @ 0x02002882 .space 0x2 -gUnknown_02002884: @ 0x02002884 +gResetComboTimer: @ 0x02002884 .space 0x1 -gUnknown_02002885: @ 0x02002885 +gResetComboCount: @ 0x02002885 .space 0x3 gTitlescreen: @ 0x2002888 .space 0x18 @@ -64,23 +64,23 @@ gEReaderAccessStep: @ 0x20028A2 .space 0x1 gEReaderAccessCounter: @ 0x20028A3 .space 0x1 -gUnknown_020028A4: @ 0x20028A4 +gTitleTransitionActive: @ 0x20028A4 .space 0x1 -gUnknown_020028A5: @ 0x20028A5 +gTitleRestartDebounce: @ 0x20028A5 .space 0x3 -gUnknown_020028A8: @ 0x020028A8 +gPaletteFadeRGBCache: @ 0x020028A8 .space 0x30 CurrentBoardProcPairs_020028D8: @ 0x020028D8 .space 0x48 gOptionsData: @ 0x02002920 .space 0x12 -gUnknown_02002932: @ 0x02002932 +gOptionsBGMDigitTileIds: @ 0x02002932 .space 0x3 -gUnknown_02002935: @ 0x02002935 +gOptionsSEDigitTileIds: @ 0x02002935 .space 0x5 -gUnknown_0200293A: @ 0x0200293A +gOptionsButtonConfigEditFlags: @ 0x0200293A .space 0x1E -gUnknown_02002958: @ 0x2002958 +gDpcmSampleBuffer: @ 0x2002958 .space 0x40 gMPlayTrack_BGM: @ 0x2002998 .space 0x320 @@ -96,7 +96,7 @@ readSramFast_Work: @ 0x02002FD8 .space 0x88 gIntrTable: @ 0x2003060 .space 0x40 -gUnknown_020030A0: @ 0x020030A0 +gBoardBGTileBufferAlt: @ 0x020030A0 .space 0x8020 gMain: @ 0x200B0C0 .space 0x40 @@ -241,297 +241,297 @@ gVBlankIntrFuncPtr: @ 0x200FB98 .space 0x4 gMainCallback: @ 0x200FB9C .space 0x4 -gUnknown_0200FBA0: @ 0x200FBA0 +gVCountIntrFuncShadow: @ 0x200FBA0 .space 0x10 -gUnknown_0200FBB0: @ 0x0200FBB0 +gBoardGfxBuffer: @ 0x0200FBB0 .space 0x8020 -gUnknown_02017BD0: @ 0x2017BD0 +gVBlankIntrFuncShadow: @ 0x2017BD0 .space 0x4 -gUnknown_02017BD4: @ 0x2017BD4 +gMainCallbackShadow: @ 0x2017BD4 .space 0xC gUnknown_02017BE0: @ 0x2017BE0 .space 0x2000 gVCountIntrFuncPtr: @ 0x2019BE0 .space 0x4 -gUnknown_02019BE4: @ 0x2019BE4 +gRumbleLoopCounter: @ 0x2019BE4 .space 0x4 -gUnknown_02019BE8: @ 0x2019BE8 +gRumbleFrameCounter: @ 0x2019BE8 .space 0x4 -gUnknown_02019BEC: @ 0x02019BEC +gRumbleMotorMode: @ 0x02019BEC .space 0x4 -gUnknown_02019BF0: @ 0x02019BF0 +gSio32ReconnectTimer: @ 0x02019BF0 .space 0x4 -gUnknown_02019BF4: @ 0x02019BF4 +gSio32SerialEnabled: @ 0x02019BF4 .space 0x4 -gUnknown_02019BF8: @ 0x2019BF8 +gRumblePatternIndex: @ 0x2019BF8 .space 0x4 -gUnknown_02019BFC: @ 0x2019BFC +gRumblePatternPosition: @ 0x2019BFC .space 0x4 -gUnknown_02019C00: @ 0x02019C00 +gRumbleCommand: @ 0x02019C00 .space 0x4 -gUnknown_02019C04: @ 0x2019C04 +gRumblePaused: @ 0x2019C04 .space 0x4 -gUnknown_02019C08: @ 0x2019C08 +gRumbleSpeedMode: @ 0x2019C08 .space 0x4 gGameBoyPlayerEnabled: @ 0x2019C0C .space 0x4 -gUnknown_02019C10: @ 0x02019C10 +gSio32CommState: @ 0x02019C10 .space 0x10 -gUnknown_02019C20: @ 0x02019C20 +gEReaderLinkDataReceived: @ 0x02019C20 .space 0x4 -gUnknown_02019C24: @ 0x02019C24 +gPokedexScrollActive: @ 0x02019C24 .space 0x4 -gUnknown_02019C28: @ 0x02019C28 +gPokedexSpriteIndexBase: @ 0x02019C28 .space 0x4 gLastSendQueueCount: @ 0x02019C2C .space 0x4 -gUnknown_02019C30: @ 0x02019C30 +gIntroScaleX: @ 0x02019C30 .space 0x10 -gUnknown_02019C40: @ 0x02019C40 +gPokedexVramBuffer: @ 0x02019C40 .space 0x800 -gUnknown_0201A440: @ 0x0201A440 +gPokedexSpriteAnimTimer: @ 0x0201A440 .space 0x4 -gUnknown_0201A444: @ 0x0201A444 +gLinkTimeoutCounter: @ 0x0201A444 .space 0x4 -gUnknown_0201A448: @ 0x0201A448 +gPokedexAnimatedIconFrame: @ 0x0201A448 .space 0x4 -gUnknown_0201A44C: @ 0x0201A44C +gEReaderGeneralTimer: @ 0x0201A44C .space 0x4 -gUnknown_0201A450: @ 0x0201A450 +gIntroSpriteEntities: @ 0x0201A450 .space 0x60 -gUnknown_0201A4B0: @ 0x0201A4B0 +gBallSpeedSubmenuVisible: @ 0x0201A4B0 .space 0x4 gAutoDisplayTitlescreenMenu: @ 0x201A4B4 .space 0x4 -gUnknown_0201A4B8: @ 0x0201A4B8 +gCompletionBannerY: @ 0x0201A4B8 .space 0x4 -gUnknown_0201A4BC: @ 0x0201A4BC +gLinkExchangeSendPhase: @ 0x0201A4BC .space 0x4 -gUnknown_0201A4C0: @ 0x0201A4C0 +gSelectedBallSpeed: @ 0x0201A4C0 .space 0x10 -gUnknown_0201A4D0: @ 0x0201A4D0 +gLinkRecvBuffer: @ 0x0201A4D0 .space 0x20 -gUnknown_0201A4F0: @ 0x0201A4F0 +gPokedexCursorBlinkOffset: @ 0x0201A4F0 .space 0x4 -gUnknown_0201A4F4: @ 0x0201A4F4 +gBallSpeedDisplayToggle: @ 0x0201A4F4 .space 0x4 gSelectedBonusField: @ 0x0201A4F8 .space 0x8 gHighScoreNameEntry: @ 0x0201A500 .space 0x10 -gUnknown_0201A510: @ 0x0201A510 +gLinkExchangeFrameCounter: @ 0x0201A510 .space 0x4 gPokedexNumOwned: @ 0x0201A514 .space 0x4 gUnknown_0201A518: @ 0x0201A518 .space 0x8 -gUnknown_0201A520: @ 0x0201A520 +gPaletteFadeBuffers: @ 0x0201A520 .space 0xC00 -gUnknown_0201B120: @ 0x0201B120 +gPokedexLinkStateTimer: @ 0x0201B120 .space 0x4 -gUnknown_0201B124: @ 0x0201B124 +gLinkExchangeStep: @ 0x0201B124 .space 0x4 -gUnknown_0201B128: @ 0x0201B128 +gPokedexLinkTransferPhase: @ 0x0201B128 .space 0x8 -gUnknown_0201B130: @ 0x0201B130 +gGlyphLowerRowBuffer: @ 0x0201B130 .space 0x40 -gUnknown_0201B170: @ 0x0201B170 +gMergedSapphireScoreIndex: @ 0x0201B170 .space 0x4 -gUnknown_0201B174: @ 0x0201B174 +gEReaderTransitionStep: @ 0x0201B174 .space 0x4 -gUnknown_0201B178: @ 0x0201B178 +gShowDialogFlag: @ 0x0201B178 .space 0x8 -gUnknown_0201B180: @ 0x0201B180 +gIntroScene3_AltBG1TilemapBuffer: @ 0x0201B180 .space 0x1000 -gUnknown_0201C180: @ 0x0201C180 +gPokedexLinkSendCounter: @ 0x0201C180 .space 0x4 gEReaderCardIndex: @ 0x0201C184 .space 0x4 -gUnknown_0201C188: @ 0x0201C188 +gIntroScaleY: @ 0x0201C188 .space 0x4 -gUnknown_0201C18C: @ 0x0201C18C +gCompletionBannerVisible: @ 0x0201C18C .space 0x4 -gUnknown_0201C190: @ 0x0201C190 +gTitleNoSaveMenuSpriteSets: @ 0x0201C190 .space 0x1C -gUnknown_0201C1AC: @ 0x0201C1AC +gLinkPlayerCount: @ 0x0201C1AC .space 0x4 -gUnknown_0201C1B0: @ 0x0201C1B0 +gLinkExchangeCommand: @ 0x0201C1B0 .space 0x4 -gUnknown_0201C1B4: @ 0x0201C1B4 +gPokedexShowPageIndicator: @ 0x0201C1B4 .space 0x4 -gUnknown_0201C1B8: @ 0x0201C1B8 +gIntroBlendSrc: @ 0x0201C1B8 .space 0x4 -gUnknown_0201C1BC: @ 0x0201C1BC +gPokedexMasterHandshakeState: @ 0x0201C1BC .space 0x4 -gUnknown_0201C1C0: @ 0x0201C1C0 +gIntroTileBuffer: @ 0x0201C1C0 .space 0xE000 gPokedexFlags: @ 0x0202A1C0 .space 0x1D0 gPokedexFlagExchangeBuffer: @ 0x0202A390 .space 0x1C4 -gUnknown_0202A554: @ 0x0202A554 +sRecvQueueSnapshot: @ 0x0202A554 .space 0x4 -gUnknown_0202A558: @ 0x0202A558 +gPokedexInfoWindowSlideStep: @ 0x0202A558 .space 0x4 -gUnknown_0202A55C: @ 0x0202A55C +gPokedexShowPortrait: @ 0x0202A55C .space 0x4 gBonusFieldSelectTimer: @ 0x0202A560 .space 0x4 -gUnknown_0202A564: @ 0x0202A564 +gEReaderLinkHandshakeStarted: @ 0x0202A564 .space 0x4 -gUnknown_0202A568: @ 0x0202A568 +gPokedexShowCatchHatch: @ 0x0202A568 .space 0x4 -gUnknown_0202A56C: @ 0x0202A56C +gIntroBGWhiteFlash: @ 0x0202A56C .space 0x8 gPokedexListEntryCount: @ 0x0202A574 .space 0x4 -gUnknown_0202A578: @ 0x0202A578 +gIntroAnimStep: @ 0x0202A578 .space 0x4 -gUnknown_0202A57C: @ 0x0202A57C +gPokedexCursorOffset: @ 0x0202A57C .space 0x4 -gUnknown_0202A580: @ 0x0202A580 +gEReaderTextAnimDelay: @ 0x0202A580 .space 0x8 -gUnknown_0202A588: @ 0x0202A588 +gPokedexShowAnimSprite: @ 0x0202A588 .space 0x4 -gUnknown_0202A58C: @ 0x0202A58C +gEReaderStatusSpriteIndex: @ 0x0202A58C .space 0x4 -gUnknown_0202A590: @ 0x0202A590 +gPokedexInfoWindowBackupTiles: @ 0x0202A590 .space 0x800 -gUnknown_0202AD90: @ 0x0202AD90 +gEReaderTextPageIndex: @ 0x0202AD90 .space 0x10 -gUnknown_0202ADA0: @ 0x0202ADA0 +gIntroBGParams: @ 0x0202ADA0 .space 0x30 -gUnknown_0202ADD0: @ 0x0202ADD0 +gLinkStatusResult: @ 0x0202ADD0 .space 0x4 -gUnknown_0202ADD4: @ 0x0202ADD4 +gIntroBlendDst: @ 0x0202ADD4 .space 0x4 -gUnknown_0202ADD8: @ 0x0202ADD8 +gIntroWailmerScaleY: @ 0x0202ADD8 .space 0x4 -gUnknown_0202ADDC: @ 0x0202ADDC +gLinkNegotiationFlags: @ 0x0202ADDC .space 0x4 gPokedexSelectedMon: @ 0x0202ADE0 .space 0x4 -gUnknown_0202ADE4: @ 0x0202ADE4 +gLinkExchangeResult: @ 0x0202ADE4 .space 0x4 -gUnknown_0202ADE8: @ 0x0202ADE8 +gEReaderLinkAckSent: @ 0x0202ADE8 .space 0x1008 -gUnknown_0202BDF0: @ 0x0202BDF0 +gLinkConnectionState: @ 0x0202BDF0 .space 0x10 -gUnknown_0202BE00: @ 0x0202BE00 +gTitleSavedMenuSpriteSets: @ 0x0202BE00 .space 0x1C -gUnknown_0202BE1C: @ 0x0202BE1C +gBonusFieldLoadingCounter: @ 0x0202BE1C .space 0x4 -gUnknown_0202BE20: @ 0x0202BE20 +gPokedexBlinkTimer: @ 0x0202BE20 .space 0x4 -gUnknown_202BE24: @ 0x202BE24 +gTitleReturnedFromMenu: @ 0x202BE24 .space 0xC -gUnknown_0202BE30: @ 0x0202BE30 +gGlyphUpperRowBuffer: @ 0x0202BE30 .space 0x40 -gUnknown_0202BE70: @ 0x0202BE70 +gIntroPalSwapBuffer: @ 0x0202BE70 .space 0x40 -gUnknown_0202BEB0: @ 0x0202BEB0 +gCompletionBannerDone: @ 0x0202BEB0 .space 0x4 -gUnknown_0202BEB4: @ 0x0202BEB4 +gIntroScene6EntitySpawnIndex: @ 0x0202BEB4 .space 0x4 gPokedexNumSeen: @ 0x0202BEB8 .space 0x4 -gUnknown_0202BEBC: @ 0x0202BEBC +gDialogType: @ 0x0202BEBC .space 0x4 -gUnknown_0202BEC0: @ 0x0202BEC0 +gEReaderHeaderSpriteIndex: @ 0x0202BEC0 .space 0x4 -gUnknown_0202BEC4: @ 0x0202BEC4 +gPokedexShowPopupWindow: @ 0x0202BEC4 .space 0x4 -gUnknown_0202BEC8: @ 0x0202BEC8 +gLinkAdvanceState: @ 0x0202BEC8 .space 0x4 -gUnknown_0202BECC: @ 0x0202BECC +gPokedexHandshakeRetryCount: @ 0x0202BECC .space 0x4 gBonusFieldSelectState: @ 0x0202BED0 .space 0x4 -gUnknown_0202BED4: @ 0x0202BED4 +gCompletionBannerPhase: @ 0x0202BED4 .space 0x4 -gUnknown_0202BED8: @ 0x0202BED8 +gMergedRubyScoreIndex: @ 0x0202BED8 .space 0x4 -gUnknown_0202BEDC: @ 0x0202BEDC +gIntroObjWhiteFlash: @ 0x0202BEDC .space 0x4 -gUnknown_0202BEE0: @ 0x0202BEE0 +gPokedexButtonPromptFrame: @ 0x0202BEE0 .space 0x4 gBonusFieldSelectNextMainState: @ 0x0202BEE4 .space 0x4 -gUnknown_0202BEE8: @ 0x0202BEE8 +gBonusFieldHighlightPalette: @ 0x0202BEE8 .space 0x4 -gUnknown_0202BEEC: @ 0x0202BEEC +gEReaderReceivedCardId: @ 0x0202BEEC .space 0x4 -gUnknown_0202BEF0: @ 0x0202BEF0 +gIntroPalFadeLevel: @ 0x0202BEF0 .space 0x4 -gUnknown_0202BEF4: @ 0x0202BEF4 +gPokedexPageIndicatorTimer: @ 0x0202BEF4 .space 0x4 -gUnknown_0202BEF8: @ 0x0202BEF8 +gEReaderExitTargetState: @ 0x0202BEF8 .space 0x4 -Pokedex_PopupTypeIx: @ 0x0202BEFC +gPokedexPopupTypeIndex: @ 0x0202BEFC .space 0x4 -gUnknown_0202BF00: @ 0x0202BF00 +gPokedexAnimatedIconTimer: @ 0x0202BF00 .space 0x4 -gUnknown_0202BF04: @ 0x0202BF04 +gPokedexShowButtonPrompt: @ 0x0202BF04 .space 0x4 -gUnknown_0202BF08: @ 0x0202BF08 +gPokedexScrollbarY: @ 0x0202BF08 .space 0x4 -gUnknown_0202BF0C: @ 0x0202BF0C +gPokedexSpriteAnimFrame: @ 0x0202BF0C .space 0x4 -gUnknown_0202BF10: @ 0x0202BF10 +gIntroFrameCounter: @ 0x0202BF10 .space 0x4 -gUnknown_0202BF14: @ 0x0202BF14 +gPokedexSpriteCategory: @ 0x0202BF14 .space 0xC gLink: @ 0x0202BF20 .space 0x624 -gUnknown_0202C544: @ 0x0202C544 +gPokedexClientHandshakeState: @ 0x0202C544 .space 0x4 -gUnknown_0202C548: @ 0x0202C548 +gIntroScene6VelocityIndex: @ 0x0202C548 .space 0x4 -gUnknown_0202C54C: @ 0x0202C54C +gLinkExchangeTimeout: @ 0x0202C54C .space 0x4 -gUnknown_0202C550: @ 0x0202C550 +gRemoteTopScores: @ 0x0202C550 .space 0x30 -gUnknown_0202C580: @ 0x0202C580 +gCompletionBannerFrame: @ 0x0202C580 .space 0x4 -gUnknown_0202C584: @ 0x0202C584 +gEReaderStatusSpriteVisible: @ 0x0202C584 .space 0x4 -gUnknown_0202C588: @ 0x202C588 +gHighScoreEntrySource: @ 0x202C588 .space 0x4 gPokedexScrollWaitFrames: @ 0x0202C58C .space 0x4 -gUnknown_0202C590: @ 0x0202C590 +gPokedexShowLinkCableIcon: @ 0x0202C590 .space 0x4 -gUnknown_0202C594: @ 0x0202C594 +gIntroOverlayFadeStep: @ 0x0202C594 .space 0x4 -gUnknown_0202C598: @ 0x0202C598 +gLinkExchangeRecvPhase: @ 0x0202C598 .space 0x4 -gUnknown_0202C59C: @ 0x0202C59C +gLinkPacketCounter: @ 0x0202C59C .space 0x4 -gUnknown_0202C5A0: @ 0x0202C5A0 +gEReaderTransitionTimer: @ 0x0202C5A0 .space 0x4 -gUnknown_0202C5A4: @ 0x0202C5A4 +gEReaderTextBlinkToggle: @ 0x0202C5A4 .space 0x4 -gUnknown_0202C5A8: @ 0x0202C5A8 +gIntroJingleVariant: @ 0x0202C5A8 .space 0x4 -gUnknown_0202C5AC: @ 0x0202C5AC +gPokedexPageIndicatorBlink: @ 0x0202C5AC .space 0x4 gPokedexListPosition: @ 0x0202C5B0 .space 0x4 -gUnknown_0202C5B4: @ 0x0202C5B4 +gPokedexLinkChunkIndex: @ 0x0202C5B4 .space 0xC -gUnknown_0202C5C0: @ 0x0202C5C0 +gScoreDigitBuffer: @ 0x0202C5C0 .space 0x20 -gUnknown_0202C5E0: @ 0x0202C5E0 +sLinkMasterHandshakeState: @ 0x0202C5E0 .space 0x4 -gUnknown_0202C5E4: @ 0x0202C5E4 +gIntroWailmerScaleX: @ 0x0202C5E4 .space 0x4 -gUnknown_0202C5E8: @ 0x0202C5E8 +gPokedexDetailFrameCount: @ 0x0202C5E8 .space 0x8 -gUnknown_0202C5F0: @ 0x0202C5F0 +gLinkSendBuffer: @ 0x0202C5F0 .space 0x14 -gUnknown_0202C604: @ 0x0202C604 +gEReaderTextCharIndex: @ 0x0202C604 .space 0xC -gUnknown_0202C610: @ 0x0202C610 +gWorkingHighScores: @ 0x0202C610 .space 0x14 gUnknown_0202C624: @ 0x0202C624 .space 0xAC @@ -541,43 +541,43 @@ gUnknown_0202C6E4: @ 0x0202C6E4 .space 0xAC gIntroSceneIndex: @ 0x0202C790 .space 0x4 -gUnknown_0202C794: @ 0x0202C794 +gPokedexDescriptionPage: @ 0x0202C794 .space 0xC -gUnknown_0202C7A0: @ 0x0202C7A0 +gCatchSpriteFrameBuffer: @ 0x0202C7A0 .space 0xFC0 -gUnknown_0202D760: @ 0x0202D760 +gCatchAnimTileBuffer: @ 0x0202D760 .space 0x120 -gUnknown_0202D880: @ 0x0202D880 +gKecleonSpriteSets: @ 0x0202D880 .space 0x2E40 -gUnknown_020306C0: @ 0x020306C0 +gGameOverLetterXOffsets: @ 0x020306C0 .space 0x10 -gUnknown_020306D0: @ 0x020306D0 +gCatchSpritePalettes: @ 0x020306D0 .space 0x20 -gUnknown_020306F0: @ 0x020306F0 +gCatchSequencePalA: @ 0x020306F0 .space 0x20 -gUnknown_02030710: @ 0x02030710 +gCatchSequencePalB: @ 0x02030710 .space 0x20 -gUnknown_02030730: @ 0x02030730 +gCatchSequencePalC: @ 0x02030730 .space 0x20 -gUnknown_02030750: @ 0x02030750 +gGameOverLetterAmplitudes: @ 0x02030750 .space 0x10 -gUnknown_02030760: @ 0x02030760 +gCatchSpriteGfxBuffer: @ 0x02030760 .space 0x900 -gUnknown_02031060: @ 0x02031060 +gCatchSpriteFlashGfx: @ 0x02031060 .space 0x480 gCurrentPinballGame: @ 0x20314E0 .space 0x20 -gUnknown_02031500: @ 0x02031500 +gGameOverLetterYOffsets: @ 0x02031500 .space 0x10 -gUnknown_02031510: @ 0x02031510 +gReplayFrameCounter: @ 0x02031510 .space 0x10 -gUnknown_02031520: @ 0x2031520 +gBoardConfig: @ 0x2031520 .space 0x70 -gUnknown_02031590: @ 0x02031590 +gKecleonSpriteOrderMap: @ 0x02031590 .space 0x40 -gUnknown_020315D0: @ 0x020315D0 +gCatchSpritePaletteBuffer: @ 0x020315D0 .space 0x520 -gUnknown_02031AF0: @ 0x02031AF0 +gCustomButtonConfigs: @ 0x02031AF0 .space 0x28 -gUnknown_02031B18: @ 0x02031B18 +gCustomButtonConfigTileIds: @ 0x02031B18 .space 0x18