summaryrefslogtreecommitdiff
path: root/src/d/d_lib.cpp
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2021-06-18 06:33:51 -0700
committerGitHub <noreply@github.com>2021-06-18 09:33:51 -0400
commitba5ad31b54496c79f60de9973d168efdda341def (patch)
tree418a0e4ed26d72a2a5f5667dbfff64dab419b232 /src/d/d_lib.cpp
parent8c2a3ae7eac3483764ccd42f890a1de9cf768538 (diff)
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
Diffstat (limited to 'src/d/d_lib.cpp')
-rw-r--r--src/d/d_lib.cpp254
1 files changed, 113 insertions, 141 deletions
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