[SCM] Packaging for original LIERO binary data branch, master, updated. upstream/1.33-24-gc6ae2cf
Martin Erik Werner
martinerikwerner at gmail.com
Sat Jan 21 00:54:06 UTC 2012
The following commit has been merged in the master branch:
commit c151b95b10b611b85c4b89d38e6a1d9db12f5391
Author: Martin Erik Werner <martinerikwerner at gmail.com>
Date: Fri Jan 20 03:53:58 2012 +0100
packsounds wip
diff --git a/packsounds b/packsounds
index 32654d9..82b23e2 100755
--- a/packsounds
+++ b/packsounds
@@ -1,14 +1,14 @@
#!/bin/bash
-usage="Usage: $0 <inputfile>"
+usage="Usage: $0 <outputfile>"
if [ $# != 1 ]; then
echo >&2 $usage
exit 1
fi
-if [ ! -r "$1" ]; then
- echo >&2 "Unable to read file '"$1"', aborting"
+if [ ! -w "$1" ]; then
+ echo >&2 "Unable to write to file '"$1"', aborting"
exit 1
fi
@@ -16,7 +16,7 @@ hash sox 2>&- || { echo >&2 "This script requires the "'"SoX"'" audio manipulato
sndfile="$1"
sounds=30
-header=2
+headersize=2
entrysize=16
nameoffset=0
namesize=8
@@ -25,28 +25,74 @@ offsetsize=4
sizeoffset=12
sizesize=4
-# Input file:
+# Output file:
# header
# NAME|offset|size
# NAME|offset|size
# NAME|offset|size
# Raw PCM sound data (signed 8bit, 22050 Hz, mono)...
-# For more info, look at
-# echo "$(dd if=$sndfile ibs=1 skip=2 | xxd -g 4 | head -30)"
+function pad {
+# Write $1 NULL bytes to file
+ pad="$1"
+ p=0
+ until [ $p = $pad ]; do
+ printf "\x$i" >> $sndfile
+ p=$(expr $s + 1)
+ done
+}
+
+function writedec {
+# write decimal number $1 to file, and pad to $2 bytes
+ dec="$1"
+ size="$2"
+ hex="$(printf '%x\n' $1)"
+ s=0
+
+ for i in "$(echo "$hex" | rev | fold -b 2 | rev)"; do
+ printf "\x$i" >> $sndfile
+ s=$(expr $s + 1)
+ done
+
+ if [ $size ]; then
+ pad $(($size - $s))
+ fi
+}
+
+function writeheader {
+ writedec 30 2
+}
+
+function writestring {
+# Write string $1 to file, padding to $2 bytes
+ name="$1"
+ size="$2"
+ s=0
+
+ for i in $(echo $name | fold -b 1); do
+ dec=$(printf "%d\n" \'$i)
+ writedec $dec
+ s=$(expr $s + 1)
+ done
+
+ if [ $size ]; then
+ pad $(($size - $s))
+ fi
+}
+
# For each entry
for i in $(seq 0 $(($sounds - 1))); do
name="$(dd if=$sndfile ibs=1 \
- skip=$(($i * $entrysize + $(($header + $nameoffset)))) \
+ skip=$(($i * $entrysize + $(($headersize + $nameoffset)))) \
count=$namesize 2>/dev/null | tr -d ' ')"
offset="$((0x$(dd if=$sndfile ibs=1 \
- skip=$(($i * $entrysize + $(($header + $offsetoffset)))) \
+ skip=$(($i * $entrysize + $(($headersize + $offsetoffset)))) \
count=$offsetsize 2>/dev/null | od -A n -t x4 | tr -d ' ')))"
size="$((0x$(dd if=$sndfile ibs=1 \
- skip=$(($i * $entrysize + $(($header + $sizeoffset)))) \
+ skip=$(($i * $entrysize + $(($headersize + $sizeoffset)))) \
count=$sizesize 2>/dev/null | od -A n -t x4 | tr -d ' ')))"
dd if=$sndfile ibs=1 skip=$offset count=$size 2>/dev/null | \
--
Packaging for original LIERO binary data
More information about the Pkg-games-commits
mailing list