Написания распаковщика графики для Dendy

Автор PSXDev, 13 марта 2015, 12:34

« назад - далее »

PSXDev

В ваших переводах часто можно встретить, что вы используете Пакер / Анпакер графики. Проще говоря, вам приходится работать со сжатой графикой. Интересует, как вы пишите эти распаковщики / запаковщики графики?
Например:
- Находите пожатую графику.
- Разбираетесь в её устройстве (Как? Используя дизассемблер или просто в Hex-редакторе).  
- Как пишется программа.
Если вас не затруднит, уделите пару минут и ответьте на эти вопросы.
 
И ещё, а для денди проще написать распаковщик графики, чем для сеги?

Mefistotel

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

PSXDev

Mefistotel, можно узнать название игры для NES с простым пожатием RLE? Что бы можно было поэкспериментировать.

Greengh0st


PSXDev

Цитата: Greengh0st от 14 марта 2015, 15:16Любые игры от KONAMI. Плюс пиратки.
А поточнее можно, там где самая простая RLE.
Проверил контру, там вроде как, лого начинается с $012A10. Но там такое впечатление, что графика в перемешку идёт с тайловой картой.

Mefistotel

Какая ещё "самая простая RLE"? Ты ссылку читал на Шедевр, что  я дал или нет?
RLE - это алгоритм сжатия данных, и ОН на NES везде практически одинаковый.
Графику видно в любом тайловом редакторе, а тайловая карта - это "код", задающий порядок вывода этой графики,который чаще всего и жмётся RLE.
Вложил исходники для пакера/анпакера данных из игр Конами на НЕС. Чаще всего они жали тайловые карты титульников.

Greengh0st

Ну в Балбесах вторых пожаты и сами тайлы для заставки или для примера игра Шакал, где всё пожато.

PSXDev

Mefistotel, имел в виду не RLE+LZ77.
Greengh0st, спс гляну.

Greengh0st

Из того что мы переводили, любой файтинг возьми пиратский все пожаты таким же способом, что и игры от конами. Типа морталов или стрит файтеров.

SPOT

Вот как хранится несжатая графика в NES играх.
Мне что-то сложно представить как её можно пожать в RLE. Хотя, можно сжать тайлы одного цвета.
Интересна тема, хотелось бы увидеть непосредственное сжатие графики в RLE на примере какой-то игры. То как этот кусок выглядит в hex-редакторе.

Mefistotel

Из так называемой графики, чаще всего жмут шрифты.Ну и тайлы титульника. К примеру, возьми игру ракетчик.

Greengh0st

Мы помним про ракетчика))) принцип сжатия обычно очень прост идет байт-тайла который надо сжать и следующий байт количество этих самых тайлов типа 15 0a. 15 - это номер тайла, а 0а сколько раз он повторяется. Дальше я не вникал, но перед несжатыми файлами обычно идет байт начинающийся с 8... тут что-то с битами мне рассказывали, но я пропустил мимо ушей. Короче особо сложного ничего нет. Но для примера завтра выну кусок кода и прикреплю сюда для наглядности с пояснениями.

SPOT

Цитата: Greengh0st от 19 марта 2015, 00:10 Но для примера завтра выну кусок кода и прикреплю сюда для наглядности с пояснениями.
Обещанного три года ждут. Но, всё же, хотелось бы побыстрее :) .

Greengh0st

Извините народ, закрутился))) Сделаем)))

SPOT

Цитата: Greengh0st от 25 марта 2015, 21:15Извините народ, закрутился))) Сделаем)))
Просто напомню о себе :)

PSXDev

Цитата: Greengh0st от 25 марта 2015, 21:15Извините народ, закрутился))) Сделаем)))
Я тоже не отказался бы посмотреть. Думаю, данная информация будет многим полезна.

zetper

Видимо ждать придётся всё-таки три года.

admin


zetper

Нашёл интересную программу на  old-games. Анализ недокументированных растровых форматов с алгоритмами RLE сжатия.
http://www.old-games.ru/forum/threads/analiz-nedokumentirovannyx-rastrovyx-formatov-s-algoritmami-rle-szhatija.46595/

lancuster

А меня интересует сжатие в играх Кодемастерс. Его вообще осилить можно, нет?..