;------------------------------------------------------------ ; Shared zero-page pointer and scratch workspace ;------------------------------------------------------------ WorkPtr0Lo = $00 WorkPtr0Hi = $01 WorkPtr1Lo = $02 WorkPtr1Hi = $03 DataPtrLo = $04 DataPtrHi = $05 ListPtrLo = $06 ListPtrHi = $07 CurrentObjectPtrLo = $08 CurrentObjectPtrHi = $09 CurrentObjectIndex = $0A AlternateObjectPtrLo = $0B AlternateObjectPtrHi = $0C TempDirection = $0D TempClass = $0E LoopCounter = $0F ;------------------------------------------------------------ ; Frame and controller shift state ;------------------------------------------------------------ FrameShiftRegister0 = $10 FrameShiftRegister1 = $11 FrameShiftRegister2 = $12 FrameShiftRegister3 = $13 FrameShiftRegister4 = $14 FrameShiftRegister5 = $15 FrameShiftRegister6 = $16 FrameShiftRegister7 = $17 ;------------------------------------------------------------ ; Movement and collision workspace ;------------------------------------------------------------ CollisionRecordA0 = $20 CollisionRecordA1 = $21 CollisionRecordA2 = $22 CollisionRecordA3 = $23 VectorComponent0 = $24 VectorComponent1 = $25 VectorComponent2 = $26 VectorComponent3 = $27 TempField2C = $2C TempField2E = $2E TempField2F = $2F TempField33 = $33 TempField34 = $34 TempField3F = $3F ;------------------------------------------------------------ ; PPU shadow and rendering state ;------------------------------------------------------------ ShadowPPUCTRL = $40 ShadowPPUMASK = $41 ScrollOrRenderState0 = $42 ScrollOrRenderState1 = $43 ;------------------------------------------------------------ ; Controller state ; ; $44-$47 is accessed through overlapping indexed bases at ; $44 and $46. Names for individual bytes remain provisional. ;------------------------------------------------------------ ControllerButtonsBase = $44 ControllerButtonsAltBase = $46 ; Implicit indexed array members: ControllerState44 = $44 ControllerState45 = $45 ControllerState46 = $46 ControllerState47 = $47 ;------------------------------------------------------------ ; Startup, context, and input state ;------------------------------------------------------------ StartupPreserveFlag0 = $48 StartupPreserveFlag1 = $49 ContextIndex = $4A ModeToggleFlag = $4B ActiveContext = $4C PendingStateIndex = $4D StateTransitionFlag = $4E InputLockFlag = $4F ;------------------------------------------------------------ ; Global timers and gameplay workspace ;------------------------------------------------------------ GlobalTickDivider = $50 TimerArrayBase = $51 TimerArrayElement2 = $53 GameVar54 = $54 GameVar55 = $55 GameVar56 = $56 GameVar57 = $57 GameVar58 = $58 GameVar5A = $5A GameVar5C = $5C GameVar5E = $5E GameVar5F = $5F GameVar62 = $62 GameVar63 = $63 GameVar64 = $64 GameVar67 = $67 GameVar68 = $68 GameVar6C = $6C GameVar70 = $70 GameVar72 = $72 ;------------------------------------------------------------ ; Player timers and input delays ;------------------------------------------------------------ PlayerTimerBase = $75 PlayerTimer1 = $76 PlayerTimer2 = $77 StateTimer = $78 InputRepeatDelay = $7D ;------------------------------------------------------------ ; Primary match and game-state variables ;------------------------------------------------------------ MatchState80 = $80 MatchState81 = $81 CurrentStageOrPlayer = $82 StateCounter83 = $83 StateCounter84 = $84 StateCounter85 = $85 StateCounter86 = $86 PreviousContextIndex = $87 RoundOrSubstate = $88 ContextRoundSelector = $89 GameState = $8A GameSubstate = $8B StateFlags8C = $8C StateControlFlag = $8D StateCounter8E = $8E StateCounter8F = $8F ;------------------------------------------------------------ ; Player state and countdown ;------------------------------------------------------------ PlayerStateBase = $90 PlayerState1 = $91 CountdownValue = $92 CountdownDivider = $93 ObjectStateArray9F = $9F ;------------------------------------------------------------ ; Additional gameplay and object state ;------------------------------------------------------------ StateVarA0 = $A0 StateVarA1 = $A1 StateVarA2 = $A2 StateVarA3 = $A3 StateVarA4 = $A4 StateVarA5 = $A5 StateVarA6 = $A6 StateVarA7 = $A7 StateVarA8 = $A8 StateVarA9 = $A9 StateVarAC = $AC StateVarAD = $AD StateVarAE = $AE StateVarAF = $AF ToggleStateB0 = $B0 StateVarB2 = $B2 ;------------------------------------------------------------ ; Object and behavior state ;------------------------------------------------------------ ObjectVarD0 = $D0 ObjectVarD1 = $D1 ObjectVarD2 = $D2 ObjectVarD4 = $D4 ObjectVarD5 = $D5 ObjectVarD6 = $D6 ObjectVarD7 = $D7 ObjectVarD8 = $D8 ObjectVarDA = $DA ObjectVarE9 = $E9 ObjectVarEE = $EE ObjectVarEF = $EF ;------------------------------------------------------------ ; Audio workspace ;------------------------------------------------------------ AudioPulse1State = $F0 AudioPulse2State = $F1 AudioTriangleState = $F2 AudioNoiseState = $F3 AudioPeriodOrEnvelope = $F4 AudioSequencePtrLo = $F5 AudioSequencePtrHi = $F6 AudioSequenceCursor = $F7 AudioChannelCursor = $F8 AudioChannelIndex = $F9 AudioSequenceState = $FA AudioRequest0 = $FB AudioRequest1 = $FC AudioRequest2 = $FD AudioRequest3 = $FE AudioRequest4 = $FF ; Verified vector-owned entry points IRQHandler = $C196 ; First-pass routine entry aliases. These emit no bytes. ; Names beyond the vectors are provisional and intentionally conservative. CheckBoundingBoxOverlap = $F730