# Soon(TM) - ChrRaces.dbc: header declares 18 records, file holds 50. # 32 hidden "Ogre" records (IDs 101..132) each carry 1 char in the name field (17). import struct, sys d = open(sys.argv[1] if len(sys.argv) > 1 else 'files/ChrRaces.dbc', 'rb').read() magic, n, nf, rs, ss = struct.unpack('<4s4I', d[:20]) real = (len(d) - 20 - ss) // rs sb = d[20 + real * rs:] s = lambda o: sb[o:sb.index(b'\0', o)].decode() recs = [struct.unpack('<%dI' % nf, d[20 + i*rs:20 + (i+1)*rs]) for i in range(real)] hidden = sorted(recs[n:], key=lambda r: r[0]) print(''.join(s(r[17]) for r in hidden))