Things I found in that Lego Island pre-alpha binary

Documenting discoveries found in pre-release development material
Post Reply
TheCDInYourComputer
Posts: 1
Joined: Fri Nov 03, 2023 10:29 pm

Things I found in that Lego Island pre-alpha binary

Post by TheCDInYourComputer »

I don't know if this is the right place to put this on the forum... but I guess it works. So, this is a list of things I found in the pre-alpha build.

1. Main.exe
Main is a debug version of Mainr (the release executable for Main) which contains some interesting info in it.

First thing I found in Main was some official functions being imported from Lego1d (the debug version DLL for Lego1). Listed below:

Code: Select all

CreateStreamObject(MxDSFile *,short)
LegoInputManager::QueueEvent(short,uchar,long,long,uchar)
LegoInputManager::Register(MxCore *)
LegoInputManager::UnRegister(MxCore *)
LegoNavController::GetDefaults(int *,float *,float *,float *,float *,float *,float *,float *,float *,float *,uchar *)
LegoNavController::SetDefaults(int,float,float,float,float,float,float,float,float,float,uchar)
LegoOmni::CreateInstance(void)
LegoOmni::GetInstance(void)
MxBitmap::CreatePalette(void)
MxBitmap::MxBitmap(void)
MxBitmap::Read(char const *)
MxBitmap::~MxBitmap(void)
MxCriticalSection::SetDoMutex(void)
MxDirect3D::GetDeviceInfo(MxDirect3D::Direct3DDeviceInfo *)
MxDirectDraw::FlipToGDISurface(void)
MxDirectDraw::GetPrimaryBitDepth(void)
MxDSAction::MxDSAction(void)
MxDSAction::~MxDSAction(void)
MxDSFile::Close(void)
MxDSFile::MxDSFile(char const *,ulong)
MxDSFile::Open(ulong)
MxDSFile::Read(uchar *,ulong)
MxDSFile::Seek(long,int)
MxDSObject::SetObjectName(char const *)
MxDSObject::SetSourceName(char const *)
MXIOINFO::~MXIOINFO(void)
MxOmniCreateFlags::MxOmniCreateFlags(void)
MxOmniCreateParam::MxOmniCreateParam(char const *,HWND__ *,MxVideoParam &,MxOmniCreateFlags)
MxOmni::DestroyInstance(void)
MxOmni::GetCD(void)
MxOmni::GetHD(void)
MxOmni::SetCD(char const *)
MxOmni::SetHD(char const *)
MxPalette::operator==(MxPalette &)
MxPresenter::MxPresenter(void)
MxPresenter::~MxPresenter(void)
MxStreamer::Open(char const *,ushort)
MxString::MxString(MxString const &)
MxString::operator=(char const *)
MxString::~MxString(void)
MxTimer::GetTime(void)
MxVariableTable::GetVariable(char const *)
MxVariableTable::SetVariable(char const *,char const *)
MxVideoManager::InvalidateRect(MxRect32 &)
MxVideoParamFlags::MxVideoParamFlags(void)
MxVideoParam::MxVideoParam(MxRect32 &,MxPalette *,ulong,MxVideoParamFlags &)
MxVideoParam::MxVideoParam(void)
PickEntity(long,long)
RealtimeView::GetPartsThreshold(void)
RealtimeView::GetUserMaxLOD(void)
RealtimeView::SetPartsThreshold(float)
RealtimeView::SetUserMaxLOD(float)
SetOmniUserMessage(void (*)(char const *,int))
There's also a file assertion for a "Main.cpp". The full path is "D:\Lego\Sources\Main\Main.cpp".
Finally, there's a PDB linked to this executable. We don't have it, but it was originally located at "D:\Lego\Sources\Main\WinDebug\Main.pdb"

2. Lego1d.dll
This is arguably the best part of the whole pre-alpha build. Assertions with some file names for Lego classes, and also for the Omni library! Also, some class names and function names are intact.

First, there's no PDB that we officially have (unfortunately) but there is one linked to the file originally located at "D:\Lego\LegoOmni\Src\Dll\WinDebug\Lego1d.pdb".

Next, there's quite a bit of file assertions. Mainly they are related to LegoOmni, Lego source itself, Omni, TGL, ViewManager, and Realtime stuff. All of the unique assertions below:
\\Lego\\LegoOmni\\Src\\Video\\LegoScreenTranPresenter.cpp
\\Lego\\LegoOmni\\Src\\Common\\LegoObjectFactory.cpp
\\Lego\\LegoOmni\\Src\\Build\\LegoCarBuildPresenter.cpp
\\Lego\\LegoOmni\\Src\\Video\\LegoPhonemePresenter.cpp
\\Lego\\LegoOmni\\Src\\Control\\LegoControlManager.cpp
\\Lego\\LegoOmni\\Src\\Main\\LegoMain.cpp
\\Lego\\LegoOmni\\Src\\Control\\LegoControl.cpp
\\Lego\\LegoOmni\\Src\\Entity\\LegoActorPresenter.cpp
D:\\Lego\\LegoOmni\\Src\\Video\\LegoVideoManager.cpp
\\Lego\\LegoOmni\\Src\\Build\\LegoCarBuild.cpp
\\Lego\\LegoOmni\\Src\\Paths\\LegoPathPresenter.cpp
\\Lego\\legoOmni\\Src\\Input\\LegoInputManager.cpp
\\Lego\\legoOmni\\Src\\Common\\LegoActionControlPresenter.cpp
\\Lego\\LegoOmni\\Src\\Build\\LegoBuild.cpp
\\Lego\\LegoOmni\\Src\\Paths\\LegoPathStruct.cpp
\\Lego\\LegoOmni\\Src\\Video\\LegoAnimPresenter.cpp
\\Lego\\LegoOmni\\Src\\Entity\\LegoEntityPresenter.cpp
\\Omni\\Src\\System\\MxCriticalSection.cpp
\\Omni\\Src\\Stream\\MxDSSubscriber.cpp
\\Omni\\Src\\Main\\MxMain.cpp
\\Omni\\Src\\Video\\MxVideoManager.cpp
\\Omni\\Src\\Action\\MxDSAction.cpp
\\Omni\\Src\\Common\\MxTickleManager.cpp
\\Omni\\Src\\Notify\\MxNotificationManager.cpp
\\Omni\\Src\\Common\\MxPresentationManager.cpp
\\Omni\\Src\\Stream\\MxStreamer.cpp
\\Omni\\Src\\Stream\\MxStreamController.cpp
\\Omni\\Src\\Event\\MxEventManager.cpp
\\Omni\\Src\\Audio\\MxMusicManager.cpp
\\Omni\\Src\\Audio\\MxSoundManager.cpp
\\Omni\\Src\\Video\\MxDisplaySurface.cpp
\\Omni\\Src\\Event\\MxEventPresenter.cpp
\\Omni\\Src\\Action\\MxDSMultiAction.cpp
\\Omni\\Src\\Stream\\MxDiskStreamController.cpp
\\Omni\\Src\\Stream\\MxRAMStreamController.cpp
\\Omni\\Src\\Stream\\MxDSBuffer.cpp
\\Omni\\Src\\Stream\\MxDiskStreamProvider.cpp
\\Omni\\Src\\Stream\\MxRAMStreamProvider.cpp
MxDirectDraw.cpp
LegoROI.cpp
LegoLOD.cpp
tglRL40.cpp
Lego3DView.cpp
Lego3DManager.cpp
LegoView1.cpp
TglSurface.cpp
realtime.cpp
ViewLODList.cpp
ViewManager.cpp
Remember the various symbols before that Main.exe was importing? Well, these are present in the binary as mangled MSVC symbols. Demangling them gives us some more information on these symbols:

Code: Select all

public: __thiscall LegoEntity::LegoEntity(void)
public: __thiscall LegoGameState::LegoGameState(void)
public: __thiscall LegoWorld::LegoWorld(void)
public: __thiscall MxBitmap::MxBitmap(void)
public: __thiscall MxDSAction::MxDSAction(void)
public: __thiscall MxDSFile::MxDSFile(char const *,unsigned long)
public: __thiscall MxOmniCreateFlags::MxOmniCreateFlags(void)
public: __thiscall MxOmniCreateParam::MxOmniCreateParam(char const *,struct HWND__ *,class MxVideoParam &,class MxOmniCreateFlags)
public: __thiscall MxPresenter::MxPresenter(void)
public: __thiscall MxString::MxString(class MxString const &)
public: __thiscall MxVideoParam::MxVideoParam(class MxRect32 &,class MxPalette *,unsigned long,class MxVideoParamFlags &)
public: __thiscall MxVideoParam::MxVideoParam(void)
public: __thiscall MxVideoParamFlags::MxVideoParamFlags(void)
public: virtual __thiscall LegoEntity::~LegoEntity(void)
public: virtual __thiscall LegoWorld::~LegoWorld(void)
public: __thiscall MXIOINFO::~MXIOINFO(void)
public: virtual __thiscall MxBitmap::~MxBitmap(void)
public: virtual __thiscall MxDSAction::~MxDSAction(void)
public: virtual __thiscall MxDSFile::~MxDSFile(void)
public: virtual __thiscall MxPresenter::~MxPresenter(void)
public: virtual __thiscall MxString::~MxString(void)
public: class MxString const & __thiscall MxString::operator=(char const *)
public: unsigned char __thiscall MxPalette::operator==(class MxPalette &)
public: virtual long __thiscall MxDSFile::Close(void)
public: static void __cdecl LegoOmni::CreateInstance(void)
public: virtual class MxPalette * __thiscall MxBitmap::CreatePalette(void)
class MxDSObject * __cdecl CreateStreamObject(class MxDSFile *,short)
public: static void __cdecl MxOmni::DestroyInstance(void)
public: void __thiscall MxPalette::Detach(void)
public: class MxStreamController * __thiscall MxStreamControllerList::Find(char const *)
public: int __thiscall MxDirectDraw::FlipToGDISurface(void)
public: static char const * __cdecl MxOmni::GetCD(void)
public: static void __cdecl LegoNavController::GetDefaults(int *,float *,float *,float *,float *,float *,float *,float *,float *,float *,unsigned char *)
public: struct MxDirect3D::Direct3DDeviceInfo * __thiscall MxDirect3D::GetDeviceInfo(struct MxDirect3D::Direct3DDeviceInfo *)
public: static char const * __cdecl MxOmni::GetHD(void)
public: static class LegoOmni * __cdecl LegoOmni::GetInstance(void)
public: static class MxScheduler * __cdecl MxScheduler::GetInstance(void)
public: static float __cdecl RealtimeView::GetPartsThreshold(void)
public: static int __cdecl MxDirectDraw::GetPrimaryBitDepth(void)
public: long __thiscall MxTimer::GetTime(void)
public: static float __cdecl RealtimeView::GetUserMaxLOD(void)
public: char const * __thiscall MxVariableTable::GetVariable(char const *)
public: void __thiscall MxVideoManager::InvalidateRect(class MxRect32 &)
public: virtual long __thiscall MxDSFile::Open(unsigned long)
public: class MxStreamController * __thiscall MxStreamer::Open(char const *,unsigned short)
public: int __thiscall MxDirectDraw::Pause(int)
class LegoEntity * __cdecl PickEntity(long,long)
public: void __thiscall LegoInputManager::QueueEvent(short,unsigned char,long,long,unsigned char)
public: virtual long __thiscall MxBitmap::Read(char const *)
public: virtual long __thiscall MxDSFile::Read(unsigned char *,unsigned long)
public: virtual long __thiscall MxVideoManager::RealizePalette(class MxPalette *)
public: void __thiscall LegoInputManager::Register(class MxCore *)
public: virtual long __thiscall MxDSFile::Seek(long,int)
public: static void __cdecl MxOmni::SetCD(char const *)
public: static void __cdecl LegoNavController::SetDefaults(int,float,float,float,float,float,float,float,float,float,unsigned char)
public: static void __cdecl MxCriticalSection::SetDoMutex(void)
public: static void __cdecl MxOmni::SetHD(char const *)
public: void __thiscall MxDSObject::SetObjectName(char const *)
void __cdecl SetOmniUserMessage(void (__cdecl*)(char const *,int))
public: static void __cdecl RealtimeView::SetPartsThreshold(float)
public: virtual void __thiscall MxDSObject::SetSourceName(char const *)
public: static void __cdecl RealtimeView::SetUserMaxLOD(float)
public: void __thiscall MxVariableTable::SetVariable(char const *,char const *)
public: void __thiscall MxScheduler::StartMultiTasking(unsigned long)
public: void __thiscall LegoInputManager::UnRegister(class MxCore *)
The functions above are also completely intact, they are included in the binary and are attached to certain addresses.
Which means... we can view these in a program like IDA.
Screenshot 2023-11-03 201617.png
But that's all I've found so far.... I'm probably the first to post here about this.
Post Reply