almost all of daAlink_demo done (#1987)

* almost all of alink_demo done

* remove asm

* decideDoStatus OK
This commit is contained in:
TakaRikka
2023-11-17 20:02:04 -08:00
committed by GitHub
parent 187eaa2c55
commit 519e780f66
39 changed files with 3874 additions and 1269 deletions
+674 -58
View File
@@ -10,6 +10,7 @@
#include "JSystem/JKernel/JKRExpHeap.h"
#include "JSystem/JMath/JMath.h"
#include "SSystem/SComponent/c_math.h"
#include "d/a/d_a_npc.h"
#include "d/d_item.h"
#include "d/d_procname.h"
#include "d/meter/d_meter2_draw.h"
@@ -20,14 +21,18 @@
#include "rel/d/a/d_a_crod/d_a_crod.h"
#include "rel/d/a/d_a_horse/d_a_horse.h"
#include "rel/d/a/d_a_mg_rod/d_a_mg_rod.h"
#include "rel/d/a/d_a_midna/d_a_midna.h"
#include "rel/d/a/d_a_mirror/d_a_mirror.h"
#include "rel/d/a/d_a_scene_exit/d_a_scene_exit.h"
#include "rel/d/a/d_a_spinner/d_a_spinner.h"
#include "rel/d/a/d_a_tbox/d_a_tbox.h"
#include "rel/d/a/e/d_a_e_wb/d_a_e_wb.h"
#include "rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h"
#include "rel/d/a/tag/d_a_tag_Lv6Gate/d_a_tag_Lv6Gate.h"
#include "rel/d/a/tag/d_a_tag_kmsg/d_a_tag_kmsg.h"
#include "rel/d/a/tag/d_a_tag_magne/d_a_tag_magne.h"
#include "rel/d/a/tag/d_a_tag_mist/d_a_tag_mist.h"
#include "rel/d/a/d_a_mirror/d_a_mirror.h"
#include "rel/d/a/d_a_midna/d_a_midna.h"
#include "rel/d/a/tag/d_a_tag_wljump/d_a_tag_wljump.h"
//
// Types:
@@ -51,10 +56,6 @@ struct daObj {
daObjMovebox::Act_c::Prm_e);
};
struct daNpcT_ActorMngr_c {
/* 80145708 */ void getActorP();
};
struct JAISeq {
/* 802A0A8C */ JAISeq(JAISeqMgr*, JAISoundStrategyMgr<JAISeq>*);
};
@@ -5698,57 +5699,41 @@ COMPILER_STRIP_GATE(0x8039190C, &daAlink_c::m_handRightInSidePos);
/* 80391918-80391924 01DF78 000C+00 0/1 0/0 0/0 .rodata horseLocalLeft$17678 */
#pragma push
#pragma force_active on
static const Vec horseLocalLeft = {
20.0f, 0.0f, 0.0f
};
static const Vec horseLocalLeft = {20.0f, 0.0f, 0.0f};
#pragma pop
/* 80391924-80391930 01DF84 000C+00 0/1 0/0 0/0 .rodata horseLocalRight$17679 */
#pragma push
#pragma force_active on
static const Vec horseLocalRight = {
-20.0f, 0.0f, 0.0f
};
static const Vec horseLocalRight = {-20.0f, 0.0f, 0.0f};
#pragma pop
/* 80391930-8039193C 01DF90 000C+00 0/1 0/0 0/0 .rodata horseLocalBack$17680 */
#pragma push
#pragma force_active on
static const Vec horseLocalBack = {
0.0f, 0.0f, -200.0f
};
static const Vec horseLocalBack = {0.0f, 0.0f, -200.0f};
#pragma pop
/* 8039193C-80391948 01DF9C 000C+00 0/1 0/0 0/0 .rodata boarLocalLeft$17681 */
#pragma push
#pragma force_active on
static const Vec boarLocalLeft = {
200.0f, 0.0f, -18.0f
};
static const Vec boarLocalLeft = {200.0f, 0.0f, -18.0f};
#pragma pop
/* 80391948-80391954 01DFA8 000C+00 0/1 0/0 0/0 .rodata boarLocalRight$17682 */
#pragma push
#pragma force_active on
static const Vec boarLocalRight = {
-200.0f, 0.0f, -18.0f
};
static const Vec boarLocalRight = {-200.0f, 0.0f, -18.0f};
#pragma pop
/* 80391954-80391960 01DFB4 000C+00 1/1 0/0 0/0 .rodata localHorseRun$18095 */
static const Vec localHorseRun_18095 = {
15.0f, 0.0f, -45.0f
};
static const Vec localHorseRun_18095 = {15.0f, 0.0f, -45.0f};
/* 80391960-8039196C 01DFC0 000C+00 1/1 0/0 0/0 .rodata localHorseRun$18103 */
static const Vec localHorseRun_18103 = {
30.0f, 0.0f, -10.0f
};
static const Vec localHorseRun_18103 = {30.0f, 0.0f, -10.0f};
/* 8039196C-80391978 01DFCC 000C+00 1/1 0/0 0/0 .rodata localOffset$18237 */
static const Vec localOffset_18237 = {
-30.0f, -18.0f, 0.0f
};
static const Vec localOffset_18237 = {-30.0f, -18.0f, 0.0f};
/* 80391978-80391984 01DFD8 000C+00 1/1 0/0 0/0 .rodata @18938 */
SECTION_RODATA static u8 const lit_18938[12] = {
@@ -5912,8 +5897,8 @@ static u32 const heartPieceMessage[5] = {0x86, 0x9C, 0x9D, 0x9E, 0x9F};
/* 80391BA0-80391BAC 01E200 000C+00 0/1 0/0 0/0 .rodata effName$39419 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const effName_39419[12] = {
0x09, 0xF5, 0x09, 0xF6, 0x09, 0xF7, 0x09, 0xF8, 0x09, 0xF9, 0x09, 0xFA,
SECTION_RODATA static u16 const effName_39419[] = {
0x09F5, 0x09F6, 0x09F7, 0x09F8, 0x09F9, 0x09FA,
};
COMPILER_STRIP_GATE(0x80391BA0, &effName_39419);
#pragma pop
@@ -11154,6 +11139,105 @@ SECTION_DATA static void* lit_4831[3] = {
#pragma pop
/* 803B22E0-803B2754 00F400 0474+00 1/2 0/0 0/0 .data m_demoInitTable__9daAlink_c */
#ifdef NONMATCHING
daAlink_procFunc daAlink_c::m_demoInitTable[] = {
NULL,
NULL,
NULL,
NULL,
NULL,
&daAlink_c::commonWaitTurnInit,
NULL,
NULL,
NULL,
NULL,
&daAlink_c::procCoOpenTreasureInit,
&daAlink_c::procCoGetItemInit,
&daAlink_c::procCoUnequipInit,
&daAlink_c::commonGrabPutInit,
NULL,
NULL,
NULL,
NULL,
NULL,
&daAlink_c::procMonkeyMoveInit,
&daAlink_c::procCoLookAroundInit,
NULL,
NULL,
NULL,
NULL,
&daAlink_c::procCoTurnBackInit,
NULL,
NULL,
&daAlink_c::procDemoBoomerangCatchInit,
&daAlink_c::procHawkCatchInit,
&daAlink_c::procSwordUnequipSpInit,
NULL,
&daAlink_c::procCoDemoPushPullWaitInit,
&daAlink_c::procCoDemoPushMoveInit,
&daAlink_c::procBossAtnWaitInit,
&daAlink_c::procDoorOpenInit,
NULL,
&daAlink_c::procTradeItemOutInit,
NULL,
&daAlink_c::procKandelaarSwingInit,
&daAlink_c::procFrontRollInit,
&daAlink_c::procCrouchInit,
NULL,
NULL,
NULL,
NULL,
&daAlink_c::procCoCaughtInit,
&daAlink_c::procLookUpInit,
&daAlink_c::procLookUpToGetItemInit,
&daAlink_c::procHandPatInit,
&daAlink_c::procWolfMidnaRideShockInit,
&daAlink_c::procSumouShikoInit,
&daAlink_c::procCoFogDeadInit,
&daAlink_c::procWolfSmellWaitInit,
NULL,
NULL,
&daAlink_c::procWolfCargoCarryInit,
&daAlink_c::procCoMetamorphoseInit,
&daAlink_c::procCoMetamorphoseInit,
&daAlink_c::procHorseGetKeyInit,
&daAlink_c::procCoNodInit,
&daAlink_c::procCoGlareInit,
&daAlink_c::procCoEyeAwayInit,
&daAlink_c::procGoatStopReadyInit,
&daAlink_c::procCoGetReadySitInit,
NULL,
&daAlink_c::procCoTwGateInit,
&daAlink_c::procFmChainStrongPullInit,
&daAlink_c::procWolfSnowEscapeInit,
&daAlink_c::procZoraMoveInit,
&daAlink_c::procCoMetamorphoseOnlyInit,
&daAlink_c::procCoMetamorphoseOnlyInit,
&daAlink_c::procLookAroundTurnInit,
NULL,
&daAlink_c::procCoQuakeWaitInit,
&daAlink_c::procGuardAttackInit,
&daAlink_c::procSwordReadyInit,
&daAlink_c::procDungeonWarpInit,
&daAlink_c::procDungeonWarpSceneStartInit,
&daAlink_c::procMasterSwordStickInit,
&daAlink_c::procMasterSwordPullInit,
&daAlink_c::procCutDownInit,
NULL,
&daAlink_c::procCutHeadInit,
NULL,
NULL,
&daAlink_c::procCutLargeJumpInit,
&daAlink_c::procCutFastReadyInit,
&daAlink_c::procCopyRodReviveInit,
&daAlink_c::procSwordPushInit,
&daAlink_c::procGanonFinishInit,
NULL,
NULL,
&daAlink_c::procHorseLookDownInit,
NULL,
};
#else
SECTION_DATA u8 daAlink_c::m_demoInitTable[1140] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -11228,6 +11312,7 @@ SECTION_DATA u8 daAlink_c::m_demoInitTable[1140] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
};
#endif
/* 803B2754-803B2798 00F874 0044+00 0/1 0/0 0/0 .data l_cylSrc */
static dCcD_SrcCyl l_cylSrc = {
@@ -11252,12 +11337,10 @@ static dCcD_SrcSph l_sphSrc = {
{dCcD_SE_NONE, 6, 0, 0, {0}},
{0},
},
{
{
{0.0f, 0.0f, 0.0f},
40.0f,
}
},
{{
{0.0f, 0.0f, 0.0f},
40.0f,
}},
};
/* 803B27D8-803B281C 00F8F8 0044+00 0/1 0/0 0/0 .data l_atCylSrc */
@@ -11283,13 +11366,11 @@ static dCcD_SrcCps l_atCpsSrc = {
{dCcD_SE_NONE, 0, 0, 0, {0}},
{0},
},
{
{
{0.0f, 0.0f, 0.0f},
{0.0f, 0.0f, 0.0f},
20.0f,
}
},
{{
{0.0f, 0.0f, 0.0f},
{0.0f, 0.0f, 0.0f},
20.0f,
}},
};
/* 803B2868-803B2880 00F988 0018+00 1/0 0/0 0/0 .data l_jntColPos0 */
@@ -13976,16 +14057,99 @@ asm void daAlink_c::commonDoubleAnime(J3DAnmTransform* param_0, J3DAnmTransform*
/* 800ACA14-800ACD40 0A7354 032C+00 14/14 0/0 0/0 .text
* setDoubleAnime__9daAlink_cFfffQ29daAlink_c11daAlink_ANMQ29daAlink_c11daAlink_ANMif */
// matches with literals
#ifdef NONMATCHING
int daAlink_c::setDoubleAnime(f32 i_blendRate, f32 i_anmSpeedA, f32 i_anmSpeedB,
daAlink_c::daAlink_ANM i_anmA, daAlink_c::daAlink_ANM i_anmB,
int param_5, f32 i_morf) {
#ifdef DEBUG
if (checkWolf()) {
// "Player is Wolf, but setting Link animation\n"
OSReport("狼なのにリンクアニメ設定\n");
JUT_ASSERT(8591, 0);
}
#endif
J3DAnmTransform* under_bckA;
J3DAnmTransform* upper_bckA;
J3DAnmTransform* under_bckB;
J3DAnmTransform* upper_bckB;
int temp_r3 = getUnderUpperAnime(i_anmA, &under_bckA, &upper_bckA, 0, 0x2C00);
int temp_r0 = getUnderUpperAnime(i_anmB, &under_bckB, &upper_bckB, 1, 0x2C00);
if ((temp_r3 | temp_r0) != 0 && i_morf < 0.0f) {
if (i_anmA == ANM_WAIT_B && i_checkModeFlg(1)) {
i_morf = daAlinkHIO_move_c0::m.mWaitBInterpolation;
} else {
i_morf = daAlinkHIO_basic_c0::m.mAnmBlendFactor;
}
if (i_checkNoResetFlg0(FLG0_UNDERWATER)) {
if (checkZoraWearAbility()) {
i_morf *= (1.0f / daAlinkHIO_magneBoots_c0::m.mZoraWaterAnmSpeed);
} else {
i_morf *= (1.0f / daAlinkHIO_magneBoots_c0::m.mWaterStartWalkAnmRate);
}
}
} else if (i_anmA == ANM_WAIT_B && i_checkModeFlg(1) && i_morf > 0.0f) {
i_morf = daAlinkHIO_move_c0::m.mWaitBInterpolation;
if (i_checkNoResetFlg0(FLG0_UNDERWATER)) {
if (checkZoraWearAbility()) {
i_morf *= (1.0f / daAlinkHIO_magneBoots_c0::m.mZoraWaterAnmSpeed);
} else {
i_morf *= (1.0f / daAlinkHIO_magneBoots_c0::m.mWaterStartWalkAnmRate);
}
}
}
commonDoubleAnime(under_bckA, upper_bckA, under_bckB, upper_bckB, i_blendRate, i_anmSpeedA,
i_anmSpeedB, param_5);
if (i_morf >= 0.0f) {
field_0x2060->initOldFrameMorf(i_morf, 0, 35);
}
setHandIndex(i_anmA);
if (i_checkReinRide()) {
if (checkRestHPAnime() &&
(checkUnderMove0BckNoArc(ANM_HORSE_WAIT) || checkUnderMove0BckNoArc(ANM_HORSE_WALK_A) ||
checkUnderMove0BckNoArc(ANM_HORSE_WALK_B)))
{
if (checkNoUpperAnime()) {
setUpperAnimeBaseMorf(0x263, daAlinkHIO_horse_c0::m.mTiredWaitInterpolation);
}
setFaceBasicAnime(ANM_WAIT_TIRED);
setTiredVoice(&mUpperFrameCtrl[2]);
} else {
if (checkHorseTiredAnime()) {
resetUpperAnime(UPPER_2, 3.0f);
}
setFaceBasicAnime(i_anmA);
}
} else if ((i_anmB == ANM_WALK_HEAVY && i_anmA == ANM_WAIT) || i_anmB == ANM_HORSE_DASH_B) {
setFaceBasicAnime(i_anmB);
} else {
setFaceBasicAnime(i_anmA);
}
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::setDoubleAnime(f32 param_0, f32 param_1, f32 param_2,
daAlink_c::daAlink_ANM param_3, daAlink_c::daAlink_ANM param_4,
int param_5, f32 param_6) {
asm int daAlink_c::setDoubleAnime(f32 param_0, f32 param_1, f32 param_2,
daAlink_c::daAlink_ANM param_3, daAlink_c::daAlink_ANM param_4,
int param_5, f32 param_6) {
nofralloc
#include "asm/d/a/d_a_alink/setDoubleAnime__9daAlink_cFfffQ29daAlink_c11daAlink_ANMQ29daAlink_c11daAlink_ANMif.s"
}
#pragma pop
#endif
/* 800ACD40-800ACF80 0A7680 0240+00 2/2 0/0 0/0 .text
* commonSingleAnime__9daAlink_cFP15J3DAnmTransformP15J3DAnmTransformffs */
@@ -15349,6 +15513,144 @@ f32 daAlink_c::getFrontRollRate() {
/* 800B4B7C-800B5284 0AF4BC 0708+00 2/2 0/0 0/0 .text decideCommonDoStatus__9daAlink_cFv
*/
// almost, small branch issues and need fix for i_checkAttentionLock
#ifdef NONMATCHING
void daAlink_c::decideCommonDoStatus() {
if (!i_checkFmChainGrabAnime() && i_dComIfGp_getDoStatus() == 0) {
bool temp_r3 = checkStageName("R_SP127");
if (checkRoomOnly() && !i_checkWolf() && !temp_r3) {
if ((checkNoUpperAnime() || checkIronBallWaitAnime()) &&
(mEquipItem != NO_ITEM && i_checkModeFlg(4) && mEquipItem != 0x102))
{
if (checkCopyRodControllAnime()) {
setDoStatus(0x2A);
} else {
setDoStatus(4);
}
} else if (mFastShotTime != 0) {
setDoStatus(0x12);
}
} else if (i_checkWolf()) {
if (checkDownAttackState()) {
setDoStatusEmphasys(0x30);
} else if (checkCutHeadState()) {
setDoStatusEmphasys(0x77);
} else if (checkWolfSideStep()) {
setDoStatusEmphasys(0x19);
} else {
if (mTargetedActor != NULL) {
if (fopAcM_GetName(mTargetedActor) == PROC_Tag_Wljump) {
if (static_cast<daTagWljump_c*>(mTargetedActor)->getLockPos() != NULL) {
if (!getMidnaActor()->checkNoInput()) {
setDoStatus(0x93);
}
i_onResetFlg0(RFLG0_UNK_20000);
field_0x3738 =
*static_cast<daTagWljump_c*>(mTargetedActor)->getLockPos();
}
} else {
setDoStatus(0x8B);
}
} else if (i_checkAttentionLock()) {
setDoStatus(0x8B);
} else if (field_0x30d2 == 0 &&
(field_0x33a8 > getFrontRollRate() || i_checkAttentionLock()))
{
setDoStatus(9);
}
}
if (checkNotJumpSinkLimit() &&
(i_dComIfGp_getDoStatus() == 0x8B || i_dComIfGp_getDoStatus() == 0x30 ||
i_dComIfGp_getDoStatus() == 0x77 || i_dComIfGp_getDoStatus() == 0x19 ||
i_dComIfGp_getDoStatus() == 9 || i_dComIfGp_getDoStatus() == 0x93))
{
setDoStatus(0);
}
} else {
int direction = getDirectionFromShapeAngle();
f32 temp_f31 = getFrontRollRate();
if (i_checkAttentionLock() ||
(mTargetedActor != NULL && (mTargetedActor == mThrowBoomerangAcKeep.getActor() ||
mTargetedActor == mCopyRodAcKeep.getActor())))
{
if (checkInputOnR() && direction != DIR_FORWARD) {
if (mEquipItem == 0x103 && checkDownAttackState()) {
setDoStatusEmphasys(0x30);
} else if (mEquipItem == 0x103 && checkCutHeadState()) {
setDoStatusEmphasys(0x77);
} else {
setDoStatusEmphasys(0x19);
}
} else if (!i_checkSmallUpperGuardAnime() &&
(mEquipItem == 0x103 || mEquipItem == 0x102))
{
if (mEquipItem == 0x102) {
setDoStatus(0x13);
} else if (mEquipItem == 0x103 && checkDownAttackState()) {
setDoStatusEmphasys(0x30);
} else if (mEquipItem == 0x103 && checkCutHeadState()) {
setDoStatusEmphasys(0x77);
} else {
setDoStatus(0x86);
}
} else {
setDoStatus(0x79);
}
} else if (((checkNoUpperAnime()) || checkIronBallWaitAnime() ||
checkCopyRodControllAnime()) &&
mEquipItem != NO_ITEM && i_checkModeFlg(4) && field_0x33a8 <= temp_f31)
{
if (mEquipItem == 0x102) {
if (checkAttentionState()) {
setDoStatus(0x13);
} else {
setDoStatus(0x14);
}
} else {
setDoStatus(4);
}
} else if (field_0x33a8 > temp_f31) {
if (mEquipItem == 0x102) {
setDoStatus(0x13);
} else {
setDoStatus(0x79);
}
} else if (mFastShotTime != 0) {
setDoStatus(0x12);
}
if ((((i_checkMagneBootsOn() || checkIronBallWaitAnime() || checkNotJumpSinkLimit()) ||
(i_dComIfGp_getDoStatus() == 0x79 || i_dComIfGp_getDoStatus() == 0x86 ||
i_dComIfGp_getDoStatus() == 0x30 || i_dComIfGp_getDoStatus() == 0x77 ||
i_dComIfGp_getDoStatus() == 0x19)) ||
(i_dComIfGp_getDoStatus() == 0x79 &&
(checkKandelaarSwingAnime() || field_0x2fa8 == 6 || checkCopyRodThrowAnime() ||
checkBoomerangThrowAnime()))) &&
(!i_checkMagneBootsOn() || i_dComIfGp_getDoStatus() != 0x79 ||
!cBgW_CheckBGround(mMagneBootsTopVec.y)))
{
if (mEquipItem == 0x42 && i_checkModeFlg(4)) {
setDoStatus(4);
} else {
setDoStatus(0);
}
}
if (temp_r3 && i_dComIfGp_getDoStatus() == 0x19) {
setDoStatus(0);
}
if (i_dComIfGp_getDoStatus() == 4 && checkCopyRodControllAnime()) {
setDoStatus(0x2A);
}
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -15357,16 +15659,147 @@ asm void daAlink_c::decideCommonDoStatus() {
#include "asm/d/a/d_a_alink/decideCommonDoStatus__9daAlink_cFv.s"
}
#pragma pop
#endif
/* 800B5284-800B58EC 0AFBC4 0668+00 1/1 0/0 0/0 .text decideDoStatus__9daAlink_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::decideDoStatus() {
nofralloc
#include "asm/d/a/d_a_alink/decideDoStatus__9daAlink_cFv.s"
void daAlink_c::decideDoStatus() {
if (!i_checkFmChainGrabAnime()) {
if (i_checkNoResetFlg0(FLG0_UNK_1000000)) {
setDoStatusEmphasys(0x62);
}
if (mTargetedActor == NULL && mAttList == NULL && i_checkResetFlg0(RFLG0_UNK_8)) {
setWallGrabStatus(0x15, 2);
if (field_0x2f91 == 7 || field_0x2f91 == 8 || field_0x2f91 == 6 || field_0x2f91 == 9) {
setDoStatus(0x20);
}
} else {
if (searchFmChainPos()) {
setChainGrabStatus(0x96);
} else if (mAttList != NULL) {
s16 actor_name = fopAcM_GetName(field_0x27f4);
if (mAttList->mType == 5 ||
(mAttList->mType == 6 &&
(!i_checkWolf() || static_cast<daTbox_c*>(field_0x27f4)->checkSmallTbox())))
{
setDoStatus(6);
} else if (mAttList->mType == 7 && actor_name == PROC_KYTAG05) {
setDoStatus(0x89);
} else if (i_checkWolf()) {
if (mAttList->mType == 4 && !fopAcM_checkCarryNow(field_0x27f4) &&
fopAcM_CheckCarryType(field_0x27f4, fopAcM_CARRY_LIGHT))
{
if (actor_name == PROC_B_MGN) {
setDoStatus(0x91);
} else if (actor_name == PROC_Obj_Yobikusa) {
setDoStatusEmphasys(5);
} else if (actor_name == PROC_Obj_Stone) {
setDoStatus(0x47);
} else if (actor_name == PROC_Obj_Drop || actor_name == PROC_Obj_Sword ||
actor_name == PROC_Obj_SmallKey)
{
setDoStatusEmphasys(0x39);
} else if (!checkGoatCatchActor(field_0x27f4) && !checkGrabLineCheck()) {
setDoStatusEmphasys(0xC);
}
} else if (mTargetedActor != NULL &&
fopAcM_GetName(mTargetedActor) == PROC_B_MGN &&
mAttention->getActionBtnB() != NULL &&
mAttention->getActionBtnB()->mType == 4 &&
mAttention->getActionBtnB()->getActor() == mTargetedActor)
{
setDoStatus(0x91);
} else if (mTargetedActor != NULL &&
fopAcM_GetName(mTargetedActor) == PROC_E_YM &&
mAttention->getActionBtnB() != NULL &&
mAttention->getActionBtnB()->mType == 7 &&
mAttention->getActionBtnB()->getActor() == mTargetedActor)
{
i_onEndResetFlg1(ERFLG1_UNK_100000);
if (mWolfEyeUp != 0) {
setWolfDigStatus(2);
}
} else if (mAttList->mType == 7 && field_0x27f4 != NULL) {
if (actor_name == PROC_Obj_Digpl || actor_name == PROC_Obj_Digholl ||
actor_name == PROC_Obj_DigSnow || actor_name == PROC_Obj_Lv4DigSand ||
actor_name == PROC_E_YM)
{
i_onEndResetFlg1(ERFLG1_UNK_100000);
if (mWolfEyeUp != 0) {
setWolfDigStatus(2);
}
} else if (actor_name == PROC_TAG_HOWL ||
actor_name == PROC_Obj_WindStone ||
actor_name == PROC_Obj_SmWStone ||
actor_name == PROC_Tag_WaraHowl)
{
setDoStatusEmphasys(5);
} else if (actor_name == PROC_KYTAG03) {
setDoStatusEmphasys(0x45);
}
} else if (mTargetedActor != NULL && field_0x27f4 == mTargetedActor &&
actor_name == PROC_Obj_Wchain)
{
setDoStatusEmphasys(0x7B);
} else {
setTalkStatus();
}
} else if (mAttList->mType == 7) {
if ((!checkMagicArmorHeavy() &&
(actor_name == PROC_HORSE || actor_name == PROC_E_WB) &&
checkReinRideBgCheck()) ||
actor_name == PROC_CANOE || actor_name == PROC_Obj_IceLeaf)
{
setDoStatus(0x17);
} else if (actor_name == PROC_COW) {
setDoStatus(0x38);
} else if (actor_name == PROC_Obj_YIblltray) {
setDoStatusEmphasys(0x99);
} else if (actor_name == PROC_Tag_Lv6Gate ||
(actor_name == PROC_TAG_KMSG &&
static_cast<daTag_KMsg_c*>(field_0x27f4)->getType() == 3))
{
if (!checkEquipAnime() && checkMasterSwordEquip()) {
setDoStatus(0x63);
}
}
} else if (mTargetedActor != NULL && checkGoatCatchActor(mTargetedActor) &&
mAttention->getActionBtnB() != NULL &&
mAttention->getActionBtnB()->mType == 4 &&
mAttention->getActionBtnB()->getActor() == mTargetedActor)
{
setDoStatus(0x91);
} else if (mAttList->mType == 4) {
if (!fopAcM_checkCarryNow(field_0x27f4)) {
if (checkGoatCatchActor(field_0x27f4)) {
setDoStatus(0x91);
} else if (!i_checkMagneBootsOn()) {
if (checkInsectActorName(field_0x27f4)) {
setDoStatusEmphasys(0x98);
} else if (actor_name == PROC_Obj_SmallKey) {
setDoStatusEmphasys(0x39);
} else if (!checkGrabLineCheck()) {
if (actor_name == PROC_Obj_Yobikusa) {
setDoStatus(0x2B);
} else if (fopAcM_CheckCarryType(field_0x27f4, fopAcM_CARRY_TYPE_8))
{
setDoStatusEmphasys(0x34);
} else if (actor_name != PROC_B_MGN) {
setDoStatusEmphasys(0x1F);
}
}
}
}
} else {
setTalkStatus();
}
}
decideCommonDoStatus();
}
}
}
#pragma pop
/* 800B58EC-800B5BC0 0B022C 02D4+00 25/25 0/0 0/0 .text checkWaitAction__9daAlink_cFv */
#pragma push
@@ -15773,6 +16206,188 @@ asm int daAlink_c::orderZTalk() {
#pragma pop
/* 800B8374-800B8930 0B2CB4 05BC+00 1/1 0/0 0/0 .text checkNormalAction__9daAlink_cFv */
// matches with literals
#ifdef NONMATCHING
int daAlink_c::checkNormalAction() {
int wall_grab_status = getWallGrabStatus();
if (wallGrabTrigger()) {
if (wall_grab_status == 0x15) {
return procCoPushPullWaitInit(1);
}
if (wall_grab_status == 0x96 && searchFmChainPos()) {
if (i_checkWolf()) {
return procWolfChainUpInit();
} else {
return procFmChainUpInit();
}
}
}
if (orderTalk(1)) {
return 1;
}
if (doTrigger()) {
if (i_dComIfGp_getDoStatus() == 0x89) {
orderPeep();
return 1;
}
if (i_dComIfGp_getDoStatus() == 7) {
if (i_checkWolf()) {
return procWolfLieStartInit(1);
} else {
return procCrawlStartInit();
}
}
if (i_dComIfGp_getDoStatus() == 12) {
return procWolfGrabUpInit();
}
if (i_dComIfGp_getDoStatus() == 0x7B) {
return procWolfChainReadyInit();
}
if (i_dComIfGp_getDoStatus() == 0x47) {
return procWolfPushInit();
}
if (i_dComIfGp_getDoStatus() == 0x17) {
if (fopAcM_GetName(field_0x27f4) == PROC_Obj_IceLeaf) {
return procBoardRideInit();
}
if (fopAcM_GetName(field_0x27f4) == PROC_CANOE) {
if (i_checkModeFlg(0x40000)) {
return procCanoeRideInit();
} else {
return procSmallJumpInit(1);
}
}
if (checkStageName("F_SP103") &&
fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchKolin, NULL))
{
return procWaitInit();
} else {
return procHorseRideInit();
}
}
if (i_dComIfGp_getDoStatus() == 0x20) {
if (i_checkWolf()) {
return procWolfHangReadyInit();
} else {
if (field_0x2f91 == 7) {
return procHangWallCatchInit();
} else {
return procHangReadyInit();
}
}
}
if (i_dComIfGp_getDoStatus() == 6) {
if (mAttList->mType == 5) {
if (!checkStageName("F_SP103") ||
!fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchBouDoor, NULL))
{
fopAcM_orderDoorEvent(this, field_0x27f4, 0, 0);
}
checkWaitAction();
} else {
fopAcM_orderTreasureEvent(this, field_0x27f4, 0, 0);
}
return 1;
}
if (i_dComIfGp_getDoStatus() == 0x2B) {
return procGrassWhistleGetInit();
}
if (i_dComIfGp_getDoStatus() == 0x38) {
return procGoatStrokeInit();
}
if (i_dComIfGp_getDoStatus() == 0x63) {
if (fopAcM_GetName(field_0x27f4) == PROC_Tag_Lv6Gate) {
static_cast<daTagLv6Gate_c*>(field_0x27f4)->stabMasterSword();
} else {
static_cast<daTag_KMsg_c*>(field_0x27f4)->stabMasterSword();
}
procWaitInit();
return 1;
}
if (i_dComIfGp_getDoStatus() == 0x91) {
i_onNoResetFlg0(FLG0_UNK_10000000);
if (field_0x27f4->current.pos.abs2XZ(current.pos) < getGoatCatchDistance2()) {
if (i_checkWolf()) {
return procWolfGanonCatchInit();
} else {
return procGoatCatchInit(field_0x27f4, 0.0f);
}
}
} else if (i_dComIfGp_getDoStatus() == 0x98) {
return procInsectCatchInit();
} else if (i_dComIfGp_getDoStatus() == 0x1F || i_dComIfGp_getDoStatus() == 0x39 ||
i_dComIfGp_getDoStatus() == 0x34)
{
if (i_checkWolf()) {
return procWolfGrabUpInit();
} else {
if (fopAcM_CheckCarryType(field_0x27f4, fopAcM_CARRY_ITEM)) {
return procPickUpInit();
} else {
return procGrabReadyInit();
}
}
} else if (i_dComIfGp_getDoStatus() == 0x99) {
return procHangLeverDownInit();
} else if (i_dComIfGp_getDoStatus() == 0x30) {
if (i_checkWolf()) {
return procWolfDownAttackInit();
} else {
return checkDoCutAction();
}
} else if (i_dComIfGp_getDoStatus() == 0x77) {
if (i_checkWolf()) {
return procWolfJumpAttackInit(1);
} else {
return checkDoCutAction();
}
} else if (i_dComIfGp_getDoStatus() == 0x8B) {
return procWolfJumpAttackInit(1);
} else if (i_dComIfGp_getDoStatus() == 0x62) {
changeCutFast();
return 1;
} else if (i_dComIfGp_getDoStatus() == 0x86) {
return checkDoCutAction();
} else if (i_dComIfGp_getDoStatus() == 5) {
return procWolfHowlDemoInit();
} else if (i_dComIfGp_getDoStatus() == 0x45) {
return procWolfGetSmellInit();
} else if (i_dComIfGp_getDoStatus() == 0x93) {
return procWolfTagJumpInit(field_0x27f4);
}
} else if (i_checkNoResetFlg0(FLG0_UNK_10000000) && i_dComIfGp_getDoStatus() == 0x91) {
if (field_0x27f4->current.pos.abs2XZ(current.pos) < getGoatCatchDistance2()) {
if (i_checkWolf()) {
return procWolfGanonCatchInit();
} else {
return procGoatCatchInit(field_0x27f4, 0.0f);
}
}
}
return 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -15780,6 +16395,7 @@ asm int daAlink_c::checkNormalAction(){nofralloc
#include "asm/d/a/d_a_alink/checkNormalAction__9daAlink_cFv.s"
}
#pragma pop
#endif
u16 daAlink_c::getReadyItem() {
return dComIfGp_getSelectItem(mSelectItemId);
@@ -16183,11 +16799,11 @@ BOOL daAlink_c::checkGroundSpecialMode() {
/* 800BA09C-800BA0D0 0B49DC 0034+00 4/4 0/0 0/0 .text commonCheckNextAction__9daAlink_cFi
*/
void daAlink_c::commonCheckNextAction(int param_0) {
int daAlink_c::commonCheckNextAction(int param_0) {
if (i_checkWolf()) {
checkNextActionWolf(param_0);
return checkNextActionWolf(param_0);
} else {
checkNextAction(param_0);
return checkNextAction(param_0);
}
}
+5 -5
View File
@@ -651,16 +651,16 @@ BOOL daAlink_c::checkCutCancelNextMode(int param_0) {
}
/* 800D27E4-800D2890 0CD124 00AC+00 4/4 0/0 0/0 .text checkDoCutAction__9daAlink_cFv */
void daAlink_c::checkDoCutAction() {
BOOL daAlink_c::checkDoCutAction() {
// event flag 0x2A40: Learned Jump Strike
if (doButton() && (i_dComIfGs_isEventBit(0x2A40) || i_checkNoResetFlg3(FLG3_UNK_200))) {
procCutLargeJumpChargeInit();
return procCutLargeJumpChargeInit();
} else if (checkDownAttackState()) {
procCutDownInit();
return procCutDownInit();
} else if (checkCutHeadState()) {
procCutHeadInit();
return procCutHeadInit();
} else {
procCutJumpInit(0);
return procCutJumpInit(0);
}
}
+2851 -74
View File
File diff suppressed because it is too large Load Diff
+47 -14
View File
@@ -1,7 +1,8 @@
/* 800E3830-800E3858 0DE170 0028+00 2/2 0/0 0/0 .text daAlink_checkLightBallA__FP10fopAc_ac_c */
static bool daAlink_checkLightBallA(fopAc_ac_c* p_actor) {
if (fopAcM_GetName(p_actor) == PROC_Obj_Carry &&
static_cast<daObjCarry_c*>(p_actor)->getType() == daObjCarry_c::TYPE_BALL_S) {
static_cast<daObjCarry_c*>(p_actor)->getType() == daObjCarry_c::TYPE_BALL_S)
{
return true;
}
return false;
@@ -10,7 +11,8 @@ static bool daAlink_checkLightBallA(fopAc_ac_c* p_actor) {
/* 800E3858-800E3880 0DE198 0028+00 2/2 0/0 0/0 .text daAlink_checkLightBallB__FP10fopAc_ac_c */
static bool daAlink_checkLightBallB(fopAc_ac_c* p_actor) {
if (fopAcM_GetName(p_actor) == PROC_Obj_Carry &&
static_cast<daObjCarry_c*>(p_actor)->getType() == daObjCarry_c::TYPE_BALL_S_2) {
static_cast<daObjCarry_c*>(p_actor)->getType() == daObjCarry_c::TYPE_BALL_S_2)
{
return true;
}
return false;
@@ -19,7 +21,8 @@ static bool daAlink_checkLightBallB(fopAc_ac_c* p_actor) {
/* 800E3880-800E38EC 0DE1C0 006C+00 1/1 0/0 0/0 .text daAlink_searchLightBall__FP10fopAc_ac_cPv */
static fopAc_ac_c* daAlink_searchLightBall(fopAc_ac_c* p_actor, void* param_1) {
if ((daPy_py_c::checkCarryStartLightBallA() && daAlink_checkLightBallA(p_actor)) ||
(daPy_py_c::checkCarryStartLightBallB() && daAlink_checkLightBallB(p_actor))) {
(daPy_py_c::checkCarryStartLightBallB() && daAlink_checkLightBallB(p_actor)))
{
return p_actor;
}
return NULL;
@@ -29,7 +32,7 @@ static fopAc_ac_c* daAlink_searchLightBall(fopAc_ac_c* p_actor, void* param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::checkGrabLineCheck() {
asm BOOL daAlink_c::checkGrabLineCheck() {
nofralloc
#include "asm/d/a/d_a_alink/checkGrabLineCheck__9daAlink_cFv.s"
}
@@ -76,7 +79,8 @@ bool daAlink_c::setForceGrab(fopAc_ac_c* p_actor, int param_1, int param_2) {
(((mEquipItem == NO_ITEM || (param_2 != 0 && checkHookshotItem(mEquipItem)))) &&
((i_checkModeFlg(MODE_UNK_10000000) &&
(checkHorseNoUpperAnime() || checkHorseTurnAnime())) ||
param_2 != 0 && checkHookshotAnime()))) {
param_2 != 0 && checkHookshotAnime())))
{
deleteEquipItem(TRUE, FALSE);
setGrabItemActor(p_actor);
field_0x33e4 = lit_8785;
@@ -156,7 +160,8 @@ asm void daAlink_c::setGrabUpperAnime(f32 param_0) {
BOOL daAlink_c::checkGrabRooster() {
if (mGrabItemAcKeep.getActor() != NULL &&
(fopAcM_GetName(mGrabItemAcKeep.getActor()) == PROC_NI ||
fopAcM_GetName(mGrabItemAcKeep.getActor()) == PROC_NPC_TKJ2)) {
fopAcM_GetName(mGrabItemAcKeep.getActor()) == PROC_NPC_TKJ2))
{
return true;
}
@@ -488,7 +493,7 @@ asm int daAlink_c::procGrabStand() {
/* 800E70C0-800E70FC 0E1A00 003C+00 1/1 0/0 0/0 .text
* checkInsectActorName__9daAlink_cFP10fopAc_ac_c */
bool daAlink_c::checkInsectActorName(fopAc_ac_c* insectActor) {
BOOL daAlink_c::checkInsectActorName(fopAc_ac_c* insectActor) {
s16 insectName = fopAcM_GetName(insectActor);
for (int i = 0; i < 12; i++) {
@@ -605,7 +610,7 @@ asm u8 daAlink_c::checkChainEmphasys() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm u8 daAlink_c::searchFmChainPos() {
asm BOOL daAlink_c::searchFmChainPos() {
nofralloc
#include "asm/d/a/d_a_alink/searchFmChainPos__9daAlink_cFv.s"
}
@@ -629,7 +634,8 @@ bool daAlink_c::checkChainBlockPushPull() {
if (actor != NULL) {
s16 name = fopAcM_GetName(actor);
if (name == PROC_Obj_ChainBlock || name == PROC_Obj_SwChain ||
name == PROC_Obj_ChainWall) {
name == PROC_Obj_ChainWall)
{
return true;
}
}
@@ -695,13 +701,13 @@ int daAlink_c::getWallGrabStatus() {
}
/* 800E7EF4-800E7F18 0E2834 0024+00 1/1 0/0 0/0 .text wallGrabTrigger__9daAlink_cFv */
void daAlink_c::wallGrabTrigger() {
itemTriggerCheck(BTN_R);
BOOL daAlink_c::wallGrabTrigger() {
return itemTriggerCheck(BTN_R);
}
/* 800E7F18-800E7F3C 0E2858 0024+00 4/4 0/0 0/0 .text wallGrabButton__9daAlink_cFv */
void daAlink_c::wallGrabButton() {
itemButtonCheck(BTN_R);
BOOL daAlink_c::wallGrabButton() {
return itemButtonCheck(BTN_R);
}
/* 800E7F3C-800E80A4 0E287C 0168+00 4/4 0/0 0/0 .text
@@ -749,7 +755,8 @@ void daAlink_c::offGoatStopGame() {
* checkGoatCatchActor__9daAlink_cFP10fopAc_ac_c */
BOOL daAlink_c::checkGoatCatchActor(fopAc_ac_c* param_0) {
s16 name = fopAcM_GetName(param_0);
return name == PROC_E_GOB || (name == PROC_OBJ_GRA && checkSpecialNpc(param_0)) || name == PROC_COW;
return name == PROC_E_GOB || (name == PROC_OBJ_GRA && checkSpecialNpc(param_0)) ||
name == PROC_COW;
}
/* 800E8314-800E8334 0E2C54 0020+00 2/2 0/0 0/0 .text getGoatCatchDistance2__9daAlink_cFv
@@ -929,6 +936,31 @@ asm int daAlink_c::procGoatCatch() {
#pragma pop
/* 800EA2A8-800EA3AC 0E4BE8 0104+00 2/2 0/0 0/0 .text procGoatStrokeInit__9daAlink_cFv */
// matches with literals
#ifdef NONMATCHING
int daAlink_c::procGoatStrokeInit() {
if (mEquipItem != NO_ITEM) {
return procPreActionUnequipInit(PROC_GOAT_STROKE, field_0x27f4);
}
commonProcInit(PROC_GOAT_STROKE);
field_0x280c.setData(field_0x27f4);
setSingleAnimeBase(ANM_COW_STROKE);
static_cast<daCow_c*>(field_0x280c.getActor())->setNaderu();
mNormalSpeed = 0.0f;
if ((s16)(fopAcM_searchActorAngleY(field_0x27f4, this) - field_0x27f4->shape_angle.y) > 0) {
shape_angle.y = field_0x27f4->shape_angle.y - 0x4000;
} else {
shape_angle.y = field_0x27f4->shape_angle.y + 0x4000;
}
current.pos.x = field_0x27f4->current.pos.x - cM_ssin(shape_angle.y) * 100.0f;
current.pos.z = field_0x27f4->current.pos.z - cM_scos(shape_angle.y) * 100.0f;
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -937,6 +969,7 @@ asm int daAlink_c::procGoatStrokeInit() {
#include "asm/d/a/d_a_alink/procGoatStrokeInit__9daAlink_cFv.s"
}
#pragma pop
#endif
/* 800EA3AC-800EA3F4 0E4CEC 0048+00 1/0 0/0 0/0 .text procGoatStroke__9daAlink_cFv */
int daAlink_c::procGoatStroke() {
+1 -1
View File
@@ -219,7 +219,7 @@ asm int daAlink_c::procGuardBreak() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool daAlink_c::procTurnMoveInit(int param_0) {
asm int daAlink_c::procTurnMoveInit(int param_0) {
nofralloc
#include "asm/d/a/d_a_alink/procTurnMoveInit__9daAlink_cFi.s"
}
+1 -1
View File
@@ -264,7 +264,7 @@ int daAlink_c::checkNextActionSwim() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::checkSwimAction(int param_0) {
asm int daAlink_c::checkSwimAction(int param_0) {
nofralloc
#include "asm/d/a/d_a_alink/checkSwimAction__9daAlink_cFi.s"
}
+1 -1
View File
@@ -1127,7 +1127,7 @@ void daPy_py_c::skipPortalObjWarp() {
}
/* 80141840-80141848 13C180 0008+00 1/0 0/0 0/0 .text checkTreasureRupeeReturn__9daPy_py_cCFi */
bool daPy_py_c::checkTreasureRupeeReturn(int param_0) const {
BOOL daPy_py_c::checkTreasureRupeeReturn(int param_0) const {
return false;
}
+1 -1
View File
@@ -752,7 +752,7 @@ static int it;
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dDemo_actor_c::getDemoIDData(int* param_0, int* param_1, int* param_2, u16* param_3,
asm int dDemo_actor_c::getDemoIDData(int* param_0, int* param_1, int* param_2, u16* param_3,
u8* param_4) {
nofralloc
#include "asm/d/d_demo/getDemoIDData__13dDemo_actor_cFPiPiPiPUsPUc.s"