notes on remaining compat work for Heroes

This commit is contained in:
lifning 2021-01-17 13:02:53 -08:00
parent 7310755a79
commit ab8f6a3056
1 changed files with 10 additions and 1 deletions

View File

@ -12,6 +12,15 @@ const SIZE_OF_ENTRY: u32 = 3 * size_of::<u32>() as u32;
const SIZE_OF_FILENAME: usize = 0x40;
const TYPICAL_STRING_TABLE_COUNT: usize = 0x100;
// stats on version
// $ find . -name \*.one -exec bash -c "onear tf "{}" > "{}".txt" \;
// $ fd one.txt | xargs cat | grep '^HerOne{' | sort | uniq -c
// 3 HerOne{version: 0x1003ffff, ..}
// 725 HerOne{version: 0x1400ffff, ..}
// FIXME: coverOpen*_gc.one are missing the first entry (they start with the string table entry)
// solve this by factoring out a struct that's just { id, size, version } and Option<> it
#[derive(BinRead, BinWrite)]
#[br(little, assert(
entries.iter().enumerate().all(|(i, ent)| ent.id as usize == i + 2 && ent.version == version) &&
@ -27,7 +36,7 @@ pub struct HerOne {
id_archive: u32,
/// the size of the archive, not counting the "first entry" of these first three u32's
archive_size_minus_12: u32,
/// presumably the archiver version. known values: 0x1400ffff from GCN version
/// presumably the archiver version. known values: 0x1400ffff and 0x1003ffff from GCN version
version: u32,
#[br(assert(id_string_table == 1))]
/// 1. conceptually the ID of the (uncompressed) array of filenames, indexed by ID.