目前gw35周年的两款机型马里奥和塞尔达都可以通过本文所述方式刷入第三方系统,只是程序中涉及机型指令的不同(mario&zelda),本篇教程中所述内容基本来自中文网仅有的三篇教程,和我自己在刷机过程中的一点心得。肯定不是完美的,如果有什么错误还请指出。
录了个换芯片视频,简单看看吧。
【给老男人们的塞尔达gamewatch刷个机,先换个64mb芯片】 https://www.bilibili.com/video/BV1Z8411q765/?share_source=copy_web&vd_source=e48efec23ec5e97d832816d1e3478a00
【讲一讲如何配置Game&Watch刷机所需要的环境-哔哩哔哩】 https://b23.tv/WngYvAP
此处隐藏内容请回复后再查看。
此处隐藏内容请回复后再查看。
此处隐藏内容请回复后再查看。
sudo apt upgrade -y
sudo apt install binutils-arm-none-eabi python3 libftdi1 -y
sudo apt install python3-pip python3-pil git cmake -y
此处隐藏内容请回复后再查看。
cd ~
git clone https://github.com/kbeckmann/ubuntu-openocd-git-builder
cd ~/ubuntu-openocd-git-builder/
git checkout 13f52d2
git submodule update --init --recursive
./build.sh
sudo dpkg -i openocd-git_*_*.deb
sudo apt -y -f install
export OPENOCD="/opt/openocd-git/bin/openocd"
此处隐藏内容请回复后再查看。
此处隐藏内容请回复后再查看。
1.3.2 将ToolChain工具加入到PATH中
export PATH=$PATH:/home/regan/gnw/gcc-arm/bin/
#regan需要改为你设置的ubuntu用户名
此处隐藏内容请回复后再查看。
此处隐藏内容请回复后再查看。
cd ~/gnw
git clone https://github.com/ghidraninja/game-and-watch-backup.git
cd ~/gnw/game-and-watch-backup
下完后你的gnw文件夹中将有game-and-watch-backup这个文件夹。
此处隐藏内容请回复后再查看。
# 设定 OPENOCD 执行路径
export OPENOCD="/opt/openocd-git/bin/openocd"
# 1_检查 OpenOCD,若 OpenOCD 设定正常,会回应 Running sanity checks...Looks good!
./1_sanity_check.sh stlink mario(zelda) 选填你的机型
# 2_备份第1阶段
./2_backup_flash.sh stlink mario(zelda)
此处隐藏内容请回复后再查看。
# 3_备份第2阶段
./3_backup_internal_flash.sh stlink mario(zelda)
此处隐藏内容请回复后再查看。
# 4_J锁装置
./4_unlock_device.sh stlink mario(zelda)
此处隐藏内容请回复后再查看。
# 5_还原成原始内容
./5_restore.sh stlink mario(zelda)
此处隐藏内容请回复后再查看。
3.编译安装自制系统(retro-go )
此处隐藏内容请回复后再查看。
3.1下载 sylverb 版 retro-go 代码,并设置编译环境
cd ~/gnw
git clone https://github.com/sylverb/game-and-watch-retro-go.git
cd ~/gnw/game-and-watch-retro-go
此处隐藏内容请回复后再查看。
cd ~/gnw/game-and-watch-retro-go
git checkout e54b02b
git submodule update --init --recursive
子文件转移好以后执行
make clean
chmod a+x scripts/*.sh
python3 -m pip install -r requirements.txt
下载一些编译工具
此处隐藏内容请回复后再查看。
cd ~/gnw/game-and-watch-retro-go
git clone https://github.com/STMicroelectronics/STM32CubeH7.git
mv STM32CubeH7/Drivers
此处隐藏内容请回复后再查看。
3.3执行编译
3.3.1 编辑json文件
cd ~/gnw/game-and-watch-retro-go
export PATH=$PATH:/home/regan/gnw/gcc-arm/bin/
make romdef ROMINFOCODE=UTF-8
此处隐藏内容请回复后再查看。
正式步骤
#先 echo $PATH 确认 ToolChain 有没有在路径中,如果没有的话先执行:
export PATH=$PATH:/home/regan/gnw/gcc-arm/bin/
# 接着执行以下指令
export OPENOCD="/opt/openocd-git/bin/openocd"
# 连接方式:stlink - ST-LINK
export ADAPTER=stlink
# Game&Watch 机型 : mario - 马里奥款, zelda - 塞尔达款
export gnw_tg=zelda
cd ~/gnw/game-and-watch-retro-go
# 清除前次的编译结果
make clean
# 下面这行中,拿掉 flash 表示只编译系统,不进入刷写程序。
make GCC_PATH=/home/regan/gnw/gcc-arm/bin/ COVERFLOW=1 CHEAT_CODES=1 COMPRESS=lzma CODEPAGE=936 EXTFLASH_SIZE_MB=4 OVERCLOCKING_LEVEL=2 GNW_TARGET=zelda -j8 flash
此处隐藏内容请回复后再查看。
此处隐藏内容请回复后再查看。
sudo apt upgrade -y
sudo apt install git python3-pip cmake -y
cd ~/gnw
git clone https://github.com/BrianPugh/game-and-watch-patch
cd ~/gnw/game-and-watch-patch
pip3 install -r requirements.txt
cd ~/gnw/game-and-watch-patch
make download_sdk
此处隐藏内容请回复后再查看。
5.2编译原厂系统
export ADAPTER=stlink
# 设定 OPENOCD 路
export OPENOCD="/opt/openocd-git/bin/openocd"
# 先 echo $PATH 确认 gcc-arm 是否在 $PATH 路径中。若没有
export PATH=$PATH:/home/regan/gnw/gcc-arm/bin/
# 提示: 扩容 >= 64MB 时,make 参数一定要加上 LARGE_FLASH=1 ,否则会出现 Flash sector_erase failed on sector 0 的错误
cd ~/gnw/game-and-watch-patch
make clean
make PATCH_PARAMS="--device=zelda" LARGE_FLASH=1 flash_patched
此处隐藏内容请回复后再查看。
5.3编译自制系统
cd ~/gnw/game-and-watch-retro-go
make clean
# 编译第二区块的指令,为步骤3.3.2 的 make 参数中, EXTFLASH_SIZE_MB 值要扣减去原厂系统的容量,马里奥1MB,塞尔达4MB, 再加上两个参数 EXTFLASH_OFFSET=[偏移量] INTFLASH_BANK=2 。其他的参数都和步骤 3.3.2 相同
# 例如扩容至 16MB 的 zelda 款来说,参数为 EXTFLASH_SIZE_MB=12 EXTFLASH_OFFSET=4194304 INTFLASH_BANK=2,完整 make 指令如下(参考3.3.2有些参数可以不加):
make GCC_PATH=/home/regan/gnw/gcc-arm/bin/ COVERFLOW=1 CHEAT_CODES=1 COMPRESS=lzma CODEPAGE=936 EXTFLASH_SIZE_MB=12 GNW_TARGET=zelda EXTFLASH_OFFSET=4194304 INTFLASH_BANK=2 OVERCLOCKING_LEVEL=2 -j8 flash
此处隐藏内容请回复后再查看。
此处隐藏内容请回复后再查看。
# 套件更新
sudo apt upgrade -y
# 安装 git (如已安装可省略)
sudo apt install git python3-pip -y
# 下载与安装 LCD-Game-Shrinker 工具
cd ~
git clone https://github.com/bzhxx/LCD-Game-Shrinker
cd ~/LCD-Game-Shrinker
python3 -m pip install -r requirements.txt
接着安装 Inkscape ,它是知名的编辑矢量素材的软件。
sudo apt install inkscape -y
此处隐藏内容请回复后再查看。
cd ~/LCD-Game-Shrinker
python3 shrink_it.py
此处隐藏内容请回复后再查看。
-----------------------------------------------------------我是分割线
参考资料:
https://zhuanlan.zhihu.com/p/478352882
https://benjenq.pixnet.net/blog/post/48408020
https://apple524.github.io/2022/04/03/g-w-hack/
上几张效果图
(()