summaryrefslogtreecommitdiff
path: root/arm9/src
diff options
context:
space:
mode:
authorRevo <projectrevotpp@hotmail.com>2020-05-12 19:43:56 -0400
committerGitHub <noreply@github.com>2020-05-12 19:43:56 -0400
commita2d42319db0f2b63f7113702571d754b749375d8 (patch)
tree98a87a070fda41d930a545924fd1df0d79af8e03 /arm9/src
parentf4ea052ed0b4e3b0d6a3c12bce46ee53228a9bc0 (diff)
parentfed76ad0f534f653dcc6bb2cd11bb2380783494c (diff)
Merge pull request #81 from PikalaxALT/pikalax_work
Modules 65-68
Diffstat (limited to 'arm9/src')
-rw-r--r--arm9/src/FUN_020910A4.c30
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;
}