Le projet Gameboy sur Smartphone est une interface web écrite en HTML5 et JavaScript natif permettant de jouer à des jeux Gameboy & Gameboy-Color via le navigateur de son Smartphone. N’hésitez pas à tester : gameboy.montrezvous.net
Cette interface tactile possède un sélecteur de Jeu, des Boutons de Sauvegarde/Restauration Actifs en Temps Réel, Pause, Volume et Vitesse d’émulation.
Le retour d’expérience est multiple :
– Étudier la Transition Boutons => Écran tactile d’un appareil que tout le monde connait: la Gameboy Color.
– Tenter d’Ajouter des Options d’Ergonomie au Joueur sur son Smartphone : un Système de Sauvegarde, le Réglage de la vitesse et un Vrai Bouton Pause.
Transition Boutons => Clics sur Écran Tactile
En HTML5, les Boutons sont des Zones Délimitées dont l’interaction (clic ou pression du doigt) est surveillée en JavaScript en temps réel.
L’écran est un Canvas HTML5, Actualisé en Temps Réel par cet émulateur JS.
Retour d’expérience d’intégration web
Positive
Le Retour d’Expérience en Tant qu’Intégration WEB de ce Projet est Positif
Toutes les interactions des Boutons Natifs à la Gameboy fonctionnent
Les Boutons de Sauvegarde, Pause, Volume et Vitesse Marchent également
Négative
Le Seul Bémol de mon Interface Gameboy sur Smartphone est l’Impossibilité d’Appuyer sur Haut + Droite en Même Temps;
Notre Pouce Gauche, n’a pas la faculté de se dupliquer…
Pour combler ce manque dans une prochaine version, il faudrait ajouter 5 boutons : (Haut-Gauche & Haut-Droite & Bas-Gauche & Bas-Droite & A-B) disposés entre les boutons actuels HTML5 de cet interface graphique, et connectés à l’émulateur JS.

La Sauvegarde/Restauration de FreezeStates
Cette interface web dispose d’un système de Sauvegarde instantanées pour 8 petits jeux, ou un seul grand jeu, selon la taille nécessaire au jeu (Cartridge_Type). Les sauvegardes se réalisent dans le cookie du navigateur web.
J’ai appris de ce projet que tous les jeux Gameboy n’ont pas la la même taille ni la même gestion des sauvegardes, pour cette raison j’ai ajouté un bouton SUPP effaçant les sauvegardes les plus anciennes et numéroté les sauvegardes.
Le système de sauvegarde m’a appris qu’une seule variable (Cartridge_Type) provenant du jeu modifie le comportement de sauvegarde de la Gameboy.
Il faut savoir que la Gameboy n’a pas évoluée contrairement aux cartouches de jeux, les premières cartouches ne disposaient que d’une ROM (Mémoire morte – Non réinscriptibles) contenant le jeu.
La seconde génération de cartouches dispose d’une RAM (Mémoire vive – Réinscriptibles) + la ROM, la RAM sert à l’enregistrement des parties.
Les générations suivantes ajoutent une batterie interne (pile rechargeable alimentant la RAM), un kit vibration (Rumble), un timer interne pour connaitre le temps hors jeu, un sonar (SENSOR), un port Tamagotchi (TAMA5), une caméra, un port infra-rouge et haut-parleur (HuC).
Pour connaitre la taille de la mémoire ROM, il s’agit du numéro après le MBC (Memory Bank Controller) :
MBC1 | max 2MByte ROM and/or 32 KiB RAM |
MBC2 | max 256 KiB ROM and 512×4 bits RAM |
MMM | max 512 KiB ROM and 32 KiB RAM |
MBC3 | max 2MByte ROM and/or 32KByte RAM and Timer |
MBC5 | up to 64 Mbits (8 MiB) of ROM |
MBC6 | 14 flash memory chip and 16 KiB of the ROM |
MBC7 | 2-axis accelerometer and 256 byte EEPROM and 16 KiB of the ROM |
La variable Cartridge_Type du jeu indique à La Gameboy la version de sa cartouche
$00 | ROM ONLY |
$01 | MBC1 |
$02 | MBC1+RAM |
$03 | MBC1+RAM+BATTERY |
$05 | MBC2 |
$06 | MBC2+BATTERY |
$08 | ROM+RAM |
$09 | ROM+RAM+BATTERY |
$0B | MMM01 |
$0C | MMM01+RAM |
$0D | MMM01+RAM+BATTERY |
$0F | MBC3+TIMER+BATTERY |
$10 | MBC3+TIMER+RAM+BATTERY |
$11 | MBC3 |
$12 | MBC3+RAM |
$13 | MBC3+RAM+BATTERY |
$19 | MBC5 |
$1A | MBC5+RAM |
$1B | MBC5+RAM+BATTERY |
$1C | MBC5+RUMBLE |
$1D | MBC5+RUMBLE+RAM |
$1E | MBC5+RUMBLE+RAM+BATTERY |
$20 | MBC6 |
$22 | MBC7+SENSOR+RUMBLE+RAM+BATTERY |
$FC | POCKET CAMERA |
$FD | BANDAI TAMA5 |
$FE | HuC3 |
$FF | HuC1+RAM+BATTERY |

Documentation des cartouches de jeux Gameboy
La documentation des Cartouches de jeux Gameboy est bien faite, on peut trouver la documentation de tous les jeux.
Voici la documentation du jeu Mario Land 2 version Europe, le code structurel liant ce jeu à sa documentation est lisible sur la puce MBC1B, la pile rechargeable fait le travail (B final pour batterie) sur les photos partagées.



Retour d’expérience sur la gestion de FreezeState
Positive
Le système de sauvegarde/chargement de FreezeState marche correctement, le bouton SUPP facilite l’accès à la sauvegarde la plus récente en nettoyant le cookie de la sauvegarde la plus ancienne. Les sauvegardes sont nommés du nom du jeu et numérotés (0 : Plus récente). La bordure rouge indique que cette sauvegarde est liée au jeu en cours de jeu.
Négative
Si je parle autant des Cartouches Gameboy et de leur mémoire, c’est que les jeux des cartouches MBC5 (Tous les jeux Gameboy-Color et sup) comme Zelda 2 & 3 Color ont une taille de mémoire supérieure au cookie du navigateur web. La sauvegarde instantanée n’est ainsi pas disponible pour ces jeux.
Quelques Screenshots de l’interface en jeu
N’hésitez pas à tester: Gameboy sur Smartphone