1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2024-12-27 07:07:09 +00:00

Added 'extract' target to makefile

Created a THANKS.md file for credits.
Updated checksum.md5 for a "vanilla" debug ROM
Added fixbaserom.py which automatically removes the overdump, byte swaps, and patches the ROM header.
This commit is contained in:
Jack Walker 2020-03-27 22:30:19 -04:00
parent ba5df8eb51
commit 3e74c33627
6 changed files with 60 additions and 1 deletions

2
.gitignore vendored
View file

@ -17,6 +17,8 @@ baserom/
*.elf *.elf
*.sra *.sra
*.z64 *.z64
*.n64
*.v64
*.map *.map
*.dump *.dump
out.txt out.txt

1
THANKS.md Normal file
View file

@ -0,0 +1 @@
Thanks to z64me and CrookedPoe for their actor documentation. https://github.com/CrookedPoe/z64-rw

View file

@ -1 +1 @@
717179476af84133b14ff73af87db57a zelda_ocarina_mq_dbg.z64 f0b7f35375f9cc8ca1b2d59d78e35405 zelda_ocarina_mq_dbg.z64

1
checksum_old.md5 Normal file
View file

@ -0,0 +1 @@
717179476af84133b14ff73af87db57a zelda_ocarina_mq_dbg.z64

50
fixbaserom.py Normal file
View file

@ -0,0 +1,50 @@
import os.path
from os import path
import sys
import struct
# Read in the original ROM
if (path.exists("baserom_original.z64")):
print("File 'baserom_original.z64' found.")
with open("baserom_original.z64", mode='rb') as file:
fileContent = file.read()
elif (path.exists("baserom_original.n64")):
print("File 'baserom_original.n64' found.")
print("Byte swapping...")
with open("baserom_original.n64", mode='rb') as file:
fileContent = bytearray(file.read())
# Byte Swap ROM
# TODO: This is pretty slow at the moment. Look into optimizing it later...
i = 0
while (i < len(fileContent)):
tmp = struct.unpack_from("BBBB", fileContent, i)
struct.pack_into("BBBB", fileContent, i + 0, tmp[3], tmp[2], tmp[1], tmp[0])
i += 4
perc = float(i) / float(len(fileContent))
if (i % (1024 * 1024 * 4) == 0):
print(str(perc * 100) + "%")
print("Byte swapping done.")
else:
print("Error: Could not find a baserom_original.z64 or baserom_original.n64.")
sys.exit(1)
# Strip the overdump
print("Stripping overdump...")
strippedContent = list(fileContent[0:0x3600000])
# Patch the header
print("Patching header...")
strippedContent[0x3E] = 0x50
# Write out our new ROM
print("Writing new ROM 'baserom.z64'.")
with open("baserom.z64", mode="wb") as file:
file.write(bytes(strippedContent))
print("Done!")

View file

@ -129,6 +129,11 @@ build/undefined_syms.txt: undefined_syms.txt
clean: clean:
$(RM) $(ROM) $(ELF) -r build $(RM) $(ROM) $(ELF) -r build
extract:
make -C tools
python3 fixbaserom.py
python3 extract_baserom.py
python3 extract_assets.py
#### Various Recipes #### #### Various Recipes ####