@neohroot Voy escribiendo esto por aquí. Hay que actualizarlo, completarlo, y corregirlo
![como la niña del exorcista [360º]](/images/smilies/nuevos/vueltas.gif)
.
Pongo el enlace al
documento para no perderlo.
NOTA: No me responsabilizo de nada de lo que comento aquí.
1. MATERIALES.Necesitamos para el proyecto:
1.1. Para la conexión entre la GW y el ordenador. Por orden de prioridad/calidad.
Drivers stlink
@Dave&Fran
Link drivers STlink:
https://www.st.com/en/development-tools/stsw-link009.html#get-softwareLink programa act. firmware:
https://www.st.com/en/development-tools/stsw-link007.html1.2. Ampliación memoria (opcional y recomendado) tipo flash SPI a 1.8v. Listado de memorias "compatibles":
MX25U8035F (1MB) stock
MX25U12835F (16MB) probada por neohroot enlace aliexpress y las que estamos usando varios.
Si son de mayor tamaño, hay que hacer cambios enlace
MX25U25635F (32MB)
W25Q128FWSIG (32MB)
MX25U51245G (64MB)
1.3. Ordenador con Ubuntu.
Se pueden tener Windows y Ubuntu a la vez. Con la herramienta rufus se puede crear un usb auto-instalable y cargar en live. El USB necesita al menos 4Gb. Quizás funcionen máquinas virtuales. Programas Gratuitos.
1.4. Herramientas.
1.4.1. Destornillador Y 2.0 (nintendo).
1.4.2. Soldador - Estaño - Flux/Pasta
1.4.3. Multímetro
1.4.4. Sondas con pinza (forma de "gancho") *opcional, se pueden soldar los cables
2. APERTURA DE CONSOLA2.1. Con un destornillador Y 2.0, el típico de las consolas de nintendo, quitamos los 4 tornillos de la parte posterior.
Después, abrimos con cuidado, ya que la parte trasera está sujeta con pestañas de presión. También puede saltar el botón de encendido, pero se coloca fácil.

Con la memoria y el usb en posición.
3. Programas necesarios. Esquema de conexiones. Copia de seguridad y liberación. 3.1. Programas necesarios. Sobre Ubuntu 20.04.1 limpio.
Apenas he usado Ubuntu, y me limito a copiar lo del documento, intentaré explicarlo. Hay "scripts" para agilizar el proceso. Abrimos "Terminal", que es la consola y "se parece" a ms-dos, copiamos los spoilers y damos "intro". Los siguientes pasos son sobre Ubuntu, para tener los archivos necesarios.
Instalamos GIT. Para descargar de repositorios tipo GitHub directamente.
sudo apt install git
Instalamos el software de backup git fetch (install) game-and-watch-backup. Lo descarga el automáticamente, no hay que descargarse nada.
mkdir game-and-watch-backup
cd game-and-watch-backup
git init .
git fetch https://github.com/ghidraninja/game-and-watch-backup
git merge FETCH_HEAD
Instalamos paquetes adicionales. ¿Soporte para ARM de la G&W?
sudo apt-get install gcc-arm-none-eabi binutils-arm-none-eabi python3 libftdi1
Instalamos OpenOCD. Este es el controlador del USB, por ejemplo el ST-LINK.
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
En el pdf recibe unos errores, y los corrige con esto. (Corrección 1)
sudo apt install libftdi1-2
sudo apt install libhidapi-hidraw0
Vuelve a recibir errores sobre la corrección 1 y ejecuta (corrección 2):
sudo apt --fix-broken install
Regresa a la corrección 1:
sudo apt install libftdi1-2
sudo apt install libhidapi-hidraw0
Y vuelve a instalar el controlador del USB sin errores:
sudo dpkg -i openocd-git_*_amd64.deb
sudo apt-get -y -f install
Comprobación de que está bien instalado:
/opt/openocd-git/bin/openocd --vers
Exporta el valor de la variable:
export OPENOCD="/opt/openocd-git/bin/openocd"
Lo comprueba otra vez:
$OPENOCD --vers
3.2. Esquema de conexiones. G&W y ST-LINK V2
De
Twitter Estos puntos corresponden con los del ST-LINK.

ST-Link 2: SWCLK->Sonda o soldar cable -> Game & Watch SWCLK
ST-Link 4: SWDIO->Sonda o soldar cable -> Game & Watch SWDIO
ST-Link 6: GND ->Sonda o soldar cable -> Game & Watch GND
La alimentaremos con el USB original que tenemos.
3.3. Copia de seguridad y liberación.
Comprobamos que estemos en el directorio de Game-and-watch-backup.
pwd
Estaremos en algo así: ubuser@ub-SystemOS:~/Game-and-Watch/game-and-watch-backup$
Definimos la variable de entorno:
export OPENOCD="/opt/openocd-git/bin/openocd"
Se pueden consultar los "logs-registros" de los procesos en cualquier momento, (en paralelo o en vivo), en otra terminal con el código:
cd logs/
tail -f X_openocd.log
Donde la
X es la id del proceso a consultar. Yo no lo he utilizado.
Utilizamos los siguientes códigos. Es recomendable hacerlos en orden, aunque siempre puedes ejecutar el 5 para restaurar (si tienes copia, claro).
./1_sanity_check.sh
./2_backup_flash.sh stlink
./3_backup_internal_flash.sh stlink
./4_unlock_device.sh stlink
./5_restore.sh stlink
Si tenemos un jlink, cambiarlo dónde pone stlink.
Comprobación de las conexiones:
./1_sanity_check.sh
Copia de seguridad del firmware original. No te deja sobre escribirla si ya tienes una copia correcta. Guardala en lugar seguro. Seguimos las instrucciones de la pantalla. Encender la G&W en el reloj, confirmad con intro, y parpadeará la pantalla en el proceso.
./2_backup_flash.sh stlink
Si todo sale bien, pondrá esto: Looks good! Successfully backed up the (encrypted) SPI flash to flash_backup.bin! Y dejará la copia en su carpeta.
Copia de seguridad de la flash interna. Esto punto a veces da error. Hay que seguir las indicaciones de la terminal para restaurarla. Si parpadea la pantalla o tarda más de 2 minutos, algo va mal.
./3_backup_internal_flash.sh stlink
Loaded flashloader, flashing SPI, please wait.
(If this takes more than 2 minutes something went wrong.)
(If the screen blinks rapidly, something went wrong.)
(If the screen blinks slowly, everything worked but the script didn't detect it)
Done!
Flash successfully flashed. Now do the following procedure:
- Disconnect power from the device
- Power it again
- Press and hold the power button
- Press return (while still holding the power button)!
Si falla, al volver a intentar, la G&W tiene que estar encendida (pantalla azul).
Liberación de la G&W
./4_unlock_device.sh stlink
Restauración de la G&W pero sigue liberada.
./5_restore.sh stlink
** Se puede restaurar la flash original sobre la flash cambiada de 16mb.
Y hasta aquí la consola liberada, lista para cargar retro-go, el emulador LCD o lo que cada uno quiera.
4. Flasheo con retro-GO. Programas y compiladores.Utilizaremos retro-go y el programa de flasheo. Suponiendo que lo hacemos todo seguido. Subimos de nivel, creamos la carpeta y bajamos.
Para flashear la consola:
cd ..
mkdir game-and-watch-flashloader
cd game-and-watch-flashloader
git init .
git clone https://github.com/ghidraninja/game-and-watch-flashloader
make -j4
Dónde "4" es el número de procesadores que tengamos en el pc. Y esperamos compilar sin errores.
Si no tenemos "make" lo instalamos con "sudo apt install make "Este proceso, sólo lo hacemos una vez.
Para el retro-go:
cd ..
mkdir game-and-watch-retro-go
cd game-and-watch-retro-go
git init .
git clone --recurse-submodules https://github.com/kbeckmann/game-and-watch-retro-go
Ahora, tendremos que hacernos con una rom, copia de seguridad, de los juegos que queramos y meterlas en la carpeta correspondiente, dependiendo del sistema. Recomiendo probar las rom 1 a 1, ya que algunas dan error. Ahora compilamos el archivo para la G&W.
make -j4
Y esperamos compilar sin errores (aunque sí avisos). Y procedemos a subirlo (flashear) la G&W.
make flash

Si en algún momento nos da error al compilar (cambiamos las roms) o actualizamos la lista de roms, ejecutamos
make clean
y volvemos a compilar.
** Flashea retro-go sin el firmware original (ya sea en 1mb o en los 16mb sustituidos)
4.1. Emulador LCD. Debe de ser un poco especial para ponerlo.
Cuando lo hice, no estaba liberado. Esperamos noticias.En construcción: Para poner Firmware original + Retro-go + LCD
https://www.youtube.com/watch?v=fFf6EUv1VIEhttps://maco.link/how-to-get-launcher-a ... ur-g&w.php (algunos enlaces caídos)
5. Sustitución de memoria. Escritura de memoria. Programas. Adaptadores.La verdad que no es fácil sustituir la memoria. Hay que tener cierta experiencia y habilidad.
Tendríamos que compilar según la memoria que tengamos (quizás flag LARGE>16mb), y flashear igual.
Por confiarme y hacerlo demasiado deprisa, 3 pistas fuera.

Por suerte, hay un enlace dónde vienen los
puntos alternativos:
https://github.com/Upcycle-Electronics/game-and-watch-hardware
Con la memoria de 16mb lo máximo que conseguí es esto:

Estando los puntos correctos. Volví a poner la memoria de 1mb y obtuve:

Pero al restaurar con el punto ./5, ya está de fábrica (liberada claro) y funcionando perfectamente.
He probado con otra memoria de 16mb y ya funciona bien.
6. Instalación del Stlink interno. Esquemas.Con permiso de
@neohroot 
7. Editores de código "custom". (esto quizás será mas avanzado).
8. Noticias, actualizaciones.