aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorAstatin <[email protected]>2024-08-31 16:19:12 +0900
committerAstatin <astatin@redacted>2024-08-31 16:19:12 +0900
commit4dd5da8812f90e8af924e3a6ee89aef4a88658e4 (patch)
tree9c22047e634e50d8043400b7399712054d329fd2 /scripts
parent522bde7b7e7d70fc86a5dac2042b7b20e05c197b (diff)
Add tileset generation script
Diffstat (limited to 'scripts')
-rw-r--r--scripts/generate-tiledata.py34
-rw-r--r--scripts/parse_sprite_png.py11
2 files changed, 45 insertions, 0 deletions
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