270

De toute façon, il ne sert à rien de passer au-delà de 15 à 20 FPS, car l'écran bave. 12 à 15 FPS suffisent: voir Duke68k, Ice Hockey 68k, FAT-Engine, etc.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

271

Je distriburais cette version non achevée comme ça vous me direz quel FPS vous avez.
Parcontre j'attendrais la fin des vacances car là j'ai pris du retard dans le boulot...
Faut que je bosse!! : (
projet en cours XiaoXiaoShow

272

Mon hebergereur est en maintenance... mur
projet en cours XiaoXiaoShow

273

dtc comme qu'on dit :/
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

274

Vu que lycos en chie je me suis fait une page perso sur Voila:

pour ceux qui veulent tester:
http://site.voila.fr/toto89t/dev/xiaoxiaoshow/DISTRIv0.58.zip
projet en cours XiaoXiaoShow

275

J'ai une question pour ceux qui s'y connaissent en ASSEMBLEUR:
L'un des principes de base de mon jeu est que j'affiche tout en vectoriel:
Cela me permet de faire facilement des rotations, des zooms et pleins d'autres effets interessants.
Mais pour cela, pour chaque point que j'utilise je dois faire des calculs (minimes) de changement de base et je me demendais si je gagnerais en vitesse si ces petits calculs qui se font tout le temps etaient programmés en assembleur.

D'ou ma questionsorryur quel type/genre de calcul ou d'operation l'assembleur est plus rapide que le C ??
projet en cours XiaoXiaoShow

276

277

comme par exemple les operations qui se font à chaque affichage d'ecran...
mais ce ne sont que des operations de base qui se font pleins de fois:
des multiplications, des additions, des puissances...
projet en cours XiaoXiaoShow

278

oula oula du calme,

L'assembleur n'est pas "plus rapide" que le C vu que le C ne fait que generer une suite d'instruction assembleur, ce qui, par contre peu accelerer un programme, c'est la façon dont est faite le programme assembleur au final.
Donc l'asm n'est pas plus rapide sur certain calculs que le C, il est juste plus optimisé
(si on est bon en asm, sinon mieux vaus s'abstenir, un bon programmeur C optimisera mieux qu'un mauvais programmeur asm)



edit: correction de frappe de faute
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

279

alors je ne songerais à l'assembleur que quand j'aurais optimisé au maximum en C.
Merci pour les infos!
projet en cours XiaoXiaoShow

280

sa n'empeche que tu peut te mettre a l'asm hein smile (ça fait tjrs du bien de comprendre comment fonctionne la machine smile)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

281

282

Exemple de ralentissement: R_LIGHTGRAY,RECT_FILLED,LightP,DarkP); }L'affichage des barres de vie et d'energie:void aff_infobar2B (short live1d,short live1l,short live2d,short live2l,short mana1d,short mana1l,short mana2d,short mana2l,void*LightP,void*DarkP) {//live1d=niveau de remplissage dark pour la barre de vie à gauche ; mana2l=niveau de remplissage light pour la barre de mana à droite const short lrectwidth=(100-clock_percetage_of_screen)*LCDx/(2*100); const short rectheight=clock_percetage_of_screen*LCDy/(2*100); char temp[JoueurCharMax+1]="";strncat(temp,player[0].name,JoueurCharMax); const unsigned long textlen=JoueurCharMax; //=max(strlen(player[0].name),strlen(player[1].name)); //textlen=min(textlen,(unsigned long)JoueurCharMax); const short xxa=LCDx-textlen*(is89?4:6)-2; const short yya=rectheight+2; GrayDrawStrExt2B(0,yya,temp,A_REPLACE | A_SHADOWED ,is89?F_4x6:F_6x8,LightP,DarkP); temp[0]=0; strncat(temp,player[1].name,JoueurCharMax); GrayDrawStrExt2B(xxa,yya,temp,A_REPLACE | A_SHADOWED ,is89?F_4x6:F_6x8,LightP,DarkP); GrayDrawRect2B(0,0,lrectwidth,rectheight,COLOR_WHITE,RECT_FILLED,LightP,DarkP); GrayDrawRect2B(0,0,lrectwidth,rectheight,COLOR_BLACK,RECT_EMPTY,LightP,DarkP); short rect1lstart=(lrectwidth-2)*live1d/100+1; GrayDrawRect2B(1,1,rect1lstart,rectheight-1,COLOR_DARKGRAY,RECT_FILLED,LightP,DarkP); short xxb=rect1lstart+(lrectwidth-2)*(live1l-live1d)/100; if(live1l>live1d)GrayDrawRect2B(rect1lstart,1,xxb,rectheight-1,COLOR_LIGHTGRAY,RECT_FILLED,LightP,DarkP); const short xxc=LCDx-lrectwidth; GrayDrawRect2B(xxc,0,LCDx-1,rectheight,COLOR_WHITE,RECT_FILLED,LightP,DarkP); GrayDrawRect2B(xxc,0,LCDx-1,rectheight,COLOR_BLACK,RECT_EMPTY,LightP,DarkP); short xxd=LCDx-(lrectwidth-2)*live2d/100; GrayDrawRect2B(xxd,1,LCDx-2,rectheight-1,COLOR_DARKGRAY,RECT_FILLED,LightP,DarkP); short rect2dstart=xxd+1; short xxe=rect2dstart-(lrectwidth-2)*(live2l-live2d)/100; if(live2l>live2d)GrayDrawRect2B(xxe,1,rect2dstart,rectheight-1,COLOR_LIGHTGRAY,RECT_FILLED,LightP,DarkP); const short xxf=textlen*(is89?4:6)+2; const short mrectwidth=lrectwidth-xxf-1; const short xxg=xxf-2+mrectwidth-1; const short yyg=yya+rectheight; GrayDrawRect2B(xxf,yya,xxg,yyg,COLOR_WHITE,RECT_FILLED,LightP,DarkP); GrayDrawRect2B(xxf,yya,xxg,yyg,COLOR_BLACK,RECT_EMPTY,LightP,DarkP); short mrect1lstart=(mrectwidth-2)*mana1d/100+xxf+2; GrayDrawRect2B(xxf+1,rectheight+3,mrect1lstart-1,yyg-1,COLOR_DARKGRAY,RECT_FILLED,LightP,DarkP); short xxh=mrect1lstart+(mrectwidth-2)*(mana1l-mana1d)/100; if(mana1l>mana1d)GrayDrawRect2B(mrect1lstart,rectheight+3,xxh,yyg-1,COLOR_LIGHTGRAY,RECT_FILLED,LightP,DarkP); const short xxi=LCDx-1-xxf; GrayDrawRect2B(xxc,yya,xxi,yyg,COLOR_WHITE,RECT_FILLED,LightP,DarkP); GrayDrawRect2B(xxc,yya,xxi,yyg,COLOR_BLACK,RECT_EMPTY,LightP,DarkP); short xxj=xxc+1+mrectwidth*(100-mana2d)/100-3; GrayDrawRect2B(xxj,yya+1,xxi-1,yyg-1,COLOR_DARKGRAY,RECT_FILLED,LightP,DarkP); short mrect2dstart=xxc+1+(100-mana2l)*mrectwidth/100; if(mana2l>mana2d)GrayDrawRect2B(mrect2dstart-3,yya+1,xxj-1,yyg-1,COLO
J'ai l'impression d'etre maladroit dans ces calculs.
Si jai bien compris les const short ne sont calculés qu'une seule fois?
(et donc je ne perd pas du temps a re-calculer a chaque fois)

Si au premier regard vous voyez un manque de methode, dites le moi!
remarque: si je desactive ces barres de vie et d'energie je gagne +2FPS

LCDx=240 ou 160 suivant la TI
clock_percetage_of_screen=taille de l'espace vide entre les barres pour afficher le TIME LEFT
projet en cours XiaoXiaoShow

283

Comment tu calcule tes FPS ?
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

284

bin à chaque frame que j'ai fini d'afficher j'incremente un compteur de 1 et chaque seconde j'affiche le compteur avant de le remettre à zero.

projet en cours XiaoXiaoShow

285

Ca au moins, c'est simple happy
avatar
Attention, nouvelle signature #eeek#
https://mastodon.ti-fr.com/@redangel

286

J'ai voulue me faire une librairie qui contient pleins de fonctions utiles que j'utilise de temps en temps:
J'ai donc créé alib.h j'y ai mis toutes mes fonctions et je l'ai inclus à un de mes programmes (include "alib.h")

Normalement le compilateur prend les fonctions que j'utilise dans ma source, or si ma source est vide:

void main(void) { }

le programme compilé prend quand meme beaucoup de place au final:
j'ai l'impression que tout est chargé meme si je n'utilise rien!!

comment je pourrais faire pour resoudre ce probleme??
projet en cours XiaoXiaoShow

287

heu...
tu met les fonctions dans le alib.h ?
mettre du code dans un .h, c'est HORRIBLE !

et si tu inclus ton .h, bah c'est comme si tu mettais les fonctions dans le .c qui inclut le .h ; elles seront donc dans ton exécutable, qu'elles soient utilisées ou non.

si tu veux faire une _vraie_ librairie (bibliothèque, on dit, normalement... mais bon, la mauvaise traduction prend souvent le dessus), il faut :
- que tu fasse un fichier .c par fonction
- que tu compile le tout en un .a (genre option -ar de tigcc me semble)
- que tu fasses un .h dans lequel tu met les prototypes des fonctions
- que tu inclue (#include) le .h qui contient le sprototypes
- que tu ajoute au projet TIGCC ton .a (y'a un icone pour ça me semble)

et là, tu vas pouvoir utliser tes fonctions, et seules celles que tu utilise seront dans ton exécutable
(enfin, quand tu utilisera une fonction venant d'un fichier .c de départ, ça ajoutera à ton exécutable tout ce qu'il y avait dans ce .c ; d'où l'intéret de mettre une fonction par .c, sauf dans le cas où deux focntions sont intimement liées à la limite)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

288

AHhh...ouais,d'accord!
Eh bin je crois que grace a toi mon petit jeu va diminuer en taille!
Merci beaucoup!

Au fait, en ce moment j'essaye de trouver du temps pour programmer:
je devrais pas tarder à sortir une beta jouable.En suite je mettrais en pause jusqu'à ce que les concours soit passés...
projet en cours XiaoXiaoShow

289

de rien smile
bon courage !
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

290

² courage
avatar
Attention, nouvelle signature #eeek#
https://mastodon.ti-fr.com/@redangel

291

Merci : ), du courage je sens que je vais en avoir besoin (car il en reste encore beaucoup du temps avant la fin de l'année... #triste#)

Dans une bibliothèque je peux mettre n'importe quel type de fonction?
exple: une static inline...
projet en cours XiaoXiaoShow

292

Je crois que tu ne peux pas static inliner une fonction qui n'est pas dans le même fichier .c

293

Une fonction declaree en "static inline", c'est comme une macro : ca va dans le fichier header.

294

okay.merci.
projet en cours XiaoXiaoShow

295

projet en cours XiaoXiaoShow

296

Mon avis: tu devrais faire les screenshots en .gif.... grin

Sinon j'ai pas de caltos; le screen a l'air de traduire ton moteur, qui a l'air intéressant. En revanche il est vrai qu'un peu de sprites tout plein mignon ça rendrait 10000 fois mieux...

Courage!
avatar
Attention, nouvelle signature #eeek#
https://mastodon.ti-fr.com/@redangel

297

"En revanche il est vrai qu'un peu de sprites tout plein mignon ça rendrait 10000 fois mieux..."
Non, l'écran baverais et tout et tout, on ne verrais rien. A mon avis il a fait un excellent choix de se passer de sprites smile

C'est quand même bcp trop lent (4fps sur VTI). A mon avis faudrait au moins doubler ce nombre.

298

Si tu le dis. smile
avatar
Attention, nouvelle signature #eeek#
https://mastodon.ti-fr.com/@redangel

299

sur une vraie V200 c'est plus rapide: 7-8 FPS
projet en cours XiaoXiaoShow

300

Alors j'ai rien dit smile