mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-12 13:04:38 -04:00
d_a_obj_wsStick, d_a_obj_onsenTaru OK (#2268)
* d_a_obj_wsStick, d_a_obj_onsenTaru OK * d_a_obj_pdtile OK * d_a_obj_stone equivalent * d_a_npc_lf OK * Z2SoundMgr OK * Remove fixed nonmatching comment * d_a_obj_kantera OK * Remove unneeded header * daMyna_c::deleteItem matching * d_a_obj_crvsteel OK
This commit is contained in:
+82
-257
@@ -4,124 +4,15 @@
|
||||
*/
|
||||
|
||||
#include "d/actor/d_a_obj_kantera.h"
|
||||
#include "d/actor/d_a_player.h"
|
||||
#include "SSystem/SComponent/c_math.h"
|
||||
#include "d/d_a_itembase_static.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_item.h"
|
||||
#include "d/d_item_data.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "dol2asm.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" static void Reflect__FP4cXyzRC13cBgS_PolyInfof();
|
||||
extern "C" void __dt__8cM3dGPlaFv();
|
||||
extern "C" void initBaseMtx__15daItemKantera_cFv();
|
||||
extern "C" void setBaseMtx__15daItemKantera_cFv();
|
||||
extern "C" void Create__15daItemKantera_cFv();
|
||||
extern "C" bool __CreateHeap__15daItemKantera_cFv();
|
||||
extern "C" void create__15daItemKantera_cFv();
|
||||
extern "C" void __dt__8cM3dGCylFv();
|
||||
extern "C" void __dt__8cM3dGAabFv();
|
||||
extern "C" void __dt__10dCcD_GSttsFv();
|
||||
extern "C" void __dt__12dBgS_AcchCirFv();
|
||||
extern "C" void __dt__12dBgS_ObjAcchFv();
|
||||
extern "C" void bg_check__15daItemKantera_cFv();
|
||||
extern "C" void actionInit__15daItemKantera_cFv();
|
||||
extern "C" void actionWaitInit__15daItemKantera_cFv();
|
||||
extern "C" void actionWait__15daItemKantera_cFv();
|
||||
extern "C" void initActionOrderGetDemo__15daItemKantera_cFv();
|
||||
extern "C" void actionOrderGetDemo__15daItemKantera_cFv();
|
||||
extern "C" void actionGetDemo__15daItemKantera_cFv();
|
||||
extern "C" void execute__15daItemKantera_cFv();
|
||||
extern "C" void draw__15daItemKantera_cFv();
|
||||
extern "C" void _delete__15daItemKantera_cFv();
|
||||
extern "C" static void daItemKantera_Draw__FP15daItemKantera_c();
|
||||
extern "C" static void daItemKantera_Execute__FP15daItemKantera_c();
|
||||
extern "C" static void daItemKantera_Delete__FP15daItemKantera_c();
|
||||
extern "C" static void daItemKantera_Create__FP10fopAc_ac_c();
|
||||
extern "C" void __dt__10cCcD_GSttsFv();
|
||||
extern "C" static void func_80C39630();
|
||||
extern "C" static void func_80C39638();
|
||||
extern "C" extern char const* const d_a_obj_kantera__stringBase0;
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" void mDoMtx_ZXYrotM__FPA4_fsss();
|
||||
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_posMoveF__FP10fopAc_ac_cPC4cXyz();
|
||||
extern "C" void fopAcM_orderItemEvent__FP10fopAc_ac_cUsUs();
|
||||
extern "C" void fopAcM_createItemForTrBoxDemo__FPC4cXyziiiPC5csXyzPC4cXyz();
|
||||
extern "C" void fopAcM_cancelCarryNow__FP10fopAc_ac_c();
|
||||
extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
|
||||
extern "C" void hide__12daItemBase_cFv();
|
||||
extern "C" void show__12daItemBase_cFv();
|
||||
extern "C" void chkDraw__12daItemBase_cFv();
|
||||
extern "C" void CheckFieldItemCreateHeap__FP10fopAc_ac_c();
|
||||
extern "C" void reset__14dEvt_control_cFv();
|
||||
extern "C" void setPtI_Id__14dEvt_control_cFUi();
|
||||
extern "C" void endCheckOld__16dEvent_manager_cFPCc();
|
||||
extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla();
|
||||
extern "C" void __ct__12dBgS_AcchCirFv();
|
||||
extern "C" void SetWall__12dBgS_AcchCirFff();
|
||||
extern "C" void __dt__9dBgS_AcchFv();
|
||||
extern "C" void __ct__9dBgS_AcchFv();
|
||||
extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz();
|
||||
extern "C" void CrrPos__9dBgS_AcchFR4dBgS();
|
||||
extern "C" void SetObj__16dBgS_PolyPassChkFv();
|
||||
extern "C" void __ct__10dCcD_GSttsFv();
|
||||
extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
|
||||
extern "C" void __ct__12dCcD_GObjInfFv();
|
||||
extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
|
||||
extern "C" void checkItemGet__FUci();
|
||||
extern "C" void DeleteBase__12daItemBase_cFPCc();
|
||||
extern "C" bool clothCreate__12daItemBase_cFv();
|
||||
extern "C" void DrawBase__12daItemBase_cFv();
|
||||
extern "C" void RotateYBase__12daItemBase_cFv();
|
||||
extern "C" void setListStart__12daItemBase_cFv();
|
||||
extern "C" void settingBeforeDraw__12daItemBase_cFv();
|
||||
extern "C" void setTevStr__12daItemBase_cFv();
|
||||
extern "C" void setShadow__12daItemBase_cFv();
|
||||
extern "C" void animEntry__12daItemBase_cFv();
|
||||
extern "C" void chkFlag__12daItemBase_cFi();
|
||||
extern "C" void getTevFrm__12daItemBase_cFv();
|
||||
extern "C" void getBtpFrm__12daItemBase_cFv();
|
||||
extern "C" void getShadowSize__12daItemBase_cFv();
|
||||
extern "C" void getCollisionH__12daItemBase_cFv();
|
||||
extern "C" void getCollisionR__12daItemBase_cFv();
|
||||
extern "C" void __ml__4cXyzCFf();
|
||||
extern "C" void cM_atan2s__Fff();
|
||||
extern "C" void __dt__13cBgS_PolyInfoFv();
|
||||
extern "C" void __dt__8cM3dGCirFv();
|
||||
extern "C" void SetH__8cM3dGCylFf();
|
||||
extern "C" void SetR__8cM3dGCylFf();
|
||||
extern "C" void __dl__FPv();
|
||||
extern "C" void __ptmf_scall();
|
||||
extern "C" void _savegpr_29();
|
||||
extern "C" void _restgpr_29();
|
||||
extern "C" extern void* __vt__8dCcD_Cyl[36];
|
||||
extern "C" extern void* __vt__9dCcD_Stts[11];
|
||||
extern "C" void* field_item_res__10dItem_data[1020];
|
||||
extern "C" u8 item_info__10dItem_data[1020 + 4 /* padding */];
|
||||
extern "C" extern void* __vt__12daItemBase_c[17 + 1 /* padding */];
|
||||
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 data_80C39860[4];
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80C39648-80C3968C 000000 0044+00 4/4 0/0 0/0 .rodata l_cyl_src */
|
||||
const static dCcD_SrcCyl l_cyl_src = {
|
||||
{
|
||||
@@ -137,144 +28,21 @@ const static dCcD_SrcCyl l_cyl_src = {
|
||||
} // mCyl
|
||||
};
|
||||
|
||||
/* 80C3968C-80C39690 000044 0004+00 0/3 0/0 0/0 .rodata @3855 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static u8 const lit_3855[4] = {
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80C3968C, &lit_3855);
|
||||
#pragma pop
|
||||
|
||||
/* 80C39690-80C39698 000048 0008+00 0/1 0/0 0/0 .rodata @3856 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static u8 const lit_3856[8] = {
|
||||
0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80C39690, &lit_3856);
|
||||
#pragma pop
|
||||
|
||||
/* 80C39698-80C396A0 000050 0008+00 0/1 0/0 0/0 .rodata @3857 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static u8 const lit_3857[8] = {
|
||||
0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80C39698, &lit_3857);
|
||||
#pragma pop
|
||||
|
||||
/* 80C396A0-80C396A8 000058 0008+00 0/1 0/0 0/0 .rodata @3858 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static u8 const lit_3858[8] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80C396A0, &lit_3858);
|
||||
#pragma pop
|
||||
|
||||
/* 80C396DC-80C396E8 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
|
||||
SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
/* 80C396E8-80C396FC 00000C 0004+10 0/0 0/0 0/0 .data @1787 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
|
||||
0x02000201,
|
||||
/* padding */
|
||||
0x40080000,
|
||||
0x00000000,
|
||||
0x3FE00000,
|
||||
0x00000000,
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 80C396FC-80C39708 -00001 000C+00 0/1 0/0 0/0 .data @4184 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* lit_4184[3] = {
|
||||
(void*)NULL,
|
||||
(void*)0xFFFFFFFF,
|
||||
(void*)actionInit__15daItemKantera_cFv,
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 80C39708-80C39714 -00001 000C+00 0/1 0/0 0/0 .data @4185 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* lit_4185[3] = {
|
||||
(void*)NULL,
|
||||
(void*)0xFFFFFFFF,
|
||||
(void*)actionWait__15daItemKantera_cFv,
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 80C39714-80C39720 -00001 000C+00 0/1 0/0 0/0 .data @4186 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* lit_4186[3] = {
|
||||
(void*)NULL,
|
||||
(void*)0xFFFFFFFF,
|
||||
(void*)actionOrderGetDemo__15daItemKantera_cFv,
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 80C39720-80C3972C -00001 000C+00 0/1 0/0 0/0 .data @4187 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* lit_4187[3] = {
|
||||
(void*)NULL,
|
||||
(void*)0xFFFFFFFF,
|
||||
(void*)actionGetDemo__15daItemKantera_cFv,
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 80C3972C-80C3975C 000050 0030+00 0/1 0/0 0/0 .data l_demoFunc$4183 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static u8 l_demoFunc[48] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 80C3975C-80C3977C -00001 0020+00 1/0 0/0 0/0 .data l_daItemKantera_Method */
|
||||
static actor_method_class l_daItemKantera_Method = {
|
||||
(process_method_func)daItemKantera_Create__FP10fopAc_ac_c,
|
||||
(process_method_func)daItemKantera_Delete__FP15daItemKantera_c,
|
||||
(process_method_func)daItemKantera_Execute__FP15daItemKantera_c,
|
||||
0,
|
||||
(process_method_func)daItemKantera_Draw__FP15daItemKantera_c,
|
||||
};
|
||||
|
||||
/* 80C3977C-80C397AC -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Kantera */
|
||||
extern actor_process_profile_definition g_profile_Obj_Kantera = {
|
||||
fpcLy_CURRENT_e, // mLayerID
|
||||
7, // mListID
|
||||
fpcPi_CURRENT_e, // mListPrio
|
||||
PROC_Obj_Kantera, // mProcName
|
||||
&g_fpcLf_Method.base, // sub_method
|
||||
sizeof(daItemKantera_c), // mSize
|
||||
0, // mSizeOther
|
||||
0, // mParameters
|
||||
&g_fopAc_Method.base, // sub_method
|
||||
238, // mPriority
|
||||
&l_daItemKantera_Method, // sub_method
|
||||
0x00040100, // mStatus
|
||||
fopAc_ACTOR_e, // mActorType
|
||||
fopAc_CULLBOX_CUSTOM_e, // cullType
|
||||
};
|
||||
UNK_REL_DATA
|
||||
|
||||
/* 80C38678-80C38974 000078 02FC+00 1/1 0/0 0/0 .text Reflect__FP4cXyzRC13cBgS_PolyInfof
|
||||
*/
|
||||
static f32 Reflect(cXyz* i_xyz, cBgS_PolyInfo const& param_1, f32 param_2) {
|
||||
// NONMATCHING
|
||||
static f32 Reflect(cXyz* i_xyz, cBgS_PolyInfo const& param_2, f32 param_3) {
|
||||
cM3dGPla acStack_3c;
|
||||
if (dComIfG_Bgsp().GetTriPla(param_2, &acStack_3c) != 0) {
|
||||
cXyz cStack_48;
|
||||
f32 dVar5 = i_xyz->absXZ();
|
||||
C_VECReflect(i_xyz, &acStack_3c.mNormal, &cStack_48);
|
||||
*i_xyz = (cStack_48 * dVar5) * param_3;
|
||||
return i_xyz->absXZ();
|
||||
}
|
||||
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
/* 80C389BC-80C389F8 0003BC 003C+00 1/1 0/0 0/0 .text initBaseMtx__15daItemKantera_cFv */
|
||||
@@ -347,8 +115,8 @@ int daItemKantera_c::create() {
|
||||
}
|
||||
|
||||
/* 80C38F78-80C39068 000978 00F0+00 1/1 0/0 0/0 .text bg_check__15daItemKantera_cFv */
|
||||
// NONMATCHING lfs not correct
|
||||
void daItemKantera_c::bg_check() {
|
||||
f32 dVar6 = 0.7f;
|
||||
if (mAcch.ChkWallHit()) {
|
||||
if (speedF > 5.0f) {
|
||||
Reflect(&speed, mAcchCir, 1.0f);
|
||||
@@ -360,7 +128,9 @@ void daItemKantera_c::bg_check() {
|
||||
if (speedF > 5.0f) {
|
||||
Reflect(&l_speed, mAcchCir, 0.7f);
|
||||
}
|
||||
speed.y = -field_0x93c.y * 0.7f;
|
||||
f32 tmp = field_0x93c.y;
|
||||
tmp = -tmp;
|
||||
speed.y = tmp * dVar6;
|
||||
if (speed.y < 3.0f) {
|
||||
fopAcM_SetSpeedF(this, 0.0f);
|
||||
}
|
||||
@@ -388,17 +158,32 @@ int daItemKantera_c::actionWaitInit() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80C396C8-80C396CC 000080 0004+00 0/1 0/0 0/0 .rodata @4145 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_4145 = 9.0f / 10.0f;
|
||||
COMPILER_STRIP_GATE(0x80C396C8, &lit_4145);
|
||||
#pragma pop
|
||||
|
||||
/* 80C3911C-80C39234 000B1C 0118+00 1/0 0/0 0/0 .text actionWait__15daItemKantera_cFv */
|
||||
int daItemKantera_c::actionWait() {
|
||||
// NONMATCHING
|
||||
fopAcM_posMoveF(this, mCcStts.GetCCMoveP());
|
||||
mAcch.CrrPos(dComIfG_Bgsp());
|
||||
bg_check();
|
||||
if (mAcch.ChkGroundHit()) {
|
||||
cLib_onBit(attention_info.flags, 0x10UL);
|
||||
speedF *= 0.9f;
|
||||
if (speedF < 1.0f) {
|
||||
speedF = 0.0f;
|
||||
}
|
||||
} else {
|
||||
cLib_offBit(attention_info.flags, 0x10UL);
|
||||
}
|
||||
daPy_py_c* player = daPy_getPlayerActorClass();
|
||||
if (fopAcM_checkCarryNow(this)) {
|
||||
cLib_offBit(attention_info.flags, 0x10UL);
|
||||
if (player->getGrabUpStart()) {
|
||||
fopAcM_cancelCarryNow(this);
|
||||
initActionOrderGetDemo();
|
||||
}
|
||||
} else {
|
||||
cLib_onBit(attention_info.flags, 0x10UL);
|
||||
}
|
||||
attention_info.position = current.pos;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80C39234-80C392D0 000C34 009C+00 1/1 0/0 0/0 .text initActionOrderGetDemo__15daItemKantera_cFv
|
||||
@@ -442,7 +227,19 @@ int daItemKantera_c::actionGetDemo() {
|
||||
|
||||
/* 80C393B0-80C394DC 000DB0 012C+00 1/1 0/0 0/0 .text execute__15daItemKantera_cFv */
|
||||
int daItemKantera_c::execute() {
|
||||
// NONMATCHING
|
||||
static daItemKantera_c::actionFunc l_demoFunc[4] = {
|
||||
&daItemKantera_c::actionInit,
|
||||
&daItemKantera_c::actionWait,
|
||||
&daItemKantera_c::actionOrderGetDemo,
|
||||
&daItemKantera_c::actionGetDemo,
|
||||
};
|
||||
field_0x93c = speed;
|
||||
field_0x930++;
|
||||
(this->*(l_demoFunc[mStatus]))();
|
||||
eyePos = current.pos;
|
||||
attention_info.position = current.pos;
|
||||
setBaseMtx();
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80C394DC-80C39530 000EDC 0054+00 1/1 0/0 0/0 .text draw__15daItemKantera_cFv */
|
||||
@@ -480,3 +277,31 @@ static int daItemKantera_Delete(daItemKantera_c* i_this) {
|
||||
static int daItemKantera_Create(fopAc_ac_c* i_this) {
|
||||
return static_cast<daItemKantera_c*>(i_this)->create();
|
||||
}
|
||||
|
||||
|
||||
/* 80C3975C-80C3977C -00001 0020+00 1/0 0/0 0/0 .data l_daItemKantera_Method */
|
||||
static actor_method_class l_daItemKantera_Method = {
|
||||
(process_method_func)daItemKantera_Create,
|
||||
(process_method_func)daItemKantera_Delete,
|
||||
(process_method_func)daItemKantera_Execute,
|
||||
NULL,
|
||||
(process_method_func)daItemKantera_Draw,
|
||||
};
|
||||
|
||||
/* 80C3977C-80C397AC -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Kantera */
|
||||
extern actor_process_profile_definition g_profile_Obj_Kantera = {
|
||||
fpcLy_CURRENT_e, // mLayerID
|
||||
7, // mListID
|
||||
fpcPi_CURRENT_e, // mListPrio
|
||||
PROC_Obj_Kantera, // mProcName
|
||||
&g_fpcLf_Method.base, // sub_method
|
||||
sizeof(daItemKantera_c), // mSize
|
||||
0, // mSizeOther
|
||||
0, // mParameters
|
||||
&g_fopAc_Method.base, // sub_method
|
||||
238, // mPriority
|
||||
&l_daItemKantera_Method, // sub_method
|
||||
0x00040100, // mStatus
|
||||
fopAc_ACTOR_e, // mActorType
|
||||
fopAc_CULLBOX_CUSTOM_e, // cullType
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user