; Balloon Fight application-specific RAM and forward references. ; Spawn-dispatch state DispatchPointerLo = $25 DispatchPointerHi = $26 SpawnCommandPointerLo = $23 SpawnCommandPointerHi = $24 SpawnParameter = $14 SpawnPixelPosition = $15 ; Eight-entry effect-object pool ($00-$07) EffectObjectState = $055D EffectObjectPosX = $0567 EffectObjectPosY = $057B ; Twenty-entry gameplay-object pool ($00-$13) GameplayObjectPosX = $0490 GameplayObjectPosY = $04A4 GameplayObjectVelocityY = $04E0 GameplayObjectVelocityX = $04F4 GameplayObjectParameter = $0508 GameplayObjectPosXHi = $051C GameplayObjectState = $0530 ; NMI/PPU state PpuControlShadow = $00 PpuMaskShadow = $01 NmiCompletedFlag = $02 RenderingDisabledFlag = $16 PpuScrollX = $17 PpuControlBase = $18 FrameCounter = $19 PpuSourcePtrLo = $21 PpuSourcePtrHi = $22 PpuDestinationHi = $50 PpuBufferReadOffset = $52 PpuBufferWriteOffset = $53 PpuCommandAddressHi = $54 PpuCommandAddressLo = $55 PpuCommandLength = $56 Temp12 = $12 ; Temporary forward references outside the decoded block MainInitialization = $F1D4 UpdatePpuTransferSources = $D60D BuildFrameOam = $D798 WaitForFrame = $F465 InitializeOrQueueObject = $D6DE SortOrInitializeRecords = $C579 InitializeAudio = $F4A5 UpdateGameplayObjects = $E691 UpdateSpecialObjectSystem = $C6F9 ReflectObjectYVelocity = $CA4F GetRandomValue = $F1B3 ; Sorted five-byte record table helpers RecordIndex = $12 ReverseRecordIndex = $13 RecordPtrLo = $1D RecordPtrHi = $1E DestinationPtrLo = $1F DestinationPtrHi = $20 SelectedRecordIndex = $43 SelectedRecordIndexCopy = $49 ScaledRecordValue = $4A RoundSeedValue = $0559 SortedRecordTable = $0700 CurrentRecord = $0003 ; Temporary forward references used by the decoded record helpers UpdateRoundSeedSource = $D0E2 DivideOrScaleRecordValue = $D77C ; Carrier/rescue sequence state PlayerLifecycleState = $7F CarrierDisplayMode = $87 PlayerSlotState = $88 CarrierPhase = $89 PlayerPosX = $91 Player0PosX = $92 CarrierTargetX = $99 PlayerPosY = $9A Player0PosY = $9B CarrierPosY = $A2 SoundRequestFlags2 = $F2 CarrierSequenceActive = $0489 CarrierMode = $048A CarrierTargetPlayer = $048B CarrierDropPending = $048C CarrierSequenceTimer = $048D CarrierSavedValue = $0450 PlayerVariantTable = $0448 PlayerAnimationState = $0451 ; Forward references used by the carrier display/update code BuildObjectMetasprite = $E3A4 ; Round initialization state RoundIndex = $3C CurrentObjectIndex = $3E RoundSpawnDelay = $B8 SpawnSelector = $BA SoundRequestFlags3 = $F3 GameplayObjectAuxState = $0544 OamEntryE0Y = $02E0 OamEntryE4Y = $02E4 OamEntryE8Y = $02E8 ; Forward references used by round initialization SpawnRoundObjects = $C77A ; Round spawner and HUD state RoundSpawnRandomLimit = $A3 SelectedSpawnIndex = $A4 SelectedSpawnIndexCopy = $A5 RoundHudTile = $5A ; Three-byte HUD command staged at $57-$59 before buffer append RoundHudCommandAddressHi = $57 RoundHudCommandAddressLo = $58 RoundHudCommandLength = $59 SoundRequestFlags0 = $F0 SoundRequestFlags1 = $F1 GameplayObjectVelocityFracY = $04B8 GameplayObjectVelocityIntY = $04CC ; Temporary forward references for round spawn parameter tables ; Round-object renderer state CurrentRoundObjectTile = $12 RoundSpawnBaseX = $B2 RoundSpawnBaseY = $B5 OamBuffer = $0200 ; Forward tables and routines used by the round-object renderer ; Table-driven gameplay-object boundary tests BoundsLeftPtrLo = $23 BoundsLeftPtrHi = $24 BoundsRightPtrLo = $25 BoundsRightPtrHi = $26 BoundsTopPtrLo = $27 BoundsTopPtrHi = $28 BoundsBottomPtrLo = $29 BoundsBottomPtrHi = $2A GameplayObjectCollisionFlags = $CC BoundsCandidateIndex = $CD ; Forward routine at the next decoded boundary ; Gameplay-object/player interaction state CollisionDeltaX = $12 CollisionDeltaY = $13 PlayerCollisionDisable = $BD PlayerStateTimer = $045A PlayerHorizontalImpulse = $041B PlayerVerticalImpulse = $042D ; Bonus-object subsystem BonusEffectCounter = $CB ActiveBonusObjectIndex = $05D1 BonusObjectPosX = $05D2 BonusObjectPosY = $05DC BonusHudAddressLo = $05E6 BonusHudAddressHi = $05F0 BonusObjectPhase = $05FA BonusObjectTimer = $0604 BonusObjectPhaseTimer = $060E ; Bonus HUD command staged at $57-$5C HudCommandAddressHi = $57 HudCommandAddressLo = $58 HudCommandLength = $59 HudCommandTile0 = $5A HudCommandTile1 = $5B HudCommandTile2 = $5C ; Forward references used by interaction and bonus-object code AbsoluteDifference = $F08E ApplyBonusEffect = $E983 AdjustPlayerHorizontalState = $EBB2 AdjustPlayerVerticalState = $EBBB ; Ten-slot particle/effect subsystem RandomState = $1B MotionDeltaLo = $12 MotionDeltaHi = $13 ParticleScrollDelta = $055A ParticleState = $055D ParticlePosX = $0567 ParticlePosXFrac = $0571 ParticlePosY = $057B ParticlePosYFrac = $0585 ParticleVelocityXHi = $058F ParticleVelocityXLo = $0599 ParticleVelocityYLo = $05B7 ParticleVelocityYHi = $05C1 ParticleSpawnRemaining = $05CB ParticleSpawnCountdown = $05CC ParticleOamBase = $0250 ; Forward references used by the particle subsystem UpdateSignedMotionAccumulator = $F1A6 ; Particle result/sequence state ParticleSequenceIndex = $0558 ParticleSequenceValue = $0559 SequenceDataLo = $055B SequenceDataHi = $055C PlayerParticleHitCount = $05CD PlayerParticleHitCount2 = $05CE SequencePlayerIndex = $3E SequenceStep = $46 SequenceValueLo = $47 SequenceValueHi = $48 SequencePointerLo = $68 SequencePointerHi = $69 SequenceState = $BE ; Forward parameter tables for the next sequence-data block ; Shared player-count and PPU staging aliases used by the particle sequence PlayerCountMinusOne = $40 PlayerActiveFlags = $41 PpuCommandData0 = $57 PpuCommandData1 = $58 PpuCommandData2 = $59 PpuBufferHead = $5D