Removed duplicate code between increase and decrease speed in SpeedLimiterClass by merging into one AlterSpeed

This commit is contained in:
Jake Huxell 2016-09-17 19:10:22 +01:00
parent 40d1a4ed75
commit 4c8e148ed1
4 changed files with 47 additions and 47 deletions

View File

@ -67,8 +67,7 @@ public:
void StartEmulation(bool NewThread); void StartEmulation(bool NewThread);
void EndEmulation(); void EndEmulation();
void SyncToAudio(); void SyncToAudio();
void IncreaseSpeed() { m_Limiter.IncreaseSpeed(); } void AlterSpeed(const CSpeedLimiter::ESpeedChange SpeedChange) { m_Limiter.AlterSpeed(SpeedChange); }
void DecreaseSpeed() { m_Limiter.DecreaseSpeed(); }
void Reset(bool bInitReg, bool ClearMenory); void Reset(bool bInitReg, bool ClearMenory);
void GameReset(); void GameReset();
void PluginReset(); void PluginReset();

View File

@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
* * * *
* Project64 - A Nintendo 64 emulator. * * Project64 - A Nintendo 64 emulator. *
* http://www.pj64-emu.com/ * * http://www.pj64-emu.com/ *
* Copyright (C) 2012 Project64. All rights reserved. * * Copyright (C) 2012 Project64. All rights reserved. *
* * * *
@ -8,14 +8,23 @@
* GNU/GPLv2 http://www.gnu.org/licenses/gpl-2.0.html * * GNU/GPLv2 http://www.gnu.org/licenses/gpl-2.0.html *
* * * *
****************************************************************************/ ****************************************************************************/
#include "stdafx.h" #include "stdafx.h"
#include "SpeedLimiterClass.h" #include "Project64-Core/N64System/SpeedLimiterClass.h"
#include <Common/Util.h> #include <Common/Util.h>
// ---------------------------------------------------
const uint32_t CSpeedLimiter::m_HighSpeed = 60;
const uint32_t CSpeedLimiter::m_MediumSpeed = 15;
// ---------------------------------------------------
CSpeedLimiter::CSpeedLimiter() : CSpeedLimiter::CSpeedLimiter() :
m_Frames(0), m_Frames(0),
m_Speed(60), m_Speed(m_HighSpeed),
m_BaseSpeed(60) m_BaseSpeed(m_HighSpeed)
{ {
} }
@ -73,38 +82,24 @@ bool CSpeedLimiter::Timer_Process(uint32_t * FrameRate)
return false; return false;
} }
void CSpeedLimiter::IncreaseSpeed() void CSpeedLimiter::AlterSpeed( const ESpeedChange SpeedChange )
{ {
if (m_Speed >= 60) int32_t SpeedFactor = 1;
{ if (SpeedChange == DECREASE_SPEED) { SpeedFactor = -1; }
m_Speed += 10;
}
else if (m_Speed >= 15)
{
m_Speed += 5;
}
else
{
m_Speed += 1;
}
SpeedChanged(m_Speed);
FixSpeedRatio();
}
void CSpeedLimiter::DecreaseSpeed() if (m_Speed >= m_HighSpeed)
{ {
if (m_Speed > 60) m_Speed += 10 * SpeedFactor;
{ }
m_Speed -= 10; else if (m_Speed >= m_MediumSpeed)
} {
else if (m_Speed > 15) m_Speed += 5 * SpeedFactor;
{ }
m_Speed -= 5; else
} {
else if (m_Speed > 1) m_Speed += 1 * SpeedFactor;
{ }
m_Speed -= 1;
} SpeedChanged(m_Speed);
SpeedChanged(m_Speed); FixSpeedRatio();
FixSpeedRatio(); }
}

View File

@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
* * * *
* Project64 - A Nintendo 64 emulator. * * Project64 - A Nintendo 64 emulator. *
* http://www.pj64-emu.com/ * * http://www.pj64-emu.com/ *
* Copyright (C) 2012 Project64. All rights reserved. * * Copyright (C) 2012 Project64. All rights reserved. *
* * * *
@ -11,19 +11,22 @@
#pragma once #pragma once
#include <Project64-core/Settings/GameSettings.h> #include <Project64-core/Settings/GameSettings.h>
#include <Common/HighResTimeStamp.h> #include <Common/HighResTimeStamp.h>
class CSpeedLimiter : class CSpeedLimiter :
private CGameSettings private CGameSettings
{ {
public: public:
enum ESpeedChange { INCREASE_SPEED, DECREASE_SPEED };
CSpeedLimiter(); CSpeedLimiter();
~CSpeedLimiter(); ~CSpeedLimiter();
void SetHertz(const uint32_t Hertz); void SetHertz(const uint32_t Hertz);
bool Timer_Process(uint32_t* const FrameRate); bool Timer_Process(uint32_t* const FrameRate);
void IncreaseSpeed();
void DecreaseSpeed(); void AlterSpeed(const ESpeedChange SpeedChange);
private: private:
CSpeedLimiter(const CSpeedLimiter&); // Disable copy constructor CSpeedLimiter(const CSpeedLimiter&); // Disable copy constructor
@ -31,7 +34,10 @@ private:
void FixSpeedRatio(); void FixSpeedRatio();
uint32_t m_Speed, m_BaseSpeed, m_Frames; HighResTimeStamp m_LastTime;
HighResTimeStamp m_LastTime;
uint32_t m_MicroSecondsPerFrame; uint32_t m_Speed, m_BaseSpeed, m_Frames, m_MicroSecondsPerFrame;
static const uint32_t m_HighSpeed;
static const uint32_t m_MediumSpeed;
}; };

View File

@ -385,10 +385,10 @@ bool CMainMenu::ProcessMessage(HWND hWnd, DWORD /*FromAccelerator*/, DWORD MenuI
} }
break; break;
case ID_OPTIONS_INCREASE_SPEED: case ID_OPTIONS_INCREASE_SPEED:
g_BaseSystem->IncreaseSpeed(); g_BaseSystem->AlterSpeed(CSpeedLimiter::INCREASE_SPEED);
break; break;
case ID_OPTIONS_DECREASE_SPEED: case ID_OPTIONS_DECREASE_SPEED:
g_BaseSystem->DecreaseSpeed(); g_BaseSystem->AlterSpeed(CSpeedLimiter::DECREASE_SPEED);
break; break;
case ID_OPTIONS_FULLSCREEN: case ID_OPTIONS_FULLSCREEN:
g_BaseSystem->ExternalEvent(SysEvent_ChangingFullScreen); g_BaseSystem->ExternalEvent(SysEvent_ChangingFullScreen);