Skip to content

Commit f61f80a

Browse files
committed
Reduce color LUT size from 128KB to 64KB
1 parent 29c8717 commit f61f80a

File tree

39 files changed

+209
-209
lines changed

39 files changed

+209
-209
lines changed

3dssplash/arm9/source/graphics/gif.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ void Gif::displayFrame(void) {
5454
tonccpy(bgPalette, gifColorTable.data(), gifColorTable.size() * 2);
5555
if (colorTable) {
5656
for (unsigned int i = 0; i < gifColorTable.size(); i++) {
57-
bgPalette[i] = colorTable[bgPalette[i]];
57+
bgPalette[i] = colorTable[bgPalette[i] % 0x8000];
5858
}
59-
header.bgColor = colorTable[header.bgColor];
59+
header.bgColor = colorTable[header.bgColor % 0x8000];
6060
}
6161

6262
// Disposal method 2 = fill with bg color

3dssplash/arm9/source/graphics/graphics.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,11 @@ void graphicsInit() {
8080
char colorTablePath[256];
8181
sprintf(colorTablePath, "%s:/_nds/colorLut/%s.lut", (sys().isRunFromSD() ? "sd" : "fat"), ms().colorMode.c_str());
8282

83-
if (getFileSize(colorTablePath) == 0x20000) {
84-
colorTable = new u16[0x20000/sizeof(u16)];
83+
if (getFileSize(colorTablePath) == 0x10000) {
84+
colorTable = new u16[0x10000/sizeof(u16)];
8585

8686
FILE* file = fopen(colorTablePath, "rb");
87-
fread(colorTable, 1, 0x20000, file);
87+
fread(colorTable, 1, 0x10000, file);
8888
fclose(file);
8989
}
9090
}

7zfile/_nds/colorLut/AGB-001.lut

-64 KB
Binary file not shown.

7zfile/_nds/colorLut/Grayscale.lut

-64 KB
Binary file not shown.

imageview/arm9/source/errorScreen.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ void checkSdEject(void) {
7171
};
7272
if (colorTable) {
7373
for (int i = 0; i < 4; i++) {
74-
palette[i] = colorTable[palette[i]];
74+
palette[i] = colorTable[palette[i] % 0x8000];
7575
}
7676
}
7777
//tonccpy(BG_PALETTE + 0xF8, palette, sizeof(palette));

imageview/arm9/source/graphics/fontHandler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ void fontInit() {
5858
};
5959
if (colorTable) {
6060
for (int i = 1; i < 4; i++) {
61-
palette[i] = colorTable[palette[i]];
61+
palette[i] = colorTable[palette[i] % 0x8000];
6262
}
6363
}
6464
//tonccpy(BG_PALETTE + 0xF8, palette, sizeof(palette));

imageview/arm9/source/graphics/gif.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ void Gif::displayFrame(void) {
5454
tonccpy(bgPalette, gifColorTable.data(), gifColorTable.size() * 2);
5555
if (colorTable) {
5656
for (unsigned int i = 0; i < gifColorTable.size(); i++) {
57-
bgPalette[i] = colorTable[bgPalette[i]];
57+
bgPalette[i] = colorTable[bgPalette[i] % 0x8000];
5858
}
59-
header.bgColor = colorTable[header.bgColor];
59+
header.bgColor = colorTable[header.bgColor % 0x8000];
6060
}
6161

6262
// Disposal method 2 = fill with bg color

imageview/arm9/source/graphics/graphics.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ void imageLoad(const char* filename) {
158158
if (image[(i*4)+3] > 0) {
159159
u16 color = image[i*4]>>3 | (image[(i*4)+1]>>3)<<5 | (image[(i*4)+2]>>3)<<10 | BIT(15);
160160
if (colorTable) {
161-
color = colorTable[color];
161+
color = colorTable[color % 0x8000];
162162
}
163163
res = alphablend(color, colorTable ? colorTable[0] : 0, image[(i*4)+3]);
164164
}
@@ -188,7 +188,7 @@ void imageLoad(const char* filename) {
188188
if (image[(i*4)+3] > 0) {
189189
u16 color = image[i*4]>>3 | (image[(i*4)+1]>>3)<<5 | (image[(i*4)+2]>>3)<<10 | BIT(15);
190190
if (colorTable) {
191-
color = colorTable[color];
191+
color = colorTable[color % 0x8000];
192192
}
193193
res = alphablend(color, colorTable ? colorTable[0] : 0, image[(i*4)+3]);
194194
}
@@ -281,7 +281,7 @@ void imageLoad(const char* filename) {
281281
}
282282
u16 color = bmpImageBuffer[(i*bits)+2]>>3 | (bmpImageBuffer[(i*bits)+1]>>3)<<5 | (bmpImageBuffer[i*bits]>>3)<<10 | BIT(15);
283283
if (colorTable) {
284-
color = colorTable[color];
284+
color = colorTable[color % 0x8000];
285285
}
286286
dsImageBuffer[0][(xPos+x+(y*256))+(yPos*256)] = color;
287287
if (alternatePixel) {
@@ -307,7 +307,7 @@ void imageLoad(const char* filename) {
307307
}
308308
color = bmpImageBuffer[(i*bits)+2]>>3 | (bmpImageBuffer[(i*bits)+1]>>3)<<5 | (bmpImageBuffer[i*bits]>>3)<<10 | BIT(15);
309309
if (colorTable) {
310-
color = colorTable[color];
310+
color = colorTable[color % 0x8000];
311311
}
312312
dsImageBuffer[1][(xPos+x+(y*256))+(yPos*256)] = color;
313313
x++;
@@ -330,7 +330,7 @@ void imageLoad(const char* filename) {
330330
u16 val = *(src++);
331331
u16 color = ((val >> (rgb565 ? 11 : 10)) & 0x1F) | ((val >> (rgb565 ? 1 : 0)) & (0x1F << 5)) | (val & 0x1F) << 10 | BIT(15);
332332
if (colorTable) {
333-
color = colorTable[color];
333+
color = colorTable[color % 0x8000];
334334
}
335335
*(dst + x) = color;
336336
}
@@ -350,7 +350,7 @@ void imageLoad(const char* filename) {
350350
fread(&unk, 1, 1, file);
351351
pixelBuffer[i] = pixelR>>3 | (pixelG>>3)<<5 | (pixelB>>3)<<10 | BIT(15);
352352
if (colorTable) {
353-
pixelBuffer[i] = colorTable[pixelBuffer[i]];
353+
pixelBuffer[i] = colorTable[pixelBuffer[i] % 0x8000];
354354
}
355355
}
356356
u8 *bmpImageBuffer = new u8[width * height];
@@ -381,7 +381,7 @@ void imageLoad(const char* filename) {
381381
fread(&unk, 1, 1, file);
382382
monoPixel[i] = pixelR>>3 | (pixelG>>3)<<5 | (pixelB>>3)<<10 | BIT(15);
383383
if (colorTable) {
384-
monoPixel[i] = colorTable[monoPixel[i]];
384+
monoPixel[i] = colorTable[monoPixel[i] % 0x8000];
385385
}
386386
}
387387
u8 *bmpImageBuffer = new u8[(width * height)/8];
@@ -430,7 +430,7 @@ void imageLoad(const char* filename) {
430430
tonccpy(BG_PALETTE, gif.gct().data(), gif.gct().size() * 2);
431431
if (colorTable) {
432432
for (int i = 0; i < (int)gif.gct().size(); i++) {
433-
BG_PALETTE[i] = colorTable[BG_PALETTE[i]];
433+
BG_PALETTE[i] = colorTable[BG_PALETTE[i] % 0x8000];
434434
}
435435
}
436436

@@ -459,7 +459,7 @@ void bgLoad(void) {
459459
tonccpy(BG_PALETTE_SUB, gif.gct().data(), gif.gct().size() * 2);
460460
if (colorTable) {
461461
for (int i = 0; i < (int)gif.gct().size(); i++) {
462-
BG_PALETTE_SUB[i] = colorTable[BG_PALETTE_SUB[i]];
462+
BG_PALETTE_SUB[i] = colorTable[BG_PALETTE_SUB[i] % 0x8000];
463463
}
464464
}
465465

@@ -478,11 +478,11 @@ void graphicsInit() {
478478
char colorTablePath[256];
479479
sprintf(colorTablePath, "%s:/_nds/colorLut/%s.lut", (sys().isRunFromSD() ? "sd" : "fat"), ms().colorMode.c_str());
480480

481-
if (getFileSize(colorTablePath) == 0x20000) {
482-
colorTable = new u16[0x20000/sizeof(u16)];
481+
if (getFileSize(colorTablePath) == 0x10000) {
482+
colorTable = new u16[0x10000/sizeof(u16)];
483483

484484
FILE* file = fopen(colorTablePath, "rb");
485-
fread(colorTable, 1, 0x20000, file);
485+
fread(colorTable, 1, 0x10000, file);
486486
fclose(file);
487487
}
488488
}

manual/arm9/source/errorScreen.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ void checkSdEject(void) {
5959
};
6060
if (colorTable) {
6161
for (int i = 0; i < 4; i++) {
62-
palette[i] = colorTable[palette[i]];
62+
palette[i] = colorTable[palette[i] % 0x8000];
6363
}
6464
}
6565
tonccpy(BG_PALETTE + 0xF6, palette, sizeof(palette));

manual/arm9/source/graphics/fontHandler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ void fontInit() {
6161
};
6262
if (colorTable) {
6363
for (int i = 1; i < 4; i++) {
64-
palette[i] = colorTable[palette[i]];
64+
palette[i] = colorTable[palette[i] % 0x8000];
6565
}
6666
}
6767
// tonccpy(BG_PALETTE + 0xF8, palette, sizeof(palette));

0 commit comments

Comments
 (0)