d_a_alink_effect mostly done (#2227)

* d_a_alink_effect work

* more d_a_alink_effect work

* some d_a_alink data cleanup

* d_a_alink_effect mostly done
This commit is contained in:
TakaRikka
2024-10-28 04:00:15 -07:00
committed by GitHub
parent f5e80cf9fd
commit b1d7bc9cc4
19 changed files with 2360 additions and 835 deletions
+489 -592
View File
File diff suppressed because it is too large Load Diff
+142 -27
View File
@@ -18,6 +18,9 @@
#include "d/actor/d_a_horse.h"
#include "d/actor/d_a_midna.h"
#include "d/actor/d_a_e_wb.h"
#include "d/actor/d_a_npc_zra.h"
#include "d/actor/d_a_obj_tks.h"
#include "d/actor/d_a_npc_tkc.h"
/* 80115C20-80115C50 110560 0030+00 72/72 0/0 0/0 .text checkEventRun__9daAlink_cCFv */
BOOL daAlink_c::checkEventRun() const {
@@ -506,10 +509,55 @@ void daAlink_c::setDemoMoveData(u32* param_0, cXyz const* param_1) {
mDemo.setMoveAngle(sp20.atan2sX_Z());
}
/* 80117064-801171F4 1119A4 0190+00 1/1 0/0 0/0 .text setNoDrawSwordShield__9daAlink_cFiUs */
void daAlink_c::setNoDrawSwordShield(int param_0, u16 param_1) {
// NONMATCHING
if (param_0 == 5) {
if (param_1 == 2) {
offNoResetFlg2(FLG2_UNK_2000000);
onNoResetFlg3(FLG3_UNK_80000000);
} else if (param_1 == 1) {
onNoResetFlg2(FLG2_UNK_2000000);
offNoResetFlg3(FLG3_UNK_80000000);
} else {
offNoResetFlg2(FLG2_UNK_2000000);
offNoResetFlg3(FLG3_UNK_80000000);
}
} else if (param_0 == 6) {
if (param_1 != 0) {
onNoResetFlg2(FLG2_UNK_4000000);
} else {
offNoResetFlg2(FLG2_UNK_4000000);
}
} else if (param_0 == 3) {
if (param_1 == 1) {
onEndResetFlg0(ERFLG0_UNK_800000);
} else if (param_1 == 2) {
onEndResetFlg1(ERFLG1_UNK_80000);
} else if (param_1 == 3) {
onEndResetFlg1(ERFLG1_UNK_400000);
}
} else {
if (param_0 == 7) {
if (param_1 == 1) {
onNoResetFlg0(FLG0_PLAYER_NO_DRAW);
} else {
offNoResetFlg0(FLG0_PLAYER_NO_DRAW);
}
} else if (param_0 == 8) {
if (param_1 == 1) {
onNoResetFlg3(FLG3_UNK_1000000);
} else {
offNoResetFlg3(FLG3_UNK_1000000);
}
} else if (param_0 == 9) {
if (param_1 == 1) {
onNoResetFlg2(FLG2_PLAYER_SHADOW);
} else {
offNoResetFlg2(FLG2_PLAYER_SHADOW);
}
}
}
}
/* 801171F4-80117B90 111B34 099C+00 1/1 0/0 0/0 .text setDemoData__9daAlink_cFv */
@@ -828,7 +876,6 @@ void daAlink_c::resetSpecialEvent() {
}
/* 80117CF8-801180EC 112638 03F4+00 4/4 0/0 0/0 .text endDemoMode__9daAlink_cFv */
// NONMATCHING - one wrong branch
void daAlink_c::endDemoMode() {
BOOL temp_r30 = checkFlyAtnWait();
endHighModel();
@@ -896,16 +943,12 @@ void daAlink_c::endDemoMode() {
commonCheckNextAction(0);
} else if (mProcID == PROC_HAWK_CATCH || mProcID == PROC_HAWK_SUBJECT) {
procHawkSubjectInit();
} else if (mProcID != PROC_GRASS_WHISTLE_WAIT) {
if (mDemo.getDemoMode() == 0x2D && mProcID == PROC_WARP) {
return;
}
if (mProcID == PROC_TALK && dComIfGp_checkPlayerStatus0(0, 0x8000000)) {
procWolfLieMoveInit(0);
} else {
checkWaitAction();
}
} else if (mProcID == PROC_GRASS_WHISTLE_WAIT || (mDemo.getDemoMode() != 0x2D && mProcID == PROC_WARP)) {
return;
} else if (mProcID == PROC_TALK && dComIfGp_checkPlayerStatus0(0, 0x8000000)) {
procWolfLieMoveInit(0);
} else {
checkWaitAction();
}
} else if (mProcID == PROC_CAUGHT) {
if (checkModeFlg(0x40000)) {
@@ -1219,15 +1262,46 @@ void daAlink_c::setDeadRideSyncPos() {
/* 80118C98-80118D7C 1135D8 00E4+00 5/5 0/0 0/0 .text checkDeadHP__9daAlink_cFv */
BOOL daAlink_c::checkDeadHP() {
return ((dComIfGs_getLife() == 0 && !checkResetFlg0(RFLG0_UNK_400)) &&
!dComIfGs_checkBottle(FAIRY)) ||
return ((dComIfGs_getLife() == 0 && !checkResetFlg0(RFLG0_UNK_400)) && !dComIfGs_checkBottle(FAIRY)) ||
checkNoResetFlg2(FLG2_FORCE_GAMEOVER) ||
(dComIfGp_getOxygenShowFlag() && dComIfGp_getNowOxygen() == 0);
}
/* 80118D7C-80118FF8 1136BC 027C+00 3/3 0/0 0/0 .text checkDeadAction__9daAlink_cFi */
BOOL daAlink_c::checkDeadAction(int param_0) {
// NONMATCHING
if (!checkEventRun()) {
if (checkDeadHP() && mProcID != PROC_HORSE_RIDE && mProcID != PROC_HORSE_GETOFF && mProcID != PROC_LARGE_DAMAGE && mProcID != PROC_LARGE_DAMAGE_WALL && (param_0 || (mProcID != PROC_LARGE_DAMAGE_UP && mProcID != PROC_WOLF_LARGE_DAMAGE_UP))) {
if (mLinkAcch.i_ChkGroundHit() || checkModeFlg(0x40000) || checkBoarRide() || (checkHorseRide() && !dComIfGp_getHorseActor()->checkJump())) {
return procCoDeadInit(1);
}
if (!checkHorseRide()) {
if (checkMagneBootsOn() && !cancelMagneBootsOn()) {
return procCoDeadInit(1);
}
offCargoCarry();
int var_r29;
if (dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd) && -1000000000.0f != mLinkAcch.GetGroundH()) {
var_r29 = dComIfG_Bgsp().GetExitId(mLinkAcch.m_gnd);
} else {
var_r29 = 0x3F;
}
if (((var_r29 != 0x3F || mExitID != 0x3F) && field_0x3174 == 5 && field_0x33c8 - current.pos.y > 500.0f) || ((mExitID & 0x8000) && checkModeFlg(2))) {
onNoResetFlg2(FLG2_FORCE_GAMEOVER);
return procCoDeadInit(0);
}
return commonFallInit(1);
}
} else if (dComIfGs_getLife() == 0 && !checkResetFlg0(RFLG0_UNK_400) && dComIfGs_checkBottle(FAIRY)) {
makeFairy(&current.pos, 0);
dComIfGs_setBottleItemIn(FAIRY, EMPTY_BOTTLE);
}
}
return 0;
}
@@ -1255,7 +1329,7 @@ void daAlink_c::setHighModelFaceBtk(u16 i_anmID) {
J3DAnmTextureSRTKey* btk = (J3DAnmTextureSRTKey*)dComIfG_getObjectIDRes(
dStage_roomControl_c::getDemoArcName(), i_anmID);
if (btk != NULL && field_0x068c != btk) {
if (btk && field_0x068c != btk) {
btk->searchUpdateMaterialID(mpDemoFCTongueModel->getModelData());
mpDemoFCTongueModel->getModelData()->entryTexMtxAnimator(btk);
@@ -1351,16 +1425,18 @@ f32 daAlink_c::setStickAnmData(J3DAnmBase* i_anm, int param_1, int param_2, u16
return var_f31;
}
/* ############################################################################################## */
/* 804256B8-804256CC 0523D8 0014+00 1/1 0/0 0/0 .bss dummy$36763 */
static u8 dummy[20];
/* 80119464-801195C0 113DA4 015C+00 1/1 0/0 0/0 .text
* daAlink_c_getDemoIDData__FP13dDemo_actor_cPiPiPiPUsPiPi */
static int daAlink_c_getDemoIDData(dDemo_actor_c* param_0, int* param_1, int* param_2,
int* param_3, u16* param_4, int* param_5, int* param_6) {
// NONMATCHING
static u8 dummy[20];
/* JStudio::stb::TParseData_fixed<51> sp50((void*)param_0->getPrm()->getData());
static JStudio::stb::TParseData_fixed<51> dummy;
static JGadget::binary::TValueIterator_raw<u32> it(sp50); */
return 0;
}
@@ -3375,8 +3451,30 @@ int daAlink_c::procZoraMoveInit() {
/* 8011DB9C-8011DDD4 1184DC 0238+00 1/0 0/0 0/0 .text procZoraMove__9daAlink_cFv */
int daAlink_c::procZoraMove() {
// NONMATCHING
return 0;
dComIfGp_evmng_cutEnd(field_0x3184);
fopAc_ac_c* temp_r29 = dComIfGp_event_getPt1();
field_0x2f99 = 0x60;
if (temp_r29 != NULL) {
cXyz sp14;
cXyz sp8;
mDoMtx_stack_c::copy(((daNpc_zrA_c*)temp_r29)->getHeadMtx());
mDoMtx_stack_c::YrotM(-0x4000);
mDoMtx_stack_c::transM(0.0f, 30.0f, -90.0f);
mDoMtx_stack_c::multVecZero(&current.pos);
mDoMtx_stack_c::multVecSR(&cXyz::BaseZ, &sp14);
mDoMtx_stack_c::multVecSR(&cXyz::BaseZ, &sp8);
shape_angle.y = temp_r29->shape_angle.y;
if (sp8.y < 0.0f) {
shape_angle.x = cM_atan2s(-sp14.y, -sp14.absXZ());
} else {
shape_angle.x = sp14.atan2sY_XZ();
}
}
return 1;
}
/* 8011DDD4-8011DED8 118714 0104+00 1/0 0/0 0/0 .text procLookAroundTurnInit__9daAlink_cFv */
@@ -3403,7 +3501,6 @@ int daAlink_c::procLookAroundTurnInit() {
return 1;
}
/* 8011DED8-8011DF68 118818 0090+00 1/0 0/0 0/0 .text procLookAroundTurn__9daAlink_cFv */
int daAlink_c::procLookAroundTurn() {
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
@@ -3859,8 +3956,26 @@ int daAlink_c::procDungeonWarpReadyInit() {
/* 8011EFB8-8011F084 1198F8 00CC+00 1/0 0/0 0/0 .text procDungeonWarpReady__9daAlink_cFv
*/
int daAlink_c::procDungeonWarpReady() {
// NONMATCHING
return 0;
if (mProcVar2.field_0x300c != 0) {
fopAc_ac_c* temp_r3 = fopAcM_SearchByID(field_0x32cc);
if (temp_r3 != NULL) {
field_0x280c.setData(temp_r3);
if (fopAcM_GetName(temp_r3) == PROC_OBJ_TKS) {
((daObjTks_c*)temp_r3)->setStart();
} else {
((daNpcTkc_c*)temp_r3)->setStart();
}
}
} else if (checkAnmEnd(&mUnderFrameCtrl[0])) {
setSingleAnimeBase(ANM_TRADE_ITEM_WAIT);
onModeFlg(0x100);
mProcVar2.field_0x300c = 1;
} else {
setTradeItemOutHand();
}
return 1;
}
/* 8011F084-8011F0F4 1199C4 0070+00 1/0 0/0 0/0 .text procDungeonWarpInit__9daAlink_cFv
File diff suppressed because it is too large Load Diff
+4 -58
View File
@@ -160,67 +160,13 @@ BOOL daAlink_c::checkGrabRooster() {
return false;
}
/* ############################################################################################## */
/* 80425628-80425634 052348 000C+00 0/1 0/0 0/0 .bss @4421 */
#pragma push
#pragma force_active on
static u8 lit_4421[12];
#pragma pop
/* 80425634-80425640 052354 000C+00 2/3 0/0 0/0 .bss l_wolfRopeBaseAnime */
static Vec l_wolfRopeBaseAnime;
/* 80425640-8042564C 052360 000C+00 0/1 0/0 0/0 .bss @14255 */
#pragma push
#pragma force_active on
static u8 lit_14255[12];
#pragma pop
/* 8042564C-80425658 05236C 000C+00 0/1 0/0 0/0 .bss grabCarryOffset0$14254 */
#pragma push
#pragma force_active on
static u8 grabCarryOffset0[12];
#pragma pop
/* 80425658-80425664 052378 000C+00 0/1 0/0 0/0 .bss @14259 */
#pragma push
#pragma force_active on
static u8 lit_14259[12];
#pragma pop
/* 80425664-80425670 052384 000C+00 0/1 0/0 0/0 .bss grabCarryOffset1$14258 */
#pragma push
#pragma force_active on
static u8 grabCarryOffset1[12];
#pragma pop
/* 80425670-8042567C 052390 000C+00 0/1 0/0 0/0 .bss @14263 */
#pragma push
#pragma force_active on
static u8 lit_14263[12];
#pragma pop
/* 8042567C-80425688 05239C 000C+00 0/1 0/0 0/0 .bss grabCarryOffset2$14262 */
#pragma push
#pragma force_active on
static u8 grabCarryOffset2[12];
#pragma pop
/* 80425688-80425694 0523A8 000C+00 0/1 0/0 0/0 .bss @14267 */
#pragma push
#pragma force_active on
static u8 lit_14267[12];
#pragma pop
/* 80425694-804256A0 0523B4 000C+00 0/1 0/0 0/0 .bss grabCarryOffset3$14266 */
#pragma push
#pragma force_active on
static u8 grabCarryOffset3[12];
#pragma pop
/* 800E3F50-800E4BD4 0DE890 0C84+00 1/1 0/0 0/0 .text setGrabItemPos__9daAlink_cFv */
void daAlink_c::setGrabItemPos() {
// NONMATCHING
static cXyz grabCarryOffset0(0.0f, -30.0f, 25.0f);
static cXyz grabCarryOffset1(0.0f, 20.0f, -5.0f);
static cXyz grabCarryOffset2(-3.0f, 30.0f, -30.0f);
static cXyz grabCarryOffset3(-4.5f, 26.0f, -33.0f);
}
/* 800E4BD4-800E4DEC 0DF514 0218+00 16/16 0/0 0/0 .text freeGrabItem__9daAlink_cFv */
+1 -8
View File
@@ -830,15 +830,8 @@ void daAlink_c::setHookshotTopPosFly() {
}
}
/* ############################################################################################## */
/* 804256A0-804256AC 0523C0 000C+00 0/1 0/0 0/0 .bss @29722 */
#pragma push
#pragma force_active on
static u8 lit_29722[12];
#pragma pop
/* 804256AC-804256B8 0523CC 000C+00 1/2 0/0 0/0 .bss l_hookSnowSandHitScale */
static Vec l_hookSnowSandHitScale;
static cXyz l_hookSnowSandHitScale(0.5f, 0.5f, 0.5f);
/* 80109BDC-8010B2DC 10451C 1700+00 1/1 0/0 0/0 .text setHookshotPos__9daAlink_cFv */
// NONMATCHING - almost, just cXyz stack order
-6
View File
@@ -2017,12 +2017,6 @@ int daAlink_c::procCrouch() {
return 1;
}
/* 80425604-80425610 052324 000C+00 0/1 0/0 0/0 .bss l_sumouBaseAnimeSp */
static cXyz l_sumouBaseAnimeSp;
/* 8042561C-80425628 05233C 000C+00 37/39 0/0 0/0 .bss l_wolfBaseAnime */
static cXyz l_wolfBaseAnime;
BOOL daMidna_c::checkMidnaRealBody() {
return dKy_darkworld_check() == 1 || dComIfGs_isTransformLV(3);
}
+2 -7
View File
@@ -1236,13 +1236,8 @@ extern "C" u8 func_80141AE8(u8*) {
}
/* 80141B04-801446D4 13C444 2BD0+00 0/0 1/0 0/0 .text __sinit_d_a_alink_cpp */
void __sinit_d_a_alink_cpp(){// NONMATCHING
}
#pragma push
#pragma force_active on
REGISTER_CTORS(0x80141B04, __sinit_d_a_alink_cpp);
#pragma pop
/* void __sinit_d_a_alink_cpp(){// NONMATCHING
} */
/* 801446D4-801446DC 13F014 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
static void func_801446D4() {
+8 -14
View File
@@ -211,8 +211,8 @@ void daAlink_c::changeWolf() {
field_0x30b4 = 4;
field_0x30bc = 31;
field_0x30be = 36;
field_0x32c4 = 1;
field_0x32c6 = 2;
field_0x32c4[0] = 1;
field_0x32c4[1] = 2;
field_0x30b6 = 2;
attention_info.field_0xa = 50;
@@ -474,8 +474,8 @@ void daAlink_c::changeLink(int param_0) {
field_0x30bc = 21;
field_0x30be = 26;
field_0x30b6 = 5;
field_0x32c4 = 2;
field_0x32c6 = 16;
field_0x32c4[0] = 2;
field_0x32c4[1] = 16;
attention_info.field_0xa = 10;
dCcD_Cyl* cyl_p = field_0x850;
@@ -5747,13 +5747,13 @@ BOOL daAlink_c::setWolfEnemyHangBitePos(fopEn_enemy_c* i_enemy) {
/* ############################################################################################## */
/* 804256EC-804256F8 05240C 000C+00 0/1 0/0 0/0 .bss @50952 */
#pragma push
/* #pragma push
#pragma force_active on
static u8 lit_50952[12];
#pragma pop
#pragma pop */
/* 804256F8-80425708 052418 000C+04 1/2 0/0 0/0 .bss l_wolfBiteHitMarkScale */
static Vec l_wolfBiteHitMarkScale;
static cXyz l_wolfBiteHitMarkScale(0.5f, 0.5f, 0.5f);
/* 801396F8-801397A4 134038 00AC+00 1/1 0/0 0/0 .text
* setWolfBiteDamage__9daAlink_cFP13fopEn_enemy_c */
@@ -7834,13 +7834,7 @@ int daAlink_c::procWolfDigThroughInit(int param_0) {
mProcVar5.field_0x3012 = param_0;
u16* var_r29;
if (var_r27 == 13) {
var_r29 = snowID;
} else {
var_r29 = smokeID;
}
const u16* var_r29 = var_r27 == 13 ? snowID : smokeID;
for (int i = 0; i < 4; i++) {
dComIfGp_particle_set(*var_r29, &current.pos, &shape_angle, NULL);
var_r29++;
+2 -2
View File
@@ -242,7 +242,7 @@ extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
*/
int daBoomerang_sight_c::createHeap() {
void* resource;
char* arcName = daAlink_c::getAlinkArcName();
const char* arcName = daAlink_c::getAlinkArcName();
JKRArchive* loader = dComIfG_getObjectResInfo(arcName)->getArchive();
field_0x4 = new J2DScreen();
@@ -2033,4 +2033,4 @@ static u8 data_804A2DB0[4];
static u8 data_804A2DB4[4];
#pragma pop
/* 804A2990-804A2990 000140 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
/* 804A2990-804A2990 000140 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+1 -1
View File
@@ -1194,7 +1194,7 @@ u8 dPa_control_c::mLifeBall[24];
JPAEmitterManager* dPa_control_c::mEmitterMng;
/* 80450EA4-80450EA8 0003A4 0004+00 1/1 1/1 0/0 .sbss mWaterBubblePcallBack__13dPa_control_c */
u8 dPa_control_c::mWaterBubblePcallBack[4];
JPAParticleCallBack dPa_control_c::mWaterBubblePcallBack;
/* 80450EA8-80450EAC 0003A8 0004+00 3/3 0/0 0/0 .sbss mFsenthPcallBack__13dPa_control_c
*/