DSARCIDX format
From Netherworld Research
The DSARCIDX format is a run-of-the-mill archive format. No built-in compression, has filenames but only "flat"--no directory tree.
Header
struct header { char magic[8]; // "DSARCIDX" u32 count; u32 unk1; // always 00 u16 ids[count]; };
This is seemingly padded to a 4-byte boundary by 0xFF bytes. The meaning of the file IDs is uncertain, but in e.g. bg.dat the file bgXXX.mpb corresponds to the entry with ID X (with gaps in the numbering being present).
File directory
The header is followed by the file directory, with one entry per file in the archive.
struct file_entry { char filename[40]; u32 size; u32 offset; // relative to start of archive } entries[count];
File data
This is followed by the file data. The data for each file is aligned to an 8-byte boundary, padded with null bytes between files if necessary.