Files
Diddy-Kong-Racing/tools/python/diff_settings.py

53 lines
2.0 KiB
Python

#!/usr/bin/env python3
def add_custom_arguments(parser):
group = parser.add_mutually_exclusive_group(required=False)
# group.add_argument('-j', dest='version', action='store_const', const='jp',
# help="Set version to JP.")
# group.add_argument('-u', dest='version', action='store_const', const='us',
# help="Set version to US.")
# group.add_argument('-e', dest='version', action='store_const', const='eu',
# help="Set version to EU.")
# group.add_argument('-s', dest='version', action='store_const', const='sh',
# help="Set version to SH.")
def apply(config, args):
version = 'us_1.0' # Right now only us_1.0 is supported
config['mapfile'] = f'build/' + version + '/dkr.map'
config['myimg'] = f'build/' + version + '/dkr.z64'
config['baseimg'] = find_baserom(version)
config['makeflags'] = [f'']
config['source_directories'] = ['src']
########################################################################################
from os import listdir
from os.path import isfile, join
CRCS = {
'us_1.0': (0x53D440E7, 0x7519B011)
}
def get_filenames_from_directory(directory, extensions=None):
if extensions is None:
return [f for f in listdir(directory) if isfile(join(directory, f))]
else:
return [f for f in listdir(directory) if isfile(join(directory, f)) and f.endswith(extensions)]
def get_rom_crcs(romPath):
with open(romPath, 'rb') as inFile:
rom = inFile.read()
crc1 = int.from_bytes(rom[0x10:0x14], "big")
crc2 = int.from_bytes(rom[0x14:0x18], "big")
return (crc1, crc2)
def find_baserom(version):
romFiles = get_filenames_from_directory('baseroms/', ('.z64',))
for romFilename in romFiles:
romFilepath = 'baseroms/' + romFilename
if get_rom_crcs(romFilepath) == CRCS[version]:
return romFilepath
raise Exception('Could not find a rom file for the version: "' + version + '"')
########################################################################################