summaryrefslogtreecommitdiff
path: root/src/core/loader/ncch.cpp
diff options
context:
space:
mode:
authorGravatar bunnei2014-09-06 14:06:14 -0400
committerGravatar bunnei2014-09-06 14:06:14 -0400
commit272a201d129ff10fdf0189b4c84aae5801640b28 (patch)
tree8667a3bb9e56f610bef0aaa0c6a9202192954a64 /src/core/loader/ncch.cpp
parentMerge pull request #88 from archshift/remove-atomic (diff)
parentncch: Remove C-style struct typedefs (diff)
downloadyuzu-272a201d129ff10fdf0189b4c84aae5801640b28.tar.gz
yuzu-272a201d129ff10fdf0189b4c84aae5801640b28.tar.xz
yuzu-272a201d129ff10fdf0189b4c84aae5801640b28.zip
Merge pull request #94 from lioncash/misc
Minor cleanup in ncch.
Diffstat (limited to 'src/core/loader/ncch.cpp')
-rw-r--r--src/core/loader/ncch.cpp12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/core/loader/ncch.cpp b/src/core/loader/ncch.cpp
index ba27eb75a..9af59e419 100644
--- a/src/core/loader/ncch.cpp
+++ b/src/core/loader/ncch.cpp
@@ -40,19 +40,17 @@ u32 LZSS_GetDecompressedSize(u8* buffer, u32 size) {
40bool LZSS_Decompress(u8* compressed, u32 compressed_size, u8* decompressed, u32 decompressed_size) { 40bool LZSS_Decompress(u8* compressed, u32 compressed_size, u8* decompressed, u32 decompressed_size) {
41 u8* footer = compressed + compressed_size - 8; 41 u8* footer = compressed + compressed_size - 8;
42 u32 buffer_top_and_bottom = *(u32*)footer; 42 u32 buffer_top_and_bottom = *(u32*)footer;
43 u32 i, j;
44 u32 out = decompressed_size; 43 u32 out = decompressed_size;
45 u32 index = compressed_size - ((buffer_top_and_bottom >> 24) & 0xFF); 44 u32 index = compressed_size - ((buffer_top_and_bottom >> 24) & 0xFF);
46 u8 control;
47 u32 stop_index = compressed_size - (buffer_top_and_bottom & 0xFFFFFF); 45 u32 stop_index = compressed_size - (buffer_top_and_bottom & 0xFFFFFF);
48 46
49 memset(decompressed, 0, decompressed_size); 47 memset(decompressed, 0, decompressed_size);
50 memcpy(decompressed, compressed, compressed_size); 48 memcpy(decompressed, compressed, compressed_size);
51 49
52 while(index > stop_index) { 50 while(index > stop_index) {
53 control = compressed[--index]; 51 u8 control = compressed[--index];
54 52
55 for(i = 0; i < 8; i++) { 53 for(u32 i = 0; i < 8; i++) {
56 if(index <= stop_index) 54 if(index <= stop_index)
57 break; 55 break;
58 if(index <= 0) 56 if(index <= 0)
@@ -76,13 +74,13 @@ bool LZSS_Decompress(u8* compressed, u32 compressed_size, u8* decompressed, u32
76 if(out < segment_size) { 74 if(out < segment_size) {
77 return false; 75 return false;
78 } 76 }
79 for(j = 0; j < segment_size; j++) { 77 for(u32 j = 0; j < segment_size; j++) {
80 u8 data;
81 // Check if compression is out of bounds 78 // Check if compression is out of bounds
82 if(out + segment_offset >= decompressed_size) { 79 if(out + segment_offset >= decompressed_size) {
83 return false; 80 return false;
84 } 81 }
85 data = decompressed[out + segment_offset]; 82
83 u8 data = decompressed[out + segment_offset];
86 decompressed[--out] = data; 84 decompressed[--out] = data;
87 } 85 }
88 } else { 86 } else {