Input: Fixed issues with Battle Box/Turbo File save data being saved under the wrong filename when changing games

This commit is contained in:
Sour 2017-12-27 12:32:10 -05:00
parent d3d7499185
commit 41c181a39f
3 changed files with 19 additions and 4 deletions

View file

@ -4,6 +4,7 @@
#include "../Utilities/FolderUtilities.h"
string BatteryManager::_romName;
bool BatteryManager::_saveEnabled = true;
std::weak_ptr<IBatteryRecorder> BatteryManager::_recorder;
std::weak_ptr<IBatteryProvider> BatteryManager::_provider;
@ -17,6 +18,11 @@ string BatteryManager::GetBasePath()
return FolderUtilities::CombinePath(FolderUtilities::GetSaveFolder(), _romName);
}
void BatteryManager::SetSaveEnabled(bool enabled)
{
_saveEnabled = enabled;
}
void BatteryManager::SetBatteryProvider(shared_ptr<IBatteryProvider> provider)
{
_provider = provider;
@ -29,9 +35,11 @@ void BatteryManager::SetBatteryRecorder(shared_ptr<IBatteryRecorder> recorder)
void BatteryManager::SaveBattery(string extension, uint8_t* data, uint32_t length)
{
ofstream out(GetBasePath() + extension, ios::binary);
if(out) {
out.write((char*)data, length);
if(_saveEnabled) {
ofstream out(GetBasePath() + extension, ios::binary);
if(out) {
out.write((char*)data, length);
}
}
}

View file

@ -17,6 +17,7 @@ class BatteryManager
{
private:
static string _romName;
static bool _saveEnabled;
static string GetBasePath();
static std::weak_ptr<IBatteryProvider> _provider;
@ -26,6 +27,8 @@ private:
public:
static void Initialize(string romName);
static void SetSaveEnabled(bool enabled);
static void SetBatteryProvider(shared_ptr<IBatteryProvider> provider);
static void SetBatteryRecorder(shared_ptr<IBatteryRecorder> recorder);

View file

@ -117,7 +117,7 @@ bool Console::Initialize(VirtualFile &romFile, VirtualFile &patchFile)
}
_autoSaveManager.reset(new AutoSaveManager());
_mapper = mapper;
_memoryManager.reset(new MemoryManager(_mapper));
_cpu.reset(new CPU(_memoryManager.get()));
@ -129,12 +129,16 @@ bool Console::Initialize(VirtualFile &romFile, VirtualFile &patchFile)
default: _systemActionManager.reset(new SystemActionManager(Console::GetInstance())); break;
}
//Temporarely disable battery saves to prevent battery files from being created for the wrong game (for Battle Box & Turbo File)
BatteryManager::SetSaveEnabled(false);
if(_mapper->GetGameSystem() == GameSystem::VsUniSystem) {
_controlManager.reset(new VsControlManager(_systemActionManager, _mapper->GetMapperControlDevice()));
} else {
_controlManager.reset(new ControlManager(_systemActionManager, _mapper->GetMapperControlDevice()));
}
_controlManager->UpdateControlDevices();
//Re-enable battery saves
BatteryManager::SetSaveEnabled(true);
if(_hdData && (!_hdData->Tiles.empty() || !_hdData->Backgrounds.empty())) {
_ppu.reset(new HdPpu(_mapper.get(), _controlManager.get(), _hdData->Version));