From c3e93ebe76f7b1825aded3e2e56abf02e690fc55 Mon Sep 17 00:00:00 2001 From: DaniTheSkunk <> Date: Sun, 22 Jan 2023 18:02:48 +0000 Subject: [PATCH] refactored tilemap stuff and added clear function --- examples/gsa_simple.c | 4 ++-- include/gsa.h | 11 +---------- include/gsa_map.h | 20 ++++++++++++++++++++ meson.build | 1 + src/gsa.c | 1 - src/gsa_map.c | 9 +++++++++ 6 files changed, 33 insertions(+), 13 deletions(-) create mode 100644 include/gsa_map.h create mode 100644 src/gsa_map.c diff --git a/examples/gsa_simple.c b/examples/gsa_simple.c index 9fc635a..1aa2f27 100644 --- a/examples/gsa_simple.c +++ b/examples/gsa_simple.c @@ -1,4 +1,5 @@ #include "gamepad.h" +#include "gsa_map.h" #include "gsa_text.h" #include @@ -25,10 +26,9 @@ void init() { } maps[1].half_tile = true; - - /* maps[1].tiles[1][1] = gsa_get_char_tile(0x1010, 's'); */ font = 0x1010; gsa_write_text(1, 7, 3, "Game Skunk Advance!!! <3"); + gsa_map_clear(0); } void tick() { diff --git a/include/gsa.h b/include/gsa.h index d5b0e02..7ed05e4 100644 --- a/include/gsa.h +++ b/include/gsa.h @@ -22,30 +22,21 @@ #endif #include "gsa_input.h" +#include "gsa_map.h" #include "gsa_text.h" #include "skunkworks.h" #include "vec2i.h" #include "window.h" #define MAX_SPRITES 256 -#define TILEMAP_MAX_SIZE 1024 -#define MAX_TILEMAPS 4 struct gsa_sprite { u16 tile; i32 x, y; }; -struct gsa_map { - u16 tiles[TILEMAP_MAX_SIZE][TILEMAP_MAX_SIZE]; - i32 w, h; - i32 scrollx, scrolly; - bool half_tile; -}; - extern struct gsa_sprite sprites[MAX_SPRITES]; extern struct sw_image8 *_gfx; -extern struct gsa_map maps[MAX_TILEMAPS]; int gsa_main(int argc, char *argv[]); diff --git a/include/gsa_map.h b/include/gsa_map.h new file mode 100644 index 0000000..042a9ee --- /dev/null +++ b/include/gsa_map.h @@ -0,0 +1,20 @@ +#ifndef GUARD_15F247457902E371E05EB34544CB7598 +#define GUARD_15F247457902E371E05EB34544CB7598 + +#include "types.h" + +#define TILEMAP_MAX_SIZE 1024 +#define MAX_TILEMAPS 4 + +struct gsa_map { + u16 tiles[TILEMAP_MAX_SIZE][TILEMAP_MAX_SIZE]; + i32 w, h; + i32 scrollx, scrolly; + bool half_tile; +}; + +extern struct gsa_map maps[MAX_TILEMAPS]; + +void gsa_map_clear(u8 map); + +#endif /* GUARD_15F247457902E371E05EB34544CB7598 */ diff --git a/meson.build b/meson.build index 84d74fb..ddb6e23 100644 --- a/meson.build +++ b/meson.build @@ -47,6 +47,7 @@ skunk_sources = [ 'src/gamepad.c', 'src/gsa.c', 'src/gsa_input.c', + 'src/gsa_map.c', 'src/gsa_text.c', 'src/image32.c', 'src/image8.c', diff --git a/src/gsa.c b/src/gsa.c index 84d5ded..4c33a54 100644 --- a/src/gsa.c +++ b/src/gsa.c @@ -11,7 +11,6 @@ #include "gsa_input.h" struct gsa_sprite sprites[256]; -struct gsa_map maps[MAX_TILEMAPS]; struct sw_image8 *_gfx; struct sw_window *_win; diff --git a/src/gsa_map.c b/src/gsa_map.c new file mode 100644 index 0000000..9688b8e --- /dev/null +++ b/src/gsa_map.c @@ -0,0 +1,9 @@ +#include "gsa_map.h" + +#include "string.h" + +struct gsa_map maps[MAX_TILEMAPS]; + +void gsa_map_clear(u8 map) { + memset(maps[map].tiles, 0, sizeof(maps[map].tiles)); +}