Work on d_a_tag_river_back (#1918)

This commit is contained in:
hev7
2023-09-09 11:46:24 +01:00
committed by GitHub
parent efb7068d67
commit 82780082c7
11 changed files with 205 additions and 416 deletions
@@ -1,99 +1,33 @@
//
// Generated By: dol2asm
// Translation Unit: d_a_tag_river_back
//
/**
* d_a_tag_river_back.cpp
* Tag - River Back
*/
#include "rel/d/a/tag/d_a_tag_river_back/d_a_tag_river_back.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "d/d_procname.h"
#include "dol2asm.h"
//
// Types:
//
struct request_of_phase_process_class {};
struct fopAc_ac_c {
/* 80018B64 */ fopAc_ac_c();
};
struct daTagRiverBack_c {
/* 80D5F2F8 */ void Create();
/* 80D5F360 */ void create();
/* 80D5F3F0 */ void execute();
/* 80D5F48C */ void event_proc_call();
/* 80D5F548 */ void actionWait();
/* 80D5F5BC */ void actionOrderEvent();
/* 80D5F66C */ void actionEvent();
/* 80D5F70C */ void actionDead();
/* 80D5F710 */ void demoProc();
/* 80D5F88C */ void _delete();
};
struct dSv_info_c {
/* 80035360 */ void isSwitch(int, int) const;
};
struct dEvt_control_c {
/* 80042468 */ void reset();
};
struct dEvent_manager_c {
/* 80047758 */ void getEventIdx(fopAc_ac_c*, char const*, u8);
/* 80047A78 */ void endCheck(s16);
/* 80047B1C */ void getMyStaffId(char const*, fopAc_ac_c*, int);
/* 80047D4C */ void getIsAddvance(int);
/* 80047E10 */ void getMyActIdx(int, char const* const*, int, int, int);
/* 800480EC */ void getMySubstanceP(int, char const*, int);
/* 8004817C */ void cutEnd(int);
};
struct JAISoundID {};
struct Vec {};
struct Z2SeMgr {
/* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
};
struct Z2AudioMgr {
static u8 mAudioMgrPtr[4 + 4 /* padding */];
};
//
// Forward References:
//
extern "C" void Create__16daTagRiverBack_cFv();
extern "C" void create__16daTagRiverBack_cFv();
extern "C" void execute__16daTagRiverBack_cFv();
extern "C" void event_proc_call__16daTagRiverBack_cFv();
extern "C" void actionWait__16daTagRiverBack_cFv();
extern "C" void actionOrderEvent__16daTagRiverBack_cFv();
extern "C" void actionEvent__16daTagRiverBack_cFv();
extern "C" void actionDead__16daTagRiverBack_cFv();
extern "C" void demoProc__16daTagRiverBack_cFv();
extern "C" void _delete__16daTagRiverBack_cFv();
extern "C" static void daTagRiverBack_Execute__FP16daTagRiverBack_c();
extern "C" static void daTagRiverBack_Delete__FP16daTagRiverBack_c();
extern "C" static void daTagRiverBack_Create__FP16daTagRiverBack_c();
extern "C" void func_80D5F920(void* _this, u8*);
// clib_calcTimer
extern "C" u8 func_80D5F920(u8*);
extern "C" extern char const* const d_a_tag_river_back__stringBase0;
extern "C" extern void* g_profile_Tag_RiverBack[12];
//
// External References:
//
extern "C" void __ct__10fopAc_ac_cFv();
extern "C" void fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs();
extern "C" void dStage_changeScene__FifUlScsi();
extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
extern "C" void isSwitch__10dSv_info_cCFii();
extern "C" void reset__14dEvt_control_cFv();
extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cPCcUc();
extern "C" void endCheck__16dEvent_manager_cFs();
extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci();
extern "C" void getIsAddvance__16dEvent_manager_cFi();
extern "C" void getMyActIdx__16dEvent_manager_cFiPCPCciii();
extern "C" void getMySubstanceP__16dEvent_manager_cFiPCci();
@@ -101,12 +35,7 @@ extern "C" void cutEnd__16dEvent_manager_cFi();
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void __ptmf_scall();
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 u8 g_dComIfG_gameInfo[122384];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
extern "C" extern u8 data_80D5FA68[4];
@@ -115,22 +44,15 @@ extern "C" extern u8 data_80D5FA68[4];
//
/* ############################################################################################## */
/* 80D5F950-80D5F950 00000C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80D5F950 = "RvBack";
SECTION_DEAD static char const* const stringBase_80D5F957 = "RIVER_BACK";
#pragma pop
/* 80D5F980-80D5F98C 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
static u8 cNullVec__6Z2Calc[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 80D5F98C-80D5F9A0 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 */] = {
static u32 lit_1787[1 + 4 /* padding */] = {
0x02000201,
/* padding */
0x40080000,
@@ -141,51 +63,75 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
#pragma pop
/* 80D5F9A0-80D5F9A4 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */
SECTION_DATA static void* l_arcName = (void*)&d_a_tag_river_back__stringBase0;
static char* l_arcName = "RvBack";
/* 80D5F9A4-80D5F9A8 -00001 0004+00 1/1 0/0 0/0 .data l_evName */
SECTION_DATA static void* l_evName = (void*)(((char*)&d_a_tag_river_back__stringBase0) + 0x7);
static char* l_evName = "RIVER_BACK";
/* 80D5F2F8-80D5F360 000078 0068+00 1/1 0/0 0/0 .text Create__16daTagRiverBack_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagRiverBack_c::Create() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_river_back/d_a_tag_river_back/Create__16daTagRiverBack_cFv.s"
int daTagRiverBack_c::Create() {
mMapToolID = -1;
mEvtInfo.setArchiveName(l_arcName);
mEventID = i_dComIfGp_getEventManager().getEventIdx(this, l_evName, -1);
return 1;
}
#pragma pop
/* 80D5F360-80D5F3F0 0000E0 0090+00 1/1 0/0 0/0 .text create__16daTagRiverBack_cFv */
#ifdef NONMATCHING
// The diff shows this function as matching, but hash is different
int daTagRiverBack_c::create() {
fopAcM_SetupActor(this, daTagRiverBack_c);
int phase = dComIfG_resLoad(&mPhase, "RvBack");
int result = Create();
if (phase == cPhs_COMPLEATE_e && !result) {
phase = cPhs_ERROR_e;
}
return phase;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagRiverBack_c::create() {
asm int daTagRiverBack_c::create() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_river_back/d_a_tag_river_back/func_80D5F360.s"
}
#pragma pop
#endif
/* 80D5F3F0-80D5F48C 000170 009C+00 1/1 0/0 0/0 .text execute__16daTagRiverBack_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagRiverBack_c::execute() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_river_back/d_a_tag_river_back/execute__16daTagRiverBack_cFv.s"
int daTagRiverBack_c::execute() {
u8 swBit = getSwBit();
if (swBit != 0xFF && i_fopAcM_isSwitch(this, swBit) != 0) {
return 1;
}
u8 swBit2 = getSwBit2();
if (swBit2 != 0xFF && i_fopAcM_isSwitch(this, swBit2) == 0) {
return 1;
}
event_proc_call();
return 1;
}
#pragma pop
/* ############################################################################################## */
/* 80D5F950-80D5F950 00000C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80D5F962 = "rvback";
#pragma pop
/* 80D5F9A8-80D5F9AC -00001 0004+00 1/1 0/0 0/0 .data l_staffName */
SECTION_DATA static void* l_staffName = (void*)(((char*)&d_a_tag_river_back__stringBase0) + 0x12);
static char* l_staffName = "rvback";
#ifdef NONMATCHING
/* 80D5F48C-80D5F548 00020C 00BC+00 1/1 0/0 0/0 .text event_proc_call__16daTagRiverBack_cFv */
void daTagRiverBack_c::event_proc_call() {
typedef void (daTagRiverBack_c::*actionFunc)();
/* 80D5F9DC-80D5FA0C 00005C 0030+00 0/1 0/0 0/0 .data l_func$3711 */
static actionFunc l_func[] = {&daTagRiverBack_c::actionWait,
&daTagRiverBack_c::actionOrderEvent,
&daTagRiverBack_c::actionEvent, &daTagRiverBack_c::actionDead};
(this->*l_func[mAction])();
}
#else
/* 80D5F9AC-80D5F9B8 -00001 000C+00 0/1 0/0 0/0 .data @3712 */
#pragma push
#pragma force_active on
@@ -245,44 +191,94 @@ asm void daTagRiverBack_c::event_proc_call() {
#include "asm/rel/d/a/tag/d_a_tag_river_back/d_a_tag_river_back/event_proc_call__16daTagRiverBack_cFv.s"
}
#pragma pop
#endif
/* 80D5F548-80D5F5BC 0002C8 0074+00 1/0 0/0 0/0 .text actionWait__16daTagRiverBack_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagRiverBack_c::actionWait() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_river_back/d_a_tag_river_back/actionWait__16daTagRiverBack_cFv.s"
void daTagRiverBack_c::actionWait() {
if (i_dComIfGp_checkPlayerStatus0(0, 0x100000) != 0) {
mCount = 0;
setAction(ACTION_ORDER_EVENT_e);
fopAcM_orderOtherEventId(this, mEventID, mMapToolID, 0xFFFF, 0, 1);
mEvtInfo.i_onCondition(2);
}
}
#pragma pop
/* 80D5F5BC-80D5F66C 00033C 00B0+00 1/0 0/0 0/0 .text actionOrderEvent__16daTagRiverBack_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagRiverBack_c::actionOrderEvent() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_river_back/d_a_tag_river_back/actionOrderEvent__16daTagRiverBack_cFv.s"
void daTagRiverBack_c::actionOrderEvent() {
daPy_py_c* player = daPy_getPlayerActorClass();
if (mEvtInfo.checkCommandDemoAccrpt()) {
setAction(ACTION_EVENT_e);
mStaffID = i_dComIfGp_evmng_getMyStaffId(l_staffName, NULL, 0);
player->mNoResetFlg0 |= 0x10000;
demoProc();
} else {
fopAcM_orderOtherEventId(this, mEventID, mMapToolID, 0xFFFF, 0, 1);
mEvtInfo.i_onCondition(2);
}
}
#pragma pop
/* 80D5F66C-80D5F70C 0003EC 00A0+00 1/0 0/0 0/0 .text actionEvent__16daTagRiverBack_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagRiverBack_c::actionEvent() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_river_back/d_a_tag_river_back/actionEvent__16daTagRiverBack_cFv.s"
void daTagRiverBack_c::actionEvent() {
daPy_py_c* player = daPy_getPlayerActorClass();
mCount += 1;
if (dComIfGp_evmng_endCheck(mEventID)) {
setAction(ACTION_DEAD_e);
i_dComIfGp_event_reset();
} else {
demoProc();
if (mCount == 30) {
player->voiceStart(Z2SE_WL_V_FALL_TO_RESTART);
}
}
}
#pragma pop
/* 80D5F70C-80D5F710 00048C 0004+00 1/0 0/0 0/0 .text actionDead__16daTagRiverBack_cFv */
void daTagRiverBack_c::actionDead() {
/* empty function */
}
void daTagRiverBack_c::actionDead() {}
/* ############################################################################################## */
#ifdef NONMATCHING
// Does not match due to cLib_calcTimer, also "Timer" string
/* 80D5FA0C-80D5FA14 -00001 0008+00 1/1 0/0 0/0 .data action_table$3769 */
static char* action_table[] = {"WAIT", "SCENE_CHG"};
/* 80D5F710-80D5F88C 000490 017C+00 2/2 0/0 0/0 .text demoProc__16daTagRiverBack_cFv */
int daTagRiverBack_c::demoProc() {
int act_id = dComIfGp_evmng_getMyActIdx(mStaffID, action_table, ARRAY_SIZE(action_table), 0, 0);
if (dComIfGp_evmng_getIsAddvance(mStaffID)) {
switch (act_id) {
case WAIT_e:
int* timer_p = dComIfGp_evmng_getMyIntegerP(mStaffID, "Timer");
if (timer_p == NULL) {
mTimer = 1;
} else {
mTimer = *timer_p;
}
break;
case SCENE_CHG_e:
mDoAud_seStart(Z2SE_FORCE_BACK, 0, 0, 0);
}
}
switch (act_id) {
case WAIT_e:
// Function is cLib_calcTimer
if ((func_80D5F920(&mTimer) & 0xFF) == 0) {
dComIfGp_evmng_cutEnd(mStaffID);
}
break;
case SCENE_CHG_e:
dStage_changeScene(fopAcM_GetParamBit(this, 0, 8) & 0xFF, 0.0f, 0, fopAcM_GetRoomNo(this),
0, -1);
break;
default:
dComIfGp_evmng_cutEnd(mStaffID);
}
return 0;
}
#else
/* 80D5F944-80D5F948 000000 0004+00 1/1 0/0 0/0 .rodata @3813 */
SECTION_RODATA static f32 const lit_3813 = 1.0f;
COMPILER_STRIP_GATE(0x80D5F944, &lit_3813);
@@ -324,60 +320,42 @@ SECTION_DATA static void* action_table[2] = {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagRiverBack_c::demoProc() {
asm int daTagRiverBack_c::demoProc() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_river_back/d_a_tag_river_back/demoProc__16daTagRiverBack_cFv.s"
}
#pragma pop
#endif
/* 80D5F88C-80D5F8C0 00060C 0034+00 1/1 0/0 0/0 .text _delete__16daTagRiverBack_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagRiverBack_c::_delete() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_river_back/d_a_tag_river_back/_delete__16daTagRiverBack_cFv.s"
int daTagRiverBack_c::_delete() {
dComIfG_resDelete(&mPhase, l_arcName);
return 1;
}
#pragma pop
/* 80D5F8C0-80D5F8E0 000640 0020+00 1/0 0/0 0/0 .text daTagRiverBack_Execute__FP16daTagRiverBack_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTagRiverBack_Execute(daTagRiverBack_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_river_back/d_a_tag_river_back/daTagRiverBack_Execute__FP16daTagRiverBack_c.s"
static int daTagRiverBack_Execute(daTagRiverBack_c* i_this) {
return i_this->execute();
}
#pragma pop
/* 80D5F8E0-80D5F900 000660 0020+00 1/0 0/0 0/0 .text daTagRiverBack_Delete__FP16daTagRiverBack_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTagRiverBack_Delete(daTagRiverBack_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_river_back/d_a_tag_river_back/daTagRiverBack_Delete__FP16daTagRiverBack_c.s"
static int daTagRiverBack_Delete(daTagRiverBack_c* i_this) {
return i_this->_delete();
}
#pragma pop
/* 80D5F900-80D5F920 000680 0020+00 1/0 0/0 0/0 .text daTagRiverBack_Create__FP16daTagRiverBack_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTagRiverBack_Create(daTagRiverBack_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_river_back/d_a_tag_river_back/daTagRiverBack_Create__FP16daTagRiverBack_c.s"
static int daTagRiverBack_Create(daTagRiverBack_c* i_this) {
return i_this->create();
}
#pragma pop
/* 80D5F920-80D5F93C 0006A0 001C+00 1/1 0/0 0/0 .text cLib_calcTimer<Uc>__FPUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_80D5F920(void* _this, u8* param_0) {
extern "C" asm u8 func_80D5F920(u8* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_river_back/d_a_tag_river_back/func_80D5F920.s"
}
@@ -385,25 +363,26 @@ extern "C" asm void func_80D5F920(void* _this, u8* param_0) {
/* ############################################################################################## */
/* 80D5FA14-80D5FA34 -00001 0020+00 1/0 0/0 0/0 .data l_daTagRiverBack_Method */
SECTION_DATA static void* l_daTagRiverBack_Method[8] = {
(void*)daTagRiverBack_Create__FP16daTagRiverBack_c,
(void*)daTagRiverBack_Delete__FP16daTagRiverBack_c,
(void*)daTagRiverBack_Execute__FP16daTagRiverBack_c,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
};
static actor_method_class l_daTagRiverBack_Method = {(process_method_func)daTagRiverBack_Create,
(process_method_func)daTagRiverBack_Delete,
(process_method_func)daTagRiverBack_Execute};
/* 80D5FA34-80D5FA64 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Tag_RiverBack */
SECTION_DATA extern void* g_profile_Tag_RiverBack[12] = {
(void*)0xFFFFFFFD, (void*)0x0007FFFD,
(void*)0x01800000, (void*)&g_fpcLf_Method,
(void*)0x0000057C, (void*)NULL,
(void*)NULL, (void*)&g_fopAc_Method,
(void*)0x022C0000, (void*)&l_daTagRiverBack_Method,
(void*)0x00040000, (void*)0x000E0000,
extern actor_process_profile_definition g_profile_Tag_RiverBack = {
-3, // mLayerID
7, // mListID
-3, // mListPrio
PROC_Tag_RiverBack, // mProcName
&g_fpcLf_Method.mBase, // mSubMtd
sizeof(daTagRiverBack_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // mSubMtd
0x022C, // mPriority
&l_daTagRiverBack_Method, // mSubMtd
0x00040000, // mStatus
0, // mActorType
14, // mCullType
};
/* 80D5F950-80D5F950 00000C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */