Unexpected 63 %, still one wrong jump

This commit is contained in:
jonschz 2025-05-09 14:35:19 +02:00
parent ab766b325a
commit b91f8d37da

View File

@ -383,8 +383,8 @@ void DecodeSS2(LPBITMAPINFOHEADER p_bitmapHeader, BYTE* p_pixelData, BYTE* p_dat
// LINE: BETA10 0x1013e684 // LINE: BETA10 0x1013e684
row += token; row += token;
while (TRUE) {
row_loop: row_loop:
while (TRUE) {
// LINE: BETA10 0x1013e692 // LINE: BETA10 0x1013e692
token = *(short*) data; token = *(short*) data;
data += 2; data += 2;
@ -392,6 +392,7 @@ void DecodeSS2(LPBITMAPINFOHEADER p_bitmapHeader, BYTE* p_pixelData, BYTE* p_dat
if (token >= 0) { if (token >= 0) {
goto column_loop_2; goto column_loop_2;
} }
// TODO: Can't get this if-check to be quite right. Maybe a union type?
if (token & 0x4000) { if (token & 0x4000) {
goto weird_code; goto weird_code;
} }
@ -405,13 +406,10 @@ void DecodeSS2(LPBITMAPINFOHEADER p_bitmapHeader, BYTE* p_pixelData, BYTE* p_dat
row--; row--;
if (--lines > 0) { if (--lines > 0) {
continue; continue;
// return;
} }
return; return;
// TODO: Something is off about these breaks and jumps -- too many JMP instructions
} }
} }
// }
column_loop_2: column_loop_2:
// LINE: BETA10 0x1013e71e // LINE: BETA10 0x1013e71e
@ -437,7 +435,7 @@ void DecodeSS2(LPBITMAPINFOHEADER p_bitmapHeader, BYTE* p_pixelData, BYTE* p_dat
} }
return; return;
} }
else {
type = -type; type = -type;
WORD* p_pixel = (WORD*) data; WORD* p_pixel = (WORD*) data;
data += 2; data += 2;
@ -451,9 +449,6 @@ void DecodeSS2(LPBITMAPINFOHEADER p_bitmapHeader, BYTE* p_pixelData, BYTE* p_dat
if (--lines > 0) { if (--lines > 0) {
goto row_loop; goto row_loop;
} }
return;
}
// }
} }
// FUNCTION: LEGO1 0x100bdc00 // FUNCTION: LEGO1 0x100bdc00