1

Bonjour a tous

Je programme actuellement un jeu sous tigcc qui nécessitera d'appuyer sur plusieurs touches simultanément.

Je suppose que tout comme sur les claviers d'ordinateurs, le nombre de touches qui fonctionnent en appui simultané est limite, donc je voudrais aussi savoir quelles sont ces touches sur la ti.

Je sais que c le cas pour les 4 flèches ainsi que les 4 touches a gauche de celles-ci car dans la librairie flib, une fonction (keylow si je me souviens bien) permet de récupérer l'état de ces touches sous forme d'une liste.

Y en a t'il d'autres?
Quelle est la fonction sous tigcc qui me permette de récupérer le numéro DES touches enfoncées de la ti?



Il n'y a rien la dessus sur le tuto de squale92 et je n'ai rien trouve sur la doc de tigcc mais mon niveau en anglais y est peu être pour quelque chose :/

Merci beaucoup

Natha

2

natha

Enorme, c'était le nom d'une jument chez mon parrain, éleveur de chevaux, chez qui j'ai passées les meilleurs vacances far-westiennes de toute mon enfance. oui



En fait, on peut récupérer l'état de toutes les touches, indépendamment de l'état des autres (je te fais grâce du bug de la matrice clavier). Regarde du côté de _rowread (kbd.h, regarde dans la doc). C'est ainsi que procède FLib. Dans la pratique, on peut détecter 25 appuis de touches simultanés si ça nous amuse.

Et pour info, la doc de TIGCC fournie avec est plus simple à utiliser que celle en ligne, pour des raisons évidentes.

3

Le "bug de la matrice clavier" dont parle Folco est assez simple à décrire et AMHA c'est important pour répondre à ta question: si les touches de coordonnées (x1,y1), (x1,y2) et (x2,y1) sont enfoncées, le matériel croit que (x2,y2) l'est aussi.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

4

À noter que ce n'est pas vraiment un bug, c'est une économie de la part de TI (qu'on trouve aussi sur la très grande majorité des claviers) : résoudre ce problème nécessite des composants électroniques supplémentaires. À leur décharge, y'a pas de raison d'appuyer sur plusieurs touches à la fois sur une calculatrice graphique, à priori tongue
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

5

merci beaucoup!
j'essaie ca tt de suite

Et pour info, la doc de TIGCC fournie avec est plus simple à utiliser que celle en ligne, pour des raisons évidentes.

oui en effet c la doc de tigcc que j'utilise wink j'allais pas vs copier tt le chapitre de la doc grin

Natha

6

mdr j'avais pas vu ton message cache Folco grin
...Nom peu courant pour une bête^^ Natha est le diminutif de Nathanael

Enfin revenons a nos moutons

Ça y est j'ai compris pas mal de trucs sur cette librairie smile

J'ai fait un petit prog pour tester l'appui sur une touche particulière, mais il renvoie 0 pour la touche enfoncée, et le numéro de la lignepour toutes les autres touches de la colonne (et 0 sur toutes les autres colonnes). Comment remédier a ce problème?

Voici mon programme:
unsigned char aff(unsigned char row,unsigned char col)
	{
	unsigned char x,nbdec,list[8]={0};
	nbdec=_rowread(pow(2,col));
	for(x=0;x<8;x++,nbdec/=2)    list[7-x]=nbdec%2;  //dec --> binaire
 	return list[7-row];
	}


Et autre petite question pour la route:
Sur la doc ils mettent que la touche ON est une interruption, comment la détecte t on?

7

Auto-int 6. Le fonctionnement est décrit dans cette doc qui fait autorité : http://tict.ticalc.org/docs/J89hw.txt

Pour le reste, autant ça me pose pas de problème en assembleur, autant je suis trop nul en C pour t'aider, cf le topic d'à côté. grin

8

Il est plus simple d'utiliser _keytest que _rowread directement.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

9

Merci KK pour ton conseil, c ce qui me fallait smile
Pour ce qui est de l'interruption, je n'ai pas compris le fonctionnement.
Il y a une fonction pour obtenir l'interruption et une pour la lire?

GetIntVec (0x78) (ou GetIntVec (AUTO_INT_6) je crois que c pareil) renvoie quoi exactement?

au fait le keytest de la touche '=' ne marche pas chez moi(ti89t), j'ai du le remplacer par _keytest (5,4) , ça marche sur les autres calto? (92, V200?) hum

10

A mon sens, ça devrait renvoyer le vecteur, c'est à dire l'adresse du code qui sera exécuté quand une ai6 se produira.

11

en effet
&GetIntVec (AUTO_INT_6)renvoie 0 mais je n'obtiens pas de 1 si j'appuie sur ON hum
Faut faire un truc au préalable avec &SetIntVec?

12

Euh... c'est pas comme ça que t'auras ça. Tu veux faire quoi en fait ? Juste savoir si la touche est enfoncée ou non ?

13

Dans la doc dont je t'ai passé le lien :
$60001A RW
	:1	READ:  Current status of the [ON] key, =0 if pressed
	:7-0	WRITE: Acknowledge [ON] key interrupt (level 6)

T'as juste un bit à lire pour savoir si c'est appuyé.

14

oui je veux juste savoir si c enfonce ou non pr pouvoir couper le prog par ex comme en ti-basic
un truc du style
while(&GetIntVec (AUTO_INT_6)) { ... }
J'ai lu ce passage ds la doc mais comme je disais j'ai tj le 0 meme qd j'appuie sur ON

15

Faut que tu fasses un handler d'interruption alors, que tu vas installer avec SetIntVec(ton handler).
Et tu fais ce que tu veux faire dans ce handler.

16

raa
me soule ce truc je comprends rien triso

j'ai fini par faire un
while(!_keytest (RR_ESC)) { ... }
c pas la même touche mais bon c bien plus court smile
Ce qui change c que le test va être vérifié uniquement en fin de boucle, alors qu'avec les interrupt ça coupe direct (si g bien compris) mais bon ça me suffit.

Et puis de tt facoobllmrblblzzzzzz zzz zzz zzz