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 :

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 :

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.

eboot process

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 :

A l'aide de l'OSLib, on peut facilement créer des applications et surtout des jeux (en deux dimensions). Le site officiel : PlayerAdvance.