PDA

Voir la version complète : [PSP][Aide] Charger la meme image a chaque appel de la fonction


Albandu51
10/02/2008, 13h00
bonjour,
Voila j'ai un probleme !
Je suis entrain de programmer un projet xD' !
Et enfete mon programme telecharge differente image a different moments !

Et l'image se nomme screen.png et se met a coté de l'eboot
Et je veux que ma fonction charge a chaque fois a nouveau screen.png et l'affiche !

Donc je procede comme çà :


OSL_IMAGE *screen;

void preview()

{

screen = oslLoadImageFile("screen1.png", OSL_IN_RAM| OSL_SWIZZLED, OSL_PF_5551);



int continuer = 1;



panneau->x = 310;
panneau->y = 142;


while (continuer)

{



sceCtrlReadBufferPositive(&pad, 1);

sceCtrlPeekBufferPositive(&pad, 1);
oslStartDrawing();


oslDrawImage(screen);
oslDrawImage(panneau);




//Fin du dessin
oslEndDrawing();

//Synchronise l'écran
oslSyncFrame();

}



}


Mais le probleme c'est que ma psp freeze

J'aimerai bien savoir comme y remedier , merci :bave:

Brunni
10/02/2008, 15h26
Si elle freeze c'est sûrement parce que le fichier n'a pas été trouvé. Il faut tester si une image a pu être chargée avant de l'utiliser, comme dans les exemples ;)
N'oublie pas non plus qu'il faut supprimer une image quand tu as fini avec! Ici tu vas à chaque appel créer une nouvelle image sans jamais effacer l'autre, du coup tu ne vas plus avoir de mémoire après un moment...

Albandu51
11/02/2008, 00h36
Oui je sais çà !

mais quand je charge cette image au debut dans ma fonction init elle marche quand je l'appelle dans la fonction preview !
Mais des que je la charge dans le fonction preview et ba sa freeze !
APres je me doute qu'il faut la supprimé mais meme normalement sa devrait marché je ne comprend pas pourquoi xD' !

Vous n'avez pas une tite idée :bave:

Yodajr
11/02/2008, 03h34
+1 sur le test à chaque chargement de fichier, ça coute rien et ça économise des plantages bêtes.

Puis ça veut dire quoi "elle freeze" ?
Car là le code que tu nous poste bloque effectivement la console dans une boucle while sans fin...
Plus de détails seraient appréciables...

PS : et please, un petit effort sur l'orthographe, et au pire sur la ponctuation : essaye de lire à voix haute ce que tu as écrit, tu verra que c'est relativement difficile à comprendre.

Albandu51
12/02/2008, 14h00
Bonjour,

Veuillez m'escuser de mon orthographe.

Donc voici une partie de mon code , où le programme freeze ( Freeze = la psp s'eteint au bout de 30s et pendant c'est 30s je ne peux rien faire ! )

void preview()

{



if (screen != NULL) {
oslDeleteImage(Screen);
//L'image a été effacée, elle n'existe plus, donc NULL
Screen = NULL;
}

Screen = oslLoadImageFile("screen.png", OSL_IN_RAM| OSL_SWIZZLED, OSL_PF_5551);

screen();


}


void screen()
{


int continuer = 1;



panneau->x = 310;
panneau->y = 142;




while (continuer)

{



sceCtrlReadBufferPositive(&pad, 1);
sceCtrlPeekBufferPositive(&pad, 1);

oslStartDrawing();
oslDrawImage(Screen);
oslDrawImage(panneau);


if(pad.Buttons & PSP_CTRL_CIRCLE) menudl();

switch (pad.Buttons)

{

case PSP_CTRL_CROSS :
image = 1;

switch (theme)

{

case 1 :

sceKernelDelayThread(60000);

strcpy(url,"http://albandu51.fr/ptf/ActuMacOs.ptf");
strcpy(fin,"ms0:/psp/theme/ActuMacOs.ptf");
download();

break;
case 2 :

sceKernelDelayThread(60000);

strcpy(url,"http://albandu51.fr/ptf/ActuRed.ptf");
strcpy(fin,"ms0:/psp/theme/ActuRed.ptf");
download();

break;
case 3 :

sceKernelDelayThread(60000);

strcpy(url,"http://albandu51.fr/ptf/allutheme.ptf");
strcpy(fin,"ms0:/psp/theme/allutheme.ptf");
download();

break;
case 4 :

sceKernelDelayThread(60000);

strcpy(url,"http://albandu51.fr/ptf/BlackGlossyOriginal.ptf");
strcpy(fin,"ms0:/psp/theme/BlackGlossyOriginal.ptf");
download();

break;

}

break;

}

//Fin du dessin
oslEndDrawing();

//Synchronise l'écran
oslSyncFrame();

}



}


Et enfete quand j'apelle la fonction preview(); et ba sa crash ! :snif2:
Merci de votre aide. ;)
Albandu51

Arialia
12/02/2008, 14h35
Je ne connais pas du tout la programmation PSP mais des choses m'intriguent :

ta fonction download affiche-t-elle la progression du chargement ?

Je pense que cela doit être comparable à la DS, moi j'aurais fais plutôt :

oslStartDrawing();
oslDrawImage(Screen);
oslDrawImage(panneau);
//Fin du dessin
oslEndDrawing();

//Synchronise l'écran
oslSyncFrame();

if(pad.Buttons & PSP_CTRL_CIRCLE) menudl();

switch (pad.Buttons)

{

case PSP_CTRL_CROSS :
image = 1;

switch (theme)

{

case 1 :

sceKernelDelayThread(60000);

strcpy(url,"http://albandu51.fr/ptf/ActuMacOs.ptf");
strcpy(fin,"ms0:/psp/theme/ActuMacOs.ptf");
download();

break;
case 2 :
....



ce qui permets au programme de déjà afficher ton écran avant les téléchargements ...

Il va de soi que la fonction download doit avoir son propre système d'affichage pour prévenir l'utilisateur du téléchargement en cours et de sa progression .... ^^

Albandu51
12/02/2008, 14h45
Oui mais la la fonction download(); se lance que si on appuye sur croix.
Apres ma fonction donwload elle affiche juste donwload en cours , et donwload fini.

Je pense guere que le probleme vien de là , apres je ne suis pas sure :p

Yodajr
12/02/2008, 17h05
Tu met plus de code, mais rien qui avance le smilblick :p
Par exemple, tu affiche une image "panneau" mais tu montre pas que tu la charge.

Et de nouveau, ça t'aidera peut être pas sur ce coup mais ne fait pas l'économie d'un test si l'image a bien été chargée, ça te coute rien du tout :

Screen = oslLoadImageFile("screen.png", OSL_IN_RAM| OSL_SWIZZLED, OSL_PF_5551);
if (!Screen) oslDebug("Impossible de charger un ou plusieurs fichiers. Verifiez que tous les fichiers sont bien copiés dans le répertoire du jeu.");

Albandu51
12/02/2008, 18h10
Re :bave:


Pour toute mes images sauf l'image "screen" je les charge juste apres l'iniation de la librairie oslib !

il y a juste l'image screen que je charge pendant mon jeu !
Mais se qui est vraiment bizarre, c'est que si je la charge avec les autre au tout debut ,et que je l'affiche dans ma fonction preview, tout marche !

Mais vu que screen.png change a des moments , je veux l'effacer et recharger a nouveau l'image a l'apelle de la fonction preview . Vous me suivez ?

Mais normalement mon code devrait marché ? non ?

Apres aussi mais je pense pas que ceci joue a role dans se smilblick :D
C'est que quand l'image est demandé d'etre chargé dans la ram dans ma fonction preview , le wifi est en marche mais cela n'a rien a voir :huh: ?

Merci de m'aider :P
Alban.


Ps: La ponctutation et l'orthographe c'est bon ? :bave:

Yodajr
12/02/2008, 18h59
Mais vu que screen.png change a des moments
Comment ça il change ? :huh:

Albandu51
12/02/2008, 19h36
Car je suis entrain de crée un installateur de theme ptf !

Donc j'ai mon menu où on choisit les thèmes puis le fichier screen.png du thème correspondant , et a chaque fois qu'on choisit un thème le fichier screen est remplacé par le nouveau.

C'est pour sa :D !

La base de mon programme est faite ! j'arrive a installer et a telecharger mes themes a partir de mon menu et aussi a telecharger le fichier screen de chaque theme ! Mais j'ai voulu l'amelioré et j'ai pensé que quant ont chosit un theme dans le menu , alors sa telecharge l'image screen.png du theme correspodant et la met a coté de l'eboot , et apres que l'image soit téléchargé , le screen s'affiche et qu'un panneau en bas a droite affiche x:l'installer et O: retour .

Mais voila que ce probleme arrive xD
C'est pour çà j'ai besoin de vous pour m'aidé :bave:


J'espere m'avoir bien expliqué, désolé mais l'orthographe c'est pas mon fort :snif2:

Merci a vous :p

Ps: J'aimerais bien que quelqu'un me montre un exemple ( qui marche :bave: ) faisant comme je voudrais faire sur mon programme. Donc chargé tous le temps une image a l'apelle du fonction , pour moi mon code était bon :cry: donc j'ai besoin de vous :-'

Yodajr
12/02/2008, 19h56
J'ai mon idée, mais si tu ne fait pas ce que je te dit, ça n'ira pas.

Albandu51
12/02/2008, 22h59
Peux tu me dire ton idée ? :bave:

J'ecoute grandement se que tu me dis ! ;)

Yodajr
13/02/2008, 00h05
Bah tu as mis le test que je te rabâche depuis quelques posts ?
Ca te met le message d'erreur ou pas ?

Albandu51
13/02/2008, 00h29
Avec ou sans la psp freeze ! puis s'eteint :blink:


EDIT:

J'ai mis "NULL" comme valeur de depart a mon image Screen et maintenant le message d'erreur s'affiche !

Comment y remedier car pourtant normalement l'image doit se chargé ! En plus mon image existe bien !


Voici mon code:
void preview()

{



if (Screen != NULL) {
oslDeleteImage(Screen);
//L'image a été effacée, elle n'existe plus, donc NULL
Screen = NULL;
}

Screen = oslLoadImageFile("screen.png", OSL_IN_RAM| OSL_SWIZZLED, OSL_PF_5551);
if (!Screen) oslDebug("Impossible de charger un ou plusieurs fichiers. Verifiez que tous les fichiers sont bien copiés dans le répertoire du jeu.");

screen();


}

Yodajr
13/02/2008, 00h59
Si t'as le message, c'est que le fichier ne s'est pas chargé, que tout simplement la PSP ne l'a pas trouvé.
Ton programme ne fait aucune manipulation sur ce fichier avant cette fonction preview ? si oui désactive.
Si non, je sais pas, vérifie la case dans le nom : "screen.png", "SCREEN.PNG", "screen.PNG" noment le même fichier sous windows mais sont 3 fichiers différents pour la PSP par exemple.

Albandu51
13/02/2008, 18h25
D'accord je vais essayé !

Mais est-ce normal , que quand le message d'erreur "Impossible de charger un ou plusieurs fichiers. Verifiez que tous les fichiers sont bien copiés dans le répertoire du jeu." s'affiche que je ne puisse pas faire X pour continuer ou Triangle pour quitter ?
La psp affiche le message mais 20 seconde apres , la psp s'eteint <_<

Albandu51
17/02/2008, 13h18
Up !

Bonjour

Personne peut vraiment m'aidé ?

Comment fairiez-vous pour chargé une image et l'affiché a chaque appelle de la fonction ?


Car j'ai vraiment besoin de faire çà dans mon programme.

Merci. :snif2:

Albandu51
27/02/2008, 20h55
Bonjour,
Juste pour dire que pour resoudre le probleme je susi passé a la libpng juste pour l'afficahge de cet image xD' !

Voila

Albandu51
03/06/2008, 20h36
Bonjour !

voila j'ai reussi a resoudre mon probleme ! Enfete c'est que mes fonctions principales se passaient dans un thread ! Et dans se thread il mettait impossible de charger une image avec l'oslib ! Donc apres avoir fait en sorte que mon programme tourne sans le thread tout va pour le mieux et mon programme n'a plus aucun bug :D !