diff --git a/Source/Project64-core/N64System/N64Class.h b/Source/Project64-core/N64System/N64Class.h index f61cd9110..4c89fd990 100644 --- a/Source/Project64-core/N64System/N64Class.h +++ b/Source/Project64-core/N64System/N64Class.h @@ -67,6 +67,9 @@ public: void EndEmulation(); void SyncToAudio(); void AlterSpeed(const CSpeedLimiter::ESpeedChange SpeedChange) { m_Limiter.AlterSpeed(SpeedChange); } + void SetSpeed(int Speed) { m_Limiter.SetSpeed(Speed); } + int GetSpeed(void) const { return m_Limiter.GetSpeed(); } + int GetBaseSpeed(void) const { return m_Limiter.GetBaseSpeed(); } void Reset(bool bInitReg, bool ClearMenory); void GameReset(); void PluginReset(); diff --git a/Source/Project64-core/N64System/SpeedLimiterClass.cpp b/Source/Project64-core/N64System/SpeedLimiterClass.cpp index 0446c397f..44ad876ab 100644 --- a/Source/Project64-core/N64System/SpeedLimiterClass.cpp +++ b/Source/Project64-core/N64System/SpeedLimiterClass.cpp @@ -102,3 +102,24 @@ void CSpeedLimiter::AlterSpeed( const ESpeedChange SpeedChange ) SpeedChanged(m_Speed); FixSpeedRatio(); } + +void CSpeedLimiter::SetSpeed(int Speed) +{ + if (Speed < 1) + { + Speed = 1; + } + m_Speed = Speed; + SpeedChanged(m_Speed); + FixSpeedRatio(); +} + +int CSpeedLimiter::GetSpeed(void) const +{ + return m_Speed; +} + +int CSpeedLimiter::GetBaseSpeed(void) const +{ + return m_BaseSpeed; +} diff --git a/Source/Project64-core/N64System/SpeedLimiterClass.h b/Source/Project64-core/N64System/SpeedLimiterClass.h index 4dadfe68f..a8c12d25a 100644 --- a/Source/Project64-core/N64System/SpeedLimiterClass.h +++ b/Source/Project64-core/N64System/SpeedLimiterClass.h @@ -28,6 +28,10 @@ public: void AlterSpeed(const ESpeedChange SpeedChange); + void SetSpeed(int Speed); + int GetSpeed(void) const; + int GetBaseSpeed(void) const; + private: CSpeedLimiter(const CSpeedLimiter&); // Disable copy constructor CSpeedLimiter& operator=(const CSpeedLimiter&); // Disable assignment