mirror of https://github.com/zeldaret/tp.git
Work on d_a_tag_wljump (#351)
This commit is contained in:
parent
9ba4267e6f
commit
22059e57b7
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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; }
|
||||
|
|
|
|||
|
|
@ -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; }
|
||||
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue