// This was taken from the Pikmin 2 decompilation project. // https://github.com/projectPiki/pikmin2/blob/main/src/Dolphin/Runtime/GCN_mem_alloc.c #include #include inline static void InitDefaultHeap() { void* arenaLo; void* arenaHi; OSReport("GCN_Mem_Alloc.c : InitDefaultHeap. No Heap Available\n"); OSReport("Metrowerks CW runtime library initializing default heap\n"); arenaLo = OSGetArenaLo(); arenaHi = OSGetArenaHi(); arenaLo = OSInitAlloc(arenaLo, arenaHi, 1); OSSetArenaLo(arenaLo); arenaLo = (void*)OSRoundUp32B(arenaLo); arenaHi = (void*)OSRoundDown32B(arenaHi); OSSetCurrentHeap(OSCreateHeap(arenaLo, arenaHi)); OSSetArenaLo(arenaLo = arenaHi); } /* * --INFO-- * Address: 800C23A8 * Size: 0000B8 */ __declspec(weak) extern void __sys_free(void* ptr) { if (__OSCurrHeap == -1) { InitDefaultHeap(); } OSFreeToHeap(__OSCurrHeap, ptr); }