Finally got uncompressed chunks working, collision and all. Adapting Sonic 1's less-than-efficient Find_Tile/FindNearestTile ended in failure, so I just used a modified Sonic 2 version. It seemed to get the job done. Give this a go. Code (ASM): Find_Tile: move.w d2,d0 ; y_pos add.w d0,d0 andi.w #$F00,d0 ; rounded 2*y_pos move.w d3,d1 ; x_pos lsr.w #3,d1 move.w d1,d4 lsr.w #4,d1 ; x_pos/128 = x_of_chunk andi.w #$7F,d1 add.w d1,d0 ; d0 is relevant chunk ID now moveq #0,d1 lea (Level_Layout).w,a1 move.b (a1,d0.w),d1 ; move 128*128 chunk ID to d1 add.w d1,d1 move.w word_1E5D0(pc,d1.w),d1 move.w d2,d0 ; y_pos andi.w #$70,d0 add.w d0,d1 andi.w #$E,d4 ; x_pos/8 add.w d4,d1 add.l (Chunk_Table).l,d1 movea.l d1,a1 ; address of block ID rts I do have to say, MainMemory, that's a very interesting trick, that 'moveq #-1 + clr.w' combo. At least I now know what Fragag's guide was doing there by blanking it to "moveq #0". Sorry about that, just noticed how I misread that. As of loading the uncompressed chunks, being the only hack applied to this disassembly, there don't seem to be any bugs with HTZ. I can't tell if this is because the problems stem not from the chunks, but from merging the blocks and tiles, or from the uncompressed chunks being incorporated incorrectly. Here's what I've done so far: Spoiler In loadZoneBlockMaps, replace Code (ASM): move.l (a2)+,d0 andi.l #$FFFFFF,d0 ; pointer to chunk mappings movea.l d0,a0 lea (Chunk_Table).l,a1 bsr.w JmpTo_KosDec With Code (ASM): move.l (a2)+,(Chunk_Table).l ; store the ROM address for the chunk mappings In Find_Tile, replace Code (ASM): moveq #-1,d1 clr.w d1 ; d1 is now $FFFF0000 = Chunk_Table With Code (ASM): moveq #0,d1 Under Code (ASM): add.w d4,d1 Add Code (ASM): add.l (Chunk_Table).l,d1 In GetBlockAddr, replace Code (ASM): moveq #-1,d3 clr.w d3 ; d3 = $FFFF0000 With Code (ASM): moveq #0,d3 Under Code (ASM): add.w d5,d3 ; add horizontal offset of current 16x16 Add Code (ASM): add.l (Chunk_Table).l,d3 In sub_E244, replace Code (ASM): moveq #-1,d3 clr.w d3 ; d3 = $FFFF0000 With Code (ASM): moveq #0,d3 Under Code (ASM): add.w d5,d3 ; add horizontal offset of current 16x16 Add Code (ASM): add.l (Chunk_Table).l,d3 On a side note, I'd imagine you could change some of the decompression buffer pointers to just use Block_Table and Level_Layout instead of Chunk_Table, in the instances where they, like Chunk_Table would have been, are unused, and as long as what's being decompressed can actually fit inside the two so you don't overwrite anything important. Of note, some of HTZ's art (some of its clouds) is decompressed to the end of Chunk_Table during gameplay, so space may be an issue there. Moving straight from ROM to VRAM is not an option, as the art appears to be dynamically modified in RAM. Merged EHZ and HTZ's tiles and blocks, still haven't encountered any bugs beside Rexon's art not loading.