Skip to content

gbe v0.1.5

Choose a tag to compare

@ldechoux ldechoux released this 03 Oct 13:38
· 81 commits to main since this release
ce8c59e

Cette version rend gbe deux fois plus rapide et rend le son plus fidèle à la console : tous les tests son de référence passent désormais.

Nouveautés

Deux fois plus rapide

  • Émulation : le calcul d'une image prend en moyenne deux fois moins de temps qu'en v0.1.4, de 40 % à 64 % de moins selon le type de jeu. Les jeux tournent ainsi avec une large marge, même sur une machine modeste. L'avance rapide x8 d'un jeu Game Boy Color comme Zelda DX demande environ 4 ms par image affichée, contre 10 ms avant.
  • Rembobinage : un instantané de la console prend maintenant 20 µs, contre 60 µs, et revenir en arrière est trois fois plus rapide. Les deux ne réservent plus de mémoire à chaque fois, ce qui évite de petites saccades.
  • Affichage : la conversion de l'image en couleurs est trois à six fois plus rapide. Elle n'est plus refaite quand l'image n'a pas changé, par exemple avec le menu ouvert ou sur un écran 120 Hz.

Ces optimisations ne changent ni l'image ni le son : des tests vérifient qu'ils restent identiques au bit près.

Son plus fidèle

  • Durées des notes : comme sur la console, les durées, enveloppes et glissements de fréquence suivent maintenant le compteur DIV. Certaines notes s'arrêtaient un peu trop tôt ou trop tard.
  • Comportements de la puce son :
    • activer le compteur de durée d'un canal à certains moments le décompte une fois de plus ;
    • pendant que le canal 3 joue, sa mémoire d'onde n'est accessible que comme sur la vraie console, selon le modèle ;
    • sur Game Boy, redéclencher le canal 3 au mauvais moment altère sa mémoire d'onde ;
    • toujours sur Game Boy, les durées des canaux restent modifiables quand le son est coupé.
  • Tests de référence : gbe réussit les 23 tests son de blargg (dmg_sound et cgb_sound), contre 15 auparavant. Comparé image par image à SameBoy, un émulateur réputé pour sa précision, le son est identique en Game Boy Color.

Les différences sont discrètes : le volume ne change pas, seuls certains sons commencent ou s'arrêtent à un moment légèrement différent.

Corrections

  • Titre de la fenêtre : pour les jeux dont l'en-tête contient un code fabricant après le titre, comme Donkey Kong Country, le titre de la fenêtre était coupé et le nombre d'images par seconde n'apparaissait pas. Le nom des captures d'écran de ces jeux était aussi invalide.

Site du projet

La page https://ldechoux.github.io/gbe/ présente :

  • le lancement des ROMs en .zip ;
  • un écran titre pour chaque console ;
  • un carrousel qui alterne la Game Boy et la Game Boy Color ;
  • les touches de l'avance rapide et du rembobinage.

Fiabilité

  • ROM de test maison : une ROM écrite pour gbe reproduit la charge de différents types de jeux : jeu classique avec musique et 40 sprites, calcul intensif, jeu presque toujours en pause, effets Game Boy Color, son. Elle est libre de droits, donc testée à chaque modification, en Game Boy et en Game Boy Color : son image finale et son son ne doivent pas changer. Ses images sont identiques au pixel près à celles de SameBoy.
  • Tests : la couverture passe de 80 % à 81 %. Des tests vérifient au bit près le son, chaque image et l'état de la console sur cette ROM, les ROMs de test et quelques jeux.
  • Suivi des performances : chaque pull request reçoit un rapport qui compare ses performances à celles de la version de base. Le même rapport se lance à la main pour comparer deux versions quelconques, et automatiquement à chaque release : celle-ci est la première comparée à la précédente.

Mise à jour

Remplace simplement le binaire. Tes réglages, les sauvegardes (.sav) et les save states (.state) des versions précédentes sont conservés.

Le format des save states évolue : ceux créés avec la v0.1.5 ne se chargent pas dans une version précédente.

Changements complets : v0.1.4...v0.1.5