515 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			515 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| ; 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, "          "
 | |
|   db 10, "          "
 | |
|   db 10, "beginning "
 | |
|   db 10, "leap      "
 | |
|   db 10, "naivete   "
 | |
| def Card_Offset_reverse equ @-TheFool
 | |
|   db 10, "THE FOOL  "
 | |
|   db 10, "(reversed)"
 | |
|   db 10, "          "
 | |
|   db 10, "beginning "
 | |
|   db 10, "reluctant "
 | |
|   db 10, "reckless  "
 | |
| 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
 | |
|   dw .fPrintPrep
 | |
| 
 | |
| .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  
 | |
|   
 | |
|   ret ; we're getting rid of everything but the doggie
 | |
|   
 | |
|   
 | |
|   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, 78*$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, 92*$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
 | |
|   ret ; don't need anything else
 | |
|   
 | |
|   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
 | |
| 
 | |
|     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
 | |
|   ld bc, 0
 | |
|   ; 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 bc, 0
 | |
|   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, 78, 15, 78, 15, 78, 16, 78, 17, 78, 18, 78, 19, 78, 18, 78, 17, 78, 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 bc, 0
 | |
|   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 bc, 0
 | |
|   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, 92, 66, 92, 67,   
 | |
|   
 | |
| 
 | |
| 
 | |
| .fDraw:
 | |
|   ret 
 | |
|   
 | |
| .fPrintPrep:
 | |
|   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,$00,$03,$00,$07,$00,$0c,$00,$18,$00,$18,$00,$30,$00,$30
 | |
| 	db $00,$00,$00,$c0,$00,$e0,$00,$30,$00,$18,$00,$18,$00,$0c,$00,$0c
 | |
| 	db $00,$30,$00,$30,$00,$18,$00,$18,$00,$0c,$00,$07,$00,$03,$00,$00
 | |
| 	db $00,$0c,$00,$0c,$00,$18,$00,$18,$00,$30,$00,$e0,$00,$c0,$00,$00
 | |
| 	db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$00,$3f,$00
 | |
| 	db $00,$00,$00,$00,$00,$00,$00,$00,$07,$00,$1f,$00,$ff,$00,$ff,$00
 | |
| 	db $00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$c0,$00,$f0,$00,$f0,$00
 | |
| 	db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$00
 | |
| 	db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$78,$00,$ff,$00,$ff,$00
 | |
| 	db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$c0,$00,$f0,$00
 | |
| 	db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$ff,$00
 | |
| .SpriteTilesEnd:
 | |
| 
 | |
| 
 | |
| .KeyArtTiles:
 | |
| 	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,$80,$00,$80,$00
 | |
| 	db $1f,$00,$0f,$00,$0f,$00,$0f,$00,$07,$00,$07,$00,$07,$00,$07,$00
 | |
| 	db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00
 | |
| 	db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fe,$00,$fe,$00,$fe,$00
 | |
| 	db $c0,$00,$c0,$00,$e0,$00,$e0,$00,$f0,$00,$f0,$00,$f0,$00,$f8,$00
 | |
| 	db $07,$00,$03,$00,$03,$00,$03,$00,$03,$00,$03,$00,$01,$00,$01,$00
 | |
| 	db $fe,$00,$fe,$00,$fc,$00,$fc,$00,$fc,$00,$fc,$00,$fc,$00,$fc,$00
 | |
| 	db $f8,$00,$fc,$00,$fc,$00,$fe,$00,$fe,$00,$fe,$00,$ff,$00,$ff,$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,$c0,$00,$87,$00,$1f,$00,$3f,$00,$7c,$03
 | |
| 	db $ff,$00,$ff,$00,$ff,$00,$07,$00,$c3,$30,$f0,$08,$54,$ac,$b4,$ef
 | |
| 	db $f8,$00,$f8,$00,$f8,$00,$f8,$00,$f8,$00,$38,$00,$10,$80,$00,$c0
 | |
| 	db $00,$00,$00,$00,$00,$00,$01,$00,$01,$00,$03,$00,$03,$00,$07,$00
 | |
| 	db $80,$00,$80,$00,$c0,$00,$c0,$00,$c0,$00,$e0,$00,$e0,$00,$f0,$00
 | |
| 	db $00,$00,$01,$00,$03,$00,$07,$00,$0f,$00,$1f,$00,$1f,$00,$3f,$00
 | |
| 	db $f0,$0f,$e0,$18,$e2,$18,$c2,$30,$c4,$30,$84,$61,$88,$61,$01,$c2
 | |
| 	db $ae,$ff,$fe,$ff,$1f,$ff,$07,$7f,$f0,$cf,$f8,$87,$f8,$07,$f9,$87
 | |
| 	db $70,$f0,$0c,$fc,$00,$f8,$68,$f8,$48,$f8,$00,$f8,$00,$fc,$c4,$7c
 | |
| 	db $07,$00,$07,$00,$0f,$00,$0f,$00,$0f,$00,$1f,$00,$1f,$00,$3f,$00
 | |
| 	db $f0,$00,$f0,$00,$f8,$00,$f8,$00,$fc,$00,$fc,$00,$fe,$00,$fe,$00
 | |
| 	db $3f,$00,$3f,$00,$1e,$01,$0d,$02,$00,$06,$01,$04,$02,$04,$01,$04
 | |
| 	db $01,$fa,$56,$8f,$a9,$03,$55,$01,$a8,$02,$55,$00,$aa,$00,$55,$00
 | |
| 	db $fd,$43,$fd,$02,$7f,$81,$1e,$61,$87,$9e,$8f,$f0,$8e,$71,$5e,$9e
 | |
| 	db $c4,$7c,$c4,$7c,$84,$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 $3f,$00,$3f,$00,$7f,$00,$7f,$00,$7f,$00,$ff,$00,$ff,$00,$ff,$00
 | |
| 	db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$3f,$00,$1f,$00
 | |
| 	db $fe,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00
 | |
| 	db $02,$04,$01,$04,$03,$05,$82,$06,$80,$04,$c0,$00,$c0,$00,$c0,$00
 | |
| 	db $aa,$00,$55,$01,$ff,$ff,$01,$01,$39,$01,$38,$02,$39,$02,$18,$02
 | |
| 	db $33,$ae,$ff,$47,$79,$47,$fb,$46,$7e,$44,$e5,$5c,$76,$0c,$f1,$0e
 | |
| 	db $5f,$0f,$af,$07,$57,$03,$2b,$81,$55,$81,$2b,$81,$55,$81,$2b,$81
 | |
| 	db $d1,$f0,$89,$f8,$8c,$fc,$8e,$fe,$8e,$fe,$8e,$fe,$8e,$fe,$8e,$fe
 | |
| 	db $0f,$00,$07,$00,$03,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00
 | |
| 	db $e0,$00,$e0,$00,$f0,$00,$f0,$00,$f8,$00,$f8,$00,$f8,$00,$fc,$00
 | |
| 	db $19,$02,$18,$02,$19,$02,$18,$02,$19,$02,$18,$02,$09,$02,$08,$03
 | |
| 	db $78,$06,$bc,$03,$7c,$03,$be,$01,$7e,$01,$bf,$00,$5f,$00,$be,$01
 | |
| 	db $55,$81,$2b,$81,$55,$81,$2b,$81,$55,$81,$2b,$83,$57,$83,$ab,$03
 | |
| 	db $8e,$fe,$9e,$fe,$9e,$fe,$9e,$fe,$9e,$fe,$1c,$fc,$3d,$fc,$79,$f8
 | |
| 	db $fc,$00,$fe,$00,$fe,$00,$ff,$00,$ff,$00,$7e,$00,$3e,$00,$18,$00
 | |
| 	db $09,$01,$08,$01,$03,$03,$07,$07,$0f,$0f,$3f,$3f,$ff,$ff,$ff,$ff
 | |
| 	db $5e,$01,$be,$01,$fe,$e1,$fe,$f1,$fe,$fd,$fe,$ff,$fe,$ff,$fe,$ff
 | |
| 	db $57,$03,$ab,$03,$57,$03,$af,$07,$54,$04,$ad,$04,$55,$04,$a9,$08
 | |
| 	db $f3,$f0,$e7,$e0,$cf,$c0,$9f,$80,$3f,$00,$ff,$00,$ff,$00,$ff,$00
 | |
| 	db $fe,$00,$fc,$00,$f8,$00,$f0,$00,$e0,$00,$c0,$00,$80,$00,$00,$00
 | |
| 	db $03,$00,$0f,$00,$1f,$00,$1f,$00,$1f,$00,$3f,$00,$3f,$00,$7f,$00
 | |
| 	db $ff,$7f,$ff,$3f,$ff,$1f,$ff,$0f,$ff,$0f,$c7,$3f,$03,$ff,$00,$f8
 | |
| 	db $fe,$ff,$7e,$ff,$7f,$ff,$7f,$ff,$7f,$ff,$7f,$ff,$7f,$ff,$ff,$fe
 | |
| 	db $73,$30,$f3,$70,$fb,$f8,$fb,$f8,$fb,$f8,$fb,$f8,$f9,$f8,$f0,$f0
 | |
| 	db $e0,$00,$f8,$00,$ff,$00,$ff,$00,$87,$00,$31,$30,$5c,$7c,$43,$73
 | |
| 	db $00,$00,$00,$00,$c1,$00,$fb,$00,$f3,$00,$e7,$00,$4f,$00,$1f,$00
 | |
| 	db $fe,$01,$fc,$03,$f8,$07,$f0,$0e,$e0,$1c,$c0,$38,$80,$60,$08,$c0
 | |
| 	db $00,$c0,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 | |
| 	db $ff,$fc,$7f,$78,$7f,$00,$7f,$00,$7f,$00,$7f,$00,$7f,$00,$7f,$00
 | |
| 	db $70,$f0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$c0,$00,$c0,$00,$c0
 | |
| 	db $00,$00,$00,$00,$00,$00,$00,$00,$03,$00,$0f,$00,$3f,$00,$7f,$00
 | |
| 	db $03,$00,$0f,$00,$3f,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00
 | |
| 	db $40,$70,$20,$38,$90,$1c,$c8,$0e,$e4,$07,$f2,$03,$f9,$01,$fd,$01
 | |
| 	db $fe,$f1,$3c,$23,$3c,$22,$18,$16,$1e,$1e,$0e,$0e,$04,$84,$09,$c8
 | |
| 	db $18,$80,$38,$00,$3c,$00,$7c,$00,$fc,$00,$fc,$00,$fc,$00,$fe,$00
 | |
| 	db $7f,$00,$7f,$00,$7f,$00,$7f,$00,$3f,$00,$1f,$00,$0f,$00,$07,$00
 | |
| 	db $00,$c0,$00,$c0,$80,$60,$80,$60,$c0,$30,$e0,$10,$e0,$18,$f1,$08
 | |
| 	db $7f,$00,$7f,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00
 | |
| 	db $fc,$00,$fe,$00,$ff,$00,$ee,$11,$55,$aa,$aa,$55,$55,$aa,$aa,$55
 | |
| 	db $93,$f0,$63,$64,$05,$0a,$ee,$11,$55,$aa,$aa,$55,$55,$aa,$aa,$55
 | |
| 	db $55,$aa,$bb,$44,$55,$aa,$ee,$11,$55,$aa,$aa,$55,$55,$aa,$aa,$55
 | |
| 	db $43,$a0,$b9,$40,$54,$a8,$ee,$10,$55,$aa,$aa,$55,$55,$aa,$aa,$55
 | |
| 	db $f1,$0c,$f8,$04,$f8,$06,$7c,$02,$3c,$03,$be,$01,$1f,$80,$8f,$40
 | |
| 	db $55,$aa,$bb,$44,$55,$aa,$2e,$51,$15,$2a,$0a,$95,$05,$c2,$b2,$71
 | |
| 	db $55,$aa,$aa,$55,$55,$aa,$aa,$55,$11,$ee,$aa,$55,$44,$bb,$aa,$55
 | |
| 	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 $55,$aa,$aa,$55,$7f,$ff,$ff,$ff,$00,$fe,$00,$fe,$00,$fe,$00,$fe
 | |
| 	db $47,$a0,$a3,$50,$c7,$c7,$18,$18,$60,$60,$80,$80,$80,$c0,$80,$ff
 | |
| 	db $c9,$48,$84,$84,$02,$02,$02,$02,$06,$0e,$0c,$1c,$30,$71,$c0,$c7
 | |
| 	db $55,$aa,$af,$5f,$ff,$ff,$f8,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff
 | |
| 	db $11,$ee,$aa,$55,$44,$bb,$aa,$55,$00,$ff,$aa,$55,$00,$ff,$aa,$55
 | |
| 	db $16,$ef,$ae,$57,$46,$bf,$af,$57,$03,$ff,$ab,$57,$01,$ff,$ab,$55
 | |
| 	db $01,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$80,$ff,$80,$ff
 | |
| 	db $f0,$ff,$3e,$ff,$07,$ff,$01,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff
 | |
| 	db $00,$fe,$00,$ff,$f8,$ff,$ff,$ff,$7f,$ff,$00,$ff,$00,$ff,$00,$ff
 | |
| 	db $7f,$7f,$00,$00,$00,$ff,$ff,$ff,$ff,$ff,$01,$ff,$00,$ff,$00,$ff
 | |
| 	db $80,$9f,$00,$3f,$00,$ff,$e0,$ff,$ff,$ff,$ff,$ff,$00,$ff,$00,$ff
 | |
| 	db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$ff,$ff,$ff,$ff,$00,$ff,$00,$ff
 | |
| 	db $00,$ff,$22,$dd,$00,$ff,$aa,$55,$00,$ff,$22,$dd,$00,$ff,$88,$77
 | |
| 	db $01,$ff,$23,$dd,$01,$ff,$ab,$55,$00,$ff,$22,$dd,$00,$ff,$88,$77
 | |
| 	db $80,$ff,$80,$ff,$80,$ff,$c0,$ff,$c0,$ff,$c0,$ff,$e0,$ff,$e0,$7f
 | |
| 	db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff
 | |
| 	db $60,$ff,$60,$ff,$60,$ff,$60,$ff,$60,$ff,$30,$ff,$30,$ff,$30,$ff
 | |
| .KeyArtTilesEnd:
 | |
| 
 | |
| .BackgroundCopy: ; tiles start at 26
 | |
| 	db $1b, $1a, $1c, $1d, $1d, $1e, $1a, $1a
 | |
| 	db $1f, $1a, $20, $1d, $1d, $21, $1a, $1a
 | |
| 	db $22, $1a, $23, $24, $25, $26, $1a, $27
 | |
| 	db $1d, $28, $29, $2a, $2b, $2c, $1a, $2d
 | |
| 	db $1d, $2e, $2f, $30, $31, $32, $33, $34
 | |
| 	db $35, $36, $37, $38, $39, $3a, $3b, $1d
 | |
| 	db $3c, $35, $3d, $3e, $3f, $40, $41, $1d
 | |
| 	db $1a, $3c, $42, $43, $44, $45, $46, $47
 | |
| 	db $1a, $1a, $48, $49, $4a, $4b, $47, $1a
 | |
| 	db $4c, $4d, $4e, $4f, $50, $51, $52, $53
 | |
| 	db $54, $55, $56, $1a, $57, $58, $59, $1d
 | |
| 	db $5a, $5b, $5c, $5c, $5d, $5e, $5f, $5c
 | |
| 	db $60, $61, $62, $63, $64, $65, $66, $67
 | |
| 	db $68, $69, $6a, $6b, $6c, $6d, $6e, $6f
 | |
| 	db $70, $71, $72, $73, $73, $73, $73, $73
 | |
| 	db $73, $73, $74, $73, $73, $73, $73, $73
 | |
| .BackgroundCopyEnd:
 |