diff options
author | Revo <projectrevotpp@hotmail.com> | 2020-05-12 19:43:56 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-12 19:43:56 -0400 |
commit | a2d42319db0f2b63f7113702571d754b749375d8 (patch) | |
tree | 98a87a070fda41d930a545924fd1df0d79af8e03 /arm9/src | |
parent | f4ea052ed0b4e3b0d6a3c12bce46ee53228a9bc0 (diff) | |
parent | fed76ad0f534f653dcc6bb2cd11bb2380783494c (diff) |
Merge pull request #81 from PikalaxALT/pikalax_work
Modules 65-68
Diffstat (limited to 'arm9/src')
-rw-r--r-- | arm9/src/FUN_020910A4.c | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/arm9/src/FUN_020910A4.c b/arm9/src/FUN_020910A4.c index 850486d4..d1ee68b9 100644 --- a/arm9/src/FUN_020910A4.c +++ b/arm9/src/FUN_020910A4.c @@ -1,10 +1,32 @@ #include "global.h" -void * (* gUnk021C8C70)(u32); +typedef void * (* AllocFunc)(u32 size); +typedef void (* FreeFunc)(void * ptr); +AllocFunc gUnk021C8C70; +FreeFunc gUnk021C8C74; + +// Custom allocator ARM_FUNC void* FUN_020910A4(u32 size) { - if (gUnk021C8C70 != NULL) - return gUnk021C8C70(size); - return OS_AllocFromHeap(OS_ARENA_MAIN, -1, size); + if (gUnk021C8C70 != NULL) + return gUnk021C8C70(size); + else + return OS_AllocFromHeap(OS_ARENA_MAIN, -1, size); +} + +// Custom destructor +ARM_FUNC void FUN_0209105C(void * ptr) +{ + if (gUnk021C8C74 != NULL) + gUnk021C8C74(ptr); + else + OS_FreeToHeap(OS_ARENA_MAIN, -1, ptr); +} + +// Custom alloc/free setter +ARM_FUNC void SetCustomAllocator(AllocFunc allocator, FreeFunc destructor) +{ + gUnk021C8C70 = allocator; + gUnk021C8C74 = destructor; } |