summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2025-06-30 15:17:50 -0700
committerGitHub <noreply@github.com>2025-07-01 01:17:50 +0300
commit227cf2353acb8dbea8b765a34d5aad9a68373d44 (patch)
tree20cfc7a18c1bbc95eec8b332a70eeefc18b560a7 /src
parent214cfce7f6767cbe9781b36546de31c5082ff362 (diff)
some more wii tests/improvements (#2512)
* some more wii tests/improvements * merge Z2AudioCS changes
Diffstat (limited to 'src')
-rw-r--r--src/SSystem/SComponent/c_API_controller_pad.cpp143
-rw-r--r--src/Z2AudioLib/Z2LinkMgr.cpp2
-rw-r--r--src/d/actor/d_a_alink_demo.inc17
-rw-r--r--src/d/d_home_button.cpp212
-rw-r--r--src/m_Do/m_Re_controller_pad.cpp350
5 files changed, 711 insertions, 13 deletions
diff --git a/src/SSystem/SComponent/c_API_controller_pad.cpp b/src/SSystem/SComponent/c_API_controller_pad.cpp
index c8c29794a6..4ac6aad2db 100644
--- a/src/SSystem/SComponent/c_API_controller_pad.cpp
+++ b/src/SSystem/SComponent/c_API_controller_pad.cpp
@@ -5,13 +5,156 @@
#include "SSystem/SComponent/c_API_controller_pad.h"
#include "m_Do/m_Do_controller_pad.h"
+#include "global.h"
+
+#if PLATFORM_WII
+#include "m_Do/m_Re_controller_pad.h"
+#endif
/* 8026328C-802632AC 25DBCC 0020+00 0/0 3/3 0/0 .text cAPICPad_recalibrate__Fv */
void cAPICPad_recalibrate() {
mDoCPd_c::recalibrate();
+
+ #if PLATFORM_WII
+ mReCPd::stopMoter();
+ #endif
}
/* 802632AC-802632C8 25DBEC 001C+00 0/0 3/3 1/1 .text cAPICPad_ANY_BUTTON__FUl */
u32 cAPICPad_ANY_BUTTON(u32 portNo) {
return mDoCPd_c::getTrig(portNo) & (PAD_BUTTON_A | PAD_BUTTON_B | PAD_BUTTON_START);
}
+
+#if PLATFORM_WII
+u32 cAPICPad_BUTTON(u32 i_padNo) {
+ return mReCPd::getHold(i_padNo);
+}
+
+u32 cAPICPad_Z_BUTTON(u32 i_padNo) {
+ return mReCPd::getHoldUp(i_padNo);
+}
+
+u32 cAPICPad_R_BUTTON(u32 i_padNo) {
+ return 0;
+}
+
+u32 cAPICPad_L_BUTTON(u32 i_padNo) {
+ return mReCPd::getHoldZ1(i_padNo);
+}
+
+u32 cAPICPad_A_BUTTON(u32 i_padNo) {
+ return mReCPd::getHoldA(i_padNo);
+}
+
+u32 cAPICPad_B_BUTTON(u32 i_padNo) {
+ return mReCPd::getHoldB(i_padNo);
+}
+
+u32 cAPICPad_X_BUTTON(u32 i_padNo) {
+ return mReCPd::getHoldRight(i_padNo);
+}
+
+u32 cAPICPad_Y_BUTTON(u32 i_padNo) {
+ return mReCPd::getHoldLeft(i_padNo);
+}
+
+u32 cAPICPad_TRIGGER(u32 i_padNo) {
+ return mReCPd::getTrig(i_padNo);
+}
+
+u32 cAPICPad_Z_TRIGGER(u32 i_padNo) {
+ return mReCPd::getTrigUp(i_padNo);
+}
+
+u32 cAPICPad_R_TRIGGER(u32 i_padNo) {
+ return 0;
+}
+
+u32 cAPICPad_UP_TRIGGER(u32 i_padNo) {
+ return 0;
+}
+
+u32 cAPICPad_DOWN_TRIGGER(u32 i_padNo) {
+ return 0;
+}
+
+u32 cAPICPad_LEFT_TRIGGER(u32 i_padNo) {
+ return 0;
+}
+
+u32 cAPICPad_RIGHT_TRIGGER(u32 i_padNo) {
+ return 0;
+}
+
+u32 cAPICPad_L_TRIGGER(u32 i_padNo) {
+ return mReCPd::getTrigZ1(i_padNo);
+}
+
+u32 cAPICPad_A_TRIGGER(u32 i_padNo) {
+ return mReCPd::getTrigA(i_padNo);
+}
+
+u32 cAPICPad_B_TRIGGER(u32 i_padNo) {
+ return mReCPd::getTrigB(i_padNo);
+}
+
+u32 cAPICPad_X_TRIGGER(u32 i_padNo) {
+ return mReCPd::getTrigRight(i_padNo);
+}
+
+u32 cAPICPad_Y_TRIGGER(u32 i_padNo) {
+ return mReCPd::getTrigLeft(i_padNo);
+}
+
+u32 cAPICPad_START_TRIGGER(u32 i_padNo) {
+ return mReCPd::getTrigStart(i_padNo);
+}
+
+f32 cAPICPad_X_STICK(u32 i_padNo) {
+ return mReCPd::getPad(i_padNo).field_0x4[0].ex_status.fs.stick.x;
+}
+
+f32 cAPICPad_X_STICK_3D(u32 i_padNo) {
+ return mReCPd::getPad(i_padNo).m_stick3D;
+}
+
+f32 cAPICPad_Y_STICK(u32 i_padNo) {
+ return mReCPd::getPad(i_padNo).field_0x4[0].ex_status.fs.stick.y;
+}
+
+f32 cAPICPad_VALUE_STICK(u32 i_padNo) {
+ return mReCPd::getPad(i_padNo).m_stickValue;
+}
+
+s16 cAPICPad_ANGLE_STICK(u32 i_padNo) {
+ return mReCPd::getPad(i_padNo).m_stickAngle;
+}
+
+s16 cAPICPad_ANGLE_STICK_3D(u32 i_padNo) {
+ return mReCPd::getFSStickAngle3DRev(i_padNo);
+}
+
+f32 cAPICPad_X_SUBSTICK(u32 i_padNo) {
+ return 0.0f;
+}
+
+f32 cAPICPad_Y_SUBSTICK(u32 i_padNo) {
+ return 0.0f;
+}
+
+f32 cAPICPad_VALUE_SUBSTICK(u32 i_padNo) {
+ return 0.0f;
+}
+
+s16 cAPICPad_ANGLE_SUBSTICK(u32 i_padNo) {
+ return 0;
+}
+
+f32 cAPICPad_L_ANALOG(u32 i_padNo) {
+ return 0.0f;
+}
+
+f32 cAPICPad_R_ANALOG(u32 i_padNo) {
+ return 0.0f;
+}
+#endif
diff --git a/src/Z2AudioLib/Z2LinkMgr.cpp b/src/Z2AudioLib/Z2LinkMgr.cpp
index 116c987ffb..4367cde681 100644
--- a/src/Z2AudioLib/Z2LinkMgr.cpp
+++ b/src/Z2AudioLib/Z2LinkMgr.cpp
@@ -4,7 +4,7 @@
//
#include "Z2AudioLib/Z2LinkMgr.h"
-#include "Z2AudioCSD\Z2AudioCS.h"
+#include "Z2AudioLib\Z2AudioCS.h"
#include "d/d_com_inf_game.h"
/* 802C321C-802C3220 2BDB5C 0004+00 0/0 1/1 0/0 .text setLinkGroupInfo__14Z2CreatureLinkFUc */
diff --git a/src/d/actor/d_a_alink_demo.inc b/src/d/actor/d_a_alink_demo.inc
index 280f965341..5d8438cf04 100644
--- a/src/d/actor/d_a_alink_demo.inc
+++ b/src/d/actor/d_a_alink_demo.inc
@@ -4173,12 +4173,23 @@ static fopAc_ac_c* daAlink_searchPortal(fopAc_ac_c* i_actor, void* i_data) {
/* 8011F658-8011F7D8 119F98 0180+00 1/1 0/0 0/0 .text checkAcceptWarp__9daAlink_cFv */
bool daAlink_c::checkAcceptWarp() {
+ #if VERSION != VERSION_WII_USA_R0
cM3dGPla plane;
+ #endif
- if (mLinkAcch.ChkGroundHit() && !checkModeFlg(MODE_PLAYER_FLY) &&
- !checkNoResetFlg0(FLG0_UNDERWATER))
+ if (mLinkAcch.ChkGroundHit() && !checkModeFlg(MODE_PLAYER_FLY)
+ #if VERSION != VERSION_WII_USA_R0
+ && !checkNoResetFlg0(FLG0_UNDERWATER)
+ #endif
+ )
{
- if (!getSlidePolygon(&plane) && !checkForestOldCentury()) {
+ if (
+ #if VERSION != VERSION_WII_USA_R0
+ !getSlidePolygon(&plane) &&
+ #endif
+ !checkForestOldCentury()
+ )
+ {
if (checkMidnaRide() || ((daMidna_c*)getMidnaActor())->checkPortalObjRide()) {
if ((checkField() || checkCastleTown()) && !checkStageName("R_SP161")) {
if ((checkWolf() && (checkModeFlg(MODE_UNK_1000) ||
diff --git a/src/d/d_home_button.cpp b/src/d/d_home_button.cpp
index f5604d5624..837695a0f5 100644
--- a/src/d/d_home_button.cpp
+++ b/src/d/d_home_button.cpp
@@ -1,5 +1,12 @@
#include "d/d_home_button.h"
+#include "JSystem/JFramework/JFWDisplay.h"
+#include "Z2AudioLib/Z2AudioCS.h"
#include "Z2AudioLib/Z2AudioMgr.h"
+#include "d/d_com_inf_game.h"
+#include "m_Do/m_Do_Reset.h"
+#include "m_Do/m_Do_graphic.h"
+#include "m_Do/m_Do_lib.h"
+#include "m_Do/m_Re_controller_pad.h"
int SECallback(int param_0, int param_1) {
if (param_0 == 5) {
@@ -11,6 +18,40 @@ int SECallback(int param_0, int param_1) {
}
}
+// NONMATCHING - stack
+void drawCallback(J2DOrthoGraph& param_0, void* param_1) {
+ Mtx sp8;
+ if (mDoGph_gInf_c::isWide()) {
+ MTXOrtho(sp8, 228.0f, -228.0f, -416.0f, 416.0f, 0.0f, 500.0f);
+ } else {
+ MTXOrtho(sp8, 228.0f, -228.0f, -304.0f, 304.0f, 0.0f, 500.0f);
+ }
+
+ GXSetProjection(sp8, GX_ORTHOGRAPHIC);
+ GXClearVtxDesc();
+ GXSetVtxAttrFmt(GX_VTXFMT4, GX_VA_POS, GX_POS_XY, GX_F32, 0);
+ GXSetVtxAttrFmt(GX_VTXFMT4, GX_VA_CLR0, GX_CLR_RGB, GX_RGB8, 0);
+ GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
+ GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT);
+ GXSetNumChans(1);
+ GXSetNumTexGens(0);
+ GXSetNumTevStages(1);
+ GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0);
+ GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR);
+ GXSetBlendMode(GX_BM_NONE, GX_BL_ZERO, GX_BL_ZERO, GX_LO_CLEAR);
+ GXSetZMode(GX_ENABLE, GX_LEQUAL, GX_ENABLE);
+ GXSetCullMode(GX_CULL_NONE);
+ GXLoadPosMtxImm(g_mDoMtx_identity, 3);
+ GXSetCurrentMtx(3);
+
+ HBMDraw();
+}
+
+dHomeButton_c* dHomeButton_c::m_myObj;
+
+u8 dHomeButton_c::lbl_8053A724;
+u8 dHomeButton_c::lbl_8053A725;
+
void dHomeButton_c::create_(int param_0, void* param_1) {
initCursorPos();
initHomeButtonInfo(param_0, param_1);
@@ -22,34 +63,187 @@ void dHomeButton_c::create_(int param_0, void* param_1) {
HBMCreate(&m_info);
}
+// NONMATCHING
int dHomeButton_c::execute_() {
- // NONMATCHING
+ if (m_myObj == NULL) {
+ return 0;
+ }
+
+ calcCursorPos();
+
+ if (field_0x7c == 0 && !mDoRst::isReset()) {
+ bool var_r30 = false;
+ for (u32 i = 0; i < 4; i++) {
+ if (mReCPd::chkDevTypeValid(i) && mReCPd::getTrigHome(i)) {
+ var_r30 = true;
+ }
+ }
+
+ if (var_r30) {
+ mReCPd::enableDpd(0);
+ Z2AudioCS::disconnect(0);
+
+ HBMSetAdjustFlag(mDoGph_gInf_c::isWide());
+ HBMInit();
+
+ mDoGph_gInf_c::setTickRate(OS_TIMER_CLOCK / 60);
+ field_0x7c = 1;
+ lbl_8053A724 = 0;
+ }
+ }
+
+ if (field_0x7c) {
+ if (lbl_8053A724 == 0 && mDoRst::isReset()) {
+ HBMStartBlackOut();
+ onReset();
+ }
+
+ if (HBMCalc(&m_controllerData) >= HBM_SELECT_HOMEBTN) {
+ int selectBtn = HBMGetSelectBtnNum();
+ if (selectBtn == HBM_SELECT_BTN1) {
+ mDoRst::onReturnToMenu();
+ onReset();
+ } else if (selectBtn == HBM_SELECT_BTN2) {
+ mDoRst_resetCallBack(-1, NULL);
+ onReset();
+ }
+
+ Z2AudioCS::connect(0);
+ mDoGph_gInf_c::setTickRate(field_0x78);
+ field_0x7c = 0;
+ mReCPd::setExtensionCallback();
+ } else {
+ drawCapture(0xFF, drawCallback, NULL);
+ }
+ }
+
+ return field_0x7c;
}
-void dHomeButton_c::initHomeButtonInfo(int param_0, void* param_1) {
- // NONMATCHING
+void dHomeButton_c::initHomeButtonInfo(int param_0, void* i_layoutBuf) {
+ m_info.layoutBuf = i_layoutBuf;
+ m_info.spkSeBuf = dComIfG_getObjectRes("HomeBtn", "SpeakerSe.arc");
+ m_info.msgBuf = dComIfG_getObjectRes("HomeBtn", "home.csv");
+ m_info.configBuf = dComIfG_getObjectRes("HomeBtn", "config.txt");
+ m_info.sound_callback = SECallback;
+ m_info.backFlag = 0;
+ m_info.region = param_0;
+ m_info.cursor = 0;
+
+ m_info.adjust.x = 1.3684211f;
+ m_info.adjust.y = 1.0f;
+ m_info.frameDelta = 1.0f;
}
void dHomeButton_c::initCursorPos() {
- // NONMATCHING
+ for (int i = 0; i < 4; i++) {
+ m_controllerData.wiiCon[i].pos.x = 0.0f;
+ m_controllerData.wiiCon[i].pos.y = 0.0f;
+ m_controllerData.wiiCon[i].use_devtype = 0;
+ }
}
void dHomeButton_c::calcCursorPos() {
- // NONMATCHING
+ for (u32 i = 0; i < 4; i++) {
+ WPADDeviceType sp8;
+ WPADResult result = WPADProbe(i, &sp8);
+
+ if (result == -2 || result == -3 || result == 0) {
+ m_controllerData.wiiCon[i].kpad = &mReCPd::m_pad[i].field_0x4[0];
+ } else {
+ m_controllerData.wiiCon[i].kpad = NULL;
+ }
+ }
}
void dHomeButton_c::onReset() {
- // NONMATCHING
+ mDoGph_gInf_c::setFadeColor(*(JUtility::TColor*)&g_blackColor);
+ lbl_8053A724 = 1;
}
void dHomeButton_c::create(int param_0, void* param_1) {
- // NONMATCHING
+ m_myObj = new dHomeButton_c();
+ m_myObj->create_(param_0, param_1);
}
int dHomeButton_c::execute() {
- // NONMATCHING
+ if (m_myObj) {
+ return m_myObj->execute_();
+ }
+
+ return NULL;
}
+// NONMATCHING
void dHomeButton_c::drawCapture(u8 param_0, void (*param_1)(J2DOrthoGraph&, void*), void* param_2) {
- // NONMATCHING
+ if (lbl_8053A725 == 0) {
+ GXSetTexCopySrc(0, 0, 640, 456);
+ GXSetTexCopyDst(640, 456, (GXTexFmt)mDoGph_gInf_c::m_fullFrameBufferTimg->format, GX_FALSE);
+ GXCopyTex(mDoGph_gInf_c::m_fullFrameBufferTex, GX_FALSE);
+ lbl_8053A725 = 1;
+ }
+
+ JFWDisplay::getManager()->setClearColor(g_clearColor);
+ mDoGph_gInf_c::beginRender();
+ GXSetAlphaUpdate(GX_DISABLE);
+ j3dSys.drawInit();
+
+ J2DOrthoGraph sp30(0.0f, 0.0f, 640.0f, 456.0f, -1.0f, 1.0f);
+ sp30.setOrtho(JGeometry::TBox2<f32>(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMinYF(),
+ mDoGph_gInf_c::getMinXF() + mDoGph_gInf_c::getWidthF(),
+ mDoGph_gInf_c::getMinYF() + mDoGph_gInf_c::getHeightF()),
+ -1.0f, 1.0f);
+ sp30.setPort();
+
+ dComIfGp_setCurrentGrafPort(&sp30);
+ mDoLib_setResTimgObj(mDoGph_gInf_c::m_fullFrameBufferTimg,
+ &mDoGph_gInf_c::m_fullFrameBufferTexObj, 0, NULL);
+
+ GXLoadTexObj(&mDoGph_gInf_c::m_fullFrameBufferTexObj, GX_TEXMAP0);
+ GXSetNumChans(0);
+ GXSetNumIndStages(0);
+ GXSetNumTexGens(1);
+ GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 60);
+ GXSetNumTevStages(1);
+
+ GXColor sp14 = {0, 0, 0, param_0};
+ GXSetTevColor(GX_TEVREG0, sp14);
+ GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
+ GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A0, GX_CC_ZERO);
+ GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
+ GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO);
+ GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
+ GXSetZCompLoc(GX_TRUE);
+ GXSetZMode(GX_DISABLE, GX_ALWAYS, GX_DISABLE);
+ GXSetBlendMode(GX_BM_NONE, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_CLEAR);
+ GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0);
+ GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, g_clearColor);
+ GXSetFogRangeAdj(GX_DISABLE, 0, NULL);
+ GXSetCullMode(GX_CULL_NONE);
+ GXSetDither(GX_TRUE);
+ GXClearVtxDesc();
+ GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
+ GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
+ GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_F32, 0);
+ GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_S8, 0);
+ GXBegin(GX_QUADS, GX_VTXFMT0, 4);
+
+ GXPosition2f32(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMinYF());
+ GXTexCoord2u8(0, 0);
+
+ GXPosition2f32(mDoGph_gInf_c::getMaxXF(), mDoGph_gInf_c::getMinYF());
+ GXTexCoord2u8(1, 0);
+
+ GXPosition2f32(mDoGph_gInf_c::getMaxXF(), mDoGph_gInf_c::getMaxYF());
+ GXTexCoord2u8(1, 1);
+
+ GXPosition2f32(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMaxYF());
+ GXTexCoord2u8(0, 1);
+
+ if (param_1 != NULL) {
+ param_1(sp30, param_2);
+ }
+
+ JFWDisplay::getManager()->endRender();
+ JFWDisplay::getManager()->setFader(NULL);
}
diff --git a/src/m_Do/m_Re_controller_pad.cpp b/src/m_Do/m_Re_controller_pad.cpp
index e69de29bb2..24a97449dd 100644
--- a/src/m_Do/m_Re_controller_pad.cpp
+++ b/src/m_Do/m_Re_controller_pad.cpp
@@ -0,0 +1,350 @@
+#include "m_Do/m_Re_controller_pad.h"
+#include "Z2AudioLib/Z2AudioCS.h"
+
+mReCPd::Pad mReCPd::m_pad[4];
+WPADInfo mReCPd::m_pad_info[4];
+
+void mReCPd::Pad::Acc::clean() {
+
+}
+
+void mReCPd::Pad::Acc::changeStts(u32, bool) {
+
+}
+
+void mReCPd::Pad::Acc::calcSwingVec() {
+
+}
+
+void mReCPd::Pad::Acc::calcSttsRem() {
+
+}
+
+void mReCPd::Pad::Acc::calcSttsFs() {
+
+}
+
+void mReCPd::Pad::clean() {
+
+}
+
+void mReCPd::Pad::cleanOneTime() {
+
+}
+
+void mReCPd::Pad::copyRemAcc() {
+
+}
+
+void mReCPd::Pad::copyFSAcc() {
+
+}
+
+void mReCPd::Pad::cleanTrig() {
+ m_remAcc.m_swing = 0;
+ m_FSAcc.m_swing = 0;
+
+ for (int i = 0; i < 10; i++) {
+ field_0x4[i].trig = 0;
+ }
+}
+
+void mReCPd::Pad::cleanHold() {
+ for (int i = 0; i < 10; i++) {
+ field_0x4[i].hold = 0;
+ }
+}
+
+void mReCPd::Pad::cleanRelease() {
+ for (int i = 0; i < 10; i++) {
+ field_0x4[i].release = 0;
+ }
+}
+
+void mReCPd::Pad::clearUpDown() {
+
+}
+
+void mReCPd::Pad::calcDpdBox(Vec2*, Vec2*, f32, f32) {
+
+}
+
+void mReCPd::Pad::calcDpdOld() {
+
+}
+
+void mReCPd::enableDpd(u32 param_0) {
+ KPADEnableDPD(param_0);
+}
+
+void mReCPd::disableDpd(u32 param_0) {
+ KPADDisableDPD(param_0);
+}
+
+void mReCPd::Pad::calcDpd2DPos() {
+
+}
+
+void mReCPd::Pad::calcDpdRatioPos() {
+
+}
+
+void mReCPd::Pad::calcDpdPlayCirPos() {
+
+}
+
+void mReCPd::Pad::calcDpdPlayBoxPos() {
+
+}
+
+void mReCPd::onConnect(u32 i_padNo) {
+ m_pad[i_padNo].field_0x1dd4 = 1;
+ m_pad[i_padNo].field_0x1e04 = 1;
+}
+
+static void l_mReCPd_extensionCallback(s32 i_padNo, s32 param_1) {
+ Z2AudioCS::extensionProcess(i_padNo, param_1);
+ mReCPd::m_pad[i_padNo].field_0x1dec = param_1;
+ mReCPd::m_pad[i_padNo].field_0x1df0 = 1;
+}
+
+void mReCPd::setExtensionCallback() {
+ WPADSetExtensionCallback(0, l_mReCPd_extensionCallback);
+}
+
+void mReCPd::onGetInfoAsync(u32 i_padNo) {
+ m_pad[i_padNo].field_0x1ddd = 1;
+ m_pad[i_padNo].field_0x1de0 = 1800;
+}
+
+void mReCPd::create() {
+
+}
+
+void mReCPd::startMoterWave(motorWave_t*, u8*, bool) {
+
+}
+
+void mReCPd::startMoterWave(int, u8*, bool) {
+
+}
+
+void mReCPd::stopMoterWave(motorWave_t*) {
+
+}
+
+void mReCPd::stopMoterWave(int) {
+
+}
+
+void mReCPd::updateMoterWave() {
+
+}
+
+void mReCPd::stopMoter() {
+
+}
+
+void mReCPd::getLowBat(u32) {
+
+}
+
+void mReCPd::setLowBat(u32, int) {
+
+}
+
+void mReCPd::onLowBatChk(u32) {
+
+}
+
+void mReCPd::procNoData(u32) {
+
+}
+
+void mReCPd::read() {
+
+}
+
+void mReCPd::calibrateDist(int) {
+
+}
+
+void mReCPd::getDpd2DPos(u32) {
+
+}
+
+void mReCPd::getDpdRatioPos(u32) {
+
+}
+
+void mReCPd::getDpdRatioBoxPos(u32) {
+
+}
+
+void mReCPd::chkDpdOk(u32) {
+
+}
+
+void mReCPd::chkDpdValid(u32) {
+
+}
+
+void mReCPd::chkDpdPosIn(u32) {
+
+}
+
+void mReCPd::getKPADAcc(u32, Vec*, int) {
+
+}
+
+void mReCPd::getAngleXy(u32) {
+
+}
+
+void mReCPd::getAngleZy(u32) {
+
+}
+
+void mReCPd::getKPADAccValue(u32, int) {
+
+}
+
+void mReCPd::getKPADAccValueMax(u32) {
+
+}
+
+void mReCPd::getKPADAccSpeed(u32, int) {
+
+}
+
+void mReCPd::getKPADAccSpeedMax(u32) {
+
+}
+
+void mReCPd::getKPADFsAccValue(u32, int) {
+
+}
+
+void mReCPd::getKPADFsAccValueMax(u32) {
+
+}
+
+s16 mReCPd::getFSStickAngle3DRev(u32) {
+
+}
+
+void mReCPd::calcUnderVec(Pad::Acc*, f32) {
+
+}
+
+u32 mReCPd::getHoldB(u32 i_padNo) {
+ return m_pad[i_padNo].field_0x4[0].hold & WPAD_BUTTON_B;
+}
+
+u32 mReCPd::getHoldMinus(u32 i_padNo) {
+ if (chkSwingBlock(i_padNo)) {
+ return 0;
+ } else {
+ return m_pad[i_padNo].field_0x4[0].hold & WPAD_BUTTON_MINUS;
+ }
+}
+
+u32 mReCPd::getHoldPlus(u32 i_padNo) {
+ if (chkSwingBlock(i_padNo)) {
+ return 0;
+ } else {
+ return m_pad[i_padNo].field_0x4[0].hold & WPAD_BUTTON_PLUS;
+ }
+}
+
+u32 mReCPd::getHoldZ1(u32 i_padNo) {
+ return m_pad[i_padNo].field_0x4[0].hold & WPAD_BUTTON_Z;
+}
+
+u32 mReCPd::getTrigB(u32 i_padNo) {
+ return m_pad[i_padNo].field_0x4[0].trig & WPAD_BUTTON_B;
+}
+
+u32 mReCPd::getTrigMinus(u32 i_padNo) {
+ if (chkSwingBlock(i_padNo)) {
+ return 0;
+ } else {
+ return m_pad[i_padNo].field_0x4[0].trig & WPAD_BUTTON_MINUS;
+ }
+}
+
+u32 mReCPd::getTrigHome(u32 i_padNo) {
+ if (chkSwingBlock(i_padNo)) {
+ return 0;
+ } else {
+ return m_pad[i_padNo].field_0x4[0].trig & WPAD_BUTTON_HOME;
+ }
+}
+
+u32 mReCPd::getTrigPlus(u32 i_padNo) {
+ if (chkSwingBlock(i_padNo)) {
+ return 0;
+ } else {
+ return m_pad[i_padNo].field_0x4[0].trig & WPAD_BUTTON_PLUS;
+ }
+}
+
+u32 mReCPd::getTrigZ1(u32 i_padNo) {
+ return m_pad[i_padNo].field_0x4[0].trig & WPAD_BUTTON_Z;
+}
+
+u32 mReCPd::chkSwingBlock(u32 i_padNo) {
+ return m_pad[i_padNo].m_swingBlock > 0;
+}
+
+u32 mReCPd::getTrigSwing(u32 i_padNo) {
+ return m_pad[i_padNo].m_remAcc.m_swing;
+}
+
+Vec2& mReCPd::getSwingVec(u32 i_padNo) {
+ return m_pad[i_padNo].m_remAcc.m_swingVec;
+}
+
+u32 mReCPd::chkSimpleProbe(u32 i_padNo) {
+ if (m_pad[i_padNo].field_0x1dd4 == 0) {
+ return 0;
+ } else if (m_pad[i_padNo].field_0x1dfc + 3 <= 2) {
+ return 0;
+ } else if (m_pad[i_padNo].field_0x1df8 == 0xFD || m_pad[i_padNo].field_0x1df8 == 0xFF) {
+ return 0;
+ } else {
+ return 1;
+ }
+}
+
+BOOL mReCPd::chkDevTypeValid(u32 i_padNo) {
+ if (!chkSimpleProbe(i_padNo)) {
+ return FALSE;
+ }
+
+ if (m_pad[i_padNo].field_0x1df4 < 20 && m_pad[i_padNo].field_0x1de4 == 0xFF && m_pad[i_padNo].field_0x1de8 != 0) {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+u32 mReCPd::getFSTrigSwing(u32 i_padNo) {
+ return m_pad[i_padNo].m_FSAcc.m_swing;
+}
+
+int mReCPd::m_cal_value;
+
+void mReCPd::plusCalValue() {
+ m_cal_value++;
+ if (m_cal_value >= 2) {
+ m_cal_value = 2;
+ }
+}
+
+void mReCPd::minusCalValue() {
+ m_cal_value--;
+ if (m_cal_value <= -2) {
+ m_cal_value = -2;
+ }
+}