Surtout que pour la nes et la supernes, c'est un timer qui fait office de bouton. De ce aue je me souviens (ça date hein, j'ai pas l'ensemble des infos en tête de suite maintenant), il y a une espèce d'horloge qui tourne et qui passe en état haut pour chaque bouton pressé.
On va prendre un exemple concret, bien que faux niveau chiffre, avec un exemple sur la manette de nes.
Supposons un cycle de 9ms. A chaque ms on a un "tick"
Le 0 fait un "reset" de la manette (pour lui indiquer qu'elle repart de 0)
Chaque tick suivant correspond à une touche appuyée ou non. Si le niveau est haut au tick 1, alors c'est que la touche gauche est enfoncée, et je fais comme ça pour mes 9 ticks.
0 : reset
1 : gauche
2 : droite
3 : haut
4 : bas
5 : select
6 : b
7 : start
8 : a
Toutes les 9 ms j'ai une information complète sur l'état de la manette.
Il suffit de reproduire ce principe sur l'infrarouge et bingo, ça marche... Du moins en théorie c'est simple
Ps : j'ai pas mis a et b côte à côte, parce que si j'avais dû le faire en vrai, j'aurais ainsi évité 2 états hauts d'affilé, ce qui est pratique pour éviter les rebonds... Mais c'est purement technique
Pps : j'ai trouvé
un article sur le fonctionnement de la manete de snes. La manette de snes utilise la même techno que celle de la nes, mais à une fréquence plus élevée il me semble.
Edit : j'y étais presque, l'état haut est l'état "non appuyé" contrairement à ce que j'ai dit, mais c'est souvent le cas dans ce genre de montage. Si quelqu'un sais pourquoi, je veux bien une explication...