Compare commits

...

9 Commits

Author SHA1 Message Date
hatal175 3351ee3c5e
Merge 351c8de752 into aeed67dcf5 2025-07-24 20:08:15 +03:00
Carco_21 aeed67dcf5
d_a_e_bug equivalent (#2540)
* Tiny work

* d_a_e_bug equivalent

* took out unnecessary include

* fixed broken match

* PR cleanup

* OS_REPORT fixed

---------

Co-authored-by: hatal175 <hatal175@users.noreply.github.com>
2025-07-24 20:05:32 +03:00
hatal175 351c8de752 Deleted automatic ctor and dtor 2025-07-24 18:27:22 +03:00
Max Roncace 7d6c8ef3e5
d_a_e_kr equivalent (#2549) 2025-07-24 09:13:55 +03:00
Stbn-antier c5584cc6c0
Matching d_a_obj_poFire (#2551)
* Matching daPoFire

* Adressed comments
2025-07-23 17:03:44 +03:00
Max Roncace 295cc46d34
Fix sound IDs in d_a_kago (#2550) 2025-07-23 10:52:59 +03:00
Carco_21 7d4ec88f56
d_a_e_zh almost equivalent (#2548)
* work on create function

* a bit more work

* almost all functions worked on

* All functions worked on and enums added

* Fixed header brief

* Can't figure out the last three small issues
2025-07-22 23:55:54 +03:00
TakaRikka ea1c649eb1
ebu equivalent (#2547) 2025-07-22 15:28:42 +03:00
Max Roncace d528862dd0
d_a_obj_tobyhouse equivalent (#2546) (#2543)
Co-authored-by: hatal175 <hatal175@users.noreply.github.com>
2025-07-22 15:22:58 +03:00
33 changed files with 7670 additions and 5476 deletions

View File

@ -45,4 +45,5 @@
"--function-arg-placeholders=0",
"-header-insertion=never",
],
"clangd.detectExtensionConflicts": true,
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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,8 +1655,8 @@ 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(NonMatching, "d_a_e_bug"),
ActorRel(Equivalent, "d_a_e_bu"),
ActorRel(Equivalent, "d_a_e_bug"), # weak func order
ActorRel(Equivalent, "d_a_e_cr"), # weak func order
ActorRel(MatchingFor("GZ2E01"), "d_a_e_cr_egg"),
ActorRel(NonMatching, "d_a_e_db"),
@ -1683,7 +1683,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01"), "d_a_e_is"),
ActorRel(Equivalent, "d_a_e_kg"),
ActorRel(Equivalent, "d_a_e_kk"), # weak func order
ActorRel(NonMatching, "d_a_e_kr"),
ActorRel(Equivalent, "d_a_e_kr"), # weak func order
ActorRel(MatchingFor("GZ2E01"), "d_a_e_mb"),
ActorRel(MatchingFor("GZ2E01"), "d_a_e_md"),
ActorRel(Equivalent, "d_a_e_mf"),
@ -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"),

View File

@ -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;
};

View File

@ -11,22 +11,63 @@
* @details
*
*/
class e_bug_class : public fopEn_enemy_c {
private:
/* 0x5ac */ u8 field_0x5ac[0x7db0 - 0x5ac];
struct bug_s {
/* 0x00 */ J3DModel* field_0x0;
/* 0x04 */ J3DModel* field_0x4;
/* 0x08 */ int field_0x8;
/* 0x0C */ cXyz field_0xc;
/* 0x18 */ cXyz field_0x18;
/* 0x24 */ f32 field_0x24;
/* 0x28 */ f32 field_0x28;
/* 0x2C */ f32 field_0x2c;
/* 0x30 */ cXyz field_0x30;
/* 0x3C */ csXyz field_0x3c;
/* 0x42 */ s16 field_0x42;
/* 0x44 */ s16 field_0x44;
/* 0x46 */ s16 field_0x46;
/* 0x48 */ s16 field_0x48;
/* 0x4A */ s16 field_0x4a;
/* 0x4C */ s16 field_0x4c;
/* 0x4E */ s16 field_0x4e;
/* 0x50 */ s8 field_0x50;
/* 0x51 */ s8 field_0x51;
/* 0x52 */ s8 field_0x52;
/* 0x53 */ u8 field_0x53;
/* 0x54 */ u8 field_0x54[3];
/* 0x58 */ Z2SoundObjSimple mSound;
};
STATIC_ASSERT(sizeof(bug_s) == 0x78);
class e_bug_class {
public:
/* 0x0000 */ fopAc_ac_c actor;
/* 0x0568 */ request_of_phase_process_class mPhase;
/* 0x0570 */ u8 field_0x570;
/* 0x0574 */ int bitSw;
/* 0x0578 */ u32 field_0x578;
/* 0x057C */ f32 field_0x57c;
/* 0x0580 */ s16 field_0x580;
/* 0x0582 */ u8 field_0x582[0x588 - 0x582];
/* 0x0588 */ bug_s Bug_s[256];
/* 0x7D88 */ int bug_num;
/* 0x7D8C */ Z2SoundObjBeeGroup mSound;
/* 0x7DAC */ u8 field_0x7dac;
/* 0x7DAD */ u8 field_0x7dad;
};
STATIC_ASSERT(sizeof(e_bug_class) == 0x7db0);
class daE_Bug_HIO_c {
class daE_Bug_HIO_c: public JORReflexible {
public:
/* 80694B8C */ daE_Bug_HIO_c();
/* 80697BEC */ ~daE_Bug_HIO_c();
};
/* 80697BEC */ virtual ~daE_Bug_HIO_c() {}
struct bug_s {
/* 80697B4C */ ~bug_s();
/* 80697BB8 */ bug_s();
};
void genMessage(JORMContext*);
/* 0x4 */ s8 field_0x4;
/* 0x8 */ f32 field_0x8;
/* 0xC */ f32 field_0xc;
};
#endif /* D_A_E_BUG_H */

View File

@ -1,26 +1,197 @@
#ifndef D_A_E_KR_H
#define D_A_E_KR_H
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"
#include "d/d_path.h"
#include "f_op/f_op_actor_mng.h"
/**
* @ingroup actors-enemies
* @class e_kr_class
* @brief Kargorok
*
* @details
*
*
* @details
*
*/
class e_kr_class : public fopEn_enemy_c {
class e_kr_class {
public:
/* 80705004 */ e_kr_class();
private:
/* 0x5ac */ u8 field_0x5ac[0xf08 - 0x5ac];
/* 0x000 */ fopEn_enemy_c enemy;
/* 0x5AC */ request_of_phase_process_class mPhase;
/* 0x5B4 */ mDoExt_McaMorfSO* mpMorf;
/* 0x5B8 */ s32 field_0x5b8;
/* 0x5BC */ s32 field_0x5bc;
/* 0x5C0 */ Z2CreatureEnemy mSound;
/* 0x664 */ u8 field_0x664;
/* 0x665 */ u8 field_0x665;
/* 0x666 */ u8 field_0x666;
/* 0x666 */ u8 field_0x667;
/* 0x668 */ s16 mCurAction;
/* 0x66A */ u8 field_0x66a;
/* 0x66B */ u8 field_0x66b;
/* 0x66C */ fpc_ProcID mBombId;
/* 0x670 */ s8 field_0x670;
/* 0x672 */ s16 field_0x672;
/* 0x674 */ u8 field_0x674;
/* 0x678 */ cXyz field_0x678;
/* 0x684 */ f32 field_0x684;
/* 0x688 */ f32 field_0x688;
/* 0x68C */ f32 field_0x68c;
/* 0x690 */ f32 field_0x690;
/* 0x694 */ f32 field_0x694;
/* 0x698 */ u8 field_0x698[0x69c - 0x698];
/* 0x69C */ s16 field_0x69c[6];
/* 0x6A8 */ s16 field_0x6a8;
/* 0x6AA */ s16 field_0x6aa;
/* 0x6AC */ u8 field_0x6ac[0x6b4 - 0x6ac];
/* 0x6B4 */ f32 field_0x6b4;
/* 0x6B8 */ f32 field_0x6b8;
/* 0x6BC */ s16 field_0x6bc;
/* 0x6BE */ u8 field_0x6be[0x6c0 - 0x6be];
/* 0x6C0 */ s16 field_0x6c0;
/* 0x6C2 */ s16 field_0x6c2;
/* 0x6C4 */ f32 field_0x6c4;
/* 0x6C8 */ s16 field_0x6c8;
/* 0x6CA */ s16 field_0x6ca;
/* 0x6CC */ s16 field_0x6cc;
/* 0x6D0 */ f32 field_0x6d0;
/* 0x6D4 */ s16 field_0x6d4;
/* 0x6D6 */ s16 field_0x6d6;
/* 0x6D8 */ s16 field_0x6d8;
/* 0x6DA */ u8 field_0x6da[0x6de - 0x6da];
/* 0x6DE */ s16 field_0x6de;
/* 0x6E0 */ u8 field_0x6e0[0x6e1 - 0x6e0];
/* 0x6E1 */ s8 field_0x6e1;
/* 0x6E2 */ s8 field_0x6e2;
/* 0x6E3 */ s8 field_0x6e3;
/* 0x6E4 */ dPath* field_0x6e4;
/* 0x6E8 */ u8 field_0x6e8[0x6ea - 0x6e8];
/* 0x6EC */ csXyz field_0x6ea;
/* 0x6F2 */ csXyz field_0x6f0;
/* 0x6EA */ s16 field_0x6f6;
/* 0x6F8 */ cXyz field_0x6f8;
/* 0x704 */ dBgS_AcchCir mAcchCir;
/* 0x744 */ dBgS_ObjAcch mAcch;
/* 0x91C */ bool field_0x91c;
/* 0x920 */ f32 field_0x920;
/* 0x924 */ dCcD_Stts mStts;
/* 0x960 */ dCcD_Sph mSphere1;
/* 0xA98 */ dCcD_Sph mSphere2;
/* 0xBD0 */ dCcD_Sph mSphere3;
/* 0xD08 */ dCcD_Sph mSphere4;
/* 0xE40 */ dCcU_AtInfo mAtInfo;
/* 0xE64 */ cXyz field_0xe64[2];
/* 0xE7C */ s16 field_0xe7c;
/* 0xE7E */ s16 field_0xe7e;
/* 0xE80 */ s16 field_0xe80;
/* 0xE82 */ s16 field_0xe82;
/* 0xE84 */ s16 field_0xe84;
/* 0xE88 */ JAISoundID field_0xe88;
/* 0xE8C */ u8 field_0xe8c;
/* 0xE8E */ s16 field_0xe8e[11];
/* 0xEA4 */ u8 field_0xea4[0xea8 - 0xea4];
/* 0xEA8 */ f32 field_0xea8;
/* 0xEAC */ s16 field_0xeac;
/* 0xEAE */ s16 field_0xeae;
/* 0xEB0 */ s16 field_0xeb0;
/* 0xEB2 */ s16 field_0xeb2;
/* 0xEB4 */ s16 field_0xeb4;
/* 0xEB6 */ s16 field_0xeb6;
/* 0xEB8 */ f32 field_0xeb8;
/* 0xEBC */ s16 field_0xebc;
/* 0xEBE */ s16 field_0xebe;
/* 0xEC0 */ s8 field_0xec0;
/* 0xEC4 */ u32 field_0xec4[5];
/* 0xED8 */ u32 field_0xed8[5];
/* 0xEDC */ u8 field_0xedc[0xef8 - 0xeec];
/* 0xEF8 */ f32 field_0xef8;
/* 0xEFC */ s8 field_0xefc;
/* 0xF00 */ s32 field_0xf00;
/* 0xF04 */ s32 field_0xf04;
};
STATIC_ASSERT(sizeof(e_kr_class) == 0xf08);
class e_krHIO_c {
/* 80705574 */ ~e_krHIO_c();
class e_krHIO_c : public fOpAcm_HIO_entry_c {
public:
e_krHIO_c() {
field_0x4 = 0;
field_0x5 = 0;
field_0x8 = 20.0f;
field_0xc = 2500.0f;
field_0x14 = 1.0f;
field_0x18 = 2000;
field_0x1a = 2500;
field_0x1c = 2000;
field_0x1e = 2500;
field_0x20 = 0.35f;
field_0x24 = 0.5f;
field_0x28 = 1.0f;
field_0x2c = 1.0f;
field_0x30 = 1.0f;
field_0x38 = 1.0f;
field_0x3c = 1.0f;
field_0x40 = 30;
field_0x44 = 1.0f;
field_0x48 = 1.0f;
field_0x4c = 1.5f;
field_0x50 = 1100;
field_0x54 = 3.5f;
field_0x34 = 60;
field_0x58 = 60.0f;
field_0x5c = 40.0f;
field_0x60 = 1;
field_0x64 = 8000.0f;
field_0x70 = 3000.0f;
field_0x6c = 20000;
field_0x68 = 1500.0f;
field_0x74 = 2000.0f;
field_0x6e = 20000;
field_0x78 = -40.0f;
}
/* 80705574 */ virtual ~e_krHIO_c() {}
void genMessage(JORMContext*);
/* 0x04 */ u8 field_0x4;
/* 0x05 */ u8 field_0x5;
/* 0x06 */ u8 field_0x6;
/* 0x08 */ f32 field_0x8;
/* 0x0C */ f32 field_0xc;
/* 0x10 */ u8 field_0x10[0x14 - 0x10];
/* 0x14 */ f32 field_0x14;
/* 0x18 */ s16 field_0x18;
/* 0x1A */ s16 field_0x1a;
/* 0x1C */ s16 field_0x1c;
/* 0x1E */ s16 field_0x1e;
/* 0x20 */ f32 field_0x20;
/* 0x24 */ f32 field_0x24;
/* 0x28 */ f32 field_0x28;
/* 0x2C */ f32 field_0x2c;
/* 0x30 */ f32 field_0x30;
/* 0x34 */ s16 field_0x34;
/* 0x38 */ f32 field_0x38;
/* 0x3C */ f32 field_0x3c;
/* 0x40 */ s16 field_0x40;
/* 0x44 */ f32 field_0x44;
/* 0x48 */ f32 field_0x48;
/* 0x4C */ f32 field_0x4c;
/* 0x50 */ s16 field_0x50;
/* 0x54 */ f32 field_0x54;
/* 0x58 */ f32 field_0x58;
/* 0x5C */ f32 field_0x5c;
/* 0x60 */ s16 field_0x60;
/* 0x64 */ f32 field_0x64;
/* 0x68 */ f32 field_0x68;
/* 0x6C */ s16 field_0x6c;
/* 0x6E */ s16 field_0x6e;
/* 0x70 */ f32 field_0x70;
/* 0x74 */ f32 field_0x74;
/* 0x78 */ f32 field_0x78;
};
STATIC_ASSERT(sizeof(e_krHIO_c) == 0x7c);
#endif /* D_A_E_KR_H */

View File

@ -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; // ダンジョンビットチェックONOFF (Dungeon Bit Check ON/OFF)
};
#endif /* D_A_E_ZH_H */

View File

@ -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;
};

View File

@ -76,7 +76,7 @@ public:
/* 804CAEE8 */ int execute();
/* 804CBC60 */ int draw();
virtual BOOL checkExplodeNow() { return field_0xb51 != 0; }
virtual u8 checkExplodeNow() { return field_0xb51 != 0; }
virtual void deleteBombAndEffect() {
fopAcM_delete(this);
onStateFlg0(FLG0_UNK_40);

View File

@ -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;

View File

@ -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);

View File

@ -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 */

View File

@ -6,9 +6,6 @@
struct tg_ss {
public:
/* 80D083C0 */ ~tg_ss() {}
/* 80D08494 */ tg_ss() {}
/* 0x000 */ J3DModel* mModel;
/* 0x004 */ cXyz mPos;
/* 0x010 */ cXyz mScale;

View File

@ -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);

View File

@ -5,9 +5,6 @@
struct yuka_s {
public:
/* 80D154F4 */ ~yuka_s() {}
/* 80D15530 */ yuka_s() {}
/* 0x00 */ J3DModel* mModel1;
/* 0x04 */ J3DModel* mModel2;
/* 0x08 */ cXyz mPos;

View File

@ -1214,6 +1214,12 @@ public:
BOOL checkSumouPunchStagger() const { return mSpecialMode == 0x1F; }
BOOL checkSumouTackleStagger() const { return mSpecialMode == 0x20; }
BOOL checkSumouGraspRelease() const { return mSpecialMode == 0x23; }
void onHeavyState() { onNoResetFlg0(FLG0_UNK_40000000); }
void onHeavyStateMidnaPanic() {
onHeavyState();
onEndResetFlg1(ERFLG1_UNK_40000);
}
};
int daPy_addCalcShort(s16* param_0, s16 param_1, s16 param_2, s16 param_3, s16 param_4);

View File

@ -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;

View File

@ -32,7 +32,7 @@ public:
static bool checkWaterBomb(fopAc_ac_c*);
static bool checkInsectBombMove(fopAc_ac_c*);
virtual BOOL checkExplodeNow() { return FALSE; }
virtual u8 checkExplodeNow() { return false; }
virtual void deleteBombAndEffect() {}
virtual void setCargoBombExplode() {}
@ -83,6 +83,11 @@ public:
return (fopAc_ac_c*)fopAcM_fastCreate(PROC_NBOMB, 16, i_pos, i_roomNo, i_angle, NULL, -1,
NULL, NULL);
}
static fopAc_ac_c* createBombCargoCarry(cXyz* i_pos, csXyz* i_angle, int i_roomNo) {
return (fopAc_ac_c*)fopAcM_fastCreate(PROC_NBOMB, 0x11, i_pos, i_roomNo, i_angle, NULL, -1,
NULL, NULL);
}
};
#endif /* D_D_BOMB_H */

View File

@ -263,7 +263,7 @@ public:
bool checkHeadLockFlg() const { return mFlags & 0x80; }
bool checkWolfBiteDamage() const { return mFlags & 0x40; }
bool checkWolfDownPullFlg() const { return mFlags & 0x10; }
bool checkDownFlg() const { return mFlags & 0x1; }
bool checkDownFlg() { return mFlags & 0x1; }
bool checkCutDownHitFlg() const { return mFlags & 0x2; }
bool checkWolfDownStartFlg() const { return mFlags & 0x4; }
bool checkDeadFlg() const { return mFlags & 0x8; }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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,

View File

@ -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);
}
}
}

View File

@ -140,123 +140,114 @@ int daObjFchain_c::execute() {
} else {
field_0x588 = 0;
}
cXyz* local_148 = &current.pos;
cXyz local_54;
cXyz cStack_60;
cXyz* sp_38 = &current.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 = &current.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 = &current.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 = &current.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 = &current.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;
}

View File

@ -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

View File

@ -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,
};
}

View File

@ -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;