Modding du Game & Watch Zelda
September 23, 2023•631 words
Modding du Game & Watch Zelda
Sources
Basé sur les trois tutos et suivants et la doc des différents projets :
- A Straightforward Guide To Unlocking The Nintendo Game And Watch
- The Nintendo before Christmas: Upgrade Time!
- How to add games on Nintendo Game and Watch 2020. No Soldering Raspberry pie only Guide.
Préparation du Raspberry Pi
- Installer Raspberry Pi OS sur une carte SD
- Démarrer le Pi avec la carte SD, le laisser faire sa config et redémarrer
- Faire la configuration de base, se connecter au Wi-Fi, faire les mises à jour
- Infos de login : rpi / rpi
Sauvegarde du contenu de la mémoire flash
Installation du script et des pré-requis
Installer les dépendances suivantes :
sudo apt install git python3 binutils-arm-none-eabi libhidapi-hidraw0 libftdi1 libftdi1-2 openocd
Cloner le repo game-and-watch-backup (sous-modules inclus) :
git clone --recurse-submodules
Lancer le sanity check pour vérifier que les pré-requis sont là :
cd game-and-watch-backup ./1_sanity_check.sh rpi zelda
Connexion du Game & Watch
Débrancher la batterie. Mettre une petite spatule isolée en dessous des deux fils et lever doucement pour que le connecteur se soulève.
Eteindre le Pi et raccorder les fils suivants du Pi vers le Game and Watch (voir le schéma des broches du Pi) :
- GPIO25 <> SWCLK (5e en partant de la flèche)
- GPIO24 <> SWDIO (2e en partant de la flèche)
- GND <> GND (3e en partant de la flèche)
Checker plusieurs fois (une erreur peut cramer la flash) et redémarrer le Pi.
Backup de la mémoire flash
Basé sur https://github.com/ghidraninja/game-and-watch-backup
Au moindre problème, lire le readme présent dans le même répertoire que les scripts, il contient toutes les informations pour débricker
Brancher le G&W en USB-C, le démarrer et le mettre sur l'écran TIME
Backupper la flash SPI (n'efface rien, dure plusieurs minutes)
cd game-and-watch-backup ./2_backup_flash.sh rpi zelda
Backupper la mémoire flash interne ( /!\ efface la mémoire SPI, le G&W ne fonctionnera plus avant le 5e script /!)
./3_backup_internal_flash.sh rpi zelda
Déverouiller le G&W (supprime la protection en écriture, et efface la mémoire flash de la puce STM32)
./4_unlock_device.sh rpi zelda
Restaurer le firmware d'origine
./5_restore.sh rpi zelda
Le Game & Watch est maintenant déverouillé, et le firmware d'origine a été réinstallé.
Sauvegarder les backups des mémoires flash en lieu sûr
Installation de retro go
Basé sur https://github.com/kbeckmann/game-and-watch-retro-go
Installer le toolchain arm-gcc-none-eabi en version 10 ou plus (elle n'est pas dispo dans le repo Raspberry Pi OS)
wget https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases/download/v12.3.1-1.2/xpack-arm-none-eabi-gcc-12.3.1-1.2-linux-arm.tar.gz mkdir -p ~/opt/ cd ~/opt/ tar xvf ~/xpack-arm-none-eabi-gcc-12.3.1-1.2-linux-arm.tar.gz export PATH=$PATH:/home/rpi/opt/xpack-arm-none-eabi-gcc-12.3.1-1.2/bin/
Cloner le repo game-and-watch-retro-go (sous-modules inclus)
cd ~
git clone --recurse-submodules https://github.com/kbeckmann/game-and-watch-retro-go
Installer les dépendances (optionnel pour un usage basique)
cd game-and-watch-retro-go python3 -m pip install -r requirements.txt
Poser les roms dans ~/game-and-watch-retro-go/roms/gb et ~/game-and-watch-retro-go/roms/nes, et éventuellement des fichiers .jpg ou .png avec les mêmes noms que les roms (elles seront réduites à 128x96 pixels)
Compiler :
export ADAPTER=rpi make -j5 GNW_TARGET=zelda
Rebrancher le Game & Watch au Pi si ce n'est pas déjà fait, le brancher au secteur, et appuyer sur le bouton Power
Flasher
make flash -j5 GNW_TARGET=zelda
A creuser
Les flags de compilation de retro-go (par exemple : COVERFLOW=1 JPG_QUALITY=90 COMPRESS=lzma)
- Custom firmware : Permettrait de dual booter entre le firmware d'origine et l'émulateur
Troubleshooting
- Pour revenir au firmware d'usine (mais quand même unlocké), utiliser le script ./5_restore.sh rpi zelda de la section Backup de la mémoire flash