; Donkey Kong Jr. (JU) - application-specific zero-page/RAM symbols ; Pass 2 status: ; Semantic names are used only where access tracing gives a stable role. ; ZpXX names remain deliberately neutral where a byte is reused or unresolved. ; Shared scratch and indirect pointers Zp00 = $00; storage with a role not yet unique enough for a behavioral name Zp01 = $01; storage with a role not yet unique enough for a behavioral name Zp02 = $02; storage with a role not yet unique enough for a behavioral name Zp03 = $03; storage with a role not yet unique enough for a behavioral name Zp04 = $04; storage with a role not yet unique enough for a behavioral name Zp05 = $05; storage with a role not yet unique enough for a behavioral name Zp06 = $06; storage with a role not yet unique enough for a behavioral name Zp07 = $07; storage with a role not yet unique enough for a behavioral name Zp08 = $08; storage with a role not yet unique enough for a behavioral name Zp09 = $09; storage with a role not yet unique enough for a behavioral name Zp0A = $0A; storage with a role not yet unique enough for a behavioral name Zp0B = $0B; storage with a role not yet unique enough for a behavioral name Zp0C = $0C; storage with a role not yet unique enough for a behavioral name Zp0D = $0D; storage with a role not yet unique enough for a behavioral name Zp0E = $0E; storage with a role not yet unique enough for a behavioral name Zp0F = $0F; storage with a role not yet unique enough for a behavioral name ; PPU software shadows PPUControlShadow = $10 PPUMaskShadow = $11 PPUScrollXShadow = $12 PPUScrollYShadow = $13 ; Two controller records, selected with X = 0 or 2 ControllerRawState = $14 ControllerFilteredState = $15 Controller2RawState = $16 Controller2FilteredState = $17 ; Eight-byte pseudo-random shift-register state RandomLfsr0 = $18 RandomLfsr1 = $19 RandomLfsr2 = $1A RandomLfsr3 = $1B RandomLfsr4 = $1C RandomLfsr5 = $1D RandomLfsr6 = $1E RandomLfsr7 = $1F ; General gameplay/audio work area CollisionBounds0 = $20 CollisionBounds1 = $21 CollisionBounds2 = $22 CollisionBounds3 = $23 BoundingBoxFlags = $24 BoundingBoxCoord1 = $25 BoundingBoxCoord2 = $26 BoundingBoxCoord3 = $27 Zp28 = $28; storage with a role not yet unique enough for a behavioral name Zp29 = $29; storage with a role not yet unique enough for a behavioral name Zp2A = $2A; storage with a role not yet unique enough for a behavioral name Zp2B = $2B; storage with a role not yet unique enough for a behavioral name PlayerVerticalFraction = $2C Zp2D = $2D; storage with a role not yet unique enough for a behavioral name PlayerVerticalPosition = $2E Zp2F = $2F; storage with a role not yet unique enough for a behavioral name Zp30 = $30; storage with a role not yet unique enough for a behavioral name Zp31 = $31; storage with a role not yet unique enough for a behavioral name Zp32 = $32; storage with a role not yet unique enough for a behavioral name Zp33 = $33; storage with a role not yet unique enough for a behavioral name SoundTimerDivider = $34 SoundTimerArray = $35 SharedActionTimer = $36 Zp37 = $37; storage with a role not yet unique enough for a behavioral name PlayerSpriteVisibilityTimer = $38 GameStateTimer = $39 ObjectActiveArray = $3A Zp3B = $3B; storage with a role not yet unique enough for a behavioral name ActionCooldown = $3C Zp3D = $3D; storage with a role not yet unique enough for a behavioral name CollisionLeft = $3E CollisionTop = $3F ; State and gameplay bytes. Names are conservative pending deeper state tracing. CollisionRight = $40 CollisionBottom = $41 CollisionMatchX = $42 CollisionMatchY = $43 CollisionMatchRight = $44 CollisionMatchBottom = $45 GameMode = $46 PendingGameMode = $47 GameModeTimer = $48 CurrentPlayerIndex = $49 StageOrScreenIndex = $4A DifficultyOrRoundIndex = $4B PlayerLivesOrModeCount = $4C GameplaySubmode = $4D TwoPlayerModeFlag = $4E DemoInputIndex = $4F DemoInputTimer = $50 DemoInputCode = $51 TitleScreenInitialized = $52 LevelObjectProgress = $53 PlayerInputDirection = $54 PreviousInputDirection = $55 PlayerPositionFraction = $56 ObjectPositionFraction = $57 Zp58 = $58; storage with a role not yet unique enough for a behavioral name Zp59 = $59; storage with a role not yet unique enough for a behavioral name Zp5A = $5A; storage with a role not yet unique enough for a behavioral name Zp5B = $5B; storage with a role not yet unique enough for a behavioral name Zp5C = $5C; storage with a role not yet unique enough for a behavioral name Zp5D = $5D; storage with a role not yet unique enough for a behavioral name Zp5E = $5E; storage with a role not yet unique enough for a behavioral name Zp5F = $5F; storage with a role not yet unique enough for a behavioral name Zp60 = $60; storage with a role not yet unique enough for a behavioral name Zp61 = $61; storage with a role not yet unique enough for a behavioral name Zp62 = $62; storage with a role not yet unique enough for a behavioral name PlayerAuxSpritePending = $63 BonusTickDivider = $64 BonusCounter = $65 DeathAnimationActive = $66 DeathAnimationDirection = $67 PlayerCollisionResult = $68 CollidingObjectOamOffset = $69 StartButtonLatch = $6A PlayerState = $6B PreviousPlayerState = $6C PlayerFacing = $6D PreviousPlayerFacing = $6E PlayerClimbPhase = $6F PlayerClimbDirection = $70 PlayerMovementSubstate = $71 MovementCollisionCode = $72 PlayerCollisionAnchorLeft = $73 PlayerCollisionAnchorRight = $74 PlayerClimbOffset = $75 PlayerStateReferenceY = $76 PlayerLandingTile = $77 PlayerStatePhase = $78 PlayerStateTransitionActive = $79 PlayerVerticalSpeedInteger = $7A PlayerFallThreshold = $7B PlayerVerticalAcceleration = $7C TitleInputRepeatTimer = $7D PlayerStateCounter = $7E PlayerVerticalVelocityFraction = $7F Zp80 = $80; storage with a role not yet unique enough for a behavioral name Zp81 = $81; storage with a role not yet unique enough for a behavioral name PlayerVerticalAccelerationFraction = $82 PlayerVerticalAccelerationInteger = $83 Zp84 = $84; storage with a role not yet unique enough for a behavioral name Zp85 = $85; storage with a role not yet unique enough for a behavioral name PlayerGravityFraction = $86 PlayerGravityInteger = $87 Zp88 = $88; storage with a role not yet unique enough for a behavioral name Zp89 = $89; storage with a role not yet unique enough for a behavioral name Zp8A = $8A; storage with a role not yet unique enough for a behavioral name Zp8B = $8B; storage with a role not yet unique enough for a behavioral name CarriedObjectActive = $8C CollectibleSpriteTileArray = $8D Zp8E = $8E; storage with a role not yet unique enough for a behavioral name Zp8F = $8F; storage with a role not yet unique enough for a behavioral name Zp90 = $90; storage with a role not yet unique enough for a behavioral name StageObjectDataPointer = $91 CurrentStageObjectDataPointerHi = $92 StageObjectDataLength = $93 CollectedObjectVramRecord = $94 CurrentCollectedObjectVramAddressHi = $95 Zp96 = $96; storage with a role not yet unique enough for a behavioral name Zp97 = $97; storage with a role not yet unique enough for a behavioral name Zp98 = $98; storage with a role not yet unique enough for a behavioral name Zp99 = $99; storage with a role not yet unique enough for a behavioral name CollectibleActiveArray = $9A Zp9B = $9B; storage with a role not yet unique enough for a behavioral name Zp9C = $9C; storage with a role not yet unique enough for a behavioral name Zp9D = $9D; storage with a role not yet unique enough for a behavioral name CollectedObjectCount = $9E PreviousCollectedObjectCount = $9F StagePrimaryObjectCount = $A0 ObjectMotionStep = $A1 StageSecondaryObjectIndex = $A2 EnemyStateArray = $A3 ZpA4 = $A4; storage with a role not yet unique enough for a behavioral name ZpA5 = $A5; storage with a role not yet unique enough for a behavioral name EnemyAlternateStateArray = $A6 ZpA7 = $A7; storage with a role not yet unique enough for a behavioral name EnemyDirectionInitializedArray = $A8 EnemyRouteSelectorArray = $A9 ZpAA = $AA; storage with a role not yet unique enough for a behavioral name ZpAB = $AB; storage with a role not yet unique enough for a behavioral name PlatformDirectionState = $AC PlayerPlatformContact = $AD PlatformEdgeContact = $AE ZpAF = $AF; storage with a role not yet unique enough for a behavioral name StageSecondaryObjectCount = $B0 SpawnedEnemyCount = $B1 StageObjectMode = $B2 EnemySpawnPending = $B3 EnemyDirectionArray = $B4 ZpB5 = $B5; storage with a role not yet unique enough for a behavioral name ZpB6 = $B6; storage with a role not yet unique enough for a behavioral name ZpB7 = $B7; storage with a role not yet unique enough for a behavioral name ZpB8 = $B8; storage with a role not yet unique enough for a behavioral name EnemySpawnDelayArray = $B9 ZpBA = $BA; storage with a role not yet unique enough for a behavioral name ZpBB = $BB; storage with a role not yet unique enough for a behavioral name PreviousPlatformContact = $BC CurrentPlatformContact = $BD PlatformTurnaroundFlag = $BE ZpBF = $BF; storage with a role not yet unique enough for a behavioral name ZpC0 = $C0; storage with a role not yet unique enough for a behavioral name ZpC1 = $C1; storage with a role not yet unique enough for a behavioral name ZpC2 = $C2; storage with a role not yet unique enough for a behavioral name SpecialObjectIndex = $C3 SpecialObjectX = $C4 ZpC5 = $C5; storage with a role not yet unique enough for a behavioral name ZpC6 = $C6; storage with a role not yet unique enough for a behavioral name ZpC7 = $C7; storage with a role not yet unique enough for a behavioral name ZpC8 = $C8; storage with a role not yet unique enough for a behavioral name ZpC9 = $C9; storage with a role not yet unique enough for a behavioral name ZpCA = $CA; storage with a role not yet unique enough for a behavioral name ZpCB = $CB; storage with a role not yet unique enough for a behavioral name ZpCC = $CC; storage with a role not yet unique enough for a behavioral name ZpCD = $CD; storage with a role not yet unique enough for a behavioral name StageObjectAnimationMode = $CE StageObjectOamOffset = $CF BonusSpriteActive = $D0 VramMetatileBuffer = $D1 ZpD2 = $D2; storage with a role not yet unique enough for a behavioral name ZpD3 = $D3; storage with a role not yet unique enough for a behavioral name ZpD4 = $D4; storage with a role not yet unique enough for a behavioral name ZpD5 = $D5; storage with a role not yet unique enough for a behavioral name ZpD6 = $D6; storage with a role not yet unique enough for a behavioral name ZpD7 = $D7; storage with a role not yet unique enough for a behavioral name ZpD8 = $D8; storage with a role not yet unique enough for a behavioral name ZpD9 = $D9; storage with a role not yet unique enough for a behavioral name StageRopeAddressHi = $DA StageRopeAddressLoArray = $DB ZpDC = $DC; storage with a role not yet unique enough for a behavioral name ZpDD = $DD; storage with a role not yet unique enough for a behavioral name ZpDE = $DE; storage with a role not yet unique enough for a behavioral name ZpDF = $DF; storage with a role not yet unique enough for a behavioral name ZpE0 = $E0; storage with a role not yet unique enough for a behavioral name ZpE1 = $E1; storage with a role not yet unique enough for a behavioral name ZpE2 = $E2; storage with a role not yet unique enough for a behavioral name ZpE3 = $E3; storage with a role not yet unique enough for a behavioral name ZpE4 = $E4; storage with a role not yet unique enough for a behavioral name ZpE5 = $E5; storage with a role not yet unique enough for a behavioral name ZpE6 = $E6; storage with a role not yet unique enough for a behavioral name PendingLevelObjectTask = $E7 DemoInputActive = $E8 GameplayInitializationPending = $E9 MovementFrameCounter = $EA PauseActive = $EB PreviousStartButtonState = $EC TitleCursorY = $ED PauseDebounceTimer = $EE SelectedPlayerMode = $EF Pulse1EffectFlags = $F0 Pulse1EffectTimer = $F1 Pulse1PitchAccumulator = $F2 AudioEffectTimer = $F3 AudioPitchAccumulator = $F4 TriangleEffectTimer = $F5 TrianglePitchAccumulator = $F6 MusicDataPointerLo = $F7 MusicDataPointerHi = $F8 MusicNoisePosition = $F9 MusicPulsePosition = $FA AudioLfoPhase = $FB SoundRequestFlags = $FC SecondarySoundRequestFlags = $FD ObjectSoundRequestFlags = $FE GameplayEventFlags = $FF