summaryrefslogtreecommitdiff
path: root/src/core/loader/ncch.cpp
diff options
context:
space:
mode:
authorGravatar Lioncash2014-09-06 13:36:49 -0400
committerGravatar Lioncash2014-09-06 13:36:49 -0400
commit26cd696843733f6d169717df2d90bb87461e34a7 (patch)
treedeb90643db4a7ccbac730a9c3f75d229fcde02ec /src/core/loader/ncch.cpp
parentMerge pull request #88 from archshift/remove-atomic (diff)
downloadyuzu-26cd696843733f6d169717df2d90bb87461e34a7.tar.gz
yuzu-26cd696843733f6d169717df2d90bb87461e34a7.tar.xz
yuzu-26cd696843733f6d169717df2d90bb87461e34a7.zip
ncch: inline declare some variables in LZSS_Decompress
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 {