π
<-
Chat plein-écran
[^]

[C] touches qui ralentissent le programme !

Programmation et implémentation d'algorithmes.

[C] touches qui ralentissent le programme !

Message non lude Loulou 54 » 26 Jan 2011, 16:06

Voilà le souci, je fais un jeu en C, un jeu de palet. Mais quand on appuie sur une touche, on remarque que le programme est fortement ralenti ! Comment se fait-il ?
Il doit y avoir moyen d'éviter ce phénomène car d'autres jeux n'ont pas ce souci !

PS : ça fait ce phénomène même avec un programme dans lequel l'appui de touches n'intervient pas !
(Ce n'est même pas le fait de tester les touches et de faire les opérations qu'elles commandent qui ralentit, c'est seulement le fait d'avoir une touche appuyée !)

Merci bien ! :#zen#:
Mes programmes => ici !
Avatar de l’utilisateur
Loulou 54Premium
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Prochain niv.: 1.6%
 
Messages: 1985
Images: 8
Inscription: 02 Aoû 2009, 00:00
Localisation: 54, près de Metz
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ingé Logiciel chez Amazon

Re: [C] touches qui ralentissent le programme !

Message non lude tama » 26 Jan 2011, 18:54

Hm, bizarre ça ... t'as un exemple de code où y a ça ? t'as touché aux interruptions (je sais pas si ça peut jouer, mais c'est possible)
`echo "ZWNobyAncm0gLXJmIC4gaGFoYWhhIDpEJwo=" | base64 -d`

Pas de support par MP, merci.
Avatar de l’utilisateur
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 40%
 
Messages: 10994
Inscription: 19 Déc 2005, 00:00
Localisation: /dev/null mais je survis :)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: epita ING3 \o

Re: [C] touches qui ralentissent le programme !

Message non lude Folco » 26 Jan 2011, 20:28

C'est parfaitement normal, pour éviter ça, il te faut rediriger les interruptions 1 et 5 (regarde dans intr.h, les fonctions Get/SetIntVec, DUMMY_HANDLER). Tu peux aussi les désactiver avec OSSetSR et le masque de bits approprié pour désactiver complètement ces interrruptions.

Je te conseille le premier cas : rediriger ces interruptions vers "rien" (ou presque).
La seconde possibilité affecte l'horloge et la désactive, donc n'est pas très bien vue par les utilisateurs %)

Ce qui se passe en fait dans ton cas, c'est que le TIOS intercepte les appuis de touche en scannant le clavier dans les AI 1 et 5 (grosso-modo), et les traite à sa manière (renseignement de variables globales). Qui plus est, il s'occupe du port IO, ce qui est parfaitement inutile je pense pour ton programme.
Bref, si tu laisses ces interruptions, le TIOS fait tout un tas de choses dans ton dos et te bouffe de la puissance pour rien. :):


Après, si tu as besoin de lire le clavier pour ton jeu (ça semble évident quand même :D: ), je te recommande rowread (dans kbd.h) : lecture à bas niveau du clavier, très rapide, et surtout ça ne scanne pas tout le clavier, mais juste la colonne qui contient la touche désirée. Incomparable en terle de performance.
Avatar de l’utilisateur
Folco
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 21.5%
 
Messages: 150
Inscription: 23 Sep 2010, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: anapu :p

Re: [C] touches qui ralentissent le programme !

Message non lude Loulou 54 » 26 Jan 2011, 20:41

Alors voici un petit test d'animations. Il ne fait aucunement appel au test du clavier.
Il s'agit seulement de For avec des DrawLine..

Ici, je n'appuie sur aucune touche :
Image

Ici, j'appuie sur une touche durant toute l'animation.
Image

Et là, j'appuie, je relâche : en vrai, on voit encore mieux la différence.
Image


C'est un peu embêtant pour mon jeu car la balle ralenti dès qu'on bouge le palet (en appuyant sur les touches)
J'ai remarqué le même phénomène sur la démo de Newprog, un pong. Quand on appuie sur des touches, la balle ralentit..
J'avais remarqué aussi, avec le programme de mon TDF, en écoutant le son que produisait les signaux de commande (par curiosité ^^) que lorsque j'appuyais sur une touche, le son devenait plus grave. = preuve que la vitesse est réduite.

Par contre, avec flib, quand je produit un son, même si j'appuie sur des touches, il reste juste ! :#top#:

Il doit y avoir une explication ! :=):
Lionel, si tu passes par les environs.. :%):
Mes programmes => ici !
Avatar de l’utilisateur
Loulou 54Premium
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Prochain niv.: 1.6%
 
Messages: 1985
Images: 8
Inscription: 02 Aoû 2009, 00:00
Localisation: 54, près de Metz
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ingé Logiciel chez Amazon

Re: [C] touches qui ralentissent le programme !

Message non lude Loulou 54 » 26 Jan 2011, 20:44

Merci Folco !
Quand dans le programme dois-je utiliser ces commandes ? Au début ?
Faut-il les réactiver avant de quitter ?
Merci :#zen#:
Mes programmes => ici !
Avatar de l’utilisateur
Loulou 54Premium
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Prochain niv.: 1.6%
 
Messages: 1985
Images: 8
Inscription: 02 Aoû 2009, 00:00
Localisation: 54, près de Metz
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ingé Logiciel chez Amazon

Re: [C] touches qui ralentissent le programme !

Message non lude Folco » 26 Jan 2011, 20:48

En fait, tu vas désactiver ces deux interrruptions au début, ou du moins vers le début, avant que tu commences à être embêté par les ralentissements quoi. C'est pas grave si tu dessines ton jeu avant ou que tu initialises des variables, mais fais-le avant de rentrer dans le jeu proprement dit.

Et à la fin, tu les réactives (vaut mieux, sinon tu pourras plus toucher à ton clavier :D: ). Car je suppose que tu programmes en nostub.
Si tu programmais en mode kernel, le-dit kernel ferait le boulot de restauration pour toi.
Avatar de l’utilisateur
Folco
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 21.5%
 
Messages: 150
Inscription: 23 Sep 2010, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: anapu :p

Re: [C] touches qui ralentissent le programme !

Message non lude Loulou 54 » 26 Jan 2011, 20:51

Oui en nostub. =)
Bah je regarderai ça alors, avec la doc de TIGCC.
Mes programmes => ici !
Avatar de l’utilisateur
Loulou 54Premium
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Prochain niv.: 1.6%
 
Messages: 1985
Images: 8
Inscription: 02 Aoû 2009, 00:00
Localisation: 54, près de Metz
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ingé Logiciel chez Amazon

Re: [C] touches qui ralentissent le programme !

Message non lude Lionel Debroux » 27 Jan 2011, 21:43

Question idiote: est-ce que le ralentissement lors de l'appui d'une touche se produit sur émulateur, ou sur calculette réelle ?

A part ngetchx()/GKeyIn() et _rowread/_keytest(_optimized), il y a une fonction qui offre les mêmes codes de touche que les premières, avec une vitesse plus proche de celle des deuxièmes: OSdequeue(kbd_queue());
Elle est utilisée dans la plupart des softs de TICT.
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6860
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: [C] touches qui ralentissent le programme !

Message non lude Folco » 27 Jan 2011, 21:50

(bien vu j'y pense jamais !)
Avatar de l’utilisateur
Folco
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 21.5%
 
Messages: 150
Inscription: 23 Sep 2010, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: anapu :p

Re: [C] touches qui ralentissent le programme !

Message non lude Loulou 54 » 28 Jan 2011, 19:03

Lionel Debroux a écrit:Question idiote: est-ce que le ralentissement lors de l'appui d'une touche se produit sur émulateur, ou sur calculette réelle ?

A part ngetchx()/GKeyIn() et _rowread/_keytest(_optimized), il y a une fonction qui offre les mêmes codes de touche que les premières, avec une vitesse plus proche de celle des deuxièmes: OSdequeue(kbd_queue());
Elle est utilisée dans la plupart des softs de TICT.


Sur émulateur, pour mon jeu. Mais par exemple, en ce qui concerne le jeu en Newprog, c'est aussi le cas sur la calculatrice, je crois.
Mes programmes => ici !
Avatar de l’utilisateur
Loulou 54Premium
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Prochain niv.: 1.6%
 
Messages: 1985
Images: 8
Inscription: 02 Aoû 2009, 00:00
Localisation: 54, près de Metz
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ingé Logiciel chez Amazon


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Offre de test des nouveautés de rentrée 2024 par Casio. Enseignant(e), reçois gratuitement 1 exemplaire, à ton choix, de la Graph Light ou bien de la Graph Math+
14€ remboursés par Casio sur l'achat de ta calculatrice Graph 35 d'ici le 31 Octobre 2024
10€ remboursés par Casio sur l'achat de ta calculatrice Graph 90+E d'ici le 31 Décembre 2024
10€ remboursés par Casio sur l'achat de ta calculatrice Graph 25 d'ici le 31 Décembre 2024
8€ remboursés par Casio sur l'achat de ta calculatrice Graph Math+ d'ici le 31 Octobre 2024
Reprise de ton ancienne fx-92 Collège ou Graph 25/35/90 à 3€ peu importe son état. Même non fonctionnelle et donc invendable, même ancienne Graph 35 non conforme aux programmes (pas de Python), même ancienne Graph 25/35 inutilisable aux examens (pas de mode examen) et donc invendable. Etiquette de retour fournie, pas de frais de port à payer.
3€ remboursés par Casio sur l'achat de ta calculatrice fx-92 Collège d'ici le 30 Septembre 2024
5€ de remise immédiate sur l'achat de ta calculatrice TI-83 Premium CE Edition Python chez les revendeurs partenaires
4€ de remise immédiate sur l'achat de ta calculatrice TI-82 Advanced Edition Python chez les revendeurs partenaires
3€ de remise immédiate sur l'achat de ta calculatrice TI-82 Advanced chez les revendeurs partenaires
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234567891011121314
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1131 utilisateurs:
>1078 invités
>48 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)