diff options
author | nullableVoidPtr <30564701+nullableVoidPtr@users.noreply.github.com> | 2018-10-17 11:28:27 +0800 |
---|---|---|
committer | void <30564701+nullableVoidPtr@users.noreply.github.com> | 2018-11-18 18:29:52 +0800 |
commit | 961ab7ccaf4d175189cd42fcddca1336f3d91bad (patch) | |
tree | a223139bf9282e5a3636810ae78dccf5095e2100 /src | |
parent | 9e5147a9adf9dc0aba908f38637cd0b4da2cbbcc (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.c | 102 | ||||
-rw-r--r-- | src/memory.c | 85 | ||||
-rw-r--r-- | src/save.c | 45 |
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 |