mirror of
https://github.com/ethteck/kh1.git
synced 2025-02-18 15:17:37 +00:00
xkingdom: func_0011FE88 (#6)
* xkingdom: func_0011FE88 matching * remove accidental new-line
This commit is contained in:
parent
1e6a9b4772
commit
414a0ed963
@ -22,7 +22,7 @@ void func_0010BF08(void (*)(XCrown*), XCrown*);
|
||||
void func_0010BF50(void (*)(XCrown*));
|
||||
void func_0011FB78(void);
|
||||
void func_0011FB98(s32 lsn, s32, char*);
|
||||
s32 func_0011FE88(void*, s32);
|
||||
s32 func_0011FE88(u8 *data, s32 compressedLength);
|
||||
s32 func_0011FF40(char* str);
|
||||
s32 func_001EE068(void);
|
||||
s32 func_00218C88(void);
|
||||
@ -93,7 +93,39 @@ void func_0011FE80(XCrown* arg0) {
|
||||
arg0->unk_00 = 0;
|
||||
}
|
||||
|
||||
INCLUDE_ASM(const s32, "xkingdom", func_0011FE88);
|
||||
// in-place decompression algorithm
|
||||
s32 func_0011FE88(u8* data, s32 compressedLength) {
|
||||
s32 copyLength;
|
||||
s32 decompressedLength;
|
||||
s32 i;
|
||||
u8 key;
|
||||
u8* srcPtr;
|
||||
u8* dstPtr;
|
||||
u8 copyIndex;
|
||||
u8 ch;
|
||||
|
||||
srcPtr = &data[compressedLength];
|
||||
key = *--srcPtr;
|
||||
decompressedLength = *--srcPtr | (*--srcPtr << 8) | (*--srcPtr << 0x10);
|
||||
dstPtr = &data[decompressedLength];
|
||||
while (data < srcPtr) {
|
||||
ch = *--srcPtr;
|
||||
if (ch == key) {
|
||||
copyIndex = *--srcPtr;
|
||||
if (copyIndex == 0) {
|
||||
*--dstPtr = ch;
|
||||
} else {
|
||||
copyLength = *--srcPtr + 3;
|
||||
for (i = 0; i < copyLength; i++) {
|
||||
*--dstPtr = dstPtr[copyIndex];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
*--dstPtr = ch;
|
||||
}
|
||||
}
|
||||
return decompressedLength;
|
||||
}
|
||||
|
||||
// hash
|
||||
s32 func_0011FF40(char* str) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user