必须为两个MelonDS实例分配不同MAC地址并启用Slirp直连:下载1.3.2+版本,通过终端加--macaddr参数或配置文件隔离MAC;P1开启Slirp并Start host,P2 Join host 127.0.0.1:5555;游戏内同步进宝可梦中心二楼,输入相同房间ID“000000”,P1送、P2收,全程勿切窗口。

在Mac上用MelonDS模拟器实现宝可梦双机交换,必须绕过系统对本地网络虚拟接口的限制,否则两个实例会因MAC地址冲突或无法广播而始终显示“等待连接中”。
安装并配置支持联机的MelonDS版本
从官方GitHub releases页面下载 melonDS 1.3.2 macOS Universal 或更高版本(低于1.3的版本在macOS 14+上默认禁用TUN/TAP驱动,无法启用Slirp网络)。
双击melonds-macos-universal.dmg → 拖拽melonds.app到Applications文件夹 → 右键“显示简介”→勾选“仍要打开”。
首次启动时若弹出“无法验证开发者”,需前往系统设置 → 隐私与安全性 → 点击下方‘仍然打开’。这一步跳过会导致后续所有网络功能灰显。
为两个实例分配独立网络身份
方法一:通过终端强制指定不同MAC地址启动
打开终端,执行以下两条命令(注意替换实际路径):
```bash
cd /Applications/melonds.app/Contents/MacOS/
./melonds --macaddr 00:11:22:33:44:55 &
./melonds --macaddr 00:11:22:33:44:56 &
```
这两条命令会同时拉起两个窗口,且各自拥有唯一MAC地址。不加--macaddr参数则两个实例共享同一MAC,进入联机房间后仅显示文字气泡、无角色模型——这是Mac平台最常被忽略的致命错误。
方法二:使用配置文件隔离(适合反复操作)
在~/Library/Application Support/melonds/下新建两个子目录:p1_config和p2_config;分别复制一份melonds.ini进去;编辑p2_config/melonds.ini,在[Network]节下添加:macaddr=00:11:22:33:44:56;启动时用命令:./melonds --config ~/Library/Application\ Support/melonds/p1_config/melonds.ini 和对应p2路径。
启用Slirp模式并建立直连通道
第一步:在P1窗口中点击菜单栏 Emulation → Network → Slirp mode → Enable
第二步:P1窗口再次进入 Emulation → Network → Start host,会话名设为“pokemon-exchange”,端口保持默认5555
第三步:切换到P2窗口 → Emulation → Network → Join host → Host address填入127.0.0.1:5555 → 点击Connect
此时P1底部状态栏应显示“Host active (1 client)”,P2显示“Connected to 127.0.0.1”。若P2提示“Connection refused”,说明P1未真正开启host服务——请关闭所有melonds进程后重试,macOS有时会残留僵尸网络监听进程。
游戏内完成交换流程
① 两台窗口均载入合法宝可梦ROM(如黑2),确保均已通关第一个道馆(未通关时二楼NPC不可交互)。
② 同时进入任意宝可梦中心 → 上二楼 → 找左边穿白大褂的NPC对话 → 选择“连接交换” → “附近的人”。
③ P1先按A键进入房间创建界面,输入房间ID“000000” → P2随后输入相同ID → 等待约3秒,双方屏幕右上角出现对方头像即表示通信握手成功。
④ P1选择“送出宝可梦” → 从电脑盒子中挑一只符合交换条件的精灵(不能带HM技能、名称需为英文/日文) → P2选择“接收宝可梦” → 确认后开始数据传输。
传输过程中不要切换窗口或触碰键盘,macOS的窗口焦点抢占机制可能导致Socket中断,一旦进度条卡在85%就只能重启双实例重新来过。


















