GriGri Posté(e) le 29 juin 2006 Posté(e) le 29 juin 2006 Salut all Mon environement pour la prog. psp : ( cygwin + pspsdk + Oslib ) + (C++ 2005 Express Edition Beta) voila je voudrai avoir le bout de code ( je sais pas comment sa s'appelle en C++ ) pour afficher un fond ( une image.png ) dans mon homebrew , j'ai essayer plusieur technique mais sa marche pas voivi le code qui marche pas : //La librairie principale OSLib #include <oslib/oslib.h> //les callbacks PSP_MODULE_INFO("OSLib Sample", 0, 1, 1); PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU); //definition des pointeurs vers nos images OSL_IMAGE *fond, *chrono; int main() { //Initialisation de la librairie oslInit(0); //Initialisation du mode graphique oslInitGfx(OSL_PF_8888, 0); //Initialisation de la console texte oslInitConsole(); //affiche sur l'écran du texte oslPrintf("voici l'homebrews qui permet d'afficher l'image\n PUNCH X"); //attend l'appui sur une touche oslWaitKey(); //Initialisation de la console texte oslInitConsole(); //Initialisation du mode graphique oslInitGfx(OSL_PF_8888, 1); //chargement de nos images (oui, le "loading" :p) fond = oslLoadImageFile("fond_zora.png", OSL_IN_RAM, OSL_PF_5551); //attend l'appui sur une touche oslWaitKey(); //Fin du dessin oslEndDrawing(); //on quitte l'application oslEndGfx(); oslQuit(); return 0; } et aussi un bout de code pour quitter l'homebrew en appuyant sur triangle /\ je connais selui pour quitter on appuyant sur n'importe quelle touch : //attend l'appui sur une touche oslWaitKey(); //on quitte l'application oslEndGfx(); oslQuit(); return 0; MERCI A TOUS CEUX QUI M'AIDERONT
aurelien94 Posté(e) le 30 juin 2006 Posté(e) le 30 juin 2006 (modifié) Oula !! Ton code est super faux !!! Je sais pas ou tu as sorti ca mais bon Alors déja le langage c'est du C ( pas C++ ) Tes fautes : - Tu initialise 2 fois le mode graphique(ainsi que la console) ( et pas de la mm facon la presence active le double buffering) - tu as mis oslEndDrawing(); pour terminer de dessiner mais tu n'as meme pas commencer à dessiner ! -tu lui demande null part de dessiner -la console ne sert qu'a écrire du texte ne l'utilise pas si ce n'est que pour afficher une image !!! -tu déclares un pointeur chrono que tu n'utilises pas (fait attention la psp n'a pas autant de ram que ton pc ) l'image que tu essai de lire est fond_zora.png donc l'image doit etre dans le mm dossier (dans ta psp) Pour t'aider voici le code correct pour afficher une image et quitter des qu'on appuie sur triangle //La librairie principale OSLib#include <oslib/oslib.h>//les callbacksPSP_MODULE_INFO("OSLib Sample", 0, 1, 1);PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);//definition des pointeurs vers nos imagesOSL_IMAGE *fond;int main(){ //Initialisation de la librairie oslInit(0); //Initialisation du mode graphique oslInitGfx(OSL_PF_8888, 1); //chargement de nos images (oui, le "loading" :p) fond = oslLoadImageFile("fond_zora.png", OSL_IN_RAM, OSL_PF_5551); //boucle principale while (! osl_keys->held.triangle) //tant que triangle n'est pas appuyé { //Permet de dessiner oslStartDrawing(); //Lit les touches oslReadKeys(); //dessine ton image oslDrawImage(fond); //Fin du dessin oslEndDrawing(); //Synchronise l'écran oslSyncFrame(); } //on quitte l'application oslEndGfx(); oslQuit(); return 0;} Le code fonctionne je l'ai testé Modifié le 30 juin 2006 par aurelien94
GriGri Posté(e) le 30 juin 2006 Auteur Posté(e) le 30 juin 2006 (modifié) Merci à toi , je galèrer a essayer d'afficher un fond EDIT ; comment on fait pour afficher l'icone de la batteri ( pour savoir le niveau de la batteri ) si ce n'est pas trop demander :fouf: merci Modifié le 30 juin 2006 par GriGri
GriGri Posté(e) le 1 juillet 2006 Auteur Posté(e) le 1 juillet 2006 (modifié) MOUHA HA HA et comment inséré un background.jpg dans ce bout de code ? ( c'est l'intérface de devhook , ses la dedans quand peut modifier la couleur d'écriture et tout .. ) /* user interface*/#include "common.h"/////////////////////////////////////////////////////////////////////////////// UI/////////////////////////////////////////////////////////////////////////////int get_key(void){ SceCtrlData pad; unsigned int button; //sceCtrlReadBufferPositive(&pad, 1); sceCtrlReadBufferPositive((SceCtrlData *)(&pad), 1); button = pad.Buttons & ALL_CTRL; return pad.Buttons;}int wait_key(void){ int key; while(1) { if(!( get_key() & SENSE_KEY)) break; sceKernelDelayThread(20000); } while(1) { if( (key=get_key()) & SENSE_KEY) break; sceKernelDelayThread(20000); } return key;}/////////////////////////////////////////////////////////////////////////////// select ITEM/////////////////////////////////////////////////////////////////////////////int selitem(int sx,int sy,const char **list,int def){ int max_sel; int sel; int i , key; int delta;// int max_len;// max_len = 0; for(max_sel=0;list[max_sel];max_sel++) {// if(strlen(list[max_sel]) > max_len)// max_len = strlen(list[max_sel]); } // centering sel = def; delta = 0; while(1) { for(i=0;i<max_sel;i++) { if(list[i][0] != 0x00) { // centering int x = sx ? sx : (60 - strlen(list[i]))/2; if(x<0) x=0; pspDebugScreenSetXY(x,sy+i); //pspDebugScreenSetXY(sx,sy+i); if(def<0) { pspDebugScreenSetTextColor(0); pspDebugScreenSetBackColor(0); } else { //definition des pointeurs vers nos images OSL_IMAGE *fond; //dessine ton image oslDrawImage(fond); pspDebugScreenSetTextColor(0xffffff); pspDebugScreenSetBackColor( (i==sel) ? 0x40ff40 : 0xc02020); fond = oslLoadImageFile("fond_zora.png", OSL_IN_RAM, OSL_PF_5551); } pspDebugScreenPrintf(list[i]); } } // finish? if(def<0) break; while( (get_key() & (PSP_CTRL_UP|PSP_CTRL_DOWN|PSP_CTRL_CIRCLE|PSP_CTRL_TRIANGLE))!=0) sceKernelDelayThread(20000); def = sel; delta = 0; while( (def==sel) && (delta==0) ) { key = get_key(); if(key & PSP_CTRL_UP) delta = -1; if(key & PSP_CTRL_DOWN) delta = +1; if(key & PSP_CTRL_CIRCLE) def = -1; if(key & PSP_CTRL_TRIANGLE) def = -2; sceKernelDelayThread(20000); } // change next select do { sel += delta; if(sel>=max_sel) sel = 0; else if(sel<0) sel = max_sel-1; }while(list[sel][0] == 0x00); } pspDebugScreenSetXY(sx,sy); pspDebugScreenSetTextColor(0xffffff); pspDebugScreenSetBackColor(0); if(def==-2) return -1; // cancel return sel;}SceIoDirent g_dir;char *add_file_list(const char *dir_path,char **file_list,char **full_list,char *buf,char *ext){ int fd; char *ptr = 0; // search end of list while(*file_list) { file_list++; full_list++; } fd = sceIoDopen(dir_path);//printf("dopen fd %08X\n",fd); if(fd >= 0) { while(sceIoDread(fd, &g_dir) > 0) { if((g_dir.d_stat.st_attr & FIO_SO_IFDIR) == 0)// if((g_dir.stat.mode & FIO_SO_IFDIR) == 0) { ptr = strchr(g_dir.d_name,'.');// ptr = strchr(g_dir.name,'.'); if(ptr) { ptr++; // cmp extend if( (ptr[0]|0x20)==(ext[0]|0x20)&& (ptr[1]|0x20)==(ext[1]|0x20)&& (ptr[2]|0x20)==(ext[2]|0x20) ) {// sprintf(buf,"%s/%s",dir_path,g_dir.name); sprintf(buf,"%s/%s",dir_path,g_dir.d_name); *full_list++ = buf; *file_list++ = buf + strlen(dir_path) + 1; buf += strlen(buf)+1; } } } } sceIoDclose(fd); } // EOF *file_list = 0; *full_list = 0; //Fin du dessin oslEndDrawing(); //Synchronise l'écran oslSyncFrame(); return buf;} si c'est posible Modifié le 1 juillet 2006 par GriGri
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant