diff options
author | Astatin <[email protected]> | 2024-08-31 16:19:12 +0900 |
---|---|---|
committer | Astatin <astatin@redacted> | 2024-08-31 16:19:12 +0900 |
commit | 4dd5da8812f90e8af924e3a6ee89aef4a88658e4 (patch) | |
tree | 9c22047e634e50d8043400b7399712054d329fd2 /scripts | |
parent | 522bde7b7e7d70fc86a5dac2042b7b20e05c197b (diff) |
Add tileset generation script
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/generate-tiledata.py | 34 | ||||
-rw-r--r-- | scripts/parse_sprite_png.py | 11 |
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 |