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 » Programmation C » Différence sur HW1 et HW2 (15 réponse(s))
./POST DE DEPART (post n°0)   Marquer comme non lu.
bobti89 Ecrit le: Dimanche 8 août 2004 à 17:41 Déconnecté(e)    Voir le profil de bobti89 Envoyer un email à bobti89 Visiter le site WEB de bobti89 Envoyer un message privé à bobti89  

Voila, j'ai fait un jeu et je remarque des différences entre la ti89 HW1 de mon frère et ma ti89 HW2 (le jeu ralentit et accélère incompréhensiblement :( ).

Je pense que ca vient de mon système de ralentissement qui se base sur l'auto-int 1 qui est différent sur ces 2 types de calculatrice.
Seulement, seule la vitesse devrait être différente...

Donc j'aimerais savoir d'où vient cette différence.

Sachant que l'auto-int 1 est définit comme ca :
DEFINE_INT_HANDLER (MyInt1)
{
  if (compteur++ > 8000) compteur=0;
}

Et qu'après je ralentis comme ca :
while ((compteur % (HW_VERSION==1 ? 10 : 8))  != 0); // ralentit le programme


Merci pour vos réponses.

EDIT : suppression des smileys
-Edité le Dimanche 8 août 2004 à 17:55 par bobti89-
bob ou bob, vous ne voyez pas la différence. Pourtant il y en a une fondamentale, l'un est écrit à l'endroit, l'autre à l'envers.

Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici
    
./Post n°1   Marquer comme non lu.
Sasume Ecrit le: Dimanche 8 août 2004 à 17:52 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Il ne manque pas quelque chose après les : ?
    
./Post n°2   Marquer comme non lu.
bobti89 Ecrit le: Dimanche 8 août 2004 à 17:56 Déconnecté(e)    Voir le profil de bobti89 Envoyer un email à bobti89 Visiter le site WEB de bobti89 Envoyer un message privé à bobti89  

C'était à cause du smiley ou c'est autre chose ?
bob ou bob, vous ne voyez pas la différence. Pourtant il y en a une fondamentale, l'un est écrit à l'endroit, l'autre à l'envers.

Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici
    
./Post n°3   Marquer comme non lu.
Thor Ecrit le: Dimanche 8 août 2004 à 18:11 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Je ne vois pas ce que tu veux faire avec ton modulo. Perso moi je sais que la HW1 est 10/12 soit 5/6 fois plus lente que la HW2 donc il me suffit de faire une pause 5/6 fois plus grande sur HW2 que sur HW1 c'est tout
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°4   Marquer comme non lu.
bobti89 Ecrit le: Dimanche 8 août 2004 à 18:16 Déconnecté(e)    Voir le profil de bobti89 Envoyer un email à bobti89 Visiter le site WEB de bobti89 Envoyer un message privé à bobti89  

Et tu la fais comment ta pause ?
bob ou bob, vous ne voyez pas la différence. Pourtant il y en a une fondamentale, l'un est écrit à l'endroit, l'autre à l'envers.

Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici
    
./Post n°5   Marquer comme non lu.
Thor Ecrit le: Dimanche 8 août 2004 à 18:21 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


volatile unsigned short counter;
DEFINE_INT_HANDLER (my_int_1_handler) 
{  
  counter++;
  ExecuteHandler(gray_int_1); //si tu as des gris
}

et dans ton prog tu fais :
while ((counter < (HW_VERSION==1 ? 100: 120); // ralentit le programme
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°6   Marquer comme non lu.
LionelA Ecrit le: Dimanche 8 août 2004 à 19:06 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


Moi j'ai fait comme ça dans f-zero : (code venant de geogeo)


#define SHOW_FPS 1 // 0 : don't show, 1 : show fps
#define GAME_SPEED 10 // 0 : the fastest

INT_HANDLER OldInt1 = NULL;
#if SHOW_FPS == 1
char fpsStr[3];
#endif
char hwVersion;
volatile char quit = 0;
char modifying = 0;
char nextModif = 0;
short timeCount = 0;
volatile short fCount = 0;
void (*display_Modif)();

// [Thanks to Geogeo from www.tigen.org for this code]
#define __HARDWARE_FREQUENCY        20970 //256
static volatile unsigned short __COUNTER_HARDWARE=0;

DEFINE_INT_HANDLER (SceneModif)
{
  ExecuteHandler (OldInt1);
  //HARDWARE VERSION 1.0 
  if (hwVersion==1)
  {
    //Incrémentation
    __COUNTER_HARDWARE+=__HARDWARE_FREQUENCY;
  
    //Execution interrupotion
    if (__COUNTER_HARDWARE<=32768 )
      return;
    //Remise à zéro
    __COUNTER_HARDWARE-=32768;        
  }
// [/Thanks to Geogeo from www.tigen.org for this code]
  timeCount++;
  if (timeCount == (256))
  {
    timeCount = 0;
#if SHOW_FPS == 1
    DrawStr (0, 0, "   ", A_REPLACE);
    sprintf (fpsStr, "%d", fCount);
    DrawStr (0, 0, fpsStr, A_REPLACE);
#endif
    fCount = 0;
  }
  
  if (!modifying && !nextModif)
  {
    modifying = 1;
    nextModif = GAME_SPEED;
    display_Modif();
    modifying = 0;
  }
  if(nextModif)
    nextModif--;
}


void SetLoopFunc(void (*modifFunc)())
{
  display_Modif = modifFunc;
}


void LoopInit()
{
  quit = 0;
  modifying = 0;
  timeCount = 0;
  fCount = 0;
  hwVersion = HW_VERSION;
  OldInt1 = GetIntVec (AUTO_INT_1);
}

void LoopEnd()
{
  SetIntVec (AUTO_INT_1, OldInt1);  
}

void MainLoop()
{
  SetIntVec (AUTO_INT_1, SceneModif);
  while(!quit)
  {
    Display();
    fCount++;    
  }  
}

void LoopQuit()
{
  quit = 1;
}


tu appelle ta fonction d'affichage : Display();
tu fais une fonction qui modifie ta scene de type : void func();

et dans ton main tu met :

// main loop
  SetLoopFunc(jeu);
  LoopInit();
  MainLoop();
  LoopEnd();


sinon j'ai fait un projet squelette pour faire un jeu en niveau de gris basé sur le meme principe
je vais le mettre sur ma page

Voila le source


(eh oui , toujours sur lycos car je ne peux pas faire de page sur free, ca valide pas la création d'email :( )

EDIT : fausse manip (tab puis espace, ca valide)
EDIT : smileys de *****


-Edité le Dimanche 8 août 2004 à 19:08 par LionelA-
-Edité le Dimanche 8 août 2004 à 19:09 par LionelA-
-Edité le Dimanche 8 août 2004 à 19:17 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°7   Marquer comme non lu.
Sasume Ecrit le: Dimanche 8 août 2004 à 20:35 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Le fait que les HW1 soient plus lentes que les HW2 au niveau du microprocesseur n'intervient pas sur la fréquence des interruptions...
cf j89hw.txt pour connaître la valeur de la fréquence de l'AI1 sur les différents HW.
    
./Post n°8   Marquer comme non lu.
bobti89 Ecrit le: Dimanche 8 août 2004 à 20:49 Déconnecté(e)    Voir le profil de bobti89 Envoyer un email à bobti89 Visiter le site WEB de bobti89 Envoyer un message privé à bobti89  

Et d'ailleurs dans mon cas, les deux tournes environ à la même vitesse, mais j'ai quelques "sauts" et "ralentissements" sur HW2 (alors qu'elle est plus rapide).

Thor> Il faudrait pas réinitialiser counter à 0 ?
LionelA>Ca me parait quand même compliqué...
bob ou bob, vous ne voyez pas la différence. Pourtant il y en a une fondamentale, l'un est écrit à l'endroit, l'autre à l'envers.

Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici
    
./Post n°9   Marquer comme non lu.
LionelA Ecrit le: Dimanche 8 août 2004 à 21:17 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


LionelA>Ca me parait quand même compliqué...


En fait ce n'est pas si compliqué que ca, il suffit de s'attarder un peu sur le source (il vaut mieux regarder dans le source a downloader)
Je pense que c'est mieux que de ralentir avec une attente car celle-ci bloque les ressources alors que ma methode (enfin celle de geogeo) permet de mieux simuler un changement de frequence de l'interruption tout en laissant les niveaux de gris faire leur boulot
(cf premiere ligne : ExecuteHandler (OldInt1); à chaque interruption)

Le fait que tu ait des ralentissements par moments peut s'expliquer du fait que apres ton while, le code de ton jeu est executé et pendant ce temps là le compteur continue de s'incrementer et au moment de revenir dans ton while il a pris une valeur (que tu ne peut pas maitriser) comprise entre 0 et 8000. Si par chance cette valeur est proche d'un multiple de 8 il n'y a pas besoin de beaucoup d'interruptions pour arriver a satisfaire la condition et passer le while. Le probleme doit aussi exister sur hw1 (multiples de 10) mais il est moins visible car l'interruption est plus rapide et qu'il y a moins de multiples de 10 dans 8000 que de multiples de 8

Je ne sais pas si c'est bien exprimé :)
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°10   Marquer comme non lu.
bobti89 Ecrit le: Dimanche 8 août 2004 à 22:53 Déconnecté(e)    Voir le profil de bobti89 Envoyer un email à bobti89 Visiter le site WEB de bobti89 Envoyer un message privé à bobti89  

ok, merci, je crois avoir compris :)
-Edité le Dimanche 8 août 2004 à 22:53 par bobti89-
bob ou bob, vous ne voyez pas la différence. Pourtant il y en a une fondamentale, l'un est écrit à l'endroit, l'autre à l'envers.

Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici
    
./Post n°11   Marquer comme non lu.
Lionel Debroux Ecrit le: Lundi 9 août 2004 à 09:17 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  

Si tu utilises le doublebuffering, ça peut également venir de là (mais il n'y a rien à y faire). Le doublebuffering est un des rares points sur lesquels le sous-système graphique des HW2 est meilleur que celui des HW1 (dont la lenteur du doublebuffering est à ma connaissance le seul vrai défaut).
Lionel Debroux - membre de TICT.
    
./Post n°12   Marquer comme non lu.
LionelA Ecrit le: Lundi 9 août 2004 à 10:20 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


Il y avait une erreur dans les projets que j'ai mis en telechargement, c'est réparé.
Sinon j'avais oublié de preciser qu'il fallait minimum tigcc 0.95 bêta 15.
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°13   Marquer comme non lu.
Thor Ecrit le: Lundi 9 août 2004 à 11:19 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Lionel Debroux :
Si tu utilises le doublebuffering, ça peut également venir de là (mais il n'y a rien à y faire). Le doublebuffering est un des rares points sur lesquels le sous-système graphique des HW2 est meilleur que celui des HW1 (dont la lenteur du doublebuffering est à ma connaissance le seul vrai défaut).
#tritop#
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°14   Marquer comme non lu.
bobti89 Ecrit le: Lundi 9 août 2004 à 11:22 Déconnecté(e)    Voir le profil de bobti89 Envoyer un email à bobti89 Visiter le site WEB de bobti89 Envoyer un message privé à bobti89  

Lionel> mais sur le coup, c'était la HW2 qui avait un problème ;)
bob ou bob, vous ne voyez pas la différence. Pourtant il y en a une fondamentale, l'un est écrit à l'endroit, l'autre à l'envers.

Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici
    
./Post n°15   Marquer comme non lu.
Lionel Debroux Ecrit le: Mardi 10 août 2004 à 14:27 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  

Que veut dire #13 ?
Lionel Debroux - membre de TICT.
    
  :: Index » Forum Ti68K » Programmation C » Différence sur HW1 et HW2 (15 réponse(s))
Pages : 1/1     « [1] » »|

.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 55.59ms avec 18 requetes