From 2c5bc3b5dd7cd0545e294e7503d5cf48e7fe55c9 Mon Sep 17 00:00:00 2001 From: Drew Date: Mon, 15 Sep 2025 21:36:20 -0500 Subject: [PATCH 1/5] Adding an x macro to cut down on some boilerplate. This should make adding additional jokers require a little less typing. Additional jokers will need an entry in /include/joker_table.h --- include/joker_table.h | 15 +++++++++++++++ source/joker.c | 37 +++++-------------------------------- 2 files changed, 20 insertions(+), 32 deletions(-) create mode 100644 include/joker_table.h diff --git a/include/joker_table.h b/include/joker_table.h new file mode 100644 index 0000000..480f7ed --- /dev/null +++ b/include/joker_table.h @@ -0,0 +1,15 @@ +DEF_JOKER_GFX(0) +DEF_JOKER_GFX(1) +DEF_JOKER_GFX(2) +DEF_JOKER_GFX(3) +DEF_JOKER_GFX(4) +DEF_JOKER_GFX(5) +DEF_JOKER_GFX(6) +DEF_JOKER_GFX(7) +DEF_JOKER_GFX(8) +DEF_JOKER_GFX(9) +DEF_JOKER_GFX(10) +DEF_JOKER_GFX(11) +DEF_JOKER_GFX(12) +DEF_JOKER_GFX(13) +DEF_JOKER_GFX(14) diff --git a/source/joker.c b/source/joker.c index d8665ea..a3f6f2c 100644 --- a/source/joker.c +++ b/source/joker.c @@ -116,39 +116,12 @@ void joker_init() joker_gfxTiles = (const unsigned int**)malloc((sizeof(unsigned int*) * num_spritesheets)); joker_gfxPal = (const unsigned short**)malloc((sizeof(unsigned int*) * num_spritesheets)); joker_spritesheet_pb_map = (int*)malloc(sizeof(int) * num_spritesheets); - - // TODO: Automate this with the preprocessor somehow? - joker_gfxTiles[0] = joker_gfx0Tiles; - joker_gfxTiles[1] = joker_gfx1Tiles; - joker_gfxTiles[2] = joker_gfx2Tiles; - joker_gfxTiles[3] = joker_gfx3Tiles; - joker_gfxTiles[4] = joker_gfx4Tiles; - joker_gfxTiles[5] = joker_gfx5Tiles; - joker_gfxTiles[6] = joker_gfx6Tiles; - joker_gfxTiles[7] = joker_gfx7Tiles; - joker_gfxTiles[8] = joker_gfx8Tiles; - joker_gfxTiles[9] = joker_gfx9Tiles; - joker_gfxTiles[10] = joker_gfx10Tiles; - joker_gfxTiles[11] = joker_gfx11Tiles; - joker_gfxTiles[12] = joker_gfx12Tiles; - joker_gfxTiles[13] = joker_gfx13Tiles; - joker_gfxTiles[14] = joker_gfx14Tiles; - joker_gfxPal[0] = joker_gfx0Pal; - joker_gfxPal[1] = joker_gfx1Pal; - joker_gfxPal[2] = joker_gfx2Pal; - joker_gfxPal[3] = joker_gfx3Pal; - joker_gfxPal[4] = joker_gfx4Pal; - joker_gfxPal[5] = joker_gfx5Pal; - joker_gfxPal[6] = joker_gfx6Pal; - joker_gfxPal[7] = joker_gfx7Pal; - joker_gfxPal[8] = joker_gfx8Pal; - joker_gfxPal[9] = joker_gfx9Pal; - joker_gfxPal[10] = joker_gfx10Pal; - joker_gfxPal[11] = joker_gfx11Pal; - joker_gfxPal[12] = joker_gfx12Pal; - joker_gfxPal[13] = joker_gfx13Pal; - joker_gfxPal[14] = joker_gfx14Pal; +#define DEF_JOKER_GFX(idx) \ + joker_gfxTiles[idx] = joker_gfx##idx##Tiles; \ + joker_gfxPal[idx] = joker_gfx##idx##Pal; +#include "../include/joker_table.h" +#undef DEF_JOKER_GFX for (int i = 0; i < num_spritesheets; i++) { From 3dc959c17d0c4a5bb4506e54f9e024dee9472ad4 Mon Sep 17 00:00:00 2001 From: Drew Date: Wed, 17 Sep 2025 14:35:00 -0500 Subject: [PATCH 2/5] Converting joker_gfxTiles and joker_gfxPal to pools --- source/joker.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/source/joker.c b/source/joker.c index a3f6f2c..9790f39 100644 --- a/source/joker.c +++ b/source/joker.c @@ -13,9 +13,10 @@ #define JOKER_SCORE_TEXT_Y 48 #define NUM_JOKERS_PER_SPRITESHEET 2 +#define MAX_JOKERS 15 -const unsigned int **joker_gfxTiles; -const unsigned short **joker_gfxPal; +const unsigned int *joker_gfxTiles[MAX_JOKERS]; +const unsigned short *joker_gfxPal[MAX_JOKERS]; const static u8 edition_price_lut[MAX_EDITIONS] = { @@ -113,8 +114,6 @@ void joker_init() { // This should init once only so no need to free int num_spritesheets = get_num_spritesheets(); - joker_gfxTiles = (const unsigned int**)malloc((sizeof(unsigned int*) * num_spritesheets)); - joker_gfxPal = (const unsigned short**)malloc((sizeof(unsigned int*) * num_spritesheets)); joker_spritesheet_pb_map = (int*)malloc(sizeof(int) * num_spritesheets); #define DEF_JOKER_GFX(idx) \ From c4e804234b2e670cb753fefd48d4900eded196b5 Mon Sep 17 00:00:00 2001 From: Drew Date: Wed, 17 Sep 2025 15:01:26 -0500 Subject: [PATCH 3/5] Moving macro into pool definition --- source/joker.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/source/joker.c b/source/joker.c index 9790f39..23ff7ca 100644 --- a/source/joker.c +++ b/source/joker.c @@ -15,8 +15,18 @@ #define NUM_JOKERS_PER_SPRITESHEET 2 #define MAX_JOKERS 15 -const unsigned int *joker_gfxTiles[MAX_JOKERS]; -const unsigned short *joker_gfxPal[MAX_JOKERS]; +const unsigned int *joker_gfxTiles[MAX_JOKERS] = +{ +#define DEF_JOKER_GFX(idx) joker_gfx##idx##Tiles, +#include "../include/joker_table.h" +#undef DEF_JOKER_GFX +}; +const unsigned short *joker_gfxPal[MAX_JOKERS] = +{ +#define DEF_JOKER_GFX(idx) joker_gfx##idx##Pal, +#include "../include/joker_table.h" +#undef DEF_JOKER_GFX +}; const static u8 edition_price_lut[MAX_EDITIONS] = { @@ -116,12 +126,6 @@ void joker_init() int num_spritesheets = get_num_spritesheets(); joker_spritesheet_pb_map = (int*)malloc(sizeof(int) * num_spritesheets); -#define DEF_JOKER_GFX(idx) \ - joker_gfxTiles[idx] = joker_gfx##idx##Tiles; \ - joker_gfxPal[idx] = joker_gfx##idx##Pal; -#include "../include/joker_table.h" -#undef DEF_JOKER_GFX - for (int i = 0; i < num_spritesheets; i++) { joker_spritesheet_pb_map[i] = UNDEFINED; From 7c377fca946759d09a3fb334a03dedb74f0bb05f Mon Sep 17 00:00:00 2001 From: Drew Date: Wed, 17 Sep 2025 15:35:21 -0500 Subject: [PATCH 4/5] Making joker_gfxTiles and joker_gfxPal static --- source/joker.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/joker.c b/source/joker.c index 23ff7ca..2cdb8b8 100644 --- a/source/joker.c +++ b/source/joker.c @@ -15,13 +15,13 @@ #define NUM_JOKERS_PER_SPRITESHEET 2 #define MAX_JOKERS 15 -const unsigned int *joker_gfxTiles[MAX_JOKERS] = +static const unsigned int *joker_gfxTiles[MAX_JOKERS] = { #define DEF_JOKER_GFX(idx) joker_gfx##idx##Tiles, #include "../include/joker_table.h" #undef DEF_JOKER_GFX }; -const unsigned short *joker_gfxPal[MAX_JOKERS] = +static const unsigned short *joker_gfxPal[MAX_JOKERS] = { #define DEF_JOKER_GFX(idx) joker_gfx##idx##Pal, #include "../include/joker_table.h" From e6206979177623c61c3fc73dca4beff863a57f85 Mon Sep 17 00:00:00 2001 From: Drew Date: Mon, 22 Sep 2025 16:06:45 -0500 Subject: [PATCH 5/5] Renamed joker_table.h to def_joker_gfx_table.h. Removed an unnecessary constant --- include/{joker_table.h => def_joker_gfx_table.h} | 0 source/joker.c | 9 ++++----- 2 files changed, 4 insertions(+), 5 deletions(-) rename include/{joker_table.h => def_joker_gfx_table.h} (100%) diff --git a/include/joker_table.h b/include/def_joker_gfx_table.h similarity index 100% rename from include/joker_table.h rename to include/def_joker_gfx_table.h diff --git a/source/joker.c b/source/joker.c index 2cdb8b8..4d8fc15 100644 --- a/source/joker.c +++ b/source/joker.c @@ -13,18 +13,17 @@ #define JOKER_SCORE_TEXT_Y 48 #define NUM_JOKERS_PER_SPRITESHEET 2 -#define MAX_JOKERS 15 -static const unsigned int *joker_gfxTiles[MAX_JOKERS] = +static const unsigned int *joker_gfxTiles[] = { #define DEF_JOKER_GFX(idx) joker_gfx##idx##Tiles, -#include "../include/joker_table.h" +#include "../include/def_joker_gfx_table.h" #undef DEF_JOKER_GFX }; -static const unsigned short *joker_gfxPal[MAX_JOKERS] = +static const unsigned short *joker_gfxPal[] = { #define DEF_JOKER_GFX(idx) joker_gfx##idx##Pal, -#include "../include/joker_table.h" +#include "../include/def_joker_gfx_table.h" #undef DEF_JOKER_GFX };