mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
Add RGBA8 -> RGB5A3 macro and utilize for palette colors
This commit is contained in:
@@ -56,4 +56,10 @@ typedef u32 unknown;
|
||||
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
|
||||
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
|
||||
|
||||
/* ARGB8 color format (32 bits) to RGB5A3 color format (16 bits) */
|
||||
#define ARGB8_to_RGB5A3(argb8) \
|
||||
((u16)(((argb8) & 0xFF000000) >= 0xE0000000 ? \
|
||||
/* Fully opaque, 5 bits per color channel */ (0x8000 | ((((argb8) >> 16) & 0xF8) << 7) | ((((argb8) >> 8) & 0xF8) << 2) | (((argb8) & 0xFF) >> 3)) : \
|
||||
/* 3 bits of transparency, 4 bits per color channel */ (((((argb8) >> 24) & 0xE0) << 7) | ((((argb8) >> 16) & 0xF0) << 4) | (((argb8) >> 8) & 0xF0) | (((argb8) & 0xF0) >> 4))))
|
||||
|
||||
#endif
|
||||
+65
-32
@@ -182,85 +182,118 @@ extern void mNW_GC_to_Agb_texture(u8* gc, u8* agb) {
|
||||
}
|
||||
|
||||
/* RGB5A3 color palettes for each pattern palette aligned to 32 bytes */
|
||||
/* These are aligned to 32 bytes for transfering to-and-from ARAM */
|
||||
|
||||
static u16 needlework0_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
0xA94A, 0xE529, 0xEE08, 0xF2A3, 0xF304, 0xEB63, 0xDB83, 0xC34A,
|
||||
0x9F0D, 0x96B8, 0xA1FD, 0xB53C, 0xC979, 0xDD16, 0x8000, 0xFFFF
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFCE4A4A), ARGB8_to_RGB5A3(0xFFDE8442), ARGB8_to_RGB5A3(0xFFE7AD18),
|
||||
ARGB8_to_RGB5A3(0xFFE7C621), ARGB8_to_RGB5A3(0xFFD6DE18), ARGB8_to_RGB5A3(0xFFB5E718), ARGB8_to_RGB5A3(0xFF84D652),
|
||||
ARGB8_to_RGB5A3(0xFF39C66B), ARGB8_to_RGB5A3(0xFF29ADC6), ARGB8_to_RGB5A3(0xFF427BEF), ARGB8_to_RGB5A3(0xFF6B4AE7),
|
||||
ARGB8_to_RGB5A3(0xFF945ACE), ARGB8_to_RGB5A3(0xFFBD42B5), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework1_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
0xA94A, 0xFE31, 0xFF30, 0xFF8B, 0xFFCC, 0xFFF0, 0xEFEA, 0xDBF0,
|
||||
0xBFD5, 0xB39E, 0xC31F, 0xD27F, 0xEA7F, 0xFE7E, 0xC631, 0xFFFF
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFFF8C8C), ARGB8_to_RGB5A3(0xFFFFCE84), ARGB8_to_RGB5A3(0xFFFFE75A),
|
||||
ARGB8_to_RGB5A3(0xFFFFF763), ARGB8_to_RGB5A3(0xFFFFFF84), ARGB8_to_RGB5A3(0xFFDEFF52), ARGB8_to_RGB5A3(0xFFB5FF84),
|
||||
ARGB8_to_RGB5A3(0xFF7BF7AD), ARGB8_to_RGB5A3(0xFF63E7F7), ARGB8_to_RGB5A3(0xFF84C6FF), ARGB8_to_RGB5A3(0xFFA59CFF),
|
||||
ARGB8_to_RGB5A3(0xFFD69CFF), ARGB8_to_RGB5A3(0xFFFF9CF7), ARGB8_to_RGB5A3(0xFF8C8C8C), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework2_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
0xA94A, 0xCC63, 0xD541, 0xD9E0, 0xDA40, 0xD2A0, 0xC2C0, 0xAA86,
|
||||
0x8647, 0x81F2, 0x8937, 0x9C75, 0xACB2, 0xC42F, 0x8421, 0xFFFF
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF9C1818), ARGB8_to_RGB5A3(0xFFAD5208), ARGB8_to_RGB5A3(0xFFB57B00),
|
||||
ARGB8_to_RGB5A3(0xFFB59400), ARGB8_to_RGB5A3(0xFFA5AD00), ARGB8_to_RGB5A3(0xFF84B500), ARGB8_to_RGB5A3(0xFF52A531),
|
||||
ARGB8_to_RGB5A3(0xFF089439), ARGB8_to_RGB5A3(0xFF007B94), ARGB8_to_RGB5A3(0xFF104ABD), ARGB8_to_RGB5A3(0xFF3918AD),
|
||||
ARGB8_to_RGB5A3(0xFF5A2994), ARGB8_to_RGB5A3(0xFF8C087B), ARGB8_to_RGB5A3(0xFF080808), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework3_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
0xA94A, 0xA24B, 0xBB11, 0xCB95, 0x822F, 0xAED5, 0xC318, 0x91D4,
|
||||
0xA679, 0xB6BB, 0xBA17, 0xB5D5, 0xA952, 0x9CEF, 0x8C6C, 0xFFFF
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF42945A), ARGB8_to_RGB5A3(0xFF73C68C), ARGB8_to_RGB5A3(0xFF94E7AD),
|
||||
ARGB8_to_RGB5A3(0xFF008C7B), ARGB8_to_RGB5A3(0xFF5AB5AD), ARGB8_to_RGB5A3(0xFF84C6C6), ARGB8_to_RGB5A3(0xFF2173A5),
|
||||
ARGB8_to_RGB5A3(0xFF4A9CCE), ARGB8_to_RGB5A3(0xFF6BADDE), ARGB8_to_RGB5A3(0xFF7384BD), ARGB8_to_RGB5A3(0xFF6B73AD),
|
||||
ARGB8_to_RGB5A3(0xFF525294), ARGB8_to_RGB5A3(0xFF39397B), ARGB8_to_RGB5A3(0xFF181863), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework4_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
0xA94A, 0xCE0A, 0xDE4B, 0xEAF0, 0xCD4A, 0xE5CC, 0xF671, 0xC590,
|
||||
0xD216, 0xEEDB, 0xDE10, 0xD5CD, 0xC94A, 0xBCE7, 0xB062, 0xFFFF
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF9C8452), ARGB8_to_RGB5A3(0xFFBD945A), ARGB8_to_RGB5A3(0xFFD6BD84),
|
||||
ARGB8_to_RGB5A3(0xFF9C5252), ARGB8_to_RGB5A3(0xFFCE7363), ARGB8_to_RGB5A3(0xFFEF9C8C), ARGB8_to_RGB5A3(0xFF8C6384),
|
||||
ARGB8_to_RGB5A3(0xFFA584B5), ARGB8_to_RGB5A3(0xFFDEB5DE), ARGB8_to_RGB5A3(0xFFBD8484), ARGB8_to_RGB5A3(0xFFAD736B),
|
||||
ARGB8_to_RGB5A3(0xFF945252), ARGB8_to_RGB5A3(0xFF7B3939), ARGB8_to_RGB5A3(0xFF631810), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework5_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
0xA94A, 0xF560, 0xFE68, 0xFF30, 0xFFB4, 0xC525, 0xD9EB, 0xF2B1,
|
||||
0xFF77, 0x9A3F, 0xB2DF, 0xCF7F, 0xE39F, 0xB5AD, 0x8000, 0xFFFF
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEF5A00), ARGB8_to_RGB5A3(0xFFFF9C42), ARGB8_to_RGB5A3(0xFFFFCE84),
|
||||
ARGB8_to_RGB5A3(0xFFFFEFA5), ARGB8_to_RGB5A3(0xFF8C4A29), ARGB8_to_RGB5A3(0xFFB57B5A), ARGB8_to_RGB5A3(0xFFE7AD8C),
|
||||
ARGB8_to_RGB5A3(0xFFFFDEBD), ARGB8_to_RGB5A3(0xFF318CFF), ARGB8_to_RGB5A3(0xFF63B5FF), ARGB8_to_RGB5A3(0xFF9CDEFF),
|
||||
ARGB8_to_RGB5A3(0xFFC6E7FF), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework6_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
0xA94A, 0x9EC8, 0xB36B, 0xC7B0, 0xDBF5, 0x9098, 0xA95E, 0xC21F,
|
||||
0xDADF, 0xE4E7, 0xEDAD, 0xF233, 0xF6F7, 0xB5AD, 0x8000, 0xFFFF
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF39B542), ARGB8_to_RGB5A3(0xFF63DE5A), ARGB8_to_RGB5A3(0xFF8CEF84),
|
||||
ARGB8_to_RGB5A3(0xFFB5FFAD), ARGB8_to_RGB5A3(0xFF2121C6), ARGB8_to_RGB5A3(0xFF5252F7), ARGB8_to_RGB5A3(0xFF8484FF),
|
||||
ARGB8_to_RGB5A3(0xFFB5B5FF), ARGB8_to_RGB5A3(0xFFCE3939), ARGB8_to_RGB5A3(0xFFDE6B6B), ARGB8_to_RGB5A3(0xFFE78C9C),
|
||||
ARGB8_to_RGB5A3(0xFFEFBDBD), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework7_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
0xA94A, 0x8480, 0xA167, 0xB60C, 0xCED2, 0xACA0, 0xBD24, 0xD1C9,
|
||||
0xEA8F, 0xC9E0, 0xDA47, 0xE6CD, 0xEF53, 0xB5AD, 0x8000, 0xFFFF
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF082100), ARGB8_to_RGB5A3(0xFF425A39), ARGB8_to_RGB5A3(0xFF6B8463),
|
||||
ARGB8_to_RGB5A3(0xFF9CB594), ARGB8_to_RGB5A3(0xFF5A2900), ARGB8_to_RGB5A3(0xFF7B4A21), ARGB8_to_RGB5A3(0xFFA5734A),
|
||||
ARGB8_to_RGB5A3(0xFFD6A57B), ARGB8_to_RGB5A3(0xFF947B00), ARGB8_to_RGB5A3(0xFFB59439), ARGB8_to_RGB5A3(0xFFCEB56B),
|
||||
ARGB8_to_RGB5A3(0xFFDED69C), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework8_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
0xA94A, 0x909F, 0xFC84, 0xEB40, 0xB19F, 0xFD8C, 0xEB4C, 0xCA5F,
|
||||
0xFE52, 0xEB52, 0xD6BF, 0xFEB5, 0xF395, 0xB5AD, 0x8000, 0xFFFF
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF2121FF), ARGB8_to_RGB5A3(0xFFFF2121), ARGB8_to_RGB5A3(0xFFD6D600),
|
||||
ARGB8_to_RGB5A3(0xFF6363FF), ARGB8_to_RGB5A3(0xFFFF6363), ARGB8_to_RGB5A3(0xFFD6D663), ARGB8_to_RGB5A3(0xFF9494FF),
|
||||
ARGB8_to_RGB5A3(0xFFFF9494), ARGB8_to_RGB5A3(0xFFD6D694), ARGB8_to_RGB5A3(0xFFADADFF), ARGB8_to_RGB5A3(0xFFFFADAD),
|
||||
ARGB8_to_RGB5A3(0xFFE7E7AD), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework9_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
0xA94A, 0x9284, 0x9EBF, 0xCD5D, 0xAAEA, 0xAF1F, 0xDA7F, 0xB74E,
|
||||
0xC79F, 0xE6DF, 0xCB75, 0xDFDF, 0xEB3F, 0xB5AD, 0x8000, 0xFFFF
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF21A521), ARGB8_to_RGB5A3(0xFF39ADFF), ARGB8_to_RGB5A3(0xFF9C52EF),
|
||||
ARGB8_to_RGB5A3(0xFF52BD52), ARGB8_to_RGB5A3(0xFF5AC6FF), ARGB8_to_RGB5A3(0xFFB59CFF), ARGB8_to_RGB5A3(0xFF6BD673),
|
||||
ARGB8_to_RGB5A3(0xFF8CE7FF), ARGB8_to_RGB5A3(0xFFCEB5FF), ARGB8_to_RGB5A3(0xFF94DEAD), ARGB8_to_RGB5A3(0xFFBDF7FF),
|
||||
ARGB8_to_RGB5A3(0xFFD6CEFF), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework10_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
0xA94A, 0xE800, 0xFEE0, 0xF7C6, 0xA728, 0x9665, 0xAA37, 0xA135,
|
||||
0xC95A, 0xF9FB, 0xD247, 0xCD08, 0xACC7, 0xB5AD, 0x8000, 0xFFFF
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFD60000), ARGB8_to_RGB5A3(0xFFFFBD00), ARGB8_to_RGB5A3(0xFFEFF731),
|
||||
ARGB8_to_RGB5A3(0xFF4ACE42), ARGB8_to_RGB5A3(0xFF299C29), ARGB8_to_RGB5A3(0xFF528CBD), ARGB8_to_RGB5A3(0xFF424AAD),
|
||||
ARGB8_to_RGB5A3(0xFF9452D6), ARGB8_to_RGB5A3(0xFFF77BDE), ARGB8_to_RGB5A3(0xFFA59439), ARGB8_to_RGB5A3(0xFF9C4242),
|
||||
ARGB8_to_RGB5A3(0xFF5A3139), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework11_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
0xA94A, 0xF323, 0x9303, 0xFDA0, 0x801F, 0xC817, 0xF323, 0x8280,
|
||||
0xE500, 0x801A, 0xAC11, 0xCE23, 0x8200, 0xD080, 0x8014, 0xA40B
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFE7CE18), ARGB8_to_RGB5A3(0xFF21C618), ARGB8_to_RGB5A3(0xFFFF6B00),
|
||||
ARGB8_to_RGB5A3(0xFF0000FF), ARGB8_to_RGB5A3(0xFF9400BD), ARGB8_to_RGB5A3(0xFFE7CE18), ARGB8_to_RGB5A3(0xFF00A500),
|
||||
ARGB8_to_RGB5A3(0xFFCE4200), ARGB8_to_RGB5A3(0xFF0000D6), ARGB8_to_RGB5A3(0xFF5A008C), ARGB8_to_RGB5A3(0xFF9C8C18),
|
||||
ARGB8_to_RGB5A3(0xFF008400), ARGB8_to_RGB5A3(0xFFA52100), ARGB8_to_RGB5A3(0xFF0000A5), ARGB8_to_RGB5A3(0xFF4A005A),
|
||||
};
|
||||
|
||||
static u16 needlework12_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
0xA94A, 0xFC84, 0xF340, 0xF8F7, 0x8353, 0x89C2, 0xE084, 0xDE80,
|
||||
0xE4F2, 0x826D, 0x9124, 0xC484, 0xC1A0, 0xC86C, 0x81C9, 0x8CE3
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFFF2121), ARGB8_to_RGB5A3(0xFFE7D600), ARGB8_to_RGB5A3(0xFFF739BD),
|
||||
ARGB8_to_RGB5A3(0xFF00D69C), ARGB8_to_RGB5A3(0xFF107310), ARGB8_to_RGB5A3(0xFFC62121), ARGB8_to_RGB5A3(0xFFBDA500),
|
||||
ARGB8_to_RGB5A3(0xFFCE3994), ARGB8_to_RGB5A3(0xFF009C6B), ARGB8_to_RGB5A3(0xFF214A21), ARGB8_to_RGB5A3(0xFF8C2121),
|
||||
ARGB8_to_RGB5A3(0xFF846B00), ARGB8_to_RGB5A3(0xFF941863), ARGB8_to_RGB5A3(0xFF00734A), ARGB8_to_RGB5A3(0xFF183918),
|
||||
};
|
||||
|
||||
static u16 needlework13_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
0xA94A, 0xF75A, 0xEF18, 0xE6D6, 0xDE94, 0xD652, 0xCE10, 0xC5CE,
|
||||
0xBD8C, 0xB54A, 0xAD08, 0xA4C6, 0x9C84, 0x9442, 0x8C00, 0x8800
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEFD6D6), ARGB8_to_RGB5A3(0xFFDEC6C6), ARGB8_to_RGB5A3(0xFFCEB5B5),
|
||||
ARGB8_to_RGB5A3(0xFFBDA5A5), ARGB8_to_RGB5A3(0xFFAD9494), ARGB8_to_RGB5A3(0xFF9C8484), ARGB8_to_RGB5A3(0xFF8C7373),
|
||||
ARGB8_to_RGB5A3(0xFF7B6363), ARGB8_to_RGB5A3(0xFF6B5252), ARGB8_to_RGB5A3(0xFF5A4242), ARGB8_to_RGB5A3(0xFF4A3131),
|
||||
ARGB8_to_RGB5A3(0xFF392121), ARGB8_to_RGB5A3(0xFF291010), ARGB8_to_RGB5A3(0xFF180000), ARGB8_to_RGB5A3(0xFF100000),
|
||||
};
|
||||
|
||||
static u16 needlework14_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
0xA94A, 0xF7BD, 0xEF7B, 0xE739, 0xDEF7, 0xD6B5, 0xCE73, 0xC631,
|
||||
0xBDEF, 0xB5AD, 0xAD6B, 0xA529, 0x9CE7, 0x94A5, 0x8C63, 0x8842
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEFEFEF), ARGB8_to_RGB5A3(0xFFDEDEDE), ARGB8_to_RGB5A3(0xFFCECECE),
|
||||
ARGB8_to_RGB5A3(0xFFBDBDBD), ARGB8_to_RGB5A3(0xFFADADAD), ARGB8_to_RGB5A3(0xFF9C9C9C), ARGB8_to_RGB5A3(0xFF8C8C8C),
|
||||
ARGB8_to_RGB5A3(0xFF7B7B7B), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF5A5A5A), ARGB8_to_RGB5A3(0xFF4A4A4A),
|
||||
ARGB8_to_RGB5A3(0xFF393939), ARGB8_to_RGB5A3(0xFF292929), ARGB8_to_RGB5A3(0xFF181818), ARGB8_to_RGB5A3(0xFF101010),
|
||||
};
|
||||
|
||||
static u16 needlework15_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
0xA94A, 0xF5EF, 0xE863, 0xFA43, 0xF38A, 0x81A0, 0x9EC7, 0x80F6,
|
||||
0x9E7F, 0xC812, 0xFDBF, 0xC901, 0xF66B, 0xFF12, 0x8000, 0xFFFF
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEF7B7B), ARGB8_to_RGB5A3(0xFFD61818), ARGB8_to_RGB5A3(0xFFF79418),
|
||||
ARGB8_to_RGB5A3(0xFFE7E752), ARGB8_to_RGB5A3(0xFF006B00), ARGB8_to_RGB5A3(0xFF39B539), ARGB8_to_RGB5A3(0xFF0039B5),
|
||||
ARGB8_to_RGB5A3(0xFF399CFF), ARGB8_to_RGB5A3(0xFF940094), ARGB8_to_RGB5A3(0xFFFF6BFF), ARGB8_to_RGB5A3(0xFF944208),
|
||||
ARGB8_to_RGB5A3(0xFFEF9C5A), ARGB8_to_RGB5A3(0xFFFFC694), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16* mNW_needlework_pallet_table[mNW_PALETTE_COUNT] = {
|
||||
|
||||
Reference in New Issue
Block a user