Adds remaining NROM as _wip Update gitignore to not keep object files Adds AGENTS.md as this is an AI helped project
232 lines
6.6 KiB
PHP
232 lines
6.6 KiB
PHP
;------------------------------------------------------------
|
|
; 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
|