L'atelier Mettre un SN76489AN dans un MSX (jeux ColecoVision sur MSX)
Reprise du message précédent
igal :
Par contre, plutôt que de modifier/Patcher la ROM Colécovision, il est peut être possible de faire un périphérique qui regroupe de PSG + Port Manette spécifique
Pour ne pas avoir à patcher les jeux, il faudrait aussi ajouter le VDP qui provoque une interruption non-masquable à l'adresse 066h et voir même une ROM pour le BIOS de la ColecoVision.
Et puis, brancher des joystick sur une cartouche n'est pas une bonne solution car on risque de retirer la cartouche en tirant dessus en pleine partie. C'est pour ça que d'abord j'ai pensé à un adaptateur sans fil.
Le but de ce projet est de faire pas cher. Sinon, il y a PlaySoniq (ou Franky) qui existe et peut faire bien plus sans patch (ou très peu).
http://supersoniqs.com/projects/
le décodage F0 est bon et en effet on peut se passer des résistances sur les signaux du LS688
d'aprés le schéma de la coleco il reste le signal READY a cabler
c'est une combinaison du signal clock /2 par un 74LS74 et du signal M1 + 2 portes inverseuses
d'aprés le schéma de la coleco il reste le signal READY a cabler
c'est une combinaison du signal clock /2 par un 74LS74 et du signal M1 + 2 portes inverseuses
J'ai un petit problème, l'ordre des données de la puce SN76489 diffère selon les sources.
Les Wiki sur cette puce ainsi que diverses sources donnent un sens inverse que celui du PDF suivant.
http://www.colecovision.dk/PDF/SN%2076489.pdf
http://www.nvg.ntnu.no/bbc/doc/datasheets/SN76489.zip
Par habitude, je suis tenté de dire que les Wiki sont faux.
Alors, qui a raison ?
EDIT :
J'ai trouvé le fin mot de l'histoire sur la page suivante (en rose).
http://members.casema.nl/hhaydn/howel/parts/76489.htm
Les Wikis et d'autres sites ont inversé les bits pour garder la nomination standard actuelle.
D'ailleurs en regardant le pdf de plus près, on s'en rend compte que tout est à l'envers. Edité par GDX Le 28/07/2012 à 09h06
Les Wiki sur cette puce ainsi que diverses sources donnent un sens inverse que celui du PDF suivant.
http://www.colecovision.dk/PDF/SN%2076489.pdf
http://www.nvg.ntnu.no/bbc/doc/datasheets/SN76489.zip
Par habitude, je suis tenté de dire que les Wiki sont faux.
Alors, qui a raison ?
EDIT :
J'ai trouvé le fin mot de l'histoire sur la page suivante (en rose).
http://members.casema.nl/hhaydn/howel/parts/76489.htm
traduction :
A une époque, Texas Instruments avait décidé de nommer les bits de données en commencent par le plus significatif, "le bit zéro", en incrémentant chaque bit jusqu'au le moins significatif. Ainsi, un octet était étiqueté de D0 à D7, au lieu de D7 à D0 comme tout le monde. Les caractéristiques techniques de cette puce ont été publiés à cette époque là, mais ce document en ligne utilise la convention standard pour éviter toute confusion. Les schémas et tableaux ont aussi été révisés.
Les Wikis et d'autres sites ont inversé les bits pour garder la nomination standard actuelle.
D'ailleurs en regardant le pdf de plus près, on s'en rend compte que tout est à l'envers. Edité par GDX Le 28/07/2012 à 09h06
Le proto est fait !
N'ayant pas encore réussi à créer une ROM avec un jeu ColecoVision qui fonctionne, j'ai fait quelques tests avec des OUT sous BASIC.
Première constatation : À chaque fois que j'allume le MSX (un MSX1 de Toshiba), un son constant est toujours émis. Ce son est plus ou moins différent à chaque allumage.
Je tente de couper le son de chaque voix :
Voix 1 : OUT&HF0,&H9F
Voix 2 : OUT&HF0,&HBF
Voix 3 : OUT&HF0,&HDF
Voix 4 : OUT&HF0,&HFF
Le son se coupe bien et je remarque que seules les voix 1 et 2 émettent un son à chaque allumage.
Je réactive la voix 1 en modifiant le volume :
OUT&HF0,&H94
OUT&HF0,&H92
OUT&HF0,&H90 (son maximum)
Le volume marche.
Je change la fréquence de la voix 1 :
OUT&HF0,&H88:OUT&HF0,&H3f
Le son change. (110Hz correspondant à un LA)
Conclusion :
Ça semble fonctionner mais le fait que ça émet toujours un son au démarrage du MSX est un problème. Comment peut-on y remédier en hardware ?
J'ai vérifié le montage, tout semble OK.
Voici le schéma utilisé :
Edité par GDX Le 04/08/2012 à 12h04
N'ayant pas encore réussi à créer une ROM avec un jeu ColecoVision qui fonctionne, j'ai fait quelques tests avec des OUT sous BASIC.
Première constatation : À chaque fois que j'allume le MSX (un MSX1 de Toshiba), un son constant est toujours émis. Ce son est plus ou moins différent à chaque allumage.
Je tente de couper le son de chaque voix :
Voix 1 : OUT&HF0,&H9F
Voix 2 : OUT&HF0,&HBF
Voix 3 : OUT&HF0,&HDF
Voix 4 : OUT&HF0,&HFF
Le son se coupe bien et je remarque que seules les voix 1 et 2 émettent un son à chaque allumage.
Je réactive la voix 1 en modifiant le volume :
OUT&HF0,&H94
OUT&HF0,&H92
OUT&HF0,&H90 (son maximum)
Le volume marche.
Je change la fréquence de la voix 1 :
OUT&HF0,&H88:OUT&HF0,&H3f
Le son change. (110Hz correspondant à un LA)
Conclusion :
Ça semble fonctionner mais le fait que ça émet toujours un son au démarrage du MSX est un problème. Comment peut-on y remédier en hardware ?
J'ai vérifié le montage, tout semble OK.
Voici le schéma utilisé :
Edité par GDX Le 04/08/2012 à 12h04
Ce weekend, j'ai créé 2 ROM, une avec Donkey Kong et une avec Zaxxon. Pour cela, j'ai utilisé les versions déjà converties pour MSX et j'ai remplacé les routines sonores du PSG MSX et de l'SCC par les routines originales de la ColecoVision. Sauf que le BIOS de la ColecoVision faisant des OUT FFh,A au lieu de OUT F0h,A comme je l'ai vu ailleurs, j'ai adapté les OUT pour le port F0h.
1/ Je teste les 2 jeux sur émulateur. Ça fonctionne bien mais sans le son. C'est normal.
2/ Je les teste sur MSX avec le proto dans un SLOT,
- La ROM de Zaxxon se lance mais plante dès le menu de sélection ou au moment de lancer une partie. Pas le temps d'entendre le moindre son.
- Quant à la ROM de Donkey Kong, elle se lance. Le jeu tourne et... le son est parfait mais c'est très instable. Ça plante aléatoirement au bout d'un certain temps.
3/ Je teste les 2 jeux sur le MSX sans le proto. Ça fonctionne bien sans le son, comme sur les émulateurs. J'ai joué plusieurs fois quelques stages sans aucun problème.
Conclusion le proto rend le MSX instable lorsqu'on y accède. Pouquoi ? Je sèche. Edité par GDX Le 06/08/2012 à 13h50
1/ Je teste les 2 jeux sur émulateur. Ça fonctionne bien mais sans le son. C'est normal.
2/ Je les teste sur MSX avec le proto dans un SLOT,
- La ROM de Zaxxon se lance mais plante dès le menu de sélection ou au moment de lancer une partie. Pas le temps d'entendre le moindre son.
- Quant à la ROM de Donkey Kong, elle se lance. Le jeu tourne et... le son est parfait mais c'est très instable. Ça plante aléatoirement au bout d'un certain temps.
3/ Je teste les 2 jeux sur le MSX sans le proto. Ça fonctionne bien sans le son, comme sur les émulateurs. J'ai joué plusieurs fois quelques stages sans aucun problème.
Conclusion le proto rend le MSX instable lorsqu'on y accède. Pouquoi ? Je sèche. Edité par GDX Le 06/08/2012 à 13h50
Le BIOS MSX n'est pas utilisé. Il est remplacé par le BIOS de la ColecoVision modifié pour le MSX. Donc la zone des Hooks n'existe plus.
Vue que les jeux fonctionnent très bien sans le proto mais qu'ils plantent avec, c'est le proto qui fait que ça plante.
Mes hypothèses : Etant donné que ça émet un son au démarrage du MSX, peut-être que ça plante parce que le SN76489AN est mal initialisé ? Ou alors, peut-être qu'il faut mettre des condensateurs pour éviter les parasites ? Edité par GDX Le 06/08/2012 à 14h11
Vue que les jeux fonctionnent très bien sans le proto mais qu'ils plantent avec, c'est le proto qui fait que ça plante.
Mes hypothèses : Etant donné que ça émet un son au démarrage du MSX, peut-être que ça plante parce que le SN76489AN est mal initialisé ? Ou alors, peut-être qu'il faut mettre des condensateurs pour éviter les parasites ? Edité par GDX Le 06/08/2012 à 14h11
il faudrait être sur que l'adresse choisie est bien décodé sur un vrai MSX car souvent les adresses sont décodées par paquets et non pas a l'unité
pour faire un essai choisit une adresse libre avant 80H
voir tableau http://map.grauw.nl/resources/msx_io_ports.php
ex: tu prends 10h tu refait le decodeur 74688 puis tu remplace tous tes f0H par 10H et tu teste
pour faire un essai choisit une adresse libre avant 80H
voir tableau http://map.grauw.nl/resources/msx_io_ports.php
ex: tu prends 10h tu refait le decodeur 74688 puis tu remplace tous tes f0H par 10H et tu teste
J'ai testé le proto sur Turbo R. Il y a toujours le son qui de produit au démarrage mais curieusement le port f0h ne répond pas.
J'essayerais donc un autre port comme tu le conseilles la prochaine fois.
Tout cela me rappelle que lorsque j'ai converti des jeux ColecoVision, ça plantait sur MSX1 avec certains jeux parce qu'ils envoyaient des données trop vite au processeur vidéo. C'est pourtant le même VDP.
En cherchant, j'ai lu quelque part que la ColecoVision avait un Buffer pour les Entrées / Sorties.
Si c'est le cas, ça expliquerait les plantages car le MSX n'a pas de Buffer je crois.
Autres tests vite fait sur le MSX1 :
- J'ai relié la patte /OE à VCC (avec une résistance de 10KΩ ) et /P=Q dans le vide pour interdire l'écriture mais le son qui se produit au démarrage reste. Vue que le Bios de la ColecoVision coupe le son dès le démarrage de la console, ce son est peut-être normal après tout vu la rusticité de ce PSG.
- J'ai relié la patte Ready à la masse (avec une résistance de 10KΩ ) pour voir si ça stop les plantages. Le son se produit toujours au démarrage. Ça fait le même effet que ci-dessus. Les tournent et le port f0h est inactif.
- Pareil en mettant Wait à la masse ou à VCC...
J'essayerais donc un autre port comme tu le conseilles la prochaine fois.
Tout cela me rappelle que lorsque j'ai converti des jeux ColecoVision, ça plantait sur MSX1 avec certains jeux parce qu'ils envoyaient des données trop vite au processeur vidéo. C'est pourtant le même VDP.
En cherchant, j'ai lu quelque part que la ColecoVision avait un Buffer pour les Entrées / Sorties.
Si c'est le cas, ça expliquerait les plantages car le MSX n'a pas de Buffer je crois.
Autres tests vite fait sur le MSX1 :
- J'ai relié la patte /OE à VCC (avec une résistance de 10KΩ ) et /P=Q dans le vide pour interdire l'écriture mais le son qui se produit au démarrage reste. Vue que le Bios de la ColecoVision coupe le son dès le démarrage de la console, ce son est peut-être normal après tout vu la rusticité de ce PSG.
- J'ai relié la patte Ready à la masse (avec une résistance de 10KΩ ) pour voir si ça stop les plantages. Le son se produit toujours au démarrage. Ça fait le même effet que ci-dessus. Les tournent et le port f0h est inactif.
- Pareil en mettant Wait à la masse ou à VCC...
J'ai changé le port.
J'ai mis le 10H (Q4 à VCC et les autres Q à la masse) et le MSX se fige dès texte de présentation "MSX System..." lorsque le proto est dans un SLOT.
J'ai mis le 0FH => pareil.
En retirant le PSG du proto, le MSX démarre normalement.
Edité par GDX Le 08/08/2012 à 12h27
J'ai mis le 10H (Q4 à VCC et les autres Q à la masse) et le MSX se fige dès texte de présentation "MSX System..." lorsque le proto est dans un SLOT.
J'ai mis le 0FH => pareil.
En retirant le PSG du proto, le MSX démarre normalement.
Edité par GDX Le 08/08/2012 à 12h27
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie