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

 
(16 intermediate revisions by 4 users not shown)
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.''
''This article is about Gotcha Force ARC file format and ongoing researches on it.''


<div style="text-align: center;">
{{Research | 2| Researches on headers / bodies structures are partially achieved. }}
<h2 style="color: red;">Cette section a besoin de beaucoup de recherche.<h2>
<h4 style="color: red;">Des recherches sur comment fonctionne le header et comment interagit le fichier sont nécessaire.<h4>
</div>


ARC semble être le diminutif d'archive.
ARC seems to be the diminutive of '''arc'''hive.


__toc__
== Format ==


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


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>
[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 ===
 
Contenu dans (NTSC) afs_data.afs/nwld00_mdl.arc, afs_data.afs/nwld01_mdl.arc et afs_data.afs/nwld02_mdl.arc trois textures inutilisé qui aurait été utilisé semblerait-il lors de la démo du jeu.
 
[[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 Start.dol aux adresses 8004d548, et 80006c88. </span>
In the afs_data.afs (USA/NTSC version) we find 3 unused textures which have possibly been used in the game demo:
<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>
* nwld00_mdl.arc
* nwld01_mdl.arc
* nwld02_mdl.arc


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


All headers of the "afs_data.afs" have been verified without decompress using automated scripts. [[PZZ (Gotcha Force)|PZZ]] files haven't been verified except for HSD models. ARC files seems to use this information. "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">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.


[[Catégorie:Format de fichier]]
[[Category:File format]]
[[Catégorie:Gotcha Force]]
[[Category:Gotcha Force]]

Latest revision as of 13:23, 7 October 2023

← Gotcha Force

This article is about Gotcha Force ARC file format and ongoing researches on it.


This file format needs more research.
Researches on headers / bodies structures are partially achieved.


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

All headers of the "afs_data.afs" have been verified without decompress using automated scripts. PZZ files haven't been verified except for HSD models. ARC files seems to use this information. "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.