Автор Тема: [NES] Chip & Dale 2 BFS by CaH4e3  (Прочитано 10166 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3588
    • Twitter
    • Просмотр профиля
[NES] Chip & Dale 2 BFS by CaH4e3
« : 01 Апрель 2018, 19:50:57 »
Итак, выкладываю полные сорсы рекомпилируемого дизасма игры Chip & Dale 2 для NES. Движок реверснут только по верхам, в основном внимание концентрировалось на читаемость и возможность перекомпиляции скриптов, на которых описаны все игровые объекты на уровнях, включая мини-игры. Код полностью перемещаемый, большая часть индексов (спрайты, музыка, словарь сообщений) перемещаемы (но со спрайтами я бы был поосторожней)...

https://github.com/g0me3/bfs_nes_cd2

Под катом все видосики самого процесса от начала и до конца.

« Последнее редактирование: 24 Май 2018, 23:05:44 от CaH4e3 »

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3588
    • Twitter
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #1 : 02 Апрель 2018, 01:01:41 »
Новая часть будет доступна тут, как только загрузится
« Последнее редактирование: 08 Апрель 2018, 13:25:06 от CaH4e3 »

Оффлайн s1nka

  • Пользователь
  • Сообщений: 1569
  • Пол: Мужской
    • Steam
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #2 : 02 Апрель 2018, 15:42:53 »
CaH4e3, Всегда знал, что ты бот и даже как робот разговариваешь. Спасибо за видео. Посмотрю с удовольствием.

Оффлайн Griever

  • Пользователь
  • Сообщений: 77
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #3 : 02 Апрель 2018, 18:59:17 »
А ведь Contra Force тоже написана байткодами на виртуальной машине? Отсюда, видимо, и тормоза. Интересно для чего, если писалась она только под NES.

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3588
    • Twitter
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #4 : 02 Апрель 2018, 21:00:19 »
парсеры в папке не означают, что все эти игры скриптовые лол. чаще всего они нужны для разбора звуковых данных, которые обычно есть скрипты.

контра форс написана на чистом асме. но тормозит она потому, что движок там считает коллизии всех объектов со всеми. потому можно разрушать части уровня, а враги могут выбивать бонусные ящики... и до кучи куски кода разбросаны по банкам, а переходы туда сюда жрут много тактов. это в разы сложнее чем любой другой движок на денди с более простыми правилами кто кого может подстрелить. ребята хотели такой себе навороченный движок. но в силу ограничений по рому и вообще у денди, не смогли его дооптимизить.

Оффлайн Skay

  • Пользователь
  • Сообщений: 4115
  • Пол: Мужской
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #5 : 02 Апрель 2018, 23:11:49 »
А глаза не устают от такого синего? (вообще, откуда в far и hiew именно синий пришел, почему?  :blush:)

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3588
    • Twitter
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #6 : 02 Апрель 2018, 23:18:43 »
нортон командер йопта. всегда был синий. турбо паскаль всегда был синий. хз почему потом кто то стал рисовать другим цветом... синяя цветовая схема в иде имеется в наборе стандартных...

вот шутки шутками про детишек лол.. но ..
« Последнее редактирование: 02 Апрель 2018, 23:24:48 от CaH4e3 »

Оффлайн Skay

  • Пользователь
  • Сообщений: 4115
  • Пол: Мужской
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #7 : 03 Апрель 2018, 10:05:33 »
CaH4e3, я знаю что было и как было. Интересно вот почему именно синий. Вырвиглазно же. У меня вот на таком глаза начинают прям вытекать.
На маленьких экранах - всегда удобнее было темный фон светлые буквы (типа черный и зеленое), на больших - sublime идеален Темная тема в MSVS тоже норм. Но вот синий , что на маленьком экране что на большом - просто выжигает глаза лол.

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3588
    • Twitter
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #8 : 03 Апрель 2018, 13:32:25 »
а мне норм.

Оффлайн Skay

  • Пользователь
  • Сообщений: 4115
  • Пол: Мужской
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #9 : 03 Апрель 2018, 14:11:33 »
CaH4e3, ну значит дело привычки :).
Ну а так, выглядит все как магия. Я с обычным то кодом порой туплю больше, чем тут на видео с эсемблерным листингом %)

Оффлайн spiiin

  • Модератор
  • Сообщений: 760
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #10 : 03 Апрель 2018, 14:56:04 »
Ох, надо будет время найти посмотреть, хоть идой может нормально пользоваться наконец научусь.
Было бы круто, если бы ты аннотации писал в описании видео, что в какой части происходит (а лучше и тайминги). Понимаю, что лишняя работа, но даже полчаса видео может быть слишком много, чтобы за раз посмотреть.

Оффлайн Skay

  • Пользователь
  • Сообщений: 4115
  • Пол: Мужской
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #11 : 03 Апрель 2018, 15:59:09 »
Ох, надо будет время найти посмотреть, хоть идой может нормально пользоваться наконец научусь.
там далеко не очевидно что и как с идой делать, скрипты хоткеи. Есть от Нарвахи курс для чайников. (перевод на русский не далеко ушедший от машинного перевода, лучше на английском конечно).

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3588
    • Twitter
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #12 : 03 Апрель 2018, 19:46:06 »
Ох, надо будет время найти посмотреть, хоть идой может нормально пользоваться наконец научусь.
Было бы круто, если бы ты аннотации писал в описании видео, что в какой части происходит (а лучше и тайминги). Понимаю, что лишняя работа, но даже полчаса видео может быть слишком много, чтобы за раз посмотреть.
там тяжело вообще как-то разделить на блоки по темам. я могу одно делать, потом отвлечься и прыгнуть куда-то еще на другие куски кода или данных. да и в целом то происходит одно и то же во всех видео лол. причесывание и неспешный попутный реверс...

я и так уже там длинные погоны между комментами ускоряю раза в четыре. чтобы текст шел равномерно без длинных зазоров. те я в эти полчаса час-полтора исходного видео впихиваю лол могу и короче резать, но тогда завал будет с видосами.

Добавлено позже:
зы. вообще конечно это не туториал по иде лол. я может и сам половины ее фунций не пользую и многих и не знаю может. если надо туториал по иде, была как то давно целая книга в пдф. правда по староватой версии..

видосы тупо на демонстрацию, как с помощью тулз и ускорителей из горячих кнопок и скриптов можно распотрошить любую игру на уровень, когда возможны любые модификации и хаки. а не то, как некоторые навешивают поверх старого кода кучу соплей в хекс редакторе через жопу автогеном... в результате вся игра как на ладони лежит и не надо через замочную скважину путем корраптов и прочих извращений узнавать, как она работает...
« Последнее редактирование: 03 Апрель 2018, 22:20:17 от CaH4e3 »

Оффлайн spiiin

  • Модератор
  • Сообщений: 760
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #13 : 04 Апрель 2018, 20:20:24 »
Цитата
в результате вся игра как на ладони лежит и не надо через замочную скважину путем корраптов и прочих извращений узнавать, как она работает
Для реверса мозги нужны, а коррапт можно и без них делать :lol:

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3588
    • Twitter
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #14 : 04 Апрель 2018, 22:28:06 »
Для реверса мозги нужны, а коррапт можно и без них делать :lol:
я тут один хак копнул одной игры и у меня кровь из глаз полилась. как обычно, чтобы что-то в код добавить, надо что-то удалить, а потом добавить в другое место и то, что добавлено и то, что удалено. и так по всему рому туда и обратно. там такая вермишель из переходов, что я не понимаю вообще как кто то в этом вообще разбирается. но товарищи понаписали кучу своего кода, знают формвты музыки и катсцен... вот спрашивается, мозги есть, а дизасмнуть игру целиком не могут.. или не хотят.. проще конечно вермишель вешать лол

Оффлайн Griever

  • Пользователь
  • Сообщений: 77
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #15 : 05 Апрель 2018, 13:35:28 »
Минус полной пересборки - невозможность валидации.
Перепроверить, что игра не виснет ни в одном месте после добавления байта в начало РОМа займет даже больше времени, чем сам дизасм. Мувики с прохождениями обычно быстро пробегают только по основным местам игры.
Даже если игра не виснет, где гарантия, что из-за ошибки в дизасме ты не сдвинул какой-нибудь массив, используемый, скажем, в генераторе псевдослучайных чисел?
Генератор теперь читает из какого-нибудь мусора, но глазами ты это не увидишь. Так же как невозможно проверить, не изменила ли твоя пересборка поведение AI, действие/цену предметов, размер хитбокса или баланс.

С обычными хаками callback'ами таких вопросов нет.

Оффлайн spiiin

  • Модератор
  • Сообщений: 760
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #16 : 05 Апрель 2018, 14:21:52 »
Griever, вот вообще всё не так как ты написал.
1. Хороший мувик, пробегающийся по всей игре практически обеспечит валидацию. Критерий хорошего мувика простой - Code-Data Logger засекает максимальное количество данных.
2. Сделать такой мувик самому быстрее и прогнать намного быстрее, чем сделать дизасм. Тебе не нужно "обычное" прохождение, нужен заход во все места игры.
3. Отслеживать надо не зависание игры, а наличие рассинхронизации просто.
4. Даже обычное тас прохождение рассинхронизируется из-за поломки генератора случайных чисел. То же самое с балансом, поведением AI, действием/ценой предметов и размерами хитбокса - это всё приведёт к рассинхрону в мувике.
5. С обычными хаками колбеками те же вопросы возникают - если авторы используют какую-то область RAM, думаю, что игра её не использует, где гарантия, что горе-ромхакеры проверили, что игра не использует её в какой-нибудь редкой сцене?
« Последнее редактирование: 05 Апрель 2018, 14:30:17 от spiiin »

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3588
    • Twitter
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #17 : 05 Апрель 2018, 14:25:23 »
так вот в том и заключается потребность нахождения всех возможных видов офсетов, которую я на видео озвучиваю. на денди не так сложно найти офсеты на ром. сложнее с офсетами в раму. они менее отличаются от простых констант... бывают и ошибки и недочеты, но обычно это все находится в первые же моменты тестирования и я это покажу позже. в целом же, сам полный дизасм и попутный реверс дает практически 99 процентов всех офсетов, что позволяет делать код в результате перемещаемым. т.е. это вообще считай основная цель такого дизасма. чтобы код можно было модифицировать произвольно. если делать дизасм, но бояться его где-то подвинуть, то такой дизасм бесполезен.

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

бывают вычисляемые офсеты. но их тоже можно найти, если видно, что данные пользовались, а ссылок вообще нет. повод поплотнее поисследовать код.

и на счет мувиков. после любого сдвига в игре в коде или даже иногда в данных, рассинхрон будет в любом случае. сдвиг опкодов ведет к изменению тактовки некоторых инструкций, которые зависят от перехода через страницу памяти. сдвинутый код в большинстве случаев даст рассинхрон и часто сразу... так что тестить надо руками, и двигать по частям а не все сразу. тогда зная, что лежит там где сдвинуто, можно выбрать специальный тест или знать куда пойти и во что ткнуть чтобы проверить..
« Последнее редактирование: 05 Апрель 2018, 14:42:06 от CaH4e3 »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2510
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #18 : 05 Апрель 2018, 15:38:56 »
зеру толеранс нам так расковыряйте. а то надо второй банк мелодий... чтоб можно было в нем изменять сэмплы, а остальной код, что после этого банка идет - не плыл.

Оффлайн Griever

  • Пользователь
  • Сообщений: 77
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #19 : 05 Апрель 2018, 16:35:34 »
spiiin, 1-4 пункт подтверждаю слова Cah4e3'а. Не знал теории, но пытался прогнать TAS через пересобранную игру на GBC - почти сразу пошел рассинхрон.
5 - RAM - отдельная тема. Запороть RAM можно и при добавлении кода в дизасме. С callback'ами проще: ты нашел область, которая не изменяется в нужный тебе для хака момент времени, используешь её и, в крайнем случае, просто обнуляешь перед выходом из своей врезки.

Вот я и говорю, что кроме внимательного перечитывания полученного дизасма, 100% гарантии тебе никакой инструмент не даст.
А если у меня, например, в 'MGS: GB' 128 банков по 16 кбайт? В основном, конечно, данные, но кода хватает. Вникать в каждую строчку, как в Battle City не вариант.

Оффлайн spiiin

  • Модератор
  • Сообщений: 760
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #20 : 05 Апрель 2018, 17:18:26 »
Процесс разбора на исходники отдельный от процесса хака получается - кто-то может специализироваться на разборе игр до исходников и проверки валидности пересборки, а другие могут пользоваться готовыми исходниками для старта проектов по хаку разной направленности

Оффлайн Skay

  • Пользователь
  • Сообщений: 4115
  • Пол: Мужской
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #21 : 05 Апрель 2018, 17:23:43 »
А если у меня, например, в 'MGS: GB' 128 банков по 16 кбайт? В основном, конечно, данные, но кода хватает. Вникать в каждую строчку, как в Battle City не вариант.
а там идут в ход уже скрипты. Главное придумать как. тем более в иде щас в скриптах можно подключать питон, с полноценными структурами и прочими плюшками, в отличии от стандартных.

 Кажется финалку какую то из первых переводили переводили как есть. Скрипт вроде даже выдрали. Но ни структуры, ни как данные выглядили не знали не хотели. А в итоге с нуля стали дизасм делать нормальный, потомучто всё плохо иначе).

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3588
    • Twitter
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #22 : 05 Апрель 2018, 19:23:56 »
Вот я и говорю, что кроме внимательного перечитывания полученного дизасма, 100% гарантии тебе никакой инструмент не даст.
А если у меня, например, в 'MGS: GB' 128 банков по 16 кбайт? В основном, конечно, данные, но кода хватает. Вникать в каждую строчку, как в Battle City не вариант.
я тебе даже больше скажу, даже во время разработки игры лол делают ошибки и ссылки не туда при определенных обстоятельствах. а уж тем более на ранних этапах по всей видимости все руками делалось и считалось по части офсетов, так что только дебаггинг. только хардкор. делать из игры дизасм не намного отличается от этой игры написания, только у моих инструментов возможностей больше для контроля. при аккуратном разборе пусть даже не самом дотошном я делаю на выходе меньше багов, чем разрабы самой игры, да еще при более дотошном исследовании могу их неотловленные баги видеть и править.

кстати вот по коду некоторых игр видно, что когда они пишутся, наслоения кода стараются добавлять в конец и не перемещать уже написанное. особенно что касается индексов разных... видно когда в игре таблицы полны дырками неиспользуемых офсетов. их просто оставили, чтобы не ломался код в случае сдвига лол.

мой дизасм в этом плане вообще не зависит от таких перемещений, если поиндексировать таблицы офсетов и давать вместо индексов мнемонические имена. я могу вообще все что угодно двигать. баги ессно случаются, но чем больше копаешь, тем меньше их остается.



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

Добавлено позже:
к слову, как можно обосраться в сорсах игры при разработке. я как-то давно собирал из родных исходников прототип джеймс бонд жуниор для денди. там не много было надо сделать, код вообще не трогал почти. только сконвертил их макросы в дасмовые и рассовал все по банкам как должно было быть... одна только вещь отсутствует в дасме, которой пользовались авторы на родной среде разработки. нативный операнд массива,  который берет либо младший либо старший байт 16 офсета. мне пришлось сделать по макросу на каждый вариант такого массива от 2 до 10 элементов и потом все такие массивы в коде сконвертить в новые макросы. те посчитать сколько элементов в каждом и поставить нужный операнд. там их сотни и я сконвертил их все лол кроме одного. самого главного, в котором таблица параметров уровней. и до последнего момента никто этого даже не заметил. потому что даже я не догадался протестить игру на других уровнях кроме первого даже с помощью паролей. а тут такой чел нашелся лол. и я нашел багу за пять минут. а мог бы найти сразу. если бы попытался запустить еще уровни... нот это не дизаси. это родной код. обосраться мог и разраб точно так же... и к слову в прототипе багов достаточно и своих...
« Последнее редактирование: 05 Апрель 2018, 20:47:19 от CaH4e3 »

Оффлайн Griever

  • Пользователь
  • Сообщений: 77
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #23 : 06 Апрель 2018, 11:02:45 »
там не много было надо сделать, код вообще не трогал почти. только сконвертил их макросы в дасмовые и рассовал все по банкам как должно было быть...
Кстати, как ты разбиваешь на банки? ИДА-то выдает всё в сплошном листинге.

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3588
    • Twitter
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #24 : 06 Апрель 2018, 14:08:28 »
а копипасту отменили чтоли? хех

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3588
    • Twitter
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #25 : 08 Апрель 2018, 13:25:24 »
Залил новую часть, ссылка в шапке.

Оффлайн worm

  • Пользователь
  • Сообщений: 1074
  • Пол: Мужской
  • Злой тролляка
    • Просмотр профиля
Re: Дизасм Чип и Дейл 2 для Денди
« Ответ #26 : 16 Апрель 2018, 08:18:53 »
а мне норм.
Еще одно доказательство того, что санчез - бот :D
p.s. спасибо за видео. А то я все сегу изучаю, а про денди почти ничего не знаю.

Оффлайн spiiin

  • Модератор
  • Сообщений: 760
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #27 : 16 Апрель 2018, 13:20:24 »
На какой там стадии дизасм вообще? Когда исходники будут? :)

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3588
    • Twitter
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #28 : 16 Апрель 2018, 14:14:24 »
дизасм давно готов. но не интересно его выкладывать вперед видосов. лол

Оффлайн spiiin

  • Модератор
  • Сообщений: 760
    • Просмотр профиля
Дизасм Чип и Дейл 2 для Денди
« Ответ #29 : 16 Апрель 2018, 15:06:12 »
А исходники чёрного плаща ты в открытый доступ выкладывал?
Хочу взять какие-нибудь готовые для сборки (ты, если правильно помню, с помощью asm6 их собираешь?) и попробовать, насколько их сложно сконвертировать в синтаксис ca65.