aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorAstatin <[email protected]>2024-10-31 15:04:01 +0900
committerAstatin <[email protected]>2024-10-31 15:04:01 +0900
commita69ff95615b9ef4ed1ef2e0dbe42bf64b36e25b0 (patch)
tree805f8f0ab1274df6d89fcf8ea1f46643b47e941a /scripts
parente4507824c03030e7f1f11483f400335ae668424a (diff)
Add font and Print_str routine
Diffstat (limited to 'scripts')
-rw-r--r--scripts/generate-tiledata.py8
-rw-r--r--scripts/parse_sprite_png.py27
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")