Форум PSCD.ru

Игровые приставки и Эмуляция => Ромхакинг и программирование => Тема начата: PSXDev от 13 марта 2015, 12:34

Название: Написания распаковщика графики для Dendy
Отправлено: PSXDev от 13 марта 2015, 12:34
В ваших переводах часто можно встретить, что вы используете Пакер / Анпакер графики. Проще говоря, вам приходится работать со сжатой графикой. Интересует, как вы пишите эти распаковщики / запаковщики графики?
Например:
- Находите пожатую графику.
- Разбираетесь в её устройстве (Как? Используя дизассемблер или просто в Hex-редакторе).  
- Как пишется программа.
Если вас не затруднит, уделите пару минут и ответьте на эти вопросы.
 
И ещё, а для денди проще написать распаковщик графики, чем для сеги?
Название: Re: Написания распаковщика графики для Dendy
Отправлено: Mefistotel от 14 марта 2015, 13:25
Почитай документацию про сжатие в играх. Может быть, станет немного понятнее.
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).
Необходимо понять, что для взлома сжатых данных, необходимо обладать неплохими навыками программирования.
Что, к сожалению, я и сам не освоил в своё время.
Название: Re: Написания распаковщика графики для Dendy
Отправлено: PSXDev от 14 марта 2015, 14:16
Mefistotel, можно узнать название игры для NES с простым пожатием RLE? Что бы можно было поэкспериментировать.
Название: Re: Написания распаковщика графики для Dendy
Отправлено: Greengh0st от 14 марта 2015, 15:16
Любые игры от KONAMI. Плюс пиратки.
Название: Re: Написания распаковщика графики для Dendy
Отправлено: PSXDev от 15 марта 2015, 08:11
Цитата: Greengh0st от 14 марта 2015, 15:16Любые игры от KONAMI. Плюс пиратки.
А поточнее можно, там где самая простая RLE.
Проверил контру, там вроде как, лого начинается с $012A10. Но там такое впечатление, что графика в перемешку идёт с тайловой картой.
Название: Re: Написания распаковщика графики для Dendy
Отправлено: Mefistotel от 15 марта 2015, 09:51
Какая ещё "самая простая RLE"? Ты ссылку читал на Шедевр, что  я дал или нет?
RLE - это алгоритм сжатия данных, и ОН на NES везде практически одинаковый.
Графику видно в любом тайловом редакторе, а тайловая карта - это "код", задающий порядок вывода этой графики,который чаще всего и жмётся RLE.
Вложил исходники для пакера/анпакера данных из игр Конами на НЕС. Чаще всего они жали тайловые карты титульников.
Название: Re: Написания распаковщика графики для Dendy
Отправлено: Greengh0st от 15 марта 2015, 10:22
Ну в Балбесах вторых пожаты и сами тайлы для заставки или для примера игра Шакал, где всё пожато.
Название: Re: Написания распаковщика графики для Dendy
Отправлено: PSXDev от 15 марта 2015, 10:48
Mefistotel, имел в виду не RLE+LZ77.
Greengh0st, спс гляну.
Название: Re: Написания распаковщика графики для Dendy
Отправлено: Greengh0st от 15 марта 2015, 23:49
Из того что мы переводили, любой файтинг возьми пиратский все пожаты таким же способом, что и игры от конами. Типа морталов или стрит файтеров.
Название: Re: Написания распаковщика графики для Dendy
Отправлено: SPOT от 18 марта 2015, 11:43
Вот как хранится несжатая графика в NES играх (http://pscd.ru/forum/index.php?/topic/316-khranenie-neszhatoi-grafiki-na-razlichnykh-igrovy/).
Мне что-то сложно представить как её можно пожать в RLE. Хотя, можно сжать тайлы одного цвета.
Интересна тема, хотелось бы увидеть непосредственное сжатие графики в RLE на примере какой-то игры. То как этот кусок выглядит в hex-редакторе.
Название: Re: Написания распаковщика графики для Dendy
Отправлено: Mefistotel от 18 марта 2015, 23:44
Из так называемой графики, чаще всего жмут шрифты.Ну и тайлы титульника. К примеру, возьми игру ракетчик.
Название: Re: Написания распаковщика графики для Dendy
Отправлено: Greengh0st от 19 марта 2015, 00:10
Мы помним про ракетчика))) принцип сжатия обычно очень прост идет байт-тайла который надо сжать и следующий байт количество этих самых тайлов типа 15 0a. 15 - это номер тайла, а 0а сколько раз он повторяется. Дальше я не вникал, но перед несжатыми файлами обычно идет байт начинающийся с 8... тут что-то с битами мне рассказывали, но я пропустил мимо ушей. Короче особо сложного ничего нет. Но для примера завтра выну кусок кода и прикреплю сюда для наглядности с пояснениями.
Название: Re: Написания распаковщика графики для Dendy
Отправлено: SPOT от 23 марта 2015, 11:26
Цитата: Greengh0st от 19 марта 2015, 00:10 Но для примера завтра выну кусок кода и прикреплю сюда для наглядности с пояснениями.
Обещанного три года ждут. Но, всё же, хотелось бы побыстрее :) .
Название: Re: Написания распаковщика графики для Dendy
Отправлено: Greengh0st от 25 марта 2015, 21:15
Извините народ, закрутился))) Сделаем)))
Название: Re: Написания распаковщика графики для Dendy
Отправлено: SPOT от 04 апреля 2015, 15:52
Цитата: Greengh0st от 25 марта 2015, 21:15Извините народ, закрутился))) Сделаем)))
Просто напомню о себе :)
Название: Re: Написания распаковщика графики для Dendy
Отправлено: PSXDev от 07 апреля 2015, 10:36
Цитата: Greengh0st от 25 марта 2015, 21:15Извините народ, закрутился))) Сделаем)))
Я тоже не отказался бы посмотреть. Думаю, данная информация будет многим полезна.
Название: Re: Написания распаковщика графики для Dendy
Отправлено: zetper от 29 августа 2015, 16:07
Видимо ждать придётся всё-таки три года.
Название: Re: Написания распаковщика графики для Dendy
Отправлено: admin от 15 ноября 2015, 08:31
Вот материал очень близкий по теме [Видеоурок] Распаковка сжатой графики на примере игры Herzog Zwei. (http://pscd.ru/forum/index.php?/topic/417-videourok-raspakovka-szhatoi-grafiki-na-primer/)
Название: Re: Написания распаковщика графики для Dendy
Отправлено: zetper от 04 декабря 2015, 14:42
Нашёл интересную программу на  old-games. Анализ недокументированных растровых форматов с алгоритмами RLE сжатия.
http://www.old-games.ru/forum/threads/analiz-nedokumentirovannyx-rastrovyx-formatov-s-algoritmami-rle-szhatija.46595/
Название: Re: Написания распаковщика графики для Dendy
Отправлено: lancuster от 11 января 2016, 13:43
А меня интересует сжатие в играх Кодемастерс. Его вообще осилить можно, нет?..
Название: Re: Написания распаковщика графики для Dendy
Отправлено: SPOT от 11 января 2016, 14:28
Цитата: lancuster от 11 января 2016, 13:43А меня интересует сжатие в играх Кодемастерс. Его вообще осилить можно, нет?..
Ты не про это Пакер-анпакер IMP (http://pscd.ru/forum/index.php?/topic/118-paker-anpaker-imp/)?
Название: Re: Написания распаковщика графики для Dendy
Отправлено: Марат от 11 января 2016, 20:20
Цитата: lancuster от 11 января 2016, 13:43А меня интересует сжатие в играх Кодемастерс. Его вообще осилить можно, нет?..
Можно. Уже один чел на забугорном форуме на его основе написал свой вариант сжатия, который немного улучшает степень сжатия.
Я тоже как-то переписывал его на дельфи. Но я только компрессор написал, а потом забросил.