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

Page créée avec « ARC semble être de diminutif d'archive. 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">"<… »
 
No edit summary
Line 1: Line 1:
ARC semble être de diminutif d'archive.
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 <span class="pl-s"><span class="pl-pds">"</span>Archive_Parse: Byte-Order mismatch". La communauté du jeux 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 jeux 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 9: Line 9:
<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 */
&nbsp; &nbsp; u32 file_size; /* 0x00 */
&nbsp; &nbsp; u32 data_size; /* 0x04 */
&nbsp; &nbsp; u32 data_size; /* 0x04 */
&nbsp; &nbsp; u32 nb_reloc; /* 0x08 */
&nbsp; &nbsp; u32 nb_reloc; /* 0x08 */
&nbsp; &nbsp; u32 nb_public; /* 0x0C */
&nbsp; &nbsp; u32 nb_public; /* 0x0C */
&nbsp; &nbsp; u32 nb_extern; /* 0x10 */
&nbsp; &nbsp; u32 nb_extern; /* 0x10 */
&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;
} 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.
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.



Revision as of 12:33, 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 jeux 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.