gbcam2png: Conversion des photos de la Game Boy Camera au format png

Introduction

La Game Boy Camera est un périphérique pour Game Boy qui permet de prendre des photos en basse résolution (128 x 112, donc seulement 14 kilopixels) en noir et blanc avec 4 niveaux de gris (donc 2 bits par pixel). Un maximum de 30 photos peut être stocké à l'intérieur de la cartouche, dans une mémoire RAM de 128K, alimentée par une pile de sauvegarde.

Il existe différentes techniques (voir la mienne) permettant de lire le contenu de la RAM de la cartouche vers un fichier sur un PC.

Une fois ce fichier de sauvegarde en main, il faut en extraire les images à l'aide d'un logiciel. J'ai trouvé un logiciel prévu pour cela, nommé GBCameraDump, mais pour Windows. Il fonctionne sans difficulté dans Wine et permet de récupérer les images dans un format .BMP.

Malgré cela, il m'a plu de faire mon propre outil pour extraire les photos, un outil en ligne de commande fonctionnant sous Linux et générant des images .png.

Ensuite, un peu inspiré par cet Éditeur de carte mémoire N64 en javascript fonctionnant dans un navigateur web, et voulant jouer un peu avec les canvas html5, j'ai réalisé un deuxième outil d'extraction de photo, cette fois en Javascript/HTML5!

Voici quelques photos prises avec la caméra pour Game Boy. Les couleurs sont celles obtenues lorsqu'on utilise la caméra avec le Game Boy player (sur Gamecube).




Outil Javascript/html5

La version Javascript/HTML5 s'exécute dans votre navigateur web (entièrement localement) et vous permet de sélectionner un fichier de sauvegarde sur votre PC.

Fonctionnalités:
  • Affichage des images « grand format » (128x112) contenues dans la mémoire.
  • Affiche aussi les images ayant été effacées
  • Choix de la couleur (par code hex) pour les 4 niveaux de gris.
  • 3 thèmes de couleurs préétablis (Noir et blanc, Gameboy et Gameboy player)
  • Enregistrement au format .png par la fonction « Enregistrer Sous ... » du navigateur.
Exemples des différents thèmes:
Noir et blanc

Noir et blanc

Game boy

Game boy

Game boy player

Game boy player





L'outil est disponible ici: gbcamtool_fr.html


Outils en ligne de commande

La version en ligne de commande offre davantage que la version Javascript, mais il faudra la compiler pour votre système.

Fonctionnalités:
  • Extraction des images « grand format » (128x112) vers un .PNG
  • Extraction des images « format timbre » vers un .PNG
  • Extraction des images Game Faces vers un .PNG
  • Récupération des images effacées
  • Extraction d'une seule image ou de toutes les images d'un coup
  • Affichage d'une liste d'images

Utilisation

Obtenir de l'aide avec -h

  Options:
    -h              Display this help text
    -i index        Source image index (first image is 0). Default: 0
    -g              Use gameface as source photo
    -o output.png   Export a single photo to a .png file
    -b basename     Export all photos to png files, using the specified basename
    -d              Display selected photo (see -i) to the terminal
    -l              List photos in save file
    -a              Also export deleted photos
    -s              Export/display small photos (32x32) intead of large photos (128x112)
    -v              Be verbose

Lister les photos (voir lesquelles sont actives ou effacées)

./gbcam2png source.sav -l

Extraire une photo (index 0) vers un fichier .png

./gbcam2png source.sav -i 0 -o output.png

Extraire toutes les photos vers plusieurs fichiers .png

./gbcam2png source.sav -b test
Pour chaque photo active (c'est à dire, qui n'a pas été effacée) un fichier nommé testXX.png (où XX correspondra à l'index de la photo, compté depuis 00) sera créé.

Extraire toutes les photos, même celles qui sont effacées

./gbcam2png source.sav -b test -a

Afficher une image dans un terminal (-d)

Comme il s'agit d'images d'une résolution assez basse, cet outil peut les afficher dans un terminal en contrôlant la couleur d'arrrière plan des cellules (par des codes ANSI/VT100). Il faut toutefois utiliser une police d'écriture très petite, et les « pixels » sont rectangulaires...
./gbcam2png source.sav -i 15 -d



Ce projet est aussi disponible sur GitHub!
Pour suggérer de nouvelles fonctionnalités, signaler un problème ou contribuer au projet, vous pouvez m'écrire ou utiliser le dépôt GitHub:
https://github.com/raphnet/gbcam2png



Ma méthode pour lire la RAM

L'adaptateur N64 à USB que j'ai développé, combiné avec un logiciel de gestion côté PC, supporte le Transfer Pak pour N64. Avec le Transfer Pak, il est possible de lire ou écrire la mémoire de sauvegarde de plusieurs types de cartouches de jeu Game Boy.

Depuis la version 2.1.14, le logiciel de gestion peut également lire/écrire la mémoire de sauvegarde de la Game Boy Camera.

J'utilise le matériel suivant:
Adaptateur N64 à USB raphnet V3

Adaptateur N64 à USB raphnet V3

Manette N64

Manette N64

Transfer Pak

Transfer Pak

Game boy camera

Game boy camera



Voici les éléments en action:
Adaptateur USB, Manette, Transfer Pak et Caméra

Adaptateur USB, Manette, Transfer Pak et Caméra



Pour lancer la lecture de la mémoire RAM, il suffit d'accéder au menu Transfer Pak -> Read cartridge RAM to file... et de nommer le fichier cible.



La lecture se terminera en moins d'une minute. Il s'agira ensuite d'utiliser l'outil de votre choix pour extraire les images de ce fichier de sauvegarde.


Un survol rapide des autres méthodes

Il existe plusieurs autres manières pour récupérer les images:
  • Prendre une photo de l'écran du Game Boy
  • Utiliser le Super Game Boy ou le Game Boy Player et capturer une image avec une carte d'acquisition vidéo
  • Imprimer une photo avec l'imprimante pour Game Boy
  • Utiliser un émulateur d'imprimante (les photos imprimées sont reçues directement par un PC qui prétend être une imprimante): https://github.com/mofosyne/arduino-gameboy-printer-emulator
  • Utiliser la Mega Memory Card pour lire la mémoire de sauvegarde de la caméra, pour ensuite la copier vers une cartouche Game Boy reprogrammable. Il s'agit ensuite de lire le contenu de la cartouche reprogrammable par USB ou via la carte SD, selon le cas. Source: http://jamesumber.com/how-to-transfer-photos-from-a-game-boy-camera/
Il faut noter que passer par l'imprimante (une vraie ou en émulation) a l'avantage que le cadre des photos sera présent.