mirror of https://github.com/zeldaret/tp.git
d_a_tag_mist OK
This commit is contained in:
parent
47edd67190
commit
dae37fdbbb
|
|
@ -1,6 +1,47 @@
|
|||
#ifndef D_A_TAG_MIST_H
|
||||
#define D_A_TAG_MIST_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
|
||||
class daTagMist_c : public fopAc_ac_c {
|
||||
public:
|
||||
/* 8048F258 */ void offSw();
|
||||
/* 8048F2C4 */ void onMySw();
|
||||
/* 8048F310 */ BOOL isMySw();
|
||||
/* 8048F370 */ int Create();
|
||||
/* 8048F444 */ int create();
|
||||
/* 8048F558 */ int execute();
|
||||
/* 8048F690 */ int _delete();
|
||||
|
||||
/* 80031CF0 */ static u8 getPlayerNo();
|
||||
static void setPlayerNo(u8 i_playerNo) { mPlayerNo = i_playerNo; }
|
||||
|
||||
static u8 mPlayerNo;
|
||||
|
||||
/* 0x568 */ u8 unused_0x568[0x570 - 0x568];
|
||||
/* 0x570 */ cXyz mVertices[4];
|
||||
/* 0x5A0 */ u8 mPlayerTouched;
|
||||
/* 0x5A1 */ u8 mInitParams;
|
||||
/* 0x5A2 */ u16 field_0x5a2;
|
||||
/* 0x5A4 */ u16 field_0x5a4;
|
||||
}; // Size: 0x5A8
|
||||
|
||||
namespace daTagMist_prm {
|
||||
inline u8 getSwNoNum(daTagMist_c* i_this) {
|
||||
return fopAcM_GetParam(i_this) >> 0x10;
|
||||
}
|
||||
inline u8 getMySwNo(daTagMist_c* i_this) {
|
||||
return fopAcM_GetParam(i_this) >> 0x8;
|
||||
}
|
||||
inline u8 getTopSwNo(daTagMist_c* i_this) {
|
||||
return fopAcM_GetParam(i_this);
|
||||
}
|
||||
inline u8 getExitNo(daTagMist_c* i_this) {
|
||||
return (fopAcM_GetParam(i_this) >> 0x18) & 0x3F;
|
||||
}
|
||||
inline int getSwNo2(daTagMist_c* i_this) {
|
||||
return i_this->field_0x5a2 & 0xFF;
|
||||
}
|
||||
} // namespace daTagMist_prm
|
||||
|
||||
#endif /* D_A_TAG_MIST_H */
|
||||
|
|
|
|||
|
|
@ -1,243 +1,181 @@
|
|||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: d_a_tag_mist
|
||||
//
|
||||
/**
|
||||
* d_a_tag_mist.cpp
|
||||
*
|
||||
*/
|
||||
|
||||
#include "rel/d/a/tag/d_a_tag_mist/d_a_tag_mist.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct mDoMtx_stack_c {
|
||||
static u8 now[48];
|
||||
};
|
||||
|
||||
struct fopAc_ac_c {
|
||||
/* 80018B64 */ fopAc_ac_c();
|
||||
};
|
||||
|
||||
struct daTagMist_c {
|
||||
/* 8048F258 */ void offSw();
|
||||
/* 8048F2C4 */ void onMySw();
|
||||
/* 8048F310 */ void isMySw();
|
||||
/* 8048F370 */ void Create();
|
||||
/* 8048F444 */ void create();
|
||||
/* 8048F558 */ void execute();
|
||||
/* 8048F690 */ bool _delete();
|
||||
};
|
||||
|
||||
struct dSv_info_c {
|
||||
/* 80035200 */ void onSwitch(int, int);
|
||||
/* 800352B0 */ void offSwitch(int, int);
|
||||
/* 80035360 */ void isSwitch(int, int) const;
|
||||
};
|
||||
|
||||
struct cXyz {
|
||||
/* 8048F518 */ ~cXyz();
|
||||
/* 8048F554 */ cXyz();
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void offSw__11daTagMist_cFv();
|
||||
extern "C" void onMySw__11daTagMist_cFv();
|
||||
extern "C" void isMySw__11daTagMist_cFv();
|
||||
extern "C" void Create__11daTagMist_cFv();
|
||||
extern "C" void create__11daTagMist_cFv();
|
||||
extern "C" void __dt__4cXyzFv();
|
||||
extern "C" void __ct__4cXyzFv();
|
||||
extern "C" void execute__11daTagMist_cFv();
|
||||
extern "C" bool _delete__11daTagMist_cFv();
|
||||
extern "C" static void daTagMist_Execute__FP11daTagMist_c();
|
||||
extern "C" static void daTagMist_Delete__FP11daTagMist_c();
|
||||
extern "C" static void daTagMist_Create__FP10fopAc_ac_c();
|
||||
extern "C" extern void* g_profile_Tag_Mist[12];
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" void mDoMtx_YrotS__FPA4_fs();
|
||||
extern "C" void __ct__10fopAc_ac_cFv();
|
||||
extern "C" void onSwitch__10dSv_info_cFii();
|
||||
extern "C" void offSwitch__10dSv_info_cFii();
|
||||
extern "C" void isSwitch__10dSv_info_cCFii();
|
||||
extern "C" void __dl__FPv();
|
||||
extern "C" void PSMTXMultVec();
|
||||
extern "C" void PSVECSubtract();
|
||||
extern "C" void __construct_array();
|
||||
extern "C" void _savegpr_27();
|
||||
extern "C" void _restgpr_27();
|
||||
extern "C" extern void* g_fopAc_Method[8];
|
||||
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
|
||||
extern "C" u8 now__14mDoMtx_stack_c[48];
|
||||
extern "C" extern u8 g_dComIfG_gameInfo[122384];
|
||||
extern "C" extern u8 mPlayerNo__11daTagMist_c[4];
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "d/d_procname.h"
|
||||
|
||||
/* 8048F258-8048F2C4 000078 006C+00 1/1 0/0 0/0 .text offSw__11daTagMist_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daTagMist_c::offSw() {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist/offSw__11daTagMist_cFv.s"
|
||||
void daTagMist_c::offSw() {
|
||||
u8 sw_no_num;
|
||||
u8 top_sw_no;
|
||||
|
||||
top_sw_no = daTagMist_prm::getTopSwNo(this);
|
||||
sw_no_num = daTagMist_prm::getSwNoNum(this);
|
||||
|
||||
for (int i = 0; i < sw_no_num; i++) {
|
||||
i_fopAcM_offSwitch(this, top_sw_no + i);
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8048F2C4-8048F310 0000E4 004C+00 1/1 0/0 0/0 .text onMySw__11daTagMist_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daTagMist_c::onMySw() {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist/onMySw__11daTagMist_cFv.s"
|
||||
void daTagMist_c::onMySw() {
|
||||
u32 my_sw_no;
|
||||
u32 top_sw_no;
|
||||
|
||||
top_sw_no = daTagMist_prm::getTopSwNo(this);
|
||||
my_sw_no = daTagMist_prm::getMySwNo(this);
|
||||
|
||||
if (my_sw_no != 0xFF) {
|
||||
i_fopAcM_onSwitch(this, top_sw_no + my_sw_no);
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8048F310-8048F370 000130 0060+00 1/1 0/0 0/0 .text isMySw__11daTagMist_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daTagMist_c::isMySw() {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist/isMySw__11daTagMist_cFv.s"
|
||||
BOOL daTagMist_c::isMySw() {
|
||||
u32 my_sw_no;
|
||||
u32 top_sw_no;
|
||||
|
||||
top_sw_no = daTagMist_prm::getTopSwNo(this);
|
||||
my_sw_no = daTagMist_prm::getMySwNo(this);
|
||||
|
||||
if (my_sw_no != 0xFF && i_fopAcM_isSwitch(this, top_sw_no + my_sw_no)) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 8048F700-8048F704 000000 0004+00 1/1 0/0 0/0 .rodata @3678 */
|
||||
SECTION_RODATA static f32 const lit_3678 = -50.0f;
|
||||
COMPILER_STRIP_GATE(0x8048F700, &lit_3678);
|
||||
|
||||
/* 8048F704-8048F708 000004 0004+00 0/1 0/0 0/0 .rodata @3679 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_3679 = 50.0f;
|
||||
COMPILER_STRIP_GATE(0x8048F704, &lit_3679);
|
||||
#pragma pop
|
||||
|
||||
/* 8048F708-8048F70C 000008 0004+00 0/1 0/0 0/0 .rodata @3680 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static u8 const lit_3680[4] = {
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x8048F708, &lit_3680);
|
||||
#pragma pop
|
||||
|
||||
/* 8048F370-8048F444 000190 00D4+00 1/1 0/0 0/0 .text Create__11daTagMist_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daTagMist_c::Create() {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist/Create__11daTagMist_cFv.s"
|
||||
int daTagMist_c::Create() {
|
||||
mVertices[0].x = mScale.x * -50.0f;
|
||||
mVertices[0].z = mScale.z * -50.0f;
|
||||
|
||||
mVertices[1].x = mScale.x * 50.0f;
|
||||
mVertices[1].z = mScale.z * -50.0f;
|
||||
|
||||
mVertices[2].x = mScale.x * 50.0f;
|
||||
mVertices[2].z = mScale.z * 50.0f;
|
||||
|
||||
mVertices[3].x = mScale.x * -50.0f;
|
||||
mVertices[3].z = mScale.z * 50.0f;
|
||||
|
||||
mVertices[3].y = 0.0f;
|
||||
mVertices[2].y = 0.0f;
|
||||
mVertices[1].y = 0.0f;
|
||||
mVertices[0].y = 0.0f;
|
||||
|
||||
if (isMySw()) {
|
||||
setPlayerNo(daTagMist_prm::getExitNo(this));
|
||||
}
|
||||
|
||||
mPlayerTouched = false;
|
||||
return 1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8048F444-8048F518 000264 00D4+00 1/1 0/0 0/0 .text create__11daTagMist_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daTagMist_c::create() {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist/func_8048F444.s"
|
||||
}
|
||||
#pragma pop
|
||||
int daTagMist_c::create() {
|
||||
if (!fopAcM_CheckCondition(this, 8)) {
|
||||
new (this) daTagMist_c();
|
||||
fopAcM_OnCondition(this, 8);
|
||||
}
|
||||
|
||||
/* 8048F518-8048F554 000338 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm cXyz::~cXyz() {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist/__dt__4cXyzFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
if (!mInitParams) {
|
||||
mInitParams = true;
|
||||
|
||||
/* 8048F554-8048F558 000374 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */
|
||||
cXyz::cXyz() {
|
||||
/* empty function */
|
||||
field_0x5a2 = orig.angle.x;
|
||||
field_0x5a4 = orig.angle.z;
|
||||
|
||||
orig.angle.z = 0;
|
||||
orig.angle.x = 0;
|
||||
current.angle.z = 0;
|
||||
current.angle.x = 0;
|
||||
shape_angle.z = 0;
|
||||
shape_angle.x = 0;
|
||||
}
|
||||
|
||||
if (!Create()) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
return cPhs_COMPLEATE_e;
|
||||
}
|
||||
|
||||
/* 8048F558-8048F690 000378 0138+00 1/1 0/0 0/0 .text execute__11daTagMist_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daTagMist_c::execute() {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist/execute__11daTagMist_cFv.s"
|
||||
int daTagMist_c::execute() {
|
||||
if (i_fopAcM_isSwitch(this, daTagMist_prm::getSwNo2(this))) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
fopAc_ac_c* player_p = dComIfGp_getPlayer(0);
|
||||
cXyz player_dist(player_p->current.pos);
|
||||
player_dist -= orig.pos;
|
||||
|
||||
mDoMtx_stack_c::YrotS(-current.angle.y);
|
||||
mDoMtx_stack_c::multVec(&player_dist, &player_dist);
|
||||
|
||||
u8 player_inside = (mVertices[0].x < player_dist.x && mVertices[0].z < player_dist.z) &&
|
||||
(mVertices[2].x > player_dist.x && mVertices[2].z > player_dist.z);
|
||||
|
||||
if (player_inside && !mPlayerTouched) {
|
||||
offSw();
|
||||
onMySw();
|
||||
mPlayerNo = daTagMist_prm::getExitNo(this);
|
||||
}
|
||||
|
||||
mPlayerTouched = player_inside;
|
||||
return 1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8048F690-8048F698 0004B0 0008+00 1/1 0/0 0/0 .text _delete__11daTagMist_cFv */
|
||||
bool daTagMist_c::_delete() {
|
||||
return true;
|
||||
int daTagMist_c::_delete() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 8048F698-8048F6B8 0004B8 0020+00 1/0 0/0 0/0 .text daTagMist_Execute__FP11daTagMist_c
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void daTagMist_Execute(daTagMist_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist/daTagMist_Execute__FP11daTagMist_c.s"
|
||||
static int daTagMist_Execute(daTagMist_c* i_this) {
|
||||
return i_this->execute();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8048F6B8-8048F6D8 0004D8 0020+00 1/0 0/0 0/0 .text daTagMist_Delete__FP11daTagMist_c
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void daTagMist_Delete(daTagMist_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist/daTagMist_Delete__FP11daTagMist_c.s"
|
||||
static int daTagMist_Delete(daTagMist_c* i_this) {
|
||||
return i_this->_delete();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8048F6D8-8048F6F8 0004F8 0020+00 1/0 0/0 0/0 .text daTagMist_Create__FP10fopAc_ac_c */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void daTagMist_Create(fopAc_ac_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist/daTagMist_Create__FP10fopAc_ac_c.s"
|
||||
static int daTagMist_Create(fopAc_ac_c* i_this) {
|
||||
return static_cast<daTagMist_c*>(i_this)->create();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 8048F70C-8048F72C -00001 0020+00 1/0 0/0 0/0 .data l_daTagMist_Method */
|
||||
SECTION_DATA static void* l_daTagMist_Method[8] = {
|
||||
(void*)daTagMist_Create__FP10fopAc_ac_c,
|
||||
(void*)daTagMist_Delete__FP11daTagMist_c,
|
||||
(void*)daTagMist_Execute__FP11daTagMist_c,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
static actor_method_class l_daTagMist_Method = {
|
||||
(process_method_func)daTagMist_Create,
|
||||
(process_method_func)daTagMist_Delete,
|
||||
(process_method_func)daTagMist_Execute,
|
||||
(process_method_func)NULL,
|
||||
(process_method_func)NULL,
|
||||
};
|
||||
|
||||
/* 8048F72C-8048F75C -00001 0030+00 0/0 0/0 1/0 .data g_profile_Tag_Mist */
|
||||
SECTION_DATA extern void* g_profile_Tag_Mist[12] = {
|
||||
(void*)0xFFFFFFFD, (void*)0x0007FFFD,
|
||||
(void*)0x02D70000, (void*)&g_fpcLf_Method,
|
||||
(void*)0x000005A8, (void*)NULL,
|
||||
(void*)NULL, (void*)&g_fopAc_Method,
|
||||
(void*)0x01240000, (void*)&l_daTagMist_Method,
|
||||
(void*)0x00040000, (void*)0x000E0000,
|
||||
extern actor_process_profile_definition g_profile_Tag_Mist = {
|
||||
-3,
|
||||
7,
|
||||
-3,
|
||||
PROC_Tag_Mist,
|
||||
&g_fpcLf_Method.mBase,
|
||||
sizeof(daTagMist_c),
|
||||
0,
|
||||
0,
|
||||
&g_fopAc_Method.base,
|
||||
292,
|
||||
&l_daTagMist_Method,
|
||||
0x40000,
|
||||
0,
|
||||
14,
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue