30年前の伝説をGodotへ!Amiga用68000アセンブリゲームをAIで現代に蘇らせるまで
Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
1993年にバグダッドで開発したAmiga用ゲーム(MC68000アセンブリ)を、昨年の夏休みを利用してGodotへ移植しました。Claude 3.5 Sonnetを相棒に作業を進めたのですが、なんと初日の晩にはプロトタイプが完成!そこから操作感の調整と仕上げに数週間かかりましたが、無事にリリースまで漕ぎ着けました。この数週間はClaudeが書いたコードの検証に費やし、33年前の記憶や当時のメモ、Gitリポジトリの情報をフル活用して記事を書き上げました。ちなみに記事内に登場する1993年当時のマップエディタのスクリーンショットは、今回30年ぶりに起動したものです。特筆すべきは、Claudeが生成した108バイトの差異に関する分析です。「作業開始前、ClaudeはMac上のvasmを使ってアセンブルを行い、バイナリが完全一致するまで試行錯誤を繰り返しました。しかし、どうしても108バイトの差が埋まらない。調べてみると、当時はAsmOneを使っていて、メモリ上の実行状態をそのままディスクへ書き出していたため、配布用ファイルが『素のアセンブル結果』ではなく『実行中のメモリのスナップショット』になっていたのが原因でした」。AIの鋭い洞察には驚かされました。質問があれば気軽にどうぞ。当時のオリジナル版ゲームも無料で公開中です!
これは素晴らしいですね。Claude Codeが今回の移植作業をガイドするようなエンジニアリングガイドを出力してくれたら面白そうです。それを行うために構築したツールセットの説明も含めてね。バイナリからのリバースエンジニアリングは経験ありますが、これほど良い結果になったことはありません。
正直、一部でつまずいているところを見て少し安心しました。とはいえ、ここまで正確にこなすのにはいつも驚かされます。以前から、コンピュータ史やゲームのちょっとマイナーな部分というのは、AIエージェントにとって掘り下げるのが極めて困難な領域であってほしいと願っていたんですよ。
昔の実装で行われていた、非標準的でハッキーかつ不可解な手法の数々は、今となっては再現不可能に思えるほど複雑ですよね。当時はその場しのぎで、誰も予想しなかったような方法でハードウェアを使いこなしていた人が多かったですから。SNES(スーパーファミコン)版Plockのオーディオを手掛けたTim Follinに、宮本茂がその音源が本物だと聞いて驚いた話を思い出します。当時のコードがどのように構築されていたのか、エージェントの洞察を通じて当時の開発について何が学べるのか、本当に興味深いですね。こういう話が大好きですし、この詳細な記事には感謝です。
すごい、アセンブラで書かれていて512kで動作するなんて、最高ですね。いい仕事してます!
質問があれば投稿してください。
Claudeが移植し、記事を書き、現時点であなたより深く理解しているようなので、Claudeに直接聞いてもいいでしょうか?Claudeに質問を投げかけられるようなGitリポジトリはありますか?それとも、移植に使ったプロンプトの記録を共有してもらえませんか?
人間による最小限の入力でソフトウェアが書けるのは素晴らしいことですが、なぜAIが仕事をしたのに、そのAIをプロンプトした人間と話す必要があるのか、ちょっと混乱してしまいます。
Amiga Hardware Reference Manualが1冊
いわゆる「The Book」ですね…いやあ、懐かしい記憶が蘇ります。
Babylonian Twinsは「Gods: Into the Wonderful」にすごく雰囲気が似ていますが、もしかしてあのゲームがインスピレーション源だったりしますか?
うーん、UAEでオリジナル版と移植版を同じ入力で実行してみたのでしょうか?それとも「自分が遊んだ感じでは正しく動作する」という程度ですか?その108バイトの差が気になります…
数週間前、ZX81のゲームのメモリダンプをダウンロードして、ClaudeにGo言語で再現するように頼んでみたんです。
完璧でしたよ。バイナリを一度BASICに戻してからGoに変換してくれました。LLMの学習データにはないゲームだったので、良いベンチマークになるかと思ったんです。
パーソナルコンピューティングの夜明けに立ち会い、そして今、その初期の体験をAIが考古学のように扱うという転換点にいるというのは、なんとも不思議な感覚ですね。
素晴らしい成果ですね!私も別の忘れられたゲーム(自分の作品ではありませんが)で同じことをしようと計画していたので、これが今や十分に可能だとわかって勇気が出ました。
93年にアセンブラでこのゲームを制作されたことに、ただただ感服しています。私も同時期にAtari STでゲームを作ろうとしていたのですが、当時はネットもなくドキュメントも乏しい中でプロジェクトに打ち込む情熱は並大抵のことではありませんよ。デバッグにまつわる苦労話などはありますか?私は手作りコードに込めた「絶対に一発で動くはずだ」という果てしない期待のあと、動かなくて絶望するのが一番こたえましたから…