Voilà comment je m'y suis pris:
J'ai coupé la prise usb du gun, gardé l'alim telle qu'elle et re-routé la gachette et le phototransistor sur les fils D+ et D-.
Côté console j'ai relié la masse et le 5V au port manette, ainsi que la gachette sur C et le phototransistor sur D avec des résistances de tirage.
J'affiche un sprite représentant une cible au centre de l'écran puis je regarde chaque frame si la gâchette est appuyée.
Si c'est le cas, à la frame suivante je met la couleur du backdrop en blanc et je démarre la timer interrupt pour avoir une interruption à chaque début de ligne vidéo.
Le code boucle et incrémente un compteur qui est remis à zéro par cette interruption (donc je devrais avoir 0 au début de la ligne et quelque chose genre 100 à la fin).
Dès que D descend (le phototransistor a vu le blanc), le code sort de la boucle et je récupère direct le numéro de ligne vidéo depuis un registre GPU.
Je remet le fond en noir, je coupe l'interruption timer et je met de côté la valeur du compteur.
Ensuite je fais une bête soustraction pour positionner le sprite en Y d'après le numéro de ligne.
Et là viens mon problème: la valeur du compteur varie entre 0 et 16, aléatoirement... Je pige pas.
J'ai bien vérifié que l'interruption avait lieu à chaque début de ligne, qu'elle vidait bien le compteur.
La boucle incrémente bien avec la bonne taille de variable.
Donc en Y ça marche nickel, mais en X j'arrive à rien
