[PSP] Archive compressée?

Bonjour,
Depuis peu, j'ai essayé de me mettre au romhacking de la console PSP pour changer un peu de la DS.
Bref j'ai donc ouvert l'iso et tout ça pour découvrir sans surprise que la plupart des données du jeux sont apparemment contenues dans une archive du répertoire USRDIR. J'ai donc analysé le gros fichier de plus près qui n'a pas l'air si compliqué que ça, l'index se trouvant dans le header.
Problème : certains fichiers, la grande majorité évidemment, semble être compressés je pense.
Voici les infos que j'ai pu récupéré après mon analyse de l'archive :
Offset 0x0
4 octets : CDAR
4 octets : 0x02 (Je ne sais pas trop ce que c'est)
4 octets : Fin de l'index
4 octets : Je sais pas du tout ce que c'est
Offset 0x10
1A : 26 dossiers et fichiers confondus
Du coup on obtient pour les headers des fichiers ou dossiers par la suite :
4 octets : Adresse du nom du fichier
1 octets : Ce que j'en conclus c'est
0x0 -> fichier non compressé
0x01 -> répertoire
0x02 -> fichier compressé
Mais je n'en suis pas sûre.
3 octets -> adresse de fin du premier bloc quand le fichier est extrait (seulement dans le cas 0x02 sinon c'est que des 0x0)
4 octets -> Adresse dans l'archive
4 octets -> Taille du fichier (0 si répertoire)
Sachant coder à peu près correctement en C j'ai pu extraire les fichiers de l'archive mais j'ai donc ce problème de fichiers compressée et comme je suis une quiche en compression, je ne vois pas du tout comment faire pour la décompresser, malgré mes efforts... =\
Tout ce que j'ai pu constaté, c'est qu'il y a a chaque fois un gros bloc au début de chaque fichier compressé avec les deux premiers octets étant toujours 0x78 et 0xDA toujours... J'ai aussi remarqué que l'adresse de fin de ce premier gros bloc est une information présente dans l'index de l'archive comme je l'ai dit plus haut. Lorsque l'on soustrait l'adresse du fichier compressé dans l'archive à l'adresse dans l'archive du fichier suivant, on trouve le début du bloc suivant s'il y en a un, avec encore 0x78 et 0xDA pour les deux premiers octets.
Je ne sais pas trop si c'est assez compréhensible ce que je dis mais je me demandais s'il y aurait quelqu'un capable de comprendre cette compression et de me l'expliquer afin que je puisse peut-être en faire quelque chose si possible !
Je laisse donc ici quelques fichiers dont l'archive CDVD.DAR.
Merci d'avance =)
http://www.mediafire.com/download/45z97 ... CDVDAR.DAR
http://www.mediafire.com/download/wn63a ... u_info.tm2
http://www.mediafire.com/download/3oirp ... EF0010.DAT
Depuis peu, j'ai essayé de me mettre au romhacking de la console PSP pour changer un peu de la DS.
Bref j'ai donc ouvert l'iso et tout ça pour découvrir sans surprise que la plupart des données du jeux sont apparemment contenues dans une archive du répertoire USRDIR. J'ai donc analysé le gros fichier de plus près qui n'a pas l'air si compliqué que ça, l'index se trouvant dans le header.
Problème : certains fichiers, la grande majorité évidemment, semble être compressés je pense.
Voici les infos que j'ai pu récupéré après mon analyse de l'archive :
Offset 0x0
4 octets : CDAR
4 octets : 0x02 (Je ne sais pas trop ce que c'est)
4 octets : Fin de l'index
4 octets : Je sais pas du tout ce que c'est
Offset 0x10
1A : 26 dossiers et fichiers confondus
Du coup on obtient pour les headers des fichiers ou dossiers par la suite :
4 octets : Adresse du nom du fichier
1 octets : Ce que j'en conclus c'est
0x0 -> fichier non compressé
0x01 -> répertoire
0x02 -> fichier compressé
Mais je n'en suis pas sûre.
3 octets -> adresse de fin du premier bloc quand le fichier est extrait (seulement dans le cas 0x02 sinon c'est que des 0x0)
4 octets -> Adresse dans l'archive
4 octets -> Taille du fichier (0 si répertoire)
Sachant coder à peu près correctement en C j'ai pu extraire les fichiers de l'archive mais j'ai donc ce problème de fichiers compressée et comme je suis une quiche en compression, je ne vois pas du tout comment faire pour la décompresser, malgré mes efforts... =\
Tout ce que j'ai pu constaté, c'est qu'il y a a chaque fois un gros bloc au début de chaque fichier compressé avec les deux premiers octets étant toujours 0x78 et 0xDA toujours... J'ai aussi remarqué que l'adresse de fin de ce premier gros bloc est une information présente dans l'index de l'archive comme je l'ai dit plus haut. Lorsque l'on soustrait l'adresse du fichier compressé dans l'archive à l'adresse dans l'archive du fichier suivant, on trouve le début du bloc suivant s'il y en a un, avec encore 0x78 et 0xDA pour les deux premiers octets.
Je ne sais pas trop si c'est assez compréhensible ce que je dis mais je me demandais s'il y aurait quelqu'un capable de comprendre cette compression et de me l'expliquer afin que je puisse peut-être en faire quelque chose si possible !
Je laisse donc ici quelques fichiers dont l'archive CDVD.DAR.
Merci d'avance =)
http://www.mediafire.com/download/45z97 ... CDVDAR.DAR
http://www.mediafire.com/download/wn63a ... u_info.tm2
http://www.mediafire.com/download/3oirp ... EF0010.DAT