Page Byte Address Description
64 0 4000
Unused
112 0 7000
Center of projection
112 2 7002
Sprite data
113 130 7182
Number of allocated sprites
113 131 7183
Sprite allocation table
113 163 71A3
Temporary storage (72 bytes)
113 235 71EB
Status flags
113 236 71EC
Stars move countdown
113 237 71ED
Unused byte at 71ED
113 238 71EE
Sprite countdown
113 239 71EF
Countdown to enemy shooting
113 240 71F0
Time to next wave
113 241 71F1
Current player (0 or 1)
113 242 71F2
Frame counter
113 243 71F3
Score player 1
113 246 71F6
Score for getting extra life player 1
113 248 71F8
Score for getting extra life player 1 MSB
113 249 71F9
Score player 2
113 252 71FC
Score for getting extra life player 2
113 254 71FE
Score for getting extra life player 2 (MSB)
113 255 71FF
Lives
114 0 7200
Stage (0-23, but starts with 1 during play)
114 1 7201
Wave
114 2 7202
Enemies destroyed not chance stage
114 3 7203
Stage data index
114 4 7204
Number of times died within stage
114 5 7205
Completed stages
114 6 7206
Number of enemies
114 7 7207
Map of center enemies
114 43 722B
Number of center enemies
114 44 722C
Number of active enemies
114 45 722D
Number of 3-spheres/mines left
114 46 722E
Ship background data
114 55 7237
Mines background data
114 82 7252
Active enemy shots
114 83 7253
Number of active shots
114 84 7254
Mines destroyed
114 85 7255
Enemies destroyed in chance stage
114 86 7256
Other flags
114 87 7257
Countdown to screen off
114 89 7259
Counter used when approaching planet
114 90 725A
Interrupt flag
114 91 725B
Wave speed counter
114 92 725C
Number of enemies left center
114 93 725D
Wave data address
114 95 725F
Laser fence/meteor countdown
114 96 7260
Attack countdown
114 97 7261
Laser fence end 2 polar x
114 98 7262
Laser fence end 1 polar x
114 99 7263
Countdown. Mines are destroyed when zero.
114 100 7264
Mines action
114 101 7265
Mines are destroyed if bit 0 is set
114 102 7266
Related to when mines reappear
114 103 7267
Mines movement table offset
114 104 7268
Mine name/pattern index
114 105 7269
Mine countdown to shoot
114 106 726A
Pattern decoder length
114 108 726C
Pattern decoder bits left
114 109 726D
Pattern decoder source byte
114 110 726E
Flag for showing double shot pickup
114 111 726F
Temporary polar x
114 112 7270
Pointer to data for PSG noise generator
114 114 7272
Pointer to data for PSG tone generator 1
114 116 7274
Pointer to data for PSG tone generator 2
114 118 7276
Pointer to data for PSG tone generator 3
114 120 7278
Last noise operation
114 122 727A
Is a tune playing?
114 123 727B
Sound player countdown (tune speed?)
114 124 727C
Index of tune playing
114 125 727D
Tune data channel 1
114 135 7287
Tune data channel 2
114 145 7291
Tune data channel 3
114 155 729B
Tune data channel 4
114 165 72A5
Sound fx data channel 1
114 173 72AD
Sound fx data channel 2
114 181 72B5
Sound fx data channel 3
114 189 72BD
Sound fx data channel 4
114 190 72BE
Byte 1-2 of sound fx data 4
114 192 72C0
Byte 3-4 of sound fx data 4
114 194 72C2
Byte 5 of sound fx data 4
114 195 72C3
Byte 6-7 of sound fx data 4
114 197 72C5
Temporary center of projection
114 199 72C7
Temp sprite data
114 200 72C8
Temp points to add
114 203 72CB
Update counters countdown
114 204 72CC
Center enemies redraw flag
114 205 72CD
Counter for drawing center enemies
114 206 72CE
First name used for center enemies 1
114 207 72CF
First name used for center enemies 2
114 208 72D0
Pattern table address of center enemies
114 210 72D2
Center y direction
114 211 72D3
Center y offset
114 212 72D4
Center x offset
114 213 72D5
Sprite type processed
114 214 72D6
Transformation processed
114 215 72D7
Pattern index
114 216 72D8
Destination address in VDP
114 218 72DA
Graphics pointer address
114 220 72DC
Source address
114 222 72DE
Pattern address
114 224 72E0
Sprite patterns addresses in VDP
115 26 731A
Star frame
115 27 731B
Random number
115 29 731D
Stack
115 186 73BA
OS RAM
115 242 73F2
Sprite allocation table VDP address
115 244 73F4
Sprite pattern table VDP address
115 246 73F6
Name table VDP address
115 248 73F8
OS RAM
116 0 7400
Unused
128 0 8000
ROM header
128 2 8002
Pointer to sprite name table
128 4 8004
Pointer to sprite order table
128 6 8006
Pointer to temporary storage in RAM
128 8 8008
Pointer to controller memory map
128 10 800A
Pointer to start address
128 12 800C
RST $08
128 15 800F
RST $10
128 18 8012
RST $18
128 21 8015
RST $20
128 24 8018
RST $28
128 27 801B
RST $30
128 30 801E
RST $38
128 33 8021
NMI
128 36 8024
Entry point
128 232 80E8
Main loop
129 57 8139
Died
129 112 8170
Lose life
129 174 81AE
Switch player
129 237 81ED
Wait for restart
130 18 8212
Init stage
131 14 830E
Display player message
131 42 832A
Stage completed
131 208 83D0
Next stage
132 41 8429
Display bonus
132 80 8450
Display hits
132 107 846B
Perfect bonus
132 177 84B1
Update frames and upload sprites
132 203 84CB
Upload patterns
132 219 84DB
Get stage data address
132 237 84ED
Clear rows 9 and 14
133 1 8501
Interrupt routine
133 60 853C
STAGE message
133 65 8541
Stage data (8 bytes per stage)
133 129 8581
PLAYER message
133 137 8589
READY message
133 143 858F
CHANCE STAGE message
133 156 859C
WARPS message
133 162 85A2
TO message
133 166 85A6
BONUS message
133 171 85AB
Bonus points message
133 185 85B9
CONGRATULATIONS message
133 201 85C9
PERFECT message
133 221 85DD
GAME OVER message
133 230 85E6
Process sprites
134 84 8654
Deallocate enemy
134 90 865A
Handle sprite type $02
134 125 867D
Handle sprite type $04 - $0C
134 222 86DE
Handle sprite type $14
134 233 86E9
Handle sprite types $12 - $13
135 12 870C
Handle sprite type $03
135 62 873E
Handle sprite types $15 - $17
135 144 8790
Handle sprite types $0E - $11
135 213 87D5
Create map entry for enemy sprite
136 21 8815
Enemy movement: Return enemy to map
136 37 8825
Enemy movement: Move enemy towards viewer
136 53 8835
Enemy movement: Determine action when out of screen
136 95 885F
Enemy movement: Create enemy shot and move towards player.
136 120 8878
Enemy movement: Polar Y of enemy < $22
136 167 88A7
Enemy movement: Called with random probability.
136 190 88BE
Enemy movement: Called with random probability.
136 212 88D4
Enemy movement: Counter is >(=) $40
136 243 88F3
Enemy movement: Counter is $41
136 254 88FE
Enemy movement: Update sprite path
137 43 892B
Enemy movement: Upper nybble >= 1
137 54 8936
Enemy movement: Move sprite along path and update sprite type
137 134 8986
Enemy movement: Set sprite flags to $18 if ...
137 148 8994
Enemy movement: Set sprite flags to $04
137 153 8999
Enemy movement: Set sprite flags to $40
137 158 899E
Handle sprite types $18 - $1C
137 235 89EB
Circular enemy movement: Move sprite along path
138 45 8A2D
Circular enemy movement: Move enemy towards viewer
138 60 8A3C
Circular enemy movement: Set sprite flags to $04
138 65 8A41
Return from sprite handler
138 83 8A53
When all sprites have been processed
138 118 8A76
Create enemy shot if conditions are met
138 192 8AC0
Move towards x
138 230 8AE6
Reset enemy sprite types after dying
139 18 8B12
Draw background patterns for sprite
139 217 8BD9
Manage waves
140 7 8C07
Manage wave = 4
140 30 8C1E
All waves completed
140 48 8C30
Manage wave < 4
140 82 8C52
Start new wave
140 104 8C68
When wave is initiating
141 33 8D21
Reset outcoming enemies
141 80 8D50
Create "laser fence" or meteor
141 215 8DD7
Create meteor
142 13 8E0D
Enemy types in different waves (chance stage)
142 37 8E25
Enemy movement table
142 45 8E2D
Create or display mines
142 137 8E89
Init mine variables
142 157 8E9D
Create mines
143 15 8F0F
Create mine
143 85 8F55
Display mines
143 237 8FED
Destroy mine
144 14 900E
Create shot from mine
144 70 9046
Mines movement table
144 86 9056
3 spheres background graphics
144 150 9096
Mine background graphics
144 214 90D6
Start screen
145 117 9175
Display planet
145 161 91A1
Erase planet
145 204 91CC
Display planet name and sprites
146 13 920D
Clear name table row 7
146 31 921F
Decompress and upload patterns
146 78 924E
Write single byte
146 85 9255
Read B bits into A
146 133 9285
Copy planet patterns
146 172 92AC
Parker Brothers copyright message
146 195 92C3
Colors
146 214 92D6
Ship pattern
146 222 92DE
Gyruss logo
146 224 92E0
Logo patterns
147 128 9380
Gyruss logo names
147 152 9398
Planet table
147 164 93A4
Neptune
147 181 93B5
NEPTUNE message
147 188 93BC
Neptune sprite data
147 199 93C7
Uranus
147 216 93D8
URANUS message
147 222 93DE
Uranus sprite data
147 241 93F1
Saturn
148 2 9402
SATURN message
148 8 9408
Saturn sprite data
148 23 9417
Jupiter
148 40 9428
JUPITER message
148 47 942F
Jupiter sprite data
148 56 9438
Mars
148 73 9449
MARS message
148 77 944D
Mars sprite data
148 84 9454
Earth
148 101 9465
EARTH message
148 106 946A
Earth sprite data
148 116 9474
Byte before planet graphics
148 117 9475
Planet graphics - compressed
150 238 96EE
Planet colors
150 254 96FE
Planet sprite patterns
151 150 9796
Handle collisions
152 69 9845
Create double shot pickup sprite
152 97 9861
Handle shot (from ship) collision
153 36 9924
Shot hit sprite
153 52 9934
Shot hit sprite enemy
153 120 9978
Add score when enemy destroyed
153 160 99A0
Shot hit center enemy
153 177 99B1
Shot hit mine
154 8 9A08
Shot hit laser fence
154 28 9A1C
Remove shot
154 56 9A38
Collision of ship with sprite
154 73 9A49
Collision of ship with enemy
154 117 9A75
Collision of ship with mine
154 134 9A86
Polar x distance
154 167 9AA7
Score table
154 179 9AB3
Add A to HL (RST $08)
154 187 9ABB
Unused routine at 9ABB
154 195 9AC3
VDP write byte (RST $10)
154 208 9AD0
VDP read byte
154 222 9ADE
Init sound
155 13 9B0D
Play tune
155 89 9B59
Increase attenuation for all tune channels
155 135 9B87
Stop tune
155 153 9B99
Sound player
155 217 9BD9
Handle frequency byte when tune index >= 3
155 248 9BF8
Relative jump then tune index >= 3
155 253 9BFD
Handle duration byte when tune index >= 3
156 28 9C1C
Process tune byte
156 57 9C39
Handle absolute or relative jump
156 70 9C46
Relative jump then check finished
156 75 9C4B
Process normal duration and frequency
156 126 9C7E
End of processing sound channel
156 146 9C92
Handle relative jump
156 160 9CA0
Make a relative jump
156 168 9CA8
Play sound FX
156 191 9CBF
Copy data from sound_fx_data_table to sound fx channel, and change pointer from sound data to sound fx data
156 231 9CE7
Sound fx data
157 61 9D3D
Sound fx done
157 103 9D67
Execute commands for all sound fx channels
157 145 9D91
Sound command jump table
157 167 9DA7
Sound FX command 3
157 185 9DB9
Sound FX command 6
157 196 9DC4
Sound FX command 1,4
157 215 9DD7
Sound FX command 2
157 232 9DE8
Sound FX command 0
158 1 9E01
Sound FX command 5,8
158 92 9E5C
Sound FX command 7
158 117 9E75
Sound FX command 9
158 145 9E91
Call play tune, preserve registers
158 163 9EA3
Call play sound, preserve registers
158 182 9EB6
Sound frequency table
158 234 9EEA
Tune data
159 42 9F2A
Tune data 1
159 62 9F3E
Tune data 2
159 78 9F4E
Tune data 3
159 98 9F62
Tune data 4
159 108 9F6C
Tune data 5
159 110 9F6E
Tune data 6
159 121 9F79
Tune data 7
159 131 9F83
Tune data 8
159 139 9F8B
Tune data 9
159 143 9F8F
Tune data 10
159 148 9F94
Tune data 11
159 254 9FFE
Tune data 12
160 86 A056
Tune data 13
160 93 A05D
Tune data 14
160 113 A071
Tune data 15
160 146 A092
Tune data 16
160 148 A094
Tune data 17
161 58 A13A
Tune data 18
161 62 A13E
Tune data 19
161 202 A1CA
Tune data 20
161 208 A1D0
Tune data 21
162 58 A23A
Tune data 22
162 63 A23F
Tune data 23
162 153 A299
Tune data 24
162 175 A2AF
Tune data 25
162 182 A2B6
Tune data 26
162 187 A2BB
Send data for all channels to PSG
162 243 A2F3
Send data for noise channel to PSG
163 3 A303
Send attenuation or noise control bytes to PSG
163 20 A314
Send data for tone channel to PSG
163 29 A31D
Send attenuation and frequency bytes to PSG
163 59 A33B
Initial game loop
163 225 A3E1
Explode
164 113 A471
Move explosion dots
164 178 A4B2
Init data for implosion
164 184 A4B8
Sprite init data (polar x)
164 190 A4BE
Init data for wave sprites
165 30 A51E
Init data for wave sprites (chance stage)
165 126 A57E
Polar y for wave sprites
165 129 A581
Wave data address table
165 163 A5A3
Wave path 0
165 174 A5AE
Wave path 1
165 192 A5C0
Wave path 2
165 204 A5CC
Wave path 3
165 227 A5E3
Wave path 4
165 248 A5F8
Wave path 5
166 13 A60D
Wave path 6
166 24 A618
Wave path 7
166 35 A623
Wave path 8
166 46 A62E
Wave path 9
166 56 A638
Wave path 10
166 66 A642
Wave path 11
166 81 A651
Wave path 12
166 93 A65D
Wave path 13
166 108 A66C
Wave path 14
166 118 A676
Wave path 15
166 138 A68A
Wave path 16
166 153 A699
Display score
166 200 A6C8
Display digit
166 210 A6D2
Display lives
166 236 A6EC
Add points to score
167 60 A73C
Control ship
167 213 A7D5
Fire double shot
168 5 A805
Clear fire pressed
168 8 A808
Display ship background patterns
168 101 A865
Controller movement table
168 117 A875
Adjust ship coordinates table
168 125 A87D
Ship background patterns
170 125 AA7D
Init center enemies
170 166 AAA6
Allocate map entry
170 227 AAE3
Deallocate map entry
170 241 AAF1
Create enemy sprite from map entry
171 56 AB38
Sprite coordinates from map
171 83 AB53
Deallocate sprite from map
171 114 AB72
Display distant enemies at the center of the screen
171 255 ABFF
Update name table to display center enemies
172 50 AC32
Erase center enemies
172 71 AC47
Plot pixel
172 135 AC87
Start coordinates for sprites
172 207 ACCF
Table of pixel offsets for drawing center enemies
172 223 ACDF
Init sprite data
172 249 ACF9
Upload sprite data to VDP
173 73 AD49
Allocate sprite (RST $28)
173 139 AD8B
Load sprite pattern (RST $30)
174 84 AE54
Handle sprite outside visible screen
174 148 AE94
Upload sprite patterns
175 107 AF6B
Rotate pattern
175 174 AFAE
Flip pattern vertically
175 194 AFC2
Flip pattern horizontally
175 221 AFDD
Ship exhaust position relative to ship body
175 255 AFFF
Display stars
176 35 B023
Display star frame
176 79 B04F
Star frame lookup
176 91 B05B
Star frame 0
176 130 B082
Star frame 1
176 168 B0A8
Star frame 2
176 205 B0CD
Star frame 3
176 236 B0EC
Star frame 4
177 14 B10E
Star frame 5
177 52 B134
Stars
177 54 B136
Star patterns
177 198 B1C6
Convert polar to screen coordinates
178 29 B21D
Polar to screen coordinates lookup table
184 221 B8DD
Graphics pointer offsets
184 250 B8FA
Graphics pointers
185 230 B9E6
Graphics
191 174 BFAE
Random number generator (RST $20)
191 207 BFCF
Unused
192 0 C000
Unused