diff --git a/configure.py b/configure.py index c809a5d85..5854a6670 100644 --- a/configure.py +++ b/configure.py @@ -617,11 +617,11 @@ config.libs = [ "JStudio_JStage", [ Object(Matching, "JSystem/JStudio/JStudio_JStage/control.cpp"), - Object(NonMatching, "JSystem/JStudio/JStudio_JStage/object.cpp"), + Object(Matching, "JSystem/JStudio/JStudio_JStage/object.cpp"), Object(NonMatching, "JSystem/JStudio/JStudio_JStage/object-actor.cpp"), - Object(NonMatching, "JSystem/JStudio/JStudio_JStage/object-ambientlight.cpp"), + Object(Matching, "JSystem/JStudio/JStudio_JStage/object-ambientlight.cpp"), Object(NonMatching, "JSystem/JStudio/JStudio_JStage/object-camera.cpp"), - Object(NonMatching, "JSystem/JStudio/JStudio_JStage/object-fog.cpp"), + Object(Matching, "JSystem/JStudio/JStudio_JStage/object-fog.cpp"), Object(NonMatching, "JSystem/JStudio/JStudio_JStage/object-light.cpp"), ], ), diff --git a/include/JSystem/JAudio/JAIBasic.h b/include/JSystem/JAudio/JAIBasic.h index 51e293201..62ceb0492 100644 --- a/include/JSystem/JAudio/JAIBasic.h +++ b/include/JSystem/JAudio/JAIBasic.h @@ -2,10 +2,10 @@ #define JAIBASIC_H #include "JSystem/JUtility/JUTAssert.h" -#include "dolphin/mtx/vec.h" #include "JSystem/JAudio/JAIBankWave.h" +#include "JSystem/JAudio/JAISound.h" +#include "dolphin/mtx/vec.h" -class JAISound; class JKRSolidHeap; namespace JAInter { @@ -87,8 +87,16 @@ public: return JAInter::BankWave::checkAllWaveLoadStatus(); } + // this might be wrong, it matches but the size doesn't seem to match the debug map bool checkEnablePrepare(u32 flags) { return !(flags & 0xc0000000) && !(flags & 0x00000c00); } + void prepareSoundVec(u32 flags, JAISound** pSound, Vec* pos, u32 r7, u32 r8, u8 r9) { + startSoundVec(flags, pSound, pos, r7, r8, r9); + if (*pSound) { + (*pSound)->setPrepareFlag(1); + } + } + // TODO void addInitOnCodeSeScene(u32, u32) {} void getAudioCamera() {} @@ -99,7 +107,6 @@ public: void getWaveLoadStatus(s32) {} void initAudio(JKRSolidHeap*, u32, u8) {} void loadSceneWave(s32, s32) {} - void prepareSoundVec(u32, JAISound**, Vec*, u32, u32, u8) {} void setInitDataInfo(char*) {} void setInitOnCodeSeScene(u32*) {} diff --git a/include/JSystem/JStage/JSGFog.h b/include/JSystem/JStage/JSGFog.h index dfedcc8ff..1b90aa3fc 100644 --- a/include/JSystem/JStage/JSGFog.h +++ b/include/JSystem/JStage/JSGFog.h @@ -7,6 +7,9 @@ namespace JStage { struct TFog : public TObject { + void JSGFDisableFlag(u32 flag) { JSGSetFlag(JSGGetFlag() & ~flag); } + void JSGFEnableFlag(u32 flag) { JSGSetFlag(JSGGetFlag() | flag); } + virtual ~TFog() = 0; virtual s32 JSGFGetType() const; virtual bool JSGGetFogFunction() const; diff --git a/include/JSystem/JStage/JSGObject.h b/include/JSystem/JStage/JSGObject.h index 6ea8593f4..e702893e2 100644 --- a/include/JSystem/JStage/JSGObject.h +++ b/include/JSystem/JStage/JSGObject.h @@ -15,10 +15,13 @@ namespace JStage { }; struct TObject { + void JSGFDisableFlag(u32 flag) { JSGSetFlag(JSGGetFlag() & ~flag); } + void JSGFEnableFlag(u32 flag) { JSGSetFlag(JSGGetFlag() | flag); } + virtual ~TObject() = 0; virtual s32 JSGFGetType() const = 0; virtual bool JSGGetName() const; - virtual bool JSGGetFlag() const; + virtual u32 JSGGetFlag() const; virtual void JSGSetFlag(u32); virtual bool JSGGetData(u32, void*, u32) const; virtual void JSGSetData(u32, void const*, u32); diff --git a/include/JSystem/JStudio/JStudio/jstudio-control.h b/include/JSystem/JStudio/JStudio/jstudio-control.h index 7712b26c4..23c622676 100644 --- a/include/JSystem/JStudio/JStudio/jstudio-control.h +++ b/include/JSystem/JStudio/JStudio/jstudio-control.h @@ -31,7 +31,7 @@ struct TFactory : public stb::TFactory { class TControl : public stb::TControl { public: struct TTransform_position { - Vec mPosition; + Vec mPosition; }; struct TTransform_position_direction {}; struct TTransform_translation_rotation {}; diff --git a/include/JSystem/JStudio/JStudio/jstudio-object.h b/include/JSystem/JStudio/JStudio/jstudio-object.h index f12ed6494..732e19f19 100644 --- a/include/JSystem/JStudio/JStudio/jstudio-object.h +++ b/include/JSystem/JStudio/JStudio/jstudio-object.h @@ -140,8 +140,8 @@ public: struct TAdaptor { inline TAdaptor(TVariableValue* values, int count) - : pValue_(values) - , u(count) + : mVariableValues(values) + , mCount(count) { } @@ -184,7 +184,7 @@ struct TAdaptor { TVariableValue* adaptor_referVariableValue(u32 param_0) { - return &pValue_[param_0]; + return &mVariableValues[param_0]; } void adaptor_setVariableValue_immediate(u32 param_0, f32 param_1) { @@ -192,11 +192,11 @@ struct TAdaptor { } const TVariableValue* adaptor_getVariableValue(u32 param_0) const { - return &pValue_[param_0]; + return &mVariableValues[param_0]; } - /* 0x4 */ TVariableValue* pValue_; - /* 0x8 */ u32 u; + /* 0x4 */ TVariableValue* mVariableValues; + /* 0x8 */ u32 mCount; }; struct TAdaptor_actor : public TAdaptor { @@ -232,8 +232,8 @@ struct TAdaptor_ambientLight : public TAdaptor { /* 0x10 */ TVariableValue mValue[4]; - static u8 const sauVariableValue_3_COLOR_RGB[12]; - static u8 const sauVariableValue_4_COLOR_RGBA[16]; + static const u32 sauVariableValue_3_COLOR_RGB[3]; + static const u32 sauVariableValue_4_COLOR_RGBA[4]; }; struct TObject_ambientLight : public TObject { @@ -277,8 +277,8 @@ struct TAdaptor_fog : public TAdaptor { /* 0x10 */ TVariableValue mValue[6]; - static u8 const sauVariableValue_3_COLOR_RGB[12]; - static u8 const sauVariableValue_4_COLOR_RGBA[16]; + static const u32 sauVariableValue_3_COLOR_RGB[12]; + static const u32 sauVariableValue_4_COLOR_RGBA[16]; static u8 sauVariableValue_2_RANGE_BEGIN_END[8]; }; diff --git a/include/JSystem/JStudio/JStudio_JAudio/control.h b/include/JSystem/JStudio/JStudio_JAudio/control.h index 42646b063..d87b83b7e 100644 --- a/include/JSystem/JStudio/JStudio_JAudio/control.h +++ b/include/JSystem/JStudio/JStudio_JAudio/control.h @@ -23,10 +23,10 @@ struct TAdaptor_sound : public JStudio::TAdaptor_sound { }; struct TVVOSetValue_ : public JStudio::TVariableValue::TOutput { - TVVOSetValue_(JStudio::TAdaptor_sound::TEVariableValue idx, TVVOSoundSetFunc func) { - mValueIndex = idx; - mSetFunc = func; - } + TVVOSetValue_(JStudio::TAdaptor_sound::TEVariableValue idx, TVVOSoundSetFunc func) { + mValueIndex = idx; + mSetFunc = func; + } virtual void operator()(f32, JStudio::TAdaptor*) const; virtual ~TVVOSetValue_() {} diff --git a/include/JSystem/JStudio/JStudio_JStage/control.h b/include/JSystem/JStudio/JStudio_JStage/control.h index e25b5b8e9..761b7f426 100644 --- a/include/JSystem/JStudio/JStudio_JStage/control.h +++ b/include/JSystem/JStudio/JStudio_JStage/control.h @@ -22,9 +22,33 @@ struct TCreateObject : public JStudio::TCreateObject { /* 0x0C */ const JStage::TSystem* mSystem; }; +template +struct TVariableValueOutput_object_ : public JStudio::TVariableValue::TOutput { + typedef void (Object::*Setter)(f32); + typedef f32 (Object::*Getter)() const; + + TVariableValueOutput_object_(int valueIndex, Setter setter, Getter getter) + : TOutput() + , mValueIndex(valueIndex) + , mSetter(setter) + , mGetter(getter) + { + } + + virtual void operator()(f32 value, JStudio::TAdaptor* adaptor) const // _08 (weak) + { + (static_cast(static_cast(adaptor)->mObject)->*mSetter)(value); + } + virtual ~TVariableValueOutput_object_() { } // _0C (weak) + + int mValueIndex; // _04 + Setter mSetter; // _08 + Getter mGetter; // _14 +}; + struct TAdaptor_object_ { - void adaptor_data_(JStage::TObject*, void const*, u32, void const*, u32); - void adaptor_ENABLE_(JStage::TObject*, JStudio::data::TEOperationData, void const*, u32); + static void adaptor_data_(JStage::TObject*, void const*, u32, void const*, u32); + static void adaptor_ENABLE_(JStage::TObject*, JStudio::data::TEOperationData, void const*, u32); /* 0x0 */ JStudio::TAdaptor* field_0x0; /* 0x4 */ JStage::TSystem* mSystem; @@ -79,7 +103,8 @@ struct TAdaptor_ambientLight : public JStudio::TAdaptor_ambientLight { virtual void adaptor_do_update(const JStudio::TObject*, u32); virtual void adaptor_do_data(const JStudio::TObject*, void const*, u32, void const*, u32); - /* 0x5C */ u8 field_0x5C[0x64- 0x5C]; + /* 0x5C */ const JStage::TSystem* mSystem; + /* 0x60 */ JStage::TAmbientLight* mLight; }; // Size: 0x64 struct TAdaptor_camera : public JStudio::TAdaptor_camera { @@ -105,6 +130,8 @@ struct TAdaptor_camera : public JStudio::TAdaptor_camera { }; // Size: 0xF8 struct TAdaptor_fog : public JStudio::TAdaptor_fog { + typedef TVariableValueOutput_object_ TVVOutput; + TAdaptor_fog(JStage::TSystem const*, JStage::TFog*); virtual ~TAdaptor_fog(); virtual void adaptor_do_prepare(const JStudio::TObject*); @@ -113,9 +140,10 @@ struct TAdaptor_fog : public JStudio::TAdaptor_fog { virtual void adaptor_do_update(const JStudio::TObject*, u32); virtual void adaptor_do_data(const JStudio::TObject*, void const*, u32, void const*, u32); - static u8 saoVVOutput_[96 + 4 /* padding */]; + static const TVVOutput saoVVOutput_[3]; - /* 0x84 */ u8 field_0x110[0x8C - 0x84]; + /* 0x84 */ const JStage::TSystem* mSystem; + /* 0x88 */ JStage::TFog* mObject; }; // Size: 0x8C struct TAdaptor_light : public JStudio::TAdaptor_light { diff --git a/src/JSystem/JStage/JSGObject.cpp b/src/JSystem/JStage/JSGObject.cpp index 42fc54d82..57559dc23 100644 --- a/src/JSystem/JStage/JSGObject.cpp +++ b/src/JSystem/JStage/JSGObject.cpp @@ -16,8 +16,8 @@ bool JStage::TObject::JSGGetName() const { } /* 8026DF90-8026DF98 .text JSGGetFlag__Q26JStage7TObjectCFv */ -bool JStage::TObject::JSGGetFlag() const { - return false; +u32 JStage::TObject::JSGGetFlag() const { + return 0; } /* 8026DF98-8026DF9C .text JSGSetFlag__Q26JStage7TObjectFUl */ diff --git a/src/JSystem/JStudio/JStudio/jstudio-object.cpp b/src/JSystem/JStudio/JStudio/jstudio-object.cpp index d1f909b01..ec1d1fc43 100644 --- a/src/JSystem/JStudio/JStudio/jstudio-object.cpp +++ b/src/JSystem/JStudio/JStudio/jstudio-object.cpp @@ -161,7 +161,7 @@ void JStudio::TAdaptor::adaptor_getVariableValue_GXColor(GXColor* param_1, const void JStudio::TAdaptor::adaptor_updateVariableValue(JStudio::TObject* pObject, u32 param_2) { TControl* pControl = pObject->getControl(); f64 dVar3 = pControl->getSecondPerFrame(); - JGadget::TEnumerator enumerator(pValue_, pValue_ + u); + JGadget::TEnumerator enumerator(mVariableValues, mVariableValues + mCount); while (enumerator) { JStudio::TVariableValue* value = *enumerator; value->forward(param_2); @@ -171,30 +171,30 @@ void JStudio::TAdaptor::adaptor_updateVariableValue(JStudio::TObject* pObject, u /* 8026F064-8026F07C .text adaptor_setVariableValue_VOID___Q27JStudio8TAdaptorFPQ27JStudio8TAdaptorPQ27JStudio7TObjectUlPCvUl */ void JStudio::TAdaptor::adaptor_setVariableValue_VOID_(JStudio::TAdaptor* param_1, JStudio::TObject* param_2, u32 param_3, const void* param_4, u32 uSize) { - param_1->pValue_[param_3].setValue_none(); + param_1->mVariableValues[param_3].setValue_none(); } /* 8026F07C-8026F0A8 .text adaptor_setVariableValue_IMMEDIATE___Q27JStudio8TAdaptorFPQ27JStudio8TAdaptorPQ27JStudio7TObjectUlPCvUl */ void JStudio::TAdaptor::adaptor_setVariableValue_IMMEDIATE_(JStudio::TAdaptor* param_1, JStudio::TObject* param_2, u32 param_3, const void* param_4, u32 param_5) { - TVariableValue* value = ¶m_1->pValue_[param_3]; + TVariableValue* value = ¶m_1->mVariableValues[param_3]; value->setValue_immediate(*(f32*)param_4); } /* 8026F0A8-8026F0D4 .text adaptor_setVariableValue_TIME___Q27JStudio8TAdaptorFPQ27JStudio8TAdaptorPQ27JStudio7TObjectUlPCvUl */ void JStudio::TAdaptor::adaptor_setVariableValue_TIME_(JStudio::TAdaptor* param_1, JStudio::TObject* param_2, u32 param_3, const void* param_4, u32 param_5) { - TVariableValue* value = ¶m_1->pValue_[param_3]; + TVariableValue* value = ¶m_1->mVariableValues[param_3]; value->setValue_time(*(f32*)param_4); } /* 8026F0D4-8026F144 .text adaptor_setVariableValue_FVR_NAME___Q27JStudio8TAdaptorFPQ27JStudio8TAdaptorPQ27JStudio7TObjectUlPCvUl */ void JStudio::TAdaptor::adaptor_setVariableValue_FVR_NAME_(JStudio::TAdaptor* param_1, JStudio::TObject* param_2, u32 param_3, const void* param_4, u32 param_5) { - TVariableValue* value = ¶m_1->pValue_[param_3]; + TVariableValue* value = ¶m_1->mVariableValues[param_3]; value->setValue_functionValue(param_2->getControl()->getFunctionValue(param_4,param_5)); } /* 8026F144-8026F1B0 .text adaptor_setVariableValue_FVR_INDEX___Q27JStudio8TAdaptorFPQ27JStudio8TAdaptorPQ27JStudio7TObjectUlPCvUl */ void JStudio::TAdaptor::adaptor_setVariableValue_FVR_INDEX_(JStudio::TAdaptor* param_1, JStudio::TObject* param_2, u32 param_3, const void* param_4, u32 param_5) { - TVariableValue* value = ¶m_1->pValue_[param_3]; + TVariableValue* value = ¶m_1->mVariableValues[param_3]; value->setValue_functionValue(param_2->getControl()->getFunctionValue_index(*(u32*)param_4)); } diff --git a/src/JSystem/JStudio/JStudio_JAudio/object-sound.cpp b/src/JSystem/JStudio/JStudio_JAudio/object-sound.cpp index 3b5da8ba5..2906ac1d8 100644 --- a/src/JSystem/JStudio/JStudio_JAudio/object-sound.cpp +++ b/src/JSystem/JStudio/JStudio_JAudio/object-sound.cpp @@ -35,11 +35,11 @@ void TAdaptor_sound::adaptor_do_prepare(const JStudio::TObject* param_1) { TSetVariableValue_immediate(0xFFFFFFFF, NAN), }; adaptor_setVariableValue_immediate(aoData); - pValue_[3].setOutput(&TAdaptor_sound::soVVOOn_BEGIN_FADE_IN_); - pValue_[4].setOutput(&TAdaptor_sound::soVVOOn_END_FADE_OUT_); + mVariableValues[3].setOutput(&TAdaptor_sound::soVVOOn_BEGIN_FADE_IN_); + mVariableValues[4].setOutput(&TAdaptor_sound::soVVOOn_END_FADE_OUT_); for (TAdaptor_sound::TVVOSetValue_* value = TAdaptor_sound::saoVVOSetValue_; value->mValueIndex != -1; value++) { - pValue_[value->mValueIndex].setOutput(value); + mVariableValues[value->mValueIndex].setOutput(value); } } @@ -76,10 +76,7 @@ void TAdaptor_sound::adaptor_do_SOUND(JStudio::data::TEOperationData op, const v mpSound->stop(0); } mFlags = flags; - mpBasic->startSoundVec(flags, &mpSound, mPosition, 0, 0, 4); - if (mpSound) { - mpSound->setPrepareFlag(1); - } + mpBasic->prepareSoundVec(flags, &mpSound, mPosition, 0, 0, 4); if (!mpSound) { return; } diff --git a/src/JSystem/JStudio/JStudio_JParticle/object-particle.cpp b/src/JSystem/JStudio/JStudio_JParticle/object-particle.cpp index 9f1e11707..65d2dbc7c 100644 --- a/src/JSystem/JStudio/JStudio_JParticle/object-particle.cpp +++ b/src/JSystem/JStudio/JStudio_JParticle/object-particle.cpp @@ -44,8 +44,8 @@ void TAdaptor_particle::adaptor_do_prepare(const JStudio::TObject* param_1) { TSetVariableValue_immediate(15, 255.0f), TSetVariableValue_immediate(16, 255.0f), TSetVariableValue_immediate(0xFFFFFFFF, NAN) }; adaptor_setVariableValue_immediate(aoData); - pValue_[18].setOutput(&TAdaptor_particle::soVVOOn_BEGIN_FADE_IN_); - pValue_[19].setOutput(&TAdaptor_particle::soVVOOn_END_FADE_OUT_); + mVariableValues[18].setOutput(&TAdaptor_particle::soVVOOn_BEGIN_FADE_IN_); + mVariableValues[19].setOutput(&TAdaptor_particle::soVVOOn_END_FADE_OUT_); mCallback.mObject = param_1; } diff --git a/src/JSystem/JStudio/JStudio_JStage/object-ambientlight.cpp b/src/JSystem/JStudio/JStudio_JStage/object-ambientlight.cpp index 94e36ce96..5b3592d7b 100644 --- a/src/JSystem/JStudio/JStudio_JStage/object-ambientlight.cpp +++ b/src/JSystem/JStudio/JStudio_JStage/object-ambientlight.cpp @@ -6,37 +6,45 @@ #include "JSystem/JStudio/JStudio_JStage/object-ambientlight.h" #include "dolphin/types.h" +namespace JStudio_JStage { + /* 802770D8-8027716C .text __ct__Q214JStudio_JStage21TAdaptor_ambientLightFPCQ26JStage7TSystemPQ26JStage13TAmbientLight */ -JStudio_JStage::TAdaptor_ambientLight::TAdaptor_ambientLight(const JStage::TSystem*, JStage::TAmbientLight*) { - /* Nonmatching */ +TAdaptor_ambientLight::TAdaptor_ambientLight(const JStage::TSystem* system, JStage::TAmbientLight* object) + : mSystem(system) + , mLight(object) +{ } /* 8027716C-802771E4 .text __dt__Q214JStudio_JStage21TAdaptor_ambientLightFv */ -JStudio_JStage::TAdaptor_ambientLight::~TAdaptor_ambientLight() { - /* Nonmatching */ +TAdaptor_ambientLight::~TAdaptor_ambientLight() { + adaptor_do_end(NULL); } /* 802771E4-802771E8 .text adaptor_do_prepare__Q214JStudio_JStage21TAdaptor_ambientLightFPCQ27JStudio7TObject */ -void JStudio_JStage::TAdaptor_ambientLight::adaptor_do_prepare(const JStudio::TObject*) { - /* Nonmatching */ +void TAdaptor_ambientLight::adaptor_do_prepare(const JStudio::TObject*) { } /* 802771E8-80277274 .text adaptor_do_begin__Q214JStudio_JStage21TAdaptor_ambientLightFPCQ27JStudio7TObject */ -void JStudio_JStage::TAdaptor_ambientLight::adaptor_do_begin(const JStudio::TObject*) { - /* Nonmatching */ +void TAdaptor_ambientLight::adaptor_do_begin(const JStudio::TObject*) { + mLight->JSGFEnableFlag(1); + adaptor_setVariableValue_GXColor(sauVariableValue_4_COLOR_RGBA, mLight->JSGGetColor()); } /* 80277274-802772C8 .text adaptor_do_end__Q214JStudio_JStage21TAdaptor_ambientLightFPCQ27JStudio7TObject */ -void JStudio_JStage::TAdaptor_ambientLight::adaptor_do_end(const JStudio::TObject*) { - /* Nonmatching */ +void TAdaptor_ambientLight::adaptor_do_end(const JStudio::TObject*) { + mLight->JSGFDisableFlag(1); } /* 802772C8-80277320 .text adaptor_do_update__Q214JStudio_JStage21TAdaptor_ambientLightFPCQ27JStudio7TObjectUl */ -void JStudio_JStage::TAdaptor_ambientLight::adaptor_do_update(const JStudio::TObject*, u32) { - /* Nonmatching */ +void TAdaptor_ambientLight::adaptor_do_update(const JStudio::TObject*, u32) { + GXColor color; + adaptor_getVariableValue_GXColor(&color, sauVariableValue_4_COLOR_RGBA); + mLight->JSGSetColor(color); } /* 80277320-80277354 .text adaptor_do_data__Q214JStudio_JStage21TAdaptor_ambientLightFPCQ27JStudio7TObjectPCvUlPCvUl */ -void JStudio_JStage::TAdaptor_ambientLight::adaptor_do_data(const JStudio::TObject*, const void*, u32, const void*, u32) { - /* Nonmatching */ +void TAdaptor_ambientLight::adaptor_do_data(const JStudio::TObject* object, const void* p2, u32 p3, const void* p4, u32 p5) { + TAdaptor_object_::adaptor_data_(mLight, p2, p3, p4, p5); } + +} // namespace JStudio_JStage diff --git a/src/JSystem/JStudio/JStudio_JStage/object-fog.cpp b/src/JSystem/JStudio/JStudio_JStage/object-fog.cpp index 778ae1321..1b67d19af 100644 --- a/src/JSystem/JStudio/JStudio_JStage/object-fog.cpp +++ b/src/JSystem/JStudio/JStudio_JStage/object-fog.cpp @@ -6,37 +6,58 @@ #include "JSystem/JStudio/JStudio_JStage/object-fog.h" #include "dolphin/types.h" +namespace JStudio_JStage { + /* 80277C64-80277CF8 .text __ct__Q214JStudio_JStage12TAdaptor_fogFPCQ26JStage7TSystemPQ26JStage4TFog */ -JStudio_JStage::TAdaptor_fog::TAdaptor_fog(const JStage::TSystem*, JStage::TFog*) { - /* Nonmatching */ +TAdaptor_fog::TAdaptor_fog(const JStage::TSystem* system, JStage::TFog* fog) + : JStudio::TAdaptor_fog() + , mSystem(system) + , mObject(fog) +{ } /* 80277CF8-80277D70 .text __dt__Q214JStudio_JStage12TAdaptor_fogFv */ -JStudio_JStage::TAdaptor_fog::~TAdaptor_fog() { - /* Nonmatching */ +TAdaptor_fog::~TAdaptor_fog() { + adaptor_do_end(NULL); } +const TAdaptor_fog::TVVOutput TAdaptor_fog::saoVVOutput_[] = { + TVVOutput(4, &JStage::TFog::JSGSetStartZ, &JStage::TFog::JSGGetStartZ), + TVVOutput(5, &JStage::TFog::JSGSetEndZ, &JStage::TFog::JSGGetEndZ), + TVVOutput(-1, NULL, NULL), +}; + /* 80277D70-80277DB8 .text adaptor_do_prepare__Q214JStudio_JStage12TAdaptor_fogFPCQ27JStudio7TObject */ -void JStudio_JStage::TAdaptor_fog::adaptor_do_prepare(const JStudio::TObject*) { - /* Nonmatching */ +void TAdaptor_fog::adaptor_do_prepare(const JStudio::TObject*) { + for (const TVVOutput* output = saoVVOutput_; output->mValueIndex != -1; output++) { + mVariableValues[output->mValueIndex].setOutput(output); + } } /* 80277DB8-80277E9C .text adaptor_do_begin__Q214JStudio_JStage12TAdaptor_fogFPCQ27JStudio7TObject */ -void JStudio_JStage::TAdaptor_fog::adaptor_do_begin(const JStudio::TObject*) { - /* Nonmatching */ +void TAdaptor_fog::adaptor_do_begin(const JStudio::TObject*) { + mObject->JSGFEnableFlag(1); + adaptor_setVariableValue_GXColor(sauVariableValue_4_COLOR_RGBA, mObject->JSGGetColor()); + for (const TVVOutput* output = saoVVOutput_; output->mValueIndex != -1; output++) { + mVariableValues[output->mValueIndex].setValue_immediate((mObject->*(output->mGetter))()); + } } /* 80277E9C-80277EF0 .text adaptor_do_end__Q214JStudio_JStage12TAdaptor_fogFPCQ27JStudio7TObject */ -void JStudio_JStage::TAdaptor_fog::adaptor_do_end(const JStudio::TObject*) { - /* Nonmatching */ +void TAdaptor_fog::adaptor_do_end(const JStudio::TObject*) { + mObject->JSGFDisableFlag(1); } /* 80277EF0-80277F48 .text adaptor_do_update__Q214JStudio_JStage12TAdaptor_fogFPCQ27JStudio7TObjectUl */ -void JStudio_JStage::TAdaptor_fog::adaptor_do_update(const JStudio::TObject*, u32) { - /* Nonmatching */ +void TAdaptor_fog::adaptor_do_update(const JStudio::TObject*, u32) { + GXColor color; + adaptor_getVariableValue_GXColor(&color, sauVariableValue_4_COLOR_RGBA); + mObject->JSGSetColor(color); } /* 80277F48-80277F7C .text adaptor_do_data__Q214JStudio_JStage12TAdaptor_fogFPCQ27JStudio7TObjectPCvUlPCvUl */ -void JStudio_JStage::TAdaptor_fog::adaptor_do_data(const JStudio::TObject*, const void*, u32, const void*, u32) { - /* Nonmatching */ +void TAdaptor_fog::adaptor_do_data(const JStudio::TObject* object, const void* p2, u32 p3, const void* p4, u32 p5) { + TAdaptor_object_::adaptor_data_(mObject, p2, p3, p4, p5); } + +} // namespace JStudio_JStage diff --git a/src/JSystem/JStudio/JStudio_JStage/object.cpp b/src/JSystem/JStudio/JStudio_JStage/object.cpp index b5ba0d643..0286ece13 100644 --- a/src/JSystem/JStudio/JStudio_JStage/object.cpp +++ b/src/JSystem/JStudio/JStudio_JStage/object.cpp @@ -7,11 +7,19 @@ #include "dolphin/types.h" /* 80276188-802761D0 .text adaptor_data___Q214JStudio_JStage16TAdaptor_object_FPQ26JStage7TObjectPCvUlPCvUl */ -void JStudio_JStage::TAdaptor_object_::adaptor_data_(JStage::TObject*, const void*, u32, const void*, u32) { - /* Nonmatching */ +void JStudio_JStage::TAdaptor_object_::adaptor_data_(JStage::TObject* object, const void* p2, u32 p3, const void* p4, u32 p5) { + object->JSGSetData((p3 == 0 ? 0xFFFFFFFF : *(u32*)p2), p4, p5); } /* 802761D0-80276264 .text adaptor_ENABLE___Q214JStudio_JStage16TAdaptor_object_FPQ26JStage7TObjectQ37JStudio4data15TEOperationDataPCvUl */ -void JStudio_JStage::TAdaptor_object_::adaptor_ENABLE_(JStage::TObject*, JStudio::data::TEOperationData, const void*, u32) { - /* Nonmatching */ +void JStudio_JStage::TAdaptor_object_::adaptor_ENABLE_(JStage::TObject* object, JStudio::data::TEOperationData op, const void* data, u32) { + switch (op) { + case JStudio::data::UNK_0x2: + if ((*(u32*)data) != 0) { + object->JSGFEnableFlag(2); + } else { + object->JSGFDisableFlag(2); + } + break; + } }