Список форумов shedevr.org.ru shedevr.org.ru
Группа перевода приставочных игр "ШЕДЕВР"
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Распаковка сжатой крафики...ВРУЧНУЮ
На страницу 1, 2  След.
 
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Экстремальный ромхакинг
Предыдущая тема :: Следующая тема  
Автор Сообщение
Чувак НН



Зарегистрирован: 06.11.2006
Сообщения: 3
Откуда: H HOBrOpOg

СообщениеДобавлено: Пт Ноя 10, 2006 3:25 pm    Заголовок сообщения: Распаковка сжатой крафики...ВРУЧНУЮ Ответить с цитатой

Не думайте что я псих или ещё что нибудь в этом роде.Учу ассебблер на X86. Инструкции понимаю , но прочитал на "Шедевре" статью о сжатии графики и ничего после нахождения инструкции распаковке не понял. Как же ручками распаковать графон??? Print screen не предлагать, мне важен сам процесс распаковки! Заранее спасибо! Smile
P.S Я могу и прогу написать вы тока объясните что надо сделать
_________________
Молоко вдвойне смешней если после огурцов...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
gottax



Зарегистрирован: 16.11.2003
Сообщения: 588
Откуда: Курск

СообщениеДобавлено: Пт Ноя 10, 2006 4:37 pm    Заголовок сообщения: Ответить с цитатой

Запомни три основных алгорима - RLE, LZ, Huffman. Их вариации/сочетания используются во всех алгоритмах сжатия данных (не обязательно графики) в консольных играх. Если будешь хорошо понимать принципы их работы, значит сможешь сломать практически любой игровой алгоритм сжатия данных независимо от платформы. Ну и для непосредственного нахождения запакованных данных нужно умело пользоваться дебаггером.

Асьм x86 тут вообще нафиг нужен, если только ты не собираешься на нём распаковщик писать. Лично я в этом смысла не вижу, так как для этой цели подойдёт любой язык высокого уровня.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
IfoR



Зарегистрирован: 16.05.2006
Сообщения: 334

СообщениеДобавлено: Пт Ноя 10, 2006 6:00 pm    Заголовок сообщения: Ответить с цитатой

gottax писал(а):
RLE, LZ, Huffman

Хотелось бы прочитать про эти алгоритмы, но только но русском языке, пожалуйста...

gottax писал(а):
цели подойдёт любой язык высокого уровня.

Ну, на языке низкого уровня писать интересней. Smile

Ну, мне ассемблер x86 только в кракерстве нужен....
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Чувак НН



Зарегистрирован: 06.11.2006
Сообщения: 3
Откуда: H HOBrOpOg

СообщениеДобавлено: Пт Ноя 10, 2006 6:52 pm    Заголовок сообщения: Ответить с цитатой

gottax,Спасибо за ответ,а я уж думал меня за психа примут Very Happy Как пользоваться Дебаггером поконкретнее,пожалуйста. Есть GensKMOD но он почему-то показывает адрес в RAM а мне надо ROM. Перевожу игруху Tom & Jerry (для начала)но не могу найти один из шрифтов (Press Start которыи) Он ведь вполне может быть запакован (хотя большая часть спрайтов, и шрифтов НЕ запакована)Можно ли ручками то распаковать??
_________________
Молоко вдвойне смешней если после огурцов...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
PEREVODчик



Зарегистрирован: 07.07.2006
Сообщения: 105
Откуда: Kirov

СообщениеДобавлено: Пт Ноя 10, 2006 7:57 pm    Заголовок сообщения: Ответить с цитатой

Чувак НН писал(а):
Можно ли ручками то распаковать??

А чем-же ещё? Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
IfoR



Зарегистрирован: 16.05.2006
Сообщения: 334

СообщениеДобавлено: Пт Ноя 10, 2006 8:09 pm    Заголовок сообщения: Ответить с цитатой

Чувак НН писал(а):
gottax,Спасибо за ответ,а я уж думал меня за психа примут Very Happy

Да... Стандартный вопрос.

Чувак НН писал(а):
Как пользоваться Дебаггером поконкретнее,пожалуйста. Есть GensKMOD но он почему-то показывает адрес в RAM а мне надо ROM.

А зачем тебе ROM? Confused Подожди, а в эмуляторах ПЗУ используется?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Ghost



Зарегистрирован: 24.04.2004
Сообщения: 237

СообщениеДобавлено: Сб Ноя 11, 2006 12:27 am    Заголовок сообщения: Ответить с цитатой

Как находить код распаковки графики с дебуггером: как правило, графика сначала распаковывается в RAM, затем копируется в нужный участок VRAM или через DMA, или простыми командами пересылки. Поэтому чтобы попасть на код распаковки, надо сначала узнать, когда и откуда из RAM графика пересылается в VRAM, затем уже определить, когда она начинает туда распаковываться.
Для примера возьмём Tom & Jerry: рисунок Press Start виден в самом начале VRAM на момент появления титульного экрана, но не экрана с копирайтами, значит, она пересылается после исчезновения второго экрана. Когда он потемнеет, отсчитываем некоторое число кадров и смотрим, появилась ли графика в VRAM. Так определяем граничный кадр, в котором графики там ещё нет, но после трассировки кода она появится. В нашем случае кусок из $5280 байт копируется через DMA с адреса $FF0008. Там мы можем заметить характерные значения (3333 3333 3CCC), соответствующие точкам в тайлах. Заново отсчитываем число кадров после экрана с копирайтами, на этот раз до появления этих байт в RAM - мы вышли на распаковку.
В данном примере
00084C - выборка "экрана", его номер в D0, далее код для экрана в 00085A
Для титульного экрана d0=2, pc=380e, там вызывается процедура 0007CA, наверно, для загрузки графики (в смысле следующие отвечают не за графику), в ней производится вычисление начального адреса, далее
0007DA: BSR $0950 - размер куска графики (в нашем случае $5280)
0007DE: BSR $1CE8 - установка начальных значений перед распаковкой
0007E6: BSR $0954 - распаковка
Процедура 000954 - 000A08 - собственно распаковка данных

Чтобы поставить брекпоинт на 00084C, надо включить патч-код 00084C:60FE до зависания игры, а после зайти в дебуггер.

...Ладно, я сегодня добрый, вот вам бонусы Smile
Значения d0 на 00084C:
0 - логотип SEGA
1 - второй экран
2 - титульный экран
3 - настройки
4, 5 - экран перед 1-м уровнем
6 - при взломе d0 на вызове другого экрана не определено (через некоторое время ошибка деления на ноль), на самом деле отвечает за восстановление уровня (после таймаута или проигрыша)
7 - выбор уровня
8 - экран Game Over
9 - титры

Если не прерывать демонстрацию, можно перейти на титульный экран нажатием Start с экрана с логотипом SEGA или со следующего экрана. {Да, это трик такой}

...Заметили строку "7 - выбор уровня"? Я тоже заметил и нашёл вот что:
Набрать комбинацию на титульном экране, затем нажать Start:
A, A, ВНИЗ, ВВЕРХ, ВНИЗ, ВВЕРХ, ВЛЕВО, ВПРАВО, B - посмотреть титры
ВВЕРХ, ВЛЕВО, ВНИЗ, A, B, ВПРАВО, ВЛЕВО, ВНИЗ, A - остановить время
ВВЕРХ, ВВЕРХ, ВЛЕВО, ВПРАВО, ВПРАВО, ВНИЗ, B, B, A - неуязвимость
ВВЕРХ, ВНИЗ, ВЛЕВО, ВПРАВО, A, A, B, ВНИЗ, ВВЕРХ - выбор уровня
1-й код перекрывает 4-й, т.е. если они оба включены, вы попадёте на титры.

=))))))))))))))
_________________
Мысль - это интеллектуальный эксцесс данного индивидуума.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
gottax



Зарегистрирован: 16.11.2003
Сообщения: 588
Откуда: Курск

СообщениеДобавлено: Вс Ноя 12, 2006 9:26 am    Заголовок сообщения: Ответить с цитатой

Ura_Orlov писал(а):
Хотелось бы прочитать про эти алгоритмы, но только но русском языке, пожалуйста...


Например, тут.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Гость






СообщениеДобавлено: Вс Ноя 12, 2006 11:23 am    Заголовок сообщения: Ответить с цитатой

Ghost Ты чем дебажишь?? У меня KMOD но адреса вааще не те!
Я нашел куда обращается игра "Spy : 68k -> VRAM of 256 bytes from FFCA7A to D800 (VRAM access)" Я так понял с адреса 00CA7A в POMe прочитано 256 байт так ведь??
В дизасмном тексте игра сюда обращается.(по моему)
Привожу в пример кусок:
"01798A DC.W $CA7A" - Это ОНО??
"01798C ROXR.B D2,D4"
"01798E MOVE.W #$5C1E,D0"
"017992 CHK -$38(A1,A4.L),D2"
"017996 DC.W $791D"
"017998 SUB.L A7,D6"
....
Дизассемблировал с помощью "Nick o'DIMM's Sega Genesis Disassembler v0.04"
А что дальше-то делать??
PEREVODчик Если ты графон распаковать можешь то объясни подробнее пожалуйста как ты это делаешь (на примере чего-нибудь)
Вернуться к началу
PEREVODчик



Зарегистрирован: 07.07.2006
Сообщения: 105
Откуда: Kirov

СообщениеДобавлено: Вс Ноя 12, 2006 11:57 am    Заголовок сообщения: Ответить с цитатой

Цитата:
Если ты графон распаковать можешь то объясни подробнее пожалуйста как ты это делаешь (на примере чего-нибудь)

По-моему, Ghost достаточно хорошо всё объяснил для понимания(уж куда подробнее);
а метод(наилучший) тут один:дебажишь, находишь, пишешь распаковщик.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость






СообщениеДобавлено: Вс Ноя 12, 2006 12:21 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
В нашем случае кусок из $5280 байт копируется через DMA с адреса $FF0008...
Я не понял как он нашёл все эти значения.
Нет у меня адресов таких почему то. А распаковать мне надо ВРУЧНУЮ не написав распаковщика, а то я нифига не пойму.
И ещё: Как посмотреть RAM? В дебаггерах находил тока VRAM,Z80,68k
Вернуться к началу
PEREVODчик



Зарегистрирован: 07.07.2006
Сообщения: 105
Откуда: Kirov

СообщениеДобавлено: Вс Ноя 12, 2006 12:31 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
А распаковать мне надо ВРУЧНУЮ не написав распаковщика

Хе, ну тогда не надо искать процедуру распаковки,дебажить,просто найди корруптероом(поганкой,например) блок запакованных данных и смотри закономерность в Hex-editore.(в данном случае ты,наверное знаешь,по какому адресу запакованный шрифт-искать не надо).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость






СообщениеДобавлено: Вс Ноя 12, 2006 1:55 pm    Заголовок сообщения: Ответить с цитатой

Да,кстати чё за алгоритмы такие:Nemesis,Enigma,Saxman,Koshinski,Koshinski moduled? Я так понял это всё те-же вариации RLE,LZ,Huffman?
PREREVODчик То есть мне надо найти ресурс в РОМе и пробовать его распаковать всеми известными методами? Shocked
А в дебаге не может быть написан алгоритм распаковки? (Добавить такие-то значения столько то раз и т.д)
Вернуться к началу
PEREVODчик



Зарегистрирован: 07.07.2006
Сообщения: 105
Откуда: Kirov

СообщениеДобавлено: Вс Ноя 12, 2006 2:01 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
То есть мне надо найти ресурс в РОМе и пробовать его распаковать всеми известными методами?

Нет, конечно. Просто,глядя на последовательность байт,подставляя свои значения,понять закономерность.
Цитата:
А в дебаге не может быть написан алгоритм распаковки?

Да, он там есть. Но закономерность обычно выглядит проще,чем набор кодов. Если ты хорошо понимаешь код - можешь этот алгоритм найти через него.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость






СообщениеДобавлено: Вс Ноя 12, 2006 4:09 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
Да, он там есть. Но закономерность обычно выглядит проще,чем набор кодов
Не понял что значит проще чем набор кодов?
Кстати как бы попроще найти запакованные ресурсы? В РОМе наних есть поинтеры или что-то в этом роде? И с чем искать, с "Поганкой"?
Вернуться к началу
PEREVODчик



Зарегистрирован: 07.07.2006
Сообщения: 105
Откуда: Kirov

СообщениеДобавлено: Вс Ноя 12, 2006 5:01 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
Не понял что значит проще чем набор кодов?

Я имею в виду,что алгоритм сам по себе может простым, а ассемблерных кодов наворочено куча. Выберай что тебе проще-смотреть байты в Hex-editore или сам код распаковки.
Цитата:
Кстати как бы попроще найти запакованные ресурсы? В РОМе наних есть поинтеры или что-то в этом роде? И с чем искать, с "Поганкой"?

Если знаешь пойнтер на ресурсы - хорошо,нет - ищи их с помощью "поганки".
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Ghost



Зарегистрирован: 24.04.2004
Сообщения: 237

СообщениеДобавлено: Вс Ноя 12, 2006 5:53 pm    Заголовок сообщения: Ответить с цитатой

Я пользуюсь обычно Gens210-mk2 от Никодима.
Цитата:
Я нашел куда обращается игра "Spy : 68k -> VRAM of 256 bytes from FFCA7A to D800 (VRAM access)"
А кто сказал, что это нужная нам графика? Она по адресу 0000, а не D800. Это во-первых. Во-вторых,
Цитата:
Я так понял с адреса 00CA7A в POMe прочитано 256 байт так ведь??
не с 00CA7A, а с FFCA7A.

Цитата:
Привожу в пример кусок:
"01798A DC.W $CA7A"
...
Дизассемблировал с помощью "Nick o'DIMM's Sega Genesis Disassembler v0.04"
Чаще пользуюсь sega-asm'ом (есть на tv-games.narod.ru), он быстрее, хоть и больше глючит. По указанным тобой адресам в роме не те значения, наверно, ты smd дизасмил, а надо bin.

А чтобы распаковать вручную, посмотри команды 000954 - 000A08 - написано же "собственно распаковка данных".
_________________
Мысль - это интеллектуальный эксцесс данного индивидуума.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость






СообщениеДобавлено: Пн Ноя 13, 2006 2:01 pm    Заголовок сообщения: Ответить с цитатой

Нет я стопудово дизасмил BIN! Confused Не знаю тогда почему
Вернуться к началу
Гость






СообщениеДобавлено: Вт Ноя 14, 2006 7:36 pm    Заголовок сообщения: Ответить с цитатой

да, забыл спросить - мне чем нибудь может помочь эмуль с бряками?
Вернуться к началу
Freeman



Зарегистрирован: 28.07.2007
Сообщения: 30
Откуда: Краснодар

СообщениеДобавлено: Сб Июл 28, 2007 2:43 pm    Заголовок сообщения: НАПОМОЩЬ!!!!!!!!!!!!!! Ответить с цитатой

Где взять учебник по ассемблеру и дизассемблеру??? Crying or Very sad Я хочу его выучить и сделать хак Mortal Kombat 1! Добавлю Рептилию, боссов и убиру наконец время!!!!!! Подскажите плиз, где учебник взять или помогите с хаком! Заранее спасибо, icq (ася) 471236784
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Сб Июл 28, 2007 3:33 pm    Заголовок сообщения: Ответить с цитатой

Если ты способен выучить асм и сделать хак, то ты способен найти всё сам.
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Freeman



Зарегистрирован: 28.07.2007
Сообщения: 30
Откуда: Краснодар

СообщениеДобавлено: Сб Июл 28, 2007 5:30 pm    Заголовок сообщения: Нужна помощь. Ответить с цитатой

Question А где учебник взять??? ПОМОГИ ПОЖАЛУЙСТА!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Shiru



Зарегистрирован: 25.10.2006
Сообщения: 295
Откуда: Russia, Moscow

СообщениеДобавлено: Сб Июл 28, 2007 6:06 pm    Заголовок сообщения: Ответить с цитатой

Тебе для начала не учебник надо, а понять - что именно ты собираешься изучать. Нет в природе такого учебника, который можно прочитать, и научиться 'ассемблеру и дизассемблеру'.

Для начала ознакомься с этими статьями (ссылка в форуме некликабельна, копируй в адресную строку браузера):

http://ru.wikipedia.org/wiki/Ассемблер
http://ru.wikipedia.org/wiki/Дизассемблер
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Freeman



Зарегистрирован: 28.07.2007
Сообщения: 30
Откуда: Краснодар

СообщениеДобавлено: Сб Июл 28, 2007 7:13 pm    Заголовок сообщения: Сайт не верный! Ответить с цитатой

Confused Там про асм и дизасм ничего нет!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Freeman



Зарегистрирован: 28.07.2007
Сообщения: 30
Откуда: Краснодар

СообщениеДобавлено: Сб Июл 28, 2007 7:21 pm    Заголовок сообщения: АДРЕС КНОПОК В hex РЕДАКТОРЕ Ответить с цитатой

Напишите кто нибудь, как в hex редакторе обозначаются кнопки sega genesis, в мортале код на кровь A B A C A B B, а как это будет в hex?
Хочется код на кровь изменить еще!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Экстремальный ромхакинг Часовой пояс: GMT + 3
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group