No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
ARC semble être le diminutif d'archive. | ARC semble être le diminutif d'archive. | ||
_toc_ | |||
== Format == | |||
On retrouve dans l'exécutable principal Start.dol l'usage de la chaîne de caractère <span class="pl-s"><span class="pl-pds">"</span>Archive_Parse: Byte-Order mismatch". La communauté du jeu GameCube "Super Smash Bros. Melee" a notamment reverse cette fonction de la librairie HSD (rien n'indique que la version de HSD soit la même, il faudrait vérifier) :<span class="pl-pds"></span></span> | On retrouve dans l'exécutable principal Start.dol l'usage de la chaîne de caractère <span class="pl-s"><span class="pl-pds">"</span>Archive_Parse: Byte-Order mismatch". La communauté du jeu GameCube "Super Smash Bros. Melee" a notamment reverse cette fonction de la librairie HSD (rien n'indique que la version de HSD soit la même, il faudrait vérifier) :<span class="pl-pds"></span></span> | ||
Line 6: | Line 10: | ||
<span class="pl-s">[https://github.com/PsiLupan/FRAY/blob/master/src/hsd/hsd_archive.c hsd archive.c]</span> | <span class="pl-s">[https://github.com/PsiLupan/FRAY/blob/master/src/hsd/hsd_archive.c hsd archive.c]</span> | ||
=== Header === | |||
<span class="pl-s">Le header de l'archive HSD correspond aux headers des fichiers ARC :</span> | <span class="pl-s">Le header de l'archive HSD correspond aux headers des fichiers ARC :</span> |
Revision as of 13:38, 14 November 2021
ARC semble être le diminutif d'archive.
_toc_
Format
On retrouve dans l'exécutable principal Start.dol l'usage de la chaîne de caractère "Archive_Parse: Byte-Order mismatch". La communauté du jeu GameCube "Super Smash Bros. Melee" a notamment reverse cette fonction de la librairie HSD (rien n'indique que la version de HSD soit la même, il faudrait vérifier) :
Header
Le header de l'archive HSD correspond aux headers des fichiers ARC :
typedef struct _HSD_ArchiveHeader { u32 file_size; /* 0x00 */ u32 data_size; /* 0x04 */ u32 nb_reloc; /* 0x08 */ u32 nb_public; /* 0x0C */ u32 nb_extern; /* 0x10 */ u8 version[4]; /* 0x14 */ u32 pad[2]; /* 0x18 */ } HSD_ArchiveHeader;
Tous les headers des fichiers de "afs_data.afs" ont été vérifiés directement, sans décompression ou autre. Les fichiers compressés dans les PZZ n'ont pas été vérifiés par exemple. Seul les fichiers ARC utilisent des informations qui semblent correspondre à ce header. La fonction utilisant la chaîne de caractère "Archive_Parse: Byte-Order mismatch" est référencée deux fois dans Start.dol aux adresses 8004d548, et 80006c88. 8004d548 est appelé une fois au lancement du jeu. On y retrouve HSD_archiveParse(*bufferDest=r3=0x81489c40, *bufferSrc=r4=0x80f2b1c0, len?=r5=0x4d7b). On a bien en argument (*bufferSrc) un fichier qui ressemble aux fichiers ARC.