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

Un coup d'oeil dans le rétro: Que s'est il passé cette semaine?

PSVITA
Auto h-encore v0.4.3
L'installateur de noahc3 pour  installer H-encore se met à jour, le principal changement concerne l'AID renseigné qui est maintenant correctement vérifié afin de prévenir l'utilisation d'un mauvais AID.

    
   Vita Homebrew Browser 0.82
Vous cherchiez plein d'homebrews pour votre PSVITA, Vitahomebrew Browser de devnoname120 est fait pour vous.

Les changements sont mineurs:
    
SWITCH
La scène Switch est en ébullition, plein de nouveautés pour vos Nintendo Switch
Hekate v3.2
       Hekate est un bootloader Custom

    
Switch backup Manager
 Un développeur nommé GibaBR a sorti un programme nommé Switch Backup Manager, les mises à jours se sont enchainées ces derniers jours. Comme son l'indique, c'est un outil complet de gestion des Backups Nintendo switch sur PC.

Changelog v1.0
Les autres changelogs sont disponible sur le Github
    
NXPlay
Nxplay de XorTroll vient de sortir, il s'agit d'un lecteur multimédia, pour le moment les formats supportés sont audios:
MP3, WAV, OGG, MOD ou FLAC, le développeur entend bien sûr réussir à porter les formats vidéos

 
    
PS3
Webman MOD v1.47.09
Aldostool vient de sortir une mise à jour de notre tant aimé Webman MOD, cette mise à jour apporte son contenu de nouveauté, un certain nombre de changements visant à améliorer la performance globale du plugin avec divers réglages, tout en ajoutant de nouvelles fonctionnalités pour votre PS3 et un nouveau support pour de nouveaux cœurs (libretro), support du lanceur de ROM PKG mis à jour..Voir le changelog fourni inclus pour tous les changements dans cette mise à jour.

En savoir plus…

kezplez-nx : obtenir toutes les clés de sa Nintendo Switch

Les clés de la Nintendo Switch sont bel et bien publiques mais les obtenir légalement est une autre chose et c'est tesnos qui nous livre depuis un certain moment via son github, un payload accompagné d'un homebrew pour vous aider à récupérer toutes les clés de votre console. 

L'outil se base sur le payload CTCaer's hekate pour dumper les fichiers fuses et tsec_keys vers votre SD et l'homebrew lancé par le HBL va déchiffrer ces fichiers pour créer un fichier keys.txt à la racine de votre SD avec toutes les clés dessus.
Source et détails

En savoir plus…

Mise à jour de plusieurs applications et plugins depuis la sortie de H-Encore

    ONEMenu for PSVita v3.04

    
    Adrenaline Bubble Manager v5.06

    
    AdrBubbleBooter
       
    
    Vita-shellbat
    
    
    ShellSecBat
    



    
En savoir plus…

Psvimgtools Easy FrontEnd 1.7.9 pour h-encore

Avec le nouveau hack de TheFl0w qui vient de sortir et qui passe par une démo DRM Free, MRGhidini, le développeur du grand logiciel de la PSVita nommé Psvimgtools Easy FrontEnd fait passer son programme en version 1.7.9 et dans le lot de nouveautés, il facilite l'installation de la bulle h-encore pour hacker votre PSVita en firmware 3.65/3.67 et 3.68
Il suffit de télécharger la démo Biter Smile, de le transférer dans le dossier de l'application et de faire comme suit sur les images ci-dessous :



Le programme extrait le demo.pkg et installe h-encore, à vous de le placer dans le dossier QCMA et ensuite de le transférer sur votre console. Facile et rapide !

En savoir plus…

H-encore: Le Hack 3.65/3.68 publié

    Thefl0w frappe fort encore une fois de plus et nous livre le hack de la Vita/TV tant attendu pour les versions 3.65/3.68 qu'il a appelé H-encore.
    Qui dit nouveau hack, dit nouvelle version des homebrews et plugins et nous allons voir ce qui a été mis à jour et ce qui est nouveau dans ce nouveau hack :
     
    H-encore
    Le nouveau nom du hack de TheFl0w pour les PSVita muni du firmware 3.65 et 3.68. Contrairement à la version 3.60, ce hack se base sur l'installation d'une bulle modifiée et ne requiert pas une connexion internet pour hacker votre console. A noter que vous devez avoir QCMA installé sur votre PC pour profiter de l'exploit.
 
    Une petite idée de ce qui vous attend :
                       
     
    Enso installer
    Comme sur la versions 3.60, ce petit bijou permet d'installer un patch permanent afin de lancer HENkaku au démarrage de votre console sous le firmware 3.65. Pas compatible en 3.68 hélas.
    
    
     
    VitaShell
    Le célèbre gestionnaire de fichiers de la PSVita se met aussi à jour au rythme du hack en v1.94 et apporte son lot de nouveautés qu'on ne peut citer mais vous pouvez en apprendre plus depuis son Github officiel.
    
    
  Nous vous proposons également un fichier permettant de traduire VitaShell en français. Placer ce fichier french.txt dans ux0:VitaShell/language/ puis redémarrer VitaShell. 

 
    NoNpDrm
    Le célèbre plugin de Thefl0w passe en v1.2 et reste compatible avec les 3.65/3.67/3.68. Ce plugin qui a remplacé Vitamin,  le premier dumper des jeux de la PSVita par la Team Freek, vous aidera à dumper vos jeux Vita dans leur intégralité sans modifier aucun fichier dans le jeu et créer une fausse licence afin de pouvoir les utiliser sans problème. Les jeux dumpés avec ce plugin peuvent se mettre à jour via les serveurs de Sony directement depuis l'interface de la console (à condition que la mise à jour ne nécessite pas un firmware supérieur à celui présent sur la console, ce qui bien entendu empêcherait le lancement du jeu).
    
    
    Gamecard microSD
    Ce fabuleux plugin par xyzz ne peut rester derrière les autres et se voit passer en v1.3 pour être compatible avec le nouveau hack. Par rappel, ce plugin sert à utiliser une carte microSD à la place de la carte mémoire officielle de Sony mais cella requiert l'adaptateur SD2Vita placé dans le port de votre cartouche de jeux.
    
    
     
    Adrenaline
    La PSP est toujours restée gravée dans nos cœurs et on ne peut se passer de ses jeux. Adrenaline vous permettra de revivre l'âge d'or de la PSP,  pouvant également  lancer des jeux PSOne convertis en EBOOT.PBP ainsi que des émulateurs comme celui de la SNES, GBA, N64, MAME et bien plus encore.
    En clair, vous avez une PSP dans la PSVita.
    
    
    USBMC
    Ce plugin vient du célèbre yifanlu puis adapté par TheFl0w. Avec lui, vous allez pouvoir monter une clé USB ou disque dur sur votre PSVita TV au démarrage de la console  ou une carte PSVSD à place du module Wifi pour les PSVita 3G.
    
    
     
    En bonus, je vous livre quelques plugins utiles pour exploiter votre console à fond :
    StorageMgr
    Le plugin de @CelesteBlue qui vous permettra de monter n'importe quel support installé sur votre console vers un autre répertoire sans toucher à son contenu. Idéal pour passer d'une mémoire à une autre sans passer par le PC.
    Compatible avec les firmwares 3.65 et 3.67
    
     
    DownloadEnabler
    Télécharger n'importe quel contenu sur internet depuis votre console grâce à ce plugin fait par TheFl0w, le fichier téléchargé ira se poser sur ux0:download, il est maintenant compatible avec les firmwares 3.65, 3.67 et 3.68
    
     
    PNGSHOT
    Encore un plugin par xyzz pour faire de jolies captures d'écran au format .png de vos jeux, utilisable sur n'importe quelle application et pas de filigrane sur vos images. Même combo avec la version officielle pour faire des captures "Bouton PS + Start" et il utilise le même répertoire des photos pour voir vos captures d'écrans. Il passe en v1.2 et devient compatible avec les firmwares 3.65, 3.67 et 3.68
    
     
En savoir plus…

Chatbox - 124370 Messages. Spammers: neoskyriper (19638) . chronoss (17342) . crash over ride (13610) .

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
      • ModConsoles
      • Le Bar
      • Tutoriaux
      • News
    • Microsoft
      • FAQ
      • XBOX ONE
      • XBOX 360
      • XBOX
    • Sony
      • FAQ
      • PSVita/TV
      • PS4
      • PS3
      • PSP
      • PS2
    • Nintendo
      • FAQ
      • Amiibo
      • Switch
      • WiiU
      • Wii
      • 3DS/DS/DSi
    • Développements
      • FAQ
      • Apprendre a programmer
      • Microsoft
      • Sony
      • Nintendo
      • PC
    • Autres
      • FAQ
      • Jeux Rétro
      • Ordinateur
      • Electronique
    • Super Marché
      • Ventes
      • Achats
    • 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
    • Multi
    • 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. NNU Patcher fut à l'origine écrit par FIX94, modérateur du forum GBATemp, son but était simplement de permettre un accès temporaire à l'eShop sans avoir le dernier firmware en date sur la WiiU, nécessitant un exploit Kernel et utilisant un installateur pour pouvoir y récupérer le contenu. Il fut ensuite repris par Dibas, membre du forum GBATemp, afin de pouvoir être directement utilisé sous Homebrew Launcher. C'est cette version que je vous présenterai ici, son utilisation étant fortement simplifiée tout en étant plus stable. NNU Patcher fut, par exemple, fortement utilisé par les utilisateurs possédant un firmware 5.5.1 voulant mettre en place Haxchi. Pour cela il est nécessaire de télécharger un jeu DS depuis l'eShop. Compte tenu qu'un firmware 5.5.2 a été publié par Nintendo, l'utilisation de NNU Patcher fut donc massive. Comme je le disais son utilisation est extrêmement simple : Télécharger NNU Patcher v0.1 Extraire l'archive à la racine de la carte SD Paramétrer sur la console les DNS affichées dans la fenêtre "InfoBox" Lancer un exploit kernel (CBHC, Haxchi, Mocha) Lancer Homebrew Launcher Lancer NNU Patcher Une redirection automatique vers le menu home a lieu Ouvrir l'eShop Télécharger le contenu souhaité Remerciements: FIX94 pour NNU Patcher Dibas pour son adaptation HBL
    2. 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
    3. 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 #---------------------------------------------------------------------------------
    4. 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.
    5. 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.
    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.3_r21_(HBL_HBC).zip; Une version chaîne installable depuis WUP Installer Y Mod: WUP_Installer_GX2_v1.3_r21_(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.
    ×