Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/fceux.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeromus <zeromus@users.noreply.github.com>2022-08-08 03:54:11 +0300
committerzeromus <zeromus@users.noreply.github.com>2022-08-08 03:54:11 +0300
commit11f903d36395ac974680bf785aac1209a9348a62 (patch)
treec42a5daa827c25e9ac7f8872b34fb993351ece46
parentbb1fc08d8e0a0753992db54aa9a067078b9feb42 (diff)
change built-in palettes to be bit-shifted properly so that whites are pure FF. fixes #540
-rw-r--r--src/palettes/palettes.h144
-rw-r--r--src/palettes/rp2c04001.h128
-rw-r--r--src/palettes/rp2c04002.h128
-rw-r--r--src/palettes/rp2c04003.h128
-rw-r--r--src/palettes/rp2c05004.h128
5 files changed, 332 insertions, 324 deletions
diff --git a/src/palettes/palettes.h b/src/palettes/palettes.h
index 7721bec9..7739d120 100644
--- a/src/palettes/palettes.h
+++ b/src/palettes/palettes.h
@@ -4,6 +4,9 @@
#define EMPTY_PALETTE_64 EMPTY_PALETTE_16 EMPTY_PALETTE_16 EMPTY_PALETTE_16 EMPTY_PALETTE_16
#define EMPTY_PALETTE_DEEMPH_X_7 EMPTY_PALETTE_64 EMPTY_PALETTE_64 EMPTY_PALETTE_64 EMPTY_PALETTE_64 EMPTY_PALETTE_64 EMPTY_PALETTE_64 EMPTY_PALETTE_64
+//this assumes the color is already shifted <<2, as it is in these cases
+#define P64RPC(x) ( ((x)&~3) | (((x)>>6)&3))
+
pal rp2c04001[512] = {
#include "rp2c04001.h"
EMPTY_PALETTE_DEEMPH_X_7
@@ -23,12 +26,14 @@ pal rp2c05004[512] = {
EMPTY_PALETTE_DEEMPH_X_7
};
+#undef P64RPC
+
// Fixed palette entries used by the GUI
pal palette_unvarying[] = {
-{ 0x00<<2,0x00<<2,0x00<<2}, // 0 = Black
-{ 0x3F<<2,0x3F<<2,0x34<<2}, // 1 = White
-{ 0x00<<2,0x00<<2,0x00<<2}, // 2 = Black
-{ 0x1d<<2,0x1d<<2,0x24<<2}, // 3 = Greyish
+{ 0x00,0x00,0x00}, // 0 = Black
+{ 0xFF,0xFF,0xD3}, // 1 = White
+{ 0x00,0x00,0x00}, // 2 = Black
+{ 0x75,0x75,0x92}, // 3 = Greyish
{ 190, 0, 0}, // 4 = Reddish
{ 51,255, 51}, // 5 = Bright green
{ 49, 14,200}, // 6 = Ultramarine Blue
@@ -52,73 +57,76 @@ pal palette_unvarying[] = {
};
+#define P64(x) (((x)<<2)|((x>>4)&3))
+
// Default palette
pal palette[512] = {
+ { P64(0x1D), P64(0x1D), P64(0x1D)}, /* Value 0 */
+ { P64(0x09), P64(0x06), P64(0x23)}, /* Value 1 */
+ { P64(0x00), P64(0x00), P64(0x2A)}, /* Value 2 */
+ { P64(0x11), P64(0x00), P64(0x27)}, /* Value 3 */
+ { P64(0x23), P64(0x00), P64(0x1D)}, /* Value 4 */
+ { P64(0x2A), P64(0x00), P64(0x04)}, /* Value 5 */
+ { P64(0x29), P64(0x00), P64(0x00)}, /* Value 6 */
+ { P64(0x1F), P64(0x02), P64(0x00)}, /* Value 7 */
+ { P64(0x10), P64(0x0B), P64(0x00)}, /* Value 8 */
+ { P64(0x00), P64(0x11), P64(0x00)}, /* Value 9 */
+ { P64(0x00), P64(0x14), P64(0x00)}, /* Value 10 */
+ { P64(0x00), P64(0x0F), P64(0x05)}, /* Value 11 */
+ { P64(0x06), P64(0x0F), P64(0x17)}, /* Value 12 */
+ { P64(0x00), P64(0x00), P64(0x00)}, /* Value 13 */
+ { P64(0x00), P64(0x00), P64(0x00)}, /* Value 14 */
+ { P64(0x00), P64(0x00), P64(0x00)}, /* Value 15 */
+ { P64(0x2F), P64(0x2F), P64(0x2F)}, /* Value 16 */
+ { P64(0x00), P64(0x1C), P64(0x3B)}, /* Value 17 */
+ { P64(0x08), P64(0x0E), P64(0x3B)}, /* Value 18 */
+ { P64(0x20), P64(0x00), P64(0x3C)}, /* Value 19 */
+ { P64(0x2F), P64(0x00), P64(0x2F)}, /* Value 20 */
+ { P64(0x39), P64(0x00), P64(0x16)}, /* Value 21 */
+ { P64(0x36), P64(0x0A), P64(0x00)}, /* Value 22 */
+ { P64(0x32), P64(0x13), P64(0x03)}, /* Value 23 */
+ { P64(0x22), P64(0x1C), P64(0x00)}, /* Value 24 */
+ { P64(0x00), P64(0x25), P64(0x00)}, /* Value 25 */
+ { P64(0x00), P64(0x2A), P64(0x00)}, /* Value 26 */
+ { P64(0x00), P64(0x24), P64(0x0E)}, /* Value 27 */
+ { P64(0x00), P64(0x20), P64(0x22)}, /* Value 28 */
+ { P64(0x00), P64(0x00), P64(0x00)}, /* Value 29 */
+ { P64(0x00), P64(0x00), P64(0x00)}, /* Value 30 */
+ { P64(0x00), P64(0x00), P64(0x00)}, /* Value 31 */
+ { P64(0x3F), P64(0x3F), P64(0x3F)}, /* Value 32 */
+ { P64(0x0F), P64(0x2F), P64(0x3F)}, /* Value 33 */
+ { P64(0x17), P64(0x25), P64(0x3F)}, /* Value 34 */
+ { P64(0x33), P64(0x22), P64(0x3F)}, /* Value 35 */
+ { P64(0x3D), P64(0x1E), P64(0x3F)}, /* Value 36 */
+ { P64(0x3F), P64(0x1D), P64(0x2D)}, /* Value 37 */
+ { P64(0x3F), P64(0x1D), P64(0x18)}, /* Value 38 */
+ { P64(0x3F), P64(0x26), P64(0x0E)}, /* Value 39 */
+ { P64(0x3C), P64(0x2F), P64(0x0F)}, /* Value 40 */
+ { P64(0x20), P64(0x34), P64(0x04)}, /* Value 41 */
+ { P64(0x13), P64(0x37), P64(0x12)}, /* Value 42 */
+ { P64(0x16), P64(0x3E), P64(0x26)}, /* Value 43 */
+ { P64(0x00), P64(0x3A), P64(0x36)}, /* Value 44 */
+ { P64(0x1E), P64(0x1E), P64(0x1E)}, /* Value 45 */
+ { P64(0x00), P64(0x00), P64(0x00)}, /* Value 46 */
+ { P64(0x00), P64(0x00), P64(0x00)}, /* Value 47 */
+ { P64(0x3F), P64(0x3F), P64(0x3F)}, /* Value 48 */
+ { P64(0x2A), P64(0x39), P64(0x3F)}, /* Value 49 */
+ { P64(0x31), P64(0x35), P64(0x3F)}, /* Value 50 */
+ { P64(0x35), P64(0x32), P64(0x3F)}, /* Value 51 */
+ { P64(0x3F), P64(0x31), P64(0x3F)}, /* Value 52 */
+ { P64(0x3F), P64(0x31), P64(0x36)}, /* Value 53 */
+ { P64(0x3F), P64(0x2F), P64(0x2C)}, /* Value 54 */
+ { P64(0x3F), P64(0x36), P64(0x2A)}, /* Value 55 */
+ { P64(0x3F), P64(0x39), P64(0x28)}, /* Value 56 */
+ { P64(0x38), P64(0x3F), P64(0x28)}, /* Value 57 */
+ { P64(0x2A), P64(0x3C), P64(0x2F)}, /* Value 58 */
+ { P64(0x2C), P64(0x3F), P64(0x33)}, /* Value 59 */
+ { P64(0x27), P64(0x3F), P64(0x3C)}, /* Value 60 */
+ { P64(0x31), P64(0x31), P64(0x31)}, /* Value 61 */
+ { P64(0x00), P64(0x00), P64(0x00)}, /* Value 62 */
+ { P64(0x00), P64(0x00), P64(0x00)}, /* Value 63 */
- { 0x1D<<2, 0x1D<<2, 0x1D<<2 }, /* Value 0 */
- { 0x09<<2, 0x06<<2, 0x23<<2 }, /* Value 1 */
- { 0x00<<2, 0x00<<2, 0x2A<<2 }, /* Value 2 */
- { 0x11<<2, 0x00<<2, 0x27<<2 }, /* Value 3 */
- { 0x23<<2, 0x00<<2, 0x1D<<2 }, /* Value 4 */
- { 0x2A<<2, 0x00<<2, 0x04<<2 }, /* Value 5 */
- { 0x29<<2, 0x00<<2, 0x00<<2 }, /* Value 6 */
- { 0x1F<<2, 0x02<<2, 0x00<<2 }, /* Value 7 */
- { 0x10<<2, 0x0B<<2, 0x00<<2 }, /* Value 8 */
- { 0x00<<2, 0x11<<2, 0x00<<2 }, /* Value 9 */
- { 0x00<<2, 0x14<<2, 0x00<<2 }, /* Value 10 */
- { 0x00<<2, 0x0F<<2, 0x05<<2 }, /* Value 11 */
- { 0x06<<2, 0x0F<<2, 0x17<<2 }, /* Value 12 */
- { 0x00<<2, 0x00<<2, 0x00<<2 }, /* Value 13 */
- { 0x00<<2, 0x00<<2, 0x00<<2 }, /* Value 14 */
- { 0x00<<2, 0x00<<2, 0x00<<2 }, /* Value 15 */
- { 0x2F<<2, 0x2F<<2, 0x2F<<2 }, /* Value 16 */
- { 0x00<<2, 0x1C<<2, 0x3B<<2 }, /* Value 17 */
- { 0x08<<2, 0x0E<<2, 0x3B<<2 }, /* Value 18 */
- { 0x20<<2, 0x00<<2, 0x3C<<2 }, /* Value 19 */
- { 0x2F<<2, 0x00<<2, 0x2F<<2 }, /* Value 20 */
- { 0x39<<2, 0x00<<2, 0x16<<2 }, /* Value 21 */
- { 0x36<<2, 0x0A<<2, 0x00<<2 }, /* Value 22 */
- { 0x32<<2, 0x13<<2, 0x03<<2 }, /* Value 23 */
- { 0x22<<2, 0x1C<<2, 0x00<<2 }, /* Value 24 */
- { 0x00<<2, 0x25<<2, 0x00<<2 }, /* Value 25 */
- { 0x00<<2, 0x2A<<2, 0x00<<2 }, /* Value 26 */
- { 0x00<<2, 0x24<<2, 0x0E<<2 }, /* Value 27 */
- { 0x00<<2, 0x20<<2, 0x22<<2 }, /* Value 28 */
- { 0x00<<2, 0x00<<2, 0x00<<2 }, /* Value 29 */
- { 0x00<<2, 0x00<<2, 0x00<<2 }, /* Value 30 */
- { 0x00<<2, 0x00<<2, 0x00<<2 }, /* Value 31 */
- { 0x3F<<2, 0x3F<<2, 0x3F<<2 }, /* Value 32 */
- { 0x0F<<2, 0x2F<<2, 0x3F<<2 }, /* Value 33 */
- { 0x17<<2, 0x25<<2, 0x3F<<2 }, /* Value 34 */
- { 0x33<<2, 0x22<<2, 0x3F<<2 }, /* Value 35 */
- { 0x3D<<2, 0x1E<<2, 0x3F<<2 }, /* Value 36 */
- { 0x3F<<2, 0x1D<<2, 0x2D<<2 }, /* Value 37 */
- { 0x3F<<2, 0x1D<<2, 0x18<<2 }, /* Value 38 */
- { 0x3F<<2, 0x26<<2, 0x0E<<2 }, /* Value 39 */
- { 0x3C<<2, 0x2F<<2, 0x0F<<2 }, /* Value 40 */
- { 0x20<<2, 0x34<<2, 0x04<<2 }, /* Value 41 */
- { 0x13<<2, 0x37<<2, 0x12<<2 }, /* Value 42 */
- { 0x16<<2, 0x3E<<2, 0x26<<2 }, /* Value 43 */
- { 0x00<<2, 0x3A<<2, 0x36<<2 }, /* Value 44 */
- { 0x1E<<2, 0x1E<<2, 0x1E<<2 }, /* Value 45 */
- { 0x00<<2, 0x00<<2, 0x00<<2 }, /* Value 46 */
- { 0x00<<2, 0x00<<2, 0x00<<2 }, /* Value 47 */
- { 0x3F<<2, 0x3F<<2, 0x3F<<2 }, /* Value 48 */
- { 0x2A<<2, 0x39<<2, 0x3F<<2 }, /* Value 49 */
- { 0x31<<2, 0x35<<2, 0x3F<<2 }, /* Value 50 */
- { 0x35<<2, 0x32<<2, 0x3F<<2 }, /* Value 51 */
- { 0x3F<<2, 0x31<<2, 0x3F<<2 }, /* Value 52 */
- { 0x3F<<2, 0x31<<2, 0x36<<2 }, /* Value 53 */
- { 0x3F<<2, 0x2F<<2, 0x2C<<2 }, /* Value 54 */
- { 0x3F<<2, 0x36<<2, 0x2A<<2 }, /* Value 55 */
- { 0x3F<<2, 0x39<<2, 0x28<<2 }, /* Value 56 */
- { 0x38<<2, 0x3F<<2, 0x28<<2 }, /* Value 57 */
- { 0x2A<<2, 0x3C<<2, 0x2F<<2 }, /* Value 58 */
- { 0x2C<<2, 0x3F<<2, 0x33<<2 }, /* Value 59 */
- { 0x27<<2, 0x3F<<2, 0x3C<<2 }, /* Value 60 */
- { 0x31<<2, 0x31<<2, 0x31<<2 }, /* Value 61 */
- { 0x00<<2, 0x00<<2, 0x00<<2 }, /* Value 62 */
- { 0x00<<2, 0x00<<2, 0x00<<2 }, /* Value 63 */
+ #undef P64
//luke's .16+ palette
//{0x60, 0x60, 0x60}, /* Value 0 */
diff --git a/src/palettes/rp2c04001.h b/src/palettes/rp2c04001.h
index a7bdb7c0..399a5f27 100644
--- a/src/palettes/rp2c04001.h
+++ b/src/palettes/rp2c04001.h
@@ -1,64 +1,64 @@
-{0xfc, 0xc4, 0xd8},
-{0x40, 0x88, 0xfc},
-{0xd8, 0x28, 0x00},
-{0x5c, 0x94, 0xfc},
-{0x00, 0x80, 0x88},
-{0x00, 0x44, 0x00},
-{0x00, 0x00, 0x00},
-{0xe4, 0x00, 0x58},
-{0xfc, 0xfc, 0xfc},
-{0x74, 0x74, 0x74},
-{0xfc, 0x98, 0x38},
-{0xa8, 0x00, 0x10},
-{0x8c, 0x00, 0x74},
-{0xfc, 0x98, 0x38},
-{0x40, 0x2c, 0x00},
-{0xfc, 0xfc, 0xfc},
-{0x3c, 0xbc, 0xfc},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0x80, 0xd0, 0x10},
-{0x9c, 0xfc, 0xf0},
-{0xc4, 0xd4, 0xfc},
-{0xfc, 0xbc, 0xb0},
-{0x20, 0x38, 0xec},
-{0x00, 0x00, 0x00},
-{0x58, 0xf8, 0x98},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0xfc, 0xfc, 0xfc},
-{0xbc, 0xbc, 0xbc},
-{0xf4, 0x78, 0xfc},
-{0x24, 0x18, 0x8c},
-{0x00, 0x00, 0x00},
-{0xa8, 0xe4, 0xfc},
-{0x00, 0x00, 0x00},
-{0x4c, 0xdc, 0x48},
-{0x00, 0xe8, 0xd8},
-{0x18, 0x3c, 0x5c},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0x7c, 0x08, 0x00},
-{0xfc, 0xc4, 0xfc},
-{0xa4, 0x00, 0x00},
-{0x80, 0x00, 0xf0},
-{0x00, 0x00, 0xa8},
-{0xfc, 0x74, 0x60},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0x00, 0x94, 0x00},
-{0xbc, 0xbc, 0xbc},
-{0x00, 0x50, 0x00},
-{0xe0, 0xfc, 0xa0},
-{0x00, 0x00, 0x00},
-{0xfc, 0xd8, 0xa8},
-{0xc8, 0x4c, 0x0c},
-{0x00, 0x00, 0x00},
-{0x00, 0x70, 0xec},
-{0x00, 0x44, 0x00},
-{0x00, 0x00, 0x00},
-{0xe0, 0xfc, 0xa0},
-{0xfc, 0x74, 0xb4},
-{0x88, 0x70, 0x00},
-{0x00, 0x00, 0x00},
+{P64RPC(0xfc), P64RPC(0xc4), P64RPC(0xd8)},
+{P64RPC(0x40), P64RPC(0x88), P64RPC(0xfc)},
+{P64RPC(0xd8), P64RPC(0x28), P64RPC(0x00)},
+{P64RPC(0x5c), P64RPC(0x94), P64RPC(0xfc)},
+{P64RPC(0x00), P64RPC(0x80), P64RPC(0x88)},
+{P64RPC(0x00), P64RPC(0x44), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xe4), P64RPC(0x00), P64RPC(0x58)},
+{P64RPC(0xfc), P64RPC(0xfc), P64RPC(0xfc)},
+{P64RPC(0x74), P64RPC(0x74), P64RPC(0x74)},
+{P64RPC(0xfc), P64RPC(0x98), P64RPC(0x38)},
+{P64RPC(0xa8), P64RPC(0x00), P64RPC(0x10)},
+{P64RPC(0x8c), P64RPC(0x00), P64RPC(0x74)},
+{P64RPC(0xfc), P64RPC(0x98), P64RPC(0x38)},
+{P64RPC(0x40), P64RPC(0x2c), P64RPC(0x00)},
+{P64RPC(0xfc), P64RPC(0xfc), P64RPC(0xfc)},
+{P64RPC(0x3c), P64RPC(0xbc), P64RPC(0xfc)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x80), P64RPC(0xd0), P64RPC(0x10)},
+{P64RPC(0x9c), P64RPC(0xfc), P64RPC(0xf0)},
+{P64RPC(0xc4), P64RPC(0xd4), P64RPC(0xfc)},
+{P64RPC(0xfc), P64RPC(0xbc), P64RPC(0xb0)},
+{P64RPC(0x20), P64RPC(0x38), P64RPC(0xec)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x58), P64RPC(0xf8), P64RPC(0x98)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xfc), P64RPC(0xfc), P64RPC(0xfc)},
+{P64RPC(0xbc), P64RPC(0xbc), P64RPC(0xbc)},
+{P64RPC(0xf4), P64RPC(0x78), P64RPC(0xfc)},
+{P64RPC(0x24), P64RPC(0x18), P64RPC(0x8c)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xa8), P64RPC(0xe4), P64RPC(0xfc)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x4c), P64RPC(0xdc), P64RPC(0x48)},
+{P64RPC(0x00), P64RPC(0xe8), P64RPC(0xd8)},
+{P64RPC(0x18), P64RPC(0x3c), P64RPC(0x5c)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x7c), P64RPC(0x08), P64RPC(0x00)},
+{P64RPC(0xfc), P64RPC(0xc4), P64RPC(0xfc)},
+{P64RPC(0xa4), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x80), P64RPC(0x00), P64RPC(0xf0)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0xa8)},
+{P64RPC(0xfc), P64RPC(0x74), P64RPC(0x60)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x94), P64RPC(0x00)},
+{P64RPC(0xbc), P64RPC(0xbc), P64RPC(0xbc)},
+{P64RPC(0x00), P64RPC(0x50), P64RPC(0x00)},
+{P64RPC(0xe0), P64RPC(0xfc), P64RPC(0xa0)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xfc), P64RPC(0xd8), P64RPC(0xa8)},
+{P64RPC(0xc8), P64RPC(0x4c), P64RPC(0x0c)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x70), P64RPC(0xec)},
+{P64RPC(0x00), P64RPC(0x44), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xe0), P64RPC(0xfc), P64RPC(0xa0)},
+{P64RPC(0xfc), P64RPC(0x74), P64RPC(0xb4)},
+{P64RPC(0x88), P64RPC(0x70), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
diff --git a/src/palettes/rp2c04002.h b/src/palettes/rp2c04002.h
index a6e448c7..299c3eaf 100644
--- a/src/palettes/rp2c04002.h
+++ b/src/palettes/rp2c04002.h
@@ -1,64 +1,64 @@
-{0x00, 0x00, 0x00},
-{0xfc, 0x98, 0x38},
-{0x88, 0x70, 0x00},
-{0x00, 0x00, 0x00},
-{0xa8, 0xf0, 0xbc},
-{0xfc, 0x74, 0xb4},
-{0x00, 0x00, 0x00},
-{0xa8, 0xe4, 0xfc},
-{0xd8, 0x28, 0x00},
-{0x80, 0x00, 0xf0},
-{0xfc, 0xe4, 0xa0},
-{0xfc, 0xc4, 0xfc},
-{0xfc, 0xfc, 0xfc},
-{0x40, 0x88, 0xfc},
-{0x00, 0x00, 0x00},
-{0x00, 0x3c, 0x14},
-{0x00, 0x00, 0x00},
-{0x3c, 0xbc, 0xfc},
-{0xa4, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0x00, 0x90, 0x38},
-{0x80, 0xd0, 0x10},
-{0x00, 0x00, 0x00},
-{0x5c, 0x94, 0xfc},
-{0x00, 0x00, 0x00},
-{0xf4, 0x78, 0xfc},
-{0x00, 0x00, 0x00},
-{0x58, 0xf8, 0x98},
-{0x00, 0x00, 0x00},
-{0x40, 0x2c, 0x00},
-{0x00, 0x00, 0x00},
-{0x44, 0x00, 0x9c},
-{0x00, 0x00, 0x00},
-{0xfc, 0xbc, 0xb0},
-{0xfc, 0x74, 0x60},
-{0xd4, 0xc8, 0xfc},
-{0x00, 0x70, 0xec},
-{0x00, 0x00, 0x00},
-{0xbc, 0xbc, 0xbc},
-{0x00, 0x00, 0xa8},
-{0xbc, 0x00, 0xbc},
-{0x00, 0x00, 0x00},
-{0x74, 0x74, 0x74},
-{0x00, 0x44, 0x00},
-{0x20, 0x38, 0xec},
-{0x00, 0x00, 0x00},
-{0xfc, 0xd8, 0xa8},
-{0xfc, 0xfc, 0xfc},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0x4c, 0xdc, 0x48},
-{0xc8, 0x4c, 0x0c},
-{0x18, 0x3c, 0x5c},
-{0x24, 0x18, 0x8c},
-{0xe4, 0x00, 0x58},
-{0x00, 0x94, 0x00},
-{0x00, 0x00, 0x00},
-{0x00, 0xe8, 0xd8},
-{0x7c, 0x08, 0x00},
-{0xfc, 0xd8, 0xa8},
-{0x00, 0x00, 0x00},
-{0xa8, 0x00, 0x10},
-{0x00, 0x50, 0x00},
-{0x74, 0x74, 0x74},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xfc), P64RPC(0x98), P64RPC(0x38)},
+{P64RPC(0x88), P64RPC(0x70), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xa8), P64RPC(0xf0), P64RPC(0xbc)},
+{P64RPC(0xfc), P64RPC(0x74), P64RPC(0xb4)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xa8), P64RPC(0xe4), P64RPC(0xfc)},
+{P64RPC(0xd8), P64RPC(0x28), P64RPC(0x00)},
+{P64RPC(0x80), P64RPC(0x00), P64RPC(0xf0)},
+{P64RPC(0xfc), P64RPC(0xe4), P64RPC(0xa0)},
+{P64RPC(0xfc), P64RPC(0xc4), P64RPC(0xfc)},
+{P64RPC(0xfc), P64RPC(0xfc), P64RPC(0xfc)},
+{P64RPC(0x40), P64RPC(0x88), P64RPC(0xfc)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x3c), P64RPC(0x14)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x3c), P64RPC(0xbc), P64RPC(0xfc)},
+{P64RPC(0xa4), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x90), P64RPC(0x38)},
+{P64RPC(0x80), P64RPC(0xd0), P64RPC(0x10)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x5c), P64RPC(0x94), P64RPC(0xfc)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xf4), P64RPC(0x78), P64RPC(0xfc)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x58), P64RPC(0xf8), P64RPC(0x98)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x40), P64RPC(0x2c), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x44), P64RPC(0x00), P64RPC(0x9c)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xfc), P64RPC(0xbc), P64RPC(0xb0)},
+{P64RPC(0xfc), P64RPC(0x74), P64RPC(0x60)},
+{P64RPC(0xd4), P64RPC(0xc8), P64RPC(0xfc)},
+{P64RPC(0x00), P64RPC(0x70), P64RPC(0xec)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xbc), P64RPC(0xbc), P64RPC(0xbc)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0xa8)},
+{P64RPC(0xbc), P64RPC(0x00), P64RPC(0xbc)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x74), P64RPC(0x74), P64RPC(0x74)},
+{P64RPC(0x00), P64RPC(0x44), P64RPC(0x00)},
+{P64RPC(0x20), P64RPC(0x38), P64RPC(0xec)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xfc), P64RPC(0xd8), P64RPC(0xa8)},
+{P64RPC(0xfc), P64RPC(0xfc), P64RPC(0xfc)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x4c), P64RPC(0xdc), P64RPC(0x48)},
+{P64RPC(0xc8), P64RPC(0x4c), P64RPC(0x0c)},
+{P64RPC(0x18), P64RPC(0x3c), P64RPC(0x5c)},
+{P64RPC(0x24), P64RPC(0x18), P64RPC(0x8c)},
+{P64RPC(0xe4), P64RPC(0x00), P64RPC(0x58)},
+{P64RPC(0x00), P64RPC(0x94), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0xe8), P64RPC(0xd8)},
+{P64RPC(0x7c), P64RPC(0x08), P64RPC(0x00)},
+{P64RPC(0xfc), P64RPC(0xd8), P64RPC(0xa8)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xa8), P64RPC(0x00), P64RPC(0x10)},
+{P64RPC(0x00), P64RPC(0x50), P64RPC(0x00)},
+{P64RPC(0x74), P64RPC(0x74), P64RPC(0x74)},
diff --git a/src/palettes/rp2c04003.h b/src/palettes/rp2c04003.h
index 71170876..964a6d6f 100644
--- a/src/palettes/rp2c04003.h
+++ b/src/palettes/rp2c04003.h
@@ -1,64 +1,64 @@
-{0x44, 0x00, 0x9c},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0x74, 0x74, 0x74},
-{0x00, 0xa8, 0x00},
-{0xfc, 0xfc, 0xfc},
-{0xa8, 0xe4, 0xfc},
-{0x00, 0x44, 0x00},
-{0x24, 0x18, 0x8c},
-{0x00, 0x00, 0x00},
-{0xfc, 0xbc, 0xb0},
-{0x40, 0x2c, 0x00},
-{0xe4, 0x00, 0x58},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0xfc, 0xfc, 0xfc},
-{0x5c, 0x94, 0xfc},
-{0x00, 0x80, 0x88},
-{0x00, 0x00, 0x00},
-{0x20, 0x38, 0xec},
-{0x00, 0x94, 0x00},
-{0x88, 0x70, 0x00},
-{0xc8, 0x4c, 0x0c},
-{0x00, 0x90, 0x38},
-{0x74, 0x74, 0x74},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0xa8},
-{0xd8, 0x28, 0x00},
-{0xa4, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0xfc, 0xc4, 0xd8},
-{0x40, 0x88, 0xfc},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0xfc, 0xd8, 0xa8},
-{0x00, 0x00, 0x00},
-{0xfc, 0x98, 0x38},
-{0xfc, 0x74, 0x60},
-{0xfc, 0xfc, 0xfc},
-{0x80, 0xd0, 0x10},
-{0x00, 0x00, 0x00},
-{0x3c, 0xbc, 0xfc},
-{0xf4, 0x78, 0xfc},
-{0x00, 0x70, 0xec},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0x00, 0xe8, 0xd8},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0x7c, 0x08, 0x00},
-{0x4c, 0xdc, 0x48},
-{0xf0, 0xbc, 0x3c},
-{0x00, 0x00, 0x00},
-{0x00, 0x50, 0x00},
-{0x00, 0x00, 0x00},
-{0xc4, 0xd4, 0xfc},
-{0xfc, 0xd8, 0xa8},
-{0x80, 0x00, 0xf0},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0x18, 0x3c, 0x5c},
+{P64RPC(0x44), P64RPC(0x00), P64RPC(0x9c)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x74), P64RPC(0x74), P64RPC(0x74)},
+{P64RPC(0x00), P64RPC(0xa8), P64RPC(0x00)},
+{P64RPC(0xfc), P64RPC(0xfc), P64RPC(0xfc)},
+{P64RPC(0xa8), P64RPC(0xe4), P64RPC(0xfc)},
+{P64RPC(0x00), P64RPC(0x44), P64RPC(0x00)},
+{P64RPC(0x24), P64RPC(0x18), P64RPC(0x8c)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xfc), P64RPC(0xbc), P64RPC(0xb0)},
+{P64RPC(0x40), P64RPC(0x2c), P64RPC(0x00)},
+{P64RPC(0xe4), P64RPC(0x00), P64RPC(0x58)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xfc), P64RPC(0xfc), P64RPC(0xfc)},
+{P64RPC(0x5c), P64RPC(0x94), P64RPC(0xfc)},
+{P64RPC(0x00), P64RPC(0x80), P64RPC(0x88)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x20), P64RPC(0x38), P64RPC(0xec)},
+{P64RPC(0x00), P64RPC(0x94), P64RPC(0x00)},
+{P64RPC(0x88), P64RPC(0x70), P64RPC(0x00)},
+{P64RPC(0xc8), P64RPC(0x4c), P64RPC(0x0c)},
+{P64RPC(0x00), P64RPC(0x90), P64RPC(0x38)},
+{P64RPC(0x74), P64RPC(0x74), P64RPC(0x74)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0xa8)},
+{P64RPC(0xd8), P64RPC(0x28), P64RPC(0x00)},
+{P64RPC(0xa4), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xfc), P64RPC(0xc4), P64RPC(0xd8)},
+{P64RPC(0x40), P64RPC(0x88), P64RPC(0xfc)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xfc), P64RPC(0xd8), P64RPC(0xa8)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xfc), P64RPC(0x98), P64RPC(0x38)},
+{P64RPC(0xfc), P64RPC(0x74), P64RPC(0x60)},
+{P64RPC(0xfc), P64RPC(0xfc), P64RPC(0xfc)},
+{P64RPC(0x80), P64RPC(0xd0), P64RPC(0x10)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x3c), P64RPC(0xbc), P64RPC(0xfc)},
+{P64RPC(0xf4), P64RPC(0x78), P64RPC(0xfc)},
+{P64RPC(0x00), P64RPC(0x70), P64RPC(0xec)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0xe8), P64RPC(0xd8)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x7c), P64RPC(0x08), P64RPC(0x00)},
+{P64RPC(0x4c), P64RPC(0xdc), P64RPC(0x48)},
+{P64RPC(0xf0), P64RPC(0xbc), P64RPC(0x3c)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x50), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xc4), P64RPC(0xd4), P64RPC(0xfc)},
+{P64RPC(0xfc), P64RPC(0xd8), P64RPC(0xa8)},
+{P64RPC(0x80), P64RPC(0x00), P64RPC(0xf0)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x18), P64RPC(0x3c), P64RPC(0x5c)},
diff --git a/src/palettes/rp2c05004.h b/src/palettes/rp2c05004.h
index a50ed704..36ae702e 100644
--- a/src/palettes/rp2c05004.h
+++ b/src/palettes/rp2c05004.h
@@ -1,64 +1,64 @@
-{0x88, 0x70, 0x00},
-{0x00, 0x00, 0x00},
-{0x00, 0x80, 0x88},
-{0xf0, 0xbc, 0x3c},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0x24, 0x18, 0x8c},
-{0xc8, 0x4c, 0x0c},
-{0xbc, 0xbc, 0xbc},
-{0x00, 0x00, 0x00},
-{0x4c, 0xdc, 0x48},
-{0x00, 0x00, 0x00},
-{0xfc, 0xbc, 0xb0},
-{0xfc, 0xd8, 0xa8},
-{0x00, 0xa8, 0x00},
-{0x00, 0x00, 0x00},
-{0xfc, 0x74, 0xb4},
-{0x00, 0x00, 0x00},
-{0x20, 0x38, 0xec},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0xfc, 0x74, 0x60},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0x5c, 0x94, 0xfc},
-{0x00, 0x94, 0x00},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0xa8, 0xf0, 0xbc},
-{0x3c, 0xbc, 0xfc},
-{0xa8, 0x00, 0x10},
-{0x00, 0x50, 0x00},
-{0x7c, 0x08, 0x00},
-{0x00, 0x00, 0xa8},
-{0x80, 0x00, 0xf0},
-{0x00, 0x00, 0x00},
-{0x74, 0x74, 0x74},
-{0xe4, 0x00, 0x58},
-{0x18, 0x3c, 0x5c},
-{0x00, 0x00, 0x00},
-{0x00, 0x70, 0xec},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0xfc, 0xe4, 0xa0},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0x40, 0x2c, 0x00},
-{0xd8, 0x28, 0x00},
-{0x00, 0x00, 0x00},
-{0x00, 0x00, 0x00},
-{0xfc, 0xfc, 0xfc},
-{0x9c, 0xfc, 0xf0},
-{0x00, 0x00, 0x00},
-{0xfc, 0x98, 0x38},
-{0x00, 0x00, 0x00},
-{0xa8, 0xe4, 0xfc},
-{0x80, 0xd0, 0x10},
-{0x00, 0x00, 0x00},
-{0xfc, 0xfc, 0xfc},
-{0x00, 0x44, 0x00},
+{P64RPC(0x88), P64RPC(0x70), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x80), P64RPC(0x88)},
+{P64RPC(0xf0), P64RPC(0xbc), P64RPC(0x3c)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x24), P64RPC(0x18), P64RPC(0x8c)},
+{P64RPC(0xc8), P64RPC(0x4c), P64RPC(0x0c)},
+{P64RPC(0xbc), P64RPC(0xbc), P64RPC(0xbc)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x4c), P64RPC(0xdc), P64RPC(0x48)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xfc), P64RPC(0xbc), P64RPC(0xb0)},
+{P64RPC(0xfc), P64RPC(0xd8), P64RPC(0xa8)},
+{P64RPC(0x00), P64RPC(0xa8), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xfc), P64RPC(0x74), P64RPC(0xb4)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x20), P64RPC(0x38), P64RPC(0xec)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xfc), P64RPC(0x74), P64RPC(0x60)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x5c), P64RPC(0x94), P64RPC(0xfc)},
+{P64RPC(0x00), P64RPC(0x94), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xa8), P64RPC(0xf0), P64RPC(0xbc)},
+{P64RPC(0x3c), P64RPC(0xbc), P64RPC(0xfc)},
+{P64RPC(0xa8), P64RPC(0x00), P64RPC(0x10)},
+{P64RPC(0x00), P64RPC(0x50), P64RPC(0x00)},
+{P64RPC(0x7c), P64RPC(0x08), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0xa8)},
+{P64RPC(0x80), P64RPC(0x00), P64RPC(0xf0)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x74), P64RPC(0x74), P64RPC(0x74)},
+{P64RPC(0xe4), P64RPC(0x00), P64RPC(0x58)},
+{P64RPC(0x18), P64RPC(0x3c), P64RPC(0x5c)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x70), P64RPC(0xec)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xfc), P64RPC(0xe4), P64RPC(0xa0)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x40), P64RPC(0x2c), P64RPC(0x00)},
+{P64RPC(0xd8), P64RPC(0x28), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xfc), P64RPC(0xfc), P64RPC(0xfc)},
+{P64RPC(0x9c), P64RPC(0xfc), P64RPC(0xf0)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xfc), P64RPC(0x98), P64RPC(0x38)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xa8), P64RPC(0xe4), P64RPC(0xfc)},
+{P64RPC(0x80), P64RPC(0xd0), P64RPC(0x10)},
+{P64RPC(0x00), P64RPC(0x00), P64RPC(0x00)},
+{P64RPC(0xfc), P64RPC(0xfc), P64RPC(0xfc)},
+{P64RPC(0x00), P64RPC(0x44), P64RPC(0x00)},