Порт моей игры 1993 года на Godot: как LLM прочитал ассемблер 68000

Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly

Порт моей игры 1993 года на Godot: как LLM прочитал ассемблер 68000

Автор, создавший игру Babylonian Twins на Amiga 500 в 1993 году в Багдаде, рассказывает, как он портировал её на Godot с помощью LLM. Он описывает три этапа: перенос 34 000 строк C++ из версии 2010 года, реконструкцию 72 758 строк ассемблера 68000 и интеграцию оригинальной игры в современную. LLM успешно справилась с задачей, восстановив игру из исходников, которые не собирались более 30 лет. Автор также делится проблемами, возникшими при портировании, включая различия в ассемблерах и особенности форматов данных.

Всё, что было автоматизировано, — это не было сравнения изображений в современном порте (он делал скриншоты, я смотрел на них), и ничто не проверяло, правильно ли игра ощущается.
  1. gmerc

    Это совершенно новый мир. Случайные ретро-игры, которые я портировал на современный webgl/webgpu за последние несколько месяцев:

    - The Adventures of Robin Hood - Opus 4.7/Sonnet

    https://robin.tooclever.org

    - Syndicate - Sol/Luna 5.6/Opus ( https://this.os.isfine.org/blog/posts/modern-game-port-syndi... )

    - Kaiser 2

    - Populous Plus - Sol/Luna 5.6/Opus

    - Dragon Strike - (Fable 5.1 почти с одного раза)

    - War of the Lance - Qwnen-3.7-27B-dense (застрял, закончил с) Qwen-3.8-Flash-Next

    https://this.os.isfine.org/blog/posts/what-reverse-engineeri...

    - Dungeon Keeper - Разные

    - Red Baron - Opus 4.8, DeepSeek 4

    - Test Drive 3 (Qwen-3.8-Flash Next, DeepSeek-4-Flash-exp, GLM-5.3-Flash)

    - В процессе Ultima 6 ... в 3d (Fable, GLM-5.3) ( https://this.os.isfine.org/#ultima6-atlas )

    Некоторые — прямые порты исходников (Kaiser), некоторые — полная обратная разработка (Dragon Strike, Test Drive, WOTL)

    Некоторые — смесь доступных исходников (Syndicate, Populous)

    Некоторые из находок задокументированы здесь: https://this.os.isfine.org/blog/

  2. mattjoyce

    Несколько недель назад я скачал дамп памяти игры для ZX81 и попросил Claude собрать её на Go.

    Он справился отлично. Преобразовал бинарник обратно в Basic, а затем в Go. Моя идея заключалась в том, что игра будет неизвестна обучающим данным LLM и, возможно, послужит хорошим бенчмарком.

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

  3. cesaref

    Я заметил, что он упомянул, что его игра работала на 50 Гц — это верно, если Amiga работает на PAL, но если это американская машина, то при NTSC будет 60 Гц.

    В те времена большинство игр для Amiga создавалось в Европе, поэтому они были оптимизированы под частоту обновления 50 Гц и у нас работали «нормально». При 60 Гц они ощущались бы неправильно, и точно так же американские игры могли казаться вялыми и неудовлетворительными.

    Такая привязка машины к частоте обновления монитора была проклятием, но и благословением. Она позволяла машинам работать со стандартными телевизорами в разных регионах, хотя изображение было несколько размытым, но также позволяла использовать выделенные мониторы, когда вы начинали относиться к этому серьёзно. Это снижало цену и позволяло многим детям убедить родителей купить такую машину :) Однако режимы более высокого разрешения не работали, так что многое было нацелено на разрешение 320x256.

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

    Это были счастливые дни.

  4. btbuildem

    > один экземпляр Справочного руководства по аппаратному обеспечению Amiga

    он же Книга... боже, как это воскрешает пыльные воспоминания

    Babylonian Twins так сильно напоминает «Gods: Into the Wonderful», интересно, была ли эта игра вашим вдохновением

    https://www.lemonamiga.com/game/gods-into-the-wonderful

    https://www.youtube.com/watch?v=1kAXGjUwHyA

  5. dannyobrien

    Я просто хотел добавить, как я восхищаюсь тем, что вы создали эту игру в 93-м на ассемблере. Примерно в то же время я пытался написать игру на Atari ST, и преданность проекту — особенно когда документации было так мало, в доинтернетовскую эпоху — невероятна. Есть ли у вас истории об отладке игры? Я всегда находил это самой удручающей частью, после бесконечной надежды на ручное написание кода, который, как я был уверен, заработает с первого раза...

  6. appstorelottery

    Кто-нибудь использует «Claude Fable 5, работающий в Claude Code»? Можете предположить, какой план или стоимость могли быть задействованы для этого (учитывая, что, судя по всему, около 5 часов непрерывной работы как для порта на C++, так и на ассемблере, а также функции доставки/маркетинга, где неясно, сколько вычислений было использовано). Заранее спасибо (я подумываю попробовать американские модели, но сейчас экономлю, используя DeepSeek Flash и т.п.).

  7. Gamemaster1379

    Отличный проект. С октября я экспериментирую с созданием переиспользуемых фреймворков для портирования консолей. Opus 4.6 был моим первым успехом с NES 6502.

    С тех пор я сделал статические/нативные экосистемы для Super NES, GBA, Nintendo DS, Playstation (самый популярный) и даже Sega Genesis, которая тоже использует 68k.

    https://github.com/mstan/segagenesisrecomp

    Я даже выделил декодер 68k в отдельный репозиторий, потому что хотел использовать его для Phillips CDI.

    Sega делает Sonic 1, 2 и 3&K. Также Rocket Knight Adventures. Но пока ещё рано.

    CD-I делает BIOS. Пока не удалось запустить игру от начала до конца.

  8. robviren

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

    Количество нестандартных, хакерских и запутанных вещей, которые приходилось делать для реализации чего-либо в прошлом, кажется невозможным для понимания сегодня. Многие импровизировали на ходу и использовали оборудование способами, которых никто не ожидал. Это напоминает мне Тима Фоллина, делавшего звук для Plock на SNES, и Миямото, который был в шоке, что звук был настоящим. Было бы очень интересно узнать, что мы могли бы выяснить о разработке прошлого благодаря агентному анализу того, как создавался код. Я люблю такие вещи и ценю этот подробный пост.

Ещё за этот день

2026-09-03