FDS: Fixed minor issue with save states that caused problems when using run ahead
This commit is contained in:
parent
91a28c1340
commit
78288fc456
2 changed files with 16 additions and 9 deletions
22
Core/FDS.cpp
22
Core/FDS.cpp
|
@ -29,6 +29,9 @@ void FDS::InitMapper(RomData &romData)
|
|||
_fdsDiskSides = romData.FdsDiskData;
|
||||
_fdsDiskHeaders = romData.FdsDiskHeaders;
|
||||
_fdsRawData = romData.RawData;
|
||||
|
||||
FdsLoader loader;
|
||||
loader.LoadDiskData(_fdsRawData, _orgDiskSides, _orgDiskHeaders);
|
||||
|
||||
//Apply save data (saved as an IPS file), if found
|
||||
vector<uint8_t> ipsData = _console->GetBatteryManager()->LoadBattery(".ips");
|
||||
|
@ -488,16 +491,17 @@ void FDS::StreamState(bool saving)
|
|||
_diskNumber, _diskPosition, _delay, _previousCrcControlFlag, _gapEnded, _scanningDisk, _transferComplete, audio);
|
||||
|
||||
if(saving) {
|
||||
vector<uint8_t> ipsData = CreateIpsPatch();
|
||||
VectorInfo<uint8_t> data{ &ipsData };
|
||||
Stream(data);
|
||||
for(size_t i = 0; i < _fdsDiskSides.size(); i++) {
|
||||
vector<uint8_t> ipsData = IpsPatcher::CreatePatch(_orgDiskSides[i], _fdsDiskSides[i]);
|
||||
VectorInfo<uint8_t> data { &ipsData };
|
||||
Stream(data);
|
||||
}
|
||||
} else {
|
||||
vector<uint8_t> ipsData;
|
||||
VectorInfo<uint8_t> data{ &ipsData };
|
||||
Stream(data);
|
||||
|
||||
if(ipsData.size() > 0) {
|
||||
LoadDiskData(ipsData);
|
||||
for(size_t i = 0; i < _fdsDiskSides.size(); i++) {
|
||||
vector<uint8_t> ipsData;
|
||||
VectorInfo<uint8_t> data { &ipsData };
|
||||
Stream(data);
|
||||
IpsPatcher::PatchBuffer(ipsData, _orgDiskSides[i], _fdsDiskSides[i]);
|
||||
}
|
||||
|
||||
//Make sure we disable fast forwarding when loading a state
|
||||
|
|
|
@ -70,6 +70,9 @@ private:
|
|||
vector<vector<uint8_t>> _fdsDiskHeaders;
|
||||
string _romFilepath;
|
||||
|
||||
vector<vector<uint8_t>> _orgDiskSides;
|
||||
vector<vector<uint8_t>> _orgDiskHeaders;
|
||||
|
||||
bool _gameStarted;
|
||||
bool _needSave = false;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue