Développer un homebrew sur PSP
Les outils de développement
Le PSP Tool Chain (PSPSDK)
Qu’est-ce qu’un ToolChain ? On pourrait aussi l’appeler l’"ensemble d’outils", ce sont toutes les fonctions et librairies spécifiques à la PSP. Celui-ci nous permettra de développer nos applications en C ou C++ et également de compiler les HomeBrew PSP sur le PC. Pour les exemples fournis ici, j'ai utilisé la distribution Linux Unbuntu 9.10. L’installation du ToolChain est relativement simple et expliquée ici. On installera ainsi un compilateur, les librairies de développement en C et C++, support des instructions ALLEGREX (nom du processeur de la PSP), portage de Newlib pour le support des fonctions des libc et stdc++.
Tous ces outils vont nous permettre de générer des exécutables pour notre PSP. Avant toute choses, voici quelques informations intéressantes concernant la PSP et les exécutables.
Le noyau de la PSP est construit comme un "ensemble de modules séparés". Les applications utilisateurs sont aussi considérées comme des modules. Cela implique :
- Ils peuvent être chargés et démarrer à nos souhaits.
- Peuvent être chargés dans des espaces mémoires fixes ou réallouables.
- Peuvent exporter et importer des fonctions depuis d'autres modules.
La PSP utilise le "Executable and Linking Format" (format ELF) comme base de ses modules. Le noyau peut charger charger nativement trois types de fichiers :
- ELF - Un ELF est un format pour les fichiers "modules". Il est aux exécutables ce que GIF et JPEG sont aux images. Un ELF standard spécifie basiquement le format binaire d’un fichier. On y trouve un entête ELF suivi de nombreuses sections. Chaque section a une fonctionnalité comme inclure le module des instructions, définir les fonctions exportées / importées, ou encore initialiser l’exécutable.
- PRX - format personnalisé des ELF.
- ~PSP - conteneur crypté pour les ELF et PRX.
Avec le SDK nous ne pouvons pas générer les fichiers de type ~PSP.
Nos exécutables se présenteront sous la forme d'un fichier EBOOT.PBP. C'est l’équivalent d’un exécutable. Il regroupe l’exécutable principal et les autres fichiers qui peuvent contenir des metadata comme des images ou encore des vidéos courtes. Le format des fichiers PBP est simple : un entête PBP de taille fixe (4 octets pour un magic number number (‘\0’, ‘P’, ‘B’, ‘P’), un entier non signé qui sert de numéro de version et 8 adresses internes au fichier PBP qui pointent vers des fichiers : "PARAM.SFO", "ICON0.PNG", "ICON1.PMF", "UNKNOWN.PNG", "PIC1.PNG", "SND0.AT3« , "UNKNOWN.PSP" and "UNKNOWN.PSAR".
Quand le kernel charge et démarre un module comme une appli, il lit le fichier EBOOT.PBP, en extrait le ELF ou PRX, parse les différentes sections, génère les liens entre les modules importés et prépare les appels systèmes, créé une copie en mémoire et exécute au point d’entrée.

Old School Library
La OSLib (pour Old School Library) est une librairie écrite en C qui facilite grandement le développement sur PSP. Elle offre de multiples possibilités :
- Charger des images (PNG ou GIF) avec un canal alpha.
- Dessiner directement sur ces dernières, les déformer.
- Afficher des cartes.
- Utiliser des messages de debuggage.
- Jouer des fichiers audio
- Définir notre propre framerate.
- Pleins d'autres fonctionnalités
A l'aide de l'OSLib, on peut facilement créer des applications et surtout des jeux (en deux dimensions). Le site officiel : PlayerAdvance.