mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-23 16:21:15 +00:00
Merge branch 'master' into omniheaders
This commit is contained in:
commit
279c3c13e6
@ -141,6 +141,7 @@ add_library(lego1 SHARED
|
||||
LEGO1/mxmediamanager.cpp
|
||||
LEGO1/mxmediapresenter.cpp
|
||||
LEGO1/mxmidipresenter.cpp
|
||||
LEGO1/mxmusicmanager.cpp
|
||||
LEGO1/mxmusicpresenter.cpp
|
||||
LEGO1/mxnotificationmanager.cpp
|
||||
LEGO1/mxobjectfactory.cpp
|
||||
@ -272,4 +273,4 @@ if (MSVC)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "/incremental:no")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "/incremental:no /debug")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "/incremental:no")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@ -99,11 +99,10 @@ void SetOmniUserMessage(void (*p_userMsg)(const char *,int))
|
||||
g_omniUserMessage = p_userMsg;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100acf50 STUB
|
||||
MxLong Start(MxDSAction *)
|
||||
// OFFSET: LEGO1 0x100acf50
|
||||
MxResult Start(MxDSAction* p_dsAction)
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
return MxOmni::GetInstance()->Start(p_dsAction);
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x1005ad10
|
||||
@ -257,6 +256,10 @@ void LegoOmni::Init()
|
||||
MxResult LegoOmni::Create(COMPAT_CONST MxOmniCreateParam &p)
|
||||
{
|
||||
// FIXME: Stub
|
||||
MxOmni::Create(p);
|
||||
m_gameState = new LegoGameState();
|
||||
m_bkgAudioManager = new MxBackgroundAudioManager();
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@ -265,9 +268,14 @@ void LegoOmni::Destroy()
|
||||
// FIXME: Stub
|
||||
}
|
||||
|
||||
void LegoOmni::vtable0x20()
|
||||
// OFFSET: LEGO1 0x1005b580
|
||||
MxResult LegoOmni::Start(MxDSAction* action)
|
||||
{
|
||||
// FIXME: Stub
|
||||
MxResult result = MxOmni::Start(action);
|
||||
this->m_action.SetAtomId(action->GetAtomId());
|
||||
this->m_action.SetObjectId(action->GetObjectId());
|
||||
this->m_action.SetUnknown24(action->GetUnknown24());
|
||||
return result;
|
||||
}
|
||||
|
||||
void LegoOmni::DeleteObject(MxDSAction &ds)
|
||||
|
||||
@ -54,7 +54,7 @@ class LegoOmni : public MxOmni
|
||||
virtual void Init() override; // vtable+14
|
||||
virtual MxResult Create(COMPAT_CONST MxOmniCreateParam &p) override; // vtable+18
|
||||
virtual void Destroy() override; // vtable+1c
|
||||
virtual void vtable0x20() override;
|
||||
virtual MxResult Start(MxDSAction* action) override;
|
||||
virtual void DeleteObject(MxDSAction &ds) override;
|
||||
virtual MxBool DoesEntityExist(MxDSAction &ds) override;
|
||||
virtual void vtable0x2c() override;
|
||||
@ -109,10 +109,9 @@ __declspec(dllexport) LegoEntity * PickEntity(MxLong,MxLong);
|
||||
__declspec(dllexport) LegoROI * PickROI(MxLong,MxLong);
|
||||
__declspec(dllexport) void SetOmniUserMessage(void (*)(const char *,int));
|
||||
__declspec(dllexport) LegoSoundManager * SoundManager();
|
||||
__declspec(dllexport) MxLong Start(MxDSAction *);
|
||||
__declspec(dllexport) MxResult Start(MxDSAction*);
|
||||
__declspec(dllexport) MxTransitionManager * TransitionManager();
|
||||
__declspec(dllexport) LegoVideoManager * VideoManager();
|
||||
__declspec(dllexport) MxLong Start(MxDSAction *a);
|
||||
|
||||
LegoBuildingManager* BuildingManager();
|
||||
Isle* GetIsle();
|
||||
|
||||
@ -20,7 +20,21 @@ MxAudioManager::~MxAudioManager()
|
||||
// OFFSET: LEGO1 0x100b8df0
|
||||
void MxAudioManager::Init()
|
||||
{
|
||||
this->m_unk2c = 100;
|
||||
this->m_volume = 100;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x10029910
|
||||
MxS32 MxAudioManager::GetVolume()
|
||||
{
|
||||
return this->m_volume;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b8ea0
|
||||
void MxAudioManager::SetVolume(MxS32 p_volume)
|
||||
{
|
||||
this->m_criticalSection.Enter();
|
||||
this->m_volume = p_volume;
|
||||
this->m_criticalSection.Leave();
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b8e00
|
||||
|
||||
@ -11,18 +11,20 @@ class MxAudioManager : public MxMediaManager
|
||||
MxAudioManager();
|
||||
virtual ~MxAudioManager() override;
|
||||
|
||||
virtual MxResult InitPresenters(); // vtable+14
|
||||
virtual void Destroy(); // vtable+18
|
||||
virtual MxResult InitPresenters() override; // vtable+14
|
||||
virtual void Destroy() override; // vtable+18
|
||||
virtual MxS32 GetVolume(); // vtable+28
|
||||
virtual void SetVolume(MxS32 p_volume); // vtable+2c
|
||||
|
||||
private:
|
||||
void LockedReinitialize(MxBool);
|
||||
void LockedReinitialize(MxBool p_skipDestroy);
|
||||
|
||||
static MxS32 g_unkCount;
|
||||
|
||||
protected:
|
||||
void Init();
|
||||
|
||||
undefined4 m_unk2c;
|
||||
MxS32 m_volume; // 0x2c
|
||||
};
|
||||
|
||||
#endif // MXAUDIOMANAGER_H
|
||||
|
||||
@ -3,3 +3,15 @@
|
||||
#include "decomp.h"
|
||||
|
||||
DECOMP_SIZE_ASSERT(MxAudioPresenter, 0x54);
|
||||
|
||||
// OFFSET: LEGO1 0x1000d260
|
||||
undefined4 MxAudioPresenter::vtable5c()
|
||||
{
|
||||
return this->m_unk50;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x1000d270
|
||||
void MxAudioPresenter::vtable60(undefined4 p_unk50)
|
||||
{
|
||||
this->m_unk50 = p_unk50;
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
#ifndef MXAUDIOPRESENTER_H
|
||||
#define MXAUDIOPRESENTER_H
|
||||
|
||||
#include "decomp.h"
|
||||
#include "mxmediapresenter.h"
|
||||
|
||||
// VTABLE 0x100d4c70
|
||||
@ -24,7 +25,10 @@ class MxAudioPresenter : public MxMediaPresenter
|
||||
return !strcmp(name, MxAudioPresenter::ClassName()) || MxMediaPresenter::IsA(name);
|
||||
}
|
||||
|
||||
int m_unk50;
|
||||
virtual undefined4 vtable5c();
|
||||
virtual void vtable60(undefined4);
|
||||
|
||||
undefined4 m_unk50;
|
||||
};
|
||||
|
||||
#endif // MXAUDIOPRESENTER_H
|
||||
|
||||
@ -176,7 +176,7 @@ void MxDisplaySurface::SetPalette(MxPalette *p_palette)
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100bc200 STUB
|
||||
void MxDisplaySurface::vtable24(undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4)
|
||||
void MxDisplaySurface::vtable24(LPDDSURFACEDESC, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4)
|
||||
{
|
||||
|
||||
}
|
||||
@ -188,7 +188,7 @@ MxBool MxDisplaySurface::vtable28(undefined4, undefined4, undefined4, undefined4
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100bc630 STUB
|
||||
MxBool MxDisplaySurface::vtable2c(undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, MxBool)
|
||||
MxBool MxDisplaySurface::vtable2c(LPDDSURFACEDESC, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, MxBool)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@ -232,3 +232,9 @@ undefined4 MxDisplaySurface::vtable44(undefined4, undefined4*, undefined4, undef
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100ba640 STUB
|
||||
void MxDisplaySurface::FUN_100ba640()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
@ -19,13 +19,15 @@ class MxDisplaySurface : public MxCore
|
||||
|
||||
void Reset();
|
||||
|
||||
void FUN_100ba640();
|
||||
|
||||
virtual MxResult Init(MxVideoParam &p_videoParam, LPDIRECTDRAWSURFACE p_ddSurface1, LPDIRECTDRAWSURFACE p_ddSurface2, LPDIRECTDRAWCLIPPER p_ddClipper);
|
||||
virtual MxResult Create(MxVideoParam &p_videoParam);
|
||||
virtual void Clear();
|
||||
virtual void SetPalette(MxPalette *p_palette);
|
||||
virtual void vtable24(undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4);
|
||||
virtual void vtable24(LPDDSURFACEDESC, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4);
|
||||
virtual MxBool vtable28(undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4);
|
||||
virtual MxBool vtable2c(undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, MxBool);
|
||||
virtual MxBool vtable2c(LPDDSURFACEDESC, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, MxBool);
|
||||
virtual MxBool vtable30(undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, MxBool);
|
||||
virtual undefined4 vtable34(undefined4, undefined4, undefined4, undefined4, undefined4, undefined4);
|
||||
virtual void Display(undefined4, undefined4, undefined4, undefined4, undefined4, undefined4);
|
||||
|
||||
@ -16,6 +16,7 @@ class MxDSAction : public MxDSObject
|
||||
{
|
||||
Flag_Looping = 0x01,
|
||||
Flag_Bit3 = 0x04,
|
||||
Flag_Bit5 = 0x10,
|
||||
Flag_Enabled = 0x20,
|
||||
Flag_Parsed = 0x80,
|
||||
Flag_Bit9 = 0x200,
|
||||
|
||||
@ -36,6 +36,7 @@ class MxDSObject : public MxCore
|
||||
|
||||
inline const MxAtomId& GetAtomId() { return this->m_atomId; }
|
||||
inline MxU32 GetObjectId() { return this->m_objectId; }
|
||||
inline MxS16 GetUnknown24() { return this->m_unk24; }
|
||||
|
||||
inline void SetObjectId(MxU32 p_objectId) { this->m_objectId = p_objectId; }
|
||||
inline void SetUnknown24(MxS16 p_unk24) { this->m_unk24 = p_unk24; }
|
||||
|
||||
@ -10,7 +10,7 @@ MxLoopingFlcPresenter::MxLoopingFlcPresenter()
|
||||
Init();
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b43b0 STUB
|
||||
// OFFSET: LEGO1 0x100b43b0
|
||||
MxLoopingFlcPresenter::~MxLoopingFlcPresenter()
|
||||
{
|
||||
Destroy(TRUE);
|
||||
|
||||
@ -10,14 +10,22 @@ MxLoopingSmkPresenter::MxLoopingSmkPresenter()
|
||||
Init();
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b4950 STUB
|
||||
// OFFSET: LEGO1 0x100b4950
|
||||
MxLoopingSmkPresenter::~MxLoopingSmkPresenter()
|
||||
{
|
||||
// TODO
|
||||
Destroy(TRUE);
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b49b0 STUB
|
||||
// OFFSET: LEGO1 0x100b49b0
|
||||
void MxLoopingSmkPresenter::Init()
|
||||
{
|
||||
// TODO
|
||||
this->m_unk720 = 0;
|
||||
this->m_flags &= 0xfd;
|
||||
this->m_flags &= 0xfb;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b49d0 STUB
|
||||
void MxLoopingSmkPresenter::Destroy(MxBool p_bool)
|
||||
{
|
||||
// TODO - theres a chain of destroy and free function calls here (FUN_100b4300 -> FUN_100b3900 -> FUN_100c5d40 -> function at 0x100b27b0)
|
||||
}
|
||||
|
||||
@ -22,6 +22,8 @@ class MxLoopingSmkPresenter : public MxSmkPresenter
|
||||
|
||||
private:
|
||||
void Init();
|
||||
void Destroy(MxBool);
|
||||
|
||||
undefined4 m_unk720;
|
||||
};
|
||||
|
||||
|
||||
@ -17,3 +17,9 @@ void MxMediaPresenter::Init()
|
||||
this->m_unk48 = NULL;
|
||||
this->m_unk4c = NULL;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b5f10 STUB
|
||||
void MxMediaPresenter::VTable0x58()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
@ -29,6 +29,8 @@ class MxMediaPresenter : public MxPresenter
|
||||
return !strcmp(name, MxMediaPresenter::ClassName()) || MxPresenter::IsA(name);
|
||||
}
|
||||
|
||||
virtual void VTable0x58(); // vtable+0x58
|
||||
|
||||
undefined4 m_unk40;
|
||||
undefined4 m_unk44;
|
||||
undefined4 m_unk48;
|
||||
|
||||
161
LEGO1/mxmusicmanager.cpp
Normal file
161
LEGO1/mxmusicmanager.cpp
Normal file
@ -0,0 +1,161 @@
|
||||
#include "mxmusicmanager.h"
|
||||
#include "mxomni.h"
|
||||
#include <windows.h>
|
||||
|
||||
DECOMP_SIZE_ASSERT(MxMusicManager, 0x58);
|
||||
|
||||
// OFFSET: LEGO1 0x100c05a0
|
||||
MxMusicManager::MxMusicManager()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100c0630
|
||||
MxMusicManager::~MxMusicManager()
|
||||
{
|
||||
LockedReinitialize(TRUE);
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100c0b20
|
||||
void MxMusicManager::DeinitializeMIDI()
|
||||
{
|
||||
m_criticalSection.Enter();
|
||||
|
||||
if (this->m_MIDIInitialized)
|
||||
{
|
||||
this->m_MIDIInitialized = FALSE;
|
||||
midiStreamStop(this->m_MIDIStreamH);
|
||||
midiOutUnprepareHeader(this->m_MIDIStreamH, this->m_MIDIHdrP, sizeof(MIDIHDR));
|
||||
midiOutSetVolume(this->m_MIDIStreamH, this->m_MIDIVolume);
|
||||
midiStreamClose(this->m_MIDIStreamH);
|
||||
delete this->m_MIDIHdrP;
|
||||
this->InitData();
|
||||
}
|
||||
|
||||
this->m_criticalSection.Leave();
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100c0690
|
||||
void MxMusicManager::Init()
|
||||
{
|
||||
this->m_multiplier = 100;
|
||||
InitData();
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100c06a0
|
||||
void MxMusicManager::InitData()
|
||||
{
|
||||
this->m_MIDIStreamH = 0;
|
||||
this->m_MIDIInitialized = FALSE;
|
||||
this->m_unk38 = 0;
|
||||
this->m_unk3c = 0;
|
||||
this->m_unk40 = 0;
|
||||
this->m_unk44 = 0;
|
||||
this->m_unk48 = 0;
|
||||
this->m_MIDIHdrP = NULL;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100c06c0
|
||||
void MxMusicManager::LockedReinitialize(MxBool p_skipDestroy)
|
||||
{
|
||||
if (this->m_thread)
|
||||
{
|
||||
this->m_thread->Terminate();
|
||||
if (this->m_thread)
|
||||
{
|
||||
delete m_thread;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
TickleManager()->UnregisterClient(this);
|
||||
}
|
||||
|
||||
this->m_criticalSection.Enter();
|
||||
DeinitializeMIDI();
|
||||
Init();
|
||||
this->m_criticalSection.Leave();
|
||||
|
||||
if (!p_skipDestroy)
|
||||
{
|
||||
MxAudioManager::Destroy();
|
||||
}
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100c0930
|
||||
void MxMusicManager::Destroy()
|
||||
{
|
||||
LockedReinitialize(FALSE);
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100c09a0
|
||||
MxS32 MxMusicManager::CalculateVolume(MxS32 p_volume)
|
||||
{
|
||||
MxS32 result = (p_volume * 0xffff) / 100;
|
||||
return (result << 0x10) | result;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100c07f0
|
||||
void MxMusicManager::SetMIDIVolume()
|
||||
{
|
||||
MxS32 result = (this->m_volume * this->m_multiplier) / 0x64;
|
||||
HMIDISTRM streamHandle = this->m_MIDIStreamH;
|
||||
|
||||
if (streamHandle)
|
||||
{
|
||||
MxS32 volume = CalculateVolume(result);
|
||||
midiOutSetVolume(streamHandle, volume);
|
||||
}
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100c0940
|
||||
void MxMusicManager::SetVolume(MxS32 p_volume)
|
||||
{
|
||||
MxAudioManager::SetVolume(p_volume);
|
||||
this->m_criticalSection.Enter();
|
||||
SetMIDIVolume();
|
||||
this->m_criticalSection.Leave();
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100c0840
|
||||
MxResult MxMusicManager::StartMIDIThread(MxU32 p_frequencyMS, MxBool p_noRegister)
|
||||
{
|
||||
MxResult status = FAILURE;
|
||||
MxBool locked = FALSE;
|
||||
|
||||
MxResult result = MxAudioManager::InitPresenters();
|
||||
if (result == SUCCESS)
|
||||
{
|
||||
if (p_noRegister)
|
||||
{
|
||||
this->m_criticalSection.Enter();
|
||||
locked = TRUE;
|
||||
this->m_thread = new MxTickleThread(this, p_frequencyMS);
|
||||
|
||||
if (this->m_thread)
|
||||
{
|
||||
if (this->m_thread->Start(0, 0) == SUCCESS)
|
||||
{
|
||||
status = SUCCESS;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
TickleManager()->RegisterClient(this, p_frequencyMS);
|
||||
status = SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
if (status != SUCCESS)
|
||||
{
|
||||
Destroy();
|
||||
}
|
||||
|
||||
if (locked)
|
||||
{
|
||||
this->m_criticalSection.Leave();
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
@ -1,11 +1,42 @@
|
||||
#ifndef MXMUSICMANAGER_H
|
||||
#define MXMUSICMANAGER_H
|
||||
|
||||
#include "mxcore.h"
|
||||
#include "decomp.h"
|
||||
#include "mxaudiomanager.h"
|
||||
|
||||
// VTABLE 0x100dc930
|
||||
class MxMusicManager : public MxCore
|
||||
// SIZE 0x58
|
||||
class MxMusicManager : public MxAudioManager
|
||||
{
|
||||
public:
|
||||
MxMusicManager();
|
||||
virtual ~MxMusicManager() override;
|
||||
|
||||
virtual void Destroy() override; // vtable+18
|
||||
virtual void SetVolume(MxS32 p_volume) override; // vtable+2c
|
||||
virtual MxResult StartMIDIThread(MxU32 p_frequencyMS, MxU8 p_noRegister); // vtable+30
|
||||
|
||||
private:
|
||||
void LockedReinitialize(MxBool p_skipDestroy);
|
||||
void DeinitializeMIDI();
|
||||
|
||||
MxS32 CalculateVolume(MxS32 p_volume);
|
||||
void SetMIDIVolume();
|
||||
|
||||
HMIDISTRM m_MIDIStreamH; // 0x30
|
||||
MxBool m_MIDIInitialized; // 0x34
|
||||
undefined4 m_unk38; // 0x38
|
||||
undefined4 m_unk3c; // 0x3c
|
||||
undefined4 m_unk40; // 0x40
|
||||
undefined4 m_unk44; // 0x44
|
||||
undefined4 m_unk48; // 0x48
|
||||
MIDIHDR *m_MIDIHdrP; // 0x4c
|
||||
MxS32 m_multiplier; // 0x50
|
||||
DWORD m_MIDIVolume; // 0x54
|
||||
|
||||
protected:
|
||||
void Init();
|
||||
void InitData();
|
||||
};
|
||||
|
||||
#endif // MXMUSICMANAGER_H
|
||||
#endif // MXMUSICMANAGER_H
|
||||
@ -6,7 +6,19 @@ MxMusicPresenter::MxMusicPresenter()
|
||||
Init();
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100c24e0
|
||||
MxMusicPresenter::~MxMusicPresenter()
|
||||
{
|
||||
Destroy(TRUE);
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100c2540
|
||||
void MxMusicPresenter::Init()
|
||||
{
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100c2550 STUB
|
||||
void MxMusicPresenter::Destroy(MxBool)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
@ -21,9 +21,11 @@ class MxMusicPresenter : public MxAudioPresenter
|
||||
}
|
||||
|
||||
MxMusicPresenter();
|
||||
virtual ~MxMusicPresenter() override;
|
||||
|
||||
private:
|
||||
void Init();
|
||||
void Destroy(MxBool);
|
||||
};
|
||||
|
||||
#endif // MXMUSICPRESENTER_H
|
||||
|
||||
@ -54,10 +54,16 @@ void MxOmni::Init()
|
||||
m_unk64 = NULL;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b0090 STUB
|
||||
void MxOmni::vtable0x20()
|
||||
// OFFSET: LEGO1 0x100b0090
|
||||
MxResult MxOmni::Start(MxDSAction* p_dsAction)
|
||||
{
|
||||
// TODO
|
||||
MxResult result = FAILURE;
|
||||
if(p_dsAction->GetAtomId().GetInternal() != NULL && p_dsAction->GetObjectId() != -1 && m_streamer != NULL)
|
||||
{
|
||||
result = m_streamer->Unknown100b99b0(p_dsAction);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b00c0 STUB
|
||||
@ -270,7 +276,7 @@ MxAtomIdCounterSet *AtomIdCounterSet()
|
||||
MxStreamer* Streamer()
|
||||
{
|
||||
return MxOmni::GetInstance()->GetStreamer();
|
||||
}
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100acf00
|
||||
MxSoundManager* MSoundManager()
|
||||
@ -300,4 +306,4 @@ MxMusicManager* MusicManager()
|
||||
MxEventManager* EventManager()
|
||||
{
|
||||
return MxOmni::GetInstance()->GetEventManager();
|
||||
}
|
||||
}
|
||||
|
||||
@ -40,7 +40,7 @@ class MxOmni : public MxCore
|
||||
virtual void Init(); // vtable+14
|
||||
virtual MxResult Create(COMPAT_CONST MxOmniCreateParam &p); // vtable+18
|
||||
virtual void Destroy(); // vtable+1c
|
||||
virtual void vtable0x20(); // vtable+20
|
||||
virtual MxResult Start(MxDSAction* p_dsAction); // vtable+20
|
||||
virtual void DeleteObject(MxDSAction &ds); // vtable+24
|
||||
virtual MxBool DoesEntityExist(MxDSAction &ds); // vtable+28
|
||||
virtual void vtable0x2c(); // vtable+2c
|
||||
|
||||
@ -68,6 +68,8 @@ class MxPresenter : public MxCore
|
||||
|
||||
MxBool IsEnabled();
|
||||
|
||||
inline MxS32 GetCurrentTickleState() { return this->m_currentTickleState; }
|
||||
inline MxPoint32 GetLocation() { return this->m_location; }
|
||||
inline MxS32 GetDisplayZ() { return this->m_displayZ; }
|
||||
inline MxDSAction *GetAction() { return this->m_action; }
|
||||
|
||||
|
||||
@ -1,21 +1,49 @@
|
||||
#include "mxsoundmanager.h"
|
||||
|
||||
#include "mxomni.h"
|
||||
|
||||
DECOMP_SIZE_ASSERT(MxSoundManager, 0x3c);
|
||||
|
||||
// OFFSET: LEGO1 0x100ae740
|
||||
MxSoundManager::MxSoundManager()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100ae7d0 STUB
|
||||
// OFFSET: LEGO1 0x100ae7d0
|
||||
MxSoundManager::~MxSoundManager()
|
||||
{
|
||||
// TODO
|
||||
Destroy(TRUE);
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100ae830
|
||||
void MxSoundManager::Init()
|
||||
{
|
||||
m_unk30 = 0;
|
||||
m_unk34 = 0;
|
||||
m_dsBuffer = NULL;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100ae840
|
||||
void MxSoundManager::Destroy(MxBool p_param)
|
||||
{
|
||||
if (this->m_thread) {
|
||||
this->m_thread->Terminate();
|
||||
delete this->m_thread;
|
||||
}
|
||||
else {
|
||||
TickleManager()->UnregisterClient(this);
|
||||
}
|
||||
|
||||
this->m_criticalSection.Enter();
|
||||
|
||||
if (this->m_dsBuffer) {
|
||||
this->m_dsBuffer->Release();
|
||||
}
|
||||
|
||||
Init();
|
||||
this->m_criticalSection.Leave();
|
||||
|
||||
if (!p_param) {
|
||||
MxAudioManager::Destroy();
|
||||
}
|
||||
}
|
||||
@ -1,11 +1,13 @@
|
||||
#ifndef MXSOUNDMANAGER_H
|
||||
#define MXSOUNDMANAGER_H
|
||||
|
||||
#include "decomp.h"
|
||||
#include "mxaudiomanager.h"
|
||||
|
||||
#include <dsound.h>
|
||||
|
||||
// VTABLE 0x100dc128
|
||||
// SIZE 0x3c
|
||||
// Base vtables are: MxCore -> 0x100dc6b0 -> MxAudioManager -> MxSoundManager
|
||||
class MxSoundManager : public MxAudioManager
|
||||
{
|
||||
public:
|
||||
@ -14,8 +16,11 @@ class MxSoundManager : public MxAudioManager
|
||||
|
||||
private:
|
||||
void Init();
|
||||
int m_unk30;
|
||||
int m_unk34;
|
||||
void Destroy(MxBool);
|
||||
|
||||
undefined4 m_unk30;
|
||||
LPDIRECTSOUNDBUFFER m_dsBuffer; // 0x34
|
||||
undefined m_unk35[4];
|
||||
};
|
||||
|
||||
#endif // MXSOUNDMANAGER_H
|
||||
|
||||
@ -30,3 +30,22 @@ MxResult MxStreamController::Open(const char *p_filename)
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b9400
|
||||
MxResult MxStreamController::vtable0x18(undefined4 p_unknown, undefined4 p_unknown2)
|
||||
{
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b9410
|
||||
MxResult MxStreamController::vtable0x1C(undefined4 p_unknown, undefined4 p_unknown2)
|
||||
{
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100c1690 STUB
|
||||
MxResult MxStreamController::vtable0x20(MxDSAction* action)
|
||||
{
|
||||
// TODO STUB
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
#include "mxcriticalsection.h"
|
||||
#include "mxcore.h"
|
||||
#include "mxdsobject.h"
|
||||
#include "mxdsaction.h"
|
||||
|
||||
// VTABLE 0x100dc968
|
||||
// SIZE 0x64
|
||||
@ -30,6 +31,9 @@ class MxStreamController : public MxCore
|
||||
}
|
||||
|
||||
virtual MxResult Open(const char *p_filename); // vtable+0x14
|
||||
virtual MxResult vtable0x18(undefined4 p_unknown, undefined4 p_unknown2); //vtable+0x18
|
||||
virtual MxResult vtable0x1C(undefined4 p_unknown, undefined4 p_unknown2); //vtable+0x1c
|
||||
virtual MxResult vtable0x20(MxDSAction* action); //vtable+0x20
|
||||
|
||||
MxBool FUN_100c20d0(MxDSObject &p_obj);
|
||||
|
||||
|
||||
@ -134,6 +134,22 @@ MxResult MxStreamer::AddStreamControllerToOpenList(MxStreamController *stream)
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b99b0
|
||||
MxResult MxStreamer::Unknown100b99b0(MxDSAction* p_action)
|
||||
{
|
||||
MxStreamController* controller;
|
||||
if (p_action != NULL && p_action->GetAtomId().GetInternal() != NULL && p_action->GetObjectId() != -1)
|
||||
{
|
||||
controller = GetOpenStream(p_action->GetAtomId().GetInternal());
|
||||
if (controller == NULL)
|
||||
{
|
||||
return FAILURE;
|
||||
}
|
||||
return controller->vtable0x20(p_action);
|
||||
}
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b9b60
|
||||
MxLong MxStreamer::Notify(MxParam &p)
|
||||
{
|
||||
|
||||
@ -96,6 +96,8 @@ class MxStreamer : public MxCore
|
||||
|
||||
MxResult AddStreamControllerToOpenList(MxStreamController *p_stream);
|
||||
|
||||
MxResult MxStreamer::Unknown100b99b0(MxDSAction* p_action);
|
||||
|
||||
private:
|
||||
list<MxStreamController *> m_openStreams; // 0x8
|
||||
MxStreamerSubClass2 m_subclass1; // 0x14
|
||||
|
||||
@ -24,6 +24,8 @@ class MxThread
|
||||
|
||||
protected:
|
||||
MxThread();
|
||||
|
||||
public:
|
||||
virtual ~MxThread();
|
||||
|
||||
private:
|
||||
|
||||
@ -39,12 +39,36 @@ MxTransitionManager::~MxTransitionManager()
|
||||
TickleManager()->UnregisterClient(this);
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x1004bac0 STUB
|
||||
// OFFSET: LEGO1 0x1004bac0
|
||||
MxResult MxTransitionManager::Tickle()
|
||||
{
|
||||
// TODO
|
||||
if (this->m_animationSpeed + this->m_systemTime > timeGetTime()) {
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
return 0;
|
||||
this->m_systemTime = timeGetTime();
|
||||
|
||||
switch (this->m_transitionType) {
|
||||
case NO_ANIMATION:
|
||||
Transition_None();
|
||||
break;
|
||||
case DISSOLVE:
|
||||
Transition_Dissolve();
|
||||
break;
|
||||
case PIXELATION:
|
||||
Transition_Pixelation();
|
||||
break;
|
||||
case SCREEN_WIPE:
|
||||
Transition_Wipe();
|
||||
break;
|
||||
case WINDOWS:
|
||||
Transition_Windows();
|
||||
break;
|
||||
case BROKEN:
|
||||
Transition_Broken();
|
||||
break;
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x1004bc30
|
||||
@ -110,7 +134,7 @@ void MxTransitionManager::Transition_Dissolve()
|
||||
}
|
||||
|
||||
if (res == DD_OK) {
|
||||
SubmitCopyRect(ddsd);
|
||||
SubmitCopyRect(&ddsd);
|
||||
|
||||
for (MxS32 i = 0; i < 640; i++) {
|
||||
// Select 16 columns on each tick
|
||||
@ -135,7 +159,7 @@ void MxTransitionManager::Transition_Dissolve()
|
||||
}
|
||||
}
|
||||
|
||||
SetupCopyRect(ddsd);
|
||||
SetupCopyRect(&ddsd);
|
||||
m_ddSurface->Unlock(ddsd.lpSurface);
|
||||
|
||||
if (VideoManager()->GetVideoParam().flags().GetFlipSurfaces()) {
|
||||
@ -198,14 +222,101 @@ MxResult MxTransitionManager::StartTransition(TransitionType p_animationType, Mx
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x1004c470 STUB
|
||||
void MxTransitionManager::SetWaitIndicator(MxVideoPresenter *videoPresenter)
|
||||
// OFFSET: LEGO1 0x1004bcf0
|
||||
void MxTransitionManager::Transition_None()
|
||||
{
|
||||
LegoVideoManager *videoManager = VideoManager();
|
||||
videoManager->GetDisplaySurface()->FUN_100ba640();
|
||||
EndTransition(TRUE);
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x1004bed0 STUB
|
||||
void MxTransitionManager::Transition_Pixelation()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
|
||||
// OFFSET: LEGO1 0x1004c270 STUB
|
||||
void MxTransitionManager::Transition_Windows()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x1004c3e0 STUB
|
||||
void MxTransitionManager::Transition_Broken()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x1004c170
|
||||
void MxTransitionManager::Transition_Wipe()
|
||||
{
|
||||
// If the animation is finished
|
||||
if (m_animationTimer == 240) {
|
||||
m_animationTimer = 0;
|
||||
EndTransition(TRUE);
|
||||
return;
|
||||
}
|
||||
|
||||
DDSURFACEDESC ddsd;
|
||||
memset(&ddsd, 0, sizeof(ddsd));
|
||||
ddsd.dwSize = sizeof(ddsd);
|
||||
|
||||
HRESULT res = m_ddSurface->Lock(NULL, &ddsd, 1, NULL);
|
||||
if (res == DDERR_SURFACELOST) {
|
||||
m_ddSurface->Restore();
|
||||
res = m_ddSurface->Lock(NULL, &ddsd, 1, NULL);
|
||||
}
|
||||
|
||||
if (res == DD_OK) {
|
||||
SubmitCopyRect(&ddsd);
|
||||
|
||||
// For each of the 240 animation ticks, blank out two scanlines
|
||||
// starting at the top of the screen.
|
||||
// (dwRGBBitCount / 8) will tell how many bytes are used per pixel.
|
||||
MxU8 *line = (MxU8*)ddsd.lpSurface + 2*ddsd.lPitch*m_animationTimer;
|
||||
memset(line, 0, 640 * ddsd.ddpfPixelFormat.dwRGBBitCount / 8);
|
||||
|
||||
line += ddsd.lPitch;
|
||||
memset(line, 0, 640 * ddsd.ddpfPixelFormat.dwRGBBitCount / 8);
|
||||
|
||||
SetupCopyRect(&ddsd);
|
||||
m_ddSurface->Unlock(ddsd.lpSurface);
|
||||
|
||||
m_animationTimer++;
|
||||
}
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x1004c470
|
||||
void MxTransitionManager::SetWaitIndicator(MxVideoPresenter *p_waitIndicator)
|
||||
{
|
||||
// End current wait indicator
|
||||
if (m_waitIndicator != NULL) {
|
||||
m_waitIndicator->GetAction()->SetFlags(m_waitIndicator->GetAction()->GetFlags() & ~MxDSAction::Flag_Parsed);
|
||||
m_waitIndicator->EndAction();
|
||||
m_waitIndicator = NULL;
|
||||
}
|
||||
|
||||
// Check if we were given a new wait indicator
|
||||
if (p_waitIndicator != NULL) {
|
||||
// Setup the new wait indicator
|
||||
m_waitIndicator = p_waitIndicator;
|
||||
|
||||
LegoVideoManager *videoManager = VideoManager();
|
||||
videoManager->RemovePresenter(*m_waitIndicator);
|
||||
|
||||
if (m_waitIndicator->GetCurrentTickleState() < MxPresenter::TickleState_Streaming) {
|
||||
m_waitIndicator->Tickle();
|
||||
}
|
||||
} else {
|
||||
// Disable copy rect
|
||||
m_copyFlags.bit0 = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x1004c4d0
|
||||
void MxTransitionManager::SubmitCopyRect(DDSURFACEDESC &ddsc)
|
||||
void MxTransitionManager::SubmitCopyRect(LPDDSURFACEDESC ddsc)
|
||||
{
|
||||
// Check if the copy rect is setup
|
||||
if (m_copyFlags.bit0 == FALSE || m_waitIndicator == NULL || m_copyBuffer == NULL) {
|
||||
@ -215,7 +326,7 @@ void MxTransitionManager::SubmitCopyRect(DDSURFACEDESC &ddsc)
|
||||
// Copy the copy rect onto the surface
|
||||
char *dst;
|
||||
|
||||
DWORD bytesPerPixel = ddsc.ddpfPixelFormat.dwRGBBitCount / 8;
|
||||
DWORD bytesPerPixel = ddsc->ddpfPixelFormat.dwRGBBitCount / 8;
|
||||
|
||||
const char *src = (const char *)m_copyBuffer;
|
||||
|
||||
@ -223,12 +334,12 @@ void MxTransitionManager::SubmitCopyRect(DDSURFACEDESC &ddsc)
|
||||
copyPitch = ((m_copyRect.right - m_copyRect.left) + 1) * bytesPerPixel;
|
||||
|
||||
LONG y;
|
||||
dst = (char *)ddsc.lpSurface + (ddsc.lPitch * m_copyRect.top) + (bytesPerPixel * m_copyRect.left);
|
||||
dst = (char *)ddsc->lpSurface + (ddsc->lPitch * m_copyRect.top) + (bytesPerPixel * m_copyRect.left);
|
||||
|
||||
for (y = 0; y < m_copyRect.bottom - m_copyRect.top + 1; ++y) {
|
||||
memcpy(dst, src, copyPitch);
|
||||
src += copyPitch;
|
||||
dst += ddsc.lPitch;
|
||||
dst += ddsc->lPitch;
|
||||
}
|
||||
|
||||
// Free the copy buffer
|
||||
@ -236,8 +347,60 @@ void MxTransitionManager::SubmitCopyRect(DDSURFACEDESC &ddsc)
|
||||
m_copyBuffer = NULL;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x1004c580 STUB
|
||||
void MxTransitionManager::SetupCopyRect(DDSURFACEDESC &ddsc)
|
||||
// OFFSET: LEGO1 0x1004c580
|
||||
void MxTransitionManager::SetupCopyRect(LPDDSURFACEDESC ddsc)
|
||||
{
|
||||
// TODO
|
||||
// Check if the copy rect is setup
|
||||
if (m_copyFlags.bit0 == FALSE || m_waitIndicator == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Tickle wait indicator
|
||||
m_waitIndicator->Tickle();
|
||||
|
||||
// Check if wait indicator has started
|
||||
if (m_waitIndicator->GetCurrentTickleState() >= MxPresenter::TickleState_Streaming) {
|
||||
// Setup the copy rect
|
||||
DWORD copyPitch = (ddsc->ddpfPixelFormat.dwRGBBitCount / 8) * (m_copyRect.right - m_copyRect.left + 1); // This uses m_copyRect, seemingly erroneously
|
||||
DWORD bytesPerPixel = ddsc->ddpfPixelFormat.dwRGBBitCount / 8;
|
||||
|
||||
m_copyRect.left = m_waitIndicator->GetLocation().m_x;
|
||||
m_copyRect.top = m_waitIndicator->GetLocation().m_y;
|
||||
|
||||
MxS32 height = m_waitIndicator->GetHeight();
|
||||
MxS32 width = m_waitIndicator->GetWidth();
|
||||
|
||||
m_copyRect.right = m_copyRect.left + width - 1;
|
||||
m_copyRect.bottom = m_copyRect.top + height - 1;
|
||||
|
||||
// Allocate the copy buffer
|
||||
const char *src = (const char*)ddsc->lpSurface + m_copyRect.top * ddsc->lPitch + bytesPerPixel * m_copyRect.left;
|
||||
|
||||
m_copyBuffer = malloc(bytesPerPixel * width * height);
|
||||
if (!m_copyBuffer)
|
||||
return;
|
||||
|
||||
// Copy into the copy buffer
|
||||
char *dst = (char*)m_copyBuffer;
|
||||
|
||||
for (MxS32 i = 0; i < (m_copyRect.bottom - m_copyRect.top + 1); i++)
|
||||
{
|
||||
memcpy(dst, src, copyPitch);
|
||||
src += ddsc->lPitch;
|
||||
dst += copyPitch;
|
||||
}
|
||||
}
|
||||
|
||||
// Setup display surface
|
||||
if ((m_waitIndicator->GetAction()->GetFlags() & MxDSAction::Flag_Bit5) != 0)
|
||||
{
|
||||
MxDisplaySurface *displaySurface = VideoManager()->GetDisplaySurface();
|
||||
MxBool unkbool = FALSE;
|
||||
displaySurface->vtable2c(ddsc, m_waitIndicator->m_unk50, 0, 0, m_waitIndicator->GetLocation().m_x, m_waitIndicator->GetLocation().m_y, m_waitIndicator->GetWidth(), m_waitIndicator->GetHeight(), unkbool);
|
||||
}
|
||||
else
|
||||
{
|
||||
MxDisplaySurface *displaySurface = VideoManager()->GetDisplaySurface();
|
||||
displaySurface->vtable24(ddsc, m_waitIndicator->m_unk50, 0, 0, m_waitIndicator->GetLocation().m_x, m_waitIndicator->GetLocation().m_y, m_waitIndicator->GetWidth(), m_waitIndicator->GetHeight());
|
||||
}
|
||||
}
|
||||
|
||||
@ -14,7 +14,7 @@ class MxTransitionManager : public MxCore
|
||||
MxTransitionManager();
|
||||
virtual ~MxTransitionManager() override; // vtable+0x0
|
||||
|
||||
__declspec(dllexport) void SetWaitIndicator(MxVideoPresenter *videoPresenter);
|
||||
__declspec(dllexport) void SetWaitIndicator(MxVideoPresenter *p_waitIndicator);
|
||||
|
||||
virtual MxResult Tickle(); // vtable+0x8
|
||||
|
||||
@ -44,11 +44,18 @@ class MxTransitionManager : public MxCore
|
||||
|
||||
MxResult StartTransition(TransitionType p_animationType, MxS32 p_speed, MxBool p_doCopy, MxBool p_playMusicInAnim);
|
||||
|
||||
|
||||
private:
|
||||
void EndTransition(MxBool p_notifyWorld);
|
||||
void Transition_None();
|
||||
void Transition_Dissolve();
|
||||
void SubmitCopyRect(DDSURFACEDESC &);
|
||||
void SetupCopyRect(DDSURFACEDESC &);
|
||||
void Transition_Pixelation();
|
||||
void Transition_Wipe();
|
||||
void Transition_Windows();
|
||||
void Transition_Broken();
|
||||
|
||||
void SubmitCopyRect(LPDDSURFACEDESC ddsc);
|
||||
void SetupCopyRect(LPDDSURFACEDESC ddsc);
|
||||
|
||||
MxVideoPresenter *m_waitIndicator;
|
||||
RECT m_copyRect;
|
||||
|
||||
@ -2,8 +2,94 @@
|
||||
|
||||
DECOMP_SIZE_ASSERT(MxVideoPresenter, 0x64);
|
||||
|
||||
// OFFSET: LEGO1 0x1000c700 STUB
|
||||
void MxVideoPresenter::VTable0x5c()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x1000c710 STUB
|
||||
void MxVideoPresenter::VTable0x60()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x1000c720 STUB
|
||||
void MxVideoPresenter::VTable0x68()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x1000c730 STUB
|
||||
void MxVideoPresenter::VTable0x70()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x1000c740
|
||||
MxVideoPresenter::~MxVideoPresenter()
|
||||
{
|
||||
Destroy(TRUE);
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x1000c7a0 STUB
|
||||
void MxVideoPresenter::InitVirtual()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x1000c7b0 STUB
|
||||
void MxVideoPresenter::VTable0x78()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x1000c7c0 STUB
|
||||
void MxVideoPresenter::VTable0x7c()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x1000c7e0 STUB
|
||||
MxS32 MxVideoPresenter::GetWidth()
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x1000c800 STUB
|
||||
MxS32 MxVideoPresenter::GetHeight()
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b2760 STUB
|
||||
void MxVideoPresenter::Init()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b27b0 STUB
|
||||
void MxVideoPresenter::Destroy(MxBool)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b28b0 STUB
|
||||
void MxVideoPresenter::VTable0x64()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b2a70 STUB
|
||||
void MxVideoPresenter::VTable0x6c()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b3300 STUB
|
||||
void MxVideoPresenter::VTable0x74()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
@ -13,6 +13,8 @@ class MxVideoPresenter : public MxMediaPresenter
|
||||
Init();
|
||||
}
|
||||
|
||||
virtual ~MxVideoPresenter() override; // vtable+0x0
|
||||
|
||||
// OFFSET: LEGO1 0x1000c820
|
||||
inline virtual const char *ClassName() const override // vtable+0x0c
|
||||
{
|
||||
@ -27,6 +29,21 @@ class MxVideoPresenter : public MxMediaPresenter
|
||||
}
|
||||
|
||||
void Init();
|
||||
void Destroy(MxBool);
|
||||
|
||||
virtual void InitVirtual() override; // vtable+0x38
|
||||
|
||||
virtual void VTable0x5c(); // vtable+0x5c
|
||||
virtual void VTable0x60(); // vtable+0x60
|
||||
virtual void VTable0x64(); // vtable+0x64
|
||||
virtual void VTable0x68(); // vtable+0x68
|
||||
virtual void VTable0x6c(); // vtable+0x6c
|
||||
virtual void VTable0x70(); // vtable+0x70
|
||||
virtual void VTable0x74(); // vtable+0x74
|
||||
virtual void VTable0x78(); // vtable+0x78
|
||||
virtual void VTable0x7c(); // vtable+0x7c
|
||||
virtual MxS32 GetWidth(); // vtable+0x80
|
||||
virtual MxS32 GetHeight(); // vtable+0x84
|
||||
|
||||
undefined4 m_unk50;
|
||||
undefined4 m_unk54;
|
||||
|
||||
@ -114,7 +114,7 @@ def __init__(self, unix_cwd):
|
||||
|
||||
def get_wine_path(self, unix_fn: str) -> str:
|
||||
if unix_fn.startswith('./'):
|
||||
return self.win_cmd + '\\' + unix_fn[2:].replace('/', '\\')
|
||||
return self.win_cwd + '\\' + unix_fn[2:].replace('/', '\\')
|
||||
if unix_fn.startswith(self.unix_cwd):
|
||||
return self.win_cwd + '\\' + unix_fn.removeprefix(self.unix_cwd).replace('/', '\\').lstrip('\\')
|
||||
return self._call_winepath_unix2win(unix_fn)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user