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 possède un sélecteur de jeu, des boutons de sauvegarde, pause, volume et vitesse.
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: un système de sauvegarde, le réglage de la vitesse et un vrai bouton Pause.
Transition Boutons => Écran tactile
En HTML5 les boutons sont des zones délimitées dont l’interaction (clic ou pression du doigt) est surveillé en JavaScript. L’écran est un Canvas HTML5 actualisé en temps réel par l’émulateur.
Retour d’expérience d’intégration web
Positive
Le retour d’expérience est positif car toutes les interactions des boutons fonctionnent simultanément. Les boutons de sauvegarde, pause, volume et vitesse marchent également.
Négative
Le seul bémol de mon interface pour Smartphone est l’impossibilité d’appuyer sur Haut + Droite en même temps (notre pouce n’a pas la faculté de se dupliquer).
Pour combler ce manque, il faudrait ajouter 5 boutons (Haut-Gauche & Haut-Droite & Bas-Gauche & Bas-Droite & A-B) disposés entre les boutons actuels de l’interface graphique et reliés à l’émulateur.
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, son code est lisible sur la puce MBC1B (B 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 et de leur mémoire, c’est que les jeux des cartouches MBC5 (7 jeux Gameboy-color) 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