Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

ARC (Gotcha Force): Difference between revisions

No edit summary
No edit summary
Line 8: Line 8:


<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>
typedef struct _HSD_ArchiveHeader {
<span class="pl-s">typedef struct _HSD_ArchiveHeader {
  &nbsp; &nbsp; u32 file_size; /* 0x00 */
  &nbsp; &nbsp; u32 file_size; /* 0x00 */
  &nbsp; &nbsp; u32 data_size; /* 0x04 */
  &nbsp; &nbsp; u32 data_size; /* 0x04 */
Line 17: Line 16:
  &nbsp; &nbsp; u8 version[4]; /* 0x14 */
  &nbsp; &nbsp; u8 version[4]; /* 0x14 */
  &nbsp; &nbsp; u32 pad[2]; /* 0x18 */
  &nbsp; &nbsp; u32 pad[2]; /* 0x18 */
  } HSD_ArchiveHeader;</span>
  } 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 <span class="pl-s"><span class="pl-pds">"</span>Archive_Parse: Byte-Order mismatch" est référencée deux fois dans Start.dol aux adresses 8004d548, et 80006c88. </span>
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 <span class="pl-s"><span class="pl-pds">"</span>Archive_Parse: Byte-Order mismatch" est référencée deux fois dans Start.dol aux adresses 8004d548, et 80006c88. </span>
<span class="pl-s">8004d548 est appelé une fois au lancement du jeu. </span><span class="pl-s">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.</span><span class="pl-s"></span>
<span class="pl-s">8004d548 est appelé une fois au lancement du jeu. </span><span class="pl-s">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.</span><span class="pl-s"></span>

Revision as of 12:37, 14 November 2021

ARC semble être le diminutif d'archive.

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) :

hsd archive.h

hsd archive.c

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.