; ============================================================================ ; 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