#!/bin/sh

# split rom
$ROOT/usr/sbin/rommap zelda rom > rom.map

# compress files, skip over exceptions

for dfile in `cut -d" " -f1 rom.map`; do
    echo $dfile
    szsfile=`basename $dfile .d`.szs
    ddfile=`basename $dfile .d`.dd
    gzfile=`basename $dfile .d`.gz
    case ${dfile} in
    makerom.d | boot.d | dmadata.d | soundBankData.d | soundSequanceData.d | soundWaveData.d)
	rm -f $szsfile
	;;
    UC_object_*.d | _sound*.d | *test*.d | sm_ephrase_static.d | sm_letter_static.d)
	rm -f $szsfile
	;;
    test01_*.d )
	rm -f $szsfile
	;;
    d2_*_pal_static.d)
	rm -f $szsfile
	;;
    code.d | ovl_*.d )
        gzip -c -9 -n $dfile > $gzfile 
	dd bs=10 skip=1 if=$gzfile of=$szsfile
	$ROOT/usr/sbin/romalign $szsfile 16
	;;
    * )
        gzip -c -9 -n $dfile > $gzfile 
	dd bs=10 skip=1 if=$gzfile of=$szsfile
	$ROOT/usr/sbin/romalign $szsfile 16
        ;;
    esac
    if [ -f $szsfile ]; then
        #echo "check $szsfile"
        gunzip -c -S "" $gzfile > ${ddfile}
	cmp ${dfile} ${ddfile}
	if [ $? != 0 ]; then 
	    echo "bad decompression: $szsfile"
	    rm -f $szsfile
	fi
	rm -f ${ddfile}
	rm -f $gzfile
    fi
done

# reconstruct rom from compressed files
cp dmadata.d dmadata.d.bak
$ROOT/usr/sbin/romaddress rom.map dmadata.d > dmadata.map

: > romP
for file in `cut -d" " -f1 rom.map`; do
    f=`basename $file .d`
    if [ -f $f.szs ]; then
	cat $f.szs
    elif [ -f $f.szp ]; then
	cat $f.szp
    else
	cat $f.d
    fi
done >> romP

# pad out rom
#$ROOT/usr/sbin/romfill romP romPP 33554432
cp romP romPP
ls -l rom romP romPP
