diff --git a/include/JSystem/JAudio2/JASTrack.h b/include/JSystem/JAudio2/JASTrack.h index 06a54ebec8..796bb6afd7 100644 --- a/include/JSystem/JAudio2/JASTrack.h +++ b/include/JSystem/JAudio2/JASTrack.h @@ -17,6 +17,12 @@ namespace JASDsp { extern const u32 FILTER_MODE_IIR; }; +#if !BIT_64 +const int JASTrackNodeOffset = 0x240; +#else +const int JASTrackNodeOffset = 0x310; +#endif + /** * @ingroup jsystem-jaudio * @@ -48,7 +54,7 @@ struct JASTrack : public JASPoolAllocObject_MultiThreaded { /* 0x4c */ JASTrack* mTrack; }; - struct TList : JGadget::TLinkList { + struct TList : JGadget::TLinkList { TList() : mCallbackRegistered(false) {} void append(JASTrack*); void seqMain(); @@ -265,4 +271,8 @@ struct JASTrack : public JASPoolAllocObject_MultiThreaded { /* 0x240 */ JGadget::TLinkListNode field_0x240; }; +#if TARGET_PC +static_assert(offsetof(JASTrack, field_0x240) == JASTrackNodeOffset); +#endif + #endif /* JASTRACK_H */ diff --git a/include/JSystem/JHostIO/JORServer.h b/include/JSystem/JHostIO/JORServer.h index d92e588117..32a9b6f19e 100644 --- a/include/JSystem/JHostIO/JORServer.h +++ b/include/JSystem/JHostIO/JORServer.h @@ -29,8 +29,12 @@ struct JOREventCallbackListNode { /* 0x04 */ JGadget::TLinkListNode m_node; /* 0x0C */ u32 field_0xc; /* 0x10 */ u32 field_0x10; + + static const int NodeOffset; }; +inline const int JOREventCallbackListNode::NodeOffset = -(int)offsetof(JOREventCallbackListNode, m_node); + class JORFile; class JORDir; class JORHostInfo_String; @@ -39,7 +43,7 @@ class JORHostInfo_CalendarTime; class JORServer : public JHITag { public: typedef void (*EventFunc)(u32,char *); - typedef JGadget::TLinkList CallbackLinkList; + typedef JGadget::TLinkList CallbackLinkList; enum ECommand { ECommand_GetRootObj = 1, diff --git a/include/JSystem/JStudio/JStudio/ctb.h b/include/JSystem/JStudio/JStudio/ctb.h index fb1312b870..1d5b2f5751 100644 --- a/include/JSystem/JStudio/JStudio/ctb.h +++ b/include/JSystem/JStudio/JStudio/ctb.h @@ -20,8 +20,12 @@ struct TObject : public object::TObject_ID { /* 0x08 vtable */ /* 0x0C */ JGadget::TLinkListNode ocObject_; /* 0x14 */ const void* pData_; + + static const int NodeOffset; }; +inline const int TObject::NodeOffset = -(int)offsetof(TObject, ocObject_); + struct data { struct THeaderData { u32 signature; @@ -137,7 +141,7 @@ struct TControl { void setFactory(TFactory* factory) { pFactory_ = factory; } /* 0x4 */ TFactory* pFactory_; - /* 0x8 */ JGadget::TLinkList ocObject_; + /* 0x8 */ JGadget::TLinkList ocObject_; }; struct TParse : public JGadget::binary::TParse_header_block { diff --git a/include/JSystem/JStudio/JStudio/fvb.h b/include/JSystem/JStudio/JStudio/fvb.h index 8c9aa30d8a..fad21e5021 100644 --- a/include/JSystem/JStudio/JStudio/fvb.h +++ b/include/JSystem/JStudio/JStudio/fvb.h @@ -41,11 +41,15 @@ public: TFunctionValue* const referFunctionValue() { return pfv_; } + static const int NodeOffset; + protected: /* 0x0C */ JGadget::TLinkListNode mNode; /* 0x14 */ TFunctionValue* pfv_; }; +inline const int TObject::NodeOffset = -(int)offsetof(TObject, mNode); + class TFactory { public: TFactory() {} @@ -72,7 +76,7 @@ public: private: /* 0x4 */ TFactory* pFactory; - /* 0x8 */ JGadget::TLinkList ocObject_; + /* 0x8 */ JGadget::TLinkList ocObject_; }; // Size: 0x14 class TObject_composite : public TObject { diff --git a/include/JSystem/JStudio/JStudio/jstudio-control.h b/include/JSystem/JStudio/JStudio/jstudio-control.h index a41df62dd3..6b6f65f3d8 100644 --- a/include/JSystem/JStudio/JStudio/jstudio-control.h +++ b/include/JSystem/JStudio/JStudio/jstudio-control.h @@ -25,8 +25,12 @@ struct TCreateObject { } /* 0x4 */ JGadget::TLinkListNode mNode; + + static const int NodeOffset; }; // Size: 0xC +inline const int TCreateObject::NodeOffset = -(int)offsetof(TCreateObject, mNode); + struct TFactory : public stb::TFactory { TFactory() {} @@ -35,7 +39,7 @@ struct TFactory : public stb::TFactory { void appendCreateObject(JStudio::TCreateObject*); - /* 0x04 */ JGadget::TLinkList mList; + /* 0x04 */ JGadget::TLinkList mList; /* 0x10 */ fvb::TFactory fvb_Factory; /* 0x14 */ ctb::TFactory ctb_Factory; }; diff --git a/include/JSystem/JStudio/JStudio/stb.h b/include/JSystem/JStudio/JStudio/stb.h index 52ddf088af..6b4b6ca938 100644 --- a/include/JSystem/JStudio/JStudio/stb.h +++ b/include/JSystem/JStudio/JStudio/stb.h @@ -118,8 +118,12 @@ public: // private: // public for the fakematch in JStudio_JStage::TAdaptor_acto /* 0x28 */ const void* pSequence_next; /* 0x2C */ u32 u32Wait_; /* 0x30 */ TEStatus mStatus; + + static const int NodeOffset; }; +inline const int TObject::NodeOffset = -(int)offsetof(TObject, ocObject_); + class TFactory { public: TFactory() {} @@ -163,7 +167,7 @@ private: /* 0x04 */ u32 _4; /* 0x08 */ u32 _8; /* 0x0C */ TFactory* pFactory; - /* 0x10 */ JGadget::TLinkList ocObject_; + /* 0x10 */ JGadget::TLinkList ocObject_; /* 0x1C */ u32 mStatus; /* 0x20 */ TObject_control mObject_control; /* 0x54 */ s32 _54; diff --git a/src/JSystem/JStudio/JStudio/ctb.cpp b/src/JSystem/JStudio/JStudio/ctb.cpp index a28752af7a..4b231b2c46 100644 --- a/src/JSystem/JStudio/JStudio/ctb.cpp +++ b/src/JSystem/JStudio/JStudio/ctb.cpp @@ -45,9 +45,9 @@ void JStudio::ctb::TControl::destroyObject_all() { // NONMATCHING - TPRObject_ID_equal issues JStudio::ctb::TObject* JStudio::ctb::TControl::getObject(void const* param_0, u32 param_1) { - JGadget::TLinkList::iterator begin = ocObject_.begin(); - JGadget::TLinkList::iterator end = ocObject_.end(); - JGadget::TLinkList::iterator local_50 = std::find_if(begin, end, object::TPRObject_ID_equal(param_0, param_1)); + JGadget::TLinkList::iterator begin = ocObject_.begin(); + JGadget::TLinkList::iterator end = ocObject_.end(); + JGadget::TLinkList::iterator local_50 = std::find_if(begin, end, object::TPRObject_ID_equal(param_0, param_1)); if ((local_50 != end) != false) { return &*local_50; } @@ -58,7 +58,7 @@ JStudio::ctb::TObject* JStudio::ctb::TControl::getObject_index(u32 param_0) { if (param_0 >= ocObject_.size()) { return 0; } - JGadget::TLinkList::iterator aiStack_14 = ocObject_.begin(); + JGadget::TLinkList::iterator aiStack_14 = ocObject_.begin(); std::advance(aiStack_14, param_0); return &*aiStack_14; } diff --git a/src/JSystem/JStudio/JStudio/fvb.cpp b/src/JSystem/JStudio/JStudio/fvb.cpp index 94721909c4..c7cee4c956 100644 --- a/src/JSystem/JStudio/JStudio/fvb.cpp +++ b/src/JSystem/JStudio/JStudio/fvb.cpp @@ -329,7 +329,7 @@ void TControl::destroyObject_all() { } TObject* TControl::getObject(void const* id, u32 idSize) { - typedef JGadget::TLinkList::iterator iterator; + typedef JGadget::TLinkList::iterator iterator; iterator begin = ocObject_.begin(); iterator end = ocObject_.end(); iterator it = std::find_if(begin, end, object::TPRObject_ID_equal(id, idSize)); @@ -341,7 +341,7 @@ TObject* TControl::getObject_index(u32 index) { return NULL; } - JGadget::TLinkList::iterator it = ocObject_.begin(); + JGadget::TLinkList::iterator it = ocObject_.begin(); std::advance(it, index); return &*it; } diff --git a/src/JSystem/JStudio/JStudio/jstudio-control.cpp b/src/JSystem/JStudio/JStudio/jstudio-control.cpp index 38fe394ea0..23add46c1e 100644 --- a/src/JSystem/JStudio/JStudio/jstudio-control.cpp +++ b/src/JSystem/JStudio/JStudio/jstudio-control.cpp @@ -82,7 +82,7 @@ void JStudio::TFactory::appendCreateObject(JStudio::TCreateObject* param_0) { JStudio::TObject* JStudio::TFactory::create(JStudio::stb::data::TParse_TBlock_object const& rParse) { - JGadget::TContainerEnumerator > aTStack_368(mList); + JGadget::TContainerEnumerator > aTStack_368(mList); while(aTStack_368) { TCreateObject& piVar1 = *aTStack_368; JStudio::TObject* obj; diff --git a/src/JSystem/JStudio/JStudio/stb.cpp b/src/JSystem/JStudio/JStudio/stb.cpp index b2dbddbd6d..8b5f3a4f8c 100644 --- a/src/JSystem/JStudio/JStudio/stb.cpp +++ b/src/JSystem/JStudio/JStudio/stb.cpp @@ -331,9 +331,9 @@ void TControl::destroyObject_all() { // NONMATCHING - TPRObject_ID_equal copy issue TObject* TControl::getObject(void const* param_0, u32 param_1) { - JGadget::TLinkList::iterator begin = ocObject_.begin(); - JGadget::TLinkList::iterator end = ocObject_.end(); - JGadget::TLinkList::iterator local_50 = std::find_if(begin, end, object::TPRObject_ID_equal(param_0, param_1)); + JGadget::TLinkList::iterator begin = ocObject_.begin(); + JGadget::TLinkList::iterator end = ocObject_.end(); + JGadget::TLinkList::iterator local_50 = std::find_if(begin, end, object::TPRObject_ID_equal(param_0, param_1)); if ((local_50 != end) != false) { return &*local_50; } @@ -343,7 +343,7 @@ TObject* TControl::getObject(void const* param_0, u32 param_1) { void TControl::reset() { resetStatus_(); mObject_control.reset(); - JGadget::TContainerEnumerator > aTStack_18(ocObject_); + JGadget::TContainerEnumerator > aTStack_18(ocObject_); while (aTStack_18) { (*aTStack_18).reset(); } @@ -354,7 +354,7 @@ bool TControl::forward(u32 param_0) { bool rv = mObject_control.forward(param_0); int uVar7 = 0xf; int uVar6 = 0; - JGadget::TContainerEnumerator > aTStack_38(ocObject_); + JGadget::TContainerEnumerator > aTStack_38(ocObject_); while (aTStack_38) { JStudio::stb::TObject& this_00 = *aTStack_38; rv = this_00.forward(param_0) || rv;