From 17453374522f0b421d582df9069c8a0bad817b3b Mon Sep 17 00:00:00 2001 From: Pheenoh Date: Wed, 13 Nov 2024 14:50:44 -0700 Subject: [PATCH] d_a_npc_ashB work (#2250) Co-authored-by: pheenoh --- .gitignore | 6 + include/d/actor/d_a_npc_ashB.h | 167 ++- src/d/actor/d_a_npc_ashB.cpp | 2488 +++++++++++++++----------------- 3 files changed, 1305 insertions(+), 1356 deletions(-) diff --git a/.gitignore b/.gitignore index 275db7547fb..fc44133f1ed 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,9 @@ compile_commands.json # Miscellaneous /*.txt *.exe + +# MacOS +.DS_Store + +# ISOs +*.iso diff --git a/include/d/actor/d_a_npc_ashB.h b/include/d/actor/d_a_npc_ashB.h index 083e29bdbc0..ada312947e0 100644 --- a/include/d/actor/d_a_npc_ashB.h +++ b/include/d/actor/d_a_npc_ashB.h @@ -11,52 +11,171 @@ * @details * */ -class daNpcAshB_c : public fopAc_ac_c { +class daNpcAshB_c : public daNpcF_c { +public: + typedef bool (daNpcAshB_c::*ActionFn)(void*); + typedef BOOL (daNpcAshB_c::*EventFn)(int); + + enum Animation { + /* 0x00 */ ANM_NONE, + /* 0x01 */ ANM_F_TALK_A, + /* 0x02 */ ANM_F_TALK_B, + /* 0x03 */ ANM_F_SILENT, + /* 0x04 */ ANM_F_COOL, + /* 0x05 */ ANM_F_ASK, + /* 0x06 */ ANM_F_EXPLAIN_A, + /* 0x07 */ ANM_F_EXPLAIN_B, + /* 0x08 */ ANM_WAIT_A, + /* 0x09 */ ANM_WAIT_B, + /* 0x0A */ ANM_WAIT_C, + /* 0x0B */ ANM_STEP, + /* 0x0C */ ANM_COOL, + /* 0x0D */ ANM_ASK, + /* 0x0E */ ANM_EXPLAIN_A, + /* 0x0F */ ANM_EXPLAIN_B, + /* 0x10 */ ANM_BOWWAIT, + /* 0x11 */ ANM_BOWRUN, + }; + + enum Expression { + /* 0x0 */ EXPR_TALK_A, + /* 0x1 */ EXPR_TALK_B, + /* 0x2 */ EXPR_SILENT, + /* 0x3 */ EXPR_COOL, + /* 0x4 */ EXPR_ASK, + /* 0x5 */ EXPR_EXPLAIN_A, + /* 0x6 */ EXPR_EXPLAIN_B, + /* 0x7 */ EXPR_NONE, + }; + + enum Motion { + /* 0x0 */ MOT_WAIT_A, + /* 0x1 */ MOT_WAIT_B, + /* 0x2 */ MOT_WAIT_C, + /* 0x3 */ MOT_COOL, + /* 0x4 */ MOT_ASK, + /* 0x5 */ MOT_EXPLAIN_A, + /* 0x6 */ MOT_EXPLAIN_B, + /* 0x7 */ MOT_BOWWAIT, + /* 0x8 */ MOT_BOWRUN, + /* 0x9 */ MOT_STEP, + }; + + enum LookMode { + /* 0 */ LOOK_NONE, + /* 1 */ LOOK_RESET, + /* 2 */ LOOK_PLAYER, + /* 3 */ LOOK_PLAYER_TALK, + /* 4 */ LOOK_ACTOR, + /* 5 */ LOOK_ATTN, + }; + public: /* 8095DE4C */ daNpcAshB_c(); /* 8095E060 */ ~daNpcAshB_c(); - /* 8095E224 */ void Create(); - /* 8095E4A0 */ void CreateHeap(); - /* 8095E914 */ void Delete(); - /* 8095E948 */ void Execute(); - /* 8095E96C */ void Draw(); - /* 8095E9C8 */ void ctrlJoint(J3DJoint*, J3DModel*); - /* 8095EB94 */ void createHeapCallBack(fopAc_ac_c*); - /* 8095EBB4 */ void ctrlJointCallBack(J3DJoint*, int); - /* 8095EC00 */ void setExpressionAnm(int, bool); - /* 8095EE00 */ void setExpressionBtp(int); + /* 8095E224 */ cPhs__Step Create(); + /* 8095E4A0 */ BOOL CreateHeap(); + /* 8095E914 */ int Delete(); + /* 8095E948 */ int Execute(); + /* 8095E96C */ int Draw(); + /* 8095E9C8 */ bool ctrlJoint(J3DJoint*, J3DModel*); + /* 8095EB94 */ static BOOL createHeapCallBack(fopAc_ac_c*); + /* 8095EBB4 */ static BOOL ctrlJointCallBack(J3DJoint*, int); + /* 8095EC00 */ bool setExpressionAnm(int, bool); + /* 8095EE00 */ bool setExpressionBtp(int); /* 8095EEE0 */ bool setMotionAnm(int, f32); /* 8095F0A4 */ void reset(); - /* 8095F21C */ void setAction(bool (daNpcAshB_c::*)(void*)); - /* 8095F2C4 */ void wait(void*); + /* 8095F21C */ inline bool setAction(ActionFn i_actionFn); + /* 8095F2C4 */ bool wait(void*); /* 8095FC70 */ void setMotion(int, f32, int); /* 8095FD34 */ void setExpression(int, f32); - /* 8095FD9C */ void talk(void*); - /* 809602E0 */ void demo(void*); - /* 809604C8 */ void EvCut_Appear(int); + /* 8095FD9C */ bool talk(void*); + /* 809602E0 */ bool demo(void*); + /* 809604C8 */ BOOL EvCut_Appear(int); /* 80960A60 */ void setParam(); - /* 80960AE8 */ void main(); + /* 80960AE8 */ BOOL main(); /* 80960D64 */ void playMotion(); - /* 80961188 */ void ctrlBtk(); + /* 80961188 */ BOOL ctrlBtk(); /* 80961264 */ void setAttnPos(); /* 80961574 */ void lookat(); /* 80961770 */ void drawOtherMdls(); - /* 809617F8 */ bool drawDbgInfo(); + /* 809617F8 */ BOOL drawDbgInfo(); - static u8 mEvtSeqList[24]; + static EventFn mEvtSeqList[2]; + + s16 getMessageNo() { return (fopAcM_GetParam(this) >> 8) & 0xFFFF;} + inline void setExpressionTalkAfter() { setExpression(6, -1.0f); } + inline void setLookMode(int i_lookMode); + inline BOOL chkFindPlayer(); + inline bool step(s16, int, f32); + inline void playExpression(); private: - /* 0x568 */ u8 field_0x568[0xdf0 - 0x568]; + /* 0xB48 */ Z2Creature mCreatureSound; + /* 0xBD8 */ daNpcF_MatAnm_c* mpMatAnm; + /* 0xBDC */ J3DModel* mpModel; + /* 0xBE0 */ daNpcF_Lookat_c mLookat; + /* 0xC7C */ daNpcF_ActorMngr_c mActorMngr[1]; + /* 0xC84 */ fopAc_ac_c* mpTalkPartner; + /* 0xC88 */ dCcD_Cyl mCyl; + /* 0xDC4 */ ActionFn mpActionFn; + /* 0xDD0 */ request_of_phase_process_class mPhase[1]; + /* 0xDD8 */ s32 mItemPartnerId; + /* 0xDDC */ u32 field_0xddc; + /* 0xDE0 */ u32 field_0xde0; + /* 0xDE4 */ s16 mFlowID; + /* 0xDE6 */ s16 mLookMode; + /* 0xDE8 */ u16 mMode; + /* 0xDEA */ s16 field_0xdea; + /* 0xDEC */ u8 field_0xdec; + /* 0xDED */ u8 field_0xded; + /* 0xDEE */ u8 field_0xdee; + }; STATIC_ASSERT(sizeof(daNpcAshB_c) == 0xdf0); class daNpcAshB_Param_c { public: - /* 80962078 */ ~daNpcAshB_Param_c(); + /* 80962078 */ virtual ~daNpcAshB_Param_c(); - static u8 const m[112]; + struct param { + /* 0x00 */ f32 mAttnOffsetY; + /* 0x04 */ f32 mGravity; + /* 0x08 */ f32 mScale; + /* 0x0C */ f32 mShadowDepth; + /* 0x10 */ f32 mCcWeight; + /* 0x14 */ f32 mCylH; + /* 0x18 */ f32 mWallH; + /* 0x1C */ f32 mWallR; + /* 0x20 */ f32 mBodyUpAngle; + /* 0x24 */ f32 mBodyDownAngle; + /* 0x28 */ f32 mBodyLeftAngle; + /* 0x2C */ f32 mBodyRightAngle; + /* 0x30 */ f32 mHeadUpAngle; + /* 0x34 */ f32 mHeadDownAngle; + /* 0x38 */ f32 mHeadLeftAngle; + /* 0x3C */ f32 mHeadRightAngle; + /* 0x40 */ f32 mNeckAngleScl; + /* 0x44 */ f32 mMorfFrames; + /* 0x48 */ s16 mSpeakDistIdx; + /* 0x4A */ s16 mSpeakAngleIdx; + /* 0x4C */ s16 mTalkDistIdx; + /* 0x4E */ s16 mTalkAngleIdx; + /* 0x50 */ f32 mAttnFovY; + /* 0x54 */ f32 mAttnRadius; + /* 0x58 */ f32 mAttnUpperY; + /* 0x5C */ f32 mAttnLowerY; + /* 0x60 */ s16 field_0x60; + /* 0x62 */ s16 mDamageTimer; + /* 0x64 */ s16 mTestExpression; + /* 0x66 */ s16 mTestMotion; + /* 0x68 */ s16 mTestLookMode; + /* 0x6A */ bool mTest; + /* 0x6C */ f32 field_0x6c; + }; + + static param const m; }; - #endif /* D_A_NPC_ASHB_H */ diff --git a/src/d/actor/d_a_npc_ashB.cpp b/src/d/actor/d_a_npc_ashB.cpp index 79ed43face6..e1e51b71f2a 100644 --- a/src/d/actor/d_a_npc_ashB.cpp +++ b/src/d/actor/d_a_npc_ashB.cpp @@ -4,6 +4,7 @@ */ #include "d/actor/d_a_npc_ashB.h" +#include "JSystem/J3DGraphBase/J3DMaterial.h" #include "dol2asm.h" @@ -32,7 +33,7 @@ extern "C" void Execute__11daNpcAshB_cFv(); extern "C" void Draw__11daNpcAshB_cFv(); extern "C" void ctrlJoint__11daNpcAshB_cFP8J3DJointP8J3DModel(); extern "C" void createHeapCallBack__11daNpcAshB_cFP10fopAc_ac_c(); -extern "C" void ctrlJointCallBack__11daNpcAshB_cFP8J3DJointi(); +// extern "C" void ctrlJointCallBack__11daNpcAshB_cFP8J3DJointi(); extern "C" void setExpressionAnm__11daNpcAshB_cFib(); extern "C" void setExpressionBtp__11daNpcAshB_cFi(); extern "C" void setMotionAnm__11daNpcAshB_cFif(); @@ -226,202 +227,1198 @@ extern "C" void __register_global_object(); // Declarations: // -/* ############################################################################################## */ -/* 809623E8-809623E8 000304 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_809623E8 = "AshB"; -SECTION_DEAD static char const* const stringBase_809623ED = "ASHB_APPEAR"; -#pragma pop +// fake data / lazy solution to get matches. fix later +static char* tmp[5] = {}; /* 80962418-80962424 000000 000C+00 3/3 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, }; -/* 80962424-80962438 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 - /* 80962438-80962534 000020 00FC+00 1/2 0/0 0/0 .data l_bckGetParamList */ -SECTION_DATA static u8 l_bckGetParamList[252] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static daNpc_GetParam2 l_bckGetParamList[21] = { + {-1, 2, 0}, + {13,0, 0}, + {14, 0, 0}, + {11, 0, 0}, + {10, 0, 0}, + {9, 0, 0}, + {12, 0, 0}, + {24, 2, 0}, + {25, 2, 0}, + {24, 2, 0}, + {21, 0, 0}, + {22, 0, 0}, + {20, 0, 0}, + {23, 0, 0}, + {7, 0, 0}, + {8, 0, 0}, + {18, 0, 0}, + {15, 0, 0}, + {16, 0, 0}, + {17, 2, 0}, + {19, 0, 0}, }; /* 80962534-80962564 00011C 0030+00 1/1 0/0 0/0 .data l_btpGetParamList */ -SECTION_DATA static u8 l_btpGetParamList[48] = { - 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static daNpc_GetParam2 l_btpGetParamList[4] = { + {38,2,0}, + {41,0,0}, + {40,0,0}, + {39,0,0}, }; /* 80962564-80962594 00014C 0030+00 1/2 0/0 0/0 .data l_btkGetParamList */ -SECTION_DATA static u8 l_btkGetParamList[48] = { - 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static daNpc_GetParam2 l_btkGetParamList[4] = { + {32,2,0}, + {34,0,0}, + {33,0,0}, + {35,0,0}, + }; /* 80962594-80962598 -00001 0004+00 6/8 0/0 0/0 .data l_arcNames */ -SECTION_DATA static void* l_arcNames = (void*)&d_a_npc_ashB__stringBase0; +static char* l_arcNames[1] = { + "AshB", +}; /* 80962598-809625A0 -00001 0008+00 0/1 0/0 0/0 .data l_evtNames */ -#pragma push -#pragma force_active on -SECTION_DATA static void* l_evtNames[2] = { - (void*)NULL, - (void*)(((char*)&d_a_npc_ashB__stringBase0) + 0x5), +static char* l_evtNames[2] = { + "ASHB_APPEAR", + "NO_RESPONSE", }; -#pragma pop /* 809625A0-809625A4 -00001 0004+00 0/2 0/0 0/0 .data l_myName */ -#pragma push -#pragma force_active on -SECTION_DATA static void* l_myName = (void*)&d_a_npc_ashB__stringBase0; -#pragma pop - -/* 809625A4-809625B0 -00001 000C+00 1/1 0/0 0/0 .data @3811 */ -SECTION_DATA static void* lit_3811[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)EvCut_Appear__11daNpcAshB_cFi, -}; +static char* l_myName = "AshB"; /* 809625B0-809625C8 000198 0018+00 1/2 0/0 0/0 .data mEvtSeqList__11daNpcAshB_c */ -SECTION_DATA u8 daNpcAshB_c::mEvtSeqList[24] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +daNpcAshB_c::EventFn daNpcAshB_c::mEvtSeqList[2] = { + NULL, + &EvCut_Appear }; -/* 809625C8-809625E4 -00001 001C+00 1/1 0/0 0/0 .data @4423 */ -SECTION_DATA static void* lit_4423[7] = { - (void*)(((char*)setExpressionAnm__11daNpcAshB_cFib) + 0xB4), - (void*)(((char*)setExpressionAnm__11daNpcAshB_cFib) + 0xD0), - (void*)(((char*)setExpressionAnm__11daNpcAshB_cFib) + 0xEC), - (void*)(((char*)setExpressionAnm__11daNpcAshB_cFib) + 0x108), - (void*)(((char*)setExpressionAnm__11daNpcAshB_cFib) + 0x124), - (void*)(((char*)setExpressionAnm__11daNpcAshB_cFib) + 0x140), - (void*)(((char*)setExpressionAnm__11daNpcAshB_cFib) + 0x15C), +/* 8095DE4C-8095DFD0 0000EC 0184+00 1/1 0/0 0/0 .text __ct__11daNpcAshB_cFv */ +daNpcAshB_c::daNpcAshB_c() { + // NONMATCHING +} + +/* 8095E060-8095E224 000300 01C4+00 1/0 0/0 0/0 .text __dt__11daNpcAshB_cFv */ +daNpcAshB_c::~daNpcAshB_c() { + for (int i = 0; i < 1; i++) { + dComIfG_resDelete(&mPhase[i], l_arcNames[i]); + } + + if (heap != NULL) { + mpMorf->stopZelAnime(); + } +} + +/* ############################################################################################## */ +/* 809620E4-80962154 000000 0070+00 11/11 0/0 0/0 .rodata m__17daNpcAshB_Param_c */ +daNpcAshB_Param_c::param const daNpcAshB_Param_c::m = { + 205.0f, + -3.0f, + 1.0f, + 400.0f, + 255.0f, + 200.0f, + 35.0f, + 30.0f, + 0.0f, + 0.0f, + 15.0f, + -15.0f, + 20.0f, + 0.0f, + 20.0f, + -20.0f, + 0.8f, + 12.0f, + 3, + 6, + 5, + 6, + 80.0f, + 500.0f, + 300.0f, + -300.0f, + 60, + 8, + 0, + 0, + 0, + false, + 400.0f, }; -/* 809625E4-809625F0 -00001 000C+00 1/1 0/0 0/0 .data @4500 */ -SECTION_DATA static void* lit_4500[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__11daNpcAshB_cFPv, -}; +/* 8095E224-8095E4A0 0004C4 027C+00 1/1 0/0 0/0 .text Create__11daNpcAshB_cFv */ +cPhs__Step daNpcAshB_c::Create() { + cPhs__Step step; -/* 809625F0-809625FC -00001 000C+00 0/1 0/0 0/0 .data @4674 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4674[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__11daNpcAshB_cFPv, -}; -#pragma pop + fopAcM_SetupActor(this, daNpcAshB_c); -/* 809625FC-80962608 -00001 000C+00 0/1 0/0 0/0 .data @4678 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4678[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)talk__11daNpcAshB_cFPv, -}; -#pragma pop + if (!daNpcF_chkEvtBit(0x169) || daNpcF_chkEvtBit(0x14f)) { + return cPhs_ERROR_e; + } else { + mFlowID = getMessageNo(); + step = cPhs_ERROR_e; -/* 80962608-80962614 -00001 000C+00 0/1 0/0 0/0 .data @4683 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4683[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)demo__11daNpcAshB_cFPv, -}; -#pragma pop + for (int i = 0; i < 1; i++) { + step = (cPhs__Step)dComIfG_resLoad(&mPhase[i], l_arcNames[i]); + if (step != cPhs_COMPLEATE_e) { + return step; + } + } -/* 80962614-80962620 -00001 000C+00 1/1 0/0 0/0 .data @4874 */ -SECTION_DATA static void* lit_4874[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__11daNpcAshB_cFPv, -}; + if (step == cPhs_COMPLEATE_e) { + if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0x58b0)) { + return cPhs_ERROR_e; + } else { + J3DModelData* model_data = mpMorf->getModel()->getModelData(); + fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx()); + fopAcM_setCullSizeBox(this, -100.0f, -50.0f, -100.0f, 100.0f, 220.0f, 100.0f); + mCreatureSound.init(¤t.pos, &eyePos, 3, 1); + mAcchCir.SetWall(daNpcAshB_Param_c::m.mWallR,daNpcAshB_Param_c::m.mWallH); + 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)); + mAcch.SetRoofNone(); + mAcch.SetWaterNone(); + mAcch.CrrPos(dComIfG_Bgsp()); + mCcStts.Init((int)daNpcAshB_Param_c::m.mCcWeight, 0, this); + mCyl.Set(daNpcF_c::mCcDCyl); + mCyl.SetStts(&mCcStts); + mCyl.SetTgType(0); + mCyl.SetTgSPrm(0); + mGndChk = mAcch.m_gnd; + mGroundH = mAcch.GetGroundH(); + setEnvTevColor(); + setRoomNo(); + mpMorf->modelCalc(); + reset(); + Execute(); + } + } + } -/* 80962620-8096262C -00001 000C+00 1/1 0/0 0/0 .data @4877 */ -SECTION_DATA static void* lit_4877[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__11daNpcAshB_cFPv, -}; + return step; +} -/* 8096262C-80962638 -00001 000C+00 0/1 0/0 0/0 .data @4962 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4962[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait__11daNpcAshB_cFPv, -}; -#pragma pop +/* 8095E4A0-8095E758 000740 02B8+00 1/1 0/0 0/0 .text CreateHeap__11daNpcAshB_cFv */ +BOOL daNpcAshB_c::CreateHeap() { + J3DModelData* modelData = static_cast(dComIfG_getObjectRes(l_arcNames[0], 28)); + mpMorf = new mDoExt_McaMorfSO(modelData, NULL, NULL, NULL, -1, 1.0f, 0, -1, + &mCreatureSound, 0x80000, 0x11020284); + if (mpMorf != NULL && mpMorf->mpModel == NULL) { + mpMorf->stopZelAnime(); + mpMorf = NULL; + } + if (mpMorf == NULL) { + return false; + } -/* 80962638-8096265C -00001 0024+00 1/1 0/0 0/0 .data @5084 */ -SECTION_DATA static void* lit_5084[9] = { - (void*)(((char*)EvCut_Appear__11daNpcAshB_cFi) + 0x194), - (void*)(((char*)EvCut_Appear__11daNpcAshB_cFi) + 0x194), - (void*)(((char*)EvCut_Appear__11daNpcAshB_cFi) + 0x19C), - (void*)(((char*)EvCut_Appear__11daNpcAshB_cFi) + 0x33C), - (void*)(((char*)EvCut_Appear__11daNpcAshB_cFi) + 0x360), - (void*)(((char*)EvCut_Appear__11daNpcAshB_cFi) + 0x33C), - (void*)(((char*)EvCut_Appear__11daNpcAshB_cFi) + 0x33C), - (void*)(((char*)EvCut_Appear__11daNpcAshB_cFi) + 0x3FC), - (void*)(((char*)EvCut_Appear__11daNpcAshB_cFi) + 0x33C), -}; + J3DModel* model = mpMorf->getModel(); + for (u16 jointNo = 0; jointNo < modelData->getJointNum(); jointNo++) { + modelData->getJointNodePointer(jointNo)->setCallBack(ctrlJointCallBack); + } + model->setUserArea((u32)this); -/* 8096265C-80962680 -00001 0024+00 1/1 0/0 0/0 .data @5083 */ -SECTION_DATA static void* lit_5083[9] = { - (void*)(((char*)EvCut_Appear__11daNpcAshB_cFi) + 0x168), - (void*)(((char*)EvCut_Appear__11daNpcAshB_cFi) + 0x7C), - (void*)(((char*)EvCut_Appear__11daNpcAshB_cFi) + 0x94), - (void*)(((char*)EvCut_Appear__11daNpcAshB_cFi) + 0xB4), - (void*)(((char*)EvCut_Appear__11daNpcAshB_cFi) + 0xC8), - (void*)(((char*)EvCut_Appear__11daNpcAshB_cFi) + 0xB4), - (void*)(((char*)EvCut_Appear__11daNpcAshB_cFi) + 0xB4), - (void*)(((char*)EvCut_Appear__11daNpcAshB_cFi) + 0x110), - (void*)(((char*)EvCut_Appear__11daNpcAshB_cFi) + 0xB4), -}; + mpMatAnm = new daNpcF_MatAnm_c(); + if (mpMatAnm == NULL) { + return false; + } else { + mpModel = mDoExt_J3DModel__create(static_cast(dComIfG_getObjectRes(l_arcNames[0], 29)),0x80000,0x11000084); + if (mpModel == NULL) { + return false; + } else { + if (!setExpressionAnm(ANM_F_TALK_A, false)) { + return false; + } + setMotionAnm(ANM_F_EXPLAIN_B, 0.0f); + } + } + + return true; +} + +/* 8095E914-8095E948 000BB4 0034+00 1/1 0/0 0/0 .text Delete__11daNpcAshB_cFv */ +int daNpcAshB_c::Delete() { + this->~daNpcAshB_c(); + return 1; +} + +/* 8095E948-8095E96C 000BE8 0024+00 2/2 0/0 0/0 .text Execute__11daNpcAshB_cFv */ +int daNpcAshB_c::Execute() { + execute(); + return 1; +} + +/* 8095E96C-8095E9C8 000C0C 005C+00 1/1 0/0 0/0 .text Draw__11daNpcAshB_cFv */ +int daNpcAshB_c::Draw() { + mpMorf->getModel()->getModelData()->getMaterialNodePointer(2)->setMaterialAnm(mpMatAnm); + draw(false, false, daNpcAshB_Param_c::m.mShadowDepth, NULL, false); + return 1; +} + +/* 8095E9C8-8095EB94 000C68 01CC+00 1/1 0/0 0/0 .text + * ctrlJoint__11daNpcAshB_cFP8J3DJointP8J3DModel */ +bool daNpcAshB_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) { + int jointNo = i_joint->getJntNo(); + int lookatJoints[3] = {1, 3, 4}; + + if (jointNo == 0) { + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(1)); + mDoMtx_stack_c::multVecZero(&mLookatPos[0]); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(9)); + mDoMtx_stack_c::multVecZero(&mLookatPos[1]); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(10)); + mDoMtx_stack_c::multVecZero(&mLookatPos[2]); + } + + mDoMtx_stack_c::copy(i_model->getAnmMtx(jointNo)); + switch (jointNo) { + case 1: + case 9: + case 10: + setLookatMtx(jointNo, lookatJoints, daNpcAshB_Param_c::m.mNeckAngleScl); + break; + } + + i_model->setAnmMtx(jointNo, mDoMtx_stack_c::get()); + cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); + + if ((jointNo == 10 || jointNo == 19) && (mAnmFlags & ANM_PLAY_BCK)) { + J3DAnmTransform* bckAnm = mBckAnm.getBckAnm(); + mBckAnm.changeBckOnly(mpMorf->getAnm()); + mpMorf->changeAnm(bckAnm); + } + + return true; +} + +/* 8095EB94-8095EBB4 000E34 0020+00 1/1 0/0 0/0 .text + * createHeapCallBack__11daNpcAshB_cFP10fopAc_ac_c */ +BOOL daNpcAshB_c::createHeapCallBack(fopAc_ac_c* i_this) { + return static_cast(i_this)->CreateHeap(); +} + +/* 8095EBB4-8095EC00 000E54 004C+00 1/1 0/0 0/0 .text ctrlJointCallBack__11daNpcAshB_cFP8J3DJointi + */ +BOOL daNpcAshB_c::ctrlJointCallBack(J3DJoint* i_joint, int param_1) { + if (param_1 == 0) { + J3DModel* model = j3dSys.getModel(); + daNpcAshB_c* _this = (daNpcAshB_c*)model->getUserArea(); + if (_this != NULL) { + _this->ctrlJoint(i_joint, model); + } + } + return 1; +} + +inline void daNpcAshB_c::setLookMode(int i_lookMode) { + if (i_lookMode != mLookMode) { + mLookMode = i_lookMode; + } +} + +inline BOOL daNpcAshB_c::chkFindPlayer() { + BOOL ret; + if (!chkActorInSight(daPy_getPlayerActorClass(), daNpcAshB_Param_c::m.mAttnFovY)) { + mActorMngr[0].remove(); + ret = false; + } else { + if (mActorMngr[0].getActorP() == NULL) { + ret = chkPlayerInSpeakArea(this); + } else { + ret = chkPlayerInTalkArea(this); + } + if (ret) { + mActorMngr[0].entry(daPy_getPlayerActorClass()); + } else { + mActorMngr[0].remove(); + } + } + return ret; +} + +inline void daNpcAshB_c::playExpression() { + daNpcF_anmPlayData dat0 = {ANM_F_TALK_A, daNpcAshB_Param_c::m.mMorfFrames, 0}; + daNpcF_anmPlayData* pDat0[1] = {&dat0}; + daNpcF_anmPlayData dat1 = {ANM_F_TALK_B, daNpcAshB_Param_c::m.mMorfFrames, 0}; + daNpcF_anmPlayData* pDat1[1] = {&dat1}; + daNpcF_anmPlayData dat2 = {ANM_F_SILENT, 0.0f, 0}; + daNpcF_anmPlayData* pDat2[1] = {&dat2}; + daNpcF_anmPlayData dat3 = {ANM_F_COOL, daNpcAshB_Param_c::m.mMorfFrames, 0}; + daNpcF_anmPlayData* pDat3[1] = {&dat3}; + daNpcF_anmPlayData dat4 = {ANM_F_ASK, daNpcAshB_Param_c::m.mMorfFrames, 0}; + daNpcF_anmPlayData* pDat4[1] = {&dat4}; + daNpcF_anmPlayData dat5 = {ANM_F_EXPLAIN_A, daNpcAshB_Param_c::m.mMorfFrames, 0}; + daNpcF_anmPlayData* pDat5[1] = {&dat5}; + daNpcF_anmPlayData dat6 = {ANM_NONE, daNpcAshB_Param_c::m.mMorfFrames, 0}; + daNpcF_anmPlayData* pDat6[1] = {&dat6}; + + daNpcF_anmPlayData** ppDat[7] = { + pDat0, + pDat1, + pDat2, + pDat3, + pDat4, + pDat5, + pDat6, + }; + if (mExpression >= 0 && mExpression < 7) { + playExpressionAnm(ppDat); + } +} + +bool daNpcAshB_c::step(s16 i_targetAngle, int param_2, f32 i_rate) { + if (mTurnMode == 0) { + if (param_2 != 0) { + if ((int)fabsf(cM_sht2d((s16)(i_targetAngle - mCurAngle.y))) > 40) { + setExpression(6, -1.0f); + setMotion(10, -1.0f, 0); + } + + mTurnTargetAngle = i_targetAngle; + mTurnAmount = 0; + + if (mCurAngle.y == mTurnTargetAngle) { + mTurnMode++; + } + + current.angle.y = mCurAngle.y; + shape_angle.y = current.angle.y; + mTurnMode++; + } + } else if (mTurnMode == 1) { + if (turn(mTurnTargetAngle, i_rate, 0)) { + shape_angle.y = current.angle.y; + mCurAngle.y = current.angle.y; + mOldAngle.y = current.angle.y; + mTurnMode++; + } else { + shape_angle.y = current.angle.y; + mCurAngle.y = current.angle.y; + } + } + + return mTurnMode > 1; +} + +/* 8095EC00-8095EE00 000EA0 0200+00 2/0 0/0 0/0 .text setExpressionAnm__11daNpcAshB_cFib + */ +bool daNpcAshB_c::setExpressionAnm(int i_idx, bool i_modify) { + if (i_idx < 0 || i_idx > 6) { + return false; + } + mAnmFlags &= ~ANM_EXPRESSION_FLAGS; + + J3DAnmTransform* bckAnm; + if (l_bckGetParamList[i_idx].fileIdx >= 0) { + bckAnm = getTrnsfrmKeyAnmP(l_arcNames[l_bckGetParamList[i_idx].arcIdx], + l_bckGetParamList[i_idx].fileIdx); + } else { + bckAnm = NULL; + } + + s32 attr = l_bckGetParamList[i_idx].attr; + bool res = false; + switch (i_idx) { + case ANM_NONE: + res = setExpressionBtp(0); + break; + case ANM_F_TALK_A: + res = setExpressionBtp(0); + break; + case ANM_F_TALK_B: + res = setExpressionBtp(0); + break; + case ANM_F_SILENT: + res = setExpressionBtp(2); + break; + case ANM_F_COOL: + res = setExpressionBtp(3); + break; + case ANM_F_ASK: + res = setExpressionBtp(0); + break; + case ANM_F_EXPLAIN_A: + res = setExpressionBtp(0); + break; + default: + bckAnm = NULL; + break; + } + + if (!res) { + return false; + } + + if (bckAnm == NULL) { + return true; + } + + if (setBckAnm(bckAnm, 1.0f, attr, 0, -1, i_modify)) { + mAnmFlags |= ANM_PAUSE_BCK | ANM_PLAY_BCK; + mExpressionLoops = 0; + return true; + } + + return false; +} + +/* 8095EE00-8095EEE0 0010A0 00E0+00 1/0 0/0 0/0 .text setExpressionBtp__11daNpcAshB_cFi + */ +bool daNpcAshB_c::setExpressionBtp(int i_idx) { + J3DAnmTexPattern* btpAnm = getTexPtrnAnmP(l_arcNames[l_btpGetParamList[i_idx].arcIdx], + l_btpGetParamList[i_idx].fileIdx); + s32 attr = l_btpGetParamList[i_idx].attr; + mAnmFlags &= ~(ANM_PAUSE_BTP | ANM_PLAY_BTP | ANM_FLAG_800); + if (btpAnm == NULL) { + return true; + } + if (setBtpAnm(btpAnm, mpMorf->getModel()->getModelData(), 1.0f, attr)) { + mAnmFlags |= ANM_PAUSE_BTP | ANM_PLAY_BTP; + if (i_idx == 0) { + mAnmFlags |= ANM_FLAG_800; + } + return true; + } + return false; +} + +/* 8095EEE0-8095F0A4 001180 01C4+00 1/0 0/0 0/0 .text setMotionAnm__11daNpcAshB_cFif */ +// NONMATCHING regalloc +bool daNpcAshB_c::setMotionAnm(int i_idx, f32 i_morf) { + int iVar4; + int iVar5; + + if (i_idx < 7 || i_idx >= 21) { + return; + } + + iVar5 = 0; + switch (i_idx) { + case 0x10: + iVar5 = 1; + break; + case 0x12: + iVar5 = 2; + break; + case 0x14: + iVar5 = 3; + break; + } + + J3DAnmTransformKey* morfAnm = getTrnsfrmKeyAnmP(l_arcNames[l_bckGetParamList[i_idx].arcIdx], + l_bckGetParamList[i_idx].fileIdx); + J3DAnmTextureSRTKey* btkAnm = getTexSRTKeyAnmP(l_arcNames[l_btkGetParamList[iVar5].arcIdx], + l_btkGetParamList[iVar5].fileIdx); + iVar5 = l_bckGetParamList[i_idx].attr; + iVar4 = l_btkGetParamList[i_idx].attr; + + + mAnmFlags &= 0xffffffc0; + if (i_idx == 12) { + setExpressionBtp(1); + } + + if (morfAnm && setMcaMorfAnm(morfAnm,1.0f,i_morf,iVar5,0,-1)) { + mAnmFlags |= 9; + mMotionLoops = 0; + } + + if (btkAnm && setBtkAnm(btkAnm,mpMorf->getModel()->getModelData(),1.0,iVar4)) { + mAnmFlags |= 0x12; + } +} + +/* 8095F0A4-8095F21C 001344 0178+00 1/1 0/0 0/0 .text reset__11daNpcAshB_cFv */ +void daNpcAshB_c::reset() { + initialize(); + mpMatAnm->initialize(); + mLookat.initialize(); + + for (int i = 0; i < 1; i++) { + mActorMngr[i].initialize(); + } + + field_0xddc = 0; + field_0xde0 = 0; + + + mpActionFn = NULL; + mLookMode = -1; + mMode = 0; + current.pos = home.pos; + old.pos = current.pos; + current.angle.set(0, home.angle.y, 0); + old.angle = current.angle; + shape_angle = current.angle; + mCurAngle = current.angle; + mOldAngle = mCurAngle; + speedF = 0.0f; + speed.setall(0.0f); + mItemPartnerId = -1; + mOrderEvtNo = 0; + mExpressionMorfOverride = 0; + mMotionMorfOverride = 0; + field_0xded = 0; + field_0xdee = 0; + + setAction(&wait); +} + +/* 8095F21C-8095F2C4 0014BC 00A8+00 1/1 0/0 0/0 .text + * setAction__11daNpcAshB_cFM11daNpcAshB_cFPCvPvPv_b */ +bool daNpcAshB_c::setAction(daNpcAshB_c::ActionFn i_actionFn) { + mMode = 3; + if (mpActionFn != NULL) { + (this->*mpActionFn)(NULL); + } + mMode = 0; + this->mpActionFn = i_actionFn; + if (mpActionFn != NULL) { + (this->*mpActionFn)(NULL); + } + return true; +} + +/* 8095F2C4-8095FC70 001564 09AC+00 4/0 0/0 0/0 .text wait__11daNpcAshB_cFPv */ +// NONMATCHING - float literals, regalloc, wrong variable order loads. the shitty trifecta +bool daNpcAshB_c::wait(void* param_0) { + switch (mMode) { + case 0: + setExpression(EXPR_EXPLAIN_B, -1.0f); + setMotion(MOT_WAIT_A, -1.0f, false); + field_0xdea = mCurAngle.y; + mTurnMode = 0; + speedF = 0.0f; + mMode = 2; + break; + case 2: + if (field_0xdee != 0) { + setLookMode(LOOK_PLAYER); + + if (field_0xdea == mCurAngle.y) { + s16 res = cM_deg2s(daNpcAshB_Param_c::m.mBodyLeftAngle + daNpcAshB_Param_c::m.mHeadLeftAngle); + + if (fopAcM_seenPlayerAngleY(this) > res) { + field_0xdea = fopAcM_searchPlayerAngleY(this); + } + } else { + if (step(mCurAngle.y,1,15.0f)) { + setExpression(EXPR_EXPLAIN_B, -1.0f); + setMotion(MOT_WAIT_A, -1.0f, false); + mTurnMode = 0; + } + } + + if (fopAcM_searchPlayerDistanceXZ(this) > daNpcAshB_Param_c::m.field_0x6c) { + field_0xdee = 0; + } + + } else { + if (mActorMngr[0].getActorP()) { + if (!chkFindPlayer()) + mTurnMode = 0; + } else { + if (chkFindPlayer()) + mTurnMode = 0; + } + + if (mActorMngr[0].getActorP()) { + setLookMode(LOOK_PLAYER); + + } else { + setLookMode(LOOK_NONE); + + // loading these in the other order results in correct order load, wrong registers + // loading it in this order results in wrong order load, correct registers + s16 home_angle = home.angle.y; + s16 cur_angle = mCurAngle.y; + + if (cur_angle != home_angle) { + if (step(mCurAngle.y,1,15.0f)) { + setExpression(EXPR_EXPLAIN_B, -1.0f); + setMotion(MOT_WAIT_A, -1.0f, false); + mTurnMode = 0; + } + } + } + } + + if (!daNpcF_chkEvtBit(0x14f) && field_0xded == 0 && !daPy_py_c::i_checkNowWolf()) { + f32 res = pow(600.0f, 2.0f); + if (fopAcM_searchPlayerDistanceXZ2(this) <= res) { + daNpcF_offTmpBit(0xb); + daNpcF_offTmpBit(0xc); + daNpcF_offTmpBit(0xd); + mOrderEvtNo = 1; + } + } + + if (dComIfGp_event_runCheck() != false) { + if (eventInfo.checkCommandTalk()) { + if (dComIfGp_event_chkTalkXY()) { + if (!dComIfGp_evmng_ChkPresentEnd()) { + return true; + } else { + if (dComIfGp_event_getPreItemNo() == 0x91) { + mFlowID = 504; + setAction(&wait); + } else { + s16 evt_idx = dComIfGp_getEventManager().getEventIdx(this,"NO_RESPONSE",0xff); + dComIfGp_getEvent().reset(this); + fopAcM_orderChangeEventId(this, evt_idx, 1, -1); + + } + } + + } else { + setAction(&wait); + } + } else { + if (dComIfGp_getEventManager().getMyStaffId(l_myName, NULL, 0) != -1) { + setAction(&wait); + } + } + } else { + if (mOrderEvtNo != 0) { + eventInfo.setArchiveName(l_arcNames[0]); + } + + orderEvent(field_0xdec,l_evtNames[mOrderEvtNo*1],-1, 40, -1, 1); + + if (daNpcF_chkEvtBit(0x14f)) { + eventInfo.i_onCondition(0x20); + } + + } + break; + case 3: + break; + } + + return true; +} + +/* 8095FC70-8095FD34 001F10 00C4+00 1/0 0/0 0/0 .text setMotion__11daNpcAshB_cFifi */ +void daNpcAshB_c::setMotion(int i_motion, f32 i_morf, BOOL i_restart) { + s16 motion = (s16)i_motion; + + switch (motion) { + case 0: + if (field_0xded != 0) + motion = 1; + break; + case 1: + if (field_0xded == 0) + motion = 0; + break; + case 10: + if (field_0xded == 0) + motion = 11; + break; + case 11: + if (field_0xded != 0) + motion = 10; + break; + + } + + if (i_restart || mMotion != motion) { + if (i_motion >= 0 && i_motion < 12) { + mMotion = motion; + mMotionMorfOverride = i_morf; + mMotionPrevPhase = -1; + mMotionPhase = 0; + } + } +} + +/* 8095FD34-8095FD9C 001FD4 0068+00 1/0 0/0 0/0 .text setExpression__11daNpcAshB_cFif */ +void daNpcAshB_c::setExpression(int i_expression, f32 i_morf) { + switch (i_expression) { + case 0: + if (field_0xded != 0) + i_expression = 1; + break; + case 1: + if (field_0xded == 0) + i_expression = 0; + break; + } + + if (i_expression >= 0 && i_expression < 7) { + mExpression = i_expression; + mExpressionMorfOverride = i_morf; + mExpressionPrevPhase = -1; + mExpressionPhase = 0; + } +} +/* 8095FD9C-809602E0 00203C 0544+00 2/0 0/0 0/0 .text talk__11daNpcAshB_cFPv */ +// NONMATCHING float literals +bool daNpcAshB_c::talk(void* param_0) { + bool ret = false; + + switch (mMode) { + case 0: + initTalk(mFlowID, NULL); + mTurnMode = 0; + mMsgTimer = 0; + field_0xdec = 0; + field_0xdee = 1; + speedF = 0.0f; + setLookMode(LOOK_PLAYER_TALK); + mMode = 2; + break; + case 2: + if (mCurAngle.y == fopAcM_searchPlayerAngleY(this)) { + if (talkProc(NULL, 1, NULL)) { + mActorMngr[0].entry(daPy_getPlayerActorClass()); + int evt_id = 0; + if (mFlow.getEventId(&evt_id) == 1) { + mItemPartnerId = fopAcM_createItemForPresentDemo(¤t.pos,evt_id,0,-1,-1,0,0); + if (mItemPartnerId != 0xffffffff) { + s16 evt_idx = dComIfGp_getEventManager().getEventIdx(this, "DEFAULT_GETITEM", 0xff); + dComIfGp_getEvent().reset(this); + fopAcM_orderChangeEventId(this, evt_idx, 1, -1); + field_0x9ec = 1; + setAction(&wait); + } + } else { + setAction(&wait); + } + + ret = true; + } else { + s32 prev_msg_timer = mMsgTimer; + int expression, motion; + if (ctrlMsgAnm(expression, motion, this, 0)) { + setExpression(expression, -1.0f); + setMotion(motion, -1.0f, false); + } else { + if (prev_msg_timer != 0 && mMsgTimer == 0 && mExpression != 2) { + setExpressionTalkAfter(); + } + } + } + } else { + s16 angle = fopAcM_searchPlayerAngleY(this); + + if (step(angle,1,15.0)) { + setMotion(0,0.0f,false); + mTurnMode = 0; + } + } + + if (ret) { + mFlowID = getMessageNo(); + } + break; + case 3: + setExpression(EXPR_EXPLAIN_B, -1.0f); + if (!field_0x9ec) { + dComIfGp_event_reset(); + } + + field_0x9ec = false; + break; + } + + return ret; +} + +/* 809602E0-809604C8 002580 01E8+00 1/0 0/0 0/0 .text demo__11daNpcAshB_cFPv */ +// NONMATCHING - extra instruction at dComIfGp_event_runCheck() causing regalloc issues? +bool daNpcAshB_c::demo(void* param_0) { + dEvent_manager_c& eventManager = dComIfGp_getEventManager(); + + switch (mMode) { + case 0: + setExpression(EXPR_EXPLAIN_B, -1.0f); + setMotion(MOT_WAIT_A, -1.0f, false); + mMode = 2; + // fallthrough + + case 2: + if (dComIfGp_event_runCheck()) { + if (!eventInfo.checkCommandTalk()) { + s32 staff_id = eventManager.getMyStaffId(l_myName, NULL, 0); + if (staff_id != -1) { + mStaffID = staff_id; + if ((this->*(mEvtSeqList[mOrderEvtNo]))(staff_id)) { + eventManager.cutEnd(staff_id); + } + } + + if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1 && eventManager.endCheck(mEventIdx)) { + dComIfGp_event_reset(); + mOrderEvtNo = 0; + mEventIdx = -1; + setAction(&wait); + } + } + } + + break; + + case 3: + break; + } + + return true; +} + +/* 809604C8-809609A8 002768 04E0+00 3/0 0/0 0/0 .text EvCut_Appear__11daNpcAshB_cFi */ +// NONMATCHING literals +BOOL daNpcAshB_c::EvCut_Appear(int i_staffID) { + int local_30[2]; + dEvent_manager_c& evtMgr = dComIfGp_getEventManager(); + int* cut_name = (int*)evtMgr.getMyNowCutName(i_staffID); + + if (evtMgr.getIsAddvance(i_staffID)) { + switch (*cut_name) { + // '0001', '0003', etc. wouldn't match? + case 0x30303031: + setLookMode(LOOK_ACTOR); + break; + case 0x30303033: + setLookMode(LOOK_PLAYER); + mTurnMode = 0; + break; + case 0x30303034: + case 0x30303036: + case 0x30303037: + case 0x30303039: + initTalk(mFlowID, NULL); + break; + case 0x30303035: + setExpression(6,6.0f); + setMotion(2, 2.0f, false); + mMsgTimer = 0; + break; + case 0x30303038: + local_30[0] = 0; + if (mFlow.getEventId(local_30) == 1) { + mItemPartnerId = fopAcM_createItemForPresentDemo(¤t.pos,local_30[0], 0, -1, -1, 0, 0); + dComIfGp_event_setItemPartnerId(mItemPartnerId); + mItemPartnerId = -1; + } + break; + } + } + + switch (*cut_name) { + case 0x30303031: + case 0x30303032: + return TRUE; + case 0x30303033: + if (step(fopAcM_searchPlayerAngleY(this), 1, 20.0f) != 0) { + setLookMode(2); + setMotion(0, -1.0f, 0); + mTurnMode = 0; + return TRUE; + } + break; + case 0x30303034: + case 0x30303036: + case 0x30303037: + case 0x30303039: + if (talkProc(NULL, TRUE, NULL)) { + return TRUE; + } + break; + case 0x30303035: + if (mMotionPhase > 1) { + mpMorf->getModel()->getModelData()->getMaterialNodePointer(4)->getShape()->hide(); + return TRUE; + } + + if (mMotionPhase == 1) { + setExpression(6,0.0f); + f32 subtract = mpMorf->getEndFrame() - 1.0f; + if (mpMorf->getFrame() > subtract) { + field_0xded = 1; + } + } + break; + case 0x30303038: + field_0x9eb = true; + return TRUE; + } + + int timer = mMsgTimer; + int expression; + int motion; + + if (ctrlMsgAnm(expression, motion, this, FALSE) != 0) { + if (!field_0x9eb) { + setExpression(expression, -1.0f); + setMotion(motion, -1.0f, FALSE); + } + } else { + if (timer != 0 && mMsgTimer == 0 && !field_0x9eb && mExpression != 2) { + setExpressionTalkAfter(); + } + } + + return FALSE; +} + +/* 809609A8-809609C8 002C48 0020+00 1/0 0/0 0/0 .text daNpcAshB_Create__FPv */ +static cPhs__Step daNpcAshB_Create(void* i_this) { + return static_cast(i_this)->Create(); +} + +/* 809609C8-809609E8 002C68 0020+00 1/0 0/0 0/0 .text daNpcAshB_Delete__FPv */ +static int daNpcAshB_Delete(void* i_this) { + return static_cast(i_this)->Delete(); +} + +/* 809609E8-80960A08 002C88 0020+00 1/0 0/0 0/0 .text daNpcAshB_Execute__FPv */ +static int daNpcAshB_Execute(void* i_this) { + return static_cast(i_this)->Execute(); +} + +/* 80960A08-80960A28 002CA8 0020+00 1/0 0/0 0/0 .text daNpcAshB_Draw__FPv */ +static int daNpcAshB_Draw(void* i_this) { + return static_cast(i_this)->Draw(); +} + +/* 80960A28-80960A30 002CC8 0008+00 1/0 0/0 0/0 .text daNpcAshB_IsDelete__FPv */ +static bool daNpcAshB_IsDelete(void* param_0) { + return true; +} + +/* 80960A60-80960AE8 002D00 0088+00 1/0 0/0 0/0 .text setParam__11daNpcAshB_cFv */ +void daNpcAshB_c::setParam() { + attention_info.flags = daPy_py_c::i_checkNowWolf() ? 0 : 10; + attention_info.distances[0] = getDistTableIdx(daNpcAshB_Param_c::m.mTalkDistIdx,daNpcAshB_Param_c::m.mTalkAngleIdx); + attention_info.distances[1] = attention_info.distances[0]; + attention_info.distances[3] = getDistTableIdx(daNpcAshB_Param_c::m.mSpeakDistIdx,daNpcAshB_Param_c::m.mSpeakAngleIdx); +} + +/* 80960AE8-80960D64 002D88 027C+00 1/0 0/0 0/0 .text main__11daNpcAshB_cFv */ +BOOL daNpcAshB_c::main() { + if (mpActionFn != NULL) + (this->*mpActionFn)(NULL); + + if (mItemPartnerId != -1 && dComIfGp_event_runCheck() != 0 && !strcmp(dComIfGp_getEventManager().getRunEventName(), "DEFAULT_GETITEM")) { + dComIfGp_event_setItemPartnerId(mItemPartnerId); + mItemPartnerId = -1; + } + + playExpression(); + playMotion(); + return true; +} + +/* 80960D64-80961188 003004 0424+00 1/1 0/0 0/0 .text playMotion__11daNpcAshB_cFv */ +// NONMATCHING - no clue +void daNpcAshB_c::playMotion() { + daNpcF_anmPlayData dat0 = {7, daNpcAshB_Param_c::m.mMorfFrames, 0}; + daNpcF_anmPlayData* pDat0[1] = {&dat0}; + daNpcF_anmPlayData dat1 = {8, daNpcAshB_Param_c::m.mMorfFrames, 0}; + daNpcF_anmPlayData* pDat1[1] = {&dat1}; + daNpcF_anmPlayData dat2 = {0xc, daNpcAshB_Param_c::m.mMorfFrames, 1}; + daNpcF_anmPlayData* pDat2[1] = {&dat2}; + daNpcF_anmPlayData dat3a = {0xd, daNpcAshB_Param_c::m.mMorfFrames, 1}; + daNpcF_anmPlayData dat3b = {8, daNpcAshB_Param_c::m.mMorfFrames, 0}; + daNpcF_anmPlayData* pDat3[2] = {&dat3a, &dat3b}; + daNpcF_anmPlayData dat4a = {0xe, daNpcAshB_Param_c::m.mMorfFrames, 1}; + daNpcF_anmPlayData dat4b = {8, daNpcAshB_Param_c::m.mMorfFrames, 0}; + daNpcF_anmPlayData* pDat4[2] = {&dat4a, &dat4b}; + daNpcF_anmPlayData dat5a = {0xf, daNpcAshB_Param_c::m.mMorfFrames, 1}; + daNpcF_anmPlayData dat5b = {8, daNpcAshB_Param_c::m.mMorfFrames, 0}; + daNpcF_anmPlayData* pDat5[2] = {&dat5a, &dat5b}; + daNpcF_anmPlayData dat6a = {16, daNpcAshB_Param_c::m.mMorfFrames, 1}; + daNpcF_anmPlayData dat6b = {0x11, daNpcAshB_Param_c::m.mMorfFrames, 0}; + daNpcF_anmPlayData* pDat6[2] = {&dat6a, &dat6b}; + daNpcF_anmPlayData dat7 = {8, daNpcAshB_Param_c::m.mMorfFrames, 1}; + daNpcF_anmPlayData* pDat7[1] = {&dat7}; + daNpcF_anmPlayData dat8 = {0x12, daNpcAshB_Param_c::m.mMorfFrames, 0}; + daNpcF_anmPlayData* pDat8[1] = {&dat8}; + daNpcF_anmPlayData dat9 = {0x13, daNpcAshB_Param_c::m.mMorfFrames, 0}; + daNpcF_anmPlayData* pDat9[1] = {&dat9}; + daNpcF_anmPlayData dat10 = {0x13, daNpcAshB_Param_c::m.mMorfFrames, 1}; + daNpcF_anmPlayData* pDat10[1] = {&dat10}; + daNpcF_anmPlayData dat11 = {0x14, daNpcAshB_Param_c::m.mMorfFrames, 1}; + daNpcF_anmPlayData* pDat11[1] = {&dat11}; + // daNpcF_anmPlayData dat12 = {0x08, daNpcAshB_Param_c::m.mMorfFrames, 0}; + // daNpcF_anmPlayData* pDat12[1] = {&dat12}; + // daNpcF_anmPlayData dat13 = {0xa0, daNpcAshB_Param_c::m.mMorfFrames, 1}; + // daNpcF_anmPlayData* pDat13[1] = {&dat13}; + // daNpcF_anmPlayData dat14 = {0xb0, daNpcAshB_Param_c::m.mMorfFrames, 1}; + // daNpcF_anmPlayData* pDat14[1] = {&dat14}; + daNpcF_anmPlayData** ppDat[15] = { + pDat0, + pDat1, + pDat2, + pDat3, + pDat4, + pDat5, + pDat6, + pDat7, + pDat8, + pDat9, + pDat10, + pDat11, + // pDat12, + // pDat13, + // pDat14 + }; + if (mMotion >= 0 && mMotion < 12) { + playMotionAnm(ppDat); + } +} + +/* 80961188-80961264 003428 00DC+00 1/0 0/0 0/0 .text ctrlBtk__11daNpcAshB_cFv */ +// NONMATCHING inlining issues +BOOL daNpcAshB_c::ctrlBtk() { + if (mpMatAnm != NULL) { + J3DAnmTextureSRTKey* btkAnm = getTexSRTKeyAnmP(l_arcNames[l_btkGetParamList[0].arcIdx],l_btkGetParamList[0].fileIdx); + + if (btkAnm == mBtkAnm.getBtkAnm()) { + mpMatAnm->setNowOffsetX(cM_ssin(mEyeAngle.y) * 0.2f * -1.0f); + mpMatAnm->setNowOffsetY(cM_ssin(mEyeAngle.x) * 0.2f); + mpMatAnm->onEyeMoveFlag(); + return true; + } + mpMatAnm->offEyeMoveFlag(); + return false; + } +} + +/* 80961264-80961574 003504 0310+00 1/0 0/0 0/0 .text setAttnPos__11daNpcAshB_cFv */ +// float literals +void daNpcAshB_c::setAttnPos() { + if (mLookMode == 1) { + for (int i = 0; i < 3; i++) { + mLookatAngle[i].setall(0); + } + } + + setMtx(); + lookat(); + + cXyz vec(10.0f,10.0f,0.0f); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(10)); + mDoMtx_stack_c::multVecZero(&mHeadPos); + mDoMtx_stack_c::multVec(&vec, &eyePos); + vec.x = 0.0f; + mDoMtx_stack_c::multVec(&vec, &vec); + + + mHeadAngle.x = cLib_targetAngleX(&mHeadPos,&vec); + mHeadAngle.y = cLib_targetAngleY(&mHeadPos,&vec); + cXyz* attnPos = mLookat.getAttnPos(); + + if (attnPos != NULL) { + cXyz local_48 = *attnPos - eyePos; + mEyeAngle.y = -(mLookatAngle[2].y + mCurAngle.y); + mEyeAngle.y += cM_atan2s(local_48.x, local_48.z); + mEyeAngle.x = mHeadAngle.x - cM_atan2s(local_48.y, local_48.absXZ()); + // mEyeAngle.x += mHeadAngle.x; + } else { + mEyeAngle.y = 0; + mEyeAngle.x = 0; + } + + attention_info.position.set(current.pos.x, + current.pos.y + daNpcAshB_Param_c::m.mAttnOffsetY, + current.pos.z); + + mCyl.SetC(current.pos); + mCyl.SetH(daNpcAshB_Param_c::m.mCylH); + mCyl.SetR(daNpcAshB_Param_c::m.mWallR); + + dComIfG_Ccsp()->Set(&mCyl); +} + +/* 80961574-80961770 003814 01FC+00 1/1 0/0 0/0 .text lookat__11daNpcAshB_cFv */ +// NONMATCHING literal issues +void daNpcAshB_c::lookat() { + fopAc_ac_c* actor = NULL; + J3DModel* model = mpMorf->getModel(); + BOOL snap = false; + f32 body_down_angle = daNpcAshB_Param_c::m.mBodyDownAngle; + f32 body_up_angle = daNpcAshB_Param_c::m.mBodyUpAngle; + f32 body_right_angle = daNpcAshB_Param_c::m.mBodyRightAngle; + f32 body_left_angle = daNpcAshB_Param_c::m.mBodyLeftAngle; + f32 head_down_angle = daNpcAshB_Param_c::m.mHeadDownAngle; + f32 head_up_angle = daNpcAshB_Param_c::m.mHeadUpAngle; + f32 head_right_angle = daNpcAshB_Param_c::m.mHeadRightAngle; + f32 head_left_angle = daNpcAshB_Param_c::m.mHeadLeftAngle; + + s16 angle_delta = mCurAngle.y - mOldAngle.y; + + cXyz lookat_pos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]}; + csXyz* lookat_angle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]}; + + switch (mLookMode) { + case LOOK_NONE: + break; + case LOOK_RESET: + snap = true; + break; + case LOOK_PLAYER: + case LOOK_PLAYER_TALK: + actor = daPy_getPlayerActorClass(); + if (mLookMode != LOOK_PLAYER_TALK) { + break; + } + body_down_angle = 0.0f; + body_up_angle = 1.0f; + break; + case LOOK_ACTOR: + actor = daPy_getPlayerActorClass(); + head_up_angle = 0.0f; + head_right_angle = 0.0f; + break; + } + + if (actor != NULL) { + mLookPos = actor->attention_info.position; + if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK) { + mLookPos.y -= 40.0f; + } + mLookat.setAttnPos(&mLookPos); + } else { + mLookat.setAttnPos(NULL); + } + + mLookat.setParam(body_down_angle, body_up_angle, body_right_angle, body_left_angle, + 0.0f, 0.0f, 0.0f, 0.0f, + head_down_angle, head_up_angle, head_right_angle, head_left_angle, + mCurAngle.y, lookat_pos); + mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, snap, angle_delta, false); +} + +/* 80961770-809617F8 003A10 0088+00 1/0 0/0 0/0 .text drawOtherMdls__11daNpcAshB_cFv */ +void daNpcAshB_c::drawOtherMdls() { + if (field_0xded != 0) { + J3DModel* model = mpMorf->getModel(); + MtxP src = model->getAnmMtx(24); + mDoMtx_stack_c::copy(src); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + mDoExt_modelUpdateDL(mpModel); + } +} + +/* 809617F8-80961800 003A98 0008+00 1/0 0/0 0/0 .text drawDbgInfo__11daNpcAshB_cFv */ +BOOL daNpcAshB_c::drawDbgInfo() { + return false; +} /* 80962680-809626A0 -00001 0020+00 1/0 0/0 0/0 .data daNpcAshB_MethodTable */ static actor_method_class daNpcAshB_MethodTable = { - (process_method_func)daNpcAshB_Create__FPv, - (process_method_func)daNpcAshB_Delete__FPv, - (process_method_func)daNpcAshB_Execute__FPv, - (process_method_func)daNpcAshB_IsDelete__FPv, - (process_method_func)daNpcAshB_Draw__FPv, + (process_method_func)daNpcAshB_Create, + (process_method_func)daNpcAshB_Delete, + (process_method_func)daNpcAshB_Execute, + (process_method_func)daNpcAshB_IsDelete, + (process_method_func)daNpcAshB_Draw, }; /* 809626A0-809626D0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_ASHB */ @@ -441,1176 +1438,3 @@ extern actor_process_profile_definition g_profile_NPC_ASHB = { fopAc_NPC_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 809626D0-809626DC 0002B8 000C+00 2/2 0/0 0/0 .data __vt__11J3DTexNoAnm */ -SECTION_DATA extern void* __vt__11J3DTexNoAnm[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)calc__11J3DTexNoAnmCFPUs, -}; - -/* 809626DC-80962724 0002C4 0048+00 2/2 0/0 0/0 .data __vt__11daNpcAshB_c */ -SECTION_DATA extern void* __vt__11daNpcAshB_c[18] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__11daNpcAshB_cFv, - (void*)setParam__11daNpcAshB_cFv, - (void*)main__11daNpcAshB_cFv, - (void*)ctrlBtk__11daNpcAshB_cFv, - (void*)adjustShapeAngle__8daNpcF_cFv, - (void*)setMtx__8daNpcF_cFv, - (void*)setMtx2__8daNpcF_cFv, - (void*)setAttnPos__11daNpcAshB_cFv, - (void*)setCollisions__8daNpcF_cFv, - (void*)setExpressionAnm__11daNpcAshB_cFib, - (void*)setExpressionBtp__11daNpcAshB_cFi, - (void*)setExpression__11daNpcAshB_cFif, - (void*)setMotionAnm__11daNpcAshB_cFif, - (void*)setMotion__11daNpcAshB_cFifi, - (void*)drawDbgInfo__11daNpcAshB_cFv, - (void*)drawOtherMdls__11daNpcAshB_cFv, -}; - -/* 80962724-80962730 00030C 000C+00 3/3 0/0 0/0 .data __vt__12J3DFrameCtrl */ -SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12J3DFrameCtrlFv, -}; - -/* 80962730-80962754 000318 0024+00 3/3 0/0 0/0 .data __vt__12dBgS_ObjAcch */ -SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_ObjAcchFv, - (void*)NULL, - (void*)NULL, - (void*)func_809620C8, - (void*)NULL, - (void*)NULL, - (void*)func_809620C0, -}; - -/* 80962754-80962760 00033C 000C+00 3/3 0/0 0/0 .data __vt__10cCcD_GStts */ -SECTION_DATA extern void* __vt__10cCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10cCcD_GSttsFv, -}; - -/* 80962760-8096276C 000348 000C+00 2/2 0/0 0/0 .data __vt__10dCcD_GStts */ -SECTION_DATA extern void* __vt__10dCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10dCcD_GSttsFv, -}; - -/* 8096276C-80962778 000354 000C+00 2/2 0/0 0/0 .data __vt__12dBgS_AcchCir */ -SECTION_DATA extern void* __vt__12dBgS_AcchCir[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_AcchCirFv, -}; - -/* 80962778-80962784 000360 000C+00 4/4 0/0 0/0 .data __vt__18daNpcF_ActorMngr_c */ -SECTION_DATA extern void* __vt__18daNpcF_ActorMngr_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__18daNpcF_ActorMngr_cFv, -}; - -/* 80962784-80962790 00036C 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, -}; - -/* 80962790-8096279C 000378 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 8096279C-809627A8 000384 000C+00 3/3 0/0 0/0 .data __vt__15daNpcF_Lookat_c */ -SECTION_DATA extern void* __vt__15daNpcF_Lookat_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__15daNpcF_Lookat_cFv, -}; - -/* 8095DE4C-8095DFD0 0000EC 0184+00 1/1 0/0 0/0 .text __ct__11daNpcAshB_cFv */ -daNpcAshB_c::daNpcAshB_c() { - // NONMATCHING -} - -/* 8095DFD0-8095E018 000270 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 8095E018-8095E060 0002B8 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 8095E060-8095E224 000300 01C4+00 1/0 0/0 0/0 .text __dt__11daNpcAshB_cFv */ -daNpcAshB_c::~daNpcAshB_c() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 809620E4-80962154 000000 0070+00 11/11 0/0 0/0 .rodata m__17daNpcAshB_Param_c */ -SECTION_RODATA u8 const daNpcAshB_Param_c::m[112] = { - 0x43, 0x4D, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, - 0x43, 0x7F, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, 0x42, 0x0C, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x70, 0x00, 0x00, 0xC1, 0x70, 0x00, 0x00, - 0x41, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, 0xC1, 0xA0, 0x00, 0x00, - 0x3F, 0x4C, 0xCC, 0xCD, 0x41, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, - 0x42, 0xA0, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x00, 0x3C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809620E4, &daNpcAshB_Param_c::m); - -/* 80962154-80962158 000070 0004+00 0/1 0/0 0/0 .rodata @4179 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4179 = -100.0f; -COMPILER_STRIP_GATE(0x80962154, &lit_4179); -#pragma pop - -/* 80962158-8096215C 000074 0004+00 0/1 0/0 0/0 .rodata @4180 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4180 = -50.0f; -COMPILER_STRIP_GATE(0x80962158, &lit_4180); -#pragma pop - -/* 8096215C-80962160 000078 0004+00 0/1 0/0 0/0 .rodata @4181 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4181 = 100.0f; -COMPILER_STRIP_GATE(0x8096215C, &lit_4181); -#pragma pop - -/* 80962160-80962164 00007C 0004+00 0/1 0/0 0/0 .rodata @4182 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4182 = 220.0f; -COMPILER_STRIP_GATE(0x80962160, &lit_4182); -#pragma pop - -/* 8095E224-8095E4A0 0004C4 027C+00 1/1 0/0 0/0 .text Create__11daNpcAshB_cFv */ -void daNpcAshB_c::Create() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80962164-80962168 000080 0004+00 4/4 0/0 0/0 .rodata @4237 */ -SECTION_RODATA static f32 const lit_4237 = 1.0f; -COMPILER_STRIP_GATE(0x80962164, &lit_4237); - -/* 80962168-8096216C 000084 0004+00 2/6 0/0 0/0 .rodata @4238 */ -SECTION_RODATA static u8 const lit_4238[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80962168, &lit_4238); - -/* 8095E4A0-8095E758 000740 02B8+00 1/1 0/0 0/0 .text CreateHeap__11daNpcAshB_cFv */ -void daNpcAshB_c::CreateHeap() { - // NONMATCHING -} - -/* 8095E758-8095E794 0009F8 003C+00 1/1 0/0 0/0 .text __dt__15J3DTevKColorAnmFv */ -// J3DTevKColorAnm::~J3DTevKColorAnm() { -extern "C" void __dt__15J3DTevKColorAnmFv() { - // NONMATCHING -} - -/* 8095E794-8095E7AC 000A34 0018+00 1/1 0/0 0/0 .text __ct__15J3DTevKColorAnmFv */ -// J3DTevKColorAnm::J3DTevKColorAnm() { -extern "C" void __ct__15J3DTevKColorAnmFv() { - // NONMATCHING -} - -/* 8095E7AC-8095E7E8 000A4C 003C+00 1/1 0/0 0/0 .text __dt__14J3DTevColorAnmFv */ -// J3DTevColorAnm::~J3DTevColorAnm() { -extern "C" void __dt__14J3DTevColorAnmFv() { - // NONMATCHING -} - -/* 8095E7E8-8095E800 000A88 0018+00 1/1 0/0 0/0 .text __ct__14J3DTevColorAnmFv */ -// J3DTevColorAnm::J3DTevColorAnm() { -extern "C" void __ct__14J3DTevColorAnmFv() { - // NONMATCHING -} - -/* 8095E800-8095E848 000AA0 0048+00 1/1 0/0 0/0 .text __dt__11J3DTexNoAnmFv */ -// J3DTexNoAnm::~J3DTexNoAnm() { -extern "C" void __dt__11J3DTexNoAnmFv() { - // NONMATCHING -} - -/* 8095E848-8095E86C 000AE8 0024+00 1/1 0/0 0/0 .text __ct__11J3DTexNoAnmFv */ -// J3DTexNoAnm::J3DTexNoAnm() { -extern "C" void __ct__11J3DTexNoAnmFv() { - // NONMATCHING -} - -/* 8095E86C-8095E8A8 000B0C 003C+00 1/1 0/0 0/0 .text __dt__12J3DTexMtxAnmFv */ -// J3DTexMtxAnm::~J3DTexMtxAnm() { -extern "C" void __dt__12J3DTexMtxAnmFv() { - // NONMATCHING -} - -/* 8095E8A8-8095E8C0 000B48 0018+00 1/1 0/0 0/0 .text __ct__12J3DTexMtxAnmFv */ -// J3DTexMtxAnm::J3DTexMtxAnm() { -extern "C" void __ct__12J3DTexMtxAnmFv() { - // NONMATCHING -} - -/* 8095E8C0-8095E8FC 000B60 003C+00 1/1 0/0 0/0 .text __dt__14J3DMatColorAnmFv */ -// J3DMatColorAnm::~J3DMatColorAnm() { -extern "C" void __dt__14J3DMatColorAnmFv() { - // NONMATCHING -} - -/* 8095E8FC-8095E914 000B9C 0018+00 1/1 0/0 0/0 .text __ct__14J3DMatColorAnmFv */ -// J3DMatColorAnm::J3DMatColorAnm() { -extern "C" void __ct__14J3DMatColorAnmFv() { - // NONMATCHING -} - -/* 8095E914-8095E948 000BB4 0034+00 1/1 0/0 0/0 .text Delete__11daNpcAshB_cFv */ -void daNpcAshB_c::Delete() { - // NONMATCHING -} - -/* 8095E948-8095E96C 000BE8 0024+00 2/2 0/0 0/0 .text Execute__11daNpcAshB_cFv */ -void daNpcAshB_c::Execute() { - // NONMATCHING -} - -/* 8095E96C-8095E9C8 000C0C 005C+00 1/1 0/0 0/0 .text Draw__11daNpcAshB_cFv */ -void daNpcAshB_c::Draw() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8096216C-80962178 000088 000C+00 1/1 0/0 0/0 .rodata @4286 */ -SECTION_RODATA static u8 const lit_4286[12] = { - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0A, -}; -COMPILER_STRIP_GATE(0x8096216C, &lit_4286); - -/* 8095E9C8-8095EB94 000C68 01CC+00 1/1 0/0 0/0 .text - * ctrlJoint__11daNpcAshB_cFP8J3DJointP8J3DModel */ -void daNpcAshB_c::ctrlJoint(J3DJoint* param_0, J3DModel* param_1) { - // NONMATCHING -} - -/* 8095EB94-8095EBB4 000E34 0020+00 1/1 0/0 0/0 .text - * createHeapCallBack__11daNpcAshB_cFP10fopAc_ac_c */ -void daNpcAshB_c::createHeapCallBack(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 8095EBB4-8095EC00 000E54 004C+00 1/1 0/0 0/0 .text ctrlJointCallBack__11daNpcAshB_cFP8J3DJointi - */ -void daNpcAshB_c::ctrlJointCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING -} - -/* 8095EC00-8095EE00 000EA0 0200+00 2/0 0/0 0/0 .text setExpressionAnm__11daNpcAshB_cFib - */ -void daNpcAshB_c::setExpressionAnm(int param_0, bool param_1) { - // NONMATCHING -} - -/* 8095EE00-8095EEE0 0010A0 00E0+00 1/0 0/0 0/0 .text setExpressionBtp__11daNpcAshB_cFi - */ -void daNpcAshB_c::setExpressionBtp(int param_0) { - // NONMATCHING -} - -/* 8095EEE0-8095F0A4 001180 01C4+00 1/0 0/0 0/0 .text setMotionAnm__11daNpcAshB_cFif */ -bool daNpcAshB_c::setMotionAnm(int param_0, f32 param_1) { - // NONMATCHING -} - -/* 8095F0A4-8095F21C 001344 0178+00 1/1 0/0 0/0 .text reset__11daNpcAshB_cFv */ -void daNpcAshB_c::reset() { - // NONMATCHING -} - -/* 8095F21C-8095F2C4 0014BC 00A8+00 1/1 0/0 0/0 .text - * setAction__11daNpcAshB_cFM11daNpcAshB_cFPCvPvPv_b */ -void daNpcAshB_c::setAction(bool (daNpcAshB_c::*param_0)(void*)) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80962178-80962184 000094 000C+00 0/1 0/0 0/0 .rodata @4521 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4521[12] = { - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80962178, &lit_4521); -#pragma pop - -/* 80962184-80962188 0000A0 0004+00 0/1 0/0 0/0 .rodata @4522 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4522[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80962184, &lit_4522); -#pragma pop - -/* 80962188-80962194 0000A4 000C+00 0/1 0/0 0/0 .rodata @4523 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4523[12] = { - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80962188, &lit_4523); -#pragma pop - -/* 80962194-80962198 0000B0 0004+00 0/1 0/0 0/0 .rodata @4524 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4524[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80962194, &lit_4524); -#pragma pop - -/* 80962198-809621A4 0000B4 000C+00 0/1 0/0 0/0 .rodata @4525 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4525[12] = { - 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80962198, &lit_4525); -#pragma pop - -/* 809621A4-809621A8 0000C0 0004+00 0/1 0/0 0/0 .rodata @4526 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4526[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x809621A4, &lit_4526); -#pragma pop - -/* 809621A8-809621B4 0000C4 000C+00 0/1 0/0 0/0 .rodata @4527 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4527[12] = { - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809621A8, &lit_4527); -#pragma pop - -/* 809621B4-809621B8 0000D0 0004+00 0/1 0/0 0/0 .rodata @4528 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4528[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x809621B4, &lit_4528); -#pragma pop - -/* 809621B8-809621C4 0000D4 000C+00 0/1 0/0 0/0 .rodata @4529 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4529[12] = { - 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809621B8, &lit_4529); -#pragma pop - -/* 809621C4-809621C8 0000E0 0004+00 0/1 0/0 0/0 .rodata @4530 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4530[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x809621C4, &lit_4530); -#pragma pop - -/* 809621C8-809621D4 0000E4 000C+00 0/1 0/0 0/0 .rodata @4531 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4531[12] = { - 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809621C8, &lit_4531); -#pragma pop - -/* 809621D4-809621D8 0000F0 0004+00 0/1 0/0 0/0 .rodata @4532 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4532[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x809621D4, &lit_4532); -#pragma pop - -/* 809621D8-809621E4 0000F4 000C+00 0/1 0/0 0/0 .rodata @4533 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4533[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809621D8, &lit_4533); -#pragma pop - -/* 809621E4-809621E8 000100 0004+00 0/1 0/0 0/0 .rodata @4534 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4534[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x809621E4, &lit_4534); -#pragma pop - -/* 809621E8-80962204 000104 001C+00 0/0 0/0 0/0 .rodata @4535 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4535[28] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809621E8, &lit_4535); -#pragma pop - -/* 80962204-80962210 000120 000C+00 0/1 0/0 0/0 .rodata @4539 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4539[12] = { - 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80962204, &lit_4539); -#pragma pop - -/* 80962210-80962214 00012C 0004+00 0/1 0/0 0/0 .rodata @4540 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4540[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80962210, &lit_4540); -#pragma pop - -/* 80962214-80962220 000130 000C+00 0/1 0/0 0/0 .rodata @4541 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4541[12] = { - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80962214, &lit_4541); -#pragma pop - -/* 80962220-80962224 00013C 0004+00 0/1 0/0 0/0 .rodata @4542 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4542[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80962220, &lit_4542); -#pragma pop - -/* 80962224-80962230 000140 000C+00 0/1 0/0 0/0 .rodata @4543 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4543[12] = { - 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80962224, &lit_4543); -#pragma pop - -/* 80962230-8096223C 00014C 000C+00 0/1 0/0 0/0 .rodata @4544 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4544[12] = { - 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80962230, &lit_4544); -#pragma pop - -/* 8096223C-80962248 000158 000C+00 0/1 0/0 0/0 .rodata @4545 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4545[12] = { - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096223C, &lit_4545); -#pragma pop - -/* 80962248-80962254 000164 000C+00 0/1 0/0 0/0 .rodata @4546 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4546[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80962248, &lit_4546); -#pragma pop - -/* 80962254-80962260 000170 000C+00 0/1 0/0 0/0 .rodata @4547 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4547[12] = { - 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80962254, &lit_4547); -#pragma pop - -/* 80962260-8096226C 00017C 000C+00 0/1 0/0 0/0 .rodata @4548 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4548[12] = { - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80962260, &lit_4548); -#pragma pop - -/* 8096226C-80962274 000188 0008+00 0/1 0/0 0/0 .rodata @4549 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4549[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096226C, &lit_4549); -#pragma pop - -/* 80962274-80962280 000190 000C+00 0/1 0/0 0/0 .rodata @4550 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4550[12] = { - 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80962274, &lit_4550); -#pragma pop - -/* 80962280-8096228C 00019C 000C+00 0/1 0/0 0/0 .rodata @4551 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4551[12] = { - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80962280, &lit_4551); -#pragma pop - -/* 8096228C-80962294 0001A8 0008+00 0/1 0/0 0/0 .rodata @4552 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4552[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096228C, &lit_4552); -#pragma pop - -/* 80962294-809622A0 0001B0 000C+00 0/1 0/0 0/0 .rodata @4553 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4553[12] = { - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80962294, &lit_4553); -#pragma pop - -/* 809622A0-809622AC 0001BC 000C+00 0/1 0/0 0/0 .rodata @4554 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4554[12] = { - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809622A0, &lit_4554); -#pragma pop - -/* 809622AC-809622B4 0001C8 0008+00 0/1 0/0 0/0 .rodata @4555 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4555[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809622AC, &lit_4555); -#pragma pop - -/* 809622B4-809622C0 0001D0 000C+00 0/1 0/0 0/0 .rodata @4556 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4556[12] = { - 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x809622B4, &lit_4556); -#pragma pop - -/* 809622C0-809622CC 0001DC 000C+00 0/1 0/0 0/0 .rodata @4557 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4557[12] = { - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809622C0, &lit_4557); -#pragma pop - -/* 809622CC-809622D4 0001E8 0008+00 0/1 0/0 0/0 .rodata @4558 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4558[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809622CC, &lit_4558); -#pragma pop - -/* 809622D4-809622E0 0001F0 000C+00 0/1 0/0 0/0 .rodata @4559 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4559[12] = { - 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x809622D4, &lit_4559); -#pragma pop - -/* 809622E0-809622EC 0001FC 000C+00 0/1 0/0 0/0 .rodata @4560 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4560[12] = { - 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809622E0, &lit_4560); -#pragma pop - -/* 809622EC-809622F4 000208 0008+00 0/1 0/0 0/0 .rodata @4561 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4561[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809622EC, &lit_4561); -#pragma pop - -/* 809622F4-80962300 000210 000C+00 0/1 0/0 0/0 .rodata @4562 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4562[12] = { - 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809622F4, &lit_4562); -#pragma pop - -/* 80962300-80962304 00021C 0004+00 0/1 0/0 0/0 .rodata @4563 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4563[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80962300, &lit_4563); -#pragma pop - -/* 80962304-80962310 000220 000C+00 0/1 0/0 0/0 .rodata @4564 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4564[12] = { - 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80962304, &lit_4564); -#pragma pop - -/* 80962310-8096231C 00022C 000C+00 0/1 0/0 0/0 .rodata @4565 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4565[12] = { - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80962310, &lit_4565); -#pragma pop - -/* 8096231C-80962324 000238 0008+00 0/1 0/0 0/0 .rodata @4566 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4566[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096231C, &lit_4566); -#pragma pop - -/* 80962324-80962330 000240 000C+00 0/1 0/0 0/0 .rodata @4567 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4567[12] = { - 0x00, 0x0A, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80962324, &lit_4567); -#pragma pop - -/* 80962330-80962338 00024C 0008+00 0/1 0/0 0/0 .rodata @4568 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4568[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80962330, &lit_4568); -#pragma pop - -/* 80962338-80962344 000254 000C+00 0/1 0/0 0/0 .rodata @4569 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4569[12] = { - 0x00, 0x0B, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -}; -COMPILER_STRIP_GATE(0x80962338, &lit_4569); -#pragma pop - -/* 80962344-8096234C 000260 0008+00 0/1 0/0 0/0 .rodata @4570 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4570[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80962344, &lit_4570); -#pragma pop - -/* 8096234C-8096237C 000268 0030+00 0/0 0/0 0/0 .rodata @4571 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4571[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096234C, &lit_4571); -#pragma pop - -/* 8096237C-80962388 000298 000C+00 0/1 0/0 0/0 .rodata @4585 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4585[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096237C, &lit_4585); -#pragma pop - -/* 80962388-8096238C 0002A4 0004+00 2/4 0/0 0/0 .rodata @4837 */ -SECTION_RODATA static f32 const lit_4837 = -1.0f; -COMPILER_STRIP_GATE(0x80962388, &lit_4837); - -/* 8096238C-80962390 0002A8 0004+00 0/1 0/0 0/0 .rodata @4838 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4838 = 0x43360B61; -COMPILER_STRIP_GATE(0x8096238C, &lit_4838); -#pragma pop - -/* 80962390-80962394 0002AC 0004+00 0/2 0/0 0/0 .rodata @4839 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4839 = 0x3BB40000; -COMPILER_STRIP_GATE(0x80962390, &lit_4839); -#pragma pop - -/* 80962394-8096239C 0002B0 0004+04 0/2 0/0 0/0 .rodata @4840 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4840[1 + 1 /* padding */] = { - 15.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80962394, &lit_4840); -#pragma pop - -/* 8096239C-809623A4 0002B8 0008+00 0/1 0/0 0/0 .rodata @4841 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4841[8] = { - 0x40, 0x82, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8096239C, &lit_4841); -#pragma pop - -/* 809623A4-809623AC 0002C0 0008+00 0/1 0/0 0/0 .rodata @4842 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4842[8] = { - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809623A4, &lit_4842); -#pragma pop - -/* 809623AC-809623B4 0002C8 0008+00 0/2 0/0 0/0 .rodata @4844 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4844[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809623AC, &lit_4844); -#pragma pop - -/* 809623E8-809623E8 000304 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_809623F9 = "NO_RESPONSE"; -#pragma pop - -/* 8095F2C4-8095FC70 001564 09AC+00 4/0 0/0 0/0 .text wait__11daNpcAshB_cFPv */ -void daNpcAshB_c::wait(void* param_0) { - // NONMATCHING -} - -/* 8095FC70-8095FD34 001F10 00C4+00 1/0 0/0 0/0 .text setMotion__11daNpcAshB_cFifi */ -void daNpcAshB_c::setMotion(int param_0, f32 param_1, int param_2) { - // NONMATCHING -} - -/* 8095FD34-8095FD9C 001FD4 0068+00 1/0 0/0 0/0 .text setExpression__11daNpcAshB_cFif */ -void daNpcAshB_c::setExpression(int param_0, f32 param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 809623E8-809623E8 000304 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80962405 = "DEFAULT_GETITEM"; -#pragma pop - -/* 8095FD9C-809602E0 00203C 0544+00 2/0 0/0 0/0 .text talk__11daNpcAshB_cFPv */ -void daNpcAshB_c::talk(void* param_0) { - // NONMATCHING -} - -/* 809602E0-809604C8 002580 01E8+00 1/0 0/0 0/0 .text demo__11daNpcAshB_cFPv */ -void daNpcAshB_c::demo(void* param_0) { - // NONMATCHING -} - -/* 809604C8-809609A8 002768 04E0+00 3/0 0/0 0/0 .text EvCut_Appear__11daNpcAshB_cFi */ -void daNpcAshB_c::EvCut_Appear(int param_0) { - // NONMATCHING -} - -/* 809609A8-809609C8 002C48 0020+00 1/0 0/0 0/0 .text daNpcAshB_Create__FPv */ -static void daNpcAshB_Create(void* param_0) { - // NONMATCHING -} - -/* 809609C8-809609E8 002C68 0020+00 1/0 0/0 0/0 .text daNpcAshB_Delete__FPv */ -static void daNpcAshB_Delete(void* param_0) { - // NONMATCHING -} - -/* 809609E8-80960A08 002C88 0020+00 1/0 0/0 0/0 .text daNpcAshB_Execute__FPv */ -static void daNpcAshB_Execute(void* param_0) { - // NONMATCHING -} - -/* 80960A08-80960A28 002CA8 0020+00 1/0 0/0 0/0 .text daNpcAshB_Draw__FPv */ -static void daNpcAshB_Draw(void* param_0) { - // NONMATCHING -} - -/* 80960A28-80960A30 002CC8 0008+00 1/0 0/0 0/0 .text daNpcAshB_IsDelete__FPv */ -static bool daNpcAshB_IsDelete(void* param_0) { - return true; -} - -/* 80960A30-80960A60 002CD0 0030+00 1/0 0/0 0/0 .text calc__11J3DTexNoAnmCFPUs */ -// void J3DTexNoAnm::calc(u16* param_0) const { -extern "C" void calc__11J3DTexNoAnmCFPUs() { - // NONMATCHING -} - -/* 80960A60-80960AE8 002D00 0088+00 1/0 0/0 0/0 .text setParam__11daNpcAshB_cFv */ -void daNpcAshB_c::setParam() { - // NONMATCHING -} - -/* 80960AE8-80960D64 002D88 027C+00 1/0 0/0 0/0 .text main__11daNpcAshB_cFv */ -void daNpcAshB_c::main() { - // NONMATCHING -} - -/* 80960D64-80961188 003004 0424+00 1/1 0/0 0/0 .text playMotion__11daNpcAshB_cFv */ -void daNpcAshB_c::playMotion() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 809623B4-809623B8 0002D0 0004+00 0/0 0/0 0/0 .rodata @5082 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5082 = 20.0f; -COMPILER_STRIP_GATE(0x809623B4, &lit_5082); -#pragma pop - -/* 809623B8-809623BC 0002D4 0004+00 1/1 0/0 0/0 .rodata @5198 */ -SECTION_RODATA static f32 const lit_5198 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x809623B8, &lit_5198); - -/* 80961188-80961264 003428 00DC+00 1/0 0/0 0/0 .text ctrlBtk__11daNpcAshB_cFv */ -void daNpcAshB_c::ctrlBtk() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 809623BC-809623C4 0002D8 0004+04 0/1 0/0 0/0 .rodata @5270 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5270[1 + 1 /* padding */] = { - 10.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x809623BC, &lit_5270); -#pragma pop - -/* 809623C4-809623CC 0002E0 0008+00 0/1 0/0 0/0 .rodata @5271 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5271[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809623C4, &lit_5271); -#pragma pop - -/* 809623CC-809623D4 0002E8 0008+00 0/1 0/0 0/0 .rodata @5272 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5272[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809623CC, &lit_5272); -#pragma pop - -/* 809623D4-809623DC 0002F0 0008+00 0/1 0/0 0/0 .rodata @5273 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5273[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x809623D4, &lit_5273); -#pragma pop - -/* 80961264-80961574 003504 0310+00 1/0 0/0 0/0 .text setAttnPos__11daNpcAshB_cFv */ -void daNpcAshB_c::setAttnPos() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 809623DC-809623E0 0002F8 0004+00 0/1 0/0 0/0 .rodata @5317 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5317 = -80.0f; -COMPILER_STRIP_GATE(0x809623DC, &lit_5317); -#pragma pop - -/* 809623E0-809623E4 0002FC 0004+00 0/1 0/0 0/0 .rodata @5318 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5318 = 80.0f; -COMPILER_STRIP_GATE(0x809623E0, &lit_5318); -#pragma pop - -/* 809623E4-809623E8 000300 0004+00 0/1 0/0 0/0 .rodata @5319 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5319 = 40.0f; -COMPILER_STRIP_GATE(0x809623E4, &lit_5319); -#pragma pop - -/* 80961574-80961770 003814 01FC+00 1/1 0/0 0/0 .text lookat__11daNpcAshB_cFv */ -void daNpcAshB_c::lookat() { - // NONMATCHING -} - -/* 80961770-809617F8 003A10 0088+00 1/0 0/0 0/0 .text drawOtherMdls__11daNpcAshB_cFv */ -void daNpcAshB_c::drawOtherMdls() { - // NONMATCHING -} - -/* 809617F8-80961800 003A98 0008+00 1/0 0/0 0/0 .text drawDbgInfo__11daNpcAshB_cFv */ -bool daNpcAshB_c::drawDbgInfo() { - return false; -} - -/* 80961800-8096180C 003AA0 000C+00 1/1 0/0 0/0 .text sinShort__Q25JMath18TSinCosTable<13,f>CFs */ -extern "C" void func_80961800(void* _this, s16 param_0) /* const */ { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 809627A8-809627B4 000390 000C+00 2/2 0/0 0/0 .data __vt__17daNpcAshB_Param_c */ -SECTION_DATA extern void* __vt__17daNpcAshB_Param_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__17daNpcAshB_Param_cFv, -}; - -/* 809627C0-809627CC 000008 000C+00 1/1 0/0 0/0 .bss @3810 */ -static u8 lit_3810[12]; - -/* 809627CC-809627D0 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[4]; - -/* 8096180C-80961894 003AAC 0088+00 0/0 1/0 0/0 .text __sinit_d_a_npc_ashB_cpp */ -void __sinit_d_a_npc_ashB_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x8096180C, __sinit_d_a_npc_ashB_cpp); -#pragma pop - -/* 80961894-809618DC 003B34 0048+00 5/4 0/0 0/0 .text __dt__18daNpcF_ActorMngr_cFv */ -// daNpcF_ActorMngr_c::~daNpcF_ActorMngr_c() { -extern "C" void __dt__18daNpcF_ActorMngr_cFv() { - // NONMATCHING -} - -/* 809618DC-80961918 003B7C 003C+00 2/2 0/0 0/0 .text __ct__18daNpcF_ActorMngr_cFv */ -// daNpcF_ActorMngr_c::daNpcF_ActorMngr_c() { -extern "C" void __ct__18daNpcF_ActorMngr_cFv() { - // NONMATCHING -} - -/* 80961918-809619E8 003BB8 00D0+00 1/0 0/0 0/0 .text __dt__15daNpcF_Lookat_cFv */ -// daNpcF_Lookat_c::~daNpcF_Lookat_c() { -extern "C" void __dt__15daNpcF_Lookat_cFv() { - // NONMATCHING -} - -/* 809619E8-80961A24 003C88 003C+00 5/5 0/0 0/0 .text __dt__5csXyzFv */ -// csXyz::~csXyz() { -extern "C" void __dt__5csXyzFv() { - // NONMATCHING -} - -/* 80961A24-80961A28 003CC4 0004+00 2/2 0/0 0/0 .text __ct__5csXyzFv */ -// csXyz::csXyz() { -extern "C" void __ct__5csXyzFv() { - /* empty function */ -} - -/* 80961A28-80961A64 003CC8 003C+00 5/5 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - -/* 80961A64-80961A68 003D04 0004+00 2/2 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - -/* 80961A68-80961CB4 003D08 024C+00 1/1 0/0 0/0 .text __dt__8daNpcF_cFv */ -// daNpcF_c::~daNpcF_c() { -extern "C" void __dt__8daNpcF_cFv() { - // NONMATCHING -} - -/* 80961CB4-80961EA4 003F54 01F0+00 1/1 0/0 0/0 .text __ct__8daNpcF_cFv */ -// daNpcF_c::daNpcF_c() { -extern "C" void __ct__8daNpcF_cFv() { - // NONMATCHING -} - -/* 80961EA4-80961F14 004144 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 80961F14-80961F70 0041B4 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80961F70-80961FE0 004210 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 80961FE0-80962028 004280 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* 80962028-8096202C 0042C8 0004+00 1/0 0/0 0/0 .text adjustShapeAngle__8daNpcF_cFv */ -// void daNpcF_c::adjustShapeAngle() { -extern "C" void adjustShapeAngle__8daNpcF_cFv() { - /* empty function */ -} - -/* 8096202C-80962030 0042CC 0004+00 1/0 0/0 0/0 .text setCollisions__8daNpcF_cFv */ -// void daNpcF_c::setCollisions() { -extern "C" void setCollisions__8daNpcF_cFv() { - /* empty function */ -} - -/* 80962030-80962078 0042D0 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80962078-809620C0 004318 0048+00 2/1 0/0 0/0 .text __dt__17daNpcAshB_Param_cFv */ -daNpcAshB_Param_c::~daNpcAshB_Param_c() { - // NONMATCHING -} - -/* 809620C0-809620C8 004360 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_809620C0() { - // NONMATCHING -} - -/* 809620C8-809620D0 004368 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_809620C8() { - // NONMATCHING -} - -/* 809623E8-809623E8 000304 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */