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 » Betas et WIPs » F-Zero (393 réponse(s))
./REPRISE DU POST PRECEDENT (post n°285)   Marquer comme non lu.
Benjy Ecrit le: Jeudi 30 juin 2005 à 07:32 Déconnecté(e)    Voir le profil de Benjy Envoyer un email à Benjy Visiter le site WEB de Benjy Envoyer un message privé à Benjy  


Lol pas bien pourquoi?? Car c'est prometteur en tous cas!!!
Le langage C y'a pas mieux!!!
    
./Post n°286   Marquer comme non lu.
Jfg Ecrit le: Jeudi 30 juin 2005 à 07:56 Déconnecté(e)    Voir le profil de Jfg Envoyer un email à Jfg Visiter le site WEB de Jfg Envoyer un message privé à Jfg  


Tu te fou de ma gueule ? Comment tu as réussi à faire ça ? (en tout cas le voila ton système de pause... tu débranche le cable :D)
Kill Mario
    
./Post n°287   Marquer comme non lu.
limmt Ecrit le: Jeudi 30 juin 2005 à 09:40 Déconnecté(e)    Voir le profil de limmt Envoyer un email à limmt Visiter le site WEB de limmt Envoyer un message privé à limmt  


c'est génial :p:p:p
http://www.falco-fr.com/ - http://www.jump67.com/ - http://www.msf-league.com/
    
./Post n°288   Marquer comme non lu.
Kevin Kofler Ecrit le: Jeudi 30 juin 2005 à 10:32 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  


Le truc qui me dérange le plus chez toi, c'est que tu es carrément fier de tes hacks minables. Les interruptions doivent contenir le minimum de code possible. Toi, tu abuses énormément des interruptions, au point où tu ne peux même pas utiliser les routines de link pratiques, genre LIO_*, mais te retrouves à réinventer la roue avec des méthodes de très bas niveau.

Il y a en gros 2 catégories de gens:
  • ceux qui utilisent LIO_* et trouvent par conséquent le link très facile (LIO_* fait tout pour toi),
  • ceux qui ne les utilisent pas et se plaignent que le link, c'est compliqué. #roll#
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°289   Marquer comme non lu.
FpgForce Ecrit le: Jeudi 30 juin 2005 à 10:52 Déconnecté(e)    Voir le profil de FpgForce Envoyer un email à FpgForce Envoyer un message privé à FpgForce  

Les interruptions doivent contenir le minimum de code possible
Pkoi?
au point où tu ne peux même pas utiliser les routines de link pratiques, genre LIO_*, mais te retrouves à réinventer la roue avec des méthodes de très bas niveau.
Si ça lui plait, tant mieux, et si ça permet de faire un très bon mode link, où est le problème ^^
ceux qui ne les utilisent pas et se plaignent que le link, c'est compliqué. #roll#
Ben je l'ai pas encore vu se plaindre %)
    
./Post n°290   Marquer comme non lu.
Kevin Kofler Ecrit le: Jeudi 30 juin 2005 à 11:18 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  


FpgForce :
Les interruptions doivent contenir le minimum de code possible
Pkoi?

Parce que c'est un principe de base des interruptions. Les interruptions doivent compléter le plus rapidement possible, parce qu'elles empêchent le processeur de faire autre chose, et parce que si une interruption timer ne complète pas avant que le timer s'active pour la prochaine fois, la calculatrice plante (le risque principal pour l'AI1, timer haute vitesse). De plus, les AIs de haute priorité empêchent aussi aux AIs de moins haute priorité de s'exécuter, ce qui peut par exemple bloquer l'horloge des HW2, faire clignoter les niveaux de gris (qui sont branchés sur l'AI1) etc. (le problème principal pour les AIs >1).

au point où tu ne peux même pas utiliser les routines de link pratiques, genre LIO_*, mais te retrouves à réinventer la roue avec des méthodes de très bas niveau.
Si ça lui plait, tant mieux, et si ça permet de faire un très bon mode link, où est le problème ^^

Ce n'est pas un "très bon mode link" vu qu'il ne gère pas l'USB. (Il a essayé, mais les routines que j'ai identifiées et documentées ne marchent pas avec son fonctionnement par interruptions.)
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°291   Marquer comme non lu.
Folco Ecrit le: Jeudi 30 juin 2005 à 11:36 Déconnecté(e)    Voir le profil de Folco Envoyer un email à Folco Envoyer un message privé à Folco  


oui, n'empêche qu'il fait tout de même du plug&play, sans usb, perso je trouve ça pas mal quand même %)
<<< Kernel Extremist©®™ >>>
Pas la peine d'aller là plus d'une fois tous les six mois...

"Il faut apprendre pour savoir qu'il faut apprendre pour savoir."
    
./Post n°292   Marquer comme non lu.
LionelA Ecrit le: Jeudi 30 juin 2005 à 15:14 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


Jfg :
Tu te fou de ma gueule ? Comment tu as réussi à faire ça ? (en tout cas le voila ton système de pause... tu débranche le cable :D)


hehe, ouais mais c'est bon hein je peux faire une pause software aussi, ca revient au meme (et d'ailleurs je l'ai déja implementée) :)

Kevin Kofler :
Le truc qui me dérange le plus chez toi, c'est que tu es carrément fier de tes hacks minables. Les interruptions doivent contenir le minimum de code possible. Toi, tu abuses énormément des interruptions, au point où tu ne peux même pas utiliser les routines de link pratiques, genre LIO_*, mais te retrouves à réinventer la roue avec des méthodes de très bas niveau.

Il y a en gros 2 catégories de gens:
  • ceux qui utilisent LIO_* et trouvent par conséquent le link très facile (LIO_* fait tout pour toi),
  • ceux qui ne les utilisent pas et se plaignent que le link, c'est compliqué. #roll#


tu ne dois pas te sentir dérangé lorsque je trouve des méthodes révolutionnaires :D. Je ne pense pas que ca soit des hacks d'utiliser les fonctions d'AMS dans des interruptions (je pense même que le code d'AMS de n'importe quelle interruption est 10fois plus gros et lent que celui que je fais executer (enfin j'en sais rien mais bon :p))

Sinon tu as oublié une catégorie de gens :
  • ceux qui utilisent les routines bas niveau et qui font quelque chose qui ressemble à ce qu'on peut faire de plus efficace dans un jeu d'action (et qui ne se plaignent pas, au contraire ca m'a plutôt amusé de trouver tout ca)


Kevin Kofler :
FpgForce :
Les interruptions doivent contenir le minimum de code possible
Pkoi?

Parce que c'est un principe de base des interruptions. Les interruptions doivent compléter le plus rapidement possible, parce qu'elles empêchent le processeur de faire autre chose, et parce que si une interruption timer ne complète pas avant que le timer s'active pour la prochaine fois, la calculatrice plante (le risque principal pour l'AI1, timer haute vitesse). De plus, les AIs de haute priorité empêchent aussi aux AIs de moins haute priorité de s'exécuter, ce qui peut par exemple bloquer l'horloge des HW2, faire clignoter les niveaux de gris (qui sont branchés sur l'AI1) etc. (le problème principal pour les AIs >1).


Déja expliqué pourquoi je devais faire ca. Apres je dis pas à tout le monde de me copier, j'explique ma méthode, elle marche parfaitement, il m'est meme arrivé de bloquer l'execution dans le handler d'interrupt 1 et ca n'a fait que bloquer l'execution des ndg jusqu'a ce que je reparte sans problemes alors le fait que ca fasse planter la calc, c'est un peu des légendes :p
Pour l'horloge des HW2 ben tellement elle est pourrie on s'en tape... par exemple sur ma V200 je la regle et 1 jour apres (en lancant des prog asm) elle n'a rien a voir.

au point où tu ne peux même pas utiliser les routines de link pratiques, genre LIO_*, mais te retrouves à réinventer la roue avec des méthodes de très bas niveau.
Si ça lui plait, tant mieux, et si ça permet de faire un très bon mode link, où est le problème ^^

Ce n'est pas un "très bon mode link" vu qu'il ne gère pas l'USB. (Il a essayé, mais les routines que j'ai identifiées et documentées ne marchent pas avec son fonctionnement par interruptions.)


Je trouve au contraire qu'il est très bien ce mode link (implantable (jusqu'a preuve du contraire evidemment)), pour l'USB c'est normal que ca fonctionne pas au meme titre que si je mets des LIO_* dans le handler de l'AI4 ca foire. Lorsque ExtendeD aura documenté un peu plus sur les fonction bas niveau de AMS titanium pour l'usb ben je verrais ce que je peut faire :)

Martial Demolins :
oui, n'empêche qu'il fait tout de même du plug&play, sans usb, perso je trouve ça pas mal quand même %)


Oui puisque de toute façons les Titaniums ont un port link I/O traditionnel aussi :)
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°293   Marquer comme non lu.
Kevin Kofler Ecrit le: Jeudi 30 juin 2005 à 16:26 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  


LionelA :
tu ne dois pas te sentir dérangé lorsque je trouve des méthodes révolutionnaires :D.

Ce ne sont pas des méthodes "révolutionnaires", ce sont des méthodes non-standard qui sont de très mauvaises idées. Si les gens ne font pas comme toi, c'est pour une raison. Arrête de croire que tes idées sont tellement "révolutionnaires" parce que tu es plus fort que les autres, ce n'est pas le cas.

Je ne pense pas que ca soit des hacks d'utiliser les fonctions d'AMS dans des interruptions

Ce n'est pas utiliser des fonctions d'AMS dans des interruptions que je te reproche (même si c'est une partie du problème), mais mettre beaucoup trop de code en général dans les interruptions. Tu dis toi-même que tout ton moteur de mode 7 tourne dans une interruption, il n'a rien à faire là-dedans!

(je pense même que le code d'AMS de n'importe quelle interruption est 10fois plus gros et lent que celui que je fais executer (enfin j'en sais rien mais bon :p))

C'est faux.

Sinon tu as oublié une catégorie de gens :
  • ceux qui utilisent les routines bas niveau et qui font quelque chose qui ressemble à ce qu'on peut faire de plus efficace dans un jeu d'action (et qui ne se plaignent pas, au contraire ca m'a plutôt amusé de trouver tout ca)

Ce n'est pas "ce qu'on peut faire de plus efficace", c'est ce qu'on peut faire de plus moche.

Déja expliqué pourquoi je devais faire ca.

Tu ne devais pas, tu t'es embarqué sur cette voie sans issue et tu refuses de changer.

Apres je dis pas à tout le monde de me copier, j'explique ma méthode, elle marche parfaitement,

Même si elle a l'air de marcher, ça ne veut pas dire que c'est une bonne idée ni même que c'est fiable.

il m'est meme arrivé de bloquer l'execution dans le handler d'interrupt 1 et ca n'a fait que bloquer l'execution des ndg jusqu'a ce que je reparte sans problemes alors le fait que ca fasse planter la calc, c'est un peu des légendes :p

En plus tu m'accuses de raconter n'importe quoi alors que c'est toi qui ne comprends pas le principe des interruptions! Si tu consommes vraiment toute la période du timer AI1 dans ton AI1 de manière régulière, le plantage est garanti! Dans ton cas, apparemment, c'était seulement pendant une courte période, et les temps d'exécution de l'AI1 se sont réduits après, donc ça s'est réglé. Mais si l'AI1 ne donne jamais le temps à d'autre code de s'exécuter, c'est un plantage à 100%. Et cette situation n'est pas si improbable que ça dans F-Zero à en croire ta description!

Pour l'horloge des HW2 ben tellement elle est pourrie on s'en tape... par exemple sur ma V200 je la regle et 1 jour apres (en lancant des prog asm) elle n'a rien a voir.

Justement à cause de programmes bogués comme les tiens. Arrête d'utiliser les jeux bogués. Pratiquement tous les jeux en niveaux de gris n'ont aucun problème avec l'horloge AI3 (impossible de faire un OSSetSR qui bloque l'AI3 sans bloquer l'AI1), et les jeux en blanc&noir codés correctement non plus (OSSetSR = poubelle, il faut rediriger les interruptions individuelles).

Je trouve au contraire qu'il est très bien ce mode link (implantable (jusqu'a preuve du contraire evidemment)),

Déjà tu n'es même pas sûr que ça ne plante pas, et puis entre "ne plante pas" et "très bien", il y a une marge énorme.

pour l'USB c'est normal que ca fonctionne pas au meme titre que si je mets des LIO_* dans le handler de l'AI4 ca foire. Lorsque ExtendeD aura documenté un peu plus sur les fonction bas niveau de AMS titanium pour l'usb ben je verrais ce que je peut faire :)

Il n'y a pas de fonctions vraiment de plus bas niveau que celles que j'ai documentées. Il y a des sous-routines de ces fonctions qui prennent des tonnes de paramètres et ne font rien de fondamentalement différent par rapport aux routines que j'ai documentées et c'est tout. Si tu veux du bas niveau, il faudra travailler directement avec les ports.

Oui puisque de toute façons les Titaniums ont un port link I/O traditionnel aussi :)

Mais les Titaniums ne sont livrées qu'avec un câble USB, pas avec un câble LIO, donc le support LIO ne sert à rien pour 2 possesseurs de Titanium.
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°294   Marquer comme non lu.
LionelA Ecrit le: Jeudi 30 juin 2005 à 17:32 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


Kevin Kofler :
LionelA :
tu ne dois pas te sentir dérangé lorsque je trouve des méthodes révolutionnaires :D.

Ce ne sont pas des méthodes "révolutionnaires", ce sont des méthodes non-standard qui sont de très mauvaises idées. Si les gens ne font pas comme toi, c'est pour une raison. Arrête de croire que tes idées sont tellement "révolutionnaires" parce que tu es plus fort que les autres, ce n'est pas le cas.


Et l'ironie (:D) tu connais ? (c'etait pas méchant hein et je n'ai jamais dit que j'étais fort moi)


Je ne pense pas que ca soit des hacks d'utiliser les fonctions d'AMS dans des interruptions

Ce n'est pas utiliser des fonctions d'AMS dans des interruptions que je te reproche (même si c'est une partie du problème), mais mettre beaucoup trop de code en général dans les interruptions. Tu dis toi-même que tout ton moteur de mode 7 tourne dans une interruption, il n'a rien à faire là-dedans!


Kuuuai ?
J'ai jamais dit que mon moteur de mode7 tournait dans une interrupt, c'est le code de modification de l'environnement (qui se resume a faire bouger la camera + quelques autres trucs qui se trouvent dans une interruption)


(je pense même que le code d'AMS de n'importe quelle interruption est 10fois plus gros et lent que celui que je fais executer (enfin j'en sais rien mais bon :p))

C'est faux.


Je n'en suis pas si sur mais enfin je pense pouvoir te faire confiance :)


Sinon tu as oublié une catégorie de gens :
  • ceux qui utilisent les routines bas niveau et qui font quelque chose qui ressemble à ce qu'on peut faire de plus efficace dans un jeu d'action (et qui ne se plaignent pas, au contraire ca m'a plutôt amusé de trouver tout ca)

Ce n'est pas "ce qu'on peut faire de plus efficace", c'est ce qu'on peut faire de plus moche.


LOL

Déja expliqué pourquoi je devais faire ca.

Tu ne devais pas, tu t'es embarqué sur cette voie sans issue et tu refuses de changer.


Tu n'a pas pu me trouver un moyen de faire tourner le CPU à 100% avec regulation de la vitesse sur l'AI1, je l'ai trouvé, il n'y a que celui là, c'est ce que je dois utiliser


Apres je dis pas à tout le monde de me copier, j'explique ma méthode, elle marche parfaitement,

Même si elle a l'air de marcher, ça ne veut pas dire que c'est une bonne idée ni même que c'est fiable.


Comme j'ai du faire des milliers de tests de cette méthode sans le moindre probleme, on peux dire quelle est fiable (et puis c'est tout :p)



il m'est meme arrivé de bloquer l'execution dans le handler d'interrupt 1 et ca n'a fait que bloquer l'execution des ndg jusqu'a ce que je reparte sans problemes alors le fait que ca fasse planter la calc, c'est un peu des légendes :p

En plus tu m'accuses de raconter n'importe quoi alors que c'est toi qui ne comprends pas le principe des interruptions! Si tu consommes vraiment toute la période du timer AI1 dans ton AI1 de manière régulière, le plantage est garanti! Dans ton cas, apparemment, c'était seulement pendant une courte période, et les temps d'exécution de l'AI1 se sont réduits après, donc ça s'est réglé. Mais si l'AI1 ne donne jamais le temps à d'autre code de s'exécuter, c'est un plantage à 100%. Et cette situation n'est pas si improbable que ça dans F-Zero à en croire ta description!


Je croyais que le handler de l'AI1 ne pouvait pas etre rappelé si l'interruption occurait pendant la periode d'execution de celle ci donc bon je vois pas comment ca pourrait planter. Bon sinon je veux bien te croire que si le code du programme principal n'est jamais executé ca sux un peu mais ce n'est vraiment pas le cas dans F-Zero, ca voudrait dire que le code de modification de l'environnement prend plus que 1/256 secondes a s'executer sur HW2 ce qui est absolument loin d'etre le cas. (et puis si c'etait le cas les gris se chieraient dessus (AI1 bloquée))



Pour l'horloge des HW2 ben tellement elle est pourrie on s'en tape... par exemple sur ma V200 je la regle et 1 jour apres (en lancant des prog asm) elle n'a rien a voir.

Justement à cause de programmes bogués comme les tiens. Arrête d'utiliser les jeux bogués. Pratiquement tous les jeux en niveaux de gris n'ont aucun problème avec l'horloge AI3 (impossible de faire un OSSetSR qui bloque l'AI3 sans bloquer l'AI1), et les jeux en blanc&noir codés correctement non plus (OSSetSR = poubelle, il faut rediriger les interruptions individuelles).

Mdr, le seul prog que j'execute c'est F-Zero %) (bon ok et alors l'horloge sux de toute façon)


Je trouve au contraire qu'il est très bien ce mode link (implantable (jusqu'a preuve du contraire evidemment)),

Déjà tu n'es même pas sûr que ça ne plante pas, et puis entre "ne plante pas" et "très bien", il y a une marge énorme.


Je ne dirais pas qu'il est implantable car je ne l'ai testé qu'une heure en tout (et oui c'est tout récent) mais il est très bien car il gere les débranchement de cable et tout.


pour l'USB c'est normal que ca fonctionne pas au meme titre que si je mets des LIO_* dans le handler de l'AI4 ca foire. Lorsque ExtendeD aura documenté un peu plus sur les fonction bas niveau de AMS titanium pour l'usb ben je verrais ce que je peut faire :)

Il n'y a pas de fonctions vraiment de plus bas niveau que celles que j'ai documentées. Il y a des sous-routines de ces fonctions qui prennent des tonnes de paramètres et ne font rien de fondamentalement différent par rapport aux routines que j'ai documentées et c'est tout. Si tu veux du bas niveau, il faudra travailler directement avec les ports.

Oui puisque de toute façons les Titaniums ont un port link I/O traditionnel aussi :)

Mais les Titaniums ne sont livrées qu'avec un câble USB, pas avec un câble LIO, donc le support LIO ne sert à rien pour 2 possesseurs de Titanium.


Bah le cable I/O ca coute 10 balles (1,5?) à faire ... et puis le mode link c'est pas le premier avantage de F-Zero, je le vois plus comme un gadget qui rajoute de la durée de vie :)


Bref sinon je pensais à ne pas mettre F-Zero sous GPL pour ne pas a retrouver des fork pourris avec des menus AMS et des tiles recompressés etc... mais là franchement je pense sérieusement à le distribuer sous GPL pour voir ce que ca donnerait en programmation "normale" evidemment je doute que tu 'aura pas le temps de le reprendre donc dans tous les cas je ne cours pas un tres grand risque :)
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°295   Marquer comme non lu.
Lionel Debroux Ecrit le: Jeudi 30 juin 2005 à 19:38 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 le handler est trop long, il y a le risque de race condition, mais ce n'est manifestement pas le cas ici.

> Mdr, le seul prog que j'execute c'est F-Zero %) (bon ok et alors l'horloge sux de toute façon)
Bien sûr que l'horloge sux, mais ce n'est pas une raison pour en rajouter... Ca va être un argument de contre-publicité pour ton programme.
Lionel Debroux - membre de TICT.
    
./Post n°296   Marquer comme non lu.
LionelA Ecrit le: Jeudi 30 juin 2005 à 19:50 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


Qu'est ce que c'est "race condition" ?

Bah je ne suis pas sur a 100% que le probleme de l'horloge vienne bien de F-Zero, je ne touche pas à l'AI3 et si j'ai bien compris elle a un niveau de priorité supérieur à l'AI1 donc elle s'execute bien à temps.
Et lorsque je redirige l'AI4 pour gerer le link je fais ca dedans en gros :

DEFINE_INT_HANDLER (AI4) {
  ExecuteHandler (OldInt4);
  if(OSReadLinkBlock (&recv, 1)) {
    timeout = 0;
    received = 1;
  }
}


Alors svp dites moi où est la surcharge de code dans l'AI4 ?
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°297   Marquer comme non lu.
Kevin Kofler Ecrit le: Jeudi 30 juin 2005 à 21:28 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  


LionelA :
Kuuuai ?
J'ai jamais dit que mon moteur de mode7 tournait dans une interrupt, c'est le code de modification de l'environnement (qui se resume a faire bouger la camera + quelques autres trucs qui se trouvent dans une interruption)

Oups, c'est vrai, c'est l'autre moitié du code qui tourne dans l'interrupt, pas le mode 7, mais il n'a rien à faire là non plus.

Tu n'a pas pu me trouver un moyen de faire tourner le CPU à 100% avec regulation de la vitesse sur l'AI1

Parce que ce sont des demandes contradictoires. Ça ne sert à rien de calculer plus de frames qu'on affiche, tu consommes du temps CPU pour rien, tu peux tout aussi bien attendre l'AI1 (possiblement en mode basse-consommation et ainsi économiser les piles!). Modifier un frame pendant l'affichage est crade et ne sert à rien (ça veut juste dire que le bas correspond à un frame plus grand que le haut de l'écran, mais ça ne change rien au fait que chaque ligne perd des frames et qu'il y a donc des calculs faits pour rien).

Je croyais que le handler de l'AI1 ne pouvait pas etre rappelé si l'interruption occurait pendant la periode d'execution de celle ci donc bon je vois pas comment ca pourrait planter.

Pendant, non, mais juste après (sans que d'autre code puisse s'exécuter), oui.

LionelA :
Qu'est ce que c'est "race condition" ?

C'est un ordre imprévu (car improbable, mais pas impossible) des évènements, qui peut être à l'origine d'un bogue. Ici, Lionel Debroux parle de l'ordre des évènements "l'AI1 complète" et "la prochaine AI1 survient", si l'ordre est mauvais, ça bogue.

Bah je ne suis pas sur a 100% que le probleme de l'horloge vienne bien de F-Zero, je ne touche pas à l'AI3 et si j'ai bien compris elle a un niveau de priorité supérieur à l'AI1 donc elle s'execute bien à temps.

Si tu ne touches pas au SR (OSSetSR, trap #1 ou move #foo,%sr), oui, elle devrait s'exécuter à temps.

Et lorsque je redirige l'AI4 pour gerer le link je fais ca dedans en gros :

DEFINE_INT_HANDLER (AI4) {
  ExecuteHandler (OldInt4);
  if(OSReadLinkBlock (&recv, 1)) {
    timeout = 0;
    received = 1;
  }
}

OSReadLinkBlock ne devrait pas mettre plus d'une seconde, donc le problème n'est pas là.
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°298   Marquer comme non lu.
LionelA Ecrit le: Jeudi 30 juin 2005 à 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  


Kevin Kofler :
LionelA :
Kuuuai ?
J'ai jamais dit que mon moteur de mode7 tournait dans une interrupt, c'est le code de modification de l'environnement (qui se resume a faire bouger la camera + quelques autres trucs qui se trouvent dans une interruption)

Oups, c'est vrai, c'est l'autre moitié du code qui tourne dans l'interrupt, pas le mode 7, mais il n'a rien à faire là non plus.

Tu n'a pas pu me trouver un moyen de faire tourner le CPU à 100% avec regulation de la vitesse sur l'AI1

Parce que ce sont des demandes contradictoires. Ça ne sert à rien de calculer plus de frames qu'on affiche, tu consommes du temps CPU pour rien, tu peux tout aussi bien attendre l'AI1 (possiblement en mode basse-consommation et ainsi économiser les piles!). Modifier un frame pendant l'affichage est crade et ne sert à rien (ça veut juste dire que le bas correspond à un frame plus grand que le haut de l'écran, mais ça ne change rien au fait que chaque ligne perd des frames et qu'il y a donc des calculs faits pour rien).


En fait je dois avoir trop de mal à m'exprimer, je n'arrive pas à faire comprendre le "concept". Je ne calcule pas des frames dans l'interrupt je calcule un "environnement" (position camera, joueurs, collisions etc tout ce qui doit se passer le plus rapidement possible pour faire croire a du temps réel en gros (reponse clavier et tout)). Au debut du dessin d'un frame qui lui prend beaucoup de temps et qui par consequent n'est pas dans l'interrupt, je copie les variables globales de l'"environnement" dans des var locale a la fonction de rendu pour bien dessiner le "screenshot" de l'environnement pris a ce moment precis.


Je croyais que le handler de l'AI1 ne pouvait pas etre rappelé si l'interruption occurait pendant la periode d'execution de celle ci donc bon je vois pas comment ca pourrait planter.

Pendant, non, mais juste après (sans que d'autre code puisse s'exécuter), oui.

LionelA :
Qu'est ce que c'est "race condition" ?

C'est un ordre imprévu (car improbable, mais pas impossible) des évènements, qui peut être à l'origine d'un bogue. Ici, Lionel Debroux parle de l'ordre des évènements "l'AI1 complète" et "la prochaine AI1 survient", si l'ordre est mauvais, ça bogue.


Ok je vois mais meme si l'AI1 survient pendant une AI1 ca ne buggera pas ici,


Bah je ne suis pas sur a 100% que le probleme de l'horloge vienne bien de F-Zero, je ne touche pas à l'AI3 et si j'ai bien compris elle a un niveau de priorité supérieur à l'AI1 donc elle s'execute bien à temps.

Si tu ne touches pas au SR (OSSetSR, trap #1 ou move #foo,%sr), oui, elle devrait s'exécuter à temps.

Et lorsque je redirige l'AI4 pour gerer le link je fais ca dedans en gros :

DEFINE_INT_HANDLER (AI4) {
  ExecuteHandler (OldInt4);
  if(OSReadLinkBlock (&recv, 1)) {
    timeout = 0;
    received = 1;
  }
}

OSReadLinkBlock ne devrait pas mettre plus d'une seconde, donc le problème n'est pas là.


Ok donc l'horloge sux car elle sux et ca ne viens pas de moi :)
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°299   Marquer comme non lu.
Pollux Ecrit le: Vendredi 1er juillet 2005 à 12:40 Déconnecté(e)    Voir le profil de Pollux Envoyer un email à Pollux Envoyer un message privé à Pollux  

LionelA :
Qu'est ce que c'est "race condition" ?

C'est parce que ton programme est un jeu de course donc il y a des risques d'épilepsie, c'est très dangereux http://yn1.free.fr/v31/gfx/s3/trioui.gif


Bah sinon je vois pas ce que vous lui reprochez à sa méthode, elle est très bien, c'est même The Right Thing (tm) :) (enfin, sauf le fait de réimplémenter les routines de link)
    
./Post n°300   Marquer comme non lu.
Folco Ecrit le: Vendredi 1er juillet 2005 à 14:00 Déconnecté(e)    Voir le profil de Folco Envoyer un email à Folco Envoyer un message privé à Folco  


#mdr# et #crayon#
<<< Kernel Extremist©®™ >>>
Pas la peine d'aller là plus d'une fois tous les six mois...

"Il faut apprendre pour savoir qu'il faut apprendre pour savoir."
    
./Post n°301   Marquer comme non lu.
LionelA Ecrit le: Vendredi 1er juillet 2005 à 15:27 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


lol

sinon pour la reinventation des routines de link, ben j'ai pas le choix, c'est le seul moyen de faire réagir la calc sur une reception d'un octet et ca permet de pas avoir d'attente dans un LIO_RecvData :)
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°302   Marquer comme non lu.
Kevin Kofler Ecrit le: Vendredi 1er juillet 2005 à 21:36 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  


Mais il faut attendre. Ta routine de link ne marche même pas dans TiEmu parce que tu n'attends pas.
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°303   Marquer comme non lu.
LionelA Ecrit le: Samedi 2 juillet 2005 à 15:10 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


attendre, toujours attendre, mais on ne peut pas se le permettre d'attendre, je prend pas 8 fois la taille nécéssaire en archive pour avoir les tiles accessibles plus rapidement si c'est pour gaspiller du temps à ne rien faire qu'attendre. On se trouve dans un jeu d'action rapide ou le temps réel est très important donc l'attente est kb! :)
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°304   Marquer comme non lu.
Kevin Kofler Ecrit le: Samedi 2 juillet 2005 à 16:29 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  


LionelA :
je prend pas 8 fois la taille nécéssaire en archive pour avoir les tiles accessibles plus rapidement si c'est pour gaspiller du temps à ne rien faire qu'attendre.

Effectivement, donc vire-nous ça aussi... ;)
-Edité le Samedi 2 juillet 2005 à 16:30 par Kevin Kofler-
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!
    
  :: Index » Forum Ti68K » Betas et WIPs » F-Zero (393 réponse(s))
Pages : 16/21     « ... 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20 21 » »|

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