| Address | Length | Description | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 5C78 | 1 |
|
|||||||||||||||||
| 5D43 | 1 |
|
|||||||||||||||||
| 5EEE | 1 |
|
|||||||||||||||||
| 5EEF | 1 |
|
|||||||||||||||||
| 5EF0 | 1 |
|
|||||||||||||||||
| 5EF1 | 1 |
|
|||||||||||||||||
| 5EF2 | 1 |
|
|||||||||||||||||
| 5EF3 | 1 |
|
|||||||||||||||||
| 5EF4 | 1 |
|
|||||||||||||||||
| 5EF5 | 1 |
|
|||||||||||||||||
| 5EF6 | 1 |
|
|||||||||||||||||
| 5EF7 | 2 |
Pointer to current plane sprite data. Points into all_ff sprite bank, offset by speed for animation frame selection.
|
|||||||||||||||||
| 5EF9 | 1 |
|
|||||||||||||||||
| 5EFA | 1 |
Island terrain profile index (0-7). Selects which of 8 island shapes from data_terrain_profiles to render.
|
|||||||||||||||||
| 5EFB | 1 |
Island definition byte 2. Second byte from island data at data_islands, controls island width/shape.
|
|||||||||||||||||
| 5EFC | 1 |
Island definition byte 3. Third byte from island data at data_islands, controls island rendering parameters.
|
|||||||||||||||||
| 5EFD | 1 |
|
|||||||||||||||||
| 5F00 | 46 |
Each slot is a 3-byte entry that can hold one game object (enemy, fuel depot, etc.). Iterated by operate_viewport_slots (operate) and check_missile_vs_objects (collision). New objects added via add_object_to_set. See Glossary for terminology.
|
|||||||||||||||||
| 5F2E | 49 |
Array of up to 16 explosion fragments. Each entry is 3 bytes. Animated by render_explosions. New explosions added via add_object_to_set.
Explosion frames: 1,5=sprite_explosion_f1 (small), 2,4=sprite_explosion_f2 (medium), 3=sprite_explosion_f3 (large), 6=sprite_erasure (erase).
|
|||||||||||||||||
| 5F5F | 1 |
Controls when newly spawned objects become active (start moving/shooting). Objects spawn inactive (bit 7 clear in slot definition) and activate when (interrupt_counter AND mask) == 0. Checked in operate_viewport_slots.
|
|||||||||||||||||
| 5F60 | 2 |
Current slot pointer. Iterator for traversing viewport_slots during object processing.
|
|||||||||||||||||
| 5F62 | 2 |
|
|||||||||||||||||
| 5F64 | 1 |
Also determines sprite animation frame and number of terrain fragments rendered per frame. Horizontal movement is fixed at 2 pixels per input regardless of scroll speed.
|
|||||||||||||||||
| 5F65 | 1 |
|
|||||||||||||||||
| 5F66 | 1 |
Consumption rate does NOT depend on scroll speed. Low fuel warning triggers when <$40 (top 2 bits clear). Refueling only occurs when plane is centered over depot (not banking left/right).
|
|||||||||||||||||
| 5F67 | 1 |
|
|||||||||||||||||
| 5F68 | 1 |
Controls what actions are allowed and how rendering/collision works.
During SCROLL_IN and OVERVIEW, player input is ignored and no collision occurs. During REFUEL, fuel is added each frame and collisions use plane position instead of missile position.
|
|||||||||||||||||
| 5F69 | 1 |
Plane sprite bank offset. $00=centered, $04=banked left/right. Reset to $00 at the start of each frame, then set to $04 by restore_plane_state_after_render after the banked sprite is rendered. Read by add_fuel, but always $00 at that call site — the check is dead code.
|
|||||||||||||||||
| 5F6A | 1 |
|
|||||||||||||||||
| 5F6B | 1 |
|
|||||||||||||||||
| 5F6C | 1 |
|
|||||||||||||||||
| 5F6D | 1 |
|
|||||||||||||||||
| 5F6E | 1 |
|
|||||||||||||||||
| 5F6F | 1 |
|
|||||||||||||||||
| 5F70 | 2 |
|
|||||||||||||||||
| 5F72 | 1 |
|
|||||||||||||||||
| 5F73 | 2 |
|
|||||||||||||||||
| 5F75 | 1 |
|
|||||||||||||||||
| 5F76 | 1 |
Current level terrain array index (1-255). Points to current element in level definition at level_terrains. Incremented as terrain scrolls.
|
|||||||||||||||||
| 5F78 | 2 |
|
|||||||||||||||||
| 5F7A | 1 |
|
|||||||||||||||||
| 5F7B | 2 |
|
|||||||||||||||||
| 5F7D | 1 |
|
|||||||||||||||||
| 5F7E | 2 |
|
|||||||||||||||||
| 5F81 | 1 |
|
|||||||||||||||||
| 5F83 | 2 |
|
|||||||||||||||||
| 5F85 | 2 |
|
|||||||||||||||||
| 5F87 | 2 |
|
|||||||||||||||||
| 5F89 | 2 |
|
|||||||||||||||||
| 5F8B | 2 |
|
|||||||||||||||||
| 5F8D | 2 |
|
|||||||||||||||||
| 5F8F | 2 |
|
|||||||||||||||||
| 673C | 1 |
|
|||||||||||||||||
| 6BB0 | 1 |
|
|||||||||||||||||
| 6C30 | 1 |
|
|||||||||||||||||
| 6C7A | 1 |
|
|||||||||||||||||
| 7383 | 1 |
Controls tank shell behavior during flight and explosion.
Speed is pseudo-random (1-4), set when shell is fired at tank_fire_shell_entry.
|
|||||||||||||||||
| 7384 | 1 |
Current step in the shell's parabolic arc. Incremented each frame while flying. At step 8, shell explodes via render_tank_shell_explosion.
Higher steps produce lower-pitched whistle sounds (BEEPER with HL = step × 256).
|
|||||||||||||||||
| 7385 | 2 |
Current screen position of the flying shell. Updated each frame based on speed and orientation. Cleared to $0000 when shell is removed.
|
|||||||||||||||||
| 8B08 | 2 |
Pointer to collision handler routine at collision_dispatcher. Called when sprite rendering detects pixel overlap.
|
|||||||||||||||||
| 8B0A | 2 |
|
|||||||||||||||||
| 8B0C | 2 |
|
|||||||||||||||||
| 8B0E | 2 |
|
|||||||||||||||||
| 8B10 | 2 |
|
|||||||||||||||||
| 8B12 | 2 |
|
|||||||||||||||||
| 8B14 | 2 |
|
|||||||||||||||||
| 8B16 | 2 |
|
|||||||||||||||||
| 8B1A | 1 |
|
|||||||||||||||||
| 923B | 1 |
Player 1 lives remaining (0-3). Initialized to LIVES_INITIAL (4) at new game, then immediately decremented to 3 at the end of the first scroll-in (play). Decremented again at the end of each subsequent scroll-in after a death. Game over is triggered when 0 at the time of the player's next death.
|
|||||||||||||||||
| 923C | 1 |
Player 2 lives remaining (0-3). Initialized to LIVES_INITIAL (4) at new game, then immediately decremented to 3 at the end of the first scroll-in (play). Decremented again at the end of each subsequent scroll-in after a death. Game over is triggered when 0 at the time of the player's next death.
|
|||||||||||||||||
| 9283 | 2 |
Pointer to state_controls at state_controls. Allows indirect access to control state bitmask.
|
|||||||||||||||||
| 9285 | 2 |
|
|||||||||||||||||
| 9287 | 2 |
|
|||||||||||||||||
| 9289 | 2 |
|
|||||||||||||||||
| 928B | 2 |
|