; this is a card struct ; starts with five length-prefixed strings in memory ; then a 16bit value of the offset between the tile set and the end ; then the 16bit address of the tile set ; then a 16bit value of the offset between tile map and end ; then the 16bit address of the tile map TheFool: def Card_Offset_title equ @-TheFool db 10, "THE FOOL " db 10, " " def Card_Offset_description equ @-TheFool db 9, "beginning" db 9, "leap " db 9, "naivete " def Card_Offset_tilemap equ @-TheFool dw .BackgroundCopyEnd - .BackgroundCopy dw .BackgroundCopy def Card_Offset_keytiles equ @-TheFool dw .KeyArtTilesEnd - .KeyArtTiles dw .KeyArtTiles def Card_Offset_spritetiles equ @-TheFool dw .SpriteTilesEnd - .SpriteTiles dw .SpriteTiles def Card_Offset_functions equ @-TheFool dw .fInit dw .fUpdate dw .fDraw .fInit: ld hl, CVS ld a, 0 ld [hl+], a ; CVS: timer for dog ld [hl+], a ld [hl+], a ; CVS+2: frame for dog ld [hl+], a ; CVS+3: timer for zero ld [hl+], a ld [hl+], a ; CVS+5: frame for zero ld [hl+], a ; CVS+6: timer for cloud 1 ld [hl+], a ld [hl+], a ; CVS+8: frame for cloud 1 ld [hl+], a ; CVS+9: timer for cloud 2 ld [hl+], a ld [hl+], a ; CVS+11: frame for cloud 2 ld [hl+], a ; CVS+12: timer for cloud 3 ld [hl+], a ld [hl+], a ; CVS+14: frame for cloud 3 ld hl, .doggie1 ld de, MY_OAM ld b, 134 ld c, 34 ld a, $23 ; takkes similar args as copytilestomapunsafe but builds several sprites ; instead. ; location of source tile map: hl ; location in memory to write to: de ; y and x in b and c ; height and width in a & %11110000 and a & %00001111 ??? that's deranged call BuildMetaSprite ld hl, .zero ld de, MY_OAM + 6*4 ; we've already written six sprites for the doggie, 4 bytes each ld bc, $100*26+41 ld a, $22 ; two by two call BuildMetaSprite ; set up the palette for the clouds ld hl, rOBP1 ld [hl], %11_10_01_00 ld hl, .cloud1 ; six sprites for the doggie, four for the zero, 4 bytes each ld de, MY_OAM + 10*4 ld bc, 73*$100 + 15 ld a, $13 ; one by three call BuildMetaSprite ; set those three sprites to use OBP palette 1 ld hl, MY_OAM + 10*4 + 3 set 4, [hl] ld hl, MY_OAM + 11*4 + 3 set 4, [hl] ld hl, MY_OAM + 12*4 + 3 set 4, [hl] ld hl, .cloud2 ; six sprites for the doggie, four for the zero, 4 bytes each ld de, MY_OAM + 13*4 ld bc, 84*$100 + 58 ld a, $13 ; one by three call BuildMetaSprite ld hl, MY_OAM + 13*4 + 3 set 4, [hl] ld hl, MY_OAM + 14*4 + 3 set 4, [hl] ld hl, MY_OAM + 15*4 + 3 set 4, [hl] ld hl, .cloud3 ld de, MY_OAM + 16*4 ld bc, 88*$100 + 67 ld a, $11 call BuildMetaSprite ld hl, MY_OAM + 16*4+3 set 4, [hl] ret .fUpdate: ld hl, CVS call IncrementTimer ld a, [CVS+1] ; checking the high byte of the timer cp a, $06 ; $10 00 = 1 second jp c, .doneWithTimer1 ; if the timer is less than $0600, skip ; if the timer is greater or equal to $0600, reset it ld a, 0 ld [CVS], a ld [CVS+1], a call .dogDance ; and make the dog dance .doneWithTimer1 ld hl, CVS+3 call IncrementTimer ld a, [CVS+3+1] ; check the high byte of the zero sprite timer cp a, $30 ; $10 00 = 1 second jp c, .doneWithTimer2 jp .doneWithTimer2 ld a, 0 ld [CVS+3], a ld [CVS+3+1], a call .zeroRotate .doneWithTimer2 ld hl, CVS+6 call IncrementTimer ld a, [CVS+6+1] cp a, $20 jp c, .doneWithTimer3 ld a, 0 ld [CVS+6], a ld [CVS+6+1], a call .cloud1Move .doneWithTimer3 ld hl, CVS+9 call IncrementTimer ld a, [CVS+9+1] cp a, $20 jp c, .doneWithTimer4 ld a, 0 ld [CVS+9], a ld [CVS+9+1], a call .cloud2Move .doneWithTimer4 ld hl, CVS+12 call IncrementTimer ld a, [CVS+12+1] cp a, $60 jp c, .doneWithTimer5 ld a, 0 ld [CVS+12], a ld [CVS+12+1], a call .cloud3Move .doneWithTimer5 ret .dogDance: ld a, [CVS+2] ; dog animation frame inc a cp a, 2 jp nz, :+ ld a, 0 ; zero the frame if it was 2 : ld [CVS+2], a cp a, 0 jp z, .frame1 cp a, 1 jp z, .frame2 ret ; shouldn't ever hit this .frame1 ld hl, .doggie1 ld de, MY_OAM ld b, 134 ld c, 34 ld a, $23 ; takkes similar args as copytilestomapunsafe but builds several sprites ; instead. ; location of source tile map: hl ; location in memory to write to: de ; y and x in b and c ; height and width in a & %11110000 and a & %00001111 ??? that's deranged call BuildMetaSprite ret .frame2 ld hl, .doggie2 ld de, MY_OAM ld b, 133 ld c, 34 ld a, $23 call BuildMetaSprite ret .doggie1: ; tiles start at 0 db $01, $02, $03 db $04, $08, $06 .doggie2: db $01, $02, $07 db $04, $05, $09 .zeroRotate: ld hl, .zeroCoords ld a, [CVS+5] inc a call ArrayClampLooping ld [CVS+5], a ld b, 0 ld c, a ld hl, .zeroCoords+1 add hl, bc ; add bc twice (it's a list of pairs) to jump to the bc'th element add hl, bc ; of the list ld b, [hl] ; load y into b inc hl ld c, [hl] ; load x into c ld hl, .zero ld de, MY_OAM + 6*4 ; we've already written six sprites for the doggie, 4 bytes each ld a, $22 ; two by two ; location of source tile map: hl ; location in memory to write to: de ; y and x in b and c (set above) ; height and width in a & %11110000 and a & %00001111 ??? that's deranged call BuildMetaSprite ret .zero: db $0a, $0b db $0c, $0d .zeroCoords: ; length-prefixed list of y, x db 4, 26, 41, 27, 42, 26, 43, 25, 42 .cloud1Move: ld hl, .cloud1Anim ld a, [CVS+8] inc a call ArrayClampLooping ld [CVS+8], a ld b, 0 ld c, a ld hl, .cloud1Anim+1 add hl, bc ; add bc twice (it's a list of pairs) to jump to the bc'th element add hl, bc ; of the list ld b, [hl] ; load y into b inc hl ld c, [hl] ; load x into c ld hl, .cloud1 ; six sprites for the doggie, four for the zero, 4 bytes each ld de, MY_OAM + 10*4 ld a, $13 ; two by two ; location of source tile map: hl ; location in memory to write to: de ; y and x in b and c (set above) ; height and width in a & %11110000 and a & %00001111 ??? that's deranged call BuildMetaSprite ret .cloud1: db $0e, $0f, $10 .cloud1Anim: db 9, 73, 15, 73, 15, 73, 16, 73, 17, 73, 18, 73, 19, 73, 18, 73, 17, 73, 16, .cloud2Move: ld hl, .cloud2Anim ld a, [CVS+11] inc a call ArrayClampLooping ld [CVS+11], a ld b, 0 ld c, a ld hl, .cloud2Anim+1 add hl, bc ; add bc twice (it's a list of pairs) to jump to the bc'th element add hl, bc ; of the list ld b, [hl] ; load y into b inc hl ld c, [hl] ; load x into c ld hl, .cloud2 ; six sprites for the doggie, four for the zero, 4 bytes each ld de, MY_OAM + 13*4 ld a, $13 ; two by two ; location of source tile map: hl ; location in memory to write to: de ; y and x in b and c (set above) ; height and width in a & %11110000 and a & %00001111 ??? that's deranged call BuildMetaSprite ret .cloud2: db $11, $12, $13 .cloud2Anim: db 4, 84, 58, 84, 59, 84, 60, 84, 59, .cloud3Move: ld hl, .cloud3Anim ld a, [CVS+14] inc a call ArrayClampLooping ld [CVS+14], a ld b, 0 ld c, a ld hl, .cloud3Anim+1 add hl, bc ; add bc twice (it's a list of pairs) to jump to the bc'th element add hl, bc ; of the list ld b, [hl] ; load y into b inc hl ld c, [hl] ; load x into c ld hl, .cloud3 ; six sprites for the doggie, four for the zero, 4 bytes each ld de, MY_OAM + 16*4 ld a, $11 ; location of source tile map: hl ; location in memory to write to: de ; y and x in b and c (set above) ; height and width in a & %11110000 and a & %00001111 ??? that's deranged call BuildMetaSprite ret .cloud3: db $14 .cloud3Anim: db 2, 88, 66, 88, 67, .fDraw: ret .SpriteTiles: db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $01,$01,$01,$01,$01,$01,$01,$01,$1f,$1f,$1f,$10,$1f,$10,$1f,$1c db $f0,$f0,$fc,$5c,$fe,$06,$5f,$a3,$ff,$01,$ff,$00,$ff,$00,$ff,$00 db $00,$00,$00,$00,$00,$00,$07,$07,$87,$85,$ff,$fd,$ff,$01,$ff,$01 db $07,$07,$01,$01,$01,$01,$01,$01,$00,$00,$00,$00,$00,$00,$00,$00 db $ff,$00,$ff,$00,$ff,$00,$ff,$80,$ff,$93,$fe,$d2,$7e,$76,$1c,$1c db $ff,$01,$ff,$01,$ff,$01,$ff,$01,$ff,$c9,$7f,$69,$3f,$3b,$0e,$0e db $00,$00,$00,$00,$00,$00,$0e,$0e,$8f,$8b,$ff,$fd,$ff,$01,$ff,$01 db $ff,$00,$ff,$00,$ff,$00,$ff,$80,$ff,$93,$fe,$96,$fc,$dc,$70,$70 db $ff,$01,$ff,$01,$ff,$01,$ff,$01,$ff,$c9,$7f,$4b,$7e,$6e,$38,$38 db $00,$00,$03,$03,$07,$07,$0c,$0c,$18,$18,$18,$18,$30,$30,$30,$30 db $00,$00,$c0,$c0,$e0,$e0,$30,$30,$18,$18,$18,$18,$0c,$0c,$0c,$0c db $30,$30,$30,$30,$18,$18,$18,$18,$0c,$0c,$07,$07,$03,$03,$00,$00 db $0c,$0c,$0c,$0c,$18,$18,$18,$18,$30,$30,$e0,$e0,$c0,$c0,$00,$00 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$00,$3f db $00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$00,$1f,$00,$ff,$00,$ff db $00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$c0,$00,$f0,$00,$fc db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$78,$00,$ff,$00,$ff db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$c0,$00,$f0 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$ff .SpriteTilesEnd: .KeyArtTiles: db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $1f,$00,$0f,$00,$0f,$00,$0f,$00,$07,$00,$07,$00,$07,$00,$07,$00 db $07,$00,$03,$00,$03,$00,$03,$00,$03,$00,$03,$00,$01,$00,$01,$00 db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$e7,$1f,$cf,$30,$9f,$62,$7f,$81 db $ff,$00,$ff,$00,$ff,$00,$ff,$fc,$e1,$1e,$ff,$3e,$e1,$1e,$90,$ff db $f8,$00,$f8,$00,$f8,$00,$f8,$00,$f8,$00,$f8,$00,$70,$80,$30,$c0 db $00,$00,$00,$01,$00,$01,$01,$02,$03,$04,$07,$08,$0f,$10,$0f,$10 db $79,$86,$f7,$08,$f7,$08,$ef,$10,$ef,$10,$de,$21,$de,$21,$bd,$42 db $c0,$7f,$80,$7f,$00,$ff,$80,$7f,$f0,$cf,$f8,$87,$f8,$07,$f8,$87 db $00,$f0,$00,$fc,$00,$f8,$00,$f8,$00,$f8,$00,$f8,$00,$fc,$80,$7c db $1f,$20,$1f,$20,$0f,$11,$07,$0a,$04,$06,$05,$04,$06,$04,$05,$04 db $fd,$7a,$de,$8f,$a9,$03,$55,$01,$a8,$02,$55,$00,$aa,$00,$55,$00 db $fc,$43,$fd,$02,$3e,$c1,$0e,$31,$81,$9e,$8f,$f0,$8e,$71,$5e,$9e db $80,$7c,$80,$7c,$00,$fc,$00,$fc,$17,$ff,$c4,$ff,$0c,$ff,$9f,$3f db $00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$40,$c0,$e0,$e0,$e1,$e0 db $06,$04,$05,$04,$07,$05,$86,$06,$84,$04,$c0,$00,$c0,$00,$c0,$00 db $aa,$00,$55,$01,$ff,$ff,$3f,$01,$3f,$01,$3e,$02,$3f,$02,$1e,$02 db $33,$ae,$ff,$47,$79,$47,$fb,$46,$7e,$44,$e5,$5c,$3e,$44,$b9,$46 db $5f,$0f,$af,$07,$57,$03,$ab,$81,$d5,$81,$ab,$81,$d5,$81,$ab,$81 db $d1,$f0,$8f,$f8,$87,$fc,$87,$fe,$87,$fe,$87,$fe,$87,$fe,$87,$fe db $1f,$02,$1e,$02,$1f,$02,$1e,$02,$1f,$02,$1e,$02,$0f,$02,$0e,$03 db $3c,$42,$9e,$21,$5e,$21,$9e,$21,$5f,$20,$af,$10,$4f,$10,$af,$11 db $d5,$81,$ab,$81,$d5,$81,$ab,$81,$d5,$81,$ab,$83,$d7,$83,$ab,$03 db $87,$fe,$87,$fe,$87,$fe,$87,$fe,$87,$fe,$0f,$fc,$0f,$fc,$1f,$f8 db $fc,$00,$fe,$00,$fe,$00,$ff,$00,$ff,$00,$7f,$00,$3f,$03,$1f,$07 db $0f,$01,$0f,$01,$0f,$03,$0f,$0f,$3f,$3f,$ff,$ff,$ff,$ff,$ff,$ff db $4f,$11,$8f,$31,$e7,$f9,$e3,$ed,$ff,$fd,$ff,$ff,$ff,$ff,$ff,$ff db $57,$03,$ab,$03,$57,$03,$af,$07,$55,$04,$ae,$04,$55,$04,$ae,$05 db $3f,$f0,$7f,$e0,$ff,$c0,$ff,$80,$7f,$80,$7f,$80,$7f,$80,$ff,$00 db $1f,$0f,$7f,$7f,$7f,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fc,$fc db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$bf,$ff,$1f,$3f,$1f,$3f db $54,$05,$be,$1d,$7d,$3c,$ff,$7e,$ff,$fe,$ff,$fe,$ff,$fe,$ff,$fe db $e0,$00,$f8,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$1c,$e3,$3b db $00,$00,$00,$01,$c0,$01,$e1,$02,$e1,$06,$e3,$04,$c7,$08,$8f,$10 db $ff,$ff,$7f,$ff,$ff,$7f,$ff,$3f,$fe,$1e,$e8,$18,$c0,$20,$88,$40 db $f8,$f8,$c0,$c0,$80,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f db $fc,$fc,$fc,$fc,$fc,$fc,$fe,$fe,$fe,$fe,$fc,$fc,$fc,$fc,$fc,$fc db $e0,$38,$f0,$18,$f8,$0c,$f8,$0e,$fc,$07,$fe,$03,$ff,$01,$ff,$01 db $ff,$f0,$3f,$20,$3c,$23,$1c,$12,$1e,$1e,$0f,$0e,$07,$84,$0f,$c8 db $18,$80,$38,$80,$3c,$00,$7c,$00,$fc,$00,$fc,$00,$fc,$00,$ff,$00 db $1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$ff,$1f db $fc,$fc,$fc,$fc,$fe,$fe,$fe,$fe,$ff,$ff,$ff,$ff,$f0,$fc,$bc,$c2 db $9f,$f0,$fb,$64,$f5,$0a,$ee,$11,$55,$aa,$aa,$55,$55,$aa,$aa,$55 db $7c,$82,$7e,$81,$3f,$40,$1f,$20,$0f,$90,$87,$48,$43,$a4,$a1,$52 db $55,$2a,$3b,$04,$15,$8a,$8e,$11,$85,$4a,$c2,$05,$e1,$02,$e2,$11 db $55,$aa,$aa,$55,$55,$aa,$aa,$55,$11,$ee,$af,$57,$47,$bf,$ae,$5f db $55,$aa,$aa,$55,$55,$aa,$af,$5f,$ff,$ff,$f0,$ff,$fe,$ff,$0f,$ff db $55,$aa,$aa,$55,$55,$aa,$ff,$ff,$ff,$ff,$00,$ff,$00,$ff,$80,$ff db $50,$a9,$a8,$54,$fd,$fd,$fe,$ff,$38,$f8,$40,$c0,$40,$e0,$40,$ff db $f1,$08,$60,$9c,$d3,$ef,$7f,$ff,$01,$01,$01,$01,$01,$01,$01,$ff db $16,$ef,$ae,$57,$46,$bf,$af,$57,$03,$ff,$ab,$57,$01,$ff,$ab,$55 db $f0,$ff,$3e,$ff,$07,$ff,$01,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff db $00,$ff,$00,$ff,$fc,$ff,$ff,$ff,$7f,$ff,$00,$ff,$00,$ff,$00,$ff db $3f,$ff,$00,$ff,$01,$ff,$ff,$ff,$ff,$ff,$01,$ff,$00,$ff,$00,$ff db $ff,$ff,$00,$ff,$c0,$ff,$f0,$ff,$ff,$ff,$ff,$ff,$00,$ff,$00,$ff db $00,$ff,$00,$ff,$00,$ff,$02,$ff,$ff,$ff,$ff,$ff,$00,$ff,$00,$ff db $80,$ff,$80,$ff,$80,$ff,$c0,$ff,$c0,$ff,$c0,$ff,$e0,$ff,$e0,$7f db $60,$ff,$60,$ff,$60,$ff,$60,$ff,$60,$ff,$30,$ff,$30,$ff,$30,$ff db $1f,$00,$1f,$00,$1f,$00,$1f,$00,$1f,$00,$1f,$00,$1f,$00,$ff,$00 db $80,$00,$c0,$00,$40,$00,$60,$00,$33,$00,$3f,$00,$3f,$00,$1f,$00 db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$3f,$00,$1f,$00 db $0f,$00,$07,$00,$03,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $80,$00,$80,$00,$c0,$00,$c0,$00,$c0,$00,$e0,$00,$e0,$00,$f0,$00 db $f0,$00,$f0,$00,$f8,$00,$f8,$00,$fc,$00,$fc,$00,$fe,$00,$fe,$00 db $fe,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00 db $e0,$00,$e0,$00,$f0,$00,$f0,$00,$f8,$00,$f8,$00,$f8,$00,$fc,$00 db $ff,$00,$ff,$00,$ff,$00,$ee,$11,$55,$aa,$aa,$55,$55,$aa,$aa,$55 db $55,$aa,$aa,$55,$7f,$ff,$ff,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff db $55,$aa,$af,$5f,$ff,$ff,$f8,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01,$00,$00 db $01,$00,$01,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fe,$00,$fe,$00,$fe,$00 db $fe,$00,$fe,$00,$fc,$00,$fc,$00,$fc,$00,$fc,$00,$fc,$00,$fc,$00 db $00,$00,$00,$00,$00,$00,$01,$00,$01,$00,$03,$00,$03,$00,$07,$00 db $07,$00,$07,$00,$0f,$00,$0f,$00,$0f,$00,$1f,$00,$1f,$00,$3f,$00 db $3f,$00,$3f,$00,$7f,$00,$7f,$00,$7f,$00,$ff,$00,$ff,$00,$ff,$00 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$00 db $03,$00,$0f,$00,$3f,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00 db $fe,$00,$fc,$00,$f8,$00,$f0,$00,$e0,$00,$c0,$00,$80,$00,$80,$00 db $fe,$00,$fc,$00,$f8,$00,$f0,$00,$e0,$00,$c0,$00,$80,$00,$00,$00 db $01,$ff,$23,$dd,$01,$ff,$ab,$55,$00,$ff,$22,$dd,$00,$ff,$88,$77 db $5e,$bf,$b8,$44,$54,$aa,$ee,$11,$55,$aa,$aa,$55,$55,$aa,$aa,$55 db $01,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$80,$ff,$80,$ff db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff db $55,$aa,$bb,$44,$55,$aa,$ee,$11,$55,$aa,$aa,$55,$55,$aa,$aa,$55 db $55,$aa,$aa,$55,$55,$aa,$aa,$55,$11,$ee,$aa,$55,$44,$bb,$aa,$55 db $11,$ee,$aa,$55,$44,$bb,$aa,$55,$00,$ff,$aa,$55,$00,$ff,$aa,$55 db $00,$ff,$22,$dd,$00,$ff,$aa,$55,$00,$ff,$22,$dd,$00,$ff,$88,$77 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$80,$00 db $c0,$00,$c0,$00,$e0,$00,$e0,$00,$f0,$00,$f0,$00,$f0,$00,$f8,$00 db $f8,$00,$fc,$00,$fc,$00,$fe,$00,$fe,$00,$fe,$00,$ff,$00,$ff,$00 .KeyArtTilesEnd: .BackgroundCopy: ; tiles start at 26 db $75, $1a, $1b, $61, $61, $64, $1a, $1a db $76, $1a, $1c, $61, $61, $65, $1a, $1a db $77, $1a, $63, $1d, $1e, $1f, $1a, $66 db $61, $5a, $20, $21, $22, $23, $1a, $67 db $61, $5b, $24, $25, $26, $27, $28, $68 db $58, $5c, $29, $2a, $2b, $2c, $2d, $61 db $59, $58, $5d, $2e, $2f, $30, $31, $61 db $1a, $59, $32, $33, $34, $35, $36, $6c db $1a, $62, $37, $38, $39, $3a, $6b, $69 db $3b, $3c, $3d, $3e, $3f, $40, $57, $6a db $41, $42, $43, $1a, $44, $45, $56, $61 db $5e, $46, $71, $71, $6e, $47, $48, $71 db $72, $49, $4a, $4b, $5f, $4c, $4d, $60 db $73, $4e, $6f, $4f, $50, $51, $52, $53 db $74, $6d, $54, $70, $70, $70, $70, $70 db $70, $70, $55, $70, $70, $70, $70, $70 .BackgroundCopyEnd: