From 314b96af46db86b74203f67f7bdf2d68ff4d4e68 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 17 Dec 2017 23:45:27 +0100 Subject: static names given s prefix --- src/palette.c | 56 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) (limited to 'src/palette.c') diff --git a/src/palette.c b/src/palette.c index d4bb593da..6d8abbde6 100644 --- a/src/palette.c +++ b/src/palette.c @@ -65,7 +65,7 @@ static const struct PaletteStructTemplate gDummyPaletteStructTemplate = { .uid = 0xFFFF, .pst_field_B_5 = 1 }; -static const u8 gUnknown_0852489C[] = { +static const u8 sUnknown_0852489C[] = { 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 11, 11, 11, 11, 11, @@ -849,13 +849,13 @@ void TintPalette_GrayScale(u16 *palette, u16 count) r = *palette & 0x1F; g = (*palette >> 5) & 0x1F; b = (*palette >> 10) & 0x1F; - + r *= 0x4C; r += g * 0x97; r += b * 0x1D; - + gray = r >> 8; - + *palette++ = gray << 10 | gray << 5 | gray; } return; @@ -874,18 +874,18 @@ void TintPalette_GrayScale2(u16 *palette, u16 count) r = *palette & 0x1F; g = (*palette >> 5) & 0x1F; b = (*palette >> 10) & 0x1F; - + r *= 0x4C; r += g * 0x97; r += b * 0x1D; - + gray = r >> 8; - + if ((u32)gray > 0x1F) gray = 0x1F; - - gray = gUnknown_0852489C[gray]; - + + gray = sUnknown_0852489C[gray]; + *palette++ = gray << 10 | gray << 5 | gray; } return; @@ -902,31 +902,31 @@ void TintPalette_SepiaTone(u16 *palette, u16 count) s8 r2; s8 g2; s8 b2; - + int i; for (i = 0; i < count; i++) { r = *palette & 0x1F; g = (*palette >> 5) & 0x1F; b = (*palette >> 10) & 0x1F; - + r *= 0x4C; r += g * 0x97; r += b * 0x1D; - + gray = (s32)(r >> 8); - + sepia = (gray * 0x133); - + r2 = (u16)sepia >> 8; - + g2 = gray; - + b2 = (gray * 15); - + if (r2 > 0x1F) r2 = 0x1F; - + *palette++ = b2 << 10 | g2 << 5 | r2; } return; @@ -1011,28 +1011,28 @@ void sub_80A2BAC(u16 *palette, u16 count, u16 a3, u16 a4, u16 a5) r = *palette & 0x1F; g = (*palette >> 5) & 0x1F; b = (*palette >> 10) & 0x1F; - + r *= 0x4C; r += g * 0x97; r += b * 0x1D; - + gray = r >> 8; - + r2 = (u16)(gray * a3) >> 8; - + g2 = (u16)(gray * a4) >> 8; - + b2 = (u16)(gray * a5) >> 8; - + if (r2 > 0x1F) r2 = 0x1F; - + if (g2 > 0x1F) g2 = 0x1F; - + if (b2 > 0x1F) b2 = 0x1F; - + *palette++ = b2 << 10 | g2 << 5 | r2; } return; -- cgit v1.2.3 From 0e8d6645f84057a9eaf9e60ac9312bc259f15be1 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Fri, 22 Dec 2017 01:03:16 -0600 Subject: Attempts to fix nonmatchings in palette.c --- src/palette.c | 91 ++++++++++++++++++++++++++++------------------------------- 1 file changed, 43 insertions(+), 48 deletions(-) (limited to 'src/palette.c') diff --git a/src/palette.c b/src/palette.c index d4bb593da..8528a3fdc 100644 --- a/src/palette.c +++ b/src/palette.c @@ -65,7 +65,8 @@ static const struct PaletteStructTemplate gDummyPaletteStructTemplate = { .uid = 0xFFFF, .pst_field_B_5 = 1 }; -static const u8 gUnknown_0852489C[] = { + +static const u8 sRoundedDownGrayscaleMap[] = { 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 11, 11, 11, 11, 11, @@ -620,7 +621,7 @@ static u8 UpdateFastPaletteFade(void) gPlttBufferFaded[i] = r | (g << 5) | (b << 10); } break; - case FAST_FADE_OUT_TO_WHTIE: + case FAST_FADE_OUT_TO_WHITE: for (i = paletteOffsetStart; i < paletteOffsetEnd; i++) { struct PlttData *data = (struct PlttData *)&gPlttBufferFaded[i]; @@ -701,7 +702,7 @@ static u8 UpdateFastPaletteFade(void) case FAST_FADE_IN_FROM_BLACK: CpuCopy32(gPlttBufferUnfaded, gPlttBufferFaded, PLTT_SIZE); break; - case FAST_FADE_OUT_TO_WHTIE: + case FAST_FADE_OUT_TO_WHITE: CpuFill32(0xFFFFFFFF, gPlttBufferFaded, PLTT_SIZE); break; case FAST_FADE_OUT_TO_BLACK: @@ -838,10 +839,10 @@ void BlendPalettesUnfaded(u32 selectedPalettes, u8 coeff, u16 color) void TintPalette_GrayScale(u16 *palette, u16 count) { - s32 r; - s32 g; - s32 b; - s32 gray; + int r; + int g; + int b; + u32 gray; int i; for (i = 0; i < count; i++) @@ -850,23 +851,22 @@ void TintPalette_GrayScale(u16 *palette, u16 count) g = (*palette >> 5) & 0x1F; b = (*palette >> 10) & 0x1F; - r *= 0x4C; - r += g * 0x97; - r += b * 0x1D; + r = r * Q_8_8(0.2969); + r += g * Q_8_8(0.5899); + r += b * Q_8_8(0.1133); gray = r >> 8; *palette++ = gray << 10 | gray << 5 | gray; } - return; } void TintPalette_GrayScale2(u16 *palette, u16 count) { - s32 r; - s32 g; - s32 b; - s32 gray; + int r; + int g; + int b; + u32 gray; int i; for (i = 0; i < count; i++) @@ -874,62 +874,57 @@ void TintPalette_GrayScale2(u16 *palette, u16 count) r = *palette & 0x1F; g = (*palette >> 5) & 0x1F; b = (*palette >> 10) & 0x1F; - - r *= 0x4C; - r += g * 0x97; - r += b * 0x1D; + + r = r * Q_8_8(0.2969); + r += g * Q_8_8(0.5899); + r += b * Q_8_8(0.1133); gray = r >> 8; - if ((u32)gray > 0x1F) + if (gray > 0x1F) gray = 0x1F; - gray = gUnknown_0852489C[gray]; + gray = sRoundedDownGrayscaleMap[gray]; *palette++ = gray << 10 | gray << 5 | gray; } - return; } #ifdef NONMATCHING void TintPalette_SepiaTone(u16 *palette, u16 count) { - s32 r; - s32 g; - s32 b; + int red; + int green; + int blue; u32 gray; - u32 sepia; - s8 r2; - s8 g2; - s8 b2; + u8 r2; + u8 g2; + u8 b2; int i; for (i = 0; i < count; i++) { - r = *palette & 0x1F; - g = (*palette >> 5) & 0x1F; - b = (*palette >> 10) & 0x1F; - - r *= 0x4C; - r += g * 0x97; - r += b * 0x1D; + red = *palette & 0x1F; + green = (*palette >> 5) & 0x1F; + blue = (*palette >> 10) & 0x1F; - gray = (s32)(r >> 8); + gray = red * Q_8_8(0.2969); + gray += green * Q_8_8(0.5899); + gray += blue * Q_8_8(0.1133); - sepia = (gray * 0x133); + gray = gray / 256; - r2 = (u16)sepia >> 8; + r2 = (gray * 0x133) / 256; g2 = gray; - b2 = (gray * 15); + b2 = (gray * 0xF); if (r2 > 0x1F) r2 = 0x1F; *palette++ = b2 << 10 | g2 << 5 | r2; } - return; } #else __attribute__((naked)) @@ -995,7 +990,7 @@ _080A2BA2:\n\ #endif // NONMATCHING #ifdef NONMATCHING -void sub_80A2BAC(u16 *palette, u16 count, u16 a3, u16 a4, u16 a5) +void TintPalette_CustomTone(u16 *palette, u16 count, u16 a3, u16 a4, u16 a5) { s32 r; s32 g; @@ -1039,7 +1034,7 @@ void sub_80A2BAC(u16 *palette, u16 count, u16 a3, u16 a4, u16 a5) } #else __attribute__((naked)) -void sub_80A2BAC(u16 *palette, u16 count, u16 a3, u16 a4, u16 a5) +void TintPalette_CustomTone(u16 *palette, u16 count, u16 a3, u16 a4, u16 a5) { asm("push {r4-r7,lr}\n\ mov r7, r9\n\ @@ -1153,7 +1148,7 @@ void sub_80A2C44(u32 a1, s8 a2, u8 a3, u8 a4, u16 a5, u8 a6, u8 a7) gTasks[taskId].func(taskId); } -u32 sub_80A2CF8(u8 var) +bool32 sub_80A2CF8(u8 var) { int i; @@ -1181,7 +1176,7 @@ void sub_80A2D54(u8 taskId) { u32 wordVar; s16 *data; - u16 temp; + s16 temp; data = gTasks[taskId].data; wordVar = GetWordTaskArg(taskId, 5); @@ -1191,7 +1186,7 @@ void sub_80A2D54(u8 taskId) data[4] = 0; BlendPalettes(wordVar, data[0], data[7]); temp = data[1]; - if (data[0] == (s16)temp) + if (data[0] == temp) { DestroyTask(taskId); } @@ -1200,12 +1195,12 @@ void sub_80A2D54(u8 taskId) data[0] += data[2]; if (data[2] >= 0) { - if (data[0] < (s16)temp) + if (data[0] < temp) { return; } } - else if (data[0] > (s16)temp) + else if (data[0] > temp) { return; } -- cgit v1.2.3 From 78728ae454b6c184b69f4a8c145f32904d406f19 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 29 Jan 2018 14:36:13 +0100 Subject: add rgb constants --- src/palette.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/palette.c') diff --git a/src/palette.c b/src/palette.c index d7b6ad479..cc2046b14 100644 --- a/src/palette.c +++ b/src/palette.c @@ -4,6 +4,7 @@ #include "decompress.h" #include "gpu_regs.h" #include "task.h" +#include "constants/rgb.h" enum { -- cgit v1.2.3 From 1902ff023830d67a1b895ccf14a4202deaa02523 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 6 Feb 2018 15:31:04 +0100 Subject: match palette functions --- src/palette.c | 239 +++++++--------------------------------------------------- 1 file changed, 29 insertions(+), 210 deletions(-) (limited to 'src/palette.c') diff --git a/src/palette.c b/src/palette.c index cc2046b14..5e073e869 100644 --- a/src/palette.c +++ b/src/palette.c @@ -891,238 +891,57 @@ void TintPalette_GrayScale2(u16 *palette, u16 count) } } -#ifdef NONMATCHING void TintPalette_SepiaTone(u16 *palette, u16 count) { - int red; - int green; - int blue; - u32 gray; - u32 sepia; - s8 r2; - s8 g2; - s8 b2; + s32 r, g, b, gray; + s32 i; - int i; - for (i = 0; i < count; i++) + for (i = 0; i < count; palette++, i++) { - r = *palette & 0x1F; - g = (*palette >> 5) & 0x1F; + r = (*palette >> 0) & 0x1F; + g = (*palette >> 5) & 0x1F; b = (*palette >> 10) & 0x1F; - r *= 0x4C; - r += g * 0x97; - r += b * 0x1D; - - gray = (s32)(r >> 8); + gray = (r * 76 + g * 151 + b * 29) >> 8; - sepia = (gray * 0x133); + r = (u16)((307 * gray)) >> 8; + g = (u16)((256 * gray)) >> 8; + b = (u16)((240 * gray)) >> 8; - r2 = (u16)sepia >> 8; + if (r > 31) + r = 31; - g2 = gray; - - b2 = (gray * 15); - - if (r2 > 0x1F) - r2 = 0x1F; - - *palette++ = b2 << 10 | g2 << 5 | r2; + *palette = (b << 10) | (g << 5) | (r << 0); } } -#else -__attribute__((naked)) -void TintPalette_SepiaTone(u16 *palette, u16 count) -{ - asm("push {r4-r7,lr}\n\ - add r5, r0, #0\n\ - lsl r1, #16\n\ - lsr r1, #16\n\ - cmp r1, #0\n\ - beq _080A2BA2\n\ - mov r7, #0x1F\n\ - add r6, r1, #0\n\ -_080A2B50:\n\ - ldrh r0, [r5]\n\ - mov r1, #0x1F\n\ - and r1, r0\n\ - lsl r0, #16\n\ - lsr r2, r0, #21\n\ - and r2, r7\n\ - lsr r3, r0, #26\n\ - and r3, r7\n\ - mov r0, #0x4C\n\ - mul r1, r0\n\ - mov r0, #0x97\n\ - mul r0, r2\n\ - add r1, r0\n\ - lsl r0, r3, #3\n\ - sub r0, r3\n\ - lsl r0, #2\n\ - add r0, r3\n\ - add r1, r0\n\ - asr r1, #8\n\ - ldr r0, =0x00000133\n\ - mul r0, r1\n\ - lsl r0, #16\n\ - lsr r2, r0, #24\n\ - lsl r0, r1, #24\n\ - lsr r4, r0, #24\n\ - lsl r0, r1, #4\n\ - sub r0, r1\n\ - lsl r0, #20\n\ - lsr r3, r0, #24\n\ - cmp r2, #0x1F\n\ - ble _080A2B90\n\ - mov r2, #0x1F\n\ -_080A2B90:\n\ - lsl r0, r3, #10\n\ - lsl r1, r4, #5\n\ - orr r0, r1\n\ - orr r0, r2\n\ - strh r0, [r5]\n\ - add r5, #0x2\n\ - sub r6, #0x1\n\ - cmp r6, #0\n\ - bne _080A2B50\n\ -_080A2BA2:\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool"); -} -#endif // NONMATCHING -#ifdef NONMATCHING -void TintPalette_CustomTone(u16 *palette, u16 count, u16 a3, u16 a4, u16 a5) +void TintPalette_CustomTone(u16 *palette, u16 count, u16 rTone, u16 gTone, u16 bTone) { - s32 r; - s32 g; - s32 b; - s32 gray; - u8 r2; - u8 g2; - u8 b2; + s32 r, g, b, gray; + s32 i; - int i; - for (i = 0; i < count; i++) + for (i = 0; i < count; palette++, i++) { - r = *palette & 0x1F; - g = (*palette >> 5) & 0x1F; + r = (*palette >> 0) & 0x1F; + g = (*palette >> 5) & 0x1F; b = (*palette >> 10) & 0x1F; - r *= 0x4C; - r += g * 0x97; - r += b * 0x1D; - - gray = r >> 8; - - r2 = (u16)(gray * a3) >> 8; - - g2 = (u16)(gray * a4) >> 8; - - b2 = (u16)(gray * a5) >> 8; + gray = (r * 76 + g * 151 + b * 29) >> 8; - if (r2 > 0x1F) - r2 = 0x1F; + r = (u16)((rTone * gray)) >> 8; + g = (u16)((gTone * gray)) >> 8; + b = (u16)((bTone * gray)) >> 8; - if (g2 > 0x1F) - g2 = 0x1F; + if (r > 31) + r = 31; + if (g > 31) + g = 31; + if (b > 31) + b = 31; - if (b2 > 0x1F) - b2 = 0x1F; - - *palette++ = b2 << 10 | g2 << 5 | r2; + *palette = (b << 10) | (g << 5) | (r << 0); } - return; -} -#else -__attribute__((naked)) -void TintPalette_CustomTone(u16 *palette, u16 count, u16 a3, u16 a4, u16 a5) -{ - asm("push {r4-r7,lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6,r7}\n\ - add r5, r0, #0\n\ - ldr r0, [sp, #0x1C]\n\ - lsl r1, #16\n\ - lsr r1, #16\n\ - lsl r2, #16\n\ - lsr r2, #16\n\ - mov r9, r2\n\ - lsl r3, #16\n\ - lsr r3, #16\n\ - mov r8, r3\n\ - lsl r0, #16\n\ - lsr r0, #16\n\ - mov r12, r0\n\ - cmp r1, #0\n\ - beq _080A2C38\n\ - mov r7, #0x1F\n\ - add r6, r1, #0\n\ -_080A2BD6:\n\ - ldrh r0, [r5]\n\ - mov r1, #0x1F\n\ - and r1, r0\n\ - lsl r0, #16\n\ - lsr r2, r0, #21\n\ - and r2, r7\n\ - lsr r3, r0, #26\n\ - and r3, r7\n\ - mov r0, #0x4C\n\ - mul r1, r0\n\ - mov r0, #0x97\n\ - mul r0, r2\n\ - add r1, r0\n\ - lsl r0, r3, #3\n\ - sub r0, r3\n\ - lsl r0, #2\n\ - add r0, r3\n\ - add r1, r0\n\ - asr r1, #8\n\ - mov r0, r9\n\ - mul r0, r1\n\ - lsl r0, #16\n\ - lsr r4, r0, #24\n\ - mov r0, r8\n\ - mul r0, r1\n\ - lsl r0, #16\n\ - lsr r2, r0, #24\n\ - mov r0, r12\n\ - mul r0, r1\n\ - lsl r0, #16\n\ - lsr r3, r0, #24\n\ - cmp r4, #0x1F\n\ - ble _080A2C1A\n\ - mov r4, #0x1F\n\ -_080A2C1A:\n\ - cmp r2, #0x1F\n\ - ble _080A2C20\n\ - mov r2, #0x1F\n\ -_080A2C20:\n\ - cmp r3, #0x1F\n\ - ble _080A2C26\n\ - mov r3, #0x1F\n\ -_080A2C26:\n\ - lsl r0, r3, #10\n\ - lsl r1, r2, #5\n\ - orr r0, r1\n\ - orr r0, r4\n\ - strh r0, [r5]\n\ - add r5, #0x2\n\ - sub r6, #0x1\n\ - cmp r6, #0\n\ - bne _080A2BD6\n\ -_080A2C38:\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0"); } -#endif void sub_80A2C44(u32 a1, s8 a2, u8 a3, u8 a4, u16 a5, u8 a6, u8 a7) { -- cgit v1.2.3 From 4c6f6c47384da9a7c145fad620a0e5b40a994fa8 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Tue, 6 Feb 2018 12:47:09 -0600 Subject: Use fixed width types in TintPalette funcs --- src/palette.c | 62 +++++++++++++++++++++++------------------------------------ 1 file changed, 24 insertions(+), 38 deletions(-) (limited to 'src/palette.c') diff --git a/src/palette.c b/src/palette.c index 5e073e869..fd4ad32ad 100644 --- a/src/palette.c +++ b/src/palette.c @@ -840,93 +840,79 @@ void BlendPalettesUnfaded(u32 selectedPalettes, u8 coeff, u16 color) void TintPalette_GrayScale(u16 *palette, u16 count) { - int r; - int g; - int b; + s32 r, g, b, i; u32 gray; - int i; for (i = 0; i < count; i++) { - r = *palette & 0x1F; - g = (*palette >> 5) & 0x1F; + r = (*palette >> 0) & 0x1F; + g = (*palette >> 5) & 0x1F; b = (*palette >> 10) & 0x1F; - r = r * Q_8_8(0.2969); - r += g * Q_8_8(0.5899); - r += b * Q_8_8(0.1133); - - gray = r >> 8; + gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8; - *palette++ = gray << 10 | gray << 5 | gray; + *palette++ = (gray << 10) | (gray << 5) | (gray << 0); } } void TintPalette_GrayScale2(u16 *palette, u16 count) { - int r; - int g; - int b; + s32 r, g, b, i; u32 gray; - int i; for (i = 0; i < count; i++) { - r = *palette & 0x1F; - g = (*palette >> 5) & 0x1F; + r = (*palette >> 0) & 0x1F; + g = (*palette >> 5) & 0x1F; b = (*palette >> 10) & 0x1F; - r = r * Q_8_8(0.2969); - r += g * Q_8_8(0.5899); - r += b * Q_8_8(0.1133); - - gray = r >> 8; + gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8; if (gray > 0x1F) gray = 0x1F; gray = sRoundedDownGrayscaleMap[gray]; - *palette++ = gray << 10 | gray << 5 | gray; + *palette++ = (gray << 10) | (gray << 5) | (gray << 0); } } void TintPalette_SepiaTone(u16 *palette, u16 count) { - s32 r, g, b, gray; - s32 i; - - for (i = 0; i < count; palette++, i++) + s32 r, g, b, i; + u32 gray; + + for (i = 0; i < count; i++) { r = (*palette >> 0) & 0x1F; g = (*palette >> 5) & 0x1F; b = (*palette >> 10) & 0x1F; - gray = (r * 76 + g * 151 + b * 29) >> 8; + gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8; - r = (u16)((307 * gray)) >> 8; - g = (u16)((256 * gray)) >> 8; - b = (u16)((240 * gray)) >> 8; + r = (u16)((Q_8_8(1.2) * gray)) >> 8; + g = (u16)((Q_8_8(1.0) * gray)) >> 8; + b = (u16)((Q_8_8(0.94) * gray)) >> 8; if (r > 31) r = 31; - *palette = (b << 10) | (g << 5) | (r << 0); + *palette++ = (b << 10) | (g << 5) | (r << 0); } } void TintPalette_CustomTone(u16 *palette, u16 count, u16 rTone, u16 gTone, u16 bTone) { - s32 r, g, b, gray; - s32 i; + s32 r, g, b, i; + u32 gray; - for (i = 0; i < count; palette++, i++) + for (i = 0; i < count; i++) { r = (*palette >> 0) & 0x1F; g = (*palette >> 5) & 0x1F; b = (*palette >> 10) & 0x1F; - gray = (r * 76 + g * 151 + b * 29) >> 8; + gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8; r = (u16)((rTone * gray)) >> 8; g = (u16)((gTone * gray)) >> 8; @@ -939,7 +925,7 @@ void TintPalette_CustomTone(u16 *palette, u16 count, u16 rTone, u16 gTone, u16 b if (b > 31) b = 31; - *palette = (b << 10) | (g << 5) | (r << 0); + *palette++ = (b << 10) | (g << 5) | (r << 0); } } -- cgit v1.2.3