Merge pull request #510 from LagoLunatic/player

player OK, started adding player flag enums and inlines, kytag05 OK
This commit is contained in:
Jasper St. Pierre
2023-10-07 18:04:33 -07:00
committed by GitHub
21 changed files with 793 additions and 184 deletions
+3 -3
View File
@@ -432,7 +432,7 @@ config.libs = [
Object(Matching, "d/actor/d_a_nh.cpp"),
Object(NonMatching, "d/actor/d_a_npc_fa1.cpp"),
Object(NonMatching, "d/actor/d_a_obj_search.cpp"),
Object(NonMatching, "d/actor/d_a_player.cpp"),
Object(Matching, "d/actor/d_a_player.cpp"),
Object(NonMatching, "d/actor/d_a_player_main.cpp"),
Object(NonMatching, "d/actor/d_a_player_npc.cpp"),
Object(NonMatching, "d/actor/d_a_sea.cpp"),
@@ -1237,8 +1237,8 @@ config.libs = [
ActorRel(NonMatching, "d_a_kytag01"),
ActorRel(NonMatching, "d_a_kytag02"),
ActorRel(NonMatching, "d_a_kytag03"),
ActorRel(Matching, "d_a_kytag04"),
ActorRel(NonMatching, "d_a_kytag05"),
ActorRel(Matching, "d_a_kytag04"),
ActorRel(Matching, "d_a_kytag05"),
ActorRel(Matching, "d_a_kytag06"),
ActorRel(NonMatching, "d_a_kytag07"),
ActorRel(NonMatching, "d_a_lamp"),
+14 -2
View File
@@ -78,6 +78,9 @@ public:
void getPivotY();
void setStatus(u32 status) { mFlags |= status; }
void clearStatus(u32 status) { mFlags &= ~status; }
bool checkStatus(u32 status) { return mFlags & status; }
void initStatus(u32 status);
u8 getGlobalAlpha() { return mGlobalPrmColor.a; }
void setGlobalAlpha(u8 alpha) { mGlobalPrmColor.a = alpha; }
@@ -102,12 +105,21 @@ public:
void setRate(float i_rate) { mRate = i_rate; }
void stopCreateParticle() { setStatus(JPAEmtrStts_StopEmit); }
void becomeImmortalEmitter() { setStatus(JPAEmtrStts_Immortal); }
void quitImmortalEmitter() { clearStatus(JPAEmtrStts_Immortal); }
void becomeInvalidEmitter() {
mMaxFrame = -1;
stopCreateParticle();
}
void setEmitterCallBackPtr(JPACallBackBase<JPABaseEmitter*>* callback) {
mpEmitterCallBack = callback;
}
void setParticleCallBackPtr(JPACallBackBase2<JPABaseEmitter*, JPABaseParticle*>* callback) {
mpParticleCallBack = callback;
}
/* 0x000 */ VolumeFunc mVolumeFunc;
/* 0x00C */ cXyz mEmitterScale;
/* 0x018 */ cXyz mEmitterTranslation;
@@ -148,8 +160,8 @@ public:
/* 0x188 */ JSUPtrList mChildParticles;
/* 0x194 */ JSUPtrList* mpPtclVacList;
/* 0x198 */ JPADataBlockLinkInfo* mpDataLinkInfo;
/* 0x19C */ JPACallBackBase<JPABaseEmitter>* mpEmitterCallBack;
/* 0x1A0 */ JPACallBackBase2<JPABaseEmitter,JPABaseParticle>* mpParticleCallBack;
/* 0x19C */ JPACallBackBase<JPABaseEmitter*>* mpEmitterCallBack;
/* 0x1A0 */ JPACallBackBase2<JPABaseEmitter*, JPABaseParticle*>* mpParticleCallBack;
/* 0x1A4 */ JMath::TRandom_fast_ mRandomSeed;
/* 0x1A8 */ Mtx mGlobalRotation;
/* 0x1D8 */ JGeometry::TVec3<f32> mGlobalScale;
+1 -1
View File
@@ -63,7 +63,7 @@ public:
/* 0xC2 */ s16 mRotateSpeed;
/* 0xC4 */ u8 field_0xC4[0xC6 - 0xC4];
/* 0xC6 */ u16 mTexIdx;
/* 0xC8 */ JPACallBackBase2<JPABaseEmitter,JPABaseParticle>* mpCallBack2;
/* 0xC8 */ JPACallBackBase2<JPABaseEmitter*, JPABaseParticle*>* mpCallBack2;
/* 0xCC */ u32 mFlags;
};
+72 -17
View File
@@ -16,15 +16,16 @@ public:
virtual void calc(J3DMaterial*) const;
};
class daPy_mtxFollowEcallBack_c {
class daPy_mtxFollowEcallBack_c : public dPa_levelEcallBack {
public:
void execute(JPABaseEmitter*);
void end();
void makeEmitter(unsigned short, float(*)[4], const cXyz*, const cXyz*);
void makeEmitterColor(unsigned short, float(*)[4], const cXyz*, const _GXColor*, const _GXColor*);
void setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char);
void makeEmitter(u16, MtxP, const cXyz*, const cXyz*);
void makeEmitterColor(u16, MtxP, const cXyz*, const _GXColor*, const _GXColor*);
void setup(JPABaseEmitter* emitter, const cXyz*, const csXyz*, s8) { mpEmitter = emitter; }
/* 0x0 */ u8 field_0x0[0xC];
/* 0x04 */ JPABaseEmitter* mpEmitter;
/* 0x08 */ MtxP mpMtx;
};
class daPy_HIO_c {
@@ -66,15 +67,41 @@ private:
class daPy_py_c : public fopAc_ac_c {
public:
enum daPy_PROC {};
enum daPy_FLG0 {
daPyFlg0_CUT_AT_FLG = 0x00000040,
daPyFlg0_PUSH_PULL_KEEP = 0x00000800,
daPyFlg0_UNK1000 = 0x00001000,
daPyFlg0_UNK200000 = 0x00200000,
daPyFlg0_EQUIP_HEAVY_BOOTS = 0x02000000,
daPyFlg0_NO_DRAW = 0x08000000,
daPyFlg0_HEAVY_STATE = 0x40000000,
};
enum daPy_FLG1 {
daPy_FLG1_EQUIP_DRAGON_SHIELD = 0x00000001,
daPy_FLG1_NPC_CALL_COMMAND = 0x00000002,
daPy_FLG1_FORCE_VOMIT_JUMP = 0x00000010,
daPy_FLG1_NPC_NOT_CHANGE = 0x00000040,
daPy_FLG1_CONFUSE = 0x00000100,
daPy_FLG1_SHIP_TACT = 0x00001000,
daPy_FLG1_USE_ARROW_EFFECT = 0x00002000,
daPy_FLG1_LETTER_READ_EYE_MOVE = 0x00004000,
daPy_FLG1_UNK8000 = 0x00008000,
daPy_FLG1_FOREST_WATER_USE = 0x00020000,
daPy_FLG1_WATER_DROP = 0x00080000,
daPy_FLG1_VINE_CATCH = 0x02000000,
daPy_FLG1_LAST_COMBO_WAIT = 0x20000000,
};
/* 0x290 */ u8 mAttackState;
/* 0x291 */ u8 field_0x291;
/* 0x292 */ u8 field_0x292[0x294 - 0x292];
/* 0x294 */ s16 mDamageWaitTimer;
/* 0x296 */ s16 mQuakeTimer;
/* 0x298 */ int field_0x298;
/* 0x29C */ u32 field_0x29c;
/* 0x2A0 */ u32 field_0x2a0;
/* 0x29C */ u32 mNoResetFlg0;
/* 0x2A0 */ u32 mNoResetFlg1;
/* 0x2A4 */ u32 field_0x2a4;
/* 0x2A8 */ f32 field_0x2a8;
/* 0x2AC */ u8 field_0x2AC[0x2B0 - 0x2AC];
@@ -86,9 +113,7 @@ public:
/* 0x2D4 */ cXyz field_0x2d4;
/* 0x2E0 */ cXyz field_0x2e0;
/* 0x2EC */ cXyz mRopePos;
/* 0x2F8 */ f32 field_0x2f8;
/* 0x2FC */ u8 field_0x2FC[0x300 - 0x2FC];
/* 0x300 */ f32 field_0x300;
/* 0x2F8 */ cXyz field_0x2f8;
/* 0x304 */ daPy_demo_c mDemo;
u8 getCutType() const { return mAttackState; }
@@ -97,9 +122,41 @@ public:
s16 getBodyAngleY() { return mBodyAngle.y; }
void changeDemoMoveAngle(s16 angle) { mDemo.setMoveAngle(angle); }
void onPlayerNoDraw() { field_0x29c |= 0x8000000; }
void offPlayerNoDraw() { field_0x29c &= ~0x8000000; }
void onNoResetFlg0(daPy_FLG0 flag) { mNoResetFlg0 |= flag; }
void offNoResetFlg0(daPy_FLG0 flag) { mNoResetFlg0 &= ~flag; }
bool checkNoResetFlg0(daPy_FLG0 flag) const { return mNoResetFlg0 & flag; }
bool getCutAtFlg() const { return checkNoResetFlg0(daPyFlg0_CUT_AT_FLG); }
void onPushPullKeep() { onNoResetFlg0(daPyFlg0_PUSH_PULL_KEEP); }
void offPushPullKeep() { offNoResetFlg0(daPyFlg0_PUSH_PULL_KEEP); }
bool checkEquipHeavyBoots() const { return checkNoResetFlg0(daPyFlg0_EQUIP_HEAVY_BOOTS); }
void onPlayerNoDraw() { onNoResetFlg0(daPyFlg0_NO_DRAW); }
void offPlayerNoDraw() { offNoResetFlg0(daPyFlg0_NO_DRAW); }
void onHeavyState() { onNoResetFlg0(daPyFlg0_HEAVY_STATE); }
void offHeavyState() { offNoResetFlg0(daPyFlg0_HEAVY_STATE); }
void onNoResetFlg1(daPy_FLG1 flag) { mNoResetFlg1 |= flag; }
void offNoResetFlg1(daPy_FLG1 flag) { mNoResetFlg1 &= ~flag; }
bool checkNoResetFlg1(daPy_FLG1 flag) const { return mNoResetFlg1 & flag; }
bool checkEquipDragonShield() const { return checkNoResetFlg1(daPy_FLG1_EQUIP_DRAGON_SHIELD); }
void onNpcCall() { onNoResetFlg1(daPy_FLG1_NPC_CALL_COMMAND); }
void offNpcCallCommand() { offNoResetFlg1(daPy_FLG1_NPC_CALL_COMMAND); }
bool checkNpcCallCommand() const { return checkNoResetFlg1(daPy_FLG1_NPC_CALL_COMMAND); }
void onForceVomitJump() { onNoResetFlg1(daPy_FLG1_FORCE_VOMIT_JUMP); }
void onNpcNotChange() { onNoResetFlg1(daPy_FLG1_NPC_NOT_CHANGE); }
void offNpcNotChange() { offNoResetFlg1(daPy_FLG1_NPC_NOT_CHANGE); }
void onConfuse() { onNoResetFlg1(daPy_FLG1_CONFUSE); }
void offConfuse() { offNoResetFlg1(daPy_FLG1_CONFUSE); }
bool checkConfuse() const { return checkNoResetFlg1(daPy_FLG1_CONFUSE); }
void onShipTact() { onNoResetFlg1(daPy_FLG1_SHIP_TACT); }
void offShipTact() { offNoResetFlg1(daPy_FLG1_SHIP_TACT); }
void onUseArrowEffect() { onNoResetFlg1(daPy_FLG1_USE_ARROW_EFFECT); }
void offUseArrowEffect() { offNoResetFlg1(daPy_FLG1_USE_ARROW_EFFECT); }
void onLetterReadEyeMove() { onNoResetFlg1(daPy_FLG1_LETTER_READ_EYE_MOVE); }
bool checkForestWaterUse() const { return checkNoResetFlg1(daPy_FLG1_FOREST_WATER_USE); }
void onWaterDrop() { onNoResetFlg1(daPy_FLG1_WATER_DROP); }
void onVineCatch() { onNoResetFlg1(daPy_FLG1_VINE_CATCH); }
bool checkLastComboWait() const { return checkNoResetFlg1(daPy_FLG1_LAST_COMBO_WAIT); }
virtual MtxP getLeftHandMatrix() = 0;
virtual MtxP getRightHandMatrix() = 0;
virtual void getGroundY() = 0;
@@ -133,7 +190,7 @@ public:
virtual void setHookshotCarryOffset(unsigned int, const cXyz*);
virtual void setPlayerPosAndAngle(cXyz*, s16);
virtual void setPlayerPosAndAngle(cXyz*, csXyz*);
virtual void setPlayerPosAndAngle(float (*)[4]);
virtual void setPlayerPosAndAngle(MtxP);
virtual void setThrowDamage(cXyz*, s16, f32, f32, int);
virtual void changeTextureAnime(u16, u16, int);
virtual void cancelChangeTextureAnime();
@@ -148,8 +205,6 @@ public:
void setDoButtonQuake();
void stopDoButtonQuake(int);
void getRopePos() const;
BOOL checkConfuse() { return field_0x2a0 & 0x100; }
};
#endif /* D_A_PLAYER */
+6
View File
@@ -7,6 +7,12 @@
struct daYkgr_c {
public:
static void stop() {
if (m_emitter) {
m_alpha_flag = 0;
}
};
static JPABaseEmitter* m_emitter;
static u8 m_alpha_flag;
public:
+106
View File
@@ -0,0 +1,106 @@
#ifndef D_CAM_PARAM_H
#define D_CAM_PARAM_H
#include "dolphin/types.h"
struct dCamera__Style;
class dCstick_c {
/* 0x00 */ f32 m00;
/* 0x04 */ f32 m04;
/* 0x08 */ u32 m08;
/* 0x0C */ u8 m0C[0x10 - 0x0C];
/* 0x10 */ void* vtbl;
};
class dCamBGChk_c {
/* 0x00 */ f32 m00;
/* 0x04 */ f32 m04;
/* 0x08 */ f32 m08;
/* 0x0C */ f32 m0C;
/* 0x10 */ f32 m10;
/* 0x14 */ f32 m14;
/* 0x18 */ f32 m18;
/* 0x1C */ f32 m1C;
/* 0x20 */ f32 m20;
/* 0x24 */ f32 m24;
/* 0x28 */ f32 m28;
/* 0x2C */ f32 m2C;
/* 0x30 */ f32 m30;
/* 0x34 */ f32 m34;
/* 0x38 */ f32 m38;
/* 0x3C */ f32 m3C;
/* 0x40 */ f32 m40;
/* 0x44 */ f32 m44;
/* 0x48 */ f32 m48;
/* 0x4C */ f32 m4C;
/* 0x50 */ f32 m50;
/* 0x54 */ f32 m54;
/* 0x58 */ f32 m58;
/* 0x5C */ f32 m5C;
};
class dCamSetup_c {
/* 0x000 */ f32 m000;
/* 0x004 */ f32 m004;
/* 0x008 */ u16 m008;
/* 0x00A */ u8 m00A[0x00C - 0x00A];
/* 0x00C */ u32 m00C;
/* 0x010 */ int m010;
/* 0x014 */ u8 m014[0x01C - 0x014];
/* 0x01C */ int m01C;
/* 0x020 */ f32 m020;
/* 0x024 */ f32 m024;
/* 0x028 */ f32 m028;
/* 0x02C */ f32 m02C;
/* 0x030 */ f32 m030;
/* 0x034 */ f32 m034;
/* 0x038 */ f32 m038;
/* 0x03C */ f32 m03C;
/* 0x040 */ f32 m040;
/* 0x044 */ f32 m044;
/* 0x048 */ f32 m048;
/* 0x04C */ f32 m04C;
/* 0x050 */ f32 m050;
/* 0x054 */ f32 m054;
/* 0x058 */ f32 m058;
/* 0x05C */ f32 m05C;
/* 0x060 */ f32 m060;
/* 0x064 */ f32 m064;
/* 0x068 */ f32 m068;
/* 0x06C */ f32 m06C;
/* 0x070 */ f32 m070;
/* 0x074 */ u32 m074;
/* 0x078 */ f32 m078;
/* 0x07C */ f32 m07C;
/* 0x080 */ f32 m080;
/* 0x084 */ f32 m084;
/* 0x088 */ f32 m088;
/* 0x08C */ f32 m08C;
/* 0x090 */ u8 m090[0x094 - 0x090];
/* 0x094 */ u32 m094;
/* 0x098 */ f32 m098;
/* 0x09C */ f32 m09C;
/* 0x0A0 */ f32 m0A0;
/* 0x0A4 */ f32 m0A4;
/* 0x0A8 */ u32 m0A8;
/* 0x0AC */ f32 m0AC;
/* 0x0B0 */ u32 m0B0;
/* 0x0B4 */ f32 m0B4;
/* 0x0B8 */ f32 m0B8;
/* 0x0BC */ f32 m0BC;
/* 0x0C0 */ f32 m0C0;
/* 0x0C4 */ f32 m0C4;
/* 0x0C8 */ u32 m0C8;
/* 0x0CC */ void* vtbl;
/* 0x0D0 */ dCstick_c mCstick;
/* 0x0E4 */ dCamBGChk_c mBGChk;
};
class dCamParam_c {
/* 0x0 */ dCamera__Style* mpStyle;
/* 0x4 */ int mStyleIdx;
/* 0x8 */ void* vtbl;
};
#endif /* D_CAM_PARAM_H */
+2
View File
@@ -220,6 +220,7 @@ public:
u8 GetHitMark() { return mHitMark; }
void SetRVec(cXyz& vec) { mRVec = vec; }
cXyz* GetVecP() { return &mVec; }
cXyz* GetRVecP() { return &mRVec; }
void SetHitPos(cXyz& pos) { mHitPos = pos; }
cXyz* GetHitPosP() { return &mHitPos; }
inline void ClrHit() { ClrActorInfo(); }
@@ -294,6 +295,7 @@ public:
bool ChkAtShieldHit() { return mGObjAt.ChkRPrm(1); }
cXyz* GetAtVecP() { return mGObjAt.GetVecP(); }
cXyz* GetTgVecP() { return mGObjTg.GetVecP(); }
cXyz* GetTgRVecP() { return mGObjTg.GetRVecP(); }
void SetAtSpl(dCcG_At_Spl spl) { mGObjAt.SetAtSpl(spl); }
void SetAtHitCallback(dCcD_HitCallback callback) { mGObjAt.SetHitCallback(callback); }
void SetTgHitCallback(dCcD_HitCallback callback) { mGObjTg.SetHitCallback(callback); }
+144
View File
@@ -39,6 +39,141 @@ class camera_class;
class J2DOrthoGraph;
class dDemo_actor_c;
enum ALWAYS_RES_FILE_IDS {
/* BCK */
ALWAYS_BCK_FA=0xC,
ALWAYS_BCK_OBM_SYOUGEKISW=0xD,
ALWAYS_BCK_START=0xE,
ALWAYS_BCK_VBELL=0xF,
ALWAYS_BCK_VBOKL=0x10,
ALWAYS_BCK_VCHUL=0x11,
ALWAYS_BCK_VDOKL=0x12,
ALWAYS_BCK_VESAL=0x13,
ALWAYS_BCK_VHANL=0x14,
ALWAYS_BCK_VHAPL=0x15,
ALWAYS_BCK_W_PILLAR_A=0x16,
ALWAYS_BCK_YJ_DELETE=0x17,
ALWAYS_BCK_YJ_IN=0x18,
ALWAYS_BCK_YJ_LOOP=0x19,
ALWAYS_BCK_YJ_OUT=0x1A,
ALWAYS_BCK_YJ_SCALE=0x1B,
/* BDL */
ALWAYS_BDL_ARROWITEM=0x1E,
ALWAYS_BDL_FA=0x1F,
ALWAYS_BDL_KROCK_00=0x20,
ALWAYS_BDL_OBM_KOISI1=0x21,
ALWAYS_BDL_OBM_KOISI2=0x22,
ALWAYS_BDL_OBM_KOTUBO1=0x23,
ALWAYS_BDL_OBM_OOTUBO1=0x24,
ALWAYS_BDL_VBELL=0x25,
ALWAYS_BDL_VBOKL=0x26,
ALWAYS_BDL_VDOKL=0x27,
ALWAYS_BDL_VESAL=0x28,
ALWAYS_BDL_VHAPL=0x29,
ALWAYS_BDL_VHRTL=0x2A,
ALWAYS_BDL_VKEYL=0x2B,
/* BDLM */
ALWAYS_BDL_IB=0x2E,
ALWAYS_BDL_MPA_SIMI=0x2F,
ALWAYS_BDL_MPI_KOISHI=0x30,
ALWAYS_BDL_MPM_TUBO=0x31,
ALWAYS_BDL_MPODA=0x32,
ALWAYS_BDL_MPODB=0x33,
ALWAYS_BDL_NH=0x34,
ALWAYS_BDL_OBM_SYOUGEKISW=0x35,
ALWAYS_BDL_VCHUL=0x36,
ALWAYS_BDL_VHANL=0x37,
ALWAYS_BDL_VHKAL=0x38,
ALWAYS_BDL_VHUTL=0x39,
ALWAYS_BDL_VLUPL=0x3A,
ALWAYS_BDL_W_PILLAR_A=0x3B,
ALWAYS_BDL_YA=0x3C,
ALWAYS_BDL_YAZIRUSHI_01=0x3D,
ALWAYS_BDL_YTHDR00=0x3E,
/* BMTM */
ALWAYS_BMT_ICE=0x41,
/* BPK */
ALWAYS_BPK_YJ_DELETE=0x44,
ALWAYS_BPK_YJ_IN=0x45,
ALWAYS_BPK_YJ_LOOP=0x46,
ALWAYS_BPK_YJ_OUT=0x47,
ALWAYS_BPK_YJ_SCALE=0x48,
/* BRK */
ALWAYS_BRK_IB_01=0x4B,
ALWAYS_BRK_IB_02=0x4C,
ALWAYS_BRK_MPA_SIMI=0x4D,
ALWAYS_BRK_TNH=0x4E,
ALWAYS_BRK_VCHUL=0x4F,
ALWAYS_BRK_VHANL=0x50,
ALWAYS_BRK_VLUPL=0x51,
ALWAYS_BRK_YTHDR00=0x52,
/* BTK */
ALWAYS_BTK_EFA_USONAMI_01=0x55,
ALWAYS_BTK_IB=0x56,
ALWAYS_BTK_ICE=0x57,
ALWAYS_BTK_OBM_SYOUGEKISW=0x58,
ALWAYS_BTK_VBELL=0x59,
ALWAYS_BTK_VHANL=0x5A,
ALWAYS_BTK_VHKAL=0x5B,
ALWAYS_BTK_VHUTL=0x5C,
ALWAYS_BTK_VLUPL=0x5D,
ALWAYS_BTK_W_PILLAR_A=0x5E,
ALWAYS_BTK_YA=0x5F,
ALWAYS_BTK_YTHDR00=0x60,
/* BTP */
ALWAYS_BTP_MPA_SIMI=0x63,
ALWAYS_BTP_MPI_KIBAKO_TARU=0x64,
ALWAYS_BTP_MPI_KINOHAHEN=0x65,
ALWAYS_BTP_MPI_KOISHI=0x66,
ALWAYS_BTP_MPM_TUBO=0x67,
/* DAT */
ALWAYS_BIN_ITEM_TABLE=0x6A,
/* TEX */
ALWAYS_BTI_AK_HOUSHI00=0x6D,
ALWAYS_BTI_AK_SMOKE01=0x6E,
ALWAYS_BTI_B_SEA_TEX0AND2=0x6F,
ALWAYS_BTI_B_WYURAYURA_TEX1=0x70,
ALWAYS_I4_BALL128B=0x71,
ALWAYS_BTI_BLACK_WHITE_2=0x72,
ALWAYS_BTI_CAMERA_FREE=0x73,
ALWAYS_BTI_CAMERA_SELF=0x74,
ALWAYS_BTI_F_SHIPICON=0x75,
ALWAYS_CI4_MAP08G=0x76,
ALWAYS_CI4_MAP16G=0x77,
ALWAYS_BTI_MAP_BLACK_CI8=0x78,
ALWAYS_BTI_MAP_CHECK16_CI4=0x79,
ALWAYS_BTI_MAP_FRAME1=0x7A,
ALWAYS_BTI_MAP_FRAME2=0x7B,
ALWAYS_BTI_MAP_FRAME3=0x7C,
ALWAYS_BTI_MAP_FRAME4=0x7D,
ALWAYS_BTI_ROPE=0x7E,
ALWAYS_BTI_SHMREF=0x7F,
ALWAYS_BTI_TREASUREBOX=0x80,
ALWAYS_I8_TX_SNOW01=0x81,
ALWAYS_BTI_TXA_LENS_32HALF=0x82,
ALWAYS_BTI_TXA_MOYA_A_64=0x83,
ALWAYS_BTI_TXA_MOYA_B_64=0x84,
ALWAYS_BTI_TXA_RING_A_32HAFE=0x85,
ALWAYS_BTI_TXA_TAIYO=0x86,
ALWAYS_BTI_TXA_TUKI_AS=0x87,
ALWAYS_BTI_TXA_TUKI_BS=0x88,
ALWAYS_BTI_TXA_TUKI_CS=0x89,
ALWAYS_BTI_TXA_TUKI_DS=0x8A,
ALWAYS_BTI_TXA_USONAMI_256_64MIP=0x8B,
ALWAYS_BTI_TXA_USONAMI_M_256_64MIP=0x8C,
ALWAYS_BTI_TXM_ROPE1=0x8D,
ALWAYS_BTI_UMIPT=0x8E,
};
class __d_timer_info_c {
public:
__d_timer_info_c() {
@@ -195,6 +330,7 @@ public:
fopAc_ac_c* getPlayerPtr(int idx) { return (fopAc_ac_c*)mpPlayerPtr[idx]; }
fopAc_ac_c* getPlayer(int idx) { return (fopAc_ac_c*)mpPlayer[idx]; }
void setPlayer(int idx, fopAc_ac_c* player) { mpPlayer[idx] = (daPy_py_c*)player; }
s8 getPlayerCameraID(int idx) { return mCurCamera[idx]; }
int getItemRupeeCount() { return mItemRupeeCount; }
@@ -906,6 +1042,10 @@ inline fopAc_ac_c* dComIfGp_getPlayer(int idx) {
return g_dComIfG_gameInfo.play.getPlayer(idx);
}
inline void dComIfGp_setPlayer(int idx, fopAc_ac_c* player) {
g_dComIfG_gameInfo.play.setPlayer(idx, player);
}
inline fopAc_ac_c* dComIfGp_getCb1Player() {
return g_dComIfG_gameInfo.play.getPlayerPtr(1);
}
@@ -1106,6 +1246,10 @@ inline void dComIfGp_map_mapBufferSendAGB(int param_0) {
dMap_c::mapBufferSendAGB(param_0);
}
inline dDemo_manager_c* dComIfGp_demo_get() {
return g_dComIfG_gameInfo.play.getDemo();
}
inline void dComIfGp_demo_update() {
g_dComIfG_gameInfo.play.getDemo()->update();
}
+3 -1
View File
@@ -76,6 +76,8 @@ public:
void create(u8 const*, cXyz*, f32);
void remove();
void update();
int getFrame() { return mFrame; }
/* 0x00 */ dDemo_system_c* mpSystem;
/* 0x04 */ TControl* mpControl;
@@ -87,7 +89,7 @@ public:
/* 0x1C */ void* mpMessage;
/* 0x20 */ dDemo_object_c mDemoObj;
/* 0xD0 */ void* field_0xd0;
/* 0xD4 */ int field_0xd4;
/* 0xD4 */ int mFrame;
/* 0xD8 */ int field_0xd8;
/* 0xDC */ int mState;
};
+2 -2
View File
@@ -222,7 +222,7 @@ public:
virtual void setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8);
};
class dPa_windPcallBack : JPACallBackBase2<JPABaseEmitter*, JPABaseParticle*> {
class dPa_windPcallBack : public JPACallBackBase2<JPABaseEmitter*, JPABaseParticle*> {
public:
dPa_windPcallBack();
virtual ~dPa_windPcallBack() {}
@@ -240,7 +240,7 @@ public:
virtual void setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8);
};
class dPa_ripplePcallBack : JPACallBackBase2<JPABaseEmitter*, JPABaseParticle*> {
class dPa_ripplePcallBack : public JPACallBackBase2<JPABaseEmitter*, JPABaseParticle*> {
public:
dPa_ripplePcallBack();
virtual ~dPa_ripplePcallBack() {}
+241 -2
View File
@@ -4,14 +4,253 @@
#include "f_op/f_op_view.h"
#include "SSystem/SComponent/c_sxyz.h"
#include "SSystem/SComponent/c_phase.h"
#include "SSystem/SComponent/c_angle.h"
#include "d/d_cam_param.h"
#include "global.h"
class fopAc_ac_c;
class dStage_Event_dt_c;
class camera_class;
struct stage_camera__entry {
/* 0x00 */ char mpTypeStr[16];
/* 0x10 */ u8 mArrowIdx;
/* 0x11 */ u8 m11;
/* 0x12 */ u8 m12;
/* 0x13 */ u8 m13;
};
struct stage_arrow__entry {
/* 0x00 */ cXyz mPos;
/* 0x0C */ csXyz mRot;
/* 0x12 */ s16 m12;
};
struct dCamera__EventParam {
/* 0x00 */ char mName[16];
/* 0x10 */ int mValue;
};
class d2DBSplinePath {
/* 0x00 */ int mKeyframeCur;
/* 0x04 */ int mTimer;
/* 0x08 */ int mKeyframeNum;
/* 0x0C */ int mState;
/* 0x10 */ int m10;
/* 0x14 */ int mKeyframeLast;
/* 0x18 */ u8 m18[0x1C - 0x18];
/* 0x1C */ f32 mTime;
/* 0x20 */ u8 m20[0x24 - 0x20];
/* 0x24 */ f32 mFrameWeight[3];
/* 0x30 */ int mFrameIdx[3];
/* 0x3C */ u8 m3C[0x40 - 0x3C];
/* 0x40 */ void* vtbl;
};
struct cM_rnd_c {
/* 0x0 */ int m0;
/* 0x4 */ int m4;
/* 0x8 */ int m8;
};
class dCamForcusLine {
/* 0x00 */ void* vtbl;
/* 0x04 */ cM_rnd_c mRnd;
/* 0x10 */ u8 field_10[0x70 - 0x10];
};
class dCamera_c {
u8 m_[0x800];
public:
struct BG {
u8 temp[0xB0];
};
/* 0x000 */ camera_class* mpCamera;
/* 0x004 */ u8 m004;
/* 0x005 */ u8 m005;
/* 0x006 */ u8 m006[0x008 - 0x006];
/* 0x008 */ f32 m008;
/* 0x00C */ s16 m00C;
/* 0x00E */ cSAngle m00E;
/* 0x010 */ cXyz mCenter;
/* 0x01C */ cXyz mEye;
/* 0x028 */ cXyz mUp;
/* 0x034 */ cSAngle mBank;
/* 0x036 */ u8 m036[0x038 - 0x036];
/* 0x038 */ f32 mFovY;
/* 0x03C */ cSGlobe m03C;
/* 0x044 */ cXyz m044;
/* 0x050 */ cXyz m050;
/* 0x05C */ s16 m05C;
/* 0x05E */ u8 m05E[0x060 - 0x05E];
/* 0x060 */ f32 m060;
/* 0x064 */ u8 m064[0x068 - 0x064];
/* 0x068 */ int m068;
/* 0x06C */ cSAngle mAngleY;
/* 0x06E */ u8 m06E[0x080 - 0x06E];
/* 0x080 */ u32 m080;
/* 0x084 */ cXyz m084;
/* 0x090 */ cXyz m090;
/* 0x09C */ f32 m09C;
/* 0x0A0 */ f32 m0A0;
// /* 0x0A4 */ @class$4017d_camera_cpp m0A4[2];
/* 0x0A4 */ u8 m0A4[0x40];
/* 0x0E4 */ int mStageMapToolCameraIdx;
/* 0x0E8 */ int m0E8;
/* 0x0EC */ u8 m0EC[0x108 - 0x0EC];
/* 0x108 */ int m108;
/* 0x10C */ u8 m10C[0x110 - 0x10C];
/* 0x110 */ u8 m110;
/* 0x111 */ u8 m111[0x114 - 0x111];
/* 0x114 */ int m114;
/* 0x118 */ int m118;
/* 0x11C */ int m11C;
/* 0x120 */ int mCameraInfoIdx;
/* 0x124 */ int mPadId;
/* 0x128 */ fopAc_ac_c* mpPlayerActor;
/* 0x12C */ fopAc_ac_c* mpLockonTarget;
/* 0x130 */ int m130;
/* 0x134 */ u8 m134[0x138 - 0x134];
/* 0x138 */ int m138;
/* 0x13C */ int mCurMode;
/* 0x140 */ int mNextMode;
/* 0x144 */ int m144;
/* 0x148 */ cSAngle m148;
/* 0x14A */ u8 m14A[0x14C - 0x14A];
/* 0x14C */ f32 m14C;
/* 0x150 */ u8 m150[0x154 - 0x150];
/* 0x154 */ f32 mStickMainPosXLast;
/* 0x158 */ f32 mStickMainPosYLast;
/* 0x15C */ f32 mStickMainValueLast;
/* 0x160 */ f32 mStickMainPosXDelta;
/* 0x164 */ f32 mStickMainPosYDelta;
/* 0x168 */ f32 mStickMainValueDelta;
/* 0x16C */ f32 mStickCPosXLast;
/* 0x170 */ f32 mStickCPosYLast;
/* 0x174 */ f32 mStickCValueLast;
/* 0x178 */ f32 mStickCPosXDelta;
/* 0x17C */ f32 mStickCPosYDelta;
/* 0x180 */ f32 mStickCValueDelta;
/* 0x184 */ u8 m184[0x190 - 0x184];
/* 0x190 */ f32 mTriggerLeftLast;
/* 0x194 */ f32 mTriggerLeftDelta;
/* 0x198 */ u8 m198;
/* 0x199 */ u8 m199;
/* 0x19A */ u8 m19A;
/* 0x19B */ u8 m19B;
/* 0x19C */ f32 mTriggerRightLast;
/* 0x1A0 */ f32 mTriggerRightDelta;
/* 0x1A4 */ u8 m1A4;
/* 0x1A5 */ u8 m1A5;
/* 0x1A6 */ u8 m1A6;
/* 0x1A7 */ u8 m1A7;
/* 0x1A8 */ u8 m1A8;
/* 0x1A9 */ u8 m1A9;
/* 0x1AA */ u8 m1AA;
/* 0x1AB */ u8 m1AB;
/* 0x1AC */ u8 m1AC;
/* 0x1AD */ u8 m1AD;
/* 0x1AE */ u8 m1AE;
/* 0x1AF */ u8 m1AF[0x1B0 - 0x1AF];
/* 0x1B0 */ dCamForcusLine mForcusLine;
/* 0x220 */ u8 m220[0x228 - 0x220];
/* 0x228 */ cXyz mMonitorPos;
/* 0x234 */ f32 m234;
/* 0x238 */ f32 m238;
/* 0x23C */ f32 m23C;
/* 0x240 */ int m240;
/* 0x244 */ f32 m244;
/* 0x248 */ u8 m248[0x254 - 0x248];
/* 0x254 */ int m254;
/* 0x258 */ u8 m258[0x25C - 0x258];
/* 0x25C */ BG mBG;
/* 0x30C */ u8 m30C[0x31D - 0x30C];
/* 0x31D */ u8 m31D;
/* 0x31E */ u8 m31E[0x350 - 0x31E];
/* 0x350 */ int m350;
/* 0x354 */ u8 m354[0x358 - 0x354];
/* 0x358 */ int mRoomNo;
/* 0x35C */ int mRoomMapToolCameraIdx;
/* 0x360 */ u8 m360[0x394 - 0x360];
/* 0x394 */ f32 mEvFovy;
/* 0x398 */ f32 mEvBank;
/* 0x39C */ fopAc_ac_c* mpEvRelActor;
/* 0x3A0 */ char mEvRelUseMask[4];
/* 0x3A4 */ int mEvTimer;
/* 0x3A8 */ u8 m3A8;
/* 0x3A9 */ u8 m3A9[0x3AC - 0x3A9];
/* 0x3AC */ cXyz mEvBasePos;
/* 0x3B8 */ u8 m3B8[0x3FC - 0x3B8];
/* 0x3FC */ int mStaffIdx;
/* 0x400 */ int m400;
/* 0x404 */ int m404;
/* 0x408 */ u8 m408;
/* 0x409 */ u8 m409[0x40C - 0x409];
/* 0x40C */ int m40C;
/* 0x410 */ int m410;
/* 0x414 */ u8 m414[0x424 - 0x414];
/* 0x424 */ dCamera__EventParam mEventParams[8];
/* 0x4C4 */ dStage_Event_dt_c* m4C4;
/* 0x4C8 */ d2DBSplinePath mSpline2DPath;
/* 0x50C */ u32 mEventFlags;
/* 0x510 */ int mCurStyle;
/* 0x514 */ int m514;
/* 0x518 */ int mCurType;
/* 0x51C */ int mNextType;
/* 0x520 */ int mMapToolType;
/* 0x524 */ int m524;
/* 0x528 */ int m528;
/* 0x52C */ u8 m52C[0x530 - 0x52C];
/* 0x530 */ int m530;
/* 0x534 */ s16 m534;
/* 0x536 */ s16 m536;
/* 0x538 */ u8 m538[0x550 - 0x538];
/* 0x550 */ int m550;
/* 0x554 */ int m554;
/* 0x558 */ u8 m558[0x568 - 0x558];
/* 0x568 */ cXyz mCenterShake;
/* 0x574 */ cXyz mEyeShake;
/* 0x580 */ f32 mFovYShake;
/* 0x584 */ u8 m584[0x590 - 0x584];
/* 0x590 */ int mBlureTimer;
/* 0x594 */ u8 m594[0x59C - 0x594];
/* 0x59C */ int mBlurePositionType;
/* 0x5A0 */ cXyz mBlurePosition;
/* 0x5AC */ cXyz mBlureScale;
/* 0x5B8 */ f32 mBlureAlpha;
/* 0x5BC */ u8 m5BC[0x5C0 - 0x5BC];
/* 0x5C0 */ stage_camera__entry mCurRoomCamEntry;
/* 0x5D4 */ stage_arrow__entry mCurRoomArrowEntry;
/* 0x5E8 */ int mCurArrowIdx;
/* 0x5EC */ f32 m5EC;
/* 0x5F0 */ f32 m5F0;
/* 0x5F4 */ u8 m5F4[0x5F8 - 0x5F4];
/* 0x5F8 */ f32 m5F8;
/* 0x5FC */ int m5FC;
/* 0x600 */ u8 m600[0x604 - 0x600];
/* 0x604 */ f32 m604;
/* 0x608 */ u8 m608[0x60C - 0x608];
/* 0x60C */ dCamSetup_c mCamSetup;
/* 0x750 */ dCamParam_c mCamParam;
/* 0x75C */ int mCamTypeField;
/* 0x760 */ int mCamTypeEvent;
/* 0x764 */ int mCamTypeWater;
/* 0x768 */ int mCamTypeSubject;
/* 0x76C */ int mCamTypeBoat;
/* 0x770 */ int mCamTypeBoatBattle;
/* 0x774 */ int m774;
/* 0x778 */ int mCamTypeKeep;
/* 0x77C */ int mCamTypeRestrict;
/* 0x780 */ u8 field_780[0x800 - 0x780];
public:
void ForceLockOff(unsigned int pcId);
};
STATIC_ASSERT(sizeof(dCamera_c) == 0x800);
typedef struct leafdraw_method_class leafdraw_method_class;
class camera_process_class : public view_class {
public:
/* 0x210 */ create_tag_class mDwTg;
+16 -16
View File
@@ -53,15 +53,15 @@ u8 daAgb_c::mShop;
/* 800CF5EC-800CF6B8 .text __ct__11daAgb_HIO_cFv */
daAgb_HIO_c::daAgb_HIO_c() {
field_0x04[0].r = 0;
field_0x04[0].g = 255;
field_0x04[0].b = 0;
field_0x04[0].a = 255;
field_0x04[0].mColor.r = 0;
field_0x04[0].mColor.g = 255;
field_0x04[0].mColor.b = 0;
field_0x04[0].mColor.a = 255;
field_0x04[1].r = 0;
field_0x04[1].g = 30;
field_0x04[1].b = 0;
field_0x04[1].a = 0;
field_0x04[1].mColor.r = 0;
field_0x04[1].mColor.g = 30;
field_0x04[1].mColor.b = 0;
field_0x04[1].mColor.a = 0;
field_0x14 = 24.0f;
field_0x18 = 50.0f;
@@ -678,7 +678,7 @@ void daAgb_c::GbaItemUse() {
}
if ((var_r28 == 0xC || var_r28 == 0xD) &&
(daPy_getPlayerLinkActorClass()->field_0x2a0 & 1))
(daPy_getPlayerLinkActorClass()->checkEquipDragonShield()))
{
var_r28 = 0xA;
}
@@ -760,14 +760,14 @@ void daAgb_c::GbaItemUse() {
return;
case 3:
daPy_lk_c* temp_r3 = daPy_getPlayerLinkActorClass();
temp_r3->field_0x29c |= 0x1000;
temp_r3->onNoResetFlg0(daPy_py_c::daPyFlg0_UNK1000);
temp_r3->field_0x354c = 0x96;
resetCursor(false);
field_0x65c = 0x96;
mBrk.setPlaySpeed(6.0f);
break;
case 0x12:
if (daPy_getPlayerLinkActorClass()->field_0x2a0 & 1) {
if (daPy_getPlayerLinkActorClass()->checkEquipDragonShield()) {
mEffect = 0;
return;
} else {
@@ -776,7 +776,7 @@ void daAgb_c::GbaItemUse() {
}
break;
case 4:
if (daPy_getPlayerLinkActorClass()->field_0x2a0 & 1) {
if (daPy_getPlayerLinkActorClass()->checkEquipDragonShield()) {
mEffect = 0;
return;
} else {
@@ -792,9 +792,9 @@ void daAgb_c::GbaItemUse() {
return;
} else {
daPy_lk_c* temp_r4 = daPy_getPlayerLinkActorClass();
temp_r4->field_0x29c |= 0x1000;
temp_r4->onNoResetFlg0(daPy_py_c::daPyFlg0_UNK1000);
temp_r4->field_0x354c = 300;
if (!(daPy_getPlayerLinkActorClass()->field_0x2a0 & 1)) {
if (!(daPy_getPlayerLinkActorClass()->checkEquipDragonShield())) {
temp_r4->field_0x354e = 300;
}
@@ -808,7 +808,7 @@ void daAgb_c::GbaItemUse() {
mEffect = BigLittleChange((field_0x660 << 0x10) | 0x300);
return;
} else {
if ((daPy_getPlayerLinkActorClass()->field_0x2a0 & 1)) {
if ((daPy_getPlayerLinkActorClass()->checkEquipDragonShield())) {
mEffect = 0;
return;
}
@@ -953,7 +953,7 @@ int daAgb_Execute(daAgb_c* i_this) {
if (i_this->field_0x65c != 0) {
if (i_this->field_0x66b == 3 || i_this->field_0x66b == 12) {
daPy_lk_c* player_p = daPy_getPlayerLinkActorClass();
player_p->field_0x29c |= 0x1000;
player_p->onNoResetFlg0(daPy_py_c::daPyFlg0_UNK1000);
player_p->field_0x354c = 10;
} else if (i_this->field_0x66b == 4 || i_this->field_0x66b == 13 ||
i_this->field_0x66b == 12)
+71 -76
View File
@@ -17,138 +17,133 @@
class kytag05_class : public fopAc_ac_c {
public:
/* 0x00 */ u8 mIndex;
/* 0x04 */ int field_0x294;
/* 0x08 */ int field_0x298;
/* 0x290 */ u8 mIndex;
/* 0x294 */ int mTimer;
/* 0x298 */ int mUnknownParam;
}; /* size = 0x29C */
BOOL daKytag05_Draw(kytag05_class*) {
return true;
static BOOL daKytag05_Draw(kytag05_class*) {
return TRUE;
}
static const s16 wind_table[] = {
0,
90,
180,
270
};
static const s16 mufuu_timer[] = {
0x0A,
0xA,
0x00,
0x5A
};
static const s16 fuu_timer[] = {
0x0096,
0x0096,
0x0096,
0x0096,
};
/* 00000080-000003F4 .text daKytag05_Execute__FP13kytag05_class */
int daKytag05_Execute(kytag05_class* a_this) {
/* Nonmatching - 92% matching */
daPy_py_c *playerActor;
camera_class *mpCamera;
f32 cameraEyeZ;
f32 i_blend;
f32 windPow;
u32 demoField;
mpCamera = dComIfGp_getCamera(0);
playerActor = daPy_getPlayerActorClass();
windPow = dKyw_get_wind_pow();
i_blend = 1.0f;
static BOOL daKytag05_Execute(kytag05_class* a_this) {
static const s16 wind_table[] = {
0x0000,
0x8001,
0xC000,
0x4000,
};
static const s16 mufuu_timer[] = {
10,
10,
0,
90
};
static const s16 fuu_timer[] = {
150,
150,
150,
150,
};
camera_process_class *camera = dComIfGp_getCamera(0);
fopAc_ac_c *player = dComIfGp_getPlayer(0);
f32 windPow = dKyw_get_wind_pow();
f32 i_blend = 1.0f;
if (g_env_light.mWind.mEvtWindSet == 0xFF) {
return 1;
return TRUE;
}
if (g_dComIfG_gameInfo.play.mEvtCtrl.mMode != 0 &&
dComIfGp_getEventManager().startCheckOld("demo41") != 0 &&
g_dComIfG_gameInfo.play.getDemo() != NULL) {
demoField = g_dComIfG_gameInfo.play.getDemo()->field_0xd4;
if(demoField >= 0x186) {
f32 fVar7 = ((f32)demoField - 390.0f) / 100.0f;
if (dComIfGp_event_runCheck() && dComIfGp_evmng_startCheck("demo41") &&
g_dComIfG_gameInfo.play.getDemo()) {
u32 demoFrame = dComIfGp_demo_get()->getFrame();
if(demoFrame >= 0x186) {
f32 fVar7 = ((f32)demoFrame - 390.0f) / 100.0f;
if(fVar7 > i_blend) {
fVar7 = i_blend;
}
i_blend = 1.0f - fVar7;
g_env_light.mSnowCount = (int)(200.0f * i_blend);
} else if (demoField == 0x187 && daYkgr_c::m_emitter != 0) {
daYkgr_c::m_alpha_flag = 0;
} else if (demoFrame == 0x187) {
daYkgr_c::stop();
}
}
dKy_custom_colset(0, 7, i_blend);
if((a_this->mIndex & 1) == 0) {
if (a_this->field_0x294 >= fuu_timer[a_this->mIndex >> 1]) {
a_this->field_0x294 = 0;
if (a_this->mTimer >= fuu_timer[a_this->mIndex >> 1]) {
a_this->mTimer = 0;
a_this->mIndex += 1;
g_env_light.mWind.mEvtWindSet = 2;
} else {
a_this->field_0x294 += 1;
a_this->mTimer += 1;
}
} else {
if (a_this->field_0x294 >= mufuu_timer[(a_this->mIndex) >> 1]) {
if (a_this->mTimer >= mufuu_timer[a_this->mIndex >> 1]) {
a_this->mIndex += 1;
if(a_this->mIndex >> 1 >= 4) {
a_this->mIndex = 0;
}
dKyw_evt_wind_set(0, wind_table[a_this->mIndex >> 1]);
a_this->field_0x294 = 0;
a_this->mTimer = 0;
g_env_light.mWind.mEvtWindSet = 1;
} else {
a_this->field_0x294 += 1;
a_this->mTimer += 1;
}
}
/* Numbers in this sections aren't necessarily right */
cameraEyeZ = mpCamera->mLookat.mEye.z;
if(cameraEyeZ > 360.0f|| playerActor->current.pos.z > 360.0f &&
mpCamera->mLookat.mEye.x > 450 || playerActor->current.pos.x > 450.0f){
if(cameraEyeZ > 540.0f || playerActor->current.pos.z < 540.0f) {
if((camera->mLookat.mEye.z > 1445.0f || player->current.pos.z > 1445.0f) &&
(camera->mLookat.mEye.x > 520.0f || player->current.pos.x > 520.0f)){
if(camera->mLookat.mEye.z > 2100.0f || player->current.pos.z > 2100.0f) {
dKyw_evt_wind_set(0, 0x61A8);
} else if(cameraEyeZ > 630.0f || playerActor->current.pos.z > 630.0f) {
} else if(camera->mLookat.mEye.z > 1970.0f || player->current.pos.z > 1970.0f) {
dKyw_evt_wind_set(0, 0x4E20);
} else {
dKyw_evt_wind_set(0,0x4650);
dKyw_evt_wind_set(0, 0x4650);
}
} else if(mpCamera->mLookat.mEye.z < 720 || playerActor->current.pos.x < 720) {
} else if(camera->mLookat.mEye.z < -4085.0f || player->current.pos.z < -4085.0f) {
dKyw_evt_wind_set(0, -0x3E80);
} else if(mpCamera->mLookat.mEye.z < 810 || playerActor->current.pos.x < 810 ) {
} else if(camera->mLookat.mEye.z < -3108.0f || player->current.pos.z < -3108.0f) {
dKyw_evt_wind_set(0, -0x4B00);
} else if(mpCamera->mLookat.mEye.z < 900 || playerActor->current.pos.x < 900) {
} else if(camera->mLookat.mEye.z < -1412.0f || player->current.pos.z < -1412.0f) {
dKyw_evt_wind_set(0, -0x32C8);
}
mDoAud_seStart(0x106A, 0, (u32)(windPow * 180), 0);
return 1;
mDoAud_seStart(0x106A, 0, windPow * 100.0f, 0);
return TRUE;
}
BOOL daKytag05_IsDelete(kytag05_class*) {
return true;
static BOOL daKytag05_IsDelete(kytag05_class*) {
return TRUE;
}
BOOL daKytag05_Delete(kytag05_class*) {
return true;
static BOOL daKytag05_Delete(kytag05_class*) {
return TRUE;
}
int daKytag05_Create(fopAc_ac_c* i_this) {
static int daKytag05_Create(fopAc_ac_c* i_this) {
fopAcM_SetupActor(i_this, kytag05_class);
kytag05_class *a_this = (kytag05_class*)i_this;
if (dComIfGs_isSymbol(1) != 0) {
return 3;
}
a_this->mIndex = 0;
a_this->field_0x294 = 0;
a_this->field_0x298 = i_this->mBase.mParameters & 0xff;
a_this->mTimer = 0;
a_this->mUnknownParam = i_this->mBase.mParameters & 0xff;
dKyw_evt_wind_set_go();
dKyw_evt_wind_set(0,0);
dKyw_evt_wind_set(0, 0);
g_env_light.mSnowCount = 200;
#if VERSION != VERSION_USA
g_env_light.mMoyaMode = 3;
#else
g_env_light.mMoyaMode = 0;
#endif
g_env_light.mMoyaCount = 100;
return 4;
return cPhs_COMPLEATE_e;
}
static actor_method_class l_daKytag05_Method = {
@@ -159,7 +154,7 @@ static actor_method_class l_daKytag05_Method = {
(process_method_func)daKytag05_Draw,
};
extern actor_process_profile_definition g_profile_KYTAG06 = {
extern actor_process_profile_definition g_profile_KYTAG05 = {
fpcLy_CURRENT_e,
7,
fpcLy_CURRENT_e,
+2 -2
View File
@@ -209,7 +209,7 @@ void daNh_c::setBaseMtx() {
/* 800F9980-800F9A54 .text createHeap__6daNh_cFv */
BOOL daNh_c::createHeap() {
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Always", 0x34); // nh.bdl
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Always", ALWAYS_BDL_NH);
JUT_ASSERT(359, modelData != 0);
mpModel = mDoExt_J3DModel__create(modelData, 0, 0x11020203);
@@ -533,7 +533,7 @@ BOOL daNh_c::initBrkAnm(bool i_modify) {
J3DModelData* modelData = mpModel->getModelData();
bool success = false;
J3DAnmTevRegKey* a_brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes("Always", 0x4E); // tnh.brk
J3DAnmTevRegKey* a_brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes("Always", ALWAYS_BRK_TNH);
JUT_ASSERT(883, a_brk != 0);
if (mBrkAnm.init(modelData, a_brk, true, 2, 1.0f, 0, -1, i_modify, false)) {
+1 -1
View File
@@ -321,7 +321,7 @@ void daObjTpost_c::cutDispLetterStart(int staffIdx) {
void daObjTpost_c::cutDispLetterProc(int staffIdx) {
u16 mode = talk(0);
if(mode == 5) {
daPy_getPlayerActorClass()->field_0x2a0 |= 0x4000; // may be a onLetterReadEyeMove__9daPy_py_cFv inline based on debug map
daPy_getPlayerActorClass()->onLetterReadEyeMove();
}
if(mode == dNpcMsgStts_BOX_CLOSED_e) {
dComIfGp_evmng_cutEnd(staffIdx);
+73 -25
View File
@@ -5,54 +5,102 @@
#include "dolphin/types.h"
#include "d/actor/d_a_player.h"
#include "f_op/f_op_camera_mng.h"
/* 801028FC-80102940 .text changePlayer__9daPy_py_cFP10fopAc_ac_c */
void daPy_py_c::changePlayer(fopAc_ac_c*) {
/* Nonmatching */
void daPy_py_c::changePlayer(fopAc_ac_c* newPlayer) {
if (!newPlayer) {
return;
}
if (dComIfGp_roomControl_getStayNo() != newPlayer->getRoomNo()) {
return;
}
dComIfGp_setPlayer(0, newPlayer);
dComIfGp_getCamera(0)->mCamera.mpPlayerActor = newPlayer;
dComIfGp_getAttention().mFlags |= 0x80;
}
/* 80102940-80102B84 .text objWindHitCheck__9daPy_py_cFP8dCcD_Cyl */
void daPy_py_c::objWindHitCheck(dCcD_Cyl*) {
/* Nonmatching */
void daPy_py_c::objWindHitCheck(dCcD_Cyl* cyl) {
cXyz targetSpeed(0.0f, 0.0f, 0.0f);
f32 maxStep = 3.0f;
if (cyl->ChkTgHit()) {
cCcD_Obj* hitObj = cyl->GetTgHitObj();
if (hitObj && hitObj->GetAtType() & AT_TYPE_LEAF_WIND) {
targetSpeed = *cyl->GetTgRVecP();
f32 distXZ = cyl->GetTgRVecP()->absXZ();
maxStep = 1.0f;
if (distXZ < 1.0f) {
targetSpeed = (current.pos - *cyl->GetTgHitPosP()) * 30.0f;
distXZ = targetSpeed.absXZ();
}
if (distXZ > 30.0f) {
targetSpeed *= 30.0f / distXZ;
}
}
}
cLib_addCalc(&field_0x2f8.x, targetSpeed.x, 0.5f, maxStep, 0.5f);
cLib_addCalc(&field_0x2f8.z, targetSpeed.z, 0.5f, maxStep, 0.5f);
current.pos.x += field_0x2f8.x;
current.pos.z += field_0x2f8.z;
}
/* 80102B84-80102BB4 .text execute__25daPy_mtxFollowEcallBack_cFP14JPABaseEmitter */
void daPy_mtxFollowEcallBack_c::execute(JPABaseEmitter*) {
/* Nonmatching */
void daPy_mtxFollowEcallBack_c::execute(JPABaseEmitter* emitter) {
emitter->setGlobalRTMatrix(mpMtx);
}
/* 80102BB4-80102BF8 .text end__25daPy_mtxFollowEcallBack_cFv */
void daPy_mtxFollowEcallBack_c::end() {
/* Nonmatching */
if (!mpEmitter) {
return;
}
mpEmitter->becomeInvalidEmitter();
mpEmitter->quitImmortalEmitter();
mpEmitter->setEmitterCallBackPtr(NULL);
mpEmitter = NULL;
}
/* 80102BF8-80102C84 .text makeEmitter__25daPy_mtxFollowEcallBack_cFUsPA4_fPC4cXyzPC4cXyz */
void daPy_mtxFollowEcallBack_c::makeEmitter(unsigned short, float(*)[4], const cXyz*, const cXyz*) {
/* Nonmatching */
void daPy_mtxFollowEcallBack_c::makeEmitter(u16 particleID, MtxP mtx, const cXyz* pos, const cXyz* scale) {
end();
mpMtx = mtx;
dComIfGp_particle_setP1(particleID, pos, NULL, scale, 0xFF, this, -1, NULL, NULL, NULL);
}
/* 80102C84-80102D14 .text makeEmitterColor__25daPy_mtxFollowEcallBack_cFUsPA4_fPC4cXyzPC8_GXColorPC8_GXColor */
void daPy_mtxFollowEcallBack_c::makeEmitterColor(unsigned short, float(*)[4], const cXyz*, const _GXColor*, const _GXColor*) {
/* Nonmatching */
void daPy_mtxFollowEcallBack_c::makeEmitterColor(u16 particleID, MtxP mtx, const cXyz* pos, const _GXColor* prmColor, const _GXColor* envColor) {
end();
mpMtx = mtx;
dComIfGp_particle_setP1(particleID, pos, NULL, NULL, 0xFF, this, -1, prmColor, envColor, NULL);
}
/* 80102D14-80102D90 .text setDoButtonQuake__9daPy_py_cFv */
void daPy_py_c::setDoButtonQuake() {
/* Nonmatching */
if (checkNoResetFlg0(daPyFlg0_UNK200000)) {
return;
}
onNoResetFlg0(daPyFlg0_UNK200000);
mQuakeTimer = 60;
// u8 temp[4] = {0x00, 0x10, 0xFF, 0xEE}; // Doesn't match
u32 temp2 = 0x0010FFEE;
u8* temp = (u8*)&temp2;
dComIfGp_getVibration().StartQuake(temp, 0, 1, cXyz(0.0f, 1.0f, 0.0f));
}
/* 80102D90-80102E18 .text stopDoButtonQuake__9daPy_py_cFi */
void daPy_py_c::stopDoButtonQuake(int) {
/* Nonmatching */
void daPy_py_c::stopDoButtonQuake(int param_1) {
if (mQuakeTimer > 0) {
mQuakeTimer--;
if (mQuakeTimer == 0) {
dComIfGp_getVibration().StopQuake(-1);
}
}
if (param_1 && mQuakeTimer == 0) {
mNoResetFlg0 &= ~0x00200000;
}
}
/* 80102E18-80102E84 .text __dt__25daPy_mtxFollowEcallBack_cFv */
daPy_mtxFollowEcallBack_c::~daPy_mtxFollowEcallBack_c() {
/* Nonmatching */
}
/* 80102E84-80102E8C .text setup__25daPy_mtxFollowEcallBack_cFP14JPABaseEmitterPC4cXyzPC5csXyzSc */
void daPy_mtxFollowEcallBack_c::setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char) {
/* Nonmatching */
}
+11 -11
View File
@@ -42,10 +42,10 @@ void dComIfG_play_c::ct() {
mpTreePacket = NULL;
mpWoodPacket = NULL;
mpFlowerPacket = NULL;
field_0x4A64[0] = 0xFF;
field_0x4A64[1] = 0xFF;
mLastSeaRoom = 0xFF;
field_0x4A67[0] = 0xFF;
mShipId = 0xFF;
mShipRoomId = 0xFF;
mIkadaShipBeforeRoomId = 0xFF;
mIkadaShipId = 0xFF;
mIkadaLinkPos.set(0.0f, 0.0f, 0.0f);
mLkDArcIdx = -1;
@@ -566,8 +566,8 @@ dStage_Ship_data* dComIfGp_getShip(int i_roomNo, int param_1) {
return NULL;
}
dStage_Ship_c* ship_p = roomSt_p->mRoomDt.getShip();
if (ship_p == NULL || ship_p->m_num <= 0 || param_1 == 0xFF) {
dStage_Ship_c* ship_p = roomSt_p->getShip();
if (ship_p == NULL || ship_p->num <= 0 || param_1 == 0xFF) {
return NULL;
}
@@ -576,7 +576,7 @@ dStage_Ship_data* dComIfGp_getShip(int i_roomNo, int param_1) {
return NULL;
}
for (int i = 0; i < ship_p->m_num; i++) {
for (int i = 0; i < ship_p->num; i++) {
if (param_1 == data_p->field_0xe) {
return data_p;
}
@@ -595,7 +595,7 @@ bool dComIfGp_getMapTrans(int i_roomNo, f32* o_transX, f32* o_transY, s16* o_ang
}
dStage_Mult_info* data_p = multi_p->m_entries;
for (int i = 0; i < multi_p->m_num; i++) {
for (int i = 0; i < multi_p->num; i++) {
if (i_roomNo == data_p->mRoomNo) {
*o_transX = data_p->mTransX;
*o_transY = data_p->mTransY;
@@ -636,15 +636,15 @@ void dComIfGp_setNextStage(const char* i_stageName, s16 i_point, s8 i_roomNo, s8
g_dComIfG_gameInfo.play.setNextStage(i_stageName, i_roomNo, i_point, i_layer, i_wipe);
if (daPy_getPlayerLinkActorClass() != NULL) {
u32 mode = daPy_getPlayerLinkActorClass()->field_0x2a0;
u32 mode = daPy_getPlayerLinkActorClass()->mNoResetFlg1;
if (mode & 1) {
if (mode & daPy_lk_c::daPy_FLG1_EQUIP_DRAGON_SHIELD) {
i_lastMode |= 0x8000;
}
i_lastMode |= daPy_getPlayerLinkActorClass()->field_0x354e << 0x10;
if (mode & 0x8000) {
if (mode & daPy_lk_c::daPy_FLG1_UNK8000) {
i_lastMode |= 0x4000;
}
}
+5 -5
View File
@@ -182,8 +182,8 @@ void dKyr_sun_move() {
/* 8008CF68-8008D0B4 .text dKyr_rain_init__Fv */
void dKyr_rain_init() {
camera_class * pCamera = dComIfGp_getCamera(0);
g_env_light.mpRainPacket->mpTxSnow01 = (u8*)dComIfG_getObjectRes("Always", 0x81);
g_env_light.mpRainPacket->mpTxRingAHalf = (u8*)dComIfG_getObjectRes("Always", 0x85);
g_env_light.mpRainPacket->mpTxSnow01 = (u8*)dComIfG_getObjectRes("Always", ALWAYS_I8_TX_SNOW01);
g_env_light.mpRainPacket->mpTxRingAHalf = (u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_TXA_RING_A_32HAFE);
g_env_light.mpRainPacket->mCamEyePos = pCamera->mLookat.mEye;
g_env_light.mpRainPacket->mCamCenterPos = pCamera->mLookat.mCenter;
g_env_light.mpRainPacket->mCenterDeltaMul = 0.0f;
@@ -232,7 +232,7 @@ void dKyr_snow_init() {
g_env_light.mpSnowPacket = new(0x20) dKankyo_snow_Packet();
if (g_env_light.mpSnowPacket != NULL) {
if (strcmp(dComIfGp_getStartStageName(), "Adanmae") != 0) {
g_env_light.mpSnowPacket->mpTexture = (u8*)dComIfG_getObjectRes("Always", 0x81);
g_env_light.mpSnowPacket->mpTexture = (u8*)dComIfG_getObjectRes("Always", ALWAYS_I8_TX_SNOW01);
} else {
g_env_light.mpSnowPacket->mpTexture = (u8*)dComIfG_getStageRes("Stage", "ak_kazanbai00.bti");
}
@@ -262,7 +262,7 @@ void dKyr_kazanbai_tamari_move() {
void dKyr_star_init() {
g_env_light.mpStarPacket = new(0x20) dKankyo_star_Packet();
if (g_env_light.mpStarPacket != NULL) {
g_env_light.mpStarPacket->field_0x10 = (u8*)dComIfG_getObjectRes("Always", 0x81);
g_env_light.mpStarPacket->mpTexture = (u8*)dComIfG_getObjectRes("Always", ALWAYS_I8_TX_SNOW01);
g_env_light.mpStarPacket->mStarEff[0].mSin = 1.0f;
g_env_light.mpStarPacket->mCount = 0;
}
@@ -313,7 +313,7 @@ void poison_init() {
g_env_light.mpPoisonPacket->field_0xbb9c.z = 0.0f;
g_env_light.mpPoisonPacket->mCount = 0;
if (g_env_light.mpPoisonPacket != NULL) {
g_env_light.mpPoisonPacket->mpTex = (u8*)dComIfG_getObjectRes("Always", 0x6e);
g_env_light.mpPoisonPacket->mpTexture = (u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_AK_SMOKE01);
for (u32 i = 0; i < ARRAY_SIZE(g_env_light.mpPoisonPacket->mEff); i++)
g_env_light.mpPoisonPacket->mEff[i].mStatus = 0;
poison_move();
+12 -12
View File
@@ -477,15 +477,15 @@ void wether_move_sun() {
if (g_env_light.mpSunPacket != NULL && g_env_light.mpSunlenzPacket != NULL) {
g_env_light.mpSunPacket->mpTextureData[0] =
(u8*)dComIfG_getObjectRes("Always", 0x87);
(u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_TXA_TUKI_AS);
g_env_light.mpSunPacket->mpTextureData[1] =
(u8*)dComIfG_getObjectRes("Always", 0x88);
(u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_TXA_TUKI_BS);
g_env_light.mpSunPacket->mpTextureData[2] =
(u8*)dComIfG_getObjectRes("Always", 0x89);
(u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_TXA_TUKI_CS);
g_env_light.mpSunPacket->mpTextureData[3] =
(u8*)dComIfG_getObjectRes("Always", 0x8A);
(u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_TXA_TUKI_DS);
g_env_light.mpSunPacket->mpTextureData[4] =
(u8*)dComIfG_getObjectRes("Always", 0x86);
(u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_TXA_TAIYO);
g_env_light.mpSunPacket->field_0x3c = 0;
g_env_light.mpSunPacket->field_0x3d = 0;
g_env_light.mpSunPacket->mVisibility = 0.0f;
@@ -497,11 +497,11 @@ void wether_move_sun() {
g_env_light.mpSunPacket->mVizChkData[3] = 0;
g_env_light.mpSunlenzPacket->mpTexSnow01 =
(u8*)dComIfG_getObjectRes("Always", 0x81);
(u8*)dComIfG_getObjectRes("Always", ALWAYS_I8_TX_SNOW01);
g_env_light.mpSunlenzPacket->mpTexLensHalf =
(u8*)dComIfG_getObjectRes("Always", 0x82);
(u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_TXA_LENS_32HALF);
g_env_light.mpSunlenzPacket->mpTexRingHalf =
(u8*)dComIfG_getObjectRes("Always", 0x85);
(u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_TXA_RING_A_32HAFE);
g_env_light.mpSunlenzPacket->field_0x88 = 1000000000.0f;
g_env_light.mpSunlenzPacket->field_0x8c = 0.0f;
g_env_light.mpSunlenzPacket->mDistFalloff = 0.0f;
@@ -682,7 +682,7 @@ void wether_move_housi() {
return;
}
g_env_light.mpHousiPacket->mpTex = (u8*)dComIfG_getObjectRes("Always", 0x6D);
g_env_light.mpHousiPacket->mpTex = (u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_AK_HOUSHI00);
g_env_light.mpHousiPacket->field_0x5ddc = 0.0f;
for (int i = 0; i < 300; i++) {
@@ -715,7 +715,7 @@ void wether_move_moya() {
return;
}
g_env_light.mpMoyaPacket->mpTexture = (u8*)dComIfG_getObjectRes("Always", 0x84);
g_env_light.mpMoyaPacket->mpTexture = (u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_TXA_MOYA_B_64);
for (int i = 0; i < 100; i++) {
g_env_light.mpMoyaPacket->mEff[i].mStatus = 0;
@@ -844,8 +844,8 @@ void wether_move_wave() {
return;
}
g_env_light.mpWavePacket->mpTexUsonami = (u8*)dComIfG_getObjectRes("Always", 0x8B);
g_env_light.mpWavePacket->mpTexUsonamiM = (u8*)dComIfG_getObjectRes("Always", 0x8C);
g_env_light.mpWavePacket->mpTexUsonami = (u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_TXA_USONAMI_256_64MIP);
g_env_light.mpWavePacket->mpTexUsonamiM = (u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_TXA_USONAMI_M_256_64MIP);
for (int i = 0; i < 300; i++) {
g_env_light.mpWavePacket->mpWaveEff[i].mState = 0;
+5 -5
View File
@@ -504,8 +504,8 @@ int phase_1(dScnPly_ply_c* i_this) {
int rt = dComIfG_setStageRes("Stage", NULL);
JUT_ASSERT(3458, rt == 1);
dMat_control_c::create((J3DMaterialTable*)dComIfG_getObjectRes("Always", 0x41),
(J3DAnmTextureSRTKey*)dComIfG_getObjectRes("Always", 0x57));
dMat_control_c::create((J3DMaterialTable*)dComIfG_getObjectRes("Always", ALWAYS_BMT_ICE),
(J3DAnmTextureSRTKey*)dComIfG_getObjectRes("Always", ALWAYS_BTK_ICE));
return cPhs_NEXT_e;
}
@@ -585,7 +585,7 @@ extern scene_process_profile_definition g_profile_PLAY_SCENE = {
0,
0,
&g_fopScn_Method.mBase,
&l_dScnPly_Method.base.mBase,
&l_dScnPly_Method,
};
extern scene_process_profile_definition g_profile_OPENING_SCENE = {
@@ -598,7 +598,7 @@ extern scene_process_profile_definition g_profile_OPENING_SCENE = {
0,
0,
&g_fopScn_Method.mBase,
&l_dScnPly_Method.base.mBase,
&l_dScnPly_Method,
};
extern scene_process_profile_definition g_profile_OPENING2_SCENE = {
@@ -611,5 +611,5 @@ extern scene_process_profile_definition g_profile_OPENING2_SCENE = {
0,
0,
&g_fopScn_Method.mBase,
&l_dScnPly_Method.base.mBase,
&l_dScnPly_Method,
};
+3 -3
View File
@@ -42,7 +42,7 @@ void dScnTitle_Create(scene_class*) {
/* Nonmatching */
}
static leafdraw_method_class l_dScnTitle_Method = {
static scene_method_class l_dScnTitle_Method = {
(process_method_func)dScnTitle_Create,
(process_method_func)dScnTitle_Delete,
(process_method_func)dScnTitle_Execute,
@@ -60,7 +60,7 @@ extern scene_process_profile_definition g_profile_TITLE_SCENE = {
0,
0,
&g_fopScn_Method.mBase,
&l_dScnTitle_Method.mBase,
&l_dScnTitle_Method,
};
extern scene_process_profile_definition g_profile_ENDING_SCENE = {
@@ -73,5 +73,5 @@ extern scene_process_profile_definition g_profile_ENDING_SCENE = {
0,
0,
&g_fopScn_Method.mBase,
&l_dScnTitle_Method.mBase,
&l_dScnTitle_Method,
};