1
0
Fork 0
mirror of https://github.com/notwa/mm synced 2024-06-28 21:07:12 -07:00
mm/patch/mm-bq

79 lines
1.8 KiB
Plaintext
Raw Normal View History

2016-04-02 02:06:46 -07:00
#!/usr/bin/env bash
set -e
2016-04-02 05:58:46 -07:00
fast=0
2016-04-21 13:04:59 -07:00
[[ "$1" == "fast" ]] && fast=1 && shift
[[ "$1" == "test" ]] && fast=2 && shift
args="$@"
2016-04-02 05:58:46 -07:00
2016-04-02 02:06:46 -07:00
inject=../Lua/inject
sha1=d6133ace5afaa0882cf214cf88daba39e266c078
extracted=../dump/mm-US10-"$sha1"
2016-04-04 07:39:46 -07:00
rom=../roms/everything/"Legend of Zelda, The - Majora's Mask (U) [!].z64"
2016-04-02 02:06:46 -07:00
lips=../Lua/lib/lips
2016-04-15 11:43:38 -07:00
out=mm-bq.z64
2016-04-02 05:58:46 -07:00
2016-04-02 02:06:46 -07:00
code="0031 V00B3C000"
2016-04-02 05:58:46 -07:00
extra="1552 V02EE7040"
2016-04-02 02:06:46 -07:00
2016-04-04 07:39:46 -07:00
ratio() {
len1="$(wc -c < "$1")"
len2="$(wc -c < "$2")"
let percent=(len2*100)/len1
echo "ratio: $percent%"
}
unc() {
[ -e patchme/"$1".Yaz0 ] || return 0
2016-04-15 11:43:38 -07:00
../../z64yaz0 patchme/"$1".Yaz0 > patchme/"$1"
2016-04-04 07:39:46 -07:00
echo "uncompressed $1"
ratio patchme/"$1" patchme/"$1".Yaz0
rm patchme/"$1".Yaz0
}
comp() {
[ -e patchme/"$1" ] || return 0
2016-04-15 11:43:38 -07:00
../../z64yaz0 patchme/"$1" > patchme/"$1".Yaz0
2016-04-04 07:39:46 -07:00
echo "compressed $1"
ratio patchme/"$1" patchme/"$1".Yaz0
rm patchme/"$1"
}
2016-04-15 11:43:38 -07:00
mkdir -p build
cp *.lua build/
cd build
[ ! -s ../../z64yaz0 ] && cc -O3 ../../z64yaz0.c -o ../../z64yaz0
2016-04-04 07:39:46 -07:00
if [ $fast -eq 0 ] || [ ! -d patchme ]; then
2016-04-02 05:58:46 -07:00
[ -d patchme ] && rm -r patchme
2016-04-15 11:43:38 -07:00
(cd ../../; ./z64dump.py -c "$rom")
mv ../../"$sha1" patchme
2016-04-02 05:58:46 -07:00
fi
2016-04-04 07:39:46 -07:00
unc "$code"
2016-04-02 02:06:46 -07:00
# don't copy entire dir; avoid copying dotfiles (.git)
mkdir -p lips
2016-04-15 11:43:38 -07:00
cp ../"$lips"/* lips
cp ../"$inject"/*.asm .
cp ../*.asm .
2016-04-02 02:06:46 -07:00
dd if=/dev/zero of=extra bs=370688 count=1 2>/dev/null
2016-04-02 05:58:46 -07:00
2016-04-21 13:04:59 -07:00
luajit patch.lua -e labels.lua -o 0x80780000 "$@" extra.asm extra
luajit patch.lua -i labels.lua "$@" code.asm patchme/"$code"
2016-04-04 07:39:46 -07:00
# ensure the file is the proper size (Lua seems to expand it?)
2016-04-04 07:39:46 -07:00
dd if=extra of=patchme/"$extra" bs=370688 count=1 2>/dev/null
rm extra
2016-04-02 05:58:46 -07:00
if [ $fast -ne 2 ]; then
2016-04-04 07:39:46 -07:00
comp "$code"
comp "$extra"
2016-04-15 11:43:38 -07:00
(cd ../..; ./z64dump.py patch/build/patchme)
dd if=patchme.z64 of="$out" bs=$((1024*1024)) count=32 status=none
2016-04-02 05:58:46 -07:00
fi