d_a_e_bi & d_a_obj_fw equivalent (#2592)

* initial work

* d_a_obj_fw equivalent

* d_a_e_bi equivalent

* Update d_a_obj_fw.cpp

---------

Co-authored-by: hatal175 <hatal175@users.noreply.github.com>
This commit is contained in:
Carco_21 2025-08-19 11:48:40 -04:00 committed by GitHub
parent aaa9cb22ef
commit 7a87b3132f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 1399 additions and 1494 deletions

View File

@ -1652,7 +1652,7 @@ config.libs = [
ActorRel(Equivalent, "d_a_e_ba"), # weak func order
ActorRel(NonMatching, "d_a_e_bee"),
ActorRel(MatchingFor("GZ2E01"), "d_a_e_bg"),
ActorRel(NonMatching, "d_a_e_bi"),
ActorRel(Equivalent, "d_a_e_bi"), # weak func order
ActorRel(MatchingFor("GZ2E01"), "d_a_e_bi_leaf"),
ActorRel(Equivalent, "d_a_e_bs"), # weak func order
ActorRel(Equivalent, "d_a_e_bu"),
@ -1930,7 +1930,7 @@ config.libs = [
ActorRel(Equivalent, "d_a_obj_flag2"), # weak function order
ActorRel(NonMatching, "d_a_obj_flag3"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_food"),
ActorRel(NonMatching, "d_a_obj_fw"),
ActorRel(Equivalent, "d_a_obj_fw"), # weak function order
ActorRel(NonMatching, "d_a_obj_gadget"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_ganonwall"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_ganonwall2"),

View File

@ -1,5 +1,8 @@
#ifndef D_A_E_BI_H
#define D_A_E_BI_H
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"
#include "f_op/f_op_actor_mng.h"
/**
@ -9,17 +12,75 @@
*
* @details
*
*/
class e_bi_class : public fopEn_enemy_c {
private:
/* 0x5ac */ u8 field_0x5ac[0xc00 - 0x5ac];
*/
class e_bi_class {
public:
/* 0x000 */ fopEn_enemy_c actor;
/* 0x5AC */ request_of_phase_process_class mPhase;
/* 0x5B4 */ u8 field_0x5b4;
/* 0x5B5 */ u8 field_0x5b5;
/* 0x5B6 */ u8 field_0x5b6;
/* 0x5B7 */ u8 field_0x5b7;
/* 0x5B8 */ mDoExt_McaMorfSO* mpModelMorf;
/* 0x5BC */ Z2CreatureEnemy mSound;
/* 0x660 */ f32 field_0x660;
/* 0x664 */ int mAnm;
/* 0x668 */ u32 mShadowKey;
/* 0x66C */ s16 field_0x66c;
/* 0x66E */ s16 mAction;
/* 0x670 */ s16 field_0x670;
/* 0x672 */ u8 field_0x672[0x680 - 0x672];
/* 0x680 */ s16 field_0x680;
/* 0x682 */ u8 field_0x682[0x684 - 0x682];
/* 0x684 */ s16 field_0x684;
/* 0x688 */ f32 field_0x688;
/* 0x68C */ s16 field_0x68c[3];
/* 0x692 */ s16 field_0x692;
/* 0x694 */ s16 field_0x694;
/* 0x696 */ s16 field_0x696;
/* 0x698 */ s16 field_0x698;
/* 0x69A */ u8 field_0x69a[0x6a2 - 0x69a];
/* 0x6A2 */ s16 field_0x6a2;
/* 0x6A4 */ s16 field_0x6a4;
/* 0x6A6 */ s16 field_0x6a6;
/* 0x6A8 */ f32 field_0x6a8;
/* 0x6AC */ f32 field_0x6ac;
/* 0x6B0 */ s8 field_0x6b0;
/* 0x6B4 */ dCcD_Stts mStts;
/* 0x6F0 */ dCcD_Cyl field_0x6f0;
/* 0x82C */ dCcD_Sph field_0x82c;
/* 0x964 */ dCcU_AtInfo mAtInfo;
/* 0x988 */ u8 field_0x988;
/* 0x98C */ dBgS_AcchCir mAcchCir;
/* 0x9CC */ dBgS_ObjAcch mObjAcch;
/* 0xBA4 */ fpc_ProcID field_0xba4;
/* 0xBA8 */ fpc_ProcID field_0xba8;
/* 0xBAC */ s8 field_0xbac;
/* 0xBAD */ s8 field_0xbad;
/* 0xBB0 */ cXyz field_0xbb0;
/* 0xBBC */ u8 field_0xbbc[0xbc4 - 0xbbc];
/* 0xBC4 */ u32 field_0xbc4[5];
/* 0xBD8 */ u32 field_0xbd8[4];
/* 0xBE8 */ u32 field_0xbe8;
/* 0xBEC */ u8 field_0xbec[0xbfc - 0xbec];
/* 0xBFC */ u8 field_0xbfc;
};
STATIC_ASSERT(sizeof(e_bi_class) == 0xc00);
class daE_BI_HIO_c {
class daE_BI_HIO_c : public JORReflexible {
public:
/* 8068A5EC */ daE_BI_HIO_c();
/* 8068D2DC */ ~daE_BI_HIO_c();
/* 8068D2DC */ virtual ~daE_BI_HIO_c() {}
/* 爆弾虫 - Bomb Bug */
/* 0x04 */ s8 field_0x4;
/* 0x08 */ f32 basic_size; // 基本サイズ - Basic Size
/* 0x0C */ f32 search_range; // サーチ範囲 - Search Range
/* 0x10 */ f32 track_range; // 追尾範囲 - Track Range
/* 0x14 */ s16 time_to_get_going; // 動き出すまでの時間 - Time To Get Going
/* 0x18 */ f32 movement_spd; // 移動速度 - Movement Speed
};

View File

@ -10,18 +10,50 @@
*
* @details
*
*/
class obj_fw_class : public fopAc_ac_c {
private:
/* 0x568 */ u8 field_0x568[0x628 - 0x568];
*/
class obj_fw_class {
public:
/* 0x000 */ fopAc_ac_c actor;
/* 0x568 */ request_of_phase_process_class mPhase;
/* 0x570 */ u8 field_0x570;
/* 0x574 */ J3DModel* mpModel;
/* 0x578 */ s16 field_0x578;
/* 0x57A */ s16 field_0x57a;
/* 0x57C */ u8 field_0x57c[0x57e - 0x57c];
/* 0x57E */ s16 field_0x57e[2];
/* 0x584 */ f32 field_0x584;
/* 0x588 */ f32 field_0x588;
/* 0x58C */ f32 field_0x58c;
/* 0x590 */ s16 field_0x590;
/* 0x592 */ s16 field_0x592;
/* 0x594 */ f32 field_0x594;
/* 0x598 */ f32 field_0x598;
/* 0x59C */ u8 field_0x59c[0x5a0 - 0x59c];
/* 0x5A0 */ s16 field_0x5a0;
/* 0x5A2 */ s16 field_0x5a2;
/* 0x5A4 */ s16 field_0x5a4;
/* 0x5A8 */ cXyz field_0x5a8;
/* 0x5B4 */ u8 field_0x5b4[0x5b8 - 0x5b4];
/* 0x5B8 */ Mtx mMtx;
/* 0x5E8 */ dBgW* mpBgW;
/* 0x5EC */ Z2SoundObjSimple mSound;
/* 0x60C */ u8 field_0x60c[0x61c - 0x60c];
/* 0x61C */ u32 field_0x61c;
/* 0x620 */ u8 field_0x620[0x624 - 0x620];
/* 0x624 */ u8 field_0x624;
};
STATIC_ASSERT(sizeof(obj_fw_class) == 0x628);
class daObj_Fw_HIO_c {
class daObj_Fw_HIO_c : public JORReflexible {
public:
/* 80BF204C */ daObj_Fw_HIO_c();
/* 80BF2AB0 */ ~daObj_Fw_HIO_c();
/* 80BF2AB0 */ virtual ~daObj_Fw_HIO_c() {}
/* 流木 - Driftwood */
/* 0x4 */ s8 field_0x4;
/* 0x8 */ f32 size; // 大きさ - Size
};

View File

@ -88,6 +88,16 @@ public:
return (fopAc_ac_c*)fopAcM_fastCreate(PROC_NBOMB, 0x11, i_pos, i_roomNo, i_angle, NULL, -1,
NULL, NULL);
}
static fopAc_ac_c* createEnemyBombHookshot(cXyz* i_pos, csXyz* i_angle, int i_roomNo) {
return (fopAc_ac_c*)fopAcM_fastCreate(PROC_NBOMB, 13, i_pos, i_roomNo, i_angle, NULL, -1,
NULL, NULL);
}
static fopAc_ac_c* createEnemyBomb(cXyz* i_pos, csXyz* i_angle, int i_roomNo) {
return (fopAc_ac_c*)fopAcM_fastCreate(PROC_NBOMB, 0xB, i_pos, i_roomNo, i_angle, NULL, -1,
NULL, NULL);
}
};
#endif /* D_D_BOMB_H */

File diff suppressed because it is too large Load Diff

View File

@ -4,103 +4,317 @@
*/
#include "d/actor/d_a_obj_fw.h"
#include "dol2asm.h"
#include "d/d_com_inf_game.h"
#include "d/d_bg_w.h"
#include "d/d_s_play.h"
enum RYUW00_RES_File_ID {
/* BMDR */
/* 0x4 */ BMDR_K_RYUWOOD00 = 0x4,
/* 0x5 */ BMDR_K_RYUWOOD01,
//
// Forward References:
//
extern "C" void __ct__14daObj_Fw_HIO_cFv();
extern "C" static void ride_call_back__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c();
extern "C" static void daObj_Fw_Draw__FP12obj_fw_class();
extern "C" static void water_check__FP12obj_fw_class();
extern "C" static void fw_float__FP12obj_fw_class();
extern "C" static void action__FP12obj_fw_class();
extern "C" static void daObj_Fw_Execute__FP12obj_fw_class();
extern "C" static bool daObj_Fw_IsDelete__FP12obj_fw_class();
extern "C" static void daObj_Fw_Delete__FP12obj_fw_class();
extern "C" static void useHeapInit__FP10fopAc_ac_c();
extern "C" static void daObj_Fw_Create__FP10fopAc_ac_c();
extern "C" void __dt__14daObj_Fw_HIO_cFv();
extern "C" void __sinit_d_a_obj_fw_cpp();
extern "C" extern char const* const d_a_obj_fw__stringBase0;
//
// External References:
//
extern "C" void mDoMtx_XrotM__FPA4_fs();
extern "C" void mDoMtx_YrotM__FPA4_fs();
extern "C" void mDoMtx_ZrotM__FPA4_fs();
extern "C" void scaleM__14mDoMtx_stack_cFfff();
extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
extern "C" void __ct__10fopAc_ac_cFv();
extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
extern "C" void fopAcM_SetMin__FP10fopAc_ac_cfff();
extern "C" void fopAcM_SetMax__FP10fopAc_ac_cfff();
extern "C" void fopAcM_effHamonSet__FPUlPC4cXyzff();
extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
extern "C" void dComIfGp_getReverb__Fi();
extern "C" void isDungeonItem__12dSv_memBit_cCFi();
extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
extern "C" void Release__4cBgSFP9dBgW_Base();
extern "C" void GroundCross__4cBgSFP11cBgS_GndChk();
extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c();
extern "C" void dBgS_MoveBGProc_Typical__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz();
extern "C" void __ct__18dBgS_ObjGndChk_SplFv();
extern "C" void __dt__18dBgS_ObjGndChk_SplFv();
extern "C" void Set__4cBgWFP6cBgD_tUlPA3_A4_f();
extern "C" void __ct__4dBgWFv();
extern "C" void Move__4dBgWFv();
extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
extern "C" void cM_atan2s__Fff();
extern "C" void cM_rndF__Ff();
extern "C" void SetPos__11cBgS_GndChkFPC3Vec();
extern "C" void cLib_addCalc2__FPffff();
extern "C" void cLib_addCalc0__FPfff();
extern "C" void cLib_addCalcAngleS2__FPssss();
extern "C" void deleteObject__14Z2SoundObjBaseFv();
extern "C" void __ct__16Z2SoundObjSimpleFv();
extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void _savegpr_29();
extern "C" void _restgpr_29();
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" void __register_global_object();
//
// Declarations:
//
/* ############################################################################################## */
/* 80BF2B48-80BF2B4C 000000 0004+00 5/5 0/0 0/0 .rodata @3647 */
SECTION_RODATA static f32 const lit_3647 = 1.0f;
COMPILER_STRIP_GATE(0x80BF2B48, &lit_3647);
/* 80BF2BAC-80BF2BB4 000000 0008+00 1/1 0/0 0/0 .data bmdd$3836 */
SECTION_DATA static u8 bmdd[8] = {
0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05,
/* DZB */
/* 0x8 */ DZB_K_RYUWOOD00 = 0x8,
/* 0x9 */ DZB_K_RYUWOOD01,
};
/* 80BF2BB4-80BF2BBC 000008 0008+00 1/1 0/0 0/0 .data dzbd$3837 */
SECTION_DATA static u8 dzbd[8] = {
0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09,
enum Action {
/* 0x0 */ ACTION_FLOAT,
};
/* 80BF204C-80BF2070 0000EC 0024+00 1/1 0/0 0/0 .text __ct__14daObj_Fw_HIO_cFv */
daObj_Fw_HIO_c::daObj_Fw_HIO_c() {
field_0x4 = -1;
size = 1.0f;
}
/* 80BF2C20-80BF2C24 000008 0004+00 2/2 0/0 0/0 .bss None */
static u8 l_initHIO;
/* 80BF2C30-80BF2C3C 000018 000C+00 4/4 0/0 0/0 .bss l_HIO */
static daObj_Fw_HIO_c l_HIO;
/* 80BF2070-80BF219C 000110 012C+00 1/1 0/0 0/0 .text ride_call_back__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c */
static void ride_call_back(dBgW* i_bgw, fopAc_ac_c* a_this, fopAc_ac_c* param_3) {
if (fopAcM_GetName(param_3) == PROC_ALINK) {
obj_fw_class* i_this = (obj_fw_class*)a_this;
if (i_this->field_0x592 == 0) {
i_this->field_0x598 = AREG_F(0) + -50.0f;
}
i_this->field_0x592 = 10;
f32 fVar1 = param_3->current.pos.x - a_this->current.pos.x;
f32 fVar2 = param_3->current.pos.z - a_this->current.pos.z;
cLib_addCalcAngleS2(&i_this->field_0x5a0, cM_atan2s(fVar1, fVar2), 4, 0x80);
s16 sVar1 = JMAFastSqrt(fVar1 * fVar1 + fVar2 * fVar2) * (AREG_F(3) + 10.0f) * l_HIO.size;
if (sVar1 > 0x800) {
sVar1 = 0x800;
} else if (sVar1 < -0x800) {
sVar1 = -0x800;
}
cLib_addCalcAngleS2(&i_this->field_0x5a2, sVar1, 4, 0x20);
}
}
/* 80BF219C-80BF2200 00023C 0064+00 1/0 0/0 0/0 .text daObj_Fw_Draw__FP12obj_fw_class */
static int daObj_Fw_Draw(obj_fw_class* i_this) {
fopAc_ac_c* a_this = &i_this->actor;
g_env_light.settingTevStruct(16, &a_this->current.pos, &a_this->tevStr);
g_env_light.setLightTevColorType_MAJI(i_this->mpModel, &a_this->tevStr);
mDoExt_modelUpdateDL(i_this->mpModel);
return 1;
}
/* 80BF2200-80BF22AC 0002A0 00AC+00 1/1 0/0 0/0 .text water_check__FP12obj_fw_class */
static BOOL water_check(obj_fw_class* i_this) {
fopAc_ac_c* a_this = &i_this->actor;
Vec sp78;
dBgS_ObjGndChk_Spl obj_gnd_chk_spl;
sp78.x = a_this->current.pos.x;
sp78.y = a_this->current.pos.y + 500.0f;
sp78.z = a_this->current.pos.z;
obj_gnd_chk_spl.SetPos(&sp78);
i_this->field_0x584 = dComIfG_Bgsp().GroundCross(&obj_gnd_chk_spl);
if (i_this->field_0x584 > a_this->current.pos.y + TREG_F(11)) {
return TRUE;
}
return FALSE;
}
/* 80BF22AC-80BF24C4 00034C 0218+00 1/1 0/0 0/0 .text fw_float__FP12obj_fw_class */
static void fw_float(obj_fw_class* i_this) {
fopAc_ac_c* a_this = &i_this->actor;
cLib_addCalc0(&a_this->speed.y, 1.0f, TREG_F(6) + 0.25f);
cXyz sp78(a_this->current.pos);
sp78.y = i_this->field_0x584;
fopAcM_effHamonSet(&i_this->field_0x61c, &sp78, 3.5f, 0.05f);
f32 fVar1 = (i_this->field_0x58c * (JREG_F(3) + 0.03f)) * cM_ssin(i_this->field_0x578 * (JREG_S(2) + 500));
f32 fVar2 = i_this->field_0x584 + JREG_F(8) + -(TREG_F(11) + 300.0f) * cM_ssin(i_this->field_0x5a4 / 2);
cLib_addCalc2(&a_this->current.pos.y, fVar2 + fVar1, 0.1f, JREG_F(4) + 10.0f);
i_this->field_0x590++;
if (a_this->field_0x567 == 1) {
i_this->field_0x590 += 5;
cLib_addCalc2(&i_this->field_0x58c, 300.0f, 0.1f, JREG_F(18) + 2.0f);
a_this->current.pos += a_this->speed;
} else if (a_this->field_0x567 == 2) {
if (i_this->field_0x57e[0] == 0) {
cLib_addCalcAngleS2(&i_this->field_0x5a4, 0x7F80, 0x20, 0x200);
a_this->current.pos += a_this->speed;
}
} else {
cLib_addCalc2(&i_this->field_0x58c, 300.0f, 0.1f, 20.0f);
}
a_this->shape_angle.x = i_this->field_0x58c * cM_ssin(i_this->field_0x590 * (TREG_S(3) + 500));
a_this->shape_angle.z = i_this->field_0x58c * cM_ssin(i_this->field_0x590 * (TREG_S(4) + 600));
cLib_addCalc2(&i_this->field_0x594, i_this->field_0x598, 0.2f, 20.0f);
f32 fVar3;
if (i_this->field_0x592 != 0) {
fVar3 = -20.0f;
} else {
fVar3 = 0.0f;
}
cLib_addCalc2(&i_this->field_0x598, fVar3, 1.0f, 3.0f);
}
/* 80BF24C4-80BF2670 000564 01AC+00 1/1 0/0 0/0 .text action__FP12obj_fw_class */
static void action(obj_fw_class* i_this) {
fopAc_ac_c* a_this = &i_this->actor;
cXyz sp30, sp3c;
switch (i_this->field_0x57a) {
case ACTION_FLOAT:
fw_float(i_this);
break;
}
mDoMtx_stack_c::transS(a_this->current.pos.x, a_this->current.pos.y + i_this->field_0x594 + i_this->field_0x588, a_this->current.pos.z);
mDoMtx_stack_c::YrotM(i_this->field_0x5a0);
mDoMtx_stack_c::XrotM(i_this->field_0x5a2);
mDoMtx_stack_c::YrotM(-i_this->field_0x5a0);
mDoMtx_stack_c::XrotM(a_this->shape_angle.x + i_this->field_0x5a4);
mDoMtx_stack_c::YrotM(a_this->shape_angle.y);
mDoMtx_stack_c::ZrotM(a_this->shape_angle.z);
mDoMtx_stack_c::scaleM(l_HIO.size, 1.0f, l_HIO.size);
i_this->mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
sp30.set(0.0f, 0.0f, 0.0f);
mDoMtx_stack_c::multVec(&sp30, &i_this->field_0x5a8);
cXyz sp48(i_this->field_0x5a8);
sp48.y += TREG_F(0) + 15.0f;
a_this->eyePos = sp48;
a_this->attention_info.position = sp48;
MTXCopy(mDoMtx_stack_c::get(), i_this->mMtx);
i_this->mpBgW->Move();
if (i_this->field_0x592 == 0) {
cLib_addCalcAngleS2(&i_this->field_0x5a2, 0, 4, 0x10);
}
}
/* 80BF2670-80BF2718 000710 00A8+00 2/1 0/0 0/0 .text daObj_Fw_Execute__FP12obj_fw_class */
static int daObj_Fw_Execute(obj_fw_class* i_this) {
fopAc_ac_c* a_this = &i_this->actor;
i_this->field_0x578++;
for (int i = 0; i < 2; i++) {
if (i_this->field_0x57e[i] != 0) {
i_this->field_0x57e[i]--;
}
}
if (i_this->field_0x592 != 0) {
i_this->field_0x592--;
}
action(i_this);
i_this->mSound.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(a_this)));
return 1;
}
/* 80BF2718-80BF2720 0007B8 0008+00 1/0 0/0 0/0 .text daObj_Fw_IsDelete__FP12obj_fw_class */
static int daObj_Fw_IsDelete(obj_fw_class* i_this) {
return 1;
}
/* 80BF2720-80BF279C 0007C0 007C+00 1/0 0/0 0/0 .text daObj_Fw_Delete__FP12obj_fw_class */
static int daObj_Fw_Delete(obj_fw_class* i_this) {
fopAc_ac_c* a_this = &i_this->actor;
dComIfG_resDelete(&i_this->mPhase, "RYUW00");
if (i_this->field_0x624 != 0) {
l_initHIO = 0;
}
dComIfG_Bgsp().Release(i_this->mpBgW);
if (a_this->heap != NULL) {
i_this->mSound.deleteObject();
}
return 1;
}
/* 80BF279C-80BF28D0 00083C 0134+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
static int useHeapInit(fopAc_ac_c* a_this) {
obj_fw_class* i_this = (obj_fw_class*)a_this;
static int bmdd[2] = {
BMDR_K_RYUWOOD00, BMDR_K_RYUWOOD01,
};
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("RYUW00", bmdd[i_this->field_0x570]);
JUT_ASSERT(543, modelData != 0);
i_this->mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
if (i_this->mpModel == NULL) {
return 0;
}
i_this->mpBgW = new dBgW();
if (i_this->mpBgW == NULL) {
return 0;
}
static int dzbd[2] = {
DZB_K_RYUWOOD00, DZB_K_RYUWOOD01,
};
if (i_this->mpBgW->Set((cBgD_t*)dComIfG_getObjectRes("RYUW00", dzbd[i_this->field_0x570]), 1, &i_this->mMtx) == true) {
return 0;
}
i_this->mpBgW->SetCrrFunc(dBgS_MoveBGProc_Typical);
i_this->mpBgW->SetRideCallback(ride_call_back);
return 1;
}
/* 80BF28D0-80BF2AB0 000970 01E0+00 1/0 0/0 0/0 .text daObj_Fw_Create__FP10fopAc_ac_c */
static cPhs__Step daObj_Fw_Create(fopAc_ac_c* a_this) {
fopAcM_SetupActor(a_this, obj_fw_class);
obj_fw_class* i_this = (obj_fw_class*)a_this;
cPhs__Step phase = (cPhs__Step)dComIfG_resLoad(&i_this->mPhase, "RYUW00");
if (phase == cPhs_COMPLEATE_e) {
if (dComIfGs_isStageBossEnemy()) {
return cPhs_ERROR_e;
}
OS_REPORT("OBJ_FW PARAM %x\n", fopAcM_GetParam(a_this));
i_this->field_0x570 = fopAcM_GetParam(a_this);
if (i_this->field_0x570 == 0xFF) {
i_this->field_0x570 = 0;
}
u32 i_size;
if (i_this->field_0x570 == 1) {
i_size = 0x1400;
} else {
i_size = 0x1940;
}
OS_REPORT("OBJ_FW//////////////OBJ_FW SET 1 !!\n");
if (!fopAcM_entrySolidHeap(a_this, useHeapInit, i_size)) {
OS_REPORT("//////////////OBJ_FW SET NON !!\n");
return cPhs_ERROR_e;
}
OS_REPORT("//////////////OBJ_FW SET 2 !!\n");
if (dComIfG_Bgsp().Regist(i_this->mpBgW, a_this)) {
return cPhs_ERROR_e;
}
if (l_initHIO == 0) {
i_this->field_0x624 = 1;
l_initHIO = 1;
l_HIO.field_0x4 = -1;
}
fopAcM_SetMtx(a_this, i_this->mpModel->getBaseTRMtx());
fopAcM_SetMin(a_this, -1000.0f, -600.0f, -1000.0f);
fopAcM_SetMax(a_this, 1000.0f, 600.0f, 1000.0f);
i_this->mSound.init(&a_this->current.pos, 2);
i_this->field_0x578 = cM_rndF(65536.0f);
i_this->field_0x590 = cM_rndF(65536.0f);
water_check(i_this);
daObj_Fw_Execute(i_this);
}
return phase;
}
/* 80BF2BBC-80BF2BDC -00001 0020+00 1/0 0/0 0/0 .data l_daObj_Fw_Method */
static actor_method_class l_daObj_Fw_Method = {
(process_method_func)daObj_Fw_Create__FP10fopAc_ac_c,
(process_method_func)daObj_Fw_Delete__FP12obj_fw_class,
(process_method_func)daObj_Fw_Execute__FP12obj_fw_class,
(process_method_func)daObj_Fw_IsDelete__FP12obj_fw_class,
(process_method_func)daObj_Fw_Draw__FP12obj_fw_class,
(process_method_func)daObj_Fw_Create,
(process_method_func)daObj_Fw_Delete,
(process_method_func)daObj_Fw_Execute,
(process_method_func)daObj_Fw_IsDelete,
(process_method_func)daObj_Fw_Draw,
};
/* 80BF2BDC-80BF2C0C -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_FW */
@ -120,263 +334,3 @@ extern actor_process_profile_definition g_profile_OBJ_FW = {
fopAc_ACTOR_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
};
/* 80BF2C0C-80BF2C18 000060 000C+00 2/2 0/0 0/0 .data __vt__14daObj_Fw_HIO_c */
SECTION_DATA extern void* __vt__14daObj_Fw_HIO_c[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__14daObj_Fw_HIO_cFv,
};
/* 80BF204C-80BF2070 0000EC 0024+00 1/1 0/0 0/0 .text __ct__14daObj_Fw_HIO_cFv */
daObj_Fw_HIO_c::daObj_Fw_HIO_c() {
// NONMATCHING
}
/* ############################################################################################## */
/* 80BF2B4C-80BF2B50 000004 0004+00 0/1 0/0 0/0 .rodata @3667 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3667 = -50.0f;
COMPILER_STRIP_GATE(0x80BF2B4C, &lit_3667);
#pragma pop
/* 80BF2B50-80BF2B54 000008 0004+00 0/3 0/0 0/0 .rodata @3668 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3668[4] = {
0x00,
0x00,
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x80BF2B50, &lit_3668);
#pragma pop
/* 80BF2B54-80BF2B58 00000C 0004+00 0/2 0/0 0/0 .rodata @3669 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3669 = 10.0f;
COMPILER_STRIP_GATE(0x80BF2B54, &lit_3669);
#pragma pop
/* 80BF2C20-80BF2C24 000008 0004+00 2/2 0/0 0/0 .bss None */
static u8 data_80BF2C20[4];
/* 80BF2C24-80BF2C30 00000C 000C+00 1/1 0/0 0/0 .bss @3642 */
static u8 lit_3642[12];
/* 80BF2C30-80BF2C3C 000018 000C+00 4/4 0/0 0/0 .bss l_HIO */
static u8 l_HIO[12];
/* 80BF2070-80BF219C 000110 012C+00 1/1 0/0 0/0 .text
* ride_call_back__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c */
static void ride_call_back(dBgW* param_0, fopAc_ac_c* param_1, fopAc_ac_c* param_2) {
// NONMATCHING
}
/* 80BF219C-80BF2200 00023C 0064+00 1/0 0/0 0/0 .text daObj_Fw_Draw__FP12obj_fw_class */
static void daObj_Fw_Draw(obj_fw_class* param_0) {
// NONMATCHING
}
/* ############################################################################################## */
/* 80BF2B58-80BF2B5C 000010 0004+00 1/1 0/0 0/0 .rodata @3694 */
SECTION_RODATA static f32 const lit_3694 = 500.0f;
COMPILER_STRIP_GATE(0x80BF2B58, &lit_3694);
/* 80BF2200-80BF22AC 0002A0 00AC+00 1/1 0/0 0/0 .text water_check__FP12obj_fw_class */
static void water_check(obj_fw_class* param_0) {
// NONMATCHING
}
/* ############################################################################################## */
/* 80BF2B5C-80BF2B60 000014 0004+00 0/1 0/0 0/0 .rodata @3740 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3740 = 0.25f;
COMPILER_STRIP_GATE(0x80BF2B5C, &lit_3740);
#pragma pop
/* 80BF2B60-80BF2B64 000018 0004+00 0/1 0/0 0/0 .rodata @3741 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3741 = 3.5f;
COMPILER_STRIP_GATE(0x80BF2B60, &lit_3741);
#pragma pop
/* 80BF2B64-80BF2B68 00001C 0004+00 0/1 0/0 0/0 .rodata @3742 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3742 = 1.0f / 20.0f;
COMPILER_STRIP_GATE(0x80BF2B64, &lit_3742);
#pragma pop
/* 80BF2B68-80BF2B6C 000020 0004+00 0/1 0/0 0/0 .rodata @3743 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3743 = -300.0f;
COMPILER_STRIP_GATE(0x80BF2B68, &lit_3743);
#pragma pop
/* 80BF2B6C-80BF2B70 000024 0004+00 0/1 0/0 0/0 .rodata @3744 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3744 = 3.0f / 100.0f;
COMPILER_STRIP_GATE(0x80BF2B6C, &lit_3744);
#pragma pop
/* 80BF2B70-80BF2B74 000028 0004+00 0/1 0/0 0/0 .rodata @3745 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3745 = 1.0f / 10.0f;
COMPILER_STRIP_GATE(0x80BF2B70, &lit_3745);
#pragma pop
/* 80BF2B74-80BF2B78 00002C 0004+00 0/1 0/0 0/0 .rodata @3746 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3746 = 300.0f;
COMPILER_STRIP_GATE(0x80BF2B74, &lit_3746);
#pragma pop
/* 80BF2B78-80BF2B7C 000030 0004+00 0/1 0/0 0/0 .rodata @3747 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3747 = 2.0f;
COMPILER_STRIP_GATE(0x80BF2B78, &lit_3747);
#pragma pop
/* 80BF2B7C-80BF2B80 000034 0004+00 0/1 0/0 0/0 .rodata @3748 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3748 = 20.0f;
COMPILER_STRIP_GATE(0x80BF2B7C, &lit_3748);
#pragma pop
/* 80BF2B80-80BF2B84 000038 0004+00 0/1 0/0 0/0 .rodata @3749 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3749 = 1.0f / 5.0f;
COMPILER_STRIP_GATE(0x80BF2B80, &lit_3749);
#pragma pop
/* 80BF2B84-80BF2B88 00003C 0004+00 0/1 0/0 0/0 .rodata @3750 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3750 = -20.0f;
COMPILER_STRIP_GATE(0x80BF2B84, &lit_3750);
#pragma pop
/* 80BF2B88-80BF2B8C 000040 0004+00 0/1 0/0 0/0 .rodata @3751 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3751 = 3.0f;
COMPILER_STRIP_GATE(0x80BF2B88, &lit_3751);
#pragma pop
/* 80BF22AC-80BF24C4 00034C 0218+00 1/1 0/0 0/0 .text fw_float__FP12obj_fw_class */
static void fw_float(obj_fw_class* param_0) {
// NONMATCHING
}
/* ############################################################################################## */
/* 80BF2B8C-80BF2B90 000044 0004+00 0/1 0/0 0/0 .rodata @3802 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3802 = 15.0f;
COMPILER_STRIP_GATE(0x80BF2B8C, &lit_3802);
#pragma pop
/* 80BF24C4-80BF2670 000564 01AC+00 1/1 0/0 0/0 .text action__FP12obj_fw_class */
static void action(obj_fw_class* param_0) {
// NONMATCHING
}
/* 80BF2670-80BF2718 000710 00A8+00 2/1 0/0 0/0 .text daObj_Fw_Execute__FP12obj_fw_class
*/
static void daObj_Fw_Execute(obj_fw_class* param_0) {
// NONMATCHING
}
/* 80BF2718-80BF2720 0007B8 0008+00 1/0 0/0 0/0 .text daObj_Fw_IsDelete__FP12obj_fw_class
*/
static bool daObj_Fw_IsDelete(obj_fw_class* param_0) {
return true;
}
/* ############################################################################################## */
/* 80BF2BA4-80BF2BA4 00005C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80BF2BA4 = "RYUW00";
#pragma pop
/* 80BF2720-80BF279C 0007C0 007C+00 1/0 0/0 0/0 .text daObj_Fw_Delete__FP12obj_fw_class
*/
static void daObj_Fw_Delete(obj_fw_class* param_0) {
// NONMATCHING
}
/* 80BF279C-80BF28D0 00083C 0134+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
static void useHeapInit(fopAc_ac_c* param_0) {
// NONMATCHING
}
/* ############################################################################################## */
/* 80BF2B90-80BF2B94 000048 0004+00 0/1 0/0 0/0 .rodata @3918 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3918 = -1000.0f;
COMPILER_STRIP_GATE(0x80BF2B90, &lit_3918);
#pragma pop
/* 80BF2B94-80BF2B98 00004C 0004+00 0/1 0/0 0/0 .rodata @3919 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3919 = -600.0f;
COMPILER_STRIP_GATE(0x80BF2B94, &lit_3919);
#pragma pop
/* 80BF2B98-80BF2B9C 000050 0004+00 0/1 0/0 0/0 .rodata @3920 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3920 = 1000.0f;
COMPILER_STRIP_GATE(0x80BF2B98, &lit_3920);
#pragma pop
/* 80BF2B9C-80BF2BA0 000054 0004+00 0/1 0/0 0/0 .rodata @3921 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3921 = 600.0f;
COMPILER_STRIP_GATE(0x80BF2B9C, &lit_3921);
#pragma pop
/* 80BF2BA0-80BF2BA4 000058 0004+00 0/1 0/0 0/0 .rodata @3922 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3922 = 65536.0f;
COMPILER_STRIP_GATE(0x80BF2BA0, &lit_3922);
#pragma pop
/* 80BF28D0-80BF2AB0 000970 01E0+00 1/0 0/0 0/0 .text daObj_Fw_Create__FP10fopAc_ac_c */
static void daObj_Fw_Create(fopAc_ac_c* param_0) {
// NONMATCHING
}
/* 80BF2AB0-80BF2AF8 000B50 0048+00 2/1 0/0 0/0 .text __dt__14daObj_Fw_HIO_cFv */
daObj_Fw_HIO_c::~daObj_Fw_HIO_c() {
// NONMATCHING
}
/* 80BF2AF8-80BF2B34 000B98 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_fw_cpp */
void __sinit_d_a_obj_fw_cpp() {
// NONMATCHING
}
#pragma push
#pragma force_active on
REGISTER_CTORS(0x80BF2AF8, __sinit_d_a_obj_fw_cpp);
#pragma pop
/* 80BF2BA4-80BF2BA4 00005C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */