11 points par GN⁺ 2025-03-22 | 1 commentaires | Partager sur WhatsApp
  • Émulateur Game Boy cycle-accurate avec une émulation CPU/audio précise
  • Utilise wasm-pack pour convertir le code Rust en WebAssembly → exécutable sur le web
  • Utilise Web Audio API et HTML Canvas pour gérer l’audio et les graphismes
  • Utilise le stockage local → permet de conserver les données RAM des cartouches MBC avec batterie

Principales caractéristiques

  • Émulation CPU précise → réussite des tests CPU JSON
  • Émulation audio précise
  • Émulation graphique → utilisation d’un moteur de rendu basé sur les scanlines
  • Prise en charge de MBC1, MBC3, MBC5 et HuC1 → compatibilité avec diverses cartouches
  • Prise en charge du RTC (Real Time Clock) → permet le fonctionnement des jeux basés sur le temps sur les cartouches MBC3
  • Prise en charge des codes de triche GameShark et GameGenie
  • Les cartouches avec sauvegarde sur batterie peuvent stocker les données RAM dans le stockage local
  • Frontend web
    • React/TypeScript + Material UI
    • Prise en charge du mode plein écran
    • Mise en pause et reprise du jeu
    • Sélection entre mode monochrome et couleur
    • Prise en charge du remappage personnalisé des touches
    • Activation et gestion des codes de triche
    • Design responsive adapté au mobile

1 commentaires

 
GN⁺ 2025-03-22
Avis Hacker News
  • Ce projet est vraiment génial. Il y a quelques problèmes avec l’émulation audio, mais cela m’a fait repenser à l’émulation Game Boy pour la première fois depuis longtemps. Rust et WASM jouent un rôle majeur pour rendre visibles des applications qui étaient auparavant limitées à l’environnement desktop

    • J’ai implémenté un émulateur NES d’une manière similaire avec wasm-bindgen
    • C’est vraiment génial de faire du homebrew, de partager un lien et que ça fonctionne directement dans le navigateur
  • J’ai récemment acheté une console portable de jeux rétro sur Aliexpress pour 50 £. Elle peut faire tourner des jeux de la Game Boy jusqu’à la SNES et la PlayStation 1, avec un support partiel de la N64 et de la Dreamcast

    • Il existe de nombreuses options, et la qualité peut être en dessous des attentes, mais en voyage, quand on ne peut pas se permettre d’acheter une Steam Deck, c’est très satisfaisant
    • On peut installer divers firmwares personnalisés et applications
    • Attention aux problèmes de charge en USB-C, et je recommande d’acheter un petit chargeur peu puissant
  • Liste de liens et de documentation de support pour les personnes intéressées par le développement Game Boy

    • Gameboy Dev: lien
    • PanDocs (référence technique) : lien
    • Documentation de référence technique Gameboy (gekkio) : lien
    • Reboot du Game Boy Development Kit 2020 (GBDK-2020) : lien
    • GBDK-2020 Github : lien
    • Exemples GBDK-2020 : lien
    • Showcase GBDK (logiciels homebrew) : lien
    • Hub homebrew : lien
    • Image de couverture de l’album de Neil Young (Silver & Gold) réalisée avec une Gameboy Camera : lien
  • Les GB/GBC/GBA sont à l’équivalent de ce que VT102 est pour les logiciels à cellules de grille. La demoscene continue d’évoluer, et la chiptune adore toujours ce matériel

    • Écrire des logiciels pour la GBA ressemble à cibler un petit microcontrôleur ARM moderne
    • Il existe de nombreux émulateurs, chacun se concentrant sur des aspects différents
    • Ils offrent diverses fonctions : émulation parfaite, optimisation des performances, inspection mémoire, codes de triche, etc.
  • En tant qu’auteur original de l’émulateur, je suis surpris que ce petit projet hobby suscite autant d’intérêt. Merci pour le soutien

  • Je me souviens avoir appris, à 7 ans, à décompresser no$gbemulator pour jouer à Kirby et Final Fantasy Adventure sur le portable Windows 95 de mon père

  • C’est vraiment agréable de voir plus d’émulateurs Game Boy écrits en Rust. Les projets avec support navigateur sont particulièrement cool

    • Je développe une plateforme de jeux rétro basée sur le navigateur appelée afterplay.io
    • Elle prend en charge divers systèmes, fonctionne entièrement dans le navigateur et offre des save states, la synchronisation cloud et le support mobile via Capacitor
    • Il y a aussi des fonctionnalités amusantes comme le netplay, le support du câble link, la manipulation RTC et des contrôles tactiles personnalisables
  • C’est la première fois que je découvre un site web qu’on peut ajouter comme application Android. Comment cela s’appelle-t-il, et j’aimerais savoir comment transformer une application web en application installable

  • J’ai développé un émulateur GB similaire en Rust

    • Bibliothèque : lien
    • Backend web/wasm : lien
  • Cela me rappelle un projet similaire qu’un ami avait fait il y a 10 ans : lien