raphnet.net banner

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

twitter@raphnetlabs
Contenu: Introduction | Outil Javascript/html5 | Outils en ligne de commande | Ma méthode pour lire la RAM | Un survol rapide des autres méthodes

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).


goto top


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: 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

goto top


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:

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

Fatal error: Uncaught ArgumentCountError: Too few arguments to function figure(), 1 passed in /homepages/12/d162902012/htdocs/www/programmation/gbcam2png/index.php on line 131 and at least 2 expected in /homepages/12/d162902012/htdocs/www/php_includes/toolkit.php:460 Stack trace: #0 /homepages/12/d162902012/htdocs/www/programmation/gbcam2png/index.php(131): figure('th_terminal_dis...') #1 {main} thrown in /homepages/12/d162902012/htdocs/www/php_includes/toolkit.php on line 460