FluF Le 23/04/2002 à 15:34Edité par FluF le 23/04/2002 à 15:40 au moins c clair mais comment on fiat avec DrawStr ?
Plus tu pedale moins vite moins t'avance plus vite
Ma team CS SetPlane(DARK_PLANE)
darstr...
SetPlane(LIGHT_PLANE);
darwstr...
ou quelque chose ds le genre (regarde SetPlane)
Je crois que c'est pareil, ce sont des macros.

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.
Kevin Kofler Le 24/04/2002 à 19:06Edité par Kevin Kofler le 24/04/2002 à 19:07 printf est une fonction de TIGCCLIB, mais elle utilise les ROM_CALLs pour dessiner les caractères, donc PortSet et PortRestore marchent très bien avec. Et en effet, SetPlane est une macro qui appelle GetPlane et PortSet.
un petit coup de buffer...
nhl Le 29/04/2002 à 22:30 Thibaut>comment tu sais que printf est lent? c'est pas ce qu'il y a de plus simple pour afficher un str? y'a plus rapide?
ps: j'ai pas encore beaucoup d'expérience en prog C
printf est très très lent !!! Pour le savoir je n'ai eu qu'à regarder les sources de TIGCClib.

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.
flow Le 01/05/2002 à 17:55 une petite question : DrawStrXY (machin) aussi connu sous DrawStr (machin)
c'est aussi lent que printf? moi je préfère : y'a pas besoin de faire Moveto (x,y)
"Thibaut>comment tu sais que printf est lent? c'est pas ce qu'il y a de plus simple pour afficher un str? y'a plus rapide?"
"DrawStrXY (machin) aussi connu sous DrawStr (machin) c'est aussi lent que printf ?"
Pour afficher une chaîne de caractères, il y a plus rapide: voir les sources de tthdex, tthedit, ebook... Par contre, dans tthdex/tthedit (peut-être plus les versions les plus récentes, je ne sais plus), on utilise la macro printf_xy, définie normalement comme suit:
#define printf_xy(x,y,f...)
({char __s[200];_rom_call(short,(char*,const char*,...),53)(__s ,##f);_rom_call(void,(short,short,const char*,short),1A9)(x,y,__s,4);})
(En clair c'est une combinaison de sprintf et de DrawStr.)
et qui a été redéfinie comme combinaison de sprintf et de notre fonction de dessin de chaîne de caractères, optimisée, à laquelle tu passes le buffer que tu veux dans plane:
/*===========================================================================*/
/* replaces string using own sprites (F_6x8) (much faster than DrawStr) */
/*===========================================================================*/
void NormalString(short x,short y,const unsigned char* s,void *plane) {
unsigned char* sprite;
long addr;
long addr_const = ((long)plane)+(y<<5)-(y<<1);
unsigned short cnt;
long mask;
while (*s) {
sprite = &charset[((short)(*s))<<3];
addr = addr_const+((x>>3)&0x1e);
cnt = 24-(x&15);
mask = ~((long)(0xff)<<cnt);
// unrolled loop for more speed ...
*(long*)addr&=mask; *(long*)addr|=(long)(*sprite++)<<cnt; addr+=30;
*(long*)addr&=mask; *(long*)addr|=(long)(*sprite++)<<cnt; addr+=30;
*(long*)addr&=mask; *(long*)addr|=(long)(*sprite++)<<cnt; addr+=30;
*(long*)addr&=mask; *(long*)addr|=(long)(*sprite++)<<cnt; addr+=30;
*(long*)addr&=mask; *(long*)addr|=(long)(*sprite++)<<cnt; addr+=30;
*(long*)addr&=mask; *(long*)addr|=(long)(*sprite++)<<cnt; addr+=30;
*(long*)addr&=mask; *(long*)addr|=(long)(*sprite++)<<cnt; addr+=30;
*(long*)addr&=mask; *(long*)addr|=(long)(*sprite)<<cnt;
x+=6;
s++;
}
}
printf_xy a été enlevée et redéfinie comme:
#undef printf_xy
#define printf_xy(x,y,f...)
({char __s[100]; _rom_call(short,(char*,const char*,...),53)(__s ,##f);
NormalString(x,y,__s,LCD_MEM);})
printf dessine avec un wrap à la fin de ligne... les différences sont dans le help de TIGCC.
printf est encore bien plus lent que printf_xy, qui elle-même est encore plus lente que DrawStr, qui est plus lente que les routines de tthdex/tthedit/ebook, qui sont peut-être plus lentes que d'autres routines super optimisées en ASM...
Contactez-moi par mail pour toute information complémentaire...
