95 lines
3.0 KiB
PHP
95 lines
3.0 KiB
PHP
; ============================================================================
|
|
; Bomberman NES - semantically refined RAM symbols
|
|
; ============================================================================
|
|
|
|
; Main-thread/NMI frame handoff.
|
|
FrameSyncFlag = $0B
|
|
|
|
; Software copies of PPU control registers.
|
|
PpuCtrlShadow = $0C
|
|
PpuMaskShadow = $0D
|
|
|
|
; Controller samples consulted by main-loop and menu paths.
|
|
ControllerState1 = $12
|
|
ControllerState2 = $13
|
|
|
|
; NMI VRAM-transfer window: $14 indexes into the $0600 transfer table,
|
|
; $15 is the upper limit compared against $14 to decide whether to keep
|
|
; transferring or switch to the screen-state path.
|
|
VramReadOffset = $14
|
|
VramWriteLimit = $15
|
|
|
|
; Selects which NMI sub-path is taken ($60=0 → sprite DMA; $60≠0 → VRAM data).
|
|
NmiPathSelector = $16
|
|
|
|
; Four-byte pseudo-random generator state used by AdvanceRandomState.
|
|
RandomState0 = $54
|
|
RandomState1 = $55
|
|
RandomState2 = $56
|
|
RandomState3 = $57
|
|
|
|
; Alternate random-state byte at $E4 (decremented at CPU $E71B; distinct from
|
|
; RandomState0 which lives at $54 — zero-page is reused across subsystems).
|
|
RandomStateAlt = $E4
|
|
|
|
; Main loop delay counters.
|
|
MainDelay = $70
|
|
SubDelay = $71
|
|
|
|
; Screen / mode state.
|
|
ScreenState = $72
|
|
GameMode = $59
|
|
|
|
; NMI work-pending flag: nonzero means the NMI should perform VRAM transfers.
|
|
NmiWorkPending = $60
|
|
|
|
; Object coordinate / state temporaries used by gameplay object processing.
|
|
ObjectScreenX = $1F
|
|
ObjectScreenY = $20
|
|
ObjectXLimit = $73
|
|
ObjectSpawnParam = $28
|
|
ObjectSpawnY = $29
|
|
ObjectSpawnX = $2A
|
|
ObjectSpawnWidth = $2B
|
|
ObjectSpawnHeight = $2C
|
|
ObjectStateFlags = $5C
|
|
ObjectStateTimer = $5D
|
|
ObjectStateExtra = $5E
|
|
|
|
; Frame counters and stage counters.
|
|
FrameCounter = $33
|
|
StageCounter = $93
|
|
|
|
; Object work fields and bonus timer.
|
|
ObjectWork0 = $9C
|
|
ObjectWork1 = $9D
|
|
ObjectWork2 = $9E
|
|
ObjectWork3 = $9F
|
|
BonusTimer = $A4
|
|
|
|
; Game mode counter and object type.
|
|
GameModeCounter = $B0
|
|
ObjectType = $B1
|
|
FrameDelay = $B5
|
|
|
|
; Frame parity toggle (NMI toggles this each frame).
|
|
FrameParity = $DB
|
|
|
|
; General-purpose indirect pointer used by RAM clearing and transfer loops.
|
|
; Aliased with sound dispatcher state below (zero-page is reused).
|
|
IndirectPtrLo = $E0
|
|
IndirectPtrHi = $E1
|
|
|
|
; Sound dispatcher and channel-delay state observed in the $E642 sound engine.
|
|
; $E0/$E1 double as IndirectPtrLo/IndirectPtrHi; $E2/$E3 are dedicated delays.
|
|
SoundCommandState = $DF
|
|
SoundDispatchIndex = $E0 ; aliases IndirectPtrLo
|
|
SoundDelay0 = $E1 ; aliases IndirectPtrHi
|
|
SoundDelay1 = $E2
|
|
SoundDelay2 = $E3
|
|
|
|
; Audio data pointers used by the sound engine.
|
|
AudioPtrLo = $AC
|
|
AudioPtrHi = $AD
|
|
AudioArgLo = $AE
|
|
AudioArgHi = $AF |