aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile5
-rw-r--r--definitions.gbasm8
-rw-r--r--init.gbasm2
-rw-r--r--main.gbasm1
-rw-r--r--scripts/generate-tiledata.py34
-rw-r--r--scripts/parse_sprite_png.py11
-rw-r--r--sprites/bg/stairs.png (renamed from sprites/stairs.png)bin163 -> 163 bytes
-rw-r--r--sprites/bg/tree-tileset.png (renamed from sprites/tree-tileset.png)bin585 -> 585 bytes
-rw-r--r--sprites/bunny/bunny-back.png (renamed from sprites/bunny-back.png)bin707 -> 707 bytes
-rw-r--r--sprites/bunny/bunny-front.png (renamed from sprites/bunny-front.png)bin644 -> 644 bytes
-rw-r--r--sprites/bunny/bunny-side.png (renamed from sprites/bunny-side.png)bin178 -> 178 bytes
-rw-r--r--sprites/fox/fox-back-still.pngbin0 -> 142 bytes
-rw-r--r--sprites/fox/fox-back.pngbin0 -> 169 bytes
-rw-r--r--sprites/fox/fox-back1-running.pngbin0 -> 173 bytes
-rw-r--r--sprites/fox/fox-back2-running.pngbin0 -> 173 bytes
-rw-r--r--sprites/fox/fox-front-still.pngbin0 -> 147 bytes
-rw-r--r--sprites/fox/fox-front.pngbin0 -> 174 bytes
-rw-r--r--sprites/fox/fox-front1-running.pngbin0 -> 176 bytes
-rw-r--r--sprites/fox/fox-front2-running.pngbin0 -> 172 bytes
-rw-r--r--sprites/fox/fox-side1.pngbin0 -> 176 bytes
-rw-r--r--sprites/fox/fox-side2.pngbin0 -> 178 bytes
-rw-r--r--tiles.gbasm94
-rw-r--r--tileset.gbasm111
23 files changed, 171 insertions, 95 deletions
diff --git a/Makefile b/Makefile
index 19d678f..002e53b 100644
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,10 @@ all: run
.PHONY: build/main.rom clean
-build/main.rom: main.gbasm
+tileset.gbasm: ./scripts/generate-tiledata.py $(wildcard ./sprites/**/*)
+ python ./scripts/generate-tiledata.py > tileset.gbasm
+
+build/main.rom: main.gbasm tileset.gbasm
mkdir -p build
gbasm $< $@
diff --git a/definitions.gbasm b/definitions.gbasm
index d2f9b8b..e35f78f 100644
--- a/definitions.gbasm
+++ b/definitions.gbasm
@@ -58,6 +58,14 @@
; _padding: u24
; }
+.DEFINE mem_entites_list $c9800 ; Until IDK WHERE
+; struct entity {
+; sprite: u8,
+; x: u8,
+; y: u8,
+; direction: u3,
+; }
+
.DEFINE enum_direction_left $01
.DEFINE enum_direction_right $02
.DEFINE enum_direction_up $03
diff --git a/init.gbasm b/init.gbasm
index e160727..ec41320 100644
--- a/init.gbasm
+++ b/init.gbasm
@@ -53,7 +53,7 @@ Empty_VRAM: ; (Clear screen)
LD $reg_bg_palette, A
; OBJ0 Palette
- LD A, $e4
+ LD A, $d3 ; $e4
LD $reg_obj0_palette, A
; Interrupts
diff --git a/main.gbasm b/main.gbasm
index 4fe24a0..61fed0d 100644
--- a/main.gbasm
+++ b/main.gbasm
@@ -40,3 +40,4 @@ VBLANK_Entrypoint:
.INCLUDE "buttons.gbasm"
.INCLUDE "rng.gbasm"
.INCLUDE "utils.gbasm"
+.INCLUDE "tileset.gbasm"
diff --git a/scripts/generate-tiledata.py b/scripts/generate-tiledata.py
new file mode 100644
index 0000000..ff62b0e
--- /dev/null
+++ b/scripts/generate-tiledata.py
@@ -0,0 +1,34 @@
+import subprocess
+
+sprite_idx = 0x0
+
+def get_sprite_png_parse_output(png, tallmode=False):
+ global sprite_idx
+ result = str(subprocess.check_output(["python", "./scripts/parse_sprite_png.py", png] + (["--8x16"] if tallmode else []))).split("\\n")
+ for r in result:
+ if r.startswith(".DB"):
+ print("\t{} ; 0x{:02x}".format(r, sprite_idx))
+ sprite_idx += 1
+
+sprite_idx = 0x20
+print("BG_Tile_Image_Data:")
+print("\n\t; Trees")
+get_sprite_png_parse_output("./sprites/bg/tree-tileset.png")
+print("\n\t; Stairs")
+get_sprite_png_parse_output("./sprites/bg/stairs.png")
+
+sprite_idx = 0x02
+print("\nOBJ_Tile_Image_Data:")
+print("\n\t; Bunny side")
+get_sprite_png_parse_output("./sprites/bunny/bunny-side.png", tallmode=True)
+print("\n\t; Bunny back")
+get_sprite_png_parse_output("./sprites/bunny/bunny-back.png", tallmode=True)
+print("\n\t; Bunny front")
+get_sprite_png_parse_output("./sprites/bunny/bunny-front.png", tallmode=True)
+
+print("\n\t; Fox side")
+get_sprite_png_parse_output("./sprites/fox/fox-side1.png", tallmode=True)
+print("\n\t; Fox back")
+get_sprite_png_parse_output("./sprites/fox/fox-back.png", tallmode=True)
+print("\n\t; Fox front")
+get_sprite_png_parse_output("./sprites/fox/fox-front.png", tallmode=True)
diff --git a/scripts/parse_sprite_png.py b/scripts/parse_sprite_png.py
index 49889fc..f8d130a 100644
--- a/scripts/parse_sprite_png.py
+++ b/scripts/parse_sprite_png.py
@@ -2,6 +2,11 @@ from PIL import Image
import numpy as np
import sys
+sprite_8x16 = False
+
+if len(sys.argv) >= 3 and sys.argv[2] == "--8x16":
+ sprite_8x16 = True
+
file = Image.open(sys.argv[1]).convert("RGB")
px_array = np.asarray(file)
@@ -12,6 +17,12 @@ def getpx(sprite_nb, x, y):
sprite_double_column = int(double_sprite_nb % (file.width / 16))
sprite_tile_y = 1 if sprite_nb & 0b10 else 0
sprite_tile_x = 1 if sprite_nb & 0b01 else 0
+
+ if sprite_8x16:
+ sprite_tile_x ^= sprite_tile_y
+ sprite_tile_y ^= sprite_tile_x
+ sprite_tile_x ^= sprite_tile_y
+
sprite_line = sprite_double_line * 2 + sprite_tile_y
sprite_column = sprite_double_column * 2 + sprite_tile_x
diff --git a/sprites/stairs.png b/sprites/bg/stairs.png
index a2f8cae..a2f8cae 100644
--- a/sprites/stairs.png
+++ b/sprites/bg/stairs.png
Binary files differ
diff --git a/sprites/tree-tileset.png b/sprites/bg/tree-tileset.png
index ea55834..ea55834 100644
--- a/sprites/tree-tileset.png
+++ b/sprites/bg/tree-tileset.png
Binary files differ
diff --git a/sprites/bunny-back.png b/sprites/bunny/bunny-back.png
index df25343..df25343 100644
--- a/sprites/bunny-back.png
+++ b/sprites/bunny/bunny-back.png
Binary files differ
diff --git a/sprites/bunny-front.png b/sprites/bunny/bunny-front.png
index c752211..c752211 100644
--- a/sprites/bunny-front.png
+++ b/sprites/bunny/bunny-front.png
Binary files differ
diff --git a/sprites/bunny-side.png b/sprites/bunny/bunny-side.png
index 09f9764..09f9764 100644
--- a/sprites/bunny-side.png
+++ b/sprites/bunny/bunny-side.png
Binary files differ
diff --git a/sprites/fox/fox-back-still.png b/sprites/fox/fox-back-still.png
new file mode 100644
index 0000000..f7e7401
--- /dev/null
+++ b/sprites/fox/fox-back-still.png
Binary files differ
diff --git a/sprites/fox/fox-back.png b/sprites/fox/fox-back.png
new file mode 100644
index 0000000..63bde06
--- /dev/null
+++ b/sprites/fox/fox-back.png
Binary files differ
diff --git a/sprites/fox/fox-back1-running.png b/sprites/fox/fox-back1-running.png
new file mode 100644
index 0000000..c7f8aa2
--- /dev/null
+++ b/sprites/fox/fox-back1-running.png
Binary files differ
diff --git a/sprites/fox/fox-back2-running.png b/sprites/fox/fox-back2-running.png
new file mode 100644
index 0000000..f42de2e
--- /dev/null
+++ b/sprites/fox/fox-back2-running.png
Binary files differ
diff --git a/sprites/fox/fox-front-still.png b/sprites/fox/fox-front-still.png
new file mode 100644
index 0000000..69f30d9
--- /dev/null
+++ b/sprites/fox/fox-front-still.png
Binary files differ
diff --git a/sprites/fox/fox-front.png b/sprites/fox/fox-front.png
new file mode 100644
index 0000000..dcb7a82
--- /dev/null
+++ b/sprites/fox/fox-front.png
Binary files differ
diff --git a/sprites/fox/fox-front1-running.png b/sprites/fox/fox-front1-running.png
new file mode 100644
index 0000000..25637a8
--- /dev/null
+++ b/sprites/fox/fox-front1-running.png
Binary files differ
diff --git a/sprites/fox/fox-front2-running.png b/sprites/fox/fox-front2-running.png
new file mode 100644
index 0000000..1e7d4ab
--- /dev/null
+++ b/sprites/fox/fox-front2-running.png
Binary files differ
diff --git a/sprites/fox/fox-side1.png b/sprites/fox/fox-side1.png
new file mode 100644
index 0000000..562ebfd
--- /dev/null
+++ b/sprites/fox/fox-side1.png
Binary files differ
diff --git a/sprites/fox/fox-side2.png b/sprites/fox/fox-side2.png
new file mode 100644
index 0000000..a780263
--- /dev/null
+++ b/sprites/fox/fox-side2.png
Binary files differ
diff --git a/tiles.gbasm b/tiles.gbasm
index 8c7dc15..48cb285 100644
--- a/tiles.gbasm
+++ b/tiles.gbasm
@@ -1,95 +1,3 @@
-BG_Tile_Image_Data:
- ; Trees tileset
- .DB $07, $07, $1c, $1f, $38, $37, $3a, $27, $64, $6f, $41, $7f, $47, $78, $4d, $7d
- .DB $f0, $f0, $b0, $d0, $38, $f8, $8c, $7c, $86, $fe, $be, $c6, $c2, $ee, $c2, $ee
- .DB $70, $7f, $22, $3f, $6d, $73, $58, $6f, $6d, $5a, $6d, $7d, $3f, $3f, $00, $00
- .DB $16, $fe, $74, $dc, $34, $bc, $4e, $fe, $6a, $d6, $c6, $fe, $fc, $fc, $00, $00
- .DB $07, $07, $1c, $1f, $38, $37, $3a, $27, $e4, $ef, $c1, $ff, $c7, $b8, $cd, $3d
- .DB $80, $80, $f0, $f0, $30, $d0, $b8, $78, $8c, $fc, $86, $fe, $be, $c6, $c2, $ee
- .DB $70, $7f, $82, $ff, $2d, $d3, $58, $af, $6d, $1a, $fc, $bd, $ef, $ef, $00, $00
- .DB $16, $fe, $74, $dc, $34, $bc, $4e, $fe, $6a, $d6, $c6, $fe, $fc, $fc, $00, $00
- .DB $07, $07, $1c, $1f, $38, $37, $3a, $27, $64, $6f, $41, $7f, $47, $78, $4d, $7d
- .DB $80, $80, $f0, $f0, $30, $d0, $b8, $78, $8e, $fe, $87, $ff, $bd, $c7, $c3, $ee
- .DB $70, $7f, $22, $3f, $6d, $73, $58, $6f, $6d, $5a, $6d, $7d, $3f, $3f, $00, $00
- .DB $13, $ff, $76, $df, $35, $ba, $48, $fd, $69, $d7, $ef, $ef, $38, $38, $00, $00
- .DB $07, $07, $1c, $1f, $38, $37, $3a, $27, $64, $6f, $c1, $ff, $c7, $b8, $cd, $3d
- .DB $80, $80, $f0, $f0, $30, $d0, $b8, $78, $8c, $fc, $87, $ff, $bd, $c7, $c3, $ee
- .DB $70, $7f, $82, $ff, $2d, $d3, $58, $af, $6d, $1a, $fd, $bd, $e7, $e7, $00, $00
- .DB $13, $ff, $76, $df, $35, $ba, $48, $fd, $69, $d7, $e3, $ef, $3e, $3e, $00, $00
- .DB $3f, $27, $3c, $3f, $38, $37, $3a, $27, $64, $6f, $41, $7f, $47, $78, $4d, $7d
- .DB $bf, $dd, $fb, $ff, $3f, $db, $be, $7e, $86, $fe, $82, $fe, $bf, $c3, $c1, $e7
- .DB $70, $7f, $22, $3f, $6d, $73, $58, $6f, $6d, $5a, $6d, $7d, $3f, $3f, $00, $00
- .DB $1b, $ff, $7a, $de, $3a, $be, $47, $ff, $65, $db, $e3, $ef, $3e, $3e, $00, $00
- .DB $ff, $a7, $5c, $ff, $38, $f7, $ba, $67, $e4, $ef, $c1, $ff, $c7, $b8, $cd, $3d
- .DB $be, $da, $f6, $fe, $3e, $d6, $bc, $7c, $8c, $fc, $84, $fc, $be, $c6, $c2, $ee
- .DB $70, $7f, $82, $ff, $2d, $d3, $58, $af, $6d, $1a, $fc, $bd, $ef, $ef, $00, $00
- .DB $16, $fe, $74, $dc, $34, $bc, $4e, $fe, $6a, $d6, $c6, $fe, $fc, $fc, $00, $00
- .DB $3f, $27, $3c, $3f, $38, $37, $3a, $27, $64, $6f, $41, $7f, $47, $78, $4d, $7d
- .DB $bd, $da, $f7, $fd, $3a, $d7, $ba, $7d, $8e, $fe, $87, $ff, $bd, $c7, $c3, $ee
- .DB $70, $7f, $22, $3f, $6d, $73, $58, $6f, $6d, $5a, $6d, $7d, $3f, $3f, $00, $00
- .DB $13, $ff, $76, $df, $35, $ba, $48, $fd, $69, $d7, $ef, $ef, $38, $38, $00, $00
- .DB $ff, $a7, $5c, $ff, $38, $f7, $ba, $67, $e4, $ef, $c1, $ff, $c7, $b8, $cd, $3d
- .DB $bd, $da, $f7, $fd, $3a, $d7, $ba, $7d, $8e, $fe, $87, $ff, $bd, $c7, $c3, $ee
- .DB $70, $7f, $82, $ff, $2d, $d3, $58, $af, $6d, $1a, $fd, $bd, $e7, $e7, $00, $00
- .DB $13, $ff, $76, $df, $35, $ba, $48, $fd, $69, $d7, $e3, $ef, $3e, $3e, $00, $00
- .DB $07, $07, $1c, $1f, $38, $37, $3a, $27, $64, $6f, $41, $7f, $47, $78, $6d, $7d
- .DB $f0, $f0, $b0, $d0, $38, $f8, $8c, $7c, $86, $fe, $be, $c6, $c2, $ee, $92, $fe
- .DB $30, $3f, $22, $3f, $6d, $73, $58, $6f, $6d, $7a, $2c, $3d, $22, $3f, $37, $23
- .DB $76, $de, $34, $bc, $4c, $fc, $6e, $d6, $42, $ee, $9e, $fa, $72, $a6, $be, $5a
- .DB $07, $07, $1c, $1f, $38, $37, $3a, $27, $e4, $ef, $c1, $ff, $c7, $b8, $cd, $3d
- .DB $80, $80, $f0, $f0, $30, $d0, $b8, $78, $8c, $fc, $86, $fe, $be, $c6, $c2, $ee
- .DB $70, $7f, $82, $ff, $2d, $d3, $58, $af, $6d, $1a, $cc, $bd, $a2, $ff, $37, $e3
- .DB $12, $fe, $76, $de, $34, $bc, $4c, $fc, $6e, $d6, $c2, $ee, $1e, $fa, $f2, $26
- .DB $07, $07, $1c, $1f, $38, $37, $3a, $27, $64, $6f, $41, $7f, $47, $78, $6d, $7d
- .DB $80, $80, $f0, $f0, $30, $d0, $b8, $78, $8e, $fe, $87, $ff, $bd, $c7, $c3, $ee
- .DB $30, $3f, $22, $3f, $6d, $73, $58, $6f, $6d, $7a, $2c, $3d, $22, $3f, $37, $23
- .DB $13, $ff, $76, $df, $35, $ba, $48, $fd, $69, $d7, $c1, $ef, $1c, $fb, $f0, $27
- .DB $07, $07, $1c, $1f, $38, $37, $3a, $27, $64, $6f, $c1, $ff, $c7, $b8, $cd, $3d
- .DB $80, $80, $f0, $f0, $30, $d0, $b8, $78, $8c, $fc, $87, $ff, $bd, $c7, $c3, $ee
- .DB $70, $7f, $82, $ff, $2d, $d3, $58, $af, $6d, $1a, $cc, $bd, $a2, $ff, $37, $e2
- .DB $13, $ff, $76, $df, $35, $ba, $48, $fd, $69, $d7, $c1, $ef, $1c, $fb, $f0, $27
- .DB $3f, $27, $3c, $3f, $38, $37, $3a, $27, $64, $6f, $41, $7f, $47, $78, $6d, $7d
- .DB $bf, $dd, $fb, $ff, $3f, $db, $be, $7e, $86, $fe, $82, $fe, $bf, $c3, $c3, $e7
- .DB $30, $3f, $22, $3f, $6d, $73, $58, $6f, $6d, $7a, $2c, $3d, $22, $3f, $37, $23
- .DB $76, $de, $34, $bc, $4c, $fc, $6e, $d6, $42, $ee, $9e, $fa, $72, $a6, $be, $5a
- .DB $ff, $a7, $5c, $ff, $38, $f7, $ba, $67, $e4, $ef, $c1, $ff, $c7, $b8, $cd, $3d
- .DB $be, $da, $f6, $fe, $3e, $d6, $bc, $7c, $8c, $fc, $84, $fc, $bc, $c4, $c6, $ee
- .DB $70, $7f, $82, $ff, $2d, $d3, $58, $af, $6d, $1a, $cc, $bd, $a2, $ff, $37, $e3
- .DB $12, $fe, $76, $de, $34, $bc, $4c, $fc, $6e, $d6, $c2, $ee, $1e, $fa, $f2, $26
- .DB $3f, $27, $3c, $3f, $38, $37, $3a, $27, $64, $6f, $61, $7f, $47, $78, $4d, $7d
- .DB $bd, $da, $f7, $fd, $3a, $d7, $ba, $7d, $8e, $fe, $87, $ff, $bd, $c7, $c3, $ee
- .DB $70, $7f, $22, $3f, $6d, $73, $58, $6f, $4d, $7a, $4c, $7d, $42, $7f, $77, $63
- .DB $13, $ff, $76, $df, $35, $ba, $48, $fd, $69, $d7, $c1, $ef, $1c, $fb, $f0, $27
- .DB $ff, $a7, $5c, $ff, $38, $f7, $ba, $67, $e4, $ef, $c1, $ff, $c7, $b8, $cd, $3d
- .DB $bd, $da, $f7, $fd, $3a, $d7, $ba, $7d, $8e, $fe, $87, $ff, $bd, $c7, $c3, $ee
- .DB $70, $7f, $82, $ff, $2d, $d3, $58, $af, $6d, $1a, $cc, $bd, $a2, $ff, $37, $e3
- .DB $13, $ff, $76, $df, $35, $ba, $48, $fd, $69, $d7, $c1, $ef, $1c, $fb, $f0, $27
-
- ; Stairs
- .DB $ff, $ff, $d5, $ff, $aa, $ff, $d5, $ff, $ab, $ff, $df, $ff, $b1, $f1, $f1, $f1
- .DB $ff, $ff, $5f, $ff, $b1, $f1, $f1, $f1, $11, $11, $17, $11, $3f, $11, $ff, $11
- .DB $9f, $91, $ff, $91, $ff, $91, $ff, $91, $ff, $91, $fd, $93, $f1, $9f, $ff, $ff
- .DB $ff, $11, $ff, $11, $ff, $11, $f1, $1f, $91, $7f, $11, $ff, $11, $ff, $ff, $ff
-
-OBJ_Tile_Image_Data:
- ; Bunny Side
- .DB $00, $00, $44, $44, $aa, $ee, $aa, $ee, $fe, $b2, $fc, $b4, $fc, $94, $75, $4d
- .DB $ff, $82, $6f, $70, $3f, $20, $3f, $20, $31, $2e, $4e, $7f, $51, $71, $60, $60
- .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $c0, $c0
- .DB $34, $f4, $ce, $3a, $fe, $0a, $fc, $04, $bc, $44, $5c, $e4, $88, $f8, $f0, $f0
-
- ; Bunny Back
- .DB $00, $00, $00, $00, $00, $00, $1c, $1c, $2e, $32, $2f, $3b, $1f, $19, $0e, $0f
- .DB $13, $1c, $27, $38, $2f, $30, $2f, $30, $2f, $30, $13, $1c, $15, $1b, $0e, $0e
- .DB $00, $00, $40, $40, $a0, $e0, $a0, $e0, $e0, $a0, $e0, $20, $c0, $40, $e0, $e0
- .DB $d0, $30, $d0, $30, $e8, $18, $f8, $08, $f0, $10, $90, $70, $70, $90, $e0, $e0
-
- ; Bunny Front
- .DB $00, $00, $04, $04, $0a, $0e, $0a, $0e, $0e, $0a, $0f, $09, $07, $05, $0f, $0e
- .DB $17, $1c, $17, $1a, $2f, $30, $3f, $20, $1f, $10, $17, $1d, $0d, $0f, $06, $06
- .DB $00, $00, $00, $00, $00, $00, $70, $70, $e8, $98, $e8, $b8, $f0, $30, $e0, $e0
- .DB $d0, $70, $e8, $98, $e8, $18, $f8, $08, $f8, $08, $d0, $70, $60, $e0, $c0, $c0
-
Number_Font_Data:
.DB $00, $38, $4c, $c6, $c6, $64, $38, $00 ; 0
.DB $00, $18, $38, $18, $18, $18, $7e, $00 ; 1
@@ -111,7 +19,7 @@ Number_Font_Data:
Load_Tile:
LD HL, $8020
LD DE, =OBJ_Tile_Image_Data
- LD BC, $00c0
+ LD BC, $0280
CALL =memcpy
CALL =Load_Number_Font
LD HL, $9200
diff --git a/tileset.gbasm b/tileset.gbasm
new file mode 100644
index 0000000..39a32db
--- /dev/null
+++ b/tileset.gbasm
@@ -0,0 +1,111 @@
+BG_Tile_Image_Data:
+
+ ; Trees
+ .DB $07, $07, $1c, $1f, $38, $37, $3a, $27, $64, $6f, $41, $7f, $47, $78, $4d, $7d ; 0x20
+ .DB $f0, $f0, $b0, $d0, $38, $f8, $8c, $7c, $86, $fe, $be, $c6, $c2, $ee, $c2, $ee ; 0x21
+ .DB $70, $7f, $22, $3f, $6d, $73, $58, $6f, $6d, $5a, $6d, $7d, $3f, $3f, $00, $00 ; 0x22
+ .DB $16, $fe, $74, $dc, $34, $bc, $4e, $fe, $6a, $d6, $c6, $fe, $fc, $fc, $00, $00 ; 0x23
+ .DB $07, $07, $1c, $1f, $38, $37, $3a, $27, $e4, $ef, $c1, $ff, $c7, $b8, $cd, $3d ; 0x24
+ .DB $80, $80, $f0, $f0, $30, $d0, $b8, $78, $8c, $fc, $86, $fe, $be, $c6, $c2, $ee ; 0x25
+ .DB $70, $7f, $82, $ff, $2d, $d3, $58, $af, $6d, $1a, $fc, $bd, $ef, $ef, $00, $00 ; 0x26
+ .DB $16, $fe, $74, $dc, $34, $bc, $4e, $fe, $6a, $d6, $c6, $fe, $fc, $fc, $00, $00 ; 0x27
+ .DB $07, $07, $1c, $1f, $38, $37, $3a, $27, $64, $6f, $41, $7f, $47, $78, $4d, $7d ; 0x28
+ .DB $80, $80, $f0, $f0, $30, $d0, $b8, $78, $8e, $fe, $87, $ff, $bd, $c7, $c3, $ee ; 0x29
+ .DB $70, $7f, $22, $3f, $6d, $73, $58, $6f, $6d, $5a, $6d, $7d, $3f, $3f, $00, $00 ; 0x2a
+ .DB $13, $ff, $76, $df, $35, $ba, $48, $fd, $69, $d7, $ef, $ef, $38, $38, $00, $00 ; 0x2b
+ .DB $07, $07, $1c, $1f, $38, $37, $3a, $27, $64, $6f, $c1, $ff, $c7, $b8, $cd, $3d ; 0x2c
+ .DB $80, $80, $f0, $f0, $30, $d0, $b8, $78, $8c, $fc, $87, $ff, $bd, $c7, $c3, $ee ; 0x2d
+ .DB $70, $7f, $82, $ff, $2d, $d3, $58, $af, $6d, $1a, $fd, $bd, $e7, $e7, $00, $00 ; 0x2e
+ .DB $13, $ff, $76, $df, $35, $ba, $48, $fd, $69, $d7, $e3, $ef, $3e, $3e, $00, $00 ; 0x2f
+ .DB $3f, $27, $3c, $3f, $38, $37, $3a, $27, $64, $6f, $41, $7f, $47, $78, $4d, $7d ; 0x30
+ .DB $bf, $dd, $fb, $ff, $3f, $db, $be, $7e, $86, $fe, $82, $fe, $bf, $c3, $c1, $e7 ; 0x31
+ .DB $70, $7f, $22, $3f, $6d, $73, $58, $6f, $6d, $5a, $6d, $7d, $3f, $3f, $00, $00 ; 0x32
+ .DB $1b, $ff, $7a, $de, $3a, $be, $47, $ff, $65, $db, $e3, $ef, $3e, $3e, $00, $00 ; 0x33
+ .DB $ff, $a7, $5c, $ff, $38, $f7, $ba, $67, $e4, $ef, $c1, $ff, $c7, $b8, $cd, $3d ; 0x34
+ .DB $be, $da, $f6, $fe, $3e, $d6, $bc, $7c, $8c, $fc, $84, $fc, $be, $c6, $c2, $ee ; 0x35
+ .DB $70, $7f, $82, $ff, $2d, $d3, $58, $af, $6d, $1a, $fc, $bd, $ef, $ef, $00, $00 ; 0x36
+ .DB $16, $fe, $74, $dc, $34, $bc, $4e, $fe, $6a, $d6, $c6, $fe, $fc, $fc, $00, $00 ; 0x37
+ .DB $3f, $27, $3c, $3f, $38, $37, $3a, $27, $64, $6f, $41, $7f, $47, $78, $4d, $7d ; 0x38
+ .DB $bd, $da, $f7, $fd, $3a, $d7, $ba, $7d, $8e, $fe, $87, $ff, $bd, $c7, $c3, $ee ; 0x39
+ .DB $70, $7f, $22, $3f, $6d, $73, $58, $6f, $6d, $5a, $6d, $7d, $3f, $3f, $00, $00 ; 0x3a
+ .DB $13, $ff, $76, $df, $35, $ba, $48, $fd, $69, $d7, $ef, $ef, $38, $38, $00, $00 ; 0x3b
+ .DB $ff, $a7, $5c, $ff, $38, $f7, $ba, $67, $e4, $ef, $c1, $ff, $c7, $b8, $cd, $3d ; 0x3c
+ .DB $bd, $da, $f7, $fd, $3a, $d7, $ba, $7d, $8e, $fe, $87, $ff, $bd, $c7, $c3, $ee ; 0x3d
+ .DB $70, $7f, $82, $ff, $2d, $d3, $58, $af, $6d, $1a, $fd, $bd, $e7, $e7, $00, $00 ; 0x3e
+ .DB $13, $ff, $76, $df, $35, $ba, $48, $fd, $69, $d7, $e3, $ef, $3e, $3e, $00, $00 ; 0x3f
+ .DB $07, $07, $1c, $1f, $38, $37, $3a, $27, $64, $6f, $41, $7f, $47, $78, $6d, $7d ; 0x40
+ .DB $f0, $f0, $b0, $d0, $38, $f8, $8c, $7c, $86, $fe, $be, $c6, $c2, $ee, $92, $fe ; 0x41
+ .DB $30, $3f, $22, $3f, $6d, $73, $58, $6f, $6d, $7a, $2c, $3d, $22, $3f, $37, $23 ; 0x42
+ .DB $76, $de, $34, $bc, $4c, $fc, $6e, $d6, $42, $ee, $9e, $fa, $72, $a6, $be, $5a ; 0x43
+ .DB $07, $07, $1c, $1f, $38, $37, $3a, $27, $e4, $ef, $c1, $ff, $c7, $b8, $cd, $3d ; 0x44
+ .DB $80, $80, $f0, $f0, $30, $d0, $b8, $78, $8c, $fc, $86, $fe, $be, $c6, $c2, $ee ; 0x45
+ .DB $70, $7f, $82, $ff, $2d, $d3, $58, $af, $6d, $1a, $cc, $bd, $a2, $ff, $37, $e3 ; 0x46
+ .DB $12, $fe, $76, $de, $34, $bc, $4c, $fc, $6e, $d6, $c2, $ee, $1e, $fa, $f2, $26 ; 0x47
+ .DB $07, $07, $1c, $1f, $38, $37, $3a, $27, $64, $6f, $41, $7f, $47, $78, $6d, $7d ; 0x48
+ .DB $80, $80, $f0, $f0, $30, $d0, $b8, $78, $8e, $fe, $87, $ff, $bd, $c7, $c3, $ee ; 0x49
+ .DB $30, $3f, $22, $3f, $6d, $73, $58, $6f, $6d, $7a, $2c, $3d, $22, $3f, $37, $23 ; 0x4a
+ .DB $13, $ff, $76, $df, $35, $ba, $48, $fd, $69, $d7, $c1, $ef, $1c, $fb, $f0, $27 ; 0x4b
+ .DB $07, $07, $1c, $1f, $38, $37, $3a, $27, $64, $6f, $c1, $ff, $c7, $b8, $cd, $3d ; 0x4c
+ .DB $80, $80, $f0, $f0, $30, $d0, $b8, $78, $8c, $fc, $87, $ff, $bd, $c7, $c3, $ee ; 0x4d
+ .DB $70, $7f, $82, $ff, $2d, $d3, $58, $af, $6d, $1a, $cc, $bd, $a2, $ff, $37, $e2 ; 0x4e
+ .DB $13, $ff, $76, $df, $35, $ba, $48, $fd, $69, $d7, $c1, $ef, $1c, $fb, $f0, $27 ; 0x4f
+ .DB $3f, $27, $3c, $3f, $38, $37, $3a, $27, $64, $6f, $41, $7f, $47, $78, $6d, $7d ; 0x50
+ .DB $bf, $dd, $fb, $ff, $3f, $db, $be, $7e, $86, $fe, $82, $fe, $bf, $c3, $c3, $e7 ; 0x51
+ .DB $30, $3f, $22, $3f, $6d, $73, $58, $6f, $6d, $7a, $2c, $3d, $22, $3f, $37, $23 ; 0x52
+ .DB $76, $de, $34, $bc, $4c, $fc, $6e, $d6, $42, $ee, $9e, $fa, $72, $a6, $be, $5a ; 0x53
+ .DB $ff, $a7, $5c, $ff, $38, $f7, $ba, $67, $e4, $ef, $c1, $ff, $c7, $b8, $cd, $3d ; 0x54
+ .DB $be, $da, $f6, $fe, $3e, $d6, $bc, $7c, $8c, $fc, $84, $fc, $bc, $c4, $c6, $ee ; 0x55
+ .DB $70, $7f, $82, $ff, $2d, $d3, $58, $af, $6d, $1a, $cc, $bd, $a2, $ff, $37, $e3 ; 0x56
+ .DB $12, $fe, $76, $de, $34, $bc, $4c, $fc, $6e, $d6, $c2, $ee, $1e, $fa, $f2, $26 ; 0x57
+ .DB $3f, $27, $3c, $3f, $38, $37, $3a, $27, $64, $6f, $61, $7f, $47, $78, $4d, $7d ; 0x58
+ .DB $bd, $da, $f7, $fd, $3a, $d7, $ba, $7d, $8e, $fe, $87, $ff, $bd, $c7, $c3, $ee ; 0x59
+ .DB $70, $7f, $22, $3f, $6d, $73, $58, $6f, $4d, $7a, $4c, $7d, $42, $7f, $77, $63 ; 0x5a
+ .DB $13, $ff, $76, $df, $35, $ba, $48, $fd, $69, $d7, $c1, $ef, $1c, $fb, $f0, $27 ; 0x5b
+ .DB $ff, $a7, $5c, $ff, $38, $f7, $ba, $67, $e4, $ef, $c1, $ff, $c7, $b8, $cd, $3d ; 0x5c
+ .DB $bd, $da, $f7, $fd, $3a, $d7, $ba, $7d, $8e, $fe, $87, $ff, $bd, $c7, $c3, $ee ; 0x5d
+ .DB $70, $7f, $82, $ff, $2d, $d3, $58, $af, $6d, $1a, $cc, $bd, $a2, $ff, $37, $e3 ; 0x5e
+ .DB $13, $ff, $76, $df, $35, $ba, $48, $fd, $69, $d7, $c1, $ef, $1c, $fb, $f0, $27 ; 0x5f
+
+ ; Stairs
+ .DB $ff, $ff, $d5, $ff, $aa, $ff, $d5, $ff, $ab, $ff, $df, $ff, $b1, $f1, $f1, $f1 ; 0x60
+ .DB $ff, $ff, $5f, $ff, $b1, $f1, $f1, $f1, $11, $11, $17, $11, $3f, $11, $ff, $11 ; 0x61
+ .DB $9f, $91, $ff, $91, $ff, $91, $ff, $91, $ff, $91, $fd, $93, $f1, $9f, $ff, $ff ; 0x62
+ .DB $ff, $11, $ff, $11, $ff, $11, $f1, $1f, $91, $7f, $11, $ff, $11, $ff, $ff, $ff ; 0x63
+
+OBJ_Tile_Image_Data:
+
+ ; Bunny side
+ .DB $00, $00, $44, $44, $aa, $ee, $aa, $ee, $fe, $b2, $fc, $b4, $fc, $94, $75, $4d ; 0x02
+ .DB $ff, $82, $6f, $70, $3f, $20, $3f, $20, $31, $2e, $4e, $7f, $51, $71, $60, $60 ; 0x03
+ .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $c0, $c0 ; 0x04
+ .DB $34, $f4, $ce, $3a, $fe, $0a, $fc, $04, $bc, $44, $5c, $e4, $88, $f8, $f0, $f0 ; 0x05
+
+ ; Bunny back
+ .DB $00, $00, $00, $00, $00, $00, $1c, $1c, $2e, $32, $2f, $3b, $1f, $19, $0e, $0f ; 0x06
+ .DB $13, $1c, $27, $38, $2f, $30, $2f, $30, $2f, $30, $13, $1c, $15, $1b, $0e, $0e ; 0x07
+ .DB $00, $00, $40, $40, $a0, $e0, $a0, $e0, $e0, $a0, $e0, $20, $c0, $40, $e0, $e0 ; 0x08
+ .DB $d0, $30, $d0, $30, $e8, $18, $f8, $08, $f0, $10, $90, $70, $70, $90, $e0, $e0 ; 0x09
+
+ ; Bunny front
+ .DB $00, $00, $04, $04, $0a, $0e, $0a, $0e, $0e, $0a, $0f, $09, $07, $05, $0f, $0e ; 0x0a
+ .DB $17, $1c, $17, $1a, $2f, $30, $3f, $20, $1f, $10, $17, $1d, $0d, $0f, $06, $06 ; 0x0b
+ .DB $00, $00, $00, $00, $00, $00, $70, $70, $e8, $98, $e8, $b8, $f0, $30, $e0, $e0 ; 0x0c
+ .DB $d0, $70, $e8, $98, $e8, $18, $f8, $08, $f8, $08, $d0, $70, $60, $e0, $c0, $c0 ; 0x0d
+
+ ; Fox side
+ .DB $00, $00, $00, $00, $01, $01, $15, $15, $1f, $1f, $1a, $1e, $16, $1e, $12, $1e ; 0x0e
+ .DB $7b, $6f, $7c, $43, $3c, $3f, $06, $07, $03, $02, $03, $02, $03, $02, $01, $01 ; 0x0f
+ .DB $00, $00, $00, $00, $c0, $c0, $f0, $30, $fc, $9c, $f6, $8e, $c2, $be, $42, $7e ; 0x10
+ .DB $3a, $3e, $e4, $fc, $04, $fc, $72, $8e, $fe, $f6, $de, $d6, $de, $d6, $8c, $8c ; 0x11
+
+ ; Fox back
+ .DB $00, $00, $04, $04, $0c, $0c, $0c, $0c, $0b, $0f, $08, $0f, $10, $1f, $1f, $1f ; 0x12
+ .DB $11, $1f, $10, $1f, $10, $1f, $1b, $1f, $1b, $1f, $0f, $0b, $0f, $0b, $0c, $0c ; 0x13
+ .DB $00, $00, $8e, $8e, $de, $d2, $de, $d2, $7e, $e2, $46, $fa, $42, $fe, $82, $fe ; 0x14
+ .DB $02, $fe, $04, $fc, $84, $fc, $48, $f8, $70, $f0, $c0, $40, $c0, $40, $c0, $c0 ; 0x15
+
+ ; Fox front
+ .DB $00, $00, $04, $04, $0c, $0c, $0c, $0c, $0b, $0f, $08, $0f, $1c, $17, $1f, $10 ; 0x16
+ .DB $0f, $0c, $13, $1f, $10, $1f, $1b, $1f, $1f, $1b, $0f, $0b, $0f, $0b, $0c, $0c ; 0x17
+ .DB $00, $00, $8e, $8e, $de, $d2, $de, $d2, $7e, $e2, $46, $fa, $e2, $be, $e2, $3e ; 0x18
+ .DB $c2, $fe, $22, $fe, $24, $fc, $64, $fc, $dc, $5c, $c0, $40, $c0, $40, $c0, $c0 ; 0x19