From 69f931d646d2532ee05a5266789d24d4eac4ec71 Mon Sep 17 00:00:00 2001 From: Youpeoples Date: Sun, 15 Mar 2026 20:40:33 -0400 Subject: [PATCH] Mass naming: Ball/PinballGame Unk variables, function names (#210) * sha1 compliant fingers crossed * oops. You need these too. missing files. * renames * renames 2 * renames 4 * more renames 347 replacements, 31 files. SHA1 verified. ## Ramp Prize (was "rubyPondBumper") - `rubyPondBumperHitFlag` -> `rampPrizeType` -- controls Nuzleaf ramp prize (0=none, 1=1UP, 2-100=powerUp). Not pond-related at all, it's the prize platform at the top of the Ruby ramp. - `rubyPondBumperTimer` -> `rampPrizeRespawnTimer` -- 600-frame cooldown before ramp prize respawns with random type. Files: global.h, board_process3_ruby.c, collision_checks.c, ruby_ramp_entities.c + PC port (26 total) ## Screen Shake - `horizontalShakeOffset` -> `screenShakeX` -- X-axis camera shake (Whiscash + Rayquaza). Shorter, clearer. - `bonusBoardYOffset` -> `screenShakeY` -- Y-axis camera shake (Rayquaza + Groudon, bonus stages only). Pairs with screenShakeX. Files: global.h, board_process2.c, board_process3_rayquaza.c, board_process3_groudon.c, board_process7.c, ruby_board_entities.c + PC port (44 total) ## Gauntlet Flash (drop "Boss") - `gauntletBossFlashTimer` -> `gauntletFlashTimer` -- not a boss fight, it's a projectile launcher board feature. "Boss" was misleading. - `gauntletBossFlashActive` -> `gauntletFlashActive` -- same. The `gauntletProjectile*` fields were already correct and kept as-is. Files: global.h, collision_checks.c, ruby_board_entities.c + PC port (20 total) ## Egg Delivery System (was "TravelMode"/"EvolutionMode") Two delivery paths exist after the hatch cave: Pelipper (rare, Totodile) and egg drop (common, Aerodactyl). The old names "Travel" and "Evolution" referred to the delivery mechanism, not the game modes of the same name. This was confusing. Fields: - `travelSpriteFrame` -> `pelipperDeliveryFrame` - `pikaSaverAnimFrameTimer` -> `pelipperDeliveryTimer` -- "PikaSaver" was a leftover decompilation artifact - `modeSpriteTimer` -> `eggDropTimer` - `modeSpriteX` -> `eggDeliveryX` - `modeSpriteY` -> `eggDeliveryY` - `modeSpriteVelX` -> `eggDeliveryVelX` - `modeSpriteVelY` -> `eggDeliveryVelY` - `eggAnimTravelState` -> `eggDeliveryState` -- dropped misleading "Travel" Functions: - `InitTravelModeSprites` -> `InitPelipperEggDelivery` - `AnimateTravelModeSprite` -> `AnimatePelipperEggDelivery` - `InitEvolutionModeSprites` -> `InitEggDropDelivery` - `AnimateEvolutionModeSprite` -> `AnimateEggDropDelivery` Files: global.h, functions.h, catch_hatch_animations.c, ruby_catch_mode.c + PC port (132 total) ## Catch Hole Animation (was "sharpedo") - `sharpedoOamIndex` -> `catchHoleAnimFrame` -- used by both Sharpedo (Ruby) and Wailmer (Sapphire). Named after the shared mechanic, matches adjacent `catchHolePauseTimer`. - `sharpedoTileVariant` -> `catchHoleTileVariant` -- same, shared between both boards. Files: global.h, ruby_catch_mode.c, board_process3_sapphire.c, ruby_board_entities.c, sapphire_board_entities.c, pinball_game_main.c + PC port (73 total) * more renames 362 replacements across 28 files. GBA ROM SHA1 verified. ## Renames ### gravityFrozen -> ballGrabbed This field is set to 1 when a legendary boss grabs the ball during its attack sequence, and cleared to 0 when the ball is released. The old name described what happens as a side effect (gravity stops updating), but the actual state being tracked is whether the boss is holding the ball. Used by Kyogre, Groudon, and Rayquaza boss fights. ### bossColorState -> kecleonFramesetBase Only used by the Kecleon bonus stage. It stores a base animation frameset index derived from Kecleon's movement direction angle (via `gKecleonVisibleWalkDirectionMap`), then various offsets are added to select specific walk/stand/fall frames. Nothing to do with color. ### bossSubEntityState -> dusclopsWalkFootIndex Only used by the Dusclops bonus stage. Cycles through values 0-4 to track which foot Dusclops is leading with during its walk cycle. The parity (`& 1`) determines animation direction. Other bonus stages initialize it to 0 and never touch it again. ### kecleonHitState -> kecleonBoardHitState Tracks collision with any of the 14 berry zones on the Kecleon board (4 large + 10 small, collision cases 8-12), not just Kecleon's body being hit directly. The broader name better reflects that this covers all scope/berry overlay collisions. ### catchSpinRadius -> trapSpinRadius ### captureAngleQ16 -> trapAngleQ16 These two fields control the ball's spiral orbit during trap captures (boss fights, center hole traps, Jirachi bonus). They are not used by the regular catch system (Sharpedo hole). The old names mixed "catch" and "capture" inconsistently and were ambiguous with the separate catch mode. "trap" distinguishes this mechanic clearly. ### travelPelipperPosX/PosY/VelX/VelY -> travelPainterPosX/PosY/VelX/VelY ### gRubyTravelPelipper_Gfx -> gRubyTravelVolbeat_Gfx ### gSapphireTravelPelipper_Gfx -> gSapphireTravelIllumise_Gfx The travel cutscene entity is Volbeat (Ruby board) and Illumise (Sapphire board), not Pelipper. The actual Pelipper has its own separate fields (`pelipperState`, `pelipperPosX`, `pelipperPosY` at offsets 0x306-0x322) and its own graphics (`gPelipper_Gfx` from `pelipper.4bpp`). The travel sprites at ROM 0x08483D8C / 0x08488A0C are 44-53% different from real Pelipper pixel data, and the Ruby and Sapphire variants differ from each other by 22-37% per frame, consistent with two distinct but related Pokemon. The previous "travelPelipper" labels were a misidentification. ### rouletteSpeciesId -> rouletteAreaIndex This array stores area-based portrait indices (0-12) used to look up graphics sets, not actual species IDs. The lookup table `gAreaToSpeciesTable` is essentially an identity mapping (area N maps to index N). The old name made it sound like the roulette was selecting a specific Pokemon species, when it is selecting an area index for portrait rendering. ## Source File Reverts 17 source files reverted from descriptive names back to their original ROM-offset names. The `ld_script.txt` linker order was updated to match. | Descriptive Name | Reverted To | |------------------|-------------| | `interrupt_handlers.c` | `rom_850.c` | | `text_graphics_util.c` | `rom_1068C.c` | | `banner_camera.c` | `rom_1A0F4.c` | | `ruby_catch_mode.c` | `rom_1A98C.c` | | `ruby_board_entities.c` | `rom_201B8.c` | | `catch_hatch_animations.c` | `rom_27E08.c` | | `catch_roulette_rendering.c` | `rom_27F94.c` | | `sprite_link_init.c` | `rom_2414.c` | | `ruby_ramp_entities.c` | `rom_2C538.c` | | `sapphire_board_entities.c` | `rom_2E67C.c` | | `sapphire_egg_cave.c` | `rom_30480.c` | | `sapphire_visual_effects.c` | `rom_31BE8.c` | | `capture_registry.c` | `rom_31CF8.c` | | `bonus_stage_transitions.c` | `rom_356A0.c` | | `board_layout_init.c` | `rom_467F4.c` | | `ruby_hud_animations.c` | `rom_4F258.c` | | `sapphire_hud_animations.c` | `rom_50AD4.c` | * removal Removed duplicated & unwanted renames * renames ## Changes Made ### Misidentified Pokemon Entities (6 functions + 2 fields) Wrong Pokemon names from initial decompilation. Corrected based on in-game sprite identification. | Old Name | New Name | File | Notes | |----------|----------|------|-------| | `InitPelipperEggDelivery` | `InitTotodileEggDelivery` | rom_27E08.c | Sprite group 82; Totodile carries egg when `rubyPondState == RUBY_POND_STATE_LOTAD` | | `AnimatePelipperEggDelivery` | `AnimateTotodileEggDelivery` | rom_27E08.c | Same entity | | `InitEggDropDelivery` | `InitAerodactylEggDelivery` | rom_27E08.c | Sprite group 12; Aerodactyl flies in with the egg | | `AnimateEggDropDelivery` | `AnimateAerodactylEggDelivery` | rom_27E08.c | Same entity | | `UpdateGauntletBossAnimation` | `UpdateChikoritaAttackAnimation` | rom_201B8.c | Sprite groups 13-14; Chikorita shoots leaf projectiles at bumpers | | `AnimateGauntletBossSprite` | `AnimateChikoritaSprite` | rom_201B8.c | Sprite group 53, flash animation | | `pelipperDeliveryFrame` | `totodileDeliveryFrame` | global.h (0x2C3) | Misattributed to Pelipper | | `pelipperDeliveryTimer` | `totodileDeliveryTimer` | global.h (0x2C4) | Same | ### Chikorita Fields (7 fields, 0x2B0-0x2BC) | Old | New | |-----|-----| | `gauntletFlashTimer` | `chikoritaFlashTimer` | | `gauntletFlashActive` | `chikoritaFlashActive` | | `gauntletProjectileX` | `chikoritaProjectileX` | | `gauntletProjectileY` | `chikoritaProjectileY` | | `gauntletProjectileVelX` | `chikoritaProjectileVelX` | | `gauntletProjectileUnused` | `chikoritaProjectileUnused` | | `gauntletProjectileTimer` | `chikoritaProjectileTimer` | ### Chikorita Data Labels (3) | Old | New | |-----|-----| | `gGauntletExplosionTiles` | `gChikoritaExplosionTiles` | | `gGauntletProjectileTiles` | `gChikoritaProjectileTiles` | | `gGauntletBossFlashFrameIndices` | `gChikoritaFlashFrameIndices` | ### Spheal Stage Entity Disambiguation (3 functions + 1 struct + 1 data label) The Spheal bonus stage has two Pokemon: Spheal (flying enemies) and Sealeo (ground minions that get knocked down). Functions were lumping both under "Spheal." | Old Name | New Name | Notes | |----------|----------|-------| | `UpdateSphealMinionLogic` | `UpdateSealeoEntityLogic` | "Minions" use `minionState`/`minionFramesetIx` - these are Sealeo | | `UpdateSphealFlyingEnemyLogic` | `UpdateSphealEntityLogic` | Flying enemies ARE Spheal; dropped redundant "FlyingEnemy" | | `UpdateSphealKnockdownPhysics` | `UpdateSealeoKnockdownPhysics` | Knockdown targets are Sealeo (operates on `minionState[var0]`) | | `struct FlyingEnemyPath` | `struct SphealFlightPath` | Flight path data for Spheal patterns | | `gSphealFlyingEnemyPathData` | `gSphealFlightPathData` | Matching struct rename | ### Ruby Board Distinction (4 functions) These are Ruby-only but lacked the "Ruby" prefix. Sapphire counterparts already had it. | Old Name | New Name | |----------|----------| | `DispatchCatchModeInit` | `DispatchRubyCatchModeInit` | | `UpdateCatchModeAnimation` | `UpdateRubyCatchModeAnimation` | | `InitEvolutionShopMode` | `InitRubyEvolutionShopMode` | | `AnimateEvolutionShopSequence` | `AnimateRubyEvolutionShopSequence` | ### Improved Descriptiveness (3 functions + 2 data labels + 1 field) | Old Name | New Name | Notes | |----------|----------|-------| | `ProcessMainBoardBallDrain` | `ProcessMainBoardBallDrainAndLaunch` | Also handles plunger charging/launch (lines 421-438) | | `HideCaughtPokemonSprite` | `CleanupCaughtPokemonSprite` | Sets OAM off-screen AND sets `available=0` | | `HideJirachiSprites` | `CleanupJirachiSprites` | Hides sprite group 33 AND deactivates 4 star tag groups (45-48) | | `gMonIconTilesGfx` | `gPikaSaverTilesGfx` | Pikachu saver icon tiles, indexed via `gPikaSaverAnimFrameTable` | | `monIconTileIndex` | `pikaSaverTileIndex` | Indexes into `gPikaSaverTilesGfx` | | `field` (0x10FD) | `savedField` | Adjacent fields are `savedTempField`, `savedIsBonusField`, etc. | ### Comments Added (4) | Location | Comment | |----------|---------| | `progressLevel` (0x70E) | Becomes bonusMultiplier at end-of-ball; displayed on the blue bonus sign | | `ballLaunchTimer` (0x1328) | Countdown to activate secondaryBall (multiball) | | Fields 0x1106-0x110E | Values applied by the pause process (set when pausing) | | Fields 0x1110-0x1118 | Values preserved from before pause (restored when unpausing) | --- data/rom_1.s | 672 ++--- data/rom_2.s | 592 ++--- data/sound_data.s | 8 +- graphics/stage/sapphire/pelipper.png | Bin 0 -> 3071 bytes graphics/stage/sapphire/sapphire_gfx.json | 2 +- include/constants/global.h | 2 +- include/functions.h | 880 +++---- include/gbplayer.h | 6 +- include/global.h | 1402 +++++------ include/link.h | 12 +- include/main.h | 74 +- include/titlescreen.h | 32 +- include/types.h | 6 +- include/variables.h | 338 +-- src/board_process0.c | 102 +- src/board_process1.c | 52 +- src/board_process2.c | 456 ++-- src/board_process3_dusclops.c | 408 +-- src/board_process3_groudon.c | 1370 +++++----- src/board_process3_kecleon.c | 998 ++++---- src/board_process3_kyogre.c | 1054 ++++---- src/board_process3_rayquaza.c | 1402 +++++------ src/board_process3_ruby.c | 316 +-- src/board_process3_sapphire.c | 316 +-- src/board_process3_spheal.c | 1120 ++++----- src/board_process4.c | 128 +- src/board_process5.c | 154 +- src/board_process6.c | 388 +-- src/board_process7.c | 288 +-- src/board_process8.c | 112 +- src/bonus_field_select.c | 88 +- src/catch_hatch_picker.c | 2 +- src/collision_checks.c | 1510 +++++------ src/data/species.h | 820 +++--- src/debug_menu.c | 566 ++--- src/ereader.c | 534 ++-- src/field_select.c | 208 +- src/game_idle.c | 102 +- src/gbplayer.c | 284 +-- src/high_scores.c | 1474 +++++------ src/intro.c | 2202 ++++++++-------- src/link.c | 110 +- src/m4a_1.s | 4 +- src/main.c | 38 +- src/options.c | 398 +-- src/pause_game.c | 104 +- src/pinball_game_main.c | 1094 ++++---- src/pokedex.c | 1414 +++++------ src/pokemon_cry.c | 8 +- src/rom_1068C.c | 40 +- src/rom_1A0F4.c | 252 +- src/rom_1A98C.c | 1058 ++++---- src/rom_201B8.c | 1354 +++++----- src/rom_2414.c | 32 +- src/rom_27E08.c | 2772 ++++++++++----------- src/rom_27F94.c | 1668 ++++++------- src/rom_2C538.c | 124 +- src/rom_2E67C.c | 1230 ++++----- src/rom_30480.c | 386 +-- src/rom_31BE8.c | 232 +- src/rom_31CF8.c | 2 +- src/rom_356A0.c | 106 +- src/rom_467F4.c | 316 +-- src/rom_4F258.c | 290 +-- src/rom_50AD4.c | 596 ++--- src/rom_850.c | 12 +- src/save.c | 10 +- src/titlescreen.c | 372 +-- src/util.c | 50 +- sym_bss.txt | 8 +- sym_ewram.txt | 338 +-- 71 files changed, 17450 insertions(+), 17448 deletions(-) create mode 100644 graphics/stage/sapphire/pelipper.png 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 0000000000000000000000000000000000000000..fed97e907be1d293c9aa86cb63222e2f013e33c2 GIT binary patch literal 3071 zcmV=`vun6X#nISbZKmMPGGx@Gqa((xVgfJun zn-B&;7!gzW7z9BVDjC9CS{{Z2Q|N|2I8OLaT}T2fcbvcLLLP=|Cm`Gzca{8b*`GOe z^LG7S&zY4KDj|FS`m8sr8A7(-Y}I>JOH8oa9@bamUmcq+XgI(@x z==>AA0TAv-4Y%ccuIu`*p~}1zvS!QQAHDZ|fB4#QQl}<_0*axX&C#f_>zq5zxD@t> ztnWs1*O@zGN!a9_Z=5^VV@c@n3XRs>smnsf%NqyBjx!%mDnWE{uyCNQY4wwIcuNO2 zr_h!mG`-g4sZ*QZRRVU>Y`Sji1|DN72}NfcF8ECj<}kRIgHp)<*2D@>rGM&NCeff2 zLf>WA&X^<-RajGmaOLnUIEs&wNE&ne-CKTL@M-+zOx2EkE~49xXG!l0WF z+rlAi%3D?xA%$Hiik0wy!gB-}@XEJ=?4EMT0$DAs@kCO$aWPDT#^mnI!$U%uB3&=nT zD_E)uDe-E%R>H#w;SyfKBnarxX#(I1p;RfA5T5>oiZ0|KF2A2FAnT<}F@(G~1EDsR zo4R*fZ;C^Q3Nn3wF{2;-|Iiv`1r(@P+I(RM_d^%f%|@rEw1fhZ2b5i1$h-#FC0J&= zdLQVCC}en*a@7h?MA36sq$RKR`SL$Rp`JRGz&+HB!>*D(+$?RtbDU$jF0`R^?$pK= zWU_54Ko>RSn?xUm62Qp%6$&?{;8FC<9O~1?A0#XxN!mc9DGHusqYxzsBqZgBwlsp7 z>$dR;pzjHQ@)OdmG6@9(Q9jn-bh5f;+M(EX)}F)hfUodH<&P z82-y>3g3@3^wI>Jip^I5nIKXHoN?}}5aYgqE`XUosmYAt^J=@<+JWdwiux*{4alhJ zSc2Z&JtRX-=atuhm+j1gB^2nwtZ4#t(qqEe5@D*xgI;6L(ILaDP@%$AIfCBCu3g9| zeCnp)cQ|}B!QbZaQH9Lk7Vt^aR9ffWsDh8EMaeKKT~u|?2$>Ow50C+#aa=aVtlFF- zV_XU>wnHk(z6*tspi*7(UDy;&k)d0n!lZ%>^<6l86mS<3eSk`oJ^;9he<(dU1Zqg1 z{$dRDQARLB>k~&m1AT54fz#)m+fLO9$LaI$!&^ONLFtny{E_IR^5@Sd!%DCVV3vqQ z_=vO$i6MM^3&p3-Ukn=s<)>Bvyrt#lI{z3t&JrQjP$HU&dNaF__paa6p+FC-y&kejj`jhKZ1!O=U zy3G4yc2$DcgyKq&=<@;{PRNA|DNVK4MZ>~`4~NnSW~36-G?lkQb_i>zt&BN1tQIwJ z7otM>n($m7qQMJKRFG^f{o1f&%tSD-guL4!rjV0R{!~;63B0v!yegh&*!LhpUj5)C zuOfOfh>vib5KDOwABnFrc>u4K_=sT%Tyzxh&m1|vZO}O*eCRB$gb<2*3`_VH6CXzK zZS;pV3F) zhhb@pS^_4l3xQ$@t4u9e>R^@0OzMJRsj=Z>l{sQ*y;^ECQ*?-Jog#gt>^b!%DZ8&l zn(9gNly+~+o#TF}<1E$MWC4{6DsH(!qp`cPA}aU}#jdoIc+TK4=v2r`x+ ziff53R4lo!D+CQouFISHLM)BH4whhcB@wZF!iIGqmn*y)*usnzuO6H5g#6X#dF`(oby1j;#CZ9780DW9%PVV=o58&j*&gz5wD4<4zf7HT};mS zMhDpoatZGbK(!9Ct?S9vx(sCFKOST&fAv&^=eIi{ zTlP^e`yIOzBrK`B6J#tYAN3lKVs}FQ>+Mch=-DW-J7Hm9iSJHWAeL;q6G;EUv+hp7 zw3C=}OyJq5FxpAPjN<~!M!|H`1fGpD1(uDbB)n;Q!{%W`^f7N)<{FNF(>iH`PWRD_$MM0)c2I{ZQD9E%~g8pjH1Q}jF2o_%9 zmH(Qs0@7jOWRN{%#%l$#mB6kitBR+0HxPV4h3@ zS#{nShEP5TU7mM7#0{vDP@Q*1B1^m5s`JisXRSx1rpoiqpVlz*rHnZ{@B9hhL|yfe zGCl8{2S-6f_d;vyBM-WKN2$JW;%>tBDH?)E)aycttjDs>zj@&afh@hVgDizrVFTGG zup}2YkU_k6VFlTL|38rN{ptqD(sLGF>L9~%`jk4z*mY-utTtJ!lgkqWWVK0pOG5F_ z7gQiyfB}k+x^bj~4BZb3`~YzUGA6uDx&sYlC?uFKQv?7RhL>lOP=bsKK@!QQmnq0F zTD)Yr32wXu$gaj8_LMOfAoD-GQd0M&LOqr`eHh51(lMzZOKbw2bp$4!O~6b2pkQ7r z;SU#xl-QDloCGv-GC;=Xy$Lc9U=mnB2Jb5nEFjBq7Uwd^h!CRw2A(D6J)a*H$NK4>R6tNfs#Rn!y0c*EB27zD7taz){{!;#zDRZy_MZR% N002ovPDHLkV1n^jvTgtX literal 0 HcmV?d00001 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