Address Description
800C
RST $08
800F
RST $10
8012
RST $18
8015
RST $20
8018
RST $28
801B
RST $30
801E
RST $38
8021
NMI
8024
Entry point
80E8
Main loop
8139
Died
8170
Lose life
81AE
Switch player
81ED
Wait for restart
8212
Init stage
830E
Display player message
832A
Stage completed
83D0
Next stage
8429
Display bonus
8450
Display hits
846B
Perfect bonus
84B1
Update frames and upload sprites
84CB
Upload patterns
84DB
Get stage data address
84ED
Clear rows 9 and 14
8501
Interrupt routine
85E6
Process sprites
8654
Deallocate enemy
865A
Handle sprite type $02
867D
Handle sprite type $04 - $0C
86DE
Handle sprite type $14
86E9
Handle sprite types $12 - $13
870C
Handle sprite type $03
873E
Handle sprite types $15 - $17
8790
Handle sprite types $0E - $11
87D5
Create map entry for enemy sprite
8815
Enemy movement: Return enemy to map
8825
Enemy movement: Move enemy towards viewer
8835
Enemy movement: Determine action when out of screen
885F
Enemy movement: Create enemy shot and move towards player.
8878
Enemy movement: Polar Y of enemy < $22
88A7
Enemy movement: Called with random probability.
88BE
Enemy movement: Called with random probability.
88D4
Enemy movement: Counter is >(=) $40
88F3
Enemy movement: Counter is $41
88FE
Enemy movement: Update sprite path
892B
Enemy movement: Upper nybble >= 1
8936
Enemy movement: Move sprite along path and update sprite type
8986
Enemy movement: Set sprite flags to $18 if ...
8994
Enemy movement: Set sprite flags to $04
8999
Enemy movement: Set sprite flags to $40
899E
Handle sprite types $18 - $1C
89EB
Circular enemy movement: Move sprite along path
8A2D
Circular enemy movement: Move enemy towards viewer
8A3C
Circular enemy movement: Set sprite flags to $04
8A41
Return from sprite handler
8A53
When all sprites have been processed
8A76
Create enemy shot if conditions are met
8AC0
Move towards x
8AE6
Reset enemy sprite types after dying
8B12
Draw background patterns for sprite
8BD9
Manage waves
8C07
Manage wave = 4
8C1E
All waves completed
8C30
Manage wave < 4
8C52
Start new wave
8C68
When wave is initiating
8D21
Reset outcoming enemies
8D50
Create "laser fence" or meteor
8DD7
Create meteor
8E2D
Create or display mines
8E89
Init mine variables
8E9D
Create mines
8F0F
Create mine
8F55
Display mines
8FED
Destroy mine
900E
Create shot from mine
90D6
Start screen
9175
Display planet
91A1
Erase planet
91CC
Display planet name and sprites
920D
Clear name table row 7
921F
Decompress and upload patterns
924E
Write single byte
9255
Read B bits into A
9285
Copy planet patterns
9796
Handle collisions
9845
Create double shot pickup sprite
9861
Handle shot (from ship) collision
9924
Shot hit sprite
9934
Shot hit sprite enemy
9978
Add score when enemy destroyed
99A0
Shot hit center enemy
99B1
Shot hit mine
9A08
Shot hit laser fence
9A1C
Remove shot
9A38
Collision of ship with sprite
9A49
Collision of ship with enemy
9A75
Collision of ship with mine
9A86
Polar x distance
9AB3
Add A to HL (RST $08)
9ABB
Unused routine at 9ABB
9AC3
VDP write byte (RST $10)
9AD0
VDP read byte
9ADE
Init sound
9B0D
Play tune
9B59
Increase attenuation for all tune channels
9B87
Stop tune
9B99
Sound player
9BD9
Handle frequency byte when tune index >= 3
9BF8
Relative jump then tune index >= 3
9BFD
Handle duration byte when tune index >= 3
9C1C
Process tune byte
9C39
Handle absolute or relative jump
9C46
Relative jump then check finished
9C4B
Process normal duration and frequency
9C7E
End of processing sound channel
9C92
Handle relative jump
9CA0
Make a relative jump
9CA8
Play sound FX
9CBF
Copy data from sound_fx_data_table to sound fx channel, and change pointer from sound data to sound fx data
9D3D
Sound fx done
9D67
Execute commands for all sound fx channels
9DA7
Sound FX command 3
9DB9
Sound FX command 6
9DC4
Sound FX command 1,4
9DD7
Sound FX command 2
9DE8
Sound FX command 0
9E01
Sound FX command 5,8
9E5C
Sound FX command 7
9E75
Sound FX command 9
9E91
Call play tune, preserve registers
9EA3
Call play sound, preserve registers
A2BB
Send data for all channels to PSG
A2F3
Send data for noise channel to PSG
A303
Send attenuation or noise control bytes to PSG
A314
Send data for tone channel to PSG
A31D
Send attenuation and frequency bytes to PSG
A33B
Initial game loop
A3E1
Explode
A471
Move explosion dots
A699
Display score
A6C8
Display digit
A6D2
Display lives
A6EC
Add points to score
A73C
Control ship
A7D5
Fire double shot
A805
Clear fire pressed
A808
Display ship background patterns
AA7D
Init center enemies
AAA6
Allocate map entry
AAE3
Deallocate map entry
AAF1
Create enemy sprite from map entry
AB38
Sprite coordinates from map
AB53
Deallocate sprite from map
AB72
Display distant enemies at the center of the screen
ABFF
Update name table to display center enemies
AC32
Erase center enemies
AC47
Plot pixel
ACDF
Init sprite data
ACF9
Upload sprite data to VDP
AD49
Allocate sprite (RST $28)
AD8B
Load sprite pattern (RST $30)
AE54
Handle sprite outside visible screen
AE94
Upload sprite patterns
AF6B
Rotate pattern
AFAE
Flip pattern vertically
AFC2
Flip pattern horizontally
AFFF
Display stars
B023
Display star frame
B1C6
Convert polar to screen coordinates
BFAE
Random number generator (RST $20)