Reccmp: Use symbol names in asm output (#433)

* Name substitution for reccmp asm output

* Decomp marker corrections

* Fix a few annotations

* Fix IslePathActor dtor

* Fix audio presenter

* Fix LegoEntity::Create

* Fix Pizza and related

* Fix path part

* Add missing annotations

* Add missing annotations

* Add more missing annotations

* Fix MxNotificationParam

* More fixes

* More fixes

* Add missing annotations

* Fixes

* More annotations

* More annotations

* More annotations

* More annotations

* Fixes and annotations

* Find imports and thunk functions

* Fix more bugs

* Add some markers for LEGO1 imports, fix SIZE comment

* Add more annotations

* Rename annotation

* Fix bugs and annotations

* Fix bug

* Order

* Update legoanimpresenter.h

* Re-enable print-rec-addr option

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
This commit is contained in:
MS
2024-01-14 16:28:46 -05:00
committed by GitHub
parent 7f7e6e37dd
commit 7e9d3bde65
73 changed files with 1357 additions and 427 deletions

View File

@@ -10,20 +10,20 @@ MxS32 g_mxcoreCount[101] = {0, -6643, -5643, -5058, -4643, -4321, -4058, -38
-358, -340, -321, -304, -286, -268, -251, -234, -217, -200, -184, -168, -152,
-136, -120, -104, -89, -74, -58, -43, -29, -14, 0};
// GLOBAL: LEGO1 0x10101eac
const char* g_parseExtraTokens = ":;";
// GLOBAL: LEGO1 0x10102048
const char* g_strACTION = "ACTION";
// GLOBAL: LEGO1 0x10101edc
const char* g_strWORLD = "WORLD";
// GLOBAL: LEGO1 0x10101f20
const char* g_strSOUND = "SOUND";
// GLOBAL: LEGO1 0x10101f58
// GLOBAL: LEGO1 0x1010209c
const char* g_strOBJECT = "OBJECT";
// GLOBAL: LEGO1 0x10102040
const char* g_strACTION = "ACTION";
// GLOBAL: LEGO1 0x101020b0
const char* g_strSOUND = "SOUND";
// GLOBAL: LEGO1 0x101020cc
const char* g_strVISIBILITY = "VISIBILITY";
// GLOBAL: LEGO1 0x101020d0
const char* g_strWORLD = "WORLD";
// GLOBAL: LEGO1 0x101020e4
const char* g_parseExtraTokens = ":;";

View File

@@ -20,4 +20,10 @@ public:
}
};
// SYNTHETIC: LEGO1 0x1000e940
// IsleActor::~IsleActor
// SYNTHETIC: LEGO1 0x1000e990
// IsleActor::`scalar deleting destructor'
#endif // ISLEACTOR_H

View File

@@ -13,6 +13,8 @@
class IslePathActor : public LegoPathActor {
public:
IslePathActor();
// FUNCTION: LEGO1 0x10002e10
inline virtual ~IslePathActor() override { IslePathActor::Destroy(TRUE); } // vtable+0x0
// FUNCTION: LEGO1 0x10002ea0
@@ -29,6 +31,7 @@ public:
}
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
// FUNCTION: LEGO1 0x10002e70
virtual MxU32 VTable0xcc() { return 0; } // vtable+0xcc
// FUNCTION: LEGO1 0x10002df0

View File

@@ -9,6 +9,7 @@
class LegoActor : public LegoEntity {
public:
LegoActor();
virtual ~LegoActor() override;
// FUNCTION: LEGO1 0x1002d210
inline virtual const char* ClassName() const override // vtable+0x0c
@@ -43,4 +44,7 @@ private:
MxU8 m_unk0x74; // 0x74
};
// SYNTHETIC: LEGO1 0x1002d300
// LegoActor::`scalar deleting destructor'
#endif // LEGOACTOR_H

View File

@@ -7,6 +7,7 @@
class LegoAnimPresenter : public MxVideoPresenter {
public:
LegoAnimPresenter();
virtual ~LegoAnimPresenter() override;
// FUNCTION: LEGO1 0x10068530
inline virtual const char* ClassName() const override // vtable+0x0c
@@ -25,4 +26,7 @@ private:
void Init();
};
// SYNTHETIC: LEGO1 0x10068650
// LegoAnimPresenter::`scalar deleting destructor'
#endif // LEGOANIMPRESENTER_H

View File

@@ -7,6 +7,7 @@
#include <stdlib.h>
// VTABLE: LEGO1 0x100d6aa0
// SIZE 0x20
class LegoEventNotificationParam : public MxNotificationParam {
public:
inline LegoEventNotificationParam() : MxNotificationParam(PARAM_NONE, NULL) {}
@@ -22,7 +23,6 @@ public:
{
}
virtual ~LegoEventNotificationParam() override {} // vtable+0x0 (scalar deleting destructor)
inline MxU8 GetKey() const { return m_key; }
protected:
@@ -33,4 +33,10 @@ protected:
MxU32 m_unk0x1c; // 0x1c
};
// SYNTHETIC: LEGO1 0x10028770
// LegoEventNotificationParam::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x100287e0
// LegoEventNotificationParam::~LegoEventNotificationParam
#endif // LEGOEVENTNOTIFICATIONPARAM_H

View File

@@ -8,6 +8,7 @@
class LegoHideAnimPresenter : public LegoLoopingAnimPresenter {
public:
LegoHideAnimPresenter();
virtual ~LegoHideAnimPresenter() override;
// FUNCTION: LEGO1 0x1006d880
inline const char* ClassName() const override // vtable+0xc
@@ -26,4 +27,7 @@ private:
void Init();
};
// SYNTHETIC: LEGO1 0x1006d9d0
// LegoHideAnimPresenter::`scalar deleting destructor'
#endif // LEGOHIDEANIMPRESENTER_H

View File

@@ -94,6 +94,9 @@ public:
// TEMPLATE: LEGO1 0x1005bb80
// MxCollection<LegoEventNotificationParam>::Compare
// TEMPLATE: LEGO1 0x1005bbe0
// MxCollection<LegoEventNotificationParam>::~MxCollection<LegoEventNotificationParam>
// TEMPLATE: LEGO1 0x1005bc30
// MxCollection<LegoEventNotificationParam>::Destroy
@@ -109,6 +112,9 @@ public:
// SYNTHETIC: LEGO1 0x1005beb0
// LegoEventQueue::`scalar deleting destructor'
// TEMPLATE: LEGO1 0x1005bf20
// MxQueue<LegoEventNotificationParam>::~MxQueue<LegoEventNotificationParam>
// SYNTHETIC: LEGO1 0x1005bf70
// MxQueue<LegoEventNotificationParam>::`scalar deleting destructor'

View File

@@ -21,4 +21,10 @@ public:
}
};
// SYNTHETIC: LEGO1 0x1006d000
// LegoLoopingAnimPresenter::~LegoLoopingAnimPresenter
// SYNTHETIC: LEGO1 0x1000f440
// LegoLoopingAnimPresenter::`scalar deleting destructor'
#endif // LEGOLOOPINGANIMPRESENTER_H

View File

@@ -18,7 +18,8 @@ class MxVariableTable;
class LegoStream {
public:
LegoStream() : m_mode(0) {}
inline virtual ~LegoStream(){};
// FUNCTION: LEGO1 0x10045ad0
inline virtual ~LegoStream() {}
virtual MxResult Read(void* p_buffer, MxU32 p_size) = 0;
virtual MxResult Write(const void* p_buffer, MxU32 p_size) = 0;
@@ -41,11 +42,14 @@ protected:
MxU8 m_mode;
};
// SYNTHETIC: LEGO1 0x10045b00
// LegoStream::`scalar deleting destructor'
// VTABLE: LEGO1 0x100db730
class LegoFileStream : public LegoStream {
public:
LegoFileStream();
virtual ~LegoFileStream();
virtual ~LegoFileStream() override;
MxResult Read(void* p_buffer, MxU32 p_size) override;
MxResult Write(const void* p_buffer, MxU32 p_size) override;
@@ -60,11 +64,13 @@ private:
FILE* m_hFile;
};
// SYNTHETIC: LEGO1 0x10099230
// LegoFileStream::`scalar deleting destructor'
// VTABLE: LEGO1 0x100db710
class LegoMemoryStream : public LegoStream {
public:
LegoMemoryStream(char* p_buffer);
~LegoMemoryStream() {}
MxResult Read(void* p_buffer, MxU32 p_size) override;
MxResult Write(const void* p_buffer, MxU32 p_size) override;
@@ -76,4 +82,10 @@ private:
MxU32 m_offset;
};
// SYNTHETIC: LEGO1 0x10045a80
// LegoMemoryStream::~LegoMemoryStream
// SYNTHETIC: LEGO1 0x100990f0
// LegoMemoryStream::`scalar deleting destructor'
#endif // LEGOSTREAM_H

View File

@@ -4,6 +4,7 @@
#include "decomp.h"
#include "mxstring.h"
// VTABLE: LEGO1 0x100d7c88
class LegoUnknown100d7c88 {
public:
~LegoUnknown100d7c88();

View File

@@ -27,9 +27,15 @@ public:
// TEMPLATE: LEGO1 0x1007b300
// MxCollection<LegoUnknown100d7c88 *>::Compare
// TEMPLATE: LEGO1 0x1007b310
// MxCollection<LegoUnknown100d7c88 *>::~MxCollection<LegoUnknown100d7c88 *>
// TEMPLATE: LEGO1 0x1007b360
// MxCollection<LegoUnknown100d7c88 *>::Destroy
// TEMPLATE: LEGO1 0x1007b370
// MxList<LegoUnknown100d7c88 *>::~MxList<LegoUnknown100d7c88 *>
// SYNTHETIC: LEGO1 0x1007b400
// LegoUnknown100d9d00::`scalar deleting destructor'

View File

@@ -6,6 +6,7 @@ DECOMP_SIZE_ASSERT(GifMap, 0x08);
DECOMP_SIZE_ASSERT(GifManagerBase, 0x14);
DECOMP_SIZE_ASSERT(GifManager, 0x30);
// GLOBAL: LEGO1 0x100f0100
GifMapEntry* g_unk0x100f0100;
// FUNCTION: LEGO1 0x10001cc0

View File

@@ -7,8 +7,13 @@
DECOMP_SIZE_ASSERT(LegoBackgroundColor, 0x30)
// GLOBAL: LEGO1 0x100f3fb0
const char* g_delimiter = "\t";
// GLOBAL: LEGO1 0x100f3fb4
const char* g_set = "set";
// GLOBAL: LEGO1 0x100f3fb8
const char* g_reset = "reset";
// FUNCTION: LEGO1 0x1003bfb0

View File

@@ -7,10 +7,10 @@
DECOMP_SIZE_ASSERT(LegoFullScreenMovie, 0x24)
// GLOBAL: LEGO1 0x100f3be8
// GLOBAL: LEGO1 0x100f3fbc
const char* g_strEnable = "enable";
// GLOBAL: LEGO1 0x100f3bf4
// GLOBAL: LEGO1 0x100f3fc0
const char* g_strDisable = "disable";
// FUNCTION: LEGO1 0x1003c500

View File

@@ -19,15 +19,15 @@
// There may be other members that come after.
DECOMP_SIZE_ASSERT(LegoGameState, 0x430)
// GLOBAL: LEGO1 0x100f3e24
const char* g_historyGSI = "History.gsi";
// GLOBAL: LEGO1 0x100f3e30
const char* g_playersGSI = "Players.gsi";
// GLOBAL: LEGO1 0x100f3e40
const char* g_fileExtensionGS = ".GS";
// GLOBAL: LEGO1 0x100f3e44
const char* g_playersGSI = "Players.gsi";
// GLOBAL: LEGO1 0x100f3e48
const char* g_historyGSI = "History.gsi";
// GLOBAL: LEGO1 0x100f3e58
ColorStringStruct g_colorSaveData[43] = {
{"c_dbbkfny0", "lego red"}, {"c_dbbkxly0", "lego white"}, {"c_chbasey0", "lego black"},
@@ -168,7 +168,7 @@ void LegoGameState::GetFileSavePath(MxString* p_outPath, MxULong p_slotn)
strcpy(path, m_savePath);
// Slot: "G0", "G1", ...
strcat(path, "G");
strcat(path, "\\G");
baseForSlot[0] += p_slotn;
strcat(path, baseForSlot);

View File

@@ -11,3 +11,9 @@ LegoActor::LegoActor()
m_unk0x10 = 0;
m_unk0x74 = 0;
}
// STUB: LEGO1 0x1002d320
LegoActor::~LegoActor()
{
// TODO
}

View File

@@ -46,7 +46,7 @@ MxResult LegoEntity::Create(MxDSAction& p_dsAction)
{
m_mxEntityId = p_dsAction.GetObjectId();
m_atom = p_dsAction.GetAtomId();
Init();
SetWorld();
return SUCCESS;
}

View File

@@ -17,6 +17,13 @@ MxResult IslePathActor::Create(MxDSAction& p_dsAction)
return MxEntity::Create(p_dsAction);
}
// FUNCTION: LEGO1 0x1001a2a0
void IslePathActor::Destroy(MxBool p_fromDestructor)
{
if (!p_fromDestructor)
LegoPathActor::Destroy(FALSE);
}
// STUB: LEGO1 0x1001a350
void IslePathActor::VTable0xe0()
{

View File

@@ -100,7 +100,7 @@ MxAtomId* g_testScript = NULL;
// GLOBAL: LEGO1 0x100f457c
MxAtomId* g_jukeboxwScript = NULL;
// GLOBAL: LEGO1 0x100f4580c
// GLOBAL: LEGO1 0x100f4580
MxAtomId* g_sndAnimScript = NULL;
// GLOBAL: LEGO1 0x100f4584
@@ -118,7 +118,7 @@ MxBool g_isWorldActive = TRUE;
// FUNCTION: LEGO1 0x10015700
LegoOmni* Lego()
{
return (LegoOmni*) MxOmni::GetInstance();
return LegoOmni::GetInstance();
}
// FUNCTION: LEGO1 0x10015710

View File

@@ -6,6 +6,12 @@ LegoAnimPresenter::LegoAnimPresenter()
// TODO
}
// STUB: LEGO1 0x10068670
LegoAnimPresenter::~LegoAnimPresenter()
{
// TODO
}
// STUB: LEGO1 0x100686f0
void LegoAnimPresenter::Init()
{

View File

@@ -6,6 +6,12 @@ LegoHideAnimPresenter::LegoHideAnimPresenter()
Init();
}
// STUB: LEGO1 0x1006d9f0
LegoHideAnimPresenter::~LegoHideAnimPresenter()
{
// TODO
}
// STUB: LEGO1 0x1006da50
void LegoHideAnimPresenter::Init()
{

View File

@@ -13,7 +13,7 @@ class Camera;
/////////////////////////////////////////////////////////////////////////////
// LegoView
// VTABLE: 0x100dc000
// VTABLE: LEGO1 0x100dc000
// SIZE 0x78
class LegoView : public TglSurface {
public:

View File

@@ -18,6 +18,10 @@
// LIBRARY: LEGO1 0x1008a1c0
// _free
// LIBRARY: ISLE 0x407ec0
// LIBRARY: LEGO1 0x1008b020
// ___CxxFrameHandler
// LIBRARY: ISLE 0x408220
// LIBRARY: LEGO1 0x1008b400
// _atol
@@ -33,6 +37,60 @@
// LIBRARY: LEGO1 0x1008b5a0
// _sprintf
// LIBRARY: LEGO1 0x1008b608
// __ftol
// LIBRARY: LEGO1 0x1008b630
// _srand
// LIBRARY: LEGO1 0x1008b680
// _strncmp
// LIBRARY: LEGO1 0x1008b730
// _fprintf
// LIBRARY: LEGO1 0x1008b780
// _fwrite
// LIBRARY: LEGO1 0x1008b950
// _fread
// LIBRARY: LEGO1 0x1008bbd0
// _fclose
// LIBRARY: LEGO1 0x1008bdd0
// _ftell
// LIBRARY: LEGO1 0x1008bff0
// _fopen
// LIBRARY: LEGO1 0x1008c010
// _strncpy
// LIBRARY: LEGO1 0x1008c110
// __strcmpi
// LIBRARY: LEGO1 0x1008c1e0
// __spawnl
// LIBRARY: LEGO1 0x1008c200
// _sscanf
// LIBRARY: LEGO1 0x1008c410
// _strlwr
// LIBRARY: LEGO1 0x1008c5c0
// _fseek
// LIBRARY: LEGO1 0x1008ca60
// _abort
// LIBRARY: LEGO1 0x100977c0
// _itoa
// LIBRARY: LEGO1 0x10097b10
// _strchr
// LIBRARY: ISLE 0x4081e0
// _srand
@@ -46,4 +104,22 @@
// LIBRARY: ISLE 0x409190
// __getptd
// LIBRARY: LEGO1 0x100d1ed0
// _strnicmp
// LIBRARY: LEGO1 0x100d1fd0
// _strupr
// LIBRARY: LEGO1 0x100d2130
// _vsprintf
// LIBRARY: LEGO1 0x100d21c2
// __CIpow
// LIBRARY: LEGO1 0x100d21f0
// _strstr
// LIBRARY: LEGO1 0x100d2270
// __beginthreadex
#endif

View File

@@ -158,11 +158,15 @@ struct MxDriver {
// List<MxDriver>::~List<MxDriver>
// Compiler-generated copy ctor
// Part of this function are two more synthetic sub-routines,
// LEGO1 0x1009c400 and LEGO1 0x1009c460
// SYNTHETIC: LEGO1 0x1009c290
// MxDriver::MxDriver
// SYNTHETIC: LEGO1 0x1009c400
// list<MxDevice,allocator<MxDevice> >::insert
// SYNTHETIC: LEGO1 0x1009c460
// list<MxDisplayMode,allocator<MxDisplayMode> >::insert
// SYNTHETIC: LEGO1 0x1009d450
// MxDriver::`scalar deleting destructor'
@@ -223,4 +227,7 @@ private:
// SIZE 0x14
class MxDeviceEnumerate100d9cc8 : public MxDeviceEnumerate {};
// SYNTHETIC: LEGO1 0x1007b590
// MxDeviceEnumerate100d9cc8::~MxDeviceEnumerate100d9cc8
#endif // MXDIRECT3D_H

View File

@@ -97,6 +97,9 @@ inline double MxStopWatch::ElapsedSeconds() const
return m_elapsedSeconds;
}
// SYNTHETIC: LEGO1 0x100a6fc0
// MxStopWatch::~MxStopWatch
//////////////////////////////////////////////////////////////////////////////
//
// MxFrequencyMeter
@@ -182,4 +185,7 @@ inline double MxFrequencyMeter::ElapsedSeconds() const
return m_stopWatch.ElapsedSeconds();
}
// SYNTHETIC: LEGO1 0x100abd10
// MxFrequencyMeter::~MxFrequencyMeter
#endif /* _MxStopWatch_h */

View File

@@ -115,13 +115,25 @@ private:
MxPresenter* m_unk0x14; // 0x14
};
// SYNTHETIC: LEGO1 0x100511e0
// MxActionNotificationParam::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x100513a0
// MxEndActionNotificationParam::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x10051410
// MxEndActionNotificationParam::~MxEndActionNotificationParam
// SYNTHETIC: LEGO1 0x100b0430
// MxStartActionNotificationParam::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x100b04a0
// MxStartActionNotificationParam::~MxStartActionNotificationParam
// SYNTHETIC: LEGO1 0x100b05c0
// MxType4NotificationParam::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x100b0630
// MxType4NotificationParam::~MxType4NotificationParam
#endif

View File

@@ -43,4 +43,50 @@ struct MxAtomIdCounterCompare {
class MxAtomIdCounterSet : public set<MxAtomIdCounter*, MxAtomIdCounterCompare> {};
// SYNTHETIC: LEGO1 0x100ad170
// MxAtomIdCounter::~MxAtomIdCounter
// clang-format off
// TEMPLATE: LEGO1 0x100ad480
// _Tree<MxAtomIdCounter *,MxAtomIdCounter *,set<MxAtomIdCounter *,MxAtomIdCounterCompare,allocator<MxAtomIdCounter *> >::_Kfn,MxAtomIdCounterCompare,allocator<MxAtomIdCounter *> >::iterator::_Dec
// clang-format on
// clang-format off
// TEMPLATE: LEGO1 0x100ad780
// _Tree<MxAtomIdCounter *,MxAtomIdCounter *,set<MxAtomIdCounter *,MxAtomIdCounterCompare,allocator<MxAtomIdCounter *> >::_Kfn,MxAtomIdCounterCompare,allocator<MxAtomIdCounter *> >::_Lbound
// clang-format on
// clang-format off
// TEMPLATE: LEGO1 0x100ad4d0
// _Tree<MxAtomIdCounter *,MxAtomIdCounter *,set<MxAtomIdCounter *,MxAtomIdCounterCompare,allocator<MxAtomIdCounter *> >::_Kfn,MxAtomIdCounterCompare,allocator<MxAtomIdCounter *> >::_Insert
// clang-format on
// clang-format off
// TEMPLATE: LEGO1 0x100af6d0
// _Tree<MxAtomIdCounter *,MxAtomIdCounter *,set<MxAtomIdCounter *,MxAtomIdCounterCompare,allocator<MxAtomIdCounter *> >::_Kfn,MxAtomIdCounterCompare,allocator<MxAtomIdCounter *> >::~_Tree<MxAtomIdCounter *,MxAtomIdCounter *,set<MxAtomIdCounter *,MxAtomIdCou
// clang-format on
// clang-format off
// TEMPLATE: LEGO1 0x100af7a0
// _Tree<MxAtomIdCounter *,MxAtomIdCounter *,set<MxAtomIdCounter *,MxAtomIdCounterCompare,allocator<MxAtomIdCounter *> >::_Kfn,MxAtomIdCounterCompare,allocator<MxAtomIdCounter *> >::iterator::_Inc
// clang-format on
// clang-format off
// TEMPLATE: LEGO1 0x100af7e0
// _Tree<MxAtomIdCounter *,MxAtomIdCounter *,set<MxAtomIdCounter *,MxAtomIdCounterCompare,allocator<MxAtomIdCounter *> >::_Kfn,MxAtomIdCounterCompare,allocator<MxAtomIdCounter *> >::erase
// clang-format on
// clang-format off
// TEMPLATE: LEGO1 0x100afc40
// _Tree<MxAtomIdCounter *,MxAtomIdCounter *,set<MxAtomIdCounter *,MxAtomIdCounterCompare,allocator<MxAtomIdCounter *> >::_Kfn,MxAtomIdCounterCompare,allocator<MxAtomIdCounter *> >::_Erase
// clang-format on
// clang-format off
// TEMPLATE: LEGO1 0x100afc80
// set<MxAtomIdCounter *,MxAtomIdCounterCompare,allocator<MxAtomIdCounter *> >::~set<MxAtomIdCounter *,MxAtomIdCounterCompare,allocator<MxAtomIdCounter *> >
// clang-format on
// TEMPLATE: LEGO1 0x100afe40
// Set<MxAtomIdCounter *,MxAtomIdCounterCompare>::~Set<MxAtomIdCounter *,MxAtomIdCounterCompare>
#endif // MXATOMIDCOUNTER_H

View File

@@ -33,4 +33,10 @@ protected:
MxS32 m_volume;
};
// SYNTHETIC: LEGO1 0x1000d370
// MxAudioPresenter::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1000d3e0
// MxAudioPresenter::~MxAudioPresenter
#endif // MXAUDIOPRESENTER_H

View File

@@ -46,6 +46,7 @@ public:
void FUN_100c8670(MxDSStreamingAction* p_streamingAction);
void InsertToList74(MxDSBuffer* p_buffer);
void FUN_100c7cb0(MxDSStreamingAction* p_action);
MxResult FUN_100c7890(MxDSStreamingAction* p_action);
private:
MxStreamListMxDSAction m_list0x64; // 0x64
@@ -58,7 +59,6 @@ private:
MxStreamListMxDSAction m_list0xb8; // 0xb8
MxBool m_unk0xc4; // 0xc4
MxResult FUN_100c7890(MxDSStreamingAction* p_action);
void FUN_100c7970();
void FUN_100c7ce0(MxDSBuffer* p_buffer);
MxResult FUN_100c7d10();
@@ -69,6 +69,9 @@ private:
void FUN_100c8720();
};
// TEMPLATE: LEGO1 0x100c14d0
// list<MxDSAction *,allocator<MxDSAction *> >::erase
// TEMPLATE: LEGO1 0x100c7330
// list<MxDSAction *,allocator<MxDSAction *> >::_Buynode

View File

@@ -20,9 +20,6 @@ public:
MxResult Run() override;
MxResult StartWithTarget(MxDiskStreamProvider* p_target);
// SYNTHETIC: LEGO1 0x100d10a0
// MxDiskStreamProviderThread::`scalar deleting destructor'
};
// VTABLE: LEGO1 0x100dd138
@@ -58,9 +55,6 @@ public:
virtual MxU32 GetLengthInDWords() override; // vtable+0x24
virtual MxU32* GetBufferForDWords() override; // vtable+0x28
// SYNTHETIC: LEGO1 0x100d1220
// MxDiskStreamProvider::`scalar deleting destructor'
private:
MxDiskStreamProviderThread m_thread; // 0x10
MxSemaphore m_busySemaphore; // 0x2c
@@ -70,4 +64,13 @@ private:
MxStreamListMxDSAction m_list; // 0x54
};
// SYNTHETIC: LEGO1 0x100d10a0
// MxDiskStreamProviderThread::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x100d1110
// MxDiskStreamProviderThread::~MxDiskStreamProviderThread
// SYNTHETIC: LEGO1 0x100d1220
// MxDiskStreamProvider::`scalar deleting destructor'
#endif // MXDISKSTREAMPROVIDER_H

View File

@@ -43,6 +43,7 @@ public:
return !strcmp(p_name, MxDSAction::ClassName()) || MxDSObject::IsA(p_name);
}
virtual undefined4 VTable0x14() override; // vtable+14;
virtual MxU32 GetSizeOnDisk() override; // vtable+18;
virtual void Deserialize(MxU8** p_source, MxS16 p_unk0x24) override; // vtable+1c;
virtual MxLong GetDuration(); // vtable+24;

View File

@@ -44,6 +44,9 @@ public:
// TEMPLATE: LEGO1 0x100c9cc0
// MxCollection<MxDSAction *>::Compare
// TEMPLATE: LEGO1 0x100c9cd0
// MxCollection<MxDSAction *>::~MxCollection<MxDSAction *>
// TEMPLATE: LEGO1 0x100c9d20
// MxCollection<MxDSAction *>::Destroy

View File

@@ -3,6 +3,7 @@
#include "mxdsmediaaction.h"
// VTABLE: LEGO1 0x100dce18
class MxDSEvent : public MxDSMediaAction {
public:
MxDSEvent();

View File

@@ -11,6 +11,9 @@ class MxDSSource : public MxCore {
public:
MxDSSource() : m_lengthInDWords(0), m_pBuffer(NULL), m_position(-1) {}
// FUNCTION: LEGO1 0x100bff60
virtual ~MxDSSource() override { delete[] m_pBuffer; }
// FUNCTION: LEGO1 0x100c0010
inline virtual const char* ClassName() const override // vtable+0x0c
{
@@ -41,4 +44,7 @@ protected:
MxLong m_position; // 0x10
};
// SYNTHETIC: LEGO1 0x100c00a0
// MxDSSource::`scalar deleting destructor'
#endif // MXDSSOURCE_H

View File

@@ -52,4 +52,34 @@ private:
void FlushPending(MxCore* p_listener);
};
// TEMPLATE: LEGO1 0x100ac320
// list<unsigned int,allocator<unsigned int> >::~list<unsigned int,allocator<unsigned int> >
// FUNCTION: LEGO1 0x100ac3b0
// MxIdList::~MxIdList
// TEMPLATE: LEGO1 0x100ac400
// List<unsigned int>::~List<unsigned int>
// TEMPLATE: LEGO1 0x100ac540
// List<MxNotification *>::~List<MxNotification *>
// TEMPLATE: LEGO1 0x100ac590
// list<MxNotification *,allocator<MxNotification *> >::~list<MxNotification *,allocator<MxNotification *> >
// TEMPLATE: LEGO1 0x100acbf0
// list<MxNotification *,allocator<MxNotification *> >::begin
// TEMPLATE: LEGO1 0x100acc00
// list<MxNotification *,allocator<MxNotification *> >::insert
// TEMPLATE: LEGO1 0x100acc50
// list<MxNotification *,allocator<MxNotification *> >::erase
// TEMPLATE: LEGO1 0x100acca0
// list<MxNotification *,allocator<MxNotification *> >::_Buynode
// SYNTHETIC: LEGO1 0x100accd0
// MxNotificationPtrList::~MxNotificationPtrList
#endif // MXNOTIFICATIONMANAGER_H

View File

@@ -34,14 +34,13 @@ enum NotificationId {
};
// VTABLE: LEGO1 0x100d56e0
// SIZE 0x0c
class MxNotificationParam : public MxParam {
public:
inline MxNotificationParam(NotificationId p_type, MxCore* p_sender) : MxParam(), m_type(p_type), m_sender(p_sender)
{
}
virtual ~MxNotificationParam() override {}
// FUNCTION: LEGO1 0x10010390
virtual MxNotificationParam* Clone() { return new MxNotificationParam(m_type, m_sender); }; // vtable+0x4
@@ -50,8 +49,14 @@ public:
inline NotificationId GetType() const { return m_type; }
protected:
NotificationId m_type; // 0x4
MxCore* m_sender; // 0x8
NotificationId m_type; // 0x04
MxCore* m_sender; // 0x08
};
// SYNTHETIC: LEGO1 0x10010430
// MxNotificationParam::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x100104a0
// MxNotificationParam::~MxNotificationParam
#endif // MXNOTIFICATIONPARAM_H

View File

@@ -8,6 +8,7 @@
#include <windows.h>
// VTABLE: LEGO1 0x100dc218
class MxOmniCreateParam : public MxParam {
public:
__declspec(dllexport) MxOmniCreateParam(
@@ -30,4 +31,7 @@ private:
MxOmniCreateFlags m_createFlags;
};
// SYNTHETIC: ISLE 0x4014b0
// MxOmniCreateParam::~MxOmniCreateParam
#endif // MXOMNICREATEPARAM_H

View File

@@ -1,9 +1,18 @@
#ifndef MXPARAM_H
#define MXPARAM_H
// VTABLE: ISLE 0x40f018
// VTABLE: LEGO1 0x100d56e8
// SIZE 0x04
class MxParam {
public:
// FUNCTION: ISLE 0x401530
// FUNCTION: LEGO1 0x10010360
virtual ~MxParam() {}
};
// SYNTHETIC: ISLE 0x401540
// SYNTHETIC: LEGO1 0x10010370
// MxParam::`scalar deleting destructor'
#endif // MXPARAM_H

View File

@@ -53,6 +53,9 @@ public:
// TEMPLATE: LEGO1 0x1001ce20
// MxList<MxPresenter *>::~MxList<MxPresenter *>
// TEMPLATE: LEGO1 0x1001cf20
// MxPtrList<MxPresenter>::~MxPtrList<MxPresenter>
// SYNTHETIC: LEGO1 0x1001cf70
// MxCollection<MxPresenter *>::`scalar deleting destructor'

View File

@@ -53,6 +53,9 @@ public:
// SYNTHETIC: LEGO1 0x100b3d80
// MxRectList::`scalar deleting destructor'
// TEMPLATE: LEGO1 0x100b3df0
// MxPtrList<MxRect32>::~MxPtrList<MxRect32>
// SYNTHETIC: LEGO1 0x100b3e40
// MxCollection<MxRect32 *>::`scalar deleting destructor'

View File

@@ -116,12 +116,21 @@ public:
// TEMPLATE: LEGO1 0x100c32e0
// MxCollection<MxRegionTopBottom *>::Compare
// TEMPLATE: LEGO1 0x100c32f0
// MxCollection<MxRegionTopBottom *>::~MxCollection<MxRegionTopBottom *>
// TEMPLATE: LEGO1 0x100c3340
// MxCollection<MxRegionTopBottom *>::Destroy
// TEMPLATE: LEGO1 0x100c3350
// MxList<MxRegionTopBottom *>::~MxList<MxRegionTopBottom *>
// TEMPLATE: LEGO1 0x100c33e0
// MxPtrList<MxRegionTopBottom>::Destroy
// TEMPLATE: LEGO1 0x100c3480
// MxPtrList<MxRegionTopBottom>::~MxPtrList<MxRegionTopBottom>
// SYNTHETIC: LEGO1 0x100c34d0
// MxCollection<MxRegionTopBottom *>::`scalar deleting destructor'
@@ -167,9 +176,18 @@ public:
// TEMPLATE: LEGO1 0x100c4d80
// MxCollection<MxRegionLeftRight *>::Compare
// TEMPLATE: LEGO1 0x100c4d90
// MxCollection<MxRegionLeftRight *>::~MxCollection<MxRegionLeftRight *>
// TEMPLATE: LEGO1 0x100c4de0
// MxCollection<MxRegionLeftRight *>::Destroy
// TEMPLATE: LEGO1 0x100c4df0
// MxList<MxRegionLeftRight *>::~MxList<MxRegionLeftRight *>
// TEMPLATE: LEGO1 0x100c4f00
// MxPtrList<MxRegionLeftRight>::~MxPtrList<MxRegionLeftRight>
// SYNTHETIC: LEGO1 0x100c4f50
// MxCollection<MxRegionLeftRight *>::`scalar deleting destructor'

View File

@@ -5,12 +5,13 @@
#include <windows.h>
// VTABLE: LEGO1 0x100dccf0
// SIZE 0x08
class MxSemaphore {
public:
MxSemaphore();
// Inlined only, no offset
// FUNCTION: LEGO1 0x100c87e0
~MxSemaphore() { CloseHandle(m_hSemaphore); }
virtual MxResult Init(MxU32 p_initialCount, MxU32 p_maxCount);

View File

@@ -41,6 +41,9 @@ public:
// TEMPLATE: LEGO1 0x100b5930
// MxCollection<MxStreamChunk *>::Compare
// TEMPLATE: LEGO1 0x100b5940
// MxCollection<MxStreamChunk *>::~MxCollection<MxStreamChunk *>
// TEMPLATE: LEGO1 0x100b5990
// MxCollection<MxStreamChunk *>::Destroy

View File

@@ -24,6 +24,7 @@ public:
}
}
// FUNCTION: LEGO1 0x100b9110
~MxStreamerSubClass1() { delete[] m_buffer; }
undefined4 GetSize() const { return m_size; }
@@ -48,6 +49,7 @@ public:
inline MxStreamerSubClass3() : MxStreamerSubClass1(0x80) {}
};
// VTABLE: LEGO1 0x100dc760
class MxStreamerNotification : public MxNotificationParam {
public:
inline MxStreamerNotification(NotificationId p_type, MxCore* p_sender, MxStreamController* p_ctrlr)
@@ -56,8 +58,6 @@ public:
m_controller = p_ctrlr;
}
virtual ~MxStreamerNotification() override {}
virtual MxNotificationParam* Clone() override;
MxStreamController* GetController() { return m_controller; }
@@ -113,7 +113,21 @@ private:
MxStreamerSubClass3 m_subclass2; // 0x20
};
// clang-format off
// TEMPLATE: LEGO1 0x100b9090
// list<MxStreamController *,allocator<MxStreamController *> >::~list<MxStreamController *,allocator<MxStreamController *> >
// clang-format on
// SYNTHETIC: LEGO1 0x100b9120
// MxStreamer::`scalar deleting destructor'
// TEMPLATE: LEGO1 0x100b9140
// List<MxStreamController *>::~List<MxStreamController *>
// SYNTHETIC: LEGO1 0x100b97b0
// MxStreamerNotification::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x100b9820
// MxStreamerNotification::~MxStreamerNotification
#endif // MXSTREAMER_H

View File

@@ -41,4 +41,7 @@ protected:
// SYNTHETIC: LEGO1 0x100d0870
// MxStreamProvider::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x100d08e0
// MxStreamProvider::~MxStreamProvider
#endif // MXSTREAMPROVIDER_H

View File

@@ -15,18 +15,33 @@ public:
MxStringListCursor(MxStringList* p_list) : MxListCursor<MxString>(p_list){};
};
// VTABLE: LEGO1 0x100dd010
// class MxCollection<MxString>
// VTABLE: LEGO1 0x100dd028
// class MxList<MxString>
// VTABLE: LEGO1 0x100dd070
// class MxListCursor<MxString>
// TEMPLATE: LEGO1 0x100cb3c0
// MxCollection<MxString>::Compare
// TEMPLATE: LEGO1 0x100cb420
// MxCollection<MxString>::~MxCollection<MxString>
// TEMPLATE: LEGO1 0x100cb470
// MxCollection<MxString>::Destroy
// TEMPLATE: LEGO1 0x100cb4c0
// MxList<MxString>::~MxList<MxString>
// SYNTHETIC: LEGO1 0x100cb590
// MxCollection<MxString>::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x100cb600
// MxList<MxString>::`scalar deleting destructor'
// TEMPLATE: LEGO1 0x100cbb40
// MxList<MxString>::Append

View File

@@ -50,4 +50,10 @@ private:
#define TICKLE_MANAGER_NOT_FOUND 0x80000000
// TEMPLATE: LEGO1 0x1005a4a0
// list<MxTickleClient *,allocator<MxTickleClient *> >::~list<MxTickleClient *,allocator<MxTickleClient *> >
// TEMPLATE: LEGO1 0x1005a530
// List<MxTickleClient *>::~List<MxTickleClient *>
#endif // MXTICKLEMANAGER_H

View File

@@ -33,8 +33,11 @@ public:
inline const MxString* GetKey() const { return &m_key; }
protected:
MxString m_key;
MxString m_value;
MxString m_key; // 0x04
MxString m_value; // 0x14
};
// SYNTHETIC: LEGO1 0x1003bf40
// MxVariable::~MxVariable
#endif // MXVARIABLE_H

View File

@@ -26,6 +26,9 @@ public:
// VTABLE: LEGO1 0x100dc1e8
// class MxHashTable<MxVariable *>
// VTABLE: LEGO1 0x100dc680
// class MxHashTableCursor<MxVariable *>
// TEMPLATE: LEGO1 0x100afcd0
// MxCollection<MxVariable *>::Compare
@@ -50,6 +53,9 @@ public:
// SYNTHETIC: LEGO1 0x100b0ca0
// MxHashTable<MxVariable *>::`scalar deleting destructor'
// TEMPLATE: LEGO1 0x100b7680
// MxHashTableCursor<MxVariable *>::~MxHashTableCursor<MxVariable *>
// TEMPLATE: LEGO1 0x100b7ab0
// MxHashTable<MxVariable *>::Resize

View File

@@ -80,6 +80,7 @@ public:
// FUNCTION: LEGO1 0x1000c800
virtual MxS32 GetHeight() { return m_alpha ? m_alpha->m_height : m_bitmap->GetBmiHeightAbs(); }; // vtable+0x84
// VTABLE: LEGO1 0x100dc2bc
// SIZE 0xc
struct AlphaMask {
MxU8* m_bitmask;

View File

@@ -88,6 +88,12 @@ void MxDSAction::CopyFrom(MxDSAction& p_dsAction)
this->m_unk0x90 = p_dsAction.m_unk0x90;
}
// FUNCTION: LEGO1 0x100adbd0
undefined4 MxDSAction::VTable0x14()
{
return MxDSObject::VTable0x14();
}
// FUNCTION: LEGO1 0x100adbe0
MxU32 MxDSAction::GetSizeOnDisk()
{

View File

@@ -78,7 +78,7 @@ void MxEventPresenter::ReadyTickle()
// FUNCTION: LEGO1 0x100c2eb0
void MxEventPresenter::StartingTickle()
{
MxStreamChunk* chunk = NextChunk();
MxStreamChunk* chunk = CurrentChunk();
if (chunk && m_action->GetElapsedTime() >= chunk->GetTime())
ProgressTickleState(TickleState_Streaming);

View File

@@ -215,18 +215,20 @@ void MxDiskStreamProvider::PerformWork()
}
}
MxDSBuffer* buffer;
{
MxAutoLocker lock(&m_criticalSection);
if (!m_list.PopFrontStreamingAction(streamingAction))
return;
goto done;
}
if (streamingAction->GetUnknowna0()->GetWriteOffset() < 0x20000) {
g_unk0x10102878--;
}
MxDSBuffer* buffer = streamingAction->GetUnknowna0();
buffer = streamingAction->GetUnknowna0();
if (m_pFile->GetPosition() == streamingAction->GetBufferOffset() ||
m_pFile->Seek(streamingAction->GetBufferOffset(), 0) == 0) {
@@ -251,6 +253,7 @@ void MxDiskStreamProvider::PerformWork()
}
}
done:
if (streamingAction) {
controller->FUN_100c8670(streamingAction);
}
@@ -349,6 +352,8 @@ MxResult MxDiskStreamProvider::FUN_100d1b20(MxDSStreamingAction* p_action)
p_action->SetUnknown94(unk0x14);
p_action->SetBufferOffset(p_action->GetUnknowna0()->GetUnknown14());
delete p_action->GetUnknowna0();
p_action->SetUnknowna0(NULL);
((MxDiskStreamController*) m_pLookup)->FUN_100c7890(p_action);
return SUCCESS;
}
else {

View File

@@ -47,12 +47,12 @@ MxRAMStreamProvider::~MxRAMStreamProvider()
m_bufferSize = 0;
m_fileSize = 0;
free(m_pBufferOfFileSize);
delete[] m_pBufferOfFileSize;
m_pBufferOfFileSize = NULL;
m_lengthInDWords = 0;
free(m_bufferForDWords);
delete[] m_bufferForDWords;
m_bufferForDWords = NULL;
}

View File

@@ -7,6 +7,7 @@
DECOMP_SIZE_ASSERT(MxDisplaySurface, 0xac);
// GLOBAL: LEGO1 0x1010215c
MxU32 g_unk0x1010215c = 0;
// FUNCTION: LEGO1 0x100ba500

View File

@@ -10,7 +10,7 @@
DECOMP_SIZE_ASSERT(MxStillPresenter, 0x6c);
// GLOBAL: LEGO1 0x10101eb0
// GLOBAL: LEGO1 0x101020e0
const char* g_strBmpIsmap = "BMP_ISMAP";
// FUNCTION: LEGO1 0x100b9c70
@@ -164,7 +164,7 @@ void MxStillPresenter::VTable0x88(MxS32 p_x, MxS32 p_y)
// FUNCTION: LEGO1 0x100ba140
void MxStillPresenter::Enable(MxBool p_enable)
{
MxVideoPresenter::Enable(p_enable);
MxPresenter::Enable(p_enable);
if (MVideoManager() && (m_alpha || m_bitmap)) {
// MxRect32 rect(m_location, MxSize32(GetWidth(), GetHeight()));

View File

@@ -32,9 +32,6 @@ public:
const float* GetWorldDirection() const { return m_local2world[2]; }
const float* GetWorldUp() const { return m_local2world[1]; }
// SYNTHETIC: LEGO1 0x100a4630
// OrientableROI::`scalar deleting destructor'
protected:
MxMatrix m_local2world; // 0x10
BoundingBox m_world_bounding_box; // 0x58
@@ -52,4 +49,10 @@ protected:
undefined4 m_unk0xd8; // 0xd8
};
// SYNTHETIC: LEGO1 0x100a4630
// OrientableROI::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x100aa2f0
// OrientableROI::~OrientableROI
#endif // ORIENTABLEROI_H

View File

@@ -30,8 +30,7 @@ void RealtimeView::SetPartsThreshold(float p_threshold)
// FUNCTION: LEGO1 0x100a5e00
float RealtimeView::GetUserMaxLOD()
{
// TODO
return 0;
return g_userMaxLod;
}
// FUNCTION: LEGO1 0x100a5e10

View File

@@ -108,4 +108,8 @@ protected:
LODListBase* m_lods; // 0x8
undefined m_unk0xc; // 0xc
};
// SYNTHETIC: LEGO1 0x100a5d50
// ROI::~ROI
#endif // ROI_H

View File

@@ -36,7 +36,7 @@ class MeshImpl;
class TextureImpl;
class UnkImpl;
// VTABLE 0x100db910
// VTABLE: LEGO1 0x100db910
class RendererImpl : public Renderer {
public:
RendererImpl() : m_data(0) {}
@@ -105,7 +105,7 @@ void RendererImpl::Destroy()
}
}
// VTABLE 0x100db988
// VTABLE: LEGO1 0x100db988
class DeviceImpl : public Device {
public:
DeviceImpl() : m_data(0) {}
@@ -142,7 +142,7 @@ private:
IDirect3DRMDevice2* m_data;
};
// VTABLE 0x100db9e8
// VTABLE: LEGO1 0x100db9e8
class ViewImpl : public View {
public:
ViewImpl() : m_data(0) {}
@@ -194,7 +194,7 @@ private:
IDirect3DRMViewport* m_data;
};
// VTABLE 0x100dbad8
// VTABLE: LEGO1 0x100dbad8
class CameraImpl : public Camera {
public:
CameraImpl() : m_data(0) {}
@@ -219,7 +219,7 @@ private:
IDirect3DRMFrame2* m_data;
};
// VTABLE 0x100dbaf8
// VTABLE: LEGO1 0x100dbaf8
class LightImpl : public Light {
public:
LightImpl() : m_data(0) {}
@@ -245,7 +245,7 @@ private:
IDirect3DRMFrame2* m_data;
};
// VTABLE 0x100dbb88
// VTABLE: LEGO1 0x100dbb88
class MeshImpl : public Mesh {
public:
MeshImpl() : m_data(0) {}
@@ -285,7 +285,7 @@ private:
MeshData* m_data;
};
// VTABLE 0x100dba68
// VTABLE: LEGO1 0x100dba68
class GroupImpl : public Group {
public:
GroupImpl() : m_data(0) {}
@@ -324,7 +324,7 @@ private:
IDirect3DRMFrame2* m_data;
};
// VTABLE 0x100dbb18
// VTABLE: LEGO1 0x100dbb18
class UnkImpl : public Unk {
public:
UnkImpl() : m_data(0) {}
@@ -384,7 +384,7 @@ public:
int m_texelsAllocatedByClient;
};
// VTABLE 0x100dbb48
// VTABLE: LEGO1 0x100dbb48
class TextureImpl : public Texture {
public:
TextureImpl() : m_data(0) {}

View File

@@ -98,7 +98,7 @@ class Mesh;
class Texture;
class Unk;
// VTABLE 0x100db980
// VTABLE: LEGO1 0x100db980
class Object {
public:
virtual ~Object() {}
@@ -106,7 +106,7 @@ public:
virtual void* ImplementationDataPtr() = 0;
};
// VTABLE 0x100db948
// VTABLE: LEGO1 0x100db948
class Renderer : public Object {
public:
// vtable+0x08
@@ -146,7 +146,7 @@ public:
Renderer* CreateRenderer();
// VTABLE 0x100db9b8
// VTABLE: LEGO1 0x100db9b8
class Device : public Object {
public:
// vtable+0x08
@@ -165,7 +165,7 @@ public:
virtual void InitFromWindowsDevice(Device*) = 0;
};
// VTABLE 0x100dba28
// VTABLE: LEGO1 0x100dba28
class View : public Object {
public:
virtual Result Add(const Light*) = 0;
@@ -219,20 +219,20 @@ public:
) = 0;
};
// VTABLE 0x100dbae8
// VTABLE: LEGO1 0x100dbae8
class Camera : public Object {
public:
virtual Result SetTransformation(FloatMatrix4&) = 0;
};
// VTABLE 0x100dbb08
// VTABLE: LEGO1 0x100dbb08
class Light : public Object {
public:
virtual Result SetTransformation(FloatMatrix4&) = 0;
virtual Result SetColor(float r, float g, float b) = 0;
};
// VTABLE 0x100dbbb0
// VTABLE: LEGO1 0x100dbbb0
class Mesh : public Object {
public:
virtual Result SetColor(float r, float g, float b, float a) = 0;
@@ -249,7 +249,7 @@ public:
virtual Mesh* ShallowClone(Unk*) = 0;
};
// VTABLE 0x100dbaa0
// VTABLE: LEGO1 0x100dbaa0
class Group : public Object {
public:
virtual Result SetTransformation(FloatMatrix4&) = 0;
@@ -271,7 +271,7 @@ public:
// Don't know what this is. Seems like another Tgl object which
// was not in the leaked Tgl code. My suspicion is that it's
// some kind of builder class for creating meshes.
// VTABLE 0x100dbb30
// VTABLE: LEGO1 0x100dbb30
class Unk : public Object {
public:
virtual Result SetMeshData(
@@ -287,7 +287,7 @@ public:
virtual Unk* Clone() = 0;
};
// VTABLE 0x100dbb68
// VTABLE: LEGO1 0x100dbb68
class Texture : public Object {
public:
// vtable+0x08

View File

@@ -93,6 +93,22 @@ private:
ViewLODListMap m_map;
};
// FUNCTION: LEGO1 0x1001dde0
// _Lockit::~_Lockit
// clang-format off
// TEMPLATE: LEGO1 0x100a7890
// _Tree<char const *,pair<char const * const,ViewLODList *>,map<char const *,ViewLODList *,ROINameComparator,allocator<ViewLODList *> >::_Kfn,ROINameComparator,allocator<ViewLODList *> >::~_Tree<char const *,pair<char const * const,ViewLODList *>,map<char c
// clang-format on
// clang-format off
// TEMPLATE: LEGO1 0x100a80a0
// map<char const *,ViewLODList *,ROINameComparator,allocator<ViewLODList *> >::~map<char const *,ViewLODList *,ROINameComparator,allocator<ViewLODList *> >
// clang-format on
// TEMPLATE: LEGO1 0x100a70e0
// Map<char const *,ViewLODList *,ROINameComparator>::~Map<char const *,ViewLODList *,ROINameComparator>
//////////////////////////////////////////////////////////////////////////////
//
// ViewLODList implementation