git.y1.nz

gbdk-2020

GameBoy Development Kit
download: https://git.y1.nz/archives/gbdk.tar.gz
README | Files | Log | Refs | LICENSE

gbdk-lib/examples/gb/space/space.s

      1 	;; Little demo illustrating how to use the graphical possibilities
      2 	;;  of the GB (background, window and animated sprite)
      3 	;; I have used fixed-point values for both the position and
      4 	;;  speed of objects to get smooth movements
      5 	;;
      6 	;; OBJ data		: 0x8000 -> 0x8FFF (unsigned)
      7 	;; Window data		: 0x8800 -> 0x97FF (signed)
      8 	;; Background data	: 0x8800 -> 0x97FF (signed)
      9 	;;
     10 	;; Tiled 0xFC -> 0xFF are standard tiles (all black -> all white)
     11 	;;
     12 	;; Keys:
     13 	;; Arrow keys		: Change the speed (and direction) of the sprite
     14 	;; Arrow keys + A	: Change the speed (and direction) of the window
     15 	;; Arrow keys + B	: Change the speed (and direction) of the background
     16 	;; START		: Open/close the door
     17 	;; SELECT		: Basic fading effect
     18 	;;
     19 	;; Note that the window is kept in the lower right part of the screen
     20 	;; since it can't be made transparent
     21 
     22 	.include	"global.s"
     23 
     24 	.globl	.init_vram
     25 	.globl	.copy_vram
     26 	.globl	.init_wtt
     27 	.globl	.init_btt
     28 	.globl	.set_xy_wtt
     29 	.globl	.mv_sprite
     30 	.globl	.set_sprite_prop
     31 	.globl	.set_sprite_tile
     32 	.globl	.jpad
     33 
     34 	.NBDFRAMES	= .endfilm-.film	; Nb frames for the door
     35 	.NBSFRAMES	= 0x07			; Nb frames for the sprite
     36 	.WINSZX		= 0x80			; Size of the picture in the window
     37 	.WINSZY		= 0x50
     38 	.MINWINX	= .MAXWNDPOSX-.WINSZX+1 ; Bounds of the window origin
     39 	.MINWINY	= .MAXWNDPOSY-.WINSZY+1
     40 	.MAXWINX	= .MAXWNDPOSX
     41 	.MAXWINY	= .MAXWNDPOSY
     42 	.FADESTEP	= 0x10			; Nb steps for the fading effect
     43 	.STARTFADE	= 0x06*.FADESTEP	; Initial value for the fading effect
     44 
     45 	.CLOSED		= 0x00
     46 	.OPENING	= 0x01
     47 	.OPENED		= 0x02
     48 	.CLOSING	= 0x03
     49 
     50 	.module	Space
     51 
     52 	.area	_DATA
     53 
     54 .time:				; Global "time" value (counter)
     55 	.ds	0x01
     56 
     57 .doorstate:			; State of the door (OPENED, CLOSED...)
     58 	.ds	0x01
     59 .doorpos:			; Current position in the door animation
     60 	.ds	0x01
     61 
     62 .color:				; Current color for fading effect
     63 	.ds	0x01
     64 
     65 .sframe:			; Current frame of the sprite
     66 	.ds	0x01
     67 
     68 .bposx:				; Background position (fixed point)
     69 	.ds	0x02
     70 .bposy:
     71 	.ds	0x02
     72 .bspx:				; Background speed (fixed point)
     73 	.ds	0x02
     74 .bspy:
     75 	.ds	0x02
     76 
     77 .wposx:				; Window position (fixed point)
     78 	.ds	0x02
     79 .wposy:
     80 	.ds	0x02
     81 .wspx:				; Window speed (fixed point)
     82 	.ds	0x02
     83 .wspy:
     84 	.ds	0x02
     85 
     86 .sposx:				; Sprite position (fixed point)
     87 	.ds	0x02
     88 .sposy:
     89 	.ds	0x02
     90 .sspx:				; Sprite speed (fixed point)
     91 	.ds	0x02
     92 .sspy:
     93 	.ds	0x02
     94 
     95 	.area	_CODE
     96 
     97 _main::
     98 	DI			; Disable interrupts
     99 	;; Turn the screen off
    100 	CALL	.display_off
    101 
    102 	XOR	A
    103 	LD	(.time),A
    104 	LD	(.color),A
    105 
    106 	LD	A,#0b11100100
    107 	LDH	(.BGP),A
    108 	LDH	(.OBP0),A
    109 
    110 	; Initialize tiles
    111 	LD	HL,#0x8000
    112 	LD	DE,#0x1000
    113 	LD	B,#0x00
    114 	CALL	.init_vram	; Init the tile set at 0x8000 with 0x00
    115 	LD	B,#0xFF
    116 	CALL	.init_btt	; Init the tiles tables with 0xFF
    117 	CALL	.init_wtt
    118 
    119 	LD	HL,#.tp0	; Move tiles (standard tiles)
    120 	LD	DE,#0x9000-(.endtp0-.tp0)
    121 	LD	BC,#.endtp0-.tp0
    122 	CALL	.copy_vram
    123 
    124 	LD	HL,#.tp1	; Move tiles (earth)
    125 	LD	DE,#0x8000
    126 	LD	BC,#.endtp1-.tp1
    127 	CALL	.copy_vram
    128 
    129 	LD	HL,#.tp2	; Move tiles (door)
    130 	LD	DE,#0x8800
    131 	LD	BC,#.endtp2-.tp2
    132 	CALL	.copy_vram
    133 
    134 	LD	HL,#.tp3	; Move tiles (background)
    135 	LD	DE,#0x9000
    136 	LD	BC,#.endtp3-.tp3
    137 	CALL	.copy_vram
    138 
    139 	;; Draw the background
    140 	LD	HL,#.bkg_tiles
    141 	LD	DE,#0x9800
    142 	LD	BC,#0x0400	; One whole GB Screen
    143 	CALL	.copy_vram
    144 
    145 	;; Draw the frame in the window
    146 	LD	BC,#.frame_tiles
    147 	LD	DE,#0x0000/8	; Place image at (0x00,0x00)
    148 	LD	HL,#0x8050/8	; Image size is 0x80 x 0x50
    149 	CALL	.set_xy_wtt
    150 
    151 	;; Draw the door in the window
    152 	LD	BC,#.door1_tiles
    153 	LD	DE,#0x1010/8	; Place image at (0x10,0x10)
    154 	LD	HL,#0x6030/8	; Image size is 0x60 x 0x30
    155 	CALL	.set_xy_wtt
    156 	LD	A,#.CLOSED
    157 	LD	(.doorstate),A
    158 
    159 	; Initialize background
    160 	XOR	A
    161 	LD	(.bposx),A
    162 	LDH	(.SCX),A
    163 	LD	(.bposx+1),A
    164 	LD	(.bposy),A
    165 	LDH	(.SCY),A
    166 	LD	(.bposy+1),A
    167 	LD	A,#-0x01
    168 	LD	(.bspx),A
    169 	XOR	A
    170 	LD	(.bspx+1),A
    171 	XOR	A
    172 	LD	(.bspy),A
    173 	LD	A,#0x80
    174 	LD	(.bspy+1),A
    175 
    176 	; Initialize window
    177 	LD	A,#.MAXWNDPOSX
    178 	LD	(.wposx),A
    179 	LDH	(.WX),A
    180 	XOR	A
    181 	LD	(.wposx+1),A
    182 	LD	A,#.MAXWNDPOSY
    183 	LD	(.wposy),A
    184 	LDH	(.WY),A
    185 	XOR	A
    186 	LD	(.wposy+1),A
    187 	LD	A,#-0x01
    188 	LD	(.wspx),A
    189 	LD	A,#0x80
    190 	LD	(.wspx+1),A
    191 	LD	A,#-0x01
    192 	LD	(.wspy),A
    193 	LD	A,#0xC0
    194 	LD	(.wspy+1),A
    195 
    196 	; Initialize sprite
    197 	XOR	A
    198 	LD	(.sframe),A
    199 	LD	C,#0x00		; Sprite 0x00
    200 	LD	D,#0x00		; Default sprite properties
    201 	CALL	.set_sprite_prop
    202 	LD	C,#0x01		; Sprite 0x01
    203 	LD	D,#0x00		; Default sprite properties
    204 	CALL	.set_sprite_prop
    205 
    206 	LD	A,#0x10
    207 	LD	(.sposx),A
    208 	XOR	A
    209 	LD	(.sposx+1),A
    210 	LD	A,#0x10
    211 	LD	(.sposy),A
    212 	XOR	A
    213 	LD	(.sposy+1),A
    214 	XOR	A
    215 	LD	(.sspx),A
    216 	LD	A,#0x40
    217 	LD	(.sspx+1),A
    218 	XOR	A
    219 	LD	(.sspy),A
    220 	LD	A,#0x40
    221 	LD	(.sspy+1),A
    222 	CALL	.tile_sprite	; Set sprite tiles
    223 	CALL	.place_sprite	; Place sprites
    224 
    225 	LD	A,#0b11100111	; LCD		= On
    226 				; WindowBank	= 0x9C00
    227 				; Window	= On
    228 				; BG Chr	= 0x8800
    229 				; BG Bank	= 0x9800
    230 				; OBJ		= 8x16
    231 				; OBJ		= On
    232 				; BG		= On
    233 	LDH	(.LCDC),A
    234 	EI			; Enable interrupts
    235 1$:
    236 	LD	A,(.time)
    237 	INC	A
    238 	LD	(.time),A
    239 
    240 	LD	B,#0x04		; Skip four VBLs (slow down animation)
    241 2$:
    242 	CALL	.wait_vbl_done
    243 	DEC	B
    244 	JR	NZ,2$
    245 
    246 	CALL	.fade
    247 	CALL	.door
    248 	CALL	.scroll
    249 	CALL	.animate_sprite
    250 
    251 	CALL	.jpad
    252 	LD	D,A
    253 
    254 	AND	#.B		; Is B pressed ?
    255 	JP	NZ,10$
    256 
    257 	LD	A,D
    258 	AND	#.A		; Is A pressed ?
    259 	JP	NZ,20$
    260 
    261 	LD	A,D
    262 	AND	#.SELECT	; Is SELECT pressed ?
    263 	JR	Z,3$
    264 	LD	A,#.STARTFADE
    265 	LD	(.color),A
    266 3$:
    267 	LD	A,D
    268 	AND	#.START		; Is START pressed ?
    269 	JR	Z,5$
    270 	LD	A,(.doorstate)
    271 	CP	#.CLOSED
    272 	JR	NZ,4$
    273 	LD	A,#.OPENING
    274 	LD	(.doorstate),A
    275 	XOR	A
    276 	LD	(.doorpos),A
    277 	JR	5$
    278 4$:
    279 	CP	#.OPENED
    280 	JR	NZ,5$
    281 	LD	A,#.CLOSING
    282 	LD	(.doorstate),A
    283 	LD	A,#.NBDFRAMES
    284 	LD	(.doorpos),A
    285 5$:
    286 	LD	A,D
    287 	AND	#.UP		; Is UP pressed ?
    288 	JR	Z,6$
    289 	LD	BC,#0x0010
    290 	LD	A,(.sspy)	; Load speed into HL
    291 	LD	H,A
    292 	LD	A,(.sspy+1)
    293 	LD	L,A
    294 	LD	A,L		; Substract BC from HL
    295 	SUB	C
    296 	LD	(.sspy+1),A
    297 	LD	A,H
    298 	SBC	B
    299 	LD	(.sspy),A	; Store new speed
    300 	JR	7$
    301 6$:
    302 	LD	A,D
    303 	AND	#.DOWN		; Is DOWN pressed ?
    304 	JR	Z,7$
    305 	LD	BC,#0x0010
    306 	LD	A,(.sspy)	; Load speed into HL
    307 	LD	H,A
    308 	LD	A,(.sspy+1)
    309 	LD	L,A
    310 	ADD	HL,BC		; Add them
    311 	LD	A,H		; Store new speed
    312 	LD	(.sspy),A
    313 	LD	A,L
    314 	LD	(.sspy+1),A
    315 7$:
    316 	LD	A,D
    317 	AND	#.LEFT		; Is LEFT pressed ?
    318 	JR	Z,8$
    319 	LD	BC,#0x0010
    320 	LD	A,(.sspx)	; Load speed into HL
    321 	LD	H,A
    322 	LD	A,(.sspx+1)
    323 	LD	L,A
    324 	LD	A,L		; Substract BC from HL
    325 	SUB	C
    326 	LD	(.sspx+1),A
    327 	LD	A,H
    328 	SBC	B
    329 	LD	(.sspx),A	; Store new speed
    330 	JP	1$
    331 8$:
    332 	LD	A,D
    333 	AND	#.RIGHT		; Is RIGHT pressed ?
    334 	JP	Z,1$
    335 	LD	BC,#0x0010
    336 	LD	A,(.sspx)	; Load speed into HL
    337 	LD	H,A
    338 	LD	A,(.sspx+1)
    339 	LD	L,A
    340 	ADD	HL,BC		; Add them
    341 	LD	A,H		; Store new speed
    342 	LD	(.sspx),A
    343 	LD	A,L
    344 	LD	(.sspx+1),A
    345 	JP	1$
    346 
    347 10$:
    348 	LD	A,D
    349 	AND	#.UP		; Is UP pressed ?
    350 	JP	Z,11$
    351 	LD	BC,#0x0010
    352 	LD	A,(.bspy)	; Load speed into HL
    353 	LD	H,A
    354 	LD	A,(.bspy+1)
    355 	LD	L,A
    356 	LD	A,L		; Substract BC from HL
    357 	SUB	C
    358 	LD	(.bspy+1),A
    359 	LD	A,H
    360 	SBC	B
    361 	LD	(.bspy),A	; Store new speed
    362 	JR	12$
    363 11$:
    364 	LD	A,D
    365 	AND	#.DOWN		; Is DOWN pressed ?
    366 	JP	Z,12$
    367 	LD	BC,#0x0010
    368 	LD	A,(.bspy)	; Load speed into HL
    369 	LD	H,A
    370 	LD	A,(.bspy+1)
    371 	LD	L,A
    372 	ADD	HL,BC		; Add them
    373 	LD	A,H		; Store new speed
    374 	LD	(.bspy),A
    375 	LD	A,L
    376 	LD	(.bspy+1),A
    377 12$:
    378 	LD	A,D
    379 	AND	#.LEFT		; Is LEFT pressed ?
    380 	JP	Z,13$
    381 	LD	BC,#0x0010
    382 	LD	A,(.bspx)	; Load speed into HL
    383 	LD	H,A
    384 	LD	A,(.bspx+1)
    385 	LD	L,A
    386 	LD	A,L		; Substract BC from HL
    387 	SUB	C
    388 	LD	(.bspx+1),A
    389 	LD	A,H
    390 	SBC	B
    391 	LD	(.bspx),A	; Store new speed
    392 	JP	1$
    393 13$:
    394 	LD	A,D
    395 	AND	#.RIGHT		; Is RIGHT pressed ?
    396 	JP	Z,1$
    397 	LD	BC,#0x0010
    398 	LD	A,(.bspx)	; Load speed into HL
    399 	LD	H,A
    400 	LD	A,(.bspx+1)
    401 	LD	L,A
    402 	ADD	HL,BC		; Add them
    403 	LD	A,H		; Store new speed
    404 	LD	(.bspx),A
    405 	LD	A,L
    406 	LD	(.bspx+1),A
    407 	JP	1$
    408 
    409 20$:
    410 	LD	A,D
    411 	AND	#.UP		; Is UP pressed ?
    412 	JP	Z,21$
    413 	LD	BC,#0x0010
    414 	LD	A,(.wspy)	; Load speed into HL
    415 	LD	H,A
    416 	LD	A,(.wspy+1)
    417 	LD	L,A
    418 	LD	A,L		; Substract BC from HL
    419 	SUB	C
    420 	LD	(.wspy+1),A
    421 	LD	A,H
    422 	SBC	B
    423 	LD	(.wspy),A	; Store new speed
    424 	JR	22$
    425 21$:
    426 	LD	A,D
    427 	AND	#.DOWN		; Is DOWN pressed ?
    428 	JP	Z,22$
    429 	LD	BC,#0x0010
    430 	LD	A,(.wspy)	; Load speed into HL
    431 	LD	H,A
    432 	LD	A,(.wspy+1)
    433 	LD	L,A
    434 	ADD	HL,BC		; Add them
    435 	LD	A,H		; Store new speed
    436 	LD	(.wspy),A
    437 	LD	A,L
    438 	LD	(.wspy+1),A
    439 22$:
    440 	LD	A,D
    441 	AND	#.LEFT		; Is LEFT pressed ?
    442 	JP	Z,23$
    443 	LD	BC,#0x0010
    444 	LD	A,(.wspx)	; Load speed into HL
    445 	LD	H,A
    446 	LD	A,(.wspx+1)
    447 	LD	L,A
    448 	LD	A,L		; Substract BC from HL
    449 	SUB	C
    450 	LD	(.wspx+1),A
    451 	LD	A,H
    452 	SBC	B
    453 	LD	(.wspx),A	; Store new speed
    454 	JP	1$
    455 23$:
    456 	LD	A,D
    457 	AND	#.RIGHT		; Is RIGHT pressed ?
    458 	JP	Z,1$
    459 	LD	BC,#0x0010
    460 	LD	A,(.wspx)	; Load speed into HL
    461 	LD	H,A
    462 	LD	A,(.wspx+1)
    463 	LD	L,A
    464 	ADD	HL,BC		; Add them
    465 	LD	A,H		; Store new speed
    466 	LD	(.wspx),A
    467 	LD	A,L
    468 	LD	(.wspx+1),A
    469 	JP	1$
    470 
    471 	RET
    472 
    473 	;; Fade the screen (off and on)
    474 .fade:
    475 
    476 	LD	A,(.color)	; Load color into A
    477 	CP	#0x00
    478 	RET	Z
    479 	CP	#.STARTFADE
    480 	JR	NZ,1$
    481 	LD	A,#0b11111001
    482 	JR	6$
    483 1$:
    484 	CP	#.STARTFADE-.FADESTEP
    485 	JR	NZ,2$
    486 	LD	A,#0b11111110
    487 	JR	6$
    488 2$:
    489 	CP	#.STARTFADE-0x02*.FADESTEP
    490 	JR	NZ,3$
    491 	LD	A,#0b11111111
    492 	JR	6$
    493 3$:
    494 	CP	#.STARTFADE-0x03*.FADESTEP
    495 	JR	NZ,4$
    496 	LD	A,#0b11111110
    497 	JR	6$
    498 4$:
    499 	CP	#.STARTFADE-0x04*.FADESTEP
    500 	JR	NZ,5$
    501 	LD	A,#0b11111001
    502 	JR	6$
    503 5$:
    504 	CP	#.STARTFADE-0x05*.FADESTEP
    505 	JR	NZ,7$
    506 	LD	A,#0b11100100
    507 6$:
    508 	LDH	(.BGP),A
    509 7$:
    510 	LD	A,(.color)
    511 	DEC	A
    512 	LD	(.color),A
    513 	RET
    514 
    515 	;; Scroll the background, the window and the sprite
    516 .scroll:
    517 
    518 	;; Update background
    519 	LD	A,(.bposx)	; Load background position into HL
    520 	LD	H,A
    521 	LD	A,(.bposx+1)
    522 	LD	L,A
    523 	LD	A,(.bspx)	; Load background speed into BC
    524 	LD	B,A
    525 	LD	A,(.bspx+1)
    526 	LD	C,A
    527 	ADD	HL,BC		; Add them
    528 	LD	A,L		; Store new background position
    529 	LD	(.bposx+1),A
    530 	LD	A,H
    531 	LD	(.bposx),A
    532 	LDH	(.SCX),A	; Update position
    533 
    534 	LD	A,(.bposy)	; Load background position into HL
    535 	LD	H,A
    536 	LD	A,(.bposy+1)
    537 	LD	L,A
    538 	LD	A,(.bspy)	; Load background speed into BC
    539 	LD	B,A
    540 	LD	A,(.bspy+1)
    541 	LD	C,A
    542 	ADD	HL,BC		; Add them
    543 	LD	A,L		; Store new background position
    544 	LD	(.bposy+1),A
    545 	LD	A,H
    546 	LD	(.bposy),A
    547 	LDH	(.SCY),A	; Update position
    548 
    549 	;; Update window
    550 	LD	A,(.wspx)	; Load window speed into BC
    551 	LD	B,A
    552 	LD	A,(.wspx+1)
    553 	LD	C,A
    554 	LD	A,(.wposx)	; Load window position into HL
    555 	LD	H,A
    556 	LD	A,(.wposx+1)
    557 	LD	L,A
    558 	ADD	HL,BC		; Add them
    559 	LD	A,L		; Store new window position
    560 	LD	(.wposx+1),A
    561 	LD	A,H
    562 	LD	(.wposx),A
    563 
    564 	;; X position
    565 	LD	A,(.wposx)	; Check window position
    566 	LD	H,#0x00		; We must use 16 bit registers since the
    567 	LD	L,A		;  window is not less than 0x80 pixels
    568 	LD	BC,#.MAXWINX
    569 	LD	A,L		; Substract BC from HL
    570 	SUB	C
    571 	LD	A,H
    572 	SBC	B
    573 	AND	#0x80
    574 	JR	NZ,1$		; Maximum value ?
    575 	LD	A,#.MAXWINX
    576 	LD	(.wposx),A	; Correct window position
    577 	LD	A,(.wspx+1)	; Load window speed into BC
    578 	LD	C,A
    579 	LD	A,(.wspx)
    580 	LD	B,A
    581 	AND	#0x80		; Speed is already negative ?
    582 	JR	NZ,3$
    583 	JR	2$
    584 1$:
    585 	LD	A,(.wposx)	; Check window position
    586 	LD	H,#0x00		; We must use 16 bit registers since the
    587 	LD	L,A		;  window is not less than 0x80 pixels
    588 	LD	BC,#.MINWINX+1
    589 	LD	A,L		; Substract BC from HL
    590 	SUB	C
    591 	LD	A,H
    592 	SBC	B
    593 	AND	#0x80
    594 	JR	Z,3$		; Minimum value ?
    595 	LD	A,#.MINWINX
    596 	LD	(.wposx),A	; Correct window position
    597 	LD	A,(.wspx+1)	; Load window speed into BC
    598 	LD	C,A
    599 	LD	A,(.wspx)
    600 	LD	B,A
    601 	AND	#0x80		; Speed is already positive ?
    602 	JR	Z,3$
    603 2$:
    604 	LD	HL,#0x00	; Invert speed
    605 	LD	A,L		; Substract BC from HL
    606 	SUB	C
    607 	LD	(.wspx+1),A
    608 	LD	A,H
    609 	SBC	B
    610 	LD	(.wspx),A	; Store new speed
    611 3$:
    612 	LD	A,(.wposx)
    613 	LDH	(.WX),A		; Update position
    614 
    615 	LD	A,(.wspy)	; Load window speed into BC
    616 	LD	B,A
    617 	LD	A,(.wspy+1)
    618 	LD	C,A
    619 	LD	A,(.wposy)	; Load window position into HL
    620 	LD	H,A
    621 	LD	A,(.wposy+1)
    622 	LD	L,A
    623 	ADD	HL,BC		; Add them
    624 	LD	A,L		; Store new window position
    625 	LD	(.wposy+1),A
    626 	LD	A,H
    627 	LD	(.wposy),A
    628 
    629 	;; Y position
    630 	LD	A,(.wposy)	; Check window position
    631 	LD	H,#0x00		; We must use 16 bit registers since the
    632 	LD	L,A		;  window is not less than 0x80 pixels
    633 	LD	BC,#.MAXWINY
    634 	LD	A,L		; Substract BC from HL
    635 	SUB	C
    636 	LD	A,H
    637 	SBC	B
    638 	AND	#0x80
    639 	JR	NZ,4$		; Maximum value ?
    640 	LD	A,#.MAXWINY
    641 	LD	(.wposy),A	; Correct window position
    642 	LD	A,(.wspy+1)	; Load window speed into BC
    643 	LD	C,A
    644 	LD	A,(.wspy)
    645 	LD	B,A
    646 	AND	#0x80		; Speed is already negative ?
    647 	JR	NZ,6$
    648 	JR	5$
    649 4$:
    650 	LD	A,(.wposy)	; Check window position
    651 	LD	H,#0x00		; We must use 16 bit registers since the
    652 	LD	L,A		;  window is not less than 0x80 pixels
    653 	LD	BC,#.MINWINY+1
    654 	LD	A,L		; Substract BC from HL
    655 	SUB	C
    656 	LD	A,H
    657 	SBC	B
    658 	AND	#0x80
    659 	JR	Z,6$		; Minimum value ?
    660 	LD	A,#.MINWINY
    661 	LD	(.wposy),A	; Correct window position
    662 	LD	A,(.wspy+1)	; Load window speed into BC
    663 	LD	C,A
    664 	LD	A,(.wspy)
    665 	LD	B,A
    666 	AND	#0x80		; Speed is already positive ?
    667 	JR	Z,6$
    668 5$:
    669 	LD	HL,#0x00	; Invert speed
    670 	LD	A,L		; Substract BC from HL
    671 	SUB	C
    672 	LD	(.wspy+1),A
    673 	LD	A,H
    674 	SBC	B
    675 	LD	(.wspy),A	; Store new speed
    676 6$:
    677 	LD	A,(.wposy)
    678 	LDH	(.WY),A		; Update position
    679 
    680 	;; Update sprite
    681 	LD	A,(.sposx)	; Load sprite position into HL
    682 	LD	H,A
    683 	LD	A,(.sposx+1)
    684 	LD	L,A
    685 	LD	A,(.sspx)	; Load sprite speed into BC
    686 	LD	B,A
    687 	LD	A,(.sspx+1)
    688 	LD	C,A
    689 	ADD	HL,BC		; Add them
    690 	LD	A,L		; Store new sprite position
    691 	LD	(.sposx+1),A
    692 	LD	A,H
    693 	LD	(.sposx),A
    694 
    695 	LD	A,(.sposy)	; Load sprite position into HL
    696 	LD	H,A
    697 	LD	A,(.sposy+1)
    698 	LD	L,A
    699 	LD	A,(.sspy)	; Load sprite speed into BC
    700 	LD	B,A
    701 	LD	A,(.sspy+1)
    702 	LD	C,A
    703 	ADD	HL,BC		; Add them
    704 	LD	A,L		; Store new sprite position
    705 	LD	(.sposy+1),A
    706 	LD	A,H
    707 	LD	(.sposy),A
    708 	CALL	.place_sprite	; Update position
    709 
    710 	RET
    711 
    712 	;; Open and close the door
    713 .door:
    714 	LD	A,(.doorstate)
    715 	CP	#.OPENING
    716 	JP	Z,.open_door
    717 	CP	#.CLOSING
    718 	JP	Z,.close_door
    719 	RET
    720 
    721 .open_door:
    722 	LD	A,(.doorpos)
    723 	LD	HL,#.film+0x02
    724 	LD	B,#0x00
    725 	LD	C,A
    726 	ADD	HL,BC
    727 	LD	C,(HL)
    728 	INC	HL
    729 	LD	B,(HL)
    730 	LD	DE,#0x1010/8	; Place image at (0x10,0x10)
    731 	LD	HL,#0x6030/8	; Image size is 0x60 x 0x30
    732 	CALL	.set_xy_wtt
    733 
    734 	LD	A,(.doorpos)
    735 	ADD	A,#0x02
    736 	LD	(.doorpos),A
    737 	CP	#.NBDFRAMES
    738 	RET	NZ
    739 	LD	A,#.OPENED
    740 	LD	(.doorstate),A
    741 	RET
    742 
    743 .close_door:
    744 	LD	A,(.doorpos)
    745 	LD	HL,#.film-0x02
    746 	LD	B,#0x00
    747 	LD	C,A
    748 	ADD	HL,BC
    749 	LD	C,(HL)
    750 	INC	HL
    751 	LD	B,(HL)
    752 	LD	DE,#0x1010/8	; Place image at (0x10,0x10)
    753 	LD	HL,#0x6030/8	; Image size is 0x60 x 0x30
    754 	CALL	.set_xy_wtt
    755 
    756 	LD	A,(.doorpos)
    757 	SUB	A,#0x02
    758 	LD	(.doorpos),A
    759 	RET	NZ
    760 	LD	A,#.CLOSED
    761 	LD	(.doorstate),A
    762 	RET
    763 
    764 	;; Animate sprite
    765 .animate_sprite:
    766 	LD	A,(.time)
    767 	AND	#0x07
    768 	RET	NZ
    769 
    770 	LD	A,(.sframe)
    771 	INC	A
    772 	CP	#.NBSFRAMES
    773 	JR	NZ,1$
    774 	XOR	A
    775 1$:
    776 	LD	(.sframe),A
    777 
    778 	CALL	.tile_sprite
    779 	RET
    780 
    781 	;; Set sprite tiles
    782 .tile_sprite:
    783 	LD	A,(.sframe)
    784 	LD	HL,#.earth_tiles
    785 	RLCA
    786 	LD	B,#0x00
    787 	LD	C,A
    788 	ADD	HL,BC
    789 	LD	C,#0x00		; Sprite 0x00
    790 	LD	A,(HL+)
    791 	LD	D,A
    792 	PUSH	HL
    793 	CALL	.set_sprite_tile
    794 	POP	HL
    795 
    796 	LD	C,#0x01		; Sprite 0x01
    797 	LD	A,(HL+)
    798 	LD	D,A
    799 	CALL	.set_sprite_tile
    800 
    801 	RET
    802 
    803 	;; Place sprite
    804 .place_sprite:
    805 	LD	C,#0x00		; Sprite 0x00
    806 	LD	A,(.sposx)
    807 	LD	D,A
    808 	LD	A,(.sposy)
    809 	LD	E,A
    810 	PUSH	DE		; Store position
    811 	CALL	.mv_sprite
    812 
    813 	LD	C,#0x01		; Sprite 0x01
    814 	POP	DE		; Restore position
    815 	LD	A,#0x08
    816 	ADD	A,D
    817 	LD	D,A
    818 	CALL	.mv_sprite
    819 
    820 	RET
    821 
    822 	.area	_LIT
    823 
    824 .tp0:
    825 
    826 .std_data:
    827 
    828 	; Basic tiles (0xFC to 0xFF)
    829 
    830 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
    831 	.byte	0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00
    832 	.byte	0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF
    833 	.byte	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    834 
    835 .endtp0:
    836 
    837 .tp1:
    838 
    839 .earth_data:
    840 
    841 	; Tile 0x00
    842 	.byte	0x07,0x07,0x18,0x1F,0x32,0x2D,0x71,0x4E,0x70,0x4F,0xF8,0x87,0xF8,0x87,0xF8,0x87
    843 	.byte	0xFC,0x83,0xFE,0x81,0x7F,0x40,0x7F,0x40,0x3F,0x20,0x1F,0x18,0x07,0x07,0x00,0x00
    844 	.byte	0xC0,0xC0,0xF0,0x30,0x78,0x88,0x3C,0xC4,0x5C,0xA4,0x9E,0x62,0x3E,0xC2,0x3E,0xC2
    845 	.byte	0x5E,0xA2,0x7E,0x82,0x0C,0xF4,0x0C,0xF4,0x98,0x68,0xB0,0x70,0xC0,0xC0,0x00,0x00
    846 	.byte	0x07,0x07,0x1F,0x18,0x2F,0x30,0x4F,0x70,0x6F,0x50,0x9F,0xE0,0x9F,0xE0,0xBF,0xC0
    847 	.byte	0xFF,0x80,0xB7,0xC8,0x63,0x5C,0x43,0x7C,0x3F,0x20,0x1F,0x18,0x07,0x07,0x00,0x00
    848 	.byte	0xC0,0xC0,0xB0,0x70,0x18,0xE8,0x0C,0xF4,0x0C,0xF4,0x82,0x7E,0x82,0x7E,0x86,0x7A
    849 	.byte	0xC6,0x3A,0xE6,0x1A,0xF4,0x0C,0xFC,0x04,0xF8,0x08,0xF0,0x30,0xC0,0xC0,0x00,0x00
    850 
    851 	; Tile 0x08
    852 	.byte	0x07,0x07,0x1E,0x19,0x20,0x3F,0x40,0x7F,0x42,0x7D,0x81,0xFE,0x81,0xFE,0x83,0xFC
    853 	.byte	0xD7,0xA8,0xBB,0xC4,0x6E,0x51,0x7C,0x43,0x3F,0x20,0x1F,0x18,0x07,0x07,0x00,0x00
    854 	.byte	0xC0,0xC0,0x70,0xB0,0xE8,0x18,0xF4,0x0C,0xF4,0x0C,0xFE,0x02,0xFE,0x02,0xFE,0x02
    855 	.byte	0xFE,0x02,0x7E,0x82,0x3C,0xC4,0x3C,0xC4,0xF8,0x08,0xF0,0x30,0xC0,0xC0,0x00,0x00
    856 	.byte	0x07,0x07,0x1B,0x1C,0x20,0x3F,0x40,0x7F,0x40,0x7F,0xE0,0x9F,0x90,0xEF,0x89,0xF6
    857 	.byte	0x8D,0xF2,0x9F,0xE0,0x5E,0x61,0x6F,0x50,0x3F,0x20,0x1F,0x18,0x07,0x07,0x00,0x00
    858 	.byte	0xC0,0xC0,0xB0,0x70,0x28,0xD8,0x04,0xFC,0x2C,0xD4,0x1E,0xE2,0x1E,0xE2,0x3E,0xC2
    859 	.byte	0x7E,0x82,0xB6,0x4A,0xE4,0x1C,0xC4,0x3C,0xF8,0x08,0xF0,0x30,0xC0,0xC0,0x00,0x00
    860 
    861 	; Tile 0x10
    862 	.byte	0x07,0x07,0x18,0x1F,0x20,0x3F,0x40,0x7F,0x40,0x7F,0xEE,0x91,0xF1,0x8E,0xE0,0x9F
    863 	.byte	0xE0,0x9F,0xF1,0x8E,0x71,0x4E,0x72,0x4D,0x3F,0x20,0x1F,0x18,0x07,0x07,0x00,0x00
    864 	.byte	0xC0,0xC0,0xF0,0x30,0x08,0xF8,0x04,0xFC,0x04,0xFC,0x02,0xFE,0x02,0xFE,0x92,0x6E
    865 	.byte	0xD6,0x2A,0xFE,0x02,0xEC,0x14,0xFC,0x04,0xF8,0x08,0xF0,0x30,0xC0,0xC0,0x00,0x00
    866 	.byte	0x07,0x07,0x1D,0x1A,0x36,0x29,0x5C,0x63,0x6C,0x53,0xCE,0xB1,0x9F,0xE0,0x9E,0xE1
    867 	.byte	0xAE,0xD1,0xBF,0xC0,0x47,0x78,0x47,0x78,0x2F,0x30,0x1F,0x18,0x07,0x07,0x00,0x00
    868 	.byte	0xC0,0xC0,0x70,0xB0,0x08,0xF8,0x04,0xFC,0x04,0xFC,0xE2,0x1E,0x32,0xCE,0x0E,0xF2
    869 	.byte	0x0E,0xF2,0x1E,0xE2,0x1C,0xE4,0x2C,0xD4,0xF8,0x08,0xF0,0x30,0xC0,0xC0,0x00,0x00
    870 
    871 	; Tile 0x18
    872 	.byte	0x07,0x07,0x1E,0x19,0x33,0x2C,0x49,0x76,0x42,0x7D,0xC4,0xBB,0xC1,0xBE,0xC1,0xBE
    873 	.byte	0xE2,0x9D,0xF3,0x8C,0x78,0x47,0x78,0x47,0x3C,0x23,0x1C,0x1B,0x07,0x07,0x00,0x00
    874 	.byte	0xC0,0xC0,0x70,0xB0,0x68,0x98,0xC4,0x3C,0xC4,0x3C,0xEE,0x12,0xF2,0x0E,0xE2,0x1E
    875 	.byte	0xE2,0x1E,0xF2,0x0E,0x7C,0x84,0x7C,0x84,0xF8,0x08,0xF0,0x30,0xC0,0xC0,0x00,0x00
    876 
    877 .endtp1:
    878 
    879 .tp2:
    880 
    881 .frame_data:
    882 
    883 	; Tile 0x00
    884 	.byte	0xFF,0x00,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F
    885 	.byte	0xFF,0x00,0x01,0xFE,0x03,0xFC,0x07,0xF8,0x0F,0xF0,0x1F,0xE0,0x3F,0xC0,0x7F,0x80
    886 	.byte	0xFF,0x00,0xFE,0x01,0xFC,0x03,0xF8,0x07,0xF0,0x0F,0xE0,0x1F,0xC0,0x3F,0x80,0x7F
    887 	.byte	0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF
    888 	.byte	0xFF,0x00,0xFF,0x01,0xFD,0x03,0xF9,0x07,0xF1,0x0F,0xE1,0x1F,0xC1,0x3F,0x81,0x7F
    889 	.byte	0x80,0x7F,0x81,0x7E,0x83,0x7C,0x87,0x78,0x8F,0x70,0x9F,0x60,0xBF,0x40,0xFF,0x00
    890 	.byte	0xFF,0x70,0xFF,0x98,0xEF,0xB8,0xCF,0xF8,0xFF,0x70,0xFF,0x00,0xFF,0x00,0xFF,0x01
    891 	.byte	0xFF,0x00,0xFE,0x01,0xFC,0x03,0xF8,0x07,0xF0,0x0F,0xE0,0x1F,0xC0,0x3F,0xFF,0xFF
    892 
    893 	; Tile 0x08
    894 	.byte	0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF
    895 	.byte	0x00,0xFF,0x01,0xFE,0x03,0xFC,0x07,0xF8,0x0F,0xF0,0x1F,0xE0,0x3F,0xC0,0xFF,0xFF
    896 	.byte	0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF
    897 	.byte	0xFF,0x0E,0xFF,0x13,0xFD,0x17,0xF9,0x1F,0xFE,0x0F,0xE0,0x1F,0xC0,0x3F,0x80,0xFF
    898 	.byte	0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF
    899 	.byte	0xFF,0x01,0xFF,0x01,0xFD,0x03,0xF9,0x07,0xF1,0x0F,0xE1,0x1F,0xC1,0x3F,0x81,0x7F
    900 	.byte	0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F
    901 	.byte	0x01,0xFF,0x01,0xFF,0x03,0xFD,0x07,0xF9,0x0F,0xF1,0x1F,0xE1,0x3F,0xC1,0x7F,0x81
    902 
    903 	; Tile 0x10
    904 	.byte	0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01
    905 	.byte	0x01,0xFF,0x01,0xFE,0x03,0xFC,0x77,0xF8,0xFF,0x98,0xEF,0xB8,0xCF,0xF8,0x7F,0xF0
    906 	.byte	0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x0E,0xFF,0x13,0xFD,0x17,0xF9,0x1F,0xFF,0x0E
    907 	.byte	0x80,0x7F,0x81,0x7E,0x83,0x7C,0x87,0x78,0x8F,0x70,0x9F,0x60,0xBF,0x40,0xFF,0x7F
    908 	.byte	0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0xFF,0xFF
    909 
    910 .door1_data:
    911 
    912 	; Tile 0x15
    913 	.byte	0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF
    914 	.byte	0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF
    915 	.byte	0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF
    916 
    917 .door2_data:
    918 
    919 	; Tile 0x18
    920 	.byte	0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF
    921 	.byte	0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF
    922 	.byte	0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF
    923 	.byte	0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
    924 
    925 .door3_data:
    926 
    927 	; Tile 0x1C
    928 	.byte	0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF
    929 	.byte	0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF
    930 	.byte	0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF
    931 	.byte	0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
    932 
    933 .door4_data:
    934 
    935 	; Tile 0x20
    936 	.byte	0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
    937 
    938 .endtp2:
    939 
    940 .tp3:
    941 
    942 .bkg_data:
    943 
    944 	; Tile 0x00
    945 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xFF
    946 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF
    947 	.byte	0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
    948 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xF7,0xFF,0xFF
    949 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
    950 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F
    951 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
    952 	.byte	0xFF,0xFF,0xDF,0xFF,0xEF,0xFF,0xFF,0xF7,0xFF,0xFB,0xFF,0xFD,0xFF,0xFE,0xFE,0xFF
    953 
    954 	; Tile 0x08
    955 	.byte	0xFF,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7D,0xFE,0x7C,0x39
    956 	.byte	0xFF,0xFF,0xF7,0xFF,0xEF,0xFF,0xFF,0xDF,0xFF,0xBF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF
    957 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF
    958 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFE,0xFF,0xFD
    959 	.byte	0xBB,0x01,0xC7,0x83,0xC7,0x83,0xC7,0x83,0xBB,0x01,0x7C,0x39,0x7D,0xFE,0xFF,0xFF
    960 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F
    961 	.byte	0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF
    962 	.byte	0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFB,0xAF,0x77,0x27,0x8F,0xDF,0x8F,0x27,0x8F
    963 
    964 	; Tile 0x10
    965 	.byte	0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
    966 	.byte	0xFF,0xFB,0xFF,0xF7,0xEF,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
    967 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
    968 	.byte	0xFF,0xBF,0xFF,0xDF,0xEF,0xFF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
    969 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
    970 	.byte	0xFF,0xFF,0xFF,0xFE,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
    971 	.byte	0xAF,0x77,0xFF,0xFB,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
    972 	.byte	0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF
    973 
    974 	; Tile 0x18
    975 	.byte	0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF
    976 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF
    977 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF
    978 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0x7D,0xFE,0x7C,0x39
    979 	.byte	0xFF,0xFF,0xF7,0xFF,0xEF,0xFF,0xFF,0xDF,0xFF,0xBF,0xFF,0x7F,0x7F,0xFF,0xFF,0xFF
    980 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF
    981 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
    982 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFD
    983 
    984 	; Tile 0x20
    985 	.byte	0xFF,0xFF,0xDF,0xFF,0xEF,0xFF,0xFF,0xF7,0xFF,0xFB,0xFE,0xFD,0xFD,0xFE,0xFE,0xFF
    986 	.byte	0xAB,0x11,0xC7,0x83,0x83,0xC7,0xC7,0x83,0xAB,0x11,0x7C,0x39,0x7D,0xFE,0xFE,0xFF
    987 	.byte	0xFF,0xFF,0xFF,0xFF,0xFB,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0x7F
    988 	.byte	0xFB,0xFF,0xFF,0xFD,0xFE,0xFE,0xFE,0xFF,0xFE,0xFE,0xFF,0xFD,0xFB,0xFF,0xFF,0xFF
    989 	.byte	0xEF,0xFF,0xFF,0xDF,0x3F,0xBF,0x3F,0x7F,0x3F,0xBF,0xFF,0xDF,0xEF,0xFF,0xFF,0xFF
    990 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFB,0xFF,0xFF,0xFF,0xFF
    991 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFD,0xFE,0xFE,0xFD
    992 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF
    993 
    994 	; Tile 0x28
    995 	.byte	0xF7,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
    996 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
    997 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF
    998 	.byte	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
    999 	.byte	0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
   1000 
   1001 .endtp3:
   1002 
   1003 	; Image size: 0x40 x 0x40
   1004 	; Number of tiles (total - unique): 0x40 - 0x2D
   1005 
   1006 .bkg_tiles:
   1007 
   1008 	.byte	0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
   1009 	.byte	0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
   1010 	.byte	0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
   1011 	.byte	0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
   1012 
   1013 	.byte	0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
   1014 	.byte	0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
   1015 	.byte	0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
   1016 	.byte	0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
   1017 
   1018 	.byte	0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
   1019 	.byte	0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
   1020 	.byte	0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
   1021 	.byte	0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
   1022 
   1023 	.byte	0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
   1024 	.byte	0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
   1025 	.byte	0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
   1026 	.byte	0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
   1027 
   1028 	.byte	0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
   1029 	.byte	0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
   1030 	.byte	0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
   1031 	.byte	0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
   1032 
   1033 	.byte	0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
   1034 	.byte	0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
   1035 	.byte	0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
   1036 	.byte	0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
   1037 
   1038 	.byte	0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
   1039 	.byte	0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
   1040 	.byte	0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
   1041 	.byte	0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
   1042 
   1043 	.byte	0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
   1044 	.byte	0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
   1045 	.byte	0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
   1046 	.byte	0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
   1047 
   1048 	.byte	0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
   1049 	.byte	0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
   1050 	.byte	0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
   1051 	.byte	0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
   1052 
   1053 	.byte	0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
   1054 	.byte	0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
   1055 	.byte	0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
   1056 	.byte	0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
   1057 
   1058 	.byte	0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
   1059 	.byte	0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
   1060 	.byte	0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
   1061 	.byte	0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
   1062 
   1063 	.byte	0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
   1064 	.byte	0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
   1065 	.byte	0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
   1066 	.byte	0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
   1067 
   1068 	.byte	0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
   1069 	.byte	0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
   1070 	.byte	0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
   1071 	.byte	0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
   1072 
   1073 	.byte	0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
   1074 	.byte	0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
   1075 	.byte	0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
   1076 	.byte	0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
   1077 
   1078 	.byte	0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
   1079 	.byte	0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
   1080 	.byte	0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
   1081 	.byte	0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
   1082 
   1083 	.byte	0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
   1084 	.byte	0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
   1085 	.byte	0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
   1086 	.byte	0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
   1087 
   1088 	.byte	0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
   1089 	.byte	0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
   1090 	.byte	0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
   1091 	.byte	0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
   1092 
   1093 	.byte	0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
   1094 	.byte	0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
   1095 	.byte	0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
   1096 	.byte	0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
   1097 
   1098 	.byte	0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
   1099 	.byte	0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
   1100 	.byte	0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
   1101 	.byte	0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
   1102 
   1103 	.byte	0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
   1104 	.byte	0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
   1105 	.byte	0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
   1106 	.byte	0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
   1107 
   1108 	.byte	0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
   1109 	.byte	0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
   1110 	.byte	0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
   1111 	.byte	0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
   1112 
   1113 	.byte	0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
   1114 	.byte	0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
   1115 	.byte	0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
   1116 	.byte	0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
   1117 
   1118 	.byte	0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
   1119 	.byte	0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
   1120 	.byte	0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
   1121 	.byte	0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
   1122 
   1123 	.byte	0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
   1124 	.byte	0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
   1125 	.byte	0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
   1126 	.byte	0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
   1127 
   1128 	.byte	0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
   1129 	.byte	0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
   1130 	.byte	0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
   1131 	.byte	0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
   1132 
   1133 	.byte	0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
   1134 	.byte	0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
   1135 	.byte	0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
   1136 	.byte	0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
   1137 
   1138 	.byte	0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
   1139 	.byte	0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
   1140 	.byte	0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
   1141 	.byte	0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
   1142 
   1143 	.byte	0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
   1144 	.byte	0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
   1145 	.byte	0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
   1146 	.byte	0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
   1147 
   1148 	.byte	0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
   1149 	.byte	0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
   1150 	.byte	0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
   1151 	.byte	0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
   1152 
   1153 	.byte	0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
   1154 	.byte	0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
   1155 	.byte	0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
   1156 	.byte	0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
   1157 
   1158 	.byte	0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
   1159 	.byte	0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
   1160 	.byte	0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
   1161 	.byte	0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
   1162 
   1163 	.byte	0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
   1164 	.byte	0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
   1165 	.byte	0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
   1166 	.byte	0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
   1167 
   1168 	; Image size: 0x10 x 0x70
   1169 	; Number of tiles (total - unique): 0x1C - 0x1C
   1170 
   1171 .earth_tiles:
   1172 
   1173 	.byte	0x00,0x02
   1174 	.byte	0x04,0x06
   1175 	.byte	0x08,0x0A
   1176 	.byte	0x0C,0x0E
   1177 	.byte	0x10,0x12
   1178 	.byte	0x14,0x16
   1179 	.byte	0x18,0x1A
   1180 
   1181 	; Image size: 0x80 x 0x50
   1182 	; Number of tiles (total - unique): 0xA0 - 0x15
   1183 
   1184 .frame_tiles:
   1185 
   1186 	.byte	0x80,0x81,0xFD,0x82,0x83,0x81,0xFD,0x82,0x83,0x81,0xFD,0x82,0x83,0x81,0xFD,0x84
   1187 	.byte	0x85,0x86,0x87,0x88,0x89,0x8A,0x87,0x88,0x89,0x8A,0x87,0x88,0x89,0x8A,0x8B,0x8C
   1188 	.byte	0xFD,0x8D,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8E,0x8F
   1189 	.byte	0x82,0x8C,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x85,0x90
   1190 	.byte	0x8E,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0x8D
   1191 	.byte	0x85,0x90,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x82,0x8C
   1192 	.byte	0xFD,0x8D,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8E,0x8F
   1193 	.byte	0x82,0x8C,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x85,0x90
   1194 	.byte	0x8E,0x91,0xFD,0x82,0x83,0x81,0xFD,0x82,0x83,0x81,0xFD,0x82,0x83,0x81,0x92,0x8D
   1195 	.byte	0x93,0x8A,0x87,0x88,0x89,0x8A,0x87,0x88,0x89,0x8A,0x87,0x88,0x89,0x8A,0x87,0x94
   1196 
   1197 	; Image size: 0x60 x 0x30
   1198 	; Number of tiles (total - unique): 0x48 - 0x03
   1199 
   1200 .door1_tiles:
   1201 
   1202 	.byte	0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95
   1203 	.byte	0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96
   1204 	.byte	0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97
   1205 	.byte	0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95
   1206 	.byte	0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96
   1207 	.byte	0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97
   1208 
   1209 	.byte	0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
   1210 	.byte	0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
   1211 	.byte	0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
   1212 	.byte	0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
   1213 	.byte	0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
   1214 	.byte	0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
   1215 
   1216 	; Image size: 0x60 x 0x30
   1217 	; Number of tiles (total - unique): 0x48 - 0x04
   1218 
   1219 .door2_tiles:
   1220 
   1221 	.byte	0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98
   1222 	.byte	0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99
   1223 	.byte	0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A
   1224 	.byte	0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98
   1225 	.byte	0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99
   1226 	.byte	0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B
   1227 
   1228 	.byte	0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
   1229 	.byte	0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
   1230 	.byte	0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
   1231 	.byte	0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
   1232 	.byte	0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
   1233 
   1234 	; Image size: 0x60 x 0x30
   1235 	; Number of tiles (total - unique): 0x48 - 0x04
   1236 
   1237 .door3_tiles:
   1238 
   1239 	.byte	0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C
   1240 	.byte	0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D
   1241 	.byte	0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E
   1242 	.byte	0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C
   1243 	.byte	0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D
   1244 	.byte	0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F
   1245 
   1246 	.byte	0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
   1247 	.byte	0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
   1248 	.byte	0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
   1249 	.byte	0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
   1250 	.byte	0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
   1251 
   1252 	; Image size: 0x60 x 0x30
   1253 	; Number of tiles (total - unique): 0x48 - 0x01
   1254 
   1255 .door4_tiles:
   1256 
   1257 	.byte	0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95
   1258 	.byte	0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96
   1259 	.byte	0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97
   1260 	.byte	0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95
   1261 	.byte	0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96
   1262 	.byte	0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0
   1263 
   1264 	.byte	0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
   1265 	.byte	0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
   1266 	.byte	0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
   1267 	.byte	0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
   1268 	.byte	0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
   1269 
   1270 .film:
   1271 	.word	.door1_tiles+0x0C*0
   1272 	.word	.door2_tiles+0x0C*0
   1273 	.word	.door3_tiles+0x0C*0
   1274 	.word	.door4_tiles+0x0C*0
   1275 	.word	.door1_tiles+0x0C*1
   1276 	.word	.door2_tiles+0x0C*1
   1277 	.word	.door3_tiles+0x0C*1
   1278 	.word	.door4_tiles+0x0C*1
   1279 	.word	.door1_tiles+0x0C*2
   1280 	.word	.door2_tiles+0x0C*2
   1281 	.word	.door3_tiles+0x0C*2
   1282 	.word	.door4_tiles+0x0C*2
   1283 	.word	.door1_tiles+0x0C*3
   1284 	.word	.door2_tiles+0x0C*3
   1285 	.word	.door3_tiles+0x0C*3
   1286 	.word	.door4_tiles+0x0C*3
   1287 	.word	.door1_tiles+0x0C*4
   1288 	.word	.door2_tiles+0x0C*4
   1289 	.word	.door3_tiles+0x0C*4
   1290 	.word	.door4_tiles+0x0C*4
   1291 	.word	.door1_tiles+0x0C*5
   1292 	.word	.door2_tiles+0x0C*5
   1293 	.word	.door3_tiles+0x0C*5
   1294 	.word	.door4_tiles+0x0C*5
   1295 .endfilm:
   1296 	.word	.door1_tiles+0x0C*6

This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.