From 4dd5da8812f90e8af924e3a6ee89aef4a88658e4 Mon Sep 17 00:00:00 2001 From: Astatin Date: Sat, 31 Aug 2024 16:19:12 +0900 Subject: Add tileset generation script --- scripts/generate-tiledata.py | 34 ++++++++++++++++++++++++++++++++++ scripts/parse_sprite_png.py | 11 +++++++++++ 2 files changed, 45 insertions(+) create mode 100644 scripts/generate-tiledata.py (limited to 'scripts') 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 -- cgit v1.2.3-70-g09d2