From 2f4c6f89b3235ed1ead7228b581031c04e6e20d5 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Wed, 16 Apr 2025 13:22:09 -0400 Subject: [PATCH] Bunch of inline fixes --- include/JSystem/JParticle/JPADraw.h | 4 + include/JSystem/JParticle/JPAEmitter.h | 8 +- include/d/d_camera.h | 20 ++-- include/d/d_com_inf_game.h | 130 ++++++++++++++++--------- include/d/d_demo.h | 4 +- include/d/d_stage.h | 2 +- src/JSystem/JParticle/JPAEmitter.cpp | 2 +- src/d/d_camera.cpp | 27 +++-- src/d/d_com_inf_game.cpp | 14 +-- src/d/d_demo.cpp | 20 ++-- src/d/d_meter.cpp | 6 +- src/d/d_particle.cpp | 4 +- 12 files changed, 144 insertions(+), 97 deletions(-) diff --git a/include/JSystem/JParticle/JPADraw.h b/include/JSystem/JParticle/JPADraw.h index 3185fe2a2..58ff55513 100644 --- a/include/JSystem/JParticle/JPADraw.h +++ b/include/JSystem/JParticle/JPADraw.h @@ -67,7 +67,11 @@ public: void zDrawParticle(); void zDrawChild(); void loadYBBMtx(MtxP); + bool isZDraw() { return field_0xc2 & 1; } + bool isChildDraw() { return field_0xc2 & 2; } + MtxP getCamMtxPtr() { return cb.mDrawMtxPtr; } + void setKeyScl(f32 value) { mScaleOut = value; } static JPADrawVisitorContainer vc; static JPADrawClipBoard cb; diff --git a/include/JSystem/JParticle/JPAEmitter.h b/include/JSystem/JParticle/JPAEmitter.h index c241a5841..910445352 100644 --- a/include/JSystem/JParticle/JPAEmitter.h +++ b/include/JSystem/JParticle/JPAEmitter.h @@ -280,8 +280,6 @@ public: stopCreateParticle(); } - bool isZDraw() { return mDraw.isZDraw(); } - void setEmitterCallBackPtr(JPACallBackBase* callback) { mpEmitterCallBack = callback; } @@ -293,8 +291,12 @@ public: JSUList* getParticleList() { return &mActiveParticles; } JSUList* getChildParticleList() { return &mChildParticles; } JSULink* getLinkBufferPtr() { return &mLink; } + void initDrawMgr(JPATextureResource* texRes) { mDraw.initialize(this, texRes); } void draw(MtxP cameraMtxP) { mDraw.draw(cameraMtxP); } + bool isZDraw() { return mDraw.isZDraw(); } + bool isChildDraw() { return mDraw.isChildDraw(); } + MtxP getCamMtxPtr() { return mDraw.getCamMtxPtr(); } f32 getRandomF() { return mRandomSeed.get_ufloat_1(); } f32 getRandomRF() { f32 x = mRandomSeed.get_ufloat_1(); return x + x - 1.0f; } @@ -311,12 +313,10 @@ public: void getAxisYVec(JGeometry::TVec3&) const {} void getBaseEnvColor(GXColor&) {} void getBasePrmColor(GXColor&) {} - void getCamMtxPtr() {} void getCurrentCreateNumber() const {} void getFrame() {} void getGlobalParticleScale(JGeometry::TVec3&) const {} void getgReRDirection(JGeometry::TVec3&) {} - void isChildDraw() {} void isContinuousParticle() {} void loadTexture(u8, GXTexMapID) {} void setEmitterRotation(const JGeometry::TVec3&) {} diff --git a/include/d/d_camera.h b/include/d/d_camera.h index ec0c6701a..87e413b19 100644 --- a/include/d/d_camera.h +++ b/include/d/d_camera.h @@ -4,10 +4,11 @@ #include "SSystem/SComponent/c_angle.h" #include "SSystem/SComponent/c_sxyz.h" #include "SSystem/SComponent/c_xyz.h" +#include "d/d_drawlist.h" +#include "d/d_stage.h" #include "f_pc/f_pc_base.h" #include "d/d_cam_param.h" #include "d/d_bg_s_gnd_chk.h" -#include "d/d_com_inf_game.h" #include "d/d_spline_path.h" #include "global.h" @@ -128,8 +129,8 @@ public: }; // Size: 0xB8 /* 0x000 */ camera_class* mpCamera; - /* 0x004 */ u8 m004; - /* 0x005 */ u8 m005; + /* 0x004 */ u8 mActive; + /* 0x005 */ u8 mPause; /* 0x006 */ cSAngle m006; /* 0x008 */ cSGlobe mDirection; /* 0x010 */ cXyz mCenter; @@ -457,6 +458,7 @@ public: cSAngle Bank() {} cXyz Up() {} cXyz Center() { return mCenter + mCenterShake; } + cXyz Eye() { return mEye + mEyeShake; } void StartEventCamera(int, int, ...); void EndEventCamera(int); @@ -498,16 +500,16 @@ public: void bSplineEvCamera(); void twoActor0EvCamera(); - void Pause() { if (g_dComIfG_gameInfo.play.mDemo->getObject()->getActiveCamera()) ResetView(); } - void Active() { if (m004 && !m005) Run(); else NotRun(); } + bool chkFlag(u32 flag) { return (mEventFlags & flag) ? true : false; } + void setFlag(u32 flag) { mEventFlags |= flag; } + void clrFlag(u32 flag) { mEventFlags &= ~flag; } void CStickUse() { clrFlag(0x800000); } void CStickUseless() { setFlag(0x800000); } - cXyz Eye() { return mEye + mEyeShake; } void StickUse() { clrFlag(0x1000000); } void StickUseless() { setFlag(0x1000000); } - void setFlag(u32 flag) { mEventFlags |= flag; } - bool chkFlag(u32 flag) { return (mEventFlags & flag) ? true : false; } - void clrFlag(u32 flag) { mEventFlags &= ~flag; } + + bool Active() { return mActive; } + bool Pause() { return mPause; } static engine_fn engine_tbl[]; static const int type_num; diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index ac7719223..7d0ee06d4 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -365,7 +365,7 @@ public: mItemTimer = timer; mStartItemTimer = false; } - + int getMessageRupee() { return mMessageRupee; } void setMessageRupee(s16 count) { mMessageRupee = count; } @@ -498,21 +498,22 @@ public: mItemNo = i_itemNo; } - u8 getAStatus() { return mCurrButtonBAction; } - void setAStatus(u8 status) { mCurrButtonBAction = status; } - u8 getDoStatus() { return mCurrButtonAAction; } - void setDoStatus(u8 status) { mCurrButtonAAction = status; } - u8 getRStatus() { return field_0x492d; } - void setRStatus(u8 status) { field_0x492d = status; } - u8 getRStatusForce() { return field_0x4930; } - void setRStatusForce(u8 status) { field_0x4930 = status; } - u8 getAStatusForce() { return field_0x4931; } - void setAStatusForce(u8 value) { field_0x4931 = value; } - u8 getDoStatusForce() { return field_0x4932; } - void setDoStatusForce(u8 value) { field_0x4932 = value; } + u8 getRStatus() { return mRStatus; } + void setRStatus(u8 status) { mRStatus = status; } + u8 getAStatus() { return mAStatus; } + void setAStatus(u8 status) { mAStatus = status; } + u8 getDoStatus() { return mDoStatus; } + void setDoStatus(u8 status) { mDoStatus = status; } + u8 getRStatusForce() { return mRStatusForce; } + void setRStatusForce(u8 status) { mRStatusForce = status; } + u8 getAStatusForce() { return mAStatusForce; } + void setAStatusForce(u8 value) { mAStatusForce = value; } + u8 getDoStatusForce() { return mDoStatusForce; } + void setDoStatusForce(u8 value) { mDoStatusForce = value; } + u8 getPictureStatus() { return mPictureStatus; } void setPictureStatusOn() { mPictureStatus = 2; } - + u8 getScopeMesgStatus() { return mScopeMesgStatus; } void setScopeMesgStatus(u8 status) { mScopeMesgStatus = status; } @@ -648,6 +649,8 @@ public: u8 getDirection() { return mDirection; } void setDirection(u8 direction) { mDirection = direction; } + void onMenuCollect() { mMenuCollect = true; } + /* 0x0000 */ dBgS mBgS; /* 0x1404 */ dCcS mCcS; /* 0x3DF8 */ dADM mADM; @@ -747,12 +750,12 @@ public: /* 0x492A */ u8 mMesgStatus; /* 0x492B */ u8 mScopeMesgStatus; /* 0x492C */ u8 field_0x492c; - /* 0x492D */ u8 field_0x492d; - /* 0x492E */ u8 mCurrButtonBAction; - /* 0x492F */ u8 mCurrButtonAAction; - /* 0x4930 */ u8 field_0x4930; - /* 0x4931 */ u8 field_0x4931; - /* 0x4932 */ u8 field_0x4932; + /* 0x492D */ u8 mRStatus; + /* 0x492E */ u8 mAStatus; + /* 0x492F */ u8 mDoStatus; + /* 0x4930 */ u8 mRStatusForce; + /* 0x4931 */ u8 mAStatusForce; + /* 0x4932 */ u8 mDoStatusForce; /* 0x4933 */ u8 mSelectItem[4]; /* 0x4937 */ u8 mSelectEquip[4]; /* 0x493B */ u8 mMesgAnime; @@ -781,7 +784,7 @@ public: /* 0x4957 */ u8 mPlacenameIndex; /* 0x4958 */ u8 mPlacenameState; /* 0x4959 */ u8 mGameoverStatus; - /* 0x495A */ u8 field_0x495a; + /* 0x495A */ u8 mMenuCollect; /* 0x495B */ u8 mPictureFlag; /* 0x495C */ u8 mPictureResult; /* 0x495D */ u8 mPictureResultDetail; @@ -1939,11 +1942,13 @@ void dComIfGs_revPlayerRecollectionData(); * === PLAY === */ -inline void dComIfGp_onMenuCollect() { - g_dComIfG_gameInfo.play.field_0x495a = 1; -} +inline void dComIfGp_init() { + g_dComIfG_gameInfo.play.init(); +} -inline void dComIfGp_init() { g_dComIfG_gameInfo.play.init(); } +inline void dComIfGp_itemDataInit() { + g_dComIfG_gameInfo.play.itemInit(); +} void dComIfGp_setNextStage(const char* i_stageName, s16 i_point, s8 i_roomNo, s8 i_layer = -1, f32 i_lastSpeed = 0.0f, u32 i_lastMode = 0, BOOL i_setPoint = TRUE, @@ -2520,11 +2525,8 @@ inline void dComIfGp_clearPlayerStatus1(int param_0, u32 flag) { g_dComIfG_gameInfo.play.clearPlayerStatus(param_0, 1, flag); } -inline void dComIfGp_setDoStatusForce(u8 value) { - g_dComIfG_gameInfo.play.setDoStatusForce(value); -} -inline void dComIfGp_setAStatusForce(u8 value) { - g_dComIfG_gameInfo.play.setAStatusForce(value); +inline void dComIfGp_onMenuCollect() { + g_dComIfG_gameInfo.play.onMenuCollect(); } /** @@ -2590,38 +2592,66 @@ inline void dComIfGp_endMiniGame(u16 i_gameType) { g_dComIfG_gameInfo.play.endMiniGame(i_gameType); } -inline u8 dComIfGp_getAStatus() { - return g_dComIfG_gameInfo.play.getAStatus(); -} - -inline void dComIfGp_setAStatus(u8 status) { - g_dComIfG_gameInfo.play.setAStatus(status); -} - -inline u8 dComIfGp_getDoStatus() { - return g_dComIfG_gameInfo.play.getDoStatus(); -} - -inline void dComIfGp_setDoStatus(u8 status) { - g_dComIfG_gameInfo.play.setDoStatus(status); -} - +// R Button inline u8 dComIfGp_getRStatus() { return g_dComIfG_gameInfo.play.getRStatus(); } +// R Button inline void dComIfGp_setRStatus(u8 status) { g_dComIfG_gameInfo.play.setRStatus(status); } +// B Button +inline u8 dComIfGp_getAStatus() { + return g_dComIfG_gameInfo.play.getAStatus(); +} + +// B Button +inline void dComIfGp_setAStatus(u8 status) { + g_dComIfG_gameInfo.play.setAStatus(status); +} + +// A Button +inline u8 dComIfGp_getDoStatus() { + return g_dComIfG_gameInfo.play.getDoStatus(); +} + +// A Button +inline void dComIfGp_setDoStatus(u8 status) { + g_dComIfG_gameInfo.play.setDoStatus(status); +} + +// R Button inline u8 dComIfGp_getRStatusForce() { return g_dComIfG_gameInfo.play.getRStatusForce(); } +// R Button inline void dComIfGp_setRStatusForce(u8 status) { g_dComIfG_gameInfo.play.setRStatusForce(status); } +// B Button +inline void dComIfGp_getAStatusForce(u8 status) { + g_dComIfG_gameInfo.play.setAStatus(status); +} + +// B Button +inline void dComIfGp_setAStatusForce(u8 value) { + g_dComIfG_gameInfo.play.setAStatusForce(value); +} + +// A Button +inline u8 dComIfGp_getDoStatusForce() { + return g_dComIfG_gameInfo.play.getDoStatusForce(); +} + +// A Button +inline void dComIfGp_setDoStatusForce(u8 value) { + g_dComIfG_gameInfo.play.setDoStatusForce(value); +} + inline u8 dComIfGp_getPictureStatus() { return g_dComIfG_gameInfo.play.getPictureStatus(); } @@ -3205,6 +3235,10 @@ inline dDemo_actor_c* dComIfGp_demo_getActor(u8 id) { return g_dComIfG_gameInfo.play.getDemo()->getObject()->getActor(id); } +inline dDemo_camera_c* dComIfGp_demo_getCamera() { + return g_dComIfG_gameInfo.play.getDemo()->getObject()->getActiveCamera(); +} + stage_camera_class* dComIfGp_getRoomCamera(int i_roomNo); stage_arrow_class* dComIfGp_getRoomArrow(int i_roomNo); @@ -3622,11 +3656,11 @@ inline void dComIfGp_particle_setSimple(u16 particleID, cXyz* pos, u8 alpha = 0x pParticle->setSimple(particleID, pos, alpha, prmColor, envColor, param_6); } -inline JPABaseEmitter* dComIfGp_particle_setSimpleLand(int param_0, const cXyz* param_1, const csXyz* param_2, +inline JPABaseEmitter* dComIfGp_particle_setSimpleLand(int code, const cXyz* param_1, const csXyz* param_2, f32 param_3, f32 param_4, f32 param_5, dKy_tevstr_c* param_6, int* param_7, int param_8) { dPa_control_c* pParticle = g_dComIfG_gameInfo.play.getParticle(); - return pParticle->setSimpleLand(param_0, param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8); + return pParticle->setSimpleLand(code, param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8); } // TODO diff --git a/include/d/d_demo.h b/include/d/d_demo.h index 51b3939ba..78249f105 100644 --- a/include/d/d_demo.h +++ b/include/d/d_demo.h @@ -291,8 +291,8 @@ public: dDemo_fog_c* createFog(); void remove(); + dDemo_camera_c* getCamera() { return mpCamera; } void createEditorCamera() {} - void getCamera() {} void getEditorCamera() {} void removeEditorCamera() {} @@ -300,7 +300,7 @@ private: /* 0x00 */ u8 mNumActor; /* 0x01 */ u8 mNumLight; /* 0x04 */ dDemo_actor_c* mpActors[32]; - /* 0x84 */ dDemo_camera_c* mpActiveCamera; + /* 0x84 */ dDemo_camera_c* mpCamera; /* 0x88 */ dDemo_ambient_c* mpAmbient; /* 0x8C */ dDemo_light_c* mpLight[8]; /* 0xAC */ dDemo_fog_c* mpFog; diff --git a/include/d/d_stage.h b/include/d/d_stage.h index 7b7f5de47..428f72e97 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -34,7 +34,7 @@ struct dStage_nodeHeader { // made up name struct dStage_fileHeader { /* 0x0 */ int m_chunkCount; - /* 0x4 */ dStage_nodeHeader m_nodes[1]; // Variable length + /* 0x4 */ dStage_nodeHeader m_nodes[]; }; // Virt diff --git a/src/JSystem/JParticle/JPAEmitter.cpp b/src/JSystem/JParticle/JPAEmitter.cpp index b47336423..1fa1a52c5 100644 --- a/src/JSystem/JParticle/JPAEmitter.cpp +++ b/src/JSystem/JParticle/JPAEmitter.cpp @@ -389,7 +389,7 @@ void JPABaseEmitter::calcKey() { case 7: mInitialVelAxis = value; break; case 8: mInitialVelDir = value; break; case 9: mSpread = value; break; - case 10: mDraw.mScaleOut = value; break; + case 10: mDraw.setKeyScl(value); break; } } } diff --git a/src/d/d_camera.cpp b/src/d/d_camera.cpp index ef8c121f9..1b90b7cb5 100644 --- a/src/d/d_camera.cpp +++ b/src/d/d_camera.cpp @@ -8,6 +8,7 @@ #include "d/d_bg_s_lin_chk.h" #include "d/d_bg_s_sph_chk.h" #include "SSystem/SComponent/c_bg_s.h" +#include "d/d_com_inf_game.h" #include "dolphin/types.h" #include "SSystem/SComponent/c_math.h" #include "d/actor/d_a_obj_pirateship.h" @@ -202,8 +203,8 @@ void dCamera_c::initialize(camera_class* camera, fopAc_ac_c* playerActor, u32 ca int mapToolType; mpCamera = camera; - m004 = 1; - m005 = 0; + mActive = 1; + mPause = 0; mpPlayerActor = playerActor; mCameraInfoIdx = cameraInfoIdx; @@ -409,17 +410,17 @@ void dCamera_c::initialize(camera_class* camera, fopAc_ac_c* playerActor, u32 ca /* 80162128-80162134 .text Start__9dCamera_cFv */ void dCamera_c::Start() { - m004 = 1; + mActive = 1; } /* 80162134-80162140 .text Stop__9dCamera_cFv */ void dCamera_c::Stop() { - m004 = 0; + mActive = 0; } /* 80162140-8016214C .text Stay__9dCamera_cFv */ void dCamera_c::Stay() { - m005 = 1; + mPause = 1; } /* 8016214C-801621A0 .text ChangeModeOK__9dCamera_cFl */ @@ -833,7 +834,7 @@ bool dCamera_c::Run() { clrFlag(0x200000); } } - else if (g_dComIfG_gameInfo.play.mDemo->getObject()->getActiveCamera() && mCamParam.Algorythmn() != 11) { + else if (dComIfGp_demo_getCamera() && mCamParam.Algorythmn() != 11) { camera = (dCamera_c *)demoCamera(0); } else { @@ -1002,7 +1003,7 @@ bool dCamera_c::NotRun() { shakeCamera(); - m005 = 0; + mPause = 0; if (dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 8)) { if (chkFlag(0x400000)) { @@ -2753,7 +2754,7 @@ void store(camera_process_class* i_this) { cSAngle bank = fopCamM_GetBank(a_this); f32 fovy = fopCamM_GetFovy(a_this); - dDemo_camera_c* mDemoCamera = g_dComIfG_gameInfo.play.mDemo->getObject()->getActiveCamera(); + dDemo_camera_c* mDemoCamera = dComIfGp_demo_getCamera(); if (mDemoCamera) { if (mDemoCamera->checkEnable(0x40)) { @@ -2819,13 +2820,19 @@ int camera_execute(camera_process_class* i_this) { preparation(i_this); - a_this->mCamera.Pause(); + if (dComIfGp_demo_getCamera()) { + a_this->mCamera.ResetView(); + } if (!dComIfGp_evmng_cameraPlay()) { mDoGph_gInf_c::onAutoForcus(); } - a_this->mCamera.Active(); + if (a_this->mCamera.Active() && !a_this->mCamera.Pause()) { + a_this->mCamera.Run(); + } else { + a_this->mCamera.NotRun(); + } a_this->mCamera.CalcTrimSize(); diff --git a/src/d/d_com_inf_game.cpp b/src/d/d_com_inf_game.cpp index 3c41c2136..645346ace 100644 --- a/src/d/d_com_inf_game.cpp +++ b/src/d/d_com_inf_game.cpp @@ -104,12 +104,12 @@ void dComIfG_play_c::itemInit() { mMesgStatus = 0; mScopeMesgStatus = 0; field_0x492c = 0; - field_0x492d = 0; - mCurrButtonBAction = 0; - mCurrButtonAAction = 0; - field_0x4930 = 0; - field_0x4931 = 0; - field_0x4932 = 0; + mRStatus = 0; + mAStatus = 0; + mDoStatus = 0; + mRStatusForce = 0; + mAStatusForce = 0; + mDoStatusForce = 0; for (int i = 0; i < ARRAY_SIZE(mSelectItem); i++) { mSelectItem[i] = 0; @@ -152,7 +152,7 @@ void dComIfG_play_c::itemInit() { mPlacenameIndex = 0; mPlacenameState = 0; mGameoverStatus = 0; - field_0x495a = 0; + mMenuCollect = false; mPictureFlag = 0; mPictureResult = 0; mPictureResultDetail = 0; diff --git a/src/d/d_demo.cpp b/src/d/d_demo.cpp index 14e431795..494b6559b 100644 --- a/src/d/d_demo.cpp +++ b/src/d/d_demo.cpp @@ -453,7 +453,7 @@ void dDemo_fog_c::JSGSetColor(GXColor color) { dDemo_object_c::dDemo_object_c() { mNumActor = 0; mNumLight = 0; - mpActiveCamera = NULL; + mpCamera = NULL; mpAmbient = NULL; mpFog = NULL; } @@ -491,17 +491,17 @@ dDemo_actor_c* dDemo_object_c::getActor(u8 no) { /* 8006A31C-8006A398 .text createCamera__14dDemo_object_cFv */ dDemo_camera_c* dDemo_object_c::createCamera() { - if (mpActiveCamera != NULL) - return mpActiveCamera; + if (mpCamera != NULL) + return mpCamera; - mpActiveCamera = new dDemo_camera_c(); - return mpActiveCamera; + mpCamera = new dDemo_camera_c(); + return mpCamera; } /* 8006A398-8006A3AC .text getActiveCamera__14dDemo_object_cFv */ dDemo_camera_c* dDemo_object_c::getActiveCamera() { - if (mpActiveCamera != NULL) - return mpActiveCamera; + if (getCamera() != NULL) + return getCamera(); return NULL; } @@ -541,9 +541,9 @@ void dDemo_object_c::remove() { while (mNumActor) delete mpActors[--mNumActor]; - if (mpActiveCamera != NULL) { - delete mpActiveCamera; - mpActiveCamera = NULL; + if (mpCamera != NULL) { + delete mpCamera; + mpCamera = NULL; } if (mpAmbient != NULL) { diff --git a/src/d/d_meter.cpp b/src/d/d_meter.cpp index 47c7688f1..74759eb61 100644 --- a/src/d/d_meter.cpp +++ b/src/d/d_meter.cpp @@ -1880,9 +1880,9 @@ static cPhs_State dMeter_Create(msg_class* i_this) { fopMsgM_Create(PROC_MESG, NULL, NULL); - g_dComIfG_gameInfo.play.field_0x4932 = 0; - g_dComIfG_gameInfo.play.field_0x4930 = 0; - g_dComIfG_gameInfo.play.field_0x4931 = 0; + dComIfGp_setDoStatusForce(0); + dComIfGp_setRStatusForce(0); + dComIfGp_setAStatusForce(0); mDoHIO_createChild("通常画面表示", &g_meterHIO); // "Normal Screen Display" mDoHIO_createChild("メニュー画面", &g_menuHIO); // "Menu Screen" diff --git a/src/d/d_particle.cpp b/src/d/d_particle.cpp index fb1d8e07f..346abdfcf 100644 --- a/src/d/d_particle.cpp +++ b/src/d/d_particle.cpp @@ -332,7 +332,7 @@ void initiateLighting(GXColorS10& dif, GXColor& amb, GXColor& k1) { /* 8007B804-8007BB44 .text smokeEcallBack__FP14JPABaseEmitterP12dKy_tevstr_cSc8_GXColor */ void smokeEcallBack(JPABaseEmitter* emtr, dKy_tevstr_c* tevStr, s8, GXColor color) { GXFlush(); - GXLoadNrmMtxImm(JPADraw::cb.mDrawMtxPtr, GX_PNMTX0); + GXLoadNrmMtxImm(emtr->getCamMtxPtr(), GX_PNMTX0); GXInvalidateVtxCache(); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); @@ -343,7 +343,7 @@ void smokeEcallBack(JPABaseEmitter* emtr, dKy_tevstr_c* tevStr, s8, GXColor colo GXSetVtxDesc(GX_VA_NRM, GX_DIRECT); GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); - if (!(emtr->mDraw.field_0xc2 & 1)) { + if (!emtr->isZDraw()) { GXSetNumChans(1); if (tevStr == NULL) { GXColorS10 dif;