Aller au contenu

Chatbox - 113995 Messages. Spammers: neoskyriper (18409) . chronoss (14848) . crash over ride (12429) .

Charger plus
    Vous n'êtes pas autorisé à Chatter.

    Rechercher dans la communauté

    Affichage des résultats pour les étiquettes 'homebrew'.



    Plus d’options de recherche

    • Rechercher par étiquettes

      Saisir les étiquettes en les séparant par une virgule.
    • Rechercher par auteur

    Type du contenu


    Forums

    • Annonces et Détente
      • STAFF
      • Le Bar
      • Tutoriaux
      • News
    • Développements
      • Apprendre a programmer
      • Microsoft
      • Sony
      • Nintendo
      • PC
    • Microsoft
      • Lexicon
      • XBOX ONE
      • XBOX 360
      • XBOX
    • Sony
      • Lexicon
      • PSVita/TV
      • PS4
      • PS3
      • PSP
      • PS2
    • Nintendo
      • Lexicon
      • Amiibo
      • Switch
      • WiiU
      • Wii
      • 3DS/DS/DSi
    • Autres
      • Jeux Rétro
      • Ordinateur
      • Electronique
    • Clan Wars
      • Clan Wars

    Catégories

    • Consoles
      • Microsoft
      • Sony
      • Nintendo
    • Arduino
    • PC
    • Jeux Rétro

    Calendriers

    • Community Calendar

    Catégories

    • Microsoft
      • Xbox One
      • Xbox 360
      • Xbox
    • Sony
      • PSVita/TV
      • PS4
      • PS3
      • PSP
      • PS2
    • Nintendo
      • Switch
      • WiiU
      • Wii
      • 3DS/DS/DSi
    • Jeux Retro
    • PC

    Catégories

    • Club Articles

    Catégories

    • Clan Wars

    Marker Groups

    • Members

    Catégories

    • Hack
      • Microsoft
      • Sony
      • Nintendo
    • Autres
      • Microsoft
      • Sony
      • Nintendo
      • Jeux Rétro
      • PC
      • Elèctronique
      • Divers

    Catégories

    • Gaming
    • développements
    • Techniciens/Moddings
    • Sports/Training
    • Non Classé

    Catégories

    • Générale
    • PC
    • Jeux
    • Films
    • Consoles
      • Sony
      • Microsoft
      • Nintendo
      • Jeux Rétro

    11 résultats trouvés

    1. Utilisation simple de la libPS4 Grace a Cturt,il existe un SDK open source pour pouvoir compiler des payloads PS4. Pour installez le SDK rendez vous ici et suivez les instructions pour l'installation. Une fois que vous aurez suivi les instructions,compilez un des examples pour vérifier que l environnement de compilation est bien installé. Chapitre 1 : Les sockets pour communiquer Dans ce premier exemple nous allons voir comment écrire un payload capable d'envoyer du texte depuis la PS4 vers votre PC. L'exemple qui me sert de base se trouve dans le dossier examples/socket du SDK. Petit rappel: les sockets sont des connecteurs réseaux,apparus sur les systémes UNIX(BSD historiquement) ils permettent par example d'établir facilement une connexion TCP/IP. Faites une copie du dossier,ici je l'appelerai /socketModConsoles. une fois dans ce dossier ouvrez le fichier main.c avec un éditeur de texte,comme dit precédemment les sockets peuvent initier une session TCP/IP,il va donc falloir lui indiquer a quelle adresse envoyer le texte,quand la PS4 éxecutera le .bin elle enverra les infos vers l'adresse IP et sur le port que l'on a choisit. bien nous pouvons maintenant compiler le payload,si vous avez des problémes avec le fichier ps4.h modifiez le makefile pour qu il pointe a la racine du SDK. Maintenant copiez socketsModConsoles.bin dans le répertoire de vos payloads. nous allons démarrer le ps4-host-exploit(voir ici) et ouvrir une interface pour ecouter sur le port 9023 à l'adresse IP 192.168.0.1 La commande pour creer une interface d'écoute est : nc -l -p 9023 -s 192.168.0.1 vous pouvez verifier si l'interface est bien en écoute grace a la commande : netstat -antp Maintenant lancez le navigateur sur la PS4 et utilisez un exploit qui permet la reception des payloads,ici j'utilise celui d'IDC,quand la PS4 est préte à recevoir le payload envoyez socketsModConsoles.bin. et voila notre texte envoyé depuis la ps4 : Chapitre 2: Executer une commande sur la PS4 avec les syscall(Appel systeme) Maintenant nous savons comment établir une connexion pour communiquer entre la PS4 et le PC,nous allons donc lancer une commande sur la PS4 et envoyer le retour sur le PC. Gardons le payload modifié au dessus comme base et rajoutons un syscall dedans. Petit rappel: Un syscall est une fonction executé par le systéme d'expoitation,on peut les utiliser directement ou via une fonction crée en C par exemple,quelques examples de syscall souvent utilisés : open,read,close pour manipuler les fichiers, setuid,getuid pour regler ou connaitre les droits d un utilisateur... La PS4 se basant sur FreeBSD 9.0 une liste des syscalls disponibles se trouve ici (seuls ceux taggés avec STD sont sur d'etre présent sur la PS4) , il faut ajouter a cela des syscalls "custom" que sony à inclus dans le kernel(repertoriés en partie ici) utilisé principalement pour gérer les modules,la mémoire et la sandbox par exemple. Bien,ouvrez le fichier main.c avec votre éditeur de texte et modifiez le comme suit: #include "ps4.h" #define debug(sock, format, ...)\ do {\ char buffer[512];\ int size = sprintf(buffer, format, ##__VA_ARGS__);\ sceNetSend(sock, buffer, size, 0);\ } while(0) int _main(void) { // Init and resolve libraries initKernel(); initLibc(); initNetwork(); int pid = syscall(20); // Connect to server and send message char socketName[] = "debug"; struct sockaddr_in server; server.sin_len = sizeof(server); server.sin_family = AF_INET; server.sin_addr.s_addr = IP(192, 168, 0, 1); // A remplacer par l'adresse IP de votre PC server.sin_port = sceNetHtons(9023); //Le port du PC sur lequel on enverra le texte memset(server.sin_zero, 0, sizeof(server.sin_zero)); int sock = sceNetSocket(socketName, AF_INET, SOCK_STREAM, 0); sceNetConnect(sock, (struct sockaddr *)&server, sizeof(server)); debug(sock, "Hello ModConsoles.fr\n"); //\n pour revenir a la ligne debug(sock, "Je suis une PS4\n"); debug(sock, "J'utilise les sockets pour communiquer avec le PC\n"); debug(sock, "voici l'identifiant de processus depuis lequel notre code est execute\n"); debug(sock, "PID : %d\n",pid); sceNetSocketClose(sock); // Return to browser return 0; } le syscall(20) permet de récuperer le PID c'est à dire l'identifiant de processus(ici le navigateur puisque c'est lui qui recoit le payload),regardez les differentes sorties sur les screens qui suivent. 1er envoi du payload Le navigateur à le PID 61 2eme envoi du payload sans quitter le navigateur : Le navigateur a le même PID 61 3eme envoi mais cette fois je vais quitter et relancer plusieurs fois le navigateur avant d'envoyer le payload Le PID change
    2. 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 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 #---------------------------------------------------------------------------------
    3. Je vous ai fait ce tutoriel pour vous expliquer comment installer le SDK non officiel PS Vita sur un pc équipé de Windows 10. Un SDK est en environnement de développement qui va vous permettre de créer vos propres homebrews pour PS Vita et PS TV. Bien sur pour créer vos homebrews il faudra que vous sachiez programmer un SDK n'est pas magique ;) 1ère Etape : Installation de MYSYS2: Rendez vous sur le site de MYSYS2 pour le télécharger http://www.msys2.org/ Pour ma part étant donné que je suis sur un système 64 Bits http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20161025.exe Si vous possédez un PC 32 Bits choisissez ce lien http://repo.msys2.org/distrib/i686/msys2-i686-20161025.exe Vous pouvez lancer l'installation: Suivez les étapes jusqu’à la fin: Lancez la commande suivante: pacman -Syu Laissez le terminal finir l'installation (cela peu prendre un bon moment) Pour être sur de la bonne installation relancer une seconde fois la commande et vous devriez avoir ceci: Lancer ensuite la commande suivante: pacman -Su Laisser l'installation finir et quitter MSYS2 L'installation de MSYS 2 est terminée. Vous pouvez créer un raccourci sur votre bureau en définissant cet emplacement: C:\msys64\msys2_shell.cmd -mingw64 2 ème étape : Installation du SDK VITA: Ouvrez votre raccourci (vous pouvez à ce moment là utiliser ce script renommé en .sh pour automatiser l'installation ou le faire à la main dans ce cas continuer): Comme vous le voyez nous sommes sous MINGW64 et non MSYS donc par sécurité on va refaire les deux commandes précèdentes pour être sur qu'il ne nous manque rien: pacman -Syu et pacman -Su Continuons avec la commande suivante: pacman -Su make git cmake tar mingw64/mingw-w64-x86_64-libwinpthread-git Laissez l'installation finir, fermer votre terminal et aller dans ce repertoire : C:\msys64\home\VOUS Editer le fichier .bashrc avec notepad ++ pour y rajouter à la fin ces deux lignes: export VITASDK=/usr/local/vitasdk export PATH=$VITASDK/bin:$PATH # add vitasdk tool to $PATH Enregistrer et fermer une fois le fichier modifié. Relancer votre raccourci et taper cette commande en laissant finir les opérations : git clone https://github.com/vitasdk/vdpm Déplacer vous dans le répertoire vdpm avec cette commande: cd vdpm Ensuite taper cette commande en laissant finir les opérations : ./bootstrap-vitasdk.sh Et ensuite celle-ci: ./install-all.sh Voila votre SDK est normalement opérationnel ;) 3ème étape Vérifions avec la compilation d'un homebrew: Dans cette partie j'ai utiliser le HelloWorld de mon autre sujet :http://modconsoles.fr/saves/psvita/hello_world.zip Placer le dossier de votre homebrew à compiler dans ce dossier: C:\msys64\home\VOUS Ensuite lancer le raccourci du SDk sur votre bureau: Vous pouvez taper la commande suivante pour vérifier que le dossier de votre homebrew est bien présent: ls Vous devriez avoir ceci: Ensuite vous devez vous placer dans le répertoire de votre homebrew via cette commande: cd lerepertoiredevotrehomebrew Vous devriez avoir ceci: Ensuite vous devez vous placer dans le répertoire "build" de votre homebrew: cd build Si ce dossier n'existe pas utiliser cette commande pour créer le répertoire: mkdir build Et replacer vous dans le dossier build pour exécuter la commande suivante: cmake .. Vous devriez avoir ceci: Une fois cette étape terminer il vous reste une simple commande à utiliser: make Vous devriez avoir ceci: Vous pouvez récupérer votre VPK dans le répertoire "build" Pour vous simplifier la vie vous pouvez placer ce script compilation.sh et le lancer via ./compilation.sh en étant dans le répertoire de votre homebrew Si une de ses étapes ne fonctionne pas je vous conseille de relire et de vérifier que vous n'avez rien oublier. Merci à BenMitnick pour son aide précieuse sur l'installation.
    4. Le premier homebrew sur cette console vient de BigBoss , c'est toujours via l'application Playroom que tout ce passe mais il dit pouvoir l'installer directement dans la console grâce.
    5. NNU Patcher est un patch temporaire développé par FIX94, permettant d'avoir accès à l'eShop sur WiiU en ayant un ancien firmware et sans être obligé d'installer le dernier firmware en date. Il permet également de télécharger les mises à jour des jeux (à certaines conditions) tout en bloquant les mises à jour système. C'est ensuite dibas qui a diffusé une version améliorée du patch de FIX94 au format ELF, pouvant être lancée comme tout homebrew depuis Homebrew Launcher ou Homebrew Launcher Channel. Concernant son téléchargement, je conseille de récupérer l'archive diffusée par WiiUBrew car celle-ci contient déjà tout le nécessaire (les fichiers meta.xml et icon.png inclus) ainsi il n'y a plus qu'à extraire son contenu à la racine de la carte SD pour le mettre en place. Pour pouvoir le lancer il suffit ensuite de passer par Homebrew Launcher ou Homebrew Launcher Channel. Ce qui aura pour conséquence de retourner sur l'interface WiiU mais avec un accès eShop activé. Tel le patch temporaire qu'il est, NNU Patcher doit être relancé à chaque fois que vous éteignez votre console si vous souhaitez à nouveau accéder à l'eShop ou télécharger des mises à jour de jeux. Sources: Le GitHub de FIX94 Le GitHub de dibas WiiUBrew
    6. ftpiiU développé par dimok789, est un portage de ftpii développé par joedj et qui est à l'origine un homebrew de serveur FTP pour Nintendo Wii. Bien entendu, ftpiiU est quand à lui destinée à la Wii U et permet tout simplement d'effectuer une liaison par protocole FTP entre la console et un logiciel client sur l'ordinateur (FileZilla par exemple). À noter que, comme tout homebrew, celui-ci doit être lancé depuis Homebrew Launcher ou Homebrew Launcher Channel. Les informations communiquées par ftpiiU seront directement affichées sur le gamepad WiiU mais également sur l'écran TV permettant l'affichage d'un log plus conséquent. Le téléchargement de ftpiiU se fait directement sur le GitHub de son auteur. Il est important de signaler qu'une seconde version nommée ftpiiU everywhere existe, développée par FIX94 et disponible sur son GitHub, celle-ci se destine aux utilisateurs d'Haxchi/CBHC. Concernant son installation, rien de plus simple, il suffit d'extraire l'archive ftpiiu.v0.4.zip de la version de dimok789 à la racine de la carte SD. Concernant la version de FIX94, il faut copier le fichier ftpiiu.elf sur la carte SD dans un dossier wiiu/apps/ftpiiu. Il est également possible d'y ajouter l'image postée comme en-tête de cet article en temps qu'icône à afficher dans Homebrew Launcher, pour se faire, il faudra renommer l'image en icon.png et la placer également dans le même dossier que le fichier ftpiiu.elf. Je tiens, au passage, à remercier TiMeBoMb4u2, qui est l'auteur de cette icône. Enfin sachez que l'équipe de ModConsoles travaille pour pouvoir vous proposer un tuto traitant de son utilisation très prochainement.
    7. WUP Installer GX2 développé par dj_skual, est la rencontre de WUP Installer Y Mod de Yardape et de l'interface graphique utilisateur de Loadiine GX2. Cette application, tout comme WUP Installer Y Mod, permet donc d'installer des titres publics tels les jeux, les mises à jour de jeux et les contenus téléchargeables sur la mémoire système de la Wii U (NAND) ou sur un support USB formaté par la Wii U, tout en proposant une interface le rendant agréable à utiliser. dj_skual diffuse deux versions de WUP Installer GX2: Une version qui peut-être lancée depuis Homebrew Launcher et Homebrew Launcher Channel: WUP_Installer_GX2_v1.1_(HBL_HBC).zip; Une version chaîne installable depuis WUP Installer Y Mod: WUP_Installer_GX2_v1.1_r19_(Channel).zip. Enfin n'oublions pas les remerciements effectués par l'auteur de cette version: À l'équipe Loadiine GX2 pour les sources de leur interface graphique utilisateur. À Yardape pour les sources de l'installateur. À brienj pour le port original rpx. Concernant la version prévue pour être lancée depuis HBL/HBC, rien de bien compliqué, il suffit d'extraire le contenu de l'archive sur sa carte SD puis de le lancer en passant par HBC/HBL. Concernant l'installation de la version chaîne, je vous invite à consulter le tuto réalisé par coc4tm dont l'étape finale traite de l'installation des chaînes.
    8. RetroArch développé par la Team Libretro est une interface pour émulateurs, moteurs de jeux et lecteurs média. Celui-ci permet de jouer à des jeux classiques dans un large choix d'ordinateurs et de consoles au travers d'une astucieuse interface graphique. Les paramètres sont également unifiés, de ce fait la configuration est faite une fois pour toutes. RetroArch possède de nombreuses fonctionnalités, parmi celles-ci: Une brillante interface: Naviguez dans votre collection de jeux via un magnifique clone du menu XMB de la PS3. Après avoir scanné votre collection, les jeux seront triés par système. Le menu supporte les vignettes et contient divers fonds animés; Hautement configurable: Notre interface de paramètres avancés vous permet de modifier chaque option possible concernant le lancement et l'affichage des jeux. Chaque paramètre possède une valeur par défaut logique, le tout peut être prêt en peu de temps; Configuration automatique des manettes: Les manettes les plus communes sont automatiquement configurées lorsqu'elles sont connectées, simplement comme une vraie console de jeux. Idéal pour le jeu à plusieurs, quand un ami apporte sa propre manette. Il est aussi possible de configure les manettes manuellement afin d'assigner des actions spéciales via des combinaisons de boutons; Le support des shaders: Les shaders sont des filtres graphiques efficaces qui peuvent grandement améliorer le rendu des vieux jeux. Ils peuvent également être utilisés pour reproduire le look et l'effet des vieux moniteurs CRT. Vous pouvez même les cumuler afin de créer votre propre effet. Les possibilités sont sans fin; Les succès: Débloquez des succès sur vos jeux classiques favoris! RetroArch intègre le service RetroAchievements pour pouvoir débloquer des trophées et des badges comme sur les consoles modernes; Jeu en ligne: Hébergez ou rejoignez une session de jeu en ligne. Redécouvrez les joies du jeu à plusieurs en utilisant le salon de jeu en ligne intégré à RetroArch. Vous pouvez également utiliser le mode spectateur pour regarder les autres jouer; Enregistrement et diffusion:RetroArch est capable d'enregistrer votre session de jeu dans un fichier vidéo. Le même méchanisme vous permet également de diffuser en direct vos parties sur des plateformes telles que Twitch.tv ou Youtube; Étendre la bibliothèque d'applications: De nouveaux programmes sont constamment ajoutés à la bibliothèque d'applications de RetroArch. Et avec la fonction de mise à jour intégrée à RetroArch, vous pouvez télécharger directement les nouveaux programmes dès qu'ils sont disponibles! Vous l'aurez compris, RetroArch est un incontournable du monde de l'émulation! Pour le télécharger, veuillez descendre jusqu'à la section WiiU de cette page. Pour plus d'informations sur la méthode d'installation, je vous invite à consulter le tuto intitulé "Utiliser correctement le dernier RetroArch sur WiiU"
    9. Nintendont est développé par FIX94, c'est un homebrew Wii permettant de jouer aux jeux GameCube sur Wii et sur vWii pour la WiiU. Voici, dans les grandes lignes, ce que vous pouvez en attendre: Pour de plus amples informations concernant le téléchargement des fichiers, les fonctionnalités et l'utilisation de Nintendont, je vous invite à suivre le tuto suivant:Nintendont: Les jeux GameCube sur Wii et WiiU via le hack vWii Pour pouvoir profiter de Nintendont sans avoir besoin du hack de la vWii, je vous invite à consulter le tuto suivant:Nintendont WiiVC: Les jeux GameCube sur WiiU sans le hack vWii!
    10. Saviine développé par Maschell, membre du forum GBATemp, est un outil pour sauvegarder et injecter les sauvegardes de jeux sur WiiU. Celui-ci fonctionne avec Homebrew Launcher et il est compatible sur les firmwares 5.0.0, 5.1,0, 5.3.2, 5.4.0, 5.5.x mais nécessite un exploit kernel. Maschell précise ainsi à son sujet sur son topic officiel: Maschell remercie ainsi dimok (pour Homebrew Launcher, Loadiine GX 2, et ddd qui ont été l'environnement de base de la version actuelle) mais également chadderz (pour cafiine. Continuant d'utiliser certaines de ses vieilles fonctions) Comme d'habitude, c'est sûr le GitHub de l'auteur qu'il faut se rendre afin de pouvoir télécharger cette application. Enfin sachez qu'un tuto sera bientôt disponible sur ModConsoles concernant son utilisation. Sources: Le GitHub de Maschell. Le sujet officiel sur GBATemp.
    11. Homebrew Launcher pour WIiU est developpé par dimok789, HBL de son acronyme, est un homebrew WiiU qui permet de lister les applications homebrews au format ELF et RPX situées sur la carte SD et permet de les lancer (similaire à Homebrew Channel sur Wii). Il existe deux versions différentes: La version Homebrew marche comme tout autre homebrew, situé sur la carte SD et chargée depuis un exploit webkit; La version Chaîne est installée sur la console et ne nécessite aucune connexion internet pour être lancée mais nécessite l'utilisation d'un CFW (tel Haxchi ou Mocha). Les deux versions peuvent être téléchargées depuis le GitHub de l'auteur, l'archive correspondante à la version homebrew se nomme homebrew_launcher.v1.4.zip, tandis que l'archive correspondante à la version chaîne se nomme homebrew_launcher_channel.v2.1.zip. Cependant certaines limitations s'appliquent à Homebrew Launcher, actuellement seuls les fichiers ELF jusqu'à 6.5 MB sont supportés. Le support des fichiers RPX a été ajouté sur HBL v1.4, les fichiers RPX jusqu'à 68MB sont supportés. Tous les homebrews lancés redirigeront automatiquement vers HBL en les quittant. Lancer Miimaker relancera HBL, excepté avec Loadiine qui relancera Loadiine. Il faut quitter Loadiine (bouton home) pour retourner à HBL. Enfin, concernant l'installation d'Homebrew Launcher, vous pouvez consulter le tuto réalisé par coc4tm, celui-ci traitant d'Haxchi, de CBHC mais également d'HBL/HBC. Sources: Le GitHub de dimok789. Le sujet crée par Cyan, membre de l'équipe GBATemp. Icône du sujet réalisée par TiMeBoMb4u2, membre du forum GBATemp.
    ×