mirror of
https://github.com/zeldaret/ss
synced 2026-06-07 03:48:09 -04:00
A bit of progress
This commit is contained in:
+16
-12
@@ -2681,7 +2681,7 @@ fn_8005F890__19daPlayerModelBase_cFPQ34nw4r4math5MTX34 = .text:0x8005F890; // ty
|
||||
vt_0x2E8__19daPlayerModelBase_cFPQ34nw4r4math5MTX34PCUsb = .text:0x8005FB50; // type:function size:0x8
|
||||
vt_0x304__19daPlayerModelBase_cCFv = .text:0x8005FB60; // type:function size:0xC
|
||||
isOnClawTargetMaybe__19daPlayerModelBase_cFlR4mAngR4mAng = .text:0x8005FB70; // type:function size:0x14
|
||||
fn_8005FB90 = .text:0x8005FB90; // type:function size:0x220
|
||||
fn_8005FB90__19daPlayerModelBase_cFPQ34nw4r4math5MTX34 = .text:0x8005FB90; // type:function size:0x220
|
||||
mainModelTimingA__19daPlayerModelBase_cFUlPQ34nw4r3g3d12ChrAnmResult = .text:0x8005FDB0; // type:function size:0x4
|
||||
mainModelTimingB__19daPlayerModelBase_cFUlPQ34nw4r3g3d13WorldMtxManip = .text:0x8005FDC0; // type:function size:0x78
|
||||
mainModelTimingC__19daPlayerModelBase_cFPQ34nw4r4math5MTX34 = .text:0x8005FE40; // type:function size:0x4C
|
||||
@@ -2689,28 +2689,28 @@ handsCallbackC__19daPlayerModelBase_cFPQ34nw4r4math5MTX34Q34nw4r3g3d6ResMdlPQ34n
|
||||
headModelTimingB__19daPlayerModelBase_cFUlPQ34nw4r3g3d13WorldMtxManip = .text:0x8005FF40; // type:function size:0x118
|
||||
setTransformAndCalc__19daPlayerModelBase_cFRQ23m3d9scnLeaf_cPC6mMtx_c = .text:0x80060060; // type:function size:0x40
|
||||
setShieldTransform__19daPlayerModelBase_cFb = .text:0x800600A0; // type:function size:0xD4
|
||||
fn_80060180 = .text:0x80060180; // type:function size:0xB0
|
||||
loadTwoAnmChrs__19daPlayerModelBase_cFlllb = .text:0x80060180; // type:function size:0xB0
|
||||
getItemResFile__19daPlayerModelBase_cFPCcR12mAllocator_c = .text:0x80060230; // type:function size:0xD4
|
||||
getExternalCompressedFile__19daPlayerModelBase_cFPCcPCcPvUl = .text:0x80060310; // type:function size:0x94
|
||||
getExternalAnmChr__19daPlayerModelBase_cFPCcPvUl = .text:0x800603B0; // type:function size:0x94
|
||||
getExternalAnmTexPat__19daPlayerModelBase_cFPCcPvUl = .text:0x80060450; // type:function size:0xD4
|
||||
getExternalAnmTexSrt__19daPlayerModelBase_cFPCcPvUl = .text:0x80060530; // type:function size:0x94
|
||||
fn_800605D0 = .text:0x800605D0; // type:function size:0x30
|
||||
ActorLink__SetFaceTexPat = .text:0x80060600; // type:function size:0xEC
|
||||
canStart__19daPlayerModelBase_cCFbUsUsPUsPUs = .text:0x800605D0; // type:function size:0x30
|
||||
setFaceTexPat__19daPlayerModelBase_cFlb = .text:0x80060600; // type:function size:0xEC
|
||||
fn_800606F0 = .text:0x800606F0; // type:function size:0x38
|
||||
ActorLink__SetFaceTexSrt = .text:0x80060730; // type:function size:0xAC
|
||||
setFaceTexSrt__19daPlayerModelBase_cFlb = .text:0x80060730; // type:function size:0xAC
|
||||
fn_800607E0 = .text:0x800607E0; // type:function size:0x38
|
||||
ActorLink__SetFaceAnmChr = .text:0x80060820; // type:function size:0xF0
|
||||
setFaceAnmChr__19daPlayerModelBase_cFlb = .text:0x80060820; // type:function size:0xF0
|
||||
fn_80060910 = .text:0x80060910; // type:function size:0x38
|
||||
fn_80060950 = .text:0x80060950; // type:function size:0x164
|
||||
fn_80060AC0 = .text:0x80060AC0; // type:function size:0x6C
|
||||
loadSound__19daPlayerModelBase_cFQ34nw4r3g3d7ResFilePCcl = .text:0x80060B30; // type:function size:0xCC
|
||||
fn_80060C00 = .text:0x80060C00; // type:function size:0xE0
|
||||
loadAnmChr__19daPlayerModelBase_cFllPvUl = .text:0x80060950; // type:function size:0x164
|
||||
removeAnmChr__19daPlayerModelBase_cFl = .text:0x80060AC0; // type:function size:0x6C
|
||||
loadSound__19daPlayerModelBase_cFRQ34nw4r3g3d7ResFilePCcl = .text:0x80060B30; // type:function size:0xCC
|
||||
loadSoundForAnim__19daPlayerModelBase_cFl = .text:0x80060C00; // type:function size:0xE0
|
||||
syncSoundWithAnim__19daPlayerModelBase_cFv = .text:0x80060CE0; // type:function size:0x64
|
||||
registMassObj__19daPlayerModelBase_cFP8cCcD_ObjUc = .text:0x80060D50; // type:function size:0x54
|
||||
updateModelColliders__19daPlayerModelBase_cFv = .text:0x80060DB0; // type:function size:0x29C
|
||||
updateCachedPositions__19daPlayerModelBase_cFv = .text:0x80061050; // type:function size:0x1B0
|
||||
fn_80061200 = .text:0x80061200; // type:function size:0x210
|
||||
setPosCopy3__19daPlayerModelBase_cFv = .text:0x80061200; // type:function size:0x210
|
||||
fn_80061410__19daPlayerModelBase_cFv = .text:0x80061410; // type:function size:0x6C
|
||||
alwaysRet0__19daPlayerModelBase_cFv = .text:0x80061480; // type:function size:0x8
|
||||
somethingWithCarriedActorFlags__19daPlayerModelBase_cFv = .text:0x80061490; // type:function size:0x1C
|
||||
@@ -28156,7 +28156,11 @@ sSwordRelatedUnk = .rodata:0x804E07F4; // type:object size:0x1C
|
||||
sSwordRelatedZ = .rodata:0x804E0810; // type:object size:0x1C
|
||||
sSwordRelatedY = .rodata:0x804E082C; // type:object size:0x1C
|
||||
lbl_804E0848 = .rodata:0x804E0848; // type:object size:0x24 align:4 data:float
|
||||
lbl_804E086C = .rodata:0x804E086C; // type:object size:0xAC align:4 data:float
|
||||
lbl_804E086C = .rodata:0x804E086C; // type:object size:0x78 align:4 data:float
|
||||
lbl_804E08E4 = .rodata:0x804E08E4; // type:object size:0xC
|
||||
lbl_804E08F0 = .rodata:0x804E08F0; // type:object size:0xC
|
||||
lbl_804E08FC = .rodata:0x804E08FC; // type:object size:0xC
|
||||
lbl_804E0908 = .rodata:0x804E0908; // type:object size:0x10
|
||||
lbl_804E0918 = .rodata:0x804E0918; // type:object size:0x14
|
||||
lbl_804E092C = .rodata:0x804E092C; // type:object size:0x14 align:4 data:float
|
||||
lbl_804E0940 = .rodata:0x804E0940; // type:object size:0x14 align:4 data:float
|
||||
|
||||
@@ -114,6 +114,18 @@ public:
|
||||
mpSoundData = data;
|
||||
}
|
||||
|
||||
void setField_0x58(u8 val) {
|
||||
field_0x58 = val;
|
||||
}
|
||||
|
||||
u16 getField_0x5A() const {
|
||||
return field_0x5A;
|
||||
}
|
||||
|
||||
void *getSoundData() const {
|
||||
return mpSoundData;
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x24 */ daPlBaseMdlCallback_c mCallback;
|
||||
/* 0x58 */ u8 field_0x58;
|
||||
@@ -142,6 +154,10 @@ public:
|
||||
void play() override;
|
||||
bool isFinished();
|
||||
|
||||
void setField_0x35(u8 value) {
|
||||
field_0x35 = value;
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x35 */ u8 field_0x35;
|
||||
/* 0x36 */ u8 field_0x36;
|
||||
@@ -726,6 +742,18 @@ public:
|
||||
mForceOrPreventActionFlags |= mask;
|
||||
}
|
||||
|
||||
inline void onFaceUpdateFlags(u32 mask) {
|
||||
mFaceUpdateFlags |= mask;
|
||||
}
|
||||
|
||||
inline void offFaceUpdateFlags(u32 mask) {
|
||||
mFaceUpdateFlags &= ~mask;
|
||||
}
|
||||
|
||||
inline bool checkFaceUpdateFlags(u32 mask) const {
|
||||
return (mFaceUpdateFlags & mask) != 0;
|
||||
}
|
||||
|
||||
bool CheckPlayerFly() const {
|
||||
return mActionFlags & FLG0_FLY;
|
||||
}
|
||||
@@ -791,7 +819,7 @@ protected:
|
||||
/* 0x339 */ u8 mRidingActorType;
|
||||
/* 0x33A */ u8 unk_0x33A[0x340 - 0x33A];
|
||||
/* 0x340 */ u32 someFlags_0x340;
|
||||
/* 0x344 */ u8 unk_0x344[0x348 - 0x344];
|
||||
/* 0x344 */ u32 mFaceUpdateFlags;
|
||||
/* 0x348 */ u32 mSwordAndMoreStates;
|
||||
/* 0x34C */ u32 mModelUpdateFlags;
|
||||
/* 0x350 */ u32 someFlags_0x350;
|
||||
@@ -842,7 +870,7 @@ public:
|
||||
PLAYER_MAIN_NODE_ARM_L2 = 8,
|
||||
PLAYER_MAIN_NODE_HAND_L = 9,
|
||||
PLAYER_MAIN_NODE_WEAPON_L = 10,
|
||||
|
||||
|
||||
PLAYER_MAIN_NODE_SHOULDER_R = 11,
|
||||
PLAYER_MAIN_NODE_ARM_R1 = 12,
|
||||
PLAYER_MAIN_NODE_ARM_R2 = 13,
|
||||
@@ -891,6 +919,7 @@ public:
|
||||
};
|
||||
|
||||
void fn_8005F890(nw4r::math::MTX34 *);
|
||||
void fn_8005FB90(nw4r::math::MTX34 *);
|
||||
void fn_80061410();
|
||||
|
||||
static void freeFrmHeap(mHeapAllocator_c *allocator);
|
||||
@@ -1011,10 +1040,21 @@ public:
|
||||
mSwordAndMoreStates &= ~mask;
|
||||
}
|
||||
|
||||
void loadSound(nw4r::g3d::ResFile file, const char *name, s32 animIdx);
|
||||
bool canStart(bool force, u16 newIdx, u16 invalidValue, u16 *out1, u16 *out2) const;
|
||||
void setFaceTexPat(s32 faceIdx, bool force);
|
||||
void setFaceTexSrt(s32 faceIdx, bool force);
|
||||
void setFaceAnmChr(s32 faceIdx, bool force);
|
||||
|
||||
void setPosCopy3();
|
||||
|
||||
void loadTwoAnmChrs(s32 childIdx, s32 animIdx, s32 animIdx2, bool b);
|
||||
void loadAnmChr(s32 childIdx, s32 animIdx, void *dest, u32 maxSize);
|
||||
void removeAnmChr(s32 childIdx);
|
||||
void loadSound(nw4r::g3d::ResFile &file, const char *name, s32 childIdx);
|
||||
void loadSoundForAnim(s32 childIdx);
|
||||
|
||||
void syncSoundWithAnim();
|
||||
static void registMassObj(cCcD_Obj* obj, u8 priority);
|
||||
static void registMassObj(cCcD_Obj *obj, u8 priority);
|
||||
void updateModelColliders();
|
||||
void updateCachedPositions();
|
||||
|
||||
@@ -1037,6 +1077,7 @@ public:
|
||||
void applyWorldRotationMaybe(nw4r::g3d::WorldMtxManip *result, mAng x, mAng y, mAng z, mVec3_c *off, bool order);
|
||||
|
||||
static const PlayerAnimation sAnimations[443];
|
||||
static const s32 sUnkDuration;
|
||||
static const u8 sShieldDurabilities[10];
|
||||
static const u8 sShieldRegenTimes[10];
|
||||
static mColor sGuideColor1;
|
||||
|
||||
+628
-5
@@ -21,6 +21,7 @@
|
||||
#include "nw4r/g3d/g3d_scnobj.h"
|
||||
#include "nw4r/g3d/res/g3d_resanmchr.h"
|
||||
#include "nw4r/g3d/res/g3d_resanmclr.h"
|
||||
#include "nw4r/g3d/res/g3d_resanmtexpat.h"
|
||||
#include "nw4r/g3d/res/g3d_resanmtexsrt.h"
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
#include "nw4r/g3d/res/g3d_resmdl.h"
|
||||
@@ -102,8 +103,456 @@ static const char *sFaceResNames[] = {
|
||||
// and this whole array is part of the .data pool
|
||||
"",
|
||||
};
|
||||
|
||||
const PlayerAnimation daPlayerModelBase_c::sAnimations[] = {
|
||||
{ "atrFW", 13, 6, 1, 0, 0},
|
||||
{ "atrFW_R", 7, 0, 1, 0, 0},
|
||||
{ "atrFD", 13, 6, 1, 0, 0},
|
||||
{ "atrFD_R", 7, 0, 1, 0, 0},
|
||||
{ "atrbW", 13, 6, 1, 0, 0},
|
||||
{ "atrbW_R", 7, 0, 1, 0, 0},
|
||||
{ "atrbD", 13, 6, 1, 0, 0},
|
||||
{ "atrbD_R", 7, 0, 1, 0, 0},
|
||||
{ "atrsWL", 13, 6, 1, 0, 0},
|
||||
{ "atrsDL", 13, 6, 1, 0, 0},
|
||||
{ "atrsWR", 13, 6, 1, 0, 0},
|
||||
{ "atrsDR", 13, 6, 1, 0, 0},
|
||||
{ "atsWL", 13, 6, 1, 0, 0},
|
||||
{ "atsDL", 13, 6, 1, 0, 0},
|
||||
{ "atsWR", 13, 6, 1, 0, 0},
|
||||
{ "atsDR", 13, 6, 1, 0, 0},
|
||||
{ "atsWL_right", 13, 6, 1, 0, 0},
|
||||
{ "atsDL_right", 13, 6, 1, 0, 0},
|
||||
{ "atL", 9, 2, 1, 0, 0},
|
||||
{ "atR", 9, 2, 1, 0, 0},
|
||||
{ "dashA", 13, 56, 1, 0, 0},
|
||||
{ "dashS", 13, 56, 1, 0, 0},
|
||||
{ "atrbWH", 7, 0, 1, 0, 0},
|
||||
{ "atbW", 13, 6, 1, 0, 0},
|
||||
{ "atbD", 13, 6, 1, 0, 0},
|
||||
{ "walkH", 7, 50, 1, 0, 0},
|
||||
{ "waitS", 13, 56, 1, 0, 0},
|
||||
{ "walkS", 13, 56, 1, 0, 0},
|
||||
{ "stepL", 13, 56, 1, 0, 0},
|
||||
{ "stepR", 13, 56, 1, 0, 0},
|
||||
{ "atsJLSt", 7, 50, 1, 0, 2},
|
||||
{ "atsJLEd", 9, 52, 1, 0, 2},
|
||||
{ "atsJRSt", 7, 50, 1, 0, 2},
|
||||
{ "atsJREd", 9, 52, 1, 0, 2},
|
||||
{ "atsJFSt", 13, 56, 1, 0, 2},
|
||||
{ "atsJFEd", 9, 52, 1, 0, 2},
|
||||
{ "rollBSt", 13, 56, 1, 0, 2},
|
||||
{ "rollBEd", 9, 52, 1, 0, 2},
|
||||
{ "waitB", 9, 52, 1, 0, 2},
|
||||
{ "waitBtoA", 9, 52, 1, 0, 0},
|
||||
{ "sjmpSt", 7, 50, 1, 0, 0},
|
||||
{ "sjmpEd", 7, 50, 1, 0, 0},
|
||||
{ "rollF", 7, 50, 1, 0, 2},
|
||||
{ "rollFmis", 7, 0, 17, 0, 17},
|
||||
{ "jumpSt", 7, 50, 1, 0, 2},
|
||||
{ "jumpSEd", 7, 50, 1, 0, 2},
|
||||
{ "vjmp", 7, 50, 1, 0, 2},
|
||||
{ "vjmpChA", 7, 50, 1, 0, 2},
|
||||
{ "vjmpChB", 7, 50, 1, 0, 2},
|
||||
{ "vjmpCl", 7, 50, 1, 0, 2},
|
||||
{ "hangL", 7, 50, 1, 0, 2},
|
||||
{ "hangR", 7, 50, 1, 0, 2},
|
||||
{ "Hang", 7, 50, 1, 0, 2},
|
||||
{ "climbHang", 12, 55, 1, 0, 2},
|
||||
{ "climbSlideL", 12, 55, 1, 0, 2},
|
||||
{ "climbSlideR", 12, 55, 1, 0, 2},
|
||||
{ "climbHangmiss", 12, 55, 1, 0, 2},
|
||||
{ "climbStruggle", 12, 5, 11, 0, 11},
|
||||
{ "ClimbIvyHang", 12, 5, 1, 0, 2},
|
||||
{ "ClimbIvyL", 12, 5, 1, 0, 2},
|
||||
{ "ClimbIvyR", 12, 5, 1, 0, 2},
|
||||
{ "ClimbIvyL_St", 12, 5, 1, 0, 2},
|
||||
{ "ClimbIvyR_St", 12, 5, 1, 0, 2},
|
||||
{ "ClimbIvySlideL", 12, 5, 1, 0, 2},
|
||||
{ "ClimbIvySlideR", 12, 5, 1, 0, 2},
|
||||
{ "ClimbIvySlantLU_RD", 12, 5, 1, 0, 2},
|
||||
{ "ClimbIvySlideRU_LD", 12, 5, 1, 0, 2},
|
||||
{ "ladUpSt", 13, 6, 1, 0, 0},
|
||||
{ "ladUpEdL", 13, 6, 1, 0, 0},
|
||||
{ "ladUpEdR", 13, 6, 1, 0, 0},
|
||||
{ "ladDwSt", 13, 6, 1, 0, 0},
|
||||
{ "ladDWEdL", 13, 6, 1, 0, 0},
|
||||
{ "ladDWEdR", 13, 6, 1, 0, 0},
|
||||
{ "ladRtoL", 13, 6, 1, 0, 0},
|
||||
{ "ladLtoR", 13, 6, 1, 0, 0},
|
||||
{ "LadJumpUpSt", 13, 6, 1, 0, 0},
|
||||
{ "LadJumpDownSt", 13, 6, 1, 0, 0},
|
||||
{ "LadJumpUpEd", 13, 6, 1, 0, 0},
|
||||
{ "LadJumpDownEd", 13, 6, 1, 0, 0},
|
||||
{ "cutT", 13, 100, 1, 0, 2},
|
||||
{ "cutTB", 13, 4, 1, 0, 2},
|
||||
{ "cutTL", 13, 4, 1, 0, 2},
|
||||
{ "cutTLB", 13, 4, 1, 0, 2},
|
||||
{ "cutJSt", 13, 4, 1, 0, 2},
|
||||
{ "cutJEd", 13, 4, 1, 0, 2},
|
||||
{ "damF", 13, 56, 6, 0, 6},
|
||||
{ "damB", 13, 56, 6, 0, 6},
|
||||
{ "damL", 13, 56, 6, 0, 6},
|
||||
{ "damR", 13, 56, 6, 0, 6},
|
||||
{ "DamageMFront", 13, 56, 6, 0, 6},
|
||||
{ "DamageMBack", 13, 56, 6, 0, 6},
|
||||
{ "DamageMLeft", 13, 56, 6, 0, 6},
|
||||
{ "DamageMRight", 13, 56, 6, 0, 6},
|
||||
{ "damFF", 13, 56, 7, 0, 7},
|
||||
{ "damFB", 13, 56, 7, 0, 7},
|
||||
{ "damFL", 13, 56, 7, 0, 7},
|
||||
{ "damFR", 13, 56, 7, 0, 7},
|
||||
{ "damFFup", 7, 50, 17, 0, 17},
|
||||
{ "damFBup", 7, 50, 17, 0, 17},
|
||||
{ "damFLup", 7, 50, 17, 0, 17},
|
||||
{ "damFRup", 7, 50, 17, 0, 17},
|
||||
{ "DamageLFrontSlide", 7, 50, 12, 0, 12},
|
||||
{ "DamageLBackSlide", 7, 50, 12, 0, 12},
|
||||
{ "DamageLLeftSlide", 7, 50, 12, 0, 12},
|
||||
{ "DamageLRightSlide", 7, 50, 12, 0, 12},
|
||||
{ "dam", 13, 56, 6, 0, 6},
|
||||
{ "landDamA", 7, 50, 56, 0, 56},
|
||||
{ "landDamAst", 13, 50, 17, 0, 17},
|
||||
{ "cutST", 9, 52, 11, 0, 11},
|
||||
{ "atDefNG", 9, 52, 6, 0, 6},
|
||||
{ "die", 13, 56, 8, 8, 8},
|
||||
{ "DieLargeDamageFront", 7, 0, 9, 9, 9},
|
||||
{ "DieLargeDamageBack", 7, 0, 9, 9, 9},
|
||||
{ "DieLargeDamageLeft", 7, 0, 9, 9, 9},
|
||||
{ "DieLargeDamageRight", 7, 0, 9, 9, 9},
|
||||
{ "swimwait", 7, 0, 1, 0, 0},
|
||||
{ "swimingA", 7, 0, 1, 0, 0},
|
||||
{ "swimP", 7, 0, 30, 30, 30},
|
||||
{ "atsSwL", 7, 0, 1, 0, 0},
|
||||
{ "atsSwR", 7, 0, 1, 0, 0},
|
||||
{ "atbSw", 7, 0, 1, 0, 0},
|
||||
{ "swimDive", 7, 0, 1, 0, 0},
|
||||
{ "swimingSt", 7, 0, 1, 0, 0},
|
||||
{ "swimingB", 7, 0, 1, 0, 0},
|
||||
{ "swimingC", 7, 0, 1, 0, 2},
|
||||
{ "SwimAttackMiss", 7, 0, 17, 0, 17},
|
||||
{ "damSwF", 13, 6, 6, 0, 6},
|
||||
{ "damSwB", 13, 6, 6, 0, 6},
|
||||
{ "damSwL", 13, 6, 6, 0, 6},
|
||||
{ "damSwR", 13, 6, 6, 0, 6},
|
||||
{ "damSwW", 13, 6, 6, 0, 6},
|
||||
{ "swimDieA", 13, 6, 25, 25, 25},
|
||||
{ "swimDieP", 7, 0, 12, 8, 12},
|
||||
{ "DieMagma", 7, 0, 10, 10, 10},
|
||||
{ "slideF", 7, 50, 12, 0, 12},
|
||||
{ "slideB", 7, 50, 12, 0, 12},
|
||||
{ "slideFEd", 7, 50, 1, 0, 0},
|
||||
{ "slideBEd", 7, 50, 1, 0, 0},
|
||||
{ "HSjmpL", 8, 1, 1, 0, 2},
|
||||
{ "HSjmpR", 8, 1, 1, 0, 2},
|
||||
{ "HSshoot", 8, 1, 1, 0, 2},
|
||||
{ "HShangEdL", 8, 1, 1, 0, 2},
|
||||
{ "HShangEdR", 8, 1, 1, 0, 2},
|
||||
{ "HShangL", 8, 1, 1, 0, 2},
|
||||
{ "HShangR", 8, 1, 1, 0, 2},
|
||||
{ "HShangwaitL", 8, 1, 1, 0, 2},
|
||||
{ "HShangwaitR", 8, 1, 1, 0, 2},
|
||||
{ "HShangshootL", 8, 1, 1, 0, 2},
|
||||
{ "HShangshootR", 8, 1, 1, 0, 2},
|
||||
{ "HSwallEdL", 8, 1, 1, 0, 2},
|
||||
{ "HSwallEdR", 8, 1, 1, 0, 2},
|
||||
{ "HSwallL", 8, 1, 1, 0, 2},
|
||||
{ "HSwallR", 8, 1, 1, 0, 2},
|
||||
{ "HSwallwaitL", 8, 1, 1, 0, 2},
|
||||
{ "HSwallwaitR", 8, 1, 1, 0, 2},
|
||||
{ "HSwallshootL", 8, 1, 1, 0, 2},
|
||||
{ "HSwallshootR", 8, 1, 1, 0, 2},
|
||||
{ "lie", 7, 0, 1, 0, 0},
|
||||
{ "lieF", 7, 0, 1, 0, 0},
|
||||
{ "waitST", 9, 2, 11, 0, 11},
|
||||
{ "WaitStruggleDamage", 9, 2, 6, 0, 6},
|
||||
{ "waitPP", 7, 0, 1, 0, 0},
|
||||
{ "pushW", 7, 0, 1, 0, 2},
|
||||
{ "pullW", 8, 1, 1, 0, 2},
|
||||
{ "jumpBSt", 7, 0, 1, 0, 3},
|
||||
{ "jumpB", 7, 0, 1, 0, 2},
|
||||
{ "waitD", 13, 56, 56, 0, 56},
|
||||
{ "waitAtoD", 13, 56, 1, 0, 0},
|
||||
{ "WaitServiceA", 13, 6, 26, 26, 26},
|
||||
{ "WaitServiceHotA", 13, 6, 27, 27, 27},
|
||||
{ "dashUpL", 9, 52, 1, 0, 2},
|
||||
{ "dashUpR", 9, 52, 1, 0, 2},
|
||||
{ "climbjumpUSt", 12, 5, 1, 0, 2},
|
||||
{ "climbjumpDSt", 12, 5, 1, 0, 2},
|
||||
{ "climbjumpLSt", 12, 55, 1, 0, 2},
|
||||
{ "climbjumpRSt", 12, 55, 1, 0, 2},
|
||||
{ "climbjumpUEd", 12, 5, 1, 0, 2},
|
||||
{ "climbjumpDEd", 12, 5, 1, 0, 2},
|
||||
{ "climbjumpLEd", 12, 5, 1, 0, 2},
|
||||
{ "climbjumpREd", 12, 5, 1, 0, 2},
|
||||
{ "hangjumpLSt", 7, 50, 1, 0, 2},
|
||||
{ "hangjumpRSt", 7, 50, 1, 0, 2},
|
||||
{ "hangjumpLEd", 7, 50, 1, 0, 2},
|
||||
{ "hangjumpREd", 7, 50, 1, 0, 2},
|
||||
{ "DoorKnobPull", 13, 6, 1, 0, 0},
|
||||
{ "DoorKnobPush", 13, 6, 1, 0, 0},
|
||||
{ "DoorKnobPullLock", 13, 5, 1, 0, 0},
|
||||
{ "DoorKnobPushLock", 13, 5, 1, 0, 0},
|
||||
{ "DoorOpD", 7, 0, 1, 0, 2},
|
||||
{ "dashB", 13, 6, 1, 0, 2},
|
||||
{ "MgDig", 13, 6, 1, 0, 0},
|
||||
{ "MPCutU", 13, 4, 1, 0, 2},
|
||||
{ "MPCutU_Re", 13, 4, 1, 0, 2},
|
||||
{ "MPCutLU", 13, 4, 1, 0, 2},
|
||||
{ "MPCutLU_Re", 13, 4, 1, 0, 2},
|
||||
{ "MPCutL", 13, 4, 1, 0, 2},
|
||||
{ "MPCutL_Re", 13, 4, 1, 0, 2},
|
||||
{ "MPCutLD", 13, 4, 1, 0, 2},
|
||||
{ "MPCutLD_Re", 13, 4, 1, 0, 2},
|
||||
{ "MPCutRD", 13, 4, 1, 0, 2},
|
||||
{ "MPCutRD_Re", 13, 4, 1, 0, 2},
|
||||
{ "MPCutR", 13, 4, 1, 0, 2},
|
||||
{ "MPCutR_Re", 13, 4, 1, 0, 2},
|
||||
{ "MPCutRU", 13, 4, 1, 0, 2},
|
||||
{ "MPCutRU_Re", 13, 4, 1, 0, 2},
|
||||
{ "MPCutD_right", 13, 4, 1, 0, 2},
|
||||
{ "MPCutD_right_Re", 13, 4, 1, 0, 2},
|
||||
{ "MPCutD_left", 13, 4, 1, 0, 2},
|
||||
{ "MPCutD_left_Re", 13, 4, 1, 0, 2},
|
||||
{ "CutPush", 13, 4, 1, 0, 2},
|
||||
{ "CutPush_Re", 13, 4, 1, 0, 2},
|
||||
{ "EnemyGuardJust", 13, 100, 6, 0, 6},
|
||||
{ "LiftB_Before", 7, 0, 1, 0, 0},
|
||||
{ "LiftM_Before", 7, 0, 1, 0, 0},
|
||||
{ "LiftB", 7, 0, 1, 0, 0},
|
||||
{ "LiftS", 7, 0, 1, 0, 0},
|
||||
{ "LiftM", 7, 0, 1, 0, 0},
|
||||
{ "LiftL", 7, 0, 1, 0, 2},
|
||||
{ "ThrowBU", 7, 0, 1, 0, 2},
|
||||
{ "ThrowSU", 7, 0, 1, 0, 2},
|
||||
{ "ThrowMU", 7, 0, 1, 0, 2},
|
||||
{ "ThrowLU", 7, 0, 1, 0, 2},
|
||||
{ "ThrowBD", 7, 0, 1, 0, 2},
|
||||
{ "ThrowSD", 7, 0, 1, 0, 2},
|
||||
{ "MPGuardShield", 7, 2, 4, 0, 4},
|
||||
{ "MPGuardShield_Impact", 7, 2, 1, 0, 2},
|
||||
{ "MPGuardShield_Normal", 7, 2, 1, 0, 2},
|
||||
{ "vjmpChA", 8, 1, 1, 0, 2},
|
||||
{ "RopeHoldWait", 8, 1, 1, 0, 2},
|
||||
{ "RopeClimbL", 8, 1, 1, 0, 2},
|
||||
{ "RopeHoldWait", 8, 1, 1, 0, 2},
|
||||
{ "RopePull", 8, 1, 1, 0, 2},
|
||||
{ "RopeTightHold", 8, 1, 1, 0, 2},
|
||||
{ "RopeFront", 8, 1, 1, 0, 2},
|
||||
{ "RopeBack", 8, 1, 1, 0, 2},
|
||||
{ "RopeStruggle", 8, 1, 11, 0, 11},
|
||||
{ "DiveSt", 7, 0, 1, 0, 2},
|
||||
{ "Dive", 7, 0, 1, 0, 2},
|
||||
{ "StoleLand", 13, 6, 1, 0, 2},
|
||||
{ "DiveDrop", 7, 0, 1, 0, 2},
|
||||
{ "Float", 9, 2, 1, 0, 0},
|
||||
{ "FloatAway", 9, 2, 12, 0, 12},
|
||||
{ "DiveToFloat", 9, 2, 1, 0, 2},
|
||||
{ "RocketBeetle_Wait", 9, 2, 1, 0, 0},
|
||||
{ "RocketBeetle_Shoot", 9, 2, 1, 0, 0},
|
||||
{ "RocketBeetle_Reset", 9, 2, 1, 0, 0},
|
||||
{ "RocketBeetle_Back", 9, 2, 1, 0, 0},
|
||||
{ "WhipU", 8, 4, 1, 0, 2},
|
||||
{ "WhipLU", 8, 4, 1, 0, 2},
|
||||
{ "WhipL", 8, 4, 1, 0, 2},
|
||||
{ "WhipLD", 8, 4, 1, 0, 2},
|
||||
{ "WhipRD", 8, 4, 1, 0, 2},
|
||||
{ "WhipR", 8, 4, 1, 0, 2},
|
||||
{ "WhipRU", 8, 4, 1, 0, 2},
|
||||
{ "WhipBackRD", 7, 0, 1, 0, 2},
|
||||
{ "WhipBackR", 7, 0, 1, 0, 2},
|
||||
{ "WhipBackRU", 7, 0, 1, 0, 2},
|
||||
{ "WhipBackU", 7, 0, 1, 0, 2},
|
||||
{ "WhipBackLU", 7, 0, 1, 0, 2},
|
||||
{ "WhipBackL", 7, 0, 1, 0, 2},
|
||||
{ "WhipBackLD", 7, 0, 1, 0, 2},
|
||||
{ "turnBack", 13, 6, 1, 0, 2},
|
||||
{ "atLtoR", 7, 0, 1, 0, 0},
|
||||
{ "atRtoL", 7, 0, 1, 0, 0},
|
||||
{ "ChuchuStruggle", 9, 52, 11, 0, 11},
|
||||
{ "ChuchuStruggle_big", 9, 52, 11, 0, 11},
|
||||
{ "ChuchuStruggle_act", 9, 52, 1, 0, 2},
|
||||
{"ChuchuStruggle_Escape", 9, 52, 1, 0, 2},
|
||||
{ "Surprise", 13, 56, 12, 0, 12},
|
||||
{ "Danger", 9, 52, 23, 23, 23},
|
||||
{ "RockRide", 9, 52, 12, 0, 12},
|
||||
{ "Notice", 13, 56, 29, 29, 29},
|
||||
{ "waitinsect", 9, 52, 11, 0, 11},
|
||||
{ "numbA", 12, 55, 7, 0, 7},
|
||||
{ "numbB", 12, 5, 7, 0, 7},
|
||||
{ "damFEF", 7, 50, 7, 0, 7},
|
||||
{ "damFEB", 7, 50, 7, 0, 7},
|
||||
{ "damFEL", 7, 50, 7, 0, 7},
|
||||
{ "damFER", 7, 50, 7, 0, 7},
|
||||
{ "getA", 7, 0, 1, 0, 0},
|
||||
{ "getAwait", 7, 0, 1, 21, 21},
|
||||
{ "GetBig", 7, 0, 1, 0, 0},
|
||||
{ "GetBigWait", 7, 0, 1, 20, 20},
|
||||
{ "BoxOpSmall", 7, 0, 1, 0, 0},
|
||||
{ "BoxOp", 7, 0, 1, 28, 28},
|
||||
{ "cutUSt", 7, 100, 1, 0, 2},
|
||||
{ "cutU", 7, 100, 1, 0, 2},
|
||||
{ "cutUEd", 9, 100, 1, 0, 2},
|
||||
{ "cutUNG", 9, 100, 1, 0, 2},
|
||||
{ "WaitLookRound", 13, 56, 1, 22, 22},
|
||||
{ "entrance", 13, 6, 18, 18, 18},
|
||||
{ "MPPosePower", 13, 255, 1, 0, 2},
|
||||
{ "MPPosePowerL", 13, 255, 1, 0, 2},
|
||||
{ "BinswingS", 13, 5, 1, 0, 0},
|
||||
{ "BinswingU", 13, 5, 1, 0, 0},
|
||||
{ "Binout", 13, 5, 19, 19, 19},
|
||||
{ "Drift", 7, 0, 7, 0, 7},
|
||||
{ "swimDieARevive", 13, 6, 17, 0, 17},
|
||||
{ "MgLieFRevive", 7, 0, 17, 0, 17},
|
||||
{ "CatchL", 13, 6, 1, 0, 0},
|
||||
{ "CatchR", 13, 6, 1, 0, 0},
|
||||
{ "BattleReady", 9, 52, 1, 0, 2},
|
||||
{ "RollJump", 13, 6, 1, 0, 2},
|
||||
{ "TansuOpen", 13, 6, 1, 0, 0},
|
||||
{ "TansuClose", 13, 6, 1, 0, 0},
|
||||
{ "BedSleepL", 13, 6, 31, 31, 31},
|
||||
{ "BedSleep", 13, 6, 31, 31, 31},
|
||||
{ "BedAwake", 8, 1, 32, 32, 32},
|
||||
{ "Bird_Glide", 8, 1, 1, 0, 0},
|
||||
{ "Bird_GlideAround", 8, 1, 1, 0, 0},
|
||||
{ "Bird_Reach", 8, 5, 40, 40, 40},
|
||||
{ "Bird_GetWait", 8, 0, 41, 41, 41},
|
||||
{ "Bird_Accel", 8, 1, 4, 0, 4},
|
||||
{ "Bird_Damage", 8, 1, 6, 0, 6},
|
||||
{ "Bird_DamageSmall", 8, 1, 6, 0, 6},
|
||||
{ "Bird_DamageTornado", 8, 1, 7, 0, 7},
|
||||
{ "Bird_Call", 10, 3, 1, 0, 55},
|
||||
{ "SwordPullSt", 13, 6, 33, 33, 33},
|
||||
{ "SwordPullWait", 8, 1, 1, 0, 34},
|
||||
{ "SwordPull", 8, 1, 35, 35, 35},
|
||||
{ "SwordSirenSt", 13, 1, 36, 36, 36},
|
||||
{ "SwordSirenStWait", 8, 1, 36, 36, 36},
|
||||
{ "SwordSirenRaise", 8, 1, 37, 37, 37},
|
||||
{ "SwordSirenRaiseWait", 8, 1, 37, 37, 37},
|
||||
{ "SwordSirenStick", 8, 1, 38, 38, 38},
|
||||
{ "SwordSirenAfter", 8, 100, 39, 39, 39},
|
||||
{ "SwitchDial_st", 9, 4, 1, 0, 2},
|
||||
{ "SwitchDial_stL", 9, 4, 1, 0, 2},
|
||||
{ "SwitchDial_LtoR", 9, 4, 1, 0, 2},
|
||||
{ "SwitchDial_push", 9, 4, 1, 0, 2},
|
||||
{ "TruckLtoR", 12, 5, 1, 0, 2},
|
||||
{ "TruckFrontToBack", 12, 5, 1, 0, 2},
|
||||
{ "TruckJumpSt", 12, 5, 1, 0, 2},
|
||||
{ "TruckJump", 12, 5, 1, 0, 2},
|
||||
{ "TruckJumpEnd", 12, 5, 12, 0, 12},
|
||||
{ "TruckBrake", 12, 5, 11, 0, 11},
|
||||
{ "TruckIn", 13, 6, 1, 0, 0},
|
||||
{ "TruckOut", 13, 6, 1, 0, 0},
|
||||
{ "DieTruck", 13, 56, 42, 42, 42},
|
||||
{ "DieTruckRevive", 13, 56, 17, 0, 17},
|
||||
{ "MgDigIn", 7, 0, 1, 0, 2},
|
||||
{ "MgDigOut", 7, 0, 1, 0, 2},
|
||||
{ "MgLieF_L", 7, 0, 1, 0, 0},
|
||||
{ "MgLieF_R", 7, 0, 1, 0, 0},
|
||||
{ "MgAttackL", 7, 0, 4, 0, 4},
|
||||
{ "MgAttackR", 7, 0, 4, 0, 4},
|
||||
{ "MgDashL", 7, 0, 1, 0, 2},
|
||||
{ "MgDashR", 7, 0, 1, 0, 2},
|
||||
{ "MgDamage", 7, 0, 6, 0, 6},
|
||||
{ "MgWaitBreath", 7, 0, 16, 0, 16},
|
||||
{ "MgLieUp", 7, 0, 1, 0, 2},
|
||||
{ "LiftRemly", 13, 6, 1, 21, 21},
|
||||
{ "ThrowRemlyUp", 13, 6, 1, 21, 21},
|
||||
{ "LiftRemlyUtoM", 13, 6, 1, 21, 21},
|
||||
{ "Bird_FestivalStart", 9, 2, 43, 43, 43},
|
||||
{ "GetSurprise", 13, 6, 44, 44, 44},
|
||||
{ "GirahimGrapple", 9, 2, 1, 0, 2},
|
||||
{ "GirahimPull", 9, 2, 1, 0, 2},
|
||||
{ "GirahimPullUp", 9, 2, 1, 0, 2},
|
||||
{ "GirahimChange", 13, 100, 12, 0, 12},
|
||||
{ "RopeWalk", 7, 0, 1, 0, 2},
|
||||
{ "RopeBend", 9, 2, 1, 0, 2},
|
||||
{ "RopeHangBend", 12, 5, 1, 0, 0},
|
||||
{ "RopeHangUp", 12, 5, 1, 0, 0},
|
||||
{ "RopeBalance", 255, 255, 12, 57, 12},
|
||||
{ "SetSekibanA", 13, 6, 1, 0, 0},
|
||||
{ "SetSekibanB", 13, 6, 1, 0, 0},
|
||||
{ "SetSekibanC", 13, 6, 1, 0, 0},
|
||||
{ "pushTSWst", 7, 0, 1, 0, 2},
|
||||
{ "pushTSW", 7, 0, 1, 0, 2},
|
||||
{ "PushLog", 7, 0, 1, 0, 2},
|
||||
{ "AsuraCutRight", 12, 5, 45, 0, 45},
|
||||
{ "AsuraCutLeft", 12, 5, 45, 0, 45},
|
||||
{ "AsuraCutUp", 12, 5, 45, 0, 45},
|
||||
{ "AsuraCutRightSt", 12, 5, 46, 0, 46},
|
||||
{ "AsuraCutLeftSt", 12, 5, 46, 0, 46},
|
||||
{ "AsuraCutUpSt", 12, 5, 46, 0, 46},
|
||||
{ "AsuraCutRightEd", 12, 5, 47, 0, 47},
|
||||
{ "AsuraCutLeftEd", 12, 5, 47, 0, 47},
|
||||
{ "AsuraCutUpEd", 12, 5, 47, 0, 47},
|
||||
{ "AsuraSwordWait", 12, 5, 1, 0, 2},
|
||||
{ "AsuraSwordLift", 12, 5, 1, 0, 2},
|
||||
{ "BinScoop", 13, 5, 1, 0, 0},
|
||||
{ "Fire", 9, 2, 1, 0, 2},
|
||||
{ "crouch", 13, 6, 1, 0, 2},
|
||||
{ "CannonWait", 13, 6, 48, 48, 48},
|
||||
{ "Seal", 13, 6, 1, 0, 2},
|
||||
{ "SealLoop", 13, 6, 1, 0, 2},
|
||||
{ "SealFinish", 13, 6, 1, 0, 2},
|
||||
{ "FinishEd", 13, 100, 1, 0, 2},
|
||||
{ "SitDown", 13, 6, 1, 0, 0},
|
||||
{ "SitWait", 13, 6, 1, 0, 0},
|
||||
{ "SitWaitServiceA", 13, 6, 52, 52, 52},
|
||||
{ "roofwait", 12, 5, 1, 0, 0},
|
||||
{ "roofhang", 12, 5, 1, 0, 0},
|
||||
{ "MgStruggle", 9, 52, 11, 0, 11},
|
||||
{ "MgStruggle_act", 9, 52, 1, 0, 2},
|
||||
{ "MgStruggle_Escape", 9, 52, 1, 0, 2},
|
||||
{ "KrakenAppearance", 9, 2, 49, 49, 49},
|
||||
{ "MgBury", 7, 0, 1, 0, 0},
|
||||
{ "GetFlower", 7, 0, 50, 50, 50},
|
||||
{ "DoorLargeOpen", 13, 6, 1, 0, 0},
|
||||
{ "DoorLargeClose", 7, 0, 1, 0, 0},
|
||||
{ "HarpPlayFinish", 7, 0, 1, 0, 0},
|
||||
{ "LightningL", 13, 4, 53, 53, 53},
|
||||
{ "LightningR", 13, 4, 53, 53, 53},
|
||||
{ "LastAttack", 8, 100, 54, 54, 54},
|
||||
{ "at", 255, 255, 57, 57, 2},
|
||||
{ "take", 255, 255, 57, 57, 57},
|
||||
{ "takeL", 255, 255, 57, 57, 57},
|
||||
{ "takeR", 255, 255, 57, 57, 57},
|
||||
{ "Take2", 255, 255, 57, 57, 57},
|
||||
{ "waitAtoS", 9, 1, 57, 57, 2},
|
||||
{ "damD", 255, 56, 6, 57, 6},
|
||||
{ "Ashootwait", 13, 1, 57, 57, 2},
|
||||
{ "Arelord", 8, 3, 57, 57, 2},
|
||||
{ "Ashoot", 8, 3, 57, 57, 2},
|
||||
{ "ArelordTame", 8, 3, 57, 57, 2},
|
||||
{ "Ashootwait", 13, 1, 57, 57, 2},
|
||||
{ "Arelord", 8, 3, 57, 57, 2},
|
||||
{ "Ashoot", 8, 3, 57, 57, 2},
|
||||
{ "damSw", 13, 6, 6, 57, 6},
|
||||
{ "HSwait", 8, 1, 57, 57, 2},
|
||||
{ "VacuumWait", 12, 5, 57, 57, 57},
|
||||
{ "MPPoseFront", 13, 255, 57, 57, 2},
|
||||
{ "MPPoseAround", 13, 255, 57, 57, 57},
|
||||
{ "MPPoseAroundBack", 13, 255, 57, 57, 2},
|
||||
{ "MPPoseDashFront", 13, 255, 57, 57, 2},
|
||||
{ "MPPoseDashAround", 13, 255, 57, 57, 57},
|
||||
{ "MPPoseDashAroundBack", 13, 255, 57, 57, 2},
|
||||
{ "LiftB_UtoD", 7, 0, 57, 57, 2},
|
||||
{ "LiftS_UtoD", 7, 0, 57, 57, 57},
|
||||
{ "LiftLWalk", 7, 0, 57, 57, 2},
|
||||
{ "MPGuardPose", 255, 255, 57, 57, 57},
|
||||
{ "RockRide", 255, 56, 12, 57, 12},
|
||||
{ "BinDrinkSt", 255, 5, 13, 13, 13},
|
||||
{ "BinDrink", 255, 5, 14, 57, 14},
|
||||
{ "BinDrinkEd", 255, 5, 15, 57, 15},
|
||||
{ "HarpPose", 7, 6, 1, 0, 0},
|
||||
{ "HarpPlayGo", 7, 1, 1, 0, 0},
|
||||
{ "HarpPlayCome", 7, 0, 1, 0, 0},
|
||||
{ "BinHold", 255, 5, 57, 57, 57},
|
||||
{ "BinShield", 9, 5, 24, 24, 24},
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
const s32 daPlayerModelBase_c::sUnkDuration = 0x2400;
|
||||
|
||||
const u8 daPlayerModelBase_c::sShieldDurabilities[10] = {16, 24, 32, 24, 36, 48, 12, 16, 20, 48};
|
||||
const u8 daPlayerModelBase_c::sShieldRegenTimes[10] = {0, 0, 0, 0, 0, 0, 90, 90, 90, 0};
|
||||
|
||||
@@ -253,7 +702,7 @@ void daPlayerModelBase_c::allocFrmHeap(mHeapAllocator_c *allocator, u32 size, co
|
||||
}
|
||||
|
||||
void daPlayerModelBase_c::allocExternalDataBuffers() {
|
||||
mpExternalAnmCharBuffer = heap_allocator.alloc(0xD800);
|
||||
mpExternalAnmCharBuffer = heap_allocator.alloc(0x2400 * 6);
|
||||
mpAnmCharBuffer = heap_allocator.alloc(0x1000);
|
||||
mpTexPatBuffer = heap_allocator.alloc(0x1000);
|
||||
mpTexSrtBuffer = heap_allocator.alloc(0x1000);
|
||||
@@ -973,6 +1422,16 @@ void daPlayerModelBase_c::fn_8005F890(nw4r::math::MTX34 *result) {
|
||||
}
|
||||
}
|
||||
|
||||
void daPlayerModelBase_c::fn_8005FB90(nw4r::math::MTX34 *result) {
|
||||
// Will suffer from the same problem as above, so not too interested rn
|
||||
static const u16 sNodeIdsLegs1[] = {PLAYER_MAIN_NODE_LEG_L1, PLAYER_MAIN_NODE_LEG_R1};
|
||||
static const Vec sLegVecs[] = {
|
||||
{ 30.0f, 0.0f, 0.0f},
|
||||
{39.3635f, 0.0f, 0.0f},
|
||||
{ 14.18f, 0.0f, 0.0f}
|
||||
};
|
||||
}
|
||||
|
||||
void daPlayerModelBase_c::mainModelTimingA(u32 nodeId, nw4r::g3d::ChrAnmResult *result) {
|
||||
adjustMainModelChrAnm((PlayerMainModelNode_e)nodeId, result);
|
||||
}
|
||||
@@ -988,7 +1447,11 @@ void daPlayerModelBase_c::mainModelTimingB(u32 nodeId, nw4r::g3d::WorldMtxManip
|
||||
}
|
||||
}
|
||||
|
||||
void daPlayerModelBase_c::mainModelTimingC(nw4r::math::MTX34 *result) {}
|
||||
void daPlayerModelBase_c::mainModelTimingC(nw4r::math::MTX34 *result) {
|
||||
fn_8005FB90(result);
|
||||
fn_8005F890(result);
|
||||
mMainMdl.setField_0x58(1);
|
||||
}
|
||||
|
||||
void daPlayerModelBase_c::handsCallbackC(
|
||||
nw4r::math::MTX34 *pMtxArray, nw4r::g3d::ResMdl mdl, nw4r::g3d::FuncObjCalcWorld *pFuncObj
|
||||
@@ -1038,6 +1501,37 @@ void daPlayerModelBase_c::setShieldTransform(bool inHand) {
|
||||
setTransformAndCalc(mShieldMdl, &targetTransform);
|
||||
}
|
||||
|
||||
void daPlayerModelBase_c::loadTwoAnmChrs(s32 childIdx, s32 animIdx, s32 animIdx2, bool b) {
|
||||
void *data = (u8 *)mpExternalAnmCharBuffer + childIdx * 0x2400;
|
||||
u32 size1;
|
||||
void *data2;
|
||||
u32 size2;
|
||||
|
||||
s32 otherChildIdx = 3;
|
||||
|
||||
if (childIdx == 0) {
|
||||
otherChildIdx = 1;
|
||||
}
|
||||
|
||||
if (animIdx == animIdx2) {
|
||||
size1 = 0x2400 * 2;
|
||||
if (b) {
|
||||
size1 *= 2;
|
||||
}
|
||||
size2 = 0;
|
||||
data2 = data;
|
||||
} else {
|
||||
size1 = 0x2400;
|
||||
if (b) {
|
||||
size1 *= 2;
|
||||
}
|
||||
size2 = size1;
|
||||
data2 = (u8 *)data + size1;
|
||||
}
|
||||
loadAnmChr(childIdx, animIdx, data, size1);
|
||||
loadAnmChr(otherChildIdx, animIdx2, data2, size2);
|
||||
}
|
||||
|
||||
nw4r::g3d::ResFile daPlayerModelBase_c::getItemResFile(const char *name, mAllocator_c &allocator) {
|
||||
SizedString<64> buf;
|
||||
buf.sprintf("dat/%s.brresC", name);
|
||||
@@ -1106,19 +1600,103 @@ nw4r::g3d::ResAnmTexSrt daPlayerModelBase_c::getExternalAnmTexSrt(const char *na
|
||||
return result;
|
||||
}
|
||||
|
||||
void daPlayerModelBase_c::loadSound(nw4r::g3d::ResFile file, const char *name, s32 animIdx) {
|
||||
bool daPlayerModelBase_c::canStart(bool force, u16 faceIdx, u16 invalidValue, u16 *out1, u16 *out2) const {
|
||||
if (force) {
|
||||
*out2 = faceIdx;
|
||||
} else {
|
||||
*out1 = faceIdx;
|
||||
if (*out2 != invalidValue) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void daPlayerModelBase_c::setFaceTexPat(s32 faceIdx, bool force) {
|
||||
// TODO branching
|
||||
if ((force || ((mFaceAnmTexPatIdx1 != faceIdx || mFaceAnmTexPatIdx1 != 1) &&
|
||||
(!checkFaceUpdateFlags(0x40000000) || (faceIdx != 1)))) &&
|
||||
faceIdx != 0x38) {
|
||||
offFaceUpdateFlags(0x40000000);
|
||||
if (canStart(force, faceIdx, 0x39, &mFaceAnmTexPatIdx1, &mFaceAnmTexPatIdx2)) {
|
||||
nw4r::g3d::ResAnmTexPat anm = getExternalAnmTexPat(sFaceResNames[faceIdx], mpTexPatBuffer, 0x1000);
|
||||
mFaceTexPat.setAnm(mFaceMdl, anm, 0, m3d::PLAY_MODE_4);
|
||||
mFaceTexPat.setFrame(0.0f, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void daPlayerModelBase_c::setFaceTexSrt(s32 faceIdx, bool force) {
|
||||
offFaceUpdateFlags(0x80000000);
|
||||
if (canStart(force, faceIdx, 0x39, &mFaceAnmTexSrtIdx1, &mFaceAnmTexSrtIdx2)) {
|
||||
nw4r::g3d::ResAnmTexSrt anm = getExternalAnmTexSrt(sFaceResNames[faceIdx], mpTexSrtBuffer, 0x1000);
|
||||
mFaceTexSrt.setAnm(mFaceMdl, anm, 0, m3d::PLAY_MODE_4);
|
||||
mFaceTexSrt.setFrame(0.0f, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void daPlayerModelBase_c::setFaceAnmChr(s32 faceIdx, bool force) {
|
||||
// TODO branching
|
||||
if (faceIdx != 0x38 && (force || (!checkFaceUpdateFlags(0x20000000) || (faceIdx != 0 && faceIdx != 2)))) {
|
||||
offFaceUpdateFlags(0x20000000);
|
||||
if (canStart(force, faceIdx, 0x39, &mFaceAnmChrIdx1, &mFaceAnmChrIdx2)) {
|
||||
nw4r::g3d::ResAnmChr anm = getExternalAnmChr(sFaceResNames[faceIdx], mpAnmCharBuffer, 0x1000);
|
||||
mFaceAnmChr.setAnm(mFaceMdl, anm, m3d::PLAY_MODE_4);
|
||||
mFaceAnmChr.setFrameOnly(0.0f);
|
||||
mFaceMdl.setAnm(mFaceAnmChr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void daPlayerModelBase_c::loadAnmChr(s32 childIdx, s32 animIdx, void *dest, u32 maxSize) {
|
||||
nw4r::g3d::ResAnmChr anm = getExternalAnmChr(sAnimations[animIdx].animName, dest, maxSize);
|
||||
mAnmChrs[childIdx].setAnm(mMainMdl, anm, m3d::PLAY_MODE_4);
|
||||
nw4r::g3d::AnmObjChr *animObj = static_cast<nw4r::g3d::AnmObjChr *>(mAnmChrs[childIdx].getAnimObj());
|
||||
animObj->Release();
|
||||
nw4r::g3d::ResMdl bodyMdl = mMainMdl.getResMdl();
|
||||
if (isBodyAnmPart_0_2_4(childIdx)) {
|
||||
animObj->Bind(bodyMdl, PLAYER_MAIN_NODE_WAIST, nw4r::g3d::AnmObjChr::BIND_PARTIAL);
|
||||
animObj->Bind(bodyMdl, PLAYER_MAIN_NODE_CENTER, nw4r::g3d::AnmObjChr::BIND_ONE);
|
||||
} else {
|
||||
animObj->Bind(bodyMdl, PLAYER_MAIN_NODE_BACKBONE_1, nw4r::g3d::AnmObjChr::BIND_PARTIAL);
|
||||
}
|
||||
mAnmChrBlend.attach(childIdx, &mAnmChrs[childIdx], 1.0f);
|
||||
mMainMdl.setAnm(mAnmChrBlend);
|
||||
mAnimations[childIdx] = animIdx;
|
||||
mAnmChrs[childIdx].setField_0x35(0);
|
||||
}
|
||||
|
||||
void daPlayerModelBase_c::removeAnmChr(s32 childIdx) {
|
||||
mAnmChrs[childIdx].getAnimObj()->Release();
|
||||
mAnmChrBlend.detach(childIdx);
|
||||
mAnimations[childIdx] = 443;
|
||||
}
|
||||
|
||||
void daPlayerModelBase_c::loadSound(nw4r::g3d::ResFile &file, const char *name, s32 childIdx) {
|
||||
SoundSource *s = getSoundSource();
|
||||
mCurrentAnmChrIdx = animIdx;
|
||||
mCurrentAnmChrIdx = childIdx;
|
||||
SizedString<64> path;
|
||||
path.sprintf("%s.brasd", name);
|
||||
void *dat = file.GetExternalData(path);
|
||||
if (dat == nullptr && file == mCurrentRes) {
|
||||
dat = mPlCommonSoundRes.GetExternalData(path);
|
||||
}
|
||||
mMainMdl.setSoundRelated(mAnimations[animIdx], dat);
|
||||
mMainMdl.setSoundRelated(mAnimations[childIdx], dat);
|
||||
s->load(dat, name);
|
||||
}
|
||||
|
||||
void daPlayerModelBase_c::loadSoundForAnim(s32 childIdx) {
|
||||
SoundSource *s = getSoundSource();
|
||||
s32 anim = mAnimations[childIdx];
|
||||
mCurrentAnmChrIdx = childIdx;
|
||||
if (anim != mMainMdl.getField_0x5A()) {
|
||||
loadSound(mCurrentRes.IsValid() ? mCurrentRes : mPlCommonSoundRes, sAnimations[anim].animName, childIdx);
|
||||
} else {
|
||||
s->load(mMainMdl.getSoundData(), sAnimations[anim].animName);
|
||||
}
|
||||
s->setRate(mAnmChrs[childIdx].getRate());
|
||||
}
|
||||
|
||||
void daPlayerModelBase_c::syncSoundWithAnim() {
|
||||
f32 frame = mAnmChrs[mCurrentAnmChrIdx].getFrame();
|
||||
getSoundSource()->setFrame(frame);
|
||||
@@ -1209,6 +1787,51 @@ void daPlayerModelBase_c::updateCachedPositions() {
|
||||
}
|
||||
}
|
||||
|
||||
void daPlayerModelBase_c::setPosCopy3() {
|
||||
static const Vec posCopy3v0 = {0.0f, 150.0f, 0.0f};
|
||||
static const Vec posCopy3v1 = {0.0f, 40.0f, 0.0f};
|
||||
static const Vec posCopy3v2 = {0.0f, 95.0f, 0.0f};
|
||||
static const Vec posCopy3v3 = {0.0f, 14.0f, 0.0f};
|
||||
if (checkCurrentAction(/* FREE_FALL*/ 0x13) || checkCurrentAction(/* WALKING_ON_TIGHTROPE */ 0x81)) {
|
||||
poscopy3 = position;
|
||||
poscopy3.y += 180.0f;
|
||||
} else if (checkCurrentAction(/* BEING_PULLED_BY_CLAWS */ 0x5A)) {
|
||||
poscopy3 = poscopy2;
|
||||
} else if (checkActionFlags(FLG0_SWING_ROPE)) {
|
||||
poscopy3 = position;
|
||||
} else if (checkActionFlagsCont(0x20000000) || checkCurrentAction(0x70) ||
|
||||
checkCurrentAction(/* HANG_ON_ZIP */ 0x85)) {
|
||||
poscopy3 = position;
|
||||
poscopy3.y -= 100.0f;
|
||||
} else if (checkActionFlags(FLG0_HANGING_LEDGE) || (getCurrentAction() >= 0x82 && getCurrentAction() <= 0x84)) {
|
||||
const nw4r::math::MTX34 *c = mHeadMdl.getLocalMtx();
|
||||
poscopy3.x = c->_03;
|
||||
poscopy3.y = c->_13;
|
||||
poscopy3.z = c->_23;
|
||||
} else if (checkCurrentAction(/* SLIDING */ 0x09)) {
|
||||
poscopy3 = position + mVec3_c(posCopy3v2);
|
||||
} else {
|
||||
mMtx_c mtx;
|
||||
mMainMdl.getLocalMtx(mtx);
|
||||
|
||||
f32 f;
|
||||
const Vec *v;
|
||||
if (checkActionFlags(FLG0_IN_WATER) || checkCurrentAction(/* SWIM_DASH_INFO_AIR */ 0x57)) {
|
||||
v = &posCopy3v3;
|
||||
f = position.y;
|
||||
} else {
|
||||
if (checkCurrentAction(/* VOID_SAND */ 0x4C)) {
|
||||
v = &posCopy3v3;
|
||||
} else {
|
||||
v = checkActionFlags(FLG0_CRAWLING) ? &posCopy3v1 : &posCopy3v0;
|
||||
}
|
||||
f = mtx.m[1][3];
|
||||
}
|
||||
poscopy3.set(v->x + position.x, v->y, v->z + position.z);
|
||||
poscopy3.y += f;
|
||||
}
|
||||
}
|
||||
|
||||
void daPlayerModelBase_c::fn_80061410() {
|
||||
// Just getting weak functions to appear here
|
||||
alwaysRet0();
|
||||
|
||||
Reference in New Issue
Block a user