С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Думаю, порядка 3-6 недель по вечерам и выходным. Это при условии знания ассемблера PDP-11, иначе ещё плюс неделя-две.
Начать нужно с того что получить дамп памяти сразу после распаковки. Плюс нужно знать точку запуска в этом дампе.
Следующее, что я обычно делаю -- запускаю в эмуляторе со сбором трассы -- т.е. дизасм каждой команды идёт в лог. Полученный лог делаем sort & uniq, получая отсортированный по адресу листинг только того что выполнялось. В последствии повторяем этот процесс для интересующей нас логики либо вручную дизасмим кусочки с заданного адреса, дополняя полученный листинг.
Дальше ещё выполняем ручной анализ, выявляем где какие переменные, где игровое поле, где работа с экраном, со звуком, где получение команд и их интерпретация итд. Так постепенно будет восстановлена логика.
Тут бы ещё очень помог умный дизасмер. Это когда ты даёшь ему дамп и точку старта, а он от точки старта дизасмит команды одну за другой, и все ветвления запоминает для последующего анализа по обоим направлениям -- так получится бОльшая часть листинга почти сразу, кроме тяжёлых случаях типа переходов по таблице.
Я уже думал о том чтобы сделать такой дизасм, но как-то всё было не до того.
Последний раз редактировалось nzeemin; 22.07.2018 в 16:46.
Так есть же Hex-Rays IDA :-)
![]()
просто напишите эмулятор pdp11 для zx![]()
Собственно, если просто процессор эмулировать, с минимумом команд (которые используются в игре) - это почти не вопрос, код будет работать и выполняться в 5-7 раз медленнее чем аналогичный код для Z80. В данном случае на это нам наплевать.
Но, т.к. там почти наверняка нет самомодифицируемого кода, достаточно будет один раз произвести рекомпиляцию программы, сразу перегнать код PDP11 в код Z80. Для этого надо предварительно отделить код от данных. Ну и сделать замену обращений к функциям из ПЗУ и ОС. Без RT11 игра не работает, я проверил.
Я бегло посмотрел, правда не все, и сразу понял, что нужно многое переделывать, например, такое управление на Спектруме не принято. В итоге скорее всего получится игра "по мотивам" и будет перекликаться с этой.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)