d_a_obj_tobyhouse equivalent (#2546) (#2543)

Co-authored-by: hatal175 <hatal175@users.noreply.github.com>
This commit is contained in:
Max Roncace
2025-07-22 15:22:58 +03:00
committed by GitHub
co-authored by hatal175
parent 69aaeeeda6
commit d528862dd0
12 changed files with 275 additions and 249 deletions
+1 -1
View File
@@ -91,6 +91,6 @@ __vt__12dBgS_ObjAcch = .data:0x00000134; // type:object size:0x24 scope:global
__vt__12J3DFrameCtrl = .data:0x00000158; // type:object size:0xC scope:global
__vt__10daFr_HIO_c = .data:0x00000164; // type:object size:0xC scope:global
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
lbl_72_bss_8 = .bss:0x00000008; // type:object size:0x1 data:byte
l_initHIO = .bss:0x00000008; // type:object size:0x1 data:byte
@3644 = .bss:0x0000000C; // type:object size:0xC scope:local
l_HIO = .bss:0x00000018; // type:object size:0x2C scope:global data:byte
+1 -1
View File
@@ -27,4 +27,4 @@ lbl_22_data_10 = .data:0x00000010; // type:object size:0x10
mode_proc$3725 = .data:0x00000038; // type:object size:0x18 scope:local
Mthd_Table__Q210daObjTimer27@unnamed@d_a_obj_timer_cpp@ = .data:0x00000050; // type:object size:0x20 scope:global
g_profile_Obj_Timer = .data:0x00000070; // type:object size:0x30 scope:global
lbl_22_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte
init$1527 = .bss:0x00000000; // type:object size:0x1 data:byte
+1 -1
View File
@@ -67,6 +67,6 @@ lbl_73_data_134 = .data:0x00000134; // type:object size:0xC
@92624 = .data:0x00000140; // type:object size:0xC scope:local
__RTTI__10daFr_HIO_c = .data:0x0000014C; // type:object size:0x8 scope:global
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
lbl_73_bss_8 = .bss:0x00000008; // type:object size:0x1 data:byte
l_initHIO = .bss:0x00000008; // type:object size:0x1 data:byte
@92050 = .bss:0x0000000C; // type:object size:0xC scope:local
l_HIO = .bss:0x00000018; // type:object size:0x2C scope:global data:byte
+1 -1
View File
@@ -125,5 +125,5 @@ lbl_70_data_2F8 = .data:0x000002F8; // type:object size:0x24
@117848 = .data:0x000004E0; // type:object size:0xC scope:local
@117849 = .data:0x00000504; // type:object size:0x11 scope:local data:string
@117850 = .data:0x0000052C; // type:object size:0xD scope:local data:string
lbl_70_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte
l_initHIO = .bss:0x00000000; // type:object size:0x1 data:byte
l_HIO = .bss:0x00000004; // type:object size:0x2C scope:global data:byte
+3 -3
View File
@@ -1499,7 +1499,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_obj_ito"),
ActorRel(NonMatching, "d_a_obj_movebox"),
ActorRel(NonMatching, "d_a_obj_swpush"),
ActorRel(NonMatching, "d_a_obj_timer"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_timer"),
ActorRel(MatchingFor("GZ2E01"), "d_a_path_line"),
ActorRel(NonMatching, "d_a_scene_exit"),
ActorRel(MatchingFor("GZ2E01"), "d_a_set_bgobj"),
@@ -1921,7 +1921,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_enemy_create"),
ActorRel(NonMatching, "d_a_obj_fallobj"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_fan"),
ActorRel(NonMatching, "d_a_obj_fchain"),
ActorRel(Equivalent, "d_a_obj_fchain"), # weak func order
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_fireWood"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_fireWood2"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_firepillar"),
@@ -2229,7 +2229,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01"), "d_a_tag_wara_howl"),
ActorRel(MatchingFor("GZ2E01"), "d_a_tag_watchge"),
ActorRel(MatchingFor("GZ2E01"), "d_a_tag_waterfall"),
ActorRel(NonMatching, "d_a_tag_wljump"),
ActorRel(MatchingFor("GZ2E01"), "d_a_tag_wljump"),
ActorRel(MatchingFor("GZ2E01"), "d_a_tag_yami", extra_cflags=['-pragma "nosyminline off"']),
ActorRel(MatchingFor("GZ2E01"), "d_a_talk"),
ActorRel(MatchingFor("GZ2E01"), "d_a_tboxSw"),
+3 -3
View File
@@ -16,12 +16,11 @@
* @details
*
*/
class fr_class : public fopAc_ac_c {
class fr_class : public fopEn_enemy_c {
public:
/* 0x568 */ u8 field_0x568[0x5ac - 0x568];
/* 0x5AC */ request_of_phase_process_class mPhase;
/* 0x5B4 */ u8 field_0x5b4;
/* 0x5B5 */ u8 field_0x5b5[0x5c4 - 0x5b5];
/* 0x5B5 */ cXyz field_0x5b8;
/* 0x5C4 */ mDoExt_McaMorf* mMorf;
/* 0x5C8 */ mDoExt_btkAnm* mBtkAnm;
/* 0x5CC */ u8 field_0x5cc;
@@ -77,6 +76,7 @@ public:
/* 0x20 */ f32 field_0x20;
/* 0x24 */ f32 field_0x24;
/* 0x28 */ f32 field_0x28;
/* 0x2C */ f32 field_0x2c;
};
+1 -1
View File
@@ -32,7 +32,7 @@ class Act_c : public fopAc_ac_c {
/* 80485284 */ void mode_wait();
/* 804852E0 */ void mode_count_init();
/* 80485324 */ void mode_count();
/* 804854BC */ int _execute();
/* 804854BC */ bool _execute();
int prm_get_swSave() {
return daObj::PrmAbstract(this,PRM_8, PRM_16);
+187 -156
View File
File diff suppressed because it is too large Load Diff
+67 -76
View File
@@ -140,123 +140,114 @@ int daObjFchain_c::execute() {
} else {
field_0x588 = 0;
}
cXyz* local_148 = &current.pos;
cXyz local_54;
cXyz cStack_60;
cXyz* sp_38 = &current.pos;
cXyz sp_12c;
cXyz sp_120;
if (field_0x586 != 0) {
field_0x586--;
}
cXyz* pcVar12 = field_0x694;
cXyz* local_150 = field_0x79c;
int i;
cXyz* var_r28 = field_0x694;
cXyz* sp_30 = field_0x79c;
u32 isWolf = daPy_py_c::checkNowWolf();
daPy_py_c* player = daPy_getLinkPlayerActorClass();
for (int i = 0; i < 22; i++) {
local_54 = (*pcVar12 - *local_148) + *local_150;
local_54.y += -1.5f;
for (i = 0; i < 22; i++, var_r28++, sp_30++) {
sp_12c = (*var_r28 - *sp_38) + *sp_30;
sp_12c.y += -1.5f;
if (dComIfGs_isEventBit(0x510)) {
if (isWolf) {
checkPlayerFoot(pcVar12, player->getLeftHandPosP(), &local_54);
checkPlayerFoot(pcVar12, player->getRightHandPosP(), &local_54);
checkPlayerFoot(var_r28, player->getLeftHandPosP(), &sp_12c);
checkPlayerFoot(var_r28, player->getRightHandPosP(), &sp_12c);
}
checkPlayerFoot(pcVar12, player->getLeftFootPosP(), &local_54);
checkPlayerFoot(pcVar12, player->getRightFootPosP(), &local_54);
checkPlayerFoot(var_r28, player->getLeftFootPosP(), &sp_12c);
checkPlayerFoot(var_r28, player->getRightFootPosP(), &sp_12c);
}
cStack_60 = local_54;
local_54.normalizeZP();
*pcVar12 = *local_148 + (local_54 * 9.0f);
if (pcVar12->y < current.pos.y) {
setGroundVec(&cStack_60, current.pos.y - pcVar12->y);
*pcVar12 = *local_148 + (cStack_60 * 9.0f);
sp_120 = sp_12c;
sp_12c.normalizeZP();
*var_r28 = *sp_38 + (sp_12c * 9.0f);
if (var_r28->y < current.pos.y) {
setGroundVec(&sp_120, current.pos.y - var_r28->y);
*var_r28 = *sp_38 + (sp_120 * 9.0f);
}
local_150++;
local_148 = pcVar12;
pcVar12++;
sp_38 = var_r28;
}
if (isWolf && !dComIfGs_isEventBit(0x510)) {
mDoMtx_multVec(
player->getModelJointMtx(17), &wolfChainBaseOffset,
&field_0x694[21]);
cXyz diff = (field_0x694[21] - current.pos);
f32 dVar13 = diff.abs();
sp_12c = (field_0x694[21] - current.pos);
f32 dVar13 = sp_12c.abs();
if (dVar13 > 198.0f) {
s16 sVar10 = cM_atan2s(-local_54.x, -local_54.z);
player->setOutPower(dVar13 - 198.0f, sVar10, 0);
player->setOutPower(dVar13 - 198.0f, cM_atan2s(-sp_12c.x, -sp_12c.z), 0);
player->onWolfFchainPull();
cXyz* pcVar8 = field_0x694;
local_148 = &current.pos;
local_54 *= 9.0f / dVar13;
for (int i = 0; pcVar12 = pcVar8, i < 22; i++) {
*pcVar8 = *local_148 + local_54;
local_148 = pcVar8;
pcVar8++;
var_r28 = field_0x694;
sp_38 = &current.pos;
sp_12c *= 9.0f / dVar13;
for (i = 0; i < 22; i++, var_r28++) {
*var_r28 = *sp_38 + sp_12c;
sp_38 = var_r28;
}
field_0x584 = 0;
} else {
cXyz* pcVar8 = &field_0x694[20];
local_150 = &field_0x79c[20];
local_148 = pcVar8 + 1;
for (int i = 20; i >= 0; i--) {
local_54 = (*pcVar8 - *local_148) + *local_150;
local_54.y += -1.5f;
cStack_60 = local_54;
local_54.normalizeZP();
*pcVar8 = *local_148 + (local_54 * 9.0f);
if (pcVar8->y < current.pos.y) {
setGroundVec(&cStack_60, current.pos.y - pcVar8->y);
*pcVar8 = *local_148 + (cStack_60 * 9.0f);
var_r28 = &field_0x694[20];
sp_30 = &field_0x79c[20];
sp_38 = var_r28 + 1;
for (i = 20; i >= 0; i--, var_r28--, sp_30--) {
sp_12c = (*var_r28 - *sp_38) + *sp_30;
sp_12c.y += -1.5f;
sp_120 = sp_12c;
sp_12c.normalizeZP();
*var_r28 = *sp_38 + (sp_12c * 9.0f);
if (var_r28->y < current.pos.y) {
setGroundVec(&sp_120, current.pos.y - var_r28->y);
*var_r28 = *sp_38 + (sp_120 * 9.0f);
}
local_150--;
local_148 = pcVar8;
pcVar8--;
sp_38 = var_r28;
}
}
}
local_148 = &current.pos;
local_150 = field_0x694;
cXyz* pcVar8 = field_0x79c;
csXyz* local_15c = field_0x8a4;
cXyz* local_160 = field_0x58c;
s16 local_178 = 0;
for (int i = 0; i < 22; i++) {
*local_150 = (*pcVar8 - *local_160) * 0.3f;
*local_160 = *pcVar8;
local_54 = *local_148 - *pcVar8;
local_15c->x = local_54.atan2sY_XZ();
if (!(local_54.absXZ() < 3.5f)) {
local_15c->y = local_54.atan2sX_Z();
sp_38 = &current.pos;
var_r28 = field_0x694;
sp_30 = field_0x79c;
csXyz* sp_24 = field_0x8a4;
cXyz* sp_20 = field_0x58c;
s16 sp_08 = 0;
for (i = 0; i < 22; i++, var_r28++, sp_30++, sp_24++, sp_20++) {
*sp_30 = (*var_r28 - *sp_20) * 0.3f;
*sp_20 = *var_r28;
sp_12c = *sp_38 - *var_r28;
sp_24->x = sp_12c.atan2sY_XZ();
if (!(sp_12c.absXZ() < 3.5f)) {
sp_24->y = sp_12c.atan2sX_Z();
}
if (local_150->abs2() > 3.0f && field_0x586 == 0) {
if (sp_30->abs2() > 3.0f && field_0x586 == 0) {
f32 fVar1;
if (cM_rnd() < 0.5f) {
fVar1 = 1.0f;
} else {
fVar1 = -1.0f;
}
local_15c->z = local_178 + 0x4000 +
sp_24->z = sp_08 + 0x4000 +
(fVar1 * (cM_rndF(4096.0f) + 1536.0f));
if (pcVar8->y <= current.pos.y + 2.0f) {
if ((local_15c->z >= 0 && local_15c->z < 0x4000) ||
(local_15c->z > -0x7fff && local_15c->z < -0x4000))
if (var_r28->y <= current.pos.y + 2.0f) {
if ((sp_24->z >= 0 && sp_24->z < 0x4000) ||
(sp_24->z > -0x7fff && sp_24->z < -0x4000))
{
local_15c->z = cM_rndFX(2048.0f) + 4096.0f;
sp_24->z = cM_rndFX(2048.0f) + 4096.0f;
} else {
local_15c->z = cM_rndFX(2048.0f) + -4096.0f;
sp_24->z = cM_rndFX(2048.0f) + -4096.0f;
}
}
}
local_178 = local_15c->z;
local_150++;
local_15c++;
local_160++;
local_148 = pcVar8;
pcVar8++;
sp_08 = sp_24->z;
sp_38 = var_r28;
}
if (field_0x584 == 0) {
field_0x584 = 1;
local_150 = field_0x79c;
sp_30 = field_0x79c;
for (int i = 0; i < 22; i++) {
*local_150 = cXyz::Zero;
local_150++;
*sp_30 = cXyz::Zero;
sp_30++;
}
field_0x586 = 5;
}
+1 -1
View File
@@ -194,7 +194,7 @@ int daObjL6Bm_c::CreateHeap() {
}
#ifdef DEBUG
pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, BTK_EF_BIMOBEAM_OFF);
pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, BTK_EF_BIMOBEAM_0FF);
JUT_ASSERT(660, pbtk != 0);
#endif
+4 -4
View File
@@ -89,7 +89,7 @@ void daObjTimer::Act_c::mode_count() {
}
/* 804854BC-804855A4 00039C 00E8+00 1/1 0/0 0/0 .text _execute__Q210daObjTimer5Act_cFv */
int daObjTimer::Act_c::_execute() {
bool daObjTimer::Act_c::_execute() {
static daObjTimer::Act_c::modeProc const mode_proc[2] = {
&daObjTimer::Act_c::mode_wait,
&daObjTimer::Act_c::mode_count,
@@ -97,10 +97,10 @@ int daObjTimer::Act_c::_execute() {
if (fopAcM_isSwitch(this, prm_get_sw2Save())) {
fopAcM_delete(this);
return 1;
return true;
} else {
(this->*mode_proc[field_0x568])();
return 1;
return true;
}
}
@@ -136,8 +136,8 @@ namespace {
(process_method_func)Mthd_Create,
(process_method_func)Mthd_Delete,
(process_method_func)Mthd_Execute,
(process_method_func)Mthd_Draw,
(process_method_func)Mthd_IsDelete,
(process_method_func)Mthd_Draw,
};
}
+5 -1
View File
@@ -83,7 +83,7 @@ int daTagWljump_c::execute() {
if (!midna->checkShadowModeTalkWait()) {
if (shape_angle.x != 0 && (field_0x571 == 0xff || !fopAcM_isSwitch(this, field_0x571))) {
if (field_0x56f == 0) {
mMsgFlow.init(this, shape_angle.x & 0xFFFF, 0, NULL);
mMsgFlow.init(this, (u16)shape_angle.x, 0, NULL);
field_0x56f = 1;
mDoAud_seStart(Z2SE_NAVI_TALK_START, NULL, 0, 0);
} else {
@@ -207,7 +207,11 @@ int daTagWljump_c::execute() {
field_0x570 = field_0x568;
field_0x568 = -1;
} else {
#if DEBUG
attention_info.flags |= 0x801;
#else
attention_info.flags |= 0x81;
#endif
}
} else {
field_0x572 = 0;