AI x SFC Player

記事 · · English · 繁體中文 · 简体中文

ひとことで、AI がスーファミのゲームを作った:『汴河煙雨』2.5D 五目並べ

空のフォルダで新しい Claude Code(モデル:Claude Opus 5.5)を起動し、npx で AI x SFC Player の skill と MCP ツールだけを入れて、ひとことだけ頼みました(原文は中国語、以下は日本語訳):

prompt>

2.5D の五目並べを作って。背景は清明上河図で、ずっとスクロールさせて。それから BGM も作って。淡く、やさしく、煙るような雨の曲調で。 sfc-make を使って、制作過程のレポートも記録して。

それ以上の説明は何もしていません。23 分後、スーパーファミコン(SFC)で動くゲームと、完全な制作レポートが返ってきました。

『汴河煙雨』の開始画面
開始画面:上には流れ続ける清明上河図、下には汴河に浮かぶ 13 路盤。細い雨が斜めに降ります。
絵巻が虹橋のあたりまで進んだところ
絵巻は虹橋のあたり。コンピューターが五つ並べ、石が金色に光っています。

何を作ったか

絵巻:最初はぼやけたので、ストリーミングに

最初は私たちの convert_image で絵巻全体を変換しました。SFC の背景 1 枚が扱えるタイルは最大 1024 種類なので、ツールは 3419 枚のタイルを 880 枚にまとめ、細部はすっかり消えてしまいました:

最初の変換結果。細部がぼやけている
最初の試み:3419 枚のタイルが 880 枚にまとめられ、色の塊しか残っていません。

AI の判断はこうです:画面に見えるのは一度にほんの一部だけなので、絵巻全体を同時にビデオメモリへ入れる必要はない。そこで自分で変換プログラムを書きました。全巻で 7 組のパレットを共有し、3419 枚のタイルはそのまま ROM に入れ、新しい列が見えるたびに、その列の 13 枚のタイルを垂直帰線期間に DMA でビデオメモリ内の 64 列のリング領域へ送ります。上の 2 枚のスクリーンショットが、ストリーミングで細部を保った絵巻です。

2.5D の碁盤

まずコンピューター上で Mode 7 の遠近法をシミュレーションして、カメラを決めました。碁盤の奥は約 108 ピクセル幅、手前は約 220 ピクセル幅。盤面、罫線、星、木目、白黒の石(ハイライトと影つき)、盤の側面と水面の映り込みは、すべてプログラムで生成した Mode 7 のタイルで、全部で 59 枚です。

石を置くときは Mode 7 マップの 4 バイトを書き換えるだけで、石は自動的に遠近法どおりに変形します。カーソル(筆の形の矢印と平たい輪)、最後の一手の赤い点、勝利の光はスプライトで、事前に計算した「交点 → 画面座標」の表から位置を引きます。

プレイヤーが五つ並べて勝利
あなたの勝ち:赤い「勝」の印、五つの石が金色に光ります。
コンピューターの勝ち
コンピューターの勝ち。右に「ボタンでもう一局」が出ます。

音楽〈煙雨汴河〉

E の羽調五音音階(E G A B D)、毎分 60 拍。箏のような撥弦のアルペジオ、息の多い簫の旋律、低い弦、ごく弱いサイン波の霧のような和音、そして時折「雨粒が川に落ちる」高い鈴の音。長めのエコーで湿った空間を作っています。4 小節の前奏と 16 小節のループで、一巡り約 80 秒。エミュレーターで実際に演奏した録音です:

デバッグとテストプレイ

数字

AI への指示ひとこと
時間約 23 分
ビルド回数4 回(アセンブルエラーなし。実行時のバグ 1 つは自分で発見して修正)
AI の応答77 回(Claude Opus 5.5)
AI の出力トークン102,352
処理したトークンの総数約 1,090 万(大半はキャッシュ読み込み)
推定費用約 5.5 米ドル(2026 年 10 月の Anthropic API 定価で換算。サブスクリプションでは課金方法が異なります)

使ったツール

すべて AI x SFC Player の sfc-make skill と MCP サーバーのものです:自作の 65C816/SPC700 アセンブラ(build_rom)、MML による作曲とサウンドドライバー(build_sound)、画像変換(convert_image)、エミュレーター内のテストプレイとメモリのツール、そして各ステップを自動で記録する制作レポート(start_report、write_report)。絵巻のストリーミング用変換プログラムと碁盤タイルの生成プログラムは、AI が途中で自分で Python で書いたものです。

自分で試すには、空のフォルダで npx https://aixsfc.app/skill/aixsfc.tgz を実行してから claude を起動します。説明はトップページに。

このゲームについて

これは研究のためのデモです。ゲーム本体(ROM)とソースコードは公開していません。