diff options
author | AltoXorg | 2022-10-14 11:49:49 +0800 |
---|---|---|
committer | AltoXorg | 2022-10-14 11:49:49 +0800 |
commit | 280a47add7eb676d87479ecb104fbcc8af0afcb7 (patch) | |
tree | d2582e29e9b5ac889ee14a2bbae900997f6cfe21 | |
download | aur-280a47add7eb676d87479ecb104fbcc8af0afcb7.tar.gz |
init
-rw-r--r-- | .SRCINFO | 14 | ||||
-rw-r--r-- | PKGBUILD | 51 | ||||
-rwxr-xr-x | verify_baserom.py | 36 |
3 files changed, 101 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..09ca6bd35d8a --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,14 @@ +pkgbase = soh-otr-gc_mq_d + pkgdesc = OTR game data for SoH (Ocarina of Time Master Quest Debug) + pkgver = 1 + pkgrel = 1 + url = https://github.com/HarbourMasters/Shipwright + arch = any + makedepends = soh-otr-exporter + depends = soh + provides = soh-otr + conflicts = soh-otr + source = verify_baserom.py + sha256sums = bd82ccb54e94505549af7dc07b56dc83b3e63e1c65d525b6fb98ed1b56b8aecf + +pkgname = soh-otr-gc_mq_d diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..8d7c7dd59044 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,51 @@ +# Maintainer: AltoXorg <atrl101 AT yahoo DOT com> + +_romname=gc_mq_d +_romdesc="Ocarina of Time Master Quest Debug" +pkgname=soh-otr-${_romname} +pkgver=1 +pkgrel=1 +pkgdesc="OTR game data for SoH (${_romdesc})" +arch=("any") +url="https://github.com/HarbourMasters/Shipwright" +provides=("soh-otr") +conflicts=("soh-otr") +depends=("soh") +makedepends=("soh-otr-exporter") +source=("verify_baserom.py") +sha256sums=('bd82ccb54e94505549af7dc07b56dc83b3e63e1c65d525b6fb98ed1b56b8aecf') + +SHIP_PREFIX=/opt/soh + +prepare() { + cd "${srcdir}" + + if [ ! -e "${startdir}/baserom.z64" ]; then + echo "baserom.z64 does not exist in this directory." + echo "Please put the ROM in \"${startdir}\"." + return 1 + fi + + cp "${startdir}/baserom.z64" . + echo "Checking hash..." + ./verify_baserom.py baserom.z64 +} + +build() { + cd "${srcdir}" + + ln -s ${SHIP_PREFIX}/assets assets + mkdir -p Extract/assets + cp -r "${SHIP_PREFIX}"/assets/game/* Extract/assets/ + + "assets/extractor/ZAPD.out" ed -eh -i "assets/extractor/xmls/${_romname^^}" \ + -b baserom.z64 -fl "assets/extractor/filelists" -o placeholder -osf placeholder -gsf 1 \ + -rconf "assets/extractor/Config_${_romname^^}.xml" -se OTR +} + +package() { + cd "${srcdir}" + + install -Dm644 oot.otr -t "${pkgdir}/${SHIP_PREFIX}" +} + diff --git a/verify_baserom.py b/verify_baserom.py new file mode 100755 index 000000000000..e84897c2f9b8 --- /dev/null +++ b/verify_baserom.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 +import sys +import hashlib + +baseromhash = 'f0b7f35375f9cc8ca1b2d59d78e35405' +baseromsize = 0x3600000 + +with open(sys.argv[1], 'rb') as f: + filedata = bytearray(f.read(baseromsize)) + +### BYTEORDER CONVERTS +## LITTLE ENDIAN (.n64) +#if filedata[0] == 0x40: +# filedata[0::4], filedata[1::4], filedata[2::4], filedata[3::4] = \ +# filedata[3::4], filedata[2::4], filedata[1::4], filedata[0::4] +# +## BYTE SWAPPED (.v64) +#elif filedata[0] == 0x37: +# filedata[0::2], filedata[1::2] = filedata[1::2], filedata[0::2] + +orighash = hashlib.md5(filedata).hexdigest() + +## ROM PATCHES +# NZLP HEADER +filedata[0x3E] = 0x50 + +# BLACKOUT REMAINING ONES +filedata[0x35CF000:] = [0xFF] * (len(filedata) - 0x35CF000) + +patchedhash = hashlib.md5(filedata).hexdigest() + +if patchedhash != baseromhash: + print(f"Bad ROM! Expected {baseromhash} but got {patchedhash}.") + sys.exit(1) + +print("OK! Looks good.") |