mirror of
https://github.com/tomcw/Cybernoid.git
synced 2025-02-12 16:30:24 +00:00
1261 lines
26 KiB
Plaintext
1261 lines
26 KiB
Plaintext
;ACME 0.85
|
|
|
|
!cpu 6502 ; Compatible with all Apple2's
|
|
!to "Cybernoid2", plain
|
|
!sl "Cybernoid2.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 RegA
|
|
|
|
+PUSH16 RegA ;RegAF
|
|
jsr lf3fa
|
|
+POP16 RegA ;RegAF
|
|
jsr lf398
|
|
|
|
+MB_Init2
|
|
rts
|
|
|
|
;--------------------------------------
|
|
|
|
lf398: ; Called by INIT
|
|
+LD RegE, RegA
|
|
|
|
lf399: ; Re-init: Called by Cmd_01..08
|
|
+LD RegC, RegA
|
|
jsr lf415
|
|
|
|
+LD_REG_INDIRECT RegA, RegHL
|
|
cmp #$09
|
|
bcs lf3a5
|
|
+LD RegC, RegA
|
|
+INCW RegHL
|
|
+LD_REG_INDIRECT RegA, RegHL
|
|
|
|
lf3a5:
|
|
cmp #$f4
|
|
php ; New
|
|
+LD_REG_IMM RegB, $0a
|
|
plp ; New
|
|
bne lf3ae
|
|
|
|
+INCW RegHL
|
|
+LD_REG_INDIRECT RegB, RegHL
|
|
+INCW RegHL
|
|
|
|
lf3ae:
|
|
+LDW RegIX, lf690
|
|
dec RegC
|
|
beq lf3d1
|
|
|
|
+LDW RegIX, lf6b3
|
|
dec RegC
|
|
beq lf3d1
|
|
|
|
+LDW RegIX, lf6d6
|
|
dec RegC
|
|
beq lf3d1
|
|
|
|
+LD_REG_INDIRECT_ABS RegA, lf6a0
|
|
; ora RegA ; Superfluous
|
|
+LDW RegIX, lf690
|
|
beq lf3d1
|
|
+LDW RegIX, lf6b3
|
|
|
|
lf3d1:
|
|
+LD RegA, RegB
|
|
+CP_INDIRECT_OFFSET RegIX, $10
|
|
+RET_C
|
|
|
|
+LD_REG_IMM RegA, 0 ; xor a
|
|
+LD_INDIRECT_OFFSET RegIX, $10, RegA
|
|
+LD_INDIRECT_OFFSET RegIX, $12, RegL
|
|
+LD_INDIRECT_OFFSET RegIX, $13, RegH
|
|
+LD_INDIRECT_OFFSET RegIX, $14, RegL
|
|
+LD_INDIRECT_OFFSET RegIX, $15, RegH
|
|
+LD_INDIRECT_OFFSET RegIX, $16, RegL
|
|
+LD_INDIRECT_OFFSET RegIX, $17, RegH
|
|
+LD_INDIRECT_OFFSET_IMM RegIX, $11, $01
|
|
+LD_INDIRECT_OFFSET RegIX, $18, RegA
|
|
+LD_INDIRECT_OFFSET RegIX, $20, RegA
|
|
+LD_INDIRECT_OFFSET RegIX, $10, RegB
|
|
rts
|
|
|
|
lf3fa:
|
|
+LD_REG_IMM RegA, 0 ; xor a
|
|
+LD_INDIRECT_ABS lf6a0, RegA
|
|
+LD_INDIRECT_ABS lf6c3, RegA
|
|
+LD_INDIRECT_ABS lf6e6, RegA
|
|
+LD_INDIRECT_ABS lf67a, RegA
|
|
+LD_INDIRECT_ABS lf67b, RegA
|
|
+LD_INDIRECT_ABS lf67c, RegA
|
|
+LD_REG_IMM RegA, $3f
|
|
+LD_INDIRECT_ABS lf679, RegA
|
|
jmp lf46c
|
|
|
|
;--------------------------------------
|
|
|
|
lf415:
|
|
|
|
; +LD RegA, RegE
|
|
; lda RegA
|
|
; asl
|
|
; sta RegA
|
|
;
|
|
; clc ; CARRY OK
|
|
; lda RegA
|
|
; adc #$<lf818
|
|
; sta RegA
|
|
; +LD RegL, RegA
|
|
; lda RegA
|
|
; adc #$>lf818
|
|
; sta RegA
|
|
;
|
|
; sbc RegL ; CARRY possibly wrong
|
|
; +LD RegH, RegA
|
|
; +LD_REG_INDIRECT RegE, RegHL
|
|
; +INCW RegHL
|
|
; +LD_REG_INDIRECT RegD, RegHL
|
|
; +LDW RegHL, lf700
|
|
; +ADDW RegHL, RegDE
|
|
|
|
lda RegE
|
|
cmp #58
|
|
bcc .lt1
|
|
brk
|
|
.lt1
|
|
|
|
lda #<lf818
|
|
sta TmpHL ; LSB
|
|
lda #>lf818
|
|
sta TmpHL+1 ; MSB
|
|
|
|
+LD RegA, RegE
|
|
asl ; =lsl
|
|
tay
|
|
|
|
clc
|
|
lda (TmpHL),y ; LSB
|
|
adc #<lf700
|
|
sta RegL
|
|
iny
|
|
lda (TmpHL),y ; MSB
|
|
adc #>lf700
|
|
sta RegH
|
|
|
|
rts
|
|
|
|
;--------------------------------------
|
|
|
|
lf426:
|
|
|
|
; +LD RegA, RegE
|
|
; lda RegA
|
|
; asl
|
|
; sta RegA
|
|
;
|
|
; clc ; CARRY OK
|
|
; lda RegA
|
|
; adc #$c8
|
|
; sta RegA
|
|
; +LD RegE, RegA
|
|
; lda RegA
|
|
; adc #$f7
|
|
; sta RegA
|
|
;
|
|
; sbc RegE ; CARRY possibly wrong
|
|
; +LD RegD, RegA
|
|
; +LD_REG_INDIRECT RegA, RegDE
|
|
; clc ; CARRY possibly wrong
|
|
; lda RegA
|
|
; adc #$00
|
|
; sta RegA
|
|
; +LD RegC, RegA
|
|
; +INCW RegDE
|
|
; +LD_REG_INDIRECT RegA, RegDE
|
|
; lda RegA
|
|
; adc #$f7
|
|
; sta RegA
|
|
; +LD RegB, RegA
|
|
|
|
lda RegE
|
|
cmp #40
|
|
bcc .lt2
|
|
brk
|
|
.lt2
|
|
|
|
lda #<lf7c8
|
|
sta TmpHL ; LSB
|
|
lda #>lf7c8
|
|
sta TmpHL+1 ; MSB
|
|
|
|
+LD RegA, RegE
|
|
asl ; =lsl
|
|
tay
|
|
|
|
clc
|
|
lda (TmpHL),y ; LSB
|
|
adc #<lf700
|
|
sta RegC
|
|
iny
|
|
lda (TmpHL),y ; MSB
|
|
adc #>lf700
|
|
sta RegB
|
|
|
|
rts
|
|
|
|
;--------------------------------------
|
|
|
|
Interrupt:
|
|
+MB_ISR lf439
|
|
|
|
;--------------------------------------
|
|
|
|
lf439:
|
|
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:
|
|
|
|
;
|
|
|
|
+LDW RegIX, lf690 ; IX = &VoiceA
|
|
+LDW_INDIRECT RegHL, lf672 ; HL = AYREGS.PeriodA
|
|
jsr lf483
|
|
+LDW_INDIRECT RegHL, lf680
|
|
+LDW_INDIRECT lf672, RegHL ; AYREGS.PeriodA = (lf680)
|
|
|
|
+LDW_INDIRECT RegHL, lf674 ; HL = AYREGS.PeriodB
|
|
+LDW RegIX, lf6b3 ; IX = &VoiceB
|
|
jsr lf483
|
|
+LDW_INDIRECT RegHL, lf680
|
|
+LDW_INDIRECT lf674, RegHL ; AYREGS.PeriodB = (lf680)
|
|
|
|
+LDW_INDIRECT RegHL, lf676 ; HL = AYREGS.PeriodC
|
|
+LDW RegIX, lf6d6 ; IX = &VoiceC
|
|
jsr lf483
|
|
+LDW_INDIRECT RegHL, lf680
|
|
+LDW_INDIRECT lf676, RegHL ; AYREGS.PeriodC = (lf680)
|
|
|
|
jsr lf62e
|
|
|
|
;
|
|
|
|
lf46c:
|
|
; Copy [lf67f..lf672] -> AY registers
|
|
+MB_WriteAYRegs lf672
|
|
|
|
rts
|
|
|
|
;--------------------------------------
|
|
|
|
lf483:
|
|
+LDW_INDIRECT lf680, RegHL ; Init 'Tone period'
|
|
+LD_REG_INDIRECT_OFFSET RegA, RegIX, $10
|
|
; ora RegA ; Superfluous
|
|
+RET_Z
|
|
|
|
+DEC_INDIRECT_OFFSET RegIX, $11
|
|
+JP_NZ lf5dd
|
|
|
|
+LD_REG_IMM RegA, $14
|
|
+LD_INDIRECT_ABS lf49d_SMC+1, RegA ; Self mod'ing code
|
|
|
|
+LD_REG_INDIRECT_OFFSET RegH, RegIX, $13
|
|
+LD_REG_INDIRECT_OFFSET RegL, RegIX, $12
|
|
|
|
lf49c:
|
|
; +LD_REG_IMM RegA, $12 ; SMC-target
|
|
lf49d_SMC:
|
|
lda #$12
|
|
sta RegA
|
|
;
|
|
dec RegA
|
|
+LD_INDIRECT_ABS lf49d_SMC+1, RegA ; Self mod'ing code
|
|
+RET_Z
|
|
|
|
+LD_REG_INDIRECT RegA, RegHL ; Cmd
|
|
+INCW RegHL
|
|
+LD_REG_INDIRECT RegE, RegHL ; Param
|
|
+INCW RegHL
|
|
|
|
lda RegA
|
|
+JP_Z lf588
|
|
|
|
cmp #$09
|
|
+JP_C lf4f9 ; jp if a = {1..8}
|
|
cmp #$65
|
|
+JP_C lf583 ; jp if a = {09h..64h}
|
|
cmp #$7f
|
|
+JP_C lf504 ; jp if a = {65h..7Eh} (Diff)
|
|
cmp #$df
|
|
+JP_C lf578 ; jp if a = {7Fh..DEh} (Diff)
|
|
|
|
cmp #$e3
|
|
+JP_Z lf581
|
|
cmp #$e1
|
|
+JP_Z lf4ec
|
|
cmp #$e9
|
|
+JP_Z lf517
|
|
cmp #$e8
|
|
+JP_Z lf523
|
|
cmp #$ea
|
|
+JP_Z lf52f
|
|
cmp #$e2
|
|
+JP_Z lf55e
|
|
cmp #$e5
|
|
+JP_Z lf539
|
|
cmp #$e6
|
|
+JP_Z lf511
|
|
cmp #$f0
|
|
+JP_Z lf558
|
|
cmp #$ff
|
|
+JP_Z lf545
|
|
jmp lf49c
|
|
|
|
;--------------------------------------
|
|
|
|
lf4ec: ; Cmd_E1
|
|
+LD_INDIRECT_OFFSET_IMM RegIX, $10, $00
|
|
+LD_REG_INDIRECT_OFFSET RegH, RegIX, $1d ; HL = &AYREGS[VolX]
|
|
+LD_REG_INDIRECT_OFFSET RegL, RegIX, $1c
|
|
+LD_INDIRECT_IMM RegHL, $00
|
|
rts
|
|
|
|
;--------------------------------------
|
|
|
|
lf4f9: ; Cmd_01..08
|
|
+PUSH16 RegHL ; Diff
|
|
+PUSH16 RegIX
|
|
jsr lf399 ; Re-init
|
|
+POP16 RegIX ; Diff
|
|
+POP16 RegHL
|
|
jmp lf49c
|
|
|
|
;--------------------------------------
|
|
|
|
lf504: ; Cmd_66..7F (Diff)
|
|
sec ; CARRY OK
|
|
sbc #$66 ; A = [0..$19]
|
|
sta RegA ; New
|
|
+LD_INDIRECT_ABS lf678, RegA ; Noise
|
|
+LD_INDIRECT_OFFSET_IMM RegIX, $19, $01
|
|
+DECW RegHL
|
|
jmp lf49c
|
|
|
|
;--------------------------------------
|
|
|
|
lf511: ; Cmd_E6
|
|
+LD_INDIRECT_OFFSET RegIX, $18, RegE
|
|
jmp lf49c
|
|
|
|
;--------------------------------------
|
|
|
|
lf517: ; Cmd_E9
|
|
jsr lf426
|
|
+LD_INDIRECT_OFFSET RegIX, $0e, RegC
|
|
+LD_INDIRECT_OFFSET RegIX, $0f, RegB
|
|
jmp lf49c
|
|
|
|
;--------------------------------------
|
|
|
|
lf523: ; Cmd_E8
|
|
jsr lf426
|
|
+LD_INDIRECT_OFFSET RegIX, $0c, RegC
|
|
+LD_INDIRECT_OFFSET RegIX, $0d, RegB
|
|
jmp lf49c
|
|
|
|
;--------------------------------------
|
|
|
|
lf52f: ; Cmd_EA
|
|
jsr lf426
|
|
+LDW_INDIRECT lf68e, RegBC
|
|
jmp lf49c
|
|
|
|
;--------------------------------------
|
|
|
|
lf539: ; Cmd_E5
|
|
+LD_INDIRECT_OFFSET RegIX, $15, RegH
|
|
+LD_INDIRECT_OFFSET RegIX, $14, RegL
|
|
jsr lf415
|
|
jmp lf49c
|
|
|
|
;--------------------------------------
|
|
|
|
lf545: ; Cmd_FF
|
|
+LD_REG_INDIRECT_OFFSET RegH, RegIX, $15
|
|
+LD_REG_INDIRECT_OFFSET RegL, RegIX, $14
|
|
+LD_REG_INDIRECT RegA, RegHL
|
|
inc RegA
|
|
bne lf555
|
|
+LD_REG_INDIRECT_OFFSET RegH, RegIX, $17
|
|
+LD_REG_INDIRECT_OFFSET RegL, RegIX, $16
|
|
|
|
lf555:
|
|
jmp lf49c
|
|
|
|
;--------------------------------------
|
|
|
|
lf558: ; Cmd_F0
|
|
+LD_INDIRECT_OFFSET RegIX, $20, RegE
|
|
jmp lf49c
|
|
|
|
;--------------------------------------
|
|
|
|
lf55e: ; Cmd_E2
|
|
; Pseudo random number generator
|
|
|
|
+PUSH16 RegHL
|
|
|
|
; +LDW RegHL, $da52 ; SMC-target
|
|
lf560_SMC_l:
|
|
lda #<$da52 ; LSB
|
|
sta RegL
|
|
lf560_SMC_h:
|
|
lda #>$da52 ; MSB
|
|
sta RegH
|
|
|
|
+LD RegC, RegL
|
|
+LD RegB, RegH
|
|
+ADDW RegHL, RegHL
|
|
+ADDW RegHL, RegHL
|
|
+ADDW RegHL, RegBC
|
|
+ADDW RegHL, RegHL
|
|
+ADDW RegHL, RegHL
|
|
+ADDW RegHL, RegHL
|
|
+ADDW RegHL, RegBC
|
|
|
|
; +LDW_INDIRECT lf560, RegHL ; Self modifying code
|
|
lda RegL
|
|
sta lf560_SMC_l+1 ; Self modifying code
|
|
lda RegH
|
|
sta lf560_SMC_h+1 ; Self modifying code
|
|
;
|
|
+LD RegA, RegH
|
|
|
|
and RegE
|
|
sta RegA ; New
|
|
inc RegA
|
|
|
|
; +LD_INDIRECT_ABS lf582, RegA ; Self modifying code
|
|
lda RegA
|
|
sta lf582_SMC+1 ; Self modifying code
|
|
|
|
+POP16 RegHL
|
|
jmp lf49c
|
|
|
|
;--------------------------------------
|
|
|
|
lf578: ; Cmd_80..DF (Diff)
|
|
|
|
and #$7f ; A = [0..$5f]
|
|
sta RegA ; New
|
|
+DECW RegHL
|
|
+LD_REG_INDIRECT_OFFSET RegE, RegIX, $1f
|
|
jmp lf583
|
|
|
|
;--------------------------------------
|
|
|
|
lf581: ; Cmd_E3
|
|
|
|
; +LD_REG_IMM RegA, $1b ; SMC-target
|
|
lf582_SMC:
|
|
lda #$1b
|
|
sta RegA
|
|
|
|
;--------------------------------------
|
|
|
|
lf583: ; Cmd_09..64
|
|
|
|
clc ; CARRY OK
|
|
ldy #$18
|
|
lda RegA ; Req'd: lf578 jmp's with A=RegE
|
|
adc (RegIX),y
|
|
sta RegA ; Superfluous
|
|
|
|
sec ; CARRY possibly wrong ; Diff
|
|
sbc #$0c ; Diff
|
|
sta RegA ; New ; Diff
|
|
|
|
;--------------------------------------
|
|
|
|
lf588: ; Cmd_00
|
|
|
|
+LD_INDIRECT_OFFSET RegIX, $11, RegE
|
|
+LD_INDIRECT_OFFSET RegIX, $21, RegA
|
|
+LD_INDIRECT_OFFSET RegIX, $1f, RegE ; Diff
|
|
+LD_INDIRECT_OFFSET RegIX, $13, RegH ; Diff
|
|
+LD_INDIRECT_OFFSET RegIX, $12, RegL ; Diff
|
|
jsr lf61e
|
|
+LD_REG_INDIRECT_OFFSET RegH, RegIX, $1d ; HL = &AYREGS[VolX]
|
|
+LD_REG_INDIRECT_OFFSET RegL, RegIX, $1c
|
|
+LD_INDIRECT_IMM RegHL, $00 ; AYREGS[VolX] = $00
|
|
+PUSH16 RegIX
|
|
+POP16 RegDE ; DE = &VoiceX[0]
|
|
+LDW RegHL, $008
|
|
+ADDW RegHL, RegDE ; HL = &VoiceX[8]
|
|
+LDI
|
|
+LDI
|
|
+LDI
|
|
+LDI
|
|
+LDI
|
|
+LDI
|
|
+LDI
|
|
+LDI ; memcpy(&VoiceX[0], &VoiceX[8], 8)
|
|
|
|
+DEC_INDIRECT_OFFSET RegIX, $19
|
|
php ; New: Save flags
|
|
+LD_INDIRECT_OFFSET_IMM RegIX, $19, $00
|
|
+LD_REG_INDIRECT_OFFSET RegL, RegIX, $1a
|
|
plp ; New: Restore flags
|
|
bne lf5d1
|
|
+LDW_INDIRECT RegHL, $f68e
|
|
+LDW_INDIRECT lf686, RegHL
|
|
+LDW RegHL, $0000
|
|
+LDW_INDIRECT lf682, RegHL
|
|
|
|
lf5d1:
|
|
+LD_REG_INDIRECT_ABS RegA, lf679 ; Enable
|
|
ldy #$1b
|
|
and (RegIX),y
|
|
ora RegL
|
|
and #$3f
|
|
sta RegA ; New
|
|
+LD_INDIRECT_ABS lf679, RegA ; Enable
|
|
|
|
lf5dd:
|
|
jsr lf646
|
|
+LD_REG_INDIRECT_OFFSET RegH, RegIX, $1d
|
|
+LD_REG_INDIRECT_OFFSET RegL, RegIX, $1c
|
|
+LD_REG_INDIRECT RegA, RegHL
|
|
clc
|
|
lda RegA ; Superfluous
|
|
adc RegC
|
|
sta RegA ; Superfluous
|
|
sec ; CARRY OK
|
|
sbc #$80
|
|
sta RegA ; New
|
|
+LD_INDIRECT RegHL, RegA
|
|
+LDW_INDIRECT RegHL, lf680
|
|
+LD RegA, RegH
|
|
ora RegL
|
|
sta RegA ; New
|
|
+RET_Z
|
|
|
|
;
|
|
|
|
+LD_REG_INDIRECT_OFFSET RegA, RegIX, $20
|
|
; ora RegA ; Superfluous
|
|
bne lf60f
|
|
+INCW RegIX
|
|
+INCW RegIX
|
|
jsr lf646
|
|
|
|
Portamento:
|
|
+LDW_INDIRECT RegHL, lf680 ; HL = TonePeriod
|
|
+LD_REG_IMM RegB, $00
|
|
+ADDW RegHL, RegBC
|
|
+ADDW RegHL, RegBC ; Diff ; HL += 2*RegC
|
|
+LD_REG_IMM RegC, $80
|
|
+INVERT_CARRY
|
|
+SBCW RegHL, RegBC
|
|
+SBCW RegHL, RegBC ; Diff ; HL -= ($100 + C)
|
|
+LDW_INDIRECT lf680, RegHL ; TonePeriod = HL
|
|
rts
|
|
|
|
;--------------------------------------
|
|
|
|
lf60f:
|
|
+DEC_INDIRECT_OFFSET RegIX, $22
|
|
php ; New: Save flags
|
|
+LD_REG_INDIRECT_OFFSET RegA, RegIX, $21
|
|
plp ; New: Restore flags
|
|
beq lf61e
|
|
clc ; CARRY OK
|
|
ldy #$20
|
|
lda RegA ; Superfluous
|
|
adc (RegIX),y
|
|
sta RegA
|
|
+LD_INDIRECT_OFFSET_IMM RegIX, $22, $01
|
|
|
|
lf61e:
|
|
|
|
lda RegA
|
|
cmp #101 ; Tune#2 uses value of 100(!)
|
|
bcc .lt3
|
|
brk
|
|
.lt3
|
|
|
|
; lda RegA
|
|
; asl
|
|
; sta RegA ; Superfluous
|
|
; clc ; CARRY OK
|
|
; lda RegA
|
|
; adc #$00
|
|
; sta RegA
|
|
; +LD RegL, RegA
|
|
; lda RegA
|
|
; adc #$f7
|
|
; sta RegA
|
|
; sbc RegL ; CARRY possibly wrong
|
|
; +LD RegH, RegA
|
|
|
|
lda RegA
|
|
asl ; A = 2*RegA
|
|
clc
|
|
adc #<lf700 ; LSB
|
|
sta RegL
|
|
lda #0
|
|
adc #>lf700 ; MSB
|
|
sta RegH ; LDI src: RegHL
|
|
|
|
+LDW RegDE, lf680
|
|
+LDI
|
|
+LDI ; memcpy(&lf680, HL, 2) : Set new TonePeriod
|
|
rts
|
|
|
|
;--------------------------------------
|
|
|
|
lf62e:
|
|
+LDW RegIX, lf682
|
|
jsr lf646
|
|
+LDW RegHL, lf678 ; &(Noise period)
|
|
+LD_REG_INDIRECT RegA, RegHL
|
|
clc
|
|
lda RegA ; Superfluous
|
|
adc RegC
|
|
sta RegA ; Superfluous
|
|
sec ; CARRY OK
|
|
sbc #$80
|
|
sta RegA ; New
|
|
+LD_INDIRECT RegHL, RegA
|
|
cmp #$11
|
|
+RET_C
|
|
|
|
+INCW RegHL
|
|
+LD_REG_INDIRECT RegA, RegHL
|
|
ora #$38
|
|
sta RegA ; New
|
|
+LD_INDIRECT RegHL, RegA
|
|
rts
|
|
|
|
;--------------------------------------
|
|
|
|
lf646:
|
|
+PUSH16 RegIX
|
|
+POP16 RegHL
|
|
+LD_REG_INDIRECT_OFFSET RegD, RegIX, $05
|
|
+LD_REG_INDIRECT_OFFSET RegE, RegIX, $04
|
|
+INC_INDIRECT RegHL
|
|
+LD_REG_INDIRECT RegA, RegDE
|
|
+SUB_INDIRECT RegHL ; RegA -= (HL)
|
|
php ; New
|
|
+LD_REG_IMM RegC, $80
|
|
plp ; New
|
|
+RET_NZ
|
|
|
|
+LD_INDIRECT RegHL, RegA
|
|
+INCW RegDE
|
|
+LD_REG_INDIRECT RegA, RegDE
|
|
+LD RegC, RegA
|
|
+INCW RegDE
|
|
+INCW RegHL
|
|
+INC_INDIRECT RegHL
|
|
+LD_REG_INDIRECT RegA, RegDE
|
|
+SUB_INDIRECT RegHL
|
|
+RET_NZ
|
|
|
|
+LD_INDIRECT RegHL, RegA
|
|
+INCW RegDE
|
|
+LD_REG_INDIRECT RegA, RegDE
|
|
inc RegA
|
|
bne lf66b
|
|
+LD_REG_INDIRECT_OFFSET RegD, RegIX, $0d
|
|
+LD_REG_INDIRECT_OFFSET RegE, RegIX, $0c
|
|
|
|
lf66b:
|
|
+LD_INDIRECT_OFFSET RegIX, $05, RegD
|
|
+LD_INDIRECT_OFFSET RegIX, $04, RegE
|
|
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 #$00+SY6522_TIMER1L_COUNTER
|
|
jsr SF_GetTimerL
|
|
bne .SlotLoop
|
|
|
|
ldy #$80+SY6522_TIMER1L_COUNTER
|
|
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 32 ; 4: (AY: SFX 01)
|
|
!byte 33 ; 5: (AY: SFX 02)
|
|
!byte 26 ; 6: (AY: SFX 03)
|
|
!byte 24 ; 7: (AY: SFX 04)
|
|
!byte 31 ; 8: (AY: SFX 05)
|
|
!byte 22 ; 9: (AY: SFX 06)
|
|
!byte 28 ; 10: (AY: SFX 07)
|
|
!byte 29 ; 11: (AY: SFX 08)
|
|
!byte 23 ; 12: (AY: SFX 09)
|
|
!byte 27 ; 13: (AY: SFX 10)
|
|
!byte 37 ; 14: (AY: SFX 11)
|
|
!byte 25 ; 15: (AY: SFX 12)
|
|
|
|
;--------------------------------------
|
|
|
|
; AY regs [0..$D]
|
|
AYRegValues:
|
|
lf672: !word 0 ; A period
|
|
lf674: !word 0 ; B period
|
|
lf676: !word 0 ; C period
|
|
lf678: !byte 0 ; Noise period
|
|
lf679: !byte 0 ; Enable
|
|
lf67a: !byte 0 ; A volume
|
|
lf67b: !byte 0 ; B volume
|
|
lf67c: !byte 0 ; C volume
|
|
lf67d: !word 0 ; Envelope period
|
|
lf67f: !byte 0 ; Envelope shape
|
|
|
|
;--------------------------------------
|
|
|
|
lf680: !word 0 ; Tone period
|
|
lf682: !word 0
|
|
!word 0
|
|
|
|
;--------------------------------------
|
|
|
|
lf686: !word 0
|
|
|
|
!word 0
|
|
!word 0
|
|
!word 0
|
|
|
|
lf68e: !word 0 ; Cmd_EA: Set to RegBC
|
|
|
|
;--------------------------------------
|
|
|
|
; Voice-A struct
|
|
|
|
lf690: !byte 0 ; $00
|
|
!byte 0 ; $01
|
|
!byte 0 ; $02
|
|
!byte 0 ; $03
|
|
!word 0 ; $04/05
|
|
!word 0 ; $06/07
|
|
|
|
!byte 0 ; $08
|
|
!byte 0 ; $09
|
|
!byte 0 ; $0a
|
|
!byte 0 ; $0b
|
|
!word 0 ; $0c/0d : Cmd_E8: Set to RegC/B
|
|
!word 0 ; $0e/0f : Cmd_E9: Set to RegC/B
|
|
|
|
lf6a0: !byte 0 ; $10 : Cmd_E1: Set to $00 : $00 = Tune complete
|
|
!byte 0 ; $11 : Cmd_00: Set to RegE
|
|
!word 0 ; $12/13 : Cmd_00: Set to RegL/H : Next Cmd & Param
|
|
!word 0 ; $14/15 : Cmd_E5: Set to RegL/H
|
|
!word 0 ; $16/17
|
|
!byte 0 ; $18 : Cmd_E6: Set to RegE
|
|
!byte 0 ; $19 : Cmd_66: Set to $01
|
|
!byte $08 ; $1a - 001000 - Disable A (Noise)
|
|
!byte $36 ; $1b - 110110 - Enable A (Noise & Tone)
|
|
!word lf67a ; $1c/1d - &VolA
|
|
!byte 0 ; $1e
|
|
!byte 0 ; $1f : Cmd_00: Set to RegE
|
|
!byte 0 ; $20 : Cmd_F0: Set to RegE
|
|
!byte 0 ; $21 : Cmd_00: Set to RegA
|
|
!byte 0 ; $22
|
|
|
|
;--------------------------------------
|
|
|
|
; Voice-B struct
|
|
|
|
lf6b3: !byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!word 0
|
|
!word 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!word 0
|
|
!word 0
|
|
lf6c3: !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 lf67b ; &VolB
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
|
|
;--------------------------------------
|
|
|
|
; Voice-C struct
|
|
|
|
lf6d6: !byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!word 0
|
|
!word 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!word 0
|
|
!word 0
|
|
lf6e6: !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 lf67c ; &VolC
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
!byte 0
|
|
|
|
;--------------------------------------
|
|
|
|
;lf6f9:
|
|
!byte $2A,$00,$00,$00,$00,$00,$00 ; Padding
|
|
|
|
;--------------------------------------
|
|
|
|
lf700:
|
|
; 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
|
|
}
|
|
|
|
+ZX2MB $0000
|
|
+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 $0025
|
|
+ZX2MB $0023
|
|
+ZX2MB $0021
|
|
+ZX2MB $0020
|
|
+ZX2MB $001E
|
|
+ZX2MB $001C
|
|
+ZX2MB $001B
|
|
+ZX2MB $0019
|
|
+ZX2MB $0018
|
|
+ZX2MB $0016
|
|
+ZX2MB $0015
|
|
+ZX2MB $0014
|
|
+ZX2MB $0000
|
|
|
|
;--------------------------------------
|
|
|
|
; Ref'ed by func @ f426
|
|
|
|
lf7c8:
|
|
; Table size = WORD[40]
|
|
|
|
!word $018C ; lf700 + $18c = lf88c (addr of music data)
|
|
!word $0190
|
|
!word $019A
|
|
!word $01A4
|
|
!word $01B4
|
|
!word $01BE
|
|
!word $01CB
|
|
!word $01D8
|
|
!word $01E5
|
|
!word $01F5
|
|
!word $01FF
|
|
!word $0209
|
|
!word $0213
|
|
!word $021D
|
|
!word $021E
|
|
!word $021F
|
|
!word $0220
|
|
!word $022A
|
|
!word $022B
|
|
!word $0241
|
|
!word $0242
|
|
!word $0246
|
|
!word $0250
|
|
!word $025D
|
|
!word $026A
|
|
!word $027A
|
|
!word $0281
|
|
!word $0288
|
|
!word $0295
|
|
!word $0299
|
|
!word $02A6
|
|
!word $02AD
|
|
!word $02BA
|
|
!word $02C1
|
|
!word $02C2
|
|
!word $02CC
|
|
!word $02E5
|
|
!word $02FE
|
|
!word $030E
|
|
!word $0000
|
|
|
|
;--------------------------------------
|
|
|
|
; Ref'ed by func @ f415
|
|
|
|
lf818:
|
|
; Table size = WORD[58]
|
|
|
|
!word $031A
|
|
!word $0439
|
|
!word $04E5
|
|
!word $04E8
|
|
!word $04F3
|
|
!word $0541
|
|
!word $0553
|
|
!word $0563
|
|
!word $05A5
|
|
!word $05E7
|
|
!word $05F2
|
|
!word $0613
|
|
!word $0628
|
|
!word $062D
|
|
!word $0643
|
|
!word $0662
|
|
!word $0662
|
|
!word $0686
|
|
!word $0687
|
|
!word $0000
|
|
|
|
;lf840:
|
|
!word $0000
|
|
|
|
;lf842:
|
|
!word $0000
|
|
!word $031F
|
|
!word $032B
|
|
!word $033A
|
|
!word $0346
|
|
!word $0352
|
|
!word $0361
|
|
!word $0370
|
|
!word $037C
|
|
!word $038C
|
|
!word $039B
|
|
!word $03A7
|
|
!word $03B8
|
|
!word $03C9
|
|
!word $03D7
|
|
!word $03E2
|
|
!word $03E2
|
|
!word $03F1
|
|
!word $03FF
|
|
!word $0403
|
|
!word $0415
|
|
!word $0420
|
|
!word $0000
|
|
|
|
;lf870:
|
|
!word $0000
|
|
!word $0000
|
|
!word $0000
|
|
!word $0000
|
|
|
|
;lf878:
|
|
!word $0000
|
|
!word $0686
|
|
!word $068F
|
|
!word $069C
|
|
!word $06A7
|
|
!word $06B2
|
|
!word $06BF
|
|
!word $06C8
|
|
!word $06D3
|
|
!word $06DC
|
|
|
|
;--------------------------------------
|
|
|
|
; Music data
|
|
|
|
;lf88c:
|
|
; Table size = BYTE[1385]
|
|
|
|
!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,$01,$8A,$01,$02,$82,$01,$02,$7F
|
|
!byte $07,$0C,$7F,$06,$C8,$80,$C8,$FF,$01,$81,$0A,$09,$7F,$06,$C8,$80
|
|
!byte $C8,$FF,$01,$8C,$01,$0A,$7F,$08,$14,$7F,$04,$C8,$80,$C8,$FF,$01
|
|
!byte $8D,$01,$02,$7F,$07,$0C,$7F,$06,$C8,$80,$C8,$FF,$01,$8D,$01,$01
|
|
!byte $7F,$0B,$09,$7F,$02,$C8,$80,$C8,$FF,$01,$8B,$01,$08,$7F,$01,$02
|
|
!byte $7F,$01,$07,$7F,$03,$16,$7F,$07,$FF,$01,$83,$03,$11,$7F,$05,$C8
|
|
!byte $80,$C8,$FF,$01,$89,$01,$01,$7D,$03,$C8,$80,$C8,$FF,$01,$77,$01
|
|
!byte $01,$83,$03,$C8,$80,$C8,$FF,$01,$81,$02,$02,$7F,$03,$03,$81,$01
|
|
!byte $FF,$FF,$FF,$FF,$01,$87,$03,$01,$79,$06,$01,$87,$03,$FF,$FF,$01
|
|
!byte $93,$01,$01,$6D,$01,$01,$7F,$02,$01,$81,$04,$01,$7F,$04,$01,$81
|
|
!byte $02,$C8,$80,$C8,$FF,$FF,$02,$7F,$C8,$FF,$01,$80,$01,$01,$B4,$01
|
|
!byte $C8,$80,$C8,$FF,$01,$80,$01,$01,$7E,$01,$02,$E3,$01,$C8,$80,$C8
|
|
!byte $FF,$01,$8A,$01,$01,$7E,$01,$02,$7F,$03,$C8,$80,$C8,$FF,$01,$85
|
|
!byte $03,$01,$71,$01,$01,$80,$01,$01,$8F,$01,$01,$7B,$03,$FF,$01,$85
|
|
!byte $03,$01,$71,$01,$FF,$01,$96,$01,$02,$79,$02,$FF,$01,$86,$01,$01
|
|
!byte $85,$01,$01,$7F,$03,$C8,$80,$C8,$FF,$01,$A1,$C8,$FF,$01,$85,$03
|
|
!byte $09,$7D,$04,$0E,$7F,$03,$C8,$80,$C8,$FF,$01,$84,$01,$01,$7F,$01
|
|
!byte $FF,$01,$8B,$01,$01,$7E,$01,$02,$7F,$03,$C8,$80,$C8,$FF,$01,$83
|
|
!byte $05,$01,$71,$01,$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,$00,$00,$F4,$63
|
|
!byte $E1,$FF,$FF,$04,$F4,$0F,$E8,$19,$E9,$18,$5D,$48,$EA,$16,$E1,$04
|
|
!byte $F4,$0F,$E8,$01,$F0,$3C,$EA,$05,$67,$24,$4F,$EA,$16,$E1,$04,$F4
|
|
!byte $0F,$E8,$1D,$E9,$1E,$4F,$4D,$EA,$16,$E1,$03,$F4,$0F,$E8,$06,$E9
|
|
!byte $19,$53,$0F,$EA,$16,$E1,$03,$F4,$0F,$E8,$07,$E9,$01,$EA,$01,$6C
|
|
!byte $5E,$10,$EA,$16,$E1,$03,$F4,$0F,$E8,$05,$E9,$1C,$EA,$27,$68,$4F
|
|
!byte $14,$EA,$16,$E1,$03,$F4,$0F,$E8,$15,$E9,$10,$43,$14,$EA,$16,$E1
|
|
!byte $03,$F4,$0F,$E2,$0F,$E8,$25,$E9,$26,$E6,$3E,$E3,$19,$EA,$16,$E1
|
|
!byte $04,$F4,$0F,$E8,$23,$E9,$24,$EA,$00,$73,$56,$63,$EA,$16,$E1,$03
|
|
!byte $F4,$0F,$E8,$12,$E9,$24,$61,$12,$EA,$16,$E1,$03,$F4,$0F,$E8,$1D
|
|
!byte $E9,$1A,$EA,$0B,$71,$39,$40,$E9,$0C,$EA,$16,$E1,$03,$F4,$0F,$E8
|
|
!byte $06,$E9,$22,$EA,$00,$73,$5E,$02,$5E,$10,$EA,$16,$E1,$01,$F4,$0F
|
|
!byte $02,$23,$00,$0C,$03,$23,$00,$12,$E5,$23,$E1,$F4,$0F,$E8,$01,$E9
|
|
!byte $1A,$5B,$12,$4F,$69,$E1,$04,$F4,$0F,$E8,$01,$E9,$20,$EA,$14,$70
|
|
!byte $49,$2A,$EA,$16,$E1,$04,$F4,$0F,$E8,$02,$E9,$1C,$58,$16,$D8,$D8
|
|
!byte $EA,$16,$E1,$E1,$00,$00,$00,$01,$F4,$0F,$02,$29,$03,$2A,$E8,$00
|
|
!byte $00,$32,$E5,$2A,$00,$6E,$E5,$2A,$FF,$E6,$30,$E8,$1E,$E9,$00,$E2
|
|
!byte $3F,$E3,$03,$FF,$E9,$14,$E6,$30,$E8,$04,$EA,$01,$E3,$1E,$EA,$00
|
|
!byte $E8,$08,$73,$E3,$46,$E8,$04,$EA,$01,$66,$E3,$3C,$FF,$01,$F4,$0F
|
|
!byte $03,$00,$02,$03,$E6,$00,$F0,$00,$E9,$0C,$E8,$03,$E5,$05,$E5,$05
|
|
!byte $E5,$05,$E5,$05,$03,$03,$02,$31,$E5,$04,$E5,$05,$03,$03,$02,$33
|
|
!byte $E5,$04,$E5,$06,$02,$0D,$03,$09,$E5,$07,$02,$0E,$E5,$08,$02,$34
|
|
!byte $03,$03,$E5,$04,$E6,$0A,$E5,$05,$03,$0C,$02,$35,$E6,$05,$E5,$04
|
|
!byte $E5,$05,$02,$00,$E5,$05,$02,$37,$E5,$06,$E5,$04,$03,$09,$02,$0D
|
|
!byte $E6,$00,$E5,$07,$02,$0E,$E5,$08,$03,$03,$02,$38,$E5,$04,$02,$32
|
|
!byte $E5,$05,$02,$34,$03,$03,$E5,$04,$02,$39,$E5,$05,$E5,$05,$E5,$05
|
|
!byte $02,$34,$E5,$05,$02,$39,$E5,$05,$E5,$05,$E5,$05,$02,$34,$E5,$05
|
|
!byte $03,$00,$E6,$09,$F0,$13,$E8,$1F,$02,$00,$E5,$05,$E5,$05,$E5,$06
|
|
!byte $E5,$06,$E5,$05,$E5,$05,$E5,$06,$E5,$06,$E6,$0E,$02,$36,$E5,$05
|
|
!byte $E5,$05,$E5,$05,$02,$00,$E5,$02,$FF,$00,$38,$FF,$E6,$1F,$E8,$17
|
|
!byte $F0,$0C,$E5,$04,$E5,$05,$FF,$EA,$16,$E9,$12,$66,$21,$07,$A1,$66
|
|
!byte $AD,$A1,$6B,$AB,$66,$9F,$66,$9F,$66,$AB,$66,$9D,$9D,$66,$A9,$9D
|
|
!byte $6B,$B5,$66,$9D,$66,$9C,$66,$A9,$66,$9D,$9D,$66,$A9,$9D,$6B,$A8
|
|
!byte $66,$9C,$66,$9C,$66,$A8,$66,$9A,$66,$9A,$66,$A6,$66,$9A,$6B,$B2
|
|
!byte $66,$9A,$66,$98,$66,$A6,$66,$9F,$9F,$66,$AB,$9F,$6B,$B7,$66,$9F
|
|
!byte $66,$9F,$66,$AB,$FF,$66,$15,$07,$66,$A1,$66,$AB,$66,$AD,$6B,$AD
|
|
!byte $66,$A1,$66,$9F,$66,$A1,$FF,$66,$1E,$07,$AA,$66,$9E,$A8,$6B,$B6
|
|
!byte $66,$AA,$66,$A8,$66,$AA,$FF,$66,$1F,$07,$66,$9F,$66,$AB,$66,$AB
|
|
!byte $6A,$AF,$66,$AF,$66,$A3,$66,$AF,$66,$A4,$66,$A4,$66,$9C,$66,$9F
|
|
!byte $6A,$B0,$66,$A4,$66,$9C,$66,$9F,$66,$A4,$66,$98,$66,$9C,$66,$9F
|
|
!byte $6A,$B0,$66,$A4,$66,$9C,$66,$9F,$66,$A3,$66,$A3,$66,$A8,$66,$AA
|
|
!byte $6A,$AF,$66,$A3,$66,$A8,$66,$AA,$FF,$66,$23,$07,$66,$A3,$66,$A7
|
|
!byte $66,$AF,$6A,$AD,$66,$AD,$66,$A1,$66,$AD,$66,$9C,$66,$9C,$66,$A8
|
|
!byte $66,$A8,$6A,$B4,$66,$A8,$66,$9C,$66,$A8,$66,$9A,$66,$9A,$66,$A6
|
|
!byte $66,$9A,$6A,$B2,$66,$9A,$66,$A6,$66,$9A,$66,$A5,$66,$A5,$66,$B1
|
|
!byte $66,$A5,$6A,$A3,$66,$A3,$66,$AF,$66,$A3,$FF,$E6,$1F,$E8,$17,$E9
|
|
!byte $00,$E5,$07,$E5,$08,$FF,$00,$07,$A1,$9C,$A4,$A6,$A8,$A6,$A4,$A3
|
|
!byte $21,$23,$15,$07,$97,$15,$0E,$1F,$07,$A1,$1F,$0E,$1D,$07,$9F,$1D
|
|
!byte $2A,$1C,$07,$9B,$1C,$1C,$FF,$00,$0E,$48,$07,$CA,$C8,$C5,$C0,$C7
|
|
!byte $45,$54,$43,$1C,$41,$2A,$40,$07,$BF,$40,$1C,$FF,$E8,$17,$E5,$04
|
|
!byte $FF,$E6,$18,$E8,$1B,$F0,$0C,$00,$0E,$23,$07,$A4,$A6,$A3,$A4,$A6
|
|
!byte $28,$54,$28,$1C,$28,$38,$FF,$E6,$18,$E8,$1B,$F0,$0C,$27,$0E,$27
|
|
!byte $07,$A8,$AA,$A7,$A8,$AA,$2C,$2A,$1C,$07,$9E,$20,$0E,$28,$07,$AA
|
|
!byte $2C,$0E,$AF,$2D,$38,$FF,$21,$0E,$A4,$A3,$A6,$24,$07,$A6,$A8,$A9
|
|
!byte $A8,$A6,$A4,$A3,$21,$0E,$95,$A3,$1F,$07,$21,$23,$1A,$07,$9D,$9C
|
|
!byte $95,$9A,$9D,$9C,$95,$9F,$9D,$9C,$95,$FF,$E8,$09,$E9,$0C,$E5,$0B
|
|
!byte $E5,$32,$E1,$E6,$24,$E8,$09,$E9,$0A,$23,$0E,$E9,$0C,$21,$46,$E1
|
|
!byte $E6,$24,$E8,$09,$E9,$0C,$E5,$0A,$E5,$32,$E1,$E6,$24,$E8,$1B,$F0
|
|
!byte $18,$E5,$0A,$23,$1C,$E1,$E6,$1D,$E8,$1F,$F0,$0C,$E5,$10,$E5,$05
|
|
!byte $E5,$05,$FF,$E6,$1D,$E8,$1F,$F0,$0C,$E5,$05,$FF,$E6,$1D,$E8,$09
|
|
!byte $F0,$0C,$E5,$10,$1A,$38,$E1,$E8,$1B,$F0,$18,$E5,$0B,$E5,$32,$E1
|
|
!byte $E8,$1F,$F0,$18,$00,$0E,$3C,$07,$BB,$BC,$00,$07,$B9,$00,$07,$FF
|
|
!byte $00,$1A,$18,$00,$0E,$3C,$07,$BB,$BC
|
|
|
|
;lfdf5: |