diff --git a/Makefile b/Makefile index e4d1f60..73b96b5 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,9 @@ CFLAGS = -Isaturn OPT ?= -Og LIB = ./saturn -SRC = main.o input.o gen/maps.o +SRC = main.o input.o +SRC += gen/maps.o +SRC += gen/map_objects.o DEP = $(patsubst %.o,%.d,$(SRC)) res = $(subst pokered/,res/,$(patsubst %.$(1),%.$(1).o,$(wildcard $(2)*.$(1)))) diff --git a/main.cpp b/main.cpp index eb732e3..c6be5d0 100644 --- a/main.cpp +++ b/main.cpp @@ -12,6 +12,7 @@ #include "input.hpp" #include "gen/maps.hpp" +#include "map_objects.hpp" constexpr inline uint16_t rgb15(int32_t r, int32_t g, int32_t b) { @@ -111,12 +112,14 @@ void render() if (map.tileset != state.tileset) state.tileset = load_tileset(map.tileset); + const uint8_t border_block = map_objects[maps_ix[state.map_ix]].border_block; + for (uint32_t map_y = 0; map_y < 16; map_y++) { for (uint32_t map_x = 0; map_x < 16; map_x++) { const uint8_t block = (map_x < map.width && map_y < map.height) ? map.blocks.start[map.width * map_y + map_x] - : 0; + : border_block; render_block(state.base_pattern, tilesets[map.tileset], map_x, diff --git a/map_objects.hpp b/map_objects.hpp index d399f55..2217c3c 100644 --- a/map_objects.hpp +++ b/map_objects.hpp @@ -80,3 +80,5 @@ struct object_t { const bg_event_t * bg_events; const object_event_t * object_events; }; + +extern const object_t map_objects[]; diff --git a/tools/generate/map_objects.py b/tools/generate/map_objects.py index 227be50..5865e07 100644 --- a/tools/generate/map_objects.py +++ b/tools/generate/map_objects.py @@ -83,7 +83,7 @@ def includes_source(): yield "" def map_objects(): - map_headers = sorted_map_headers() + map_headers = list(sorted_map_headers()) for map_header in map_headers: map_name = map_header.name2.lower() map_objects = parse.map_objects_list[map_header.object()]