Page 1 of 5

[CE Projet ASM]Lecteur de texte avec caractères spéciaux

Unread postPosted: 12 May 2016, 21:39
by y0ann
Bonjour, je me suis penché sur la programmation sur TI depuis une petite semaine et je vous présente mon premier projet : Un lecteur de Texte supportant 255 caractères. Je peux modifier la police à tout moment donc certains caractères pourront être remplacés par d'autres plus utiles pour la saisie de cours.

Image

Les caractères sont tracés pixel par pixel ce qui cause une certaine latence, 0.6 secondes pour une page remplie comme celle-ci :

Image

Soit 910 caractères. Je commence à peine à travailler dessus, seulement l'affichage des caractères est géré.

A faire :

- Défilement
- De la couleur :D
La plus grosse partie :
- Me renseigner sur les appVars pour pouvoir charger des fichiers dans le lecteur.
- Un convertisseur Txt -> appVar avec un espèce de code (du style "_135_") pour indiquer le code d'un caractère non saisissable au clavier.

Voilà, je posterais un message dès que j'avancerais sur ce projet :)

Re: [CE Projet ASM]Lecteur de texte avec caractères spéciaux

Unread postPosted: 12 May 2016, 22:48
by Adriweb
Intéressant :) Mateo a fait un editeur et lecteur de texte, mais avec la police par défaut (je crois) !

C'est fait entièrement en Assembleur ou bien avec du C aussi ?
Au passage, si tu es en 16bpp, tu peux très probablement plutôt passer en 8bpp voire moins, ça sera beaucoup plus rapide :P

Par ailleurs, je t'encourage à mettre ceci en open-source (par exemple sur GitHub) - il y a des gens interessés qui pourront sûrement t'aider à optimiser fortement le programme (même pixel par pixel, un tel écran ne devrait pas prendre 0.6s - c'est "lent" pour de l'assembleur :P Si ma mémoire est bonne, jacobly avait réussi à faire faire défiler à l'écran d'accueil un certain nombre de milliers (peut-être même plusieurs dizaines de milliers) de caractères par seconde (une centaine de FPS je crois))

Re: [CE Projet ASM]Lecteur de texte avec caractères spéciaux

Unread postPosted: 13 May 2016, 01:38
by y0ann
Avec du C ! Assembleur pur, le maximum que j'ai réussi à faire c'est un point qu'on déplace sur l'écran avec les flèches, j'ai abandonné sur les sprites. :D

Voici pour le défilement sur une tableau contenant 1500 caractères :
Image
Et pour se rendre compte de la lenteur monumentale du bouzin, on vire le buffer :
Image

L'optimisation c'est pas pour moi ! :D

La police de 8x8 est stockée dans un tableau d'octet de cette manière (256 caractères) :

Code: Select all
unsigned char font[2048] =
{
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   
   0x7E, 0x81, 0xA5, 0x81, 0xBD, 0x99, 0x81, 0x7E,   
   0x7E, 0xFF, 0xDB, 0xFF, 0xC3, 0xE7, 0xFF, 0x7E,   
   0x6C, 0xFE, 0xFE, 0xFE, 0x7C, 0x38, 0x10, 0x00,   
   0x10, 0x38, 0x7C, 0xFE, 0x7C, 0x38, 0x10, 0x00,   

       .......
}


La seule manière que j'ai trouvé d'afficher ça c'est comme ça (désolé je viens de débarquer :troll:) :

Code: Select all
void DrawCar(uint8_t car, uint8_t X, uint8_t Y)
{
   uint8_t i = 0;
   uint8_t j = 0;
   
   for (j=0 ; j<8 ; j++) //lignes
   {
      for (i=0 ; i<8 ; i++) //colonnes
      {
         if ((font[car*8+j]<<i) & 0x80)     //Si le bit i de la ligne j du caractère car vaut 1
         {   
            gc_ClipSetPixel((9*X)+3+i, (9*(Y))+3+j); //On colore le pixel
         }
      }
   }
}

Re: [CE Projet ASM]Lecteur de texte avec caractères spéciaux

Unread postPosted: 13 May 2016, 06:01
by MateoConLechuga
Nice work! :D In case you weren't already aware though, the C libraries already allow you to specify any custom font you wish to use; with a high speed assembly routine used for displaying. :) You can easily create the font arrays with PixelFontEdit 8x8 or some similar variant.

These are the routines that are worth taking a look at:

Code: Select all
void gc_SetFontData(uint8_t *fontdata);
void gc_SetFontSpacing(uint8_t *fontspacing);


The format should still be exactly like yours.

Re: [CE Projet ASM]Lecteur de texte avec caractères spéciaux

Unread postPosted: 13 May 2016, 10:57
by y0ann
Thank you Mateo, I've seen this function in graphc.h but never used it. It's much faster than my bit per bit drawing ! :D

Image

Re: [CE Projet ASM]Lecteur de texte avec caractères spéciaux

Unread postPosted: 13 May 2016, 10:59
by Adriweb
\o/

Re: [CE Projet ASM]Lecteur de texte avec caractères spéciaux

Unread postPosted: 13 May 2016, 16:36
by Ti64CLi++
Super :bj:
Bravo pour ta première semaine de programmation ^^

Re: [CE Projet ASM]Lecteur de texte avec caractères spéciaux

Unread postPosted: 13 May 2016, 22:10
by Clément.7
Je veux une TI-83 PCE :'(
Très bon projet, continue ! :bj:

Re: [CE Projet ASM]Lecteur de texte avec caractères spéciaux

Unread postPosted: 14 May 2016, 02:52
by y0ann
J'ai bricolé un convertisseur, il a encore quelques problèmes avec les accents, je règlerais ça demain (enfin, tout à l'heure :D).
Il exporte pour l'instant le texte en header contenant un tableau de char, je vais essayer de me renseigner sur les appVars.
J'ai aussi intégré le support des retours à la ligne sur le lecteur et par la même occasion, recodé le système de défilement (le nombre de caractères par ligne n'étant plus fixe).
Image

Image

Re: [CE Projet ASM]Lecteur de texte avec caractères spéciaux

Unread postPosted: 14 May 2016, 11:14
by Ti64CLi++
Super. Après, je suis aussi en train de faire un éditeur hexadécimale d'Appvar. Seulement, je ne sais pas comment ouvrir une appvar en C.
Est-ce que quelqu'un peut m'aider?