From 9db119f8a2e5a4d877f00b9efb40e4a109c95ef7 Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Thu, 6 Jun 2019 19:20:15 -0400 Subject: kernel_executable: Optimize BLZ decompression --- src/core/file_sys/kernel_executable.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'src/core/file_sys') diff --git a/src/core/file_sys/kernel_executable.cpp b/src/core/file_sys/kernel_executable.cpp index 45cbde4c9..371300684 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& 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& 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 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 KIP::GetKernelCapabilities() const { -- cgit v1.2.3