From bfa7384f2b83512f2de46ca4aedce75a045f2295 Mon Sep 17 00:00:00 2001 From: Jennifer Taylor Date: Sat, 3 Apr 2021 05:26:25 +0000 Subject: [PATCH] Update tag parsing with better guesses as to the unknown tag sections. --- bemani/format/afp.py | 55 ++++++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 22 deletions(-) diff --git a/bemani/format/afp.py b/bemani/format/afp.py index 931814d..7522bf6 100644 --- a/bemani/format/afp.py +++ b/bemani/format/afp.py @@ -369,8 +369,8 @@ class SWF: def add_coverage(*args: Any, **kwargs: Any) -> None: # type: ignore pass - unknown_tags_count, end_tags_count, tags_count, unknown_tags_offset, end_tags_offset, tags_offset = struct.unpack( - "> 22) & 0x3FF - size = tag & 0x3FFFFF + tagid = (tag >> 22) & 0x3FF + size = tag & 0x3FFFFF - if size > 0x200000: - raise Exception(f"Invalid tag size {size}") + if size > 0x200000: + raise Exception(f"Invalid tag size {size}") - vprint(f"{prefix} Tag: {hex(tagid)} ({self.tag_to_name(tagid)}), Size: {hex(size)}, Offset: {hex(offset + 4)}") - self.__parse_tag(ap2_version, afp_version, ap2data, tagid, size, offset + 4, prefix=prefix, verbose=verbose) - offset += size + 4 # Skip past tag header and data. + vprint(f"{prefix} Tag: {hex(tagid)} ({self.tag_to_name(tagid)}), Size: {hex(size)}, Offset: {hex(tags_offset + 4)}") + self.__parse_tag(ap2_version, afp_version, ap2data, tagid, size, tags_offset + 4, prefix=prefix, verbose=verbose) + tags_offset += size + 4 # Skip past tag header and data. + + # Now, parse end tags? + vprint(f"{prefix}Number of Timing Tags: {timing_tags_count}") + for i in range(timing_tags_count): + unk1, unk2 = struct.unpack(" bytes: swap_len = {