From f18777bd8f8b34bf5541be31e80686f835a3682a Mon Sep 17 00:00:00 2001 From: Max Date: Sun, 18 Oct 2020 18:13:02 -0400 Subject: add headers, and mark internal functions as static --- asm/sbss_2.s | 9 ++-- include/Runtime/__mem.h | 16 ++++++++ include/SDK/MEM/mem_expHeap.h | 31 ++++++++++++++ include/SDK/mem.h | 14 +++++++ include/code_801DAAE0.h | 42 +++++-------------- src/code_801DAAE0.cpp | 95 ++++++++++++++++++++----------------------- 6 files changed, 118 insertions(+), 89 deletions(-) create mode 100644 include/Runtime/__mem.h create mode 100644 include/SDK/MEM/mem_expHeap.h create mode 100644 include/SDK/mem.h diff --git a/asm/sbss_2.s b/asm/sbss_2.s index 5e6e650..ec0565e 100644 --- a/asm/sbss_2.s +++ b/asm/sbss_2.s @@ -1,11 +1,8 @@ .section .sbss, "wa" # 0x80474F00 - 0x80643050 -.global lbl_8063F2D8 -lbl_8063F2D8: - .skip 0x4 -.global lbl_8063F2DC -lbl_8063F2DC: - .skip 0x4 +.global lbl_8063F2DE +lbl_8063F2DE: + .skip 0x2 .global lbl_8063F2E0 lbl_8063F2E0: .skip 0x8 diff --git a/include/Runtime/__mem.h b/include/Runtime/__mem.h new file mode 100644 index 0000000..99d53b0 --- /dev/null +++ b/include/Runtime/__mem.h @@ -0,0 +1,16 @@ +#ifndef POKEREVO___MEM_H +#define POKEREVO___MEM_H + + +#ifdef __cplusplus +extern "C" { +#endif + +void *memset(void *s, int c, size_t n); +void *memcpy(void *dest, const void *src, size_t n); + +#ifdef __cplusplus +} +#endif + +#endif //POKEREVO___MEM_H diff --git a/include/SDK/MEM/mem_expHeap.h b/include/SDK/MEM/mem_expHeap.h new file mode 100644 index 0000000..f28b02c --- /dev/null +++ b/include/SDK/MEM/mem_expHeap.h @@ -0,0 +1,31 @@ +#ifndef POKEREVO_MEM_EXPHEAP_H +#define POKEREVO_MEM_EXPHEAP_H + + +#ifdef __cplusplus +extern "C" { +#endif + +// TODO: replace void* with type definition +typedef void *MEMHeapHandle; +typedef void (*MEMHeapVisitor)(void *memBlock, MEMHeapHandle heap, u32 userParam); + +extern MEMHeapHandle lbl_8063E8E8; +extern MEMHeapHandle lbl_8063E8EC; + +MEMHeapHandle MEMCreateExpHeapEx(void* p1, u32 p2, u16 p3); +u16 MEMSetGroupIDForExpHeap(MEMHeapHandle heap, u16 groupID); +void *MEMAllocFromExpHeapEx(MEMHeapHandle heap, u32 size, int alignment); +u32 MEMResizeForMBlockExpHeap(MEMHeapHandle heap, void *memBlock, u32 size); +void MEMFreeToExpHeap(MEMHeapHandle heap, void *memBlock); +u32 MEMGetSizeForMBlockExpHeap(const void *memBlock); +u32 MEMGetTotalFreeSizeForExpHeap(MEMHeapHandle heap); +u16 MEMGetGroupIDForMBlockExpHeap(const void *memBlock); +void MEMVisitAllocatedForExpHeap(MEMHeapHandle heap, MEMHeapVisitor visitor, u32 userParam); + + +#ifdef __cplusplus +} +#endif + +#endif //POKEREVO_MEM_EXPHEAP_H diff --git a/include/SDK/mem.h b/include/SDK/mem.h new file mode 100644 index 0000000..7bcbe6d --- /dev/null +++ b/include/SDK/mem.h @@ -0,0 +1,14 @@ +#ifndef POKEREVO_MEM_H +#define POKEREVO_MEM_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "MEM/mem_expHeap.h" + +#ifdef __cplusplus +} +#endif + +#endif //POKEREVO_MEM_H diff --git a/include/code_801DAAE0.h b/include/code_801DAAE0.h index 0382a63..1647bcf 100644 --- a/include/code_801DAAE0.h +++ b/include/code_801DAAE0.h @@ -5,24 +5,8 @@ extern "C" { #endif -typedef void *MEMHeapHandle; +#include "SDK/mem.h" - -struct unkClass -{ - u8 unk0; - MEMHeapHandle unk4; - u32 unk8; -}; - -struct unkClass2 -{ - MEMHeapHandle heap; - u16 groupID; - u32 unk8; -}; - -unkClass* func_801DAAE0(void); BOOL func_801DAB28(void); void func_801DAB30(void); MEMHeapHandle func_801DAB78(void* p1, u32 p2, u16 p3); @@ -31,25 +15,21 @@ MEMHeapHandle func_801DAC14(MEMHeapHandle p1); u16 func_801DAC44(u16 p1); u16 func_801DAC90(MEMHeapHandle heap, u16 groupID); void* func_801DAC94(MEMHeapHandle heap, u32 size); -void* lbl_801DAC9C(MEMHeapHandle heap, u32 size, int fill); void* func_801DAD00(MEMHeapHandle heap, u32 size); void* func_801DAD08(MEMHeapHandle heap, u32 size, int alignment); void* func_801DAD0C(MEMHeapHandle heap, u32 size, int alignment); -BOOL func_801DAD1C(MEMHeapHandle heap, void *memBlock, u32 size); -void func_801DAD48(MEMHeapHandle heap, void *memBlock); -u32 func_801DAD58(u32, const void *memBlock); -u32 func_801DAD60(MEMHeapHandle heap); -void *func_801DAD64(size_t size); -void *func_801DAD98(u32 size); -void *func_801DADCC(u32 size, int alignment); -void *func_801DAE10(u32 size, int alignment); -BOOL func_801DAE60(void *memBlock, u32 size); -void func_801DAEA4(void *memBlock); -u32 func_801DAEE0(const void *memBlock); +void func_801DAD48(MEMHeapHandle heap, void* memBlock); +u32 func_801DAD58(u32, const void* memBlock); +void* func_801DAD64(size_t size); +void* func_801DAD98(u32 size); +void* func_801DADCC(u32 size, int alignment); +void* func_801DAE10(u32 size, int alignment); +BOOL func_801DAE60(void* memBlock, u32 size); +void func_801DAEA4(void* memBlock); +u32 func_801DAEE0(const void* memBlock); u32 func_801DAEF8(void); -void lbl_801DAF1C(void *memBlock, MEMHeapHandle, u32 p3); void func_801DAF70(MEMHeapHandle heap, u16 groupID); -void func_801DAFAC(void *dest, const void *src, size_t n); +void func_801DAFAC(void* dest, const void* src, size_t n); void func_801DAEA4(void*); #ifdef __cplusplus diff --git a/src/code_801DAAE0.cpp b/src/code_801DAAE0.cpp index 4527388..03f47ce 100644 --- a/src/code_801DAAE0.cpp +++ b/src/code_801DAAE0.cpp @@ -1,44 +1,35 @@ #include "types.h" #include "unkStruct.h" #include "code_801DAAE0.h" - -// TODO: C or C++ +#include "Runtime/__mem.h" +#include "SDK/mem.h" extern "C" { +struct unkClass +{ + u8 unk0; + MEMHeapHandle unk4; + u32 unk8; +}; -// TODO: define, don't reference -extern MEMHeapHandle lbl_8063F2D8; -extern u16 lbl_8063F2DC; - -// TODO: move, determine actual type definition -typedef void (*MEMHeapVisitor)(void *memBlock, MEMHeapHandle heap, u32 userParam); - -void *memset(void *s, int c, size_t n); -void *memcpy(void *dest, const void *src, size_t n); -MEMHeapHandle MEMCreateExpHeapEx(void* p1, u32 p2, u16 p3); -u16 MEMSetGroupIDForExpHeap(MEMHeapHandle heap, u16 groupID); -void *MEMAllocFromExpHeapEx(MEMHeapHandle heap, u32 size, int alignment); -u32 MEMResizeForMBlockExpHeap(MEMHeapHandle heap, void *memBlock, u32 size); -void MEMFreeToExpHeap(MEMHeapHandle heap, void *memBlock); -u32 MEMGetSizeForMBlockExpHeap(const void *memBlock); -u32 MEMGetTotalFreeSizeForExpHeap(MEMHeapHandle heap); -u16 MEMGetGroupIDForMBlockExpHeap(const void *memBlock); -void MEMVisitAllocatedForExpHeap(MEMHeapHandle heap, MEMHeapVisitor visitor, u32 userParam); - +struct unkClass2 +{ + MEMHeapHandle heap; + u16 groupID; + u32 unk8; +}; #define ARR_SIZE 16 -static unkClass gUnk804912B0[ARR_SIZE]; +unkClass gUnk804912B0[ARR_SIZE]; -static unkStruct gUnk8063F2D0(1, 4, 0); -static u8 gUnk8063F2D6; -static u8 gUnk8063F2D7; -// TODO: move to headers -extern MEMHeapHandle lbl_8063E8E8; -extern MEMHeapHandle lbl_8063E8EC; +unkStruct gUnk8063F2D0(1, 4, 0); +u8 gUnk8063F2D6; +u8 gUnk8063F2D7; +MEMHeapHandle gUnk8063F2D8; +u16 gUnk8063F2DC; - -unkClass* func_801DAAE0(void) +static unkClass* func_801DAAE0(void) { for (u32 i = 0; i < ARR_SIZE; i++) if (gUnk804912B0[i].unk0 == 0) @@ -54,8 +45,8 @@ BOOL func_801DAB28(void) void func_801DAB30(void) { memset(gUnk804912B0, 0, sizeof(gUnk804912B0)); - lbl_8063F2D8 = 0; - lbl_8063F2DC = 0; + gUnk8063F2D8 = 0; + gUnk8063F2DC = 0; gUnk8063F2D6 = 1; gUnk8063F2D7 = 0; } @@ -76,22 +67,22 @@ MEMHeapHandle func_801DAB78(void* p1, u32 p2, u16 p3) MEMHeapHandle func_801DAC0C(void) { - return lbl_8063F2D8; + return gUnk8063F2D8; } MEMHeapHandle func_801DAC14(MEMHeapHandle p1) { MEMHeapHandle r3 = func_801DAC0C(); - lbl_8063F2D8 = p1; + gUnk8063F2D8 = p1; return r3; } u16 func_801DAC44(u16 p1) { - u16 r31 = lbl_8063F2DC; - lbl_8063F2DC = p1; + u16 r31 = gUnk8063F2DC; + gUnk8063F2DC = p1; MEMSetGroupIDForExpHeap(lbl_8063E8E8, (u16)(p1 & 0xff)); - MEMSetGroupIDForExpHeap(lbl_8063E8EC, (u16)(lbl_8063F2DC & 0xff)); + MEMSetGroupIDForExpHeap(lbl_8063E8EC, (u16)(gUnk8063F2DC & 0xff)); return r31; } @@ -105,7 +96,7 @@ void* func_801DAC94(MEMHeapHandle heap, u32 size) return MEMAllocFromExpHeapEx(heap, size, 32); } -void* lbl_801DAC9C(MEMHeapHandle heap, u32 size, int fill) +static void* lbl_801DAC9C(MEMHeapHandle heap, u32 size, int fill) { void* r31 = func_801DAC94(heap, size); if (!r31) @@ -129,59 +120,59 @@ void* func_801DAD0C(MEMHeapHandle heap, u32 size, int alignment) return MEMAllocFromExpHeapEx(heap, size, (alignment > 0) ? -alignment : alignment); } -BOOL func_801DAD1C(MEMHeapHandle heap, void *memBlock, u32 size) +static BOOL func_801DAD1C(MEMHeapHandle heap, void* memBlock, u32 size) { return MEMResizeForMBlockExpHeap(heap, memBlock, size) != 0; } -void func_801DAD48(MEMHeapHandle heap, void *memBlock) +void func_801DAD48(MEMHeapHandle heap, void* memBlock) { if (memBlock) MEMFreeToExpHeap(heap, memBlock); } -u32 func_801DAD58(u32, const void *memBlock) +u32 func_801DAD58(u32, const void* memBlock) { return MEMGetSizeForMBlockExpHeap(memBlock); } -u32 func_801DAD60(MEMHeapHandle heap) +static u32 func_801DAD60(MEMHeapHandle heap) { return MEMGetTotalFreeSizeForExpHeap(heap); } -void *func_801DAD64(size_t size) +void* func_801DAD64(size_t size) { return func_801DAC94(func_801DAC0C(), size); } -void *func_801DAD98(u32 size) +void* func_801DAD98(u32 size) { return func_801DAD00(func_801DAC0C(), size); } -void *func_801DADCC(u32 size, int alignment) +void* func_801DADCC(u32 size, int alignment) { return func_801DAD08(func_801DAC0C(), size, alignment); } -void *func_801DAE10(u32 size, int alignment) +void* func_801DAE10(u32 size, int alignment) { return func_801DAD08(func_801DAC0C(), size, (alignment > 0) ? -alignment : alignment); } -BOOL func_801DAE60(void *memBlock, u32 size) +BOOL func_801DAE60(void* memBlock, u32 size) { return func_801DAD1C(func_801DAC0C(), memBlock, size); } -void func_801DAEA4(void *memBlock) +void func_801DAEA4(void* memBlock) { if (memBlock) func_801DAD48(func_801DAC0C(), memBlock); } -u32 func_801DAEE0(const void *memBlock) +u32 func_801DAEE0(const void* memBlock) { if (memBlock == NULL) return 0; @@ -193,7 +184,7 @@ u32 func_801DAEF8(void) return func_801DAD60(func_801DAC0C()); } -void lbl_801DAF1C(void *memBlock, MEMHeapHandle, u32 p3) +static void lbl_801DAF1C(void* memBlock, MEMHeapHandle, u32 p3) { if (MEMGetGroupIDForMBlockExpHeap(memBlock) == ((unkClass2 *)p3)->groupID) MEMFreeToExpHeap(((unkClass2 *)p3)->heap, memBlock); @@ -208,7 +199,7 @@ void func_801DAF70(MEMHeapHandle heap, u16 groupID) MEMVisitAllocatedForExpHeap(heap, lbl_801DAF1C, (u32)¶m); } -void func_801DAFAC(register void *dest, register const void *src, register size_t n) +void func_801DAFAC(register void* dest, register const void* src, register size_t n) { if ((u32)dest & 0x1f || (u32)src & 0x1f || n & 0x1f) { memcpy(dest, src, n); @@ -244,4 +235,4 @@ void func_801DAFAC(register void *dest, register const void *src, register size_ } } -} +} //extern "C" -- cgit v1.2.3