reccmp: vtable comparison (#452)

* Add vtable comparison to reccmp

* Add missing scalar deleting destructors

* Fix some vtables

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
This commit is contained in:
MS
2024-01-18 08:34:14 -05:00
committed by GitHub
parent 99917ca765
commit 909c44b679
161 changed files with 679 additions and 34 deletions

View File

@@ -19,6 +19,9 @@ public:
virtual void SetVolume(MxS32 p_volume); // vtable+2c
// SYNTHETIC: LEGO1 0x100b8d70
// MxAudioManager::`scalar deleting destructor'
private:
void Destroy(MxBool p_fromDestructor);

View File

@@ -92,6 +92,9 @@ public:
return -GetBmiStride();
}
// SYNTHETIC: LEGO1 0x100bc9f0
// MxBitmap::`scalar deleting destructor'
private:
MxResult ImportColorsToPalette(RGBQUAD*, MxPalette*);

View File

@@ -34,6 +34,9 @@ public:
inline MxU32 GetId() { return m_id; }
// SYNTHETIC: LEGO1 0x100ae1c0
// MxCore::`scalar deleting destructor'
private:
MxU32 m_id; // 0x04
};

View File

@@ -83,6 +83,9 @@ public:
SetFlags(GetFlags() | MxDSAction::c_bit3);
}
// SYNTHETIC: LEGO1 0x100ada60
// MxDSAction::`scalar deleting destructor'
protected:
MxU32 m_sizeOnDisk; // 0x2c
MxU32 m_flags; // 0x30

View File

@@ -27,6 +27,9 @@ public:
// FUNCTION: LEGO1 0x100c9cb0
static void Destroy(MxDSAction* p_action) { delete p_action; }
// SYNTHETIC: LEGO1 0x100c9dc0
// MxDSActionList::`scalar deleting destructor'
private:
undefined m_unk0x18;
};

View File

@@ -27,6 +27,9 @@ public:
}
virtual MxDSAction* Clone() override; // vtable+2c;
// SYNTHETIC: LEGO1 0x100c9180
// MxDSAnim::`scalar deleting destructor'
};
#endif // MXDSANIM_H

View File

@@ -75,6 +75,9 @@ public:
inline void SetMode(Type p_mode) { m_mode = p_mode; }
inline void SetUnk30(MxDSStreamingAction* p_unk0x30) { m_unk0x30 = p_unk0x30; }
// SYNTHETIC: LEGO1 0x100c6510
// MxDSBuffer::`scalar deleting destructor'
private:
MxU8* m_pBuffer; // 0x08
MxU8* m_pIntoBuffer; // 0x0c

View File

@@ -57,6 +57,9 @@ public:
delete[] m_data;
}
// SYNTHETIC: LEGO1 0x100be150
// MxDSChunk::`scalar deleting destructor'
protected:
MxU16 m_flags; // 0x8
MxU32 m_objectId; // 0xc

View File

@@ -26,6 +26,9 @@ public:
}
virtual MxDSAction* Clone() override; // vtable+2c;
// SYNTHETIC: LEGO1 0x100c9780
// MxDSEvent::`scalar deleting destructor'
};
#endif // MXDSEVENT_H

View File

@@ -38,6 +38,9 @@ public:
inline MxS32 CalcFileSize() { return GetFileSize(m_io.m_info.hmmio, NULL); }
// SYNTHETIC: LEGO1 0x100c01e0
// MxDSFile::`scalar deleting destructor'
private:
MxLong ReadChunks();
struct ChunkHeader {

View File

@@ -38,6 +38,9 @@ public:
inline MxDSActionList* GetActionList() const { return m_actions; };
// SYNTHETIC: LEGO1 0x100ca040
// MxDSMultiAction::`scalar deleting destructor'
protected:
MxU32 m_sizeOnDisk; // 0x94
MxDSActionList* m_actions; // 0x98

View File

@@ -63,6 +63,9 @@ public:
inline void ClearAtom() { m_atomId.Clear(); }
// SYNTHETIC: LEGO1 0x100bf7c0
// MxDSObject::`scalar deleting destructor'
private:
MxU32 m_sizeOnDisk; // 0x8
MxU16 m_type; // 0xc

View File

@@ -27,6 +27,9 @@ public:
virtual MxDSAction* Clone() override; // vtable+2c;
virtual void CopyFrom(MxDSObjectAction& p_dsObjectAction); // vtable+44;
// SYNTHETIC: LEGO1 0x100c8a00
// MxDSObjectAction::`scalar deleting destructor'
};
#endif // MXDSOBJECTACTION_H

View File

@@ -32,6 +32,9 @@ public:
virtual void Deserialize(MxU8** p_source, MxS16 p_unk0x24) override; // vtable+1c;
virtual MxDSAction* Clone() override; // vtable+2c;
// SYNTHETIC: LEGO1 0x100cb840
// MxDSSelectAction::`scalar deleting destructor'
private:
MxString m_unk0x9c;
MxStringList* m_unk0xac;

View File

@@ -31,6 +31,9 @@ public:
virtual void SetDuration(MxLong p_duration) override; // vtable+28;
virtual MxDSAction* Clone() override; // vtable+2c;
// SYNTHETIC: LEGO1 0x100cabf0
// MxDSSerialAction::`scalar deleting destructor'
private:
MxDSActionListCursor* m_cursor;
undefined4 m_unk0xa0;

View File

@@ -32,6 +32,9 @@ public:
inline MxS32 GetVolume() const { return m_volume; }
// SYNTHETIC: LEGO1 0x100c9450
// MxDSSound::`scalar deleting destructor'
private:
MxU32 m_sizeOnDisk;
MxS32 m_volume; // 0xbc

View File

@@ -27,6 +27,9 @@ public:
}
virtual MxDSAction* Clone() override; // vtable+2c;
// SYNTHETIC: LEGO1 0x100c9a50
// MxDSStill::`scalar deleting destructor'
};
#endif // MXDSSTILL_H

View File

@@ -44,6 +44,9 @@ public:
inline void SetUnknowna4(MxDSBuffer* p_unk0xa4) { m_unk0xa4 = p_unk0xa4; }
inline void SetBufferOffset(MxU32 p_bufferOffset) { m_bufferOffset = p_bufferOffset; }
// SYNTHETIC: LEGO1 0x100cd0b0
// MxDSStreamingAction::`scalar deleting destructor'
private:
MxU32 m_unk0x94; // 0x94
MxU32 m_bufferOffset; // 0x98

View File

@@ -48,6 +48,9 @@ public:
inline MxS32 GetEntityId() { return m_mxEntityId; }
inline MxAtomId& GetAtom() { return m_atom; }
// SYNTHETIC: LEGO1 0x1000c210
// MxEntity::`scalar deleting destructor'
protected:
MxS32 m_mxEntityId; // 0x8
MxAtomId m_atom; // 0xc

View File

@@ -14,6 +14,9 @@ public:
virtual void Destroy() override; // vtable+18
virtual MxResult Create(MxU32 p_frequencyMS, MxBool p_createThread); // vtable+28
// SYNTHETIC: LEGO1 0x100c03d0
// MxEventManager::`scalar deleting destructor'
private:
void Init();
void Destroy(MxBool p_fromDestructor);

View File

@@ -31,6 +31,9 @@ public:
virtual MxResult PutData() override; // vtable+0x4c
virtual void CopyData(MxStreamChunk* p_chunk); // vtable+0x5c
// SYNTHETIC: LEGO1 0x100c2d20
// MxEventPresenter::`scalar deleting destructor'
private:
void Init();

View File

@@ -30,6 +30,9 @@ public:
virtual void CreateBitmap() override; // vtable+0x60
virtual void RealizePalette() override; // vtable+0x70
// SYNTHETIC: LEGO1 0x100b3400
// MxFlcPresenter::`scalar deleting destructor'
protected:
FLIC_HEADER* m_flicHeader;
};

View File

@@ -20,6 +20,9 @@ public:
virtual void NextFrame() override; // vtable+0x64
// SYNTHETIC: LEGO1 0x100b4390
// MxLoopingFlcPresenter::`scalar deleting destructor'
private:
void Init();
void Destroy(MxBool p_fromDestructor);

View File

@@ -23,6 +23,9 @@ public:
MxResult Init();
// SYNTHETIC: LEGO1 0x100b8540
// MxMediaManager::`scalar deleting destructor'
protected:
MxPresenterList* m_presenters; // 0x8
MxThread* m_thread; // 0xc

View File

@@ -42,6 +42,9 @@ public:
virtual void Enable(MxBool p_enable) override; // vtable+0x54
virtual void LoopChunk(MxStreamChunk* p_chunk); // vtable+0x58
// SYNTHETIC: LEGO1 0x1000c680
// MxMediaPresenter::`scalar deleting destructor'
protected:
MxDSSubscriber* m_subscriber; // 0x40
MxStreamChunkList* m_loopingChunks; // 0x44

View File

@@ -33,6 +33,9 @@ public:
virtual MxResult PutData() override; // vtable+0x4c
virtual void SetVolume(MxS32 p_volume) override; // vtable+0x60
// SYNTHETIC: LEGO1 0x100c27a0
// MxMIDIPresenter::`scalar deleting destructor'
private:
void Init();
void Destroy(MxBool p_fromDestructor);

View File

@@ -38,6 +38,9 @@ private:
MxS32 m_multiplier; // 0x50
DWORD m_midiVolume; // 0x54
// SYNTHETIC: LEGO1 0x100c0610
// MxMusicManager::`scalar deleting destructor'
protected:
void Init();
void InitData();

View File

@@ -26,6 +26,9 @@ public:
virtual MxResult AddToManager() override; // vtable+0x34
virtual void Destroy() override; // vtable+0x38
// SYNTHETIC: LEGO1 0x100c24c0
// MxMusicPresenter::`scalar deleting destructor'
private:
void Init();
void Destroy(MxBool p_fromDestructor);

View File

@@ -33,6 +33,9 @@ public:
inline MxU32 GetData() const { return m_data; }
inline void SetData(MxU32 p_data) { m_data = p_data; }
// SYNTHETIC: LEGO1 0x100c1990
// MxNextActionDataStart::`scalar deleting destructor'
private:
MxU32 m_objectId; // 0x08
MxS16 m_unk0x24; // 0x0c

View File

@@ -48,6 +48,9 @@ public:
inline MxNotificationPtrList* GetQueue() { return m_queue; }
inline void SetActive(MxBool p_active) { m_active = p_active; }
// SYNTHETIC: LEGO1 0x100ac390
// MxNotificationManager::`scalar deleting destructor'
private:
void FlushPending(MxCore* p_listener);
};

View File

@@ -39,6 +39,9 @@ public:
virtual MxCore* Create(const char* p_name); // vtable 0x14
virtual void Destroy(MxCore* p_object); // vtable 0x18
// SYNTHETIC: LEGO1 0x100b1160
// MxObjectFactory::`scalar deleting destructor'
private:
#define X(V) MxAtomId m_id##V;
FOR_MXOBJECTFACTORY_OBJECTS(X)

View File

@@ -73,6 +73,9 @@ public:
MxAtomIdCounterSet* GetAtomIdCounterSet() const { return this->m_atomIdCounterSet; }
MxLong HandleActionEnd(MxParam& p_param);
// SYNTHETIC: LEGO1 0x100aefd0
// MxOmni::`scalar deleting destructor'
protected:
static MxOmni* g_instance;

View File

@@ -24,6 +24,9 @@ public:
MxVideoParam& GetVideoParam() { return m_videoParam; }
const MxVideoParam& GetVideoParam() const { return m_videoParam; }
// SYNTHETIC: LEGO1 0x100b0a70
// MxOmniCreateParam::`scalar deleting destructor'
private:
MxString m_mediaPath;
HWND m_windowHandle;

View File

@@ -28,6 +28,9 @@ public:
inline void SetOverrideSkyColor(MxBool p_value) { this->m_overrideSkyColor = p_value; }
// SYNTHETIC: LEGO1 0x100beeb0
// MxPalette::`scalar deleting destructor'
private:
LPDIRECTDRAWPALETTE m_palette;
PALETTEENTRY m_entries[256]; // 0xc

View File

@@ -129,6 +129,9 @@ public:
m_compositePresenter = p_compositePresenter;
}
// SYNTHETIC: LEGO1 0x1000c070
// MxPresenter::`scalar deleting destructor'
protected:
__declspec(dllexport) void Init();

View File

@@ -18,6 +18,9 @@ public:
{
return p_a == p_b ? 0 : p_a < p_b ? -1 : 1;
}; // vtable+0x14
// SYNTHETIC: LEGO1 0x1001ceb0
// MxPresenterList::`scalar deleting destructor'
};
// VTABLE: LEGO1 0x100d6488

View File

@@ -23,6 +23,9 @@ public:
friend class MxRegionCursor;
// SYNTHETIC: LEGO1 0x100c3670
// MxRegion::`scalar deleting destructor'
private:
MxRegionTopBottomList* m_list; // 0x08
MxRect32 m_rect; // 0x0c

View File

@@ -40,6 +40,9 @@ private:
class MxRegionLeftRightList : public MxPtrList<MxRegionLeftRight> {
public:
MxRegionLeftRightList() : MxPtrList<MxRegionLeftRight>(TRUE) {}
// SYNTHETIC: LEGO1 0x100c4e90
// MxRegionLeftRightList::`scalar deleting destructor'
};
// VTABLE: LEGO1 0x100dcbf8
@@ -95,6 +98,9 @@ private:
class MxRegionTopBottomList : public MxPtrList<MxRegionTopBottom> {
public:
MxRegionTopBottomList() : MxPtrList<MxRegionTopBottom>(TRUE) {}
// SYNTHETIC: LEGO1 0x100c3410
// MxRegionTopBottomList::`scalar deleting destructor'
};
// VTABLE: LEGO1 0x100dcb70

View File

@@ -33,6 +33,9 @@ public:
virtual void RealizePalette() override; // vtable+0x70
virtual void VTable0x88(); // vtable+0x88
// SYNTHETIC: LEGO1 0x100b3850
// MxSmkPresenter::`scalar deleting destructor'
private:
void Init();
void Destroy(MxBool p_fromDestructor);

View File

@@ -29,6 +29,9 @@ public:
// FUNCTION: LEGO1 0x1000d490
virtual void Destroy() override { Destroy(FALSE); }; // vtable+0x38
// SYNTHETIC: LEGO1 0x1000d5c0
// MxSoundPresenter::`scalar deleting destructor'
protected:
void Destroy(MxBool p_fromDestructor);
};

View File

@@ -26,6 +26,9 @@ public:
// FUNCTION: LEGO1 0x100b5920
static void Destroy(MxStreamChunk* p_chunk) { delete p_chunk; }
// SYNTHETIC: LEGO1 0x100b5a30
// MxStreamChunkList::`scalar deleting destructor'
};
// VTABLE: LEGO1 0x100dc510

View File

@@ -22,6 +22,9 @@ public:
inline MxS8 Compare(const MxString& p_str) const { return strcmp(m_data, p_str.m_data); }
inline const char* GetData() const { return m_data; }
// SYNTHETIC: LEGO1 0x100ae280
// MxString::`scalar deleting destructor'
private:
char* m_data; // 0x08
MxU16 m_length; // 0x0c

View File

@@ -13,6 +13,9 @@ class MxStringList : public MxList<MxString> {};
class MxStringListCursor : public MxListCursor<MxString> {
public:
MxStringListCursor(MxStringList* p_list) : MxListCursor<MxString>(p_list){};
// SYNTHETIC: LEGO1 0x100cb860
// MxStringList::`scalar deleting destructor'
};
// VTABLE: LEGO1 0x100dd010

View File

@@ -21,6 +21,9 @@ public:
inline MxBool IsRunning() { return m_running; }
// SYNTHETIC: LEGO1 0x100bf580
// MxThread::`scalar deleting destructor'
protected:
MxThread();
@@ -48,6 +51,9 @@ public:
MxResult Run() override;
// SYNTHETIC: LEGO1 0x100b8c20
// MxTickleThread::`scalar deleting destructor'
private:
MxS32 m_frequencyMS; // 0x1c
};

View File

@@ -44,6 +44,9 @@ public:
virtual void SetClientTickleInterval(MxCore* p_client, MxTime p_interval); // vtable+0x1c
virtual MxTime GetClientTickleInterval(MxCore* p_client); // vtable+0x20
// SYNTHETIC: LEGO1 0x1005a510
// MxTickleManager::`scalar deleting destructor'
private:
MxTickleClientPtrList m_clients; // 0x8
};

View File

@@ -22,6 +22,9 @@ public:
return g_lastTimeCalculated - this->m_startTime;
}
// SYNTHETIC: LEGO1 0x100ae0d0
// MxTimer::`scalar deleting destructor'
private:
MxLong m_startTime;
MxBool m_isRunning;

View File

@@ -18,6 +18,9 @@ public:
virtual MxS8 Compare(MxVariable*, MxVariable*) override; // vtable+0x14
virtual MxU32 Hash(MxVariable*) override; // vtable+0x18
// SYNTHETIC: LEGO1 0x100afdd0
// MxVariableTable::`scalar deleting destructor'
};
// VTABLE: LEGO1 0x100dc1b0
@@ -56,6 +59,9 @@ public:
// TEMPLATE: LEGO1 0x100b7680
// MxHashTableCursor<MxVariable *>::~MxHashTableCursor<MxVariable *>
// SYNTHETIC: LEGO1 0x100b76d0
// MxHashTableCursor<MxVariable *>::`scalar deleting destructor'
// TEMPLATE: LEGO1 0x100b7ab0
// MxHashTable<MxVariable *>::Resize

View File

@@ -44,6 +44,9 @@ public:
inline MxDisplaySurface* GetDisplaySurface() { return this->m_displaySurface; }
inline MxRegion* GetRegion() { return this->m_region; }
// SYNTHETIC: LEGO1 0x100be280
// MxVideoManager::`scalar deleting destructor'
protected:
MxVideoParam m_videoParam; // 0x2c
LPDIRECTDRAW m_pDirectDraw; // 0x50

View File

@@ -92,11 +92,17 @@ public:
virtual ~AlphaMask();
MxS32 IsHit(MxU32 p_x, MxU32 p_y);
// SYNTHETIC: LEGO1 0x100b2650
// MxVideoPresenter::AlphaMask::`scalar deleting destructor'
};
inline MxS32 PrepareRects(MxRect32& p_rectDest, MxRect32& p_rectSrc);
inline MxBitmap* GetBitmap() { return m_bitmap; }
// SYNTHETIC: LEGO1 0x1000c910
// MxVideoPresenter::`scalar deleting destructor'
private:
void Init();

View File

@@ -57,6 +57,9 @@ public:
MxU32 m_flags;
};
// SYNTHETIC: LEGO1 0x1000d810
// MxWavePresenter::`scalar deleting destructor'
protected:
void Destroy(MxBool p_fromDestructor);