[viewer] Surface recovered TOC names in the PAK browser + refresh RE panel
- Move the IDXD->TOC-path resolver into sylpheed-formats as IdxdObject::recover_toc_path() so the CLI `pak list` and the GUI pack browser share one implementation (behaviour-preserving; CLI still resolves 308/1004 on GP_MAIN_GAME_E). - PAK browser now shows each entry's recovered original path (via the name-hash) in green, in both the entry list and the IDXD detail heading. - Replace the stale welcome "RE Notes" table (mesh/audio "unknown") with an accurate reverse-engineered-formats status grid + correct authorship. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -183,6 +183,27 @@ impl IdxdObject {
|
||||
}
|
||||
format!("schema {:08x}", self.schema_hash)
|
||||
}
|
||||
|
||||
/// Recover this entry's original TOC path (e.g. `unit\rou_f001.tbl`) from its
|
||||
/// identity/pool tokens by re-hashing candidates against `name_hash` with the
|
||||
/// known path schemes. Returns `None` when no scheme reproduces the hash.
|
||||
///
|
||||
/// Shared by the CLI `pak list` and the GUI pack browser so both surface the
|
||||
/// same recovered names. See [`crate::hash::recover_toc_name`].
|
||||
pub fn recover_toc_path(&self, name_hash: u32) -> Option<String> {
|
||||
let mut cands: Vec<&str> = Vec::new();
|
||||
for key in ["ID", "Name", "Model"] {
|
||||
if let Some(v) = self.get_raw(key) {
|
||||
cands.push(v);
|
||||
}
|
||||
}
|
||||
for t in self.tokens() {
|
||||
if t.contains('_') || t.len() >= 5 {
|
||||
cands.push(t.as_str());
|
||||
}
|
||||
}
|
||||
crate::hash::recover_toc_name(name_hash, &cands)
|
||||
}
|
||||
}
|
||||
|
||||
/// Extract the trailing string pool. Finds the smallest offset whose suffix is
|
||||
|
||||
Reference in New Issue
Block a user