d_a_npc work

daBaseNpc_c::setBckAnm and J3DAnmTransform* daBaseNpc_c

daBaseNpc_c::setBtpAnm

daBaseNpc_c::attnSttsOn

daBaseNpc_c::orderEvent

daBaseNpc_c::setEnvTevColor

daBaseNpc_c::setRoomNo

daBaseNpc_c::checkEndAnm attempt

CheckCreateHeap

daNpcF_addIdx

daNpcF_subIdx

daNpcF_incIdx

daNpcF_decIdx

daNpcF_ActorMngr_c::initialize()

daNpcF_ActorMngr_c::entry

cleanup daNpcF_ActorMngr_c::entry

daNpcF_ActorMngr_c::remove

daNpcF_ActorMngr_c::getActorP

daNpcF_MatAnm_c::calc attempt

daNpcF_SPCurve_c::initialize

minor fixes

daNpcF_Path_c::initialize

daNpcF_Path_c::setPathInfo

daNpcF_Path_c::chkPassed

daNpcF_Path_c::reverse

daNpcF_Path_c::setNextIdx

daNpcF_Path_c::getNextIdx

daNpcF_Path_c::getBeforeIdx

daNpcF_Path_c::getBeforePos

daNpcF_Path_c::getNextPos

daNpcT_MatAnm_c::initialize

daNpcT_MatAnm_c::calc

daNpcT_addIdx

daNpcT_subIdx

daNpcT_decIdx

daNpcT_Path_c::hermite

daNpcT_Path_c::initialize

daNpcT_Path_c::setPathInfo attempt

daNpcT_Path_c::setNextPathInfo

daNpcT_Path_c::reverse

daNpcT_Path_c::setNextIdx

daNpcT_Path_c::getDstPos attempt

daNpcT_DmgStagger_c::setParam

Add FLOAT_LABEL where possible

fopEn_enemy / fix e_wb

move jasper's jsystem work over

d_attention / d_demo / d_lib work

remove asm

clean up dolphin files / work on some rels (#212)

* d_a_alldie / d_a_tboxSw / d_a_tag_gstart / d_a_tag_hstop

* dolphin OS work / cleanup

* dolphin GX work / cleanup

* finish changing dolphin files to C

* more files into C

* match rest of MSL_C math functions

* more dolphin files converted to C

* remove asm

* d_bg_w work

* remove asm

* d_a_alink work / kytag14

initial changes to d_a_e_yc

checkpoint until virtual destructor issue is solved

daNpcF_Lookat_c::adjustMoveDisAngle

daBaseNpc_c::setMtx

daBaseNpc_moveBgActor_c::daBaseNpc_moveBgActor_c()

daNpcT_c::ctrlFaceMotion

daNpcT_c::ctrlMsgAnm attempt

daNpcT_c::initTalk

daNpcF_clearMessageTmpBit

daNpcF_getDistTableIdx

daNpcF_offTmpBit

daNpcF_onTmpBit

daNpcF_chkTmpBit

daNpcF_onEvtBit

daNpcF_chkEvtBit

daNpcF_c::getDistTableIdx

daNpcF_chkPointInArea

daNpcF_chkDoBtnEqSpeak

daNpcF_getPlayerInfoFromPlayerList attempt

daNpcF_pntVsLineSegmentLengthSquare2D

daNpcF_c::chkPointInArea

daNpcF_c::chkPointInArea

daNpcF_c::getAttentionPos

daNpcT_chkTmpBit

daNpcT_offTmpBit

daNpcT_onTmpBit

daNpcT_chkEvtBit

daNpcT_offEvtBit

daNpcT_onEvtBit

daNpcT_chkDoBtnIsSpeak

daNpcT_getDistTableIdx

daBaseNpc_acMngr_c::entry

daNpcF_c::initTalk

undo override
This commit is contained in:
Pheenoh
2022-10-15 15:32:34 -06:00
parent 84950e08b4
commit 85ad8b190d
880 changed files with 23183 additions and 38749 deletions
+448 -288
View File
File diff suppressed because it is too large Load Diff
+30 -29
View File
@@ -1,3 +1,5 @@
#include "rel/d/a/d_a_boomerang/d_a_boomerang.h"
/* 800DFFE0-800E0010 0DA920 0030+00 0/0 0/0 1/1 .text checkBoomerangLockAccept__9daAlink_cFv */
BOOL daAlink_c::checkBoomerangLockAccept() {
return mSight.getDrawFlg() && i_dComIfGp_checkPlayerStatus0(0, 0x80000);
@@ -9,9 +11,9 @@ BOOL daAlink_c::checkBoomerangLockAccept() {
f32 daAlink_c::getBoomSpeed() {
f32 speed;
if (checkBoomerangChargeEndWait()) {
speed = daAlinkHIO_boom_c0::m.field_0x38;
speed = daAlinkHIO_boom_c0::m.mFlySpeed2;
} else {
speed = daAlinkHIO_boom_c0::m.field_0x34;
speed = daAlinkHIO_boom_c0::m.mFlySpeed;
}
if (i_checkModeFlg(0x400) && mRideAcKeep.getActor() != NULL && mSpeedF > FLOAT_LABEL(lit_6108)) {
@@ -39,22 +41,22 @@ f32 daAlink_c::getBoomCatchSpeed() const {
/* 800E00C0-800E011C 0DAA00 005C+00 1/1 0/0 1/1 .text getBoomFlyMax__9daAlink_cCFv */
f32 daAlink_c::getBoomFlyMax() const {
if (i_checkModeFlg(0x400) && !checkCanoeRide()) {
return daAlinkHIO_boom_c0::m.field_0x40;
return daAlinkHIO_boom_c0::m.mHorsebackFlyDistMax;
} else {
return daAlinkHIO_boom_c0::m.field_0x3c;
return daAlinkHIO_boom_c0::m.mFlyDistMax;
}
}
/* 800E011C-800E0190 0DAA5C 0074+00 1/1 0/0 2/2 .text getBoomLockMax__9daAlink_cFv */
f32 daAlink_c::getBoomLockMax() {
f32 max = getBoomFlyMax();
f32 fly_max = getBoomFlyMax();
if (checkBossBabaRoom()) {
return lit_12475;
} else if (daAlinkHIO_boom_c0::m.field_0x44 > max) {
return daAlinkHIO_boom_c0::m.field_0x44;
} else if (daAlinkHIO_boom_c0::m.mLockDistMax > fly_max) {
return daAlinkHIO_boom_c0::m.mLockDistMax;
} else {
return max;
return fly_max;
}
}
@@ -94,21 +96,25 @@ fopAc_ac_c* daAlink_c::getBoomerangActor() {
}
/* 800E0244-800E02B8 0DAB84 0074+00 0/0 1/1 0/0 .text checkBoomerangChargeEnd__9daAlink_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool daAlink_c::checkBoomerangChargeEnd() {
nofralloc
#include "asm/d/a/d_a_alink/checkBoomerangChargeEnd__9daAlink_cFv.s"
bool daAlink_c::checkBoomerangChargeEnd() {
if (checkBoomerangChargeEndWait()) {
return true;
}
daBoomerang_c* boomerang = (daBoomerang_c*)getBoomerangActor();
if (boomerang != NULL && boomerang->checkCharge()) {
return true;
}
return false;
}
#pragma pop
/* 800E02B8-800E03D0 0DABF8 0118+00 0/0 1/1 0/0 .text
* checkBoomerangCarry__9daAlink_cFP10fopAc_ac_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::checkBoomerangCarry(fopAc_ac_c* param_0) {
asm BOOL daAlink_c::checkBoomerangCarry(fopAc_ac_c* param_0) {
nofralloc
#include "asm/d/a/d_a_alink/checkBoomerangCarry__9daAlink_cFP10fopAc_ac_c.s"
}
@@ -120,11 +126,11 @@ void daAlink_c::initBoomerangUpperAnimeSpeed(int param_0) {
if (!checkBoomerangThrowAnime()) {
if (param_0 != 0) {
f32 tmp = FLOAT_LABEL(lit_6108);
mFrameCtrl2[2].setRate(tmp);
mFrameCtrl2[2].setFrame(tmp);
getNowAnmPackUpper(UPPER_NOW)->setFrame(tmp);
mUpperFrameCtrl[2].setRate(tmp);
mUpperFrameCtrl[2].setFrame(tmp);
getNowAnmPackUpper(UPPER_2)->setFrame(tmp);
} else {
mFrameCtrl2[2].setRate(daAlinkHIO_boom_c0::m.field_0x2c);
mUpperFrameCtrl[2].setRate(daAlinkHIO_boom_c0::m.mIdleAnmSpeed);
}
}
}
@@ -136,14 +142,9 @@ BOOL daAlink_c::checkBoomerangAnime() const {
}
/* 800E04AC-800E04E8 0DADEC 003C+00 13/13 0/0 0/0 .text checkBoomerangThrowAnime__9daAlink_cCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm BOOL daAlink_c::checkBoomerangThrowAnime() const {
nofralloc
#include "asm/d/a/d_a_alink/checkBoomerangThrowAnime__9daAlink_cCFv.s"
BOOL daAlink_c::checkBoomerangThrowAnime() const {
return (mEquipItem == BOOMERANG || i_checkNoResetFlg1(FLG1_UNK_2) || mEquipItem == 0x102) && checkUpperAnime(0x53);
}
#pragma pop
/* 800E04E8-800E055C 0DAE28 0074+00 1/1 0/0 0/0 .text setBoomerangReadyQuake__9daAlink_cFv */
#pragma push
@@ -167,13 +168,13 @@ asm void daAlink_c::setBoomerangReadyAnime() {
/* 800E05E8-800E0630 0DAF28 0048+00 2/2 0/0 0/0 .text setThrowBoomerangAnime__9daAlink_cFv */
void daAlink_c::setThrowBoomerangAnime() {
setUpperAnimeParam(0x53, UPPER_NOW, &daAlinkHIO_boom_c0::m.mThrowAnm);
setUpperAnimeParam(0x53, UPPER_2, &daAlinkHIO_boom_c0::m.mThrowAnm);
cancelItemUseQuake(0);
}
/* 800E0630-800E06B8 0DAF70 0088+00 2/2 0/0 0/0 .text setBoomerangCatchAnime__9daAlink_cFv */
void daAlink_c::setBoomerangCatchAnime() {
setUpperAnimeParam(0x52, UPPER_NOW, &daAlinkHIO_boom_c0::m.mCatchAnm);
setUpperAnimeParam(0x52, UPPER_2, &daAlinkHIO_boom_c0::m.mCatchAnm);
setFacePriBck(0xE8);
field_0x2f97 = 254;
if (mEquipItem != COPY_ROD) {
+1 -1
View File
@@ -85,7 +85,7 @@ asm void daAlink_c::checkCanoeRideTandem() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::checkFishingRodAndLureItem() const {
asm BOOL daAlink_c::checkFishingRodAndLureItem() const {
nofralloc
#include "asm/d/a/d_a_alink/checkFishingRodAndLureItem__9daAlink_cCFv.s"
}
+5 -5
View File
@@ -56,11 +56,11 @@ asm void daAlink_c::initCopyRodUpperAnimeSpeed(int param_0) {
/* void daAlink_c::initCopyRodUpperAnimeSpeed(int param_0) {
if (checkCopyRodThrowAnime()) {
if (param_1 == 0) {
mFrameCtrl2[2].setRate();
mUpperFrameCtrl[2].setRate();
}
f32 tmp = FLOAT_LABEL(lit_6108);
mFrameCtrl2[2].setRate(tmp);
mFrameCtrl2[2].setFrame(tmp);
mUpperFrameCtrl[2].setRate(tmp);
mUpperFrameCtrl[2].setFrame(tmp);
}
} */
@@ -173,7 +173,7 @@ void daAlink_c::throwCopyRod() {
if (checkCopyRodTopUse()) {
copy_rod->setThrow();
mCopyRodAcKeep = mItemAcKeep;
i_onNoResetFlg3(COPY_ROD_THROW_AFTER);
i_onNoResetFlg3(FLG3_COPY_ROD_THROW_AFTER);
mItemAcKeep.clearData();
}
dComIfGp_clearPlayerStatus0(0, 0x80);
@@ -203,7 +203,7 @@ asm void daAlink_c::returnCopyRod() {
#pragma pop
/* void daAlink_c::returnCopyRod() {
i_offNoResetFlg3(COPY_ROD_THROW_AFTER);
i_offNoResetFlg3(FLG3_COPY_ROD_THROW_AFTER);
if (mEquipItem == 0x46) {
mItemAcKeep = mCopyRodAcKeep;
+27 -8
View File
@@ -92,7 +92,7 @@ void daAlink_c::changeCutFast() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::checkCutFastReady() {
asm bool daAlink_c::checkCutFastReady() {
nofralloc
#include "asm/d/a/d_a_alink/checkCutFastReady__9daAlink_cFv.s"
}
@@ -128,10 +128,28 @@ void daAlink_c::offSwordModel() {
*/
BOOL daAlink_c::checkCutTypeNoBlur() const {
return mCutType == TYPE_CUT_STAB || mCutType == TYPE_CUT_STAB_COMBO ||
mCutType == TYPE_CUT_STAB_FINISH || i_checkNoResetFlg0(UNDER_WATER_MOVEMENT);
mCutType == TYPE_CUT_STAB_FINISH || i_checkNoResetFlg0(FLG0_UNDERWATER);
}
/* 800D13E4-800D1424 0CBD24 0040+00 7/7 0/0 0/0 .text checkCutTurnInput__9daAlink_cCFv */
#ifdef NONMATCHING
u32 daAlink_c::checkCutTurnInput() const {
s32 unk0;
int unk1;
int unk2;
int unk3;
unk0 = abs(field_0x3180);
s16 ex = -2048;
unk1 = unk0 ^ (u32)ex;
unk2 = (unk1 & unk0);
unk3 = (unk1 >> 1);
return (u32)(unk3 -= unk2) >> 0x1FU;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -140,6 +158,7 @@ asm bool daAlink_c::checkCutTurnInput() const {
#include "asm/d/a/d_a_alink/checkCutTurnInput__9daAlink_cCFv.s"
}
#pragma pop
#endif
/* 800D1424-800D1430 0CBD64 000C+00 7/7 0/0 0/0 .text getCutTurnDirection__9daAlink_cCFv
*/
@@ -283,13 +302,13 @@ void daAlink_c::setComboReserb() {
field_0x307e = daAlinkHIO_cut_c0::m.mComboDuration;
}
if (mComboCutCount != 4 && field_0x2fce == 0 && swordSwingTrigger()) {
i_onNoResetFlg2(UNK_FLG2_2);
i_onNoResetFlg2(FLG2_UNK_2);
}
}
/* 800D2188-800D21D0 0CCAC8 0048+00 1/1 0/0 0/0 .text checkComboReserb__9daAlink_cFv */
BOOL daAlink_c::checkComboReserb() {
return i_checkNoResetFlg2(UNK_FLG2_2) && !checkEventRun();
return i_checkNoResetFlg2(FLG2_UNK_2) && !checkEventRun();
}
/* 800D21D0-800D2284 0CCB10 00B4+00 1/1 0/0 0/0 .text commonCutAction__9daAlink_cFv */
@@ -316,7 +335,7 @@ bool daAlink_c::commonCutAction() {
/* 800D2284-800D22BC 0CCBC4 0038+00 13/13 0/0 0/0 .text setSwordVoiceSe__9daAlink_cFUl */
void daAlink_c::setSwordVoiceSe(u32 sfx_id) {
if (!i_checkNoResetFlg0(UNDER_WATER_MOVEMENT)) {
if (!i_checkNoResetFlg0(FLG0_UNDERWATER)) {
voiceStart(sfx_id);
}
}
@@ -477,7 +496,7 @@ asm void daAlink_c::checkCutAtnActorChange() {
// literals, and small issue with JMAFastSqrt instructions
#ifdef NONMATCHING
void daAlink_c::setCutJumpSpeed(int cut_type) {
if (i_checkNoResetFlg0(UNDER_WATER_MOVEMENT)) {
if (i_checkNoResetFlg0(FLG0_UNDERWATER)) {
mNormalSpeed *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityX;
mSpeed.y *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityY;
} else if (checkHeavyStateOn(1, 1)) {
@@ -666,7 +685,7 @@ bool daAlink_c::procCutJump() {
}
if (mLinkAcch.ChkGroundHit()) {
procCutJumpLandInit(field_0x3198);
} else if (mFrameCtrl1[0].getFrame() >= daAlinkHIO_cutJump_c0::m.mStartAttackFrame) {
} else if (mUnderFrameCtrl[0].getFrame() >= daAlinkHIO_cutJump_c0::m.mStartAttackFrame) {
if (!i_checkNoResetFlg0(FLG0_UNK_40)) {
seStartSwordCut(Z2SE_AL_SWORD_SWING_L);
}
@@ -883,7 +902,7 @@ asm void daAlink_c::procCutLargeJumpInit() {
/* 800D6484-800D66C0 0D0DC4 023C+00 1/0 0/0 0/0 .text procCutLargeJump__9daAlink_cFv */
bool daAlink_c::procCutLargeJump() {
daPy_frameCtrl_c* ctrl = &mFrameCtrl1[0];
daPy_frameCtrl_c* ctrl = &mUnderFrameCtrl[0];
if (field_0x3010 != 0) {
field_0x2f99 = 4;
+5 -5
View File
@@ -116,7 +116,7 @@ asm bool daAlink_c::setThrowDamage(s16 param_0, f32 param_1, f32 param_2, int pa
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::damageMagnification(int param_0, int param_1) {
asm f32 daAlink_c::damageMagnification(int param_0, int param_1) {
nofralloc
#include "asm/d/a/d_a_alink/damageMagnification__9daAlink_cFii.s"
}
@@ -189,7 +189,7 @@ asm void daAlink_c::checkIcePolygonDamage(cBgS_PolyInfo* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::checkMagicArmorNoDamage() {
asm BOOL daAlink_c::checkMagicArmorNoDamage() {
nofralloc
#include "asm/d/a/d_a_alink/checkMagicArmorNoDamage__9daAlink_cFv.s"
}
@@ -228,8 +228,8 @@ void daAlink_c::damageTimerCount() {
i_offNoResetFlg1(1);
}
if (checkDkCaught2Anime() && i_checkNoResetFlg0(0x20000)) {
i_offNoResetFlg0(0x20000);
if (checkDkCaught2Anime() && i_checkNoResetFlg0(FLG0_UNK_20000)) {
i_offNoResetFlg0(FLG0_UNK_20000);
}
} else if (mDamageColorTime != 0) {
mDamageColorTime--;
@@ -273,7 +273,7 @@ asm void daAlink_c::checkLargeAttack(int param_0) const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::checkDamageAction() {
asm BOOL daAlink_c::checkDamageAction() {
nofralloc
#include "asm/d/a/d_a_alink/checkDamageAction__9daAlink_cFv.s"
}
+118 -76
View File
@@ -29,7 +29,7 @@ asm bool daAlink_c::checkSetNpcTks(cXyz* param_0, int param_1, int param_2) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::checkDemoAction() {
asm int daAlink_c::checkDemoAction() {
nofralloc
#include "asm/d/a/d_a_alink/checkDemoAction__9daAlink_cFv.s"
}
@@ -131,7 +131,7 @@ asm void daAlink_c::getDemoLookActor() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::checkFlyAtnWait() {
asm bool daAlink_c::checkFlyAtnWait() {
nofralloc
#include "asm/d/a/d_a_alink/checkFlyAtnWait__9daAlink_cFv.s"
}
@@ -263,50 +263,50 @@ asm void daAlink_c::setDemoBodyBck(dDemo_actor_c* param_0, u16 param_1) {
#pragma pop
/* 80118AD0-80118B34 113410 0064+00 1/1 0/0 0/0 .text checkFinalBattle__9daAlink_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::checkFinalBattle() {
nofralloc
#include "asm/d/a/d_a_alink/checkFinalBattle__9daAlink_cFv.s"
BOOL daAlink_c::checkFinalBattle() {
return checkStageName("D_MN09B") && dComIfGs_isSaveDunSwitch(1);
}
#pragma pop
/* 80118B34-80118BF4 113474 00C0+00 3/3 0/0 0/0 .text checkRestartDead__9daAlink_cFii */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::checkRestartDead(int param_0, int param_1) {
nofralloc
#include "asm/d/a/d_a_alink/checkRestartDead__9daAlink_cFii.s"
BOOL daAlink_c::checkRestartDead(int i_dmgAmount, int param_1) {
i_dmgAmount *= (int)damageMagnification(param_1, 1);
if (mProcID != PROC_DEAD && i_dmgAmount >= i_dComIfGs_getLife() && !checkMagicArmorNoDamage() &&
!dComIfGs_checkBottle(FAIRY)) {
i_onNoResetFlg2(FLG2_UNK_40000);
procCoDeadInit(0);
return 1;
}
return 0;
}
#pragma pop
/* 80118BF4-80118C98 113534 00A4+00 2/2 0/0 0/0 .text setDeadRideSyncPos__9daAlink_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::setDeadRideSyncPos() {
nofralloc
#include "asm/d/a/d_a_alink/setDeadRideSyncPos__9daAlink_cFv.s"
void daAlink_c::setDeadRideSyncPos() {
if (i_checkModeFlg(MODE_RIDING) && mRideAcKeep.getActor() != NULL) {
if (i_checkReinRide()) {
setSyncRidePos();
} else if (checkSpinnerRide()) {
s16 old_angle = mCollisionRot.y;
setSpinnerSyncPos();
mCollisionRot.y = old_angle;
}
}
}
#pragma pop
/* 80118C98-80118D7C 1135D8 00E4+00 5/5 0/0 0/0 .text checkDeadHP__9daAlink_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm BOOL daAlink_c::checkDeadHP() {
nofralloc
#include "asm/d/a/d_a_alink/checkDeadHP__9daAlink_cFv.s"
BOOL daAlink_c::checkDeadHP() {
return ((i_dComIfGs_getLife() == 0 && !i_checkResetFlg0(RFLG0_UNK_400)) &&
!dComIfGs_checkBottle(FAIRY)) ||
i_checkNoResetFlg2(FLG2_UNK_40000) ||
(dComIfGp_getOxygenShowFlag() && dComIfGp_getNowOxygen() == 0);
}
#pragma pop
/* 80118D7C-80118FF8 1136BC 027C+00 3/3 0/0 0/0 .text checkDeadAction__9daAlink_cFi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::checkDeadAction(int param_0) {
asm BOOL daAlink_c::checkDeadAction(int param_0) {
nofralloc
#include "asm/d/a/d_a_alink/checkDeadAction__9daAlink_cFi.s"
}
@@ -374,14 +374,10 @@ static asm void daAlink_c_getDemoIDData(dDemo_actor_c* param_0, int* param_1, in
#pragma pop
/* 801195C0-801195F8 113F00 0038+00 7/0 0/0 0/0 .text procDemoCommon__9daAlink_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::procDemoCommon() {
nofralloc
#include "asm/d/a/d_a_alink/procDemoCommon__9daAlink_cFv.s"
int daAlink_c::procDemoCommon() {
dComIfGp_evmng_cutEnd(field_0x3184);
return 1;
}
#pragma pop
/* 801195F8-801196D8 113F38 00E0+00 1/1 0/0 0/0 .text procCoToolDemoInit__9daAlink_cFv */
#pragma push
@@ -464,14 +460,18 @@ asm void daAlink_c::procCoUnequip() {
#pragma pop
/* 8011A688-8011A6FC 114FC8 0074+00 4/4 0/0 0/0 .text setGetSubBgm__9daAlink_cFi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::setGetSubBgm(int param_0) {
nofralloc
#include "asm/d/a/d_a_alink/setGetSubBgm__9daAlink_cFi.s"
void daAlink_c::setGetSubBgm(int param_0) {
u32 se_type = getSeType[param_0];
if (se_type == 3 && field_0x3010 == 0) {
se_type = 7;
}
if (se_type != 8) {
mDoAud_subBgmStart(bgmLabel[se_type]);
dComIfGp_setMesgBgmOn();
}
}
#pragma pop
/* 8011A6FC-8011A798 11503C 009C+00 1/0 0/0 0/0 .text checkTreasureRupeeReturn__9daAlink_cCFi */
// register issues. probably wrong order of operations
@@ -919,14 +919,14 @@ asm void daAlink_c::procCoTwGateInit() {
#pragma pop
/* 8011D7D4-8011D82C 118114 0058+00 1/0 0/0 0/0 .text procCoTwGate__9daAlink_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::procCoTwGate() {
nofralloc
#include "asm/d/a/d_a_alink/procCoTwGate__9daAlink_cFv.s"
int daAlink_c::procCoTwGate() {
if (mUnderFrameCtrl[0].checkAnmEnd()) {
dComIfGp_evmng_cutEnd(field_0x3184);
}
field_0x2f99 = 7;
return 1;
}
#pragma pop
/* 8011D82C-8011D8F8 11816C 00CC+00 1/0 0/0 0/0 .text procWolfSnowEscapeInit__9daAlink_cFv */
#pragma push
@@ -1102,10 +1102,10 @@ 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);
i_onEndResetFlg1(ERFLG1_GANON_FINISH);
current.pos = field_0x37c8;
if (mFrameCtrl1[0].checkAnmEnd()) {
setSingleAnimeBaseMorf(ANM_GANON_FINISH, lit_6041);
if (mUnderFrameCtrl[0].checkAnmEnd()) {
setSingleAnimeBaseMorf(ANM_GANON_FINISH_WAIT, lit_6041);
}
return true;
}
@@ -1122,14 +1122,13 @@ asm void daAlink_c::procCutFastReadyInit() {
#pragma pop
/* 8011EB8C-8011EBDC 1194CC 0050+00 1/0 0/0 0/0 .text procCutFastReady__9daAlink_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::procCutFastReady() {
nofralloc
#include "asm/d/a/d_a_alink/procCutFastReady__9daAlink_cFv.s"
int daAlink_c::procCutFastReady() {
if (mUpperFrameCtrl[2].checkAnmEnd()) {
dComIfGp_evmng_cutEnd(field_0x3184);
}
return 1;
}
#pragma pop
/* 8011EBDC-8011EC60 11951C 0084+00 1/0 0/0 0/0 .text procMasterSwordStickInit__9daAlink_cFv */
int daAlink_c::procMasterSwordStickInit() {
@@ -1137,7 +1136,7 @@ int daAlink_c::procMasterSwordStickInit() {
return 0;
}
setSingleAnimeBase(ANM_MASTER_SWORD_STICK_INIT);
setSingleAnimeBase(ANM_DEMO_MASTER_SWORD_STICK);
voiceStart(Z2SE_AL_V_MSTR_SW_STICK);
mNormalSpeed = FLOAT_LABEL(lit_6108);
current.angle.y = mCollisionRot.y;
@@ -1149,13 +1148,13 @@ int daAlink_c::procMasterSwordStickInit() {
/* 8011EC60-8011ED18 1195A0 00B8+00 1/0 0/0 0/0 .text procMasterSwordStick__9daAlink_cFv
*/
int daAlink_c::procMasterSwordStick() {
daPy_frameCtrl_c* fCtrl = &mFrameCtrl1[0];
daPy_frameCtrl_c* fCtrl = &mUnderFrameCtrl[0];
if (mCommonCounter != 0) {
dComIfGp_evmng_cutEnd(field_0x3184);
} else if (fCtrl->checkAnmEnd()) {
mCommonCounter = 1;
setSingleAnimeBaseMorf(ANM_MASTER_SWORD_STICK, lit_6041);
setSingleAnimeBaseMorf(ANM_DEMO_MASTER_SWORD_WAIT, lit_6041);
dComIfGp_evmng_cutEnd(field_0x3184);
} else if (fCtrl->getFrame() >= lit_14621) {
field_0x2f93 = 5;
@@ -1170,7 +1169,7 @@ int daAlink_c::procMasterSwordPullInit() {
return 0;
}
setSingleAnimeBase(ANM_MASTER_SWORD_PULL_INIT);
setSingleAnimeBase(ANM_DEMO_MASTER_SWORD_PULL);
voiceStart(Z2SE_AL_V_MSTR_SW_PULLOUT);
field_0x3010 = 0;
@@ -1202,9 +1201,11 @@ int daAlink_c::procDungeonWarpReadyInit() {
u32 id;
if (checkItemSetButton(DUNGEON_EXIT) != 2) {
id = fopAcM_create(PROC_OBJ_TKS, 0, &current.pos, 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, &current.pos, fopAcM_GetRoomNo(this), &mCollisionRot, NULL, -1);
id = fopAcM_create(PROC_NPC_TKC, 2, &current.pos, fopAcM_GetRoomNo(this), &mCollisionRot,
NULL, -1);
}
if (id == -1) {
@@ -1213,7 +1214,7 @@ int daAlink_c::procDungeonWarpReadyInit() {
mDemo.i_setSpecialDemoType();
commonProcInit(PROC_DUNGEON_WARP_READY);
setSingleAnimeBase(ANM_DUNGEON_WARP_READY_INIT);
setSingleAnimeBase(ANM_TRADE_ITEM_PULL_OUT);
mNormalSpeed = FLOAT_LABEL(lit_6108);
current.angle.y = mCollisionRot.y;
field_0x32cc = id;
@@ -1290,7 +1291,8 @@ int daAlink_c::procDungeonWarp() {
if (mScale.x < 0.01f) {
i_onNoResetFlg0(FLG0_UNK_8000000);
if (checkItemGet(DUNGEON_EXIT, 1)) {
int escape = dStage_stagInfo_GetEscapeWarp(i_dComIfGp_getStage()->getStagInfo());
int escape =
dStage_stagInfo_GetEscapeWarp(i_dComIfGp_getStage()->getStagInfo());
dStage_changeScene(escape, 0.0f, 12, -1, mCollisionRot.y, -1);
dMeter2Info_warpOutProc();
} else {
@@ -1345,16 +1347,55 @@ asm void daAlink_c::procDungeonWarpSceneStart() {
#pragma pop
/* 8011F5D4-8011F658 119F14 0084+00 2/2 0/0 0/0 .text daAlink_searchPortal__FP10fopAc_ac_cPv */
// matches with literals
#ifdef NONMATCHING
static fopAc_ac_c* daAlink_searchPortal(fopAc_ac_c* i_actor, void* i_data) {
if (fopAcM_GetName(i_actor) == PROC_KYTAG04) {
cXyz* pos = (cXyz*)i_data;
if (i_actor->current.pos.abs2XZ(*pos) < 1.0f) {
return i_actor;
}
}
return NULL;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void* daAlink_searchPortal(fopAc_ac_c* param_0, void* param_1) {
static asm fopAc_ac_c* daAlink_searchPortal(fopAc_ac_c* param_0, void* param_1) {
nofralloc
#include "asm/d/a/d_a_alink/daAlink_searchPortal__FP10fopAc_ac_cPv.s"
}
#pragma pop
#endif
/* 8011F658-8011F7D8 119F98 0180+00 1/1 0/0 0/0 .text checkAcceptWarp__9daAlink_cFv */
// r3/r4 swap loading midna ptr
#ifdef NONMATCHING
bool daAlink_c::checkAcceptWarp() {
cM3dGPla plane;
if (mLinkAcch.ChkGroundHit() && !i_checkModeFlg(MODE_PLAYER_FLY) &&
!i_checkNoResetFlg0(FLG0_UNDERWATER)) {
if (!getSlidePolygon(&plane) && !checkForestOldCentury()) {
if (i_checkMidnaRide() || getMidnaActor()->checkPortalObjRide()) {
if ((checkField() || checkCastleTown()) && !checkStageName("R_SP161")) {
if ((i_checkWolf() &&
(i_checkModeFlg(MODE_UNK_1000) || i_dComIfGp_checkPlayerStatus0(0, 0x10))) ||
(!i_checkWolf() &&
(checkEventRun() || getMidnaActor()->checkMetamorphoseEnable()) &&
(i_checkModeFlg(4) || i_dComIfGp_checkPlayerStatus0(0, 0x10)))) {
return true;
}
}
}
}
}
return false;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1363,6 +1404,7 @@ asm bool daAlink_c::checkAcceptWarp() {
#include "asm/d/a/d_a_alink/checkAcceptWarp__9daAlink_cFv.s"
}
#pragma pop
#endif
/* 8011F7D8-8011F8B8 11A118 00E0+00 2/2 0/0 0/0 .text dungeonReturnWarp__9daAlink_cFv */
void daAlink_c::dungeonReturnWarp() {
@@ -1405,9 +1447,9 @@ void daAlink_c::skipPortalObjWarp() {
/* 8011F9EC-8011FBC0 11A32C 01D4+00 1/1 0/0 0/0 .text checkWarpStart__9daAlink_cFv */
void daAlink_c::checkWarpStart() {
if (dMeter2Info_getWarpStatus() != 0) {
if (dMeter2Info_getWarpStatus() == 3 || dComIfGp_event_compulsory(this, 0, 0xFFFF)) {
i_onNoResetFlg0(0x4000);
if (dMeter2Info_getWarpStatus() == 3) {
if (dMeter2Info_getWarpStatus() == WARP_DECIDED || dComIfGp_event_compulsory(this, 0, 0xFFFF)) {
i_onNoResetFlg0(FLG0_UNK_4000);
if (dMeter2Info_getWarpStatus() == WARP_DECIDED) {
const char* portal;
if (!i_checkMidnaRide()) {
if (dComIfGp_TargetWarpPt_get() == 3) {
@@ -1434,8 +1476,8 @@ void daAlink_c::checkWarpStart() {
mDemo.i_setSpecialDemoType();
if (dMeter2Info_getWarpStatus() == 1) {
stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo();
u32 tmp = dStage_stagInfo_GetEscapeWarp(stag_info);
dStage_changeScene(tmp, FLOAT_LABEL(lit_6108), 0, -1, mCollisionRot.y, -1);
u32 exitID = dStage_stagInfo_GetEscapeWarp(stag_info);
dStage_changeScene(exitID, FLOAT_LABEL(lit_6108), 0, -1, mCollisionRot.y, -1);
} else {
dungeonReturnWarp();
}
+6 -6
View File
@@ -193,7 +193,7 @@ asm void daAlink_c::setGrabUpperAnime(f32 param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::checkGrabRooster() {
asm BOOL daAlink_c::checkGrabRooster() {
nofralloc
#include "asm/d/a/d_a_alink/checkGrabRooster__9daAlink_cFv.s"
}
@@ -558,7 +558,7 @@ asm void daAlink_c::procInsectCatchInit() {
/* 800E71D4-800E7254 0E1B14 0080+00 1/0 0/0 0/0 .text procInsectCatch__9daAlink_cFv */
bool daAlink_c::procInsectCatch() {
daPy_frameCtrl_c* tmp = &mFrameCtrl1[0];
daPy_frameCtrl_c* tmp = &mUnderFrameCtrl[0];
if (tmp->checkAnmEnd()) {
checkNextAction(0);
@@ -652,7 +652,7 @@ asm s16 daAlink_c::getChainStickAngleY(s16 param_0) const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::checkChainEmphasys() {
asm u8 daAlink_c::checkChainEmphasys() {
nofralloc
#include "asm/d/a/d_a_alink/checkChainEmphasys__9daAlink_cFv.s"
}
@@ -685,8 +685,8 @@ bool daAlink_c::checkChainBlockPushPull() {
fopAc_ac_c* actor = field_0x2844.getActor();
if (actor != NULL) {
s16 name = fopAcM_GetName(actor);
// actor is Cblock || chainSw || Cwall
if (name == 0x7E || name == 0x16F || name == 0x7F) {
if (name == PROC_Obj_ChainBlock || name == PROC_Obj_SwChain ||
name == PROC_Obj_ChainWall) {
return true;
}
}
@@ -750,7 +750,7 @@ asm void daAlink_c::setWallGrabStatus(u8 param_0, u8 param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::getWallGrabStatus() {
asm int daAlink_c::getWallGrabStatus() {
nofralloc
#include "asm/d/a/d_a_alink/getWallGrabStatus__9daAlink_cFv.s"
}
+1 -1
View File
@@ -23,7 +23,7 @@ asm BOOL daAlink_c::checkSpecialNpc(fopAc_ac_c* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::checkShieldAttackEmphasys() {
asm bool daAlink_c::checkShieldAttackEmphasys() {
nofralloc
#include "asm/d/a/d_a_alink/checkShieldAttackEmphasys__9daAlink_cFv.s"
}
+1 -1
View File
@@ -271,7 +271,7 @@ bool daAlink_c::cancelHookshotMove() {
if (mFastShotTime == 0 && mHookshotMode == 0) {
if (checkHookshotAnime() &&
(mTargetedActor == NULL && !i_checkAttentionLock() || !itemButton())) {
resetUpperAnime(UPPER_NOW, -1.0f);
resetUpperAnime(UPPER_2, -1.0f);
return 1;
}
}
+1 -1
View File
@@ -120,7 +120,7 @@ asm bool daAlink_c::getKandelaarFlamePos() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::checkKandelaarEquipAnime() const {
asm BOOL daAlink_c::checkKandelaarEquipAnime() const {
nofralloc
#include "asm/d/a/d_a_alink/checkKandelaarEquipAnime__9daAlink_cCFv.s"
}
File diff suppressed because it is too large Load Diff
+22 -22
View File
@@ -133,7 +133,7 @@ int daAlink_c::procSpinnerReadyInit() {
commonProcInit(PROC_SPINNER_READY);
mRideAcKeep.setData(spinner);
setSingleAnime(ANM_BOARD_SPINNER, daAlinkHIO_smallJump_c0::m.mSmallJumpAnm.mRate, 6.0f,
setSingleAnime(ANM_VJUMP_START, daAlinkHIO_smallJump_c0::m.mSmallJumpAnm.mRate, 6.0f,
daAlinkHIO_smallJump_c0::m.mSmallJumpAnm.mEndF,
daAlinkHIO_smallJump_c0::m.mSmallJumpAnm.mInterpolation);
mNormalSpeed = 0.0f;
@@ -205,7 +205,7 @@ int daAlink_c::procSpinnerWaitInit() {
mRideStatus = 5;
setBgCheckParam();
setSingleAnimeBaseSpeed(ANM_SPINNER_RIDE, daAlinkHIO_board_c0::m.mSitAnmSpeed, 4.0f);
setSingleAnimeBaseSpeed(ANM_RIDE_CROUCH, daAlinkHIO_board_c0::m.mSitAnmSpeed, 4.0f);
mSpeed.y = 0.0f;
setSpecialGravity(0.0f, mMaxFallSpeed, 0);
mNormalSpeed = 0.0f;
@@ -213,7 +213,7 @@ int daAlink_c::procSpinnerWaitInit() {
field_0x300e = mCollisionRot.y;
field_0x3010 = 0;
field_0x3198 = ANM_SPINNER_RIDE;
field_0x3198 = ANM_RIDE_CROUCH;
field_0x33b0 = 70.0f;
field_0x3012 = 0;
field_0x37a4 = mRideAcKeep.getActor()->current.pos;
@@ -277,7 +277,7 @@ int daAlink_c::procSpinnerWait() {
return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation);
}
daPy_frameCtrl_c* frameCtrl = mFrameCtrl1;
daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl;
dMeter2Info_onDirectUseItem(itemSetBtn);
if (spinner->checkPathMoveNow() == NULL) {
@@ -295,10 +295,10 @@ int daAlink_c::procSpinnerWait() {
field_0x3012 = 1;
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,
if (field_0x3198 != ANM_RIDE_KICK && field_0x2060->getOldFrameRate() < 0.01f) {
setSingleAnimeBaseSpeed(ANM_RIDE_CROUCH, daAlinkHIO_board_c0::m.mSitAnmSpeed,
daAlinkHIO_board_c0::m.mFastPushInterpolation);
field_0x3198 = ANM_SPINNER_PUSH;
field_0x3198 = ANM_RIDE_KICK;
fopAcM_seStartCurrent(spinner, Z2SE_OBJ_SPNR_SW_PUSH, 0);
}
} else if (spinner->checkSpinnerTagInto()) {
@@ -308,35 +308,35 @@ int daAlink_c::procSpinnerWait() {
setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_DEFAULT);
}
if ((field_0x3198 == ANM_SPINNER_PUSH && field_0x2060->getOldFrameRate() < 0.01f) ||
(field_0x3198 != ANM_SPINNER_PUSH && field_0x3198 != ANM_SPINNER_STAND)) {
setSingleAnimeBaseSpeed(ANM_SPINNER_STAND, daAlinkHIO_board_c0::m.mStandAnmSpeed,
if ((field_0x3198 == ANM_RIDE_KICK && field_0x2060->getOldFrameRate() < 0.01f) ||
(field_0x3198 != ANM_RIDE_KICK && field_0x3198 != ANM_RIDE_WAIT)) {
setSingleAnimeBaseSpeed(ANM_RIDE_WAIT, daAlinkHIO_board_c0::m.mStandAnmSpeed,
daAlinkHIO_board_c0::m.mStandInterpolation);
field_0x3198 = ANM_SPINNER_STAND;
field_0x3198 = ANM_RIDE_WAIT;
}
} else if (spinner->getButtonJump() && field_0x3198 != ANM_SPINNER_ATTACK) {
field_0x3198 = ANM_SPINNER_ATTACK;
setSingleAnime(ANM_SPINNER_ATTACK, 0.0f, daAlinkHIO_board_c0::m.mAirborneAnm.mStart,
} else if (spinner->getButtonJump() && field_0x3198 != ANM_RIDE_JUMP) {
field_0x3198 = ANM_RIDE_JUMP;
setSingleAnime(ANM_RIDE_JUMP, 0.0f, daAlinkHIO_board_c0::m.mAirborneAnm.mStart,
daAlinkHIO_board_c0::m.mAirborneAnm.mEndF,
daAlinkHIO_board_c0::m.mAirborneAnm.mInterpolation);
field_0x3010 = 0;
} else if (field_0x3198 == ANM_SPINNER_ATTACK) {
} else if (field_0x3198 == ANM_RIDE_JUMP) {
if (!spinner->getJumpFlg()) {
setSingleAnime(ANM_SPINNER_ATTACK_LAND, daAlinkHIO_board_c0::m.mLandAnm.mRate,
setSingleAnime(ANM_RIDE_JUMP_LAND, daAlinkHIO_board_c0::m.mLandAnm.mRate,
daAlinkHIO_board_c0::m.mLandAnm.mStart, 16,
daAlinkHIO_board_c0::m.mLandAnm.mInterpolation);
field_0x3198 = ANM_SPINNER_ATTACK_LAND;
field_0x3198 = ANM_RIDE_JUMP_LAND;
} else if (field_0x3010 == 0 && field_0x2060->getOldFrameRate() < 0.01f) {
setSingleAnime(ANM_SPINNER_ATTACK, daAlinkHIO_board_c0::m.mAirborneAnm.mRate,
setSingleAnime(ANM_RIDE_JUMP, daAlinkHIO_board_c0::m.mAirborneAnm.mRate,
daAlinkHIO_board_c0::m.mAirborneAnm.mStart,
daAlinkHIO_board_c0::m.mAirborneAnm.mEndF, -1.0f);
field_0x3010 = 1;
}
} else if ((field_0x3198 == ANM_SPINNER_ATTACK_LAND && frameCtrl->checkAnmEnd()) ||
(field_0x3198 != ANM_SPINNER_ATTACK_LAND && field_0x3198 != ANM_SPINNER_RIDE)) {
setSingleAnimeBaseSpeed(ANM_SPINNER_RIDE, daAlinkHIO_board_c0::m.mSitAnmSpeed,
} else if ((field_0x3198 == ANM_RIDE_JUMP_LAND && frameCtrl->checkAnmEnd()) ||
(field_0x3198 != ANM_RIDE_JUMP_LAND && field_0x3198 != ANM_RIDE_CROUCH)) {
setSingleAnimeBaseSpeed(ANM_RIDE_CROUCH, daAlinkHIO_board_c0::m.mSitAnmSpeed,
daAlinkHIO_board_c0::m.mSitInterpolation);
field_0x3198 = ANM_SPINNER_RIDE;
field_0x3198 = ANM_RIDE_CROUCH;
}
}
+2 -2
View File
@@ -33,7 +33,7 @@ asm void daAlink_c::swimDeleteItem() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::getZoraSwim() const {
asm bool daAlink_c::getZoraSwim() const {
nofralloc
#include "asm/d/a/d_a_alink/getZoraSwim__9daAlink_cCFv.s"
}
@@ -85,7 +85,7 @@ asm void daAlink_c::offOxygenTimer() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::checkPossibleWaterInMode() const {
asm bool daAlink_c::checkPossibleWaterInMode() const {
nofralloc
#include "asm/d/a/d_a_alink/checkPossibleWaterInMode__9daAlink_cCFv.s"
}
+3 -3
View File
@@ -76,7 +76,7 @@ void daAlink_c::statusWindowDraw() {
/* 80140AC8-80140B88 13B408 00C0+00 0/0 1/1 0/0 .text resetStatusWindow__9daAlink_cFv */
void daAlink_c::resetStatusWindow() {
i_offNoResetFlg2(0x400000);
i_offNoResetFlg2(FLG2_STATUS_WINDOW_DRAW);
if (i_checkWolf()) {
changeModelDataDirectWolf(1);
@@ -86,7 +86,7 @@ void daAlink_c::resetStatusWindow() {
setMatrix();
mpLinkModel->calc();
i_onNoResetFlg2(0x400000);
i_onNoResetFlg2(FLG2_STATUS_WINDOW_DRAW);
setSelectEquipItem(0);
if (i_checkWolf()) {
@@ -95,6 +95,6 @@ void daAlink_c::resetStatusWindow() {
setItemMatrix(0);
}
i_offNoResetFlg2(0x400000);
i_offNoResetFlg2(FLG2_STATUS_WINDOW_DRAW);
m_sWindowBck = NULL;
}
+2 -2
View File
@@ -62,7 +62,7 @@ int daAlink_c::procGrassWhistleGetInit() {
current.angle.y = mCollisionRot.y;
field_0x2f98 = 4;
setSingleAnimeParam(ANM_GRASS_WHISTLE_GRAB, &daAlinkHIO_bottle_c0::m.field_0x50);
setSingleAnimeParam(ANM_BOTTLE_SWING_DOWN, &daAlinkHIO_bottle_c0::m.field_0x50);
field_0x2f92 = 0xFE;
field_0x280c.setData(field_0x27f4);
@@ -91,7 +91,7 @@ asm int daAlink_c::procGrassWhistleGetInit() {
/* 801119D8-80111A9C 10C318 00C4+00 1/0 0/0 0/0 .text procGrassWhistleGet__9daAlink_cFv
*/
int daAlink_c::procGrassWhistleGet() {
daPy_frameCtrl_c* frameCtrl = mFrameCtrl1;
daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl;
if (frameCtrl->checkAnmEnd()) {
procGrassWhistleWaitInit(mCommonCounter, field_0x300e, field_0x3010, field_0x3012, &field_0x37c8);
+2 -2
View File
@@ -138,8 +138,8 @@ asm void daAlink_c::checkWolfAtnWait() {
/* 8012880C-80128844 12314C 0038+00 27/27 0/0 0/0 .text
* checkUnderMove0BckNoArcWolf__9daAlink_cCFQ29daAlink_c12daAlink_WANM */
BOOL daAlink_c::checkUnderMove0BckNoArcWolf(daAlink_c::daAlink_WANM anm_id) const {
return mUnderAnime[0].checkNoSetArcNo() &&
m_wlAnmDataTable[anm_id].field_0x0 == mUnderAnime[0].getIdx();
return mUnderAnmHeap[0].checkNoSetArcNo() &&
m_wlAnmDataTable[anm_id].field_0x0 == mUnderAnmHeap[0].getIdx();
}
/* 80128844-80128F0C 123184 06C8+00 11/11 0/0 0/0 .text setBlendWolfMoveAnime__9daAlink_cFf */
+10 -9
View File
@@ -12,13 +12,13 @@ BOOL e_wb_class::checkWait() {
}
void e_wb_class::setPlayerRideNow() {
field_0x690 = 0x67;
mActionID = ACT_PL_RIDE_NOW;
field_0x5b4 = 0;
field_0x6be |= 3;
}
void e_wb_class::setPlayerRide() {
field_0x690 = 0x65;
mActionID = ACT_PL_RIDE;
field_0x5b4 = 0;
field_0x6be |= 3;
@@ -26,28 +26,29 @@ void e_wb_class::setPlayerRide() {
}
void e_wb_class::getOff() {
if (!checkDownDamage() || field_0x690 == 0x67) {
field_0x690 = 0;
if (!checkDownDamage() || mActionID == ACT_PL_RIDE_NOW) {
mActionID = 0;
} else {
field_0x692 = 0;
}
field_0x5b4 = 0;
field_0x6be &= 0xfffc;
field_0x6be &= ~3;
mZ2Ride.setLinkRiding(false);
}
BOOL e_wb_class::checkDownDamage() {
return field_0x690 != 0x65 && field_0x690 != 0x66 && field_0x690 != 0x15;
return mActionID != ACT_PL_RIDE && mActionID != 0x66 && mActionID != ACT_S_DAMAGE;
}
u8 e_wb_class::checkNormalRideMode() const {
return field_0x690 != 0x66 || field_0x5b4 < 1;
return mActionID != 0x66 || field_0x5b4 < 1;
}
void e_wb_class::setRunRideMode() {
if (field_0x690 == 0x65) {
if (mActionID == ACT_PL_RIDE) {
field_0x5b4 = 0;
field_0x690 = 0x15;
mActionID = ACT_S_DAMAGE;
field_0x692 = 0x65;
}
}
+7 -9
View File
@@ -99,14 +99,14 @@ int daItemBase_c::CreateItemHeap(char const* arcName, s16 bmdName, s16 btkName,
if (brkName > 0) {
J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(arcName, brkName);
s8 tevFrm = getTevFrm();
int tmp = 1;
int anmPlay = 1;
if (tevFrm != -1) {
tmp = 0;
anmPlay = 0;
}
mpBrkAnm = new mDoExt_brkAnm();
if (mpBrkAnm == NULL || !mpBrkAnm->init(modelData, pbrk, tmp, 2, 1.0f, 0, -1)) {
if (mpBrkAnm == NULL || !mpBrkAnm->init(modelData, pbrk, anmPlay, 2, 1.0f, 0, -1)) {
return 0;
}
}
@@ -176,8 +176,7 @@ void daItemBase_c::setShadow() {
if (!chkFlag(0x10)) {
if (getShadowSize() != 0.0f) {
dComIfGd_setSimpleShadow(&current.pos, mAcch.GetGroundH(), scale,
mAcch.m_gnd, 0, 1.0f,
dComIfGd_setSimpleShadow(&current.pos, mAcch.GetGroundH(), scale, mAcch.m_gnd, 0, 1.0f,
dDlst_shadowControl_c::getSimpleTex());
}
} else {
@@ -186,10 +185,9 @@ void daItemBase_c::setShadow() {
shadowSize = 150.0f;
}
field_0x91c =
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());
field_0x91c = 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());
}
}
+1613 -708
View File
File diff suppressed because it is too large Load Diff
+70 -108
View File
@@ -4,110 +4,25 @@
//
#include "d/a/d_a_obj.h"
#include "d/com/d_com_inf_game.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct fopAc_ac_c {};
struct daPy_py_c {
/* 8015F398 */ void checkMasterSwordEquip();
};
struct dCcD_GObjInf {
/* 800844F8 */ void GetTgHitObj();
/* 8008457C */ void GetTgHitObjSe();
};
struct Quaternion {};
struct Vec {};
struct cXyz {
/* 80009184 */ ~cXyz();
/* 80266B34 */ void operator-(Vec const&) const;
/* 80266B84 */ void operator*(f32) const;
/* 80266C18 */ void operator/(f32) const;
/* 80266CBC */ void outprod(Vec const&) const;
static f32 Zero[3];
static u8 BaseY[12];
};
struct daObj {
/* 80037038 */ void eff_break_tsubo(fopAc_ac_c*, cXyz, int);
/* 80037180 */ void make_eff_break_kotubo(fopAc_ac_c*);
/* 80037210 */ void make_eff_break_kotubo2(fopAc_ac_c*);
/* 800372A0 */ void make_eff_break_gm_kotubo(fopAc_ac_c*);
/* 80037330 */ void make_eff_break_gm_ootubo(fopAc_ac_c*);
/* 800373C0 */ void posMoveF_stream(fopAc_ac_c*, cXyz const*, cXyz const*, f32, f32);
/* 80037620 */ void posMoveF_grade(fopAc_ac_c*, cXyz const*, cXyz const*, f32, f32, cXyz const*,
f32, f32, cXyz const*);
/* 80037788 */ void quat_rotBaseY(Quaternion*, cXyz const&);
/* 80037900 */ void HitSeStart(cXyz const*, int, dCcD_GObjInf const*, u32);
};
struct dRes_info_c {};
struct dRes_control_c {
/* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int);
};
struct dKy_tevstr_c {};
struct J3DModelData {};
struct JPABaseEmitter {};
struct dPa_modelEcallBack {
/* 8004AC00 */ void setModel(JPABaseEmitter*, J3DModelData*, dKy_tevstr_c const&, u8, void*, u8,
u8);
static u8 mEcallback[4];
};
struct dPa_levelEcallBack {};
struct csXyz {};
struct _GXColor {};
struct dPa_control_c {
/* 8004CA90 */ void set(u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, cXyz const*,
u8, dPa_levelEcallBack*, s8, _GXColor const*, _GXColor const*,
cXyz const*, f32);
static u8 mTsubo[64];
};
struct dCcD_GAtTgCoCommonBase {
/* 80083688 */ void GetAc();
};
struct cCcD_SphAttr {
/* 80037A54 */ void GetCoCP();
};
struct cCcD_CylAttr {
/* 80037A4C */ void GetCoCP();
};
struct JAISoundID {};
struct Z2SeMgr {
/* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
};
struct Z2AudioMgr {
static u8 mAudioMgrPtr[4 + 4 /* padding */];
};
struct JMath {
static u8 sincosTable_[65536];
};
namespace daObj {
/* 80037038 */ void eff_break_tsubo(fopAc_ac_c*, cXyz, int);
/* 80037180 */ void make_eff_break_kotubo(fopAc_ac_c*);
/* 80037210 */ void make_eff_break_kotubo2(fopAc_ac_c*);
/* 800372A0 */ void make_eff_break_gm_kotubo(fopAc_ac_c*);
/* 80037330 */ void make_eff_break_gm_ootubo(fopAc_ac_c*);
/* 800373C0 */ void posMoveF_stream(fopAc_ac_c*, cXyz const*, cXyz const*, f32, f32);
/* 80037620 */ void posMoveF_grade(fopAc_ac_c*, cXyz const*, cXyz const*, f32, f32, cXyz const*,
f32, f32, cXyz const*);
/* 80037788 */ void quat_rotBaseY(Quaternion*, cXyz const&);
/* 80037900 */ void HitSeStart(cXyz const*, int, dCcD_GObjInf const*, u32);
}; // namespace daObj
//
// Forward References:
@@ -151,12 +66,6 @@ extern "C" void outprod__4cXyzCFRC3Vec();
extern "C" void cM_atan2s__Fff();
extern "C" void cM3d_CrawVec__FRC3VecRC3VecP3Vec();
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void PSVECAdd();
extern "C" void PSVECSubtract();
extern "C" void PSVECScale();
extern "C" void PSVECSquareMag();
extern "C" void PSVECDotProduct();
extern "C" void C_QUATRotAxisRad();
extern "C" void __register_global_object();
extern "C" void _savegpr_25();
extern "C" void _savegpr_26();
@@ -166,8 +75,6 @@ extern "C" void _restgpr_25();
extern "C" void _restgpr_26();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" void acos();
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" u8 mTsubo__13dPa_control_c[64];
extern "C" f32 Zero__4cXyz[3];
extern "C" u8 BaseY__4cXyz[12];
@@ -194,6 +101,22 @@ SECTION_SDATA2 static f32 lit_3671 = 1.0f;
/* 80037038-80037180 031978 0148+00 4/4 0/0 0/0 .text eff_break_tsubo__5daObjFP10fopAc_ac_c4cXyzi
*/
#ifdef NONMATCHING
void daObj::eff_break_tsubo(fopAc_ac_c* param_0, cXyz param_1, int param_2) {
J3DModelData* tubo_bmd = (J3DModelData*)dComIfG_getObjectRes("Always", 0x20);
J3DAnmTexPattern* tubo_btp = (J3DAnmTexPattern*)dComIfG_getObjectRes("Always", 0x42);
JPABaseEmitter* emitter = (JPABaseEmitter*)dComIfGp_particle_set(
0x15C, &param_0->current.pos, NULL, NULL, 0xFF, dPa_modelEcallBack::getEcallback(),
fopAcM_GetRoomNo(param_0), NULL, NULL, &param_1);
dPa_modelEcallBack::setModel(emitter, tubo_bmd, param_0->mTevStr, 3, tubo_btp, 0, param_2);
dComIfGp_particle_set(0x15D, &param_0->current.pos, NULL, NULL, 0xFF,
dPa_control_c::getTsuboSelectTexEcallBack(param_2),
fopAcM_GetRoomNo(param_0), NULL, NULL, &param_1);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -202,6 +125,7 @@ asm void daObj::eff_break_tsubo(fopAc_ac_c* param_0, cXyz param_1, int param_2)
#include "asm/d/a/d_a_obj/eff_break_tsubo__5daObjFP10fopAc_ac_c4cXyzi.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 804245E8-804245F4 051308 000C+00 1/1 0/0 0/0 .bss @3677 */
@@ -212,6 +136,14 @@ static f32 scale_3676[3];
/* 80037180-80037210 031AC0 0090+00 0/0 0/0 2/2 .text make_eff_break_kotubo__5daObjFP10fopAc_ac_c
*/
// matches with literals
#ifdef NONMATCHING
void daObj::make_eff_break_kotubo(fopAc_ac_c* param_0) {
static cXyz scale(1.0f, 1.0f, 1.0f);
eff_break_tsubo(param_0, scale, 0);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -220,6 +152,7 @@ asm void daObj::make_eff_break_kotubo(fopAc_ac_c* param_0) {
#include "asm/d/a/d_a_obj/make_eff_break_kotubo__5daObjFP10fopAc_ac_c.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80424600-8042460C 051320 000C+00 1/1 0/0 0/0 .bss @3692 */
@@ -230,6 +163,14 @@ static f32 scale_3691[3];
/* 80037210-800372A0 031B50 0090+00 0/0 0/0 2/2 .text make_eff_break_kotubo2__5daObjFP10fopAc_ac_c
*/
// matches with literals
#ifdef NONMATCHING
void daObj::make_eff_break_kotubo2(fopAc_ac_c* param_0) {
static cXyz scale(1.0f, 1.0f, 1.0f);
eff_break_tsubo(param_0, scale, 1);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -238,6 +179,7 @@ asm void daObj::make_eff_break_kotubo2(fopAc_ac_c* param_0) {
#include "asm/d/a/d_a_obj/make_eff_break_kotubo2__5daObjFP10fopAc_ac_c.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80424618-80424624 051338 000C+00 1/1 0/0 0/0 .bss @3719 */
@@ -248,6 +190,14 @@ static f32 scale_3718[3];
/* 800372A0-80037330 031BE0 0090+00 0/0 0/0 1/1 .text
* make_eff_break_gm_kotubo__5daObjFP10fopAc_ac_c */
// matches with literals
#ifdef NONMATCHING
void daObj::make_eff_break_gm_kotubo(fopAc_ac_c* param_0) {
static cXyz scale(1.0f, 1.0f, 1.0f);
eff_break_tsubo(param_0, scale, 3);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -256,6 +206,7 @@ asm void daObj::make_eff_break_gm_kotubo(fopAc_ac_c* param_0) {
#include "asm/d/a/d_a_obj/make_eff_break_gm_kotubo__5daObjFP10fopAc_ac_c.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80424630-8042463C 051350 000C+00 1/1 0/0 0/0 .bss @3732 */
@@ -269,6 +220,14 @@ SECTION_SDATA2 static f32 lit_3714 = 2.0f;
/* 80037330-800373C0 031C70 0090+00 0/0 0/0 1/1 .text
* make_eff_break_gm_ootubo__5daObjFP10fopAc_ac_c */
// matches with literals
#ifdef NONMATCHING
void daObj::make_eff_break_gm_ootubo(fopAc_ac_c* param_0) {
static cXyz scale(2.0f, 2.0f, 2.0f);
eff_break_tsubo(param_0, scale, 4);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -277,6 +236,7 @@ asm void daObj::make_eff_break_gm_ootubo(fopAc_ac_c* param_0) {
#include "asm/d/a/d_a_obj/make_eff_break_gm_ootubo__5daObjFP10fopAc_ac_c.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80451DA0-80451DA4 0003A0 0004+00 4/4 0/0 0/0 .sdata2 @3801 */
@@ -383,7 +343,8 @@ asm void daObj::HitSeStart(cXyz const* param_0, int param_1, dCcD_GObjInf const*
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void cCcD_CylAttr::GetCoCP() {
// asm void cCcD_CylAttr::GetCoCP() {
extern "C" asm void GetCoCP__12cCcD_CylAttrFv() {
nofralloc
#include "asm/d/a/d_a_obj/GetCoCP__12cCcD_CylAttrFv.s"
}
@@ -393,7 +354,8 @@ asm void cCcD_CylAttr::GetCoCP() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void cCcD_SphAttr::GetCoCP() {
// asm void cCcD_SphAttr::GetCoCP() {
extern "C" asm void GetCoCP__12cCcD_SphAttrFv() {
nofralloc
#include "asm/d/a/d_a_obj/GetCoCP__12cCcD_SphAttrFv.s"
}
+195 -176
View File
@@ -12,7 +12,9 @@
#include "dolphin/types.h"
#include "f_op/f_op_actor_iter.h"
#include "f_op/f_op_actor_mng.h"
#include "m_Do/m_Do_lib.h"
#include "rel/d/a/d_a_boomerang/d_a_boomerang.h"
#include "rel/d/a/d_a_spinner/d_a_spinner.h"
//
// Forward References:
@@ -77,6 +79,7 @@ extern "C" void setMidnaFaceNum__9daPy_py_cFi();
extern "C" void daPy_addCalcShort__FPsssss();
extern "C" extern void* __vt__18daPy_sightPacket_c[4 + 1 /* padding */];
extern "C" u8 m_midnaActor__9daPy_py_c[4];
extern "C" u8 m_dropAngleY__20daPy_boomerangMove_c[4];
//
// External References:
@@ -143,10 +146,12 @@ bool daPy_frameCtrl_c::checkAnmEnd() {
if (getEndFlg() != 0 && getNowSetFlg() == 0) {
return true;
}
if (getRate() == lit_4215[0]) {
onEndFlg();
onNowSetFlg();
}
return false;
}
@@ -155,63 +160,38 @@ void daPy_frameCtrl_c::updateFrame() {
offNowSetFlg();
}
/* ############################################################################################## */
/* 80453608-80453610 001C08 0008+00 2/2 0/0 0/0 .sdata2 @4237 */
SECTION_SDATA2 static f64 lit_4237 = 4503601774854144.0 /* cast s32 to float */;
/* 8015E544-8015E5B0 158E84 006C+00 0/0 1/1 6/6 .text setFrameCtrl__16daPy_frameCtrl_cFUcssff */
// compiler generated literal from short to float conversion
#ifdef NONMATCHING
void daPy_frameCtrl_c::setFrameCtrl(u8 pAttribute, s16 pStart, s16 pEnd, f32 pRate, f32 pFrame) {
setAttribute(pAttribute);
setEnd(pEnd);
setRate(pRate);
setStart(pStart);
setFrame(pFrame);
if (pRate >= lit_4215[0]) {
setLoop(pStart);
void daPy_frameCtrl_c::setFrameCtrl(u8 i_attribute, s16 i_start, s16 i_end, f32 i_rate,
f32 i_frame) {
setAttribute(i_attribute);
setEnd(i_end);
setRate(i_rate);
setStart(i_start);
setFrame(i_frame);
if (i_rate >= lit_4215[0]) {
setLoop(i_start);
} else {
setLoop(pEnd);
setLoop(i_end);
}
offEndFlg();
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daPy_frameCtrl_c::setFrameCtrl(u8 param_0, s16 param_1, s16 param_2, f32 param_3,
f32 param_4) {
nofralloc
#include "asm/d/a/d_a_player/setFrameCtrl__16daPy_frameCtrl_cFUcssff.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80453610-80453614 001C10 0004+00 1/1 0/0 0/0 .sdata2 @4247 */
SECTION_SDATA2 static f32 lit_4247 = 30.0f;
/* 80453614-80453618 001C14 0004+00 1/1 0/0 0/0 .sdata2 @4248 */
SECTION_SDATA2 static f32 lit_4248 = 70.0f;
/* 80453618-8045361C 001C18 0004+00 2/2 0/0 0/0 .sdata2 @4249 */
SECTION_SDATA2 static f32 lit_4249 = 50.0f;
/* 8045361C-80453620 001C1C 0004+00 1/1 0/0 0/0 .sdata2 @4250 */
SECTION_SDATA2 static f32 lit_4250 = 65536.0f;
/* 8015E5B0-8015E654 158EF0 00A4+00 0/0 1/1 18/18 .text initOffset__20daPy_boomerangMove_cFPC4cXyz
*/
void daPy_boomerangMove_c::initOffset(cXyz const* param_0) {
daBoomerang_c* boomerang = daPy_py_c::getThrowBoomerangActor();
if (boomerang != NULL) {
bgCheckAfterOffset(param_0);
boomerang->onWindCatch();
} else {
field_0x4 = cM_rndF(lit_4248) + lit_4247;
field_0x8 = cM_rndF(lit_4249) + lit_4249;
field_0x2 = cM_rndF(lit_4250);
field_0x4 = cM_rndF(70.0f) + 30.0f;
field_0x8 = cM_rndF(50.0f) + 50.0f;
field_0x2 = cM_rndF(65536.0f);
}
field_0x0 = 0;
}
@@ -221,34 +201,59 @@ daMidna_c* daPy_py_c::m_midnaActor;
/* 8045101C-80451020 -00001 0004+00 1/1 1/1 1/1 .sbss None */
/* 8045101C 0002+00 data_8045101C m_dropAngleY__20daPy_boomerangMove_c */
s16 daPy_boomerangMove_c::m_dropAngleY;
/* 8045101E 0002+00 data_8045101E m_eventKeepFlg__20daPy_boomerangMove_c */
extern u8 struct_8045101C[4];
u8 struct_8045101C[4];
/* 80453620-80453624 001C20 0004+00 1/1 0/0 0/0 .sdata2 @4332 */
SECTION_SDATA2 static f32 lit_4332 = 300.0f;
/* 80453624-80453628 001C24 0004+00 1/1 0/0 0/0 .sdata2 @4333 */
SECTION_SDATA2 static f32 lit_4333 = -700.0f;
/* 80453628-80453630 001C28 0004+04 1/1 0/0 0/0 .sdata2 @4334 */
SECTION_SDATA2 static f32 lit_4334[1 + 1 /* padding */] = {
2048.0f,
/* padding */
0.0f,
};
s16 daPy_boomerangMove_c::m_eventKeepFlg;
/* 8015E654-8015E87C 158F94 0228+00 0/0 1/1 17/17 .text
* posMove__20daPy_boomerangMove_cFP4cXyzPsP10fopAc_ac_cs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daPy_boomerangMove_c::posMove(cXyz* param_0, s16* param_1, fopAc_ac_c* param_2,
s16 param_3) {
nofralloc
#include "asm/d/a/d_a_player/posMove__20daPy_boomerangMove_cFP4cXyzPsP10fopAc_ac_cs.s"
int daPy_boomerangMove_c::posMove(cXyz* param_0, s16* param_1, fopAc_ac_c* param_2, s16 param_3) {
daBoomerang_c* boomerang = daPy_py_c::getThrowBoomerangActor();
field_0x2 -= param_3;
*param_1 -= param_3;
if (field_0x8 > 300.0f) {
field_0x8 = 300.0f;
}
if (field_0x4 < -700.0f) {
field_0x4 = -700.0f;
} else if (field_0x4 > 50.0f) {
field_0x4 = 50.0f;
}
if (boomerang != NULL) {
if (boomerang->checkForceDelete()) {
return 0;
}
if (i_dComIfGp_event_runCheck()) {
field_0x0 = 1;
} else if (m_eventKeepFlg != 0 && field_0x0 == 0) {
return 0;
}
param_0->set(boomerang->current.pos.x + field_0x8 * cM_ssin(field_0x2),
boomerang->current.pos.y + field_0x4,
boomerang->current.pos.z + field_0x8 * cM_scos(field_0x2));
boomerang->onWindCatch();
return 1;
}
daAlink_c* link = daAlink_getAlinkActorClass();
if ((param_2 == NULL || !link->checkBoomerangCarry(param_2)) &&
(m_eventKeepFlg == 0 || field_0x0 != 0)) {
s16 tmp = (m_dropAngleY + link->mCollisionRot.y) + cM_rndF(2048.0f);
param_0->x = link->current.pos.x + field_0x8 * cM_ssin(tmp);
param_0->z = link->current.pos.z + field_0x8 * cM_scos(tmp);
m_dropAngleY += 0x2000;
}
return 0;
}
#pragma pop
/* ############################################################################################## */
/* 80453630-80453638 001C30 0008+00 1/1 0/0 0/0 .sdata2 @4379 */
@@ -271,8 +276,8 @@ void daPy_boomerangMove_c::bgCheckAfterOffset(cXyz const* param_0) {
if (boomerang != NULL) {
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);
field_0x2 =
cM_atan2s(param_0->x - boomerang->current.pos.x, param_0->z - boomerang->current.pos.z);
}
}
#else
@@ -375,10 +380,10 @@ void daPy_actorKeep_c::setActor() {
/* 8015ECB8-8015ECFC 1595F8 0044+00 0/0 59/59 4/4 .text setData__16daPy_actorKeep_cFP10fopAc_ac_c
*/
void daPy_actorKeep_c::setData(fopAc_ac_c* pActor) {
if (pActor != NULL) {
mActor = pActor;
mID = fopAcM_GetID(pActor);
void daPy_actorKeep_c::setData(fopAc_ac_c* i_actor) {
if (i_actor != NULL) {
mActor = i_actor;
mID = fopAcM_GetID(i_actor);
} else {
clearData();
}
@@ -389,9 +394,9 @@ void daPy_actorKeep_c::clearData() {
mActor = NULL;
}
daPy_anmHeap_c::daPy_anmHeap_c(u32 pBufferSize) {
daPy_anmHeap_c::daPy_anmHeap_c(u32 i_bufferSize) {
initData();
mBufferSize = pBufferSize;
mBufferSize = i_bufferSize;
}
daPy_anmHeap_c::~daPy_anmHeap_c() {
@@ -414,16 +419,16 @@ void* daPy_anmHeap_c::mallocBuffer() {
/* 8015EE00-8015EF84 159740 0184+00 0/0 1/1 1/1 .text
* createHeap__14daPy_anmHeap_cFQ214daPy_anmHeap_c16daAlinkHEAP_TYPE */
void daPy_anmHeap_c::createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE heap_type) {
void daPy_anmHeap_c::createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE i_heapType) {
u32 size;
if (heap_type == 4) {
if (i_heapType == 4) {
size = mBufferSize;
} else if (heap_type == 3) {
} else if (i_heapType == 3) {
size = 0x50;
} else if (heap_type == 0) {
} else if (i_heapType == 0) {
size = 0x40;
} else if (heap_type == 1) {
} else if (i_heapType == 1) {
size = 0x40;
} else {
size = 0xA0;
@@ -432,13 +437,13 @@ void daPy_anmHeap_c::createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE heap_type) {
JKRHeap* tmp;
mAnimeHeap = mDoExt_createSolidHeapFromGameToCurrent(&tmp, size, 0x20);
if (heap_type == 4) {
if (i_heapType == 4) {
char* tmpWork = new char[size];
} else if (heap_type == 3) {
} else if (i_heapType == 3) {
mDoExt_transAnmBas* tmpTransBas = new mDoExt_transAnmBas(NULL);
} else if (heap_type == 0) {
} else if (i_heapType == 0) {
J3DAnmTransformKey* tmpTrans = new J3DAnmTransformKey();
} else if (heap_type == 1) {
} else if (i_heapType == 1) {
J3DAnmTexPattern* tmpTp = new J3DAnmTexPattern();
} else {
J3DAnmTextureSRTKey* tmpTk = new J3DAnmTextureSRTKey();
@@ -448,50 +453,24 @@ void daPy_anmHeap_c::createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE heap_type) {
mDoExt_adjustSolidHeap(mAnimeHeap);
}
/* ############################################################################################## */
/* 80453648-80453650 001C48 0008+00 1/0 0/0 0/0 .sdata2 sumouArcName$4614 */
extern "C" char sumouArcName[8];
/* 80453650-80453658 001C50 0005+03 1/0 0/0 0/0 .sdata2 ocArcName$4615 */
extern "C" char ocArcName[8];
/* 80453658-80453660 001C58 0005+03 1/0 0/0 0/0 .sdata2 drArcName$4618 */
extern "C" char drArcName[8];
/* 80453660-80453668 001C60 0008+00 1/0 0/0 0/0 .sdata2 msDemoArcName$4619 */
extern "C" char msDemoArcName[8];
/* 80453668-80453670 001C68 0006+02 1/0 0/0 0/0 .sdata2 lastGanonArcName$4620 */
extern "C" char lastGanonArcName[8];
/* 80453670-80453678 001C70 0006+02 1/0 0/0 0/0 .sdata2 pigGanonArcName$4621 */
extern "C" char pigGanonArcName[8];
SECTION_RODATA static char const twglArcName[12] = "TWGate_Lk";
SECTION_RODATA static char const twgwArcName[12] = "TWGate_Wf";
SECTION_DATA static char* arcName[8] = {
(char*)&sumouArcName, (char*)&ocArcName, (char*)&twglArcName, (char*)&twgwArcName,
(char*)&drArcName, (char*)&msDemoArcName, (char*)&lastGanonArcName, (char*)&pigGanonArcName,
};
SECTION_SDATA2 static char sumouArcName[8] = "alSumou";
SECTION_SDATA2 static char ocArcName[8] = "B_oh";
SECTION_SDATA2 static char drArcName[8] = "B_DR";
SECTION_SDATA2 static char msDemoArcName[8] = "Lv6Gate";
SECTION_SDATA2 static char lastGanonArcName[8] = "B_gnd";
SECTION_SDATA2 static char pigGanonArcName[8] = "B_mgn";
/* 8015EF84-8015F068 1598C4 00E4+00 3/3 0/0 0/0 .text loadData__14daPy_anmHeap_cFUs */
void* daPy_anmHeap_c::loadData(u16 id) {
void* daPy_anmHeap_c::loadData(u16 i_resId) {
static const char twglArcName[12] = "TWGate_Lk";
static const char twgwArcName[12] = "TWGate_Wf";
static const char sumouArcName[8] = "alSumou";
static const char ocArcName[8] = "B_oh";
static const char drArcName[8] = "B_DR";
static const char msDemoArcName[8] = "Lv6Gate";
static const char lastGanonArcName[8] = "B_gnd";
static const char pigGanonArcName[8] = "B_mgn";
static const char* arcName[8] = {
sumouArcName, ocArcName, twglArcName, twgwArcName,
drArcName, msDemoArcName, lastGanonArcName, pigGanonArcName,
};
if (mArcNo == 0xFFFF) {
dComIfGp_getAnmArchive()->readIdxResource(mBuffer, mBufferSize, id);
dComIfGp_getAnmArchive()->readIdxResource(mBuffer, mBufferSize, i_resId);
JKRHeap* heap = setAnimeHeap();
void* data = J3DAnmLoaderDataBase::load(mBuffer, UNK_FLAG0);
mDoExt_setCurrentHeap(heap);
@@ -499,55 +478,58 @@ void* daPy_anmHeap_c::loadData(u16 id) {
}
if (mArcNo == 0) {
return dComIfG_getObjectIDRes(dStage_roomControl_c::getDemoArcName(), id);
return dComIfG_getObjectIDRes(dStage_roomControl_c::getDemoArcName(), i_resId);
}
return dComIfG_getObjectRes(arcName[mArcNo - 1], id);
return dComIfG_getObjectRes(arcName[mArcNo - 1], i_resId);
}
/* 8015F068-8015F0D0 1599A8 0068+00 0/0 9/9 5/5 .text loadDataIdx__14daPy_anmHeap_cFUs */
void* daPy_anmHeap_c::loadDataIdx(u16 id) {
void* daPy_anmHeap_c::loadDataIdx(u16 i_resID) {
void* data;
if (id == mIdx && mArcNo == 0xFFFF) {
if (i_resID == mIdx && mArcNo == 0xFFFF) {
data = NULL;
} else {
mIdx = id;
mIdx = i_resID;
mArcNo = 0xFFFF;
if (mPriIdx == 0xFFFF) {
data = loadData(id);
data = loadData(i_resID);
} else {
data = NULL;
}
}
return data;
}
/* 8015F0D0-8015F118 159A10 0048+00 0/0 3/3 0/0 .text loadDataPriIdx__14daPy_anmHeap_cFUs
*/
void* daPy_anmHeap_c::loadDataPriIdx(u16 id) {
void* daPy_anmHeap_c::loadDataPriIdx(u16 i_resID) {
void* data;
if (id == mPriIdx || mArcNo != 0xFFFF) {
if (i_resID == mPriIdx || mArcNo != 0xFFFF) {
data = NULL;
} else {
mPriIdx = id;
data = loadData(id);
mPriIdx = i_resID;
data = loadData(i_resID);
}
return data;
}
/* 8015F118-8015F168 159A58 0050+00 0/0 5/5 5/5 .text loadDataDemoRID__14daPy_anmHeap_cFUsUs */
void* daPy_anmHeap_c::loadDataDemoRID(u16 id, u16 arc_no) {
void* daPy_anmHeap_c::loadDataDemoRID(u16 i_resID, u16 i_arcNo) {
void* data;
if (id == mIdx && arc_no == mArcNo) {
if (i_resID == mIdx && i_arcNo == mArcNo) {
data = NULL;
} else {
mIdx = id;
mArcNo = arc_no;
data = loadData(id);
mIdx = i_resID;
mArcNo = i_arcNo;
data = loadData(i_resID);
}
return data;
}
@@ -578,29 +560,56 @@ SECTION_SDATA2 static u32 lit_4668 = 0xFF8000FF;
SECTION_SDATA2 static u32 lit_4669 = 0x321400FF;
/* 8015F1A0-8015F2FC 159AE0 015C+00 1/0 1/1 0/0 .text draw__18daPy_sightPacket_cFv */
// dumb instruction block out of order
#ifdef NONMATCHING
void daPy_sightPacket_c::draw() {
GXTexObj texObj;
j3dSys.reinitGX();
GXSetNumIndStages(0);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGB8, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGB565, 0);
GXColor reg0 = {255, 128, 0, 255};
GXColor reg1 = {50, 20, 0, 255};
GXSetTevColor(GX_TEVREG0, reg0);
GXSetTevColor(GX_TEVREG1, reg1);
GXInitTexObj(&texObj, mpData, mpImg->width, mpImg->height, (GXTexFmt)mpImg->format,
(GXTexWrapMode)mpImg->wrapS, (GXTexWrapMode)mpImg->wrapT,
(GXBool)(mpImg->mipmapCount > 1));
GXInitTexObjLOD(&texObj, GX_LINEAR, GX_LINEAR, 0.0, 0.0, 0.0, GX_FALSE, GX_FALSE, GX_ANISO_1);
GXLoadTexObj(&texObj, GX_TEXMAP0);
GXLoadPosMtxImm(field_0x14, GX_PNMTX0);
GXSetCurrentMtx(0);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
GXCallDisplayList(l_sightDL, 0x80);
J3DShape::resetVcdVatCache();
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void draw__18daPy_sightPacket_cFv() {
// asm void daPy_sightPacket_c::draw() {
asm void daPy_sightPacket_c::draw() {
nofralloc
#include "asm/d/a/d_a_player/draw__18daPy_sightPacket_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80453680-80453684 001C80 0004+00 1/1 0/0 0/0 .sdata2 @4699 */
SECTION_SDATA2 static f32 lit_4699 = 32.0f;
#endif
/* 8015F2FC-8015F384 159C3C 0088+00 0/0 1/1 0/0 .text setSight__18daPy_sightPacket_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daPy_sightPacket_c::setSight() {
nofralloc
#include "asm/d/a/d_a_player/setSight__18daPy_sightPacket_cFv.s"
void daPy_sightPacket_c::setSight() {
Vec tmp;
mDoLib_project(&mPos, &tmp);
mDoMtx_stack_c::transS(tmp.x, tmp.y, tmp.z);
mDoMtx_stack_c::scaleM(32.0f, 32.0f, 32.0f);
mDoMtx_stack_c::copy(field_0x14);
dComIfGd_set2DXlu(this);
}
#pragma pop
/* 8015F384-8015F398 159CC4 0014+00 0/0 1/1 0/0 .text
* setSightImage__18daPy_sightPacket_cFP7ResTIMG */
@@ -617,6 +626,7 @@ BOOL daPy_py_c::checkMasterSwordEquip() {
if (equipSword == MASTER_SWORD || equipSword == LIGHT_SWORD) {
isMasterSword = true;
}
return isMasterSword;
}
@@ -625,7 +635,7 @@ BOOL daPy_py_c::checkMasterSwordEquip() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daPy_py_c::checkWoodShieldEquip() {
asm bool daPy_py_c::checkWoodShieldEquip() {
nofralloc
#include "asm/d/a/d_a_player/checkWoodShieldEquip__9daPy_py_cFv.s"
}
@@ -641,6 +651,7 @@ f32 daPy_py_c::getAttentionOffsetY() {
if (checkNowWolf()) {
return -12.5f;
}
return 57.5f;
}
@@ -678,8 +689,8 @@ void daPy_py_c::setLookPos(cXyz* p_pos) {
}
/* 8015F520-8015F55C 159E60 003C+00 0/0 0/0 4/4 .text setPlayerSe__9daPy_py_cFUl */
void daPy_py_c::setPlayerSe(u32 se_id) {
daAlink_getAlinkActorClass()->seStartOnlyReverb(se_id);
void daPy_py_c::setPlayerSe(u32 i_sfxID) {
daAlink_getAlinkActorClass()->seStartOnlyReverb(i_sfxID);
}
/* 8015F55C-8015F60C 159E9C 00B0+00 1/1 0/0 2/2 .text
@@ -696,7 +707,8 @@ bool daPy_py_c::linkGrabSubjectNoDraw(fopAc_ac_c* p_ac) {
}
}
if (check_carry && dComIfGp_checkCameraAttentionStatus(i_dComIfGp_getPlayerCameraID(0), 2) != 0) {
if (check_carry &&
dComIfGp_checkCameraAttentionStatus(i_dComIfGp_getPlayerCameraID(0), 2) != 0) {
ret = true;
}
@@ -718,8 +730,7 @@ asm bool daPy_py_c::linkGrabSubjectNoDraw(fopAc_ac_c* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daPy_py_c::wolfGrabSubjectNoDraw(fopAc_ac_c* param_0) {
nofralloc
asm void daPy_py_c::wolfGrabSubjectNoDraw(fopAc_ac_c* param_0){nofralloc
#include "asm/d/a/d_a_player/wolfGrabSubjectNoDraw__9daPy_py_cFP10fopAc_ac_c.s"
}
#pragma pop
@@ -735,48 +746,67 @@ bool daPy_py_c::checkRoomRestartStart() {
if (mode == 4 || mode == 8 || mode == 5) {
return true;
} else {
return false;
}
return false;
}
/* 8015F698-8015F730 159FD8 0098+00 0/0 2/2 1/1 .text checkCarryStartLightBallA__9daPy_py_cFv */
u32 daPy_py_c::checkCarryStartLightBallA() {
if (checkRoomRestartStart() || !i_dComIfGp_getStage() || !i_dComIfGp_getStage()->getStagInfo() ||
if (checkRoomRestartStart() || !i_dComIfGp_getStage() ||
!i_dComIfGp_getStage()->getStagInfo() ||
i_dStage_stagInfo_GetSaveTbl(i_dComIfGp_getStage()->getStagInfo()) != 0x17) {
return FALSE;
}
return dComIfGs_getLastSceneMode() & 0x100000;
}
/* 8015F730-8015F7C8 15A070 0098+00 0/0 2/2 1/1 .text checkCarryStartLightBallB__9daPy_py_cFv */
u32 daPy_py_c::checkCarryStartLightBallB() {
if (checkRoomRestartStart() || !i_dComIfGp_getStage() || !i_dComIfGp_getStage()->getStagInfo() ||
if (checkRoomRestartStart() || !i_dComIfGp_getStage() ||
!i_dComIfGp_getStage()->getStagInfo() ||
i_dStage_stagInfo_GetSaveTbl(i_dComIfGp_getStage()->getStagInfo()) != 0x17) {
return FALSE;
}
return dComIfGs_getLastSceneMode() & 0x80000;
}
float daPy_py_c::getSpinnerRideSpeed() const {
float rideSpeed;
f32 daPy_py_c::getSpinnerRideSpeed() const {
f32 rideSpeed;
if (checkSpinnerRide()) {
rideSpeed = mSpeedF;
} else {
rideSpeed = lit_4215[0];
}
return rideSpeed;
}
/* 8015F814-8015F89C 15A154 0088+00 0/0 0/0 1/1 .text checkSpinnerReflectEffect__9daPy_py_cFv */
// matches with literals
#ifdef NONMATCHING
bool daPy_py_c::checkSpinnerReflectEffect() {
daSpinner_c* spinner = (daSpinner_c*)getSpinnerActor();
if (spinner != NULL && spinner->reflectAccept()) {
return true;
}
return false;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daPy_py_c::checkSpinnerReflectEffect() {
asm bool daPy_py_c::checkSpinnerReflectEffect() {
nofralloc
#include "asm/d/a/d_a_player/checkSpinnerReflectEffect__9daPy_py_cFv.s"
}
#pragma pop
#endif
/* 8015F89C-8015F8C8 15A1DC 002C+00 0/0 0/0 7/7 .text checkBoomerangCharge__9daPy_py_cFv
*/
@@ -874,14 +904,3 @@ asm void daPy_addCalcShort(s16* param_0, s16 param_1, s16 param_2, s16 param_3,
}
#pragma pop
#endif
/* ############################################################################################## */
/* 803BA14C-803BA160 01726C 0010+04 0/0 4/4 0/0 .data __vt__18daPy_sightPacket_c */
SECTION_DATA extern void* __vt__18daPy_sightPacket_c[4 + 1 /* padding */] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)draw__18daPy_sightPacket_cFv,
(void*)__dt__18daPy_sightPacket_cFv,
/* padding */
NULL,
};