Gamoover

[move]Vous aimez la série Ricky la belle vie, Julio Iglésias ou l'émission Kohlanta ? Alors soyez les bienvenus sur Gamoover ! [/move]

Substitution d'un PCB Pole Position par un PC sous MAME

Démarré par Little_Rabbit, Lundi 06 Avril 2020, 18:36:44 PM

Tibal

Merci pour tes investigations !
Je ferai les vérifications dont tu parles certainement ce weekend.

Hier j'ai eu 15 min et j'ai regardé pour changer le coupleur.
Déjà, je n'ai pas le même que toi, le mien comporte plus de composants !





Savez-vous ce qu'est le composant blanc d'ailleurs ?

J'ai installé la PCB Coupleur de remplacement, pas de souci particulier, mais je n'ai pas eu le temps d'aller plus loin que ça.









Little_Rabbit

Salut,

Cool !  ^-^

Quel était le problème alors ? Juste les potards qui étaient à zéro ? :)

Qu'as-tu changé pour que le son soit là à présent ?

A+
Recherche bornes dédiées ou PCB originaux: Miss Pacman, Dig Dug, Galaga, Mappy, Asteroids, Battlezone, Missile Command, Tempest, Star Wars, Donkey Kong (+ Jr), Mario Bros, Moon Patrol, Defender, Joust, Frogger, Gyruss, Pooyan, Space Tactics, Zaxxon, etc. Flip : Gottlieb des années 80 (Spirit, Amazon Hunt, ...), Baby Pac Man. Divers :  Ice Cold Beer => Trois fois rien quoi ! :D
Ma séance sur le divan : c'est grave Docteur ? :-\
Ma gaming room, ma storage room

Tibal

Oui c'était juste les potards :D
Et ce test m'a d'ailleurs rappelé qu'un de mes 2 HP est manquant, je n'ai que celui au dessus de l'écran.

J'ai testé rapidement le volant avec la nouvelle Coupler PCB, ça ne marche pas mieux. Je ferai les mesures que tu suggères dans les jours qui viennent.

Tibal

Je relis tes posts en page 2, et je vois que la Coupler PCB que tu utilises pour tes tests est encore une 3eme version de celle-ci, avec 2 transistors et 2 résistances.
As-tu déjà testé ton montage avec la PCB "plus simple" que j'ai reproduite ?

Little_Rabbit

Re,

En effet, le coupleur que j'utilise est celui que mon frère avait dans sa borne Pole Position, mais qui provient à priori d'une Road Blaster :).

Non, je ne crois pas avoir fait le test avec un modèle comme celui que tu as reproduit. J'en ai un dans ma Pole Po' 2 upright : j'essayerai de trouver le temps ce week-end de la démonter et faire le test.

A+
Recherche bornes dédiées ou PCB originaux: Miss Pacman, Dig Dug, Galaga, Mappy, Asteroids, Battlezone, Missile Command, Tempest, Star Wars, Donkey Kong (+ Jr), Mario Bros, Moon Patrol, Defender, Joust, Frogger, Gyruss, Pooyan, Space Tactics, Zaxxon, etc. Flip : Gottlieb des années 80 (Spirit, Amazon Hunt, ...), Baby Pac Man. Divers :  Ice Cold Beer => Trois fois rien quoi ! :D
Ma séance sur le divan : c'est grave Docteur ? :-\
Ma gaming room, ma storage room

fiend41

ça rappelle le travail fait sur des  raspberry en interface (toutes sold out...) adaptés à des jeux sega aux contrôles analogiques/potards style  Afterburner/Thunderblade...
"C'était un fou un peu mystique Mais avec une certaine crédibilité..."

Tibal

Hello,

J'ai fait une première mesure, j'ai bien le 5v qui arrive au Coupler PCB.

Mais au passage j'ai remarqué quelque chose qui, je pense, réduit fortement les chances de fonctionnement :



Little_Rabbit

Salut,

Ah super !!  :-)=

Finalement, tout fonctionnait du 1er coup, ce n'était qu'une histoire de fil coupé, et de potard à zéro ! :)

Citation de: Tibal le Jeudi 27 Juillet 2023, 17:07:26 PM

Vendredi soir j'ai jeté un œil au coupleur que j'avais dans ma Pole Po' 1 cockpit : c'est le même que celui là ! :)

J'ai reconstitué son schéma, et en fait cela ne fait que rajouter en aval des phototransistors des optocoupleurs des portes Non à trigger de schmitt :) (le trigger de Schmitt offre une meilleure immunité au bruit, au ajoutant un hystérésis ;)).

J'avais donc rapidement testé les deux autres coupleurs en ma possession, ceux que j'ai sur ma Pole Po' 1 cockpit et Pole Po'2 upright, et ni l'un ni l'autre ne semblaient fonctionner sur mon volant de fortune ! :-\ Mais je n'avais fait que les présenter manuellement au niveau de la roue codeuse, sans les monter sur le Mecanno :). J'avais commencé à me demander si cela ne pouvait pas venir des résistance de pull-donw de valeur un peu faible (330 ohms, qu'on aurait pu passer à 3,3 k ohms je pense...).

Je suis content de voir que cela fonctionne en l'état sur ta borne !  ^-

A+
Recherche bornes dédiées ou PCB originaux: Miss Pacman, Dig Dug, Galaga, Mappy, Asteroids, Battlezone, Missile Command, Tempest, Star Wars, Donkey Kong (+ Jr), Mario Bros, Moon Patrol, Defender, Joust, Frogger, Gyruss, Pooyan, Space Tactics, Zaxxon, etc. Flip : Gottlieb des années 80 (Spirit, Amazon Hunt, ...), Baby Pac Man. Divers :  Ice Cold Beer => Trois fois rien quoi ! :D
Ma séance sur le divan : c'est grave Docteur ? :-\
Ma gaming room, ma storage room

Tibal

Micro-avancées du jour :

- Les 2 repros de Coupler PCB (avec ITR-9606 et ITR-9608 donc) fonctionnent.
Juste, quand on tourne le volant à gauche, la souris se déplace à droite. C'est un truc qui s'inverse facilement dans MAME ensuite ?

- Ma Coupler PCB originale ne fonctionne pas chez moi non plus. J'essaierai donc toutes les PCB avec des résistances de pull-down de 3,3K ^-

Little_Rabbit

Salut,

Citation de: Tibal le Mardi 01 Août 2023, 19:17:42 PM- Les 2 repros de Coupler PCB (avec ITR-9606 et ITR-9608 donc) fonctionnent.
Juste, quand on tourne le volant à gauche, la souris se déplace à droite. C'est un truc qui s'inverse facilement dans MAME ensuite ?

Cool que tes deux repros fonctionnent !  ^-

Pour le sens de rotation, tu l'as constaté sur le bureau de Windows ?

Je pense que cela provient de mon panel de test :) :



Comme on le voit sur cette photo, ma roue codeuse tourne dans le même sens que le volant. Alors que sur une borne Pole Position, du fait de la présence du jeu d'engrenages utilisé pour multiplier la vitesse de rotation de la roue codeuse, la roue tourne dans le sens inverse du volant !...



Je ne sais pas si c'est modifiable dans MAME, mais le plus logique est de le modifier à la source, c'est à dire dans... le source :D du driver Arduino, d'autant que c'est prévu d'origine :



// Mettre 1 ou -1 selon le sens de déplacement souhaité pour le curseur de souris
const int SensRotationX = 1;

int range = 2;                    // output range of X movement; affects movement speed
const int responseDelay = 10;     // response delay of the mouse, in ms


Il suffit donc de passer à -1 le sens de rotation, et recompiler/téléverser le script du Leonardo :) =>


// Mettre 1 ou -1 selon le sens de déplacement souhaité pour le curseur de souris
const int SensRotationX = -1;

int range = 2;                    // output range of X movement; affects movement speed
const int responseDelay = 10;     // response delay of the mouse, in ms





Citation de: Tibal le Mardi 01 Août 2023, 19:17:42 PM- Ma Coupler PCB originale ne fonctionne pas chez moi non plus. J'essaierai donc toutes les PCB avec des résistances de pull-down de 3,3K ^-

OK, merci ! Je n'ai pas eu le temps de faire l'essai de mon côté...

A+
Recherche bornes dédiées ou PCB originaux: Miss Pacman, Dig Dug, Galaga, Mappy, Asteroids, Battlezone, Missile Command, Tempest, Star Wars, Donkey Kong (+ Jr), Mario Bros, Moon Patrol, Defender, Joust, Frogger, Gyruss, Pooyan, Space Tactics, Zaxxon, etc. Flip : Gottlieb des années 80 (Spirit, Amazon Hunt, ...), Baby Pac Man. Divers :  Ice Cold Beer => Trois fois rien quoi ! :D
Ma séance sur le divan : c'est grave Docteur ? :-\
Ma gaming room, ma storage room

Tibal

#60
Citation de: Little_Rabbit le Mardi 01 Août 2023, 21:27:28 PMPour le sens de rotation, tu l'as constaté sur le bureau de Windows ?
Oui, sur le bureau Windows :)

Citation de: Little_Rabbit le Mardi 01 Août 2023, 21:27:28 PMIl suffit donc de passer à -1 le sens de rotation, et recompiler/téléverser le script du Leonardo :) =>

// Mettre 1 ou -1 selon le sens de déplacement souhaité pour le curseur de souris
const int SensRotationX = -1;
C'est modifié, et ça marche dans le bon sens !  :-)=

J'ai installé les résistances de pull-down de 3,3K à la place des 330.
Avec les repros, ça marche tout aussi bien.
Avec l'originale, je vois le curseur de souris vibrer sur place quand je tourne le volant, mais il ne se déplace pas...
Testé sur le bureau Windows là aussi.

Tibal

#61
J'ai lancé MAME et tenté une partie. Tout ne fonctionnait pas direct (normal) mais après avoir un peu tâtonné et surtout suivi les indications de Little_Rabbit dans ce topic pour la config de MAME, j'ai pu faire une partie.

Il y avait cependant quelques points non-abordés jusqu'ici :

Déjà quand je tournais le volant, la voiture tournait mollement. Il fallait faire plusieurs tours de volant pour espérer prendre correctement une courbe. Dans le Service Menu (auquel on accède en faisant Tab au clavier, puis en allant dans 'DIP Switches', et en mettant sur ON la ligne Service Menu. F2 ne fonctionne pas chez moi...), les digits de la ligne STEERING augmentaient très lentement en tournant le volant, et plusieurs dizaines de tours étaient nécessaires pour aller de 00 à FF

Pour régler cela il faut aller dans le Tab Menu de MAME, puis dans Analog Controls.

Le Menu qui apparait quand on fait 'Tab' au clavier :


Le Menu Analog Controls :


Là on peut jouer sur la sensibilité ('Dial Sensitivity').
A 30 de sensibilité, c'était le feu. La voiture réagissait trop, et il fallait bien moins d'un tour de volant pour faire défiler tous les digits du Service Menu.
A 20 c'était très jouable. Un tour de volant fait passer de 00 à A5 en Service Menu.
A 15 c'était jouable aussi. Un tour de volant fait passer de 00 à 7C en Service Menu.

Ma question : sur le jeu original, quelle est la plage hexadécimale pour exactement 1 tour de volant ?

Au passage on voit que l'on pouvait inverser le sens de la direction avec 'Dial Reverse', ce qui fait une alternative au fait de toucher au code source de l'Arduino.

Quant au paramètre 'Dial Digital Speed', j'ai l'impression qu'il ne sert qu'à décaler la position par défaut du curseur, ce qui semble sans intérêt pour une borne avec un volant sans butée comme Pole Position


Ensuite, j'ai dû régler le shifter. Comme l'a expliqué Little_Rabbit, j'ai ajouté les arguments value="0" et toggle="no" à la ligne correspondant au shifter dans polepos.cfg pour avoir un comportement adapté. Cependant Hi et Low en jeu étaient inversés par rapport à la position physique du levier. Après une petite recherche, j'ai vu que ajouter "NOT" devant l'input du shifter devait suffire. Et c'était bien le cas.



Autre question : Dans le jeu original, à quoi sert l'interrupteur à 2 positions derrière la Coin Door, et quel est son comportement ?
Est-ce qu'il permet d'aller dans le service menu ? ou est-ce qu'on y accède réellement par des DIP Switches comme le suggère MAME ?

Il me restera donc ce switch à paramétrer, la sensibilité du volant à régler, mais aussi la pédale d'accélérateur à étalonner pour avoir des inputs 100% fidèles à l'original.

EDIT :
Je m'auto-réponds à ça :
Citation de: Tibal le Samedi 05 Août 2023, 02:32:50 AMAutre question : Dans le jeu original, à quoi sert l'interrupteur à 2 positions derrière la Coin Door, et quel est son comportement ?
Est-ce qu'il permet d'aller dans le service menu ? ou est-ce qu'on y accède réellement par des DIP Switches comme le suggère MAME ?
D'après la doc, l'interrupteur permet bien d'aller dans le Service Menu lorsqu'il est sur ON (et c'est la seule façon d'y aller, les DIP Switches ne permettent pas ça). J'essaierai de bien paramétrer ça dans MAME.

Tibal

Yop,

Concernant le switch qui permet d'aller dans le service mode, il faut modifier le default.cfg qui est dans le dossier "cfg" de MAME, et mettre en face de la fonction 'Service' le ou les boutons qui l'activeront.

Dans mon cas, pour avoir F2 du clavier et le Switch de la borne qui passent au mode Service, il faut donc mettre ce qui est en bleu ici :
ça ne semblait pas marcher chez toi Little_Rabbit (voir page 3), mais chez moi ça fonctionne...



A noter que :

- toutes les lignes au dessus (service 1 à 4) sont inutiles ici

- paramétrer le bouton service dans polepos.cfg (ou dans 'Input(this game)', puisque c'est la même chose) est sans effet

- il ne faut pas oublier qu'un bouton numéro N dans l'interface MAME a le numéro N+1 dans les fichiers .cfg

- je n'ai pas réussi à avoir le comportement parfaitement identique à l'original pour ce bouton service :
D'origine, quand on met sur ON on arrive dans le Service Menu, et quand on remet sur OFF on revient dans le jeu.
Ici quand je mets sur ON, ça bascule en Service Menu. Si je remets sur OFF, ça reste en Service Menu, et c'est au ON suivant qu'on arrivera en jeu.
Il faudrait mettre une fonction de type toggle="no", mais je n'ai pas réussi à le faire. Lors de mes essais, chaque fois que j'ajoutais des arguments dans le default.cfg (même avec un argument Value, mais peut-être n'ai-je pas bien fait), ils disparaissent, MAME doit écrire dans ce fichier et corriger ce qui ne lui va pas j'imagine.

Little_Rabbit

Salut,

Merci pour ces tests et ces belles avancées dans la compréhension du fichier de config MAME !

Citation de: Tibal le Samedi 05 Août 2023, 02:32:50 AMMa question : sur le jeu original, quelle est la plage hexadécimale pour exactement 1 tour de volant ?

Il y a 3 ans, j'avais justement fait une telle vidéo pour calibrer à peu près mon panel de test :).

Voici la vidéo en question, faite avec un PCB original en mode service :


On voit donc qu'il faut 2,5 tours de volant pour passer de $00 à $FF : cela te donnera une référence pour régler la sensibilité.

Si tu jettes un œil au source Arduino, tu remarqueras qu'il y a également un paramètre pour régler la sensibilité, juste à côté de celui qui définit le sens de rotation :


// Mettre 1 ou -1 selon le sens de déplacement souhaité pour le curseur de souris
const int SensRotationX = 1;

int range = 2;                    // output range of X movement; affects movement speed
const int responseDelay = 10;     // response delay of the mouse, in ms


En passant ce "range" à 3 ou 4, tu dois augmenter la vitesse du curseur car ce range sert de coefficient multiplicateur :

    // calculate the movement distance based on the new position
    int  distanceX = (newX - positionX) * range;
   
    // if X is non-zero, move:
    if (distanceX != 0) {
      // seul l'axe des X évolue pour un spinner
      Mouse.move(distanceX, 0, 0);



Une autre solution est aussi peut être d'utiliser le réglage de sensibilité de la souris dans le panneau de configuration de Windows :).




Citation de: Tibal le Samedi 05 Août 2023, 02:32:50 AMQuant au paramètre 'Dial Digital Speed', j'ai l'impression qu'il ne sert qu'à décaler la position par défaut du curseur, ce qui semble sans intérêt pour une borne avec un volant sans butée comme Pole Position

Je me demande si ce paramètre ne sert pas à régler la sensibilité ou vitesse d'incrément quand on joue par exemple au clavier : cela fixera le temps qu'il faut maintenir la touche enfoncée pour tourner. Avec une valeur importante, une pichenette sur la touche doit suffire pour braquer à fond (ce qui rendrait le jeu injouable ;)). Mais en effet, dans le cas d'un volant/souris, ce paramètre n'a sûrement aucun intérêt.


Concernant le levier de vitesse, selon les fois où j'ai testé des configurations, je n'obtenais pas toujours le même résultat ! :-\ Tantôt il était actif au niveau haut, tantôt au niveau bas... Il serait vraiment intéressant de trouver une documentation détaillée sur les fichiers de config MAME car moi c'est vraiment par tâtonnement et parfois empiriquement que je parvenais à certains résultats, sans bien comprendre le rôle de chaque attribut...

Citation de: Tibal le Samedi 05 Août 2023, 02:32:50 AMAutre question : Dans le jeu original, à quoi sert l'interrupteur à 2 positions derrière la Coin Door, et quel est son comportement ?
Est-ce qu'il permet d'aller dans le service menu ? ou est-ce qu'on y accède réellement par des DIP Switches comme le suggère MAME ?

Tu l'as trouvé par toi-même : ce bouton sert bien à rentrer dans le mode service :). On y reste tant qu'il est poussé, et on revient en mode jeu en le replaçant dans sa position initiale.

Sinon bravo pour avoir trouvé comment activer le mode Service avec un bouton !!   :-)=

Je n'avais rien trouvé à l'époque ! En effet, un mode "toggle = no" serait souhaitable... Je vais faire des tests de mon côté également :).

A+
Recherche bornes dédiées ou PCB originaux: Miss Pacman, Dig Dug, Galaga, Mappy, Asteroids, Battlezone, Missile Command, Tempest, Star Wars, Donkey Kong (+ Jr), Mario Bros, Moon Patrol, Defender, Joust, Frogger, Gyruss, Pooyan, Space Tactics, Zaxxon, etc. Flip : Gottlieb des années 80 (Spirit, Amazon Hunt, ...), Baby Pac Man. Divers :  Ice Cold Beer => Trois fois rien quoi ! :D
Ma séance sur le divan : c'est grave Docteur ? :-\
Ma gaming room, ma storage room