Home Journal Contact Me Tools Comments

General Processing
Command List Memory Map START
AY Chip IO Interrupt Command Buffer
Main Loop Filter Caps Music Processing
Command Tables Music Data
Sound Commands
00 Clear Buffer 01 Coin
02 Enemy Shot 03 1910 Bomb
04 Missile Launch 05 UFO Shot
06 Missile (continuous) 07 Player Shot
08 Enemy Explosion (thud) 09 Enemy Explosion (noise)
0A Tracker or Bomb Explosion 0B Squad Appears
0C 1st boss - blimp (continuous) 0D 2nd boss - jest (continuous)
0E 3rd boss - helicopter (continuous) 0F 4th boss - super jet (continuous)
10 5th boss - mother ship (continuous) 11 User Explosion Component
12 User Explosion Component 13 User Explosion Component
14 User Explosion Component 15 User Explosion Component
16 Pickup Parachute 17 Free Man
18 Time Jump 1 19 Time Jump 2
1A Play Song 1 1B Play Song 2
; Sound processor for the arcade game "Time Pilot"
; 1982 by Centuri/Konami

; Dissassembly comments by Chris Cantrell 1998
; For detailed discussion of code visit http://www.computerarcheology.com

; TO DO
; - Decompose music script into command text



; Z80 CPU and 2 AY-3-8910 Sound Chips
; The sound board receives commands from the game board through
; port A of one sound chip. The upper nibble of Port B is connected
; to an oscillator and drives sound timing.
;
; Sound board oscillator is 14.318MHz. The CPU and sound chips use
; the same division ... 14.31818 / 8 = 1.789772.
;
; The timer on the upper four bits of Port B reaches 0 at the main
; clock divided by 10240 (1024*10).
;
; Processing loop = 1.789772MHz / 10240 = 174.782421875Hz (0.005721399 sec per tick)

; SoundCommands
;
; First number is command number
; Second is filter-capacitor configuration
;
; 00   Write 0 to voice
; 01 0 Coin 
; 02 0 Plane fire
; 03 0 1910 bomb
; 04 1 Missile launch
; 05 0 UFO shot
; 06 0 Missile (continuous)
; 07 0 User Fire
; 08 1 Enemy Explosion Component (thud)
; 09 1 Enemy Explosion Component (white-noise)
; 0A 0 Tracker or Bomb Explosion
; 0B 0 Squad Appears
; 0C 1 1st boss (blimp)
; 0D 1 2nd boss (jet)
; 0E 1 3rd boss (helicopter)
; 0F 1 4th boss (super jet)
; 10 1 5th boss (mother ship)
; 11 1 User explosion component
; 12 1 User explosion component
; 13 2 User explosion component
; 14 2 User explosion component
; 15 1 User explosion component
; 16 0 Pickup parachute
; 17 1 Free man
; 18 0 Time jump 1
; 19 0 Time jump 2
; 1A 0 Initialize song 2
; 1B 1 Initialize song 1
; 1C 0 Initialize music D1
; 1D 0 Initialize music D2
; 1E 0 Initialize music D3
; 1F 0 Initialize music D4
; 20 0 Initialize music D5

; MemoryMap
; Memory usage starts at 3000
; 3000-0B Command Buffer (see COMMAND BUFFER)
; 300C,0D Current cap-filter settings
; 300E Voice number = command index

; Music descriptors (see MUSIC PROCESSING)
; 300F,10,11,12,13,14,15,16,17,18
; 3019,1A,1B,1C,1D,1E,1F,00,01,02
; 3023,24,25,26,27,28,29,2A,2B,2C
; 302D,2E,2F,30,31,32,33,34,35,36
; 3037,38,39,3A,3B,3C,3D,3E,3F,40

; Individual sound routines use some memory above 3040

; Start
; Reset/Startup
0000: 21 00 30  LD    HL,$3000      ; Command buffer
0003: 06 00     LD    B,$00         ; Fill value
0005: C3 9B 00  JP    $009B         ; Continue initialization

; AYChipIO
; Read CHIP0 register. A=register, return in A
0008: 32 00 50  LD    ($5000),A     ; Store the register number
000B: 3A 00 40  LD    A,($4000)     ; Read the value
000E: C9        RET                 ; Done
000F: FF        RST   $38           ; Filler to align RST routines

; Read CHIP1 register. A=register, retun in A
0010: 32 00 70  LD    ($7000),A     ; Store the register number
0013: 3A 00 60  LD    A,($6000)     ; Read the value
0016: C9        RET                 ; Done
0017: FF        RST   $38           ; Filler to align RST routines

; Write CHIP0 register. A=register, C=value
0018: 32 00 50  LD    ($5000),A     ; Store register number
001B: 79        LD    A,C           ; Write ...
001C: 32 00 40  LD    ($4000),A     ; ... value
001F: C9        RET                 ; Done

; Write CHIP1 register. A=register, C=value
0020: 32 00 70  LD    ($7000),A     ; Store register number
0023: 79        LD    A,C           ; Write ...
0024: 32 00 60  LD    ($6000),A     ; ... value
0027: C9        RET                 ; Done

; Vector to desired function indexed by A
; HL = address table
; A  = index
0028: 87        ADD   A,A           ; *2
0029: 85        ADD   A,L           ; Add to offset
002A: 6F        LD    L,A           ; Set LSB of pointer
002B: 7C        LD    A,H           ; Carry into ...
002C: CE 00     ADC   A,$00         ; ... MSB of pointer
002E: 67        LD    H,A           ; Set MSB of pointer
002F: 7E        LD    A,(HL)        ; Get LSB of address
0030: 23        INC   HL            ; Next in table
0031: 66        LD    H,(HL)        ; Get MSB of address
0032: 6F        LD    L,A           ; Get LSB of address
0033: E9        JP    (HL)          ; Jump to routine
0034: FF        RST   $38           ; Filler ...
0035: FF        RST   $38           ; ...
0036: FF        RST   $38           ; ...
0037: FF        RST   $38           ; ...

; InterruptService
; # #### Interrupt Service Routine #######################################
; Called when the main CPU signals a new sound command.
; Switch banks and call the command fetch routine
0038: D9        EXX                 ; Switch banks B-L
0039: 08        EX    AF,AF'        ; Switch AF banks
003A: CD 40 00  CALL  $0040         ; Make the call
003D: 08        EX    AF,AF'        ; Set the AF banks back
003E: D9        EXX                 ; Set the B-L banks back
003F: C9        RET                 ; Done

; CommandBuffer
; # #### COMMAND BUFFER########################################
;
; COMMAND BUFFER
; Command Buffer is kept at 3000 and contains 6 2-byte entries.
; The first byte is the command. A zero marks an available slot.
; Commands are read from Port A of Chip 0. 
;
; Command 0 clears the command buffer.
;
; If a command is already running, it is restarted.
;
; The command numbers are used as priorities if the buffer is full. The
; higher the command number, the higher the priority. If all commands
; in the buffer are of higher priority than the new command then the
; new command is ignored. Otherwise the new command replaces the lowest
; priority command in the buffer.
;
; If the upper bit is set, the command is removed from the buffer. Command 
; values above 0x20 are ignored. 
;
; The second byte indicates initialization status. 0=not initialized, 1=
; initialized. Note that entries are removed by setting them to 0000 which
; forces an initialization of command 00 which turns the voice off.
;
; # ###########################################################

; Fetch a command from the port and place it in the
; command buffer.
0040: 3E 0E     LD    A,$0E         ; Port A
0042: CF        RST   $08           ; Read CHIP0 Port A
0043: B7        OR    A             ; Set flags
0044: 28 2F     JR    Z,$75         ; If 0, clear 3000-300B and out
0046: 57        LD    D,A           ; Hang on to command
0047: E6 7F     AND   $7F           ; Mask off upper bit
0049: FE 21     CP    $21           ; Compare command to 21
004B: D0        RET   NC            ; Invalid command (above 20)
004C: CB 7A     BIT   7,D           ; Upper bit set?
004E: 20 42     JR    NZ,$92        ; Yes -- remove the command from the buffer
0050: CD 80 00  CALL  $0080         ; Is the command already in the buffer?
0053: 20 1C     JR    NZ,$71        ; Found ... restart it.
0055: CD 80 00  CALL  $0080         ; Find 0 in the buffer
0058: 20 16     JR    NZ,$70        ; Found a slot -- store command in buffer
; Find the lowest numbered command
005A: 21 00 30  LD    HL,$3000      ; Buffer
005D: 1E 06     LD    E,$06         ; 6 entries to check
005F: 7E        LD    A,(HL)        ; Get command value
0060: 1D        DEC   E             ; Count down
0061: 28 08     JR    Z,$6B         ; All checked --
0063: 2C        INC   L             ; Bump to next ...
0064: 2C        INC   L             ; ... entry
0065: BE        CP    (HL)          ; Compare current lowest with next entry
0066: 38 F8     JR    C,$60         ; Next entry is higher -- keep our lowest
0068: C3 5F 00  JP    $005F         ; New lowest value
;
006B: BA        CP    D             ; Is the new command even lower?
006C: D0        RET   NC            ; Yes -- ignore the command
; Find entry, replace type with D and clear second byte
006D: CD 80 00  CALL  $0080         ; Find entry
0070: 72        LD    (HL),D        ; Store D
0071: 2C        INC   L             ; Second byte in entry
0072: 36 00     LD    (HL),$00      ; Flag command needs initializing
0074: C9        RET                 ; Done

; Clear buffer
0075: 21 00 30  LD    HL,$3000      ; Clear 13 bytes ...
0078: 06 0C     LD    B,$0C         ; ... starting at ...
007A: AF        XOR   A             ; ...
007B: 77        LD    (HL),A        ; ...
007C: 2C        INC   L             ; ...
007D: 10 FC     DJNZ  $7B           ; ... 3000
007F: C9        RET                 ; Done

; Find entry A in buffer. Return 7-index and HL if found.
; If not found, return 0
0080: 21 00 30  LD    HL,$3000      ; Buffer area.
0083: 06 06     LD    B,$06         ; 6 entries to check.
0085: 0E 07     LD    C,$07         ; Subtraction value.
0087: BE        CP    (HL)          ; Found?
0088: 28 05     JR    Z,$8F         ; Yes -- done
008A: 2C        INC   L             ; Bump to ...
008B: 2C        INC   L             ; ... next entry
008C: 10 F9     DJNZ  $87           ; Check all entries
008E: 41        LD    B,C           ; Not found -- use 7 as index
008F: 79        LD    A,C           ; Substract found ...
0090: 90        SUB   B             ; ... index from 7
0091: C9        RET                 ; Return index

; Remove entry from buffer
0092: CD 80 00  CALL  $0080         ; Find entry
0095: C8        RET   Z             ; Not found -- out
0096: AF        XOR   A             ; Fast 0
0097: 77        LD    (HL),A        ; Clear ...
0098: 2C        INC   L             ; ... entry ...
0099: 77        LD    (HL),A        ; ... from buffer.
009A: C9        RET                 ; Out

; Initialization continued.
; Clear RAM
009B: 70        LD    (HL),B        ; Store 0
009C: 23        INC   HL            ; Bump pointer
009D: 7C        LD    A,H           ; Clear until ...
009E: FE 34     CP    $34           ; ... done
00A0: 20 F9     JR    NZ,$9B        ; Loop back
00A2: F9        LD    SP,HL         ; Set SP to 3400
00A3: ED 56     IM    1             ; Set interrupt MODE 1 (always vector to 0038)
00A5: 21 00 80  LD    HL,$8000      ; All cap filters ...
00A8: 22 0C 30  LD    ($300C),HL    ; ... (current value) ...
00AB: 77        LD    (HL),A        ; ... disconnected from channels

; Initialize sound chips
00AC: 0E 00     LD    C,$00         ; Value 0
00AE: 16 06     LD    D,$06         ; 6 voices
00B0: 7A        LD    A,D           ; Pass to function
00B1: CD 9C 01  CALL  $019C         ; Amplitude to silence.
00B4: 15        DEC   D             ; ...
00B5: 20 F9     JR    NZ,$B0        ; Silence all voices
00B7: 0E 38     LD    C,$38         ; Both IO Ports IN, Tones only on ...
00B9: 3E 07     LD    A,$07         ; ... all voices.
00BB: DF        RST   $18           ; Configure AY38910 chip 0
00BC: 3E 07     LD    A,$07         ; "Enable" register again
00BE: E7        RST   $20           ; Configure AY38910 chip 1

; MainLoop
; == MAIN PROCESSING LOOP ==
00BF: FB        EI                  ; Enable interrupts
00C0: 3E 0F     LD    A,$0F         ; Port B
00C2: CF        RST   $08           ; Read CHIP0 Port B
00C3: E6 F0     AND   $F0           ; Timer value hit?
00C5: 20 F9     JR    NZ,$C0        ; No -- keep waiting

; Process Entry Index 1
00C7: F3        DI                  ; Disable interrupts
00C8: 3E 01     LD    A,$01         ; Voice index 1
00CA: 32 0E 30  LD    ($300E),A     ; Hang onto it
00CD: 3A 01 30  LD    A,($3001)     ; First voice, 2nd byte
00D0: B7        OR    A             ; Set flags about 2nd byte
00D1: 3A 00 30  LD    A,($3000)     ; Get commmand (no flags)
00D4: 28 06     JR    Z,$DC         ; 2nd byte == 0
00D6: CD 7F 01  CALL  $017F         ; Continue command
00D9: C3 DF 00  JP    $00DF         ; Skip over
00DC: CD 69 01  CALL  $0169         ; Initialize command
00DF: FB        EI                  ; Enable interrupts
00E0: 00        NOP                 ; Pause
00E1: 00        NOP                 ; Pause

; Process Entry Index 2 (see Index 1 above)
00E2: F3        DI                  ;
00E3: 3E 02     LD    A,$02         ;
00E5: 32 0E 30  LD    ($300E),A     ;
00E8: 3A 03 30  LD    A,($3003)     ;
00EB: B7        OR    A             ;
00EC: 3A 02 30  LD    A,($3002)     ;
00EF: 28 06     JR    Z,$F7         ;
00F1: CD 7F 01  CALL  $017F         ;
00F4: C3 FA 00  JP    $00FA         ;
00F7: CD 69 01  CALL  $0169         ;
00FA: FB        EI                  ;
00FB: 00        NOP                 ;
00FC: 00        NOP                 ;

; Process Entry Index 3 (see Index 1 above)
00FD: F3        DI                  ;
00FE: 3E 03     LD    A,$03         ;
0100: 32 0E 30  LD    ($300E),A     ;
0103: 3A 05 30  LD    A,($3005)     ;
0106: B7        OR    A             ;
0107: 3A 04 30  LD    A,($3004)     ;
010A: 28 06     JR    Z,$112        ;
010C: CD 7F 01  CALL  $017F         ;
010F: C3 15 01  JP    $0115         ;
0112: CD 69 01  CALL  $0169         ;
0115: FB        EI                  ;
0116: 00        NOP                 ;
0117: 00        NOP                 ;

; Process Entry Index 4 (see Index 1 above)
0118: F3        DI                  ;
0119: 3E 04     LD    A,$04         ;
011B: 32 0E 30  LD    ($300E),A     ;
011E: 3A 07 30  LD    A,($3007)     ;
0121: B7        OR    A             ;
0122: 3A 06 30  LD    A,($3006)     ;
0125: 28 06     JR    Z,$12D        ;
0127: CD 7F 01  CALL  $017F         ;
012A: C3 30 01  JP    $0130         ;
012D: CD 69 01  CALL  $0169         ;
0130: FB        EI                  ;
0131: 00        NOP                 ;
0132: 00        NOP                 ;

; Process Entry Index 5 (see Index 1 above)
0133: F3        DI                  ;
0134: 3E 05     LD    A,$05         ;
0136: 32 0E 30  LD    ($300E),A     ;
0139: 3A 09 30  LD    A,($3009)     ;
013C: B7        OR    A             ;
013D: 3A 08 30  LD    A,($3008)     ;
0140: 28 06     JR    Z,$148        ;
0142: CD 7F 01  CALL  $017F         ;
0145: C3 4B 01  JP    $014B         ;
0148: CD 69 01  CALL  $0169         ;
014B: FB        EI                  ;
014C: 00        NOP                 ;
014D: 00        NOP                 ;

; Process Entry Index 6 (see Index 1 above)
014E: F3        DI                  ;
014F: 3E 06     LD    A,$06         ;
0151: 32 0E 30  LD    ($300E),A     ;
0154: 3A 0B 30  LD    A,($300B)     ;
0157: B7        OR    A             ;
0158: 3A 0A 30  LD    A,($300A)     ;
015B: 28 06     JR    Z,$163        ;
015D: CD 7F 01  CALL  $017F         ;
0160: C3 BF 00  JP    MainLoop      ;
0163: CD 69 01  CALL  $0169         ;

; Commands return 0 if still playing or else to remove from buffer

0166: C3 BF 00  JP    MainLoop      ; Continue main loop

; Initialize command and flag it initialized
; Vector to command. If return is 0, set second byte to 1. If return
; is not 0, remove the command from the buffer.
0169: 21 92 0A  LD    HL,$0A92      ; Jump table
016C: EF        RST   $28           ; Vector to address A in table HL
016D: B7        OR    A             ; Test return
016E: 20 17     JR    NZ,$187       ; Remove the command
0170: 21 01 30  LD    HL,$3001      ; Command buffer (2nd bytes)
0173: 3A 0E 30  LD    A,($300E)     ; Index of command
0176: 3D        DEC   A             ; Convert to ...
0177: 87        ADD   A,A           ; ... pointer
0178: 5F        LD    E,A           ; LSB
0179: 16 00     LD    D,$00         ; MSB=0
017B: 19        ADD   HL,DE         ; Pointer to command 2nd byte
017C: 36 01     LD    (HL),$01      ; Set second byte to 1
017E: C9        RET                 ; Done

; Continue processing a command
; Vector to command. If return is 0, leave buffer alone. If return
; is not 0, remove command from buffer.
; The vector table for "continues" does have an entry for "0" even
; though the initialization does (it clears the voice). I would have
; pointed the "continue" for command 0 at a return-zero for consistency. Then
; no special check would be needed here.
017F: B7        OR    A             ; If slot is empty ...
0180: C8        RET   Z             ; ... do nothing
0181: 21 D4 0A  LD    HL,$0AD4      ; Jump table
0184: EF        RST   $28           ; Vector to address A in table HL
0185: B7        OR    A             ; Test return
0186: C8        RET   Z             ; If zero -- out
0187: 21 00 30  LD    HL,$3000      ; Command buffer
018A: 3A 0E 30  LD    A,($300E)     ; Index of command
018D: 3D        DEC   A             ; Convert to ...
018E: 87        ADD   A,A           ; ... pointer
018F: 4F        LD    C,A           ; LSB
0190: 06 00     LD    B,$00         ; MSB=0
0192: 09        ADD   HL,BC         ; Pointer to command
0193: 70        LD    (HL),B        ; Clear command type
0194: 2C        INC   L             ; Next byte
0195: 70        LD    (HL),B        ; Clear second byte
0196: C9        RET                 ; Done

; Command00
; Initialize Routine Vector 00 (Silence the channel)

0197: 0E 00     LD    C,$00         ; Silence the voice
;  Write to amplitude control of given voice
0199: 3A 0E 30  LD    A,($300E)     ; Get voice number
019C: FE 04     CP    $04           ; Voice 4-6
019E: 30 05     JR    NC,$1A5       ; Yes -- do chip 1
01A0: C6 07     ADD   A,$07         ; Add 7 (8,9, or 10)
01A2: C3 18 00  JP    $0018         ; Write C to reg A chip 0
01A5: C6 04     ADD   A,$04         ; Add 4 (8,9, or 10)
01A7: C3 20 00  JP    $0020         ; Write C to reg A chip 1

; Write to tone registers for the specified voice.
; Write HL = value, voice (1-3 Chip0, 4-6 Chip1)
01AA: 3A 0E 30  LD    A,($300E)     ; Get register
01AD: FE 04     CP    $04           ; Register 4-6
01AF: 30 0B     JR    NC,$1BC       ; Yes ... next chip
01B1: 3D        DEC   A             ; -1
01B2: 87        ADD   A,A           ; *2
01B3: 47        LD    B,A           ; Hold onto register
01B4: 4D        LD    C,L           ; Value
01B5: DF        RST   $18           ; Write Chip 0
01B6: 78        LD    A,B           ; Restore register
01B7: 3C        INC   A             ; Next
01B8: 4C        LD    C,H           ; Value
01B9: C3 18 00  JP    $0018         ; Write Chip 0
01BC: D6 04     SUB   $04           ; Registers in chip 1
01BE: 87        ADD   A,A           ; ...
01BF: 47        LD    B,A           ; ...
01C0: 4D        LD    C,L           ; ...
01C1: E7        RST   $20           ; ...
01C2: 78        LD    A,B           ; ...
01C3: 3C        INC   A             ; ...
01C4: 4C        LD    C,H           ; ...
01C5: C3 20 00  JP    $0020         ; Done

; FilterCaps
; There are two capacitors that can be switched onto each audio channel
; to ground. The MSB bit set to one selects a 0.22 and the LSB bit set selects
; a 0.047 cap. Most effects just switch out the caps (writing 00), but the
; explosion effects switch in one or the other (never both).
;
; V1 1000xxxxAAxxxxxx
; V2 1000xxAAxxxxxxxx
; V3 1000AAxxxxxxxxxx
; V4 1000xxxxxxxxxxAA
; V5 1000xxxxxxxxAAxx
; V6 1000xxxxxxAAxxxx

; Reverse A bits
01C8: 01 FC FF  LD    BC,$FFFC      ; 11111111 11111100
01CB: 21 00 00  LD    HL,$0000      ; Clear HL
01CE: 1F        RRA                 ; Bit 0 ...
01CF: CB 15     RL    L             ; ... into L
01D1: 1F        RRA                 ; Bit 1 ...
01D2: CB 15     RL    L             ; ... into L
; Move bits and calculate mask
; V=1 HL*=64    BC=1111111100111111
;   2 HL*=256   BC=1111110011111111
;   3 HL*=1024  BC=1111001111111111
;   4 HL*=1     BC=1111111111111100
;   5 HL*=4     BC=1111111111110011
;   6 HL*=16    BC=1111111111001111
01D4: 3A 0E 30  LD    A,($300E)     ; Voice number
01D7: C6 02     ADD   A,$02         ; 2 bits in field
01D9: FE 06     CP    $06           ; Split the field map
01DB: 38 04     JR    C,$1E1        ; ...
01DD: D6 06     SUB   $06           ; ...
01DF: 28 0A     JR    Z,$1EB        ; ...
01E1: 87        ADD   A,A           ; = number of moves
01E2: 29        ADD   HL,HL         ; HL * 2
01E3: 37        SCF                 ; Set carry flag
01E4: CB 11     RL    C             ; Roll ...
01E6: CB 10     RL    B             ; ... the mask
01E8: 3D        DEC   A             ; Position counter
01E9: 20 F7     JR    NZ,$1E2       ; Complete the pattern
; CurrentValue = (CurrentValue & Mask) | HL
01EB: EB        EX    DE,HL         ; HL->DE
01EC: 2A 0C 30  LD    HL,($300C)    ; Old value
01EF: 7D        LD    A,L           ; LSB
01F0: A1        AND   C             ; Mask
01F1: B3        OR    E             ; OR in old value
01F2: 6F        LD    L,A           ; New LSB
01F3: 7C        LD    A,H           ; MSB
01F4: A0        AND   B             ; Mask
01F5: B2        OR    D             ; OR in old value
01F6: 67        LD    H,A           ; New MSB
01F7: 22 0C 30  LD    ($300C),HL    ; New configuration value
; Write to memory -- why?
01FA: 77        LD    (HL),A        ; Any write will do (using the ...
01FB: C9        RET                 ; ... address lines as data.)

; MusicProcessing
; # ### MUSIC PROCESSING #######################################
;
; Bytes are loaded from the music pointer. The upper three bits
; define the MSB delay and the lower five bits define a note
; offset from the base note pointer. If the lower five bits are
; all ones, a special command is executed instead and then
; processing continues.
;
; The MSB delay is a power of 2 (ie 128th,64th, ... quarter,half,whole).
; The Running LSB delay is the base counter for note delay.
; The Music Pointer points to the next byte in the song to process.
; The Base Note Table Pointer points to the start of an octave in
;   the note table. Subsequent notes are relative to the base.
; The initial amplitude is the initial volume of the note.
; The running amplitude is the current volume level. The modifier is
;   used to change the volume ever other MSB delay count. (The volume
;   becomes fixed when silenced.)
; The LSB delay is the 128th-note-equals specification. This is used
;   to reload the running count.
; The Amplitude Modification is the value added (or subtracted) to
;   the amplitude each change.
;
; Music Descriptors
;
; 00 01 02 03 04 05 06 07 08 09 0A
;
; 00 - MSB Note Delay
; 01 - Running LSB Note delay (base delay)
; 02,03 - Music Pointer
; 04,05 - Note Table Base Pointer
; 06 Initial Amplitude
; 07 Running amplitude
; 08 LSB delay reload
; 09 Amplitude modification
; 0A -- not used
;
; # ###########################################################

; Process Music Descriptor
; Amplitude of a note is reduced at a rate of 0.5 the MSB delay.
01FC: DD 35 01  DEC   (IX+$01)      ; Decrement LSB of delay
01FF: C0        RET   NZ            ; Not time for new note -- out
0200: DD 7E 08  LD    A,(IX+$08)    ; Reload ...
0203: DD 77 01  LD    (IX+$01),A    ; ... LSB of delay
0206: DD 35 00  DEC   (IX+$00)      ; Decrement MSB of delay
0209: 28 15     JR    Z,$220        ; Load next note
020B: DD CB 00 46BIT   0,(IX+$00)    ; Test bit 0 of MSB of delay
020F: C8        RET   Z             ; Not time to fool with volume
0210: DD 7E 09  LD    A,(IX+$09)    ; Get volume modifier
0213: B7        OR    A             ; Test it
0214: C8        RET   Z             ; No modification ... out
0215: DD 86 07  ADD   A,(IX+$07)    ; Modify current volume.
0218: F8        RET   M             ; Ignore it if it wrapped
0219: DD 77 07  LD    (IX+$07),A    ; New amplitude
021C: 4F        LD    C,A           ; To C
021D: C3 99 01  JP    $0199         ; Set amplitude and out
; Load next note
0220: DD 6E 02  LD    L,(IX+$02)    ; LSB of music pointer
0223: DD 66 03  LD    H,(IX+$03)    ; MSB of music pointer
0226: 7E        LD    A,(HL)        ; Get next command
0227: 57        LD    D,A           ; Hang onto it
0228: E6 1F     AND   $1F           ; Mask out note
022A: 28 24     JR    Z,$250        ; Note 0? Just set delay
022C: FE 1F     CP    $1F           ; Special command?
022E: 28 37     JR    Z,$267        ; Yes ... process special command.
0230: CD 50 02  CALL  $0250         ; Regular note -- set delay
0233: 7A        LD    A,D           ; Get note
0234: E6 1F     AND   $1F           ; Mask off upper 3 bits
0236: 3D        DEC   A             ; -1 (0 is not a note)
0237: 07        RLCA                ; *2 (2 bytes per note)
0238: 4F        LD    C,A           ; Hold it
0239: DD 6E 04  LD    L,(IX+$04)    ; Base pointer into ...
023C: DD 66 05  LD    H,(IX+$05)    ; ... note table
023F: 09        ADD   HL,BC         ; B got set to 0 in the delay set!
0240: 5E        LD    E,(HL)        ; Get tone ...
0241: 23        INC   HL            ; ... value ...
0242: 56        LD    D,(HL)        ; ... from table
0243: EB        EX    DE,HL         ; To HL
0244: CD AA 01  CALL  $01AA         ; Write tone
0247: DD 4E 06  LD    C,(IX+$06)    ; Get amplitude
024A: DD 71 07  LD    (IX+$07),C    ; Initialize running amplitude
024D: C3 99 01  JP    $0199         ; Set amplitude and out

; Convert next byte to power of 2 and store as delay MSB
0250: 23        INC   HL            ; Next byte in music
0251: DD 75 02  LD    (IX+$02),L    ; Update ...
0254: DD 74 03  LD    (IX+$03),H    ; ... music pointer
0257: 7A        LD    A,D           ; Restore command
0258: E6 E0     AND   $E0           ; Mask off lower 5 bits
025A: 07        RLCA                ; Move upper three bits ...
025B: 07        RLCA                ; ...
025C: 07        RLCA                ; ... to lower bits.
025D: 47        LD    B,A           ; Save it
025E: 3E 80     LD    A,$80         ; One bit
0260: 07        RLCA                ; Set bit position ...
0261: 10 FD     DJNZ  $260          ; ... B
0263: DD 77 00  LD    (IX+$00),A    ; Store to MSB delay
0266: C9        RET                 ; Done

; Music byte xxx11111
; Vector to function xxx and continue processing
0267: 7A        LD    A,D           ; Restore command
0268: E6 E0     AND   $E0           ; Mask off lower bits
026A: 07        RLCA                ; Move upper ...
026B: 07        RLCA                ; ... three bits ...
026C: 07        RLCA                ; ... to low end
026D: 11 20 02  LD    DE,$0220      ; Return to process ...
0270: D5        PUSH  DE            ; ... next command
0271: 23        INC   HL            ; Bump music pointer
0272: 5D        LD    E,L           ; Hold ...
0273: 54        LD    D,H           ; ... pointer
0274: 23        INC   HL            ; Next
0275: DD 75 02  LD    (IX+$02),L    ; Save ...
0278: DD 74 03  LD    (IX+$03),H    ; ... music pointer
027B: 21 81 02  LD    HL,$0281      ; Jump table
027E: C3 28 00  JP    $0028         ; Do command and continue with next

; Music commands (DE contains pointer to 2nd byte)
0281: 91 02 ; Load base note table pointer from music
0283: A5 02 ; Load LSB delay from music
0285: B5 02 ; Load amplitude from music
0287: BA 02 ; Load amplitude modification from music
0289: C9 02 ; End sound command
028B: C9 02 ; End sound command
028D: BF 02 ; Jump to new music address
028F: C9 02 ; End sound command

; Music function 00
; Load base note table pointer
0291: EB        EX    DE,HL         ; Pointer to second byte
0292: 4E        LD    C,(HL)        ; Get second byte
0293: CB 21     SLA   C             ; *2
0295: 06 00     LD    B,$00         ; MSB = 0
0297: 21 CE 02  LD    HL,$02CE      ; Octave pointers
029A: 09        ADD   HL,BC         ; Offset into table
029B: 5E        LD    E,(HL)        ; Get byte
029C: 23        INC   HL            ; Next
029D: 56        LD    D,(HL)        ; Get byte
029E: DD 73 04  LD    (IX+$04),E    ; Store ...
02A1: DD 72 05  LD    (IX+$05),D    ; ... tone pointer
02A4: C9        RET                 ;

; Music function 01
; Load delay from table
02A5: EB        EX    DE,HL         ; Second byte pointer
02A6: 4E        LD    C,(HL)        ; Get second byte
02A7: 06 00     LD    B,$00         ; MSB = 0
02A9: 21 66 03  LD    HL,$0366      ; Data
02AC: 09        ADD   HL,BC         ; Point to entry
02AD: 7E        LD    A,(HL)        ; Get data
02AE: DD 77 08  LD    (IX+$08),A    ; Delay
02B1: DD 77 01  LD    (IX+$01),A    ; Delay
02B4: C9        RET                 ; Done

; Music function 02
; Load amplitude
02B5: 1A        LD    A,(DE)        ; Get second byte
02B6: DD 77 06  LD    (IX+$06),A    ; Store it to amplitude
02B9: C9        RET                 ; Done

; Music function 03
; Set 09 Amplitude modification
02BA: 1A        LD    A,(DE)        ; Get second byte
02BB: DD 77 09  LD    (IX+$09),A    ; Store it to ?
02BE: C9        RET                 ; Done

; Music function 06
; Jump to new music address
02BF: 1A        LD    A,(DE)        ; Get second byte
02C0: DD 77 02  LD    (IX+$02),A    ; Set ...
02C3: 13        INC   DE            ; ...
02C4: 1A        LD    A,(DE)        ; ...
02C5: DD 77 03  LD    (IX+$03),A    ; ... new pointer
02C8: C9        RET                 ; Done

; Music function 04, 05, 07
; End this music command
02C9: E1        POP   HL            ; Clear for return ...
02CA: E1        POP   HL            ; ... from music routine
02CB: 3E FF     LD    A,$FF         ; Flag end of processing
02CD: C9        RET                 ; Done

;Octave offsets into note table
02CE: EE 02 
02D0: F2 02 
02D2: F6 02 
02D4: FA 02 
02D6: FE 02 
02D8: 02 03 
02DA: 06 03 
02DC: 0A 03 
02DE: 0E 03 
02E0: 12 03 
02E2: 16 03 
02E4: 1A 03 
02E6: 1E 03 
02E8: 22 03 
02EA: 26 03 
02EC: 2A 03 

; Note Table -- tones for notes on the chromatic scale
02EE: FF 0F ; Lowest possible note
02F0: F2 07 
02F2: 80 07 
02F4: 14 07 
02F6: AE 06 
02F8: 4E 06 
02FA: F3 05 
02FC: 9E 05 
02FE: 4E 05 
0300: 01 05 
0302: B9 04 
0304: 76 04 
0306: 36 04 
0308: F9 03 
030A: C0 03 
030C: 8A 03 
030E: 57 03 
0310: 27 03 
0312: FA 02 
0314: CF 02 
0316: A7 02 
0318: 81 02 
031A: 5D 02 
031C: 3B 02 
031E: 1B 02 
0320: FD 01 
0322: E0 01 
0324: C5 01 
0326: AC 01 
0328: 94 01 
032A: 7D 01 
032C: 68 01 
032E: 53 01 
0330: 40 01 
0332: 2E 01 
0334: 1D 01 
0336: 0D 01 
0338: FE 00 
033A: F0 00 
033C: E3 00 
033E: D6 00 
0340: CA 00 
0342: BE 00 
0344: B4 00 
0346: AA 00 
0348: A0 00 
034A: 97 00 
034C: 8F 00 
034E: 87 00 
0350: 7F 00 
0352: 78 00 
0354: 71 00 
0356: 6B 00 
0358: 65 00 
035A: 5F 00 
035C: 5A 00 
035E: 55 00 
0360: 50 00 
0362: 4C 00 
0364: 07 00 ; Really high

; Delay table (bytes)
0366: 3C 
0367: 38 34 
0369: 30 2C 
036B: 28 24 
036D: 20 1E 
036F: 1C 
0370: 1A 
0371: 18 16 
0373: 14 
0374: 12 
0375: 10 0F 
0377: 0E 0D 
0379: 0C 
037A: 0B 
037B: 0A 
037C: 09 
037D: 08 

; Initialize descriptors for a specified song number
037E: 21 B5 03  LD    HL,$03B5      ; Initialization data
0381: 11 0F 30  LD    DE,$300F      ; First music descriptor
0384: 01 32 00  LD    BC,$0032      ; 10*5 = 50 bytes
0387: ED B0     LDIR                ; Initialize the data
0389: 87        ADD   A,A           ; *2
038A: 4F        LD    C,A           ; Hold
038B: 87        ADD   A,A           ; *4
038C: 87        ADD   A,A           ; *8
038D: 81        ADD   A,C           ; *10
038E: 4F        LD    C,A           ; Hold it
038F: 06 00     LD    B,$00         ; MSB = 0
0391: 21 6E 0B  LD    HL,$0B6E      ; Data region
0394: 09        ADD   HL,BC         ; Point to song
0395: 11 11 30  LD    DE,$3011      ; Music pointer descriptor 1
0398: ED A0     LDI                 ; Set ...
039A: ED A0     LDI                 ; ... pointer
039C: 1E 1B     LD    E,$1B         ; Music pointer descriptor 2
039E: ED A0     LDI                 ; Set ...
03A0: ED A0     LDI                 ; ... pointer
03A2: 1E 25     LD    E,$25         ; Music pointer descriptor 3
03A4: ED A0     LDI                 ; Set ...
03A6: ED A0     LDI                 ; ... pointer
03A8: 1E 2F     LD    E,$2F         ; Music pointer descriptor 4
03AA: ED A0     LDI                 ; Set ...
03AC: ED A0     LDI                 ; ... pointer
03AE: 1E 39     LD    E,$39         ; Music pointer descriptor 5
03B0: ED A0     LDI                 ; Set ...
03B2: ED A0     LDI                 ; ... pointer
03B4: C9        RET                 ; Done

; Initialization data for music descriptors (10 bytes each)
03B5: 01 01 00 00 00 00 00 00 00 FF 
03BF: 01 01 00 00 00 00 00 00 00 FF 
03C9: 01 01 00 00 00 00 00 00 00 FF 
03D3: 01 01 00 00 00 00 00 00 00 FF 
03DD: 01 01 00 00 00 00 00 00 00 FF 

; The sounds produced by this code were discovered by modifying
; the game code ROM to play a single sound and go into an infinite
; loop. The modified code was run through the MAME emulator.

; Command01
; Initialize Routine Vector 01 (Coin Drop)
03E7: AF        XOR   A             ;
03E8: CD C8 01  CALL  $01C8         ;
03EB: 21 6B 00  LD    HL,$006B      ; Fine=6B, Coars=00
03EE: CD AA 01  CALL  $01AA         ; Write to tone registers
03F1: 21 41 30  LD    HL,$3041      ;
03F4: 36 00     LD    (HL),$00      ;
03F6: 2C        INC   L             ;
03F7: 36 47     LD    (HL),$47      ;
03F9: 2C        INC   L             ;
03FA: 0E 09     LD    C,$09         ; Amplitude
03FC: 71        LD    (HL),C        ;
03FD: CD 99 01  CALL  $0199         ; Set amplitude
0400: AF        XOR   A             ; Return 0
0401: C9        RET                 ; Done

; Continue Sound Routine Vector 01  (Coin Drop)
0402: 21 41 30  LD    HL,$3041      ;
0405: 35        DEC   (HL)          ;
0406: 7E        LD    A,(HL)        ;
0407: E6 03     AND   $03           ;
0409: 20 18     JR    NZ,$423       ;
040B: 2C        INC   L             ;
040C: 35        DEC   (HL)          ;
040D: 7E        LD    A,(HL)        ;
040E: 28 1D     JR    Z,$42D        ; Return 1
0410: E6 07     AND   $07           ;
0412: 28 11     JR    Z,$425        ;
0414: E6 03     AND   $03           ;
0416: 3D        DEC   A             ;
0417: 4F        LD    C,A           ;
0418: 06 00     LD    B,$00         ;
041A: 21 2F 04  LD    HL,$042F      ;
041D: 09        ADD   HL,BC         ;
041E: 6E        LD    L,(HL)        ;
041F: 60        LD    H,B           ;
0420: CD AA 01  CALL  $01AA         ; Write tone registers
0423: AF        XOR   A             ; Return 0
0424: C9        RET                 ; Out
0425: 2C        INC   L             ;
0426: 35        DEC   (HL)          ;
0427: 4E        LD    C,(HL)        ;
0428: CD 99 01  CALL  $0199         ; Set amplitude
042B: AF        XOR   A             ; Return 0
042C: C9        RET                 ; Out
042D: 3D        DEC   A             ; Zero becomes FF
042E: C9        RET                 ; Done

042F: 47        LD    B,A           ;
0430: 55        LD    D,L           ;
0431: 6B        LD    L,E           ;

; Command02
; Initialization Vector Routine 02 (Plane Fire)
0432: AF        XOR   A             ; A=0
0433: CD C8 01  CALL  $01C8         ; No filter caps on channel
0436: 0E 0A     LD    C,$0A         ; Set volume ...
0438: CD 99 01  CALL  $0199         ; ... to 10
043B: 3E 80     LD    A,$80         ; Loop count ...
043D: 32 44 30  LD    ($3044),A     ; ... is 128
0440: 21 04 00  LD    HL,$0004      ; Initial frequency ...
0443: 22 45 30  LD    ($3045),HL    ; ... is 4
0446: CD AA 01  CALL  $01AA         ; Write tone (HL=tone)
0449: AF        XOR   A             ; Return a 0 (continue)
044A: C9        RET                 ;

; Continue Sound Routine Vector 02 (Plane Fire)
044B: 21 44 30  LD    HL,$3044      ; Decrement ...
044E: 35        DEC   (HL)          ; ... counter
044F: 7E        LD    A,(HL)        ; Stop if ...
0450: 28 0E     JR    Z,$460        ; ... done
0452: FE 6D     CP    $6D           ; At loop value 6D ...
0454: 28 EA     JR    Z,$440        ; ... reset frequency to 4
0456: 2A 45 30  LD    HL,($3045)    ; Current tone value
0459: 01 18 00  LD    BC,$0018      ; Add ...
045C: 09        ADD   HL,BC         ; ... 18 to frequency
045D: C3 43 04  JP    $0443         ; Store and play tone
0460: 3D        DEC   A             ; Return ...
0461: C9        RET                 ; ... -1 (finished)

; Command03
; Initialization Routine Vector 03 (1910 Bomb)
0462: AF        XOR   A             ; No filter ...
0463: CD C8 01  CALL  $01C8         ; ... caps on channel
0466: 21 C0 00  LD    HL,$00C0      ; Inital ...
0469: 22 47 30  LD    ($3047),HL    ; ... tone
046C: CD AA 01  CALL  $01AA         ; Write tone
046F: 0E 09     LD    C,$09         ; Set ...
0471: CD 99 01  CALL  $0199         ; ... volume
0474: AF        XOR   A             ; Set ...
0475: 21 49 30  LD    HL,$3049      ; ... 3049 = 0 ...
0478: 77        LD    (HL),A        ; ...
0479: C9        RET                 ;

; Continue Sound Routine Vector 03 (1910 Bomb)
047A: 21 49 30  LD    HL,$3049      ; Decrement ...
047D: 35        DEC   (HL)          ; ... counter
047E: 7E        LD    A,(HL)        ; Do nothing ...
047F: E6 07     AND   $07           ; ... until MSB ...
0481: 20 12     JR    NZ,$495       ; ... is 0
0483: 2A 47 30  LD    HL,($3047)    ; Add ...
0486: 01 40 00  LD    BC,$0040      ; ... 40 ...
0489: 09        ADD   HL,BC         ; ... to tone
048A: 7C        LD    A,H           ; When MSB is ...
048B: FE 0C     CP    $0C           ; ... 0C ...
048D: 28 08     JR    Z,$497        ; ... the effect is done
048F: 22 47 30  LD    ($3047),HL    ; Store new tone
0492: CD AA 01  CALL  $01AA         ; Write tone
0495: AF        XOR   A             ; Continue
0496: C9        RET                 ;
0497: 3E FF     LD    A,$FF         ; Done
0499: C9        RET                 ;

; Command04
; Initialization Routine Vector 04 (Missile Launch)
049A: 3E 01     LD    A,$01         ;
049C: CD C8 01  CALL  $01C8         ;
049F: 21 4A 30  LD    HL,$304A      ;
04A2: 36 00     LD    (HL),$00      ;
04A4: 2C        INC   L             ;
04A5: 0E 0F     LD    C,$0F         ;
04A7: 71        LD    (HL),C        ;
04A8: CD 99 01  CALL  $0199         ; Set volume
04AB: 21 60 00  LD    HL,$0060      ;
04AE: 22 4C 30  LD    ($304C),HL    ;
04B1: AF        XOR   A             ;
04B2: C9        RET                 ;

; Continue Sound Routine Vector 04 (Missile Launch)
04B3: 21 4A 30  LD    HL,$304A      ;
04B6: 35        DEC   (HL)          ;
04B7: 7E        LD    A,(HL)        ;
04B8: E6 0F     AND   $0F           ;
04BA: 28 16     JR    Z,$4D2        ;
04BC: 2A 4C 30  LD    HL,($304C)    ;
04BF: FE 0C     CP    $0C           ;
04C1: 01 10 00  LD    BC,$0010      ;
04C4: 30 03     JR    NC,$4C9       ;
04C6: 01 D0 FF  LD    BC,$FFD0      ;
04C9: 09        ADD   HL,BC         ;
04CA: 22 4C 30  LD    ($304C),HL    ;
04CD: CD AA 01  CALL  $01AA         ; Write tone
04D0: AF        XOR   A             ;
04D1: C9        RET                 ;
04D2: 2C        INC   L             ;
04D3: 35        DEC   (HL)          ;
04D4: 4E        LD    C,(HL)        ;
04D5: 20 D1     JR    NZ,$4A8       ;
04D7: 3D        DEC   A             ;
04D8: C9        RET                 ;

; Command05
; Initialization Routine Vector 05 (Missile - continuous)
04D9: AF        XOR   A             ;
04DA: CD C8 01  CALL  $01C8         ;
04DD: 21 4E 30  LD    HL,$304E      ;
04E0: 36 B0     LD    (HL),$B0      ;
04E2: 2C        INC   L             ;
04E3: 36 0D     LD    (HL),$0D      ;
04E5: 35        DEC   (HL)          ;
04E6: 4E        LD    C,(HL)        ;
04E7: CD 99 01  CALL  $0199         ; Set volume
04EA: 2C        INC   L             ;
04EB: 36 20     LD    (HL),$20      ;
04ED: 6E        LD    L,(HL)        ;
04EE: 26 00     LD    H,$00         ;
04F0: CD AA 01  CALL  $01AA         ; Write tone
04F3: AF        XOR   A             ;
04F4: C9        RET                 ;

; Continue Sound Routine Vector 05 (Missile - continuous)
04F5: 21 4E 30  LD    HL,$304E      ;
04F8: 35        DEC   (HL)          ;
04F9: 7E        LD    A,(HL)        ;
04FA: 28 0C     JR    Z,$508        ;
04FC: 2C        INC   L             ;
04FD: E6 0F     AND   $0F           ;
04FF: 28 E4     JR    Z,$4E5        ;
0501: 2C        INC   L             ;
0502: 34        INC   (HL)          ;
0503: C3 ED 04  JP    $04ED         ;
0506: AF        XOR   A             ;
0507: C9        RET                 ;
0508: 3D        DEC   A             ;
0509: C9        RET                 ;

; Command06
; Initialization Routine Vector 06 (UFO shot)
050A: AF        XOR   A             ;
050B: CD C8 01  CALL  $01C8         ;
050E: 21 50 00  LD    HL,$0050      ;
0511: CD AA 01  CALL  $01AA         ; Write tone
0514: 21 51 30  LD    HL,$3051      ;
0517: 36 40     LD    (HL),$40      ;
0519: 2C        INC   L             ;
051A: 0E 05     LD    C,$05         ;
051C: 71        LD    (HL),C        ;
051D: CD 99 01  CALL  $0199         ; Set volume
0520: 2C        INC   L             ;
0521: 36 17     LD    (HL),$17      ;
0523: 2C        INC   L             ;
0524: 36 50     LD    (HL),$50      ;
0526: AF        XOR   A             ;
0527: C9        RET                 ;

; Continue Sound Routine Vector 06 (UFO shot)
0528: 21 51 30  LD    HL,$3051      ;
052B: 35        DEC   (HL)          ;
052C: 28 E9     JR    Z,$517        ;
052E: 7E        LD    A,(HL)        ;
052F: 2C        INC   L             ;
0530: E6 0F     AND   $0F           ;
0532: 20 05     JR    NZ,$539       ;
0534: 34        INC   (HL)          ;
0535: 4E        LD    C,(HL)        ;
0536: CD 99 01  CALL  $0199         ; Set volume
0539: 2C        INC   L             ;
053A: 7E        LD    A,(HL)        ;
053B: C6 29     ADD   A,$29         ;
053D: 77        LD    (HL),A        ;
053E: 2C        INC   L             ;
053F: AE        XOR   (HL)          ;
0540: E6 3F     AND   $3F           ;
0542: C6 50     ADD   A,$50         ;
0544: 77        LD    (HL),A        ;
0545: 6F        LD    L,A           ;
0546: 26 00     LD    H,$00         ;
0548: CD AA 01  CALL  $01AA         ; Write tone
054B: AF        XOR   A             ;
054C: C9        RET                 ;

; Command07
; Initialization Routine Vector 07 (User Fire)
054D: AF        XOR   A             ;
054E: CD C8 01  CALL  $01C8         ;
0551: 21 56 30  LD    HL,$3056      ;
0554: 36 08     LD    (HL),$08      ;
0556: 2D        DEC   L             ;
0557: 36 2C     LD    (HL),$2C      ;
0559: 2C        INC   L             ;
055A: 35        DEC   (HL)          ;
055B: 28 29     JR    Z,$586        ;
055D: 4E        LD    C,(HL)        ;
055E: CD 99 01  CALL  $0199         ; Set volume
0561: 21 00 00  LD    HL,$0000      ;
0564: 22 57 30  LD    ($3057),HL    ;
0567: CD AA 01  CALL  $01AA         ; Write tone
056A: AF        XOR   A             ;
056B: C9        RET                 ;

; Continue Sound Routine Vector 07 (User Fire)
056C: 21 55 30  LD    HL,$3055      ;
056F: 35        DEC   (HL)          ;
0570: 7E        LD    A,(HL)        ;
0571: 28 E4     JR    Z,$557        ;
0573: FE 16     CP    $16           ;
0575: 28 EA     JR    Z,$561        ;
0577: 2A 57 30  LD    HL,($3057)    ;
057A: 01 10 00  LD    BC,$0010      ;
057D: 09        ADD   HL,BC         ;
057E: 22 57 30  LD    ($3057),HL    ;
0581: CD AA 01  CALL  $01AA         ; Write tone
0584: AF        XOR   A             ;
0585: C9        RET                 ;
0586: 3D        DEC   A             ;
0587: C9        RET                 ;

; Command08
; Initialization Routine Vector 08 (Enemy Explosion Component - thud)
0588: 3E 01     LD    A,$01         ;
058A: CD C8 01  CALL  $01C8         ;
058D: 21 5C 30  LD    HL,$305C      ;
0590: 36 0C     LD    (HL),$0C      ;
0592: 4E        LD    C,(HL)        ;
0593: CD 99 01  CALL  $0199         ; Set volume
0596: 2D        DEC   L             ;
0597: 36 00     LD    (HL),$00      ;
0599: 21 80 00  LD    HL,$0080      ;
059C: 22 59 30  LD    ($3059),HL    ;
059F: CD AA 01  CALL  $01AA         ; Write tone
05A2: AF        XOR   A             ;
05A3: C9        RET                 ;

; Continue Sound Routine Vector 08 (Enemy Explosion Component - thud)
05A4: 21 5B 30  LD    HL,$305B      ;
05A7: 34        INC   (HL)          ;
05A8: 7E        LD    A,(HL)        ;
05A9: FE 59     CP    $59           ;
05AB: 28 0F     JR    Z,$5BC        ;
05AD: 4F        LD    C,A           ;
05AE: 06 00     LD    B,$00         ;
05B0: 2A 59 30  LD    HL,($3059)    ;
05B3: 09        ADD   HL,BC         ;
05B4: 22 59 30  LD    ($3059),HL    ;
05B7: CD AA 01  CALL  $01AA         ; Write tone
05BA: AF        XOR   A             ;
05BB: C9        RET                 ;
05BC: 2C        INC   L             ;
05BD: 7E        LD    A,(HL)        ;
05BE: D6 04     SUB   $04           ;
05C0: 28 04     JR    Z,$5C6        ;
05C2: 77        LD    (HL),A        ;
05C3: C3 92 05  JP    $0592         ;
05C6: 3D        DEC   A             ;
05C7: C9        RET                 ;

; Command09
; Initialization Routine Vector 09 (Enemy Explosion Component white-noise)
05C8: 3E 01     LD    A,$01         ;
05CA: CD C8 01  CALL  $01C8         ;
05CD: 21 5D 30  LD    HL,$305D      ;
05D0: 36 00     LD    (HL),$00      ;
05D2: 2C        INC   L             ;
05D3: 36 E0     LD    (HL),$E0      ;
05D5: 2C        INC   L             ;
05D6: 0E 0D     LD    C,$0D         ;
05D8: 71        LD    (HL),C        ;
05D9: CD 99 01  CALL  $0199         ; Set volume
05DC: 2C        INC   L             ;
05DD: 36 93     LD    (HL),$93      ;
05DF: 2C        INC   L             ;
05E0: 36 D5     LD    (HL),$D5      ;
05E2: 21 C0 00  LD    HL,$00C0      ;
05E5: CD AA 01  CALL  $01AA         ; Write tone
05E8: AF        XOR   A             ;
05E9: C9        RET                 ;

; Continue Sound Routine Vector 09 (Enemy Explosion Component white-noise)
05EA: 21 5D 30  LD    HL,$305D      ;
05ED: 35        DEC   (HL)          ;
05EE: CB 46     BIT   0,(HL)        ;
05F0: 20 25     JR    NZ,$617       ;
05F2: 2C        INC   L             ;
05F3: 35        DEC   (HL)          ;
05F4: 7E        LD    A,(HL)        ;
05F5: 28 22     JR    Z,$619        ;
05F7: FE D0     CP    $D0           ;
05F9: 28 DA     JR    Z,$5D5        ;
05FB: 2C        INC   L             ;
05FC: E6 0F     AND   $0F           ;
05FE: 20 05     JR    NZ,$605       ;
0600: 35        DEC   (HL)          ;
0601: 4E        LD    C,(HL)        ;
0602: CD 99 01  CALL  $0199         ; Set volume
0605: 2C        INC   L             ;
0606: 7E        LD    A,(HL)        ;
0607: C6 53     ADD   A,$53         ;
0609: 77        LD    (HL),A        ;
060A: 2C        INC   L             ;
060B: AE        XOR   (HL)          ;
060C: 77        LD    (HL),A        ;
060D: 6F        LD    L,A           ;
060E: FE E0     CP    $E0           ;
0610: 38 01     JR    C,$613        ;
0612: AF        XOR   A             ;
0613: 67        LD    H,A           ;
0614: CD AA 01  CALL  $01AA         ; Write tone
0617: AF        XOR   A             ;
0618: C9        RET                 ;
0619: 3D        DEC   A             ;
061A: C9        RET                 ;

; Command0A
; Initialization Routine Vector 0A (Traker or Bomb Explosion)
061B: AF        XOR   A             ;
061C: CD C8 01  CALL  $01C8         ;
061F: 21 62 30  LD    HL,$3062      ;
0622: 36 00     LD    (HL),$00      ;
0624: 2C        INC   L             ;
0625: 36 C0     LD    (HL),$C0      ;
0627: 2C        INC   L             ;
0628: 36 0D     LD    (HL),$0D      ;
062A: 35        DEC   (HL)          ;
062B: 4E        LD    C,(HL)        ;
062C: CD 99 01  CALL  $0199         ; Set volume
062F: 21 20 00  LD    HL,$0020      ;
0632: 22 65 30  LD    ($3065),HL    ;
0635: CD AA 01  CALL  $01AA         ; Write tone
0638: AF        XOR   A             ;
0639: C9        RET                 ;

; Continue Sound Routine Vector 0A (Traker or Bomb Explosion)
063A: 21 62 30  LD    HL,$3062      ;
063D: 35        DEC   (HL)          ;
063E: 7E        LD    A,(HL)        ;
063F: E6 01     AND   $01           ;
0641: 20 17     JR    NZ,$65A       ;
0643: 2C        INC   L             ;
0644: 35        DEC   (HL)          ;
0645: 7E        LD    A,(HL)        ;
0646: 28 14     JR    Z,$65C        ;
0648: 2C        INC   L             ;
0649: E6 0F     AND   $0F           ;
064B: 28 DD     JR    Z,$62A        ;
064D: 2A 65 30  LD    HL,($3065)    ;
0650: 01 40 00  LD    BC,$0040      ;
0653: 09        ADD   HL,BC         ;
0654: 22 65 30  LD    ($3065),HL    ;
0657: CD AA 01  CALL  $01AA         ; Write tone
065A: AF        XOR   A             ;
065B: C9        RET                 ;
065C: 3D        DEC   A             ;
065D: C9        RET                 ;

; Command0B
; Initialization Routine Vector 0B (Squad appears)
065E: AF        XOR   A             ; No filter ...
065F: CD C8 01  CALL  $01C8         ; ... caps on channel
0662: 0E 0C     LD    C,$0C         ; Set ...
0664: CD 99 01  CALL  $0199         ; ... volume
0667: 21 67 30  LD    HL,$3067      ; Set ...
066A: 36 B8     LD    (HL),$B8      ; ... 3067 = B8
066C: 2C        INC   L             ; Set ...
066D: 36 1F     LD    (HL),$1F      ; ... 3068 = 1F
066F: 21 1F 00  LD    HL,$001F      ; Initial tone
0672: CD AA 01  CALL  $01AA         ; Write tone
0675: AF        XOR   A             ; Continue
0676: C9        RET                 ;

; Continue Sound Routine Vector 0B (Squad appears)
0677: 21 67 30  LD    HL,$3067      ; (3067) = (3067) - 1
067A: 35        DEC   (HL)          ; ...
067B: 7E        LD    A,(HL)        ; End when MSB ...
067C: 28 15     JR    Z,$693        ; ... is 0
067E: FE 60     CP    $60           ;
0680: 28 EA     JR    Z,$66C        ;
0682: E6 03     AND   $03           ;
0684: 20 0B     JR    NZ,$691       ;
0686: 2C        INC   L             ;
0687: 7E        LD    A,(HL)        ;
0688: C6 20     ADD   A,$20         ;
068A: 77        LD    (HL),A        ;
068B: 6F        LD    L,A           ;
068C: 26 00     LD    H,$00         ;
068E: CD AA 01  CALL  $01AA         ; Write tone
0691: AF        XOR   A             ;
0692: C9        RET                 ;
0693: 3D        DEC   A             ;
0694: C9        RET                 ;

; Command0C
; Initialization Routine Vector 0C (1st boss - blimp)
0695: 3E 01     LD    A,$01         ;
0697: CD C8 01  CALL  $01C8         ;
069A: 21 C0 00  LD    HL,$00C0      ;
069D: CD AA 01  CALL  $01AA         ; Write tone
06A0: 0E 0F     LD    C,$0F         ;
06A2: CD 99 01  CALL  $0199         ; Set volume
06A5: AF        XOR   A             ;
06A6: 21 69 30  LD    HL,$3069      ;
06A9: 77        LD    (HL),A        ;
06AA: 2C        INC   L             ;
06AB: 36 53     LD    (HL),$53      ;
06AD: 2C        INC   L             ;
06AE: 36 09     LD    (HL),$09      ;
06B0: 2C        INC   L             ;
06B1: 36 37     LD    (HL),$37      ;
06B3: C9        RET                 ;

; Continue Sound Routine Vector 0C (1st boss - blimp)
06B4: 21 69 30  LD    HL,$3069      ;
06B7: 35        DEC   (HL)          ;
06B8: 56        LD    D,(HL)        ;
06B9: 2C        INC   L             ;
06BA: 7E        LD    A,(HL)        ;
06BB: C6 D5     ADD   A,$D5         ;
06BD: 77        LD    (HL),A        ;
06BE: 2C        INC   L             ;
06BF: CB 42     BIT   0,D           ;
06C1: 20 09     JR    NZ,$6CC       ;
06C3: AE        XOR   (HL)          ;
06C4: 77        LD    (HL),A        ;
06C5: E6 EF     AND   $EF           ;
06C7: 4F        LD    C,A           ;
06C8: CD 99 01  CALL  $0199         ; Set volume
06CB: 79        LD    A,C           ;
06CC: 2C        INC   L             ;
06CD: AE        XOR   (HL)          ;
06CE: 77        LD    (HL),A        ;
06CF: F6 80     OR    $80           ;
06D1: 6F        LD    L,A           ;
06D2: 26 00     LD    H,$00         ;
06D4: CD AA 01  CALL  $01AA         ; Write tone
06D7: AF        XOR   A             ;
06D8: C9        RET                 ;

; Command0D
; Initialization Routine Vector 0D (2nd boss - jet)
06D9: 3E 01     LD    A,$01         ;
06DB: CD C8 01  CALL  $01C8         ;
06DE: 21 6D 30  LD    HL,$306D      ;
06E1: 36 28     LD    (HL),$28      ;
06E3: 2C        INC   L             ;
06E4: 36 05     LD    (HL),$05      ;
06E6: 2C        INC   L             ;
06E7: 36 30     LD    (HL),$30      ;
06E9: 21 00 06  LD    HL,$0600      ;
06EC: CD AA 01  CALL  $01AA         ; Write tone
06EF: 0E 08     LD    C,$08         ;
06F1: CD 99 01  CALL  $0199         ; Set volume
06F4: AF        XOR   A             ;
06F5: C9        RET                 ;

; Continue Sound Routine Vector 0D (2nd boss - jet)
06F6: 21 6D 30  LD    HL,$306D      ;
06F9: 35        DEC   (HL)          ;
06FA: 28 E5     JR    Z,$6E1        ;
06FC: 7E        LD    A,(HL)        ;
06FD: E6 07     AND   $07           ;
06FF: C6 08     ADD   A,$08         ;
0701: 4F        LD    C,A           ;
0702: CD 99 01  CALL  $0199         ; Set volume
0705: 2C        INC   L             ;
0706: 7E        LD    A,(HL)        ;
0707: C6 B9     ADD   A,$B9         ;
0709: 77        LD    (HL),A        ;
070A: 2C        INC   L             ;
070B: AE        XOR   (HL)          ;
070C: 77        LD    (HL),A        ;
070D: 6F        LD    L,A           ;
070E: 26 06     LD    H,$06         ;
0710: CD AA 01  CALL  $01AA         ; Write tone
0713: AF        XOR   A             ;
0714: C9        RET                 ;

; Command0E
; Initialization Routine Vector 0E (3rd boss - helicopter)
0715: 3E 01     LD    A,$01         ;
0717: CD C8 01  CALL  $01C8         ;
071A: 21 00 01  LD    HL,$0100      ;
071D: CD AA 01  CALL  $01AA         ; Write tone
0720: 21 70 30  LD    HL,$3070      ;
0723: 36 00     LD    (HL),$00      ;
0725: 2C        INC   L             ;
0726: 0E 0F     LD    C,$0F         ;
0728: 71        LD    (HL),C        ;
0729: CD 99 01  CALL  $0199         ; Set volume
072C: AF        XOR   A             ;
072D: 2C        INC   L             ;
072E: 77        LD    (HL),A        ;
072F: 2C        INC   L             ;
0730: 77        LD    (HL),A        ;
0731: C9        RET                 ;

; Continue Sound Routine Vector 0E (3rd boss - helicopter)
0732: 21 70 30  LD    HL,$3070      ;
0735: 35        DEC   (HL)          ;
0736: 7E        LD    A,(HL)        ;
0737: CB 47     BIT   0,A           ;
0739: 23        INC   HL            ;
073A: 20 0B     JR    NZ,$747       ;
073C: 35        DEC   (HL)          ;
073D: E6 10     AND   $10           ;
073F: 20 02     JR    NZ,$743       ;
0741: 34        INC   (HL)          ;
0742: 34        INC   (HL)          ;
0743: 4E        LD    C,(HL)        ;
0744: CD 99 01  CALL  $0199         ; Set volume
0747: 2C        INC   L             ;
0748: 7E        LD    A,(HL)        ;
0749: C6 D3     ADD   A,$D3         ;
074B: 77        LD    (HL),A        ;
074C: 2C        INC   L             ;
074D: AE        XOR   (HL)          ;
074E: 77        LD    (HL),A        ;
074F: E6 7F     AND   $7F           ;
0751: C6 A8     ADD   A,$A8         ;
0753: 6F        LD    L,A           ;
0754: E6 07     AND   $07           ;
0756: 67        LD    H,A           ;
0757: CD AA 01  CALL  $01AA         ; Write tone
075A: AF        XOR   A             ;
075B: C9        RET                 ;

; Command0F
; Initialization Routine Vector 0F (4th boss - super jet)
075C: 3E 01     LD    A,$01         ;
075E: CD C8 01  CALL  $01C8         ;
0761: 21 00 01  LD    HL,$0100      ;
0764: CD AA 01  CALL  $01AA         ; Write tone
0767: 0E 0C     LD    C,$0C         ;
0769: CD 99 01  CALL  $0199         ; Set volume
076C: AF        XOR   A             ;
076D: 21 74 30  LD    HL,$3074      ;
0770: 77        LD    (HL),A        ;
0771: 2C        INC   L             ;
0772: 77        LD    (HL),A        ;
0773: C9        RET                 ;

; Continue Sound Routine Vector 0F (4th boss - super jet)
0774: 21 74 30  LD    HL,$3074      ;
0777: 7E        LD    A,(HL)        ;
0778: C6 97     ADD   A,$97         ;
077A: 77        LD    (HL),A        ;
077B: 2C        INC   L             ;
077C: AE        XOR   (HL)          ;
077D: 77        LD    (HL),A        ;
077E: E6 7F     AND   $7F           ;
0780: C6 C0     ADD   A,$C0         ;
0782: 6F        LD    L,A           ;
0783: 26 01     LD    H,$01         ;
0785: CD AA 01  CALL  $01AA         ; Write tone
0788: AF        XOR   A             ;
0789: C9        RET                 ;

; Command10
; Initialization Routine Vector 10 (5th boss - mother ship)
078A: 3E 01     LD    A,$01         ;
078C: CD C8 01  CALL  $01C8         ;
078F: 0E 0A     LD    C,$0A         ;
0791: CD 99 01  CALL  $0199         ; Set volume
0794: 21 76 30  LD    HL,$3076      ;
0797: 36 30     LD    (HL),$30      ;
0799: 2C        INC   L             ;
079A: 36 02     LD    (HL),$02      ;
079C: 2C        INC   L             ;
079D: 3E E0     LD    A,$E0         ;
079F: 77        LD    (HL),A        ;
07A0: 2C        INC   L             ;
07A1: 77        LD    (HL),A        ;
07A2: 6F        LD    L,A           ;
07A3: 26 00     LD    H,$00         ;
07A5: CD AA 01  CALL  $01AA         ; Write tone
07A8: AF        XOR   A             ;
07A9: C9        RET                 ;

; Continue Sound Routine Vector 10 (5th boss - mother ship)
07AA: 21 76 30  LD    HL,$3076      ;
07AD: 35        DEC   (HL)          ;
07AE: 7E        LD    A,(HL)        ;
07AF: 28 E6     JR    Z,$797        ;
07B1: 2C        INC   L             ;
07B2: E6 0F     AND   $0F           ;
07B4: 28 07     JR    Z,$7BD        ;
07B6: 7E        LD    A,(HL)        ;
07B7: 2C        INC   L             ;
07B8: 2C        INC   L             ;
07B9: 86        ADD   A,(HL)        ;
07BA: C3 A1 07  JP    $07A1         ;
07BD: 34        INC   (HL)          ;
07BE: 34        INC   (HL)          ;
07BF: 2C        INC   L             ;
07C0: 7E        LD    A,(HL)        ;
07C1: D6 20     SUB   $20           ;
07C3: C3 9F 07  JP    $079F         ;

; Command11
; Initialization Routine Vector 11 (User Explosion Component)
07C6: 3E 01     LD    A,$01         ;
07C8: CD C8 01  CALL  $01C8         ;
07CB: 21 00 00  LD    HL,$0000      ;
07CE: CD AA 01  CALL  $01AA         ; Write tone
07D1: 21 7A 30  LD    HL,$307A      ;
07D4: 36 00     LD    (HL),$00      ;
07D6: 2C        INC   L             ;
07D7: 0E 0F     LD    C,$0F         ;
07D9: 71        LD    (HL),C        ;
07DA: CD 99 01  CALL  $0199         ; Set volume
07DD: 2C        INC   L             ;
07DE: 36 45     LD    (HL),$45      ;
07E0: 2C        INC   L             ;
07E1: 36 99     LD    (HL),$99      ;
07E3: AF        XOR   A             ;
07E4: C9        RET                 ;

; Continue Sound Routine Vector 11 (User Explosion Component)
07E5: 21 7A 30  LD    HL,$307A      ;
07E8: 35        DEC   (HL)          ;
07E9: 7E        LD    A,(HL)        ;
07EA: CB 47     BIT   0,A           ;
07EC: 20 19     JR    NZ,$807       ;
07EE: 2C        INC   L             ;
07EF: E6 3F     AND   $3F           ;
07F1: 20 07     JR    NZ,$7FA       ;
07F3: 35        DEC   (HL)          ;
07F4: 28 13     JR    Z,$809        ;
07F6: 4E        LD    C,(HL)        ;
07F7: CD 99 01  CALL  $0199         ; Set volume
07FA: 2C        INC   L             ;
07FB: 7E        LD    A,(HL)        ;
07FC: C6 D3     ADD   A,$D3         ;
07FE: 77        LD    (HL),A        ;
07FF: 2C        INC   L             ;
0800: AE        XOR   (HL)          ;
0801: 77        LD    (HL),A        ;
0802: 6F        LD    L,A           ;
0803: 67        LD    H,A           ;
0804: CD AA 01  CALL  $01AA         ; Write tone
0807: AF        XOR   A             ;
0808: C9        RET                 ;
0809: 3D        DEC   A             ;
080A: C9        RET                 ;

; Command12
; Initialization Routine Vector 12 (User Explosion Component)
080B: 3E 01     LD    A,$01         ;
080D: CD C8 01  CALL  $01C8         ;
0810: 21 00 00  LD    HL,$0000      ;
0813: 22 81 30  LD    ($3081),HL    ;
0816: CD AA 01  CALL  $01AA         ; Write tone
0819: 21 7E 30  LD    HL,$307E      ;
081C: 36 00     LD    (HL),$00      ;
081E: 2C        INC   L             ;
081F: 0E 0F     LD    C,$0F         ;
0821: 71        LD    (HL),C        ;
0822: CD 99 01  CALL  $0199         ; Set volume
0825: 2C        INC   L             ;
0826: AF        XOR   A             ;
0827: 77        LD    (HL),A        ;
0828: C9        RET                 ;

; Continue Sound Routine Vector 12 (User Explosion Component)
0829: 21 7E 30  LD    HL,$307E      ;
082C: 35        DEC   (HL)          ;
082D: 7E        LD    A,(HL)        ;
082E: 57        LD    D,A           ;
082F: 2C        INC   L             ;
0830: E6 1F     AND   $1F           ;
0832: 20 07     JR    NZ,$83B       ;
0834: 35        DEC   (HL)          ;
0835: 28 1E     JR    Z,$855        ;
0837: 4E        LD    C,(HL)        ;
0838: CD 99 01  CALL  $0199         ; Set volume
083B: 2C        INC   L             ;
083C: 7E        LD    A,(HL)        ;
083D: C6 C5     ADD   A,$C5         ;
083F: 77        LD    (HL),A        ;
0840: 2A 81 30  LD    HL,($3081)    ;
0843: AA        XOR   D             ;
0844: AD        XOR   L             ;
0845: 6F        LD    L,A           ;
0846: 67        LD    H,A           ;
0847: FE 80     CP    $80           ;
0849: 30 02     JR    NC,$84D       ;
084B: 26 01     LD    H,$01         ;
084D: 22 81 30  LD    ($3081),HL    ;
0850: CD AA 01  CALL  $01AA         ; Write tone
0853: AF        XOR   A             ;
0854: C9        RET                 ;
0855: 3D        DEC   A             ;
0856: C9        RET                 ;

; Command13
; Initialization Routine Vector 13 (User Explosion Component)
0857: 3E 02     LD    A,$02         ;
0859: CD C8 01  CALL  $01C8         ;
085C: 21 00 00  LD    HL,$0000      ;
085F: CD AA 01  CALL  $01AA         ; Write tone
0862: 21 83 30  LD    HL,$3083      ;
0865: 0E 0F     LD    C,$0F         ;
0867: 71        LD    (HL),C        ;
0868: CD 99 01  CALL  $0199         ; Set volume
086B: 2C        INC   L             ;
086C: 36 30     LD    (HL),$30      ;
086E: 2C        INC   L             ;
086F: 36 95     LD    (HL),$95      ;
0871: 2C        INC   L             ;
0872: 36 3D     LD    (HL),$3D      ;
0874: 21 70 00  LD    HL,$0070      ;
0877: 22 87 30  LD    ($3087),HL    ;
087A: 22 89 30  LD    ($3089),HL    ;
087D: AF        XOR   A             ;
087E: C9        RET                 ;

; Continue Sound Routine Vector 13 (User Explosion Component)
087F: 21 84 30  LD    HL,$3084      ;
0882: 35        DEC   (HL)          ;
0883: 7E        LD    A,(HL)        ;
0884: 28 28     JR    Z,$8AE        ;
0886: FE 10     CP    $10           ;
0888: 38 10     JR    C,$89A        ;
088A: 2C        INC   L             ;
088B: 7E        LD    A,(HL)        ;
088C: C6 C9     ADD   A,$C9         ;
088E: 77        LD    (HL),A        ;
088F: 2C        INC   L             ;
0890: AE        XOR   (HL)          ;
0891: 77        LD    (HL),A        ;
0892: 6F        LD    L,A           ;
0893: 26 01     LD    H,$01         ;
0895: CD AA 01  CALL  $01AA         ; Write tone
0898: AF        XOR   A             ;
0899: C9        RET                 ;
089A: D6 10     SUB   $10           ;
089C: ED 44     NEG                 ;
089E: 87        ADD   A,A           ;
089F: 4F        LD    C,A           ;
08A0: 06 00     LD    B,$00         ;
08A2: 2A 89 30  LD    HL,($3089)    ;
08A5: 09        ADD   HL,BC         ;
08A6: 22 89 30  LD    ($3089),HL    ;
08A9: CD AA 01  CALL  $01AA         ; Write tone
08AC: AF        XOR   A             ;
08AD: C9        RET                 ;
08AE: 2D        DEC   L             ;
08AF: 35        DEC   (HL)          ;
08B0: 28 1C     JR    Z,$8CE        ;
08B2: 4E        LD    C,(HL)        ;
08B3: CD 99 01  CALL  $0199         ; Set volume
08B6: 2C        INC   L             ;
08B7: 3A 85 30  LD    A,($3085)     ;
08BA: E6 3F     AND   $3F           ;
08BC: C6 30     ADD   A,$30         ;
08BE: 77        LD    (HL),A        ;
08BF: 2A 87 30  LD    HL,($3087)    ;
08C2: 01 60 00  LD    BC,$0060      ;
08C5: 09        ADD   HL,BC         ;
08C6: 22 87 30  LD    ($3087),HL    ;
08C9: 22 89 30  LD    ($3089),HL    ;
08CC: AF        XOR   A             ;
08CD: C9        RET                 ;
08CE: 3D        DEC   A             ;
08CF: C9        RET                 ;

; Command14
; Initialization Routine Vector 14 (User Explosion Component)
08D0: 3E 02     LD    A,$02         ;
08D2: CD C8 01  CALL  $01C8         ;
08D5: 21 00 00  LD    HL,$0000      ;
08D8: CD AA 01  CALL  $01AA         ; Write tone
08DB: 21 8B 30  LD    HL,$308B      ;
08DE: 0E 0F     LD    C,$0F         ;
08E0: 71        LD    (HL),C        ;
08E1: CD 99 01  CALL  $0199         ; Set volume
08E4: 2C        INC   L             ;
08E5: 36 30     LD    (HL),$30      ;
08E7: 2C        INC   L             ;
08E8: 36 95     LD    (HL),$95      ;
08EA: 2C        INC   L             ;
08EB: 36 3D     LD    (HL),$3D      ;
08ED: 21 38 00  LD    HL,$0038      ;
08F0: 22 8F 30  LD    ($308F),HL    ;
08F3: 22 91 30  LD    ($3091),HL    ;
08F6: AF        XOR   A             ;
08F7: C9        RET                 ;

; Continue Sound Routine Vector 14 (User Explosion Component)
08F8: 21 8C 30  LD    HL,$308C      ;
08FB: 35        DEC   (HL)          ;
08FC: 7E        LD    A,(HL)        ;
08FD: 28 23     JR    Z,$922        ;
08FF: FE 10     CP    $10           ;
0901: 38 10     JR    C,$913        ;
0903: 2C        INC   L             ;
0904: 7E        LD    A,(HL)        ;
0905: C6 D3     ADD   A,$D3         ;
0907: 77        LD    (HL),A        ;
0908: 2C        INC   L             ;
0909: AE        XOR   (HL)          ;
090A: 77        LD    (HL),A        ;
090B: 6F        LD    L,A           ;
090C: 26 01     LD    H,$01         ;
090E: CD AA 01  CALL  $01AA         ; Write tone
0911: AF        XOR   A             ;
0912: C9        RET                 ;
0913: 2A 91 30  LD    HL,($3091)    ;
0916: 01 30 00  LD    BC,$0030      ;
0919: 09        ADD   HL,BC         ;
091A: 22 91 30  LD    ($3091),HL    ;
091D: CD AA 01  CALL  $01AA         ; Write tone
0920: AF        XOR   A             ;
0921: C9        RET                 ;
0922: 2D        DEC   L             ;
0923: 35        DEC   (HL)          ;
0924: 28 1C     JR    Z,$942        ;
0926: 4E        LD    C,(HL)        ;
0927: CD 99 01  CALL  $0199         ; Set volume
092A: 2C        INC   L             ;
092B: 3A 8D 30  LD    A,($308D)     ;
092E: E6 3F     AND   $3F           ;
0930: C6 30     ADD   A,$30         ;
0932: 77        LD    (HL),A        ;
0933: 2A 8F 30  LD    HL,($308F)    ;
0936: 01 06 00  LD    BC,$0006      ;
0939: 09        ADD   HL,BC         ;
093A: 22 8F 30  LD    ($308F),HL    ;
093D: 22 91 30  LD    ($3091),HL    ;
0940: AF        XOR   A             ;
0941: C9        RET                 ;
0942: 3D        DEC   A             ;
0943: C9        RET                 ;

; Command15
; Initialization Routine Vector 15 (User Explosion Component)
0944: 3E 01     LD    A,$01         ;
0946: CD C8 01  CALL  $01C8         ;
0949: 21 93 30  LD    HL,$3093      ;
094C: 36 00     LD    (HL),$00      ;
094E: 2C        INC   L             ;
094F: 36 D0     LD    (HL),$D0      ;
0951: 2C        INC   L             ;
0952: 0E 0D     LD    C,$0D         ;
0954: 71        LD    (HL),C        ;
0955: CD 99 01  CALL  $0199         ; Set volume
0958: 2C        INC   L             ;
0959: 36 93     LD    (HL),$93      ;
095B: 2C        INC   L             ;
095C: 36 D5     LD    (HL),$D5      ;
095E: 21 C0 00  LD    HL,$00C0      ;
0961: CD AA 01  CALL  $01AA         ; Write tone
0964: AF        XOR   A             ;
0965: C9        RET                 ;

; Continue Sound Routine Vector 15 (User Explosion Component)
0966: 21 93 30  LD    HL,$3093      ;
0969: 35        DEC   (HL)          ;
096A: 7E        LD    A,(HL)        ;
096B: E6 03     AND   $03           ;
096D: 20 29     JR    NZ,$998       ;
096F: 2C        INC   L             ;
0970: 35        DEC   (HL)          ;
0971: 28 27     JR    Z,$99A        ;
0973: 7E        LD    A,(HL)        ;
0974: FE 98     CP    $98           ;
0976: 28 D9     JR    Z,$951        ;
0978: FE 80     CP    $80           ;
097A: 28 D5     JR    Z,$951        ;
097C: 2C        INC   L             ;
097D: E6 0F     AND   $0F           ;
097F: 20 05     JR    NZ,$986       ;
0981: 35        DEC   (HL)          ;
0982: 4E        LD    C,(HL)        ;
0983: CD 99 01  CALL  $0199         ; Set volume
0986: 2C        INC   L             ;
0987: 7E        LD    A,(HL)        ;
0988: C6 53     ADD   A,$53         ;
098A: 77        LD    (HL),A        ;
098B: 2C        INC   L             ;
098C: AE        XOR   (HL)          ;
098D: 77        LD    (HL),A        ;
098E: 6F        LD    L,A           ;
098F: FE E0     CP    $E0           ;
0991: 38 01     JR    C,$994        ;
0993: AF        XOR   A             ;
0994: 67        LD    H,A           ;
0995: CD AA 01  CALL  $01AA         ; Write tone
0998: AF        XOR   A             ;
0999: C9        RET                 ;
099A: 3D        DEC   A             ;
099B: C9        RET                 ;

; Command16
; Initialization Routine Vector 16 (Pickup Parachute)
099C: AF        XOR   A             ;
099D: CD C8 01  CALL  $01C8         ;
09A0: 0E 09     LD    C,$09         ;
09A2: CD 99 01  CALL  $0199         ; Set volume
09A5: 21 99 30  LD    HL,$3099      ;
09A8: 3E F6     LD    A,$F6         ;
09AA: D6 06     SUB   $06           ;
09AC: 77        LD    (HL),A        ;
09AD: D6 7E     SUB   $7E           ;
09AF: 28 1E     JR    Z,$9CF        ;
09B1: 2D        DEC   L             ;
09B2: 36 30     LD    (HL),$30      ;
09B4: 21 30 00  LD    HL,$0030      ;
09B7: CD AA 01  CALL  $01AA         ; Write tone
09BA: AF        XOR   A             ;
09BB: C9        RET                 ;

; Continue Sound Routine Vector 16 (Pickup Parachute)
09BC: 21 98 30  LD    HL,$3098      ;
09BF: 7E        LD    A,(HL)        ;
09C0: C6 06     ADD   A,$06         ;
09C2: 77        LD    (HL),A        ;
09C3: 2C        INC   L             ;
09C4: BE        CP    (HL)          ;
09C5: 28 E3     JR    Z,$9AA        ;
09C7: 6F        LD    L,A           ;
09C8: 26 00     LD    H,$00         ;
09CA: CD AA 01  CALL  $01AA         ; Write tone
09CD: AF        XOR   A             ;
09CE: C9        RET                 ;
09CF: 3D        DEC   A             ;
09D0: C9        RET                 ;

; Command17
; Initialization Routine Vector 17 (Free Man)
09D1: 3E 01     LD    A,$01         ;
09D3: CD C8 01  CALL  $01C8         ;
09D6: 0E 0F     LD    C,$0F         ;
09D8: CD 99 01  CALL  $0199         ; Set volume
09DB: 21 9A 30  LD    HL,$309A      ;
09DE: 36 1D     LD    (HL),$1D      ;
09E0: 2C        INC   L             ;
09E1: 2D        DEC   L             ;
09E2: 35        DEC   (HL)          ;
09E3: 7E        LD    A,(HL)        ;
09E4: 28 1A     JR    Z,$A00        ;
09E6: 2C        INC   L             ;
09E7: 77        LD    (HL),A        ;
09E8: 87        ADD   A,A           ;
09E9: 6F        LD    L,A           ;
09EA: 26 00     LD    H,$00         ;
09EC: CD AA 01  CALL  $01AA         ; Write tone
09EF: AF        XOR   A             ;
09F0: C9        RET                 ;

; Continue Sound Routine Vector 17 (Free Man)
09F1: 21 9B 30  LD    HL,$309B      ;
09F4: 35        DEC   (HL)          ;
09F5: 28 EA     JR    Z,$9E1        ;
09F7: 6E        LD    L,(HL)        ;
09F8: 26 00     LD    H,$00         ;
09FA: 29        ADD   HL,HL         ;
09FB: CD AA 01  CALL  $01AA         ; Write tone
09FE: AF        XOR   A             ;
09FF: C9        RET                 ;
0A00: 3D        DEC   A             ;
0A01: C9        RET                 ;

; Command18
; Initialization Routine Vector 18 (Time Jump 1)
0A02: AF        XOR   A             ;
0A03: CD C8 01  CALL  $01C8         ;
0A06: 0E 0A     LD    C,$0A         ;
0A08: CD 99 01  CALL  $0199         ; Set volume
0A0B: 3E 80     LD    A,$80         ;
0A0D: 32 9E 30  LD    ($309E),A     ;
0A10: 21 9C 30  LD    HL,$309C      ;
0A13: 36 00     LD    (HL),$00      ;
0A15: 2C        INC   L             ;
0A16: 36 C0     LD    (HL),$C0      ;
0A18: 21 C0 00  LD    HL,$00C0      ;
0A1B: CD AA 01  CALL  $01AA         ; Write tone
0A1E: AF        XOR   A             ;
0A1F: C9        RET                 ;

; Continue Sound Routine Vector 18 (Time Jump 1)
0A20: 21 9C 30  LD    HL,$309C      ;
0A23: 35        DEC   (HL)          ;
0A24: CB 46     BIT   0,(HL)        ;
0A26: 23        INC   HL            ;
0A27: 7E        LD    A,(HL)        ;
0A28: 20 15     JR    NZ,$A3F       ;
0A2A: 35        DEC   (HL)          ;
0A2B: 7E        LD    A,(HL)        ;
0A2C: FE 20     CP    $20           ;
0A2E: 28 18     JR    Z,$A48        ;
0A30: 2C        INC   L             ;
0A31: BE        CP    (HL)          ;
0A32: 3A 9D 30  LD    A,($309D)     ;
0A35: 20 09     JR    NZ,$A40       ;
0A37: 7E        LD    A,(HL)        ;
0A38: C6 05     ADD   A,$05         ;
0A3A: 77        LD    (HL),A        ;
0A3B: 2D        DEC   L             ;
0A3C: C3 16 0A  JP    $0A16         ;
0A3F: 1F        RRA                 ;
0A40: 6F        LD    L,A           ;
0A41: 26 00     LD    H,$00         ;
0A43: CD AA 01  CALL  $01AA         ; Write tone
0A46: AF        XOR   A             ;
0A47: C9        RET                 ;
0A48: 3E FF     LD    A,$FF         ;
0A4A: C9        RET                 ;

; Command19
; Initialization Routine Vector 19 (Time Jump 2)
0A4B: AF        XOR   A             ;
0A4C: CD C8 01  CALL  $01C8         ;
0A4F: 21 C0 00  LD    HL,$00C0      ;
0A52: CD AA 01  CALL  $01AA         ; Write tone
0A55: 0E 0F     LD    C,$0F         ;
0A57: CD 99 01  CALL  $0199         ; Set volume
0A5A: 21 9F 30  LD    HL,$309F      ;
0A5D: 36 00     LD    (HL),$00      ;
0A5F: 2C        INC   L             ;
0A60: 36 10     LD    (HL),$10      ;
0A62: 2C        INC   L             ;
0A63: 36 03     LD    (HL),$03      ;
0A65: 2C        INC   L             ;
0A66: 36 05     LD    (HL),$05      ;
0A68: AF        XOR   A             ;
0A69: C9        RET                 ;

; Continue Sound Routine Vector 19 (Time Jump 2)
0A6A: 21 9F 30  LD    HL,$309F      ;
0A6D: 35        DEC   (HL)          ;
0A6E: 7E        LD    A,(HL)        ;
0A6F: 2C        INC   L             ;
0A70: E6 3F     AND   $3F           ;
0A72: 20 03     JR    NZ,$A77       ;
0A74: 35        DEC   (HL)          ;
0A75: 28 19     JR    Z,$A90        ;
0A77: E6 03     AND   $03           ;
0A79: 20 13     JR    NZ,$A8E       ;
0A7B: 56        LD    D,(HL)        ;
0A7C: 2C        INC   L             ;
0A7D: 7E        LD    A,(HL)        ;
0A7E: C6 05     ADD   A,$05         ;
0A80: 77        LD    (HL),A        ;
0A81: 2C        INC   L             ;
0A82: AE        XOR   (HL)          ;
0A83: E6 0F     AND   $0F           ;
0A85: 77        LD    (HL),A        ;
0A86: BA        CP    D             ;
0A87: 38 01     JR    C,$A8A        ;
0A89: AF        XOR   A             ;
0A8A: 4F        LD    C,A           ;
0A8B: CD 99 01  CALL  $0199         ; Set volume
0A8E: AF        XOR   A             ;
0A8F: C9        RET                 ;
0A90: 3D        DEC   A             ;
0A91: C9        RET                 ;

; CommandTable
; Initialize sound routines
0A92: 97 01 ; 0   Write 0 to voice
0A94: E7 03 ; 1  0 Coin Drop
0A96: 32 04 ; 2  0 Plane Fire
0A98: 62 04 ; 3  0 1910 Bomb
0A9A: 9A 04 ; 4  1 Missile launch
0A9C: D9 04 ; 5  0 Missile (continuous)
0A9E: 0A 05 ; 6  0 UFO shot
0AA0: 4D 05 ; 7  0 User Fire
0AA2: 88 05 ; 8  1 Enemy Explosion Component (thud)
0AA4: C8 05 ; 9  1 Enemy Explosion Component (white-noise)
0AA6: 1B 06 ; A  0 Tracker or Bomb Explosion
0AA8: 5E 06 ; B  0 Squad Appears
0AAA: 95 06 ; C  1 1st Boss
0AAC: D9 06 ; D  1 2nd Boss
0AAE: 15 07 ; E  1 3rd Boss
0AB0: 5C 07 ; F  1 4th Boss
0AB2: 8A 07 ; 10 1 5th Boss
0AB4: C6 07 ; 11 1 User Explosion Component
0AB6: 0B 08 ; 12 1 User Explosion Component
0AB8: 57 08 ; 13 2 User Explosion Component
0ABA: D0 08 ; 14 2 User Explosion Component
0ABC: 44 09 ; 15 1 User Explosion Component
0ABE: 9C 09 ; 16 0 Pickup Parachute
0AC0: D1 09 ; 17 1 Free Man
0AC2: 02 0A ; 18 0 Time Jump 1
0AC4: 4B 0A ; 19 0 Time Jump 2
0AC6: 16 0B ; 1A 0 Initialize song 2
0AC8: 1A 0B ; 1B 1 Initialize song 1
0ACA: 3B 0B ; 1C 0 Initialize music D1
0ACC: 3B 0B ; 1D 0 Initialize music D2
0ACE: 3B 0B ; 1E 0 Initialize music D3
0AD0: 3B 0B ; 1F 0 Initialize music D4
0AD2: 3B 0B ; 20 0 Initialize music D5

; Continue sound routines
0AD4: 00 00 ; 0 Place holder for initialize command
0AD6: 02 04 ; 1
0AD8: 4B 04 ; 2
0ADA: 7A 04 ; 3 
0ADC: B3 04 ; 4 
0ADE: F5 04 ; 5
0AE0: 28 05 ; 6
0AE2: 6C 05 ; 7
0AE4: A4 05 ; 8
0AE6: EA 05 ; 9
0AE8: 3A 06 ; A
0AEA: 77 06 ; B
0AEC: B4 06 ; C
0AEE: F6 06 ; D
0AF0: 32 07 ; E
0AF2: 74 07 ; F
0AF4: AA 07 ; 10
0AF6: E5 07 ; 11
0AF8: 29 08 ; 12
0AFA: 7F 08 ; 13
0AFC: F8 08 ; 14
0AFE: 66 09 ; 15
0B00: BC 09 ; 16
0B02: F1 09 ; 17
0B04: 20 0A ; 18
0B06: 6A 0A ; 19
0B08: 00 00 ; 1A -- Playing song 0 (never kept in buffer)
0B0A: 00 00 ; 1B -- Playing song 1 (never kept in buffer)
0B0C: 41 0B ; 1C Continue music D1
0B0E: 4A 0B ; 1D Continue music D2
0B10: 53 0B ; 1E Continue music D3
0B12: 5C 0B ; 1F Continue music D4
0B14: 65 0B ; 20 Continue music D5

; Command1A
; Initialization Routine Vector 1A
0B16: AF        XOR   A             ; Play song 0
0B17: C3 1C 0B  JP    $0B1C         ; Play it

; Command1B
; Initialization Routine Vector 1B
0B1A: 3E 01     LD    A,$01         ; Play song 1
0B1C: CD 7E 03  CALL  $037E         ; Initialize music descriptors
0B1F: 11 00 30  LD    DE,$3000      ; Command table
0B22: 21 2F 0B  LD    HL,$0B2F      ; Fill ...
0B25: 01 0C 00  LD    BC,$000C      ; ... symultaneous
0B28: ED B0     LDIR                ; ... commands
0B2A: E1        POP   HL            ; Clean ...
0B2B: E1        POP   HL            ; ... stack frame
0B2C: C3 BF 00  JP    MainLoop      ; Goto main loop

; Play song command buffer
0B2F: 1C 00 ; All five music processors playing
0B31: 1D 00 ; ...
0B33: 1E 00 ; ...
0B35: 1F 00 ; ...
0B37: 20 00 ; ...
0B39: 00 00 ;

; Initialization Routine Vector 1C,1D,1E,1F,20 Music
; Do nothing.
0B3B: AF        XOR   A             ;
0B3C: CD C8 01  CALL  $01C8         ; That mysterious routine ?
0B3F: AF        XOR   A             ; Initialized
0B40: C9        RET                 ; Done

; Continue Sound Routine Vector 1C
0B41: DD 21 0F 30LD    IX,$300F      ; Descriptor 1
0B45: CD FC 01  CALL  $01FC         ; Process
0B48: AF        XOR   A             ; Continue flag
0B49: C9        RET                 ; Done

; Continue Sound Routine Vector 1D
0B4A: DD 21 19 30LD    IX,$3019      ; Descriptor 2
0B4E: CD FC 01  CALL  $01FC         ; Process
0B51: AF        XOR   A             ; Continue flag
0B52: C9        RET                 ; Done

; Continue Sound Routine Vector 1E
0B53: DD 21 23 30LD    IX,$3023      ; Descriptor 3
0B57: CD FC 01  CALL  $01FC         ; Process
0B5A: AF        XOR   A             ; Continue flag
0B5B: C9        RET                 ; Done

; Continue Sound Routine Vector 1F
0B5C: DD 21 2D 30LD    IX,$302D      ; Descriptor 4
0B60: CD FC 01  CALL  $01FC         ; Process
0B63: AF        XOR   A             ; Continue flag
0B64: C9        RET                 ; Done

; Continue Sound Routine Vector 20
0B65: DD 21 37 30LD    IX,$3037      ; Descriptor 5
0B69: CD FC 01  CALL  $01FC         ; Process
0B6C: AF        XOR   A             ; Continue flag
0B6D: C9        RET                 ; Done

; MusicData
; Descriptor pointers for songs (10 bytes each)
; Song 0
0B6E: 82 0B 
0B70: B2 0B 
0B72: E2 0B 
0B74: 08 0C 
0B76: 2D 0C 
; Song 1
0B78: 2E 0C 
0B7A: 70 0C 
0B7C: AD 0C 
0B7E: EB 0C 
0B80: 04 0D 

;Song data
; Song 0 Descriptor 0
0B82: 1F 0E 3F 16 5F 00 81 60 5F 08 66 A8 AD 92 7F 
0B91: 00 B1 91 7F FF B1 B2 91 7F 00 D4 B4 7F FF B4 
0BA0: 60 74 3F 13 77 76 74 74 73 71 71 70 6D 6D 70 
0BAF: 71 AD FF 

; Song 0 Descriptor 1
0BB2: 1F 02 3F 16 5F 00 81 60 5F 08 66 A8 AD 92 7F 
0BC1: 00 B1 91 7F FF B1 B2 91 7F 00 D4 B4 7F FF B4 
0BD0: 60 74 3F 13 77 76 74 74 73 71 71 70 6D 6D 70 
0BDF: 71 AD FF 

; Song 0 Descriptor 2
0BE2: 1F 0E 3F 13 5F 08 8D 6D 8D 6D 8D 6D 8D 6D 8D 
0BF1: 6D 8D 6D 8D 6D 8D 6D 88 68 85 60 86 60 87 60 
0C00: 7F 00 CB 7F FF AB AD FF 

; Song 0 Descriptor 3
0C08: 1F 02 3F 13 5F 08 8D 6D 8D 6D 8D 6D 8D 6D 8D 
0C17: 6D 8D 6D 8D 6D 8D 6D 88 68 85 60 86 60 87 60 
0C26: 7F 00 CB 7F FF AB AD 

; Song 0 Descriptor 4
0C2D: FF 

; Song 1 Descriptor 0
0C2E: 1F 0E 3F 15 5F 00 81 5F 07 65 65 25 25 25 25 
0C3D: A5 85 65 85 65 65 80 65 65 25 25 25 25 A5 85 
0C4C: 65 61 68 6C 6F 80 6A 6A 2A 2A 2A 2A AA 8A 6A 
0C5B: 8A 6A 6A 80 6A 6A 2A 2A 2A 2A AA 8A 68 68 68 
0C6A: 6A 6A 80 DF 37 0C 

; Song 1 Descriptor 1
0C70: 1F 0E 3F 15 5F 00 81 5F 07 68 68 28 28 28 28 
0C7F: A8 88 68 88 68 68 80 68 68 28 28 28 28 A8 88 
0C8E: A8 60 80 6D 6D 2D 2D 2D 2D AD 8D 6D 8D 6D 6D 
0C9D: 80 6D 6D 2D 2D 2D 2D AD 8D 6D 6D 6D AD DF 79 
0CAC: 0C 

; Song 1 Descriptor 2
0CAD: 1F 0E 3F 15 5F 00 81 5F 07 6C 6C 2C 2C 2C 2C 
0CBC: AC 8C 6C 8C 6C 6C 80 6C 6C 2C 2C 2C 2C AC 8C 
0CCB: AC 60 80 72 72 32 32 32 32 B2 92 72 92 72 72 
0CDA: 80 72 72 32 32 32 32 B2 92 72 72 72 92 80 DF 
0CE9: B6 0C 

; Song 1 Descriptor 3
0CEB: 1F 0E 3F 15 5F 00 E1 E0 E0 C0 A0 5F 07 78 74 
0CFA: 79 76 E0 E0 E0 C0 A0 DF F8 0C 

; Song 1 Descriptor 4
0D04: 1F 02 3F 15 5F 07 8D 60 6D 88 60 6D 60 6D 60 
0D13: 6D 28 28 28 28 88 60 8D 60 6D 88 60 6D 60 6D 
0D22: 60 6D 88 6D 68 8F 60 6F 8A 60 6F 60 6F 60 6F 
0D31: 2A 2A 2A 2A 8A 60 8F 60 6F 8A 60 8F 8F 6F 6A 
0D40: 6F 6A 6E DF 0A 0D 1F 0E 3F 16 5F 09 BF B3 B2 
0D4F: A9 B0 B9 BB BA AE E2 B7 B3 B4 C1 B5 B9 FF 

0D5D: FF FF FF
0D60: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0D70: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0D80: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0D90: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0DA0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0DB0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0DC0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0DD0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0DE0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0DF0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

0E00: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0E10: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0E20: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0E30: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0E40: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0E50: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0E60: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0E70: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0E80: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0E90: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0EA0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0EB0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0EC0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0ED0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0EE0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0EF0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

0F00: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0F10: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0F20: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0F30: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0F40: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0F50: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0F60: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0F70: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0F80: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0F90: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0FA0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0FB0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0FC0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0FD0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0FE0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0FF0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF