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

Review de la StargateNX


ModConsoles est heureux de vous partagé un review du StargateNX, un store payant pour les jeux de la Nintendo Switch avec une basse de donnée de plus de 3.050 jeux, mise à jour et DLC. Mais avant tout :
Ce petit store fait maison nécessite une licence payante pour le prix de $24.95/mois chez les revendeurs agré ou chez votre revendeur local préféré.
Alors, on peut commencé le teste du produit.
Ce dont vous avez besoin :
Une fois tout en votre possession !
Extraire l'archive du sxinstaller_v1.4.zip à la racine de votre carte SD Extraire votre licence reçu "StargateNX.zip" à la racine de votre carte SD Placer votre Keys.txt dans le dossier switch/sx Réinsérer votre carte SD à votre console et lancer l'application "Album" pour activer le mode "Stealth Mode" en allant dans l'onglet "Option"
Maintenant, lancer l'homebrew SX Installer (n'oublier pas de connecter votre console à internet)
Au lancement de l'application, le programme va chargé la base de donnée des nouveaux jeux disponible et des DLC et mise à jour de vos jeux déjà installés.....
Une fois votre jeu, DLC ou mise à jour sélectionné pour être installer, un menu s'offre à vous avec plusieurs option comme la suppression du NSP à installer, la possibilité d'inclure tous les DLC du jeu à installer ainsi que sa dernière version de mise à jour et aussi de choisir l'emplacement que le jeu sera installé (mémoire système ou carte mémoire)
Une fois tout fait, vous pouvez alors lancé l'installation de votre jeu
Dans le menu de la File d'attente, vous pouvez voir vos jeux en cours d'installation ou ceux déjà terminé
Voila, vous pouvez alors aller profité de votre jeu installer sur le menu de votre console. N'oubliez pas que la licence est uniquement pour un mois à compté de sa première utilisation et elle est utilisable uniquement sur une seule console. Voila ce qui arrive si vous voulez partagé votre licence avec une autre personne.

Pour la conclusion, on peut dire comme + sur le store...
Et pour ce qui est du côté négative (-), nous avons...
Sachez une fois de plus que modconsoles ne vous incite pas au téléchargement illégale...
 
En savoir plus…

Firmware 4.84 de la PS3 disponible

SONY vient une fois de plus surprendre la communauté de la PS3 en leur offrant une nouvelle version de firmware pour sa console PS3, la 4.84. La précédente version date d'octobre 2018.

Cette version n'apporte rien d'officielle car aucun changelog n'a été publié mais on peut toute fois savoir que SONY tente de corrigé des bug ou tente de bloqué les failles sur sa console sachant qu'il aurait déjà réussi à contré le HAN de la Team PS3Xploit depuis la version 4.83.

On apprend par esc0rtd3w de la Team PS3Xploit que malgré le fait que les émulateurs soient mis à jour, il semble qu’il n’y ait pas toujours de correctifs Webkit sur le firmware 4.84 et que le PS3 StoreHaxx (dump de l'IDPS/PSID) fonctionne toujours sous ce firmware.

Si vous voulez profité du hack sur votre console, ne mettez pas à jour pour le moment vers ce firmware.
Téléchargement
Une petite comparaison entre le firmware 4.82, 4.83 et 4.84 a été fait et suivre ce lien pour détail.
En savoir plus…

modoru 戻る ou le downgradeur de la PSVita

modoru 戻る de son nom japonais qui veut dire "to go back" en anglais et "retour en arrière" en français, est le dernier homebrew que TheFl0w offre à la scène PSVita.

En collaboration avec Yifan Lu, la Team Molecule, SKGleba pour les testes, Freakler et liblor pour avoir suggéré le nom, modoru 戻る vous permettra de passé d'un firmware à un autre en revenant en arrière, vous pouvez installer la version du firmware de votre choix ou installer la version d'usinage venu avec votre console.

IMPORTANT AVANT DE VOUS LANCER
 
Installation :
 
Avantage et inconvénient :
 
FAQ
 
En savoir plus…

PSVIMGTOOLS-FRONTEND & Psvimgtools Easy FrontEnd se mettent à jour


PSVIMGTOOLS-FRONTEND est un ensemble d'outil de YiFan Lu basé sur PSVimgTools et crée par Sillica avec une interface graphique pour mieux se retrouvé. Il vous permettra d'installer des d'installer des bulles d'émulateurs et autres sur des consoles PSVita depuis un firmware officiel et compatible à lancer un exploit.

La nouvelle version qui est la v0.7 apporte le support offline de l'obtention de la clé CMA qui nécessitait internet en allant sur le site "http://cma.henkaku.xyz". Il apporte aussi une nouvelle procédure d'installation du hack h-encore.
Source et téléchargement : PSVIMGTOOLS-FRONTEND v0.7
 

Psvimgtools Easy FrontEnd, développé par MRGhidini est une alternative du PSVIMGTOOLS-FRONTEND de Sillica mais apporte un plus avec la possibilité d'extraire des pkg des jeux PSVita pour les utilisé avec le plugin NoNpDRM, extraction des PKG PSP et aussi peut installer le hack h-encore sur des PSVita compatible avec ce exploit.

La nouvelle version qui est la 1.8.4 apporte lui aussi le support offline de l'obtention de la clé CMA.
Source et téléchargement : Psvimgtools Easy FrontEnd 1.8.4
En savoir plus…

StargateNX gratuit pour tout le monde

ATTENTION !!!!

 
Plus tôt hier dans la journée, l'équipe de StargateNX m'avais contactés et me disant dit qu'ils avaient reçu beaucoup de commentaires précieux, mais qu'ils voulaient le rendre leur service encore meilleur. Ils ont donc décidé d'offrir à chacun un "ESSAI GRATUIT" pour montrer à la scène Switch, comme il est facile à utiliser pour installer ce que vous voulez, quand vous voulez, où que vous soyez, sur votre console Switch, en toute simplicité, avec un contrôle total de l'utilisateur et en toute liberté.
Pour ceux qui ne le connaisse pas avant de vous lancer, StargateNX est une solution qui utilise le SX Installer de la Team Xecuter pour vous permettre de bénéficier de jeux, des mises à jour et des DLC sur votre console sans limite. Avec une catalogue de plus de 3,050 jeux et DLC, il offre un accès à tous les jeux eShop de la Nintendo Switch sans restriction même avec les consoles bannie.

Pour profité du service, vous devez avoir installer le CFW SX OS ainsi que SX Installer v1.4 sur votre console Switch. La période d’essai prendra fin le 8 Mars 2019 et vous pouvez profiter que des DLC et mise à jours de vos jeux pour testé. Une fois la période d'essai fini, vous devez payer 24,95 $/mois. Les jeux installés seront accessibles, sans aucune limitation, même après l'expiration de votre abonnement.
Ci-dessous, la marche à suivre pour profité de cet offre :

ModConsoles vous fera un review pour vous donné une idée du produit en testant la bande passante et la fiabilité de la sécurité qu'il possède ainsi que la stabilité du serveur.
 
En savoir plus…

Chatbox - 129896 Messages. Spammers: neoskyriper (19639) . chronoss (18197) . crash over ride (13804) .

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

    ×