mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
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.
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import sys
|
||||
import os
|
||||
import zlib
|
||||
|
||||
def crc32(data: bytes) -> int:
|
||||
return zlib.crc32(data) & 0xFFFFFFFF
|
||||
|
||||
def N64GetCIC(data: bytes) -> int:
|
||||
crc = crc32(data)
|
||||
return {
|
||||
0x6170A4A1: 6101,
|
||||
0x90BB6CB5: 6102,
|
||||
0x0B050EE0: 6103,
|
||||
0x98BC2C86: 6105,
|
||||
0xACC8580A: 6106,
|
||||
}.get(crc, 0)
|
||||
|
||||
def boot_extract(input_file, output_file="boot_custom.bin"):
|
||||
mods_missing = True
|
||||
cictype = 6103
|
||||
if not (input_file.endswith(".z64")):
|
||||
print("ROM file must be .z64. Use https://hack64.net/tools/swapper.php to convert.")
|
||||
return
|
||||
|
||||
with open(input_file, "rb") as f:
|
||||
f.seek(0x40)
|
||||
data = f.read(0xFC0)
|
||||
|
||||
if os.path.isdir('mods'):
|
||||
print("Mods folder detected, outputting there.")
|
||||
output_file = "./mods/boot_custom.bin"
|
||||
mods_missing = False
|
||||
cictype = N64GetCIC(data)
|
||||
if os.path.isfile("makefile"):
|
||||
print("Makefile detected, modifying CIC type.")
|
||||
with open("makefile", 'r') as f:
|
||||
lines = f.readlines()
|
||||
with open("makefile", 'w') as f:
|
||||
for line in lines:
|
||||
if line.startswith("BOOT_CIC ?="):
|
||||
f.write("BOOT_CIC ?= " + str(cictype) + "\n")
|
||||
else:
|
||||
f.write(line)
|
||||
|
||||
|
||||
with open(output_file, "wb") as f:
|
||||
f.write(data)
|
||||
|
||||
if (mods_missing == True):
|
||||
print("Finished! Copy boot_custom.bin to the mods folder and change BOOT_CIC in the makefile")
|
||||
else:
|
||||
print("Finished!")
|
||||
|
||||
boot_extract(sys.argv[1])
|
||||
Reference in New Issue
Block a user