Marchwind 64 内置一个调试接口。在选项里打开后,游戏会在本机开一个端口,仓库里的 MCP 服务器通过它把游戏变成一组工具,交给支持 Model Context Protocol 的 AI 客户端使用(Claude Code、Codex、Cursor 等)。
接上之后,智能体可以:
- 读取当前画面在做什么:标题、对白、场间画面、战前确认、设置窗口等状态;
- 截图、录一段 MP4;
- 像玩家一样按键,或者直接操作原生界面上的按钮和输入框;
- 切换语言、图片模式、规则和界面大小;
- 读写游戏内存(排查问题用)。
我们自己开发时就是这样让 AI 跑流程、复现 bug、核对翻译排版的。玩家也可以拿它来写自动化脚本、录视频,或者让 AI 帮忙看出了什么问题。
需要什么
-
游戏:Windows、macOS、Linux 或 Steam Deck 版都可以。
-
Python 3:系统自带的就行,不用装额外的包。Windows 上从 python.org 安装,命令是
python。 -
MCP 服务器脚本:在源代码仓库里,克隆下来即可,不需要编译:
git clone https://github.com/dyzz/srw64-recomp.git用到的文件是
tools/recomp/debug/mcp_server.py和它旁边的session.py。 -
一个支持 MCP 的 AI 客户端。
1. 在游戏里打开调试接口
打开「选项 → 关于」,把「AI 调试接口(MCP)」设为「开」。立即生效,不用重启;设置会保存,以后每次启动游戏都会在画面上方提示一次,提醒你它还开着。不用时在同一个地方关掉,已有的连接会马上断开。
开着的时候,这一行下面会显示正在监听的地址和这次运行的目录,旁边的「复制运行目录」按钮可以把完整路径复制到剪贴板。
游戏只在本机(127.0.0.1)上开一个端口,并在运行目录里写一个 debug.json,记下端口号和一串随机令牌。连接时必须先出示令牌,而这个文件只有你自己的账户读得到。游戏退出或关掉开关时,这个文件会被删掉。
也可以用启动参数 --debug 打开(只对这一次运行有效)
- macOS:
/Applications/Marchwind64.app/Contents/MacOS/srw64-gfx-host --play --rom ~/Games/srw64.z64 --debug(.z64、.v64、.n64都可以) - Windows:在解压出的文件夹里运行
Marchwind64.cmd --debug - Linux:
./marchwind64.sh --debug - Steam Deck:Steam 里这个游戏的「属性 → 启动选项」填
%command% --debug
用参数打开时,选项里的开关显示为「开」,本次运行不能在那里关闭。
各系统的运行目录:
| 系统 | 运行目录 |
|---|---|
| Windows | %LOCALAPPDATA%\SRW64Recomp\sessions\<会话>\run\ |
| macOS | ~/Library/Application Support/SRW64Recomp/sessions/<会话>/run/ |
| Linux / Steam Deck | ~/.local/share/srw64-recomp/sessions/<会话>/run/ |
2. 把 MCP 服务器加到 AI 客户端
MCP 服务器是一个通过标准输入输出通信的 Python 脚本。
Claude Code:
claude mcp add srw64 -- python3 /你的路径/srw64-recomp/tools/recomp/debug/mcp_server.py
其他客户端:大多用类似下面的 JSON 配置(文件位置和外层键名以各客户端的说明为准):
{
"mcpServers": {
"srw64": {
"command": "python3",
"args": ["/你的路径/srw64-recomp/tools/recomp/debug/mcp_server.py"]
}
}
}
Windows 上把 python3 换成 python,路径写成 C:\\你的路径\\srw64-recomp\\tools\\recomp\\debug\\mcp_server.py(JSON 里反斜杠要写两个)。
加好后客户端里应该能看到一组以 srw64_ 开头的工具。
3. 连接并开始使用
直接让智能体连上游戏就行,不用告诉它路径:
用 srw64_attach 连上游戏,截一张图告诉我现在在哪个画面。
srw64_attach 不带参数时,会在你的用户目录里找开着调试接口的游戏,连上最新启动、而且能应答的那一个。同时开着好几个游戏,或者想指定某一个时,把「复制运行目录」得到的路径传给它的 run 参数。
连上以后就可以用自然语言布置任务,比如:
- 「等到主菜单出现后开始新游戏,一路快进到第一次选择。」
- 「把语言切成英文,截图对照中文版同一个画面,看有没有文字溢出。」
- 「录 10 秒,我要看这段战斗动画哪里卡了。」
- 「对白卡住不动了,读一下状态和最近的事件日志,看看停在哪条指令。」
智能体一般会先看 srw64_status 和截图判断画面,再用 srw64_wait 等条件满足,避免盲目等待。
工具一览
| 工具 | 用途 |
|---|---|
srw64_attach |
连接一个运行中的游戏。不填参数时自动找最新的那个;run 填运行目录可以指定。 |
srw64_launch |
从源码构建并启动一个隔离的开发会话(需要完整的开发环境,见下文)。 |
srw64_status |
当前状态:帧数、窗口、语言、图片模式、规则、标题与序章、对白(页、字号、速度、快进)、各原生页面、提示条、按住的键。 |
srw64_screenshot |
截取下一帧(含原生叠加界面),直接返回图片;也可以截设置窗口等其他窗口。 |
srw64_record |
录接下来若干秒的 MP4,返回文件路径。 |
srw64_record_start / srw64_record_stop |
开始 / 结束一段不定长录像。 |
srw64_wait |
等待条件成立:帧数、对白出现、某个页面打开、回到主菜单、对白里出现某段文字、事件日志里出现某类事件。 |
srw64_events |
读取事件日志(对白、序章、规则、设置、各场间画面、脚本等)。 |
srw64_keys |
游戏键盘。固定使用经典布局,不受玩家改键影响:Z=A、X=B、Enter=START、方向键、Q/E=L/R、I/K=C 上/下、WASD=摇杆。支持组合键和按住时长,比如 e+z 快进。 |
srw64_pad |
虚拟手柄,按键名用 Steam Deck 的叫法,效果与默认绑定一致(View 打开设置等)。 |
srw64_buttons |
直接按 N64 手柄按键,跳过键盘层。 |
srw64_ui_tree |
列出原生界面(姓名页、设置窗口、菜单栏等)上的控件、位置和文字。 |
srw64_click / srw64_type / srw64_ui_key |
按文字或坐标点击控件、在输入框里打字(支持输入法组字)、给界面发按键。 |
srw64_menu |
按路径点菜单栏项目,或列出菜单。 |
srw64_window |
调整窗口大小、置前或关闭。 |
srw64_settings |
直接改规则、语言、图片模式、界面大小、宽高比和各画面的原版/现代模式。 |
srw64_mini_stage_load |
加载并进入一个迷你关卡镜像,见迷你关卡。 |
srw64_viewer_start |
在战斗查看器里播放指定的一场战斗动画。 |
srw64_memory / srw64_memory_write |
读 / 写游戏内存(十六进制)。写入一次最多 4096 字节。 |
srw64_quit |
正常退出游戏,返回本次运行的报告。 |
工具出错时以错误结果返回,不会让 MCP 服务器退出。
注意事项
- 这是你真正的游戏和存档。 智能体连上的就是你平常玩的游戏,读写的是平常那套存档和设置,智能体存档、改设置都会真的生效。想放心折腾,先备份用户目录下的
saves/,或者用--user-dir指定一套单独的目录(把 ROM 路径和需要的存档复制过去)。 srw64_memory_write可能让游戏出错。 它绕过游戏逻辑直接改内存,只在你清楚自己在做什么时使用。- 接口只对本机开放。 游戏只监听
127.0.0.1,局域网里的其他设备连不上;本机的其他程序也要拿到debug.json里的令牌才能操作。不要把这个文件发给别人。远程连接要靠 ssh 转发(见下)。 srw64_quit会关掉游戏。 只想断开、继续玩的话,在「选项 → 关于」把开关关掉就行。- 不用时关掉开关。 开关会一直保存,启动时的提示就是提醒这一点。
从电脑连 Steam Deck
前提:电脑能用 ssh 登录 Deck(例如 ~/.ssh/config 里配好了一个叫 Deck 的主机),Deck 上的游戏已在「选项 → 关于」打开调试接口(或者按上文带 --debug 启动)。在电脑的仓库目录里运行:
python3 tools/release/linux/attach.py --host Deck
它会在 Deck 上找到正在运行的游戏,用 ssh -L 把端口转发到本地,并设为「当前会话」。之后智能体直接调用 srw64_attach(不带参数)就能连上 Deck。截图、录像和事件日志是游戏写在 Deck 上的文件,会通过同一条连接自动取回。
attach.py --start 会通过 ssh 带 --debug 启动游戏;再加 --data-dir '~/srw64-debug' 则使用一套单独的数据目录(ROM 和 HD 包用链接,存档和设置是复制的),调试不会写你自己的存档。
安卓
安卓版同样在「选项 → 关于」打开。手机和电脑之间要靠 adb:先在手机的开发者选项里打开 USB 调试(或无线调试),用 adb 连上电脑,然后在仓库目录里运行:
python3 tools/release/android/attach.py --no-start
它用 adb forward 把游戏的接口转发到电脑,并设为「当前会话」,之后同样调用 srw64_attach。截图、录像和事件日志也会通过这条连接取回。安卓上不用令牌,电脑通过 adb 转发访问接口。
开发者:从源码启动
如果你在本地搭好了完整的构建环境(见仓库里的构建文档),srw64_launch 会按需构建并启动一个独立的调试会话。它的运行目录在仓库的 build/recomp/debug/ 下,不碰你平常玩的存档;还可以直接指定语言、图片模式、规则、存档或迷你关卡。会话随 MCP 服务器一起退出。
仓库里的 docs/guide/debug-interface.md 有更完整的说明,包括命令行工具 srw64ctl.py、Python 脚本接口和接口覆盖范围。