Files
goldeneye-pc-port/tools/data_compress.sh
T
kholdfuzion 3516197a71 oops forgot that
Former-commit-id: 51b7d68a6dc95736271f84b0fc77ebf6d47e52cd [formerly 2c85d1c72fdc9bb1fbf167e646bdeb09ef3ab61e] [formerly a13e518d540596eb3f572666e7dc1f0e9fc23735 [formerly 5a1125980db68c93b676d756a1735174827465c8]]
Former-commit-id: 32929e424314258696aadd1fa822cc97697c1f87 [formerly 40f3f2bb14e103445d97e3a8956926eda59e5f73]
Former-commit-id: 6124ae5e2340b83c14e40668868ecacb9f4d1fa3
2019-08-03 18:01:45 +00:00

40 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
#this script is a hacky mess that can most definately be improved
#fixme as I will fail if vaddr of data gets moved!!!
#DATASEG_START=$(printf "%d\n" 0x$(grep './build/ge007.u.map' -e '.data 0x0000000080020d90' | cut -d "x" -f 4 ))
#DATASEG_LEN=$(printf "%d\n" 0x$(grep './build/ge007.u.map' -e '.data 0x0000000080020d90' | cut -d "x" -f 3 | cut -d " " -f 1))
DATASEG_START=12582912
DATASEG_LEN=247120
echo "patching $1"
echo "extract data segment"
echo "one byte at a time is slow, sorry"
echo "if you changed size of data segment, change count here"
dd skip=${DATASEG_START} count=${DATASEG_LEN} if=$1 of=data_seg bs=1
echo "truncate $1 to 0x$(printf "%x\n" ${DATASEG_START})"
cat $1 | head --bytes=${DATASEG_START} > $1.tmp
echo "compress data segment"
tools/1172compress.sh data_seg data_seg.rz
echo "inject data segment"
RZSIZE=$(stat -c%s "data_seg.rz")
echo "size=${RZSIZE}"
#fixme as I will fail if position of c_data gets moved!!!
CDATA_POS=$(printf "%d\n" 0x$(grep './build/ge007.u.map' -e 'c_data_array' | cut -d "x" -f 2 | cut -d " " -f 1 ))
#CDATA_MAX_SIZE=$(printf "%d\n" 0x$(grep './build/ge007.u.map' -e '.c_data 0x0000000000021990' | cut -d "x" -f 2 ))
#CDATA_POS=137616
CDATA_MAX_SIZE=72704
echo "maxsize=${CDATA_MAX_SIZE}"
echo "one byte at a time is slow, sorry"
dd if=data_seg.rz of=$1.tmp obs=1 seek=${CDATA_POS} conv=notrunc
rm data_seg data_seg.rz
mv $1.tmp $1