aboutsummaryrefslogtreecommitdiff
path: root/src/core/file_sys/kernel_executable.cpp
diff options
context:
space:
mode:
authorZach Hilman <zachhilman@gmail.com>2019-06-06 19:20:15 -0400
committerZach Hilman <zachhilman@gmail.com>2019-06-06 19:20:15 -0400
commitae003097713d56fc00cbfb0bbf9840cced353c44 (patch)
tree9d30248278656913599b01dd0fc70a3b0e7e7e24 /src/core/file_sys/kernel_executable.cpp
parent5f6dba8ece7b9fb505a9105d347c7e992e8c5c4f (diff)
kernel_executable: Optimize BLZ decompression
Diffstat (limited to 'src/core/file_sys/kernel_executable.cpp')
-rw-r--r--src/core/file_sys/kernel_executable.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/core/file_sys/kernel_executable.cpp b/src/core/file_sys/kernel_executable.cpp
index 45cbde4c92..371300684a 100644
--- a/src/core/file_sys/kernel_executable.cpp
+++ b/src/core/file_sys/kernel_executable.cpp
@@ -34,7 +34,7 @@ bool DecompressBLZ(std::vector<u8>& data) {
--index;
auto control = data[index + start_offset];
for (size_t i = 0; i < 8; ++i) {
- if ((control & 0x80) > 0) {
+ if (((control << i) & 0x80) > 0) {
if (index < 2) {
return false;
}
@@ -70,9 +70,8 @@ bool DecompressBLZ(std::vector<u8>& data) {
data[out_index + start_offset] = data[index + start_offset];
}
- control <<= 1;
if (out_index == 0)
- return true;
+ break;
}
}
@@ -132,15 +131,15 @@ std::vector<u8> KIP::GetSectionDecompressed(u8 index) const {
}
bool KIP::Is64Bit() const {
- return header.flags & 0x8;
+ return (header.flags & 0x8) != 0;
}
bool KIP::Is39BitAddressSpace() const {
- return header.flags & 0x10;
+ return (header.flags & 0x10) != 0;
}
bool KIP::IsService() const {
- return header.flags & 0x20;
+ return (header.flags & 0x20) != 0;
}
std::vector<u32> KIP::GetKernelCapabilities() const {