PDA

Voir la version complète : µLibrary


Brunni
20/03/2007, 00h47
µLibrary
Librairie pour la DS
BETA
http://brunni.palib.info/new/page/img/nds/ulibrary.png
Version 1.11 (http://brunni.palib.info/new/dl/nds/ulibrary.rar)


Présentation :

Hello :)
Après un long temps d'inactivité, me revoici avec... une librairie pour la DS cette fois! :ph34r:
Alors autant prévenir tout de suite, cette librairie utilise le GPU 3D de la DS, donc l'avantage c'est que vous pouvez faire de jolis pitits n'effets dans tous les sens, mais l'inconvénient c'est que vous n'avez qu'un seul écran à la fois (ou deux, mais à 30 fps).
Si on fait abstraction de ça, mettons que vous n'aviez de toute façon pas une grande envie d'exploiter le second écran ou qu'afficher un BG avec 3 sprites suffirait, avec une lecture du stylet. µLibrary vous permettra de faire un jeu en 2D sans vous prendre la tête, et même de mixer éventuellement avec de la 3D.
De plus, la librairie peut s'intégrer avec PALib, donc vous pouvez toujours utiliser celle-ci pour votre deuxième écran et vous concentrer sur le premier avec µLibrary ;)

Alors passons un peu en revue les fonctionnalités de cette librairie:

Basée sur le même modèle qu'OSLib: dessin ordonné d'objets sur l'écran comme sur une feuille de papier. Habituel pour ceux qui ont déjà codé sur une console 3D ou à rendu software.
Format d'images supportés: PNG, GIF, JPG.
Effets: étirement, teinte (4 coins), mirroring, rotation (avec définition du centre), sélection d'une partie d'image à afficher (spritesheet)
Qualité 18 bits au lieu de 15 bits avec le GPU 2D.
Système de fichiers virtuels, il est possible de charger des fichiers indépendemment du support (RAM, libFat, GBFS supportés par défaut). Permet de réaliser plus facilement des softs compatibles avec tous les linkers.
Géométrie non texturée (rectangles, dégradés, lignes, etc.)
Système de message boxes basique
Wrapper VideoGL pour le chargement de textures / palettes en VRAM: il est possible d'en charger et décharger dynamiquement. De plus, il est plus flexible (vous pouvez choisir quelles banques utiliser pour quoi, etc.)
Gestion des touches et du touchscreen (incluant le double clic et la vitesse du stylet)
Intègre 2 splash screens
Système de maps avec tiles de taille variable et support des bits GBA (palette, miroir)
Wrapper bas niveau pour dessiner des primitives
Système de texte utilisant le même format de polices que OSLib

Des exemples sont également fournis, une documentation Doxygen et une petite documentation en .chm. Il y a aussi deux templates, un avec PALib et un sans PALib.
La doc doxygen est dispo ici: http://brunni.palib.info/new/ulib/doc/doxygen/index.html (il faut aller sur l'onglet Modules)

Les performances sont très bonnes: un des exemples montre qu'en n'optimisant pas du tout (en plus c'est du C++), avec 400 balles qui rebondissent sur l'écran, on est à moins de 15% de CPU... ^^

Galerie d'image :

http://brunni.palib.info/new/ulib/tmp/img6.png http://brunni.palib.info/new/ulib/tmp/img7.png http://brunni.palib.info/new/ulib/tmp/img8.png http://brunni.palib.info/new/ulib/tmp/img9.png

Historique :
- 19.03.2007: Version 0.00, première version pré-alpha, utilisable et quasiment complète. Tout n'est pas encore garanti de fonctionner correctement cependant.

Comment jouer :

Autres informations :
N'hésitez pas à me faire part de vos commentaires et des questions ou difficultés que vous pourriez avoir ;)

Edit: Pour ceux qui ne peuvent ou ne veulent pas tester la lib, j'ai deux petits samples qui montrent l'utilisation de la lib:
http://brunni.palib.info/new/ulib/tmp/Example01b.rar
http://brunni.palib.info/new/ulib/tmp/Example09.rar
A tester avec no$gba ou sur vraie DS ;)

La source viendra tout bientôt, dès que l'étape 'alpha test' sera terminée :)

Attention : une erreur, qui va être rapidement corrigée, s'est glissée dans la licence et pourrait faire croire qu'il s'agit d'une Licence Publique Générale GNU (GNU GPL). Or, il ne s'agit pas d'une GNU GPL, mais d'une version modifiée et simplifiée de cette licence. Il ne faut donc pas tenir compte de cette erreur dans l'interprétation de la licence accompagnant µLibrary.

jujurackham
20/03/2007, 00h48
Bon alors premières impréssions : ben ça m'a l'air ni plus ni moins qu'une très bonne lib, chapeau !

En espérant pour toi qu'elle deviendra une référence au même titre que PAlib ! :ange:

DJP
20/03/2007, 00h49
Premzzzz
Il y a des bans qui se perdent.... ou pas...

En tout cas, Brunni :wub:

Lazarus
20/03/2007, 00h52
Super post juju...

Plus sérieusement, bonne petit lib en perspective :) Bravo !

jujurackham
20/03/2007, 00h53
Mais heu, c'était juste le temps de pouvoir lire. J'ai édité, et j'ai commenté ^^

Arcadia
20/03/2007, 00h57
Mais heu, c'était juste le temps de pouvoir lire. J'ai édité, et j'ai commenté ^^
Je procède ainsi parfois :ange: ...

Bon aller, une dernière news pour la route ^^

jujurackham
20/03/2007, 00h59
@Arcadia : tu n'arrêtes donc jamais de newser ? :o

Brunni
20/03/2007, 01h07
Merci des encouragements :w00t:
J'ai rarement eu l'occasion de voir autant de monde sur un topic à cette heure-ci, je ne m'y attendais vraiment pas :p
J'ai ajouté deux samples à la fin du post pour que vous puissiez quand même avoir un aperçu de la lib avant :) Je sais mes exemples sont pas terribles mais bon c'était surtout pour apprendre à utiliser la lib à la base :)
Voici un exemple de code qui affiche une image provenant de FAT et lui fait suivre le stylet:
#include <ulib/ulib.h>

int main()
{
UL_IMAGE *imgTails;

//Initialise µLibrary
ulInit(UL_INIT_ALL);
//On initialise la partie graphique
ulInitGfx();
//Init de la FAT - ne pas le faire systématiquement, ça risque de planter sur certains linkers
ulInitLibFat();

//Affiche quelques splashs ^^
ulShowSplashScreen(1);
ulShowSplashScreen(2);

//On va utiliser le touchscreen
ulSetMainLcd(0);

//Le rose pétant est la couleur transparente (masque des sprites)
ulSetTransparentColor(RGB15(31, 0, 31));

//On charge notre image de Tails depuis la source active (FAT en l'occurence).
imgTails = ulLoadImageFilePNG("/tails.png", 0, UL_IN_VRAM, UL_PF_PAL4);

//Les coordonnées définiront le centre de l'image (pratique pour la placer directement au stylet)
ulImageSetRotCenter(imgTails);

while(1)
{
//Lecture des touches
ulReadKeys(0);

//On place notre personnage à la même position que le stylet, comme ça il le suivra
imgTails->x = ul_keys.touch.x;
imgTails->y = ul_keys.touch.y;

//On commence le dessin
ulStartDrawing2D();

//On dessine un fond en dégradé
ulDrawGradientRect(0, 0, 256, 192, RGB15(0, 0, 24), RGB15(0, 0, 0), RGB15(0, 0, 0), RGB15(0, 0, 24));

//On dessine notre mignon petit perso sur l'écran
ulDrawImage(imgTails);

//Fin du dessin
ulEndDrawing();

//Attente de la VBlank (synchro à 60 fps)
ulSyncFrame();
}

return 0;
}

Bobby Sixkilla
20/03/2007, 01h08
T'assures Brunni. B)

Arcadia
20/03/2007, 01h11
@Arcadia : tu n'arrêtes donc jamais de newser ? :o

Tant qu'il y a des nouveaux trucs sur le forum, moi ou Bobby on veille à en faire la promo à notre niveau, et le dodo passe après ^^

Bravo Brunni, t'assures comme le dit si bien le su nommé Bobby :) !

Yodajr
20/03/2007, 01h16
Enfin tu le crée ce foutu topic ^^
Au vu du code, c'est très similaire à OSlib et c'est que du bon :wub:

Doud_
20/03/2007, 02h08
Félicitation Brunni!

Je viens de jetter un oeil sur les 2 exemples (sur ému malheureusement, j'ai oublié ma DS >_< ) et ça a l'air très sympa!

En plus le petit bout de code posté donne vraiment envie de tester!

R.E.S.P.E.C.T :notworthy

Foxy
20/03/2007, 03h11
:dblthumb:
Genial !!!

mastertop101
20/03/2007, 03h34
Cool..! Une autre lib et ayant, il me semble, une autre approche que les 2 autres (ce qui est bien)
Faudra penser à changer le logo palib dans les exemples par contre ;P
PAr contre, on peut s'attendre à quoi ? un réel concurrent ou un complément ayant des utilités spécifiques?

Brunni
20/03/2007, 08h12
Merci encore :)

Alors non ce n'est pas un concurrent, mais plutôt un complément si j'ose dire (d'où le fait qu'elle est compatible avec PALib ;)). En fait l'avantage est que là on tire parti des capacités supplémentaires du GPU 3D, comme par exemple une transparence plus poussée (support du canal alpha, et les objets peuvent blender entre eux), un plus grand nombre de sprites (1536 quads, càd jusqu'à 1536 sprites, ou alors on mixe avec des maps, du texte et autres ^^), pas de limite quant au zoom (2x normalement), ni avec la taille des sprites (enfin si, mais c'est 2048 en largeur et hauteur donc bon). Enfin il est possible de dessiner des formes telles que des lignes, et de déformer librement les images. On pourrait imaginer des trucs sympa à la Yoshi's island par exemple (les effets spéciaux comme la planche qui tombe, les gros monstres, etc.) :)

Finalement, l'approche de µLibrary est aussi différente, j'ai essayé d'inclure en plus des fonctions bas niveau qui soient très proches du hardware. Par exemple on peut carrément faire des trucs du style pour ceux qui connaissent:
ulDisableTexture();
ulVertexBegin(GL_TRIANGLES);
ulVertexSetColor(RGB15(31, 0, 0));
ulVertexXY(x0, y0);
ulVertexXY(x1, y1);
ulVertexXY(x2, y2);
ulVertexEnd();
Avec ça on dessine directement avec le GPU (pour info ça donne un triangle rouge non texturé entre les points (x0,y0), (x1,y1) et (x2,y2)).

J'ai mis en ligne la documentation doxygen si vous voulez un aperçu des fonctions, il faut aller sous l'onglet Modules:
http://brunni.palib.info/new/ulib/doc/doxygen/index.html

[Edit] Excellent ta news Arcadia :lol: merci ;)

foosh
20/03/2007, 11h50
ils t'ont pas encore embauché chez nintendo (ou ailleurs)? parce que ca m'a l'air d'etre au top encore...

jujurackham
20/03/2007, 15h24
Brunni, je crois que si tu étais une fille je serais tombé amoureux de toi :wub:

Plus sérieusement, je trouve ça génial !v_v

Arcadia
20/03/2007, 15h55
[Edit] Excellent ta news Arcadia :lol: merci ;)
Y'a pas de quoi ^^

Brunni
20/03/2007, 15h55
Merci de vos avis ^^
Par contre est-ce que quelqu'un a essayé de coder avec? :)
Faites-moi part de vos difficultés, questions ou points que vous pensez qu'il y ait à améliorer ;)

Noda
20/03/2007, 16h09
Miam, ca me donnerais presque envie de recoder mon homebrew avec tellement ca a l'air prometteur au niveau des effets :p je pense que pour mon prochain projet, je vais tater un peu de ta ulib ^^

Tembargo
20/03/2007, 16h11
Clap Clap :D

Beda
20/03/2007, 16h29
J'y ai vite fait touché en la combinant avec la Palib, ça marche niquel.
Mais j'aimerais savoir comment profiter des 1536sprites .

Brunni
20/03/2007, 19h20
C'est normal, PALib reste PALib, c'est pas pour autant que ça va faire sauter la limite des 128 sprites. C'est lorsque tu fais le rendu avec µLib (ulDrawImage, etc.) que tu peux avoir jusqu'à 1500 sprites.
En fait, l'utilité de PALib est de faire des choses qui ne sont pas (encore) implémentées dans ma lib, c'est tout. Pour le reste, il vaut bien sûr mieux utiliser mes routines, sinon µLib perd son intérêt ^^

birslip
20/03/2007, 19h35
Vous êtes fous les gens, encore une lib :p . J'essaye ça, faute d'avoir une psp je n'ai pas pu essayer oslib, je vais donc essayer de me rattraper sur celle ci. Sinon l'idée des multiples formats de fichiers est pas mal, mais j'imagine que ça se ressent au chargement?
Pour la transparence, c'est tout ce dont j'ai toujours rêvé! Merci :)

Noda
20/03/2007, 20h02
franchement, j'ai maté un peu vite fait, et j'adhère à 100% au concept :)

La PALib s'adresse principalement à un public débutant ou voulant se simplifier la vie au max mais du coup limite pas mal les possibilité et est quand meme pas mal surchargée de fonctions "inutiles" pour des codeurs un peu plus avancés.

du coup pour moi ta lib se positionne au bon niveau:
- la libnds c'est sympa, mais c'est vraiment pour la branlette mentale si vous me permettez l'expression, car la plupart du temps on va se coder soi meme une petite lib par dessus pour faire les opérations les plus courantes plus facilement sans avoir 100 lignes juste pour afficher un sprite :p
- la PALib c'est bien mais trop rigide et trop plein de superflu pour ceux qui veulent optmiser un peu
- la solution intermédiaire me semble bien être l'esprit de la lib: un peu comme sa lib perso qui vient se simplifier les fonctions de la libnds, sans pour autant enlever de possibilité au codeur :)

du coup j'espère que tu va rajouter quelques trucs, genre pour la gestion du son et des sprites/bg 2D, et ce serait vraiment la lib parfaite (a mon sens ^^)

j'espère par contre que les sources seront dispo plus tard, c'est toujours utile ;)

Lazarus
20/03/2007, 20h32
est quand meme pas mal surchargée de fonctions "inutiles" pour des codeurs un peu plus avancés.
D'un point de vue pratique les fonctions non utilisées ne sont pas inclues à la compilation en meme temps ^^

destroyer
20/03/2007, 21h23
Desoler de paraitre un peu idiot mais je n'arrive pas le lancer?

Enfin avec quois :whst:

Noda
20/03/2007, 22h00
c'est pas un jeu, mais alors lol :lol:

DJP
20/03/2007, 22h09
Tiens, tu peux jouer :p

morukutsu
20/03/2007, 22h26
Je suis en train de tester ton µLibrary et ça s'annonce très bien.

Par contre je me demande, comptes-tu intégrer un système de Sprites ?

Je vais commencer à en coder un donc je voulais savoir si je devais attendre le tien ou si je dois en commencer un .

PS : Vous pouvez donner les sources de vos petits joujous ? Malgré tout, ça aide bien pour commencer avec une nouvelle lib.

Brunni
20/03/2007, 22h35
franchement, j'ai maté un peu vite fait, et j'adhère à 100% au concept :)
[...]
- la solution intermédiaire me semble bien être l'esprit de la lib: un peu comme sa lib perso qui vient se simplifier les fonctions de la libnds, sans pour autant enlever de possibilité au codeur :)
Merci ^^
Alors c'est effectivement le but, et c'est pour ça que j'ai finalement repris le concept d'OSLib. Sur PSP à l'époque je m'étais bien rendu compte que le codage n'était pas super dur en soi, mais qu'il y avait plein de trucs super chiants avant de pouvoir se mettre sur un projet, notamment recompiler la libPng pour pouvoir bêtement charger une image, écrire un driver audio pour jouer du son, qui soit optimisé, qui ne "crachotte" pas, qui supporte le streaming sur MS, plusieurs canaux, un format compact mais pas trop lourd à décoder, etc. créer un système de texte / console, ... bref tout plein de trucs qu'on peut clairement faire soi même, mais que dans tous les cas on ne fera pas à chaque projet, on aura sa propre petite lib comme tu dis :) Alors du coup autant en faire une qui fonctionne bien et qui soit déjà optimisée :)

Là c'est pareil, avec la libnds tu n'as que le PCX et franchement on ne peut pas dire que ce soit le meilleur format qui existe... de plus il est impossible de charger d'autre part que la RAM (exit libfat, GBFS). Pire: les fonctions graphiques ne sont pas flexibles, buguées (au total j'y ai trouvé plus d'une dizaine d'aberrations pendant que je développais ma lib*), bref c'est jamais très accueillant de commencer un projet 2D ou 3D dans ces conditions ;)
De la même manière, le code PNG est par exemple optimisé pour prendre 140k au lieu de plus de 200k par défaut, genre d'optimisations que tu n'as pas forcément envie de faire quand tu débutes (et même si tu as déjà développé avant) ^^

* Désolé si je suis mauvaise langue, mais ça m'a assez énervé, surtout que je n'avais pas le choix de réécrire tout par moi même parce que je voulais garder la compatibilité avec le VideoGL existant afin de simplifier l'intégration dans des projets 3D, résultat il fallait contourner les bugs et rendre flexible un truc qui ne l'était pas... autant dire que j'ai adoré v_v

du coup j'espère que tu va rajouter quelques trucs, genre pour la gestion du son et des sprites/bg 2D, et ce serait vraiment la lib parfaite (a mon sens ^^)
Rien n'est moins sûr. Pour le son ok (je voulais déjà releaser quelque chose maintenant), mais pour la gestion du GPU 2D je n'ai volontairement rien voulu faire, vu que PALib a plusieurs années de développement à son actif, autant dire qu'elle est rôdée, et je trouve qu'elle fait ça très bien, donc il n'y aurait pas d'intérêt que je me lance dans un projet "concurrent".
De toute façon, aujourd'hui PALib est bien mieux fichue, l'inclure à ton projet n'implique rien puisque comme l'a dit Lazarus seules les fonctions utilisées sont incluses ;)

j'espère par contre que les sources seront dispo plus tard, c'est toujours utile ;)
Je l'ai précisé dans le premier post, je vous invite d'ailleurs à le relire de temps en temps, j'y ai déjà apporté pas mal de modifs depuis le début :-'

Je suis en train de tester ton µLibrary et ça s'annonce très bien.

Par contre je me demande, comptes-tu intégrer un système de Sprites ?

Je vais commencer à en coder un donc je voulais savoir si je devais attendre le tien ou si je dois en commencer un.
Je ne sais pas ce que tu entends par sprites, mais ici tout est considéré comme une image. Tu as une image de ton perso, tu la dessines où tu veux sur l'écran, comme un sprite :)
L'exemple 02b montre comment afficher et animer une image si tu veux voir ;)

thoduv
20/03/2007, 22h45
Là c'est pareil, avec la libnds tu n'as que le PCX et franchement on ne peut pas dire que ce soit le meilleur format qui existe... de plus il est impossible de charger d'autre part que la RAM (exit libfat, GBFS). Pire: les fonctions graphiques ne sont pas flexibles, buguées (au total j'y ai trouvé plus d'une dizaine d'aberrations pendant que je développais ma lib*), bref c'est jamais très accueillant de commencer un projet 2D ou 3D dans ces conditions ;)
* Désolé si je suis mauvaise langue, mais ça m'a assez énervé, surtout que je n'avais pas le choix de réécrire tout par moi même parce que je voulais garder la compatibilité avec le VideoGL existant afin de simplifier l'intégration dans des projets 3D, résultat il fallait contourner les bugs et rendre flexible un truc qui ne l'était pas... autant dire que j'ai adoré v_v
Effectivement, mais je pense que la plupart des personnes qui utilisent la libnds ne se servent à peu près que des defines des registres (et du gestionnaire d'interruptions), je me trompe ?
Et à propos, est-ce que ta lib dépend de la libnds (pour la gestion des interruptions par exemple) ?

Sinon j'ai regardé la doc, elle est vraiment chouette ta lib ! :dblthumb:
J'avais commencé à faire des essais d'utilisation orientée 2D du GPU 3D, mais j'avais galeré avec videoGL (justement).

J'espere que tu vas continuer à l'améliorer [et que tu publiera les sources - désolé j'avais pas vu] ! :)

Bravo au génie ! :D

Pitt
21/03/2007, 20h50
Bon, je vais tester après, mais je te félicite d'avance, car je sais que Brunni = qualité ^^.
Un truc m'a fait bizarre, c'est que j'avais commencé à coder un lib comme ça, que j'avais finalement abandonnée pour faire autre chose. Je ne me rappelle même plus de son nom, mais je me rappelle que toutes les fonctions commençaient par ... ul ! :blink:
Bref, je vais tester ça dès que je peux, et tu auras mon feedback ! ;)

Bonne continuation !

morukutsu
21/03/2007, 23h00
J'ai commené à coder avec et c'est vraiment bien !

Par contre un truc, j'ai des remarques et questions sur l'utillisation du mode DualScreen .
-ça ne fonctionne pas comme le mode dual sprite de PAlib .
-il y a baisse de frame rate de moitié par rapport au mode un écran comme tu l'avais signalé .

-Peut-on afficher par exemple un background à cheval sur les écrans 0 et 1 ? Si oui, comment procède t-on ?
-Peut-on utilliser les backgrounds de PAlib en fond et les images de µlib devant ?

Brunni
25/03/2007, 14h26
Oui, alors le truc c'est que PALib ne peut absolument pas toucher à l'écran principal (0, celui qui est utilisé par µLibrary). Si elle le fait, elle plante, je ne sais pas vraiment pourquoi mais bon.
Sinon non, il n'est pas possible d'afficher un BG à cheval, pour la simple et bonne raison que le rendu se fait en 2 passes, comme tu peux le voir dans les exemples: un écran sur une frame et un autre écran sur une autre frame. Après, il est tout à fait possible de faire qqch comme ça:
void drawBg(UL_MAP *taMap) {
if (!ulGetMainLcd()) { //Ecran du haut
//On dessine la map depuis le sommet
taMap->scrollY = 0;
ulDrawMap(taMap);
}
else { //Ecran du bas
//Cette fois-ci, on va scroller un peu la map pour qu'on affiche non pas le sommet mais la partie au-dessous
taMap->scrollY = SCREEN_HEIGHT;
ulDrawMap(taMap);
}
}
Avec SCREEN_HEIGHT étant la hauteur de ton écran, tu peux aussi rajouter + SCREEN_HOLE ou un truc du style. Résultat sur l'écran du bas tu auras la partie du bas de ta map (SCREEN_HEIGHT pixels plus bas) et sur le haut tu auras le sommet (0) :)

morukutsu
27/03/2007, 18h27
Okay, merci pour l'info !

Pitt
01/04/2007, 23h10
Juste un truc : ton package est un peu trop orienté Windows, les .bat, le tout en .rar, l'aide en .chm ... ça pourrait être sympa si tu faisais du "plus compatible" ! ;)

Pour le reste, super boulot ! :w00t:

thoduv
01/04/2007, 23h31
J'ai commencé un projet en utilisant ta lib, bien que je préfère habituellement ne pas en utiliser, j'ai été tenté par la "légereté" (!= Palib) et les effets sympas possibles (et j'avais pas envie de me faire chier avec le hard ! :lol:). Et pour l'instant c'est vraiment tout bon !
Merci Brunni ! :)

Brunni
02/04/2007, 00h12
Pitt> Oui, vieux réflexe... là je n'ai que Windows, et en plus je n'ai qu'un disque de 80 Go sur mon portable donc je suis pas prêt d'installer ni linux ni osx ni quoi que ce soit d'autre... :(
Pour le bat je ferais volontiers autrement mais je m'y connais pas du tout, si t'as des tuyaux je suis preneur ;)
Pour le CHM alors là pas trop le choix je crois, mais je vais voir ce que je peux faire ^^

Thoduv> Cool alors, merci ^^ Normalement tu ne devrais avoir aucun souci puisque les fonctions de µLibrary sont plus des wrappers vers le hard quoi, en plus tu pourras apprendre en regardant la source ^^

(et merde, j'ai encore oublié :ph34r: la source va venir je vous jure)

Tiwaz
02/04/2007, 01h38
Bonjour et merci pour cette librairie, qui est vraiment très très bonne.

J'ai quelques questions, sans doute assez simple, mais j'aimerais comprendre comment tu calcules la charge GPU et la charge CPU, je n'arrive pas à trouver dans le code ou tu fais cela (et je pense que je n'ai tout simplement pas assez regardé, mais je n'arrive vraiment pas à trouver).

Merci d'avance.

Bobby Sixkilla
02/04/2007, 15h27
(et merde, j'ai encore oublié :ph34r: la source va venir je vous jure)
Tu ne m'a même pas balancé? :p Je t'aime Brunni. :wub:

Pitt
02/04/2007, 18h56
@Brunni >> je suis en train de te faire un petit script sh.
EDIT : ci-joint une version zip, avec des scripts sh en plus des batchs :p

Brunni
02/04/2007, 20h23
Bobby> Ok merci, mais maintenant tu as la pression sur toi :p

Pitt> Merci, sympa ^^

Tiwaz> Merci ^^
Ce que tu demandes là, ce sont des fonctions avancées. Pour la charge du GPU, il y a une fonction ulGetVertexUsedMemory() qui te renvoie le nombre de vertices allouées par le GPU. Le nombre max est de 6144 (c'est expliqué dans la doc) pour une frame (impossible pour le GPU de dessiner plus que ça à la fois). Donc c'est intéressant de surveiller ce nombre pour éviter de dépasser les 6144 et d'avoir des bugs de rendu ;)
Dans l'exemple des maps ça affiche 7%, ça veut dire qu'on pourrait encore en dessiner une dizaine avant de saturer.

En revanche, pour le CPU c'est une très mauvaise méthode, je n'ai rien d'implémenté à ce sujet dans ma lib (à vrai dire je ne savais pas vraiment comment faire pour bien faire alors je me suis abstenu en attendant de trouver mieux ^^), j'utilise les timers de la DS:
int totalTime = 1;

while(1) {
//Début de frame: on initialise un timer
TIMER1_CR = 0;
TIMER1_DATA = 0;
TIMER1_CR = TIMER_DIV_64 | TIMER_ENABLE;

//Mets ton code ici
ulStartDrawing();
[...]

//Juste avant la fin d'une frame, on affiche le temps que le code ci-dessus a pris, grâce au timer
int cpuTime = (TIMER1_DATA * 1000) / totalTime;
ulPrintf_xy(0, 0, "CPU: %02i.%i%%", cpuTime / 10, cpuTime % 10);

ulEndDrawing();
ulSyncFrame();

//Pour savoir le temps total d'une frame, mauvaise idée en fait, parce que si ton app tourne à 30 fps ça te donnera le pourcentage sur 30 fps, alors qu'en réalité tu as déjà dépassé les 100% sinon ça tournerait à 60 fps. Il faudrait une fois afifcher totalTime à l'écran et garder cette valeur comme référence.
totalTime = TIMER1_DATA;
}

Foxy
02/04/2007, 20h38
Il suffit de calculer le temps d'une frame sur une interruption vbl, a moins que ta lib detourne deja la vbl.

Pitt
02/04/2007, 20h55
[HS] mon écran est en 1280x768, et ça fait bizarre ta signature : le "pour PSP" de OSlib se retrouve en dessous de "mon site", du coup ça fait "mon site pour PSP" ... ça fait bizarre. ;)

morukutsu
02/04/2007, 21h03
+1 :d

Brunni
02/04/2007, 22h02
Il suffit de calculer le temps d'une frame sur une interruption vbl, a moins que ta lib detourne deja la vbl.
Elle ne détourne pas la VBL, mais ne fournit pas de code pour le faire (il faut utiliser la libnds ou le faire toi même).
Pitt, morukutsu> Mince alors :( C'est vrai qu'en 1920x1200 ça passait nickel :ph34r: Va falloir que je trouve une solution... merci de m'avoir prévenu :)

Tiwaz
04/04/2007, 12h05
Bon, eh bien, merci beaucoup pour ces réponses très intéressante et bien expliqué, merci du temps que tu m'as accordés, et merci pour la µLib et la OSlib... Bref, un grand merci pour tout et surtout bonne continuation.

Sincèrement

xflash
08/04/2007, 00h22
Un chti coucou pour te féliciter ici, en plus d'ailleurs ;) Tu as fait du joli boulot.
Les perfs sont au rendez-vous et son coté très light et non intrusif, en fait une référence en la matière.
As-tu jamais pensé à faire un portage PC de cette lib pour faciliter le dev parallèle sous SDL/openGL par exemple?
Le "débridage" au niveau nmbre de sprites que ce mode texturé procure, réveille en moi des envies de Shmup que les limites du mode OAM avait enfoui bien bas :)

Bravo à toi !

xf

Brunni
08/04/2007, 00h36
Merci ^^
Alors non pas de version PC prévue, il y a no$gba qui marche très très bien, donc j'ai pas vraiment envie de faire le travail à double ;)
Ha et j'en profite pour dire que la source est out ^^ Vous n'avez qu'à retélécharger le package ;)

Pitt
08/04/2007, 10h39
Génial ça ! ^^

thoduv
08/04/2007, 22h10
Super ! :D
Merci Brunni ! :)

Arialia
09/04/2007, 18h51
Vraiment pas mal ta librairie Brunni
Bravo et merci !!!
Je pense fortement l'utiliser pour mes projets ...

c'est possible de n'utiliser que les bank E,F et G ?

ou alors D, E, F, G ? pour la 3D

thoduv
09/04/2007, 18h55
Pour les textures, les banks possibles sont A, B, C ou D. Pour les palettes de textures, c'est uniquement E.
Dont il faut forcement utiliser une des banks "principale".

Arialia
09/04/2007, 19h19
ah mais la doc de µlibrary dit autre chose pour la palette !

Same as ulSetTexVramParameters but for palettes. Default is:

ulSetTexPalVramParameters(UL_BANK_F, VRAM_F, 16 << 10);

An equivalent for what VideoGL uses by default is:

ulSetTexPalVramParameters(UL_BANK_E, VRAM_E, 64 << 10);


:blink:

thoduv
09/04/2007, 19h57
Ah oui, au temps pour moi on peut utiliser les banks E, F et G pour les palettes de textures. Seulement, la bank E est la seule à proposer les 4 "slots" de textures. Les deux autres n'en proposent que 2 (ou 1, j'ai pas compris).
Voir ici: http://nocash.emubase.de/gbatek.htm#dsmemorycontrolvram

Brunni
09/04/2007, 21h24
Je confirme que seules les banques A à D ne sont utilisables pour les textures, et E à G pour les palettes. Je ne l'ai pas écrit dans la doc, qui comme vous le voyez est loin d'être complète :(
J'ai pris la banque F par défaut parce que PALib se sert de la bank E pour les palettes étendues. Et puis bon, 16k j'ai l'impression que c'est assez (surtout qu'il y a un gestionnaire dynamique d'une granularité de 8 octets) ^^
D'ailleurs je n'ai jamais compris pourquoi libnds prend la E par défaut, si qqn a une explication... :huh:

zeGouky
11/04/2007, 22h18
Yup Brunni,

super taf ! :-)

Par contre j'ai une question pour toi à laquel tu porras peut être répondre, tu arrives à faire de la 3D sur les 2 écrans ?

Pitt
11/04/2007, 22h50
Je réponds à sa place : oui, mais dans ce cas là tu tombes à 30 FPS à la place de 60.

Foxy
11/04/2007, 22h52
Je crois que la question était plutot "Comment faire ?" :p

zeGouky
11/04/2007, 22h57
We have a winner : my bro foxy :-D

Si m'sieur Brunni pourrait donner 2~3 explications sur le comment ça serait bien urbain :)

thoduv
11/04/2007, 23h17
En gros:
- Frame 1: rendu de l'écran du haut
- Capture du rendu 3D vers la VRAM, et affichage sur l'écran du haut (à l'aide de gros sprites bitmap pour Brunni, mais on pourrait utiliser des BG)
- Frame 2: rendu de l'écran du bas
- Capture du rendu 3D vers une autre bank de VRAM, et affichage sur l'écran du bas (toujours avec des sprites ou un BG). L'écran du haut affiche toujours les données de la Frame 1.
On remarque donc que ce fonctionnement est à 30FPS, et utilise 2 banks complètes de de VRAM.

Voilà, j'espère avoir été compréhensible :)

zeGouky
11/04/2007, 23h19
Ouaip juste le coup de la capture du rendu je voie pas trop en faites.

thoduv
12/04/2007, 00h04
La DS possède d'un dispositif hardware permettant "capturer" l'écran (ou seulement la couche 3D, au choix) et de le copier comme un bitmap dans une VRAM.
Plus d'infos: http://nocash.emubase.de/gbatek.htm#dsvideocaptureandmainmemorydisplaymode

zeGouky
12/04/2007, 00h11
Ah ! super , bon yapuka :-)

Merci pour les précisions.

Brunni
12/04/2007, 00h40
Tout a été dit ^^
Merci des réponses les gars, c'est sympa de votre part :)

Brunni
18/04/2007, 22h45
J'ai mis à jour µLibrary, parce que ça ne compilait plus avec la dernière version de libnds.

Hé oui, comme d'hab (presque) tout a changé, il faut modifier pas mal de choses déjà pour arriver à compiler, et ensuite... je vous laisse juger.

http://brunni.dev-fr.org/ulib/tmp/img15.png

La librairie est disponible au même endroit que d'habitude (http://brunni.palib.info/new/dl/nds/ulibrary.rar), il vous suffit de la retélécharger. Attention tout de même, ça ne recompilera pas avec l'ancienne version de libnds, donc n'oubliez pas de mettre également à jour devkitpro sinon cette version de µLibrary sera inutilisable ;)
Si vous ne voulez pas mettre à jour libnds, vous pouvez toujours télécharger l'ancienne version sur mon site :)

A noter finalement que thoduv m'avait signalé un bug à propos du retournement horizontal (décalage d'un pixel) mais je n'arrive pas à le reproduire. Peut être qu'il a disparu (je sais que j'ai modifié deux ou trois trucs dans cette partie), n'hésitez pas à me dire comment ça se passe avec la dernière version ;)

Arcadia
18/04/2007, 23h26
Moi je dis bravo :)

Pitt
19/04/2007, 00h00
Très sympa, je teste ! :w00t:

BatteMan
19/04/2007, 00h35
Euh, deux petits mots sur la news ;-)
On parle de library en anglais, qu'il est correct de traduire par bibliothèque en français.

"C'était la minute... nécessaire de BatteMan"

Sinon, bravo à l'auteur de cette bibliothèque !

PS : Je voulais poster dans les commentaires de la news, mais elle était "closed".

--
/me dit ça mais il ne dit rien.

archilolo
19/04/2007, 00h38
Euh, deux petits mots sur la news ;-)
On parle de library en anglais, qu'il est correct de traduire par bibliothèque en français.

"C'était la minute... nécessaire de BatteMan"

Sinon, bravo à l'auteur de cette bibliothèque !

PS : Je voulais poster dans les commentaires de la news, mais elle était "closed".

--
/me dit ça mais il ne dit rien.
C'est corrigé (pour les deux suggestions).
Fais-toi plaisir ! :p

Noda
19/04/2007, 01h09
ah bon y'a une nouvelle version de la libnds?? :p (/me débarque)

quel site newse ce genre de news pr DKP etc?

xflash
19/04/2007, 01h14
ah bon y'a une nouvelle version de la libnds?? :p (/me débarque)

quel site newse ce genre de news pr DKP etc?

Tu as le site sourceforge officiel (donc flux RSS):
http://sourceforge.net/project/showfiles.php?group_id=114505

Brunni: Je n'osais t'en parler, mais mes essais d'update à partir de ton code en modifiant les signatures des methodes ou les noms des macros qui ont différées dans la libnds avait abouti à un joli crash dans les regles, assez bizarre. >_<

Merci à toi. ^^

xf

Brunni
19/04/2007, 09h41
De rien ^^
Au cas où tu as un magnifique updater dans ton dossier devkitpro, tu n'as qu'à le lancer de temps en temps et il te dira si une nouvelle version est disponible :)
Au passage j'y pense si votre prog crashe après l'installation de la nouvelle version de µLibrary (je ne crois pas que ça devrait être le cas sur cette version, mais ça pourra éventuellement être le cas dans une version future avec des grandes améliorations) n'oubliez pas de faire un "clean" (= supprimer tous ses fichiers .o) et tout recompiler depuis le début ;)

Dr.Vince
05/05/2007, 16h34
quelqu'un a réussi à inclure ulib avec les templates de la libnds ???

birslip
05/05/2007, 16h39
Oui dans le makefile tu changes la ligne :
LIBS := -lnds9

Par :

LIBS := -lul -lnds9

Et ça devrait bien fonctionner, enfin chez moi ça marche :)

Dr.Vince
05/05/2007, 17h47
donc pour ceux qui auraient le même problème faut mettre :


LIBS := -lul -lnds9 -lm

omg
26/06/2007, 21h06
Bon, mes exams étant passé je vais m'installer de quoi m'attaquer à la DS!
Hum... C'est devkitarm qui faut installer avant? :ninja:
Bon ok je vais me renseigner et je reviens une fois que j'aurai réussi à compiler un truc basique!

[Edit] Chui en plein install, boudiou je me dit que j'aurai du faire ça vachement avant! :)

[Edit number tou] J'ai un probleme de compilation... je pense que ça vient de la version de la libnds, z'en pensez quoi?
main.c
In file included from c:/dsprog/libnds/include/ulib/ulib.h:139,
from c:/dsprog/uLibrary/Examples/Example01/source/main.c:7:
c:/dsprog/libnds/include/ulib/glWrapper.h: In function 'ulSetTexAlphaMask':
c:/dsprog/libnds/include/ulib/glWrapper.h:157: error: 'GL_TEXTURE_ALPHA_MASK' undeclared (first use in this function)
c:/dsprog/libnds/include/ulib/glWrapper.h:157: error: (Each undeclared identifier is reported only once
c:/dsprog/libnds/include/ulib/glWrapper.h:157: error: for each function it appears in.)
make[1]: *** [main.o] Error 1
make: *** [build] Error 2

omg
27/06/2007, 00h47
Bon en fait ça venait d'une incompatibilité avec la dernière PAlib...
Il faut pour que la compilation fonctionne, la version de PAlib du 23 mars 2007. ;)

omg
06/07/2007, 00h34
Bon, ben franchement elle est vraiment bien cette lib!
C'est décidé j'adopte! :)

archilolo
06/07/2007, 00h39
OMG, le seul modo qui triple post ! :p

Désolé de t'avoir empêché de quadru-poster !

(;))

omg
06/07/2007, 00h41
Chier, j'y étais presque!
N'empêche que cette lib est vachement sympa!
Je m'amuse depuis tout à l'heure...
Franchement bien!

Brunni
15/07/2007, 00h58
Voici enfin une mise à jour (1.00 bêta 4) avec au menu:
- Fonctionne avec - et requiert! - la dernière version de libnds! (ces crétins ont encore réussi à tout casser, comme d'habitude)
- Ajout de la fonction ulDeleteMap, qui permet de supprimer une map crée avec ulCreateMap
- Le fait d'utiliser la bank B avec ulSetTexVramParameters ne fonctionnait pas bien, toutes mes excuses :-'
- Les fichiers JPG avec une hauteur non multiple de 8 ou 16 n'étaient pas chargés correctement si ul_optimizeTextureSize était à 1. Le code n'a pas encore été testé soigneusement, si vous rencontrez des problèmes, signalez-moi svp ;)
Téléchargement: ICI (http://brunni.dev-fr.org/dl/nds/uLibrary.rar)

Arcadia
15/07/2007, 01h09
Et aller, une ch'tite news...

Brunni
15/07/2007, 01h13
Ha ben merci beaucoup :)

omg
15/07/2007, 01h13
Merci Brunni! :wub:

PS: Tu reçois mes MP? :cry:

Brunni
15/07/2007, 01h23
Ha mince! Effectivement je l'ai vu mais j'ai complètement oublié de le noter, excuse :-'
Vais voir ça dès que je peux ;)

omg
15/07/2007, 01h24
Merci mon héros! :wub:

Brunni
15/07/2007, 01h37
Voilà ;)
Et merci bcp Arcadia pour la news ^^

Arcadia
15/07/2007, 01h45
Voilà ;)
Et merci bcp Arcadia pour la news ^^

De rien Brunni, mais elle ne me plaisait pas trop en fait. J'ai revu un jeu de mot en lui donnant un codé plus helvetique, j'espère que c'est mieux...

Bobby Sixkilla
15/07/2007, 16h31
T'es le meilleur Brunni. :wub:

goebish
16/07/2007, 11h09
Salut Brunni, félicitations pour cette lib.
Etant déjà utilisateur d'OSLib ça à été vraiment simple de porter mes jeux de la PSP à la DS :)

Par contre là j'ai un soucis pour utiliser PALib en même temps, ça marche pas bien que ça ne crash pas non plus... enfin bon je vais chercher un peu et je reviendrai t'embêter sur le forum µLibrary s'il le faut :p

omg
16/07/2007, 11h57
J'ai eu des problemes moi aussi avec PALib mais je ne suis pas allé plus loin... :)
Je reviendrais dessus quand j'utiliserai le son.

goebish
16/07/2007, 12h03
Moi c'est pour la reconnaissance de formes :)

Mon problème c'est que les fonctions de PALib ne fonctionnent tout simplement pas. Par exemple rien qu'un Stylus.Held me renvoit toujours 0, alors que ul_keys.touch.held fonctionne correctement :(

j'utilise le template µLibrary avec PALib donc je pense que je suis bon au niveau des includes et libs dans le makefile, et puis de toute façon ça compile, link et execute sans soucis...
Bah ... surement une erreur de ma part, je vais bien finir par trouver.

omg
16/07/2007, 12h05
Tu as bien installé la beta4 ou tu es sur l'ancienne version?

goebish
16/07/2007, 12h10
C'est bien la béta4, installée hier, avec le dernier ndslib et PALib, ça ne fait qu'une semaine que j'ai la bête ;)

omg
16/07/2007, 12h14
Pareil que moi! ;)

goebish
16/07/2007, 13h34
Bon j'ai trouvé mon erreur, je faisait un ulInit(UL_INIT_ALL) au lieu de ulInit(UL_INIT_LIBONLY)
Maintenant tout fonctionne comme je veux. Super !

xblaster
16/07/2007, 23h27
Rhoooa la beta4 !!!!

QUE DU BONHEUR !!!!

la banque B marche enfin... et là ça poutre :)

Jiboo
06/08/2007, 19h33
Salut,

Je voulais savoir si quelqu' un avait deja bossé un peu avec uLib et EFS ?
Est ce que vous avez reussi a "incorporer" :p EFS dans uLib ?

Voila j' ai un peu bidouiller mais j' arive pas a l' faire fonctionner :p
http://stormrage.net/uLibrary.rar

Si quelqu' un pouvait jeter un ptit coup d' oeil ^^

Bye,
Jiboo.

Jiboo
11/08/2007, 03h25
Salut,

Désolé pour le double post mais vu l' intervalle ^^.

Voila donc je penses qu' EFS a beaucoup de potentiel.
FAT = On peut ecrire pratique pour sauvegarder, mais bon les fichiers sont facilement modifiable et tout, c' est pas top.
BGFS = Les fichiers ne sont plus aussi facilement accessible, sa fait plus pro pour reprendre les mots de Noda, mais on ne peut pas sauvegarder.
Donc l' equivalent d' EFS avec uL c' est de jongler avec FAT et GBFS.

Cette librairie(uL, mais bon, EFS aussi ^^) a était créé dans le but de nous simplifier la vie, je penses donc qu' efs devrait être au programme de la prochaine version de uL.
Voila, et si toi, Brunni, tu es aussi intéressé par les avantages d' EFS, pourquoi pas l' ajouter dans la prochaine version, je ne penses pas que Nova ou la liscence de EFS (Gnu Gpl v2) soit contre. :)

Au pire, si un oeil neuf pouvait jeter un rapide coup d' oeil sur ce que j' ai fait, je ne penses pas etre le seul qui voit les avantages de EFS, vous en aiderais surement plus d' un.

Merci d' avoir lu, bye,
Jiboo.

Brunni
11/08/2007, 13h00
Pourquoi pas, je ne connais pas du tout EFS mais je note, on verra bien ^^

Jiboo
11/08/2007, 14h42
Merci, j' attends sa avec impatience, bonne continuation dans tes projets :)

Bye,
Jiboo.

Bobby Sixkilla
05/11/2007, 01h20
Brunni, il n' y a rien de prévu pour le son dans ta lib? :(

Noda
08/11/2007, 05h36
Un petit up pour pas que ca tombe dans l'oubli, car la uLib après intense utilisation, c'est vraiment que du bonheur (et très propre) sachant que grace à elle, j'utilise de la 3D sur les 2 écrans, je load mes textures depuis des png, j'affiche ma scene 3D et avec un peu de bidouille j'affiche meme du texte/sprites 2D (via le hard 3D tjs) avec les fonctions uLib, c'est... excellent ^^

Bobby Sixkilla
08/11/2007, 16h28
Tu serais motivé pour faire un petit tuto? :-'

Noda
08/11/2007, 18h21
J'ai mieux, dans 1 mois (fin du projet), release des source blindées de commentaires ;)

Ca inclut: ombres, modèles de bases (portage de gluSphere d'openGL entre autres), classe FixedPoint, fonctions pour les matrices, SkyBox, moteur physique, etc... Quelques trucs utiles quoi :p

Bobby Sixkilla
08/11/2007, 18h27
Cool! :)

Brunni
08/11/2007, 19h04
Bô ça :w00t:
Merci bcp noda :thumb_yel

Noda
08/11/2007, 20h24
Tiens Brunni, tu as recu mon mail concernant le bug avec les font custom? (provient peut etre de font2oft)

EDIT: Aarg, au passage assigner 2 vram banks de texture en mode double écran, ca marche pas :(

J'initialise tout (init all, init text, init gfx et init double screen) puis je fais:

// use 2 vram banks for textures
ulChangeVramAllocation((UL_BANKS)(UL_BANK_A | UL_BANK_B), UL_BANK_TYPE_TEXTURE);

malgré ca, dès que je dépasse 128K de textures, j'ai des trous blancs :'(

EDIT2: héhé trouvé le bug, un petit oubli?

je rajoute ca avant de tout initialiser, et ca marche nickel:

ul_texVramSize = 256 << 10;
ul_texVramBanks = (UL_BANKS)(UL_BANK_A | UL_BANK_B);

Arialia
08/11/2007, 21h39
ah le piège des smileys ;)

lire UL_BANK_B au lieu de UL_BANK_B) :p

Sinon tu as raison Noda vraiment bien la µlib :bravo: Brunni

EFS est bien aussi :D

Cortes48
10/11/2007, 22h04
bravo brunni :bravo:

Brunni
25/12/2007, 19h24
Et voilà une nouvelle version! :)
J'ai corrigé / fait ce dont j'avais parlé sur le forum, donc il y a quelques trucs sympa. Principalement le support du chargement d'images avec alpha channel, des fonctions pour appliquer des transformations à l'écran et un support corrigé du texte (l'outil de conversion est maintenant inclus au zip, j'avais oublié avant :-'). J'ai aussi ajouté un nouvel exemple (Example10).
Ca ne fonctionnera qu'avec la dernière version de libnds (comme d'hab hein, c'est vraiment pas ma faute :/), et j'ai inclus dans le dossier Tools un binaire ARM7 que vous pouvez utiliser pour pouvoir quand même tester sur les émulateurs ;)
Téléchargement, comme d'hab: http://brunni.dev-fr.org/dl/nds/uLibrary.rar
N'hésitez pas à laisser vos commentaires, ça me ferait plaisir, surtout vu le temps que j'y passe et que j'ai pas forcément ;)

omg
25/12/2007, 19h48
Que du bon!

Bobby Sixkilla
25/12/2007, 21h42
Merci Brunni! :)

archilolo
26/12/2007, 01h29
Merci Brunni ! Tes outils sont vraiment fabuleux. :wub:

cuicui666
26/12/2007, 02h46
Génial comme cadeau :w00t:

Jiboo
26/12/2007, 03h42
Bonjour,

Si je peux me permetre, y' a des petits prob au niveau des includes dans la 1.1.

ulib.h:23
#include "virtualfile.h" --> #include "VirtualFile.h"

gif/quantize.c:28
#include <PA9.h> --> #include <nds.h>

Et merci pour ton boulot, meme le jour de noel tu bosses. :)
Un peu déçu que t' ai pas ajouter le support pour l' EFS mais bon, je regarderai comment a fait Noda si il ouvre les sources de son projet (#107).

Bye,
Jiboo.

Michoko
26/12/2007, 12h01
Un énorme merci Brunni, les libs comme la µLibrary ou la PAlib sont vraiment des trésors pour la scène DS !!

La µlib m'attire de plus en plus, je vais surement l'utiliser dans mon futur projet.

Encore un grand merci à toi et passe de bonnes fêtes !

Michoko

Brunni
27/12/2007, 14h10
Merci pour vos commentaires :)
J'ai mis à jour encore avec de petits fix (un problème de couleur transparente avec les png, les corrections que Jiboo a mentionnées, un exemple de plus et un ou deux petits éléments supplémentaires dans la doc).

Link Mauve
27/12/2007, 16h14
Merci beaucoup pour cette lib, Brunni !

J'en ai profité pour faire une version Linux de l'archive (http://linkmauve.free.fr/download/uLibrary.tar.bz2), en remplaçant les *.bat par des exécutables shell, en supprimant les *.vhw et autres fichiers inutiles et en corrigeant les différentes erreurs de majuscules/minuscules, de main.h inexistants dans les exemples (voir post #118 (http://playeradvance.org/forum/showpost.php?p=164134&postcount=118))

Je n'ai pas encore testé, mais tout compile correctement !

Et merci encore :)

Brunni
27/12/2007, 20h55
Cool, merci à toi :w00t:
Vais regarder ça et réfléchir à un moyen de l'intégrer directement pour les linux users :)

Link Mauve
29/12/2007, 19h43
MàJ (http://linkmauve.free.fr/download/uLibrary.tar.bz2) avec l'exemple 11 et le script pour font2oft fonctionnel.
L'archive avec Devkitpro, PAlib et µLib pour Linux est disponible ici (http://linkmauve.free.fr/download/devkitpro.tar.bz2) !

jujurackham
29/12/2007, 21h47
Salut Brunni :)

Je ne sais pas pour vous... mais sous windows les exemples qui utilisent PAlib ne compilent pas (Erreur).

Est-ce que c'est parce que la PAlib est incompatible avec DevKitPro r21 ? Quelle version de PAlib utiliser ? Ou bien il faut juste attendre une mise à jour ?

Merci :)

Link Mauve
29/12/2007, 23h07
J'ai fait en sorte que tous les exemples fournis compilent. Tu peux essayer de télécharger mon archive en remplaçant les fichiers shell par des bat. En plus, j'ai corrigé deux/trois problèmes de l'archive w$ :)

jujurackham
30/12/2007, 14h50
Ah chouette :)

Merci :)

Brunni
30/12/2007, 17h16
Merci Link Mauve c'est très sympa de ta part :wub: Quand j'aurai un peu de temps je verrai pour "officialiser" ton package (l'inclure directement quoi) si tu es d'accord :)

jujurackham
30/12/2007, 19h50
Effectivement, simplement avec le dossier PAlib de l'archive de LinkMauve, ça compile tout comme il faut (du moins pour les exemples 7, 8 & 9 de la µlib)

Merci encore :)
Je vais pouvoir patauger là-dedans maintenant :ninja:

Link Mauve
31/12/2007, 01h05
Pas de problème :)
Tant mieux si ça peut aider quelqu'un !
J'essaye d'inclure l'EFS, mais l'exemple fourni avec cette lib ne fonctionne pas chez moi… Si quelqu'un arrive à la faire fonctionner avec PAlib et µLib, ça serait super de l'inclure dans le gros pack :)

lmn4096
04/01/2008, 16h59
Hello
je suis nouveau par ici.
Je viens de downloader le uLib mais je n'arrive pas a compiler le moindre exemple...

j'ai installer le dernier devkitpro et Palib aussi, mais peut être ne sont il plus compatible avec ulib?

make
main.c
arm-eabi-g++ -g -mthumb-interwork -mno-fpu -specs=ds_arm9.specs main.o -L/c/devkitPro/libnds/lib -lul -lpng -lz -lfat -lnds9 -o build.elf
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib/ds_arm9_crt0.o: In function `CIDLoop':ds_arm9_crt0.s:(.init+0x2ac): undefined reference to `initSystem'
c:/devkitPro/libnds/lib\libul.a(drawing.o): In function `glInit':
c:/devkitpro/libnds/include/nds/arm9/videoGL.h:1089: undefined reference to `glGetGlobals'
c:/devkitpro/libnds/include/nds/arm9/videoGL.h:1090: undefined reference to `glInit_C'
collect2: ld returned 1 exit status
make[1]: *** [/c/devkitPro/myWork/_newDemo01/_newDemo01.elf] Error 1
make: *** [build] Error 2

jujurackham
26/02/2008, 12h57
Une petite réponse un peu tardive pour dire qu'avec la nouvelle PAlib "Community Edition" tout marche impeccable. J'ai réussi à compiler tous les exemples sans aucun problèmes.

D'abord il faut installer le DevKitPro r21, puis installer la PAlib "Community Edition" (en ayant désinstallé l'ancienne PAlib), puis enfin mettre la dernière version de la µlib (celle du 25/12/07). Il faut ensuite lancer l'installation de la µlib (un .bat) et *hop* tout fonctionne nickel.

Jusqu'à la prochaine mise à jouer du DevkitPro... :ninja:

Krazplay
31/03/2008, 14h19
Je voulais tester la µLib mais ça ne marche pas, j'ai bien la version r21 de DevKitPro, mon PAlib je viens de le mettre à jour avec la "Community Edition" (j'ai supprimé les anciens dossier de la PAlib avant de mettre les nouveaux), et j'ai relancé l'installation de la µLib au cas où...
Et j'ai toujours la même erreur. Je me demandais s'il y avait une recompilation de quelque chose à faire ou quoi que ce soit, c'est chiant d'avoir à tout réinstaller :s

J'ai bien modifié le Install.bat parce que mon devkitpro est installé sur le disque D et non C, et on peut voir dans l'erreur :
c:/devkitpro/libnds/include/nds/arm9/videoGL.h:1089: etc
Je suppose que c'est juste une erreur d'affichage (comment il pourrait atteindre la ligne 1089 d'un fichier n'existant pas :p)
Mais je me demande, parce que je suis allé voir le fichier en question et il n'y a aucune référence de glGetGlobals, est-ce que la µLib apprécie vraiment de ne pas être sur installé sur le disque C ou j'ai fait une erreur quelque part ?


D:\devkitPro\uLibrary\Examples\Example01>make clean
clean ...Example01

D:\devkitPro\uLibrary\Examples\Example01>make main.c
arm-eabi-g++ -g -mthumb-interwork -mno-fpu -specs=ds_arm9.specs main.o -L/d/devk
itPro/libnds/lib -lul -lpng -lz -lfat -lnds9 -o build.elf
d:/devkitPro/libnds/lib\libul.a(drawing.o): In function `glInit':
c:/devkitpro/libnds/include/nds/arm9/videoGL.h:1089: undefined reference to `glGetGlobals'
c:/devkitpro/libnds/include/nds/arm9/videoGL.h:1090: undefined reference to `glInit_C'
collect2: ld returned 1 exit status
make[1]: *** [/d/devkitPro/uLibrary/Examples/Example01/Example01.elf] Error 1
make: *** [build] Error 2

D:\devkitPro\uLibrary\Examples\Example01>pause
Appuyez sur une touche pour continuer...

Edit :
J'ai dû tout réinstaller au moins 3 fois, mais cette fois-ci ça marche, j'ai enfin réussi à compiler un exemple de la µLib :)
J'ai quand même l'impression que la mise à jour de devkitPro (1.4.4 -> 1.4.5) doit foirer un peu.
Enfin tout est bien qui finit bien. ^^

Brunni
23/08/2008, 19h03
Voilà, j'ai mis à jour la µLibary à la version 1.11. Elle corrige une ou deux conneries que j'ai vues en relisant le code, notamment le problème de palettes dont tout le monde se plaint. Toutefois comme je n'ai pas eu ce problème, je n'ai pas pu tester, donc je compte sur vous ;)
Il y a aussi des exemples de projets pour utiliser Visual Studio (Example01, Example08, et le projet µLibrary lui-même).

Pas mal de gens ont peur que µLibrary soit abandonné car je ne développe plus beaucoup dessus. En fait ce n'est pas le cas, mais comme j'ai peu de temps libre, j'ai adopté une politique un peu spéciale: je n'apporte de grandes nouveautés qu'à chaque version majeure (1.0, 2.0...) et pour le reste le but c'est que la librairie fonctionne bien et qu'elle soit stable. Du coup, il n'y a pas vraiment besoin d'update tant qu'aucun bug n'est trouvé et qu'elle est toujours compatible avec devkitpro ;)

Si des choses supplémentaires pourraient toujours être implémentées dans cette librairie (par exemple le support du GPU 2D, ou le support du son) ça viendrait dans une éventuelle version 2, qui serait réfléchie dans ce sens :)
Cette version ne serait pas compatible avec la 1, donc il faudrait adapter le code.
L'avantage, je trouve, de cette manière de procéder c'est que ça permet de pouvoir épurer de la version 2 tout ce qui est devenu obsolète (= librairie plus légère, et moins de problèmes). On est aussi assuré que si on commence un projet avec la version 1, ça fonctionnera toujours avec les outils les plus récents (et non qu'on est bloqué à un moment donné parce qu'une update requiert qu'on modifie notre code).

Je serais curieux de savoir ce que ceux qui ont plus d'expérience sur de grands projets en pensent :superdjp: Sinon bon dév à vous :fleur:

Michoko
24/08/2008, 13h56
Un énorme merci Brunni pour cette lib exceptionnelle!!! :bravo:

Je trouve ton approche de versioning très rationnelle, et personnellement j'adhère à 100%. Je préfère largement une lib qui est un peu plus limitée mais exempte de bugs (du moins autant que possible), plutôt qu'une usine à gaz qui multiplie les fonctionnalités et se traîne des boulets énormes par manque d'uniformisation.

Je suis toujours un grand fan de la PAlib, mais j'espère que les community releases ne vont pas souffrir de ce syndrome "chacun ajoute son petit bout de code sans tenir compte d'une cohérence globale".

En tous cas merci encore pour tout ton travail, il est vraiment grandement apprécié !

Michoko