安装Ubuntu系统
推荐用电脑安装Ubuntu系统来对Game & Watch进行刷机,这样速度会比用树莓派搭建的系统快很多
安装Ubuntu系统的教程就自行网上查找,不在赘述
准备工作
安装所需软件
1 | sudo apt-get install binutils-arm-none-eabi python3 libftdi1 libc6-i386 libusb-1.0-0-dev libftdi-dev -y |
安装openOCD
下载相关库:
sudo apt-get install build-essential pkg-config autoconf automake libtool libusb-dev libusb-1.0-0-dev libhidapi-dev -y
sudo apt-get install libtool libsysfs-dev libftdi1-2 -y安装openocd:
wget https://nightly.link/kbeckmann/ubuntu-openocd-git-builder/workflows/docker/master/openocd-git.deb.zip
unzip openocd-git.deb.zip
sudo dpkg -i openocd-git_*_amd64.deb
sudo apt-get -y -f install
export OPENOCD="/opt/openocd-git/bin/openocd" 或者
sudo vim /etc/profile#export
PATH=$PATH:/opt/openocd-git/bin/#source ~/.bashrc
安装 arm-gcc-none-eabi toolchain. 10.2.0及以上版本
sudo apt install libncurses-dev
sudo apt-get install lsb-core -y
安装安装备份破解模块
git clone https://github.com/ghidraninja/game-and-watch-backup`
安装game-and-watch-retro-go程序
git clone https://github.com/olderzeus/game-and-watch-retro-go`
强烈推荐使用这个github的发布,带封面,优化效果好!!!
安装双系统补丁
git clone https://github.com/BrianPugh/game-and-watch-patch`
至此软件部分的工作完成
硬件破解
使用stlinkV2 连接到Game&Watch设备,连接对应引脚如下图所示
警告:在连接前请断开电池接口,连接调试器时,请确保至少连接了SWDIO、SWDCLK和GND。在任何情况下都不要将3.3V连接到VDD连接,否则可能会损坏SPI闪存。
刷机步骤
- 进入game-and-watch-backup程序 备份并破解原始固件
- ./1_sanity_check.sh stlink mario(zelda)`
执行健全性检查并确保所有必需的工具都可用 显示Looks good!表示软件都正常部署 - ./2_backup_flash.sh stlink mario`
备份 SPI 闪存的内容,不修改设备内容,在Game&Watch时钟画面进行,备份不成功可以多尝试几次 - ./3_backup_internal_flash.sh stlink mario(zelda)`
备份内部闪存。为此,需要修改 SPI闪存的内容。您的设备将停止工作,直到它在第 5 步中恢复
备份中药断电再开建议见个秒以上,出现蓝屏画面按Enter继续,如果没有显示蓝屏,按下主机上的TIME键从新开始 - ./4_unlock_device.sh stlink mario(zelda)`
这将禁用主动读取保护。这将擦除 STM32 的内部闪存 - ./5_restore.sh stlink mario(zelda)`
这将恢复原始固件
以上步骤完成后,会在game-and-watch-backup/backups 目录下得到 flash_backup_mario.bin、internal_flash_backup_mario.bin、itcm_backup_mario.bin 三个文件,请妥善保存。
安装模拟器
进入 game-and-watch-retro-go模拟器目录
将游戏按照不同的类型放置到相应的游戏目录下面(游戏名字和对应的封面照片文件名相同)
修改每个模拟器下面的 json 文件,如下图所示:
确认以上文件都放置正常位置以后就可以开始编译系统了
运行以下命令:
make clean
make romdef
make -j8 EXTFLASH_SIZE_MB=63 EXTFLASH_OFFSET=1048576 INTFLASH_BANK=2 CODEPAGE=936 COVERFLOW=1 GNW_TARGET=mario GAME_GENIE=1 flash
请根据自身机器调整各项参数
SIZE_MB:扩容后内存容量 如果安装双系统 马里奥机器减去1M,塞尔达机器减去4M,此为原始固件占用容量
INTFLASH_BANK:1 单系统 2 双系统
CODEPAGE:936 - 简体中文 1252 - English 950 - 繁體中文
COVERFLOW: 1 显示封面 0 不显示封面
GAME_GENIE: 1 打开金手指 0 不打开金手指
安装双系统补丁
进入 game-and-watch-patch 目录安装双系统补丁
将game-and-watch-backup 程序备份的系统文件复制到game-and-watch-patch目录下面
运行以下命令:
make clean
make PATCH_PARAMS=”–device=mario –internal-only” flash_patched
make PATCH_PARAMS=” –smb1=path-to-patched-smb1-rom.nes” flash_patched
至此全部安装工作完成
感谢以下资料:
(https://github.com/kbeckmann/game-and-watch-retro-go)
(https://github.com/olderzeus/game-and-watch-retro-go)
(https://github.com/BrianPugh/game-and-watch-patch)