mirror of
https://github.com/vgmstream/vgmstream.git
synced 2024-11-28 16:30:54 +01:00
Merge pull request #754 from NicknineTheEagle/txtm
Added TXTM finder script
This commit is contained in:
commit
f2b15ed366
45
cli/txtm_finder.py
Normal file
45
cli/txtm_finder.py
Normal file
@ -0,0 +1,45 @@
|
||||
import os
|
||||
import struct
|
||||
|
||||
mpfTable=dict()
|
||||
|
||||
for fname in os.listdir(os.getcwd()):
|
||||
if fname.lower()[-4:] not in [".map",".mpf"]:
|
||||
continue
|
||||
|
||||
print(fname)
|
||||
f=open(fname,"rb")
|
||||
magic=f.read(4)
|
||||
if magic!=b"PFDx": raise Exception("Wrong header magic in %s" % (f.name))
|
||||
version,introNode,numNodes,numSections,b1,b2,b3,numEvents=struct.unpack("8B",f.read(8))
|
||||
if version>1: raise Exception("Unsupported version %d in %s" % (version,f.name))
|
||||
f.seek(numNodes*0x1c,1)
|
||||
f.seek(numEvents*numSections,1)
|
||||
samplesTable=f.tell()
|
||||
|
||||
for musName in os.listdir(os.getcwd()):
|
||||
if musName.lower()[-4:] not in [".mus",".trm",".trj"]:
|
||||
continue
|
||||
|
||||
f.seek(samplesTable)
|
||||
f2=open(musName,"rb")
|
||||
passed=True
|
||||
for i in range(numNodes):
|
||||
offset=struct.unpack(">I",f.read(4))[0]
|
||||
f2.seek(offset)
|
||||
magic=f2.read(4)
|
||||
if magic!=b"SCHl":
|
||||
passed=False
|
||||
break
|
||||
|
||||
f2.close()
|
||||
if passed:
|
||||
mpfTable[fname]=musName
|
||||
break
|
||||
|
||||
f.close()
|
||||
|
||||
f=open(".txtm","w")
|
||||
for mpf in mpfTable:
|
||||
f.write("%s:%s\n" % (mpf,mpfTable[mpf]))
|
||||
f.close()
|
Loading…
Reference in New Issue
Block a user