Fixed MMC5 issues caused by previous changes to how save/work ram size are determined

This commit is contained in:
Souryo 2016-08-26 21:57:32 -04:00
parent 514663fba0
commit 86df4314b4
3 changed files with 8 additions and 2 deletions

View file

@ -425,13 +425,13 @@ void BaseMapper::Initialize(RomData &romData)
_romFilename = romData.Filename;
_batteryFilename = GetBatteryFilename();
if(romData.SaveRamSize == -1) {
if(romData.SaveRamSize == -1 || ForceSaveRamSize()) {
_saveRamSize = GetSaveRamSize(); //Needed because we need to call SaveBattery() in the destructor (and calling virtual functions in the destructor doesn't work correctly)
} else {
_saveRamSize = romData.SaveRamSize;
}
if(romData.WorkRamSize == -1) {
if(romData.WorkRamSize == -1 || ForceWorkRamSize()) {
_workRamSize = GetWorkRamSize();
} else {
_workRamSize = romData.WorkRamSize;

View file

@ -114,6 +114,9 @@ protected:
virtual uint32_t GetSaveRamPageSize() { return 0x2000; }
virtual bool ForceBattery() { return false; }
virtual bool ForceChrBattery() { return false; }
virtual bool ForceSaveRamSize() { return false; }
virtual bool ForceWorkRamSize() { return false; }
virtual uint32_t GetChrRamSize() { return 0x0000; }

View file

@ -269,6 +269,9 @@ protected:
virtual uint32_t GetSaveRamPageSize() { return 0x2000; }
virtual uint32_t GetWorkRamSize() { return 0x400; }
virtual uint32_t GetWorkRamPageSize() { return 0x400; }
virtual bool ForceSaveRamSize() { return true; }
virtual bool ForceWorkRamSize() { return true; }
virtual bool AllowRegisterRead() { return true; }
virtual void InitMapper()