diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index ede1a2eb..d11044dd 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -40902,7 +40902,7 @@ sStaticDisposer__Q33EGG17CoreControllerMgr11T__Disposer = .sbss:0x805767AC; // t CoreControllerFactory__3EGG = .sbss:0x805767B0; // type:object size:0x4 data:4byte sConnectCallback__Q23EGG17CoreControllerMgr = .sbss:0x805767B4; // type:object size:0x4 data:4byte sUseBuiltinWpadAllocator__Q23EGG17CoreControllerMgr = .sbss:0x805767B8; // type:object size:0x1 data:byte -TODO_Allocator__3EGG = .sbss:0x805767BC; // type:object size:0x4 data:4byte +sWPADAllocator__3EGG = .sbss:0x805767BC; // type:object size:0x4 data:4byte zero__Q23EGG8Vector2f = .sbss:0x805767C0; // type:object size:0x8 data:float ex__Q23EGG8Vector2f = .sbss:0x805767C8; // type:object size:0x8 data:float ey__Q23EGG8Vector2f = .sbss:0x805767D0; // type:object size:0x8 data:float diff --git a/include/egg/core/eggController.h b/include/egg/core/eggController.h index ac43d1c9..091a88ce 100644 --- a/include/egg/core/eggController.h +++ b/include/egg/core/eggController.h @@ -128,7 +128,7 @@ public: /* 80499be0 */ CoreController *getNthController(s32); static void *allocThunk(size_t size); - static void deleteThunk(void *ptr); + static int deleteThunk(void *ptr); /* 80499cd0 */ static void connectCallback(s32, s32); /* 80499d10 */ CoreControllerMgr(); diff --git a/src/egg/core/eggController.cpp b/src/egg/core/eggController.cpp index bb032446..3d904934 100644 --- a/src/egg/core/eggController.cpp +++ b/src/egg/core/eggController.cpp @@ -1,4 +1,5 @@ #include "egg/core/eggController.h" +#include "egg/core/eggAllocator.h" #include "MSL_C/string.h" #include "rvl/VI.h" @@ -11,7 +12,7 @@ void *CoreControllerFactory; // TODO ConnectCallback CoreControllerMgr::sConnectCallback; // This controls whether EggController registers an allocator within the WPAD driver bool CoreControllerMgr::sUseBuiltinWpadAllocator; -void *TODO_Allocator; // TODO +static Allocator *sWPADAllocator; /* 0x80498F90 */ void CoreStatus::init() { memset(this, 0, sizeof(CoreStatus)); @@ -174,10 +175,12 @@ extern "C" void fn_803DB1E0(s32 channel, bool arg); } /* 0x80499C70 */ void *CoreControllerMgr::allocThunk(size_t size) { - return nullptr; // TODO + return sWPADAllocator->alloc(size); } -/* 0x80499C90 */ void CoreControllerMgr::deleteThunk(void *ptr) { - // TODO + +/* 0x80499C90 */ int CoreControllerMgr::deleteThunk(void *ptr) { + sWPADAllocator->free(ptr); + return 1; } /* 0x80499CD0 */ void CoreControllerMgr::connectCallback(int a1, int a2) { @@ -191,7 +194,7 @@ extern "C" void fn_803DB1E0(s32 channel, bool arg); const int idxes[] = {0, 1, 2, 3}; if (sUseBuiltinWpadAllocator == false) { // TODO I just want the string in .data already - TODO_Allocator = (void*)"EGG::CoreControllerMgr"; + // TODO_Allocator = (void*)"EGG::CoreControllerMgr"; // TODO create heap, register allocator thunks } // init KPAD