| xdaniel 980 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Level: 64 ![]() Posts: 434/982 EXP: 2151467 For next: 62630 Since: 12-04-08 Pronouns: he/they From: Germany Since last post: 16 days Last activity: 7 hours |
|
||
|
>>ESTABLISHING LINK...DONE. >>FETCHING POST DATA...DONE. >>EXECUTING POSTDISP.BIN... So, Mr. "I hate graphics compression" here tried looking into the graphic compression used in Pokemon Puzzle Challenge for the GBC and... didn't get very far. Here's a few notes tho, which might help someone who is more familiar with compression formats, assembly on the GB, etc. to figure this out. All offsets are for the Japanese version of the game, Pokemon de Panepon, as I 1) had that ROM handy, and 2) expect more potential leftover graphics from Panel de Pon in this version. First, probably the one interesting thing I know, 00:0C5D appear to be the start of the decompression routine, with HL containing the source address from which to read the compressed data, DE containing the target address to write the uncompressed data to, and A being loaded with the compression code by the opcode at 0C5D. As far as I can see, if bit 7 of the code is non-zero (i.e. (code & 0x80) != 0), the following data is compressed. If it is zero, the following X bytes are copied as-is to the output, with X being the remaining bits of the code (i.e. (code & 0x7F)) plus 1. I also sort of managed to "decompress" data prefixed by codes 0x80, 0x90, 0xB0 and 0xF0, but I'm 99% sure that those implementations were more like pretty bad hacks that only worked on certain input data - still, 0x80 appears to be "take X bytes from output and repeat those", while 0xF0 appears to be "repeat single uncompressed byte X times". Not exactly sure on either, tho. Next up, at 0x14CA55 begins the compressed graphics for the copyright screen (text, Pikachu tiles, etc). This is the only block of graphics I have an exact start offset for, any other graphics I looked into where just found via a tile editor, so I couldn't get any correct offsets for those. Finally, I wasn't sure if I should post this in ROM hacking or the TCRF board, but decided on the latter as I mainly looked into this for Panel de Pon's sake - meaning finding more leftovers from the game's pre-Pokemon incarnation -, and because it'll likely get more exposure in here than down in ROM hacking. Feel free to move this around, tho. ____________________ |












Curious that you started looking into it right after I mentioned it!














