Hacking Game & Watch

Si vous êtes comme moi né dans les années 80, vous avez certainement connu les fameuses « Game & Watch » de Nintendo, ces petits jeux portables avec écran à cristaux liquides. Souvent simplistes et énervants, ils sont devenus à travers le temps très rares et une source de nostalgie de notre jeunesse.

Nintendo, devenus champion dans le domaine de réchauffer les restes pour notre plus grand bonheur, a ressorti en 2020 une Game&Watch Super Mario Bros, qui fut ensuite suivie d’une Game&Watch Zelda. La Game&Watch Mario est livrée relativement pauvrement avec Super Mario Bros et Super Mario Bros 2 : The Lost Levels ainsi qu’un jeu pur Game&Watch. La version Zelda est pour sa part un peu mieux pourvue avec Zelda et Zelda 2 sur NES ainsi que Links Awakening sur GameBoy (dans sa version d’origine non-DX, ce qui est un choix discutable).

Il ne fallu que peu de temps à certains hackers pour réussir à déplomber la machine et y injecter du code externe pour permettre de remplacer totalement le contenu de la flashrom et jouer à d’autres jeux que ceux prévus initialement. Le custom firmware injecté contient un émulateur (attention, pas celui employé par Nintendo) qui permet de faire tourner la plupart des consoles 8-Bit de l’époque, le STM32 embarqué dans ces Game&Watch ayant la puissance suffisante pour le faire.

Cet article, basé sur un guide existant plutôt sommaire, va détailler proprement comment réaliser chacune des étapes pour vous permettre de réaliser la même opération. Il s’adresse à un public averti qui maitrise les principes de base de Linux et qui est habitué à l’utilisation d’un Raspberry Pi mais qui est assez flegmard pour juste vouloir faire des copier/coller de commandes Linux pour arriver au résultat attendu 🙂

Prérequis:

  1. Une Game&Watch Super Mario Bros ou The Legend of Zelda
  2. Un Raspberry Pi avec ports GPIO
  3. Trois câbles Dupont (M-F)

Etape 1 : Préparation initiale du Raspberry Pi

  1. Téléchargez et installez sur votre SD la dernière version de Raspbian Lite.
  2. Configurez votre connéxion réseau (LAN ou WiFi)
  3. Activez le SSH (si vous souhaitez faire la suite des opérations depuis une autre machine)

Etape 2 : Script de préparation « All-in-one »

Toujours dans l’objectif d’atteindre l’objectif fixé en un minimum d’effort (qu’on se le dise, la flegmardise stimule la créativité), un utilisateur répondant au nickname de Kalle000 a créé un script va automatiser une grande partie des tâches du guide de base, en commençant par mettre votre système à jour puis en installant toutes les dépendances nécessaires au flash de votre Game&Watch.

On le télécharge :

wget https://raw.githubusercontent.com/Kalle000/game-and-watch/main/gw-rpi-install-script.sh

On le rend exécutable :

chmod a+x gw-rpi-install-script.sh

Et on se lance :

./gw-rpi-install-script.sh

La fin d’installation doit normalement se finir par l’erreur suivante :

Ce script n’est actuellement pas en mesure de supporter la dernière version des outils qui permettent de flasher autant la version Mario que la version Zelda.

A ce stade, nous avons donc presque tout le nécessaire pour aller de l’avant.

Etape 3 : Finalisation du setup

Nous allons customiser un tantinet notre setup afin d’ajouter des fonctionnalités manquantes à l’émulateur Retro-Go, l’émulateur employé dans ce hack. Il est en effet possible de lui faire afficher des vignettes de jeu, ce qui rend l’expérience utilisateur bien plus agréable et propre que d’afficher uniquement des listes des ROMs.

Pour ce faire:

sudo apt-get install libopenjp2-7
sudo apt-get install python3-pippython -m pip install -r requirements.txt
cd opt
cd game-and-watch-retro-go
git remote add olderzeus https://github.com/olderzeus/game-and-watch-retro-go.git
git fetch olderzeus
git checkout NewUI
git submodule update
make clean
git pull
chmod a+x scripts/*.sh

Etape 4 : Transfert des ROMs

Ne vous reste ainsi plus qu’à transférer vos ROMs dans le répertoire de la console émulée correspondante dans le répertoire opt/game-and-watch-retro-go/roms dans son format natif (non zippé, soit .nes pour la NES, .gb pour GameBoy, etc.).

Pour ma part, afin de le faire simplement via FTP, j’ai installé le serveur ProFTPd :

sudo apt install proftpd

Puis transféré les ROMs (vous pouvez également ajouter des PNG à cet instant pour enrichir l’interface finale) :

Pour ma part, j’ai sélectionné les jeux suivants qui passent dans les FlashROM de base (1MB pour Mario et 4MB pour Zelda) :

  • Game&Watch Super Mario Bros
    • GameBoy
      • Super Mario Land (World)
      • Super Mario Land 2 – 6 Golden Coins (USA, Europe)
    • NES
      • Mario Bros. Classic (Europe)
      • Super Mario Bros. (World)
      • Super Mario Bros. 2 (Europe)
      • Super Mario Bros. 3 (Europe)

  • Game&Watch Legend of Zelda
    • GameBoy
      • Legend of Zelda, The – Link’s Awakening (France)
    • NES
      • Legend of Zelda, The (Trad FR)
      • Zelda II – The Adventure of Link (Trad FR)

Etape 5 : Préparation matérielle de la Game&Watch

La Game&Watch dispose bien d’un port USB-C mais ce dernier ne sert qu’à recharger la batterie. Par défaut, aucune data ne transite malheureusement par son biais. Par chance, Nintendo a laissé sur le PCB des ports de debug qui vont nous permettre de réaliser certaines tâches pour mener à bien notre mission.

Commencez donc par ouvrir votre Game&Watch en dévissant les 4 vis triangulaires à l’arrière. Si vous n’avez pas de tournevis adapté, un petit torx peut faire l’affaire. Je vous recommande de ne pas forcer car ces petites vis s’abiment vite et elles deviendront rapidement difficile à utiliser dans le futur. Attention à ne pas perdre le bouton Power qui se ballade facilement.

Une fois ouvert, il vous faudra déconnecter la batterie en soulevant le connecteur avec précaution car nous alimenterons la Game&Watch par l’USB dans les étapes à venir.

Etape 6 : Connection du Raspberry Pi à la Game&Watch

L’opération physique suivante est très importante car le succès de l’opération en dépend. En effet, une mauvaise connection entre les deux équipements peut entrainer un flash présumément réussi de votre Game&Watch mais avec des donnes corrompues, une interruption de la procédure de flash ou même le refus total de flasher l’appareil.

Pour les besoins de ce guide, je vais détailler la façon de procéder pour la Game&Watch Mario mais la version Zelda est très similaire. Hormis un pin-out légèrement différent qui sera précisé, les opérations sont identiques.

Raspberry Pi GPIO

Commencez par connecter un câble Dupont à chaque Pin suivant de votre Raspberry Pi :

  • GPIO24 (Pin 18)
  • GPIO25 (Pin 22)
  • GROUND (Pin 39)

Et connectez les de la sorte sur votre Game&Watch :

  • GPIO24 vers SWDIO
  • GPIO25 vers SWCLK
  • GND vers GND

Pour Mario :

Pour Zelda :

Pour ressembler au final à quelque chose du genre (ghetto style, si vous avez des connecteurs type pinces croco, c’est beaucoup mieux) :

Etape 6 : Vérification du setup

Un script va nous permettre (soi-disant) de vérifier que tout fonctionne bien :

cd /home/pi/opt/game-and-watch-backup

./1_sanity_check.sh rpi mario

Ce script devrait vous retourner ceci :

Etape 7 : Backup de la FlashROM externe

Passé cette étape, nous allons ensuite faire une copie de votre FlashROM afin de pouvoir la restorer en cas de besoin.

./2_backup_flash.sh

Etape 8 : Backup de la FlashROM interne

Ensuite, une fois votre FlashROM d’origine sauvegardée, le script suivant va backuper la FlashROM interne de votre Game&Watch.

./3_backup_internal_flash.sh

Gardez bien les 3 fichiers générés à cette étape à la précédente de côté afin de pouvoir les restorer en cas de problèmes.

Etape 9 : Unlock de la Game&Watch

L’étape finale avant de flasher à proprement parlé votre Game&Watch sera de débloquer le STM32 de votre Game&Watch. Ce dernier va modifier l’état « pas de lecture externe » de votre STM32 pour permettre d’exécuter le payload fraichement injecté.

./4_unlock_device.sh

Si tout s’est bien déroulé, l’écran de votre Game&Watch devrait être d’un bleu resplendissant.

Etape 10 : Compilation de Retro-Go et flash

Nous allons désormais procéder à l’étape finale qui sera de compiler et flasher l’émulateur Retro-Go

cd ..

cd cd game-and-watch-retro-go/

make GCC_PATH=/home/pi/opt/xpack-arm-none-eabi-gcc-10.2.1-1.1/bin/ flash_all

Si vous disposez d’une FlashROM moddée (de 16, 32 ou 64MB), utilisez les commandes suivantes :

make GCC_PATH=/home/pi/opt/xpack-arm-none-eabi-gcc-10.2.1-1.1/bin/ COVERFLOW=1 COMPRESS=lzma EXTFLASH_SIZE_MB=16 flash_all

make GCC_PATH=/home/pi/opt/xpack-arm-none-eabi-gcc-10.2.1-1.1/bin/ COVERFLOW=1 COMPRESS=lzma EXTFLASH_SIZE_MB=32 flash_all

make GCC_PATH=/home/pi/opt/xpack-arm-none-eabi-gcc-10.2.1-1.1/bin/ COVERFLOW=1 COMPRESS=lzma EXTFLASH_SIZE_MB=64 flash_all

En cas de problème

En cas de problème de flash, sachez que vous pourrez toujours revenir en arrière en invoquant le script de restore de votre FlashROM.

./5_restore.sh

Si pour une raison ou une autre les scripts vous retournent des erreurs lors du flashage, c’est que la connéxion entre votre Raspberry Pi et Game&Watch n’est pas bonne. Vérifiez là et refaites des tentatives. J’ai du m’y reprendre à plusieurs reprises avant d’arriver un flash parfait.

Conclusion

Si tout a fonctionné comme il se doit, vous devriez être recompensé par le message suivant :

Et surtout :

RetroPie x86

Cela fait un moment que je n’ai pas écrit sur ce blog et je me suis dit qu’un dimanche pluvieux comme aujorud’hui serait un jour idéal pour ça.

J’ai un NUC peu puissant qui traine dans un coin acheté à bas pris sur Ricardo.ch que j’utilise pour faire des tests et me suis dit que j’allais une fois essayer d’installer RetroPie sur un processeur x86 pour comparer la qualité de l’émulation et la vitesse par rapport à un Raspberry.

En cherchant, je suis tombé sur un article très bien fait qui récapitule toutes les étapes pour le faire de manière simple et rapide. Il comprend cependant des typo dans les commandes à passer qui sont pour moi génantes si quelqu’un d’inexpérimenté veut le refaire. Le bug de cet article est donc de reprendre ce qui a été, de corriger ces quelques typos et l’expliquer en français.

Edit : après avoir rédigé cet article, je me suis rendu compte que quelqu’un avait encore plus facilité le processus, rendant caduque le reste de l’article, grâce à ce script que je vous recommande fortemment.

La première étape est donc de télécharger un ISO de Ubuntu 18.04 LTS version serveur et d’imager une clé USB avec (par exemple avec Balena Etcher). Pourquoi la version serveur ? Simplement parce qu’elle est dénuée d’interface graphique que nous n’utiliserons pas, ce qui la rend plus light et ne consommera pas de l’espace de stockage inutilement.

Pour l’installation d’Ubuntu, je vous recommande de laisser toutes les options par défaut : utiliser le disque complet, pas de LVM, pas d’encrpytion, DHCP pour l’Ethernet et cliquer sur installer.

Ensuite, pour la création d’un user de base, entrez les mêmes identifiants que vous utiliseriez sur un Pi, pas besoin de complexifier quelque chose qui ne le nécessite pas (après, c’est vous qui voyez…).

  • User: Retro Pie
  • Server Name: retropie
  • Username: Pi
  • Password: raspberry

J’ai également configuré l’OS pour activer SSH afin de pouvoir facilement effectuer les opérations suivantes depuis ma machine principes.

Après quelques minutes se termine l’installation et vous pouvez retirer la clé USB.

Il est recommandé d’utiliser le noyeau HWE pour RetroPie car les kernels plus récents disposent de fonctionnalités que RetroPie n’utilise pas. Rappelez-vous : light is right. Pour le faire, commencez avec ceci :

sudo apt update
sudo apt upgrade
sudo apt install --install-recommends linux-generic-hwe-18.04

Puis redémarrez votre NUC. Une fois redémarré, on va entrer dans le vif du sujet avec RetroPie. Connectez-vous donc à votre NUC en SSH.

On va d’abord faire en sorte que l’utilisateur « pi » soit en mesure de lancer des commandes en tant que root (sudo) sans pasword (ça ira beaucoup plus vite pour la suite):

sudo sed -i -e '$a\pi ALL=(ALL) NOPASSWD:ALL' /etc/sudoers

Rentrez le password configuré et nous serons bons, vous n’aurez plus à rentrer de manière systématique ce password.

Ensuite, nous allons ajouter le repository universe avec toutes les dépendances nécessaires à RetroPie :

sudo apt-add-repository universe
sudo apt update -y
sudo apt upgrade -y 
sudo apt install xorg openbox pulseaudio alsa-utils menu libglib2.0-bin python-xdg at-spi2-core dbus-x11 git dialog unzip xmlstarlet --no-install-recommends -y

On va ensuite créer un script d’autodémarrage OpenBox afin de démarrer le terminal puis démarrer EmulationStation :

mkdir -p ~/.config/openbox
echo 'gnome-terminal --full-screen --hide-menubar -- emulationstation' >> ~/.config/openbox/autostart

Puis un fichier .xsession adapté

echo 'exec openbox-session' >> ~/.xsession

On fait en suite que X11 démarre au boot :

echo 'if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then' >> ~/.bash_profile
sed -i '$ a\startx -- -nocursor >/dev/null 2>&1' ~/.bash_profile 
sed -i '$ a\fi' ~/.bash_profile

On souhaite ensuite que l’utilisateur pi se logue automatiquement et que EmulationStation devienne l’écran principale affiché :

sudo mkdir /etc/systemd/system/getty@tty1.service.d
sudo sh -c 'echo [Service] >> /etc/systemd/system/getty@tty1.service.d/override.conf' 
sudo sed -i '$ a\ExecStart=' /etc/systemd/system/getty@tty1.service.d/override.conf
sudo sed -i '$ a\ExecStart=-/sbin/agetty --skip-login --noissue --autologin pi %I $TERM' /etc/systemd/system/getty@tty1.service.d/override.conf
sudo sed -i '$ a\Type=idle' /etc/systemd/system/getty@tty1.service.d/override.conf

Après ça, nous sommes désormais prêts pour démarrer le téléchargement de RetroPie depuis le repository Git et lancer le script d’isntallation :

git clone --depth=1 https://github.com/RetroPie/RetroPie-Setup.git
sudo RetroPie-Setup/retropie_setup.sh

Ceci va lancer l’installation de RetroPie. Acceptez l’EULA et choisissez l’installation « Basic ». Selectionnez « Yes » pour installer tous les packages de Core et Main. C’est désormais le moment où vous pouvez aller faire autre chose, le processus de compilation va prendre du temps.

Une fois la compilation terminée, vous pouvez redémmarer votre NUC depuis le menu.

L’article original contient ensuite des instructions de customisation pour l’utilisation d’une manette Xbox One. N’en ayant pas une, je passerai au dessus de ces explications. Si cela vous intéresse, je vous recommande de vous référer à l’article original.

L’étape suivante sera de rendre les choses un peu plus jolies et cacher toutes ces vilains logs au boot qui démontrent trop qu’il s’agit d’un bête Linux. On va donc cacher tout ça avec Plymouth avec le theme par défaut de Pacman :

sudo apt update
sudo apt install plymouth plymouth-themes plymouth-x11 -y
git clone --depth=1 https://github.com/HerbFargus/plymouth-themes.git tempthemes
sudo cp -r ~/tempthemes/. /usr/share/plymouth/themes/
rm -rf tempthemes
sudo update-alternatives --install /usr/share/plymouth/themes/default.plymouth default.plymouth /usr/share/plymouth/themes/retropie-pacman/retropie-pacman.plymouth 10
sudo update-alternatives --set default.plymouth /usr/share/plymouth/themes/retropie-pacman/retropie-pacman.plymouth
sudo update-initramfs -u
sudo cp /etc/default/grub /etc/default/grub.backup
sudo sed -i -e 's/GRUB_TIMEOUT=10/GRUB_TIMEOUT=2/g' /etc/default/grub
sudo sed -i -e 's/GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX="quiet splash"/g' /etc/default/grub
sudo update-grub

Puis on cache les infos de last login :

sudo sed -i -e 's/session optional pam_lastlog.so/#session  optional pam_lastlog.so/g' /etc/pam.d/login
sudo sed -i -e 's/session optional pam_motd.so motd=\/run\/motd.dynamic/#session optional pam_motd.so motd=\/run\/motd.dynamic/g' /etc/pam.d/login
sudo sed -i -e 's/session optional pam_motd.so noupdate/#session optional pam_motd.so noupdate/g' /etc/pam.d/login
sudo sed -i -e 's/session optional pam_mail.so standard/#session optional pam_mail.so standard/g' /etc/pam.d/login

On cache le terminal :

sed -i '1 i\dbus-launch gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/ use-theme-colors false' ~/.bash_profile 
sed -i '1 i\dbus-launch gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/ use-theme-transparency false' ~/.bash_profile 
sed -i '1 i\dbus-launch gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/ default-show-menubar false' ~/.bash_profile 
sed -i "1 i\dbus-launch gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/ foreground-color '#FFFFFF'" ~/.bash_profile 
sed -i "1 i\dbus-launch gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/ background-color '#000000'" ~/.bash_profile 
sed -i "1 i\dbus-launch gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/ cursor-blink-mode 'off'" ~/.bash_profile 
sed -i "1 i\dbus-launch gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/ scrollbar-policy 'never'" ~/.bash_profile 
sed -i '1 i\dbus-launch gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/ audible-bell false' ~/.bash_profile 
cp /etc/xdg/openbox/rc.xml ~/.config/openbox/rc.xml 
cp ~/.config/openbox/rc.xml ~/.config/openbox/rc.xmlbackup 
sed -i '//a ' ~/.config/openbox/rc.xml 
sed -i '//a true ' ~/.config/openbox/rc.xml 
sed -i '//a no ' ~/.config/openbox/rc.xml 
sed -i '//a below ' ~/.config/openbox/rc.xml 
sed -i '//a no ' ~/.config/openbox/rc.xml 
sed -i '//a yes ' ~/.config/openbox/rc.xml 
sed -i '//a ' ~/.config/openbox/rc.xml

Vous comprenez maintenant pourquoi il est recommandé d’utiliser SSH ? 🙂

Et pour finir, on va retirer cloud-init, qui ne nous sert à rien :

sudo apt purge cloud-init -y
sudo rm -rf /etc/cloud/
sudo rm -rf /var/lib/cloud/

Voilà, vous devriez désormais être opérationnels ! Il se peut qu’il faille tweaker un peu certains paramètres graphiques pour obtenir de meilleures performances. Il s’avère que jouer en 4k va rendre l’expérience très mauvaise et il vous est suggéré de rester en 1080p.

Amusez-vous bien !

Update firmware TF330

J’ai acquis il y a quelque temps une carte TerribleFire TF330 rev3 pour ma CD32, la rendant « ultime » à mes yeux en tant que machine WHDLoad Amiga à base de hardware original.

Cette carte, munie d’un 68030 à 50MHz, sortait environ 7.7 MIPS dans SysInfo :

Sorti peu après avoir reçu ma carte, un firmware « burst3 » a vu le jour sur le forum Exxos.

Ni une, ni deux, cette quête des 2 MIPS additionnels qui pouvaient être atteints m’a gagnée. Avec un peu de temps libre ce dimanche, j’ai décidé de me lancer dans ce petit projet de mise à jour du firmware de cette TF330.

La première étape fut de souder les connecteurs JTAG, non soudés sur la carte d’origine.

On y va, on soude.

Puis on connecte la carte à un Raspberry Pi, en l’alimentant en 3.3V afin de ne pas nécessiter d’avoir la carte alimentée par l’Amiga.

Pour ceux qui s’y intéressent, le pinout est disponible ici.

Puis on setup le Pi avec xc3sprog et on flashe.

A noter que sysfsgpio a été renommé après la rédaction de la documentation par sysfsgpio_creator, il m’a fallu un peu de temps pour le découvrir.

Une fois flashée, on réinstalle la carte, et on teste :

Et voilà, +2 MIPS !

Encore une belle réussite qui ne sert strictement à rien 🙂

Le Nürb, le nirvana des pilotes

J’ai eu dernièrement l’occasion de partager un weekend avec un ami qui a voulu me faire découvrir le mythique circuit du Nürburgring, ce circuit mythique qui défraie la chronique depuis 1927, autant par sa longueur qui n’a pas son pareil (plus de 20KM alors que la plupart des ciruits sur lesquels j’ai roulé en font 3) que par la dangerosité de son tracé. En effet, sur 20KM, et avec ses 77 virages, les conditions de la piste changent… beaucoup.

Auparavant, j’avais déjà expérimenté plusieurs circuits :

  • Le Mas du Clos en 2010
  • Anneau du Rhin
  • Paul Ricard (aka Le Castellet) en 2013
  • Dijon-Prenois
  • Lignières
  • Grand Sambuc

Je ne suis certainement pas le plus téméraire des pilotes et après quelques péripéties avec ma première Lotus Elise, je dois avouer que je conduis sur circuit prudemment, quitte à rouler plus lentement que les autres. Je préfère avoir du plaisir que de subir la peur durant toute une journée.

L’expérience Nürburging balaie en instant tout ce que vous auriez pu faire comme circuit auparavant : il y a tout sur ce circuit ! Vous aimez conduire très vite sur circuit, c’est possible. Vous aimez les virages ? Il y en a 77. Vous aimez rouler en forêt ? On qualifie cet enfer de « vert » pour cette raison. Vous aimez rouler à tout vitesse sur route ouverte ? C’est comme si vous y êtiez, à partager la piste avec motos, parfois camionettes, bus, etc.

J’ai eu la chance durant cette journée d’être guidé par un instructeur de qualité qui faisait bien attention à chaque tour de nous présenter les trajectoires idéales et les « pièges » que réserve le circuit, car il est difficile, exigeant et ne laisse aucune place à la déconcentration. En fin de journée, j’ai pu rouler seul derrière l’instructeur, n’étant plus retardé par des véhicules moins puissantes (une ancienne Porsche nous ralentissait un peu dans le groupe mais cela n’a pas entaché le plaisir que j’ai pu avoir).

J’étais très anxieux et à la fois emballé par l’idée d’aller sur le circuit le plus dangereux du monde, qui a vu tellement de pilotes mourir sur son bitume et dont les vidéos YouTube retracent régulièrement les incidents qui s’y déroulent. D’ailleurs, rien que sur les 2 jours où nous y étions, la piste fut fermée 2 fois pour des accidents.

L’ambiance dans le complexe du Nürburgring est également particulière, tout y est fait pour que les personnes qui s’y balladent soient bercées par le sport automobile, que ce soit dans l’hôtel dont les chambres donnent sur le rond point où le soir des petits rigolos viennent y drifter tels des pélerins qui feraient leur prière, que par les restaurants et boutiques qui sont ouverts sans discontinuer.

Si vous aimez la piste, je ne peux donc que vous recommander une journée de ce type. La formule Sportfahrertraining XL est vraiment chouette pour avoir du plaisir sans pour autant se mettre en danger.

Quelques vidéos :

BeBox, Chapitre 1

A l’adolescence, et par dépit de la lente agonie de l’Amiga à cette période, j’ai commencé à suivre ce qui se faisait en termes de systèmes d’exploitations « alternatifs » au delà de Windows (95 à l’époque). Windows était certes déjà partout, mais il lui manquait ce petit truc de nerd qui me plaisait dans AmigaOS.

J’ai passé beaucoup de temps à tridouiller sur Linux (Debian, RedHat, Slackware, etc.) mais n’ai jamais accroché avec cet OS pour une utilisation client. Encore aujourd’hui, je n’utilise Linux que comme OS serveur ou comme OS embedded pour des besoins particuliers (retrogaming, MagicMirror, etc.).

A l’époque de Windows95 donc, je suis tombé sur une curiosité qui a retenu toute mon attention : BeOS.

BeOS était un système d’exploitation créé par la société Be Inc. Cette société, dirigé par un ex collaborateur de Apple France, avait comme ambition d’offrir au grand public un système d’exploitation rapide, intuitif et orientié multimédia concurrent à ce que faisait Microsoft.. Le pari était grand, ma curiosié aussi. Malheureusement, Microsoft fut bien plus fort que Be Inc. et menaça les OEM de ne plus leur fournir de licences Windows si ils fournissaient leurs machines avec BeOS en dual-boot. David contre Golliath, sauf que Golliath gagna. Voilà pour la petite histoire résumée de Be Inc.

Be Inc. ont donc sorti des machines, basées sur du PowerPC, les BeBox. Ces machines avaient la particularité d’être les premières machines bi-CPU disponibles pour le grand public. Rapidement, la puissance des BeBox vendues par Be Inc. fut un frein (d’abord une version 2x66MHz, puis une version 2x133MHz) à l’évolution. Après avoir assuré une compatibilité transitoire avec certain Mac PowerPC, le choix stratégique de porter BeOS sur x86 fut nécessaire pour tenter de survivre à la vague de fond qui faisait déjà rage à l’époque. Ainsi, la plateforme x86 eu droit à BeOS R4.0, R4.5 et R5. BeOS R5 fonctionnait nativement sur Pentium II et Pentium III et supportait certains composants du marché, principalement les cartes graphiques Matrox et 3DFX. A charge de développeurs indépendants de développer des drivers annexes.

BeOS avait ceci ce particulier : il était rapide, très rapide, bien plus rapide que Windows. Au boot déjà, la machine arrivait sur le Tracker (nom donné au bureau par Be) en moins d’une minute quand Windows nécessitait plusieurs minutes pour le même résultat sur la même configuration. Par ailleurs, son côté « light » rendait l’interface simple et intuitive. Mais le plus important était l’architecture de son noyau : il était ce qu’on appelle « en mode squelette ». Le noyau principal démarrait puis lancait tour à tour ses différents « Kits » qui servaient d’interfaces aux applications. Ainsi, BeOS disposait de différents kits bien différenciés, facile à identifier pour les développeurs : Application Kit, Storage Kit, Network Kit, Mail Kit, Media Kit, MIDI Kit, Game Kit, etc. Chacun de ces kits, contenait les API et interfaces nécessaires pour faire tourner les applicatifs et permettre aux développeurs de les exploiter.

Je vous encourage à regarder cette vidéo de présentation pour vous imprégner de l’ambiance très « an 2000 » :

Fan de la marque, j’ai donc toujours voulu posséder une BeBox, qu’importe sa performance, car cette machine représente pour moi une période de l’informatique et d’utopie unique dans l’histoire de ce qui est aujourd’hui l’outil le plus important que nous utilisons au quotidien.

Avec ses deux barres de LEDs sur la partie frontale du boitier qui servaient tour à tour aux tests mémoires lors de l’allumage puis à la charge des deux CPU, cette machine me faisait rêver.

Ainsi, après 2 ans de recherches régulières, j’ai finalement trouvé sur eBay une annonce pour une version de développement d’une BeBox, celle à 2x66MHz, aux USA, pour un montant tout à fait raisonnable. La machine était dans un état « OK » (sans être incroyable en effet, avec quelques rayures et les fameux bouts de plastocs sur le haut du boitier qui étaient pliés/cassés et un cache 5.25″ manquant). Voici en vidéo le premier démarrage de la machine lors de la livraison à mon bureau.

Niveau configuration, elle fut livrée avec 2 disques SCSI, 64MB de RAM, un lecteur disquette, un lecteur CD ainsi que pas mal de documentation et CDs originaux. Les disques SCSI étant très bruyants, je me suis empressé de les remplacer par un Aztech Monster et une carte Compact Flash de 32GB, beaucoup plus pratique pour en faire des backups. Ayant encore quelques barrettes de RAM qui trainaient dans un coin, je l’ai upgradée à 192MB. Ca ne sert strictement à rien si ce n’est ralentir la séquence de boot (le memtest dure des plombes) mais elles sont mieux là qu’au fond d’un tiroir.

Voilà pour ma BeBox.

Rapidement limité par les performances de la machine et l’ayant plus par intérêt historique, je ne pouvais cependant en rester là. C’est ainsi que me vaint une idée…

Alcoolisé, j’achète un Mist.

Durant la génialissime 4ème édition de la OufParty qui se tient à Martigny chaque année au début du mois de Juin et après avoir fait de magnifique rencontres puis longuement discuté avec des personnes intéressées par le projet Vampire, j’ai commis l’irréparable. L’esprit embrumé par le Fendant chaud, j’ai acheté un Mist.

Rentré à bon port, je teste le bestiaux, installe un OS 3.9 dessus et partitionne en PFS3ds une partition de 13GB.

Rien à dire, ça fonctionne plutôt pas mal ! Peu de bugs, mais clairement loin loin derrière en termes de performances par rapport à une Vampire.

Je dirais globalement que ce produit est sympa pour WHDLoad si vous n’avez pas d’Amiga ou ne souhaitez pas investir beaucoup d’argent dans la remise à neuf d’une machine (qui au final coûte plus cher qu’un Mist entre cartes ACA12xx, recapping, adaptateur IDE, Gotek, ROMs, Indivision AGA, etc.).

Edit : à nouveau sobre, je prends conscience de mon erreur et vend cette machine.

Le SpeedRun qui ne sert à rien

Mais que j’ai fait car j’adore définitivement ce jeu. Et que je l’ai fini 100 fois. Et que je l’adore (je l’ai déjà dit).

En voulant refaire un essai sur mon iPad, j’ai remarqué que le port iOS n’est plus compatible depuis iOS8. Qu’à cela ne tienne, je vends sur le champs cette charognerie 😉

Amiga 500+ « ROT »

Il y a quelques mois a démarré un nouveau projet incroyable sur A1k.org, celui de recréer à l’identique le PCB d’un Amiga 500+ et le vendre sous forme de kit à ceux qui le voudraient. J’ai immédiatement sauté sur cette idée, appréciant le fait d’avoir un Amiga 500+ neuf quand toutes les cartes mères d’Amiga que je possède sont gentiment en train de rendre l’âme. Dans l’objectif d’utiliser cette carte mère avec la Vampire V500 V2+, j’ai volontairement omis de souder toute la partie RGB, serial, parallel et floppy afin de pouvoir y faire passer un maximum de câbles. Ce projet était intéressant pour moi afin d’améliorer mes compétences basiques en soudure et j’ai passé environ 10h à le faire, que je comparerais à la lecture d’un bon livre en termes de concentration 🙂

Le PCB vide avec les composants fournis avec le kit :

PCB vide

Très important, relier le deux pads de gauche du JP2 afin de connecter correctement la RAM.

Il est vivant !

Je tiens à remercier tout particulièrement Stéphane Got, Henryk Richter et Claude Schwarz qui m’ont guidé dans cette « petite » aventure.

Lien vers le projet

Les schémas pour poser les composants 

Abzû, un jeu spectaculaire

Je ne suis de loin pas un hardcore gamer passant des heures à refaire des niveaux à difficulté croissante ou à amasser des points d’expérience pour obtenir de nouvelles capacités de combat. Les jeux qui me procurent du plaisir sont ceux qui me transportent pendant quelques heures. Abzû fait partie de ceux-ci. Il est court, très court, en fait parfaitement assez court pour moi avec le peu de temps que j’arrive à consacrer au gaming. Disons qu’en 2 heures, vous l’aurez fini.

Je vous le recommande chaudement si vous aimez les jeux qui allient une bande son mélodieuse (la musique fait partie intégrante de la qualité du jeu) et un pitch magique qui vous ballade sous l’eau dans un environnement onirique.

Gotek HxC sur A600 avec un support imprimé en 3D

En plus d’être tout spécialement incompétent à ce type de tâche, j’ai toujours détesté découper des boitiers, surtout quand il s’agit d’un Amiga, pour y intégrer différentes choses et ce, pour de multiples raisons, par exemple ne serait-ce que pour la revente de la machine, que vous souhaiter le plus « original » possible.

Il y a plusieurs mois, j’ai acheté un Gotek chez mon ami Relec.ch mais n’ai jamais réussi à trouver une façon propre de l’intégrer dans mes Amiga, je l’ai donc laissé de côté pendant un moment après l’avoir flashé avec le firmware HxC (qui supporte la lecteur et écriture des ADF !)

J’ai cependant découvert dernièrement qu’un mec appelé CrazyBob a créé et posté sur Thingiverse.com un support spécial pour Gotek afin de le faire rentrer dans un Amiga wedge classique. J’ai commandé la version A600 au travers d’un service proche d’impression 3D proposé par Thingiverse et j’ai finalement pu intégrer proprement et sans aucune découpe l’enfin dans ma machine.

Get this mount here