Accueil Ti-Gen Foire Aux Questions Chat sur le chan #tigcc sur IRC
Liste des membres Rechercher Aide
Bienvenue Invité !   Se connecter             Mes sujets   
Administrer
0 membre(s) et 1 visiteur(s) actif(s) durant les 5 dernières minutes Utilisateurs actifs : Aucun membre + 1 visiteur
Avant de poster sur le forum, il y a des régles de bases à respecter pour une bonne entente et un respect de tous.
Veuillez lire la charte du forum.
  :: Index » Forum Ti68K » Projets » Mode7 (163 réponse(s))
./REPRISE DU POST PRECEDENT (post n°152)   Marquer comme non lu.
Lionel Debroux Ecrit le: Mercredi 1er septembre 2004 à 10:31 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

J'avais vu cette optimisation (qui doit être suggérée dans le tutorial, non ?).
Il exagère, les routines de TICT ne sont qu'au plus un ordre de grandeur plus rapides que celles d'AMS, et seulement sous certaines conditions (AMS 2.xx et plus). Mais il est vrai que l'effet de leur utilisation est habituellement nettement visible, c'était le cas sur Ice Hockey 68k.
Evidemment que tu peux utiliser ces routines. Pour l'affichage de strings, il y en a dans ebook (B/W) et dans TI-Chess (grayscale, pas particulièrement optimisé vitesse, je peux le faire). Pour le print d'un nombre dans une string, voir fastitoa.h dans le package de pending updates sur tict.ticalc.org (tu es sûr d'avoir la dernière version, ne prends pas le package seul plus bas sur la page de news). Prends en compte la possibilité d'utiliser CharNumber si les nombres sont petits.

-Edité le Mercredi 1er septembre 2004 à 10:38 par Lionel Debroux-
Lionel Debroux - membre de TICT.
    
./Post n°153   Marquer comme non lu.
LionelA Ecrit le: Mercredi 1er septembre 2004 à 11:16 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


Je dois pas être doué mais là j'ai cherché pendant 1/2h sur la page de tict et pas moyen de mettre la main sur le 'package de pending updates' dont tu parles.
Travis m'a aussi dit dans un mail plus récent que les routines de string de la tict ne permettaient pas d'utiliser ses propres fonts, or j'aimerais vraiment utiliser les fonts rippées de f-zero gba...
Auteur de Mode7 Engine pour ti68k
Auteur de F-ZERO for TI68k
Membre de Orage Studio
Mon site perso : http://www.tigen.org/lionela/
Le gite de mes parents à coté de Narbonne :
http://chaletdenis.free.fr/
    
./Post n°154   Marquer comme non lu.
Lionel Debroux Ecrit le: Mercredi 1er septembre 2004 à 11:28 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

Ici sont les updates

> Travis m'a aussi dit dans un mail plus récent que les routines de string de la tict ne permettaient pas d'utiliser ses propres fonts, or j'aimerais vraiment utiliser les fonts rippées de f-zero gba...
Il a raison, mais c'est assez facile à changer, pourvu que ta police ne fasse pas plus de 8 caractères de large (ce qui est une ineptie sur nos calculettes). Ca sera un peu plus difficile sinon.
-Edité le Mercredi 1er septembre 2004 à 11:29 par Lionel Debroux-
Lionel Debroux - membre de TICT.
    
./Post n°155   Marquer comme non lu.
Lionel Debroux Ecrit le: Jeudi 2 septembre 2004 à 15:18 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

Tu n'as pas répondu...
Où Mig53 en est-il dans ses routines de fast floating-point ? Le moteur de Mode7 n'a besoin que de peu d'entre elles (+, -, (-), *, /, sin, cos, tan ?, puissance ?, peut-être une ou deux autres).
Lionel Debroux - membre de TICT.
    
./Post n°156   Marquer comme non lu.
LionelA Ecrit le: Jeudi 2 septembre 2004 à 16:05 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


Travis a presque viré toutes les utilisations de float, qui d'ailleurs ne servaient que pendant l'initialisation. Mig53 ne m'a pas contacté donc je ne sais absolument pas où il en est...Cependant si la vitesse de ses routines permettent de faire un reinit des matrices de transformation en temps réel, on pourra alors zoomer, dezoomer, changer l'angle de vue, et tout pour avoir des effets visuels excellents !
Les floats sont utilisés parce qu'avec des entiers j'obtiens un warning 'integer overflow' et en plus il faudrait que je les multiplie pour les passer en virgule fixe avant de diviser (fonction m7_CreateMatrix). Demande a Travis ce qu'il a fait pour en enlever certains... (cela dit il n'a pas reussi a tous les virer sans perdre en precision, mais en theorie je crois que c'est possible car au final je n'ai que des tableaux contenant des shorts).

Je n'ai pas eu le temps de me pencher encore sur les routines de strings (je prepare mon demenagement à Toulouse), mais pour ce qui est de la taille des polices je pense que en 8x10 ca sera parfait, quitte a redimmensionner la font de gba (je crois que c'est ce qu'avait fait pollux dans formula0)
Auteur de Mode7 Engine pour ti68k
Auteur de F-ZERO for TI68k
Membre de Orage Studio
Mon site perso : http://www.tigen.org/lionela/
Le gite de mes parents à coté de Narbonne :
http://chaletdenis.free.fr/
    
./Post n°157   Marquer comme non lu.
Lionel Debroux Ecrit le: Jeudi 2 septembre 2004 à 17:02 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

Je verrai quand le round d'optimisations de Travis sera fini. Il m'a envoyé les modifications sur IN_MAP et IN_MAP2.
Je n'avais pas vu que les floats n'existaient que pendant l'init. Mais des routines de fast floating point sont utiles quand il y en a besoin...
Les routines de fast floating-point originales (© Motorola 1980-1981) indiquent au plus 50 µs environ pour une multiplication (processeur de fréquence telle que nous avons). Les cos, sin, etc. seraient plus aux alentours de 500 µs.
Lionel Debroux - membre de TICT.
    
./Post n°158   Marquer comme non lu.
Dari Ecrit le: Jeudi 2 septembre 2004 à 20:10 Déconnecté(e)    Voir le profil de Dari Envoyer un email à Dari Visiter le site WEB de Dari Envoyer un message privé à Dari  

LionelA :
(je prepare mon demenagement à Toulouse)


Bienvenue pas loin de chez moi, alors?
"iPod, therefore, I am."

http://media.laquadrature.net/Quadrature_black-out_HADOPI_468x60px.gif

    
./Post n°159   Marquer comme non lu.
LionelA Ecrit le: Vendredi 3 septembre 2004 à 11:37 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


Merci
Auteur de Mode7 Engine pour ti68k
Auteur de F-ZERO for TI68k
Membre de Orage Studio
Mon site perso : http://www.tigen.org/lionela/
Le gite de mes parents à coté de Narbonne :
http://chaletdenis.free.fr/
    
./Post n°160   Marquer comme non lu.
LionelA Ecrit le: Vendredi 3 septembre 2004 à 21:47 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


Lionel, Travis m'a envoyé la version qu'il a optimisé du moteur et j'aurais voulu optimiser la fonction d'affichage des sprites que j'ai faite, en appelant a la place une des fonctions de Extgraph.
Cependant j'ai besoin d'une fonction qui affiche des sprite dont la largeur et multiple de 8, clippée, maskée.
Je crois que cette fonction n'existe pas dans la bêta d'extgraph...

Pourrais tu regarder celle que j'ai faite ?

La voila en version simplifiée et transformée pour faciliter la comprehension :


void grayclipspriteX8_mask(short Xscreen, short Yscreen, short width, short height,
unsigned char * img0, unsigned char * img1, unsigned char * mask,
unsigned char *Plane0, unsigned char *Plane1)
{
  register short i, j;
  short width2, width3;
  short offset = (Yscreen * 30);
  short clippedup, clippeddown;
  unsigned short shift = Xscreen % 8, hmshift;
  
  BYTE byteMask;
  BYTE byteImg0;
  BYTE byteImg1;

  
  if (Xscreen < 0)
  {
    shift = (8 + shift) % 8;
    offset += (Xscreen-7) / 8;
    clippeddown = (CLIP_DOWN - 1) * 30;
    clippedup = (CLIP_UP - 1) * 30;
  }
  else
  {
    offset += (Xscreen / 8);
    clippeddown = CLIP_DOWN*30;
    clippedup = CLIP_UP*30;
  }
   
  if (shift)
    width2 = width + 1;
  else
    width2 = width;

  hmshift = 8 - shift;
  width3 = width2 - 1;

  for (i=0; (i<height) && (offset < clippeddown); i++)
  {
    if (offset >= clippedup)
    {
      j=0;
      if ((offset + j - ((Yscreen+i) * 30)) < CLIP_RIGHT)
      {
        if ((offset + j - ((Yscreen+i) * 30)) >= CLIP_LEFT)
        {        
          if (shift)
          {
            byteMask = (*mask >> shift) | (0xFF << (hmshift));
            byteImg0 = (*img0 >> shift);
            byteImg1 = (*img1 >> shift);
          }
          else
          {
            byteMask = *mask;
            byteImg0 = *img0;
            byteImg1 = *img1;
            mask++;
            img0++;
            img1++;
          }

          Plane0[offset + j] &= byteMask;
          Plane0[offset + j] |= byteImg0;
          Plane1[offset + j] &= byteMask;
          Plane1[offset + j] |= byteImg1;
        }
        else
        {          
          if (!shift)
          {
            mask++;                      
            img0++;
            img1++;
          }
        }
      }
      else
      {
        mask++;                      
        img0++;
        img1++;
      }
      for (j=1; j<width3; j++)
      {
        if ((offset + j - ((Yscreen+i) * 30)) < CLIP_RIGHT)
        {
          if ((offset + j - ((Yscreen+i) * 30)) >= CLIP_LEFT)
          {
            if (shift)
            {
              byteMask = (*mask << (hmshift)) | (*(mask+1) >> shift);
              byteImg0 = (*img0 << (hmshift)) | (*(img0+1) >> shift);
              byteImg1 = (*img1 << (hmshift)) | (*(img1+1) >> shift);
            }
            else
            {
              byteMask = *mask;
              byteImg0 = *img0;
              byteImg1 = *img1;
            }
            mask++;
            img0++;
            img1++;
            Plane0[offset + j] &= byteMask;
            Plane0[offset + j] |= byteImg0;
            Plane1[offset + j] &= byteMask;
            Plane1[offset + j] |= byteImg1;
          }
          else
          {
            mask++;                      
            img0++;
            img1++;
          }
        }
        else
        {
          mask++;                      
          img0++;
          img1++;
        }
      }
      if (j == width3)
      {
        if ((offset + j - ((Yscreen+i) * 30)) < CLIP_RIGHT)
        {
          if ((offset + j - ((Yscreen+i) * 30)) >= CLIP_LEFT)
          {
            if (shift)
            {
              byteMask = (*mask << (hmshift)) | (0xFF >> shift);
              byteImg0 = (*img0 << (hmshift));
              byteImg1 = (*img1 << (hmshift));
            }
            else
            {
              byteMask = *mask;
              byteImg0 = *img0;
              byteImg1 = *img1;
            }
            mask++;
            img0++;
            img1++;
            Plane0[offset + j] &= byteMask;
            Plane0[offset + j] |= byteImg0;
            Plane1[offset + j] &= byteMask;
            Plane1[offset + j] |= byteImg1;
          }
          else
          {
            mask++;                      
            img0++;
            img1++;
          }
        }
        else
        {
          mask++;                      
          img0++;
          img1++;
        }        
      }
    }
    else
    {
      mask+=width;
      img0+=width;
      img1+=width;
    }

    offset+=30;
  }
  
}


Les constantes CLIP_DOWN et CLIP_UP sont données en pixels et CLIP_LEFT et CLIP_RIGHT sont par pas de 8

PS: désolé c'est pas trop commenté :p
-Edité le Samedi 4 septembre 2004 à 12:15 par lionelA-
Auteur de Mode7 Engine pour ti68k
Auteur de F-ZERO for TI68k
Membre de Orage Studio
Mon site perso : http://www.tigen.org/lionela/
Le gite de mes parents à coté de Narbonne :
http://chaletdenis.free.fr/
    
./Post n°161   Marquer comme non lu.
Kevin Kofler Ecrit le: Vendredi 3 septembre 2004 à 22:46 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Lionel, nous avons volontairement rejeté l'option d'utiliser des FPs binaires pour le support FP de TIGCC parce que c'est insoutenable en taille (routines énormes à rajouter à chaque programme). Nous utilisons le BCD parce que c'est dans la ROM. Nous ne nous sommes quand-même pas fait ch**r à rajouter le BCD et les flottants 10 bits sans padding à GCC sans raison.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°162   Marquer comme non lu.
Lionel Debroux Ecrit le: Samedi 4 septembre 2004 à 10:30 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

#160: cette fonction n'existe en effet pas dans ExtGraph... Pour optimiser la tienne, il faudrait tout réécrire en assembleur, et ça prend beaucoup de temps... Je peux tout au plus t'envoyer la même routine faite en C par MastaZog.
#161: évidemment, mais il est des programmes où les floats binaires peuvent être utiles. Quand on a vraiment besoin de vitesse (c'est le cas ici), on utilise des méthodes rapides, et on se moque un peu de la taille (il ne faut pas exagérer !). Voir la façon dont les jeux un peu complexes étaient faits au début des années 1990, pour pouvoir faire tourner des trucs intéressants sur des machines comparables aux nôtres pour la puissance processeur (pas vraiment pour le système vidéo).
Lionel Debroux - membre de TICT.
    
./Post n°163   Marquer comme non lu.
Dari Ecrit le: Samedi 4 septembre 2004 à 11:47 Déconnecté(e)    Voir le profil de Dari Envoyer un email à Dari Visiter le site WEB de Dari Envoyer un message privé à Dari  

Tu pourrais couper le première ligne, parce que du coup, la page fait trois kilomètres de large?

Puis sinon, bonne chance ! Allez LionelA, Allez LionelA, Alleeeeez !
"iPod, therefore, I am."

http://media.laquadrature.net/Quadrature_black-out_HADOPI_468x60px.gif

    
  :: Index » Forum Ti68K » Projets » Mode7 (163 réponse(s))
Pages : 9/9     « 1 2 3 4 5 6 7 8 [9] » »|

.Répondre à ce sujet
Les boutons de code
[B]old[I]talic[U]nderline[S]trikethrough[L]ine Flip Hori[Z]ontallyFlip [V]erticallySha[D]ow[G]low[S]poilerCode [G][C]ite
Bullet [L]istList Item [K] Link [H][E]mail[P]icture SmileysHelp
Couleurs :
Saisissez votre message
Activer les smileys
     

Forum de Ti-Gen v3.0 Copyright ©2004 by Geoffrey ANNEHEIM
Webmaster: Kevin KOFLER, Content Admins: list, Server Admins: Tyler CASSIDY and Kevin KOFLER, DNS Admin: squalyl
Page générée en 82.39ms avec 18 requetes