ひとことで、AI がスーファミのゲームを作った:『汴河煙雨』2.5D 五目並べ
空のフォルダで新しい Claude Code(モデル:Claude Opus 5.5)を起動し、npx で AI x SFC Player の skill と MCP
ツールだけを入れて、ひとことだけ頼みました(原文は中国語、以下は日本語訳):
2.5D の五目並べを作って。背景は清明上河図で、ずっとスクロールさせて。それから BGM も作って。淡く、やさしく、煙るような雨の曲調で。 sfc-make を使って、制作過程のレポートも記録して。
それ以上の説明は何もしていません。23 分後、スーパーファミコン(SFC)で動くゲームと、完全な制作レポートが返ってきました。


何を作ったか
- 絵巻: 北宋・張択端の『清明上河図』(12 世紀、パブリックドメイン)。Wikimedia Commons で全巻のスキャンを自分で見つけ、表装と跋文を切り落とし、2104×104 の帯に縮め、少し冷たい雨霧を加え、両端をクロスフェードして継ぎ目なく無限にループさせました。手巻きの作法どおり右から左へ、郊外から虹橋、そして城門へと進みます。
- 2.5D の碁盤: SFC の Mode 7 で遠近法の床を作り、碁盤は川に浮かぶ板のよう。画面の上半分(Mode 1)と下半分(Mode 7)は同じ画面の中にあり、地平線の走査線で HDMA が切り替えます。
- 対戦相手: プレイヤーは黒、相手はコンピューター。約 0.7 秒で応手し、最後の一手には赤い点、五つ並ぶと石が光ります。
- 雰囲気: 左上に縦書きの題簽「汴河煙雨」、右上に「あなたの番/思考中/あなたの勝ち/コンピューターの勝ち/引き分け」。12 粒の雨は川面に落ちると小さな波紋になります。
- 音楽: オリジナル曲〈煙雨汴河〉。下で聴けます。
絵巻:最初はぼやけたので、ストリーミングに
最初は私たちの convert_image で絵巻全体を変換しました。SFC の背景 1 枚が扱えるタイルは最大 1024 種類なので、ツールは 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 秒。エミュレーターで実際に演奏した録音です:
デバッグとテストプレイ
- 真っ黒な画面: 最初の実行では何も映りませんでした。メモリを読むとスタックが同じ戻りアドレスで埋まっていて、16 ビットモードのまま終わるサブルーチンが原因で、アセンブラが次のルーチンの命令を間違った長さで組み立て、プログラムが暴走していたと突き止めました。モード宣言を 1 行足して解決。
- テストプレイ: 適当に数手打つだけではありません。
write_memoryでメモリに直接「黒の四連」「白の斜め四連」「168 手目」などの局面を作り、あなたの勝ち・コンピューターの勝ち・引き分け・新しい対局・カーソルが盤外に出ない・石のある点には置けない、を一つずつ確かめ、最後に約 3500 フレーム走らせて、絵巻が郊外から虹橋を過ぎて城門まで進み、継ぎ目なく最初に戻ることを確認しました。
数字
| 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)とソースコードは公開していません。
- 絵画:張択端『清明上河図』、12 世紀、パブリックドメイン。スキャンは Wikimedia Commons より。
- フォント:俐方体11号(Cubic 11)、ACh-K 作、SIL Open Font License。
- プログラム、碁盤とスプライトの絵、音楽:このゲームのために AI がゼロから制作。
- 任天堂とは関係がなく、承認を受けたものでもありません。