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 ( | ''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 == | ||
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): | |||
[https://github.com/PsiLupan/FRAY/blob/master/src/hsd/hsd_archive.h hsd archive.h] | |||
[https://github.com/PsiLupan/FRAY/blob/master/src/hsd/hsd_archive.c hsd archive.c] | |||
All ARC files named with '''_mdl''' in their title are HSD [[Models|models]]. | |||
=== Header === | === Header === | ||
The HSD header seems to match others ARC headers: | |||
typedef struct _HSD_ArchiveHeader { | 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; | } HSD_ArchiveHeader; | ||
== Observations == | == 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 | * 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]] | ||
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. | |||
* 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
Cet article est pour les format de fichiers ARC de Gotcha Force. Voir ARC (File format) pour les autres versions de ce fichier.
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):
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 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.