diff --git a/Makefile b/Makefile
index ecebf1ae9..ef4fe071b 100644
--- a/Makefile
+++ b/Makefile
@@ -96,7 +96,7 @@ N_THREADS ?= $(shell nproc)
#### Tools ####
ifneq ($(shell type $(MIPS_BINUTILS_PREFIX)ld >/dev/null 2>/dev/null; echo $$?), 0)
- $(error Please install or build $(MIPS_BINUTILS_PREFIX))
+ $(error Unable to find $(MIPS_BINUTILS_PREFIX)ld. Please install or build MIPS binutils, commonly mips-linux-gnu. (or set MIPS_BINUTILS_PREFIX if your MIPS binutils install uses another prefix))
endif
# Detect compiler and set variables appropriately.
diff --git a/assets/xml/objects/object_mori_tex.xml b/assets/xml/objects/object_mori_tex.xml
index c58078e0f..79f1f0b4c 100644
--- a/assets/xml/objects/object_mori_tex.xml
+++ b/assets/xml/objects/object_mori_tex.xml
@@ -11,10 +11,8 @@
-
-
-
-
+
+
diff --git a/extract_assets.py b/extract_assets.py
index 5c9658d22..47e65ca23 100755
--- a/extract_assets.py
+++ b/extract_assets.py
@@ -6,6 +6,7 @@ import os
import signal
import time
import multiprocessing
+from pathlib import Path
EXTRACTED_ASSETS_NAMEFILE = ".extracted-assets.json"
@@ -21,7 +22,13 @@ def ExtractFile(xmlPath, outputPath, outputSourcePath):
# Don't extract if another file wasn't extracted properly.
return
- execStr = f"tools/ZAPD/ZAPD.out e -eh -i {xmlPath} -b baserom/ -o {outputPath} -osf {outputSourcePath} -gsf 1 -rconf tools/ZAPDConfigs/MqDbg/Config.xml {ZAPDArgs}"
+ zapdPath = Path("tools") / "ZAPD" / "ZAPD.out"
+ configPath = Path("tools") / "ZAPDConfigs" / "MqDbg" / "Config.xml"
+
+ Path(outputPath).mkdir(parents=True, exist_ok=True)
+ Path(outputSourcePath).mkdir(parents=True, exist_ok=True)
+
+ execStr = f"{zapdPath} e -eh -i {xmlPath} -b baserom -o {outputPath} -osf {outputSourcePath} -gsf 1 -rconf {configPath} {ZAPDArgs}"
if "overlays" in xmlPath:
execStr += " --static"
@@ -143,14 +150,21 @@ def main():
if file.endswith(".xml"):
xmlFiles.append(fullPath)
+ class CannotMultiprocessError(Exception):
+ pass
+
try:
numCores = int(args.jobs or 0)
if numCores <= 0:
numCores = 1
print("Extracting assets with " + str(numCores) + " CPU core" + ("s" if numCores > 1 else "") + ".")
- with multiprocessing.get_context("fork").Pool(numCores, initializer=initializeWorker, initargs=(mainAbort, args.unaccounted, extractedAssetsTracker, manager)) as p:
+ try:
+ mp_context = multiprocessing.get_context("fork")
+ except ValueError as e:
+ raise CannotMultiprocessError() from e
+ with mp_context.Pool(numCores, initializer=initializeWorker, initargs=(mainAbort, args.unaccounted, extractedAssetsTracker, manager)) as p:
p.map(ExtractFunc, xmlFiles)
- except (multiprocessing.ProcessError, TypeError):
+ except (multiprocessing.ProcessError, TypeError, CannotMultiprocessError):
print("Warning: Multiprocessing exception ocurred.", file=os.sys.stderr)
print("Disabling mutliprocessing.", file=os.sys.stderr)
diff --git a/tools/ido_recomp/linux/5.3/as0 b/tools/ido_recomp/linux/5.3/as0
index 15c169107..cdac712e5 100755
Binary files a/tools/ido_recomp/linux/5.3/as0 and b/tools/ido_recomp/linux/5.3/as0 differ
diff --git a/tools/ido_recomp/linux/5.3/as1 b/tools/ido_recomp/linux/5.3/as1
index 1a24f18b2..f89911f80 100755
Binary files a/tools/ido_recomp/linux/5.3/as1 and b/tools/ido_recomp/linux/5.3/as1 differ
diff --git a/tools/ido_recomp/linux/5.3/cc b/tools/ido_recomp/linux/5.3/cc
index 65f0d1b2d..be5bed557 100755
Binary files a/tools/ido_recomp/linux/5.3/cc and b/tools/ido_recomp/linux/5.3/cc differ
diff --git a/tools/ido_recomp/linux/5.3/cfe b/tools/ido_recomp/linux/5.3/cfe
index cbb4f9d44..c257f65a6 100755
Binary files a/tools/ido_recomp/linux/5.3/cfe and b/tools/ido_recomp/linux/5.3/cfe differ
diff --git a/tools/ido_recomp/linux/5.3/ugen b/tools/ido_recomp/linux/5.3/ugen
index 119d2817b..d356300bf 100755
Binary files a/tools/ido_recomp/linux/5.3/ugen and b/tools/ido_recomp/linux/5.3/ugen differ
diff --git a/tools/ido_recomp/linux/5.3/ujoin b/tools/ido_recomp/linux/5.3/ujoin
index 4091986a8..5a3162799 100755
Binary files a/tools/ido_recomp/linux/5.3/ujoin and b/tools/ido_recomp/linux/5.3/ujoin differ
diff --git a/tools/ido_recomp/linux/5.3/uld b/tools/ido_recomp/linux/5.3/uld
index 653ff37df..a65a2239b 100755
Binary files a/tools/ido_recomp/linux/5.3/uld and b/tools/ido_recomp/linux/5.3/uld differ
diff --git a/tools/ido_recomp/linux/5.3/umerge b/tools/ido_recomp/linux/5.3/umerge
index 4b00ffa36..36fa5ac6e 100755
Binary files a/tools/ido_recomp/linux/5.3/umerge and b/tools/ido_recomp/linux/5.3/umerge differ
diff --git a/tools/ido_recomp/linux/5.3/uopt b/tools/ido_recomp/linux/5.3/uopt
index d5ba32fbd..f44642087 100755
Binary files a/tools/ido_recomp/linux/5.3/uopt and b/tools/ido_recomp/linux/5.3/uopt differ
diff --git a/tools/ido_recomp/linux/5.3/usplit b/tools/ido_recomp/linux/5.3/usplit
index 17d9d3d5d..5aa4151ed 100755
Binary files a/tools/ido_recomp/linux/5.3/usplit and b/tools/ido_recomp/linux/5.3/usplit differ
diff --git a/tools/ido_recomp/linux/7.1/as0 b/tools/ido_recomp/linux/7.1/as0
index e9ef71c63..1a69a14a5 100755
Binary files a/tools/ido_recomp/linux/7.1/as0 and b/tools/ido_recomp/linux/7.1/as0 differ
diff --git a/tools/ido_recomp/linux/7.1/as1 b/tools/ido_recomp/linux/7.1/as1
index 475079063..047cfdd7f 100755
Binary files a/tools/ido_recomp/linux/7.1/as1 and b/tools/ido_recomp/linux/7.1/as1 differ
diff --git a/tools/ido_recomp/linux/7.1/cc b/tools/ido_recomp/linux/7.1/cc
index 6c68698f3..61c43ede1 100755
Binary files a/tools/ido_recomp/linux/7.1/cc and b/tools/ido_recomp/linux/7.1/cc differ
diff --git a/tools/ido_recomp/linux/7.1/cfe b/tools/ido_recomp/linux/7.1/cfe
index 2b52669de..75235c112 100755
Binary files a/tools/ido_recomp/linux/7.1/cfe and b/tools/ido_recomp/linux/7.1/cfe differ
diff --git a/tools/ido_recomp/linux/7.1/ugen b/tools/ido_recomp/linux/7.1/ugen
index 340a282c9..32d8d0be6 100755
Binary files a/tools/ido_recomp/linux/7.1/ugen and b/tools/ido_recomp/linux/7.1/ugen differ
diff --git a/tools/ido_recomp/linux/7.1/ujoin b/tools/ido_recomp/linux/7.1/ujoin
index 3752698d8..49b35ba6a 100755
Binary files a/tools/ido_recomp/linux/7.1/ujoin and b/tools/ido_recomp/linux/7.1/ujoin differ
diff --git a/tools/ido_recomp/linux/7.1/uld b/tools/ido_recomp/linux/7.1/uld
index 2b76d0c18..756d30cd4 100755
Binary files a/tools/ido_recomp/linux/7.1/uld and b/tools/ido_recomp/linux/7.1/uld differ
diff --git a/tools/ido_recomp/linux/7.1/umerge b/tools/ido_recomp/linux/7.1/umerge
index 03d68a8f2..569e56e76 100755
Binary files a/tools/ido_recomp/linux/7.1/umerge and b/tools/ido_recomp/linux/7.1/umerge differ
diff --git a/tools/ido_recomp/linux/7.1/uopt b/tools/ido_recomp/linux/7.1/uopt
index feef7f749..349d1d6ff 100755
Binary files a/tools/ido_recomp/linux/7.1/uopt and b/tools/ido_recomp/linux/7.1/uopt differ
diff --git a/tools/ido_recomp/linux/7.1/usplit b/tools/ido_recomp/linux/7.1/usplit
index 090200ab5..563c5f8a2 100755
Binary files a/tools/ido_recomp/linux/7.1/usplit and b/tools/ido_recomp/linux/7.1/usplit differ
diff --git a/tools/ido_recomp/macos/5.3/as0 b/tools/ido_recomp/macos/5.3/as0
index 46e69e09b..1d2b7a725 100755
Binary files a/tools/ido_recomp/macos/5.3/as0 and b/tools/ido_recomp/macos/5.3/as0 differ
diff --git a/tools/ido_recomp/macos/5.3/as1 b/tools/ido_recomp/macos/5.3/as1
index f723cc5c1..44fada1c5 100755
Binary files a/tools/ido_recomp/macos/5.3/as1 and b/tools/ido_recomp/macos/5.3/as1 differ
diff --git a/tools/ido_recomp/macos/5.3/cc b/tools/ido_recomp/macos/5.3/cc
index d583c6b5b..9e3c8f8c9 100755
Binary files a/tools/ido_recomp/macos/5.3/cc and b/tools/ido_recomp/macos/5.3/cc differ
diff --git a/tools/ido_recomp/macos/5.3/cfe b/tools/ido_recomp/macos/5.3/cfe
index 92f76465a..86d98c79d 100755
Binary files a/tools/ido_recomp/macos/5.3/cfe and b/tools/ido_recomp/macos/5.3/cfe differ
diff --git a/tools/ido_recomp/macos/5.3/ugen b/tools/ido_recomp/macos/5.3/ugen
index 7be477312..add44a34d 100755
Binary files a/tools/ido_recomp/macos/5.3/ugen and b/tools/ido_recomp/macos/5.3/ugen differ
diff --git a/tools/ido_recomp/macos/5.3/ujoin b/tools/ido_recomp/macos/5.3/ujoin
index e69611f41..5e7ed4789 100755
Binary files a/tools/ido_recomp/macos/5.3/ujoin and b/tools/ido_recomp/macos/5.3/ujoin differ
diff --git a/tools/ido_recomp/macos/5.3/uld b/tools/ido_recomp/macos/5.3/uld
index 2bcce1cd6..64fc3899c 100755
Binary files a/tools/ido_recomp/macos/5.3/uld and b/tools/ido_recomp/macos/5.3/uld differ
diff --git a/tools/ido_recomp/macos/5.3/umerge b/tools/ido_recomp/macos/5.3/umerge
index 7fdf06e8d..c66ef9f2f 100755
Binary files a/tools/ido_recomp/macos/5.3/umerge and b/tools/ido_recomp/macos/5.3/umerge differ
diff --git a/tools/ido_recomp/macos/5.3/uopt b/tools/ido_recomp/macos/5.3/uopt
index e9b8cbe62..0872f9c17 100755
Binary files a/tools/ido_recomp/macos/5.3/uopt and b/tools/ido_recomp/macos/5.3/uopt differ
diff --git a/tools/ido_recomp/macos/5.3/usplit b/tools/ido_recomp/macos/5.3/usplit
index cb28e320c..2a7c35188 100755
Binary files a/tools/ido_recomp/macos/5.3/usplit and b/tools/ido_recomp/macos/5.3/usplit differ
diff --git a/tools/ido_recomp/macos/7.1/as0 b/tools/ido_recomp/macos/7.1/as0
index cdb4f9121..9a2fd2f0a 100755
Binary files a/tools/ido_recomp/macos/7.1/as0 and b/tools/ido_recomp/macos/7.1/as0 differ
diff --git a/tools/ido_recomp/macos/7.1/as1 b/tools/ido_recomp/macos/7.1/as1
index 93370b495..e91f7d1a2 100755
Binary files a/tools/ido_recomp/macos/7.1/as1 and b/tools/ido_recomp/macos/7.1/as1 differ
diff --git a/tools/ido_recomp/macos/7.1/cc b/tools/ido_recomp/macos/7.1/cc
index 96d45690b..b487956f2 100755
Binary files a/tools/ido_recomp/macos/7.1/cc and b/tools/ido_recomp/macos/7.1/cc differ
diff --git a/tools/ido_recomp/macos/7.1/cfe b/tools/ido_recomp/macos/7.1/cfe
index a9f0b56fc..f86fc3743 100755
Binary files a/tools/ido_recomp/macos/7.1/cfe and b/tools/ido_recomp/macos/7.1/cfe differ
diff --git a/tools/ido_recomp/macos/7.1/ugen b/tools/ido_recomp/macos/7.1/ugen
index 801337b48..1e9839b4e 100755
Binary files a/tools/ido_recomp/macos/7.1/ugen and b/tools/ido_recomp/macos/7.1/ugen differ
diff --git a/tools/ido_recomp/macos/7.1/ujoin b/tools/ido_recomp/macos/7.1/ujoin
index 620e624f0..d2512e934 100755
Binary files a/tools/ido_recomp/macos/7.1/ujoin and b/tools/ido_recomp/macos/7.1/ujoin differ
diff --git a/tools/ido_recomp/macos/7.1/uld b/tools/ido_recomp/macos/7.1/uld
index a7826480f..a746a8236 100755
Binary files a/tools/ido_recomp/macos/7.1/uld and b/tools/ido_recomp/macos/7.1/uld differ
diff --git a/tools/ido_recomp/macos/7.1/umerge b/tools/ido_recomp/macos/7.1/umerge
index 0f1978051..a561c0801 100755
Binary files a/tools/ido_recomp/macos/7.1/umerge and b/tools/ido_recomp/macos/7.1/umerge differ
diff --git a/tools/ido_recomp/macos/7.1/uopt b/tools/ido_recomp/macos/7.1/uopt
index 528151499..30817f201 100755
Binary files a/tools/ido_recomp/macos/7.1/uopt and b/tools/ido_recomp/macos/7.1/uopt differ
diff --git a/tools/ido_recomp/macos/7.1/usplit b/tools/ido_recomp/macos/7.1/usplit
index cc539bdb1..247279453 100755
Binary files a/tools/ido_recomp/macos/7.1/usplit and b/tools/ido_recomp/macos/7.1/usplit differ
diff --git a/tools/ido_recomp/windows/5.3/as0.exe b/tools/ido_recomp/windows/5.3/as0.exe
index 10c16ca69..0c4926085 100755
Binary files a/tools/ido_recomp/windows/5.3/as0.exe and b/tools/ido_recomp/windows/5.3/as0.exe differ
diff --git a/tools/ido_recomp/windows/5.3/as1.exe b/tools/ido_recomp/windows/5.3/as1.exe
index 0ddac02bb..2d79cc536 100755
Binary files a/tools/ido_recomp/windows/5.3/as1.exe and b/tools/ido_recomp/windows/5.3/as1.exe differ
diff --git a/tools/ido_recomp/windows/5.3/cc.exe b/tools/ido_recomp/windows/5.3/cc.exe
index fdbaea21d..7c08eac81 100755
Binary files a/tools/ido_recomp/windows/5.3/cc.exe and b/tools/ido_recomp/windows/5.3/cc.exe differ
diff --git a/tools/ido_recomp/windows/5.3/cfe.exe b/tools/ido_recomp/windows/5.3/cfe.exe
index abe1063c6..2f5de5f18 100755
Binary files a/tools/ido_recomp/windows/5.3/cfe.exe and b/tools/ido_recomp/windows/5.3/cfe.exe differ
diff --git a/tools/ido_recomp/windows/5.3/ugen.exe b/tools/ido_recomp/windows/5.3/ugen.exe
index be08a43c9..0f919c234 100755
Binary files a/tools/ido_recomp/windows/5.3/ugen.exe and b/tools/ido_recomp/windows/5.3/ugen.exe differ
diff --git a/tools/ido_recomp/windows/5.3/ujoin.exe b/tools/ido_recomp/windows/5.3/ujoin.exe
index b01b5c335..f1397ee0c 100755
Binary files a/tools/ido_recomp/windows/5.3/ujoin.exe and b/tools/ido_recomp/windows/5.3/ujoin.exe differ
diff --git a/tools/ido_recomp/windows/5.3/uld.exe b/tools/ido_recomp/windows/5.3/uld.exe
index 34cad1400..d415d9ba0 100755
Binary files a/tools/ido_recomp/windows/5.3/uld.exe and b/tools/ido_recomp/windows/5.3/uld.exe differ
diff --git a/tools/ido_recomp/windows/5.3/umerge.exe b/tools/ido_recomp/windows/5.3/umerge.exe
index 3ce31e0cb..23bf7b251 100755
Binary files a/tools/ido_recomp/windows/5.3/umerge.exe and b/tools/ido_recomp/windows/5.3/umerge.exe differ
diff --git a/tools/ido_recomp/windows/5.3/uopt.exe b/tools/ido_recomp/windows/5.3/uopt.exe
index c1fb98c0d..248beabc7 100755
Binary files a/tools/ido_recomp/windows/5.3/uopt.exe and b/tools/ido_recomp/windows/5.3/uopt.exe differ
diff --git a/tools/ido_recomp/windows/5.3/usplit.exe b/tools/ido_recomp/windows/5.3/usplit.exe
index d179f1e13..6ac2a6382 100755
Binary files a/tools/ido_recomp/windows/5.3/usplit.exe and b/tools/ido_recomp/windows/5.3/usplit.exe differ
diff --git a/tools/ido_recomp/windows/7.1/as0.exe b/tools/ido_recomp/windows/7.1/as0.exe
index 1a375d73e..346827a49 100755
Binary files a/tools/ido_recomp/windows/7.1/as0.exe and b/tools/ido_recomp/windows/7.1/as0.exe differ
diff --git a/tools/ido_recomp/windows/7.1/as1.exe b/tools/ido_recomp/windows/7.1/as1.exe
index 4778d2db6..7076875b9 100755
Binary files a/tools/ido_recomp/windows/7.1/as1.exe and b/tools/ido_recomp/windows/7.1/as1.exe differ
diff --git a/tools/ido_recomp/windows/7.1/cc.exe b/tools/ido_recomp/windows/7.1/cc.exe
index 887b7cc49..53bf83433 100755
Binary files a/tools/ido_recomp/windows/7.1/cc.exe and b/tools/ido_recomp/windows/7.1/cc.exe differ
diff --git a/tools/ido_recomp/windows/7.1/cfe.exe b/tools/ido_recomp/windows/7.1/cfe.exe
index 6f5fd9e8d..0286c3fa5 100755
Binary files a/tools/ido_recomp/windows/7.1/cfe.exe and b/tools/ido_recomp/windows/7.1/cfe.exe differ
diff --git a/tools/ido_recomp/windows/7.1/ugen.exe b/tools/ido_recomp/windows/7.1/ugen.exe
index fcc03538c..30577e396 100755
Binary files a/tools/ido_recomp/windows/7.1/ugen.exe and b/tools/ido_recomp/windows/7.1/ugen.exe differ
diff --git a/tools/ido_recomp/windows/7.1/ujoin.exe b/tools/ido_recomp/windows/7.1/ujoin.exe
index 9fb3a3f4f..18fc825bc 100755
Binary files a/tools/ido_recomp/windows/7.1/ujoin.exe and b/tools/ido_recomp/windows/7.1/ujoin.exe differ
diff --git a/tools/ido_recomp/windows/7.1/uld.exe b/tools/ido_recomp/windows/7.1/uld.exe
index 4a0cc8fe2..a0bb88593 100755
Binary files a/tools/ido_recomp/windows/7.1/uld.exe and b/tools/ido_recomp/windows/7.1/uld.exe differ
diff --git a/tools/ido_recomp/windows/7.1/umerge.exe b/tools/ido_recomp/windows/7.1/umerge.exe
index 7cc0b1be6..3e6698ada 100755
Binary files a/tools/ido_recomp/windows/7.1/umerge.exe and b/tools/ido_recomp/windows/7.1/umerge.exe differ
diff --git a/tools/ido_recomp/windows/7.1/uopt.exe b/tools/ido_recomp/windows/7.1/uopt.exe
index 4fbd1ab57..ae714d528 100755
Binary files a/tools/ido_recomp/windows/7.1/uopt.exe and b/tools/ido_recomp/windows/7.1/uopt.exe differ
diff --git a/tools/ido_recomp/windows/7.1/usplit.exe b/tools/ido_recomp/windows/7.1/usplit.exe
index 5c0da6fe6..f61837d0f 100755
Binary files a/tools/ido_recomp/windows/7.1/usplit.exe and b/tools/ido_recomp/windows/7.1/usplit.exe differ
diff --git a/tools/msgdis.py b/tools/msgdis.py
index 3d569802b..9329ea7a8 100644
--- a/tools/msgdis.py
+++ b/tools/msgdis.py
@@ -391,7 +391,7 @@ def extract_all_text(text_out, staff_text_out):
out += "\n#endif"
out += "\n\n"
- with open(text_out, "w") as outfile:
+ with open(text_out, "w", encoding="utf8") as outfile:
outfile.write(out.strip() + "\n")
if staff_text_out is not None:
@@ -402,5 +402,5 @@ def extract_all_text(text_out, staff_text_out):
out += f"DEFINE_MESSAGE(0x{message[0]:04X}, {textbox_type[message[1]]}, {textbox_ypos[message[2]]},\n{message[3]}\n)\n\n"
- with open(staff_text_out, "w") as outfile:
+ with open(staff_text_out, "w", encoding="utf8") as outfile:
outfile.write(out.strip() + "\n")