mirror of https://github.com/zeldaret/tp.git
Compare commits
6 Commits
61b44b6576
...
669431fa4f
Author | SHA1 | Date |
---|---|---|
![]() |
669431fa4f | |
![]() |
c5584cc6c0 | |
![]() |
295cc46d34 | |
![]() |
7d4ec88f56 | |
![]() |
ea1c649eb1 | |
![]() |
d528862dd0 |
|
@ -91,6 +91,6 @@ __vt__12dBgS_ObjAcch = .data:0x00000134; // type:object size:0x24 scope:global
|
|||
__vt__12J3DFrameCtrl = .data:0x00000158; // type:object size:0xC scope:global
|
||||
__vt__10daFr_HIO_c = .data:0x00000164; // type:object size:0xC scope:global
|
||||
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
|
||||
lbl_72_bss_8 = .bss:0x00000008; // type:object size:0x1 data:byte
|
||||
l_initHIO = .bss:0x00000008; // type:object size:0x1 data:byte
|
||||
@3644 = .bss:0x0000000C; // type:object size:0xC scope:local
|
||||
l_HIO = .bss:0x00000018; // type:object size:0x2C scope:global data:byte
|
||||
|
|
|
@ -27,4 +27,4 @@ lbl_22_data_10 = .data:0x00000010; // type:object size:0x10
|
|||
mode_proc$3725 = .data:0x00000038; // type:object size:0x18 scope:local
|
||||
Mthd_Table__Q210daObjTimer27@unnamed@d_a_obj_timer_cpp@ = .data:0x00000050; // type:object size:0x20 scope:global
|
||||
g_profile_Obj_Timer = .data:0x00000070; // type:object size:0x30 scope:global
|
||||
lbl_22_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte
|
||||
init$1527 = .bss:0x00000000; // type:object size:0x1 data:byte
|
||||
|
|
|
@ -67,6 +67,6 @@ lbl_73_data_134 = .data:0x00000134; // type:object size:0xC
|
|||
@92624 = .data:0x00000140; // type:object size:0xC scope:local
|
||||
__RTTI__10daFr_HIO_c = .data:0x0000014C; // type:object size:0x8 scope:global
|
||||
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
|
||||
lbl_73_bss_8 = .bss:0x00000008; // type:object size:0x1 data:byte
|
||||
l_initHIO = .bss:0x00000008; // type:object size:0x1 data:byte
|
||||
@92050 = .bss:0x0000000C; // type:object size:0xC scope:local
|
||||
l_HIO = .bss:0x00000018; // type:object size:0x2C scope:global data:byte
|
||||
|
|
|
@ -125,5 +125,5 @@ lbl_70_data_2F8 = .data:0x000002F8; // type:object size:0x24
|
|||
@117848 = .data:0x000004E0; // type:object size:0xC scope:local
|
||||
@117849 = .data:0x00000504; // type:object size:0x11 scope:local data:string
|
||||
@117850 = .data:0x0000052C; // type:object size:0xD scope:local data:string
|
||||
lbl_70_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte
|
||||
l_initHIO = .bss:0x00000000; // type:object size:0x1 data:byte
|
||||
l_HIO = .bss:0x00000004; // type:object size:0x2C scope:global data:byte
|
||||
|
|
10
configure.py
10
configure.py
|
@ -1499,7 +1499,7 @@ config.libs = [
|
|||
ActorRel(NonMatching, "d_a_obj_ito"),
|
||||
ActorRel(NonMatching, "d_a_obj_movebox"),
|
||||
ActorRel(NonMatching, "d_a_obj_swpush"),
|
||||
ActorRel(NonMatching, "d_a_obj_timer"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_timer"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_path_line"),
|
||||
ActorRel(NonMatching, "d_a_scene_exit"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_set_bgobj"),
|
||||
|
@ -1655,7 +1655,7 @@ config.libs = [
|
|||
ActorRel(NonMatching, "d_a_e_bi"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_e_bi_leaf"),
|
||||
ActorRel(NonMatching, "d_a_e_bs"),
|
||||
ActorRel(NonMatching, "d_a_e_bu"),
|
||||
ActorRel(Equivalent, "d_a_e_bu"), # weak func order
|
||||
ActorRel(NonMatching, "d_a_e_bug"),
|
||||
ActorRel(Equivalent, "d_a_e_cr"), # weak func order
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_e_cr_egg"),
|
||||
|
@ -1921,7 +1921,7 @@ config.libs = [
|
|||
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_enemy_create"),
|
||||
ActorRel(NonMatching, "d_a_obj_fallobj"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_fan"),
|
||||
ActorRel(NonMatching, "d_a_obj_fchain"),
|
||||
ActorRel(Equivalent, "d_a_obj_fchain"), # weak func order
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_fireWood"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_fireWood2"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_firepillar"),
|
||||
|
@ -2073,7 +2073,7 @@ config.libs = [
|
|||
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_pillar"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_pleaf"),
|
||||
ActorRel(NonMatching, "d_a_obj_poCandle"),
|
||||
ActorRel(NonMatching, "d_a_obj_poFire"),
|
||||
ActorRel(Equivalent, "d_a_obj_poFire"),
|
||||
ActorRel(NonMatching, "d_a_obj_poTbox"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_prop"),
|
||||
ActorRel(NonMatching, "d_a_obj_pumpkin"),
|
||||
|
@ -2229,7 +2229,7 @@ config.libs = [
|
|||
ActorRel(MatchingFor("GZ2E01"), "d_a_tag_wara_howl"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_tag_watchge"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_tag_waterfall"),
|
||||
ActorRel(NonMatching, "d_a_tag_wljump"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_tag_wljump"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_tag_yami", extra_cflags=['-pragma "nosyminline off"']),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_talk"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_tboxSw"),
|
||||
|
|
|
@ -1,6 +1,11 @@
|
|||
#ifndef D_A_E_BU_H
|
||||
#define D_A_E_BU_H
|
||||
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/d_path.h"
|
||||
#include "d/d_bg_s_acch.h"
|
||||
#include "d/d_cc_d.h"
|
||||
#include "d/d_cc_uty.h"
|
||||
|
||||
/**
|
||||
* @ingroup actors-enemies
|
||||
|
@ -10,16 +15,69 @@
|
|||
* @details
|
||||
*
|
||||
*/
|
||||
class e_bu_class : public fopEn_enemy_c {
|
||||
private:
|
||||
/* 0x5ac */ u8 field_0x5ac[0xaa4 - 0x5ac];
|
||||
class e_bu_class {
|
||||
public:
|
||||
/* 0x000 */ fopEn_enemy_c enemy;
|
||||
/* 0x5AC */ request_of_phase_process_class phase;
|
||||
/* 0x5B4 */ u8 prm0;
|
||||
/* 0x5B5 */ u8 prm1;
|
||||
/* 0x5B6 */ u8 type;
|
||||
/* 0x5B7 */ u8 pathNo;
|
||||
/* 0x5B8 */ s8 field_0x5b8;
|
||||
/* 0x5B9 */ s8 now_path_pntNo;
|
||||
/* 0x5BA */ s8 path_step;
|
||||
/* 0x5BC */ dPath* ppd;
|
||||
/* 0x5C0 */ mDoExt_McaMorfSO* modelMorf;
|
||||
/* 0x5C4 */ Z2CreatureEnemy sound;
|
||||
/* 0x668 */ int anm;
|
||||
/* 0x66C */ int anm_frame;
|
||||
/* 0x670 */ s16 lifetime;
|
||||
/* 0x672 */ s16 action;
|
||||
/* 0x674 */ s16 mode;
|
||||
/* 0x678 */ cXyz move_pos;
|
||||
/* 0x684 */ s16 angle_to_player;
|
||||
/* 0x688 */ f32 dist_to_player;
|
||||
/* 0x68C */ f32 pl_search_range;
|
||||
/* 0x690 */ f32 field_0x690;
|
||||
/* 0x694 */ f32 field_0x694;
|
||||
/* 0x698 */ f32 hit_speed;
|
||||
/* 0x69C */ s16 hit_rot;
|
||||
/* 0x69E */ csXyz field_0x69e;
|
||||
/* 0x6A4 */ s8 is_dead;
|
||||
/* 0x6A8 */ f32 field_0x6a8;
|
||||
/* 0x6AC */ s16 timers[4];
|
||||
/* 0x6B4 */ s16 invulnerabilityTimer;
|
||||
/* 0x6B6 */ s16 head_rot_y;
|
||||
/* 0x6B8 */ s16 field_0x6b8;
|
||||
/* 0x6BA */ s16 head_rot_x;
|
||||
/* 0x6BC */ s16 field_0x6bc;
|
||||
/* 0x6BE */ s16 jaw_rot;
|
||||
/* 0x6C0 */ cXyz field_0x6c0;
|
||||
/* 0x6CC */ dBgS_AcchCir acchcir;
|
||||
/* 0x70C */ dBgS_ObjAcch acch;
|
||||
/* 0x8E4 */ dCcD_Stts ccStts;
|
||||
/* 0x920 */ dCcD_Sph ccSph;
|
||||
/* 0xA58 */ dCcU_AtInfo atInfo;
|
||||
/* 0xA7C */ u32 field_0xa7c;
|
||||
/* 0xA80 */ u32 field_0xa80;
|
||||
/* 0xA84 */ u32 mtrl_emitter_id[4];
|
||||
/* 0xA94 */ u8 field_0xA94[0xAA0 - 0xA94];
|
||||
/* 0xAA0 */ u8 HIOInit;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(e_bu_class) == 0xaa4);
|
||||
|
||||
class daE_BU_HIO_c {
|
||||
public:
|
||||
/* 806911AC */ daE_BU_HIO_c();
|
||||
/* 806941D4 */ ~daE_BU_HIO_c();
|
||||
/* 806941D4 */ virtual ~daE_BU_HIO_c() {}
|
||||
|
||||
/* 0x04 */ s8 id;
|
||||
/* 0x08 */ f32 base_size;
|
||||
/* 0x0C */ f32 fly_speed;
|
||||
/* 0x10 */ f32 attack_range;
|
||||
/* 0x14 */ f32 attack_speed;
|
||||
/* 0x18 */ f32 dash_speed;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -1,29 +1,36 @@
|
|||
#ifndef D_A_E_ZH_H
|
||||
#define D_A_E_ZH_H
|
||||
|
||||
#include "d/d_bg_s_acch.h"
|
||||
#include "d/d_cc_d.h"
|
||||
#include "d/d_cc_uty.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
|
||||
/**
|
||||
* @ingroup actors-enemies
|
||||
* @class daE_ZH_c
|
||||
* @brief Zant Head
|
||||
* @brief Ball Master
|
||||
*
|
||||
* @details
|
||||
*
|
||||
*/
|
||||
|
||||
class daObjCarry_c;
|
||||
|
||||
class daE_ZH_c : public fopEn_enemy_c {
|
||||
/* 8082907C */ void draw();
|
||||
public:
|
||||
/* 8082907C */ int draw();
|
||||
/* 808293A8 */ void setBck(int, u8, f32, f32);
|
||||
/* 80829454 */ void setActionMode(int, int);
|
||||
/* 80829570 */ void startDemoCheck();
|
||||
/* 80829570 */ bool startDemoCheck();
|
||||
/* 80829658 */ void mBallBGCheck();
|
||||
/* 808298BC */ void mGateOpen();
|
||||
/* 808299F8 */ void mColorSet(bool, f32, f32);
|
||||
/* 80829AD8 */ void mReturnLineMove();
|
||||
/* 80829E44 */ void mBallBgLineCheck();
|
||||
/* 8082A01C */ void mSearchMove(u8);
|
||||
/* 808299F8 */ bool mColorSet(bool, f32, f32);
|
||||
/* 80829AD8 */ bool mReturnLineMove();
|
||||
/* 80829E44 */ bool mBallBgLineCheck();
|
||||
/* 8082A01C */ bool mSearchMove(u8);
|
||||
/* 8082A390 */ void mStartParticleSet();
|
||||
/* 8082A4C8 */ void mCutTypeCheck();
|
||||
/* 8082A4C8 */ bool mCutTypeCheck();
|
||||
/* 8082A534 */ void damage_check();
|
||||
/* 8082A88C */ void executeStartDemo();
|
||||
/* 8082ABDC */ void executeWait();
|
||||
|
@ -42,22 +49,83 @@ class daE_ZH_c : public fopEn_enemy_c {
|
|||
/* 8082DB84 */ void action();
|
||||
/* 8082DE18 */ void mtx_set();
|
||||
/* 8082DF44 */ void cc_set();
|
||||
/* 8082E2FC */ void execute();
|
||||
/* 8082E3E8 */ void _delete();
|
||||
/* 8082E4E4 */ void CreateHeap();
|
||||
/* 8082E730 */ void create();
|
||||
/* 8082ECEC */ daE_ZH_c();
|
||||
|
||||
private:
|
||||
/* 0x5ac */ u8 field_0x5ac[0xe08 - 0x5ac];
|
||||
/* 8082E2FC */ int execute();
|
||||
/* 8082E3E8 */ int _delete();
|
||||
/* 8082E4E4 */ int CreateHeap();
|
||||
/* 8082E730 */ cPhs__Step create();
|
||||
/* 8082ECEC */ daE_ZH_c() {}
|
||||
|
||||
/* 0x5AC */ request_of_phase_process_class mPhase;
|
||||
/* 0x5B4 */ mDoExt_McaMorfSO* mpModelMorf;
|
||||
/* 0x5B8 */ J3DModel* mEntranceModel;
|
||||
/* 0x5BC */ mDoExt_btkAnm* mpBtkAnm;
|
||||
/* 0x5C0 */ Z2CreatureEnemy mSound;
|
||||
/* 0x664 */ daObjCarry_c* mS_Ball;
|
||||
/* 0x668 */ cXyz field_0x668;
|
||||
/* 0x674 */ u8 field_0x674[0x680 - 0x674];
|
||||
/* 0x680 */ cXyz field_0x680;
|
||||
/* 0x68C */ cXyz field_0x68c;
|
||||
/* 0x698 */ cXyz mRetrunStartLine;
|
||||
/* 0x6A4 */ cXyz mRetrunEndLine;
|
||||
/* 0x6B0 */ cXyz mBallHosei;
|
||||
/* 0x6BC */ cXyz field_0x6bc;
|
||||
/* 0x6C8 */ cXyz field_0x6c8[3];
|
||||
/* 0x6EC */ int field_0x6ec[3];
|
||||
/* 0x6F8 */ cXyz field_0x6f8[8];
|
||||
/* 0x758 */ u8 field_0x758[8];
|
||||
/* 0x760 */ f32 field_0x760;
|
||||
/* 0x764 */ f32 field_0x764[3];
|
||||
/* 0x770 */ f32 pmRoofPos;
|
||||
/* 0x774 */ f32 field_0x774;
|
||||
/* 0x778 */ f32 field_0x778;
|
||||
/* 0x77C */ f32 field_0x77c;
|
||||
/* 0x780 */ int mActionMode;
|
||||
/* 0x784 */ int mMoveMode;
|
||||
/* 0x788 */ u32 mShadowKey;
|
||||
/* 0x78C */ int field_0x78c;
|
||||
/* 0x790 */ int mAnm;
|
||||
/* 0x794 */ int field_0x794[3];
|
||||
/* 0x7A0 */ int field_0x7a0;
|
||||
/* 0x7A4 */ int field_0x7a4;
|
||||
/* 0x7A8 */ u8 field_0x7a8;
|
||||
/* 0x7A9 */ u8 bitSw;
|
||||
/* 0x7AA */ u8 bitSwEnd;
|
||||
/* 0x7AB */ u8 arg0;
|
||||
/* 0x7AC */ u8 field_0x7ac;
|
||||
/* 0x7AD */ u8 field_0x7ad;
|
||||
/* 0x7AE */ u8 field_0x7ae;
|
||||
/* 0x7AF */ u8 field_0x7af;
|
||||
/* 0x7B0 */ s16 mRollAngle;
|
||||
/* 0x7B2 */ s16 field_0x7b2;
|
||||
/* 0x7B4 */ dBgS_AcchCir mAcchCir;
|
||||
/* 0x7F4 */ dBgS_ObjAcch mBgc;
|
||||
/* 0x9CC */ dCcD_Stts mStts;
|
||||
/* 0xA08 */ dCcD_Sph field_0xa08;
|
||||
/* 0xB40 */ dCcD_Cyl field_0xb40;
|
||||
/* 0xC7C */ dCcD_Cyl field_0xc7c;
|
||||
/* 0xDB8 */ dCcU_AtInfo mAtInfo;
|
||||
/* 0xDDC */ u32 field_0xddc[3];
|
||||
/* 0xDE8 */ u32 field_0xde8;
|
||||
/* 0xDEC */ cXyz mDemoCamEye;
|
||||
/* 0xDF8 */ cXyz mDemoCamCenter;
|
||||
/* 0xE04 */ u8 field_0xe04;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daE_ZH_c) == 0xe08);
|
||||
|
||||
class daE_ZH_HIO_c {
|
||||
class daE_ZH_HIO_c: public JORReflexible {
|
||||
public:
|
||||
/* 8082902C */ daE_ZH_HIO_c();
|
||||
/* 8082F160 */ ~daE_ZH_HIO_c();
|
||||
/* 8082F160 */ virtual ~daE_ZH_HIO_c() {}
|
||||
|
||||
// ボールマスター (Ball Master)
|
||||
/* 0x04 */ s8 field_0x4;
|
||||
/* 0x08 */ f32 model_size; // モデルサイズ (Model Size)
|
||||
/* 0x0C */ f32 ascent_rate; // 上昇速度(落下後)(Rate of ascent (after falling))
|
||||
/* 0x10 */ f32 wandering_area; // うろうろ範囲 (Wandering Area)
|
||||
/* 0x14 */ s16 wait_time; // 玉取られ後移動開始待ち時間 (Waiting time after the stone is taken and movement begins)
|
||||
/* 0x16 */ s16 piyori_time; // ピヨリ時間 (Piyori Time)
|
||||
/* 0x18 */ u8 dungeon_bit_check; // ダンジョンビットチェックON/OFF (Dungeon Bit Check ON/OFF)
|
||||
};
|
||||
|
||||
|
||||
#endif /* D_A_E_ZH_H */
|
||||
|
|
|
@ -16,12 +16,11 @@
|
|||
* @details
|
||||
*
|
||||
*/
|
||||
class fr_class : public fopAc_ac_c {
|
||||
class fr_class : public fopEn_enemy_c {
|
||||
public:
|
||||
/* 0x568 */ u8 field_0x568[0x5ac - 0x568];
|
||||
/* 0x5AC */ request_of_phase_process_class mPhase;
|
||||
/* 0x5B4 */ u8 field_0x5b4;
|
||||
/* 0x5B5 */ u8 field_0x5b5[0x5c4 - 0x5b5];
|
||||
/* 0x5B5 */ cXyz field_0x5b8;
|
||||
/* 0x5C4 */ mDoExt_McaMorf* mMorf;
|
||||
/* 0x5C8 */ mDoExt_btkAnm* mBtkAnm;
|
||||
/* 0x5CC */ u8 field_0x5cc;
|
||||
|
@ -77,6 +76,7 @@ public:
|
|||
/* 0x20 */ f32 field_0x20;
|
||||
/* 0x24 */ f32 field_0x24;
|
||||
/* 0x28 */ f32 field_0x28;
|
||||
/* 0x2C */ f32 field_0x2c;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -277,6 +277,10 @@ public:
|
|||
void offDraw() { mDraw = 1; }
|
||||
void onDraw() { mDraw = 0; }
|
||||
bool isDraw() { return mDraw == false; }
|
||||
void onCarryHookOK() { mCarryHookOK = 1; }
|
||||
void offCarryHookOK() { mCarryHookOK = 0; }
|
||||
BOOL checkRecover() { return mRecover; }
|
||||
void reset() { mReset = 1; }
|
||||
|
||||
void setPower(fopAc_ac_c* cannon_actor, f32 my_0xde0, f32 my_0xde4, s16 my_0xde8) {
|
||||
mpCannonActor = cannon_actor;
|
||||
|
|
|
@ -33,10 +33,18 @@ public:
|
|||
/* 80CB242C */ void Delete();
|
||||
/* 80CB2610 */ ~daPoCandle_c();
|
||||
|
||||
/* 80CB3E3C */ void getFirePos(); // implemented in d_a_obj_poFire.cpp
|
||||
/* 80CB3E3C */ cXyz getFirePos(); // implemented in d_a_obj_poFire.cpp
|
||||
u8 getIDNum() {return mIDNum;}
|
||||
void setFireFlag(u8 flag) { field_0x5D2 = flag; }
|
||||
|
||||
private:
|
||||
/* 0x568 */ u8 field_0x568[0x614 - 0x568];
|
||||
/* 0x568 */ u8 field_0x568[0x5C4 - 0x568];
|
||||
/* 0x5C4 */ cXyz mFirePos;
|
||||
/* 0x5D0 */ u8 field_0x5D0[0x5D2 - 0x5D0];
|
||||
/* 0x5D2 */ u8 field_0x5D2;
|
||||
/* 0x5D3 */ u8 field_0x5D3[0x5D5 - 0x5D3];
|
||||
/* 0x5D5 */ u8 mIDNum;
|
||||
/* 0x5DB */ u8 field_0x5DB[0x614 - 0x5D6];
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daPoCandle_c) == 0x614);
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
#ifndef D_A_OBJ_POFIRE_H
|
||||
#define D_A_OBJ_POFIRE_H
|
||||
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/actor/d_a_obj_poCandle.h"
|
||||
#include "d/actor/d_a_player.h"
|
||||
#include "d/actor/d_a_tag_poFire.h"
|
||||
#include "d/d_event_lib.h"
|
||||
|
||||
|
||||
/**
|
||||
* @ingroup actors-objects
|
||||
|
@ -12,15 +15,32 @@
|
|||
* @details
|
||||
*
|
||||
*/
|
||||
class daPoFire_c : public fopAc_ac_c {
|
||||
class daPoFire_c : public fopAc_ac_c,
|
||||
public request_of_phase_process_class,
|
||||
public dEvLib_callback_c {
|
||||
public:
|
||||
typedef void (daPoFire_c::*modeProc)();
|
||||
daPoFire_c() : dEvLib_callback_c(this) {}
|
||||
|
||||
enum Mode {
|
||||
MODE_INIT_MOVE = 0,
|
||||
MODE_WAIT = 1,
|
||||
MODE_WAIT_SET_EFFECT = 2,
|
||||
MODE_MOVE_OUT = 3,
|
||||
MODE_MOVE = 4,
|
||||
MODE_NO_MOVE = 5,
|
||||
MODE_MOVE_WAIT = 6,
|
||||
MODE_ON_FIRE = 7,
|
||||
MODE_FIRE_END = 8,
|
||||
};
|
||||
|
||||
/* 80CB2A0C */ void setBaseMtx();
|
||||
/* 80CB2A74 */ void create();
|
||||
/* 80CB2BB8 */ void Execute();
|
||||
/* 80CB2A74 */ int create();
|
||||
/* 80CB2BB8 */ int Execute();
|
||||
/* 80CB2BFC */ void procMain();
|
||||
/* 80CB2D84 */ void setFire();
|
||||
/* 80CB2F68 */ void searchCandle(void*, void*);
|
||||
/* 80CB2FD4 */ void searchFireTag(void*, void*);
|
||||
/* 80CB2F68 */ static void* searchCandle(void*, void*);
|
||||
/* 80CB2FD4 */ static void* searchFireTag(void*, void*);
|
||||
/* 80CB3024 */ void init_modeInitMove();
|
||||
/* 80CB30FC */ void modeInitMove();
|
||||
/* 80CB31FC */ void modeWait();
|
||||
|
@ -37,26 +57,67 @@ public:
|
|||
/* 80CB39E0 */ void modeOnFire();
|
||||
/* 80CB3ADC */ void init_modeFireEnd();
|
||||
/* 80CB3AE8 */ void modeFireEnd();
|
||||
/* 80CB3B70 */ void eventStart();
|
||||
/* 80CB3BE0 */ void eventRun();
|
||||
/* 80CB3C64 */ bool eventEnd();
|
||||
/* 80CB3C6C */ bool Draw();
|
||||
/* 80CB3C74 */ void Delete();
|
||||
/* 80CB3E58 */ ~daPoFire_c();
|
||||
/* 80CB3C6C */ int Draw();
|
||||
/* 80CB3C74 */ int Delete();
|
||||
|
||||
/* 80CB3E58 */ virtual ~daPoFire_c() {}
|
||||
/* 80CB3B70 */ virtual bool eventStart();
|
||||
/* 80CB3BE0 */ virtual bool eventRun();
|
||||
/* 80CB3C64 */ virtual bool eventEnd();
|
||||
|
||||
u8 getMoveEnd() { return mMoveEnd; }
|
||||
u32 getID() { return fopAcM_GetParamBit(this, 0, 8); }
|
||||
|
||||
private:
|
||||
/* 0x568 */ u8 field_0x568[0x594 - 0x568];
|
||||
/* 0x584 */ request_of_phase_process_class mPhase;
|
||||
/* 0x58C */ int mStaffID;
|
||||
/* 0x590 */ s16 unk590;
|
||||
/* 0x592 */ u8 mMode;
|
||||
/* 0x593 */ u8 mActorID; // Identifies each of the 4 Poe flames
|
||||
/* 0x594 */ bool mMoveEnd;
|
||||
/* 0x595 */ u8 field_0x595[0x618 - 0x595];
|
||||
/* 0x598 */ u32 mParticleKeys[2];
|
||||
/* 0x5A0 */ cXyz unk5A0;
|
||||
/* 0x5AC */ cXyz unk5AC;
|
||||
/* 0x5B4 */ cXyz unk5B4;
|
||||
/* 0x5C4 */ u8 unk5C4;
|
||||
/* 0x5C5 */ u8 mWaitTimer;
|
||||
/* 0x5C8 */ daPoCandle_c* mpPoCandle;
|
||||
/* 0x5CC */ daTagPoFire_c* mpTagPoFire;
|
||||
/* 0x5D0 */ f32 mGroundY;
|
||||
/* 0x5D4 */ f32 unk5D4;
|
||||
/* 0x5D8 */ f32 unk5D8;
|
||||
/* 0x5DC */ u8 pad5DC[0xC]; // Padding
|
||||
/* 0x5E8 */ f32 unk5E8;
|
||||
/* 0x5EC */ f32 unk5EC;
|
||||
/* 0x5F0 */ f32 unk5F0;
|
||||
/* 0x5F4 */ f32 unk5F4;
|
||||
/* 0x5F8 */ cXyz unk5F8;
|
||||
/* 0x604 */ s32 unk604;
|
||||
/* 0x608 */ f32 unk608;
|
||||
/* 0x610 */ cXyz unk610;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daPoFire_c) == 0x618);
|
||||
|
||||
class daPoFire_HIO_c {
|
||||
class daPoFire_HIO_c : public mDoHIO_entry_c {
|
||||
public:
|
||||
/* 80CB294C */ daPoFire_HIO_c();
|
||||
/* 80CB3D24 */ ~daPoFire_HIO_c();
|
||||
/* 80CB3D24 */ virtual ~daPoFire_HIO_c() {}
|
||||
|
||||
void genMessage(JORMContext*);
|
||||
|
||||
/* 0x06 */ s8 unk6;
|
||||
/* 0x08 */ f32 mWaitPeriod; // Wait oscillation period
|
||||
/* 0x0C */ f32 mWaitVertRange; // Wait oscillation amplitude, vertical range
|
||||
/* 0x10 */ f32 mWaitVertSpeed; // Wait oscillation speed, vertical speed
|
||||
/* 0x14 */ f32 mMovePeriod1; // Move period
|
||||
/* 0x18 */ f32 mMoveSwingSpeed1; // Move oscillation speed
|
||||
/* 0x1C */ f32 mMoveSpeed; // Move speed
|
||||
/* 0x20 */ f32 mMovePeriod2; // Move period ??
|
||||
/* 0x24 */ f32 mMoveSwingSpeed2; // Move oscillation speed
|
||||
/* 0x28 */ f32 mMoveSwingRange; // Move oscillation range
|
||||
/* 0x2C */ f32 mPickupRange; // Horizontal dist ?
|
||||
/* 0x30 */ u8 mFireWaitTime; // Fire wait
|
||||
};
|
||||
|
||||
#endif /* D_A_OBJ_POFIRE_H */
|
||||
|
|
|
@ -32,7 +32,7 @@ class Act_c : public fopAc_ac_c {
|
|||
/* 80485284 */ void mode_wait();
|
||||
/* 804852E0 */ void mode_count_init();
|
||||
/* 80485324 */ void mode_count();
|
||||
/* 804854BC */ int _execute();
|
||||
/* 804854BC */ bool _execute();
|
||||
|
||||
int prm_get_swSave() {
|
||||
return daObj::PrmAbstract(this,PRM_8, PRM_16);
|
||||
|
|
|
@ -12,6 +12,8 @@ public:
|
|||
/* 80D5DC20 */ int Draw();
|
||||
/* 80D5DC28 */ int Delete();
|
||||
|
||||
void setFireFlag(u8 flag) { field_0x569 = flag; }
|
||||
|
||||
/* 0x568 */ u8 field_0x568;
|
||||
/* 0x569 */ u8 field_0x569;
|
||||
/* 0x56A */ u16 field_0x56a;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -4,13 +4,15 @@
|
|||
*/
|
||||
|
||||
#include "d/actor/d_a_fr.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "f_op/f_op_kankyo_mng.h"
|
||||
#include "d/actor/d_a_player.h"
|
||||
#include "SSystem/SComponent/c_lib.h"
|
||||
#include "c/c_damagereaction.h"
|
||||
#include "d/actor/d_a_mg_fish.h"
|
||||
#include "d/actor/d_a_obj_lp.h"
|
||||
#include "d/actor/d_a_player.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_s_play.h"
|
||||
#include "dol2asm.h"
|
||||
#include "f_op/f_op_kankyo_mng.h"
|
||||
|
||||
/* 805198EC-8051994C 0000EC 0060+00 1/1 0/0 0/0 .text __ct__10daFr_HIO_cFv */
|
||||
daFr_HIO_c::daFr_HIO_c() {
|
||||
|
@ -34,18 +36,20 @@ static void anm_init(fr_class* i_this, int i_index, f32 i_morf, u8 i_mode, f32 i
|
|||
|
||||
/* 805199F4-80519AB8 0001F4 00C4+00 1/0 0/0 0/0 .text daFr_Draw__FP8fr_class */
|
||||
static int daFr_Draw(fr_class* i_this) {
|
||||
fopAc_ac_c* actor = i_this;
|
||||
|
||||
J3DModel* model = i_this->mMorf->getModel();
|
||||
|
||||
g_env_light.settingTevStruct(0, &i_this->current.pos, &i_this->tevStr);
|
||||
g_env_light.setLightTevColorType_MAJI(model, &i_this->tevStr);
|
||||
g_env_light.settingTevStruct(0, &actor->current.pos, &actor->tevStr);
|
||||
g_env_light.setLightTevColorType_MAJI(model, &actor->tevStr);
|
||||
|
||||
J3DModelData* modelData = model->getModelData();
|
||||
i_this->mBtkAnm->entry(modelData);
|
||||
i_this->mBtkAnm->entry(model->getModelData());
|
||||
i_this->mMorf->entryDL();
|
||||
|
||||
if (!i_this->field_0x5ec) {
|
||||
dComIfGd_setSimpleShadow(&i_this->current.pos, i_this->mAcch.m_ground_h, i_this->scale.x * 10.0f,
|
||||
i_this->mAcch.m_gnd, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
|
||||
dComIfGd_setSimpleShadow(&actor->current.pos, i_this->mAcch.GetGroundH(),
|
||||
(10.0f + TREG_F(8)) * actor->scale.x, i_this->mAcch.m_gnd, 0, 1.0f,
|
||||
dDlst_shadowControl_c::getSimpleTex());
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
@ -53,14 +57,17 @@ static int daFr_Draw(fr_class* i_this) {
|
|||
|
||||
/* 80519AB8-80519B14 0002B8 005C+00 1/1 0/0 0/0 .text sibuki_set__FP8fr_class */
|
||||
static void sibuki_set(fr_class* i_this) {
|
||||
cXyz sp18 = i_this->current.pos;
|
||||
fopAc_ac_c* actor = i_this;
|
||||
|
||||
cXyz sp18 = actor->current.pos;
|
||||
sp18.y = i_this->field_0x5f0;
|
||||
fopKyM_createWpillar(&sp18, i_this->scale.x * 0.3f, 0);
|
||||
fopKyM_createWpillar(&sp18, actor->scale.x * 0.3f, 0);
|
||||
}
|
||||
|
||||
/* 80519B14-80519B60 000314 004C+00 1/1 0/0 0/0 .text s_wd_sub__FPvPv */
|
||||
static void* s_wd_sub(void* param_1, void* param_2) {
|
||||
if (fopAc_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_OBJ_LP) {
|
||||
(void)param_2;
|
||||
if (fopAcM_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_OBJ_LP) {
|
||||
return param_1;
|
||||
}
|
||||
|
||||
|
@ -69,12 +76,15 @@ static void* s_wd_sub(void* param_1, void* param_2) {
|
|||
|
||||
/* 80519B60-80519D28 000360 01C8+00 1/1 0/0 0/0 .text wd_check__FP8fr_class */
|
||||
static wd_ss* wd_check(fr_class* i_this) {
|
||||
fopAc_ac_c* actor = i_this;
|
||||
|
||||
obj_lp_class* mLilyPad = (obj_lp_class*)fpcM_Search(s_wd_sub, i_this);
|
||||
if (mLilyPad) {
|
||||
wd_ss* mWdSs = mLilyPad->mWdSs;
|
||||
cXyz unkXyz1;
|
||||
for (int i = 0; i < mLilyPad->field_0xad98; i++, mWdSs++) {
|
||||
cXyz sp48 = mWdSs->field_0x10 - i_this->current.pos;
|
||||
if (sp48.abs() < mWdSs->field_0x3c * 22.0f) {
|
||||
unkXyz1 = mWdSs->field_0x10 - actor->current.pos;
|
||||
if (unkXyz1.abs() < mWdSs->field_0x3c * (22.0f + KREG_F(11))) {
|
||||
return mWdSs;
|
||||
}
|
||||
}
|
||||
|
@ -84,34 +94,35 @@ static wd_ss* wd_check(fr_class* i_this) {
|
|||
}
|
||||
|
||||
/* 80519D28-80519E24 000528 00FC+00 4/4 0/0 0/0 .text way_bg_check__FP8fr_class */
|
||||
static bool way_bg_check(fr_class* i_this) {
|
||||
static BOOL way_bg_check(fr_class* i_this) {
|
||||
// NONMATCHING
|
||||
cXyz sp24;
|
||||
cXyz sp18;
|
||||
cXyz sp0c;
|
||||
|
||||
cXyz sp90 = i_this->current.pos;
|
||||
sp90.y += 20.0f;
|
||||
sp24 = i_this->current.pos;
|
||||
sp24.y += 20.0f;
|
||||
|
||||
cMtx_YrotS(*calc_mtx, i_this->shape_angle.y);
|
||||
|
||||
cXyz sp9c;
|
||||
cXyz spa8(0.0f, 0.0f, 50.0f);
|
||||
MtxPosition(&spa8, &sp9c);
|
||||
sp9c += sp90;
|
||||
sp0c.x = 0.0f;
|
||||
sp0c.y = 0.0f;
|
||||
sp0c.z = 50.0f;
|
||||
MtxPosition(&sp0c, &sp18);
|
||||
sp18 += sp24;
|
||||
|
||||
dBgS_LinChk dStack_84;
|
||||
dStack_84.Set(&sp90, &sp90, i_this);
|
||||
dStack_84.Set(&sp24, &sp18, i_this);
|
||||
|
||||
if (dComIfG_Bgsp().LineCross(&dStack_84)) {
|
||||
return true;
|
||||
return TRUE;
|
||||
} else {
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/* 8051BC10-8051BC14 000008 0004+00 2/2 0/0 0/0 .bss None */
|
||||
static u8 data_8051BC10[4];
|
||||
|
||||
/* 8051BC14-8051BC20 00000C 000C+00 1/1 0/0 0/0 .bss @3644 */
|
||||
static u8 lit_3644[12];
|
||||
static bool l_initHIO;
|
||||
|
||||
/* 8051BC20-8051BC4C 000018 002C+00 9/9 0/0 0/0 .bss l_HIO */
|
||||
static daFr_HIO_c l_HIO;
|
||||
|
@ -119,16 +130,20 @@ static daFr_HIO_c l_HIO;
|
|||
/* 80519E24-8051A0D8 000624 02B4+00 1/2 0/0 0/0 .text fr_normal__FP8fr_class */
|
||||
static void fr_normal(fr_class* i_this) {
|
||||
// NONMATCHING
|
||||
switch (i_this->field_0x5d2) {
|
||||
fopAc_ac_c* actor = i_this;
|
||||
fopAc_ac_c* player = dComIfGp_getPlayer(0);
|
||||
|
||||
cXyz sp18;
|
||||
cXyz sp0c;
|
||||
switch (i_this->field_0x5d4) {
|
||||
case 0:
|
||||
i_this->field_0x5d4 = 1;
|
||||
i_this->field_0x5d4 += (s16)1;
|
||||
anm_init(i_this, 11, 5.0f, 2, cM_rndF(0.3f) + 0.8f);
|
||||
i_this->field_0x5dc[0] = cM_rndF(50.0f) + 20.0f;
|
||||
i_this->speedF = 0.0f;
|
||||
break;
|
||||
case 1:
|
||||
if (!i_this->field_0x5dc[0]) {
|
||||
if (i_this->mMorf->getFrame() == 14) {
|
||||
if ((int)i_this->mMorf->getFrame() == 14) {
|
||||
i_this->field_0x5d4++;
|
||||
anm_init(i_this, 7, 5.0f, 0, 2.0f);
|
||||
}
|
||||
|
@ -141,13 +156,12 @@ static void fr_normal(fr_class* i_this) {
|
|||
i_this->speed.y = l_HIO.field_0xc + cM_rndFX(l_HIO.field_0xc * 0.5f);
|
||||
|
||||
if (way_bg_check(i_this)) {
|
||||
i_this->field_0x5e8 = l_HIO.field_0x14;
|
||||
i_this->current.angle.y += 0x8000;
|
||||
} else {
|
||||
i_this->current.angle.y += -0x8000;
|
||||
cLib_addCalcAngleS2(&i_this->current.angle.y,
|
||||
cM_atan2s((i_this->home.pos.x + cM_rndFX(i_this->field_0x5e8)) - i_this->current.pos.x,
|
||||
(i_this->home.pos.z + cM_rndFX(i_this->field_0x5e8) - i_this->current.pos.z)),
|
||||
1, 0x2000);
|
||||
i_this->field_0x5e8 = l_HIO.field_0x14;
|
||||
f32 x = i_this->home.pos.x + cM_rndFX(i_this->field_0x5e8) - i_this->current.pos.x;
|
||||
f32 z = i_this->home.pos.z + cM_rndFX(i_this->field_0x5e8) - i_this->current.pos.z;
|
||||
cLib_addCalcAngleS2(&i_this->current.angle.y, cM_atan2s(x, z), 1, 0x2000 + TREG_S(2));
|
||||
}
|
||||
|
||||
i_this->field_0x5d4++;
|
||||
|
@ -169,10 +183,14 @@ static void fr_normal(fr_class* i_this) {
|
|||
|
||||
/* 8051A0D8-8051A318 0008D8 0240+00 1/2 0/0 0/0 .text fr_away__FP8fr_class */
|
||||
static void fr_away(fr_class* i_this) {
|
||||
// NONMATCHING
|
||||
fopAc_ac_c* actor = i_this;
|
||||
fopAc_ac_c* player = dComIfGp_getPlayer(0);
|
||||
|
||||
cXyz sp14;
|
||||
cXyz sp08;
|
||||
switch (i_this->field_0x5d4) {
|
||||
case 0:
|
||||
i_this->field_0x5d4 = 1;
|
||||
i_this->field_0x5d4 += (s16)1;
|
||||
i_this->speedF = 0.0f;
|
||||
anm_init(i_this, 7, 3.0f, 0, 4.0f);
|
||||
break;
|
||||
|
@ -183,11 +201,11 @@ static void fr_away(fr_class* i_this) {
|
|||
i_this->speed.y = l_HIO.field_0x20 + cM_rndFX(l_HIO.field_0x20 * 0.5f);
|
||||
|
||||
if (way_bg_check(i_this)) {
|
||||
i_this->current.angle.y += -0x8000;
|
||||
i_this->current.angle.y += 0x8000;
|
||||
} else {
|
||||
cLib_addCalcAngleS2(&i_this->current.angle.y,
|
||||
fopAcM_searchPlayerAngleY(i_this) + cM_rndFX(8000.0f) + -0x8000, 1,
|
||||
0x2000);
|
||||
fopAcM_searchPlayerAngleY(i_this) + 0x8000 + (s16)cM_rndFX(8000.0f), 1,
|
||||
0x2000 + TREG_S(2));
|
||||
}
|
||||
|
||||
i_this->field_0x5d4++;
|
||||
|
@ -203,7 +221,7 @@ static void fr_away(fr_class* i_this) {
|
|||
case 3:
|
||||
if (i_this->mMorf->isStop()) {
|
||||
i_this->field_0x5d4 = 0;
|
||||
if ((l_HIO.field_0x18 + 200.0f) < i_this->field_0x5d8) {
|
||||
if (i_this->field_0x5d8 > (l_HIO.field_0x18 + 200.0f)) {
|
||||
i_this->field_0x5d2 = 0;
|
||||
}
|
||||
}
|
||||
|
@ -212,40 +230,42 @@ static void fr_away(fr_class* i_this) {
|
|||
|
||||
/* 8051A318-8051A558 000B18 0240+00 1/1 0/0 0/0 .text fr_s_normal__FP8fr_class */
|
||||
static void fr_s_normal(fr_class* i_this) {
|
||||
// NONMATCHING
|
||||
fopAc_ac_c* actor = i_this;
|
||||
fopAc_ac_c* player = dComIfGp_getPlayer(0);
|
||||
|
||||
cXyz sp18;
|
||||
cXyz sp0c;
|
||||
switch (i_this->field_0x5d4) {
|
||||
case 0:
|
||||
i_this->field_0x5d4++;
|
||||
anm_init(i_this, 10, 5.0f, 2, cM_rndF(0.3f) + 1.5f);
|
||||
i_this->field_0x5cc = 0;
|
||||
i_this->field_0x5dc[0] = cM_rndF(100.0f) + 50.0f;
|
||||
if (l_HIO.field_0x24 < i_this->speedF) {
|
||||
if (i_this->speedF > l_HIO.field_0x24) {
|
||||
i_this->speedF = l_HIO.field_0x24;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (i_this->mMorf->getFrame() > 9) {
|
||||
if (i_this->mMorf->getFrame() < 0x1a) {
|
||||
if ((int)i_this->mMorf->getFrame() >= 10) {
|
||||
if ((int)i_this->mMorf->getFrame() <= 25) {
|
||||
cLib_addCalc2(&i_this->speedF, l_HIO.field_0x24, 1.0f, l_HIO.field_0x24 * 0.2f);
|
||||
if (i_this->mMorf->getFrame() > 9) {
|
||||
if (i_this->mMorf->getFrame() < 16 && i_this->field_0x5cc == 0) {
|
||||
if ((int)i_this->mMorf->getFrame() >= 10) {
|
||||
if ((int)i_this->mMorf->getFrame() <= 15 && (s8)i_this->field_0x5cc == 0) {
|
||||
if (way_bg_check(i_this)) {
|
||||
i_this->current.angle.y += -0x8000;
|
||||
i_this->current.angle.y += 0x8000;
|
||||
} else {
|
||||
i_this->field_0x5e8 = l_HIO.field_0x14;
|
||||
|
||||
cXyz sp28;
|
||||
sp28.x = i_this->home.pos.x + cM_rndFX(i_this->field_0x5e8) - i_this->current.pos.x;
|
||||
sp28.z = i_this->home.pos.z + cM_rndFX(i_this->field_0x5e8) - i_this->current.pos.z;
|
||||
s16 sVar2 = cM_atan2s(sp28.x, sp28.z);
|
||||
cLib_addCalcAngleS2(&i_this->current.angle.y, sVar2, 1, 0x2000);
|
||||
sp0c.x = i_this->home.pos.x + cM_rndFX(i_this->field_0x5e8) - i_this->current.pos.x;
|
||||
sp0c.z = i_this->home.pos.z + cM_rndFX(i_this->field_0x5e8) - i_this->current.pos.z;
|
||||
cLib_addCalcAngleS2(&i_this->current.angle.y, cM_atan2s(sp0c.x, sp0c.z), 1, 0x2000 + TREG_S(2));
|
||||
}
|
||||
|
||||
i_this->field_0x5cc = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (i_this->mMorf->getFrame() < 20) {
|
||||
if ((int)i_this->mMorf->getFrame() < 20) {
|
||||
return;
|
||||
}
|
||||
i_this->field_0x5cc = 0;
|
||||
|
@ -263,7 +283,11 @@ static void fr_s_normal(fr_class* i_this) {
|
|||
|
||||
/* 8051A558-8051A620 000D58 00C8+00 1/1 0/0 0/0 .text fr_s_wait__FP8fr_class */
|
||||
static void fr_s_wait(fr_class* i_this) {
|
||||
// NONMATCHING
|
||||
fopAc_ac_c* actor = i_this;
|
||||
fopAc_ac_c* player = dComIfGp_getPlayer(0);
|
||||
|
||||
cXyz sp14;
|
||||
cXyz sp08;
|
||||
switch (i_this->field_0x5d4) {
|
||||
case 0:
|
||||
i_this->field_0x5d4++;
|
||||
|
@ -283,6 +307,11 @@ static void fr_s_wait(fr_class* i_this) {
|
|||
/* 8051A620-8051A820 000E20 0200+00 1/1 0/0 0/0 .text fr_s_away__FP8fr_class */
|
||||
static void fr_s_away(fr_class* i_this) {
|
||||
// NONMATCHING
|
||||
fopAc_ac_c* actor = i_this;
|
||||
fopAc_ac_c* player = dComIfGp_getPlayer(0);
|
||||
|
||||
cXyz sp14;
|
||||
cXyz sp08;
|
||||
switch (i_this->field_0x5d4) {
|
||||
case 0:
|
||||
i_this->field_0x5d4++;
|
||||
|
@ -290,20 +319,20 @@ static void fr_s_away(fr_class* i_this) {
|
|||
i_this->field_0x5cc = 0;
|
||||
break;
|
||||
case 1:
|
||||
if (i_this->mMorf->getFrame() > 9) {
|
||||
if (i_this->mMorf->getFrame() > 0x1a) {
|
||||
if ((int)i_this->mMorf->getFrame() >= 10) {
|
||||
if ((int)i_this->mMorf->getFrame() >= 25) {
|
||||
cLib_addCalc2(&i_this->speedF, l_HIO.field_0x28, 1.0f, l_HIO.field_0x28 * 0.2f);
|
||||
if (i_this->mMorf->getFrame() > 9) {
|
||||
if (i_this->mMorf->getFrame() < 16 && i_this->field_0x5cc == 0) {
|
||||
if ((int)i_this->mMorf->getFrame() >= 10) {
|
||||
if ((int)i_this->mMorf->getFrame() <= 15 && (s8)i_this->field_0x5cc == 0) {
|
||||
if (way_bg_check(i_this)) {
|
||||
i_this->current.angle.y += -0x8000;
|
||||
i_this->current.angle.y += 0x8000;
|
||||
} else {
|
||||
cLib_addCalcAngleS2(&i_this->current.angle.y,
|
||||
(fopAcM_searchPlayerAngleY(i_this) + cM_rndFX(8000.0f)) + -0x8000,
|
||||
1, 0x2000);
|
||||
(s16)(fopAcM_searchPlayerAngleY(i_this) + (s16)cM_rndFX(8000.0f)) + 0x8000,
|
||||
1, 0x2000 + TREG_S(2));
|
||||
}
|
||||
|
||||
if (l_HIO.field_0x18 + 200.0f < i_this->field_0x5d8) {
|
||||
if (i_this->field_0x5d8 > l_HIO.field_0x18 + 200.0f) {
|
||||
i_this->field_0x5d2 = 20;
|
||||
i_this->field_0x5d4 = 0;
|
||||
}
|
||||
|
@ -312,7 +341,7 @@ static void fr_s_away(fr_class* i_this) {
|
|||
}
|
||||
}
|
||||
|
||||
if (i_this->mMorf->getFrame() < 20) {
|
||||
if ((int)i_this->mMorf->getFrame() < 20) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -327,29 +356,34 @@ static void fr_s_away(fr_class* i_this) {
|
|||
|
||||
/* 8051A820-8051A904 001020 00E4+00 1/1 0/0 0/0 .text fr_eat__FP8fr_class */
|
||||
static void fr_eat(fr_class* i_this) {
|
||||
// NONMATCHING
|
||||
fopAc_ac_c* this_actor = i_this;
|
||||
fopAc_ac_c* player = dComIfGp_getPlayer(0);
|
||||
|
||||
cXyz sp14;
|
||||
cXyz sp08;
|
||||
fopAc_ac_c* actor = fopAcM_SearchByID(i_this->field_0x5f8);
|
||||
if (!actor) {
|
||||
fopAcM_delete(i_this);
|
||||
} else {
|
||||
switch (i_this->field_0x5d4) {
|
||||
case 0:
|
||||
i_this->field_0x5d4++;
|
||||
anm_init(i_this, 10, 20.0f, 2, 0.0f);
|
||||
i_this->field_0x5dc[0] = 20;
|
||||
case 1:
|
||||
i_this->mMorf->setFrame(0.0f);
|
||||
case 0:
|
||||
i_this->field_0x5d4++;
|
||||
anm_init(i_this, 10, 20.0f, 2, 0.0f);
|
||||
i_this->field_0x5dc[0] = 20;
|
||||
case 1:
|
||||
i_this->mMorf->setFrame(0.0f);
|
||||
// not sure if this cast is right
|
||||
i_this->current.pos = ((mg_fish_class*)actor)->field_0x638;
|
||||
|
||||
if (i_this->field_0x5dc[0] == 0) {
|
||||
fopAcM_delete(i_this);
|
||||
}
|
||||
if (i_this->field_0x5dc[0] == 0) {
|
||||
fopAcM_delete(i_this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 8051A904-8051AA9C 001104 0198+00 2/2 0/0 0/0 .text swim_on__FP8fr_class */
|
||||
static void swim_on(fr_class* i_this) {
|
||||
// NONMATCHING
|
||||
if (i_this->field_0x5ec == 0) {
|
||||
i_this->field_0x5d2 = 0;
|
||||
i_this->field_0x5d4 = 0;
|
||||
|
@ -358,21 +392,20 @@ static void swim_on(fr_class* i_this) {
|
|||
i_this->gravity = 0.0f;
|
||||
i_this->speed.y = 0.0f;
|
||||
|
||||
f32 fVar3 = 0.5f * cM_ssin(i_this->field_0x5d0 * 0x5dc) - i_this->scale.x * 10.0f * 1.33f;
|
||||
f32 fVar3 = (0.5f + BREG_F(6)) * cM_ssin(i_this->field_0x5d0 * (1500 + BREG_S(5))) - i_this->scale.x * 10.0f * 1.33f;
|
||||
|
||||
s16 sVar2;
|
||||
if (i_this->field_0x5d2 == 0x1e) {
|
||||
sVar2 = -(5000 + 700 * cM_ssin(i_this->field_0x5d0 * 700));
|
||||
fVar3 -= 3.0f * i_this->scale.x * 1.33f;
|
||||
sVar2 = (cM_ssin(i_this->field_0x5d0 * (700 + BREG_S(3))) * (700 + BREG_S(4)) + -(5000 + BREG_S(7)));
|
||||
fVar3 -= (3.0f + BREG_F(4)) * i_this->scale.x * 1.33f;
|
||||
} else {
|
||||
sVar2 = 0;
|
||||
}
|
||||
|
||||
cLib_addCalc2(&i_this->field_0x5f4, fVar3, 0.1f, 1.0f);
|
||||
cLib_addCalcAngleS2(&i_this->shape_angle.x, sVar2, 16, 0x100);
|
||||
fVar3 = cM_ssin(i_this->field_0x5d0 * 600);
|
||||
|
||||
i_this->shape_angle.z = 500 * fVar3;
|
||||
i_this->shape_angle.z = cM_ssin(i_this->field_0x5d0 * (600 + BREG_S(1))) * (500 + BREG_S(2));
|
||||
|
||||
if (((i_this->field_0x994 == -1 || !daPy_py_c::checkNowWolf()) &&
|
||||
i_this->field_0x5d2 != 0x28) && i_this->field_0x5d8 < l_HIO.field_0x18) {
|
||||
|
@ -384,14 +417,15 @@ static void swim_on(fr_class* i_this) {
|
|||
|
||||
/* 8051AA9C-8051AC2C 00129C 0190+00 1/1 0/0 0/0 .text swim_off__FP8fr_class */
|
||||
static void swim_off(fr_class* i_this) {
|
||||
// NONMATCHING
|
||||
fopAc_ac_c* this_actor = i_this;
|
||||
|
||||
cLib_addCalc0(&i_this->field_0x5f4, 0.1f, 1.0f);
|
||||
i_this->shape_angle.z = 0;
|
||||
|
||||
if (i_this->mAcch.ChkGroundHit() || i_this->field_0x5ce != 0) {
|
||||
i_this->shape_angle.x = 0;
|
||||
} else {
|
||||
i_this->shape_angle.x = i_this->speed.y * -500.0f;
|
||||
i_this->shape_angle.x = i_this->speed.y * (-500.0f + TREG_F(9));
|
||||
if (i_this->shape_angle.x > 0x1000) {
|
||||
i_this->shape_angle.x = 0x1000;
|
||||
} else if (i_this->shape_angle.x < -0x2000) {
|
||||
|
@ -414,11 +448,11 @@ static void swim_off(fr_class* i_this) {
|
|||
|
||||
/* 8051AC2C-8051AD04 00142C 00D8+00 1/1 0/0 0/0 .text fr_message__FP8fr_class */
|
||||
static void fr_message(fr_class* i_this) {
|
||||
// NONMATCHING
|
||||
s16 sVar1 = i_this->field_0x5d4;
|
||||
fopAc_ac_c* this_actor = i_this;
|
||||
|
||||
switch (i_this->field_0x5d4) {
|
||||
case 0:
|
||||
anm_init(i_this, 11, 400.0f, 2, cM_rndF(0.3f) + 0.8f);
|
||||
anm_init(i_this, 11, 5.0f, 2, cM_rndF(0.3f) + 0.8f);
|
||||
i_this->field_0x5d4++;
|
||||
case 1:
|
||||
default:
|
||||
|
@ -435,40 +469,46 @@ static void fr_message(fr_class* i_this) {
|
|||
/* 8051AD04-8051B04C 001504 0348+00 2/1 0/0 0/0 .text action__FP8fr_class */
|
||||
static void action(fr_class* i_this) {
|
||||
// NONMATCHING
|
||||
fopAc_ac_c* this_actor = i_this;
|
||||
|
||||
cXyz sp30;
|
||||
cXyz sp24;
|
||||
|
||||
char cVar4 = 0;
|
||||
i_this->gravity = l_HIO.field_0x10;
|
||||
i_this->field_0x991 = 0;
|
||||
switch (i_this->field_0x5d2) {
|
||||
case 0:
|
||||
fr_normal(i_this);
|
||||
i_this->field_0x991 = 1;
|
||||
break;
|
||||
case 5:
|
||||
fr_away(i_this);
|
||||
i_this->field_0x991 = 1;
|
||||
break;
|
||||
case 10:
|
||||
fr_message(i_this);
|
||||
i_this->field_0x991 = 2;
|
||||
break;
|
||||
case 15:
|
||||
cVar4 = -1;
|
||||
break;
|
||||
case 20:
|
||||
fr_s_normal(i_this);
|
||||
cVar4 = 1;
|
||||
break;
|
||||
case 30:
|
||||
fr_s_wait(i_this);
|
||||
cVar4 = 1;
|
||||
break;
|
||||
case 40:
|
||||
fr_s_away(i_this);
|
||||
cVar4 = 1;
|
||||
break;
|
||||
case 50:
|
||||
fr_eat(i_this);
|
||||
cVar4 = -2;
|
||||
case 0:
|
||||
fr_normal(i_this);
|
||||
i_this->field_0x991 = 1;
|
||||
break;
|
||||
case 5:
|
||||
fr_away(i_this);
|
||||
i_this->field_0x991 = 1;
|
||||
break;
|
||||
case 10:
|
||||
fr_message(i_this);
|
||||
i_this->field_0x991 = 2;
|
||||
break;
|
||||
case 20:
|
||||
fr_s_normal(i_this);
|
||||
cVar4 = 1;
|
||||
break;
|
||||
case 30:
|
||||
fr_s_wait(i_this);
|
||||
cVar4 = 1;
|
||||
break;
|
||||
case 40:
|
||||
fr_s_away(i_this);
|
||||
cVar4 = 1;
|
||||
break;
|
||||
case 50:
|
||||
fr_eat(i_this);
|
||||
cVar4 = -2;
|
||||
break;
|
||||
case 15:
|
||||
cVar4 = -1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (((i_this->field_0x991 == 1 && i_this->field_0x994 != -1) && daPy_py_c::checkNowWolf()) && i_this->field_0x5d8 < 300.0f) {
|
||||
|
@ -479,11 +519,12 @@ static void action(fr_class* i_this) {
|
|||
if (cVar4 != -2) {
|
||||
cLib_addCalcAngleS2(&i_this->shape_angle.y, i_this->current.angle.y, 2, 0x4000);
|
||||
cMtx_YrotS(*calc_mtx, i_this->current.angle.y);
|
||||
cXyz sp90;
|
||||
cXyz sp84(0.0f, 0.0f, i_this->speedF);
|
||||
MtxPosition(&sp84, &sp90);
|
||||
i_this->speed.x = sp90.x;
|
||||
i_this->speed.z = sp90.z;
|
||||
sp24.x = 0.0f;
|
||||
sp24.y = 0.0f;
|
||||
sp24.z = i_this->speedF;
|
||||
MtxPosition(&sp24, &sp30);
|
||||
i_this->speed.x = sp30.x;
|
||||
i_this->speed.z = sp30.z;
|
||||
i_this->speed.y += i_this->gravity;
|
||||
|
||||
i_this->current.pos += (i_this->speed * i_this->scale.x) * 1.33f;
|
||||
|
@ -492,8 +533,8 @@ static void action(fr_class* i_this) {
|
|||
i_this->speed.y = -80.0f;
|
||||
}
|
||||
|
||||
sp84 = i_this->current.pos;
|
||||
sp84.y += 200.0f;
|
||||
sp24 = i_this->current.pos;
|
||||
sp24.y += 200.0f;
|
||||
f32 fVar6 = i_this->mAcch.GetGroundH();
|
||||
dBgS_ObjGndChk_Spl(cStack_78);
|
||||
i_this->field_0x5ec = 0;
|
||||
|
@ -502,12 +543,11 @@ static void action(fr_class* i_this) {
|
|||
if (wd_check(i_this)) {
|
||||
bVar2 = true;
|
||||
} else {
|
||||
cStack_78.SetPos(&sp84);
|
||||
f32 fVar5 = dComIfG_Bgsp().GroundCross(&cStack_78);
|
||||
i_this->field_0x5f0 = fVar5;
|
||||
cStack_78.SetPos(&sp24);
|
||||
i_this->field_0x5f0 = dComIfG_Bgsp().GroundCross(&cStack_78);
|
||||
|
||||
if (fVar6 < fVar5 && i_this->current.pos.y <= fVar5) {
|
||||
i_this->current.pos.y = i_this->field_0x5f0;
|
||||
if (fVar6 < i_this->field_0x5f0 && i_this->current.pos.y <= i_this->field_0x5f0 + YREG_F(0)) {
|
||||
i_this->current.pos.y = i_this->field_0x5f0 + YREG_F(0);
|
||||
i_this->field_0x5ec = 1;
|
||||
}
|
||||
}
|
||||
|
@ -521,8 +561,8 @@ static void action(fr_class* i_this) {
|
|||
|
||||
i_this->mAcch.CrrPos(dComIfG_Bgsp());
|
||||
i_this->field_0x5ce = 0;
|
||||
if ((bVar2 && i_this->speed.y <= 0.0f) && i_this->current.pos.y <= i_this->field_0x5f0 + i_this->scale.x * 5.0f) {
|
||||
i_this->current.pos.y = i_this->field_0x5f0 + i_this->scale.x * 5.0f;
|
||||
if ((bVar2 && i_this->speed.y <= 0.0f) && i_this->current.pos.y <= i_this->field_0x5f0 + i_this->scale.x * (5.0f + YREG_F(11))) {
|
||||
i_this->current.pos.y = i_this->field_0x5f0 + i_this->scale.x * (5.0f + YREG_F(11));
|
||||
i_this->speed.y = 0.0f;
|
||||
i_this->field_0x5ce = 1;
|
||||
}
|
||||
|
@ -531,7 +571,6 @@ static void action(fr_class* i_this) {
|
|||
|
||||
/* 8051B04C-8051B170 00184C 0124+00 1/1 0/0 0/0 .text message__FP8fr_class */
|
||||
static int message(fr_class* i_this) {
|
||||
// NONMATCHING
|
||||
if (i_this->field_0x992) {
|
||||
i_this->field_0x5e4 = 10;
|
||||
if (i_this->mMsgFlow.doFlow(i_this, NULL, 0)) {
|
||||
|
@ -553,20 +592,23 @@ static int message(fr_class* i_this) {
|
|||
i_this->eventInfo.onCondition(1);
|
||||
} else {
|
||||
fopAcM_OffStatus(i_this, 0);
|
||||
cLib_offBit<u32>(i_this->attention_info.flags, 1);
|
||||
#if DEBUG
|
||||
cLib_offBit<u32>(i_this->attention_info.flags, 0x42);
|
||||
#else
|
||||
cLib_offBit<u32>(i_this->attention_info.flags, 0xa);
|
||||
#endif
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
/* 8051B170-8051B354 001970 01E4+00 2/1 0/0 0/0 .text daFr_Execute__FP8fr_class */
|
||||
static int daFr_Execute(fr_class* i_this) {
|
||||
// NONMATCHING
|
||||
if (cDmrNowMidnaTalk()) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
cXyz sp18(0.0f, 0.0f, 0.0f);
|
||||
i_this->field_0x5d8 = fopAcM_searchPlayerDistance(i_this);
|
||||
i_this->field_0x5d0++;
|
||||
for (int i = 0; i < 4; i++) {
|
||||
|
@ -582,8 +624,8 @@ static int daFr_Execute(fr_class* i_this) {
|
|||
action(i_this);
|
||||
|
||||
mDoMtx_stack_c::transS(i_this->current.pos.x, i_this->current.pos.y + i_this->field_0x5f4, i_this->current.pos.z);
|
||||
mDoMtx_stack_c::YrotM(i_this->shape_angle.y);
|
||||
mDoMtx_stack_c::XrotM(i_this->shape_angle.x);
|
||||
mDoMtx_stack_c::YrotM((s16)i_this->shape_angle.y);
|
||||
mDoMtx_stack_c::XrotM((s16)i_this->shape_angle.x);
|
||||
mDoMtx_stack_c::ZrotM(i_this->shape_angle.z);
|
||||
mDoMtx_stack_c::scaleM(i_this->scale.x, i_this->scale.x, i_this->scale.x);
|
||||
|
||||
|
@ -609,11 +651,15 @@ static int daFr_IsDelete(fr_class* i_this) {
|
|||
|
||||
/* 8051B35C-8051B3B0 001B5C 0054+00 1/0 0/0 0/0 .text daFr_Delete__FP8fr_class */
|
||||
static int daFr_Delete(fr_class* i_this) {
|
||||
fpc_ProcID id = fopAcM_GetID(i_this);
|
||||
|
||||
dComIfG_resDelete(&i_this->mPhase, "Fr");
|
||||
if (i_this->field_0x9e4) {
|
||||
data_8051BC10[0] = 0;
|
||||
l_initHIO = false;
|
||||
}
|
||||
|
||||
mDoHIO_DELETE_CHILD(l_HIO.field_0x4);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -666,9 +712,9 @@ static int daFr_Create(fopAc_ac_c* a_this) {
|
|||
|
||||
OS_REPORT("//////////////FR SET 2 !!\n");
|
||||
|
||||
if (data_8051BC10[0] == 0) {
|
||||
if (!l_initHIO) {
|
||||
i_this->field_0x9e4 = 1;
|
||||
data_8051BC10[0] = 1;
|
||||
l_initHIO = true;
|
||||
l_HIO.field_0x4 = -1;
|
||||
}
|
||||
|
||||
|
@ -698,21 +744,6 @@ static int daFr_Create(fopAc_ac_c* a_this) {
|
|||
return phase_state;
|
||||
}
|
||||
|
||||
// /* 8051B920-8051B968 002120 0048+00 2/1 0/0 0/0 .text __dt__10daFr_HIO_cFv */
|
||||
// daFr_HIO_c::~daFr_HIO_c() {
|
||||
// // NONMATCHING
|
||||
// }
|
||||
|
||||
/* 8051B968-8051B9A4 002168 003C+00 0/0 1/0 0/0 .text __sinit_d_a_fr_cpp */
|
||||
void __sinit_d_a_fr_cpp() {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
REGISTER_CTORS(0x8051B968, __sinit_d_a_fr_cpp);
|
||||
#pragma pop
|
||||
|
||||
/* 8051BB60-8051BB80 -00001 0020+00 1/0 0/0 0/0 .data l_daFr_Method */
|
||||
static actor_method_class l_daFr_Method = {
|
||||
(process_method_func)daFr_Create,
|
||||
|
|
|
@ -1260,11 +1260,11 @@ void daKago_c::executeStagger() {
|
|||
mDoMtx_stack_c::multVecZero(&field_0x674);
|
||||
|
||||
if (field_0x6e7 == 0) {
|
||||
mSound.startCreatureSound(0x70236, 0, -1);
|
||||
mSound.startCreatureVoice(0x7048f, -1);
|
||||
mSound.startCreatureSound(Z2SE_EN_YC_CRASH, 0, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_YC_V_HANGED, -1);
|
||||
} else {
|
||||
mSound.startCreatureSound(0x70499, 0, -1);
|
||||
mSound.startCreatureVoice(0x7049a, -1);
|
||||
mSound.startCreatureSound(Z2SE_EN_KC_CRASH, 0, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_KC_V_CRASH, -1);
|
||||
}
|
||||
|
||||
setBck(7, 0, 10.0f, 1.0f);
|
||||
|
@ -1309,7 +1309,7 @@ void daKago_c::executeStagger() {
|
|||
}
|
||||
}
|
||||
|
||||
mSound.startCreatureSound(0x704b3, 0, -1);
|
||||
mSound.startCreatureSound(Z2SE_EN_YC_HIT_SIDE, 0, -1);
|
||||
dComIfGp_getVibration().StartQuake(1, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
|
||||
|
||||
field_0x744 = 5;
|
||||
|
@ -1324,11 +1324,11 @@ void daKago_c::executeStagger() {
|
|||
mDoMtx_stack_c::multVecZero(&field_0x674);
|
||||
|
||||
if (field_0x6e7 == 0) {
|
||||
mSound.startCreatureSound(0x70236, 0, -1);
|
||||
mSound.startCreatureVoice(0x7048f, -1);
|
||||
mSound.startCreatureSound(Z2SE_EN_YC_CRASH, 0, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_YC_V_HANGED, -1);
|
||||
} else {
|
||||
mSound.startCreatureSound(0x70499, 0, -1);
|
||||
mSound.startCreatureVoice(0x7049a, -1);
|
||||
mSound.startCreatureSound(Z2SE_EN_KC_CRASH, 0, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_KC_V_CRASH, -1);
|
||||
}
|
||||
|
||||
setBck(7, 0, 10.0f, 1.0f);
|
||||
|
@ -1581,9 +1581,9 @@ void daKago_c::executeAttack() {
|
|||
cLib_chaseF(&field_0x6f8, 30.0f, l_HIO.mDashTimeMultiplier * 3.0f);
|
||||
if (mpMorf->checkFrame(9.0f)) {
|
||||
if (field_0x6e7 == 0) {
|
||||
mSound.startCreatureSound(0x70492, 0, -1);
|
||||
mSound.startCreatureSound(Z2SE_EN_YC_DASH, 0, -1);
|
||||
} else {
|
||||
mSound.startCreatureSound(0x7049b, 0, -1);
|
||||
mSound.startCreatureSound(Z2SE_EN_KC_DASH, 0, -1);
|
||||
}
|
||||
}
|
||||
if (mpMorf->checkFrame(12.0f)) {
|
||||
|
@ -1910,9 +1910,9 @@ bool daKago_c::executePerchDemo() {
|
|||
} else {
|
||||
if (field_0x754 == 0) {
|
||||
if (field_0x6e7 == 1) {
|
||||
mSound.startCreatureVoice(0x705b9, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1);
|
||||
} else {
|
||||
mSound.startCreatureVoice(0x705b8, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1);
|
||||
}
|
||||
field_0x754 = 1;
|
||||
}
|
||||
|
@ -1974,9 +1974,9 @@ bool daKago_c::executePerchDemo() {
|
|||
shape_angle.x = current.angle.x;
|
||||
if (field_0x728 == 1) {
|
||||
if (field_0x6e7 == 1) {
|
||||
mSound.startCreatureVoice(0x705b9, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1);
|
||||
} else {
|
||||
mSound.startCreatureVoice(0x705b8, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -2171,9 +2171,9 @@ bool daKago_c::PerchDemoAwayForward() {
|
|||
|
||||
if (field_0x728 == 0x14 && field_0x744 == 0) {
|
||||
if (field_0x6e7 == 1) {
|
||||
mSound.startCreatureVoice(0x705b9, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1);
|
||||
} else {
|
||||
mSound.startCreatureVoice(0x705b8, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2573,9 +2573,9 @@ bool daKago_c::executeFirstDemo() {
|
|||
|
||||
if (field_0x728 == 0x14) {
|
||||
if (field_0x6e7 == 1) {
|
||||
mSound.startCreatureVoice(0x705b9, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1);
|
||||
} else {
|
||||
mSound.startCreatureVoice(0x705b8, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2766,9 +2766,9 @@ bool daKago_c::executeFirstDemo() {
|
|||
|
||||
if (unkFlag1 != 0) {
|
||||
if (field_0x6e7 == 1) {
|
||||
mSound.startCreatureVoice(0x705b9, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1);
|
||||
} else {
|
||||
mSound.startCreatureVoice(0x705b8, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2857,9 +2857,9 @@ void daKago_c::executeLandingLakeHairia() {
|
|||
case 2:
|
||||
if (field_0x728 == 0x8c) {
|
||||
if (field_0x6e7 == 0x01) {
|
||||
mSound.startCreatureVoice(0x705b9, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1);
|
||||
} else {
|
||||
mSound.startCreatureVoice(0x705b8, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2965,9 +2965,9 @@ void daKago_c::executeLandingLakeHairia() {
|
|||
|
||||
if (field_0x728 == 90) {
|
||||
if (field_0x6e7 == 0x01) {
|
||||
mSound.startCreatureVoice(0x705b9, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1);
|
||||
} else {
|
||||
mSound.startCreatureVoice(0x705b8, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3035,9 +3035,9 @@ void daKago_c::executeLandingBoartHouse() {
|
|||
case 1: {
|
||||
if (field_0x728 == 0x46) {
|
||||
if (field_0x6e7 == 0x01) {
|
||||
mSound.startCreatureVoice(0x705b9, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1);
|
||||
} else {
|
||||
mSound.startCreatureVoice(0x705b8, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3100,9 +3100,9 @@ void daKago_c::executeLandingBoartHouse() {
|
|||
|
||||
if (field_0x728 == 0x50) {
|
||||
if (field_0x6e7 == 0x01) {
|
||||
mSound.startCreatureVoice(0x705b9, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1);
|
||||
} else {
|
||||
mSound.startCreatureVoice(0x705b8, -1);
|
||||
mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3199,9 +3199,9 @@ void daKago_c::moveDemoFly() {
|
|||
cLib_chaseF(&field_0x6f8, 30.0f, l_HIO.mDashTimeMultiplier * 3.0f);
|
||||
if (mpMorf->checkFrame(9.0f)) {
|
||||
if (field_0x6e7 == 0) {
|
||||
mSound.startCreatureSound(0x70492, 0, -1);
|
||||
mSound.startCreatureSound(Z2SE_EN_YC_DASH, 0, -1);
|
||||
} else {
|
||||
mSound.startCreatureSound(0x7049b, 0, -1);
|
||||
mSound.startCreatureSound(Z2SE_EN_KC_DASH, 0, -1);
|
||||
}
|
||||
}
|
||||
if (mpMorf->checkFrame(12.0f)) {
|
||||
|
@ -3448,9 +3448,9 @@ void daKago_c::setSibukiEffect() {
|
|||
}
|
||||
|
||||
if (field_0x6e7 == 0) {
|
||||
mSound.startCreatureSoundLevel(0x70496, 0, -1);
|
||||
mSound.startCreatureSoundLevel(Z2SE_EN_YC_SPLASH, 0, -1);
|
||||
} else {
|
||||
mSound.startCreatureSoundLevel(0x7049c, 0, -1);
|
||||
mSound.startCreatureSoundLevel(Z2SE_EN_KC_SPLASH, 0, -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3477,9 +3477,9 @@ void daKago_c::setWaterFallEffect() {
|
|||
0, 0xff, 0, 0xffffffff, 0, 0, 0);
|
||||
}
|
||||
if (field_0x6e7 == 0) {
|
||||
mSound.startCreatureSoundLevel(0x70496, 0, -1);
|
||||
mSound.startCreatureSoundLevel(Z2SE_EN_YC_SPLASH, 0, -1);
|
||||
} else {
|
||||
mSound.startCreatureSoundLevel(0x7049c, 0, -1);
|
||||
mSound.startCreatureSoundLevel(Z2SE_EN_KC_SPLASH, 0, -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3531,17 +3531,17 @@ void daKago_c::setFlySound() {
|
|||
}
|
||||
} else if (checkBck(12) || checkBck(13)) {
|
||||
if (field_0x6e7 == 0) {
|
||||
mSound.startCreatureSoundLevel(0x70235, 0, -1);
|
||||
mSound.startCreatureSoundLevel(Z2SE_EN_YC_GLIDE, 0, -1);
|
||||
} else {
|
||||
mSound.startCreatureSoundLevel(0x70498, 0, -1);
|
||||
mSound.startCreatureSoundLevel(Z2SE_EN_KC_GLIDE, 0, -1);
|
||||
}
|
||||
}
|
||||
|
||||
if (unkFlag1) {
|
||||
if (field_0x6e7 == 0) {
|
||||
mSound.startCreatureSound(0x70234, 0, -1);
|
||||
mSound.startCreatureSound(Z2SE_EN_YC_WING, 0, -1);
|
||||
} else {
|
||||
mSound.startCreatureSound(0x70497, 0, -1);
|
||||
mSound.startCreatureSound(Z2SE_EN_KC_WING, 0, -1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -140,123 +140,114 @@ int daObjFchain_c::execute() {
|
|||
} else {
|
||||
field_0x588 = 0;
|
||||
}
|
||||
cXyz* local_148 = ¤t.pos;
|
||||
cXyz local_54;
|
||||
cXyz cStack_60;
|
||||
cXyz* sp_38 = ¤t.pos;
|
||||
cXyz sp_12c;
|
||||
cXyz sp_120;
|
||||
if (field_0x586 != 0) {
|
||||
field_0x586--;
|
||||
}
|
||||
cXyz* pcVar12 = field_0x694;
|
||||
cXyz* local_150 = field_0x79c;
|
||||
int i;
|
||||
cXyz* var_r28 = field_0x694;
|
||||
cXyz* sp_30 = field_0x79c;
|
||||
u32 isWolf = daPy_py_c::checkNowWolf();
|
||||
daPy_py_c* player = daPy_getLinkPlayerActorClass();
|
||||
for (int i = 0; i < 22; i++) {
|
||||
local_54 = (*pcVar12 - *local_148) + *local_150;
|
||||
local_54.y += -1.5f;
|
||||
for (i = 0; i < 22; i++, var_r28++, sp_30++) {
|
||||
sp_12c = (*var_r28 - *sp_38) + *sp_30;
|
||||
sp_12c.y += -1.5f;
|
||||
if (dComIfGs_isEventBit(0x510)) {
|
||||
if (isWolf) {
|
||||
checkPlayerFoot(pcVar12, player->getLeftHandPosP(), &local_54);
|
||||
checkPlayerFoot(pcVar12, player->getRightHandPosP(), &local_54);
|
||||
checkPlayerFoot(var_r28, player->getLeftHandPosP(), &sp_12c);
|
||||
checkPlayerFoot(var_r28, player->getRightHandPosP(), &sp_12c);
|
||||
}
|
||||
checkPlayerFoot(pcVar12, player->getLeftFootPosP(), &local_54);
|
||||
checkPlayerFoot(pcVar12, player->getRightFootPosP(), &local_54);
|
||||
checkPlayerFoot(var_r28, player->getLeftFootPosP(), &sp_12c);
|
||||
checkPlayerFoot(var_r28, player->getRightFootPosP(), &sp_12c);
|
||||
}
|
||||
cStack_60 = local_54;
|
||||
local_54.normalizeZP();
|
||||
*pcVar12 = *local_148 + (local_54 * 9.0f);
|
||||
if (pcVar12->y < current.pos.y) {
|
||||
setGroundVec(&cStack_60, current.pos.y - pcVar12->y);
|
||||
*pcVar12 = *local_148 + (cStack_60 * 9.0f);
|
||||
sp_120 = sp_12c;
|
||||
sp_12c.normalizeZP();
|
||||
*var_r28 = *sp_38 + (sp_12c * 9.0f);
|
||||
if (var_r28->y < current.pos.y) {
|
||||
setGroundVec(&sp_120, current.pos.y - var_r28->y);
|
||||
*var_r28 = *sp_38 + (sp_120 * 9.0f);
|
||||
}
|
||||
local_150++;
|
||||
local_148 = pcVar12;
|
||||
pcVar12++;
|
||||
sp_38 = var_r28;
|
||||
}
|
||||
if (isWolf && !dComIfGs_isEventBit(0x510)) {
|
||||
mDoMtx_multVec(
|
||||
player->getModelJointMtx(17), &wolfChainBaseOffset,
|
||||
&field_0x694[21]);
|
||||
cXyz diff = (field_0x694[21] - current.pos);
|
||||
f32 dVar13 = diff.abs();
|
||||
sp_12c = (field_0x694[21] - current.pos);
|
||||
f32 dVar13 = sp_12c.abs();
|
||||
if (dVar13 > 198.0f) {
|
||||
s16 sVar10 = cM_atan2s(-local_54.x, -local_54.z);
|
||||
player->setOutPower(dVar13 - 198.0f, sVar10, 0);
|
||||
player->setOutPower(dVar13 - 198.0f, cM_atan2s(-sp_12c.x, -sp_12c.z), 0);
|
||||
player->onWolfFchainPull();
|
||||
cXyz* pcVar8 = field_0x694;
|
||||
local_148 = ¤t.pos;
|
||||
local_54 *= 9.0f / dVar13;
|
||||
for (int i = 0; pcVar12 = pcVar8, i < 22; i++) {
|
||||
*pcVar8 = *local_148 + local_54;
|
||||
local_148 = pcVar8;
|
||||
pcVar8++;
|
||||
var_r28 = field_0x694;
|
||||
sp_38 = ¤t.pos;
|
||||
sp_12c *= 9.0f / dVar13;
|
||||
for (i = 0; i < 22; i++, var_r28++) {
|
||||
*var_r28 = *sp_38 + sp_12c;
|
||||
sp_38 = var_r28;
|
||||
}
|
||||
field_0x584 = 0;
|
||||
} else {
|
||||
cXyz* pcVar8 = &field_0x694[20];
|
||||
local_150 = &field_0x79c[20];
|
||||
local_148 = pcVar8 + 1;
|
||||
for (int i = 20; i >= 0; i--) {
|
||||
local_54 = (*pcVar8 - *local_148) + *local_150;
|
||||
local_54.y += -1.5f;
|
||||
cStack_60 = local_54;
|
||||
local_54.normalizeZP();
|
||||
*pcVar8 = *local_148 + (local_54 * 9.0f);
|
||||
if (pcVar8->y < current.pos.y) {
|
||||
setGroundVec(&cStack_60, current.pos.y - pcVar8->y);
|
||||
*pcVar8 = *local_148 + (cStack_60 * 9.0f);
|
||||
var_r28 = &field_0x694[20];
|
||||
sp_30 = &field_0x79c[20];
|
||||
sp_38 = var_r28 + 1;
|
||||
for (i = 20; i >= 0; i--, var_r28--, sp_30--) {
|
||||
sp_12c = (*var_r28 - *sp_38) + *sp_30;
|
||||
sp_12c.y += -1.5f;
|
||||
sp_120 = sp_12c;
|
||||
sp_12c.normalizeZP();
|
||||
*var_r28 = *sp_38 + (sp_12c * 9.0f);
|
||||
if (var_r28->y < current.pos.y) {
|
||||
setGroundVec(&sp_120, current.pos.y - var_r28->y);
|
||||
*var_r28 = *sp_38 + (sp_120 * 9.0f);
|
||||
}
|
||||
local_150--;
|
||||
local_148 = pcVar8;
|
||||
pcVar8--;
|
||||
sp_38 = var_r28;
|
||||
}
|
||||
}
|
||||
}
|
||||
local_148 = ¤t.pos;
|
||||
local_150 = field_0x694;
|
||||
cXyz* pcVar8 = field_0x79c;
|
||||
csXyz* local_15c = field_0x8a4;
|
||||
cXyz* local_160 = field_0x58c;
|
||||
s16 local_178 = 0;
|
||||
for (int i = 0; i < 22; i++) {
|
||||
*local_150 = (*pcVar8 - *local_160) * 0.3f;
|
||||
*local_160 = *pcVar8;
|
||||
local_54 = *local_148 - *pcVar8;
|
||||
local_15c->x = local_54.atan2sY_XZ();
|
||||
if (!(local_54.absXZ() < 3.5f)) {
|
||||
local_15c->y = local_54.atan2sX_Z();
|
||||
sp_38 = ¤t.pos;
|
||||
var_r28 = field_0x694;
|
||||
sp_30 = field_0x79c;
|
||||
csXyz* sp_24 = field_0x8a4;
|
||||
cXyz* sp_20 = field_0x58c;
|
||||
s16 sp_08 = 0;
|
||||
for (i = 0; i < 22; i++, var_r28++, sp_30++, sp_24++, sp_20++) {
|
||||
*sp_30 = (*var_r28 - *sp_20) * 0.3f;
|
||||
*sp_20 = *var_r28;
|
||||
sp_12c = *sp_38 - *var_r28;
|
||||
sp_24->x = sp_12c.atan2sY_XZ();
|
||||
if (!(sp_12c.absXZ() < 3.5f)) {
|
||||
sp_24->y = sp_12c.atan2sX_Z();
|
||||
}
|
||||
if (local_150->abs2() > 3.0f && field_0x586 == 0) {
|
||||
if (sp_30->abs2() > 3.0f && field_0x586 == 0) {
|
||||
f32 fVar1;
|
||||
if (cM_rnd() < 0.5f) {
|
||||
fVar1 = 1.0f;
|
||||
} else {
|
||||
fVar1 = -1.0f;
|
||||
}
|
||||
local_15c->z = local_178 + 0x4000 +
|
||||
sp_24->z = sp_08 + 0x4000 +
|
||||
(fVar1 * (cM_rndF(4096.0f) + 1536.0f));
|
||||
if (pcVar8->y <= current.pos.y + 2.0f) {
|
||||
if ((local_15c->z >= 0 && local_15c->z < 0x4000) ||
|
||||
(local_15c->z > -0x7fff && local_15c->z < -0x4000))
|
||||
if (var_r28->y <= current.pos.y + 2.0f) {
|
||||
if ((sp_24->z >= 0 && sp_24->z < 0x4000) ||
|
||||
(sp_24->z > -0x7fff && sp_24->z < -0x4000))
|
||||
{
|
||||
local_15c->z = cM_rndFX(2048.0f) + 4096.0f;
|
||||
sp_24->z = cM_rndFX(2048.0f) + 4096.0f;
|
||||
} else {
|
||||
local_15c->z = cM_rndFX(2048.0f) + -4096.0f;
|
||||
sp_24->z = cM_rndFX(2048.0f) + -4096.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
local_178 = local_15c->z;
|
||||
local_150++;
|
||||
local_15c++;
|
||||
local_160++;
|
||||
local_148 = pcVar8;
|
||||
pcVar8++;
|
||||
sp_08 = sp_24->z;
|
||||
sp_38 = var_r28;
|
||||
}
|
||||
if (field_0x584 == 0) {
|
||||
field_0x584 = 1;
|
||||
local_150 = field_0x79c;
|
||||
sp_30 = field_0x79c;
|
||||
for (int i = 0; i < 22; i++) {
|
||||
*local_150 = cXyz::Zero;
|
||||
local_150++;
|
||||
*sp_30 = cXyz::Zero;
|
||||
sp_30++;
|
||||
}
|
||||
field_0x586 = 5;
|
||||
}
|
||||
|
|
|
@ -194,7 +194,7 @@ int daObjL6Bm_c::CreateHeap() {
|
|||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, BTK_EF_BIMOBEAM_OFF);
|
||||
pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, BTK_EF_BIMOBEAM_0FF);
|
||||
JUT_ASSERT(660, pbtk != 0);
|
||||
#endif
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -89,7 +89,7 @@ void daObjTimer::Act_c::mode_count() {
|
|||
}
|
||||
|
||||
/* 804854BC-804855A4 00039C 00E8+00 1/1 0/0 0/0 .text _execute__Q210daObjTimer5Act_cFv */
|
||||
int daObjTimer::Act_c::_execute() {
|
||||
bool daObjTimer::Act_c::_execute() {
|
||||
static daObjTimer::Act_c::modeProc const mode_proc[2] = {
|
||||
&daObjTimer::Act_c::mode_wait,
|
||||
&daObjTimer::Act_c::mode_count,
|
||||
|
@ -97,10 +97,10 @@ int daObjTimer::Act_c::_execute() {
|
|||
|
||||
if (fopAcM_isSwitch(this, prm_get_sw2Save())) {
|
||||
fopAcM_delete(this);
|
||||
return 1;
|
||||
return true;
|
||||
} else {
|
||||
(this->*mode_proc[field_0x568])();
|
||||
return 1;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -136,8 +136,8 @@ namespace {
|
|||
(process_method_func)Mthd_Create,
|
||||
(process_method_func)Mthd_Delete,
|
||||
(process_method_func)Mthd_Execute,
|
||||
(process_method_func)Mthd_Draw,
|
||||
(process_method_func)Mthd_IsDelete,
|
||||
(process_method_func)Mthd_Draw,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -83,7 +83,7 @@ int daTagWljump_c::execute() {
|
|||
if (!midna->checkShadowModeTalkWait()) {
|
||||
if (shape_angle.x != 0 && (field_0x571 == 0xff || !fopAcM_isSwitch(this, field_0x571))) {
|
||||
if (field_0x56f == 0) {
|
||||
mMsgFlow.init(this, shape_angle.x & 0xFFFF, 0, NULL);
|
||||
mMsgFlow.init(this, (u16)shape_angle.x, 0, NULL);
|
||||
field_0x56f = 1;
|
||||
mDoAud_seStart(Z2SE_NAVI_TALK_START, NULL, 0, 0);
|
||||
} else {
|
||||
|
@ -207,7 +207,11 @@ int daTagWljump_c::execute() {
|
|||
field_0x570 = field_0x568;
|
||||
field_0x568 = -1;
|
||||
} else {
|
||||
#if DEBUG
|
||||
attention_info.flags |= 0x801;
|
||||
#else
|
||||
attention_info.flags |= 0x81;
|
||||
#endif
|
||||
}
|
||||
} else {
|
||||
field_0x572 = 0;
|
||||
|
|
Loading…
Reference in New Issue