d_a_tag_chkpoint WIP, d_a_tag_myna2 OK (#1883)

* d_a_tag_chgrestart

* d_a_tag_bottle_item

* deps fix

* more d_a_tag_chkpoint, d_a_tag_myna2 OK

* Fix Build Scripts (#1879)

* d_a_npc_fish (#1880)

* d_drawlist (#1881)

* comment

* progress

* progress

---------

Co-authored-by: jdflyer <jdflyer10@gmail.com>
Co-authored-by: Noah McQueen <67965519+Yotona@users.noreply.github.com>
Co-authored-by: Jcw87 <Jcw87@users.noreply.github.com>
This commit is contained in:
Pheenoh
2023-08-13 23:45:56 -06:00
committed by GitHub
co-authored by jdflyer Noah McQueen Jcw87
parent a997bb00bc
commit da21df7ee7
12 changed files with 268 additions and 536 deletions
+114 -70
View File
@@ -1,34 +1,13 @@
//
// Generated By: dol2asm
// Translation Unit: d_a_tag_chkpoint
//
/**
* d_a_tag_chkpoint.cpp
*
*/
#include "rel/d/a/tag/d_a_tag_chkpoint/d_a_tag_chkpoint.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct fopAc_ac_c {
/* 80018B64 */ fopAc_ac_c();
/* 80018C8C */ ~fopAc_ac_c();
};
struct daTag_Chk_c {
/* 8048A6F8 */ void execute();
};
struct cXyz {};
struct daPy_py_c {
/* 8015F4F0 */ void setLookPos(cXyz*);
};
struct dSv_info_c {
/* 80035360 */ void isSwitch(int, int) const;
};
#include "d/d_procname.h"
#include "d/a/d_a_player.h"
//
// Forward References:
@@ -40,7 +19,7 @@ extern "C" static void daTag_Chk_Execute__FP11daTag_Chk_c();
extern "C" static bool daTag_Chk_IsDelete__FP11daTag_Chk_c();
extern "C" static void daTag_Chk_Delete__FP11daTag_Chk_c();
extern "C" static void daTag_Chk_Create__FP10fopAc_ac_c();
extern "C" extern void* g_profile_TAG_CHKPOINT[12];
// extern "C" extern void* g_profile_TAG_CHKPOINT[12];
//
// External References:
@@ -52,11 +31,6 @@ extern "C" void isSwitch__10dSv_info_cCFii();
extern "C" void setLookPos__9daPy_py_cFP4cXyz();
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 u8 g_dComIfG_gameInfo[122384];
extern "C" extern u32 __float_nan;
extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
//
// Declarations:
@@ -121,47 +95,105 @@ COMPILER_STRIP_GATE(0x8048AC48, &lit_3846);
#pragma pop
/* 8048A6F8-8048A9EC 000078 02F4+00 1/1 0/0 0/0 .text execute__11daTag_Chk_cFv */
#ifdef NONMATCHING
// still lots wrong here
s32 daTag_Chk_c::execute() {
int iVar12;
bool bVar6;
u32 local_64;
u32 local_60;
u32 local_5c;
s32 l_roomNo = fopAcM_GetRoomNo(this);
s32 l_stayNo = dComIfGp_roomControl_getStayNo();
if (l_roomNo == l_stayNo) {
local_64 = 0x1010000;
local_60 = 0x101;
local_5c = 0;
u8 l_swBit = getSwBit();
if (l_swBit == -1) {
l_stayNo = 0;
} else {
l_roomNo = fopAcM_GetRoomNo(this);
l_stayNo = dComIfGs_isSwitch(l_swBit,l_roomNo);
if (l_stayNo == 0) {
l_stayNo = 2;
} else {
l_stayNo = 1;
}
}
l_swBit = getSwBit2();
if (l_swBit == -1) {
iVar12 = 0;
} else {
l_roomNo = fopAcM_GetRoomNo(this);
l_stayNo = dComIfGs_isSwitch(l_swBit,l_roomNo);
if (l_stayNo == 0) {
l_stayNo = 2;
} else {
l_stayNo = 1;
}
}
bVar6 = false;
if (true) {
daPy_py_c* link = dComIfGp_getLinkPlayer();
u16 areaType = getAreaType();
}
mAttentionInfo.mFlags = 0;
if (bVar6) {
daPy_py_c::setLookPos(&mAttentionInfo.mPosition);
mAttentionInfo.mFlags = 0x1000;
}
return 1;
}
return 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTag_Chk_c::execute() {
asm s32 daTag_Chk_c::execute() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_chkpoint/d_a_tag_chkpoint/execute__11daTag_Chk_cFv.s"
}
#pragma pop
#endif
/* 8048A9EC-8048A9F4 00036C 0008+00 1/0 0/0 0/0 .text daTag_Chk_Draw__FP11daTag_Chk_c */
static bool daTag_Chk_Draw(daTag_Chk_c* param_0) {
return true;
static s32 daTag_Chk_Draw(daTag_Chk_c* i_this) {
return 1;
}
/* 8048A9F4-8048AA18 000374 0024+00 1/0 0/0 0/0 .text daTag_Chk_Execute__FP11daTag_Chk_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTag_Chk_Execute(daTag_Chk_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_chkpoint/d_a_tag_chkpoint/daTag_Chk_Execute__FP11daTag_Chk_c.s"
static s32 daTag_Chk_Execute(daTag_Chk_c* i_this) {
i_this->execute();
return 1;
}
#pragma pop
/* 8048AA18-8048AA20 000398 0008+00 1/0 0/0 0/0 .text daTag_Chk_IsDelete__FP11daTag_Chk_c
*/
static bool daTag_Chk_IsDelete(daTag_Chk_c* param_0) {
return true;
static s32 daTag_Chk_IsDelete(daTag_Chk_c* i_this) {
return 1;
}
/* 8048AA20-8048AA50 0003A0 0030+00 1/0 0/0 0/0 .text daTag_Chk_Delete__FP11daTag_Chk_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTag_Chk_Delete(daTag_Chk_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_chkpoint/d_a_tag_chkpoint/daTag_Chk_Delete__FP11daTag_Chk_c.s"
static s32 daTag_Chk_Delete(daTag_Chk_c* i_this) {
i_this->~daTag_Chk_c();
return 1;
}
#pragma pop
/* ############################################################################################## */
/* 8048AC50-8048AC54 000028 0004+00 0/1 0/0 0/0 .rodata @3925 */
@@ -202,34 +234,46 @@ COMPILER_STRIP_GATE(0x8048AC60, &lit_3930);
#pragma pop
/* 8048AA50-8048AC20 0003D0 01D0+00 1/0 0/0 0/0 .text daTag_Chk_Create__FP10fopAc_ac_c */
#ifdef NONMATCHING
// literals
static s32 daTag_Chk_Create(fopAc_ac_c* i_this) {
return static_cast<daTag_Chk_c*>(i_this)->create();
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTag_Chk_Create(fopAc_ac_c* param_0) {
static asm s32 daTag_Chk_Create(fopAc_ac_c* i_this) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_chkpoint/d_a_tag_chkpoint/daTag_Chk_Create__FP10fopAc_ac_c.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 8048AC68-8048AC88 -00001 0020+00 1/0 0/0 0/0 .data l_daTag_Chk_Method */
SECTION_DATA static void* l_daTag_Chk_Method[8] = {
(void*)daTag_Chk_Create__FP10fopAc_ac_c,
(void*)daTag_Chk_Delete__FP11daTag_Chk_c,
(void*)daTag_Chk_Execute__FP11daTag_Chk_c,
(void*)daTag_Chk_IsDelete__FP11daTag_Chk_c,
(void*)daTag_Chk_Draw__FP11daTag_Chk_c,
(void*)NULL,
(void*)NULL,
(void*)NULL,
static actor_method_class l_daTag_Chk_Method = {
(process_method_func)daTag_Chk_Create,
(process_method_func)daTag_Chk_Delete,
(process_method_func)daTag_Chk_Execute,
(process_method_func)daTag_Chk_IsDelete,
(process_method_func)daTag_Chk_Draw
};
/* 8048AC88-8048ACB8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_TAG_CHKPOINT */
SECTION_DATA extern void* g_profile_TAG_CHKPOINT[12] = {
(void*)0xFFFFFFFD, (void*)0x0007FFFD,
(void*)0x02D00000, (void*)&g_fpcLf_Method,
(void*)0x00000588, (void*)NULL,
(void*)NULL, (void*)&g_fopAc_Method,
(void*)0x01180000, (void*)&l_daTag_Chk_Method,
(void*)0x00044000, (void*)0x00060000,
};
extern actor_process_profile_definition g_profile_TAG_CHKPOINT = {
-3, // mLayerID
7, // mListID
-3, // mListPrio
PROC_TAG_CHKPOINT, // mProcName
&g_fpcLf_Method.mBase, // mSubMtd
sizeof(daTag_Chk_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // mSubMtd
0x0118, // mPriority
&l_daTag_Chk_Method, // mSubMtd
0x00044000, // mStatus
0, // mActorType
6 // mCullType
};
+79 -186
View File
@@ -1,198 +1,88 @@
//
// Generated By: dol2asm
// Translation Unit: d_a_tag_myna2
//
/**
* @file d_a_tag_myna2.cpp
* @brief Tag - Creates Plumm's actor.
*/
#include "rel/d/a/tag/d_a_tag_myna2/d_a_tag_myna2.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "d/d_procname.h"
//
// Types:
//
struct fopAc_ac_c {
/* 80018B64 */ fopAc_ac_c();
/* 80018C8C */ ~fopAc_ac_c();
};
struct Vec {};
struct cXyz {
/* 80266B34 */ void operator-(Vec const&) const;
};
struct fopAcM_gc_c {
/* 8001DCBC */ void gndCheck(cXyz const*);
static f32 mGroundY;
};
struct daTagMyna2_c {
/* 80D5C698 */ void create();
/* 80D5C708 */ void execute();
};
struct dSv_info_c {
/* 80035200 */ void onSwitch(int, int);
/* 80035360 */ void isSwitch(int, int) const;
};
struct csXyz {
/* 802673F4 */ csXyz(s16, s16, s16);
};
//
// Forward References:
//
extern "C" void create__12daTagMyna2_cFv();
extern "C" void execute__12daTagMyna2_cFv();
extern "C" static void daTagMyna2_Create__FP10fopAc_ac_c();
extern "C" static void daTagMyna2_Execute__FP12daTagMyna2_c();
extern "C" static void daTagMyna2_Delete__FP12daTagMyna2_c();
extern "C" void func_80D5CA18(void* _this, s16*);
extern "C" extern void* g_profile_TAG_MYNA2[12];
//
// External References:
//
extern "C" void __ct__10fopAc_ac_cFv();
extern "C" void __dt__10fopAc_ac_cFv();
extern "C" void fopAcM_create__FsUlPC4cXyziPC5csXyzPC4cXyzSc();
extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c();
extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz();
extern "C" void onSwitch__10dSv_info_cFii();
extern "C" void isSwitch__10dSv_info_cCFii();
extern "C" void __mi__4cXyzCFRC3Vec();
extern "C" void __ct__5csXyzFsss();
extern "C" void PSVECSquareMag();
extern "C" void _savegpr_28();
extern "C" void _restgpr_28();
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" extern u32 __float_nan;
extern "C" f32 mGroundY__11fopAcM_gc_c;
//
// Declarations:
//
// clib_calcTimer
extern "C" void func_80D5CA18(s16*);
/* 80D5C698-80D5C708 000078 0070+00 1/1 0/0 0/0 .text create__12daTagMyna2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagMyna2_c::create() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_myna2/d_a_tag_myna2/create__12daTagMyna2_cFv.s"
s32 daTagMyna2_c::create() {
if (!fopAcM_CheckCondition(this, 8)) {
new (this) daTagMyna2_c();
fopAcM_OnCondition(this, 8);
}
mSwitchNo = getSwBit();
mMode = getMode();
mTimer = 5;
return cPhs_COMPLEATE_e;
}
#pragma pop
/* ############################################################################################## */
/* 80D5CA3C-80D5CA44 000000 0004+04 1/1 0/0 0/0 .rodata @3743 */
SECTION_RODATA static u8 const lit_3743[4 + 4 /* padding */] = {
0x00,
0x00,
0x00,
0x00,
/* padding */
0x00,
0x00,
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x80D5CA3C, &lit_3743);
/* 80D5CA44-80D5CA4C 000008 0008+00 0/1 0/0 0/0 .rodata @3744 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3744[8] = {
0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80D5CA44, &lit_3744);
#pragma pop
/* 80D5CA4C-80D5CA54 000010 0008+00 0/1 0/0 0/0 .rodata @3745 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3745[8] = {
0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80D5CA4C, &lit_3745);
#pragma pop
/* 80D5CA54-80D5CA5C 000018 0008+00 0/1 0/0 0/0 .rodata @3746 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3746[8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80D5CA54, &lit_3746);
#pragma pop
/* 80D5CA5C-80D5CA60 000020 0004+00 0/1 0/0 0/0 .rodata @3747 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3747 = 100.0f;
COMPILER_STRIP_GATE(0x80D5CA5C, &lit_3747);
#pragma pop
/* 80D5CA60-80D5CA64 000024 0004+00 0/1 0/0 0/0 .rodata @3748 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3748 = 1000.0f;
COMPILER_STRIP_GATE(0x80D5CA60, &lit_3748);
#pragma pop
/* 80D5C708-80D5C9A8 0000E8 02A0+00 1/1 0/0 0/0 .text execute__12daTagMyna2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagMyna2_c::execute() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_myna2/d_a_tag_myna2/execute__12daTagMyna2_cFv.s"
s32 daTagMyna2_c::execute() {
if (!i_dComIfGp_event_runCheck()) {
if (!dComIfGs_isSwitch(mSwitchNo,fopAcM_GetRoomNo(this))) {
if ((dComIfGp_getPlayer(0)->current.pos - current.pos).absXZ() < getExtent()) {
s16 angle_y = (s16)fopAcM_searchPlayerAngleY(this);
csXyz actor_angle(0x1e,angle_y,0);
cXyz actor_pos = current.pos;
actor_pos.y += 1000.0f;
if (fopAcM_gc_c::gndCheck(&actor_pos) != 0) {
actor_pos.y = fopAcM_gc_c::getGroundY();
} else {
actor_pos = current.pos;
}
if (mTimer == 0) {
s32 actor_create = fopAcM_create(PROC_MYNA2, (mSwitchNo << 8 | 0xffff0001), &actor_pos, fopAcM_GetRoomNo(this), &actor_angle, 0, 0xffffffff);
if (actor_create != 0xFFFFFFFF) {
dComIfGs_onSwitch(mSwitchNo,fopAcM_GetRoomNo(this));
}
}
}
}
}
if (i_dComIfGp_event_runCheck()) {
mTimer = 5;
} else {
// func_80D5CA18 is clib_calcTimer.
// It should be compiler generated, but it causes matching issues currently.
func_80D5CA18(&mTimer);
}
return 1;
}
#pragma pop
/* 80D5C9A8-80D5C9C8 000388 0020+00 1/0 0/0 0/0 .text daTagMyna2_Create__FP10fopAc_ac_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTagMyna2_Create(fopAc_ac_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_myna2/d_a_tag_myna2/daTagMyna2_Create__FP10fopAc_ac_c.s"
static s32 daTagMyna2_Create(fopAc_ac_c* i_this) {
return static_cast<daTagMyna2_c*>(i_this)->create();
}
#pragma pop
/* 80D5C9C8-80D5C9E8 0003A8 0020+00 1/0 0/0 0/0 .text daTagMyna2_Execute__FP12daTagMyna2_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTagMyna2_Execute(daTagMyna2_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_myna2/d_a_tag_myna2/daTagMyna2_Execute__FP12daTagMyna2_c.s"
static s32 daTagMyna2_Execute(daTagMyna2_c* i_this) {
return i_this->execute();
}
#pragma pop
/* 80D5C9E8-80D5CA18 0003C8 0030+00 1/0 0/0 0/0 .text daTagMyna2_Delete__FP12daTagMyna2_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTagMyna2_Delete(daTagMyna2_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_myna2/d_a_tag_myna2/daTagMyna2_Delete__FP12daTagMyna2_c.s"
static s32 daTagMyna2_Delete(daTagMyna2_c* i_this) {
i_this->~daTagMyna2_c();
return 1;
}
#pragma pop
/* 80D5CA18-80D5CA34 0003F8 001C+00 1/1 0/0 0/0 .text cLib_calcTimer<s>__FPs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_80D5CA18(void* _this, s16* param_0) {
extern "C" asm void func_80D5CA18(s16* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_myna2/d_a_tag_myna2/func_80D5CA18.s"
}
@@ -200,23 +90,26 @@ extern "C" asm void func_80D5CA18(void* _this, s16* param_0) {
/* ############################################################################################## */
/* 80D5CA64-80D5CA84 -00001 0020+00 1/0 0/0 0/0 .data l_daTagMyna2_Method */
SECTION_DATA static void* l_daTagMyna2_Method[8] = {
(void*)daTagMyna2_Create__FP10fopAc_ac_c,
(void*)daTagMyna2_Delete__FP12daTagMyna2_c,
(void*)daTagMyna2_Execute__FP12daTagMyna2_c,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
static actor_method_class l_daTagMyna2_Method = {
(process_method_func)daTagMyna2_Create,
(process_method_func)daTagMyna2_Delete,
(process_method_func)daTagMyna2_Execute,
};
/* 80D5CA84-80D5CAB4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_TAG_MYNA2 */
SECTION_DATA extern void* g_profile_TAG_MYNA2[12] = {
(void*)0xFFFFFFFD, (void*)0x0007FFFD,
(void*)0x02870000, (void*)&g_fpcLf_Method,
(void*)0x00000574, (void*)NULL,
(void*)NULL, (void*)&g_fopAc_Method,
(void*)0x018A0000, (void*)&l_daTagMyna2_Method,
(void*)0x00044000, (void*)0x000E0000,
extern actor_process_profile_definition g_profile_TAG_MYNA2 = {
-3, // mLayerID
7, // mListID
-3, // mListPrio
PROC_TAG_MYNA2, // mProcName
&g_fpcLf_Method.mBase, // mSubMtd
sizeof(daTagMyna2_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // mSubMtd
0x0000018A, // mPriority
&l_daTagMyna2_Method, // mSubMtd
0x00044000, // mStatus
0, // mActorType
0xE // mCullType
};