summaryrefslogtreecommitdiffstats
path: root/src/core/file_sys/ips_layer.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2020-10-21 04:07:39 +0200
committerGitHub <noreply@github.com>2020-10-21 04:07:39 +0200
commit3d592972dc3fd61cc88771b889eff237e4e03e0f (patch)
tree0dbc65ac86e609ae22087c7be9d4759ac6b73004 /src/core/file_sys/ips_layer.cpp
parentkernel: Fix build with recent compiler flag changes (diff)
downloadyuzu-3d592972dc3fd61cc88771b889eff237e4e03e0f.tar
yuzu-3d592972dc3fd61cc88771b889eff237e4e03e0f.tar.gz
yuzu-3d592972dc3fd61cc88771b889eff237e4e03e0f.tar.bz2
yuzu-3d592972dc3fd61cc88771b889eff237e4e03e0f.tar.lz
yuzu-3d592972dc3fd61cc88771b889eff237e4e03e0f.tar.xz
yuzu-3d592972dc3fd61cc88771b889eff237e4e03e0f.tar.zst
yuzu-3d592972dc3fd61cc88771b889eff237e4e03e0f.zip
Diffstat (limited to '')
-rw-r--r--src/core/file_sys/ips_layer.cpp41
1 files changed, 14 insertions, 27 deletions
diff --git a/src/core/file_sys/ips_layer.cpp b/src/core/file_sys/ips_layer.cpp
index 91dc69373..a6101f1c0 100644
--- a/src/core/file_sys/ips_layer.cpp
+++ b/src/core/file_sys/ips_layer.cpp
@@ -66,14 +66,12 @@ static bool IsEOF(IPSFileType type, const std::vector<u8>& data) {
}
VirtualFile PatchIPS(const VirtualFile& in, const VirtualFile& ips) {
- if (in == nullptr || ips == nullptr) {
+ if (in == nullptr || ips == nullptr)
return nullptr;
- }
const auto type = IdentifyMagic(ips->ReadBytes(0x5));
- if (type == IPSFileType::Error) {
+ if (type == IPSFileType::Error)
return nullptr;
- }
auto in_data = in->ReadAllBytes();
@@ -86,46 +84,37 @@ VirtualFile PatchIPS(const VirtualFile& in, const VirtualFile& ips) {
}
u32 real_offset{};
- if (type == IPSFileType::IPS32) {
- real_offset = static_cast<u32>(temp[0] << 24) | static_cast<u32>(temp[1] << 16) |
- static_cast<u32>(temp[2] << 8) | temp[3];
- } else {
- real_offset =
- static_cast<u32>(temp[0] << 16) | static_cast<u32>(temp[1] << 8) | temp[2];
- }
+ if (type == IPSFileType::IPS32)
+ real_offset = (temp[0] << 24) | (temp[1] << 16) | (temp[2] << 8) | temp[3];
+ else
+ real_offset = (temp[0] << 16) | (temp[1] << 8) | temp[2];
u16 data_size{};
- if (ips->ReadObject(&data_size, offset) != sizeof(u16)) {
+ if (ips->ReadObject(&data_size, offset) != sizeof(u16))
return nullptr;
- }
data_size = Common::swap16(data_size);
offset += sizeof(u16);
if (data_size == 0) { // RLE
u16 rle_size{};
- if (ips->ReadObject(&rle_size, offset) != sizeof(u16)) {
+ if (ips->ReadObject(&rle_size, offset) != sizeof(u16))
return nullptr;
- }
rle_size = Common::swap16(rle_size);
offset += sizeof(u16);
const auto data = ips->ReadByte(offset++);
- if (!data) {
+ if (!data)
return nullptr;
- }
- if (real_offset + rle_size > in_data.size()) {
+ if (real_offset + rle_size > in_data.size())
rle_size = static_cast<u16>(in_data.size() - real_offset);
- }
std::memset(in_data.data() + real_offset, *data, rle_size);
} else { // Standard Patch
auto read = data_size;
- if (real_offset + read > in_data.size()) {
+ if (real_offset + read > in_data.size())
read = static_cast<u16>(in_data.size() - real_offset);
- }
- if (ips->Read(in_data.data() + real_offset, read, offset) != data_size) {
+ if (ips->Read(in_data.data() + real_offset, read, offset) != data_size)
return nullptr;
- }
offset += data_size;
}
}
@@ -193,16 +182,14 @@ void IPSwitchCompiler::ParseFlag(const std::string& line) {
void IPSwitchCompiler::Parse() {
const auto bytes = patch_text->ReadAllBytes();
std::stringstream s;
- s.write(reinterpret_cast<const char*>(bytes.data()),
- static_cast<std::streamsize>(bytes.size()));
+ s.write(reinterpret_cast<const char*>(bytes.data()), bytes.size());
std::vector<std::string> lines;
std::string stream_line;
while (std::getline(s, stream_line)) {
// Remove a trailing \r
- if (!stream_line.empty() && stream_line.back() == '\r') {
+ if (!stream_line.empty() && stream_line.back() == '\r')
stream_line.pop_back();
- }
lines.push_back(std::move(stream_line));
}