La Place des Développeurs Question: Basic Strig(0) 2 boutons ?
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 .
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 .
Je ne saurais trop te conseiller de compulser cet article : http://www.msxvillage.fr/wiki/wiki.php?title=strig
MSX un jour, MSX toujours !
Walter
Membre non connecté
Conseiller Municipal
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
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
Comme dit Walter, même chez Konami, ils ont rencontré le souci
F1-Spirit : tu freines avec la touche M ou la touche , suivant le clavier...
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
Et bien ca alors , 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
MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
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 .
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 .
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.
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, .
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!
Mais non rien d'affolant on va pas non plus entrer directement dans la programmation ASM, .
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 ... ou presque
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie