d_a_b_oh2 / d_a_obj_web0 / d_a_obj_web1 (#243)

* d_a_obj_web0 / d_a_obj_web1

* remove asm

* d_a_set_bgobj

* d_cc_s work

* remove asm

* build fix

* fix tp.py progress check and rel sha1 check

* clean up some bg files
This commit is contained in:
TakaRikka
2023-01-15 11:10:23 -08:00
committed by GitHub
parent c90f9dfde9
commit 5e05ae38f8
126 changed files with 2217 additions and 6277 deletions
+293 -388
View File
@@ -1,186 +1,14 @@
//
// Generated By: dol2asm
// Translation Unit: d_a_obj_web0
//
/**
* d_a_obj_web0.cpp
* Spider Web (Wall)
*/
#include "rel/d/a/obj/d_a_obj_web0/d_a_obj_web0.h"
#include "SSystem/SComponent/c_math.h"
#include "d/d_procname.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct request_of_phase_process_class {};
struct obj_web0_class {};
struct mDoMtx_stack_c {
/* 8000CE38 */ void scaleM(f32, f32, f32);
static u8 now[48];
};
struct J3DMaterialTable {};
struct J3DAnmTevRegKey {};
struct mDoExt_brkAnm {
/* 8000D70C */ void init(J3DMaterialTable*, J3DAnmTevRegKey*, int, int, f32, s16, s16);
/* 8000D7A8 */ void entry(J3DMaterialTable*, f32);
};
struct mDoExt_baseAnm {
/* 8000D428 */ void play();
};
struct fopAc_ac_c {
/* 80018B64 */ fopAc_ac_c();
};
struct daObj_Web0_HIO_c {
/* 80D3452C */ daObj_Web0_HIO_c();
/* 80D350E4 */ ~daObj_Web0_HIO_c();
};
struct dSv_info_c {
/* 80035200 */ void onSwitch(int, int);
/* 80035360 */ void isSwitch(int, int) const;
};
struct dKy_tevstr_c {};
struct J3DModelData {};
struct cXyz {};
struct dScnKy_env_light_c {
/* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*);
/* 801A4DA0 */ void setLightTevColorType_MAJI(J3DModelData*, dKy_tevstr_c*);
};
struct dRes_info_c {};
struct dRes_control_c {
/* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int);
};
struct dPa_levelEcallBack {};
struct csXyz {};
struct _GXColor {};
struct dPa_control_c {
/* 8004CA90 */ void set(u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, cXyz const*,
u8, dPa_levelEcallBack*, s8, _GXColor const*, _GXColor const*,
cXyz const*, f32);
};
struct dCcD_Stts {
/* 80083860 */ void Init(int, int, fopAc_ac_c*);
};
struct dCcD_SrcSph {};
struct dCcD_Sph {
/* 80084A34 */ void Set(dCcD_SrcSph const&);
};
struct dCcD_GStts {
/* 80083760 */ dCcD_GStts();
/* 80083830 */ void Move();
};
struct dCcD_GObjInf {
/* 80083A28 */ dCcD_GObjInf();
/* 80084460 */ void ChkTgHit();
/* 800844F8 */ void GetTgHitObj();
/* 80084548 */ void GetTgHitGObj();
/* 80084658 */ void ChkCoHit();
};
struct dBgW_Base {};
struct dBgW {
/* 8007B970 */ dBgW();
/* 8007B9C0 */ void Move();
};
struct dBgS {
/* 80074A08 */ void Regist(dBgW_Base*, fopAc_ac_c*);
};
struct cM3dGSph {
/* 8026F648 */ void SetC(cXyz const&);
/* 8026F708 */ void SetR(f32);
/* 80D35054 */ ~cM3dGSph();
};
struct cM3dGAab {
/* 80D3509C */ ~cM3dGAab();
};
struct cCcD_Obj {};
struct cCcS {
/* 80264BA8 */ void Set(cCcD_Obj*);
};
struct cBgD_t {};
struct cBgW {
/* 80079F38 */ void Set(cBgD_t*, u32, f32 (*)[3][4]);
};
struct cBgS_PolyInfo {};
struct cBgS {
/* 80074250 */ void Release(dBgW_Base*);
};
struct JAISoundID {};
struct Vec {};
struct Z2SeMgr {
/* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
/* 802AC50C */ void seStartLevel(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
};
struct Z2AudioMgr {
static u8 mAudioMgrPtr[4 + 4 /* padding */];
};
struct JMath {
static u8 sincosTable_[65536];
};
struct J3DModel {};
struct J3DFrameCtrl {
/* 803283FC */ void init(s16);
/* 80D34D44 */ ~J3DFrameCtrl();
};
//
// Forward References:
//
extern "C" void __ct__16daObj_Web0_HIO_cFv();
extern "C" static void daObj_Web0_Draw__FP14obj_web0_class();
extern "C" static void damage_check__FP14obj_web0_class();
extern "C" static void daObj_Web0_Execute__FP14obj_web0_class();
extern "C" static bool daObj_Web0_IsDelete__FP14obj_web0_class();
extern "C" static void daObj_Web0_Delete__FP14obj_web0_class();
extern "C" static void useHeapInit__FP10fopAc_ac_c();
extern "C" void __dt__12J3DFrameCtrlFv();
extern "C" static void daObj_Web0_Create__FP10fopAc_ac_c();
extern "C" void __dt__8cM3dGSphFv();
extern "C" void __dt__8cM3dGAabFv();
extern "C" void __dt__16daObj_Web0_HIO_cFv();
extern "C" void __sinit_d_a_obj_web0_cpp();
extern "C" extern char const* const d_a_obj_web0__stringBase0;
//
// External References:
@@ -234,109 +62,30 @@ extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void init__12J3DFrameCtrlFs();
extern "C" void PSMTXCopy();
extern "C" void PSMTXTrans();
extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" extern void* g_fopAc_Method[8];
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
extern "C" extern void* __vt__8dCcD_Sph[36];
extern "C" extern void* __vt__9dCcD_Stts[11];
extern "C" extern void* __vt__12cCcD_SphAttr[25];
extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
extern "C" extern void* __vt__9cCcD_Stts[8];
extern "C" extern leafdraw_method_class g_fopAc_Method;
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_env_light[4880];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
extern "C" void __register_global_object();
//
// Declarations:
//
/* ############################################################################################## */
/* 80D351C8-80D35208 000000 0040+00 1/1 0/0 0/0 .data cc_sph_src$3944 */
SECTION_DATA static u8 cc_sph_src[64] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xD8, 0xFB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00,
};
/* 80D35208-80D35228 -00001 0020+00 1/0 0/0 0/0 .data l_daObj_Web0_Method */
SECTION_DATA static void* l_daObj_Web0_Method[8] = {
(void*)daObj_Web0_Create__FP10fopAc_ac_c,
(void*)daObj_Web0_Delete__FP14obj_web0_class,
(void*)daObj_Web0_Execute__FP14obj_web0_class,
(void*)daObj_Web0_IsDelete__FP14obj_web0_class,
(void*)daObj_Web0_Draw__FP14obj_web0_class,
(void*)NULL,
(void*)NULL,
(void*)NULL,
};
/* 80D35228-80D35258 -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_WEB0 */
SECTION_DATA extern void* g_profile_OBJ_WEB0[12] = {
(void*)0xFFFFFFFD, (void*)0x0003FFFD,
(void*)0x00280000, (void*)&g_fpcLf_Method,
(void*)0x0000073C, (void*)NULL,
(void*)NULL, (void*)&g_fopAc_Method,
(void*)0x002F0000, (void*)&l_daObj_Web0_Method,
(void*)0x00040100, (void*)0x000E0000,
};
/* 80D35258-80D35264 000090 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGSph */
SECTION_DATA extern void* __vt__8cM3dGSph[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__8cM3dGSphFv,
};
/* 80D35264-80D35270 00009C 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */
SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__8cM3dGAabFv,
};
/* 80D35270-80D3527C 0000A8 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */
SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__12J3DFrameCtrlFv,
};
/* 80D3527C-80D35288 0000B4 000C+00 2/2 0/0 0/0 .data __vt__16daObj_Web0_HIO_c */
SECTION_DATA extern void* __vt__16daObj_Web0_HIO_c[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__16daObj_Web0_HIO_cFv,
};
/* 80D3452C-80D34544 0000EC 0018+00 1/1 0/0 0/0 .text __ct__16daObj_Web0_HIO_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm daObj_Web0_HIO_c::daObj_Web0_HIO_c() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web0/d_a_obj_web0/__ct__16daObj_Web0_HIO_cFv.s"
daObj_Web0_HIO_c::daObj_Web0_HIO_c() {
field_0x4 = -1;
}
#pragma pop
/* 80D34544-80D345C0 000104 007C+00 1/0 0/0 0/0 .text daObj_Web0_Draw__FP14obj_web0_class
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daObj_Web0_Draw(obj_web0_class* param_0) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web0/d_a_obj_web0/daObj_Web0_Draw__FP14obj_web0_class.s"
static int daObj_Web0_Draw(obj_web0_class* i_this) {
g_env_light.settingTevStruct(16, &i_this->current.pos, &i_this->mTevStr);
g_env_light.setLightTevColorType_MAJI(i_this->mpModel, &i_this->mTevStr);
i_this->mpBrk->entry(i_this->mpModel->getModelData());
mDoExt_modelUpdateDL(i_this->mpModel);
return 1;
}
#pragma pop
/* ############################################################################################## */
/* 80D3517C-80D35180 000000 0004+00 3/3 0/0 0/0 .rodata @3724 */
@@ -358,14 +107,58 @@ COMPILER_STRIP_GATE(0x80D35184, &lit_3726);
#pragma pop
/* 80D345C0-80D34794 000180 01D4+00 1/1 0/0 0/0 .text damage_check__FP14obj_web0_class */
// matches with literals
#ifdef NONMATCHING
static void damage_check(obj_web0_class* i_this) {
i_this->mStts.Move();
if (i_this->mHitTimer != 0) {
return;
}
if (i_this->mSphCc.ChkTgHit()) {
i_this->mHitTimer = 6;
if (i_this->mSphCc.GetTgHitObj()->ChkAtType(AT_TYPE_IRON_BALL)) {
i_this->mDeleteTimer = 41;
return;
}
if (i_this->mSphCc.GetTgHitObj()->ChkAtType(AT_TYPE_LANTERN_SWING) &&
static_cast<dCcD_GObjInf*>(i_this->mSphCc.GetTgHitObj())->GetAtMtrl() != 1) {
return;
}
if (i_this->mSphCc.GetTgHitObj()->ChkAtType(AT_TYPE_BOMB) ||
static_cast<dCcD_GObjInf*>(i_this->mSphCc.GetTgHitObj())->GetAtMtrl() == 1) {
i_this->mDeleteTimer = 1;
return;
}
i_this->mReboundTimer = 20;
fopAcM_seStart(i_this, Z2SE_OBJ_WEB_BOUND_L, 0);
}
if (i_this->mSphCc.ChkCoHit()) {
i_this->mReboundTimer = 10;
}
if (daPy_getPlayerActorClass()->checkFrontRollCrash() &&
fopAcM_searchPlayerDistanceXZ(i_this) < i_this->mScale.x * 260.0f) {
i_this->mReboundTimer = 20;
fopAcM_seStart(i_this, Z2SE_OBJ_WEB_BOUND_L, 0);
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void damage_check(obj_web0_class* param_0) {
static asm void damage_check(obj_web0_class* i_this) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web0/d_a_obj_web0/damage_check__FP14obj_web0_class.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80D35188-80D3518C 00000C 0004+00 0/1 0/0 0/0 .rodata @3850 */
@@ -410,149 +203,261 @@ COMPILER_STRIP_GATE(0x80D3519C, &lit_3855);
#pragma pop
/* 80D34794-80D34B24 000354 0390+00 2/1 0/0 0/0 .text daObj_Web0_Execute__FP14obj_web0_class */
// reg alloc
#ifdef NONMATCHING
static int daObj_Web0_Execute(obj_web0_class* i_this) {
fopAc_ac_c* player = dComIfGp_getPlayer(0);
i_this->field_0x57c++;
for (int i = 0; i < 2; i++) {
if (i_this->field_0x584[i] != 0) {
i_this->field_0x584[i]--;
}
}
if (i_this->mHitTimer != 0) {
i_this->mHitTimer--;
}
if (i_this->mDeleteTimer != 0) {
if (i_this->mDeleteTimer == 1) {
cXyz sp30(i_this->mScale);
sp30.z = 1.0f;
dComIfGp_particle_set(0x840C, &i_this->current.pos, &i_this->shape_angle, &sp30);
i_this->mpBrk->setPlaySpeed(1.0f);
} else if (i_this->mDeleteTimer == 41) {
i_this->mpBrk->setPlaySpeed(1.0f);
}
fopAcM_seStartLevel(i_this, Z2SE_OBJ_WEB_BURN, 0);
if (i_this->mDeleteTimer == 40 || i_this->mDeleteTimer == 80) {
dComIfGs_onSwitch(fopAcM_GetParam(i_this) >> 0x18, fopAcM_GetRoomNo(i_this));
fopAcM_delete(i_this);
}
i_this->mDeleteTimer++;
} else {
damage_check(i_this);
}
mDoMtx_stack_c::transS(i_this->current.pos.x, i_this->current.pos.y, i_this->current.pos.z);
mDoMtx_stack_c::YrotM(i_this->shape_angle.y);
mDoMtx_stack_c::ZrotM(i_this->shape_angle.z);
mDoMtx_stack_c::scaleM(i_this->mScale.x, i_this->mScale.y, i_this->mScale.z);
i_this->mpBrk->play();
i_this->mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get());
if (i_this->mReboundTimer != 0) {
i_this->mReboundTimer--;
}
i_this->mScale.z = i_this->mReboundTimer * cM_ssin(i_this->mReboundTimer * 0x1900) * 0.075f;
s16 tmp = (fopAcM_searchPlayerAngleY(i_this) + 0x4000) - i_this->shape_angle.y;
if (tmp < 0) {
mDoMtx_stack_c::YrotM(-0x8000);
}
PSMTXCopy(mDoMtx_stack_c::get(), i_this->mMtx);
i_this->mpBgW->Move();
cXyz sp3C(i_this->current.pos);
if (i_this->field_0x57c & 1) {
sp3C.y -= i_this->mScale.x * 70.0f;
}
s16 svar9 = i_this->shape_angle.y;
if (tmp < 0) {
svar9 += (s16)-0x8000;
}
svar9 -= player->shape_angle.y;
if ((svar9 < 20000 && svar9 > -20000) || i_this->mHitTimer != 0) {
sp3C.x += 20000.0f;
}
i_this->mSphCc.SetC(sp3C);
i_this->mSphCc.SetR(i_this->mScale.x * 150.0f);
dComIfG_Ccsp()->Set(&i_this->mSphCc);
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daObj_Web0_Execute(obj_web0_class* param_0) {
static asm int daObj_Web0_Execute(obj_web0_class* i_this) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web0/d_a_obj_web0/daObj_Web0_Execute__FP14obj_web0_class.s"
}
#pragma pop
#endif
/* 80D34B24-80D34B2C 0006E4 0008+00 1/0 0/0 0/0 .text daObj_Web0_IsDelete__FP14obj_web0_class */
static bool daObj_Web0_IsDelete(obj_web0_class* param_0) {
return true;
static int daObj_Web0_IsDelete(obj_web0_class* i_this) {
return 1;
}
/* ############################################################################################## */
/* 80D351BC-80D351BC 000040 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80D351BC = "Obj_web0";
#pragma pop
/* 80D35290-80D35294 000008 0004+00 2/2 0/0 0/0 .bss None */
static u8 data_80D35290[4];
static u8 data_80D35290;
/* 80D34B2C-80D34B94 0006EC 0068+00 1/0 0/0 0/0 .text daObj_Web0_Delete__FP14obj_web0_class */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daObj_Web0_Delete(obj_web0_class* param_0) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web0/d_a_obj_web0/daObj_Web0_Delete__FP14obj_web0_class.s"
}
#pragma pop
static int daObj_Web0_Delete(obj_web0_class* i_this) {
dComIfG_resDelete(&i_this->mPhase, "Obj_web0");
/* ############################################################################################## */
/* 80D351A4-80D351A8 000028 0004+00 1/1 0/0 0/0 .rodata @3917 */
SECTION_RODATA static u8 const lit_3917[4] = {
0x00,
0x00,
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x80D351A4, &lit_3917);
if (i_this->field_0x739) {
data_80D35290 = 0;
}
dComIfG_Bgsp().Release(i_this->mpBgW);
return 1;
}
/* 80D34B94-80D34D44 000754 01B0+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void useHeapInit(fopAc_ac_c* param_0) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web0/d_a_obj_web0/useHeapInit__FP10fopAc_ac_c.s"
static int useHeapInit(fopAc_ac_c* i_this) {
obj_web0_class* _this = static_cast<obj_web0_class*>(i_this);
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Obj_web0", 5);
_this->mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
if (_this->mpModel == NULL) {
return 0;
}
_this->mpBrk = new mDoExt_brkAnm();
if (_this->mpBrk == NULL) {
return 0;
}
J3DAnmTevRegKey* brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes("Obj_web0", 8);
if (!_this->mpBrk->init(_this->mpModel->getModelData(), brk, TRUE, 0, FLOAT_LABEL(lit_3724), 0,
-1)) {
return 0;
}
_this->mpBrk->setPlaySpeed(0.0f);
_this->mpBgW = new dBgW();
if (_this->mpBgW == NULL) {
return 0;
}
cBgD_t* dzb = (cBgD_t*)dComIfG_getObjectRes("Obj_web0", 11);
if (_this->mpBgW->Set(dzb, 1, &_this->mMtx) == 1) {
return 0;
}
_this->mpBgW->SetCrrFunc(dBgS_MoveBGProc_Typical);
return 1;
}
#pragma pop
/* 80D34D44-80D34D8C 000904 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DFrameCtrl::~J3DFrameCtrl() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web0/d_a_obj_web0/__dt__12J3DFrameCtrlFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80D351A8-80D351AC 00002C 0004+00 1/1 0/0 0/0 .rodata @4014 */
SECTION_RODATA static f32 const lit_4014 = -1000.0f;
COMPILER_STRIP_GATE(0x80D351A8, &lit_4014);
/* 80D351AC-80D351B4 000030 0004+04 1/1 0/0 0/0 .rodata @4015 */
SECTION_RODATA static f32 const lit_4015[1 + 1 /* padding */] = {
1000.0f,
/* padding */
0.0f,
};
COMPILER_STRIP_GATE(0x80D351AC, &lit_4015);
/* 80D351B4-80D351BC 000038 0008+00 1/1 0/0 0/0 .rodata @4017 */
SECTION_RODATA static u8 const lit_4017[8] = {
0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80D351B4, &lit_4017);
/* 80D35294-80D352A0 00000C 000C+00 1/1 0/0 0/0 .bss @3643 */
static u8 lit_3643[12];
/* 80D352A0-80D352A8 000018 0008+00 2/2 0/0 0/0 .bss l_HIO */
static u8 l_HIO[8];
static daObj_Web0_HIO_c l_HIO;
/* 80D34D8C-80D35054 00094C 02C8+00 1/0 0/0 0/0 .text daObj_Web0_Create__FP10fopAc_ac_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daObj_Web0_Create(fopAc_ac_c* param_0) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web0/d_a_obj_web0/daObj_Web0_Create__FP10fopAc_ac_c.s"
static int daObj_Web0_Create(fopAc_ac_c* i_this) {
if (!fopAcM_CheckCondition(i_this, 8)) {
new (i_this) obj_web0_class();
fopAcM_OnCondition(i_this, 8);
}
obj_web0_class* _this = static_cast<obj_web0_class*>(i_this);
static dCcD_SrcSph cc_sph_src = {
{
{0, {{0, 0, 0}, {0xD8FBFFFF, 3}, 0}},
{dCcD_SE_NONE, 0, 0, 0, {0}},
{dCcD_SE_HARD_BODY, 0, 0, 0, {3}},
{0},
},
{
{0.0f, 0.0f, 0.0f},
40.0f,
},
};
int phase = dComIfG_resLoad(&_this->mPhase, "Obj_web0");
if (phase == cPhs_COMPLEATE_e) {
int switchNo = fopAcM_GetParam(_this) >> 0x18;
if (switchNo != 0xFF && dComIfGs_isSwitch(switchNo, fopAcM_GetRoomNo(_this))) {
return cPhs_ERROR_e;
}
_this->mPrm0 = fopAcM_GetParam(_this);
if (_this->mPrm0 == 0xFF) {
_this->mPrm0 = 0;
}
_this->mScaleXY = fopAcM_GetParam(_this) >> 8;
if (!fopAcM_entrySolidHeap(_this, (heapCallbackFunc)useHeapInit, 0xA20)) {
return cPhs_ERROR_e;
}
if (_this->mpBgW != NULL && dComIfG_Bgsp().Regist(_this->mpBgW, _this)) {
return cPhs_ERROR_e;
}
if (!data_80D35290) {
_this->field_0x739 = 1;
data_80D35290 = true;
l_HIO.field_0x4 = -1;
}
fopAcM_SetMtx(_this, _this->mpModel->getBaseTRMtx());
fopAcM_SetMin(_this, -1000.0f, -1000.0f, -1000.0f);
fopAcM_SetMax(_this, 1000.0f, 1000.0f, 1000.0f);
_this->field_0x562 = 30;
_this->field_0x560 = 30;
_this->mStts.Init(250, 0, _this);
_this->mSphCc.Set(cc_sph_src);
_this->mSphCc.SetStts(&_this->mStts);
_this->mSphCc.OnTgNoHitMark();
if (_this->mScaleXY != 0xFF && _this->mScaleXY != 0) {
_this->mScale.x = _this->mScaleXY;
_this->mScale.y = _this->mScaleXY;
}
_this->mEyePos = _this->current.pos;
daObj_Web0_Execute(_this);
}
return phase;
}
#pragma pop
/* 80D35054-80D3509C 000C14 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm cM3dGSph::~cM3dGSph() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web0/d_a_obj_web0/__dt__8cM3dGSphFv.s"
}
#pragma pop
/* 80D35208-80D35228 -00001 0020+00 1/0 0/0 0/0 .data l_daObj_Web0_Method */
static actor_method_class l_daObj_Web0_Method = {
(process_method_func)daObj_Web0_Create, (process_method_func)daObj_Web0_Delete,
(process_method_func)daObj_Web0_Execute, (process_method_func)daObj_Web0_IsDelete,
(process_method_func)daObj_Web0_Draw,
};
/* 80D3509C-80D350E4 000C5C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm cM3dGAab::~cM3dGAab() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web0/d_a_obj_web0/__dt__8cM3dGAabFv.s"
}
#pragma pop
/* 80D350E4-80D3512C 000CA4 0048+00 2/1 0/0 0/0 .text __dt__16daObj_Web0_HIO_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm daObj_Web0_HIO_c::~daObj_Web0_HIO_c() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web0/d_a_obj_web0/__dt__16daObj_Web0_HIO_cFv.s"
}
#pragma pop
/* 80D3512C-80D35168 000CEC 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_web0_cpp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __sinit_d_a_obj_web0_cpp() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web0/d_a_obj_web0/__sinit_d_a_obj_web0_cpp.s"
}
#pragma pop
#pragma push
#pragma force_active on
REGISTER_CTORS(0x80D3512C, __sinit_d_a_obj_web0_cpp);
#pragma pop
/* 80D351BC-80D351BC 000040 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
/* 80D35228-80D35258 -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_WEB0 */
extern actor_process_profile_definition g_profile_OBJ_WEB0 = {
-3,
3,
-3,
PROC_OBJ_WEB0,
0,
&g_fpcLf_Method.mBase,
sizeof(obj_web0_class),
0,
0,
&g_fopAc_Method,
0x002F,
0,
0,
&l_daObj_Web0_Method,
0x00040100,
0,
14,
0,
0,
};
+315 -603
View File
@@ -1,642 +1,354 @@
//
// Generated By: dol2asm
// Translation Unit: d_a_obj_web1
//
/**
* d_a_obj_web1.cpp
* Spider Web (Floor)
*/
#include "rel/d/a/obj/d_a_obj_web1/d_a_obj_web1.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "JSystem/JMath/JMath.h"
#include "SSystem/SComponent/c_math.h"
#include "d/d_procname.h"
//
// Types:
//
struct request_of_phase_process_class {};
struct obj_web1_class {};
struct mDoMtx_stack_c {
/* 8000CD9C */ void transM(f32, f32, f32);
/* 8000CE38 */ void scaleM(f32, f32, f32);
static u8 now[48];
};
struct J3DMaterialTable {};
struct J3DAnmTevRegKey {};
struct mDoExt_brkAnm {
/* 8000D70C */ void init(J3DMaterialTable*, J3DAnmTevRegKey*, int, int, f32, s16, s16);
/* 8000D7A8 */ void entry(J3DMaterialTable*, f32);
};
struct mDoExt_baseAnm {
/* 8000D428 */ void play();
};
struct fopAc_ac_c {
/* 80018B64 */ fopAc_ac_c();
};
struct daObj_Web1_HIO_c {
/* 80D353AC */ daObj_Web1_HIO_c();
/* 80D36028 */ ~daObj_Web1_HIO_c();
};
struct dSv_info_c {
/* 80035200 */ void onSwitch(int, int);
/* 80035360 */ void isSwitch(int, int) const;
};
struct dKy_tevstr_c {};
struct J3DModelData {};
struct cXyz {};
struct dScnKy_env_light_c {
/* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*);
/* 801A4DA0 */ void setLightTevColorType_MAJI(J3DModelData*, dKy_tevstr_c*);
};
struct dRes_info_c {};
struct dRes_control_c {
/* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int);
};
struct dPa_levelEcallBack {};
struct csXyz {};
struct _GXColor {};
struct dPa_control_c {
/* 8004CA90 */ void set(u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, cXyz const*,
u8, dPa_levelEcallBack*, s8, _GXColor const*, _GXColor const*,
cXyz const*, f32);
};
struct dCcD_Stts {
/* 80083860 */ void Init(int, int, fopAc_ac_c*);
};
struct dCcD_SrcCyl {};
struct dCcD_GStts {
/* 80083760 */ dCcD_GStts();
};
struct dCcD_GObjInf {
/* 80083A28 */ dCcD_GObjInf();
/* 80084460 */ void ChkTgHit();
/* 800844F8 */ void GetTgHitObj();
/* 80084548 */ void GetTgHitGObj();
};
struct dCcD_Cyl {
/* 800848B4 */ void Set(dCcD_SrcCyl const&);
};
struct dBgW_Base {};
struct dBgW {
/* 8007B970 */ dBgW();
/* 8007B9C0 */ void Move();
};
struct dBgS {
/* 80074A08 */ void Regist(dBgW_Base*, fopAc_ac_c*);
};
struct cM3dGCyl {
/* 8026F1DC */ void SetC(cXyz const&);
/* 8026F200 */ void SetR(f32);
/* 80D35F98 */ ~cM3dGCyl();
};
struct cM3dGAab {
/* 80D35FE0 */ ~cM3dGAab();
};
struct cCcD_Obj {};
struct cCcS {
/* 80264BA8 */ void Set(cCcD_Obj*);
};
struct cBgD_t {};
struct cBgW {
/* 80079F38 */ void Set(cBgD_t*, u32, f32 (*)[3][4]);
};
struct cBgS_PolyInfo {};
struct cBgS {
/* 80074250 */ void Release(dBgW_Base*);
};
struct Z2SoundObjSimple {
/* 802BE844 */ Z2SoundObjSimple();
};
struct Z2SoundObjBase {
/* 802BDFF8 */ void deleteObject();
/* 802BE4A4 */ void startCollisionSE(u32, u32, Z2SoundObjBase*);
};
struct JAISoundID {};
struct Vec {};
struct Z2SeMgr {
/* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
/* 802AC50C */ void seStartLevel(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
};
struct Z2AudioMgr {
static u8 mAudioMgrPtr[4 + 4 /* padding */];
};
struct JMath {
static u8 sincosTable_[65536];
};
struct J3DModel {};
struct J3DFrameCtrl {
/* 803283FC */ void init(s16);
/* 80D35C9C */ ~J3DFrameCtrl();
};
//
// Forward References:
//
extern "C" void __ct__16daObj_Web1_HIO_cFv();
extern "C" static void daObj_Web1_Draw__FP14obj_web1_class();
extern "C" static void ride_call_back__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c();
extern "C" static void action__FP14obj_web1_class();
extern "C" static void daObj_Web1_Execute__FP14obj_web1_class();
extern "C" static bool daObj_Web1_IsDelete__FP14obj_web1_class();
extern "C" static void daObj_Web1_Delete__FP14obj_web1_class();
extern "C" static void useHeapInit__FP10fopAc_ac_c();
extern "C" void __dt__12J3DFrameCtrlFv();
extern "C" static void daObj_Web1_Create__FP10fopAc_ac_c();
extern "C" void __dt__8cM3dGCylFv();
extern "C" void __dt__8cM3dGAabFv();
extern "C" void __dt__16daObj_Web1_HIO_cFv();
extern "C" void __sinit_d_a_obj_web1_cpp();
extern "C" extern char const* const d_a_obj_web1__stringBase0;
//
// External References:
//
extern "C" void mDoMtx_YrotM__FPA4_fs();
extern "C" void transM__14mDoMtx_stack_cFfff();
extern "C" void scaleM__14mDoMtx_stack_cFfff();
extern "C" void play__14mDoExt_baseAnmFv();
extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss();
extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef();
extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
extern "C" void __ct__10fopAc_ac_cFv();
extern "C" void fopAcM_delete__FP10fopAc_ac_c();
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 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 onSwitch__10dSv_info_cFii();
extern "C" void isSwitch__10dSv_info_cCFii();
extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
extern "C" void
set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
extern "C" void Release__4cBgSFP9dBgW_Base();
extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c();
extern "C" void dBgS_MoveBGProc_Typical__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz();
extern "C" void Set__4cBgWFP6cBgD_tUlPA3_A4_f();
extern "C" void __ct__4dBgWFv();
extern "C" void Move__4dBgWFv();
extern "C" void __ct__10dCcD_GSttsFv();
extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
extern "C" void __ct__12dCcD_GObjInfFv();
extern "C" void ChkTgHit__12dCcD_GObjInfFv();
extern "C" void GetTgHitObj__12dCcD_GObjInfFv();
extern "C" void GetTgHitGObj__12dCcD_GObjInfFv();
extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
extern "C" void Set__4cCcSFP8cCcD_Obj();
extern "C" void SetC__8cM3dGCylFRC4cXyz();
extern "C" void SetR__8cM3dGCylFf();
extern "C" void cLib_addCalc2__FPffff();
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void deleteObject__14Z2SoundObjBaseFv();
extern "C" void startCollisionSE__14Z2SoundObjBaseFUlUlP14Z2SoundObjBase();
extern "C" void __ct__16Z2SoundObjSimpleFv();
extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void init__12J3DFrameCtrlFs();
extern "C" void PSMTXCopy();
extern "C" void PSMTXTrans();
extern "C" void _savegpr_29();
extern "C" void _restgpr_29();
extern "C" extern void* g_fopAc_Method[8];
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
extern "C" extern void* __vt__8dCcD_Cyl[36];
extern "C" extern void* __vt__9dCcD_Stts[11];
extern "C" extern void* __vt__12cCcD_CylAttr[25];
extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
extern "C" extern void* __vt__9cCcD_Stts[8];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_env_light[4880];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
extern "C" void __register_global_object();
//
// Declarations:
//
/* ############################################################################################## */
/* 80D3612C-80D36170 000000 0044+00 1/1 0/0 0/0 .data cc_cyl_src$3969 */
SECTION_DATA static u8 cc_cyl_src[68] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xD8, 0xFB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x02, 0x00, 0x00, 0x00, 0x00,
0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
};
/* 80D36170-80D36190 -00001 0020+00 1/0 0/0 0/0 .data l_daObj_Web1_Method */
SECTION_DATA static void* l_daObj_Web1_Method[8] = {
(void*)daObj_Web1_Create__FP10fopAc_ac_c,
(void*)daObj_Web1_Delete__FP14obj_web1_class,
(void*)daObj_Web1_Execute__FP14obj_web1_class,
(void*)daObj_Web1_IsDelete__FP14obj_web1_class,
(void*)daObj_Web1_Draw__FP14obj_web1_class,
(void*)NULL,
(void*)NULL,
(void*)NULL,
};
/* 80D36190-80D361C0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_WEB1 */
SECTION_DATA extern void* g_profile_OBJ_WEB1[12] = {
(void*)0xFFFFFFFD, (void*)0x0003FFFD,
(void*)0x00290000, (void*)&g_fpcLf_Method,
(void*)0x00000770, (void*)NULL,
(void*)NULL, (void*)&g_fopAc_Method,
(void*)0x00300000, (void*)&l_daObj_Web1_Method,
(void*)0x00040100, (void*)0x000E0000,
};
/* 80D361C0-80D361CC 000094 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGCyl */
SECTION_DATA extern void* __vt__8cM3dGCyl[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__8cM3dGCylFv,
};
/* 80D361CC-80D361D8 0000A0 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */
SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__8cM3dGAabFv,
};
/* 80D361D8-80D361E4 0000AC 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */
SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__12J3DFrameCtrlFv,
};
/* 80D361E4-80D361F0 0000B8 000C+00 2/2 0/0 0/0 .data __vt__16daObj_Web1_HIO_c */
SECTION_DATA extern void* __vt__16daObj_Web1_HIO_c[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__16daObj_Web1_HIO_cFv,
};
extern "C" extern leafdraw_method_class g_fopAc_Method;
/* 80D353AC-80D353C4 0000EC 0018+00 1/1 0/0 0/0 .text __ct__16daObj_Web1_HIO_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm daObj_Web1_HIO_c::daObj_Web1_HIO_c() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web1/d_a_obj_web1/__ct__16daObj_Web1_HIO_cFv.s"
daObj_Web1_HIO_c::daObj_Web1_HIO_c() {
field_0x4 = -1;
}
#pragma pop
/* 80D353C4-80D35440 000104 007C+00 1/0 0/0 0/0 .text daObj_Web1_Draw__FP14obj_web1_class
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daObj_Web1_Draw(obj_web1_class* param_0) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web1/d_a_obj_web1/daObj_Web1_Draw__FP14obj_web1_class.s"
static int daObj_Web1_Draw(obj_web1_class* i_this) {
g_env_light.settingTevStruct(16, &i_this->current.pos, &i_this->mTevStr);
g_env_light.setLightTevColorType_MAJI(i_this->mpModel, &i_this->mTevStr);
i_this->mpBrk->entry(i_this->mpModel->getModelData());
mDoExt_modelUpdateDL(i_this->mpModel);
return 1;
}
#pragma pop
/* ############################################################################################## */
/* 80D360C0-80D360C4 000000 0004+00 5/5 0/0 0/0 .rodata @3703 */
SECTION_RODATA static u8 const lit_3703[4] = {
0x00,
0x00,
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x80D360C0, &lit_3703);
/* 80D360C4-80D360C8 000004 0004+00 1/1 0/0 0/0 .rodata @3704 */
SECTION_RODATA static f32 const lit_3704 = 140.0f;
COMPILER_STRIP_GATE(0x80D360C4, &lit_3704);
/* 80D35440-80D35508 000180 00C8+00 1/1 0/0 0/0 .text
* ride_call_back__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void ride_call_back(dBgW* param_0, fopAc_ac_c* param_1, fopAc_ac_c* param_2) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web1/d_a_obj_web1/ride_call_back__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c.s"
static void ride_call_back(dBgW* i_bgw, fopAc_ac_c* i_this, fopAc_ac_c* i_actor) {
obj_web1_class* _this = static_cast<obj_web1_class*>(i_this);
f32 x_diff = i_actor->current.pos.x - _this->current.pos.x;
f32 z_diff = i_actor->current.pos.z - _this->current.pos.z;
_this->mDistToActor = JMAFastSqrt((x_diff * x_diff) + (z_diff * z_diff));
if (_this->mDistToActor < 140.0f) {
if (fopAcM_GetName(i_actor) == PROC_ALINK || fopAcM_GetName(i_actor) == PROC_ALINK) {
if (_this->field_0x5aa == 0) {
_this->mReboundTimer = 60;
}
if (daPy_getPlayerActorClass()->i_checkEquipHeavyBoots()) {
_this->field_0x5aa = 120;
} else {
_this->field_0x5aa = 6;
}
} else if (fopAcM_GetName(i_actor) == PROC_OBJ_GM) {
_this->field_0x5aa = 120;
} else {
_this->field_0x5aa = 3;
}
}
}
#pragma pop
/* ############################################################################################## */
/* 80D360C8-80D360CC 000008 0004+00 1/3 0/0 0/0 .rodata @3798 */
SECTION_RODATA static f32 const lit_3798 = 1.0f;
COMPILER_STRIP_GATE(0x80D360C8, &lit_3798);
/* 80D360CC-80D360D0 00000C 0004+00 0/2 0/0 0/0 .rodata @3799 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3799 = -1.0f;
COMPILER_STRIP_GATE(0x80D360CC, &lit_3799);
#pragma pop
/* 80D360D0-80D360D4 000010 0004+00 0/1 0/0 0/0 .rodata @3800 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3800 = 1.0f / 50.0f;
COMPILER_STRIP_GATE(0x80D360D0, &lit_3800);
#pragma pop
/* 80D360D4-80D360D8 000014 0004+00 0/1 0/0 0/0 .rodata @3801 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3801 = 1.0f / 10.0f;
COMPILER_STRIP_GATE(0x80D360D4, &lit_3801);
#pragma pop
/* 80D360D8-80D360DC 000018 0004+00 0/1 0/0 0/0 .rodata @3802 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3802 = 10.0f;
COMPILER_STRIP_GATE(0x80D360D8, &lit_3802);
#pragma pop
/* 80D360DC-80D360E0 00001C 0004+00 0/1 0/0 0/0 .rodata @3803 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3803 = 5.0f;
COMPILER_STRIP_GATE(0x80D360DC, &lit_3803);
#pragma pop
/* 80D360E0-80D360E4 000020 0004+00 0/1 0/0 0/0 .rodata @3804 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3804 = 2.0f;
COMPILER_STRIP_GATE(0x80D360E0, &lit_3804);
#pragma pop
/* 80D360E4-80D360E8 000024 0004+00 0/1 0/0 0/0 .rodata @3805 */
#pragma push
#pragma force_active on
SECTION_RODATA static u32 const lit_3805 = 0x3BA3D70A;
COMPILER_STRIP_GATE(0x80D360E4, &lit_3805);
#pragma pop
/* 80D360E8-80D360F0 000028 0004+04 0/1 0/0 0/0 .rodata @3806 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3806[1 + 1 /* padding */] = {
0.5f,
/* padding */
0.0f,
};
COMPILER_STRIP_GATE(0x80D360E8, &lit_3806);
#pragma pop
/* 80D360F0-80D360F8 000030 0008+00 0/1 0/0 0/0 .rodata @3808 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3808[8] = {
0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80D360F0, &lit_3808);
#pragma pop
/* 80D35508-80D35774 000248 026C+00 1/1 0/0 0/0 .text action__FP14obj_web1_class */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void action(obj_web1_class* param_0) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web1/d_a_obj_web1/action__FP14obj_web1_class.s"
static void action(obj_web1_class* i_this) {
if (i_this->mReboundTimer != 0) {
if (i_this->mReboundTimer == 60 || i_this->mReboundTimer == 40 ||
i_this->mReboundTimer == 20) {
fopAcM_seStart(i_this, Z2SE_OBJ_WEB_BOUND_S, 0);
}
i_this->mReboundTimer--;
}
switch (i_this->mActionMode) {
case 0:
if (i_this->mHitTimer == 0 && i_this->mCylCc.ChkTgHit()) {
i_this->mHitTimer = 6;
if (i_this->mCylCc.GetTgHitObj()->ChkAtType(AT_TYPE_BOMB)) {
i_this->mActionMode = 10;
}
if (i_this->mCylCc.GetTgHitGObj()->GetAtMtrl() == 1) {
i_this->mActionMode = 10;
}
}
break;
case 1:
if (i_this->field_0x5a2[0] == 0) {
i_this->mZ2SoundObj.startCollisionSE(0x40000, 0x21, NULL);
fopAcM_delete(i_this);
}
break;
case 10:
i_this->mDeleteTimer = 1;
break;
}
i_this->mScale.y = i_this->field_0x5b0 +
i_this->mReboundTimer * cM_ssin(i_this->mReboundTimer * 0xF00) * 0.02f;
if (i_this->mScale.y < 0.1f) {
i_this->mScale.y = 0.1f;
}
f32 target = 0.0f;
if (i_this->field_0x5aa != 0) {
if (i_this->field_0x5aa > 100) {
target = 10.0f;
i_this->mActionMode++;
i_this->field_0x5a2[0] = 0;
} else if (i_this->field_0x5aa > 80) {
target = 5.0f;
} else if (i_this->field_0x5aa >= 4) {
target = 2.0f;
} else {
target = 1.0f;
}
f32 fvar6 = i_this->mDistToActor * 0.005f;
if (fvar6 > 1.0f) {
fvar6 = 1.0f;
}
target *= 1.0f - fvar6;
i_this->field_0x5aa--;
}
cLib_addCalc2(&i_this->field_0x5b0, target, 0.5f, 0.5f);
}
#pragma pop
/* ############################################################################################## */
/* 80D360F8-80D360FC 000038 0004+00 0/1 0/0 0/0 .rodata @3871 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3871 = 1.0f / 20.0f;
COMPILER_STRIP_GATE(0x80D360F8, &lit_3871);
#pragma pop
/* 80D360FC-80D36100 00003C 0004+00 0/1 0/0 0/0 .rodata @3872 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3872 = 6.0f / 5.0f;
COMPILER_STRIP_GATE(0x80D360FC, &lit_3872);
#pragma pop
/* 80D36100-80D36104 000040 0004+00 0/1 0/0 0/0 .rodata @3873 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3873 = 9.0f;
COMPILER_STRIP_GATE(0x80D36100, &lit_3873);
#pragma pop
/* 80D36104-80D36108 000044 0004+00 0/1 0/0 0/0 .rodata @3874 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3874 = -15.0f;
COMPILER_STRIP_GATE(0x80D36104, &lit_3874);
#pragma pop
/* 80D36108-80D3610C 000048 0004+00 0/1 0/0 0/0 .rodata @3875 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3875 = 150.0f;
COMPILER_STRIP_GATE(0x80D36108, &lit_3875);
#pragma pop
/* 80D35774-80D35A3C 0004B4 02C8+00 2/1 0/0 0/0 .text daObj_Web1_Execute__FP14obj_web1_class */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daObj_Web1_Execute(obj_web1_class* param_0) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web1/d_a_obj_web1/daObj_Web1_Execute__FP14obj_web1_class.s"
static int daObj_Web1_Execute(obj_web1_class* i_this) {
i_this->field_0x59c++;
for (int i = 0; i < 2; i++) {
if (i_this->field_0x5a2[i] != 0) {
i_this->field_0x5a2[i]--;
}
}
if (i_this->mHitTimer != 0) {
i_this->mHitTimer--;
}
int roomNo = fopAcM_GetRoomNo(i_this);
i_this->mZ2SoundObj.framework(0, dComIfGp_getReverb(roomNo));
if (i_this->mDeleteTimer != 0) {
if (i_this->mDeleteTimer == 1) {
cXyz scale;
scale.x = i_this->mScale.x;
scale.y = i_this->mScale.x;
scale.z = i_this->mScale.x;
dComIfGp_particle_set(0x840E, &i_this->current.pos, &i_this->shape_angle, &scale);
i_this->mpBrk->setPlaySpeed(1.0f);
}
fopAcM_seStartLevel(i_this, Z2SE_OBJ_WEB_BURN, 0);
if (i_this->mDeleteTimer == 35) {
dComIfGs_onSwitch(fopAcM_GetParam(i_this) >> 0x18, fopAcM_GetRoomNo(i_this));
fopAcM_delete(i_this);
}
i_this->mDeleteTimer++;
} else {
action(i_this);
}
mDoMtx_stack_c::transS(i_this->current.pos.x, i_this->current.pos.y, i_this->current.pos.z);
mDoMtx_stack_c::YrotM(i_this->shape_angle.y);
mDoMtx_stack_c::scaleM(i_this->mScale.x, i_this->mScale.y * i_this->mScale.x + 0.05f,
i_this->mScale.x);
i_this->mpBrk->play();
i_this->mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get());
mDoMtx_stack_c::transS(i_this->current.pos.x, i_this->current.pos.y, i_this->current.pos.z);
mDoMtx_stack_c::scaleM(i_this->mScale.x * 1.2f, i_this->mScale.x, i_this->mScale.x * 1.2f);
mDoMtx_stack_c::transM(0.0f, i_this->mScale.x * i_this->mScale.y * -15.0f + 9.0f, 0.0f);
PSMTXCopy(mDoMtx_stack_c::get(), i_this->mMtx);
i_this->mpBgW->Move();
i_this->mCylCc.SetC(i_this->current.pos);
i_this->mCylCc.SetR(i_this->mScale.x * 150.0f);
dComIfG_Ccsp()->Set(&i_this->mCylCc);
return 1;
}
#pragma pop
/* 80D35A3C-80D35A44 00077C 0008+00 1/0 0/0 0/0 .text daObj_Web1_IsDelete__FP14obj_web1_class */
static bool daObj_Web1_IsDelete(obj_web1_class* param_0) {
return true;
static int daObj_Web1_IsDelete(obj_web1_class* i_this) {
return 1;
}
/* ############################################################################################## */
/* 80D36120-80D36120 000060 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80D36120 = "Obj_web1";
#pragma pop
/* 80D361F8-80D361FC 000008 0004+00 2/2 0/0 0/0 .bss None */
static u8 data_80D361F8[4];
static u8 data_80D361F8;
/* 80D35A44-80D35AC0 000784 007C+00 1/0 0/0 0/0 .text daObj_Web1_Delete__FP14obj_web1_class */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daObj_Web1_Delete(obj_web1_class* param_0) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web1/d_a_obj_web1/daObj_Web1_Delete__FP14obj_web1_class.s"
static int daObj_Web1_Delete(obj_web1_class* i_this) {
dComIfG_resDelete(&i_this->mPhase, "Obj_web1");
if (i_this->field_0x76c) {
data_80D361F8 = 0;
}
dComIfG_Bgsp().Release(i_this->mpBgW);
if (i_this->mHeap != NULL) {
i_this->mZ2SoundObj.deleteObject();
}
return 1;
}
#pragma pop
/* 80D35AC0-80D35C9C 000800 01DC+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void useHeapInit(fopAc_ac_c* param_0) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web1/d_a_obj_web1/useHeapInit__FP10fopAc_ac_c.s"
static int useHeapInit(fopAc_ac_c* i_this) {
obj_web1_class* _this = static_cast<obj_web1_class*>(i_this);
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Obj_web1", 5);
_this->mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
if (_this->mpModel == NULL) {
return 0;
}
_this->mpBrk = new mDoExt_brkAnm();
if (_this->mpBrk == NULL) {
return 0;
}
J3DAnmTevRegKey* brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes("Obj_web1", 8);
if (!_this->mpBrk->init(_this->mpModel->getModelData(), brk, TRUE, 0, 1.0f, 0, -1)) {
return 0;
}
_this->mpBrk->setPlaySpeed(0.0f);
_this->mpBgW = new dBgW();
if (_this->mpBgW == NULL) {
return 0;
}
cBgD_t* dzb = (cBgD_t*)dComIfG_getObjectRes("Obj_web1", 11);
if (_this->mpBgW->Set(dzb, 1, &_this->mMtx) == 1) {
return 0;
}
_this->mpBgW->SetCrrFunc(dBgS_MoveBGProc_Typical);
_this->mpBgW->SetRideCallback(ride_call_back);
_this->mZ2SoundObj.init(&i_this->current.pos, 1);
return 1;
}
#pragma pop
/* 80D35C9C-80D35CE4 0009DC 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DFrameCtrl::~J3DFrameCtrl() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web1/d_a_obj_web1/__dt__12J3DFrameCtrlFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80D3610C-80D36110 00004C 0004+00 0/1 0/0 0/0 .rodata @4036 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4036 = -1000.0f;
COMPILER_STRIP_GATE(0x80D3610C, &lit_4036);
#pragma pop
/* 80D36110-80D36114 000050 0004+00 0/1 0/0 0/0 .rodata @4037 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4037 = 1000.0f;
COMPILER_STRIP_GATE(0x80D36110, &lit_4037);
#pragma pop
/* 80D36114-80D36118 000054 0004+00 0/1 0/0 0/0 .rodata @4038 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4038 = 13.0f;
COMPILER_STRIP_GATE(0x80D36114, &lit_4038);
#pragma pop
/* 80D36118-80D36120 000058 0008+00 0/1 0/0 0/0 .rodata @4040 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_4040[8] = {
0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80D36118, &lit_4040);
#pragma pop
/* 80D361FC-80D36208 00000C 000C+00 1/1 0/0 0/0 .bss @3643 */
static u8 lit_3643[12];
/* 80D36208-80D36210 000018 0008+00 2/2 0/0 0/0 .bss l_HIO */
static u8 l_HIO[8];
static daObj_Web1_HIO_c l_HIO;
/* 80D35CE4-80D35F98 000A24 02B4+00 1/0 0/0 0/0 .text daObj_Web1_Create__FP10fopAc_ac_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daObj_Web1_Create(fopAc_ac_c* param_0) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web1/d_a_obj_web1/daObj_Web1_Create__FP10fopAc_ac_c.s"
static int daObj_Web1_Create(fopAc_ac_c* i_this) {
if (!fopAcM_CheckCondition(i_this, 8)) {
new (i_this) obj_web1_class();
fopAcM_OnCondition(i_this, 8);
}
obj_web1_class* _this = static_cast<obj_web1_class*>(i_this);
static dCcD_SrcCyl cc_cyl_src = {
{
{0, {{0, 0, 0}, {0xD8FBFFFF, 17}, 0}},
{dCcD_SE_NONE, 0, 0, 0, {0}},
{dCcD_SE_HARD_BODY, 2, 0, 0, {2}},
{0},
},
{
{0.0f, 0.0f, 0.0f},
50.0f,
2.0f,
},
};
int phase = dComIfG_resLoad(&_this->mPhase, "Obj_web1");
if (phase == cPhs_COMPLEATE_e) {
u8 switchNo = fopAcM_GetParam(_this) >> 0x18;
if (switchNo != 0xFF && dComIfGs_isSwitch(switchNo, fopAcM_GetRoomNo(_this))) {
return cPhs_ERROR_e;
}
_this->mPrm0 = fopAcM_GetParam(_this);
if (_this->mPrm0 == 0xFF) {
_this->mPrm0 = 0;
}
_this->mScaleX = fopAcM_GetParam(_this) >> 8;
if (!fopAcM_entrySolidHeap(_this, (heapCallbackFunc)useHeapInit, 0x4B000)) {
return cPhs_ERROR_e;
}
if (dComIfG_Bgsp().Regist(_this->mpBgW, _this)) {
return cPhs_ERROR_e;
}
if (!data_80D361F8) {
_this->field_0x76c = 1;
data_80D361F8 = true;
l_HIO.field_0x4 = -1;
}
fopAcM_SetMtx(_this, _this->mpModel->getBaseTRMtx());
fopAcM_SetMin(_this, -1000.0f, -1000.0f, -1000.0f);
fopAcM_SetMax(_this, 1000.0f, 1000.0f, 1000.0f);
if (_this->mScaleX != 0xFF && _this->mScaleX != 0) {
_this->mScale.x = _this->mScaleX;
}
_this->current.pos.y -= 13.0f;
_this->mStts.Init(255, 0, _this);
_this->mCylCc.Set(cc_cyl_src);
_this->mCylCc.SetStts(&_this->mStts);
_this->mCylCc.OnTgNoHitMark();
_this->mEyePos = _this->current.pos;
daObj_Web1_Execute(_this);
}
return phase;
}
#pragma pop
/* 80D35F98-80D35FE0 000CD8 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm cM3dGCyl::~cM3dGCyl() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web1/d_a_obj_web1/__dt__8cM3dGCylFv.s"
}
#pragma pop
/* 80D36170-80D36190 -00001 0020+00 1/0 0/0 0/0 .data l_daObj_Web1_Method */
static actor_method_class l_daObj_Web1_Method = {
(process_method_func)daObj_Web1_Create, (process_method_func)daObj_Web1_Delete,
(process_method_func)daObj_Web1_Execute, (process_method_func)daObj_Web1_IsDelete,
(process_method_func)daObj_Web1_Draw,
};
/* 80D35FE0-80D36028 000D20 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm cM3dGAab::~cM3dGAab() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web1/d_a_obj_web1/__dt__8cM3dGAabFv.s"
}
#pragma pop
/* 80D36028-80D36070 000D68 0048+00 2/1 0/0 0/0 .text __dt__16daObj_Web1_HIO_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm daObj_Web1_HIO_c::~daObj_Web1_HIO_c() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web1/d_a_obj_web1/__dt__16daObj_Web1_HIO_cFv.s"
}
#pragma pop
/* 80D36070-80D360AC 000DB0 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_web1_cpp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __sinit_d_a_obj_web1_cpp() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_web1/d_a_obj_web1/__sinit_d_a_obj_web1_cpp.s"
}
#pragma pop
#pragma push
#pragma force_active on
REGISTER_CTORS(0x80D36070, __sinit_d_a_obj_web1_cpp);
#pragma pop
/* 80D36120-80D36120 000060 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
/* 80D36190-80D361C0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_WEB1 */
extern actor_process_profile_definition g_profile_OBJ_WEB1 = {
-3,
3,
-3,
PROC_OBJ_WEB1,
0,
&g_fpcLf_Method.mBase,
sizeof(obj_web1_class),
0,
0,
&g_fopAc_Method,
0x0030,
0,
0,
&l_daObj_Web1_Method,
0x00040100,
0,
14,
0,
0,
};