MSX Village forum

La Place des Développeurs Question: Basic Strig(0) 2 boutons ?

kirem Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 05/11/2010 à 13h29

Messages: 45

Le 09/11/2010 à 23h40
J'ai un petit problème,le msx a des manettes à 2 boutons,en basic manette port 1=strig(1) et strig(3).
Mais si je veux utiliser le clavier en manette pas de probléme stick(0) pour les directions et strig(0) bouton 1(barre d'espace) et c'est là le hic y'a pas visiblement de bouton 2 définit pour le clavier je peux faire :

boucle jeu:
IF STICK(0) THEN missille dans ta face (bouton 1)
A$=INKEY$
IF A$="b" THEN saut dans l'espace (bouton 2 sur touche B)
A$=""
fin boucle jeu

En théorie sa fonctionne mais si le clavier et asiatique,russe ou arabe le programme n'aurra jamais de A$="b" y'a pas une autre solution que inkey$ ,je crois que l'on peut lire le clavier avec inp() mais j'ai pas les connaissances pour le faire .
Site web    
granced Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 09/10/2009 à 09h18

Messages: 1500

Le 10/11/2010 à 08h18
Je ne saurais trop te conseiller de compulser cet article : http://www.msxvillage.fr/wiki/wiki.php?title=strig


MSX un jour, MSX toujours ! :D
Site web    
Walter Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 02/10/2009 à 19h33

Messages: 1880

Le 10/11/2010 à 08h23
Tu peux définir la touche que tu veux, avec l'instruction INKEY$ pour ton 2ème bouton kirem.

Les touches "B" et "N" sont communes aux différents claviers.
Ce sont celles généralement utilisées dans les jeux Konami.

Pour définir une touche de clavier, tu peux aussi consulter l'instruction CHR$ du Wiki :)
KN2000 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 08/06/2010 à 09h30

Messages: 209

Le 10/11/2010 à 13h33
Comme dit Walter, même chez Konami, ils ont rencontré le souci :p

F1-Spirit : tu freines avec la touche M ou la touche , suivant le clavier...


Nous sommes en 2010 aps JC, toute la Gaule est envahie. Ah ben non, apparement, un village résiste encore aux envahisseurs Personalcomputerum et autres Consoledessalum. Bienvenue dans l'antre du emessix !
   
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5776

Le 10/11/2010 à 19h09
Et bien ca alors:heink , je ne savais meme pas qu'il existé un joystick 2 boutons pour MSX^^ J'entend par la , 2 boutons aux fonctions differentes, car de memoire, sur tout les joysticks que j'ai acheté (qui n'était probablement pas des specifiques MSX, mais des compatible MSX), les deux boutons avaient la meme fonction. Ceci dit , la sourie a 2 boutons aux fonctions différente :oups



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
kirem Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 05/11/2010 à 13h29

Messages: 45

Le 10/11/2010 à 22h04
Bon je vais utiliser inkey$ alors.

Et oui le msx a 2 bouton différent,c'est pour ça que les jeux japonais on souvent 2 boutons d'action car les manettes étaient dispo ,le célébre mache à balais Quickshot qu'on a tous connus dans les années 80 existe en blanc avec un autocollant msx avec les 2 boutons séparer,yeno et sony en avaient aussi.
Dans un numéro de Micro News il y'avait un hack pour transformer un pad sega master system en pad msx(faut inverser 2 fils je crois) ,on peut le faire avec un pad megadrive aussi (les premiers à 3boutons),attention ne pas brancher un pad sega sans modif et appuyer sur le 2eme bouton .
Site web    
galine Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 27/08/2010 à 02h22

Messages: 1363

Le 11/11/2010 à 01h00
Les manettes fm towns, X1, X68000 et bien évidement les manettes du croco mais ces dernières demandes des modifications si mes souvenirs sont bon. Il faudrait que je check les pinout de ces machines.

Google+    
MSXosaure Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 03/10/2009 à 00h09

Messages: 774

Le 11/11/2010 à 03h26
Il y aune alternative à INKEY si tu veux, elle est plus rapide et plus "réactive" car elle concerne l'adressage des ports du PPI (Au secours :| ).
Mais non rien d'affolant on va pas non plus entrer directement dans la programmation ASM, :fou .

Il faut, dans un premier temps, s'équiper du tableau suivant.:



Le truc est simple si je veux scruter la touche "B", je dois envoyer dans le port C la valeur correspondante de la ligne où se situe "B", en l'occurrence: 2.

Ensuite je dois lire la valeur renvoyé dans le port B, c'est une valeur binaire codé sur 8 bit chaque colonne correspondant à un bit (vous savez: &B00010010,&B11001100,...) dans le cas présent si la touche "B" est enfoncée cela renverra la valeur &B01111111 (Le B se situant en début de rangée)autrement dit 127(en décimale). les touches non-enfoncées renvoyant '1' et les touches enfoncées '0'.

Pour la programmation ça se complique un peu:
Pour écrire dans C c'est: OUT &HAA,n° de ligne
Pour lire dans B c'est: variable=INP( &HA9)

Au final en programmation ça donne ça:

10 OUT &HAA,2: Z=INP(&hA9): IF Z=127THEN 'saut dans l'espace'

Attention cette méthode ne s'affranchit pas de l'appui sur une touche de la même ligne du port C, il existe une astuce mais cette petite ligne est déjà bien efficace!


Le MSXien le plus à l'ouest :fou ... ou presque :D
osaurer
   
kirem Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 05/11/2010 à 13h29

Messages: 45

Le 12/11/2010 à 20h45
Merci MSXosaure,ton explication est limpide c'est exactement ce que je voulais.
J'imprime ton tableau trop bien fait.

Site web    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie