summaryrefslogtreecommitdiff
path: root/arm9/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-05-12 18:23:21 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-05-12 18:23:21 -0400
commit61a7e3213a21aba6e946a0b6d4bd907bbfb21dde (patch)
tree0bcf58ef2ee30121eae2b11c026b49ee6d968b4e /arm9/src
parent1f1436119c04f510975d3729458d9218340beb9d (diff)
Additional two funcs in FUN_020910A4
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;
}