Crusader_Decomp/tools/unkcoffs/check_unkoff_dupes.py
2026-03-26 00:37:17 +01:00

56 lines
1.2 KiB
Python

#!/usr/bin/env python
from struct import unpack
from collections import defaultdict
#mode = 'u8'
#mode = 'remorse'
mode = 'regret'
if mode == 'u8':
from u8_ints import intrinsics
off_file = 'u8_UNKCOFF.DAT'
elif mode == 'remorse':
from remorse_ints import intrinsics
off_file = 'remorse_UNKCOFF.DAT'
#off_file = 'rem_es_UNKCOFF.DAT'
else:
off_file = 'regret_UNKCOFF.DAT'
from regret_ints import intrinsics
def print_dupes(ostrs):
vals = defaultdict(list)
for i, ostr in enumerate(ostrs):
vals[ostr].append(i)
lists = list(vals.values())
lists.sort()
for l in lists:
if len(l) > 1:
print(", ".join('%03X' % x for x in l))
def print_compare(vals):
for ino, (v, i) in enumerate(zip(vals, intrinsics)):
print("%s: (Int%03X) %s" % (v, ino, i))
def load_vals():
f = open(off_file, "rb")
offsets = f.read()
nints = len(offsets)/4
ioff = unpack('i' * nints, offsets)
ostrs = []
for i in ioff:
seg = (i & 0xffff0000) >> 16
off = i & 0xffff
ostr = 'Code%03d %04x:%04x' % (seg, 0x1000 + (seg - 1)*8, off)
ostrs.append(ostr)
return ostrs
def main():
vals = load_vals()
#print_dupes(vals)
print_compare(vals)
main()