mirror of https://github.com/zeldaret/tmc.git
				
				
				
			
		
			
				
	
	
		
			37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
from pathlib import Path
 | 
						|
import os
 | 
						|
import sys
 | 
						|
 | 
						|
def extract_assets(variant):
 | 
						|
    print(f'Extract assets from {variant}.')
 | 
						|
    map = {
 | 
						|
        'USA': 'baserom.gba',
 | 
						|
        'EU': 'baserom_eu.gba',
 | 
						|
        'JP': 'baserom_jp.gba',
 | 
						|
        'DEMO': 'baserom_demo.gba'
 | 
						|
    }
 | 
						|
    baserom = None
 | 
						|
    with open(map[variant], 'rb') as file:
 | 
						|
        baserom = bytearray(file.read())
 | 
						|
 | 
						|
    with open(f'assets_{variant}.csv', 'r') as file:
 | 
						|
        for line in file:
 | 
						|
            (path,start,size,_) = line.split(',')
 | 
						|
            if os.path.isfile(path):
 | 
						|
               print(f'{path} already extracted.') 
 | 
						|
            else:
 | 
						|
                print(f'Extracting {path}...')
 | 
						|
                Path(os.path.dirname(path)).mkdir(parents=True, exist_ok=True)
 | 
						|
                with open(path, 'wb') as output:
 | 
						|
                    output.write(baserom[int(start,16):int(start,16)+int(size,16)])
 | 
						|
def main():
 | 
						|
    
 | 
						|
    if len(sys.argv) == 1:
 | 
						|
        extract_assets('USA')
 | 
						|
    elif len(sys.argv) == 2:
 | 
						|
        extract_assets(sys.argv[1].upper())
 | 
						|
    else:
 | 
						|
        print('Usage: asset_extractor.py VARIANT')
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    main() |