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 1: Line 1:
[[Gotcha Force | ← Gotcha Force]]
[[Gotcha Force | ← Gotcha Force]]


''Cet article est pour les format de fichiers ARC de Gotcha Force. Voir [[ARC (Format de fichier)]] pour les autres versions de ce fichier.''ARC semble être le diminutif d'archive.
''Cet article est pour les format de fichiers ARC de Gotcha Force. Voir [[ARC (Format de fichier)]] pour les autres versions de ce fichier.''
 
__toc__


ARC semble être le diminutif d'archive.
== Format ==
== Format ==


Line 17: Line 16:
<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 {
  typedef struct _HSD_ArchiveHeader {
&nbsp; &nbsp; u32 file_size; /* 0x00 */ 0x4d7b
&nbsp; &nbsp; u32 file_size; /* 0x00 */ 0x4d7b
&nbsp; &nbsp; u32 data_size; /* 0x04 */ 0x49c8
&nbsp; &nbsp; u32 data_size; /* 0x04 */ 0x49c8
&nbsp; &nbsp; u32 nb_reloc; &nbsp;/* 0x08 */ 0xe0
&nbsp; &nbsp; u32 nb_reloc; &nbsp;/* 0x08 */ 0xe0
&nbsp; &nbsp; u32 nb_public; /* 0x0C */ 1
&nbsp; &nbsp; u32 nb_public; /* 0x0C */ 1
&nbsp; &nbsp; u32 nb_extern; /* 0x10 */ 0
&nbsp; &nbsp; u32 nb_extern; /* 0x10 */ 0
&nbsp; &nbsp; u8 version[4]; /* 0x14 */ 0
&nbsp; &nbsp; u8 version[4]; /* 0x14 */ 0
&nbsp; &nbsp; u32 pad[2]; &nbsp; &nbsp;/* 0x18 */ on a seulement un pad de 4 octets / pas 8 dans le débogage ;
&nbsp; &nbsp; u32 pad[2]; &nbsp; &nbsp;/* 0x18 */ on a seulement un pad de 4 octets / pas 8 dans le débogage ;
} HSD_ArchiveHeader;
} 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 14:05, 14 November 2021

← Gotcha Force

Cet article est pour les format de fichiers ARC de Gotcha Force. Voir ARC (Format de fichier) pour les autres versions de ce fichier.

ARC semble être le diminutif d'archive.

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

hsd archive.h

hsd archive.c

Header

Le header de l'archive HSD correspond aux headers des fichiers ARC :

typedef struct _HSD_ArchiveHeader {

    u32 file_size; /* 0x00 */ 0x4d7b     u32 data_size; /* 0x04 */ 0x49c8     u32 nb_reloc;  /* 0x08 */ 0xe0     u32 nb_public; /* 0x0C */ 1     u32 nb_extern; /* 0x10 */ 0     u8 version[4]; /* 0x14 */ 0     u32 pad[2];    /* 0x18 */ on a seulement un pad de 4 octets / pas 8 dans le débogage ; } 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.