mockingboard: work on graphics loading

This commit is contained in:
Vince Weaver 2018-02-07 17:40:30 -05:00
parent 9809bd5410
commit 330a21c1f5
7 changed files with 514 additions and 252 deletions

View File

@ -0,0 +1,219 @@
;; Our Zero Page Allocations
;; for the LZSS part of the code
OUTPUTL EQU $FE
OUTPUTH EQU $FF
LOGOL EQU $28
LOGOH EQU $29
STORERL EQU $95
STORERH EQU $96
COUNT EQU $97
;LZSS_MASK EQU $98
LOGOENDL EQU $99
LOGOENDH EQU $9A
LOADRL EQU $9B
LOADRH EQU $9C
EFFECTRL EQU $9D
EFFECTRH EQU $9E
;; LZSS Parameters
N EQU 1024
F EQU 64
THRESHOLD EQU 2
P_BITS EQU 10
POSITION_MASK EQU 3
FREQUENT_CHAR EQU 0
;R: .res (1024-64) ; N-F
R EQU $4000
; Init
lzss_init:
ldx #<R
stx OUTL
ldx #>R
stx OUTH
lda #FREQUENT_CHAR
ldx #$4
lzss_init_outer:
ldy #$0
lzss_init_inner:
sta (OUTL),Y
iny
bne lzss_init_inner
inc OUTH
dex
bpl lzss_init_inner
rts
;================================
; Decomress
; FIXME: optimize
;================================
lzss_decompress:
lda #>(N-F) ; load R value
sta STORERH
lda #<(N-F)
sta STORERL
ldy #0 ; setup Y for indirect zero page
; addressing, we always want +0
decompression_loop:
lda #8 ; set mask counter
sta COUNT
lda (LOGOL),Y ; load byte
sta LZSS_MASK ; store it
ldx #LOGOL
jsr inc16 ; increment pointer
test_flags:
lda LOGOH ; compare to see if we've reached end
cmp LOGOENDH
bne not_match
lda LOGOL
cmp LOGOENDL
beq done_logo ; if so, we are done
; bcs one byte less than jmp
not_match:
lsr LZSS_MASK ; shift byte mask into carry flag
lda (LOGOL),Y ; load byte
ldx #LOGOL ; 16-bit increrment
jsr inc16
bcs discrete_char ; if set we have discrete char
offset_length:
sta LOADRL ; bottom of R offset
lda (LOGOL),Y ; load another byte
ldx #LOGOL ;
jsr inc16 ; 16 bit increment
sta LOADRH ; top of R offset
lsr A
lsr A ; shift right by 10 (top byte by 2)
clc
adc #3 ; add threshold+1 (3)
tax ; store out count in X
output_loop:
clc ; calculate R+LOADR
lda LOADRL
adc #<R
sta EFFECTRL
lda LOADRH
and #((N-1)>>8) ; Mask so mod N
sta LOADRH
adc #>R
sta EFFECTRH
lda (EFFECTRL),Y ; Load byte R[LOADR]
inc LOADRL ; increment address
bne load_carry1
inc LOADRH ; handle overflow
load_carry1:
store_byte:
sta (OUTPUTL),Y ; store byte to output
inc OUTPUTL ; increment address
bne sb_carry
inc OUTPUTH ; handle overflow
sb_carry:
pha ; calculate R+STORER
clc
lda STORERL
adc #<R
sta EFFECTRL
lda STORERH
and #((N-1)>>8) ; mask so mod N
sta STORERH
adc #>R
sta EFFECTRH
pla ; restore from stack
sta (EFFECTRL),Y ; store A there too
inc STORERL ; increment address
bne store_carry2
inc STORERH ; handle overflow
store_carry2:
dex ; count down the out counter
bne output_loop ; loop to output_loop if not 0
dec COUNT ; count down the mask counter
bne test_flags ; loop to test_flags if not zero
beq decompression_loop ; restart whole process
discrete_char:
ldx #1 ; want to write a single byte
bne store_byte ; go and store it (1 byte less than jmp)
done_logo:
rts
;============================================
; inc_pointer - increments the output pointer
;============================================
inc_pointer:
ldx #OUTPUTL
;==================================================
; inc16 - increments a 16-bit pointer in zero page
;==================================================
inc16:
inc 0,X ; increment address
bne no_carry
inx
inc 0,X ; handle overflow
no_carry:
rts
;; *********************
;; BSS
;; *********************
;.bss
;R: .res (1024-64) ; N-F

View File

@ -9,7 +9,7 @@ mock.dsk: KSP_THEME_UNCOMPRESSED KSP_THEME_COMPRESSED \
KSP_THEME_INTERRUPT INTERRUPT_TEST
$(DOS33) -y mock_test.dsk BSAVE -a 0x1000 KSP_THEME_UNCOMPRESSED
$(DOS33) -y mock_test.dsk BSAVE -a 0x1000 KSP_THEME_COMPRESSED
$(DOS33) -y mock_test.dsk BSAVE -a 0x1000 KSP_THEME_INTERRUPT
$(DOS33) -y mock_test.dsk BSAVE -a 0xc00 KSP_THEME_INTERRUPT
$(DOS33) -y mock_test.dsk BSAVE -a 0x1000 INTERRUPT_TEST
KSP_THEME_COMPRESSED: ksp_theme_compressed.o
@ -21,7 +21,7 @@ ksp_theme_compressed.o: ksp_theme_compressed.s \
ca65 -o ksp_theme_compressed.o ksp_theme_compressed.s -l ksp_theme_compressed.lst
KSP_THEME_INTERRUPT: ksp_theme_interrupt.o
ld65 -o KSP_THEME_INTERRUPT ksp_theme_interrupt.o -C ./apple2_1000.inc
ld65 -o KSP_THEME_INTERRUPT ksp_theme_interrupt.o -C ./apple2_c00.inc
ksp_theme_interrupt.o: ksp_theme_interrupt.s \
../asm_routines/mockingboard.s \

View File

@ -8,7 +8,7 @@ ksptheme:
; Comment: Tracked by Vince Weaver
.byte $01,$80,$38,$00 ; 00000
.byte $60,$35,$BD,$EE,$DD,$01,$07,$0D,$0D,$0D ; 00096
.byte $01,$35,$BD,$EE,$DD,$01,$07,$0D,$0D,$0D ; 00096
.byte $01,$00,$07,$0E,$0E,$0E ; 00097
.byte $01,$00,$07,$0F,$0F,$0F ; 00098
.byte $01,$00,$07,$0E,$0E,$0E ; 00099

View File

@ -110,6 +110,35 @@ mockingboard_found:
cli ; clear interrupt mask
bit SET_GR ; graphics mode
bit HIRES ; hires mode
bit TEXTGR ; mixed text/graphics
bit PAGE0 ; first graphics page
;==========================
; Graphics
;==========================
uncompress_graphics:
jsr lzss_init ; init R to zero
lda #>ksp_title ; load logo pointer
sta BASH
lda #<ksp_title
sta BASL
lda #>ksp_title_end ; load logo end pointer
sta LZSS_ENDH
lda #<ksp_title_end
sta LZSS_ENDL
; HGR page 1
lda #>$2000
sta OUTH
lda #<$2000
sta OUTL
jsr lzss_decompress
;============================
; Loop forever
;============================
@ -129,7 +158,7 @@ done_play:
lda #0
sta CH
lda #3
lda #21
sta CV
lda #<done_message
sta OUTL
@ -264,12 +293,14 @@ done_interrupt:
.include "../asm_routines/gr_offsets.s"
.include "../asm_routines/text_print.s"
.include "../asm_routines/mockingboard.s"
.include "../asm_routines/lzss_decompress.s"
;=======
; music
;=======
.include "ksp_theme_compressed.inc"
;=========
; strings
;=========
@ -277,3 +308,10 @@ mocking_message: .asciiz "LOOKING FOR MOCKINGBOARD IN SLOT #4"
not_message: .byte "NOT "
found_message: .asciiz "FOUND"
done_message: .asciiz "DONE PLAYING"
;=============
; Grahpics
; Must be at end as get over-written
;=============
.include "ksp_title.inc"

View File

@ -1,244 +1,242 @@
.equ FREQUENT_CHAR,0
.equ N,1024
.equ F,64
.equ THRESHOLD,2
.equ P_BITS,10
.equ POSITION_MASK,3
;FREQUENT_CHAR EQU 0
;N EQU 1024
;F EQU 64
;THRESHOLD EQU 2
;P_BITS EQU 10
;POSITION_MASK EQU 3
ksp_title:
.byte $5F,$00,$20,$F8,$1F,$80,$C4,$B7,$A0,$C4,$07
.byte $F5,$84,$C4,$13,$81,$C4,$07,$98,$88,$40,$2A
.byte $3F,$55,$6A,$5F,$BA,$D1,$B0,$02,$08,$C4,$33
.byte $7F,$E0,$8C,$E0,$F3,$F9,$FF,$87,$C4,$27
.byte $C1,$08,$C4,$03,$B9,$17,$C4,$0B,$2B,$28,$C4,$3F,$CD,$88
.byte $7B,$CC,$88,$C4,$3F,$C0,$80,$80,$86,$C4,$13
.byte $7F,$04,$2A,$55,$2A,$55,$32,$7C,$C4,$4B
.byte $BF,$E0,$80,$E6,$80,$98,$FC,$2B,$20,$20
.byte $DF,$40,$80,$04,$81,$82,$3C,$24,$AC,$E1
.byte $FF,$BA,$D6,$AF,$D5,$CE,$D5,$AA,$DF
.byte $7F,$AA,$F5,$80,$D6,$83,$D6,$83,$C4,$23
.byte $7F,$D0,$89,$83,$82,$81,$A0,$90,$C4,$4B
.byte $7E,$FA,$17,$80,$80,$BC,$E6,$FF,$FF,$D8,$24
.byte $8E,$18,$2C,$BF,$F8,$8F,$AD,$1C,$79,$10,$3C,$20,$C8
.byte $FF,$EA,$DF,$AE,$9D,$EB,$81,$B0,$FD
.byte $FF,$FA,$D7,$C3,$F5,$EB,$DF,$CE,$F5
.byte $B2,$5E,$20,$98,$9E,$18,$C4,$3B,$B0,$FC,$2A,$14,$8F
.byte $3F,$86,$80,$FE,$8F,$FE,$FF,$11,$44,$F3,$03
.byte $1F,$84,$80,$83,$80,$8C,$C4,$3B,$B9,$17,$02,$00
.byte $8B,$D2,$8E,$C4,$53,$93,$6B,$10,$AA,$3D,$7C,$01,$98
.byte $DF,$2A,$55,$F0,$FF,$BF,$C4,$0B,$F0,$87
.byte $0F,$B0,$86,$80,$E6,$D8,$0C,$91,$B7,$C4,$03,$81,$14
.byte $FE,$C4,$33,$8D,$80,$C0,$81,$A3,$D1,$88
.byte $F7,$FE,$FF,$9F,$C4,$47,$23,$50,$2A,$7D
.byte $F7,$2A,$D9,$AA,$2B,$10,$B0,$80,$80,$FE
.byte $74,$B6,$2D,$99,$97,$83,$7D,$04,$88,$80,$88,$FA,$0F
.byte $F8,$11,$0C,$02,$04,$0A,$02,$80,$C0,$41,$2B,$F5
.byte $CF,$2A,$D7,$A2,$FC,$2A,$1D,$C4,$1F,$AC,$C4
.byte $0F,$2A,$55,$3A,$FF,$2A,$2C,$10,$D2,$C4,$07,$6B,$34
.byte $7F,$E6,$80,$82,$80,$E6,$C0,$51,$8A,$04
.byte $37,$A2,$47,$BC,$11,$44,$41,$FF,$7E,$03,$C8,$31
.byte $A9,$04,$12,$DB,$C4,$77,$A0,$68,$2A,$82,$68,$16,$B3
.byte $DD,$82,$D2,$02,$98,$80,$54,$8A,$04,$8A,$91
.byte $09,$B2,$91,$49,$AA,$01,$E6,$66,$26,$C3,$05,$92,$1E,$68,$06
.byte $39,$90,$8F,$4D,$68,$16,$98,$B1,$A6,$68,$32,$E1,$11
.byte $F3,$C0,$B8,$C6,$02,$7B,$05,$90,$A0,$55,$2A
.byte $F7,$1D,$A2,$9E,$12,$4D,$C0,$81,$83,$80
.byte $F0,$02,$0E,$8E,$0F,$B6,$2D,$68,$06,$EB,$E1,$FA,$F5
.byte $FF,$AC,$FF,$CF,$F5,$AF,$DF,$BE,$F5
.byte $CF,$C0,$D5,$83,$D6,$0E,$0E,$68,$0E,$90,$86
.byte $63,$91,$80,$CC,$02,$F9,$1B,$68,$26,$B3,$86,$CC,$0E
.byte $DE,$E6,$01,$9E,$FF,$F9,$0F,$8F,$4D,$E0,$87
.byte $97,$E0,$FF,$E1,$AA,$10,$40,$B2,$3D,$68,$02,$D8
.byte $FF,$EA,$DE,$BE,$9D,$EB,$FF,$B3,$FD
.byte $FF,$EA,$D7,$BF,$F5,$BA,$E0,$FA,$F5
.byte $B5,$FF,$49,$18,$B3,$EB,$07,$82,$90,$CD,$4B,$F0
.byte $9C,$65,$1A,$02,$02,$F8,$BF,$80,$02,$3F,$A0,$0C,$8C
.byte $FC,$EB,$48,$3C,$23,$D4,$81,$9E,$BC,$E0,$C0
.byte $FF,$87,$8F,$80,$FC,$E1,$83,$86,$BC
.byte $EF,$F8,$C0,$E1,$C0,$D2,$0E,$A0,$CC,$81
.byte $E7,$81,$E6,$BF,$82,$0C,$6D,$3D,$81,$2A,$55
.byte $FB,$72,$FF,$58,$0D,$C0,$87,$C0,$9F,$80
.byte $A1,$F8,$D8,$0C,$14,$C7,$02,$15,$A8,$2D,$9C,$F9,$03,$82
.byte $DF,$E1,$88,$91,$FF,$FF,$A8,$45,$3C,$51
.byte $5F,$2A,$FF,$EA,$F9,$A6,$03,$1F,$E0,$0E,$EB
.byte $D8,$71,$18,$82,$00,$F9,$0B,$B4,$82,$8C,$02,$54,$6A
.byte $9F,$FD,$2A,$7D,$AC,$F9,$AA,$18,$A8,$21,$BC
.byte $1F,$46,$2A,$51,$EE,$FF,$8E,$29,$B3,$08,$14,$C6
.byte $B4,$68,$05,$68,$31,$E2,$64,$04,$A0,$44,$0A,$04,$22
.byte $F7,$C4,$B0,$85,$A8,$41,$E6,$FF,$FF,$FF
.byte $43,$9F,$CF,$A8,$25,$31,$09,$94,$F2,$4A,$50,$C0,$8F,$18
.byte $E8,$68,$01,$63,$05,$77,$0C,$A0,$02,$09,$98,$80,$40
.byte $EE,$62,$07,$A2,$9C,$8F,$91,$48,$90,$80,$CC
.byte $25,$F9,$8E,$25,$08,$B1,$08,$BC,$26,$B0,$8F,$4D,$53,$1B
.byte $07,$84,$80,$84,$FD,$07,$A8,$15,$F7,$0F,$E7,$07,$59,$19
.byte $DF,$38,$75,$6A,$D7,$C8,$8F,$55,$E6,$83
.byte $E9,$E0,$0E,$0E,$A8,$09,$10,$36,$39,$A0,$AA,$E1
.byte $FF,$BA,$F5,$AC,$87,$C0,$F5,$AC,$DF
.byte $BF,$CE,$F5,$C0,$D5,$83,$D6,$AA,$20,$80
.byte $D1,$B3,$FD,$0B,$A8,$25,$68,$1D,$B1,$A8,$1D,$F8,$CF
.byte $B9,$FF,$10,$48,$E7,$07,$80,$BF,$E0,$E8,$12,$98
.byte $FC,$B4,$14,$BA,$29,$20,$EA,$DE,$BE,$F5,$AB
.byte $FF,$D5,$B2,$FD,$EB,$D7,$AA,$FD,$BA
.byte $6F,$E0,$FA,$D5,$EA,$81,$14,$E0,$84,$4B,$37
.byte $9E,$1B,$20,$80,$FF,$FF,$F9,$69,$0E,$10,$00,$E0
.byte $23,$83,$E6,$02,$2B,$6D,$40,$69,$26,$84,$BB,$18,$F4,$03
.byte $FF,$D2,$C0,$81,$CC,$99,$B3,$80,$83
.byte $FF,$80,$8C,$E6,$CC,$99,$83,$98,$B3
.byte $FB,$E6,$F3,$81,$0C,$98,$81,$E0,$CF,$F9
.byte $F3,$8C,$D4,$D7,$0A,$69,$3A,$8C,$94,$2A,$55
.byte $F7,$4A,$FF,$FF,$81,$08,$B0,$86,$F0,$87
.byte $03,$80,$FE,$D8,$0C,$94,$BA,$FD,$03,$D4,$02,$CB,$1A,$02,$08
.byte $FE,$79,$0D,$80,$80,$C4,$80,$C4,$88,$99
.byte $FB,$FF,$FF,$CC,$47,$8B,$70,$2B,$FF,$EB
.byte $8B,$F9,$AA,$49,$30,$20,$93,$BB,$64,$55,$48,$02,$98
.byte $9D,$A0,$09,$04,$D5,$8A,$F1,$2A,$11,$CC,$2B,$B0
.byte $1F,$C4,$80,$54,$AA,$FE,$02,$0E,$2C,$24,$94,$E7
.byte $F6,$C4,$1E,$C0,$98,$02,$00,$86,$48,$71,$2B
.byte $CE,$0B,$00,$BA,$94,$BC,$03,$33,$E6,$0B,$F9,$FF
.byte $30,$7E,$03,$0A,$02,$86,$1E,$39,$00,$02,$81,$14,$E7,$4A,$5C
.byte $D9,$B0,$6B,$20,$03,$23,$E0,$CC,$86,$06,$E6,$83
.byte $DD,$54,$E2,$02,$55,$0E,$11,$0E,$49,$A0,$83
.byte $5F,$80,$F0,$FF,$FF,$9F,$86,$26,$02,$B9,$2C
.byte $77,$80,$A0,$85,$CD,$67,$C0,$E3,$CC,$EB,$23
.byte $FA,$1A,$29,$98,$59,$11,$C6,$C0,$F1,$AE,$84
.byte $F9,$7B,$69,$43,$04,$04,$FC,$E7,$FF,$FF,$8E
.byte $F0,$53,$17,$59,$05,$8F,$03,$3A,$28,$E0,$AA,$E1,$AA
.byte $FF,$FF,$AC,$FF,$C3,$F5,$AC,$DF,$FE
.byte $9F,$F5,$B0,$DD,$8E,$D6,$0E,$0E,$A0,$0D,$93
.byte $4F,$86,$80,$88,$C0,$B9,$01,$CD,$47,$C3,$EB,$1F
.byte $E7,$E0,$BF,$FE,$E8,$46,$FE,$07,$8D,$80,$BF
.byte $F9,$E0,$E8,$3E,$3C,$20,$D8,$9A,$DE,$CE,$F5
.byte $FF,$AB,$D5,$B3,$9D,$EB,$D7,$EA,$E7
.byte $5F,$BA,$E0,$FA,$D5,$EA,$F6,$17,$A2,$02,$08
.byte $DC,$AF,$14,$84,$2E,$98,$8B,$E0,$66,$16,$BF,$E0
.byte $9F,$F0,$87,$83,$E6,$FF,$83,$32,$56,$16,$CD
.byte $FC,$F5,$27,$33,$3D,$88,$84,$B4,$80,$86,$BC
.byte $FF,$F8,$B3,$80,$8F,$80,$FC,$E1,$CC
.byte $BF,$99,$B3,$98,$F3,$E7,$CC,$F6,$0F,$E2
.byte $7F,$84,$E0,$F3,$F9,$BF,$C4,$AA,$CD,$4B
.byte $7F,$BC,$46,$2A,$55,$0A,$C4,$CA,$F6,$13
.byte $0F,$FC,$9F,$80,$F8,$D8,$0C,$94,$D6,$EA,$1C,$F6,$13
.byte $7C,$25,$01,$5F,$01,$C4,$AC,$94,$F2,$FF,$D8,$20
.byte $FE,$06,$1B,$BF,$FC,$2B,$E7,$6B,$F9,$A6
.byte $E4,$10,$38,$14,$D7,$C0,$CB,$02,$2C,$24,$CD,$A1,$80
.byte $FB,$E0,$00,$63,$03,$2A,$55,$22,$64,$FF
.byte $7E,$69,$43,$20,$86,$2A,$55,$FB,$FF,$E8,$2E
.byte $F1,$08,$91,$E2,$F4,$03,$EB,$1B,$90,$80,$C0,$89
.byte $FE,$7A,$05,$80,$74,$2B,$55,$7A,$5F,$A2
.byte $FB,$D1,$B0,$49,$44,$98,$FF,$F9,$FB,$E7
.byte $62,$8E,$1D,$00,$F6,$13,$14,$DF,$4A,$64,$CD,$E6,$AE,$2D
.byte $D4,$6B,$05,$EA,$00,$88,$D8,$10,$40,$E2,$06,$A2,$C4
.byte $4C,$68,$46,$B0,$05,$F3,$FF,$8E,$3D,$BC,$26,$A0,$10,$54
.byte $B2,$B0,$09,$B4,$01,$01,$EA,$4C,$B0,$86,$B0,$15,$88
.byte $5F,$10,$8A,$F9,$8F,$40,$CD,$4B,$9E,$28,$01
.byte $E5,$FE,$83,$2E,$02,$6B,$01,$BC,$22,$A0,$AA,$E1
.byte $FF,$AA,$87,$AC,$D5,$C3,$F5,$AF,$DF
.byte $BF,$BA,$F5,$B0,$C5,$8E,$D6,$68,$22,$98
.byte $77,$84,$88,$84,$69,$50,$80,$E0,$84,$81,$18
.byte $8F,$80,$FE,$BF,$FE,$E8,$46,$45,$04,$86,$05,$BF
.byte $FA,$A9,$31,$C0,$BB,$20,$C0,$D4,$AA,$FB,$CF
.byte $DF,$FF,$FF,$FF,$F3,$9F,$4B,$01,$E1,$BF
.byte $D1,$E0,$4B,$01,$0F,$15,$EB,$1B,$8C,$EA,$3A,$C0,$E7
.byte $F7,$B0,$84,$FF,$67,$12,$8F,$E6,$FC,$81
.byte $A7,$80,$E6,$FC,$2B,$38,$CD,$63,$82,$BC,$22,$96
.byte $FF,$80,$98,$8C,$98,$B3,$80,$83,$80
.byte $FF,$8C,$E0,$C3,$99,$B3,$F8,$B0,$E6
.byte $FD,$CC,$0F,$0D,$86,$80,$F4,$CF,$FF,$83
.byte $FB,$D5,$BA,$CD,$4B,$8C,$51,$2A,$55,$3A
.byte $3B,$D6,$EA,$0F,$11,$FF,$87,$C0,$67,$12,$94,$BA
.byte $43,$98,$90,$FF,$03,$CA,$06,$22,$0D,$CE,$1A,$9A,$CE,$06
.byte $9F,$A8,$C4,$A2,$91,$CA,$0D,$12,$2E,$2C,$0F
.byte $BF,$E7,$2B,$E7,$EB,$FD,$AA,$2B,$08,$20
.byte $BC,$31,$40,$9C,$F7,$83,$80,$C0,$99,$08,$0C,$EA
.byte $FD,$85,$0E,$45,$88,$C4,$2A,$D5,$EE,$FF
.byte $54,$2A,$25,$8C,$0B,$04,$94,$CA,$82,$48,$02,$82,$30,$24
.byte $FC,$46,$02,$DD,$01,$B8,$98,$2F,$55,$7E,$FF
.byte $F7,$BA,$C6,$BC,$0F,$45,$E0,$80,$9F,$FF
.byte $9D,$E7,$2A,$28,$84,$80,$04,$12,$D3,$95,$75,$E8
.byte $D9,$8C,$4D,$2B,$54,$1A,$E0,$84,$67,$00,$80,$98
.byte $FF,$83,$80,$00,$55,$2A,$50,$B2,$11
.byte $44,$68,$46,$71,$06,$C3,$57,$1D,$85,$1A,$BC,$26,$A4,$0F,$4D
.byte $8E,$71,$12,$C7,$99,$91,$4B,$33,$71,$06,$0F,$05,$C0
.byte $F9,$88,$5A,$0B,$71,$02,$A3,$90,$FF,$FF,$8F
.byte $7E,$9E,$49,$C0,$FF,$93,$E0,$BF,$F8,$2A,$1D
.byte $F8,$0E,$0B,$8E,$03,$BC,$22,$C0,$AA,$DF,$EA,$81
.byte $FF,$AB,$F5,$B0,$D5,$EA,$D7,$AA,$9D
.byte $EF,$AC,$C7,$CE,$F5,$71,$22,$8E,$93,$80
.byte $91,$90,$03,$00,$82,$14,$F0,$2F,$B3,$7B,$08,$71,$0A,$F8
.byte $73,$BF,$86,$8A,$01,$51,$4C,$80,$BF,$E0,$02,$1B
.byte $39,$10,$8C,$36,$4F,$02,$D5,$AA,$D5,$6B,$38,$55,$0F
.byte $DD,$86,$49,$60,$C4,$88,$91,$8C,$14,$8F,$98
.byte $9F,$B0,$87,$80,$98,$F3,$83,$27,$71,$22,$9D
.byte $F3,$82,$84,$CB,$43,$BC,$22,$86,$C0,$87,$8C
.byte $FF,$98,$C3,$87,$8F,$80,$8C,$E0,$8C
.byte $BF,$86,$8C,$98,$B3,$E6,$C0,$49,$08,$C0
.byte $FF,$B8,$80,$F8,$FF,$FF,$FF,$C8,$FE
.byte $FE,$49,$48,$F0,$51,$2A,$55,$AA,$DA,$A9
.byte $1E,$83,$13,$FC,$87,$80,$FE,$68,$0E,$94,$B7,$D8,$0D
.byte $FE,$CB,$43,$98,$81,$80,$83,$14,$A2,$C4
.byte $EF,$EE,$DD,$C8,$FF,$10,$44,$8C,$E1,$2B
.byte $8F,$FF,$7B,$FB,$BF,$8E,$38,$94,$F7,$76,$17,$C4
.byte $FE,$05,$00,$A0,$44,$2A,$55,$2A,$55,$A2
.byte $FB,$94,$BF,$49,$44,$90,$28,$C5,$7E,$FF
.byte $D2,$AA,$2C,$08,$91,$F6,$F1,$1C,$A3,$82,$00,$98,$80
.byte $FF,$1C,$2F,$55,$7E,$E1,$A2,$D1,$90
.byte $7D,$85,$C8,$46,$80,$FE,$F3,$FF,$FF,$8F,$25
.byte $E4,$33,$09,$14,$CB,$86,$4A,$64,$F8,$00,$A6,$C4,$89
.byte $D2,$F3,$22,$A0,$B1,$01,$A7,$0D,$9A,$B1,$0D,$83,$40
.byte $3F,$2A,$80,$00,$55,$8A,$F1,$68,$46,$7C,$03
.byte $BC,$A3,$00,$8E,$21,$04,$88,$80,$20,$B9,$2D,$80
.byte $D7,$A4,$E1,$BF,$E1,$05,$FF,$4A,$00,$87,$80
.byte $15,$F8,$68,$32,$E8,$E6,$04,$84,$F7,$07,$53,$2D,$B1,$01
.byte $BD,$B4,$B1,$19,$CC,$FF,$FF,$99,$10,$48,$80
.byte $3F,$80,$FE,$80,$E0,$BF,$F8,$83,$26,$38,$04
.byte $FE,$BA,$29,$20,$AA,$DF,$AA,$87,$EB,$FF
.byte $FF,$B0,$D5,$BA,$D6,$FF,$F5,$AC,$DF
.byte $5B,$CE,$F5,$B1,$1D,$D0,$E1,$B1,$09,$82,$E9,$3E
.byte $F9,$C0,$FA,$08,$B1,$11,$86,$C0,$FF,$FF,$81
.byte $3D,$F3,$45,$4E,$E0,$80,$E0,$83,$A9,$28,$B6,$2D
.byte $D7,$AC,$D5,$AA,$45,$41,$EA,$E9,$0A,$B0,$E2
.byte $FA,$B1,$0D,$B0,$E9,$45,$81,$03,$C5,$FC,$FF
.byte $8E,$83,$0E,$F0,$9F,$F0,$83,$03,$44,$56,$68,$46,$81
.byte $DE,$3B,$18,$84,$80,$84,$8C,$CC,$4F,$B0,$86
.byte $7F,$80,$FE,$FF,$FF,$CF,$DF,$7D,$45,$4A
.byte $7F,$8F,$51,$2A,$55,$0A,$D6,$AA,$83,$13
.byte $07,$FF,$81,$C0,$67,$12,$14,$BB,$6B,$48,$26,$00,$C9,$03
.byte $7F,$00,$11,$B2,$D4,$AE,$97,$8E,$81,$01
.byte $3E,$A6,$3D,$CF,$F9,$2B,$FF,$4A,$81,$2F,$8D,$0B
.byte $F8,$14,$CF,$56,$0E,$30,$21,$88,$83,$80,$C0,$99
.byte $6F,$B0,$50,$2A,$55,$FE,$01,$C5,$AC,$E7,$41
.byte $9F,$00,$99,$8A,$FD,$FF,$0D,$12,$88,$1F,$02
.byte $E0,$93,$D2,$FC,$0B,$30,$21,$80,$04,$DE,$02,$98,$2F,$55
.byte $DF,$7E,$E1,$AE,$E4,$8C,$E7,$45,$E0,$F0
.byte $83,$E1,$F3,$81,$2A,$B6,$2C,$9C,$AA,$5D,$02,$CA,$67,$B0
.byte $69,$E6,$4A,$37,$AC,$10,$B8,$56,$0E,$8C,$80,$E2,$02
.byte $77,$75,$A2,$E4,$8E,$50,$80,$83,$F8,$82,$32
.byte $FE,$B9,$2C,$80,$E8,$E1,$BA,$D0,$AE,$D5
.byte $FF,$FA,$D5,$FA,$D9,$AA,$9F,$80,$D8
.byte $FB,$83,$FE,$A6,$29,$A6,$CC,$81,$80,$82
.byte $EC,$2B,$2D,$4A,$17,$CC,$89,$84,$1B,$E6,$BC,$FE
.byte $7C,$2A,$3D,$20,$0D,$CD,$E0,$BF,$F8,$BF,$1F,$15
.byte $FE,$33,$44,$C0,$EA,$DF,$AE,$9F,$EB,$81
.byte $FF,$B0,$DD,$8E,$D6,$C3,$F5,$AB,$D5
.byte $3B,$CE,$F5,$84,$1F,$C0,$83,$C1,$45,$02,$E7,$39
.byte $ED,$88,$84,$0B,$F4,$FE,$E7,$15,$86,$80,$F8
.byte $EF,$CF,$E1,$FF,$05,$90,$4C,$CC,$80,$BC
.byte $EB,$80,$B3,$84,$13,$08,$B3,$38,$F0,$FF,$BF
.byte $03,$D5,$EA,$E1,$01,$4A,$2D,$AA,$0C,$66,$00,$D9,$0D,$C8,$41
.byte $DF,$C0,$91,$A2,$C5,$FC,$59,$11,$C0,$9F
.byte $4A,$C8,$03,$98,$CA,$57,$CC,$87,$2A,$B4,$38,$82,$5C,$06
.byte $96,$12,$44,$90,$A6,$C8,$07,$CC,$81,$36,$84,$13,$FC
.byte $BF,$51,$2A,$55,$8A,$FB,$A6,$83,$12,$C0
.byte $E3,$81,$C0,$01,$13,$94,$BB,$C9,$03,$81,$80,$C0
.byte $FA,$EA,$3E,$A2,$B0,$00,$54,$E8,$F1,$EE,$1D
.byte $FB,$8A,$F9,$8E,$44,$3C,$F9,$2A,$55,$EA
.byte $D2,$E5,$35,$40,$92,$D3,$12,$3C,$A0,$4A,$03,$98,$A0
.byte $7D,$44,$0A,$00,$55,$3A,$C4,$BC,$85,$CB,$45
.byte $6F,$C8,$F9,$FF,$FF,$8E,$34,$00,$81,$94,$D2
.byte $F8,$E5,$00,$F8,$10,$A1,$19,$C0,$99,$20,$7C,$2F
.byte $3F,$55,$7A,$FF,$22,$C4,$8C,$E8,$38,$24,$08
.byte $0b,$80,$f3,$00,$37,$10,$12,$9f
.byte $55,$80,$C0,$B7,$A0,$C0,$07,$84,$C0,$13,$81,$C0,$07
.byte $FF,$98,$88,$40,$2A,$55,$6A,$5F,$BA
.byte $F3,$D1,$B0,$FE,$0B,$C0,$33,$E0,$8C,$E0,$F3
.byte $17,$F9,$FF,$87,$C0,$27,$08,$C0,$03,$B8,$2B,$27,$28
.byte $DE,$C0,$3F,$CD,$88,$CC,$88,$C0,$3F,$C0,$80
.byte $FB,$80,$86,$C0,$13,$04,$2A,$55,$2A,$55
.byte $FB,$32,$7C,$C0,$4B,$E0,$80,$E6,$80,$98
.byte $FD,$FC,$27,$20,$20,$40,$80,$04,$81,$82
.byte $FE,$B8,$27,$AC,$E1,$BA,$D6,$AF,$D5,$CE
.byte $FF,$D5,$AA,$DF,$AA,$F5,$80,$D6,$83
.byte $FB,$D6,$83,$C0,$23,$D0,$89,$83,$82,$81
.byte $F3,$A0,$90,$C0,$4B,$F6,$17,$80,$80,$BC,$E6
.byte $73,$FF,$FF,$D4,$24,$14,$2C,$BF,$F8,$8F,$A9,$1C
.byte $FC,$75,$10,$B8,$23,$C8,$EA,$DF,$AE,$9D,$EB
.byte $FF,$81,$B0,$FD,$FA,$D7,$C3,$F5,$EB
.byte $97,$DF,$CE,$F5,$5A,$20,$98,$9A,$18,$C0,$3B,$B0
.byte $FD,$FC,$26,$14,$8F,$86,$80,$FE,$8F,$FE
.byte $F9,$FF,$0D,$44,$EF,$03,$84,$80,$83,$80,$8C
.byte $58,$C0,$3B,$B8,$17,$FE,$03,$D2,$8E,$C0,$53,$93,$67,$10
.byte $FC,$A6,$3D,$78,$01,$98,$2A,$55,$F0,$FF,$BF
.byte $7E,$C0,$0B,$F0,$87,$B0,$86,$80,$E6,$D4,$0C
.byte $F8,$90,$C3,$7D,$14,$C0,$33,$8D,$80,$C0,$81,$A3
.byte $DF,$D1,$88,$FE,$FF,$9F,$C0,$47,$23,$50
.byte $DF,$2A,$7D,$2A,$D9,$AA,$27,$10,$B0,$80
.byte $D3,$80,$FE,$B2,$2D,$98,$97,$83,$79,$04,$88,$80
.byte $E1,$88,$F6,$0F,$0D,$0C,$FE,$07,$06,$02,$80,$C0,$41
.byte $3F,$2B,$F5,$2A,$D7,$A2,$FC,$26,$1D,$C0,$1F
.byte $3F,$AC,$C4,$2A,$55,$3A,$FF,$26,$2C,$0C,$D2
.byte $FC,$C0,$07,$67,$34,$E6,$80,$82,$80,$E6,$C0
.byte $DD,$51,$86,$04,$A2,$47,$BC,$0D,$44,$41,$FF
.byte $A4,$7A,$03,$C4,$31,$04,$0E,$DB,$C0,$77,$A0,$64,$2A,$82
.byte $76,$64,$16,$B3,$82,$CE,$02,$98,$80,$54,$86,$04
.byte $27,$8A,$91,$B2,$8D,$49,$A6,$01,$E6,$62,$26,$BF,$05
.byte $E4,$8E,$1E,$64,$06,$90,$8B,$4D,$64,$16,$98,$B1,$A6
.byte $CC,$64,$32,$DD,$11,$C0,$B8,$C2,$02,$77,$05,$90,$A0
.byte $DF,$55,$2A,$1D,$A2,$9E,$0E,$4D,$C0,$81
.byte $C3,$83,$80,$FE,$0D,$8A,$0F,$B2,$2D,$64,$06,$EB,$E1
.byte $FF,$FA,$F5,$AC,$FF,$CF,$F5,$AF,$DF
.byte $3F,$BE,$F5,$C0,$D5,$83,$D6,$0A,$0E,$64,$0E
.byte $8F,$90,$86,$91,$80,$C8,$02,$F5,$1B,$64,$26,$B3
.byte $79,$86,$C8,$0E,$E2,$01,$9E,$FF,$F9,$0F,$8B,$4D
.byte $5F,$E0,$87,$E0,$FF,$E1,$A6,$10,$40,$AE,$3D
.byte $FE,$64,$02,$D8,$EA,$DE,$BE,$9D,$EB,$FF
.byte $FF,$B3,$FD,$EA,$D7,$BF,$F5,$BA,$E0
.byte $D7,$FA,$F5,$FF,$45,$18,$B3,$E7,$07,$82,$90
.byte $72,$C9,$4B,$F0,$61,$1A,$FE,$01,$F8,$BF,$80,$FE,$3E
.byte $F2,$9C,$0C,$8C,$E7,$48,$38,$23,$D4,$81,$9E,$BC
.byte $FF,$E0,$C0,$87,$8F,$80,$FC,$E1,$83
.byte $BF,$86,$BC,$F8,$C0,$E1,$C0,$CE,$0E,$A0
.byte $9F,$CC,$81,$81,$E6,$BF,$7E,$0C,$69,$3D,$81
.byte $EF,$2A,$55,$72,$FF,$54,$0D,$C0,$87,$C0
.byte $87,$9F,$80,$F8,$D4,$0C,$10,$C7,$FE,$14,$A4,$2D,$9C
.byte $7E,$F5,$03,$82,$E1,$88,$91,$FF,$FF,$A4,$45
.byte $7F,$3C,$51,$2A,$FF,$EA,$F9,$A6,$FF,$1E
.byte $61,$E0,$0A,$EB,$6D,$18,$7E,$00,$F5,$0B,$B4,$82,$88,$02
.byte $7F,$54,$6A,$FD,$2A,$7D,$AC,$F9,$A6,$18
.byte $7E,$A4,$21,$BC,$46,$2A,$51,$EE,$FF,$8A,$29
.byte $D0,$AF,$08,$10,$C6,$64,$05,$64,$31,$E2,$60,$04,$A0,$44
.byte $DE,$06,$04,$22,$C4,$B0,$85,$A4,$41,$E6,$FF
.byte $0F,$FF,$FF,$9F,$CF,$A4,$25,$2D,$09,$90,$F2,$46,$50
.byte $A1,$C0,$8B,$18,$64,$01,$5F,$05,$73,$0C,$A0,$FE,$08,$98
.byte $BB,$80,$40,$5E,$07,$A2,$9C,$8F,$8D,$48,$90
.byte $97,$80,$CC,$F9,$8A,$25,$08,$AD,$08,$B8,$26,$B0
.byte $1C,$8B,$4D,$4F,$1B,$84,$80,$84,$F9,$07,$A4,$15,$F3,$0F
.byte $7C,$E3,$07,$55,$19,$38,$75,$6A,$D7,$C8,$8B,$55
.byte $A7,$E6,$83,$E0,$0A,$0E,$A4,$09,$10,$32,$39,$A0
.byte $FF,$AA,$E1,$BA,$F5,$AC,$87,$C0,$F5
.byte $FF,$AC,$DF,$CE,$F5,$C0,$D5,$83,$D6
.byte $46,$A6,$20,$80,$B3,$F9,$0B,$A4,$25,$64,$1D,$B1,$A4,$1D
.byte $E7,$F8,$CF,$FF,$0C,$48,$E3,$07,$80,$BF,$E0
.byte $F2,$E4,$12,$98,$B0,$14,$B6,$29,$20,$EA,$DE,$BE
.byte $FF,$F5,$AB,$D5,$B2,$FD,$EB,$D7,$AA
.byte $BF,$FD,$BA,$E0,$FA,$D5,$EA,$7D,$14,$E0
.byte $79,$84,$47,$37,$17,$20,$80,$FF,$FF,$F9,$65,$0E
.byte $8E,$0C,$00,$E0,$83,$E6,$FE,$2A,$69,$40,$65,$26,$84
.byte $FC,$B7,$18,$F0,$03,$D2,$C0,$81,$CC,$99,$B3
.byte $FF,$80,$83,$80,$8C,$E6,$CC,$99,$83
.byte $EF,$98,$B3,$E6,$F3,$7D,$0C,$98,$81,$E0
.byte $CF,$CF,$F9,$8C,$D4,$D3,$0A,$65,$3A,$8C,$94
.byte $DF,$2A,$55,$4A,$FF,$FF,$7D,$08,$B0,$86
.byte $0F,$F0,$87,$80,$FE,$D4,$0C,$90,$BA,$F9,$03,$D0,$02
.byte $F8,$C7,$1A,$FE,$0B,$75,$0D,$80,$80,$C4,$80,$C4
.byte $EF,$88,$99,$FF,$FF,$C8,$47,$8B,$70,$2B
.byte $2F,$FF,$EB,$F9,$AA,$45,$30,$20,$8F,$BB,$60,$55
.byte $76,$44,$02,$98,$A0,$05,$04,$D5,$8A,$F1,$26,$11
.byte $7E,$C8,$2B,$B0,$C4,$80,$54,$AA,$FE,$FE,$0D
.byte $D8,$28,$24,$90,$E7,$C0,$1E,$C0,$98,$FE,$03,$86,$48
.byte $3B,$71,$2B,$07,$00,$BA,$94,$BC,$FF,$32,$E2,$0B
.byte $C3,$F9,$FF,$7A,$03,$06,$02,$82,$1E,$35,$00,$02,$81
.byte $64,$10,$E7,$46,$5C,$B0,$67,$20,$FF,$22,$E0,$CC,$82,$06
.byte $77,$E6,$83,$54,$DE,$02,$55,$0E,$11,$0A,$49
.byte $7F,$A0,$83,$80,$F0,$FF,$FF,$9F,$82,$26
.byte $DD,$02,$B5,$2C,$80,$A0,$85,$C9,$67,$C0,$E3
.byte $E9,$CC,$E7,$23,$16,$29,$98,$55,$11,$C6,$C0,$F1
.byte $E7,$AE,$84,$7B,$65,$43,$00,$04,$FC,$E7,$FF
.byte $C3,$FF,$8E,$4F,$17,$55,$05,$8B,$03,$36,$28,$E0,$AA
.byte $FF,$E1,$AA,$FF,$AC,$FF,$C3,$F5,$AC
.byte $7F,$DF,$FE,$F5,$B0,$DD,$8E,$D6,$0A,$0E
.byte $3E,$9C,$0D,$93,$86,$80,$88,$C0,$B5,$01,$C9,$47
.byte $9D,$C3,$E7,$1F,$E0,$BF,$FE,$E4,$46,$FA,$07,$8D
.byte $E7,$80,$BF,$E0,$E4,$3E,$38,$20,$D8,$9A,$DE
.byte $FF,$CE,$F5,$AB,$D5,$B3,$9D,$EB,$D7
.byte $7F,$EA,$E7,$BA,$E0,$FA,$D5,$EA,$F2,$17
.byte $71,$A2,$FE,$0B,$AB,$14,$80,$2E,$98,$8B,$E0,$62,$16
.byte $7F,$BF,$E0,$F0,$87,$83,$E6,$FF,$7F,$32
.byte $F2,$52,$16,$CD,$F1,$27,$2F,$3D,$88,$84,$B4,$80
.byte $FF,$86,$BC,$F8,$B3,$80,$8F,$80,$FC
.byte $FF,$E1,$CC,$99,$B3,$98,$F3,$E7,$CC
.byte $FE,$F2,$0F,$E2,$84,$E0,$F3,$F9,$BF,$C4
.byte $FD,$AA,$C9,$4B,$BC,$46,$2A,$55,$0A,$C4
.byte $3D,$CA,$F2,$13,$FC,$9F,$80,$F8,$D4,$0C,$90,$D6
.byte $F0,$E6,$1C,$F2,$13,$21,$01,$5B,$01,$C4,$AC,$94,$F2
.byte $F9,$FF,$D4,$20,$02,$1B,$BF,$FC,$2B,$E7,$6B
.byte $93,$F9,$A6,$0C,$38,$10,$D7,$C0,$C7,$02,$28,$24,$CD
.byte $EF,$A1,$80,$E0,$00,$5F,$03,$2A,$55,$22
.byte $FB,$64,$FF,$65,$43,$20,$86,$2A,$55,$FB
.byte $C5,$FF,$E4,$2E,$08,$8D,$E2,$F0,$03,$E7,$1B,$90,$80
.byte $FB,$C0,$89,$76,$05,$80,$74,$2B,$55,$7A
.byte $EF,$5F,$A2,$D1,$B0,$45,$44,$98,$FF,$F9
.byte $8B,$FB,$E7,$8A,$1D,$00,$F2,$13,$10,$DF,$46,$64,$CD
.byte $51,$E6,$AA,$2D,$67,$05,$E6,$00,$88,$D4,$10,$40,$DE,$06
.byte $33,$A2,$C4,$64,$46,$AC,$05,$F3,$FF,$8A,$3D,$B8,$26
.byte $C9,$A0,$0C,$54,$AC,$09,$B4,$FD,$00,$E6,$4C,$B0,$86
.byte $7E,$AC,$15,$88,$10,$8A,$F9,$8F,$40,$C9,$4B
.byte $95,$9E,$24,$01,$FE,$7F,$2E,$02,$67,$01,$B8,$22,$A0
.byte $FF,$AA,$E1,$AA,$87,$AC,$D5,$C3,$F5
.byte $FF,$AF,$DF,$BA,$F5,$B0,$C5,$8E,$D6
.byte $DE,$64,$22,$98,$84,$88,$84,$65,$50,$80,$E0
.byte $3D,$84,$7D,$18,$80,$FE,$BF,$FE,$E4,$46,$41,$04
.byte $EA,$82,$05,$BF,$A5,$31,$C0,$B7,$20,$C0,$D4,$AA
.byte $7F,$FB,$CF,$FF,$FF,$FF,$F3,$9F,$47,$01
.byte $47,$E1,$BF,$E0,$47,$01,$0B,$15,$E7,$1B,$8C,$E6,$3A
.byte $DF,$C0,$E7,$B0,$84,$FF,$63,$12,$8F,$E6
.byte $9F,$FC,$81,$80,$E6,$FC,$27,$38,$C9,$63,$82
.byte $FE,$B8,$22,$96,$80,$98,$8C,$98,$B3,$80
.byte $FF,$83,$80,$8C,$E0,$C3,$99,$B3,$F8
.byte $F7,$B0,$E6,$CC,$0B,$0D,$86,$80,$F4,$CF
.byte $EF,$FF,$83,$D5,$BA,$C9,$4B,$8C,$51,$2A
.byte $EF,$55,$3A,$D6,$EA,$0B,$11,$FF,$87,$C0
.byte $0C,$63,$12,$90,$BA,$98,$90,$FB,$03,$C6,$06,$1E,$0D,$CA,$1A
.byte $7D,$9A,$CA,$06,$A8,$C4,$A2,$91,$CA,$09,$12
.byte $FE,$2A,$2C,$0F,$E7,$2B,$E7,$EB,$FD,$AA
.byte $F2,$27,$08,$20,$2D,$40,$98,$F7,$83,$80,$C0,$99
.byte $F6,$04,$0C,$EA,$85,$0A,$45,$88,$C4,$2A,$D5
.byte $53,$EE,$FF,$26,$25,$88,$0B,$04,$90,$CA,$82,$44,$02
.byte $F1,$82,$2C,$24,$42,$02,$D9,$01,$B8,$98,$2F,$55
.byte $DF,$7E,$FF,$BA,$C6,$BC,$0B,$45,$E0,$80
.byte $77,$9F,$FF,$E7,$26,$28,$84,$80,$04,$0E,$D3
.byte $66,$91,$75,$E8,$8C,$49,$2B,$50,$1A,$E0,$84,$63,$00
.byte $FF,$80,$98,$83,$80,$00,$55,$2A,$50
.byte $13,$B2,$11,$64,$46,$6D,$06,$C3,$53,$1D,$81,$1A,$B8,$26
.byte $39,$A4,$0B,$4D,$6D,$12,$C7,$99,$91,$47,$33,$6D,$06
.byte $E6,$0B,$05,$C0,$88,$56,$0B,$6D,$02,$A3,$90,$FF
.byte $FB,$FF,$8F,$9A,$49,$C0,$FF,$93,$E0,$BF
.byte $E1,$F8,$26,$1D,$0A,$0B,$8A,$03,$B8,$22,$C0,$AA,$DF
.byte $FF,$EA,$81,$AB,$F5,$B0,$D5,$EA,$D7
.byte $BF,$AA,$9D,$AC,$C7,$CE,$F5,$6D,$22,$8E
.byte $47,$93,$80,$90,$FF,$03,$7E,$14,$EC,$2F,$B3,$77,$08
.byte $CE,$6D,$0A,$F8,$BF,$86,$86,$01,$4D,$4C,$80,$BF
.byte $E5,$E0,$FE,$1A,$10,$88,$36,$4B,$02,$D5,$AA,$D5
.byte $74,$67,$38,$51,$0F,$86,$45,$60,$C4,$88,$91,$88,$14
.byte $7F,$8F,$98,$B0,$87,$80,$98,$F3,$7F,$27
.byte $CE,$6D,$22,$9D,$82,$84,$C7,$43,$B8,$22,$86,$C0
.byte $FF,$87,$8C,$98,$C3,$87,$8F,$80,$8C
.byte $FF,$E0,$8C,$86,$8C,$98,$B3,$E6,$C0
.byte $FE,$45,$08,$C0,$B8,$80,$F8,$FF,$FF,$FF
.byte $FB,$C8,$FE,$45,$48,$F0,$51,$2A,$55,$AA
.byte $7B,$DA,$A9,$7F,$13,$FC,$87,$80,$FE,$64,$0E
.byte $F8,$90,$B7,$D4,$0D,$C7,$43,$98,$81,$80,$83,$14
.byte $BF,$A2,$C4,$EE,$DD,$C8,$FF,$0C,$44,$8C
.byte $3F,$E1,$2B,$FF,$7B,$FB,$BF,$8A,$38,$90,$F7
.byte $FA,$72,$17,$C4,$01,$00,$A0,$44,$2A,$55,$2A
.byte $EF,$55,$A2,$94,$BF,$45,$44,$90,$28,$C5
.byte $4B,$7E,$FF,$A6,$2C,$08,$8D,$F6,$ED,$1C,$A3,$7E,$00
.byte $FF,$98,$80,$1C,$2F,$55,$7E,$E1,$A2
.byte $F7,$D1,$90,$85,$C4,$46,$80,$FE,$F3,$FF
.byte $91,$FF,$8B,$25,$2F,$09,$10,$CB,$86,$46,$64,$F4,$00,$A6
.byte $4B,$C4,$89,$EF,$22,$A0,$AD,$01,$A3,$0D,$9A,$AD,$0D
.byte $FF,$83,$40,$2A,$80,$00,$55,$8A,$F1
.byte $F0,$64,$46,$78,$03,$9F,$00,$8A,$21,$04,$88,$80,$20
.byte $5E,$B5,$2D,$80,$A4,$E1,$BF,$DD,$05,$FF,$46,$00
.byte $57,$87,$80,$F8,$64,$32,$E8,$E2,$04,$84,$F3,$07
.byte $F4,$4F,$2D,$AD,$01,$B4,$AD,$19,$CC,$FF,$FF,$99
.byte $FE,$0C,$48,$80,$80,$FE,$80,$E0,$BF,$F8
.byte $F8,$7F,$26,$34,$04,$B6,$29,$20,$AA,$DF,$AA,$87
.byte $FF,$EB,$FF,$B0,$D5,$BA,$D6,$FF,$F5
.byte $6F,$AC,$DF,$CE,$F5,$AD,$1D,$D0,$E1,$AD,$09
.byte $E5,$82,$E5,$3E,$C0,$F6,$08,$AD,$11,$86,$C0,$FF
.byte $F7,$FF,$81,$F3,$41,$4E,$E0,$80,$E0,$83
.byte $5C,$A5,$28,$B2,$2D,$AC,$D5,$AA,$41,$41,$EA,$E5,$0A
.byte $EB,$B0,$E2,$AD,$0D,$B0,$E5,$45,$81,$03,$C5
.byte $3B,$FC,$FF,$7F,$0E,$F0,$9F,$F0,$7F,$03,$40,$56
.byte $7A,$64,$46,$81,$37,$18,$84,$80,$84,$8C,$C8,$4F
.byte $FF,$B0,$86,$80,$FE,$FF,$FF,$CF,$DF
.byte $FD,$7D,$41,$4A,$8F,$51,$2A,$55,$0A,$D6
.byte $1D,$AA,$7F,$13,$FF,$81,$C0,$63,$12,$10,$BB,$67,$48
.byte $FC,$22,$00,$C5,$03,$00,$11,$B2,$D4,$AE,$97
.byte $F9,$8E,$7D,$01,$A2,$3D,$CF,$F9,$2B,$FF,$4A
.byte $E0,$7D,$2F,$89,$0B,$10,$CF,$52,$0E,$2C,$21,$88,$83,$80
.byte $BF,$C0,$99,$B0,$50,$2A,$55,$FA,$01,$C5
.byte $7D,$AC,$E3,$41,$00,$99,$8A,$FD,$FF,$09,$12
.byte $82,$84,$1F,$02,$8F,$D2,$F8,$0B,$2C,$21,$7C,$04,$DA,$02,$98
.byte $7F,$2F,$55,$7E,$E1,$AE,$E4,$8C,$E3,$45
.byte $0F,$E0,$F0,$E1,$F3,$7D,$2A,$B2,$2C,$98,$AA,$59,$02
.byte $A6,$C6,$67,$B0,$E6,$46,$37,$A8,$10,$B8,$52,$0E,$8C
.byte $DD,$80,$DE,$02,$75,$A2,$E4,$8A,$50,$80,$83
.byte $F9,$F8,$7E,$32,$B5,$2C,$80,$E8,$E1,$BA,$D0
.byte $FF,$AE,$D5,$FA,$D5,$FA,$D9,$AA,$9F
.byte $EF,$80,$D8,$83,$FE,$A2,$29,$A6,$CC,$81
.byte $B3,$80,$82,$27,$2D,$46,$17,$CC,$89,$80,$1B,$E6
.byte $F3,$BC,$FE,$26,$3D,$1C,$0D,$CD,$E0,$BF,$F8
.byte $F9,$BF,$1B,$15,$2F,$44,$C0,$EA,$DF,$AE,$9F
.byte $FF,$EB,$81,$B0,$DD,$8E,$D6,$C3,$F5
.byte $EF,$AB,$D5,$CE,$F5,$80,$1F,$C0,$83,$C1
.byte $B4,$41,$02,$E3,$39,$88,$80,$0B,$F4,$FE,$E3,$15,$86
.byte $BF,$80,$F8,$CF,$E1,$FF,$05,$8C,$4C,$CC
.byte $AF,$80,$BC,$80,$B3,$80,$13,$08,$AF,$38,$F0
.byte $0F,$FF,$BF,$D5,$EA,$DD,$01,$46,$2D,$A6,$0C,$62,$00
.byte $7C,$D5,$0D,$C4,$41,$C0,$91,$A2,$C5,$FC,$55,$11
.byte $2B,$C0,$9F,$C4,$03,$98,$C6,$57,$CC,$83,$2A,$B0,$38
.byte $59,$82,$58,$06,$0E,$44,$90,$A6,$C4,$07,$CC,$7D,$36
.byte $FE,$80,$13,$FC,$51,$2A,$55,$8A,$FB,$A6
.byte $8E,$7F,$12,$C0,$81,$C0,$FD,$12,$90,$BB,$C5,$03,$81
.byte $EB,$80,$C0,$E6,$3E,$A2,$AC,$00,$54,$E8,$F1
.byte $EF,$EE,$1D,$8A,$F9,$8A,$44,$3C,$F9,$2A
.byte $4B,$55,$EA,$E1,$35,$40,$8E,$D3,$0E,$3C,$A0,$46,$03
.byte $F7,$98,$A0,$44,$06,$00,$55,$3A,$C4,$BC
.byte $BD,$85,$C7,$45,$C8,$F9,$FF,$FF,$8A,$34,$00
.byte $E1,$81,$90,$D2,$E1,$00,$F4,$10,$9D,$19,$C0,$99,$20
.byte $FF,$7C,$2F,$55,$7A,$FF,$22,$C4,$8C
.byte $2c,$e4,$38,$20,$08,$80,$f3,$fc,$36,$10,$0e,$9f
ksp_title_end:
; Size of original version: 8188
; Size of compressed version: 2612
; Size of original version: 8184
; Size of compressed version: 2603

View File

@ -202,16 +202,16 @@ static int lzss_encode_better(
r = ring_buffer_size - match_length_limit;
if (frequent_char<32) {
printf(".equ FREQUENT_CHAR,%d\n",frequent_char);
printf(";FREQUENT_CHAR EQU %d\n",frequent_char);
}
else {
printf(".equ FREQUENT_CHAR,'%c'\n",frequent_char);
printf(";FREQUENT_CHAR EQU '%c'\n",frequent_char);
}
printf(".equ N,%i\n",ring_buffer_size);
printf(".equ F,%i\n",match_length_limit);
printf(".equ THRESHOLD,%i\n",position_length_threshold);
printf(".equ P_BITS,%i\n",position_bits);
printf(".equ POSITION_MASK,%i\n",(0xff>>(8-(position_bits-8))));
printf(";N EQU %i\n",ring_buffer_size);
printf(";F EQU %i\n",match_length_limit);
printf(";THRESHOLD EQU %i\n",position_length_threshold);
printf(";P_BITS EQU %i\n",position_bits);
printf(";POSITION_MASK EQU %i\n",(0xff>>(8-(position_bits-8))));
printf("logo:\n");

View File

@ -104,6 +104,13 @@ MB_ADDRL EQU $91
MB_ADDRH EQU $92
DONE_PLAYING EQU $93
MB_FRAME_DIFF EQU $94
LZSS_RL EQU $95
LZSS_RH EQU $96
LZSS_COUNT EQU $97
LZSS_MASK EQU $98
LZSS_ENDL EQU $99
LZSS_ENDH EQU $9A
SHIPY EQU $E4