Игра из Багдада 1993 года снова работает. Claude восстановил 72 тысячи строк её кода за 68 минут
Студент-инженер написал платформер под санкциями в Ираке, а спустя 33 года проверил, способен ли Claude разобраться в ассемблере, которого практически нет в обучающих выборках. Без прикрас: что нейросеть распутала сама, где глупо ошиблась и почему финальное слово всё ещё за человеком.
В 1993 году в Багдаде студент-инженер Рабах Шихаб вместе с художником Муртадой Салманом и композитором Махиром Ас-Салманом создал игру для культового домашнего компьютера Commodore Amiga 500. Ирак тогда находился в жесточайшей изоляции под международными санкциями: достать документацию, компиляторы или железо было подвигом. Проект назвали Babylonian Twins — это был колоритный платформер про двух братьев-близнецов в древнем Вавилоне.
Технический стек был спартанским: чистый ассемблер процессора Motorola 68000, машина всего с 512 КБ оперативной памяти и никаких жёстких дисков — только флоппи-дисковод. Чтобы выжать плавную анимацию, код писался на пределе возможностей "железа" и напрямую манипулировал кастомными графическими сопроцессорами Amiga (Denise, Agnus и Paula).
Долгие годы игра считалась утерянной. Лишь в 2008 году энтузиасты Amiga раскопали архивные образы, а в 2010-м авторы переписали движок под iOS на C++ (34 000 строк) — порт разлетелся тиражом в два миллиона загрузок. Оригинальные же дискетные дампы 1993 года автор выложил в открытый доступ на itch.io.
Спустя 33 года после создания оригинала Шихаб решил устроить большой краш-тест современным LLM — скормить этот исторический код нейросети и посмотреть, способна ли она на подлинный инженерный реверс-инжиниринг.
Главный вопрос: рассуждение или просто память?
Суть эксперимента проста: умеет ли большая языковая модель по-настоящему рассуждать, когда перед ней нет готовых шпаргалок?
На Python, JavaScript или C++ современные модели легко кажутся гениями — они переварили триллионы токенов открытых репозиториев GitHub и StackOverflow. Но ассемблер Amiga 1993 года в специфическом локальном диалекте в датасетах практически отсутствует. Если нейросеть разберётся в логике работы регистров и адресации видеопамяти — это не механическая память, а реальная логическая дедукция.
В качестве инструмента автор выбрал Claude Fable 5 внутри консольного агента Claude Code. Модель получила полный доступ к рабочему окружению: могла самостоятельно открывать файлы проекта, компилировать код, парсить ошибки сборщика и запускать эмулятор Amiga для верификации.
Три уровня сложности: от простого к «невозможному»
Шихаб разбил весь фронт работ на три последовательные задачи, дав им ироничные названия: «безопасное», «нечестное» и «жадное».
1. «Безопасное» — перенос C++ версии 2010 года на Godot 4. Первые управляемые персонажи забегали на экране уже через 21 минуту. Менее чем за 4 часа Claude переписал на GDScript все 38 типов игровых объектов, логику коллизий и экраны меню. Ещё трое суток ушло на тонкую полировку физики и спецэффектов.
2. «Нечестное» — реконструкция 72 758 строк ассемблера 1993 года. 26 разрозненных файлов исходников без комментариев и документации. Задача — заставить старинный проект собраться в бинарник, побайтово идентичный дискетному оригиналу 1993 года. Claude управился ровно за 68 минут, попутно разобрав пять архаичных багов синтаксиса древнего компилятора.
3. «Жадное» — запуск оригинала прямо внутри нового движка. Самый дерзкий замысел: зашить эмулируемый оригинал прямо внутрь Godot-бинарника с мгновенным переключением картинки по горячей клавише — аутентичные 50 Гц Amiga бок о бок с 60 FPS современного движка. На всю интеграцию ушло 105 минут. Сам автор признавался, что был уверен в провале этой идеи.
Инженерная дедукция: находки, о которых никто не просил
Самым поразительным в эксперименте оказалась вовсе не скорость генерации кода, а способность модели распутывать недокументированные архитектурные решения тридцатилетней давности:
- Реверс-инжиниринг формата карт: модель восстановила структуру уровней чисто по функции отрисовки тайлов — сама высчитала шаг сетки и логику битовых масок. Годом ранее с другими LLM автору требовались десятки наводящих подсказок; Claude справился с первого же промпта.
- Тайна исчезнувших дверей: координат дверей в бинарных данных уровней не оказалось. Claude сам раскопал процедурный код, выяснив, что игра динамически спавнит двери во время загрузки сцены, и без ошибок перенёс этот алгоритм.
- Загадка 108 байт: при побайтовом сравнении бинарников несколько переменных упорно расходились. Модель проанализировала структуру данных и объяснила причину: на дискеты 1993 года попал не "чистый" билд компилятора, а снимок оперативной памяти (RAM dump) из паузы работающей игры с инициализированными счётчиками.
- Честный диалог: наткнувшись на спрайты с двоякой интерпретацией палитры, Claude не стал сочинять отсебятину, а прямо остановился и запросил уточнение у автора.
Контроль качества модель тоже организовала автономно: написала скрипт автоплея, снимала скриншоты каждого кадра в эмуляторе и попиксельно сравнивала их с рендером оригинальной Amiga. Пять полноценных уровней сошлись пиксель в пиксель (100% diff match).
Где ИИ споткнулся: баги, которые не видит компилятор
Перечень ошибок модели Шихаб задокументировал с особой педантичностью — именно он показывает реальные границы возможностей современных LLM:
- Всемогущий страж: при переносе коллизий удара мечом Claude забыл ограничить верхнюю планку хитбокса по оси Y. В итоге враг на нижнем ярусе рубил персонажа сквозь сплошную каменную толщу через весь экран.
- Потерянный градиент: в первой сборке внезапно исчез медный закат Amiga — небо стало плоским. Ошибку вскрыл только визуальный дифференциальный тест.
- Логические мелочи: батуты давали двойной импульс прыжка, шейдер воды застыл статичной картинкой, составной ключ из четырёх пальм превратился в один неделимый ассет, а монофонический звуковой чип Amiga модель зачем-то разложила в псевдостерео.
Но самый коварный дефект проскочил мимо всех автотестов: на финальном бесплатном уровне исчезла подсказка «Иди в открытую дверь», из-за чего новые игроки застревали в тупике. Нашёл это не ИИ и не автор, а рассерженный пользователь, влепивший игре 1 звезду в Google Play.
Роль человека: почему без автора магия бы не случилась
- Живой плейтестинг: каждый вечер Шихаб проходил свежие билды вместе со своим 13-летним сыном, вылавливая малейшие расхождения в тактильной отзывчивости прыжков и таймингах.
- Анализ 15-летнего фидбека: автор вручную отфильтровал и структурировал сотни отзывов игроков из Google Play и App Store за полтора десятилетия.
- Культурные и авторские решения: принимал развилки, для которых требовался исторический контекст — то, что сам Рабах назвал: «нужен был тот, кто физически сидел за Amiga в Багдаде в 1993-м».
- Анализ и вычитка: неделю построчно верифицировал и редактировал детальный инженерный отчёт об эксперименте.
- Релиз-менеджмент: вёл публикацию в сторах, управлял ключами подписи, сертификатами сборки и аккаунтами разработчика.
Модель взяла на себя 90% рутинного труда: бесконечный парсинг регистров, перенос логики, кодогенерацию и компиляцию. Человек же держал в руках самое главное — видение целостного продукта, геймдизайн и эмоциональное ощущение от игры.
Инженерные выводы: новая эра для легаси
1. Смерть страха перед легаси. Фраза «это древний проект, документации нет, авторы уволились 20 лет назад, не трогайте — рассыплется» перестаёт быть фатальным вердиктом. Нейросети способны распутать даже узкоспециализированный код без комментариев и восстановить карту связей.
2. Способность рассуждать доказана практикой. Когда LLM сталкивается с задачей вне обучающего распределения (rare OOD — out of distribution), она не просто галлюцинирует, а последовательно выдвигает гипотезы, проверяет дампы памяти и строит верные цепочки рассуждений.
3. Самые опасные баги — не синтаксические, а семантические. Стражник, рассекающий мечом сквозь текстуры, не роняет приложение в синий экран и не выбрасывает Exception. С точки зрения компилятора всё идеально. И именно такие архитектурные перекосы сегодня может обнаружить только опытный инженер или увлечённый геймер.
История замкнулась: проект, созданный иракскими студентами в изоляции на 512 килобайтах памяти, снова живёт на экранах современных смартфонов и ПК — причём обе эпохи мирно уживаются внутри одного исполняемого файла.