d_camera / m_Do_ext / d_particle + minor various wip (#210)

This commit is contained in:
TakaRikka
2022-10-03 15:26:26 -07:00
committed by GitHub
parent 0309490521
commit 4913395dbd
267 changed files with 5153 additions and 8112 deletions
+195 -160
View File
@@ -99,17 +99,6 @@ struct dDemo_c {
static u8 m_object[4];
};
struct dCamera_c {
/* 80088A7C */ void StartEventCamera(int, int, ...);
/* 80088BBC */ void EndEventCamera(int);
/* 801614AC */ void Start();
/* 801614D0 */ void Stop();
/* 801614F4 */ void ChangeModeOK(s32);
/* 80163028 */ void SetTrimTypeForce(s32);
/* 80164B64 */ void GetCameraTypeFromCameraName(char const*);
/* 80181500 */ void GetForceLockOnActor();
};
struct JASKernel {
/* 80290B08 */ void getAramHeap();
};
@@ -3296,7 +3285,7 @@ void daAlink_c::tgHitCallback(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, dCcD_G
for (int i = 0; i < 3; i++) {
if (param_1 == &field_0x850[i]) {
field_0x2fb8 |= (1 << i);
field_0x36b4 = param_0->mCurrent.mPosition;
field_0x36b4 = param_0->current.pos;
return;
}
}
@@ -3417,14 +3406,18 @@ asm bool daAlink_c::modelCallBack(int param_0) {
/* 8009EC28-8009ECA0 099568 0078+00 1/1 0/0 0/0 .text daAlink_modelCallBack__FP8J3DJointi
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daAlink_modelCallBack(J3DJoint* param_0, int param_1) {
nofralloc
#include "asm/d/a/d_a_alink/daAlink_modelCallBack__FP8J3DJointi.s"
static int daAlink_modelCallBack(J3DJoint* p_joint, int param_1) {
int jntNo = p_joint->getJntNo();
daAlink_c* alink = (daAlink_c*)j3dSys.getModel()->getUserArea();
if (param_1 == 0) {
alink->modelCallBack(jntNo);
} else if (param_1 == 1 && alink->checkResetRootMtx(jntNo)) {
alink->resetRootMtx();
}
return 1;
}
#pragma pop
/* ############################################################################################## */
/* 80452CC4-80452CC8 0012C4 0004+00 137/137 0/0 0/0 .sdata2 @6109 */
@@ -4111,11 +4104,9 @@ SECTION_SDATA2 static f32 lit_32832 = -1.0f / 100.0f;
SECTION_SDATA2 static f32 lit_32833 = 16777215.0f;
/* 80453020-80453024 001620 0004+00 1/1 0/0 0/0 .sdata2 grassWhistleIdx$33097 */
SECTION_SDATA2 static u8 grassWhistleIdx[4] = {
0x00,
0x03,
0x00,
0x03,
SECTION_SDATA2 static u16 grassWhistleIdx[2] = {
3,
3,
};
/* 80453024-80453028 001624 0004+00 1/1 0/0 0/0 .sdata2 @33587 */
@@ -4607,14 +4598,16 @@ asm void daAlink_c::setHairAngle(cXyz* param_0, f32 param_1, f32 param_2) {
#pragma pop
/* 800A0744-800A07D8 09B084 0094+00 0/0 1/1 0/0 .text setLookPosFromOut__9daAlink_cFP4cXyz */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::setLookPosFromOut(cXyz* param_0) {
nofralloc
#include "asm/d/a/d_a_alink/setLookPosFromOut__9daAlink_cFP4cXyz.s"
void daAlink_c::setLookPosFromOut(cXyz* p_pos) {
if (i_checkEndResetFlg0(ERFLG0_UNK_4)) {
if (current.pos.abs2(mLookPosFromOut) < current.pos.abs2(*p_pos)) {
return;
}
}
i_onEndResetFlg0(ERFLG0_UNK_4);
mLookPosFromOut = *p_pos;
}
#pragma pop
/* ############################################################################################## */
/* 8038D658-8038D664 019CB8 000C+00 69/69 0/0 0/0 .rodata @3757 */
@@ -4626,14 +4619,21 @@ COMPILER_STRIP_GATE(0x8038D658, &lit_3757);
#include "d/a/d_a_alink_HIO_data.inc"
/* 800A07D8-800A0868 09B118 0090+00 2/2 0/0 0/0 .text checkAttentionPosAngle__9daAlink_cFP4cXyz */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::checkAttentionPosAngle(cXyz* param_0) {
nofralloc
#include "asm/d/a/d_a_alink/checkAttentionPosAngle__9daAlink_cFP4cXyz.s"
bool daAlink_c::checkAttentionPosAngle(cXyz* param_0) {
if (i_checkNoResetFlg1(FLG1_UNK_4)) {
return true;
}
int tmp;
if (i_checkModeFlg(MODE_RIDING) || i_checkEndResetFlg0(ERFLG0_UNK_400)) {
tmp = daAlinkHIO_horse_c0::m.field_0x52;
} else {
tmp = 0x6000;
}
s16 targetY = cLib_targetAngleY(&field_0x34e0, param_0);
return cLib_distanceAngleS(targetY, field_0x2fe6) <= tmp;
}
#pragma pop
/* 800A0868-800A093C 09B1A8 00D4+00 1/1 0/0 0/0 .text
* checkActorPosAngle__9daAlink_cFP10fopAc_ac_cPP4cXyz */
@@ -4729,7 +4729,7 @@ s16 daAlink_c::getMoveBGActorName(cBgS_PolyInfo& param_0, int param_1) {
dComIfG_Bgsp().ChkMoveBG_NoDABg(param_0) && dComIfG_Bgsp().GetActorPointer(param_0)) {
return fopAcM_GetName(dComIfG_Bgsp().GetActorPointer(param_0));
}
return 0xFD;
return PROC_ALINK;
}
/* 800A2280-800A22E8 09CBC0 0068+00 2/2 0/0 0/0 .text checkGoronRide__9daAlink_cFv */
@@ -6491,56 +6491,91 @@ asm void* daAlink_c::getAnimeResource(daPy_anmHeap_c* param_0, u16 param_1, u32
/* 800A3D7C-800A3E30 09E6BC 00B4+00 16/16 0/0 0/0 .text initModel__9daAlink_cFP12J3DModelDataUlUl
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DModel* daAlink_c::initModel(J3DModelData* param_0, u32 param_1, u32 param_2) {
nofralloc
#include "asm/d/a/d_a_alink/initModel__9daAlink_cFP12J3DModelDataUlUl.s"
J3DModel* daAlink_c::initModel(J3DModelData* i_modelData, u32 mdlFlags, u32 diffFlags) {
J3DTexture* tex = i_modelData->getTexture();
int texNo = tex->getNum() - 1;
int warpMaterial = false;
if (texNo >= 0) {
ResTIMG* timg = tex->getResTIMG(texNo);
if (mpWarpTexData == (u32)timg + timg->imageOffset) {
warpMaterial = true;
}
}
if (warpMaterial) {
dRes_info_c::onWarpMaterial(i_modelData);
diffFlags |= 0x2000400;
}
J3DModel* model = mDoExt_J3DModel__create(i_modelData, mdlFlags, diffFlags | 0x11000084);
if (warpMaterial) {
dRes_info_c::offWarpMaterial(i_modelData);
}
return model;
}
#pragma pop
/* 800A3E30-800A3E98 09E770 0068+00 1/1 0/0 0/0 .text initModel__9daAlink_cFUsUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::initModel(u16 param_0, u32 param_1) {
nofralloc
#include "asm/d/a/d_a_alink/initModel__9daAlink_cFUsUl.s"
J3DModel* daAlink_c::initModel(u16 param_0, u32 param_1) {
return initModel((J3DModelData*)dComIfG_getObjectRes(l_arcName, param_0), param_1);
}
#pragma pop
/* 800A3E98-800A3F00 09E7D8 0068+00 1/1 0/0 0/0 .text initModelEnv__9daAlink_cFUsUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::initModelEnv(u16 param_0, u32 param_1) {
nofralloc
#include "asm/d/a/d_a_alink/initModelEnv__9daAlink_cFUsUl.s"
J3DModel* daAlink_c::initModelEnv(u16 param_0, u32 param_1) {
return initModelEnv((J3DModelData*)dComIfG_getObjectRes(l_arcName, param_0), param_1);
}
#pragma pop
/* 800A3F00-800A3F98 09E840 0098+00 1/1 0/0 0/0 .text initDemoModel__9daAlink_cFPP8J3DModelPCcUl
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::initDemoModel(J3DModel** param_0, char const* param_1, u32 param_2) {
nofralloc
#include "asm/d/a/d_a_alink/initDemoModel__9daAlink_cFPP8J3DModelPCcUl.s"
int daAlink_c::initDemoModel(J3DModel** p_model, char const* resName, u32 param_2) {
*p_model = NULL;
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(dStage_roomControl_c::getDemoArcName(), resName);
if (modelData != NULL) {
*p_model = initModel(modelData, param_2);
if (*p_model == NULL) {
return 0;
}
}
return 1;
}
#pragma pop
/* 800A3F98-800A4068 09E8D8 00D0+00 1/1 0/0 1/1 .text initDemoBck__9daAlink_cFPP13mDoExt_bckAnmPCc
*/
// matches with literals
#ifdef NONMATCHING
int daAlink_c::initDemoBck(mDoExt_bckAnm** p_bck, char const* resName) {
J3DAnmTransform* res = (J3DAnmTransform*)dComIfG_getObjectRes(dStage_roomControl_c::getDemoArcName(), resName);
if (res != NULL) {
*p_bck = new mDoExt_bckAnm();
if (*p_bck == NULL) {
return 0;
}
if ((*p_bck)->init(res, 1, 2, 1.0f, 0, -1, false)) {
return 0;
}
}
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::initDemoBck(mDoExt_bckAnm** param_0, char const* param_1) {
asm int daAlink_c::initDemoBck(mDoExt_bckAnm** param_0, char const* param_1) {
nofralloc
#include "asm/d/a/d_a_alink/initDemoBck__9daAlink_cFPP13mDoExt_bckAnmPCc.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80392094-80392094 01E6F4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -12170,17 +12205,17 @@ void daAlink_c::setSelectEquipItem(int param_0) {
J3DModel* temp = mSwordModel;
if (checkWoodSwordEquip()) {
mSwordModel = field_0x0670;
field_0x06bc = field_0x066c;
mSwordModel = mWoodSwordModel;
mSheathModel = mpSwMSheathModel;
} else if (checkMasterSwordEquip()) {
mSwordModel = field_0x0668;
field_0x06bc = field_0x066c;
mSwordModel = mpSwMModel;
mSheathModel = mpSwMSheathModel;
} else {
if (!i_checkSwordGet()) {
mSwordChangeWaitTimer = 100;
}
mSwordModel = field_0x0660;
field_0x06bc = field_0x0664;
mSwordModel = mpSwAModel;
mSheathModel = mpSwASheathModel;
}
if (!i_checkSwordGet() || checkWoodSwordEquip() || i_checkNoResetFlg3(FLG3_UNK_1000000)) {
@@ -12212,11 +12247,11 @@ void daAlink_c::setSelectEquipItem(int param_0) {
}
}
} else if (checkMasterSwordEquip()) {
mSwordModel = field_0x0668;
field_0x06bc = field_0x066c;
mSwordModel = mpSwMModel;
mSheathModel = mpSwMSheathModel;
} else {
mSwordModel = field_0x0660;
field_0x06bc = field_0x0664;
mSwordModel = mpSwAModel;
mSheathModel = mpSwASheathModel;
}
if (mClothesChangeWaitTimer == 0) {
@@ -12284,7 +12319,7 @@ void daAlink_c::playerInit() {
field_0x850[1].SetH(lit_14955);
field_0xFB8.Set(*(dCcD_SrcSph*)l_sphSrc);
field_0xFB8.SetStts(&field_0x814);
field_0xFB8.StartCAt(mCurrent.mPosition);
field_0xFB8.StartCAt(current.pos);
mAnmHeap3.setBufferSize(0x20000);
mAnmHeap3.createHeap(daPy_anmHeap_c::HEAP_TYPE_4);
@@ -12299,8 +12334,8 @@ void daAlink_c::playerInit() {
mAnmHeap4.createHeap(daPy_anmHeap_c::HEAP_TYPE_4);
setShieldModel();
mSwordModel = field_0x0660;
field_0x06bc = field_0x0664;
mSwordModel = mpSwAModel;
mSheathModel = mpSwASheathModel;
field_0x814.Init(120, 0xFF, this);
field_0x306c = mCollisionRot.y + field_0x59e;
@@ -12309,12 +12344,12 @@ void daAlink_c::playerInit() {
field_0x122C[i].Set(*(dCcD_SrcCps*)l_atCpsSrc);
field_0x122C[i].SetStts(&field_0x814);
}
field_0x15F8.Set(*(dCcD_SrcCps*)l_atCpsSrc);
field_0x15F8.SetStts(&field_0x814);
field_0x15F8.SetAtType(0x10);
field_0x15F8.OnAtNoHitMark();
field_0x15F8.SetAtHitMark(0);
field_0x15F8.SetAtAtp(0);
mGuardAttackAtCps.Set(*(dCcD_SrcCps*)l_atCpsSrc);
mGuardAttackAtCps.SetStts(&field_0x814);
mGuardAttackAtCps.SetAtType(AT_TYPE_SHIELD_ATTACK);
mGuardAttackAtCps.OnAtNoHitMark();
mGuardAttackAtCps.SetAtHitMark(0);
mGuardAttackAtCps.SetAtAtp(0);
field_0x10F0.Set(*(dCcD_SrcCyl*)l_atCylSrc);
field_0x10F0.SetStts(&field_0x814);
@@ -12356,19 +12391,19 @@ void daAlink_c::playerInit() {
mAnmHeap9.createHeap(daPy_anmHeap_c::HEAP_TYPE_3);
resetBasAnime();
mZ2Link.init(&mCurrent.mPosition, &mEyePos, &field_0x3720);
mZ2Link.init(&current.pos, &mEyePos, &field_0x3720);
mZ2Link.initKantera(&field_0x360c);
mZ2Link.setKanteraState(0);
mProcID = 0x160;
m_swordBlur.m_blurTex = (void*)dComIfG_getObjectRes(l_arcName, 0x59); // blur.bti
J3DModelData* modelData = field_0x0660->getModelData();
J3DModelData* modelData = mpSwAModel->getModelData();
m_nSwordBtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 0x44); // al_swa.btk
m_nSwordBtk->searchUpdateMaterialID(modelData);
modelData->entryTexMtxAnimator(m_nSwordBtk);
J3DModelData* modelData2 = field_0x0668->getModelData();
J3DModelData* modelData2 = mpSwMModel->getModelData();
m_mSwordBtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 0x45); // al_swm.btk
m_mSwordBtk->searchUpdateMaterialID(modelData2);
modelData2->entryTexMtxAnimator(m_mSwordBtk);
@@ -12453,7 +12488,7 @@ void daAlink_c::playerInit() {
field_0x2f20.setOldPosP(&field_0x3624, &field_0x3630);
field_0x2fc3 = 10;
field_0x2f5c.mPosition = mCurrent.mPosition;
field_0x2f5c.mPosition = current.pos;
field_0x2f5c.mColor.r = 80;
field_0x2f5c.mColor.g = 80;
field_0x2f5c.mColor.b = 200;
@@ -12538,7 +12573,7 @@ int daAlink_c::create() {
BOOL enteringCity = false;
// Stage: City Room: Entrance Layer: 0
if (checkStageName("D_MN07") && dComIfGp_roomControl_getStayNo() == 0 &&
dComIfG_play_c::getLayerNo(0) == 0 && mCurrent.mPosition.y > 7500.0f) {
dComIfG_play_c::getLayerNo(0) == 0 && current.pos.y > 7500.0f) {
enteringCity = true;
}
@@ -12557,42 +12592,42 @@ int daAlink_c::create() {
fopAcM_setStageLayer(this);
if (sceneMode == 7) {
mCurrent.mPosition = dComIfGs_getTurnRestartPos();
current.pos = dComIfGs_getTurnRestartPos();
mCollisionRot.y = dComIfGs_getTurnRestartAngleY();
mCurrent.mAngle.y = mCollisionRot.y;
current.angle.y = mCollisionRot.y;
}
if ((!checkBossOctaIealRoom() && dComIfGs_Wolf_Change_Check() == 1) || startPoint == -4 ||
sceneMode == 9) {
mAttentionInfo.mPosition.set(mCurrent.mPosition.x + cM_ssin(mCollisionRot.y) * 70.0f,
mCurrent.mPosition.y + 80.0f,
mCurrent.mPosition.z + cM_scos(mCollisionRot.y) * 70.0f);
mAttentionInfo.mPosition.set(current.pos.x + cM_ssin(mCollisionRot.y) * 70.0f,
current.pos.y + 80.0f,
current.pos.z + cM_scos(mCollisionRot.y) * 70.0f);
i_onNoResetFlg1(0x2000000);
} else if (horseStart) {
mAttentionInfo.mPosition.y = mCurrent.mPosition.y + 150.0f;
mAttentionInfo.mPosition.y = current.pos.y + 150.0f;
} else {
mAttentionInfo.mPosition.y = mCurrent.mPosition.y + 275.0f;
mAttentionInfo.mPosition.y = current.pos.y + 275.0f;
}
mAttentionInfo.mFlags = -1;
if (!i_dComIfGp_getEventManager().dataLoaded()) {
return 0;
return cPhs_ZERO_e;
}
setArcName(i_checkWolf());
setOriginalHeap(&field_0x0638, 0xA2800);
if (dComIfG_resLoad(&mPhaseReq, mArcName, field_0x0638) != 4) {
return 0;
if (dComIfG_resLoad(&mPhaseReq, mArcName, field_0x0638) != cPhs_COMPLEATE_e) {
return cPhs_ZERO_e;
}
setShieldArcName();
setOriginalHeap(&field_0x0648, 0x7000);
if (dComIfG_resLoad(&mShieldPhaseReq, mShieldArcName, field_0x0648) != 4) {
return 0;
if (dComIfG_resLoad(&mShieldPhaseReq, mShieldArcName, field_0x0648) != cPhs_COMPLEATE_e) {
return cPhs_ZERO_e;
}
if (!fopAcM_entrySolidHeap(this, daAlink_createHeap, 0xC003E930)) {
return 5;
return cPhs_ERROR_e;
}
mAttention = &dComIfGp_getAttention();
@@ -12602,10 +12637,10 @@ int daAlink_c::create() {
bgWaitFlg = 1;
if (checkCanoeStart()) {
field_0x2900 = fopAcM_create(PROC_CANOE, 0, &mCurrent.mPosition, fopAcM_GetRoomNo(this),
field_0x2900 = fopAcM_create(PROC_CANOE, 0, &current.pos, fopAcM_GetRoomNo(this),
&mCollisionRot, NULL, -1);
} else if (sceneMode == 11) {
field_0x2900 = fopAcM_create(PROC_Obj_IceLeaf, 0x1FFFF, &mCurrent.mPosition,
field_0x2900 = fopAcM_create(PROC_Obj_IceLeaf, 0x1FFFF, &current.pos,
fopAcM_GetRoomNo(this), &mCollisionRot, NULL, -1);
} else {
field_0x2900 = -1;
@@ -12618,16 +12653,16 @@ int daAlink_c::create() {
if (mLinkAcch.GetGroundH() == lit_9138 ||
(startMode == 14 && !dComIfG_Bgsp().ChkMoveBG(mLinkAcch.m_gnd)) ||
(startPoint == -4 &&
fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchPortal, &mCurrent.mPosition) == NULL) ||
fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchPortal, &current.pos) == NULL) ||
(field_0x2900 != -1 && !fopAcM_SearchByID(field_0x2900)) ||
(checkCanoeStart() && !fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchCanoe, NULL)) ||
(checkBoarStart() && !fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchBoar, NULL)) ||
(startMode == 13 &&
(!mLinkAcch.ChkWaterHit() || mLinkAcch.m_wtr.GetHeight() < mCurrent.mPosition.y)) ||
(!mLinkAcch.ChkWaterHit() || mLinkAcch.m_wtr.GetHeight() < current.pos.y)) ||
((checkCarryStartLightBallA() || checkCarryStartLightBallB()) &&
!fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchLightBall, NULL)) ||
(horseStart && i_dComIfGp_getHorseActor() == NULL)) {
return 0;
return cPhs_ZERO_e;
}
if (var_r24) {
@@ -12636,8 +12671,8 @@ int daAlink_c::create() {
bgWaitFlg = 0;
dComIfGs_setRestartRoom(mCurrent.mPosition, mCollisionRot.y, getStartRoomNo());
field_0x3780 = mCurrent.mPosition;
dComIfGs_setRestartRoom(current.pos, mCollisionRot.y, getStartRoomNo());
field_0x3780 = current.pos;
mLinkAcch.ClrGndThinCellingOff();
fopAcM_SetRoomNo(this, dComIfG_Bgsp().GetRoomId(mLinkAcch.m_gnd) + 1);
setRoomInfo();
@@ -12666,7 +12701,7 @@ int daAlink_c::create() {
setSelectEquipItem(0);
setMatrix();
allAnimePlay();
field_0x0650->calc();
mpLinkModel->calc();
playFaceTextureAnime();
if (!i_checkWolf()) {
@@ -12678,7 +12713,7 @@ int daAlink_c::create() {
setBodyPartPos();
setHangWaterY();
field_0x850[0].SetC(mCurrent.mPosition);
field_0x850[0].SetC(current.pos);
field_0x3454 = field_0x3834.y;
setAttentionPos();
setItemActor();
@@ -12698,9 +12733,9 @@ int daAlink_c::create() {
1, 1);
}
fopAcM_create(PROC_MIDNA, prm, &mCurrent.mPosition, fopAcM_GetRoomNo(this), &mCollisionRot,
fopAcM_create(PROC_MIDNA, prm, &current.pos, fopAcM_GetRoomNo(this), &mCollisionRot,
NULL, -1);
checkSetNpcTks(&mCurrent.mPosition, fopAcM_GetRoomNo(this), 1);
checkSetNpcTks(&current.pos, fopAcM_GetRoomNo(this), 1);
if (startPoint == -4 && dComIfGp_TargetWarpPt_get() != -1 && !dComIfGp_TransportWarp_check()) {
daTagMhint_c::createPortalWarpMissTag(fopAcM_GetID(this), fopAcM_GetRoomNo(this));
@@ -12715,7 +12750,7 @@ int daAlink_c::create() {
}
}
return 4;
return cPhs_COMPLEATE_e;
}
#else
#pragma push
@@ -13977,7 +14012,7 @@ void dBgS_RoofChk::SetPos(cXyz const& pos) {
/* 800B1488-800B14B4 0ABDC8 002C+00 4/4 0/0 0/0 .text checkWaterPolygonUnder__9daAlink_cFv */
BOOL daAlink_c::checkWaterPolygonUnder() {
return i_checkModeFlg(MODE_SWIMMING) || mCurrent.mPosition.y < mWaterY;
return i_checkModeFlg(MODE_SWIMMING) || current.pos.y < mWaterY;
}
/* 800B14B4-800B154C 0ABDF4 0098+00 2/2 0/0 0/0 .text setWaterY__9daAlink_cFv */
@@ -14100,9 +14135,9 @@ BOOL daAlink_c::checkSlope() const {
void daAlink_c::setPlayerPosAndAngle(cXyz const* p_pos, s16 param_1, int param_2) {
if (checkEventRun() || param_2 != 0 || mSpecialMode != 0) {
if (p_pos != NULL) {
mCurrent.mPosition = *p_pos;
mNext.mPosition = mCurrent.mPosition;
field_0x3798 = mCurrent.mPosition;
current.pos = *p_pos;
next.pos = current.pos;
field_0x3798 = current.pos;
i_onEndResetFlg0(ERFLG0_UNK_800000);
i_onEndResetFlg2(ERFLG2_UNK_100);
if (mDemo.getDemoMode() != 0x59) {
@@ -14111,12 +14146,12 @@ void daAlink_c::setPlayerPosAndAngle(cXyz const* p_pos, s16 param_1, int param_2
}
mCollisionRot.y = param_1;
mCurrent.mAngle.y = param_1;
current.angle.y = param_1;
field_0x2fe6 = mCollisionRot.y;
if ((mProcID == PROC_TALK || mProcID == PROC_TRADE_ITEM_OUT) && !i_checkWolf()) {
if (field_0x3198 != 0) {
field_0x37c8.x = mCurrent.mPosition.x;
field_0x37c8.z = mCurrent.mPosition.z;
field_0x37c8.x = current.pos.x;
field_0x37c8.z = current.pos.z;
}
}
@@ -14126,12 +14161,12 @@ void daAlink_c::setPlayerPosAndAngle(cXyz const* p_pos, s16 param_1, int param_2
if (checkHorseRide() || checkSpinnerRide()) {
fopAc_ac_c* rideAc = mRideAcKeep.getActor();
rideAc->mCurrent.mPosition = mCurrent.mPosition;
rideAc->current.pos = current.pos;
rideAc->mCollisionRot.y = mCollisionRot.y;
rideAc->mCurrent.mAngle.y = mCollisionRot.y;
rideAc->current.angle.y = mCollisionRot.y;
rideAc->mSpeed.y = FLOAT_LABEL(lit_6108);
} else {
i_dComIfGp_getHorseActor()->setHorsePosAndAngle(&mCurrent.mPosition, mCollisionRot.y);
i_dComIfGp_getHorseActor()->setHorsePosAndAngle(&current.pos, mCollisionRot.y);
}
field_0x814.ClrCcMove();
@@ -14153,9 +14188,9 @@ asm void daAlink_c::setPlayerPosAndAngle(cXyz const* param_0, s16 param_1, int p
void daAlink_c::setPlayerPosAndAngle(cXyz const* p_pos, csXyz const* p_angle) {
if (checkEventRun() || mSpecialMode != 0) {
if (p_pos != NULL) {
mCurrent.mPosition = *p_pos;
mNext.mPosition = mCurrent.mPosition;
field_0x3798 = mCurrent.mPosition;
current.pos = *p_pos;
next.pos = current.pos;
field_0x3798 = current.pos;
i_onEndResetFlg0(ERFLG0_UNK_800000);
i_onEndResetFlg2(ERFLG2_UNK_100);
mSpeed.y = FLOAT_LABEL(lit_6108);
@@ -14163,7 +14198,7 @@ void daAlink_c::setPlayerPosAndAngle(cXyz const* p_pos, csXyz const* p_angle) {
if (p_angle != NULL) {
mCollisionRot = *p_angle;
mCurrent.mAngle.y = mCollisionRot.y;
current.angle.y = mCollisionRot.y;
field_0x2fe6 = mCollisionRot.y;
}
@@ -14174,15 +14209,15 @@ void daAlink_c::setPlayerPosAndAngle(cXyz const* p_pos, csXyz const* p_angle) {
/* 800B24F4-800B25CC 0ACE34 00D8+00 1/0 0/0 0/0 .text setPlayerPosAndAngle__9daAlink_cFPA4_f */
void daAlink_c::setPlayerPosAndAngle(Mtx param_0) {
if (checkEventRun() || mSpecialMode != 0) {
mCurrent.mPosition.x = param_0[0][3];
mCurrent.mPosition.y = param_0[1][3];
mCurrent.mPosition.z = param_0[2][3];
mNext.mPosition = mCurrent.mPosition;
field_0x3798 = mCurrent.mPosition;
current.pos.x = param_0[0][3];
current.pos.y = param_0[1][3];
current.pos.z = param_0[2][3];
next.pos = current.pos;
field_0x3798 = current.pos;
i_onEndResetFlg0(ERFLG0_UNK_800000);
i_onEndResetFlg2(ERFLG2_UNK_100);
mDoMtx_MtxToRot(param_0, &mCollisionRot);
mCurrent.mAngle.y = mCollisionRot.y;
current.angle.y = mCollisionRot.y;
field_0x2fe6 = mCollisionRot.y;
mSpeed.y = FLOAT_LABEL(lit_6108);
field_0x814.ClrCcMove();
@@ -14634,7 +14669,7 @@ asm void daAlink_c::checkServiceWaitMode() {
/* 800B48D0-800B4908 0AF210 0038+00 18/18 0/0 0/0 .text setJumpMode__9daAlink_cFv */
void daAlink_c::setJumpMode() {
onModeFlg(MODE_JUMP);
mLastJumpPos = mCurrent.mPosition;
mLastJumpPos = current.pos;
mFallHeight = mLastJumpPos.y;
field_0x33c8 = mLastJumpPos.y;
}
@@ -14732,7 +14767,7 @@ asm BOOL daAlink_c::checkWaitAction() {
/* 800B5BC0-800B5C34 0B0500 0074+00 3/3 0/0 0/0 .text setFallVoice__9daAlink_cFv */
void daAlink_c::setFallVoice() {
if (mFallVoiceInit == 0 && lit_8782 * (mFallHeight - mCurrent.mPosition.y) > lit_8676) {
if (mFallVoiceInit == 0 && lit_8782 * (mFallHeight - current.pos.y) > lit_8676) {
voiceStart(Z2SE_AL_V_FALL);
mFallVoiceInit = 1;
}
@@ -14934,7 +14969,7 @@ asm void daAlink_c::checkUpperItemAction() {
/* 800B7B7C-800B7BF8 0B24BC 007C+00 1/1 0/0 0/0 .text orderPeep__9daAlink_cFv */
void daAlink_c::orderPeep() {
field_0x2fad = field_0x27f4->getSceneListID();
field_0x2fad = ((kytag05_class*)field_0x27f4)->getSceneListID();
field_0x2ff2 = 20;
fopAcM_orderOtherEvent(this, field_0x27f4, l_peepEventName, 0xFFFF, 1, 0);
if (i_checkWolf()) {
@@ -15049,7 +15084,7 @@ BOOL daAlink_c::checkSideRollAction(int param_0) {
} else {
if (mTargetedActor != NULL) {
if (checkEnemyGroup(mTargetedActor) &&
mTargetedActor->mCurrent.mPosition.abs2XZ(mCurrent.mPosition) <= lit_6237) {
mTargetedActor->current.pos.abs2XZ(current.pos) <= lit_6237) {
return procSideRollInit(param_0);
} else {
return procTurnMoveInit(param_0);
@@ -15570,7 +15605,7 @@ int daAlink_c::checkSceneChange(int exitID) {
((exitID != 0x3F || mExitID != 0x3F) &&
(i_checkModeFlg(0x40000) || i_checkModeFlg(0x400) || mLinkAcch.ChkGroundHit() ||
mProcID == PROC_DOOR_OPEN || mProcID == PROC_WARP || mProcID == PROC_WOLF_DIG_THROUGH ||
(field_0x3174 == 5 && field_0x33c8 - mCurrent.mPosition.y > 500.0f))) ||
(field_0x3174 == 5 && field_0x33c8 - current.pos.y > 500.0f))) ||
(mExitID & 0x8000 && i_checkModeFlg(2))) {
if (field_0x3174 == 5 || (mExitID & 0x8000 && mExitDirection == 0xFF)) {
mLinkAcch.i_ClrGroundHit();
@@ -15588,7 +15623,7 @@ int daAlink_c::checkSceneChange(int exitID) {
cXyz sp8;
for (; hStop != NULL; hStop = hStop->getNext()) {
if (hStop->getActiveFlg()) {
fpoAcM_relativePos(hStop, &mCurrent.mPosition, &sp8);
fpoAcM_relativePos(hStop, &current.pos, &sp8);
if (sp8.y >= -200.0f && sp8.y <= hStop->mScale.y + 600.0f &&
fabsf(sp8.x) <= hStop->mScale.x && fabsf(sp8.z) <= hStop->mScale.z) {
@@ -15855,12 +15890,12 @@ asm void daAlink_c::setMetamorphoseModel(int param_0) {
/* 800BF854-800BF884 0BA194 0030+00 10/10 0/0 0/0 .text keepItemData__9daAlink_cFv */
void daAlink_c::keepItemData() {
field_0x30ce = mEquipItem;
deleteEquipItem(0, 0);
deleteEquipItem(FALSE, FALSE);
}
/* 800BF884-800BF8D0 0BA1C4 004C+00 8/8 0/0 0/0 .text returnKeepItemData__9daAlink_cFv */
void daAlink_c::returnKeepItemData() {
deleteEquipItem(0, 0);
deleteEquipItem(FALSE, FALSE);
mEquipItem = field_0x30ce;
field_0x30ce = NO_ITEM;
makeItemType();
@@ -15917,10 +15952,10 @@ BOOL daAlink_c::setItemModel() {
#ifdef NONMATCHING
BOOL daAlink_c::setItemActor() {
if (mEquipItem == BOOMERANG) {
fopAc_ac_c* actor = (fopAc_ac_c*)fopAcM_fastCreate(PROC_BOOMERANG, 0, &mCurrent.mPosition,
fopAc_ac_c* actor = (fopAc_ac_c*)fopAcM_fastCreate(PROC_BOOMERANG, 0, &current.pos,
-1, NULL, NULL, -1, NULL, NULL);
if (actor == NULL) {
deleteEquipItem(0, 0);
deleteEquipItem(FALSE, FALSE);
return 0;
}
@@ -15930,10 +15965,10 @@ BOOL daAlink_c::setItemActor() {
}
if (mEquipItem == COPY_ROD) {
fopAc_ac_c* actor = (fopAc_ac_c*)fopAcM_fastCreate(PROC_CROD, 0, &mCurrent.mPosition, -1,
fopAc_ac_c* actor = (fopAc_ac_c*)fopAcM_fastCreate(PROC_CROD, 0, &current.pos, -1,
NULL, NULL, -1, NULL, NULL);
if (actor == NULL) {
deleteEquipItem(0, 0);
deleteEquipItem(FALSE, FALSE);
return 0;
}
@@ -15949,7 +15984,7 @@ BOOL daAlink_c::setItemActor() {
if (checkIronBallWaitAnime()) {
resetUpperAnime(UPPER_NOW, -1.0f);
}
deleteEquipItem(0, 0);
deleteEquipItem(FALSE, FALSE);
return 0;
}
@@ -16350,9 +16385,9 @@ asm void daAlink_c::setFrontRollCrashShock(u8 param_0) {
/* 800C1DAC-800C1DE0 0BC6EC 0034+00 1/0 0/0 0/0 .text getModelJointMtx__9daAlink_cFUs */
MtxP daAlink_c::getModelJointMtx(u16 param_0) {
if (param_0 >= field_0x30c6) {
return field_0x0650->mBaseTransformMtx;
return mpLinkModel->mBaseTransformMtx;
}
return field_0x0650->i_getAnmMtx(param_0);
return mpLinkModel->i_getAnmMtx(param_0);
}
/* 800C1DE0-800C1E0C 0BC720 002C+00 1/0 0/0 0/0 .text onFrollCrashFlg__9daAlink_cFUci */
@@ -16689,10 +16724,10 @@ int daAlink_c::loadModelDVD() {
if (mClothesChangeWaitTimer == 2) {
mEyeHL1.remove();
mEyeHL2.remove();
field_0x79c = 0;
field_0x7a0 = 0;
field_0x7a4 = 0;
field_0x7a8 = 0;
field_0x79c = NULL;
mpWlMidnaHatModel = NULL;
field_0x7a4 = NULL;
mpWlMidnaHairModel = NULL;
if (!i_checkNoResetFlg2(FLG2_UNK_280000)) {
dComIfG_resDelete(&mPhaseReq, mArcName);
@@ -16710,7 +16745,7 @@ int daAlink_c::loadModelDVD() {
mClothesChangeWaitTimer = 0;
changeLink(1);
} else {
if (dComIfG_resLoad(&mPhaseReq, mArcName, field_0x0638) == 4) {
if (dComIfG_resLoad(&mPhaseReq, mArcName, field_0x0638) == cPhs_COMPLEATE_e) {
mClothesChangeWaitTimer = 0;
if (mProcID == PROC_METAMORPHOSE || mProcID == PROC_METAMORPHOSE_ONLY) {
@@ -16755,7 +16790,7 @@ int daAlink_c::loadShieldModelDVD() {
field_0x0648->freeAll();
setShieldArcName();
} else if (mShieldChangeWaitTimer == 1) {
if (dComIfG_resLoad(&mShieldPhaseReq, mShieldArcName, field_0x0648) == 4) {
if (dComIfG_resLoad(&mShieldPhaseReq, mShieldArcName, field_0x0648) == cPhs_COMPLEATE_e) {
mShieldChangeWaitTimer = 0;
setShieldModel();
} else {
@@ -17316,7 +17351,7 @@ MtxP daPy_py_c::getInvMtx() {
/* 8014151C-80141524 13BE5C 0008+00 1/0 0/0 0/0 .text getShadowTalkAtnPos__9daPy_py_cFv
*/
cXyz* daPy_py_c::getShadowTalkAtnPos() {
return &mCurrent.mPosition;
return &current.pos;
}
/* 80141524-8014152C 13BE64 0008+00 1/0 0/0 0/0 .text getLeftItemMatrix__9daPy_py_cFv */
@@ -17816,7 +17851,7 @@ cXyz* daPy_py_c::getMagneHitPos() {
/* 801417C0-801417C8 13C100 0008+00 1/0 0/0 0/0 .text getMagneBootsTopVec__9daPy_py_cFv
*/
cXyz* daPy_py_c::getMagneBootsTopVec() {
return &mCurrent.mPosition;
return &current.pos;
}
/* 801417C8-801417D0 13C108 0008+00 1/0 0/0 0/0 .text checkUseKandelaar__9daPy_py_cFi */
+1 -1
View File
@@ -128,7 +128,7 @@ void daAlink_c::setCopyRodModel() {
field_0x122C[0].OnAtSetBit();
field_0x122C[0].SetAtHitCallback(NULL);
field_0x122C[0].SetAtMtrl(0);
mHeldItemModel->i_setBaseTRMtx(field_0x0650->i_getAnmMtx(field_0x30c0));
mHeldItemModel->i_setBaseTRMtx(mpLinkModel->i_getAnmMtx(field_0x30c0));
mHeldItemModel->calc();
}
+11 -11
View File
@@ -81,7 +81,7 @@ asm bool daAlink_c::checkCutFinishJumpUp() {
/* 800D1088-800D10E0 0CB9C8 0058+00 2/2 0/0 0/0 .text changeCutFast__9daAlink_cFv */
void daAlink_c::changeCutFast() {
deleteEquipItem(0, 0);
deleteEquipItem(FALSE, FALSE);
setSwordModel();
mComboCutCount = 3;
checkCutAction();
@@ -117,10 +117,10 @@ void daAlink_c::setSwordModel() {
void daAlink_c::offSwordModel() {
mDoAud_bgmSetSwordUsing(0);
if (mSwordModel == field_0x0668 || mSwordModel == field_0x0660) {
if (mSwordModel == mpSwMModel || mSwordModel == mpSwAModel) {
mSwordModel->getModelData()->getMaterialNodePointer(0)->getShape()->hide();
} else if (mSwordModel == field_0x0670) {
field_0x0670->getModelData()->getMaterialNodePointer(1)->getShape()->show();
} else if (mSwordModel == mWoodSwordModel) {
mWoodSwordModel->getModelData()->getMaterialNodePointer(1)->getShape()->show();
}
}
@@ -486,7 +486,7 @@ void daAlink_c::setCutJumpSpeed(int cut_type) {
// cut_type 0 = standing jump attack
if (mTargetedActor != NULL && cut_type == 0) {
mCollisionRot.y = cLib_targetAngleY(&mCurrent.mPosition, &mTargetedActor->mEyePos);
mCollisionRot.y = cLib_targetAngleY(&current.pos, &mTargetedActor->mEyePos);
cXyz targetPos(mTargetedActor->mEyePos.x - (cM_ssin(mCollisionRot.y) * 70.0f),
mTargetedActor->mEyePos.y + 50.0f,
mTargetedActor->mEyePos.z - (cM_scos(mCollisionRot.y) * 70.0f));
@@ -499,14 +499,14 @@ void daAlink_c::setCutJumpSpeed(int cut_type) {
f32 dvar12 = mSpeed.y + mGravity;
f32 dvar10 = 1.0f / mGravity;
f32 fvar1 = targetPos.y - (mCurrent.mPosition.y - (dvar10 * (dvar12 * dvar12) * 0.5f));
f32 fvar1 = targetPos.y - (current.pos.y - (dvar10 * (dvar12 * dvar12) * 0.5f));
if (fvar1 > 0.0f) {
fvar1 = 0.0f;
}
f32 sqrt = JMAFastSqrt(fvar1 * 2.0f * dvar10);
f32 speedDiv = sqrt - (dvar12 * dvar10);
f32 squareDist = mCurrent.mPosition.absXZ(targetPos);
f32 squareDist = current.pos.absXZ(targetPos);
if (squareDist > 500.0f) {
squareDist = 500.0f;
@@ -639,7 +639,7 @@ bool daAlink_c::procCutJumpInit(int jump_type) {
mSpeed.y = daAlinkHIO_cutJump_c0::m.mBaseJumpSpeedV;
}
setCutJumpSpeed(jump_type);
mCurrent.mAngle.y = mCollisionRot.y;
current.angle.y = mCollisionRot.y;
setSwordAtParam(dCcG_At_Spl_UNK_01, 3, 1, 3, daAlinkHIO_cut_c0::m.mSwordLength,
daAlinkHIO_cut_c0::m.mSwordRadius);
setCutType(TYPE_CUT_JUMP);
@@ -652,12 +652,12 @@ bool daAlink_c::procCutJumpInit(int jump_type) {
/* 800D43F8-800D452C 0CED38 0134+00 1/0 0/0 0/0 .text procCutJump__9daAlink_cFv */
#ifdef NONMATCHING
bool daAlink_c::procCutJump() {
if (mCurrent.mAngle.y == mCollisionRot.y && changeCutReverseProc(ANM_CUT_JUMP)) {
mCurrent.mAngle.y += 0x8000;
if (current.angle.y == mCollisionRot.y && changeCutReverseProc(ANM_CUT_JUMP)) {
current.angle.y += 0x8000;
mNormalSpeed = 27.0f;
cXyz xyz(0.0f, 1.0f, 0.0f);
dComIfGp_getVibration().StartShock(5, 31, xyz);
} else if (mCurrent.mAngle.y != mCollisionRot.y) {
} else if (current.angle.y != mCollisionRot.y) {
cLib_chaseF(&mNormalSpeed, 5.0f, 1.0f);
}
+9 -9
View File
@@ -1103,7 +1103,7 @@ asm void daAlink_c::procGanonFinishInit() {
/* 8011EA78-8011EAE8 1193B8 0070+00 1/0 0/0 0/0 .text procGanonFinish__9daAlink_cFv */
bool daAlink_c::procGanonFinish() {
i_onEndResetFlg1(GANON_FINISH);
mCurrent.mPosition = field_0x37c8;
current.pos = field_0x37c8;
if (mFrameCtrl1[0].checkAnmEnd()) {
setSingleAnimeBaseMorf(ANM_GANON_FINISH, lit_6041);
}
@@ -1140,7 +1140,7 @@ int daAlink_c::procMasterSwordStickInit() {
setSingleAnimeBase(ANM_MASTER_SWORD_STICK_INIT);
voiceStart(Z2SE_AL_V_MSTR_SW_STICK);
mNormalSpeed = FLOAT_LABEL(lit_6108);
mCurrent.mAngle.y = mCollisionRot.y;
current.angle.y = mCollisionRot.y;
mCommonCounter = 0;
return 1;
@@ -1202,9 +1202,9 @@ int daAlink_c::procDungeonWarpReadyInit() {
u32 id;
if (checkItemSetButton(DUNGEON_EXIT) != 2) {
id = fopAcM_create(PROC_OBJ_TKS, 0, &mCurrent.mPosition, fopAcM_GetRoomNo(this), &mCollisionRot, NULL, -1);
id = fopAcM_create(PROC_OBJ_TKS, 0, &current.pos, fopAcM_GetRoomNo(this), &mCollisionRot, NULL, -1);
} else {
id = fopAcM_create(PROC_NPC_TKC, 2, &mCurrent.mPosition, fopAcM_GetRoomNo(this), &mCollisionRot, NULL, -1);
id = fopAcM_create(PROC_NPC_TKC, 2, &current.pos, fopAcM_GetRoomNo(this), &mCollisionRot, NULL, -1);
}
if (id == -1) {
@@ -1215,7 +1215,7 @@ int daAlink_c::procDungeonWarpReadyInit() {
commonProcInit(PROC_DUNGEON_WARP_READY);
setSingleAnimeBase(ANM_DUNGEON_WARP_READY_INIT);
mNormalSpeed = FLOAT_LABEL(lit_6108);
mCurrent.mAngle.y = mCollisionRot.y;
current.angle.y = mCollisionRot.y;
field_0x32cc = id;
mCommonCounter = 0;
keepItemData();
@@ -1268,7 +1268,7 @@ int daAlink_c::procDungeonWarp() {
if (mCommonCounter > 0x4000) {
mCommonCounter = 0x4000;
} else {
mCurrent.mPosition.y += 1.0f;
current.pos.y += 1.0f;
}
f32 sin = cM_ssin(mCommonCounter);
@@ -1280,7 +1280,7 @@ int daAlink_c::procDungeonWarp() {
} else {
if (mCommonCounter == 0x4000) {
if (field_0x3010 == 0) {
dComIfGp_particle_set(0xA61, &mCurrent.mPosition, &mTevStr, NULL, NULL);
dComIfGp_particle_set(0xA61, &current.pos, &mTevStr, NULL, NULL);
field_0x3010 = 1;
}
@@ -1300,14 +1300,14 @@ int daAlink_c::procDungeonWarp() {
field_0x3012 = 1;
}
mCurrent.mPosition.y += 5.0f;
current.pos.y += 5.0f;
field_0x2b98 = (1.0f - mScale.y) * 100.0f;
} else if (mCommonCounter >= 0x2000) {
cLib_chaseF(&mScale.x, 0.8f, 0.01f);
}
mScale.z = mScale.x;
field_0x0650->setBaseScale(mScale);
mpLinkModel->setBaseScale(mScale);
}
return 1;
+3 -3
View File
@@ -73,8 +73,8 @@ bool daAlink_c::exchangeGrabActor(fopAc_ac_c* p_actor) {
actor->mCollisionRot.z = 0;
actor->mCollisionRot.x = 0;
if (checkGrabCarryActor()) {
actor->mCurrent.mAngle.z = 0;
actor->mCurrent.mAngle.x = 0;
actor->current.angle.z = 0;
actor->current.angle.x = 0;
}
setGrabItemActor(p_actor);
return true;
@@ -87,7 +87,7 @@ bool daAlink_c::setForceGrab(fopAc_ac_c* p_actor, int param_1, int param_2) {
((i_checkModeFlg(MODE_UNK_10000000) &&
(checkHorseNoUpperAnime() || checkHorseTurnAnime())) ||
param_2 != 0 && checkHookshotAnime()))) {
deleteEquipItem(1, 0);
deleteEquipItem(TRUE, FALSE);
setGrabItemActor(p_actor);
field_0x33e4 = lit_8785;
setGrabUpperAnime(daAlinkHIO_basic_c0::m.mAnmBlendFactor);
+1 -1
View File
@@ -236,7 +236,7 @@ void daAlink_c::setHookshotModel() {
field_0x122C[0].SetAtAtp(0);
field_0x122C[0].SetR(lit_7808);
field_0x122C[0].SetAtSe(8);
field_0x122C[0].SetAtType(0x4000);
field_0x122C[0].SetAtType(AT_TYPE_HOOKSHOT);
field_0x122C[0].SetAtHitMark(1);
field_0x122C[0].OnAtSetBit();
field_0x122C[0].SetAtHitCallback(daAlink_hookshotAtHitCallBack);
+38 -38
View File
@@ -1,7 +1,7 @@
/* 800C2DDC-800C2EAC 0BD71C 00D0+00 17/17 0/0 0/0 .text
* procPreActionUnequipInit__9daAlink_cFiP10fopAc_ac_c */
#ifdef NONMATCHING
void daAlink_c::procPreActionUnequipInit(int param_0, fopAc_ac_c* param_1) {
int daAlink_c::procPreActionUnequipInit(int param_0, fopAc_ac_c* param_1) {
commonProcInit(ACT_PROC_PREACTION_UNEQUIP);
mNormalSpeed = 0.0f;
setBlendMoveAnime(4.0f);
@@ -31,7 +31,7 @@ void daAlink_c::procPreActionUnequipInit(int param_0, fopAc_ac_c* param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::procPreActionUnequipInit(int param_0, fopAc_ac_c* param_1) {
asm int daAlink_c::procPreActionUnequipInit(int param_0, fopAc_ac_c* param_1) {
nofralloc
#include "asm/d/a/d_a_alink/procPreActionUnequipInit__9daAlink_cFiP10fopAc_ac_c.s"
}
@@ -55,7 +55,7 @@ int daAlink_c::procServiceWaitInit() {
commonProcInit(PROC_SERVICE_WAIT);
setSingleAnimeBase(ANM_SERVICE_WAIT);
mNormalSpeed = FLOAT_LABEL(lit_6108);
mCurrent.mAngle.y = mCollisionRot.y;
current.angle.y = mCollisionRot.y;
field_0x2f98 = 4;
return 1;
}
@@ -249,7 +249,7 @@ int daAlink_c::procWaitTurnInit() {
mNormalSpeed = FLOAT_LABEL(lit_6108);
}
field_0x300e = field_0x2fe2;
mCurrent.mAngle.y = mCollisionRot.y;
current.angle.y = mCollisionRot.y;
return 1;
}
@@ -263,7 +263,7 @@ int daAlink_c::procWaitTurn() {
return procFloorDownReboundInit();
} else {
s16 angle = cLib_addCalcAngleS(&mCollisionRot.y, field_0x300e, 30, 0x3CDF, 8000);
mCurrent.mAngle.y = mCollisionRot.y;
current.angle.y = mCollisionRot.y;
if (checkNextActionFromButton()) {
return 1;
} else {
@@ -297,7 +297,7 @@ int daAlink_c::procMoveTurnInit(int param_0) {
field_0x300e = (daAlinkHIO_move_c0::m.mMaxTurnAngle << 2) + 19030;
field_0x3010 = daAlinkHIO_move_c0::m.mMaxTurnAngle << 1;
field_0x300a = 2;
mCurrent.mAngle.y = field_0x2fe2;
current.angle.y = field_0x2fe2;
mNormalSpeed *= lit_5943;
} else {
field_0x300e = daAlinkHIO_move_c0::m.mMaxTurnAngle << 1;
@@ -312,7 +312,7 @@ int daAlink_c::procMoveTurnInit(int param_0) {
/* 800C3D38-800C3DA0 0BE678 0068+00 1/0 0/0 0/0 .text procMoveTurn__9daAlink_cFv */
int daAlink_c::procMoveTurn() {
setSpeedAndAngleNormal();
cLib_addCalcAngleS(&mCollisionRot.y, mCurrent.mAngle.y, field_0x300a, field_0x300e,
cLib_addCalcAngleS(&mCollisionRot.y, current.angle.y, field_0x300a, field_0x300e,
field_0x3010);
if (!checkNextAction(0)) {
@@ -331,7 +331,7 @@ int daAlink_c::procSideStepInit(int jump_type) {
field_0x2f98 = jump_type;
if (field_0x2f98 == 1) {
mCurrent.mAngle.y = mCollisionRot.y + 0x8000;
current.angle.y = mCollisionRot.y + 0x8000;
setSingleAnimeParam(ANM_BACK_JUMP, &daAlinkHIO_sideStep_c0::m.mBackJumpAnm);
mNormalSpeed = daAlinkHIO_sideStep_c0::m.mBackJumpSpeedH;
mSpeed.y = daAlinkHIO_sideStep_c0::m.mBackJumpSpeedV;
@@ -340,10 +340,10 @@ int daAlink_c::procSideStepInit(int jump_type) {
daAlink_ANM anm_id;
if (field_0x2f98 == 2) {
anm_id = ANM_SIDE_STEP_LEFT;
mCurrent.mAngle.y = mCollisionRot.y + 0x4000;
current.angle.y = mCollisionRot.y + 0x4000;
} else {
anm_id = ANM_SIDE_STEP_RIGHT;
mCurrent.mAngle.y = mCollisionRot.y - 0x4000;
current.angle.y = mCollisionRot.y - 0x4000;
}
setSingleAnimeParam(anm_id, &daAlinkHIO_sideStep_c0::m.mSideJumpAnm);
mNormalSpeed = daAlinkHIO_sideStep_c0::m.mSideJumpSpeedH;
@@ -367,9 +367,9 @@ int daAlink_c::procSideStep() {
s16 actor_angle = fopAcM_searchActorAngleY(this, mTargetedActor);
cLib_addCalcAngleS(&mCollisionRot.y, actor_angle, 5, 0x5E8, 0x13C);
if (field_0x2f98 == 2) {
mCurrent.mAngle.y = mCollisionRot.y + 0x4000;
current.angle.y = mCollisionRot.y + 0x4000;
} else {
mCurrent.mAngle.y = mCollisionRot.y - 0x4000;
current.angle.y = mCollisionRot.y - 0x4000;
}
}
if (doTrigger() && field_0x300a != 0) {
@@ -387,7 +387,7 @@ int daAlink_c::procSideStep() {
} else if (checkNoUpperAnime() && checkForceSwordSwing()) {
setCutDash(1, 0);
} else if (mDemo.getDemoMode() != 16 &&
mCurrent.mPosition.y < mLastJumpPos.y - daAlinkHIO_sideStep_c0::m.mFallHeight) {
current.pos.y < mLastJumpPos.y - daAlinkHIO_sideStep_c0::m.mFallHeight) {
return procFallInit(2, daAlinkHIO_sideStep_c0::m.mFallInterpolation);
}
@@ -433,7 +433,7 @@ int daAlink_c::procSideStepLandInit() {
i_onResetFlg1(0x30);
mNormalSpeed = FLOAT_LABEL(lit_6108);
mCommonCounter = 0;
mCurrent.mAngle.y = mCollisionRot.y;
current.angle.y = mCollisionRot.y;
setStepLandVibration();
return 1;
}
@@ -472,7 +472,7 @@ int daAlink_c::procSlideInit(s16 param_0) {
field_0x814.SetWeight(255);
field_0x3090 = 8;
mCurrent.mAngle.y = param_0;
current.angle.y = param_0;
if (getMoveBGActorName(mLinkAcch.m_gnd, 0) == 0xD4) {
field_0x300e = 1;
@@ -550,14 +550,14 @@ int daAlink_c::procSlideLand() {
}
if (ctrl->checkAnmEnd()) {
mCurrent.mAngle.y = mCollisionRot.y;
current.angle.y = mCollisionRot.y;
checkNextAction(0);
} else {
if (ctrl->getFrame() > field_0x3478) {
s16 tmp_angle = mCurrent.mAngle.y;
mCurrent.mAngle.y = mCollisionRot.y;
s16 tmp_angle = current.angle.y;
current.angle.y = mCollisionRot.y;
if (!checkNextAction(1)) {
mCurrent.mAngle.y = tmp_angle;
current.angle.y = tmp_angle;
}
}
}
@@ -599,7 +599,7 @@ int daAlink_c::procFrontRollInit() {
} else {
mNormalSpeed *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityX;
}
mCurrent.mAngle.y = mCollisionRot.y;
current.angle.y = mCollisionRot.y;
voiceStart(Z2SE_AL_V_BACKTEN);
mCommonCounter = 0;
setFootEffectProcType(0);
@@ -607,7 +607,7 @@ int daAlink_c::procFrontRollInit() {
i_onNoResetFlg0(2);
}
if (i_checkEquipHeavyBoots()) {
field_0xFB8.SetAtType(0x200000);
field_0xFB8.SetAtType(AT_TYPE_HEAVY_BOOTS);
field_0xFB8.SetAtHitMark(1);
field_0xFB8.SetAtSe(9);
field_0xFB8.SetAtAtp(2);
@@ -1016,7 +1016,7 @@ int daAlink_c::procCoMetamorphoseInit() {
mCommonCounter = mCollisionRot.x;
}
} else {
deleteEquipItem(0, 1);
deleteEquipItem(FALSE, TRUE);
if (i_checkEndResetFlg0(ERFLG0_UNK_2) && checkStageName("D_MN08")) {
field_0x3010 = 1;
@@ -1046,22 +1046,22 @@ int daAlink_c::procCoMetamorphoseInit() {
field_0x3588 = l_waitBaseAnime;
field_0x3480 = daAlinkHIO_basic_c0::m.mLinkWolfTransformSpeed;
cXyz pos(mCurrent.mPosition.x + (cM_ssin(mCollisionRot.y) * 100.0f),
mCurrent.mPosition.y + 300.0f,
mCurrent.mPosition.z + (cM_scos(mCollisionRot.y) * 100.0f));
cXyz pos(current.pos.x + (cM_ssin(mCollisionRot.y) * 100.0f),
current.pos.y + 300.0f,
current.pos.z + (cM_scos(mCollisionRot.y) * 100.0f));
mLinkGndChk.SetPos(&pos);
f32 gnd_cross = dComIfG_Bgsp().GroundCross(&mLinkGndChk);
if (gnd_cross != -1000000000.0f) {
pos.y = -1000000000.0f;
cXyz tmp_4c = mCurrent.mPosition;
cXyz tmp_4c = current.pos;
cXyz tmp_58 = pos;
BOOL check = false;
for (int i = 0; i < 4; i++) {
if (i == 3) {
tmp_4c.y = gnd_cross + 5.0f;
} else {
tmp_4c.y = mCurrent.mPosition.y + field_0x18B0[i].GetWallH();
tmp_4c.y = current.pos.y + field_0x18B0[i].GetWallH();
}
tmp_58.y = tmp_4c.y;
@@ -1076,7 +1076,7 @@ int daAlink_c::procCoMetamorphoseInit() {
if (check) {
mCommonCounter = field_0x2ff0;
} else {
pos -= mCurrent.mPosition;
pos -= current.pos;
pos.atan2sY_XZ();
mCommonCounter = svar8;
@@ -1093,7 +1093,7 @@ int daAlink_c::procCoMetamorphoseInit() {
field_0x3012 = 0;
}
field_0x3484 = mCurrent.mPosition.y;
field_0x3484 = current.pos.y;
return 1;
}
#else
@@ -1671,7 +1671,7 @@ u32 daAlink_c::checkHorseRide() const {
/* 800CF298-800CF2B4 0C9BD8 001C+00 1/0 0/0 0/0 .text getLeftItemMatrix__9daAlink_cFv */
MtxP daAlink_c::getLeftItemMatrix() {
return field_0x0650->i_getAnmMtx(field_0x30c0);
return mpLinkModel->i_getAnmMtx(field_0x30c0);
}
/* 800CF2B4-800CF2C8 0C9BF4 0014+00 1/0 0/0 0/0 .text checkBoarRide__9daAlink_cCFv */
@@ -1686,12 +1686,12 @@ u32 daAlink_c::checkSpinnerRide() const {
/* 800CF2DC-800CF2F8 0C9C1C 001C+00 1/0 0/0 0/0 .text getLeftHandMatrix__9daAlink_cFv */
MtxP daAlink_c::getLeftHandMatrix() {
return field_0x0650->i_getAnmMtx(field_0x30b8);
return mpLinkModel->i_getAnmMtx(field_0x30b8);
}
/* 800CF2F8-800CF314 0C9C38 001C+00 1/0 0/0 0/0 .text getRightHandMatrix__9daAlink_cFv */
MtxP daAlink_c::getRightHandMatrix() {
return field_0x0650->i_getAnmMtx(field_0x30ba);
return mpLinkModel->i_getAnmMtx(field_0x30ba);
}
/* 800CF314-800CF328 0C9C54 0014+00 1/0 0/0 0/0 .text
@@ -1704,7 +1704,7 @@ void daAlink_c::onSceneChangeArea(u8 exitID, u8 exitDirection, fopAc_ac_c* scexA
/* 800CF328-800CF344 0C9C68 001C+00 1/0 0/0 0/0 .text getRightItemMatrix__9daAlink_cFv */
MtxP daAlink_c::getRightItemMatrix() {
return field_0x0650->i_getAnmMtx(field_0x30c2);
return mpLinkModel->i_getAnmMtx(field_0x30c2);
}
/* 800CF344-800CF380 0C9C84 003C+00 1/0 0/0 0/0 .text checkPlayerNoDraw__9daAlink_cFv */
@@ -1995,7 +1995,7 @@ void daAlink_c::setMidnaMsgNum(fopAc_ac_c* param_0, u16 pMsgNum) {
/* 800D0290-800D029C 0CABD0 000C+00 1/0 0/0 0/0 .text getModelMtx__9daAlink_cFv */
MtxP daAlink_c::getModelMtx() {
return field_0x0650->getBaseTRMtx();
return mpLinkModel->getBaseTRMtx();
}
/* 800D029C-800D02A4 0CABDC 0008+00 1/0 0/0 0/0 .text getInvMtx__9daAlink_cFv */
@@ -2005,17 +2005,17 @@ MtxP daAlink_c::getInvMtx() {
/* 800D02A4-800D02B8 0CABE4 0014+00 1/0 0/0 0/0 .text getLinkBackBone1Matrix__9daAlink_cFv */
MtxP daAlink_c::getLinkBackBone1Matrix() {
return field_0x0650->i_getAnmMtx(1);
return mpLinkModel->i_getAnmMtx(1);
}
/* 800D02B8-800D02CC 0CABF8 0014+00 1/0 0/0 0/0 .text getWolfMouthMatrix__9daAlink_cFv */
MtxP daAlink_c::getWolfMouthMatrix() {
return field_0x0650->i_getAnmMtx(13);
return mpLinkModel->i_getAnmMtx(13);
}
/* 800D02CC-800D02E0 0CAC0C 0014+00 1/0 0/0 0/0 .text getWolfBackbone2Matrix__9daAlink_cFv */
MtxP daAlink_c::getWolfBackbone2Matrix() {
return field_0x0650->i_getAnmMtx(2);
return mpLinkModel->i_getAnmMtx(2);
}
/* 800D02E0-800D0334 0CAC20 0054+00 1/0 0/0 0/0 .text getBottleMtx__9daAlink_cFv */
@@ -2029,7 +2029,7 @@ MtxP daAlink_c::getBottleMtx() {
/* 800D0334-800D0350 0CAC74 001C+00 1/0 0/0 0/0 .text getHeadMtx__9daAlink_cFv */
MtxP daAlink_c::getHeadMtx() {
return field_0x0650->i_getAnmMtx(field_0x30b4);
return mpLinkModel->i_getAnmMtx(field_0x30b4);
}
/* 800D0350-800D0358 0CAC90 0008+00 1/0 0/0 0/0 .text getGroundY__9daAlink_cFv */
+17 -17
View File
@@ -111,11 +111,11 @@ asm bool daAlink_c::checkSpinnerTriggerAttack() {
void daAlink_c::setSpinnerSyncPos() {
daSpinner_c* spinner = (daSpinner_c*)mRideAcKeep.getActor();
mDoMtx_multVecZero(spinner->getModelMtx(), &mCurrent.mPosition);
mDoMtx_multVecZero(spinner->getModelMtx(), &current.pos);
mDoMtx_stack_c::ZXYrotS(spinner->mCollisionRot);
mDoMtx_stack_c::YrotM(mCollisionRot.y - spinner->mCollisionRot.y);
mDoMtx_MtxToRot(mDoMtx_stack_c::get(), &mCollisionRot);
field_0x37a4 = spinner->mCurrent.mPosition;
field_0x37a4 = spinner->current.pos;
}
/* 8010DC64-8010DDCC 1085A4 0168+00 1/1 0/0 0/0 .text procSpinnerReadyInit__9daAlink_cFv
@@ -124,7 +124,7 @@ void daAlink_c::setSpinnerSyncPos() {
#ifdef NONMATCHING
int daAlink_c::procSpinnerReadyInit() {
fopAc_ac_c* spinner = (fopAc_ac_c*)fopAcM_fastCreate(
PROC_SPINNER, daSpinner_c::getWaitArg(), &mCurrent.mPosition, fopAcM_GetRoomNo(this),
PROC_SPINNER, daSpinner_c::getWaitArg(), &current.pos, fopAcM_GetRoomNo(this),
&mCollisionRot, NULL, -1, NULL, NULL);
if (spinner == NULL) {
@@ -144,9 +144,9 @@ int daAlink_c::procSpinnerReadyInit() {
seStartOnlyReverb(Z2SE_AL_SPINNER_START);
field_0x2f99 = 15;
deleteEquipItem(1, 1);
deleteEquipItem(TRUE, TRUE);
mCurrent.mAngle.y = mCollisionRot.y;
current.angle.y = mCollisionRot.y;
field_0x3588 = l_waitBaseAnime;
field_0x33b0 = field_0x3588.y;
field_0x34d4 = l_waitBaseAnime;
@@ -173,15 +173,15 @@ int daAlink_c::procSpinnerReady() {
return checkNextAction(0);
}
mCurrent.mPosition.x = spinner->mCurrent.mPosition.x;
mCurrent.mPosition.z = spinner->mCurrent.mPosition.z;
current.pos.x = spinner->current.pos.x;
current.pos.z = spinner->current.pos.z;
mCommonCounter--;
field_0x2f99 = 15;
if ((mCommonCounter < 0 && mCurrent.mPosition.y <= spinner->getModelMtx()[1][3]) ||
if ((mCommonCounter < 0 && current.pos.y <= spinner->getModelMtx()[1][3]) ||
mCommonCounter < -30) {
mCurrent.mPosition.y = spinner->getModelMtx()[1][3];
current.pos.y = spinner->getModelMtx()[1][3];
procSpinnerWaitInit();
}
@@ -216,7 +216,7 @@ int daAlink_c::procSpinnerWaitInit() {
field_0x3198 = ANM_SPINNER_RIDE;
field_0x33b0 = 70.0f;
field_0x3012 = 0;
field_0x37a4 = mRideAcKeep.getActor()->mCurrent.mPosition;
field_0x37a4 = mRideAcKeep.getActor()->current.pos;
return 1;
}
@@ -264,7 +264,7 @@ int daAlink_c::procSpinnerWait() {
mCollisionRot.y -= angle;
}
mCurrent.mAngle.y = mCollisionRot.y;
current.angle.y = mCollisionRot.y;
field_0x300e = mCollisionRot.y;
}
} else {
@@ -282,18 +282,18 @@ int daAlink_c::procSpinnerWait() {
if (spinner->checkPathMoveNow() == NULL) {
seStartOnlyReverbLevel(Z2SE_AL_SPINNER_RIDE);
setSpinnerStatus(ACTION_STR_ATTACK, 0);
setSpinnerStatus(ACTION_STR_ATTACK, ACTION_FLG_DEFAULT);
} else {
seStartOnlyReverbLevel(Z2SE_AL_SPINNER_RAIL);
setSpinnerStatus(ACTION_STR_JUMP2, 0);
setSpinnerStatus(ACTION_STR_JUMP2, ACTION_FLG_DEFAULT);
}
mNormalSpeed = spinner->mSpeedF;
mCurrent.mAngle.y = spinner->mCurrent.mAngle.y;
current.angle.y = spinner->current.angle.y;
if (spinner->checkSpinnerTagIntoIncRot()) {
field_0x3012 = 1;
setSpinnerStatus(ACTION_STR_SPIN, 4);
setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_CONTINUATION);
if (field_0x3198 != ANM_SPINNER_PUSH && field_0x2060->getOldFrameRate() < 0.01f) {
setSingleAnimeBaseSpeed(ANM_SPINNER_RIDE, daAlinkHIO_board_c0::m.mSitAnmSpeed,
@@ -303,9 +303,9 @@ int daAlink_c::procSpinnerWait() {
}
} else if (spinner->checkSpinnerTagInto()) {
if (field_0x3012 != 0) {
setSpinnerStatus(ACTION_STR_SPIN, 4);
setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_CONTINUATION);
} else {
setSpinnerStatus(ACTION_STR_SPIN, 0);
setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_DEFAULT);
}
if ((field_0x3198 == ANM_SPINNER_PUSH && field_0x2060->getOldFrameRate() < 0.01f) ||
+1 -1
View File
@@ -22,7 +22,7 @@ void daAlink_c::sumouPunchTrigger() {
/* 800EA92C-800EA950 0E526C 0024+00 5/5 0/0 0/0 .text setSumouPunchStatus__9daAlink_cFv
*/
void daAlink_c::setSumouPunchStatus() {
setBStatus(0x44);
setBStatus(ACTION_STR_SLAP);
}
/* 800EA950-800EAA28 0E5290 00D8+00 4/4 0/0 0/0 .text procSumouReadyInit__9daAlink_cFv */
+8 -8
View File
@@ -23,10 +23,10 @@ void daAlink_c::statusWindowExecute(cXyz const* param_0, s16 param_1) {
mDoMtx_stack_c::transS(*param_0);
mDoMtx_stack_c::YrotM(param_1);
field_0x0650->i_setBaseTRMtx(mDoMtx_stack_c::get());
mpLinkModel->i_setBaseTRMtx(mDoMtx_stack_c::get());
m_sWindowBck->play();
m_sWindowBck->entry(field_0x064C);
field_0x0650->calc();
mpLinkModel->calc();
if (i_checkWolf()) {
setWolfItemMatrix();
@@ -39,7 +39,7 @@ void daAlink_c::statusWindowExecute(cXyz const* param_0, s16 param_1) {
/* 80140984-80140AC8 13B2C4 0144+00 0/0 1/1 0/0 .text statusWindowDraw__9daAlink_cFv */
void daAlink_c::statusWindowDraw() {
if (mClothesChangeWaitTimer == 0) {
g_env_light.settingTevStruct(12, &mCurrent.mPosition, &mTevStr);
g_env_light.settingTevStruct(12, &current.pos, &mTevStr);
initTevCustomColor();
if (!i_checkWolf()) {
@@ -47,12 +47,12 @@ void daAlink_c::statusWindowDraw() {
setDrawHand();
}
basicModelDraw(field_0x0650);
basicModelDraw(mpLinkModel);
if (!i_checkWolf()) {
basicModelDraw(field_0x065c);
basicModelDraw(field_0x0658);
basicModelDraw(field_0x0654);
basicModelDraw(mpLinkHatModel);
basicModelDraw(mpLinkFaceModel);
if (i_checkEquipHeavyBoots()) {
for (int i = 0; i < 2; i++) {
@@ -64,7 +64,7 @@ void daAlink_c::statusWindowDraw() {
if (checkSwordDraw()) {
basicModelDraw(mSwordModel);
if (!checkWoodSwordEquip()) {
basicModelDraw(field_0x06bc);
basicModelDraw(mSheathModel);
}
}
@@ -85,7 +85,7 @@ void daAlink_c::resetStatusWindow() {
}
setMatrix();
field_0x0650->calc();
mpLinkModel->calc();
i_onNoResetFlg2(0x400000);
setSelectEquipItem(0);
+82 -43
View File
@@ -1,72 +1,111 @@
#include "rel/d/a/obj/d_a_obj_yobikusa/d_a_obj_yobikusa.h"
/* 8011174C-80111770 10C08C 0024+00 1/1 0/0 0/0 .text daAlink_searchWhistle__FP10fopAc_ac_cPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daAlink_searchWhistle(fopAc_ac_c* param_0, void* param_1) {
nofralloc
#include "asm/d/a/d_a_alink/daAlink_searchWhistle__FP10fopAc_ac_cPv.s"
static fopAc_ac_c* daAlink_searchWhistle(fopAc_ac_c* p_actor, void*) {
if (daAlink_getAlinkActorClass()->getGrassHowlEventActor() == fopAcM_GetName(p_actor)) {
return p_actor;
}
return NULL;
}
#pragma pop
/* 80111770-80111784 10C0B0 0014+00 1/1 0/0 0/0 .text daAlink_searchHawk__FP10fopAc_ac_cPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daAlink_searchHawk(fopAc_ac_c* param_0, void* param_1) {
nofralloc
#include "asm/d/a/d_a_alink/daAlink_searchHawk__FP10fopAc_ac_cPv.s"
}
#pragma pop
static fopAc_ac_c* daAlink_searchHawk(fopAc_ac_c* p_actor, void*) {
if (fopAcM_GetName(p_actor) == PROC_NPC_TK) {
return p_actor;
}
/* ############################################################################################## */
/* 8045069C-804506A4 -00001 0008+00 1/1 0/0 0/0 .sdata grassWhistleArcName$33096 */
SECTION_SDATA static void* grassWhistleArcName[2] = {
(void*)(((char*)&d_a_d_a_alink__stringBase0) + 0xAD),
(void*)(((char*)&d_a_d_a_alink__stringBase0) + 0xB4),
};
return NULL;
}
/* 80111784-8011181C 10C0C4 0098+00 1/1 0/0 0/0 .text setGrassWhistleModel__9daAlink_cFi
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::setGrassWhistleModel(int param_0) {
nofralloc
#include "asm/d/a/d_a_alink/setGrassWhistleModel__9daAlink_cFi.s"
void daAlink_c::setGrassWhistleModel(int modelType) {
static const char* grassWhistleArcName[2] = {
"J_Tobi",
"J_Umak",
};
JKRHeap* heap = setItemHeap();
J3DModelData* modeldata = (J3DModelData*)dComIfG_getObjectRes(grassWhistleArcName[modelType],
grassWhistleIdx[modelType]);
mHeldItemModel = mDoExt_J3DModel__create(modeldata, 0x80000, 0x11000084);
mDoExt_setCurrentHeap(heap);
mEquipItem = 0x104;
field_0x2f94 = 2;
}
#pragma pop
/* 8011181C-80111894 10C15C 0078+00 1/1 0/0 0/0 .text setHorseWhistleModel__9daAlink_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::setHorseWhistleModel() {
nofralloc
#include "asm/d/a/d_a_alink/setHorseWhistleModel__9daAlink_cFv.s"
void daAlink_c::setHorseWhistleModel() {
JKRHeap* heap = setItemHeap();
mHeldItemModel = initModel(loadAramBmd(0x31A, 0x3000), 0);
mDoExt_setCurrentHeap(heap);
mEquipItem = HORSE_FLUTE;
field_0x2f94 = 2;
}
#pragma pop
/* 80111894-801119D8 10C1D4 0144+00 2/2 0/0 0/0 .text procGrassWhistleGetInit__9daAlink_cFv */
// matches with literals
#ifdef NONMATCHING
int daAlink_c::procGrassWhistleGetInit() {
if (mEquipItem != NO_ITEM) {
return procPreActionUnequipInit(PROC_GRASS_WHISTLE_GET, field_0x27f4);
}
commonProcInit(PROC_GRASS_WHISTLE_GET);
mNormalSpeed = 0.0f;
current.angle.y = mCollisionRot.y;
field_0x2f98 = 4;
setSingleAnimeParam(ANM_GRASS_WHISTLE_GRAB, &daAlinkHIO_bottle_c0::m.field_0x50);
field_0x2f92 = 0xFE;
field_0x280c.setData(field_0x27f4);
daObjYobikusa_c* yobikusa = (daObjYobikusa_c*)field_0x27f4;
mCommonCounter = yobikusa->getType();
field_0x300e = yobikusa->getPathID();
field_0x3010 = yobikusa->isPlayerCorrect();
field_0x3012 = yobikusa->mCollisionRot.y + 0x8000;
field_0x37c8.set(yobikusa->current.pos.x + cM_ssin(yobikusa->mCollisionRot.y) * 50.0f,
yobikusa->current.pos.y + 50.0f,
yobikusa->current.pos.z + cM_scos(yobikusa->mCollisionRot.y) * 50.0f);
voiceStart(Z2SE_AL_V_SWING_BOTTLE);
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::procGrassWhistleGetInit() {
asm int daAlink_c::procGrassWhistleGetInit() {
nofralloc
#include "asm/d/a/d_a_alink/procGrassWhistleGetInit__9daAlink_cFv.s"
}
#pragma pop
#endif
/* 801119D8-80111A9C 10C318 00C4+00 1/0 0/0 0/0 .text procGrassWhistleGet__9daAlink_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::procGrassWhistleGet() {
nofralloc
#include "asm/d/a/d_a_alink/procGrassWhistleGet__9daAlink_cFv.s"
int daAlink_c::procGrassWhistleGet() {
daPy_frameCtrl_c* frameCtrl = mFrameCtrl1;
if (frameCtrl->checkAnmEnd()) {
procGrassWhistleWaitInit(mCommonCounter, field_0x300e, field_0x3010, field_0x3012, &field_0x37c8);
} else if (mEquipItem == NO_ITEM && frameCtrl->getFrame() >= lit_7710) {
setGrassWhistleModel(mCommonCounter);
if (field_0x280c.getActor() != NULL) {
fopAcM_setCarryNow(field_0x280c.getActor(), 0);
seStartOnlyReverb(Z2SE_AL_PICKUP_GRASS);
}
}
return 1;
}
#pragma pop
/* 80111A9C-80111CA4 10C3DC 0208+00 2/2 0/0 0/0 .text
* procGrassWhistleWaitInit__9daAlink_cFiiisP4cXyz */
+4 -4
View File
@@ -166,7 +166,7 @@ void daItemBase_c::settingBeforeDraw() {
/* 80144D18-80144D70 13F658 0058+00 1/0 0/0 8/0 .text setTevStr__12daItemBase_cFv */
void daItemBase_c::setTevStr() {
g_env_light.settingTevStruct(0, &mCurrent.mPosition, &mTevStr);
g_env_light.settingTevStruct(0, &current.pos, &mTevStr);
g_env_light.setLightTevColorType_MAJI(mpModel, &mTevStr);
}
@@ -176,7 +176,7 @@ void daItemBase_c::setShadow() {
if (!chkFlag(0x10)) {
if (getShadowSize() != 0.0f) {
dComIfGd_setSimpleShadow(&mCurrent.mPosition, mAcch.GetGroundH(), scale,
dComIfGd_setSimpleShadow(&current.pos, mAcch.GetGroundH(), scale,
mAcch.m_gnd, 0, 1.0f,
dDlst_shadowControl_c::getSimpleTex());
}
@@ -187,8 +187,8 @@ void daItemBase_c::setShadow() {
}
field_0x91c =
dComIfGd_setShadow(field_0x91c, 3, mpModel, &mCurrent.mPosition, shadowSize, 0.0f,
mCurrent.mPosition.y, mAcch.GetGroundH(), mAcch.m_gnd,
dComIfGd_setShadow(field_0x91c, 3, mpModel, &current.pos, shadowSize, 0.0f,
current.pos.y, mAcch.GetGroundH(), mAcch.m_gnd,
&mTevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
}
}
+19 -19
View File
@@ -1665,12 +1665,12 @@ int daNpcT_c::loadRes(s8 const* resNoList, char const** resNameList) {
return cPhs_COMPLEATE_e;
}
int status = dComIfG_resLoad(&field_0x8e0[i], resNameList[resNoList[i]]);
if (status == cPhs_COMPLEATE_e) {
int phase_state = dComIfG_resLoad(&field_0x8e0[i], resNameList[resNoList[i]]);
if (phase_state == cPhs_COMPLEATE_e) {
resLoad_cnt++;
}
if (status == cPhs_ERROR_e || status == 3) {
if (phase_state == cPhs_ERROR_e || phase_state == cPhs_UNK3_e) {
return cPhs_ERROR_e;
}
}
@@ -1702,7 +1702,7 @@ int daNpcT_c::execute() {
fopAcM_posMoveF(this, field_0x864.GetCCMoveP());
field_0x68c.CrrPos(dComIfG_Bgsp());
field_0x930 = field_0x68c.m_gnd;
field_0xdca = fopAcM_getPolygonAngle(field_0x930, mCurrent.mAngle.y);
field_0xdca = fopAcM_getPolygonAngle(field_0x930, current.angle.y);
field_0xdf4 = field_0x68c.GetGroundH();
if (field_0xdf4 != -1000000000.0f) {
field_0xda8 = dKy_pol_sound_get(&field_0x68c.m_gnd);
@@ -1819,13 +1819,13 @@ int daNpcT_c::draw(int param_0, int param_1, f32 param_2, GXColorS10* color, f32
if (param_5 != 0) {
drawGhost();
} else if (field_0xa89 != 0) {
g_env_light.settingTevStruct(4, &mCurrent.mPosition, &mTevStr);
g_env_light.settingTevStruct(4, &current.pos, &mTevStr);
g_env_light.setLightTevColorType_MAJI(modelData, &mTevStr);
dComIfGd_setListDark();
mMcaMorfAnm[0]->entryDL();
dComIfGd_setList();
} else {
g_env_light.settingTevStruct(0, &mCurrent.mPosition, &mTevStr);
g_env_light.settingTevStruct(0, &current.pos, &mTevStr);
g_env_light.setLightTevColorType_MAJI(modelData, &mTevStr);
mMcaMorfAnm[0]->entryDL();
}
@@ -1849,10 +1849,10 @@ int daNpcT_c::draw(int param_0, int param_1, f32 param_2, GXColorS10* color, f32
if (param_6 == 0) {
if (param_7 == 0) {
field_0xd94 = dComIfGd_setShadow(
field_0xd94, 1, model, &mCurrent.mPosition, param_2, param_4, mCurrent.mPosition.y,
field_0xd94, 1, model, &current.pos, param_2, param_4, current.pos.y,
field_0xdf4, field_0x930, &mTevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
} else {
dComIfGd_setSimpleShadow(&mCurrent.mPosition, field_0xdf4, param_4, field_0x930, 0,
dComIfGd_setSimpleShadow(&current.pos, field_0xdf4, param_4, field_0x930, 0,
1.0f, dDlst_shadowControl_c::getSimpleTex());
}
}
@@ -1931,7 +1931,7 @@ void daNpcT_c::setMtx() {
J3DModel* model = mMcaMorfAnm[0]->getModel();
J3DModelData* modelData = model->getModelData();
mDoMtx_stack_c::transS(mCurrent.mPosition);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(field_0xd78);
mDoMtx_stack_c::scaleM(mScale);
@@ -2102,26 +2102,26 @@ void daNpcT_c::setPos(cXyz i_pos) {
field_0x930.SetPos(&i_pos);
i_pos.y = dComIfG_Bgsp().GroundCross(&field_0x930);
mCurrent.mPosition = i_pos;
mNext.mPosition = mCurrent.mPosition;
current.pos = i_pos;
next.pos = current.pos;
}
/* 8014A99C-8014AA18 1452DC 007C+00 0/0 0/0 29/29 .text setAngle__8daNpcT_cF5csXyz */
void daNpcT_c::setAngle(csXyz i_angle) {
mCurrent.mAngle = i_angle;
mCollisionRot = mCurrent.mAngle;
field_0xd78 = mCurrent.mAngle;
current.angle = i_angle;
mCollisionRot = current.angle;
field_0xd78 = current.angle;
field_0xd7e = field_0xd78;
mNext.mAngle = mCurrent.mAngle;
next.angle = current.angle;
}
/* 8014AA18-8014AA40 145358 0028+00 0/0 0/0 138/138 .text setAngle__8daNpcT_cFs */
void daNpcT_c::setAngle(s16 i_angle) {
mCurrent.mAngle.y = i_angle;
mCollisionRot.y = mCurrent.mAngle.y;
field_0xd78.y = mCurrent.mAngle.y;
current.angle.y = i_angle;
mCollisionRot.y = current.angle.y;
field_0xd78.y = current.angle.y;
field_0xd7e.y = field_0xd78.y;
mNext.mAngle.y = mCurrent.mAngle.y;
next.angle.y = current.angle.y;
}
/* 8014AA40-8014AAD0 145380 0090+00 0/0 0/0 33/33 .text hitChk__8daNpcT_cFP12dCcD_GObjInfUl */
+33 -33
View File
@@ -283,7 +283,7 @@ void daItem_c::setBaseMtx() {
/* 8015B190-8015B1C8 155AD0 0038+00 1/1 0/0 0/0 .text setBaseMtx_0__8daItem_cFv */
void daItem_c::setBaseMtx_0() {
mDoMtx_stack_c::transS(mCurrent.mPosition);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(mCollisionRot);
}
@@ -298,7 +298,7 @@ void daItem_c::setBaseMtx_1() {
f32 max_y = mpModel->getModelData()->getJointNodePointer(0)->getMax()->y;
f32 y = max_y * 0.5f * mScale.y;
mDoMtx_stack_c::transS(mCurrent.mPosition);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::transM(0.0f, y, 0.0f);
mDoMtx_stack_c::ZXYrotM(mCollisionRot);
@@ -641,12 +641,12 @@ int daItem_c::_daItem_create() {
}
if (!field_0x95d) {
field_0x92c = mOrig.mAngle.x;
field_0x92e = mOrig.mAngle.z;
mOrig.mAngle.z = 0;
mOrig.mAngle.x = 0;
mCurrent.mAngle.z = 0;
mCurrent.mAngle.x = 0;
field_0x92c = orig.angle.x;
field_0x92e = orig.angle.z;
orig.angle.z = 0;
orig.angle.x = 0;
current.angle.z = 0;
current.angle.x = 0;
mCollisionRot.z = 0;
mCollisionRot.x = 0;
@@ -658,25 +658,25 @@ int daItem_c::_daItem_create() {
field_0x920 = daItem_prm::getItemBitNo(this);
if (fopAcM_isItem(this, field_0x920)) {
return 5;
return cPhs_ERROR_e;
} else {
int ret = 4;
int phase_state = cPhs_COMPLEATE_e;
if (flag) {
CreateInit();
} else {
ret = dComIfG_resLoad(&mPhase, dItem_data::getFieldArc(m_itemNo));
phase_state = dComIfG_resLoad(&mPhase, dItem_data::getFieldArc(m_itemNo));
if (ret == 4) {
if (phase_state == cPhs_COMPLEATE_e) {
if (!fopAcM_entrySolidHeap(this, (heapCallbackFunc)CheckFieldItemCreateHeap, dItem_data::getFieldHeapSize(m_itemNo))) {
return 5;
return cPhs_ERROR_e;
} else {
CreateInit();
}
}
}
return ret;
return phase_state;
}
}
#else
@@ -714,10 +714,10 @@ int daItem_c::_daItem_execute() {
field_0x950 = mSpeed;
CountTimer();
mEyePos = mCurrent.mPosition;
mEyePos = current.pos;
mEyePos.y += (f32)dItem_data::getH(m_itemNo) * 0.5f;
mAttentionInfo.mPosition = mCurrent.mPosition;
mAttentionInfo.mPosition = current.pos;
if (mCollider.ChkTgHit()) {
cCcD_Obj* hitObj = mCollider.GetTgHitObj();
@@ -737,13 +737,13 @@ int daItem_c::_daItem_execute() {
}
if (fopAcM_checkHookCarryNow(this)) {
cXyz carry_pos = mCurrent.mPosition;
cXyz carry_pos = current.pos;
if (mpModel != NULL) {
carry_pos.y += 0.5f * mpModel->getModelData()->getJointNodePointer(0)->getMax()->y;
}
mDoMtx_stack_c::transS(mCurrent.mPosition);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(mCollisionRot);
mDoMtx_stack_c::inverse();
mDoMtx_stack_c::multVec(&carry_pos, &carry_pos);
@@ -755,11 +755,11 @@ int daItem_c::_daItem_execute() {
setBaseMtx();
field_0x978.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
field_0x96c = mCurrent.mPosition;
field_0x96c = current.pos;
field_0x95f = (fopAcM_checkHookCarryNow(this) >> 0x14) & 1;
if (m_itemNo == ORANGE_RUPEE || m_itemNo == SILVER_RUPEE) {
field_0x9ac = mCurrent.mPosition;
field_0x9ac = current.pos;
field_0x9ac.y += 18.0f;
}
@@ -832,7 +832,7 @@ void daItem_c::procMainNormal() {
}
}
mCollider.SetC(mCurrent.mPosition);
mCollider.SetC(current.pos);
dComIfG_Ccsp()->Set(&mCollider);
}
@@ -863,8 +863,8 @@ SECTION_SDATA2 static f32 lit_4404 = 15.0f;
// literals / addi in wrong place
#ifdef NONMATCHING
void daItem_c::procInitSimpleGetDemo() {
mCurrent.mPosition = daPy_getPlayerActorClass()->getItemPos();
mCurrent.mPosition.y += 15.0f;
current.pos = daPy_getPlayerActorClass()->getItemPos();
current.pos.y += 15.0f;
mCollisionRot.z = 0;
mCollisionRot.x = 0;
mScale = field_0x930;
@@ -910,7 +910,7 @@ void daItem_c::procInitGetDemoEvent() {
fopAcM_orderItemEvent(this, 0, 0);
mEvtInfo.i_onCondition(8);
m_item_id = fopAcM_createItemForTrBoxDemo(&mCurrent.mPosition, m_itemNo, -1, fopAcM_GetRoomNo(this), NULL, NULL);
m_item_id = fopAcM_createItemForTrBoxDemo(&current.pos, m_itemNo, -1, fopAcM_GetRoomNo(this), NULL, NULL);
setStatus(3);
}
@@ -1006,7 +1006,7 @@ void daItem_c::procMainSwOnWait() {
if (i_fopAcM_isSwitch(this, field_0x93c)) {
mAcch.CrrPos(dComIfG_Bgsp());
if (mAcch.ChkWaterHit() && mAcch.m_wtr.GetHeight() > lit_4070[0] + mOrig.mPosition.y) {
if (mAcch.ChkWaterHit() && mAcch.m_wtr.GetHeight() > lit_4070[0] + orig.pos.y) {
field_0x9c0 = 1;
}
@@ -1115,7 +1115,7 @@ void daItem_c::mode_wait() {
break;
}
if (field_0x9c0 == 0 && mAcch.ChkWaterHit() && mAcch.m_wtr.GetHeight() > mCurrent.mPosition.y) {
if (field_0x9c0 == 0 && mAcch.ChkWaterHit() && mAcch.m_wtr.GetHeight() > current.pos.y) {
mode_water_init();
}
@@ -1132,10 +1132,10 @@ SECTION_SDATA2 static f32 lit_4781 = 1.0f / 10.0f;
void daItem_c::mode_water() {
mAcch.CrrPos(dComIfG_Bgsp());
if (!mAcch.ChkWaterHit() || mAcch.m_wtr.GetHeight() < mCurrent.mPosition.y) {
if (!mAcch.ChkWaterHit() || mAcch.m_wtr.GetHeight() < current.pos.y) {
mode_wait_init();
} else {
mCurrent.mPosition.y = mAcch.m_wtr.GetHeight();
current.pos.y = mAcch.m_wtr.GetHeight();
}
f32 var_f1 = 1.0f;
@@ -1160,7 +1160,7 @@ void daItem_c::mode_water() {
break;
}
fopAcM_effHamonSet(&field_0x9b8, &mCurrent.mPosition, var_f1, 0.1f);
fopAcM_effHamonSet(&field_0x9b8, &current.pos, var_f1, 0.1f);
RotateYBase();
}
#else
@@ -1176,7 +1176,7 @@ asm void daItem_c::mode_water() {
/* 8015CE94-8015CEEC 1577D4 0058+00 1/0 0/0 0/0 .text setTevStr__8daItem_cFv */
void daItem_c::setTevStr() {
g_env_light.settingTevStruct(0, &mCurrent.mPosition, &mTevStr);
g_env_light.settingTevStruct(0, &current.pos, &mTevStr);
g_env_light.setLightTevColorType_MAJI(mpModel, &mTevStr);
}
@@ -1323,7 +1323,7 @@ bool daItem_c::checkPlayerGet() {
// matches with literals
#ifdef NONMATCHING
void daItem_c::checkYogan() {
if (mAcch.ChkWaterHit() && mAcch.m_wtr.GetHeight() > mCurrent.mPosition.y + 100.0f) {
if (mAcch.ChkWaterHit() && mAcch.m_wtr.GetHeight() > current.pos.y + 100.0f) {
if (dComIfG_Bgsp().GetPolyAtt0(mAcch.m_wtr) == 6) {
deleteItem();
}
@@ -1528,8 +1528,8 @@ asm void daItem_c::initSpeed(int param_0) {
/* 8015DE38-8015DE50 158778 0018+00 1/1 0/0 0/0 .text initAngle__8daItem_cFv */
void daItem_c::initAngle() {
mCurrent.mAngle.z = 0;
mCurrent.mAngle.x = 0;
current.angle.z = 0;
current.angle.x = 0;
mCollisionRot.z = 0;
mCollisionRot.x = 0;
}
+5 -5
View File
@@ -269,10 +269,10 @@ SECTION_SDATA2 static u8 lit_4381[8] = {
void daPy_boomerangMove_c::bgCheckAfterOffset(cXyz const* param_0) {
daBoomerang_c* boomerang = daPy_py_c::getThrowBoomerangActor();
if (boomerang != NULL) {
field_0x4 = param_0->y - boomerang->mCurrent.mPosition.y;
field_0x8 = boomerang->mCurrent.mPosition.absXZ(*param_0);
field_0x2 = cM_atan2s(param_0->x - boomerang->mCurrent.mPosition.x,
param_0->z - boomerang->mCurrent.mPosition.z);
field_0x4 = param_0->y - boomerang->current.pos.y;
field_0x8 = boomerang->current.pos.absXZ(*param_0);
field_0x2 = cM_atan2s(param_0->x - boomerang->current.pos.x,
param_0->z - boomerang->current.pos.z);
}
}
#else
@@ -606,7 +606,7 @@ asm void daPy_sightPacket_c::setSight() {
* setSightImage__18daPy_sightPacket_cFP7ResTIMG */
void daPy_sightPacket_c::setSightImage(ResTIMG* p_img) {
mpImg = p_img;
mpData = (u8*)p_img + p_img->texDataOffset;
mpData = (u8*)p_img + p_img->imageOffset;
}
/* 8015F398-8015F3C4 159CD8 002C+00 0/0 8/8 10/10 .text checkMasterSwordEquip__9daPy_py_cFv */
+2 -2
View File
@@ -29,12 +29,12 @@ extern "C" void CreateItemHeap__12daItemBase_cFPCcsssssss();
/* 80037C14-80037C1C 032554 0008+00 0/0 1/1 0/0 .text getRotateP__12daShopItem_cFv */
csXyz* daShopItem_c::getRotateP() {
return &mCurrent.mAngle;
return &current.angle;
}
/* 80037C1C-80037C24 03255C 0008+00 0/0 2/2 0/0 .text getPosP__12daShopItem_cFv */
cXyz* daShopItem_c::getPosP() {
return &mCurrent.mPosition;
return &current.pos;
}
/* 803792E8-80379738 -00001 0450+00 1/1 0/0 9/9 .rodata mData__12daShopItem_c */