d_a_player_main work

This commit is contained in:
LagoLunatic
2023-10-18 18:13:26 -04:00
parent a8c3d92d69
commit 1299f85522
18 changed files with 826 additions and 212 deletions
@@ -4,6 +4,7 @@
#include "JSystem/J3DGraphAnimator/J3DCluster.h"
#include "JSystem/J3DGraphBase/J3DTransform.h"
#include "dolphin/types.h"
#include "global.h"
class J3DModelData;
class J3DVertexBuffer;
@@ -79,15 +80,12 @@ public:
private:
/* 0x04 */ u16* mPosData;
/* 0x08 */ u16* mNrmData;
/* 0x0C */ Mtx* mPosMtx;
/* 0x10 */ Mtx33* mNrmMtx;
/* 0x14 */ u32 mFlags;
/* 0x18 */ u8 field_0x18;
/* 0x19 */ u8 field_0x19;
/* 0x1C */ int field_0x1c;
/* 0x20 */ int field_0x20;
/* 0x24 */ J3DSkinNList* mSkinNList;
};
/* 0x0C */ Mtx33* mNrmMtx;
/* 0x10 */ u32 mFlags;
/* 0x14 */ u8 field_0x14;
}; // Size: 0x18
STATIC_ASSERT(sizeof(J3DSkinDeform) == 0x18);
class J3DDeformer {
public:
+4
View File
@@ -107,6 +107,10 @@ public:
bool checkStatus(u32 status) { return mFlags & status; }
void initStatus(u32 status);
int getParticleNumber() {
return mActiveParticles.getNumLinks() + mChildParticles.getNumLinks();
}
u8 getGlobalAlpha() { return mGlobalPrmColor.a; }
void setGlobalAlpha(u8 alpha) { mGlobalPrmColor.a = alpha; }
void setGlobalRTMatrix(MtxP mtx) {
+68 -6
View File
@@ -12,8 +12,13 @@ public:
void init();
virtual ~daPy_matAnm_c();
virtual ~daPy_matAnm_c() {}
virtual void calc(J3DMaterial*) const;
static u8 m_maba_flg;
static u8 m_eye_move_flg;
static u8 m_maba_timer;
static u8 m_morf_frame;
};
class daPy_mtxFollowEcallBack_c : public dPa_levelEcallBack {
@@ -26,13 +31,17 @@ public:
/* 0x04 */ JPABaseEmitter* mpEmitter;
/* 0x08 */ MtxP mpMtx;
};
}; // Size: 0x0C
STATIC_ASSERT(sizeof(daPy_mtxFollowEcallBack_c) == 0x0C);
class daPy_HIO_c {
public:
};
daPy_HIO_c();
public:
/* 0x00 */ u8 temp[0x3F - 0x00];
}; // Size: 0x3F
class daPy_demo_c {
public:
@@ -68,12 +77,12 @@ private:
class daPy_py_c : public fopAc_ac_c {
public:
enum daPy_PROC {};
enum daPy_FLG0 {
daPyFlg0_UNK10 = 0x00000010,
daPyFlg0_CUT_AT_FLG = 0x00000040,
daPyFlg0_PUSH_PULL_KEEP = 0x00000800,
daPyFlg0_UNK1000 = 0x00001000,
daPyFlg0_UNK4000 = 0x00004000,
daPyFlg0_UNK200000 = 0x00200000,
daPyFlg0_EQUIP_HEAVY_BOOTS = 0x02000000,
daPyFlg0_NO_DRAW = 0x08000000,
@@ -86,6 +95,7 @@ public:
daPy_FLG1_FORCE_VOMIT_JUMP = 0x00000010,
daPy_FLG1_NPC_NOT_CHANGE = 0x00000040,
daPy_FLG1_CONFUSE = 0x00000100,
daPy_FLG1_FREEZE_STATE = 0x00000800,
daPy_FLG1_SHIP_TACT = 0x00001000,
daPy_FLG1_USE_ARROW_EFFECT = 0x00002000,
daPy_FLG1_LETTER_READ_EYE_MOVE = 0x00004000,
@@ -96,6 +106,24 @@ public:
daPy_FLG1_LAST_COMBO_WAIT = 0x20000000,
};
enum daPy_RFLG0 {
daPy_RFLG0_ROPE_GRAB_RIGHT_HAND = 0x00000004,
daPy_RFLG0_GRAB_UP_END = 0x00000020,
daPy_RFLG0_AUTO_JUMP_LAND = 0x00000040,
daPy_RFLG0_RIGHT_FOOT_ON_GROUND = 0x00000400,
daPy_RFLG0_LEFT_FOOT_ON_GROUND = 0x00000800,
daPy_RFLG0_FRONT_ROLL_CRASH = 0x00002000,
daPy_RFLG0_UNK4000 = 0x00004000,
daPy_RFLG0_GRAB_UP_START = 0x00008000,
daPy_RFLG0_ATTENTION_LOCK = 0x00010000,
daPy_RFLG0_HAMMER_QUAKE = 0x00020000,
daPy_RFLG0_GRAB_PUT_START = 0x00400000,
daPy_RFLG0_FAIRY_USE = 0x02000000,
// 0x00000001 and 0x00000002 set in daPy_lk_c::dProcLastCombo
// 0x00001000 set in daPy_lk_c::procCrawlMove_init, checked in checkNoCollisionCorret__9daPy_lk_cFv
// 0x04000000 set in daPy_lk_c::procShipPaddle
};
/* 0x290 */ u8 mAttackState;
/* 0x291 */ u8 field_0x291;
/* 0x292 */ u8 field_0x292[0x294 - 0x292];
@@ -104,7 +132,7 @@ public:
/* 0x298 */ int field_0x298;
/* 0x29C */ u32 mNoResetFlg0;
/* 0x2A0 */ u32 mNoResetFlg1;
/* 0x2A4 */ u32 field_0x2a4;
/* 0x2A4 */ u32 mResetFlg0;
/* 0x2A8 */ f32 field_0x2a8;
/* 0x2AC */ u8 field_0x2AC[0x2B0 - 0x2AC];
/* 0x2B0 */ f32 field_0x2b0;
@@ -149,6 +177,7 @@ public:
void onConfuse() { onNoResetFlg1(daPy_FLG1_CONFUSE); }
void offConfuse() { offNoResetFlg1(daPy_FLG1_CONFUSE); }
bool checkConfuse() const { return checkNoResetFlg1(daPy_FLG1_CONFUSE); }
bool checkFreezeState() const { return checkNoResetFlg1(daPy_FLG1_FREEZE_STATE); }
void onShipTact() { onNoResetFlg1(daPy_FLG1_SHIP_TACT); }
void offShipTact() { offNoResetFlg1(daPy_FLG1_SHIP_TACT); }
void onUseArrowEffect() { onNoResetFlg1(daPy_FLG1_USE_ARROW_EFFECT); }
@@ -159,6 +188,38 @@ public:
void onVineCatch() { onNoResetFlg1(daPy_FLG1_VINE_CATCH); }
bool checkLastComboWait() const { return checkNoResetFlg1(daPy_FLG1_LAST_COMBO_WAIT); }
void onResetFlg0(daPy_RFLG0 flag) { mResetFlg0 |= flag; }
void offNoResetFlg0(daPy_RFLG0 flag) { mResetFlg0 &= ~flag; }
bool checkResetFlg0(daPy_RFLG0 flag) const { return mResetFlg0 & flag; }
bool getRopeGrabRightHand() const { return checkResetFlg0(daPy_RFLG0_ROPE_GRAB_RIGHT_HAND); }
bool getGrabUpEnd() const { return checkResetFlg0(daPy_RFLG0_GRAB_UP_END); }
bool getAutoJumpLand() const { return checkResetFlg0(daPy_RFLG0_AUTO_JUMP_LAND); }
bool getRightFootOnGround() const { return checkResetFlg0(daPy_RFLG0_RIGHT_FOOT_ON_GROUND); }
bool getLeftFootOnGround() const { return checkResetFlg0(daPy_RFLG0_LEFT_FOOT_ON_GROUND); }
bool checkFrontRollCrash() const { return checkResetFlg0(daPy_RFLG0_FRONT_ROLL_CRASH); }
bool getGrabUpStart() const { return checkResetFlg0(daPy_RFLG0_GRAB_UP_START); }
bool checkAttentionLock() const { return checkResetFlg0(daPy_RFLG0_ATTENTION_LOCK); }
bool checkHammerQuake() const { return checkResetFlg0(daPy_RFLG0_HAMMER_QUAKE); }
bool getGrabPutStart() const { return checkResetFlg0(daPy_RFLG0_GRAB_PUT_START); }
bool checkFairyUse() const { return checkResetFlg0(daPy_RFLG0_FAIRY_USE); }
// checkSwordMiniGame__9daPy_py_cCFv
// checkNormalSwordEquip__9daPy_py_cCFv
// checkBowMiniGame__9daPy_py_cCFv
// checkUseArrowEffect__9daPy_py_cCFv
// checkNpcNotChange__9daPy_py_cCFv
// checkFinalMasterSwordEquip__9daPy_py_cCFv
// getHeavyState__9daPy_py_cFv
// checkEquipHoverBoots__9daPy_py_cCFv
// getHeavyStateAndBoots__9daPy_py_cFv
// onNpcCallCommand__9daPy_py_cFv
// onForceVomitJumpShort__9daPy_py_cFv
// onNoFallVoice__9daPy_py_cFv
// checkGrabWear__9daPy_py_cCFv
// checkArrowShoot__9daPy_py_cCFv
// onScopeCancel__9daPy_py_cFv
// getFootOnGround__9daPy_py_cCFv
virtual MtxP getLeftHandMatrix() = 0;
virtual MtxP getRightHandMatrix() = 0;
virtual f32 getGroundY() = 0;
@@ -208,6 +269,7 @@ public:
void setDoButtonQuake();
void stopDoButtonQuake(int);
void getRopePos() const;
f32 getSpeedF() const { return speedF; }
};
#endif /* D_A_PLAYER */
+278 -123
View File
@@ -17,15 +17,15 @@ public:
/* 0x0 */ u16 mIdx;
/* 0x2 */ u16 field_0x2;
/* 0x4 */ u32 field_0x4;
/* 0x8 */ u8* mBuffer;
/* 0xC */ JKRSolidHeap* mAnimeHeap;
/* 0x8 */ void* m_buffer;
/* 0xC */ JKRSolidHeap* mpAnimeHeap;
};
class daPy_sightPacket_c : public dDlst_base_c {
public:
daPy_sightPacket_c() {}
virtual void draw();
virtual ~daPy_sightPacket_c();
virtual ~daPy_sightPacket_c() {}
void setSight();
void setSightImage(ResTIMG*);
@@ -47,16 +47,14 @@ private:
class daPy_actorKeep_c {
public:
daPy_actorKeep_c() { clearData(); }
daPy_actorKeep_c() {}
void setActor();
void setData(fopAc_ac_c*);
void clearData();
u32 getID() const { return mID; }
void setID(u32 id) { mID = id; }
fopAc_ac_c* getActor() const { return mActor; }
fopAc_ac_c* getActorConst() const { return mActor; }
fopAc_ac_c* getActor() { return mActor; }
private:
/* 0x0 */ u32 mID;
@@ -65,85 +63,98 @@ private:
class daPy_footEffect_c {
public:
~daPy_footEffect_c();
daPy_footEffect_c();
/* 0x0 */ u8 field_0x0[0x4C];
~daPy_footEffect_c() {}
daPy_footEffect_c() {}
/* 0x00 */ dPa_smokeEcallBack mSmokeCb;
/* 0x20 */ dPa_followEcallBack mFollowCb;
/* 0x34 */ u8 field_0x34[0x4C - 0x34];
};
class daPy_fanSwingEcallBack_c {
class daPy_fanSwingEcallBack_c : public dPa_levelEcallBack {
public:
void execute(JPABaseEmitter*);
~daPy_fanSwingEcallBack_c();
void setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char);
};
~daPy_fanSwingEcallBack_c() {}
void setup(JPABaseEmitter* emitter, const cXyz*, const csXyz*, s8) {
emitter->becomeImmortalEmitter();
mpEmitter = emitter;
field_0x4 = 0;
}
/* 0x4 */ int field_0x4;
/* 0x8 */ JPABaseEmitter* mpEmitter;
}; // Size: 0xC
class daPy_waterDropPcallBack_c {
class daPy_waterDropPcallBack_c : public JPACallBackBase2<JPABaseEmitter*, JPABaseParticle*> {
public:
void execute(JPABaseEmitter*, JPABaseParticle*);
~daPy_waterDropPcallBack_c();
~daPy_waterDropPcallBack_c() {}
/* 0x4 */ u8 field_0x4[0x4];
/* 0x8 */ dBgS_ObjGndChk field_0x8;
};
class daPy_swimTailEcallBack_c {
class daPy_swimTailEcallBack_c : public dPa_levelEcallBack {
public:
void setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char);
void setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8);
void getMaxWaterY(JGeometry::TVec3<float>*);
void remove();
void execute(JPABaseEmitter*);
void draw(JPABaseEmitter*);
~daPy_swimTailEcallBack_c();
daPy_swimTailEcallBack_c();
~daPy_swimTailEcallBack_c() {}
daPy_swimTailEcallBack_c() {}
/* 0x0 */ u8 field_0x0[0x28];
};
/* 0x4 */ u8 field_0x4[0x24];
}; // Size: 0x28
STATIC_ASSERT(sizeof(daPy_swimTailEcallBack_c) == 0x28);
class daPy_waterDropEcallBack_c {
class daPy_followEcallBack_c : public dPa_levelEcallBack {
public:
void execute(JPABaseEmitter*);
void setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char);
void setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8);
void end();
~daPy_waterDropEcallBack_c();
~daPy_followEcallBack_c() {}
/* 0x0 */ u8 field_0x0[0x20];
};
/* 0x04 */ JPABaseEmitter* mpEmitter;
/* 0x08 */ cXyz field_0x08;
/* 0x14 */ u8 field_0x14[0x1C - 0x14];
}; // Size: 0x1C
class daPy_followEcallBack_c {
class daPy_waterDropEcallBack_c : public daPy_followEcallBack_c {
public:
void execute(JPABaseEmitter*);
void setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char);
void setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8);
void end();
~daPy_followEcallBack_c();
daPy_waterDropEcallBack_c() {}
~daPy_waterDropEcallBack_c() {}
/* 0x0 */ u8 field_0x0[0x1C];
};
/* 0x1C */ u8 field_0x1C[0x4];
}; // Size: 0x20
class daPy_dmEcallBack_c {
class daPy_dmEcallBack_c : public daPy_mtxFollowEcallBack_c {
public:
void execute(JPABaseEmitter*);
~daPy_dmEcallBack_c();
daPy_dmEcallBack_c();
~daPy_dmEcallBack_c() {}
daPy_dmEcallBack_c() {}
}; // Size: 0x0C
/* 0x0 */ u8 field_0x0[0xC];
};
class daPy_mtxPosFollowEcallBack_c {
class daPy_mtxPosFollowEcallBack_c : public daPy_mtxFollowEcallBack_c {
public:
void makeEmitterColor(unsigned short, MtxP, const cXyz*, const csXyz*, const GXColor*, const GXColor*);
void makeEmitterColor(u16, MtxP, const cXyz*, const csXyz*, const GXColor*, const GXColor*);
void execute(JPABaseEmitter*);
daPy_mtxPosFollowEcallBack_c();
~daPy_mtxPosFollowEcallBack_c();
daPy_mtxPosFollowEcallBack_c() {}
~daPy_mtxPosFollowEcallBack_c() {}
/* 0x0 */ u8 field_0x0[0x10];
};
/* 0xC */ u8 field_0xC[0x4];
}; // Size: 0x10
class daPy_swBlur_c : public J3DPacket {
public:
void initSwBlur(MtxP, int, float, int);
void copySwBlur(MtxP, int);
void draw();
~daPy_swBlur_c();
~daPy_swBlur_c() {}
/* 0x010 */ u8 field_0x010[0x014 - 0x010];
/* 0x014 */ int field_0x014;
@@ -160,24 +171,43 @@ class daPy_footData_c {
public:
~daPy_footData_c();
daPy_footData_c();
/* 0x0 */ u8 field_0x0[0x118];
/* 0x000 */ u8 field_0x000[0x034 - 0x000];
/* 0x034 */ dBgS_LinkGndChk field_0x034;
/* 0x088 */ u8 field_0x088[0x118 - 0x088];
};
struct MagicArmorAuraEntry {
struct daPy_aura_c {
J3DModel* mpYaura00Model;
f32 field_0x4;
f32 mFrame;
void setModel(J3DModel* model) { mpYaura00Model = model; }
J3DModel* getModel() { return mpYaura00Model; }
void setFrame(f32 frame) { mFrame = frame; }
f32 getFrame() { return mFrame; }
};
class daPy_anmIndex_c;
class daPy_lk_c : public daPy_py_c {
public:
enum daPy_PROC {};
enum daPy_HEAP_TYPE {};
enum daPy_ANM {};
enum daPy_UPPER {};
enum {
PART_UNDER_e = 0,
PART_UPPER_e = 1,
};
enum {
UNDER_MOVE0_e = 0,
};
void getBoomerangCatchPos() const;
void getLineTopPos();
void getHookshotRootPos() const;
@@ -227,7 +257,7 @@ public:
void drawShadow();
void offBodyEffect();
void onBodyEffect();
void draw();
BOOL draw();
void setAtnList();
void setActorPointer();
void setTalkStatus();
@@ -312,7 +342,7 @@ public:
void setSubjectMode();
void checkMaskDraw();
void checkSubjectEnd(int);
void checkGuardAccept();
BOOL checkGuardAccept();
void cancelNoDamageMode();
void commonProcInit(daPy_lk_c::daPy_PROC procID);
void procScope_init(int);
@@ -436,25 +466,25 @@ public:
void setDemoData();
void setStickData();
void setBgCheckParam();
void setParamData(int, int, int, int);
u32 setParamData(int, int, int, int);
void checkLavaFace(cXyz*, int);
void checkFallCode();
void startRestartRoom(u32, int, f32, int);
BOOL startRestartRoom(u32, int, f32, int);
void checkSuccessGuard(int);
void setShapeAngleOnGround();
void setStepsOffset();
void setBeltConveyerPower();
void setWindAtPower();
void checkRoofRestart();
void execute();
void playerDelete();
BOOL execute();
BOOL playerDelete();
void initTextureAnime();
void initTextureScroll();
void createHeap();
BOOL createHeap();
void createAnimeHeap(JKRSolidHeap**, daPy_HEAP_TYPE);
void initModel(J3DModel**, int, u32);
void entryBtk(J3DModelData*, int);
void entryBrk(J3DModelData*, int);
J3DModelData* initModel(J3DModel**, int, u32);
J3DAnmTextureSRTKey* entryBtk(J3DModelData*, int);
J3DAnmTevRegKey* entryBrk(J3DModelData*, int);
void playerInit();
daPy_lk_c();
int makeBgWait();
@@ -690,7 +720,7 @@ public:
void procCrawlEnd();
void checkGrabSpecialHeavyState();
void setWeaponBlur();
void checkGrabBarrelSearch(int);
BOOL checkGrabBarrelSearch(int);
void setGrabItemPos();
void freeGrabItem();
void checkNextActionGrab();
@@ -831,7 +861,7 @@ public:
void bowJointCB(int);
void bowButton() const;
void checkBowReadyAnime() const;
void checkBowAnime() const;
BOOL checkBowAnime() const;
void makeArrow();
void deleteArrow();
void setBowReadyAnime();
@@ -1002,30 +1032,30 @@ public:
J3DAnmTextureSRTKey* getIceArrowBtk() { return mpIceArrowBtk; }
J3DAnmTextureSRTKey* getLightArrowBtk() { return mpLightArrowBtk; }
virtual MtxP getLeftHandMatrix();
virtual MtxP getRightHandMatrix();
virtual f32 getGroundY();
virtual MtxP getLeftHandMatrix() { return mpCLModel->getAnmMtx(0x08); } // cl_LhandA joint
virtual MtxP getRightHandMatrix() { return mpCLModel->getAnmMtx(0x0C); } // cl_RhandA joint
virtual f32 getGroundY() { return mAcch.GetGroundH(); }
virtual int getTactMusic() const;
virtual int getTactTimerCancel() const;
virtual BOOL checkPlayerGuard() const;
virtual fopAc_ac_c* getGrabMissActor();
virtual BOOL checkPlayerFly() const;
virtual BOOL checkFrontRoll() const;
virtual BOOL checkBottleSwing() const;
virtual BOOL checkCutCharge() const;
virtual BOOL checkPlayerFly() const { return field_0x3618 & 0x10452822; } // TODO add enum
virtual BOOL checkFrontRoll() const { return mCurProc == 0x1E; } // TODO add enum
virtual BOOL checkBottleSwing() const { return mCurProc == 0xA5; }
virtual BOOL checkCutCharge() const { return mCurProc == 0x59; }
virtual BOOL getBokoFlamePos(cXyz*);
virtual BOOL checkTactWait() const;
virtual BOOL checkTactWait() const { return mCurProc == 0x9A; }
virtual void setTactZev(unsigned int, int, char*);
virtual void onDekuSpReturnFlg(u8);
virtual bool checkComboCutTurn() const;
virtual f32 getBaseAnimeFrameRate();
virtual f32 getBaseAnimeFrame();
virtual u32 getItemID() const;
virtual u32 getThrowBoomerangID() const;
virtual u32 getGrabActorID() const;
virtual BOOL checkGrabBarrel();
virtual f32 getBaseAnimeFrameRate() { return mFrameCtrlUnder[0].getRate(); }
virtual f32 getBaseAnimeFrame() { return mFrameCtrlUnder[0].getFrame(); }
virtual u32 getItemID() const { return mActorKeepEquip.getID(); }
virtual u32 getThrowBoomerangID() const { return mActorKeepThrow.getID(); }
virtual u32 getGrabActorID() const { return mActorKeepGrab.getID(); }
virtual BOOL checkGrabBarrel() { return checkGrabBarrelSearch(1); }
virtual BOOL checkPlayerNoDraw();
virtual BOOL checkRopeTag();
virtual BOOL checkRopeTag() { return mActorKeepEquip.getActor() == NULL; }
virtual BOOL checkRopeReadyAnime() const;
virtual void voiceStart(u32);
virtual void setOutPower(f32, s16, int);
@@ -1041,7 +1071,7 @@ public:
virtual void cancelChangeTextureAnime();
/* 0x0320 */ request_of_phase_process_class mPhsLoad;
/* 0x0328 */ J3DModelData* mpModelData;
/* 0x0328 */ J3DModelData* mpCLModelData;
/* 0x032C */ J3DModel* mpCLModel;
/* 0x0330 */ J3DModel* mpKatsuraModel;
/* 0x0334 */ J3DModel* mpYamuModel;
@@ -1057,7 +1087,7 @@ public:
/* 0x03A4 */ J3DShape* field_0x03a4;
/* 0x03A8 */ J3DShape* field_0x03a8;
/* 0x03AC */ dBgS_AcchCir mAcchCir[3];
/* 0x046C */ dBgS_Acch mAcch;
/* 0x046C */ dBgS_LinkAcch mAcch;
/* 0x0630 */ dBgS_LinkLinChk mLinkLinChk;
/* 0x069C */ dBgS_RopeLinChk mRopeLinChk;
/* 0x0708 */ dBgS_BoomerangLinChk mBoomerangLinChk;
@@ -1065,41 +1095,41 @@ public:
/* 0x07C8 */ dBgS_LinkRoofChk mRoofChk;
/* 0x0814 */ dBgS_ArrowLinChk mArrowLinChk;
/* 0x0880 */ dBgS_MirLightLinChk mMirLightLinChk;
/* 0x08EC */ u8 field_0x08EC[0x0910 - 0x08EC];
/* 0x0910 */ cXyz field_0x0910;
/* 0x091C */ u8 field_0x091C[0x0950 - 0x091C];
/* 0x0950 */ daPy_HIO_c* mpHIO;
/* 0x08EC */ dBgS_ObjGndChk_Spl field_0x08EC;
/* 0x0940 */ cBgS_PolyInfo mPolyInfo;
/* 0x0950 */ daPy_HIO_c* m_HIO;
/* 0x0954 */ J3DModel* mpHandsModel;
/* 0x0958 */ J3DModel* mpEquippedSwordModel;
/* 0x095C */ J3DModel* mpSwgripaModel;
/* 0x0960 */ J3DModel* mpSwgripmsModel;
/* 0x0964 */ mDoExt_bckAnm mSwgripmsabBckAnim;
/* 0x0974 */ J3DAnmTevRegKey* mpTswgripmsabBrkData;
/* 0x0978 */ J3DAnmTextureSRTKey* mpTswgripmsBtkData;
/* 0x0974 */ J3DAnmTevRegKey* mpTswgripmsabBrk;
/* 0x0978 */ J3DAnmTextureSRTKey* mpTswgripmsBtk;
/* 0x097C */ J3DModel* mpPodmsModel;
/* 0x0980 */ J3DModel* mpEquippedShieldModel;
/* 0x0984 */ J3DModel* mpShaModel;
/* 0x0988 */ J3DModel* mpShmsModel;
/* 0x098C */ mDoExt_bckAnm field_0x098c;
/* 0x099C */ J3DAnmTextureSRTKey* field_0x099c;
/* 0x098C */ mDoExt_bckAnm mAtngshaBck;
/* 0x099C */ J3DAnmTextureSRTKey* mpTshmsBtk;
/* 0x09A0 */ dDlst_mirrorPacket mMirrorPacket;
/* 0x2E7C */ J3DModel* mpYmsls00Model;
/* 0x2E80 */ J3DAnmTextureSRTKey* mpYmsls00BtkData;
/* 0x2E80 */ J3DAnmTextureSRTKey* mpYmsls00Btk;
/* 0x2E84 */ J3DModel* mpHbootsModelRightFoot;
/* 0x2E88 */ J3DModel* mpHbootsModelLeftFoot;
/* 0x2E8C */ J3DModel* mpPringModel;
/* 0x2E90 */ JKRSolidHeap* field_0x2e90;
/* 0x2E94 */ u8 field_0x2E94[0x2E98 - 0x2E94];
/* 0x2E90 */ JKRSolidHeap* mpItemHeaps[2];
/* 0x2E98 */ J3DModel* mpHeldItemModel;
/* 0x2E9C */ mDoExt_bckAnm mSwordAnim;
/* 0x2EAC */ u8 field_0x2EAC[0x2EB0 - 0x2EAC];
/* 0x2EB0 */ J3DAnmTevRegKey* mpBombBrk;
/* 0x2EB4 */ J3DAnmTevRegKey* mpGwp00BrkData;
/* 0x2EB8 */ J3DAnmTextureSRTKey* mpGwp00BtkData;
/* 0x2EBC */ u8 field_0x2EBC[0x2EC0 - 0x2EBC];
/* 0x2EBC */ J3DAnmTextureSRTKey* mpGicer00Btk;
/* 0x2EC0 */ J3DAnmTextureSRTKey* mpIceArrowBtk;
/* 0x2EC4 */ J3DAnmTextureSRTKey* mpLightArrowBtk;
/* 0x2EC8 */ u8 field_0x2EC8[0x2ED4 - 0x2EC8];
/* 0x2EC8 */ J3DAnmTextureSRTKey* mpGicer01Btk;
/* 0x2ECC */ JKRSolidHeap* field_0x2ECC;
/* 0x2ED0 */ void* m_item_bck_buffer;
/* 0x2ED4 */ J3DAnmTextureSRTKey* mpHeldItemModelAnimTexEx;
/* 0x2ED8 */ J3DAnmTextureSRTKey* mpSwordAnimBTK;
/* 0x2EDC */ J3DAnmTevRegKey* mpHeldItemAnimBRK;
@@ -1112,30 +1142,29 @@ public:
/* 0x2EF8 */ J3DAnmTevRegKey* field_0x2ef8;
/* 0x2EFC */ mDoExt_brkAnm field_0x2efc;
/* 0x2F14 */ J3DModel* mpSuimenMunyaModel;
/* 0x2F18 */ J3DAnmTextureSRTKey* field_0x2f18;
/* 0x2F18 */ J3DAnmTextureSRTKey* mpSuimenMunyaBtk;
/* 0x2F1C */ J3DModel* mpYuchw00Model;
/* 0x2F20 */ mDoExt_bckAnm field_0x2f20;
/* 0x2F30 */ J3DAnmTextureSRTKey* field_0x2f30;
/* 0x2F34 */ J3DAnmTevRegKey* field_0x2f34;
/* 0x2F20 */ mDoExt_bckAnm mYuchw00Bck;
/* 0x2F30 */ J3DAnmTextureSRTKey* mpYuchw00Btk;
/* 0x2F34 */ J3DAnmTevRegKey* mpYuchw00Brk;
/* 0x2F38 */ J3DModel* mpYbafo00Model;
/* 0x2F3C */ J3DAnmTextureSRTKey* field_0x2f3c;
/* 0x2F40 */ MagicArmorAuraEntry mMagicArmorAuraEntries[6];
/* 0x2F70 */ mDoExt_brkAnm field_0x2f70;
/* 0x2F88 */ u8 field_0x2F88[0x2F8C - 0x2F88];
/* 0x2F3C */ J3DAnmTextureSRTKey* mpYbafo00Btk;
/* 0x2F40 */ daPy_aura_c mMagicArmorAuraEntries[6];
/* 0x2F70 */ mDoExt_brkAnm mYaura00rBrk;
/* 0x2F88 */ J3DAnmTextureSRTKey* mpYaura00Btk;
/* 0x2F8C */ J3DModel* mpYmgcs00Model;
/* 0x2F90 */ mDoExt_brkAnm field_0x2f90;
/* 0x2FA8 */ u8 field_0x2FA8[0x2FAC - 0x2FA8];
/* 0x2FAC */ J3DMtxCalc* field_0x2fac;
/* 0x2FB0 */ J3DMtxCalc* field_0x2fb0;
/* 0x2FB4 */ mDoExt_AnmRatioPack field_0x2fb4[2];
/* 0x2FC4 */ mDoExt_AnmRatioPack field_0x2fc4[3];
/* 0x2FDC */ daPy_anmHeap_c field_0x2fdc[2];
/* 0x2FFC */ daPy_anmHeap_c field_0x2ffc[3];
/* 0x302C */ J3DFrameCtrl field_0x302c[2];
/* 0x3054 */ J3DFrameCtrl field_0x3054[3];
/* 0x2F90 */ mDoExt_brkAnm mYmgcs00Brk;
/* 0x2FA8 */ J3DAnmTextureSRTKey* mpYmgcs00Btk;
/* 0x2FAC */ mDoExt_MtxCalcAnmBlendTblOld* m_pbCalc[2];
/* 0x2FB4 */ mDoExt_AnmRatioPack mAnmRatioUnder[2];
/* 0x2FC4 */ mDoExt_AnmRatioPack mAnmRatioUpper[3];
/* 0x2FDC */ daPy_anmHeap_c m_anm_heap_under[2];
/* 0x2FFC */ daPy_anmHeap_c m_anm_heap_upper[3];
/* 0x302C */ J3DFrameCtrl mFrameCtrlUnder[2];
/* 0x3054 */ J3DFrameCtrl mFrameCtrlUpper[3];
/* 0x3090 */ daPy_sightPacket_c mSightPacket;
/* 0x30E0 */ JAIZelAnime mJAIZelAnime;
/* 0x3178 */ u8 field_0x3178[0x317C - 0x3178];
/* 0x3178 */ void* m_sanm_buffer;
/* 0x317C */ daPy_actorKeep_c mActorKeepEquip;
/* 0x3184 */ daPy_actorKeep_c mActorKeepThrow;
/* 0x318C */ daPy_actorKeep_c mActorKeepGrab;
@@ -1146,7 +1175,7 @@ public:
/* 0x31A8 */ fopAc_ac_c* mpAttnActorX;
/* 0x31AC */ fopAc_ac_c* mpAttnActorY;
/* 0x31B0 */ fopAc_ac_c* mpAttnActorZ;
/* 0x31B4 */ mDoExt_MtxCalcOldFrame* field_0x31b4;
/* 0x31B4 */ mDoExt_MtxCalcOldFrame* m_old_fdata;
/* 0x31B8 */ s16 mTexAnimeResIdx;
/* 0x31BA */ s16 field_0x31ba;
/* 0x31BC */ s16 field_0x31bc;
@@ -1159,30 +1188,42 @@ public:
/* 0x31CE */ s16 field_0x31ce;
/* 0x31D0 */ void* mpTextureScrollResData;
/* 0x31D4 */ JKRSolidHeap* mpTextureScrollResHeap;
/* 0x31D8 */ u32 mCurProc;
/* 0x31D8 */ int mCurProc;
/* 0x31DC */ int (daPy_lk_c::*field_0x31dc)();
/* 0x31E8 */ daPy_footEffect_c field_0x31e8[2];
/* 0x3280 */ u8 field_0x3280[0x3294 - 0x3280];
/* 0x3280 */ dPa_rippleEcallBack field_0x3280;
/* 0x3294 */ daPy_swimTailEcallBack_c mSwimTailEcallBack[2];
/* 0x32E4 */ daPy_mtxFollowEcallBack_c field_0x32e4;
/* 0x32F0 */ daPy_mtxFollowEcallBack_c field_0x32f0;
/* 0x32FC */ dPa_smokeEcallBack mSmokeEcallBack;
/* 0x331C */ dPa_cutTurnEcallBack_c mCutTurnEcallBack[3];
/* 0x334C */ daPy_waterDropEcallBack_c mWaterDropEcallBack[2];
/* 0x331C */ dPa_cutTurnEcallBack_c field_0x331C;
/* 0x332C */ dPa_cutTurnEcallBack_c field_0x332C;
/* 0x333C */ dPa_cutTurnEcallBack_c field_0x333C;
/* 0x334C */ daPy_waterDropEcallBack_c field_0x334C;
/* 0x336C */ daPy_waterDropEcallBack_c field_0x336C;
/* 0x338C */ daPy_followEcallBack_c field_0x338c;
/* 0x33A8 */ daPy_mtxFollowEcallBack_c field_0x33a8;
/* 0x33B4 */ u8 field_0x33B4[0x33B8 - 0x33B4];
/* 0x33A8 */ daPy_mtxPosFollowEcallBack_c field_0x33a8;
/* 0x33B8 */ daPy_dmEcallBack_c field_0x33b8[4];
/* 0x33E8 */ u8 field_0x33E8[0x3460 - 0x33E8];
/* 0x33E8 */ daPy_mtxFollowEcallBack_c field_0x33E8;
/* 0x33F4 */ daPy_fanSwingEcallBack_c mFanSwingCb;
/* 0x3400 */ daPy_mtxPosFollowEcallBack_c field_0x3400;
/* 0x3410 */ daPy_followEcallBack_c field_0x3410;
/* 0x342C */ daPy_mtxFollowEcallBack_c field_0x342C;
/* 0x3438 */ daPy_followEcallBack_c field_0x3438;
/* 0x3454 */ daPy_mtxFollowEcallBack_c field_0x3454;
/* 0x3460 */ daPy_mtxPosFollowEcallBack_c field_0x3460[2];
/* 0x3480 */ dAttention_c* mpAttention;
/* 0x3484 */ dAttList_c* mpAttnEntryA;
/* 0x3488 */ dAttList_c* mpAttnEntryX;
/* 0x348C */ dAttList_c* mpAttnEntryY;
/* 0x3490 */ dAttList_c* mpAttnEntryZ;
/* 0x3494 */ u8 field_0x3494[0x34B9 - 0x3494];
/* 0x3494 */ u8 field_0x3494[0x3498 - 0x3494];
/* 0x3498 */ LIGHT_INFLUENCE field_0x3498;
/* 0x34B8 */ u8 field_0x34B8[0x34B9 - 0x34B8];
/* 0x34B9 */ u8 mFrontWallType;
/* 0x34BA */ u8 field_0x34BA[0x34BD - 0x34BA];
/* 0x34BA */ u8 field_0x34BA[0x34BB - 0x34BA];
/* 0x34BB */ u8 mCurrItemHeapIdx;
/* 0x34BC */ u8 field_0x34BC[0x34BD - 0x34BC];
/* 0x34BD */ u8 mLastUsedEquipItem;
/* 0x34BE */ u8 field_0x34BE[0x34C0 - 0x34BE];
/* 0x34C0 */ u8 field_0x34c0;
@@ -1194,7 +1235,9 @@ public:
/* 0x34C6 */ u8 field_0x34C6[0x34C7 - 0x34C6];
/* 0x34C7 */ u8 mActivePlayerBombs;
/* 0x34C8 */ u8 mPressedButtonsBitfield;
/* 0x34C9 */ u8 field_0x34C9[0x34D0 - 0x34C9];
/* 0x34C9 */ u8 field_0x34C9[0x34CB - 0x34C9];
/* 0x34CB */ u8 field_0x34CB;
/* 0x34CC */ u8 field_0x34D0[0x34D0 - 0x34CC];
/* 0x34D0 */ s16 field_0x34d0;
/* 0x34D2 */ s16 field_0x34d2;
/* 0x34D4 */ s16 field_0x34d4;
@@ -1224,7 +1267,8 @@ public:
/* 0x3556 */ u8 field_0x3556[0x355E - 0x3556];
/* 0x355E */ u16 field_0x355e;
/* 0x3560 */ u16 mHeldItemType;
/* 0x3562 */ u8 field_0x3562[0x3566 - 0x3562];
/* 0x3562 */ u8 field_0x3562[0x3564 - 0x3562];
/* 0x3564 */ s16 field_0x3564;
/* 0x3566 */ s16 field_0x3566;
/* 0x3568 */ s16 field_0x3568;
/* 0x356A */ u8 field_0x356A[0x356C - 0x356A];
@@ -1268,7 +1312,9 @@ public:
/* 0x3634 */ int field_0x3634;
/* 0x3638 */ u8 field_0x3638[0x3644 - 0x3638];
/* 0x3644 */ f32 field_0x3644;
/* 0x3648 */ u8 field_0x3648[0x3694 - 0x3648];
/* 0x3648 */ u8 field_0x3648[0x3668 - 0x3648];
/* 0x3668 */ J3DTransformInfo field_0x3668;
/* 0x3688 */ u8 field_0x3688[0x3694 - 0x3688];
/* 0x3694 */ cXyz mOldSpeed;
/* 0x36A0 */ cXyz field_0x36a0;
/* 0x36AC */ cXyz field_0x36ac;
@@ -1293,6 +1339,115 @@ public:
/* 0x488C */ dCcD_Cps field_0x488c;
/* 0x49C4 */ dCcD_Sph field_0x49c4;
/* 0x4AF0 */ dCcD_Cps field_0x4af0;
}; // Size: 0x4C28
enum LINK_RES_FILE_ID { // IDs and indexes are synced
/* BCK */
LINK_BCK_ATNGSHA=0xA,
LINK_BCK_BOMB=0xB,
LINK_BCK_COMBO_TATE=0xC,
LINK_BCK_GICER01=0xD,
LINK_BCK_GWP00=0xE,
LINK_BCK_SWGRIPMSAB=0xF,
LINK_BCK_YUCHW00=0x10,
/* BDL */
LINK_BDL_BINFAIRY=0x13,
LINK_BDL_BOOMERANG=0x14,
LINK_BDL_BOTTLECAP=0x15,
LINK_BDL_BOW=0x16,
LINK_BDL_CAMERA=0x17,
LINK_BDL_CL=0x18,
LINK_BDL_FAN=0x19,
LINK_BDL_FANB=0x1A,
LINK_BDL_FANSMALL=0x1B,
LINK_BDL_HAMMER=0x1C,
LINK_BDL_HANDS=0x1D,
LINK_BDL_HOOKSHOT=0x1E,
LINK_BDL_HYOINOMI=0x1F,
LINK_BDL_KATSURA=0x20,
LINK_BDL_LETTER=0x21,
LINK_BDL_PODMS=0x22,
LINK_BDL_PRING=0x23,
LINK_BDL_SHA=0x24,
LINK_BDL_SWA=0x25,
LINK_BDL_SWGRIPA=0x26,
LINK_BDL_TCEIVER=0x27,
LINK_BDL_TETOLACH=0x28,
LINK_BDL_YAMU=0x29,
/* BDLC */
LINK_BDL_ESA=0x2C,
LINK_BDL_HBOOTS=0x2D,
LINK_BDL_ROPEEND=0x2E,
LINK_BDL_TELESCOPE=0x2F,
/* BDLI */
LINK_BDL_GARWFI00=0x32,
LINK_BDL_GARWFI01=0x33,
LINK_BDL_GARWG00=0x34,
/* BDLM */
LINK_BDL_ARROW=0x37,
LINK_BDL_ARROWGLITTER=0x38,
LINK_BDL_BINHO=0x39,
LINK_BDL_BINLIQUID=0x3A,
LINK_BDL_BINLIQUIDH=0x3B,
LINK_BDL_BOMB=0x3C,
LINK_BDL_BOTTLEEMP=0x3D,
LINK_BDL_CUTFH=0x3E,
LINK_BDL_CUTFM=0x3F,
LINK_BDL_GICER00=0x40,
LINK_BDL_GICER01=0x41,
LINK_BDL_GWP00=0x42,
LINK_BDL_SHMS=0x43,
LINK_BDL_SUIMEN_MUNYA=0x44,
LINK_BDL_SWGRIPMS=0x45,
LINK_BDL_SWMS=0x46,
LINK_BDL_TAKT=0x47,
LINK_BDL_YAURA00=0x48,
LINK_BDL_YBAFO00=0x49,
LINK_BDL_YHSLS00=0x4A,
LINK_BDL_YMGCS00=0x4B,
LINK_BDL_YMSLI00=0x4C,
LINK_BDL_YMSLS00=0x4D,
LINK_BDL_YUCHW00=0x4E,
/* BRK */
LINK_BRK_BOMB=0x51,
LINK_BRK_GARWFI00=0x52,
LINK_BRK_GARWFI01=0x53,
LINK_BRK_GARWG00=0x54,
LINK_BRK_GWP00=0x55,
LINK_BRK_TSWGRIPMSAB=0x56,
LINK_BRK_YAURA00_G=0x57,
LINK_BRK_YAURA00_R=0x58,
LINK_BRK_YMGCS00_MS=0x59,
LINK_BRK_YMGCS00_TS=0x5A,
LINK_BRK_YUCHW00=0x5B,
/* BTK */
LINK_BTK_GARWFI00=0x5E,
LINK_BTK_GARWFI01=0x5F,
LINK_BTK_GARWG00=0x60,
LINK_BTK_GICER00=0x61,
LINK_BTK_GICER01=0x62,
LINK_BTK_GWP00=0x63,
LINK_BTK_SUIMEN_MUNYA=0x64,
LINK_BTK_TARROWGLITTER=0x65,
LINK_BTK_TSHMS=0x66,
LINK_BTK_TSWGRIPMS=0x67,
LINK_BTK_TTIPICE=0x68,
LINK_BTK_YAURA00=0x69,
LINK_BTK_YBAFO00=0x6A,
LINK_BTK_YMGCS00=0x6B,
LINK_BTK_YMSLS00=0x6C,
LINK_BTK_YUCHW00=0x6D,
/* TEX */
LINK_BTI_BLUR=0x70,
LINK_BTI_LINKTEXBCI4=0x71,
LINK_BTI_ROCK_MARK=0x72,
};
#endif /* D_A_PLAYER_LINK */
+7 -4
View File
@@ -17,9 +17,9 @@ STATIC_ASSERT(sizeof(dBgS_GndChk) == 0x54);
class dBgS_LinkGndChk : public dBgS_GndChk {
public:
dBgS_LinkGndChk() { /* SetLink(); */ }
virtual ~dBgS_LinkGndChk();
};
dBgS_LinkGndChk() { SetLink(); }
virtual ~dBgS_LinkGndChk() {}
}; // Size: 0x54
class dBgS_ObjGndChk : public dBgS_GndChk {
public:
@@ -47,7 +47,10 @@ public:
class dBgS_ObjGndChk_Spl : public dBgS_ObjGndChk {
public:
dBgS_ObjGndChk_Spl();
dBgS_ObjGndChk_Spl() {
OffNormalGrp();
OnSpl();
}
virtual ~dBgS_ObjGndChk_Spl();
};
+9 -5
View File
@@ -22,21 +22,21 @@ public:
class dBgS_LinkLinChk : public dBgS_LinChk {
public:
dBgS_LinkLinChk();
dBgS_LinkLinChk() { SetLink(); }
virtual ~dBgS_LinkLinChk();
};
class dBgS_RopeLinChk : public dBgS_LinChk {
public:
dBgS_RopeLinChk();
dBgS_RopeLinChk() { SetRope(); }
virtual ~dBgS_RopeLinChk();
};
class dBgS_BoomerangLinChk : public dBgS_LinChk {
public:
dBgS_BoomerangLinChk();
dBgS_BoomerangLinChk() { SetBoomerang(); }
virtual ~dBgS_BoomerangLinChk();
};
@@ -82,9 +82,13 @@ public:
class dBgS_MirLightLinChk : public dBgS_LinChk {
public:
dBgS_MirLightLinChk();
dBgS_MirLightLinChk() {
SetArrow(); // "Arrow" also covers light
OnAll();
OnLightGrp();
}
virtual ~dBgS_MirLightLinChk();
virtual ~dBgS_MirLightLinChk() {}
};
#endif /* D_BG_D_BG_S_LIN_CHK_H */
+5 -3
View File
@@ -14,7 +14,7 @@ public:
m_pos.y = 0.0f;
m_pos.z = 0.0f;
SetActorPid(-1);
field_0x44 = 0;
field_0x44 = NULL;
}
void Init();
@@ -22,6 +22,8 @@ public:
void SetPos(cXyz& pos) { m_pos = pos; }
cXyz* GetPosP() { return &m_pos; }
f32 GetNowY() { return m_pos.y; }
void SetNowY(f32 y) { m_pos.y = y; }
private:
/* 0x38 */ cXyz m_pos;
@@ -33,8 +35,8 @@ STATIC_ASSERT(sizeof(dBgS_RoofChk) == 0x4C);
class dBgS_LinkRoofChk : public dBgS_RoofChk {
public:
dBgS_LinkRoofChk() { /* SetLink(); */ }
virtual ~dBgS_LinkRoofChk();
dBgS_LinkRoofChk() { SetLink(); }
virtual ~dBgS_LinkRoofChk() {}
}; // Size: 0x4C
#endif /* D_BG_D_BG_S_ROOF_CHK_H */
+26
View File
@@ -1252,6 +1252,8 @@ inline u8 dComIfGs_getKeyNum() {
u8 dComIfGs_checkGetItemNum(u8 i_itemNo);
BOOL dComIfGs_checkSeaLandingEvent(s8 i_roomNo);
/**
* === PLAY ===
*/
@@ -1332,6 +1334,10 @@ inline void dComIfGp_setPlayer(int idx, fopAc_ac_c* player) {
g_dComIfG_gameInfo.play.setPlayer(idx, player);
}
inline void dComIfGp_setPlayerPtr(int idx, fopAc_ac_c* player) {
g_dComIfG_gameInfo.play.setPlayerPtr(idx, player);
}
inline fopAc_ac_c* dComIfGp_getCb1Player() {
return g_dComIfG_gameInfo.play.getPlayerPtr(1);
}
@@ -1456,6 +1462,10 @@ inline daShip_c* dComIfGp_getShipActor() {
return (daShip_c*)g_dComIfG_gameInfo.play.getPlayerPtr(2);
}
inline void dComIfGp_setShipActor(fopAc_ac_c* player) {
g_dComIfG_gameInfo.play.setPlayerPtr(2, player);
}
inline void dComIfGp_getIkadaShipBeforePos(Vec* o_pos) {
*o_pos = g_dComIfG_gameInfo.play.mIkadaLinkPos;
}
@@ -1616,6 +1626,10 @@ inline fopAc_ac_c* dComIfGp_getLinkPlayer() {
return g_dComIfG_gameInfo.play.getPlayerPtr(0);
}
inline void dComIfGp_setLinkPlayer(fopAc_ac_c* player) {
g_dComIfG_gameInfo.play.setPlayerPtr(0, player);
}
inline daPy_lk_c* daPy_getPlayerLinkActorClass() {
return (daPy_lk_c*)dComIfGp_getLinkPlayer();
}
@@ -1708,6 +1722,14 @@ inline bool dComIfGp_checkPlayerStatus1(int param_0, u32 flag) {
return g_dComIfG_gameInfo.play.checkPlayerStatus(param_0, 1, flag);
}
inline void dComIfGp_clearPlayerStatus0(int param_0, u32 flag) {
g_dComIfG_gameInfo.play.clearPlayerStatus(param_0, 0, flag);
}
inline void dComIfGp_clearPlayerStatus1(int param_0, u32 flag) {
g_dComIfG_gameInfo.play.clearPlayerStatus(param_0, 1, flag);
}
/**
* Returns which item is on a specific button.
* @param i_btnIdx The index of the button. 0 for X, 1 for Y, 2 for Z.
@@ -1836,6 +1858,10 @@ inline s32 dComIfGp_event_moveApproval(void* actor) {
return g_dComIfG_gameInfo.play.getEvent().moveApproval(actor);
}
inline BOOL dComIfGp_event_compulsory(void* param_1, const char* param_2, u16 param_3) {
return g_dComIfG_gameInfo.play.getEvent().compulsory(param_1, param_2, param_3);
}
inline s32 dComIfGp_event_order(u16 eventType, u16 priority, u16 flag, u16 hind, void* pActor1, void* pActor2, s16 eventID, u8 infoIdx) {
return g_dComIfG_gameInfo.play.getEvent().order(eventType, priority, flag, hind, pActor1, pActor2, eventID, infoIdx);
}
+1 -1
View File
@@ -65,7 +65,7 @@ public:
void check();
void photoCheck();
s32 moveApproval(void*);
void compulsory(void*, const char*, u16);
BOOL compulsory(void*, const char*, u16);
void remove();
void getStageEventDt();
void nextStageEventDt(void*);
+1 -1
View File
@@ -20,7 +20,7 @@ struct LIGHT_INFLUENCE {
/* 0x14 */ f32 mPower;
/* 0x18 */ f32 mFluctuation;
/* 0x1C */ int mIdx;
};
}; // Size: 0x20
struct EFLIGHT_PROC {
/* 0x00 */ u8 mSwordState;
+5 -5
View File
@@ -35,7 +35,7 @@ class dPa_levelEcallBack : public JPACallBackBase<JPABaseEmitter*> {
public:
virtual ~dPa_levelEcallBack() {}
virtual void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8) = 0;
};
}; // Size: 0x04
class dPa_followEcallBack : public dPa_levelEcallBack {
public:
@@ -56,7 +56,7 @@ public:
/* 0x11 */ u8 field_0x11;
/* 0x12 */ u8 field_0x12;
/* 0x13 */ u8 field_0x13;
};
}; // Size: 0x14
STATIC_ASSERT(sizeof(dPa_followEcallBack) == 0x14);
@@ -251,7 +251,7 @@ public:
class dPa_cutTurnEcallBack_c : public dPa_levelEcallBack {
public:
dPa_cutTurnEcallBack_c();
dPa_cutTurnEcallBack_c() {}
virtual ~dPa_cutTurnEcallBack_c() {}
virtual void executeAfter(JPABaseEmitter*);
@@ -259,8 +259,8 @@ public:
void end();
public:
/* 0x04 */ u8 field_0x04[0x0c];
};
/* 0x04 */ u8 field_0x04[0x0C];
}; // Size: 0x10
STATIC_ASSERT(sizeof(dPa_cutTurnEcallBack_c) == 0x10);
+6
View File
@@ -990,4 +990,10 @@ inline int dStage_FileList_dt_GlobalWindLevel(dStage_FileList_dt_c* i_fili) {
return (i_fili->mParam >> 0x12) & 3;
}
bool dStage_chkPlayerId(int playerId, int room_no);
int dStage_changeScene(int i_exitId, f32 speed, u32 mode, s8 room_no);
void dStage_restartRoom(u32 roomParam, u32 mode);
#endif /* D_D_STAGE_H */
+24 -4
View File
@@ -197,8 +197,11 @@ private:
class mDoExt_AnmRatioPack {
public:
~mDoExt_AnmRatioPack();
mDoExt_AnmRatioPack();
~mDoExt_AnmRatioPack() {}
mDoExt_AnmRatioPack() {
mRatio = 0.0f;
mAnmTransform = NULL;
}
void setRatio(f32 ratio) { mRatio = ratio; }
f32 getRatio() { return mRatio; }
@@ -223,6 +226,20 @@ private:
class mDoExt_MtxCalcOldFrame {
public:
mDoExt_MtxCalcOldFrame(J3DTransformInfo* param_1, Quaternion* param_2) {
mOldFrameTransInfo = param_1;
mOldFrameQuaternion = param_2;
mOldFrameRate = 0.0f;
mOldFrameFlg = false;
field_0x1 = true;
mOldFrameStartJoint = 0;
mOldFrameEndJoint = 0;
mOldFrameMorfCounter = 0.0f;
field_0x8 = 0.0f;
field_0x10 = 0.0f;
field_0x14 = 0.0f;
}
void initOldFrameMorf(f32, u16, u16);
void decOldFrameMorfCounter();
@@ -236,6 +253,7 @@ public:
private:
/* 0x00 */ bool mOldFrameFlg;
/* 0x01 */ bool field_0x1;
/* 0x04 */ f32 mOldFrameMorfCounter;
/* 0x08 */ f32 field_0x8;
/* 0x0C */ f32 mOldFrameRate;
@@ -272,6 +290,9 @@ struct mDoExt_MtxCalcAnmBlendTbl : public J3DMtxCalcMaya {
struct mDoExt_MtxCalcAnmBlendTblOld : public mDoExt_MtxCalcAnmBlendTbl {
mDoExt_MtxCalcAnmBlendTblOld(mDoExt_MtxCalcOldFrame* oldFrame, int num, mDoExt_AnmRatioPack* anmRatio) : mDoExt_MtxCalcAnmBlendTbl(num, anmRatio) {
mOldFrame = oldFrame;
mBeforeCallback = NULL;
mAfterCallback = NULL;
field_0x58 = 0;
}
virtual ~mDoExt_MtxCalcAnmBlendTblOld();
virtual void calc(u16);
@@ -284,8 +305,7 @@ struct mDoExt_MtxCalcAnmBlendTblOld : public mDoExt_MtxCalcAnmBlendTbl {
/* 0x5C */ mDoExt_MtxCalcOldFrame* mOldFrame;
/* 0x60 */ void (*mBeforeCallback)(u32, u16, J3DTransformInfo*, Quaternion*);
/* 0x64 */ void (*mAfterCallback)(u32, u16, J3DTransformInfo*, Quaternion*);
}; // Size: 0x5C
}; // Size: 0x90
class mDoExt_McaMorfCallBack1_c {
public:
+1 -1
View File
@@ -33,7 +33,7 @@ void daPy_lk_c::checkBowReadyAnime() const {
}
/* 8014A02C-8014A080 .text checkBowAnime__9daPy_lk_cCFv */
void daPy_lk_c::checkBowAnime() const {
BOOL daPy_lk_c::checkBowAnime() const {
/* Nonmatching */
}
+1 -1
View File
@@ -28,7 +28,7 @@ void daPy_lk_c::setWeaponBlur() {
}
/* 8013A904-8013A97C .text checkGrabBarrelSearch__9daPy_lk_cFi */
void daPy_lk_c::checkGrabBarrelSearch(int) {
BOOL daPy_lk_c::checkGrabBarrelSearch(int) {
/* Nonmatching */
}
+363 -38
View File
@@ -12,12 +12,18 @@
#include "d/d_com_inf_game.h"
#include "d/d_com_lib_game.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "d/d_procname.h"
#include "d/d_kankyo.h"
#include "JSystem/JKernel/JKRSolidHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "src/d/actor/d_a_player_HIO.inc"
char l_arcName[] = "Link";
/* 80102E8C-80102EAC .text daPy_createHeap__FP10fopAc_ac_c */
void daPy_createHeap(fopAc_ac_c*) {
/* Nonmatching */
static BOOL daPy_createHeap(fopAc_ac_c* i_this) {
return ((daPy_lk_c*)i_this)->createHeap();
}
/* 80102F64-80103074 .text calc__13daPy_matAnm_cCFP11J3DMaterial */
@@ -78,7 +84,7 @@ void daPy_lk_c::auraJointCB0(int) {
class J3DNode;
/* 80103450-80103494 .text daPy_auraCallback__FP7J3DNodei */
void daPy_auraCallback(J3DNode*, int) {
static BOOL daPy_auraCallback(J3DNode*, int) {
/* Nonmatching */
}
@@ -88,8 +94,8 @@ void daPy_lk_c::jointBeforeCB(int, J3DTransformInfo*, Quaternion*) {
}
/* 80103A88-80103AAC .text daPy_jointBeforeCallback__FUlUsP16J3DTransformInfoP10Quaternion */
void daPy_jointBeforeCallback(u32, u16, J3DTransformInfo*, Quaternion*) {
/* Nonmatching */
static BOOL daPy_jointBeforeCallback(u32 i_this, u16 param_1, J3DTransformInfo* param_2, Quaternion* param_3) {
((daPy_lk_c*)i_this)->jointBeforeCB(param_1, param_2, param_3);
}
/* 80103AAC-80103C1C .text jointAfterCB__9daPy_lk_cFiP16J3DTransformInfoP10Quaternion */
@@ -98,8 +104,8 @@ void daPy_lk_c::jointAfterCB(int, J3DTransformInfo*, Quaternion*) {
}
/* 80103C1C-80103C40 .text daPy_jointAfterCallback__FUlUsP16J3DTransformInfoP10Quaternion */
void daPy_jointAfterCallback(u32, u16, J3DTransformInfo*, Quaternion*) {
/* Nonmatching */
static BOOL daPy_jointAfterCallback(u32 i_this, u16 param_1, J3DTransformInfo* param_2, Quaternion* param_3) {
((daPy_lk_c*)i_this)->jointAfterCB(param_1, param_2, param_3);
}
/* 80103C40-80103EE4 .text jointCB0__9daPy_lk_cFi */
@@ -108,7 +114,7 @@ void daPy_lk_c::jointCB0(int) {
}
/* 80103EE4-80103F28 .text daPy_jointCallback0__FP7J3DNodei */
void daPy_jointCallback0(J3DNode*, int) {
static BOOL daPy_jointCallback0(J3DNode*, int) {
/* Nonmatching */
}
@@ -118,18 +124,23 @@ void daPy_lk_c::jointCB1() {
}
/* 80104178-801041B4 .text daPy_jointCallback1__FP7J3DNodei */
void daPy_jointCallback1(J3DNode*, int) {
static BOOL daPy_jointCallback1(J3DNode*, int) {
/* Nonmatching */
}
/* 801041B4-801041EC .text setAnimeHeap__9daPy_lk_cFP12JKRSolidHeap */
void daPy_lk_c::setAnimeHeap(JKRSolidHeap*) {
/* Nonmatching */
void daPy_lk_c::setAnimeHeap(JKRSolidHeap* animeHeap) {
animeHeap->freeAll();
mDoExt_setCurrentHeap(animeHeap);
}
/* 801041EC-80104240 .text setItemHeap__9daPy_lk_cFv */
void daPy_lk_c::setItemHeap() {
/* Nonmatching */
if (!checkResetFlg0(daPy_RFLG0_UNK4000)) {
mCurrItemHeapIdx ^= 1;
onResetFlg0(daPy_RFLG0_UNK4000);
}
setAnimeHeap(mpItemHeaps[mCurrItemHeapIdx]);
}
/* 80104240-80104280 .text setBlurPosResource__9daPy_lk_cFUs */
@@ -298,13 +309,13 @@ void daPy_lk_c::onBodyEffect() {
}
/* 80107308-80108204 .text draw__9daPy_lk_cFv */
void daPy_lk_c::draw() {
BOOL daPy_lk_c::draw() {
/* Nonmatching */
}
/* 80108204-80108224 .text daPy_Draw__FP9daPy_lk_c */
void daPy_Draw(daPy_lk_c*) {
/* Nonmatching */
static BOOL daPy_Draw(daPy_lk_c* i_this) {
return ((daPy_lk_c*)i_this)->draw();
}
/* 80108224-8010841C .text setAtnList__9daPy_lk_cFv */
@@ -743,8 +754,17 @@ void daPy_lk_c::checkSubjectEnd(int) {
}
/* 80112280-80112330 .text checkGuardAccept__9daPy_lk_cFv */
void daPy_lk_c::checkGuardAccept() {
/* Nonmatching */
BOOL daPy_lk_c::checkGuardAccept() {
if (field_0x3618 & 0x40 && !checkBowAnime()) {
u32 stageType = dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo());
if (stageType != 2 ||
strcmp(dComIfGp_getStartStageName(), "Ojhous") == 0 ||
strcmp(dComIfGp_getStartStageName(), "Orichh") == 0)
{
return TRUE;
}
}
return FALSE;
}
/* 80112330-80112348 .text cancelNoDamageMode__9daPy_lk_cFv */
@@ -1363,7 +1383,7 @@ void daPy_lk_c::setBgCheckParam() {
}
/* 801200F8-8012010C .text setParamData__9daPy_lk_cFiiii */
void daPy_lk_c::setParamData(int, int, int, int) {
u32 daPy_lk_c::setParamData(int, int, int, int) {
/* Nonmatching */
}
@@ -1378,8 +1398,102 @@ void daPy_lk_c::checkFallCode() {
}
/* 80120724-80120BBC .text startRestartRoom__9daPy_lk_cFUlifi */
void daPy_lk_c::startRestartRoom(u32, int, f32, int) {
/* Nonmatching */
BOOL daPy_lk_c::startRestartRoom(u32 param_1, int param_2, f32 param_3, int i_point) {
/* Nonmatching - npc_sarace */
if (!checkNoResetFlg0(daPyFlg0_UNK4000) && (i_point != 0 || dComIfGp_event_compulsory(this, NULL, -1))) {
mDemo.setOriginalDemoType();
if (i_point == 0) {
mDemo.setDemoMode(1);
}
onNoResetFlg0(daPyFlg0_UNK4000);
changePlayer(this);
if (dComIfGp_getMiniGameType() == 1) {
dComIfGp_setNextStage("sea", 1, 48, -1, 0.0f, 0, 1, 0);
mDoAud_seStart(JA_SE_FORCE_BACK, NULL, 0, 0);
// daNpc_Sarace_c::ship_race_result = 3;
field_0x354e = 0;
return TRUE;
} else {
u32 stageType = dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo());
setDamagePoint(param_3);
field_0x354e = 0;
if (stageType == 7 && !dComIfGs_isEventBit(0x2A08) && (current.roomNo == 11 || current.roomNo == 44) && dStage_chkPlayerId(0x80, current.roomNo)) {
dComIfGp_setNextStage(dComIfGp_getStartStageName(), 0x80, current.roomNo, -1, 0.0f, param_1, 1, 0);
u32 roomParam = setParamData(-1, 0, param_2, 0);
dComIfGs_setRestartRoomParam(roomParam);
mDoAud_seStart(JA_SE_FORCE_BACK, NULL, 0, 0);
return TRUE;
}
if (checkNoResetFlg0(daPyFlg0_UNK10) && mCurProc != 0xB2) {
i_point = field_0x34CB;
} else {
i_point = field_0x3594;
if (i_point != 0xFF && !dComIfGs_checkSeaLandingEvent(current.roomNo)) {
i_point = 0xFF;
}
}
if (i_point == 0xFF) {
if (stageType == 7) {
cXyz* pos;
if (dComIfGp_getShipActor()) {
pos = &((fopAc_ac_c*)dComIfGp_getShipActor())->current.pos;
} else {
pos = &current.pos;
}
int quad_x = (1.0f/50000.0f) * (350000.0f + pos->x);
int quad_z = (1.0f/50000.0f) * (350000.0f + pos->z);
if (quad_x < 0) {
quad_x = 0;
} else if (quad_x > 13) {
quad_x = 13;
}
if (quad_z < 0) {
quad_z = 0;
} else if (quad_z > 13) {
quad_z = 13;
}
int subsector_z = quad_z & 1;
int subsector_x = quad_x & 1;
int sector_z = quad_z >> 1;
int sector_x = quad_x >> 1;
int sector_num = sector_z*7 + sector_x;
int scls_idx = subsector_x + (sector_num << 2) + (subsector_z << 1);
dStage_changeScene(scls_idx, 0.0f, param_1, -1);
} else {
if (mCurProc == 0xB2) {
dStage_changeScene(0, 0.0f, param_1, -1);
} else {
int roomNo = dComIfGs_getRestartRoomNo();
u32 roomParam = setParamData(roomNo, 0, param_2, 0);
dStage_restartRoom(roomParam, param_1);
mDoAud_seStart(JA_SE_FORCE_BACK, NULL, 0, 0);
}
return TRUE;
}
} else if (checkNoResetFlg0(daPyFlg0_UNK10)) {
dComIfGp_setNextStage(dComIfGp_getStartStageName(), i_point, 41, -1, 0.0f, param_1, 1, 0);
} else {
dComIfGp_setNextStage(dComIfGp_getStartStageName(), i_point, current.roomNo, -1, 0.0f, param_1, 1, 0);
}
if (mCurProc != 0xB2) {
u32 roomParam = setParamData(-1, 0, param_2, 0);
dComIfGs_setRestartRoomParam(roomParam);
mDoAud_seStart(JA_SE_FORCE_BACK, NULL, 0, 0);
}
return TRUE;
}
}
return FALSE;
}
/* 80120BBC-80120BE0 .text checkSuccessGuard__9daPy_lk_cFi */
@@ -1413,28 +1527,89 @@ void daPy_lk_c::checkRoofRestart() {
}
/* 80121870-80122D30 .text execute__9daPy_lk_cFv */
void daPy_lk_c::execute() {
BOOL daPy_lk_c::execute() {
/* Nonmatching */
}
/* 80122D30-80122D50 .text daPy_Execute__FP9daPy_lk_c */
void daPy_Execute(daPy_lk_c*) {
/* Nonmatching */
static BOOL daPy_Execute(daPy_lk_c* i_this) {
return ((daPy_lk_c*)i_this)->execute();
}
/* 80122D50-80122D58 .text daPy_IsDelete__FP9daPy_lk_c */
void daPy_IsDelete(daPy_lk_c*) {
/* Nonmatching */
static BOOL daPy_IsDelete(daPy_lk_c*) {
return TRUE;
}
/* 80122D58-80123058 .text playerDelete__9daPy_lk_cFv */
void daPy_lk_c::playerDelete() {
BOOL daPy_lk_c::playerDelete() {
/* Nonmatching */
for (int i = 0; i < (int)ARRAY_SIZE(field_0x31e8); i++) {
daPy_footEffect_c* footEffect = &field_0x31e8[i];
footEffect->mSmokeCb.end();
footEffect->mFollowCb.end();
}
if (mFanSwingCb.mpEmitter) {
mFanSwingCb.mpEmitter->clearStatus(0x40);
mFanSwingCb.mpEmitter->setEmitterCallBackPtr(NULL);
mFanSwingCb.mpEmitter = NULL;
}
field_0x338c.end();
field_0x33a8.end();
field_0x3280.end();
field_0x334C.end();
field_0x336C.end();
mSwimTailEcallBack[0].remove();
mSwimTailEcallBack[1].remove();
field_0x32e4.end();
field_0x32f0.end();
field_0x33E8.end();
mSmokeEcallBack.end();
field_0x331C.end();
field_0x332C.end();
field_0x333C.end();
field_0x3400.end();
field_0x3410.end();
field_0x3438.end();
field_0x342C.end();
field_0x3454.end();
field_0x3460[0].end();
field_0x3460[1].end();
endDamageEmitter();
dKy_plight_cut(&field_0x3498);
mDoAud_seDeleteObject(&mSwordTopPos);
mDoAud_seDeleteObject(&mRopePos);
mDoAud_seDeleteObject(&field_0x338c.field_0x08);
mDoAud_seDeleteObject(&field_0x488c.GetEndP());
for (int i = 0; i < (int)ARRAY_SIZE(m_anm_heap_under); i++) {
mDoExt_destroySolidHeap(m_anm_heap_under[i].mpAnimeHeap);
}
for (int i = 0; i < (int)ARRAY_SIZE(m_anm_heap_upper); i++) {
mDoExt_destroySolidHeap(m_anm_heap_upper[i].mpAnimeHeap);
}
mDoExt_destroySolidHeap(mpTextureAnimeResHeap);
mDoExt_destroySolidHeap(mpTextureScrollResHeap);
mDoExt_destroySolidHeap(mpItemHeaps[0]);
mDoExt_destroySolidHeap(mpItemHeaps[1]);
mDoExt_destroySolidHeap(field_0x2ECC);
mJAIZelAnime.stop();
dComIfGp_clearPlayerStatus0(0, 0x00400000); // Waiting for the boomerang to come back
dComIfGp_clearPlayerStatus1(0, 0x00040000);
g_dComIfG_gameInfo.play.field_0x4947 = 0;
cancelNoDamageMode();
return TRUE;
}
/* 80123058-80123078 .text daPy_Delete__FP9daPy_lk_c */
void daPy_Delete(daPy_lk_c*) {
/* Nonmatching */
static BOOL daPy_Delete(daPy_lk_c* i_this) {
return ((daPy_lk_c*)i_this)->playerDelete();
}
/* 80123078-80123360 .text initTextureAnime__9daPy_lk_cFv */
@@ -1448,8 +1623,133 @@ void daPy_lk_c::initTextureScroll() {
}
/* 80123834-8012469C .text createHeap__9daPy_lk_cFv */
void daPy_lk_c::createHeap() {
/* Nonmatching */
BOOL daPy_lk_c::createHeap() {
/* Nonmatching - data offsets */
J3DModelData* tmp_modelData;
J3DAnmTransform* bck;
J3DAnmTevRegKey* brk;
int ret;
mpCLModelData = initModel(&mpCLModel, LINK_BDL_CL, 0x37221222);
tmp_modelData = initModel(&mpHandsModel, LINK_BDL_HANDS, 0x37221222);
tmp_modelData = initModel(&mpKatsuraModel, LINK_BDL_KATSURA, 0x37221222);
tmp_modelData = initModel(&mpYamuModel, LINK_BDL_YAMU, 0x37221222);
tmp_modelData = initModel(&mpPringModel, LINK_BDL_PRING, 0x37221222);
tmp_modelData = initModel(&mpSwgripaModel, LINK_BDL_SWGRIPA, 0x37221222);
tmp_modelData = initModel(&mpSwgripmsModel, LINK_BDL_SWGRIPMS, 0x37221222);
bck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, LINK_BCK_SWGRIPMSAB);
ret = mSwgripmsabBckAnim.init(mpSwgripmsModel->getModelData(), bck, false, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false);
if (!ret) { JUT_ASSERT(21046, 0); }
mpTswgripmsabBrk = entryBrk(tmp_modelData, LINK_BRK_TSWGRIPMSAB);
mpTswgripmsBtk = entryBtk(tmp_modelData, LINK_BTK_TSWGRIPMS);
tmp_modelData = initModel(&mpPodmsModel, LINK_BDL_PODMS, 0x37221222);
tmp_modelData = initModel(&mpShaModel, LINK_BDL_SHA, 0x37221222);
bck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, LINK_BCK_ATNGSHA);
ret = mAtngshaBck.init(mpShaModel->getModelData(), bck, false, J3DFrameCtrl::LOOP_ONCE_e, 1.0f, 0, -1, false);
if (!ret) { JUT_ASSERT(21063, 0); }
tmp_modelData = initModel(&mpShmsModel, LINK_BDL_SHMS, 0x37221222);
mpTshmsBtk = entryBtk(tmp_modelData, LINK_BTK_TSHMS);
J3DSkinDeform* shmsSkinDeform = new J3DSkinDeform();
if (!shmsSkinDeform) { JUT_ASSERT(21077, 0); }
if (!mpShmsModel->setSkinDeform(shmsSkinDeform, 1)) { JUT_ASSERT(21080, 0); }
tmp_modelData = initModel(&mpYmsls00Model, LINK_BDL_YMSLS00, 0x13000222);
mpYmsls00Btk = entryBtk(tmp_modelData, LINK_BTK_YMSLS00);
tmp_modelData = initModel(&mpHbootsModelRightFoot, LINK_BDL_HBOOTS, 0x37221222);
tmp_modelData = initModel(&mpHbootsModelLeftFoot, LINK_BDL_HBOOTS, 0x37221222);
tmp_modelData = initModel(&mpSuimenMunyaModel, LINK_BDL_SUIMEN_MUNYA, 0x11001222);
mpSuimenMunyaBtk = entryBtk(tmp_modelData, LINK_BTK_SUIMEN_MUNYA);
tmp_modelData = initModel(&mpYuchw00Model, LINK_BDL_YUCHW00, 0x13000222);
bck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, LINK_BCK_YUCHW00);
ret = mYuchw00Bck.init(tmp_modelData, bck, 1, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false);
if (!ret) { JUT_ASSERT(21113, 0); }
mpYuchw00Btk = entryBtk(tmp_modelData, LINK_BTK_YUCHW00);
mpYuchw00Brk = entryBrk(tmp_modelData, LINK_BRK_YUCHW00);
mpYuchw00Brk->setFrame(mpYuchw00Brk->getFrameMax()-0.001f);
tmp_modelData = initModel(&mpYbafo00Model, LINK_BDL_YBAFO00, 0x13000222);
mpYbafo00Btk = entryBtk(tmp_modelData, LINK_BTK_YBAFO00);
mpYbafo00Btk->setFrame(mpYbafo00Btk->getFrameMax()-0.001f);
tmp_modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, LINK_BDL_YAURA00);
JUT_ASSERT(21130, tmp_modelData != 0);
daPy_aura_c* aura_p = mMagicArmorAuraEntries;
for (int i = 0; i < 6; i++) {
aura_p->setModel(mDoExt_J3DModel__create(tmp_modelData, 0x00080000, 0x11001222));
JUT_ASSERT(21139, aura_p->getModel() != 0);
aura_p++;
}
mpYaura00Btk = entryBtk(tmp_modelData, LINK_BTK_YAURA00);
brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, LINK_BRK_YAURA00_R);
ret = mYaura00rBrk.init(tmp_modelData, brk, false, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false, 0);
if (!ret) { JUT_ASSERT(21147, 0); }
mYaura00rBrk.setFrame(0.0f);
tmp_modelData = initModel(&mpYmgcs00Model, LINK_BDL_YMGCS00, 0x11001222);
mpYmgcs00Btk = entryBtk(tmp_modelData, LINK_BTK_YMGCS00);
brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, LINK_BRK_YMGCS00_MS);
ret = mYmgcs00Brk.init(tmp_modelData, brk, false, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false, 0);
if (!ret) { JUT_ASSERT(21161, 0); }
mYmgcs00Brk.setFrame(0.0f);
tmp_modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, LINK_BDL_BOMB);
JUT_ASSERT(21169, tmp_modelData != 0);
mpBombBrk = entryBrk(tmp_modelData, LINK_BRK_BOMB);
tmp_modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, LINK_BDL_GWP00);
JUT_ASSERT(21176, tmp_modelData != 0);
mpGwp00BrkData = entryBrk(tmp_modelData, LINK_BRK_GWP00);
mpGwp00BtkData = entryBtk(tmp_modelData, LINK_BTK_GWP00);
tmp_modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, LINK_BDL_ARROW);
JUT_ASSERT(21184, tmp_modelData != 0);
mpIceArrowBtk = entryBtk(tmp_modelData, LINK_BTK_TTIPICE);
tmp_modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, LINK_BDL_ARROWGLITTER);
JUT_ASSERT(21191, tmp_modelData != 0);
mpLightArrowBtk = entryBtk(tmp_modelData, LINK_BTK_TARROWGLITTER);
tmp_modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, LINK_BDL_GICER00);
JUT_ASSERT(21198, tmp_modelData != 0);
mpGicer00Btk = entryBtk(tmp_modelData, LINK_BTK_GICER00);
tmp_modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, LINK_BDL_GICER01);
JUT_ASSERT(21198, tmp_modelData != 0);
mpGicer01Btk = entryBtk(tmp_modelData, LINK_BTK_GICER01);
const int numCLJoints = 0x2A;
m_old_fdata = new mDoExt_MtxCalcOldFrame(new J3DTransformInfo[numCLJoints], new Quaternion[numCLJoints]);
JUT_ASSERT(21233, m_old_fdata != 0);
m_pbCalc[PART_UNDER_e] = new mDoExt_MtxCalcAnmBlendTblOld(m_old_fdata, ARRAY_SIZE(mAnmRatioUnder), mAnmRatioUnder);
JUT_ASSERT(21239, m_pbCalc[PART_UNDER_e] != 0);
m_pbCalc[PART_UPPER_e] = new mDoExt_MtxCalcAnmBlendTblOld(m_old_fdata, ARRAY_SIZE(mAnmRatioUpper), mAnmRatioUpper);
JUT_ASSERT(21245, m_pbCalc[PART_UPPER_e] != 0);
initTextureScroll();
initTextureAnime();
m_HIO = new daPy_HIO_c();
JUT_ASSERT(21254, m_HIO != 0);
m_anm_heap_under[UNDER_MOVE0_e].m_buffer = new(0x20) u8[0xB400];
JUT_ASSERT(21259, m_anm_heap_under[UNDER_MOVE0_e].m_buffer != 0);
m_sanm_buffer = new(0x20) u8[0x200];
JUT_ASSERT(21266, m_sanm_buffer != 0);
m_item_bck_buffer = new(0x20) u8[0x1000];
JUT_ASSERT(21269, m_item_bck_buffer != 0);
return TRUE;
}
/* 8012469C-801249F8 .text createAnimeHeap__9daPy_lk_cFPP12JKRSolidHeapQ29daPy_lk_c14daPy_HEAP_TYPE */
@@ -1458,17 +1758,17 @@ void daPy_lk_c::createAnimeHeap(JKRSolidHeap**, daPy_lk_c::daPy_HEAP_TYPE) {
}
/* 80124A40-80124B30 .text initModel__9daPy_lk_cFPP8J3DModeliUl */
void daPy_lk_c::initModel(J3DModel**, int, u32) {
J3DModelData* daPy_lk_c::initModel(J3DModel**, int, u32) {
/* Nonmatching */
}
/* 80124B30-80124BE4 .text entryBtk__9daPy_lk_cFP12J3DModelDatai */
void daPy_lk_c::entryBtk(J3DModelData*, int) {
J3DAnmTextureSRTKey* daPy_lk_c::entryBtk(J3DModelData*, int) {
/* Nonmatching */
}
/* 80124BE4-80124C98 .text entryBrk__9daPy_lk_cFP12J3DModelDatai */
void daPy_lk_c::entryBrk(J3DModelData*, int) {
J3DAnmTevRegKey* daPy_lk_c::entryBrk(J3DModelData*, int) {
/* Nonmatching */
}
@@ -1478,8 +1778,8 @@ void daPy_lk_c::playerInit() {
}
int phase_1(daPy_lk_c* i_this) {
g_dComIfG_gameInfo.play.mpPlayer[0] = i_this;
g_dComIfG_gameInfo.play.mpPlayerPtr[0] = i_this;
dComIfGp_setPlayer(0, i_this);
dComIfGp_setLinkPlayer(i_this);
fopAcM_setStageLayer(i_this);
i_this->mAttentionInfo.mFlags = 0xFFFFFFFF;
@@ -1494,7 +1794,7 @@ int phase_1(daPy_lk_c* i_this) {
int phase_2(daPy_lk_c* i_this) {
int result;
if (g_dComIfG_gameInfo.play.mCameraInfo[g_dComIfG_gameInfo.play.mCurCamera[0]].mpCamera == NULL) {
if (dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)) == NULL) {
result = cPhs_INIT_e;
} else {
fopAcM_SetupActor(i_this, daPy_lk_c);
@@ -1531,7 +1831,7 @@ int phase_3(daPy_lk_c* i_this) {
return i_this->makeBgWait();
}
void daPy_Create(fopAc_ac_c* i_this) {
static s32 daPy_Create(fopAc_ac_c* i_this) {
static int (*l_method[3])(void*) = {
(int (*)(void*))phase_1,
(int (*)(void*))phase_2,
@@ -1539,7 +1839,7 @@ void daPy_Create(fopAc_ac_c* i_this) {
};
daPy_lk_c* player_link = (daPy_lk_c*)i_this;
dComLbG_PhaseHandler(&player_link->mPhsLoad, l_method, player_link);
return dComLbG_PhaseHandler(&player_link->mPhsLoad, l_method, player_link);
}
/* 80127BA0-80127CC0 .text setSeAnime__9daPy_lk_cFPC14daPy_anmHeap_cP12J3DFrameCtrl */
@@ -1689,3 +1989,28 @@ BOOL daPy_lk_c::getBokoFlamePos(cXyz*) {
#include "src/d/actor/d_a_player_food.inc"
#include "src/d/actor/d_a_player_sword.inc"
actor_method_class l_daPy_Method = {
(process_method_func)daPy_Create,
(process_method_func)daPy_Delete,
(process_method_func)daPy_Execute,
(process_method_func)daPy_IsDelete,
(process_method_func)daPy_Draw,
};
actor_process_profile_definition g_profile_PLAYER = {
/* LayerID */ fpcLy_CURRENT_e,
/* ListID */ 5,
/* ListPrio */ fpcLy_CURRENT_e,
/* ProcName */ PROC_PLAYER,
/* Proc SubMtd */ &g_fpcLf_Method.mBase,
/* Size */ sizeof(daPy_lk_c),
/* SizeOther */ 0,
/* Parameters */ 0,
/* Leaf SubMtd */ &g_fopAc_Method.base,
/* Priority */ 0x0068,
/* Actor SubMtd */ &l_daPy_Method,
/* Status */ fopAcStts_FREEZE_e,
/* Group */ fopAc_PLAYER_e,
/* CullType */ fopAc_CULLBOX_0_e,
};
+16 -5
View File
@@ -78,18 +78,29 @@ void daPy_followEcallBack_c::execute(JPABaseEmitter*) {
}
/* 80129F98-80129FA0 .text setup__22daPy_followEcallBack_cFP14JPABaseEmitterPC4cXyzPC5csXyzSc */
void daPy_followEcallBack_c::setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8) {
/* Nonmatching */
void daPy_followEcallBack_c::setup(JPABaseEmitter* emitter, const cXyz*, const csXyz*, s8) {
mpEmitter = emitter;
}
/* 80129FA0-80129FD4 .text end__22daPy_followEcallBack_cFv */
void daPy_followEcallBack_c::end() {
/* Nonmatching */
if (mpEmitter) {
mpEmitter->becomeInvalidEmitter();
mpEmitter->setEmitterCallBackPtr(NULL);
mpEmitter = NULL;
}
}
/* 80129FD4-8012A040 .text execute__25daPy_waterDropEcallBack_cFP14JPABaseEmitter */
void daPy_waterDropEcallBack_c::execute(JPABaseEmitter*) {
/* Nonmatching */
void daPy_waterDropEcallBack_c::execute(JPABaseEmitter* emitter) {
daPy_followEcallBack_c::execute(emitter);
bool shouldEnd = false;
if (emitter->checkStatus(0x08) && emitter->getParticleNumber() == 0) {
shouldEnd = true;
}
if (shouldEnd) {
end();
}
}
/* 8012A040-8012A058 .text setup__25daPy_waterDropEcallBack_cFP14JPABaseEmitterPC4cXyzPC5csXyzSc */
+4 -6
View File
@@ -1221,7 +1221,7 @@ void dStage_playerInitIkada(fopAcM_prm_class*, void*) {
}
/* 800419D0-80041AEC .text dStage_chkPlayerId__Fii */
u32 dStage_chkPlayerId(int playerId, int room_no) {
bool dStage_chkPlayerId(int playerId, int room_no) {
stage_actor_class * player;
if (room_no == -1) {
@@ -1232,14 +1232,14 @@ u32 dStage_chkPlayerId(int playerId, int room_no) {
}
if (player == NULL)
return FALSE;
return false;
stage_actor_data_class * actor = player->m_entries;
for (int i = 0; i < player->num; i++, actor++)
if ((u8)actor->mAngle.z == playerId)
return TRUE;
return true;
return FALSE;
return false;
}
/* 80041AF4-80041E84 .text dStage_playerInit__FP11dStage_dt_cPviPv */
@@ -2061,8 +2061,6 @@ void dStage_roomControl_c::SetTimePass(int i_timepass) {
m_time_pass = i_timepass;
}
int dStage_changeScene(int i_exitId, f32 speed, u32 mode, s8 room_no);
static inline s8 IkadaGetRoomNoArg0(fopAc_ac_c* i_actor) {
return (fopAcM_GetParam(i_actor) >> 4) & 0x3F;
}