summaryrefslogtreecommitdiff
path: root/src
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
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')
-rw-r--r--src/bg_palette_buffer.c102
-rw-r--r--src/memory.c85
-rw-r--r--src/save.c45
3 files changed, 232 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
diff --git a/src/memory.c b/src/memory.c
new file mode 100644
index 0000000..1ccbe54
--- /dev/null
+++ b/src/memory.c
@@ -0,0 +1,85 @@
+#include "global.h"
+
+extern void InitHeapInternal(void);
+extern void CpuClear(u32 *dest, s32 size);
+
+void InitHeap(void)
+{
+ InitHeapInternal();
+}
+
+void MemoryClear8(u8 *dest, s32 size)
+{
+ while (size > 0)
+ {
+ size -= 1;
+ *dest++ = 0;
+ }
+}
+
+void MemoryClear16(u16 *dest, s32 size)
+{
+ while (size > 0)
+ {
+ size -= 2;
+ *dest++ = 0;
+ }
+}
+void MemoryClear32(u32 *dest, s32 size)
+{
+ CpuClear(dest, size);
+}
+
+void MemoryFill8(u8 *dest, u8 value, s32 size)
+{
+ while (size > 0)
+ {
+ size -= 1;
+ *dest++ = value;
+ }
+}
+
+void MemoryFill16(u16 *dest, u16 value, s32 size)
+{
+ while (size > 0)
+ {
+ size -= 2;
+ *dest++ = value;
+ }
+}
+
+void MemoryFill32(u32 *dest, u32 value, s32 size)
+{
+ while (size > 0)
+ {
+ size -= 4;
+ *dest++ = value;
+ }
+}
+
+void MemoryCopy8(u8 *dest, u8 *src, s32 size)
+{
+ while (size > 0)
+ {
+ size -= 1;
+ *dest++ = *src++;
+ }
+}
+
+void MemoryCopy16(u16 *dest, u16 *src, s32 size)
+{
+ while (size > 0)
+ {
+ size -= 2;
+ *dest++ = *src++;
+ }
+}
+
+void MemoryCopy32(u32 *dest, u32 *src, s32 size)
+{
+ while (size > 0)
+ {
+ size -= 4;
+ *dest++ = *src++;
+ }
+} \ No newline at end of file
diff --git a/src/save.c b/src/save.c
new file mode 100644
index 0000000..575d4f1
--- /dev/null
+++ b/src/save.c
@@ -0,0 +1,45 @@
+#include "global.h"
+
+extern u32 gUnknown_203B17C;
+extern u32 gUnknown_203B180;
+extern u32 gUnknown_202DE28;
+
+u32 sub_8011C1C(void)
+{
+ return gUnknown_203B17C;
+}
+
+void sub_8011C28(u32 in)
+{
+ gUnknown_203B17C = in;
+}
+
+u32 sub_8011C34(void)
+{
+ return gUnknown_202DE28;
+}
+
+void sub_8011C40(u32 in)
+{
+ gUnknown_202DE28 = in;
+}
+
+u32 sub_8011C4C(void)
+{
+ return gUnknown_203B180;
+}
+
+void sub_8011C58(u32 *out, u32 len)
+{
+ u32 sum = 0;
+ s32 i = len / 4;
+ if (i > 1)
+ {
+ u32 *ptr = &out[1];
+ --i;
+ do
+ sum += *ptr++;
+ while (--i);
+ }
+ *out = sum;
+} \ No newline at end of file