Colecovision et Megacart

Aller en bas

Colecovision et Megacart

Message par alekmaul le Sam 22 Nov 2014 - 9:41

A la demande de Mister bfg Michel Louvet, voici donc un tuto de mon premier essai de génération d'une Megacart pour Colecovision.

Programmation de la MegaCart pour faire du bank Switching

Le bank switching d’une MegaCart  consiste juste à lire une adresse spécifique de la mémoire pour changer d ebank.
Sdcc permet de faire du bank switching dans sa dernière version mais j’ai pas trouvé cela simple.
Le plus simple est de réaliser cela par une lecture de ce type :
char dummyx = *((volatile char*)0xFFFF); // switch to bank 0


Les 64 octets du haut de la mémoire de la Coleco  ( FFC0h-FFFFh) sont réservés pour le switch de banks. Bien entendu, ne pas mettre de données à cet endroit.


La bank choisie est de 16K et se trouve dans la plage d’adresses C000h-FFFFh.
Donc, l’EPROM doit être réalisée de la sorte :
bank0 = EPROM 0000h-3FFFh
bank1 = EPROM 4000h-7FFFh
bank2 = EPROM 8000h-BFFFh
etc …


Les premiers 16K de la cartouche (8000h-BFFFh) sont fixes et doivent toujours contenir le contenu de la bank de 16K la plus élevée de la cartouche. Aussi, ces données vont donc apparaitre 2 fois si la dernière bank est choisie lors du bank switching (8000h-BFFFh et C000h-FFFFh).

Pour utiliser ce mode, j’utilise donc :
Sdcc dans sa version 3.3.0, pas de modification particulière de crt0, cela fonctionne sans (testé sur Hard avec un AtariMax).


Mon outil de lecture des fichiers ihx cvmkcart.exe pour réorganiser les différentes bank dans la rom finale. Les fichiers ihx sont générés par le linker et ne ne sont que des fichiers de données binaires de la future rom.


Exemple avec 2 images sur cette video youtube :



Chaque image est dans une banque différente , mais pour rappel, le switch se fait dans la mémoire c000h et donc, on doit déclarer les données dans cette banque.

On switch de bank comme indiqué dans le fichier banksw.c de l'exemple :
unsigned char dummy;
#define SWITCH_IN_BANK0  { dummy=(*(volatile unsigned char*)0xFFFC); } // b0 with 64k
#define SWITCH_IN_BANK1  { dummy=(*(volatile unsigned char*)0xFFFD); } // b1 with 64k


Pour faire le siwthc dans le code :
 SWITCH_IN_BANK0;

Ensuite, cela se fait à la compilation en utilisant l’ordre --constseg ou encore codeseg si on a aussi du code dans la bank voulue.
image1.rel: image1.c
 $(CC) $(CFLAGS) -c -mz80 --vc --no-std-crt0 --constseg bank1 image1.c

image2.rel: image2.c
 $(CC) $(CFLAGS) -c -mz80 --vc --no-std-crt0 --constseg bank2 image2.c



Ensuite, lors de la phase de link, on déclare les différentes banks que l’on a utilisé via cette option :
LDFLAGS += -mz80 --no-std-crt0 -Wl-b_bank1=0xc000 -Wl-b_bank2=0xc000 --code-loc 0x8048 --data-loc 0x7000


Ici, bank1 et bank2 sont declarées via l’option –Wl-b_, le reste est standard pour la compilation.
Enfin, on utilise plus l’outil par défaut de création de la rom mais mon outil, en spécifiant le nombre de banks, le nom du fichier ihx et le nom de la rom finale.
Dans notre exemple :  cvmkcart -icrtcv.ihx -b2 $(TARGET).rom

L’exemple fourni fait le switch entre les 2 banks de départ pour mettre soit la première, soit la seconde image dans la bank c000h.
Ne pas oublier d’ouvrir la rom avec l’option megacart dans BlueMsx sinon, ça fonctionera pas 
En lien, le fichier exe de création ainsi que l’exemple.
http://www.portabledev.com/media/coleco/banksw/cvmkcart.exe
http://www.portabledev.com/media/coleco/banksw/banksw.zip

alekmaul
Patient contaminé

Masculin Nombre de messages : 502
Age : 51
Localisation : Blois
Date d'inscription : 02/11/2014

http://www.portabledev.com

Revenir en haut Aller en bas

Re: Colecovision et Megacart

Message par bfg le Lun 24 Nov 2014 - 12:56

Bon, ben je peux déjà annoncer que BombJack utilisera une mégacart :) :)  !! Ça marche !

bfg
Patient contaminé

Nombre de messages : 797
Date d'inscription : 11/09/2005

Revenir en haut Aller en bas

Re: Colecovision et Megacart

Message par alekmaul le Lun 24 Nov 2014 - 13:00

tant mieux 😄 , faut toujours que je réponde à ton mail ou tu as trouvé tout seul les réponses ?
En fait, j'ai aussi répondu à ton mail ^^

alekmaul
Patient contaminé

Masculin Nombre de messages : 502
Age : 51
Localisation : Blois
Date d'inscription : 02/11/2014

http://www.portabledev.com

Revenir en haut Aller en bas

Re: Colecovision et Megacart

Message par bfg le Lun 24 Nov 2014 - 13:21

Ben disons que j'ai réussit à faire fonctionner le bignou, mais que je ne percutais pas vraiment comment ça marchait. J'ai réussit à le déduire, et ton mail à conforté ma propre explication Mr. Green

bfg
Patient contaminé

Nombre de messages : 797
Date d'inscription : 11/09/2005

Revenir en haut Aller en bas

Re: Colecovision et Megacart

Message par erikrom2 le Lun 1 Déc 2014 - 21:33

pour un novice ...
possibilité  d’intégrer un jeu en 2x32k ou 4x 16k ? sur une cartouche ?
elle fonctionnera sans SGM ? supergame module ?

si oui mais c'est énorme

a moins que ce soit ceci ?
http://www.colecovision.dk/sem.htm

MegaCart 2 is the new
ColecoVision Super Game Cartridge = SGC

"Every new future OpCode Game will be stored in this Cartridge"
"Save your game data on it without the use of batteries."

The MegaCart 2 is a production name for the new MegaCart, and the official name is Super Game Cartridge.
 The Super Game Cartridge is a kind of media cartridge, a PCB that fits inside a regular Coleco cartridge casing, allowing games to be larger than 32K.
Up to 32 KB of Save RAM. to save any game data, like high score, save points, etc.
And 128 KB of MegaRAM. Allows even more advanced games, like MSX MegaROM games.
It is to find in the cartridge, not the Super Game Module.




terrible  amoureux
avatar
erikrom2
Guéri miraculeux

Masculin Nombre de messages : 2770
Age : 50
Localisation : var
Date d'inscription : 18/10/2005

http://retrogamer.blog4ever.com/blog/index-199671.html

Revenir en haut Aller en bas

Re: Colecovision et Megacart

Message par alekmaul le Mar 2 Déc 2014 - 13:58

@erikrom2 a écrit:pour un novice ...
possibilité  d’intégrer un jeu en 2x32k ou 4x 16k ? sur une cartouche ?
elle fonctionnera sans SGM ? supergame module ?

si oui mais c'est énorme
Oui, c'est exactement cela.
Pas de SGM, une cartouche toute simple, avec la ROM en plus et effectivement, la possibilité d'avoir de la mémoire réinscriptible pour la sauvegarde des scores (comme dans un certain Bagman  What a Face ).

alekmaul
Patient contaminé

Masculin Nombre de messages : 502
Age : 51
Localisation : Blois
Date d'inscription : 02/11/2014

http://www.portabledev.com

Revenir en haut Aller en bas

Re: Colecovision et Megacart

Message par drfloyd le Mer 3 Déc 2014 - 8:13

La sauvegarde des scores, un truc qui manquait vraiment à la Coleco à l'époque. Je notais mes scores sur un papier et faisait un top 10 avec un crayon de bois et une gomme !

_______________________________________________________

Mes objets en vente :
http://www.gamopat-forum.com/t98267-la-caverne-du-doc-poilu#2765310
Mon profil Gamopat Advisor :
http://www.gamopat-forum.com/t94659-dr-floyd-advisor





avatar
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 140089
Age : 49
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

Re: Colecovision et Megacart

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum