| Présentation | Hardware | Programmation | Links | Divers | Contact |

 

Le principe des Roms

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

(C) HxC2001 / Jean-François DEL NERO