Aller au contenu

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

Atmosphère 0.7.5 disponible


Mike Heskin‏ de @hexkyz sur twitter publie une nouvelle version du CFW Atmosphère pour la Nintendo Switch via son compte twitter et cette nouvelle version à subit une optimisation au niveau du boot de la console en y ajoutant des DRAM et il remercie aussi @CTCaer pour son excellent projet sur Minerva qui a permis de corrigé de nombreux beugs et optimisé le code de Atmosphere.
Ci-dessous, le changelog officiel :

En savoir plus…

PS4REN: un payload permettant d' activer le remoteplay

Les développeurs Sistro et golden propose un tout nouveau payload qui va vous permettre de streamer l'affichage de votre Ps4 sur PSVita, Pc voir même tablette...

Ce payload va simuler le mode IDU (Démo dans les magasins) ainsi que certain patch vous permettant d'activer l'enregistrement sur tout vos écrans depuis le  menu option.
ATTENTION : En mode IDU le bouton PS ne marche pas, il est conseillé de redémarrer votre console après utilisation.
Ce payload ne marche que sur Ps4 en 5.05

Source:
 
En savoir plus…

Firmware Dumper v0.4 : dumpé le firmware de votre console (MAJ)

Le développeur fOmey offre à la scène Switch un tout nouveau homebrew qui vous permettra de dumper le firmware actuel installé sur votre console et même de dumpé le firmware téléchargé mais pas installer sur votre console.

Le pourquoi cet homebrew pourrait être un atout pour la communauté, tout simplement parce qu'il dump les fichiers du firmware (NCA) depuis votre console car avant il fallait dumpé la NAND entière et d'en extraire les fichiers.

Une fois le processus de dump terminé, un dossier sera crée à la racine de votre carte SD contenant tous les fichiers de la version de la mise à jour dumpé. Il vous suffira juste d'utilisé ChoiDujourNX pour installer votre firmware sur une autre console.
Source et téléchargement :

Un tuto se trouve vers ce lien pour vous aider dans la tache de dump...
En savoir plus…

[EXCLU] Ultimate PSXPLOIT AIO ou le hack ultime de la PS3

Après le Web Host Offline de la PS4, me revoilà pour servir la scène PS3 en leurs offrants le hack ultime de la PS3 en un que j'ai nommé

Je passe ce petit bijou en v2 car la v1 a été publiée depuis le mois de Mai, ci-dessous le menu de la v1

Dans la v2, j'ai fait une refonte du menu et crée une page afin que l'utilisateur puisse faire un choix au lancement de la page, il peut choisir PSXploit v2 pour les dumps de la nand ou hacké une PS3 sans un kit de flash et, choisir PSXploit v3 pour les PS3 qui ne peuvent pas recevoir un CFW permanent comme les séries 3xxx et 4xxx (Super Slim).

PSXploit v2 dispose d'un moyen de dump de l'IDPS et de la NAND sur tous types de PS3 ainsi que le patch de la NAND pour y installer un CFW sans passer par un kit de flash comme un E3 Flasher. Pour les PS3 FAT et Slim, merci de bien déterminé le type de NAND que possède votre console mais ne vous inquiété pas, un mini guide est inclus dans la page pour vous aider à vous orienté.

Dans PSXploit v3, vous avez le fameux HAN qui est le dernier exploit de la Team PS3xploit sur PS3, vous avez aussi le dump et injection des fichiers ACT/IDPS, le Debug PKG et la mise en place du Gestionnaire de Fichiers PKG avec l'option Install Packages Files.

vous avez aussi la possibilité de pouvoir customisé votre PS3 avec le moyen de changer le Gameboot de la console, la Vague du XMB, le Coldboot et même la police d'écriture du XMB de votre PS3.

Vous avez aussi la possibilité de passé votre console en DEX et vice versa.

Pour profité de ce playground, merci de vous sur ce lien : http://ps3aio.modconsoles.fr/
Vous pouvez aussi vous rendre dans la section "HACK" du site pour lancer l'exploit.
 
Pour pouvoir installer le fameux Gestionnaire de fichier PKG ou switcher votre console en DEX ou l'inverse, il vous faut les fichiers nécessaires et je vous ai encore une fois de plus concocté un menu uniquement pour vous. Téléchargé mon pack RTU ci-dessous et l'extraire à la racine de votre clé USB puis de choisir l'option "Pack RTU (USB01)" en plaçant la clé USB au premier port de votre PS3 (pas celle à coté du lecteur CD)


Je remercie fortement la Team PS3Xploit pour tous les outils ainsi que le template Pett (PS3 Exploitation Tutorial Template) que j'aime tellement et aussi aux auteurs du HAN ToolBox pour les superbe icônes.
Voila pour aujourd'hui et merci pour vos retours si quelque chose ne va pas.
En savoir plus…

[EXCLU] Web Host Offline passe en v2.1 : utilisez votre PS4 sans internet

Je reviens une fois de plus avec une petite révision du Web Host Offline de la PS4. Pour les nouveaux, ceci est un playground qui vous permettra d'exploité votre PS4 sous le firmware 5.05 sans internet. Il dispose uniquement des payloads importants et nécessaire pour le hack de votre console.

Cette nouvelle version apporte l'ajout du HEN v1.8 de zecoxao pour profité du Remote Package Installer, le nouveau dumper des jeux 5.0x de Stooged et aussi une nouvelle version de AppToUsb. Changelog ci-dessous :

Ce playground dispose aussi de quelques mods de GTA et des séries de jeux Uncharted (merci à @jgduff) mais malheureusement, ces mods ne marche pas en cache donc vous devez être connecté sur internet pour les utilisé. J'ai pas pu les mettre à jour mais ça viendra en temps et en heures.

                                                   Installation :                                                   
Se rendre sur ce lien "http://playground.modconsoles.fr " depuis le navigateur de votre PS4, lancer au moins un payload puis se déconnecter de votre réseau internet. Vous pouvez alors redémarrer votre console et admirer le playgound sans internet ou module ESP.
Vous pouvez aussi vous rendre dans la colonne "HACK" du site pour profiter de l'exploit !
Je vous conseille de mettre la page dans les "Signets" pour éviter de l'effacer par erreur.
En savoir plus…

Chatbox - 127954 Messages. Spammers: neoskyriper (19639) . chronoss (18058) . crash over ride (13791) .

Charger plus
    Vous n'êtes pas autorisé à Chatter. Vous devez participer au moins une fois sur le Forum pour y avoir accès
    Red-j

    Code source commenté de Cobra Installer 7.50

    Messages recommandés

    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
    #---------------------------------------------------------------------------------

     

    Modifié par Red-j
    • Confus 1
    • Nice 1

    Partager ce message


    Lien à poster
    Partager sur d’autres sites

    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 compte

    Se connecter

    Vous avez déjà un compte ? Connectez-vous ici.

    Connectez-vous maintenant

    ×