Ottenere Firmware originale Game & Watch

firmware

Ecco a voi una guida per capire come ottenere il firmware con il flashdumper su Game and Watch Nintendo Super Mario Bros. Inoltre, vi mostriamo come utilizzare il flashloader per integrare nuovi giochi. Grazie ai passaggi elencati di seguito capiremo come fare per salvare il firmware originale e come installare gli homebrew sul Nintendo Game & Watch. Prima di procedere cerchiamo di dare una definizione di cosa sia un firmware. Esso non è altro che un programma realizzato a partire da una serie di sequenze di istruzioni integrato su un BIOS o un ROM.

Game and Watch Super Mario Bros

Tutti dovremmo conoscere il Game & watch Super Mario Bros. Si tratta di una console portatile creata in Giappone nel 1980. Oggi è possibile giocare con una console super originale dorata contenente al suo interno il classico e amato gioco Super Mario Bros. Un’edizione limitata super speciale per riportarti indietro nel tempo. Potrai divertirti a vivere tutte le avventure dell’amato personaggio degli anni ’90 in una versione nuova. I game & watch vennero rilasciati dall’azienda Nintendo tra gli anni ’80 e gli anni ’90 e rivoluzionarono il mondo dei videogame. Furono prodotti in diverse versioni. Le principali serie di console game & watch furono le seguenti:

  • Silver (1980)
  • Gold (1981)
  • Widescreen (1981–1982)
  • Multiscreen (1982–1989): con doppio schermo e apribili in verticale
  • Tabletop (1983): perfetti per essere appoggiati al tavolo, dotati di joystick sporgente
  • Panorama (1983–1984)
  • New Widescreen (1982–1991)
  • Super Color (1984): con schermo lungo e stretto
  • Micro Vs. System (1984): perfetti per far giocare due giocatori contemporaneamente
  • Crystal Screen (1986): con schermo trasparente. Le immagini appaiono come sospese in aria

La guida per ottenere firmware su Game & Watch Super Mario Bros

Di cosa ci occuperemo all’interno di questa guida? In particolare il nostro obiettivo è quello di rendere il vostro dispositivo Game and Watch Super Mario Bros per uno sviluppo homebrew. In particolare comprenderemo come eseguire il backup e ripristinare l’originale firmware del device in questione. Prima di procedere individualizzando i principali passaggi da eseguire per ottenere un firmware su questa speciale console, vale la pena approfondire il discorso soffermandoci meglio su alcune caratteristiche e specifiche dei firmware

Firmware

Il compito del firmware è quello di consentire l’avviamento del componente facendo in modo così che esso possa comunicare con gli altri elementi dell’hardware. Tutto ciò avviene solo dopo che sono stati implementati alcuni protocolli di comunicazione. In parole povere questo elemento non è altro che il punto di contatto tra le parti logiche e fisiche di un device. A tal proposito, aggiornarlo può essere un ottimo modo per consentire il buon funzionamento di qualsiasi dispositivo. In base a quanto detto potrebbe essere molto funzionale svolgere un’analisi del firmware. Prima di tutto però bisogna ottenerlo. Per far ciò è possibile seguire in linee generali è possibile mettere in pratica alcune di queste modalità:

  • esso si può trovare nel materiale allegato al dispositivo
  • può eseguire il download direttamente dal sito dei produttori
  • può essere trovato mediante un motore di ricerca qualsiasi
  • si può estratte dai pacchetti intercettati in fase di aggiornamento;
  • si può ottenere eseguendo un memory dump 

Dopo questa breve digressione siamo pronti ad affrontare l’argomento. Come ottenere firmware con il flashdumper su Game and Watch Nintendo Super Mario Bros.

Guida

Di cosa abbiamo bisogno?

  • L’unità game & watch
Clicca sull’immagine e acquista su Amazon
  • Cacciavite a tre ali
Clicca sull’immagine e acquista su Amazon
  • una scheda di programmazione STM32 Nucleo

Questa scheda è costituita da due sezioni:

  1. programmatore ST-Link, per caricare il firmware sul microcontrollore della scheda o su altri microcontrollori esterni e permette il debugging
  2. una scheda di sviluppo dove è situato il microcontrollore

Essendo le due sezioni separabili si può staccare il programmatore ST-Link dalla scheda di sviluppo. Ma in generale si consiglia di non fare ciò poiché altrimenti non sarà possibile connettere la scheda al pc.

Clicca sull’immagine e acquista su Amazon
  • un Debugger Downloader emulatore JLINK

Il Debugger è uno strumento che ti permette di testare ed eseguire il debug dei programmi. Una macchina host sviluppa un software incorporato. Dopo questo processo di sviluppo, converte in un codice eseguibile. Grazie a questo strumento, in fase di programmazione siamo in grado di comprendere quali siano eventuali bug o errori.

Clicca sull’immagine e acquista su Amazon
  • Mini Grabber test clips
Clicca sull’immagine e acquista su Amazon
  • Un computer con Ubuntu 20.04

Se prima Ubuntu era disponibile solo per Linus, oggi è possibile installarlo anche su altri pc. Tutto ciò che ci serve è:

  • Un processore da almeno 2 GHz (meglio se multi-core)
  • Almeno 2 GB di memoria RAM
  • Almeno 25 GB di spazio libero su disco
  • Connessione a Internet

Per l’installazione in se per se tutto ciò che ci servirà è una chiavetta USB da 8 GB. Per poter scaricare questo sistema operativo dobbiamo solo recarci sul suo sito ufficiale:

Dopo aver eseguito il download del sistema operativo, scarichiamo il programma Rufus disponibile per Windows. Avviamo Rufus, selezioniamo la chiavetta USB in Dispositivo/Unità, e clicchiamo su SELEZIONA. Successivamente premiamo sul pulsante AVVIA. Per quanto riguarda invece l’installazione di Ubuntu, basta collegare il computer al modem con cavo Ethernet. Poi inseriamo la chiavetta USB appena creata in una porta USB del pc. Avviamo il computer e premiamo ripetutamente F8. Adesso si aprirà una schermata di installazione e clicchiamo su INSTALLA UBUNTU. Terminata l’installazione riavviamo il sistema e rimuoviamo la chiavetta USB, così riusciremo ad accedere a Ubuntu e saremo pronti per utilizzarlo.

Procedura per ottenere firmware originale

Prima di tutto bisogna sottolineare che per eseguire il nostro progetto è necessario smontare l’unità di gioco. Dopo aver fatto ciò dobbiamo connettere il Debugger al gioco. Per farlo potremo servirci delle test clips che ci consentiranno di effettuare una saldatura dei cavi su una pin header, un piccolo connettore di circa 2,54 mm:

Abbiamo connesso il nostro game & watch al debugger e lo abbiamo messo in carica mediante il cavo USB, avendo disconnesso la batteria come si può notare dalle immagini.

A questo punto procediamo effettuando il backup e il ripristino della versione originale del firmware della nostra unità, sbloccando il processore. Di seguito i passaggi da eseguire:

Configurazione del Ubuntu

sudo apt-get install gcc-arm-none-eabi binutils-arm-none-eabi openocd python3

Si ricorda che la versione di opencd inclusa in Ubuntu non contiene le funzionalità necessarie per questi script. Quindi dovremo servirci di una build dal ramo master. Per questo motivo sarebbe consigliabile installare una versione più recente installando un pacchetto precompilato. Per fare ciò prosegui così:

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

Adesso potrai eseguire opencd usando:

/opt/openocd-git/bin/openocd.

Questa versione risiederà nella directory/opt

Usando questa versione potrai esportare la variabile opencd:

export OPENOCD="/opt/openocd-git/bin/openocd"
./1_sanity_check.sh
./2_....

oppure così:

OPENOCD="/opt/openocd-git/bin/openocd" ; ./1_sanity_check.sh
OPENOCD="/opt/openocd-git/bin/openocd" ; ./2_....

Configurazione per MacOs

Per eseguire la configurazione di Ubuntu sul Mac ci serviamo di homebrew, un sistema di gestione pacchetti software open source e gratuito.

brew install --HEAD openocd
brew tap ArmMbed/homebrew-formulae
brew install arm-none-eabi-gcc

Proseguiamo per ottenere firmware originale

Gli script sono suddivisi in 5 parti:

1_sanity_check.sh

Con questo eseguiamo il controllo di integrità e ci assicuriamo che tutti gli strumenti richiesti siano disponibili

2_backup_flash.sh

 Così eseguiamo il backup dei contenuti del flash SPI. Questo comando non modifica il contenuto del dispositivo

3_backup_internal_flash.sh

Con questo eseguiamo il backup della flash interna. A tale scopo vengono modificati i contenuti del flash SPI. Il dispositivo smetterà di funzionare finché non verrà riattivato

4_unlock_device.sh 

Questo comando invece disabiliterà la protezione di lettura attiva. Questo cancellerà la flash interna dell’STM32.

5_restore.sh

Mentre con quest’ultimo comando si ripristinerà il firmware originale.

Tutto ciò che bisogna fare è eseguire tutti questi script dalla directory ritirata. In caso di errore gli script possono essere eseguiti più volte in caso di errore. Una volta eseguito il backup si consiglia di custodirlo così da potersene servire in seguito. A questo punto cloniamo il backup eseguito su un cd avendo connesso l’unità game and watch al debugger e iniziamo ad analizzare i vari script (da 1 a 5).

Se l’operazione richiede più di due minuti significherà che qualcosa è andato storto, in caso contrario procediamo così:

  • Rimuoviamo il cavo usb dal dispositivo
  • Inseriamolo nuovamente
  • Teniamo premuto il pulsante di accensione
  • Premiamo il pulsante RETURN tenendo sempre premuto il pulsante di accensione

In questo modo, se tutto è andato per il verso giusto avremo eseguito il backup del firmware originale anche sull’unità game and watch. Ciò significa che saremo in grado di sbloccare la lettura dello script di protezione del processore. Così si cancellerà la memoria interna del flash, ma avendo eseguito il backup non dovremmo avere alcun tipo di problema. Adesso siamo pronti per ripristinare la versione originale del firmware usando i 5 script indicati prima. Ecco che dopo pochi secondi il nostro game and watch sarà pronto per l’uso, il tutto con un processore sbloccato! Ora saremo in grado di ritornare al firmware originale ogni volta che vorremo.

Ti potrebbe interessare anche: Nintendo Sviluppa un Sistema Olografico per Videogiochi