Jump to content

ModChip France

Le kit Xecuter SX Pro va vous permettre de lancer le MODE RCM de la console, une licence pour le CFW à installer sur la console. Pas besoin d'ouvrir la console Nintendo Switch ni besoin de souder. Vous pourrez ainsi avec ce pack, lancer vos copies de jeux Nintendo Switch.
Acheter Maintenant

Jeux-Linker France

Xecuter SX Pro OS de la Team Xecuter vous permet de modifier votre Nintendo Switch, vous pouvez profiter des custom firmwares sur toutes les versions de la Switch et il est région free. Pré commander ce linker sur leur site, paypal supporté !
Acheter Maintenant

Atmosphere 0.8.10 disponible

Le CFW Atmosphere vient de se mettre à jour vers la v0.8.10 par le développeur SciresM et celle-ci apporte le support des langues des jeux à par défaut et un sysmodule de démarrage (boot) pour préservé l'AutoRCM lors de la réparation NAND.

Changelog complet ci-dessous :

Read more...

Easy Downgrader/Updater for PS Vita de la Team ONElua (MAJ)

La Team ONElua libre à la scène PSVita un tout nouveau homebrew qui va vous facilité la tache pour le downgrade et la mise à jour de votre PSVita sans passé par un PC. Easy Downgrader/Updater pour la PS Vita va télécharger le firmware de votre choix parmi ces versions 3.60, 3.65 et 3.68 (nécessite internet), installer Moduru, h-encore ou encore Enso v1.1 des version 3.60 et 3.65. Tout ça sans passé par un PC.

En bonus, un Menu Extra qui vous aidera à installer Memecore ou restauré les sauvegardes de Memecore ou h-encore.

N'oubliez pas de toujours chargé la batterie de votre console à au moins 70% (50% max pour utilisé Moduru).
Plus d'info, suivre le lien Github
MAJ v1.03

Read more...

FIFA MOD RETRO v1 par Jesussdiaz

Nous avons plus une nouvelle version de FIFA depuis FIFA 15 mais Salvador Díaz alias jesussdiaz essaie de remonter le moral des joueurs de Fifa sur la PSVita, après la version de FIFA 19 ESP/ENG, il nous livre aujourd'hui la v1 de FIFA MOD RETRO

Ce mod va vous permettre de jouer à FIFA avec les anciens joueurs comme KAKA à Milan AC accompagné de Seedorf et Inzaghi, Fernando Torres de Liverpool accompagné de Steeven Gerrard et bien d'autres. Jouer avec vos joueurs préférés dans leurs clubs qui vous ont fait rêvé...

Pour profiter de ce mod, il vous faut le dump propre de votre cartouche de FiFA 15 (PCSE00483) puis appliqué le patch dessus et à installer avec MaiDump.
Procédure d'installation et téléchargement, clicker sur l'image ci-dessous :

 
Read more...

News Switch

Etant peu là c'est derniers temps, quelques news switch pas toutes très fraiches.
 
Reicast

Vous ne rêvez il s'agit bien d'un émulateur Dreamcast pour Switch, celui-ci est développé par davidgf, il s'agit d'une version tenant pour le moment plus du POC mais il y a fort à parier que celui-ci va progresser rapidement.
Il faudra récupérer le bios (dc_bios.zip) et suivre l'arborescence suivante à la racine de votre carte SD :
Le fichier reicast.nro doit être placées dans le dossier switch sur votre carte SD.
Téléchargement

Source: https://gbatemp.net/threads/reicast-dreamcast-emulator-for-switch-horizon-alpha.538394/
 
SXDumper 2.0.3

La Team Xecuter vient de mettre à jour leur outil SX Dumper grace au travail de la Team WAIN, celui-ci permet maintenant de dumper vos DLC, d'autres fonctionnalités sont aussi présentes, plus d'infos dans le changelog :
Téléchargement

 
NSC Builder

Une nouvelle version de Nsc Builder est disponible, celui-ci est développé par julesontheroad, il vous permettra de créer vos propres XCI ou NSP.
Deux versions ce sont enchainées et voici les changelogs :
v0.85b
v0.85
Téléchargement

Read more...

SNES Classic Mini Beta5 disponible

Depuis la beta1, Brandon Sellers ne dort presque plus et enchaine la sortie des beta de son homebrew Snes Classic Mini et qui passe en beta5. Des améliorations sont grandiose et l'homebrew porte maintenant le nom du SNES Classic avec son propre icône du menu.

L'interface de l'homebrew ressemble maintenant bien a celle d'une vrai SNES Classic car nous avons le son du menu et de la sélection des jeux qui peut aussi être personnalisable, le curseur animé lorsque vous défilé la liste des jeux ainsi que le défilement du papier peint qui réagit au déplacement du carrousel des jeux. La nouvelle version apporte juste le support de plusieusr langue ainsi que le Japonnais qui causait tant de soucie.
Changelog :

Des versions NSP ont été crée par NEOGEOKAI pour lancer l'homebrew via le menu de la console :
       
           SNES Classic Edition.nsp              Super Famicom Classic Edition.nsp
Read more...

Chatbox - 961 Messages. Spammers: MCBots (430) . b&nder (218) . Red-j (107) .

Load More
    You don't have permission to chat. You must participate at least once in the Forum to have access
    Sign in to follow this  
    Red-j

    Code source commenté de Cobra Installer 7.50

    Recommended Posts

    Apprendre en lisant le code des autres est très instructif permet de voir les procéder et les façons de faire de chacun, mes codes sont loin d'être parfait mais ils font leur boulot ;)

    Je vous partage aujourd’hui le code source complet de mon homebrew Cobra installer réaliser avec la librairie SDL pour PS3.

    Fonction de l'homebrew installer/restaurer les fichiers payload cobra 7.50 sur firmware 4.81

    in-ps3-cobra-750-installer-habib-1.jpg

    Il est commenté un maximum pour que vous puissiez réutiliser des parties de codes si besoins :)

    Partie intéressantes évoquées dans ce code: appels des fonctions syscalls, écriture sur le dev_flash(danger), copie de fichiers,check firmware,check type de console,backup/restauration de fichiers,utilisation de SDL pour gérer la partie graphique.

    Il se compile avec PSDK3v2 de Estwald et nécessite le ficher psn_package_npdrm.exe (non fourni car copyright)

    Pack de l'homebrew: http://rgho.st/7yWj6TZT9

     

    main.cpp:

    /*
     * ----------------------------------------------------------------------------
     * "LICENCE BEERWARE" (Révision 42):
     * Red-J a créé ce fichier. Tant que vous conservez cet avertissement,
     * vous pouvez faire ce que vous voulez de ce truc. Si on se rencontre un jour et
     * que vous pensez que ce truc vaut le coup, vous pouvez me payer une bière en
     * retour.
      	__________           .___             ____.
       	\______   \ ____   __| _/            |    |
    	|       _// __ \ / __ |   ______     |    |
    	|    |   \  ___// /_/ |  /_____/ /\__|    |
    	|____|_  /\___  >____ |          \________|
       		\/     \/     \/                    
     * ----------------------------------------------------------------------------
     */
    #include <stdio.h>
    #include <stdarg.h>
    #include <stdlib.h>
    #include <string.h>
    #include <malloc.h>
    
    #include <ppu-lv2.h>
    #include <io/pad.h>
    #include <fcntl.h>
    #include <sys/file.h>
    #include <sysutil/msg.h>
    #include <sysutil/sysutil.h>
    
    #include "copy.h"
    #include "syscalls.h"
    #include <SDL/SDL.h>
    #include <SDL/SDL_timer.h>
    #include <SDL/SDL_image.h>
    #include <SDL/SDL_ttf.h>
    #include <io/pad.h>
    
    
    
    #define SUCCESS 0
    #define FAILED -1
    
    #define SC_SYS_POWER 					(379)
    #define SYS_REBOOT				 		0x8201
    
    
    #define	MENU 	"/dev_hdd0/game/COBJ75011/USRDIR/menu.bmp"
    
    
    int sys_get_version(u32 *version)
    {
    	lv2syscall2(8, 0x7000, (u64) version);//////////////////////////////////////////
    	return_to_user_prog(int);
    }
    s32 lv2_get_target_type(u64 *type)
    {
    	lv2syscall1(985, (u64) type);
    	return_to_user_prog(s32);
    }
    
    s32 main(s32 argc, char* argv[])
    { 
    	u64 type;
    	lv2_get_target_type(&type);
    
        char version= 0;
    	char version2= 0;
    	char version3=0;
    	
    
        FILE *f = fopen("/dev_flash/vsh/etc/version.txt", "r");
    	
    	fseek(f, 9, SEEK_SET);
    	fscanf(f, "%c", &version);
    	fseek(f, 11, SEEK_SET);
    	fscanf(f, "%c", &version2);
    	fseek(f, 12, SEEK_SET);
    	fscanf(f, "%c", &version3);
    	
    
    		
    	padInfo2 joypadInfo;    //initialisation des parametres de la manette
    	padData joypadData;
    	ioPadInit(7);       
    	
    	
      ////////////////////////////////////////////
     //           Partie graphique			   //
    ////////////////////////////////////////////
    	SDL_Surface *ecran = NULL,*imagedefond = NULL,*imagedefond2 = NULL,*imagedefond3 = NULL,*aboutfnd = NULL,*about = NULL,*about2 = NULL,*about3 = NULL,*about4 = NULL,*about5 = NULL,*about6 = NULL,*aboutls = NULL,*TITLE = NULL,*texteUse = NULL,*texteUse2 = NULL,*ttype = NULL,*texteCROSS1 = NULL,*texteSQUARE1 = NULL,*texteCIRCLE1 = NULL,*texteTRIANGLE1 = NULL,*texteLR = NULL,*texteLR2 = NULL,*CROSS1 = NULL,*SQUARE1 = NULL,*CIRCLE1 = NULL,*TRIANGLE1 = NULL,*LR = NULL;
    	 /* initialisation des variables SDL à 0*/
    	
    	SDL_Rect position;
    	
    	TTF_Font *font = NULL;	// déclaration de la variable police de caractère 1
    	TTF_Font *font2 = NULL;	// déclaration de la variable police de caractère 2
    	SDL_Color colorwhite = { 255, 255, 255}; // déclaration de la variable couleur blanche SDL
    	SDL_Color colorred = { 255, 0, 0}; // déclaration de la variable couleur rouge SDL
    	//SDL_Color colorblue = { 0, 0, 255}; // déclaration de la variable couleur bleue SDL
        SDL_Init( SDL_INIT_EVERYTHING );// déclaration et Initialisation de la SDL principal
    	TTF_Init();// déclaration et Initialisation de la SDL ttf
    	ecran = SDL_SetVideoMode(1200,700,32,SDL_SWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN); //1200 ok
    //ecran = SDL_SetVideoMode(1024, 720, 32, SDL_SWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN); 	// definition de la resolution 
        imagedefond = SDL_LoadBMP(MENU);// déclaration de la variable imagedefond
    	imagedefond2 = SDL_LoadBMP("/dev_hdd0/game/COBJ75011/USRDIR/menu2.bmp");
    	imagedefond3 = SDL_LoadBMP("/dev_hdd0/game/COBJ75011/USRDIR/menu3.bmp");
    	aboutfnd = SDL_LoadBMP("/dev_hdd0/game/COBJ75011/USRDIR/about.bmp");
    	CROSS1 = SDL_LoadBMP("/dev_hdd0/game/COBJ75011/USRDIR/CROSS.bmp");// déclaration de la variable CROSS1
    	SQUARE1 = SDL_LoadBMP("/dev_hdd0/game/COBJ75011/USRDIR/SQUARE.bmp");// déclaration de la variable SQUARE1
    	CIRCLE1 = SDL_LoadBMP("/dev_hdd0/game/COBJ75011/USRDIR/CIRCLE.bmp");// déclaration de la variable CIRCLE1
    	TRIANGLE1 = SDL_LoadBMP("/dev_hdd0/game/COBJ75011/USRDIR/TRIANGLE.bmp");// déclaration de la variable TRIANGLE1
    	LR= SDL_LoadBMP("/dev_hdd0/game/COBJ75011/USRDIR/LR.bmp");
    	font = TTF_OpenFont("/dev_hdd0/game/COBJ75011/USRDIR/PS3.TTF", 24);// déclaration de la variable police de caractère "font" et de sa taille
    	font2 = TTF_OpenFont("/dev_hdd0/game/COBJ75011/USRDIR/PS3.TTF", 32);// déclaration de la variable police de caractère "font2" et de sa taille
    	
    	////////////TYPE DE CONSOLE//////
    	if(type==1)
    		{
    		
    		ttype = TTF_RenderText_Blended(font, " FW: CEx", colorwhite);
    		}
    	else if(type==2)
    		{
    		
    		ttype = TTF_RenderText_Blended(font, " FW: DEx", colorwhite);
    		}
    	else
    		{
    		
    		ttype = TTF_RenderText_Blended(font, " FW: DECR", colorwhite);
    		}
    
    	//////////////////////////////////////////////////////////////////
    	
    	TITLE = TTF_RenderText_Blended(font2, "COBRA INStALLER 7.50 HABIB", colorwhite);// déclaration de la variable TITLE
    	texteCROSS1 = TTF_RenderText_Blended(font, "INStALLER LES FICHIERS", colorwhite);// déclaration de la variable texteCROSS1
    	texteSQUARE1 = TTF_RenderText_Blended(font, "REStAURER LES FICHIERS", colorwhite);// déclaration de la variable texteSQUARE1
    	texteTRIANGLE1 = TTF_RenderText_Blended(font, "ABOUt", colorwhite);// déclaration de la variable texteTRIANGLE1
    	texteCIRCLE1 = TTF_RenderText_Blended(font, "QUIttER", colorwhite);// déclaration de la variable texteCIRCLE1
    	texteLR = TTF_RenderText_Blended(font, "CHANGER BACkGROUND", colorwhite);
    	texteLR2 = TTF_RenderText_Blended(font, "RETOUR", colorwhite);
    	texteUse = TTF_RenderText_Blended(font, "FIRMWARE rEBUG 4.81 UNIQUEMENt!!!", colorwhite);// déclaration de la variable texteUse
    	//texteUse2 = TTF_RenderText_Blended(font, "'custom' sur votre clef USB", colorwhite);// déclaration de la variable texteUse
    	about = TTF_RenderText_Blended(font2, "ABOUt", colorwhite);// déclaration de la variable texteUse
    	about2 = TTF_RenderText_Blended(font, "HOMEBREW CREE AVEC PSL1GHt V2", colorwhite);// déclaration de la variable texteUse
    	about3 = TTF_RenderText_Blended(font, "REMERCIEMENtS AUx MEMBRES QUI FONt ", colorwhite);// déclaration de la variable texteUse
    	about4 = TTF_RenderText_Blended(font, "BOUGER LA SCENE PS3 AINSI QUE COOL72 ", colorwhite);// déclaration de la variable texteUse
    	about5 = TTF_RenderText_Blended(font, "0_obeWAN BIQUET Et BIEN D'AUtRES", colorwhite);// déclaration de la variable texteUse
    	about6 = TTF_RenderText_Blended(font, "LA SEULE LIMItE DU DEv ESt L'IMAGINAtION...", colorwhite);// déclaration de la variable texteUse
    	aboutls = TTF_RenderText_Blended(font, "WWW.LOGIC-SUNRISE.COM", colorwhite);// déclaration de la variable texteUse
    	
    	
    	SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); 
    // boucle de contrôle des actions de la manette
    
    
            position.x = 0;  //position horizontale de imagedefond
    		position.y = 0; //position verticale de imagedefond
    		SDL_BlitSurface(imagedefond, NULL, ecran, &position); 
    
    		//usleep(200);
    
    		position.x = 160; //position horizontale de	TITLE	
            position.y = 20; //position verticale de TITLE
    		SDL_BlitSurface(TITLE, NULL, ecran, &position); //transfert de la surface de TITLE sur la surface ecran
    		
    		////////
    		position.x = 50; //position horizontale de	type	
            position.y = 100; //position verticale de type
    		SDL_BlitSurface(ttype, NULL, ecran, &position); //transfert de la surface de TITLE sur la surface ecran
    		
    		
    		position.x = 200; //position horizontale de	texteUse						///////////////////		
            position.y = 440; //position verticale de texteUse
    		SDL_BlitSurface(texteUse, NULL, ecran, &position); //transfert de la surface de texteUse sur la surface ecran
    		
    		position.x = 140; //position horizontale de	texteUse2								
            position.y = 480; //position verticale de texteUse2
    		SDL_BlitSurface(texteUse2, NULL, ecran, &position); //transfert de la surface de texteUse2 sur la surface ecran
    		
            position.x = 50; //position horizontale de CROSS1
            position.y = 570; //position verticale de CROSS1
    		SDL_BlitSurface(CROSS1, NULL, ecran, &position);  //transfert de la surface de CROSS1 sur la surface ecran
            
    		position.x = 100; //position horizontale de	texteCROSS1								
            position.y = 580; //position verticale de texteCROSS1
    		SDL_BlitSurface(texteCROSS1, NULL, ecran, &position); //transfert de la surface de texteCROSS1 sur la surface ecran
    		
    		
    		position.x = 110; //position horizontale de SQUARE1
    		position.y = 610; //position verticale de SQUARE1
    		SDL_BlitSurface(SQUARE1, NULL, ecran, &position); //transfert de la surface de SQUARE1 sur la surface ecran
            
    		position.x = 160; //position horizontale de texteSQUARE1
    		position.y = 620; //position verticale de texteSQUARE1
    		SDL_BlitSurface(texteSQUARE1, NULL, ecran, &position); //transfert de la surface de texteSQUARE1 sur la surface ecran
    		
    		
            position.x = 900; //position horizontale de CIRCLE1
    		position.y = 570; //position verticale de CIRCLE1
    		SDL_BlitSurface(CIRCLE1, NULL, ecran, &position); //transfert de la surface de CIRCLE1 sur la surface ecran
            
    		
    		position.x = 950; //position horizontale de texteCIRCLE1
            position.y = 580; //position verticale de texteCIRCLE1
    		SDL_BlitSurface(texteCIRCLE1, NULL, ecran, &position); //transfert de la surface de texteCIRCLE1 sur la surface ecran
    		
    		
            position.x = 840; //position horizontale de TRIANGLE1
    		position.y = 610; //position verticale de TRIANGLE1
    		SDL_BlitSurface(TRIANGLE1, NULL, ecran, &position); //transfert de la surface de TRIANGLE1 sur la surface ecran
    		
            position.x = 900; //position horizontale de texteTRIANGLE1
    		position.y = 620; //position verticale de texteTRIANGLE1
    		SDL_BlitSurface(texteTRIANGLE1, NULL, ecran, &position); //transfert de la surface de texteTRIANGLE1 sur la surface ecran
    		
    		position.x = 260; //position horizontale de	texteCROSS1								
            position.y = 655; //position verticale de texteCROSS1
    		SDL_BlitSurface(LR, NULL, ecran, &position); //transfert de la surface de TRIANGLE1 sur la surface ecran
    		
            position.x = 420; //position horizontale de texteTRIANGLE1
    		position.y = 665; //position verticale de texteTRIANGLE1
    		SDL_BlitSurface(texteLR, NULL, ecran, &position);
    		
            SDL_Flip(ecran);
    		
    
    	
    		int manette=1;
    
    
       
      ////////////////////////////////////////////////////////
     //           Partie installation et actions		   //
    ////////////////////////////////////////////////////////
    	
    	while(manette)// boucle de contrôle des actions de la manette
    		{
    		
    				ioPadGetInfo2(&joypadInfo);
    	
    				if(joypadInfo.port_status[0])
    				{
    					ioPadGetData(0, &joypadData);
    						if( joypadData.BTN_SQUARE )// si bouton CARRE
    							{SDL_Surface *restore = NULL; //initialise la variable restore à 0
    							restore = TTF_RenderText_Blended(font2, "REStAURAtION EFFECTUEE", colorred); //défini le contenu de la variable restore
    if(type==1)
    		{	
    			if ((version=='4')&(version2=='8')&(version3=='1'))	
    			{					
    				{if(is_dev_blind_mounted()!=0); // verifie que dev_blind n'est pas monté
    								
    					mount_dev_blind();// monte dev_blind   
    									
    									//restaure les fichiers d'un point "a" à un point "b" 
    						FILE* backupf1 = NULL;
    						backupf1 = fopen("/dev_hdd0/game/COBJ75011/USRDIR/BACKUP/stage2.cex", "r");
    									
    						if(backupf1 == NULL)
    						{
    						fclose(backupf1);
    										
    										
    						SDL_Surface *nofiles = NULL; //initialise la variable restore à 0
    						nofiles = TTF_RenderText_Blended(font2, "PAS DE BACKUP !!!", colorred); //défini le contenu
    								
    						position.x = 280; //position horizontale de nofiles  et isntall???
    						position.y = 512; //position verticale de nofiles
    						{ lv2syscall3(392, 0x1004, 0x4, 0x6); } //émet un bip sonore
    						SDL_BlitSurface(nofiles, NULL, ecran, &position);//transfert de la surface de nofiles sur la surface ecran
    						SDL_Flip(ecran); //mise a jour de l'écran
    						SDL_Delay(5000); // le programme fait une pause 5 secondes
    						SDL_FreeSurface(nofiles); //le programme détruit la surface nofiles
    						sysLv2FsUnlink("/dev_hdd0/tmp/turnoff");// quitte le programme de la bonne manière
    										
    								
    						{lv2syscall3(SC_SYS_POWER, SYS_REBOOT, 0, 0); return_to_user_prog(int);}// Reboot la console
    								}	
    									
    						CopyFile("/dev_hdd0/game/COBJ75011/USRDIR/BACKUP/stage2.cex","/dev_blind/Rebug/cobra/stage2.cex");
    						position.x = 200; //position horizontale de restore
    						position.y = 512; //position verticale de restore
    						{ lv2syscall3(392, 0x1004, 0x4, 0x6); } //émet un bip sonore
    						SDL_BlitSurface(restore, NULL, ecran, &position);//transfert de la surface de restore sur la surface ecran
    						SDL_Flip(ecran); //mise a jour de l'écran
    						SDL_Delay(5000); // le programme fait une pause 5 secondes
    						SDL_FreeSurface(restore);
    						SDL_FreeSurface(ecran);//le programme détruit la surface restore
    						unmount_dev_blind();// annule le montage de dev_blind
    						fclose(f);
    						sysLv2FsUnlink("/dev_hdd0/tmp/turnoff");// quitte le programme de la bonne manière
    							
    						{lv2syscall3(SC_SYS_POWER, SYS_REBOOT, 0, 0); return_to_user_prog(int);}// Reboot la console
    
    							return 0;
    							}
    			}
    			else
    		{
    
    						SDL_Surface *incompatible = NULL; //initialise la variable restore à 0
    						incompatible = TTF_RenderText_Blended(font2, "CONSOLE INCOMPAtIBLE", colorred); //défini le contenu
    								
    						
    						position.x = 200; //position horizontale de restore
    						position.y = 512; //position verticale de restore
    						{ lv2syscall3(392, 0x1004, 0x4, 0x6); } //émet un bip sonore
    						SDL_BlitSurface(incompatible, NULL, ecran, &position);//transfert de la surface de restore sur la surface ecran
    						SDL_Flip(ecran); //mise a jour de l'écran
    						SDL_Delay(5000); // le programme fait une pause 5 secondes
    						SDL_FreeSurface(incompatible); //le programme détruit la surface restore
    						SDL_FreeSurface(ecran);
    						unmount_dev_blind();// annule le montage de dev_blind
    						fclose(f);
    						sysLv2FsUnlink("/dev_hdd0/tmp/turnoff");// quitte le programme de la bonne manière
    							
    						{lv2syscall3(SC_SYS_POWER, SYS_REBOOT, 0, 0); return_to_user_prog(int);}// Reboot la console
    
    									return 0;
    		}
    }
    else if(type==2)
    		{	
    			if ((version=='4')&(version2=='8')&(version3=='1'))
    			{					
    				{if(is_dev_blind_mounted()!=0); // verifie que dev_blind n'est pas monté
    								
    						mount_dev_blind();// monte dev_blind   
    									
    									//restaure les fichiers d'un point "a" à un point "b" 
    						FILE* backupf2 = NULL;
    						backupf2 = fopen("/dev_hdd0/game/COBJ75011/USRDIR/BACKUP/stage2.dex", "r");
    									
    						if(backupf2 == NULL)
    										{
    										fclose(backupf2);								
    										
    						SDL_Surface *nofiles = NULL; //initialise la variable restore à 0
    						nofiles = TTF_RenderText_Blended(font2, "PAS DE BACKUP !!!", colorred); //défini le contenu
    								
    						position.x = 280; //position horizontale de nofiles  et isntall???
    						position.y = 512; //position verticale de nofiles
    						{ lv2syscall3(392, 0x1004, 0x4, 0x6); } //émet un bip sonore
    						SDL_BlitSurface(nofiles, NULL, ecran, &position);//transfert de la surface de nofiles sur la surface ecran
    						SDL_Flip(ecran); //mise a jour de l'écran
    						SDL_Delay(5000); // le programme fait une pause 5 secondes
    						SDL_FreeSurface(nofiles); //le programme détruit la surface nofiles
    						sysLv2FsUnlink("/dev_hdd0/tmp/turnoff");// quitte le programme de la bonne manière
    										
    								
    						{lv2syscall3(SC_SYS_POWER, SYS_REBOOT, 0, 0); return_to_user_prog(int);}// Reboot la console
    										}
    									
    						CopyFile("/dev_hdd0/game/COBJ75011/USRDIR/BACKUP/stage2.dex","/dev_blind/Rebug/cobra/stage2.dex");
    									
    						position.x = 200; //position horizontale de restore
    						position.y = 512; //position verticale de restore
    						{ lv2syscall3(392, 0x1004, 0x4, 0x6); } //émet un bip sonore
    						SDL_BlitSurface(restore, NULL, ecran, &position);//transfert de la surface de restore sur la surface ecran
    						SDL_Flip(ecran); //mise a jour de l'écran
    						SDL_Delay(5000); // le programme fait une pause 5 secondes
    						SDL_FreeSurface(restore);
    						SDL_FreeSurface(ecran);									//le programme détruit la surface restore
    						unmount_dev_blind();
    						fclose(f);// annule le montage de dev_blind
    						sysLv2FsUnlink("/dev_hdd0/tmp/turnoff");// quitte le programme de la bonne manière
    							
    						{lv2syscall3(SC_SYS_POWER, SYS_REBOOT, 0, 0); return_to_user_prog(int);}// Reboot la console
    
    									return 0;
    								}
    		}
    
    else
    		{
    
    						SDL_Surface *incompatible = NULL; //initialise la variable restore à 0
    						incompatible = TTF_RenderText_Blended(font2, "CONSOLE INCOMPAtIBLE", colorred); //défini le contenu
    								
    						
    						position.x = 200; //position horizontale de restore
    						position.y = 512; //position verticale de restore
    						{ lv2syscall3(392, 0x1004, 0x4, 0x6); } //émet un bip sonore
    						SDL_BlitSurface(incompatible, NULL, ecran, &position);//transfert de la surface de restore sur la surface ecran
    						SDL_Flip(ecran); //mise a jour de l'écran
    						SDL_Delay(5000); // le programme fait une pause 5 secondes
    						SDL_FreeSurface(incompatible); //le programme détruit la surface restore
    						SDL_FreeSurface(ecran);
    						unmount_dev_blind();
    						fclose(f);// annule le montage de dev_blind
    						sysLv2FsUnlink("/dev_hdd0/tmp/turnoff");// quitte le programme de la bonne manière
    							
    						{lv2syscall3(SC_SYS_POWER, SYS_REBOOT, 0, 0); return_to_user_prog(int);}// Reboot la console
    
    						return 0;
    		}
    							
    							
    }
    }				
    				
    						
    		if( joypadData.BTN_TRIANGLE )// si bouton TRIANGLE
    				{
    					
    						 
    						position.x = 0;  //position horizontale de imagedefond
    						position.y = 0; //position verticale de imagedefond
    						SDL_BlitSurface(aboutfnd, NULL, ecran, &position); //transfert de la surface de imagedefond sur la surface ecran
    						
    						
    						position.x = 530; //position horizontale de	about	
    						position.y = 50; //position verticale de about
    						SDL_BlitSurface(about, NULL, ecran, &position); //transfert de la surface de about sur la surface ecran	
    						
    						position.x = 220; //position horizontale de	about2	
    						position.y = 150; //position verticale de about2
    						SDL_BlitSurface(about2, NULL, ecran, &position); //transfert de la surface de about2 sur la surface ecran	
    						
    						position.x = 120; //position horizontale de	about3	
    						position.y = 190; //position verticale de about3
    						SDL_BlitSurface(about3, NULL, ecran, &position); //transfert de la surface de about sur la surface ecran	
    												
    						position.x = 120; //position horizontale de	about4	
    						position.y = 220; //position verticale de about4
    						SDL_BlitSurface(about4, NULL, ecran, &position); //transfert de la surface de about sur la surface ecran	
    												
    						position.x = 120; //position horizontale de	about5	
    						position.y = 260; //position verticale de about5
    						SDL_BlitSurface(about5, NULL, ecran, &position); //transfert de la surface de about sur la surface ecran
    
    						position.x = 100; //position horizontale de about6	
    						position.y = 340; //position verticale de about5
    						SDL_BlitSurface(about6, NULL, ecran, &position); //transfert de la surface de about sur la surface ecran						
    						
    						position.x = 50; //position horizontale de aboutls	
    						position.y = 640; //position verticale de aboutls
    						SDL_BlitSurface(aboutls, NULL, ecran, &position); //transfert de la surface de about sur la surface ecran	
    						
    						position.x = 680; //position horizontale de	texteCROSS1								
    						position.y = 655; //position verticale de texteCROSS1
    						SDL_BlitSurface(LR, NULL, ecran, &position); //transfert de la surface de TRIANGLE1 sur la surface ecran
    		
    						position.x = 840; //position horizontale de texteTRIANGLE1
    						position.y = 665; //position verticale de texteTRIANGLE1
    						SDL_BlitSurface(texteLR2, NULL, ecran, &position);
    						
    						SDL_Flip(ecran);
    							//SDL_Surface *about = NULL;//initialise la variable about à 0
    							//about=SDL_LoadBMP("/dev_hdd0/game/REDJ00011/USRDIR/about.bmp");//défini le contenu de la variable about
    							//SDL_BlitSurface(about, NULL, ecran, NULL);//transfert de la surface de about sur la surface ecran
    							//SDL_Flip(ecran);//mise à jour de l'écran
    						}
    						
    						if( joypadData.BTN_L1 )// si bouton TRIANGLE
    						{
    		position.x = 0;  //position horizontale de imagedefond
    		position.y = 0; //position verticale de imagedefond
    		SDL_BlitSurface(imagedefond2, NULL, ecran, &position); 
    
    		//usleep(200);
    
    		position.x = 160; //position horizontale de	TITLE	
            position.y = 20; //position verticale de TITLE
    		SDL_BlitSurface(TITLE, NULL, ecran, &position); //transfert de la surface de TITLE sur la surface ecran
    		
    		////////
    		position.x = 50; //position horizontale de	type	
            position.y = 100; //position verticale de type
    		SDL_BlitSurface(ttype, NULL, ecran, &position); //transfert de la surface de TITLE sur la surface ecran
    		
    		
    		position.x = 200; //position horizontale de	texteUse						///////////////////		
            position.y = 440; //position verticale de texteUse
    		SDL_BlitSurface(texteUse, NULL, ecran, &position); //transfert de la surface de texteUse sur la surface ecran
    		
    		position.x = 140; //position horizontale de	texteUse2								
            position.y = 480; //position verticale de texteUse2
    		SDL_BlitSurface(texteUse2, NULL, ecran, &position); //transfert de la surface de texteUse2 sur la surface ecran
    		
            position.x = 50; //position horizontale de CROSS1
            position.y = 570; //position verticale de CROSS1
    		SDL_BlitSurface(CROSS1, NULL, ecran, &position);  //transfert de la surface de CROSS1 sur la surface ecran
            
    		position.x = 100; //position horizontale de	texteCROSS1								
            position.y = 580; //position verticale de texteCROSS1
    		SDL_BlitSurface(texteCROSS1, NULL, ecran, &position); //transfert de la surface de texteCROSS1 sur la surface ecran
    		
    		
    		position.x = 110; //position horizontale de SQUARE1
    		position.y = 610; //position verticale de SQUARE1
    		SDL_BlitSurface(SQUARE1, NULL, ecran, &position); //transfert de la surface de SQUARE1 sur la surface ecran
            
    		position.x = 160; //position horizontale de texteSQUARE1
    		position.y = 620; //position verticale de texteSQUARE1
    		SDL_BlitSurface(texteSQUARE1, NULL, ecran, &position); //transfert de la surface de texteSQUARE1 sur la surface ecran
    		
    		
            position.x = 900; //position horizontale de CIRCLE1
    		position.y = 570; //position verticale de CIRCLE1
    		SDL_BlitSurface(CIRCLE1, NULL, ecran, &position); //transfert de la surface de CIRCLE1 sur la surface ecran
            
    		
    		position.x = 950; //position horizontale de texteCIRCLE1
            position.y = 580; //position verticale de texteCIRCLE1
    		SDL_BlitSurface(texteCIRCLE1, NULL, ecran, &position); //transfert de la surface de texteCIRCLE1 sur la surface ecran
    		
    		
            position.x = 840; //position horizontale de TRIANGLE1
    		position.y = 610; //position verticale de TRIANGLE1
    		SDL_BlitSurface(TRIANGLE1, NULL, ecran, &position); //transfert de la surface de TRIANGLE1 sur la surface ecran
    		
            position.x = 900; //position horizontale de texteTRIANGLE1
    		position.y = 620; //position verticale de texteTRIANGLE1
    		SDL_BlitSurface(texteTRIANGLE1, NULL, ecran, &position); //transfert de la surface de texteTRIANGLE1 sur la surface ecran
    		
    		position.x = 260; //position horizontale de	texteCROSS1								
            position.y = 655; //position verticale de texteCROSS1
    		SDL_BlitSurface(LR, NULL, ecran, &position); //transfert de la surface de TRIANGLE1 sur la surface ecran
    		
            position.x = 420; //position horizontale de texteTRIANGLE1
    		position.y = 665; //position verticale de texteTRIANGLE1
    		SDL_BlitSurface(texteLR, NULL, ecran, &position);
    		
            SDL_Flip(ecran);
    
    							
    						}
    						
    						
    						if( joypadData.BTN_R1 )// si bouton TRIANGLE
    						{
    		position.x = 0;  //position horizontale de imagedefond
    		position.y = 0; //position verticale de imagedefond
    		SDL_BlitSurface(imagedefond3, NULL, ecran, &position); 
    
    		//usleep(200);
    
    		position.x = 160; //position horizontale de	TITLE	
            position.y = 20; //position verticale de TITLE
    		SDL_BlitSurface(TITLE, NULL, ecran, &position); //transfert de la surface de TITLE sur la surface ecran
    		
    		////////
    		position.x = 50; //position horizontale de	type	
            position.y = 100; //position verticale de type
    		SDL_BlitSurface(ttype, NULL, ecran, &position); //transfert de la surface de TITLE sur la surface ecran
    		
    		
    		position.x = 200; //position horizontale de	texteUse						///////////////////		
            position.y = 440; //position verticale de texteUse
    		SDL_BlitSurface(texteUse, NULL, ecran, &position); //transfert de la surface de texteUse sur la surface ecran
    		
    		position.x = 140; //position horizontale de	texteUse2								
            position.y = 480; //position verticale de texteUse2
    		SDL_BlitSurface(texteUse2, NULL, ecran, &position); //transfert de la surface de texteUse2 sur la surface ecran
    		
            position.x = 50; //position horizontale de CROSS1
            position.y = 570; //position verticale de CROSS1
    		SDL_BlitSurface(CROSS1, NULL, ecran, &position);  //transfert de la surface de CROSS1 sur la surface ecran
            
    		position.x = 100; //position horizontale de	texteCROSS1								
            position.y = 580; //position verticale de texteCROSS1
    		SDL_BlitSurface(texteCROSS1, NULL, ecran, &position); //transfert de la surface de texteCROSS1 sur la surface ecran
    		
    		
    		position.x = 110; //position horizontale de SQUARE1
    		position.y = 610; //position verticale de SQUARE1
    		SDL_BlitSurface(SQUARE1, NULL, ecran, &position); //transfert de la surface de SQUARE1 sur la surface ecran
            
    		position.x = 160; //position horizontale de texteSQUARE1
    		position.y = 620; //position verticale de texteSQUARE1
    		SDL_BlitSurface(texteSQUARE1, NULL, ecran, &position); //transfert de la surface de texteSQUARE1 sur la surface ecran
    		
    		
            position.x = 900; //position horizontale de CIRCLE1
    		position.y = 570; //position verticale de CIRCLE1
    		SDL_BlitSurface(CIRCLE1, NULL, ecran, &position); //transfert de la surface de CIRCLE1 sur la surface ecran
            
    		
    		position.x = 950; //position horizontale de texteCIRCLE1
            position.y = 580; //position verticale de texteCIRCLE1
    		SDL_BlitSurface(texteCIRCLE1, NULL, ecran, &position); //transfert de la surface de texteCIRCLE1 sur la surface ecran
    		
    		
            position.x = 840; //position horizontale de TRIANGLE1
    		position.y = 610; //position verticale de TRIANGLE1
    		SDL_BlitSurface(TRIANGLE1, NULL, ecran, &position); //transfert de la surface de TRIANGLE1 sur la surface ecran
    		
            position.x = 900; //position horizontale de texteTRIANGLE1
    		position.y = 620; //position verticale de texteTRIANGLE1
    		SDL_BlitSurface(texteTRIANGLE1, NULL, ecran, &position); //transfert de la surface de texteTRIANGLE1 sur la surface ecran
    		
    		position.x = 260; //position horizontale de	texteCROSS1								
            position.y = 655; //position verticale de texteCROSS1
    		SDL_BlitSurface(LR, NULL, ecran, &position); //transfert de la surface de TRIANGLE1 sur la surface ecran
    		
            position.x = 420; //position horizontale de texteTRIANGLE1
    		position.y = 665; //position verticale de texteTRIANGLE1
    		SDL_BlitSurface(texteLR, NULL, ecran, &position);
    		
            SDL_Flip(ecran);
    						 
    							
    				}
    							
    				if( joypadData.BTN_CROSS )// si bouton Croix
    					{SDL_Surface *install = NULL; //initialise la variable restore à 0
    					install = TTF_RenderText_Blended(font2, "INStALLAtion EFFECTUEE", colorred); //défini le contenu de la variable restore
    if(type==1)// verifie le type de console cex dex tool
    		{	
    			if ((version=='4')&(version2=='8')&(version3=='1'))	// verifie que le fw est bien 4.81
    			{											
    				{if(is_dev_blind_mounted()!=0); // verifie que dev_blind n'est pas monté
    								
    					mount_dev_blind();// monte dev_blind   
    								
    					//restaure les fichiers d'un point "a" à un point "b" 
    					CopyFile("/dev_blind/Rebug/cobra/stage2.cex","/dev_hdd0/game/COBJ75011/USRDIR/BACKUP/stage2.cex");
    					CopyFile("/dev_hdd0/game/COBJ75011/USRDIR/stage2.cex","/dev_blind/Rebug/cobra/stage2.cex");
    					position.x = 200; //position horizontale de restore
    					position.y = 512; //position verticale de restore
    					{ lv2syscall3(392, 0x1004, 0x4, 0x6); } //émet un bip sonore
    					SDL_BlitSurface(install, NULL, ecran, &position);//transfert de la surface de install sur la surface ecran
    					SDL_Flip(ecran); //mise a jour de l'écran
    					SDL_Delay(5000); // le programme fait une pause 5 secondes
    					SDL_FreeSurface(install);
    					SDL_FreeSurface(ecran);//le programme détruit la surface 
    					unmount_dev_blind();// annule le montage de dev_blind
    					fclose(f);
    					sysLv2FsUnlink("/dev_hdd0/tmp/turnoff");// quitte le programme de la bonne manière
    							
    						{lv2syscall3(SC_SYS_POWER, SYS_REBOOT, 0, 0); return_to_user_prog(int);}// Reboot la console
    
    									return 0;
    							}
    			}
    			else
    		{
    
    					SDL_Surface *incompatible = NULL; //initialise la variable restore à 0
    					incompatible = TTF_RenderText_Blended(font2, "CONSOLE INCOMPAtIBLE", colorred); //défini le contenu
    								
    						
    					position.x = 200; //position horizontale de restore
    					position.y = 512; //position verticale de restore
    					{ lv2syscall3(392, 0x1004, 0x4, 0x6); } //émet un bip sonore
    					SDL_BlitSurface(incompatible, NULL, ecran, &position);//transfert de la surface de incompatible sur la surface ecran
    					SDL_Flip(ecran); //mise a jour de l'écran
    					SDL_Delay(5000); // le programme fait une pause 5 secondes
    					SDL_FreeSurface(incompatible); //le programme détruit la surface
    					SDL_FreeSurface(ecran);
    					unmount_dev_blind();// annule le montage de dev_blind
    					fclose(f);
    					sysLv2FsUnlink("/dev_hdd0/tmp/turnoff");// quitte le programme de la bonne manière
    							
    					{lv2syscall3(SC_SYS_POWER, SYS_REBOOT, 0, 0); return_to_user_prog(int);}// Reboot la console
    
    					return 0;
    		}
    }
    else if(type==2)
    		{	
    			if ((version=='4')&(version2=='8')&(version3=='1'))
    			{							
    				{if(is_dev_blind_mounted()!=0); // verifie que dev_blind n'est pas monté
    								
    					mount_dev_blind();// monte dev_blind   
    									
    					//restaure les fichiers d'un point "a" à un point "b" 
    					CopyFile("/dev_blind/Rebug/cobra/stage2.dex","/dev_hdd0/game/COBJ75011/USRDIR/BACKUP/stage2.dex");
    					CopyFile("/dev_hdd0/game/COBJ75011/USRDIR/stage2.dex","/dev_blind/Rebug/cobra/stage2.dex");
    									
    					position.x = 200; //position horizontale de restore
    					position.y = 512; //position verticale de restore
    					{ lv2syscall3(392, 0x1004, 0x4, 0x6); } //émet un bip sonore
    					SDL_BlitSurface(install, NULL, ecran, &position);//transfert de la surface de install sur la surface ecran
    					SDL_Flip(ecran); //mise a jour de l'écran
    					SDL_Delay(5000); // le programme fait une pause 5 secondes
    					SDL_FreeSurface(install);
    					SDL_FreeSurface(ecran);//le programme détruit la surface
    					unmount_dev_blind();// annule le montage de dev_blind
    					fclose(f);
    					sysLv2FsUnlink("/dev_hdd0/tmp/turnoff");// quitte le programme de la bonne manière
    							
    					{lv2syscall3(SC_SYS_POWER, SYS_REBOOT, 0, 0); return_to_user_prog(int);}// Reboot la console
    
    					return 0;
    								}
    			}
    
    else
    		{
    
    					SDL_Surface *incompatible = NULL; //initialise la variable restore à 0
    					incompatible = TTF_RenderText_Blended(font2, "CONSOLE INCOMPAtIBLE", colorred); //défini le contenu
    									
    						
    					position.x = 200; //position horizontale de restore
    					position.y = 512; //position verticale de restore
    					{ lv2syscall3(392, 0x1004, 0x4, 0x6); } //émet un bip sonore
    					SDL_BlitSurface(incompatible, NULL, ecran, &position);//transfert de la surface de incompatible sur la surface ecran
    					SDL_Flip(ecran); //mise a jour de l'écran
    					SDL_Delay(5000); // le programme fait une pause 5 secondes
    					SDL_FreeSurface(incompatible); //le programme détruit la surface restore
    					SDL_FreeSurface(ecran);
    					unmount_dev_blind();// annule le montage de dev_blind
    					fclose(f);
    					sysLv2FsUnlink("/dev_hdd0/tmp/turnoff");// quitte le programme de la bonne manière
    							
    									{lv2syscall3(SC_SYS_POWER, SYS_REBOOT, 0, 0); return_to_user_prog(int);}// Reboot la console
    
    									return 0;
    		}
    							
    							
    }
    }
    				
    				if( joypadData.BTN_CIRCLE ) //si rond
    				{SDL_FreeSurface(ecran);//le programme détruit la surface install
    							
    				sysLv2FsUnlink("/dev_hdd0/tmp/turnoff");// quitte le programme de la bonne manière
    				{lv2syscall3(SC_SYS_POWER, SYS_REBOOT, 0, 0); return_to_user_prog(int);}// Reboot la console
    
    										
    				return 0;
    						}
    				
    									
    				}
    		
    		
    		SDL_Flip(ecran);//mise à jour de l'écran
    		
    
    
    		}
    		
    		
    		
    		TTF_CloseFont(font);//le programme ferme la police d'ecriture font
    		TTF_CloseFont(font2);//le programme ferme la police d'ecriture font2
    		SDL_FreeSurface(texteSQUARE1);//le programme détruit la surface texteSQUARE1
    		SDL_FreeSurface(texteTRIANGLE1);//le programme détruit la surface TRIANGLE1
    		SDL_FreeSurface(texteCROSS1);//le programme détruit la surface texteCROSS1
    		SDL_FreeSurface(texteCIRCLE1);//le programme détruit la surface texteCIRCLE1
    		SDL_FreeSurface(TITLE);//le programme détruit la surface TITLE
    		SDL_FreeSurface(about);//le programme détruit la surface about
    
    		TTF_Quit();// quite le contexte TTF de SDL
    		
    
    	SDL_FreeSurface(imagedefond);//le programme détruit la surface imagedefond
    	SDL_FreeSurface(SQUARE1);//le programme détruit la surface SQUARE1
    	SDL_FreeSurface(TRIANGLE1);//le programme détruit la surface TRIANGLE1
    	SDL_FreeSurface(CROSS1);//le programme détruit la surface CROSS1
    	SDL_FreeSurface(CIRCLE1);//le programme détruit la surface CIRCLE1
    
    	
    	SDL_Quit();// quite le contexte SDL
    	
    	return 0;
    }

    copy.c

    #include <fcntl.h>
    #include <ppu-lv2.h>
    #include <sys/file.h>
    #include <stdio.h>
    #include <string.h>
    #include "COPY.H"
    
    #define SUCCESS 0
    #define FAILED -1
    
    #define SC_SYS_POWER 					(379)
    #define SYS_REBOOT				 		0x8201
    
     ////////////////////////////////////////////
     //Paramètres système de copie de fichiers //
    ////////////////////////////////////////////
    
    int CopyFile(const char* path, const char* path2)
    {
    	int ret = 0;
    	s32 fd = -1;
    	s32 fd2 = -1;
    	u64 lenght = 0LL;
    
    	u64 pos = 0ULL;
    	u64 readed = 0, writed = 0;
    
    	char *mem = NULL;
    
    	sysFSStat stat;
    
    	ret= sysLv2FsStat(path, &stat);
    	lenght = stat.st_size;
    
    	if(ret) goto skip;
    
    	if(strstr(path, "/dev_hdd0/") != NULL && strstr(path2, "/dev_hdd0/") != NULL)
    	{
    		if(strcmp(path, path2)==0) return ret;
    
    		sysLv2FsUnlink(path2);
    		sysLv2FsLink(path, path2);
    
    		if (sysLv2FsStat(path2, &stat) == 0) return 0;
    	}
    
    	ret = sysLv2FsOpen(path, 0, &fd, S_IRWXU | S_IRWXG | S_IRWXO, NULL, 0);
    	if(ret) goto skip;
    
    	ret = sysLv2FsOpen(path2, SYS_O_WRONLY | SYS_O_CREAT | SYS_O_TRUNC, &fd2, 0777, NULL, 0);
    	if(ret) {sysLv2FsClose(fd);goto skip;}
    
    	mem = malloc(0x100000);
    	if (mem == NULL) return FAILED;
    
    	while(pos < lenght)
    	{
    		readed = lenght - pos; if(readed > 0x100000ULL) readed = 0x100000ULL;
    		ret=sysLv2FsRead(fd, mem, readed, &writed);
    		if(ret<0) goto skip;
    		if(readed != writed) {ret = 0x8001000C; goto skip;}
    
    		ret=sysLv2FsWrite(fd2, mem, readed, &writed);
    		if(ret<0) goto skip;
    		if(readed != writed) {ret = 0x8001000C; goto skip;}
    
    		pos += readed;
    	}
      ////////////////////////////////////////////
     //            Vidage de la mémoire        //
    ////////////////////////////////////////////
    
    skip:
    
    	if(mem) free(mem);
    	if(fd >=0) sysLv2FsClose(fd);
    	if(fd2>=0) sysLv2FsClose(fd2);
    	if(ret) return ret;
    
    	ret = sysLv2FsStat(path2, &stat);
    	if((ret == SUCCESS) && (stat.st_size == lenght)) ret = SUCCESS; else ret = FAILED;
    
    	return ret;
    }

    copy.h

    /*
    UnEnTete.h
    */
     
    /* Code pour éviter les erreurs quand on inclue deux fois le fichier */
    #ifndef H_FILES
    #define H_FILES
    
    
     #ifdef __cplusplus
    extern "C" {
    #endif
    
    
    
    int CopyFile(const char* path, const char* path2);
    
    #ifdef __cplusplus
    }
    #endif
     
    #endif /* H_FILES*/

    syscalls.cpp

    #include "syscalls.h"
    
    
    
    
    s32 sysFsMount(const char* MOUNT_POINT, const char* TYPE_OF_FILESYSTEM, const char* PATH_TO_MOUNT, int IF_READ_ONLY)
    {
    	lv2syscall8(837, (u64)MOUNT_POINT, (u64)TYPE_OF_FILESYSTEM, (u64)PATH_TO_MOUNT, 0, IF_READ_ONLY, 0, 0, 0);
    	return_to_user_prog(s32);
    }
    
    s32 sysFsUnmount(const char* PATH_TO_UNMOUNT)
    {
    	lv2syscall1(838, (u64)PATH_TO_UNMOUNT);
    	return_to_user_prog(s32);
    }
    
    u32 reboot_sys(string reboottype)
    {
    	uint16_t op;
    
    	if (reboottype=="soft") op=0x200;
    	else op=0x1200;
    	lv2syscall4(379,op,0,0,0);
    	return_to_user_prog(u32);
    }
    
    
    
    int is_dev_blind_mounted()
    {
    	const char* MOUNT_POINT = "/dev_blind"; //our mount point
    	sysFSStat dir;
    
    	return sysFsStat(MOUNT_POINT, &dir);
    }
    
    int mount_dev_blind()
    {
    	const char* DEV_BLIND = "CELL_FS_IOS:BUILTIN_FLSH1";	// dev_flash
    	const char* FAT = "CELL_FS_FAT"; //it's also for fat32
    	const char* MOUNT_POINT = "/dev_blind"; //our mount point
    
    	sysFsMount(DEV_BLIND, FAT, MOUNT_POINT, 0);
    
    	return 0;
    }
    
    int unmount_dev_blind()
    {
    	const char* MOUNT_POINT = "/dev_blind"; //our mount point
    
    	sysFsUnmount(MOUNT_POINT);
    
    	return 0;
    }

    makefile

    #---------------------------------------------------------------------------------
    # Clear the implicit built in rules
    #---------------------------------------------------------------------------------
    .SUFFIXES:
    #---------------------------------------------------------------------------------
    ifeq ($(strip $(PSL1GHT)),)
    $(error "Please set PSL1GHT in your environment. export PSL1GHT=<path>")
    endif
    
    include $(PSL1GHT)/ppu_rules
    
    #---------------------------------------------------------------------------------
    # TARGET is the name of the output
    # BUILD is the directory where object files & intermediate files will be placed
    # SOURCES is a list of directories containing source code
    # INCLUDES is a list of directories containing extra header files
    #---------------------------------------------------------------------------------
    TARGET		:=	$(notdir $(CURDIR))
    BUILD		:=	build
    SOURCES		:=	source
    DATA		:=	data
    INCLUDES	:=	include
    PKGFILES	:=	$(CURDIR)/pkgfiles
    
    TITLE		:=	Cobra Installer 7.50 habib
    APPID		:=	COBJ75011
    CONTENTID	:=      UP0001-$(APPID)_00-0000000000000000
    
    
    #---------------------------------------------------------------------------------
    # options for code generation
    #---------------------------------------------------------------------------------
    # aditional scetool flags (--self-ctrl-flags, --self-cap-flags...)
    SCETOOL_FLAGS	+=	--self-ctrl-flags 4000000000000000000000000000000000000000000000000000000000000002
    SCETOOL_FLAGS	+=	--self-cap-flags 00000000000000000000000000000000000000000000007B0000000100000000
    
    CFLAGS		=	-O2 -Wall -mcpu=cell $(MACHDEP) $(INCLUDE)
    ASFLAGS		=	$(INCLUDE) 
    CXXFLAGS	=	$(CFLAGS)
    
    LDFLAGS		=	$(MACHDEP) -Wl,-Map,$(notdir $@).map
    
    #---------------------------------------------------------------------------------
    # any extra libraries we wish to link with the project
    #---------------------------------------------------------------------------------
    LIBS	:=	-lSDL_ttf -lSDL_image -lfreetype -lz -lSDl -lSDLmain -lgcm_sys -lrsx -lsysutil -lio -lnet -lsysmodule -laudio -lrt -llv2 -lm -lsysfs
    
    #---------------------------------------------------------------------------------
    # list of directories containing libraries, this must be the top level containing
    # include and lib
    #---------------------------------------------------------------------------------
    LIBDIRS	:= $(PORTLIBS)
    
    #---------------------------------------------------------------------------------
    # no real need to edit anything past this point unless you need to add additional
    # rules for different file extensions
    #---------------------------------------------------------------------------------
    ifneq ($(BUILD),$(notdir $(CURDIR)))
    #---------------------------------------------------------------------------------
    
    export OUTPUT	:=	$(CURDIR)/$(TARGET)
    
    export VPATH	:=	$(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
    					$(foreach dir,$(DATA),$(CURDIR)/$(dir))
    
    export DEPSDIR	:=	$(CURDIR)/$(BUILD)
    
    export BUILDDIR	:=	$(CURDIR)/$(BUILD)
    
    #---------------------------------------------------------------------------------
    # automatically build a list of object files for our project
    #---------------------------------------------------------------------------------
    CFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
    CPPFILES	:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
    sFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
    SFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S)))
    BINFILES	:=	$(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
    
    #---------------------------------------------------------------------------------
    # use CXX for linking C++ projects, CC for standard C
    #---------------------------------------------------------------------------------
    ifeq ($(strip $(CPPFILES)),)
    	export LD	:=	$(CC)
    else
    	export LD	:=	$(CXX)
    endif
    
    export OFILES	:=	$(addsuffix .o,$(BINFILES)) \
    					$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) \
    					$(sFILES:.s=.o) $(SFILES:.S=.o)
    
    #---------------------------------------------------------------------------------
    # build a list of include paths
    #---------------------------------------------------------------------------------
    export INCLUDE	:=	$(foreach dir,$(INCLUDES), -I$(CURDIR)/$(dir)) \
    					$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
    					$(LIBPSL1GHT_INC) \
    					-I$(CURDIR)/$(BUILD)
    
    #---------------------------------------------------------------------------------
    # build a list of library paths
    #---------------------------------------------------------------------------------
    export LIBPATHS	:=	$(foreach dir,$(LIBDIRS),-L$(dir)/lib) \
    					$(LIBPSL1GHT_LIB)
    
    export OUTPUT	:=	$(CURDIR)/$(TARGET)
    .PHONY: $(BUILD) clean
    
    #---------------------------------------------------------------------------------
    $(BUILD):
    	@[ -d $@ ] || mkdir -p $@
    	@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
    
    #---------------------------------------------------------------------------------
    clean:
    	@echo clean ...
    	@rm -fr $(BUILD) $(OUTPUT).elf *.pkg *.self
    
    #---------------------------------------------------------------------------------
    run:
    	ps3load $(OUTPUT).self
    
    #---------------------------------------------------------------------------------
    pkg:	$(BUILD) $(OUTPUT).pkg
    
    #---------------------------------------------------------------------------------
    else
    
    DEPENDS	:=	$(OFILES:.o=.d)
    
    #---------------------------------------------------------------------------------
    # main targets
    #---------------------------------------------------------------------------------
    $(OUTPUT).self: $(OUTPUT).elf
    $(OUTPUT).elf:	$(OFILES)
    
    #---------------------------------------------------------------------------------
    # This rule links in binary data with the .bin extension
    #---------------------------------------------------------------------------------
    %.bin.o	:	%.bin
    #---------------------------------------------------------------------------------
    	@echo $(notdir $<)
    	@$(bin2o)
    
    -include $(DEPENDS)
    
    #---------------------------------------------------------------------------------
    endif
    #---------------------------------------------------------------------------------

     

    Edited by Red-j
    • Confused 1
    • Nice 1

    Share this post


    Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now
    Sign in to follow this  

    ×