90

Buggée... je pense plutot que c'est pas compatible avec le format dll.. parce que sinon je vois pas d'ou ca vient..

Une routine de sprite 16x16 ne prend que 3Kcycles il me semble...
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

91

Nan 7000 (Vti version JM /2).

Et ce sont les fonctions concus par Neurone tongue qui font merder , pas les tiennes.

92

oué mais elles sont toutes codées en C pour l'instant donc c normal que les taux soit assez faibles roll

je pense que sur des fonctions comme le tracé de cercle il doit pas y avoir une différence enorme nan confus

93

12M/4K = 3k... en theorie ca fait 3000 non? ou alors j'ai pas tout compris...
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

94

Neuroo)> Il faudrai que l'on se voit ce soir... la j'ai pas le tmps je viens juste de me reveillersmile
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

95

j'ai deja commencer a coder en ASM triso

96

Bon j'ai fait un bench sur 2 fonctions:
> XLib
XClrGPlan() => 655 Hz
XGTWSprite("") => 4883 Hz
Gen:
gl_cls() => 687 Hz
gl_put_sprite_16("") => 4703 Hz

Donc Genlib est plus rapide pour la fonction clrscr
Et XLib est plus rapide pour les routines de sprites transparents.

J'ai pas trouvé la routines ou le black est transparent (ou le mode erase...) pour gen..
c'est bencher sur HW2.. et la source est:
void _main(void)
	{
	short	i, j, x, y;
	unsigned long count ;
	void * GPLAN = NULL;	

	unsigned long Gen[100];
	unsigned long X[100];

	DlgMessage ("X vs Gen", "Attention le bench rique de prendre qqs minutes", BT_NONE, BT_NONE);
	XOn();
	GPLAN = XNewGPlan();
	XGPlanc(GPLAN);
	XIniDrawStr(F_4x6,GLOW);
	count = 0;
	XTimer5 = 0;
	for (y=0; y<1000; y++)
          {
           	count++;
	   				XClrGPlan();
          }
	X[0]=19*count/XTimer5;   
	count = 0;
	XTimer5 = 0;
	for (x=-16; x<=256; x++)
	for (y=-16; y<=128+16; y++)
          {
           	count++;
						XGTWSprite(x,y,aze);
	         }
	X[1]=19*count/XTimer5;
	
	do{
	XClrGPlan();
	XPrintf(0,0,"- X XClrGPlan %d",(int)X[0]);
	XPrintf(0,8,"- X XGTWSprite2 %d",(int)X[1]);
	
	XCpyGPlanToLCD();
		XJoyPad();
	} while(!Press.Enter);
	XDestrFont();
	XDestrGPlan(GPLAN);
	XOff();


	//Init GENLIB
	PUSH_DSCREEN(DSCREEN *Scr);		// DScreen + Adress of the DScreen 

	gl_init();
	gl_set_dscreen_function(Scr);
	gl_set_dscreen_int(Scr);
	gl_cls();

// Bench Clear Screen		

// GenLib
  count = 0;
	gl_timer = 0;
	for (y=0;y<1000;y++)
          {
           	count++;
	   				gl_cls();
          }
	Gen[0]=90*count/gl_timer;
// Gen
  count = 0;
	gl_timer = 0;
	for (x=-16; x<=256; x++)
	for (y=-16; y<=128+16; y++)
					{
      			count++;
						gl_put_sprite_16(x,y,1);
					}
	Gen[1]=90*count/gl_timer;

	gl_cls();
	glaux_text(0,0,C_BLACK,T_SMALL,"Gen gl_cls: %ld Spr/s", Gen[0]);
	glaux_text(0,20,C_BLACK,T_SMALL,"Gen gl_put_sprite_16: %ld Spr/s", Gen[1]);
	gl_wait_a_key();

	gl_quit();


}
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

97

XTimer5 a quelle valeur en 1 seconde si on le met à 0 au début ?? il vaut 19 ?
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

98

sa frequence est de 19Hz. sur HW1 & 2.

Aller pour la forme, un petit shot de BrikaX:
BrikaX.gif


Les caractéristiques:
Gères jusqu'à 10 balles à la fois (arbitraire)
Gére les colisions sur plusieurs birques à la fois
Gére plusieurs direction.
Gére les balle de différentes tailles.

Futur:
Mode 2 joueurs et peut être link (c'ad 2 joueur link et 4 joueurs..) si neuroo le faitsmile
des tonnes de levels
Gestion de différents effets...
Que du bonheursmile


Voilà pour ls impatients comme Pim89.
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

99

et ben merde je trouve po grin
*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & sabrina

100

c'est un peu mieux:à)
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

101

ben ça m'as l'air pas mal tout ça smile

par contre y'a une grosse boule de bourrin là eek grin
*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & sabrina

102

justement ca devient carrément chaud avec la grosse boule...
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

103

XLib V2.00

Que voulez vous pour la prochaine version ?
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

104

Plus de fonction en DLL comme XPrintf(), ça ferait tjs économiser de la taille ds le prog, et cette fonction de txt sera presque indispensable ds les prog où on veut écrire en noir tout en utilisant les Gplan (sinon printf() de TIGCC écrit en gris sad). Et surtout l'affichage 'NRMAL' en noir smile

Une routine pour afficher un background/pic sans avoir à passer par des sprites forcement, enfin on peut tjs faire avec des sprites mais bon. smile c t l'idée d' Aghnar je crois.
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

105

Une version enfin plus rapide que GraphX, parceque là...

triso
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

106

grin

oué, aussi, pour XPrintf(), permettre d'afficher tous les caractères en mode NRMAL, car avec la version 1.00 les accents ect ne passaient pas sad
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

107

Juste un bon system de font et une fonction DrawLevl?
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

108

vous voulez pas de routine miroir .. ?
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

109

si, ça serait cool, pour les sprt de nos perso smile
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

110

Bon ca sera une fonction auxiliaire...

Sinon vous en avez mare de tester si XNewGPlan renvoie TRUE , si malloc renvoie TRUE?
Je peux implanter une systeme dans XLib qui lorsqu'il y a une erreur d'allocation à cause d'un manque de ram quitte le programme en appelant la fonction XError qui est personalisable:
AVANT:
XOn()
GPLAN= XNewGPlan();
if (!GPLAN) XOff();
BWPLAN= XNewBWPlan();
if (!BWPlan) { XDestrGPlan(GPLAN); XOff();}
if (!XIniDrawStr(F_4x6,LIFT)) { XDestrGPlan(GPLAN); XDestrBWPlan(BWPlan); XOff(); }
Mes_sprite=malloc(5000);
if (!Mes_sprite) { XDestrGPlan(GPLAN); XDestrBWPlan(BWPlan); XDestrFont(); XOff(); }
...

free(Mes_sprite);
XDestrGPlan(..);
XDestrBWPlan(..);
XDestrFont();

un peu lourd...... non.
Et pourtant il faut faire cela avec toutes les lib graphique digne de ce nom!

Maintenant cela donnerai cela avec la version 2.00:

XOn();
GPLAN=XNewGPlan();
BWPlan= XNewBWPlan();
XIniDrawStr(F_'x6,LIFT);
Mes_sprite=XMaloc(5000);
votre code...
XOff();

dans le header XLib:
void XError()
{ .. votre message d'erreur et tout ce que vous voulez }

voila!
plus simple non..
bien entendu, il y a la fonction XFree qui permet de libéré quand on veux la mem....

ca vous tente ou non?
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

111

humm moué, faut voir.
Mais certain programmeurs préferont garder leur propre détection d'erreur, donc à vérifier. Attends plus d'avis avant de le faire, pour l'instant c'est pas hyper urgent. smile
Pense plutôt au fonction de texte stp (fonctionnement normal gni), j'en ai très besoin gni
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

112

>>XLib V2.00

>>Que voulez vous pour la prochaine version ?
Ne mets pas la version de XLib à 2.0 sauf si on ne peut pas utiliser la DLL de 1.00 avec 2.00.

113

attention J'ai préciser que cette version (1.00) ne devait pas être distribuer pour une version final d'un jeu... (pour des probleme de version...)
Par conséquent, je peux rajouter des fonctions.


Pim89: il y a la fonction XError qui est personnalisable, donc vous pouvez créer votre routine d'erreur et la placer dedans.. ya pas de prob sur ce point...
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

114

Timad Pour la 2.00 > cf mon post "pang2 Demo" y a pas mal de requetes smile

115

J'ai regardé XLib, et c top smile Ceci dit tu déroules tes routines de sprites comme une vieille brute doom (déroulement x2 = gain de 5 cycles/170 soit 3% par rapport à déroulement x1, déroulement x4 = gain de 2.5/170 soit 1.5% par rapport à déroulement x2 pour environ 80 octets par boucle, donc j'imagine 160 ou 240 octets par routine, càd bcp si tu multiplies par le nb de routines) Je pense que le déroulement x2 est largement suffisant...

Sinon une bonne idée pour XLib 2.00 serait de faire un autre fichier .a avec les routines de sprites de xlib.dll, sans fonctions d'initialisations (il suffirait d'accéder à une variable globale XPort, plutôt que d'utiliser XPlanc & co)
Et puis le timer de 19 Hz c pas une bonne idée... Mets-le à 90 Hz comme tout le monde, sinon ça va être horriblement chiant pour la synchro et/ou le bench...


Qq pb de macros :

#define XBWPlanc(plan) { XBWPlanc2(plan); XXBWPlanc(plan); } // hard patch becaus TIGCC sux...
#define XGPlanc(plan) { XGPlanc2(plan); XXGPlanc(plan); }

Utilise plutôt :
#define XGPlanc(plan) (XGPlanc2(plan), XXGPlanc(plan))

et puis :

#define XDrawLGlowStr_cntr(y,texte,espace) XDrawLGlowStr( (240-strlen(texte)*espace)>>1,y,texte,espace);
#define XDrawDGlowStr_cntr(y,texte,espace) XDrawDGlowStr( (240-strlen(texte)*espace)>>1,y,texte,espace);

où il vaudrait mieux rajouter des parenthèses autour du 1er 'espace'


Et puis sinon je trouve aussi la terminologie de XLib un peu difficile... Déjà si tu pouvais mettre tes noms de fonctions en anglais et pas en franglais (XCercle, XLine_GAUCHE...) ça aiderait un peu wink Et puis l'usage des majuscules est un peu bizarre (XGPlanc, pkoi c pas XGPlanC ?), de même que faut vraiment regarder la doc pour retrouver NRMAL wink à la limite NORMAL ou NRML... Et y en a encore d'autres : XIniDrawStr -> XInitDrawStr (d'ailleurs la fonction d'initialisation est InitDrawStr alors que celle de fermeture est DestrFont, c pas terrible - pkoi pas InitFont?), XEfface -> XErase -> XEraseRectangle, XGPxlLPut -> XGPxlPutL, XDrawLGlowStr -> XDrawStrGlowL, XHCLine -> XCHLine, XClrLPlan -> XClrGPlanL, XJoyPad -> XReadJoyPad/XUpdJoyPad, Press -> Pressed/JoyPad/XJoyPad, sans compter les innombrables macros qui utilisent une terminologie différente des fonctions correspondantes (XGPxl_G vs XGPxlPutGauche, XWuLn vs XWuLine, XWuLnG vs XWuLineGauche - d'ailleurs il y avait un underscore avant le G pour XGPxl_G mais pas pour XWuLnG triso)
Sinon Rectangle -> Rect serait pas mal, Gauche -> Left, Droite -> Right...

Sinon dans la doc t'expliques pas ce que c que le GLOW et le LIFT, c un peu embêtant grin (pareil pour les WuLine)


Bon sinon c du bon boulot, j'espère que je t'ai pas trop fait chier avec toutes mes remarques wink (en tout cas je me suis fait chier à les taper, j'espère que ce sera pas pour rien embarrassed)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

116

Bon.. qqs explicationssmile

Au niveaux des routines, elles gèrent 15 cas sur l'écran pour un cliping correct.
Lors du clipping horizontal, elle gère 3 cas qui corresponde à x%16= 0 etc...
Donc niveau memoire, elle sont assez lourde (d'où la dll).
Apres, niveau boucle, les boucles sont dévellopées de la manière suivante:
4 ligne pour l'interieur de l'ecran.
1 ligne pour le clip horiz
4 pour le cliping vertical
1 pour le clip vert & horiz.

Bon c'est peut être beaucoup 4, mais tout est relatif... mais la principale raison, c'etait que je voulais quand même rester au dessus de gen smile
Genlib devellope entierement ses routines de transparence .. ce qui est énorme (4 fois plus grosse).
Si l'on compare les routines, je pense que c'est un compromis assez raisonnable...
Il faut savoir que dans la Dll, il n'y a que 4 routines (qui sont repris pour les pic etc..), et que le cas de figure que tu a pris s'avère beaucoup moins efficace (je pense.. j'ai pas vérifier) pour les fonctions BW et LG DG... ainsi que pour la fonction N.


Les problemes sur les macros sont assez embettantsmile
il y a en effet une erreur de priorité...
ils posent aussi des problemes si on met un espace du genre i++
ou de meme pour le texte si l'on met: text++...

ceux-ci ont été fait tres rapidementsmile mais je corrigerai l'erreur, mercismile
Pour le XGPlanc(plan) ... je ne savais pas que l'on pouvais faire cela... fou

Pour la terminologie, elle n'est pas difficile pour les fonctions graphique autre que 2d...
Il y a une cohérence.. excepté pour les fonctions de textes qui on été rajoutées de manière un peu trop rapide (tout le system de fonte va être refait), ce qui les rend tres peu flexibles (XPrintf ...)

Sinon, il se pourait en effet que XGPlanc devienne XCGPlan... (plus cohérent)

Pour les fonctions 2d, on tiendra compte de tes remarques, puisque l'on est en train de les passer en ASM.

Pour la version 2.00... j'aimerai la garder sous forme de dll, pour la simple raison que les fonctions sont assez grosses sad de plus je vais rajouter les fonctions XDrawLevel.. qui seront dans la dll (pour des soucis d'optimisation) permettant d'éviter de recalculer à chaque fois les coordonnées et de sauter les testes de clipping ... ce qui va la rapprocher des 10 Ko (mais pas plus...).
De plus il se pourait que je rajoute une fonction 8x8 pour les fontes, car cela prend tout de meme 2 fois plus de ram de les passer en 16x8 (dans la version 1.00, elles sont en 16x16 triso)

Bon voilà, merci de vos remarques...
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

117

> Bon c'est peut être beaucoup 4, mais tout est relatif... mais la principale raison, c'etait que je voulais quand même rester au dessus de gen
rotfl c ridicule votre petite guerre smile d'après ce que tu m'as dit, on peut économiser 1 ko (80*3*4) avec un déroulement x2, ce qui est qd même assez sympa pour un gain de 1.5% seulement en gray masqué et de moins de 3% en gray OR ou en BW masqué. Enfin tu fais ce que tu veux smile

> Genlib devellope entierement ses routines de transparence .. ce qui est énorme (4 fois plus grosse).
J'avais vu une vieille version sans déroulement. Peut-être qu'il les a développé pour la version 'grosse' de genlib, donc bon smile

> Les problemes sur les macros sont assez embettant
> il y a en effet une erreur de priorité...
> ils posent aussi des problemes si on met un espace du genre i++
> ou de meme pour le texte si l'on met: text++...
Bien sûr, mais je me suis dit que vu l'utilisation de la macro (a priori personne ne va mettre une fonction avec des side effects dans 'espace' roll), ct pas trop la peine... D'ailleurs même dans la TIGCCLib y a des trucs pas propres comme ça (freopen...)

> Pour la terminologie, elle n'est pas difficile pour les fonctions graphique autre que 2d...
> Il y a une cohérence.. excepté pour les fonctions de textes qui on été rajoutées de manière un peu trop rapide (tout le system de fonte va être refait), ce qui les rend tres peu flexibles (XPrintf ...)
"autres que 2d"??? y a des fonctions 3d? tongue

> Sinon, il se pourait en effet que XGPlanc devienne XCGPlan... (plus cohérent)
Je dirais plutôt XSetGPlan ou XSetCurGPlan. En principe, si une fonction a un nom qui pourrait aussi bien être celui d'une variable, on rajoute un verbe (pareil pour XJoyPad qui pourrait être une variable)

> Pour la version 2.00... j'aimerai la garder sous forme de dll, pour la simple raison que les fonctions sont assez grosses de plus je vais rajouter les fonctions XDrawLevel.. qui seront dans la dll (pour des soucis d'optimisation) permettant d'éviter de recalculer à chaque fois les coordonnées et de sauter les testes de clipping ... ce qui va la rapprocher des 10 Ko (mais pas plus...).
De plus il se pourait que je rajoute une fonction 8x8 pour les fontes, car cela prend tout de meme 2 fois plus de ram de les passer en 16x8 (dans la version 1.00, elles sont en 16x16 )
Yup, mais dans un programme Gen ça peut qd même être sympa de profiter de la compatibilité du format DScreen/GPlan pour avoir des fonctions de bigsprites sans halo et des fonctions de sprites masqués sans avoir à faire des trucs barbares du style XOn(); gl_init(); ... gl_quit(); XOff();
Je parlais juste d'un fichier .a additionnel avec juste les fonctions de sprites pour ceux qui ne veulent pas faire un programme X...


Sinon oublie pas le timer de 90 Hz, c important smile

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

118

aRf, elles sont super cohérantes les terminaison 2D wink

Pollux, pour epxliquer le WuLine .. ben c un Wu-Line ... que dire de plus, ce que ca fait ? trace 3 lignes avec et tu auras vite compris wink
(sinon, c vrai que le francais c pas top tout le tps pour les fonctions mais les majuscules c bien... smile )

119

oui les majuscules ça va sauf pour le c de XGPlanc et à la limite le P de JoyPad...

> aRf, elles sont super cohérantes les terminaison 2D
Oué, le mieux c peut-être XHCline() picol

Sinon pour le Wu tu vas pas obliger chaque utilisateur à faire un prog de test parce que t'as la flemme de dire ce que c'est smile
D'après ce que g vu sur Google, c une ligne antialiasée non?

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

120

Pour genlib, la version que j'ai bencher a sa boucle entierement déroulé ... ( comment fait elle pour être si lente smile ).
Pour les routines, je vais essayer de diviser par 2 les boucles.. enfin on verasmile mais faut savoir que le programme en général tournera 3% moins vite...
Et deja qu'en 3D iso, XLib a du mal.. alors si elle est 3% plus lente roll.

Pour la compatibilité X / Gen.. je ne vois pas l'interet... au pire j'ajoute une fonction d'hallo (facile a faire) et ops.. ya tout ce qu'on veux dedant...
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!