From ba4ea76d4dc5c4f1b315c33e4bf03d8881856294 Mon Sep 17 00:00:00 2001 From: Carco_21 <144170194+carter-ktb21@users.noreply.github.com> Date: Mon, 16 Jun 2025 09:40:16 -0400 Subject: [PATCH] d_a_obj_gra2 work (#2482) * Tiny start on d_a_obj_gra2 * Initial work * Solid work done * More work * work on some rolling functions and deme camera * Almost all functions worked on * All functions worked on * Fixed some BaseNpc functions I broke * PR Cleanup * PR cleanup part 2 --- include/JSystem/JParticle/JPAEmitter.h | 4 + include/d/actor/d_a_npc.h | 25 +- include/d/actor/d_a_obj_gra2.h | 409 +- include/d/actor/d_a_player.h | 4 + include/d/actor/d_a_tag_gra.h | 16 + include/d/d_msg_object.h | 4 + src/d/actor/d_a_npc2.cpp | 18 +- src/d/actor/d_a_npc3.cpp | 2 +- src/d/actor/d_a_obj_gra2.cpp | 7786 +++++++++++++----------- 9 files changed, 4725 insertions(+), 3543 deletions(-) diff --git a/include/JSystem/JParticle/JPAEmitter.h b/include/JSystem/JParticle/JPAEmitter.h index f7a3f85f854..63322b84128 100644 --- a/include/JSystem/JParticle/JPAEmitter.h +++ b/include/JSystem/JParticle/JPAEmitter.h @@ -210,6 +210,10 @@ public: JPAEmitterCallBack* getEmitterCallBackPtr() const { return mpEmtrCallBack; } u32 getAge() const { return mTick; } + void setVolumeMiniRadius(f32 param_1) { + mVolumeMinRad = param_1; + } + public: /* 0x00 */ JGeometry::TVec3 mLocalScl; /* 0x0C */ JGeometry::TVec3 mLocalTrs; diff --git a/include/d/actor/d_a_npc.h b/include/d/actor/d_a_npc.h index 5f6e1fbd029..336be3894b3 100644 --- a/include/d/actor/d_a_npc.h +++ b/include/d/actor/d_a_npc.h @@ -790,7 +790,7 @@ public: /* 8014D9BC */ int setPathInfo(u8, s8, s8); /* 8014DA48 */ void reverseDir(); /* 8014DA64 */ s32 chkPnt(cXyz); - /* 8014DAC4 */ void setNextPnt(); + /* 8014DAC4 */ BOOL setNextPnt(); /* 8014DB04 */ u16 getIdx(); /* 8014DB0C */ void setIdx(u16); /* 8014DB14 */ Vec getPntPos(u16); @@ -798,7 +798,7 @@ public: static const int MAXNUMCONTROLPNT_e = 64; -private: +public: /* 0x004 */ dPath* mPathInfo; /* 0x008 */ f32 field_0x8; /* 0x00C */ dPnt mCurvePnts[160]; @@ -806,7 +806,11 @@ private: /* 0xA0E */ u16 mCurvePntNum; /* 0xA10 */ u16 mIdx; /* 0xA12 */ s8 mDirection; - /* 0xA13 */ u8 field_0xa13[17]; + /* 0xA13 */ u8 field_0xa13; + /* 0xA14 */ s16 field_0xa14; + /* 0xA16 */ u8 field_0xa16[2]; + /* 0xA18 */ int field_0xa18; + /* 0xA1C */ u8 field_0xa1c[8]; }; class daBaseNpc_lookat_c { @@ -834,9 +838,9 @@ public: /* 8014E6C8 */ daBaseNpc_c(); /* 8014EE44 */ J3DAnmTransform* getTrnsfrmKeyAnmP(char*, int); /* 8014EE80 */ int setMcaMorfAnm(J3DAnmTransformKey*, f32, f32, int, int, int); - /* 8014EEE4 */ void setBckAnm(J3DAnmTransform*, f32, int, int, int, bool); + /* 8014EEE4 */ int setBckAnm(J3DAnmTransform*, f32, int, int, int, bool); /* 8014EF28 */ J3DAnmTransform* getTexPtrnAnmP(char*, int); - /* 8014EF64 */ void setBtpAnm(J3DAnmTexPattern*, J3DModelData*, f32, int); + /* 8014EF64 */ int setBtpAnm(J3DAnmTexPattern*, J3DModelData*, f32, int); /* 8014EFF4 */ void orderEvent(int, char*); /* 8014F0A0 */ void setEnvTevColor(); /* 8014F0FC */ void setRoomNo(); @@ -863,9 +867,11 @@ public: static dCcD_SrcCyl mCcDCyl; static dCcD_SrcSph mCcDSph; -private: +public: /* 0x56C */ dBgS_ObjAcch mAcch; - /* 0x744 */ u8 field_0x744[0x754 - 0x744]; + /* 0x744 */ char field_0x744; + /* 0x745 */ u8 field_0x745[0x74c - 0x745]; + /* 0x74C */ request_of_phase_process_class mPhase; /* 0x754 */ mDoExt_McaMorfSO* mpModelMorf; /* 0x758 */ Z2Creature mSound; /* 0x7E8 */ u32 mShadowId; @@ -876,7 +882,8 @@ private: /* 0x83C */ u16* field_0x83c; /* 0x840 */ u16 field_0x840; /* 0x842 */ u16 field_0x842; - /* 0x844 */ u8 field_0x844[0x848 - 0x844]; + /* 0x844 */ bool field_0x844; + /* 0x845 */ u8 field_0x845[0x848 - 0x845]; /* 0x848 */ s32 field_0x848; /* 0x84C */ dMsgFlow_c mMsgFlow; /* 0x898 */ u8 field_0x898[0x89A - 0x898]; @@ -918,7 +925,7 @@ public: static int m_dzb_id; static MoveBGActor_SetFunc m_set_func; -private: +public: /* 0xA14 */ dBgW* mpBgw; /* 0xA18 */ Mtx mBgMtx; }; diff --git a/include/d/actor/d_a_obj_gra2.h b/include/d/actor/d_a_obj_gra2.h index 4c21dfd1d62..5ae38ef7f7a 100644 --- a/include/d/actor/d_a_obj_gra2.h +++ b/include/d/actor/d_a_obj_gra2.h @@ -1,6 +1,7 @@ #ifndef D_A_OBJ_GRA2_H #define D_A_OBJ_GRA2_H +#include "d/actor/d_a_npc.h" #include "f_op/f_op_actor_mng.h" /** @@ -11,41 +12,122 @@ * @details * */ -class daObj_GrA_c : public fopAc_ac_c { + +class daObj_GrA_Param_c { public: + /* 80C04B1C */ virtual ~daObj_GrA_Param_c() {} + + struct Data { + /* 0x00 */ f32 field_0x00; + /* 0x04 */ f32 mGravity; + /* 0x08 */ f32 field_0x08; + /* 0x0C */ f32 field_0x0c; + /* 0x10 */ s16 field_0x10; + /* 0x12 */ s16 field_0x12; + /* 0x14 */ f32 field_0x14; + /* 0x18 */ f32 mWallR; + /* 0x1C */ f32 mWallH; + /* 0x20 */ f32 mWeight; + /* 0x24 */ f32 field_0x24; + /* 0x28 */ f32 field_0x28; + /* 0x2C */ f32 field_0x2c; + /* 0x30 */ f32 field_0x30; + /* 0x34 */ f32 field_0x34; + /* 0x38 */ f32 field_0x38; + /* 0x3C */ f32 field_0x3c; + /* 0x40 */ f32 field_0x40; + /* 0x44 */ f32 field_0x44; + /* 0x48 */ f32 field_0x48; + /* 0x4C */ f32 field_0x4c; + /* 0x50 */ f32 field_0x50; + /* 0x54 */ s16 field_0x54; + /* 0x56 */ s16 field_0x56; + /* 0x58 */ s16 field_0x58; + /* 0x5A */ s16 field_0x5a; + /* 0x5C */ s16 field_0x5c; + /* 0x5E */ s16 field_0x5e; + /* 0x60 */ f32 field_0x60; + /* 0x64 */ f32 field_0x64; + /* 0x68 */ s16 field_0x68; + /* 0x6A */ s16 field_0x6a; + /* 0x6C */ f32 field_0x6c; + /* 0x70 */ f32 field_0x70; + /* 0x74 */ f32 field_0x74; + /* 0x78 */ f32 field_0x78; + /* 0x7C */ f32 field_0x7c; + /* 0x80 */ f32 field_0x80; + /* 0x84 */ f32 field_0x84; + /* 0x88 */ s16 field_0x88; + /* 0x8A */ s16 field_0x8a; + /* 0x8C */ f32 field_0x8c; + /* 0x90 */ f32 field_0x90; + /* 0x94 */ f32 field_0x94; + /* 0x98 */ s16 field_0x98; + /* 0x9A */ s16 field_0x9a; + /* 0x9C */ f32 field_0x9c; + /* 0xA0 */ f32 field_0xa0; + /* 0xA4 */ s16 field_0xa4; + /* 0xA6 */ s16 field_0xa6; + /* 0xA8 */ f32 field_0xa8; + /* 0xAC */ s16 field_0xac; + /* 0xAE */ s16 field_0xae; + /* 0xB0 */ s16 field_0xb0; + /* 0xB2 */ s16 field_0xb2; + /* 0xB4 */ s16 field_0xb4; + /* 0xB6 */ s16 field_0xb6; + /* 0xB8 */ f32 field_0xb8; + /* 0xBC */ f32 field_0xbc; + }; + static const Data m; +}; + +class daObj_GrA_c : public daBaseNpc_moveBgActor_c { +public: + typedef int (daObj_GrA_c::*MotionFunc)(int); + typedef int (daObj_GrA_c::*Process)(void*); + class daObj_GrA_prtclMngr_c { public: - /* 80C04E14 */ ~daObj_GrA_prtclMngr_c(); - /* 80C04E50 */ daObj_GrA_prtclMngr_c(); + /* 80C04E14 */ ~daObj_GrA_prtclMngr_c() {} + /* 80C04E50 */ daObj_GrA_prtclMngr_c() {} + + /* 0x00 */ s8 field_0x0; + /* 0x01 */ u8 field_0x1[0x4 - 0x1]; + /* 0x04 */ cXyz field_0x4; + /* 0x10 */ csXyz field_0x10; + /* 0x16 */ u8 field_0x16[2]; + /* 0x18 */ cXyz field_0x18; + /* 0x24 */ dPaPo_c* field_0x24[6]; + /* 0x3C */ u8 field_0x3c[0x5c - 0x3c]; }; - /* 80BFFF58 */ void rideCallBack(dBgW*, fopAc_ac_c*, fopAc_ac_c*); + /* 80BFFF58 */ static void rideCallBack(dBgW*, fopAc_ac_c*, fopAc_ac_c*); /* 80BFFF70 */ daObj_GrA_c(); /* 80C0011C */ ~daObj_GrA_c(); - /* 80C003CC */ void create(); - /* 80C00614 */ void CreateHeap(); - /* 80C00790 */ void Delete(); - /* 80C00804 */ void Execute(f32 (**)[3][4]); - /* 80C00A44 */ void Draw(); - /* 80C00ACC */ void jointCtrl(J3DJoint*, J3DModel*); - /* 80C00D5C */ void getResName(); - /* 80C00D74 */ void getMode(); - /* 80C00DF8 */ void getPathNo(); - /* 80C00E04 */ void getTagNo(); - /* 80C00E10 */ void getJumpType(); - /* 80C00E1C */ void isDelete(); + /* 80C003CC */ cPhs__Step create(); + /* 80C00614 */ int CreateHeap(); + /* 80C00790 */ int Delete(); + /* 80C00804 */ int Execute(Mtx**); + /* 80C00A44 */ int Draw(); + /* 80C00ACC */ int jointCtrl(J3DJoint*, J3DModel*); + /* 80C00D5C */ const char* getResName(); + /* 80C00D74 */ u8 getMode(); + /* 80C00DF8 */ u8 getPathNo(); + /* 80C00E04 */ u16 getTagNo(); + /* 80C00E10 */ u16 getJumpType(); + /* 80C00E1C */ BOOL isDelete(); /* 80C00EFC */ void restart(); - /* 80C010D4 */ void init(); + /* 80C010D4 */ int init(); /* 80C013B0 */ void setBaseAnm(int, f32); /* 80C014F4 */ void setFaceAnm(int, bool, f32); /* 80C01698 */ void setFaceBtp(int); /* 80C0178C */ void setBaseMotion(int, f32); /* 80C017AC */ void setFaceMotion(int, f32); /* 80C017F0 */ void calcMotion(); - /* 80C018C0 */ void checkProcess(int (daObj_GrA_c::*)(void*)); - /* 80C018F4 */ void setProcess(int (daObj_GrA_c::*)(void*)); + /* 80C018C0 */ BOOL checkProcess(int (daObj_GrA_c::*)(void*)); + /* 80C018F4 */ int setProcess(int (daObj_GrA_c::*)(void*)); /* 80C019B8 */ void setParam(); - /* 80C01C18 */ void checkEvent(); + /* 80C01C18 */ BOOL checkEvent(); /* 80C01D7C */ void mainProc(); /* 80C01FE4 */ void adjustShapeAngle(); /* 80C01FE8 */ void setMtx(int); @@ -53,78 +135,78 @@ public: /* 80C02970 */ void setAttnPos(); /* 80C02A5C */ void drawOtherMdls(); /* 80C02A60 */ bool dbgDraw(); - /* 80C02A68 */ void ppMoveInit(); - /* 80C02AD4 */ void setLookMode(int); - /* 80C02AE8 */ void lookat(); - /* 80C0308C */ void hitChk(); - /* 80C031E4 */ void wait(void*); - /* 80C0335C */ void talk(void*); - /* 80C035B8 */ void ctrlMsgAnm(int&, int&, fopAc_ac_c*); - /* 80C03720 */ void checkTagGraSub(fopAc_ac_c*); - /* 80C03764 */ void fallAbyssCheck(); - /* 80C03830 */ void setPrtcl(); - /* 80C03B14 */ void base000(int); - /* 80C03B48 */ void base001(int); - /* 80C03B7C */ void base003(int); - /* 80C03C1C */ void base004(int); - /* 80C03CBC */ void base005(int); - /* 80C03D54 */ void base006(int); - /* 80C03D88 */ void base007(int); - /* 80C03DF0 */ void base008(int); - /* 80C03E74 */ void base009(int); - /* 80C03F14 */ void base010(int); - /* 80C03FC0 */ void base013(int); - /* 80C04118 */ void base016(int); - /* 80C04180 */ void base017(int); - /* 80C041E8 */ void base018(int); - /* 80C04260 */ void base019(int); - /* 80C042D4 */ void base020(int); - /* 80C04308 */ void base021(int); - /* 80C0433C */ void base022(int); - /* 80C04370 */ void base023(int); - /* 80C043A4 */ void base024(int); - /* 80C043D8 */ void base025(int); - /* 80C0440C */ void base026(int); - /* 80C04440 */ void face000(int); - /* 80C04478 */ void face003(int); - /* 80C04518 */ void face004(int); - /* 80C045B8 */ void face005(int); - /* 80C045F0 */ void face006(int); - /* 80C04628 */ void face007(int); - /* 80C04660 */ void face008(int); - /* 80C04700 */ void face009(int); - /* 80C047A0 */ void face010(int); - /* 80C047D8 */ void face011(int); - /* 80C04810 */ void face012(int); - /* 80C04848 */ void face016(int); - /* 80C04880 */ void face017(int); - /* 80C048B8 */ void face999(int); - /* 80C048F8 */ void evtcutTalk(int, int); + /* 80C02A68 */ int ppMoveInit(); + /* 80C02AD4 */ int setLookMode(int); + /* 80C02AE8 */ int lookat(); + /* 80C0308C */ int hitChk(); + /* 80C031E4 */ int wait(void*); + /* 80C0335C */ int talk(void*); + /* 80C035B8 */ int ctrlMsgAnm(int&, int&, fopAc_ac_c*); + /* 80C03720 */ bool checkTagGraSub(fopAc_ac_c*); + /* 80C03764 */ bool fallAbyssCheck(); + /* 80C03830 */ int setPrtcl(); + /* 80C03B14 */ int base000(int); + /* 80C03B48 */ int base001(int); + /* 80C03B7C */ int base003(int); + /* 80C03C1C */ int base004(int); + /* 80C03CBC */ int base005(int); + /* 80C03D54 */ int base006(int); + /* 80C03D88 */ int base007(int); + /* 80C03DF0 */ int base008(int); + /* 80C03E74 */ int base009(int); + /* 80C03F14 */ int base010(int); + /* 80C03FC0 */ int base013(int); + /* 80C04118 */ int base016(int); + /* 80C04180 */ int base017(int); + /* 80C041E8 */ int base018(int); + /* 80C04260 */ int base019(int); + /* 80C042D4 */ int base020(int); + /* 80C04308 */ int base021(int); + /* 80C0433C */ int base022(int); + /* 80C04370 */ int base023(int); + /* 80C043A4 */ int base024(int); + /* 80C043D8 */ int base025(int); + /* 80C0440C */ int base026(int); + /* 80C04440 */ int face000(int); + /* 80C04478 */ int face003(int); + /* 80C04518 */ int face004(int); + /* 80C045B8 */ int face005(int); + /* 80C045F0 */ int face006(int); + /* 80C04628 */ int face007(int); + /* 80C04660 */ int face008(int); + /* 80C04700 */ int face009(int); + /* 80C047A0 */ int face010(int); + /* 80C047D8 */ int face011(int); + /* 80C04810 */ int face012(int); + /* 80C04848 */ int face016(int); + /* 80C04880 */ int face017(int); + /* 80C048B8 */ int face999(int); + /* 80C048F8 */ int evtcutTalk(int, int); /* 80C04A0C */ void setFaceTalkAfter(); - /* 80C0536C */ void getSrchCircleR(); - /* 80C053C4 */ void standWait(void*); - /* 80C05920 */ void walk(void*); - /* 80C05F64 */ void defence(void*); - /* 80C061F4 */ void toStone(void*); - /* 80C067D8 */ void step(void*); - /* 80C06CDC */ void rollReturn(void*); - /* 80C0780C */ void soldierDemoSkip(); - /* 80C078A8 */ void soldierDemo(void*); - /* 80C07C40 */ void getSrchLinkR(); - /* 80C07C98 */ void getSrchGraR(); - /* 80C07CF0 */ void getSpeed(); - /* 80C07D38 */ void standRoll(void*); - /* 80C083F0 */ void rollDemo(void*); - /* 80C08804 */ void rollAttack(void*); - /* 80C09298 */ void rollAttacked(void*); - /* 80C09918 */ void rollEscape(void*); + /* 80C0536C */ f32 getSrchCircleR(); + /* 80C053C4 */ int standWait(void*); + /* 80C05920 */ int walk(void*); + /* 80C05F64 */ int defence(void*); + /* 80C061F4 */ int toStone(void*); + /* 80C067D8 */ int step(void*); + /* 80C06CDC */ int rollReturn(void*); + /* 80C0780C */ int soldierDemoSkip(); + /* 80C078A8 */ int soldierDemo(void*); + /* 80C07C40 */ f32 getSrchLinkR(); + /* 80C07C98 */ f32 getSrchGraR(); + /* 80C07CF0 */ f32 getSpeed(); + /* 80C07D38 */ int standRoll(void*); + /* 80C083F0 */ int rollDemo(void*); + /* 80C08804 */ int rollAttack(void*); + /* 80C09298 */ int rollAttacked(void*); + /* 80C09918 */ int rollEscape(void*); /* 80C09F08 */ void rollLanding(); - /* 80C0A018 */ void thrown(void*); + /* 80C0A018 */ int thrown(void*); /* 80C0A120 */ void demo_camera(); /* 80C0AF94 */ void rollAttackedDemo(); /* 80C0B9AC */ void graThrowDemo(); /* 80C0BD90 */ void setCarryStatus(); - /* 80C0BE5C */ void checkThrow(); + /* 80C0BE5C */ bool checkThrow(); /* 80C0BF34 */ void calcCatchPos(f32, int); /* 80C0C348 */ void initCrazyBeforeCatch(int); /* 80C0C364 */ void executeCrazyBeforeCatch(); @@ -134,44 +216,145 @@ public: /* 80C0C690 */ void executeCrazyThrow(); /* 80C0C84C */ void initCrazyAttack(); /* 80C0CA64 */ void executeCrazyJumping(); - /* 80C0CDBC */ void modeChangeCheck(); - /* 80C0CF98 */ void checkGraSub(fopAc_ac_c*); - /* 80C0D000 */ void waitDemo(void*); - /* 80C0D2FC */ void skipDemoGra(); - /* 80C0D3E0 */ void startDemo(void*); - /* 80C0EFC4 */ void turn(s16, f32, int); - /* 80C0F17C */ void turn_step(s16, int, int, int); - /* 80C0F330 */ void chkFindPlayer2(int, s16); - /* 80C0F668 */ void chkPointInArea(cXyz, cXyz, cXyz, s16); - /* 80C0F5A4 */ void chkPointInArea(cXyz, cXyz, f32, f32, f32, s16); - /* 80C0F6E0 */ void chkActorInSight2(fopAc_ac_c*, f32, s16); - /* 80C0F7EC */ void getAttentionPos(fopAc_ac_c*); - /* 80C0F860 */ void standWaitJump(void*); + /* 80C0CDBC */ BOOL modeChangeCheck(); + /* 80C0CF98 */ BOOL checkGraSub(fopAc_ac_c*); + /* 80C0D000 */ int waitDemo(void*); + /* 80C0D2FC */ int skipDemoGra(); + /* 80C0D3E0 */ int startDemo(void*); + /* 80C0EFC4 */ BOOL turn(s16, f32, int); + /* 80C0F17C */ BOOL turn_step(s16, int, int, int); + /* 80C0F330 */ BOOL chkFindPlayer2(int, s16); + /* 80C0F668 */ BOOL chkPointInArea(cXyz, cXyz, cXyz, s16); + /* 80C0F5A4 */ BOOL chkPointInArea(cXyz, cXyz, f32, f32, f32, s16); + /* 80C0F6E0 */ BOOL chkActorInSight2(fopAc_ac_c*, f32, s16); + /* 80C0F7EC */ cXyz getAttentionPos(fopAc_ac_c*); + /* 80C0F860 */ int standWaitJump(void*); - bool checkNpcObjGra() { return field_0xa7e == 1; } + bool checkNpcObjGra() { return mMode == 1; } void setCrazyDash() { field_0xa48 |= 4; } void setCrazyCatch() { field_0xa48 |= 2; } void setCrazyThrowLeft() { field_0xa48 |= 8; } void setCrazyThrowRight() { field_0xa48 |= 0x10; } - static u8 mBaseMotionList[264]; - static u8 mFaceMotionList[168]; + static MotionFunc mBaseMotionList[22]; + static MotionFunc mFaceMotionList[14]; + + bool isFirstGra() { return field_0x1fe8 == 0; } + + void setDemoMode(s16 mDemoMode) { mDemoCamMode = mDemoMode; } private: - /* 0x0568 */ u8 field_0x568[0xA48 - 0x568]; /* 0x0A48 */ u16 field_0xa48; - /* 0x0A4A */ u8 field_0xa4a[0xA7E - 0xA4A]; - /* 0x0A7E */ u8 field_0xa7e; - /* 0x0A7F */ u8 field_0xa7f[0x20a4 - 0xA7F]; + /* 0x0A4A */ u8 field_0xa4a[0xa4c - 0xa4a]; + /* 0x0A4C */ daObj_GrA_Param_c* field_0xa4c; + /* 0x0A50 */ Process field_0xa50; + /* 0x0A5C */ request_of_phase_process_class* field_0xa5c[8]; + /* 0x0A7C */ u16 field_0xa7c; + /* 0x0A7E */ u8 mMode; + /* 0x0A7F */ u8 field_0xa7f; + /* 0x0A80 */ u8 field_0xa80[0xa88 - 0xa80]; + /* 0x0A88 */ int field_0xa88; + /* 0x0A8C */ u8 field_0xa8c; + /* 0x0A8D */ u8 field_0xa8d; + /* 0x0A8E */ u8 field_0xa8e; + /* 0x0A8F */ u8 field_0xa8f; + /* 0x0A90 */ u16 field_0xa90; + /* 0x0A92 */ u16 field_0xa92; + /* 0x0A94 */ f32 field_0xa94; + /* 0x0A98 */ f32 field_0xa98; + /* 0x0A9C */ int field_0xa9c; + /* 0x0AA0 */ int field_0xaa0; + /* 0x0AA4 */ int field_0xaa4; + /* 0x0AA8 */ int field_0xaa8; + /* 0x0AAC */ int field_0xaac; + /* 0x0AB0 */ daBaseNpc_acMngr_c field_0xab0; + /* 0x0AB8 */ daObj_GrA_prtclMngr_c field_0xab8[6]; + /* 0x0CE0 */ dCcD_Sph field_0xce0[2]; + /* 0x0F50 */ dCcD_Cyl field_0xf50; + /* 0x108C */ cXyz field_0x108c; + /* 0x1098 */ f32 field_0x1098; + /* 0x109C */ int field_0x109c; + /* 0x10A0 */ int field_0x10a0; + /* 0x10A4 */ int field_0x10a4; + /* 0x10A8 */ int field_0x10a8; + /* 0x10AC */ u8 field_0x10ac; + /* 0x10AD */ u8 field_0x10ad[0x10bc - 0x10ad]; + /* 0x10BC */ int field_0x10bc; + /* 0x10C0 */ u8 field_0x10c0[0x10c4 - 0x10c0]; + /* 0x10C4 */ int field_0x10c4; + /* 0x10C8 */ cBgS_GndChk field_0x10c8[5]; + /* 0x11F4 */ dBgS_LinkLinChk field_0x11f4[5]; + /* 0x1424 */ cXyz field_0x1424[5]; + /* 0x1460 */ cXyz field_0x1460[5]; + /* 0x149C */ u8 field_0x149c[0x14b0 - 0x149c]; + /* 0x14B0 */ int field_0x14b0; + /* 0x14B4 */ cXyz field_0x14b4[5]; + /* 0x14F0 */ f32 field_0x14f0; + /* 0x14F4 */ int field_0x14f4; + /* 0x14F8 */ daBaseNpc_acMngr_c field_0x14f8; + /* 0x1500 */ u8 field_0x1500; + /* 0x1504 */ int mLookMode; + /* 0x1508 */ int field_0x1508; + /* 0x150C */ int field_0x150c; + /* 0x1510 */ u8 field_0x1510[0x1518 - 0x1510]; + /* 0x1518 */ int field_0x1518; + /* 0x151C */ u8 field_0x151c[0x1520 - 0x151c]; + /* 0x1520 */ int field_0x1520; + /* 0x1524 */ u8 field_0x1524[0x1528 - 0x1524]; + /* 0x1528 */ daBaseNpc_path_c field_0x1528; + /* 0x1F4C */ dBgS_LinkLinChk field_0x1f4c; + /* 0x1FBC */ int field_0x1fbc; + /* 0x1FC0 */ int field_0x1fc0; + /* 0x1FC4 */ u8 field_0x1fc4; + /* 0x1FC8 */ int field_0x1fc8; + /* 0x1FCC */ int field_0x1fcc; + /* 0x1FD0 */ f32 field_0x1fd0; + /* 0x1FD4 */ s16 field_0x1fd4; + /* 0x1FD6 */ s16 field_0x1fd6; + /* 0x1FD8 */ s16 field_0x1fd8; + /* 0x1FDC */ int field_0x1fdc; + /* 0x1FE0 */ u8 field_0x1fe0; + /* 0x1FE4 */ int field_0x1fe4; + /* 0x1FE8 */ s8 field_0x1fe8; + /* 0x1FE9 */ u8 field_0x1fe9; + /* 0x1FEC */ int field_0x1fec; + /* 0x1FF0 */ int field_0x1ff0; + /* 0x1FF4 */ u8 field_0x1ff4; + /* 0x1FF8 */ int field_0x1ff8; + /* 0x1FFC */ u8 field_0x1ffc; + /* 0x2000 */ int field_0x2000; + /* 0x2004 */ u8 field_0x2004; + /* 0x2005 */ s8 field_0x2005; + /* 0x2008 */ f32 field_0x2008; + /* 0x200C */ u16 field_0x200c; + /* 0x2010 */ int field_0x2010; + /* 0x2014 */ u8 field_0x2014; + /* 0x2018 */ int field_0x2018; + /* 0x201C */ s8 field_0x201c; + /* 0x201D */ u8 field_0x201d; + /* 0x2020 */ u32 field_0x2020[3]; + /* 0x202C */ u32 field_0x202c; + /* 0x2030 */ u8 field_0x2030; + /* 0x2031 */ u8 field_0x2031; + /* 0x2032 */ u8 field_0x2032; + /* 0x2034 */ cXyz mGraPos; + /* 0x2040 */ f32 mGraExtent; + /* 0x2044 */ f32 mGraHeight; + /* 0x2048 */ s16 mGraMode; + /* 0x204C */ daBaseNpc_acMngr_c field_0x204c; + /* 0x2054 */ s16 mDemoCamMode; + /* 0x2056 */ s16 field_0x2056; + /* 0x2058 */ cXyz mDemoCamEye; + /* 0x2064 */ cXyz mDemoCamCenter; + /* 0x2070 */ f32 mDemoCamFovy; + /* 0x2074 */ cXyz field_0x2074; + /* 0x2080 */ cXyz field_0x2080; + /* 0x208C */ f32 field_0x208c; + /* 0x2090 */ cXyz field_0x2090; + /* 0x209C */ int field_0x209c; + /* 0x20A0 */ u8 field_0x20a0; }; STATIC_ASSERT(sizeof(daObj_GrA_c) == 0x20a4); -class daObj_GrA_Param_c { -public: - /* 80C04B1C */ ~daObj_GrA_Param_c(); - - static u8 const m[192]; -}; - #endif /* D_A_OBJ_GRA2_H */ diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index b0d8935b3a2..b381c8be62a 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -974,6 +974,10 @@ public: } } + void offGoronUpStopCancel() { + offNoResetFlg0(FLG0_UNK_200000); + } + s16 getBodyAngleX() const { return mBodyAngle.x; } s16 getBodyAngleY() const { return mBodyAngle.y; } diff --git a/include/d/actor/d_a_tag_gra.h b/include/d/actor/d_a_tag_gra.h index 3bd492dabf3..7586d399182 100644 --- a/include/d/actor/d_a_tag_gra.h +++ b/include/d/actor/d_a_tag_gra.h @@ -13,6 +13,22 @@ public: return (fopAcM_GetParam(this) >> 16) & 0xFF; } + s16 getGraNo() { + return fopAcM_GetParam(this) & 0xFF; + } + + cXyz getGraPos() { + return home.pos; + } + + f32 getGraExtent() { + return scale.x * 100.0f; + } + + f32 getGraHeight() { + return scale.y * 100.0f; + } + int create() { fopAcM_SetupActor(this, daTagGra_c); diff --git a/include/d/d_msg_object.h b/include/d/d_msg_object.h index c605ff9066d..051516069db 100644 --- a/include/d/d_msg_object.h +++ b/include/d/d_msg_object.h @@ -544,6 +544,10 @@ inline s16 dMsgObject_getSelectBombPrice() { dMsgObject_getMsgObjectClass()->getSelectBombPrice(); } +inline bool dMsgObject_isMouthCheck() { + return dMsgObject_getMsgObjectClass()->isMouthCheck(); +} + class dMsgObject_HowlHIO_c { public: /* 80232AEC */ dMsgObject_HowlHIO_c(); diff --git a/src/d/actor/d_a_npc2.cpp b/src/d/actor/d_a_npc2.cpp index 556625e862d..d63cffe1e3b 100644 --- a/src/d/actor/d_a_npc2.cpp +++ b/src/d/actor/d_a_npc2.cpp @@ -47,11 +47,11 @@ static BOOL daBaseNpc_subIdx(int i_step, int i_num, u16* i_idx, BOOL i_closed) { } /* 8014D5C4-8014D620 147F04 005C+00 2/2 0/0 0/0 .text daBaseNpc_incIdx__FiPUsii */ -static void daBaseNpc_incIdx(int i_pathNo, u16* i_pathIdx, BOOL i_pathClosed, int i_pathDirection) { +static BOOL daBaseNpc_incIdx(int i_pathNo, u16* i_pathIdx, BOOL i_pathClosed, int i_pathDirection) { if (i_pathDirection < 0) { - daBaseNpc_subIdx(1, i_pathNo, i_pathIdx, i_pathClosed); + return daBaseNpc_subIdx(1, i_pathNo, i_pathIdx, i_pathClosed); } else { - daBaseNpc_addIdx(1, i_pathNo, i_pathIdx, i_pathClosed); + return daBaseNpc_addIdx(1, i_pathNo, i_pathIdx, i_pathClosed); } } @@ -180,8 +180,8 @@ s32 daBaseNpc_path_c::chkPnt(cXyz i_pos) { } /* 8014DAC4-8014DB04 148404 0040+00 0/0 0/0 3/3 .text setNextPnt__16daBaseNpc_path_cFv */ -void daBaseNpc_path_c::setNextPnt() { - daBaseNpc_incIdx(mPathInfo->m_num, &mIdx, dPath_ChkClose(mPathInfo), mDirection); +BOOL daBaseNpc_path_c::setNextPnt() { + return daBaseNpc_incIdx(mPathInfo->m_num, &mIdx, dPath_ChkClose(mPathInfo), mDirection); } /* 8014DB04-8014DB0C 148444 0008+00 0/0 0/0 3/3 .text getIdx__16daBaseNpc_path_cFv */ @@ -475,9 +475,9 @@ int daBaseNpc_c::setMcaMorfAnm(J3DAnmTransformKey* i_anm, f32 i_speed, f32 i_mor /* 8014EEE4-8014EF28 149824 0044+00 0/0 0/0 1/1 .text * setBckAnm__11daBaseNpc_cFP15J3DAnmTransformfiiib */ -void daBaseNpc_c::setBckAnm(J3DAnmTransform* i_anm, f32 i_speed, int i_mode, int i_start, +int daBaseNpc_c::setBckAnm(J3DAnmTransform* i_anm, f32 i_speed, int i_mode, int i_start, int i_end, bool i_modify) { - mBck.init(i_anm, TRUE, i_mode, i_speed, i_start, i_end, i_modify); + return mBck.init(i_anm, TRUE, i_mode, i_speed, i_start, i_end, i_modify); } /* 8014EF28-8014EF64 149868 003C+00 0/0 0/0 1/1 .text getTexPtrnAnmP__11daBaseNpc_cFPci @@ -488,9 +488,9 @@ J3DAnmTransform* daBaseNpc_c::getTexPtrnAnmP(char* i_arcName, int i_resIdx) { /* 8014EF64-8014EFA4 1498A4 0040+00 0/0 0/0 1/1 .text * setBtpAnm__11daBaseNpc_cFP16J3DAnmTexPatternP12J3DModelDatafi */ -void daBaseNpc_c::setBtpAnm(J3DAnmTexPattern* i_anm, J3DModelData* i_modelData, f32 i_speed, +int daBaseNpc_c::setBtpAnm(J3DAnmTexPattern* i_anm, J3DModelData* i_modelData, f32 i_speed, int i_mode) { - mBtp.init(i_modelData, i_anm, TRUE, i_mode, i_speed, 0, -1); + return mBtp.init(i_modelData, i_anm, TRUE, i_mode, i_speed, 0, -1); } /* 8014EFA4-8014EFF0 1498E4 004C+00 2/0 0/0 2/0 .text attnSttsOn__11daBaseNpc_cFii */ diff --git a/src/d/actor/d_a_npc3.cpp b/src/d/actor/d_a_npc3.cpp index b89b652ab43..00ec3e979a4 100644 --- a/src/d/actor/d_a_npc3.cpp +++ b/src/d/actor/d_a_npc3.cpp @@ -1,7 +1,7 @@ #include "d/actor/d_a_npc.h" #include "d/d_bg_w.h" -static void daBaseNpc_incIdx(int i_pathNo, u16* i_pathIdx, int i_pathClosed, int i_pathDirection); +static BOOL daBaseNpc_incIdx(int i_pathNo, u16* i_pathIdx, BOOL i_pathClosed, int i_pathDirection); static void daBaseNpc_decIdx(int i_pathNo, u16* i_pathIdx, int i_pathClosed, int i_pathDirection); static f32 daNpcBase_BBasis(int i_deg, int i_pntNo, int i_knotNo, int* i_knotVector_p); diff --git a/src/d/actor/d_a_obj_gra2.cpp b/src/d/actor/d_a_obj_gra2.cpp index 5c72216101e..a3938bbeb2a 100644 --- a/src/d/actor/d_a_obj_gra2.cpp +++ b/src/d/actor/d_a_obj_gra2.cpp @@ -4,1637 +4,324 @@ */ #include "d/actor/d_a_obj_gra2.h" +#include "Z2AudioLib/Z2Instances.h" +#include "d/actor/d_a_tag_gra.h" +#include "d/d_bg_w.h" +#include "d/d_cc_uty.h" +#include "d/d_com_inf_game.h" +#include "d/d_com_inf_actor.h" +#ifdef DEBUG +#include "d/d_debug_viewer.h" +#endif #include "dol2asm.h" #include "d/d_camera.h" - -// -// Forward References: -// - -extern "C" static void jointCtrlCallBack__FP8J3DJointi(); -extern "C" void rideCallBack__11daObj_GrA_cFP4dBgWP10fopAc_ac_cP10fopAc_ac_c(); -extern "C" void __ct__11daObj_GrA_cFv(); -extern "C" void __dt__11daObj_GrA_cFv(); -extern "C" void create__11daObj_GrA_cFv(); -extern "C" void CreateHeap__11daObj_GrA_cFv(); -extern "C" void Delete__11daObj_GrA_cFv(); -extern "C" void Execute__11daObj_GrA_cFPPA3_A4_f(); -extern "C" void Draw__11daObj_GrA_cFv(); -extern "C" void jointCtrl__11daObj_GrA_cFP8J3DJointP8J3DModel(); -extern "C" void getResName__11daObj_GrA_cFv(); -extern "C" void getMode__11daObj_GrA_cFv(); -extern "C" void getPathNo__11daObj_GrA_cFv(); -extern "C" void getTagNo__11daObj_GrA_cFv(); -extern "C" void getJumpType__11daObj_GrA_cFv(); -extern "C" void isDelete__11daObj_GrA_cFv(); -extern "C" void restart__11daObj_GrA_cFv(); -extern "C" void init__11daObj_GrA_cFv(); -extern "C" void setBaseAnm__11daObj_GrA_cFif(); -extern "C" void setFaceAnm__11daObj_GrA_cFibf(); -extern "C" void setFaceBtp__11daObj_GrA_cFi(); -extern "C" void setBaseMotion__11daObj_GrA_cFif(); -extern "C" void setFaceMotion__11daObj_GrA_cFif(); -extern "C" void calcMotion__11daObj_GrA_cFv(); -extern "C" void checkProcess__11daObj_GrA_cFM11daObj_GrA_cFPCvPvPv_i(); -extern "C" void setProcess__11daObj_GrA_cFM11daObj_GrA_cFPCvPvPv_i(); -extern "C" static void getDistTableIdx__Fii(); -extern "C" void setParam__11daObj_GrA_cFv(); -extern "C" void checkEvent__11daObj_GrA_cFv(); -extern "C" void mainProc__11daObj_GrA_cFv(); -extern "C" void adjustShapeAngle__11daObj_GrA_cFv(); -extern "C" void setMtx__11daObj_GrA_cFi(); -extern "C" void setCollisions__11daObj_GrA_cFv(); -extern "C" void setAttnPos__11daObj_GrA_cFv(); -extern "C" void drawOtherMdls__11daObj_GrA_cFv(); -extern "C" bool dbgDraw__11daObj_GrA_cFv(); -extern "C" void ppMoveInit__11daObj_GrA_cFv(); -extern "C" void setLookMode__11daObj_GrA_cFi(); -extern "C" void lookat__11daObj_GrA_cFv(); -extern "C" void hitChk__11daObj_GrA_cFv(); -extern "C" void wait__11daObj_GrA_cFPv(); -extern "C" void talk__11daObj_GrA_cFPv(); -extern "C" void ctrlMsgAnm__11daObj_GrA_cFRiRiP10fopAc_ac_c(); -extern "C" static void s_sub__FPvPv(); -extern "C" void checkTagGraSub__11daObj_GrA_cFP10fopAc_ac_c(); -extern "C" void fallAbyssCheck__11daObj_GrA_cFv(); -extern "C" void setPrtcl__11daObj_GrA_cFv(); -extern "C" void base000__11daObj_GrA_cFi(); -extern "C" void base001__11daObj_GrA_cFi(); -extern "C" void base003__11daObj_GrA_cFi(); -extern "C" void base004__11daObj_GrA_cFi(); -extern "C" void base005__11daObj_GrA_cFi(); -extern "C" void base006__11daObj_GrA_cFi(); -extern "C" void base007__11daObj_GrA_cFi(); -extern "C" void base008__11daObj_GrA_cFi(); -extern "C" void base009__11daObj_GrA_cFi(); -extern "C" void base010__11daObj_GrA_cFi(); -extern "C" void base013__11daObj_GrA_cFi(); -extern "C" void base016__11daObj_GrA_cFi(); -extern "C" void base017__11daObj_GrA_cFi(); -extern "C" void base018__11daObj_GrA_cFi(); -extern "C" void base019__11daObj_GrA_cFi(); -extern "C" void base020__11daObj_GrA_cFi(); -extern "C" void base021__11daObj_GrA_cFi(); -extern "C" void base022__11daObj_GrA_cFi(); -extern "C" void base023__11daObj_GrA_cFi(); -extern "C" void base024__11daObj_GrA_cFi(); -extern "C" void base025__11daObj_GrA_cFi(); -extern "C" void base026__11daObj_GrA_cFi(); -extern "C" void face000__11daObj_GrA_cFi(); -extern "C" void face003__11daObj_GrA_cFi(); -extern "C" void face004__11daObj_GrA_cFi(); -extern "C" void face005__11daObj_GrA_cFi(); -extern "C" void face006__11daObj_GrA_cFi(); -extern "C" void face007__11daObj_GrA_cFi(); -extern "C" void face008__11daObj_GrA_cFi(); -extern "C" void face009__11daObj_GrA_cFi(); -extern "C" void face010__11daObj_GrA_cFi(); -extern "C" void face011__11daObj_GrA_cFi(); -extern "C" void face012__11daObj_GrA_cFi(); -extern "C" void face016__11daObj_GrA_cFi(); -extern "C" void face017__11daObj_GrA_cFi(); -extern "C" void face999__11daObj_GrA_cFi(); -extern "C" void evtcutTalk__11daObj_GrA_cFii(); -extern "C" void setFaceTalkAfter__11daObj_GrA_cFv(); -extern "C" static void daObj_GrA_Create__FPv(); -extern "C" static void daObj_GrA_Delete__FPv(); -extern "C" static void daObj_GrA_Execute__FPv(); -extern "C" static void daObj_GrA_Draw__FPv(); -extern "C" static bool daObj_GrA_IsDelete__FPv(); -extern "C" void __dt__17daObj_GrA_Param_cFv(); -extern "C" void __dt__16daBaseNpc_path_cFv(); -extern "C" void __ct__4cXyzFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__4cXyzFv(); -extern "C" void __dt__8dCcD_SphFv(); -extern "C" void __ct__8dCcD_SphFv(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__Q211daObj_GrA_c21daObj_GrA_prtclMngr_cFv(); -extern "C" void __ct__Q211daObj_GrA_c21daObj_GrA_prtclMngr_cFv(); -extern "C" void __dt__18daBaseNpc_acMngr_cFv(); -extern "C" void __dt__23daBaseNpc_moveBgActor_cFv(); -extern "C" bool Draw__23daBaseNpc_moveBgActor_cFv(); -extern "C" bool Create__23daBaseNpc_moveBgActor_cFv(); -extern "C" bool IsDelete__23daBaseNpc_moveBgActor_cFv(); -extern "C" bool ToFore__23daBaseNpc_moveBgActor_cFv(); -extern "C" bool ToBack__23daBaseNpc_moveBgActor_cFv(); -extern "C" bool CreateHeap__23daBaseNpc_moveBgActor_cFv(); -extern "C" bool Execute__23daBaseNpc_moveBgActor_cFPPA3_A4_f(); -extern "C" bool Delete__23daBaseNpc_moveBgActor_cFv(); -extern "C" void func_80C04F3C(void* _this, int*); -extern "C" void func_80C04F58(void* _this, s16*); -extern "C" void __sinit_d_a_obj_gra2_cpp(); -extern "C" void getSrchCircleR__11daObj_GrA_cFv(); -extern "C" void standWait__11daObj_GrA_cFPv(); -extern "C" void walk__11daObj_GrA_cFPv(); -extern "C" void defence__11daObj_GrA_cFPv(); -extern "C" void toStone__11daObj_GrA_cFPv(); -extern "C" void step__11daObj_GrA_cFPv(); -extern "C" void rollReturn__11daObj_GrA_cFPv(); -extern "C" void soldierDemoSkip__11daObj_GrA_cFv(); -extern "C" void soldierDemo__11daObj_GrA_cFPv(); -extern "C" void getSrchLinkR__11daObj_GrA_cFv(); -extern "C" void getSrchGraR__11daObj_GrA_cFv(); -extern "C" void getSpeed__11daObj_GrA_cFv(); -extern "C" void standRoll__11daObj_GrA_cFPv(); -extern "C" void rollDemo__11daObj_GrA_cFPv(); -extern "C" void rollAttack__11daObj_GrA_cFPv(); -extern "C" void rollAttacked__11daObj_GrA_cFPv(); -extern "C" void rollEscape__11daObj_GrA_cFPv(); -extern "C" void rollLanding__11daObj_GrA_cFv(); -extern "C" void thrown__11daObj_GrA_cFPv(); -extern "C" void demo_camera__11daObj_GrA_cFv(); -extern "C" void rollAttackedDemo__11daObj_GrA_cFv(); -extern "C" void graThrowDemo__11daObj_GrA_cFv(); -extern "C" void setCarryStatus__11daObj_GrA_cFv(); -extern "C" void checkThrow__11daObj_GrA_cFv(); -extern "C" void calcCatchPos__11daObj_GrA_cFfi(); -extern "C" void initCrazyBeforeCatch__11daObj_GrA_cFi(); -extern "C" void executeCrazyBeforeCatch__11daObj_GrA_cFv(); -extern "C" void initCrazyCatch__11daObj_GrA_cFi(); -extern "C" void executeCrazyCatch__11daObj_GrA_cFv(); -extern "C" void initCrazyThrow__11daObj_GrA_cFi(); -extern "C" void executeCrazyThrow__11daObj_GrA_cFv(); -extern "C" void initCrazyAttack__11daObj_GrA_cFv(); -extern "C" void executeCrazyJumping__11daObj_GrA_cFv(); -extern "C" void modeChangeCheck__11daObj_GrA_cFv(); -extern "C" void getGraPos__10daTagGra_cFv(); -extern "C" static void s_sub2__FPvPv(); -extern "C" void checkGraSub__11daObj_GrA_cFP10fopAc_ac_c(); -extern "C" void waitDemo__11daObj_GrA_cFPv(); -extern "C" void skipDemoGra__11daObj_GrA_cFv(); -extern "C" static void skipCallBack__FPvi(); -extern "C" void startDemo__11daObj_GrA_cFPv(); -extern "C" void turn__11daObj_GrA_cFsfi(); -extern "C" void turn_step__11daObj_GrA_cFsiii(); -extern "C" void chkFindPlayer2__11daObj_GrA_cFis(); -extern "C" void getDistTable__12dAttention_cFi(); -extern "C" void chkPointInArea__11daObj_GrA_cF4cXyz4cXyzfffs(); -extern "C" void chkPointInArea__11daObj_GrA_cF4cXyz4cXyz4cXyzs(); -extern "C" void chkActorInSight2__11daObj_GrA_cFP10fopAc_ac_cfs(); -extern "C" void getAttentionPos__11daObj_GrA_cFP10fopAc_ac_c(); -extern "C" void standWaitJump__11daObj_GrA_cFPv(); -extern "C" u8 const m__17daObj_GrA_Param_c[192]; -extern "C" extern char const* const d_a_obj_gra2__stringBase0; -extern "C" u8 mBaseMotionList__11daObj_GrA_c[264]; -extern "C" u8 mFaceMotionList__11daObj_GrA_c[168]; - -// -// External References: -// - -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void transM__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void scaleM__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void ZXYrotS__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void changeBckOnly__13mDoExt_bckAnmFP15J3DAnmTransform(); -extern "C" void setMorf__13mDoExt_morf_cFf(); -extern "C" void -__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl(); -extern "C" void modelCalc__16mDoExt_McaMorfSOFv(); -extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv(); -extern "C" void fopAc_IsActor__FPv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz(); -extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_orderPotentialEvent__FP10fopAc_ac_cUsUsUs(); -extern "C" void fopAcM_otherBgCheck__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void lineCheck__11fopAcM_lc_cFPC4cXyzPC4cXyzPC10fopAc_ac_c(); -extern "C" void fpcEx_Search__FPFPvPv_PvPv(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGs_wolfeye_effect_check__Fv(); -extern "C" void onSwitch__12dSv_danBit_cFi(); -extern "C" void isSwitch__12dSv_danBit_cCFi(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void getObjectResName2Index__14dRes_control_cFPCcPCc(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void setSkipProc__14dEvt_control_cFPvPFPvi_ii(); -extern "C" void onSkipFade__14dEvt_control_cFv(); -extern "C" void endCheck__16dEvent_manager_cFs(); -extern "C" void ChkPresentEnd__16dEvent_manager_cFv(); -extern "C" void getEmitter__Q213dPa_control_c7level_cFUl(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void -setPoly__13dPa_control_cFUlUsR13cBgS_PolyInfoPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyziP18dPa_levelEcallBackScPC4cXyz(); -extern "C" void init__7dPaPo_cFP9dBgS_Acchff(); -extern "C" void setEffectCenter__7dPaPo_cFPC12dKy_tevstr_cPC4cXyzUlUlPC4cXyzPC5csXyzPC4cXyzScff(); -extern "C" void StartShock__12dVibration_cFii4cXyz(); -extern "C" void StartQuake__12dVibration_cFii4cXyz(); -extern "C" void StopQuake__12dVibration_cFi(); -extern "C" void CheckQuake__12dVibration_cFv(); -extern "C" void Release__4cBgSFP9dBgW_Base(); -extern "C" void LineCross__4cBgSFP11cBgS_LinChk(); -extern "C" void GetActorPointer__4cBgSCFi(); -extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c(); -extern "C" void SetWall__12dBgS_AcchCirFff(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void __ct__11dBgS_LinChkFv(); -extern "C" void __dt__11dBgS_LinChkFv(); -extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c(); -extern "C" void __ct__15dBgS_LinkLinChkFv(); -extern "C" void __dt__15dBgS_LinkLinChkFv(); -extern "C" void GetAc__22dCcD_GAtTgCoCommonBaseFv(); -extern "C" void Move__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void __dt__12dCcD_GObjInfFv(); -extern "C" void ChkAtHit__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObj__12dCcD_GObjInfFv(); -extern "C" void ChkCoHit__12dCcD_GObjInfFv(); -extern "C" void GetCoHitObj__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void def_se_set__FP10Z2CreatureP8cCcD_ObjUlP10fopAc_ac_c(); -extern "C" void __ct__18daBaseNpc_acMngr_cFv(); -extern "C" void entry__18daBaseNpc_acMngr_cFP10fopAc_ac_c(); -extern "C" void getActor__18daBaseNpc_acMngr_cFv(); -extern "C" void __ct__16daBaseNpc_path_cFv(); -extern "C" void isPath__16daBaseNpc_path_cFv(); -extern "C" void setPathInfo__16daBaseNpc_path_cFUcScSc(); -extern "C" void reverseDir__16daBaseNpc_path_cFv(); -extern "C" void chkPnt__16daBaseNpc_path_cF4cXyz(); -extern "C" void setNextPnt__16daBaseNpc_path_cFv(); -extern "C" void getIdx__16daBaseNpc_path_cFv(); -extern "C" void setIdx__16daBaseNpc_path_cFUs(); -extern "C" void getPntPos__16daBaseNpc_path_cFUs(); -extern "C" void calc__18daBaseNpc_lookat_cFP10fopAc_ac_cPA4_fs(); -extern "C" void setMaxJntLmt__18daBaseNpc_lookat_cF5csXyzi(); -extern "C" void setMinJntLmt__18daBaseNpc_lookat_cF5csXyzi(); -extern "C" void setJntPos__18daBaseNpc_lookat_cF4cXyzi(); -extern "C" void setAttnPos__18daBaseNpc_lookat_cFP4cXyz(); -extern "C" void getRot__18daBaseNpc_lookat_cFi(); -extern "C" void __dt__11daBaseNpc_cFv(); -extern "C" void execute__11daBaseNpc_cFv(); -extern "C" void draw__11daBaseNpc_cFf(); -extern "C" bool getResName__11daBaseNpc_cFv(); -extern "C" void getTrnsfrmKeyAnmP__11daBaseNpc_cFPci(); -extern "C" void setMcaMorfAnm__11daBaseNpc_cFP18J3DAnmTransformKeyffiii(); -extern "C" void setBckAnm__11daBaseNpc_cFP15J3DAnmTransformfiiib(); -extern "C" void getTexPtrnAnmP__11daBaseNpc_cFPci(); -extern "C" void setBtpAnm__11daBaseNpc_cFP16J3DAnmTexPatternP12J3DModelDatafi(); -extern "C" void attnSttsOn__11daBaseNpc_cFii(); -extern "C" void setParam__11daBaseNpc_cFv(); -extern "C" void orderEvent__11daBaseNpc_cFiPc(); -extern "C" void mainProc__11daBaseNpc_cFv(); -extern "C" void setEnvTevColor__11daBaseNpc_cFv(); -extern "C" void setRoomNo__11daBaseNpc_cFv(); -extern "C" bool btkCtrl__11daBaseNpc_cFv(); -extern "C" void allAnmPlay__11daBaseNpc_cFv(); -extern "C" void adjustShapeAngle__11daBaseNpc_cFv(); -extern "C" void setMtx__11daBaseNpc_cFi(); -extern "C" void setCollisions__11daBaseNpc_cFv(); -extern "C" void setAttnPos__11daBaseNpc_cFv(); -extern "C" void drawOtherMdls__11daBaseNpc_cFv(); -extern "C" bool dbgDraw__11daBaseNpc_cFv(); -extern "C" void __ct__23daBaseNpc_moveBgActor_cFv(); -extern "C" void -MoveBGCreate__23daBaseNpc_moveBgActor_cFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUl(); -extern "C" void MoveBGDelete__23daBaseNpc_moveBgActor_cFv(); -extern "C" void MoveBGExecute__23daBaseNpc_moveBgActor_cFv(); -extern "C" void daNpcF_chkEvtBit__FUl(); -extern "C" void daNpcF_onEvtBit__FUl(); -extern "C" void daNpcF_chkPointInArea__F4cXyz4cXyz4cXyzs(); -extern "C" void getAttentionOffsetY__9daPy_py_cFv(); -extern "C" void Start__9dCamera_cFv(); -extern "C" void Stop__9dCamera_cFv(); -extern "C" void SetTrimSize__9dCamera_cFl(); -extern "C" void Set__9dCamera_cF4cXyz4cXyzfs(); -extern "C" void Reset__9dCamera_cF4cXyz4cXyzfs(); -extern "C" void Reset__9dCamera_cF4cXyz4cXyz(); -extern "C" void dCam_getBody__Fv(); -extern "C" void Eye__9dCamera_cFv(); -extern "C" void Center__9dCamera_cFv(); -extern "C" void dKy_darkworld_check__Fv(); -extern "C" void getActor__12dMsgObject_cFv(); -extern "C" void isMouthCheck__12dMsgObject_cFv(); -extern "C" void init__10dMsgFlow_cFP10fopAc_ac_ciiPP10fopAc_ac_c(); -extern "C" void doFlow__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_ci(); -extern "C" void GetAc__8cCcD_ObjFv(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __pl__4cXyzCFRC3Vec(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void __dv__4cXyzCFf(); -extern "C" void cM_atan2s__Fff(); -extern "C" void __ct__11cBgS_GndChkFv(); -extern "C" void __dt__11cBgS_GndChkFv(); -extern "C" void ChkUsed__9cBgW_BgIdCFv(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void SetC__8cM3dGSphFRC4cXyz(); -extern "C" void SetR__8cM3dGSphFf(); -extern "C" void cLib_addCalc2__FPffff(); -extern "C" void cLib_addCalcPos2__FP4cXyzRC4cXyzff(); -extern "C" void cLib_addCalcPosXZ2__FP4cXyzRC4cXyzff(); -extern "C" void cLib_addCalcAngleS2__FPssss(); -extern "C" void cLib_chaseF__FPfff(); -extern "C" void cLib_chasePos__FP4cXyzRC4cXyzf(); -extern "C" void cLib_chasePosXZ__FP4cXyzRC4cXyzf(); -extern "C" void cLib_targetAngleY__FPC3VecPC3Vec(); -extern "C" void cLib_targetAngleX__FPC4cXyzPC4cXyz(); -extern "C" void cLib_offsetPos__FP4cXyzPC4cXyzsPC4cXyz(); -extern "C" void __ct__7cSAngleFRC7cSAngle(); -extern "C" void __ct__7cSAngleFs(); -extern "C" void Inv__7cSAngleCFv(); -extern "C" void __mi__7cSAngleCFs(); -extern "C" void __ct__7cSGlobeFRC4cXyz(); -extern "C" void init__10Z2CreatureFP3VecP3VecUcUc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void checkPass__12J3DFrameCtrlFf(); -extern "C" void __destroy_arr(); -extern "C" void __construct_array(); -extern "C" void __ptmf_test(); -extern "C" void __ptmf_cmpr(); -extern "C" void __ptmf_scall(); -extern "C" void __cvt_fp2unsigned(); -extern "C" void _savegpr_23(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_23(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" u8 dist_table__12dAttention_c[6552]; -extern "C" extern void* __vt__8dCcD_Sph[36]; -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" u8 mCcDCyl__11daBaseNpc_c[68]; -extern "C" u8 mCcDSph__11daBaseNpc_c[64]; -extern "C" extern void* __vt__12cCcD_SphAttr[25]; -extern "C" extern void* __vt__12cCcD_CylAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 mCurrentMtx__6J3DSys[48]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" extern u8 g_dComIfGoat_gameInfo[4 + 4 /* padding */]; -extern "C" void __register_global_object(); - -// -// Declarations: -// +#include "d/d_msg_object.h" +#include "d/d_attention.h" +#include /* 80BFFF0C-80BFFF58 0000EC 004C+00 2/2 0/0 0/0 .text jointCtrlCallBack__FP8J3DJointi */ -static void jointCtrlCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING +static int jointCtrlCallBack(J3DJoint* i_joint, int param_2) { + if (param_2 == 0) { + J3DModel* model = j3dSys.getModel(); + daObj_GrA_c* i_this = (daObj_GrA_c*)model->getUserArea(); + if (i_this != NULL) { + i_this->jointCtrl(i_joint, model); + } + } + + return 1; } -/* 80BFFF58-80BFFF70 000138 0018+00 1/1 0/0 0/0 .text - * rideCallBack__11daObj_GrA_cFP4dBgWP10fopAc_ac_cP10fopAc_ac_c */ -void daObj_GrA_c::rideCallBack(dBgW* param_0, fopAc_ac_c* param_1, fopAc_ac_c* param_2) { - // NONMATCHING +/* 80BFFF58-80BFFF70 000138 0018+00 1/1 0/0 0/0 .text rideCallBack__11daObj_GrA_cFP4dBgWP10fopAc_ac_cP10fopAc_ac_c */ +void daObj_GrA_c::rideCallBack(dBgW* param_1, fopAc_ac_c* aActor_p, fopAc_ac_c* param_3) { + ((daObj_GrA_c*)aActor_p)->field_0x10c4 = fopAcM_GetProfName(param_3) == PROC_ALINK; } -/* ############################################################################################## */ -/* 80C0FE14-80C0FE14 000398 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C0FE14 = "grA"; -SECTION_DEAD static char const* const stringBase_80C0FE18 = "grA_base"; -SECTION_DEAD static char const* const stringBase_80C0FE21 = "grA_mdl"; -SECTION_DEAD static char const* const stringBase_80C0FE29 = "grA_demo"; -SECTION_DEAD static char const* const stringBase_80C0FE32 = "grA_Look"; -SECTION_DEAD static char const* const stringBase_80C0FE3B = "GRA_THROWN"; -#pragma pop - -/* 80C0FE68-80C0FE74 000000 000C+00 9/9 0/0 0/0 .data cNullVec__6Z2Calc */ -SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 80C0FE74-80C0FE88 00000C 0004+10 0/0 0/0 0/0 .data @1787 */ -#pragma push -#pragma force_active on -SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { - 0x02000201, - /* padding */ - 0x40080000, - 0x00000000, - 0x3FE00000, - 0x00000000, -}; -#pragma pop +UNK_REL_DATA; /* 80C0FE88-80C0FE98 -00001 0010+00 1/1 0/0 0/0 .data l_resFileNameList */ -SECTION_DATA static void* l_resFileNameList[4] = { - (void*)&d_a_obj_gra2__stringBase0, - (void*)&d_a_obj_gra2__stringBase0, - (void*)&d_a_obj_gra2__stringBase0, - (void*)&d_a_obj_gra2__stringBase0, +static char* l_resFileNameList[4] = { + "grA", + "grA", + "grA", + "grA", }; /* 80C0FE98-80C0FEA8 000030 0010+00 1/0 0/0 0/0 .data l_exLoadRes_GRAa */ -SECTION_DATA static u8 l_exLoadRes_GRAa[16] = { - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +static int l_exLoadRes_GRAa[4] = { + 1, 2, -1, -1, }; /* 80C0FEA8-80C0FEB8 000040 0010+00 1/0 0/0 0/0 .data l_exLoadRes_GRA_jump */ -SECTION_DATA static u8 l_exLoadRes_GRA_jump[16] = { - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, +static int l_exLoadRes_GRA_jump[4] = { + 1, 2, 4, -1, }; /* 80C0FEB8-80C0FEC8 000050 0010+00 1/0 0/0 0/0 .data l_exLoadRes_GRA_demo */ -SECTION_DATA static u8 l_exLoadRes_GRA_demo[16] = { - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, +static int l_exLoadRes_GRA_demo[4] = { + 1, 2, 3, -1, }; /* 80C0FEC8-80C0FED8 -00001 0010+00 2/2 0/0 0/0 .data l_exloadRes_list */ -SECTION_DATA static void* l_exloadRes_list[4] = { - (void*)&l_exLoadRes_GRAa, - (void*)&l_exLoadRes_GRA_jump, - (void*)&l_exLoadRes_GRAa, - (void*)&l_exLoadRes_GRA_demo, +static int* l_exloadRes_list[4] = { + l_exLoadRes_GRAa, + l_exLoadRes_GRA_jump, + l_exLoadRes_GRAa, + l_exLoadRes_GRA_demo, }; /* 80C0FED8-80C0FEEC -00001 0014+00 5/6 0/0 0/0 .data l_resNames */ -SECTION_DATA static void* l_resNames[5] = { - (void*)&d_a_obj_gra2__stringBase0, - (void*)(((char*)&d_a_obj_gra2__stringBase0) + 0x4), - (void*)(((char*)&d_a_obj_gra2__stringBase0) + 0xD), - (void*)(((char*)&d_a_obj_gra2__stringBase0) + 0x15), - (void*)(((char*)&d_a_obj_gra2__stringBase0) + 0x1E), +static char* l_resNames[5] = { + "grA", + "grA_base", + "grA_mdl", + "grA_demo", + "grA_Look", }; /* 80C0FEEC-80C0FEF4 000084 0008+00 0/1 0/0 0/0 .data l_bmdGetParamList */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_bmdGetParamList[8] = { - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, +static int l_bmdGetParamList[2] = { + 3, 2, }; -#pragma pop /* 80C0FEF4-80C1000C 00008C 0118+00 2/2 0/0 0/0 .data l_bckGetParamList */ -SECTION_DATA static u8 l_bckGetParamList[280] = { - 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, +static int l_bckGetParamList[70] = { + 21, 1, 18, 0, + 22, 1, 11, 0, + 18, 1, 19, 1, + 16, 0, -1, 0, + 15, 1, 16, 1, + 6, 0, 12, 0, + 13, 0, 14, 0, + 17, 0, 3, 3, + 5, 3, 15, 0, + 6, 3, 17, 1, + 20, 1, 3, 4, + 14, 1, 10, 0, + 9, 1, 7, 1, + 8, 0, 12, 1, + 13, 1, 10, 1, + 8, 1, 11, 1, + 6, 0, 4, 3, + 9, 0, }; /* 80C1000C-80C1002C 0001A4 0020+00 1/1 0/0 0/0 .data l_btpGetParamList */ -SECTION_DATA static u8 l_btpGetParamList[32] = { - 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, +static int l_btpGetParamList[8] = { + 28, 1, 32, 1, + 31, 1, 21, 0, }; /* 80C1002C-80C10044 0001C4 0016+02 1/2 0/0 0/0 .data l_eventMotionChangeTable */ -SECTION_DATA static u8 l_eventMotionChangeTable[22 + 2 /* padding */] = { - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x03, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - /* padding */ - 0x00, - 0x00, +static u16 l_eventMotionChangeTable[11] = { + 0, 1, 0, 2, + 3, 0, 0, 0, + 0, 0, 0, }; /* 80C10044-80C1004C 0001DC 0008+00 1/2 0/0 0/0 .data l_eventFaceChangeTable */ -SECTION_DATA static u8 l_eventFaceChangeTable[8] = { - 0x00, 0x01, 0x00, 0x02, 0x00, 0x06, 0x00, 0x07, +static u16 l_eventFaceChangeTable[4] = { + 1, 2, 6, 7, }; /* 80C1004C-80C10054 -00001 0008+00 1/1 0/0 0/0 .data l_evtNameList */ -SECTION_DATA static void* l_evtNameList[2] = { - (void*)NULL, - (void*)(((char*)&d_a_obj_gra2__stringBase0) + 0x27), +static char* l_evtNameList[2] = { + NULL, + "GRA_THROWN", }; /* 80C10054-80C1005C 0001EC 0008+00 0/1 0/0 0/0 .data l_entryJntNoList */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_entryJntNoList[8] = { - 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0xFF, 0xFF, +static u16 l_entryJntNoList[4] = { + 5, 6, 7, -1, }; -#pragma pop - -/* 80C1005C-80C10068 -00001 000C+00 1/1 0/0 0/0 .data @4591 */ -SECTION_DATA static void* lit_4591[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__11daObj_GrA_cFPv, -}; - -/* 80C10068-80C100C0 -00001 0058+00 1/1 0/0 0/0 .data @4762 */ -SECTION_DATA static void* lit_4762[22] = { - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0xD4), - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0xD4), - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0xD4), - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0x98), - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0xA0), - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0xA0), - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0xA8), - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0xD4), - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0xB0), - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0xD4), - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0xB8), - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0xB8), - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0xB8), - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0xB8), - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0xA8), - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0xC0), - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0xC8), - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0xC8), - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0xD4), - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0xD4), - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0xA8), - (void*)(((char*)setBaseAnm__11daObj_GrA_cFif) + 0xD4), -}; - -/* 80C100C0-80C100F4 -00001 0034+00 1/1 0/0 0/0 .data @4792 */ -SECTION_DATA static void* lit_4792[13] = { - (void*)(((char*)setFaceAnm__11daObj_GrA_cFibf) + 0xB0), - (void*)(((char*)setFaceAnm__11daObj_GrA_cFibf) + 0xB0), - (void*)(((char*)setFaceAnm__11daObj_GrA_cFibf) + 0xB0), - (void*)(((char*)setFaceAnm__11daObj_GrA_cFibf) + 0xB0), - (void*)(((char*)setFaceAnm__11daObj_GrA_cFibf) + 0xC4), - (void*)(((char*)setFaceAnm__11daObj_GrA_cFibf) + 0xC4), - (void*)(((char*)setFaceAnm__11daObj_GrA_cFibf) + 0xC4), - (void*)(((char*)setFaceAnm__11daObj_GrA_cFibf) + 0xD4), - (void*)(((char*)setFaceAnm__11daObj_GrA_cFibf) + 0xE4), - (void*)(((char*)setFaceAnm__11daObj_GrA_cFibf) + 0xF4), - (void*)(((char*)setFaceAnm__11daObj_GrA_cFibf) + 0x104), - (void*)(((char*)setFaceAnm__11daObj_GrA_cFibf) + 0x114), - (void*)(((char*)setFaceAnm__11daObj_GrA_cFibf) + 0x124), -}; - -/* 80C100F4-80C10100 -00001 000C+00 0/1 0/0 0/0 .data @4873 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4873[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)standWait__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C10100-80C1010C -00001 000C+00 0/1 0/0 0/0 .data @4875 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4875[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)walk__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C1010C-80C10118 -00001 000C+00 0/1 0/0 0/0 .data @4877 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4877[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)rollReturn__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C10118-80C10124 -00001 000C+00 0/1 0/0 0/0 .data @4879 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4879[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)toStone__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C10124-80C10130 -00001 000C+00 0/1 0/0 0/0 .data @4891 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4891[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)standWaitJump__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C10130-80C1013C -00001 000C+00 1/1 0/0 0/0 .data @4933 */ -SECTION_DATA static void* lit_4933[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__11daObj_GrA_cFPv, -}; - -/* 80C1013C-80C10148 -00001 000C+00 1/1 0/0 0/0 .data @4941 */ -SECTION_DATA static void* lit_4941[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__11daObj_GrA_cFPv, -}; - -/* 80C10148-80C10154 -00001 000C+00 1/1 0/0 0/0 .data @5310 */ -SECTION_DATA static void* lit_5310[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)step__11daObj_GrA_cFPv, -}; - -/* 80C10154-80C10160 -00001 000C+00 1/1 0/0 0/0 .data @5987 */ -SECTION_DATA static void* lit_5987[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)rollReturn__11daObj_GrA_cFPv, -}; - -/* 80C10160-80C1016C -00001 000C+00 1/1 0/0 0/0 .data @5992 */ -SECTION_DATA static void* lit_5992[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)defence__11daObj_GrA_cFPv, -}; - -/* 80C1016C-80C10178 -00001 000C+00 0/1 0/0 0/0 .data @6065 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_6065[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)standWait__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C10178-80C10184 -00001 000C+00 0/1 0/0 0/0 .data @6068 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_6068[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)standWaitJump__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C10184-80C10190 -00001 000C+00 0/1 0/0 0/0 .data @6071 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_6071[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)standRoll__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C10190-80C1019C -00001 000C+00 0/1 0/0 0/0 .data @6074 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_6074[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)waitDemo__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C1019C-80C101A8 -00001 000C+00 0/1 0/0 0/0 .data @6107 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_6107[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)rollReturn__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C101A8-80C101B4 -00001 000C+00 0/1 0/0 0/0 .data @6110 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_6110[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C101B4-80C101C0 -00001 000C+00 1/1 0/0 0/0 .data @6363 */ -SECTION_DATA static void* lit_6363[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)walk__11daObj_GrA_cFPv, -}; - -/* 80C101C0-80C101CC -00001 000C+00 1/1 0/0 0/0 .data @6502 */ -SECTION_DATA static void* lit_6502[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)step__11daObj_GrA_cFPv, -}; - -/* 80C101CC-80C101D8 -00001 000C+00 1/1 0/0 0/0 .data @6507 */ -SECTION_DATA static void* lit_6507[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__11daObj_GrA_cFPv, -}; - -/* 80C101D8-80C101E4 -00001 000C+00 1/1 0/0 0/0 .data @6661 */ -SECTION_DATA static void* lit_6661[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)walk__11daObj_GrA_cFPv, -}; - -/* 80C101E4-80C101F0 -00001 000C+00 1/1 0/0 0/0 .data @6763 */ -SECTION_DATA static void* lit_6763[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__11daObj_GrA_cFPv, -}; - -/* 80C101F0-80C101FC -00001 000C+00 0/1 0/0 0/0 .data @6888 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_6888[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C101FC-80C10208 -00001 000C+00 0/1 0/0 0/0 .data @6894 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_6894[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C10208-80C10214 -00001 000C+00 0/1 0/0 0/0 .data @6910 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_6910[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C10214-80C10220 -00001 000C+00 0/1 0/0 0/0 .data @6921 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_6921[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C10220-80C1022C -00001 000C+00 0/1 0/0 0/0 .data @7031 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_7031[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)toStone__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C1022C-80C10238 -00001 000C+00 0/1 0/0 0/0 .data @7045 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_7045[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)toStone__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C10238-80C10244 -00001 000C+00 0/1 0/0 0/0 .data @7055 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_7055[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)toStone__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C10244-80C10250 -00001 000C+00 1/1 0/0 0/0 .data @7324 */ -SECTION_DATA static void* lit_7324[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__11daObj_GrA_cFPv, -}; - -/* 80C10250-80C1025C -00001 000C+00 0/1 0/0 0/0 .data @7471 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_7471[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)rollDemo__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C1025C-80C10268 -00001 000C+00 0/1 0/0 0/0 .data @7481 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_7481[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)rollDemo__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C10268-80C10274 -00001 000C+00 0/1 0/0 0/0 .data @7489 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_7489[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)rollDemo__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C10274-80C10280 -00001 000C+00 1/1 0/0 0/0 .data @7645 */ -SECTION_DATA static void* lit_7645[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)rollAttack__11daObj_GrA_cFPv, -}; - -/* 80C10280-80C1028C -00001 000C+00 1/1 0/0 0/0 .data @7653 */ -SECTION_DATA static void* lit_7653[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)rollAttack__11daObj_GrA_cFPv, -}; - -/* 80C1028C-80C10298 -00001 000C+00 1/1 0/0 0/0 .data @7744 */ -SECTION_DATA static void* lit_7744[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)rollAttacked__11daObj_GrA_cFPv, -}; - -/* 80C10298-80C102A4 -00001 000C+00 1/1 0/0 0/0 .data @7836 */ -SECTION_DATA static void* lit_7836[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)rollAttacked__11daObj_GrA_cFPv, -}; - -/* 80C102A4-80C102B0 -00001 000C+00 0/0 0/0 0/0 .data @8025 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8025[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C102B0-80C102BC -00001 000C+00 0/0 0/0 0/0 .data @8037 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8037[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C102BC-80C102C8 -00001 000C+00 0/0 0/0 0/0 .data @8042 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8042[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)rollAttack__11daObj_GrA_cFPv, -}; -#pragma pop - -/* 80C102C8-80C102E4 -00001 001C+00 1/1 0/0 0/0 .data @8138 */ -SECTION_DATA static void* lit_8138[7] = { - (void*)(((char*)rollAttacked__11daObj_GrA_cFPv) + 0xAC), - (void*)(((char*)rollAttacked__11daObj_GrA_cFPv) + 0xD8), - (void*)(((char*)rollAttacked__11daObj_GrA_cFPv) + 0x25C), - (void*)(((char*)rollAttacked__11daObj_GrA_cFPv) + 0x30C), - (void*)(((char*)rollAttacked__11daObj_GrA_cFPv) + 0x338), - (void*)(((char*)rollAttacked__11daObj_GrA_cFPv) + 0x38C), - (void*)(((char*)rollAttacked__11daObj_GrA_cFPv) + 0x464), -}; - -/* 80C102E4-80C10300 -00001 001C+00 1/1 0/0 0/0 .data @8707 */ -SECTION_DATA static void* lit_8707[7] = { - (void*)(((char*)demo_camera__11daObj_GrA_cFv) + 0xDFC), - (void*)(((char*)demo_camera__11daObj_GrA_cFv) + 0x6C), - (void*)(((char*)demo_camera__11daObj_GrA_cFv) + 0x150), - (void*)(((char*)demo_camera__11daObj_GrA_cFv) + 0x2C0), - (void*)(((char*)demo_camera__11daObj_GrA_cFv) + 0x430), - (void*)(((char*)demo_camera__11daObj_GrA_cFv) + 0x740), - (void*)(((char*)demo_camera__11daObj_GrA_cFv) + 0xA84), -}; - -/* 80C10300-80C10320 -00001 0020+00 1/1 0/0 0/0 .data @8960 */ -SECTION_DATA static void* lit_8960[8] = { - (void*)(((char*)rollAttackedDemo__11daObj_GrA_cFv) + 0x9A0), - (void*)(((char*)rollAttackedDemo__11daObj_GrA_cFv) + 0x6C), - (void*)(((char*)rollAttackedDemo__11daObj_GrA_cFv) + 0x144), - (void*)(((char*)rollAttackedDemo__11daObj_GrA_cFv) + 0x9A0), - (void*)(((char*)rollAttackedDemo__11daObj_GrA_cFv) + 0x284), - (void*)(((char*)rollAttackedDemo__11daObj_GrA_cFv) + 0x438), - (void*)(((char*)rollAttackedDemo__11daObj_GrA_cFv) + 0x660), - (void*)(((char*)rollAttackedDemo__11daObj_GrA_cFv) + 0x924), -}; - -/* 80C10320-80C1032C -00001 000C+00 1/1 0/0 0/0 .data @8967 */ -SECTION_DATA static void* lit_8967[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)thrown__11daObj_GrA_cFPv, -}; - -/* 80C1032C-80C10338 -00001 000C+00 1/1 0/0 0/0 .data @9077 */ -SECTION_DATA static void* lit_9077[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)thrown__11daObj_GrA_cFPv, -}; - -/* 80C10338-80C10344 -00001 000C+00 1/1 0/0 0/0 .data @9082 */ -SECTION_DATA static void* lit_9082[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)thrown__11daObj_GrA_cFPv, -}; - -/* 80C10344-80C10350 -00001 000C+00 1/1 0/0 0/0 .data @9348 */ -SECTION_DATA static void* lit_9348[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)rollAttacked__11daObj_GrA_cFPv, -}; - -/* 80C10350-80C1035C -00001 000C+00 1/1 0/0 0/0 .data @9351 */ -SECTION_DATA static void* lit_9351[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)rollAttack__11daObj_GrA_cFPv, -}; - -/* 80C1035C-80C10368 -00001 000C+00 1/1 0/0 0/0 .data @9393 */ -SECTION_DATA static void* lit_9393[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)rollEscape__11daObj_GrA_cFPv, -}; - -/* 80C10368-80C10374 -00001 000C+00 1/1 0/0 0/0 .data @9399 */ -SECTION_DATA static void* lit_9399[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)rollEscape__11daObj_GrA_cFPv, -}; - -/* 80C10374-80C10380 -00001 000C+00 1/1 0/0 0/0 .data @9472 */ -SECTION_DATA static void* lit_9472[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)toStone__11daObj_GrA_cFPv, -}; - -/* 80C10380-80C1038C -00001 000C+00 1/1 0/0 0/0 .data @9541 */ -SECTION_DATA static void* lit_9541[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)startDemo__11daObj_GrA_cFPv, -}; - -/* 80C1038C-80C10398 -00001 000C+00 1/1 0/0 0/0 .data @9635 */ -SECTION_DATA static void* lit_9635[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)soldierDemo__11daObj_GrA_cFPv, -}; - -/* 80C10398-80C103A4 -00001 000C+00 1/1 0/0 0/0 .data @9691 */ -SECTION_DATA static void* lit_9691[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__11daObj_GrA_cFPv, -}; - -/* 80C103A4-80C103D4 -00001 0030+00 1/1 0/0 0/0 .data @10259 */ -SECTION_DATA static void* lit_10259[12] = { - (void*)(((char*)startDemo__11daObj_GrA_cFPv) + 0x1B68), - (void*)(((char*)startDemo__11daObj_GrA_cFPv) + 0xE8), - (void*)(((char*)startDemo__11daObj_GrA_cFPv) + 0x270), - (void*)(((char*)startDemo__11daObj_GrA_cFPv) + 0x444), - (void*)(((char*)startDemo__11daObj_GrA_cFPv) + 0x7C8), - (void*)(((char*)startDemo__11daObj_GrA_cFPv) + 0xBCC), - (void*)(((char*)startDemo__11daObj_GrA_cFPv) + 0xED8), - (void*)(((char*)startDemo__11daObj_GrA_cFPv) + 0x11BC), - (void*)(((char*)startDemo__11daObj_GrA_cFPv) + 0x1238), - (void*)(((char*)startDemo__11daObj_GrA_cFPv) + 0x12B8), - (void*)(((char*)startDemo__11daObj_GrA_cFPv) + 0x1644), - (void*)(((char*)startDemo__11daObj_GrA_cFPv) + 0x1840), -}; - -/* 80C103D4-80C103E0 -00001 000C+00 0/1 0/0 0/0 .data @10566 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10566[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base000__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C103E0-80C103EC -00001 000C+00 0/1 0/0 0/0 .data @10567 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10567[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base001__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C103EC-80C103F8 -00001 000C+00 0/1 0/0 0/0 .data @10568 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10568[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base003__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C103F8-80C10404 -00001 000C+00 0/1 0/0 0/0 .data @10569 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10569[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base004__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C10404-80C10410 -00001 000C+00 0/1 0/0 0/0 .data @10570 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10570[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base005__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C10410-80C1041C -00001 000C+00 0/1 0/0 0/0 .data @10571 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10571[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base006__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C1041C-80C10428 -00001 000C+00 0/1 0/0 0/0 .data @10572 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10572[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base007__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C10428-80C10434 -00001 000C+00 0/1 0/0 0/0 .data @10573 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10573[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base008__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C10434-80C10440 -00001 000C+00 0/1 0/0 0/0 .data @10574 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10574[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base009__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C10440-80C1044C -00001 000C+00 0/1 0/0 0/0 .data @10575 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10575[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base010__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C1044C-80C10458 -00001 000C+00 0/1 0/0 0/0 .data @10576 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10576[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base013__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C10458-80C10464 -00001 000C+00 0/1 0/0 0/0 .data @10577 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10577[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base016__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C10464-80C10470 -00001 000C+00 0/1 0/0 0/0 .data @10578 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10578[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base017__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C10470-80C1047C -00001 000C+00 0/1 0/0 0/0 .data @10579 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10579[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base018__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C1047C-80C10488 -00001 000C+00 0/1 0/0 0/0 .data @10580 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10580[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base019__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C10488-80C10494 -00001 000C+00 0/1 0/0 0/0 .data @10581 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10581[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base020__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C10494-80C104A0 -00001 000C+00 0/1 0/0 0/0 .data @10582 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10582[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base021__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C104A0-80C104AC -00001 000C+00 0/1 0/0 0/0 .data @10583 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10583[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base022__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C104AC-80C104B8 -00001 000C+00 0/1 0/0 0/0 .data @10584 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10584[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base023__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C104B8-80C104C4 -00001 000C+00 0/1 0/0 0/0 .data @10585 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10585[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base024__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C104C4-80C104D0 -00001 000C+00 0/1 0/0 0/0 .data @10586 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10586[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base025__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C104D0-80C104DC -00001 000C+00 0/1 0/0 0/0 .data @10587 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10587[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)base026__11daObj_GrA_cFi, -}; -#pragma pop /* 80C104DC-80C105E4 000674 0108+00 1/2 0/0 0/0 .data mBaseMotionList__11daObj_GrA_c */ -SECTION_DATA u8 daObj_GrA_c::mBaseMotionList[264] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +daObj_GrA_c::MotionFunc daObj_GrA_c::mBaseMotionList[22] = { + &daObj_GrA_c::base000, + &daObj_GrA_c::base001, + &daObj_GrA_c::base003, + &daObj_GrA_c::base004, + &daObj_GrA_c::base005, + &daObj_GrA_c::base006, + &daObj_GrA_c::base007, + &daObj_GrA_c::base008, + &daObj_GrA_c::base009, + &daObj_GrA_c::base010, + &daObj_GrA_c::base013, + &daObj_GrA_c::base016, + &daObj_GrA_c::base017, + &daObj_GrA_c::base018, + &daObj_GrA_c::base019, + &daObj_GrA_c::base020, + &daObj_GrA_c::base021, + &daObj_GrA_c::base022, + &daObj_GrA_c::base023, + &daObj_GrA_c::base024, + &daObj_GrA_c::base025, + &daObj_GrA_c::base026, }; -/* 80C105E4-80C105F0 -00001 000C+00 0/1 0/0 0/0 .data @10849 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10849[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)face000__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C105F0-80C105FC -00001 000C+00 0/1 0/0 0/0 .data @10850 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10850[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)face003__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C105FC-80C10608 -00001 000C+00 0/1 0/0 0/0 .data @10851 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10851[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)face004__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C10608-80C10614 -00001 000C+00 0/1 0/0 0/0 .data @10852 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10852[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)face005__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C10614-80C10620 -00001 000C+00 0/1 0/0 0/0 .data @10853 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10853[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)face006__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C10620-80C1062C -00001 000C+00 0/1 0/0 0/0 .data @10854 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10854[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)face007__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C1062C-80C10638 -00001 000C+00 0/1 0/0 0/0 .data @10855 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10855[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)face008__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C10638-80C10644 -00001 000C+00 0/1 0/0 0/0 .data @10856 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10856[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)face009__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C10644-80C10650 -00001 000C+00 0/1 0/0 0/0 .data @10857 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10857[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)face010__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C10650-80C1065C -00001 000C+00 0/1 0/0 0/0 .data @10858 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10858[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)face011__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C1065C-80C10668 -00001 000C+00 0/1 0/0 0/0 .data @10859 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10859[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)face012__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C10668-80C10674 -00001 000C+00 0/1 0/0 0/0 .data @10860 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10860[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)face016__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C10674-80C10680 -00001 000C+00 0/1 0/0 0/0 .data @10861 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10861[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)face017__11daObj_GrA_cFi, -}; -#pragma pop - -/* 80C10680-80C1068C -00001 000C+00 0/1 0/0 0/0 .data @10862 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_10862[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)face999__11daObj_GrA_cFi, -}; -#pragma pop - /* 80C1068C-80C10734 000824 00A8+00 1/2 0/0 0/0 .data mFaceMotionList__11daObj_GrA_c */ -SECTION_DATA u8 daObj_GrA_c::mFaceMotionList[168] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 80C10734-80C10754 -00001 0020+00 1/0 0/0 0/0 .data daObj_GrA_MethodTable */ -static actor_method_class daObj_GrA_MethodTable = { - (process_method_func)daObj_GrA_Create__FPv, - (process_method_func)daObj_GrA_Delete__FPv, - (process_method_func)daObj_GrA_Execute__FPv, - (process_method_func)daObj_GrA_IsDelete__FPv, - (process_method_func)daObj_GrA_Draw__FPv, -}; - -/* 80C10754-80C10784 -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_GRA */ -extern actor_process_profile_definition g_profile_OBJ_GRA = { - fpcLy_CURRENT_e, // mLayerID - 3, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_OBJ_GRA, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daObj_GrA_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 19, // mPriority - &daObj_GrA_MethodTable, // sub_method - 0x00040100, // mStatus - fopAc_NPC_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 80C10784-80C107E8 00091C 0064+00 2/2 0/0 0/0 .data __vt__11daObj_GrA_c */ -SECTION_DATA extern void* __vt__11daObj_GrA_c[25] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__11daObj_GrA_cFv, - (void*)execute__11daBaseNpc_cFv, - (void*)draw__11daBaseNpc_cFf, - (void*)getResName__11daObj_GrA_cFv, - (void*)attnSttsOn__11daBaseNpc_cFii, - (void*)setParam__11daObj_GrA_cFv, - (void*)mainProc__11daObj_GrA_cFv, - (void*)btkCtrl__11daBaseNpc_cFv, - (void*)allAnmPlay__11daBaseNpc_cFv, - (void*)adjustShapeAngle__11daObj_GrA_cFv, - (void*)setMtx__11daObj_GrA_cFi, - (void*)setCollisions__11daObj_GrA_cFv, - (void*)setAttnPos__11daObj_GrA_cFv, - (void*)drawOtherMdls__11daObj_GrA_cFv, - (void*)dbgDraw__11daObj_GrA_cFv, - (void*)CreateHeap__11daObj_GrA_cFv, - (void*)Create__23daBaseNpc_moveBgActor_cFv, - (void*)Execute__11daObj_GrA_cFPPA3_A4_f, - (void*)Draw__11daObj_GrA_cFv, - (void*)Delete__11daObj_GrA_cFv, - (void*)IsDelete__23daBaseNpc_moveBgActor_cFv, - (void*)ToFore__23daBaseNpc_moveBgActor_cFv, - (void*)ToBack__23daBaseNpc_moveBgActor_cFv, -}; - -/* 80C107E8-80C1084C 000980 0064+00 2/2 0/0 0/0 .data __vt__23daBaseNpc_moveBgActor_c */ -SECTION_DATA extern void* __vt__23daBaseNpc_moveBgActor_c[25] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__23daBaseNpc_moveBgActor_cFv, - (void*)execute__11daBaseNpc_cFv, - (void*)draw__11daBaseNpc_cFf, - (void*)getResName__11daBaseNpc_cFv, - (void*)attnSttsOn__11daBaseNpc_cFii, - (void*)setParam__11daBaseNpc_cFv, - (void*)mainProc__11daBaseNpc_cFv, - (void*)btkCtrl__11daBaseNpc_cFv, - (void*)allAnmPlay__11daBaseNpc_cFv, - (void*)adjustShapeAngle__11daBaseNpc_cFv, - (void*)setMtx__11daBaseNpc_cFi, - (void*)setCollisions__11daBaseNpc_cFv, - (void*)setAttnPos__11daBaseNpc_cFv, - (void*)drawOtherMdls__11daBaseNpc_cFv, - (void*)dbgDraw__11daBaseNpc_cFv, - (void*)CreateHeap__23daBaseNpc_moveBgActor_cFv, - (void*)Create__23daBaseNpc_moveBgActor_cFv, - (void*)Execute__23daBaseNpc_moveBgActor_cFPPA3_A4_f, - (void*)Draw__23daBaseNpc_moveBgActor_cFv, - (void*)Delete__23daBaseNpc_moveBgActor_cFv, - (void*)IsDelete__23daBaseNpc_moveBgActor_cFv, - (void*)ToFore__23daBaseNpc_moveBgActor_cFv, - (void*)ToBack__23daBaseNpc_moveBgActor_cFv, -}; - -/* 80C1084C-80C10858 0009E4 000C+00 2/2 0/0 0/0 .data __vt__18daBaseNpc_acMngr_c */ -SECTION_DATA extern void* __vt__18daBaseNpc_acMngr_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__18daBaseNpc_acMngr_cFv, -}; - -/* 80C10858-80C10864 0009F0 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGSph */ -SECTION_DATA extern void* __vt__8cM3dGSph[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGSphFv, -}; - -/* 80C10864-80C10870 0009FC 000C+00 2/2 0/0 0/0 .data __vt__16daBaseNpc_path_c */ -SECTION_DATA extern void* __vt__16daBaseNpc_path_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__16daBaseNpc_path_cFv, -}; - -/* 80C10870-80C1087C 000A08 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 80C1087C-80C10888 000A14 000C+00 5/5 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, +daObj_GrA_c::MotionFunc daObj_GrA_c::mFaceMotionList[14] = { + &daObj_GrA_c::face000, + &daObj_GrA_c::face003, + &daObj_GrA_c::face004, + &daObj_GrA_c::face005, + &daObj_GrA_c::face006, + &daObj_GrA_c::face007, + &daObj_GrA_c::face008, + &daObj_GrA_c::face009, + &daObj_GrA_c::face010, + &daObj_GrA_c::face011, + &daObj_GrA_c::face012, + &daObj_GrA_c::face016, + &daObj_GrA_c::face017, + &daObj_GrA_c::face999, }; /* 80BFFF70-80C0011C 000150 01AC+00 1/1 0/0 0/0 .text __ct__11daObj_GrA_cFv */ -daObj_GrA_c::daObj_GrA_c() { - // NONMATCHING -} +daObj_GrA_c::daObj_GrA_c() {} /* 80C0011C-80C003CC 0002FC 02B0+00 1/0 0/0 0/0 .text __dt__11daObj_GrA_cFv */ daObj_GrA_c::~daObj_GrA_c() { // NONMATCHING -} + dComIfG_resDelete(&mPhase, getResName()); + for (int i = 0; *l_exloadRes_list[mMode + i] >= 0; i++) { + dComIfG_resDelete(field_0xa5c[i], l_resNames[*l_exloadRes_list[mMode + i]]); + } -/* ############################################################################################## */ -/* 80C0FE14-80C0FE14 000398 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C0FE46 = "grA_stone_col.dzb"; -#pragma pop + if (heap != NULL) { + mpModelMorf->stopZelAnime(); + } + + if (mpBgw != NULL && mpBgw->ChkUsed()) { + if (dComIfG_Bgsp().Release(mpBgw)) { + OS_REPORT("Release Error\n"); + } + } +} /* 80C003CC-80C00614 0005AC 0248+00 1/1 0/0 0/0 .text create__11daObj_GrA_cFv */ -void daObj_GrA_c::create() { +cPhs__Step daObj_GrA_c::create() { // NONMATCHING + fopAcM_SetupActor(this, daObj_GrA_c); + + mMode = getMode(); + cPhs__Step phase = (cPhs__Step)dComIfG_resLoad(&mPhase, getResName()); + if (phase == cPhs_ERROR_e || phase == cPhs_UNK3_e) { + return cPhs_ERROR_e; + } + + int uVar1; + if (phase == cPhs_COMPLEATE_e) { + uVar1 = 1; + } + + int i = 0; + for (; *l_exloadRes_list[mMode] >= 0; i++) { + phase = (cPhs__Step)dComIfG_resLoad(field_0xa5c[i], l_resNames[*l_exloadRes_list[mMode]]); + if (phase == cPhs_ERROR_e || phase == cPhs_UNK3_e) { + return cPhs_ERROR_e; + } + + if (phase == cPhs_COMPLEATE_e) { + uVar1++; + } + } + + int iVar1; + if ((int)home.angle.x == 0xFFFF) { + iVar1 = -1; + } else { + iVar1 = home.angle.x; + } + field_0x848 = iVar1; + + field_0x1fe8 = fopAcM_GetParam(this) >> 30; + field_0x200c = (home.angle.z >> 8) & 0x7F; + field_0x2030 = (home.angle.z >> 15) & 1; + + if (uVar1 == (i + 1) && (uVar1 == 3 || uVar1 == 4)) { + if (MoveBGCreate(getResName(), + dComIfG_getObjctResName2Index(getResName(), "grA_stone_col.dzb"), NULL, 0x3B10) == 5) { + return cPhs_ERROR_e; + } + + mpBgw->SetRideCallback(rideCallBack); + if (isDelete()) { + return cPhs_ERROR_e; + } else { + init(); + } + } else { + return cPhs_INIT_e; + } + + return phase; } -/* ############################################################################################## */ /* 80C0FA7C-80C0FB3C 000000 00C0+00 54/54 0/0 0/0 .rodata m__17daObj_GrA_Param_c */ -SECTION_RODATA u8 const daObj_GrA_Param_c::m[192] = { - 0x42, 0xAA, 0x00, 0x00, 0xC0, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x41, 0x40, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x43, 0x8C, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, - 0x43, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, - 0xC1, 0xA0, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, - 0xC2, 0x20, 0x00, 0x00, 0x3E, 0xCC, 0xCC, 0xCD, 0x42, 0xAA, 0x00, 0x00, 0x42, 0xAA, 0x00, 0x00, - 0x42, 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x10, 0x00, 0x3C, 0x00, 0x04, 0x00, 0x1E, 0x00, 0x00, - 0x43, 0x0C, 0x00, 0x00, 0x43, 0x16, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, - 0x41, 0x70, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, 0x44, 0x7A, 0x00, 0x00, 0x45, 0x3B, 0x80, 0x00, - 0x41, 0x70, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x42, 0x34, 0x00, 0x00, - 0x41, 0x20, 0x00, 0x00, 0x43, 0x66, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x41, 0xC8, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x0A, - 0x00, 0x1E, 0x00, 0x28, 0x00, 0x14, 0x00, 0x00, 0x42, 0x70, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, +daObj_GrA_Param_c::Data const daObj_GrA_Param_c::m = { + 85.0f, + -4.0f, + 1.0f, + 12.0f, + 1, + 0, + 280.0f, + 40.0f, + 100.0f, + 255.0f, + 0.0f, + 0.0f, + 20.0f, + -20.0f, + 40.0f, + 0.0f, + 40.0f, + -40.0f, + 0.4f, + 85.0f, + 85.0f, + 50.0f, + 3, + 16, + 60, + 4, + 30, + 0, + 140.0f, + 150.0f, + 100, + 0, + 100.0f, + 15.0f, + 20.0f, + 1000.0f, + 3000.0f, + 15.0f, + 40.0f, + 2048, + 0, + 45.0f, + 10.0f, + 230.0f, + 60, + 1, + 0.0f, + 25.0f, + 100, + 0, + 0.5f, + 10, + 10, + 30, + 40, + 20, + 0, + 60.0f, + 30.0f, }; -COMPILER_STRIP_GATE(0x80C0FA7C, &daObj_GrA_Param_c::m); /* 80C0FB3C-80C0FB8C 0000C0 0050+00 0/0 0/0 0/0 .rodata l_bgcParam */ #pragma push @@ -1658,832 +345,880 @@ SECTION_RODATA static u8 const l_dirToAngleTBL[8] = { COMPILER_STRIP_GATE(0x80C0FB8C, &l_dirToAngleTBL); #pragma pop -/* 80C0FB94-80C0FB98 000118 0004+00 4/18 0/0 0/0 .rodata @4332 */ -SECTION_RODATA static f32 const lit_4332 = 1.0f; -COMPILER_STRIP_GATE(0x80C0FB94, &lit_4332); - -/* 80C0FB98-80C0FB9C 00011C 0004+00 13/45 0/0 0/0 .rodata @4333 */ -SECTION_RODATA static u8 const lit_4333[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C0FB98, &lit_4333); - /* 80C00614-80C00790 0007F4 017C+00 1/0 0/0 0/0 .text CreateHeap__11daObj_GrA_cFv */ -void daObj_GrA_c::CreateHeap() { - // NONMATCHING +int daObj_GrA_c::CreateHeap() { + field_0x844 = dKy_darkworld_check(); + + J3DModelData* aMdlData_p = (J3DModelData*)dComIfG_getObjectRes(l_resNames[l_bmdGetParamList[1]], l_bmdGetParamList[0]); + JUT_ASSERT(854, 0 != aMdlData_p); + mpModelMorf = new mDoExt_McaMorfSO(aMdlData_p, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mSound, 0x80000, 0x11020284); + if (mpModelMorf != NULL && mpModelMorf->getModel() == NULL) { + mpModelMorf->stopZelAnime(); + mpModelMorf = NULL; + } + + if (mpModelMorf == NULL) { + return 0; + } + + J3DModel* aMdl_p = mpModelMorf->getModel(); + for (u16 i = 0; i < aMdlData_p->getJointNum(); i++) { + aMdlData_p->getJointNodePointer(i)->setCallBack(jointCtrlCallBack); + } + aMdl_p->setUserArea((u32)this); + + field_0x83c = l_entryJntNoList; + setFaceAnm(22, false, 0.0f); + setBaseAnm(17, 0.0f); + + return 1; } /* 80C00790-80C00804 000970 0074+00 1/0 0/0 0/0 .text Delete__11daObj_GrA_cFv */ -void daObj_GrA_c::Delete() { - // NONMATCHING +int daObj_GrA_c::Delete() { + if (dComIfGp_getVibration().CheckQuake()) { + dComIfGp_getVibration().StopQuake(31); + } + this->~daObj_GrA_c(); + return 1; } -/* ############################################################################################## */ -/* 80C0FB9C-80C0FBA0 000120 0004+00 2/2 0/0 0/0 .rodata @4399 */ -SECTION_RODATA static f32 const lit_4399 = -1000000000.0f; -COMPILER_STRIP_GATE(0x80C0FB9C, &lit_4399); - /* 80C00804-80C00A44 0009E4 0240+00 1/0 0/0 0/0 .text Execute__11daObj_GrA_cFPPA3_A4_f */ -void daObj_GrA_c::Execute(f32 (**param_0)[3][4]) { - // NONMATCHING +int daObj_GrA_c::Execute(Mtx** param_1) { + int rv = 1; + *param_1 = &mBgMtx; + setParam(); + mainProc(); + + if (field_0x109c == 0) { + fopAcM_posMoveF(this, mCcStts.GetCCMoveP()); + mAcch.CrrPos(dComIfG_Bgsp()); + field_0x9d4 = mAcch.m_gnd; + mGroundY = mAcch.GetGroundH(); + + if (mMode == 0 && !mAcch.ChkGroundHit()) { + current.pos = old.pos; + } + } + + if (mGroundY != -1000000000.0f) { + setEnvTevColor(); + setRoomNo(); + } + + allAnmPlay(); + adjustShapeAngle(); + setMtx(0); + setCollisions(); + setAttnPos(); + setPrtcl(); + + if (mpBgw != NULL && field_0x1fbc != field_0x109c) { + field_0x1fbc = field_0x109c; + if (field_0x1fbc != 0) { + if (dComIfG_Bgsp().Regist(mpBgw, this)) { + rv = 0; + } + } else if (dComIfG_Bgsp().Release(mpBgw)) { + rv = 0; + } + } + + return rv; } -/* ############################################################################################## */ -/* 80C0FBA0-80C0FBA4 000124 0004+00 1/2 0/0 0/0 .rodata @4409 */ -SECTION_RODATA static f32 const lit_4409 = 800.0f; -COMPILER_STRIP_GATE(0x80C0FBA0, &lit_4409); - -/* 80C0FBA4-80C0FBAC 000128 0004+04 1/1 0/0 0/0 .rodata @4410 */ -SECTION_RODATA static f32 const lit_4410[1 + 1 /* padding */] = { - 900.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80C0FBA4, &lit_4410); - /* 80C00A44-80C00ACC 000C24 0088+00 1/0 0/0 0/0 .text Draw__11daObj_GrA_cFv */ -void daObj_GrA_c::Draw() { - // NONMATCHING +int daObj_GrA_c::Draw() { + f32 fVar1 = 800.0f; + if (mMode == 3) { + fVar1 = 900.0f; + } + + if (field_0x844 == 0 || dComIfGs_wolfeye_effect_check()) { + draw(fVar1); + } + + return 1; } -/* ############################################################################################## */ -/* 80C0FBAC-80C0FBB4 000130 0008+00 5/14 0/0 0/0 .rodata @4501 */ -SECTION_RODATA static u8 const lit_4501[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C0FBAC, &lit_4501); - -/* 80C00ACC-80C00D5C 000CAC 0290+00 1/1 0/0 0/0 .text - * jointCtrl__11daObj_GrA_cFP8J3DJointP8J3DModel */ -void daObj_GrA_c::jointCtrl(J3DJoint* param_0, J3DModel* param_1) { +/* 80C00ACC-80C00D5C 000CAC 0290+00 1/1 0/0 0/0 .text jointCtrl__11daObj_GrA_cFP8J3DJointP8J3DModel */ +int daObj_GrA_c::jointCtrl(J3DJoint* i_joint, J3DModel* param_2) { // NONMATCHING + Mtx MStack_78, MStack_a8; + int jointNo = i_joint->getJntNo(); + cXyz spb4; + MtxP anmMtx = param_2->getAnmMtx(jointNo); + mDoMtx_stack_c::copy(anmMtx); + + if (jointNo != 2) { + switch (jointNo) { + case 1: + case 3: + case 4: + anmMtx = mDoMtx_stack_c::get(); + cMtx_copy(anmMtx, MStack_78); + spb4.set(MStack_78[0][3], MStack_78[1][3], MStack_78[2][3]); + MStack_78[2][3] = 0.0f; + MStack_78[1][3] = 0.0f; + MStack_78[0][3] = 0.0f; + mDoMtx_stack_c::ZXYrotS(shape_angle); + field_0x9c2.x = field_0x9c8.x * daObj_GrA_Param_c::m.field_0x44; + field_0x9c2.y = field_0x9c8.y * daObj_GrA_Param_c::m.field_0x44; + field_0x9c2.z = field_0x9c8.z * daObj_GrA_Param_c::m.field_0x44; + + switch (jointNo) { + case 1: + break; + + case 3: + mDoMtx_stack_c::ZXYrotM(field_0x9bc); + break; + + case 4: + mDoMtx_stack_c::ZXYrotM(field_0x9c2); + } + + mDoMtx_stack_c::inverse(); + cMtx_copy(mDoMtx_stack_c::get(), MStack_a8); + mDoMtx_stack_c::transS(spb4); + mDoMtx_stack_c::ZXYrotM(field_0x91a); + + switch (jointNo) { + case 1: + mDoMtx_stack_c::ZXYrotM(field_0x9bc); + break; + + case 3: + mDoMtx_stack_c::ZXYrotM(field_0x9c2); + break; + + case 4: + mDoMtx_stack_c::ZXYrotM(field_0x9c8); + break; + } + + mDoMtx_stack_c::concat(MStack_a8); + mDoMtx_stack_c::concat(MStack_78); + } + } + + param_2->setAnmMtx(jointNo, mDoMtx_stack_c::get()); + cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); + if ((jointNo == 4 || jointNo == 7) && cLib_checkBit(field_0x840, 0x20)) { + J3DAnmTransform* anm = mBck.getBckAnm(); + mBck.changeBckOnly(mpModelMorf->getAnm()); + mpModelMorf->changeAnm(anm); + } + + return 1; } /* 80C00D5C-80C00D74 000F3C 0018+00 1/0 0/0 0/0 .text getResName__11daObj_GrA_cFv */ -void daObj_GrA_c::getResName() { - // NONMATCHING +const char* daObj_GrA_c::getResName() { + return l_resFileNameList[mMode]; } -/* ############################################################################################## */ -/* 80C0FE14-80C0FE14 000398 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C0FE58 = "Obj_grA"; -#pragma pop - /* 80C00D74-80C00DF8 000F54 0084+00 1/1 0/0 0/0 .text getMode__11daObj_GrA_cFv */ -void daObj_GrA_c::getMode() { - // NONMATCHING +u8 daObj_GrA_c::getMode() { + u32 uVar1 = fopAcM_GetParam(this) >> 28 & 3; + strcpy(&field_0x744, "Obj_grA"); + + switch (uVar1) { + case 1: + return 1; + + case 2: + return 2; + + case 3: + return 3; + + case 0: + default: + return 0; + } } /* 80C00DF8-80C00E04 000FD8 000C+00 1/1 0/0 0/0 .text getPathNo__11daObj_GrA_cFv */ -void daObj_GrA_c::getPathNo() { - // NONMATCHING +u8 daObj_GrA_c::getPathNo() { + return fopAcM_GetParam(this) >> 20 & 0xFF; } /* 80C00E04-80C00E10 000FE4 000C+00 4/4 0/0 0/0 .text getTagNo__11daObj_GrA_cFv */ -void daObj_GrA_c::getTagNo() { - // NONMATCHING +u16 daObj_GrA_c::getTagNo() { + return fopAcM_GetParam(this) >> 7 & 0x7F; } /* 80C00E10-80C00E1C 000FF0 000C+00 1/1 0/0 0/0 .text getJumpType__11daObj_GrA_cFv */ -void daObj_GrA_c::getJumpType() { - // NONMATCHING +u16 daObj_GrA_c::getJumpType() { + return fopAcM_GetParam(this) >> 7 & 0x7F; } /* 80C00E1C-80C00EFC 000FFC 00E0+00 1/1 0/0 0/0 .text isDelete__11daObj_GrA_cFv */ -void daObj_GrA_c::isDelete() { +BOOL daObj_GrA_c::isDelete() { // NONMATCHING -} + if (mMode == 3) { + if (!dComIfGs_isSwitch(field_0xa7f, fopAcM_GetRoomNo(this))) { + return FALSE; + } + } else if (mMode == 2) { + if (!isFirstGra() || !daNpcF_chkEvtBit(0x52)) { + if (daPy_getPlayerActorClass() != NULL) { + if (daPy_getPlayerActorClass()->current.pos.y < current.pos.y) { + return FALSE; + } + } else { + return FALSE; + } + } + } else { + if (mMode == 1) { + if (daNpcF_chkEvtBit(0x40)) { + return FALSE; + } + } else { + return FALSE; + } + } -/* ############################################################################################## */ -/* 80C0FBB4-80C0FBB8 000138 0004+00 8/19 0/0 0/0 .rodata @4618 */ -SECTION_RODATA static f32 const lit_4618 = -1.0f; -COMPILER_STRIP_GATE(0x80C0FBB4, &lit_4618); + return TRUE; +} /* 80C00EFC-80C010D4 0010DC 01D8+00 1/1 0/0 0/0 .text restart__11daObj_GrA_cFv */ void daObj_GrA_c::restart() { // NONMATCHING + current.angle.set(0, home.angle.y, 0); + shape_angle = current.angle; + field_0x91a = current.angle; + speedF = 0.0f; + speed.set(0.0f, 0.0f, 0.0f); + mEvtIdx = -1; + field_0xa9c = -1; + field_0xaa0 = 0; + field_0xa8c = 1; + + if (field_0x844) { + setLookMode(0); + } else { + setLookMode(1); + } + + setProcess(&daObj_GrA_c::wait); + field_0xa94 = 0.0f; + field_0xa98 = 0.0f; + health = daObj_GrA_Param_c::m.field_0x10; + ppMoveInit(); + field_0x1fbc = ~field_0x109c; + field_0xaac = 0; + field_0x1fe9 = 0; + field_0x1fec = 0; + field_0x1fe4 = -1; + field_0x1ff0 = 0; + field_0x1ff4 = 0; + field_0x2000 = -1; + mDemoCamMode = 0; + field_0x2056 = 0; + field_0x2004 = 0; + field_0x2005 = 0; + field_0x2008 = 0.0f; + field_0x1fc4 = 0; + field_0x1fd8 = 0; + field_0x2031 = 0; + field_0x1520 = 0; + + for (int i = 0; i < 3; i++) { + field_0x2020[i] = -1; + } + + field_0x201d = 0; + field_0x201c = 0; + field_0x2014 = 0; + field_0x1fdc = 0; + field_0x2032 = 0; + mGraMode = 0; + + setBaseMotion(0, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(0, -1.0f); + field_0x204c.entry(NULL); + field_0x209c = 0; } -/* ############################################################################################## */ -/* 80C108A0-80C108A4 000008 0001+03 4/4 0/0 0/0 .bss @1109 */ -static u8 lit_1109[1 + 3 /* padding */]; - -/* 80C108A4-80C108A8 00000C 0001+03 0/0 0/0 0/0 .bss @1107 */ -#pragma push -#pragma force_active on -static u8 lit_1107[1 + 3 /* padding */]; -#pragma pop - -/* 80C108A8-80C108AC 000010 0001+03 0/0 0/0 0/0 .bss @1105 */ -#pragma push -#pragma force_active on -static u8 lit_1105[1 + 3 /* padding */]; -#pragma pop - -/* 80C108AC-80C108B0 000014 0001+03 0/0 0/0 0/0 .bss @1104 */ -#pragma push -#pragma force_active on -static u8 lit_1104[1 + 3 /* padding */]; -#pragma pop - -/* 80C108B0-80C108B4 000018 0001+03 0/0 0/0 0/0 .bss @1099 */ -#pragma push -#pragma force_active on -static u8 lit_1099[1 + 3 /* padding */]; -#pragma pop - -/* 80C108B4-80C108B8 00001C 0001+03 0/0 0/0 0/0 .bss @1097 */ -#pragma push -#pragma force_active on -static u8 lit_1097[1 + 3 /* padding */]; -#pragma pop - -/* 80C108B8-80C108BC 000020 0001+03 0/0 0/0 0/0 .bss @1095 */ -#pragma push -#pragma force_active on -static u8 lit_1095[1 + 3 /* padding */]; -#pragma pop - -/* 80C108BC-80C108C0 000024 0001+03 0/0 0/0 0/0 .bss @1094 */ -#pragma push -#pragma force_active on -static u8 lit_1094[1 + 3 /* padding */]; -#pragma pop - -/* 80C108C0-80C108C4 000028 0001+03 0/0 0/0 0/0 .bss @1057 */ -#pragma push -#pragma force_active on -static u8 lit_1057[1 + 3 /* padding */]; -#pragma pop - -/* 80C108C4-80C108C8 00002C 0001+03 0/0 0/0 0/0 .bss @1055 */ -#pragma push -#pragma force_active on -static u8 lit_1055[1 + 3 /* padding */]; -#pragma pop - -/* 80C108C8-80C108CC 000030 0001+03 0/0 0/0 0/0 .bss @1053 */ -#pragma push -#pragma force_active on -static u8 lit_1053[1 + 3 /* padding */]; -#pragma pop - -/* 80C108CC-80C108D0 000034 0001+03 0/0 0/0 0/0 .bss @1052 */ -#pragma push -#pragma force_active on -static u8 lit_1052[1 + 3 /* padding */]; -#pragma pop - -/* 80C108D0-80C108D4 000038 0001+03 0/0 0/0 0/0 .bss @1014 */ -#pragma push -#pragma force_active on -static u8 lit_1014[1 + 3 /* padding */]; -#pragma pop - -/* 80C108D4-80C108D8 00003C 0001+03 0/0 0/0 0/0 .bss @1012 */ -#pragma push -#pragma force_active on -static u8 lit_1012[1 + 3 /* padding */]; -#pragma pop - -/* 80C108D8-80C108DC 000040 0001+03 0/0 0/0 0/0 .bss @1010 */ -#pragma push -#pragma force_active on -static u8 lit_1010[1 + 3 /* padding */]; -#pragma pop - -/* 80C108DC-80C108E0 000044 0001+03 0/0 0/0 0/0 .bss @1009 */ -#pragma push -#pragma force_active on -static u8 lit_1009[1 + 3 /* padding */]; -#pragma pop - -/* 80C108E0-80C108EC 000048 000C+00 0/1 0/0 0/0 .bss @4026 */ -#pragma push -#pragma force_active on -static u8 lit_4026[12]; -#pragma pop +UNK_REL_BSS; /* 80C108EC-80C108F8 000054 000C+00 0/2 0/0 0/0 .bss l_centerOfst */ -#pragma push -#pragma force_active on -static u8 l_centerOfst[12]; -#pragma pop - -/* 80C108F8-80C10904 000060 000C+00 0/1 0/0 0/0 .bss @4027 */ -#pragma push -#pragma force_active on -static u8 lit_4027[12]; -#pragma pop +static cXyz l_centerOfst(0.0f, 67.0f, 26.0f); /* 80C10904-80C10908 00006C 0004+00 1/2 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[4]; +static daObj_GrA_Param_c l_HIO; /* 80C010D4-80C013B0 0012B4 02DC+00 1/1 0/0 0/0 .text init__11daObj_GrA_cFv */ -void daObj_GrA_c::init() { +int daObj_GrA_c::init() { // NONMATCHING + fopAcM_SetMtx(this, mpModelMorf->getModel()->getBaseTRMtx()); + mSound.init(¤t.pos, &eyePos, 3, 1); + eventInfo.setArchiveName((char*)getResName()); + field_0xa4c = &l_HIO; + attention_info.distances[4] = 40; + attention_info.distances[2] = 22; + mAcchCir.SetWall(daObj_GrA_Param_c::m.mWallH, daObj_GrA_Param_c::m.mWallR); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, + fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this)); + mCcStts.Init(daObj_GrA_Param_c::m.mWeight, 0, this); + field_0xf50.Set(mCcDCyl); + field_0xf50.SetStts(&mCcStts); + field_0xce0[0].Set(mCcDSph); + field_0xce0[0].SetStts(&mCcStts); + field_0xce0[0].SetAtSe(11); + field_0xce0[0].SetAtSpl((dCcG_At_Spl)1); + field_0xce0[0].SetAtType(AT_TYPE_800); + field_0xce0[0].OnAtSPrmBit(12); + field_0xce0[0].SetAtAtp(1); + field_0xce0[0].OffTgNoConHit(); + field_0xce0[0].OffCoSetBit(); + + field_0xce0[1].Set(mCcDSph); + field_0xce0[1].SetStts(&mCcStts); + field_0xce0[1].SetAtSe(11); + field_0xce0[1].SetAtSpl((dCcG_At_Spl)1); + field_0xce0[1].SetAtType(AT_TYPE_800); + field_0xce0[1].OnAtSPrmBit(12); + field_0xce0[1].SetAtAtp(1); + field_0xce0[1].OffTgNoConHit(); + field_0xce0[1].OffCoSetBit(); + + mAcch.CrrPos(dComIfG_Bgsp()); + field_0x9d4 = mAcch.m_gnd; + mGroundY = mAcch.GetGroundH(); + + for (int i = 0; i < 6; i++) { + field_0xab8[0].field_0x24[i]->init(&mAcch, 0.0f, 0.0f); + } + + setEnvTevColor(); + setRoomNo(); + + if (mMode == 2) { + fopAcM_OffStatus(this, fopAcM_STATUS_UNK_004000); + } + + field_0x1528.setPathInfo(getPathNo(), fopAcM_GetRoomNo(this), 1); + restart(); + return MoveBGExecute(); } /* 80C013B0-80C014F4 001590 0144+00 24/23 0/0 0/0 .text setBaseAnm__11daObj_GrA_cFif */ -void daObj_GrA_c::setBaseAnm(int param_0, f32 param_1) { +void daObj_GrA_c::setBaseAnm(int param_1, f32 i_morf) { // NONMATCHING + J3DAnmTransformKey* transformKey = NULL; + int i_mode = 3; + + if (l_bckGetParamList[param_1] >= 0) { + transformKey = (J3DAnmTransformKey*)getTrnsfrmKeyAnmP(l_resNames[l_bckGetParamList[param_1 + 1]], l_bckGetParamList[param_1]); + } + + cLib_offBit(field_0x840, 0x11); + + switch (param_1) { + case 0: + case 1: + case 2: + case 7: + case 9: + case 18: + case 19: + case 21: + break; + + case 3: + i_mode = 0; + break; + + case 4: + case 5: + i_mode = 0; + break; + + case 6: + case 14: + case 20: + i_mode = 0; + break; + + case 8: + i_mode = 0; + break; + + case 10: + case 11: + case 12: + case 13: + i_mode = 0; + break; + + case 15: + i_mode = 0; + break; + + case 16: + case 17: + i_mode = 0; + break; + + default: + transformKey = NULL; + } + + if (transformKey != NULL && setMcaMorfAnm(transformKey, 1.0f, i_morf, i_mode, 0, -1) != 0) { + field_0x842 = 0; + cLib_onBit(field_0x840, 0x11); + mpModelMorf->setMorf(i_morf); + } } /* 80C014F4-80C01698 0016D4 01A4+00 15/14 0/0 0/0 .text setFaceAnm__11daObj_GrA_cFibf */ -void daObj_GrA_c::setFaceAnm(int param_0, bool param_1, f32 param_2) { +void daObj_GrA_c::setFaceAnm(int param_1, bool i_modify, f32 i_morf) { // NONMATCHING + J3DAnmTransform* transform = NULL; + int i_mode = 0; + + if (l_bckGetParamList[param_1] >= 0) { + transform = getTrnsfrmKeyAnmP(l_resNames[l_bckGetParamList[param_1 + 1]], l_bckGetParamList[param_1]); + } + + cLib_offBit(field_0x840, 0x44); + cLib_offBit(field_0x840, 0x22); + + switch (param_1) { + case 22: + case 23: + case 24: + case 25: + i_mode = 2; + setFaceBtp(0); + break; + + case 26: + case 27: + case 28: + setFaceBtp(0); + break; + + case 29: + setFaceBtp(1); + break; + + case 30: + setFaceBtp(2); + break; + + case 31: + setFaceBtp(0); + break; + + case 32: + setFaceBtp(3); + break; + + case 33: + setFaceBtp(0); + break; + + case 34: + setFaceBtp(0); + break; + + default: + transform = NULL; + } + + if (transform != NULL && setBckAnm(transform, 1.0f, i_mode, 0, -1, i_modify) != 0) { + cLib_onBit(field_0x840, 0x22); + mpModelMorf->setMorf(i_morf); + } } /* 80C01698-80C0178C 001878 00F4+00 2/2 0/0 0/0 .text setFaceBtp__11daObj_GrA_cFi */ -void daObj_GrA_c::setFaceBtp(int param_0) { +void daObj_GrA_c::setFaceBtp(int param_1) { // NONMATCHING + J3DAnmTexPattern* texPattern = NULL; + int i_mode = 0; + + cLib_offBit(field_0x840, 0x44); + + if (l_btpGetParamList[param_1] >= 0) { + texPattern = (J3DAnmTexPattern*)getTexPtrnAnmP(l_resNames[l_btpGetParamList[param_1 + 1]], l_btpGetParamList[param_1]); + } + + switch (param_1) { + case 0: + i_mode = 2; + break; + + case 1: + case 2: + case 3: + break; + + default: + texPattern = NULL; + } + + if (field_0x844 != false) { + texPattern = NULL; + } + + if (texPattern != NULL && setBtpAnm(texPattern, mpModelMorf->getModel()->getModelData(), 1.0f, i_mode) != 0) { + cLib_onBit(field_0x840, 0x44); + } } -/* 80C0178C-80C017AC 00196C 0020+00 22/22 0/0 0/0 .text setBaseMotion__11daObj_GrA_cFif - */ -void daObj_GrA_c::setBaseMotion(int param_0, f32 param_1) { - // NONMATCHING +/* 80C0178C-80C017AC 00196C 0020+00 22/22 0/0 0/0 .text setBaseMotion__11daObj_GrA_cFif */ +void daObj_GrA_c::setBaseMotion(int param_1, f32 param_2) { + if (field_0xa90 >= 22) { + return; + } + + field_0xa90 = param_1; + field_0xa94 = param_2; + field_0xa8d = 1; } -/* 80C017AC-80C017F0 00198C 0044+00 25/25 0/0 0/0 .text setFaceMotion__11daObj_GrA_cFif - */ -void daObj_GrA_c::setFaceMotion(int param_0, f32 param_1) { - // NONMATCHING +/* 80C017AC-80C017F0 00198C 0044+00 25/25 0/0 0/0 .text setFaceMotion__11daObj_GrA_cFif */ +void daObj_GrA_c::setFaceMotion(int param_1, f32 param_2) { + if (field_0xa92 >= 14) { + return; + } + + field_0xa92 = param_1; + field_0xa8e = 1; + + if (param_2 < 0.0f) { + field_0xa98 = daObj_GrA_Param_c::m.field_0x0c; + return; + } + + field_0xa98 = param_2; } /* 80C017F0-80C018C0 0019D0 00D0+00 7/7 0/0 0/0 .text calcMotion__11daObj_GrA_cFv */ void daObj_GrA_c::calcMotion() { - // NONMATCHING + if (field_0xa90 < 22 && mBaseMotionList[field_0xa90]) { + field_0xa88 = (this->*mBaseMotionList[field_0xa90])(field_0xa8d); + } + + if (field_0xa92 < 14 && mFaceMotionList[field_0xa92]) { + (this->*mFaceMotionList[field_0xa92])(field_0xa8e); + } + + field_0xa8d = 0; + field_0xa8e = 0; } -/* 80C018C0-80C018F4 001AA0 0034+00 4/4 0/0 0/0 .text - * checkProcess__11daObj_GrA_cFM11daObj_GrA_cFPCvPvPv_i */ -void daObj_GrA_c::checkProcess(int (daObj_GrA_c::*param_0)(void*)) { - // NONMATCHING +/* 80C018C0-80C018F4 001AA0 0034+00 4/4 0/0 0/0 .text checkProcess__11daObj_GrA_cFM11daObj_GrA_cFPCvPvPv_i */ +BOOL daObj_GrA_c::checkProcess(int (daObj_GrA_c::*process)(void*)) { + return process == field_0xa50; } -/* 80C018F4-80C019A4 001AD4 00B0+00 22/22 0/0 0/0 .text - * setProcess__11daObj_GrA_cFM11daObj_GrA_cFPCvPvPv_i */ -void daObj_GrA_c::setProcess(int (daObj_GrA_c::*param_0)(void*)) { - // NONMATCHING +/* 80C018F4-80C019A4 001AD4 00B0+00 22/22 0/0 0/0 .text setProcess__11daObj_GrA_cFM11daObj_GrA_cFPCvPvPv_i */ +int daObj_GrA_c::setProcess(int (daObj_GrA_c::*process)(void*)) { + field_0xa7c = 2; + + if (field_0xa50) { + (this->*field_0xa50)(NULL); + } + + field_0xa7c = 0; + field_0xa50 = process; + + if (field_0xa50) { + (this->*field_0xa50)(NULL); + } + + field_0xa7c = 1; + + return 1; } /* 80C019A4-80C019B8 001B84 0014+00 2/2 0/0 0/0 .text getDistTableIdx__Fii */ -static void getDistTableIdx(int param_0, int param_1) { - // NONMATCHING +static u8 getDistTableIdx(int param_1, int param_2) { + return param_1 + param_2 * 20 + 94; } /* 80C019B8-80C01C18 001B98 0260+00 1/0 0/0 0/0 .text setParam__11daObj_GrA_cFv */ void daObj_GrA_c::setParam() { // NONMATCHING + if (mMode == 0) { + if (!checkProcess(&daObj_GrA_c::standWait)) { + if (checkProcess(&daObj_GrA_c::wait)) { + if (field_0x150c != 0) { + if (!checkProcess(&daObj_GrA_c::rollReturn)) { + if (checkProcess(&daObj_GrA_c::toStone)) { + attnSttsOn(0, 0); + } else { + attention_info.flags = 0x200004; + } + } + } + } + } + } else if (mMode == 1) { + if (checkProcess(&daObj_GrA_c::standWaitJump)) { + attnSttsOn(1, 1); + attention_info.distances[0] = getDistTableIdx(6, 6); + attention_info.distances[1] = attention_info.distances[0]; + attention_info.distances[3] = getDistTableIdx(4, 6); + } else { + attention_info.flags = 0; + } + + if (field_0x844 == false && daPy_py_c::checkNowWolf() != 0) { + attention_info.flags = 0; + } + } else if (mMode == 2) { + attention_info.flags &= ~0x10; + attention_info.flags = 0x200000; + } else { + attention_info.flags &= ~0x10; + if (field_0x1508 == 0) { + attnSttsOn(0, 0); + } + } + + scale.set(daObj_GrA_Param_c::m.field_0x08, daObj_GrA_Param_c::m.field_0x08, daObj_GrA_Param_c::m.field_0x08); + mCcStts.SetWeight(daObj_GrA_Param_c::m.mWeight); + gravity = daObj_GrA_Param_c::m.mGravity; } /* 80C01C18-80C01D7C 001DF8 0164+00 1/1 0/0 0/0 .text checkEvent__11daObj_GrA_cFv */ -void daObj_GrA_c::checkEvent() { +BOOL daObj_GrA_c::checkEvent() { // NONMATCHING + BOOL rv = TRUE; + if (dComIfGp_event_runCheck()) { + rv = FALSE; + if (eventInfo.checkCommandTalk()) { + if (checkProcess(&daObj_GrA_c::talk)) { + rv = (this->*field_0xa50)(NULL); + } else if (!dComIfGp_event_chkTalkXY() || dComIfGp_evmng_ChkPresentEnd()) { + setProcess(&daObj_GrA_c::talk); + } + } else if (eventInfo.checkCommandDemoAccrpt()) { + if (dComIfGp_getEventManager().endCheck(mEvtIdx) != 0) { + dComIfGp_event_reset(); + field_0x1520 = 0; + mEvtIdx = -1; + rv = TRUE; + } + + if (field_0x209c == 1) { + rv = TRUE; + } + } else { + rv = TRUE; + } + } + + return rv; } -/* ############################################################################################## */ -/* 80C0FBB8-80C0FBBC 00013C 0004+00 0/1 0/0 0/0 .rodata @5022 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5022 = -160.0f; -COMPILER_STRIP_GATE(0x80C0FBB8, &lit_5022); -#pragma pop - -/* 80C0FBBC-80C0FBC0 000140 0004+00 0/1 0/0 0/0 .rodata @5023 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5023 = -100.0f; -COMPILER_STRIP_GATE(0x80C0FBBC, &lit_5023); -#pragma pop - -/* 80C0FBC0-80C0FBC4 000144 0004+00 0/1 0/0 0/0 .rodata @5024 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5024 = 160.0f; -COMPILER_STRIP_GATE(0x80C0FBC0, &lit_5024); -#pragma pop - -/* 80C0FBC4-80C0FBCC 000148 0004+04 0/1 0/0 0/0 .rodata @5025 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5025[1 + 1 /* padding */] = { - 240.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80C0FBC4, &lit_5025); -#pragma pop - -/* 80C0FBCC-80C0FBD4 000150 0008+00 0/13 0/0 0/0 .rodata @5026 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5026[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C0FBCC, &lit_5026); -#pragma pop - -/* 80C0FBD4-80C0FBDC 000158 0008+00 0/13 0/0 0/0 .rodata @5027 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5027[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C0FBD4, &lit_5027); -#pragma pop - -/* 80C0FBDC-80C0FBE4 000160 0008+00 0/13 0/0 0/0 .rodata @5028 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5028[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C0FBDC, &lit_5028); -#pragma pop - /* 80C01D7C-80C01FE4 001F5C 0268+00 1/0 0/0 0/0 .text mainProc__11daObj_GrA_cFv */ void daObj_GrA_c::mainProc() { // NONMATCHING + fopAcM_setCullSizeBox(this, -160.0f, -100.0f, -160.0f, 160.0f, 240.0f, 160.0f); + + if (checkEvent()) { + hitChk(); + if (field_0xa50) { + (this->*field_0xa50)(NULL); + if (mMode == 0) { + if (getSrchCircleR() < (home.pos - current.pos).absXZ()) { + cXyz sp3c(0.0f, 0.0f, getSrchCircleR()); + cLib_offsetPos(¤t.pos, &home.pos, + cLib_targetAngleY(&home.pos, ¤t.pos), &sp3c); + } + } + } + + orderEvent(field_0x1508, l_evtNameList[field_0x1520]); + } + + if (field_0xa8c != 0) { + field_0xa94 = 0.0f; + field_0xa98 = 0.0f; + field_0xa8c = 0; + } + + calcMotion(); } -/* 80C01FE4-80C01FE8 0021C4 0004+00 1/0 0/0 0/0 .text adjustShapeAngle__11daObj_GrA_cFv - */ +/* 80C01FE4-80C01FE8 0021C4 0004+00 1/0 0/0 0/0 .text adjustShapeAngle__11daObj_GrA_cFv */ void daObj_GrA_c::adjustShapeAngle() { /* empty function */ } -/* ############################################################################################## */ -/* 80C0FBE4-80C0FBE8 000168 0004+00 0/1 0/0 0/0 .rodata @5241 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5241 = 0x3F93C86D; -COMPILER_STRIP_GATE(0x80C0FBE4, &lit_5241); -#pragma pop - -/* 80C0FBE8-80C0FBEC 00016C 0004+00 0/1 0/0 0/0 .rodata @5242 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5242 = 0xBD57EFE1; -COMPILER_STRIP_GATE(0x80C0FBE8, &lit_5242); -#pragma pop - -/* 80C0FBEC-80C0FBF0 000170 0004+00 0/1 0/0 0/0 .rodata @5243 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5243 = 0x3F826D0D; -COMPILER_STRIP_GATE(0x80C0FBEC, &lit_5243); -#pragma pop - -/* 80C0FBF0-80C0FBF4 000174 0004+00 0/1 0/0 0/0 .rodata @5244 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5244 = 0x3F38E2A0; -COMPILER_STRIP_GATE(0x80C0FBF0, &lit_5244); -#pragma pop - -/* 80C0FBF4-80C0FBF8 000178 0004+00 0/1 0/0 0/0 .rodata @5245 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5245 = 0xBE0F6406; -COMPILER_STRIP_GATE(0x80C0FBF4, &lit_5245); -#pragma pop - -/* 80C0FBF8-80C0FBFC 00017C 0004+00 0/1 0/0 0/0 .rodata @5246 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5246 = 0x3FAAA68F; -COMPILER_STRIP_GATE(0x80C0FBF8, &lit_5246); -#pragma pop - -/* 80C0FBFC-80C0FC00 000180 0004+00 0/1 0/0 0/0 .rodata @5247 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5247 = 0xBFAF2D4D; -COMPILER_STRIP_GATE(0x80C0FBFC, &lit_5247); -#pragma pop - -/* 80C0FC00-80C0FC04 000184 0004+00 0/1 0/0 0/0 .rodata @5248 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5248 = 0xBE7F6901; -COMPILER_STRIP_GATE(0x80C0FC00, &lit_5248); -#pragma pop - -/* 80C0FC04-80C0FC08 000188 0004+00 0/1 0/0 0/0 .rodata @5249 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5249 = 0x3DBC31DF; -COMPILER_STRIP_GATE(0x80C0FC04, &lit_5249); -#pragma pop - -/* 80C0FC08-80C0FC0C 00018C 0004+00 0/1 0/0 0/0 .rodata @5250 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5250 = 0x3EFC15F4; -COMPILER_STRIP_GATE(0x80C0FC08, &lit_5250); -#pragma pop - -/* 80C0FC0C-80C0FC10 000190 0004+00 0/1 0/0 0/0 .rodata @5251 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5251 = 0xBEBC9E88; -COMPILER_STRIP_GATE(0x80C0FC0C, &lit_5251); -#pragma pop - -/* 80C0FC10-80C0FC14 000194 0004+00 0/1 0/0 0/0 .rodata @5252 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5252 = 0xBF932064; -COMPILER_STRIP_GATE(0x80C0FC10, &lit_5252); -#pragma pop - -/* 80C0FC14-80C0FC18 000198 0004+00 0/1 0/0 0/0 .rodata @5253 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5253 = 0x3EE0F8E8; -COMPILER_STRIP_GATE(0x80C0FC14, &lit_5253); -#pragma pop - -/* 80C0FC18-80C0FC1C 00019C 0004+00 0/1 0/0 0/0 .rodata @5254 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5254 = 0xBEF809F6; -COMPILER_STRIP_GATE(0x80C0FC18, &lit_5254); -#pragma pop - -/* 80C0FC1C-80C0FC20 0001A0 0004+00 0/1 0/0 0/0 .rodata @5255 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5255 = 0x3FEB5F4E; -COMPILER_STRIP_GATE(0x80C0FC1C, &lit_5255); -#pragma pop - -/* 80C0FC20-80C0FC24 0001A4 0004+00 0/1 0/0 0/0 .rodata @5256 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5256 = 0xBFC9527E; -COMPILER_STRIP_GATE(0x80C0FC20, &lit_5256); -#pragma pop - -/* 80C0FC24-80C0FC28 0001A8 0004+00 0/1 0/0 0/0 .rodata @5257 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5257 = 0xBF15C7BD; -COMPILER_STRIP_GATE(0x80C0FC24, &lit_5257); -#pragma pop - -/* 80C0FC28-80C0FC2C 0001AC 0004+00 0/1 0/0 0/0 .rodata @5258 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5258 = 0x3EDF3472; -COMPILER_STRIP_GATE(0x80C0FC28, &lit_5258); -#pragma pop - -/* 80C0FC2C-80C0FC30 0001B0 0004+00 0/1 0/0 0/0 .rodata @5259 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5259 = 0x3F96655A; -COMPILER_STRIP_GATE(0x80C0FC2C, &lit_5259); -#pragma pop - -/* 80C0FC30-80C0FC34 0001B4 0004+00 0/1 0/0 0/0 .rodata @5260 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5260 = 0xBF2863BF; -COMPILER_STRIP_GATE(0x80C0FC30, &lit_5260); -#pragma pop - -/* 80C0FC34-80C0FC38 0001B8 0004+00 0/1 0/0 0/0 .rodata @5261 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5261 = 0xBF93F783; -COMPILER_STRIP_GATE(0x80C0FC34, &lit_5261); -#pragma pop - -/* 80C0FC38-80C0FC3C 0001BC 0004+00 0/1 0/0 0/0 .rodata @5262 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5262 = 0x3FAB3355; -COMPILER_STRIP_GATE(0x80C0FC38, &lit_5262); -#pragma pop - -/* 80C0FC3C-80C0FC40 0001C0 0004+00 0/1 0/0 0/0 .rodata @5263 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5263 = 0xBF30A601; -COMPILER_STRIP_GATE(0x80C0FC3C, &lit_5263); -#pragma pop - -/* 80C0FC40-80C0FC44 0001C4 0004+00 0/1 0/0 0/0 .rodata @5264 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5264 = 0x3F89BE7F; -COMPILER_STRIP_GATE(0x80C0FC40, &lit_5264); -#pragma pop - -/* 80C0FC44-80C0FC48 0001C8 0004+00 0/1 0/0 0/0 .rodata @5265 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5265 = 0xBF7226F6; -COMPILER_STRIP_GATE(0x80C0FC44, &lit_5265); -#pragma pop - -/* 80C0FC48-80C0FC4C 0001CC 0004+00 0/1 0/0 0/0 .rodata @5266 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5266 = 0xBF2B5AFB; -COMPILER_STRIP_GATE(0x80C0FC48, &lit_5266); -#pragma pop - -/* 80C0FC4C-80C0FC50 0001D0 0004+00 0/1 0/0 0/0 .rodata @5267 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5267 = 0xBCF7A4E8; -COMPILER_STRIP_GATE(0x80C0FC4C, &lit_5267); -#pragma pop - -/* 80C0FC50-80C0FC54 0001D4 0004+00 0/1 0/0 0/0 .rodata @5268 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5268 = 0x3D86809D; -COMPILER_STRIP_GATE(0x80C0FC50, &lit_5268); -#pragma pop - -/* 80C0FC54-80C0FC58 0001D8 0004+00 0/1 0/0 0/0 .rodata @5269 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5269 = 0xBF154F05; -COMPILER_STRIP_GATE(0x80C0FC54, &lit_5269); -#pragma pop - -/* 80C0FC58-80C0FC5C 0001DC 0004+00 0/1 0/0 0/0 .rodata @5270 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5270 = 0xBF917B8D; -COMPILER_STRIP_GATE(0x80C0FC58, &lit_5270); -#pragma pop - -/* 80C0FC5C-80C0FC60 0001E0 0004+00 0/1 0/0 0/0 .rodata @5271 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5271 = 0x3F89E397; -COMPILER_STRIP_GATE(0x80C0FC5C, &lit_5271); -#pragma pop - -/* 80C0FC60-80C0FC64 0001E4 0004+00 0/1 0/0 0/0 .rodata @5272 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5272 = 0xBEE0B0F2; -COMPILER_STRIP_GATE(0x80C0FC60, &lit_5272); -#pragma pop - -/* 80C0FC64-80C0FC68 0001E8 0004+00 0/1 0/0 0/0 .rodata @5273 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5273 = 0x3E3D7A9A; -COMPILER_STRIP_GATE(0x80C0FC64, &lit_5273); -#pragma pop - -/* 80C0FC68-80C0FC6C 0001EC 0004+00 0/1 0/0 0/0 .rodata @5274 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5274 = 0xBBC77DD8; -COMPILER_STRIP_GATE(0x80C0FC68, &lit_5274); -#pragma pop - -/* 80C0FC6C-80C0FC70 0001F0 0004+00 0/1 0/0 0/0 .rodata @5275 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5275 = 0xBE8C79F6; -COMPILER_STRIP_GATE(0x80C0FC6C, &lit_5275); -#pragma pop - -/* 80C0FC70-80C0FC74 0001F4 0004+00 0/1 0/0 0/0 .rodata @5276 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5276 = 0x3FBAC122; -COMPILER_STRIP_GATE(0x80C0FC70, &lit_5276); -#pragma pop - -/* 80C0FC74-80C0FC78 0001F8 0004+00 0/1 0/0 0/0 .rodata @5277 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5277 = 0xBF9D1740; -COMPILER_STRIP_GATE(0x80C0FC74, &lit_5277); -#pragma pop - -/* 80C0FC78-80C0FC7C 0001FC 0004+00 0/1 0/0 0/0 .rodata @5278 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5278 = 0xBDFD701E; -COMPILER_STRIP_GATE(0x80C0FC78, &lit_5278); -#pragma pop - -/* 80C0FC7C-80C0FC80 000200 0004+00 0/1 0/0 0/0 .rodata @5279 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5279 = 0x3E3ADFF8; -COMPILER_STRIP_GATE(0x80C0FC7C, &lit_5279); -#pragma pop - -/* 80C0FC80-80C0FC84 000204 0004+00 0/1 0/0 0/0 .rodata @5280 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5280 = 0xBF445D10; -COMPILER_STRIP_GATE(0x80C0FC80, &lit_5280); -#pragma pop - -/* 80C0FC84-80C0FC88 000208 0004+00 0/1 0/0 0/0 .rodata @5281 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5281 = 0xBCABCF92; -COMPILER_STRIP_GATE(0x80C0FC84, &lit_5281); -#pragma pop - -/* 80C0FC88-80C0FC8C 00020C 0004+00 0/1 0/0 0/0 .rodata @5282 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5282 = 0xBF914092; -COMPILER_STRIP_GATE(0x80C0FC88, &lit_5282); -#pragma pop - -/* 80C10908-80C10918 000070 000C+04 0/1 0/0 0/0 .bss @5037 */ -#pragma push -#pragma force_active on -static u8 lit_5037[12 + 4 /* padding */]; -#pragma pop - -/* 80C10918-80C10924 000080 000C+00 0/1 0/0 0/0 .bss @5040 */ -#pragma push -#pragma force_active on -static u8 lit_5040[12]; -#pragma pop - -/* 80C10924-80C10930 00008C 000C+00 0/1 0/0 0/0 .bss @5041 */ -#pragma push -#pragma force_active on -static u8 lit_5041[12]; -#pragma pop - -/* 80C10930-80C1093C 000098 000C+00 0/1 0/0 0/0 .bss @5042 */ -#pragma push -#pragma force_active on -static u8 lit_5042[12]; -#pragma pop - -/* 80C1093C-80C10948 0000A4 000C+00 0/1 0/0 0/0 .bss @5043 */ -#pragma push -#pragma force_active on -static u8 lit_5043[12]; -#pragma pop - -/* 80C10948-80C10954 0000B0 000C+00 0/1 0/0 0/0 .bss @5044 */ -#pragma push -#pragma force_active on -static u8 lit_5044[12]; -#pragma pop - -/* 80C10954-80C10960 0000BC 000C+00 0/1 0/0 0/0 .bss @5045 */ -#pragma push -#pragma force_active on -static u8 lit_5045[12]; -#pragma pop - -/* 80C10960-80C1096C 0000C8 000C+00 0/1 0/0 0/0 .bss @5046 */ -#pragma push -#pragma force_active on -static u8 lit_5046[12]; -#pragma pop - -/* 80C1096C-80C10978 0000D4 000C+00 0/1 0/0 0/0 .bss @5047 */ -#pragma push -#pragma force_active on -static u8 lit_5047[12]; -#pragma pop - -/* 80C10978-80C10984 0000E0 000C+00 0/1 0/0 0/0 .bss @5048 */ -#pragma push -#pragma force_active on -static u8 lit_5048[12]; -#pragma pop - -/* 80C10984-80C10990 0000EC 000C+00 0/1 0/0 0/0 .bss @5049 */ -#pragma push -#pragma force_active on -static u8 lit_5049[12]; -#pragma pop - -/* 80C10990-80C1099C 0000F8 000C+00 0/1 0/0 0/0 .bss @5050 */ -#pragma push -#pragma force_active on -static u8 lit_5050[12]; -#pragma pop - -/* 80C1099C-80C109A8 000104 000C+00 0/1 0/0 0/0 .bss @5051 */ -#pragma push -#pragma force_active on -static u8 lit_5051[12]; -#pragma pop - -/* 80C109A8-80C109B4 000110 000C+00 0/1 0/0 0/0 .bss @5052 */ -#pragma push -#pragma force_active on -static u8 lit_5052[12]; -#pragma pop - -/* 80C109B4-80C109C0 00011C 000C+00 0/1 0/0 0/0 .bss @5053 */ -#pragma push -#pragma force_active on -static u8 lit_5053[12]; -#pragma pop - -/* 80C109C0-80C10A74 000128 00B4+00 0/1 0/0 0/0 .bss aTrembleTrans$5036 */ -#pragma push -#pragma force_active on -static u8 aTrembleTrans[180]; -#pragma pop - /* 80C01FE8-80C02614 0021C8 062C+00 1/0 0/0 0/0 .text setMtx__11daObj_GrA_cFi */ -void daObj_GrA_c::setMtx(int param_0) { +void daObj_GrA_c::setMtx(int param_1) { // NONMATCHING + static cXyz aTrembleTrans[15] = { + cXyz(0.0f, 0.0f, 0.0f), + cXyz(1.154554f, -0.052719f, 1.018953f), + cXyz(0.722208f, -0.14003f, 1.333208f), + cXyz(-1.36857f, -0.249424f, 0.091892f), + cXyz(0.492355f, -0.368397f, -1.149426f), + cXyz(0.439399, -0.484451f, 1.838846f), + cXyz(-1.57283f, -0.585079f, 0.435947f), + cXyz(1.174968f, -0.657772f, -1.155991f), + cXyz(1.337504f, -0.690033f, 1.076126f), + cXyz(-0.945907f, -0.669357f, -0.03023f), + cXyz(0.065675f, -0.583237f, -1.136583f), + cXyz(1.077258f, -0.43885f, 0.185038f), + cXyz(-0.006088f, -0.274368f, 1.459019f), + cXyz(-1.227272f, -0.123749f, 0.182495f), + cXyz(-0.767045f, -0.020973f, -1.134783f), + }; + + J3DModel* model = mpModelMorf->getModel(); + J3DModelData* modelData = model->getModelData(); + for (u16 i = 0; i < modelData->getJointNum(); i++) { + modelData->getJointNodePointer(i)->setCallBack(jointCtrlCallBack); + } + + if (field_0x109c != 0) { + cXyz sp30(l_centerOfst); + mDoMtx_stack_c::transS(0.0f, 0.0f, 0.0f); + mDoMtx_stack_c::ZXYrotM(field_0x91a); + sp30.x += aTrembleTrans[field_0x10a0 % 15].x; + sp30.y += aTrembleTrans[field_0x10a0 % 15].y; + sp30.z += aTrembleTrans[field_0x10a0 % 15].z; + mDoMtx_stack_c::transM(sp30); + mDoMtx_stack_c::multVecZero(&sp30); + mDoMtx_stack_c::transS(current.pos.x + sp30.x, current.pos.y + sp30.y, current.pos.z + sp30.z); + mDoMtx_stack_c::ZXYrotM(field_0x91a); + + cXyz sp3c(scale); + mDoMtx_stack_c::scaleM(sp3c); + cMtx_copy(mDoMtx_stack_c::get(), mBgMtx); + } + + if (field_0x109c != 0) { + cXyz sp48; + mDoMtx_stack_c::transS(0.0f, 0.0f, 0.0f); + mDoMtx_stack_c::ZXYrotM(field_0x91a); + mDoMtx_stack_c::transM(aTrembleTrans[field_0x10a0 % 15].x, aTrembleTrans[field_0x10a0 % 15].y, aTrembleTrans[field_0x10a0 % 15].z); + mDoMtx_stack_c::multVecZero(&sp48); + mDoMtx_stack_c::transS(current.pos.x + sp48.x, current.pos.y + sp48.y, current.pos.z + sp48.z); + } else { + mDoMtx_stack_c::transS(current.pos); + } + + mDoMtx_stack_c::ZXYrotM(field_0x91a); + mDoMtx_stack_c::scaleM(scale); + + model->setBaseTRMtx(mDoMtx_stack_c::get()); + + if (param_1 != 0) { + model->setUserArea((u32)this); + } else { + model->setUserArea(0); + } + + if (cLib_checkBit(field_0x840, 0x20) != 0) { + mBck.getBckAnm()->setFrame(mBck.getFrame()); + mpModelMorf->modelCalc(); + } else { + mpModelMorf->modelCalc(); + } } -/* ############################################################################################## */ -/* 80C0FC8C-80C0FC90 000210 0004+00 0/11 0/0 0/0 .rodata @5397 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5397 = 20.0f; -COMPILER_STRIP_GATE(0x80C0FC8C, &lit_5397); -#pragma pop - -/* 80C0FC90-80C0FC94 000214 0004+00 0/3 0/0 0/0 .rodata @5398 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5398 = 200.0f; -COMPILER_STRIP_GATE(0x80C0FC90, &lit_5398); -#pragma pop - -/* 80C0FC94-80C0FC98 000218 0004+00 0/4 0/0 0/0 .rodata @5399 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5399 = 40.0f; -COMPILER_STRIP_GATE(0x80C0FC94, &lit_5399); -#pragma pop - -/* 80C10A74-80C10A84 0001DC 000C+04 0/1 0/0 0/0 .bss @5298 */ -#pragma push -#pragma force_active on -static u8 lit_5298[12 + 4 /* padding */]; -#pragma pop - -/* 80C10A84-80C10A90 0001EC 000C+00 0/1 0/0 0/0 .bss aOfst$5297 */ -#pragma push -#pragma force_active on -static u8 aOfst[12]; -#pragma pop - /* 80C02614-80C02970 0027F4 035C+00 1/0 0/0 0/0 .text setCollisions__11daObj_GrA_cFv */ void daObj_GrA_c::setCollisions() { // NONMATCHING + cXyz sp1c; + + if (field_0x1fc4 != 0 || field_0x844 != false) { + field_0xf50.ClrTgHit(); + } else { + if (field_0x109c == 0) { + field_0xf50.SetAtType(AT_TYPE_800); + if (mMode == 2) { + field_0xf50.OnAtSetBit(); + field_0xf50.OffAtSPrmBit(12); + field_0xf50.OnAtSPrmBit(16); + } else { + field_0xf50.OnAtSPrmBit(12); + } + + field_0xf50.SetAtSe(10); + field_0xf50.SetAtSpl((dCcG_At_Spl)13); + field_0xf50.SetAtType(AT_TYPE_CSTATUE_SWING); + + if (mMode == 1) { + field_0xf50.ClrTgHit(); + } else { + field_0xf50.SetTgType(-1); + field_0xf50.SetTgHitMark((CcG_Tg_HitMark)2); + field_0xf50.SetTgSPrm(19); + field_0xf50.OnTgShield(); + field_0xf50.OnTgNoConHit(); + } + + static cXyz aOfst(0.0f, 0.0f, 20.0f); + + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(field_0x91a.y); + mDoMtx_stack_c::multVec(&aOfst, &sp1c); + field_0xf50.SetC(sp1c); + + if (field_0xa90 == 10 || field_0xa90 == 4) { + field_0xf50.SetH(200.0f); + } else { + field_0xf50.SetH(daObj_GrA_Param_c::m.field_0x14); + } + + field_0xf50.SetR(daObj_GrA_Param_c::m.mWallH); + + if (field_0xf50.ChkAtSet()) { + field_0xf50.SetR(daObj_GrA_Param_c::m.mWallH + 40.0f); + } + + if (cLib_calcTimer(&field_0x1fd8) == 0) { + field_0xf50.OnCoSetBit(); + } else { + field_0xf50.OffCoSetBit(); + } + + dComIfG_Ccsp()->Set(&field_0xf50); + } + + if (checkProcess(&daObj_GrA_c::step)) { + mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(11)); + mDoMtx_stack_c::scaleM(scale); + mDoMtx_stack_c::multVecZero(&sp1c); + field_0xce0[1].SetC(sp1c); + field_0xce0[1].SetR(daObj_GrA_Param_c::m.field_0x8c); + dComIfG_Ccsp()->Set(&field_0xce0[1]); + + mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(11)); + mDoMtx_stack_c::scaleM(scale); + mDoMtx_stack_c::multVecZero(&sp1c); + field_0xce0[0].SetC(sp1c); + field_0xce0[0].SetR(daObj_GrA_Param_c::m.field_0x8c); + dComIfG_Ccsp()->Set(&field_0xce0[0]); + } + } } -/* ############################################################################################## */ -/* 80C0FC98-80C0FC9C 00021C 0004+00 0/6 0/0 0/0 .rodata @5431 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5431 = 15.0f; -COMPILER_STRIP_GATE(0x80C0FC98, &lit_5431); -#pragma pop - -/* 80C0FC9C-80C0FCA0 000220 0004+00 0/6 0/0 0/0 .rodata @5432 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5432 = 25.0f; -COMPILER_STRIP_GATE(0x80C0FC9C, &lit_5432); -#pragma pop - -/* 80C10A90-80C10AA0 0001F8 000C+04 0/1 0/0 0/0 .bss @5404 */ -#pragma push -#pragma force_active on -static u8 lit_5404[12 + 4 /* padding */]; -#pragma pop - -/* 80C10AA0-80C10AAC 000208 000C+00 0/1 0/0 0/0 .bss aEyeOfst$5403 */ -#pragma push -#pragma force_active on -static u8 aEyeOfst[12]; -#pragma pop - /* 80C02970-80C02A5C 002B50 00EC+00 1/0 0/0 0/0 .text setAttnPos__11daObj_GrA_cFv */ void daObj_GrA_c::setAttnPos() { // NONMATCHING + lookat(); + + static cXyz aEyeOfst(15.0f, 25.0f, 0.0f); + + cXyz sp18; + mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(4)); + mDoMtx_stack_c::multVec(&aEyeOfst, &eyePos); + mDoMtx_stack_c::multVecZero(&sp18); + attention_info.position.set(sp18.x, sp18.y + daObj_GrA_Param_c::m.field_0x00, sp18.z); } /* 80C02A5C-80C02A60 002C3C 0004+00 1/0 0/0 0/0 .text drawOtherMdls__11daObj_GrA_cFv */ @@ -2497,1495 +1232,3724 @@ bool daObj_GrA_c::dbgDraw() { } /* 80C02A68-80C02AD4 002C48 006C+00 2/2 0/0 0/0 .text ppMoveInit__11daObj_GrA_cFv */ -void daObj_GrA_c::ppMoveInit() { - // NONMATCHING +int daObj_GrA_c::ppMoveInit() { + memset(&field_0x10ac, 0, 16); + + field_0x109c = 0; + field_0x10a4 = 0; + field_0x10a8 = 0; + field_0x10bc = -1; + field_0x10c4 = 0; + field_0x14b0 = -1; + field_0x14f0 = FLT_MAX; + field_0x14f4 = -1; + + return 1; } /* 80C02AD4-80C02AE8 002CB4 0014+00 17/17 0/0 0/0 .text setLookMode__11daObj_GrA_cFi */ -void daObj_GrA_c::setLookMode(int param_0) { - // NONMATCHING +int daObj_GrA_c::setLookMode(int iNo) { + JUT_ASSERT(2656, 0 <= iNo && iNo < NUMLOOKMODES_e); + mLookMode = iNo; + field_0x1500 = 1; + return 1; } -/* ############################################################################################## */ -/* 80C0FCA0-80C0FCA4 000224 0004+00 1/8 0/0 0/0 .rodata @5568 */ -SECTION_RODATA static f32 const lit_5568 = 0.5f; -COMPILER_STRIP_GATE(0x80C0FCA0, &lit_5568); - -/* 80C0FCA4-80C0FCA8 000228 0004+00 0/0 0/0 0/0 .rodata @5582 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5582 = 149.0f; -COMPILER_STRIP_GATE(0x80C0FCA4, &lit_5582); -#pragma pop - -/* 80C0FCA8-80C0FCAC 00022C 0004+00 0/0 0/0 0/0 .rodata @5583 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5583 = 74.0f; -COMPILER_STRIP_GATE(0x80C0FCA8, &lit_5583); -#pragma pop - -/* 80C0FCAC-80C0FCB0 000230 0004+00 0/0 0/0 0/0 .rodata @5725 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5725 = 75.0f; -COMPILER_STRIP_GATE(0x80C0FCAC, &lit_5725); -#pragma pop - -/* 80C0FCB0-80C0FCB4 000234 0004+00 2/11 0/0 0/0 .rodata @5726 */ -SECTION_RODATA static f32 const lit_5726 = 100.0f; -COMPILER_STRIP_GATE(0x80C0FCB0, &lit_5726); - -/* 80C0FCB4-80C0FCC0 000238 000C+00 0/0 0/0 0/0 .rodata @5756 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5756[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C0FCB4, &lit_5756); -#pragma pop - -/* 80C0FCC0-80C0FCC4 000244 0004+00 1/4 0/0 0/0 .rodata @5966 */ -SECTION_RODATA static u32 const lit_5966 = 0x43360B61; -COMPILER_STRIP_GATE(0x80C0FCC0, &lit_5966); - -/* 80C0FCC4-80C0FCC8 000248 0004+00 0/1 0/0 0/0 .rodata @5967 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5967 = 32.0f; -COMPILER_STRIP_GATE(0x80C0FCC4, &lit_5967); -#pragma pop - /* 80C02AE8-80C0308C 002CC8 05A4+00 1/1 0/0 0/0 .text lookat__11daObj_GrA_cFv */ -void daObj_GrA_c::lookat() { +int daObj_GrA_c::lookat() { // NONMATCHING + J3DModel* model = mpModelMorf->getModel(); + s16 sVar1 = current.angle.y - old.angle.y; + s8 sVar2 = 0; + cXyz* pcVar11 = NULL; + + if (field_0x1500 != 0) { + field_0x14f8.entry(NULL); + switch (mLookMode) { + case 1: + field_0x14f8.entry(daPy_getPlayerActorClass()); + break; + + case 2: + field_0x14f8.entry(field_0x204c.getActor()); + break; + + case 3: + break; + } + } + + field_0x1500 = 0; + + csXyz acStack_60[4]; + csXyz acStack_78[4]; + acStack_60[0].set(cM_deg2s(-daObj_GrA_Param_c::m.field_0x28) - 0x4000, cM_deg2s(daObj_GrA_Param_c::m.field_0x2c), 0); + acStack_60[1].set(-0x4000, 0, 0); + acStack_60[2].set(cM_deg2s(-daObj_GrA_Param_c::m.field_0x38), cM_deg2s(daObj_GrA_Param_c::m.field_0x3c), 0); + acStack_60[3].set(0, 0, 0); + acStack_78[0].set(cM_deg2s(-daObj_GrA_Param_c::m.field_0x24) - 0x4000, cM_deg2s(daObj_GrA_Param_c::m.field_0x30), 0); + acStack_78[1].set(-0x4000, 0, 0); + acStack_78[2].set(cM_deg2s(-daObj_GrA_Param_c::m.field_0x34), cM_deg2s(daObj_GrA_Param_c::m.field_0x40), 0); + acStack_78[3].set(0, 0, 0); + cXyz sp48[4]; + + mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(1)); + mDoMtx_stack_c::multVecZero(&sp48[0]); + + mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(3)); + mDoMtx_stack_c::multVecZero(&sp48[1]); + + mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(4)); + mDoMtx_stack_c::multVecZero(&sp48[2]); + + cXyz sp88(0.0f, 0.0f, 32.0f); + mDoMtx_stack_c::transS(sp48[2]); + mDoMtx_stack_c::YrotM(field_0x91a.y); + mDoMtx_stack_c::multVec(&sp88, &sp48[3]); + + cXyz sp94, spa0; + fopAc_ac_c* actor_p; + switch (mLookMode) { + case 1: + case 2: + actor_p = field_0x14f8.getActor(); + if (actor_p != NULL) { + pcVar11 = &actor_p->eyePos; + } + break; + + case 3: + spa0.set(0.0f, 0.0f, 200.0f); + mDoMtx_stack_c::YrotS(field_0x91a.y); + mDoMtx_stack_c::multVec(&spa0, &spa0); + spa0 += current.pos; + pcVar11 = &spa0; + break; + + case 0: + break; + } + mLookat.setAttnPos(pcVar11); + + for (int i = 0; i < 4; i++) { + mLookat.setMaxJntLmt(acStack_60[i], sVar1); + mLookat.setMinJntLmt(acStack_78[i], sVar1); + mLookat.setJntPos(sp48[i], i); + } + mLookat.calc(this, model->getBaseTRMtx(), sVar1); + + csXyz* local_ac[3] = { &field_0x9bc, &field_0x9c2, &field_0x9c8 }; + int iVar2 = 0; + for (int i = 2, iVar1 = 1; i >= 0; i--) { + if (sVar1 == 0) { + cLib_addCalcAngleS2(&local_ac[i]->x, mLookat.getRot(i).x, 8, 0x800 / iVar1); + cLib_addCalcAngleS2(&local_ac[i]->y, mLookat.getRot(i).y, 8, 0x800 / iVar1); + cLib_addCalcAngleS2(&local_ac[i]->z, mLookat.getRot(i).y, 8, 0x800 / iVar1); + } else { + local_ac[i]->x = mLookat.getRot(i).x; + local_ac[i]->y = mLookat.getRot(i).y; + local_ac[i]->z = mLookat.getRot(i).z; + } + + iVar2 = 0; + if (local_ac[i]->x == 0 && local_ac[i]->y == 0) { + if (local_ac[i]->z != 0) { + iVar2 = 1; + } + } + iVar1++; + } + + if (iVar2 != 0 && field_0x109c == 0) { + setMtx(1); + } + + return 1; } /* 80C0308C-80C031E4 00326C 0158+00 1/1 0/0 0/0 .text hitChk__11daObj_GrA_cFv */ -void daObj_GrA_c::hitChk() { +int daObj_GrA_c::hitChk() { // NONMATCHING + if (field_0xaa4 != 0) { + cLib_calcTimer(&field_0xaa4); + } else { + mCcStts.Move(); + if (mMode == 0 && field_0xf50.ChkTgHit() != 0) { + field_0xab0.entry(field_0xf50.GetAc()); + + if (field_0x1528.field_0xa18 != 0) { + field_0xaa4 = daObj_GrA_Param_c::m.field_0x54; + def_se_set(&mSound, field_0xf50.GetTgHitObj(), 0x2C, NULL); + setProcess(&daObj_GrA_c::rollReturn); + health = 0; + field_0x1528.field_0xa18 = 0; + } else { + def_se_set(&mSound, field_0xf50.GetTgHitObj(), 0x2C, NULL); + if (health != 0) { + setProcess(&daObj_GrA_c::defence); + } + } + + field_0xf50.ClrTgHit(); + } + } + + return 1; } /* 80C031E4-80C0335C 0033C4 0178+00 12/0 0/0 0/0 .text wait__11daObj_GrA_cFPv */ -void daObj_GrA_c::wait(void* param_0) { +int daObj_GrA_c::wait(void* param_1) { // NONMATCHING + if (field_0xa7c == 0 && field_0x844 == false) { + switch (mMode) { + case 0: + setBaseMotion(0, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(0, -1.0f); + setProcess(&daObj_GrA_c::standWait); + break; + + case 1: + setBaseMotion(0, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(0, -1.0f); + setProcess(&daObj_GrA_c::standWaitJump); + setLookMode(1); + break; + + case 2: + setProcess(&daObj_GrA_c::standRoll); + break; + + case 3: + setProcess(&daObj_GrA_c::waitDemo); + } + } + + return 1; } /* 80C0335C-80C035B8 00353C 025C+00 2/0 0/0 0/0 .text talk__11daObj_GrA_cFPv */ -void daObj_GrA_c::talk(void* param_0) { +int daObj_GrA_c::talk(void* param_1) { // NONMATCHING + int iVar1, iVar2; + int rv = 0; + int iVar3; + int iVar4 = field_0x848; + s16 sVar1; + switch (field_0xa7c) { + case 0: + field_0x1fcc = 0; + mMsgFlow.init(this, iVar4, 0, NULL); + setLookMode(1); + field_0xaa0 = 0; + break; + + case 1: + sVar1 = cLib_targetAngleY(¤t.pos, &daPy_getPlayerActorClass()->current.pos); + if (sVar1 != field_0x91a.y) { + if (field_0x1fcc < 2) { + if (turn_step(sVar1, 0, 19, 20)) { + setBaseMotion(0, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(0, -1.0f); + } + + return 0; + } + + turn_step(sVar1, -1, -1, 20); + } + + if (mMsgFlow.doFlow(this, NULL, 0) != 0) { + #ifdef DEBUG + char* cVar1; + int choiceNo = mMsgFlow.getChoiceNo(); + if (choiceNo != 0) { + cVar1 = "はい"; // Yes + } else { + cVar1 = "いいえ"; // No + } + OS_REPORT("二択分岐 %s %d\n", cVar1, choiceNo); + #endif + + if (mMsgFlow.getChoiceNo() != 0) { + setProcess(&daObj_GrA_c::wait); + } else { + setProcess(&daObj_GrA_c::rollReturn); + } + + rv = 1; + } + + iVar3 = field_0xaa0; + if (ctrlMsgAnm(iVar1, iVar2, this) != 0) { + if (iVar2 != -1) { + setBaseMotion(l_eventMotionChangeTable[iVar2], daObj_GrA_Param_c::m.field_0x0c); + } + + if (iVar1 != -1) { + setFaceMotion(l_eventFaceChangeTable[iVar1], -1.0f); + } + } else if (iVar3 != 0) { + setFaceTalkAfter(); + } + break; + + case 2: + dComIfGp_event_reset(); + rv = 1; + field_0x1fcc = 0; + } + + return rv; } -/* 80C035B8-80C036B4 003798 00FC+00 2/2 0/0 0/0 .text ctrlMsgAnm__11daObj_GrA_cFRiRiP10fopAc_ac_c - */ -void daObj_GrA_c::ctrlMsgAnm(int& param_0, int& param_1, fopAc_ac_c* param_2) { - // NONMATCHING +/* 80C035B8-80C036B4 003798 00FC+00 2/2 0/0 0/0 .text ctrlMsgAnm__11daObj_GrA_cFRiRiP10fopAc_ac_c */ +int daObj_GrA_c::ctrlMsgAnm(int& param_1, int& param_2, fopAc_ac_c* param_3) { + param_1 = -1; + param_2 = -1; + + dMsgObject_c* msg_p = (dMsgObject_c*)dMsgObject_c::getActor(); + JUT_ASSERT(3163, 0 != msg_p); + + if (msg_p->mode == 2 || msg_p->mode == 3) { + field_0xa9c = -1; + } else if (msg_p->mode == 6) { + if (msg_p->msg_idx != field_0xa9c) { + param_1 = dComIfGp_getMesgFaceAnimeAttrInfo(); + param_2 = dComIfGp_getMesgAnimeAttrInfo(); + field_0xa9c = msg_p->msg_idx; + } + + if (dMsgObject_isMouthCheck()) { + cLib_offBit(field_0x840, 0x100); + } else { + cLib_onBit(field_0x840, 0x100); + } + + field_0xaa0 = 20; + } else { + if (cLib_checkBit(field_0x840, 0x100) != 0) { + cLib_offBit(field_0x840, 0x100); + } + + field_0xa9c = -1; + } + + cLib_calcTimer(&field_0xaa0); + + return field_0xaa0; } /* 80C036B4-80C03720 003894 006C+00 2/2 0/0 0/0 .text s_sub__FPvPv */ -static void s_sub(void* param_0, void* param_1) { - // NONMATCHING +static void* s_sub(void* i_actor, void* i_data) { + daObj_GrA_c* i_this = (daObj_GrA_c*)i_data; + if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_TAG_GRA && i_this->checkTagGraSub((fopAc_ac_c*)i_actor)) { + return i_actor; + } + return NULL; } -/* 80C03720-80C03764 003900 0044+00 1/1 0/0 0/0 .text checkTagGraSub__11daObj_GrA_cFP10fopAc_ac_c - */ -void daObj_GrA_c::checkTagGraSub(fopAc_ac_c* param_0) { +/* 80C03720-80C03764 003900 0044+00 1/1 0/0 0/0 .text checkTagGraSub__11daObj_GrA_cFP10fopAc_ac_c */ +bool daObj_GrA_c::checkTagGraSub(fopAc_ac_c* a_this) { // NONMATCHING + daTagGra_c* i_this = (daTagGra_c*)a_this; + return (getTagNo() & 0xFFFF) == i_this->getGraNo(); } /* 80C03764-80C03830 003944 00CC+00 1/1 0/0 0/0 .text fallAbyssCheck__11daObj_GrA_cFv */ -void daObj_GrA_c::fallAbyssCheck() { - // NONMATCHING +bool daObj_GrA_c::fallAbyssCheck() { + if (mGroundY == -1000000000.0f && field_0x1528.isPath()) { + field_0x1fc0++; + if (field_0x1fc0 == 30) { + current.pos = field_0x1528.getPntPos(0); + old.pos = current.pos; + field_0x1528.setIdx(0); + field_0x1fc0 = 0; + + return true; + } + } else { + field_0x1fc0 = 0; + } + + return false; } -/* ############################################################################################## */ -/* 80C0FCC8-80C0FCCC 00024C 0004+00 0/7 0/0 0/0 .rodata @6054 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6054 = 0.25f; -COMPILER_STRIP_GATE(0x80C0FCC8, &lit_6054); -#pragma pop - -/* 80C0FCCC-80C0FCD0 000250 0004+00 0/6 0/0 0/0 .rodata @6055 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6055 = 3.5f; -COMPILER_STRIP_GATE(0x80C0FCCC, &lit_6055); -#pragma pop - -/* 80C0FCD0-80C0FCD8 000254 0006+02 0/1 0/0 0/0 .rodata l_prticles_id$6229 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const l_prticles_id[6 + 2 /* padding */] = { - 0x83, - 0xB5, - 0x83, - 0xB6, - 0x83, - 0xB7, - /* padding */ - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C0FCD0, &l_prticles_id); -#pragma pop - -/* 80C0FCD8-80C0FCDC 00025C 0004+00 0/1 0/0 0/0 .rodata @6320 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6320 = 7.0f / 10.0f; -COMPILER_STRIP_GATE(0x80C0FCD8, &lit_6320); -#pragma pop - -/* 80C0FCDC-80C0FCE0 000260 0004+00 1/8 0/0 0/0 .rodata @6321 */ -SECTION_RODATA static f32 const lit_6321 = 2.0f; -COMPILER_STRIP_GATE(0x80C0FCDC, &lit_6321); - /* 80C03830-80C03B14 003A10 02E4+00 1/1 0/0 0/0 .text setPrtcl__11daObj_GrA_cFv */ -void daObj_GrA_c::setPrtcl() { +int daObj_GrA_c::setPrtcl() { // NONMATCHING + static u16 const l_prticles_id[3] = { + 0x83B5, + 0x83B6, + 0x83B7, + }; + + csXyz* pcVar8; + cXyz* pcVar7; + int iVar1; + + for (int i = 0; i < 6; i++) { + if (i == 2 || i == 3 || i == 5) { + iVar1 = 1; + } else { + iVar1 = 0; + } + + // if (field_0xab8[i].field_0x0 == 1) { + // pcVar8 = &field_0xab8[i].field_0x10; + // } + + // if (field_0xab8[i].field_0x0 == 1) { + // pcVar7 = &field_0xab8[i].field_0x4; + // } + + field_0xab8[i].field_0x24[i]->setEffectCenter(&tevStr, &field_0xab8[i].field_0x4, iVar1, 0, &field_0xab8[i].field_0x4, &field_0xab8[i].field_0x10, NULL, fopAcM_GetRoomNo(this), 0.0f, speedF); + + if (field_0xab8[i].field_0x0 != 0) { + JPABaseEmitter* centerEmitter = field_0xab8[i].field_0x24[i]->getCenterEmitter(0, 0); + if (centerEmitter != NULL) { + switch (i) { + case 0: + case 1: + field_0xab8[i].field_0x18.set(0.7f, 0.7f, 0.7f); + centerEmitter->setAwayFromCenterSpeed(0.0f); + centerEmitter->setRandomDirectionSpeed(0.0f); + centerEmitter->setSpread(1.0f); + centerEmitter->setGlobalParticleScale(field_0xab8[i].field_0x18); + break; + + case 5: + field_0xab8[i].field_0x18.set(2.0f, 2.0f, 2.0f); + break; + + case 4: + centerEmitter->setVolumeSize(40); + centerEmitter->setVolumeMiniRadius(1.0f); + centerEmitter->setDirectionalSpeed(0.0f); + break; + } + } + + field_0xab8[i].field_0x0 = 0; + } + } + + if (field_0x201d == 1) { + cXyz sp28(current.pos); + cXyz sp34(1.0f, 1.0f, 1.0f); + + for (int i = 0; i < 3; i++) { + if (i == 0) { + field_0x2020[i] = dComIfGp_particle_set(field_0x2020[i], l_prticles_id[i], &sp28, &tevStr, ¤t.angle, + &sp34, 0xFF, NULL, -1, NULL, NULL, NULL); + } else { + field_0x2020[i] = dComIfGp_particle_setPolyColor(field_0x2020[i], l_prticles_id[i], mAcch.m_gnd, &sp28, + &tevStr, ¤t.angle, &sp34, 0, NULL, -1, NULL); + } + + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(field_0x2020[i]); + if (emitter != NULL) { + emitter->setGlobalTranslation(sp28.x, sp28.y, sp28.z); + } + } + } + + field_0x201d = 0; + + return 1; } /* 80C03B14-80C03B48 003CF4 0034+00 1/0 0/0 0/0 .text base000__11daObj_GrA_cFi */ -void daObj_GrA_c::base000(int param_0) { - // NONMATCHING +int daObj_GrA_c::base000(int param_1) { + if (param_1 != 0) { + setBaseAnm(0, field_0xa94); + } + + return 1; } /* 80C03B48-80C03B7C 003D28 0034+00 1/0 0/0 0/0 .text base001__11daObj_GrA_cFi */ -void daObj_GrA_c::base001(int param_0) { - // NONMATCHING +int daObj_GrA_c::base001(int param_1) { + if (param_1 != 0) { + setBaseAnm(2, field_0xa94); + } + + return 1; } /* 80C03B7C-80C03C1C 003D5C 00A0+00 1/0 0/0 0/0 .text base003__11daObj_GrA_cFi */ -void daObj_GrA_c::base003(int param_0) { - // NONMATCHING +int daObj_GrA_c::base003(int param_1) { + if (param_1 != 0) { + setBaseAnm(4, field_0xa94); + } else if (mpModelMorf->isStop()) { + setBaseMotion(0, daObj_GrA_Param_c::m.field_0x0c); + setBaseAnm(0, field_0xa94); + } + + return 1; } /* 80C03C1C-80C03CBC 003DFC 00A0+00 1/0 0/0 0/0 .text base004__11daObj_GrA_cFi */ -void daObj_GrA_c::base004(int param_0) { - // NONMATCHING +int daObj_GrA_c::base004(int param_1) { + if (param_1 != 0) { + setBaseAnm(5, field_0xa94); + } else if (mpModelMorf->isStop()) { + setBaseMotion(0, daObj_GrA_Param_c::m.field_0x0c); + setBaseAnm(0, field_0xa94); + } + + return 1; } -/* ############################################################################################## */ -/* 80C0FCE0-80C0FCE4 000264 0004+00 1/1 0/0 0/0 .rodata @6330 */ -SECTION_RODATA static f32 const lit_6330 = 10.0f; -COMPILER_STRIP_GATE(0x80C0FCE0, &lit_6330); - -/* 80C0FCE4-80C0FCE8 000268 0004+00 0/2 0/0 0/0 .rodata @6478 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6478 = 4.0f; -COMPILER_STRIP_GATE(0x80C0FCE4, &lit_6478); -#pragma pop - -/* 80C0FCE8-80C0FCEC 00026C 0004+00 0/1 0/0 0/0 .rodata @6479 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_6479 = 0xBEE568FF; -COMPILER_STRIP_GATE(0x80C0FCE8, &lit_6479); -#pragma pop - -/* 80C0FCEC-80C0FCF0 000270 0004+00 0/1 0/0 0/0 .rodata @6480 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_6480 = 0xBF2C65D1; -COMPILER_STRIP_GATE(0x80C0FCEC, &lit_6480); -#pragma pop - -/* 80C0FCF0-80C0FCF4 000274 0004+00 0/1 0/0 0/0 .rodata @6481 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_6481 = 0x3FE597C7; -COMPILER_STRIP_GATE(0x80C0FCF0, &lit_6481); -#pragma pop - -/* 80C0FCF4-80C0FCF8 000278 0004+00 0/1 0/0 0/0 .rodata @6482 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_6482 = 0xBF67A157; -COMPILER_STRIP_GATE(0x80C0FCF4, &lit_6482); -#pragma pop - -/* 80C0FCF8-80C0FCFC 00027C 0004+00 0/5 0/0 0/0 .rodata @6483 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6483 = 300.0f; -COMPILER_STRIP_GATE(0x80C0FCF8, &lit_6483); -#pragma pop - -/* 80C0FCFC-80C0FD00 000280 0004+00 0/3 0/0 0/0 .rodata @6651 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6651 = 50.0f; -COMPILER_STRIP_GATE(0x80C0FCFC, &lit_6651); -#pragma pop - -/* 80C0FD00-80C0FD04 000284 0004+00 0/1 0/0 0/0 .rodata @6722 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6722 = 4.0f / 5.0f; -COMPILER_STRIP_GATE(0x80C0FD00, &lit_6722); -#pragma pop - -/* 80C0FD04-80C0FD08 000288 0004+00 0/2 0/0 0/0 .rodata @6723 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6723 = 45.0f; -COMPILER_STRIP_GATE(0x80C0FD04, &lit_6723); -#pragma pop - -/* 80C0FD08-80C0FD0C 00028C 0004+00 0/1 0/0 0/0 .rodata @6873 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6873 = 95.0f; -COMPILER_STRIP_GATE(0x80C0FD08, &lit_6873); -#pragma pop - -/* 80C0FD0C-80C0FD10 000290 0004+00 1/3 0/0 0/0 .rodata @6874 */ -SECTION_RODATA static f32 const lit_6874 = 12.0f; -COMPILER_STRIP_GATE(0x80C0FD0C, &lit_6874); - -/* 80C0FD10-80C0FD14 000294 0004+00 1/2 0/0 0/0 .rodata @7003 */ -SECTION_RODATA static f32 const lit_7003 = 3.0f; -COMPILER_STRIP_GATE(0x80C0FD10, &lit_7003); - -/* 80C0FD14-80C0FD18 000298 0004+00 0/1 0/0 0/0 .rodata @7004 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7004 = 9.0f; -COMPILER_STRIP_GATE(0x80C0FD14, &lit_7004); -#pragma pop - -/* 80C0FD18-80C0FD1C 00029C 0004+00 0/1 0/0 0/0 .rodata @7005 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7005 = 24.0f; -COMPILER_STRIP_GATE(0x80C0FD18, &lit_7005); -#pragma pop - -/* 80C0FD1C-80C0FD20 0002A0 0004+00 0/5 0/0 0/0 .rodata @7312 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7312 = 150.0f; -COMPILER_STRIP_GATE(0x80C0FD1C, &lit_7312); -#pragma pop - -/* 80C0FD20-80C0FD24 0002A4 0004+00 0/3 0/0 0/0 .rodata @7313 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7313 = 14.0f; -COMPILER_STRIP_GATE(0x80C0FD20, &lit_7313); -#pragma pop - -/* 80C0FD24-80C0FD28 0002A8 0004+00 0/2 0/0 0/0 .rodata @7314 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7314 = 1.0f / 20.0f; -COMPILER_STRIP_GATE(0x80C0FD24, &lit_7314); -#pragma pop - -/* 80C0FD28-80C0FD2C 0002AC 0004+00 0/6 0/0 0/0 .rodata @7315 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7315 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80C0FD28, &lit_7315); -#pragma pop - -/* 80C0FD2C-80C0FD34 0002B0 0008+00 1/1 0/0 0/0 .rodata @7443 */ -SECTION_RODATA static u8 const lit_7443[8] = { - 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C0FD2C, &lit_7443); - -/* 80C0FD34-80C0FD38 0002B8 0004+00 0/2 0/0 0/0 .rodata @7613 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7613 = -30.0f; -COMPILER_STRIP_GATE(0x80C0FD34, &lit_7613); -#pragma pop - -/* 80C0FD38-80C0FD3C 0002BC 0004+00 0/2 0/0 0/0 .rodata @7996 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7996 = 1800.0f; -COMPILER_STRIP_GATE(0x80C0FD38, &lit_7996); -#pragma pop - -/* 80C0FD3C-80C0FD40 0002C0 0004+00 0/2 0/0 0/0 .rodata @7997 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7997 = 2000.0f; -COMPILER_STRIP_GATE(0x80C0FD3C, &lit_7997); -#pragma pop - -/* 80C0FD40-80C0FD44 0002C4 0004+00 0/2 0/0 0/0 .rodata @7998 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7998 = -4500.0f; -COMPILER_STRIP_GATE(0x80C0FD40, &lit_7998); -#pragma pop - -/* 80C0FD44-80C0FD48 0002C8 0004+00 1/4 0/0 0/0 .rodata @7999 */ -SECTION_RODATA static f32 const lit_7999 = 30.0f; -COMPILER_STRIP_GATE(0x80C0FD44, &lit_7999); - -/* 80C0FD48-80C0FD4C 0002CC 0004+00 0/2 0/0 0/0 .rodata @8701 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8701 = 250.0f; -COMPILER_STRIP_GATE(0x80C0FD48, &lit_8701); -#pragma pop - -/* 80C0FD4C-80C0FD50 0002D0 0004+00 0/2 0/0 0/0 .rodata @8702 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8702 = 500.0f; -COMPILER_STRIP_GATE(0x80C0FD4C, &lit_8702); -#pragma pop - -/* 80C0FD50-80C0FD54 0002D4 0004+00 0/1 0/0 0/0 .rodata @8703 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8703 = 55.0f; -COMPILER_STRIP_GATE(0x80C0FD50, &lit_8703); -#pragma pop - -/* 80C0FD54-80C0FD58 0002D8 0004+00 0/1 0/0 0/0 .rodata @8704 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8704 = 210.0f; -COMPILER_STRIP_GATE(0x80C0FD54, &lit_8704); -#pragma pop - -/* 80C0FD58-80C0FD5C 0002DC 0004+00 0/1 0/0 0/0 .rodata @8705 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8705 = -335.0f; -COMPILER_STRIP_GATE(0x80C0FD58, &lit_8705); -#pragma pop - -/* 80C0FD5C-80C0FD60 0002E0 0004+00 0/1 0/0 0/0 .rodata @8706 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8706 = 17.0f; -COMPILER_STRIP_GATE(0x80C0FD5C, &lit_8706); -#pragma pop - -/* 80C0FD60-80C0FD64 0002E4 0004+00 0/1 0/0 0/0 .rodata @8956 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8956 = 3.0f / 20.0f; -COMPILER_STRIP_GATE(0x80C0FD60, &lit_8956); -#pragma pop - -/* 80C0FD64-80C0FD68 0002E8 0004+00 0/3 0/0 0/0 .rodata @8957 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8957 = 60.0f; -COMPILER_STRIP_GATE(0x80C0FD64, &lit_8957); -#pragma pop - -/* 80C0FD68-80C0FD6C 0002EC 0004+00 0/2 0/0 0/0 .rodata @8958 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8958 = -300.0f; -COMPILER_STRIP_GATE(0x80C0FD68, &lit_8958); -#pragma pop - -/* 80C0FD6C-80C0FD70 0002F0 0004+00 0/2 0/0 0/0 .rodata @8959 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8959 = 90.0f; -COMPILER_STRIP_GATE(0x80C0FD6C, &lit_8959); -#pragma pop - -/* 80C0FD70-80C0FD74 0002F4 0004+00 0/1 0/0 0/0 .rodata @9046 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9046 = -200.0f; -COMPILER_STRIP_GATE(0x80C0FD70, &lit_9046); -#pragma pop - -/* 80C0FD74-80C0FD78 0002F8 0004+00 0/3 0/0 0/0 .rodata @9047 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9047 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80C0FD74, &lit_9047); -#pragma pop - -/* 80C0FD78-80C0FD7C 0002FC 0004+00 0/1 0/0 0/0 .rodata @9205 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9205 = 5.0f; -COMPILER_STRIP_GATE(0x80C0FD78, &lit_9205); -#pragma pop - -/* 80C0FD7C-80C0FD80 000300 0004+00 1/2 0/0 0/0 .rodata @9223 */ -SECTION_RODATA static f32 const lit_9223 = -120.0f; -COMPILER_STRIP_GATE(0x80C0FD7C, &lit_9223); - -/* 80C0FD80-80C0FD84 000304 0004+00 1/3 0/0 0/0 .rodata @9280 */ -SECTION_RODATA static f32 const lit_9280 = -110.0f; -COMPILER_STRIP_GATE(0x80C0FD80, &lit_9280); - -/* 80C0FD84-80C0FD8C 000308 0008+00 0/1 0/0 0/0 .rodata @9333 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_9333[8] = { - 0x3F, 0xC9, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9A, -}; -COMPILER_STRIP_GATE(0x80C0FD84, &lit_9333); -#pragma pop - -/* 80C0FD8C-80C0FD90 000310 0004+00 0/2 0/0 0/0 .rodata @9334 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9334 = -7.0f / 10.0f; -COMPILER_STRIP_GATE(0x80C0FD8C, &lit_9334); -#pragma pop - -/* 80C0FD90-80C0FD94 000314 0004+00 0/2 0/0 0/0 .rodata @9385 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9385 = -4.0f; -COMPILER_STRIP_GATE(0x80C0FD90, &lit_9385); -#pragma pop - -/* 80C0FD94-80C0FD98 000318 0004+00 0/1 0/0 0/0 .rodata @9464 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9464 = -1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80C0FD94, &lit_9464); -#pragma pop - -/* 80C0FD98-80C0FD9C 00031C 0004+00 0/1 0/0 0/0 .rodata @10241 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10241 = 700.0f; -COMPILER_STRIP_GATE(0x80C0FD98, &lit_10241); -#pragma pop - -/* 80C0FD9C-80C0FDA0 000320 0004+00 0/1 0/0 0/0 .rodata @10242 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10242 = 3.0f / 50.0f; -COMPILER_STRIP_GATE(0x80C0FD9C, &lit_10242); -#pragma pop - -/* 80C0FDA0-80C0FDA4 000324 0004+00 0/1 0/0 0/0 .rodata @10243 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10243 = 70.0f; -COMPILER_STRIP_GATE(0x80C0FDA0, &lit_10243); -#pragma pop - -/* 80C0FDA4-80C0FDA8 000328 0004+00 0/1 0/0 0/0 .rodata @10244 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10244 = 230.0f; -COMPILER_STRIP_GATE(0x80C0FDA4, &lit_10244); -#pragma pop - -/* 80C0FDA8-80C0FDAC 00032C 0004+00 0/1 0/0 0/0 .rodata @10245 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10245 = 1.0f / 100.0f; -COMPILER_STRIP_GATE(0x80C0FDA8, &lit_10245); -#pragma pop - -/* 80C0FDAC-80C0FDB0 000330 0004+00 0/1 0/0 0/0 .rodata @10246 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10246 = 280.0f; -COMPILER_STRIP_GATE(0x80C0FDAC, &lit_10246); -#pragma pop - -/* 80C0FDB0-80C0FDB4 000334 0004+00 0/1 0/0 0/0 .rodata @10247 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10247 = -50.0f; -COMPILER_STRIP_GATE(0x80C0FDB0, &lit_10247); -#pragma pop - -/* 80C0FDB4-80C0FDB8 000338 0004+00 0/1 0/0 0/0 .rodata @10248 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10248 = -800.0f; -COMPILER_STRIP_GATE(0x80C0FDB4, &lit_10248); -#pragma pop - -/* 80C0FDB8-80C0FDBC 00033C 0004+00 0/1 0/0 0/0 .rodata @10249 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10249 = 35.0f; -COMPILER_STRIP_GATE(0x80C0FDB8, &lit_10249); -#pragma pop - -/* 80C0FDBC-80C0FDC0 000340 0004+00 0/1 0/0 0/0 .rodata @10250 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10250 = 7.0f / 20.0f; -COMPILER_STRIP_GATE(0x80C0FDBC, &lit_10250); -#pragma pop - -/* 80C0FDC0-80C0FDC4 000344 0004+00 0/0 0/0 0/0 .rodata @10251 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10251 = 80.0f; -COMPILER_STRIP_GATE(0x80C0FDC0, &lit_10251); -#pragma pop - -/* 80C0FDC4-80C0FDC8 000348 0004+00 0/0 0/0 0/0 .rodata @10252 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_10252 = 0x4312170A; -COMPILER_STRIP_GATE(0x80C0FDC4, &lit_10252); -#pragma pop - -/* 80C0FDC8-80C0FDCC 00034C 0004+00 0/0 0/0 0/0 .rodata @10253 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_10253 = 0x4321F852; -COMPILER_STRIP_GATE(0x80C0FDC8, &lit_10253); -#pragma pop - -/* 80C0FDCC-80C0FDD0 000350 0004+00 1/1 0/0 0/0 .rodata @10254 */ -SECTION_RODATA static f32 const lit_10254 = 6.0f; -COMPILER_STRIP_GATE(0x80C0FDCC, &lit_10254); - -/* 80C0FDD0-80C0FDD4 000354 0004+00 0/0 0/0 0/0 .rodata @10255 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10255 = 13.0f; -COMPILER_STRIP_GATE(0x80C0FDD0, &lit_10255); -#pragma pop - -/* 80C0FDD4-80C0FDD8 000358 0004+00 0/0 0/0 0/0 .rodata @10256 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10256 = -1482.0f; -COMPILER_STRIP_GATE(0x80C0FDD4, &lit_10256); -#pragma pop - -/* 80C0FDD8-80C0FDDC 00035C 0004+00 0/0 0/0 0/0 .rodata @10257 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10257 = 3650.0f; -COMPILER_STRIP_GATE(0x80C0FDD8, &lit_10257); -#pragma pop - -/* 80C0FDDC-80C0FDE0 000360 0004+00 0/0 0/0 0/0 .rodata @10258 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10258 = -4459.0f; -COMPILER_STRIP_GATE(0x80C0FDDC, &lit_10258); -#pragma pop - -/* 80C0FDE0-80C0FDE4 000364 0004+00 1/2 0/0 0/0 .rodata @10292 */ -SECTION_RODATA static u32 const lit_10292 = 0x3BB40000; -COMPILER_STRIP_GATE(0x80C0FDE0, &lit_10292); - -/* 80C0FDE4-80C0FDE8 000368 0004+00 1/3 0/0 0/0 .rodata @10293 */ -SECTION_RODATA static f32 const lit_10293 = 180.0f; -COMPILER_STRIP_GATE(0x80C0FDE4, &lit_10293); - -/* 80C0FDE8-80C0FDEC 00036C 0004+00 0/1 0/0 0/0 .rodata @10294 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10294 = 8.0f; -COMPILER_STRIP_GATE(0x80C0FDE8, &lit_10294); -#pragma pop - -/* 80C0FDEC-80C0FDF0 000370 0004+00 0/1 0/0 0/0 .rodata @10295 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10295 = 16384.0f; -COMPILER_STRIP_GATE(0x80C0FDEC, &lit_10295); -#pragma pop - -/* 80C0FDF0-80C0FDF4 000374 0004+00 0/1 0/0 0/0 .rodata @10406 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10406 = 110.0f; -COMPILER_STRIP_GATE(0x80C0FDF0, &lit_10406); -#pragma pop - -/* 80C0FDF4-80C0FDF8 000378 0004+00 0/1 0/0 0/0 .rodata @10407 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10407 = 135.0f; -COMPILER_STRIP_GATE(0x80C0FDF4, &lit_10407); -#pragma pop - -/* 80C0FDF8-80C0FDFC 00037C 0004+00 1/1 0/0 0/0 .rodata @10650 */ -SECTION_RODATA static f32 const lit_10650 = 4.5f; -COMPILER_STRIP_GATE(0x80C0FDF8, &lit_10650); - -/* 80C0FDFC-80C0FE00 000380 0004+00 1/1 0/0 0/0 .rodata @10651 */ -SECTION_RODATA static f32 const lit_10651 = 5.5f; -COMPILER_STRIP_GATE(0x80C0FDFC, &lit_10651); - /* 80C03CBC-80C03D54 003E9C 0098+00 1/0 0/0 0/0 .text base005__11daObj_GrA_cFi */ -void daObj_GrA_c::base005(int param_0) { +int daObj_GrA_c::base005(int param_1) { // NONMATCHING + if (param_1 != 0) { + setBaseAnm(6, field_0xa94); + } + + if (mpModelMorf->getFrame() >= 4.5f && mpModelMorf->getFrame() <= 5.5f) { + mSound.startCreatureVoice(Z2SE_GORON_V_TO_STONE, -1); + } + + return 1; } /* 80C03D54-80C03D88 003F34 0034+00 1/0 0/0 0/0 .text base006__11daObj_GrA_cFi */ -void daObj_GrA_c::base006(int param_0) { - // NONMATCHING +int daObj_GrA_c::base006(int param_1) { + if (param_1 != 0) { + setBaseAnm(7, field_0xa94); + } + + return 1; } /* 80C03D88-80C03DF0 003F68 0068+00 1/0 0/0 0/0 .text base007__11daObj_GrA_cFi */ -void daObj_GrA_c::base007(int param_0) { - // NONMATCHING +int daObj_GrA_c::base007(int param_1) { + if (param_1 != 0) { + setBaseAnm(8, field_0xa94); + mSound.startCreatureVoice(Z2SE_GORON_V_RECOVER, -1); + } + + return 1; } /* 80C03DF0-80C03E74 003FD0 0084+00 1/0 0/0 0/0 .text base008__11daObj_GrA_cFi */ -void daObj_GrA_c::base008(int param_0) { +int daObj_GrA_c::base008(int param_1) { // NONMATCHING + if (param_1 != 0) { + setBaseAnm(10, field_0xa94); + } + + if (mpModelMorf->checkFrame(2.0f)) { + mSound.startCreatureVoice(Z2SE_GORON_V_GUARD, -1); + } + + return 1; } /* 80C03E74-80C03F14 004054 00A0+00 1/0 0/0 0/0 .text base009__11daObj_GrA_cFi */ -void daObj_GrA_c::base009(int param_0) { +int daObj_GrA_c::base009(int param_1) { // NONMATCHING + if (param_1 != 0) { + setBaseAnm(1, field_0xa94); + } + + if (mpModelMorf->checkFrame(12.0f) || mpModelMorf->checkFrame(30.0f)) { + mSound.startCreatureVoice(Z2SE_GORON_V_FIGHTING_WAIT, -1); + } + + return 1; } -/* ############################################################################################## */ -/* 80C0FE00-80C0FE04 000384 0004+00 0/1 0/0 0/0 .rodata @10705 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10705 = 18.5f; -COMPILER_STRIP_GATE(0x80C0FE00, &lit_10705); -#pragma pop - -/* 80C0FE04-80C0FE08 000388 0004+00 0/1 0/0 0/0 .rodata @10706 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10706 = 19.5f; -COMPILER_STRIP_GATE(0x80C0FE04, &lit_10706); -#pragma pop - /* 80C03F14-80C03FC0 0040F4 00AC+00 1/0 0/0 0/0 .text base010__11daObj_GrA_cFi */ -void daObj_GrA_c::base010(int param_0) { +int daObj_GrA_c::base010(int param_1) { // NONMATCHING + if (param_1 != 0) { + setBaseAnm(3, field_0xa94); + } + + if (mpModelMorf->getFrame() == 4.0f || ( mpModelMorf->getFrame() >= 18.5 && mpModelMorf->getFrame() <= 19.5)) { + mSound.startCreatureVoice(Z2SE_GORON_V_PUNCH, -1); + } + + return 1; } -/* ############################################################################################## */ -/* 80C0FE08-80C0FE0C 00038C 0004+00 0/1 0/0 0/0 .rodata @10768 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10768 = 127.0f; -COMPILER_STRIP_GATE(0x80C0FE08, &lit_10768); -#pragma pop - /* 80C03FC0-80C04118 0041A0 0158+00 1/0 0/0 0/0 .text base013__11daObj_GrA_cFi */ -void daObj_GrA_c::base013(int param_0) { +int daObj_GrA_c::base013(int param_1) { // NONMATCHING + if (param_1 != 0) { + setBaseAnm(9, field_0xa94); + mpModelMorf->setEndFrame(30.0f); + field_0x2010 = 0; + } + + if (mAcch.ChkGroundHit()) { + if (mpModelMorf->getPlaySpeed() >= 1.0f || mpModelMorf->getPlaySpeed() <= -1.0f) { + field_0x201d = 1; + } + + field_0x201c = 0; + } else if (field_0x201c < 10) { + field_0x201c++; + } + + if (field_0x2010 != field_0x842 && field_0x201c < 10) { + mSound.startCreatureSound(Z2SE_GORON_ROLLING, cLib_minMaxLimit(fabsf(mpModelMorf->getPlaySpeed()) * 20.0f, 1.0f, 127.0f), -1); + field_0x2010 = field_0x842; + } + + return 1; } /* 80C04118-80C04180 0042F8 0068+00 1/0 0/0 0/0 .text base016__11daObj_GrA_cFi */ -void daObj_GrA_c::base016(int param_0) { - // NONMATCHING +int daObj_GrA_c::base016(int param_1) { + if (param_1 != 0) { + setBaseAnm(11, field_0xa94); + mSound.startCreatureVoice(Z2SE_GORON_V_HEAD_BACK, -1); + } + + return 1; } /* 80C04180-80C041E8 004360 0068+00 1/0 0/0 0/0 .text base017__11daObj_GrA_cFi */ -void daObj_GrA_c::base017(int param_0) { - // NONMATCHING +int daObj_GrA_c::base017(int param_1) { + if (param_1 != 0) { + setBaseAnm(12, field_0xa94); + mSound.startCreatureVoice(Z2SE_GORON_V_HEAD_BACK, -1); + } + + return 1; } /* 80C041E8-80C04260 0043C8 0078+00 1/0 0/0 0/0 .text base018__11daObj_GrA_cFi */ -void daObj_GrA_c::base018(int param_0) { +int daObj_GrA_c::base018(int param_1) { // NONMATCHING + if (param_1 != 0) { + setBaseAnm(13, field_0xa94); + mpModelMorf->setFrame(6.0f); + mSound.startCreatureVoice(Z2SE_GORON_V_TOTTER, -1); + } + + return 1; } /* 80C04260-80C042D4 004440 0074+00 1/0 0/0 0/0 .text base019__11daObj_GrA_cFi */ -void daObj_GrA_c::base019(int param_0) { - // NONMATCHING +int daObj_GrA_c::base019(int param_1) { + if (param_1 != 0) { + setBaseAnm(14, field_0xa94); + mpModelMorf->setEndFrame(20.0f); + mSound.startCreatureVoice(Z2SE_GORON_V_HIT_TO_STONE, -1); + } + + return 1; } /* 80C042D4-80C04308 0044B4 0034+00 1/0 0/0 0/0 .text base020__11daObj_GrA_cFi */ -void daObj_GrA_c::base020(int param_0) { - // NONMATCHING +int daObj_GrA_c::base020(int param_1) { + if (param_1 != 0) { + setBaseAnm(15, field_0xa94); + } + + return 1; } /* 80C04308-80C0433C 0044E8 0034+00 1/0 0/0 0/0 .text base021__11daObj_GrA_cFi */ -void daObj_GrA_c::base021(int param_0) { - // NONMATCHING +int daObj_GrA_c::base021(int param_1) { + if (param_1 != 0) { + setBaseAnm(16, field_0xa94); + } + + return 1; } /* 80C0433C-80C04370 00451C 0034+00 1/0 0/0 0/0 .text base022__11daObj_GrA_cFi */ -void daObj_GrA_c::base022(int param_0) { - // NONMATCHING +int daObj_GrA_c::base022(int param_1) { + if (param_1 != 0) { + setBaseAnm(17, field_0xa94); + } + + return 1; } /* 80C04370-80C043A4 004550 0034+00 1/0 0/0 0/0 .text base023__11daObj_GrA_cFi */ -void daObj_GrA_c::base023(int param_0) { - // NONMATCHING +int daObj_GrA_c::base023(int param_1) { + if (param_1 != 0) { + setBaseAnm(18, field_0xa94); + } + + return 1; } /* 80C043A4-80C043D8 004584 0034+00 1/0 0/0 0/0 .text base024__11daObj_GrA_cFi */ -void daObj_GrA_c::base024(int param_0) { - // NONMATCHING +int daObj_GrA_c::base024(int param_1) { + if (param_1 != 0) { + setBaseAnm(19, field_0xa94); + } + + return 1; } /* 80C043D8-80C0440C 0045B8 0034+00 1/0 0/0 0/0 .text base025__11daObj_GrA_cFi */ -void daObj_GrA_c::base025(int param_0) { - // NONMATCHING +int daObj_GrA_c::base025(int param_1) { + if (param_1 != 0) { + setBaseAnm(20, field_0xa94); + } + + return 1; } /* 80C0440C-80C04440 0045EC 0034+00 1/0 0/0 0/0 .text base026__11daObj_GrA_cFi */ -void daObj_GrA_c::base026(int param_0) { - // NONMATCHING +int daObj_GrA_c::base026(int param_1) { + if (param_1 != 0) { + setBaseAnm(21, field_0xa94); + } + + return 1; } /* 80C04440-80C04478 004620 0038+00 1/0 0/0 0/0 .text face000__11daObj_GrA_cFi */ -void daObj_GrA_c::face000(int param_0) { - // NONMATCHING +int daObj_GrA_c::face000(int param_1) { + if (param_1 != 0) { + setFaceAnm(22, true, field_0xa98); + } + + return 1; } /* 80C04478-80C04518 004658 00A0+00 1/0 0/0 0/0 .text face003__11daObj_GrA_cFi */ -void daObj_GrA_c::face003(int param_0) { - // NONMATCHING +int daObj_GrA_c::face003(int param_1) { + if (param_1 != 0) { + setFaceAnm(27, true, field_0xa98); + } else if (mBck.isStop()) { + setFaceMotion(0, -1.0f); + setFaceAnm(22, true, field_0xa98); + } + + return 1; } /* 80C04518-80C045B8 0046F8 00A0+00 1/0 0/0 0/0 .text face004__11daObj_GrA_cFi */ -void daObj_GrA_c::face004(int param_0) { - // NONMATCHING +int daObj_GrA_c::face004(int param_1) { + if (param_1 != 0) { + setFaceAnm(28, true, field_0xa98); + } else if (mBck.isStop()) { + setFaceMotion(0, -1.0f); + setFaceAnm(22, true, field_0xa98); + } + + return 1; } /* 80C045B8-80C045F0 004798 0038+00 1/0 0/0 0/0 .text face005__11daObj_GrA_cFi */ -void daObj_GrA_c::face005(int param_0) { - // NONMATCHING +int daObj_GrA_c::face005(int param_1) { + if (param_1 != 0) { + setFaceAnm(31, true, field_0xa98); + } + + return 1; } /* 80C045F0-80C04628 0047D0 0038+00 1/0 0/0 0/0 .text face006__11daObj_GrA_cFi */ -void daObj_GrA_c::face006(int param_0) { - // NONMATCHING +int daObj_GrA_c::face006(int param_1) { + if (param_1 != 0) { + setFaceAnm(24, true, field_0xa98); + } + + return 1; } /* 80C04628-80C04660 004808 0038+00 1/0 0/0 0/0 .text face007__11daObj_GrA_cFi */ -void daObj_GrA_c::face007(int param_0) { - // NONMATCHING +int daObj_GrA_c::face007(int param_1) { + if (param_1 != 0) { + setFaceAnm(25, true, field_0xa98); + } + + return 1; } /* 80C04660-80C04700 004840 00A0+00 1/0 0/0 0/0 .text face008__11daObj_GrA_cFi */ -void daObj_GrA_c::face008(int param_0) { - // NONMATCHING +int daObj_GrA_c::face008(int param_1) { + if (param_1 != 0) { + setFaceAnm(29, true, field_0xa98); + } else if (mBck.isStop()) { + setFaceMotion(4, -1.0f); + setFaceAnm(24, true, field_0xa98); + } + + return 1; } /* 80C04700-80C047A0 0048E0 00A0+00 1/0 0/0 0/0 .text face009__11daObj_GrA_cFi */ -void daObj_GrA_c::face009(int param_0) { - // NONMATCHING +int daObj_GrA_c::face009(int param_1) { + if (param_1 != 0) { + setFaceAnm(30, true, field_0xa98); + } else if (mBck.isStop()) { + setFaceMotion(5, -1.0f); + setFaceAnm(25, true, field_0xa98); + } + + return 1; } /* 80C047A0-80C047D8 004980 0038+00 1/0 0/0 0/0 .text face010__11daObj_GrA_cFi */ -void daObj_GrA_c::face010(int param_0) { - // NONMATCHING +int daObj_GrA_c::face010(int param_1) { + if (param_1 != 0) { + setFaceAnm(23, true, field_0xa98); + } + + return 1; } /* 80C047D8-80C04810 0049B8 0038+00 1/0 0/0 0/0 .text face011__11daObj_GrA_cFi */ -void daObj_GrA_c::face011(int param_0) { - // NONMATCHING +int daObj_GrA_c::face011(int param_1) { + if (param_1 != 0) { + setFaceAnm(26, true, field_0xa98); + } + + return 1; } /* 80C04810-80C04848 0049F0 0038+00 1/0 0/0 0/0 .text face012__11daObj_GrA_cFi */ -void daObj_GrA_c::face012(int param_0) { - // NONMATCHING +int daObj_GrA_c::face012(int param_1) { + if (param_1 != 0) { + setFaceAnm(32, true, field_0xa98); + } + + return 1; } /* 80C04848-80C04880 004A28 0038+00 1/0 0/0 0/0 .text face016__11daObj_GrA_cFi */ -void daObj_GrA_c::face016(int param_0) { - // NONMATCHING +int daObj_GrA_c::face016(int param_1) { + if (param_1 != 0) { + setFaceAnm(33, true, field_0xa98); + } + + return 1; } /* 80C04880-80C048B8 004A60 0038+00 1/0 0/0 0/0 .text face017__11daObj_GrA_cFi */ -void daObj_GrA_c::face017(int param_0) { - // NONMATCHING +int daObj_GrA_c::face017(int param_1) { + if (param_1 != 0) { + setFaceAnm(34, true, field_0xa98); + } + + return 1; } /* 80C048B8-80C048F8 004A98 0040+00 1/0 0/0 0/0 .text face999__11daObj_GrA_cFi */ -void daObj_GrA_c::face999(int param_0) { - // NONMATCHING +int daObj_GrA_c::face999(int param_1) { + if (param_1 != 0) { + cLib_offBit(field_0x840, 0x22); + setFaceBtp(0); + } + + return 1; } /* 80C048F8-80C04A0C 004AD8 0114+00 2/2 0/0 0/0 .text evtcutTalk__11daObj_GrA_cFii */ -void daObj_GrA_c::evtcutTalk(int param_0, int param_1) { - // NONMATCHING +int daObj_GrA_c::evtcutTalk(int param_1, int param_2) { + s32 sVar1 = field_0x848; + if (param_2 != 0) { + mMsgFlow.init(this, sVar1, 0, NULL); + field_0xaa0 = 0; + } + + if (mMsgFlow.doFlow(this, NULL, 0)) { + return 1; + } + + int iVar1, iVar2; + int iVar3 = field_0xaa0; + if (ctrlMsgAnm(iVar1, iVar2, this) != 0) { + if (iVar2 != -1) { + setBaseMotion(l_eventMotionChangeTable[iVar2], daObj_GrA_Param_c::m.field_0x0c); + } + + if (iVar1 != -1) { + setFaceMotion(l_eventFaceChangeTable[iVar1], -1.0f); + } + } else { + if (iVar3 != 0) { + setFaceTalkAfter(); + } + } + + return 0; } -/* 80C04A0C-80C04A88 004BEC 007C+00 2/2 0/0 0/0 .text setFaceTalkAfter__11daObj_GrA_cFv - */ +/* 80C04A0C-80C04A88 004BEC 007C+00 2/2 0/0 0/0 .text setFaceTalkAfter__11daObj_GrA_cFv */ void daObj_GrA_c::setFaceTalkAfter() { - // NONMATCHING + switch (field_0xa92) { + case 6: + setFaceMotion(4, daObj_GrA_Param_c::m.field_0x0c); + break; + + case 7: + setFaceMotion(5, daObj_GrA_Param_c::m.field_0x0c); + break; + + default: + setFaceMotion(0, daObj_GrA_Param_c::m.field_0x0c); + } } /* 80C04A88-80C04AA8 004C68 0020+00 1/0 0/0 0/0 .text daObj_GrA_Create__FPv */ -static void daObj_GrA_Create(void* param_0) { - // NONMATCHING +static int daObj_GrA_Create(void* param_1) { + daObj_GrA_c* i_this = (daObj_GrA_c*)param_1; + return i_this->create(); } /* 80C04AA8-80C04AC8 004C88 0020+00 1/0 0/0 0/0 .text daObj_GrA_Delete__FPv */ -static void daObj_GrA_Delete(void* param_0) { - // NONMATCHING +static int daObj_GrA_Delete(void* param_1) { + daObj_GrA_c* i_this = (daObj_GrA_c*)param_1; + return i_this->MoveBGDelete(); } /* 80C04AC8-80C04AE8 004CA8 0020+00 1/0 0/0 0/0 .text daObj_GrA_Execute__FPv */ -static void daObj_GrA_Execute(void* param_0) { - // NONMATCHING +static int daObj_GrA_Execute(void* param_1) { + daObj_GrA_c* i_this = (daObj_GrA_c*)param_1; + return i_this->MoveBGExecute(); } /* 80C04AE8-80C04B14 004CC8 002C+00 1/0 0/0 0/0 .text daObj_GrA_Draw__FPv */ -static void daObj_GrA_Draw(void* param_0) { - // NONMATCHING +static int daObj_GrA_Draw(void* param_1) { + daObj_GrA_c* i_this = (daObj_GrA_c*)param_1; + return i_this->Draw(); } /* 80C04B14-80C04B1C 004CF4 0008+00 1/0 0/0 0/0 .text daObj_GrA_IsDelete__FPv */ -static bool daObj_GrA_IsDelete(void* param_0) { - return true; +static int daObj_GrA_IsDelete(void* param_1) { + return 1; } -/* ############################################################################################## */ -/* 80C10888-80C10894 000A20 000C+00 2/2 0/0 0/0 .data __vt__17daObj_GrA_Param_c */ -SECTION_DATA extern void* __vt__17daObj_GrA_Param_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__17daObj_GrA_Param_cFv, -}; - -/* 80C04B1C-80C04B64 004CFC 0048+00 2/1 0/0 0/0 .text __dt__17daObj_GrA_Param_cFv */ -daObj_GrA_Param_c::~daObj_GrA_Param_c() { - // NONMATCHING -} - -/* 80C04B64-80C04BAC 004D44 0048+00 1/0 0/0 0/0 .text __dt__16daBaseNpc_path_cFv */ -// daBaseNpc_path_c::~daBaseNpc_path_c() { -extern "C" void __dt__16daBaseNpc_path_cFv() { - // NONMATCHING -} - -/* 80C04BAC-80C04BB0 004D8C 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - -/* 80C04BB0-80C04BF8 004D90 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80C04BF8-80C04C40 004DD8 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80C04C40-80C04C7C 004E20 003C+00 6/6 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - -/* 80C04C7C-80C04D48 004E5C 00CC+00 2/2 0/0 0/0 .text __dt__8dCcD_SphFv */ -// dCcD_Sph::~dCcD_Sph() { -extern "C" void __dt__8dCcD_SphFv() { - // NONMATCHING -} - -/* 80C04D48-80C04DCC 004F28 0084+00 1/1 0/0 0/0 .text __ct__8dCcD_SphFv */ -// dCcD_Sph::dCcD_Sph() { -extern "C" void __ct__8dCcD_SphFv() { - // NONMATCHING -} - -/* 80C04DCC-80C04E14 004FAC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 80C04E14-80C04E50 004FF4 003C+00 2/2 0/0 0/0 .text - * __dt__Q211daObj_GrA_c21daObj_GrA_prtclMngr_cFv */ -daObj_GrA_c::daObj_GrA_prtclMngr_c::~daObj_GrA_prtclMngr_c() { - // NONMATCHING -} - -/* 80C04E50-80C04E54 005030 0004+00 1/1 0/0 0/0 .text - * __ct__Q211daObj_GrA_c21daObj_GrA_prtclMngr_cFv */ -daObj_GrA_c::daObj_GrA_prtclMngr_c::daObj_GrA_prtclMngr_c() { - /* empty function */ -} - -/* 80C04E54-80C04E9C 005034 0048+00 1/0 0/0 0/0 .text __dt__18daBaseNpc_acMngr_cFv */ -// daBaseNpc_acMngr_c::~daBaseNpc_acMngr_c() { -extern "C" void __dt__18daBaseNpc_acMngr_cFv() { - // NONMATCHING -} - -/* 80C04E9C-80C04EFC 00507C 0060+00 1/0 0/0 0/0 .text __dt__23daBaseNpc_moveBgActor_cFv - */ -// daBaseNpc_moveBgActor_c::~daBaseNpc_moveBgActor_c() { -extern "C" void __dt__23daBaseNpc_moveBgActor_cFv() { - // NONMATCHING -} - -/* 80C04EFC-80C04F04 0050DC 0008+00 1/0 0/0 0/0 .text Draw__23daBaseNpc_moveBgActor_cFv - */ -// bool daBaseNpc_moveBgActor_c::Draw() { -extern "C" bool Draw__23daBaseNpc_moveBgActor_cFv() { - return true; -} - -/* 80C04F04-80C04F0C 0050E4 0008+00 2/0 0/0 0/0 .text Create__23daBaseNpc_moveBgActor_cFv - */ -// bool daBaseNpc_moveBgActor_c::Create() { -extern "C" bool Create__23daBaseNpc_moveBgActor_cFv() { - return true; -} - -/* 80C04F0C-80C04F14 0050EC 0008+00 2/0 0/0 0/0 .text IsDelete__23daBaseNpc_moveBgActor_cFv */ -// bool daBaseNpc_moveBgActor_c::IsDelete() { -extern "C" bool IsDelete__23daBaseNpc_moveBgActor_cFv() { - return true; -} - -/* 80C04F14-80C04F1C 0050F4 0008+00 2/0 0/0 0/0 .text ToFore__23daBaseNpc_moveBgActor_cFv - */ -// bool daBaseNpc_moveBgActor_c::ToFore() { -extern "C" bool ToFore__23daBaseNpc_moveBgActor_cFv() { - return true; -} - -/* 80C04F1C-80C04F24 0050FC 0008+00 2/0 0/0 0/0 .text ToBack__23daBaseNpc_moveBgActor_cFv - */ -// bool daBaseNpc_moveBgActor_c::ToBack() { -extern "C" bool ToBack__23daBaseNpc_moveBgActor_cFv() { - return true; -} - -/* 80C04F24-80C04F2C 005104 0008+00 1/0 0/0 0/0 .text CreateHeap__23daBaseNpc_moveBgActor_cFv */ -// bool daBaseNpc_moveBgActor_c::CreateHeap() { -extern "C" bool CreateHeap__23daBaseNpc_moveBgActor_cFv() { - return true; -} - -/* 80C04F2C-80C04F34 00510C 0008+00 1/0 0/0 0/0 .text Execute__23daBaseNpc_moveBgActor_cFPPA3_A4_f - */ -// bool daBaseNpc_moveBgActor_c::Execute(f32 (**param_0)[3][4]) { -extern "C" bool Execute__23daBaseNpc_moveBgActor_cFPPA3_A4_f() { - return true; -} - -/* 80C04F34-80C04F3C 005114 0008+00 1/0 0/0 0/0 .text Delete__23daBaseNpc_moveBgActor_cFv - */ -// bool daBaseNpc_moveBgActor_c::Delete() { -extern "C" bool Delete__23daBaseNpc_moveBgActor_cFv() { - return true; -} - -/* 80C04F3C-80C04F58 00511C 001C+00 5/5 0/0 0/0 .text cLib_calcTimer__FPi */ -extern "C" void func_80C04F3C(void* _this, int* param_0) { - // NONMATCHING -} - -/* 80C04F58-80C04F74 005138 001C+00 1/1 0/0 0/0 .text cLib_calcTimer__FPs */ -extern "C" void func_80C04F58(void* _this, s16* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C0FE0C-80C0FE10 000390 0004+00 0/1 0/0 0/0 .rodata @11071 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_11071 = 67.0f; -COMPILER_STRIP_GATE(0x80C0FE0C, &lit_11071); -#pragma pop - -/* 80C0FE10-80C0FE14 000394 0004+00 0/1 0/0 0/0 .rodata @11072 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_11072 = 26.0f; -COMPILER_STRIP_GATE(0x80C0FE10, &lit_11072); -#pragma pop - -/* 80C04F74-80C0536C 005154 03F8+00 0/0 1/0 0/0 .text __sinit_d_a_obj_gra2_cpp */ -void __sinit_d_a_obj_gra2_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80C04F74, __sinit_d_a_obj_gra2_cpp); -#pragma pop - /* 80C0536C-80C053C4 00554C 0058+00 4/4 0/0 0/0 .text getSrchCircleR__11daObj_GrA_cFv */ -void daObj_GrA_c::getSrchCircleR() { +f32 daObj_GrA_c::getSrchCircleR() { // NONMATCHING + f32 srchCircleR; + u8 uVar1 = fopAcM_GetParam(this) & 0x7F; + if (uVar1 == 0) { + srchCircleR = daObj_GrA_Param_c::m.field_0x6c * 10.0f; + } else { + srchCircleR = uVar1 * 10; + } + + return srchCircleR; } /* 80C053C4-80C05920 0055A4 055C+00 2/0 0/0 0/0 .text standWait__11daObj_GrA_cFPv */ -void daObj_GrA_c::standWait(void* param_0) { +int daObj_GrA_c::standWait(void* param_1) { // NONMATCHING + cXyz sp5c; + + switch (field_0xa7c) { + case 0: + field_0xf50.OffAtSetBit(); + field_0x1518 = 0; + break; + + case 1: + cLib_calcTimer(&field_0x1fdc); + if (cLib_calcTimer(&field_0x1528.field_0xa18) != 0) { + if (field_0xa90 != 8) { + cXyz sp68(0.0f, 0.0f, 0.0f); + if (field_0xa90 == 11) { + if (mpModelMorf->getFrame() >= 4.0f) { + sp68.z = -0.44806668; + } + } else if (field_0xa90 == 12) { + sp68.z = -0.6734286; + } else if (field_0xa90 == 13) { + sp68.z = 1.7936944; + sp68.x = -0.9048056; + } + + cLib_offsetPos(¤t.pos, ¤t.pos, shape_angle.y, &sp68); + + if (mpModelMorf->isStop()) { + setBaseMotion(8, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(13, -1.0f); + setLookMode(1); + } + } + } else { + sp5c = daPy_getPlayerActorClass()->current.pos; + sp5c.y = daPy_py_c::getAttentionOffsetY(); + f32 fVar1 = (sp5c - current.pos).absXZ(); + cLib_targetAngleY(&attention_info.position, &sp5c); + cLib_targetAngleY(¤t.pos, &eyePos); + + if (field_0x1fdc == 0 && dComIfGp_checkPlayerStatus0(0, 0x100) == 0) { + if ((home.pos - current.pos).absXZ() <= getSrchCircleR() && getSrchCircleR() <= fVar1) { + if (std::abs(sp5c.y - current.pos.y) < 300.0f) { + field_0x150c = 1; + } + + if (field_0x150c != 0) { + setProcess(&daObj_GrA_c::walk); + setBaseMotion(1, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(13, -1.0f); + } else { + cLib_addCalcAngleS2(¤t.angle.y, home.angle.y, 1, daObj_GrA_Param_c::m.field_0x88); + shape_angle.y = current.angle.y; + field_0x91a.y = current.angle.y; + + if (current.angle.y == home.angle.y) { + setBaseMotion(0, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(13, -1.0f); + } + } + } + } + } + } + + return 1; } /* 80C05920-80C05F64 005B00 0644+00 3/0 0/0 0/0 .text walk__11daObj_GrA_cFPv */ -void daObj_GrA_c::walk(void* param_0) { +int daObj_GrA_c::walk(void* param_1) { // NONMATCHING + cXyz sp60; + + switch (field_0xa7c) { + case 0: + setBaseMotion(1, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(13, -1.0f); + break; + + case 1: + daPy_py_c* player = daPy_getPlayerActorClass(); + sp60 = player->current.pos; + f32 fVar1 = (sp60 - current.pos).absXZ(); + s16 sVar1 = cLib_targetAngleY(¤t.pos, &sp60); + cLib_targetAngleY(¤t.pos, &eyePos); + s16 sVar2 = shape_angle.y; + cXyz sp6c(home.pos); + cLib_calcTimer(&field_0x1fdc); + + if (field_0x1fdc == 0 && dComIfGp_checkPlayerStatus0(0, 0x100) == 0) { + if ((sp6c - sp60).absXZ() <= (getSrchCircleR() + 100.0f) && fVar1 <= getSrchCircleR() + 100.0f) { + if (std::abs(sp60.y - current.pos.y) < 300.0f) { + field_0x150c = 1; + } + } + } else { + field_0x150c = 0; + } + + if (field_0x150c == 0) { + setLookMode(1); + sp6c = sp60; + if (fVar1 < daObj_GrA_Param_c::m.field_0x94) { + if ((sVar1 - sVar2) < cM_deg2s(daObj_GrA_Param_c::m.field_0x80)) { + setProcess(&daObj_GrA_c::step); + field_0x1098 = daObj_GrA_Param_c::m.field_0x50; + field_0x108c = current.pos; + return 1; + } + } + } else if ((sp6c - current.pos).absXZ() < 50.0f) { + setLookMode(1); + setProcess(&daObj_GrA_c::wait); + speedF = 0.0f; + return 1; + } + + cLib_addCalc2(&speedF, daObj_GrA_Param_c::m.field_0x90, 0.25f, 3.5f); + sVar1 = cLib_targetAngleY(¤t.pos, &sp6c); + cLib_addCalcAngleS2(¤t.angle.y, sVar1, 1, daObj_GrA_Param_c::m.field_0x88); + shape_angle.y = current.angle.y; + field_0x91a.y = current.angle.y; + break; + } + + return 1; } /* 80C05F64-80C061F4 006144 0290+00 1/0 0/0 0/0 .text defence__11daObj_GrA_cFPv */ -void daObj_GrA_c::defence(void* param_0) { +int daObj_GrA_c::defence(void* param_1) { // NONMATCHING + fopAc_ac_c* aTgHitActor_p; + s16 sVar1; + switch (field_0xa7c) { + case 0: + setBaseMotion(7, 0.0f); + setFaceMotion(10, 0.0f); + calcMotion(); + + aTgHitActor_p = field_0xab0.getActor(); + JUT_ASSERT(309, 0 != aTgHitActor_p); + + sVar1 = cLib_targetAngleY(¤t.pos, &aTgHitActor_p->current.pos); + current.angle.y = sVar1; + sVar1 = current.angle.y; + field_0x91a.y = sVar1; + shape_angle.y = sVar1; + field_0x108c = current.pos; + field_0x1098 = 0.0f; + break; + + case 1: + if (field_0x842 != 0) { + setProcess(&daObj_GrA_c::walk); + } else { + cLib_addCalc2(&field_0x1098, daObj_GrA_Param_c::m.field_0x50, 0.25f, 20.0f); + cXyz sp2c(field_0x108c); + sp2c.x -= field_0x1098 * cM_ssin(current.angle.y); + sp2c.z -= field_0x1098 * cM_scos(current.angle.y); + cLib_addCalcPos2(¤t.pos, sp2c, 0.8f, 45.0f); + + mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(26)); + mDoMtx_stack_c::multVecZero(&field_0xab8[0].field_0x4); + field_0xab8[0].field_0x4.y -= 20.0f; + field_0xab8[0].field_0x10 = current.angle; + field_0xab8[0].field_0x10.y -= 0x8000; + field_0xab8[0].field_0x0 = 1; + + mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(23)); + mDoMtx_stack_c::multVecZero(&field_0xab8[1].field_0x4); + field_0xab8[1].field_0x4.y -= 20.0f; + field_0xab8[1].field_0x10 = current.angle; + field_0xab8[1].field_0x10.y -= 0x8000; + field_0xab8[1].field_0x0 = 1; + field_0xaa4 = daObj_GrA_Param_c::m.field_0x54; + } + break; + + case 2: + field_0xab0.entry(NULL); + } + + return 1; } -/* ############################################################################################## */ -/* 80C0FE14-80C0FE14 000398 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C0FE60 = "F_SP109"; -#pragma pop - /* 80C061F4-80C067D8 0063D4 05E4+00 5/0 0/0 0/0 .text toStone__11daObj_GrA_cFPv */ -void daObj_GrA_c::toStone(void* param_0) { +int daObj_GrA_c::toStone(void* param_1) { // NONMATCHING + s16 sVar1; + f32 fVar1; + + switch (field_0xa7c) { + case 0: + field_0xaac = 1; + ppMoveInit(); + field_0xaa8 = 0; + current.angle.y = shape_angle.y; + field_0x202c = field_0x842; + + if (mMode != 1 && !dComIfGs_isSaveDunSwitch(0x1D)) { + dComIfGs_onSaveDunSwitch(0x1D); + } + break; + + case 1: + switch (field_0xaac) { + case 1: + if (field_0x109c != 0) { + cXyz sp70(daPy_getPlayerActorClass()->current.pos); + fVar1 = (sp70 - current.pos).absXZ(); + if (field_0xaa8 != 0) { + field_0xaa8--; + if (field_0xaa8 <= 0) { + field_0x10a0 = 90; + field_0xaac = 2; + } + } else if ((fVar1 > getSrchCircleR() || std::abs(sp70.y - current.pos.y) > 300.0f) || field_0x10c4 != 0) { + field_0xaa8 = 30; + } + } else if (mpModelMorf->checkFrame(0.0f)) { + setBaseMotion(4, daObj_GrA_Param_c::m.field_0x0c * 0.5f); + setFaceMotion(13, daObj_GrA_Param_c::m.field_0x0c * 0.5f); + calcMotion(); + mpModelMorf->setFrame(mpModelMorf->getEndFrame()); + mpModelMorf->setPlaySpeed(1.0f); + field_0x109c = 1; + } + break; + + case 2: + if (field_0x10a0 != 0) { + cXyz sp7c(0.0f, 0.0f, 20.0f); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(field_0x91a.y); + mDoMtx_stack_c::multVec(&sp7c, &field_0xab8[4].field_0x4); + field_0xab8[4].field_0x0 = 1; + mSound.startCreatureSoundLevel(Z2SE_GORON_TREMBLE, 0, -1); + field_0x10a0--; + } else { + if (field_0x10c4 != 0 && daPy_py_c::checkNowWolf() == 0) { + sVar1 = cM_deg2s(daObj_GrA_Param_c::m.field_0x4c); + + if (strcmp(dComIfGp_getStartStageName(), "F_SP109") == 0) { + fVar1 = 95.0f; + } else { + fVar1 = daObj_GrA_Param_c::m.field_0x48; + } + + daPy_getPlayerActorClass()->setRollJump(fVar1 * cM_scos(sVar1), fVar1 * cM_ssin(sVar1), daPy_getPlayerActorClass()->shape_angle.y); + } else { + field_0xf50.OnAtSetBit(); + field_0x109c = 0; + } + + setBaseMotion(6, 0.0f); + setFaceMotion(3, 0.0f); + mpModelMorf->setPlaySpeed(1.0f); + field_0x10a0 = 0; + field_0xaac = 3; + } + break; + + case 3: + if (field_0x842 != 0) { + field_0xf50.OffAtSetBit(); + setProcess(&daObj_GrA_c::wait); + setLookMode(1); + field_0x1528.field_0xa18 = 0; + field_0xaac = 0; + health = daObj_GrA_Param_c::m.field_0x10; + field_0x109c = 0; + } else if (mpModelMorf->checkFrame(12.0f)) { + field_0xab8[3].field_0x4 = current.pos; + field_0xab8[3].field_0x10 = field_0x91a; + field_0xab8[3].field_0x0 = 1; + } + } + } + + field_0x10c4 = 0; + + return 1; } /* 80C067D8-80C06CDC 0069B8 0504+00 2/0 0/0 0/0 .text step__11daObj_GrA_cFPv */ -void daObj_GrA_c::step(void* param_0) { +int daObj_GrA_c::step(void* param_1) { // NONMATCHING + switch (field_0xa7c) { + case 0: + setBaseMotion(9, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(9, -1.0f); + field_0x1098 = 0.0f; + field_0x1fe0 = 0; + field_0x1fdc = 0; + break; + + case 1: + if (field_0x842 != 0) { + field_0x1528.field_0xa18 = daObj_GrA_Param_c::m.field_0x98; + setProcess(&daObj_GrA_c::wait); + setBaseMotion(8, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(8, -1.0f); + } else if (mpModelMorf->getFrame() >= 25.0f && field_0x1fe0 == 0) { + field_0x1528.field_0xa18 = daObj_GrA_Param_c::m.field_0x98; + setProcess(&daObj_GrA_c::wait); + setBaseMotion(13, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(8, -1.0f); + setLookMode(0); + field_0xce0[0].OffAtSetBit(); + field_0xce0[0].ClrAtHit(); + field_0xce0[1].OffAtSetBit(); + field_0xce0[1].ClrAtHit(); + } else { + cLib_addCalc2(&speedF, daObj_GrA_Param_c::m.field_0x90 / 3.0f, 0.25f, 3.5f); + cLib_addCalcAngleS2(¤t.angle.y, cLib_targetAngleY(¤t.pos, &daPy_getPlayerActorClass()->current.pos), + 4, daObj_GrA_Param_c::m.field_0x88); + shape_angle.y = current.angle.y; + field_0x91a.y = current.angle.y; + + if (mpModelMorf->getFrame() == 9.0f) { + field_0xce0[1].OnAtSetBit(); + } else { + if (mpModelMorf->getFrame() == 15.0f) { + field_0xce0[1].OffAtSetBit(); + } else { + if (mpModelMorf->getFrame() == 20.0f) { + field_0xce0[0].OnAtSetBit(); + } else { + if (mpModelMorf->getFrame() >= 24.0f) { + field_0xce0[0].OffAtSetBit(); + } + } + } + } + + if (field_0xce0[1].ChkAtShieldHit()) { + field_0xce0[1].ClrAtHit(); + field_0xab0.entry(field_0xce0[1].GetAtHitAc()); + field_0x1528.field_0xa18 = daObj_GrA_Param_c::m.field_0x98; + + setProcess(&daObj_GrA_c::wait); + setBaseMotion(11, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(8, -1.0f); + setLookMode(0); + + if (!dComIfGs_isSaveDunSwitch(0x1C)) { + dComIfGs_onSaveDunSwitch(0x1C); + } + } else if (field_0xce0[1].ChkAtHit() != 0) { + field_0x1fe0 = 1; + field_0x1fdc = 60; + if (!dComIfGs_isSaveDunSwitch(0x1C)) { + dComIfGs_onSaveDunSwitch(0x1C); + } + } + + if (field_0xce0[0].ChkAtShieldHit()) { + field_0xab0.entry(field_0xce0[0].GetAtHitAc()); + field_0x1528.field_0xa18 = daObj_GrA_Param_c::m.field_0x98; + + setProcess(&daObj_GrA_c::wait); + setBaseMotion(12, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(8, -1.0f); + setLookMode(0); + + if (!dComIfGs_isSaveDunSwitch(0x1C)) { + dComIfGs_onSaveDunSwitch(0x1C); + } + } else if (field_0xce0[0].ChkAtHit() != 0) { + field_0x1fe0 = 1; + field_0x1fdc = 60; + + if (!dComIfGs_isSaveDunSwitch(0x1C)) { + dComIfGs_onSaveDunSwitch(0x1C); + } + } + } + break; + + case 2: + field_0xce0[0].OffAtSetBit(); + field_0xce0[0].ClrAtHit(); + field_0xce0[1].OffAtSetBit(); + field_0xce0[1].ClrAtHit(); + speedF = 0.0f; + } + + return 1; } /* 80C06CDC-80C0780C 006EBC 0B30+00 3/0 0/0 0/0 .text rollReturn__11daObj_GrA_cFPv */ -void daObj_GrA_c::rollReturn(void* param_0) { +int daObj_GrA_c::rollReturn(void* param_1) { // NONMATCHING + cXyz sp48; + f32 fVar1; + s16 sVar1, sVar2; + + switch (field_0xa7c) { + case 0: + setLookMode(0); + field_0x1fe4 = 0; + field_0x2008 = 0.0f; + speedF = 0.0f; + + if (mMode == 1) { + setBaseMotion(20, daObj_GrA_Param_c::m.field_0x0c * 0.5f); + setFaceMotion(13, daObj_GrA_Param_c::m.field_0x0c * 0.5f); + } else { + if ((home.pos - current.pos).absXZ() < 150.0f) { + setBaseMotion(4, 0.0f); + setFaceMotion(13, 0.0f); + } else { + if (abs(cLib_targetAngleY(¤t.pos, &home.pos) - current.angle.y) < 0x4000) { + current.angle.y = cLib_targetAngleY(¤t.pos, &home.pos); + sVar1 = current.angle.y; + field_0x91a.y = current.angle.y; + shape_angle.y = current.angle.y; + setBaseMotion(4, 0.0f); + setFaceMotion(13, 0.0f); + } else { + current.angle.y = cLib_targetAngleY(¤t.pos, &home.pos); + sVar1 = current.angle.y + 0x8000; + field_0x91a.y = sVar1; + shape_angle.y = sVar1; + setBaseMotion(14, 0.0f); + setFaceMotion(13, 0.0f); + } + } + } + + calcMotion(); + break; + + case 1: + switch (field_0x1fe4) { + case 0: + if (field_0xa90 != 4 && field_0xa90 != 20) { + if (!mpModelMorf->isStop()) { + if (mMode != 1) { + if ((home.pos - current.pos).absXZ() < 150.0f) { + field_0x1fe4 = 1; + setBaseMotion(10, 0.0f); + setFaceMotion(13, 0.0f); + calcMotion(); + + if (abs(current.angle.y - field_0x91a.y) >= 0x4000) { + mpModelMorf->setFrame(mpModelMorf->getEndFrame()); + mpModelMorf->setLoopFrame(mpModelMorf->getEndFrame()); + } + + mpModelMorf->setPlaySpeed(0.0f); + + return 1; + } + + setProcess(&daObj_GrA_c::toStone); + field_0x109c = 1; + } + } else if (mpModelMorf->checkFrame(14.0f)) { + cXyz sp54(0.0f, 0.0f, 20.0f); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(field_0x91a.y); + mDoMtx_stack_c::multVec(&sp54, &field_0xab8[2].field_0x4); + field_0xab8[2].field_0x10 = field_0x91a; + field_0xab8[2].field_0x0 = 1; + } + } else { + cXyz sp60(home.pos); + cLib_addCalc2(&field_0x2008, daObj_GrA_Param_c::m.field_0xa0, 0.05f, 1.0f); + cLib_chasePos(¤t.pos, sp60, field_0x2008); + + fVar1 = field_0x2008 * 0.1f; + if (cM3d_IsZero(field_0x2008)) { + fVar1 = 0.0f; + } + + sVar1 = current.angle.y + 0x8000; + field_0x91a.y = sVar1; + shape_angle.y = sVar1; + + if (mpModelMorf->isStop()) { + if ((home.pos - current.pos).absXZ() < 40.0f) { + setProcess(&daObj_GrA_c::toStone); + setBaseMotion(4, daObj_GrA_Param_c::m.field_0x0c * 0.5f); + setFaceMotion(13, daObj_GrA_Param_c::m.field_0x0c * 0.5f); + calcMotion(); + mpModelMorf->setFrame(mpModelMorf->getEndFrame()); + mpModelMorf->setPlaySpeed(1.0f); + field_0x109c = 1; + } else { + field_0x1fe4 = 1; + setBaseMotion(10, 0.0f); + setFaceMotion(13, 0.0f); + calcMotion(); + + mpModelMorf->setFrame(mpModelMorf->getEndFrame()); + mpModelMorf->setLoopFrame(mpModelMorf->getEndFrame()); + mpModelMorf->setPlaySpeed(-fVar1); + } + } + } + break; + + case 1: + cXyz sp6c(home.pos); + cLib_addCalc2(&field_0x2008, daObj_GrA_Param_c::m.field_0xa0, 0.25f, 3.5f); + cLib_chasePos(¤t.pos, sp6c, field_0x2008); + + fVar1 = field_0x2008 * 0.1f; + if (cM3d_IsZero(field_0x2008)) { + fVar1 = 0.0f; + } + + if (abs(current.angle.y - field_0x91a.y) < 0x4000) { + mpModelMorf->setPlaySpeed(fVar1); + sVar1 = current.angle.y; + field_0x91a.y = sVar1; + shape_angle.y = sVar1; + } else { + mpModelMorf->setPlaySpeed(-fVar1); + sVar2 = current.angle.y + 0x8000; + field_0x91a.y = sVar2; + shape_angle.y = sVar2; + } + + fVar1 = (home.pos - current.pos).absXZ(); + if (fVar1 < 40.0f) { + setProcess(&daObj_GrA_c::toStone); + } + break; + } + + case 2: + field_0x2008 = 0.0f; + field_0x1fe4 = -1; + } + + return 1; } /* 80C0780C-80C078A8 0079EC 009C+00 1/1 0/0 0/0 .text soldierDemoSkip__11daObj_GrA_cFv */ -void daObj_GrA_c::soldierDemoSkip() { +int daObj_GrA_c::soldierDemoSkip() { // NONMATCHING + setLookMode(1); + setBaseMotion(0, 0.0f); + setFaceMotion(13, 0.0f); + field_0x109c = 0; + setProcess(&daObj_GrA_c::wait); + mDemoCamMode = 0; + field_0x209c = 0; + return 1; } /* 80C078A8-80C07C40 007A88 0398+00 1/0 0/0 0/0 .text soldierDemo__11daObj_GrA_cFPv */ -void daObj_GrA_c::soldierDemo(void* param_0) { +int daObj_GrA_c::soldierDemo(void* param_1) { // NONMATCHING + cXyz sp1c; + + switch (field_0xa7c) { + case 0: + setBaseMotion(0, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(13, -1.0f); + setLookMode(2); + mDemoCamMode = 0; + field_0x209c = 1; + break; + + case 1: + switch (mDemoCamMode) { + case 1: + if (field_0xa90 == 17) { + setBaseMotion(20, daObj_GrA_Param_c::m.field_0x0c * 0.5f); + setFaceMotion(13, daObj_GrA_Param_c::m.field_0x0c * 0.5f); + setLookMode(0); + } else if (mpModelMorf->isStop()) { + field_0x109c = 1; + } else if (mpModelMorf->checkFrame(14.0f)) { + cXyz sp28(0.0f, 0.0f, 20.0f); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(field_0x91a.y); + mDoMtx_stack_c::multVec(&sp28, &field_0xab8[2].field_0x4); + field_0xab8[2].field_0x10 = field_0x91a; + field_0xab8[2].field_0x0 = 1; + } + break; + + case 3: + if (field_0x10a0 != 0) { + cXyz sp34(0.0f, 0.0f, 20.0f); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(field_0x91a.y); + mDoMtx_stack_c::multVec(&sp34, &field_0xab8[4].field_0x4); + field_0xab8[4].field_0x10 = field_0x91a; + field_0xab8[4].field_0x0 = 1; + + mSound.startCreatureSoundLevel(Z2SE_GORON_TREMBLE, 0, -1); + + field_0x10a0--; + if (field_0x10a0 == 0) { + setBaseMotion(6, 0.0f); + setFaceMotion(3, 0.0f); + mpModelMorf->setPlaySpeed(1.0f); + field_0x10a0 = 0; + field_0x109c = 0; + mDemoCamMode = 4; + } + } else { + field_0x10a0 = 90; + } + break; + + case 4: + if (mpModelMorf->isStop() && field_0xa90 != 0) { + setLookMode(1); + setBaseMotion(0, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(13, -1.0f); + } else if (mpModelMorf->checkFrame(12.0f)) { + field_0xab8[3].field_0x4 = current.pos; + field_0xab8[3].field_0x10 = field_0x91a; + field_0xab8[3].field_0x0 = 1; + } + } + break; + + case 2: + mDemoCamMode = 0; + field_0x209c = 0; + } + + return 1; } /* 80C07C40-80C07C98 007E20 0058+00 1/1 0/0 0/0 .text getSrchLinkR__11daObj_GrA_cFv */ -void daObj_GrA_c::getSrchLinkR() { +f32 daObj_GrA_c::getSrchLinkR() { // NONMATCHING + int iVar1 = fopAcM_GetParam(this) & 0x7F; + if (iVar1 == 0) { + return daObj_GrA_Param_c::m.field_0x70 * 100.0f; + } + + return iVar1 * 100; } /* 80C07C98-80C07CF0 007E78 0058+00 1/1 0/0 0/0 .text getSrchGraR__11daObj_GrA_cFv */ -void daObj_GrA_c::getSrchGraR() { +f32 daObj_GrA_c::getSrchGraR() { // NONMATCHING + if (field_0x200c == 0) { + return daObj_GrA_Param_c::m.field_0x74 * 100.0f; + } + + return field_0x200c * 100; } /* 80C07CF0-80C07D38 007ED0 0048+00 3/3 0/0 0/0 .text getSpeed__11daObj_GrA_cFv */ -void daObj_GrA_c::getSpeed() { +f32 daObj_GrA_c::getSpeed() { // NONMATCHING + u32 uVar1 = fopAcM_GetParam(this) >> 14 & 63; + if (uVar1 == 63) { + return daObj_GrA_Param_c::m.field_0x84; + } + + return uVar1; } /* 80C07D38-80C083F0 007F18 06B8+00 1/0 0/0 0/0 .text standRoll__11daObj_GrA_cFPv */ -void daObj_GrA_c::standRoll(void* param_0) { +int daObj_GrA_c::standRoll(void* param_1) { // NONMATCHING + cXyz sp38; + daPy_py_c* player = daPy_getPlayerActorClass(); + + switch (field_0xa7c) { + case 0: + setBaseMotion(0, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(13, -1.0f); + setLookMode(1); + field_0x2014 = 0; + break; + + case 1: + if (field_0x2031 == 0 && player != NULL) { + if (player->current.pos.y > current.pos.y) { + fopAcM_delete(this); + } else { + field_0x2031 = 1; + } + } + + if (getTagNo() != 0) { + if (field_0x2032 == 0) { + daTagGra_c* graTag_p = (daTagGra_c*)fpcM_Search(s_sub, this); + if (graTag_p != NULL) { + mGraPos = graTag_p->getGraPos(); + mGraExtent = graTag_p->getGraExtent(); + mGraHeight = graTag_p->getGraHeight(); + fopAcM_delete(graTag_p); + mGraMode = graTag_p->getMode(); + field_0x2032 = 1; + } + } else if (mGraMode == 1) { + sp38 = player->current.pos - current.pos; + sp38.y *= 2.0f; + if (sp38.abs() < getSrchLinkR() && player->checkPlayerFly() == 0 && !player->checkClimbMove() && + dComIfGp_checkPlayerStatus0(0, 8) == 0) { + setProcess(&daObj_GrA_c::rollDemo); + dComIfGoat_SetThrow(this); + } + } else { + sp38 = player->current.pos - mGraPos; + if (sp38.absXZ() < mGraExtent && player->checkPlayerFly() == 0 && sp38.y > -30.0f && sp38.y < mGraHeight && + !player->checkClimbMove() && dComIfGp_checkPlayerStatus0(0, 8) == 0) { + setProcess(&daObj_GrA_c::rollDemo); + dComIfGoat_SetThrow(this); + } + } + } else { + sp38 = player->current.pos - current.pos; + sp38.y = sp38.y * 2.0f; + if (sp38.abs() < getSrchLinkR() && player->checkPlayerFly() == 0 && !player->checkClimbMove() && + dComIfGp_checkPlayerStatus0(0, 8) == 0) { + setProcess(&daObj_GrA_c::rollDemo); + dComIfGoat_SetThrow(this); + } + } + break; + + case 2: + break; + } + + return 1; } /* 80C083F0-80C08804 0085D0 0414+00 3/0 0/0 0/0 .text rollDemo__11daObj_GrA_cFPv */ -void daObj_GrA_c::rollDemo(void* param_0) { +int daObj_GrA_c::rollDemo(void* param_1) { // NONMATCHING + switch (field_0xa7c) { + case 0: + if (isFirstGra()) { + mDemoCamMode = 1; + } + + field_0x209c = 1; + break; + + case 1: + if (isFirstGra()) { + switch (field_0x2000) { + case -1: + cLib_addCalcAngleS2(¤t.angle.y, cLib_targetAngleY(¤t.pos, &daPy_getPlayerActorClass()->current.pos), + 4, daObj_GrA_Param_c::m.field_0x88); + shape_angle.y = current.angle.y; + field_0x91a.y = current.angle.y; + + if (mDemoCamMode >= 5) { + field_0x848 = 4; + evtcutTalk(-1, 1); + field_0x2000 = 0; + } + break; + + case 0: + if (evtcutTalk(-1, 0) != 0) { + setBaseMotion(20, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(13, -1.0f); + setLookMode(0); + field_0x2000 = 1; + } + + field_0x2056 = 0; + break; + + case 1: + if (mpModelMorf->checkFrame(14.0f)) { + cXyz sp30(0.0f, 0.0f, 20.0f); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(field_0x91a.y); + mDoMtx_stack_c::multVec(&sp30, &field_0xab8[2].field_0x4); + field_0xab8[2].field_0x10 = field_0x91a; + field_0xab8[2].field_0x0 = 1; + + setLookMode(0); + setBaseMotion(10, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(13, -1.0f); + calcMotion(); + + mpModelMorf->setEndFrame(29.0f); + mpModelMorf->setPlaySpeed(0.0f); + + field_0x2000 = 2; + } + break; + + case 2: + f32 playSpeed = mpModelMorf->getPlaySpeed(); + if (playSpeed < 1.0f) { + cLib_addCalc2(&playSpeed, 1.0f, 0.25f, 3.5f); + mpModelMorf->setPlaySpeed(playSpeed); + } + + if (mDemoCamMode == 0) { + setProcess(&daObj_GrA_c::rollAttack); + } + } + } else if (field_0xa90 == 4) { + setBaseMotion(4, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(13, -1.0f); + setLookMode(1); + } else if (mpModelMorf->checkFrame(14.0f)) { + cXyz sp3c(0.0f, 0.0f, 20.0f); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(field_0x91a.y); + mDoMtx_stack_c::multVec(&sp3c, &field_0xab8[2].field_0x4); + field_0xab8[2].field_0x10 = field_0x91a; + field_0xab8[2].field_0x0 = 1; + + setLookMode(0); + setBaseMotion(10, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(13, -1.0f); + calcMotion(); + + mpModelMorf->setEndFrame(29.0f); + mpModelMorf->setPlaySpeed(0.0f); + + setProcess(&daObj_GrA_c::rollAttack); + } + break; + + case 2: + field_0x2000 = -1; + field_0x209c = 0; + } + + demo_camera(); + return 1; } /* 80C08804-80C09298 0089E4 0A94+00 4/0 0/0 0/0 .text rollAttack__11daObj_GrA_cFPv */ -void daObj_GrA_c::rollAttack(void* param_0) { +int daObj_GrA_c::rollAttack(void* param_1) { // NONMATCHING + daPy_py_c* player = daPy_getPlayerActorClass(); + cXyz sp3c; + s16 sVar1; + f32 fVar1, fVar2; + BOOL bVar1; + cXyz sp48; + + switch (field_0xa7c) { + case 0: + field_0x1fe9 = 0; + setLookMode(0); + field_0x2005 = 0; + field_0x209c = 1; + break; + + case 1: + if (fallAbyssCheck()) { + break; + } + + sp48 = player->current.pos; + fVar1 = (sp48 - current.pos).abs(); + + if (fVar1 <= 1800.0f) { + if (field_0x2005 != 2) { + dComIfGp_getVibration().StartQuake(2, 15, cXyz(0.0f, 1.0f, 0.0f)); + field_0x2005 = 2; + } + } else if (fVar1 <= 2000.0f) { + if (field_0x2005 != 1) { + dComIfGp_getVibration().StartQuake(1, 15, cXyz(0.0f, 1.0f, 0.0f)); + field_0x2005 = 1; + } + } else { + if (dComIfGp_getVibration().CheckQuake()) { + dComIfGp_getVibration().StopQuake(31); + } + + field_0x2005 = 0; + } + + rollLanding(); + + bVar1 = false; + if (field_0x201c < 10 && field_0x1fe9 == 0 && fVar1 < getSrchGraR()) { + cXyz sp54(current.pos); + sp54.y += 100.0f; + field_0x1f4c.Set(&sp54, &player->eyePos, this); + field_0x1f4c.SetActorPid(parentActorID); + + s16 sVar1 = cLib_targetAngleX(&sp54, &player->eyePos); + if (!isFirstGra()) { + if (!dComIfG_Bgsp().LineCross(&field_0x1f4c)) { + if (!player->checkClimbMove() && dComIfGp_checkPlayerStatus0(0, 8) == 0 && sVar1 > -0x2000 && sVar1 < 0x2000) { + field_0x150c = 1; + bVar1 = true; + + if ((field_0x2014 == 0 && isFirstGra()) || player->checkEquipHeavyBoots() != 0) { + player->setGoronSideMove(this); + field_0x2014 = 1; + } + } + } + } + } + + if (isFirstGra()) { + if (player->current.pos.y < -4500.0f) { + setProcess(&daObj_GrA_c::rollAttacked); + return 1; + } + } else { + cXyz sp60(current.pos); + sp60.y += 100.0f; + field_0x1f4c.Set(&sp60, &player->eyePos, this); + field_0x1f4c.SetActorPid(parentActorID); + + if (player->checkPlayerFly() == 0 && (player->current.pos.y - current.pos.y) > 50.0f) { + player->offGoronSideMove(); + field_0x2014 = 1; + field_0x1fe9 = 1; + } + } + + if (!bVar1) { + field_0x150c = 0; + if (field_0x2014 == 0 && (player->current.pos.y - current.pos.y) > 0.0f) { + field_0x1fe9 = 1; + player->offGoronSideMove(); + field_0x2014 = 1; + } + } + + if (field_0x150c != 0 && field_0x1fe9 == 0) { + setCarryStatus(); + if (checkThrow()) { + return 1; + } + + if (field_0x1fe9 == 0) { + cXyz sp6c(sp48); + cLib_chaseF(&speedF, getSpeed(), daObj_GrA_Param_c::m.field_0xa8); + + if (field_0x201c < 10) { + cLib_addCalcAngleS2(¤t.angle.y, cLib_targetAngleY(¤t.pos, &sp6c), + 1, daObj_GrA_Param_c::m.field_0x88); + shape_angle.y = current.angle.y; + field_0x91a.y = current.angle.y; + } + } + + BOOL bVar2 = FALSE; + if (field_0x1528.isPath()) { + while (!bVar2) { + if (field_0x1528.chkPnt(current.pos) == 0) break; + + if (field_0x1528.setNextPnt()) { + bVar2 = TRUE; + field_0x1fe9 = 1; + field_0x2014 = 1; + } + } + } + } else { + if (field_0x1fe9 == 1 && !dComIfGp_event_runCheck() && mDemoCamMode == 0) { + if (dComIfGoat_GetThrow() == this) { + dComIfGoat_SetThrow(NULL); + } + + if (field_0x2030 == 1 && field_0x2005 == 0 && fopAcM_otherBgCheck(this, dComIfGp_getPlayer(0))) { + fopAcM_delete(this); + if (dComIfGp_getVibration().CheckQuake()) { + dComIfGp_getVibration().StopQuake(31); + } + + return 1; + } + } + + bVar1 = false; + if (field_0x1528.isPath()) { + while (!bVar1) { + if (field_0x1528.chkPnt(current.pos) == 0) break; + + if (field_0x1528.setNextPnt()) { + bVar1 = true; + } + } + } else { + bVar1 = true; + } + + if (!bVar1) { + cXyz sp78(field_0x1528.getPntPos(field_0x1528.getIdx())); + sVar1 = current.angle.y; + cLib_chaseF(&speedF, getSpeed(), daObj_GrA_Param_c::m.field_0xa8); + + if (field_0x201c < 10) { + s16 sVar2 = cLib_targetAngleY(¤t.pos, &sp78); + cLib_addCalcAngleS2(¤t.angle.y, sVar2, 8, field_0x1528.field_0xa14); + field_0x1528.field_0xa14 = abs(current.angle.y - sVar2); + + cLib_addCalcAngleS2(&field_0x1528.field_0xa14, daObj_GrA_Param_c::m.field_0x88, 8, 0x40); + shape_angle.y = current.angle.y; + field_0x91a.y = current.angle.y; + } + } else if (cM3d_IsZero(speedF)) { + speedF = 0.0f; + if (mAcch.ChkGroundHit()) { + if (modeChangeCheck() == 0) { + cLib_addCalc2(&speedF, 0.0f, 0.25f, 3.5f); + if (mpModelMorf->isLoop()) { + speedF = 0.0f; + } else if (speedF < 1.0f) { + speedF = 1.0f; + } + + if (mpModelMorf->getFrame() < 2.0f) { + speedF = 0.0f; + if (mAcch.ChkGroundHit()) { + if (modeChangeCheck() == 0) { + fVar2 = speedF * 0.1f; + if (fVar2 < 0.5f) { + mpModelMorf->setPlaySpeed(0.5f); + } else { + mpModelMorf->setPlaySpeed(fVar2); + } + + if (field_0x1fe9 == 0 && field_0xf50.ChkCoHit() != 0) { + if (fopAcM_GetName(dCc_GetAc(field_0xf50.GetCoHitObj()->GetAc())) == PROC_ALINK) { + field_0x1fe9 = 1; + player->offGoronSideMove(); + player->offGoronUpStopCancel(); + + if (isFirstGra()) { + sVar1 = home.angle.y; + if (player->checkEquipHeavyBoots() != 0) { + player->setThrowDamage(sVar1, 30.0f, 40.0f, 1, 0, 0); + } else { + player->setThrowDamage(sVar1, daObj_GrA_Param_c::m.field_0xb8, daObj_GrA_Param_c::m.field_0xbc, 2, 0, 0); + } + + setProcess(&daObj_GrA_c::rollAttacked); + } + } + } + } + } + } + } + } + } + } + break; + + case 2: + dComIfGp_getVibration().StopQuake(31); + field_0x209c = 1; + break; + } + + return 1; } /* 80C09298-80C09918 009478 0680+00 4/0 0/0 0/0 .text rollAttacked__11daObj_GrA_cFPv */ -void daObj_GrA_c::rollAttacked(void* param_0) { +int daObj_GrA_c::rollAttacked(void* param_1) { // NONMATCHING + BOOL bVar1; + cXyz sp3c; + s16 sVar1; + daPy_py_c* player = daPy_getPlayerActorClass(); + attention_info.flags = 0; + + switch (field_0xa7c) { + case 0: + speedF = 0.0f; + field_0x2018 = -1; + mDemoCamMode = 1; + field_0x209c = 1; + break; + + case 1: + switch (field_0x2018) { + case -1: + if (mpModelMorf->checkFrame(0.0f)) { + mpModelMorf->setPlaySpeed(0.0f); + field_0x2018 = 0; + } + // fallthrough + case 0: + if (player->checkPlayerFly() == 0) { + if (player->current.pos.y < -4500.0f) { + field_0x2018 = 1; + current.pos = mGraPos; + old.pos = current.pos; + current.angle.y = cLib_targetAngleY(¤t.pos, &player->current.pos); + shape_angle.y = current.angle.y; + field_0x91a.y = current.angle.y; + field_0x1fec = 0; + setBaseMotion(0, 0.0f); + setFaceMotion(13, 0.0f); + setLookMode(1); + mpModelMorf->setPlaySpeed(1.0f); + player->offGoronSideMove(); + + if (dComIfGoat_GetThrow() == this) { + dComIfGoat_SetThrow(NULL); + } + } else { + field_0x1fec = 60; + field_0x2018 = 5; + field_0x1528.reverseDir(); + current.angle.y += 0x8000; + mpModelMorf->setLoopFrame(mpModelMorf->getEndFrame()); + player->setGoronSideMove(this); + field_0x2014 = 1; + mDemoCamMode = 7; + } + } + + field_0x2056 = 0; + break; + + case 1: + if (cLib_calcTimer(&field_0x1fec) == 0) { + if (dComIfGs_getLife() == 0) { + setProcess(&daObj_GrA_c::wait); + speedF = 0.0f; + current.pos = home.pos; + old.pos = home.pos; + current.angle.y = home.angle.y; + shape_angle.y = current.angle.y; + field_0x91a.y = current.angle.y; + mDemoCamMode = 7; + } else { + field_0x2018 = 2; + } + } + break; + + case 2: + if (mDemoCamMode >= 5) { + field_0x848 = 5; + evtcutTalk(-1, 1); + field_0x2018 = 3; + } + break; + + case 3: + if (evtcutTalk(-1, 0) != 0) { + setLookMode(0); + field_0x2018 = 4; + setBaseMotion(1, 0.0f); + setFaceMotion(13, 0.0f); + } + + field_0x2056 = 0; + break; + + case 4: + if (mDemoCamMode != 0) { + cLib_addCalc2(&speedF, daObj_GrA_Param_c::m.field_0x90 * 0.5f, 0.25f, 3.5f); + cLib_addCalcAngleS2(¤t.angle.y, cLib_targetAngleY(¤t.pos, &home.pos), + 1, daObj_GrA_Param_c::m.field_0x88); + shape_angle.y = current.angle.y; + field_0x91a.y = current.angle.y; + } else { + setProcess(&daObj_GrA_c::wait); + speedF = 0.0f; + current.pos = home.pos; + old.pos = home.pos; + current.angle.y = home.angle.y; + shape_angle.y = current.angle.y; + field_0x91a.y = current.angle.y; + } + break; + + case 5: + if (cLib_calcTimer(&field_0x1fec) == 0) { + current.angle.y += 0x8000; + shape_angle.y = current.angle.y; + field_0x91a.y = current.angle.y; + setProcess(&daObj_GrA_c::rollAttack); + field_0x1528.reverseDir(); + mpModelMorf->setLoopFrame(mpModelMorf->getStartFrame()); + } else { + bVar1 = false; + if (field_0x1528.isPath()) { + while (!bVar1) { + if (field_0x1528.chkPnt(current.pos) == 0) break; + + if (field_0x1528.setNextPnt()) { + bVar1 = true; + } + } + } else { + bVar1 = true; + } + + if (!bVar1) { + sp3c = field_0x1528.getPntPos(field_0x1528.getIdx()); + sVar1 = current.angle.y; + cLib_chaseF(&speedF, getSpeed(), daObj_GrA_Param_c::m.field_0xa8); + cLib_addCalcAngleS2(¤t.angle.y, cLib_targetAngleY(¤t.pos, &sp3c), + 8, field_0x1528.field_0xa14); + field_0x1528.field_0xa14 = abs(current.angle.y - sVar1); + cLib_addCalcAngleS2(&field_0x1528.field_0xa14, daObj_GrA_Param_c::m.field_0x88, + 8, 0x40); + shape_angle.y = current.angle.y + 0x8000; + field_0x91a.y = current.angle.y + 0x8000; + } else { + cLib_addCalc2(&speedF, 0.0f, 0.25f, 3.5f); + } + + mpModelMorf->setPlaySpeed(-(speedF * 0.1f)); + } + } + break; + + case 2: + field_0x2014 = 0; + field_0x209c = 0; + } + + rollAttackedDemo(); + return 1; } /* 80C09918-80C09F08 009AF8 05F0+00 2/0 0/0 0/0 .text rollEscape__11daObj_GrA_cFPv */ -void daObj_GrA_c::rollEscape(void* param_0) { +int daObj_GrA_c::rollEscape(void* param_1) { // NONMATCHING + cXyz sp50; + f32 fVar1; + BOOL bVar1; + cXyz sp68; + s16 sVar1; + daPy_py_c* player; + + switch (field_0xa7c) { + case 0: + field_0x2005 = 0; + mpModelMorf->setLoopFrame(mpModelMorf->getEndFrame()); + field_0x209c = 1; + break; + + case 1: + player = daPy_getPlayerActorClass(); + fVar1 = (player->current.pos - current.pos).absXZ(); + if (fVar1 <= 1800.0f) { + if (field_0x2005 != 2) { + dComIfGp_getVibration().StartQuake(2, 15, cXyz(0.0f, 1.0f, 0.0f)); + field_0x2005 = 2; + } + } else if (fVar1 <= 2000.0f) { + if (field_0x2005 != 1) { + dComIfGp_getVibration().StartQuake(1, 15, cXyz(0.0f, 1.0f, 0.0f)); + field_0x2005 = 1; + } + } else { + if (dComIfGp_getVibration().CheckQuake()) { + dComIfGp_getVibration().StopQuake(31); + } + + field_0x2005 = 0; + } + + rollLanding(); + if (dComIfGp_event_runCheck()) { + if (dComIfGp_getEvent().isOrderOK()) { + if (dComIfGoat_GetThrow() == this) { + dComIfGoat_SetThrow(0); + if (isFirstGra()) { + mDemoCamMode = 3; + graThrowDemo(); + daNpcF_onEvtBit(0x52); + } + } + + if (field_0x2030 == 1 && field_0x2005 == 0 && + (fopAcM_otherBgCheck(this, dComIfGp_getPlayer(0)) || fopAcM_CheckCondition(this, 4) != 0)) { + if (dComIfGp_getVibration().CheckQuake()) { + dComIfGp_getVibration().StopQuake(31); + } + + fopAcM_delete(this); + return 1; + } + } + } + + bVar1 = FALSE; + if (field_0x1528.isPath()) { + while (!bVar1) { + if (field_0x1528.chkPnt(current.pos) == 0) break; + + if (field_0x1528.setNextPnt()) { + bVar1 = TRUE; + } + } + } else { + bVar1 = TRUE; + } + + int iVar2; + if (!bVar1) { + sp68 = field_0x1528.getPntPos(field_0x1528.getIdx()); + sVar1 = current.angle.y; + cLib_chaseF(&speedF, getSpeed(), daObj_GrA_Param_c::m.field_0xa8); + cLib_addCalcAngleS2(¤t.angle.y, cLib_targetAngleY(¤t.pos, &sp68), + 8, field_0x1528.field_0xa14); + field_0x1528.field_0xa14 = abs(current.angle.y - sVar1); + cLib_addCalcAngleS2(&field_0x1528.field_0xa14, daObj_GrA_Param_c::m.field_0x88, 8, 0x40); + cLib_addCalcAngleS2(&shape_angle.y, current.angle.y + 0x8000, 8, 0x1000); + field_0x91a.y = shape_angle.y; + } else if (cM3d_IsZero(speedF)) { + speedF = 0.0f; + if (mAcch.ChkGroundHit()) { + if (modeChangeCheck()) { + break; + } + } + + cLib_addCalc2(&speedF, 0.0f, 0.25f, 3.5f); + if (mpModelMorf->isLoop()) { + speedF = 0.0f; + } else if (speedF < 1.0f) { + speedF = 1.0f; + } + + if (mpModelMorf->getFrame() < 2.0f) { + speedF = 0.0f; + if (mAcch.ChkGroundHit()) { + if (modeChangeCheck()) { + break; + } + } + } + } + + fVar1 = speedF * 0.1f; + if (cM3d_IsZero(speedF)) { + fVar1 = 0.0f; + } + + mpModelMorf->setPlaySpeed(-fVar1); + break; + + case 2: + dComIfGp_getVibration().StopQuake(31); + field_0x209c = 0; + } + + graThrowDemo(); + return 1; } /* 80C09F08-80C0A018 00A0E8 0110+00 2/2 0/0 0/0 .text rollLanding__11daObj_GrA_cFv */ void daObj_GrA_c::rollLanding() { - // NONMATCHING + if (mAcch.ChkGroundLanding() && field_0x201c >= 10) { + cXyz sp28(0.0f, 0.0f, 20.0f); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(field_0x91a.y); + mDoMtx_stack_c::multVec(&sp28, &field_0xab8[5].field_0x4); + field_0xab8[5].field_0x10 = field_0x91a; + field_0xab8[5].field_0x0 = 1; + + dComIfGp_getVibration().StartShock(8, 15, cXyz(0.0f, 1.0f, 0.0f)); + mSound.startCreatureSound(Z2SE_GORON_ROLL_BOUND, 0, -1); + } } /* 80C0A018-80C0A120 00A1F8 0108+00 3/0 0/0 0/0 .text thrown__11daObj_GrA_cFPv */ -void daObj_GrA_c::thrown(void* param_0) { - // NONMATCHING +int daObj_GrA_c::thrown(void* param_1) { + int rv = 0; + + switch (field_0xa7c) { + case 0: + fopAcM_OnStatus(this, fopAcM_STATUS_UNK_004000); + field_0x1ff0 = 1; + mDemoCamMode = 0; + field_0x209c = 1; + break; + + case 1: + if (field_0x1ff8 != 0) { + field_0x1ff8--; + } + + switch (field_0x1ff0) { + case 1: + executeCrazyBeforeCatch(); + break; + + case 2: + executeCrazyCatch(); + break; + + case 3: + executeCrazyThrow(); + break; + + case 4: + executeCrazyJumping(); + } + + rv = 1; + break; + + case 2: + field_0x209c = 0; + } + + graThrowDemo(); + return rv; } /* 80C0A120-80C0AF94 00A300 0E74+00 2/1 0/0 0/0 .text demo_camera__11daObj_GrA_cFv */ void daObj_GrA_c::demo_camera() { // NONMATCHING + f32 fVar1; + cXyz sp40, sp4c, sp58, sp64, sp70, sp7c, sp88, sp94; + csXyz cStack_144; + daPy_py_c* player = daPy_getPlayerActorClass(); + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + dCamera_c* camBody = dCam_getBody(); + + if (mDemoCamMode <= 6) { + if (!eventInfo.checkCommandDemoAccrpt()) { + fopAcM_orderPotentialEvent(this, 0, 0xFFEF, 0); + eventInfo.onCondition(dEvtCnd_CANDEMO_e); + return; + } + + camera->mCamera.Stop(); + mDemoCamMode = 2; + field_0x2056 = 0; + fVar1 = camBody->Fovy(); + field_0x208c = fVar1; + mDemoCamFovy = fVar1; + field_0x2080 = camBody->Center(); + mDemoCamCenter = field_0x2080; + field_0x2074 = camBody->Eye(); + mDemoCamEye = field_0x2074; + camera->mCamera.SetTrimSize(2); + + if (daObj_GrA_Param_c::m.field_0xac >= field_0x2056) { + mDemoCamMode++; + field_0x2056 = 0; + } else { + sp40 = current.pos; + sp40.y += 150.0f; + cLib_addCalcPos2(&mDemoCamCenter, sp40, 0.1f, (field_0x2080 - sp40).abs() / 25.0f); + } + + if (daObj_GrA_Param_c::m.field_0xae >= field_0x2056) { + mDemoCamMode++; + field_0x2056 = 0; + } else { + sp4c = current.pos; + sp4c.y += 150.0f; + cLib_addCalcPos2(&mDemoCamCenter, sp4c, 0.1f, (field_0x2080 - sp4c).abs() / 25.0f); + + } + + if (daObj_GrA_Param_c::m.field_0xb0 >= field_0x2056) { + mDemoCamMode++; + field_0x2056 = 0; + } else { + mDoMtx_stack_c::YrotS(shape_angle.y); + sp58.x = 0.0f; + sp58.y = 250.0f; + sp58.z = 500.0f; + mDoMtx_stack_c::multVec(&sp58, &sp58); + sp58 += current.pos; + cLib_addCalcPos2(&mDemoCamEye, sp58, 0.1f, (field_0x2074 - sp58).abs() / 25.0f); + + sp64 = current.pos; + sp64.y += 150.0f; + cLib_addCalcPos2(&mDemoCamCenter, sp64, 0.1f, (field_0x2080 - sp64).abs() / 25.0f); + + mDemoCamFovy += (55.0f - field_0x208c) / 0.0f; + } + + if (daObj_GrA_Param_c::m.field_0xb2 >= field_0x2056) { + mDemoCamMode++; + field_0x2056 = 0; + cStack_144 = player->current.angle; + cStack_144.y = cLib_targetAngleY(&player->current.pos, ¤t.pos); + player->setPlayerPosAndAngle(&player->current.pos, &cStack_144); + field_0x2074 = mDemoCamEye; + field_0x2080 = mDemoCamCenter; + } else { + mDoMtx_stack_c::YrotS(shape_angle.y); + sp70.x = 0.0f; + sp70.y = 250.0f; + sp70.z = 500.0f; + mDoMtx_stack_c::multVec(&sp70, &sp70); + sp70 += current.pos; + cLib_addCalcPos2(&mDemoCamEye, sp70, 0.1f, (field_0x2074 - sp70).abs() / 25.0f); + + sp7c = current.pos; + sp7c.y += 150.0f; + cLib_addCalcPos2(&mDemoCamCenter, sp7c, 0.1f, (field_0x2080 - sp7c).abs() / 25.0f); + } + + if (daObj_GrA_Param_c::m.field_0xb4 >= field_0x2056) { + camera->mCamera.Reset(mDemoCamCenter, mDemoCamEye); + camera->mCamera.Start(); + camera->mCamera.SetTrimSize(0); + dComIfGp_event_reset(); + mDemoCamMode = 0; + field_0x2056 = 0; + } else { + sp88 = player->current.pos; + sp88.y += 150.0f; + cLib_chasePos(&mDemoCamCenter, sp88, (field_0x2080 - sp88).abs() / 0.0f); + + mDoMtx_stack_c::YrotS(player->current.angle.y); + sp94.x = 0.0f; + sp94.y = 210.0f; + sp94.z = -335.0f; + mDoMtx_stack_c::multVec(&sp94, &sp94); + sp94 += player->current.pos; + cLib_chasePos(&mDemoCamEye, sp94, (field_0x2074 - sp94).abs() / 0.0f); + mDemoCamFovy += INFINITY; + } + } else if (mDemoCamMode != 0) { + camera->mCamera.Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); + field_0x2056++; + } } -/* 80C0AF94-80C0B9AC 00B174 0A18+00 2/1 0/0 0/0 .text rollAttackedDemo__11daObj_GrA_cFv - */ +/* 80C0AF94-80C0B9AC 00B174 0A18+00 2/1 0/0 0/0 .text rollAttackedDemo__11daObj_GrA_cFv */ void daObj_GrA_c::rollAttackedDemo() { // NONMATCHING + csXyz cStack_118; + cXyz spa4, spb0, sp98; + cXyz sp80; + cXyz sp74; + cXyz sp68; + cXyz sp5c; + cXyz sp50; + cXyz sp44; + cXyz sp38; + cXyz sp2c; + f32 fVar1; + + daPy_py_c* player = daPy_getPlayerActorClass(); + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + dCamera_c* camBody = dCam_getBody(); + + switch (mDemoCamMode) { + case 1: + if (!eventInfo.checkCommandDemoAccrpt()) { + fopAcM_orderPotentialEvent(this, 0, 0xFFEF, 0); + eventInfo.onCondition(dEvtCnd_CANDEMO_e); + return; + } + + camera->mCamera.Stop(); + mDemoCamMode = 2; + field_0x2056 = 0; + fVar1 = camBody->Fovy(); + field_0x208c = fVar1; + mDemoCamFovy = fVar1; + sp74 = camBody->Center(); + field_0x2080 = sp74; + mDemoCamCenter = field_0x2080; + + sp80 = camBody->Eye(); + field_0x2074 = sp80; + mDemoCamEye = field_0x2074; + // fallthrough + case 2: + if (!dComIfGp_event_runCheck() && !eventInfo.checkCommandDemoAccrpt()) { + fopAcM_orderPotentialEvent(this, 0, 0xFFEF, 0); + eventInfo.onCondition(dEvtCnd_CANDEMO_e); + return; + } + + if (field_0x2056 >= 20) { + mDemoCamMode = 4; + field_0x2056 = 0; + field_0x2080 = camBody->Center(); + mDemoCamCenter = field_0x2080; + + field_0x2074 = camBody->Eye(); + mDemoCamEye = field_0x2074; + + camera->mCamera.SetTrimSize(2); + break; + } else { + mDemoCamCenter += player->current.pos - player->old.pos; + mDemoCamCenter.y -= 2.0f; + mDemoCamEye += player->current.pos - player->old.pos; + } + // fallthrough + case 4: + if (field_0x2056 >= 30) { + mDoMtx_stack_c::YrotS(player->current.angle.y); + sp44.set(0.0f, 150.0f, 250.0f); + mDoMtx_stack_c::multVec(&sp44, &sp44); + sp44 += player->current.pos; + sp50 = current.pos; + sp50.y += 150.0f; + cLib_addCalcPos2(&mDemoCamCenter, sp50, 0.1f, (sp44 - sp50).abs() / 60.0f); + break; + } else if (field_0x2056 >= daObj_GrA_Param_c::m.field_0xb2){ + mDemoCamMode += 1; + field_0x2056 = 0; + field_0x2074 = mDemoCamEye; + field_0x2080 = mDemoCamCenter; + cStack_118 = player->current.angle; + cStack_118.y = cLib_targetAngleY(&player->current.pos, ¤t.pos); + player->setPlayerPosAndAngle(&player->current.pos, &cStack_118); + } + break; + + case 5: + mDoMtx_stack_c::YrotS(player->current.angle.y); + sp2c.set(0.0f, 150.0f, 250.0f); + mDoMtx_stack_c::multVec(&sp2c, &sp2c); + sp2c += player->current.pos; + sp38 = current.pos; + sp38.y += 150.0f; + cLib_addCalcPos2(&mDemoCamCenter, sp38, 0.15f, (sp2c - sp38).abs() / 60.0f); + break; + + case 6: + if (field_0x2056 >= 60) { + mDemoCamMode = 7; + } else { + mDoMtx_stack_c::YrotS(player->current.angle.y); + sp5c.set(0.0f, 100.0f, -300.0f); + mDoMtx_stack_c::multVec(&sp5c, &sp5c); + sp5c += player->current.pos; + cLib_addCalcPos2(&mDemoCamEye, sp5c, 0.1f, (field_0x2074 - sp5c).abs() / 30.0f); + + sp68 = player->current.pos; + sp68.y += 90.0f; + cLib_addCalcPos2(&mDemoCamCenter, sp68, 0.1f, (sp68 - field_0x2080).abs() / 30.0f); + break; + } + // fallthrough + case 7: + camera->mCamera.Reset(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); + camera->mCamera.Start(); + camera->mCamera.SetTrimSize(0); + dComIfGp_event_reset(); + mDemoCamMode = 0; + field_0x2056 = 0; + return; + + default: + break; + } + + if (mDemoCamMode != 0) { + camera->mCamera.Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); + field_0x2056 += 1; + } + return; } /* 80C0B9AC-80C0BD90 00BB8C 03E4+00 2/2 0/0 0/0 .text graThrowDemo__11daObj_GrA_cFv */ void daObj_GrA_c::graThrowDemo() { // NONMATCHING + cXyz sp2c; + daPy_py_c* player = daPy_getPlayerActorClass(); + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + dCamera_c* camBody = dCam_getBody(); + + switch (mDemoCamMode) { + case 0: + break; + + case 1: + if (dComIfGp_event_runCheck()) { + if (checkProcess(&daObj_GrA_c::thrown)) { + camera->mCamera.Stop(); + mDemoCamMode = 2; + mDemoCamFovy = camBody->Fovy(); + mDemoCamCenter = camBody->Center(); + mDemoCamEye = camBody->Eye(); + mDoMtx_stack_c::YrotS(player->current.angle.y); + + if (field_0x1ffc != 0) { + field_0x2090.x = -300.0f; + } else { + field_0x2090.x = 300.0f; + } + field_0x2090.y = 500.0f; + field_0x2090.z = 0.0f; + + mDoMtx_stack_c::multVec(&field_0x2090, &field_0x2090); + field_0x2090 += current.pos; + + if (fopAcM_lc_c::lineCheck(&mDemoCamEye, &field_0x2090, this)) { + if (field_0x1ffc != 0) { + field_0x2090.x = 300.0f; + } else { + field_0x2090.x = -300.0f; + } + + field_0x20a0 = 1; + } else { + if (field_0x1ffc != 0) { + field_0x2090.x = -200.0f; + } else { + field_0x2090.x = 200.0f; + } + + field_0x20a0 = 0; + } + + mDoMtx_stack_c::YrotS(player->current.angle.y); + field_0x2090.y = 500.0f; + field_0x2090.z = 0.0f; + mDoMtx_stack_c::multVec(&field_0x2090, &field_0x2090); + field_0x2090 += current.pos; + } + } else { + return; + } + // fallthrough + case 2: + sp2c.set(0.0f ,150.0f, -200.0f); + if (field_0x1ff8 != 0) { + mDoMtx_stack_c::YrotS(cLib_targetAngleY(&player->current.pos, ¤t.pos)); + mDoMtx_stack_c::multVec(&sp2c, &sp2c); + sp2c += player->current.pos; + + if (fopAcM_lc_c::lineCheck(&mDemoCamEye, &sp2c, this)) { + field_0x20a0 = 1; + } + } + + if (field_0x1ff8 != 0 && field_0x20a0 == 0) { + cLib_addCalcPos2(&mDemoCamEye, sp2c, 0.2f, 100.0f); + cLib_addCalcPos2(&mDemoCamCenter, current.pos, 0.2f, 200.0f); + } else { + cLib_addCalcPos2(&mDemoCamEye, field_0x2090, 0.1f, 15.0f); + cLib_addCalcPos2(&mDemoCamCenter, (current.pos + player->current.pos) / 2.0f, 0.1f, 15.0f); + } + break; + + case 3: + camera->mCamera.Start(); + camera->mCamera.SetTrimSize(0); + field_0x1520 = 1; + mDemoCamMode = 0; + break; + } + + if (mDemoCamMode != 0) { + camera->mCamera.Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); + } } /* 80C0BD90-80C0BE5C 00BF70 00CC+00 1/1 0/0 0/0 .text setCarryStatus__11daObj_GrA_cFv */ void daObj_GrA_c::setCarryStatus() { // NONMATCHING + cXyz sp38; + mDoMtx_stack_c::YrotS(-shape_angle.y); + mDoMtx_stack_c::transM(-current.pos.x, -current.pos.y, -current.pos.z); + mDoMtx_stack_c::multVec(&daPy_getPlayerActorClass()->current.pos, &sp38); + if (fabsf(sp38.x) < 100.0f && sp38.z > 0.0f && sp38.z < 800.0f) { + attention_info.flags |= 0x10; + } } /* 80C0BE5C-80C0BF34 00C03C 00D8+00 1/1 0/0 0/0 .text checkThrow__11daObj_GrA_cFv */ -void daObj_GrA_c::checkThrow() { +bool daObj_GrA_c::checkThrow() { // NONMATCHING + if (field_0xa48 != 0) { + if ((field_0xa48 & 1) != 0) { + setProcess(&daObj_GrA_c::thrown); + initCrazyBeforeCatch(0); + field_0xa48 &= 0xFFFE; + return true; + } + + if ((field_0xa48 & 2) != 0) { + setProcess(&daObj_GrA_c::thrown); + initCrazyCatch(0); + field_0xa48 &= 0xFFFD; + return true; + } + } + + return false; } /* 80C0BF34-80C0C348 00C114 0414+00 5/5 0/0 0/0 .text calcCatchPos__11daObj_GrA_cFfi */ -void daObj_GrA_c::calcCatchPos(f32 param_0, int param_1) { +void daObj_GrA_c::calcCatchPos(f32 param_1, int param_2) { // NONMATCHING + daPy_py_c* player = daPy_getPlayerActorClass(); + f32 fVar1 = player->current.pos.y - mGroundY; + s16 HandsHeight = cM_atan2s(current.pos.absXZ(player->current.pos), fVar1); + cXyz sp6c(0.0f, param_1 * (cM_scos(HandsHeight)), param_1 * cM_ssin(HandsHeight)); + cXyz sp78(player->current.pos); + cXyz sp84, sp90, sp9c, spa8; + + mDoMtx_stack_c::copy(player->getLeftHandMatrix()); + mDoMtx_stack_c::multVecZero(&sp84); + mDoMtx_stack_c::copy(player->getRightHandMatrix()); + mDoMtx_stack_c::multVecZero(&sp90); + + sp9c = (sp84 + sp90) / 2.0f; + + mDoMtx_stack_c::copy(player->getHeadMtx()); + mDoMtx_stack_c::multVecZero(&spa8); + + spa8.y = sp78.y; + HandsHeight = cLib_targetAngleY(&sp9c, &spa8); + + if (param_2 != 0) { + cXyz spb4; + sp9c.y -= daObj_GrA_Param_c::m.field_0x60 * 0.5f; + cLib_offsetPos(&spb4, &sp9c, player->shape_angle.y + 0x8000, &sp6c); + + if (param_2 == 1) { + cLib_chasePos(¤t.pos, spb4, 100.0f); + } else if (param_2 == 2) { + cLib_chasePos(¤t.pos, spb4, 5.0f); + cLib_addCalcAngleS2(&shape_angle.y, HandsHeight, 8, 0x400); + field_0x91a.y = shape_angle.y; + } + } else { + #ifdef DEBUG + dDbVw_Report(100, 100, "pos.y = %f", sp9c.y - player->current.pos.y); + #endif + + cXyz spc0; + sp9c.y -= daObj_GrA_Param_c::m.field_0x60 * 0.5f; + cXyz spcc(0.0f, 0.0f, param_1); + cLib_offsetPos(&spc0, &sp9c, HandsHeight, &spcc); + + OS_REPORT("angle = %d, HandsHeight = %f\n", sp9c.y, HandsHeight); + + current.pos = spc0; + + if (field_0x1ffc != 0) { + current.angle.y = HandsHeight + 0x5000; + } else { + current.angle.y = HandsHeight + -0x5000; + } + + cLib_addCalcAngleS2(&shape_angle.y, HandsHeight, 2, 0x2000); + field_0x91a.y = shape_angle.y; + } } /* 80C0C348-80C0C364 00C528 001C+00 1/1 0/0 0/0 .text initCrazyBeforeCatch__11daObj_GrA_cFi */ -void daObj_GrA_c::initCrazyBeforeCatch(int param_0) { - // NONMATCHING +void daObj_GrA_c::initCrazyBeforeCatch(int param_1) { + field_0x1ff0 = 1; + speedF = 0.0f; + gravity = 0.0f; } /* 80C0C364-80C0C3E0 00C544 007C+00 1/1 0/0 0/0 .text executeCrazyBeforeCatch__11daObj_GrA_cFv */ void daObj_GrA_c::executeCrazyBeforeCatch() { // NONMATCHING + calcCatchPos(-120.0f, 1); + if ((field_0xa48 & 2) != 0) { + initCrazyCatch(0); + field_0xa48 &= ~2; + } else if ((field_0xa48 & 4) != 0) { + initCrazyAttack(); + field_0xa48 &= ~4; + } } /* 80C0C3E0-80C0C478 00C5C0 0098+00 2/2 0/0 0/0 .text initCrazyCatch__11daObj_GrA_cFi */ -void daObj_GrA_c::initCrazyCatch(int param_0) { +void daObj_GrA_c::initCrazyCatch(int param_1) { // NONMATCHING + dComIfGp_getVibration().StartQuake(8, 15, cXyz(0.0f, 1.0f, 0.0f)); + field_0x1ff0 = 2; + speedF = 0.0f; + field_0x1ff4 = 0; + calcCatchPos(-120.0f, 1); + gravity = 0.0f; } -/* 80C0C478-80C0C5F0 00C658 0178+00 1/1 0/0 0/0 .text executeCrazyCatch__11daObj_GrA_cFv - */ +/* 80C0C478-80C0C5F0 00C658 0178+00 1/1 0/0 0/0 .text executeCrazyCatch__11daObj_GrA_cFv */ void daObj_GrA_c::executeCrazyCatch() { // NONMATCHING + switch (field_0x1ff4) { + case 0: + if (daPy_getPlayerActorClass()->speedF == 0.0f) { + field_0x1ff4 = 1; + calcCatchPos(-110.0f, 2); + dComIfGp_getVibration().StartQuake(1, 15, cXyz(0.0f, 1.0f, 0.0f)); + } else { + calcCatchPos(-110.0f, 2); + } + break; + + case 1: + calcCatchPos(-1120.0f, 2); + break; + } + + f32 fVar1 = mpModelMorf->getPlaySpeed(); + if (fVar1 > 0.2f) { + mpModelMorf->setPlaySpeed(fVar1 - 0.2f); + } else { + mpModelMorf->setPlaySpeed(0.0f); + } + + if (field_0xa48 != 0) { + if ((field_0xa48 & 8) != 0) { + initCrazyThrow(0); + } else if ((field_0xa48 & 16) != 0) { + initCrazyThrow(1); + } else if ((field_0xa48 & 4) != 0) { + if (daPy_getPlayerActorClass()->speedF == 0.0f) { + initCrazyAttack(); + } else { + initCrazyAttack(); + } + } + + field_0xa48 = 0; + } } /* 80C0C5F0-80C0C690 00C7D0 00A0+00 1/1 0/0 0/0 .text initCrazyThrow__11daObj_GrA_cFi */ -void daObj_GrA_c::initCrazyThrow(int param_0) { +void daObj_GrA_c::initCrazyThrow(int param_1) { // NONMATCHING + field_0x1ffc = 1 - ((param_1 & 0xFF) << 31); + field_0x1ff4 = 0; + field_0x1ff0 = 3; + gravity = 0.0f; + speedF = 0.0f; + speed.y = 0.0f; + + if (field_0x1fe8 == 0) { + mDemoCamMode = 1; + } + + field_0x1ff8 = 34; + calcCatchPos(-110.0f, 2); + field_0x2004 = 0; + gravity = 0.0f; } -/* 80C0C690-80C0C84C 00C870 01BC+00 1/1 0/0 0/0 .text executeCrazyThrow__11daObj_GrA_cFv - */ +/* 80C0C690-80C0C84C 00C870 01BC+00 1/1 0/0 0/0 .text executeCrazyThrow__11daObj_GrA_cFv */ void daObj_GrA_c::executeCrazyThrow() { // NONMATCHING + f32 fVar1; + cXyz spa0; + dBgS_LinChk dStack_90; + + switch (field_0x1ff4) { + case 0: + fVar1 = mpModelMorf->getPlaySpeed(); + if (fVar1 > 0.2f) { + mpModelMorf->setPlaySpeed(fVar1 - 0.2f); + } else { + mpModelMorf->setPlaySpeed(0.0f); + } + + if (field_0x1ff8 == 0) { + field_0x1ff0 = 4; + gravity = -0.7f; + speedF = 25.0f; + speed.y = 15.0f; + cLib_addCalcAngleS2(&shape_angle.y, current.angle.y + 0x8000, 4, 0x1000); + field_0x91a.y = shape_angle.y; + } else if (field_0x1ff8 <= 10) { + if (field_0x1ff8 == 10) { + if (isFirstGra()) { + mSound.startCreatureVoice(Z2SE_GORON_V_THROWN_FIRST, -1); + } else { + mSound.startCreatureVoice(Z2SE_GORON_V_THROWN, -1); + } + } + + calcCatchPos(-110.0f, 0); + } else { + calcCatchPos(-110.0f, 2); + } + break; + + case 1: + executeCrazyJumping(); + } + + if (field_0xa48 != 0) { + if ((field_0xa48 & 4) != 0) { + initCrazyAttack(); + } + + field_0xa48 = 0; + + return; + } } /* 80C0C84C-80C0CA64 00CA2C 0218+00 3/3 0/0 0/0 .text initCrazyAttack__11daObj_GrA_cFv */ void daObj_GrA_c::initCrazyAttack() { // NONMATCHING + camera_class* camera; + + if (field_0x1ff0 == 3 && field_0x1ff8 == 0) { + field_0x1ff0 = 4; + field_0x1fe9 = 1; + + daPy_getPlayerActorClass()->offGoronSideMove(); + daPy_getPlayerActorClass()->offGoronUpStopCancel(); + + if (isFirstGra()) { + camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + mDemoCamMode = 0; + camera->mCamera.Start(); + camera->mCamera.SetTrimSize(0); + daNpcF_onEvtBit(0x52); + gravity = -0.7f; + speedF = 25.0f; + speed.y = 15.0f; + cLib_addCalcAngleS2(&shape_angle.y, current.angle.y + 0x8000, 4, 0x1000); + field_0x91a.y = shape_angle.y; + } + } else { + daPy_getPlayerActorClass()->offGoronSideMove(); + + if (isFirstGra()) { + if (mDemoCamMode != 0) { + camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + camera->mCamera.Start(); + camera->mCamera.SetTrimSize(0); + mDemoCamMode = 0; + } + + setProcess(&daObj_GrA_c::rollAttacked); + } else { + setProcess(&daObj_GrA_c::rollAttack); + field_0x1fe9 = 1; + field_0x1fd8 = 60; + } + + gravity = -4.0f; + current.angle.y = cLib_targetAngleY(¤t.pos, &daPy_getPlayerActorClass()->current.pos); + } } /* 80C0CA64-80C0CDBC 00CC44 0358+00 2/2 0/0 0/0 .text executeCrazyJumping__11daObj_GrA_cFv */ void daObj_GrA_c::executeCrazyJumping() { // NONMATCHING + cLib_addCalcAngleS2(&shape_angle.y, current.angle.y + 0x8000, 4, 0x1000); + field_0x91a.y = shape_angle.y; + + if (mAcch.ChkGroundLanding()) { + cXyz sp28(0.0f, 0.0f, 20.0f); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(field_0x91a.y); + mDoMtx_stack_c::multVec(&sp28, &field_0xab8[2].field_0x4); + field_0xab8[2].field_0x10 = field_0x91a; + field_0xab8[2].field_0x0 = 1; + + mSound.startCreatureSound(Z2SE_GORON_ROLL_BOUND, 0, -1); + + if (field_0x2004 != 0) { + dComIfGp_getVibration().StartShock(5, 15, cXyz(0.0f, 1.0f, 0.0f)); + speed.y = 0.0f; + setProcess(&daObj_GrA_c::rollEscape); + field_0x1fe9 = 1; + daPy_getPlayerActorClass()->offGoronSideMove(); + field_0x2004 = 0; + gravity = -4.0f; + } else { + dComIfGp_getVibration().StartShock(8, 15, cXyz(0.0f, 1.0f, 0.0f)); + speed.y = 15.0f; + field_0x2004 = 1; + mpModelMorf->setLoopFrame(mpModelMorf->getEndFrame()); + mpModelMorf->setPlaySpeed(-0.1f); + } + } else if (mAcch.ChkWallHit() != 0) { + cXyz sp34(0.0f, 0.0f, 20.0f); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(field_0x91a.y); + mDoMtx_stack_c::multVec(&sp34, &field_0xab8[2].field_0x4); + field_0xab8[2].field_0x10 = field_0x91a; + field_0xab8[2].field_0x0 = 1; + + mSound.startCreatureSound(Z2SE_GORON_ROLL_BOUND, 0, -1); + dComIfGp_getVibration().StartShock(5, 15, cXyz(0.0f, 1.0f, 0.0f)); + speed.y = 0.0f; + + setProcess(&daObj_GrA_c::rollEscape); + field_0x1fe9 = 1; + daPy_getPlayerActorClass()->offGoronSideMove(); + field_0x2004 = 0; + gravity = -4.0f; + } } /* 80C0CDBC-80C0CF10 00CF9C 0154+00 2/2 0/0 0/0 .text modeChangeCheck__11daObj_GrA_cFv */ -void daObj_GrA_c::modeChangeCheck() { +BOOL daObj_GrA_c::modeChangeCheck() { // NONMATCHING -} + BOOL rv = (field_0x2030 == 0); -/* 80C0CF10-80C0CF2C 00D0F0 001C+00 2/2 0/0 0/0 .text getGraPos__10daTagGra_cFv */ -// void daTagGra_c::getGraPos() { -extern "C" void getGraPos__10daTagGra_cFv() { - // NONMATCHING + if (rv != FALSE) { + mMode = 0; + home.angle.y = cLib_targetAngleY(¤t.pos, &home.pos); + home.pos = current.pos; + field_0xf50.OffAtSetBit(); + setProcess(&daObj_GrA_c::toStone); + field_0x109c = 1; + setBaseMotion(4, daObj_GrA_Param_c::m.field_0x0c * 0.5f); + setFaceMotion(13, daObj_GrA_Param_c::m.field_0x0c * 0.5f); + calcMotion(); + mpModelMorf->setFrame(mpModelMorf->getEndFrame()); + mpModelMorf->setPlaySpeed(1.0f); + return TRUE; + } + + return FALSE; } /* 80C0CF2C-80C0CF98 00D10C 006C+00 1/1 0/0 0/0 .text s_sub2__FPvPv */ -static void s_sub2(void* param_0, void* param_1) { - // NONMATCHING +static void* s_sub2(void* i_actor, void* i_data) { + daObj_GrA_c* i_this = (daObj_GrA_c*)i_data; + if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_OBJ_GRA && (u8)i_this->checkGraSub((fopAc_ac_c*)i_actor)) { + return i_actor; + } + return NULL; } /* 80C0CF98-80C0D000 00D178 0068+00 1/1 0/0 0/0 .text checkGraSub__11daObj_GrA_cFP10fopAc_ac_c */ -void daObj_GrA_c::checkGraSub(fopAc_ac_c* param_0) { - // NONMATCHING +BOOL daObj_GrA_c::checkGraSub(fopAc_ac_c* a_this) { + daObj_GrA_c* i_this = (daObj_GrA_c*)a_this; + + if (i_this->mMode != 0) { + return FALSE; + } + + if (getTagNo() == i_this->getTagNo()) { + return TRUE; + } + + return FALSE; } /* 80C0D000-80C0D2FC 00D1E0 02FC+00 1/0 0/0 0/0 .text waitDemo__11daObj_GrA_cFPv */ -void daObj_GrA_c::waitDemo(void* param_0) { +int daObj_GrA_c::waitDemo(void* param_1) { // NONMATCHING + fopAc_ac_c* actor_p; + cXyz sp34; + daPy_py_c* player = daPy_getPlayerActorClass(); + + switch (field_0xa7c) { + case 0: + setBaseMotion(0, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(13, -1.0f); + setLookMode(0); + break; + + case 1: + if (getTagNo() != 0) { + actor_p = field_0x204c.getActor(); + + if (field_0x2032 == 0 || actor_p != NULL) { + if (field_0x2032 == 0) { + daTagGra_c* graTag_p = (daTagGra_c*)fpcM_Search(s_sub, this); + if (graTag_p != NULL && graTag_p->getMode() == 2) { + mGraPos = graTag_p->getGraPos(); + mGraExtent = graTag_p->getGraExtent(); + mGraHeight = graTag_p->getGraHeight(); + mGraMode = graTag_p->getMode(); + field_0x2032 = 1; + fopAcM_delete(graTag_p); + } + + if (actor_p != NULL) { + actor_p = (fopAc_ac_c*)fpcM_Search(s_sub2, this); + if (actor_p != NULL) { + field_0x204c.entry(actor_p); + } + } + } + } else { + #ifdef DEBUG + if (daObj_GrA_Param_c::m.field_0x8a == 0) { + fopAcM_OnStatus(this, fopAcM_STATUS_UNK_000100); + } else { + fopAcM_OffStatus(this, fopAcM_STATUS_UNK_000100); + } + #endif + + sp34 = player->current.pos - mGraPos; + if (sp34.absXZ() < mGraExtent && sp34.z > -30.0f && sp34.z < mGraHeight) { + setProcess(&daObj_GrA_c::startDemo); + } + } + } + break; + + case 2: + #ifdef DEBUG + fopAcM_OnStatus(this, fopAcM_STATUS_UNK_000100); + #endif + break; + } + + return 1; } /* 80C0D2FC-80C0D3A8 00D4DC 00AC+00 1/1 0/0 0/0 .text skipDemoGra__11daObj_GrA_cFv */ -void daObj_GrA_c::skipDemoGra() { - // NONMATCHING +int daObj_GrA_c::skipDemoGra() { + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + daObj_GrA_c* gra_p = (daObj_GrA_c*)field_0x204c.getActor(); + camera->mCamera.Start(); + camera->mCamera.SetTrimSize(0); + dComIfGp_event_reset(); + gra_p->soldierDemoSkip(); + gra_p->field_0x204c.entry(NULL); + dComIfGs_onSwitch(field_0xa7f, fopAcM_GetRoomNo(this)); + return 1; } /* 80C0D3A8-80C0D3E0 00D588 0038+00 1/1 0/0 0/0 .text skipCallBack__FPvi */ -static void skipCallBack(void* param_0, int param_1) { - // NONMATCHING +static int skipCallBack(void* param_1, int param_2) { + daObj_GrA_c* i_this = (daObj_GrA_c*)param_1; + i_this->skipDemoGra(); + fopAcM_delete(i_this); + return 1; } /* 80C0D3E0-80C0EFC4 00D5C0 1BE4+00 2/0 0/0 0/0 .text startDemo__11daObj_GrA_cFPv */ -void daObj_GrA_c::startDemo(void* param_0) { +int daObj_GrA_c::startDemo(void* param_1) { // NONMATCHING + f32 fVar1; + cXyz sp30, sp3c, sp48, sp54, sp60, sp6c, sp78, sp84, sp90, sp9c, spa8, spb4, spcc, spd8, spe4; + s16 sVar1; + csXyz cStack_1b8, cStack_1c0, cStack_1c8; + daPy_py_c* player = daPy_getPlayerActorClass(); + daObj_GrA_c* gra_p = (daObj_GrA_c *)field_0x204c.getActor(); + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + dCamera_c* camBody = dCam_getBody(); + + switch (field_0xa7c) { + case 0: + setBaseMotion(0, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(13, -1.0f); + setLookMode(0); + mDemoCamMode = 1; + field_0x209c = 1; + break; + + case 1: + switch (mDemoCamMode) { + case 1: + if (!eventInfo.checkCommandDemoAccrpt()) { + fopAcM_orderPotentialEvent(this, 2, 0xFFEF, 0); + eventInfo.onCondition(dEvtCnd_CANDEMO_e); + return 1; + } + + camera->mCamera.Stop(); + mDemoCamMode = 2; + field_0x2056 = 0; + fVar1 = camBody->Fovy(); + field_0x208c = fVar1; + mDemoCamFovy = fVar1; + mDemoCamCenter = mGraPos; + mDemoCamCenter.y += 150.0f; + mDemoCamEye = mDemoCamCenter; + mDemoCamEye.z += 700.0f; + mDemoCamCenter.x += 50.0f; + field_0x2080 = mDemoCamCenter; + field_0x2074 = mDemoCamEye; + + camera->mCamera.SetTrimSize(2); + player->changeOriginalDemo(); + gra_p->field_0x204c.entry(this); + setProcess(&daObj_GrA_c::soldierDemo); + fopAcM_OnStatus(gra_p, fopAcM_STATUS_UNK_008000); + field_0x2056 = 0; + dComIfGp_getEvent().setSkipProc(this, skipCallBack, 0); + dComIfGp_getEvent().onSkipFade(); + // fallthrough + case 2: + sp30 = player->current.pos; + if ((sp30 - mGraPos).abs() < 50.0f) { + mDemoCamMode = 3; + field_0x2056 = 0; + break; + } + + if (field_0x2056 >= 60) { + cStack_1b8 = player->current.angle; + cLib_addCalcAngleS2(&cStack_1b8.y, cLib_targetAngleY(&player->current.pos, ¤t.pos) + 0x800, + 2, field_0x1528.field_0xa14); + player->setPlayerPosAndAngle(&player->current.pos, &cStack_1b8); + field_0x2056++; + } else { + player->changeDemoMode(3, 0, 0, 0); + player->changeDemoPos0(&mGraPos); + } + // fallthrough + case 3: + if (field_0x2056 >= 180) { + mDemoCamMode = 4; + field_0x2056 = 0; + field_0x2080 = mDemoCamCenter; + field_0x2074 = mDemoCamEye; + break; + } + + cStack_1c0 = player->current.angle; + sVar1 = cLib_targetAngleY(&player->current.pos, ¤t.pos) + 0x2800; + cLib_addCalcAngleS2(&cStack_1c0.y, sVar1, 4, field_0x1528.field_0xa14); + player->setPlayerPosAndAngle(&player->current.pos, &cStack_1c0); + + mDoMtx_stack_c::YrotS(sVar1); + sp3c.set(0.0f, 150.0f, 100.0f); + mDoMtx_stack_c::multVec(&sp3c, &sp3c); + sp3c += player->current.pos; + cLib_addCalcPos2(&mDemoCamEye, sp3c, 0.05f, (field_0x2074 - sp3c).abs() / 40.0f); + + mDoMtx_stack_c::YrotS(sVar1); + sp48.set(0.0f, 100.0f, 300.0f); + mDoMtx_stack_c::multVec(&sp48, &sp48); + sp48 += player->current.pos; + cLib_addCalcPos2(&mDemoCamCenter, sp48, 0.05f, (sp48 - field_0x2080).abs() / 25.0f); + field_0x2056++; + // fallthrough + case 4: + if (field_0x2056 >= 180) { + mDemoCamMode = 5; + field_0x2056 = 0; + field_0x2080 = mDemoCamCenter; + field_0x2074 = mDemoCamEye; + break; + } + + cStack_1c8 = player->current.angle; + sVar1 = cLib_targetAngleY(&player->current.pos, ¤t.pos) + 0x800; + cLib_addCalcAngleS2(&cStack_1c8.y, sVar1, 1, field_0x1528.field_0xa14); + player->setPlayerPosAndAngle(&player->current.pos, &cStack_1c8); + + mDoMtx_stack_c::YrotS(sVar1); + sp54.set(0.0f, 150.0f, 100.0f); + mDoMtx_stack_c::multVec(&sp54, &sp54); + sp54 += player->current.pos; + cLib_addCalcPos2(&mDemoCamEye, sp54, 0.06f, (field_0x2074 - sp54).abs() / 70.0f); + + mDoMtx_stack_c::YrotS(sVar1); + sp60.set(0.0f, 230.0f, 300.0f); + mDoMtx_stack_c::multVec(&sp60, &sp60); + sp60 += player->current.pos; + cLib_addCalcPos2(&mDemoCamCenter, sp60, 0.06f, (sp60 - field_0x2080).abs() / 70.0f); + + if (field_0x2056 == 150) { + setBaseMotion(16, 0.0f); + setFaceMotion(11, 0.0f); + setLookMode(0); + gra_p->setBaseMotion(17, daObj_GrA_Param_c::m.field_0x0c); + gra_p->setFaceMotion(12, -1.0f); + gra_p->setLookMode(0); + + current.angle.y += 0x4000; + shape_angle.y = current.angle.y; + field_0x91a.y = current.angle.y; + } + + field_0x2056++; + // fallthrough + case 5: + if (field_0x2056 >= 40) { + mDemoCamMode = 6; + field_0x2056 = 0; + break; + } + + mDoMtx_stack_c::YrotS(cLib_targetAngleY(&player->current.pos, ¤t.pos)); + sp6c.set(0.0f, 150.0f, 100.0f); + mDoMtx_stack_c::multVec(&sp6c, &sp6c); + sp6c += player->current.pos; + cLib_addCalcPos2(&mDemoCamEye, sp6c, 0.01f, (field_0x2074 - sp6c).abs() / 60.0f); + + sp78 = current.pos; + sp78.y += 280.0f; + cLib_addCalcPos2(&mDemoCamCenter, sp78, 0.5f, (sp78 - field_0x2080).abs() / (200.0f - field_0x2056 * 3)); + field_0x2056++; + // fallthrough + case 6: + if (field_0x2056 >= 90) { + mDemoCamMode = 7; + field_0x2056 = 0; + break; + } + + mDoMtx_stack_c::YrotS(cLib_targetAngleY(&player->current.pos, ¤t.pos)); + sp84.set(100.0f, -50.0f, -800.0f); + mDoMtx_stack_c::multVec(&sp84, &sp84); + sp84 += current.pos; + cLib_addCalcPos2(&mDemoCamEye, sp84, 0.5f, (field_0x2074 - sp84).abs() / 35.0f); + + sp90 = current.pos; + sp90.y += 280.0f; + cLib_addCalcPos2(&mDemoCamCenter, sp90, 0.35f, (sp90 - field_0x2080).abs() / 20.0f); + field_0x2056++; + // fallthrough + case 7: + if (mpModelMorf->isStop()) { + gra_p->setDemoMode(1); + setDemoMode(8); + field_0x2056 = 0; + setBaseMotion(0, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(13, -1.0f); + setLookMode(2); + } + break; + + case 8: + if (gra_p->field_0xa90 != 20 || !gra_p->mpModelMorf->isStop()) break; + + setDemoMode(9); + setBaseMotion(1, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(13, -1.0f); + field_0x2080 = mDemoCamCenter; + // fallthrough + case 9: + sp9c.set(0.0f, 0.0f, 80.0f); + mDoMtx_stack_c::YrotS(gra_p->current.angle.y); + mDoMtx_stack_c::multVec(&sp9c, &sp9c); + sp9c += gra_p->current.pos; + + case 10: + if (mAcchCir.ChkWallHit() && gra_p == dComIfG_Bgsp().GetActorPointer(mAcchCir)) { + if (field_0xa90 != 15) { + setBaseMotion(15, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(13, -1.0f); + setLookMode(0); + current.angle.y = cLib_targetAngleY(¤t.pos, &sp9c); + shape_angle.y = current.angle.y; + field_0x91a.y = current.angle.y; + mAcch.SetGrndNone(); + mAcch.SetWallNone(); + gravity = 0.0f; + speed.setall(0.0f); + speedF = 0.0f; + } + } else { + cLib_addCalcAngleS2(¤t.angle.y, cLib_targetAngleY(¤t.pos, &sp9c), 4, daObj_GrA_Param_c::m.field_0x88); + shape_angle.y = current.angle.y; + field_0x91a.y = current.angle.y; + cLib_chasePosXZ(¤t.pos, sp9c, daObj_GrA_Param_c::m.field_0x90); + } + + if (field_0xa90 != 15) { + if (mpModelMorf->isStop()) { + mAcch.SetGrndNone(); + mAcch.SetWallNone(); + gravity = 0.0f; + } else { + spa8.set(0.0f, 146.09f, 161.97f); + mDoMtx_stack_c::YrotS(field_0x91a.y); + mDoMtx_stack_c::multVec(&spa8, &spa8); + current.pos += spa8; + old.pos = current.pos; + gravity = 0.0f; + setLookMode(0); + setDemoMode(10); + gra_p->setDemoMode(3); + setBaseMotion(18, 0.0f); + setFaceMotion(13, 0.0f); + } + + spb4 = gra_p->current.pos; + cLib_addCalcPosXZ2(&mDemoCamCenter, spb4, 0.1f, (spb4 - field_0x2080).abs() / 30.0f); + break; + } + + case 11: + if (field_0x2056 >= 250) { + camera->mCamera.Start(); + camera->mCamera.SetTrimSize(0); + dComIfGp_event_reset(); + fopAcM_OffStatus(gra_p, 0x8000); + setProcess(&daObj_GrA_c::wait); + dComIfGs_onSwitch(field_0xa7f, fopAcM_GetRoomNo(this)); + fopAcM_delete(this); + break; + } + + if (mAcch.ChkGroundLanding()) { + spcc.set(0.0f, 0.0f, 20.0f); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(field_0x91a.y); + mDoMtx_stack_c::multVec(&spcc, &field_0xab8[2].field_0x4); + field_0xab8[2].field_0x10 = field_0x91a; + field_0xab8[2].field_0x0 = 1; + + mSound.startCreatureSound(Z2SE_GORON_ROLL_BOUND, 0, -1); + speedF = 0.0f; + } else if (mAcch.ChkGroundHit()) { + spd8.set(-1428.0f, 3650.0f, -4459.0f); + if ((current.pos - spd8).absXZ() > 50.0f) { + cLib_addCalcAngleS2(¤t.angle.y, cLib_targetAngleY(¤t.pos, &spd8), + 24, daObj_GrA_Param_c::m.field_0x88); + shape_angle.y = current.angle.y; + field_0x91a.y = current.angle.y; + } + + field_0x2056++; + } + + if (speed.y > 0.0f) { + spe4 = mDemoCamCenter; + mDemoCamEye += (current.pos - spe4); + } + + mDemoCamCenter = current.pos; + + } + break; + + case 2: + break; + + default: + if (mDemoCamMode != 0) { + camera->mCamera.Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0); + field_0x2056++; + } + break; + } + + return 1; } /* 80C0EFC4-80C0F17C 00F1A4 01B8+00 1/1 0/0 0/0 .text turn__11daObj_GrA_cFsfi */ -void daObj_GrA_c::turn(s16 param_0, f32 param_1, int param_2) { +BOOL daObj_GrA_c::turn(s16 param_1, f32 param_2, int param_3) { // NONMATCHING + if (field_0x1fc8 == 0) { + field_0x1fd0 = fabsf(cM_sht2d((s16)(current.angle.y - param_1))); + field_0x1fd0 = field_0x1fd0 / 180.0f * param_2; + field_0x1fd0 = (int)field_0x1fd0 + 1; + + if (field_0x1fd0 < 8.0f) { + field_0x1fd0 = 8.0f; + } + + field_0x1fd4 = current.angle.y; + } + + s16 sVar1 = field_0x1fd4; + if (param_3 == 0) { + if ((s16)(param_1 - sVar1) >= 0) { + param_3 = -1; + } else { + param_3 = 1; + } + } + + u16 sVar2 = param_1 - sVar1; + if (param_3 < 0) { + sVar2 = -(u16)(0xFFFF - sVar2); + } + + f32 fVar1 = cM_ssin(field_0x1fc8); + field_0x1fc8 = field_0x1fc8 + 16384.0f / field_0x1fd0; + if ((u16)field_0x1fc8 >= 0x4000) { + current.angle.y = param_1; + field_0x1fc8 = 0x4000; + } else { + current.angle.y = field_0x1fd4 + (int)(sVar2 * fVar1); + } + + return param_1 == current.angle.y; } /* 80C0F17C-80C0F330 00F35C 01B4+00 2/2 0/0 0/0 .text turn_step__11daObj_GrA_cFsiii */ -void daObj_GrA_c::turn_step(s16 param_0, int param_1, int param_2, int param_3) { +BOOL daObj_GrA_c::turn_step(s16 param_1, int param_2, int param_3, int param_4) { // NONMATCHING + if (field_0x1fcc == 0) { + if ((int)fabsf(cM_sht2d((s16)(param_1 - field_0x91a.y))) > 20) { + if (param_2 >= 0 && field_0xa92 != param_2) { + setFaceMotion(param_2, 3.0f); + } + + if (param_3 >= 0 && field_0xa90 != param_3) { + setBaseMotion(param_3, 3.0f); + } + } + + field_0x1fd6 = param_1; + field_0x1fc8 = 0; + + if (field_0x91a.y == field_0x1fd6) { + field_0x1fcc++; + } + + current.angle.y = field_0x91a.y; + shape_angle.y = current.angle.y; + field_0x1fcc++; + } else if (field_0x1fcc == 1) { + if (turn(field_0x1fd6, param_4, 0) != 0) { + shape_angle.y = current.angle.y; + field_0x91a.y = current.angle.y; + field_0x1fcc++; + } else { + shape_angle.y = current.angle.y; + field_0x91a.y = current.angle.y; + } + } + + u32 rv = field_0x1fcc ^ 1; + return ((rv >> 1) - (rv & field_0x1fcc)) >> 0x1F; } /* 80C0F330-80C0F590 00F510 0260+00 1/1 0/0 0/0 .text chkFindPlayer2__11daObj_GrA_cFis */ -void daObj_GrA_c::chkFindPlayer2(int param_0, s16 param_1) { +BOOL daObj_GrA_c::chkFindPlayer2(int param_1, s16 param_2) { // NONMATCHING + cXyz sp80 = getAttentionPos(this); + s16 playerAngleY = fopAcM_searchPlayerAngleY(this); + int iVar1 = abs((s16)(playerAngleY - current.angle.y)); + u8 uVar1; + + if (iVar1 < 0x3C00) { + if (param_1 == 0) { + uVar1 = getDistTableIdx(10, 6); + } else { + uVar1 = getDistTableIdx(12, 6); + } + } else if (param_1 == 0) { + uVar1 = getDistTableIdx(4, 6); + } else { + uVar1 = getDistTableIdx(6, 6); + } + iVar1 = uVar1; + + f32 fVar1, fVar2, fVar3; + if (param_1 == 0) { + dComIfGp_getAttention(); + fVar1 = dComIfGp_getAttention()->getDistTable(iVar1).mDistMax; + } else { + dComIfGp_getAttention(); + fVar1 = dComIfGp_getAttention()->getDistTable(iVar1).mDistMaxRelease; + } + + fVar2 = dComIfGp_getAttention()->getDistTable(iVar1).mLowerY * -1.0f; + fVar3 = dComIfGp_getAttention()->getDistTable(iVar1).mUpperY * -1.0f; + u32 uVar2 = dComIfGp_getAttention()->getDistTable(iVar1).mAngleSelect; + + f32 fVar4 = 180.0f; + if ((uVar2 & 8) != 0) { + fVar4 = 30.0f; + } else if ((uVar2 & 16) != 0) { + fVar4 = 45.0f; + } else if ((uVar2 & 32) != 0) { + fVar4 = 60.0f; + } else if ((uVar2 & 64) != 0) { + fVar4 = 90.0f; + } else if ((uVar2 & 128) != 0) { + fVar4 = 110.0f; + } else if ((uVar2 & 256) != 0) { + fVar4 = 135.0f; + } + + if (chkPointInArea(sp80, attention_info.position, fVar1, fVar2, fVar3, 0)) { + if (chkActorInSight2(daPy_getPlayerActorClass(), fVar4, param_2)) { + return TRUE; + } + } + + return FALSE; } -/* 80C0F590-80C0F5A4 00F770 0014+00 1/1 0/0 0/0 .text getDistTable__12dAttention_cFi */ -// void dAttention_c::getDistTable(int param_0) { -extern "C" void getDistTable__12dAttention_cFi() { +/* 80C0F5A4-80C0F668 00F784 00C4+00 1/1 0/0 0/0 .text chkPointInArea__11daObj_GrA_cF4cXyz4cXyzfffs */ +BOOL daObj_GrA_c::chkPointInArea(cXyz param_1, cXyz param_2, f32 param_3, f32 param_4, f32 param_5, s16 param_6) { // NONMATCHING + f32 fVar1 = param_4; + f32 fVar2 = param_5; + f32 fVar3 = param_3; + cXyz sp68, sp74; + f32 fVar4 = fVar1; + + if (fVar1 < fVar2) { + fVar4 = fVar2; + fVar2 = fVar1; + } + + sp68.set(fVar3, fabsf(fVar4 - fVar2) * 0.5f, fVar3); + sp74 = param_2; + sp74.y = (sp74.y + fVar2) + sp68.y; + + return chkPointInArea(param_1, sp74, sp68, param_6); } -/* 80C0F5A4-80C0F668 00F784 00C4+00 1/1 0/0 0/0 .text chkPointInArea__11daObj_GrA_cF4cXyz4cXyzfffs - */ -void daObj_GrA_c::chkPointInArea(cXyz param_0, cXyz param_1, f32 param_2, f32 param_3, - f32 param_4, s16 param_5) { - // NONMATCHING +/* 80C0F668-80C0F6E0 00F848 0078+00 1/1 0/0 0/0 .text chkPointInArea__11daObj_GrA_cF4cXyz4cXyz4cXyzs */ +BOOL daObj_GrA_c::chkPointInArea(cXyz param_1, cXyz param_2, cXyz param_3, s16 param_4) { + return daNpcF_chkPointInArea(param_1, param_2, param_3, param_4); } -/* 80C0F668-80C0F6E0 00F848 0078+00 1/1 0/0 0/0 .text - * chkPointInArea__11daObj_GrA_cF4cXyz4cXyz4cXyzs */ -void daObj_GrA_c::chkPointInArea(cXyz param_0, cXyz param_1, cXyz param_2, s16 param_3) { +/* 80C0F6E0-80C0F7EC 00F8C0 010C+00 1/1 0/0 0/0 .text chkActorInSight2__11daObj_GrA_cFP10fopAc_ac_cfs */ +BOOL daObj_GrA_c::chkActorInSight2(fopAc_ac_c* actor, f32 param_2, s16 param_3) { // NONMATCHING + if (param_2 < 180.0f) { + s16 sVar1 = cM_deg2s(param_2); + cXyz sp34 = getAttentionPos(actor); + cSGlobe cStack_48(attention_info.position - sp34); + cSAngle acStack_4c(cSAngle(cStack_48.U().Inv()) - param_3); + s16 sVar2 = acStack_4c.Val(); + if (sVar2 < 0) { + sVar2 = -sVar2; + } + + return sVar2 ^ sVar1; + } + + return 1; } -/* 80C0F6E0-80C0F7EC 00F8C0 010C+00 1/1 0/0 0/0 .text - * chkActorInSight2__11daObj_GrA_cFP10fopAc_ac_cfs */ -void daObj_GrA_c::chkActorInSight2(fopAc_ac_c* param_0, f32 param_1, s16 param_2) { - // NONMATCHING -} +/* 80C0F7EC-80C0F860 00F9CC 0074+00 2/2 0/0 0/0 .text getAttentionPos__11daObj_GrA_cFP10fopAc_ac_c */ +cXyz daObj_GrA_c::getAttentionPos(fopAc_ac_c* i_actor_p) { + cXyz pos = i_actor_p->attention_info.position; -/* 80C0F7EC-80C0F860 00F9CC 0074+00 2/2 0/0 0/0 .text getAttentionPos__11daObj_GrA_cFP10fopAc_ac_c - */ -void daObj_GrA_c::getAttentionPos(fopAc_ac_c* param_0) { - // NONMATCHING + if (fopAcM_GetName(i_actor_p) == PROC_ALINK) { + pos.y -= daPy_py_c::getAttentionOffsetY(); + } + + return pos; } /* 80C0F860-80C0FA68 00FA40 0208+00 2/0 0/0 0/0 .text standWaitJump__11daObj_GrA_cFPv */ -void daObj_GrA_c::standWaitJump(void* param_0) { - // NONMATCHING +int daObj_GrA_c::standWaitJump(void* param_1) { + switch (field_0xa7c) { + case 0: + field_0x1fcc = 0; + break; + + case 1: + if (getJumpType() == 1) { + setLookMode(0); + if (home.angle.y != field_0x91a.y) { + if (turn_step(home.angle.y, 0, 19, 20) != 0) { + field_0x1fcc = 0; + setBaseMotion(21, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(0, -1.0f); + } + } else if (field_0xa90 != 21) { + setBaseMotion(21, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(0, -1.0f); + } + } else { + BOOL bVar1 = field_0x14f8.getActor() != NULL; + if (chkFindPlayer2(bVar1, shape_angle.y) != 0) { + if (!bVar1) { + field_0x14f8.entry(daPy_getPlayerActorClass()); + } + } else if (bVar1) { + field_0x14f8.entry(NULL); + } + + if (field_0x14f8.getActor() != NULL) { + setLookMode(1); + } else { + setLookMode(0); + if ((home.angle.y != field_0x91a.y) && (turn_step(home.angle.y, 0, 19, 20) != 0)) { + field_0x1fcc = 0; + setBaseMotion(0, daObj_GrA_Param_c::m.field_0x0c); + setFaceMotion(0, -1.0f); + } + } + } + break; + + case 2: + break; + } + + return 1; } -/* ############################################################################################## */ -/* 80C10AAC-80C10ABC 000214 000C+04 0/0 0/0 0/0 .bss @5648 */ -#pragma push -#pragma force_active on -static u8 lit_5648[12 + 4 /* padding */]; -#pragma pop - -/* 80C10ABC-80C10AC8 000224 000C+00 0/0 0/0 0/0 .bss @5651 */ -#pragma push -#pragma force_active on -static u8 lit_5651[12]; -#pragma pop - -/* 80C10AC8-80C10AD4 000230 000C+00 0/0 0/0 0/0 .bss @5652 */ -#pragma push -#pragma force_active on -static u8 lit_5652[12]; -#pragma pop - -/* 80C10AD4-80C10AE0 00023C 000C+00 0/0 0/0 0/0 .bss @5653 */ -#pragma push -#pragma force_active on -static u8 lit_5653[12]; -#pragma pop - /* 80C10AE0-80C10B10 000248 0030+00 0/0 0/0 0/0 .bss aVec$5647 */ #pragma push #pragma force_active on static u8 aVec[48]; #pragma pop -/* 80C10B10-80C10B14 000278 0004+00 0/0 0/0 0/0 .bss - * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */ -#pragma push -#pragma force_active on -static u8 data_80C10B10[4]; -#pragma pop - -/* 80C10B14-80C10B18 00027C 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JASAudioThread> */ -#pragma push -#pragma force_active on -static u8 data_80C10B14[4]; -#pragma pop - -/* 80C10B18-80C10B1C 000280 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */ -#pragma push -#pragma force_active on -static u8 data_80C10B18[4]; -#pragma pop - -/* 80C10B1C-80C10B20 000284 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_80C10B1C[4]; -#pragma pop - -/* 80C10B20-80C10B24 000288 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80C10B20[4]; -#pragma pop - -/* 80C10B24-80C10B28 00028C 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80C10B24[4]; -#pragma pop - -/* 80C10B28-80C10B2C 000290 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys> - */ -#pragma push -#pragma force_active on -static u8 data_80C10B28[4]; -#pragma pop - -/* 80C10B2C-80C10B30 000294 0004+00 0/0 0/0 0/0 .bss - * sInstance__36JASGlobalInstance<15JAISoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_80C10B2C[4]; -#pragma pop - -/* 80C10B30-80C10B34 000298 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14Z2SoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_80C10B30[4]; -#pragma pop - -/* 80C10B34-80C10B38 00029C 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */ -#pragma push -#pragma force_active on -static u8 data_80C10B34[4]; -#pragma pop - -/* 80C10B38-80C10B3C 0002A0 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */ -#pragma push -#pragma force_active on -static u8 data_80C10B38[4]; -#pragma pop - -/* 80C10B3C-80C10B40 0002A4 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_80C10B3C[4]; -#pragma pop - -/* 80C10B40-80C10B44 0002A8 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAIStreamMgr> */ -#pragma push -#pragma force_active on -static u8 data_80C10B40[4]; -#pragma pop - -/* 80C10B44-80C10B48 0002AC 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80C10B44[4]; -#pragma pop - -/* 80C10B48-80C10B4C 0002B0 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAISoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_80C10B48[4]; -#pragma pop - -/* 80C10B4C-80C10B50 0002B4 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13JAUSoundTable> */ -#pragma push -#pragma force_active on -static u8 data_80C10B4C[4]; -#pragma pop - -/* 80C10B50-80C10B54 0002B8 0004+00 0/0 0/0 0/0 .bss - * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */ -#pragma push -#pragma force_active on -static u8 data_80C10B50[4]; -#pragma pop - -/* 80C10B54-80C10B58 0002BC 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAUSoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_80C10B54[4]; -#pragma pop - -/* 80C10B58-80C10B5C 0002C0 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo> - */ -#pragma push -#pragma force_active on -static u8 data_80C10B58[4]; -#pragma pop - -/* 80C10B5C-80C10B60 0002C4 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */ -#pragma push -#pragma force_active on -static u8 data_80C10B5C[4]; -#pragma pop - -/* 80C10B60-80C10B64 0002C8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience> - */ -#pragma push -#pragma force_active on -static u8 data_80C10B60[4]; -#pragma pop - -/* 80C10B64-80C10B68 0002CC 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80C10B64[4]; -#pragma pop - -/* 80C10B68-80C10B6C 0002D0 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80C10B68[4]; -#pragma pop - -/* 80C10B6C-80C10B70 0002D4 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80C10B6C[4]; -#pragma pop - -/* 80C10B70-80C10B74 0002D8 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */ -#pragma push -#pragma force_active on -static u8 data_80C10B70[4]; -#pragma pop +AUDIO_INSTANCES; /* 80C0FE14-80C0FE14 000398 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ + +/* 80C10734-80C10754 -00001 0020+00 1/0 0/0 0/0 .data daObj_GrA_MethodTable */ +static actor_method_class daObj_GrA_MethodTable = { + (process_method_func)daObj_GrA_Create, + (process_method_func)daObj_GrA_Delete, + (process_method_func)daObj_GrA_Execute, + (process_method_func)daObj_GrA_IsDelete, + (process_method_func)daObj_GrA_Draw, +}; + +/* 80C10754-80C10784 -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_GRA */ +extern actor_process_profile_definition g_profile_OBJ_GRA = { + fpcLy_CURRENT_e, // mLayerID + 3, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_OBJ_GRA, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daObj_GrA_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 19, // mPriority + &daObj_GrA_MethodTable, // sub_method + 0x00040100, // mStatus + fopAc_NPC_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +};