1

Je dois creer une nouvelle police d'affichage completement différente de celle de la ti89 et j'aurais besoin de quelques conseil:
-Faut vraiment que je crée pour chaque lettre un sprite différent?
-Comment ensuite gérer l'affichage des sprites? Y a-t il des librairies qui puisse etre utile?
Merci d'avance pour vos conseils et ou solutions.

2

> Faut vraiment que je crée pour chaque lettre un sprite différent?
Si tu es sûr que certains caractères ne seront jamais utilisés, non.

> Comment ensuite gérer l'affichage des sprites?
Pas mal de programmes utilisent leurs propres méthodes. Citons ceux de TICT et autres (ebook, TI-Chess, etc.), geogeo (Nebulus, Arkanoid Revenge of DOH).
> Y a-t il des librairies qui puisse etre utile?
A ma connaissance, pas encore: je n'ai pas intégré à ExtGraph la méthode classique pour avoir les polices d'AMS, qui est triviale à adapter à des polices custom.

Pour info, si ce n'est pas indiscret, pourquoi "dois"-tu créer une nouvelle police ?
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

3

Librarie spéciale pour GFA-Basic mais aussi pour faire tout est n'importe quoi comme fonte!
http://www.tigen.org/gfabasic/releases/others/GFA_FontLib.zip
Tu peux réaliser t'as propres fontes mais malheureusement y a pas de manuel... c'est juste en cours de projet donc faudra bidouiller un peu les proigrammes.
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

geogeo :
Librarie spéciale pour GFA-Basic mais aussi pour faire tout est n'importe quoi comme fonte!
http://www.tigen.org/gfabasic/releases/others/GFA_FontLib.zip Tu peux réaliser t'as propres fontes mais malheureusement y a pas demanuel... c'est juste en cours de projet donc faudra bidouiller un peules proigrammes.
tu peux donner des précisions sur le format des fichiers de font pour Ti ?

5

7 bytes = Signature (GFA_FNT)
1 byte = Version (1)
23 Bytes + NULL = Font name
1 byte = Font mode (0 = 256 caractères, 1 = début caractère 33).
1 byte = 4 bits MSB font_size_x et 4 bits LSB font_size_y.
Ensuite les sprites dont la taille dépend de font_size_y.
Soit font_size_y octets pour chaque caractère.
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

Mais je compte là modifier pour un peu la booster, ajouter des modes graphiques et aussi gérer d'autres modes genre des fontes avec seulement les caractères alphanumériques.
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.

7

d'après ce que je vois, on peut pas utiliser les fonts de l'AMS... dommage.

8

Y a pas grand chose à faire pour pouvoir les utiliser suffit de changer le code de dla fonction GFA_FONT_OpenFile wink
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.

9

non, y'aura un problème avec la petite font : elle est à taille variable, et les tailles sont entremélées avec les sprites
J'ai fait un truc à ce propos, mais ca m'a l'air bien compliqué... je fait des espèces de modes et d'autre trucs... et j'ai essayé de faire de l'italique et ca foire tongue

10

Ah ouai, toute façon si j'ai fait cette librairie c'est pas pour utiliser les fontes de la TI.
Une fonte fait grand max 2 Ko et on peut facilement l'archiver voir même faire un truc de compression et décompression en temps réel.
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.

11

pour des apps, c'est pas ridicule d'avoir un affichage par RLE_Sprite
stocke tes sprites compressees en RLE et tu gagnerais deja pas mal je pense ...

12

RLE mouai je préfère LZSS car ça compresse mieux et on peut faire un truc de décompression très rapide. Toute façon je ferai des tests histoire de voir ce qui il y a de mieux.
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.

13

hibou :
non, y'aura un problème avec la petite font : elle est à taille variable, et les tailles sont entremélées avec les sprites
J'ai fait un truc à ce propos, mais ca m'a l'air bien compliqué... je fait des espèces de modes et d'autre trucs... et j'ai essayé de faire de l'italique et ca foire tongue
Tu parles de HibView? C'est vrai que pour l'italique je me rappelle avoir eu des problèmes dûs au fait que je faisais GetSprite x,y,taille,h/2 puis DrawSprite x+1,y grin (en plus les caractères débordaient les uns sur les autres à cause de ça...).
Pour l'italique, il suffit de dessiner la première partie en utilisant un certain offset, puis un autre dans la seconde, etc. et pas de BitmapGet/BitmapPut wink
J'avais écrit cette routine pour la GBA: void IN_IWRAM Mode4_EcritPlusDe4PixelsMasqueCouleur(u32 x, u32 y, u32 nbre, u32 *motif, u32 *masque, u32 couleur)        {     u32 *adr;     u32 i,j,val;     adr=(u32*)MemVideo+60*y+(x>>2);     j=(x&3)<<3;     while(nbre--)     {         val=(*motif)*couleur;         i=j;         *adr&=~((*masque)<<i);         *adr|=val<<i;         adr++;         i=32-j;         *adr&=~((*masque)>>i);         *adr|=val>>i;         masque++, motif++;     } } //Idem. void IN_IWRAM DessCarItalique256(u32 x, s32 y, u8 car, u32 couleur)     {     int i=0,h=hauteur_texte;     u32 o;     //Clipping (en y)     if (y<0)        {         if (y+h<0)      {             return;         }         i+=-y;     }     if (y+h>=160)       {         if (y>=160)             return;         h-=(y+h)-160;     }     o=(hauteur_texte*largeur_texte)*(car-32)+i*largeur_texte;     for (;i<h;i++)          {         Mode4_EcritPlusDe4PixelsMasqueCouleur(x+(2-i/3),y+i,largeur_texte,(u32*)(fonte+o),(u32*)(masque+o),couleur);         o+=largeur_texte;     } }
La taille des caractères est toujours identique; c'est seulement l'avancement du chariot qui n'est pas le même pour chaque lettre... wink
Par contre si t'ajoutes en plus du gras et du surlignage (et autres), là ça devient plus sport pour l'italique parce qu'il te faut une pétée de routines différentes... sad
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

14

oui, pour l'affichage de l'italique, je calcule un offset, mais à un moment, y'a trop d'offset apparement, ca doit surement dépasser l'octet et ca affiche rien tongue
ca me fait des lettres en italique mais quelques fois coupées cheeky short hl_drawChar(h_Font * font, short x, short y, unsigned char caract, BOOL italic, BOOL bold, unsigned char * screen) {     short charsize;   unsigned char * sprite;   short decal;   short height = font->underline+font->upperline;      sprite = font->tab+font->size_item*caract;   charsize = font->width;         screen+=(y+height-1)*30+(x>>3);         if (charsize==0) {     charsize = *sprite;   }   decal=(x&7)-font->include_space;   if (decal<0) {     screen--;     decal=7;   }   h_drawCharacter(height,sprite+font->size_item-1,screen,italic,bold,decal);      charsize+=bold-font->include_space;        return charsize; } void h_drawCharacter(short height, unsigned char * sprite, unsigned char * screen, BOOL italic, BOOL bold, short decal) {      short j;      for (j=0;j<height;j++) {     (*screen)|=((*sprite)>>decal);     (*(screen+1))|=((*sprite)<<(8-decal));     if (bold) {       (*screen)|=((*sprite)>>(decal+1));       (*(screen+1))|=((*sprite)<<(8-decal-1));     }     if (italic && j%3==2)       decal++;     screen-=30;     sprite--;   }    } short hl_drawStr(h_Font * font, short x, short y, const unsigned char * str,                  BOOL italic, BOOL bold, unsigned char * screen) {      short x_ini=x;   short charsize;   unsigned char * screen_ini;   unsigned char * sprite;   short size_add = bold+1-font->include_space;   short decal;   short height = font->underline+font->upperline;      screen_ini=screen+(y+height-1)*30;        while (*str!='\0') {     screen=screen_ini+(x>>3);     charsize=font->width;     sprite = font->tab+font->size_item*(*str);     if (charsize==0) {       charsize = *sprite;     }         decal=(x&7)-font->include_space;    if (decal<0) {      screen--;      decal=7;    }   h_drawCharacter(height,sprite+font->size_item-1,screen,italic,bold,decal);        x+=charsize+size_add;     str++;   }      return x-x_ini-1; }

15

Le code pour la librarie de GFA-Basic est assez simple là dessus surtout que je pense que c'est plus pratique de faire ça en ASM.
Le principe est premièrement d'avoir un mode d'affiche type OR et non REPLACE ensuite moi j'ai un buffer de 16x16 où je copie mon caractère dedans que je bidouille en ajoutant x modes genre italique je fais un décalage binaire vers la gauche. Elle reste assez précise pour renvoyer la taille exacte d'une chaîne de caractères en mode italique gras ou combinés... et est assez rapide, moi ça me suffit largement. grin
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.

16

heu pour l'itallique c'est quand meme pas difficie: sufit d'ajouter 1 au shift lsr/l. le reste je vois pas la difficulté. sion TGV utilisait FontLib mais c du kernel.

17

c qd même plus compliqué que ça, retrancher 1 par exemple ne marchera que si le shift est supérieur au nombre de fois où tu décaleras de 1...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

18

Après il y a la possibilité de modifier en direct le rendu des polices du TIOS... Ca prend moins de place, mais c'est plus gourmand à l'exécution (exemple simple : faire un détourage...)
avatar

19

Moi j'utilise un algo très spécial qui ne marche qu'avec ma police, donc si tu as besoin d'une police en largeur fixe de 4 pixels c'est bien mais sinon non grin
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

20

21

avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

22

23

Martial tu peux faire des fontes pour GFA facilement, y a tout dans le pack.
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

25

Je vois pas la complexité.. ou c'est tout a fait possible, mais faut une routine perso de sprite. Et pour le shift, suffit de faite un ptit ext avant.