1

J'ai crée un fichier Font se présentant de la façon suivante:
XY Registre des X et Sprite

X=Longeur d'un sprite
Y=Hauteur d'un sprite
Registre X=Taille de chaque caractère en X (256 octets=1 octet par caractère)
Sprite=Sprite de chaque caractère les uns à la suite des autres.

Pour les fonts X doit être >=9 et <=16

Pour afficher le caractère e question j'utilise Sprite16_OR d'extgraph et je fait ceci:

void W_DrawChar(short x,short y,unsigned char CharCode,void *Dest)
{
Sprite16_OR(x,y,Font_Y,(void *)(HeapDeref(font->Sym->handle)+2+2+256+(font->OctetSize*CharCode)),Dest);
}

OctetSize=(((x-1)>>3)+1)*y
Font_Y=y

Je voudrais savoir si cette méthode peut être amélioré pour gagner de la vitesse. A savoir que je n'est besoin que d'un pointeur.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

2

Oh oui, ça peut s'améliorer beaucoup wink
Vois avec XDanger, je crois qu'il a des routines très rapides qui acceptent les fonts à largeur variable.
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.

3

Mais au point de vue de la structure du fichier Font, est-ce que c'est correct?
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

4

Oui, c'est une des nombreuses solutions "correctes" possibles.
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é

5

Si vous avez autre chose à me proposé plus petit en mémoire et beaucoup plus rapide n'hésitez pas! smile
Le fichier font de 9x7 fait environ 4 ko.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

6

Un conseil prévoit aussi des polices de taille fixe: j'ai du me recréer moi même une petite police de taille fixe car celle de l'AMS est de taille variable sad
avatar

7

Je préfère plutôt créer des polices de taille variables car les utilisateurs pourront créer toute sorte de font mais rien n'empêche de créer des polices de tailles fixe, il y aura juste une perte de 256 octets.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

8

Uther Lightbringer : tu aurais dû me demander la police d'Einstein, ça t'aurait économisé 6 heures de boulot ! C'est le temps que j'ai mis pour dessiner les 256 caractères, si j'ai bonne mémoire 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.

9

J'ai recodé tout sur les font est j'arrive à une vitesse de 2000 caractères/s et 1000 caractères/s en italique. mais je ne sais pas si c'est pas assez et comment optimiser plus. J'utilise sprite16_or peut être que je doit utiliser une autre fonctions, la quelle me conseillerais vous?
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

10

XDanger !!!!
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.

11

XDanger n'est pas sur le forum mais c'est un membre de XLIB ?
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

12

Ca risque pas grin
Il maintient ExtGraph.
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.

13

D'accord, je suis nouveau est donc je ne connaît pas grand monde donc excuse moi pour mon ignorance.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

14

Y'a rien à excuser 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.

15

Thibaut, ça sert à rien de gueuler que je ne suis pas là. Envoie plutôt un mini-message avec lien direct, comme Kevin a fait.

geogeo: si tu veux une version un poil plus rapide de Sprite16_OR, je peux te l'envoyer. Mais ça n'améliorera pas grand chose.
Sinon, je n'ai pas tout compris de ce que tu as écrit. Tes caractères ont plus de 8 pixels de large ?

> Y a rien à excuser.
roll

Je ne suis sur ce forum que dans la période 18h-20h, à de rares exceptions près.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

16

Je résume:

Les sprites de mes caractères on tous la méme hauteur et longeur, pour afficher un sprite correctement sans passer pas spritex8_or je suis obligé de faire des fonts ayant comme longeur >=9 et <=16 car je veut que les utilisateurs créer leurs propres fonts.
La longeurs des caractères en X peuvent être variables (pas pour le sprite qui reste identique mais plutôt pour l'affichage).

Ca serait bien que tu m'envoye la nouvelles version d'extgraph...

Je voudrais savoir quel est la méthode graphique qui pourrais m'accélérer l'affichage des fonts.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

17

> #roll#
roll

Et je gueule parceque je sais que tu lis toujours cette section du forum : pas besoin de mini-message pour que tu viennes 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.

18

geogeo
a écrit : Les sprites de mes caractères on tous la méme hauteur et longeur, pour afficher un sprite correctement sans passer pas spritex8_or je suis obligé de faire des fonts ayant comme longeur >=9 et <=16 car je veut que les utilisateurs créer leurs propres fonts.
Tu n'es pas obligé d'avoir une largeur de sprite supérieure à 8 pour utiliser Sprite16. Tu peux très bien avoir une largeur d'un pixel (bon, ça ne sert à rien, mais tu peux).

19

Si c'est très important, sans cette information je ne peut pas trouver le sprite correspond au caractère voulu. Je sais mais si je fait une largeur de sprite inférieur à 8 je serais obligé de faire une variable temporaire et compléter avec des 0, au point de vue de la vitesse le problème est toujours là!
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

20

Tu n'es pas obligé de faire une var temporaire :
short sprite[4]={0x8000,0xC000,0xE000,0xF000};
Çe fait un sprite de 4 pixels de largeur et de 4 pixels de hauteur que tu afficheras avec Sprite16.
Mais bon, c'est vrai que tu perde de l'espace...
Mais c'est possible !
Sinon, tu peux toujours utiliser SpriteX8, mais c'est lent sad

21

Je voudrais bien faire ton exemple mais tu n'as pas bien compris le problème: Les sprites du font... sont dans un fichier et donc il sont codé en octet et non en short donc pour convertir un sprite qui est en char en short je doit faire une variable temporaire et extraire les octet un par un puis complèter avec des 0 la variables temporairie. Je veut que les utilisateurs puisse créer leurs propres fonts dans un fichier et que les caractères soit variables ou pas. Pour ce qui est de X et Y j'en ais besoin pour 2 résond:
-Information sur le font pour des centrage...
-Trouvais l'adresse de début d'un sprite correspondant à un caractère car X et Y me donne la taille du sprite en octet et donc ça position dans le fichier.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

22

mais un short = deux octets, donc tu peux recoder ce que j'ai mis en octets. Et de toute façon, un sprite de largeur supérieure ou égale à 9 pixels ne tiendra que sur des short au moins, donc ça ne veut rien dire, que ton sprite est codé en octets. Tu écris peut-être un octet à la fois, mais en réalité, la fonction Sprite16 les lit par 2.
D'ailleurs, fais attention à ce qu'ils ne soient pas à des adresses impaires, tes débuts de sprites, parce que je doute que tigcc aligne les char sur des adresses paires.

23

Je sais que Sprite16 lit 2 octets à la suite mais je n'est pas crée le fichier de font avec TIGCC mais avec un programme que j'ai fait sur PC qui transforme un BMP en BIN et que j'ai transformé en variable avec TOVAR. Je sais que un sprite >=9 pixels tient sur un short c'est pour ça que j'ai fait ça.

J'ai juste à faire ça avec Sprite16_or(x,y,h,(void*)(Adresse du sprite),dest)
Et sprite16_or lit 2 octets à la suite...
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

24

geogeo
a écrit : Je sais que Sprite16 lit 2 octets à la suite mais je n'est pas crée le fichier de font avec TIGCC mais avec un programme que j'ai fait sur PC qui transforme un BMP en BIN et que j'ai transformé en variable avec TOVAR. Je sais que un sprite >=9 pixels tient sur un short c'est pour ça que j'ai fait ça.

Mais ça, c'est le problème de ton programme de conversion.
On peut très bien avoir une fonte de largeur <=8 utilisable avec des Sprite16, sans rien changer à ton système.
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é

25

Oui mais il y une perte en mémoire:

00000000 00|000000
01111100 00|000000
00010000 00|000000
00010000 00|000000
00010000 00|000000
00010000 00|000000
00000000 00|000000

Voici le caractère T, pour convertir ce caractère en BIN (en prenant en compte dans ce cas que le sprite fait du 9*7) mon programme code octets par octets mais il y a une perte de 7 octets par sprite *256 =1792 octets mais pour que je puisse afficher un caractère inférieur à 9 pixels en largeur avec la fonction sprite16 je doit convertir ce caractère:

00000000
01111100
00010000
00010000
00010000
00010000
00000000

en ce qui est tout en haut sinon j'obtient cela ce qui est normal:

00000000 01111100
00010000 00010000
00010000 00010000
00000000 00000000
00000000 00000000
00000000 00000000
00000000 00000000

Mais mon but n'est pas de perdre du temps en convertissant un sprite du type char en short.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

26

A savoir que avec de nombreux teste et comparaison avec istudio mon programme fonctionne parfaitement même mieux que istudio car il prend en compte des images <16 pixels en hauteur et en largeur.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

27

geogeo
a écrit : Oui mais il y une perte en mémoire

Certes. Il y a une perte de mémoire, mais c'est quand-même possible!
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é

28

Je sais que c'est possible mais au point vue de la vitesse? Il faut convertir donc la vitesse sera lente!
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

29

Il ne faut convertir rien du tout! Tu stockes tes sprites avec une largeur 16 et tu n'utilises que les premiers x bits, où x peut être entre 0 et 16 compris. Il y a quoi que tu n'as pas compris là-dedans???
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é

30

Ta méthode n'est pas interessante, il faut 10 ko par font, c'est énorme pour un résultat identique avec des sprites >=9 et <=16 en largeur mais prend moins de place selon la largeur. Bref je recherche plutôt de l'optimisation et non des méthode pour afficher un sprite, je sais quand même afficher un sprite de 16 mais si je doit afficher un sprite de 8 en largeur avec sprite16 je suis bien obligé de remplir une variable en complétant avec des 0. Le problème n'est pas là je voudrais juste savoir quelle est la méthode la plus rapide pour afficher un caractère car moi je fait:

sprite16_or(x,y,Font_Y,(void *)(HeapDeref(font->SymEntry->handle)+2+2+256+(CharCode*OctetSize),Dest)

Et je pense que cette méthode peut être largement optimisé et je voudrais savoir comment? smile Merci Kevin pour ton aide, je sais que des fois je pose des questions connes. smile
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.