summaryrefslogtreecommitdiff
path: root/src/bg_palette_buffer.c
diff options
context:
space:
mode:
authornullableVoidPtr <30564701+nullableVoidPtr@users.noreply.github.com>2018-10-17 11:28:27 +0800
committervoid <30564701+nullableVoidPtr@users.noreply.github.com>2018-11-18 18:29:52 +0800
commit961ab7ccaf4d175189cd42fcddca1336f3d91bad (patch)
treea223139bf9282e5a3636810ae78dccf5095e2100 /src/bg_palette_buffer.c
parent9e5147a9adf9dc0aba908f38637cd0b4da2cbbcc (diff)
Fix makefile and decompile some functions.
Partial memory.c, save.c and bg_palette_buffer.c decompilation, along with some asm/ cleanup.
Diffstat (limited to 'src/bg_palette_buffer.c')
-rw-r--r--src/bg_palette_buffer.c102
1 files changed, 102 insertions, 0 deletions
diff --git a/src/bg_palette_buffer.c b/src/bg_palette_buffer.c
new file mode 100644
index 0000000..5e078a0
--- /dev/null
+++ b/src/bg_palette_buffer.c
@@ -0,0 +1,102 @@
+#include "global.h"
+
+extern u16 gBGPaletteBuffer[512];
+extern bool8 gBGPaletteUsed[32];
+
+extern void CpuCopy(void* src, void* dest, u32 size);
+
+/*
+void InitBGPaletteBuffer(void)
+{
+ u16 color = 0;
+ u16* ptr;
+ u32 i;
+ bool8 paletteUsed;
+
+ u8* p;
+
+ ptr = gUnknown_20251F0;
+
+ i = 0x80;
+ i <<= 2;
+
+ do {
+ *ptr++ = color;
+ i--;
+ } while (i);
+
+ paletteUsed = TRUE;
+
+ p = gUnknown_20251D0;
+ p += 31;
+
+ do
+ *p-- = paletteUsed;
+ while ((s32) p >= (s32) &gUnknown_20251D0);
+}
+void SetBGPaletteBufferColorRGB(s32 index, u8 *RGBArray, s32 a3, u8 *a4)
+{
+ if (a3 < 0) {
+ a3 = 0;
+ }
+ if (a3 > 31) {
+ a3 = 31;
+ }
+ gBGPaletteUsed[index / 16] = 1;
+ if (!a4) {
+ gBGPaletteBuffer[index] = ((RGBArray[2] * a3 / 256 & 0x1F) << 10) | ((RGBArray[1] * a3 / 256 & 0x1F) << 5) | (RGBArray[0] * a3 / 256 & 0x1F);
+ }
+ else
+ {
+ gBGPaletteBuffer[index] = ((a4[4 * RGBArray[2] + 2] * a3 / 256 & 0x1F) << 10) | ((a4[4 * RGBArray[1] + 1] * a3 / 256 & 0x1F) << 5) | (a4[4 * RGBArray[0]] * a3 / 256 & 0x1F);
+ }
+}
+*/
+
+void SetBGPaletteBufferColorArray(s32 index, u8 *colorArray)
+{
+ gBGPaletteUsed[index / 16] = TRUE;
+ gBGPaletteBuffer[index] = (colorArray[2] >> 3) << 10 | (colorArray[1] >> 3) << 5 | colorArray[0] >> 3;
+}
+
+void SetBGPaletteBufferColor(s32 index, u16 *color)
+{
+ gBGPaletteUsed[index / 16] = TRUE;
+ gBGPaletteBuffer[index] = *color;
+}
+
+void nullsub_4()
+{
+
+}
+void nullsub_5(void)
+{
+
+}
+void nullsub_143(void)
+{
+
+}
+
+void TransferBGPaletteBuffer(void)
+{
+ u32 i;
+ s32 paletteBufferIndex;
+ u16 *dest;
+
+ i = 0;
+ paletteBufferIndex = 0;
+ dest = (u16 *)PLTT;
+ do
+ {
+ if (gBGPaletteUsed[i])
+ {
+ gBGPaletteUsed[i] = 0;
+ CpuCopy(dest, &gBGPaletteBuffer[paletteBufferIndex], sizeof(u16) * 16);
+ }
+ ++i;
+ dest += 16;
+ paletteBufferIndex += 16;
+ }
+ while ( paletteBufferIndex < 512 );
+} \ No newline at end of file