|
|
#!/bin/bash
# --- T2-COPYRIGHT-NOTE-BEGIN --- # This copyright note is auto-generated by ./scripts/Create-CopyPatch. # # T2 SDE: target/dreamcast/DreamBurn.sh # Copyright (C) 2004 - 2006 The T2 SDE Project # # More information can be found in the files COPYING and README. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. A copy of the # GNU General Public License can be found in the file COPYING. # --- T2-COPYRIGHT-NOTE-END ---
show_usage() { cat <<EOT
Usage: $0 <content> <IP.BIN> [ -cdrw ] [-dev <device>] [-genopt <string>] [-burnopt <string>] [-xa <string>]
Burn boot-able discs for the SEGA Dreamcast console using cdrecord. mandatory parameters:
<content> file or directory containing scrambled executable
<IP.BIN> valid IP header conforming to <content>
options:
-cdrw burn CD-RW (blank PMA, TOC, Pregap first). Note that the Dreamcast cannot read CD-RWs !
-dev cdrecord device string. Default is "0,0,0"
-genopt additional cdrecord options. Default is ""
-burnopt additional cdrecord options for burning (e.g. speed=8 ). Default is ""
-xa cdrecord option for CD/XA with form 1 sectors with 2048 bytes per sector. Depending on cdrecord version this is -xa or -xa1 (consult the manpage !). Default is "-xa" EOT exit 1 }
##### default values
cdrw="" dev="0,0,0" genopt="" burnopt="" xa="-xa"
####################
content=$1 ip=$2 shift ; shift
while [ "$1" ] ; do case "$1" in -cdrw) cdrw=" blank=minimal" ; shift ;; -dev) dev="$2" ; shift ; shift ;; -genopt) genopt=" $2" ; shift ; shift ;; -burnopt) burnopt=" $2" ; shift ; shift ;; -xa) xa="$2" ; shift ; shift ;; *) echo "Unknown option: $1" ; show_usage ;; esac done
[ -e "$content" -a -f "$ip" ] || show_usage;
cdr="cdrecord dev=$dev$genopt" burnaudio="$cdr$burnopt$cdrw -multi -audio" info="$cdr -msinfo" burndata="$cdr$burnopt -multi $xa"
cat <<EOT
cdrecord calls to be executed:
# $burnaudio (FILE) # $info # $burndata (FILE)
EOT echo -n "Proceed ? [Y/n] " read confirm;
[ -z "$confirm" -o "$confirm" == "y" -o "$confirm" == "Y" ] || exit 0;
audiofile=`mktemp -t audio.raw.XXXXXX` datafile=`mktemp -t data.raw.XXXXXX` isofile=`mktemp -t data.iso.XXXXXX`
echo "Creating bogus audio track." dd if=/dev/zero bs=2352 count=300 of=$audiofile 2>/dev/null echo echo
echo "Burning...." cmd="$burnaudio $audiofile" echo "$cmd" eval "$cmd" echo echo
echo "Geting multisession status:" echo "$info" status=`eval "$info"` echo "--> $status" echo echo
echo "Creating image." mkisofs -l -C $status -o $isofile $content echo "Inserting $ip." ( cat $ip ; dd if=$isofile bs=2048 skip=16 ) > $datafile echo echo
echo "Burning..." cmd="$burndata $datafile" echo "$cmd" eval "$cmd" echo echo echo "Cleaning up." rm -f $audiofile $isofile $datafile echo "Done."
|