# Golf (JU) Pass 2 naming plan and progress Pass 1 baseline: ca65/ld65 build verified byte-identical. ## Batch 1: startup, interrupt, PPU helpers, title/menu backbone - Rename high-confidence startup and interrupt-local labels. - Name NMI vector fields and PPU shadow values in `locals.inc`. - Name the title/menu selection and input-latch fields where usage is proven. - Name the menu cursor Y-position table at `$DB0D`. - Keep uncertain gameplay temporaries numerical. ## Later batches 1. Controller polling and shot-selection state. 2. Gameplay NMI sequence fields and callbacks. 3. Course decompressor fields and package tables. 4. Golfer sprite-layout routines and states. 5. Course object expansion and collision routines. 6. Terrain-grid generator and course overview. 7. Audio engine and command tables. Every batch must complete `make clean && make` with `BYTE-IDENTICAL` before the next naming batch is accepted. ## Batch 2 completed: controller and shot-selection callback Named the controller serial scan, repeat latch, club-selection index, aim index, aim direction, animation counters, major callback phases, and OAM-update loops within `$C5A0-$C71D`. ## Batch 3 completed: gameplay sequence NMI chain Named the sequence position, three bounds, phase and completion fields, dynamic NMI continuations, position/frame selection loops, and threshold tables in `$CF87-$D13D`. ### Batch 3 correction The branch at `$D09C` must target the trampoline at `$D0A6`, not the frame selector at `$D0A9`. The target is now `JumpToSelectSequenceFrame`, preserving the original displacement `$08` and byte sequence `90 08`. ## Subroutine-entry Label_ cleanup (Pass 2 residue) All 112 `Label_` definitions that are JSR/JMP subroutine entry points have been renamed: - 4 with established semantics: `WaitForFramePreservingY` ($C881), `SpriteOffsetForController` ($C894), `SetPpuScrollAndMask` ($C89D), `MultiplyABy32` ($C8BB). - 108 as address-based `SubC` names where behaviour is not yet established (e.g. `SubC84D`, `SubC89A`, `SubCE64`). The remaining 349 `Label_` definitions are internal branch targets within routines; per repo convention these do not need semantic names for the call graph to be readable and are intentionally left as `Label_`. Build verified `BYTE-IDENTICAL` after the rename.