diff options
author | Astatin <[email protected]> | 2024-10-31 15:04:01 +0900 |
---|---|---|
committer | Astatin <[email protected]> | 2024-10-31 15:04:01 +0900 |
commit | a69ff95615b9ef4ed1ef2e0dbe42bf64b36e25b0 (patch) | |
tree | 805f8f0ab1274df6d89fcf8ea1f46643b47e941a /scripts | |
parent | e4507824c03030e7f1f11483f400335ae668424a (diff) |
Add font and Print_str routine
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/generate-tiledata.py | 8 | ||||
-rw-r--r-- | scripts/parse_sprite_png.py | 27 |
2 files changed, 24 insertions, 11 deletions
diff --git a/scripts/generate-tiledata.py b/scripts/generate-tiledata.py index d0a963b..720191f 100644 --- a/scripts/generate-tiledata.py +++ b/scripts/generate-tiledata.py @@ -2,9 +2,9 @@ import subprocess sprite_idx = 0x0 -def get_sprite_png_parse_output(png, tallmode=False): +def get_sprite_png_parse_output(png, tallmode=False, sprite_1bpp_mode=False): global sprite_idx - result = str(subprocess.check_output(["python", "./scripts/parse_sprite_png.py", png] + (["--8x16"] if tallmode else []))).split("\\n") + result = str(subprocess.check_output(["python", "./scripts/parse_sprite_png.py", png] + (["--8x16"] if tallmode else []) + (["--1bpp"] if sprite_1bpp_mode else []))).split("\\n") for r in result: if r.startswith(".DB"): print("\t{} ; 0x{:02x}".format(r, sprite_idx)) @@ -23,6 +23,10 @@ print("Small_sprites:") print("\n\t; Heart") get_sprite_png_parse_output("./sprites/bg/heart.png") +sprite_idx = 0x80 +print("\nFont_Data:") +get_sprite_png_parse_output("./sprites/font.png", sprite_1bpp_mode=True) + sprite_idx = 0x02 print("\nOBJ_Tile_Image_Data:") print("\n\t; Bunny side") diff --git a/scripts/parse_sprite_png.py b/scripts/parse_sprite_png.py index f8d130a..5f9df9c 100644 --- a/scripts/parse_sprite_png.py +++ b/scripts/parse_sprite_png.py @@ -2,10 +2,9 @@ from PIL import Image import numpy as np import sys -sprite_8x16 = False +sprite_8x16 = "--8x16" in sys.argv -if len(sys.argv) >= 3 and sys.argv[2] == "--8x16": - sprite_8x16 = True +sprite_1bpp = "--1bpp" in sys.argv file = Image.open(sys.argv[1]).convert("RGB") @@ -18,7 +17,7 @@ def getpx(sprite_nb, x, y): sprite_tile_y = 1 if sprite_nb & 0b10 else 0 sprite_tile_x = 1 if sprite_nb & 0b01 else 0 - if sprite_8x16: + if sprite_8x16 or file.width < 16: sprite_tile_x ^= sprite_tile_y sprite_tile_y ^= sprite_tile_x sprite_tile_x ^= sprite_tile_y @@ -26,6 +25,10 @@ def getpx(sprite_nb, x, y): sprite_line = sprite_double_line * 2 + sprite_tile_y sprite_column = sprite_double_column * 2 + sprite_tile_x + if file.width < 16: + sprite_line = sprite_column * 2 + sprite_line + sprite_column = 0 + return [int(x) for x in px_array[int(sprite_line * 8 + y)][int(sprite_column * 8 + x)]] @@ -52,17 +55,23 @@ for nb in range(0, sprite_nb): if abs(db) < min(abs(dw), abs(dlg), abs(ddg)): print("#", end = '') - if abs(ddg) < min(abs(dw), abs(dlg), abs(db)): + elif abs(ddg) < min(abs(dw), abs(dlg), abs(db)): print(";", end = '') - if abs(dlg) < min(abs(dw), abs(ddg), abs(db)): + elif abs(dlg) < min(abs(dw), abs(ddg), abs(db)): print(".", end = '') else: print(" ", end = '') print("\n", end = '') print("\n") for i in range(0, 8): - if i == 0: - print(".DB $%02x, $%02x" % (result1[i], result2[i]), end='') + if sprite_1bpp: + if i == 0: + print(".DB $%02x" % (result1[i]), end='') + else: + print(", $%02x" % (result1[i]), end='') else: - print(", $%02x, $%02x" % (result1[i], result2[i]), end='') + if i == 0: + print(".DB $%02x, $%02x" % (result1[i], result2[i]), end='') + else: + print(", $%02x, $%02x" % (result1[i], result2[i]), end='') print("\n") |