d_a_npc_ks equivalent (#2481)

This commit is contained in:
YunataSavior 2025-06-10 09:19:55 -07:00 committed by GitHub
parent 5ec7e42c2d
commit 932f67e05c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 738 additions and 720 deletions

View File

@ -1793,7 +1793,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_npc_kn"),
ActorRel(NonMatching, "d_a_npc_knj"),
ActorRel(NonMatching, "d_a_npc_kolinb"),
ActorRel(NonMatching, "d_a_npc_ks"),
ActorRel(Equivalent, "d_a_npc_ks"), # weak func order
ActorRel(NonMatching, "d_a_npc_kyury"),
ActorRel(NonMatching, "d_a_npc_len"),
ActorRel(MatchingFor("GZ2E01"), "d_a_npc_lf"),

View File

@ -44,7 +44,7 @@ public:
/* 0x5F8 */ s16 field_0x5f8;
/* 0x5FA */ s16 field_0x5fa;
/* 0x5FC */ s8 field_0x5fc;
/* 0x5FD */ u8 field_0x5fd;
/* 0x5FD */ s8 field_0x5fd;
/* 0x5FE */ s16 field_0x5fe;
/* 0x600 */ s16 field_0x600;
/* 0x602 */ s16 field_0x602;
@ -88,7 +88,7 @@ public:
/* 0x98C */ dCcD_Cyl field_0x98c;
/* 0xAC8 */ u8 field_0xac8[0xaec - 0xac8];
/* 0xAEC */ s8 field_0xaec;
/* 0xAED */ u8 field_0xaed;
/* 0xAED */ s8 field_0xaed;
/* 0xAEE */ s16 field_0xaee;
/* 0xAF0 */ s16 field_0xaf0;
/* 0xAF4 */ dMsgFlow_c mMsgFlow;

View File

@ -1164,7 +1164,7 @@ public:
void setGiantPuzzle() { mSpecialMode = SMODE_WOLF_PUZZLE; }
void setGiantPuzzleEnd() { mSpecialMode = 0; }
BOOL checkAutoJumpStart() { return checkResetFlg0(RFLG0_UNK_100); }
BOOL checkAutoJumpStart() const { return checkResetFlg0(RFLG0_UNK_100); }
};
int daPy_addCalcShort(s16* param_0, s16 param_1, s16 param_2, s16 param_3, s16 param_4);

View File

@ -446,12 +446,15 @@ public:
/* 0x000 */ camera_class* field_0x0;
#if VERSION == VERSION_SHIELD_DEBUG
// In the debug rom, there's D8 bytes preceeding the following members.
// The following is a stopgap:
u8 mFillerBytes[0xD8];
cXyz dbg_field_0x04[16];
u8 dbg_field_c4[0xDC - 0xC4];
#endif
/* 0x004 */ int mRoomNo;
/* 0x008 */ u8 field_0x8[0x20 - 0x8];
struct {
/* 0x00 */ int mRoomNo;
/* 0x04 */ cXyz field_0x04;
/* 0x10 */ cXyz field_0x10;
}
/* 0x004 */ field_0x004;
/* 0x020 */ u8 field_0x20;
/* 0x021 */ u8 field_0x21;
/* 0x022 */ u8 field_0x22[2];

File diff suppressed because it is too large Load Diff

View File

@ -882,7 +882,7 @@ void dCamera_c::initialize(camera_class* i_camera, fopAc_ac_c* i_player, u32 i_c
initPad();
mFocusLine.Init();
mRoomNo = dComIfGp_roomControl_getStayNo();
field_0x004.mRoomNo = dComIfGp_roomControl_getStayNo();
const char* stage_name = dComIfGp_getStartStageName();
if (strcmp(stage_name, "D_MN01A") == 0) {
Stage = 0x68;
@ -1197,7 +1197,7 @@ bool dCamera_c::ChangeModeOK(s32 param_0) {
}
/* 80161550-801617B0 15BE90 0260+00 1/1 0/0 0/0 .text initPad__9dCamera_cFv */
// NONMATCHING weird stuff with getTrig/Hold. wrong types???
// NONMATCHING - Why does getHoldZ behave differently in retail?
void dCamera_c::initPad() {
if (chkFlag(0x1000000)) {
mPadInfo.mMainStick.mLastPosX = 0.0f;
@ -1229,9 +1229,7 @@ void dCamera_c::initPad() {
mPadInfo.mCStick.mValueDelta = 0.0f;
mPadInfo.mCStick.mAngle = cSAngle::_0;
field_0x1fc = 0;
field_0x1f8 = 0;
field_0x1f4 = 0;
field_0x1f4 = field_0x1f8 = field_0x1fc = 0;
mTriggerLeftLast = mDoCPd_c::getAnalogL(mPadID);
mTriggerLeftDelta = 0.0f;
@ -1247,21 +1245,21 @@ void dCamera_c::initPad() {
field_0x216 = 0;
field_0x217 = 0;
mHoldX = mDoCPd_c::getHoldX(mPadID);
mTrigX = mDoCPd_c::getTrigX(mPadID);
mHoldX = mDoCPd_c::getHoldX(mPadID) ? true : false;
mTrigX = mDoCPd_c::getTrigX(mPadID) ? true : false;
mHoldY = mDoCPd_c::getHoldY(mPadID);
mTrigY = mDoCPd_c::getTrigY(mPadID);
mHoldY = mDoCPd_c::getHoldY(mPadID) ? true : false;
mTrigY = mDoCPd_c::getTrigY(mPadID) ? true : false;
mHoldY = mDoCPd_c::getHoldY(mPadID);
mTrigY = mDoCPd_c::getTrigY(mPadID);
mHoldY = mDoCPd_c::getHoldY(mPadID) ? true : false;
mTrigY = mDoCPd_c::getTrigY(mPadID) ? true : false;
mHoldZ = mDoCPd_c::getHoldZ(mPadID);
mTrigZ = mDoCPd_c::getTrigZ(mPadID);
mHoldZ = mDoCPd_c::getHoldZ(mPadID) ? true : false;
mTrigZ = mDoCPd_c::getTrigZ(mPadID) ? true : false;
field_0x21f = 0;
mHoldB = mDoCPd_c::getHoldB(mPadID);
mTrigB = mDoCPd_c::getTrigB(mPadID);
mHoldB = mDoCPd_c::getHoldB(mPadID) ? true : false;
mTrigB = mDoCPd_c::getTrigB(mPadID) ? true : false;
field_0x223 = 0;
field_0x224 = 0;
}
@ -1537,7 +1535,7 @@ bool dCamera_c::Run() {
field_0x18c = NULL;
field_0x188 = NULL;
s32 stay_no = dComIfGp_roomControl_getStayNo();
if (stay_no != mRoomNo) {
if (stay_no != field_0x004.mRoomNo) {
onRoomChange(stay_no);
}
checkGroundInfo();
@ -1887,6 +1885,7 @@ int dCamera_c::Draw() {
// NONMATCHING regswap, equivalent
void dCamera_c::setStageMapToolData() {
int var_r28 = 0xFF;
int var_r27 = 0xFF;
field_0x7e8.Clr();
@ -1906,12 +1905,12 @@ void dCamera_c::setStageMapToolData() {
field_0x7e8.field_0x3a = (field_0x7e8.field_0x0.field_0x14 >> 0xE) & 3;
if (field_0x7e8.field_0x0.field_0x14 & 0x2000) {
field_0x7e8.field_0x0.field_0x14 |= 0xC000;
field_0x7e8.field_0x0.field_0x14 |= (u16) 0xC000;
} else {
field_0x7e8.field_0x0.field_0x14 &= ~0xC000;
field_0x7e8.field_0x0.field_0x14 &= (u16) ~0xC000;
}
int var_r27 = field_0x7e8.field_0x0.m_arrow_idx;
var_r27 = field_0x7e8.field_0x0.m_arrow_idx;
if (arrow != NULL && var_r27 >= 0 && var_r27 < arrow->num) {
field_0x7e8.field_0x2c = var_r27;
field_0x7e8.field_0x18 = arrow->m_entries[var_r27];
@ -2380,7 +2379,7 @@ bool dCamera_c::onStyleChange(s32 param_0, s32 param_1) {
/* 801647B0-80164878 15F0F0 00C8+00 1/1 0/0 0/0 .text onRoomChange__9dCamera_cFl */
int dCamera_c::onRoomChange(s32 i_roomNo) {
mRoomNo = i_roomNo;
field_0x004.mRoomNo = i_roomNo;
setFlag(0x1000);
int var_r29 = 0xFF;

View File

@ -971,7 +971,6 @@ f32 dummy_lit_3871(int val) {
/* 8008BE98-8008E750 0867D8 28B8+00 3/3 0/0 0/0 .text transEvCamera__9dCamera_cFi */
bool dCamera_c::transEvCamera(int param_1) {
// NONMATCHING - regalloc
struct mWork::trans* trans = &mWork.trans;
f32 mid_val;
@ -1052,7 +1051,7 @@ bool dCamera_c::transEvCamera(int param_1) {
trans->mRelActorID = fopAcM_GetID(trans->mRelActor);
if (mIsWolf == 1 && trans->mRelActor == mpPlayerActor) {
daPy_py_c* mPlayer = (daPy_py_c*)mpPlayerActor;
daMidna_c* mMidna = daPy_py_c::getMidnaActor();
daMidna_c* mMidna = (daMidna_c*) daPy_py_c::getMidnaActor();
cXyz mAdditionVec = WolfAdditionVec;
if (mPlayer->checkMidnaRide() != 0 && !mMidna->checkNoDraw()) {
mAdditionVec = MidnaAdditionVec;