gbdk-2020 | GameBoy Development Kit |
| download: https://git.y1.nz/archives/gbdk.tar.gz | |
| README | Files | Log | Refs | LICENSE |
commit f5773c91fb82c9f7e1f4d77a1be7ce1e3ba557c6 parent 2d0a54c421f9cc187e81c51669c433db0ce7c237 Author: bbbbbr <bbbbbr@users.noreply.github.com> Date: Sun, 5 May 2024 15:40:53 -0700 Merge pull request #655 from bbbbbr/tools/png2asset_use_structs_source_tileset png2asset: fix use structs + source tileset + extra-tiles were found condition Diffstat:
| M | gbdk-support/png2asset/export_c_file.cpp | 48 | +++++++++++++++++++++++++----------------------- |
| M | gbdk-support/png2asset/testing/ref/zgb_nums_map_2.c | 9 | +++++++-- |
| M | gbdk-support/png2asset/testing/ref/zgb_nums_map_4.c | 9 | +++++++-- |
| M | gbdk-support/png2asset/testing/ref/zgb_nums_map_6.c | 9 | +++++++-- |
| M | gbdk-support/png2asset/testing/ref/zgb_nums_map_8.c | 9 | +++++++-- |
5 files changed, 53 insertions(+), 31 deletions(-)
diff --git a/gbdk-support/png2asset/export_c_file.cpp b/gbdk-support/png2asset/export_c_file.cpp @@ -219,23 +219,23 @@ static void export_c_zgb_metasprite_struct(PNG2AssetData* assetData, FILE* file) static void export_c_map_mode(PNG2AssetData* assetData, FILE* file) { - if(assetData->args->includeTileData) { - - // ZGB export mode - if(assetData->args->use_structs) - { - export_c_zgb_palette_data(assetData, file); - export_c_zgb_tiles_struct(assetData, file, ZGB_TILES_MODE_NORMAL); - } - } else { - // For ZGB Structs with source_tileset enabled, the tile data points to the EXTERNAL source tileset + // ZGB export mode + if(assetData->args->use_structs) + { + // For ZGB Structs with source_tileset enabled, the primary tile data points to the EXTERNAL source tileset // so add the required externs used to reference them in the struct - if((assetData->args->use_structs) && (assetData->args->source_tilesets.size())) { + if( (assetData->args->has_source_tilesets)) { fprintf(file, "\n"); fprintf(file, "#include \"TilesInfo.h\"\n"); fprintf(file, "extern const void __bank_%s;\n", extract_name(assetData->args->source_tilesets[0]).c_str()); fprintf(file, "extern const struct TilesInfo %s;\n", extract_name(assetData->args->source_tilesets[0]).c_str()); } + + // Map's own tile data, if any present + if(assetData->args->includeTileData) { + export_c_zgb_palette_data(assetData, file); + export_c_zgb_tiles_struct(assetData, file, ZGB_TILES_MODE_NORMAL); + } } //Export map @@ -369,6 +369,7 @@ static void export_c_zgb_map_struct(PNG2AssetData* assetData, FILE* file) { //Export Map Info fprintf(file, "\n"); fprintf(file, "#include \"MapInfo.h\"\n"); + if(assetData->args->includeTileData) { fprintf(file, "BANKREF_EXTERN(%s_tiles_info)\n", assetData->args->data_name.c_str()); } @@ -383,20 +384,21 @@ static void export_c_zgb_map_struct(PNG2AssetData* assetData, FILE* file) { else fprintf(file, "\t.attributes=0," " // map attributes\n"); - if(assetData->args->includeTileData) { + // For ZGB Structs with source_tileset enabled, the tile data points to the EXTERNAL source tileset + if (assetData->args->has_source_tilesets == true) { + fprintf(file, "\t.tiles_bank=BANK(%s)," " // source tiles bank\n", extract_name(assetData->args->source_tilesets[0]).c_str()); + fprintf(file, "\t.tiles=&%s," " // source tiles info\n", extract_name(assetData->args->source_tilesets[0]).c_str()); + + // If map tiles were found that were not in the source tileset (or entity tileset) + // then point ".extra_tiles" to them. Otherwise set it to null to indicate none found. + if (exportOpt.tiles_count > 0) + fprintf(file, "\t.extra_tiles=&%s_tiles_info," " // map tiles info (for map tiles not found in the source tileset) \n", assetData->args->data_name.c_str()); + else + fprintf(file, "\t.extra_tiles=0," " // map tiles info (no map tiles were found that were not in the source tileset)\n"); + } + else if(assetData->args->includeTileData) { fprintf(file, "\t.tiles_bank=BANK(%s_tiles_info), // tiles bank\n", assetData->args->data_name.c_str()); fprintf(file, "\t.tiles=&%s_tiles_info," " // tiles info\n", assetData->args->data_name.c_str()); - } else { - // For ZGB Structs with source_tileset enabled, the tile data points to the EXTERNAL source tileset - if (assetData->args->source_tilesets.size()) { - fprintf(file, "\t.tiles_bank=BANK(%s)," " // source tiles bank\n", extract_name(assetData->args->source_tilesets[0]).c_str()); - fprintf(file, "\t.tiles=&%s," " // source tiles info\n", extract_name(assetData->args->source_tilesets[0]).c_str()); - - if (exportOpt.color_count > 0) - fprintf(file, "\t.extra_tiles=&%s_tiles_info," " // map tiles info (for map tiles not found in the source tileset) \n", assetData->args->data_name.c_str()); - else - fprintf(file, "\t.extra_tiles=0," " // map tiles info (no map tiles were found that were not in the source tileset)\n"); - } } fprintf(file, "};\n"); } diff --git a/gbdk-support/png2asset/testing/ref/zgb_nums_map_2.c b/gbdk-support/png2asset/testing/ref/zgb_nums_map_2.c @@ -134,6 +134,10 @@ const uint8_t zgb_nums_map_2_tiles[480] = { }; +#include "TilesInfo.h" +extern const void __bank_nums8x8_9_to_0.png; +extern const struct TilesInfo nums8x8_9_to_0.png; + const uint8_t zgb_nums_map_2_tile_pals[30] = { , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; @@ -163,6 +167,7 @@ const struct MapInfo zgb_nums_map_2 = { .width=10, // width .height=5, // height .attributes=0, // map attributes - .tiles_bank=BANK(zgb_nums_map_2_tiles_info), // tiles bank - .tiles=&zgb_nums_map_2_tiles_info, // tiles info + .tiles_bank=BANK(nums8x8_9_to_0.png), // source tiles bank + .tiles=&nums8x8_9_to_0.png, // source tiles info + .extra_tiles=&zgb_nums_map_2_tiles_info, // map tiles info (for map tiles not found in the source tileset) }; diff --git a/gbdk-support/png2asset/testing/ref/zgb_nums_map_4.c b/gbdk-support/png2asset/testing/ref/zgb_nums_map_4.c @@ -94,6 +94,10 @@ const uint8_t zgb_nums_map_4_tiles[320] = { }; +#include "TilesInfo.h" +extern const void __bank_nums8x8_9_to_0.png; +extern const struct TilesInfo nums8x8_9_to_0.png; + const uint8_t zgb_nums_map_4_tile_pals[20] = { , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; @@ -123,6 +127,7 @@ const struct MapInfo zgb_nums_map_4 = { .width=10, // width .height=5, // height .attributes=0, // map attributes - .tiles_bank=BANK(zgb_nums_map_4_tiles_info), // tiles bank - .tiles=&zgb_nums_map_4_tiles_info, // tiles info + .tiles_bank=BANK(nums8x8_9_to_0.png), // source tiles bank + .tiles=&nums8x8_9_to_0.png, // source tiles info + .extra_tiles=&zgb_nums_map_4_tiles_info, // map tiles info (for map tiles not found in the source tileset) }; diff --git a/gbdk-support/png2asset/testing/ref/zgb_nums_map_6.c b/gbdk-support/png2asset/testing/ref/zgb_nums_map_6.c @@ -134,6 +134,10 @@ const uint8_t zgb_nums_map_6_tiles[480] = { }; +#include "TilesInfo.h" +extern const void __bank_nums8x8_9_to_0.png; +extern const struct TilesInfo nums8x8_9_to_0.png; + const uint8_t zgb_nums_map_6_tile_pals[30] = { , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; @@ -163,6 +167,7 @@ const struct MapInfo zgb_nums_map_6 = { .width=10, // width .height=5, // height .attributes=0, // map attributes - .tiles_bank=BANK(zgb_nums_map_6_tiles_info), // tiles bank - .tiles=&zgb_nums_map_6_tiles_info, // tiles info + .tiles_bank=BANK(nums8x8_9_to_0.png), // source tiles bank + .tiles=&nums8x8_9_to_0.png, // source tiles info + .extra_tiles=&zgb_nums_map_6_tiles_info, // map tiles info (for map tiles not found in the source tileset) }; diff --git a/gbdk-support/png2asset/testing/ref/zgb_nums_map_8.c b/gbdk-support/png2asset/testing/ref/zgb_nums_map_8.c @@ -94,6 +94,10 @@ const uint8_t zgb_nums_map_8_tiles[320] = { }; +#include "TilesInfo.h" +extern const void __bank_nums8x8_9_to_0.png; +extern const struct TilesInfo nums8x8_9_to_0.png; + const uint8_t zgb_nums_map_8_tile_pals[20] = { , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; @@ -123,6 +127,7 @@ const struct MapInfo zgb_nums_map_8 = { .width=10, // width .height=5, // height .attributes=0, // map attributes - .tiles_bank=BANK(zgb_nums_map_8_tiles_info), // tiles bank - .tiles=&zgb_nums_map_8_tiles_info, // tiles info + .tiles_bank=BANK(nums8x8_9_to_0.png), // source tiles bank + .tiles=&nums8x8_9_to_0.png, // source tiles info + .extra_tiles=&zgb_nums_map_8_tiles_info, // map tiles info (for map tiles not found in the source tileset) };
This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.