Reverse engineering LIMG

LIMG is the custom image format used in Professor Layton and the Unwound Future. Like many Level-5 shenanigans, it’s a custom format for absolutely no reason other than to serve as a deterrent for future reverse engineers (no pun intended).

After taking Tinke and applying it to the game’s image, we can easily find that the animations are CANIs, which get decompressed via LZ10 and passed through a QuickBMS script to get split into LIMGs. But what now? Tinke does not recognize the LIMG format, and all we get is an incoherent mess, which we can explore by opening the file as either a tile or a map. This process works best with small images.

We can, for instance, open up /lt3/menu/level5_a.limg, and expect the Level-5 wordmark. We can achieve getting the wordmark with an offset of 0x680, a 128×16 size image, horizontal image pattern, and 8×8 tile size, with still some artifacts and wrong color.

We can then take a look at the LIMG in hexadecimal, and try to find these values. We start off with the FourCC (LIMG), then what seems to be the 32-bit base offset value, … and then what?

That’s where I’m stuck. I need to know where the palette data is, etc.

Leave a Reply

Your email address will not be published. Required fields are marked *