Game & Watch 刷机完全教程


安装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

  1. 下载相关库:
    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

  2. 安装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闪存。

刷机步骤

  1. 进入game-and-watch-backup程序 备份并破解原始固件
  2. ./1_sanity_check.sh stlink mario(zelda)`
    执行健全性检查并确保所有必需的工具都可用 显示Looks good!表示软件都正常部署
  3. ./2_backup_flash.sh stlink mario`
    备份 SPI 闪存的内容,不修改设备内容,在Game&Watch时钟画面进行,备份不成功可以多尝试几次
  4. ./3_backup_internal_flash.sh stlink mario(zelda)`
    备份内部闪存。为此,需要修改 SPI闪存的内容。您的设备将停止工作,直到它在第 5 步中恢复
    备份中药断电再开建议见个秒以上,出现蓝屏画面按Enter继续,如果没有显示蓝屏,按下主机上的TIME键从新开始
  5. ./4_unlock_device.sh stlink mario(zelda)`
    这将禁用主动读取保护。这将擦除 STM32 的内部闪存
  6. ./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)


文章作者:
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 !
  目录