BETA matches for SoundManagers (#1646)

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
This commit is contained in:
jonschz
2025-07-21 23:42:42 +02:00
committed by GitHub
parent fd299137ff
commit 36f6d963dc
17 changed files with 201 additions and 92 deletions

View File

@@ -3,27 +3,32 @@
DECOMP_SIZE_ASSERT(MxAudioManager, 0x30);
// GLOBAL: LEGO1 0x10102108
// GLOBAL: BETA10 0x10203a60
MxS32 MxAudioManager::g_count = 0;
// FUNCTION: LEGO1 0x100b8d00
// FUNCTION: BETA10 0x10144e90
MxAudioManager::MxAudioManager()
{
Init();
}
// FUNCTION: LEGO1 0x100b8d90
// STUB: BETA10 0x10144f07
MxAudioManager::~MxAudioManager()
{
Destroy(TRUE);
}
// FUNCTION: LEGO1 0x100b8df0
// FUNCTION: BETA10 0x10144f79
void MxAudioManager::Init()
{
m_volume = 100;
}
// FUNCTION: LEGO1 0x100b8e00
// FUNCTION: BETA10 0x10144f9c
void MxAudioManager::Destroy(MxBool p_fromDestructor)
{
ENTER(m_criticalSection);
@@ -32,17 +37,49 @@ void MxAudioManager::Destroy(MxBool p_fromDestructor)
m_criticalSection.Leave();
if (!p_fromDestructor) {
MxMediaManager::Destroy();
MxPresentationManager::Destroy();
}
}
#ifdef BETA10
// FUNCTION: BETA10 0x10144ffe
MxResult MxAudioManager::Create()
{
MxResult result = FAILURE;
MxBool success = FALSE;
if (MxPresentationManager::Create() != SUCCESS) {
goto exit;
}
ENTER(m_criticalSection);
success = TRUE;
if (!g_count++) {
// This is correct. It was likely refactored later.
}
exit:
result = SUCCESS;
if (result) {
Destroy();
}
if (success) {
m_criticalSection.Leave();
}
return result;
}
#else
// FUNCTION: LEGO1 0x100b8e40
MxResult MxAudioManager::Create()
{
MxResult result = FAILURE;
MxBool success = FALSE;
if (MxMediaManager::Create() == SUCCESS) {
if (MxPresentationManager::Create() == SUCCESS) {
ENTER(m_criticalSection);
success = TRUE;
result = SUCCESS;
@@ -59,14 +96,17 @@ MxResult MxAudioManager::Create()
return result;
}
#endif
// FUNCTION: LEGO1 0x100b8e90
// FUNCTION: BETA10 0x101450a7
void MxAudioManager::Destroy()
{
Destroy(FALSE);
}
// FUNCTION: LEGO1 0x100b8ea0
// FUNCTION: BETA10 0x101450c7
void MxAudioManager::SetVolume(MxS32 p_volume)
{
ENTER(m_criticalSection);

View File

@@ -23,18 +23,21 @@ MxS32 g_volumeAttenuation[100] = {-6643, -5643, -5058, -4643, -4321, -4058, -383
-43, -29, -14, 0};
// FUNCTION: LEGO1 0x100ae740
// FUNCTION: BETA10 0x10132c70
MxSoundManager::MxSoundManager()
{
Init();
}
// FUNCTION: LEGO1 0x100ae7d0
// FUNCTION: BETA10 0x10132ce7
MxSoundManager::~MxSoundManager()
{
Destroy(TRUE);
}
// FUNCTION: LEGO1 0x100ae830
// FUNCTION: BETA10 0x10132d59
void MxSoundManager::Init()
{
m_directSound = NULL;
@@ -42,6 +45,7 @@ void MxSoundManager::Init()
}
// FUNCTION: LEGO1 0x100ae840
// FUNCTION: BETA10 0x10132d89
void MxSoundManager::Destroy(MxBool p_fromDestructor)
{
if (m_thread) {
@@ -156,12 +160,14 @@ done:
}
// FUNCTION: LEGO1 0x100aeab0
// FUNCTION: BETA10 0x101331e3
void MxSoundManager::Destroy()
{
Destroy(FALSE);
}
// FUNCTION: LEGO1 0x100aeac0
// FUNCTION: BETA10 0x10133203
void MxSoundManager::SetVolume(MxS32 p_volume)
{
MxAudioManager::SetVolume(p_volume);
@@ -179,6 +185,7 @@ void MxSoundManager::SetVolume(MxS32 p_volume)
}
// FUNCTION: LEGO1 0x100aebd0
// FUNCTION: BETA10 0x101332cf
MxPresenter* MxSoundManager::FindPresenter(const MxAtomId& p_atomId, MxU32 p_objectId)
{
AUTOLOCK(m_criticalSection);
@@ -187,8 +194,7 @@ MxPresenter* MxSoundManager::FindPresenter(const MxAtomId& p_atomId, MxU32 p_obj
MxPresenterListCursor cursor(m_presenters);
while (cursor.Next(presenter)) {
if (presenter->GetAction()->GetAtomId().GetInternal() == p_atomId.GetInternal() &&
presenter->GetAction()->GetObjectId() == p_objectId) {
if (presenter->GetAction()->GetAtomId() == p_atomId && presenter->GetAction()->GetObjectId() == p_objectId) {
return presenter;
}
}

View File

@@ -131,6 +131,7 @@ done:
}
// FUNCTION: LEGO1 0x100b5bc0
// STUB: BETA10 0x1013623c
void MxMediaPresenter::EndAction()
{
AUTOLOCK(m_criticalSection);

View File

@@ -1,4 +1,4 @@
#include "mxmediamanager.h"
#include "mxpresentationmanager.h"
#include "decomp.h"
#include "mxautolock.h"
@@ -6,24 +6,27 @@
#include "mxpresenter.h"
#include "mxticklemanager.h"
DECOMP_SIZE_ASSERT(MxMediaManager, 0x2c);
DECOMP_SIZE_ASSERT(MxPresentationManager, 0x2c);
DECOMP_SIZE_ASSERT(MxPresenterList, 0x18);
DECOMP_SIZE_ASSERT(MxPresenterListCursor, 0x10);
// FUNCTION: LEGO1 0x100b84c0
MxMediaManager::MxMediaManager()
// FUNCTION: BETA10 0x10144680
MxPresentationManager::MxPresentationManager()
{
Init();
}
// FUNCTION: LEGO1 0x100b8560
MxMediaManager::~MxMediaManager()
// FUNCTION: BETA10 0x10144712
MxPresentationManager::~MxPresentationManager()
{
Destroy();
}
// FUNCTION: LEGO1 0x100b85d0
MxResult MxMediaManager::Init()
// FUNCTION: BETA10 0x1014479b
MxResult MxPresentationManager::Init()
{
this->m_presenters = NULL;
this->m_thread = NULL;
@@ -31,8 +34,10 @@ MxResult MxMediaManager::Init()
}
// FUNCTION: LEGO1 0x100b85e0
MxResult MxMediaManager::Create()
// FUNCTION: BETA10 0x101447c5
MxResult MxPresentationManager::Create()
{
// This validates the name of the source code file (and hence also the name of the class)
AUTOLOCK(m_criticalSection);
this->m_presenters = new MxPresenterList;
@@ -46,7 +51,8 @@ MxResult MxMediaManager::Create()
}
// FUNCTION: LEGO1 0x100b8710
void MxMediaManager::Destroy()
// FUNCTION: BETA10 0x101448e4
void MxPresentationManager::Destroy()
{
AUTOLOCK(m_criticalSection);
@@ -58,7 +64,8 @@ void MxMediaManager::Destroy()
}
// FUNCTION: LEGO1 0x100b8790
MxResult MxMediaManager::Tickle()
// FUNCTION: BETA10 0x10144993
MxResult MxPresentationManager::Tickle()
{
AUTOLOCK(m_criticalSection);
MxPresenter* presenter;
@@ -78,7 +85,8 @@ MxResult MxMediaManager::Tickle()
}
// FUNCTION: LEGO1 0x100b88c0
void MxMediaManager::RegisterPresenter(MxPresenter& p_presenter)
// FUNCTION: BETA10 0x10144a8b
void MxPresentationManager::RegisterPresenter(MxPresenter& p_presenter)
{
AUTOLOCK(m_criticalSection);
@@ -86,7 +94,8 @@ void MxMediaManager::RegisterPresenter(MxPresenter& p_presenter)
}
// FUNCTION: LEGO1 0x100b8980
void MxMediaManager::UnregisterPresenter(MxPresenter& p_presenter)
// FUNCTION: BETA10 0x10144b0c
void MxPresentationManager::UnregisterPresenter(MxPresenter& p_presenter)
{
AUTOLOCK(m_criticalSection);
MxPresenterListCursor cursor(this->m_presenters);
@@ -97,7 +106,8 @@ void MxMediaManager::UnregisterPresenter(MxPresenter& p_presenter)
}
// FUNCTION: LEGO1 0x100b8ac0
void MxMediaManager::StopPresenters()
// FUNCTION: BETA10 0x10144bc3
void MxPresentationManager::StopPresenters()
{
AUTOLOCK(m_criticalSection);
MxPresenter* presenter;

View File

@@ -35,7 +35,7 @@ void MxEventManager::Destroy(MxBool p_fromDestructor)
}
if (!p_fromDestructor) {
MxMediaManager::Destroy();
MxPresentationManager::Destroy();
}
}
@@ -45,7 +45,7 @@ MxResult MxEventManager::Create(MxU32 p_frequencyMS, MxBool p_createThread)
MxResult status = FAILURE;
MxBool locked = FALSE;
MxResult result = MxMediaManager::Create();
MxResult result = MxPresentationManager::Create();
if (result == SUCCESS) {
if (p_createThread) {
ENTER(this->m_criticalSection);

View File

@@ -19,17 +19,20 @@ MxVideoManager::MxVideoManager()
}
// FUNCTION: LEGO1 0x100be270
// FUNCTION: BETA10 0x1012dde0
void MxVideoManager::UpdateView(MxU32 p_x, MxU32 p_y, MxU32 p_width, MxU32 p_height)
{
}
// FUNCTION: LEGO1 0x100be2a0
// FUNCTION: BETA10 0x1012cad8
MxVideoManager::~MxVideoManager()
{
Destroy(TRUE);
}
// FUNCTION: LEGO1 0x100be320
// FUNCTION: BETA10 0x1012cb66
MxResult MxVideoManager::Init()
{
m_pDirectDraw = NULL;
@@ -42,6 +45,7 @@ MxResult MxVideoManager::Init()
}
// FUNCTION: LEGO1 0x100be340
// FUNCTION: BETA10 0x1012cbca
void MxVideoManager::Destroy(MxBool p_fromDestructor)
{
if (m_thread) {
@@ -79,7 +83,7 @@ void MxVideoManager::Destroy(MxBool p_fromDestructor)
m_criticalSection.Leave();
if (!p_fromDestructor) {
MxMediaManager::Destroy();
MxPresentationManager::Destroy();
}
}
@@ -132,6 +136,7 @@ void MxVideoManager::SortPresenterList()
}
// FUNCTION: LEGO1 0x100be600
// STUB: BETA10 0x1012cfbc
MxResult MxVideoManager::VTable0x28(
MxVideoParam& p_videoParam,
LPDIRECTDRAW p_pDirectDraw,
@@ -148,7 +153,7 @@ MxResult MxVideoManager::VTable0x28(
m_unk0x60 = FALSE;
if (MxMediaManager::Create() != SUCCESS) {
if (MxPresentationManager::Create() != SUCCESS) {
goto done;
}
@@ -214,6 +219,7 @@ done:
}
// FUNCTION: LEGO1 0x100be820
// STUB: BETA10 0x1012d3f1
MxResult MxVideoManager::Create(MxVideoParam& p_videoParam, MxU32 p_frequencyMS, MxBool p_createThread)
{
MxBool locked = FALSE;
@@ -221,7 +227,7 @@ MxResult MxVideoManager::Create(MxVideoParam& p_videoParam, MxU32 p_frequencyMS,
m_unk0x60 = TRUE;
if (MxMediaManager::Create() != SUCCESS) {
if (MxPresentationManager::Create() != SUCCESS) {
goto done;
}
@@ -292,6 +298,7 @@ done:
}
// FUNCTION: LEGO1 0x100bea50
// FUNCTION: BETA10 0x1012d85f
void MxVideoManager::Destroy()
{
Destroy(FALSE);
@@ -310,6 +317,7 @@ void MxVideoManager::InvalidateRect(MxRect32& p_rect)
}
// FUNCTION: LEGO1 0x100bea90
// FUNCTION: BETA10 0x1012d8e3
MxResult MxVideoManager::Tickle()
{
AUTOLOCK(m_criticalSection);