AI x SFC Player

文章 · · English · 简体中文 · 日本語

一句話,AI 做出一款 SFC 遊戲:《汴河煙雨》2.5D 五子棋

我們在一個空資料夾裡開了全新的 Claude Code(模型 Claude Opus 5.5),只用 npx 裝了 AI x SFC Player 的 skill 與 MCP 工具,然後給了它一句話:

prompt>

幫我做一個 2.5D 五子棋,背景是清明上河圖,不斷捲動,接著幫我寫一首背景音樂,淡淡輕輕,煙煙雨雨等曲調。 請用 sfc-make,並記錄製作過程報告。

之後沒有再補充任何說明。23 分鐘後,它交回一款可以在超任(SFC)上執行的遊戲,以及一份完整的製作報告。

《汴河煙雨》開局畫面
開局:上方是不斷捲動的清明上河圖,下方是漂在汴河上的 13 路棋盤,細雨斜斜落下。
長卷捲到虹橋一帶
長卷捲到虹橋一帶;電腦連成五子,棋子閃著金光。

它做了什麼

長卷:一開始太糊,於是改用「串流」

它先用我們的 convert_image 轉換整條長卷。SFC 一層背景最多只能放 1024 個不同的圖塊,工具把 3419 個圖塊合併成 880 個,結果細節全糊了:

第一次轉換的結果,細節模糊
第一次嘗試:3419 個圖塊被合併成 880 個,只剩色塊。

它的判斷是:既然畫面上一次只看得到一小段,就不必把整條長卷同時放進顯示記憶體。於是它自己寫了轉換程式:全卷共用 7 組調色盤,3419 個圖塊原封不動放在 ROM 裡;捲動時每露出新的一欄,就在垂直空白期間用 DMA 把那一欄的 13 個圖塊送進顯示記憶體裡一個 64 欄的環形區域。上面兩張遊戲截圖,就是串流後完整保留細節的樣子。

2.5D 棋盤

它先在電腦上模擬 Mode 7 的透視公式,挑出合適的鏡頭:棋盤遠端約 108 像素寬、近端約 220 像素寬。棋盤、格線、星位、木紋、黑白棋子(含高光與投影)、棋盤側面與水面倒影,全部是程式產生的 Mode 7 圖塊,一共 59 塊。

落子時只要改寫 Mode 7 地圖裡的 4 個位元組,棋子就會自動跟著透視變形。游標(毛筆形的箭頭加一個扁圓環)、最後一手的紅點和勝利的閃光則是精靈,位置從事先算好的「交叉點 → 螢幕座標」表查出來。

玩家連成五子獲勝
你贏了:紅色印章「勝」,五顆子閃著金光。
電腦獲勝
電腦勝,右側出現「按鍵再戰」。

配樂〈煙雨汴河〉

E 羽調五聲音階(E G A B D),每分鐘 60 拍。古箏般的撥弦琶音、氣聲較重的簫吹旋律、低音弦、極輕的正弦波霧氣和音,再用高音鈴聲當作零星「雨滴落河」;回音設得較長,營造濕潤的空間感。4 小節前奏加 16 小節循環,大約 80 秒一輪。這是遊戲在模擬器裡實際演奏的錄音:

除錯與試玩

數字

給 AI 的指示1 句話
總時間約 23 分鐘
組譯次數4 次(沒有組譯錯誤;1 個執行時的錯誤,自己找出並修好)
AI 回覆77 則(Claude Opus 5.5)
AI 輸出 token102,352
處理的 token 總數約 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)與原始碼不公開提供。