Compare commits

...

4 Commits

Author SHA1 Message Date
Max Roncace 7cba5ad766
Miscellaneous match improvements 2025-07-30 20:41:54 -04:00
Stbn-antier c32789eb60
d_a_bd Matching (#2560)
* Matching daPoFire

* Adressed comments

* Matching text

* Some cleanup

* Adressed review comments, added CUT_TYPE_NONE in cut type enum
2025-07-30 20:27:05 +03:00
YunataSavior ec9e4cf268
d_a_e_sb Matching (#2559)
* d_a_e_sb 50% complete

* d_a_e_sb 71% done

* d_a_e_sb matching

* address PR comments
2025-07-30 20:26:19 +03:00
TakaRikka 2b873ea144
kbrg/obrg done (#2558)
* kbrg done

* obrg done

* cleanup
2025-07-30 20:25:42 +03:00
30 changed files with 4089 additions and 3916 deletions

View File

@ -131,7 +131,7 @@ __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:globa
@1012 = .bss:0x0000003C; // type:object size:0x1 scope:local
@1010 = .bss:0x00000040; // type:object size:0x1 scope:local
@1009 = .bss:0x00000044; // type:object size:0x1 scope:local
lbl_60_bss_45 = .bss:0x00000045; // type:object size:0x1 data:byte
l_HIOInit = .bss:0x00000045; // type:object size:0x1 data:byte
@3937 = .bss:0x00000048; // type:object size:0xC scope:local
l_HIO = .bss:0x00000054; // type:object size:0x20 scope:global data:byte
@3946 = .bss:0x00000074; // type:object size:0xC scope:local

View File

@ -5,17 +5,17 @@ __register_global_object = .text:0x00000078; // type:function size:0x1C scope:gl
__destroy_global_chain = .text:0x00000094; // type:function size:0x58 scope:global
__ct__12daE_SB_HIO_cFv = .text:0x000000EC; // type:function size:0x8C scope:global
CreateHeap__8daE_SB_cFv = .text:0x00000178; // type:function size:0xF8 scope:global
useHeapInit__FP10fopAc_ac_c = .text:0x00000270; // type:function size:0x20 scope:global
useHeapInit__FP10fopAc_ac_c = .text:0x00000270; // type:function size:0x20 scope:local
initCcCylinder__8daE_SB_cFv = .text:0x00000290; // type:function size:0x60 scope:global
setCcCylinder__8daE_SB_cFv = .text:0x000002F0; // type:function size:0x48 scope:global
ctrlJoint__8daE_SB_cFP8J3DJointP8J3DModel = .text:0x00000338; // type:function size:0xF8 scope:global
JointCallBack__FP8J3DJointi = .text:0x00000430; // type:function size:0x4C scope:global
JointCallBack__FP8J3DJointi = .text:0x00000430; // type:function size:0x4C scope:local
Particle_Set__8daE_SB_cFUs = .text:0x0000047C; // type:function size:0x70 scope:global
SetAnm__8daE_SB_cFiiff = .text:0x000004EC; // type:function size:0xAC scope:global
MemberClear__8daE_SB_cFv = .text:0x00000598; // type:function size:0x5C scope:global
other_bg_check__FP8daE_SB_cP10fopAc_ac_c = .text:0x000005F4; // type:function size:0xD8 scope:global
s_obj_sub__FPvPv = .text:0x000006CC; // type:function size:0x108 scope:global
s_bomb_sub__FPvPv = .text:0x000007D4; // type:function size:0xA0 scope:global
s_obj_sub__FPvPv = .text:0x000006CC; // type:function size:0x108 scope:local
s_bomb_sub__FPvPv = .text:0x000007D4; // type:function size:0xA0 scope:local
Shield_Motion__8daE_SB_cFv = .text:0x00000874; // type:function size:0x15C scope:global
AttackStop__8daE_SB_cFv = .text:0x000009D0; // type:function size:0x50 scope:global
AttackSetSP__8daE_SB_cFv = .text:0x00000A20; // type:function size:0x200 scope:global
@ -50,16 +50,16 @@ Execute__8daE_SB_cFv = .text:0x00002E30; // type:function size:0x12C scope:globa
Draw__8daE_SB_cFv = .text:0x00002F5C; // type:function size:0x11C scope:global
Delete__8daE_SB_cFv = .text:0x00003078; // type:function size:0x68 scope:global
setBaseMtx__8daE_SB_cFv = .text:0x000030E0; // type:function size:0x78 scope:global
daE_SB_Draw__FP8daE_SB_c = .text:0x00003158; // type:function size:0x20 scope:global
daE_SB_Execute__FP8daE_SB_c = .text:0x00003178; // type:function size:0x20 scope:global
daE_SB_IsDelete__FP8daE_SB_c = .text:0x00003198; // type:function size:0x8 scope:global
daE_SB_Delete__FP8daE_SB_c = .text:0x000031A0; // type:function size:0x20 scope:global
daE_SB_Draw__FP8daE_SB_c = .text:0x00003158; // type:function size:0x20 scope:local
daE_SB_Execute__FP8daE_SB_c = .text:0x00003178; // type:function size:0x20 scope:local
daE_SB_IsDelete__FP8daE_SB_c = .text:0x00003198; // type:function size:0x8 scope:local
daE_SB_Delete__FP8daE_SB_c = .text:0x000031A0; // type:function size:0x20 scope:local
Create__8daE_SB_cFv = .text:0x000031C0; // type:function size:0x438 scope:global
__dt__8cM3dGCylFv = .text:0x000035F8; // type:function size:0x48 scope:global
__dt__8cM3dGSphFv = .text:0x00003640; // type:function size:0x48 scope:global
__dt__8cM3dGAabFv = .text:0x00003688; // type:function size:0x48 scope:global
__dt__12dBgS_ObjAcchFv = .text:0x000036D0; // type:function size:0x70 scope:global
daE_SB_Create__FP10fopAc_ac_c = .text:0x00003740; // type:function size:0x20 scope:global
daE_SB_Create__FP10fopAc_ac_c = .text:0x00003740; // type:function size:0x20 scope:local
__dt__12daE_SB_HIO_cFv = .text:0x00003760; // type:function size:0x48 scope:global
__sinit_d_a_e_sb_cpp = .text:0x000037A8; // type:function size:0x3C scope:local
@36@__dt__12dBgS_ObjAcchFv = .text:0x000037E4; // type:function size:0x8 scope:local
@ -111,7 +111,7 @@ ccCylSrc$3693 = .rodata:0x0000002C; // type:object size:0x44 scope:local
@4739 = .rodata:0x000000F8; // type:object size:0x4 scope:local
@stringBase0 = .rodata:0x000000FC; // type:object size:0x5 scope:local data:string_table
@4468 = .data:0x00000000; // type:object size:0x1C scope:local
l_daE_SB_Method = .data:0x0000001C; // type:object size:0x20 scope:global
l_daE_SB_Method = .data:0x0000001C; // type:object size:0x20 scope:local
g_profile_E_SB = .data:0x0000003C; // type:object size:0x30 scope:global
__vt__8cM3dGCyl = .data:0x0000006C; // type:object size:0xC scope:global
__vt__8cM3dGSph = .data:0x00000078; // type:object size:0xC scope:global
@ -136,12 +136,12 @@ __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:globa
@1012 = .bss:0x0000003C; // type:object size:0x1 scope:local
@1010 = .bss:0x00000040; // type:object size:0x1 scope:local
@1009 = .bss:0x00000044; // type:object size:0x1 scope:local
lbl_227_bss_45 = .bss:0x00000045; // type:object size:0x1 data:byte
l_HIOInit = .bss:0x00000045; // type:object size:0x1 scope:local data:byte
@3653 = .bss:0x00000048; // type:object size:0xC scope:local
l_HIO = .bss:0x00000054; // type:object size:0x40 scope:global data:byte
s_Bomb__22@unnamed@d_a_e_sb_cpp@ = .bss:0x00000094; // type:object size:0x4 scope:global data:4byte
s_TargetAngle__22@unnamed@d_a_e_sb_cpp@ = .bss:0x00000098; // type:object size:0x2 scope:global data:2byte
s_LinkPos__22@unnamed@d_a_e_sb_cpp@ = .bss:0x0000009C; // type:object size:0x4 scope:global data:4byte
l_HIO = .bss:0x00000054; // type:object size:0x40 scope:local data:byte
s_Bomb__22@unnamed@d_a_e_sb_cpp@ = .bss:0x00000094; // type:object size:0x4 scope:local data:4byte
s_TargetAngle__22@unnamed@d_a_e_sb_cpp@ = .bss:0x00000098; // type:object size:0x2 scope:local data:2byte
s_LinkPos__22@unnamed@d_a_e_sb_cpp@ = .bss:0x0000009C; // type:object size:0x4 scope:local data:4byte
sInstance__40JASGlobalInstance<19JASDefaultBankTable> = .bss:0x000000A0; // type:object size:0x4 scope:global
sInstance__35JASGlobalInstance<14JASAudioThread> = .bss:0x000000A4; // type:object size:0x4 scope:global
sInstance__27JASGlobalInstance<7Z2SeMgr> = .bss:0x000000A8; // type:object size:0x4 scope:global

View File

@ -131,7 +131,7 @@ __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:globa
@1012 = .bss:0x0000003C; // type:object size:0x1 scope:local
@1010 = .bss:0x00000040; // type:object size:0x1 scope:local
@1009 = .bss:0x00000044; // type:object size:0x1 scope:local
lbl_60_bss_45 = .bss:0x00000045; // type:object size:0x1 data:byte
l_HIOInit = .bss:0x00000045; // type:object size:0x1 data:byte
@3937 = .bss:0x00000048; // type:object size:0xC scope:local
l_HIO = .bss:0x00000054; // type:object size:0x20 scope:global data:byte
@3946 = .bss:0x00000074; // type:object size:0xC scope:local

View File

@ -147,7 +147,7 @@ lbl_58_data_4B0 = .data:0x000004B0; // type:object size:0x24
@122173 = .data:0x00000698; // type:object size:0xC scope:local
@122174 = .data:0x000006BC; // type:object size:0x11 scope:local data:string
@122175 = .data:0x000006E4; // type:object size:0xD scope:local data:string
lbl_58_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte
l_HIOInit = .bss:0x00000000; // type:object size:0x1 data:byte
l_HIO = .bss:0x00000008; // type:object size:0x20 scope:global data:byte
land_sp_pos = .bss:0x00000028; // type:object size:0x30 scope:global
rope_pt = .bss:0x00000058; // type:object size:0x4 scope:global data:4byte

View File

@ -1537,7 +1537,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01"), "d_a_tag_attention"),
ActorRel(MatchingFor("GZ2E01"), "d_a_alldie"),
ActorRel(MatchingFor("GZ2E01"), "d_a_andsw2"),
ActorRel(NonMatching, "d_a_bd"),
ActorRel(Equivalent, "d_a_bd"), # weak func order
ActorRel(MatchingFor("GZ2E01"), "d_a_canoe"),
ActorRel(MatchingFor("GZ2E01"), "d_a_cstaF"),
ActorRel(MatchingFor("GZ2E01"), "d_a_demo_item"),
@ -1704,7 +1704,7 @@ config.libs = [
ActorRel(Equivalent, "d_a_e_rdb"), # weak func order
ActorRel(Equivalent, "d_a_e_rdy"), # weak func order
ActorRel(NonMatching, "d_a_e_s1"),
ActorRel(NonMatching, "d_a_e_sb"),
ActorRel(MatchingFor("GZ2E01"), "d_a_e_sb"),
ActorRel(NonMatching, "d_a_e_sf"),
ActorRel(MatchingFor("GZ2E01"), "d_a_e_sg"),
ActorRel(NonMatching, "d_a_e_sh"),
@ -1863,7 +1863,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_npc_ykm"),
ActorRel(NonMatching, "d_a_npc_ykw"),
ActorRel(NonMatching, "d_a_npc_zanb"),
ActorRel(NonMatching, "d_a_npc_zant"),
ActorRel(Equivalent, "d_a_npc_zant"), # weak func order
ActorRel(NonMatching, "d_a_npc_zelR"),
ActorRel(NonMatching, "d_a_npc_zelRo"),
ActorRel(Equivalent, "d_a_npc_zelda"), # weak function order
@ -2029,7 +2029,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_obj_lv6Tenbin"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_lv6TogeRoll"),
ActorRel(NonMatching, "d_a_obj_lv6TogeTrap"),
ActorRel(NonMatching, "d_a_obj_lv6bemos"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_lv6bemos"),
ActorRel(NonMatching, "d_a_obj_lv6bemos2"),
ActorRel(NonMatching, "d_a_obj_lv6egate"),
ActorRel(NonMatching, "d_a_obj_lv6elevta"),
@ -2154,8 +2154,8 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_vground"),
ActorRel(NonMatching, "d_a_obj_volcball"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_volcbom"),
ActorRel(NonMatching, "d_a_obj_warp_kbrg"),
ActorRel(NonMatching, "d_a_obj_warp_obrg"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_warp_kbrg"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_warp_obrg"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_waterGate"),
ActorRel(Equivalent, "d_a_obj_waterPillar"), # vtable order
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_waterfall"),

View File

@ -1,6 +1,8 @@
#ifndef D_A_BD_H
#define D_A_BD_H
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
#include "f_op/f_op_actor_mng.h"
/**
@ -11,18 +13,95 @@
* @details Used by birds that sit on Coro's head.
*
*/
class bd_class : public fopEn_enemy_c {
private:
/* 0x5ac */ u8 field_0x5ac[0x9ec - 0x5ac];
enum da_BD_ANM {
ANM_FLY = 5,
ANM_KAKKU,
ANM_KAKKU1,
ANM_PITA_DOWN,
ANM_PITA_LEFTUP,
ANM_PITA_RIGHT,
ANM_PYON,
};
enum Action_bd {
ACT_GROUND = 0,
ACT_FLY = 1,
ACT_DROP = 2,
ACT_LANDING = 3,
ACT_LANDING2 = 4,
ACT_LANDING3 = 5,
ACT_ROPE = 6,
ACT_KKRI = 7,
};
class bd_class {
public:
/* 0x000 */ fopEn_enemy_c enemy;
/* 0x5AC */ request_of_phase_process_class mPhase;
/* 0x5B4 */ u8 field_0x5B4;
/* 0x5B5 */ u8 field_0x5B5;
/* 0x5B6 */ u8 field_0x5B6;
/* 0x5B7 */ u8 field_0x5B7;
/* 0x5B8 */ u8 field_0x5B8;
/* 0x5B9 */ u8 field_0x5B9;
/* 0x5B8 */ char pad5B8[0x8]; // Padding
/* 0x5C2 */ s8 field_0x5C2;
/* 0x5C4 */ cXyz field_0x5C4;
/* 0x5D0 */ s16 mTargetAngleY;
/* 0x5D4 */ actor_place* field_0x5D4;
/* 0x5D8 */ s16 field_0x5D8;
/* 0x5DC */ f32 field_0x5DC;
/* 0x5E0 */ f32 field_0x5E0;
/* 0x5E4 */ mDoExt_McaMorf* mpMorf;
/* 0x5E8 */ mDoExt_btkAnm* mpBtk;
/* 0x5EC */ s8 field_0x5EC;
/* 0x5F0 */ s32 mAnmID;
/* 0x5F4 */ s16 mChirpDist;
/* 0x5F8 */ Z2SoundObjSimple mSound;
/* 0x618 */ s16 field_0x618;
/* 0x61A */ s16 mActionID;
/* 0x61C */ s16 field_0x61C;
/* 0x61E */ s16 field_0x61E;
/* 0x620 */ f32 field_0x620;
/* 0x624 */ f32 field_0x624;
/* 0x628 */ s16 field_0x628;
/* 0x62C */ cXyz* field_0x62C;
/* 0x630 */ int field_0x630;
/* 0x634 */ cXyz field_0x634;
/* 0x640 */ s16 field_0x640;
/* 0x642 */ s16 field_0x642;
/* 0x644 */ char pad644[1]; // Padding
/* 0x645 */ s8 field_0x645;
/* 0x646 */ char pad646[0x64C - 0x646]; // Padding
/* 0x64C */ s16 field_0x64C[4];
/* 0x654 */ s16 field_0x654;
/* 0x656 */ s8 field_0x656;
/* 0x658 */ s16 field_0x658;
/* 0x65C */ dBgS_AcchCir mAcchCir;
/* 0x69C */ dBgS_ObjAcch mBgc;
/* 0x874 */ dCcD_Stts mStts;
/* 0x8B0 */ dCcD_Sph mSphere;
/* 0x9E8 */ u8 field_0x9E8;
};
STATIC_ASSERT(sizeof(bd_class) == 0x9ec);
class daBd_HIO_c {
class daBd_HIO_c : public JORReflexible {
public:
/* 804D6C4C */ daBd_HIO_c();
/* 804D9CB8 */ ~daBd_HIO_c();
/* 804D9CB8 */ virtual ~daBd_HIO_c() {}
void genMessage(JORMContext*);
/* 0x04 */ s8 id;
/* 0x08 */ f32 mBasicSize;
/* 0x0C */ f32 mFlightSpeed;
/* 0x10 */ f32 mGroundSpeed;
/* 0x14 */ s16 mFlightTime;
/* 0x18 */ f32 mLinkDetectRange;
/* 0x1C */ s16 mChirpDist;
/* 0x1E */ s8 field_0x1E;
};
#endif /* D_A_BD_H */

View File

@ -1,5 +1,8 @@
#ifndef D_A_E_SB_H
#define D_A_E_SB_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"
/**
@ -11,10 +14,11 @@
*
*/
class daE_SB_c : public fopEn_enemy_c {
/* 807816D8 */ void CreateHeap();
public:
/* 807816D8 */ int CreateHeap();
/* 807817F0 */ void initCcCylinder();
/* 80781850 */ void setCcCylinder();
/* 80781898 */ void ctrlJoint(J3DJoint*, J3DModel*);
/* 80781898 */ int ctrlJoint(J3DJoint*, J3DModel*);
/* 807819DC */ void Particle_Set(u16);
/* 80781A4C */ void SetAnm(int, int, f32, f32);
/* 80781AF8 */ void MemberClear();
@ -48,20 +52,84 @@ class daE_SB_c : public fopEn_enemy_c {
/* 80783FBC */ void HashiraVib();
/* 80784144 */ void Yazirushi();
/* 807841CC */ void setGroundAngle();
/* 80784390 */ void Execute();
/* 807844BC */ void Draw();
/* 807845D8 */ void Delete();
/* 80784390 */ int Execute();
/* 807844BC */ int Draw();
/* 807845D8 */ int Delete();
/* 80784640 */ void setBaseMtx();
/* 80784720 */ void Create();
/* 80784720 */ cPhs__Step Create();
private:
/* 0x5ac */ u8 field_0x5ac[0xbc0 - 0x5ac];
/* 0x5AC */ int field_0x5ac;
/* 0x5B0 */ int field_0x5b0;
/* 0x5B4 */ int field_0x5b4;
/* 0x5B8 */ int field_0x5b8;
/* 0x5BC */ int field_0x5bc;
/* 0x5C0 */ int field_0x5c0;
/* 0x5C4 */ int field_0x5c4;
/* 0x5C8 */ int field_0x5c8;
/* 0x5CC */ u32 field_0x5cc;
/* 0x5D0 */ u8 field_0x5d0;
/* 0x5D2 */ s16 field_0x5d2;
/* 0x5D1 */ f32 field_0x5d4;
/* 0x5D8 */ csXyz field_0x5d8;
/* 0x5DE */ csXyz field_0x5de;
/* 0x5E4 */ u8 field_0x5e4;
/* 0x5E6 */ s16 field_0x5e6;
/* 0x5E8 */ u8 field_0x5e8;
public:
/* 0x5EC */ cXyz* field_0x5ec;
/* 0x5F0 */ f32 field_0x5f0;
private:
/* 0x5F4 */ cXyz field_0x5f4;
/* 0x600 */ s16 field_0x600;
/* 0x602 */ u8 field_0x602;
/* 0x603 */ u8 field_0x603;
/* 0x604 */ u8 field_0x604;
/* 0x608 */ int field_0x608;
/* 0x60C */ int field_0x60c;
/* 0x610 */ s16 field_0x610;
/* 0x612 */ s16 field_0x612;
/* 0x614 */ csXyz field_0x614;
/* 0x61A */ u8 field_0x61a;
/* 0x61C */ mDoExt_McaMorfSO* mpMorf;
/* 0x620 */ request_of_phase_process_class mPhaseReq;
/* 0x628 */ int mShadowKey;
/* 0x62C */ Z2CreatureEnemy mSound;
/* 0x6D0 */ dBgS_AcchCir mAcchCir;
/* 0x710 */ dBgS_ObjAcch mAcch;
/* 0x8E8 */ dCcD_Stts mStts;
/* 0x924 */ dCcD_Sph mSph;
/* 0xA5C */ dCcD_Cyl mCyl;
/* 0xB98 */ dCcU_AtInfo mAtInfo;
/* 0xBBC */ u8 field_0xbbc;
};
STATIC_ASSERT(sizeof(daE_SB_c) == 0xbc0);
STATIC_ASSERT(sizeof(daE_SB_c) == 0xBC0);
class daE_SB_HIO_c {
class daE_SB_HIO_c : public JORReflexible {
public:
/* 8078164C */ daE_SB_HIO_c();
/* 80784CC0 */ ~daE_SB_HIO_c();
/* 80784CC0 */ virtual ~daE_SB_HIO_c() {}
#if DEBUG
void genMessage(JORMContext*);
#endif
/* 0x04 */ s8 field_0x04;
/* 0x08 */ f32 search_area;
/* 0x0C */ f32 distance_home;
/* 0x10 */ f32 jump_xz_axis_speed;
/* 0x14 */ f32 jump_y_axis_speed;
/* 0x18 */ f32 atk_jump_xz_axis_speed;
/* 0x1C */ f32 atk_y_axis_speed;
/* 0x20 */ f32 magne_on_atk_y_axis_speed;
/* 0x24 */ f32 grav_reduct_rate;
/* 0x28 */ f32 other_anm_speed;
/* 0x2C */ f32 shield_atk_anm_speed;
/* 0x30 */ f32 death_anm_speed;
/* 0x34 */ f32 size;
/* 0x38 */ f32 atk_start_range;
/* 0x3C */ s16 field_0x3c;
/* 0x3E */ s16 field_0x3e;
};

View File

@ -11,24 +11,42 @@
*/
class daMant_packet_c : public J3DPacket {
public:
/* 80861298 */ void draw();
/* 80862BA4 */ ~daMant_packet_c();
public:
/* 80861298 */ void draw();
/* 80862BA4 */ ~daMant_packet_c();
/* 0x0010 */ Mtx mMtx;
/* 0x0040 */ Mtx mMtx2;
/* 0x0070 */ dKy_tevstr_c* field_0x70;
/* 0x0074 */ u8 field_0x74;
/* 0x0075 */ u8 field_0x75[0x78 - 0x75];
/* 0x0078 */ cXyz mPos[338];
/* 0x1050 */ cXyz mNrm[338];
/* 0x2028 */ u8 field_0x2028;
/* 0x2029 */ u8 mArg0;
/* 0x202a */ u8 field_0x202a[0x202b - 0x202a];
/* 0x0010 */ Mtx mMtx;
/* 0x0040 */ Mtx mMtx2;
/* 0x0070 */ dKy_tevstr_c* mTevStr;
/* 0x0074 */ u8 field_0x74;
/* 0x0078 */ cXyz mPos[2][169];
/* 0x1050 */ cXyz mNrm[2][169];
/* 0x2028 */ u8 field_0x2028;
/* 0x2029 */ u8 mArg0;
cXyz* getPos() {
return this->mPos + this->field_0x74 * 0xa9;
}
daMant_packet_c() {
field_0x74 = 0;
}
cXyz* getPos() {
return &mPos[field_0x74][0];
}
cXyz* getNrm() {
return &mNrm[field_0x74][0];
}
void setTevStr(dKy_tevstr_c* tevStr) {
mTevStr = tevStr;
}
MtxP getMtx2() {
return mMtx2;
}
MtxP getMtx() {
return mMtx;
}
};
struct mant_j_s {
public:

View File

@ -383,6 +383,11 @@ public:
mpKago = NULL;
}
void onTagWaitPosPortalObj(const cXyz* i_pos) {
mTagWaitPos = *i_pos;
onStateFlg0(daMidna_FLG0(FLG0_PORTAL_OBJ_CALL | FLG0_TAG_WAIT));
}
static daMidna_texData_s const m_texDataTable[21];
static daMidna_anmData_s const m_anmDataTable[53];

View File

@ -57,11 +57,23 @@ public:
/* 80553404 */ void checkChangeJoint(int);
/* 80553414 */ void checkRemoveJoint(int);
MtxP getBd3Mtx() {
return mpMorf->getModel()->getAnmMtx(0x11);
}
MtxP getBd2Mtx() {
return mpMorf->getModel()->getAnmMtx(6);
}
MtxP getBd1Mtx() {
return mpMorf->getModel()->getAnmMtx(5);
}
static void* mCutNameList[3];
static u8 mCutList[36];
private:
/* 0x568 */ u8 field_0x568[0xfdc - 0x568];
/* 0x568 */ u8 field_0x568[0x578 - 0x568];
/* 0x578 */ mDoExt_McaMorfSO* mpMorf;
/* 0x57C */ u8 field_0x57C[0xfdc - 0x57C];
};
STATIC_ASSERT(sizeof(daNpc_Kkri_c) == 0xfdc);

View File

@ -60,7 +60,7 @@ public:
static cutFunc mCutList[1];
private:
/* 0xE40 */ u8 field_0xe40[0xe44- 0xe40];
/* 0xE40 */ u8 field_0xe40[0xe44 - 0xe40];
/* 0xE44 */ dCcD_Cyl mCyl;
/* 0xF80 */ u8 mType;
/* 0xF81 */ u8 field_0xf81[0xf84 - 0xf81];
@ -73,7 +73,7 @@ STATIC_ASSERT(sizeof(daNpc_Zant_c) == 0xfa0);
class daNpc_Zant_Param_c {
public:
/* 80B6E93C */ ~daNpc_Zant_Param_c() {};
/* 80B6E93C */ virtual ~daNpc_Zant_Param_c() {}
struct Data {
/* 0x00 */ f32 field_0x0;
/* 0x04 */ f32 field_0x4;
@ -112,11 +112,19 @@ public:
/* 0x7C */ f32 field_0x7c;
/* 0x80 */ f32 field_0x80;
/* 0x84 */ f32 field_0x84;
/* 0x88 */ f32 field_0x88;
/* 0x88 */ f32 field_0x88;
};
static const Data m;
};
class daNpc_Zant_HIO_c {
public:
virtual ~daNpc_Zant_HIO_c() {}
#if DEBUG
daNpc_Zant_Param_c::Data param;
#endif
};
#endif /* D_A_NPC_ZANT_H */

View File

@ -2,23 +2,36 @@
#define D_A_OBJ_WARP_KBRG_H
#include "f_op/f_op_actor_mng.h"
#include "d/d_bg_s_movebg_actor.h"
#include "d/d_msg_flow.h"
/**
* @ingroup actors-objects
* @class daObjWarpKBrg_c
* @brief Warp K Bridge (Kakariko Gorge Bridge?)
* @brief Kakariko Gorge Warp Bridge
*
* @details
*
*/
class daObjWarpKBrg_c : public fopAc_ac_c {
class daObjWarpKBrg_c : public dBgS_MoveBgActor {
public:
enum Action_e {
ACTION_WAIT_e,
ACTION_ORDER_EVENT_e,
ACTION_TALK_EVENT_e,
ACTION_WAIT_WARP_EVENT_e,
ACTION_WARP_EVENT_e,
ACTION_ORDER_A_TALK_EVENT_e,
ACTION_DEAD_e,
ACTION_WAIT2_e,
ACTION_ORDER_EVENT2_e,
ACTION_WARP_EVENT2_e,
ACTION_DEAD2_e,
};
/* 80D26FA8 */ void initBaseMtx();
/* 80D27008 */ void setBaseMtx();
/* 80D270C4 */ void Create();
/* 80D27300 */ void CreateHeap();
/* 80D276B4 */ void create1st();
/* 80D2781C */ void Execute(f32 (**)[3][4]);
/* 80D276B4 */ int create1st();
/* 80D27890 */ void event_proc_call();
/* 80D27A38 */ void orderZHintEvent();
/* 80D27B2C */ void actionWait();
@ -34,7 +47,7 @@ public:
/* 80D28248 */ void actionDead2();
/* 80D2824C */ void demoProc();
/* 80D28A50 */ void calcObjPos();
/* 80D28AE0 */ void checkTalkDistance();
/* 80D28AE0 */ bool checkTalkDistance();
/* 80D28B7C */ void calcMidnaWaitPos();
/* 80D28C10 */ void setBindEffect();
/* 80D28CDC */ void followBindEffect();
@ -44,11 +57,50 @@ public:
/* 80D290A8 */ void followDstEffect();
/* 80D29158 */ void endSrcEffect();
/* 80D291FC */ void endDstEffect();
/* 80D292A0 */ void Draw();
/* 80D29448 */ void Delete();
private:
/* 0x568 */ u8 field_0x568[0x69c - 0x568];
/* 80D27300 */ virtual int CreateHeap();
/* 80D270C4 */ virtual int Create();
/* 80D2781C */ virtual int Execute(Mtx**);
/* 80D292A0 */ virtual int Draw();
/* 80D29448 */ virtual int Delete();
u8 getNameArg() { return fopAcM_GetParamBit(this, 31, 2); }
u8 getSwbit() { return fopAcM_GetParamBit(this, 0, 8); }
u8 getSwbit2() { return fopAcM_GetParamBit(this, 8, 8); }
u8 getArg0() { return fopAcM_GetParamBit(this, 16, 8); }
void setAction(u8 i_action) { mAction = i_action; }
u16 getMsgID() { return mMsgID; }
/* 0x5A0 */ request_of_phase_process_class mPhase;
/* 0x5A8 */ request_of_phase_process_class mEvPhase;
/* 0x5B0 */ J3DModel* mpBridgeModel;
/* 0x5B4 */ mDoExt_btkAnm* mpBridgeBtk;
/* 0x5B8 */ mDoExt_bckAnm* mpBridgeBck;
/* 0x5BC */ J3DModel* mpPortalModel;
/* 0x5C0 */ mDoExt_btkAnm* mpPortalBtk;
/* 0x5C4 */ mDoExt_brkAnm* mpPortalBrk;
/* 0x5C8 */ u8 field_0x5c8;
/* 0x5C9 */ u8 mTimer;
/* 0x5CA */ u8 mAction;
/* 0x5CB */ u8 mPrmInit;
/* 0x5CC */ u16 mMsgID;
/* 0x5CE */ s16 mEventId[2];
/* 0x5D4 */ int mStaffId;
/* 0x5D8 */ u8 mEventType;
/* 0x5D9 */ u8 field_0x5d9;
/* 0x5DC */ dMsgFlow_c mMsgFlow;
/* 0x628 */ cXyz mMidnaWaitPos;
/* 0x634 */ cXyz mObjPos;
/* 0x640 */ JPABaseEmitter* mStartEfEmitterID[3];
/* 0x64C */ JPABaseEmitter* mDisappEfEmitterID[5];
/* 0x660 */ JPABaseEmitter* mAppEfEmitterID[6];
/* 0x678 */ JPABaseEmitter* mEndEfEmitterID[2];
/* 0x680 */ u8 field_0x680[0x688 - 0x680];
/* 0x688 */ JPABaseEmitter* mBindEfEmitterID[4];
/* 0x698 */ u16 mEffJointNo;
/* 0x69A */ u8 field_0x69a;
/* 0x69B */ u8 field_0x69b;
};
STATIC_ASSERT(sizeof(daObjWarpKBrg_c) == 0x69c);

View File

@ -2,23 +2,32 @@
#define D_A_OBJ_WARP_OBRG_H
#include "f_op/f_op_actor_mng.h"
#include "d/d_bg_s_movebg_actor.h"
#include "d/d_msg_flow.h"
/**
* @ingroup actors-objects
* @class daObjWarpOBrg_c
* @brief Warp O Bridge (Eldin Bridge?)
* @brief Eldin Warp Bridge
*
* @details
*
*/
class daObjWarpOBrg_c : public fopAc_ac_c {
class daObjWarpOBrg_c : public dBgS_MoveBgActor {
public:
enum Action_e {
ACTION_WAIT_e,
ACTION_ORDER_EVENT_e,
ACTION_TALK_EVENT_e,
ACTION_WARP_EVENT_e,
ACTION_DEAD_e,
ACTION_ORDER_EVENT_DST_e,
ACTION_WARP_EVENT_DST_e,
};
/* 80D299B8 */ void initBaseMtx();
/* 80D29A00 */ void setBaseMtx();
/* 80D29ACC */ void Create();
/* 80D29BB4 */ void CreateHeap();
/* 80D29E7C */ void create1st();
/* 80D2A008 */ void Execute(f32 (**)[3][4]);
/* 80D29E7C */ int create1st();
/* 80D2A04C */ void event_proc_call();
/* 80D2A194 */ void actionWait();
/* 80D2A4CC */ void actionOrderEvent();
@ -28,13 +37,41 @@ public:
/* 80D2A9E4 */ void actionWarpEventDst();
/* 80D2AA30 */ void actionDead();
/* 80D2AA34 */ void demoProc();
/* 80D2B3BC */ void checkTalkDistance();
/* 80D2B3BC */ bool checkTalkDistance();
/* 80D2B534 */ void calcMidnaWaitPos();
/* 80D2B5C8 */ void Draw();
/* 80D2B6C0 */ void Delete();
private:
/* 0x568 */ u8 field_0x568[0x640 - 0x568];
/* 80D29BB4 */ virtual int CreateHeap();
/* 80D29ACC */ virtual int Create();
/* 80D2A008 */ virtual int Execute(Mtx**);
/* 80D2B5C8 */ virtual int Draw();
/* 80D2B6C0 */ virtual int Delete();
u8 getNameArg() { return subtype; }
u8 getSwNo() { return fopAcM_GetParamBit(this, 0, 8); }
u8 getSwNo2() { return fopAcM_GetParamBit(this, 8, 8); }
u8 getArg0() { return fopAcM_GetParamBit(this, 16, 8); }
u8 getMyPortalID() { return fopAcM_GetParamBit(this, 24, 7); }
void setAction(u8 i_action) { mAction = i_action; }
u16 getMsgID() { return mMsgID; }
/* 0x5A0 */ request_of_phase_process_class mPhase;
/* 0x5A8 */ J3DModel* mpModel;
/* 0x5AC */ mDoExt_bckAnm* mpBck;
/* 0x5B0 */ mDoExt_btkAnm* mpBtk;
/* 0x5B4 */ dMsgFlow_c mMsgFlow;
/* 0x600 */ JPABaseEmitter* mEfEmitter[5];
/* 0x614 */ cXyz field_0x614;
/* 0x620 */ cXyz mMidnaWaitPos;
/* 0x62C */ f32 mTalkRange;
/* 0x630 */ int mStaffId;
/* 0x634 */ s16 mEventId;
/* 0x636 */ u16 mMsgID;
/* 0x638 */ u8 mPrmInit;
/* 0x639 */ u8 field_0x639;
/* 0x63A */ u8 field_0x63a;
/* 0x63B */ u8 mAction;
/* 0x63C */ u8 mTimer;
};
STATIC_ASSERT(sizeof(daObjWarpOBrg_c) == 0x640);

View File

@ -599,7 +599,8 @@ public:
};
enum CutType {
/* 0x01 */ CUT_TYPE_NM_VERTICAL = 1,
/* 0x00 */ CUT_TYPE_NONE,
/* 0x01 */ CUT_TYPE_NM_VERTICAL,
/* 0x02 */ CUT_TYPE_NM_STAB,
/* 0x03 */ CUT_TYPE_NM_RIGHT,
/* 0x04 */ CUT_TYPE_NM_LEFT,

View File

@ -70,7 +70,7 @@ public:
}
u32 getTalkAngle() {
u32 talkAngle = (fopAcM_GetParam(this) & 0xe0) >> 5;
u32 talkAngle = (fopAcM_GetParam(this) >> 5) & 0x7;
if (talkAngle == 7) {
return 0;
} else {

View File

@ -149,6 +149,7 @@ public:
u32 MaskRoofHit() const { return m_flags & ROOF_HIT; }
bool ChkRoofHit() const { return MaskRoofHit() != 0; }
void OffClrSpeedY() { m_flags |= CLR_SPEED_Y; }
void OnClrSpeedY() { m_flags &= ~CLR_SPEED_Y; }
bool ChkClrSpeedY() const { return !(m_flags & CLR_SPEED_Y); }
void SetGroundFind() { m_flags |= GROUND_FIND; }
void SetGroundHit() { m_flags |= GROUND_HIT; }

View File

@ -100,6 +100,10 @@ inline void cMtx_multVecArray(Mtx mtx, const Vec* src, Vec* dst, u32 count) {
mDoMtx_multVecArray(mtx, src, dst, count);
}
inline void cMtx_inverseTranspose(const Mtx a, Mtx b) {
mDoMtx_inverseTranspose(a, b);
}
inline void mDoMtx_multVecZero(CMtxP param_0, Vec* param_1) {
param_1->x = param_0[0][3];
param_1->y = param_0[1][3];

File diff suppressed because it is too large Load Diff

View File

@ -1045,7 +1045,7 @@ static int daE_HZELDA_Execute(e_hzelda_class* i_this) {
BOOL on_player_at_sph = FALSE;
if (daPy_py_c::checkMasterSwordEquip()) {
if (daPy_getPlayerActorClass()->getCutType() != 0) {
if (daPy_getPlayerActorClass()->getCutType() != daPy_py_c::CUT_TYPE_NONE) {
i_this->mSwordAtTimer++;
if (i_this->mSwordAtTimer < 6) {
on_player_at_sph = TRUE;

View File

@ -354,7 +354,7 @@ int daE_OC_c::searchPlayerShakeHead() {
int daE_OC_c::searchSound() {
if (field_0x6b4 == 2 && mpBridge && mpBridge->getPlayerRide())
return 0;
if (daPy_getPlayerActorClass()->getCutType() != 0 && fopAcM_searchPlayerDistance(this) < mPlayerRange) {
if (daPy_getPlayerActorClass()->getCutType() != daPy_py_c::CUT_TYPE_NONE && fopAcM_searchPlayerDistance(this) < mPlayerRange) {
field_0x67c = dComIfGp_getPlayer(0)->current.pos;
setActionMode(8, 0);
return 1;

File diff suppressed because it is too large Load Diff

View File

@ -147,7 +147,7 @@ static void e_tk_ball_move(e_tk_ball_class* i_this) {
if (i_this->mTgSph.ChkTgHit() || i_this->mAtSph.ChkAtShieldHit()) {
impact_eff_set(i_this);
actor->current.angle.x *= -1;
if (actor_lockon && daPy_getPlayerActorClass()->getCutType() != 0x00) {
if (actor_lockon && daPy_getPlayerActorClass()->getCutType() != daPy_py_c::CUT_TYPE_NONE) {
i_this->mAction = ACT_TK_BALL_RETURN;
i_this->mMode = MODE_TK_BALL_INIT;
actor->current.angle.y -= 0x8000;
@ -168,7 +168,7 @@ static void e_tk_ball_move(e_tk_ball_class* i_this) {
i_this->mInitalDistance = direction_vec.abs();
speed_vec.x = 0.0;
speed_vec.y = 0.0;
if (daPy_getPlayerActorClass()->getCutType() != 0x00) {
if (daPy_getPlayerActorClass()->getCutType() != daPy_py_c::CUT_TYPE_NONE) {
speed_vec.z = 60.0f;
}
cMtx_YrotS(*calc_mtx, actor->current.angle.y);

View File

@ -134,7 +134,7 @@ static void damage_check(e_yd_class* i_this) {
j = i_this->field_0xff4.mpCollider->ChkAtType(AT_TYPE_BOMB | AT_TYPE_40);
if (j != 0 || i_this->field_0x66e == 6) {
at_power_check(&i_this->field_0xff4);
if (daPy_getPlayerActorClass()->getCutType() != 0) {
if (daPy_getPlayerActorClass()->getCutType() != daPy_py_c::CUT_TYPE_NONE) {
cVar6 = 1;
} else {
cVar6 = 2;

View File

@ -50,7 +50,7 @@ static void daKytag12_light_swprd_proc(kytag12_class* i_this) {
daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0);
if (dComIfGs_getSelectEquipSword() == fpcNm_ITEM_LIGHT_SWORD) {
if (player->getCutType() != 0) {
if (player->getCutType() != daPy_py_c::CUT_TYPE_NONE) {
if (i_this->field_0x576 == 0) {
cXyz sp28(player->current.pos);
sp28.y -= 100.0f;
@ -878,7 +878,7 @@ static int daKytag12_Execute_R00(kytag12_class* i_this) {
sp80.y = player->current.pos.y;
if (player->current.pos.abs(sp80) < 600.0f &&
dComIfGs_getSelectEquipSword() == fpcNm_ITEM_LIGHT_SWORD && player->getCutType() != 0 &&
dComIfGs_getSelectEquipSword() == fpcNm_ITEM_LIGHT_SWORD && player->getCutType() != daPy_py_c::CUT_TYPE_NONE &&
d_kytag12_cut_turn_check())
{
i_this->field_0x575 = 1;

View File

@ -1,6 +1,6 @@
/**
* @file d_a_mant.cpp
*
*
*/
#include "d/actor/d_a_mant.h"
@ -9,20 +9,7 @@
#include "d/d_com_inf_game.h"
#include "dol2asm.h"
/* 80862D20-80862D2C 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
static u8 cNullVec__6Z2Calc[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 80862D2C-80862D40 00000C 0004+10 0/0 0/0 0/0 .data @1787 */
static u32 lit_1787[1 + 4 /* padding */] = {
0x02000201,
/* padding */
0x40080000,
0x00000000,
0x3FE00000,
0x00000000,
};
UNK_REL_DATA
/* 80862D40-80866D40 000020 4000+00 2/1 0/0 0/0 .data l_Egnd_mantTEX */
#include "assets/l_Egnd_mantTEX.h"
@ -276,87 +263,87 @@ static void* tex_d[2] = {
static char lbl_277_bss_0;
/* 80861298-808616B8 000078 0420+00 1/0 0/0 0/0 .text draw__15daMant_packet_cFv */
// NONMATCHING - missing some weird stack duplication
void daMant_packet_c::draw() {
// NONMATCHING
void* image = tex_d[0];
void* lut = pal_d;
j3dSys.reinitGX();
GXSetNumIndStages(0);
dKy_setLight_again();
dKy_GxFog_tevstr_set(this->field_0x70);
dKy_GxFog_tevstr_set(this->mTevStr);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX8);
GXSetVtxDesc(GX_VA_NRM,GX_INDEX8);
GXSetVtxDesc(GX_VA_TEX0,GX_INDEX8);
GXSetVtxDesc(GX_VA_NRM, GX_INDEX8);
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX8);
GXSetVtxAttrFmt(GX_VTXFMT0,GX_VA_POS,GX_CLR_RGBA,GX_F32,0);
GXSetVtxAttrFmt(GX_VTXFMT0,GX_VA_NRM,GX_CLR_RGB,GX_F32,0);
GXSetVtxAttrFmt(GX_VTXFMT0,GX_VA_TEX0,GX_CLR_RGBA,GX_F32,0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_F32, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_CLR_RGB, GX_F32, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_F32, 0);
GXSetArray(GX_VA_POS, this->getPos(), 12);
GXSetArray(GX_VA_NRM, &this->mNrm[this->field_0x74 * 0xa9], 12);
GXSetArray(GX_VA_NRM, this->getNrm(), 12);
GXSetArray(GX_VA_TEX0, &l_texCoord, 8);
GXSetZCompLoc(0);
GXSetZMode(GX_ENABLE,GX_LEQUAL,GX_ENABLE);
GXSetZMode(GX_ENABLE, GX_LEQUAL, GX_ENABLE);
GXSetNumChans(1);
GXSetChanCtrl(GX_COLOR0,GX_ENABLE,GX_SRC_REG,GX_SRC_REG,0xff,GX_DF_CLAMP,GX_AF_SPOT);
GXSetChanCtrl(GX_COLOR0, GX_ENABLE, GX_SRC_REG, GX_SRC_REG, 0xff, GX_DF_CLAMP, GX_AF_SPOT);
GXSetNumTexGens(1);
GXSetTexCoordGen2(GX_TEXCOORD0,GX_TG_MTX2x4,GX_TG_TEX0,0x3c,0,0x7d);
GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3c);
GXSetNumTevStages(1);
GXSetTevSwapMode(GX_TEVSTAGE0,GX_TEV_SWAP0,GX_TEV_SWAP0);
GXSetTevSwapMode(GX_TEVSTAGE0, GX_TEV_SWAP0, GX_TEV_SWAP0);
dKy_Global_amb_set(this->field_0x70);
GXSetTevOrder(GX_TEVSTAGE0,GX_TEXCOORD0,GX_TEXMAP0,GX_COLOR0A0);
dKy_Global_amb_set(this->mTevStr);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GXColor local_84 = {1, 0, 0, 0};
GXSetTevColor(GX_TEVREG0, local_84);
GXColor local_8c = {1, 0, 0, 0};
GXSetTevKColor(GX_KCOLOR0, local_8c);
GXSetTevKColorSel(GX_TEVSTAGE0,GX_TEV_KCSEL_K0);
GXSetTevColorIn(GX_TEVSTAGE0,GX_CC_KONST,GX_CC_TEXC,GX_CC_RASC,GX_CC_C0);
GXSetTevColorOp(GX_TEVSTAGE0,GX_TEV_ADD,GX_TB_ZERO,GX_CS_SCALE_4,GX_TRUE,GX_TEVPREV);
GXSetTevAlphaIn(GX_TEVSTAGE0,GX_CA_ZERO,GX_CA_KONST,GX_CA_TEXA,GX_CA_ZERO);
GXSetTevAlphaOp(GX_TEVSTAGE0,GX_TEV_ADD,GX_TB_ZERO,GX_CS_SCALE_1,GX_TRUE,GX_TEVPREV);
GXSetTevKAlphaSel(GX_TEVSTAGE0,GX_TEV_KASEL_K3_A);
GXSetAlphaCompare(GX_GREATER,0,GX_AOP_OR,GX_GREATER,0);
GXSetTevKColorSel(GX_TEVSTAGE0, GX_TEV_KCSEL_K0);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_KONST, GX_CC_TEXC, GX_CC_RASC, GX_CC_C0);
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_4, GX_TRUE, GX_TEVPREV);
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_KONST, GX_CA_TEXA, GX_CA_ZERO);
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevKAlphaSel(GX_TEVSTAGE0, GX_TEV_KASEL_K3_A);
GXSetAlphaCompare(GX_GREATER, 0, GX_AOP_OR, GX_GREATER, 0);
GXTlutObj GStack_80;
GXInitTlutObj(&GStack_80,pal_d,GX_TL_RGB5A3,0x100);
GXInitTlutObj(&GStack_80, lut, GX_TL_RGB5A3, 0x100);
GXTexObj GStack_74;
GXInitTexObjCI(&GStack_74,lut,0x80,0x80,GX_TF_C8,GX_CLAMP,GX_CLAMP,0,0);
GXInitTexObjLOD(&GStack_74,GX_LINEAR,GX_LINEAR,0.0,0.0,0.0,0,0,GX_ANISO_1);
GXInitTexObjCI(&GStack_74, image, 0x80, 0x80, GX_TF_C8, GX_CLAMP, GX_CLAMP, 0, 0);
GXInitTexObjLOD(&GStack_74, GX_LINEAR, GX_LINEAR, 0.0, 0.0, 0.0, 0, 0, GX_ANISO_1);
GXLoadTlut(&GStack_80,0);
GXLoadTexObj(&GStack_74,GX_TEXMAP0);
GXLoadTlut(&GStack_80, 0);
GXLoadTexObj(&GStack_74, GX_TEXMAP0);
GXSetCullMode(GX_CULL_BACK);
GXLoadPosMtxImm(this->mMtx, GX_PNMTX0);
Mtx MStack_54;
mDoMtx_inverseTranspose(this->mMtx, MStack_54);
cMtx_inverseTranspose(this->mMtx, MStack_54);
GXLoadNrmMtxImm(MStack_54,GX_PNMTX0);
GXLoadNrmMtxImm(MStack_54, GX_PNMTX0);
GXCallDisplayList(l_Egnd_mantDL, 0x3e0);
GXInitTexObjCI(&GStack_74,image,0x80,0x80,GX_TF_C8,GX_CLAMP,GX_CLAMP,0,0);
GXInitTexObjLOD(&GStack_74,GX_LINEAR,GX_LINEAR,0.0,0.0,0.0,0,0,GX_ANISO_1);
GXLoadTexObj(&GStack_74,GX_TEXMAP0);
GXInitTexObjCI(&GStack_74, l_Egnd_mantTEX_U, 0x80, 0x80, GX_TF_C8, GX_CLAMP, GX_CLAMP, 0, 0);
GXInitTexObjLOD(&GStack_74, GX_LINEAR, GX_LINEAR, 0.0, 0.0, 0.0, 0, 0, GX_ANISO_1);
GXLoadTexObj(&GStack_74, GX_TEXMAP0);
GXColor local_94 = {0, 0, 0, 0};
GXSetTevColor(GX_TEVREG0,local_94);
GXSetTevColor(GX_TEVREG0, local_94);
GXColor local_9c = {0, 0, 0, 0};
GXSetTevKColor(GX_KCOLOR0,local_9c);
GXSetTevKColor(GX_KCOLOR0, local_9c);
GXSetCullMode(GX_CULL_FRONT);
GXLoadPosMtxImm(this->mMtx2, GX_PNMTX0);
mDoMtx_inverseTranspose(this->mMtx2, MStack_54);
cMtx_inverseTranspose(this->mMtx2, MStack_54);
GXLoadNrmMtxImm(MStack_54,GX_PNMTX0);
GXLoadNrmMtxImm(MStack_54, GX_PNMTX0);
GXCallDisplayList(l_Egnd_mantDL, 0x3e0);
this->field_0x74 = lbl_277_bss_0 & 1;
@ -365,19 +352,15 @@ void daMant_packet_c::draw() {
/* 808616B8-8086176C 000498 00B4+00 1/0 0/0 0/0 .text daMant_Draw__FP10mant_class */
static int daMant_Draw(mant_class* i_this) {
// NONMATCHING
g_env_light.settingTevStruct(0, &i_this->current.pos, &i_this->tevStr);
MtxTrans(0.0f, 0.0f, 0.0f, 0.0f);
Mtx* viewMtx = &j3dSys.mViewMtx;
Mtx* mtx1 = &i_this->field_0x0570.mMtx;
cMtx_concat(*viewMtx, *calc_mtx, *mtx1);
cMtx_concat(j3dSys.getViewMtx(), *calc_mtx, i_this->field_0x0570.getMtx());
Mtx* mtx2 = &i_this->field_0x0570.mMtx2;
cMtx_concat(*viewMtx, *calc_mtx, *mtx2);
cMtx_concat(j3dSys.getViewMtx(), *calc_mtx, i_this->field_0x0570.getMtx2());
i_this->field_0x0570.field_0x70 = &i_this->tevStr;
i_this->field_0x0570.setTevStr(&i_this->tevStr);
j3dSys.getDrawBuffer(0)->entryImm(&i_this->field_0x0570, 0);
@ -385,12 +368,12 @@ static int daMant_Draw(mant_class* i_this) {
}
/* 8086176C-80861F60 00054C 07F4+00 1/1 0/0 0/0 .text joint_control__FP10mant_classP8mant_j_siff */
// NONMATCHING - regalloc
static void joint_control(mant_class* i_this, mant_j_s* param_2, int param_3, f32 param_4, f32 param_5) {
// NONMATCHING
static f32 d_p[12] = {
1.4000001f, 0.6f, 0.35f, 0.3f, 0.3f, 0.3f, 0.25f, 0.2f, 0.2f, 0.2f, 0.15f, 0.1f
};
cXyz local_134, local_140, local_14c, local_158, local_164;
BOOL bVar2 = FALSE;
f32 dVar14, dVar16, dVar17, dVar18, dVar19, dVar20;
@ -422,7 +405,7 @@ static void joint_control(mant_class* i_this, mant_j_s* param_2, int param_3, f3
cXyz local_188(0.0f, 0.0f, 0.0f);
cXyz local_194(0.0f, 0.0f, 0.0f);
cXyz local_1a0(0.0f, 0.0f, 0.0f);
cMtx_YrotS(*calc_mtx, param_2->field_0x013a);
local_134.x = 0.0f;
local_134.y = 0.0f;
@ -450,14 +433,14 @@ static void joint_control(mant_class* i_this, mant_j_s* param_2, int param_3, f3
dVar18 = i_this->field_0x3958;
dVar18 *= 1.0f - i * 0.07f;
local_1ac.zero();
// (1.0f / 100.0f)
if (param_4 > 0.01f) {
dVar16 = 0.0f;
f32 dVar14 = param_4 * (i * 0.05f + 1.0f);
f32 dVar14 = param_4 * (i * 0.2f + 1.0f);
cMtx_YrotS(*calc_mtx, param_2->field_0x013a);
cMtx_XrotM(*calc_mtx, param_2->field_0x0138);
@ -466,7 +449,7 @@ static void joint_control(mant_class* i_this, mant_j_s* param_2, int param_3, f3
local_140.z = -15.0f;
MtxPosition(&local_140, &local_1ac);
}
if (param_5 > 0.01f) {
dVar14 = param_5 * (i * 0.2f + 1.0f);
cMtx_YrotS(*calc_mtx, param_2->field_0x013a + -6000);
@ -539,16 +522,15 @@ static void joint_control(mant_class* i_this, mant_j_s* param_2, int param_3, f3
/* 80861F9C-80862424 000D7C 0488+00 1/1 0/0 0/0 .text mant_v_calc__FP10mant_class */
static void mant_v_calc(mant_class* i_this) {
// NONMATCHING
cXyz local_e4, cStack_f0, local_fc, local_108;
f32 dVar16, dVar15, dVar14, uVar15;
csXyz local_134(0, 0, 0);
// mant_j_s* mantJS;
mant_j_s* mantJS;
local_fc = i_this->field_0x3928[0] - i_this->field_0x3928[1];
local_134.y = cM_atan2s(local_fc.x, local_fc.z) + 0x4000;
// mantJS = i_this->field_0x25a8;
mantJS = i_this->field_0x25a8;
local_e4.x = 0.0f;
@ -558,7 +540,7 @@ static void mant_v_calc(mant_class* i_this) {
local_108 = (i_this->current.pos - i_this->field_0x3940) * 0.9f;
if (10.0f < local_108.abs()) {
if (local_108.abs() < 10.0f) {
uVar15 = 0.0f;
} else {
local_134.y = cM_atan2s(local_108.x, local_108.z);
@ -575,7 +557,7 @@ static void mant_v_calc(mant_class* i_this) {
f32 uVar14 = 0.0f;
if (i_this->field_0x3965 == 0) {
if (i_this->field_0x3969 == 1) {
uVar14 = (1.0f / 20.0f);
uVar14 = (1.0f / 5.0f);
} else if (i_this->field_0x3969 == 2) {
uVar14 = 0.6f;
} else if (i_this->field_0x3969 == 3) {
@ -583,30 +565,30 @@ static void mant_v_calc(mant_class* i_this) {
}
}
for (int i = 0; i < 13; i++) {
i_this->field_0x25a8[i].field_0x0[0].x = i_this->field_0x3928[1].x + (dVar16 * i);
i_this->field_0x25a8[i].field_0x0[0].y = i_this->field_0x3928[1].y + (dVar15 * i);
i_this->field_0x25a8[i].field_0x0[0].z = i_this->field_0x3928[1].z + (dVar14 * i);
for (int i = 0; i < 13; i++, mantJS++) {
i_this->field_0x25a8[i].field_0x0[0].x = i_this->field_0x3928[1].x + (dVar16 * i);
i_this->field_0x25a8[i].field_0x0[0].y = i_this->field_0x3928[1].y + (dVar15 * i);
i_this->field_0x25a8[i].field_0x0[0].z = i_this->field_0x3928[1].z + (dVar14 * i);
cMtx_YrotS(*calc_mtx, local_134.y);
local_e4.z = cM_fsin(i * 0.2617994f);
local_e4.y = local_e4.z * -10.0f;
local_e4.z = local_e4.z * -20.0f;
f32 temp = cM_fsin(i * 0.2617994f);
local_e4.y = temp * -10.0f;
local_e4.z = temp * -20.0f;
MtxPosition(&local_e4, &cStack_f0);
i_this->field_0x25a8[i].field_0x0[i] += cStack_f0;
i_this->field_0x25a8[i].field_0x0[0] += cStack_f0;
i_this->field_0x25a8[i].field_0x0138 = local_134.x;
i_this->field_0x25a8[i].field_0x013a = local_134.y + (i + -6) * 0x5dc;
for (int j = 0; j < 12; j++) {
for (int j = 1; j < 13; j++) {
i_this->field_0x25a8[i].field_0x0[j].x += local_108.x;
i_this->field_0x25a8[i].field_0x0[j].z += local_108.z;
}
joint_control(i_this, i_this->field_0x25a8, i, uVar15, uVar14);
joint_control(i_this, mantJS, i, uVar15, uVar14);
}
}
@ -629,9 +611,8 @@ static int mant_cut_type;
/* 808624E8-80862908 0012C8 0420+00 2/1 0/0 0/0 .text daMant_Execute__FP10mant_class */
static int daMant_Execute(mant_class* i_this) {
// NONMATCHING
f32 in_f30, in_f31;
int unaff_r29, iVar2, uVar1, uVar4;
f32 var_f31, var_f30;
int iVar8, unaff_r29, iVar2, uVar1, uVar4;
i_this->field_0x25a0++;
lbl_277_bss_0++;
@ -668,7 +649,7 @@ static int daMant_Execute(mant_class* i_this) {
i_this->field_0x3940 = i_this->current.pos;
int iVar8 = 0;
iVar8 = 0;
if (i_this->field_0x3967 != 0) {
mant_cut_type = i_this->field_0x3967;
@ -684,18 +665,18 @@ static int daMant_Execute(mant_class* i_this) {
}
unaff_r29 = cM_rndF(65536.0f);
in_f31 = cM_rndFX(32.0f);
in_f30 = cM_rndFX(32.0f);
var_f31 = cM_rndFX(32.0f);
var_f30 = cM_rndFX(32.0f);
}
i_this->field_0x3967 = 0;
}
for (int i = 0; i < iVar8; i++) {
in_f31 += cM_ssin(unaff_r29);
in_f30 -= cM_scos(unaff_r29);
var_f31 += cM_ssin(unaff_r29);
var_f30 -= cM_scos(unaff_r29);
uVar4 = (int)(in_f31 + 64.0f) | (int)(in_f30 + 64.0f) << 7;
uVar4 = (int)(var_f31 + 64.0f) | (int)(var_f30 + 64.0f) << 7;
if (mant_cut_type == 0) {
if (i <= 3 || 36 <= i) {
@ -720,34 +701,30 @@ static int daMant_Execute(mant_class* i_this) {
}
for (int j = 0; j < iVar2; j++) {
if (j != 0) {
if (j == 1) {
uVar4 = uVar1++;
} else if (j == 2) {
uVar4 = uVar1 + 0x80;
} else if (j == 3) {
uVar4 = uVar1 + 0x81;
} else {
if (j == 3) {
uVar4 = uVar1 + 0x81;
} else {
if (j == 4) {
uVar4 = uVar1 + 2;
} else if (j == 5) {
uVar4 = uVar1 + 0x82;
} else if (j == 6) {
uVar4 = uVar1 + 0x102;
} else if (j == 7) {
uVar4 = uVar1 + 0x101;
} else if (j == 8) {
uVar4 = uVar1 + 0x100;
}
}
}
if (j == 0) {
uVar1 = uVar4;
} else if (j == 1) {
uVar1 = uVar4 + 1;
} else if (j == 2) {
uVar1 = uVar4 + 0x80;
} else if (j == 3) {
uVar1 = uVar4 + 0x81;
} else if (j == 3) {
uVar1 = uVar4 + 0x81;
} else if (j == 4) {
uVar1 = uVar4 + 2;
} else if (j == 5) {
uVar1 = uVar4 + 0x82;
} else if (j == 6) {
uVar1 = uVar4 + 0x102;
} else if (j == 7) {
uVar1 = uVar4 + 0x101;
} else if (j == 8) {
uVar1 = uVar4 + 0x100;
}
if (0 <= uVar4 && uVar4 < 0x4000) {
int iVar5 = (uVar4 & 7) + (uVar4 & 0x78) * 4 + (uVar4 >> 4 & 0x18) + (uVar4 & 0x3e00);
if (0 <= uVar1 && uVar1 < 0x4000) {
int iVar5 = (uVar1 & 7) + (uVar1 & 0x78) * 4 + (uVar1 >> 4 & 0x18) + (uVar1 & 0x3e00);
l_Egnd_mantTEX_U[iVar5] = 0;
l_Egnd_mantTEX[iVar5] = 0;
}
@ -769,11 +746,10 @@ static int daMant_Delete(mant_class* i_this) {
/* 80862918-80862AC0 0016F8 01A8+00 1/0 0/0 0/0 .text daMant_Create__FP10fopAc_ac_c */
static int daMant_Create(fopAc_ac_c* i_this) {
// NONMATCHING
mant_class* m_this = (mant_class*)i_this;
// m_this->field_0x0570.field_0x74 = 0;
fopAcM_SetupActor(m_this, mant_class);
//m_this->field_0x0570.field_0x74 = 0;
m_this->field_0x259c = fopAcM_GetParam(i_this);
fopAcM_SetMin(i_this, -2000.0f, -2000.0f, -2000.0f);

View File

@ -8,12 +8,6 @@
#include "f_op/f_op_actor_mng.h"
#include "SSystem/SComponent/c_counter.h"
/* 80B6ED28-80B6ED34 000008 000C+00 1/1 0/0 0/0 .bss @3811 */
static u8 lit_3811[12];
/* 80B6ED34-80B6ED38 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */
static u8 l_HIO[4];
UNK_REL_DATA
/* 80B6EAB4-80B6EABC 000020 0008+00 1/1 0/0 0/0 .data l_bmdData */
@ -73,6 +67,9 @@ daNpc_Zant_c::cutFunc daNpc_Zant_c::mCutList[1] = {
NULL
};
/* 80B6ED34-80B6ED38 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */
static daNpc_Zant_Param_c l_HIO;
/* 80B6C1AC-80B6C2D0 0000EC 0124+00 1/0 0/0 0/0 .text __dt__12daNpc_Zant_cFv */
daNpc_Zant_c::~daNpc_Zant_c() {
OS_REPORT("|%06d:%x|daNpc_Zant_c -> デストラクト\n", g_Counter.mCounter0, this);
@ -444,7 +441,7 @@ void daNpc_Zant_c::drawGhost() {
/* 80B6D21C-80B6D264 00115C 0048+00 1/1 0/0 0/0 .text selectAction__12daNpc_Zant_cFv */
int daNpc_Zant_c::selectAction() {
field_0xf84 = NULL;
field_0xf84 = &daNpc_Zant_c::talk;
field_0xf84 = &daNpc_Zant_c::wait;
return 1;
}
@ -487,7 +484,7 @@ int daNpc_Zant_c::wait(void* param_1) {
if (chkActorInSight(mPlayerActorMngr.getActorP(), mAttnFovY, mCurAngle.y)) {
mJntAnm.lookPlayer(0);
}
if (!srchPlayerActor() && home.angle.y == mCurAngle.y) {
mMode = 1;
}
@ -534,7 +531,7 @@ int daNpc_Zant_c::talk(void* param_1) {
dComIfGp_event_reset();
mMode = 3;
}
mJntAnm.lookPlayer(0);
if (mTwilight) {
mJntAnm.lookNone(0);

View File

@ -44,7 +44,6 @@ const static dCcD_SrcSph l_sph_src = {
/* 80C7CB18-80C7CE24 000078 030C+00 1/1 0/0 0/0 .text nodeCallBack__FP8J3DJointi */
static int nodeCallBack(J3DJoint* i_joint, int param_2) {
// NONMATCHING
if (param_2 == 0) {
int jntNo = i_joint->getJntNo();
J3DModel* model = j3dSys.getModel();
@ -66,11 +65,12 @@ static int nodeCallBack(J3DJoint* i_joint, int param_2) {
}
f32 fVar1 = player->current.pos.absXZ(i_this->field_0x894);
f32 yDiff = i_this->field_0x894.y - player->current.pos.y;
if (fVar1 > i_this->field_0x914) {
fVar1 -= i_this->field_0x914;
}
s16 sVar1 = cM_atan2s(i_this->field_0x894.y - player->current.pos.y, fVar1);
s16 sVar1 = cM_atan2s(yDiff, fVar1);
if (sVar1 > 8000) {
sVar1 = 8000;
}
@ -282,7 +282,8 @@ void daObjL6Bm_c::action() {
/* 80C7D598-80C7D6CC 000AF8 0134+00 1/0 0/0 0/0 .text actionWait__11daObjL6Bm_cFv */
void daObjL6Bm_c::actionWait() {
// NONMATCHING
bool var_r28 = false;
bool var_r27 = false;
f32 fVar1;
f32 playerDistance = fopAcM_searchPlayerDistanceXZ(this);
@ -292,15 +293,26 @@ void daObjL6Bm_c::actionWait() {
fVar1 = 1000.0f;
}
if (playerDistance < fVar1 && (s16)abs((s16)(cLib_targetAngleY(fopAcM_GetPosition_p(this), fopAcM_GetPosition_p(dComIfGp_getPlayer(0))) - current.angle.y)) < 0x1000) {
if (playerDistance < fVar1) {
var_r28 = true;
}
s16 targetAngle = cLib_targetAngleY(fopAcM_GetPosition_p(this), fopAcM_GetPosition_p(dComIfGp_getPlayer(0)));
s16 angleDiff = (s16)abs((s16)(targetAngle - current.angle.y));
s16 unkBound = 0x2000;
if (angleDiff < unkBound / 2) {
var_r27 = true;
}
if (var_r28 && var_r27) {
setAction(1);
field_0x911 = 20;
} else {
s16 sVar1;
if (getArg1() == 0xFF) {
sVar1 = 0x4B0;
} else {
if (getArg1() != 0xFF) {
sVar1 = (u16)getArg1() * 100;
} else {
sVar1 = 0x4B0;
}
current.angle.y += sVar1;
}
@ -313,8 +325,8 @@ void daObjL6Bm_c::actionWait() {
/* 80C7D6CC-80C7D894 000C2C 01C8+00 1/0 0/0 0/0 .text actionFindPlayer__11daObjL6Bm_cFv */
void daObjL6Bm_c::actionFindPlayer() {
// NONMATCHING
f32 fVar1;
bool var_r28 = false;
f32 playerDistance = fopAcM_searchPlayerDistanceXZ(this);
if (getArg0() != 0xFF) {
@ -324,6 +336,10 @@ void daObjL6Bm_c::actionFindPlayer() {
}
if (playerDistance < fVar1) {
var_r28 = true;
}
if (!var_r28) {
OS_REPORT("プレイヤー離れました!\n"); // Player has left!\n
setAction(0);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -64,7 +64,7 @@ int daTag_KMsg_c::Delete() {
/* 8048E010-8048E8B8 000210 08A8+00 1/1 0/0 0/0 .text Execute__12daTag_KMsg_cFv */
// NONMATCHING Various issues: stack, getTalkAngle
int daTag_KMsg_c::Execute() {
bool r28 = false;
bool var_r28 = false;
if (home.roomNo == dComIfGp_roomControl_getStayNo()) {
if (isDelete()) {
fopAcM_delete(this);
@ -73,15 +73,17 @@ int daTag_KMsg_c::Execute() {
if (getType() == KMSG_TYPE_3) {
if (field_0x5c3 == 0) {
attention_info.flags = 0x80;
attention_info.distances[7] = 0x4a;
attention_info.distances[fopAc_attn_ETC_e] = 0x4a;
} else {
attention_info.flags = 0;
}
} else {
int angle = getTalkAngle();
int talkDistance = getTalkDis();
attention_info.distances[1] = daNpcT_getDistTableIdx(talkDistance, angle);
attention_info.distances[3] = attention_info.distances[1];
#if VERSION == VERSION_SHIELD_DEBUG
attention_info.distances[fopAc_attn_TALK_e] = daNpcT_getDistTableIdx(getTalkDis(), getTalkAngle());
#else
attention_info.distances[fopAc_attn_TALK_e] = daNpcT_getDistTableIdx(getTalkAngle(), getTalkDis());
#endif
attention_info.distances[fopAc_attn_SPEAK_e] = attention_info.distances[fopAc_attn_TALK_e];
if (getAttnPosOffset() != 1000000000.0f) {
attention_info.flags = 0xa;
} else {
@ -93,6 +95,7 @@ int daTag_KMsg_c::Execute() {
{
attention_info.flags = 0;
}
if (dComIfGp_event_runCheck()) {
if (eventInfo.checkCommandTalk()) {
u16 iVar10 = 0;
@ -114,7 +117,7 @@ int daTag_KMsg_c::Execute() {
}
} else {
r28 = true;
var_r28 = true;
if (!field_0x5c4) {
mMsgFlow.init(this, mFlowNodeNo, 0, NULL);
field_0x5c4 = true;
@ -174,36 +177,39 @@ int daTag_KMsg_c::Execute() {
attention_info.position.y += getAttnPosOffset();
}
eyePos.y += getEyePosOffset();
}
if (r28) {
f32 f31;
if (getAttnPosOffset() != 1000000000.0f) {
f31 = -0.5f * getAttnPosOffset();
} else {
f31 = -20.0f;
}
cSAngle angle = shape_angle.y;
cXyz vec60 = attention_info.position;
vec60.y += f31;
cXyz vec54;
vec54.x = vec60.x + 80.0f * angle.Sin();
vec54.y = vec60.y;
vec54.z = vec60.z + 80.0f * angle.Cos();
dBgS_LinChk lin_chk;
lin_chk.ClrSttsWallOff();
lin_chk.onBackFlag();
lin_chk.onFrontFlag();
lin_chk.Set(&vec54, &vec60, NULL);
if (dComIfG_Bgsp().LineCross(&lin_chk)) {
cXyz vec48;
cXyz vec30 = vec54 - vec60;
vec48 = lin_chk.GetCross() + vec30.norm() * 10.0f;
attention_info.position.x = vec48.x;
attention_info.position.z = vec48.z;
}
#if VERSION != VERSION_SHIELD_DEBUG
if (var_r28) {
f32 f31;
if (getAttnPosOffset() != 1000000000.0f) {
f31 = -0.5f * getAttnPosOffset();
} else {
f31 = -20.0f;
}
cSAngle angle = shape_angle.y;
cXyz vec60 = attention_info.position;
vec60.y += f31;
cXyz vec54;
vec54.x = vec60.x + 80.0f * angle.Sin();
vec54.y = vec60.y;
vec54.z = vec60.z + 80.0f * angle.Cos();
dBgS_LinChk lin_chk;
lin_chk.ClrSttsWallOff();
lin_chk.onBackFlag();
lin_chk.onFrontFlag();
lin_chk.Set(&vec54, &vec60, NULL);
if (dComIfG_Bgsp().LineCross(&lin_chk)) {
cXyz vec48;
cXyz vec30 = vec54 - vec60;
vec48 = lin_chk.GetCross() + vec30.norm() * 10.0f;
attention_info.position.x = vec48.x;
attention_info.position.z = vec48.z;
}
}
#endif
return 1;
}
return 0;