Bon, puisque l'on commence à parler "culture", je vais expliquer "comment ca marche". On est parti pour un gros post, je préviens à l'avance.
A la base, la PS2 possède deux processeurs (pour simplifier). Le premier, l'Emotion Engine, autrement appelé EE est le processeur qui "fait les calculs". Le second, l'Input Output Processor, autrement appelé IOP, est celui qui gère les entrées sorties (comme son nom l'indique) C'est donc par ce dernier que l'on peut lire ou écrire les memory card, le disque dur, les manettes, le CD, etc...
Quand la PS2 boot, la mémoire de l'IOP contient un morceau du BIOS de la PS2. Ce morceau contient un bloc de modules de base qui permettent de faire des opérations simple sur la PS2, comme ce que je dis précédemment.
Juste au moment du boot, donc, l'EE donne l'ordre à l'IOP de lire le CD. S'il trouve le fichier "system.cnf", il le lit, l'analyse, et obtient ainsi le nom du programme principal du jeu (un fichier au format ELF). Il charge donc cet ELF en mémoire, et ordonne un reset de l'IOP, qui va décharger tous ses modules. L'IOP se retrouve donc avec une mémoire vierge, et son bios, comme il était au début.
A partir de là, un programme homebrew va simplement commencer à recharger les modules de base du bios de l'IOP, afin de travailler. Par exemple, il va charger le module permettant de lire/écrire sur memory card (le module XMCMAN), puis va lire ses IRX depuis la memory card. Ou bien, il va éventuellement lire des IRX depuis le CDRom. Dans ce cas, il lui suffit juste de charger le module SIO2MAN qui lui permettra d'obtenir les fonctions de lecture basiques sur CD, comme le support de la fonction "open" avec "cdrom0" en tant que "lecteur" pour ouvrir un fichier du CD.
Là où un jeu est différent, c'est que dès qu'il a booté, il demande illico presto un reboot de l'IOP. C'est obligatoire quand on développe un jeu chez SONY. Mais on lui fait faire un reboot spécial. Les jeux demandent à rebooter l'IOP en chargeant un fichier depuis le CD, qui sera un "nouveau BIOS". C'est le fichier "IOPRP".
Ce fichier contient donc un "nouveau bios" que la PS2 charge dans l'IOP, et le reboot en utilisant ce bios-ci. Ce fichier est propriétaire SONY, et le redistribuer dans un programme homebrew serait illégal. D'ailleurs, ca ne servirait pas à grand chose, car le bios de base de l'IOP suffit amplement à de l'homebrew.
Maintenant, voyons voir comment HDLoader va booter un jeu. Il va "simuler" le boot normal de la PS2. C'est à dire, il va commencer par lire le fichier SYSTEM.CNF qu'il aura stocké sur disque dur, puis, il va lire l'ELF pour le booter. Jusque là, pas beaucoup de différence. Puis, juste avant de booter l'ELF, il laisse dans l'IOP une petite routine qui va "bloquer" le reset de l'IOP. Ensuite, il boot vraiment l'ELF.
Donc, l'elf du jeu boot, et il va commander dans les quelques nano secondes qui suivent la lecture de l'IOPRP et le reboot de l'IOP. Et c'est là où se situe l'astuce. La petite routine qui reste en mémoire de l'IOP s'active à ce moment-là. Il va vraiment lire l'IOPRP (depuis le disque dur, certes, mais il va le lire). Et juste après, au lieu de rebooter normalement l'IOP comme le ferait la PS2 en temps normal, il va "patcher" l'IOP en temps réel. C'est à dire qu'il va changer l'adresse du module qui sert logiquement à lire un CD ou un DVD, pour le faire pointer vers son module à lui.
Et voilà pourquoi un programme homebrew ne peut pas se faire "simuler" le CD par HDLoader: vu qu'un programme homebrew ne réinitialise PAS l'IOP avec une image IOPRP, l'astuce d'HDLoader ne peut pas s'activer.
J'espère que j'ai pas causé trop de maux de crânes