最近、Claude Opus 5.5やGPT-6 Astraで「すごいゲームを作った」という話をよく見かけます。3Dのリアルなグラフィックで、どちらかと言えば本格派のものが多い印象です。
普通なら、ここで私も最新のAIでリアルなゲームを……となるところですが、私の辞書に「素直」の二文字はありません。
最先端のOpus 5.5に、スーパーファミコンの新作ゲームを作ってもらいます。もちろん、実機で動かします(断言
作るのは、コマンド選択式の推理アドベンチャーです。レトロゲームのレビュー記事で白状したとおり、私は『ファミコン探偵倶楽部』の筋金入りの信者で、生成AIで実写化する計画まで完走しました。次は、あの手触りの「新作」を遊んでみたくなったのです。
先に結論を書きます。
- できたのは、スーパーファミコン用の推理アドベンチャーです。 舞台は昭和の終わりの地方で、全6章、2〜3時間を目指しました。SFメモリカセットに書き込み、実機で動いています
- プログラム(65816のアセンブリ)、シナリオ、絵、音楽、テストまで、作ったのはすべてClaude Code(Opus 5.5)です。 私がしたのは、方向を決めること、ツールの導入を許可すること、実機で確かめることでした
- 相談から約7時間で、実機で遊べる本編ができました。 夕方6時42分に相談して、翌日の午前1時56分です
- 私はシナリオを1行も読んでいません。 犯人もトリックも知らないまま、自分で遊ぶためです。ゲームの題名も、タイトル画面で初めて知りました
- Claude Codeは音を聴けません。 そこで、音源チップのレジスタを毎フレーム読んでピアノロールにして、曲を確かめています
- 実機でしか出ない不具合は、私が寝ている間にClaude Codeが先回りして探しました。 セーブまわりの不具合を2件見つけて、直しています
- この記事は、ネタバレなしの<制作編>です。遊んだ感想は、後日の<レビュー編>で書きます
まず、完成品をどうぞ

電源を入れてから、タイトルのメニューが出るまで6.5秒です。起動画面の2枚は、ブログに載せることを考えて、私が追加をお願いしました。マスコットのOYAJIくんも、ドット絵になって出演しています。
題名は『霜踏み』。この記事でお見せできるのは、ここまでです。ここから先は、私もまだ冒頭の5分しか遊んでいません。見た感じ、とても良い出来です。
作る前に確かめたこと
ライセンスなしで作って、実機で遊んでいいの?
最初に気になったのは、ここでした。Claude Codeが調べた結論は、次のとおりです(法律相談ではありません)。
- 自分で作ったソフトを、自分のSFメモリに書いて、自分の実機で遊ぶのは、適法と考えてよい。 ライセンスは任天堂との契約の話で、ライセンスなしの開発そのものを禁じる法律はありません
- SFメモリは任天堂純正のカセットなので、プロテクトを破る必要がない。 書き込みも、決まったコマンドを送るだけです(技術資料)。不正競争防止法が規制しているのは、プロテクトの回避装置などを人に「提供」することで、個人の使用ではありません
- 純正のSFメモリを書き換えて売るのは危ない。 任天堂の商標が付いたまま中身を変えた品を売るのは、商標権の侵害とされた判例があります。今回は自分で遊ぶだけです
エミュレーターやROMの吸い出しの話は、以前の記事にまとめています。
SFメモリとは
SFメモリは、1997年に任天堂が始めた「ニンテンドウパワー」の書き換え用カセットです。本来はローソンの端末でゲームを書き込むもので、中にはフラッシュメモリ4MB(32Mbit)とセーブ用のSRAMが入っています。今は、オープンソースのOSCRなどで書き込めます。私は手持ちのOSCRを使いました。
4MBあれば、推理アドベンチャーには十分です(今回使ったのは532KBでした)。Claude Codeによると、スーパーファミコン版の『ファミコン探偵倶楽部PartII』も、ニンテンドウパワーで配信された24Mbit(3MB)のゲームだったそうです。
7時間の流れ

- 18:42 相談:私が「SFメモリに書いて、実機で遊べる推理アドベンチャーを作りたい」と相談
- 19:33 開発ツールを導入:Claude Codeがダウンロードの前に確認してきたので、私は許可しただけです
- 19:40 最初のテストROM:Claude Codeが、画面にカラーバーを出すだけのROMで、ビルドから書き込み用ファイルまでの流れを通しました
- 21:10 日本語が出た:12×12ドットの日本語が、1文字ずつ表示されるようになりました
- 21:30ごろ〜23:40 シナリオ:全6章と、別のClaudeによる校閲
- 23:16〜0:07 絵:私がComfyUIを起動し、Claude Codeが背景25枚と顔11人を生成
- 1:39 デモが実機で動いた:エンジンの試作版を私がSFメモリに書き、実機で確かめて報告
- 1:56 本編のファイルが完成
- 2:15〜3:46 夜通しの不具合探し:私は就寝。Claude Codeが、実機でしか出ない不具合を探していました
私はシナリオを1行も読んでいない
相談を始めて1時間ちょっとの19:53に、私は「できればネタバレなしで遊びたい」とClaude Codeに伝えました。そこからClaude Codeは、私が物語を見ないで済む作り方に切り替えています。
- 答えは封印フォルダに:シナリオ、事件の設計、攻略手順、場面の絵は、sealed(封印)という名前のフォルダに入れる。私は開かない
- 報告は数字だけ:進み具合の報告は、「6章、74場面、テスト合格」のような数字と、仕組みの話だけ
- テストの画面も封印:物語の場面が写るテストのスクリーンショットは、封印フォルダにしか出さない
- 絵は、作ったらすぐ隠す:画像生成の出力フォルダから封印フォルダへすぐに移し、ComfyUIの履歴からも自分の分を消す
- 題名も秘密:題名は、タイトル画面で初めて見ました
作らせた本人が、犯人を知らない。自分で作らせたゲームで、自分が探偵役をする。なかなか贅沢な遊び方です(笑
私が決めたのは「枠」だけ
私が決めたのは、Claude Codeが出した選択肢の中から選んだ「枠」だけです。
| 項目 | 私が選んだもの |
|---|---|
| 舞台 | 昭和の終わりの地方 |
| 雰囲気 | 怪談・ホラー寄り |
| 長さ | 2〜3時間の前後編 |
| 難しさ | 標準(ファミコン探偵倶楽部くらい) |
Claude Codeは、既存の推理アドベンチャー24作を調べ、トリックを52の型に分けてから、新しい事件を設計しました。どの作品とも、重なる要素が1つまでになるようにしたそうです。この調査メモには各作品のネタバレが書いてあるので、Claude Codeが私に伝えたのは件数だけでした。
別のClaudeに校閲させ、機械に遊ばせる
シナリオは6章・74場面で、文章は約3万9,000字。聞き込みで分かったことがたまる手帳は、58項目になりました。
書き上げたシナリオを、Claude Codeは別のClaude(サブエージェント)2体に、前半と後半に分けて校閲させています。指摘は、話の食い違いが15件、推理がフェアかどうかが9件、進行が5件、最後の問答まわりが22件。「最短の手順で進んだ人が、問いの前提を聞かないまま問われる」穴も見つかり、Claude Codeが塞ぎました。
詰みがないかは、Claude Codeが機械に遊ばせて確かめています。
- でたらめに300周:台本をPythonで遊ぶチェッカーを作り、でたらめな選択で300周させて、全部がエンディングに着くこと
- 根拠の先回り:推理の問いで答えるとき、根拠になる手帳の項目が必ず先に手に入ること
- 実際にボタンを押す:手書きの攻略手順(167手)を、エミュレーターの上で実際に押してエンディングまで通すこと
エンジンは、Claude Codeが一から書いた
スーパーファミコン用の、オープンソースのアドベンチャーゲームのエンジンは、Claude Codeが探した範囲では見つかりませんでした。そこでClaude Codeは、65816(スーパーファミコンのCPU)のアセンブリで、エンジンを一から書いています。
- 文字:12×12ドットの日本語。フォントはPixelMplus12で、使う文字だけ(986字)を変換して入れる
- 絵:場面の絵は240×120ドット、人物の顔は64×64ドット
- コマンド:いどう・みる・しらべる・きく・みせる・でんわ・かんがえる・メモ・きろく。場面ごとに、使えるものが並ぶ
- 手帳と推理の問い:聞き込みで分かったことが手帳にたまり、問いでは答えと、その根拠(手帳から選ぶ)を選ぶ
- セーブ:カセットのSRAM(8KB)に記録する
- 音:オープンソースのサウンドドライバ、Terrific Audio Driverを使う

シナリオは、Claude Codeが作った台本用の簡単な言語で書かれています。これをPythonのコンパイラが命令列に変え、エンジンが1命令ずつ実行する仕組みです。
使ったソフトは、すべて無料です。
| 用途 | 道具 | ライセンス |
|---|---|---|
| 65816のアセンブラ | cc65(ca65 / ld65) | zlib |
| エミュレーターと自動テスト | Mesen 2 | GPL-3.0 |
| サウンドドライバ | Terrific Audio Driver | zlib / MIT |
| 日本語フォント | PixelMplus12 | M+ FONT LICENSE |
| 画像生成 | Z-Image(ComfyUIで実行) | Apache-2.0 |
| SFメモリへの書き込み | OSCR | (私の手持ちの機械) |
ROMの容量は、Claude Codeが2MB(16Mbit)に決めました。実際に使ったのは532KBです。
| 中身 | 容量 |
|---|---|
| 場面の絵(背景25枚、タイトル、起動画面) | 343KB |
| 文章 | 85KB |
| フォント(986字) | 31KB |
| 台本(命令列) | 26KB |
| 顔(11人) | 22KB |
| 音楽と効果音(サウンドドライバ込み) | 19KB |
| プログラム本体 | 5KB |
プログラム本体は、わずか5KBです。Claude Codeが書いたコードは、エンジンが約3,500行(アセンブリ)、変換ツールやチェッカーが約2,800行(Python)、テストが約1,300行(LuaとPython)でした。
絵:画像生成AIで描いて、スーファミの色に落とす
絵は、Claude Codeが画像生成AIのZ-Imageで作りました。ComfyUIで、自宅のEVO-X2で1枚1分ほどです。背景が25枚、人物の顔が11人です。
Claude Codeによると、指示文に「16ビットのゲームの背景」と書くと、最初からドット絵ふうの絵が出てきて、色数を落としても崩れにくかったそうです。
スーパーファミコンの絵は、8×8ドットのタイルごとに、16色のパレットを1つ選んで塗ります。Claude Codeは、この制約に合わせて減色するツールも自作しました。1枚の絵に使うパレットは6本で、色の近さは人の目の感じ方に近い色空間(OKLab)で測っています。

例に使ったのは、前回の記事でClaude CodeがBlenderで作った懐中時計です。
生成した36枚のうち、9枚はClaude Codeが作り直しています。11月の話なのに青々とした田んぼ、霜のはずが一面の雪景色、人が写り込んだ絵、意味のない英字の看板が入った絵などです。顔は、無地の背景から人物の輪郭を取り出し、頭の大きさと位置を割り出して、64×64ドットに自動で切り抜きました。
音楽:耳のない作曲家
曲は9曲、効果音は9つ。Claude Codeが、楽譜をテキストで書く形式(MML)で作曲しました。音色は、琴、尺八ふうの笛、鐘、弦のパッド、低音、太鼓をClaude CodeがPythonで合成し、ピアノとバイオリンは、Terrific Audio Driverに付いてくるパブリックドメインの音を使っています。
問題は、Claude Codeが音を聴けないことです。そこでClaude Codeは、エミュレーターで音源チップ(S-DSP)のレジスタを毎フレーム読み、8つの声部の音程と音量をピアノロールの図にして確かめました。

ただ、耳の代わりには限界がありました。1曲目と2曲目には、Claude Codeが音源チップのノイズ機能で「風の音」を入れていました。ノイズには音程がないので、最初のピアノロールには出てこず、Claude Codeはあとから図に1段足しています。ところが、実機で聴いた私には、これが「小さいノイズ」に聞こえました。Claude Codeが吹かせた風は、人間の耳にはただの雑音だったわけです(切ない。報告すると、Claude Codeは風の音を外しました。
曲を聴いた私の感想は、「全体的に演歌っぽい」です(笑。Claude Codeによると、9曲のうち8曲で琴か尺八ふうの笛を使い、陰音階や陽音階といった日本の音階も多く使ったそうです。Claude Codeが楽譜に残したコメントには、1曲だけ「ヨナ抜き短音階の演歌ふう」とまで書いてありました(確信犯
実機で動かす
Claude Codeは、ビルドしたROMから、SFメモリ用の4MBのイメージと、512バイトのマップ(どのゲームをどう読み込むかの情報)を作るツールも書きました。私は、これをOSCRで「Write Flash」「Write mapping」の順に書き込むだけです。
最初に実機で試したのは、本編ではなく、エンジンの試作版(OYAJIくんのテスト用の台本)です。日本語の表示、絵、コマンド、手帳、そして電源を切っても残るセーブまで、全部動きました。見つかった不具合は2つです。
- つづきからの直後に曲が鳴らない:隣の部屋に移ると鳴りだす。エンジンが「今鳴っている曲」をセーブに入れていなかった
- 1曲目と2曲目に小さなノイズ:前の節の「風の音」
どちらもClaude Codeが直し、起動画面を足して、本編のファイルができあがりました。ここまでで、相談から7時間14分です。
私が寝ている間に:実機でしか出ない不具合を先回り
本編のファイルを受け取ったところで、「今日はもう遅いので就寝します。引き続きデバッグをお願いします」と伝えて、私は寝ました。
エミュレーターで動くことと、実機で動くことは違います。有名なのは、画面を描いている最中にVRAM(画面用のメモリ)へ書き込むと、実機ではその書き込みが無視されて画面が崩れる、というものです。エミュレーターによっては、これがそのまま動いてしまいます。
そこでClaude Codeは、エミュレーターのMesenに「見張り役」を付けました。
| 見張ったもの | 結果 |
|---|---|
| 描画中のVRAMなどへの書き込み | 全編の通しプレイで1,045万回の書き込みを1回ずつ確かめ、描画中は0回。いちばん重い場面でも、転送は描画の合間(垂直帰線期間)が終わる9ライン前までに終わる |
| でたらめに遊ぶボット(余計なボタン、Bボタン、リセットも混ぜる) | 15万フレーム(約42分)×6本、各章の頭から5本、エンディングのあと2本。暴走、固まり、スタックのあふれは0 |
| セーブ → リセット → つづきから | 攻略手順の72か所で試して、読み込んだ中身がセーブしたときと1バイト残らず一致 |
そして、Claude Codeは本物の不具合を2つ見つけています。
- デモのセーブを、本編が読み込んでしまう:私のカートには、デモのセーブが残っています。デモと本編のセーブは同じ印を使っていたので、本編を書いた直後のタイトル画面に「つづきから」が出て、選ぶとデモのデータで本編が壊れた状態で始まるところでした。Claude Codeは、セーブにゲームごとの印を入れて直しています
- 壊れたセーブで、タイトル画面が暴走する:セーブの途中で電源が切れるなどして中身が壊れていると、「つづきから」を出すかどうかの判定のあとで、変な場所へ飛んでいました。前からあった不具合です
1つ目は、私が本編を書き込んで電源を入れれば、必ずタイトル画面に「つづきから」が出ていました。うっかり選んでいたら、と思うとゾッとします。寝ている間に、地雷を撤去してもらっていました(感謝
朝、Claude Codeが直した版を書き込んで、冒頭の5分を遊びました。
人間がやったこと、Claude Codeに任せたこと
| 人間(私) | Claude Code |
|---|---|
| 相談(SFメモリで実機、探偵倶楽部のような推理アドベンチャー)、「ネタバレなしで遊びたい」 | 法律、SFメモリ、開発環境の調査。ネタバレしない作り方(封印フォルダ、数字だけの報告) |
| 枠を選ぶ(昭和の終わりの地方、怪談寄り、2〜3時間、標準の難しさ) | 既存24作の調査、事件の設計、シナリオ全6章、別のClaude 2体による校閲、詰みのチェック |
| 開発ツールのダウンロードの許可 | ツールの導入、エンジン(65816のアセンブリ)、変換ツールとコンパイラ(Python)、自動テスト |
| ComfyUIの起動 | 絵の生成と作り直し、減色、顔の切り抜き、題字 |
| 曲の試聴と感想(「演歌っぽい」) | 作曲(MML)、音色の合成、レジスタのログでの確認 |
| SFメモリへの書き込みと実機での確認(デモ、曲、本編)、不具合の報告、起動画面の注文 | 不具合の修正、起動画面、SFメモリ用ファイルの作成、夜通しの不具合探し |
| この記事のレビュー | この記事の下書きと図 |
正直、気になっていること
- 曲の良し悪しを、Claude Codeは判断できません。 レジスタのログで分かるのは、どの楽器がどの高さで鳴ったかまで。演歌っぽいかどうかは、人間の耳でないと分かりません
- シナリオの出来は、私にもまだ分かりません。 読んでいないので(当然)。面白いかどうかは、<レビュー編>で正直に書きます
- 実機で確かめたのは、本体1台とSFメモリ1本だけです。 ほかの本体や互換機での動作は確かめていません
- 絵は、AIが描いたものの色数を落としただけです。 ドット絵職人のような手直しはしていません
- 見張り役が見張れるのは、分かっている違いだけです。 実機とエミュレーターの違いのうち、知られていないものは見つけられません
まとめ
- 最先端のAIは、30年以上前のゲーム機の「新作」も作れる。65816のアセンブリから、シナリオ、絵、音楽まで
- 相談から実機で遊べるまで、約7時間。私がしたのは、方向を決めること、許可すること、実機で確かめること
- 音が聴けないなら、音源チップのレジスタを読んで図にする。ただし、音程のない音は図に出ない
- 実機でしか出ない不具合は、エミュレーターに見張り役を付けて先回りする。寝ている間に、セーブまわりの不具合が2つ見つかった
- 作らせた本人がネタバレを知らないまま遊ぶ、という贅沢もできる
私は今、自分で作らせたゲームを、1人のプレイヤーとして遊んでいます。犯人が誰なのか、私はまだ知りません。遊び終えたら、<レビュー編>で感想を書きます。お楽しみに。
私の辞書に「素直」の二文字はない。犯人の名前も、まだ載っていない。


コメント