Moves Joypad Test Cartridge (U) from _wip/ to Joypad Test Cartridge (U)/ with full ROM build: - Adds header.s, chr.s, linker.cfg (HEADER+PRG+CHR segments) - Updates Makefile to build and verify reconstructed.nes vs rom.nes - Adds rom.nes copy + copilot/rom.nes symlink per repo convention - Verified byte-identical build Pass 1 complete: full code/data classification (~3.5% code / ~96.5% data) Pass 2 complete: routine headers for all labels, semantic naming for key routines (Reset, NmiHandler, VramWrite, PpuScrollLatch, VramPtrWrite, RetAddrUpdate, etc.), zero-page aliases in locals.inc Root OVERVIEW.md updated: - Removes Joypad Test Cartridge from _wip skeleton table (22 -> 21 skeletons) - Adds Joypad Test Cartridge as #14 in numbered inventory (BYTE-IDENTICAL, Pass 2) - Updates summary count from 13 to 14 projects
47 lines
2.7 KiB
PHP
47 lines
2.7 KiB
PHP
; Joypad Test Cartridge (U) zero-page aliases - Pass 2
|
|
; Semantic names for addresses with observed usage patterns; ZpXX names for
|
|
; addresses whose role is not yet uniquely determined.
|
|
|
|
VramPtrLo = $00 ; VRAM write pointer low byte (indirect, used by VramWriteLoop/VramWrite)
|
|
VramPtrHi = $01 ; VRAM write pointer high byte (indirect)
|
|
VramLen = $02 ; VRAM write data length counter
|
|
PpuScrollX = $03 ; PPU horizontal scroll value (latched to $2005)
|
|
Zp04 = $04 ; Temporary zero-page storage
|
|
RetAddrTempLo = $05 ; Return address temp low byte (used by RetAddrUpdate)
|
|
RetAddrTempHi = $06 ; Return address temp high byte (used by RetAddrUpdate)
|
|
Zp0D = $0D ; Temporary zero-page storage
|
|
PpuMaskShadow = $0E ; PPUMASK shadow register (bits cleared for sprite/bg)
|
|
PpuScrollY = $0EC ; PPU vertical scroll value (latched to $2005)
|
|
PpuScrollX_Init = $0ED ; PPU horizontal scroll value written during init
|
|
PpuMaskValue = $0EE ; PPUMASK value written during init (also shadow)
|
|
PpuCtrlShadow = $EF ; PPUCTRL shadow register (NMI bit cleared via and #$7F)
|
|
VramToggleFlag = $CF ; Flag toggled each frame (asl/rol at $C095-$C09D)
|
|
NmiFlagByte = $E0 ; Flag cleared during NMI ($CD0F)
|
|
|
|
; Controller / button state (indexed by button number via $4E,X)
|
|
JoyBtnStateBase = $4E ; Base address for indexed button states ($4E,X)
|
|
JoyBtnState_P1_A = $4E ; Player 1 button A state/timer
|
|
JoyBtnState_P1_B = $4F ; Player 1 button B state/timer
|
|
JoyBtnState_P1_Select = $50 ; Player 1 select state/timer (if used)
|
|
JoyBtnState_P1_Start = $51 ; Player 1 start state/timer
|
|
JoyBtnState_P1_Up = $52 ; Player 1 up state/timer
|
|
FrameCounterLo = $53 ; Frame counter low byte (incremented each frame)
|
|
FrameCounterHi = $54 ; Frame counter high byte
|
|
JoyBtnTimer_P1_Down = $55 ; Player 1 down button timer
|
|
JoyBtnTimer_P1_Left = $56 ; Player 1 left button timer
|
|
JoyBtnTimer_P1_Right = $57 ; Player 1 right button timer
|
|
JoyBtnTimer_P1_Start2 = $5C ; Player 1 start timer (second instance)
|
|
JoyBtnTimer_P1_A2 = $61 ; Player 1 button A timer (second instance)
|
|
JoyBtnTimer_P2_Down = $5E ; Player 2 down button timer
|
|
JoyBtnTimer_P2_Left = $59 ; Player 2 left button timer
|
|
JoyBtnTimer_P2_Right = $64 ; Player 2 right button timer
|
|
JoyBtnTimer_P2_A = $5F ; Player 2 button A timer
|
|
JoyBtnTimer_P2_B = $5A ; Player 2 button B timer
|
|
|
|
; Generic zero-page aliases (role not yet uniquely determined)
|
|
Zp60 = $60 ; Temporary zero-page storage
|
|
Zp65 = $65 ; Temporary zero-page storage
|
|
Zp66 = $66 ; Temporary zero-page storage
|
|
Zp68 = $68 ; Temporary zero-page storage
|
|
Zp69 = $69 ; Temporary zero-page storage
|