maps: Added map converter script
authorLukas Krickl <lukas@krickl.dev>
Sun, 7 Dec 2025 05:26:19 +0000 (06:26 +0100)
committerLukas Krickl <lukas@krickl.dev>
Sun, 7 Dec 2025 05:26:19 +0000 (06:26 +0100)
makefile
maps/spawn.inc [new file with mode: 0644]
src/levels.s
tools/tmx2map.py [new file with mode: 0755]

index 390b0750b25a5b77640c287dc52711ba0b2ce863..40475c0b419452410abafbe6d4cee5ebe4e87358 100644 (file)
--- 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 (file)
index 0000000..cc4097b
--- /dev/null
@@ -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
index 8a1666d030017d6da6e9573a09b4f094af93ede1..9a6394c7824bc3735b642809a0e5f83096b86b66 100644 (file)
 
 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 (executable)
index 0000000..6599e99
--- /dev/null
@@ -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 <source>")
+       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)
+