Files
Diddy-Kong-Racing/tools/python/check_if_need_to_extract.py
T
Ryan MyersandGitHub 6db9a8d6ea Splat merge (#470)
* First pass

* Fix n64crc and add submodules properly

* Fix other versions

* Match func_8005B818 for v80 code.

* Formatting

* Fix build for JPN in last commit. Still broken in post v77 roms though.

* Fix builds for other versions.

* Match load_menu_text for other versions.

* Fix progress script

* update m2c

* Modify asset tools to remove the LD script code.

* Fix asm file macro inclue

* Get a working splat version for us_1.0 to build from the assets tool.

* update asm differ

* Update tools again

* Fix the makefile to only compile assets when requested. This will build all versions successfully, and compile assets for us_1.0 when requested.

* First round of suggestions

* Small cleanup

* Fix the gcc_generate.py path.

* Make entrypointThreadStack

* Small addition to the last commit

* "Fix" score script. Still need to fix the score values themselves, but at least it runs and is kind of close.

* Much closer matching score script

* Fix the splat version due to a breaking change in 0.33.0 for this repo for now.

* Fix the main function name

* Add gitignore entries

* Fix the padding problem to be handled by objcopy instead of a binary pad from splat.

* Update the README and change dependencies to setup.

* Have a hasm header that can be tweaked.

* Still calculate the checksum on no_verify builds or they won't work.

* Add support for boot_custom.bin

* Fix custom boot ld code.

* Fix score script

* Fix gcc building.

* Update m2c

* Fix warning, stop ignoring mod assets, and add some handy make rules.

* Uggh, serves me right for not testing.

* First stab at modifiable entrypoint.

* Fix typo, and small README change

* Stop n64crd from defaulting to returning 6105, so we can properly fail if the CIC checksum fails. Also, fix the

* Extract custom boot script

* Update automated scripts.

* Woops, fixed the MAXCONTROLLERS thing now.

* Add the method for building binutils back. Sorry!

* Only use -m32 when the longbit says we're on a 64 bit platform.

* Woops....

* Hopefully fix arm detection for raspi ido downloads.
2025-03-25 09:07:00 -04:00

45 lines
1.5 KiB
Python

import argparse
import hashlib
import subprocess
import time
from file_util import FileUtil
parser = argparse.ArgumentParser(description="")
parser.add_argument("version", help="DKR version.", choices=['us_1.0'])
args = parser.parse_args()
version = args.version
extractConfigsDirectory = './extract-ver'
assetsDirectory = './assets/.vanilla'
extractConfigFilename = extractConfigsDirectory + '/' + version + '.config.json'
configChecksumFilename = extractConfigFilename + '.md5'
needToExtract = False
def do_extraction(reason):
global needToExtract
needToExtract = True
print(reason)
if not FileUtil.does_file_exist(assetsDirectory):
do_extraction("Extracting because /assets/.vanilla/ directory does not exist.")
elif not FileUtil.does_file_exist(configChecksumFilename):
do_extraction('Extracting because "' + configChecksumFilename + '" does not exist.')
else:
md5Calculated = hashlib.md5(FileUtil.get_bytes_from_file(extractConfigFilename)).hexdigest()
md5Saved = FileUtil.get_text_from_file(configChecksumFilename)
if md5Calculated != md5Saved:
do_extraction('Extracting because "' + extractConfigFilename + '" has changed.')
def run_until_done(args, hide=False):
if hide:
subprocess.run(args, stdout=subprocess.DEVNULL)
else:
subprocess.run(args)
if needToExtract:
md5Calculated = hashlib.md5(FileUtil.get_bytes_from_file(extractConfigFilename)).hexdigest()
FileUtil.write_text_to_file(configChecksumFilename, md5Calculated)
run_until_done(['./extract.sh', version], True)