mcp winuae emu
它的作用
该服务器允许AI助手(Claude等)启动WinUAE,连接到其GDB服务器,然后读取/写入内存、读取/写入寄存器、设置断点、单步执行代码、反汇编铜列表等,所有这些都是通过MCP工具调用完成的。
快速开始
1.下载预构建的WinUAE二进制文件
下载 winuae-gdb.exe 从 WinUAE分叉发布 并将其放置在目录中(例如。, C:\apps\winuae\).
2.安装MCP服务器
git clone https://github.com/axewater/mcp-winuae-emu.git
cd mcp-winuae-emu
npm install
npm run build3.添加到克劳德代码
添加到MCP设置(~/.claude/claude_desktop_config.json 或项目 .mcp.json):
{
"mcpServers": {
"winuae-emu": {
"command": "node",
"args": ["C:/path/to/mcp-winuae-emu/dist/index.js"],
"env": {
"WINUAE_PATH": "C:/apps/winuae",
"WINUAE_CONFIG": "C:/apps/winuae/Configurations/A500-Dev.uae"
}
}
}
}4.提供Kickstart ROM和配置
你需要一个有效的Amiga Kickstart ROM文件(例如,A500的Kickstart 1.3)和一个WinUAE .uae 配置文件。最小配置:
cpu_type=68000
chipset=ocs
chipmem_size=1
kickstart_rom_file=C:\path\to\kickstart.rom服务器读取您的配置,合并GDB所需的设置,并启动 winuae-gdb.exe 自动。
配置
| 变量 | 默认值 | 描述 |
|---|---|---|
WINUAE_PATH | C:\apps\winuae | 目录包含 winuae-gdb.exe |
WINUAE_CONFIG | \Configurations\A500-Dev.uae | 通往您的道路 .uae 配置文件 |
WINUAE_GDB_PORT | 2345 | GDB服务器TCP端口 |
WINUAE_DEBUG | 0 | 设置为 1 启用GDB协议调试日志记录 |
工具
连接
| 工具 | 说明 |
|---|---|
winuae_connect | 启动WinUAE并连接到GDB服务器 |
winuae_disconnect | 断开并停止模拟器 |
winuae_status | 检查是否连接和响应 |
记忆
| 工具 | 说明 |
|---|---|
winuae_memory_read | 以十六进制读取内存字节 |
winuae_memory_write | 将十六进制字节写入内存 |
winuae_memory_dump | 十六进制+ASCII转储(类似于十六进制编辑器) |
winuae_load | 将二进制文件加载到Amiga内存中 |
中央处理器
| 工具 | 说明 |
|---|---|
winuae_registers_get | 读取所有m68k寄存器(D0-D7、A0-A7、SR、PC) |
winuae_registers_set | 写入寄存器(D0-D7、A0-A7、SR、PC的任何子集) |
winuae_step | 单步N指令 |
winuae_continue | 恢复执行 |
winuae_pause | 暂停执行并读取寄存器 |
winuae_reset | 暂停CPU并读取当前寄存器状态 |
断点和观察点
| 工具 | 说明 |
|---|---|
winuae_breakpoint_set | 在某个地址设置软件断点 |
winuae_breakpoint_clear | 删除断点 |
winuae_watchpoint_set | 内存读/写/访问中断 |
winuae_watchpoint_clear | 删除观察点 |
Amiga硬件
| 工具 | 说明 |
|---|---|
winuae_custom_registers | 读取并解码所有自定义芯片寄存器($DFF000-$DFF1FE) |
winuae_copper_disassemble | 解码铜列表(等待、移动、跳过、结束) |
winuae_disassemble | m68k基本拆卸 |
运作原理
- 发射:阅读您的
.uaeconfig,合并GDB设置,生成winuae-gdb.exe -portable -G -s debugging_features=gdbserver -s debugging_trigger= - 连接:检索到的TCP连接
localhost:2345直到GDB服务器准备就绪 - 协议:通过以下方式进行沟通 GDB RSP --数据包帧、校验和、ack模式、寄存器/内存命令、断点命令等。
技术说明
- 这
-G旗和-s覆盖 必须 是CLI参数。此WinUAE内部版本(v4.10.1)忽略use_gui和debugging_features在配置文件中设置时。 - GDB服务器发送
O连接时的数据包(控制台输出)。协议处理程序会自动跳过这些。 - 自定义芯片寄存器读取使用64字节块,因为GDB服务器对硬件I/O地址有读取大小限制。
- ECS/AGA专用寄存器($DFF1C0+)在OCS芯片组配置上返回零。
- CIA寄存器($BFE001/$BFD000)不能通过GDB内存读取接口访问。
学分
- WinUAE 托尼·威伦——Amiga模拟器
- BartmanAbyss WinUAE叉子 --将GDB服务器添加到WinUAE
- Vscode amug BartmanAbyss——率先进行Amiga GDB调试的VSCode扩展,以及这项工作的参考
- 模型上下文协议 通过Anthropic
局限性
- 仅限Windows --需要WinUAE
- 基本拆卸 --反汇编程序只识别少数操作码(RTS、NOP、RTE等);所有其他显示为
DC.W - 中情局无法访问 --CIA-A/CIA-B寄存器未通过GDB服务器映射
- 单个连接 --GDB服务器一次接受一个客户端
许可证
麻省理工学院
