La Gameboy

Description
La GameBoy est la console portable de
Nintendo. C'est une console de jeux video, néanmoins elle demeure être un
formidable outil de programmation pour les électroniciens !!!
En effet
dans des revues electronique comme Elektor, elle a souvent été l'objet
de transformations inattendues : ils ont réussit à la transformer en un
Oscilloscope numérique portable (GameBoy Digital Storage Scope) !!! Il
suffit de changer de cartouche pour changer la fonction que fait le
gameboy. Dans cette page nous allons découvrir comment fonctionne la
GameBoy.
La GameBoy utilise un circuit similaire au Z80 qui est lui même un dérivé du 8080 de Intel.
Il contient donc toutes les instructions du 8080 en dehors de celle utilisé pour les permutations.
Il sait exécuter des programmes de jeux et peut donc prendre à sa charge une part des fonctionnalités
de votre montage (gestion de l'affichage, du clavier, de sa mémoire, des ports de communication
(série, IR et port d'extensions).
Pour pouvoir exploiter ces composants il faut parfaitement connaitre la programmation en assembleur
du 8080.
Néanmoins une solution reste enviseageable pour les plus fainéant d'entre vous il existe un compilateur C pour
le Gameboy : Le Gameboy Devellopement Kit. Ce qui rend le devellopement d'application plus simple, car le language C est un
language universel. Il vous reste plus qu'a commencer à apprendre le C pour commencer à développer sur le Gameboy!!
Mais si vous tenez tout de même à programmer en language machine , de nombreux assembleurs sont disponible sur internet
comme RGBDS, TASM (Table ASsembler) et ADVancedGBIDE.
De nombreux tutoriels existe sur internet il sont très biens fait : à voir dans les liens.
Les caractéristiques techniques du Gameboy sont les suivantes :
- Un CPU de 8-bit (similaire au processeur Z80)
- RAM Principale: 8K Byte
- RAM Vidéo: 8K Byte
- Taille de l'écran : 2.6"
- Resolution: 160x144 (20x18 tiles)
- Maximum de sprites: 40
- Maximum de sprite par lignes : 10
- Taille Maximum des sprites : 8x16
- Taille Minimum des sprite : 8x8
- Vitesse d'horloge: 4.194304 MHz (4.295454 SGB, 4.194/8.388MHz GBC)
- Synchronisation Horizontale : 9198 KHz (9420 KHz for SGB)
- Synchronisation Verticale: 59.73 Hz (61.17 Hz for SGB)
- Son: 4 channels with stereo sound
- Alimentation : DC6V 0.7W (DC3V 0.7W pour la GB Pocket)
Tous ces informations sont regroupées dans un document appelé GBSpec.
Les Cartouches
Le
nom le plus courant pour for a Gameboy game-cartridge is 'cart'.
Une cartouche contient une mémoire ROM nécessaire pour débuter le jeux.
La mémoire ROM est en fait le jeux. Cette mémoire est mapper dans les
32Ko de la mémoire basse du Gameboy. The bottom 16 KB is fixed, the
resst of the ROM is mapped in the second 16 KB of the memory map, using
bank switching. For this purpose the Memory Bank Controller (MBC) is
present. The cartridges I took apart all have the MBC-1 inside so I
will only pay attention to this particular one. Please read the
documentation section (see navigator) for all details.
 |  |
Baby Blue -- 8Mbit Single Time Write Game ROM
Red -- 256kbit SRAM to Hold Save Data
Dark Blue -- Memory Bank Controller 5 ( Allows the puny 8bit gameboy CPU to access large game ROMS and SRAM. )
Yellow -- An attempt to remove the chip in green with a shitty soldering iron goes bad.
Green -- MM1134A Chip Protects SRAM by switching from power from the gameboy to power provided by the onboard battery.
Purple -- I hate onboard batteries so I removed this one. ; )
Voici le contenu d'une cartouche de
Gameboy.
Les cartouches Gameboy les plus complètes sont composées d'une
alimentation interne, (pour conserver le contenu de la RAM même lorsque
que la cartouche n'est plus alimenté par la gameboy), une mémoire RAM, une
mémoire ROM et un controleur MBC (MB5 dans notre cas).
Les cartouches les plus simples peuvent être composées simplement d'une ROM quand le jeux ne nécessite pas de mémoire afin de
sauvegarder des données.