;
; PIAglobe.128 -- Globe spinner for the C5128 and the C1028.
;

; Original C64 version by Georg Schwarz
; Reverse engineered, relocated and ported to C128 by Marko Mäkelä
; DASM source generated by Marko Mäkelä

#processor 6502
#seg code

; some KERNAL definitions

PRIMM = $FF7D	; PRint IMMediate

Flag80 = $D7	; 80 columns mode flag

; color definitions

cBg	= 0	; background color: black
cSea	= 6	; water color: dark blue
cLand	= 5	; land color: dark green

; some I/O definitions

PIABASE = $D7C0	; the PIA base address

MMUCR	= $FF00	; MMU Configuration Register
MMUSCA	= $FF01	; MMU Select Configuration A
MMUSCB	= $FF02	; MMU Select Configuration A
MMUSCC	= $FF03	; MMU Select Configuration A
MMUSCD	= $FF04	; MMU Select Configuration A
MMUPCRA	= $D501	; MMU Preconfiguration Register A
MMUPCRB	= $D502	; MMU Preconfiguration Register B
MMUPCRC	= $D503	; MMU Preconfiguration Register C
MMUPCRD	= $D504	; MMU Preconfiguration Register D
MMUMCR	= $D505	; MMU Mode Configuration Register
MMURCR	= $D506	; MMU RAM Configuration Register
MMUP0L	= $D507	; MMU zeropage relocation page
MMUP0H	= $D508	; MMU zeropage relocation bank
MMUP1L	= $D509	; MMU stack page relocation page
MMUP1H	= $D50A	; MMU stack page relocation bank

CIA1ICR	= $DC0D	; CIA 1 Interrupt Control Register
CIA2TAL	= $DD04	; CIA 2 Timer A low byte
CIA2TAH	= $DD05	; CIA 2 Timer A high byte
CIA2ICR	= $DD0D	; CIA 1 Interrupt Control Register
CIA2CRA = $DD0E	; CIA 2 Control Register A

NMILO = $FFFA	; NMI vector low byte
NMIHI = $FFFB	; NMI vector high byte
IRQLO = $FFFE	; IRQ vector low byte
IRQHI = $FFFF	; IRQ vector high byte

#org $1c01

; The BASIC line

	.word nl$		; link to next line
	.word 6502		; line number

	.byte $fe,$02,"0",":",$de,$9c,":"	; bank switching instructions

	.byte $9e		; SYS token

	; SYS digits

	.if (* + 8) / 10000
	.byte $30 + (* + 8) / 10000
	.endif
	.if (* + 7) / 1000
	.byte $30 + (* + 7) % 10000 / 1000
	.endif
	.if (* + 6) / 100
	.byte $30 + (* + 6) % 1000 / 100
	.endif
	.if (* + 5) / 10
	.byte $30 + (* + 5) % 100 / 10
	.endif
	.byte $30 + (* + 4) % 10

0$:	.byte 0
nl$:	.word 0   ; end of BASIC program

; The program

	sei
	lda #0
	sta MMUCR	; RAM bank 0, BASIC, I/O and KERNAL
	bit Flag80	; Is the computer in the 80 column mode?
	bpl begin$	; No, skip the message
	jsr PRIMM
	.byte $13,$13,$93,$1b,$4e,$1b,$4f,$7,$e,$5
	.byte "PLEASE SWITCH TO THE 40 COLUMN SCREEN!",0

begin$:	ldx #0
	lda #$7f
	sta CIA1ICR,x	; acknowledge and disable CIA 1 interrupts
	sta CIA2ICR,x	; acknowledge and disable CIA 2 interrupts
	stx CIA2CRA	; stop timer A on CIA 2
	stx CIA2TAH
	ldy #1
	sty CIA2TAL
	lda #<cont$
	sta NMILO	; set the NMI vector for disabling the NMI's
	lda #>cont$
	sta NMIHI
	lda #$3e
	sta MMUCR	; RAM bank 0 and I/O
	lda #$81
	sta CIA2ICR	; enable the CIA 2 timer A interrupts
	lda #$19
	sta CIA2CRA	; force load timer A, one shot, start timer A
cont$:			; (disable NMI by causing one)
	stx MMUP1H
	sty MMUP1L	; reset the stack relocation
	stx MMUP0H
	stx MMUP0L	; reset the zeropage relocation
	lda #$f		; set common RAM:
	sta MMURCR	; force bank 0 RAM at $0000-$3FFF and at $C000-$FFFF
	sty MMUMCR	; ensure that the computer is in the 128 mode
	sta 0		; disable character ROM
	sta 1		; (and set the color RAM pointers)
	sty $d030	; turn the 2 MHz mode on
	stx $d011	; blank the screen
	stx $d01a	; disable video interrupts
	sta $d019	; acknowledge video interrupts
	stx $d01c	; disable the sprite multicolor mode
	stx $d017	; disable the vertical sprite expansion

	lda #cBg
	sta $d020	; set screen to background color

	ldy #8
	sty $d016	; initialize the X scroll register
	lda #cSea	; initialize the sprite colors (water color)
color$:	dey
	sta $d027,y
	bne color$

	ldx #$a		; initialize the PIA registers
pia$:	lda PIAtable,x
	sta PIABASE+1,x
	dex
	bpl pia$

	ldx #$3f	; Memory configuration: 64 kB RAM in bank 0
	stx MMUPCRA	; set the Preconfiguration A
	stx MMUCR	; activate the memory configuration

meminit:		; initialize the data structures
; variable definitions
;; vectors
m0 = $4c
m1 = $4e
m2 = $50
m3 = $52
m4 = $54
m5 = $56
m6 = $58
m7 = $5a
m8 = $5c
m9 = $5e
ma = $60
;; 8-bit variables
mt = $62
mu = $63
mv = $64
mw = $65
mx = $66
my = $67
mz = $68
three = $69 ; this variable will contain a constant 3
carry = $6a ; this variable holds a carry flag (a bit that rotates right)
l0 = $6b
l1 = $6c
l2 = $6d
l3 = $6e
l4 = $6f
l5 = $70
l6 = $71
l7 = $72

;
; Decompress the sinus table ($d800-$e67f, $e680-$f4ff) from nybbles to bytes.
;
sininit:

st$ = m0
sl$ = m1
sh$ = m3

sintbl	= $d800
sinlo$	= sintbl
sinhi$	= sinlo$ + $e80

	ldy #$80

	lda #<(sintab - $80)
	sta st$
	lda #>(sintab - $80)
	sta st$ + 1

	lda #<(sinlo$ - $80)
	sta sl$
	lda #>(sinlo$ - $80)
	sta sl$ + 1

	lda #<(sinhi$ - $80)
	sta sh$
	lda #>(sinhi$ - $80)
	sta sh$ + 1

	ldx #$f
depack$:
	lda (st$),y
	and #$f
	sta (sl$),y
	lda (st$),y
	lsr
	lsr
	lsr
	lsr
	sta (sh$),y
	iny
	bne depack$

	inc st$ + 1
	inc sl$ + 1
	inc sh$ + 1
	dex
	bne depack$

sprites:
; generate the globe edge sprites from packed data (1:2 compression)


st$ = m0
sl$ = m1
sh$ = m2
cnt$ = mt

	lda #<spritab
	sta st$
	lda #>spritab
	sta st$ + 1

	lda #3
	sta three ; initialize the constant
	sta cnt$

; Generate the sprites at $200 - $7ff
	lda #2
	sty sl$
	sta sl$ + 1
	lda #5
	sty sh$
	sta sh$ + 1

loop$:	lda (st$),y
	and #$f
	tax
	lda fills,x
	sta (sl$),y
	lda (st$),y
	lsr
	lsr
	lsr
	lsr
	tax
	lda fills,x
	sta (sh$),y
	iny
	bne loop$

	inc st$ + 1
	inc sl$ + 1
	inc sh$ + 1
	dec cnt$
	bne loop$

copy:
src$ = m0
tgt$ = m3

; copy some data to $f500-$f7ff
;	lda #<data	; the pointer already contains the correct value
;	sta src$
;	lda #>data
;	sta src$+1
	sty tgt$
	ldx #3
loop$:	lda (src$),y
	sta (tgt$),y
	iny
	bne loop$
	inc src$ + 1
	inc tgt$ + 1
	dex
	bne loop$

sinadj:
; adjust the sinus tables
adj$ = m0

	ldx #sintahi - sintalo
loop$:
	lda sintalo - 1,x
	sta adj$
	lda sintahi - 1,x
	sta adj$ + 1
	lda (adj$),y
	ora #$10
	sta (adj$),y
	dex
	bne loop$

map:
; decompress the map (run length encoded)
tgt$ = m0

	ldx #0
	stx tgt$	; initialize low address
	ldy #$80
	sty carry
loop$:	sty tgt$ + 1	; initialize high address (to $8000)

maplen$ = * + 2
loop2$:	lda maplen,x
	pha
	tay

mapdata$ = * + 2
	lda mapdata,x
fill$:	dey
	sta (tgt$),y
	bne fill$

	inx
	bne noinc$

	inc maplen$
	inc mapdata$

noinc$:	pla
	clc
	adc tgt$
	sta tgt$
	bcc loop2$

	ldy tgt$ + 1
	iny
	cpy #$d8
	bcc loop$

colors:
;decompress the color memory (text matrix) to $800-$be7

tgt$ = m0
cnt$ = mt

	ldx #0
	stx tgt$
	lda #8
	sta tgt$ + 1
	ldx #coltae - 1 - coltab

loop$:	stx cnt$
	lda coltab,x
	ldx #cBg * $11	; default: background color
	lsr
	bcc nobw$
	ldx #cLand * $10 + cBg
			; land and background (sea will be made with sprites)
nobw$:	lsr
	bcc nowb$
	ldx #cLand * $10 + cSea
			; land and sea
nowb$:	pha		; store amount of this color
	tay		; and move it to index
	txa		; get the color
loop2$:	sta (tgt$),y
	dey
	bpl loop2$
	pla
	sec
	adc tgt$
	sta tgt$
	bcc noinc$
	inc tgt$ + 1
noinc$:	ldx cnt$
	dex
	bpl loop$

calc:
; calculate the frames
frame$	= mt	; frame number
rot$	= mu	; counter for updating the viewing angle
page$	= mv
page2$	= mw
indx$	= mx
cnt$	= my

base$	= m0	; viewing angle
tgt$	= m1

sp0$	= m2
sp1$	= m3
sp2$	= m4
sp3$	= m5

gf0$	= m6
gf1$	= m7
gf2$	= m8
gf3$	= m9

tab$	= ma

t0$	= l0
t1$	= l1
t2$	= l2
t3$	= l3

u0$	= l4
u1$	= l5

i0$	= l6
i1$	= l7

	lda #1
	sta rot$
	ldx #0
	lda #$82
	stx base$
	sta base$ + 1

next$:	stx frame$
	lda base$ + 1
	sta page$
	lda #$3e
	sta MMUCR	; enable full RAM configuration (4 kB I/O)
	inc $d020	; change screen color
	lda #87
	sta indx$

	lda frame$	; calculate the MMU configuration for the frame
	lsr
	and #$20
	bne noch1$
	lda #$80
noch1$:	and #$80
	ror
	ora #$3e
	sta MMUPCRB
	lda frame$
	ora #3
	asl
	asl
	sta PIABASE
	sta MMUSCB
	lda frame$
	and #2
	beq noch2$
	lda #$20
noch2$:	sta page2$	; set the graphics base page (0 or $20)

	ora #$5e	; clear the graphics buffer
	sta tgt$ + 1
	ldy #0
	sty tgt$
	ldx #$1b
	tya
clrl$:	dey
	sta (tgt$),y
	bne clrl$
	dec tgt$ + 1
	dex
	bne clrl$

loop$:	sta MMUSCA	; loop for calculating the frame
	ldy #$0
	sty t0$
	sty t1$
	sty t2$
	sty t3$
	sty i1$
	iny
	sty u0$
	lda #$80
	sta u1$
	lda #$f8
	sta i0$
	ldy base$
	sty sp0$
	iny
	sty sp1$
	lda page$
	sta sp0$ + 1
	sta sp1$ + 1
	clc
	adc #$2c
	sta sp2$ + 1
	sta sp3$ + 1
	ldx indx$
	lda $f5cc,x
	sta tab$
	lda $f624,x
	sta tab$ + 1
	lda coords,x
	sta gf0$
	sta gf1$
	lda $f6f8,x
	ora page2$
	sta gf0$ + 1
	adc #1
	sta gf1$ + 1
	lda $f750,x
	sta gf2$
	sta gf3$
	lda $f7a8,x
	ora page2$
	sta gf2$ + 1
	adc #1
	sta gf3$ + 1
	ldy $f67c,x
inloop$:
	sty cnt$
	lda (tab$),y
	adc sp1$
	sta sp1$
	sta sp3$
	bcc noc$
	lda sp1$ + 1
	adc #0
	bit three
	bne noz$
	sbc #3
	clc
noz$:	sta sp1$ + 1
	adc #$2c
	sta sp3$ + 1
noc$:	sec
	lda sp0$
	sbc (tab$),y
	sta sp0$
	sta sp2$
	bcs cs$
	lda sp0$ + 1
	bit three
	bne noz2$
	adc #4
noz2$:	sbc #0
	sta sp0$ + 1
	adc #$2b
	sta sp2$ + 1
cs$:	ldy #0
	ldx carry
	txa
	and (sp0$),y
	beq nos0$
	lda t0$
	ora u0$
	sta t0$
nos0$:	txa
	and (sp1$),y
	beq nos1$
	lda t1$
	ora u1$
	sta t1$
nos1$:	txa
	and (sp2$),y
	beq nos2$
	lda t2$
	ora u0$
	sta t2$
nos2$:	txa
	and (sp3$),y
	beq nos3$
	lda t3$
	ora u1$
	sta t3$
nos3$:	sta MMUSCB
	asl u0$
	lsr u1$
	bcc noset$
	lda #$80
	sta u1$
	ldy i0$
	lda t0$
	sta (gf0$),y
	lda t2$
	sta (gf2$),y
	tya
	sbc #8
	sta i0$
	ldy i1$
	lda t1$
	sta (gf1$),y
	lda t3$
	sta (gf3$),y
	tya
	adc #7
	sta i1$
	ldy #1
	sty u0$
	dey
	sty t0$
	sty t1$
	sty t2$
	sty t3$

noset$:	ldy cnt$
	dey
	bmi skip2$
	sta MMUSCA
	jmp inloop$

skip2$:	ldy i0$
	lda t0$
	sta (gf0$),y
	lda t2$
	sta (gf2$),y
	ldy i1$
	lda t1$
	sta (gf1$),y
	lda t3$
	sta (gf3$),y

	lsr carry
	bcc nochg$
	lda #$80
	sta carry
	lda page$
	adc #3
	sta page$
nochg$:	dec indx$
	bmi skip0$
	jmp loop$
skip0$:	lsr rot$
	bne skip1$
	lda #$40
	sta rot$
skip1$:	lda base$
	adc #9
	sta base$
	lda base$ + 1
	adc #0
	and #$fb
	sta base$ + 1
	ldx frame$
	inx
	cpx #112	; calculate 112 frames
	bcs vidinit
	jmp next$

vidinit:		; copy the sprite and color data to each video bank
src$	= m0
tgt$	= m1
cnt$	= mt
	ldy #$0
	sty src$
	sty tgt$
	lda #56 - 1	; there are 56 video banks of 16 kilobytes each
loop$:	sta cnt$
	lsr
	and #$10
	bne 0$
	lda #$80
0$:	ror
	ora #$3e
	sta MMUCR
	lda cnt$
	lsr
	sta PIABASE+2	; switch the video bank in at $8000-$bfff
	lda #$2
	sta src$ + 1
	lda #$9f
	ldx #$5
	jsr vcopy$	; sprite data: 5 pages at $9f00-a3ff
	lda #$bf
	ldx #$1
	jsr vcopy$	; sprite data: 1 page at $bf00-$bfff
	lda #$80
	ldx #$4
	jsr vcopy$	; color data: 4 pages at $8000-$83ff
	dec cnt$
	lda cnt$
	bpl loop$

	ldx #$3e
	stx MMUCR
	sta $d015	; enable all sprites
	sta $d01b	; behind the graphics
	lda #$dc
	sta PIABASE
	jmp irqinit

vcopy$:	sta tgt$ + 1	; copy x pages of data from src$ to tgt$
vloop$:	lda (src$),y
	sta (tgt$),y
	iny
	bne vloop$
	inc src$ + 1
	inc tgt$ + 1
	dex
	bne vloop$
	rts

sintab:	.byte $00,$17,$26,$25,$15,$24,$24,$14
	.byte $24,$23,$14,$23,$13,$23,$23,$13
	.byte $23,$22,$03,$52,$93,$82,$63,$52
	.byte $52,$53,$42,$42,$42,$43,$32,$42
	.byte $32,$32,$32,$32,$32,$32,$22,$32
	.byte $32,$22,$31,$22,$32,$22,$32,$21
	.byte $22,$22,$32,$22,$21,$22,$22,$21
	.byte $32,$22,$22,$21,$22,$21,$22,$22
	.byte $21,$12,$22,$21,$22,$21,$22,$22
	.byte $21,$12,$21,$22,$22,$21,$12,$21
	.byte $22,$21,$12,$21,$22,$21,$12,$21
	.byte $22,$21,$12,$21,$22,$12,$21,$22
	.byte $11,$22,$21,$12,$21,$22,$11,$22
	.byte $21,$12,$21,$22,$10,$29,$17,$26
	.byte $25,$15,$24,$24,$14,$24,$23,$04
	.byte $c3,$93,$73,$63,$53,$52,$43,$43
	.byte $42,$43,$42,$33,$32,$32,$43,$32
	.byte $32,$22,$33,$32,$32,$22,$32,$22
	.byte $32,$22,$32,$22,$22,$32,$21,$22
	.byte $22,$22,$32,$22,$21,$22,$22,$22
	.byte $22,$21,$22,$22,$21,$22,$22,$22
	.byte $21,$22,$11,$22,$22,$21,$22,$22
	.byte $11,$22,$21,$22,$22,$11,$22,$21
	.byte $22,$11,$22,$22,$21,$12,$21,$22
	.byte $11,$22,$21,$12,$21,$22,$21,$12
	.byte $21,$22,$12,$21,$12,$21,$22,$11
	.byte $22,$21,$12,$21,$22,$11,$22,$21
	.byte $12,$20,$2a,$07,$a6,$85,$65,$64
	.byte $54,$54,$44,$43,$44,$43,$33,$43
	.byte $33,$33,$32,$33,$33,$32,$33,$22
	.byte $33,$32,$22,$33,$22,$32,$22,$22
	.byte $33,$22,$22,$22,$32,$22,$22,$22
	.byte $22,$22,$22,$21,$22,$22,$22,$22
	.byte $22,$21,$22,$22,$22,$22,$21,$22
	.byte $22,$11,$22,$22,$21,$22,$12,$21
	.byte $22,$22,$21,$12,$22,$21,$22,$11
	.byte $22,$22,$11,$22,$21,$22,$11,$22
	.byte $22,$11,$22,$21,$12,$21,$22,$11
	.byte $22,$21,$12,$21,$22,$11,$22,$22
	.byte $11,$22,$21,$12,$21,$22,$01,$d2
	.byte $91,$72,$61,$52,$51,$52,$40,$49
	.byte $47,$36,$46,$35,$44,$34,$34,$34
	.byte $33,$24,$33,$33,$23,$33,$33,$22
	.byte $33,$23,$22,$33,$22,$23,$32,$22
	.byte $23,$22,$22,$22,$32,$23,$22,$22
	.byte $22,$22,$22,$22,$22,$22,$22,$12
	.byte $21,$22,$22,$22,$22,$22,$21,$12
	.byte $22,$22,$22,$21,$12,$22,$21,$22
	.byte $12,$21,$22,$22,$11,$22,$22,$21
	.byte $12,$22,$21,$12,$21,$22,$12,$21
	.byte $22,$21,$12,$21,$22,$12,$21,$22
	.byte $11,$22,$21,$12,$21,$22,$11,$22
	.byte $21,$02,$b1,$82,$71,$52,$52,$51
	.byte $52,$41,$42,$41,$32,$41,$32,$31
	.byte $32,$31,$32,$30,$3a,$37,$26,$36
	.byte $24,$35,$24,$34,$23,$34,$23,$24
	.byte $33,$23,$23,$22,$23,$33,$23,$22
	.byte $23,$22,$23,$22,$22,$23,$22,$22
	.byte $22,$22,$22,$23,$22,$12,$22,$22
	.byte $22,$22,$22,$22,$11,$22,$22,$22
	.byte $22,$12,$22,$21,$22,$12,$22,$21
	.byte $22,$12,$22,$21,$12,$22,$21,$22
	.byte $12,$21,$22,$12,$21,$22,$12,$21
	.byte $22,$11,$22,$22,$11,$22,$21,$12
	.byte $21,$22,$22,$01,$22,$91,$82,$61
	.byte $62,$51,$42,$41,$52,$31,$42,$41
	.byte $32,$31,$42,$32,$31,$32,$21,$32
	.byte $31,$32,$21,$32,$21,$32,$21,$32
	.byte $20,$29,$38,$26,$25,$25,$35,$24
	.byte $24,$23,$24,$23,$23,$24,$23,$22
	.byte $23,$23,$23,$22,$23,$23,$22,$22
	.byte $23,$22,$22,$13,$22,$22,$22,$22
	.byte $23,$12,$22,$22,$22,$22,$12,$22
	.byte $21,$22,$12,$22,$22,$22,$12,$22
	.byte $21,$12,$22,$22,$21,$12,$22,$22
	.byte $11,$22,$22,$11,$22,$22,$11,$22
	.byte $22,$11,$22,$22,$21,$02,$d1,$82
	.byte $72,$61,$62,$41,$52,$41,$42,$42
	.byte $41,$32,$41,$32,$31,$32,$31,$32
	.byte $31,$32,$21,$32,$31,$22,$31,$22
	.byte $31,$22,$22,$31,$22,$21,$22,$31
	.byte $22,$21,$22,$21,$22,$30,$2a,$27
	.byte $26,$26,$25,$24,$24,$24,$24,$14
	.byte $23,$23,$23,$23,$23,$23,$23,$13
	.byte $22,$23,$22,$23,$22,$13,$22,$22
	.byte $23,$12,$22,$22,$22,$22,$12,$23
	.byte $22,$12,$22,$22,$21,$12,$22,$22
	.byte $12,$22,$22,$22,$11,$22,$22,$12
	.byte $22,$21,$12,$22,$22,$21,$02,$b2
	.byte $81,$62,$62,$51,$52,$52,$41,$42
	.byte $41,$32,$42,$31,$32,$32,$31,$32
	.byte $31,$32,$31,$32,$22,$31,$22,$31
	.byte $22,$31,$22,$31,$22,$21,$32,$21
	.byte $22,$21,$22,$21,$32,$21,$22,$21
	.byte $22,$21,$22,$22,$21,$22,$21,$22
	.byte $21,$22,$20,$2b,$18,$26,$25,$25
	.byte $25,$24,$24,$14,$23,$24,$23,$23
	.byte $13,$23,$23,$23,$12,$23,$23,$22
	.byte $13,$22,$22,$23,$12,$22,$23,$22
	.byte $12,$22,$22,$12,$22,$22,$22,$12
	.byte $22,$22,$12,$22,$22,$22,$02,$12
	.byte $a2,$71,$72,$52,$52,$51,$42,$42
	.byte $42,$41,$42,$32,$32,$41,$32,$32
	.byte $31,$32,$22,$31,$32,$31,$22,$32
	.byte $21,$32,$21,$22,$32,$21,$22,$31
	.byte $22,$21,$22,$32,$21,$22,$21,$22
	.byte $21,$22,$21,$22,$21,$22,$21,$22
	.byte $21,$22,$21,$22,$21,$22,$21,$22
	.byte $11,$22,$21,$22,$21,$22,$12,$20
	.byte $2b,$28,$26,$16,$25,$24,$25,$14
	.byte $23,$24,$23,$14,$23,$23,$23,$13
	.byte $22,$23,$23,$12,$23,$22,$13,$22
	.byte $23,$22,$12,$22,$23,$22,$02,$e2
	.byte $82,$72,$62,$62,$52,$42,$52,$42
	.byte $42,$32,$42,$32,$42,$31,$32,$32
	.byte $32,$32,$31,$22,$32,$32,$21,$32
	.byte $22,$31,$22,$32,$22,$21,$32,$21
	.byte $22,$22,$31,$22,$22,$21,$22,$21
	.byte $22,$22,$31,$22,$21,$22,$21,$22
	.byte $12,$21,$22,$21,$22,$21,$22,$21
	.byte $22,$21,$12,$21,$22,$21,$22,$21
	.byte $12,$21,$22,$21,$22,$11,$22,$21
	.byte $22,$11,$22,$22,$20,$1c,$28,$27
	.byte $25,$15,$25,$24,$24,$14,$24,$23
	.byte $23,$13,$24,$23,$22,$03,$b3,$93
	.byte $62,$63,$52,$53,$52,$42,$43,$42
	.byte $42,$32,$43,$32,$32,$32,$32,$32
	.byte $32,$32,$32,$22,$32,$32,$22,$32
	.byte $22,$31,$22,$22,$32,$22,$22,$21
	.byte $32,$22,$22,$21,$22,$22,$31,$22
	.byte $22,$21,$22,$22,$21,$22,$22,$21
	.byte $22,$22,$21,$22,$11,$22,$22,$21
	.byte $22,$21,$22,$21,$12,$21,$22,$22
	.byte $21,$12,$21,$22,$21,$22,$11,$22
	.byte $21,$22,$21,$12,$21,$22,$21,$12
	.byte $21,$22,$21,$12,$21,$22,$21,$12
	.byte $22,$20,$2d,$08,$b7,$76,$75,$64
	.byte $55,$54,$44,$53,$44,$33,$43,$33
	.byte $43,$33,$33,$33,$32,$33,$32,$33
	.byte $32,$23,$32,$33,$22,$32,$22,$32
	.byte $23,$22,$32,$22,$22,$32,$22,$22
	.byte $22,$22,$32,$22,$22,$21,$22,$22
	.byte $22,$22,$22,$21,$22,$22,$22,$21
	.byte $22,$22,$22,$21,$22,$12,$21,$22
	.byte $22,$21,$22,$22,$11,$22,$21,$22
	.byte $22,$21,$12,$21,$22,$22,$21,$12
	.byte $21,$22,$21,$12,$22,$21,$22,$11
	.byte $22,$21,$22,$11,$22,$21,$22,$21
	.byte $02,$01,$a2,$71,$72,$51,$52,$51
	.byte $52,$41,$42,$41,$32,$42,$30,$3f
	.byte $39,$47,$36,$25,$35,$34,$34,$34
	.byte $24,$33,$23,$34,$23,$33,$23,$33
	.byte $22,$23,$33,$22,$23,$22,$23,$32
	.byte $22,$23,$22,$22,$22,$22,$22,$23
	.byte $22,$22,$22,$22,$22,$22,$22,$22
	.byte $22,$21,$22,$22,$22,$22,$12,$21
	.byte $22,$22,$22,$22,$21,$12,$22,$21
	.byte $22,$22,$12,$21,$22,$22,$21,$12
	.byte $21,$22,$22,$21,$12,$22,$21,$22
	.byte $11,$22,$22,$21,$22,$01,$e2,$91
	.byte $72,$61,$62,$52,$41,$52,$41,$42
	.byte $41,$32,$41,$32,$31,$42,$31,$32
	.byte $31,$22,$31,$32,$31,$22,$31,$22
	.byte $31,$22,$32,$20,$3a,$27,$26,$35
	.byte $25,$24,$25,$33,$24,$24,$23,$23
	.byte $23,$23,$33,$23,$23,$23,$22,$23
	.byte $22,$23,$22,$23,$12,$22,$23,$22
	.byte $22,$22,$22,$22,$22,$23,$12,$22
	.byte $22,$22,$21,$22,$22,$12,$22,$22
	.byte $22,$22,$11,$22,$22,$22,$22,$11
	.byte $22,$22,$22,$21,$12,$22,$21,$22
	.byte $22,$01,$d2,$82,$71,$62,$62,$51
	.byte $42,$52,$41,$42,$41,$32,$41,$32
	.byte $32,$41,$32,$31,$32,$21,$32,$32
	.byte $31,$22,$31,$32,$21,$32,$21,$22
	.byte $31,$22,$31,$22,$21,$22,$31,$22
	.byte $21,$22,$21,$22,$31,$22,$22,$20
	.byte $2a,$28,$26,$25,$25,$25,$24,$24
	.byte $24,$23,$23,$24,$23,$13,$23,$23
	.byte $23,$22,$23,$22,$23,$12,$23,$22
	.byte $23,$22,$22,$22,$13,$22,$22,$22
	.byte $22,$12,$22,$22,$22,$22,$12,$22
	.byte $22,$22,$22,$22,$02,$b1,$92,$62
	.byte $62,$62,$51,$52,$42,$42,$41,$42
	.byte $32,$42,$31,$32,$42,$31,$32,$32
	.byte $21,$32,$32,$31,$22,$31,$32,$22
	.byte $31,$22,$31,$22,$22,$31,$22,$21
	.byte $22,$31,$22,$21,$22,$22,$31,$22
	.byte $21,$22,$21,$22,$21,$22,$21,$22
	.byte $21,$22,$21,$22,$21,$22,$21,$22
	.byte $21,$22,$22,$20,$1b,$27,$27,$25
	.byte $25,$25,$24,$24,$14,$23,$24,$23
	.byte $23,$23,$13,$23,$23,$23,$22,$23
	.byte $13,$22,$23,$22,$22,$23,$02,$b2
	.byte $82,$73,$52,$62,$52,$42,$52,$42
	.byte $42,$42,$32,$42,$32,$32,$32,$42
	.byte $31,$32,$22,$32,$32,$32,$21,$32
	.byte $32,$22,$31,$22,$32,$21,$22,$32
	.byte $22,$21,$32,$22,$21,$22,$21,$32
	.byte $22,$21,$22,$22,$21,$22,$21,$22
	.byte $21,$22,$22,$21,$22,$21,$22,$21
	.byte $22,$21,$22,$22,$21,$22,$21,$22
	.byte $21,$22,$11,$22,$21,$22,$21,$22
	.byte $21,$22,$11,$22,$21,$22,$22,$20
	.byte $1c,$28,$27,$25,$25,$25,$24,$04
	.byte $b4,$84,$63,$64,$63,$53,$43,$53
	.byte $43,$42,$33,$43,$42,$33,$32,$33
	.byte $32,$32,$33,$32,$32,$32,$32,$23
	.byte $32,$32,$22,$32,$22,$32,$22,$22
	.byte $32,$22,$21,$32,$22,$22,$22,$32
	.byte $22,$21,$22,$22,$22,$21,$32,$22
	.byte $22,$21,$22,$22,$21,$22,$22,$21
	.byte $22,$22,$21,$22,$22,$21,$12,$21
	.byte $22,$22,$21,$22,$21,$22,$22,$21
	.byte $12,$21,$22,$21,$22,$21,$22,$22
	.byte $11,$22,$21,$22,$21,$22,$21,$02
	.byte $61,$b2,$81,$62,$61,$52,$51,$52
	.byte $41,$42,$42,$40,$4f,$38,$47,$36
	.byte $35,$35,$35,$34,$33,$34,$34,$33
	.byte $23,$33,$23,$33,$33,$23,$33,$22
	.byte $23,$32,$23,$22,$33,$22,$22,$32
	.byte $23,$22,$22,$22,$22,$32,$22,$22
	.byte $23,$22,$21,$22,$22,$22,$22,$22
	.byte $22,$22,$22,$21,$22,$22,$22,$22
	.byte $21,$22,$22,$22,$21,$12,$22,$22
	.byte $21,$22,$22,$21,$22,$22,$11,$22
	.byte $21,$22,$22,$21,$22,$21,$22,$02
	.byte $31,$a2,$81,$72,$62,$51,$52,$51
	.byte $42,$41,$42,$41,$32,$42,$31,$42
	.byte $31,$32,$31,$32,$31,$32,$31,$22
	.byte $31,$32,$21,$32,$31,$22,$32,$20
	.byte $2a,$37,$26,$25,$35,$25,$24,$34
	.byte $23,$24,$23,$24,$33,$23,$23,$23
	.byte $22,$23,$23,$22,$23,$22,$23,$22
	.byte $22,$23,$22,$22,$23,$22,$22,$22
	.byte $22,$22,$22,$22,$22,$22,$22,$22
	.byte $22,$22,$22,$22,$12,$21,$22,$22
	.byte $22,$22,$21,$22,$22,$22,$01,$32
	.byte $a2,$82,$61,$62,$62,$41,$52,$52
	.byte $41,$42,$32,$41,$42,$32,$31,$42
	.byte $31,$32,$32,$31,$32,$21,$32,$31
	.byte $32,$22,$31,$22,$31,$22,$31,$22
	.byte $31,$22,$22,$31,$22,$21,$32,$21
	.byte $22,$21,$32,$21,$22,$21,$22,$21
	.byte $22,$32,$20,$2b,$27,$27,$25,$25
	.byte $25,$24,$24,$24,$23,$24,$23,$23
	.byte $23,$23,$23,$23,$22,$23,$23,$12
	.byte $23,$22,$23,$22,$22,$23,$22,$22
	.byte $22,$22,$23,$22,$02,$32,$a2,$82
	.byte $62,$62,$62,$52,$52,$42,$41,$42
	.byte $42,$42,$32,$42,$31,$32,$32,$32
	.byte $42,$21,$32,$32,$31,$32,$22,$32
	.byte $31,$22,$32,$21,$32,$22,$31,$22
	.byte $21,$32,$22,$21,$32,$21,$22,$22
	.byte $31,$22,$21,$22,$22,$31,$22,$21
	.byte $22,$21,$22,$21,$22,$22,$21,$22
	.byte $21,$22,$21,$22,$21,$22,$21,$22
	.byte $21,$22,$21,$22,$22,$20,$2c,$28
	.byte $27,$26,$25,$24,$25,$24,$24,$23
	.byte $24,$03,$43,$b3,$83,$73,$63,$53
	.byte $53,$52,$43,$42,$53,$32,$43,$42
	.byte $32,$42,$33,$32,$32,$32,$32,$32
	.byte $32,$33,$22,$32,$32,$31,$22,$32
	.byte $22,$32,$22,$32,$22,$22,$31,$22
	.byte $22,$32,$22,$21,$32,$22,$22,$21
	.byte $22,$32,$21,$22,$22,$21,$22,$22
	.byte $21,$32,$22,$21,$22,$22,$21,$22
	.byte $21,$22,$22,$21,$22,$21,$22,$21
	.byte $22,$22,$21,$22,$21,$22,$21,$22
	.byte $21,$22,$22,$21,$22,$01,$a2,$91
	.byte $62,$71,$52,$51,$52,$41,$52,$42
	.byte $40,$3f,$49,$47,$36,$35,$45,$35
	.byte $34,$34,$33,$34,$23,$33,$34,$33
	.byte $23,$32,$33,$23,$33,$22,$33,$22
	.byte $23,$32,$22,$33,$22,$22,$22,$33
	.byte $22,$22,$22,$32,$22,$22,$22,$22
	.byte $22,$32,$22,$22,$22,$22,$22,$21
	.byte $22,$22,$22,$22,$22,$21,$22,$32
	.byte $22,$21,$22,$22,$21,$22,$22,$22
	.byte $21,$22,$22,$21,$22,$21,$22,$02
	.byte $c1,$82,$72,$61,$62,$51,$52,$52
	.byte $41,$42,$41,$42,$31,$42,$32,$41
	.byte $32,$31,$32,$31,$32,$31,$32,$32
	.byte $31,$22,$31,$32,$21,$32,$21,$32
	.byte $21,$32,$22,$30,$2a,$37,$27,$25
	.byte $25,$34,$25,$24,$33,$24,$23,$24
	.byte $23,$33,$23,$23,$23,$22,$23,$23
	.byte $32,$23,$22,$22,$23,$22,$22,$23
	.byte $22,$22,$22,$22,$23,$22,$22,$22
	.byte $22,$22,$22,$22,$22,$22,$22,$31
	.byte $02,$c2,$82,$82,$62,$61,$52,$52
	.byte $52,$42,$41,$42,$42,$42,$31,$42
	.byte $32,$31,$42,$32,$31,$32,$32,$31
	.byte $22,$32,$31,$32,$21,$32,$32,$21
	.byte $32,$21,$32,$22,$31,$22,$21,$32
	.byte $22,$31,$22,$21,$22,$31,$22,$21
	.byte $22,$32,$21,$22,$21,$22,$31,$22
	.byte $21,$22,$21,$22,$22,$20,$2b,$38
	.byte $27,$25,$26,$24,$24,$25,$23,$24
	.byte $23,$24,$23,$23,$23,$23,$23,$33
	.byte $02,$d3,$92,$83,$62,$63,$62,$53
	.byte $42,$52,$42,$43,$42,$42,$32,$42
	.byte $32,$42,$32,$32,$32,$32,$32,$32
	.byte $32,$32,$32,$22,$32,$32,$21,$32
	.byte $32,$22,$32,$21,$32,$22,$22,$31
	.byte $22,$32,$21,$22,$32,$21,$22,$22
	.byte $31,$22,$22,$21,$32,$22,$21,$22
	.byte $22,$21,$32,$21,$22,$22,$21,$22
	.byte $21,$22,$31,$22,$22,$21,$22,$21
	.byte $22,$21,$22,$21,$22,$22,$31,$02
	.byte $f1,$a2,$81,$62,$61,$62,$52,$50
	.byte $4e,$59,$47,$46,$45,$35,$44,$34
	.byte $44,$34,$33,$34,$43,$33,$33,$23
	.byte $33,$33,$33,$32,$23,$32,$33,$22
	.byte $33,$22,$32,$23,$32,$22,$32,$23
	.byte $32,$22,$22,$32,$22,$22,$32,$22
	.byte $22,$22,$32,$22,$22,$21,$22,$32
	.byte $22,$22,$22,$21,$32,$22,$22,$22
	.byte $21,$22,$22,$21,$32,$22,$22,$21
	.byte $22,$22,$21,$22,$32,$01,$32,$b2
	.byte $81,$72,$71,$52,$52,$51,$52,$41
	.byte $52,$42,$41,$32,$41,$32,$41,$32
	.byte $42,$31,$32,$31,$32,$31,$32,$32
	.byte $21,$32,$31,$32,$21,$32,$31,$22
	.byte $32,$20,$3a,$28,$36,$25,$35,$25
	.byte $24,$34,$24,$23,$34,$23,$23,$33
	.byte $23,$23,$23,$33,$22,$23,$23,$32
	.byte $23,$22,$22,$23,$32,$22,$23,$22
	.byte $22,$22,$22,$32,$22,$23,$22,$22
	.byte $22,$32,$01,$b2,$92,$82,$62,$62
	.byte $62,$52,$42,$51,$42,$42,$42,$42
	.byte $41,$32,$42,$31,$42,$32,$32,$31
	.byte $32,$32,$31,$32,$32,$31,$32,$22
	.byte $31,$32,$22,$31,$32,$21,$32,$22
	.byte $31,$22,$31,$22,$22,$31,$22,$31
	.byte $22,$22,$31,$22,$21,$32,$21,$22
	.byte $21,$32,$22,$21,$22,$31,$22,$21
	.byte $22,$22,$30,$2b,$28,$27,$26,$35
	.byte $24,$25,$24,$24,$33,$04,$e3,$a3
	.byte $83,$73,$63,$53,$63,$53,$42,$53
	.byte $42,$43,$42,$43,$32,$43,$32,$42
	.byte $32,$32,$33,$32,$42,$32,$22,$32
	.byte $32,$32,$32,$32,$22,$32,$32,$22
	.byte $32,$21,$32,$32,$22,$32,$22,$31
	.byte $22,$22,$32,$21,$32,$22,$22,$31
	.byte $22,$22,$31,$22,$22,$22,$31,$22
	.byte $21,$32,$22,$21,$22,$22,$31,$22
	.byte $22,$21,$32,$21,$22,$22,$31,$02
	.byte $41,$b2,$81,$82,$62,$61,$52,$51
	.byte $52,$51,$42,$42,$41,$42,$41,$42
	.byte $31,$42,$32,$30,$30,$49,$37,$36
	.byte $35,$35,$34,$34,$24,$34,$34,$33
	.byte $23,$33,$33,$23,$33,$23,$33,$33
	.byte $22,$33,$22,$23,$32,$23,$32,$22
	.byte $32,$23,$22,$32,$22,$22,$32,$23
	.byte $22,$32,$22,$22,$32,$22,$22,$21
	.byte $32,$22,$22,$22,$32,$22,$21,$32
	.byte $02,$d2,$92,$81,$72,$62,$62,$51
	.byte $52,$52,$42,$41,$52,$42,$31,$42
	.byte $42,$31,$42,$32,$31,$42,$32,$31
	.byte $32,$31,$32,$32,$31,$32,$21,$32
	.byte $32,$31,$22,$31,$32,$22,$31,$22
	.byte $31,$32,$21,$32,$22,$31,$22,$21
	.byte $32,$21,$32,$22,$30,$2a,$28,$36
	.byte $26,$25,$35,$24,$24,$34,$23,$24
	.byte $33,$23,$23,$33,$23,$23,$33,$03
	.byte $32,$b3,$82,$73,$72,$63,$52,$63
	.byte $42,$52,$42,$52,$43,$42,$42,$32
	.byte $42,$32,$42,$32,$42,$32,$32,$32
	.byte $32,$32,$32,$32,$31,$32,$32,$32
	.byte $22,$32,$31,$22,$32,$32,$21,$32
	.byte $32,$22,$31,$22,$32,$21,$32,$22
	.byte $31,$22,$32,$21,$22,$32,$21,$32
	.byte $22,$21,$32,$21,$32,$22,$21,$32
	.byte $21,$22,$32,$21,$32,$01,$e2,$92
	.byte $81,$72,$71,$52,$61,$52,$52,$41
	.byte $52,$41,$42,$42,$40,$3d,$48,$37
	.byte $46,$35,$45,$34,$34,$34,$34,$34
	.byte $33,$33,$33,$33,$33,$33,$33,$23
	.byte $32,$33,$33,$22,$33,$32,$22,$33
	.byte $22,$32,$33,$22,$32,$22,$32,$22
	.byte $33,$22,$32,$22,$22,$32,$22,$32
	.byte $21,$32,$22,$22,$32,$22,$32,$22
	.byte $31,$02,$72,$b2,$92,$81,$72,$62
	.byte $62,$51,$52,$52,$41,$52,$42,$42
	.byte $41,$42,$32,$41,$32,$41,$32,$42
	.byte $31,$32,$32,$31,$42,$32,$31,$32
	.byte $21,$32,$32,$31,$32,$31,$22,$32
	.byte $31,$32,$21,$32,$31,$22,$32,$21
	.byte $32,$31,$22,$32,$20,$3a,$27,$37
	.byte $25,$35,$25,$34,$24,$34,$23,$34
	.byte $23,$33,$23,$33,$03,$03,$a3,$93
	.byte $72,$73,$62,$53,$62,$53,$42,$52
	.byte $43,$52,$42,$42,$33,$42,$42,$32
	.byte $42,$32,$42,$32,$32,$32,$42,$32
	.byte $32,$32,$32,$32,$31,$32,$32,$22
	.byte $32,$32,$31,$32,$22,$32,$32,$21
	.byte $32,$32,$21,$32,$32,$22,$31,$22
	.byte $32,$31,$22,$32,$21,$32,$22,$31
	.byte $22,$32,$21,$32,$31,$02,$e2,$a1
	.byte $92,$71,$62,$62,$61,$52,$51,$52
	.byte $52,$41,$42,$41,$42,$42,$41,$42
	.byte $31,$42,$32,$40,$3c,$38,$47,$36
	.byte $35,$35,$34,$34,$34,$34,$33,$34
	.byte $33,$33,$33,$23,$33,$33,$33,$32
	.byte $23,$33,$32,$23,$32,$32,$23,$32
	.byte $32,$23,$32,$32,$22,$32,$22,$32
	.byte $33,$22,$32,$32,$02,$d2,$a2,$81
	.byte $72,$72,$62,$52,$62,$52,$42,$51
	.byte $42,$52,$42,$42,$41,$42,$32,$42
	.byte $41,$32,$42,$32,$31,$42,$32,$31
	.byte $32,$32,$41,$32,$32,$31,$32,$32
	.byte $21,$32,$32,$31,$32,$31,$32,$22
	.byte $31,$32,$32,$21,$32,$31,$32,$22
	.byte $31,$32,$21,$32,$32,$21,$32,$31
	.byte $32,$02,$d0,$a4,$8a,$77,$76,$66
	.byte $55,$64,$55,$54,$43,$54,$43,$44
	.byte $43,$43,$43,$43,$43,$33,$42,$43
	.byte $33,$32,$43,$32,$33,$42,$32,$33
	.byte $32,$32,$32,$32,$33,$32,$32,$32
	.byte $32,$32,$32,$32,$32,$22,$32,$32
	.byte $32,$32,$32,$21,$32,$32,$32,$22
	.byte $32,$31,$32,$32,$02,$a2,$d1,$a2
	.byte $82,$72,$71,$62,$62,$51,$62,$52
	.byte $41,$52,$42,$52,$41,$42,$41,$42
	.byte $32,$41,$42,$32,$41,$32,$42,$31
	.byte $42,$31,$32,$32,$41,$32,$31,$32
	.byte $32,$31,$32,$32,$31,$32,$31,$32
	.byte $32,$30,$3c,$38,$37,$35,$26,$34
	.byte $35,$34,$34,$33,$34,$33,$04,$d3
	.byte $a3,$93,$73,$73,$62,$63,$63,$52
	.byte $53,$52,$53,$42,$52,$43,$42,$42
	.byte $43,$42,$42,$42,$32,$42,$32,$42
	.byte $32,$42,$32,$42,$32,$32,$32,$42
	.byte $32,$32,$32,$32,$32,$31,$42,$32
	.byte $32,$32,$31,$32,$32,$32,$32,$31
	.byte $32,$32,$31,$32,$32,$02,$f1,$b2
	.byte $82,$81,$72,$72,$61,$62,$52,$51
	.byte $52,$52,$51,$42,$51,$42,$42,$41
	.byte $42,$42,$41,$42,$41,$32,$42,$41
	.byte $32,$41,$32,$32,$41,$32,$32,$40
	.byte $33,$39,$48,$36,$35,$35,$35,$34
	.byte $44,$34,$33,$34,$33,$33,$34,$33
	.byte $33,$42,$03,$13,$c3,$92,$93,$72
	.byte $73,$62,$63,$62,$52,$63,$52,$42
	.byte $52,$52,$43,$42,$52,$42,$42,$42
	.byte $42,$32,$42,$42,$42,$32,$42,$42
	.byte $31,$42,$32,$42,$32,$32,$41,$32
	.byte $32,$42,$32,$31,$42,$32,$32,$31
	.byte $42,$32,$32,$31,$42,$02,$d1,$e2
	.byte $b2,$91,$82,$72,$71,$62,$62,$61
	.byte $52,$52,$51,$52,$52,$51,$42,$51
	.byte $42,$42,$41,$42,$42,$41,$42,$41
	.byte $42,$32,$41,$42,$42,$30,$4c,$38
	.byte $47,$36,$45,$35,$44,$34,$44,$34
	.byte $33,$44,$33,$43,$33,$43,$03,$33
	.byte $d3,$a3,$92,$83,$72,$73,$62,$63
	.byte $62,$62,$53,$52,$52,$52,$53,$42
	.byte $52,$42,$42,$52,$42,$42,$42,$42
	.byte $42,$42,$42,$42,$42,$32,$42,$42
	.byte $42,$31,$42,$42,$32,$42,$41,$32
	.byte $42,$32,$42,$41,$02,$12,$d2,$a1
	.byte $92,$82,$71,$72,$72,$62,$61,$62
	.byte $52,$51,$62,$52,$51,$42,$52,$51

spritab:	; sprite shape data
	.byte $00,$00,$11,$00,$00,$3f,$00,$05
	.byte $4f,$01,$0f,$6f,$05,$0f,$7f,$0f
	.byte $1f,$ff,$0f,$2f,$ff,$0f,$3f,$ff
	.byte $0f,$5f,$ff,$0f,$6f,$ff,$0f,$7f
	.byte $ff,$0f,$ff,$ff,$1f,$ff,$ff,$2f
	.byte $ff,$ff,$4f,$ff,$ff,$5f,$ff,$ff
	.byte $6f,$ff,$ff,$7f,$ff,$ff,$ff,$ff
	.byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
	.byte $f0,$f7,$af,$f0,$f7,$af,$f0,$ff
	.byte $af,$f0,$ff,$af,$f1,$ff,$af,$f1
	.byte $ff,$af,$f1,$ff,$af,$f2,$ff,$af
	.byte $f2,$ff,$af,$f2,$ff,$af,$f3,$ff
	.byte $af,$f3,$ff,$9f,$f3,$ff,$9f,$f3
	.byte $ff,$9f,$f4,$ff,$9f,$f4,$ff,$9f
	.byte $f4,$ff,$8f,$f4,$ff,$8f,$f4,$ff
	.byte $8f,$f5,$ff,$8f,$f5,$ff,$0f,$ff
	.byte $ff,$ff,$fd,$ff,$ff,$fd,$ff,$ff
	.byte $fc,$ff,$ff,$fc,$ff,$ff,$fb,$ff
	.byte $ff,$fa,$ff,$ff,$fa,$ff,$ff,$f9
	.byte $ff,$ff,$f9,$ff,$ff,$f8,$ff,$ff
	.byte $f0,$ff,$ff,$e0,$ff,$fe,$c0,$ff
	.byte $fd,$a0,$ff,$fc,$90,$ff,$ec,$00
	.byte $ff,$cb,$00,$ff,$aa,$00,$ff,$89
	.byte $00,$df,$08,$00,$af,$00,$00,$ff
	.byte $88,$00,$00,$af,$00,$00,$bf,$0c
	.byte $00,$df,$0f,$08,$ef,$0f,$0c,$ff
	.byte $8f,$0f,$ff,$9f,$0f,$ff,$af,$0f
	.byte $ff,$cf,$0f,$ff,$df,$0f,$ff,$ef
	.byte $0f,$ff,$ff,$0f,$ff,$ff,$8f,$ff
	.byte $ff,$9f,$ff,$ff,$bf,$ff,$ff,$cf
	.byte $ff,$ff,$df,$ff,$ff,$ef,$ff,$ff
	.byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
	.byte $3f,$fe,$f0,$3f,$fe,$f0,$3f,$ff
	.byte $f0,$3f,$ff,$f0,$3f,$ff,$f8,$3f
	.byte $ff,$f8,$3f,$ff,$f8,$3f,$ff,$f9
	.byte $3f,$ff,$f9,$3f,$ff,$f9,$3f,$ff
	.byte $fa,$2f,$ff,$fa,$2f,$ff,$fa,$2f
	.byte $ff,$fa,$2f,$ff,$fb,$2f,$ff,$fb
	.byte $1f,$ff,$fb,$1f,$ff,$fb,$1f,$ff
	.byte $fb,$1f,$ff,$fc,$0f,$ff,$fc,$ff
	.byte $f6,$ff,$ff,$f6,$ff,$ff,$f5,$ff
	.byte $ff,$f5,$ff,$ff,$f4,$ff,$ff,$f3
	.byte $ff,$ff,$f3,$ff,$ff,$f2,$ff,$ff
	.byte $f2,$ff,$ff,$f1,$ff,$ff,$f0,$ff
	.byte $ff,$70,$ff,$ff,$50,$f7,$ff,$30
	.byte $f6,$ff,$20,$f5,$ff,$00,$75,$ff
	.byte $00,$54,$ff,$00,$33,$ff,$00,$12
	.byte $ff,$00,$01,$6f,$00,$00,$3f,$ff
	.byte $f0,$80,$03,$f0,$90,$06,$f0,$a1
	.byte $0f,$f0,$b3,$0f,$f0,$c5,$0f,$f0
	.byte $c7,$0f,$f2,$df,$0f,$f3,$ef,$0f
	.byte $f5,$ff,$0f,$f7,$ff,$0f,$ff,$ff
	.byte $8f,$ff,$ff,$9f,$ff,$ff,$9f,$ff
	.byte $ff,$af,$ff,$ff,$af,$ff,$ff,$bf
	.byte $ff,$ff,$cf,$ff,$ff,$cf,$ff,$ff
	.byte $df,$ff,$ff,$df,$ff,$ff,$ef,$00
	.byte $f1,$ff,$cf,$f1,$ff,$bf,$f1,$ff
	.byte $bf,$f1,$ff,$bf,$f2,$ff,$bf,$f2
	.byte $ff,$bf,$f2,$ff,$af,$f2,$ff,$af
	.byte $f2,$ff,$af,$f3,$ff,$af,$f3,$ff
	.byte $9f,$f3,$ff,$9f,$f3,$ff,$9f,$f3
	.byte $ff,$8f,$f3,$ff,$8f,$f3,$ff,$8f
	.byte $f3,$ff,$0f,$f3,$ff,$0f,$f3,$ef
	.byte $0f,$f3,$ef,$0f,$f3,$ef,$0f,$00
	.byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
	.byte $fe,$ff,$ff,$fd,$ff,$ff,$fc,$ff
	.byte $ff,$fb,$ff,$ff,$f9,$ff,$ff,$f8
	.byte $ff,$ff,$f0,$ff,$fe,$f0,$ff,$fd
	.byte $f0,$ff,$fc,$f0,$ff,$fa,$f0,$ff
	.byte $f9,$f0,$ff,$f8,$f0,$fe,$f0,$f0
	.byte $fd,$f0,$c0,$fb,$f0,$80,$fa,$c0
	.byte $00,$f8,$00,$00,$80,$00,$00,$00
	.byte $0a,$10,$f0,$0d,$20,$f0,$0f,$38
	.byte $f0,$0f,$4a,$f0,$0f,$5c,$f0,$0f
	.byte $5e,$f0,$0f,$6f,$f9,$0f,$7f,$fa
	.byte $0f,$ff,$fc,$0f,$ff,$fe,$1f,$ff
	.byte $ff,$2f,$ff,$ff,$2f,$ff,$ff,$3f
	.byte $ff,$ff,$3f,$ff,$ff,$4f,$ff,$ff
	.byte $5f,$ff,$ff,$5f,$ff,$ff,$6f,$ff
	.byte $ff,$6f,$ff,$ff,$7f,$ff,$ff,$00
	.byte $5f,$ff,$f8,$4f,$ff,$f8,$4f,$ff
	.byte $f8,$4f,$ff,$f8,$4f,$ff,$f9,$4f
	.byte $ff,$f9,$3f,$ff,$f9,$3f,$ff,$f9
	.byte $3f,$ff,$f9,$3f,$ff,$fa,$2f,$ff
	.byte $fa,$2f,$ff,$fa,$2f,$ff,$fa,$1f
	.byte $ff,$fa,$1f,$ff,$fa,$1f,$ff,$fa
	.byte $0f,$ff,$fa,$0f,$ff,$fa,$0f,$7f
	.byte $fa,$0f,$7f,$fa,$0f,$7f,$fa,$00
	.byte $ff,$ff,$ff,$ff,$ff,$ff,$f7,$ff
	.byte $ff,$f6,$ff,$ff,$f5,$ff,$ff,$f4
	.byte $ff,$ff,$f2,$ff,$ff,$f1,$ff,$ff
	.byte $f0,$ff,$ff,$f0,$f7,$ff,$f0,$f6
	.byte $ff,$f0,$f5,$ff,$f0,$f3,$ff,$f0
	.byte $f2,$ff,$f0,$f1,$ff,$f0,$f0,$f7
	.byte $50,$f0,$f6,$10,$f0,$f4,$00,$50
	.byte $f3,$00,$00,$f1,$00,$00,$10,$00

data:	.byte $04,$04,$05,$04,$04,$05,$04,$04
	.byte $04,$04,$04,$04,$04,$04,$04,$04
	.byte $03,$04,$04,$04,$04,$04,$04,$00
	.byte $12,$0d,$0b,$0a,$08,$08,$07,$07
	.byte $06,$06,$06,$06,$06,$05,$05,$05
	.byte $05,$05,$05,$05,$05,$04,$05,$04
	.byte $05,$04,$04,$05,$04,$04,$04,$05
	.byte $04,$04,$04,$04,$04,$04,$05,$00
	.byte $19,$0f,$0c,$0a,$09,$08,$08,$07
	.byte $07,$07,$06,$06,$06,$06,$06,$05
	.byte $05,$06,$05,$05,$05,$05,$05,$04
	.byte $05,$05,$05,$04,$05,$04,$05,$04
	.byte $05,$04,$05,$05,$00,$15,$0f,$0c
	.byte $0a,$0a,$08,$08,$08,$07,$07,$07
	.byte $06,$07,$06,$06,$06,$05,$06,$05
	.byte $06,$05,$06,$05,$05,$05,$05,$05
	.byte $05,$05,$05,$05,$06,$00,$1c,$11
	.byte $0d,$0c,$0a,$0a,$09,$08,$08,$08
	.byte $07,$07,$07,$07,$06,$07,$06,$06
	.byte $07,$06,$06,$06,$05,$06,$06,$06
	.byte $06,$06,$00,$23,$14,$0f,$0d,$0c
	.byte $0b,$0a,$09,$09,$09,$09,$08,$08
	.byte $07,$08,$07,$08,$07,$07,$07,$07
	.byte $07,$08,$00,$20,$16,$11,$10,$0e
	.byte $0d,$0c,$0b,$0c,$0a,$0b,$0a,$0a
	.byte $0b,$0a,$0a,$00,$bb,$a3,$86,$65
	.byte $40,$18,$ed,$bf,$8e,$5b,$26,$ef
	.byte $b5,$7a,$3d,$fe,$bd,$7a,$36,$f0
	.byte $a9,$60,$16,$cb,$7e,$30,$e1,$91
	.byte $40,$ee,$9a,$45,$ef,$98,$40,$e8
	.byte $8f,$35,$da,$7e,$21,$c4,$66,$07
	.byte $a7,$47,$e6,$84,$22,$bf,$5c,$f8
	.byte $93,$2e,$c8,$62,$fb,$94,$2d,$c5
	.byte $5d,$f4,$8b,$22,$b8,$4e,$e4,$79
	.byte $0e,$a3,$38,$cc,$60,$f4,$88,$1c
	.byte $af,$42,$d5,$68,$fb,$8e,$21,$b4
	.byte $47,$da,$6d,$00,$f5,$f5,$f5,$f5
	.byte $f5,$f5,$f4,$f4,$f4,$f4,$f4,$f3
	.byte $f3,$f3,$f3,$f2,$f2,$f2,$f2,$f1
	.byte $f1,$f1,$f1,$f0,$f0,$f0,$ef,$ef
	.byte $ef,$ee,$ee,$ee,$ed,$ed,$ed,$ec
	.byte $ec,$ec,$eb,$eb,$eb,$ea,$ea,$ea
	.byte $e9,$e9,$e8,$e8,$e8,$e7,$e7,$e6
	.byte $e6,$e6,$e5,$e5,$e4,$e4,$e4,$e3
	.byte $e3,$e2,$e2,$e2,$e1,$e1,$e0,$e0
	.byte $e0,$df,$df,$de,$de,$dd,$dd,$dd
	.byte $dc,$dc,$db,$db,$da,$da,$da,$d9
	.byte $d9,$d8,$d8,$d8,$10,$17,$1c,$20
	.byte $24,$27,$2a,$2d,$30,$32,$34,$36
	.byte $39,$3a,$3c,$3e,$40,$42,$43,$45
	.byte $46,$48,$49,$4a,$4c,$4d,$4e,$4f
	.byte $50,$51,$53,$54,$55,$56,$57,$57
	.byte $58,$59,$5a,$5b,$5c,$5c,$5d,$5e
	.byte $5f,$5f,$60,$61,$61,$62,$62,$63
	.byte $64,$64,$65,$65,$66,$66,$66,$67
	.byte $67,$68,$68,$68,$69,$69,$69,$6a
	.byte $6a,$6a,$6a,$6b,$6b,$6b,$6b,$6b
	.byte $6c,$6c,$6c,$6c,$6c,$6c,$6c,$6c
	.byte $6c,$6c,$6c,$6c,$08,$b9,$50,$b9
	.byte $f8,$cd,$60,$cd,$e0,$d7,$78,$d7
	.byte $c8,$dd,$90,$dd,$01,$3b,$32,$00
	.byte $00,$ff,$c8,$00,$18,$00,$81,$ff
	.byte $00,$00,$00,$00,$00,$00,$00,$00
	.byte $43,$43,$43,$43,$43,$43,$43,$43
	.byte $44,$44,$44,$44,$44,$44,$44,$44
	.byte $45,$45,$45,$45,$45,$45,$45,$45
	.byte $47,$47,$47,$47,$47,$47,$47,$47
	.byte $48,$48,$48,$48,$48,$48,$48,$48
	.byte $49,$49,$49,$49,$49,$49,$49,$49
	.byte $4a,$4a,$4a,$4a,$4a,$4a,$4a,$4a
	.byte $4c,$4c,$4c,$4c,$4c,$4c,$4c,$4c
	.byte $4d,$4d,$4d,$4d,$4d,$4d,$4d,$4d
	.byte $4e,$4e,$4e,$4e,$4e,$4e,$4e,$4e
	.byte $4f,$4f,$4f,$4f,$4f,$4f,$4f,$4f
	.byte $a7,$a6,$a5,$a4,$a3,$a2,$a1,$a0
	.byte $67,$66,$65,$64,$63,$62,$61,$60
	.byte $27,$26,$25,$24,$23,$22,$21,$20
	.byte $e7,$e6,$e5,$e4,$e3,$e2,$e1,$e0
	.byte $a7,$a6,$a5,$a4,$a3,$a2,$a1,$a0
	.byte $67,$66,$65,$64,$63,$62,$61,$60
	.byte $27,$26,$25,$24,$23,$22,$21,$20
	.byte $e7,$e6,$e5,$e4,$e3,$e2,$e1,$e0
	.byte $a7,$a6,$a5,$a4,$a3,$a2,$a1,$a0
	.byte $67,$66,$65,$64,$63,$62,$61,$60
	.byte $27,$26,$25,$24,$23,$22,$21,$20
	.byte $5d,$5d,$5d,$5d,$5d,$5d,$5d,$5d
	.byte $5c,$5c,$5c,$5c,$5c,$5c,$5c,$5c
	.byte $5b,$5b,$5b,$5b,$5b,$5b,$5b,$5b
	.byte $59,$59,$59,$59,$59,$59,$59,$59
	.byte $58,$58,$58,$58,$58,$58,$58,$58
	.byte $57,$57,$57,$57,$57,$57,$57,$57
	.byte $56,$56,$56,$56,$56,$56,$56,$56
	.byte $54,$54,$54,$54,$54,$54,$54,$54
	.byte $53,$53,$53,$53,$53,$53,$53,$53
	.byte $52,$52,$52,$52,$52,$52,$52,$52
	.byte $51,$51,$51,$51,$51,$51,$51,$51

fills:	.byte $0,$1,$3,$7,$f,$1f,$3f,$7f
	.byte $80,$c0,$e0,$f0,$f8,$fc,$fe,$ff
PIAtable:
	.byte $34,$fe,$04,$ff,$00,$ff,$00
	.byte $dc,$04,$fe,$04

coords:	.byte $60,$61,$62,$63,$64,$65,$66,$67
	.byte $a0,$a1,$a2,$a3,$a4,$a5,$a6,$a7
	.byte $e0,$e1,$e2,$e3,$e4,$e5,$e6,$e7
	.byte $20,$21,$22,$23,$24,$25,$26,$27
	.byte $60,$61,$62,$63,$64,$65,$66,$67
	.byte $a0,$a1,$a2,$a3,$a4,$a5,$a6,$a7
	.byte $e0,$e1,$e2,$e3,$e4,$e5,$e6,$e7
	.byte $20,$21,$22,$23,$24,$25,$26,$27
	.byte $60,$61,$62,$63,$64,$65,$66,$67
	.byte $a0,$a1,$a2,$a3,$a4,$a5,$a6,$a7
	.byte $e0,$e1,$e2,$e3,$e4,$e5,$e6,$e7

sintalo:
	.byte <(sintbl+$0e93),<(sintbl+$1084),<(sintbl+$11a7),<(sintbl+$1321)
	.byte <(sintbl+$1540),<(sintbl+$1598),<(sintbl+$15ef),<(sintbl+$1645)
	.byte <(sintbl+$169a),<(sintbl+$187e),<(sintbl+$1960),<(sintbl+$0af4)
	.byte <(sintbl+$19f0),<(sintbl+$1a7a),<(sintbl+$1abd),<(sintbl+$0cfb)
	.byte <(sintbl+$1bb5),<(sintbl+$0dc8),<(sintbl+$1c5b),<(sintbl+$1c8e)
	.byte <(sintbl+$1cbf),<(sintbl+$1ced)

sintahi:
	.byte >(sintbl+$0e93),>(sintbl+$1084),>(sintbl+$11a7),>(sintbl+$1321)
	.byte >(sintbl+$1540),>(sintbl+$1598),>(sintbl+$15ef),>(sintbl+$1645)
	.byte >(sintbl+$169a),>(sintbl+$187e),>(sintbl+$1960),>(sintbl+$0af4)
	.byte >(sintbl+$19f0),>(sintbl+$1a7a),>(sintbl+$1abd),>(sintbl+$0cfb)
	.byte >(sintbl+$1bb5),>(sintbl+$0dc8),>(sintbl+$1c5b),>(sintbl+$1c8e)
	.byte >(sintbl+$1cbf),>(sintbl+$1ced)

coltab:	.byte $34,$0d,$0e,$0d,$64,$05,$2e,$65
	.byte $3e,$59,$46,$51,$4e,$49,$56,$41
	.byte $5e,$3d,$5e,$39,$66,$35,$66,$35
	.byte $66,$35,$66,$35,$66,$35,$66,$39
	.byte $5e,$3d,$5e,$41,$56,$49,$4e,$51
	.byte $46,$59,$3e,$65,$2e,$7d,$0e,$0d
	.byte $00,$10,$fc,$fc
coltae:

maplen:	.byte $8c,$01,$01,$03,$01,$02,$02,$01
	.byte $02,$01,$01,$01,$01,$02,$01,$02
	.byte $1e,$01,$01,$01,$04,$05,$04,$14
	.byte $05,$01,$01,$01,$03,$01,$06,$01
	.byte $01,$01,$01,$01,$01,$ac,$01,$01
	.byte $01,$01,$01,$01,$01,$07,$01,$01
	.byte $7a,$01,$01,$01,$02,$01,$01,$01
	.byte $01,$05,$02,$1e,$03,$01,$02,$02
	.byte $01,$01,$03,$02,$01,$02,$02,$01
	.byte $01,$02,$02,$01,$01,$04,$04,$0f
	.byte $02,$90,$01,$02,$02,$01,$01,$02
	.byte $01,$01,$ff,$4d,$03,$03,$01,$04
	.byte $02,$01,$01,$03,$01,$03,$01,$43
	.byte $06,$01,$03,$0d,$01,$01,$04,$03
	.byte $02,$01,$c1,$01,$01,$02,$04,$02
	.byte $02,$07,$01,$03,$21,$01,$0a,$02
	.byte $09,$08,$08,$01,$02,$01,$01,$01
	.byte $02,$04,$04,$01,$04,$01,$01,$02
	.byte $01,$02,$01,$03,$02,$01,$27,$04
	.byte $c7,$01,$02,$01,$01,$0d,$01,$01
	.byte $01,$03,$03,$01,$01,$01,$01,$01
	.byte $02,$01,$01,$01,$02,$03,$01,$02
	.byte $02,$02,$02,$01,$01,$ff,$13,$01
	.byte $01,$01,$01,$01,$02,$7e,$01,$03
	.byte $05,$02,$04,$04,$b0,$01,$01,$04
	.byte $02,$03,$0a,$02,$01,$01,$01,$05
	.byte $01,$10,$01,$01,$02,$02,$01,$01
	.byte $04,$01,$02,$02,$02,$02,$01,$02
	.byte $01,$01,$03,$01,$03,$01,$01,$01
	.byte $02,$01,$01,$01,$03,$01,$01,$01
	.byte $01,$05,$03,$01,$02,$01,$02,$03
	.byte $01,$02,$01,$07,$02,$01,$09,$05
	.byte $18,$01,$01,$02,$06,$01,$01,$01
	.byte $01,$01,$b9,$01,$02,$01,$03,$01
	.byte $01,$05,$02,$03,$01,$01,$01,$04
	.byte $01,$01,$03,$07,$01,$03,$08,$01
	.byte $02,$01,$01,$02,$02,$01,$01,$01
	.byte $02,$01,$01,$ff,$0a,$01,$01,$96
	.byte $01,$02,$06,$06,$02,$01,$01,$01
	.byte $03,$02,$01,$03,$01,$0f,$01,$81
	.byte $01,$01,$0f,$04,$0e,$02,$0a,$03
	.byte $01,$01,$01,$01,$03,$02,$01,$01
	.byte $01,$03,$01,$01,$01,$01,$01,$02
	.byte $01,$03,$01,$02,$01,$02,$17,$01
	.byte $01,$03,$02,$06,$01,$01,$02,$01
	.byte $02,$02,$02,$01,$01,$02,$02,$01
	.byte $04,$01,$02,$01,$12,$01,$01,$02
	.byte $05,$01,$01,$03,$02,$02,$01,$0e
	.byte $01,$01,$01,$01,$01,$01,$01,$01
	.byte $c2,$01,$01,$02,$01,$04,$01,$02
	.byte $01,$03,$01,$02,$0a,$01,$02,$01
	.byte $02,$01,$01,$01,$01,$01,$fa,$01
	.byte $01,$02,$02,$02,$01,$02,$7e,$01
	.byte $22,$02,$06,$02,$05,$07,$01,$02
	.byte $01,$01,$01,$01,$03,$01,$01,$03
	.byte $01,$7d,$04,$08,$02,$01,$01,$01
	.byte $02,$02,$01,$01,$08,$01,$01,$03
	.byte $52,$01,$0f,$04,$22,$03,$01,$03
	.byte $f3,$02,$02,$01,$02,$01,$03,$01
	.byte $02,$01,$01,$01,$27,$01,$68,$02
	.byte $04,$02,$01,$01,$02,$03,$03,$4b
	.byte $01,$01,$01,$03,$02,$02,$05,$72
	.byte $0d,$01,$01,$01,$01,$02,$03,$01
	.byte $01,$01,$01,$02,$30,$03,$03,$01
	.byte $01,$04,$02,$80,$01,$01,$03,$02
	.byte $02,$01,$01,$01,$02,$01,$01,$01
	.byte $01,$01,$01,$02,$02,$02,$03,$02
	.byte $01,$01,$01,$01,$07,$01,$01,$02
	.byte $01,$01,$02,$02,$01,$01,$03,$01
	.byte $01,$01,$01,$01,$02,$01,$02,$01
	.byte $03,$01,$04,$07,$03,$03,$ff,$47
	.byte $03,$04,$08,$02,$01,$01,$01,$03
	.byte $01,$25,$01,$01,$01,$01,$02,$03
	.byte $03,$01,$02,$01,$45,$01,$0a,$03
	.byte $01,$02,$01,$02,$03,$02,$02,$01
	.byte $03,$03,$02,$01,$01,$01,$01,$02
	.byte $02,$03,$01,$02,$04,$01,$01,$01
	.byte $01,$01,$01,$01,$01,$02,$05,$05
	.byte $11,$04,$02,$03,$02,$01,$01,$01
	.byte $01,$01,$04,$01,$01,$01,$6d,$01
	.byte $01,$02,$02,$02,$03,$03,$03,$01
	.byte $16,$01,$01,$01,$01,$01,$01,$02
	.byte $02,$01,$14,$01,$02,$01,$03,$02
	.byte $01,$01,$02,$01,$02,$01,$01,$01
	.byte $02,$02,$03,$2a,$04,$05,$67,$01
	.byte $01,$01,$03,$01,$02,$01,$02,$15
	.byte $01,$01,$06,$01,$01,$01,$01,$02
	.byte $01,$01,$01,$02,$01,$0a,$01,$01
	.byte $01,$04,$01,$01,$06,$03,$01,$01
	.byte $01,$02,$01,$01,$07,$02,$01,$01
	.byte $ff,$3c,$02,$04,$05,$04,$04,$04
	.byte $0c,$04,$04,$04,$02,$03,$01,$02
	.byte $01,$04,$02,$01,$01,$01,$02,$01
	.byte $01,$01,$01,$03,$01,$01,$01,$02
	.byte $01,$03,$08,$44,$05,$01,$02,$02
	.byte $02,$24,$02,$98,$02,$01,$02,$05
	.byte $01,$02,$01,$01,$02,$01,$01,$02
	.byte $07,$03,$01,$02,$01,$01,$08,$01
	.byte $04,$03,$04,$01,$03,$02,$01,$01
	.byte $01,$03,$02,$02,$07,$01,$01,$01
	.byte $01,$01,$01,$27,$01,$02,$02,$03
	.byte $04,$0b,$01,$01,$02,$02,$04,$2d
	.byte $01,$01,$05,$03,$03,$06,$05,$37
	.byte $01,$02,$04,$04,$04,$01,$01,$01
	.byte $01,$11,$01,$01,$01,$01,$04,$03
	.byte $01,$03,$03,$02,$21,$02,$02,$02
	.byte $ff,$53,$01,$03,$04,$02,$01,$02
	.byte $01,$01,$01,$01,$01,$01,$08,$01
	.byte $02,$02,$09,$02,$01,$05,$07,$03
	.byte $01,$01,$01,$02,$0f,$05,$01,$01
	.byte $0e,$01,$02,$01,$01,$02,$01,$01
	.byte $01,$05,$02,$47,$02,$39,$02,$03
	.byte $02,$03,$07,$04,$01,$02,$02,$02
	.byte $04,$01,$04,$01,$01,$07,$06,$02
	.byte $01,$02,$01,$01,$02,$0a,$03,$03
	.byte $01,$01,$02,$02,$02,$01,$01,$03
	.byte $03,$01,$01,$01,$0c,$05,$03,$01
	.byte $02,$01,$01,$01,$01,$0f,$01,$01
	.byte $01,$01,$01,$04,$04,$02,$01,$1b
	.byte $01,$01,$01,$02,$24,$04,$02,$09
	.byte $01,$02,$09,$05,$09,$01,$02,$03
	.byte $02,$02,$01,$02,$01,$06,$01,$04
	.byte $02,$4a,$01,$03,$01,$06,$01,$01
	.byte $01,$0e,$01,$06,$03,$15,$01,$01
	.byte $04,$01,$07,$01,$02,$01,$02,$02
	.byte $02,$01,$02,$03,$01,$04,$01,$01
	.byte $01,$01,$01,$04,$02,$01,$01,$01
	.byte $02,$02,$01,$03,$04,$01,$0f,$02
	.byte $0f,$02,$04,$01,$01,$02,$04,$02
	.byte $02,$02,$01,$01,$01,$01,$03,$01
	.byte $03,$01,$03,$02,$02,$eb,$03,$2b
	.byte $02,$02,$03,$04,$01,$01,$03,$01
	.byte $01,$01,$07,$03,$01,$08,$02,$04
	.byte $01,$03,$02,$04,$04,$0a,$0e,$07
	.byte $12,$03,$02,$09,$01,$01,$0b,$02
	.byte $01,$05,$02,$02,$03,$03,$03,$04
	.byte $01,$01,$01,$02,$02,$01,$02,$01
	.byte $04,$01,$01,$03,$05,$01,$01,$01
	.byte $02,$02,$01,$03,$01,$01,$01,$02
	.byte $08,$01,$01,$03,$01,$03,$01,$02
	.byte $01,$03,$01,$02,$01,$01,$01,$01
	.byte $08,$02,$01,$02,$01,$01,$01,$01
	.byte $04,$03,$01,$01,$03,$02,$01,$01
	.byte $02,$01,$06,$01,$01,$01,$01,$04
	.byte $05,$02,$05,$04,$02,$05,$05,$01
	.byte $02,$01,$03,$04,$03,$01,$23,$01
	.byte $01,$02,$05,$02,$01,$01,$47,$03
	.byte $01,$01,$01,$01,$02,$02,$01,$01
	.byte $01,$6e,$03,$02,$01,$02,$03,$02
	.byte $01,$15,$04,$02,$02,$04,$32,$01
	.byte $02,$03,$02,$06,$01,$01,$01,$02
	.byte $01,$02,$02,$01,$07,$0d,$01,$02
	.byte $02,$01,$06,$01,$01,$01,$01,$03
	.byte $01,$01,$02,$02,$01,$01,$01,$01
	.byte $01,$02,$07,$01,$01,$02,$01,$03
	.byte $03,$3c,$04,$11,$01,$17,$02,$14
	.byte $01,$01,$04,$01,$05,$0e,$01,$04
	.byte $0e,$04,$0a,$03,$04,$04,$0e,$04
	.byte $03,$05,$01,$01,$08,$03,$04,$07
	.byte $01,$0c,$03,$02,$02,$02,$04,$01
	.byte $02,$21,$01,$03,$74,$03,$02,$02
	.byte $03,$01,$01,$04,$03,$01,$01,$01
	.byte $02,$03,$02,$02,$01,$01,$02,$01
	.byte $03,$01,$01,$03,$03,$04,$04,$02
	.byte $02,$01,$03,$03,$01,$01,$02,$01
	.byte $01,$02,$01,$01,$01,$02,$03,$06
	.byte $01,$03,$01,$02,$01,$04,$05,$01
	.byte $01,$01,$04,$03,$01,$02,$07,$03
	.byte $01,$01,$05,$0b,$01,$07,$02,$01
	.byte $02,$02,$01,$07,$01,$0d,$03,$02
	.byte $05,$02,$5f,$01,$02,$01,$01,$06
	.byte $01,$54,$03,$04,$01,$03,$05,$01
	.byte $01,$04,$06,$02,$03,$08,$52,$03
	.byte $02,$03,$01,$03,$05,$06,$04,$06
	.byte $2a,$04,$06,$02,$01,$03,$02,$08
	.byte $0a,$01,$01,$02,$08,$02,$02,$02
	.byte $04,$03,$01,$06,$01,$06,$01,$05
	.byte $04,$02,$04,$01,$02,$04,$02,$06
	.byte $01,$0d,$0a,$27,$02,$01,$04,$04
	.byte $02,$03,$03,$03,$05,$0c,$7c,$01
	.byte $01,$01,$01,$8d,$01,$01,$02,$09
	.byte $02,$01,$01,$05,$05,$02,$09,$01
	.byte $02,$05,$03,$01,$01,$01,$01,$01
	.byte $01,$01,$02,$01,$04,$01,$01,$01
	.byte $01,$05,$01,$02,$07,$01,$04,$01
	.byte $02,$01,$01,$01,$01,$01,$01,$02
	.byte $01,$01,$01,$01,$01,$01,$02,$01
	.byte $01,$01,$03,$02,$01,$01,$02,$01
	.byte $93,$01,$02,$98,$02,$01,$01,$02
	.byte $01,$01,$01,$01,$02,$1d,$01,$04
	.byte $06,$07,$02,$01,$03,$01,$19,$01
	.byte $01,$02,$06,$01,$02,$01,$01,$19
	.byte $02,$04,$03,$01,$03,$0b,$01,$01
	.byte $01,$05,$02,$01,$08,$02,$01,$15
	.byte $01,$01,$01,$02,$03,$03,$01,$03
	.byte $01,$03,$01,$08,$02,$09,$01,$02
	.byte $01,$01,$01,$01,$01,$dd,$01,$01
	.byte $01,$01,$a4,$07,$01,$04,$08,$08
	.byte $04,$01,$04,$02,$01,$01,$01,$02
	.byte $02,$01,$01,$13,$01,$04,$06,$01
	.byte $02,$01,$02,$01,$01,$02,$04,$04
	.byte $01,$0a,$81,$01,$01,$01,$04,$02
	.byte $9c,$02,$01,$02,$01,$01,$01,$01
	.byte $04,$02,$02,$03,$05,$01,$03,$01
	.byte $01,$40,$01,$01,$01,$02,$01,$0a
	.byte $01,$01,$01,$03,$24,$03,$03,$02
	.byte $02,$01,$01,$03,$01,$02,$01,$01
	.byte $01,$01,$02,$01,$01,$03,$01,$08
	.byte $03,$01,$01,$1f,$01,$01,$02,$01
	.byte $01,$01,$01,$01,$01,$01,$01,$02
	.byte $01,$01,$01,$ff,$a6,$01,$04,$03
	.byte $01,$02,$03,$03,$01,$02,$02,$04
	.byte $28,$03,$05,$04,$0b,$03,$02,$01
	.byte $01,$03,$69,$02,$05,$04,$03,$03
	.byte $03,$12,$03,$0b,$03,$02,$05,$04
	.byte $01,$69,$04,$02,$03,$01,$01,$01
	.byte $49,$02,$01,$02,$02,$01,$02,$01
	.byte $02,$02,$01,$26,$01,$01,$01,$02
	.byte $03,$01,$01,$02,$01,$01,$02,$01
	.byte $01,$02,$02,$01,$01,$01,$02,$04
	.byte $0f,$01,$04,$01,$04,$04,$02,$01
	.byte $01,$01,$01,$01,$0a,$03,$01,$02
	.byte $01,$04,$01,$01,$01,$ff,$b2,$01
	.byte $02,$01,$01,$50,$01,$01,$03,$03
	.byte $02,$0a,$04,$0e,$82,$01,$01,$01
	.byte $03,$55,$02,$02,$01,$03,$02,$03
	.byte $01,$96,$03,$01,$03,$02,$01,$01
	.byte $01,$01,$01,$01,$02,$01,$01,$02
	.byte $01,$01,$08,$01,$01,$01,$01,$04
	.byte $09,$01,$03,$01,$02,$01,$01,$01
	.byte $01,$01,$01,$01,$02,$01,$01,$01
	.byte $02,$02,$01,$01,$01,$01,$01,$01
	.byte $03,$02,$01,$01,$01,$01,$01,$04
	.byte $02,$02,$02,$01,$02,$03,$01,$03
	.byte $03,$07,$06,$09,$ff,$80,$01,$01
	.byte $01,$03,$02,$73,$04,$01,$01,$01
	.byte $01,$01,$82,$01,$01,$01,$01,$02
	.byte $4a,$01,$01,$01,$18,$01,$17,$01
	.byte $85,$01,$02,$02,$01,$01,$0d,$04
	.byte $02,$02,$01,$01,$02,$01,$02,$01
	.byte $01,$04,$01,$01,$01,$01,$01,$03
	.byte $02,$06,$04,$08,$01,$03,$02,$01
	.byte $01,$01,$01,$01,$05,$02,$09,$02
	.byte $01,$05,$05,$01,$02,$03,$02,$02
	.byte $03,$01,$01,$01,$01,$02,$01,$02
	.byte $01,$01,$01,$01,$02,$ff,$73,$02
	.byte $01,$04,$03,$03,$03,$5d,$01,$01
	.byte $58,$01,$36,$01,$01,$01,$41,$05
	.byte $02,$04,$01,$01,$01,$09,$01,$01
	.byte $02,$01,$01,$02,$02,$03,$02,$01
	.byte $01,$01,$cd,$01,$01,$02,$03,$03
	.byte $06,$02,$01,$01,$04,$01,$0e,$01
	.byte $02,$04,$04,$05,$01,$01,$01,$03
	.byte $01,$03,$01,$03,$01,$02,$56,$03
	.byte $01,$05,$01,$ff,$32,$02,$01,$3e
	.byte $01,$04,$04,$03,$04,$05,$03,$01
	.byte $01,$95,$02,$01,$01,$02,$33,$03
	.byte $02,$01,$01,$17,$01,$01,$08,$02
	.byte $02,$02,$11,$01,$01,$01,$01,$02
	.byte $01,$9e,$01,$01,$02,$01,$02,$09
	.byte $56,$02,$01,$01,$01,$04,$01,$01
	.byte $01,$02,$25,$01,$ff,$58,$01,$01
	.byte $01,$2b,$05,$05,$02,$04,$02,$02
	.byte $02,$b8,$01,$01,$01,$01,$02,$01
	.byte $09,$06,$03,$05,$04,$05,$03,$02
	.byte $02,$02,$e8,$01,$01,$0e,$08,$08
	.byte $15,$04,$02,$01,$01,$03,$01,$01
	.byte $01,$28,$01,$01,$01,$01,$01,$36
	.byte $04,$39,$01,$ff,$05,$01,$01,$16
	.byte $02,$04,$02,$0c,$02,$01,$01,$ff
	.byte $ff,$28,$03,$03,$02,$01,$03,$04
	.byte $02,$04,$02,$01,$01,$01,$03,$01
	.byte $01,$01,$04,$01,$03,$36,$06,$04
	.byte $01,$01,$01,$01,$01,$01,$01,$03
	.byte $01,$02,$02,$01,$ff,$2e,$02,$01
	.byte $02,$0c,$02,$02,$02,$01,$02,$13
	.byte $02,$01,$05,$ff,$ff,$7d,$03,$01
	.byte $01,$05,$02,$02,$ff,$47,$02,$01
	.byte $04,$01,$01,$01,$05,$04,$03,$10
	.byte $03,$02,$ff,$3b,$07,$01,$02,$01
	.byte $03,$78,$14,$14,$04,$04,$09,$2f
	.byte $01,$a7

mapdata:
	.byte $00,$01,$09,$0f,$1f,$1e,$7c,$f9
	.byte $e1,$c3,$c7,$cf,$8f,$1f,$3f,$7f
	.byte $ff,$3f,$07,$03,$01,$00,$01,$00
	.byte $01,$03,$07,$3f,$7f,$38,$00,$20
	.byte $30,$70,$50,$60,$20,$00,$88,$80
	.byte $c8,$e4,$f1,$f0,$f8,$fc,$fe,$fc
	.byte $ff,$fe,$f9,$f3,$f7,$f1,$f7,$e7
	.byte $8f,$0f,$7f,$ff,$fc,$f8,$f0,$e0
	.byte $f0,$e0,$c0,$81,$83,$cf,$ef,$cf
	.byte $ef,$ff,$c7,$cf,$8f,$0f,$1f,$3f
	.byte $7f,$ff,$7f,$3f,$1f,$0f,$87,$c7
	.byte $e3,$21,$00,$00,$01,$03,$07,$0f
	.byte $1f,$3f,$7f,$ff,$df,$3f,$7f,$ff
	.byte $7f,$ff,$7f,$ff,$bf,$3f,$1f,$0f
	.byte $07,$01,$00,$80,$c0,$f0,$f8,$fc
	.byte $ff,$fe,$ff,$fe,$ff,$f9,$f8,$f0
	.byte $e0,$80,$f0,$e0,$e1,$e3,$e7,$e3
	.byte $e2,$e0,$c0,$80,$c0,$e0,$c0,$e0
	.byte $c0,$e0,$c0,$e0,$f8,$fc,$ff,$7f
	.byte $ff,$fd,$f8,$e8,$40,$00,$01,$0f
	.byte $03,$01,$00,$08,$3c,$7c,$1f,$07
	.byte $03,$07,$0f,$0b,$0f,$01,$05,$0f
	.byte $07,$03,$01,$03,$01,$00,$00,$01
	.byte $03,$07,$1f,$3f,$7f,$ff,$3f,$1f
	.byte $0f,$07,$03,$01,$00,$1c,$3e,$3f
	.byte $7f,$ff,$7f,$3f,$1f,$0f,$83,$81
	.byte $80,$c0,$e6,$ee,$ef,$e6,$e0,$c0
	.byte $00,$20,$31,$71,$73,$63,$23,$3f
	.byte $1f,$0f,$02,$06,$00,$01,$03,$07
	.byte $0f,$1f,$7f,$3f,$7f,$39,$29,$31
	.byte $11,$03,$07,$1d,$3d,$3e,$7f,$7e
	.byte $3e,$3f,$7e,$7f,$3f,$7f,$ff,$fe
	.byte $ff,$f7,$e2,$e0,$c0,$e4,$e6,$c6
	.byte $cd,$cf,$ff,$f7,$e7,$e3,$c3,$00
	.byte $83,$07,$03,$07,$0f,$1f,$3f,$ff
	.byte $fb,$f1,$e0,$00,$01,$00,$80,$c0
	.byte $e0,$d0,$f0,$e0,$f0,$f9,$7b,$3f
	.byte $1f,$07,$02,$00,$00,$01,$c3,$ff
	.byte $3f,$1f,$0f,$07,$03,$01,$05,$0c
	.byte $0e,$0c,$04,$06,$04,$00,$01,$00
	.byte $30,$70,$f0,$e0,$ff,$7f,$1f,$0f
	.byte $4f,$e7,$ef,$6f,$0f,$1f,$3f,$7f
	.byte $ff,$f9,$f5,$f7,$e3,$c7,$cf,$8f
	.byte $9f,$1f,$3f,$1f,$3f,$7f,$ff,$bf
	.byte $87,$07,$01,$00,$01,$81,$c1,$c3
	.byte $c7,$c6,$c2,$c0,$80,$00,$0e,$0f
	.byte $1f,$3f,$1f,$bf,$ff,$f1,$e1,$c0
	.byte $00,$08,$18,$1e,$7e,$3f,$7f,$ff
	.byte $fb,$f1,$e6,$e0,$f0,$f8,$f9,$fd
	.byte $ff,$7f,$3f,$1f,$7f,$ff,$7f,$3f
	.byte $1f,$0f,$07,$01,$00,$c0,$e0,$f8
	.byte $1f,$3c,$38,$39,$7a,$38,$00,$04
	.byte $06,$07,$0f,$1f,$3f,$7f,$ff,$fe
	.byte $ff,$cf,$e7,$ef,$0f,$07,$03,$01
	.byte $00,$38,$1c,$1e,$3f,$7f,$3a,$80
	.byte $c0,$00,$01,$00,$04,$06,$26,$32
	.byte $33,$73,$f3,$f1,$f9,$fd,$fc,$fe
	.byte $ff,$7f,$ff,$7f,$ff,$7f,$ff,$7f
	.byte $ff,$7f,$3f,$1f,$0f,$01,$00,$ee
	.byte $ff,$8f,$0f,$0c,$00,$01,$00,$18
	.byte $08,$0c,$06,$04,$06,$00,$01,$00
	.byte $01,$03,$07,$0f,$1f,$3f,$7f,$ff
	.byte $fe,$fc,$f8,$f0,$c0,$80,$00,$0e
	.byte $1e,$bf,$ff,$fe,$ff,$fe,$fc,$6c
	.byte $24,$00,$80,$00,$b0,$f8,$f0,$fc
	.byte $fe,$7e,$1c,$08,$00,$02,$83,$a3
	.byte $a7,$e7,$e3,$ff,$fe,$f8,$f0,$e0
	.byte $c0,$e0,$c0,$40,$00,$80,$c0,$e0
	.byte $d0,$f0,$e0,$f0,$e1,$f3,$ff,$fb
	.byte $fd,$fe,$fc,$fa,$fb,$fa,$f8,$fb
	.byte $f3,$f1,$f8,$fc,$f8,$fc,$ff,$ff
	.byte $fb,$f1,$f8,$f0,$60,$00,$c0,$f8
	.byte $30,$00,$1c,$3e,$7f,$ff,$3f,$1f
	.byte $0f,$07,$03,$01,$00,$08,$00,$08
	.byte $18,$04,$06,$02,$03,$00,$01,$03
	.byte $07,$0f,$07,$0f,$8f,$cf,$c3,$e7
	.byte $ef,$ff,$3f,$1f,$0f,$07,$01,$e1
	.byte $f0,$90,$11,$31,$41,$03,$01,$00
	.byte $01,$03,$07,$0f,$1f,$3f,$1f,$0f
	.byte $07,$03,$0f,$1f,$3f,$7f,$ff,$f8
	.byte $e8,$e0,$c0,$80,$c0,$80,$c0,$80
	.byte $00,$e0,$c0,$80,$00,$08,$0d,$9f
	.byte $3f,$7f,$ff,$f3,$f1,$e1,$e0,$f0
	.byte $f9,$fd,$fc,$fe,$ff,$fe,$f8,$e8
	.byte $e0,$c0,$80,$00,$01,$03,$00,$20
	.byte $c0,$e0,$f0,$f1,$d0,$c0,$80,$00
	.byte $03,$07,$1f,$df,$bf,$af,$ef,$cf
	.byte $e7,$e3,$2f,$0f,$3f,$ff,$7f,$ff
	.byte $7f,$0f,$07,$03,$00,$c0,$f1,$f9
	.byte $f1,$c3,$f3,$f9,$fd,$f5,$e5,$ed
	.byte $ff,$ff,$3f,$1f,$0f,$07,$03,$07
	.byte $03,$07,$03,$07,$01,$00,$80,$f0
	.byte $e0,$f0,$f8,$fd,$f9,$f8,$fc,$fd
	.byte $ff,$9f,$1f,$0f,$07,$03,$01,$00
	.byte $01,$00,$01,$00,$f1,$f0,$f4,$f1
	.byte $fb,$ff,$7f,$ff,$7f,$3f,$1f,$0f
	.byte $07,$03,$01,$03,$01,$00,$02,$03
	.byte $07,$03,$43,$47,$c6,$42,$00,$e0
	.byte $f1,$e1,$f1,$f3,$e3,$f3,$e7,$c7
	.byte $87,$8f,$0f,$8f,$0f,$4e,$4f,$4c
	.byte $d8,$58,$10,$00,$01,$0f,$1f,$3f
	.byte $7f,$ff,$2f,$0f,$07,$03,$01,$00
	.byte $02,$03,$07,$0f,$07,$03,$01,$00
	.byte $80,$e0,$f0,$f8,$fc,$fa,$fe,$ff
	.byte $fd,$ff,$bf,$9f,$8f,$0f,$07,$03
	.byte $98,$f8,$fc,$fe,$ff,$fe,$fc,$fd
	.byte $ff,$ff,$7f,$3f,$1f,$3f,$7f,$ff
	.byte $df,$1f,$0f,$87,$cf,$f7,$ff,$7f
	.byte $ff,$7f,$ff,$7f,$3f,$7f,$3f,$1f
	.byte $0e,$1e,$0e,$0c,$00,$01,$03,$01
	.byte $00,$60,$40,$00,$04,$0c,$0e,$e3
	.byte $c3,$c7,$cf,$ff,$fe,$ff,$fe,$fc
	.byte $f8,$fc,$fd,$f9,$fb,$f9,$fc,$fe
	.byte $fc,$fd,$f9,$fd,$f9,$f8,$fc,$ff
	.byte $f5,$f0,$f8,$fc,$fe,$ff,$fe,$ff
	.byte $fe,$7c,$78,$38,$b0,$f8,$fe,$ff
	.byte $bf,$9f,$1d,$18,$00,$80,$81,$80
	.byte $d1,$c1,$e1,$e9,$fb,$ff,$be,$bc
	.byte $1c,$3e,$3c,$78,$70,$50,$40,$00
	.byte $18,$3c,$3e,$7f,$ff,$7f,$3f,$1f
	.byte $0f,$07,$03,$01,$00,$40,$60,$c0
	.byte $80,$c0,$80,$c0,$80,$c0,$e0,$c0
	.byte $80,$00,$80,$c0,$e0,$f0,$f9,$ff
	.byte $fe,$ff,$7f,$3f,$7f,$ff,$ef,$cf
	.byte $df,$9f,$1f,$3f,$bf,$be,$3e,$3c
	.byte $d8,$c0,$e0,$f0,$e0,$f0,$f6,$fe
	.byte $ff,$fe,$fc,$e0,$f0,$fb,$fa,$f8
	.byte $fc,$fe,$fc,$fe,$ff,$fe,$ff,$fe
	.byte $ff,$ef,$fe,$ee,$ef,$ff,$ef,$ff
	.byte $cf,$ef,$e7,$e6,$e4,$e0,$f0,$f8
	.byte $fe,$ff,$fe,$fc,$fd,$ff,$fe,$ff
	.byte $7f,$3f,$7f,$7e,$3e,$3c,$78,$f8
	.byte $78,$f8,$f0,$60,$20,$00,$10,$00
	.byte $1c,$3c,$00,$80,$c0,$e0,$f0,$e0
	.byte $c0,$80,$c0,$80,$00,$80,$00,$80
	.byte $00,$80,$c0,$e0,$c0,$e0,$c0,$80
	.byte $00,$84,$86,$87,$0f,$8f,$df,$9f
	.byte $8f,$0f,$07,$03,$01,$35,$31,$17
	.byte $56,$5e,$5f,$de,$dc,$de,$fe,$ff
	.byte $fe,$ff,$fe,$fc,$fe,$ff,$fe,$fc
	.byte $f8,$e0,$c0,$40,$00,$01,$21,$03
	.byte $07,$87,$02,$00,$14,$3e,$3f,$7f
	.byte $ff,$f3,$b1,$a1,$01,$00,$80,$8c
	.byte $0e,$0f,$3f,$3a,$38,$30,$bd,$bf
	.byte $3f,$3e,$3d,$3f,$7c,$fc,$f8,$f0
	.byte $f4,$f8,$f0,$e0,$c0,$80,$00,$04
	.byte $85,$87,$8f,$2f,$6f,$7f,$ff,$7f
	.byte $7d,$5d,$39,$3b,$3a,$3e,$38,$18
	.byte $01,$00,$80,$c0,$80,$c0,$80,$c0
	.byte $80,$e0,$c0,$80,$c0,$80,$00,$04
	.byte $0c,$1e,$1f,$3f,$33,$23,$01,$00
	.byte $80,$c0,$e0,$00,$80,$00,$20,$f0
	.byte $f8,$fc,$fe,$fc,$bc,$e0,$20,$00
	.byte $fe,$fc,$fb,$f9,$78,$f8,$ec,$fe
	.byte $fc,$f8,$fc,$fd,$fb,$ff,$f7,$e7
	.byte $ef,$ff,$fe,$ff,$fd,$ff,$fe,$ff
	.byte $f6,$e6,$e0,$f0,$fc,$f8,$f4,$f8
	.byte $fc,$f8,$fc,$f8,$f0,$e0,$f0,$c0
	.byte $80,$00,$80,$c0,$80,$a0,$80,$00
	.byte $80,$c0,$80,$c0,$98,$38,$18,$08
	.byte $10,$00,$60,$e0,$00,$80,$c0,$c8
	.byte $98,$c8,$cc,$8c,$94,$8c,$84,$96
	.byte $10,$30,$38,$58,$10,$30,$72,$70
	.byte $30,$20,$30,$38,$18,$10,$00,$02
	.byte $1a,$3a,$38,$10,$90,$80,$00,$08
	.byte $00,$11,$b1,$30,$14,$00,$08,$88
	.byte $98,$99,$9b,$93,$13,$33,$31,$35
	.byte $37,$36,$3e,$b7,$bf,$37,$3f,$2f
	.byte $8f,$87,$03,$01,$03,$02,$06,$02
	.byte $0a,$06,$0e,$0f,$1f,$0f,$1f,$0f
	.byte $1f,$3f,$ff,$f7,$77,$35,$31,$00
	.byte $20,$00,$01,$00,$01,$05,$06,$07
	.byte $03,$02,$00,$02,$03,$01,$00,$80
	.byte $c0,$e0,$f0,$70,$30,$10,$18,$08
	.byte $00,$80,$00,$80,$00,$80,$c0,$e0
	.byte $f0,$f8,$f0,$f8,$f0,$f8,$f9,$f1
	.byte $f9,$fd,$fc,$fe,$fa,$f8,$78,$f8
	.byte $78,$38,$b8,$98,$90,$00,$80,$00
	.byte $80,$00,$80,$00,$18,$1c,$18,$98
	.byte $18,$00,$10,$18,$00,$20,$00,$0e
	.byte $0a,$05,$04,$00,$80,$c0,$80,$00
	.byte $80,$e0,$f0,$f8,$fc,$fe,$ff,$9f
	.byte $1f,$0f,$07,$03,$01,$07,$03,$07
	.byte $0f,$07,$0f,$2f,$7f,$3f,$3c,$30
	.byte $10,$00,$80,$40,$c0,$e0,$60,$20
	.byte $64,$76,$77,$76,$72,$32,$60,$e0
	.byte $a0,$20,$60,$64,$2c,$37,$3e,$2f
	.byte $8f,$6f,$07,$0f,$09,$02,$07,$02
	.byte $00,$10,$f0,$ff,$7f,$03,$01,$00
	.byte $c0,$e0,$f8,$fc,$fe,$ff,$fe,$ff
	.byte $fe,$fc,$f8,$f0,$e0,$40,$00,$c0
	.byte $a0,$e0,$f0,$e0,$c0,$f4,$fe,$ff
	.byte $fe,$fc,$f8,$f0,$e0,$c0,$00,$80
	.byte $c0,$e0,$f0,$f9,$ff,$fc,$fd,$ff
	.byte $f7,$e3,$c3,$c1,$c0,$e0,$f0,$ec
	.byte $c8,$c0,$80,$c0,$80,$00,$80,$c0
	.byte $80,$01,$03,$01,$03,$00,$40,$60
	.byte $40,$c0,$00,$80,$c0,$80,$c0,$e0
	.byte $f0,$f8,$78,$7c,$7e,$7c,$7e,$7f
	.byte $ff,$7f,$38,$00,$01,$03,$07,$87
	.byte $07,$03,$01,$03,$01,$07,$03,$01
	.byte $03,$01,$00,$20,$f0,$f8,$fc,$fe
	.byte $ff,$7f,$ff,$bf,$9f,$8f,$cf,$ff
	.byte $f7,$f3,$e1,$e3,$c7,$87,$07,$0f
	.byte $0c,$00,$c0,$e0,$f0,$f8,$fc,$ff
	.byte $fc,$f0,$c0,$80,$00,$80,$c0,$80
	.byte $00,$02,$0f,$ff,$fe,$f0,$c0,$e0
	.byte $d0,$f8,$f0,$f8,$fc,$ff,$fe,$ff
	.byte $fe,$fc,$30,$00,$20,$70,$f8,$f9
	.byte $fa,$c6,$84,$01,$02,$03,$01,$07
	.byte $05,$0d,$01,$00,$00,$40,$c0,$e0
	.byte $60,$70,$78,$e0,$60,$70,$f7,$7f
	.byte $ff,$7f,$3f,$1f,$0f,$07,$0f,$07
	.byte $03,$01,$00,$c0,$e0,$f0,$f8,$fc
	.byte $fe,$fc,$f8,$f0,$f8,$fc,$fe,$ff
	.byte $fe,$ff,$fe,$fc,$f8,$f0,$e0,$c0
	.byte $00,$80,$c0,$e0,$c0,$80,$00,$30
	.byte $78,$38,$10,$00,$04,$0c,$0e,$06
	.byte $07,$43,$c3,$e3,$61,$70,$38,$18
	.byte $1c,$1e,$0f,$07,$03,$01,$00,$80
	.byte $00,$01,$03,$01,$03,$07,$0f,$1f
	.byte $0f,$2f,$1c,$0c,$00,$80,$c0,$e0
	.byte $b0,$f0,$78,$38,$30,$00,$00,$01
	.byte $07,$0f,$7f,$ff,$7f,$6f,$0f,$07
	.byte $0f,$07,$03,$01,$00,$20,$30,$7c
	.byte $fe,$ff,$fe,$fc,$f8,$f0,$e0,$c0
	.byte $80,$00,$80,$c0,$e0,$70,$78,$7c
	.byte $7e,$3e,$1e,$1f,$8f,$c7,$07,$03
	.byte $02,$06,$00,$10,$38,$7c,$fc,$7c
	.byte $fe,$ff,$fe,$fc,$f8,$f0,$e0,$60
	.byte $20,$00,$04,$0e,$1f,$1e,$3e,$2e
	.byte $0f,$1f,$12,$00,$40,$70,$60,$44
	.byte $00,$04,$2c,$30,$33,$2b,$21,$01
	.byte $00,$20,$08,$1a,$1b,$0f,$03,$01
	.byte $03,$07,$03,$01,$00,$00,$e0,$f0
	.byte $f8,$fc,$fe,$ff,$fe,$fc,$fe,$7c
	.byte $60,$40,$00,$80,$c0,$e0,$f0,$fc
	.byte $ff,$bf,$37,$05,$00,$01,$00,$40
	.byte $00,$80,$c0,$e0,$f0,$70,$30,$38
	.byte $18,$58,$48,$10,$18,$10,$30,$28
	.byte $20,$00,$02,$33,$f2,$d6,$d8,$10
	.byte $80,$00,$40,$00,$80,$00,$01,$03
	.byte $62,$70,$61,$41,$01,$00,$80,$c0
	.byte $f0,$f8,$fc,$f8,$f1,$e0,$f0,$70
	.byte $78,$3c,$3e,$2e,$0e,$07,$03,$c3
	.byte $e1,$61,$60,$40,$c0,$00,$00,$80
	.byte $e0,$f0,$f8,$fc,$fe,$ff,$ce,$80
	.byte $00,$04,$00,$0c,$3e,$7f,$ff,$fe
	.byte $fc,$f8,$f0,$e0,$80,$00,$05,$07
	.byte $0f,$1f,$0f,$1f,$3f,$7f,$ff,$fe
	.byte $74,$60,$00,$01,$03,$07,$0f,$1f
	.byte $3f,$1f,$3f,$1f,$3f,$7f,$ff,$5f
	.byte $3f,$0f,$07,$03,$07,$0f,$1f,$ff
	.byte $7f,$1f,$0f,$07,$03,$01,$00,$06
	.byte $04,$00,$04,$00,$00,$81,$8b,$ff
	.byte $fe,$fc,$f8,$f0,$f8,$f0,$e0,$c0
	.byte $80,$00,$80,$c0,$e0,$fc,$ff,$fe
	.byte $fc,$f8,$38,$00,$80,$9c,$fc,$f0
	.byte $e0,$80,$00,$c0,$e0,$c0,$80,$00
	.byte $80,$00,$dc,$bc,$3f,$7f,$ff,$7f
	.byte $ff,$7f,$3f,$1f,$3f,$0f,$07,$0f
	.byte $07,$01,$00,$80,$00,$00,$01,$27
	.byte $3f,$ff,$fe,$fc,$f8,$f0,$e0,$c0
	.byte $80,$00,$80,$c0,$e0,$f8,$fc,$fe
	.byte $ff,$fe,$ff,$fe,$fc,$f8,$f0,$e0
	.byte $c0,$80,$00,$80,$de,$ff,$fe,$fc
	.byte $f8,$fc,$fe,$ff,$fe,$fc,$fd,$ff
	.byte $fe,$ff,$fe,$fc,$f0,$e0,$60,$00
	.byte $01,$00,$55,$00,$00,$6d,$7f,$ff
	.byte $fe,$fc,$f8,$f0,$e0,$c0,$80,$00
	.byte $00,$00,$80,$00,$80,$c0,$e0,$c0
	.byte $e0,$f0,$e0,$e1,$d1,$f7,$f3,$f2
	.byte $f6,$f0,$e0,$c0,$80,$00,$01,$07
	.byte $03,$82,$dc,$d8,$78,$38,$7e,$3c
	.byte $18,$10,$30,$20,$00,$00,$20,$34
	.byte $fc,$ff,$fe,$fc,$d8,$d0,$80,$00
	.byte $02,$00,$02,$00,$00,$00,$60,$40
	.byte $60,$e0,$c0,$80,$00,$00,$80,$c0
	.byte $80,$00,$c0,$80,$c0,$40,$00,$01
	.byte $00,$02,$00,$00,$01,$00,$01,$00
	.byte $01,$00,$01,$00,$01,$00,$01,$00
	.byte $01,$00

irqinit:		; this code must reside in bank $4000-$7fff
	ldx #$20
waitvsync$:
	bit $d011
	bpl waitvsync$

	stx $d012	; set raster interrupt position
	ldx #$3b
	stx $d011	; and enable hi-res mode
	ldx #1
	stx $d019	; allow raster interrupts
	dec $d01a	; acknowledge all video interrupts
	clc
	lda #$e
	ldx #<irq
	ldy #>irq
setirq$:
	sta PIABASE+2
	stx $fffe	; set interrupt vectors in all banks
	sty $ffff
	adc #$10
	bcc setirq$
	lda #3
	ora $dd01
	sta $dd01
	dec $d030	; switch to single clock mode
	cli
	jmp *

; horizontal sprite coordinates, low bytes
mob0x:	.byte $90,$48,$08
mob1x:	.byte $c8,$10,$50
mob2x:	.byte $78,$46,$f8
mob3x:	.byte $e0,$12,$60
mob4x:	.byte $60,$12,$e0
mob5x:	.byte $f8,$46,$78
mob6x:	.byte $08,$10,$c8
mob7x:	.byte $50,$48,$90

; horizontal sprite coordinates, most significant bits
mobxmb:	.byte $40,$5a,$01

; vertical sprite coordinates
mob01y:	.byte $4a,$83,$c1
mob23y:	.byte $50,$8d,$d5
mob45y:	.byte $5a,$a2,$df
mob67y:	.byte $6e,$ac,$e5

; sprite data pointers
mob0d:	.byte $7c,$7d,$7e
mob1d:	.byte $7f,$80,$81
mob2d:	.byte $82,$83,$84
mob3d:	.byte $85,$86,$87
mob4d:	.byte $88,$89,$8a
mob5d:	.byte $8b,$8c,$8d
mob6d:	.byte $8e,$8f,$fc
mob7d:	.byte $fd,$fe,$ff
raster:	.byte $81,$c0,$30
nxtcnt:	.byte 1,2,0

irq:
	pha
	txa
	pha
counter = * + 1
	ldx #0		; placeholder for self-modifying code
	bne sframe$
frame = * + 1
	lda #$6f	; placeholder for self-modifying code
	tax
	lsr
	and #$20
	bne skip$
	lda #$80
skip$:	and #$80
	ror
	sta MMURCR
	asl
	rol
	rol
	sta MMUP0H
	lda #$c3
	sta MMUP0L
	txa
	asl
	asl
	ora #$e
	sta PIABASE+2
	txa
	lsr
	lsr
	and #3
	eor #3
	sta $dd00
	lda #0
	adc #7
	sta $d018
	dex
	bpl noinit$
	ldx #$6f
noinit$:
	stx frame
	ldx #0
sframe$:
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	lda mob0d,x
	sta $f8
	lda mob1d,x
	sta $f9
	lda mob0x,x
	sta $d000
	lda mob1x,x
	sta $d002
	lda mob01y,x
	sta $d001
	sta $d003
	lda mob23y,x
	sta $d005
	sta $d007
	lda mobxmb,x
	sta $d010
	lda mob2x,x
	sta $d004
	lda mob3x,x
	sta $d006
	lda mob2d,x
	sta $fa
	lda mob3d,x
	sta $fb
	lda mob4x,x
	sta $d008
	lda mob5x,x
	sta $d00a
	lda mob45y,x
	sta $d009
	sta $d00b
	lda mob4d,x
	sta $fc
	lda mob5d,x
	sta $fd
	lda mob6x,x
	sta $d00c
	lda mob7x,x
	sta $d00e
	lda mob6d,x
	sta $fe
	lda mob7d,x
	sta $ff
	lda mob67y,x
	sta $d00d
	sta $d00f
	lda raster,x
	sta $d012
	lda nxtcnt,x
	sta counter
	lsr $d019	; acknowledge the interrupt
	pla
	tax
	pla
	rti
