Avant tout il faut
comprendre comment la console accède à la cartouche. Une cartouche
est ensentiellement composée d'une EPROM (ou plutôt une
PROM). Lorsque l'on met la cartouche dans la console, on
branche cette ROM sur le bus du système, directement sur le
CPU. On allume la console et celle-ci exécute le code présent dans
la ROM... le jeu démarre. (Généralement l'accès en ROM
commence à l'adresse 0 dans la console). Dans la plupart des
consoles les transferts entre la cartouche et la console se font au
standard TTL, c'est à dire qu'une tension au dessus de 2V sur une broche
correspond à un 1 logique, une tension en dessous de 0.8V
correspond à un 0 logique.
Voici le brochage de
différentes EPROM:
|
Les broches des EPROMs peuvent être regroupées en 3
groupes: Les broches du BUS d'adressage
:La première lettre désignant une broche
d'adressage est A suivi du bit correspondant.
Ces broches permettent d'accéder a l'octet voulue
.
Les broches du bus de données : La première
lettre désignant une broche de donnée est D
suivi du numéro de bit correspondant. Ces broches permettent
de récupérer l'octet voulu.
Les broches de
contrôle : ces broches sont inversées , c'est à dire
qu'une tension de 5V désactive la fonction et une tension de
0V l'active. |
Les broches de contrôle sur une EPROM sont :
CE (CHIP ENABLE) : Active ou désactive l'EPROM
(Utile si le CPU souhaite accéder à autre chose que la ROM) RD
(READ) : Demande de Lecture dans
l'EPROM. PGM/WR :Permet d'ecrire dans l'EPROM
(Utilisé uniquement lors de la programmation de la puce en
usine...). Et bien sur l'alimentation 5V et la masse.
Et Voici comment lire un octet sur une EPROM (et de même
sur SRAM ,EEPROM ,etc)
|
Pour accéder à un octet il faut faire ceci
:
- Mettez le numero de l'octet à lire sur le bus
d'adressage. - Ensuite activez la ROM en mode lecture en
mettant WE à 1 ,CE à 0 (pour activer la puce )
et RD à 0 (pour mettre la puce en mode lecture ). -
Attendez quelques nano secondes (de 70ns a 1000ns suivant
l'EPROM)... - Et récuperez l'octet sur le bus de
données... - Remettez CE et RD à
1. |
Maintenant nous pouvons envisager la copie d'une
cartouche.
Pour effectuer ceci on peut utiliser une interface se
branchant sur le port imprimante du PC. Celle-ci se chargera de
multiplier les broches du port imprimante (pour passer de 8 broches
utiles à 24). Toute la logique se trouve dans le programme, ce qui
la rend très flexible... Voici le schéma d'une interface pour les
cartouches Game Boy, mais il suffit de changer de support cartouche
pour l'adapter pour d'autres cartouches 8 bits (Atari 2600 ,Nes
,etc...).
|
Vous pouvez télécharger le programme permettant la gestion du système ici. Pour lire
un octet dans la cartouche le programme réalise les opérations suivantes:
- 1 - Mise à 1 des broches WR
(strobe) et RD (AUTOFEED) pour
désactiver la cartouche.
- 2
- Place la valeur basse de l'adressage (A0- A7) sur le
bus de données du port parallel et place la broche A0
du 8255 à 0 ainsi que sa broche wr >
le port A du 8255 contient A0<>A7.
Ensuite on remet les broches A0 et WR a
1.
- 3
- Place la valeur haute de l'adressage (A8 -A15) sur le
bus de données du port parallel et place la broche
A0 du 8255 à 1 et la broche
wr à 0 > le port B du 8255
contient A8<>A15. Ensuite on remet les broches
A0 et WR a 1.
- 4
- Ensuite on fait la demande de lecture à la cartouche
: on place RD à 0 et WR a 1 et CS à
0 > la cartouche envoit l'octet de l'adresse
present sur A0 - A15, il suffit alors de lire le port
parallel pour récuperer cette valeur...
- 5
- Remise à 1 de toutes les broches de contrôle (RD
WR CS ,A0 et WR du 8255), pour finir
le transfert > les composants sont alors au
repos....
| |
Voilà pour l'interface, maintenant si vous voulez
utiliser l'image de la Rom obtenue sur une vraie console et non sur
un émulateur, il faut programmer cette image dans une cartouche
programmable.
Voici une cartouche programmable pour GameBoy
:
|
Cette
cartouche est de type SRAM, c'est à dire qu'elle est programmable
indéfiniment, mais elle a besoin d'une pile pour garder
le jeu en mémoire.
La capacité de cette cartouche
est de 2*32Ko (2 Jeux de 32Ko). Pour avoir une cartouche de
plus grande capacité il faut utiliser une puce de SRAM plus
grande et un contrôleur spécifique pour Game Boy, le
MCB5 (present dans les cartouche du
commerce...). Cette cartouche devrait pouvoir fonctionner
avec d'autres consoles 8 bits simplement en changeant son
connecteur...... Cette cartouche est bien sûr programmable
avec l'interface présentée plus
haut. |
Les liens utiles:
|
De nombreux brochages
d'on les brochages de cartouches de different système. |
|
Les documents technique
sur le port parallel du PC... |
|
Tout sur la Game
Boy |
|
... |
|
|
|