AI News HubLIVE
站内改写3 分で読了

AIコーディングエージェントとオラクルベースのテストを使ってゲームエミュレーターを構築する

このゲスト記事で、Patrick NadeauはAIコーディングエージェントを使ってIntellivisionエミュレーターをゼロから構築した旅を語ります。彼は既存のエミュレーターjzintvからテストオラクルを使用してCPUコアを検証し、AIが開発を加速したことを述べています——5時間で最初のピクセル、36時間で完全にプレイ可能なシステムに。また、AIがライブでゲームを制御できるデバッガポートを追加しました。成功にもかかわらず、NadeauはAIが他人のコードを利用することの倫理的含意と、共同作業による創造の複雑な感情を考察しています。

ソースHacker News AI著者: throwaway_2494

これはPatrick Nadeauによるゲストシリーズの第1部です。カナダの研究エンジニアリングチームのメンバーである彼は、AIコーディングツールを使って非常に興味深いプログラミング課題に取り組んだ個人的で nuanced な視点を提供します。

子供の頃、彼の家にはIntellivisionゲーム機とApple IIコンピュータの2台しかありませんでした。数十年後、初めてコーディングエージェントを使ったとき、彼は自然とこれらのマシンに戻っていきました。妹がブレスレットをIntellivisionの通気孔に落とし、父親が修理のために開けたこと、Apple IIを開けてCPUからRAMやROMへの配線をたどったことなどを覚えています。BASICからアセンブリへと進み、プログラミングマニュアルを熟読する日々を過ごしました。

父親の友人が経営する電子機器店で、Apple II用のギリシャ文字セットの設計を依頼されたこともあります。方眼紙に文字をトレースし、バイナリファイルにエンコードして店に持っていきました。ROMに文字セットを焼き込み、新しいチップをマシンに挿入しました。彼が一文字ずつ入力し、画面に文字が現れるたびに喜びの笑い声をあげたのを今でも覚えています。

今でも休日には古いIntellivisionゲームを楽しんでいます。ただし、本体はもうありませんが、エミュレーターで遊んでいます。問題は、エミュレーターがOSのアップデートのたびに壊れ、醜いハックが必要だったことです。

プログラマーとして、彼はこの小さな不便さを大きなプログラミングの脱線で解決することにしました。つまり、自分でエミュレーターをゼロから作るというものです。次のクリスマスまでに完成させる目標を立てました。

まずCPUから始め、手動で命令デコーダーとコアを書きました。新しいコードを検証するために、使用していたエミュレーターjzintvからCPU実装を抽出しました。これにより、ユニットテストで各命令のレジスタ、フラグ、RAM、サイクル数への影響を、古くても実績のあるバージョンと比較できました。これは「テストオラクル」と呼ばれ、新しい作業と比較できる信頼できるリファレンスです。構築には多大な労力がかかりましたが、プロジェクト全体で最も重要な設計上の決定となりました。

3月中旬までに、一人でほぼ動作するCP-1610 CPUコアができましたが、バス、ビデオ、サウンドはまだなく、ゲームをプレイできるようになるにはまだ時間がかかりました。

同じ頃、職場ではコーディングエージェントの使用が奨励され始めました。彼は懐疑的で、公然と消極的でした。AIに自分が書いたパーサーの独自バージョンを作成させたところ、ガイダンスなしでは凡庸なコードで2つの大きな欠陥がありました。自分のバージョンを見せると、AIは「このユースケースに関連するあらゆる側面で」彼の方が優れていると認めました。それでも彼は動作するエミュレーターを望み、信頼できるテストオラクルがあったため、再試行し、今度はAIをガイドしながら作業を進めました。

5時間目には最初のピクセルが画面に表示され、おなじみのカラーテストバーが見えました。10時間目にはレンダリングパイプラインが整いました。21時間目には最初のカートリッジROMが起動しました。28時間目にはコレクションの204個すべてのROMが起動しました。32時間目には画面に動きが現れました。36時間目には完全なIntellivisionシステムが稼働し、コントローラーでプレイし、サウンドも聞こえるようになりました。

その後数日間で、古いエミュレーターでは事実上不可能だった機能を追加しました。彼は第二の飛躍を遂げました。エミュレーターにデバッガポートを追加し、AIが実行中のマシンを覗き見て内部状態を検査し、ライブプレイ中に制御できるようにしたのです。

AIが内部からゲームを制御するのを喜んで見ていました。妻を呼んで「船を左に動かして」とタイプすると、実際に動きました。AIに船が攻撃されるコードの場所を見つけさせ、やられたときにコントローラーが振動するコードを追加しました。まったくクレイジーです。

最終的に彼は疲れ果てました。5日間AIの肩越しに見守り、軌道を維持させることは、自分で書いたのと同じくらい疲れました。

興奮が冷めた後、不快感が戻ってきました。コーディングエージェントがこれをできるのは、何百万人ものプログラマーの仕事を獲得(あるいは流用)したからだという事実が気になります。彼らは苦労して学び、コードを自由に共有しました。

しかし、彼のエミュレーターはJoe Zbciakがjzintvの開発に何年も費やした仕事なしには不可能でした。テストオラクルもまた、彼の苦労して得た知識を自動的に抽出する方法ではなかったのでしょうか?

驚いたのは、プロセスが依然として非常に身近に感じられたことです。確かにAIがほとんどのコードを書きましたが、迷子になったときはまったく同じでした。答えは依然として自分から出てくる必要があり、それを十分に望まなければなりませんでした。

彼はついに、父親が昔コンソールを開けたときに見たチップの内部に入り込んだのだと思います。何かを取り戻すと同時に失ったように感じずにはいられません。

今後の投稿でPatrickの旅をさらに深く掘り下げます。