No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
[[Gotcha Force | ← Gotcha Force]] | [[Gotcha Force | ← Gotcha Force]] | ||
'' | ''This article is about Gotcha Force ARC file format and ongoing researchs on it.'' | ||
<div style="text-align: center;"> | <div style="text-align: center;"> |
Revision as of 09:44, 7 September 2022
This article is about Gotcha Force ARC file format and ongoing researchs on it.
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.