d_a_andsw2 OK, d_a_player / d_a_alink cleanup, d_a_alink_hook mostly done (#1957)

* d_a_andsw2 OK

* d_a_player cleanup, d_a_alink cleanup and work on d_a_alink_hook

* remove asm

* d_kankyo_wether almost done

* some work on d_kankyo_rain
This commit is contained in:
TakaRikka
2023-10-11 01:12:08 -07:00
committed by GitHub
parent c5b54dd7ec
commit 6229bba991
104 changed files with 7784 additions and 5381 deletions
+8 -2020
View File
File diff suppressed because it is too large Load Diff
+5
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_HIO.inc
* Player HostIO interface handling
*/
/* 80140B88-80140B98 13B4C8 0010+00 1/1 0/0 0/0 .text __ct__12daAlinkHIO_cFv */
#pragma push
#pragma optimization_level 0
+5
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_bomb.inc
* Player Bomb action handling
*/
/* 800E3760-800E3770 0DE0A0 0010+00 0/0 0/0 7/7 .text getBombExplodeTime__9daAlink_cCFv
*/
s16 daAlink_c::getBombExplodeTime() const {
+7 -2
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_boom.inc
* Player Boomerang action handling
*/
#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 */
@@ -374,9 +379,9 @@ int daAlink_c::checkBoomerangCatchAction() {
/* 800E0E64-800E0F10 0DB7A4 00AC+00 3/3 0/0 0/0 .text setBoomerangSight__9daAlink_cFv */
void daAlink_c::setBoomerangSight() {
if (mItemAcKeep.getActor() && !checkBoomerangThrowAnime()) {
BOOL check_line = checkSightLine(getBoomLockMax(), &field_0x37e0);
BOOL check_line = checkSightLine(getBoomLockMax(), &mHeldItemRootPos);
mSight.setPos(&field_0x37e0);
mSight.setPos(&mHeldItemRootPos);
mSight.onDrawFlg();
daBoomerang_c* boomerang = (daBoomerang_c*)mItemAcKeep.getActor();
+10 -5
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_bottle.inc
* Player Bottle action handling
*/
#include "d/d_insect.h"
/* 8010E48C-8010E52C 108DCC 00A0+00 1/1 0/0 0/0 .text bottleModelCallBack__9daAlink_cFv
@@ -119,16 +124,16 @@ int daAlink_c::procBottleDrinkInit(u16 param_0) {
u32 id = fopAcM_GetID(this);
dCam_getBody()->StartEventCamera(0x12, id, "Type", 1, &field_0x3194, 0);
field_0x300c = 0;
field_0x300e = 0;
field_0x300e.x = 0;
return 1;
}
/* 8010F698-8010F6F4 109FD8 005C+00 1/0 0/0 0/0 .text procBottleDrink__9daAlink_cFv */
int daAlink_c::procBottleDrink() {
if (field_0x300e != 0) {
if (field_0x300e.x != 0) {
dComIfGp_evmng_cutEnd(field_0x3184);
} else {
field_0x300e = commonBottleDrink(0);
field_0x300e.x = commonBottleDrink(0);
}
return 1;
@@ -170,7 +175,7 @@ int daAlink_c::procBottleOpenInit(u16 param_0) {
}
}
field_0x300e = 0;
field_0x300e.x = 0;
u32 id = fopAcM_GetID(this);
dCam_getBody()->StartEventCamera(0x12, id, "Type", 1, &field_0x3194, 0);
@@ -181,7 +186,7 @@ int daAlink_c::procBottleOpenInit(u16 param_0) {
if (param_0 == 0x67) {
setCylAtParam(0x200, 0, 0, 0, 0, 30.0f, 30.0f);
}
field_0x3010 = 0;
field_0x300e.y = 0;
return 1;
}
+10 -5
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_bow.inc
* Player Bow and Arrow action handling
*/
#include "rel/d/a/d_a_arrow/d_a_arrow.h"
/* 800DE64C-800DE740 0D8F8C 00F4+00 1/1 0/0 2/2 .text getArrowFlyData__9daAlink_cCFPfPfi
@@ -58,7 +63,7 @@ void daAlink_c::setSlingModel() {
J3DModelData* model_data = loadAramBmd(0x319, 0x2C00);
mHeldItemModel = initModel(model_data, 0);
field_0x730.init(bck, 0, 2, lit_6040, 0, -1, false);
mItemBck.init(bck, 0, 2, lit_6040, 0, -1, false);
mDoExt_setCurrentHeap(heap);
field_0x2f95 = 5;
@@ -85,11 +90,11 @@ cXyz* daAlink_c::checkBowCameraArrowPosP(s16* param_0, s16* param_1) {
mDoMtx_stack_c::transS(field_0x3834);
concatMagneBootMtx();
mDoMtx_stack_c::ZXYrotM(mBodyAngle.x, var_28, 0);
mDoMtx_stack_c::multVec(&localPos, &field_0x37e0);
mDoMtx_stack_c::multVec(&localPos, &mHeldItemRootPos);
*param_0 = mBodyAngle.x;
*param_1 = var_28;
return &field_0x37e0;
return &mHeldItemRootPos;
}
/* 800DE990-800DE9B8 0D92D0 0028+00 1/0 0/0 0/0 .text checkArrowChargeEnd__9daAlink_cCFv
@@ -275,10 +280,10 @@ void daAlink_c::setBowModel() {
JKRHeap* old_heap = setItemHeap();
mHeldItemModel = initModel(loadAramBmd(0x314, 0x4C00), 0);
field_0x730.init(bck, FALSE, 2, 1.0f, 0, -1, false);
mItemBck.init(bck, FALSE, 2, 1.0f, 0, -1, false);
mDoExt_setCurrentHeap(old_heap);
field_0x33dc = field_0x730.getBckAnm()->getFrameMax() - 0.001f;
field_0x33dc = mItemBck.getBckAnm()->getFrameMax() - 0.001f;
field_0x2f95 = 5;
field_0x2f94 = 0x67;
}
+12 -7
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_canoe.inc
* Player Canoe riding handling
*/
#include "rel/d/a/d_a_canoe/d_a_canoe.h"
/* 800F3BB0-800F3BDC 0EE4F0 002C+00 1/1 0/0 2/2 .text getCanoeMaxSpeed__9daAlink_cCFv */
@@ -122,11 +127,11 @@ BOOL daAlink_c::checkCanoeFishingRodGrabOrPut() const {
/* 800F3FC4-800F4008 0EE904 0044+00 2/2 0/0 0/0 .text initCanoeRide__9daAlink_cFv */
void daAlink_c::initCanoeRide() {
field_0x3012 = 1;
field_0x300e.z = 1;
field_0x3588 = l_waitBaseAnime;
field_0x384c = (cXyz*)&l_canoeBaseAnime;
mRideStatus = 3;
field_0x3010 = 0;
field_0x300e.y = 0;
}
/* 800F4008-800F40E4 0EE948 00DC+00 2/2 0/0 0/0 .text checkCanoeJumpRide__9daAlink_cFv */
@@ -141,7 +146,7 @@ BOOL daAlink_c::checkCanoeJumpRide() {
if (speed.y < FLOAT_LABEL(lit_6108) && canoe != NULL && fopAcM_GetName(canoe) == PROC_CANOE &&
canoe->checkJumpRideFlg() && !checkDeadHP() &&
(mProcID != PROC_FALL || field_0x3010 != 0)) {
(mProcID != PROC_FALL || field_0x300e.y != 0)) {
return procCanoeJumpRideInit(canoe);
}
@@ -274,7 +279,7 @@ int daAlink_c::procCanoeRideInit() {
current.angle.y = shape_angle.y;
initCanoeRide();
field_0x300e = 0x80;
field_0x300e.x = 0x80;
swimOutAfter(1);
return 1;
}
@@ -292,12 +297,12 @@ int daAlink_c::procCanoeRide() {
if (frameCtrl->checkAnmEnd()) {
procCanoeWaitInit(1);
} else if (frameCtrl->getFrame() < lit_7710) {
field_0x300e += 0x180;
field_0x300e.x += 0x180;
if (field_0x3008 == 0) {
canoe->incShapeAngleZ(-field_0x300e);
canoe->incShapeAngleZ(-field_0x300e.x);
} else {
canoe->incShapeAngleZ(field_0x300e);
canoe->incShapeAngleZ(field_0x300e.x);
}
canoe->incShapeOffsetY(lit_21021);
}
+10 -5
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_copyrod.inc
* Player Dominion Rod action handling
*/
#include "rel/d/a/d_a_cstatue/d_a_cstatue.h"
/* 800E12E0-800E1310 0DBC20 0030+00 1/1 0/0 0/0 .text checkLv6BossRoom__9daAlink_cFv */
@@ -68,7 +73,7 @@ BOOL daAlink_c::checkForestOldCentury() {
/* 800E145C-800E1530 0DBD9C 00D4+00 1/0 0/0 0/0 .text checkCopyRodTopUse__9daAlink_cFv */
BOOL daAlink_c::checkCopyRodTopUse() {
// Event flag 0x2580: Dominion Rod power restored
return (i_dComIfGs_isEventBit(0x2580) && !(mProcID == PROC_UNEQUIP && field_0x300e != 0)) ||
return (i_dComIfGs_isEventBit(0x2580) && !(mProcID == PROC_UNEQUIP && field_0x300e.x != 0)) ||
i_dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x15 ||
checkForestOldCentury();
}
@@ -378,7 +383,7 @@ int daAlink_c::procCopyRodSwingInit() {
mNormalSpeed = FLOAT_LABEL(lit_6108);
current.angle.y = shape_angle.y;
field_0x300c = 1;
field_0x300e = 0;
field_0x300e.x = 0;
voiceStart(Z2SE_AL_V_ATTACK_S);
mAtCps[0].SetR(lit_11442);
@@ -400,16 +405,16 @@ int daAlink_c::procCopyRodSwing() {
setCopyRodControllAnime();
}
} else if (frameCtrl->getFrame() >= field_0x3478 && frameCtrl->getFrame() < field_0x347c) {
if (field_0x300e == 0) {
if (field_0x300e.x == 0) {
seStartSwordCut(Z2SE_AL_COPYROD_SWING);
}
field_0x300e = 1;
field_0x300e.x = 1;
if (changeCutReverseProc(ANM_CUT_RECOIL_A)) {
return 1;
}
} else {
field_0x300e = 0;
field_0x300e.x = 0;
}
return 1;
+5
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_crawl.inc
* Player Crawl action handling
*/
/* 800F7C50-800F7C74 0F2590 0024+00 2/2 0/0 0/0 .text getCrawlMoveAnmSpeed__9daAlink_cFv
*/
f32 daAlink_c::getCrawlMoveAnmSpeed() {
+43 -38
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_cut.inc
* Player Sword action handling
*/
/* 800D0D38-800D0E08 0CB678 00D0+00 1/1 0/0 0/0 .text daAlink_searchNightStalker__FP10fopAc_ac_cPv
*/
#pragma push
@@ -541,13 +546,13 @@ int daAlink_c::checkCutAction() {
/* 800D2684-800D26EC 0CCFC4 0068+00 9/9 0/0 0/0 .text checkCutTurnCharge__9daAlink_cFv */
void daAlink_c::checkCutTurnCharge() {
if (swordButton()) {
if (field_0x3012 < 3) {
field_0x3012++;
if (field_0x300e.z < 3) {
field_0x300e.z++;
} else {
i_onResetFlg0(RFLG0_UNK_40);
}
} else {
field_0x3012 = 0;
field_0x300e.z = 0;
}
}
@@ -664,9 +669,9 @@ void daAlink_c::cancelCutCharge() {
*/
void daAlink_c::initCutAtnActorSearch() {
if (cLib_distanceAngleS(getShapeAngleYAtnActor(), shape_angle.y) < 0x800) {
field_0x3010 = 1;
field_0x300e.y = 1;
} else {
field_0x3010 = 0;
field_0x300e.y = 0;
}
field_0x32cc = (u32)mTargetedActor;
@@ -675,7 +680,7 @@ void daAlink_c::initCutAtnActorSearch() {
/* 800D2C54-800D2C78 0CD594 0024+00 3/3 0/0 0/0 .text checkCutAtnActorChange__9daAlink_cFv */
void daAlink_c::checkCutAtnActorChange() {
if (field_0x32cc != (u32)mTargetedActor) {
field_0x3010 = 0;
field_0x300e.y = 0;
field_0x32cc = (u32)mTargetedActor;
}
}
@@ -791,16 +796,16 @@ int daAlink_c::procCutNormalInit(int i_type) {
setSwordAtParam(dCcG_At_Spl_UNK_0, 1, cutParams->m_atSe, 2, daAlinkHIO_cut_c0::m.mSwordLength,
daAlinkHIO_cut_c0::m.mSwordRadius);
setSwordComboVoice();
field_0x3012 = 0;
field_0x300e.z = 0;
dComIfGp_setPlayerStatus0(0, 0x8000);
setCutWaterDropEffect();
int cutDir = getCutDirection();
if (mComboCutCount == 1 && (cutDir == DIR_LEFT || cutDir == DIR_RIGHT)) {
field_0x300e = 1;
field_0x300e.x = 1;
} else {
field_0x300e = 0;
field_0x300e.x = 0;
}
field_0x300a = 4;
@@ -825,7 +830,7 @@ int daAlink_c::procCutNormal() {
i_onEndResetFlg0(ERFLG0_UNK_8000000);
field_0x2f99 = 4;
if (field_0x300e != 0 && i_checkNoResetFlg2(FLG2_UNK_2)) {
if (field_0x300e.x != 0 && i_checkNoResetFlg2(FLG2_UNK_2)) {
int cutDir = getCutDirection();
if ((cutDir == DIR_RIGHT && mCutType == CUT_TYPE_NM_LEFT &&
frameCtrl->getFrame() > lit_7448) ||
@@ -853,11 +858,11 @@ int daAlink_c::procCutNormal() {
return 1;
}
if (setShapeAngleToAtnActor(field_0x3010)) {
if (setShapeAngleToAtnActor(field_0x300e.y)) {
field_0x300c = shape_angle.y;
if (cLib_distanceAngleS(getShapeAngleYAtnActor(), shape_angle.y) < 0x800) {
field_0x3010 = 1;
field_0x300e.y = 1;
}
} else {
cLib_addCalcAngleS(&shape_angle.y, field_0x300c, 2, 0x2000, 0x800);
@@ -904,7 +909,7 @@ int daAlink_c::procCutFinishInit(int i_type) {
setCutType(cutParams->m_cutType);
field_0x3198 = cutParams->field_0x4;
field_0x300c = cutParams->field_0xa;
field_0x300e = cutParams->field_0xb;
field_0x300e.x = cutParams->field_0xb;
BOOL var_r30 = FALSE;
if (i_type == 0) {
@@ -985,7 +990,7 @@ int daAlink_c::procCutFinishInit(int i_type) {
field_0x2f99 = 13;
}
field_0x3012 = 0;
field_0x300e.z = 0;
dComIfGp_setPlayerStatus0(0, 0x8000);
setCutWaterDropEffect();
initCutAtnActorSearch();
@@ -1058,7 +1063,7 @@ int daAlink_c::procCutFinishJumpUpInit() {
daAlinkHIO_cutFnJU_c0::m.mCutAnm.mEndFrame,
daAlinkHIO_cutFnJU_c0::m.mCutAnm.mInterpolation);
setSwordVoiceSe(Z2SE_AL_V_SOTOMO_ATK);
field_0x3012 = 0;
field_0x300e.z = 0;
field_0x3478 = current.pos.y;
dComIfGp_setPlayerStatus0(0, 0x8000);
setCutWaterDropEffect();
@@ -1121,7 +1126,7 @@ int daAlink_c::procCutFinishJumpUpLandInit() {
field_0x3008 = daAlinkHIO_cutFnJU_c0::m.mStopTime;
}
field_0x3012 = 0;
field_0x300e.z = 0;
field_0x3588 = l_halfAtnWaitBaseAnime;
initCutAtnActorSearch();
return 1;
@@ -1158,10 +1163,10 @@ int daAlink_c::procCutFinishJumpUpLand() {
resetCombo(1);
}
setShapeAngleToAtnActor(field_0x3010);
setShapeAngleToAtnActor(field_0x300e.y);
if (cLib_distanceAngleS(getShapeAngleYAtnActor(), shape_angle.y) < 0x800) {
field_0x3010 = 1;
field_0x300e.y = 1;
}
current.angle.y = shape_angle.y;
@@ -1201,7 +1206,7 @@ int daAlink_c::procCutReverseInit(daAlink_c::daAlink_ANM i_anmID) {
mNormalSpeed = daAlinkHIO_cut_c0::m.mRecoilSpeed;
current.angle.y = shape_angle.y - -0x8000;
field_0x307e = 0;
field_0x3012 = 0;
field_0x300e.z = 0;
int temp_r3;
if (mCutType == CUT_TYPE_MORTAL_DRAW_A || mCutType == CUT_TYPE_MORTAL_DRAW_B ||
@@ -1401,7 +1406,7 @@ int daAlink_c::procCutTurnInit(int param_0, int param_1) {
field_0x3484 = cutData->mRightAttackStartFrame;
field_0x3488 = cutData->mRightAttackEndFrame;
field_0x3010 = 1;
field_0x300e.y = 1;
field_0x300a = 6;
} else {
anmID = ANM_CUT_TURN_LEFT;
@@ -1415,7 +1420,7 @@ int daAlink_c::procCutTurnInit(int param_0, int param_1) {
field_0x3484 = cutData->mLeftAttackStartFrame;
field_0x3488 = cutData->mLeftAttackEndFrame;
field_0x3010 = 0;
field_0x300e.y = 0;
field_0x300a = 8;
}
@@ -1471,7 +1476,7 @@ int daAlink_c::procCutTurnInit(int param_0, int param_1) {
field_0x3180 = 0;
dComIfGp_setPlayerStatus0(0, 0x8000);
mNormalSpeed = FLOAT_LABEL(lit_6108);
field_0x3012 = 0;
field_0x300e.z = 0;
setCutWaterDropEffect();
initCutTurnAt(field_0x347c, var_r29_3);
return 1;
@@ -1635,7 +1640,7 @@ asm int daAlink_c::procCutDownInit() {
/* 800D57F8-800D58A0 0D0138 00A8+00 1/0 0/0 0/0 .text procCutDown__9daAlink_cFv */
int daAlink_c::procCutDown() {
if (field_0x300e != 0) {
if (field_0x300e.x != 0) {
return 1;
}
@@ -1682,7 +1687,7 @@ asm int daAlink_c::procCutHeadInit() {
/* 800D5FC8-800D6130 0D0908 0168+00 1/0 0/0 0/0 .text procCutHead__9daAlink_cFv */
int daAlink_c::procCutHead() {
if (field_0x300e == 0) {
if (field_0x300e.x == 0) {
cLib_chaseF(&mNormalSpeed, FLOAT_LABEL(lit_6108), field_0x3478);
if (speed.y <= FLOAT_LABEL(lit_6108)) {
@@ -1691,7 +1696,7 @@ int daAlink_c::procCutHead() {
mNormalSpeed = tmp_0;
speed.y = tmp_0;
setSpecialGravity(tmp_0, mMaxFallSpeed, 0);
field_0x300e = 1;
field_0x300e.x = 1;
setCutWaterDropEffect();
setSwordVoiceSe(Z2SE_AL_V_KABUTO_ATK);
}
@@ -1805,8 +1810,8 @@ int daAlink_c::procCutLargeJumpInit() {
setCutType(CUT_TYPE_LARGE_JUMP_INIT);
setSwordVoiceSe(Z2SE_AL_V_JUMP_ATTACK_L_1);
setCutWaterDropEffect();
field_0x300e = 4;
field_0x3010 = 0;
field_0x300e.x = 4;
field_0x300e.y = 0;
field_0x3198 = 2;
return 1;
}
@@ -1815,7 +1820,7 @@ int daAlink_c::procCutLargeJumpInit() {
int daAlink_c::procCutLargeJump() {
daPy_frameCtrl_c* frameCtrl = &mUnderFrameCtrl[0];
if (field_0x3010 != 0) {
if (field_0x300e.y != 0) {
field_0x2f99 = 4;
}
@@ -1831,7 +1836,7 @@ int daAlink_c::procCutLargeJump() {
setSwordVoiceSe(Z2SE_AL_V_JUMP_ATTACK_L_2);
} else {
if (frameCtrl->getFrame() >= lit_7307) {
field_0x3010 = 1;
field_0x300e.y = 1;
}
if (!i_checkModeFlg(2) && frameCtrl->getFrame() >= lit_7808) {
@@ -1850,10 +1855,10 @@ int daAlink_c::procCutLargeJump() {
}
}
} else {
if (field_0x300e != 0) {
field_0x300e--;
if (field_0x300e.x != 0) {
field_0x300e.x--;
if (field_0x300e == 0) {
if (field_0x300e.x == 0) {
setSwordAtParam(dCcG_At_Spl_UNK_1, 3, 1, 4, daAlinkHIO_cut_c0::m.mSwordLength,
daAlinkHIO_cut_c0::m.mSwordRadius);
setCutType(CUT_TYPE_LARGE_JUMP);
@@ -1951,8 +1956,8 @@ int daAlink_c::procSwordUnequipSpInit() {
field_0x3588 = l_halfAtnWaitBaseAnime;
field_0x3198 = 0;
field_0x300c = 0;
field_0x300e = (0x1E - mDemo.getDemoMode()) != 0;
field_0x3010 = 0;
field_0x300e.x = (0x1E - mDemo.getDemoMode()) != 0;
field_0x300e.y = 0;
return 1;
}
@@ -1965,10 +1970,10 @@ int daAlink_c::procSwordUnequipSp() {
daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl;
if (field_0x300e != 0) {
if (field_0x300e.x != 0) {
field_0x2f99 = 4;
} else {
field_0x300e = 1;
field_0x300e.x = 1;
}
i_onEndResetFlg0(ERFLG0_UNK_8000000);
@@ -1977,8 +1982,8 @@ int daAlink_c::procSwordUnequipSp() {
i_onEndResetFlg1(ERFLG1_GANON_FINISH);
}
if (field_0x3010 == 0 && mDemo.getDemoMode() == 0x1E && mDemo.getParam1() == 1) {
field_0x3010 = 1;
if (field_0x300e.y == 0 && mDemo.getDemoMode() == 0x1E && mDemo.getParam1() == 1) {
field_0x300e.y = 1;
setFaceBasicBck(0x149);
setFaceBasicBtp(0x3E1);
}
+5
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_damage.inc
* Player Damage action handling
*/
/* 800D6D94-800D6DA4 0D16D4 0010+00 0/0 0/0 2/2 .text getFreezeR__9daAlink_cCFv */
s16 daAlink_c::getFreezeR() const {
return daAlinkHIO_damage_c0::m.mFreezeR;
+76 -26
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_demo.inc
* Player Cutscene / Event action handling
*/
#include "f_op/f_op_msg_mng.h"
/* 80115C20-80115C50 110560 0030+00 72/72 0/0 0/0 .text checkEventRun__9daAlink_cCFv */
@@ -263,7 +268,7 @@ BOOL daAlink_c::checkEndMessage(u32 param_0) {
/* 80118840-801188B0 113180 0070+00 1/1 0/0 0/0 .text setDemoRightHandIndex__9daAlink_cFUs */
u8 daAlink_c::setDemoRightHandIndex(u16 param_0) {
if (param_0 == 0xFD) {
field_0x3010 = 1;
field_0x300e.y = 1;
return 6;
} else if (param_0 == 0xFC) {
field_0x2fab |= 0x10;
@@ -535,7 +540,7 @@ int daAlink_c::procCoToolDemoInit() {
mNowAnmPackUpper[1].setAnmTransform(NULL);
field_0x3198 = 0;
field_0x3010 = 0;
field_0x300e.y = 0;
field_0x2fab = 0;
deleteEquipItem(FALSE, TRUE);
mUnderAnmHeap[0].setBufferSize(0x10800);
@@ -646,7 +651,7 @@ int daAlink_c::procCoUnequip() {
void daAlink_c::setGetSubBgm(int param_0) {
u32 se_type = getSeType[param_0];
if (se_type == 3 && field_0x3010 == 0) {
if (se_type == 3 && field_0x300e.y == 0) {
se_type = 7;
}
@@ -931,7 +936,7 @@ int daAlink_c::procCoLookAround() {
if (checkAnmEnd(frame_ctrl)) {
dComIfGp_evmng_cutEnd(field_0x3184);
} else if (field_0x300e != 0 && frame_ctrl->checkPass(lit_7808)) {
} else if (field_0x300e.x != 0 && frame_ctrl->checkPass(lit_7808)) {
voiceStart(Z2SE_AL_V_ENTRANCE);
}
@@ -1066,7 +1071,7 @@ int daAlink_c::procHandPatInit() {
setOldRootQuaternion(0, -0x8000, 0);
shape_angle.y += 0x8000;
field_0x300c = 0;
field_0x300e = 0;
field_0x300e.x = 0;
return 1;
}
@@ -1310,7 +1315,7 @@ int daAlink_c::procWolfSnowEscapeInit() {
field_0x3588 = l_wolfBaseAnime;
field_0x3478 = lit_37528;
field_0x300c = 0;
field_0x300e = 0;
field_0x300e.x = 0;
mNormalSpeed = lit_6845;
return 1;
}
@@ -1338,8 +1343,8 @@ int daAlink_c::procZoraMoveInit() {
setSpecialGravity(tmp_0, mMaxFallSpeed, 0);
deleteEquipItem(FALSE, TRUE);
field_0x3010 = 5000;
field_0x3012 = 0;
field_0x300e.y = 5000;
field_0x300e.z = 0;
field_0x384c = (cXyz*)&l_boarBaseAnime;
return 1;
}
@@ -1393,18 +1398,18 @@ int daAlink_c::procTradeItemOutInit() {
field_0x300c = 0;
}
field_0x300e = 0;
field_0x300e.x = 0;
dComIfGp_setPlayerStatus0(0, 0x10);
field_0x3010 = 1;
field_0x300e.y = 1;
if (mDemo.getParam0() != 1) {
if (mDemo.getParam0() == 2) {
if (checkLetterItem(mDemo.getParam1())) {
field_0x3010 = 0;
field_0x300e.y = 0;
}
} else {
if (checkLetterItem(dComIfGp_event_getPreItemNo())) {
field_0x3010 = 0;
field_0x300e.y = 0;
}
}
}
@@ -1628,7 +1633,7 @@ int daAlink_c::procMasterSwordPullInit() {
setSingleAnimeBase(ANM_DEMO_MASTER_SWORD_PULL);
voiceStart(Z2SE_AL_V_MSTR_SW_PULLOUT);
field_0x3010 = 0;
field_0x300e.y = 0;
return 1;
}
@@ -1643,9 +1648,9 @@ int daAlink_c::procMasterSwordPull() {
} else if (frame_ctrl->getFrame() >= lit_8780) {
field_0x2f93 = 10;
} else if (frame_ctrl->getFrame() >= lit_7710) {
field_0x3010 = 0;
field_0x300e.y = 0;
} else if (frame_ctrl->getFrame() >= lit_6040) {
field_0x3010 = 4;
field_0x300e.y = 4;
}
return 1;
@@ -1707,10 +1712,10 @@ int daAlink_c::procDungeonWarpInit() {
}
field_0x300c = 0;
field_0x3012 = 0;
field_0x300e.z = 0;
setSpecialGravity(FLOAT_LABEL(lit_6108), mMaxFallSpeed, 0);
field_0x300e = 0;
field_0x3010 = 0;
field_0x300e.x = 0;
field_0x300e.y = 0;
return 1;
}
@@ -1729,15 +1734,15 @@ int daAlink_c::procDungeonWarp() {
f32 sin = cM_ssin(field_0x300c);
shape_angle.y += (s16)(14336.0f * sin);
field_0x300e = 8.0f * sin + 24.0f * (1.0f - mScale.x);
field_0x300e.x = 8.0f * sin + 24.0f * (1.0f - mScale.x);
if (field_0x3012 != 0) {
if (field_0x300e.z != 0) {
return 1;
} else {
if (field_0x300c == 0x4000) {
if (field_0x3010 == 0) {
if (field_0x300e.y == 0) {
dComIfGp_particle_set(0xA61, &current.pos, &mTevStr, NULL, NULL);
field_0x3010 = 1;
field_0x300e.y = 1;
}
cLib_addCalc(&mScale.x, 0.0f, 0.5f, 0.4f, 0.005f);
@@ -1755,7 +1760,7 @@ int daAlink_c::procDungeonWarp() {
dMeter2Info_warpInProc();
}
field_0x3012 = 1;
field_0x300e.z = 1;
}
current.pos.y += 5.0f;
field_0x2b98 = (1.0f - mScale.y) * 100.0f;
@@ -1880,7 +1885,7 @@ void daAlink_c::dungeonReturnWarp() {
/* 8011F8B8-8011F9EC 11A1F8 0134+00 1/0 0/0 0/0 .text skipPortalObjWarp__9daAlink_cFv */
void daAlink_c::skipPortalObjWarp() {
if (mProcID == PROC_WARP && field_0x300e <= 0) {
if (mProcID == PROC_WARP && field_0x300e.x <= 0) {
return;
}
@@ -1897,7 +1902,7 @@ void daAlink_c::skipPortalObjWarp() {
}
if (mProcID == PROC_WARP) {
field_0x300e = -1;
field_0x300e.x = -1;
}
}
@@ -1974,4 +1979,49 @@ asm int daAlink_c::procCoWarp() {
nofralloc
#include "asm/d/a/d_a_alink/procCoWarp__9daAlink_cFv.s"
}
#pragma pop
#pragma pop
/* 80120440-80120474 11AD80 0034+00 1/0 0/0 0/0 .text commonWaitTurnInit__9daAlink_cFv */
void daAlink_c::commonWaitTurnInit() {
if (i_checkWolf()) {
procWolfWaitTurnInit();
} else {
procWaitTurnInit();
}
}
/* 80120474-80120500 11ADB4 008C+00 2/1 0/0 0/0 .text commonGrabPutInit__9daAlink_cFv */
int daAlink_c::commonGrabPutInit() {
if (mGrabItemAcKeep.getActor() == NULL) {
if (mProcID != PROC_GRAB_STAND &&
(mProcID != PROC_WOLF_GRAB_PUT || !(mUnderFrameCtrl[0].getFrame() < field_0x3478)))
{
dComIfGp_evmng_cutEnd(field_0x3184);
return 1;
}
}
if (i_checkWolf()) {
return procWolfGrabPutInit();
}
return procGrabPutInit();
}
/* 80120500-80120534 11AE40 0034+00 3/3 0/0 0/0 .text commonLargeDamageUpInit__9daAlink_cFiiss */
void daAlink_c::commonLargeDamageUpInit(int param_0, int param_1, s16 param_2, s16 param_3) {
if (i_checkWolf()) {
procWolfLargeDamageUpInit(param_0, param_1, param_2, param_3);
} else {
procLargeDamageUpInit(param_0, param_1, param_2, param_3);
}
}
/* 80120534-80120580 11AE74 004C+00 4/4 0/0 0/0 .text commonFallInit__9daAlink_cFi */
void daAlink_c::commonFallInit(int param_0) {
if (i_checkWolf()) {
procWolfFallInit(param_0, daAlinkHIO_wlAutoJump_c0::m.field_0x54);
} else {
procFallInit(param_0, daAlinkHIO_autoJump_c0::m.mFallInterpolation);
}
}
+5
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_effect.inc
* Player Particle Effect handling
*/
/* 80120580-80120634 11AEC0 00B4+00 21/21 0/0 0/0 .text
* setEmitter__9daAlink_cFPUlUsPC4cXyzPC5csXyz */
// matches with literal
+146 -1
View File
@@ -837,4 +837,149 @@ asm int daAlink_c::procPullMove() {
nofralloc
#include "asm/d/a/d_a_alink/procPullMove__9daAlink_cFv.s"
}
#pragma pop
#pragma pop
/* 800E91B0-800E91C4 0E3AF0 0014+00 1/1 0/0 0/0 .text daAlink_searchGoat__FP10fopAc_ac_cPv */
static fopAc_ac_c* daAlink_searchGoat(fopAc_ac_c* i_actor, void*) {
if (fopAcM_GetName(i_actor) == PROC_COW) {
return i_actor;
}
return NULL;
}
/* 800E91C4-800E9210 0E3B04 004C+00 1/0 0/0 0/0 .text cancelGoronThrowEvent__9daAlink_cFv
*/
void daAlink_c::cancelGoronThrowEvent() {
if (mProcID == PROC_GOAT_CATCH && field_0x300e.z == 0) {
field_0x300e.z = 1;
i_dComIfGp_event_reset();
}
}
/* 800E9210-800E9344 0E3B50 0134+00 2/2 0/0 0/0 .text
* setGoatStopGameFail__9daAlink_cFP10fopAc_ac_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::setGoatStopGameFail(fopAc_ac_c* param_0) {
nofralloc
#include "asm/d/a/d_a_alink/setGoatStopGameFail__9daAlink_cFP10fopAc_ac_c.s"
}
#pragma pop
/* 800E9344-800E9434 0E3C84 00F0+00 1/1 0/0 0/0 .text procGoatMoveInit__9daAlink_cFv */
int daAlink_c::procGoatMoveInit() {
if (!commonProcInitNotSameProc(PROC_GOAT_MOVE)) {
return 0;
}
if (checkZeroSpeedF()) {
onModeFlg(1);
}
mNormalSpeed = FLOAT_LABEL(lit_6108);
field_0x37c8 = current.pos;
field_0x2f98 = 3;
current.angle.y = shape_angle.y + -0x4000;
field_0x594 = daAlinkHIO_atnMove_c0::m.mMaxSpeed;
setSingleAnimeBase(ANM_ATN_COW);
field_0x300c = 0;
fopAc_ac_c* goat_p = (fopAc_ac_c*)fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchGoat, NULL);
if (goat_p != NULL) {
field_0x280c.setData(goat_p);
}
field_0x300e.x = 0;
deleteEquipItem(FALSE, FALSE);
return 1;
}
/* 800E9434-800E9894 0E3D74 0460+00 1/0 0/0 0/0 .text procGoatMove__9daAlink_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int daAlink_c::procGoatMove() {
nofralloc
#include "asm/d/a/d_a_alink/procGoatMove__9daAlink_cFv.s"
}
#pragma pop
/* 800E9894-800E9BD0 0E41D4 033C+00 3/3 0/0 0/0 .text procGoatCatchInit__9daAlink_cFP10fopAc_ac_cf
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int daAlink_c::procGoatCatchInit(fopAc_ac_c* param_0, f32 param_1) {
nofralloc
#include "asm/d/a/d_a_alink/procGoatCatchInit__9daAlink_cFP10fopAc_ac_cf.s"
}
#pragma pop
/* 800E9BD0-800EA2A8 0E4510 06D8+00 1/0 0/0 0/0 .text procGoatCatch__9daAlink_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int daAlink_c::procGoatCatch() {
nofralloc
#include "asm/d/a/d_a_alink/procGoatCatch__9daAlink_cFv.s"
}
#pragma pop
/* 800EA2A8-800EA3AC 0E4BE8 0104+00 2/2 0/0 0/0 .text procGoatStrokeInit__9daAlink_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int daAlink_c::procGoatStrokeInit() {
nofralloc
#include "asm/d/a/d_a_alink/procGoatStrokeInit__9daAlink_cFv.s"
}
#pragma pop
/* 800EA3AC-800EA3F4 0E4CEC 0048+00 1/0 0/0 0/0 .text procGoatStroke__9daAlink_cFv */
int daAlink_c::procGoatStroke() {
if (mUnderFrameCtrl[0].checkAnmEnd()) {
checkNextAction(0);
}
return 1;
}
/* 800EA3F4-800EA4CC 0E4D34 00D8+00 2/2 0/0 0/0 .text procGoronMoveInit__9daAlink_cFv */
int daAlink_c::procGoronMoveInit() {
if (mEquipItem != NO_ITEM) {
return procPreActionUnequipInit(PROC_GORON_MOVE, NULL);
}
if (!commonProcInitNotSameProc(PROC_GORON_MOVE)) {
return 0;
}
mCargoCarryAcKeep.setActor();
if (mCargoCarryAcKeep.getActor() == NULL) {
offGoronSideMove();
return 0;
}
mNormalSpeed = FLOAT_LABEL(lit_6108);
field_0x2f98 = 3;
current.angle.y = shape_angle.y + -0x4000;
field_0x594 = daAlinkHIO_atnMove_c0::m.mMaxSpeed;
setSingleAnimeBase(ANM_ATN_RIGHT);
field_0x300c = 1;
field_0x300e.x = 0;
return 1;
}
/* 800EA4CC-800EA844 0E4E0C 0378+00 1/0 0/0 0/0 .text procGoronMove__9daAlink_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int daAlink_c::procGoronMove() {
nofralloc
#include "asm/d/a/d_a_alink/procGoronMove__9daAlink_cFv.s"
}
#pragma pop
+5
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_guard.inc
* Player Shield action handling
*/
/* 800DC548-800DC5A4 0D6E88 005C+00 13/13 0/0 0/0 .text checkEnemyGroup__9daAlink_cFP10fopAc_ac_c
*/
BOOL daAlink_c::checkEnemyGroup(fopAc_ac_c* i_actor) {
+12 -7
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_hang.inc
* Player hang / climb action handling
*/
#include "rel/d/a/b/d_a_b_ob/d_a_b_ob.h"
#include "rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang.h"
@@ -521,10 +526,10 @@ int daAlink_c::procBossBodyHangInit(fopAc_ac_c* param_0) {
speed.y = FLOAT_LABEL(lit_6108);
field_0x300c = 0;
field_0x300e = 0;
field_0x3010 = 0;
field_0x300e.x = 0;
field_0x300e.y = 0;
field_0x3008 = 0;
field_0x3012 = 0;
field_0x300e.z = 0;
field_0x3080 = 0;
field_0x280c.setData(param_0);
@@ -687,7 +692,7 @@ int daAlink_c::procLadderUpEndInit(int param_0) {
field_0x30a0 = -0x0800;
field_0x33f4 = lit_6041;
field_0x300c = 1;
field_0x3010 = 1;
field_0x300e.y = 1;
dComIfGp_setPlayerStatus0(0, 0x2000000);
return 1;
}
@@ -707,7 +712,7 @@ int daAlink_c::procLadderUpEnd() {
{
if (frame_ctrl->getFrame() >= lit_15341) {
field_0x300c = 0;
field_0x3010 = 0;
field_0x300e.y = 0;
} else if (frame_ctrl->getFrame() >= lit_17382) {
field_0x30a0 = 0;
field_0x33f4 = FLOAT_LABEL(lit_6108);
@@ -745,7 +750,7 @@ int daAlink_c::procLadderDownStart() {
}
} else if (frame_ctrl->getFrame() >= lit_10286) {
field_0x300c = 1;
field_0x3010 = 1;
field_0x300e.y = 1;
}
return 1;
@@ -765,7 +770,7 @@ int daAlink_c::procLadderDownEndInit(int param_0) {
field_0x30a0 = 0x2800;
field_0x33f4 = lit_6040;
field_0x300c = 0;
field_0x3010 = 0;
field_0x300e.y = 0;
dComIfGp_setPlayerStatus0(0, 0x2000000);
return 1;
}
+1594 -137
View File
File diff suppressed because it is too large Load Diff
+5
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_horse.inc
* Player Epona riding handling
*/
/* 800EC724-800EC758 0E7064 0034+00 3/3 0/0 0/0 .text daAlink_searchBoar__FP10fopAc_ac_cPv */
#pragma push
#pragma optimization_level 0
+5
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_hvyboots.inc
* Player Iron Boots action handling
*/
/* 800E23FC-800E243C 0DCD3C 0040+00 6/6 0/0 0/0 .text concatMagneBootMtx__9daAlink_cFv */
void daAlink_c::concatMagneBootMtx() {
if (i_checkMagneBootsOn()) {
+14 -9
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_iceleaf.inc
* Player Ice Leaf surfing handling
*/
/* 80105A84-80105A98 1003C4 0014+00 1/1 0/0 0/0 .text daAlink_searchIceLeaf__FP10fopAc_ac_cPv */
static fopAc_ac_c* daAlink_searchIceLeaf(fopAc_ac_c* i_actor, void* param_1) {
if (fopAcM_GetName(i_actor) == PROC_Obj_IceLeaf) {
@@ -156,8 +161,8 @@ int daAlink_c::procBoardRowInit() {
setSingleAnimeBaseSpeed(ANM_RIDE_KICK, getBoardRowAnmSpeed(), daAlinkHIO_board_c0::m.mPushInterpolation);
i_onResetFlg1(0x40);
field_0x3008 = 4;
field_0x3010 = 1;
field_0x3012 = 0;
field_0x300e.y = 1;
field_0x300e.z = 0;
return 1;
}
@@ -177,8 +182,8 @@ int daAlink_c::procBoardTurnInit() {
commonProcInit(PROC_BOARD_TURN);
setSingleAnime(ANM_RIDE_JUMP, FLOAT_LABEL(lit_6108), lit_6040, daAlinkHIO_board_c0::m.mAirborneAnm.mEndFrame, lit_6109);
mNormalSpeed = FLOAT_LABEL(lit_6108);
field_0x3010 = shape_angle.y + 0x8000;
field_0x3012 = 0;
field_0x300e.y = shape_angle.y + 0x8000;
field_0x300e.z = 0;
field_0x300a = 0;
return 1;
@@ -199,7 +204,7 @@ asm int daAlink_c::procBoardTurn() {
int daAlink_c::procBoardJumpInit(f32 param_0, int param_1) {
commonProcInit(PROC_BOARD_JUMP);
field_0x3008 = 0;
field_0x3012 = 1;
field_0x300e.z = 1;
setSingleAnime(ANM_RIDE_JUMP, FLOAT_LABEL(lit_6108),
daAlinkHIO_board_c0::m.mAirborneAnm.mStartFrame,
@@ -210,7 +215,7 @@ int daAlink_c::procBoardJumpInit(f32 param_0, int param_1) {
speed.y = cLib_minMaxLimit(param_0, daAlinkHIO_board_c0::m.mMinJumpSpeedY, daAlinkHIO_board_c0::m.mMaxJumpSpeedY);
}
field_0x3010 = 0;
field_0x300e.y = 0;
seStartOnlyReverb(Z2SE_AL_SNOBO_JUMP);
return 1;
}
@@ -235,12 +240,12 @@ int daAlink_c::procBoardJump() {
if (!i_checkModeFlg(2)) {
setBoardLandAnime();
procBoardWaitInit(NULL);
} else if (field_0x3012 != 0 && field_0x3010 == 0 && field_0x2060->getOldFrameRate() < lit_8782) {
} else if (field_0x300e.z != 0 && field_0x300e.y == 0 && field_0x2060->getOldFrameRate() < lit_8782) {
setSingleAnime(ANM_RIDE_JUMP, daAlinkHIO_board_c0::m.mAirborneAnm.mSpeed,
daAlinkHIO_board_c0::m.mAirborneAnm.mStartFrame,
daAlinkHIO_board_c0::m.mAirborneAnm.mEndFrame,
lit_6041);
field_0x3010 = 1;
field_0x300e.y = 1;
}
}
@@ -293,7 +298,7 @@ int daAlink_c::procBoardCutInit() {
setCommonBoardAnime(0);
setCutDash(1, var_r31);
field_0x3012 = 0;
field_0x300e.z = 0;
return 1;
}
+5
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_ironball.inc
* Player Ball & Chain action handling
*/
/* 8011243C-80112458 10CD7C 001C+00 1/0 0/0 0/0 .text getIronBallCenterPos__9daAlink_cFv
*/
cXyz* daAlink_c::getIronBallCenterPos() {
+6 -1
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_kandelaar.inc
* Player Lantern action handling
*/
/* 80110654-80110668 10AF94 0014+00 1/1 0/0 0/0 .text daAlink_searchTagKandelaar__FP10fopAc_ac_cPv
*/
static fopAc_ac_c* daAlink_searchTagKandelaar(fopAc_ac_c* i_actor, void* param_1) {
@@ -158,7 +163,7 @@ asm void daAlink_c::setKandelaarModel() {
void daAlink_c::resetOilBottleModel() {
deleteEquipItem(0, 1);
if (field_0x300e != 0) {
if (field_0x300e.x != 0) {
setKandelaarModel();
mEquipItem = KANTERA;
}
+1286 -139
View File
File diff suppressed because it is too large Load Diff
+15 -10
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_spinner.inc
* Player Spinner action handling
*/
#include "rel/d/a/d_a_spinner/d_a_spinner.h"
/* 8010D93C-8010D94C 10827C 0010+00 0/0 0/0 1/1 .text getSpinnerGravity__9daAlink_cCFv */
@@ -199,11 +204,11 @@ int daAlink_c::procSpinnerWaitInit() {
mNormalSpeed = 0.0f;
field_0x300c = 0;
field_0x300e = shape_angle.y;
field_0x3010 = 0;
field_0x300e.x = shape_angle.y;
field_0x300e.y = 0;
field_0x3198 = ANM_RIDE_CROUCH;
field_0x33b0 = 70.0f;
field_0x3012 = 0;
field_0x300e.z = 0;
field_0x37a4 = mRideAcKeep.getActor()->current.pos;
return 1;
@@ -253,7 +258,7 @@ int daAlink_c::procSpinnerWait() {
}
current.angle.y = shape_angle.y;
field_0x300e = shape_angle.y;
field_0x300e.x = shape_angle.y;
}
} else {
if (checkSetItemTrigger(SPINNER) || swordSwingTrigger() || itemSetBtn == 2) {
@@ -280,7 +285,7 @@ int daAlink_c::procSpinnerWait() {
current.angle.y = spinner->current.angle.y;
if (spinner->checkSpinnerTagIntoIncRot()) {
field_0x3012 = 1;
field_0x300e.z = 1;
setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_CONTINUATION);
if (field_0x3198 != ANM_RIDE_KICK && field_0x2060->getOldFrameRate() < 0.01f) {
@@ -290,7 +295,7 @@ int daAlink_c::procSpinnerWait() {
fopAcM_seStartCurrent(spinner, Z2SE_OBJ_SPNR_SW_PUSH, 0);
}
} else if (spinner->checkSpinnerTagInto()) {
if (field_0x3012 != 0) {
if (field_0x300e.z != 0) {
setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_CONTINUATION);
} else {
setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_DEFAULT);
@@ -307,18 +312,18 @@ int daAlink_c::procSpinnerWait() {
setSingleAnime(ANM_RIDE_JUMP, 0.0f, daAlinkHIO_board_c0::m.mAirborneAnm.mStartFrame,
daAlinkHIO_board_c0::m.mAirborneAnm.mEndFrame,
daAlinkHIO_board_c0::m.mAirborneAnm.mInterpolation);
field_0x3010 = 0;
field_0x300e.y = 0;
} else if (field_0x3198 == ANM_RIDE_JUMP) {
if (!spinner->getJumpFlg()) {
setSingleAnime(ANM_RIDE_JUMP_LAND, daAlinkHIO_board_c0::m.mLandAnm.mSpeed,
daAlinkHIO_board_c0::m.mLandAnm.mStartFrame, 16,
daAlinkHIO_board_c0::m.mLandAnm.mInterpolation);
field_0x3198 = ANM_RIDE_JUMP_LAND;
} else if (field_0x3010 == 0 && field_0x2060->getOldFrameRate() < 0.01f) {
} else if (field_0x300e.y == 0 && field_0x2060->getOldFrameRate() < 0.01f) {
setSingleAnime(ANM_RIDE_JUMP, daAlinkHIO_board_c0::m.mAirborneAnm.mSpeed,
daAlinkHIO_board_c0::m.mAirborneAnm.mStartFrame,
daAlinkHIO_board_c0::m.mAirborneAnm.mEndFrame, -1.0f);
field_0x3010 = 1;
field_0x300e.y = 1;
}
} else if ((field_0x3198 == ANM_RIDE_JUMP_LAND && frameCtrl->checkAnmEnd()) ||
(field_0x3198 != ANM_RIDE_JUMP_LAND && field_0x3198 != ANM_RIDE_CROUCH)) {
@@ -329,7 +334,7 @@ int daAlink_c::procSpinnerWait() {
}
setSpinnerSyncPos();
shape_angle.y = field_0x300e;
shape_angle.y = field_0x300e.x;
return 1;
}
+6 -1
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_sumou.inc
* Player Sumo action handling
*/
/* 800EA844-800EA8D0 0E5184 008C+00 5/5 0/0 0/0 .text checkSumouVsActor__9daAlink_cFv */
BOOL daAlink_c::checkSumouVsActor() {
mCargoCarryAcKeep.setActor();
@@ -47,7 +52,7 @@ int daAlink_c::procSumouReadyInit() {
field_0x2f99 = 4;
mSpecialMode = 1;
field_0x300c = 0;
field_0x300e = 0;
field_0x300e.x = 0;
deleteEquipItem(0, 1);
if (mThrowBoomerangAcKeep.getActor() != NULL) {
+16 -11
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_link.inc
* Player Swim action handling
*/
#include "f_op/f_op_kankyo_mng.h"
/* 80101890-801018E4 0FC1D0 0054+00 6/6 0/0 0/0 .text checkZoraWearMaskDraw__9daAlink_cFv
@@ -390,7 +395,7 @@ int daAlink_c::procSwimUpInit() {
setSingleAnimeParam(ANM_SWIM_RESURFACE, &daAlinkHIO_swim_c0::m.mResurfaceAnm);
dComIfGp_setPlayerStatus0(0, 0x100000);
field_0x3008 = 0;
field_0x3010 = 0;
field_0x300e.y = 0;
field_0x3480 = daAlinkHIO_swim_c0::m.mInitHeight;
field_0x3000 = 0;
@@ -443,10 +448,10 @@ int daAlink_c::procSwimWaitInit(int param_0) {
if (param_0) {
seStartMapInfo(Z2SE_AL_INTO_WATER);
field_0x3010 = 0;
field_0x300e.y = 0;
field_0x3480 = daAlinkHIO_swim_c0::m.mInitHeight;
} else if (!mode_40000) {
field_0x3010 = 0;
field_0x300e.y = 0;
field_0x3480 = daAlinkHIO_swim_c0::m.mInitHeight;
}
@@ -547,7 +552,7 @@ int daAlink_c::procSwimMoveInit() {
if (!mode_40000) {
field_0x3480 = daAlinkHIO_swim_c0::m.mInitHeight;
field_0x3010 = 0;
field_0x300e.y = 0;
}
if (proc_swim_dive || proc_dive_jump) {
@@ -555,8 +560,8 @@ int daAlink_c::procSwimMoveInit() {
if (proc_dive_jump) {
field_0x3080 = 0x2800;
field_0x300e = field_0x3080;
field_0x3010 = 1;
field_0x300e.x = field_0x3080;
field_0x300e.y = 1;
setOldRootQuaternion(-field_0x3080, 0, 0);
}
} else {
@@ -636,7 +641,7 @@ int daAlink_c::procSwimDiveInit() {
field_0x2f99 = 0x10;
field_0x3588 = l_waitBaseAnime;
field_0x3480 = daAlinkHIO_swim_c0::m.mInitHeight;
field_0x3010 = 0;
field_0x300e.y = 0;
dComIfGp_setPlayerStatus0(0, 0x100000);
field_0x3000 = 30;
@@ -691,8 +696,8 @@ int daAlink_c::procSwimDive() {
if (field_0x300c != 0) {
field_0x3080 = 0x2800;
field_0x300e = field_0x3080;
field_0x3010 = 1;
field_0x300e.x = field_0x3080;
field_0x300e.y = 1;
}
setOldRootQuaternion(-field_0x3080, 0, 0);
@@ -743,7 +748,7 @@ int daAlink_c::procSwimHookshotSubjectInit() {
field_0x594 = getSwimFrontMaxSpeed();
field_0x3480 = daAlinkHIO_swim_c0::m.mInitHeight;
field_0x3010 = 0;
field_0x300e.y = 0;
field_0x30d0 = 0;
setHookshotReadyMaterial();
@@ -821,7 +826,7 @@ int daAlink_c::procSwimHookshotMoveInit() {
}
field_0x3480 = daAlinkHIO_swim_c0::m.mInitHeight;
field_0x3010 = 0;
field_0x300e.y = 0;
field_0x30d0 = 0;
dComIfGp_setPlayerStatus0(0, 0x104000);
+191
View File
@@ -1,3 +1,194 @@
/**
* d_a_alink_swindow.inc
* Pause Menu Player Display
*/
/* 8013FF28-8013FF90 13A868 0068+00 2/2 0/0 0/0 .text setArcName__9daAlink_cFi */
void daAlink_c::setArcName(int isWolf) {
if (isWolf) {
mArcName = l_wArcName;
return;
}
if (checkCasualWearFlg()) {
mArcName = l_bArcName;
return;
}
if (checkZoraWearFlg()) {
mArcName = l_zArcName;
return;
}
if (checkMagicArmorWearFlg()) {
mArcName = l_mArcName;
return;
}
mArcName = l_kArcName;
}
inline bool checkCarvingWoodShieldEquip() {
return dComIfGs_getSelectEquipShield() == WOOD_SHIELD;
}
inline bool checkShopWoodShieldEquip() {
return dComIfGs_getSelectEquipShield() == SHIELD;
}
/* 8013FF90-8013FFD8 13A8D0 0048+00 2/2 0/0 0/0 .text setShieldArcName__9daAlink_cFv */
void daAlink_c::setShieldArcName() {
if (checkCarvingWoodShieldEquip() || !i_checkShieldGet()) {
mShieldArcName = l_cWShdArcName;
return;
}
if (checkShopWoodShieldEquip()) {
mShieldArcName = l_sWShdArcName;
return;
}
mShieldArcName = l_hyShdArcName;
}
/* 8013FFD8-80140038 13A918 0060+00 1/1 0/0 0/0 .text setOriginalHeap__9daAlink_cFPP10JKRExpHeapUl
*/
void daAlink_c::setOriginalHeap(JKRExpHeap** p_heap, u32 param_1) {
if (*p_heap == NULL) {
*p_heap =
JKRExpHeap::create((param_1 + 0xF & 0xFFFFFFF0) + 0xA0, mDoExt_getGameHeap(), true);
}
}
/* 80140038-80140064 13A978 002C+00 1/0 0/0 0/0 .text setClothesChange__9daAlink_cFi */
void daAlink_c::setClothesChange(int param_0) {
if (i_checkWolf()) {
return;
}
mClothesChangeWaitTimer = 4;
if (param_0 == 0) {
return;
}
i_onNoResetFlg2(FLG2_UNK_200000);
}
/* 80140064-80140070 13A9A4 000C+00 0/0 1/1 0/0 .text setShieldChange__9daAlink_cFv */
void daAlink_c::setShieldChange() {
mShieldChangeWaitTimer = 4;
}
/* 80140070-801401F8 13A9B0 0188+00 3/3 0/0 0/0 .text loadModelDVD__9daAlink_cFv */
int daAlink_c::loadModelDVD() {
if (mClothesChangeWaitTimer != 0) {
mClothesChangeWaitTimer--;
if (mClothesChangeWaitTimer == 2) {
mEyeHL1.remove();
mEyeHL2.remove();
field_0x79c = NULL;
mpWlMidnaHatModel = NULL;
field_0x7a4 = NULL;
mpWlMidnaHairModel = NULL;
if (!i_checkNoResetFlg2(FLG2_UNK_280000)) {
dComIfG_resDelete(&mPhaseReq, mArcName);
cPhs_Reset(&mPhaseReq);
field_0x0638->freeAll();
if (mProcID == PROC_METAMORPHOSE || mProcID == PROC_METAMORPHOSE_ONLY) {
setArcName(!i_checkWolf());
} else {
setArcName(i_checkWolf());
}
}
} else if (mClothesChangeWaitTimer == 1) {
if (i_checkNoResetFlg2(FLG2_UNK_280000)) {
mClothesChangeWaitTimer = 0;
changeLink(1);
} else {
if (dComIfG_resLoad(&mPhaseReq, mArcName, field_0x0638) == cPhs_COMPLEATE_e) {
mClothesChangeWaitTimer = 0;
if (mProcID == PROC_METAMORPHOSE || mProcID == PROC_METAMORPHOSE_ONLY) {
if (i_checkWolf()) {
changeLink(0);
} else {
changeWolf();
}
} else {
changeLink(1);
}
return 1;
}
mClothesChangeWaitTimer = 2;
}
}
} else {
return 1;
}
return 0;
}
/* 801401F8-80140274 13AB38 007C+00 2/2 0/0 0/0 .text setShieldModel__9daAlink_cFv */
void daAlink_c::setShieldModel() {
JKRHeap* heap = mAnmHeap4.setAnimeHeap();
mShieldModel = initModel((J3DModelData*)dComIfG_getObjectRes(mShieldArcName, 3), 0);
mDoExt_setCurrentHeap(heap);
}
/* 80140274-80140338 13ABB4 00C4+00 2/2 0/0 0/0 .text loadShieldModelDVD__9daAlink_cFv */
int daAlink_c::loadShieldModelDVD() {
if (mShieldChangeWaitTimer != 0) {
mShieldChangeWaitTimer--;
if (mShieldChangeWaitTimer == 2) {
mShieldModel = NULL;
dComIfG_resDelete(&mShieldPhaseReq, mShieldArcName);
cPhs_Reset(&mShieldPhaseReq);
field_0x0648->freeAll();
setShieldArcName();
} else if (mShieldChangeWaitTimer == 1) {
if (dComIfG_resLoad(&mShieldPhaseReq, mShieldArcName, field_0x0648) == cPhs_COMPLEATE_e)
{
mShieldChangeWaitTimer = 0;
setShieldModel();
} else {
mShieldChangeWaitTimer = 2;
}
}
} else {
return 1;
}
return 0;
}
/* 80140338-80140550 13AC78 0218+00 3/3 0/0 0/0 .text changeModelDataDirect__9daAlink_cFi
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::changeModelDataDirect(int param_0) {
nofralloc
#include "asm/d/a/d_a_alink/changeModelDataDirect__9daAlink_cFi.s"
}
#pragma pop
/* 80140550-801406A8 13AE90 0158+00 3/3 0/0 0/0 .text changeModelDataDirectWolf__9daAlink_cFi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::changeModelDataDirectWolf(int param_0) {
nofralloc
#include "asm/d/a/d_a_alink/changeModelDataDirectWolf__9daAlink_cFi.s"
}
#pragma pop
/* 801406A8-80140888 13AFE8 01E0+00 0/0 1/1 0/0 .text initStatusWindow__9daAlink_cFv */
// regalloc
#ifdef NONMATCHING
File diff suppressed because it is too large Load Diff
+12 -7
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_whistle.inc
* Player Horse / Hawk Grass Whistle action handling
*/
#include "rel/d/a/obj/d_a_obj_yobikusa/d_a_obj_yobikusa.h"
/* 8011174C-80111770 10C08C 0024+00 1/1 0/0 0/0 .text daAlink_searchWhistle__FP10fopAc_ac_cPv */
@@ -68,9 +73,9 @@ int daAlink_c::procGrassWhistleGetInit() {
daObjYobikusa_c* yobikusa = (daObjYobikusa_c*)field_0x27f4;
field_0x300c = yobikusa->getType();
field_0x300e = yobikusa->getPathID();
field_0x3010 = yobikusa->isPlayerCorrect();
field_0x3012 = yobikusa->shape_angle.y + 0x8000;
field_0x300e.x = yobikusa->getPathID();
field_0x300e.y = yobikusa->isPlayerCorrect();
field_0x300e.z = yobikusa->shape_angle.y + 0x8000;
field_0x37c8.set(yobikusa->current.pos.x + cM_ssin(yobikusa->shape_angle.y) * 50.0f,
yobikusa->current.pos.y + 50.0f,
yobikusa->current.pos.z + cM_scos(yobikusa->shape_angle.y) * 50.0f);
@@ -94,7 +99,7 @@ int daAlink_c::procGrassWhistleGet() {
daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl;
if (frameCtrl->checkAnmEnd()) {
procGrassWhistleWaitInit(field_0x300c, field_0x300e, field_0x3010, field_0x3012, &field_0x37c8);
procGrassWhistleWaitInit(field_0x300c, field_0x300e.x, field_0x300e.y, field_0x300e.z, &field_0x37c8);
} else if (mEquipItem == NO_ITEM && frameCtrl->getFrame() >= lit_7710) {
setGrassWhistleModel(field_0x300c);
@@ -135,11 +140,11 @@ int daAlink_c::procCoHorseCallWaitInit(int param_0) {
commonProcInit(PROC_HORSE_CALL_WAIT);
if (param_0 == 4) {
field_0x3010 = 2;
field_0x300e.y = 2;
} else if (param_0 == 1) {
field_0x3010 = 0x3D;
field_0x300e.y = 0x3D;
} else {
field_0x3010 = 0x10;
field_0x300e.y = 0x10;
}
if (i_checkWolf()) {
+34 -29
View File
@@ -1,3 +1,8 @@
/**
* d_a_alink_wolf.inc
* General Player Wolf action handling
*/
/* 80126740-80126928 121080 01E8+00 2/2 0/0 0/0 .text changeCommon__9daAlink_cFv */
#pragma push
#pragma optimization_level 0
@@ -756,7 +761,7 @@ int daAlink_c::procWolfWaitTurnInit() {
mNormalSpeed = FLOAT_LABEL(lit_6108);
}
field_0x300e = field_0x2fe2;
field_0x300e.x = field_0x2fe2;
current.angle.y = shape_angle.y;
return 1;
@@ -807,7 +812,7 @@ int daAlink_c::procWolfSideStepLandInit(s16 param_0) {
field_0x3478 = daAlinkHIO_wlSideStep_c0::m.field_0x14.mCheckFrame;
}
field_0x3012 = param_0;
field_0x300e.z = param_0;
field_0x2f9d = 4;
setFootEffectProcType(2);
i_onResetFlg1(0xC);
@@ -861,14 +866,14 @@ int daAlink_c::procWolfBackJump() {
daAlinkHIO_wlAtnMove_c0::m.field_0x2);
current.angle.y = shape_angle.y - -0x8000;
if (field_0x3010 != 0) {
if (field_0x300e.y != 0) {
checkWolfAtnDoCharge();
}
backJumpSpeedDec();
if (mUnderFrameCtrl[0].checkAnmEnd() && mLinkAcch.ChkGroundHit()) {
procWolfBackJumpLandInit(field_0x3012, field_0x3010);
procWolfBackJumpLandInit(field_0x300e.z, field_0x300e.y);
} else if (mDemo.getDemoMode() != 0x10 && current.pos.y < mLastJumpPos.y - daAlinkHIO_wlBackJump_c0::m.field_0x30) {
field_0x2f98 = 0;
procWolfFallInit(2, daAlinkHIO_wlBackJump_c0::m.field_0x34);
@@ -885,8 +890,8 @@ int daAlink_c::procWolfBackJumpLandInit(s16 param_0, s16 param_1) {
field_0x2f9d = 4;
setFootEffectProcType(2);
field_0x2fcc = 10;
field_0x3012 = param_0;
field_0x3010 = param_1;
field_0x300e.z = param_0;
field_0x300e.y = param_1;
setStepLandVibration();
return 1;
@@ -903,7 +908,7 @@ int daAlink_c::procWolfBackJumpLand() {
setWolfAtnMoveDirection();
if (field_0x3010 != 0) {
if (field_0x300e.y != 0) {
checkWolfAtnDoCharge();
}
@@ -932,11 +937,11 @@ int daAlink_c::procWolfHowlInit(int param_0) {
setSingleAnimeWolfParam(WANM_HOWL_SIT, &daAlinkHIO_wlHowl_c0::m.field_0x14);
onModeFlg(0x800000);
field_0x3478 = daAlinkHIO_wlHowl_c0::m.field_0x14.mCheckFrame;
field_0x300e = 1;
field_0x300e.x = 1;
} else {
setSingleAnimeWolfParam(WANM_HOWL, &daAlinkHIO_wlHowl_c0::m.field_0x0);
field_0x3478 = daAlinkHIO_wlHowl_c0::m.field_0x0.mCheckFrame;
field_0x300e = 0;
field_0x300e.x = 0;
}
mNormalSpeed = FLOAT_LABEL(lit_6108);
@@ -1979,7 +1984,7 @@ int daAlink_c::procWolfScreamWaitInit() {
}
mNormalSpeed = FLOAT_LABEL(lit_6108);
field_0x300e = 0;
field_0x300e.x = 0;
field_0x3588 = l_wolfBaseAnime;
return 1;
@@ -1990,7 +1995,7 @@ int daAlink_c::procWolfScreamWait() {
daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl;
if (!i_checkEndResetFlg1(ERFLG1_UNK_1)) {
if (field_0x300e != 0) {
if (field_0x300e.x != 0) {
field_0x2f99 = 5;
if (frameCtrl->checkAnmEnd()) {
@@ -1999,7 +2004,7 @@ int daAlink_c::procWolfScreamWait() {
checkNextActionWolf(1);
}
} else {
field_0x300e = 1;
field_0x300e.x = 1;
setSingleAnimeWolf(WANM_DMG_AIR_FRONT_GETUP,
daAlinkHIO_wlDamLarge_c0::m.field_0x0.mSpeed,
lit_8676,
@@ -2071,14 +2076,14 @@ int daAlink_c::checkNextActionWolfFromLie() {
void daAlink_c::setWolfLieMoveVoice(int param_0) {
daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl;
if (frameCtrl->getRate() == FLOAT_LABEL(lit_6108) && field_0x3012 != 0) {
field_0x3012--;
if (frameCtrl->getRate() == FLOAT_LABEL(lit_6108) && field_0x300e.z != 0) {
field_0x300e.z--;
}
if ((param_0 != 0 && (frameCtrl->checkPass(lit_17382) || frameCtrl->checkPass(lit_7451))) ||
(frameCtrl->getRate() == FLOAT_LABEL(lit_6108) && field_0x3012 == 0)) {
(frameCtrl->getRate() == FLOAT_LABEL(lit_6108) && field_0x300e.z == 0)) {
voiceStart(Z2SE_WL_V_BREATH_WALK);
field_0x3012 = 30;
field_0x300e.z = 30;
}
}
@@ -2609,7 +2614,7 @@ int daAlink_c::procWolfRollAttackMoveInit() {
field_0x3008 = daAlinkHIO_wlAttack_c0::m.mUnkTime;
field_0x300a = daAlinkHIO_wlAtLock_c0::m.field_0x28.mEndFrame;
field_0x3012 = 30;
field_0x300e.z = 30;
field_0x3198 = 0;
field_0x2fe4 = shape_angle.y;
voiceStartLevel(Z2SE_WL_V_ROAR);
@@ -2704,7 +2709,7 @@ int daAlink_c::procWolfJumpAttackNormalLandInit(int param_0) {
setFootEffectProcType(2);
field_0x2f9d = 0x18;
mNormalSpeed = FLOAT_LABEL(lit_6108);
field_0x3012 = 0;
field_0x300e.z = 0;
field_0x300c = param_0;
field_0x2f99 = 12;
field_0x307e = daAlinkHIO_wlAttack_c0::m.mComboDuration;
@@ -2966,9 +2971,9 @@ int daAlink_c::procWolfEnemyHangBiteInit() {
field_0x3008 = daAlinkHIO_wlAtBite_c0::m.field_0x28;
field_0x300a = 0;
field_0x300c = 0;
field_0x300e = 0;
field_0x300e.x = 0;
field_0x3478 = daAlinkHIO_wlAtBite_c0::m.field_0x40;
field_0x3010 = shape_angle.y;
field_0x300e.y = shape_angle.y;
voiceStart(Z2SE_WL_V_BITE_ATTACK);
dComIfGp_setPlayerStatus1(0, 0x200000);
}
@@ -3090,7 +3095,7 @@ int daAlink_c::procWolfPush() {
if (frameCtrl->checkAnmEnd()) {
if (field_0x300c != 0) {
setSingleAnimeWolf(WANM_PUSH_LIGHT, lit_6040, FLOAT_LABEL(lit_6108), field_0x300e, lit_6109);
setSingleAnimeWolf(WANM_PUSH_LIGHT, lit_6040, FLOAT_LABEL(lit_6108), field_0x300e.x, lit_6109);
mUnderFrameCtrl[0].setAttribute(0);
field_0x300c = 0;
} else {
@@ -3225,7 +3230,7 @@ int daAlink_c::procWolfChainReadyInit() {
setSingleAnimeWolfParam(WANM_ATTACK_A_START, &daAlinkHIO_wlAtNjump_c0::m.field_0x0);
mNormalSpeed = FLOAT_LABEL(lit_6108);
field_0x300c = 0;
field_0x300e = 0;
field_0x300e.x = 0;
return 1;
}
@@ -3307,21 +3312,21 @@ void daAlink_c::setSmellSave() {
dComIfGs_offEventBit(0x2F04); // OFF: Got Medicine Scent
}
dMsgObject_setSmellType(field_0x3012);
dMsgObject_setSmellType(field_0x300e.z);
if (field_0x3012 == SMELL_MEDICINE) {
if (field_0x300e.z == SMELL_MEDICINE) {
dComIfGs_onEventBit(0x2F04); // ON: Got Medicine Scent
} else if (field_0x3012 == SMELL_CHILDREN) {
} else if (field_0x300e.z == SMELL_CHILDREN) {
i_fopAcM_onSwitch(this, 102);
} else if (field_0x3012 == SMELL_YELIA_POUCH) {
} else if (field_0x300e.z == SMELL_YELIA_POUCH) {
i_fopAcM_onSwitch(this, 103);
} else if (field_0x3012 == SMELL_FISH) {
} else if (field_0x300e.z == SMELL_FISH) {
dComIfGs_onEventBit(0x6120); // ON: Got Reekfish scent
} else if (field_0x3012 == SMELL_POH) {
} else if (field_0x300e.z == SMELL_POH) {
dComIfGs_onEventBit(0x6210); // ON: Got Poe scent
}
setGetSubBgm(field_0x3012);
setGetSubBgm(field_0x300e.z);
}
/* 8013FA14-8013FC24 13A354 0210+00 1/1 0/0 0/0 .text procWolfGetSmellInit__9daAlink_cFv
+67 -281
View File
@@ -1,151 +1,24 @@
//
// Generated By: dol2asm
// Translation Unit: d/a/d_a_player
//
/**
* d_a_player.cpp
* Base Player Actor functionality
*/
#include "d/a/d_a_player.h"
#include "JSystem/J3DGraphLoader/J3DAnmLoader.h"
#include "JSystem/JKernel/JKRSolidHeap.h"
#include "SSystem/SComponent/c_math.h"
#include "d/a/d_a_alink.h"
#include "dol2asm.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:
//
extern "C" void checkAnmEnd__16daPy_frameCtrl_cFv();
extern "C" void updateFrame__16daPy_frameCtrl_cFv();
extern "C" void setFrameCtrl__16daPy_frameCtrl_cFUcssff();
extern "C" void initOffset__20daPy_boomerangMove_cFPC4cXyz();
extern "C" void posMove__20daPy_boomerangMove_cFP4cXyzPsP10fopAc_ac_cs();
extern "C" void bgCheckAfterOffset__20daPy_boomerangMove_cFPC4cXyz();
extern "C" void setParamData__9daPy_py_cFiiii();
extern "C" void checkFishingRodItem__9daPy_py_cFi();
extern "C" void checkBombItem__9daPy_py_cFi();
extern "C" void checkBottleItem__9daPy_py_cFi();
extern "C" void checkDrinkBottleItem__9daPy_py_cFi();
extern "C" void checkOilBottleItem__9daPy_py_cFi();
extern "C" void checkOpenBottleItem__9daPy_py_cFi();
extern "C" void checkBowItem__9daPy_py_cFi();
extern "C" void checkHookshotItem__9daPy_py_cFi();
extern "C" void checkTradeItem__9daPy_py_cFi();
extern "C" void checkDungeonWarpItem__9daPy_py_cFi();
extern "C" void setActor__16daPy_actorKeep_cFv();
extern "C" void setData__16daPy_actorKeep_cFP10fopAc_ac_c();
extern "C" void clearData__16daPy_actorKeep_cFv();
extern "C" void __ct__14daPy_anmHeap_cFUl();
extern "C" void __dt__14daPy_anmHeap_cFv();
extern "C" void initData__14daPy_anmHeap_cFv();
extern "C" void mallocBuffer__14daPy_anmHeap_cFv();
extern "C" void createHeap__14daPy_anmHeap_cFQ214daPy_anmHeap_c16daAlinkHEAP_TYPE();
extern "C" void loadData__14daPy_anmHeap_cFUs();
extern "C" void loadDataIdx__14daPy_anmHeap_cFUs();
extern "C" void loadDataPriIdx__14daPy_anmHeap_cFUs();
extern "C" void loadDataDemoRID__14daPy_anmHeap_cFUsUs();
extern "C" void setAnimeHeap__14daPy_anmHeap_cFv();
extern "C" void draw__18daPy_sightPacket_cFv();
extern "C" void setSight__18daPy_sightPacket_cFv();
extern "C" void setSightImage__18daPy_sightPacket_cFP7ResTIMG();
extern "C" void checkMasterSwordEquip__9daPy_py_cFv();
extern "C" void checkWoodShieldEquip__9daPy_py_cFv();
extern "C" void getAttentionOffsetY__9daPy_py_cFv();
extern "C" void checkNowWolfEyeUp__9daPy_py_cFv();
extern "C" void forceRestartRoom__9daPy_py_cFiUli();
extern "C" void setFmChainPos__9daPy_py_cFP10fopAc_ac_cP4cXyzi();
extern "C" void cancelFmChainGrab__9daPy_py_cFv();
extern "C" void setLookPos__9daPy_py_cFP4cXyz();
extern "C" void setPlayerSe__9daPy_py_cFUl();
extern "C" void linkGrabSubjectNoDraw__9daPy_py_cFP10fopAc_ac_c();
extern "C" void wolfGrabSubjectNoDraw__9daPy_py_cFP10fopAc_ac_c();
extern "C" void checkRoomRestartStart__9daPy_py_cFv();
extern "C" void checkCarryStartLightBallA__9daPy_py_cFv();
extern "C" void checkCarryStartLightBallB__9daPy_py_cFv();
extern "C" void getSpinnerRideSpeed__9daPy_py_cCFv();
extern "C" void checkSpinnerReflectEffect__9daPy_py_cFv();
extern "C" void checkBoomerangCharge__9daPy_py_cFv();
extern "C" bool checkBoomerangChargeTime__9daPy_py_cFv();
extern "C" void getThrowBoomerangActor__9daPy_py_cFv();
extern "C" void cancelBoomerangLockActor__9daPy_py_cFP10fopAc_ac_c();
extern "C" void setPlayerDamage__9daPy_py_cFii();
extern "C" void setMidnaMotionNum__9daPy_py_cFi();
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:
//
extern "C" void scaleM__14mDoMtx_stack_cFfff();
extern "C" void mDoExt_createSolidHeapFromGameToCurrent__FPP7JKRHeapUlUl();
extern "C" void mDoExt_adjustSolidHeap__FP12JKRSolidHeap();
extern "C" void mDoExt_destroySolidHeap__FP12JKRSolidHeap();
extern "C" void mDoExt_setCurrentHeap__FP7JKRHeap();
extern "C" void mDoLib_project__FP3VecP3Vec();
extern "C" void fopAcIt_Judge__FPFPvPv_PvPv();
extern "C" void fpcSch_JudgeByID__FPvPv();
extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
extern "C" void getIDRes__14dRes_control_cFPCcUsP11dRes_info_ci();
extern "C" void set__12dDlst_list_cFRPP12dDlst_base_cRPP12dDlst_base_cP12dDlst_base_c();
extern "C" void setLookPosFromOut__9daAlink_cFP4cXyz();
extern "C" void startRestartRoom__9daAlink_cFUliii();
extern "C" void setDamagePoint__9daAlink_cFiiii();
extern "C" void cancelBoomerangLock__9daAlink_cFP10fopAc_ac_c();
extern "C" void checkBoomerangChargeEnd__9daAlink_cFv();
extern "C" void checkBoomerangCarry__9daAlink_cFP10fopAc_ac_c();
extern "C" void setFmChainPosFromOut__9daAlink_cFP10fopAc_ac_cP4cXyzi();
extern "C" void __dt__18daPy_sightPacket_cFv();
extern "C" void cM_atan2s__Fff();
extern "C" void cM_rndF__Ff();
extern "C" void freeAll__7JKRHeapFv();
extern "C" void* __nw__FUl();
extern "C" void* __nwa__FUl();
extern "C" void* __nwa__FUli();
extern "C" void __dl__FPv();
extern "C" void readIdxResource__10JKRArchiveFPvUlUl();
extern "C" void reinitGX__6J3DSysFv();
extern "C" void update__12J3DFrameCtrlFv();
extern "C" void __ct__15J3DAnmTransformFsPfPsPf();
extern "C" void __ct__19J3DAnmTextureSRTKeyFv();
extern "C" void __ct__16J3DAnmTexPatternFv();
extern "C" void load__20J3DAnmLoaderDataBaseFPCv24J3DAnmLoaderDataBaseFlag();
extern "C" void GXClearVtxDesc();
extern "C" void _savegpr_27();
extern "C" void _savegpr_29();
extern "C" void _restgpr_27();
extern "C" void _restgpr_29();
extern "C" extern void* __vt__18mDoExt_transAnmBas[5];
extern "C" extern void* __vt__18J3DAnmTransformKey[5];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" u8 mDemoArcName__20dStage_roomControl_c[10 + 2 /* padding */];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" u8 sOldVcdVatCmd__8J3DShape[4];
//
// Declarations:
//
/* ############################################################################################## */
/* 80453600-80453608 001C00 0004+04 6/6 0/0 0/0 .sdata2 @4215 */
SECTION_SDATA2 static f32 lit_4215[1 + 1 /* padding */] = {
0.0f,
/* padding */
0.0f,
};
bool daPy_frameCtrl_c::checkAnmEnd() {
if (getEndFlg() != 0 && getNowSetFlg() == 0) {
return true;
}
if (getRate() == lit_4215[0]) {
if (getRate() == 0.0f) {
onEndFlg();
onNowSetFlg();
}
@@ -167,7 +40,7 @@ void daPy_frameCtrl_c::setFrameCtrl(u8 i_attribute, s16 i_start, s16 i_end, f32
setStart(i_start);
setFrame(i_frame);
if (i_rate >= lit_4215[0]) {
if (i_rate >= 0.0f) {
setLoop(i_start);
} else {
setLoop(i_end);
@@ -178,12 +51,12 @@ void daPy_frameCtrl_c::setFrameCtrl(u8 i_attribute, s16 i_start, s16 i_end, f32
/* 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();
void daPy_boomerangMove_c::initOffset(cXyz const* i_offset) {
daBoomerang_c* boomerang_p = daPy_py_c::getThrowBoomerangActor();
if (boomerang != NULL) {
bgCheckAfterOffset(param_0);
boomerang->onWindCatch();
if (boomerang_p != NULL) {
bgCheckAfterOffset(i_offset);
boomerang_p->onWindCatch();
} else {
field_0x4 = cM_rndF(70.0f) + 30.0f;
field_0x8 = cM_rndF(50.0f) + 50.0f;
@@ -193,11 +66,9 @@ void daPy_boomerangMove_c::initOffset(cXyz const* param_0) {
field_0x0 = 0;
}
/* ############################################################################################## */
/* 80451018-8045101C 000518 0004+00 2/2 33/32 103/103 .sbss m_midnaActor__9daPy_py_c */
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;
@@ -207,7 +78,7 @@ s16 daPy_boomerangMove_c::m_eventKeepFlg;
/* 8015E654-8015E87C 158F94 0228+00 0/0 1/1 17/17 .text
* posMove__20daPy_boomerangMove_cFP4cXyzPsP10fopAc_ac_cs */
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();
daBoomerang_c* boomerang_p = daPy_py_c::getThrowBoomerangActor();
field_0x2 -= param_3;
*param_1 -= param_3;
@@ -222,8 +93,8 @@ int daPy_boomerangMove_c::posMove(cXyz* param_0, s16* param_1, fopAc_ac_c* param
field_0x4 = 50.0f;
}
if (boomerang != NULL) {
if (boomerang->checkForceDelete()) {
if (boomerang_p != NULL) {
if (boomerang_p->checkForceDelete()) {
return 0;
}
@@ -233,61 +104,38 @@ int daPy_boomerangMove_c::posMove(cXyz* param_0, s16* param_1, fopAc_ac_c* param
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();
param_0->set(boomerang_p->current.pos.x + field_0x8 * cM_ssin(field_0x2),
boomerang_p->current.pos.y + field_0x4,
boomerang_p->current.pos.z + field_0x8 * cM_scos(field_0x2));
boomerang_p->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->shape_angle.y) + cM_rndF(2048.0f);
daAlink_c* player_p = daAlink_getAlinkActorClass();
if ((param_2 == NULL || !player_p->checkBoomerangCarry(param_2)) &&
(m_eventKeepFlg == 0 || field_0x0 != 0))
{
s16 tmp = (m_dropAngleY + player_p->shape_angle.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);
param_0->x = player_p->current.pos.x + field_0x8 * cM_ssin(tmp);
param_0->z = player_p->current.pos.z + field_0x8 * cM_scos(tmp);
m_dropAngleY += 0x2000;
}
return 0;
}
/* ############################################################################################## */
/* 80453630-80453638 001C30 0008+00 1/1 0/0 0/0 .sdata2 @4379 */
SECTION_SDATA2 static f64 lit_4379 = 0.5;
/* 80453638-80453640 001C38 0008+00 1/1 0/0 0/0 .sdata2 @4380 */
SECTION_SDATA2 static f64 lit_4380 = 3.0;
/* 80453640-80453648 001C40 0008+00 1/1 0/0 0/0 .sdata2 @4381 */
SECTION_SDATA2 static u8 lit_4381[8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 8015E87C-8015EA0C 1591BC 0190+00 1/1 1/1 17/17 .text
* bgCheckAfterOffset__20daPy_boomerangMove_cFPC4cXyz */
// matches with literals (used in inlines)
#ifdef NONMATCHING
void daPy_boomerangMove_c::bgCheckAfterOffset(cXyz const* param_0) {
daBoomerang_c* boomerang = daPy_py_c::getThrowBoomerangActor();
if (boomerang != NULL) {
field_0x4 = param_0->y - boomerang->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);
void daPy_boomerangMove_c::bgCheckAfterOffset(cXyz const* i_offset) {
daBoomerang_c* boomerang_p = daPy_py_c::getThrowBoomerangActor();
if (boomerang_p != NULL) {
field_0x4 = i_offset->y - boomerang_p->current.pos.y;
field_0x8 = boomerang_p->current.pos.absXZ(*i_offset);
field_0x2 = cM_atan2s(i_offset->x - boomerang_p->current.pos.x,
i_offset->z - boomerang_p->current.pos.z);
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daPy_boomerangMove_c::bgCheckAfterOffset(cXyz const* param_0) {
nofralloc
#include "asm/d/a/d_a_player/bgCheckAfterOffset__20daPy_boomerangMove_cFPC4cXyz.s"
}
#pragma pop
#endif
/* 8015EA0C-8015EA20 15934C 0014+00 0/0 3/3 0/0 .text setParamData__9daPy_py_cFiiii */
u32 daPy_py_c::setParamData(int param_0, int param_1, int param_2, int param_3) {
@@ -301,12 +149,11 @@ BOOL daPy_py_c::checkFishingRodItem(int i_itemNo) {
}
/* 8015EA48-8015EA88 159388 0040+00 0/0 3/3 0/0 .text checkBombItem__9daPy_py_cFi */
BOOL daPy_py_c::checkBombItem(int param_0) {
return param_0 == NORMAL_BOMB || param_0 == WATER_BOMB || param_0 == POKE_BOMB;
BOOL daPy_py_c::checkBombItem(int i_itemNo) {
return i_itemNo == NORMAL_BOMB || i_itemNo == WATER_BOMB || i_itemNo == POKE_BOMB;
}
/* 8015EA88-8015EAD8 1593C8 0050+00 0/0 5/5 0/0 .text checkBottleItem__9daPy_py_cFi */
// is there a way to write this with a switch?
BOOL daPy_py_c::checkBottleItem(int i_itemNo) {
return (i_itemNo >= EMPTY_BOTTLE && i_itemNo <= FAIRY) || i_itemNo == BEE_CHILD ||
i_itemNo == WORM || i_itemNo == FAIRY_DROP || i_itemNo == CHUCHU_BLACK ||
@@ -315,7 +162,6 @@ BOOL daPy_py_c::checkBottleItem(int i_itemNo) {
/* 8015EAD8-8015EB40 159418 0068+00 0/0 3/3 0/0 .text checkDrinkBottleItem__9daPy_py_cFi
*/
// is there a way to write this with a switch?
BOOL daPy_py_c::checkDrinkBottleItem(int i_itemNo) {
return (i_itemNo >= RED_BOTTLE && i_itemNo <= HALF_MILK_BOTTLE) || i_itemNo == RED_BOTTLE_2 ||
i_itemNo == UGLY_SOUP || i_itemNo == HOT_SPRING || i_itemNo == BEE_CHILD ||
@@ -534,7 +380,7 @@ JKRHeap* daPy_anmHeap_c::setAnimeHeap() {
/* ############################################################################################## */
/* 803BA0C0-803BA14C 0171E0 0089+03 1/1 0/0 0/0 .data l_sightDL */
SECTION_DATA static u8 l_sightDL[137] = {
static u8 l_sightDL[] = {
0x10, 0x00, 0x00, 0x10, 0x40, 0xFF, 0xFF, 0x42, 0x80, 0x08, 0x30, 0x3C, 0xF3, 0xCF, 0x00, 0x10,
0x00, 0x00, 0x10, 0x18, 0x3C, 0xF3, 0xCF, 0x00, 0x61, 0x28, 0x38, 0x03, 0xC0, 0x61, 0xC0, 0x08,
0x42, 0x8F, 0x61, 0xC1, 0x08, 0xE6, 0x70, 0x61, 0x43, 0x00, 0x00, 0x01, 0x61, 0x40, 0x00, 0x00,
@@ -546,15 +392,7 @@ SECTION_DATA static u8 l_sightDL[137] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 80453678-8045367C 001C78 0004+00 1/1 0/0 0/0 .sdata2 @4668 */
SECTION_SDATA2 static u32 lit_4668 = 0xFF8000FF;
/* 8045367C-80453680 001C7C 0004+00 1/1 0/0 0/0 .sdata2 @4669 */
SECTION_SDATA2 static u32 lit_4669 = 0x321400FF;
/* 8015F1A0-8015F2FC 159AE0 015C+00 1/0 1/1 0/0 .text draw__18daPy_sightPacket_cFv */
// matches with literals
#ifdef NONMATCHING
void daPy_sightPacket_c::draw() {
GXTexObj texObj;
@@ -574,8 +412,7 @@ void daPy_sightPacket_c::draw() {
u8 tmp2 = mpImg->mipmapCount;
tmp2 = tmp2 > 1;
GXInitTexObj(&texObj, mpData, mpImg->width, mpImg->height, (GXTexFmt)mpImg->format,
(GXTexWrapMode)mpImg->wrapS, (GXTexWrapMode)mpImg->wrapT,
(GXBool)(tmp2));
(GXTexWrapMode)mpImg->wrapS, (GXTexWrapMode)mpImg->wrapT, (GXBool)(tmp2));
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);
@@ -584,23 +421,13 @@ void daPy_sightPacket_c::draw() {
GXCallDisplayList(l_sightDL, 0x80);
J3DShape::resetVcdVatCache();
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daPy_sightPacket_c::draw() {
nofralloc
#include "asm/d/a/d_a_player/draw__18daPy_sightPacket_cFv.s"
}
#pragma pop
#endif
/* 8015F2FC-8015F384 159C3C 0088+00 0/0 1/1 0/0 .text setSight__18daPy_sightPacket_cFv */
void daPy_sightPacket_c::setSight() {
Vec tmp;
Vec proj;
mDoLib_project(&mPos, &tmp);
mDoMtx_stack_c::transS(tmp.x, tmp.y, tmp.z);
mDoLib_project(&mPos, &proj);
mDoMtx_stack_c::transS(proj.x, proj.y, proj.z);
mDoMtx_stack_c::scaleM(32.0f, 32.0f, 32.0f);
mDoMtx_copy(mDoMtx_stack_c::get(), field_0x14);
dComIfGd_set2DXlu(this);
@@ -608,9 +435,9 @@ void daPy_sightPacket_c::setSight() {
/* 8015F384-8015F398 159CC4 0014+00 0/0 1/1 0/0 .text
* setSightImage__18daPy_sightPacket_cFP7ResTIMG */
void daPy_sightPacket_c::setSightImage(ResTIMG* p_img) {
mpImg = p_img;
mpData = (u8*)p_img + p_img->imageOffset;
void daPy_sightPacket_c::setSightImage(ResTIMG* i_img) {
mpImg = i_img;
mpData = (u8*)i_img + i_img->imageOffset;
}
/* 8015F398-8015F3C4 159CD8 002C+00 0/0 8/8 10/10 .text checkMasterSwordEquip__9daPy_py_cFv */
@@ -676,8 +503,8 @@ void daPy_py_c::cancelFmChainGrab() {
}
/* 8015F4F0-8015F520 159E30 0030+00 0/0 0/0 17/17 .text setLookPos__9daPy_py_cFP4cXyz */
void daPy_py_c::setLookPos(cXyz* p_pos) {
daAlink_getAlinkActorClass()->setLookPosFromOut(p_pos);
void daPy_py_c::setLookPos(cXyz* i_pos) {
daAlink_getAlinkActorClass()->setLookPosFromOut(i_pos);
}
/* 8015F520-8015F55C 159E60 003C+00 0/0 0/0 4/4 .text setPlayerSe__9daPy_py_cFUl */
@@ -687,46 +514,16 @@ void daPy_py_c::setPlayerSe(u32 i_sfxID) {
/* 8015F55C-8015F60C 159E9C 00B0+00 1/1 0/0 2/2 .text
* linkGrabSubjectNoDraw__9daPy_py_cFP10fopAc_ac_c */
// regalloc
#ifdef NONMATCHING
bool daPy_py_c::linkGrabSubjectNoDraw(fopAc_ac_c* p_ac) {
bool check_carry = false;
bool ret = false;
if (fopAcM_checkCarryNow(p_ac)) {
if (daPy_getPlayerActorClass()->getGrabActorID() == fopAcM_GetID(p_ac)) {
check_carry = true;
}
}
if (check_carry &&
dComIfGp_checkCameraAttentionStatus(i_dComIfGp_getPlayerCameraID(0), 2) != 0) {
ret = true;
}
return ret;
bool daPy_py_c::linkGrabSubjectNoDraw(fopAc_ac_c* i_actor) {
return (fopAcM_checkCarryNow(i_actor) &&
daPy_getPlayerActorClass()->getGrabActorID() == fopAcM_GetID(i_actor)) &&
dComIfGp_checkCameraAttentionStatus(i_dComIfGp_getPlayerCameraID(0), 2);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool daPy_py_c::linkGrabSubjectNoDraw(fopAc_ac_c* param_0) {
nofralloc
#include "asm/d/a/d_a_player/linkGrabSubjectNoDraw__9daPy_py_cFP10fopAc_ac_c.s"
}
#pragma pop
#endif
/* 8015F60C-8015F660 159F4C 0054+00 0/0 0/0 2/2 .text
* wolfGrabSubjectNoDraw__9daPy_py_cFP10fopAc_ac_c */
bool daPy_py_c::wolfGrabSubjectNoDraw(fopAc_ac_c* param_0){
bool ret = false;
if (checkNowWolf()) {
if (linkGrabSubjectNoDraw(param_0)) {
ret = true;
}
}
return ret;
bool daPy_py_c::wolfGrabSubjectNoDraw(fopAc_ac_c* i_actor) {
return checkNowWolf() && linkGrabSubjectNoDraw(i_actor);
}
u32 daPy_py_c::getLastSceneMode() {
@@ -737,7 +534,6 @@ u32 daPy_py_c::getLastSceneMode() {
*/
bool daPy_py_c::checkRoomRestartStart() {
u8 mode = getLastSceneMode();
if (mode == 4 || mode == 8 || mode == 5) {
return true;
}
@@ -749,7 +545,8 @@ bool daPy_py_c::checkRoomRestartStart() {
u32 daPy_py_c::checkCarryStartLightBallA() {
if (checkRoomRestartStart() || !i_dComIfGp_getStage() ||
!i_dComIfGp_getStage()->getStagInfo() ||
i_dStage_stagInfo_GetSaveTbl(i_dComIfGp_getStage()->getStagInfo()) != 0x17) {
i_dStage_stagInfo_GetSaveTbl(i_dComIfGp_getStage()->getStagInfo()) != 0x17)
{
return FALSE;
}
@@ -760,7 +557,8 @@ u32 daPy_py_c::checkCarryStartLightBallA() {
u32 daPy_py_c::checkCarryStartLightBallB() {
if (checkRoomRestartStart() || !i_dComIfGp_getStage() ||
!i_dComIfGp_getStage()->getStagInfo() ||
i_dStage_stagInfo_GetSaveTbl(i_dComIfGp_getStage()->getStagInfo()) != 0x17) {
i_dStage_stagInfo_GetSaveTbl(i_dComIfGp_getStage()->getStagInfo()) != 0x17)
{
return FALSE;
}
@@ -773,34 +571,22 @@ f32 daPy_py_c::getSpinnerRideSpeed() const {
if (checkSpinnerRide()) {
rideSpeed = speedF;
} else {
rideSpeed = lit_4215[0];
rideSpeed = 0.0f;
}
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();
daSpinner_c* spinner_p = (daSpinner_c*)getSpinnerActor();
if (spinner != NULL && spinner->reflectAccept()) {
if (spinner_p != NULL && spinner_p->reflectAccept()) {
return true;
}
return false;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
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
*/
@@ -809,8 +595,8 @@ bool daPy_py_c::checkBoomerangCharge() {
}
/* 8015F8C8-8015F8D0 15A208 0008+00 0/0 0/0 1/1 .text checkBoomerangChargeTime__9daPy_py_cFv */
bool daPy_py_c::checkBoomerangChargeTime() {
return false;
int daPy_py_c::checkBoomerangChargeTime() {
return 0;
}
/* 8015F8D0-8015F8E4 15A210 0014+00 3/3 1/1 5/5 .text getThrowBoomerangActor__9daPy_py_cFv */
@@ -821,26 +607,26 @@ daBoomerang_c* daPy_py_c::getThrowBoomerangActor() {
/* 8015F8E4-8015F914 15A224 0030+00 0/0 0/0 2/2 .text
* cancelBoomerangLockActor__9daPy_py_cFP10fopAc_ac_c */
void daPy_py_c::cancelBoomerangLockActor(fopAc_ac_c* p_ac) {
daAlink_getAlinkActorClass()->cancelBoomerangLock(p_ac);
void daPy_py_c::cancelBoomerangLockActor(fopAc_ac_c* i_actor) {
daAlink_getAlinkActorClass()->cancelBoomerangLock(i_actor);
}
/* 8015F914-8015F954 15A254 0040+00 0/0 0/0 2/2 .text setPlayerDamage__9daPy_py_cFii */
void daPy_py_c::setPlayerDamage(int param_0, int param_1) {
daAlink_getAlinkActorClass()->setDamagePoint(param_0, 0, param_1, 0);
void daPy_py_c::setPlayerDamage(int i_dmgAmount, int i_setDmgTimer) {
daAlink_getAlinkActorClass()->setDamagePoint(i_dmgAmount, FALSE, i_setDmgTimer, 0);
}
/* 8015F954-8015F968 15A294 0014+00 0/0 3/3 0/0 .text setMidnaMotionNum__9daPy_py_cFi */
void daPy_py_c::setMidnaMotionNum(int motion_num) {
void daPy_py_c::setMidnaMotionNum(int i_motionNum) {
if (m_midnaActor != NULL) {
m_midnaActor->setMotionNum(motion_num);
m_midnaActor->setMotionNum(i_motionNum);
}
}
/* 8015F968-8015F97C 15A2A8 0014+00 0/0 3/3 0/0 .text setMidnaFaceNum__9daPy_py_cFi */
void daPy_py_c::setMidnaFaceNum(int face_num) {
void daPy_py_c::setMidnaFaceNum(int i_faceNum) {
if (m_midnaActor != NULL) {
m_midnaActor->setFaceNum(face_num);
m_midnaActor->setFaceNum(i_faceNum);
}
}
+6 -6
View File
@@ -623,18 +623,18 @@ void dCcS::SetAtTgGObjInf(bool i_setAt, bool i_setTg, cCcD_Obj* param_2, cCcD_Ob
}
if (i_setAt) {
dCcD_HitCallback cb = atObjInf->GetAtHitCallback();
dCcD_HitCallback at_callback = atObjInf->GetAtHitCallback();
if (cb != NULL) {
cb(atObjInf->GetAc(), atObjInf, tgObjInf->GetAc(), tgObjInf);
if (at_callback != NULL) {
at_callback(atObjInf->GetAc(), atObjInf, tgObjInf->GetAc(), tgObjInf);
}
}
if (i_setTg) {
dCcD_HitCallback cb = tgObjInf->GetTgHitCallback();
dCcD_HitCallback tg_callback = tgObjInf->GetTgHitCallback();
if (cb != NULL) {
cb(tgObjInf->GetAc(), tgObjInf, atObjInf->GetAc(), atObjInf);
if (tg_callback != NULL) {
tg_callback(tgObjInf->GetAc(), tgObjInf, atObjInf->GetAc(), atObjInf);
}
}
+1 -1
View File
@@ -2023,7 +2023,7 @@ asm void dCamera_c::GetCameraTypeFromMapToolID(s32 param_0, s32 param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::GetCameraTypeFromCameraName(char const* param_0) {
asm int dCamera_c::GetCameraTypeFromCameraName(char const* param_0) {
nofralloc
#include "asm/d/d_camera/GetCameraTypeFromCameraName__9dCamera_cFPCc.s"
}
+4 -4
View File
@@ -39,11 +39,11 @@ void dEyeHL_c::remove() {
/* ############################################################################################## */
/* 80450FA8-80450FB0 0004A8 0004+04 3/3 0/0 0/0 .sbss m_obj__12dEyeHL_mng_c */
dEyeHL_mng_c* dEyeHL_mng_c::m_obj;
dEyeHL_c* dEyeHL_mng_c::m_obj;
/* 8009CA48-8009CB14 097388 00CC+00 0/0 1/1 0/0 .text update__12dEyeHL_mng_cFv */
void dEyeHL_mng_c::update() {
dEyeHL_mng_c* obj = m_obj;
dEyeHL_c* obj = m_obj;
if (g_envHIO[0x10] == 0 || !i_dComIfGp_event_runCheck()) {
for (; obj != NULL; obj = obj->m_next) {
@@ -72,8 +72,8 @@ void dEyeHL_mng_c::entry(dEyeHL_c* i_obj) {
*/
void dEyeHL_mng_c::remove(dEyeHL_c* i_obj) {
if (i_obj->m_timg != NULL) {
dEyeHL_mng_c* prev = i_obj->m_pre;
dEyeHL_mng_c* next = i_obj->m_next;
dEyeHL_c* prev = i_obj->m_pre;
dEyeHL_c* next = i_obj->m_next;
if (next != NULL) {
next->m_pre = prev;
+1 -1
View File
@@ -319,7 +319,7 @@ bool STControl::checkDownTrigger() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dLib_getEventSwitchNo(int param_0) {
asm u8 dLib_getEventSwitchNo(int param_0) {
nofralloc
#include "asm/d/d_lib/dLib_getEventSwitchNo__Fi.s"
}
File diff suppressed because it is too large Load Diff
+459 -174
View File
@@ -6,6 +6,7 @@
#include "d/kankyo/d_kankyo_wether.h"
#include "JSystem/J3DGraphBase/J3DDrawBuffer.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "SSystem/SComponent/c_math.h"
#include "d/com/d_com_inf_game.h"
#include "d/kankyo/d_kankyo.h"
#include "d/kankyo/d_kankyo_rain.h"
@@ -218,53 +219,55 @@ extern "C" u8 sincosTable___5JMath[65536];
extern "C" extern u8 data_80450EE0[8];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
static void dKyw_pntlight_set(WIND_INFLUENCE* pntwind);
//
// Declarations:
//
/* 80056AA8-80056AF8 0513E8 0050+00 3/3 0/0 0/0 .text dKyw_setDrawPacketList__FP9J3DPacketi */
static J3DPacket* dKyw_setDrawPacketList(J3DPacket* p_packet, int param_1) {
if (p_packet == NULL) {
static J3DPacket* dKyw_setDrawPacketList(J3DPacket* i_packet, int i_type) {
if (i_packet == NULL) {
return NULL;
} else {
dComIfGd_getListFilter()->entryImm(p_packet, 0);
return p_packet;
dComIfGd_getListFilter()->entryImm(i_packet, 0);
return i_packet;
}
}
/* 80056AF8-80056B48 051438 0050+00 3/3 0/0 0/0 .text
* dKyw_setDrawPacketListIndScreen__FP9J3DPacketi */
static J3DPacket* dKyw_setDrawPacketListIndScreen(J3DPacket* p_packet, int param_1) {
if (p_packet == NULL) {
static J3DPacket* dKyw_setDrawPacketListIndScreen(J3DPacket* i_packet, int i_type) {
if (i_packet == NULL) {
return NULL;
} else {
dComIfGd_getOpaListIndScreen()->entryImm(p_packet, 0);
return p_packet;
dComIfGd_getOpaListIndScreen()->entryImm(i_packet, 0);
return i_packet;
}
}
/* 80056B48-80056BD8 051488 0090+00 5/5 0/0 0/0 .text dKyw_setDrawPacketListSky__FP9J3DPacketi */
static J3DPacket* dKyw_setDrawPacketListSky(J3DPacket* p_packet, int type) {
if (p_packet == NULL) {
static J3DPacket* dKyw_setDrawPacketListSky(J3DPacket* i_packet, int i_type) {
if (i_packet == NULL) {
return NULL;
} else {
dComIfGd_setListSky();
j3dSys.getDrawBuffer(type)->entryImm(p_packet, 0);
j3dSys.getDrawBuffer(i_type)->entryImm(i_packet, 0);
dComIfGd_setList();
return p_packet;
return i_packet;
}
}
/* 80056BD8-80056C60 051518 0088+00 2/2 0/0 0/0 .text dKyw_setDrawPacketListXluBg__FP9J3DPacketi
*/
static J3DPacket* dKyw_setDrawPacketListXluBg(J3DPacket* p_packet, int type) {
if (p_packet == NULL) {
static J3DPacket* dKyw_setDrawPacketListXluBg(J3DPacket* i_packet, int i_type) {
if (i_packet == NULL) {
return NULL;
} else {
dComIfGd_setXluListBG();
j3dSys.getDrawBuffer(type)->entryImm(p_packet, 0);
j3dSys.getDrawBuffer(i_type)->entryImm(i_packet, 0);
dComIfGd_setList();
return p_packet;
return i_packet;
}
}
@@ -282,9 +285,7 @@ void dKankyo_sunlenz_Packet::draw() {
RAIN_EFF::~RAIN_EFF() {}
/* 80056D0C-80056D10 05164C 0004+00 1/1 0/0 0/0 .text __ct__8RAIN_EFFFv */
RAIN_EFF::RAIN_EFF() {
/* empty function */
}
RAIN_EFF::RAIN_EFF() {}
/* 80056D10-80056D58 051650 0048+00 1/0 0/0 0/0 .text draw__19dKankyo_rain_PacketFv */
void dKankyo_rain_Packet::draw() {
@@ -296,9 +297,7 @@ void dKankyo_rain_Packet::draw() {
SNOW_EFF::~SNOW_EFF() {}
/* 80056D94-80056D98 0516D4 0004+00 0/0 1/1 0/0 .text __ct__8SNOW_EFFFv */
SNOW_EFF::SNOW_EFF() {
/* empty function */
}
SNOW_EFF::SNOW_EFF() {}
/* 80056D98-80056DC8 0516D8 0030+00 1/0 0/0 0/0 .text draw__19dKankyo_snow_PacketFv */
void dKankyo_snow_Packet::draw() {
@@ -309,9 +308,7 @@ void dKankyo_snow_Packet::draw() {
STAR_EFF::~STAR_EFF() {}
/* 80056E04-80056E08 051744 0004+00 0/0 1/1 0/0 .text __ct__8STAR_EFFFv */
STAR_EFF::STAR_EFF() {
/* empty function */
}
STAR_EFF::STAR_EFF() {}
/* 80056E08-80056E38 051748 0030+00 1/0 0/0 0/0 .text draw__19dKankyo_star_PacketFv */
void dKankyo_star_Packet::draw() {
@@ -322,9 +319,7 @@ void dKankyo_star_Packet::draw() {
CLOUD_EFF::~CLOUD_EFF() {}
/* 80056E74-80056E78 0517B4 0004+00 1/1 0/0 0/0 .text __ct__9CLOUD_EFFFv */
CLOUD_EFF::CLOUD_EFF() {
/* empty function */
}
CLOUD_EFF::CLOUD_EFF() {}
/* 80056E78-80056EA8 0517B8 0030+00 1/0 0/0 0/0 .text draw__20dKankyo_cloud_PacketFv */
void dKankyo_cloud_Packet::draw() {
@@ -335,9 +330,7 @@ void dKankyo_cloud_Packet::draw() {
HOUSI_EFF::~HOUSI_EFF() {}
/* 80056EE4-80056EE8 051824 0004+00 1/1 0/0 0/0 .text __ct__9HOUSI_EFFFv */
HOUSI_EFF::HOUSI_EFF() {
/* empty function */
}
HOUSI_EFF::HOUSI_EFF() {}
/* 80056EE8-80056F18 051828 0030+00 1/0 0/0 0/0 .text draw__20dKankyo_housi_PacketFv */
void dKankyo_housi_Packet::draw() {
@@ -348,9 +341,7 @@ void dKankyo_housi_Packet::draw() {
VRKUMO_EFF::~VRKUMO_EFF() {}
/* 80056F54-80056F58 051894 0004+00 1/1 0/0 0/0 .text __ct__10VRKUMO_EFFFv */
VRKUMO_EFF::VRKUMO_EFF() {
/* empty function */
}
VRKUMO_EFF::VRKUMO_EFF() {}
/* 80056F58-80056F8C 051898 0034+00 1/0 0/0 0/0 .text draw__21dKankyo_vrkumo_PacketFv */
void dKankyo_vrkumo_Packet::draw() {
@@ -361,9 +352,7 @@ void dKankyo_vrkumo_Packet::draw() {
EF_ODOUR_EFF::~EF_ODOUR_EFF() {}
/* 80056FC8-80056FCC 051908 0004+00 1/1 0/0 0/0 .text __ct__12EF_ODOUR_EFFFv */
EF_ODOUR_EFF::EF_ODOUR_EFF() {
/* empty function */
}
EF_ODOUR_EFF::EF_ODOUR_EFF() {}
/* 80056FCC-80056FFC 05190C 0030+00 1/0 0/0 0/0 .text draw__20dKankyo_odour_PacketFv */
void dKankyo_odour_Packet::draw() {
@@ -374,9 +363,7 @@ void dKankyo_odour_Packet::draw() {
EF_MUD_EFF::~EF_MUD_EFF() {}
/* 80057038-8005703C 051978 0004+00 1/1 0/0 0/0 .text __ct__10EF_MUD_EFFFv */
EF_MUD_EFF::EF_MUD_EFF() {
/* empty function */
}
EF_MUD_EFF::EF_MUD_EFF() {}
/* 8005703C-8005706C 05197C 0030+00 1/0 0/0 0/0 .text draw__18dKankyo_mud_PacketFv */
void dKankyo_mud_Packet::draw() {
@@ -387,9 +374,7 @@ void dKankyo_mud_Packet::draw() {
EF_EVIL_EFF::~EF_EVIL_EFF() {}
/* 800570A8-800570AC 0519E8 0004+00 1/1 0/0 0/0 .text __ct__11EF_EVIL_EFFFv */
EF_EVIL_EFF::EF_EVIL_EFF() {
/* empty function */
}
EF_EVIL_EFF::EF_EVIL_EFF() {}
/* 800570AC-800570DC 0519EC 0030+00 1/0 0/0 0/0 .text draw__19dKankyo_evil_PacketFv */
void dKankyo_evil_Packet::draw() {
@@ -397,127 +382,127 @@ void dKankyo_evil_Packet::draw() {
}
/* 800570DC-8005710C 051A1C 0030+00 1/1 0/0 0/0 .text dKyw_drawSun__Fi */
static void dKyw_drawSun(int type) {
dKyw_setDrawPacketListSky(g_env_light.mpSunPacket, type);
static void dKyw_drawSun(int i_type) {
dKyw_setDrawPacketListSky(g_env_light.mpSunPacket, i_type);
}
/* 8005710C-80057130 051A4C 0024+00 1/1 0/0 0/0 .text dKyw_Sun_Draw__Fv */
static void dKyw_Sun_Draw() {
dKyw_drawSun(XLU_BUFFER);
dKyw_drawSun(J3DSys_XLU_BUFFER_e);
}
/* 80057130-80057174 051A70 0044+00 1/1 0/0 0/0 .text dKyw_drawSunlenz__Fi */
static void dKyw_drawSunlenz(int type) {
static void dKyw_drawSunlenz(int i_type) {
if (g_env_light.mpSunLenzPacket->mDrawLenzInSky == false) {
dKyw_setDrawPacketListIndScreen(g_env_light.mpSunLenzPacket, type);
dKyw_setDrawPacketListIndScreen(g_env_light.mpSunLenzPacket, i_type);
} else {
dKyw_setDrawPacketListSky(g_env_light.mpSunLenzPacket, type);
dKyw_setDrawPacketListSky(g_env_light.mpSunLenzPacket, i_type);
}
}
/* 80057174-80057198 051AB4 0024+00 1/1 0/0 0/0 .text dKyw_Sunlenz_Draw__Fv */
static void dKyw_Sunlenz_Draw() {
dKyw_drawSunlenz(XLU_BUFFER);
dKyw_drawSunlenz(J3DSys_XLU_BUFFER_e);
}
/* 80057198-800571C8 051AD8 0030+00 1/1 0/0 0/0 .text dKyw_drawRain__Fi */
static void dKyw_drawRain(int type) {
dKyw_setDrawPacketList(g_env_light.mpRainPacket, type);
static void dKyw_drawRain(int i_type) {
dKyw_setDrawPacketList(g_env_light.mpRainPacket, i_type);
}
/* 800571C8-800571EC 051B08 0024+00 1/1 0/0 0/0 .text dKyw_Rain_Draw__Fv */
static void dKyw_Rain_Draw() {
dKyw_drawRain(XLU_BUFFER);
dKyw_drawRain(J3DSys_XLU_BUFFER_e);
}
/* 800571EC-8005721C 051B2C 0030+00 1/1 0/0 0/0 .text dKyw_drawSnow__Fi */
static void dKyw_drawSnow(int type) {
dKyw_setDrawPacketList(g_env_light.mpSnowPacket, type);
static void dKyw_drawSnow(int i_type) {
dKyw_setDrawPacketList(g_env_light.mpSnowPacket, i_type);
}
/* 8005721C-80057240 051B5C 0024+00 1/1 0/0 0/0 .text dKyw_Snow_Draw__Fv */
static void dKyw_Snow_Draw() {
dKyw_drawSnow(XLU_BUFFER);
dKyw_drawSnow(J3DSys_XLU_BUFFER_e);
}
/* 80057240-80057270 051B80 0030+00 1/1 0/0 0/0 .text dKyw_drawStar__Fi */
static void dKyw_drawStar(int type) {
dKyw_setDrawPacketListSky(g_env_light.mpStarPacket, type);
static void dKyw_drawStar(int i_type) {
dKyw_setDrawPacketListSky(g_env_light.mpStarPacket, i_type);
}
/* 80057270-80057294 051BB0 0024+00 1/1 0/0 0/0 .text dKyw_Star_Draw__Fv */
static void dKyw_Star_Draw() {
dKyw_drawStar(XLU_BUFFER);
dKyw_drawStar(J3DSys_XLU_BUFFER_e);
}
/* 80057294-800572C4 051BD4 0030+00 1/1 0/0 0/0 .text dKyw_drawHousi__Fi */
static void dKyw_drawHousi(int type) {
dKyw_setDrawPacketList(g_env_light.mpHousiPacket, type);
static void dKyw_drawHousi(int i_type) {
dKyw_setDrawPacketList(g_env_light.mpHousiPacket, i_type);
}
/* 800572C4-800572E8 051C04 0024+00 1/1 0/0 0/0 .text dKyw_Housi_Draw__Fv */
static void dKyw_Housi_Draw() {
dKyw_drawHousi(XLU_BUFFER);
dKyw_drawHousi(J3DSys_XLU_BUFFER_e);
}
/* 800572E8-80057318 051C28 0030+00 1/1 0/0 0/0 .text dKyw_drawCloud__Fi */
static void dKyw_drawCloud(int type) {
dKyw_setDrawPacketListIndScreen(g_env_light.mpCloudPacket, type);
static void dKyw_drawCloud(int i_type) {
dKyw_setDrawPacketListIndScreen(g_env_light.mpCloudPacket, i_type);
}
/* 80057318-8005733C 051C58 0024+00 1/1 0/0 0/0 .text dKyw_Cloud_Draw__Fv */
static void dKyw_Cloud_Draw() {
dKyw_drawCloud(XLU_BUFFER);
dKyw_drawCloud(J3DSys_XLU_BUFFER_e);
}
/* 8005733C-8005736C 051C7C 0030+00 1/1 0/0 0/0 .text dKyw_drawVrkumo__Fi */
static void dKyw_drawVrkumo(int type) {
dKyw_setDrawPacketListSky(g_env_light.mpVrkumoPacket, type);
static void dKyw_drawVrkumo(int i_type) {
dKyw_setDrawPacketListSky(g_env_light.mpVrkumoPacket, i_type);
}
/* 8005736C-80057390 051CAC 0024+00 1/1 0/0 0/0 .text dKyw_Vrkumo_Draw__Fv */
static void dKyw_Vrkumo_Draw() {
dKyw_drawVrkumo(XLU_BUFFER);
dKyw_drawVrkumo(J3DSys_XLU_BUFFER_e);
}
/* 80057390-800573C0 051CD0 0030+00 1/1 0/0 0/0 .text dKyw_shstar_packet__Fi */
static void dKyw_shstar_packet(int type) {
dKyw_setDrawPacketListSky(g_env_light.mpShstarPacket, type);
static void dKyw_shstar_packet(int i_type) {
dKyw_setDrawPacketListSky(g_env_light.mpShstarPacket, i_type);
}
/* 800573C0-800573E4 051D00 0024+00 1/1 0/0 0/0 .text dKyw_shstar_Draw__Fv */
static void dKyw_shstar_Draw() {
dKyw_shstar_packet(XLU_BUFFER);
dKyw_shstar_packet(J3DSys_XLU_BUFFER_e);
}
/* 800573E4-80057414 051D24 0030+00 1/1 0/0 0/0 .text dKyw_odour_packet__Fi */
static void dKyw_odour_packet(int type) {
dKyw_setDrawPacketListIndScreen(g_env_light.mpOdourPacket, type);
static void dKyw_odour_packet(int i_type) {
dKyw_setDrawPacketListIndScreen(g_env_light.mpOdourPacket, i_type);
}
/* 80057414-80057438 051D54 0024+00 1/1 0/0 0/0 .text dKyw_Odour_Draw__Fv */
static void dKyw_Odour_Draw() {
dKyw_odour_packet(XLU_BUFFER);
dKyw_odour_packet(J3DSys_XLU_BUFFER_e);
}
/* 80057438-80057468 051D78 0030+00 1/1 0/0 0/0 .text dKyw_mud_packet__Fi */
static void dKyw_mud_packet(int type) {
dKyw_setDrawPacketListXluBg(g_env_light.mpMudPacket, type);
static void dKyw_mud_packet(int i_type) {
dKyw_setDrawPacketListXluBg(g_env_light.mpMudPacket, i_type);
}
/* 80057468-8005748C 051DA8 0024+00 1/1 0/0 0/0 .text dKyw_mud_Draw__Fv */
static void dKyw_mud_Draw() {
dKyw_mud_packet(XLU_BUFFER);
dKyw_mud_packet(J3DSys_XLU_BUFFER_e);
}
/* 8005748C-800574BC 051DCC 0030+00 1/1 0/0 0/0 .text dKyw_evil_packet__Fi */
static void dKyw_evil_packet(int type) {
dKyw_setDrawPacketListXluBg(g_env_light.mpEvilPacket, type);
static void dKyw_evil_packet(int i_type) {
dKyw_setDrawPacketListXluBg(g_env_light.mpEvilPacket, i_type);
}
/* 800574BC-800574E0 051DFC 0024+00 1/1 0/0 0/0 .text dKyw_evil_Draw__Fv */
static void dKyw_evil_Draw() {
dKyw_evil_packet(XLU_BUFFER);
dKyw_evil_packet(J3DSys_XLU_BUFFER_e);
}
/* 804520E0-804520E4 0006E0 0004+00 12/12 0/0 0/0 .sdata2 @4378 */
@@ -1336,20 +1321,13 @@ SECTION_SDATA2 static f32 lit_5192 = 24575.0f;
SECTION_SDATA2 static f32 lit_5193 = 0.00139999995008111f;
/* 80059728-80059E38 054068 0710+00 1/1 0/0 0/0 .text wether_move_vrkumo__Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void wether_move_vrkumo() {
nofralloc
#include "asm/d/kankyo/d_kankyo_wether/wether_move_vrkumo__Fv.s"
}
#pragma pop
/* static void wether_move_vrkumo() {
// gameinfo load issue, cmath instruction order / reg alloc
#ifdef NONMATCHING
static void wether_move_vrkumo() {
BOOL var_r31 = false;
static cXyz r09o(-180000.0f, 750.0f, -200000.0f);
if (dComIfGp_checkStatus(1) && !g_env_light.mbVrboxInvisible) {
if (dComIfGp_checkStatus(1) && !g_env_light.mVrboxInvisible) {
g_env_light.mVrkumoCount = 6;
if (memcmp(dComIfGp_getStartStageName(), "D_MN07", 6) == 0 ||
@@ -1358,16 +1336,18 @@ static asm void wether_move_vrkumo() {
(g_env_light.field_0x12cc != 0 || i_dComIfGp_event_runCheck())))
{
cLib_addCalc(&g_env_light.mVrkumoStrength, 1.0f, 0.1f, 0.003f, 0.0000001f);
} else if (strcmp(dComIfGp_getStartStageName(), "F_SP104") == 0 && dComIfG_play_c::getLayerNo(0) > 2) {
if (g_env_light.mColpatCurr > 4) {
} else if (strcmp(dComIfGp_getStartStageName(), "F_SP104") == 0 &&
dComIfG_play_c::getLayerNo(0) >= 3)
{
if (g_env_light.mColPatCurr >= 4) {
cLib_addCalc(&g_env_light.mVrkumoStrength, 1.0f, 0.1f, 0.003f, 0.0000001f);
} else {
cLib_addCalc(&g_env_light.mVrkumoStrength, 0.0f, 0.08f, 0.002f, 0.00000001f);
}
} else if ((g_env_light.mColpatCurr == 1 && g_env_light.mColPatBlend > 0.0f) ||
(g_env_light.mColpatPrev == 1 && g_env_light.mColPatBlend < 1.0f) ||
(g_env_light.mColpatCurr == 2 && g_env_light.mColPatBlend > 0.0f) ||
(g_env_light.mColpatPrev == 2 && g_env_light.mColPatBlend < 1.0f))
} else if ((g_env_light.mColPatCurr == 1 && g_env_light.mColPatBlend > 0.0f) ||
(g_env_light.mColPatPrev == 1 && g_env_light.mColPatBlend < 1.0f) ||
(g_env_light.mColPatCurr == 2 && g_env_light.mColPatBlend > 0.0f) ||
(g_env_light.mColPatPrev == 2 && g_env_light.mColPatBlend < 1.0f))
{
cLib_addCalc(&g_env_light.mVrkumoStrength, 1.0f, 0.1f, 0.003f, 0.0000001f);
} else {
@@ -1384,8 +1364,9 @@ static asm void wether_move_vrkumo() {
}
roomRead_class* room_p = dComIfGp_getStageRoom();
if (room_p != NULL && dComIfGp_roomControl_getStayNo() < room_p->field_0x0) {
var_r31 = dStage_roomRead_dt_c_GetVrboxswitch(room_p->field_0x4[dComIfGp_roomControl_getStayNo()]);
if (room_p != NULL && room_p->field_0x0 > dComIfGp_roomControl_getStayNo()) {
var_r31 = dStage_roomRead_dt_c_GetVrboxswitch(
*room_p->field_0x4[dComIfGp_roomControl_getStayNo()]);
}
if (strcmp(dComIfGp_getStartStageName(), "F_SP200") == 0) {
@@ -1402,32 +1383,27 @@ static asm void wether_move_vrkumo() {
return;
}
if (dComIfG_getStageRes("Stage", "vr_box.bmd") != NULL ||
dComIfG_getStageRes("Stage", "vr_box.bdl"))
{
g_env_light.mpVrkumoPacket->mpCloudTx1 =
(u8*)dComIfG_getStageRes("Stage", "cloud_01.bti");
g_env_light.mpVrkumoPacket->mpCloudTx2 =
(u8*)dComIfG_getStageRes("Stage", "cloud_02.bti");
g_env_light.mpVrkumoPacket->mpCloudTx3 =
(u8*)dComIfG_getStageRes("Stage", "cloud_03.bti");
} else {
g_env_light.mpVrkumoPacket->mpCloudTx1 =
(u8*)dComIfG_getStageRes("Stage", "cloudtx_01.bti");
g_env_light.mpVrkumoPacket->mpCloudTx2 =
(u8*)dComIfG_getStageRes("Stage", "cloudtx_02.bti");
g_env_light.mpVrkumoPacket->mpCloudTx3 =
(u8*)dComIfG_getStageRes("Stage", "cloudtx_03.bti");
}
g_env_light.mpVrkumoPacket->mpResCloudtx_01 =
(u8*)dComIfG_getStageRes("cloudtx_01.bti");
g_env_light.mpVrkumoPacket->mpResCloudtx_02 =
(u8*)dComIfG_getStageRes("cloudtx_02.bti");
g_env_light.mpVrkumoPacket->mpResCloudtx_03 =
(u8*)dComIfG_getStageRes("cloudtx_03.bti");
if (g_env_light.mpVrkumoPacket->mpCloudTx1 == NULL) {
if (g_env_light.mpVrkumoPacket->mpResCloudtx_01 == NULL ||
g_env_light.mpVrkumoPacket->mpResCloudtx_02 == NULL ||
g_env_light.mpVrkumoPacket->mpResCloudtx_03 == NULL)
{
g_env_light.mVrkumoStatus = 99;
}
for (int i = 0; i < 100; i++) {
g_env_light.mpVrkumoPacket->mInst[i].mStatus = 0;
g_env_light.mpVrkumoPacket->mVrkumoEff[i].mStatus = 0;
}
g_env_light.mpVrkumoPacket->field_0x1150 = 0.0f;
g_env_light.mpVrkumoPacket->field_0x1154 = 0.0f;
vrkumo_move();
g_env_light.mVrkumoStatus++;
}
@@ -1436,23 +1412,57 @@ static asm void wether_move_vrkumo() {
vrkumo_move();
dKyw_get_wind_vec();
cXyz localE0;
localE0.x = g_env_light.mWind.vec.x;
localE0.y = g_env_light.mWind.vec.y;
localE0.z = g_env_light.mWind.vec.z;
cXyz sp8;
f32 wind_vec_x = g_env_light.mWind.vec.x;
f32 wind_vec_y = g_env_light.mWind.vec.y;
f32 wind_vec_z = g_env_light.mWind.vec.z;
f32 var_f31 = g_env_light.mWind.pow;
if (strcmp(dComIfGp_getStartStageName(), "R_SP127") == 0) {
pow = 0.3f;
var_f31 = 0.3f;
}
f32 x = JMAFastSqrt(localE0.x * localE0.x + localE0.z * localE0.z);
cM_atan2s(localE0.x, localE0.z);
cM_atan2s(localE0.y, x);
f32 var_f30 = JMAFastSqrt(wind_vec_x * wind_vec_x + wind_vec_z * wind_vec_z);
f32 temp_f27_2 = cM_atan2s(wind_vec_x, wind_vec_z);
f32 temp_r4_2 = cM_atan2s(wind_vec_y, var_f30);
temp_f27_2 += 24575.0f;
sp8.x = cM_ssin(temp_f27_2) * cM_scos(temp_r4_2);
sp8.y = cM_ssin(temp_r4_2);
sp8.z = cM_scos(temp_f27_2) * cM_scos(temp_r4_2);
g_env_light.mpVrkumoPacket->field_0x1150 += (sp8.x * var_f31) * 0.0014f;
g_env_light.mpVrkumoPacket->field_0x1154 += (sp8.z * var_f31) * 0.0014f;
while (g_env_light.mpVrkumoPacket->field_0x1150 < 0.0f) {
g_env_light.mpVrkumoPacket->field_0x1150 += 1.0f;
}
while (g_env_light.mpVrkumoPacket->field_0x1150 > 1.0f) {
g_env_light.mpVrkumoPacket->field_0x1150 -= 1.0f;
}
while (g_env_light.mpVrkumoPacket->field_0x1154 < 0.0f) {
g_env_light.mpVrkumoPacket->field_0x1154 += 1.0f;
}
while (g_env_light.mpVrkumoPacket->field_0x1154 > 1.0f) {
g_env_light.mpVrkumoPacket->field_0x1154 -= 1.0f;
}
break;
}
} */
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void wether_move_vrkumo() {
nofralloc
#include "asm/d/kankyo/d_kankyo_wether/wether_move_vrkumo__Fv.s"
}
#pragma pop
#endif
/* 80059E38-80059F74 054778 013C+00 1/1 0/0 0/0 .text wether_move_mud__Fv */
static void wether_move_mud() {
@@ -1615,7 +1625,7 @@ SECTION_SDATA2 static f32 lit_5364[1 + 1 /* padding */] = {
};
/* 8005A340-8005A57C 054C80 023C+00 0/0 1/1 0/0 .text dKyw_wether_proc__Fv */
// small branch issues
// small branch issue
#ifdef NONMATCHING
void dKyw_wether_proc() {
// Stage is Faron Woods or Fishing Pond or Hyrule Field
@@ -1626,8 +1636,8 @@ void dKyw_wether_proc() {
{
if (!dKy_darkworld_check()) {
// Stage is Hyrule Field
if (!strcmp(dComIfGp_getStartStageName(), "F_SP121") || g_env_light.mDaytime >= 75.0f ||
g_env_light.mDaytime <= 120.0f)
if (!strcmp(dComIfGp_getStartStageName(), "F_SP121") ||
!(g_env_light.mDaytime >= 75.0f) || !(g_env_light.mDaytime <= 120.0f))
{
// Stage is Hyrule Field
if (!strcmp(dComIfGp_getStartStageName(), "F_SP121") &&
@@ -1682,7 +1692,7 @@ static void dKyw_wind_init() {
g_env_light.field_0xe6c = 0;
g_env_light.field_0xe64 = 0;
g_env_light.field_0xe66 = 0;
g_env_light.mWind.field_0xc = 0;
g_env_light.mWind.vec_override = 0;
g_env_light.custom_windpower = tmp_0;
g_env_light.mEvtWindSet = 0;
g_env_light.mTeachWindExist = 0;
@@ -1716,6 +1726,150 @@ SECTION_SDATA2 static f32 lit_5530 = 0.0010000000474974513f;
SECTION_SDATA2 static f32 lit_5531 = 0.004999999888241291f;
/* 8005A5C0-8005AAE0 054F00 0520+00 0/0 2/2 0/0 .text dKyw_wind_set__Fv */
// matches with literals
#ifdef NONMATCHING
void dKyw_wind_set() {
s16 var_r30;
s16 var_r29;
int var_r28 = 0;
cXyz wind_vec;
f32 strength;
if (g_env_light.mWind.vec_override != NULL) {
wind_vec = *g_env_light.mWind.vec_override;
strength = g_env_light.custom_windpower;
cM_atan2s(wind_vec.x, wind_vec.z);
cM_atan2s(wind_vec.absXZ(), wind_vec.y);
} else {
dStage_FileList_dt_c* fili_p = NULL;
int wind_level = 0;
if (dComIfGp_roomControl_getStayNo() >= 0) {
fili_p = dComIfGp_roomControl_getStatusRoomDt(dComIfGp_roomControl_getStayNo())
->mRoomDt.getFileListInfo();
}
var_r30 = 0;
var_r29 = 0;
if (fili_p != NULL) {
var_r28 = dStage_FileList_dt_GlobalWindDir(fili_p);
}
s32 var_r4 = dComIfGp_roomControl_getStayNo();
if (dComIfGp_roomControl_getStatusRoomDt(var_r4) != NULL) {
s32 var_r4_2 = dComIfGp_roomControl_getStayNo();
dStage_Lbnk_c* lbnk_p =
dComIfGp_roomControl_getStatusRoomDt(var_r4_2)->mRoomDt.getLbnk();
if (lbnk_p != NULL) {
dStage_Lbnk_dt_c* data_p = lbnk_p->entries;
if (dStage_lbnkWIND(&data_p[dComIfG_play_c::getLayerNo(0)]) != 7) {
var_r28 = dStage_lbnkWIND(&data_p[0]);
}
}
}
switch (var_r28) {
case 0:
case 1:
break;
case 2:
var_r30 = 0;
var_r29 = -0x4000;
break;
case 3:
var_r30 = 0;
var_r29 = 0;
break;
case 4:
var_r30 = 0;
var_r29 = 0x4000;
break;
case 5:
var_r30 = 0;
var_r29 = 0x7FFF;
break;
}
if (g_env_light.mEvtWindSet != 0 && g_env_light.mEvtWindSet != 0xFF) {
var_r30 = g_env_light.mEvtWindAngleX;
var_r29 = g_env_light.mEvtWindAngleY;
}
wind_vec.x = cM_scos(var_r30) * cM_ssin(var_r29);
wind_vec.y = cM_ssin(var_r30);
wind_vec.z = cM_scos(var_r30) * cM_scos(var_r29);
if (fili_p != NULL) {
wind_level = dStage_FileList_dt_GlobalWindLevel(fili_p);
}
s32 var_r4_3 = dComIfGp_roomControl_getStayNo();
if (dComIfGp_roomControl_getStatusRoomDt(var_r4_3) != NULL) {
s32 var_r4_4 = dComIfGp_roomControl_getStayNo();
dStage_Lbnk_c* lbnk_p =
dComIfGp_roomControl_getStatusRoomDt(var_r4_4)->mRoomDt.getLbnk();
if (lbnk_p != NULL) {
dStage_Lbnk_dt_c* data_p = lbnk_p->entries;
if (dStage_lbnkWlevel(&data_p[0]) != 3) {
wind_level = dStage_lbnkWlevel(&data_p[0]);
}
}
}
switch (wind_level) {
case 0:
strength = 0.3f;
break;
case 1:
strength = 0.6f;
break;
case 2:
strength = 0.9f;
break;
default:
strength = 0.0f;
break;
}
}
if (g_env_light.mEvtWindSet != 0) {
strength = g_env_light.custom_windpower;
}
if (strength > 1.0f) {
strength = 1.0f;
}
if (strcmp(dComIfGp_getStartStageName(), "D_MN07") == 0 &&
(dComIfGp_roomControl_getStayNo() == 0 || dComIfGp_roomControl_getStayNo() == 3 ||
dComIfGp_roomControl_getStayNo() == 6 || dComIfGp_roomControl_getStayNo() == 13))
{
mDoAud_mEnvse_setWindDirection(&wind_vec);
if (strength <= 0.5f) {
mDoAud_mEnvse_setWindType(3);
} else {
mDoAud_mEnvse_setWindType(1);
}
s8 reverb = dComIfGp_getReverb(dComIfGp_roomControl_getStayNo());
mDoAud_mEnvse_startStrongWindSe(reverb);
}
if (g_env_light.mInitAnmTimer != 0) {
g_env_light.mWind.vec = wind_vec;
g_env_light.mWind.pow = strength;
} else {
cLib_addCalc(&g_env_light.mWind.vec.x, wind_vec.x, 0.05f, 2.0f, 0.001f);
cLib_addCalc(&g_env_light.mWind.vec.y, wind_vec.y, 0.05f, 2.0f, 0.001f);
cLib_addCalc(&g_env_light.mWind.vec.z, wind_vec.z, 0.05f, 2.0f, 0.001f);
cLib_addCalc(&g_env_light.mWind.pow, strength, 0.05f, 1.0f, 0.005f);
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1724,6 +1878,7 @@ asm void dKyw_wind_set() {
#include "asm/d/kankyo/d_kankyo_wether/dKyw_wind_set__Fv.s"
}
#pragma pop
#endif
/* 8005AAE0-8005AAF0 055420 0010+00 1/1 6/6 7/7 .text dKyw_get_wind_vec__Fv */
cXyz* dKyw_get_wind_vec() {
@@ -1742,21 +1897,72 @@ cXyz dKyw_get_wind_vecpow() {
}
/* 8005AB64-8005AC30 0554A4 00CC+00 0/0 0/0 1/1 .text dKyw_plight_collision_set__FP4cXyzssfffff */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKyw_plight_collision_set(cXyz* param_0, s16 param_1, s16 param_2, f32 param_3,
f32 param_4, f32 param_5, f32 param_6, f32 param_7) {
nofralloc
#include "asm/d/kankyo/d_kankyo_wether/dKyw_plight_collision_set__FP4cXyzssfffff.s"
void dKyw_plight_collision_set(cXyz* param_0, s16 param_1, s16 param_2, f32 param_3, f32 param_4,
f32 param_5, f32 param_6, f32 param_7) {
dScnKy_env_light_c* env_light = i_dKy_getEnvlight();
for (int i = 0; i < 5; i++) {
if (!env_light->mWindInfluenceEntity[i].mInUse) {
env_light->mWindInfluenceEntity[i].mInUse = true;
env_light->mWindInfluenceEntity[i].mMinRadius = param_4;
env_light->mWindInfluenceEntity[i].mSpeed = param_6;
env_light->mWindInfluenceEntity[i].mStrengthMaxVel = param_7;
WIND_INFLUENCE* wind_inf = &env_light->mWindInfluenceEntity[i].mInfluence;
wind_inf->position = *param_0;
wind_inf->mDirection.x = cM_scos(param_1) * cM_ssin(param_2);
wind_inf->mDirection.y = cM_ssin(param_1);
wind_inf->mDirection.z = cM_scos(param_1) * cM_scos(param_2);
wind_inf->mRadius = param_3;
wind_inf->field_0x20 = wind_inf->mRadius;
wind_inf->mStrength = param_5;
dKyw_pntlight_set(wind_inf);
break;
}
}
}
#pragma pop
/* ############################################################################################## */
/* 804521A4-804521A8 0007A4 0004+00 1/1 0/0 0/0 .sdata2 @5630 */
SECTION_SDATA2 static f32 lit_5630 = 1.0f / 5.0f;
/* 8005AC30-8005AD44 055570 0114+00 1/1 0/0 0/0 .text squal_proc__Fv */
// matches with literals
#ifdef NONMATCHING
static void squal_proc() {
dScnKy_env_light_c* env_light = i_dKy_getEnvlight();
WIND_INFLUENCE* influence;
for (int i = 0; i < 5; i++) {
influence = &env_light->mWindInfluenceEntity[i].mInfluence;
switch (env_light->mWindInfluenceEntity[i].mInUse) {
case 0:
break;
case 1:
influence->position.x +=
influence->mDirection.x * env_light->mWindInfluenceEntity[i].mSpeed;
influence->position.y +=
influence->mDirection.y * env_light->mWindInfluenceEntity[i].mSpeed;
influence->position.z +=
influence->mDirection.z * env_light->mWindInfluenceEntity[i].mSpeed;
cLib_addCalc(&influence->mStrength, 0.0f, 0.2f,
env_light->mWindInfluenceEntity[i].mStrengthMaxVel, 0.001f);
f32 speed = 1.0f - influence->mStrength;
f32 target = env_light->mWindInfluenceEntity[i].mMinRadius;
cLib_addCalc(&influence->mRadius, target, speed, speed * target * 0.05f, 0.01f);
if (influence->mStrength < 0.01f) {
dKyw_pntwind_cut(influence);
env_light->mWindInfluenceEntity[i].mInUse = false;
}
break;
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1765,6 +1971,7 @@ static asm void squal_proc() {
#include "asm/d/kankyo/d_kankyo_wether/squal_proc__Fv.s"
}
#pragma pop
#endif
/* 8005AD44-8005AD98 055684 0054+00 1/1 0/0 0/0 .text dKyw_pntwind_init__Fv */
static void dKyw_pntwind_init() {
@@ -1778,44 +1985,107 @@ static void dKyw_pntwind_init() {
}
/* 8005AD98-8005ADFC 0556D8 0064+00 2/2 0/0 0/0 .text pntwind_set__FP14WIND_INFLUENCE */
static void pntwind_set(WIND_INFLUENCE* pntwind) {
static void pntwind_set(WIND_INFLUENCE* i_pntwind) {
int i = 0;
for (; i < 30; i++) {
if (g_env_light.mPntWind[i] == NULL) {
g_env_light.mPntWind[i] = pntwind;
g_env_light.mPntWind[i] = i_pntwind;
g_env_light.mPntWind[i]->field_0x24 = i;
break;
}
}
if (i >= 30) {
pntwind->field_0x24 = 9999;
i_pntwind->field_0x24 = 9999;
}
}
/* 8005ADFC-8005AE28 05573C 002C+00 0/0 0/0 5/5 .text dKyw_pntwind_set__FP14WIND_INFLUENCE */
void dKyw_pntwind_set(WIND_INFLUENCE* pntwind) {
pntwind->mConstant = 0;
pntwind->field_0x29 = 0;
pntwind_set(pntwind);
void dKyw_pntwind_set(WIND_INFLUENCE* i_pntwind) {
i_pntwind->mConstant = 0;
i_pntwind->field_0x29 = 0;
pntwind_set(i_pntwind);
}
/* 8005AE28-8005AE58 055768 0030+00 1/1 0/0 0/0 .text dKyw_pntlight_set__FP14WIND_INFLUENCE */
static void dKyw_pntlight_set(WIND_INFLUENCE* pntwind) {
pntwind->mConstant = 0;
pntwind->field_0x29 = 1;
pntwind_set(pntwind);
static void dKyw_pntlight_set(WIND_INFLUENCE* i_pntwind) {
i_pntwind->mConstant = 0;
i_pntwind->field_0x29 = 1;
pntwind_set(i_pntwind);
}
/* 8005AE58-8005AE90 055798 0038+00 1/1 0/0 5/5 .text dKyw_pntwind_cut__FP14WIND_INFLUENCE */
void dKyw_pntwind_cut(WIND_INFLUENCE* pntwind_cut) {
if (pntwind_cut != NULL && pntwind_cut->field_0x24 >= 0 && pntwind_cut->field_0x24 < 30) {
g_env_light.mPntWind[pntwind_cut->field_0x24] = NULL;
void dKyw_pntwind_cut(WIND_INFLUENCE* i_pntwind) {
if (i_pntwind != NULL && i_pntwind->field_0x24 >= 0 && i_pntwind->field_0x24 < 30) {
g_env_light.mPntWind[i_pntwind->field_0x24] = NULL;
}
}
/* 8005AE90-8005B23C 0557D0 03AC+00 2/2 0/0 0/0 .text pntwind_get_info__FP4cXyzP4cXyzPfUc
*/
// matches with literals
#ifdef NONMATCHING
static void pntwind_get_info(cXyz* param_0, cXyz* i_dir, f32* i_power, u8 param_3) {
i_dir->x = 0.0f;
i_dir->y = 0.0f;
i_dir->z = 0.0f;
*i_power = 0.0f;
WIND_INFLUENCE* influence;
s32 influence_count = ARRAY_SIZE(g_env_light.mPntWind);
for (int i = 0; i < influence_count; i++) {
influence = g_env_light.mPntWind[i];
if (influence != NULL && influence->field_0x29 == param_3) {
f32 dist = param_0->abs(influence->position);
if (influence->mConstant == 0) {
if (dist < influence->mRadius && influence->mStrength > 0.0f && dist != 0.0f) {
f32 temp_f0;
if (influence->mRadius > 0.0f) {
f32 temp_f0_4 = (dist / influence->mRadius);
temp_f0 = 1.0f - (temp_f0_4 * temp_f0_4);
} else {
temp_f0 = 1.0f;
}
*i_power = influence->mStrength * temp_f0;
cXyz sp10;
sp10.x =
influence->position.x + -(influence->mDirection.x) * influence->mRadius;
sp10.y =
influence->position.y + -(influence->mDirection.y) * influence->mRadius;
sp10.z =
influence->position.z + -(influence->mDirection.z) * influence->mRadius;
dKyr_get_vectle_calc(&sp10, param_0, i_dir);
if (param_0->abs(sp10) < influence->mRadius) {
i_dir->x = 0.0f;
i_dir->y = 0.0f;
i_dir->z = 0.0f;
}
return;
}
} else {
if (dist < influence->mRadius && influence->mStrength > 0.0f && dist != 0.0f) {
f32 temp_f0;
if (influence->mRadius > 0.0f) {
temp_f0 = 1.0f - (dist / influence->mRadius);
} else {
temp_f0 = 1.0f;
}
i_dir->x = influence->mDirection.x;
i_dir->y = influence->mDirection.y;
i_dir->z = influence->mDirection.z;
*i_power = influence->mStrength * temp_f0;
return;
}
}
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1824,6 +2094,7 @@ static asm void pntwind_get_info(cXyz* param_0, cXyz* param_1, f32* param_2, u8
#include "asm/d/kankyo/d_kankyo_wether/pntwind_get_info__FP4cXyzP4cXyzPfUc.s"
}
#pragma pop
#endif
/* 8005B23C-8005B260 055B7C 0024+00 3/3 0/0 0/0 .text dKyw_pntwind_get_info__FP4cXyzP4cXyzPf */
static void dKyw_pntwind_get_info(cXyz* param_0, cXyz* param_1, f32* param_2) {
@@ -1837,26 +2108,14 @@ void dKyw_pntlight_collision_get_info(cXyz* param_0, cXyz* param_1, f32* param_2
}
/* 8005B284-8005B2F8 055BC4 0074+00 0/0 1/1 0/0 .text dKyw_pntwind_get_vecpow__FP4cXyz */
// missing mr instruction
#ifdef NONMATCHING
void dKyw_pntwind_get_vecpow(cXyz* out_vec) {
f32 pow;
cXyz vec;
cXyz dKyw_pntwind_get_vecpow(cXyz* param_0) {
cXyz direction;
f32 power;
dKyw_pntwind_get_info(param_0, &direction, &power);
dKyw_pntwind_get_info(out_vec, &vec, &pow);
vec = vec * pow;
*out_vec = vec;
direction = direction * power;
return direction;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKyw_pntwind_get_vecpow(cXyz* param_0) {
nofralloc
#include "asm/d/kankyo/d_kankyo_wether/dKyw_pntwind_get_vecpow__FP4cXyz.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 804521A8-804521B0 0007A8 0004+04 2/2 0/0 0/0 .sdata2 @5855 */
@@ -1867,6 +2126,33 @@ SECTION_SDATA2 static f32 lit_5855[1 + 1 /* padding */] = {
};
/* 8005B2F8-8005B530 055C38 0238+00 0/0 3/3 13/13 .text dKyw_get_AllWind_vec__FP4cXyzP4cXyzPf */
// matches with literals
#ifdef NONMATCHING
void dKyw_get_AllWind_vec(cXyz* param_0, cXyz* i_direction, f32* i_power) {
dScnKy_env_light_c* env_light = i_dKy_getEnvlight();
dKyw_pntwind_get_info(param_0, i_direction, i_power);
cXyz sp54;
cXyz sp30;
cXyz sp24;
sp30 = env_light->mWind.vec * (env_light->mWind.pow * (1.0f - *i_power));
sp24 = *i_direction * (*i_power * 5.0f);
sp54 = sp30 + sp24;
*i_power = sp54.abs();
sp54 = sp54.normZP();
if (sp54 != cXyz::Zero) {
i_direction->x = sp54.x;
i_direction->y = sp54.y;
i_direction->z = sp54.z;
} else {
i_direction->x = env_light->mWind.vec.x;
i_direction->y = env_light->mWind.vec.y;
i_direction->z = env_light->mWind.vec.z;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1875,6 +2161,7 @@ asm void dKyw_get_AllWind_vec(cXyz* param_0, cXyz* param_1, f32* param_2) {
#include "asm/d/kankyo/d_kankyo_wether/dKyw_get_AllWind_vec__FP4cXyzP4cXyzPf.s"
}
#pragma pop
#endif
/* 8005B530-8005B60C 055E70 00DC+00 0/0 0/0 5/5 .text dKyw_get_AllWind_vecpow__FP4cXyz */
// matches with literals
@@ -1926,5 +2213,3 @@ void dKyw_rain_set(int count) {
g_env_light.mRainCount = count;
g_env_light.mRainCountOrig = count;
}
/* 8037A368-8037A368 0069C8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */