Pages: 1 [2] 3   Bas de page
Imprimer
Auteur Fil de discussion: Problème installation DevkitPro  (Lu 4562 fois)
0 Membres et 1 Invité sur ce fil de discussion.
Happy Hors ligne
Full Member
***
Messages: 105


Voir le profil
« Réponse #15 : 26 Octobre 2009, 20:33:22 »

Bon, j'ai fouillé un peut, code, modifié, et j'en ai déduit que le code qui compile en C ne compile pas en C++(pour afficher une image, par exemple, si je renomme le main.c en cpp de l'exemple 2, paf, ça ne compilera plus...)? Pourquoi?

Code pour afficher une image compilant en C mais pas en C++ :
Code:

//Inclusion des librairies
#include <ulib/ulib.h> //Inclusion de la ulib

//Inclusion des images
#include "tails_png.h"

//Fonction main
int main()
{
    //Variables

    //Déclaration des parametres des images
    UL_IMAGE *imageTails;

//Initialisation de la ulib
ulInit(UL_INIT_ALL); //Initialisation générale de la ulib
ulInitGfx(); //Initialisation de la partie graphique
ulInitText(); //Initialisation du texte
ulInitDualScreenMode(); //On joue sur les deux écran
ulSetMainLcd(0); //On va utiliser l'écran tactile

//Initialisation des parametres des images
//Mise au point de la couleur de transparence
ulSetTransparentColor(RGB15(31, 0, 31));
{
    //Chargement de l'image des Tails.png en UL_PF_PAL4(16 ou moins de 16 couleurs)
imageTails = ulLoadImageFilePNG((void*)tails_png, (int)tails_png_size, UL_IN_VRAM, UL_PF_PAL4);
}
ulDisableTransparentColor();

//Placement de l'image de Tails au milieu de l'écran
ulImageSetRotCenter(imageTails);

    //Boucle infinie du jeux
while(1)
{
        ulReadKeys(0); //Lecture des touches

        //On place tails à la position du stylet
        imageTails->x = ul_keys.touch.x;
    imageTails->y = ul_keys.touch.y;

ulStartDrawing2D(); //On commence à dessiner

ulDrawGradientRect(0, 0, 256, 192, RGB15(0, 0, 24), RGB15(0, 0, 0), RGB15(0, 0, 0), RGB15(0, 0, 24)); //BG improvisé

        //Affichage du texte
        ulDrawString(0, 0, "Bonjour tout le monde !!!");

        //Affichage des images
        ulDrawImage(imageTails); //Affichage de l'image de Tails.png

        //A la fin de la boucle du jeu
ulEndDrawing(); //On fini de dessiner
ulSyncFrame(); //Syncronisation 60 FPS, 30 si deux écran
}

    //Retour 0, le programme c'est bien déroulé
return 0;
}

Quand le main est en .c, ça compile parfaitement alors que quand il est en .cpp, j'ai ce code d'erreur :
Code:

C:\devkitPro\ProjetNintendoDS\TestUlib>make clean
clean ...

C:\devkitPro\ProjetNintendoDS\TestUlib>make
tails.png
main.cpp
arm-eabi-g++ -MMD -MP -MF /c/devkitPro/ProjetNintendoDS/TestUlib/build/main.d -g
 -Wall -O2 -march=armv5te -mtune=arm946e-s -fomit-frame-pointer -ffast-math -mth
umb-interwork -I/c/devkitPro/ProjetNintendoDS/TestUlib/include -I/c/devkitPro/Pr
ojetNintendoDS/TestUlib/build -I/c/devkitPro/libnds/include -I/c/devkitPro/libnd
s/include -I/c/devkitPro/ProjetNintendoDS/TestUlib/build -DARM9 -fno-rtti -fno-e
xceptions -c /c/devkitPro/ProjetNintendoDS/TestUlib/source/main.cpp -o main.o
c:/devkitPro/ProjetNintendoDS/TestUlib/source/main.cpp: In function 'int main()'
:
c:/devkitPro/ProjetNintendoDS/TestUlib/source/main.cpp:28: error: invalid conver
sion from 'void*' to 'const char*'
c:/devkitPro/ProjetNintendoDS/TestUlib/source/main.cpp:28: error:   initializing
 argument 1 of 'UL_IMAGE* ulLoadImageFilePNG(const char*, int, int, int)'
make[1]: *** [main.o] Error 1
make: *** [build] Error 2

C:\devkitPro\ProjetNintendoDS\TestUlib>pause
Appuyez sur une touche pour continuer...

Sur amulateur :
Par contre, le texte s'affiche sur les deux écrans, et Tails s'affiche sur les deux écrans... il n'y aurait pas une fonction pour afficher du texte sur l'écran du bas, et pour afficher du texte sur l'écran du haut?

P.S : Ce code, c'est de l'ulib.

Aidez-moi s'il vous plaît.
Merci D'Avance.
Au Revoir.
Journalisée

Non non mais ça rapelle vraiment de bon souvenirs :
http://www.youtube.com/watch?v=rGDiO1G0-K0
Copper Hors ligne
Mega Member
***
Messages: 1296


Voir le profil
« Réponse #16 : 26 Octobre 2009, 20:52:55 »

Je connais pas la µLib mais je dirais que le premier paramètre de ulLoadImageFilePNG n'est pas bon, il doit attendre le nom du fichier pas le pointeur du contenu du fichier en mémoire. Même si ca compile en C ca ne doit pas fonctionner à mon avis...

Peut-être qu'il faut utiliser ulLoadImagePNG avec un VirtualFileOpen avant...
« Dernière édition: 26 Octobre 2009, 20:54:29 par Copper » Journalisée
Happy Hors ligne
Full Member
***
Messages: 105


Voir le profil
« Réponse #17 : 26 Octobre 2009, 21:25:26 »

Sad mais on n'utilise pas cette fonction dans les exemple, je ne sais pas l'utiliser.
Journalisée

Non non mais ça rapelle vraiment de bon souvenirs :
http://www.youtube.com/watch?v=rGDiO1G0-K0
Copper Hors ligne
Mega Member
***
Messages: 1296


Voir le profil
« Réponse #18 : 26 Octobre 2009, 21:54:47 »

Hum après tout vu que c'est un exemple il doit fonctionner... Essayes de supprimer :

(void*) devant tails_png
Journalisée
t4ils Hors ligne
Branleur
Elite Member
**
Messages: 962


Voir le profil WWW
« Réponse #19 : 26 Octobre 2009, 22:13:07 »

Ca s'affiche pas parce que tu as pas l'autorisation de l'afficher, tu m'as pas demandé grin
Donc je t'autorise à partir de dorénavant, donc ça devrait s'afficher Smiley
Journalisée

Le codage amateur ? Parce que je le veux bien.
Happy Hors ligne
Full Member
***
Messages: 105


Voir le profil
« Réponse #20 : 27 Octobre 2009, 00:07:18 »

J'ai retiré le "(void*)" comme tu me l'a conseillé Cooper, alors je met mon code de projet et mon code d'erreur... :

Code du main.cpp :
Code:

//Inclusion des librairies
#include <ulib/ulib.h> //Inclusion de la ulib

//Inclusion des images
#include "tails_png.h"

//Fonction main
int main()
{
    //Variables

    //Déclaration des parametres des images
    UL_IMAGE *imageTails;

//Initialisation de la ulib
ulInit(UL_INIT_ALL); //Initialisation générale de la ulib
ulInitGfx(); //Initialisation de la partie graphique
ulInitText(); //Initialisation du texte
ulInitDualScreenMode(); //On joue sur les deux écran
ulSetMainLcd(0); //On va utiliser l'écran tactile

//Initialisation des parametres des images
//Mise au point de la couleur de transparence
ulSetTransparentColor(RGB15(31, 0, 31));
{
    //Chargement de l'image des Tails.png en UL_PF_PAL4(16 ou moins de 16 couleurs)
imageTails = ulLoadImageFilePNG(tails_png, (int)tails_png_size, UL_IN_VRAM, UL_PF_PAL8);
}
ulDisableTransparentColor();

//Placement de l'image de Tails au milieu de l'écran
ulImageSetRotCenter(imageTails);

    //Boucle infinie du jeux
while(1)
{
        ulReadKeys(0); //Lecture des touches

        //On place tails à la position du stylet
        imageTails->x = ul_keys.touch.x;
    imageTails->y = ul_keys.touch.y;

ulStartDrawing2D(); //On commence à dessiner

ulDrawGradientRect(0, 0, 256, 192, RGB15(0, 0, 24), RGB15(0, 0, 0), RGB15(0, 0, 0), RGB15(0, 0, 24)); //BG improvisé

        //Affichage du texte
        ulDrawString(0, 0, "Bonjour tout le monde !!!");

        //Affichage des images
        ulDrawImage(imageTails); //Affichage de l'image de Tails.png

        //A la fin de la boucle du jeu
ulEndDrawing(); //On fini de dessiner
ulSyncFrame(); //Syncronisation 60 FPS, 30 si deux écran
}

    //Retour 0, le programme c'est bien déroulé
return 0;
}

Code de compilation :
Code:

C:\devkitPro\ProjetNintendoDS\TestUlib>make clean
clean ...

C:\devkitPro\ProjetNintendoDS\TestUlib>make
tails.png
main.cpp
arm-eabi-g++ -MMD -MP -MF /c/devkitPro/ProjetNintendoDS/TestUlib/build/main.d -g
 -Wall -O2 -march=armv5te -mtune=arm946e-s -fomit-frame-pointer -ffast-math -mth
umb-interwork -I/c/devkitPro/ProjetNintendoDS/TestUlib/include -I/c/devkitPro/Pr
ojetNintendoDS/TestUlib/build -I/c/devkitPro/libnds/include -I/c/devkitPro/libnd
s/include -I/c/devkitPro/ProjetNintendoDS/TestUlib/build -DARM9 -fno-rtti -fno-e
xceptions -c /c/devkitPro/ProjetNintendoDS/TestUlib/source/main.cpp -o main.o
c:/devkitPro/ProjetNintendoDS/TestUlib/source/main.cpp: In function 'int main()'
:
c:/devkitPro/ProjetNintendoDS/TestUlib/source/main.cpp:28: error: invalid conver
sion from 'const u8*' to 'const char*'
c:/devkitPro/ProjetNintendoDS/TestUlib/source/main.cpp:28: error:   initializing
 argument 1 of 'UL_IMAGE* ulLoadImageFilePNG(const char*, int, int, int)'
make[1]: *** [main.o] Error 1
make: *** [build] Error 2

C:\devkitPro\ProjetNintendoDS\TestUlib>pause
Appuyez sur une touche pour continuer...

Le code du main.cpp compile parfaitement si je renomme le main.cpp en main.c...

Aidez-moi s'il vous plaît.
Merci D'Avance.
Au Revoir.
Journalisée

Non non mais ça rapelle vraiment de bon souvenirs :
http://www.youtube.com/watch?v=rGDiO1G0-K0
Copper Hors ligne
Mega Member
***
Messages: 1296


Voir le profil
« Réponse #21 : 27 Octobre 2009, 07:57:58 »

Ah ben oui effectivement il y a une différence signé / non signé

En fait je pense qu'il faut remplacer (void*) par (const char*)
Journalisée
Happy Hors ligne
Full Member
***
Messages: 105


Voir le profil
« Réponse #22 : 27 Octobre 2009, 12:29:40 »

Rebonjour tout le monde, merci Cooper, ça compile parfaitement avec le main.cpp^^
Merci beaucoup^^

J'ai des questions(désolé Tongue) :

1) A quoi ça sert de mettre des "(void*)" ou "(const char*)" et d'autre types de variables devant un paramètre de fonction?

2) Mon Tails s'affiche sur les deux écrans, il n'y aurai pas un moyen de le faire s'afficher que sur un écran?

3) Mon texte s'affiche sur les deux écrans, il n'y aurai pas un moyen de le faire s'afficher que sur un écran?

Merci encore Cooper, et les autres qui ont esseillé de m'aider.

Aidez-moi s'il vous plaît.
Merci D'Avance.
Au Revoir.
Journalisée

Non non mais ça rapelle vraiment de bon souvenirs :
http://www.youtube.com/watch?v=rGDiO1G0-K0
t4ils Hors ligne
Branleur
Elite Member
**
Messages: 962


Voir le profil WWW
« Réponse #23 : 27 Octobre 2009, 15:20:41 »

2) et 3) : ulInitDualScreenMode(); n'y serait-il pas pour quelque chose ?
Journalisée

Le codage amateur ? Parce que je le veux bien.
morukutsu Hors ligne
Sr. Member
****
Messages: 499


Voir le profil
Noctambule

« Réponse #24 : 27 Octobre 2009, 17:53:27 »

Citation
2) Mon Tails s'affiche sur les deux écrans, il n'y aurai pas un moyen de le faire s'afficher que sur un écran?

3) Mon texte s'affiche sur les deux écrans, il n'y aurai pas un moyen de le faire s'afficher que sur un écran?

ulGetMainLcd() te permet de savoir sur quel écran tu dessines actuellement.
Suffit de faire un test dessus, si c'est vrai on affiche, sinon on affiche pas.
Journalisée
Happy Hors ligne
Full Member
***
Messages: 105


Voir le profil
« Réponse #25 : 27 Octobre 2009, 18:44:54 »

A ok, merci beaucoup morukutsu^^, j'ai fait un teste mais bon, les résulatats ne sont pas parfaits..., de toute façon, dans mon projet(voir plus bas), il y a une condition avec la fonction dont tu viens de me parler, normalement Tails devrait s'afficher sur l'écran du bas, or, il s'affiche sur celui du haut, l'écran du bas de son côté est tout blanc, alors que j'ai fait un "ulDrawGradientRect" sur les deux écrans(dans la condition)...

Ok, j'ai retiré la fonction dual, et tout s'affiche sur l'écran du bas(à l'émulateur), l'écran du haut reste tout blanc Smiley , merci beaucoup à toi aussi^^ t4ils, maintenant, j'ai une autre question( Tongue) :

1) Comment afficher :
    - Un Background, c'est tout simplement une grande image en format 256X192, mais il n'y aura pas de rose magenta sur cette image, j'ai déjà esseillé, ça compile mais soit l'image ne s'affiche pas sur l'émulateur, soit elle est très mal affichée...
Vous me parlerez surement du "UL_PF_PAL4"(16 couleurs) dans la fonction "ulLoadImageFilePNG" à remplacer par "UL_PF_PAL8"(256 Couleurs), mais toujours pareil, je met mon projet si dessous, vu que ce n'est pas un code d'erreur, voila mon projet, l'image 256X192 sera dans le dossier data : http://www.megaupload.com/?d=Y9MP49VK

Aidez-moi s'il vous plaît.
Merci D'Avance.
Au Revoir.

« Dernière édition: 27 Octobre 2009, 19:14:17 par Happy » Journalisée

Non non mais ça rapelle vraiment de bon souvenirs :
http://www.youtube.com/watch?v=rGDiO1G0-K0
Campanile Hors ligne
Elite Member
**
Messages: 925


Voir le profil WWW
sic

« Réponse #26 : 27 Octobre 2009, 20:25:55 »

Les textures doivent avoir une taille en puissance de 2. Essai 256x256.
Journalisée

L'expérience, c'est ni plus ni moins qu'une petite quantité d'information qui aurait été fort utile quelques secondes avant qu'on l'apprenne...
Happy Hors ligne
Full Member
***
Messages: 105


Voir le profil
« Réponse #27 : 27 Octobre 2009, 21:32:05 »

J'ai une images que j'ai faites sous photoshop, elle sort bien, mais il y des points blancs à certains endroits...
Ouai, certaines images s'affichent bien, d'autres non..., je rappelle que j'esseille d'afficher un Background, enfin, vu qu'en ulib tout est considéré comme image, on va dire que j'esseille d'afficher une image qui remplit tout l'écran, une image à une couleur format PNG 256X256 s'affiche parfaitement, mais quand il y a beaucoup de couleurs^^...

Morukutsu, j'ai réussi à utiliser ta technique, mais j'ai du remettre le dual screen^^
Mais c'est impécable si je peux choisir d'afficher sur tel ou tel écran^^

Aidez-moi s'il vous plaît.
Merci D'Avance.
Au Revoir.
« Dernière édition: 28 Octobre 2009, 00:11:50 par Happy » Journalisée

Non non mais ça rapelle vraiment de bon souvenirs :
http://www.youtube.com/watch?v=rGDiO1G0-K0
morukutsu Hors ligne
Sr. Member
****
Messages: 499


Voir le profil
Noctambule

« Réponse #28 : 28 Octobre 2009, 04:33:12 »

Essaie de faire un png avec des couleurs indexées en faisant exporter une copie optimisée ou un truc comme ça sous toshop. Comme ça, lors du chargement, l'ulib n'aura pas à recalculer la palette. Cela évite les problèmes de points blancs dont tu parles.

Citation
Morukutsu, j'ai réussi à utiliser ta technique, mais j'ai du remettre le dual screen^^
Mais c'est impécable si je peux choisir d'afficher sur tel ou tel écran^^
Attention, en dual screen tu passes à 30fps Wink
Journalisée
Happy Hors ligne
Full Member
***
Messages: 105


Voir le profil
« Réponse #29 : 28 Octobre 2009, 17:29:11 »

Oui, ce n'est pas mal 30 FPS, de toute façon, vu que j'utilise la µlib sur les deux écrans^^

C'est bon, j'ai pu optimiser sous image ready et les points blanc ont disparu, j'ai indexé et ça à l'air d'aller^^

Merci beaucoup^^

Encore des questions( Tongue , juste celle si, et ensuite je vais esseiller d'utiliser le µlib avec efs...) :

1) Question priorité de sprite ou d'image vu que tout est une image sous ulib, comment dire qu'un sprite va s'afficher derrière ou devans un autre?
Alors j'ai pu comprendre que les images affichées plus récement s'afficheront devans celle affichées avant, c'est ça?

2) Il y aurait-il un moyen de changer la police et la taille d'écriture?

3) Pour les couleur, c'est en RBG15, c'est jusqu'à 31, il y aurait-il un moyen pour que ça soit jusqu'à 255?

4) Sous photoshop, j'ai un fond rose magenta, je dessine un nuage(ou une autre forme personnalisée) sur le fond magenta, quand j'affiche l'image, j'ai du rose sur la DS, ce qui veut dire qu'entre la forme personnalisée et le fond, il y a un autre rose... il y aurait-il un moyen de juste avoir le rose magenta et la couleur de la forme personnalisé, comme ça on aurait pas eu de rose sur la DS... j'espère que vous comprenez se que j'esseille de dire...

5) Existerai-t-il un équivalent en µlib de la fonction PASetBrigtness(désolé de l'orthographe j'ai tappé comme ça...)?

P.S : Quelqu'un n'aurai pas un projet(ou une copie, on ne voudra surment pas me donner le code source Tongue) toute faites µlib + EFS? Avec, ... les fonctions toute faites?...(je suis vraiment nul pour ces choses là...)

Aidez-moi s'il vous plaît.
Merci D'Avance.
Au Revoir.
« Dernière édition: 28 Octobre 2009, 19:27:50 par Happy » Journalisée

Non non mais ça rapelle vraiment de bon souvenirs :
http://www.youtube.com/watch?v=rGDiO1G0-K0
Pages: 1 [2] 3   Haut de page
Imprimer

Aller à: