Настроение: | accomplished |
Entry tags: | gamedev |
Today's Progress
It was really hard, but I've finally dumped the first image - mouse cursor.
I've also tracked it to the original LBM filename and the position inside of it.
BTW, the Ghidra produced C rle_decoder worked without modifications.
Originally these LBM files had pixel rect separated sprites.
During the grab process, the game took all these LBMs, cut them into pieces,
using manually supplied coords and then stashed inside STRONG.DAT,
which only preserved graphic ids.
The executable was not stripped of that grab code, likely due to a deadline.
It is apparently also unoptimized.
Still the cursor is without palette.
There three ways to recover palette:
1. from screenshot.
2. from the DOS box, when the game loads VGA registers.
3. from the static analysis, looking for the `out` opcode, and the ascending from it.
I'm afraid the palette is stored in one of these rle encoded images inside of strong.dat,
and it is impossible to calculated the entry's index, without first deciphering the previous entries.
Still the hardest and unfun parts are almost over.
I have grinded through the STRONG.DAT processing functions.
These are so large, Ghidra decompiler fails.