diff options
author | red031000 <rubenru09@aol.com> | 2020-07-12 18:36:54 +0100 |
---|---|---|
committer | red031000 <rubenru09@aol.com> | 2020-07-12 18:36:54 +0100 |
commit | a604bc3b573e2f23bb0eb40e0fc8946b857d6c98 (patch) | |
tree | d96c88f0831353b695ee21e492896d5f618ca819 | |
parent | 5f114f5c8413da73f21c9adbfd0165921314e275 (diff) |
fix palette issues, demo/title/titledemo narc fully converted
23 files changed, 423 insertions, 20 deletions
@@ -255,6 +255,9 @@ $(CLOBBER_SIZE_VERSION101_NCGR_FILES): %.NCGR: %.png $(VERSION101_SOPC_8BPP_NCGR_FILES): %.NCGR: %.png $(GFX) $< $@ -version101 -sopc -bitdepth 8 +$(VERSION101_SOPC_NCGR_FILES): %.NCGR: %.png + $(GFX) $< $@ -version101 -sopc + %.NCLR: %.png $(GFX) $< $@ @@ -264,6 +267,9 @@ $(VERSION101_SOPC_8BPP_NCGR_FILES): %.NCGR: %.png $(IR_NCLR_FILES): %.NCLR: %.pal $(GFX) $< $@ -ir +$(4BPP_NCLR_FILES): %.NCLR: %.pal + $(GFX) $< $@ -bitdepth 4 + %.png: ; %.pal: ; diff --git a/files/demo/title/titledemo/.gitignore b/files/demo/title/titledemo/.gitignore index b49b5cb3..e16f0811 100644 --- a/files/demo/title/titledemo/.gitignore +++ b/files/demo/title/titledemo/.gitignore @@ -1,4 +1,2 @@ -narc_0001.NCGR -narc_0001.NCLR -narc_0003.NCGR -narc_0003.NCLR +*.NCLR +*.NCGR diff --git a/files/demo/title/titledemo/narc_0007.NCGR b/files/demo/title/titledemo/narc_0007.NCGR Binary files differdeleted file mode 100644 index 999daf42..00000000 --- a/files/demo/title/titledemo/narc_0007.NCGR +++ /dev/null diff --git a/files/demo/title/titledemo/narc_0007.png b/files/demo/title/titledemo/narc_0007.png Binary files differnew file mode 100644 index 00000000..b0cc4b6e --- /dev/null +++ b/files/demo/title/titledemo/narc_0007.png diff --git a/files/demo/title/titledemo/narc_0009.NCLR b/files/demo/title/titledemo/narc_0009.NCLR Binary files differdeleted file mode 100644 index d7ac121e..00000000 --- a/files/demo/title/titledemo/narc_0009.NCLR +++ /dev/null diff --git a/files/demo/title/titledemo/narc_0009.pal b/files/demo/title/titledemo/narc_0009.pal new file mode 100644 index 00000000..e69e3f47 --- /dev/null +++ b/files/demo/title/titledemo/narc_0009.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 255 255 +238 238 246 +222 222 230 +205 205 222 +180 189 205 +164 172 197 +148 156 180 +131 131 172 +106 115 156 +90 98 148 +74 82 131 +57 65 123 +32 49 106 +16 32 98 +0 8 82 diff --git a/files/demo/title/titledemo/narc_0010.NCLR b/files/demo/title/titledemo/narc_0010.NCLR Binary files differdeleted file mode 100644 index 1dc5e984..00000000 --- a/files/demo/title/titledemo/narc_0010.NCLR +++ /dev/null diff --git a/files/demo/title/titledemo/narc_0010.pal b/files/demo/title/titledemo/narc_0010.pal new file mode 100644 index 00000000..4a9c3339 --- /dev/null +++ b/files/demo/title/titledemo/narc_0010.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 255 255 +246 238 246 +230 222 230 +213 205 213 +197 189 205 +180 172 189 +164 156 172 +148 139 164 +131 115 148 +115 98 131 +98 82 123 +82 65 106 +74 49 90 +57 32 82 +41 16 65 diff --git a/files/demo/title/titledemo/narc_0011.NCGR b/files/demo/title/titledemo/narc_0011.NCGR Binary files differdeleted file mode 100644 index 999daf42..00000000 --- a/files/demo/title/titledemo/narc_0011.NCGR +++ /dev/null diff --git a/files/demo/title/titledemo/narc_0011.png b/files/demo/title/titledemo/narc_0011.png Binary files differnew file mode 100644 index 00000000..4a0a9211 --- /dev/null +++ b/files/demo/title/titledemo/narc_0011.png diff --git a/files/demo/title/titledemo/narc_0013.NCLR b/files/demo/title/titledemo/narc_0013.NCLR Binary files differdeleted file mode 100644 index 0dd59fd4..00000000 --- a/files/demo/title/titledemo/narc_0013.NCLR +++ /dev/null diff --git a/files/demo/title/titledemo/narc_0013.pal b/files/demo/title/titledemo/narc_0013.pal new file mode 100644 index 00000000..74fff8e5 --- /dev/null +++ b/files/demo/title/titledemo/narc_0013.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +0 0 0 +0 0 0 +0 0 8 +0 0 16 +0 0 24 +0 0 24 +0 0 32 +0 0 41 +0 8 49 +0 8 49 +0 8 57 +0 8 65 +0 8 74 +0 8 74 +0 8 82 diff --git a/files/demo/title/titledemo/narc_0014.NCLR b/files/demo/title/titledemo/narc_0014.NCLR Binary files differdeleted file mode 100644 index 4187c5bf..00000000 --- a/files/demo/title/titledemo/narc_0014.NCLR +++ /dev/null diff --git a/files/demo/title/titledemo/narc_0014.pal b/files/demo/title/titledemo/narc_0014.pal new file mode 100644 index 00000000..f64b3cef --- /dev/null +++ b/files/demo/title/titledemo/narc_0014.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +0 0 0 +0 0 0 +0 0 8 +8 0 8 +8 0 16 +8 0 16 +16 0 24 +16 8 32 +16 8 32 +24 8 41 +24 8 41 +32 8 49 +32 8 57 +32 8 57 +41 16 65 diff --git a/files/demo/title/titledemo/narc_0015.NCGR b/files/demo/title/titledemo/narc_0015.NCGR Binary files differdeleted file mode 100644 index 10e00b0e..00000000 --- a/files/demo/title/titledemo/narc_0015.NCGR +++ /dev/null diff --git a/files/demo/title/titledemo/narc_0015.png b/files/demo/title/titledemo/narc_0015.png Binary files differnew file mode 100644 index 00000000..9584e219 --- /dev/null +++ b/files/demo/title/titledemo/narc_0015.png diff --git a/files/demo/title/titledemo/narc_0016.NCLR b/files/demo/title/titledemo/narc_0016.NCLR Binary files differdeleted file mode 100644 index 697a342a..00000000 --- a/files/demo/title/titledemo/narc_0016.NCLR +++ /dev/null diff --git a/files/demo/title/titledemo/narc_0016.pal b/files/demo/title/titledemo/narc_0016.pal new file mode 100644 index 00000000..13181a80 --- /dev/null +++ b/files/demo/title/titledemo/narc_0016.pal @@ -0,0 +1,259 @@ +JASC-PAL +0100 +256 +0 0 0 +0 0 0 +16 16 16 +32 32 32 +49 49 49 +74 74 74 +90 90 90 +106 106 106 +123 123 123 +148 148 148 +164 164 164 +180 180 180 +205 205 205 +222 222 222 +238 238 238 +255 255 255 +0 0 0 +0 0 0 +16 16 16 +32 32 32 +49 49 49 +74 74 74 +90 90 90 +106 106 106 +123 123 123 +148 148 148 +164 164 164 +180 180 180 +205 205 205 +222 222 222 +238 238 238 +255 255 255 +0 0 0 +222 16 16 +222 115 115 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +0 0 0 diff --git a/filesystem.mk b/filesystem.mk index 1be7b682..a203a0db 100644 --- a/filesystem.mk +++ b/filesystem.mk @@ -2223,7 +2223,15 @@ files/demo/title/titledemo.narc: \ files/demo/title/titledemo/narc_0001.NCGR \ files/demo/title/titledemo/narc_0001.NCLR \ files/demo/title/titledemo/narc_0003.NCGR \ - files/demo/title/titledemo/narc_0003.NCLR + files/demo/title/titledemo/narc_0003.NCLR \ + files/demo/title/titledemo/narc_0007.NCGR \ + files/demo/title/titledemo/narc_0009.NCLR \ + files/demo/title/titledemo/narc_0010.NCLR \ + files/demo/title/titledemo/narc_0011.NCGR \ + files/demo/title/titledemo/narc_0013.NCLR \ + files/demo/title/titledemo/narc_0014.NCLR \ + files/demo/title/titledemo/narc_0015.NCGR \ + files/demo/title/titledemo/narc_0016.NCLR .PHONY: filesystem diff --git a/graphics_rules.mk b/graphics_rules.mk index fba3be06..64762f03 100644 --- a/graphics_rules.mk +++ b/graphics_rules.mk @@ -1,6 +1,5 @@ #todo data/dp_areawindow.NCGR (weirdness with size) #todo data/graphic/bag_gra/narc_0007.NCGR (SOPC section) (width 32, palette narc_0003.NCLR) -#todo data/demo/title/titledemo/narc_0007.NCGR (weidness with size, needs investigating) CLOBBER_SIZE_NCGR_FILES := files/data/cell0.NCGR @@ -51,6 +50,8 @@ CLOBBER_SIZE_VERSION101_NCGR_FILES := files/graphic/bag_gra/narc_0002.NCGR \ files/itemtool/itemdata/item_icon/narc_0109.NCGR \ files/itemtool/itemdata/item_icon/narc_0112.NCGR +4BPP_NCLR_FILES := files/demo/title/titledemo/narc_0016.NCLR + IR_NCLR_FILES := files/itemtool/itemdata/item_icon/narc_0028.NCLR \ files/itemtool/itemdata/item_icon/narc_0029.NCLR \ files/itemtool/itemdata/item_icon/narc_0032.NCLR \ @@ -85,9 +86,16 @@ IR_NCLR_FILES := files/itemtool/itemdata/item_icon/narc_0028.NCLR \ VERSION101_SOPC_8BPP_NCGR_FILES := files/demo/title/titledemo/narc_0001.NCGR \ files/demo/title/titledemo/narc_0003.NCGR +VERSION101_SOPC_NCGR_FILES := files/demo/title/titledemo/narc_0007.NCGR \ + files/demo/title/titledemo/narc_0011.NCGR \ + files/demo/title/titledemo/narc_0015.NCGR + NCGR_CLEAN_LIST := files/data/cell0.NCGR \ files/demo/title/titledemo/narc_0001.NCGR \ files/demo/title/titledemo/narc_0003.NCGR \ + files/demo/title/titledemo/narc_0007.NCGR \ + files/demo/title/titledemo/narc_0011.NCGR \ + files/demo/title/titledemo/narc_0015.NCGR \ files/graphic/bag_gra/narc_0002.NCGR \ files/graphic/bag_gra/narc_0006.NCGR \ files/graphic/bag_gra/narc_0034.NCGR \ @@ -139,6 +147,11 @@ NCGR_CLEAN_LIST := files/data/cell0.NCGR \ NCLR_CLEAN_LIST := files/data/cell0.NCLR \ files/demo/title/titledemo/narc_0001.NCLR \ files/demo/title/titledemo/narc_0003.NCLR \ + files/demo/title/titledemo/narc_0009.NCLR \ + files/demo/title/titledemo/narc_0010.NCLR \ + files/demo/title/titledemo/narc_0013.NCLR \ + files/demo/title/titledemo/narc_0014.NCLR \ + files/demo/title/titledemo/narc_0016.NCLR \ files/graphic/bag_gra/narc_0003.NCLR \ files/graphic/bag_gra/narc_0034.NCLR \ files/itemtool/itemdata/item_icon/narc_0002.NCLR \ diff --git a/tools/nitrogfx/gfx.c b/tools/nitrogfx/gfx.c index 4e529490..8f943698 100644 --- a/tools/nitrogfx/gfx.c +++ b/tools/nitrogfx/gfx.c @@ -453,10 +453,10 @@ void WriteNtrImage(char *path, int numTiles, int bitDepth, int metatileWidth, in sopcBuffer[12] = tilesWidth & 0xFF; sopcBuffer[13] = (tilesWidth >> 8) & 0xFF; - sopcBuffer[14] = tilesHeight & 0xFF; - sopcBuffer[15] = (tilesHeight >> 8) & 0xFF; + sopcBuffer[14] = tilesHeight & 0xFF; + sopcBuffer[15] = (tilesHeight >> 8) & 0xFF; - fwrite(sopcBuffer, 1, 0x10, fp); + fwrite(sopcBuffer, 1, 0x10, fp); } free(pixelBuffer); @@ -489,7 +489,7 @@ void ReadGbaPalette(char *path, struct Palette *palette) free(data); } -void ReadNtrPalette(char *path, struct Palette *palette) +void ReadNtrPalette(char *path, struct Palette *palette, int bitdepth) { int fileSize; unsigned char *data = ReadWholeFile(path, &fileSize); @@ -511,7 +511,9 @@ void ReadNtrPalette(char *path, struct Palette *palette) palette->bitDepth = paletteHeader[0x8] == 3 ? 4 : 8; - palette->numColors = palette->bitDepth == 4 ? 16 : 256; //remove header and divide by 2 + bitdepth = bitdepth ? bitdepth : palette->bitDepth; + + palette->numColors = bitdepth == 4 ? 16 : 256; //remove header and divide by 2 unsigned char *paletteData = paletteHeader + 0x18; @@ -547,7 +549,7 @@ void WriteGbaPalette(char *path, struct Palette *palette) fclose(fp); } -void WriteNtrPalette(char *path, struct Palette *palette, bool ncpr, bool ir) +void WriteNtrPalette(char *path, struct Palette *palette, bool ncpr, bool ir, int bitdepth) { FILE *fp = fopen(path, "wb"); @@ -574,8 +576,11 @@ void WriteNtrPalette(char *path, struct Palette *palette, bool ncpr, bool ir) if (!palette->bitDepth) palette->bitDepth = 4; + + bitdepth = bitdepth ? bitdepth : palette->bitDepth; + //bit depth - palHeader[8] = palette->bitDepth == 4 ? 0x03: 0x04; + palHeader[8] = bitdepth == 4 ? 0x03: 0x04; //size palHeader[16] = size & 0xFF; diff --git a/tools/nitrogfx/gfx.h b/tools/nitrogfx/gfx.h index 54e6fb16..e5189100 100644 --- a/tools/nitrogfx/gfx.h +++ b/tools/nitrogfx/gfx.h @@ -34,8 +34,8 @@ void WriteImage(char *path, int numTiles, int bitDepth, int metatileWidth, int m void WriteNtrImage(char *path, int numTiles, int bitDepth, int metatileWidth, int metatileHeight, struct Image *image, bool invertColors, bool clobberSize, bool byteOrder, bool version101, bool sopc); void FreeImage(struct Image *image); void ReadGbaPalette(char *path, struct Palette *palette); -void ReadNtrPalette(char *path, struct Palette *palette); +void ReadNtrPalette(char *path, struct Palette *palette, int bitdepth); void WriteGbaPalette(char *path, struct Palette *palette); -void WriteNtrPalette(char *path, struct Palette *palette, bool ncpr, bool ir); +void WriteNtrPalette(char *path, struct Palette *palette, bool ncpr, bool ir, int bitdepth); #endif // GFX_H diff --git a/tools/nitrogfx/main.c b/tools/nitrogfx/main.c index 0aaad201..188bdf0a 100644 --- a/tools/nitrogfx/main.c +++ b/tools/nitrogfx/main.c @@ -50,7 +50,7 @@ void ConvertNtrToPng(char *inputPath, char *outputPath, struct GbaToPngOptions * if (options->paletteFilePath != NULL) { - ReadNtrPalette(options->paletteFilePath, &image.palette); + ReadNtrPalette(options->paletteFilePath, &image.palette, options->bitDepth); image.hasPalette = true; } else @@ -437,7 +437,7 @@ void HandlePngToNtrPaletteCommand(char *inputPath, char *outputPath, int argc, c } ReadPngPalette(inputPath, &palette); - WriteNtrPalette(outputPath, &palette, ncpr, ir); + WriteNtrPalette(outputPath, &palette, ncpr, ir, palette.bitDepth); } void HandleGbaToJascPaletteCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) @@ -448,11 +448,35 @@ void HandleGbaToJascPaletteCommand(char *inputPath, char *outputPath, int argc U WriteJascPalette(outputPath, &palette); } -void HandleNtrToJascPaletteCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) +void HandleNtrToJascPaletteCommand(char *inputPath, char *outputPath, int argc, char **argv) { struct Palette palette; + int bitdepth = 0; - ReadNtrPalette(inputPath, &palette); + for (int i = 3; i < argc; i++) + { + char *option = argv[i]; + + if (strcmp(option, "-bitdepth") == 0) + { + if (i + 1 >= argc) + FATAL_ERROR("No bitdepth following \"-bitdepth\".\n"); + + i++; + + if (!ParseNumber(argv[i], NULL, 10, &bitdepth)) + FATAL_ERROR("Failed to parse bitdepth.\n"); + + if (bitdepth != 4 && bitdepth != 8) + FATAL_ERROR("Bitdepth must be 4 or 8.\n"); + } + else + { + FATAL_ERROR("Unrecognized option \"%s\".\n", option); + } + } + + ReadNtrPalette(inputPath, &palette, bitdepth); WriteJascPalette(outputPath, &palette); } @@ -498,6 +522,7 @@ void HandleJascToNtrPaletteCommand(char *inputPath, char *outputPath, int argc, int numColors = 0; bool ncpr = false; bool ir = false; + int bitdepth = 0; for (int i = 3; i < argc; i++) { @@ -516,6 +541,19 @@ void HandleJascToNtrPaletteCommand(char *inputPath, char *outputPath, int argc, if (numColors < 1) FATAL_ERROR("Number of colors must be positive.\n"); } + if (strcmp(option, "-bitdepth") == 0) + { + if (i + 1 >= argc) + FATAL_ERROR("No bitdepth following \"-bitdepth\".\n"); + + i++; + + if (!ParseNumber(argv[i], NULL, 10, &bitdepth)) + FATAL_ERROR("Failed to parse bitdepth.\n"); + + if (bitdepth != 4 && bitdepth != 8) + FATAL_ERROR("Bitdepth must be 4 or 8.\n"); + } else if (strcmp(option, "-ncpr") == 0) { ncpr = true; @@ -537,7 +575,7 @@ void HandleJascToNtrPaletteCommand(char *inputPath, char *outputPath, int argc, if (numColors != 0) palette.numColors = numColors; - WriteNtrPalette(outputPath, &palette, ncpr, ir); + WriteNtrPalette(outputPath, &palette, ncpr, ir, bitdepth); } void HandleLatinFontToPngCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) |