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)与源代码不公开提供。