Introduction
La manette de jeux est un périphérique rattacher à carte de son, à un contrôleur IDE ou tous simplement à carte de manette de jeux. Leur programmation se faisait à l'origine de façon directe par les ports d'Entrée/Sortie et à partir de l'arrivée de PC/AT d'IBM, un support BIOS par l'entremise de l'interruption 15h fut offert aux programmeurs.
Bouton
On peut connaître l'état des boutons des deux manettes de jeux avec la fonction suivante;
Function
GetJoyButton:Byte;Assembler;ASM
MOV DX,0201h
IN AL,DX
NOT AL
MOV CL,4
SHR AL,CL
END;
Cette fonction retournera les bits suivant:
Bits | Description |
---|---|
0 | Vaut 1 si le bouton A de la première manette de jeux est enfoncée |
1 | Vaut 1 si le bouton B de la première manette de jeux est enfoncée |
2 | Vaut 1 si le bouton A de la deuxième manette de jeux est enfoncée |
3 | Vaut 1 si le bouton B de la deuxième manette de jeux est enfoncée |
Manche
Pour obtenir la position d'une manette de jeux on utilisera la fonction suivante:
Function
JoyPos(Axe:Byte):Word;Assembler;ASM
MOV CL,Axe
MOV BX,1
SHL BX,CL
MOV CX,0FFFFh
XOR AX,AX
XOR SI,SI
MOV DX,0201h
CLI
OUT DX,AL
@@Next:
IN AL,DX
TEST AL,BL
JE @@Done
INC
SI
LOOP
@@Next
@@Done:
STI
MOV AX,SI
@@End:
END;
Le paramètre axe aura la signification suivante:
Valeur | Description |
---|---|
0 | Axe horizontal de la première manette de jeux |
1 | Axe vertical de la première manette de jeux |
2 | Axe horizontal de la deuxième manette de jeux |
3 | Axe vertical de la deuxième manette de jeux |
Cette même procédure pourra utiliser la méthode suivante pour faire un accès au BIOS plutôt:
Function
JoyPos(Axe:Byte):Word;Assembler;ASM
MOV AH,084h
MOV DX,01h
INT 015h
CMP Axe,0
JE @@End
MOV BX,AX
CMP Axe,1
JE @@End
MOV CX,AX
CMP Axe,2
JE @@End
MOV DX,AX
@@End:
END;
Dernière mise à jour : Dimanche, le 1 mai 2016