AIは『Thrust』を再現できない(が、理解する助けにはなる)
著者がClaude AIを使って1986年の名作ゲーム『Thrust』を再現しようとしたが、AIの出力は質が低かった。しかし、AIを使ってオリジナルの6502アセンブリコードを分析することで、物理演算、サウンド、グラフィックの仕組みを深く理解し、忠実なTypeScript版を完成させた。
著者のJames D. Randall氏は、AnthropicのClaude AIを使って1986年のクラシックゲーム『Thrust』を再現しようと試みましたが、結果は惨敗でした。AIが生成したものは外見だけ似せただけで、物理演算や操作性がまったく異なり、オリジナルの魅力を再現できませんでした。
しかし、この失敗が著者をオリジナルコードの「考古学」へと導きました。Kieran Connell氏が注釈付きで公開した6502アセンブリコードを基に、Claudeを使ってその内容を解析したのです。AIはコード生成には失敗しましたが、解析ツールとして驚くべき効果を発揮しました。重力や推力の計算、回転のタイミング、レベルデータの構造など、オリジナルの動作を詳細に説明してくれたのです。
物理エンジンの再現が最大の課題でした。『Thrust』はQ7.8固定小数点演算と32段階の回転テーブルを使用しています。さらに、物理更新は毎フレームではなく、16ティック中6つのアクティブスロットでのみ実行されます。回転も4ティックに1回スキップされます。これらの微妙なタイミングが、独特の「重さ」を生み出しています。著者がこのタイミングを正確に再現したところ、BBC Micro版とほぼ同じ操作感が得られました。
サウンドについても、著者はサンプリングではなく、SN76489サウンドチップとBBC MOSインターフェースのエミュレーションを選択しました。MOSの逆アセンブルコードとチップ仕様をClaudeに読み込ませ、AudioWorkletで完全なハードウェアエミュレーションを実装しました。エンベローププロセッサと線形帰還シフトレジスタによるノイズチャンネルまで再現され、結果としてオリジナルと同一のサウンドが得られました。
グラフィックとレベルデータは、逆アセンブルコードから直接抽出されました。著者はBBC Microのフレームバッファをエミュレートして32フレームのスプライトをPNGに変換するツールを作成し、当初のベクター描画を置き換えました。これにより、オリジナルの手描きスプライトの正確な見た目が再現されました。
このプロジェクトは、AIが逆工学とコード解析において実用的であることを示しています。AIは人間の創造性や調整を代替できませんが、古いコードの理解を大幅に加速できます。著者は再現版『Thrust』をオープンソースとして公開し、仕様書や抽出ツールも含めています。