Авиасим 1989 года пересобирают из DOS-бинарников, и нужны пилоты с оригиналом — искать баги

Команда реверс-инжиниринга превратила каждую ассемблерную инструкцию F-15 Strike Eagle II в компилируемый C. Теперь начинается опасная часть: порт с DOS без новых багов. Поэтому им нужны тестеры, способные отличить свежую регрессию от любимого глюка возрастом 37 лет.

Вкратце

Конвейер: полный реверс в ассемблер, затем ассемблер в байт-идентичный скомпилированный C — всё ещё под DOS, и лишь потом стартует порт на Linux и Windows.

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

Что просит проект

Команда реверс-инжиниринга под рукой neuviemeporte воссоздаёт игру MicroProse 1989 года F-15 Strike Eagle II из оригинальных DOS-бинарников в исходный код на C. Как объясняет призыв о помощи, команда закончила перевод каждого исполняемого файла из ассемблера в C и готовится к порту на современные системы. Им нужны «тест-пилоты», то есть игроки, у которых до сих пор есть оригинал (версия 451.03 с дополнением Desert Storm), чтобы прогнать пересобранную сборку и выловить баги, занесённые при декомпиляции. Один из участников разложил, почему работе нужны живые тестеры и почему она такая хрупкая:

«Первый шаг — полный реверс в ассемблер, второй — превратить ассемблер в скомпилированный C-код, бинарно равный оригиналу… а потом начнётся порт на Linux, Windows… Реверс склонен заносить новые баги, и найти их все в таком старом и реверснутом коде непросто». — комментатор, объясняющий конвейер реверс-в-C-в-порт

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

«Почему просто не эмулировать?»

Очевидное возражение появилось, и оно справедливо:

«Зачем люди декомпилируют игры, которые можно эмулировать в DOSBox и подобном? Игра такая старая наверняка прекрасно идёт даже на очень слабом железе?» — комментатор, поднимающий возражение про эмуляцию

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

«Сообщества вокруг этих старых игр невероятно хорошо обеспечивают четыре свободы для своих любимых тайтлов, и это по-настоящему вдохновляет». — комментатор, подающий усилие как сохранение ПО

Сохранение — это реверс-инжиниринг плюс волонтёры

Вот как вблизи выглядит поддержание старого софта в живых: не обёртка-эмулятор, а многолетний труд по превращению машинного кода обратно в читаемый, переносимый исходник — а затем нужны люди, сохранившие игру возрастом 37 лет, чтобы подтвердить: пересборка по-прежнему глючит ровно так, как надо. Просьба трогательная по-своему. Успех проекта зависит от того, найдётся ли горстка людей, которые и сберегли оригинальные дискеты, и помнят её причуды достаточно хорошо, чтобы защитить их от благонамеренных правок декомпилятора.

Получайте такие разборы каждый день

Главные истории Hacker News — на email, в Telegram или RSS.

Следующая новость · 27 из 30 Читать дальше
📈Biz

Сооснователь Ubisoft погиб в авиакатастрофе, а тред вспомнил старую поговорку пилотов

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

★ 158 · 💬 106 · reuters.com · 2 мин