diff --git a/LEGO1/omni/include/mxtimer.h b/LEGO1/omni/include/mxtimer.h index 034b1565..02e55146 100644 --- a/LEGO1/omni/include/mxtimer.h +++ b/LEGO1/omni/include/mxtimer.h @@ -4,6 +4,7 @@ #include "mxcore.h" // VTABLE: LEGO1 0x100dc0e0 +// VTABLE: BETA10 0x101c1bb0 // SIZE 0x10 class MxTimer : public MxCore { public: @@ -14,19 +15,23 @@ public: MxLong GetRealTime(); + // FUNCTION: BETA10 0x1012bf50 + void InitLastTimeCalculated() { g_lastTimeCalculated = m_startTime; } + // FUNCTION: BETA10 0x10017810 MxLong GetTime() { // Note that the BETA10 implementation differs - it only consists of the second branch of this `if` call - if (this->m_isRunning) { + if (m_isRunning) { return g_lastTimeTimerStarted; } else { - return g_lastTimeCalculated - this->m_startTime; + return g_lastTimeCalculated - m_startTime; } } // SYNTHETIC: LEGO1 0x100ae0d0 + // SYNTHETIC: BETA10 0x1012bf80 // MxTimer::`scalar deleting destructor' private: @@ -37,4 +42,7 @@ private: static MxLong g_lastTimeTimerStarted; }; +// SYNTHETIC: BETA10 0x1012bfc0 +// MxTimer::~MxTimer + #endif // MXTIMER_H diff --git a/LEGO1/omni/src/common/mxtimer.cpp b/LEGO1/omni/src/common/mxtimer.cpp index 0d6d00f1..98111b50 100644 --- a/LEGO1/omni/src/common/mxtimer.cpp +++ b/LEGO1/omni/src/common/mxtimer.cpp @@ -3,40 +3,42 @@ #include // GLOBAL: LEGO1 0x10101414 +// GLOBAL: BETA10 0x10201f84 MxLong MxTimer::g_lastTimeCalculated = 0; // GLOBAL: LEGO1 0x10101418 MxLong MxTimer::g_lastTimeTimerStarted = 0; // FUNCTION: LEGO1 0x100ae060 +// FUNCTION: BETA10 0x1012bea0 MxTimer::MxTimer() { - this->m_isRunning = FALSE; + m_isRunning = FALSE; m_startTime = timeGetTime(); - // yeah this is somehow what the asm is - g_lastTimeCalculated = m_startTime; + InitLastTimeCalculated(); } // FUNCTION: LEGO1 0x100ae140 +// FUNCTION: BETA10 0x1012bf23 MxLong MxTimer::GetRealTime() { MxTimer::g_lastTimeCalculated = timeGetTime(); - return MxTimer::g_lastTimeCalculated - this->m_startTime; + return MxTimer::g_lastTimeCalculated - m_startTime; } // FUNCTION: LEGO1 0x100ae160 void MxTimer::Start() { - g_lastTimeTimerStarted = this->GetRealTime(); - this->m_isRunning = TRUE; + g_lastTimeTimerStarted = GetRealTime(); + m_isRunning = TRUE; } // FUNCTION: LEGO1 0x100ae180 void MxTimer::Stop() { - MxLong elapsed = this->GetRealTime(); + MxLong elapsed = GetRealTime(); MxLong startTime = elapsed - MxTimer::g_lastTimeTimerStarted; - this->m_isRunning = FALSE; + m_isRunning = FALSE; // this feels very stupid but it's what the assembly does - this->m_startTime = this->m_startTime + startTime - 5; + m_startTime = m_startTime + startTime - 5; }