summaryrefslogtreecommitdiff
path: root/arm9/src
diff options
context:
space:
mode:
authorred031000 <rubenru09@aol.com>2020-05-13 00:46:44 +0100
committerred031000 <rubenru09@aol.com>2020-05-13 00:46:44 +0100
commita91b629bb3f22493f580e5f730070980e2552039 (patch)
treed218a3e27922a804e4053d2771ddec8d90e6a14b /arm9/src
parent1c17de2c6cc76626d357a09440e75e2431fdebdd (diff)
parenta2d42319db0f2b63f7113702571d754b749375d8 (diff)
Merge branch 'master' of https://github.com/martmists/pokediamond into overlay69
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;
}