From 8c48aaa100f81fad30d6fd222ce91b1d362f6f64 Mon Sep 17 00:00:00 2001 From: Sour Date: Thu, 15 Mar 2018 23:57:35 -0400 Subject: [PATCH] BaseMapper: Keep _hasBattery flag, even if save ram is 0 bytes long (+ removed old ForceBattery patch) --- Core/BaseMapper.cpp | 14 +++++--------- Core/BaseMapper.h | 1 - Core/TaitoX1005.h | 6 ------ Core/TaitoX1017.h | 6 ------ 4 files changed, 5 insertions(+), 22 deletions(-) diff --git a/Core/BaseMapper.cpp b/Core/BaseMapper.cpp index 8aa233f1..730ba64b 100644 --- a/Core/BaseMapper.cpp +++ b/Core/BaseMapper.cpp @@ -338,22 +338,22 @@ bool BaseMapper::HasBattery() void BaseMapper::LoadBattery() { - if(HasBattery()) { + if(HasBattery() && _saveRamSize > 0) { BatteryManager::LoadBattery(".sav", _saveRam, _saveRamSize); } - if(_hasChrBattery) { + if(_hasChrBattery && _chrRamSize > 0) { BatteryManager::LoadBattery(".sav.chr", _chrRam, _chrRamSize); } } void BaseMapper::SaveBattery() { - if(HasBattery()) { + if(HasBattery() && _saveRamSize > 0) { BatteryManager::SaveBattery(".sav", _saveRam, _saveRamSize); } - if(_hasChrBattery) { + if(_hasChrBattery && _chrRamSize > 0) { BatteryManager::SaveBattery(".sav.chr", _chrRam, _chrRamSize); } } @@ -478,7 +478,7 @@ void BaseMapper::Initialize(RomData &romData) _romFilename = romData.Filename; _batteryFilename = GetBatteryFilename(); - _hasBattery = (romData.HasBattery || ForceBattery()); + _hasBattery = romData.HasBattery; if(romData.SaveRamSize == -1 || ForceSaveRamSize()) { _saveRamSize = GetSaveRamSize(); @@ -486,10 +486,6 @@ void BaseMapper::Initialize(RomData &romData) _saveRamSize = romData.SaveRamSize; } - if(_saveRamSize == 0) { - _hasBattery = false; - } - if(romData.WorkRamSize == -1 || ForceWorkRamSize()) { _workRamSize = GetWorkRamSize(); } else { diff --git a/Core/BaseMapper.h b/Core/BaseMapper.h index db2064d5..aee07d48 100644 --- a/Core/BaseMapper.h +++ b/Core/BaseMapper.h @@ -90,7 +90,6 @@ protected: //Save ram is battery backed and saved to disk virtual uint32_t GetSaveRamSize() { return HasBattery() ? 0x2000 : 0; } virtual uint32_t GetSaveRamPageSize() { return 0x2000; } - virtual bool ForceBattery() { return false; } virtual bool ForceChrBattery() { return false; } virtual bool ForceSaveRamSize() { return false; } diff --git a/Core/TaitoX1005.h b/Core/TaitoX1005.h index 558eb486..aa7100fd 100644 --- a/Core/TaitoX1005.h +++ b/Core/TaitoX1005.h @@ -33,12 +33,6 @@ protected: UpdateRamAccess(); } - virtual bool ForceBattery() override - { - //Patch: Force battery, because some headers are marked as having no battery even though the game expects one - return true; - } - void WriteRegister(uint16_t addr, uint8_t value) override { switch(addr) { diff --git a/Core/TaitoX1017.h b/Core/TaitoX1017.h index 477dbbc0..18178a95 100644 --- a/Core/TaitoX1017.h +++ b/Core/TaitoX1017.h @@ -40,12 +40,6 @@ protected: UpdateRamAccess(); } - virtual bool ForceBattery() override - { - //Patch: Force battery, because some headers are marked as having no battery even though the game expects one - return true; - } - void UpdateChrBanking() { if(_chrMode == 0) {