diff --git a/config/SOUE01/splits.txt b/config/SOUE01/splits.txt index 4973c05f..1fa19e65 100644 --- a/config/SOUE01/splits.txt +++ b/config/SOUE01/splits.txt @@ -336,7 +336,7 @@ egg/core/eggAssertHeap.cpp: egg/core/eggDisposer.cpp: .text start:0x80496830 end:0x80496904 - .data start:0x8056EA30 end:0x8056EA40 + .data start:0x8056EA30 end:0x8056EA3C egg/core/eggThread.cpp: .text start:0x80496910 end:0x80496DD8 @@ -392,6 +392,7 @@ egg/core/eggController.cpp: .ctors start:0x804DB98C end:0x804DB990 .rodata start:0x804FBA20 end:0x804FBA30 .data start:0x8056EB90 end:0x8056EC88 + .sbss start:0x805767A8 end:0x805767C0 .sdata2 start:0x8057F338 end:0x8057F360 .bss start:0x80673B40 end:0x80674C00 diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index bf779615..4a78cdec 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -26334,9 +26334,9 @@ createInstance__Q23EGG17CoreControllerMgrFv = .text:0x80499B80; // type:function deleteInstance__Q23EGG17CoreControllerMgrFv = .text:0x80499BD0; // type:function size:0x10 getNthController__Q23EGG17CoreControllerMgrFi = .text:0x80499BE0; // type:function size:0x74 errRangeOver__Q23EGG32TBufferFv = .text:0x80499C60; // type:function size:0x4 -alloc__Q23EGG27@unnamed@eggController_cpp@FUl = .text:0x80499C70; // type:function size:0x18 -free__Q23EGG27@unnamed@eggController_cpp@FPv = .text:0x80499C90; // type:function size:0x38 -connectCallback__Q23EGG17CoreControllerMgrFll = .text:0x80499CD0; // type:function size:0x3C +allocThunk__Q23EGG17CoreControllerMgrFUl = .text:0x80499C70; // type:function size:0x18 +deleteThunk__Q23EGG17CoreControllerMgrFPv = .text:0x80499C90; // type:function size:0x38 +connectCallback__Q23EGG17CoreControllerMgrFii = .text:0x80499CD0; // type:function size:0x3C __ct__Q23EGG17CoreControllerMgrFv = .text:0x80499D10; // type:function size:0x320 __dt__Q23EGG32TBufferFv = .text:0x8049A030; // type:function size:0x78 __dt__Q23EGG29TBufferFv = .text:0x8049A0B0; // type:function size:0x78 @@ -37114,10 +37114,10 @@ lbl_8056EB90 = .data:0x8056EB90; // type:object size:0x18 __vt__Q23EGG19ControllerRumbleMgr = .data:0x8056EBA8; // type:object size:0xC __vt__Q23EGG20ControllerRumbleUnit = .data:0x8056EBB4; // type:object size:0xC __vt__Q23EGG14NullController = .data:0x8056EBC0; // type:object size:0x38 -lbl_8056EBF8 = .data:0x8056EBF8; // type:object size:0x10 -lbl_8056EC08 = .data:0x8056EC08; // type:object size:0x1C -lbl_8056EC24 = .data:0x8056EC24; // type:object size:0x1C -lbl_8056EC40 = .data:0x8056EC40; // type:object size:0x10 +__vt__Q23EGG17CoreControllerMgr = .data:0x8056EBF8; // type:object size:0x10 +__vt__Q23EGG29TBuffer = .data:0x8056EC08; // type:object size:0x1C +__vt__Q23EGG32TBuffer = .data:0x8056EC24; // type:object size:0x1C +__vt__Q33EGG17CoreControllerMgr11T__Disposer = .data:0x8056EC40; // type:object size:0x10 __vt__Q23EGG14CoreController = .data:0x8056EC50; // type:object size:0x38 lbl_8056EC88 = .data:0x8056EC88; // type:object size:0x78 lbl_8056ED00 = .data:0x8056ED00; // type:object size:0x30 @@ -40897,12 +40897,12 @@ sTickPeriod__Q23EGG7Display = .sbss:0x80576788; // type:object size:0x4 data:4by spSelector = .sbss:0x80576790; // type:object size:0x4 data:4byte lbl_80576798 = .sbss:0x80576798; // type:object size:0x4 data:4byte lbl_8057679C = .sbss:0x8057679C; // type:object size:0xC -lbl_805767A8 = .sbss:0x805767A8; // type:object size:0x4 data:4byte -lbl_805767AC = .sbss:0x805767AC; // type:object size:0x4 data:4byte -lbl_805767B0 = .sbss:0x805767B0; // type:object size:0x4 data:4byte -lbl_805767B4 = .sbss:0x805767B4; // type:object size:0x4 data:4byte -lbl_805767B8 = .sbss:0x805767B8; // type:object size:0x1 data:byte -lbl_805767BC = .sbss:0x805767BC; // type:object size:0x4 data:4byte +sInstance__Q23EGG17CoreControllerMgr = .sbss:0x805767A8; // type:object size:0x4 data:4byte +sStaticDisposer__Q33EGG17CoreControllerMgr11T__Disposer = .sbss:0x805767AC; // type:object size:0x4 data:4byte +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 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/configure.py b/configure.py index 0ebd8731..d563bc4f 100644 --- a/configure.py +++ b/configure.py @@ -358,11 +358,10 @@ config.libs = [ Object(Matching, "egg/core/eggExpHeap.cpp"), Object(NonMatching, "egg/core/eggFrmHeap.cpp"), Object(NonMatching, "egg/core/eggAssertHeap.cpp"), - Object(NonMatching, "egg/core/eggDisposer.cpp"), + Object(Matching, "egg/core/eggDisposer.cpp"), Object(Matching, "egg/core/eggThread.cpp"), Object(NonMatching, "egg/core/eggUnk.cpp"), Object(NonMatching, "egg/core/eggSystem.cpp"), - Object(Matching, "egg/core/eggDisposer.cpp"), Object(Matching, "egg/core/eggDisplay.cpp"), Object(Matching, "egg/core/eggColorFader.cpp"), Object(Matching, "egg/core/eggAsyncDisplay.cpp"), diff --git a/include/egg/core/eggController.h b/include/egg/core/eggController.h index 1f3e7e9c..dd886686 100644 --- a/include/egg/core/eggController.h +++ b/include/egg/core/eggController.h @@ -17,6 +17,8 @@ class ControllerRumbleMgr; // To Be Filled out enum eCoreDevType {}; +typedef void (*ConnectCallback)(int args[]); + class CoreStatus { public: /* 0x00 */ u8 field_0x00[0x0C]; @@ -40,9 +42,9 @@ class CoreController { public: // vtable 0x000 | 8056ec50 /* vt 0x08 | 80064920 */ virtual void setPosParam(f32, f32); - /* vt 0x0C | 8049a940 */ virtual void setHoriParam(f32, f32); - /* vt 0x10 | 8049a930 */ virtual void setDistParam(f32, f32); - /* vt 0x14 | 8049a920 */ virtual void setAccParam(f32, f32); + /* vt 0x0C | 8049a940 */ virtual void setHoriParam(f32, f32) {} + /* vt 0x10 | 8049a930 */ virtual void setDistParam(f32, f32) {} + /* vt 0x14 | 8049a920 */ virtual void setAccParam(f32, f32) {} /* vt 0x18 | 80059820 */ virtual bool isPressed(u32 mask); /* vt 0x1C | 80059a60 */ virtual bool isAnyPressed(u32 mask); /* vt 0x20 | 80014e30 */ virtual bool isTriggered(u32 mask); @@ -99,7 +101,6 @@ public: class NullController : public CoreController { public: NullController() { - // This could also be in CoreController unk[92] = 0xfe; } // idk this has NO effect on anything @@ -110,7 +111,7 @@ class ControllerRumbleUnit { public: // 0x00 vtable | 8056ebb4 inline ControllerRumbleUnit() { init(); } - /* vt 0x08 | 8049a8e0 */ virtual ~ControllerRumbleUnit(); + /* vt 0x08 | 8049a8e0 */ virtual ~ControllerRumbleUnit() {} public: /* 0x04 */ const char *mPattern; @@ -130,7 +131,7 @@ public: class ControllerRumbleMgr { public: // 0x00 vtable | 8056eba8 - /* vt 0x08 | 8049a8a0 */ virtual ~ControllerRumbleMgr(); + /* vt 0x08 | 8049a8a0 */ virtual ~ControllerRumbleMgr() {} public: /* 0x04 */ nw4r::ut::List mActiveUnitList; @@ -147,17 +148,16 @@ public: }; class CoreControllerMgr { public: - struct T__Disposer { - Disposer mDisposer; - /* vt 0x08 | 80499b00 */ virtual ~T__Disposer() {} + struct T__Disposer : Disposer { + /* vt 0x08 | 80499b00 */ virtual ~T__Disposer(); /* 805767ac */ static T__Disposer *sStaticDisposer; }; // Disposer Vtable: 8056ec40 /* 0x0000 */ T__Disposer mDisposer; // for the static T__Disposer public: // 0x0010 vtable | 8056ebf8 - /* vt 0x08 | 8049a130 */ void beginFrame(); - /* vt 0x0C | 8049a1e0 */ void endFrame(); + /* vt 0x08 | 8049a130 */ virtual void beginFrame(); + /* vt 0x0C | 8049a1e0 */ virtual void endFrame(); public: /* 0x0014 */ TBuffer mControllers; @@ -169,14 +169,18 @@ public: /* 80499b80 */ static CoreControllerMgr *createInstance(); /* 80499bd0 */ static void deleteInstance(); /* 80499be0 */ CoreController *getNthController(s32); - /* 80499cd0 */ void connectCallback(s32, s32); + + static void *allocThunk(size_t size); + static void deleteThunk(void *ptr); + + /* 80499cd0 */ static void connectCallback(s32, s32); /* 80499d10 */ CoreControllerMgr(); public: /* 805767a8 */ static CoreControllerMgr *sInstance; /* 805767b0 */ static CoreController *(*sCoreControllerFactory)(); - /* 805767b4 */ static void (*sConnectCallback)(s32, s32); - /* 805767b8 */ static bool sUnk; + /* 805767b4 */ static ConnectCallback sConnectCallback; + /* 805767b8 */ static bool sUseBuiltinWpadAllocator; // /* 805767bc */ static sAllocator; // defined in cpp file // Other Stuff thats autogen (buffers/sinit/etc) diff --git a/include/egg/prim/eggBuffer.h b/include/egg/prim/eggBuffer.h index da9fe1ed..c757d2af 100644 --- a/include/egg/prim/eggBuffer.h +++ b/include/egg/prim/eggBuffer.h @@ -11,8 +11,10 @@ class TBuffer { public: // vtable 0x00 /* vt 0x08 */ virtual ~TBuffer() { - delete[] mBuffer; - mBuffer = nullptr; + if (mBuffer != nullptr) { + delete[] mBuffer; + mBuffer = nullptr; + } } /* vt 0x0C */ virtual void allocate(int n, int) { mSize = n; diff --git a/src/egg/core/eggController.cpp b/src/egg/core/eggController.cpp index cc88cb57..4ec96e43 100644 --- a/src/egg/core/eggController.cpp +++ b/src/egg/core/eggController.cpp @@ -1,21 +1,29 @@ #include "egg/core/eggController.h" #include "MSL_C/string.h" +#include "rvl/VI.h" -extern EGG::CoreControllerMgr *lbl_805767A8; extern EGG::CoreControllerMgr *lbl_805767AC; -const char *str = "EGG::CoreControllerMgr"; // TODO - EGG::NullController null_controller; -namespace EGG -{ +// TODO vtable order in this TU is still messed up +// TODO NullController implementation -void CoreStatus::init() { +namespace EGG { + +CoreControllerMgr *CoreControllerMgr::sInstance; +CoreControllerMgr::T__Disposer *CoreControllerMgr::T__Disposer::sStaticDisposer; +void *CoreControllerFactory; // TODO +ConnectCallback CoreControllerMgr::sConnectCallback; +// This controls whether EggController registers an allocator within the WPAD driver +bool CoreControllerMgr::sUseBuiltinWpadAllocator; +void *TODO_Allocator; // TODO + +/* 0x80498F90 */ void CoreStatus::init() { memset(this, 0, sizeof(CoreStatus)); } -u32 CoreStatus::getFSStickButton() const { +/* 0x80498FA0 */ u32 CoreStatus::getFSStickButton() const { f32 button = this->fsStickButton; u32 result = 0; // TODO what are these flags and why is this code so weird? @@ -44,7 +52,7 @@ u32 CoreStatus::getFSStickButton() const { return result; } -CoreController::CoreController(): mDpdPos(), mAccel(), mAccelFlags(nullptr) { +/* 0x80499050 */ CoreController::CoreController() : mDpdPos(), mAccel(), mAccelFlags(nullptr) { this->mRumbleMgr = nullptr; this->mButtonHeld = 0; this->mButtonTriggered = 0; @@ -53,7 +61,7 @@ CoreController::CoreController(): mDpdPos(), mAccel(), mAccelFlags(nullptr) { this->mFlag.makeAllZero(); } -void CoreController::sceneReset() { +/* 0x804990B0 */ void CoreController::sceneReset() { this->mAccel.set(0.0, 0.0, 0.0); this->mDpdPos.x = 0.0; this->mDpdPos.y = 0.0; @@ -75,117 +83,147 @@ void CoreController::sceneReset() { this->stopRumbleMgr(); } -Vector2f CoreController::getDpdRawPos() const { +/* 0x80499170 */ Vector2f CoreController::getDpdRawPos() const { return Vector2f(this->coreStatus[0].dpdRawX, this->coreStatus[0].dpdRawY); } -s32 CoreController::getDpdDistance() const { +/* 0x80499190 */ s32 CoreController::getDpdDistance() const { return this->coreStatus[0].dpdDistance; } // TODO extern "C" void fn_803DB1E0(s32 channel, bool arg); -void CoreController::startMotor() { +/* 0x804991A0 */ void CoreController::startMotor() { fn_803DB1E0(mChannelID, true); } -void CoreController::stopMotor() { +/* 0x804991B0 */ void CoreController::stopMotor() { fn_803DB1E0(mChannelID, false); } -void CoreController::createRumbleMgr(u8 numUnits) { +/* 0x804991C0 */ void CoreController::createRumbleMgr(u8 numUnits) { this->mRumbleMgr = new ControllerRumbleMgr(); this->mRumbleMgr->createUnit(numUnits, this); } -void CoreController::startPatternRumble(const char *pattern, int duration, bool bGrabActive) { +/* 0x80499220 */ void CoreController::startPatternRumble(const char *pattern, int duration, bool bGrabActive) { if (this->mRumbleMgr) { this->mRumbleMgr->startPattern(pattern, duration, bGrabActive); } } -void CoreController::stopRumbleMgr() { +/* 0x80499240 */ void CoreController::stopRumbleMgr() { if (this->mRumbleMgr) { this->mRumbleMgr->stop(); } } -CoreStatus *CoreController::getCoreStatus(s32 idx) { +/* 0x80499260 */ CoreStatus *CoreController::getCoreStatus(s32 idx) { return &this->coreStatus[idx]; } -void CoreController::calc_posture_matrix(Matrix34f &mat, bool someBool) { +/* 0x80499270 */ void CoreController::calc_posture_matrix(Matrix34f &mat, bool someBool) { if (!someBool || this->mAccelFlags.onBit(7)) { Vector3f vec = Vector3f(-mat(2, 3), -mat(2, 2), -mat(2, 1)); Vector3f vec3 = vec; vec.normalise(); - // TODO + // TODO lots of inlined math } } -void CoreController::beginFrame(void *padStatus) { +/* 0x80499660 */ void CoreController::beginFrame(void *padStatus) {} -} - -void CoreController::endFrame() { +/* 0x80499A60 */ void CoreController::endFrame() { this->mAccel(0) = this->coreStatus[0].accel[0]; this->mAccel(1) = this->coreStatus[0].accel[1]; this->mAccel(2) = this->coreStatus[0].accel[2]; this->mDpdPos = this->getDpdRawPos(); } -f32 CoreController::getFreeStickX() const { +/* 0x80499AC0 */ f32 CoreController::getFreeStickX() const { if (this->coreStatus[0].field_0x00[0x5C] == 0) { return 0.0; } - return ((f32*)(&this->coreStatus[0].field_0x00))[0x18]; + return ((f32 *)(&this->coreStatus[0].field_0x00))[0x18]; } -f32 CoreController::getFreeStickY() const { +/* 0x80499AE0 */ f32 CoreController::getFreeStickY() const { if (this->coreStatus[0].field_0x00[0x5C] == 0) { return 0.0; } - return ((f32*)(&this->coreStatus[0].field_0x00))[0x19]; + return ((f32 *)(&this->coreStatus[0].field_0x00))[0x19]; } -CoreControllerMgr *CoreControllerMgr::createInstance() { - if (lbl_805767A8 == nullptr) { +/* 0x80499B00 */ CoreControllerMgr::T__Disposer::~T__Disposer() { + if (this == CoreControllerMgr::T__Disposer::sStaticDisposer) { + deleteInstance(); + } +} + +/* 0x80499B80 */ CoreControllerMgr *CoreControllerMgr::createInstance() { + if (CoreControllerMgr::sInstance == nullptr) { CoreControllerMgr *mgr = new CoreControllerMgr(); - lbl_805767A8 = mgr; + CoreControllerMgr::sInstance = mgr; lbl_805767AC = mgr; } - return lbl_805767A8; + return CoreControllerMgr::sInstance; } -void CoreControllerMgr::deleteInstance() { - lbl_805767A8 = nullptr; +/* 0x80499BD0 */ void CoreControllerMgr::deleteInstance() { + CoreControllerMgr::sInstance = nullptr; lbl_805767AC = nullptr; } -EGG::CoreController *CoreControllerMgr::getNthController(s32 n) { +/* 0x80499BE0 */ EGG::CoreController *CoreControllerMgr::getNthController(s32 n) { return this->mControllers(n); } -void CoreControllerMgr::connectCallback(int a1, int a2) { - +/* 0x80499C70 */ void *CoreControllerMgr::allocThunk(size_t size) { + return nullptr; // TODO +} +/* 0x80499C90 */ void CoreControllerMgr::deleteThunk(void *ptr) { + // TODO } -CoreControllerMgr::CoreControllerMgr() { - +/* 0x80499CD0 */ void CoreControllerMgr::connectCallback(int a1, int a2) { + int args[] = {a1, a2}; + if (sConnectCallback != nullptr) { + (sConnectCallback)(args); + } } -void CoreControllerMgr::beginFrame() { +/* 0x80499D10 */ CoreControllerMgr::CoreControllerMgr() { + const int idxes[] = {0, 1, 2, 3}; + if (sUseBuiltinWpadAllocator == false) { + // TODO create heap, register allocator thunks + } + // init KPAD + beginFrame(); + endFrame(); + VIWaitForRetrace(); + + // TODO there's likely an allocate call here but it shifts the + // inline buffer methods up in the TU :( + // mControllers.allocate(4, 0); + // TODO moar +} + +/* 0x8049A130 */ void CoreControllerMgr::beginFrame() { for (int i = 0; i < mControllers.getSize(); ++i) { mControllers(i)->beginFrame(NULL); } } -void CoreControllerMgr::endFrame() { - +/* 0x8049A1E0 */ void CoreControllerMgr::endFrame() { + for (int i = 0; i < mControllers.mSize; i++) { + mControllers(i)->endFrame(); + // TODO WPADprobe + // Update device type after probe? + } } -void ControllerRumbleUnit::init() { +/* 0x8049A3B0 */ void ControllerRumbleUnit::init() { this->mPattern = nullptr; this->mPatternPos = nullptr; this->mTimer = 0; @@ -194,7 +232,7 @@ void ControllerRumbleUnit::init() { this->mFlag.makeAllZero(); } -void ControllerRumbleUnit::startPattern(const char *pattern, int duration) { +/* 0x8049A3E0 */ void ControllerRumbleUnit::startPattern(const char *pattern, int duration) { this->mPattern = pattern; this->mPatternPos = pattern; @@ -211,7 +249,7 @@ void ControllerRumbleUnit::startPattern(const char *pattern, int duration) { this->mFlag.value = ((this->mFlag.value | 0x01) & 0xfd) | 0x8; } -f32 ControllerRumbleUnit::calc() { +/* 0x8049A440 */ f32 ControllerRumbleUnit::calc() { f32 result = 0.0f; if (this->mFlag.onBit(3)) { if (this->mFlag.onBit(0)) { @@ -259,14 +297,14 @@ f32 ControllerRumbleUnit::calc() { } } -ControllerRumbleMgr::ControllerRumbleMgr() { +/* 0x8049A530 */ ControllerRumbleMgr::ControllerRumbleMgr() { this->mController = nullptr; // TODO offsetof macro List_Init(&this->mActiveUnitList, 0x1c); List_Init(&this->mInactiveUnitList, 0x1c); } -void ControllerRumbleMgr::createUnit(u8 numUnits, CoreController *ctrl) { +/* 0x8049A590 */ void ControllerRumbleMgr::createUnit(u8 numUnits, CoreController *ctrl) { for (u8 created = 0; created < numUnits; created++) { ControllerRumbleUnit *unit = new ControllerRumbleUnit(); List_Append(&this->mInactiveUnitList, unit); @@ -274,22 +312,22 @@ void ControllerRumbleMgr::createUnit(u8 numUnits, CoreController *ctrl) { this->mController = ctrl; } -void ControllerRumbleMgr::stop() { +/* 0x8049A620 */ void ControllerRumbleMgr::stop() { this->mController->stopMotor(); while (List_GetSize(&this->mActiveUnitList) != 0) { - ControllerRumbleUnit *unit = static_cast(List_GetNext(&this->mActiveUnitList, nullptr)); + ControllerRumbleUnit *unit = static_cast(List_GetNext(&this->mActiveUnitList, nullptr)); List_Remove(&this->mActiveUnitList, unit); List_Append(&this->mInactiveUnitList, unit); } } -void ControllerRumbleMgr::calc() { +/* 0x8049A690 */ void ControllerRumbleMgr::calc() { if (List_GetSize(&this->mActiveUnitList) != 0) { void *object = List_GetFirst(&this->mActiveUnitList); f32 acc = 0.0f; while (object != nullptr) { - ControllerRumbleUnit *unit = static_cast(object); + ControllerRumbleUnit *unit = static_cast(object); f32 x = unit->calc(); void *nextObject = List_GetNext(&this->mActiveUnitList, object); if (x < 0.0f) { @@ -307,48 +345,26 @@ void ControllerRumbleMgr::calc() { this->mController->stopMotor(); } } - } -void ControllerRumbleMgr::startPattern(const char *pattern, int duration, bool bGrabActive) { +/* 0x8049A7A0 */ void ControllerRumbleMgr::startPattern(const char *pattern, int duration, bool bGrabActive) { EGG::ControllerRumbleUnit *unit = getUnitFromList(bGrabActive); if (unit != nullptr) { unit->startPattern(pattern, duration); } } -ControllerRumbleUnit *ControllerRumbleMgr::getUnitFromList(bool bGrabActive) { +/* 0x8049A7F0 */ ControllerRumbleUnit *ControllerRumbleMgr::getUnitFromList(bool bGrabActive) { void *first = List_GetFirst(&this->mInactiveUnitList); if (first != nullptr) { List_Remove(&this->mInactiveUnitList, first); List_Append(&this->mActiveUnitList, first); - } else if (bGrabActive && (first = List_GetFirst(&this->mActiveUnitList), first != nullptr)) { + } else if (bGrabActive && (first = List_GetFirst(&this->mActiveUnitList), first != nullptr)) { List_Remove(&this->mActiveUnitList, first); List_Append(&this->mActiveUnitList, first); } - return static_cast(first); + return static_cast(first); } -ControllerRumbleMgr::~ControllerRumbleMgr() { - -} - -ControllerRumbleUnit::~ControllerRumbleUnit() { - -} - -void CoreController::setAccParam(f32 param1, f32 param2) { - -} - -void CoreController::setDistParam(f32 param1, f32 param2) { - -} - -void CoreController::setHoriParam(f32 param1, f32 param2) { - -} - - } // namespace EGG