fix palette issues, demo/title/titledemo narc fully converted

This commit is contained in:
red031000
2020-07-12 18:36:54 +01:00
parent 5f114f5c84
commit a604bc3b57
23 changed files with 423 additions and 20 deletions

View File

@@ -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: ;

View File

@@ -1,4 +1,2 @@
narc_0001.NCGR
narc_0001.NCLR
narc_0003.NCGR
narc_0003.NCLR
*.NCLR
*.NCGR

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 B

View File

@@ -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

View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 B

View File

@@ -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

View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 B

View File

@@ -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

View File

@@ -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

View File

@@ -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 \

View File

@@ -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;

View File

@@ -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

View File

@@ -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)