1479 lines
28 KiB
Plaintext
1479 lines
28 KiB
Plaintext
;ACME 0.85
|
|
|
|
!cpu 6502 ; Compatible with all Apple2's
|
|
!to "Cybernoid", plain
|
|
!sl "Cybernoid.labels"
|
|
*=$6000
|
|
|
|
;------------------------------------------------------------------------------
|
|
|
|
!source "..\Common\Z80-Macros.a"
|
|
!source "..\Common\ZP-Macros.a"
|
|
!source "..\Common\AppleDefs.a"
|
|
!source "..\Common\MockingboardDefs.a"
|
|
!source "..\Common\MB-Macros.a"
|
|
|
|
;------------------------------------------------------------------------------
|
|
|
|
!zone code
|
|
|
|
;--------------------------------------
|
|
|
|
NUM_SONGS = 16
|
|
|
|
INIT:
|
|
; Pre: A = Song# [0..NUM_SONGS-1]
|
|
;
|
|
|
|
+MB_Init1 RegE
|
|
|
|
+PUSH16 RegDE
|
|
jsr lef93
|
|
+POP16 RegDE
|
|
jsr lef42
|
|
|
|
+MB_Init2
|
|
rts
|
|
|
|
;--------------------------------------
|
|
|
|
lef42: ; Called by INIT & Cmd_09
|
|
+LD RegC, RegA
|
|
jsr lefc1 ; Pre: RegE, Post: RegHL
|
|
|
|
+LD_REG_INDIRECT RegA, RegHL ; ld a,(hl)
|
|
cmp #9
|
|
+JP_NC lef4e ; jp nc,0ef4eh
|
|
|
|
+LD RegC, RegA
|
|
+INCW RegHL ; inc hl
|
|
|
|
lef4e:
|
|
+LD RegA, RegC
|
|
|
|
+LDW RegIX, lf214
|
|
dec RegA
|
|
beq lef63 ; jp z,0ef63h
|
|
|
|
+LDW RegIX, lf237
|
|
dec RegA
|
|
beq lef63 ; jp z,0ef63h
|
|
|
|
+LDW RegIX, lf25a
|
|
|
|
lef63:
|
|
+LD_REG_INDIRECT RegA, RegHL ; ld a,(hl)
|
|
cmp #$f4
|
|
php
|
|
+LD_REG_IMM RegA, $0A ; ld a,0ah
|
|
plp
|
|
bne lef6e ; jp z,0ef6eh
|
|
+INCW RegHL
|
|
+LD_REG_INDIRECT RegA, RegHL ; ld a,(hl)
|
|
+INCW RegHL
|
|
|
|
lef6e:
|
|
+CP_INDIRECT_OFFSET RegIX, $10
|
|
+RET_C
|
|
|
|
;
|
|
|
|
lda RegA
|
|
sta (RegIX),y ; ld (ix+10h),a
|
|
|
|
lda #$01
|
|
iny ; y=$11
|
|
sta (RegIX),y ; ld (ix+11h),01h
|
|
|
|
lda RegL
|
|
iny ; y=$12
|
|
sta (RegIX),y ; ld (ix+12h),l
|
|
ldy #$14
|
|
sta (RegIX),y ; ld (ix+14h),l
|
|
ldy #$16
|
|
sta (RegIX),y ; ld (ix+16h),l
|
|
|
|
lda RegH
|
|
ldy #$13
|
|
sta (RegIX),y ; ld (ix+13h),h
|
|
ldy #$15
|
|
sta (RegIX),y ; ld (ix+15h),h
|
|
ldy #$17
|
|
sta (RegIX),y ; ld (ix+17h),h
|
|
|
|
+LD_REG_IMM RegA, 0 ; xor a
|
|
iny ; y=$18
|
|
sta (RegIX),y ; ld (ix+18h),a
|
|
ldy #$20
|
|
sta (RegIX),y ; ld (ix+20h),a
|
|
rts
|
|
|
|
;--------------------------------------
|
|
|
|
; Called by INIT
|
|
|
|
lef93:
|
|
+LD_REG_IMM RegA, 0 ; xor a
|
|
sta lf224
|
|
sta lf247
|
|
sta lf26a
|
|
sta lf1fe ; A volume
|
|
sta lf1ff ; B volume
|
|
sta lf200 ; C volume
|
|
|
|
+LD_REG_IMM RegA, $3f ; Enable = $3F (all disabled)
|
|
sta lf1fd
|
|
|
|
;
|
|
|
|
; Called by Interrupt0
|
|
|
|
lefab:
|
|
; Copy [lf203..lf1f6] -> AY registers
|
|
+MB_WriteAYRegs lf1f6
|
|
|
|
rts
|
|
|
|
;--------------------------------------
|
|
|
|
; Refs tables at f3a6 & f28e
|
|
|
|
lefc1:
|
|
; Pre:
|
|
; RegE
|
|
; . Assume 2*RegE < 0xFF (OK since table at lf3a6 is only 43 (50?) words)
|
|
; Post:
|
|
; RegHL = 0xF28E + *(IWORD*)(0xF3A6 + 2*RegE)
|
|
|
|
lda RegE
|
|
cmp #43
|
|
bcc .lt1
|
|
brk
|
|
.lt1
|
|
|
|
lda #<lf3a6
|
|
sta TmpHL ; LSB
|
|
lda #>lf3a6
|
|
sta TmpHL+1 ; MSB
|
|
|
|
+LD RegA, RegE
|
|
asl ; =lsl
|
|
tay
|
|
|
|
clc
|
|
lda (TmpHL),y ; LSB
|
|
adc #<lf28e
|
|
sta RegL
|
|
iny
|
|
lda (TmpHL),y ; MSB
|
|
adc #>lf28e
|
|
sta RegH
|
|
|
|
rts
|
|
|
|
;--------------------------------------
|
|
|
|
lefd2:
|
|
; Pre:
|
|
; RegE
|
|
; . Assume 2*RegE < 0xFF (OK since table at lf356 is only 40 words)
|
|
; Post:
|
|
; RegBC = 0xF28E + *(IWORD*)(0xF356 + 2*RegE)
|
|
|
|
lda RegE
|
|
cmp #40
|
|
bcc .lt2
|
|
brk
|
|
.lt2
|
|
|
|
lda #<lf356
|
|
sta TmpHL ; LSB
|
|
lda #>lf356
|
|
sta TmpHL+1 ; MSB
|
|
|
|
+LD RegA, RegE
|
|
asl ; =lsl
|
|
tay
|
|
|
|
clc
|
|
lda (TmpHL),y ; LSB
|
|
adc #<lf28e
|
|
sta RegC
|
|
iny
|
|
lda (TmpHL),y ; MSB
|
|
adc #>lf28e
|
|
sta RegB
|
|
|
|
rts
|
|
|
|
;--------------------------------------
|
|
|
|
Interrupt:
|
|
+MB_ISR lefe5
|
|
|
|
;--------------------------------------
|
|
|
|
lefe5:
|
|
inc nFrameNum+2
|
|
lda nFrameNum+2
|
|
cmp #50
|
|
bne .fnum_ok
|
|
lda #0
|
|
sta nFrameNum+2
|
|
inc nFrameNum+1
|
|
lda nFrameNum+1
|
|
cmp #60
|
|
bne .fnum_ok
|
|
lda #0
|
|
sta nFrameNum+1
|
|
inc nFrameNum+0
|
|
.fnum_ok:
|
|
|
|
;
|
|
|
|
jsr lefab
|
|
|
|
+LDW RegIX, lf214
|
|
+LDW_INDIRECT RegHL, lf1f6 ; HL = A-freq
|
|
jsr lf01b
|
|
+LDW_INDIRECT RegHL, lf204
|
|
+LDW_INDIRECT lf1f6, RegHL ; A-freq = HL
|
|
|
|
+LDW_INDIRECT RegHL, lf1f8 ; HL = B-freq
|
|
+LDW RegIX, lf237
|
|
jsr lf01b
|
|
+LDW_INDIRECT RegHL, lf204
|
|
+LDW_INDIRECT lf1f8, RegHL ; B-freq = HL
|
|
|
|
+LDW_INDIRECT RegHL, lf1fa ; HL = C-freq
|
|
+LDW RegIX, lf25a
|
|
jsr lf01b
|
|
+LDW_INDIRECT RegHL, lf204
|
|
+LDW_INDIRECT lf1fa, RegHL ; C-freq = HL
|
|
|
|
jmp lf1b1
|
|
|
|
;--------------------------------------
|
|
|
|
lf01b:
|
|
+LDW_INDIRECT lf204, RegHL
|
|
ldy #$10
|
|
lda (RegIX),y
|
|
sta RegA
|
|
+RET_Z
|
|
|
|
+DEC_INDIRECT_OFFSET RegIX, $11
|
|
+JP_NZ lf162
|
|
|
|
lda #$14
|
|
ldy #$1e
|
|
sta (RegIX),y ; ld (ix+1eh),14h
|
|
|
|
lf02d:
|
|
ldy #$13
|
|
lda (RegIX),y
|
|
sta RegH ; ld h,(ix+13h)
|
|
dey
|
|
lda (RegIX),y ; ld l,(ix+12h)
|
|
sta RegL
|
|
|
|
lf033:
|
|
ldx #0
|
|
lda (RegHL,x)
|
|
sta RegA ; ld a,(hl) - Cmd
|
|
+INCW RegHL
|
|
lda (RegHL,x)
|
|
sta RegE ; ld e,(hl) - Parameter
|
|
+INCW RegHL
|
|
|
|
ldy #$13
|
|
lda RegH
|
|
sta (RegIX),y ; ld (ix+13h),h
|
|
dey
|
|
lda RegL
|
|
sta (RegIX),y ; ld (ix+12h),l
|
|
|
|
+DEC_INDIRECT_OFFSET RegIX, $1e
|
|
+RET_Z
|
|
|
|
lda RegA
|
|
+JP_Z lf116
|
|
|
|
cmp #$09
|
|
+JP_C lf089 ; jp if a = {1..8}
|
|
cmp #$65
|
|
+JP_C lf113 ; jp if a = {0Ah..64h}
|
|
|
|
cmp #$e4
|
|
+JP_Z lf093 ; Cmd: Noise
|
|
cmp #$e3
|
|
+JP_Z lf111
|
|
cmp #$e1
|
|
+JP_Z lf0e6
|
|
cmp #$e9
|
|
+JP_Z lf0a4
|
|
cmp #$e8
|
|
+JP_Z lf0b0
|
|
cmp #$ea
|
|
+JP_Z lf0bc
|
|
cmp #$e2
|
|
+JP_Z lf0f9
|
|
cmp #$e5
|
|
+JP_Z lf0c6
|
|
cmp #$e6
|
|
+JP_Z lf09e
|
|
cmp #$f0
|
|
+JP_Z lf0f3
|
|
cmp #$ff
|
|
+JP_Z lf0d2
|
|
jmp lf033
|
|
|
|
;--------------------------------------
|
|
|
|
lf089: ; Cmd_01..08
|
|
+PUSH16 RegIX
|
|
jsr lef42 ; Re-init
|
|
+POP16 RegIX
|
|
jmp lf02d
|
|
|
|
;--------------------------------------
|
|
|
|
lf093: ; Cmd_E4
|
|
+LD RegA, RegE
|
|
+LD_INDIRECT_ABS lf1fc, RegA
|
|
+LD_INDIRECT_OFFSET_IMM RegIX, $19, $01
|
|
jmp lf033
|
|
|
|
;--------------------------------------
|
|
|
|
lf09e: ; Cmd_E6
|
|
+LD_INDIRECT_OFFSET RegIX, $18, RegE
|
|
jmp lf033
|
|
|
|
;--------------------------------------
|
|
|
|
lf0a4: ; Cmd_E9
|
|
jsr lefd2 ; Post: bc
|
|
+LD_INDIRECT_OFFSET RegIX, $0e, RegC
|
|
+LD_INDIRECT_OFFSET RegIX, $0f, RegB
|
|
jmp lf033
|
|
|
|
;--------------------------------------
|
|
|
|
lf0b0: ; Cmd_E8
|
|
jsr lefd2 ; Post: bc
|
|
+LD_INDIRECT_OFFSET RegIX, $0c, RegC
|
|
+LD_INDIRECT_OFFSET RegIX, $0d, RegB
|
|
jmp lf033
|
|
|
|
;--------------------------------------
|
|
|
|
lf0bc: ; Cmd_EA
|
|
jsr lefd2 ; Post: bc
|
|
+LDW_INDIRECT lf212, RegBC
|
|
jmp lf033
|
|
|
|
;--------------------------------------
|
|
|
|
lf0c6: ; Cmd_E5
|
|
+LD_INDIRECT_OFFSET RegIX, $15, RegH
|
|
+LD_INDIRECT_OFFSET RegIX, $14, RegL
|
|
jsr lefc1 ; Post: hl
|
|
jmp lf033
|
|
|
|
;--------------------------------------
|
|
|
|
lf0d2: ; Cmd_FF
|
|
+LD_REG_INDIRECT_OFFSET RegH, RegIX, $15
|
|
+LD_REG_INDIRECT_OFFSET RegL, RegIX, $14
|
|
+LD_REG_INDIRECT RegA, RegHL
|
|
tax
|
|
inx
|
|
txa
|
|
sta RegA
|
|
+JP_NZ lf033
|
|
|
|
+LD_REG_INDIRECT_OFFSET RegH, RegIX, $17
|
|
+LD_REG_INDIRECT_OFFSET RegL, RegIX, $16
|
|
jmp lf033
|
|
|
|
;--------------------------------------
|
|
|
|
lf0e6: ; Cmd_E1
|
|
|
|
+LD_INDIRECT_OFFSET_IMM RegIX, $10, $00 ; ld (ix+10h),00h
|
|
+LD_REG_INDIRECT_OFFSET RegH, RegIX, $1d ; ld h,(ix+1dh)
|
|
+LD_REG_INDIRECT_OFFSET RegL, RegIX, $1c ; ld l,(ix+1ch)
|
|
+LD_INDIRECT_IMM RegHL, $00 ; ld (hl),00h
|
|
rts
|
|
|
|
;--------------------------------------
|
|
|
|
lf0f3: ; Cmd_F0
|
|
+LD_INDIRECT_OFFSET RegIX, $20, RegE
|
|
jmp lf033
|
|
|
|
;--------------------------------------
|
|
|
|
lf492 = $28b2
|
|
|
|
lf0f9: ; Cmd_E2
|
|
; Pseudo random number generator
|
|
; . Pre: RegE = mask
|
|
; . Post: lf111_SMC+1 = value (Cmd_E3)
|
|
;
|
|
|
|
lf0f9_SMC_l:
|
|
lda #<lf492 ; LSB
|
|
sta RegL
|
|
lf0f9_SMC_h:
|
|
lda #>lf492 ; MSB
|
|
sta RegH
|
|
|
|
+LD RegC, RegL
|
|
+LD RegB, RegH
|
|
|
|
+ADDW RegHL, RegHL ; x2
|
|
+ADDW RegHL, RegHL ; x4
|
|
+ADDW RegHL, RegBC ; x5
|
|
+ADDW RegHL, RegHL ; x10
|
|
+ADDW RegHL, RegHL ; x20
|
|
+ADDW RegHL, RegHL ; x40
|
|
+ADDW RegHL, RegBC ; x41
|
|
|
|
lda RegL
|
|
sta lf0f9_SMC_l+1 ; Self modifying code
|
|
lda RegH
|
|
sta lf0f9_SMC_h+1 ; Self modifying code
|
|
|
|
; ld a,h
|
|
and RegE
|
|
sta RegA
|
|
inc RegA
|
|
lda RegA
|
|
sta lf111_SMC+1 ; Self modifying code
|
|
jmp lf02d
|
|
|
|
;--------------------------------------
|
|
|
|
lf111: ; Cmd_E3
|
|
|
|
lf111_SMC:
|
|
lda #$2a
|
|
sta RegA
|
|
|
|
;--------------------------------------
|
|
|
|
lf113: ; Cmd_0A..64
|
|
|
|
ldy #$18
|
|
lda (RegIX),y
|
|
clc
|
|
adc RegA
|
|
sta RegA
|
|
|
|
;--------------------------------------
|
|
|
|
lf116: ; Cmd_00
|
|
|
|
; ld (ix+11h),e
|
|
+LD_INDIRECT_OFFSET RegIX, $11, RegE
|
|
|
|
; ld (ix+21h),a
|
|
+LD_INDIRECT_OFFSET RegIX, $21, RegA
|
|
|
|
; call lf1a1
|
|
jsr lf1a1
|
|
|
|
; ld h,(ix+1dh)
|
|
+LD_REG_INDIRECT_OFFSET RegH, RegIX, $1d
|
|
|
|
; ld l,(ix+1ch)
|
|
+LD_REG_INDIRECT_OFFSET RegL, RegIX, $1c
|
|
|
|
; ld (hl),00h
|
|
+LD_INDIRECT_IMM RegHL, $00 ; Set Voice's volume = 0
|
|
|
|
; push ix
|
|
+PUSH16 RegIX
|
|
|
|
; pop de
|
|
+POP16 RegDE
|
|
|
|
; ld hl,0008h
|
|
+LDW RegHL, $0008
|
|
|
|
; add hl,de
|
|
+ADDW RegHL, RegDE
|
|
|
|
; ldi
|
|
+LDI
|
|
|
|
; ldi
|
|
+LDI
|
|
|
|
; ldi
|
|
+LDI
|
|
|
|
; ldi
|
|
+LDI
|
|
|
|
; ldi
|
|
+LDI
|
|
|
|
; ldi
|
|
+LDI
|
|
|
|
; ldi
|
|
+LDI
|
|
|
|
; ldi
|
|
+LDI
|
|
|
|
; dec (ix+19h)
|
|
+DEC_INDIRECT_OFFSET RegIX, $19
|
|
php
|
|
|
|
; ld (ix+19h),00h
|
|
+LD_INDIRECT_OFFSET_IMM RegIX, $19, $00 ; flags not affected
|
|
|
|
; ld l,(ix+1ah)
|
|
+LD_REG_INDIRECT_OFFSET RegL, RegIX, $1A ; flags not affected
|
|
|
|
plp
|
|
; jr nz,0f156h
|
|
bne lf156
|
|
|
|
; ld hl,(0f212h)
|
|
+LDW_INDIRECT RegHL, lf212
|
|
|
|
; ld (0f20ah),hl
|
|
+LDW_INDIRECT lf20a, RegHL
|
|
|
|
; ld hl,0000h
|
|
+LDW RegHL, $0000
|
|
|
|
; ld (0f206h),hl
|
|
+LDW_INDIRECT lf206, RegHL
|
|
|
|
lf156:
|
|
; ld a,(0f1fdh)
|
|
+LD_REG_INDIRECT_ABS RegA, lf1fd ; a = AY_Data[Enable]
|
|
|
|
; and (ix+1bh)
|
|
ldy #$1b
|
|
and (RegIX),y
|
|
|
|
; or l
|
|
ora RegL
|
|
|
|
; and 3fh
|
|
and #$3f
|
|
sta RegA
|
|
|
|
; ld (0f1fdh),a
|
|
+LD_INDIRECT_ABS lf1fd, RegA ; Set AY_Data[Enable]
|
|
|
|
lf162:
|
|
; call lf1c9
|
|
jsr lf1c9
|
|
|
|
; ld h,(ix+1dh)
|
|
+LD_REG_INDIRECT_OFFSET RegH, RegIX, $1d
|
|
|
|
; ld l,(ix+1ch)
|
|
+LD_REG_INDIRECT_OFFSET RegL, RegIX, $1c
|
|
|
|
; ld a,(hl)
|
|
+LD_REG_INDIRECT RegA, RegHL
|
|
|
|
; add a,c
|
|
clc
|
|
adc RegC
|
|
|
|
; sub 80h
|
|
sec
|
|
sbc #$80
|
|
sta RegA
|
|
|
|
; ld (hl),a
|
|
+LD_INDIRECT RegHL, RegA
|
|
|
|
; ld hl,(0f204h)
|
|
+LDW_INDIRECT RegHL, lf204
|
|
|
|
; ld a,h
|
|
+LD RegA, RegH
|
|
|
|
; or l
|
|
ora RegL
|
|
|
|
; ret z
|
|
+RET_Z
|
|
|
|
;
|
|
|
|
; ld a,(ix+20h)
|
|
+LD_REG_INDIRECT_OFFSET RegA, RegIX, $20
|
|
|
|
; or a
|
|
; ora RegA ; Previous 6502 LDA sets flags
|
|
|
|
; jp nz,lf192
|
|
+JP_NZ lf192
|
|
|
|
; inc ix
|
|
+INCW RegIX
|
|
|
|
; inc ix
|
|
+INCW RegIX
|
|
|
|
; call lf1c9
|
|
jsr lf1c9
|
|
|
|
Portamento:
|
|
; ld hl,(0f204h)
|
|
+LDW_INDIRECT RegHL, lf204
|
|
|
|
; ld b,00h
|
|
+LD_REG_IMM RegB, $00
|
|
|
|
; add hl,bc
|
|
+ADDW RegHL, RegBC
|
|
|
|
; ld c,80h
|
|
+LD_REG_IMM RegC, $80
|
|
|
|
; sbc hl,bc
|
|
+INVERT_CARRY
|
|
+SBCW RegHL, RegBC
|
|
|
|
; ld (0f204h),hl
|
|
+LDW_INDIRECT lf204, RegHL
|
|
|
|
; ret
|
|
rts
|
|
|
|
;--------------------------------------
|
|
|
|
lf192:
|
|
; dec (ix+22h)
|
|
+DEC_INDIRECT_OFFSET RegIX, $22
|
|
php
|
|
|
|
; ld a,(ix+21h)
|
|
+LD_REG_INDIRECT_OFFSET RegA, RegIX, $21
|
|
|
|
; jr z,lf1a1
|
|
plp
|
|
beq lf1a1
|
|
|
|
; add a,(ix+20h)
|
|
ldy #$20
|
|
clc
|
|
adc (RegIX),y
|
|
sta RegA
|
|
|
|
; ld (ix+22h),01h
|
|
+LD_INDIRECT_OFFSET_IMM RegIX, $22, $01
|
|
|
|
lf1a1:
|
|
; RegHL = 0xF28E + 2*RegA
|
|
; . Assume 2*RegA < 0xFF (OK since table at lf28e is only 100 words)
|
|
|
|
lda RegA
|
|
cmp #100
|
|
bcc .lt3
|
|
brk
|
|
.lt3
|
|
|
|
lda RegA
|
|
asl ; A = 2*RegA
|
|
clc
|
|
adc #<lf28e ; LSB
|
|
sta RegL
|
|
lda #0
|
|
adc #>lf28e ; MSB
|
|
sta RegH ; LDI src: RegHL
|
|
|
|
; lda RegA
|
|
; clc
|
|
; adc #<lf28e ; LSB
|
|
; sta RegL
|
|
; lda #0
|
|
; adc #>lf28e ; MSB
|
|
; sta RegH
|
|
;
|
|
; lda RegA
|
|
; clc
|
|
; adc RegL ; LSB
|
|
; sta RegL
|
|
; lda #0
|
|
; adc RegH ; MSB
|
|
; sta RegH ; LDI src: RegHL
|
|
|
|
; ld de,0f204h
|
|
+LDW RegDE, lf204 ; LDI dst: RegDE
|
|
|
|
; ldi
|
|
+LDI
|
|
|
|
; ldi
|
|
+LDI
|
|
|
|
; ret
|
|
rts
|
|
|
|
;--------------------------------------
|
|
|
|
lf1b1:
|
|
; ld ix,0f206h
|
|
+LDW RegIX, lf206
|
|
|
|
; call lf1c9
|
|
jsr lf1c9
|
|
|
|
; ld hl,0f1fch
|
|
+LDW RegHL, lf1fc ; lf1fc = AYRegValues.NOISEPER
|
|
|
|
; ld a,(hl)
|
|
+LD_REG_INDIRECT RegA, RegHL
|
|
|
|
; add a,c
|
|
clc
|
|
adc RegC
|
|
|
|
; sub 80h
|
|
sec
|
|
sbc #$80
|
|
sta RegA
|
|
|
|
; ld (hl),a
|
|
+LD_INDIRECT RegHL, RegA
|
|
|
|
; cp 11h
|
|
cmp #$11
|
|
|
|
; ret c
|
|
+RET_C
|
|
|
|
; inc hl
|
|
+INCW RegHL ; lf1fd = AYRegValues.ENABLE
|
|
|
|
; ld a,(hl)
|
|
+LD_REG_INDIRECT RegA, RegHL
|
|
|
|
; or 38h
|
|
ora #$38 ; ENABLE |= 0x38 (disable noise CBA)
|
|
sta RegA
|
|
|
|
; ld (hl),a
|
|
+LD_INDIRECT RegHL, RegA
|
|
|
|
; ret
|
|
rts
|
|
|
|
;--------------------------------------
|
|
|
|
lf1c9:
|
|
; push ix
|
|
+PUSH16 RegIX
|
|
|
|
; pop hl
|
|
+POP16 RegHL
|
|
|
|
; ld d,(ix+05h)
|
|
+LD_REG_INDIRECT_OFFSET RegD, RegIX, $05
|
|
|
|
; ld e,(ix+04h)
|
|
+LD_REG_INDIRECT_OFFSET RegE, RegIX, $04
|
|
|
|
; inc (hl)
|
|
+INC_INDIRECT RegHL
|
|
|
|
lda RegD ; $00nn?
|
|
bne +
|
|
lda #$f3 ; 48K ROM $0000
|
|
sta RegA
|
|
bne ++ ; branch always
|
|
+
|
|
; ld a,(de)
|
|
+LD_REG_INDIRECT RegA, RegDE
|
|
++
|
|
|
|
; sub (hl)
|
|
+SUB_INDIRECT RegHL
|
|
php
|
|
|
|
; ld c,80h
|
|
+LD_REG_IMM RegC, $80
|
|
|
|
; ret nz
|
|
plp
|
|
+RET_NZ
|
|
|
|
;
|
|
|
|
; ld (hl),a
|
|
+LD_INDIRECT RegHL, RegA
|
|
|
|
; inc de
|
|
+INCW RegDE
|
|
|
|
lda RegD ; $00nn?
|
|
bne +
|
|
lda #$af ; 48K ROM $0001
|
|
sta RegA
|
|
bne ++ ; branch always
|
|
+
|
|
; ld a,(de)
|
|
+LD_REG_INDIRECT RegA, RegDE
|
|
++
|
|
|
|
; ld c,a
|
|
+LD RegC, RegA
|
|
|
|
; inc de
|
|
+INCW RegDE
|
|
|
|
; inc hl
|
|
+INCW RegHL
|
|
|
|
; inc (hl)
|
|
+INC_INDIRECT RegHL
|
|
|
|
lda RegD ; $00nn?
|
|
bne +
|
|
lda #$11 ; 48K ROM $0003
|
|
sta RegA
|
|
bne ++ ; branch always
|
|
+
|
|
; ld a,(de)
|
|
+LD_REG_INDIRECT RegA, RegDE
|
|
++
|
|
|
|
; sub (hl)
|
|
+SUB_INDIRECT RegHL
|
|
|
|
; ret nz
|
|
+RET_NZ
|
|
|
|
;
|
|
|
|
; ld (hl),a
|
|
+LD_INDIRECT RegHL, RegA
|
|
|
|
; inc de
|
|
+INCW RegDE
|
|
|
|
; ld a,(de)
|
|
+LD_REG_INDIRECT RegA, RegDE
|
|
|
|
; inc a
|
|
inc RegA
|
|
|
|
; jp nz,lf1ef
|
|
+JP_NZ lf1ef
|
|
|
|
; ld d,(ix+0dh)
|
|
+LD_REG_INDIRECT_OFFSET RegD, RegIX, $0D
|
|
|
|
; ld e,(ix+0ch)
|
|
+LD_REG_INDIRECT_OFFSET RegE, RegIX, $0C
|
|
|
|
lf1ef:
|
|
; ld (ix+05h),d
|
|
+LD_INDIRECT_OFFSET RegIX, $05, RegD
|
|
|
|
; ld (ix+04h),e
|
|
+LD_INDIRECT_OFFSET RegIX, $04, RegE
|
|
|
|
; ret
|
|
rts
|
|
|
|
;------------------------------------------------------------------------------
|
|
|
|
; Skyfox MB detection routine:
|
|
|
|
SF_GetMBSlot:
|
|
; Pre:
|
|
; Post:
|
|
; Z = 0 (NE) : MB detected
|
|
; X = HI(MB base address)
|
|
; (MBBase) = MB slot address
|
|
;
|
|
|
|
jsr SF_Detect
|
|
|
|
.Loop: stx TmpL
|
|
jsr SF_Detect
|
|
cpx TmpL
|
|
bne .Loop
|
|
|
|
cpx #$C8
|
|
rts
|
|
|
|
;--------------------------------------
|
|
|
|
SF_Detect:
|
|
lda #0
|
|
sta MBBaseL
|
|
lda #$c1
|
|
sta MBBaseH
|
|
ldx #7
|
|
|
|
.SlotNext:
|
|
ldy #SY6522_TIMER1L_COUNTER+SY6522_A_PH_BASE
|
|
jsr SF_GetTimerL
|
|
bne .SlotLoop
|
|
|
|
ldy #SY6522_TIMER1L_COUNTER+SY6522_B_BASE
|
|
jsr SF_GetTimerL
|
|
beq .SlotDone
|
|
|
|
.SlotLoop:
|
|
inc MBBaseH
|
|
dex
|
|
bne .SlotNext
|
|
|
|
.SlotDone:
|
|
ldx MBBaseH
|
|
rts
|
|
|
|
;--------------------------------------
|
|
|
|
|
|
SF_GetTimerL:
|
|
lda (MBBase),y
|
|
cmp MBBaseL
|
|
sbc (MBBase),y
|
|
cmp #$08
|
|
rts
|
|
|
|
;------------------------------------------------------------------------------
|
|
|
|
!zone data
|
|
|
|
ZPBlock: !fill ZPSize,0
|
|
Z80Block: !fill ZPSize,0
|
|
nMBBaseHi: !byte 0
|
|
|
|
;--------------------------------------
|
|
|
|
; Song Hi/Lo reg values:
|
|
SongTbl: !byte 01 ; 0: (AY: Title/In-game)
|
|
!byte 34 ; 1: (AY: Game over)
|
|
!byte 40 ; 2: (AY: Hall of fame)
|
|
!byte 00 ; 3: (Beeper: Title)
|
|
!byte 22 ; 4: (AY: SFX 01)
|
|
!byte 23 ; 5: (AY: SFX 02)
|
|
!byte 24 ; 6: (AY: SFX 03)
|
|
!byte 25 ; 7: (AY: SFX 04)
|
|
!byte 26 ; 8: (AY: SFX 05)
|
|
!byte 27 ; 9: (AY: SFX 06)
|
|
!byte 28 ; 10: (AY: SFX 07)
|
|
!byte 29 ; 11: (AY: SFX 08)
|
|
!byte 30 ; 12: (AY: SFX 09)
|
|
!byte 31 ; 13: (AY: SFX 10)
|
|
!byte 32 ; 14: (AY: SFX 11)
|
|
!byte 33 ; 15: (AY: SFX 12)
|
|
|
|
;--------------------------------------
|
|
|
|
; AY regs [0..$D]
|
|
AYRegValues:
|
|
lf1f6: !word $01a8 ; A period
|
|
lf1f8: !word 0 ; B period
|
|
lf1fa: !word 0 ; C period
|
|
lf1fc: !byte $2f ; Noise period
|
|
lf1fd: !byte $3f ; Enable
|
|
lf1fe: !byte 0 ; A volume
|
|
lf1ff: !byte 0 ; B volume
|
|
lf200: !byte 0 ; C volume
|
|
lf201: !word $0064 ; Envelope period (not used)
|
|
lf203: !byte $0a ; Envelope shape (not used)
|
|
|
|
;--------------------------------------
|
|
|
|
lf204: !word 0 ; Tone period
|
|
lf206: !word $014a
|
|
!word $000a
|
|
|
|
;--------------------------------------
|
|
|
|
lf20a: !word 0
|
|
!word $0004
|
|
!word 0
|
|
!word $0012
|
|
|
|
lf212: !word 0
|
|
|
|
;--------------------------------------
|
|
|
|
!macro MUSIC_DATA_ADDR .addr {
|
|
!word lf40a + (.addr - $f40a)
|
|
}
|
|
|
|
; Voice-A struct
|
|
|
|
lf214: !byte 0
|
|
!byte 2
|
|
!byte 0
|
|
!byte 0
|
|
+MUSIC_DATA_ADDR $f41b
|
|
+MUSIC_DATA_ADDR $f471
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
+MUSIC_DATA_ADDR $f418
|
|
+MUSIC_DATA_ADDR $f471
|
|
lf224: !byte 0
|
|
!byte $0a
|
|
+MUSIC_DATA_ADDR $f65e
|
|
+MUSIC_DATA_ADDR $f575
|
|
+MUSIC_DATA_ADDR $f56f
|
|
!byte 7
|
|
!byte 0
|
|
!byte $08 ; 001000 - Disable A (Noise)
|
|
!byte $36 ; 110110 - Enable A (Noise & Tone)
|
|
!word lf1fe ; &VolA
|
|
!byte $12
|
|
!byte 0
|
|
!byte $10
|
|
!byte $29
|
|
!byte 1
|
|
|
|
;--------------------------------------
|
|
|
|
; Voice-B struct
|
|
|
|
lf237: !byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!word 0
|
|
!word 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!word 0
|
|
!word 0
|
|
lf247: !byte 0
|
|
!byte 0
|
|
!word 0
|
|
!word 0
|
|
!word 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte $10 ; 010000 - Disable B (Noise)
|
|
!byte $2d ; 101101 - Enable B (Noise & Tone)
|
|
!word lf1ff ; &VolB
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
|
|
;--------------------------------------
|
|
|
|
; Voice-C struct
|
|
|
|
lf25a: !byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!word 0
|
|
!word 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!word 0
|
|
!word 0
|
|
lf26a: !byte 0
|
|
!byte 0
|
|
!word 0
|
|
!word 0
|
|
!word 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte $20 ; 100000 - Disable C (Noise)
|
|
!byte $1b ; 011011 - Enable C (Noise & Tone)
|
|
!word lf200 ; &VolC
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
|
|
;--------------------------------------
|
|
|
|
;lf27d:
|
|
!byte $2a
|
|
!fill 16,0 ; ?
|
|
|
|
;--------------------------------------
|
|
|
|
; Ref'ed by func @ f1a1
|
|
; Ref'ed by func @ efc1 (only table's base addr)
|
|
; Ref'ed by func @ efd2 (only table's base addr)
|
|
|
|
lf28e:
|
|
; Table size = WORD[100]
|
|
; . Period for each note
|
|
; . ZX Spectrum's CLK for AY8912 = 1.77345MHz
|
|
; . Envelopes are not used, so no E-Periods to convert
|
|
|
|
!macro ZX2MB .period {
|
|
; !word .period*10227/17734 ; Mockingboard 1MHz ((NTSC:14.3181818e6 / 14) / 100)
|
|
!word .period*20358/17734 ; Phasor 2MHz ((PAL:14.25045e6 / 7) / 100)
|
|
; !word .period
|
|
}
|
|
|
|
+ZX2MB $0000
|
|
+ZX2MB $2a17
|
|
+ZX2MB $27ba
|
|
+ZX2MB $2580
|
|
+ZX2MB $2365
|
|
+ZX2MB $2168
|
|
+ZX2MB $1f88
|
|
+ZX2MB $1dc3
|
|
+ZX2MB $1c18
|
|
+ZX2MB $1a84
|
|
+ZX2MB $1907
|
|
+ZX2MB $179f
|
|
+ZX2MB $164c
|
|
+ZX2MB $150c
|
|
+ZX2MB $13dd
|
|
+ZX2MB $12c0
|
|
+ZX2MB $11b2
|
|
+ZX2MB $10b4
|
|
+ZX2MB $0fc4
|
|
+ZX2MB $0ee2
|
|
+ZX2MB $0e0c
|
|
+ZX2MB $0d42
|
|
+ZX2MB $0c84
|
|
+ZX2MB $0bd0
|
|
+ZX2MB $0b26
|
|
+ZX2MB $0a86
|
|
+ZX2MB $09ef
|
|
+ZX2MB $0960
|
|
+ZX2MB $08d9
|
|
+ZX2MB $085a
|
|
+ZX2MB $07e2
|
|
+ZX2MB $0771
|
|
+ZX2MB $0706
|
|
+ZX2MB $06a1
|
|
+ZX2MB $0642
|
|
+ZX2MB $05e8
|
|
+ZX2MB $0593
|
|
+ZX2MB $0543
|
|
+ZX2MB $04f7
|
|
+ZX2MB $04b0
|
|
+ZX2MB $046d
|
|
+ZX2MB $042d
|
|
+ZX2MB $03f1
|
|
+ZX2MB $03b8
|
|
+ZX2MB $0383
|
|
+ZX2MB $0350
|
|
+ZX2MB $0321
|
|
+ZX2MB $02f4
|
|
+ZX2MB $02ca
|
|
+ZX2MB $02a1
|
|
+ZX2MB $027c
|
|
+ZX2MB $0258
|
|
+ZX2MB $0236
|
|
+ZX2MB $0217
|
|
+ZX2MB $01f9
|
|
+ZX2MB $01dc
|
|
+ZX2MB $01c1
|
|
+ZX2MB $01a8
|
|
+ZX2MB $0190
|
|
+ZX2MB $017a
|
|
+ZX2MB $0165
|
|
+ZX2MB $0151
|
|
+ZX2MB $013e
|
|
+ZX2MB $012c
|
|
+ZX2MB $011b
|
|
+ZX2MB $010b
|
|
+ZX2MB $00fc
|
|
+ZX2MB $00ee
|
|
+ZX2MB $00e1
|
|
+ZX2MB $00d4
|
|
+ZX2MB $00c8
|
|
+ZX2MB $00bd
|
|
+ZX2MB $00b2
|
|
+ZX2MB $00a8
|
|
+ZX2MB $009f
|
|
+ZX2MB $0096
|
|
+ZX2MB $008e
|
|
+ZX2MB $0086
|
|
+ZX2MB $007e
|
|
+ZX2MB $0077
|
|
+ZX2MB $0070
|
|
+ZX2MB $006a
|
|
+ZX2MB $0064
|
|
+ZX2MB $005e
|
|
+ZX2MB $0059
|
|
+ZX2MB $0054
|
|
+ZX2MB $004f
|
|
+ZX2MB $004b
|
|
+ZX2MB $0047
|
|
+ZX2MB $0043
|
|
+ZX2MB $003f
|
|
+ZX2MB $003c
|
|
+ZX2MB $0038
|
|
+ZX2MB $0035
|
|
+ZX2MB $0032
|
|
+ZX2MB $002f
|
|
+ZX2MB $002d
|
|
+ZX2MB $002a
|
|
+ZX2MB $0028
|
|
+ZX2MB $0000
|
|
|
|
;--------------------------------------
|
|
|
|
; Ref'ed by func @ efd2
|
|
|
|
lf356:
|
|
; Table size = WORD[40]
|
|
|
|
!word $017c ; lf28e + $17c = lf40a (addr of music data)
|
|
!word $0180
|
|
!word $018a
|
|
!word $0194
|
|
!word $0195
|
|
!word $019c
|
|
!word $01a9
|
|
!word $01b6
|
|
!word $01c3
|
|
!word $01cd
|
|
!word $01ce
|
|
!word $01cf
|
|
!word $01d9
|
|
!word $01e3
|
|
!word $01ed
|
|
!word $01f7
|
|
!word $0201
|
|
!word $020b
|
|
!word $0212
|
|
!word $0228
|
|
!word $022c
|
|
!word $0230
|
|
!word $023a
|
|
!word $0247
|
|
!word $0248
|
|
!word $0258
|
|
!word $025f
|
|
!word $0266
|
|
!word $0267
|
|
!word $026b
|
|
!word $0278
|
|
!word $027f
|
|
!word $0280
|
|
!word $0281
|
|
!word $0282
|
|
!word $028c
|
|
!word $02a5
|
|
!word $02be
|
|
!word $02ce
|
|
!word $0000
|
|
|
|
;--------------------------------------
|
|
|
|
; Ref'ed by func @ efc1
|
|
|
|
lf3a6:
|
|
; Table size = WORD[43]
|
|
|
|
!word $02da
|
|
!word $02e0
|
|
!word $039c
|
|
!word $03a5
|
|
!word $03b0
|
|
!word $03e5
|
|
!word $046e
|
|
!word $04f1
|
|
!word $0518
|
|
!word $053f
|
|
!word $056c
|
|
!word $0577
|
|
!word $057c
|
|
!word $0597
|
|
!word $061a
|
|
!word $061d
|
|
!word $0632
|
|
!word $06c3
|
|
!word $06e0
|
|
!word $06f9
|
|
!word $0714
|
|
!word $0787
|
|
!word $078c
|
|
!word $0796
|
|
!word $07a4
|
|
!word $07ae
|
|
!word $07b8
|
|
!word $07c8
|
|
!word $07d8
|
|
!word $07e2
|
|
!word $07f0
|
|
!word $07fe
|
|
!word $0808
|
|
!word $0818
|
|
!word $082a
|
|
!word $0838
|
|
!word $083b
|
|
!word $0848
|
|
!word $085b
|
|
!word $0894
|
|
!word $08a7
|
|
!word $08c5
|
|
!word $08e2 ; lf28e + $8e2 = lfb70 (near end of music data)
|
|
|
|
;--------------------------------------
|
|
|
|
;lf3fc:
|
|
; Table size = WORD[7]
|
|
; . ?
|
|
|
|
!word $1a4a
|
|
!word $1a58
|
|
!word $1a62
|
|
!word $1aae
|
|
!word $1aca
|
|
!word $1ae5
|
|
!word $0000
|
|
|
|
;--------------------------------------
|
|
|
|
; Music data
|
|
|
|
lf40a:
|
|
; Table size = BYTE[1916]
|
|
|
|
!byte $C8,$80,$C8,$FF,$01,$81,$0D,$09,$7F,$09,$C8,$80,$C8,$FF,$01,$8D
|
|
!byte $01,$01,$7F,$04,$01,$77,$01,$FF,$FF,$01,$87,$01,$C8,$80,$C8,$FF
|
|
!byte $01,$8C,$01,$0A,$7F,$08,$14,$7F,$04,$C8,$80,$C8,$FF,$01,$8D,$01
|
|
!byte $02,$7F,$07,$0C,$7F,$06,$C8,$80,$C8,$FF,$01,$8D,$01,$01,$7F,$0B
|
|
!byte $09,$7F,$02,$C8,$80,$C8,$FF,$01,$88,$01,$01,$82,$01,$C8,$80,$C8
|
|
!byte $FF,$FF,$FF,$01,$77,$01,$01,$83,$03,$C8,$80,$C8,$FF,$02,$81,$02
|
|
!byte $02,$7F,$03,$02,$81,$01,$FF,$01,$81,$02,$01,$7F,$04,$01,$81,$02
|
|
!byte $FF,$01,$89,$01,$01,$79,$01,$C8,$80,$C8,$FF,$01,$82,$02,$01,$7E
|
|
!byte $04,$01,$82,$02,$FF,$01,$87,$03,$01,$79,$06,$01,$87,$03,$FF,$01
|
|
!byte $88,$0A,$01,$96,$C8,$FF,$01,$93,$01,$01,$6D,$01,$01,$7F,$02,$01
|
|
!byte $81,$04,$01,$7F,$04,$01,$81,$02,$C8,$80,$C8,$FF,$02,$81,$C8,$FF
|
|
!byte $02,$7F,$C8,$FF,$01,$80,$01,$01,$B4,$01,$C8,$80,$C8,$FF,$01,$80
|
|
!byte $01,$01,$8B,$01,$01,$B4,$01,$C8,$80,$C8,$FF,$FF,$01,$85,$03,$01
|
|
!byte $71,$01,$01,$80,$01,$01,$8F,$01,$01,$7B,$03,$FF,$01,$85,$03,$01
|
|
!byte $71,$01,$FF,$01,$96,$01,$02,$79,$02,$FF,$FF,$01,$A1,$C8,$FF,$01
|
|
!byte $85,$03,$09,$7D,$04,$0E,$7F,$03,$C8,$80,$C8,$FF,$01,$84,$01,$01
|
|
!byte $7F,$01,$FF,$FF,$FF,$FF,$02,$8D,$01,$02,$67,$01,$C8,$80,$C8,$FF
|
|
!byte $01,$8F,$01,$08,$80,$01,$02,$7F,$01,$04,$7F,$01,$07,$7F,$02,$0C
|
|
!byte $7F,$04,$16,$7F,$07,$C8,$80,$C8,$FF,$01,$79,$01,$01,$8B,$01,$01
|
|
!byte $6F,$01,$01,$9B,$01,$01,$5B,$01,$01,$AF,$01,$01,$47,$01,$01,$C3
|
|
!byte $01,$FF,$01,$8F,$01,$01,$7A,$01,$01,$86,$01,$01,$7F,$09,$08,$7F
|
|
!byte $06,$FF,$01,$99,$03,$01,$79,$07,$0A,$7E,$C8,$FF,$01,$9B,$E1,$FF
|
|
!byte $FF,$FF,$FF,$AF,$01,$E8,$00,$00,$30,$E5,$04,$02,$02,$E5,$04,$02
|
|
!byte $03,$E5,$04,$02,$08,$00,$54,$02,$04,$E5,$05,$02,$04,$E5,$06,$02
|
|
!byte $04,$E5,$05,$02,$04,$E5,$06,$02,$00,$E4,$06,$00,$06,$E4,$06,$00
|
|
!byte $06,$E5,$0D,$E5,$10,$E5,$0D,$E5,$10,$E5,$08,$E5,$08,$E5,$08,$E5
|
|
!byte $0C,$02,$04,$E5,$05,$02,$04,$E5,$06,$02,$04,$E5,$05,$02,$04,$E5
|
|
!byte $06,$02,$00,$F0,$00,$E4,$06,$3A,$06,$E4,$06,$39,$06,$E5,$0D,$E5
|
|
!byte $10,$E5,$0D,$E5,$10,$02,$25,$E5,$26,$E4,$06,$00,$06,$E4,$06,$00
|
|
!byte $06,$E5,$09,$E5,$07,$E5,$09,$E5,$08,$E6,$13,$02,$13,$E5,$14,$E4
|
|
!byte $01,$00,$0C,$02,$13,$E5,$14,$E4,$01,$00,$0C,$E6,$15,$02,$15,$E5
|
|
!byte $14,$E4,$01,$00,$0C,$02,$15,$E5,$14,$02,$0F,$E5,$05,$02,$0F,$E5
|
|
!byte $05,$02,$0F,$E5,$05,$02,$0F,$E5,$05,$E4,$06,$00,$06,$E4,$06,$00
|
|
!byte $06,$E5,$0D,$E5,$0D,$E5,$10,$02,$25,$E5,$26,$E5,$07,$E5,$0B,$FF
|
|
!byte $E8,$00,$00,$60,$E5,$07,$E5,$07,$FF,$E5,$09,$E8,$00,$00,$30,$E5
|
|
!byte $07,$E5,$07,$FF,$E6,$07,$E8,$02,$E9,$0D,$F0,$00,$1F,$0C,$1F,$0C
|
|
!byte $22,$0C,$24,$0C,$26,$0C,$F0,$0F,$26,$0C,$F0,$0E,$26,$0C,$26,$0C
|
|
!byte $F0,$10,$22,$0C,$F0,$00,$22,$0C,$16,$0C,$22,$0C,$16,$0C,$F0,$10
|
|
!byte $24,$0C,$F0,$00,$18,$0C,$24,$0C,$FF,$E6,$07,$E8,$06,$F0,$18,$03
|
|
!byte $27,$EA,$16,$E4,$01,$30,$06,$E4,$01,$31,$06,$E4,$01,$32,$06,$E4
|
|
!byte $01,$30,$06,$E4,$01,$32,$06,$E4,$01,$35,$06,$EA,$00,$E4,$06,$3A
|
|
!byte $0C,$EA,$16,$E4,$01,$3C,$06,$E4,$01,$39,$06,$E4,$01,$00,$06,$E4
|
|
!byte $01,$00,$06,$E4,$01,$00,$06,$E4,$01,$00,$06,$EA,$00,$E4,$06,$00
|
|
!byte $0C,$EA,$16,$E4,$01,$00,$06,$E4,$01,$00,$06,$E4,$01,$00,$06,$E4
|
|
!byte $01,$00,$06,$E4,$01,$2E,$06,$E4,$01,$00,$06,$EA,$00,$E4,$06,$30
|
|
!byte $0C,$EA,$16,$E4,$01,$32,$06,$E4,$01,$30,$06,$E4,$01,$00,$06,$E4
|
|
!byte $01,$00,$06,$E4,$01,$00,$06,$E4,$01,$00,$06,$EA,$00,$E4,$06,$00
|
|
!byte $0C,$FF,$03,$27,$EA,$16,$E4,$01,$30,$06,$E4,$01,$31,$06,$E4,$01
|
|
!byte $32,$06,$E4,$01,$30,$06,$E4,$01,$32,$06,$E4,$01,$35,$06,$EA,$00
|
|
!byte $E4,$06,$3A,$0C,$EA,$16,$E4,$01,$3C,$06,$E4,$01,$39,$06,$E4,$01
|
|
!byte $00,$06,$E4,$01,$00,$06,$E4,$01,$00,$06,$E4,$01,$00,$06,$EA,$00
|
|
!byte $E4,$06,$39,$0C,$EA,$16,$E4,$01,$35,$06,$E4,$01,$00,$06,$E4,$01
|
|
!byte $00,$06,$E4,$01,$00,$06,$E4,$01,$00,$06,$E4,$01,$00,$06,$EA,$00
|
|
!byte $E4,$06,$37,$0C,$EA,$16,$E4,$01,$34,$06,$E4,$01,$00,$06,$E4,$01
|
|
!byte $00,$06,$E4,$01,$00,$06,$E4,$01,$00,$06,$E4,$01,$00,$06,$EA,$00
|
|
!byte $E4,$06,$00,$0C,$FF,$E8,$07,$EA,$15,$03,$00,$E4,$01,$00,$06,$E4
|
|
!byte $01,$00,$06,$E4,$01,$00,$06,$E4,$01,$00,$06,$EA,$00,$E4,$06,$00
|
|
!byte $0C,$EA,$15,$E4,$01,$00,$06,$E4,$01,$00,$06,$FF,$E8,$07,$EA,$16
|
|
!byte $03,$00,$E4,$01,$00,$06,$E4,$01,$00,$06,$E4,$01,$00,$06,$E4,$01
|
|
!byte $00,$06,$EA,$00,$E4,$06,$00,$0C,$EA,$16,$E4,$01,$00,$06,$E4,$01
|
|
!byte $00,$06,$FF,$E6,$13,$E8,$07,$EA,$00,$E9,$00,$03,$00,$EA,$16,$E4
|
|
!byte $01,$43,$06,$E4,$01,$41,$06,$E4,$0E,$3C,$06,$E4,$01,$3E,$06,$EA
|
|
!byte $00,$E4,$06,$00,$0C,$EA,$16,$E4,$06,$00,$06,$E4,$06,$00,$06,$FF
|
|
!byte $E6,$13,$E8,$04,$E9,$10,$00,$0C,$48,$A8,$E1,$00,$F0,$00,$F0,$FF
|
|
!byte $E8,$07,$EA,$16,$E4,$01,$00,$06,$E4,$01,$00,$06,$E4,$01,$00,$06
|
|
!byte $E4,$01,$00,$06,$EA,$00,$E4,$06,$00,$0C,$FF,$E6,$07,$E8,$06,$E9
|
|
!byte $0F,$F0,$18,$1F,$06,$F0,$00,$1F,$06,$F0,$18,$1F,$06,$F0,$00,$1F
|
|
!byte $06,$EA,$14,$E4,$06,$00,$06,$1F,$06,$F0,$18,$1F,$06,$F0,$00,$1F
|
|
!byte $06,$F0,$1B,$1E,$06,$F0,$00,$1E,$06,$F0,$1B,$1E,$06,$F0,$00,$1E
|
|
!byte $06,$E4,$06,$00,$06,$1E,$06,$F0,$1B,$1E,$06,$F0,$00,$1E,$06,$F0
|
|
!byte $1B,$1F,$06,$F0,$00,$1F,$06,$F0,$1B,$1F,$06,$F0,$00,$1F,$06,$EA
|
|
!byte $14,$E4,$06,$00,$06,$1F,$06,$F0,$1B,$1F,$06,$F0,$00,$1F,$06,$F0
|
|
!byte $1D,$21,$06,$F0,$00,$21,$06,$F0,$1D,$21,$06,$F0,$00,$21,$06,$E4
|
|
!byte $06,$21,$06,$21,$06,$F0,$1B,$21,$06,$F0,$00,$21,$06,$FF,$00,$06
|
|
!byte $FF,$E4,$06,$00,$06,$E4,$06,$00,$06,$E5,$0D,$E8,$04,$3C,$30,$48
|
|
!byte $90,$3C,$30,$48,$90,$FF,$02,$11,$F0,$18,$22,$06,$F0,$00,$22,$06
|
|
!byte $F0,$18,$22,$06,$F0,$00,$22,$06,$EA,$01,$E4,$06,$00,$06,$22,$06
|
|
!byte $F0,$18,$22,$06,$F0,$00,$22,$06,$F0,$28,$1D,$06,$F0,$00,$1D,$06
|
|
!byte $F0,$28,$1D,$06,$F0,$00,$1D,$06,$E4,$06,$00,$06,$1D,$06,$F0,$29
|
|
!byte $E4,$06,$1D,$06,$F0,$00,$1D,$06,$02,$12,$EA,$01,$F0,$21,$E4,$01
|
|
!byte $24,$06,$F0,$00,$E4,$01,$24,$06,$F0,$1F,$E4,$01,$24,$06,$F0,$00
|
|
!byte $E4,$01,$24,$06,$F0,$1F,$E4,$06,$24,$06,$F0,$00,$24,$06,$24,$06
|
|
!byte $24,$06,$F0,$1F,$E4,$0E,$24,$06,$E4,$0A,$24,$06,$E4,$07,$24,$06
|
|
!byte $E4,$04,$24,$06,$F0,$00,$E4,$01,$24,$06,$E4,$04,$24,$06,$E4,$0A
|
|
!byte $29,$06,$E4,$0E,$2B,$06,$FF,$E6,$1F,$E8,$08,$E9,$0C,$00,$0C,$22
|
|
!byte $0C,$24,$0C,$26,$0C,$2D,$06,$00,$06,$2D,$06,$00,$06,$2D,$0C,$2E
|
|
!byte $0C,$00,$30,$E1,$E6,$1F,$E8,$08,$E9,$0C,$2D,$0C,$2B,$06,$00,$06
|
|
!byte $2B,$06,$00,$06,$2B,$24,$E9,$11,$37,$24,$00,$60,$E1,$E8,$02,$E9
|
|
!byte $0D,$24,$18,$27,$18,$2B,$18,$2E,$18,$27,$24,$28,$0C,$29,$18,$2D
|
|
!byte $0C,$2E,$06,$30,$06,$00,$60,$E1,$E8,$05,$F0,$00,$E9,$0C,$03,$27
|
|
!byte $EA,$16,$E4,$01,$30,$06,$2E,$06,$E4,$01,$2C,$06,$29,$06,$EA,$00
|
|
!byte $E4,$06,$27,$06,$24,$06,$E4,$01,$22,$06,$24,$06,$EA,$16,$E4,$01
|
|
!byte $27,$06,$00,$06,$E4,$01,$24,$06,$00,$06,$EA,$00,$E4,$06,$2B,$06
|
|
!byte $00,$06,$E4,$01,$27,$06,$27,$06,$EA,$16,$E4,$01,$00,$06,$00,$06
|
|
!byte $E4,$01,$00,$06,$00,$06,$EA,$00,$E4,$06,$29,$06,$00,$06,$E4,$01
|
|
!byte $26,$06,$26,$06,$EA,$16,$E4,$01,$00,$06,$00,$06,$E4,$01,$00,$06
|
|
!byte $00,$06,$EA,$00,$E4,$06,$00,$06,$00,$06,$FF,$E6,$02,$E5,$13,$FF
|
|
!byte $02,$F4,$0F,$E8,$19,$E9,$18,$5D,$48,$E1,$02,$F4,$0F,$E8,$01,$F0
|
|
!byte $3C,$EA,$05,$E4,$02,$24,$48,$E1,$02,$F4,$0F,$E8,$1D,$E9,$1E,$4F
|
|
!byte $4D,$E1,$03,$F4,$0F,$E8,$06,$E9,$19,$53,$0F,$E1,$03,$F4,$0F,$E8
|
|
!byte $07,$E9,$01,$EA,$01,$E4,$07,$5E,$10,$EA,$16,$E1,$03,$F4,$0F,$E8
|
|
!byte $05,$E9,$1C,$EA,$27,$E4,$03,$4F,$14,$EA,$16,$E1,$02,$F4,$0F,$E8
|
|
!byte $15,$E9,$10,$43,$14,$E1,$03,$F4,$0F,$E2,$0F,$E8,$25,$E9,$26,$E6
|
|
!byte $3E,$E3,$19,$E1,$02,$F4,$0F,$E8,$23,$E9,$24,$EA,$00,$E4,$0E,$56
|
|
!byte $63,$E1,$03,$F4,$0F,$E8,$12,$E9,$24,$61,$20,$E1,$02,$F4,$0F,$E8
|
|
!byte $1D,$E9,$1A,$EA,$0B,$E4,$0C,$39,$40,$E9,$0C,$E1,$03,$F4,$0F,$E8
|
|
!byte $06,$E9,$22,$EA,$00,$E4,$0E,$5E,$02,$5E,$10,$EA,$16,$E1,$01,$F4
|
|
!byte $0F,$02,$24,$00,$12,$03,$24,$00,$12,$E5,$24,$E1,$00,$03,$E1,$F4
|
|
!byte $0F,$E8,$02,$E9,$1A,$EA,$15,$E4,$07,$5E,$5A,$E1,$E6,$07,$E8,$02
|
|
!byte $E9,$0F,$20,$48,$22,$18,$23,$48,$E8,$05,$25,$78,$E5,$0A,$E1,$E6
|
|
!byte $07,$E8,$07,$F0,$0C,$37,$06,$37,$06,$35,$0C,$EA,$16,$E4,$04,$33
|
|
!byte $0C,$30,$18,$32,$0C,$E4,$04,$33,$0C,$E4,$04,$35,$0C,$36,$06,$36
|
|
!byte $06,$35,$0C,$E4,$04,$33,$0C,$2F,$18,$31,$0C,$EA,$14,$E4,$06,$33
|
|
!byte $0C,$E8,$05,$35,$60,$F0,$00,$FF,$E6,$37,$E8,$0E,$E9,$00,$E2,$1F
|
|
!byte $E3,$06,$13,$06,$E3,$06,$1F,$06,$E3,$06,$FF,$01,$F4,$0F,$E8,$08
|
|
!byte $E9,$0F,$E2,$0E,$EA,$13,$02,$2A,$03,$29,$E6,$1E,$E3,$18,$E4,$01
|
|
!byte $00,$18,$E3,$18,$E4,$01,$00,$18,$FF,$F4,$0F,$E8,$08,$E9,$0C,$E6
|
|
!byte $31,$E3,$06,$E6,$36,$E3,$06,$E6,$38,$E3,$06,$E6,$3A,$E3,$06,$E6
|
|
!byte $38,$E3,$2A,$00,$0C,$FF,$F4,$0F,$E8,$08,$E9,$0C,$E6,$1E,$E3,$18
|
|
!byte $E3,$18,$E3,$18,$E3,$18,$FF,$E6,$34,$1A,$00,$00
|
|
|
|
;lfb86:
|
|
|