Авиасим 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.
Сооснователь Ubisoft погиб в авиакатастрофе, а тред вспомнил старую поговорку пилотов
Один из пяти братьев, превративших Ubisoft из бретонской фермы в мировую студию, разбился за штурвалом. Тред на HN, короткий и сдержанный, всё время возвращался к мрачной статистике малой авиации и афоризму о том, какие пилоты доживают до старости.