From 3b14d8d1a077b716a6bddb19c44a6a43e2b4c092 Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Tue, 3 Jan 2012 00:52:12 +0000 Subject: [PATCH] genmidi: Add a2i-sbi conversion script. Convenience script to convert a2i files to the more convenient SBI format. --- lumps/genmidi/a2i-to-sbi | 43 +++++++++++++++++++++++++++++++++++++++ lumps/genmidi/sbi_file.py | 12 +++++++++++ 2 files changed, 55 insertions(+) create mode 100755 lumps/genmidi/a2i-to-sbi diff --git a/lumps/genmidi/a2i-to-sbi b/lumps/genmidi/a2i-to-sbi new file mode 100755 index 00000000..c5af6b4d --- /dev/null +++ b/lumps/genmidi/a2i-to-sbi @@ -0,0 +1,43 @@ +#!/usr/bin/env python +# +# Copyright (c) 2011, 2012 +# Contributors to the Freedoom project. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the freedoom project nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +import a2i_file +import sbi_file +import sys + +if len(sys.argv) != 3: + print >> sys.stderr, "Usage: %s " \ + % sys.argv[0] + sys.exit(-1) + +data = a2i_file.read(sys.argv[1]) +sbi_file.write(sys.argv[2], data) + diff --git a/lumps/genmidi/sbi_file.py b/lumps/genmidi/sbi_file.py index 533ae0a4..9e128a69 100644 --- a/lumps/genmidi/sbi_file.py +++ b/lumps/genmidi/sbi_file.py @@ -70,6 +70,18 @@ def read(filename): return result +def write(filename, data): + f = open(filename, 'w') + + f.write(struct.pack("4s32s", HEADER_VALUE, data["name"])) + + for field in FIELDS: + f.write(struct.pack("B", data[field])) + for x in range(16 - len(FIELDS)): + f.write(struct.pack("B", 0)) + + f.close() + if __name__ == "__main__": for filename in sys.argv[1:]: print filename