在 Mac 下解决 Wii Sports Resort 不能启动的经历

1. 收到从淘宝购买的 [Wii MotionPlus](http://en.wikipedia.org/wiki/Wii_MotionPlus)
2. 用 [WBFS for MacOS X](http://wakoopa.com/software/wbfs-for-macos-x) 把 [Wii Sports Resort](http://en.wikipedia.org/wiki/Wii_Sports_Resort) 美版 ISO 复制到移动硬盘
3. 打开 Wii,用 [USB Loader GX](http://usbloadergx.koureio.net/) 启动 Wii Sports Resort,蓝屏,Error #002 错误
4. 启用 USB Loader GX 的“防 002 错误”功能,再次启动 Wii Sports Resort,黑屏重启
5. 发现需要从 Wii Sports Resort 的光盘镜像里提取一个文件放到 SD 卡根目录,但网上没人提供美版的对应文件 (只有日版和欧版的)
6. 发现用来提取文件的 [WiiScrubber](http://gbatemp.net/index.php?download=4838) 只有 Win32 版本
7. 找到 [WiiScrubber-ng](http://www.dcemu.co.uk/vbulletin/showthread.php?t=138935),一个 Unix 移植
8. 下载编译 WiiScrubber-ng 的源代码,发现缺少 key.bin 文件无法执行
9. 下载 MakeKeyBin 的源代码,提取出跨平台部分单独编译,生成 key.bin
10. 运行 wiiscrubber-ng,发现提取文件部分并没有移植
11. [少量修改](http://github.com/jjgod/wiiscrubber-ng/tree/master) wiiscrubber-ng, 加入提取文件功能,获得所需的 `player.dol` 文件
12. 复制获得的文件到 SD 卡中,启用 USB Loader GX 的“Alternate DOL”功能,成功进入 Wii Sports Resort, 看完 MotionPlus 的使用演示
13. 退出游戏,关闭“Alternate DOL”功能,再次启动 Wii Sports Resort,正式开始游戏

dump 混合光盘镜像中的 ISO 9660 分区

Leopard / Snow Leopard 光盘镜像是混合 (hybrid) 分区格式,也就是一个磁盘镜像中,既有 HFS+ 分区,也有 ISO 9660 分区 (Boot Camp 驱动就存放在这个分区上),在 Mac OS X 上只会挂载前者,在 Windows 下只会挂载后者。虽然可以在 Terminal 下手工挂载后者,但也不是很方便,这里记录一个脚本,方便直接把 ISO 9660 分区 dump 为 ISO 文件:

$ cat dump.sh
#!/usr/bin/env bash
DISK=`hdiutil attach -noverify $1 | awk ‘/Apple_partition_scheme/ { print $1 }’`
dd if=$DISK of=$2 bs=512 count=`hdiutil pmap $DISK | awk ‘/WINDOWSSUPPORT/ { print $6 }’`
hdiutil detach $DISK

使用方法:

$ ./dump.sh snowleopard_10a354_userdvd.dmg bc.iso