Work on d_a_tag_wljump (#351)

This commit is contained in:
hatal175 2023-06-23 17:34:19 +03:00 committed by GitHub
parent 9ba4267e6f
commit 22059e57b7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 281 additions and 284 deletions

View File

@ -21,8 +21,8 @@ Total | 35.320165% | 1420108 | 4020672
Section | Percentage | Decompiled (bytes) | Total (bytes)
---|---|---|---
main.dol | 35.320165% | 1420108 | 4020672
RELs | 33.653313% | 3870240 | 11500324
Total | 34.085106% | 5290348 | 15520996
RELs | 33.657973% | 3870776 | 11500324
Total | 34.088560% | 5290884 | 15520996
## RELs
@ -773,7 +773,7 @@ d_a_tag_theB_hint | 100.000000% | 1136 | 1136
d_a_tag_wara_howl | 100.000000% | 1420 | 1420
d_a_tag_watchge | 100.000000% | 1240 | 1240
d_a_tag_waterfall | 46.361502% | 1580 | 3408
d_a_tag_wljump | 30.777538% | 1140 | 3704
d_a_tag_wljump | 45.248380% | 1676 | 3704
d_a_tag_yami | 42.650334% | 1532 | 3592
d_a_talk | 45.434783% | 836 | 1840
d_a_tbox | 30.165503% | 9332 | 30936
@ -785,4 +785,4 @@ d_a_vrbox2 | 34.977578% | 2184 | 6244
d_a_warp_bug | 54.940711% | 1112 | 2024
d_a_ykgr | 44.400631% | 2252 | 5072
f_pc_profile_lst | 100.000000% | 28156 | 28156
Total | 33.653313% | 3870240 | 11500324
Total | 33.657973% | 3870776 | 11500324

View File

@ -1,27 +0,0 @@
lbl_80D65004:
/* 80D65004 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80D65008 7C 08 02 A6 */ mflr r0
/* 80D6500C 90 01 00 14 */ stw r0, 0x14(r1)
/* 80D65010 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80D65014 93 C1 00 08 */ stw r30, 8(r1)
/* 80D65018 7C 7E 1B 79 */ or. r30, r3, r3
/* 80D6501C 7C 9F 23 78 */ mr r31, r4
/* 80D65020 41 82 00 2C */ beq lbl_80D6504C
/* 80D65024 38 7E 05 78 */ addi r3, r30, 0x578
/* 80D65028 38 80 FF FF */ li r4, -1
/* 80D6502C 4B 4E 4F 1D */ bl __dt__10dMsgFlow_cFv
/* 80D65030 7F C3 F3 78 */ mr r3, r30
/* 80D65034 38 80 00 00 */ li r4, 0
/* 80D65038 4B 2B 3C 55 */ bl __dt__10fopAc_ac_cFv
/* 80D6503C 7F E0 07 35 */ extsh. r0, r31
/* 80D65040 40 81 00 0C */ ble lbl_80D6504C
/* 80D65044 7F C3 F3 78 */ mr r3, r30
/* 80D65048 4B 56 9C F5 */ bl __dl__FPv
lbl_80D6504C:
/* 80D6504C 7F C3 F3 78 */ mr r3, r30
/* 80D65050 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 80D65054 83 C1 00 08 */ lwz r30, 8(r1)
/* 80D65058 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80D6505C 7C 08 03 A6 */ mtlr r0
/* 80D65060 38 21 00 10 */ addi r1, r1, 0x10
/* 80D65064 4E 80 00 20 */ blr

View File

@ -1,84 +0,0 @@
lbl_80D64EB8:
/* 80D64EB8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80D64EBC 7C 08 02 A6 */ mflr r0
/* 80D64EC0 90 01 00 14 */ stw r0, 0x14(r1)
/* 80D64EC4 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80D64EC8 93 C1 00 08 */ stw r30, 8(r1)
/* 80D64ECC 7C 7F 1B 78 */ mr r31, r3
/* 80D64ED0 80 03 04 A0 */ lwz r0, 0x4a0(r3)
/* 80D64ED4 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c
/* 80D64ED8 40 82 00 28 */ bne lbl_80D64F00
/* 80D64EDC 7F E0 FB 79 */ or. r0, r31, r31
/* 80D64EE0 41 82 00 14 */ beq lbl_80D64EF4
/* 80D64EE4 7C 1E 03 78 */ mr r30, r0
/* 80D64EE8 4B 2B 3C 7D */ bl __ct__10fopAc_ac_cFv
/* 80D64EEC 38 7E 05 78 */ addi r3, r30, 0x578
/* 80D64EF0 4B 4E 50 11 */ bl __ct__10dMsgFlow_cFv
lbl_80D64EF4:
/* 80D64EF4 80 1F 04 A0 */ lwz r0, 0x4a0(r31)
/* 80D64EF8 60 00 00 08 */ ori r0, r0, 8
/* 80D64EFC 90 1F 04 A0 */ stw r0, 0x4a0(r31)
lbl_80D64F00:
/* 80D64F00 80 1F 00 B0 */ lwz r0, 0xb0(r31)
/* 80D64F04 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80D64F08 98 1F 05 71 */ stb r0, 0x571(r31)
/* 80D64F0C 80 1F 00 B0 */ lwz r0, 0xb0(r31)
/* 80D64F10 54 03 06 3E */ clrlwi r3, r0, 0x18
/* 80D64F14 2C 03 00 FF */ cmpwi r3, 0xff
/* 80D64F18 40 82 00 0C */ bne lbl_80D64F24
/* 80D64F1C 38 60 00 05 */ li r3, 5
/* 80D64F20 48 00 00 AC */ b lbl_80D64FCC
lbl_80D64F24:
/* 80D64F24 88 1F 04 E2 */ lbz r0, 0x4e2(r31)
/* 80D64F28 7C 04 07 74 */ extsb r4, r0
/* 80D64F2C 4B 2E C8 C1 */ bl dPath_GetRoomPath__Fii
/* 80D64F30 90 7F 05 C4 */ stw r3, 0x5c4(r31)
/* 80D64F34 80 7F 05 C4 */ lwz r3, 0x5c4(r31)
/* 80D64F38 28 03 00 00 */ cmplwi r3, 0
/* 80D64F3C 41 82 00 10 */ beq lbl_80D64F4C
/* 80D64F40 A0 03 00 00 */ lhz r0, 0(r3)
/* 80D64F44 28 00 00 02 */ cmplwi r0, 2
/* 80D64F48 40 80 00 0C */ bge lbl_80D64F54
lbl_80D64F4C:
/* 80D64F4C 38 60 00 05 */ li r3, 5
/* 80D64F50 48 00 00 7C */ b lbl_80D64FCC
lbl_80D64F54:
/* 80D64F54 38 00 00 32 */ li r0, 0x32
/* 80D64F58 98 1F 05 44 */ stb r0, 0x544(r31)
/* 80D64F5C 98 1F 05 4B */ stb r0, 0x54b(r31)
/* 80D64F60 38 60 00 00 */ li r3, 0
/* 80D64F64 B0 7F 04 E8 */ sth r3, 0x4e8(r31)
/* 80D64F68 38 00 FF FF */ li r0, -1
/* 80D64F6C 98 1F 05 68 */ stb r0, 0x568(r31)
/* 80D64F70 80 1F 00 B0 */ lwz r0, 0xb0(r31)
/* 80D64F74 54 00 87 3E */ rlwinm r0, r0, 0x10, 0x1c, 0x1f
/* 80D64F78 98 1F 05 6C */ stb r0, 0x56c(r31)
/* 80D64F7C 88 1F 05 6C */ lbz r0, 0x56c(r31)
/* 80D64F80 28 00 00 01 */ cmplwi r0, 1
/* 80D64F84 41 82 00 08 */ beq lbl_80D64F8C
/* 80D64F88 98 7F 05 6C */ stb r3, 0x56c(r31)
lbl_80D64F8C:
/* 80D64F8C 88 1F 05 6C */ lbz r0, 0x56c(r31)
/* 80D64F90 28 00 00 00 */ cmplwi r0, 0
/* 80D64F94 40 82 00 34 */ bne lbl_80D64FC8
/* 80D64F98 88 9F 05 71 */ lbz r4, 0x571(r31)
/* 80D64F9C 28 04 00 FF */ cmplwi r4, 0xff
/* 80D64FA0 41 82 00 28 */ beq lbl_80D64FC8
/* 80D64FA4 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
/* 80D64FA8 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */
/* 80D64FAC 88 1F 04 BA */ lbz r0, 0x4ba(r31)
/* 80D64FB0 7C 05 07 74 */ extsb r5, r0
/* 80D64FB4 4B 2D 03 AD */ bl isSwitch__10dSv_info_cCFii
/* 80D64FB8 2C 03 00 00 */ cmpwi r3, 0
/* 80D64FBC 40 82 00 0C */ bne lbl_80D64FC8
/* 80D64FC0 38 00 00 01 */ li r0, 1
/* 80D64FC4 98 1F 05 73 */ stb r0, 0x573(r31)
lbl_80D64FC8:
/* 80D64FC8 38 60 00 04 */ li r3, 4
lbl_80D64FCC:
/* 80D64FCC 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 80D64FD0 83 C1 00 08 */ lwz r30, 8(r1)
/* 80D64FD4 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80D64FD8 7C 08 03 A6 */ mtlr r0
/* 80D64FDC 38 21 00 10 */ addi r1, r1, 0x10
/* 80D64FE0 4E 80 00 20 */ blr

View File

@ -1,9 +0,0 @@
lbl_80D64FE4:
/* 80D64FE4 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80D64FE8 7C 08 02 A6 */ mflr r0
/* 80D64FEC 90 01 00 14 */ stw r0, 0x14(r1)
/* 80D64FF0 4B FF FE C9 */ bl create__13daTagWljump_cFv
/* 80D64FF4 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80D64FF8 7C 08 03 A6 */ mtlr r0
/* 80D64FFC 38 21 00 10 */ addi r1, r1, 0x10
/* 80D65000 4E 80 00 20 */ blr

View File

@ -1,11 +0,0 @@
lbl_80D65068:
/* 80D65068 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80D6506C 7C 08 02 A6 */ mflr r0
/* 80D65070 90 01 00 14 */ stw r0, 0x14(r1)
/* 80D65074 38 80 FF FF */ li r4, -1
/* 80D65078 4B FF FF 8D */ bl __dt__13daTagWljump_cFv
/* 80D6507C 38 60 00 01 */ li r3, 1
/* 80D65080 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80D65084 7C 08 03 A6 */ mtlr r0
/* 80D65088 38 21 00 10 */ addi r1, r1, 0x10
/* 80D6508C 4E 80 00 20 */ blr

View File

@ -1,9 +0,0 @@
lbl_80D658A4:
/* 80D658A4 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80D658A8 7C 08 02 A6 */ mflr r0
/* 80D658AC 90 01 00 14 */ stw r0, 0x14(r1)
/* 80D658B0 4B FF FF ED */ bl draw__13daTagWljump_cFv
/* 80D658B4 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80D658B8 7C 08 03 A6 */ mtlr r0
/* 80D658BC 38 21 00 10 */ addi r1, r1, 0x10
/* 80D658C0 4E 80 00 20 */ blr

View File

@ -1,9 +0,0 @@
lbl_80D6587C:
/* 80D6587C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80D65880 7C 08 02 A6 */ mflr r0
/* 80D65884 90 01 00 14 */ stw r0, 0x14(r1)
/* 80D65888 4B FF F8 09 */ bl execute__13daTagWljump_cFv
/* 80D6588C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80D65890 7C 08 03 A6 */ mtlr r0
/* 80D65894 38 21 00 10 */ addi r1, r1, 0x10
/* 80D65898 4E 80 00 20 */ blr

View File

@ -15,6 +15,6 @@ def apply(config, args):
]
if args.show_source:
config['makeflags'].append('DEBUG=1')
config['source_directories'] = ['src', 'libs', 'include']
config['source_directories'] = ['src', 'libs', 'include', 'rel']
config['arch'] = 'ppc'
config['objdump_executable'] = f"{os.environ['DEVKITPPC']}/bin/powerpc-eabi-objdump"

View File

@ -6243,6 +6243,9 @@ public:
class mDoExt_morf_c;
inline BOOL dComIfGs_isTransformLV(int i_no);
inline BOOL i_dComIfGs_isEventBit(const u16);
typedef int (daMidna_c::*daMidna_func)();
class daMidna_c : public fopAc_ac_c {
public:
@ -6257,6 +6260,7 @@ public:
FLG0_NPC_FAR = 0x40000,
FLG0_NO_INPUT = 0x4000,
FLG0_NO_DRAW = 0x2000,
FLG0_UNK_800 = 0x800,
FLG0_UNK_200 = 0x200,
};
@ -6272,6 +6276,9 @@ public:
u32 checkForceNormalColor() const;
u32 checkForceTiredColor() const;
bool checkMidnaTired();
bool i_checkMidnaTired() {
return dComIfGs_isTransformLV(3) && !i_dComIfGs_isEventBit(0x1e08);
}
void onNoServiceWait();
/* 804BC3E0 */ void modelCallBack(int);
/* 804BC5C4 */ void changeUpperBck();
@ -6330,6 +6337,7 @@ public:
BOOL checkNpcFar() { return checkStateFlg0(FLG0_NPC_FAR); }
BOOL checkNoDraw() const { return checkStateFlg0(FLG0_NO_DRAW); }
BOOL checkNoInput() const { return checkStateFlg0(FLG0_NO_INPUT); }
BOOL checkWolfNoPos() const { return checkStateFlg0(FLG0_UNK_800); }
int checkMetamorphoseEnable() { return (this->*mpFunc)(); }
int checkShadowModelDrawDemoForce() const { return checkStateFlg1(FLG1_SHADOW_MODEL_DRAW_DEMO_FORCE); }
@ -6362,12 +6370,8 @@ public:
return 0;
}
int checkShadowModeTalkWait() const {
if (mDemoType != 2 && mDemoType != 1) {
return 0;
}
return 1;
bool checkShadowModeTalkWait() const {
return (field_0x84e == 2 || field_0x84e == 1) ;
}
void setShadowReturn() { mDemoType = 4; }

View File

@ -176,6 +176,7 @@ private:
class daMidna_c;
class daPy_py_c;
inline daPy_py_c* dComIfGp_getLinkPlayer();
inline BOOL i_dComIfGs_isEventBit(const u16);
class daPy_py_c : public fopAc_ac_c {
public:
@ -788,6 +789,7 @@ public:
inline static BOOL i_checkNowWolf() { return dComIfGp_getLinkPlayer()->i_checkWolf(); }
inline bool checkZoraWearFlg() const;
inline bool checkMagicArmorWearFlg() const;
inline static BOOL i_checkFirstMidnaDemo() { return i_dComIfGs_isEventBit(0xc10); }
static daMidna_c* getMidnaActor() { return m_midnaActor; }

View File

@ -215,6 +215,9 @@ public:
int GetActionCount() { return mActionCount; }
int GetLockonCount() { return mLockonCount; }
bool Lockon() { return LockonTruth() || chkFlag(0x20000000); } // only matches with -O2?
int ZHintRequest(fopAc_ac_c *param_1, int param_2) {
return mZHintTarget.request(param_1, param_2);
}
static type_tbl_entry loc_type_tbl[3];
static type_tbl_entry act_type_tbl[5];

View File

@ -2,5 +2,36 @@
#define D_A_TAG_WLJUMP_H
#include "dolphin/types.h"
#include "f_op/f_op_actor.h"
#include "d/msg/d_msg_flow.h"
#include "d/com/d_com_inf_game.h"
struct dPath;
struct daTagWljump_c : fopAc_ac_c {
/* 80D64EB8 */ int create();
/* 80D65004 */ ~daTagWljump_c();
/* 80D65090 */ int execute();
/* 80D6589C */ int draw();
int dComIfGp_att_ZHintRequest(fopAc_ac_c *param_1, int param_2) {
return dComIfGp_getAttention().ZHintRequest(param_1, param_2);
}
/* 0x568 */ s8 field_0x568;
/* 0x568 */ s8 field_0x569;
/* 0x568 */ u8 field_0x56a;
/* 0x568 */ u8 field_0x56b;
/* 0x56C */ u8 field_0x56c[4];
/* 0x570 */ u8 field_0x570;
/* 0x571 */ u8 field_0x571;
/* 0x572 */ u8 field_0x572;
/* 0x573 */ u8 field_0x573;
/* 0x574 */ s16 field_0x574;
/* 0x574 */ u16 field_0x576;
/* 0x578 */ dMsgFlow_c mMsgFlow;
/* 0x5C4 */ dPath* field_0x5c4;
/* 0x5C8 */ f32 field_0x5c8;
};
#endif /* D_A_TAG_WLJUMP_H */

View File

@ -6,67 +6,16 @@
#include "rel/d/a/tag/d_a_tag_wljump/d_a_tag_wljump.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
#include "d/d_path.h"
#include "d/a/d_a_alink.h"
#include "d/d_procname.h"
#include "JSystem/JKernel/JKRHeap.h"
//
// Types:
//
struct fopAc_ac_c {
/* 80018B64 */ fopAc_ac_c();
/* 80018C8C */ ~fopAc_ac_c();
};
struct daTagWljump_c {
/* 80D64EB8 */ void create();
/* 80D65004 */ ~daTagWljump_c();
/* 80D65090 */ void execute();
/* 80D6589C */ bool draw();
};
struct daPy_py_c {
static u8 m_midnaActor[4];
};
struct dSv_player_status_b_c {
/* 80032BEC */ void isTransformLV(int) const;
};
struct dSv_info_c {
/* 80035200 */ void onSwitch(int, int);
/* 80035360 */ void isSwitch(int, int) const;
};
struct dSv_event_c {
/* 800349BC */ void isEventBit(u16) const;
};
struct dMsgFlow_c {
/* 80249F00 */ dMsgFlow_c();
/* 80249F48 */ ~dMsgFlow_c();
/* 80249F90 */ void init(fopAc_ac_c*, int, int, fopAc_ac_c**);
/* 8024A2D8 */ void doFlow(fopAc_ac_c*, fopAc_ac_c**, int);
};
struct dEvt_control_c {
/* 80042468 */ void reset();
};
struct dAttHint_c {
/* 800738FC */ void request(fopAc_ac_c*, 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:
//
@ -79,7 +28,6 @@ extern "C" void execute__13daTagWljump_cFv();
extern "C" static void daTagWljump_Execute__FP13daTagWljump_c();
extern "C" bool draw__13daTagWljump_cFv();
extern "C" static void daTagWljump_Draw__FP13daTagWljump_c();
extern "C" extern void* g_profile_Tag_Wljump[12];
//
// External References:
@ -100,13 +48,8 @@ extern "C" void init__10dMsgFlow_cFP10fopAc_ac_ciiPP10fopAc_ac_c();
extern "C" void doFlow__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_ci();
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void __dl__FPv();
extern "C" void PSVECSquareDistance();
extern "C" void _savegpr_26();
extern "C" void _restgpr_26();
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" u8 m_midnaActor__9daPy_py_c[4];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
@ -115,47 +58,215 @@ extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
//
/* 80D64EB8-80D64FE4 000078 012C+00 1/1 0/0 0/0 .text create__13daTagWljump_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagWljump_c::create() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_wljump/d_a_tag_wljump/create__13daTagWljump_cFv.s"
int daTagWljump_c::create() {
if (!fopAcM_CheckCondition(this, 8)) {
new (this) daTagWljump_c();
fopAcM_OnCondition(this, 8);
}
u32 param = (fopAcM_GetParam(this) >> 8) & 0xff;
field_0x571 = (u8)param;
s32 uVar2 = fopAcM_GetParam(this);
if ((uVar2 & 0xff) == 0xff) {
return 5;
}
field_0x5c4 = dPath_GetRoomPath(uVar2 & 0xff, fopAcM_GetRoomNo(this));
if (field_0x5c4 == NULL || field_0x5c4->m_num < 2) {
return 5;
}
mAttentionInfo.field_0x0[0] = 0x32;
mAttentionInfo.field_0x4[3] = 0x32;
shape_angle.z = 0;
field_0x568 = -1;
field_0x56c[0] = (fopAcM_GetParam(this) >> 16) & 0xf;
if (field_0x56c[0] != 1) {
field_0x56c[0] = 0;
}
if (field_0x56c[0] == 0 && field_0x571 != 0xff) {
if (dComIfGs_isSwitch(field_0x571, fopAcM_GetHomeRoomNo(this)) == 0) {
field_0x573 = 1;
}
}
return 4;
}
#pragma pop
/* 80D64FE4-80D65004 0001A4 0020+00 1/0 0/0 0/0 .text daTagWljump_Create__FP10fopAc_ac_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTagWljump_Create(fopAc_ac_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_wljump/d_a_tag_wljump/daTagWljump_Create__FP10fopAc_ac_c.s"
static int daTagWljump_Create(fopAc_ac_c* param_0) {
return ((daTagWljump_c*)param_0)->create();
}
#pragma pop
/* 80D65004-80D65068 0001C4 0064+00 1/1 0/0 0/0 .text __dt__13daTagWljump_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm daTagWljump_c::~daTagWljump_c() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_wljump/d_a_tag_wljump/__dt__13daTagWljump_cFv.s"
daTagWljump_c::~daTagWljump_c() {
}
#pragma pop
/* 80D65068-80D65090 000228 0028+00 1/0 0/0 0/0 .text daTagWljump_Delete__FP13daTagWljump_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTagWljump_Delete(daTagWljump_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_wljump/d_a_tag_wljump/daTagWljump_Delete__FP13daTagWljump_c.s"
static int daTagWljump_Delete(daTagWljump_c* param_0) {
param_0->~daTagWljump_c();
return 1;
}
#pragma pop
/* ############################################################################################## */
/* 80D65090-80D6587C 000250 07EC+00 1/1 0/0 0/0 .text execute__13daTagWljump_cFv */
// reg swap
#ifdef NONMATCHING
int daTagWljump_c::execute() {
mAttentionInfo.mFlags = 0;
if (field_0x56c[1]) {
field_0x56c[1]--;
}
daPy_py_c* linkPlayer = daPy_getLinkPlayerActorClass();
daMidna_c* midnaActor = daPy_py_c::getMidnaActor();
if (midnaActor == NULL) {
return 1;
}
if (mEvtInfo.checkCommandTalk()) {
s32 bVar2 = 1;
if (!midnaActor->checkShadowModeTalkWait()) {
if (shape_angle.x != 0 &&
(field_0x571 == 0xff ||
!i_fopAcM_isSwitch(this, field_0x571)))
{
if (field_0x56c[3] == 0) {
mMsgFlow.init(this, shape_angle.x & 0xffff, 0, NULL);
field_0x56c[3] = 1;
mDoAud_seStart(0x10, 0, 0, 0);
} else {
;
if (mMsgFlow.doFlow(this, NULL, 0)) {
mDoAud_seStart(0x11, 0, 0, 0);
shape_angle.x = 0;
}
}
} else {
field_0x568 = field_0x570;
if (midnaActor->current.pos.abs(mEyePos) < 5.0f) {
bVar2 = 0;
}
}
}
if (bVar2) {
return 1;
}
field_0x56c[3] = 0;
i_dComIfGp_event_reset();
field_0x56c[0] = 0;
field_0x572 = 1;
if (field_0x571 != 0xff) {
i_fopAcM_onSwitch(this, field_0x571);
}
} else if (!i_dComIfGp_getEvent().i_isOrderOK()) {
field_0x572 = 0;
} else {
if (!midnaActor->checkWolfNoPos()) {
field_0x574++;
if (field_0x574 >= 5) {
field_0x572 = 0;
}
} else {
field_0x574 = 0;
}
}
if (!linkPlayer->i_checkNowWolf() ||
!daPy_py_c::i_checkFirstMidnaDemo() ||
midnaActor->i_checkMidnaTired()) {
return 1;
}
if (field_0x571 != 0xff && i_fopAcM_isSwitch(this, field_0x571)) {
field_0x56c[0] = 0;
if (field_0x573) {
field_0x573 = 0;
field_0x572 = 1;
field_0x574 = 0;
}
}
if (field_0x56c[0] != 0 || field_0x572 != 0 || field_0x571 == 0xff ||
i_fopAcM_isSwitch(this, field_0x571))
{
s32 uVar6;
dStage_dPnt_c* pbVar7 = field_0x5c4->m_points;
if (linkPlayer->checkWolfTagLockJumpLand() == 0) {
if (linkPlayer->checkWolfTagLockJump() == 0) {
for (uVar6 = 0; uVar6 < field_0x5c4->m_num; uVar6++, pbVar7++) {
if (linkPlayer->current.pos.abs2(pbVar7->m_position) < pbVar7->field_0x0 * pbVar7->field_0x0 * 10.0f * 10.0f) {
field_0x56a = uVar6;
if (uVar6 == 0) {
field_0x568 = 1;
} else if (uVar6 == field_0x5c4->m_num - 1) {
field_0x568 = uVar6 - 1;
} else {
field_0x568 = uVar6 + 1;
}
break;
}
}
if (uVar6 == field_0x5c4->m_num) {
field_0x568 = -1;
}
} else if (field_0x56b) {
field_0x56b = 0;
if (field_0x56a < field_0x568) {
field_0x568++;
if (field_0x5c4->m_num == field_0x568) {
field_0x568 = 0xff;
}
} else {
field_0x568--;
}
}
}
if (field_0x568 >= 0) {
dStage_dPnt_c* pPoint = &field_0x5c4->m_points[field_0x568];
mEyePos.set(pPoint->m_position.x, pPoint->m_position.y, pPoint->m_position.z);
mAttentionInfo.mPosition = mEyePos;
mAttentionInfo.mPosition.y += 220.0f;
field_0x5c8 = pPoint->field_0x3 * 10.0f;
if (pPoint->field_0x1 == 1) {
shape_angle.z = 1;
} else {
shape_angle.z = 0;
}
if (field_0x572 == 0) {
if (!g_dComIfG_gameInfo.play.getEvent().runCheck()) {
mEvtInfo.i_onCondition(1);
if (!linkPlayer->checkPlayerFly() &&
linkPlayer->mEvtInfo.chkCondition(1)) {
dComIfGp_att_ZHintRequest(this, 0x1ff);
if (field_0x56c[2] == 0) {
field_0x56c[2] = 1;
if (field_0x56c[1] == 0) {
mDoAud_seStart(0xe, 0, 0, 0);
}
field_0x56c[1] = 0x3c;
}
}
}
field_0x570 = field_0x568;
field_0x568 = -1;
} else {
mAttentionInfo.mFlags |= 0x81;
}
} else {
field_0x572 = 0;
}
} else {
field_0x572 = 0;
field_0x568 = -1;
}
current.pos = mAttentionInfo.mPosition;
if (!mEvtInfo.chkCondition(1)) {
field_0x56c[2] = 0;
}
return 1;
}
#else
/* 80D658CC-80D658D0 000000 0004+00 1/1 0/0 0/0 .rodata @4044 */
SECTION_RODATA static f32 const lit_4044 = 1.0f;
COMPILER_STRIP_GATE(0x80D658CC, &lit_4044);
@ -254,61 +365,56 @@ SECTION_RODATA static u8 const lit_4055[8] = {
COMPILER_STRIP_GATE(0x80D6590C, &lit_4055);
#pragma pop
/* 80D65090-80D6587C 000250 07EC+00 1/1 0/0 0/0 .text execute__13daTagWljump_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagWljump_c::execute() {
asm int daTagWljump_c::execute() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_wljump/d_a_tag_wljump/execute__13daTagWljump_cFv.s"
}
#pragma pop
#endif
/* 80D6587C-80D6589C 000A3C 0020+00 1/0 0/0 0/0 .text daTagWljump_Execute__FP13daTagWljump_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTagWljump_Execute(daTagWljump_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_wljump/d_a_tag_wljump/daTagWljump_Execute__FP13daTagWljump_c.s"
static int daTagWljump_Execute(daTagWljump_c* param_0) {
return param_0->execute();
}
#pragma pop
/* 80D6589C-80D658A4 000A5C 0008+00 1/1 0/0 0/0 .text draw__13daTagWljump_cFv */
bool daTagWljump_c::draw() {
return true;
int daTagWljump_c::draw() {
return 1;
}
/* 80D658A4-80D658C4 000A64 0020+00 1/0 0/0 0/0 .text daTagWljump_Draw__FP13daTagWljump_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTagWljump_Draw(daTagWljump_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_wljump/d_a_tag_wljump/daTagWljump_Draw__FP13daTagWljump_c.s"
static int daTagWljump_Draw(daTagWljump_c* param_0) {
return param_0->draw();
}
#pragma pop
/* ############################################################################################## */
/* 80D65914-80D65934 -00001 0020+00 1/0 0/0 0/0 .data l_daTagWljump_Method */
SECTION_DATA static void* l_daTagWljump_Method[8] = {
(void*)daTagWljump_Create__FP10fopAc_ac_c,
(void*)daTagWljump_Delete__FP13daTagWljump_c,
(void*)daTagWljump_Execute__FP13daTagWljump_c,
(void*)NULL,
(void*)daTagWljump_Draw__FP13daTagWljump_c,
(void*)NULL,
(void*)NULL,
(void*)NULL,
static actor_method_class l_daTagWljump_Method = {
(process_method_func)daTagWljump_Create,
(process_method_func)daTagWljump_Delete,
(process_method_func)daTagWljump_Execute,
NULL,
(process_method_func)daTagWljump_Draw,
};
/* 80D65934-80D65964 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Tag_Wljump */
SECTION_DATA extern void* g_profile_Tag_Wljump[12] = {
(void*)0xFFFFFFFD, (void*)0x0007FFFD,
(void*)0x02C70000, (void*)&g_fpcLf_Method,
(void*)0x000005CC, (void*)NULL,
(void*)NULL, (void*)&g_fopAc_Method,
(void*)0x01040000, (void*)&l_daTagWljump_Method,
(void*)0x00044000, (void*)0x030E0000,
extern actor_process_profile_definition g_profile_Tag_Wljump = {
-3,
7,
-3,
PROC_Tag_Wljump,
&g_fpcLf_Method.mBase,
sizeof(daTagWljump_c),
0,
0,
&g_fopAc_Method.base,
0x0104,
&l_daTagWljump_Method,
0x00044000,
3,
0x0E,
};