mirror of
				https://github.com/coop-deluxe/sm64coopdx.git
				synced 2025-10-30 08:01:01 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			42 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#!/usr/bin/env python3
 | 
						|
 | 
						|
import sys
 | 
						|
import os
 | 
						|
import glob
 | 
						|
 | 
						|
if len(sys.argv) < 4:
 | 
						|
    print("usage: cleancrcmap <in_map> <out_map> <searchdir>")
 | 
						|
    sys.exit(1)
 | 
						|
 | 
						|
# load and check the old map
 | 
						|
searchpath = sys.argv[3]
 | 
						|
inmap = list()
 | 
						|
with open(sys.argv[1], 'r') as f:
 | 
						|
    for line in f:
 | 
						|
        line = line.strip()
 | 
						|
        if line == '' or line[0] == '#':
 | 
						|
            continue
 | 
						|
        tok = line.split(',')
 | 
						|
        crcstr = tok[0].strip()
 | 
						|
        if crcstr.startswith('0x'):
 | 
						|
            crc = int(crcstr[2:], 16)
 | 
						|
        else:
 | 
						|
            crc = int(crcstr)
 | 
						|
        tok[1] = tok[1].strip()
 | 
						|
        [fname, fext] = os.path.splitext(tok[1])
 | 
						|
        [fname, ffmt] = os.path.splitext(fname)
 | 
						|
        fname = fname + ffmt[:-1] + '*'
 | 
						|
        matches = glob.glob(os.path.join(searchpath, fname))
 | 
						|
        if len(matches) == 0:
 | 
						|
            print("warning: texture '{0}' does not match anything in '{1}'".format(fname, searchpath))
 | 
						|
        else:
 | 
						|
            for s in matches:
 | 
						|
                tup = (crc, os.path.relpath(s, searchpath))
 | 
						|
                if not (tup in inmap):
 | 
						|
                    inmap.append(tup)
 | 
						|
 | 
						|
# save cleaned up version to the new one
 | 
						|
with open(sys.argv[2], 'w') as f:
 | 
						|
    for (crc, fpath) in inmap:
 | 
						|
        f.write("0x{0:08x}, {1}\n".format(crc, fpath))
 | 
						|
 |