diff options
| author | 2014-06-17 06:30:14 -0400 | |
|---|---|---|
| committer | 2014-06-17 06:30:14 -0400 | |
| commit | 79a48082e2c7b6e61f38b442a66147a4e46f2911 (patch) | |
| tree | 320d476cafbf05fa7ddbf95e1b0f313e826d4d1c /src/core/loader/ncch.cpp | |
| parent | Elf: Removed unused macros, changed #include of "common.h" to just "common_ty... (diff) | |
| download | yuzu-79a48082e2c7b6e61f38b442a66147a4e46f2911.tar.gz yuzu-79a48082e2c7b6e61f38b442a66147a4e46f2911.tar.xz yuzu-79a48082e2c7b6e61f38b442a66147a4e46f2911.zip | |
NCCH: Changed decompression to load .code directly into memory rather than an intermediate buffer.
Diffstat (limited to 'src/core/loader/ncch.cpp')
| -rw-r--r-- | src/core/loader/ncch.cpp | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/src/core/loader/ncch.cpp b/src/core/loader/ncch.cpp index a01411e11..23864d262 100644 --- a/src/core/loader/ncch.cpp +++ b/src/core/loader/ncch.cpp | |||
| @@ -312,20 +312,14 @@ bool Load_NCCH(std::string& filename, std::string* error_string) { | |||
| 312 | 312 | ||
| 313 | // Load compressed executable... | 313 | // Load compressed executable... |
| 314 | if (i == 0 && is_compressed) { | 314 | if (i == 0 && is_compressed) { |
| 315 | u32 decompressed_size = LZSS_GetDecompressedSize(buffer, | 315 | u32 decompressed_size = LZSS_GetDecompressedSize(buffer, |
| 316 | exefs_header.section[i].size); | 316 | exefs_header.section[i].size); |
| 317 | u8* decompressed_buffer = new u8[decompressed_size]; | ||
| 318 | 317 | ||
| 319 | if (!LZSS_Decompress(buffer, exefs_header.section[i].size, decompressed_buffer, | 318 | if (!LZSS_Decompress(buffer, exefs_header.section[i].size, |
| 319 | Memory::GetPointer(exheader_header.codeset_info.text.address), | ||
| 320 | decompressed_size, error_string)) { | 320 | decompressed_size, error_string)) { |
| 321 | return false; | 321 | return false; |
| 322 | } | 322 | } |
| 323 | // Load .code section into memory... | ||
| 324 | LoadBuffer(exheader_header.codeset_info.text.address, decompressed_buffer, | ||
| 325 | decompressed_size); | ||
| 326 | |||
| 327 | delete[] decompressed_buffer; | ||
| 328 | |||
| 329 | // Load uncompressed executable... | 323 | // Load uncompressed executable... |
| 330 | } else { | 324 | } else { |
| 331 | // Load .code section into memory... | 325 | // Load .code section into memory... |