181

Mes routines DrawStr sont justes 6x plus rapides que celles d'ams (1.0x) Sniff

C'est l'ordre de grandeur de celles de TICT sur AMS 1.xx. Il n'y a donc pas de différence significative.
Aucune routine de TICT ne dessine en A_SHADED, mais tous les autres modes sont supportés.
Aucune routine générique de TICT ne dessine dans des écrans virtuels impairs, ou de largeur différente de 240 pixels (le deuxième point va peut-être changer, pas du tout sûr).
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

182

TheCodR : GX_DrawStr est indépendante du reste de GX !
Pour les timers, il y a une fonction qui fonctionne pareil que GX_CreateTimer sous AMS 2.0x. Par contre, avec, tu ne pourras pas appeler un ROM_CALL dans un timer si tu compiles avec l'option OPTIMIZE_ROM_CALL.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

183

la rapidité de l'affichage

lol

184

Par rapport aux fonctions de TIGCClib qu'il utilisait jusque là wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

185

ouais allez on va dire ça gringringrin

186

Thibaut a écrit :
TheCodR : GX_DrawStr est indépendante du reste de GX !
Pour les timers, il y a une fonction qui fonctionne pareil que GX_CreateTimer sous AMS 2.0x.

Sous AMS 2.0x seulement? Tu veux parler de quelle fonction?
Il y a en tout cas OSVRegisterTimer de TIGCCLIB. (Le nom en OS est parce que c'était un ROM_CALL dans les vieilles versions de AMS.)
Par contre, avec, tu ne pourras pas appeler un ROM_CALL dans un timer si tu compiles avec l'option OPTIMIZE_ROM_CALL.

1. Avec OSVRegisterTimer de TIGCCLIB, il n'y a pas ce problème.
2. Pour les callbacks appelés par AMS, la solution est simple:
CALLBACK void callback(void)
{
void *olda5=__jmp_tbl;
__jmp_tbl=*(void***)0xC8;
//...
__jmp_tbl=olda5;
}
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é

187

GraphX est rapide... Même par rapport à Extgraph elle est assez rapide, et elle gere le clipping. Même si j'ai tendance à plaisanter un peu dessus ça n'en reste pas moins une des meilleurs lib quand on fait le rapport confort d'utilisation / vitesse
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

189

mouais
ya pas enormement de fcts qd tu regardes par raport a genlib ou xlib

191

Et pour le 'confort d'utilisation', c'est une question de point de vue...
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

192

TheCodR
a écrit : je connais pas trop XLib

On dirait en effet... cf ce qui suit...
TheCodR a écrit :
mais il me semble que y'a pas les fonctions de timers, scrolling, sprite multi taille etc..

Timer -> Si
Scrolling -> XLib n'est pas une lib qui prémache tout le travail... Le scrolling c'est à l'utilisateur de le faire, il sera mieux.
Sprites multi taille -> Si
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

194

le scrolling, généralement ça sert a rien (sauf exceptions)
vaut mieux tout réafficher a chaque cycle

195

Vertyos : que de bêtises dans ton post grin

Timers "à la Delphi" sous Xlib : y'a pas.
Sprites 8x8 et 32x32 sous Xlib : y'a pas.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

196

J'ai fait un nouveau bench FS_DrawString C/ FS_DrawString ASM / GX_DrawStr / DrawStr (F_4x6 / police de GX_DrawStr). Le bench consiste à afficher 4000 fois "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", et à mesurer le temps en ticks d'AUTO_INT_5 (en principe ce sont des calculettes avec les paramètres de reset).
VTI 89 AMS 2.05: 246/213/304/2750 (identique sous AMS 2.03).
VTI 89 AMS 1.00: 165/142/204/872.
Real calculator 89 AMS 2.03: 165/155/156/1404.

Comme vous pouvez le remarquer, l'écart entre FS_DrawString et GX_DrawStr est insignifiant sur calculette réelle. L'écart de performances avec AMS n'est pas 12x sur une calculette réelle, aussi.
Donc je présente toutes mes excuses à Thibaut si j'ai donné une mauvaise image de GX_DrawStr et une trop bonne image de FS_DrawString (routine générique qui gère les trois polices, mais l'écart de vitesse entre FS_DrawString et FS_DrawLittleString qui ne gère que la F_4x6 sera très faible, probablement moins de 2cheeky, avec mon bench sur VTI. Il faut savoir reconnaître ses erreurs...
VTI est un outil de debug formidable, mais les benchs avec VTI sont hasardeux (je le savais, mais pas à ce point-là)...
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

197

Thibaut: que des bétises dans ton post !

Timers comme delphi: c pas utile, y'a des timers et c largement suffisant !
Sprite 8x8: Ben y'a le 16x8 roll (nan, ca ne prend pas plus de place ..)
Sprite 32x32: y'a même tous les sprites 16*largeur x 16*hauteur

198

Et bien si, ça prend 2x plus de place, ou alors tu m'explique le miracle qui fait que non...
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

199

Thibaut a écrit :
Timers "à la Delphi" sous Xlib : y'a pas. Sprites 8x8 et 32x32 sous Xlib : y'a pas.

Que de bêtises toi aussi... Orion n'a pas précisé "Timers à la Delphi" (d'ailleurs je ne vois pas trop l'interet). Perso j'utilise XTimer5, et je vois mal comment on peut faire qqchose de plus simple.
Quand aux sprites 8x8, il y a les 16*8 qui affichent en 8*8, et les 32*32, il y a les XPic.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

200

XDanger : c'est rassurant pour mon GX smile

Vertyos : c'est tout bêtement plus simple pour exécuter du code à intervalles réguliers. Ca évite des codes du genre :
timerautodécrémenté= 10;

boucle
{
  blabla;
  if (timerautodécrémenté==0)
  {
    blabla;
    timerautodécrémenté= 10;
  }
  blabla;
}
finboucle


Un timer à la Delphi ça s'utilise comme ça :
GX_Timer timerhandle= GX_CreateTimer(MonTimer, fréquence);

boucle
{
  blabla;
}
finboucle

GX_DestroyTimer(timerhandle);

...
void MonTimer(void)
{
  blabla;
}


Je trouve ça plus clair. Et ça a des avantages (plusieurs timers peuvent s'éxécuter en même temps, par exemple) smile
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

201

Mais il y a déjà des timers comme ça dans TIGCCLIB:
http://tigcc.ticalc.org/doc/system.html#OSVRegisterTimer
Donc aucun intérêt d'en mettre dans les librairies graphiques.
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é

202

rotfl Avec Kevin, il faudrait UN compilateur, UN shell, UN jeu de chaque genre, UN kernel, UN éditeur de handles, etc, sur nos TIs triso
T'aimerais pas la domination, un peu ?

Et puis mon système a des avantages par rapport à celui de l'AMS, je te les ai déjà énumérés une fois. J'ai la flemme de chercher le topic, c'était dans Questions.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

203

Franchement si c'est uniquement pour ça, je trouve l'interet un peu limité. D'autant plus que, si il m'est arrivé rarement d'avoir des boucles comme ça, JAMAIS je n'ai eu à utiliser 2 timers en même temps roll
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

204

XDanger : c'est rassurant pour mon GX

En effet. Ta routine est bien écrite. Elle tire parti du fait que ta police est de taille fixe, ce qui n'est pas le cas de celle d'AMS.
J'ai désassemblé ta routine pour la première fois hier: je me suis rendu compte qu'elle écrivait en mode A_REPLACE, pas en mode A_NORMAL. C'est peut-être écrit dans la doc, mais je ne l'avais pas vu... Donc, en plus, je faisais un bench GX_DrawStr (A_REPLACE) / FS_DrawString (A_NORMAL)... Utilisant le même algorithme, la fonction FS_ReplaceString est plus lente car il faut utiliser un masque. Donc GX_DrawStr est (était ?, cf plus bas) plus rapide que FS_ReplaceString.

Mais j'ai changé un peu l'algorithme (mettant en application un truc que j'avais vu il y a un certain temps). J'ai gagné environ 20% par rapport à l'algorithme précédent si je ne ré-enroule pas les boucles, 10% en ré-enroulant la boucle. Cependant, même en laissant les boucles déroulées et en comptant la taille des routines de startup et de cleanup, la taille reste inférieure à celle de GX_DrawStr...
Quand j'aurai modifié toutes les routines génériques gérant les 3 polices (FS_DrawString, FS_InvertString, FS_ReplaceString, FS_ReverseString, FS_DrawString et FS_InvertString étant très proches), je ferai les routines gérant une seule police. Je m'occuperai en premier de FS_DrawLittleString et FS_ReplaceLittleString. C'est seulement à ce moment-là qu'on pourra faire un vrai bench GX_DrawStr (F_4x6_like) / FS_ReplaceLittleString (F_4x6).
Je sais que tout cela est de ma faute...
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

205

Moi aussi je peux accélérer GX_DrawStr : en changeant le format des sprites (un octet par ligne de caractère plutôt que deux) et en changeant ma façon d'écrire lorsque le caractère chevauche deux octets.

Vertyos : on est content pour toi smile
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

206

Pfff... C'est tout ce que tu trouve à répondre ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

207

Bah oui, tant mieux si tu n'as jamais eu besoin de plus d'un timer et que tu aimes te débrouiller avec les variables autodécrémentées !
Ce n'est pas le cas de tout le monde. Nerick, par exemple, utilise GraphX dans un de ses projets, juste pour les timers ! Il n'utilise rien d'autre dans la bibliothèque smile
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

208

<Vertyos> "Nerick, par exemple, utilise GraphX dans un de ses projets, juste pour les timers ! Il n'utilise rien d'autre dans la bibliothèque"
<Vertyos> c vrai ça ???
<Nerick> nan
<Nerick> dans un de mees proj
<Nerick> j'utilise gx que pour eviter de detourner les ints a la main
<Nerick> #fleme#
<Vertyos> arf ok <Nerick> rien a voir avec les timers


Et très honnêtement je pense que les cas ou on a vraiment besoin de 2 timers sont rares. En tout cas ce n'est pas un très bon argument pour une librairie graphique tongue
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

209

Nerick : hé ho dans ton mode 7 tu utilises les timers de GX pour compter les FPS !!! j'ai eu tes sources sous les yeux hum


> ce n'est pas un très bon argument pour une librairie graphique

Avec GraphX on peut déclarer 4 timers tongue

Avec GraphX la fréquence d'appel peut atteindre 256 Hz tongue

Avec GraphX l'exécution d'un timer peut être interrompue si un autre timer doit être exécuté (par exemple si on a un timer à 10 Hz qui met du temps à s'exécuter et un autre timer à 200 Hz, l'exécution du timer à 10 Hz est interrompue puis poursuivie si le moment est venu que le timer à 200 Hz s'exécute) tongue

Avec GraphX, la calculatrice ne plante pas si le timer fait appel à des ROM_CALLs en mode OPTIMIZE_ROM_CALL et que a5 est modifié par la fonction interrompue tongue

Avec GraphX, si le timer lit le clavier, le contenu du port clavier n'est pas changé lorsque la main est rendue au code interrompu tongue

Voilà. Ca a donc quelques avantages ! On dirait que t'es comme Kevin, toi. Tu aimerais UN shell, UNE lib graphique, UN mode de programmation, UN utilitaire, UN compilateur, etc... le monopole quoi roll
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

210

ah ue merde désolé, j'avais oublié le compte des fps
mais bon, c un truc que j'ai maintenant viré dans la source actuelle du mode7, donc je n'utilise plus de timers au final :]