Commit Graph

180 Commits

Author SHA1 Message Date
Retnuhytnuob
77c628e0ee
Sound Effect Naming, kickback naming, catch state enum (#211)
Some checks failed
CI / build (push) Has been cancelled
* kickback naming, catch state enum

* sound renaming through 98
2026-03-19 17:59:21 -05:00
Youpeoples
69f931d646
Mass naming: Ball/PinballGame Unk variables, function names (#210)
Some checks failed
CI / build (push) Has been cancelled
* 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) |
2026-03-15 19:40:33 -05:00
Retnuhytnuob
956787ad3b
Deep dive naming / const extraction, and minor dumps for Ruby Pond entities (#204)
Some checks failed
CI / build (push) Has been cancelled
* checkpoint

* checkpoint 2

* checkpoint

* checkpoint

* checkpoint

* checkpoint

* final mode_change update

* remove temporary whitespace from gDuskullSpritesheetOam

* correct spelling of collision

* remove unneeded .orig files

* remove unneeded comment

* starting checkpoint

* hatch tile detour complete

* Most Whiscash done

* Whiscash mode doc complete

* PlayRumble naming

* fixed newline
2026-03-02 07:22:41 -06:00
Retnuhytnuob
15da57f3f7
Dusclops Bonus Deep Dive Naming & incidental dump/naming (#202)
Some checks failed
CI / build (push) Has been cancelled
* checkpoint

* checkpoint 2

* checkpoint

* checkpoint

* checkpoint

* checkpoint

* final mode_change update

* remove temporary whitespace from gDuskullSpritesheetOam

* correct spelling of collision

* remove unneeded .orig files

* remove unneeded comment

* Rename PlayRumble function
2026-02-28 13:06:45 -06:00
Wendy Moniuk
310933e331
More intro sprites (#195)
Some checks failed
CI / build (push) Has been cancelled
* Add dusclops stage intro

* rename intro load function and add kecleon intro sprites
2026-02-15 14:24:41 -06:00
Retnuhytnuob
6e79ed0cc5
Decomp sub_203CC (#178)
* decomp sub_203CC

* .
2025-09-07 07:49:03 -05:00
Marcus Huderle
ea6bfc3bf9 document some functions and ball state
Some checks are pending
CI / build (push) Waiting to run
2025-09-04 09:01:57 -05:00
Retnuhytnuob
cb9791c8ab
decomp sub_16090 (#170)
Some checks are pending
CI / build (push) Waiting to run
2025-09-01 20:31:44 -05:00
Retnuhytnuob
7e0d797380
decomp sub_173FC and 171C8 (#169) 2025-09-01 19:28:05 -05:00
Retnuhytnuob
534e184947
Decomp sub_14AF4 and sub_14B84 (#166)
* Update assembly to use the hex, rather than music name, for ease of uese in decompme/m2C

* decompile sub_14740

* decomp sub_1493C

* decomp sub_14AF4 and sub 14B84

* confirm signature

* restored cleanup on sub_14740 and sub_1493C

* decomp sub_14E08: ruby board collision check
2025-08-31 16:52:39 -05:00
Marcus Huderle
8d3c0c349c sub_1C7F4 2025-08-31 14:01:04 -05:00
Retnuhytnuob
e55a14a35f
Decomp sub_14740 and sub_1493C (#161)
* Update assembly to use the hex, rather than music name, for ease of uese in decompme/m2C

* decompile sub_14740

* decomp sub_1493C

* minor cleanup

---------

Co-authored-by: Marcus Huderle <huderlem@gmail.com>
2025-08-30 08:13:32 -05:00
Retnuhytnuob
8ef3a8d70f
Decompile Sub_2AADC (#159)
Some checks are pending
CI / build (push) Waiting to run
* Update assembly to use the hex, rather than music name, for ease of uese in decompme/m2C

* decompile sub_2AADC

* order extern variables
2025-08-29 07:11:10 -05:00
Marcus Huderle
eb235b7c9f some more funcs
Some checks are pending
CI / build (push) Waiting to run
2025-08-27 17:05:44 -05:00
Marcus Huderle
1b3a7baa7a 5 more funcs
Some checks are pending
CI / build (push) Waiting to run
2025-08-25 18:31:44 -05:00
Marcus Huderle
66829542ce sub_24408
Some checks are pending
CI / build (push) Waiting to run
2025-08-25 09:15:58 -05:00
Marcus Huderle
5fdaccff13 sub_253E0 2025-08-24 15:46:35 -05:00
Marcus Huderle
4c59c14481 sub_25808 2025-08-24 15:22:20 -05:00
Marcus Huderle
6aafab8552 sub_260B8 2025-08-24 14:46:33 -05:00
Marcus Huderle
4f50fe48ee sub_26A10 2025-08-24 14:02:32 -05:00
Marcus Huderle
a311205e9d sub_27080 2025-08-24 13:20:36 -05:00
Smileynator
1cc45cec4d
Decomp sub_1B140 (#156)
* changed global definition of pinballgame, annotated pokemonSpecies, marked full size of 1B140, fixed minor error in 1A0F4

* Decomp the massive sub_1B140 - go team!
2025-08-22 14:09:09 -05:00
Marcus Huderle
8dc38fc8b1 sub_2E6AC
Some checks are pending
CI / build (push) Waiting to run
2025-08-22 09:12:32 -05:00
Marcus Huderle
80e6275b63 sub_304C8 2025-08-21 07:57:15 -05:00
Marcus Huderle
5b80f9ac6b match some functions
Some checks are pending
CI / build (push) Waiting to run
2025-08-18 20:21:18 -05:00
Marcus Huderle
136d34633e sub_28544
Some checks are pending
CI / build (push) Waiting to run
2025-08-17 16:50:47 -05:00
Marcus Huderle
e49be2d977 sub_27F94 2025-08-17 15:49:49 -05:00
Marcus Huderle
ea595f2941 AllBoardProcess_8B_4CEB4 and AllBoardProcess_8A_4CEA8
Some checks are pending
CI / build (push) Waiting to run
2025-08-15 09:55:46 -05:00
Marcus Huderle
b9d39cbd4d sub_4D3D0
Some checks are pending
CI / build (push) Waiting to run
2025-08-15 09:14:37 -05:00
Marcus Huderle
10fe2eefda MainBoardProcess_2B_4D960 2025-08-15 08:13:17 -05:00
Marcus Huderle
9dacf710bb BonusBoardProcess_2B_4DBFC 2025-08-15 07:59:13 -05:00
Marcus Huderle
78f2ea5e48 sub_4E814 2025-08-14 07:58:20 -05:00
Marcus Huderle
0c2333a650 sub_4E9F0 2025-08-14 07:46:45 -05:00
Smileynator
5dca7fd963
Sub_1A2C0 (#151)
Some checks are pending
CI / build (push) Waiting to run
* changed globals

* decomp sub_1A2C0
2025-08-13 20:12:10 -05:00
Marcus Huderle
84946c9e72 match a bunch of functions 2025-08-13 20:10:13 -05:00
Retnuhytnuob
2e155ddfdb
Stage 1 comprehension naming of functions for main.substate, board processes, and board specific collision (#150)
Some checks are pending
CI / build (push) Waiting to run
* context marking for some items

* Tag State related functions

* cleanup

* board proc pair names
2025-08-12 07:31:53 -05:00
Marcus Huderle
0d91298c28 sub_350F0 2025-08-11 19:10:56 -05:00
Marcus Huderle
94c3ddf906 match some more funcs 2025-08-11 15:54:07 -05:00
Wendy Moniuk
1289521541
decompile sub_313A0 (#149)
* decompile sub_313A0

* cleanup

---------

Co-authored-by: Marcus Huderle <huderlem@gmail.com>
2025-08-10 18:12:28 -05:00
Marcus Huderle
886ab9a23f sub_3B49C 2025-08-10 08:03:29 -05:00
Wendy Moniuk
4c3ce8fbff
decompile sub_31B30 (#145)
* decompile sub_31B30

* cleanup

---------

Co-authored-by: Marcus Huderle <huderlem@gmail.com>
2025-08-08 07:31:56 -05:00
Wendy Moniuk
51fbb5c15a
Decompile sub_4F258 and also add a compabitility fix for the tools. (#144)
Some checks failed
CI / build (push) Has been cancelled
* Decompile sub_4F258 and also add a compabitility fix for the tools.

* remove expected object file.
2025-08-03 11:34:46 -05:00
Marcus Huderle
0989eeb17f sub_3EB2C 2025-08-03 08:18:41 -05:00
Marcus Huderle
05ecf34d9b sub_3EDF0 2025-08-03 07:56:36 -05:00
Marcus Huderle
4c810c275e sub_40288
Some checks are pending
CI / build (push) Waiting to run
2025-08-01 17:59:18 -05:00
Smileynator
86f171d204
Decomp sub_18180 (#141)
* Decomp sub_18180

* decomp sub_182B4

* Decomp sub_18180
This one was practically free
2025-07-29 06:48:36 -05:00
Smileynator
967036718b
decomp sub_17F28 (#140) 2025-07-28 06:37:17 -05:00
Marcus Huderle
06f1d310bc sub_43228
Some checks are pending
CI / build (push) Waiting to run
2025-07-27 15:51:05 -05:00
Marcus Huderle
24cba6301f sub_43500 2025-07-27 15:24:56 -05:00
Marcus Huderle
48b7b956dd sub_44D58
Some checks failed
CI / build (push) Has been cancelled
2025-07-25 18:15:16 -05:00