Skip to content

Releases: ldechoux/gbe

gbe v0.1.16

Choose a tag to compare

@ldechoux ldechoux released this 12 Oct 19:26
29e3a7d

Cette version place gbe sous licence Apache 2.0, et permet de vérifier chaque fichier téléchargé. Elle corrige aussi la webcam sous Windows.

Nouveautés

gbe est sous licence Apache 2.0

Jusqu'ici, gbe n'avait pas de licence. Il est maintenant distribué sous la licence Apache 2.0 : tu peux l'utiliser, le modifier et le redistribuer, en gardant sa licence et ses mentions.

Chaque fichier de la release contient maintenant, à côté de gbe :

  • LICENSE : la licence de gbe ;
  • NOTICE : ce que gbe reprend de l'émulateur SameBoy, sous licence MIT, à savoir les palettes de sa boot ROM Game Boy Color libre et le modèle du capteur de la Game Boy Camera ;
  • THIRD_PARTY_LICENSES.txt : les licences du code que gbe contient, celui de Go et des bibliothèques dont il dépend (Ebitengine, purego, Oto, zenity…).

Ces fichiers sont dans les archives, dans gbe.app (dossier Contents/Resources) et dans l'AppImage (dossier usr/share/doc/gbe).

Vérifier un téléchargement

  • Sommes de contrôle : gbe-v0.1.16-SHA256SUMS.txt, joint à la release, donne l'empreinte SHA-256 de chaque fichier. Pour vérifier ce que tu as téléchargé : sha256sum -c --ignore-missing gbe-v0.1.16-SHA256SUMS.txt, ou shasum -a 256 -c --ignore-missing … sous macOS.
  • Attestation de provenance : chaque archive, l'AppImage et l'image disque sont attestées par GitHub comme compilées par le workflow de release de gbe, depuis le commit de cette version. Pour le vérifier : gh attestation verify <fichier> --repo ldechoux/gbe.

Corrections

  • Webcam sous Windows : une webcam qui refusait le format d'image demandé par gbe s'ouvrait quand même, et gbe lisait mal ses images. gbe signale maintenant l'erreur avec la notification « Impossible d'ouvrir la webcam ». La webcam reste expérimentale sous Windows et sous Linux.

Site du projet

Le bas de la page https://ldechoux.github.io/gbe/ donne un lien vers la licence.

Fiabilité

  • Plus de vérifications à chaque modification :
    • staticcheck analyse le code pour macOS, Linux et Windows, et a trouvé le bug de la webcam Windows ci-dessus ;
    • les tests tournent aussi sous le détecteur de concurrence de Go, qui repère les accès simultanés à la même donnée par deux parties du programme, comme la webcam et le jeu ;
    • chaque bibliothèque utilisée doit avoir une licence.
  • Failles connues : govulncheck vérifie à chaque modification, et chaque semaine, que gbe n'utilise pas de code touché par une faille publiée. Il a déjà fait passer gbe à Go 1.27.2, qui corrige deux failles. Elles touchaient le générateur du site, pas l'émulateur.
  • Dépendances à jour : Dependabot propose chaque semaine les nouvelles versions des bibliothèques et des outils de compilation.

Mise à jour

Sur macOS, installe l'application depuis l'image disque ; sous Windows et Linux, remplace gbe.exe ou l'AppImage. Tes réglages, tes jeux récents, les sauvegardes (.sav) et les save states (.state) des versions précédentes sont conservés.

Le format des save states ne change pas : ceux créés avec la v0.1.15 se chargent aussi dans la v0.1.16.

Changements complets : v0.1.15...v0.1.16

gbe v0.1.15

Choose a tag to compare

@ldechoux ldechoux released this 11 Oct 15:11
7e5b97b

Cette version émule la Game Boy Camera : la cartouche photo de la Game Boy se lance, et sa caméra voit ta webcam ou l'image de ton choix.

Nouveautés

La Game Boy Camera

Jusqu'ici, gbe refusait la cartouche Game Boy Camera (Pocket Camera au Japon) avec le message « Cartouche non supportee (type 0xFC) ». Elle se lance maintenant, avec tout ce qu'elle fait sur la console :

  • Son capteur : la ROM règle elle-même l'exposition, la luminosité et le contraste, et trame l'image en 4 teintes, comme sur la vraie cartouche.
  • Ses 30 photos sont gardées dans le fichier .sav, comme les sauvegardes des autres jeux.

Ce que voit la caméra

Pendant une partie de Game Boy Camera, le menu Pause a une entrée de plus, « Camera... ». Sa page choisit ce que voit la caméra :

  • « Source < webcam > » : une webcam du système, choisie dans l'entrée « Webcam », par exemple celle d'un écran ou un iPhone en Continuity Camera sur Mac. « par defaut » prend celle du système. La webcam ne s'allume que pendant la partie, et s'éteint dès que tu changes de source ou de jeu.
  • « Source < image > » : une photo ou un dessin en PNG, JPEG, GIF ou WebP, choisi avec « Choisir une image... » ou simplement déposé sur la fenêtre pendant la partie. « Oublier l'image » la retire.
  • Sans webcam ni image, la caméra voit du bruit, comme un vrai capteur dans le noir.
  • « Miroir » retourne l'image de gauche à droite, pour les selfies.

gbe garde le milieu de l'image, au format du capteur (128×112 pixels), en niveaux de gris. Le bas de la page indique l'état de la webcam (« en marche », « ouverture... » ou « indisponible ») ou le nom de l'image.

La première fois, le système peut demander l'autorisation d'utiliser la caméra :

  • macOS : accepte la demande de macOS. Si tu l'as refusée, autorise gbe dans Réglages Système > Confidentialité et sécurité > Caméra.
  • Linux : il faut faire partie du groupe video, ce qui est en général déjà le cas.
  • Windows : le réglage « Autoriser les applications de bureau à accéder à votre caméra » doit être activé.

Sans autorisation, une notification l'indique, par exemple « Acces a la camera refuse (reglages du systeme) ».

Sous Linux et Windows, la webcam est encore expérimentale : elle n'a pas encore été essayée avec une vraie caméra sur ces systèmes, et la page Camera le rappelle. Les images fonctionnent partout.

Corrections

  • Écran d'accueil dans la plus petite fenêtre : en ×1 sur un écran sans HiDPI (160×144 pixels), le nom du jeu récent sélectionné et l'aide débordaient de la fenêtre. Les noms sont maintenant coupés à la largeur de la fenêtre, ou défilent quand ils sont sélectionnés, et l'aide passe à la ligne entre les mots.
  • Ligne de commande : une erreur, comme un filtre inconnu ou une ROM absente, s'affiche maintenant sous la forme gbe: …, sans la date et l'heure devant.

Site du projet

https://ldechoux.github.io/gbe/ a une section Game Boy Camera. On y voit l'image donnée à la caméra, la mascotte de gbe (un poussin au casque), à côté du viseur de la Game Boy Camera qui la regarde. Le menu du haut passe de 8 à 4 entrées : les sections Palettes, Game Boy Color, Grand écran et Game Boy Camera sont accessibles depuis un sommaire sous « Fonctionnalités », et les Crédits depuis le bas de la page.

Fiabilité

  • Tests de rendu : les menus, l'écran d'accueil et les filtres d'affichage sont dessinés par le vrai moteur graphique de gbe et comparés à des images de référence, sur Mac comme en CI sous Linux. Ils ont trouvé le débordement de l'écran d'accueil corrigé ci-dessus.
  • Couverture des tests : de 78,6 % à 88,8 % du code, avec un minimum par partie du programme, vérifié à chaque modification.
  • Webcam : en CI, gbe lit une caméra virtuelle sous Linux et liste les caméras sous Windows.

Mise à jour

Sur macOS, installe l'application depuis l'image disque ; sous Windows et Linux, remplace gbe.exe ou l'AppImage. Tes réglages, tes jeux récents, les sauvegardes (.sav) et les save states (.state) des versions précédentes sont conservés.

Le format des save states ne change pas : ceux créés avec la v0.1.14 se chargent aussi dans la v0.1.15.

Changements complets : v0.1.14...v0.1.15

gbe v0.1.14

Choose a tag to compare

@ldechoux ldechoux released this 10 Oct 19:07
a36485f

Cette version permet de choisir le dossier de tes jeux et de les lancer depuis le menu, avec une liste qui défile, pratique à la manette sur une TV. Elle change aussi les réglages par défaut du son et des vibrations, et corrige un son coupé au lancement.

Nouveautés

Tous tes jeux dans le menu

Jusqu'ici, on lançait un jeu en déposant sa ROM sur la fenêtre, ou parmi les 5 derniers jeux. Tu peux maintenant indiquer le dossier où sont tes ROM : gbe y trouve tous les jeux (.gb, .gbc et .zip), ceux des sous-dossiers compris, et les liste dans le menu.

  • Page « Jeux... » : elle remplace « Jeux recents... » dans le menu Pause, avec deux onglets qu'on change avec ←/→ :
    • Recents : les 5 derniers jeux lancés, comme avant ;
    • Tous : tous les jeux du dossier, par ordre alphabétique, avec leur nombre, par exemple « Tous (248) ».
  • Une liste faite pour être longue :
    • une barre de défilement, à droite, montre où tu es dans la liste ;
    • un nom trop long défile quand il est en surbrillance, en repartant de son début ;
    • le bas de la page donne le rang du jeu (« 38/248 »), son sous-dossier et la date de son save state ;
    • le jeu en cours est marqué « (en cours) », et la liste se rouvre sur le dernier jeu choisi.
  • Aller vite :
    • ↑/↓ maintenu accélère au bout d'une seconde, puis encore au bout de deux ;
    • Page préc./Page suiv. (L/R à la manette) avancent d'une page ;
    • une lettre tapée va au prochain jeu qui commence par elle, quelle que soit la disposition du clavier (AZERTY compris).
  • Écran d'accueil : sous les derniers jeux, « Tous les jeux (248)... » ouvre directement la liste complète, et B ou Échap ramène à l'accueil. L'entrée est grisée tant que le dossier n'a aucun jeu.
  • Les noms des jeux sont maintenant leurs noms de fichier, partout, derniers jeux compris : « Pokemon Pinball (Europe) » au lieu de « POKEMONPINB ». Les collections habituelles distinguent ainsi les versions d'un même jeu, ce que le titre de la cartouche ne fait pas.

Page « Dossiers... »

La page « Boot ROM... » du menu Pause devient « Dossiers... », avec deux onglets :

  • Jeux : « Choisir le dossier... » ouvre la fenêtre de sélection de dossier du système. La page indique combien de jeux ont été trouvés, et « Oublier le dossier » l'oublie. Un dossier sans jeu est gardé, avec un message.
  • Boot ROM : l'ancienne page, sans changement.

Un dossier déposé sur la fenêtre va dans l'onglet affiché. C'est la solution sous Linux quand aucun outil de dialogue (zenity, qarma ou matedialog) n'est installé.

Nouveaux réglages par défaut

Au premier lancement :

Réglage Avant Maintenant
Volume 80 % 50 %
Vibrations cartouches Rumble non
Intensité des vibrations 80 % (le plus fort) 60 % (le milieu du curseur)

« Retablir par defaut », dans l'onglet Manette, remet aussi les vibrations sur « non », au milieu du curseur. Tes réglages actuels sont conservés.

Corrections

  • Son coupé au lancement : un fichier de réglages sans volume, écrit à la main ou par une ancienne version, démarrait avec le son coupé. Il démarre maintenant au volume par défaut, 50 %.
  • Textes qui défilent : un nom de dossier trop long, en bas de la page Dossiers, attend maintenant 0,75 s avant de défiler, au lieu de 1,5 s.

Site du projet

https://ldechoux.github.io/gbe/ est mieux décrit aux moteurs de recherche, et un lien vers le site partagé sur Discord, Reddit ou Mastodon s'affiche avec une image : les écrans titres de Super Mario Land et de Zelda: Link's Awakening DX dans leurs consoles. Ses captures montrent le nouvel écran d'accueil et les nouvelles entrées du menu.

Fiabilité

  • Rembobinage et save states plus rapides : une sauvegarde de la console pour le rembobinage prend environ 5 fois moins de temps (de 23 à 4,6 µs sur un Mac M1 Max, −79 % sur la machine des tests), et charger un save state 3 fois moins (de 1,3 à 0,45 ms). Les fichiers sont identiques octet pour octet.
  • Ebitengine 2.10.5 : la dernière version du moteur de gbe, qui corrige quelques bugs de son affichage de texte et de formes.

Mise à jour

Sur macOS, installe l'application depuis l'image disque ; sous Windows et Linux, remplace gbe.exe ou l'AppImage. Tes réglages, tes jeux récents, les sauvegardes (.sav) et les save states (.state) des versions précédentes sont conservés. Les nouveaux réglages par défaut ne s'appliquent qu'au premier lancement : ton volume et tes vibrations restent ceux que tu avais choisis.

Le format des save states ne change pas : ceux créés avec la v0.1.13 se chargent aussi dans la v0.1.14.

Changements complets : v0.1.13...v0.1.14

gbe v0.1.13

Choose a tag to compare

@ldechoux ldechoux released this 10 Oct 12:15
85f8214

Cette version rend les vibrations de tous les jeux beaucoup plus justes : gbe distingue maintenant la musique des bruitages, et regarde aussi l'écran qui tremble ou qui flashe.

Nouveautés

Des vibrations de tous les jeux plus justes

Avec la valeur « tous les jeux » de l'entrée « Vibrations » (onglet Manette de la page Contrôles), gbe fait vibrer les jeux qui n'ont pas de cartouche à moteur. Il devine leurs chocs. Jusqu'ici, il reprenait la méthode de SameBoy, qui regarde une fois par image le niveau du son : la grosse caisse d'une musique vibrait comme une explosion, un saut comme une chute, et un son très bref pouvait passer inaperçu.

gbe suit maintenant chaque note au moment où le jeu la joue :

  • La musique est écartée : elle revient en rythme, rejoue sans cesse les mêmes instruments, et vient souvent d'une autre partie du jeu que les bruitages. La musique de Tetris ou de Zelda ne fait pas vibrer.
  • Seuls les chocs vibrent : un bruit grave, fort et long (explosion, impact, tonnerre), ou un son qui glisse vite et fort (un ennemi écrasé, une chute). Dans Super Mario Land, écraser un ennemi, casser une brique ou être touché fait vibrer, mais pas sauter ni prendre un champignon.
  • Chaque choc donne une secousse franche, ressentie même quand le son est très bref, qui s'éteint avec lui. Une note répétée à chaque image ne fait que bourdonner, et ne vibre pas.

L'écran compte aussi

  • Tremblement : quand l'écran tremble, la manette vibre, même sans bruitage. C'est le cas quand Wario est touché dans Wario Land 3, pendant un combat de boss de Kirby's Dream Land 2 ou dans Mega Man Xtreme 2.
  • Flash : quand l'écran flashe, le choc entendu au même moment vibre plus fort, comme le tonnerre de l'orage au début de Zelda: Link's Awakening DX. Un flash seul ne fait jamais vibrer, car les menus flashent aussi.

Réglé au ressenti

Les réglages viennent de parties enregistrées sur onze jeux : Donkey Kong Country, Kirby's Dream Land 2, Mega Man Xtreme 2, R-Type DX, Street Fighter Alpha, Super Mario Land, Tetris, Tetris DX, Wario Land 3, et Zelda: Link's Awakening et sa version DX. Chaque passage a été rejoué avec deux réglages, dans un ordre tiré au hasard, et comparé manette en main. Si la manette vibre trop fort à ton goût, baisse le curseur « Intensite » de l'onglet Manette.

Cette fonctionnalité reste expérimentale : gbe devine les chocs, ce qui ne marche pas aussi bien dans tous les jeux, et son réglage peut encore évoluer. Les cartouches à moteur, comme Pokémon Pinball, vibrent toujours avec leur vrai moteur.

Site du projet

La page https://ldechoux.github.io/gbe/ précise que les vibrations des jeux sans moteur sont devinées d'après les bruitages et l'écran, et qu'elles sont encore expérimentales.

Mise à jour

Sur macOS, installe l'application depuis l'image disque ; sous Windows et Linux, remplace gbe.exe ou l'AppImage. Tes réglages, tes jeux récents, les sauvegardes (.sav) et les save states (.state) des versions précédentes sont conservés. Le réglage « Vibrations » garde sa valeur : choisis « tous les jeux » pour essayer les nouvelles vibrations.

Le format des save states ne change pas : ceux créés avec la v0.1.12 se chargent aussi dans la v0.1.13.

Changements complets : v0.1.12...v0.1.13

gbe v0.1.12

Choose a tag to compare

@ldechoux ldechoux released this 09 Oct 08:46
5dc7e85

Cette version fait vibrer la manette dans tous les jeux, même ceux qui n'ont pas de cartouche à moteur, avec une intensité réglable. Elle permet aussi de choisir le dossier des boot ROM depuis le menu, et l'émulation est nettement plus rapide.

Nouveautés

Des vibrations dans tous les jeux

Jusqu'ici, seules les cartouches à moteur (Pokémon Pinball, Perfect Dark…) faisaient vibrer la manette. Comme SameBoy, gbe peut maintenant faire vibrer les autres jeux en devinant les chocs d'après le son joué :

  • Explosions et impacts : un bruit grave et fort fait vibrer, d'autant plus que le son est fort, et la vibration s'éteint avec lui.
  • Tirs et chutes : un son dont la note glisse très vite fait vibrer, moins fort.
  • La musique ne fait pas vibrer, sauf parfois une percussion grave.

L'entrée « Vibrations » de l'onglet Manette (page Contrôles) choisit quand la manette vibre :

Valeur Effet
non Jamais
cartouches Rumble (par défaut) Seulement avec les cartouches à moteur, comme avant
tous les jeux Aussi dans les autres jeux, d'après leurs sons

Un essai d'une minute sur Zelda: Link's Awakening DX et Super Mario Land donne quelques secousses brèves aux bons moments, et aucune pendant la musique de Zelda ou de Tetris.

Intensité des vibrations

Sous « Vibrations », l'entrée « Intensite » est un curseur : ←/→ le déplacent, du plus doux au plus fort, en 9 crans. Valide sur le curseur (A ou Entrée) pour sentir l'intensité choisie : la manette vibre une demi-seconde, comme avec « Tester la vibration ». Le curseur est grisé quand les vibrations sont sur « non », et « Retablir par defaut » le remet au plus fort.

Le réglage le plus fort vibre un peu moins qu'avant : 80 % de la force de la manette, au lieu de 100 %.

Dossier des boot ROM dans le menu

Plus besoin de placer les boot ROM dans un dossier bios caché : la nouvelle page « Boot ROM... » du menu Pause, sous « Son... », permet de choisir leur dossier.

  • Choisir le dossier... ouvre la fenêtre de sélection de dossier du système, sur macOS, Windows et Linux.
  • Glisser-déposer : un dossier déposé sur la fenêtre pendant que la page est ouverte est aussi choisi. C'est la solution sous Linux quand aucun outil de dialogue (zenity, qarma ou matedialog) n'est installé.
  • Game Boy / Game Boy Color : la page indique si gb_bios.bin et gbc_bios.bin sont trouvées ou absentes. Un dossier sans boot ROM est gardé, avec un message.
  • Recherche auto oublie le dossier choisi et revient aux dossiers bios habituels.
  • Le dossier choisi s'affiche en bas de la page, et défile s'il est trop long. Pendant une partie, il s'applique à la prochaine réinitialisation.

Le dossier choisi passe avant les dossiers bios cherchés automatiquement. L'option -bios reste prioritaire.

Plus rapide

Le cœur de l'émulateur fait moins de travail inutile, avec une image et un son identiques au bit près. En moyenne, une image s'émule 26 % plus vite qu'avec la v0.1.11 (mesuré sur un Mac M1 Max) :

  • Console en attente : quand le jeu attend l'image suivante, ce qui arrive souvent dans les menus et les scènes calmes, gbe saute d'un coup les cycles où rien ne se passe. Ces scènes s'émulent jusqu'à 2 fois plus vite.
  • Son : les voies muettes ne réveillent plus le processeur sonore à chaque cycle.
  • Affichage : les pixels sont décodés par rangées de 8, et les lignes sans sprites sont recopiées directement.
Jeu Temps par image Gain
Zelda: Link's Awakening 334 → 285 µs −15 %
Zelda: Link's Awakening DX 507 → 419 µs −17 %
Super Mario Land 399 → 336 µs −16 %

Le jeu reste à 60 images par seconde : le gain sert surtout à l'avance rapide, à l'autonomie des portables et aux petites machines.

Site du projet

La page https://ldechoux.github.io/gbe/ présente le dossier des boot ROM choisi dans le menu, et les vibrations dans tous les jeux avec leur intensité réglable. Ses captures du menu Pause montrent la nouvelle entrée « Boot ROM... ».

Mise à jour

Sur macOS, installe l'application depuis l'image disque ; sous Windows et Linux, remplace gbe.exe ou l'AppImage. Tes réglages, tes jeux récents, les sauvegardes (.sav) et les save states (.state) des versions précédentes sont conservés. Les vibrations gardent ton choix : activées, elles restent sur « cartouches Rumble », désactivées sur « non ».

Le format des save states ne change pas : ceux créés avec la v0.1.11 se chargent aussi dans la v0.1.12.

Changements complets : v0.1.11...v0.1.12

gbe v0.1.11

Choose a tag to compare

@ldechoux ldechoux released this 07 Oct 16:26
baac145

Cette version fait de gbe une vraie application, avec son icône, qui s'installe et se lance d'un double-clic : gbe.app sur macOS, gbe.exe sous Windows, une AppImage sous Linux. Elle adoucit aussi la grille du filtre LCD en Game Boy Color.

Nouveautés

Une application pour chaque système

Plus besoin du terminal : on télécharge gbe, on l'ouvre, et on dépose une ROM sur sa fenêtre.

Système Fichier Installation
macOS gbe-v0.1.11-macos-universal.dmg Ouvre l'image disque et glisse gbe dans Applications. Une seule application pour les Mac Intel et Apple Silicon
Windows gbe-v0.1.11-windows-amd64.zip (ou arm64) Décompresse l'archive et double-clique sur gbe.exe
Linux gbe-v0.1.11-linux-amd64.AppImage (ou arm64) Rends le fichier exécutable (Propriétés > Permissions, ou chmod +x), puis double-clique dessus

gbe n'est signé ni par Apple ni par Microsoft, faute de compte développeur payant. Le premier lancement demande donc une confirmation :

  • macOS : macOS refuse d'abord d'ouvrir gbe. Ferme le message, ouvre Réglages Système > Confidentialité et sécurité, puis clique sur « Ouvrir quand même » en face de gbe et confirme. En variante, dans un terminal : xattr -dr com.apple.quarantine /Applications/gbe.app.
  • Windows : si SmartScreen affiche « Windows a protégé votre ordinateur », clique sur « Informations complémentaires », puis sur « Exécuter quand même ».

Les lancements suivants se font normalement. Les archives du binaire seul restent disponibles pour les six systèmes, pour le lancer depuis un terminal. Sous Linux, elles contiennent aussi gbe.desktop et gbe.png, pour installer l'entrée de menu à la main.

Une icône

gbe a maintenant une icône : une Game Boy en pixel art, un petit paysage à l'écran, sur une tuile magenta, la couleur des boutons A et B de la console. Elle s'affiche dans le Dock et le Finder sur macOS, sur gbe.exe dans l'Explorateur, sur l'AppImage, et, sous Windows et Linux, dans la barre de titre et la barre des tâches. Le site du projet a un favicon assorti.

Lancé sans terminal

Ouverte depuis le Finder ou l'Explorateur, l'application ne part pas du dossier où sont tes fichiers, et n'a pas de terminal pour afficher ses messages. gbe s'y adapte :

  • Boot ROM : gbe cherche gb_bios.bin et gbc_bios.bin dans un dossier bios, d'abord dans le dossier courant comme avant, puis dans le dossier de configuration, puis à côté de l'exécutable. Le dossier de configuration est trouvé quel que soit l'endroit d'où gbe est lancé : ~/Library/Application Support/gbe/bios sur macOS, %AppData%\gbe\bios sous Windows, ~/.config/gbe/bios sous Linux.
  • ROM introuvable : une ROM passée en argument qui ne s'ouvre pas ne fait plus quitter gbe sans rien dire. La fenêtre s'ouvre sur l'écran d'accueil avec le message, comme pour une ROM déposée, par exemple « Lecture impossible: Tetris.gb ».
  • Journal : gbe écrit ses messages dans gbe.log, dans le dossier de configuration. Le fichier repart de zéro à chaque lancement : c'est la trace à regarder si quelque chose ne va pas.

Filtre LCD plus doux en Game Boy Color

En Game Boy Color, la grille du filtre LCD (l'entrée « Filtre » de la page Affichage, ou -filter lcd) était trop marquée. Elle est deux fois plus discrète : les bandes rouge, verte et bleue de chaque point font varier la luminosité de 6 % au lieu de 12 %, et l'interstice entre les points n'est plus que 10 % plus sombre, au lieu de 20 %. L'image garde la même luminosité, et la grille reste visible sur les grands aplats, en plein écran. En Game Boy, le filtre ne change pas.

Site du projet

La page https://ldechoux.github.io/gbe/ :

  • propose l'application en premier dans les téléchargements : « Application » pour macOS, « AppImage » pour Linux, avec la procédure du premier lancement ;
  • commence son démarrage rapide par l'application qu'on ouvre et où l'on dépose une ROM, le terminal venant ensuite ;
  • a des textes plus clairs, avec moins de termes techniques, et dit où vont les captures d'écran (dossier Images/gbe) et les boot ROM. La capture d'écran (Cmd+F2, Ctrl+F2 sous Windows et Linux) rejoint le tableau des contrôles ;
  • montre les captures en Game Boy Color avec la nouvelle grille LCD.

Mise à jour

Sur macOS, installe l'application depuis l'image disque ; sous Windows et Linux, remplace l'ancien binaire par le nouveau gbe.exe ou par l'AppImage. Tes réglages, tes jeux récents, les sauvegardes (.sav) et les save states (.state) des versions précédentes sont conservés : l'application les retrouve aux mêmes endroits. Si tes boot ROM sont dans un dossier bios du dossier d'où tu lançais gbe en ligne de commande, copie-les dans le dossier bios du dossier de configuration pour que l'application les trouve.

Le format des save states ne change pas : ceux créés avec la v0.1.10 se chargent aussi dans la v0.1.11.

Changements complets : v0.1.10...v0.1.11

gbe v0.1.10

Choose a tag to compare

@ldechoux ldechoux released this 06 Oct 21:38
63d6879

Cette version est consacrée au son : il est plus propre, sans sifflements parasites dans les aigus, une nouvelle page Son l'adapte au casque, à une seule enceinte ou au goût de chacun, et les menus font maintenant des bruitages à la façon de la Game Boy.

Nouveautés

Un son plus propre

Les ondes carrées de la Game Boy ont des harmoniques bien au-delà de ce qu'un son à 48 kHz peut contenir. Jusqu'ici, celles qui dépassaient se repliaient dans l'audible : des sifflements et des notes parasites, qui ne suivent pas la mélodie, surtout sur les notes aiguës, les arpèges rapides et les bruitages.

  • Sans repliement : chaque changement de niveau d'une voie est maintenant placé à son instant exact et adouci, comme le font les émulateurs de référence. Sur une note aiguë, ce qu'on entend entre les harmoniques passe de 26 dB à 70 dB sous la note.
  • Fidèle : le son reste plein jusqu'à 15 kHz. Comparé à SameBoy sur six jeux Game Boy et Game Boy Color (Super Mario Land, Tetris, Zelda: Link's Awakening et sa version DX, Wario Land 3, Donkey Kong Country), l'équilibre des graves et des médiums est le même à 0,5 dB près.

Page Son

L'entrée « Volume » du menu Pause devient « Son... », une page qui regroupe le volume et trois nouveaux réglages. En bas de la page, une phrase explique la valeur sélectionnée.

Entrée Valeur Effet
Sortie stereo (défaut) Les deux côtés comme la console les mixe
casque Chaque oreille entend un peu l'autre côté, adouci et légèrement en retard, comme avec des enceintes dans une pièce. Beaucoup de jeux jouent une voie d'un seul côté, ce qui fatigue vite au casque. Un son au centre ne change pas
mono Les deux côtés mélangés, pour une seule enceinte
Filtre aucun (défaut) Le son de la console, sans retouche
doux Aigus un peu adoucis
chaud Son plus rond, aigus nettement adoucis
haut-parleur Le petit haut-parleur de la console : mono, sans graves ni aigus. L'entrée Sortie est alors grisée
Bruitages oui (défaut) ou non Les sons des menus, voir ci-dessous

Les options -stereo (stereo, headphones ou mono) et -audio-filter (off, soft, warm ou speaker) remplacent ces réglages au lancement.

Bruitages des menus

Les menus et la liste des jeux récents de l'écran d'accueil font de petits sons, synthétisés comme sur la console : ondes carrées, et la voie wave pour un son plus rond.

  • Déplacement : un tic aigu et très bref, avec ↑/↓ ou entre les onglets Clavier et Manette.
  • Changement d'un réglage : un tic un peu plus grave, avec ←/→, ou quand une touche est assignée.
  • Entrée : deux notes douces et montantes, quand une page s'ouvre, qu'un jeu se lance ou qu'un choix est fait.
  • Retour : deux notes descendantes, avec Retour, Échap ou à la fermeture du menu.
  • Refus : un tic grave, sur une entrée grisée ou un réglage déjà au bout (échelle ×8, volume 100 %).

Ils suivent le volume, et l'entrée « Bruitages » de la page Son les coupe.

Corrections

  • Titres des jeux Game Boy Color : sur certaines cartouches, la fin du titre était suivie d'un code du fabricant. Pokémon Pinball s'appelait « POKEMONPINBVPHP » dans le titre de la fenêtre, les noms des captures d'écran et les jeux récents. Il s'appelle maintenant « POKEMONPINB », comme le prévoit sa cartouche. Alone in the Dark: The New Nightmare et Zelda: Oracle of Ages sont aussi concernés. Un jeu déjà dans les jeux récents est renommé la prochaine fois qu'il est lancé.
  • Capture d'écran sur l'écran d'accueil : Cmd+F2 (Ctrl+F2 hors macOS) ne faisait rien tant qu'aucune ROM n'était chargée. Elle enregistre maintenant l'écran d'accueil, menu compris s'il est ouvert, sous le nom gbe-<date>.png.

Site du projet

La page https://ldechoux.github.io/gbe/ :

  • montre l'écran d'accueil dans le démarrage rapide, et un titre « Contrôles » sépare le tableau des touches ;
  • présente la page Son dans la carte « Son stéréo » ;
  • a de nouvelles captures du menu Pause, et la capture de la palette Sépia montrait par erreur la palette Ambre ;
  • sur téléphone, replie son menu derrière un bouton « Menu », dans une barre fine qui reste en haut de l'écran.

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 volume se règle maintenant dans la page Son, et les nouveaux réglages commencent sur leur valeur par défaut : sortie stéréo, aucun filtre, bruitages activés.

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

Changements complets : v0.1.9...v0.1.10

gbe v0.1.9

Choose a tag to compare

@ldechoux ldechoux released this 04 Oct 18:47
9a5e8f6

Cette version permet de lancer un jeu en déposant sa ROM sur la fenêtre, de relancer les derniers jeux au clavier ou à la manette, et de jouer sur la TV avec une Apple TV. Elle corrige aussi un plantage lors du passage en plein écran.

Nouveautés

Glisser-déposer une ROM

gbe n'a plus besoin de la ligne de commande : il suffit de déposer une ROM (.gb, .gbc ou .zip) sur sa fenêtre.

  • Sans ROM : lancé sans argument, ou par un double-clic sur le binaire, gbe affiche un écran d'accueil. Une cartouche en pixel art, sous une flèche qui rebondit, invite à déposer une ROM. Elle prend les couleurs de la palette, que P change aussi sur cet écran. Le jeu déposé démarre aussitôt. Le menu (Échap, ou Start+Select à la manette) reste disponible pour régler l'affichage, les contrôles et la langue.
  • Pendant une partie : la page « Nouveau jeu » propose « Lancer » le jeu déposé ou « Continuer a jouer ». Avant de changer de jeu, la partie en cours est sauvegardée comme en quittant (save state et sauvegarde de la cartouche) : tu la retrouves en rouvrant ce jeu, qui propose de reprendre la partie.
  • Sauvegardes : celles d'un jeu déposé sont enregistrées à côté de sa ROM, comme en ligne de commande. Les options -model et -bios s'appliquent aussi aux jeux déposés.
  • Erreurs : un fichier qui ne peut pas être lancé est signalé par un message, et la partie en cours continue. Par exemple « Fichier non supporte: notes.txt (.gb, .gbc ou .zip) », un dossier, une archive sans ROM, ou une cartouche non supportée, avec son type (« Cartouche non supportee (type 0x22) »).

Jeux récents

gbe retient les 5 derniers jeux lancés, que ce soit en ligne de commande, en déposant leur ROM ou depuis cette liste.

  • Sur l'écran d'accueil : la liste s'affiche sous l'invitation. ↑/↓ (ou la croix) choisissent un jeu, et Entrée (ou A) le lance.
  • Dans le menu Pause : la nouvelle page « Jeux récents... » relance l'un d'eux. La partie en cours est d'abord sauvegardée, et le jeu en cours est marqué « (en cours) ».
  • Jeux introuvables : un jeu dont le fichier a disparu est retiré de la liste.

C'est pratique à la manette, sur une TV, où l'on ne peut pas déposer de fichier.

Jouer sur la TV

Sur Mac, une Apple TV devient un second écran : dans le Centre de contrôle, « Recopie de l'écran », en mode « Utiliser comme écran séparé ». Le son suit, et le retard reste assez faible pour jouer. Deux nouvelles entrées de la page Affichage s'en servent :

  • Écran : envoie la fenêtre, ou le plein écran, sur un autre écran, comme l'Apple TV ou une TV branchée en HDMI. L'entrée n'apparaît qu'avec au moins deux écrans. gbe s'en souvient, et se rouvre sur cet écran au lancement suivant, ou sur l'écran principal s'il n'est plus là.
  • Mode : passe du plein écran à la fenêtre, comme F11, mais aussi à la manette.

Menu en petite fenêtre

À l'échelle ×1, le menu ne tenait plus dans la fenêtre : la page Contrôles débordait, et rien ne tenait sur un écran non Retina. Quand il ne tient pas, le menu se compacte : lignes plus serrées, entrées qui défilent autour de la sélection (de petites flèches signalent la suite), et textes trop longs raccourcis ou passés à la ligne. Aux autres échelles, il ne change pas.

Corrections

  • Plein écran sur macOS : passer du plein écran à la fenêtre tout en changeant l'échelle pouvait faire planter gbe, ou faire défiler sans fin la valeur sélectionnée du menu, l'entrée « Mode » basculant alors sans arrêt. La bascule est une animation d'environ une demi-seconde, pendant laquelle macOS peut perdre le relâchement d'une touche. gbe attend maintenant la fin de cette animation : pendant une seconde, une nouvelle bascule est ignorée, et l'échelle choisie en plein écran s'applique au retour en mode fenêtré. Les touches enfoncées pendant la bascule sont ignorées jusqu'à leur relâchement : juste après une bascule, la première pression d'une flèche peut ne rien faire. L'entrée « Mode » ne montre plus brièvement l'ancienne valeur pendant l'animation.

Site du projet

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

  • le glisser-déposer et les jeux récents, dans la carte Cartouches et le démarrage rapide ;
  • une section « Sur la TV, sans câble », avec l'Apple TV ;
  • une section Crédits, qui remercie les projets sur lesquels gbe s'appuie : Ebitengine, Go, SameBoy, BGB, higan, les algorithmes des filtres, les ROMs de test et RGBDS.

Les notes de version n'y détaillent plus que les trois dernières versions, les précédentes ayant un lien vers GitHub. Les liens qui quittent le site s'ouvrent dans un nouvel onglet.

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. La liste des jeux récents commence vide et se remplit au fil des jeux lancés.

Le format des save states ne change pas : ceux créés avec la v0.1.9 se chargent aussi dans la v0.1.8.

Changements complets : v0.1.8...v0.1.9

gbe v0.1.8

Choose a tag to compare

@ldechoux ldechoux released this 04 Oct 11:37
0c73c8a

Cette version rend la rémanence stable et fidèle à l'écran LCD de la console, sur le modèle de l'émulateur SameBoy. Elle n'est plus expérimentale.

Nouveautés

Une rémanence stable et fidèle

L'écran LCD de la Game Boy était lent à réagir : chaque image restait visible pendant la suivante. Certains jeux s'en servaient pour rendre des sprites transparents en les faisant clignoter d'une image à l'autre. L'entrée « Rémanence » de la page Affichage imite cet effet.

  • Plus de scintillement : jusqu'ici, un sprite qui clignotait redevenait plein par moments, et ne paraissait plus transparent du tout en avance rapide x4. Chaque image est maintenant mélangée avec celle qui la précède vraiment : le sprite reste transparent et stable, à vitesse normale comme en avance rapide.
  • Deux modes : l'entrée « Rémanence » passe de oui/non à « non », « simple » et « fidèle ».
    • simple : l'image et la précédente à parts égales ;
    • fidèle : les poids alternent d'une ligne à l'autre (un tiers, deux tiers), et l'ordre s'inverse à chaque image, comme sur l'écran LCD. C'est le mode « Accurate » de SameBoy.
  • Couleurs justes : le mélange se fait en lumière linéaire, comme dans SameBoy. Les sprites transparents ne paraissent plus trop sombres.
  • Avec tous les filtres : le mélange se fait après le filtre d'affichage, si bien que Scale2x, Scale3x et MMPX travaillent sur des images nettes.
  • Sans fantôme parasite : après un rembobinage, le chargement d'un save state ou une réinitialisation, l'image n'est jamais mélangée avec une image d'avant.

Comme sur l'écran d'origine, les éléments en mouvement laissent un léger halo.

Affichage plus rapide

La conversion de l'image d'un jeu Game Boy Color, faite à chaque image, est environ 15 % plus rapide : de 10,4 à 8,8 µs sur les machines de test de GitHub, et de 9,0 à 7,2 µs sur un Mac M1 Max. Le rendu est identique, pixel pour pixel.

Site du projet

La page https://ldechoux.github.io/gbe/ présente les deux modes de rémanence.

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. Si tu avais activé la rémanence, elle passe en mode « simple ».

Le format des save states ne change pas : ceux créés avec la v0.1.8 se chargent aussi dans la v0.1.7.

Changements complets : v0.1.7...v0.1.8

gbe v0.1.7

Choose a tag to compare

@ldechoux ldechoux released this 04 Oct 10:17
70a8701

Cette version réorganise le menu autour d'une nouvelle page Affichage, et les captures d'écran montrent le menu quand il est ouvert. Le site présente maintenant les filtres d'affichage et les vibrations.

Nouveautés

Une page Affichage dans le menu

Le menu Pause passe de 14 à 10 entrées. Les réglages de l'image quittent la page principale pour une nouvelle page Affichage, qui s'ouvre comme la page Contrôles :

  • Ce qu'elle regroupe : la palette (ou la correction des couleurs dans un jeu Game Boy Color), « Coloriser », l'échelle de la fenêtre, le filtre d'affichage et la rémanence.
  • Navigation : Entrée sur « Affichage... » ouvre la page, et ←/→ changent les valeurs. Échap, B à la manette ou « Retour » ramènent au menu Pause, sur « Affichage... ».
  • Coloriser : l'entrée n'apparaît toujours que pour les jeux Game Boy lancés sans -model. Après un changement, le bas des deux pages rappelle de réinitialiser la console, et « Réinitialiser » reste sur la page principale.
  • Raccourcis : en jeu, P change toujours la palette sans ouvrir le menu, et F11 passe en plein écran.

La page principale garde Reprendre, Affichage..., Contrôles..., le volume, la vitesse de l'avance rapide, la langue, les save states, Réinitialiser et Quitter.

Captures d'écran avec le menu

Quand le menu est ouvert, la capture d'écran (Cmd+F2, Ctrl+F2 hors macOS) le montre maintenant par-dessus le jeu, quelle que soit sa page, écran de reprise de partie compris. Les notifications restent hors de la capture.

La taille du texte du menu suit celle de la capture : en échelle ×4 (640×576), il est petit ; en ×8 (1280×1152), il est trois fois plus grand et bien lisible. Monte l'échelle dans la page Affichage avant de capturer le menu.

Site du projet

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

  • une section Grand écran sur les filtres d'affichage : des détails de la grille LCD en 4K, sur Game Boy Color et sur Game Boy, et une comparaison des filtres Pixels entiers, Scale2x, Scale3x et MMPX ;
  • les vibrations des manettes avec les cartouches à moteur, et l'interface en français et en anglais ;
  • de nouvelles captures, faites avec gbe lui-même à l'échelle ×8 et avec le filtre LCD, qui montrent le nouveau menu.

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 ne change pas : ceux créés avec la v0.1.7 se chargent aussi dans la v0.1.6.

Changements complets : v0.1.6...v0.1.7