map: refactored map converter to split up bg and flags into 2 tables
authorLukas Krickl <lukas@krickl.dev>
Sat, 21 Jun 2025 06:54:00 +0000 (08:54 +0200)
committerLukas Krickl <lukas@krickl.dev>
Sat, 21 Jun 2025 06:54:00 +0000 (08:54 +0200)
The map loader now also loads them in 2 steps.

maps/default_map.s
src/defs.s
src/map.s
tools/tms2map.py

index 2913765ecef644fca217ee1e6d9f037d01302076..04cbbd5a81487d8053a12488390bf99950b12ecc 100644 (file)
@@ -1,6 +1,7 @@
 default_map_header:
 .db 0, 0, 0, 0 ; flags
 dw default_map_bg
+dw default_map_tile_flags
 dw st_map_null
 dw default_map_actor_table
 dw bank8000
@@ -9,99 +10,197 @@ dw bank9000
 
 default_map_bg:
 
-.db 0x65,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x6b,0x1, 0x6b,0x1, 0x6b,0x1, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x65,0x0, 0x65,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x65,0x0, 0x65,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x65,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x4a,0x1, 0x5c,0x1, 0x5c,0x1
-.db 0x5c,0x1, 0x4b,0x1, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x5d,0x0, 0x7a,0x0, 0x7a,0x0
-.db 0x7a,0x0, 0x4d,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x6c,0x1, 0x6a,0x1, 0x6b,0x1
-.db 0x6b,0x1, 0x6d,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x78,0x0, 0x78,0x0, 0x78,0x0
-.db 0x78,0x0, 0x78,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x74,0x0, 0x74,0x0, 0x74,0x0
-.db 0x74,0x0, 0x74,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x74,0x0, 0x74,0x0, 0x74,0x0
-.db 0x74,0x0, 0x74,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x74,0x0, 0x74,0x0, 0x74,0x0
-.db 0x74,0x0, 0x74,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x74,0x0, 0x74,0x0, 0x74,0x0
-.db 0x74,0x0, 0x74,0x0, 0x74,0x0, 0x74,0x0, 0x74,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x74,0x0, 0x74,0x0, 0x74,0x0, 0x74,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0
-.db 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x64,0x0, 0x65,0x0
+.db 0x65, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x6b, 0x6b, 0x6b, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x65, 0x65
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x65, 0x65
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x65, 0x64, 0x64, 0x64, 0x64, 0x4a, 0x5c, 0x5c
+.db 0x5c, 0x4b, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x5d, 0x7a, 0x7a
+.db 0x7a, 0x4d, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x6c, 0x6a, 0x6b
+.db 0x6b, 0x6d, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x78, 0x78, 0x78
+.db 0x78, 0x78, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x74, 0x74, 0x74
+.db 0x74, 0x74, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x74, 0x74, 0x74
+.db 0x74, 0x74, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x74, 0x74, 0x74
+.db 0x74, 0x74, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x74, 0x74, 0x74
+.db 0x74, 0x74, 0x74, 0x74, 0x74, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x74, 0x74, 0x74, 0x74, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.db 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x65
+default_map_tile_flags:
+
+.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, 0x1, 0x1, 0x1, 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, 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, 0x0, 0x0
+.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1
+.db 0x1, 0x1, 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, 0x0
+.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
+.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1
+.db 0x1, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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
index 22d281c67192dce2b795405d777d0b688a2e4544..7ca8fce5f0bce6a8a3da6bd386a502ad8ce4bab7 100644 (file)
 .de bge_new_tile, 1
 .de bge_size, 0
 
+#define MAP_BG_TILE_OFFSET 0
+#define MAP_BG_FLAGS_OFFSET 1
+
   ; map header struct
 .se 0
 .de map_flags_1, 1
 .de map_flags_3, 1
 .de map_flags_4, 1
 .de map_bg_ptr, 2
+.de map_tile_flags_ptr, 2
   ; ptr to mape state to be loaded
   ; maps to map property state_ptr
 .de map_state_ptr, 2
index 6e19ac9055555eadcac8e6e18c603746d846c8d5..777c114af4e99e7d4c935672746c9c03951c01ff 100644 (file)
--- a/src/map.s
+++ b/src/map.s
@@ -66,7 +66,18 @@ map_get_tile:
  ; inputs:
  ;    hl: map header
 map_tiles_load:
+  ; first clear 
+  push_all
+
+  ld hl, map 
+  ld bc,  map_end - map 
+  ld d, 0
+  call memset
+
+  pop_all
+
   ; load bg ptr
+  push hl
   ld de, map_bg_ptr
   add hl, de ; hl = bg_ptr
   ld a, [hl+]
@@ -75,43 +86,49 @@ map_tiles_load:
   ld h, a
   ld l, d
   ; hl = bg ptr
-  call tile_map_bg_load
-  ret
 
-  ; loads a tile map into cells 
-  ; and to cell memory
-  ; inputs:
-  ;   hl: map bg data
-tile_map_bg_load:
-  ; first clear 
-  push_all
+  ld de, MAP_BG_TILE_OFFSET ; 0 offset for bg
+  call tile_map_compressed_load
+  pop hl
 
-  ld hl, map 
-  ld bc,  map_end - map 
-  ld d, 0
-  call memset
+  ; load tile flags ptr
+  ld de, map_tile_flags_ptr
+  add hl, de ; hl = bg_ptr
+  ld a, [hl+]
+  ld d, a
+  ld a, [hl+]
+  ld h, a
+  ld l, d
+  ; hl = bg ptr
 
-  pop_all
+  ld de, MAP_BG_FLAGS_OFFSET
+  call tile_map_compressed_load
+  ret
   
+  ; loads compressed data into the map buffer
+  ; this can either be tiles or flags
+  ; based on its offset and the compressed ptr 
+  ; 
+  ; inputs:
+  ;   hl: compressed map data
+  ;   de: target offset (usually 0/1)
+tile_map_compressed_load:
   push hl
   pop bc ; bc = map ptr
 
+  ld hl, map
+  add hl, de ; + offset
   ; de = loop counter
   ld de, MAP_SIZE
   ; bc = destination
-  ld hl, map 
-   ; hl = c_tile  
+  ; hl = c_tile  
 
 @loop:
   ; tile
   ld a, [bc]
   inc bc ; bc++
   ld [hl+], a
-  
-  ; flags
-  ld a, [bc]
-  inc bc ; bc++
-  ld [hl+], a
+  inc hl ; hl++ to skip over unneeded byte
 
   ; de--
   dec de
@@ -123,7 +140,7 @@ tile_map_bg_load:
   jr nz, @loop REL
 
   ret
-  
+
   ; loads a map's state
   ; inputs:
   ;   hl: map ptr
index 5143c54f40220ac8c870abe6f2280e68331f0ce0..0c52a7562b47091076f353a9ad8929d9fa770f1f 100755 (executable)
@@ -27,36 +27,51 @@ if len(sys.argv) < 3:
 src = sys.argv[1]
 name = sys.argv[2]
 
-def print_data(data, name, layer):
+def compress_map(data):
+    return data
+
+
+def convert_val(byte):
+    val = int(byte)
+    if val > 0:
+        val -= 1
+    return val
+
+def convert_none(byte):
+    return int(byte)
+
+def print_bg_data(data, name, layer):
+    split = compress_map(data.split(","))
+    print_data(split, name, layer, convert_val)
+
+def print_data(data, name, layer, convert):
     print(name + "_" + layer + ":")
-    split = data.split(",")
-    for i, byte in enumerate(split):
+    for i, byte in enumerate(data):
         end = ', '
 
         if i % 8 == 0: 
             print("\n.db ", end = '');
-
-        val = int(byte)
-        if val > 0:
-            val -= 1
-
-        # if val > 127:
-        #    val = val - 128
-        # else:
-        #    val = val + 0x80
         
+        val = convert(byte)
+
         if (i+1) % 8 == 0:
             end = ''
-        if i == len(split) - 1:
+        if i == len(data) - 1:
             end = '\n'
-        print(hex(val), end='')
-        print(",", end='')
-        print(hex(TILE_FLAGS[int(byte)-1]), end=end)
+        print(hex(val), end=end)
+
+def print_bg_flags(data, name, layer):
+    split = data.split(",")
+    flags = []
+    for i, byte in enumerate(split):
+        flags.append(TILE_FLAGS[int(byte)-1])
+    print_data(flags, name, 'tile_flags', convert_none)
 
 def print_header(name):
     print(name + "_header:")
     print(".db 0, 0, 0, 0 ; flags")
     print("dw " + name + "_bg")
+    print("dw " + name + "_tile_flags")
     print("dw " + state_ptr)
     print("dw " + actor_table_ptr)
     print("dw " + tile_bank0)
@@ -114,7 +129,8 @@ def convert(src, name):
     for child in root:
         if child.tag == "layer":
             for data in child:
-                print_data(data.text, name, child.attrib['name'])
+                print_bg_data(data.text, name, child.attrib['name'])
+                print_bg_flags(data.text, name, child.attrib['name'])
         elif child.tag == "tileset":
             get_flags(child)