2.3 KiB
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
- Controller polling and shot-selection state.
- Gameplay NMI sequence fields and callbacks.
- Course decompressor fields and package tables.
- Golfer sprite-layout routines and states.
- Course object expansion and collision routines.
- Terrain-grid generator and course overview.
- 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<addr>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.