Section courante

A propos

Section administrative du site

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