diff --git a/tools/asset_extractor/.gitignore b/tools/asset_extractor/.gitignore new file mode 100644 index 00000000..a6683c40 --- /dev/null +++ b/tools/asset_extractor/.gitignore @@ -0,0 +1 @@ +!asset_extractor.py \ No newline at end of file diff --git a/tools/asset_extractor/asset_extractor.py b/tools/asset_extractor/asset_extractor.py new file mode 100644 index 00000000..11a1f575 --- /dev/null +++ b/tools/asset_extractor/asset_extractor.py @@ -0,0 +1,37 @@ +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() \ No newline at end of file