mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-07-09 04:30:49 -04:00
Fix JGadget::TLinkList offsets on 64-bit
This commit is contained in:
@@ -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<JASTrack> {
|
||||
/* 0x4c */ JASTrack* mTrack;
|
||||
};
|
||||
|
||||
struct TList : JGadget::TLinkList<JASTrack, -0x240> {
|
||||
struct TList : JGadget::TLinkList<JASTrack, JASTrackNodeOffset> {
|
||||
TList() : mCallbackRegistered(false) {}
|
||||
void append(JASTrack*);
|
||||
void seqMain();
|
||||
@@ -265,4 +271,8 @@ struct JASTrack : public JASPoolAllocObject_MultiThreaded<JASTrack> {
|
||||
/* 0x240 */ JGadget::TLinkListNode field_0x240;
|
||||
};
|
||||
|
||||
#if TARGET_PC
|
||||
static_assert(offsetof(JASTrack, field_0x240) == JASTrackNodeOffset);
|
||||
#endif
|
||||
|
||||
#endif /* JASTRACK_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<JHICmnMem> {
|
||||
public:
|
||||
typedef void (*EventFunc)(u32,char *);
|
||||
typedef JGadget::TLinkList<JOREventCallbackListNode, -4> CallbackLinkList;
|
||||
typedef JGadget::TLinkList<JOREventCallbackListNode, JOREventCallbackListNode::NodeOffset> CallbackLinkList;
|
||||
|
||||
enum ECommand {
|
||||
ECommand_GetRootObj = 1,
|
||||
|
||||
@@ -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<TObject, -12> ocObject_;
|
||||
/* 0x8 */ JGadget::TLinkList<TObject, TObject::NodeOffset> ocObject_;
|
||||
};
|
||||
|
||||
struct TParse : public JGadget::binary::TParse_header_block {
|
||||
|
||||
@@ -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<TObject, -12> ocObject_;
|
||||
/* 0x8 */ JGadget::TLinkList<TObject, TObject::NodeOffset> ocObject_;
|
||||
}; // Size: 0x14
|
||||
|
||||
class TObject_composite : public TObject {
|
||||
|
||||
@@ -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<TCreateObject, -4> mList;
|
||||
/* 0x04 */ JGadget::TLinkList<TCreateObject, TCreateObject::NodeOffset> mList;
|
||||
/* 0x10 */ fvb::TFactory fvb_Factory;
|
||||
/* 0x14 */ ctb::TFactory ctb_Factory;
|
||||
};
|
||||
|
||||
@@ -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<TObject, -12> ocObject_;
|
||||
/* 0x10 */ JGadget::TLinkList<TObject, TObject::NodeOffset> ocObject_;
|
||||
/* 0x1C */ u32 mStatus;
|
||||
/* 0x20 */ TObject_control mObject_control;
|
||||
/* 0x54 */ s32 _54;
|
||||
|
||||
@@ -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<TObject, -12>::iterator begin = ocObject_.begin();
|
||||
JGadget::TLinkList<TObject, -12>::iterator end = ocObject_.end();
|
||||
JGadget::TLinkList<TObject, -12>::iterator local_50 = std::find_if(begin, end, object::TPRObject_ID_equal(param_0, param_1));
|
||||
JGadget::TLinkList<TObject, TObject::NodeOffset>::iterator begin = ocObject_.begin();
|
||||
JGadget::TLinkList<TObject, TObject::NodeOffset>::iterator end = ocObject_.end();
|
||||
JGadget::TLinkList<TObject, TObject::NodeOffset>::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<TObject, -12>::iterator aiStack_14 = ocObject_.begin();
|
||||
JGadget::TLinkList<TObject, TObject::NodeOffset>::iterator aiStack_14 = ocObject_.begin();
|
||||
std::advance(aiStack_14, param_0);
|
||||
return &*aiStack_14;
|
||||
}
|
||||
|
||||
@@ -329,7 +329,7 @@ void TControl::destroyObject_all() {
|
||||
}
|
||||
|
||||
TObject* TControl::getObject(void const* id, u32 idSize) {
|
||||
typedef JGadget::TLinkList<TObject, -12>::iterator iterator;
|
||||
typedef JGadget::TLinkList<TObject, TObject::NodeOffset>::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<TObject, -12>::iterator it = ocObject_.begin();
|
||||
JGadget::TLinkList<TObject, TObject::NodeOffset>::iterator it = ocObject_.begin();
|
||||
std::advance(it, index);
|
||||
return &*it;
|
||||
}
|
||||
|
||||
@@ -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<JGadget::TLinkList<TCreateObject, -4> > aTStack_368(mList);
|
||||
JGadget::TContainerEnumerator<JGadget::TLinkList<TCreateObject, TCreateObject::NodeOffset> > aTStack_368(mList);
|
||||
while(aTStack_368) {
|
||||
TCreateObject& piVar1 = *aTStack_368;
|
||||
JStudio::TObject* obj;
|
||||
|
||||
@@ -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<TObject, -12>::iterator begin = ocObject_.begin();
|
||||
JGadget::TLinkList<TObject, -12>::iterator end = ocObject_.end();
|
||||
JGadget::TLinkList<TObject, -12>::iterator local_50 = std::find_if(begin, end, object::TPRObject_ID_equal(param_0, param_1));
|
||||
JGadget::TLinkList<TObject, TObject::NodeOffset>::iterator begin = ocObject_.begin();
|
||||
JGadget::TLinkList<TObject, TObject::NodeOffset>::iterator end = ocObject_.end();
|
||||
JGadget::TLinkList<TObject, TObject::NodeOffset>::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<JGadget::TLinkList<JStudio::stb::TObject, -12> > aTStack_18(ocObject_);
|
||||
JGadget::TContainerEnumerator<JGadget::TLinkList<JStudio::stb::TObject, TObject::NodeOffset> > 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<JGadget::TLinkList<JStudio::stb::TObject, -12> > aTStack_38(ocObject_);
|
||||
JGadget::TContainerEnumerator<JGadget::TLinkList<JStudio::stb::TObject, TObject::NodeOffset> > aTStack_38(ocObject_);
|
||||
while (aTStack_38) {
|
||||
JStudio::stb::TObject& this_00 = *aTStack_38;
|
||||
rv = this_00.forward(param_0) || rv;
|
||||
|
||||
Reference in New Issue
Block a user