MxBackgroundAudioManager (#97)

* Start MxBackgroundAudioManager

* Match MxBackgroundAudioManager constructor. This took WAY too much time.

* add size assert

* improve readability of MxBackgroundAudioManager::Enable

While the previous iteration wasn't incorrect, it definitely reads like pseudocode (i.e. it's very unlikely any actual developers would have written that). This is much more readable/likely to have been written and still results in the same asm.

---------

Co-authored-by: itsmattkc <34096995+itsmattkc@users.noreply.github.com>
This commit is contained in:
Joshua Peisach 2023-08-03 14:42:12 -04:00 committed by GitHub
parent 694045abd8
commit dc585c7f61
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 47 additions and 2 deletions

View file

@ -1,13 +1,29 @@
#include "mxbackgroundaudiomanager.h"
DECOMP_SIZE_ASSERT(MxBackgroundAudioManager, 0x150)
// OFFSET: LEGO1 0x1007ea90
MxBackgroundAudioManager::MxBackgroundAudioManager()
{
// TODO
NotificationManager()->Register(this);
m_unka0 = 0;
m_unk138 = 0;
m_unk13c = 0;
m_unk140 = 0;
m_unk144 = 0;
m_unk148 = 0;
m_musicEnabled = FALSE;
}
// OFFSET: LEGO1 0x1007ec20
MxBackgroundAudioManager::~MxBackgroundAudioManager()
{
// TODO
NotificationManager()->Unregister(this);
}
// OFFSET: LEGO1 0x1007f470
void MxBackgroundAudioManager::Stop()
{
// TODO
}
@ -15,5 +31,17 @@ MxBackgroundAudioManager::~MxBackgroundAudioManager()
// OFFSET: LEGO1 0x1007f5f0
void MxBackgroundAudioManager::Enable(MxBool p)
{
// TODO
if (this->m_musicEnabled != p) {
this->m_musicEnabled = p;
if (!p) {
Stop();
}
}
}
// OFFSET: LEGO1 0x1007f650
void MxBackgroundAudioManager::Init()
{
this->m_unka0 = 0;
this->m_unk13c = 0;
}

View file

@ -2,6 +2,9 @@
#define MXBACKGROUNDAUDIOMANAGER_H
#include "mxcore.h"
#include "mxdsaction.h"
#include "mxtypes.h"
#include "mxnotificationmanager.h"
// VTABLE 0x100d9fe8
// SIZE 0x150
@ -25,6 +28,20 @@ class MxBackgroundAudioManager : public MxCore
}
__declspec(dllexport) void Enable(unsigned char p);
private:
void Stop();
void Init();
MxBool m_musicEnabled; // 0x8
MxDSAction m_action1; // 0xc
MxS32 m_unka0;
MxDSAction m_action2; // 0xa4
MxS32 m_unk138;
MxS32 m_unk13c;
MxS32 m_unk140;
MxS32 m_unk144;
MxS16 m_unk148;
MxAtomId m_unk14c;
};
#endif // MXBACKGROUNDAUDIOMANAGER_H