{"id":152,"date":"2021-12-04T16:37:16","date_gmt":"2021-12-04T15:37:16","guid":{"rendered":"https:\/\/www.renaudschweingruber.com\/?p=152"},"modified":"2021-12-04T16:40:13","modified_gmt":"2021-12-04T15:40:13","slug":"hacking-game-watch","status":"publish","type":"post","link":"https:\/\/www.renaudschweingruber.com\/index.php\/2021\/12\/04\/hacking-game-watch\/","title":{"rendered":"Hacking Game &#038; Watch"},"content":{"rendered":"\n<p>Si vous \u00eates comme moi n\u00e9 dans les ann\u00e9es 80, vous avez certainement connu les fameuses \u00ab\u00a0Game &amp; Watch\u00a0\u00bb de Nintendo, ces petits jeux portables avec \u00e9cran \u00e0 cristaux liquides. Souvent simplistes et \u00e9nervants, ils sont devenus \u00e0 travers le temps tr\u00e8s rares et une source de nostalgie de notre jeunesse.<\/p>\n\n\n\n<p>Nintendo, devenus champion dans le domaine de r\u00e9chauffer les restes pour notre plus grand bonheur, a ressorti en 2020 une Game&amp;Watch Super Mario Bros, qui fut ensuite suivie d&rsquo;une Game&amp;Watch Zelda. La Game&amp;Watch Mario est livr\u00e9e relativement pauvrement avec Super Mario Bros et Super Mario Bros 2 : The Lost Levels ainsi qu&rsquo;un jeu pur Game&amp;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&rsquo;origine non-DX, ce qui est un choix discutable). <\/p>\n\n\n\n<p>Il ne fallu que peu de temps \u00e0 certains hackers pour r\u00e9ussir \u00e0 d\u00e9plomber la machine et y injecter du code externe pour permettre de remplacer totalement le contenu de la flashrom et jouer \u00e0 d&rsquo;autres jeux que ceux pr\u00e9vus initialement. Le custom firmware inject\u00e9 contient un \u00e9mulateur (attention, pas celui employ\u00e9 par Nintendo) qui permet de faire tourner la plupart des consoles 8-Bit de l&rsquo;\u00e9poque, le STM32 embarqu\u00e9 dans ces Game&amp;Watch ayant la puissance suffisante pour le faire. <\/p>\n\n\n\n<p>Cet article, bas\u00e9 sur un guide existant plut\u00f4t sommaire, va d\u00e9tailler proprement comment r\u00e9aliser chacune des \u00e9tapes pour vous permettre de r\u00e9aliser la m\u00eame op\u00e9ration. Il s&rsquo;adresse \u00e0 un public averti qui maitrise les principes de base de Linux et qui est habitu\u00e9 \u00e0 l&rsquo;utilisation d&rsquo;un Raspberry Pi mais qui est assez flegmard pour juste vouloir faire des copier\/coller de commandes Linux pour arriver au r\u00e9sultat attendu \ud83d\ude42<\/p>\n\n\n\n<div class=\"wp-block-image is-style-default\"><figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/Capture-decran-2021-12-04-130955.png\" alt=\"\" class=\"wp-image-154\" width=\"556\" height=\"318\" srcset=\"https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/Capture-decran-2021-12-04-130955.png 741w, https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/Capture-decran-2021-12-04-130955-300x172.png 300w\" sizes=\"auto, (max-width: 556px) 100vw, 556px\" \/><\/figure><\/div>\n\n\n\n<p><strong>Pr\u00e9requis<\/strong>:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Une Game&amp;Watch <a href=\"https:\/\/www.amazon.fr\/Game-Watch-Super-Mario-Bros\/dp\/B08HFGR7L2\/ref=pd_sbs_2\/261-8854711-7155849?pd_rd_w=4TcAG&amp;pf_rd_p=a8b99513-9ed9-4379-9ce7-04130b9ba223&amp;pf_rd_r=R84Q17VBEF4QCNNQKCZP&amp;pd_rd_r=7957687a-eda4-474b-8820-947df23f65a8&amp;pd_rd_wg=9IrC9&amp;pd_rd_i=B08HFGR7L2&amp;psc=1\" class=\"external\" rel=\"nofollow\">Super Mario Bros<\/a> ou <a href=\"https:\/\/www.amazon.fr\/Console-Game-Watch-Legend-Nintendo\/dp\/B097F6916C\/ref=pd_rhf_eetyp_s_bmx_gp_4a3ipvjn_1\/261-8854711-7155849?pd_rd_w=OmDDr&amp;pf_rd_p=b97c269a-6bfe-4588-b8b4-ae22c61a3c39&amp;pf_rd_r=DR29X7R10DFFPAY0KZJD&amp;pd_rd_r=702dd3a8-56c4-4008-8774-e4b63109bf9e&amp;pd_rd_wg=ZB9On&amp;pd_rd_i=B097F6916C&amp;psc=1\" class=\"external\" rel=\"nofollow\">The Legend of Zelda<\/a><\/li><li>Un Raspberry Pi avec ports GPIO<\/li><li>Trois <a href=\"https:\/\/www.ebay.com\/sch\/i.html?_from=R40&amp;_trksid=p2380057.m570.l1313&amp;_nkw=dupont+cable&amp;_sacat=0\" class=\"external\" rel=\"nofollow\">c\u00e2bles Dupont<\/a> (M-F)<\/li><\/ol>\n\n\n\n<p><strong>Etape 1 : Pr\u00e9paration initiale du Raspberry Pi<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><a href=\"https:\/\/www.raspberrypi.com\/software\/operating-systems\/\" class=\"external\" rel=\"nofollow\">T\u00e9l\u00e9chargez <\/a>et installez sur votre SD la derni\u00e8re version de Raspbian Lite.<\/li><li>Configurez votre conn\u00e9xion r\u00e9seau (LAN ou WiFi)<\/li><li>Activez le SSH (si vous souhaitez faire la suite des op\u00e9rations depuis une autre machine)<\/li><\/ol>\n\n\n\n<p><strong>Etape 2 : Script de pr\u00e9paration \u00ab\u00a0All-in-one\u00a0\u00bb<\/strong><\/p>\n\n\n\n<p>Toujours dans l&rsquo;objectif d&rsquo;atteindre l&rsquo;objectif fix\u00e9 en un minimum d&rsquo;effort (qu&rsquo;on se le dise, la flegmardise stimule la cr\u00e9ativit\u00e9), un utilisateur r\u00e9pondant au nickname de Kalle000 a cr\u00e9\u00e9 un script va automatiser une grande partie des t\u00e2ches du guide de base, en commen\u00e7ant par mettre votre syst\u00e8me \u00e0 jour puis en installant toutes les d\u00e9pendances n\u00e9cessaires au flash de votre Game&amp;Watch.<\/p>\n\n\n\n<p>On le t\u00e9l\u00e9charge :<\/p>\n\n\n\n<p class=\"has-text-align-left\"><code>wget https:\/\/raw.githubusercontent.com\/Kalle000\/game-and-watch\/main\/gw-rpi-install-script.sh<\/code><\/p>\n\n\n\n<p>On le rend ex\u00e9cutable :<\/p>\n\n\n\n<p><code>chmod a+x gw-rpi-install-script.sh<\/code><\/p>\n\n\n\n<p>Et on se lance :<\/p>\n\n\n\n<p><code>.\/gw-rpi-install-script.sh<\/code><\/p>\n\n\n\n<p>La fin d&rsquo;installation doit normalement se finir par l&rsquo;erreur suivante :<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"621\" height=\"195\" src=\"https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image.png\" alt=\"\" class=\"wp-image-168\" srcset=\"https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image.png 621w, https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-300x94.png 300w\" sizes=\"auto, (max-width: 621px) 100vw, 621px\" \/><\/figure><\/div>\n\n\n\n<p>Ce script n&rsquo;est actuellement pas en mesure de supporter la derni\u00e8re version des outils qui permettent de flasher autant la version Mario que la version Zelda.<\/p>\n\n\n\n<p>A ce stade, nous avons donc presque tout le n\u00e9cessaire pour aller de l&rsquo;avant.<\/p>\n\n\n\n<p><strong>Etape 3 : Finalisation du setup<\/strong><\/p>\n\n\n\n<p>Nous allons customiser un tantinet notre setup afin d&rsquo;ajouter des fonctionnalit\u00e9s manquantes \u00e0 l&rsquo;\u00e9mulateur Retro-Go, l&rsquo;\u00e9mulateur employ\u00e9 dans ce hack. Il est en effet possible de lui faire afficher des vignettes de jeu, ce qui rend l&rsquo;exp\u00e9rience utilisateur bien plus agr\u00e9able et propre que d&rsquo;afficher uniquement des listes des ROMs.<\/p>\n\n\n\n<p>Pour ce faire:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get install libopenjp2-7\n<code>sudo apt-get install python3-pip<\/code>python -m pip install -r requirements.txt\ncd opt\ncd game-and-watch-retro-go\ngit remote add olderzeus https:\/\/github.com\/olderzeus\/game-and-watch-retro-go.git\n<code>git fetch olderzeus\ngit checkout NewUI\ngit submodule update\nmake clean\ngit pull\nchmod a+x scripts\/*.sh<\/code><\/code><\/pre>\n\n\n\n<p><strong>Etape 4 : Transfert des ROMs<\/strong><\/p>\n\n\n\n<p>Ne vous reste ainsi plus qu&rsquo;\u00e0 transf\u00e9rer vos ROMs dans le r\u00e9pertoire de la console \u00e9mul\u00e9e correspondante dans le r\u00e9pertoire opt\/game-and-watch-retro-go\/roms dans son format natif (non zipp\u00e9, soit .nes pour la NES, .gb pour GameBoy, etc.).<\/p>\n\n\n\n<p>Pour ma part, afin de le faire simplement via FTP, j&rsquo;ai install\u00e9 le serveur ProFTPd :<\/p>\n\n\n\n<p><code>sudo apt install proftpd<\/code><\/p>\n\n\n\n<p>Puis transf\u00e9r\u00e9 les ROMs (vous pouvez \u00e9galement ajouter des PNG \u00e0 cet instant pour enrichir l&rsquo;interface finale) :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"480\" src=\"https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-7-1024x480.png\" alt=\"\" class=\"wp-image-195\" srcset=\"https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-7-1024x480.png 1024w, https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-7-300x141.png 300w, https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-7-768x360.png 768w, https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-7.png 1261w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Pour ma part, j&rsquo;ai s\u00e9lectionn\u00e9 les jeux suivants qui passent dans les FlashROM de base (1MB pour Mario et 4MB pour Zelda) :<\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<ul class=\"wp-block-list\"><li><strong>Game&amp;Watch Super Mario Bros<\/strong><ul><li><strong>GameBoy<\/strong><ul><li>Super Mario Land (World)<\/li><li>Super Mario Land 2 &#8211; 6 Golden Coins (USA, Europe)<\/li><\/ul><\/li><li><strong>NES<\/strong><ul><li>Mario Bros. Classic (Europe)<\/li><li>Super Mario Bros. (World)<\/li><li>Super Mario Bros. 2 (Europe)<\/li><li>Super Mario Bros. 3 (Europe)<\/li><\/ul><\/li><\/ul><\/li><\/ul>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Game&amp;Watch Legend of Zelda<\/strong><ul><li><strong>GameBoy<\/strong><ul><li>Legend of Zelda, The &#8211; Link&rsquo;s Awakening (France)<\/li><\/ul><\/li><li><strong>NES<\/strong><ul><li>Legend of Zelda, The (<a href=\"https:\/\/traf.romhack.org\/?p=patchs&amp;pid=456\" class=\"external\" rel=\"nofollow\">Trad FR<\/a>)<\/li><li>Zelda II &#8211; The Adventure of Link (<a href=\"https:\/\/traf.romhack.org\/?p=patchs&amp;pid=458\" class=\"external\" rel=\"nofollow\">Trad FR<\/a>)<\/li><\/ul><\/li><\/ul><\/li><\/ul>\n\n\n\n<p><\/p>\n<\/div><\/div>\n\n\n\n<p><strong>Etape 5 : Pr\u00e9paration mat\u00e9rielle de la Game&amp;Watch<\/strong><\/p>\n\n\n\n<p>La Game&amp;Watch dispose bien d&rsquo;un port USB-C mais ce dernier ne sert qu&rsquo;\u00e0 recharger la batterie. Par d\u00e9faut, aucune data ne transite malheureusement par son biais. Par chance, Nintendo a laiss\u00e9 sur le PCB des ports de debug qui vont nous permettre de r\u00e9aliser certaines t\u00e2ches pour mener \u00e0 bien notre mission.<\/p>\n\n\n\n<p>Commencez donc par ouvrir votre Game&amp;Watch en d\u00e9vissant les 4 vis triangulaires \u00e0 l&rsquo;arri\u00e8re. Si vous n&rsquo;avez pas de tournevis adapt\u00e9, un petit torx peut faire l&rsquo;affaire. Je vous recommande de ne pas forcer car ces petites vis s&rsquo;abiment vite et elles deviendront rapidement difficile \u00e0 utiliser dans le futur. Attention \u00e0 ne pas perdre le bouton Power qui se ballade facilement.<\/p>\n\n\n\n<p>Une fois ouvert, il vous faudra d\u00e9connecter la batterie en soulevant le connecteur avec pr\u00e9caution car nous alimenterons la Game&amp;Watch par l&rsquo;USB dans les \u00e9tapes \u00e0 venir. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"504\" src=\"https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-2-1024x504.png\" alt=\"\" class=\"wp-image-182\" srcset=\"https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-2-1024x504.png 1024w, https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-2-300x148.png 300w, https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-2-768x378.png 768w, https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-2.png 1188w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Etape 6 : Connection <strong>du Raspberry Pi<\/strong> \u00e0 la Game&amp;Watch<\/strong><\/p>\n\n\n\n<p>L&rsquo;op\u00e9ration physique suivante est tr\u00e8s importante car le succ\u00e8s de l&rsquo;op\u00e9ration en d\u00e9pend. En effet, une mauvaise connection entre les deux \u00e9quipements peut entrainer un flash pr\u00e9sum\u00e9ment r\u00e9ussi de votre Game&amp;Watch mais avec des donnes corrompues, une interruption de la proc\u00e9dure de flash ou m\u00eame le refus total de flasher l&rsquo;appareil.<\/p>\n\n\n\n<p>Pour les besoins de ce guide, je vais d\u00e9tailler la fa\u00e7on de proc\u00e9der pour la Game&amp;Watch Mario mais la version Zelda est tr\u00e8s similaire. Hormis un pin-out l\u00e9g\u00e8rement diff\u00e9rent qui sera pr\u00e9cis\u00e9, les op\u00e9rations sont identiques.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/raw.githubusercontent.com\/guh\/nymea-plugins\/master\/gpio\/docs\/images\/Raspberry-Pi-2-GPIO.png\" alt=\"Raspberry Pi GPIO\" title=\"Raspberry Pi GPIO\"\/><\/figure><\/div>\n\n\n\n<p>Commencez par connecter un c\u00e2ble Dupont \u00e0 chaque Pin suivant de votre Raspberry Pi :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>GPIO24 (Pin 18)<\/li><li>GPIO25 (Pin 22)<\/li><li>GROUND (Pin 39)<\/li><\/ul>\n\n\n\n<p>Et connectez les de la sorte sur votre Game&amp;Watch :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>GPIO24 vers SWDIO<\/li><li>GPIO25 vers SWCLK<\/li><li>GND vers GND<\/li><\/ul>\n\n\n\n<p>Pour Mario :<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"402\" src=\"https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-3.png\" alt=\"\" class=\"wp-image-187\" srcset=\"https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-3.png 975w, https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-3-300x124.png 300w, https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-3-768x317.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure><\/div>\n\n\n\n<p>Pour Zelda :<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"413\" src=\"https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-4-1024x413.png\" alt=\"\" class=\"wp-image-189\" srcset=\"https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-4-1024x413.png 1024w, https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-4-300x121.png 300w, https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-4-768x309.png 768w, https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-4.png 1211w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<p>Pour ressembler au final \u00e0 quelque chose du genre (ghetto style, si vous avez des connecteurs type pinces croco, c&rsquo;est beaucoup mieux) :<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"724\" height=\"397\" src=\"https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-5.png\" alt=\"\" class=\"wp-image-190\" srcset=\"https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-5.png 724w, https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-5-300x165.png 300w\" sizes=\"auto, (max-width: 724px) 100vw, 724px\" \/><\/figure><\/div>\n\n\n\n<p><strong>Etape 6 : V\u00e9rification du setup<\/strong><\/p>\n\n\n\n<p>Un script va nous permettre (soi-disant) de v\u00e9rifier que tout fonctionne bien :<\/p>\n\n\n\n<p><code>cd \/home\/pi\/opt\/game-and-watch-backup<\/code><\/p>\n\n\n\n<p><code>.\/1_sanity_check.sh rpi mario<\/code><\/p>\n\n\n\n<p>Ce script devrait vous retourner ceci :<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"601\" height=\"64\" src=\"https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-6.png\" alt=\"\" class=\"wp-image-191\" srcset=\"https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-6.png 601w, https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-6-300x32.png 300w\" sizes=\"auto, (max-width: 601px) 100vw, 601px\" \/><\/figure><\/div>\n\n\n\n<p><strong>Etape 7 : Backup de la FlashROM externe<\/strong><\/p>\n\n\n\n<p>Pass\u00e9 cette \u00e9tape, nous allons ensuite faire une copie de votre FlashROM afin de pouvoir la restorer en cas de besoin.<\/p>\n\n\n\n<p><code>.\/2_backup_flash.sh<\/code><\/p>\n\n\n\n<p><strong>Etape 8 : Backup de la FlashROM interne<\/strong><\/p>\n\n\n\n<p>Ensuite, une fois votre FlashROM d&rsquo;origine sauvegard\u00e9e, le script suivant va backuper la FlashROM interne de votre Game&amp;Watch.<\/p>\n\n\n\n<p><code>.\/3_backup_internal_flash.sh<\/code><\/p>\n\n\n\n<p>Gardez bien les 3 fichiers g\u00e9n\u00e9r\u00e9s \u00e0 cette \u00e9tape \u00e0 la pr\u00e9c\u00e9dente de c\u00f4t\u00e9 afin de pouvoir les restorer en cas de probl\u00e8mes.<\/p>\n\n\n\n<p><strong>Etape 9 : Unlock de la Game&amp;Watch<\/strong><\/p>\n\n\n\n<p>L&rsquo;\u00e9tape finale avant de flasher \u00e0 proprement parl\u00e9 votre Game&amp;Watch sera de d\u00e9bloquer le STM32 de votre Game&amp;Watch. Ce dernier va modifier l&rsquo;\u00e9tat \u00ab\u00a0pas de lecture externe\u00a0\u00bb de votre STM32 pour permettre d&rsquo;ex\u00e9cuter le payload fraichement inject\u00e9.<\/p>\n\n\n\n<p><code>.\/4_unlock_device.sh<\/code><\/p>\n\n\n\n<p>Si tout s&rsquo;est bien d\u00e9roul\u00e9, l&rsquo;\u00e9cran de votre Game&amp;Watch devrait \u00eatre d&rsquo;un bleu resplendissant.<\/p>\n\n\n\n<p><strong>Etape 10 : Compilation de Retro-Go et flash<\/strong><\/p>\n\n\n\n<p>Nous allons d\u00e9sormais proc\u00e9der \u00e0 l&rsquo;\u00e9tape finale qui sera de compiler et flasher l&rsquo;\u00e9mulateur Retro-Go<\/p>\n\n\n\n<p><code>cd ..<\/code><\/p>\n\n\n\n<p><code>cd cd game-and-watch-retro-go\/<\/code><\/p>\n\n\n\n<p><code>make GCC_PATH=\/home\/pi\/opt\/xpack-arm-none-eabi-gcc-10.2.1-1.1\/bin\/ flash_all<\/code><\/p>\n\n\n\n<p>Si vous disposez d&rsquo;une FlashROM modd\u00e9e (de 16, 32 ou 64MB), utilisez les commandes suivantes :<\/p>\n\n\n\n<p><code>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<\/code><\/p>\n\n\n\n<p><code>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 <\/code><\/p>\n\n\n\n<p><code>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<\/code><\/p>\n\n\n\n<p><strong>En cas de probl\u00e8me<\/strong><\/p>\n\n\n\n<p>En cas de probl\u00e8me de flash, sachez que vous pourrez toujours revenir en arri\u00e8re en invoquant le script de restore de votre FlashROM.<\/p>\n\n\n\n<p><code>.\/5_restore.sh<\/code><\/p>\n\n\n\n<p>Si pour une raison ou une autre les scripts vous retournent des erreurs lors du flashage, c&rsquo;est que la conn\u00e9xion entre votre Raspberry Pi et Game&amp;Watch n&rsquo;est pas bonne. V\u00e9rifiez l\u00e0 et refaites des tentatives. J&rsquo;ai du m&rsquo;y reprendre \u00e0 plusieurs reprises avant d&rsquo;arriver un flash parfait.<\/p>\n\n\n\n<p><strong>Conclusion<\/strong><\/p>\n\n\n\n<p>Si tout a fonctionn\u00e9 comme il se doit, vous devriez \u00eatre recompens\u00e9 par le message suivant :<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"578\" height=\"688\" src=\"https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-8.png\" alt=\"\" class=\"wp-image-208\" srcset=\"https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-8.png 578w, https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-8-252x300.png 252w\" sizes=\"auto, (max-width: 578px) 100vw, 578px\" \/><\/figure><\/div>\n\n\n\n<p>Et surtout :<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1001\" height=\"742\" src=\"https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-9.png\" alt=\"\" class=\"wp-image-216\" srcset=\"https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-9.png 1001w, https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-9-300x222.png 300w, https:\/\/www.renaudschweingruber.com\/wp-content\/uploads\/2021\/12\/image-9-768x569.png 768w\" sizes=\"auto, (max-width: 1001px) 100vw, 1001px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Si vous \u00eates comme moi n\u00e9 dans les ann\u00e9es 80, vous avez certainement connu les fameuses \u00ab\u00a0Game &amp; Watch\u00a0\u00bb de Nintendo, ces petits jeux portables avec \u00e9cran \u00e0 cristaux liquides. Souvent simplistes et \u00e9nervants, ils sont devenus \u00e0 travers le temps tr\u00e8s rares et une source de nostalgie de notre jeunesse. Nintendo, devenus champion dans &hellip; <a href=\"https:\/\/www.renaudschweingruber.com\/index.php\/2021\/12\/04\/hacking-game-watch\/\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Hacking Game &#038; Watch<\/span>  <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":216,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,5,6],"tags":[],"class_list":["post-152","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-electronic","category-emulation","category-raspberry"],"_links":{"self":[{"href":"https:\/\/www.renaudschweingruber.com\/index.php\/wp-json\/wp\/v2\/posts\/152","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.renaudschweingruber.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.renaudschweingruber.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.renaudschweingruber.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.renaudschweingruber.com\/index.php\/wp-json\/wp\/v2\/comments?post=152"}],"version-history":[{"count":58,"href":"https:\/\/www.renaudschweingruber.com\/index.php\/wp-json\/wp\/v2\/posts\/152\/revisions"}],"predecessor-version":[{"id":221,"href":"https:\/\/www.renaudschweingruber.com\/index.php\/wp-json\/wp\/v2\/posts\/152\/revisions\/221"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.renaudschweingruber.com\/index.php\/wp-json\/wp\/v2\/media\/216"}],"wp:attachment":[{"href":"https:\/\/www.renaudschweingruber.com\/index.php\/wp-json\/wp\/v2\/media?parent=152"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.renaudschweingruber.com\/index.php\/wp-json\/wp\/v2\/categories?post=152"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.renaudschweingruber.com\/index.php\/wp-json\/wp\/v2\/tags?post=152"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}