From ba5ad31b54496c79f60de9973d168efdda341def Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Fri, 18 Jun 2021 06:33:51 -0700 Subject: d_stage / d_lib (#136) * d_lib move * move / work on d_stage * add mDoExt funcs to header * d_kyeff/kyeff2, d_bg_s_poly_pass_chk * use array_size in d_stage --- src/d/d_lib.cpp | 254 +++++++++++++++++++++++++------------------------------- 1 file changed, 113 insertions(+), 141 deletions(-) (limited to 'src/d/d_lib.cpp') diff --git a/src/d/d_lib.cpp b/src/d/d_lib.cpp index b7ec2c106c..cd81232e39 100644 --- a/src/d/d_lib.cpp +++ b/src/d/d_lib.cpp @@ -6,6 +6,8 @@ #include "d/d_lib.h" #include "dol2asm.h" #include "dolphin/types.h" +#include "f_op/f_op_actor.h" +#include "m_Do/m_Do_controller_pad.h" // // Types: @@ -15,46 +17,10 @@ struct mDoMtx_stack_c { static u8 now[48]; }; -struct mDoCPd_c { - static u8 m_cpadInfo[256]; -}; - -struct fopAc_ac_c {}; - -struct dLib_time_c { - /* 80032804 */ void getTime(); - /* 80032880 */ void stopTime(); - /* 800328BC */ void startTime(); - - static u8 m_diffTime[4]; - static u8 m_stopTime[4]; -}; - struct dEvt_control_c { /* 800434D8 */ void searchMapEventData(u8); }; -struct Vec {}; - -struct cXyz { - /* 80266B34 */ void operator-(Vec const&) const; -}; - -struct STControl { - /* 80032044 */ STControl(s16, s16, s16, s16, f32, f32, s16, s16); - /* 80032088 */ void setWaitParm(s16, s16, s16, s16, f32, f32, s16, s16); - /* 800320AC */ void init(); - /* 800320FC */ void Xinit(); - /* 8003212C */ void Yinit(); - /* 8003215C */ void getValueStick(); - /* 8003216C */ void getAngleStick(); - /* 8003219C */ void checkTrigger(); - /* 8003242C */ void checkLeftTrigger(); - /* 800324A8 */ void checkRightTrigger(); - /* 80032524 */ void checkUpTrigger(); - /* 800325A0 */ void checkDownTrigger(); -}; - struct JKRHeap {}; struct JKRExpandSwitch {}; @@ -71,11 +37,6 @@ struct JKRAram { /* 802D25B4 */ void aramToMainRam(u32, u8*, u32, JKRExpandSwitch, u32, JKRHeap*, int, u32*); }; -struct CSTControl { - /* 8003217C */ void getValueStick(); - /* 8003218C */ void getAngleStick(); -}; - // // Forward References: // @@ -114,7 +75,6 @@ extern "C" void __mi__4cXyzCFRC3Vec(); extern "C" void aramToMainRam__7JKRAramFUlPUcUl15JKRExpandSwitchUlP7JKRHeapiPUl(); extern "C" void findFsResource__10JKRArchiveCFPCcUl(); extern "C" void getAramAddress__14JKRAramArchiveFPCc(); -extern "C" void OSGetTime(); extern "C" void PSMTXMultVec(); extern "C" void _savegpr_29(); extern "C" void _restgpr_29(); @@ -148,49 +108,57 @@ SECTION_DATA extern void* __vt__9STControl[4] = { (void*)getAngleStick__9STControlFv, }; -/* 80032044-80032088 02C984 0044+00 0/0 6/6 0/0 .text __ct__9STControlFssssffss */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm STControl::STControl(s16 param_0, s16 param_1, s16 param_2, s16 param_3, f32 param_4, - f32 param_5, s16 param_6, s16 param_7) { - nofralloc -#include "asm/d/d_lib/__ct__9STControlFssssffss.s" +STControl::STControl(s16 param_0, s16 param_1, s16 param_2, s16 param_3, f32 param_4, f32 param_5, + s16 param_6, s16 param_7) { + setWaitParm(param_0, param_1, param_2, param_3, param_4, param_5, param_6, param_7); + init(); } -#pragma pop -/* 80032088-800320AC 02C9C8 0024+00 1/1 3/3 0/0 .text setWaitParm__9STControlFssssffss */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void STControl::setWaitParm(s16 param_0, s16 param_1, s16 param_2, s16 param_3, f32 param_4, - f32 param_5, s16 param_6, s16 param_7) { - nofralloc -#include "asm/d/d_lib/setWaitParm__9STControlFssssffss.s" +void STControl::setWaitParm(s16 param_0, s16 param_1, s16 param_2, s16 param_3, f32 param_4, + f32 param_5, s16 param_6, s16 param_7) { + field_0x12 = param_0; + field_0x14 = param_1; + field_0x16 = param_2; + field_0x1c = param_3; + field_0x04 = param_4; + field_0x08 = param_5; + field_0x24 = param_6; + field_0x26 = param_7; } -#pragma pop -/* 800320AC-800320FC 02C9EC 0050+00 1/1 1/1 0/0 .text init__9STControlFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void STControl::init() { - nofralloc -#include "asm/d/d_lib/init__9STControlFv.s" +void STControl::init() { + field_0x0e = 0; + field_0x10 = 0; + field_0x0d = 0; + field_0x0c = 0; + field_0x22 = 0; + mXwaitTimer = field_0x12; + mYwaitTimer = field_0x12; + field_0x1e = field_0x1c; + field_0x20 = field_0x1c; + mFirstWaitTime = 0; + field_0x2a = mFirstWaitTime; + field_0x2c = mFirstWaitTime; } -#pragma pop -/* 800320FC-8003212C 02CA3C 0030+00 1/1 0/0 0/0 .text Xinit__9STControlFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void STControl::Xinit() { - nofralloc -#include "asm/d/d_lib/Xinit__9STControlFv.s" +void STControl::Xinit() { + field_0x0e = 0; + field_0x0c &= 0xfc; + mXwaitTimer = field_0x12; + field_0x1e = field_0x1c; + field_0x2a = mFirstWaitTime; } -#pragma pop /* 8003212C-8003215C 02CA6C 0030+00 1/1 0/0 0/0 .text Yinit__9STControlFv */ +#ifdef NONMATCHING +void STControl::Yinit() { + field_0x10 = 0; + field_0x0c &= 0xf3; + mYwaitTimer = field_0x12; + field_0x20 = field_0x1c; + field_0x2c = mFirstWaitTime; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -199,46 +167,23 @@ asm void STControl::Yinit() { #include "asm/d/d_lib/Yinit__9STControlFv.s" } #pragma pop +#endif -/* 8003215C-8003216C 02CA9C 0010+00 1/0 0/0 0/0 .text getValueStick__9STControlFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void STControl::getValueStick() { - nofralloc -#include "asm/d/d_lib/getValueStick__9STControlFv.s" +f32 STControl::getValueStick() { + return mDoCPd_c::getStickValue(mDoCPd_c::PAD_0); } -#pragma pop -/* 8003216C-8003217C 02CAAC 0010+00 1/0 0/0 0/0 .text getAngleStick__9STControlFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void STControl::getAngleStick() { - nofralloc -#include "asm/d/d_lib/getAngleStick__9STControlFv.s" +s16 STControl::getAngleStick() { + return mDoCPd_c::getStickAngle(mDoCPd_c::PAD_0); } -#pragma pop -/* 8003217C-8003218C 02CABC 0010+00 1/0 0/0 0/0 .text getValueStick__10CSTControlFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void CSTControl::getValueStick() { - nofralloc -#include "asm/d/d_lib/getValueStick__10CSTControlFv.s" +f32 CSTControl::getValueStick() { + return mDoCPd_c::getSubStickValue(mDoCPd_c::PAD_0); } -#pragma pop -/* 8003218C-8003219C 02CACC 0010+00 1/0 0/0 0/0 .text getAngleStick__10CSTControlFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void CSTControl::getAngleStick() { - nofralloc -#include "asm/d/d_lib/getAngleStick__10CSTControlFv.s" +s16 CSTControl::getAngleStick() { + return mDoCPd_c::getSubStickAngle(mDoCPd_c::PAD_0); } -#pragma pop /* 8003219C-8003242C 02CADC 0290+00 0/0 24/24 0/0 .text checkTrigger__9STControlFv */ #pragma push @@ -250,46 +195,73 @@ asm void STControl::checkTrigger() { } #pragma pop -/* 8003242C-800324A8 02CD6C 007C+00 0/0 14/14 0/0 .text checkLeftTrigger__9STControlFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void STControl::checkLeftTrigger() { - nofralloc -#include "asm/d/d_lib/checkLeftTrigger__9STControlFv.s" +bool STControl::checkLeftTrigger() { + if ((field_0x0e == 0) && ((field_0x0c & 1) != 0)) { + field_0x0e = mXwaitTimer + field_0x2a; + field_0x2a = 0; + if ((int)field_0x1e == 0) { + mXwaitTimer -= field_0x16; + if (mXwaitTimer < field_0x14) { + mXwaitTimer = field_0x14; + } + } else { + field_0x1e--; + } + return true; + } + return false; } -#pragma pop -/* 800324A8-80032524 02CDE8 007C+00 0/0 14/14 0/0 .text checkRightTrigger__9STControlFv - */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void STControl::checkRightTrigger() { - nofralloc -#include "asm/d/d_lib/checkRightTrigger__9STControlFv.s" +bool STControl::checkRightTrigger() { + if ((field_0x0e == 0) && ((field_0x0c & 2) != 0)) { + field_0x0e = mXwaitTimer + field_0x2a; + field_0x2a = 0; + if ((int)field_0x1e == 0) { + mXwaitTimer -= field_0x16; + if (mXwaitTimer < field_0x14) { + mXwaitTimer = field_0x14; + } + } else { + field_0x1e--; + } + return true; + } + return false; } -#pragma pop -/* 80032524-800325A0 02CE64 007C+00 0/0 20/20 0/0 .text checkUpTrigger__9STControlFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void STControl::checkUpTrigger() { - nofralloc -#include "asm/d/d_lib/checkUpTrigger__9STControlFv.s" +bool STControl::checkUpTrigger() { + if ((field_0x10 == 0) && ((field_0x0c & 4) != 0)) { + field_0x10 = mYwaitTimer + field_0x2c; + field_0x2c = 0; + if ((int)field_0x20 == 0) { + mYwaitTimer -= field_0x16; + if (mYwaitTimer < field_0x14) { + mYwaitTimer = field_0x14; + } + } else { + field_0x20--; + } + return true; + } + return false; } -#pragma pop -/* 800325A0-8003261C 02CEE0 007C+00 0/0 21/21 0/0 .text checkDownTrigger__9STControlFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void STControl::checkDownTrigger() { - nofralloc -#include "asm/d/d_lib/checkDownTrigger__9STControlFv.s" +bool STControl::checkDownTrigger() { + if ((field_0x10 == 0) && ((field_0x0c & 8) != 0)) { + field_0x10 = mYwaitTimer + field_0x2c; + field_0x2c = 0; + if ((int)field_0x20 == 0) { + mYwaitTimer -= field_0x16; + if (mYwaitTimer < field_0x14) { + mYwaitTimer = field_0x14; + } + } else { + field_0x20--; + } + return true; + } + return false; } -#pragma pop /* 8003261C-80032654 02CF5C 0038+00 0/0 0/0 1/1 .text dLib_getEventSwitchNo__Fi */ #pragma push -- cgit v1.2.3