Address Description
5CD2
Game initialization and interrupt setup
5D06
Return to control selection dialog
5D10
Start gameplay or overview mode based on user selection
5D2B
Start overview mode
5D35
Start gameplay mode
5D44
Initialize game state for overview/demo mode.
5D9F
Decrease player 2 lives
5DA6
Initialize and start gameplay mode
5F91
Main gameplay loop
5FDA
Scan cursor keys
600A
Scan Kempston joystick
6039
Scan Sinclair joystick
6068
Scan keyboard
60A5
Render player plane and terrain fragments
6124
Calculate fuel gauge sprite offset
6136
Collision detection dispatcher
615E
Handle COLLISION_MODE_FIGHTER collision detection
61BB
Check collision against bridges and viewport objects
6249
Increment player 2's bridge counter
6256
Handle COLLISION_MODE_FUEL_DEPOT (initiate refueling)
6268
Check collision with explosion fragments
62CE
End of fragment list - no collision found
62D4
Get Y offset for balloon collision
62D7
Get Y offset for fuel depot collision
62DA
Increase vertical coordinate of the object by the value of state_speed.
62E0
Decrease vertical coordinate of the object by the value of state_speed.
62E8
Check missile collision against viewport objects
63FC
Reset gameplay mode to normal and exit collision system
6414
Handle missile hit on regular helicopter
6423
Handle missile hit on ship
6444
Handle missile hit on advanced helicopter
6453
Handle missile hit on fighter
6462
Handle missile hit on balloon
6478
Handle collision with fuel depot
649E
Jump to collision finalization
64A1
Handle refueling from fuel depot
64BC
Print current bridge number on status line
64E5
Print bridge number for Player 2
64F1
Common bridge printing for Player 2
6506
Print a space character
650A
Handle player death
6568
Restart gameplay for current player
656F
Check if Player 2 has lives remaining when Player 1 is out
6577
Game Over
6587
Setup Player 2 status line during overview mode
65AB
Switch to Player 2 after Player 1 death
65BB
Switch to Player 2 when Player 1 dies in two-player mode
65CB
Handle Player 2 death and determine next game state
65DE
Switch to Player 1 after Player 2 death
65F3
Move player plane right by 2 pixels
6630
Restore plane state after rendering
6642
Move player plane left by 2 pixels
6682
Render player plane sprite
66CC
Load banked plane sprite address
66D0
Advance game scroll and update bridge position
66EE
Update bridge Y position during scroll
6704
Clear bridge when scrolled off screen
670A
Handle up/accelerate input
6717
Handle down/decelerate input
6724
Handle fire button input
673D
Animate and render player missile
678E
Clear CONTROLS_BIT_FIRE_SOUND flag
6794
Finalize collision and erase missile sprite
6831
Add $0800 offset to screen pointer
6836
Add $1000 offset to screen pointer
683B
Scroll screen pixels vertically
68A1
Clear top screen rows after scrolling
68B7
Scroll screen attributes up by one row
68C5
Copy bottom attribute row to row 1 and refill bottom
68E9
Initialize bridge state for current player
6927
Render bridge attributes to bottom row
693C
Initialize bridge approach state
6947
Clear bridge destroyed flag
694D
Advance to next bridge/level
6963
Wrap bridge index from 49 to 1
696B
Initialize island state from terrain data
6990
Render one line of island terrain
6A3F
Calculate mirrored right edge position
6A45
Calculate offset right edge position
6A4A
Get player 2's bridge progress
6A4F
Load next terrain fragment and initialize rendering state
6AA3
Render one pixel line of terrain
6B58
Calculate mirrored right edge (terrain extras mode 1)
6B5E
Calculate offset right edge (terrain extras mode 2)
6B63
Load canal sprite (river-adjacent side)
6B6B
Load canal sprite (road-adjacent side)
6B73
Load road/bridge sprite
6B7B
Render special terrain fragment (bridge/road area)
6BB1
Keep the game paused
6BBF
Handle the Enter key pressed
6BD2
Reset to control selection screen.
6BDB
Maskable interrupt handler (IM 2)
6BED
Process control state flags and trigger sound effects
6C24
Return from interrupt handler
6C31
Play bonus life sound effect
6C52
Complete bonus life sound sequence
6C5D
Play normal speed engine sound
6C7B
Play explosion sound effect
6CAD
Complete explosion sound sequence
6CB8
Play fast speed engine sound
6CD6
Play slow speed engine sound
6CF4
Play low fuel warning sound
6D17
Level overview screen
6DDD
Reset scrolling title text
6DEB
Initializes the starting bridge based on the value of state_game_mode using starting_bridges for the lookup.
6DFF
Consume fuel and update gauge display
6E40
Add fuel during refueling
6E86
Set low fuel warning flag
6E8C
Clear low fuel warning flag
6E92
Play tank full sound
6E9C
Create explosion fragment at coordinates
6EAB
Add object entry to a set
6EBC
Write object entry to set
6EC8
Process and render all active explosions
6F63
Load frame 1/5 explosion sprite
6F67
Load frame 2/4 explosion sprite
6F6B
Load frame 3 explosion sprite
6F6F
Load explosion erasure sprite
6F73
Reset explosions set pointer
6F7A
Remove completed explosion from set
6F80
Spawn objects from level data slot
6FBB
Render rock sprite
6FE6
Load pointer to right-facing enemy sprites
6FEA
Set up object screen position for rendering
6FF6
Spawn and render enemy on screen
7038
Load ship screen attributes
703B
Load fighter screen attributes
703E
Load tank screen attributes
7046
Set XOR blending mode for sprite rendering
7051
Render fuel station
706C
Render balloon
708E
Main viewport slot processing loop.
7104
Ship or helicopter operation routine
7113
Advance left-facing ship or helicopter
7128
Continue ship/helicopter rendering
7155
Reset left-moving fighter position
7158
Fighter operation routine
716B
Continue fighter operation
7192
Advance right-facing fighter
719F
Reset right-moving fighter position
71A2
Animate tank shell explosion
720E
Finish tank shell explosion animation
7224
Handle non-activated object
7248
Load right-facing helicopter rotor sprite
724C
Animate object (helicopter rotor)
7259
Animate helicopter rotor
728B
Advance tank right by 4 pixels
7290
Signal road tank at center
7296
Tank operation routine
72E6
Set XOR/XOR blending mode
72EF
Set OR/OR blending mode
72F8
Adjust tank position for left orientation
72FD
Adjust tank position for right orientation
7302
Operate tank on river bank
7343
Initialize tank shell state
7358
Cancel and remove tank shell
735E
Check shell initialization condition
7380
Invert coordinate for position calculation
7387
Invert shell coordinate delta
738E
Invert helicopter missile offset
7393
Operate helicopter missile
73D0
Remove helicopter missile
73D8
Add X offset for right-facing missile spawn
73DD
Render helicopter missile (spawn new)
7415
Handle helicopter missile collision
7441
Operate tank shell
74A0
Erase off-screen tank shell
74C6
Trigger tank shell explosion
74E4
Remove tank shell from game
74EE
Handle tank after bridge destruction
7546
Get bridge number for player 1
754C
Operate fuel station
758A
Clip fuel station height to viewport
75A2
Advance right-facing ship or helicopter
75BA
Load enemy sprite pointer
75D0
Reverse enemy direction at river bank
7627
Reset current_slot_ptr to the start of viewport_slots.
762E
Remove an object from the viewport array.
7649
Operate balloon movement and rendering.
76AC
A useless procedure that unconditionally jumps to operate_viewport_slots.
76AF
Right-facing balloon movement.
76DA
Handle balloon terrain collision.
7804
Clear screen and enter setup menu.
7AB9
Initial game setup
7ACD
Wait until the user chooses a valid control type or switch to the overview mode on timeout.
7B07
Wait until the user chooses a valid game mode.
7B57
Switch to overview/demo mode on timeout.
8A02
Generate firing sound effect.
8A1B
Scroll the text crawl row left by 1 pixel.
8A33
Initialize UDG and screen attributes.
8A4E
Calculate screen address from pixel coordinates.
8B1E
Render a sprite at position from previous_object_coordinates.
8B3C
Render an object with collision detection.
8B70
Process one row of sprite rendering.
8B94
Adjust screen address for third-of-screen crossing.
8BA3
Process old position screen address adjustment.
8BC6
Adjust old position for third-of-screen crossing.
8C0B
Render one row of sprite data to screen.
8C1B
Self-modifying blending operation (erasure).
8C3C
Self-modifying blending operation (drawing).
8C45
Jump to collision dispatcher
90E0
Add score points for a hit target
9109
Add a life to the current player.
9122
Update and print score for current player.
913B
Increase a digit in the player 1's score.
914B
Print a digit from player 1's score.
9169
Increase a digit in the player 2's score.
9179
Print a digit from player 2's score.
9191
Handle carry for player 1's score digit.
91A9
Handle carry for player 2's score digit.
91C1
Print player 2's score on the status line.
91E8
Print player 2 score area or high score on status line.
923E
Print lives for current player.
924F
Continue printing lives after count has been loaded.
9264
Print six spaces to clear old lives display.
9277
Player 2 branch of print_lives.
928D
Set screen attributes for sprite area.
935D
Return point when attribute color is zero.
9367
Early exit from old position attribute loop.
936B
Early exit from new position attribute loop.
936F
Handle old position attributes when sprite is at screen top (row 0).
9388
Handle new position attributes when sprite is at screen top (row 0).
93A1
Compare two 6-digit scores.
93B8
Return 1 (first score less than second).
93BB
Return $FF (first score greater than second).
93BE
Update high score table from current player score.
93F2
Check if player 2 score beats player 1 score.
940A
Clear the screen by setting all pixel bytes to $00 and all attributes to the value set in D.
9423
Load pointer to current player's lives counter.