2 points par GN⁺ 2023-12-28 | 1 commentaires | Partager sur WhatsApp
  • La famille Game Boy combine, dans un budget énergétique réduit, un SoC DMG-CPU, un PPU, un APU, une ROM de démarrage et un Game Pak pour regrouper dans un même système le CPU, les graphismes, l’audio, la compatibilité et la protection contre la copie d’une console portable
  • Le CPU repose sur le cœur SM83 de Sharp et fonctionne à environ 4,19 MHz ; sur la Game Boy Color, le CPU CGB conserve la même lignée mais monte jusqu’à environ 8,38 MHz en mode double vitesse
  • Les graphismes reposent sur un LCD 160×144 et un PPU basé sur la VRAM qui combine tiles, arrière-plan, sprites et fenêtre ; le modèle Color élargit les possibilités avec 16 KB de VRAM, une palette de 32 768 couleurs et un DMA supplémentaire
  • L’audio est pris en charge par un APU à 4 canaux, et le Game Pak utilise un Memory Bank Controller pour dépasser l’espace d’adressage de base de 32 KB ; la communication externe est assurée par le câble Link et l’infrarouge sur la Color
  • La ROM de démarrage vérifie le logo Nintendo et le checksum de l’en-tête ROM avant de lancer le jeu, et cette exigence autour du logo sert de mécanisme de contrôle de la distribution fondé sur le droit d’auteur et le droit des marques

Portée de la famille Game Boy et orientation de conception

  • La série Game Boy peut être vue comme une version portable de la NES, mais ce n’est pas une simple réduction : son architecture possède ses propres fonctions et sa propre trajectoire d’évolution
  • La marque Game Boy s’étend sur deux générations
    • La 4e génération comprend la Game Boy monochrome ainsi que des révisions comme la Game Boy Pocket et la Light
    • La génération suivante inclut la Game Boy Color, sortie après la Virtual Boy
  • L’analyse se concentre sur l’architecture de base de la Game Boy monochrome et sur la manière dont elle a été étendue dans le modèle Color

CPU et structure mémoire

  • Au lieu de placer plusieurs puces génériques sur la carte mère, Nintendo a choisi une conception sur puce unique intégrant le CPU et les composants principaux
    • Ce SoC est appelé DMG-CPU ou Sharp LR35902
    • Il a été fabriqué par Sharp Corporation et convenait bien aux exigences de Nintendo en matière d’efficacité énergétique, de protection contre la copie et d’E/S supplémentaires
    • Comme cette puce n’était pas disponible dans les catalogues de vente au détail, elle était difficile à cloner telle quelle par les concurrents
  • Cœur CPU SM83

    • Le processeur principal du DMG-CPU est le Sharp SM83
    • Il s’agit d’un hybride entre le Zilog Z80 et l’Intel 8080, cadencé à environ 4,19 MHz
    • Le SM83 ne conserve qu’une partie des fonctions du Z80 et du 8080
      • Il ne possède ni les registres IX et IY du Z80, ni les instructions IN et OUT du 8080
      • Comme il ne peut pas utiliser de ports d’E/S, les composants doivent être mappés en mémoire
      • Il ne reprend que l’ensemble de registres de l’Intel 8080, soit 7 registres généraux
      • Parmi les extensions du Z80, seules certaines instructions de manipulation de bits sont implémentées
    • Sharp a aussi ajouté de nouvelles instructions absentes du Z80 et du 8080
      • LDH a été conçue pour accéder aux 256 derniers octets de l’espace mémoire, à partir de $FF00
      • L’instruction est plus courte d’un octet et peut donc s’exécuter légèrement plus vite
  • Évolutions CPU sur la Game Boy Color

    • La Game Boy Color intègre un nouveau SoC, le CPU CGB, mais conserve globalement le cœur CPU SM83
    • L’exception la plus importante concerne la fréquence d’horloge, qui double jusqu’à environ 8,38 MHz
    • En conservant le même cœur CPU, les développeurs peuvent réutiliser leurs connaissances existantes, tout en réduisant le coût d’une refonte architecturale et la charge liée à la compatibilité ascendante
    • Le CPU CGB propose deux modes de fonctionnement
      • Normal mode : le SM83 fonctionne à environ 4,19 MHz
      • Dual-speed mode : le SM83 fonctionne à environ 8,38 MHz
    • Ce choix implique aussi de continuer à utiliser, à la fin des années 1990, une technologie déjà ancienne
  • Espace d’adressage et RAM

    • Le SM83 conserve un bus de données 8 bits et un bus d’adresses 16 bits, ce qui lui permet d’adresser jusqu’à 64 KB de mémoire
    • La carte mémoire se compose de l’espace Game Pak, de la WRAM, de la HRAM, de la VRAM, des E/S pour le joypad, l’audio, les graphismes, le LCD, ainsi que des zones de contrôle des interruptions
    • La carte mère de la Game Boy d’origine embarque 8 KB de WRAM comme mémoire générale, soit quatre fois la capacité de la NES
    • Le SoC inclut aussi 127 B de HRAM
      • C’est un petit espace accessible plus rapidement via l’instruction LDH
      • Le bus de la HRAM n’est pas techniquement plus rapide que celui de la WRAM, mais le CPU y a la priorité
      • C’est important pendant les opérations DMA, lorsque le CPU ne peut pas accéder à la mémoire externe
    • La Game Boy Color porte la WRAM à 32 KB
      • La capacité d’adressage du CPU restant la même, toute la mémoire ne peut pas être connectée simultanément
      • L’accès aux 24 KB supplémentaires de WRAM passe par le bank switching
      • Les derniers 4 KB de l’espace initial de 8 KB sont permutés entre 7 banques
      • Le registre SVBK sert à sélectionner la banque WRAM

Graphismes : PPU, LCD et composition des couches

  • Les graphismes de la Game Boy reposent sur un CPU qui effectue les calculs, tandis qu’un PPU distinct dans le SoC DMG-CPU rend l’image
  • Le LCD intégré offre une résolution de 160×144 pixels
    • Le LCD de la Game Boy monochrome ne restitue que 4 niveaux de gris réfléchis : blanc, gris clair, gris foncé et noir
    • En raison de la teinte verdâtre du LCD, l’écran paraît légèrement vert
  • Toutes les Game Boy fonctionnent avec 4 piles AA, contrairement aux consoles de salon dépendantes de la fréquence secteur selon la région
    • La fréquence CPU et le taux de rafraîchissement ne varient pas selon les régions
    • Le taux de rafraîchissement est de 59,7 Hz
  • VRAM et rendu basé sur les tiles

    • Le PPU est connecté de manière exclusive à 8 KB de VRAM et y lit la majeure partie des données nécessaires au rendu
    • Certaines données nécessitant un accès plus rapide sont stockées dans le PPU lui-même
    • L’accès du CPU à la VRAM est arbitré par le PPU, et le jeu doit remplir correctement cette zone mémoire
    • L’unité de rendu de base est la tile
      • Une tile est un bitmap de 8×8 pixels
      • Chaque tile occupe 16 octets
      • Elle est stockée dans la zone Tile set ou Tile pattern table de la VRAM
    • Les couleurs sont choisies via une palette parmi 4 niveaux de gris
    • La Game Boy monochrome peut définir jusqu’à 3 palettes, mais leur usage dépend du type de couche rendue
  • Arrière-plan, sprites et fenêtre

    • L’image finale se compose de trois couches superposées
    • La couche d’arrière-plan mesure 256×256 pixels, soit une carte de 32×32 tiles
      • Seule une zone de 160×144 pixels est réellement visible à l’écran
      • Le jeu choisit la portion d’arrière-plan à afficher et la déplace pour produire l’effet de défilement
      • Une seule palette est utilisée pour la couche d’arrière-plan
    • Les sprites sont des tiles pouvant se déplacer indépendamment
      • Ils peuvent se chevaucher ou être placés derrière l’arrière-plan
      • La priorité d’affichage est déterminée par l’attribut priority
      • Une couleur transparente supplémentaire est utilisée, ce qui laisse 3 niveaux de gris réellement affichables
      • Ils peuvent choisir l’une des 2 palettes dédiées
    • La définition des sprites est stockée dans l’OAM (Object Attribute Memory) du PPU
      • Le jeu appelle généralement l’OAM DMA pour copier des données depuis la RAM ou la ROM vers l’OAM
      • Tant que le DMA est actif, le CPU ne peut pas accéder à la mémoire externe
      • Chaque entrée OAM contient un index de tile, une position X-Y, une palette, une priorité et des indicateurs de retournement vertical et horizontal
    • Le rendu des sprites par le PPU a ses limites
      • Maximum de 10 par scanline
      • Maximum de 40 par frame
      • Au-delà, certains sprites ne sont pas dessinés
    • La couche fenêtre est une carte de 160×144 pixels pouvant recouvrir tout l’écran
      • Elle est rendue au-dessus de l’arrière-plan et des sprites
      • Elle ne défile pas
      • Une seule tile map restante peut être affectée à la couche fenêtre
      • Elle partage la même palette que l’arrière-plan
      • Elle n’est pas transparente et masque entièrement les couches inférieures, mais peut être utilisée partiellement avec des effets raster fondés sur le timing
      • Les jeux l’utilisent surtout pour les compteurs de vie, le score et les informations persistantes à l’écran
  • Mise à jour des frames et effets raster

    • Le CPU ne peut pas modifier les tables pendant que le PPU lit la VRAM
    • Le système fournit des interruptions lorsque le PPU est inactif
      • Horizontal Blank commence à la fin d’une scanline et permet d’ajuster la partie de la frame qui n’a pas encore été dessinée
      • Vertical Blank commence après toutes les scanlines et permet de mettre à jour les graphismes de la frame suivante
      • OAM search se produit au début d’une scanline et permet de mettre à jour les zones autres que l’OAM pendant que le PPU détermine les sprites de cette ligne
    • Grâce à la couche fenêtre et aux interruptions supplémentaires, il est possible de modifier une partie de la frame avant que tout l’écran soit dessiné
    • En appliquant une valeur de défilement différente à chaque scanline, on peut créer un wobble effect où chaque ligne se déplace à une vitesse différente

Extensions graphiques de la Game Boy Color

  • Le PPU de la Game Boy Color se comporte comme un sur-ensemble du PPU d’origine et propose deux modes de fonctionnement pour préserver la compatibilité
    • CGB mode : apporte les améliorations visuelles des titres Game Boy Color
    • DMG mode : mode traditionnel où les extensions sont désactivées
  • La carte mère de la Game Boy Color intègre 16 KB de VRAM
    • Soit deux fois la capacité précédente
    • À cause des limites d’adressage du CPU, elle est organisée en 2 banques de 8 KB
    • Le registre VBK sert à changer de banque VRAM
  • Le PPU peut accéder simultanément aux deux banques de VRAM
    • Le développeur remplit les banques via VBK
    • Le PPU se charge du reste lorsqu’une tile map indique dans quelle banque se trouve une tile
  • Cette VRAM supplémentaire sert à stocker deux fois plus de tiles, davantage de palettes, à étendre les métadonnées des tiles et à référencer des palettes et effets supplémentaires
  • Couleur et DMA supplémentaire

    • Le nouveau PPU de la Game Boy Color peut définir des palettes parmi 32 768 couleurs
    • Les développeurs stockent jusqu’à 16 palettes de couleurs dans la Palette Memory
      • 8 pour l’arrière-plan et la fenêtre, 8 pour les sprites
      • Chaque palette encode 4 couleurs
      • Chaque entrée est une valeur 16 bits, mais seuls 15 bits sont réellement utilisés
      • La Palette Memory n’est pas directement adressable par le CPU ; de nouveaux registres servent de tampons d’écriture
    • Les tiles d’arrière-plan et de fenêtre peuvent référencer l’une des 8 palettes
    • Les tiles de sprite peuvent aussi référencer 8 palettes, mais une entrée reste réservée à la transparence, ce qui maintient une contrainte de palette à 3 couleurs
    • Le tile set double de taille, ce qui permet de stocker deux fois plus de tiles en VRAM
    • Les tile maps d’arrière-plan et de fenêtre sont elles aussi étendues pour contenir davantage de métadonnées
    • Les tiles d’arrière-plan et de fenêtre peuvent être retournées verticalement et horizontalement, ce qui réduit le besoin de stocker des graphismes redondants en VRAM
    • Le CPU CGB intègre une unité DMA supplémentaire pour copier des données vers la VRAM
      • Elle peut copier depuis le Game Pak ou la WRAM vers la VRAM
      • Le General-purpose DMA peut transférer à tout moment, mais il prend la priorité sur les accès mémoire pendant le transfert et peut provoquer du tearing
      • Le H-Blank DMA ne transfère que pendant le H-Blank, évitant les artefacts visuels, mais il est limité à des blocs de 16 octets et s’interrompt pendant le balayage du LCD

Audio : APU à 4 canaux

  • L’audio est pris en charge par l’APU (Audio Processing Unit), de type Programmable Sound Generator, avec un total de 4 canaux
  • L’APU est l’un des composants restés inchangés au fil des révisions de la Game Boy
    • Il ne peut pas être accéléré comme le CPU
    • Changer la vitesse des oscillateurs n’améliore pas la qualité sonore, mais modifie la hauteur
    • Pour ajouter des fonctions, il faut ajouter des circuits, ce qui augmente aussi le coût
  • Structure des canaux

    • Il y a 2 canaux à onde carrée, principalement utilisés pour les mélodies et les effets sonores
      • Leur largeur d’impulsion peut varier pour produire 4 timbres
      • Le premier canal dispose d’un sweep control dédié
      • Le nombre limité de canaux peut interrompre la mélodie lorsqu’un effet sonore est joué pendant la partie
    • Le troisième canal prend en charge une forme d’onde personnalisée
      • La forme d’onde est stockée dans une wavetable composée de 32 échantillons de 4 bits
      • Son volume et sa fréquence peuvent être contrôlés
    • Il y a 1 canal de bruit
      • Il produit un ensemble de formes d’onde aléatoires ressemblant à du bruit blanc
      • Il est surtout utilisé dans les jeux pour les percussions ou les effets d’ambiance
      • Il propose deux timbres, clean static et robotic static, avec réglage de fréquence
  • Mixeur et broches audio d’extension

    • Le mixeur fournit une sortie stéréo, permettant de répartir les canaux à gauche et à droite
    • Le haut-parleur intégré étant mono, le panning n’est perceptible que sur la sortie casque
    • Le matériel du mixeur est aussi connecté à des broches dédiées sur la cartouche
      • Si une cartouche produit un son analogique via du matériel additionnel, elle peut diffuser des canaux supplémentaires
      • Les jeux commercialisés n’ont pas utilisé cette fonction
      • Cette fonction a été supprimée à l’époque de la Game Boy Advance

ROM de démarrage et mode de fonctionnement

  • La Game Boy, contrairement à la NES/Famicom, ne démarre pas directement sur le jeu : elle lance d’abord une ROM interne de 256 octets
  • La procédure de démarrage de base est la suivante
    • À la mise sous tension, le CPU commence à lire à l’adresse 0x0000
    • La RAM et l’APU sont initialisés
    • Le graphique du logo Nintendo présent dans la ROM cartouche est copié dans la Display RAM et affiché en haut de l’écran
    • S’il n’y a pas de cartouche ou qu’elle est mal insérée, le logo peut apparaître sous forme de tiles corrompues
    • Le logo défile vers le bas et le son emblématique est joué
    • Le logo Nintendo du jeu est comparé à celui présent dans la ROM de la console
    • Un checksum rapide est effectué sur l’en-tête de la ROM cartouche
    • En cas d’échec, la console se bloque
    • La ROM de la console est retirée de la carte mémoire
    • Le CPU commence l’exécution du jeu
  • Le logo Nintendo affiché à l’écran n’est pas effacé de la VRAM, ce qui permet au jeu d’appliquer des animations ou des effets de transition à ce logo
  • Évolutions du boot sur la Game Boy Color

    • La ROM de la Game Boy Color passe à 2 KB
    • La séquence de démarrage vérifie si le jeu inséré est un jeu Game Boy classique ou un jeu Game Boy Color
    • Elle examine certaines métadonnées de la ROM cartouche et configure, selon le résultat, les registres activant le mode DMG ou CGB
    • Si un jeu DMG est inséré, le programme de démarrage remplit la Palette RAM avec une palette calculée
      • Il utilise un algorithme simple reposant sur les métadonnées du jeu
      • C’est ce qui permet aux jeux monochromes d’apparaître colorisés sur la Game Boy Color
      • L’utilisateur peut modifier la palette sélectionnée via une combinaison de boutons au démarrage
    • Le logo Nintendo est aussi copié dans la HRAM
    • L’étape de checksum ne vérifie que la moitié avant du logo stocké en HRAM

Game Pak, développement des jeux et communication externe

  • À l’époque, les jeux exigeants en performances étaient principalement écrits en assembleur, car la maturité des compilateurs de langages de haut niveau n’était pas encore suffisante
  • Les jeux commerciaux étaient distribués sur Game Pak, la cartouche de Nintendo pour la Game Boy
  • L’espace de stockage de base est limité à 32 KB à cause des contraintes d’espace d’adressage
    • L’utilisation d’un Memory Bank Controller, ou mapper, permet de créer des jeux plus volumineux
    • Les plus gros Game Pak commercialisés embarquaient 1 MB de ROM sur Game Boy d’origine et 8 MB de ROM sur Game Boy Color
  • Certains Game Pak incluaient une horloge temps réel, de la SRAM supplémentaire et une batterie externe pour la sauvegarde
  • Types de cartouches à l’ère Color

    • Avec l’ajout des modes de fonctionnement de la Game Boy Color, les jeux se répartissent en trois catégories
      • Game Boy : totalement compatible avec tous les modèles de Game Boy et s’exécute toujours en mode DMG
      • Game Boy Color enhanced : compatible avec les modèles monochromes tout en bénéficiant d’améliorations visuelles en mode CGB sur Game Boy Color
      • Game Boy Color exclusive : compatible uniquement avec la Game Boy Color et optimisé pour exploiter ce matériel
    • Ces trois types étaient associés à des couleurs officielles pour faciliter leur identification
    • Certains jeux comme Pokémon et Donkey Kong utilisaient un design différent
  • Câble Link et infrarouge

    • Les jeux Game Boy ont, pour la première fois, pu communiquer avec du matériel externe via le câble Game Boy Link, ce qui a permis le multijoueur et l’usage d’accessoires
    • Le câble Link se branche sur le sous-connecteur 6 broches de la console, et l’interface utilise le protocole SPI (Serial Peripheral Interface)
      • Une Game Boy pilote le signal d’horloge en tant que master, l’autre devient slave
      • À chaque transfert, master et slave échangent chacun un paquet de 8 bits
      • Sur la Game Boy d’origine, le débit est de 8 Kbit/s, soit 1 KB/s
      • La Game Boy Color peut atteindre jusqu’à 512 Kbit/s, soit 64 KB/s, en mode high speed
    • Nintendo a aussi commercialisé un 4-Player Adapter permettant à jusqu’à 4 Game Boy d’échanger des données simultanément
      • Le SPI de base est conservé
      • L’adaptateur agit comme master et implémente une couche de communication supplémentaire que le jeu doit respecter
    • La Game Boy Color intègre un émetteur-récepteur infrarouge
      • Il se compose d’une LED et d’un phototransistor
      • Il est utilisé dans des titres comme Pokémon Gold pour l’échange de données sans fil
      • Le système lui-même n’implémente pas de protocole de communication
      • Un unique registre RP encode le fonctionnement du capteur IR, le bit transmis et le dernier bit reçu
      • Nintendo fournissait une implémentation de référence dans le Game Boy Developer Manual officiel

Architecture de protection contre la copie

  • La console n’exécute pas immédiatement le jeu : elle effectue d’abord plusieurs vérifications pour empêcher l’exécution de cartouches non autorisées et pour confirmer que la cartouche est correctement insérée
  • Pour réussir ces contrôles, le jeu devait inclure dans l’en-tête de la ROM une copie du logo Nintendo sous forme de tiles
    • Nintendo pouvait ainsi s’appuyer sur le droit d’auteur et le droit des marques pour contrôler la distribution
  • Par la suite, l’affaire Sega v. Accolade a jugé que l’utilisation d’un logo protégé par le droit d’auteur afin de satisfaire ce type d’exigence relevait du fair use, accordant ainsi ce droit aux entreprises
  • Des mesures supplémentaires de protection contre la copie pouvaient aussi être mises en œuvre dans le jeu lui-même
    • Les bootlegs vérifiaient généralement une taille de SRAM plus grande
    • Un checksum de la ROM pouvait être effectué à des moments aléatoires pendant la partie afin de détecter des modifications du code

1 commentaires

 
GN⁺ 2023-12-28
Avis Hacker News
  • Ce qui était vraiment remarquable dans le développement original de la Game Boy, c’est que l’équipe de Gunpei Yokoi faisait face à une énorme défiance à l’époque
    C’était en gros : « Pourquoi jouer dans le bus ou aux toilettes ? Ce serait inconfortable. À la maison, on peut jouer assis sur le canapé devant la télé avec la famille ou les amis, et pour l’expérience la plus moderne, il y a les salles d’arcade. Qui voudrait changer des piles pour ne voir que quelques nuances de gris ? »
    Leur vision consistait à prendre une technologie mûre et à l’emballer dans un appareil facile à utiliser avec des jeux simples et courts, et on peut considérer que cette équipe a de fait lancé le jeu mobile

    • C’est une vision révisionniste de l’histoire
      Dans les années 1970, les enfants jouaient déjà dans le bus et aux toilettes avec les jeux portables à LED de Mattel, et j’en ai eu au moins 6, peut-être 8. L’un des premiers exemples est celui de 1976 : https://en.m.wikipedia.org/wiki/Mattel_Auto_Race
      Les plus populaires étaient plutôt des jeux de sport comme le football américain, le baseball ou le basket, et les règles étaient bien plus complexes que dans Auto Race : https://www.ebay.com/p/2255363696
      Au début des années 1980, il existait aussi beaucoup de jeux portables à LCD comme Dungeons and Dragons : https://en.m.wikipedia.org/wiki/Dungeons_%26_Dragons_Compute... (1981)
      « Mattel stated that the game immediately sold out. » Ils n’utilisaient pas de cartouches, mais les jeux LCD en particulier étaient bon marché et petits, donc on pouvait en posséder plusieurs sans difficulté
      Aujourd’hui, on appelle ce genre d’appareils des « handhelds » pour les distinguer des portables de la génération Game Boy, mais il ne me semble pas qu’on utilisait ce terme à l’époque. L’idée, c’est qu’il existait déjà un marché prospère dans les années 1970 et au début des années 1980, et que Nintendo ne l’a pas créé : l’entreprise a fait évoluer la formule en combinant les consoles à cartouches déjà populaires avec le marché des jeux portables
    • Game & Watch est arrivé avant, et c’était aussi Gunpei Yokoi. Au moins dans mon souvenir, on pourrait plutôt voir là le début du jeu mobile
    • J’avais déjà une montre avec un jeu de course automobile environ six ans avant la sortie de la Game Boy
  • J’ai vu l’ajout de la Game Boy Color, mais la partie disant que la taille des cartouches n’était que de 1 Mo n’a apparemment pas été corrigée. Certains jeux GBC montent jusqu’à 4 Mo
    Et il existe aussi un jeu de train en 8 Mo avec de courtes vidéos et des images en haute couleur

    • Exact, 電車でGO!2 高速編 aka Densha de Go! 2 Kōsoku-hen
      https://www.youtube.com/watch?v=S62dSVmLPU0
    • Pour être juste, rien n’empêchait vraiment non plus les jeux DMG d’atteindre 4 Mo
      Dans les deux cas, la fenêtre du pack fait fondamentalement 32 Ko, et que ce soit pour 4 Mo ou 1 Mo, le bank switching est géré côté cartouche
  • La Game Boy est de loin ma console préférée de tous les temps. En ce moment, je crée un jeu Game Boy en assembleur ; c’est un dungeon crawler de flipper
    Le matériel est facile à comprendre, et ses contraintes forcent à être créatif

  • Florent Gorges a publié un livre consacré uniquement à la Game Boy, mais malheureusement il ne semble pas exister de traduction anglaise. Je l’ai acheté en espagnol, et il contient des interviews exclusives des créateurs
    https://www.amazon.es/Historia-Nintendo-Vol-4-1989-1999-INCR...

  • Avec le niveau actuel de démocratisation du hardware, serait-il possible de recréer une Game Boy en achetant les bons composants et un PCB déjà câblé ?

    • Des gens l’ont fait, mais il faut au minimum transplanter le CPU d’origine. Ces puces n’ont pas été conçues pour un autre usage : https://www.reddit.com/r/Gameboy/s/FEAH2VhBRT
      FunnyPlaying a récemment sorti une version basée sur FPGA à un prix raisonnable : https://funnyplaying.com/products/fpgbc-kit?variant=40858870...
      Il existe aussi de nouvelles cartes mères avec composants montés pour la Game Boy Advance, sur lesquelles il faut transplanter le CPU et la RAM
    • Si une Game Boy aussi rapide qu’un supercalculateur de l’époque de sa sortie te suffit, on peut probablement monter pour moins de 150 dollars et un peu d’endurance mentale une configuration basée sur un ordinateur monocarte ARM faisant tourner un émulateur Game Boy sous Linux avec sortie sur écran OLED
      Si on veut de la fidélité matérielle, le coût d’un appareil monobloc au format portable risque de sortir de la gamme de prix « démocratisée »
    • L’approche actuelle, c’est d’utiliser un FPGA. Il suffit de regarder l’Analogue Pocket, et il existe d’autres kits
    • Au mieux, on achètera probablement des pièces récupérées sur une vieille Game Boy pour la réassembler. Il me semble avoir vu quelque part une implémentation FPGA de Game Boy, et c’est peut-être ce qui s’en rapproche le plus
  • À quoi bon apprendre l’architecture de la Game Boy, pour hacker la planète ?

    • C’est une architecture simple qui fonctionne au contact direct du matériel sans système d’exploitation, donc c’est une excellente porte d’entrée vers la programmation embarquée, et c’est amusant