NCCH: Changed decompression to load .code directly into memory rather than an intermediate buffer.

master
bunnei 2014-06-17 06:30:14 +07:00
parent c144ed5058
commit 79a48082e2
1 changed files with 3 additions and 9 deletions

@ -312,20 +312,14 @@ bool Load_NCCH(std::string& filename, std::string* error_string) {
// Load compressed executable... // Load compressed executable...
if (i == 0 && is_compressed) { if (i == 0 && is_compressed) {
u32 decompressed_size = LZSS_GetDecompressedSize(buffer, u32 decompressed_size = LZSS_GetDecompressedSize(buffer,
exefs_header.section[i].size); exefs_header.section[i].size);
u8* decompressed_buffer = new u8[decompressed_size];
if (!LZSS_Decompress(buffer, exefs_header.section[i].size, decompressed_buffer, if (!LZSS_Decompress(buffer, exefs_header.section[i].size,
Memory::GetPointer(exheader_header.codeset_info.text.address),
decompressed_size, error_string)) { decompressed_size, error_string)) {
return false; return false;
} }
// Load .code section into memory...
LoadBuffer(exheader_header.codeset_info.text.address, decompressed_buffer,
decompressed_size);
delete[] decompressed_buffer;
// Load uncompressed executable... // Load uncompressed executable...
} else { } else {
// Load .code section into memory... // Load .code section into memory...