0% ont trouvé ce document utile (0 vote)
57 vues32 pages

Programmation Playstation 2

Le document décrit l'architecture de la PlayStation 2. La PS2 a quatre parties principales : le processeur d'entrée/sortie (IOP), le processeur Emotion Engine (EE), le synthétiseur graphique (GS) et le processeur audio (SP). L'EE est le cœur de la PS2 et s'occupe des calculs 3D, de la physique du jeu et de la direction générale du jeu. Le résultat des calculs de l'EE est envoyé au GS pour être affiché à l'écran.

Transféré par

ScribdTranslations
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
57 vues32 pages

Programmation Playstation 2

Le document décrit l'architecture de la PlayStation 2. La PS2 a quatre parties principales : le processeur d'entrée/sortie (IOP), le processeur Emotion Engine (EE), le synthétiseur graphique (GS) et le processeur audio (SP). L'EE est le cœur de la PS2 et s'occupe des calculs 3D, de la physique du jeu et de la direction générale du jeu. Le résultat des calculs de l'EE est envoyé au GS pour être affiché à l'écran.

Transféré par

ScribdTranslations
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

PlayStation 2

Architecture et Programmation

Rafael García Moreno <[email protected]>

9 mai 2003
Index général

1. Introduction 2

2. Architecture de la PS2 5
2.1. Moteur d'émotion 6
2.2. Processeur d'E/S 8
2.3. Synthétiseur Graphique (SG) . . . . . . . . . . . . . . 8. . . . . . . . . . . .

3. Protection anti-copie de la PS2 et modchips 10


3.1. Protection anticopie . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. La partition de données . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3. Méthode CogSwap pour éviter la protection anticopie . . . . . . . . . . . . . .
3.4. Puces sans soudure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5. Modchips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6. Sauvegardes de jeux sous linux et création de CD pour la PS2 . . . . . . . .

4. Méthodes de programmation de la PS2 18


4.1. Kit de développement de Sony . . . . . . . . . . . . . . . . . . . . . . . .
4.2. Kit de linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3. Programmation RAW . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5. Installation de l'environnement de programmation RAW 22


5.1. Préparation de l'environnement . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2. Moteur d'émotion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3. Unités Vectorielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4. IOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.5. Newlib et ps2lib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.6. Compilation d'une démo . . . . . . . . . . . . . . . . . . . . . . . . . . .

1
Chapitre 1

Introduction

La PlayStation 2 (PS2) de Sony, a été l'un des produits les plus attendus de 2001. Les ca-
Les caractéristiques techniques de la console sont impressionnantes.
Cette console a été conçue dès le départ avec un objectif clair : les jeux 3D. C'est pourquoi
que tout le matériel est orienté vers la possibilité de créer des jeux qui emmènent l'utilisateur à une
immersion dans un monde audiovisuel en trois dimensions.
La PS2 est l'évolution de la première console développée par Sony, la Playstation (PSX),
qui a été mise sur le marché en 1995. La PSX était l'une des premières consoles dont les jeux
se distribuaient sur support CDROM. Les jeux de la PS2 se distribuent sur DVD bien qu'ils soient également
est capable de reproduire les jeux de la PSX sur CDROM. Grâce à la grande capacité des
Les DVD (4,7 Go), les jeux de la PS2 sont remplis de vidéos, de musique et de son 3D. De plus
de jeux, la PS2 peut lire des CD audio et des films DVD, donc c'est un appareil complet.
plateforme de divertissement.
Le panneau frontal contient, en plus du tiroir pour les DVD/CD :

2 emplacements pour les cartes mémoire qui sont normalement de 8 Mo, bien que le format soit
le même que ceux de la PSX donc ils peuvent être échangés.

2 emplacements pour les nouvelles manettes, les anciennes manettes de la PSX fonctionnent également.

2 ports USB qui peuvent être utilisés avec tout appareil USB compatible comme
claviers, souris, imprimantes, etc.

1 port Firewire haute vitesse

L'arrière contient des connecteurs pour la sortie télévision, pour la télévision haute définition.
y sorties sonores surround, DTS et Dolby Digital 5.1.

2
CHAPITRE 1. INTRODUCTION 3

Figure 1.1 : Playstation 2

Les manettes standard, Dual Shock 2, ont 15 boutons ; tous sont analogiques, sauf Ana-
journal, Démarrer et Sélectionner.

Figure 1.2 : Dual Shock 2

La télécommande se compose de :

4 boutons disposés comme des curseurs directionnels (haut-gauche)

Boutons Analog, Start et Select (moyen)

4 boutons d'action de différentes couleurs (en haut à droite)


CHAPITRE 1. INTRODUCTION 4

4 boutons d'action, L1, L2 (avant-gauche) et R1, R2 (avant-droite)

2 joysticks analogiques avec retour de force (en haut à gauche et en haut à droite)

Le tableau comparatif suivant montre quelques consoles disponibles sur le marché cette année
de présentation de la PS2 et des consoles les plus récentes. Les données fournies par Sony et
Microsoft n'est pas réaliste, ce sont les données maximales, tandis que celles de Nintendo et Sega sont
mesurés dans un vrai jeu :

Console Polygones/seg Fréquence Mémoire principale


Playstation 2 75 millions 300 MHz 32 Mo RAMBUS + 4 Mo DRAM vidéo
XBox 150 millions 733 Mhz 64 Mo de RAM unifiée
Gamecube 6-12 millions 485 MHz 24 Mo SRAM + 16 Mo DRAM + 3 Mo SRAM vidéo
Playstation 360 000 33,86 MHz 2 Mo + 1 Mo de vidéo
Dreamcast 3 millions 200 MHz 16 Mo + 8 Mo de vidéo
Nintendo 64 150 000 93,75 MHz 4 Mo Direct RAMBUS

Le haut degré de parallélisme de l'architecture de la PS2 permet d'obtenir des performances


supérieure aux dernières consoles fonctionnant à une vitesse d'horloge inférieure.
Chapitre 2

Architecture de la PS2

L'architecture de la PS2 se compose de 4 parties principales :

Processeur d'entrée/sortie (IOP) : L'IOP gère l'USB, le FireWire, et tout le


trafic des commandes de contrôle du jeu. L'IOP envoie l'entrée des commandes de contrôle
alEmotion Engine afin qu'il puisse mettre à jour l'état du jeu de manière appropriée.

Moteur d'émotion (EE) : Le moteur d'émotion est le cœur de la PS2, et la partie qui la rend
unique. ElEmotion Engine réalise les fonctions suivantes :

Calculs géométriques : transformations, translations, etc.


•Comportement du monde 3D : IA des ennemis, collisions et en général la physique
du monde qui est en train d'être simulé.
•Fonctions générales : Contrôle du programme et en général la direction du jeu.

Le résultat du travail de l'Emotion Engines est l'affichage de listes, c'est-à-dire des séquences de co-
Les mandos de rendu sont envoyés au synthétiseur graphique (GS).

Synthétiseur Graphique (GS) : Le synthétiseur graphique recueille les listes d'affichage qu'il reçoit du

EE et les représente à l'écran. C'est ce que serait la "carte graphique" de la PS2.

Processeur sonore (SP) : Le SP est ce que l'on pourrait appeler la "carte son" de la PS2. C'est
capable de reproduire du son numérique 3D.

5
CHAPITRE 2. ARCHITECTURE DE LA PS2 6

Figure 2.1 : Architecture de la PS2

2.1. Moteur d'émotion


L'Emotion Engine est le cœur de la Playstation, un processeur RISC de 128 bits développé
par Sony et par Toshiba. Implémente un sous-ensemble d'instructions du processeur MIPS-IV.
Le processeur fonctionne à une fréquence d'horloge de 300 MHz.
Pour le traitement massif d'informations multimédias à haute vitesse, à la fois le bus de données,
comme la mémoire cache et les registres sont de 128 bits. Tout est intégré sur une seule puce LSI à
0,18 microns. L'Emotion Engine a été le premier processeur entièrement développé en 128 bits.
La capacité de calcul en virgule flottante est bien supérieure à celle des ordinateurs personnels.
courants. Le CPU intègre deux unités d'entiers (IU) de 64 bits, une unité SIMD de
128 bits avec 107 instructions pour le traitement multimédia, deux unités indépendantes
de calcul de vecteurs en virgule flottante (VU0, VU1), un circuit décodeur de MPEG-2 et
contrôleurs DMA haute performance.
Il y a trois composants qui peuvent réaliser des opérations en virgule flottante en parallèle :

Coprocesseur 1 FPU avec 1 FMAC1y 1 FDIV


1 Unité de multiplication et d'accumulation en virgule flottante
CHAPITRE 2. ARCHITECTURE DE la PS2 7

Figure 2.2 : Architecture du moteur d'émotion

Coprocesseur 2 VU0 avec 4 FMAC et 1 FDIV

Unité de traitement vectoriel avec 5 FMAC et 2 FDIV

Le rendement combiné de tous ces éléments permet des calculs physiques compliqués, géné-
récit de surfaces NURBS et transformations géométriques 3D.
En plus de traiter les données à 128 bits, il est possible de traiter et de transférer des volumes massifs.
de données multimédias. Les 32 Mo de RAM de mémoire principale qui soutiennent la vitesse de la
Le processeur utilise de la mémoire vive Rambus DRAM à deux canaux pour atteindre une bande passante de 3,2 Go/s.

Environ quatre fois le rendement des mémoires PC-100 qui étaient montées dans les derniers PC.
quand la PS2 est sortie sur le marché.
Avec l'incorporation du décodeur MPEG-2 dans une puce, il est possible de traiter en parallèle
données graphiques 3D de haute résolution et images DVD de haute qualité.
Avec une capacité de calcul en virgule flottante de 6,2 GFLOPS/s, les performances de ce
Le CPU atteint celui de certains supercalculateurs. Lorsqu'il est appliqué au traitement des trans-
formaciones de perspective et géométriques, qui sont celles qui sont normalement utilisées pour le calcul
de graphiques en 3D, la performance atteint 66 millions de polygones par seconde. Cette performance
c'est comparable aux stations graphiques utilisées dans la production de films d'animation.
CHAPITRE 2. ARCHITECTURE DE LA PS2 8

2.2. Processeur d'E/S


L'IOP est le processeur qui équipait la 'ancienne' PSX. Avec l'inclusion de ce processeur à l'intérieur
de la PS2 a été obtenue la compatibilité à 100 % avec la PSX. De plus, il a été ajouté au
processeur support pour IEEE 1394, également connu sous le nom de Firewire et pour USB car ceux-ci
ce sont les nouvelles normes d'interconnectivité.
Le nouveau IOP intègre également les nouvelles fonctionnalités suivantes concernant le CPU de la PSX : mémoire

cache améliorée, une nouvelle architecture DMA haute performance qui permet une augmentation
de jusqu'à 4 fois dans le transfert de données. L'interface série a également été mise à jour et est
environ 20 fois plus rapide que celle de la PSX.
L'interface USB est compatible avec OHCI (Open Host Controller Interface) et peut gérer
jar des transferts de données de 1,5 Mbps à 12 Mbps. L'IEEE 1394 peut gérer des débits de
transfert de 100 Mbps à 400 Mbps.
L'utilisation de ces interfaces permet la connectivité future de la PS2 à une grande variété de
d'autres systèmes comme les VCR, caméras numériques, imprimantes, joysticks, claviers, souris, etc.

2.3. Synthétiseur Graphique (SG)


Le synthétiseur graphique développé par Sony incorpore un moteur de rendu parallèle qui
contient un bus de données de 2560 bits de large qui est environ 20 fois la taille des cartes
accélérateurs de PC. Taux de remplissage de pixels très élevés et performances en dessin sont
atteint grâce à la DRAM intégrée.
La PS2 introduit le concept de Synthétiseur Graphique à travers le calcul en temps réel et
dessin d'objets 3D. La fonction de rendu a été spécialement optimisée pour générer
images qui prennent en charge les téléviseurs NTSC/PAL, télévision numérique haute définition (HDTV) et
la norme VESA. La qualité de l'image résultante à l'écran est comparable à la qualité de
les films d'animation 3D en temps réel.
Dans la conception de systèmes graphiques, la capacité de rendu est définie par la bande passante
de la mémoire entre le moteur de pixels et la mémoire vidéo. Les systèmes conventionnels utilisent
mémoire externe VRAM atteinte par un bus externe au chip qui limite les performances
total du système. Cependant, dans le cas du nouveau GS, il y a une bande passante de 48 Gigaoctets
qui a été atteint grâce à l'intégration de la mémoire et du moteur de rendu dans le même
puce.
Lorsqu'on dessine de petits polygones, le rendement maximal est de 75 millions de polygones.
CHAPITRE 2. ARCHITECTURE DE LA PS2 9

nos par seconde et le système peut dessiner 150 millions de particules par seconde. Avec cela
capacité, il est possible de générer des images de qualité cinématographique. On peut atteindre 20 millions de
polygones dessinés de manière soutenue utilisant le Z-buffering, les textures, les lumières et les transparences.
Cette nouvelle architecture peut exécuter un traitement en plusieurs passes de manière récurrente.
siva et opérations de filtrage à haute vitesse sans l'assistance du processeur principal ou l'accès au
bus principal.
Chapitre 3

Protection anti-copie de la PS2 et modchips

3.1. Protection contre la copie

Les détails de la protection anti-copie que Sony utilise pour sa PS2 n'ont pas été publiés.
jamais, les données connues ont été obtenues par ingénierie inverse par les
créateurs des systèmes anti-copie. En raison de problèmes juridiques et/ou d'intérêts commerciaux, il est di-
difficile de trouver publiée l'information obtenue par ingénierie inverse donc il se peut que la
la description qui suit n'est pas tout à fait exacte.
La PS2 accepte les formats CDR audio, CDROM mode XA2, DVD-Video et DVD-ROM.
La PS2 ne fournit aucun schéma de protection contre les backups CDR audio et
utilise la protection standard pour les DVD-vidéo.

Protection des formats DVD-vidéo


Le DVD-vidéo est la norme pour gérer la vidéo en MPEG 2 avec son flux correspondant.
de l'audio associé qui peut être lu par les lecteurs de DVD. La spécification du DVD-
la vidéo contemplate la protection anticopie pour protéger les produits des grands studios
cinématographiques.
La protection du DVD-video est renforcée par un contrat qui doit être signé par tous
les fabricants de lecteurs DVD tant matériels que logiciels et qui les oblige à implémenter
mettre en place une série de protections, parmi lesquelles protéger les sorties numériques, mettre en œuvre la sepa-
ration par régions, mettre en œuvre des techniques d'obfuscation pour rendre l'ingénierie inverse difficile,
etc.
La protection du DVD-vidéo fait partie de l'architecture du système de protection de contenu.

10
CHAPITRE 3. PROTECTION ANTI-COPIE DE LA PS2 ET MODCHIPS 11

que le format DVD est antérieur à la CPSA et donc ne l'implémente pas complètement. La
La spécification de la CPSA peut être trouvée dans [8].
Actuellement, toutes les protections des DVD ont été brisées.

Protection des jeux


En principe, le système de protection de la PS2 pour les jeux sur CDROM et DVD est
identique à celui de la PSX et consiste en la génération incorrecte des codes ECC et EDC de certains
secteurs du CD ou du DVD.
La spécification de la structure du CDROM/XA se trouve dans le livre jaune[9], à
ce document divise la structure du cd en secteurs de 2352 octets chacun. À la fin de
dans chaque secteur se trouvent les octets des codes ECC (Codes de Correction d'Erreur) et EDC (Codes de Détection d'Erreur)

Codes de détection) qui utilisent des informations redondantes sur le secteur pour pouvoir détecter et
corriger les erreurs de lecture. Tant les codes ECC que EDC sont calculés par l'enregistreur à la
heure d'écrire les secteurs.
La protection repose sur l'utilisation de certains enregistreurs spéciaux qui permettent de modifier cela.
codes ECC et EDC, dans le cas de la Playstation, les codes des 16 premiers secteurs de
les disques ont été manipulés. Ces secteurs contiennent des zéros dans l'information correspondante
au EDC et au ECC. Les enregistreurs normaux en essayant de copier ces disques, corrigent les codes
EDC et ECC automatiquement. La Playstation, ne trouvant pas les zéros dans ces secteurs, suppose
nous avons introduit un CD de musique et il affiche le menu audio ou nous dit que le CD n'est pas
valide.
D'autre part, les pistes de données sont stockées dans le système de fichiers ISO9660.
Lorsque toute piste de données est suivie d'une piste audio, il doit y avoir une séparat
ration à suivre de données d'au moins 150 secteurs (environ 2 secondes). Appliqué à
Le disque de PlayStation a toujours 150 secteurs remplis de zéros (0) derrière la piste.
du jeu. Le but de cette séparation 'physique' est d'avoir un tampon pour 'aider' à
lecteurs de CD qui ne sont pas toujours capables de passer directement de données à audio ou vice versa
sans séparation minimale.
De plus, lorsqu'une piste audio suit une piste de données, elle doit commencer par une autre séparation.
tion d'au moins 150 secteurs qui sert à la même chose que le postgap : séparer les pistes de données
et audio. Sur la PlayStation, les pregaps que nous trouvons normalement sont de 150 secteurs (2
secondes) ou 300 secteurs (4 secondes). Lorsque les pregaps séparent deux pistes audio, ils peuvent
être de 0 à 150 secteurs selon le disque.
Enfin, le leadout est écrit directement par l'enregistreur (sauf dans certains modèles)
CHAPITRE 3. PROTECTION ANTI-COPIE DE LA PS2 ET MODCHIPS 12

et son contenu n'est pas modifiable par l'utilisateur. Il n'est pas non plus possible de lire le lead-out d'un CD

depuis un lecteur 'domestique' de CD-ROM.

Blocage régional
En plus de la protection contre les copies illégales, la console utilise un système de 'verrouillage re-
régional'. Cela se fait parce que Sony a des accords différents sur les marchés asiatiques, américain
et européen et donc ils doivent protéger les jeux pour qu'ils ne puissent être utilisés que dans
la zone géographique pour laquelle ils ont été répartis. Le blocus régional fonctionne de la manière suivante
manière
Les cinq premiers secteurs (000000-000004) contiennent les informations de la zone pour laquelle
un certain jeu est édité. Ils identifient essentiellement le CD comme Japonais, Américain ou Eu-
ropeo. Si l'information envoyée par le CD ne correspond pas à celle que la console a stockée,
revenez confirmer que le CD introduit n'est pas valide.

3.2. La partition des données


Comme nous l'avons vu dans la section précédente, la partition des données est stockée au format
ISO9660[10]. La Playstation ne prend pas en charge les extensions Rock Ridge ni Joliet, cela représente une
série de limitations. Les plus importantes sont qu'il n'y a pas de distinction entre majuscules et minuscules.
culas dans les noms de fichiers et que la longueur des noms de fichiers doit suivre le format
de DOS, c'est-à-dire, 8 caractères maximum pour le nom et 3 pour l'extension.
Les jeux se composent d'une série de fichiers binaires exécutables et de fichiers de données. Les
Les fichiers exécutables compilés pour le Emotion Engine sont au format ELF[11] qui est le
format standard dans de nombreux systèmes d'exploitation, notamment Linux. Le code d'entrée/sortie
ce qui s'exécute dans l'IOP se trouve généralement dans des fichiers binaires séparés avec l'extension IRX également dans

format ELF mais compilé pour MIPS-I.


Nous pouvons installer les jeux de la PS2 sur notre système d'exploitation et accéder au système.
de fichiers.
Lors du processus de démarrage, la PS2 lit la table des matières du CD et recherche un fichier appelé
SYSTEM.CNF. Ce fichier indique le nom de l'exécutable à charger. Le système d'exploitation de la
Playstation analyse le fichier et exécute le binaire indiqué.
En plus des protections physiques imposées par Sony. Les producteurs de jeux vidéo ajoutent
des mécanismes de protection supplémentaires utilisant des bibliothèques cryptographiques dans les jeux, vérifiant

le format physique où le jeu s'exécute, etc. Pratiquement toutes ces protections ont été contournées.
CHAPITRE 3. PROTECTION ANTI-COPIE DE LA PS2 ET MODCHIPS 13

Algorithme 1 Manipulation du système de fichiers depuis Linux


# monter /mnt/cdrom
# cd /mnt/cdrom
# ls
chall.ngh eorps2io.irx mcman.irx padman.irx sles_512.57 données
ioprp254.img mcserv.irx sdrdrv.irx story.ngh default.ngh
libsd.irx mtapman.irx sio2man.irx system.cnf
# fichier sles_512.57
sles_512.57 : exécutable LSB 32 bits ELF MIPS-III, MIPS,
version 1 (SYSV), lié statiquement, non dépouillé
# fichier mcserv.irx
mcserv.irx : ELF 32 bits LSB spécifique au processeur MIPS-I, MIPS,
version 1 MathCoPro/FPU/MAU requis (SYSV), non découpé

Algorithme 2SYSTEM.CNF du jeu THE SIMS


cdrom0:\SLES_512.57;1
1.02
PAL

Il est facile de trouver des patchs sur Internet spécifiques à chaque jeu et qui désactivent la protection.
de ce jeu permettant sa copie.

3.3. Méthode CogSwap pour éviter la protection anticopie


Il existe plusieurs programmes commerciaux qui permettent d'exécuter des jeux sur la Playstation modifiée.
ficando su comportamiento. Normalement, ils servent à ajouter des vies infinies, une immunité et d'autres
caractéristiques spéciales des jeux. Les programmes de ce type les plus connus sont l'Action
Replay 2 (AR2) paraPAL et le Gameshark 2 (GS2) pour NTSC, tous deux de la même société.
Nous pouvons tirer parti de la capacité de charger d'autres jeux de ce programme pour exécuter co-
pias de jeux sans que la protection ne saute.
Le programme présente un menu et l'une des options est de charger un jeu. Si nous introduisons
un jeu et nous cliquons sur cette option, le jeu se chargera tant qu'il s'agit d'une copie originale
puisque chaque fois que nous introduisons un jeu, la PS2 effectue des tests de secteurs défectueux, le
vérification de la région et chargement de la table des matières en mémoire du CD/DVD inséré.
La méthode consiste à démarrer avec le AR2 et à ouvrir le tiroir CD/DVD de la PS2 sans que
à la PS2 j'ai reçu la notification, échanger les disques et appuyer sur le menu exécuter. De
CHAPITRE 3. PROTECTION ANTI-COPIE DE LA PS2 ET MODCHIPS 14

Cette méthode exécutera le jeu sans effectuer les vérifications anti-copie.


Il existe plusieurs méthodes pour ouvrir le tiroir sans que la PS2 ne s'en aperçoive, les méthodes vont
depuis forcer le tiroir avec un couteau jusqu'à faire un levier spécial pour cette tâche. Le
méthode est commentée en détail dans [12].
Cette méthode présente plusieurs inconvénients en plus du fait que nous pouvons casser le plateau. Ceux-ci
les inconvénients viennent du fait que la table des matières du nouveau disque introduit n'est pas lisible, donc
la PS2 a les données du disque précédent. Cela se traduit par le fichier SYSTEM.CNF
de la copia doit être à la même position qu'il a dans l'AR2. Cette position dans le LBA est
la 12231. Par conséquent, nous devons patcher l'image ISO avant de la transférer sur CD. Il existe plusieurs
programmes qui se chargent de déplacer le SYSTEM.CNF à la position correspondante et de remplir
le trou qui reste de zéros si nécessaire. Dans [1], nous pouvons trouver plusieurs programmes qui
ils réalisent cette fonction. À partir de la version 1.3, l'AR2 utilise une méthode de chargement du jeu
différent et il n'est plus nécessaire que le SYSTEM.CNF se trouve à la position 12231.
Un autre des inconvénients est que la Playstation ne lira pas plus que la taille de l'AR2. Chaque
la version du AR2 a une taille, par exemple, la limite de la version 2 est de 74 min.
Le seul avantage de cette méthode par rapport aux puces est qu'elle ne fait pas perdre la garantie de
la PS2 puisque elle ne s'ouvre pas.

3.4. Puces sans soudure


Pour éviter les tracas du CogSwap et les éventuels dommages qui pourraient être causés à la console,
Il existe des puces qui, sans nécessiter de soudure, peuvent être installées dans la PS2 et qui empêchent que
la notification d'insertion du CD à la console se produise. Ces types de puces bénéficient des
mêmes limitations que le CogSwap en ajoutant que la garantie est perdue puisque cela doit être
ouvrir la PS2 pour son installation.
Vous pouvez trouver des informations sur son installation dans [13], sur ce même site vous pouvez
consulter le prix et passer une commande en ligne.
Avec cette puce et le AR2 v1.3 ou supérieur, il est théoriquement possible de charger n'importe quelle copie de

jeu sans avoir besoin de le patcher (tant que le jeu n'implémente pas une protection matérielle
o logiciel supplémentaire).
CHAPITRE 3. PROTECTION ANTI-COPIE DE LA PS2 ET MODCHIPS 15

3.5. Modchips
Le système le plus confortable, bien que aussi le plus compliqué à installer, est l'utilisation de Mod-
Les Modchips interceptent les données de protection anticopie envoyées par le disque et envoient
ceux que la Playstation attend. De cette manière, il suffit d'insérer la copie et la Playstation s'auto-
mathématiquement, il le reconnaîtra comme valide.

Cette méthode n'a aucune limitation des méthodes de déséchange, le seul inconvénient est
que, selon le type de puce, il faut réaliser jusqu'à 40 soudures à différents points pour
pouvoir tromper le BIOS.
Le modchip le plus fiable à ce jour est le Messiah 2. L'utilisation et la vente de ces puces sont
parfaitement légal en Espagne, c'est pourquoi on peut les trouver dans diverses boutiques pour environ 40
Et il existe même des magasins qui vendent la Playstation avec la puce installée, cela dit, sans garantie.

3.6. Sauvegardes de jeux sous Linux et création de CD pour la


PS2
Étant donné que tout l'environnement de développement s'installe facilement sous le système d'exploitation Li-
nux (bien qu'il puisse être installé sous Windows en utilisant Cygwin), ce qui suit décrit les
différents méthodes de créer un CD sous ce système d'exploitation pour qu'il puisse être lu par la PS2.
Pour réaliser des copies, la méthode la plus rapide consiste à utiliser le programme cdrecord[14], ce programme
fait une copie identique de la structure du CD. Le programme est également fourni avec deux scripts,
read-psxywrite-psx nous permettent de lire et d'écrire directement sur des CD pour PSX. Le programme
il est également capable d'écrire des images .cue/.bin générées par le CDR-Win. Il peut être utilisé
scriptwrite-psx pour écrire l'image ou utiliser directement la commande suivante :

# cdrdao écrire fichier.cue

Si nous avons l'image du système de fichiers (iso9660), nous pouvons utiliser cdrecord.
graver le CD, la commande serait :

# cdrecord -dev=0,0,0 -multi fichier.iso

ou bien

# cdrecord -dev=0,0,0 -xa1 fichier.iso


CHAPITRE 3. PROTECTION ANTI-COPIE DE LA PS2 ET MODCHIPS 16

Pour générer le système de fichiers du CD avec les fichiers des programmes que nous sommes en train de
en utilisant lemkisofs qui est inclus avec les cdrecord.
générer l'image avec notre programme, nous mettons tous les fichiers qui vont sur le CD dans un
répertoire et nous avons utilisé la commande suivante :

# mkisofs -o fichier.iso répertoire

Si nous voulons que le CD généré fonctionne avec les méthodes swaphay, il faut le patcher pour que
le SYSTEM.CNF est à la bonne position. Normalement, les fichiers sont stockés dans la
images ISO classées par ordre alphabétique. Dans le cas de nos programmes d'essai, étant donné que...
queños, le SYSTEM.CNF se trouvera en dessous du secteur 12231 de l'image. Pour voir la
position où se trouve le fichier dans l'iso nous utiliserons la commande isoinfo que l'on trouve
dans le même paquet que mkisofs.
Normalement, nous devrons générer un fichier vide pour pousser vers le SYSTEM.CNF à la
positionnement pratique. Comme exemple, nous allons voir le processus de création d'unaisopara la démo
starsim. Une fois la démo compilée, nous avons un fichier exécutable, starsim.elf, ce fichier est le
que nous graverons sur le CD avec le SYSTEM.CNF que nous devrons générer pour l'occasion.

# cd starsim
# ls
starsim.elf system.cnf
# chat system.cnf
cdrom0:\STARSIM.ELF;1
1.10
PAL
# cd ..
# mkisofs -o starsim.iso starsim
# isoinfo -l -i starsim.iso
Liste des répertoires de /
d--------- 0 0 0 2048 6 mai 2003 [2302] .
d--------- 0 0 0 2048 6 mai 2003 [ 23 02] ..
---------- 0 0 0 126615 6 mai 2003 [ 24 00] STARSIM.ELF;1
---------- 0 0 0 56 6 mai 2003 [8600] SYSTEM.CNF;1

Comme nous pouvons le voir, le SYSTEM.CNF est en position 86. Chaque secteur de l'image iso
Il est de 2048 octets. Par conséquent, il faudra déplacer le SYSTEM.CNF 12231 - 86 = 12145 secteurs.
Nous créons donc le fichier, que nous appellerons 0.0 pour qu'il soit le premier, et nous régénérons la iso.
CHAPITRE 3. PROTECTION ANTI-COPIE DE LA PS2 ET MODCHIPS 17

# dd if=/dev/zero of=starsim/0.0 bs=2048 count=12145


# mkisofs -o starsim.iso starsim
# isoinfo -l -i starsim.iso
d--------- 0 0 0 2048 8 mai 2003 [2302] .
d--------- 0 0 0 2048 8 Mai 2003 [ 23 02] ..
---------- 0 0 0 24872960 8 mai 2003 [ 24 00] 0.0;1
---------- 0 0 0 126615 6 mai 2003 [ 12169 00] STARSIM.ELF;1
---------- 0 0 0 56 6 mai 2003 [1223100] SYSTEM.CNF;1

L'image ISO patchée est celle que nous graverons sur le CD avec cdrecord.
Il existe un programme, avec code source, appelé arpatch qui à partir de l'image iso calcule
automatiquement la taille du fichier 0.0 et le génère. Le programme est également capable de par-
chear le fichier SYSTEM.CNF. En étudiant les sources du programme, nous pouvons vérifier que le
Le correctif effectué sur le SYSTEM.CNF est que s'il est inférieur à 56 octets, il ajoute à la fin des caractères.
jusqu'à ce qu'il atteigne cette taille. Nous pouvons trouver le programme à [2, 1]. La finalité
Je ne comprends pas cette modification au SYSTEM.CNF.
Théoriquement, ces étapes devraient créer une image valide pour les méthodes d'échange.
réalité, avec les nouvelles versions de mkisofs ça ne fonctionne pas. En comparant les images iso qui fonctionnent

cionan, avec celles générées par cette méthode, j'ai vu que le mkisofsgénère une section pour le
arrivée depuis CD, bien que cette section ne soit pas utilisée. Le problème est que cette section occupe
un secteur et donc le répertoire racine commence au secteur 23. Comme l'Action Replay ne
ce secteur de démarrage, le répertoire racine commence au secteur 22. Étant donné que la PS2 n'a pas été
au courant du changement de disque et comment il met en cache la position où il trouve le répertoire
raiz, l'image ne fonctionne pas, il faudrait déplacer un secteur tout le système de fichiers macha-
cando le secteur de démarrage et en réécrivant la position du répertoire racine dans la description du
volume principal qui est ce qui est réellement en cache et contient toutes les limitations du
méthode swap.
Le programme ps2mkisofs génère l'image ISO avec le répertoire racine à la position correcte.
Ainsi, les isos générées par ce programme fonctionnent parfaitement sur la PS2.
À partir de la version 1.3 de l'AR2, le système de chargement a changé et il n'est plus nécessaire que le
SYSTEM.CNFse se trouve dans le secteur 12231, donc des images non patchées fonctionneront.
tant que le répertoire racine commence au secteur 22 de l'iso.
Chapitre 4

Méthodes de programmation de la PS2

4.1. Kit de développement de Sony


Sony vend le kit de développement Sony Computer Entertainment DTL-T10000 pour le développement
développer des programmes et des jeux pour la PS2. Le coût par unité est d'environ 20 000 $, ce qui le rend
inaccessible pour les utilisateurs normaux, même pour les petites entreprises car normalement sur
un kit peut travailler 1 ou 2 personnes donc pour une équipe de développement il faudra acheter
plusieurs kits avec le déboursement qui en découle.
Le KIT contient deux PS2 de développement :

La PS2 TEST est identique à une PS2 normale mais peut lire des CD-R sans avoir besoin de modchips.

La PS2 TOOL est beaucoup plus grande qu'une PS2 normale en raison de l'augmentation de la
composants par rapport à celui-ci, parmi les différences, se distinguent :

128 Mo de mémoire principale


Disque dur
Carte réseau

Sony fournit à des développeurs cette machine de manière à ce qu'ils puissent compiler leur code et se
exécute sur le matériel de cette PS2. Sony ne fournit que le matériel et les bibliothèques, ainsi que
conseils et exemples.
Il existe une série d'environnements de développement commerciaux. Parmi eux, les deux plus connus :

ProDG de Snsys. Ils ont différents modules, y compris un très intéressant appelé pro-
vue qui permet, grâce à l'utilisation de l'interface firewire, de connecter une PS2 modèle DTL-H

18
CHAPITRE 4. MÉTHODES DE PROGRAMMATION DE LA PS2 19

Figure 4.1 : Kit de développement

Test Unité à un pc. Ce modèle de PS2 a la particularité de pouvoir lire et


exécuter le cdr (sans puce ni rien de similaire étant donné que c'est une unité de test pour le développement
Snsys te fournit avec le proview les fichiers d'une iso qui fonctionne sur cette PS2
en tant que programme de moniteur permettant la communication avec le logiciel qui fonctionne sur le
PC. Et ça sert à quoi ce truc ? Et bien c'est très simple, pour téléverser le code que tu compiles
directement et l'exécuter sans avoir besoin de graver un CD pour chaque essai. Il a aussi
Outils de débogage qui redirigent la sortie vers le côté du PC pour faciliter le développement.

CodeWarrior de Metrowerks. Tout comme Snsys, il nous fournit un environnement de développement.


complet avec une multitude d'outils.

Pour avoir accès à ces outils, il est nécessaire d'être un développeur officiel de Sony et d'être
enregistré en tant que tel.

4.2. Kit de linux


Le kit Linux pour PS2 permet d'exécuter une distribution Linux sur la PS2. Cela transforme
à la console d'un ordinateur de bureau pleinement fonctionnel. Le kit Linux contient :
CHAPITRE 4. MÉTHODES DE PROGRAMMATION DE LA PS2 20

un disque dur interne de 40 Go

un clavier usb

une souris USB

une carte réseau 10/100 Base-T

deux disques DVD

Le premier contient l'environnement d'exécution (RTE) et les manuels de la PS2 que Sony
s'habitue à inclure dans le kit de développement.

Le deuxième disque contient tout le logiciel de la distribution qui peut être installé sur le
disque dur.

Le noyau Linux contient des pilotes qui masquent le matériel et empêchent l'accès direct à l'IOP.
Sony ne fournit que les binaires de ces pilotes, ce qui impose des limitations lors de
programmer la PS2 avec ce kit. Par exemple, ces pilotes ne fournissent pas d'interface avec le port
Firewire, donc il est impossible de programmer ce port.
Le Kit vient avec le compilateur GNUgcc, lesxfreey et de nombreuses autres utilités. Donc,
nous avons un environnement de développement complet. Bien que les programmes ou jeux qui sont développés
Le kit Linux ne pourra être exécuté que sur une PS2 qui dispose du kit.

4.3. Programmation RAW


La programmation RAW consiste à écrire des programmes pour la PS2 sans utiliser le kit de
développement de Sony, ni le kit de Linux. Le développement se fait sur un PC à l'aide de
compilateurs croisés. Nous devons travailler avec les processeurs suivants :

Le processeur principal est un MIPS R5900[16], ce processeur implémente toutes les ins-
instructions du MIPS III ISA, certaines du MIPS IV et un ensemble propriétaire d'instructions
nes multimédia. Les informations sur l'ensemble des instructions et leur utilisation se trouvent dans
[17, 18]

Unités vectorielles (VU0, VU1)

IOP, c'est un MIPS R3000


CHAPITRE 4. MÉTHODES DE PROGRAMMATION DE LA PS2 21

Il existe des outils de développement libres capables de générer du code pour tous les proce-
sadores de la PS2. Ces outils sont :
binutils est une collection d'outils multiplateformes pour travailler avec des fichiers exécutables.
céréales, parmi lesquelles se distinguent :

ld, le linkeur de GNU


l'assembleur de GNU

gcc est la collection de compilateurs de GNU. Ces compilateurs sont capables de générer du code
pour un grand nombre de plateformes. Nous sommes particulièrement intéressés par le compilateur C.

ps2lib est une bibliothèque open-source pour développer directement avec la PS2. Cette bibliothèque a
a été développée à partir de l'ingénierie inverse. La bibliothèque fournit un grand nombre de
fonctions de base pour accéder au matériel de la PS2. Comme la PS2 a deux CPU (EE et
L'IOP), la bibliothèque est composée de deux parties, chacune avec des fonctions pour un CPU.

Newlib est la bibliothèque qui implémente les fonctions de la norme C (libc) et les fonctions ma-
thématiques (libm). C'est une bibliothèque de Cygnus utilisée dans de nombreux systèmes embarqués en raison de

à son petit taille qui a été adaptée pour la PS2.


Lorsque la programmation RAW de la PS2 a commencé, pour tester les programmes qui étaient en cours
il fallait les enregistrer sur un CD et les exécuter avec l'une des méthodes vues
auparavant. Cela rendait le développement très compliqué (et coûteux). Avec le temps, des ...
des programmes qui permettent, via la connexion de la PS2 au PC, d'envoyer les programmes compilés
du PC à la PS2 pour qu'elle l'exécute. De cette façon, le processus de développement a été dynamisé.
assez.
Il existe trois programmes de ce type, un pour chaque façon de connecter la PS2 au PC.
Pukklink/InLink, qui utilise la carte réseau qui se trouve dans le kit Linux pour trans-
mitiger les exécutables.

Naplink, utilise un câble USB <-> USB

La méthode la plus courante, étant la moins chère, consiste à le faire avec le Naplink. Le seul problème avec
Cette méthode consiste à utiliser un câble USB qui possède la puce PL-2301 ou PL-2302.
Une fois que nous avons le câble, nous connectons le PC à la PS2. Sur la PS2, nous exécutons le Naplink.
serveur, que nous devons avoir préalablement enregistré sur un CD, et sur le PC nous exécutons le Naplink
client. Depuis le client, nous pourrons indiquer à la PS2 l'exécutable à charger. Il existe des versions du
client pour Windows et pour Linux.
Chapitre 5

Installation de l'environnement de programmation


CRUE

Dans ce chapitre, nous allons voir comment installer l'environnement de développement pour commencer à programmer.
la PS2. L'environnement de développement se compose des compilateurs croisés de C et d'assembleur
pour le EE et le IOP. Nous compilerons également les binutils afin de pouvoir programmer les uni-
données vectorielles en assembleur. Enfin, il faut installer les bibliothèques qui nous faciliteront la
tâche d'accès au matériel.
La méthode d'installation décrite est pour les machines Unix, bien qu'elle puisse également être installée
sous Windows en utilisant l'environnement Cygwin qui simule un environnement Unix sous Windows.

5.1. Préparation de l'environnement

La première chose est de choisir le répertoire où l'environnement de programmation sera installé et de créer
la structure de répertoires qui abritera nos utilitaires et compilateurs pour la PS2. Dans ce
Dans ce cas, tous les composants seront installés dans le répertoire /opt/ps2dev. Créons la structure.
de répertoires avec :

# cd /opt
# mkdir ps2dev
# cd ps2dev
# mkdir ee iop newlib ps2lib

La fonctionnalité des répertoires créés est évidente.

22
CHAPITRE 5. INSTALLATION DE L'ENVIRONNEMENT DE PROGRAMMATION RAW 23

A continuación, nous allons créer le script ps2dev.sh qui ira dans /opt/ps2dev et qui servira à mettre
les variables d'environnement nécessaires à la compilation. Il faudra exécuter ce script avant de commencer
à programmer. Ce n'est pas une mauvaise idée d'inclure les variables d'environnement dans le .bashrc pour qu'elles soient toujours présentes

chargées. Le contenu du script est le suivant :

/opt/ps2dev
EE=$PS2DEV/ee
IOP=$PS2DEV/iop
$PS2DEV/ps2lib
NEWLIB=$PS2DEV/newlib
CHEMIN=$CHEMIN:$PS2DEV/bin:$EE/bin:$IOP/bin
exporter PS2DEV EE IOP PS2LIB NEWLIB CHEMIN

Voyonsensuiteleprocessusd'installationdescompilateursnécessaires.

5.2. Moteur Emotionnel


La version de GNU debinutilsygccne supporte pas l'ensemble complet des instructions de l'EE
par conséquent, nous devons télécharger les versions adaptées à ce processeur. Nous pouvons trouver
lasbinutilsy elgccparaEEen [20].
Une fois le fichier téléchargé, voici les étapes à suivre pour compiler et installer le logiciel
lador et l'assembleur du EE:

# source /opt/ps2dev/ps2dev.sh
# tar xzvf gnu-ee-binutils-gcc-1.1.tar.gz
# cd gnu-ee-binutils-gcc
# ./configure --prefix=$EE --target=mips64r5900-sf-elf
# faire LANGUES="c"
# faire installer

Cette version a quelques problèmes pour se compiler avec les derniers compilateurs, en voici quelques-uns
changements que j'ai dû faire pour que cela compile sur mon ordinateur :

Le paquetegperf doit être installé

Dans le fichier gcc/c-lex.chay, il faut supprimer la ligne :


CHAPITRE 5. INSTALLATION DE L'ENVIRONNEMENT DE PROGRAMMATION RAW 24

#include "rtl.h"

Dans le fichier gcc/cppobscure.c, changez la ligne :

#include <sys/utime.h>

par :

#include <utime.h>

Dans le fichier cpp/cpplib.c, changer la ligne :

extern int devstudioflag;

par :

int devstudioflag;

Dans le ficherogcc/Makefile, changer la ligne :

stmp-fixproto : fixhdr.prêt fixproto stmp-en-têtes

par :

stmp-fixproto: fixhdr.prêt stmp-headers

Dans le fichier gcc/cp/pt.c, supprimer la ligne :

#include "parse.h"

Nous créons des liens symboliques vers les programmes récemment compilés pour que les noms soient plus
maniables

# cd /opt/ps2dev/ee/bin
# ln -s mips64r5900-sf-elf-addr2line ee-addr2line
# ln -s mips64r5900-sf-elf-ar ee-ar
# ln -s mips64r5900-sf-elf-as ee-as
# ln -s mips64r5900-sf-elf-c++filt ee-c++filt
# ln -s mips64r5900-sf-elf-gasp ee-gasp
CHAPITRE 5. INSTALLATION DE L'ENVIRONNEMENT DE PROGRAMMATION RAW 25

# ln -s mips64r5900-sf-elf-gcc ee-gcc
# ln -s mips64r5900-sf-elf-ld ee-ld
# ln -s mips64r5900-sf-elf-nm ee-nm
# ln -s mips64r5900-sf-elf-objcopy ee-objcopy
# ln -s mips64r5900-sf-elf-objdump ee-objdump
# ln -s mips64r5900-sf-elf-protoize ee-protoize
# ln -s mips64r5900-sf-elf-ranlib ee-ranlib
# ln -s mips64r5900-sf-elf-readelf ee-readelf
# ln -s mips64r5900-sf-elf-size ee-size
# ln -s mips64r5900-sf-elf-strings ee-strings
# ln -s mips64r5900-sf-elf-strip ee-strip
# ln -s mips64r5900-sf-elf-unprotoize ee-unprotoize

Nous avons l'assembleur, ee-as, et le compilateur C, ee-gcc, prêts à fonctionner.

5.3. Unités Vectorielles


Les unités vectorielles peuvent être programmées en mode interactif ou en lui envoyant un pro-
grama et disant de l'exécuter. Pour la deuxième forme, nous aurons besoin d'un compilateur qui génère
code pour ces unités vectorielles.
Tout d'abord, dans le ficherognu-ee-binutils-gcc/config.sub, nous cherchons la ligne qui contient :

tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k ...

et entre "tahoe" et "i860" nous introduisons "dvp":

tahoe

Nous exécutons ce qui suit pour générer le compilateur d'assembleur :

# cd libiberty
# sh ./configure --target=dvp-elf --prefix=$EE
faire tout
# faire installer
# cd ../bfd
CHAPITRE 5. INSTALLATION DE L'ENVIRONNEMENT DE PROGRAMMATION RAW 26

# sh ./configure --target=dvp-elf --prefix=$EE


tout faire
# faire installer
# cd ../opcodes
# sh ./configure --target=dvp-elf --prefix=$EE
faire tout
# faire installer
# cd ../binutils
# sh ./configure --target=dvp-elf --prefix=$EE
tout faire
# faire installer
# cd ../ld
# sh ./configure --target=dvp-elf --prefix=$EE
faire tout
# faire installer
# cd ../gaz
# sh ./configure --target=dvp-elf --prefix=$EE
faire tout
# faire installer

Yasolo doit générer les liens correspondants avec des noms plus gérables :

# cd $EE/bin
# ln -s dvp-elf-addr2line dvp-addr2line
# ln -s dvp-elf-ar dvp-ar
# ln -s dvp-elf-as dvp-as
# ln -s dvp-elf-c++filt dvp-c++filt
# ln -s dvp-elf-gasp dvp-gasp
# ln -s dvp-elf-ld dvp-ld
# ln -s dvp-elf-nm dvp-nm
# ln -s dvp-elf-objcopy dvp-objcopy
# ln -s dvp-elf-objdump dvp-objdump
# ln -s dvp-elf-ranlib dvp-ranlib
# ln -s dvp-elf-readelf dvp-readelf
# ln -s dvp-elf-size dvp-size
# ln -s dvp-elf-strip dvp-strip
CHAPITRE 5. INSTALLATION DE L'ENVIRONNEMENT DE PROGRAMMATION RAW 27

5.4. PIO
Le processeur de l'IOP est supporté par les utilitaires standards de GNU, donc
nous utiliserons le gcc[23] et les binutils téléchargés depuis le site de GNU[22].

Compilation des binutils


# tar xzvf binutils-2.11.2.tar.gz
./configure --prefix=$IOP --target=mipsel-sf-elfl
faire
# su
# faire installer

Compilation du gcc
# cd ..
# tar xzvf gcc-2.95.2.tar.gz
# cd gcc-2.95.2
# ./configure --prefix=$IOP --target=mipsel-sf-elfl
--with-gnu-ld --with-gnu-as --disable-shared
"c"
# make all-gcc
# su
# faire installer

Nous créons les liens symboliques :

# cd $IOP
# ln -s mipsel-sf-elfl-addr2line iop-addr2line
# ln -s mipsel-sf-elfl-ar iop-ar
# ln -s mipsel-sf-elfl-as iop-as
# ln -s mipsel-sf-elfl-gasp iop-gasp
# ln -s mipsel-sf-elfl-gcc iop-gcc
# ln -s mipsel-sf-elfl-ld iop-ld
# ln -s mipsel-sf-elfl-nm iop-nm
# ln -s mipsel-sf-elfl-objcopy iop-objcopy
CHAPITRE 5. INSTALLATION DE L'ENVIRONNEMENT DE PROGRAMMATION RAW 28

# ln -s mipsel-sf-elfl-objdump iop-objdump
# ln -s mipsel-sf-elfl-ranlib iop-ranlib
# ln -s mipsel-sf-elfl-readelf iop-readelf
# ln -s mipsel-sf-elfl-size iop-size
# ln -s mipsel-sf-elfl-strings iop-strings
# ln -s mipsel-sf-elfl-strip iop-strip

5.5. Newlib et ps2lib


La façon la plus simple d'installer ces bibliothèques est de les télécharger déjà précompilées. Les fichiers
ps2lib-1.9.tar.gzyee-newlib-binary-1.81.tar.gzque se pueden encontrar en [24] contienen estas
bibliothèques.
Pour les installer, il suffit de les décompresser dans le répertoire /opt/ps2dev.Les
directoriosincludeylib, il faudra les indiquer explicitement au compilateur avec les options -I
y-Lpour que trouve les bibliothèques lorsque nous compilons nos programmes.

5.6. Compiler une démo


Pour tester notre environnement, nous téléchargerons la démo defunslowerde [25] et essaierons
la compiler.
La démo contient un fichier appelé crt0.s. Ce fichier est nécessaire pour que elee-ld puisse fonctionner.
fonctionner. Beaucoup de démos et de bibliothèques l'apportent. Nous allons le compiler et le mettre à un endroit.

où je retrouve toujours le chargeur :

# ee-as -mcpu=5900 -EL crt0.s -o crt0.o


# cp crt0.o $EE/mips64r5900-sf-elf/lib

Il est également nécessaire de compiler un script pour indiquer la position de départ du


code exécutable, l'alignement des sections et quelques paramètres supplémentaires, puisque les valeurs
Par défaut, les fichiers Dell ne sont pas corrects. Ce fichier s'appelle linkfile et vient également avec la démo.
Le fichier est ajouté avec la commande de liaison Tlinkfile.
Nous devrons éditer le Makefile pour lui indiquer les noms de nos utilitaires. Il y aura
que changer :

../ee-bin/bin/mips64r5900-sce-elf-
CHAPITRE 5. INSTALLATION DE L'ENVIRONNEMENT DE PROGRAMMATION RAW 29

CC = $(CPATH)gcc.exe
$(CPATH)dvp-as.exe
AS = $(CPATH)as.exe
LD = $(CPATH)ld.exe
$(CPATH)objcopy.exe

par:

$(EE)/bin
CC = $(CPATH)/ee-gcc
$(CPATH)/dvp-as
AS = $(CPATH)/ee-as
$(CPATH)/ee-ld
$(CPATH)/ee-objcopy

Il faut aussi compiler avec le compilateur normal de notre machine le fichier rawasm.c
qu'est-ce qui sera utilisé pour convertir une image de la démo aasm :

# gcc -o rawasm rawasm.c

Ensuite, nous pouvons essayer de compiler le programme :

faire

Si tout s'est bien passé, l'exécutable main.elf aura été généré. Nous pourrons tester la démo avec le
Naplink, si nous possédons le câble approprié ou en enregistrant l'exécutable avec unsystem.cnfque
nous devrons le générer sur un CD et le tester directement.
Bibliographie

réseau PS2DEV.http://ps2dev.livemedia.com.au

[2] PS2DEV.http://ps2dev.sourceforge.net

[3] PS2 Réalité.http://www.ps2reality.net

L'Autre Côté.http://www.elotrolado.net

[5] Spécifications pour les développeurs de logiciels libres.Cannot translate URLs.

Technologies de protection.http://www.goldenpi.no-ip.org/drm/protection.shtml

Communauté Linux de Playstation 2.http://playstation2-linux.com

Spécification CPSA.http://www.goldenpi.no-ip.org/drm/pdf/cpsa081.pdf

Livre jaune de la spécification CDROM.http://www.ecma.ch/ecma1/stand/ecma-


130.htm

Spécification du système de fichiers ISO9660.


http://www.ecma-international.org/publications/files/ecma-st/Ecma-119.pdf

[11] Spécification du format exécutable et de liaison (ELF) (Guide du programmeur).


ftp://ftp.opennet.ru/pub/docs/program/elf.ps.gz

Méthode CogSwap détaillée.


http://www.elotrolado.net/showthread.php?s=c951dd40188a330e6d21ead49a60bed2&threadid=92424

Chips Pas de soudure.Unable to translate the provided URL.

Page d'accueil de cdrdao.http://cdrdao.sourceforge.net/

30
BIBLIOGRAPHIE 31

Page d'accueil de cdrecord et cdrtools.


http://www.fokus.fhg.de/research/cc/glone/employees/joerg.schilling/private/cdrecord.html

Processeurs MIPS.www.mips.com

[17] ISA MIPS.http://www.mips.com/publications/index.html

Ensemble d'instructions et programmation du MIPS III.


Invalid content type. Please provide text for translation.

[19] Différentes méthodes de chargement.http://ps2dev.livemedia.com.au/kb/kb.asp?T=863

Compilateur et binutils pour EE.http://ps2dev.sourceforge.net/downloads/ee/gnu-ee-


binutils-gcc-1.1.tar.gz

Patches pour le compilateur EE et binutils du kit linux.http://www.cip.informatik.uni-


muenchen.de/~bolzer/ps2linux/src/

Télécharger les binutils 2.11.ftp://ftp.gnu.org/gnu/binutils/binutils-2.11.2.tar.gz

[23] Télécharger le gcc 2.95.2.ftp://ftp.gnu.org/gnu/gcc/gcc-2.95.2.tar.gz

[24] Newlib et ps2lib.http://ps2dev.sourceforge.net/ps2lib.html

Démo de Funslower.http://ps2dev.livemedia.com.au/kb//files/FSsource.zip

Vous aimerez peut-être aussi