Crusader_Decomp/tools/read_commit_table.py

26 lines
910 B
Python
Raw Normal View History

2026-04-12 14:45:08 +02:00
import argparse
def main():
p = argparse.ArgumentParser()
p.add_argument('--file', required=True)
p.add_argument('--addr', required=True)
p.add_argument('--base', type=lambda x: int(x,0), default=0x80000000)
p.add_argument('--stride', type=int, default=10)
p.add_argument('--field_idx', type=int, default=9)
p.add_argument('--count', type=int, default=20)
args = p.parse_args()
addr = int(args.addr, 0)
offset = addr - args.base
with open(args.file, 'rb') as f:
for ch in range(args.count):
idx = offset + ch*args.stride + args.field_idx
f.seek(idx)
b = f.read(1)
if not b:
print(f"ch {ch:02d}: EOF")
break
print(f"ch {ch:02d}: addr {hex(addr + ch*args.stride + args.field_idx)} offset {hex(idx)} value {b[0]:02x} ({b[0]})")
if __name__ == '__main__':
main()