From dccf9cc3d63cced85b22e91b7247112d8cd82b4e Mon Sep 17 00:00:00 2001 From: Lukas Krickl Date: Sun, 7 Dec 2025 06:26:19 +0100 Subject: [PATCH] maps: Added map converter script --- makefile | 5 +++- maps/spawn.inc | 37 ++++++++++++++++++++++++++++++ src/levels.s | 15 +----------- tools/tmx2map.py | 59 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 101 insertions(+), 15 deletions(-) create mode 100644 maps/spawn.inc create mode 100755 tools/tmx2map.py diff --git a/makefile b/makefile index 390b075..40475c0 100644 --- a/makefile +++ b/makefile @@ -9,7 +9,7 @@ bin: $(AS) $(FLAGS) -o $(NAME).gb -l ${NAME}.lst -s $(NAME).$(SYMTYPE) -S $(SYMTYPE) -I ./src -I ./tiles -I ./maps src/main.s test: - $(AS) $(FLAGS) -o $(TEST_NAME).gb -l ${TEST_NAME}.lst -s $(TEST_NAME).mlb -S mlb -I ./src -I ./tiles src/main.s + $(AS) $(FLAGS) -o $(TEST_NAME).gb -l ${TEST_NAME}.lst -s $(TEST_NAME).mlb -S mlb -I ./src -I ./tiles -I ./maps src/main.s .PHONY: tiles tiles: @@ -18,3 +18,6 @@ tiles: ./tools/png2chr.py assets/tiles/bank8C00.png > tiles/bank8C00.inc ./tools/png2chr.py assets/tiles/bank9000.png > tiles/bank9000.inc +.PHONY: maps +maps: + ./tools/tmx2map.py assets/maps/spawn.tmx > maps/spawn.inc diff --git a/maps/spawn.inc b/maps/spawn.inc new file mode 100644 index 0000000..cc4097b --- /dev/null +++ b/maps/spawn.inc @@ -0,0 +1,37 @@ +; this map was generated by tmx2map.py + +.db 0x1, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x1, 0x2, 0x0, 0x3, 0x4, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0x4, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1 +.db 0x2, 0x1, 0x2, 0x1, 0x2, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x3, 0x4, 0x3, 0x4, 0x3 +.db 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1 +.db 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x3, 0x4, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1 +.db 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x3, 0x4, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2 diff --git a/src/levels.s b/src/levels.s index 8a1666d..9a6394c 100644 --- a/src/levels.s +++ b/src/levels.s @@ -16,17 +16,4 @@ l1: mapdef 0, map_r_nop, 0, 0, bank8000, bank8800, bank8C00, bank9000, tile_id_table - .db 01, 02, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 - .db 03, 04, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 - .db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 - .db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 - .db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 - .db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 - .db 00, 00, 00, 00, 00, 00, 00, 01, 02, 01, 02, 00, 00, 00, 00, 00, 00, 00, 00, 00 - .db 00, 00, 00, 00, 00, 00, 00, 03, 04, 03, 04, 00, 00, 00, 00, 00, 00, 00, 00, 00 - .db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 - .db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 - .db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 - .db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 - .db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 - .db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 01, 02 +#include "spawn.inc" diff --git a/tools/tmx2map.py b/tools/tmx2map.py new file mode 100755 index 0000000..6599e99 --- /dev/null +++ b/tools/tmx2map.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python +import sys +import os +import xml.etree.ElementTree as ET + +TILE_SIZE = 8 + +if len(sys.argv) < 2: + print("Usage: tmx2map.py ") + sys.exit(-1) + + +src = sys.argv[1] + +tile_id_table = { + # wall + 65 : 1, + 66 : 2, + 81 : 3, + 82 : 4 +} + +default_tile_id = 0 + +def print_bg_data(data): + print("; this map was generated by tmx2map.py") + split = data.split(",") + + for i, b in enumerate(split): + end = ', ' + if i % 8 == 0: + print("\n.db ", end = '') + + + val = int(b.strip()) + if val in tile_id_table: + val = tile_id_table[val] + else: + val = default_tile_id + + if (i+1) % 8 == 0: + end = '' + + if i == len(data) - 1: + end = '\n' + print(hex(val), end=end) + print("") + +def convert(src): + tree = ET.parse(src) + root = tree.getroot() + + for child in root: + if child.tag == "layer": + for data in child: + print_bg_data(data.text) + +convert(src) + -- 2.30.2