From 5b7a312350531eb8a063b97bc251c1d5ea10d31b Mon Sep 17 00:00:00 2001 From: Lukas Krickl Date: Mon, 17 Mar 2025 16:33:44 +0100 Subject: [PATCH] map: Added base map loader --- makefile | 2 +- maps/base_room.s | 114 --------------------------------------------- maps/default_map.s | 100 +++++++++++++++++++++++++++++++++++++++ src/defs.s | 25 +++++++--- src/main.s | 3 ++ src/map.s | 90 ++++++++++++++++++++++++++++++++++- src/ui.s | 4 -- src/wram.s | 3 +- tools/tms2map.py | 9 ++-- 9 files changed, 217 insertions(+), 133 deletions(-) delete mode 100644 maps/base_room.s create mode 100644 maps/default_map.s diff --git a/makefile b/makefile index bfe2c46..7a74e16 100644 --- 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 index 2bb1628..0000000 --- a/maps/base_room.s +++ /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 index 0000000..f641440 --- /dev/null +++ b/maps/default_map.s @@ -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 diff --git a/src/defs.s b/src/defs.s index a845223..c66ce0c 100644 --- a/src/defs.s +++ b/src/defs.s @@ -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) @@ -32,21 +32,32 @@ ; 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 diff --git a/src/main.s b/src/main.s index 521400b..e4db461 100644 --- a/src/main.s +++ b/src/main.s @@ -22,6 +22,9 @@ entry: call lcd_off call video_init call audio_init + + call map_init + call lcd_on call vblank_wait diff --git a/src/map.s b/src/map.s index 74f6337..885ab54 100644 --- 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" diff --git a/src/ui.s b/src/ui.s index 34a9594..af904b5 100644 --- 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 diff --git a/src/wram.s b/src/wram.s index 491afc9..4dc5326 100644 --- a/src/wram.s +++ b/src/wram.s @@ -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: diff --git a/tools/tms2map.py b/tools/tms2map.py index 1c5e086..aefcf9b 100755 --- a/tools/tms2map.py +++ b/tools/tms2map.py @@ -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 = '' -- 2.30.2