|
shedevr.org.ru Группа перевода приставочных игр "ШЕДЕВР"
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Чувак НН
Зарегистрирован: 06.11.2006 Сообщения: 3 Откуда: H HOBrOpOg
|
Добавлено: Пт Ноя 10, 2006 3:25 pm Заголовок сообщения: Распаковка сжатой крафики...ВРУЧНУЮ |
|
|
Не думайте что я псих или ещё что нибудь в этом роде.Учу ассебблер на X86. Инструкции понимаю , но прочитал на "Шедевре" статью о сжатии графики и ничего после нахождения инструкции распаковке не понял. Как же ручками распаковать графон??? Print screen не предлагать, мне важен сам процесс распаковки! Заранее спасибо!
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 писал(а): | цели подойдёт любой язык высокого уровня. |
Ну, на языке низкого уровня писать интересней.
Ну, мне ассемблер x86 только в кракерстве нужен.... |
|
Вернуться к началу |
|
|
Чувак НН
Зарегистрирован: 06.11.2006 Сообщения: 3 Откуда: H HOBrOpOg
|
Добавлено: Пт Ноя 10, 2006 6:52 pm Заголовок сообщения: |
|
|
gottax,Спасибо за ответ,а я уж думал меня за психа примут Как пользоваться Дебаггером поконкретнее,пожалуйста. Есть GensKMOD но он почему-то показывает адрес в RAM а мне надо ROM. Перевожу игруху Tom & Jerry (для начала)но не могу найти один из шрифтов (Press Start которыи) Он ведь вполне может быть запакован (хотя большая часть спрайтов, и шрифтов НЕ запакована)Можно ли ручками то распаковать?? _________________ Молоко вдвойне смешней если после огурцов... |
|
Вернуться к началу |
|
|
PEREVODчик
Зарегистрирован: 07.07.2006 Сообщения: 105 Откуда: Kirov
|
Добавлено: Пт Ноя 10, 2006 7:57 pm Заголовок сообщения: |
|
|
Чувак НН писал(а): | Можно ли ручками то распаковать?? |
А чем-же ещё? |
|
Вернуться к началу |
|
|
IfoR
Зарегистрирован: 16.05.2006 Сообщения: 334
|
Добавлено: Пт Ноя 10, 2006 8:09 pm Заголовок сообщения: |
|
|
Чувак НН писал(а): | gottax,Спасибо за ответ,а я уж думал меня за психа примут |
Да... Стандартный вопрос.
Чувак НН писал(а): | Как пользоваться Дебаггером поконкретнее,пожалуйста. Есть GensKMOD но он почему-то показывает адрес в RAM а мне надо ROM. |
А зачем тебе ROM? Подожди, а в эмуляторах ПЗУ используется? |
|
Вернуться к началу |
|
|
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 до зависания игры, а после зайти в дебуггер.
...Ладно, я сегодня добрый, вот вам бонусы
Значения 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чик То есть мне надо найти ресурс в РОМе и пробовать его распаковать всеми известными методами?
А в дебаге не может быть написан алгоритм распаковки? (Добавить такие-то значения столько то раз и т.д) |
|
Вернуться к началу |
|
|
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! Не знаю тогда почему |
|
Вернуться к началу |
|
|
Гость
|
Добавлено: Вт Ноя 14, 2006 7:36 pm Заголовок сообщения: |
|
|
да, забыл спросить - мне чем нибудь может помочь эмуль с бряками? |
|
Вернуться к началу |
|
|
Freeman
Зарегистрирован: 28.07.2007 Сообщения: 30 Откуда: Краснодар
|
Добавлено: Сб Июл 28, 2007 2:43 pm Заголовок сообщения: НАПОМОЩЬ!!!!!!!!!!!!!! |
|
|
Где взять учебник по ассемблеру и дизассемблеру??? Я хочу его выучить и сделать хак Mortal Kombat 1! Добавлю Рептилию, боссов и убиру наконец время!!!!!! Подскажите плиз, где учебник взять или помогите с хаком! Заранее спасибо, icq (ася) 471236784 |
|
Вернуться к началу |
|
|
HoRRoR RRC2008
Зарегистрирован: 21.06.2006 Сообщения: 2341 Откуда: Ростов-на-Дону
|
|
Вернуться к началу |
|
|
Freeman
Зарегистрирован: 28.07.2007 Сообщения: 30 Откуда: Краснодар
|
Добавлено: Сб Июл 28, 2007 5:30 pm Заголовок сообщения: Нужна помощь. |
|
|
А где учебник взять??? ПОМОГИ ПОЖАЛУЙСТА! |
|
Вернуться к началу |
|
|
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 Заголовок сообщения: Сайт не верный! |
|
|
Там про асм и дизасм ничего нет! |
|
Вернуться к началу |
|
|
Freeman
Зарегистрирован: 28.07.2007 Сообщения: 30 Откуда: Краснодар
|
Добавлено: Сб Июл 28, 2007 7:21 pm Заголовок сообщения: АДРЕС КНОПОК В hex РЕДАКТОРЕ |
|
|
Напишите кто нибудь, как в hex редакторе обозначаются кнопки sega genesis, в мортале код на кровь A B A C A B B, а как это будет в hex?
Хочется код на кровь изменить еще! |
|
Вернуться к началу |
|
|
|
|
Вы не можете начинать темы Вы можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
Powered by phpBB © 2001, 2005 phpBB Group
|