#include ti83plus.inc #define NUM_TILES 42 .org progstart-2 .db $BB,$6D ret jr nc,lblStart .db "Space Station Pheta 2!",0 lblstart: ;oi loop: ld de,plotsscreen call Fastmap ;Jim e's tilemapper call drawChar ;draw Liazon's or CDI's sprites call drawObjects ;updates and draws the objects xor a out ($20),a ld a,$ff out (1),a nop \ nop ld a,$fe ;arrow keys out (1),a nop \ nop nop \ nop in a,(1) bit 0,a jp z,down in a,(1) bit 1,a jp z,left in a,(1) bit 2,a jp z,right in a,(1) bit 3,a jp z,up ld a,$ff out (1),a nop \ nop ld a,$fd out (1),a nop \ nop nop \ nop in a,(1) bit 6,a ;clear quits jp nz,loop ret right: ld a,(viewX) cp 160 jp z,loop inc a inc a ld (viewX),a jp loop left ld a,(viewX) cp 0 jp z,loop dec a dec a ld (viewX),a jp loop down: ld a,(viewY) cp 192 jp z,loop inc a inc a ld (viewY),a jp loop up: ld a,(viewY) cp 0 jp z,loop dec a dec a ld (viewY),a jp loop drawChar: ret drawObjects: ret mapaddress: .dw map1 mapWidth: .dw 32 tilesaddress: .dw tiles viewY: .dw 16 viewX: .dw 16 ;################################################################################### ;Fastcopy + Horizontal + Vertical Scrolling Tilemap by Jim e ;Based on dwedit's mapper ;Messuptiles is 50% faster ;The mapper is 14% faster. ;Like it needed to be faster ;) ; ; ;Input: ; de = plotsscreen ; (mapaddress) = word,Base address of map ; (viewY) = word,vertical location of camera ; (viewX) = word,horizontal location of camera ; (tilesaddress) = word,pointer to tileset ; tilesbuf = label,destructable tileset buffer equal in size to the tileset ; tilesbuf2 = label,another destructable tileset buffer, also equal in size to the tileset ; NUM_TILES = byte constant,number of tiles in the tileset (size of tileset/8) ; (mapWidth) = word,width of tilemap ; ;Output: ; screen copied from buffer to screen ; tilemap drawn on buffer, with origin (viewX,viewY) ; ;Destroys: ; AF BC DE HL IX ; AF' BC' DE' HL' ; ; ;Notes: ;The current version has it so that the viewY Can not be greater than 2047. ;If your map is longer on the y than the x, read the mapwidth with A and ;viewY with DE. ;If you are using maps of multiple sizes(longer on X or Y) than you may need ;a 16bit times 16bit multiplication routine to accomodate. ; ;BIG NOTE: ;This routine copies the previous buffer to the screen. ;You should update the screen at a steady rate for this method of mapping. Fastmap: DI push de ;===================================== ;Rotate the tiles into the buffer ;===================================== call Messuptiles ;===================================== ;Set write to top row of LCD ;===================================== ld a,$80 out ($10),a ;===================================== ;Calculate the Y offset to map ;===================================== ld de,(viewY) ld a,e srl d rra srl d rra srl d rra ;;; ld e,a ld de,(mapWidth) call mult ;you may want to change this ;===================================== ;Add the X offset ;===================================== ld de,(viewx) ld a,e srl d rra srl d rra srl d rra ld e,a add hl,de ex de,hl ;===================================== ;add the map address to get pointer ;===================================== ld ix,(mapaddress) add ix,de ;===================================== ;Calculate clipping for the top row ;===================================== ld a,(viewY) and 7 ld (cliptoptile1),a ld (cliptoptile2),a ld c,a add a,a add a,a ld b,a add a,b add a,b sub c ld e,a ld d,0 ld hl,Rendertile add hl,de ld (Rendertopmod),hl ;===================================== ;Calculate clipping for bottom row ;===================================== ld a,8 sub c ld c,a add a,a add a,a ld b,a add a,b add a,b sub c ld e,a ld d,0 ld hl,Rendertile add hl,de ld (Renderbotmod),hl ;===================================== ;Prepare for main loop ;===================================== pop hl ld a,$20 ld bc,12 ld de,(mapwidth) exx ld c,0 ;========================================================== ;========================================================== TilemapCol: ;===================================== ;Set the column to write to on LCD ;===================================== out ($10),a ;set col ex af,af' push ix ;===================================== ;Find one side of tile and add clipping ;===================================== ld l,(ix) ld h,c add hl,hl add hl,hl add hl,hl ld de,tilesbuf add hl,de cliptoptile1 = $+1 ld de,0 add hl,de push hl ; ld a,$80 ;This could reduce chance of wavy effect but isn't needed. ; out ($10),a ;Could be used for SEs at 15mhz with minor changes. ;===================================== ;Find one side of tile and add clipping ;===================================== ld l,(ix+1) ld h,c add hl,hl add hl,hl add hl,hl ld de,tilesbuf2 add hl,de cliptoptile2 = $+1 ld de,0 add hl,de pop de ;===================================== ;Render clipped ;===================================== exx Rendertopmod = $+1 call Rendertile add ix,de exx ;===================================== ;Row loop, No clipping ;===================================== ld b,7 ;------------------------------------------------- ;------------------------------------------------- TileMapMid: ;===================================== ;Find one side of tile ;===================================== ld l,(ix) ld h,c add hl,hl add hl,hl add hl,hl ld de,tilesbuf add hl,de push hl ;===================================== ;Find one side of tile ;===================================== ld l,(ix+1) ld h,c add hl,hl add hl,hl add hl,hl ld de,tilesbuf2 add hl,de pop de ;===================================== ;Render tile then loop ;===================================== exx call Rendertile add ix,de exx djnz TileMapMid ;------------------------------------------------- ;------------------------------------------------- ;===================================== ;Find one side of tile ;===================================== ld l,(ix) ld h,c add hl,hl add hl,hl add hl,hl ld de,tilesbuf add hl,de push hl ;===================================== ;Find one side of tile ;===================================== ld l,(ix+1) ld h,c add hl,hl add hl,hl add hl,hl ld de,tilesbuf2 add hl,de pop de ;===================================== ;Render clipped ;===================================== exx Renderbotmod = $+1 call Rendertile add ix,de dec h dec h dec h inc hl exx pop ix inc ix ;===================================== ;Loop for all Columns ;===================================== ex af,af' inc a cp $2c jp nz,TilemapCol ;=================================================================== ;=================================================================== ret ;===================================== ;Renders rotated tiles to the screen ;===================================== ;Read byte from buffer ;write to lcd ;read rotated tile ;OR other rotated tile ;write to buffer ;===================================== Rendertile: ld a,(hl) out ($11),a exx ld a,(de) or (hl) inc hl inc de exx ld (hl),a add hl,bc ld a,(hl) out ($11),a exx ld a,(de) or (hl) inc hl inc de exx ld (hl),a add hl,bc ld a,(hl) out ($11),a exx ld a,(de) or (hl) inc hl inc de exx ld (hl),a add hl,bc ld a,(hl) out ($11),a exx ld a,(de) or (hl) inc hl inc de exx ld (hl),a add hl,bc ld a,(hl) out ($11),a exx ld a,(de) or (hl) inc hl inc de exx ld (hl),a add hl,bc ld a,(hl) out ($11),a exx ld a,(de) or (hl) inc hl inc de exx ld (hl),a add hl,bc ld a,(hl) out ($11),a exx ld a,(de) or (hl) inc hl inc de exx ld (hl),a add hl,bc ld a,(hl) out ($11),a exx ld a,(de) or (hl) inc hl inc de exx ld (hl),a add hl,bc ret ;############################################################ ;Mess up tiles is a routine in itself. If you have less than ;117 tiles this is very fast compared to other mappers. ;If you have more, Than a more imaginative routine may be ;required. I'll finish that at a later date. ; ;You should know this routine may use the majority of the ;drawing time. ; ;Tstate Comparison (lower numbers mean better performance) ;------------------------------------------------ ; ; Jim e's ; Dwedit's ; ;------------------------------------------------ ;Overhead ; 991 ; 149 ; ;------------------------------------------------ ;Per tile ; 646 ; ~1032 ; ;------------------------------------------------ ;10 tiles ; 7451 ; ~10469 ; ;------------------------------------------------ ;64 tiles ; 42335 ; ~66197 ; ;------------------------------------------------ ;128 tiles ; 83679 ; ~132245 ; ;------------------------------------------------ ;MAX 256 ; 166367 ; ~264341 ; ;------------------------------------------------ ;===================================== ;Rotates the tiles to two different ;buffers. ;===================================== Messuptiles: ld a,(viewx) call Findrotation ld de,Rotatewhat1 push hl ldi ldi ldi ldi pop hl ld de,Rotatewhat2 push hl ldi ldi ldi ldi pop hl ld de,Rotatewhat3 push hl ldi ldi ldi ldi pop hl ld de,Rotatewhat4 push hl ldi ldi ldi ldi pop hl ld de,Rotatewhat5 push hl ldi ldi ldi ldi pop hl ld de,Rotatewhat6 push hl ldi ldi ldi ldi pop hl ld de,Rotatewhat7 push hl ldi ldi ldi ldi pop hl ld de,Rotatewhat8 push hl ldi ldi ldi ldi pop hl ld de,tilesbuf ld c,a exx ld hl,(tilesaddress) ld de,tilesbuf2 cpl ld c,a ld b,NUM_TILES messtiles: ld a,(hl) inc hl Rotatewhat1: nop nop nop nop exx ld h,a and c ld (de),a inc de ld a,h exx and c ld (de),a inc de ld a,(hl) inc hl Rotatewhat2: nop nop nop nop exx ld h,a and c ld (de),a inc de ld a,h exx and c ld (de),a inc de ld a,(hl) inc hl Rotatewhat3: nop nop nop nop exx ld h,a and c ld (de),a inc de ld a,h exx and c ld (de),a inc de ld a,(hl) inc hl Rotatewhat4: nop nop nop nop exx ld h,a and c ld (de),a inc de ld a,h exx and c ld (de),a inc de ld a,(hl) inc hl Rotatewhat5: nop nop nop nop exx ld h,a and c ld (de),a inc de ld a,h exx and c ld (de),a inc de ld a,(hl) inc hl Rotatewhat6: nop nop nop nop exx ld h,a and c ld (de),a inc de ld a,h exx and c ld (de),a inc de ld a,(hl) inc hl Rotatewhat7: nop nop nop nop exx ld h,a and c ld (de),a inc de ld a,h exx and c ld (de),a inc de ld a,(hl) inc hl Rotatewhat8: nop nop nop nop exx ld h,a and c ld (de),a inc de ld a,h exx and c ld (de),a inc de dec b jp nz,messtiles ret ;===================================== ;This gives 4 opcodes to rotate a tile ;to any position, and the mask ;===================================== Findrotation: and 7 ld hl,lsn bit 2,a jp z,notmsn ld hl,msn notmsn: ld c,a res 2,c ld b,0 add hl,bc push hl ld c,a ld hl,masks add hl,bc ld a,(hl) pop hl ret MSN: rrca rrca rrca rrca LSN: nop nop nop nop rlca rlca rlca rlca Masks: .db %11111111 .db %11111110 .db %11111100 .db %11111000 .db %11110000 .db %11100000 .db %11000000 .db %10000000 ;########################################################### ;Note: this routine may be removed, depending on your needs ;recommend find the most optimised way of multiply you can. ;This method is general and could be better. ;===================================== ;AxDE = AHL ;this can be changed to whatever you ;may need ;===================================== Mult: ld hl,0 rla jp nc,$+4 add hl,de add hl,hl rla jp nc,$+4 add hl,de add hl,hl rla jp nc,$+4 add hl,de add hl,hl rla jp nc,$+4 add hl,de add hl,hl rla jp nc,$+4 add hl,de add hl,hl rla jp nc,$+4 add hl,de add hl,hl rla jp nc,$+4 add hl,de add hl,hl rla ret nc add hl,de ret tiles: .db $00,$00,$00,$00,$00,$00,$00,$00 .db $0F,$10,$2A,$55,$6A,$40,$3F,$00 .db $FF,$00,$AA,$55,$AA,$00,$FF,$00 .db $E0,$10,$A8,$54,$AC,$04,$F8,$00 .db $3C,$42,$A9,$D5,$A9,$81,$7E,$00 .db $00,$00,$00,$00,$00,$F8,$A4,$AF .db $A2,$AF,$A2,$AF,$A2,$AF,$A2,$AF .db $00,$00,$00,$00,$00,$1F,$25,$F5 .db $45,$F5,$45,$F5,$45,$F5,$45,$F5 .db $00,$00,$00,$00,$00,$18,$3C,$E7 .db $42,$E7,$42,$E7,$42,$E7,$42,$E7 .db $00,$00,$40,$41,$55,$55,$77,$FF .db $00,$00,$00,$00,$00,$3C,$42,$FF .db $00,$18,$3C,$24,$3C,$3C,$3C,$3C .db $3C,$4A,$A9,$9F,$F9,$95,$52,$3C .db $FF,$88,$44,$22,$44,$88,$FF,$00 .db $FF,$22,$44,$88,$44,$22,$FF,$00 .db $FF,$08,$AA,$5D,$BA,$10,$FF,$00 .db $81,$00,$C4,$11,$C8,$24,$91,$24 .db $81,$00,$80,$01,$80,$00,$81,$00 .db $00,$00,$03,$03,$04,$08,$18,$3C .db $00,$00,$C0,$C0,$20,$10,$18,$3C .db $7E,$56,$6A,$56,$7E,$24,$5A,$99 .db $A5,$81,$C3,$C3,$81,$81,$E7,$FF .db $18,$24,$3C,$5A,$66,$42,$66,$7E .db $00,$00,$7E,$6A,$56,$6A,$7E,$00 .db $0F,$1A,$15,$0F,$00,$00,$00,$00 .db $FF,$AA,$55,$FF,$00,$00,$00,$00 .db $F0,$58,$A8,$F0,$00,$00,$00,$00 .db $81,$81,$81,$81,$81,$81,$81,$81 .db $81,$81,$81,$81,$81,$81,$81,$81 .db $7C,$44,$54,$44,$54,$44,$7C,$00 .db $07,$19,$24,$50,$80,$FF,$81,$81 .db $E0,$98,$24,$0A,$01,$FF,$81,$81 .db $00,$00,$00,$00,$0F,$1A,$15,$0F .db $00,$00,$00,$00,$FF,$AA,$55,$FF .db $00,$00,$00,$00,$F0,$A8,$58,$F0 .db $00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00 tilesbuf: .db $00,$00,$00,$00,$00,$00,$00,$00 .db $0F,$10,$2A,$55,$6A,$40,$3F,$00 .db $FF,$00,$AA,$55,$AA,$00,$FF,$00 .db $E0,$10,$A8,$54,$AC,$04,$F8,$00 .db $3C,$42,$A9,$D5,$A9,$81,$7E,$00 .db $00,$00,$00,$00,$00,$F8,$A4,$AF .db $A2,$AF,$A2,$AF,$A2,$AF,$A2,$AF .db $00,$00,$00,$00,$00,$1F,$25,$F5 .db $45,$F5,$45,$F5,$45,$F5,$45,$F5 .db $00,$00,$00,$00,$00,$18,$3C,$E7 .db $42,$E7,$42,$E7,$42,$E7,$42,$E7 .db $00,$00,$40,$41,$55,$55,$77,$FF .db $00,$00,$00,$00,$00,$3C,$42,$FF .db $00,$18,$3C,$24,$3C,$3C,$3C,$3C .db $3C,$4A,$A9,$9F,$F9,$95,$52,$3C .db $FF,$88,$44,$22,$44,$88,$FF,$00 .db $FF,$22,$44,$88,$44,$22,$FF,$00 .db $FF,$08,$AA,$5D,$BA,$10,$FF,$00 .db $81,$00,$C4,$11,$C8,$24,$91,$24 .db $81,$00,$80,$01,$80,$00,$81,$00 .db $00,$00,$03,$03,$04,$08,$18,$3C .db $00,$00,$C0,$C0,$20,$10,$18,$3C .db $7E,$56,$6A,$56,$7E,$24,$5A,$99 .db $A5,$81,$C3,$C3,$81,$81,$E7,$FF .db $18,$24,$3C,$5A,$66,$42,$66,$7E .db $00,$00,$7E,$6A,$56,$6A,$7E,$00 .db $0F,$1A,$15,$0F,$00,$00,$00,$00 .db $FF,$AA,$55,$FF,$00,$00,$00,$00 .db $F0,$58,$A8,$F0,$00,$00,$00,$00 .db $81,$81,$81,$81,$81,$81,$81,$81 .db $81,$81,$81,$81,$81,$81,$81,$81 .db $7C,$44,$54,$44,$54,$44,$7C,$00 .db $07,$19,$24,$50,$80,$FF,$81,$81 .db $E0,$98,$24,$0A,$01,$FF,$81,$81 .db $00,$00,$00,$00,$0F,$1A,$15,$0F .db $00,$00,$00,$00,$FF,$AA,$55,$FF .db $00,$00,$00,$00,$F0,$A8,$58,$F0 .db $00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00 tilesbuf2: .db $00,$00,$00,$00,$00,$00,$00,$00 .db $0F,$10,$2A,$55,$6A,$40,$3F,$00 .db $FF,$00,$AA,$55,$AA,$00,$FF,$00 .db $E0,$10,$A8,$54,$AC,$04,$F8,$00 .db $3C,$42,$A9,$D5,$A9,$81,$7E,$00 .db $00,$00,$00,$00,$00,$F8,$A4,$AF .db $A2,$AF,$A2,$AF,$A2,$AF,$A2,$AF .db $00,$00,$00,$00,$00,$1F,$25,$F5 .db $45,$F5,$45,$F5,$45,$F5,$45,$F5 .db $00,$00,$00,$00,$00,$18,$3C,$E7 .db $42,$E7,$42,$E7,$42,$E7,$42,$E7 .db $00,$00,$40,$41,$55,$55,$77,$FF .db $00,$00,$00,$00,$00,$3C,$42,$FF .db $00,$18,$3C,$24,$3C,$3C,$3C,$3C .db $3C,$4A,$A9,$9F,$F9,$95,$52,$3C .db $FF,$88,$44,$22,$44,$88,$FF,$00 .db $FF,$22,$44,$88,$44,$22,$FF,$00 .db $FF,$08,$AA,$5D,$BA,$10,$FF,$00 .db $81,$00,$C4,$11,$C8,$24,$91,$24 .db $81,$00,$80,$01,$80,$00,$81,$00 .db $00,$00,$03,$03,$04,$08,$18,$3C .db $00,$00,$C0,$C0,$20,$10,$18,$3C .db $7E,$56,$6A,$56,$7E,$24,$5A,$99 .db $A5,$81,$C3,$C3,$81,$81,$E7,$FF .db $18,$24,$3C,$5A,$66,$42,$66,$7E .db $00,$00,$7E,$6A,$56,$6A,$7E,$00 .db $0F,$1A,$15,$0F,$00,$00,$00,$00 .db $FF,$AA,$55,$FF,$00,$00,$00,$00 .db $F0,$58,$A8,$F0,$00,$00,$00,$00 .db $81,$81,$81,$81,$81,$81,$81,$81 .db $81,$81,$81,$81,$81,$81,$81,$81 .db $7C,$44,$54,$44,$54,$44,$7C,$00 .db $07,$19,$24,$50,$80,$FF,$81,$81 .db $E0,$98,$24,$0A,$01,$FF,$81,$81 .db $00,$00,$00,$00,$0F,$1A,$15,$0F .db $00,$00,$00,$00,$FF,$AA,$55,$FF .db $00,$00,$00,$00,$F0,$A8,$58,$F0 .db $00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00 map1: .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;Row 0 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;Row 1 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;Row 2 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;Row 3 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$1A,$1B,$1B,$1B,$1B,$1B,$1B,$1C,$00,$00,$00,$00 ;Row 4 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;Row 5 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;Row 6 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;Row 7 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;Row 8 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;Row 9 .db $00,$00,$00,$00,$00,$00,$16,$00,$00,$00,$00,$25,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;Row 10 .db $1A,$1B,$1B,$1B,$1C,$00,$17,$00,$00,$00,$0E,$25,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;Row 11 .db $00,$00,$00,$01,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$10,$10 .db $10,$10,$10,$10,$10,$10,$10,$10,$02,$02,$03,$07,$00,$00,$00,$00 ;Row 12 .db $00,$22,$23,$24,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$25,$00,$00,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00 ;Row 13 .db $00,$00,$00,$22,$23,$24,$00,$00,$00,$00,$00,$19,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00 ;Row 14 .db $00,$00,$00,$00,$00,$1A,$1B,$1B,$1C,$00,$00,$18,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00 ;Row 15 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$02,$02,$03,$00,$00,$00 .db $20,$21,$00,$00,$00,$00,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00 ;Row 16 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $1D,$1E,$1F,$00,$00,$00,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00 ;Row 17 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 .db $02,$02,$02,$03,$00,$09,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00 ;Row 18 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$0A,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00 ;Row 19 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$0A,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00 ;Row 20 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$0A,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00 ;Row 21 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$04,$00,$00,$00 .db $00,$00,$00,$00,$00,$0A,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00 ;Row 22 .db $00,$00,$00,$00,$00,$07,$01,$11,$03,$00,$04,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$0A,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00 ;Row 23 .db $00,$00,$00,$00,$00,$08,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$0D,$00,$00,$0A,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00 ;Row 24 .db $00,$00,$00,$00,$00,$08,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$01,$02,$02,$02,$02,$02,$02,$02,$02,$03,$00,$00,$00,$00,$00 ;Row 25 .db $00,$00,$00,$00,$00,$08,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;Row 26 .db $00,$00,$01,$02,$02,$02,$03,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;Row 27 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;Row 28 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;Row 29 .db $00,$0C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;Row 30 .db $02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02 .db $02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02 ;Row 31 spritesBig: .db $08,$08,$34,$38,$10,$18,$28,$48 .db $08,$08,$10,$30,$38,$10,$10,$10 .db $10,$10,$30,$5C,$50,$08,$14,$12 .db $10,$10,$38,$38,$18,$30,$30,$30 .db $10,$10,$2C,$1C,$08,$18,$14,$12 .db $10,$10,$08,$0C,$1C,$08,$08,$08 .db $08,$08,$0C,$3A,$0A,$10,$28,$48 .db $08,$08,$1C,$1C,$18,$0C,$0C,$0C .db $04,$04,$1A,$2C,$0C,$14,$24,$40 .db $08,$08,$32,$5C,$10,$08,$14,$04 .db $08,$08,$76,$98,$10,$08,$14,$02 .db $20,$20,$58,$34,$30,$28,$24,$02 .db $10,$10,$4C,$3A,$08,$10,$28,$20 .db $10,$10,$6E,$19,$08,$10,$28,$40 .db $98,$E0,$50,$50,$B0,$A0,$40,$80 .db $98,$E0,$50,$10,$50,$A0,$C0,$80 .db $98,$E0,$10,$50,$B0,$A0,$40,$80 .db $19,$07,$0A,$0A,$0D,$05,$02,$01 .db $19,$07,$0A,$08,$0A,$05,$03,$01 .db $19,$07,$08,$0A,$0D,$05,$02,$01 .db $62,$14,$18,$30,$0E,$0A,$08,$08 .db $62,$14,$18,$10,$0E,$0A,$08,$08 .db $62,$14,$18,$08,$0E,$0A,$08,$08 .db $46,$28,$18,$0C,$70,$50,$10,$10 .db $46,$28,$18,$08,$70,$50,$10,$10 .db $46,$28,$18,$10,$70,$50,$10,$10 .db $22,$24,$1A,$0C,$10,$28,$24,$20 .db $12,$14,$09,$16,$20,$50,$48,$08 .db $44,$24,$58,$30,$08,$14,$24,$04 .db $48,$28,$90,$68,$04,$0A,$12,$10 .db $10,$10,$38,$54,$92,$28,$44,$28 .db $10,$10,$38,$54,$92,$28,$00,$6C .db $10,$10,$38,$54,$92,$00,$28,$6C .db $10,$10,$38,$54,$00,$54,$00,$6C .db $10,$10,$38,$00,$54,$00,$54,$6C .db $10,$10,$00,$38,$00,$54,$00,$7C .db $10,$10,$00,$00,$38,$00,$54,$7C .db $10,$10,$00,$00,$00,$38,$00,$7C .db $10,$10,$00,$00,$00,$00,$38,$7C .db $10,$10,$00,$00,$00,$00,$00,$7C .db $00,$08,$10,$00,$00,$00,$00,$7C .db $00,$00,$00,$18,$00,$00,$00,$7C .db $00,$00,$00,$00,$10,$08,$00,$7C .db $00,$00,$00,$00,$00,$10,$10,$7C .db $00,$00,$00,$00,$00,$00,$00,$7C .end END