map: Added base map loader
authorLukas Krickl <lukas@krickl.dev>
Mon, 17 Mar 2025 15:33:44 +0000 (16:33 +0100)
committerLukas Krickl <lukas@krickl.dev>
Mon, 17 Mar 2025 15:33:44 +0000 (16:33 +0100)
makefile
maps/base_room.s [deleted file]
maps/default_map.s [new file with mode: 0644]
src/defs.s
src/main.s
src/map.s
src/ui.s
src/wram.s
tools/tms2map.py

index bfe2c462b219b9ec64b8165785c4a0da9fd0608c..7a74e16cbd1ed91ec82606773b76c7fc723b0531 100644 (file)
--- a/makefile
+++ b/makefile
@@ -16,4 +16,4 @@ tiles:
 
 .PHONY: maps
 maps:
-       ./tools/tms2map.py assets/maps/base.tmx base_room > maps/base_room.s
+       ./tools/tms2map.py assets/maps/base.tmx default_map > maps/default_map.s
diff --git a/maps/base_room.s b/maps/base_room.s
deleted file mode 100644 (file)
index 2bb1628..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-base_room_bg:
-
-.db 0x80, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24
-.db 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x80
diff --git a/maps/default_map.s b/maps/default_map.s
new file mode 100644 (file)
index 0000000..f641440
--- /dev/null
@@ -0,0 +1,100 @@
+default_map_bg:
+
+.db 0x80, 0x0, 0x82, 0xff, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea
+.db 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x0, 0x80
index a8452232ee3c4d88182753be0f2554ed01f55067..c66ce0c122d370ab297e5e386885221ca7c07bd5 100644 (file)
@@ -10,7 +10,7 @@
 #define STACK_BEGIN 0xDFFF
 
 #define TILE_SIZE 8
-#define MAP_W 32
+#define MAP_W 28
 #define MAP_H 28
 #define MAP_SIZE (MAP_W * MAP_H)
 
   ; this holds all the information 
   ; a cell on the map has 
 .se 0
+  ; cell type
 .de c_type, 1
+  ; cell gfx
 .de c_tile, 1
-.de c_flags, 2
+.de c_flags, 1
 
   ; power that this tile can pass on 
   ; to adjacent tiles
 .de c_power, 1
-.de c_crime, 1
-.de c_fire, 1
+  ; HI: fire chance 
+  ; LO: crime rate
+.de c_fire_crime, 1
 .de c_occupation, 1
-.de c_other, 2
+.de c_other, 1
   ; offset to head tile for thsi tile
   ; if offset is 0000 this is the head tile 
   ; head tiles are tiles that manage the state of a 
   ; multi-tile object
-  ; the head tile is located at c_type - [c_head_offset]
-.de c_head_offset, 2
+  ; the head offset consists of 2 4-bit integers
+  ; HI: how many cells up to walk to get to head
+  ; LO: how many cells left to walk to get to head
+.de c_head_offset, 1
 .de c_size, 0
+
+  ; cell type enum
+.se 0
+.de CT_NONE, 1
+.de CT_GROUND, 1
+.de CT_WATER, 1
index 521400bce14acb2446e781e8891f050b3543f0a9..e4db4616e19928b5c67adfcaa488af4ca5d534f6 100644 (file)
@@ -22,6 +22,9 @@ entry:
   call lcd_off
   call video_init
   call audio_init
+  
+  call map_init
+
   call lcd_on
   call vblank_wait
   
index 74f633732ffe5572f9e63a9ab8f0b48263a544df..885ab5427acf33ea5a4d2ac7f65b0032060301fe 100644 (file)
--- a/src/map.s
+++ b/src/map.s
@@ -1 +1,89 @@
-#include "base_room.s"
+
+  ; initial map setup
+map_init:
+  ld hl, default_map_bg 
+  call tile_map_load
+
+  call cells_draw_all
+
+  ret
+
+  ; loads a tile map into cells 
+  ; and to cell memory
+  ; inputs:
+  ;   hl: map
+tile_map_load:
+  ; first clear 
+  push_all
+
+  ld hl, state_cells
+  ld bc,  state_cells_end - state_cells
+  ld d, 0
+  call memset
+
+  pop_all
+  
+  push hl
+  pop bc ; bc = map ptr
+
+  ; de = loop counter
+  ld de, MAP_SIZE
+  ; bc = destination
+  ld hl, state_cells
+  inc hl ; bc = c_tile  
+
+@loop:
+  ld a, [bc]
+  inc bc ; bc++
+  ld [hl], a
+
+  push de
+  ld de, c_size
+  add hl, de ; next cell
+  pop de
+
+  ; de--
+  dec de
+
+  ; check if de is 0
+  ld a, d
+  or a, e
+  cp a, 0
+  jr nz, @loop REL
+
+  ret
+
+  ; draws all cells currently loaded to the screen
+  ; only call during blank!
+cells_draw_all:
+
+  ; de = loop counter
+  ld de, MAP_SIZE
+  ld bc, SCRN0 
+
+  ld hl, state_cells
+  inc hl ; hl = c_type 
+
+@loop:
+  ld a, [hl] ; load tile
+  ld [bc], a ; draw
+  inc bc ; bc++
+
+  push de
+  ld de, c_size
+  add hl, de ; next cell
+  pop de
+
+  dec de ; de--
+
+  ; check if de is 0
+  ld a, d
+  or a, e
+  cp a, 0
+  jr nz, @loop REL
+
+  ret
+
+
+
+#include "default_map.s"
index 34a959453fbe6100264bf5cea80e7956b537da19..af904b5808e725b4bd3955c8c535287c98abac51 100644 (file)
--- a/src/ui.s
+++ b/src/ui.s
@@ -7,9 +7,5 @@ ui_init:
   ; this should only be called 
   ; during blanking 
 ui_draw:
-  ; test draw to see tiles
-  ld a, 24
-  ld hl, SCRN0
-  ld [hl], a
 
   ret
index 491afc9fdcece6bf53dafd6bb19a827e9856a609..4dc5326d332e9f8b40a5834a84d1e386a22727c7 100644 (file)
@@ -39,6 +39,7 @@ demand_shop: .adv 1
 demand_factory: .adv 1
 population: .adv 3
 
-state_map: .adv c_size * MAP_SIZE
+state_cells: .adv c_size * MAP_SIZE
+state_cells_end:
 
 state_end:
index 1c5e086b2764bd97b8b4cf8044ccf7390c8b1415..aefcf9b62ffc5572608f61f3efb33b9d71355c29 100755 (executable)
@@ -27,11 +27,10 @@ def print_data(data, name, layer):
         val = int(byte)
         if val > 0:
             val -= 1
-        if layer == "bg":
-            og = val
-            val = 0x800 + ((val * 16) << 2)
-            val = (val & 0x0FF0) >> 4
-            val -= int(2 * og % 16)
+        if val > 127:
+            val = val - 128
+        else:
+            val = val + 0x80
         
         if (i+1) % 8 == 0:
             end = ''