mirror of
https://github.com/libretro/Mesen.git
synced 2025-03-02 21:47:59 +00:00
Softpatching: Fixed IPS/BPS files not being applied properly
This commit is contained in:
parent
f21c473449
commit
6bc5b89ae4
@ -168,20 +168,24 @@ bool VirtualFile::ApplyPatch(VirtualFile &patch)
|
||||
{
|
||||
//Apply patch file
|
||||
bool result = false;
|
||||
if(patch.IsValid() && patch._data.size() >= 5) {
|
||||
vector<uint8_t> patchedData;
|
||||
std::stringstream ss;
|
||||
patch.ReadFile(ss);
|
||||
if(IsValid() && patch.IsValid()) {
|
||||
patch.LoadFile();
|
||||
LoadFile();
|
||||
if(patch._data.size() >= 5) {
|
||||
vector<uint8_t> patchedData;
|
||||
std::stringstream ss;
|
||||
patch.ReadFile(ss);
|
||||
|
||||
if(memcmp(patch._data.data(), "PATCH", 5) == 0) {
|
||||
result = IpsPatcher::PatchBuffer(ss, _data, patchedData);
|
||||
} else if(memcmp(patch._data.data(), "UPS1", 4) == 0) {
|
||||
result = UpsPatcher::PatchBuffer(ss, _data, patchedData);
|
||||
} else if(memcmp(patch._data.data(), "BPS1", 4) == 0) {
|
||||
result = BpsPatcher::PatchBuffer(ss, _data, patchedData);
|
||||
}
|
||||
if(result) {
|
||||
_data = patchedData;
|
||||
if(memcmp(patch._data.data(), "PATCH", 5) == 0) {
|
||||
result = IpsPatcher::PatchBuffer(ss, _data, patchedData);
|
||||
} else if(memcmp(patch._data.data(), "UPS1", 4) == 0) {
|
||||
result = UpsPatcher::PatchBuffer(ss, _data, patchedData);
|
||||
} else if(memcmp(patch._data.data(), "BPS1", 4) == 0) {
|
||||
result = BpsPatcher::PatchBuffer(ss, _data, patchedData);
|
||||
}
|
||||
if(result) {
|
||||
_data = patchedData;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
Loading…
x
Reference in New Issue
Block a user