diff --git a/configure.py b/configure.py index f9a77447a..7ba94d1f3 100644 --- a/configure.py +++ b/configure.py @@ -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"), diff --git a/include/JSystem/JParticle/JPAEmitter.h b/include/JSystem/JParticle/JPAEmitter.h index 7e42fbc35..349593acd 100644 --- a/include/JSystem/JParticle/JPAEmitter.h +++ b/include/JSystem/JParticle/JPAEmitter.h @@ -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* callback) { + mpEmitterCallBack = callback; + } + void setParticleCallBackPtr(JPACallBackBase2* 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* mpEmitterCallBack; - /* 0x1A0 */ JPACallBackBase2* mpParticleCallBack; + /* 0x19C */ JPACallBackBase* mpEmitterCallBack; + /* 0x1A0 */ JPACallBackBase2* mpParticleCallBack; /* 0x1A4 */ JMath::TRandom_fast_ mRandomSeed; /* 0x1A8 */ Mtx mGlobalRotation; /* 0x1D8 */ JGeometry::TVec3 mGlobalScale; diff --git a/include/JSystem/JParticle/JPAParticle.h b/include/JSystem/JParticle/JPAParticle.h index 81565a9ff..3ab594179 100644 --- a/include/JSystem/JParticle/JPAParticle.h +++ b/include/JSystem/JParticle/JPAParticle.h @@ -63,7 +63,7 @@ public: /* 0xC2 */ s16 mRotateSpeed; /* 0xC4 */ u8 field_0xC4[0xC6 - 0xC4]; /* 0xC6 */ u16 mTexIdx; - /* 0xC8 */ JPACallBackBase2* mpCallBack2; + /* 0xC8 */ JPACallBackBase2* mpCallBack2; /* 0xCC */ u32 mFlags; }; diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index 71b36cda3..17930b785 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -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 */ diff --git a/include/d/actor/d_a_ykgr.h b/include/d/actor/d_a_ykgr.h index 2ed3f9479..a57cc635a 100644 --- a/include/d/actor/d_a_ykgr.h +++ b/include/d/actor/d_a_ykgr.h @@ -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: diff --git a/include/d/d_cam_param.h b/include/d/d_cam_param.h new file mode 100644 index 000000000..af8b6fa41 --- /dev/null +++ b/include/d/d_cam_param.h @@ -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 */ diff --git a/include/d/d_cc_d.h b/include/d/d_cc_d.h index ac0ef47c1..674bbe32b 100644 --- a/include/d/d_cc_d.h +++ b/include/d/d_cc_d.h @@ -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); } diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index c4d0cfdce..d0d343a59 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -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(); } diff --git a/include/d/d_demo.h b/include/d/d_demo.h index 3c326e1df..fa3f7066a 100644 --- a/include/d/d_demo.h +++ b/include/d/d_demo.h @@ -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; }; diff --git a/include/d/d_particle.h b/include/d/d_particle.h index c4a9aa20e..9d0d2df4c 100644 --- a/include/d/d_particle.h +++ b/include/d/d_particle.h @@ -222,7 +222,7 @@ public: virtual void setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8); }; -class dPa_windPcallBack : JPACallBackBase2 { +class dPa_windPcallBack : public JPACallBackBase2 { public: dPa_windPcallBack(); virtual ~dPa_windPcallBack() {} @@ -240,7 +240,7 @@ public: virtual void setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8); }; -class dPa_ripplePcallBack : JPACallBackBase2 { +class dPa_ripplePcallBack : public JPACallBackBase2 { public: dPa_ripplePcallBack(); virtual ~dPa_ripplePcallBack() {} diff --git a/include/f_op/f_op_camera.h b/include/f_op/f_op_camera.h index 73990e335..cbb4fe825 100644 --- a/include/f_op/f_op_camera.h +++ b/include/f_op/f_op_camera.h @@ -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; diff --git a/src/d/actor/d_a_agb.cpp b/src/d/actor/d_a_agb.cpp index f15566d00..8b6594686 100644 --- a/src/d/actor/d_a_agb.cpp +++ b/src/d/actor/d_a_agb.cpp @@ -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) diff --git a/src/d/actor/d_a_kytag05.cpp b/src/d/actor/d_a_kytag05.cpp index db68603c0..b4bdb72d2 100644 --- a/src/d/actor/d_a_kytag05.cpp +++ b/src/d/actor/d_a_kytag05.cpp @@ -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, diff --git a/src/d/actor/d_a_nh.cpp b/src/d/actor/d_a_nh.cpp index c8691a402..11fff8b6d 100644 --- a/src/d/actor/d_a_nh.cpp +++ b/src/d/actor/d_a_nh.cpp @@ -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)) { diff --git a/src/d/actor/d_a_obj_toripost.cpp b/src/d/actor/d_a_obj_toripost.cpp index df7c64d59..4e24787ff 100644 --- a/src/d/actor/d_a_obj_toripost.cpp +++ b/src/d/actor/d_a_obj_toripost.cpp @@ -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); diff --git a/src/d/actor/d_a_player.cpp b/src/d/actor/d_a_player.cpp index 20b930285..000055a4a 100644 --- a/src/d/actor/d_a_player.cpp +++ b/src/d/actor/d_a_player.cpp @@ -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 */ -} - diff --git a/src/d/d_com_inf_game.cpp b/src/d/d_com_inf_game.cpp index dea1270c2..94a396c98 100644 --- a/src/d/d_com_inf_game.cpp +++ b/src/d/d_com_inf_game.cpp @@ -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; } } diff --git a/src/d/d_kankyo_rain.cpp b/src/d/d_kankyo_rain.cpp index 7ebc4ac71..3b1d4caec 100644 --- a/src/d/d_kankyo_rain.cpp +++ b/src/d/d_kankyo_rain.cpp @@ -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(); diff --git a/src/d/d_kankyo_wether.cpp b/src/d/d_kankyo_wether.cpp index 9a6c86d22..63b365d03 100644 --- a/src/d/d_kankyo_wether.cpp +++ b/src/d/d_kankyo_wether.cpp @@ -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; diff --git a/src/d/d_s_play.cpp b/src/d/d_s_play.cpp index 82ae7d827..7b7cff940 100644 --- a/src/d/d_s_play.cpp +++ b/src/d/d_s_play.cpp @@ -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, }; diff --git a/src/d/d_s_title.cpp b/src/d/d_s_title.cpp index 9d4434168..59069c32f 100644 --- a/src/d/d_s_title.cpp +++ b/src/d/d_s_title.cpp @@ -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, };