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.''
''Cet article est pour les format de fichiers ARC de Gotcha Force. Voir [[ARC (File format)]] pour les autres versions de ce fichier.''


<div style="text-align: center;">
<div style="text-align: center;">
Line 12: Line 12:
== Format ==
== Format ==


On retrouve dans l'exécutable principal boot.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>
In the main executable '''boot.[[DOL (File format)|dol]]''' we found the debug string "Archive_Parse: Byte-Order mismatch" related to HSD ('''H'''AL '''S'''ys'''D'''olphin) archives. The "Super Smash Bros. Melee" GameCube community has reversed this HSD lib function (Gotcha Force use not the same HSD lib version):


HSD qui indiquerai '''H'''AL '''S'''ys'''D'''olphin.
[https://github.com/PsiLupan/FRAY/blob/master/src/hsd/hsd_archive.h hsd archive.h]


<span class="pl-s">[https://github.com/PsiLupan/FRAY/blob/master/src/hsd/hsd_archive.h hsd archive.h]</span>
[https://github.com/PsiLupan/FRAY/blob/master/src/hsd/hsd_archive.c hsd archive.c]


<span class="pl-s">[https://github.com/PsiLupan/FRAY/blob/master/src/hsd/hsd_archive.c hsd archive.c]</span>
All ARC files named with '''_mdl''' in their title are HSD [[Models|models]].


=== Header ===
=== Header ===


<span class="pl-s">Le header de l'archive HSD correspond aux headers des fichiers ARC :</span>
The HSD header seems to match others ARC headers:
   
   
  typedef struct _HSD_ArchiveHeader {
  typedef struct _HSD_ArchiveHeader {
&nbsp; &nbsp; u32 file_size; /* 0x00 */ 0x4d7b
    u32 file_size; // 0x00
&nbsp; &nbsp; u32 data_size; /* 0x04 */ 0x49c8
    u32 data_size; // 0x04
&nbsp; &nbsp; u32 nb_reloc; &nbsp;/* 0x08 */ 0xe0
    u32 nb_reloc; // 0x08
&nbsp; &nbsp; u32 nb_public; /* 0x0C */ 1
    u32 nb_public; // 0x0C
&nbsp; &nbsp; u32 nb_extern; /* 0x10 */ 0
    u32 nb_extern; // 0x10
&nbsp; &nbsp; u8 version[4]; /* 0x14 */ 0
    u8 version[4]; // 0x14
&nbsp; &nbsp; u32 pad[2]; &nbsp; &nbsp;/* 0x18 */ on a seulement un pad de 4 octets / pas 8 dans le débogage ;
    u32 pad[2];   // 0x18 In debugging there is 4 bytes pad / not 2
  } HSD_ArchiveHeader;
  } HSD_ArchiveHeader;
   
   
   
   
== Observations ==
== Observations ==
=== Textures inutilisé ===
=== Unused textures ===


Dans l'afs_data.afs (version USA/NTSC), on retrouve trois textures inutilisées qui auraient été utilisées semblerait-il lors de la démo du jeu :
In the afs_data.afs (USA/NTSC version) we find 3 unused textures which have possibly been used in the game demo:
* nwld00_mdl.arc,
* nwld00_mdl.arc
* nwld01_mdl.arc,
* nwld01_mdl.arc
* nwld02_mdl.arc
* nwld02_mdl.arc


[[Fichier:Array 0 nwld00 mdl.arc.png.png|300px]] [[Fichier:Array_0_nwld01_mdl.arc.png|300px]] [[Fichier:Array 0 nwld02 mdl.arc.png|300px]]
[[Fichier:Array 0 nwld00 mdl.arc.png.png|300px]] [[Fichier:Array_0_nwld01_mdl.arc.png|300px]] [[Fichier:Array 0 nwld02 mdl.arc.png|300px]]


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 boot.dol aux adresses 8004d548, et 80006c88. </span>
All header of the "afs_data.afs" have been verified without decompress using automated scripts. [[PZZ (Gotcha Force)|PZZ]] files havn't been verified except for HSD models. ARC files seems to use this informations. "Archive_Parse: Byte-Order mismatch" is referenced twice in the code (USA/NTSC [[DOL (Gotcha Force)|dol]] version) boot.dol at addresses 8004d548 and 80006c88.
<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">Le PGCD des tailles des arc est de 1.</span>
* 8004d548 is called when starting the game. We get HSD_archiveParse(*bufferDest=r3=0x81489c40, *bufferSrc=r4=0x80f2b1c0, len?=r5=0x4d7b). We found back arg (*bufferSrc) as a pointer to an ARC file like.


[[Category:File format]]
[[Category:File format]]
[[Category:Gotcha Force]]
[[Category:Gotcha Force]]

Revision as of 08:51, 7 September 2022

← Gotcha Force

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

This section needs a lot of research.
Research on how the header works and how the file interacts is needed.

ARC seems to be the diminutive of archive.

Format

In the main executable boot.dol we found the debug string "Archive_Parse: Byte-Order mismatch" related to HSD (HAL SysDolphin) archives. The "Super Smash Bros. Melee" GameCube community has reversed this HSD lib function (Gotcha Force use not the same HSD lib version):

hsd archive.h

hsd archive.c

All ARC files named with _mdl in their title are HSD models.

Header

The HSD header seems to match others ARC headers:

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 In debugging there is 4 bytes pad / not 2
} HSD_ArchiveHeader;


Observations

Unused textures

In the afs_data.afs (USA/NTSC version) we find 3 unused textures which have possibly been used in the game demo:

  • nwld00_mdl.arc
  • nwld01_mdl.arc
  • nwld02_mdl.arc

300px 300px 300px

All header of the "afs_data.afs" have been verified without decompress using automated scripts. PZZ files havn't been verified except for HSD models. ARC files seems to use this informations. "Archive_Parse: Byte-Order mismatch" is referenced twice in the code (USA/NTSC dol version) boot.dol at addresses 8004d548 and 80006c88.

  • 8004d548 is called when starting the game. We get HSD_archiveParse(*bufferDest=r3=0x81489c40, *bufferSrc=r4=0x80f2b1c0, len?=r5=0x4d7b). We found back arg (*bufferSrc) as a pointer to an ARC file like.