[PRJ-ABOUTI] Adapter un volant + manette PC sur MD.

Postez vos idées sur vos travaux personnels. Pour débattre de toutes les adaptations faites sur les machines.

Modérateur : Politburo

Répondre
Avatar du membre
MG
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 353
Enregistré le : 13 janv. 2005 12:45
Contact :

[PRJ-ABOUTI] Adapter un volant + manette PC sur MD.

Message par MG »

Yop.

J'ai récupéré un volant "Formula 1 Race Master II" de www.trust.com, et je suis en train de l'adapter sur mégadrive ;)

Image

6 Modes de configuration permettrons de jouer à 6 jeux différents dont je dispose (vi je n'en ai pas plus comme jeux de voiture).
Un appui sur le poussoir permet de sélectionner un mode parmi 6 (des fois faut configurer le jeu par ses options).

Je vais rajouter un mode d'étalonnage du joystick lors de l'appui sur le BP à la mise sous tension.
Un joystick PC de déplacement renvoie (en théorie) 2,5V s'il ne bouge pas, 0V s'il bouge dans un sens, et +5V dans l'autre sens, ce qui, d'après mes mesures n'est pas le cas, d'où l'intérêt de l'étalonnage.

A terme le but étant de pouvoir adapter n'importe quel joystick PC sur MD.
Ou bien un joystick Atari (encore plus simple à faire).
Le but ultime étant tout de même d'adapter mon maxi super joystick TOP GUN pour PS2 (PS1 même combat) au standard JAMMA.
Soft un peu plus délicat que pour ce système là, les joystick playstation étant "pseudo" intelligent et nécessitant un protocole de communication.
Mais bon, je finis ce projet là, et je passerai au suivant.

A+
Modifié en dernier par MG le 20 nov. 2006 07:55, modifié 2 fois.
Mon pseudo est directement lié aux prénoms de mes enfants : Nadine, Christine et Nicolas.
Avatar du membre
MG
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 353
Enregistré le : 13 janv. 2005 12:45
Contact :

Message par MG »

Etat du projet :

1/ L'alim MD ne fournit pas suffisament pour alimenter le tout...
Donc faut prévoir une alim externe (Bloc secteur suivit d'un pont de diodes et d'un régulateur +5V)

2/ Tous les niveaux de sortie (qui commandent la MD) sont actifs au niveau "0".
A l'init du système les sorties sur le bus doivent être à "1" (tous les boutons relâchés).

4/ Le front TH est de l'ordre de 30µs, à l'état bas, il fait 3ms* (compte tenu de ce qui me sert d'oscillo).
Ce qui veut dire que : le soft doit détecter le front haut, positionner les datas correspondantes sur le bus, attendre la fin du front (de l'ordre de 150 cycles en gros), positionner la suite des datas, et seulement ensuite vaquer à ses autres occupations.

Edit 1 :
* En fait le temps de l'état bas est variable, je suppose que, comme la scrutation de l'état du joystick est liée au code programme, ce temps là est plus ou moins variable...
Des fois 20 ms (une trame en 50Hz), ou bien plus... suivant l'animation effectuée à l'écran.
Ce que je prends pour acqui est le temps lié à l'état haut, donc 30µs, donc je me base là dessus, ce sera le temps "crucial" impératif.

5/ Il faut puller à la masse les sorties joystick XX' et YY' du joysticj PC.
Les boutons du même joystick sont à puller au +5V par contre.

Edit 2 :
Remarques :
A vide les entrées joystick sont à "1", il n'y a pas de résistances de rappel, donc le µc qui gère les I/Os sur la MD doit avoir des résistances internes de rappel.
Par contre, le PIC reset si on connecte la MD sous tension avec le système sous tension lui aussi, il faut donc des résistances de 220 ohms en série sur les I/Os (à tester).
PS : J'ai crâmé les I/Os d'une MD :( gasp... m'en reste plus que 9 en état de marche... arf ;)

C'est là où j'en suis.
N'ayant pas le soft at home, la suite la semaine prochaine.

A+
Modifié en dernier par MG le 11 nov. 2006 11:51, modifié 1 fois.
Mon pseudo est directement lié aux prénoms de mes enfants : Nadine, Christine et Nicolas.
Avatar du membre
mirage4
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2922
Enregistré le : 30 déc. 2004 19:39
Localisation : Langon (33)

Message par mirage4 »

j'ai hate de connaitre la suite :D
Attention ! psychoordinopathe!
Avatar du membre
MG
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 353
Enregistré le : 13 janv. 2005 12:45
Contact :

Message par MG »

Yop !

Alors les dernières news sont que :
Effectivement on ne peut pas se fier au signal TH, celui-ci est lié au code, donc les temps ne peuvent pas être pris en compte.
De même que les niveaux !
Parfois le niveau bas dure 30µs, parfois c'est le niveau haut etc etc...
Comme le chip dans les manettes MD est une tte bête bascule, la lecture des boutons est laissée à la charge du programmeur.
Alors suivant les cas, il laisse le niveau haut ou bas etc etc...

Bref, il faut utiliser l'interruption sur le Port B du PIC pour pouvoir à tout instant donner l'état des boutons, et ce quelquesoit le niveau de TH qui demande cet état (0 ou 1).

L'interruption sera aussi générée lors de l'appui sur BP1, mais cela ne devrait pas poser de pb outre mesure.

Ce soir j'essaie de nouveau.
Le schéma de principe n'est plus à jour.
J'ai rajouté des résistances en série sur les lignes reliées à la MD car le PIC faisait des resets intempestifs.

Brefle, cela reste encore du domaine de : "l'affaire à suivre..."

A+
Mon pseudo est directement lié aux prénoms de mes enfants : Nadine, Christine et Nicolas.
Avatar du membre
MG
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 353
Enregistré le : 13 janv. 2005 12:45
Contact :

Message par MG »

Yop !

News :
Alors, après des déboires avec les pédales de mon superbe joystick de récup (câbles coupés), j'arrive à jouer à STREET RACER, et ... ALADIN (vi, celui-ci me permet de tester les boutons A, B, C, START et les directions), sinon les autres jeux font n'importe quoi...

Cela veut dire quoi ?
Tout simplement que ma routine d'interruption... n'est pas assez rapide !
Si si !

Pourquoi ?
Et bien la commande de la lecture du joystick de la MD s'effectue par ce bout de code :
porta:
move.b #$40,$a10003 ; TH (PD6) <-- "1".
nop ; tempo <MEGA IMPORTANTE>
nop ;
move.b $a10003,d1 ; D1 <-- Lecture joystick 1.
andi.b #$3f,d1 ; D1 <-- D1 & 0x3F ==> D1 <-- ¦ PD5 RW) TR (C)
; ¦ PD4 (RW) TL (B)
; ¦ PD3 (RW) RIGHT
; ¦ PD2 (RW) LEFT
; ¦ PD1 (RW) DOWN
; ¦ PDO (RW) UP

move.b #$00,$a10003 ; TH (PD6) <-- "0".
nop ; tempo <RE-MEGA IMPORTANTE>
nop ;
move.b $a10003,d0 ; Lecture second octet data.
andi.b #$30,d0 ; D0 <-- D0 & 0x30 ==> D1 <-- ¦ PD5 (RW) TR (START)
; ¦ PD4 (RW) TL (A)
; ¦ -
; ¦ -
; ¦ -
; ¦ -

lsl.b #2,d0 ; Bits 5 et 4 deviennent 6 et 7.
or.b d1,d0 ; D0 <-- D0 ¦ D1 (START, A, C, B, RIGHT, LEFT, DOWN, UP)
not.b d0 ; Complémenté car les niveaux logiques sont actifs au "0".
rts

Bien sûr, ce n'est qu'un exemple, chaque programmeur ayant ses habitudes, les artistes du code de jeux sur MD ont fait comme ils ont voulus, en augmentant ou diminuant le temps (dans l'exemple diminuer le temps ne doit pas être simple ;) ) de lecture du port joystick, en inversant la lecture (TH à "0" au départ plutôt qu'à "1") etc etc...[/b]

Solution :
Revenir à la base et mettre un 74HC157 entre la SUBD9 mâle et le PIC, refaire une manette classique.
Cela permettra au PIC de positionner l'état des boutons en permanence sur 8 bits et la MD lira à sa vitesse le multiplexage des boutons.
Ce que je vais faire auj.
Il faut revoir le hard et le soft du PIC.

A suivre...
Mon pseudo est directement lié aux prénoms de mes enfants : Nadine, Christine et Nicolas.
Avatar du membre
MG
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 353
Enregistré le : 13 janv. 2005 12:45
Contact :

Message par MG »

Infos sur le hard et soft MD :

; Contributions :
; ===============
; http://cgfm2.emuviews.com/gen.php
; Schéma de principe de la GENESIS, docs etc etc... une mine d'infos.
; http://www.gamesx.com/controldata/gencont.htm
; Schéma du pad GENESIS.
; http://www.classicgaming.com/epr/genesis
; Infos soft et hard, une mine d'infos aussi.
Mon pseudo est directement lié aux prénoms de mes enfants : Nadine, Christine et Nicolas.
Avatar du membre
clio
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1902
Enregistré le : 19 nov. 2005 12:19
Localisation : 74

Message par clio »

Très intéressant comme topic, tiens nous au courant !
Clio
Potrzebie
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 10726
Enregistré le : 09 mars 2003 16:23
Localisation : Vendée - France
Contact :

Message par Potrzebie »

impressionnant
Image
Avatar du membre
MG
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 353
Enregistré le : 13 janv. 2005 12:45
Contact :

Message par MG »

News :

Bon et bien c'était la bonne solution.
Il ne me reste plus qu'à faire un nouveau prototype, régler qqs pbs de parasite liés aux pédales, ajuster un peu le soft et ce sera une petite carte sympa.

Il faut effectivement un multiplexeur comme sur la manette de la MD.
Je ferai une page certainement (avec un peu de temps), je mettrai le lien ici, il y aura le schéma, la carte implant et circuit imprimé et le soft en téléchargement pour ceux que ça intéresse.

Par la suite, j'adapte le joystick de PS1 selon le même principe.
Là, ce sera un tantinet plus marrant (je parle du gameplay, car avec ou sans volant je suis toujours aussi nul sur les courses de voitures).

Voilà, A+

Edit :
J'ai mis le schéma à jour en haut du topic ;)

Edit 2 :
Page plus ou moins bien détaillée sur cette bidouille :
http://blatter.perso.cegetel.net/bidouilles/joy_pc.html
Mon pseudo est directement lié aux prénoms de mes enfants : Nadine, Christine et Nicolas.
Répondre

Retourner vers « Idées »