Почитай документацию про сжатие в играх. Может быть, станет немного понятнее.
http://www.shedevr.o...iewtopic.php?t=3590&start=0
Изначально разбирается алгоритм распаковки сжатых данных, а потом запаковки. Разбирается на ассемблере процессора (язык программирования низкого уровня), на котором работала консоль (к примеру, для NES это MOS6502). В этом помогают эмуляторы, имеющие дебаггеры (средства для отладки игры). Дебаггер или IDA отображают машинный код в понятном виде. После того как алгоритм сжатия разобран, он переписывается на языке высокого уровня (дельфи, си). Незапакованные данные даже без написания утилиты можно запросто увидеть в дампах видеопамяти или сохранения.
На NES в 90 % случаях используется примитивный RLE (Run-length encoding). В сети куча исходных кодов для кодеров под NES игры. В остальных 10 % используется Хаффман (Huffman).
На SEGA чаще всего встречается куча разновидностей алгоритма Лемпеля-Зива (LZ).
Необходимо понять, что для взлома сжатых данных, необходимо обладать неплохими навыками программирования.
Что, к сожалению, я и сам не освоил в своё время.