This is an automated email from the git hooks/post-receive script.

skitt pushed a commit to branch master
in repository scummvm-tools.

commit 0ceda235b20c1f179a9f7048c757c36e0ebb4d6e
Author: Stephen Kitt <sk...@debian.org>
Date:   Mon Oct 17 12:32:11 2016 +0200

    New upstream version 1.9.0
---
 Makefile                               |  77 +++++++++++++---
 NEWS                                   |   3 +
 configure                              | 155 ++++++++++++++++++++++++++++++---
 decompiler/test/codegen.h              |   2 +-
 dists/macosx/DS_Store                  | Bin 0 -> 6148 bytes
 dists/macosx/Info.plist                |   6 +-
 dists/scummvmtools.rc                  |   8 +-
 dists/win32/scummvm-tools.nsi          |   4 +-
 engines/pegasus/pegasus_save_types.cpp |   2 +-
 engines/scumm/descumm.cpp              |  67 +++++++++++++-
 engines/scumm/descumm6.cpp             |  64 +++++++-------
 engines/sword1/compress_sword1.cpp     |  48 +++++++---
 engines/sword1/compress_sword1.h       |   4 +-
 internal_version.h                     |   2 +-
 14 files changed, 355 insertions(+), 87 deletions(-)

diff --git a/Makefile b/Makefile
index afc4473..69dda95 100644
--- a/Makefile
+++ b/Makefile
@@ -77,17 +77,6 @@ else
        $(error You need to run $(srcdir)/configure before you can run make. 
Check $(srcdir)/configure --help for a list of parameters)
 endif
 
-# Special target to create a application wrapper for Mac OS X
-bundle_name = ScummVM\ Tools.app
-bundle: scummvm-tools$(EXEEXT)
-       mkdir -p $(bundle_name)
-       mkdir -p $(bundle_name)/Contents
-       mkdir -p $(bundle_name)/Contents/MacOS
-       mkdir -p $(bundle_name)/Contents/Resources
-       echo "APPL????" > $(bundle_name)/Contents/PkgInfo
-       cp $(srcdir)/dists/macosx/Info.plist $(bundle_name)/Contents/
-       cp $(srcdir)/gui/media/*.* $(bundle_name)/Contents/Resources
-       cp scummvm-tools$(EXEEXT) $(bundle_name)/Contents/MacOS/
 
 #
 # Windows specific
@@ -167,6 +156,72 @@ endif
        $(STRIP) scummvm-tools-cli$(EXEEXT)  -o 
$(srcdir)/$(WIN32BUILD)/scummvm-tools-cli$(EXEEXT)
        makensis -V2 -Dtop_srcdir="../.." -Dtext_dir="../../$(WIN32BUILD)" 
-Dbuild_dir="../../$(WIN32BUILD)" $(srcdir)/dists/win32/scummvm-tools.nsi
 
+
+#
+# OS X specific
+#
+
+ifdef USE_VORBIS
+OSX_STATIC_LIBS += $(STATICLIBPATH)/lib/libvorbisfile.a 
$(STATICLIBPATH)/lib/libvorbis.a $(STATICLIBPATH)/lib/libvorbisenc.a 
$(STATICLIBPATH)/lib/libogg.a
+endif
+
+ifdef USE_FLAC
+OSX_STATIC_LIBS += $(STATICLIBPATH)/lib/libFLAC.a
+endif
+
+ifdef USE_MAD
+OSX_STATIC_LIBS += $(STATICLIBPATH)/lib/libmad.a
+endif
+
+ifdef USE_PNG
+OSX_STATIC_LIBS += $(STATICLIBPATH)/lib/libpng.a
+endif
+
+ifdef USE_ZLIB
+OSX_STATIC_LIBS += $(STATICLIBPATH)/lib/libz.a
+endif
+
+
+# Special target to create a static linked binaries for Mac OS X.
+scummvm-tools-static: $(scummvm-tools_OBJS)
+       $(CXX) $(LDFLAGS) -o scummvm-tools-static $(scummvm-tools_OBJS) \
+               -framework AudioUnit -framework AudioToolbox -framework Carbon 
-framework CoreMIDI \
+               $(WXSTATICLIBS) $(OSX_STATIC_LIBS)
+
+scummvm-tools-cli-static: $(scummvm-tools-cli_OBJS)
+       $(CXX) $(LDFLAGS) -o scummvm-tools-cli-static $(scummvm-tools-cli_OBJS) 
\
+               -framework AudioUnit -framework AudioToolbox -framework Carbon 
-framework CoreMIDI \
+               $(OSX_STATIC_LIBS)
+
+bundle_name = ScummVM\ Tools.app
+bundle: scummvm-tools-static
+       mkdir -p $(bundle_name)
+       mkdir -p $(bundle_name)/Contents
+       mkdir -p $(bundle_name)/Contents/MacOS
+       mkdir -p $(bundle_name)/Contents/Resources
+       echo "APPL????" > $(bundle_name)/Contents/PkgInfo
+       cp $(srcdir)/dists/macosx/Info.plist $(bundle_name)/Contents/
+       cp $(srcdir)/gui/media/*.* $(bundle_name)/Contents/Resources
+       cp scummvm-tools-static $(bundle_name)/Contents/MacOS/scummvm-tools
+
+# Special target to create a snapshot disk image for Mac OS X
+osxsnap: bundle scummvm-tools-cli-static
+       mkdir ScummVM-Tools-snapshot
+       cp $(srcdir)/COPYING ./ScummVM-Tools-snapshot/License\ \(GPL\)
+       cp $(srcdir)/NEWS ./ScummVM-Tools-snapshot/News
+       cp $(srcdir)/README ./ScummVM-Tools-snapshot/ScummVM\ ReadMe
+       $(XCODETOOLSPATH)/SetFile -t ttro -c ttxt ./ScummVM-Tools-snapshot/*
+       $(XCODETOOLSPATH)/CpMac -r $(bundle_name) ./ScummVM-Tools-snapshot/
+       cp scummvm-tools-cli-static ./ScummVM-Tools-snapshot/scummvm-tools-cli
+       cp $(srcdir)/dists/macosx/DS_Store ./ScummVM-Tools-snapshot/.DS_Store
+       $(XCODETOOLSPATH)/SetFile -a V ./ScummVM-Tools-snapshot/.DS_Store
+       hdiutil create -ov -format UDZO -imagekey zlib-level=9 -fs HFS+ \
+                                       -srcfolder ScummVM-Tools-snapshot \
+                                       -volname "ScummVM Tools" \
+                                       ScummVM-Tools-snapshot.dmg
+       rm -rf ScummVM-snapshot
+
+
 #
 # AmigaOS specific
 #
diff --git a/NEWS b/NEWS
index edeb8ca..fa56aa6 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,9 @@
 For a more comprehensive changelog of the latest experimental code, see:
         https://github.com/scummvm/scummvm-tools/commits/
 
+1.9.0 (2016-10-27)
+ - Fix random crashes in the tool to convert Broken Sword 1 speech files.
+
 1.8.0 (2016-03-04)
  - Add a tool to compress Tony Tough's ADP files.
  - Add extraction and packing tools for The Prince and the Coward.
diff --git a/configure b/configure
index 08fb8e9..abbd1e6 100755
--- a/configure
+++ b/configure
@@ -85,6 +85,7 @@ _debug_build=auto
 _release_build=auto
 _verbose_build=no
 _enable_prof=no
+_use_cxx11=yes
 # Default commands
 _ranlib=ranlib
 _strip=strip
@@ -96,8 +97,11 @@ _wxpath="$PATH"
 _prefix=/usr/local
 _wxincludes=""
 _wxlibs=""
+_wxstaticlibs=""
 _freetypeincludes=""
 _freetypelibs=""
+_staticlibpath=""
+_xcodetoolspath=""
 _amigaos4path="Games:ScummVM-Tools"
 
 # For cross compiling
@@ -332,6 +336,7 @@ Special configuration feature:
   --host=HOST             cross-compile to target HOST (arm-linux, ...)
 
 Optional Features:
+  --disable-c++11          disable building as C++11 when the compiler allows 
that
   --disable-debug          disable building with debugging symbols
   --enable-Werror          treat warnings as errors
   --enable-profiling       enable profiling
@@ -448,12 +453,24 @@ for ac_option in $@; do
                BOOST_CFLAGS="-I$arg/include"
                BOOST_LIBS="-L$arg/lib"
                ;;
+       --with-staticlib-prefix=*)
+               _staticlibpath=`echo $ac_option | cut -d '=' -f 2`
+               ;;
+       --with-xcodetools-path=*)
+               _xcodetoolspath=`echo $ac_option | cut -d '=' -f 2`
+               ;;
        --enable-debug)
                _debug_build=yes
                ;;
        --disable-debug)
                _debug_build=no
                ;;
+       --enable-c++11)
+               _use_cxx11=yes
+               ;;
+       --disable-c++11)
+               _use_cxx11=no
+               ;;
        --enable-Werror)
                CXXFLAGS="$CXXFLAGS -Werror"
                ;;
@@ -837,7 +854,7 @@ else
                solaris*)
                        cxx_version=`( $CXX -V ) 2>&1`
                        cxx_version="`echo "${cxx_version}" | sed 
's/.*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/'`"
-                       
+
                        case $cxx_version in
                                5.1[0-2])
                                        cxx_verc_fail=no
@@ -867,33 +884,64 @@ else
 fi
 
 #
+# Check whether the compiler supports C++11
+#
+have_cxx11=no
+cat > $TMPC << EOF
+int main(int argc, char *argv[]) { if (argv == nullptr) return -1; else return 
0; }
+EOF
+cc_check -std=c++11 && have_cxx11=yes
+if test "$_use_cxx11" = "yes" ; then
+       _use_cxx11=$have_cxx11
+fi
+
+#
 # Setup compiler specific CXXFLAGS now that we know the compiler version.
 # Foremost, this means enabling various warnings.
 # In addition, we set CXX_UPDATE_DEP_FLAG for GCC >= 3.0 and for ICC.
 #
 if test "$have_gcc" = yes ; then
        if test "$_cxx_major" -ge "3" ; then
-               case $_host_os in
-               # newlib-based system include files suppress non-C89 function
-               # declarations under __STRICT_ANSI__
-               amigaos* | android | dreamcast | ds | gamecube | mingw* | n64 | 
psp | ps2 | wii | wince )
-                       ;;
-               *)
-                       CXXFLAGS="$CXXFLAGS -ansi"
-                       ;;
-               esac
+               # Try to use ANSI mode when C++11 is disabled.
+               if test "$_use_cxx11" = "no" ; then
+                       case $_host_os in
+                       # newlib-based system include files suppress non-C89 
function
+                       # declarations under __STRICT_ANSI__
+                       amigaos* | android | dreamcast | ds | gamecube | mingw* 
| n64 | psp | ps2 | wii | wince )
+                               ;;
+                       *)
+                               CXXFLAGS="$CXXFLAGS -ansi"
+                               ;;
+                       esac
+               fi
                CXXFLAGS="$CXXFLAGS -W -Wno-unused-parameter"
                add_line_to_config_mk 'HAVE_GCC3 = 1'
                add_line_to_config_mk 'CXX_UPDATE_DEP_FLAG = -MMD -MF 
"$(*D)/$(DEPDIR)/$(*F).d" -MQ "$@" -MP'
-       fi;
+       fi
 
        if test "$_cxx_major" -eq 4 && test "$_cxx_minor" -ge 3 || \
           test "$_cxx_major" -gt 4 ; then
                CXXFLAGS="$CXXFLAGS -Wno-empty-body"
        else
                CXXFLAGS="$CXXFLAGS -Wconversion"
-       fi;
-fi;
+       fi
+fi
+
+echo_n "Building as C++11... "
+if test "$_use_cxx11" = "yes" ; then
+       case $_host_os in
+       # newlib-based system include files suppress non-C89 function
+       # declarations under __STRICT_ANSI__
+       amigaos* | android | dreamcast | ds | gamecube | mingw* | n64 | psp | 
ps2 | wii | wince )
+               _use_cxx11=no
+               ;;
+       *)
+               CXXFLAGS="$CXXFLAGS -std=c++11"
+               ;;
+       esac
+fi
+echo $_use_cxx11
+
 
 # By default, we add -pedantic to the CXXFLAGS to catch some potentially
 # non-portable constructs, like use of GNU extensions.
@@ -1044,7 +1092,6 @@ echo_n "Checking hosttype... "
 echo $_host_os
 case $_host_os in
        amigaos*)
-               LDFLAGS="$LDFLAGS -use-dynld"
                LDFLAGS="$LDFLAGS -L/sdk/local/newlib/lib"
                # We have to use 'long' for our 4 byte typedef because AmigaOS 
already typedefs (u)int32
                # as (unsigned) long, and consequently we'd get a compiler 
error otherwise.
@@ -1089,6 +1136,78 @@ case $_host_os in
 
                        LDFLAGS="-L${macport_prefix}/lib $LDFLAGS"
                        CXXFLAGS="-I${macport_prefix}/include $CXXFLAGS"
+
+                       if test -z "$_staticlibpath"; then
+                               _staticlibpath=${macport_prefix}
+                               echo "Set staticlib-prefix to ${_staticlibpath}"
+                       fi
+               fi
+
+               # Fink
+               # There is no way to get the prefix, so implementing a hack here
+               fink_version=`fink -V 2>/dev/null`
+               if test "$?" -eq 0; then
+                       fink_version="`echo "${fink_version}" | sed -ne 
's/Package manager version: \([0-9.]*\)/\1/gp'`"
+                       echo_n "You seem to be running Fink version 
${fink_version}..."
+
+                       fink_prefix=`which fink`
+                       # strip off /bin/fink from /sw/bin/port
+                       fink_prefix=`dirname ${fink_prefix}`
+                       fink_prefix=`dirname ${fink_prefix}`
+
+                       echo "adding ${fink_prefix} to paths"
+
+                       LDFLAGS="-L${fink_prefix}/lib $LDFLAGS"
+                       CXXFLAGS="-I${fink_prefix}/include $CXXFLAGS"
+
+                       if test -z "$_staticlibpath"; then
+                               _staticlibpath=${fink_prefix}
+                               echo "Set staticlib-prefix to ${_staticlibpath}"
+                       fi
+               fi
+
+               # Homebrew
+               brew_version=`brew -v 2>/dev/null`
+               if test "$?" -eq 0; then
+                       brew_version="`echo "${brew_version}" | sed -ne 
's/Homebrew \([0-9.]*\)/\1/gp'`"
+                       echo_n "You seem to be running Homebrew version 
${brew_version}..."
+
+                       brew_prefix=`brew --prefix`
+
+                       echo "adding ${brew_prefix} to paths"
+
+                       LDFLAGS="-L${brew_prefix}/lib $LDFLAGS"
+                       CXXFLAGS="-I${brew_prefix}/include $CXXFLAGS"
+
+                       if test -z "$_staticlibpath"; then
+                               _staticlibpath=${brew_prefix}
+                               echo "Set staticlib-prefix to ${_staticlibpath}"
+                       fi
+               fi
+
+               # If _staticlibpath is not set yet try first /sw (fink) then 
/usr/local
+               # (the macports case is handled above).
+               if test -z "$_staticlibpath"; then
+                       if test -d "/sw"; then
+                               _staticlibpath=/sw
+                               echo "Set staticlib-prefix to ${_staticlibpath}"
+                       elif test -d "/usr/local"; then
+                               _staticlibpath=/usr/local
+                               echo "Set staticlib-prefix to ${_staticlibpath}"
+                       else
+                               echo "Could not determine prefix for static 
libraries"
+                       fi
+               fi
+
+               # If _xcodetoolspath is not set yet use xcode-select to get the 
path
+               if test -z "$_xcodetoolspath"; then
+                       _xcodetoolspath=`xcode-select -print-path`/Tools
+                       if test -d "$_xcodetoolspath"; then
+                               echo "Set xcodetools-path to ${_xcodetoolspath}"
+                       else
+                               _xcodetoolspath=
+                               echo "Could not determine path for Xcode Tools"
+                       fi
                fi
                ;;
        freebsd*)
@@ -1542,6 +1661,11 @@ fi
 if test "$_wxwidgets" = yes ; then
        _wxincludes="`$_wxconfig --prefix="$_wxpath" --cflags`"
        _wxlibs="`$_wxconfig --prefix="$_wxpath" --libs`"
+       _wxstaticlibs="`$_wxconfig --prefix="$_wxpath" --static --libs 2> 
/dev/null`"
+       _wxstaticlibs=`echo $_wxstaticlibs | sed 's|-lpng||' | sed 's|-lz||'`
+       # _wxstaticlibs may contain non-static libraries that we also have in 
_wxstaticlibs.
+       # remove those to avoid dependency on non-static libraries
+
        # Use the compiler specified by wx-config. This is needed on some 
systems to get a working executable.
        CXX="`$_wxconfig --cxx`"
        LD=$CXX
@@ -1575,6 +1699,7 @@ EOF
        if test "$has_wx_gui_dev" = no ; then
                _wxincludes=""
                _wxlibs=""
+               _wxstaticlibs=""
                _wxwidgets=no
                echo "not found"
        else
@@ -1649,6 +1774,7 @@ WINDRESFLAGS := $WINDRESFLAGS
 WIN32PATH=$_win32path
 AMIGAOS4PATH=$_amigaos4path
 STATICLIBPATH=$_staticlibpath
+XCODETOOLSPATH=$_xcodetoolspath
 
 EXEEXT := $HOSTEXEEXT
 
@@ -1667,6 +1793,7 @@ LDFLAGS += $LDFLAGS
 
 WXINCLUDES := $_wxincludes
 WXLIBS := $_wxlibs
+WXSTATICLIBS := $_wxstaticlibs
 
 FREETYPEINCLUDES := $_freetypeincludes
 FREETYPELIBS := $_freetypelibs
diff --git a/decompiler/test/codegen.h b/decompiler/test/codegen.h
index c28aff8..4e03f39 100644
--- a/decompiler/test/codegen.h
+++ b/decompiler/test/codegen.h
@@ -51,7 +51,7 @@ public:
        std::basic_ios<cT, traits>(&m_sbuf),
        std::basic_ostream<cT, traits>(&m_sbuf)
        {
-               init(&m_sbuf);
+               this->init(&m_sbuf);
        }
 
 private:
diff --git a/dists/macosx/DS_Store b/dists/macosx/DS_Store
new file mode 100644
index 0000000..76cd99a
Binary files /dev/null and b/dists/macosx/DS_Store differ
diff --git a/dists/macosx/Info.plist b/dists/macosx/Info.plist
index 73f4596..ded451f 100644
--- a/dists/macosx/Info.plist
+++ b/dists/macosx/Info.plist
@@ -9,7 +9,7 @@
        <key>CFBundleExecutable</key>
        <string>scummvm-tools</string>
        <key>CFBundleGetInfoString</key>
-       <string>1.8.0, Copyright 2001-2016 The ScummVM team</string>
+       <string>1.9.0, Copyright 2001-2016 The ScummVM team</string>
        <key>CFBundleIconFile</key>
        <string>scummvmtools.icns</string>
        <key>CFBundleIdentifier</key>
@@ -21,9 +21,9 @@
        <key>CFBundlePackageType</key>
        <string>APPL</string>
        <key>CFBundleShortVersionString</key>
-       <string>1.8.0</string>
+       <string>1.9.0</string>
        <key>CFBundleVersion</key>
-       <string>1.8.0</string>
+       <string>1.9.0</string>
        <key>NSAppleScriptEnabled</key>
        <false/>
        <key>NSHumanReadableCopyright</key>
diff --git a/dists/scummvmtools.rc b/dists/scummvmtools.rc
index e9422d6..87b7fe5 100644
--- a/dists/scummvmtools.rc
+++ b/dists/scummvmtools.rc
@@ -10,8 +10,8 @@
 IDI_ICON               ICON    DISCARDABLE     "gui/media/scummvmtools.ico"
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION     1,8,0,0
- PRODUCTVERSION  1,8,0,0
+ FILEVERSION     1,9,0,0
+ PRODUCTVERSION  1,9,0,0
  FILEFLAGSMASK   VS_FFI_FILEFLAGSMASK
 #ifdef _DEBUG
  FILEFLAGS       VS_FF_DEBUG
@@ -28,13 +28,13 @@ BEGIN
         BEGIN
             VALUE "Comments", "Look! A three headed monkey (TM)! .. Nice use 
of the TM!\0"
             VALUE "FileDescription", "http://www.scummvm.org/\0";
-            VALUE "FileVersion", "1.8.0\0"
+            VALUE "FileVersion", "1.9.0\0"
             VALUE "InternalName", "scummvm\0"
             VALUE "LegalCopyright", "Copyright � 2001-2016 The ScummVM Team\0"
             VALUE "LegalTrademarks", "'SCUMM', and all SCUMM games are a TM of 
LucasArts. Simon The Sorcerer is a TM of AdventureSoft. Beneath a Steel Sky and 
Broken Sword are a TM of Revolution. Flight of the Amazon Queen is a TM of John 
Passfield and Steve Stamatiadis. \0"
             VALUE "OriginalFilename", "scummvm-tools.exe\0"
             VALUE "ProductName", "ScummVM Tools\0"
-            VALUE "ProductVersion", "1.8.0\0"
+            VALUE "ProductVersion", "1.9.0\0"
         END
     END
 
diff --git a/dists/win32/scummvm-tools.nsi b/dists/win32/scummvm-tools.nsi
index 5691c69..c41d50a 100644
--- a/dists/win32/scummvm-tools.nsi
+++ b/dists/win32/scummvm-tools.nsi
@@ -61,7 +61,7 @@ Name "ScummVM Tools"
 # General Symbol Definitions
 
#########################################################################################
 !define REGKEY      "Software\ScummVM\$(^Name)"
-!define VERSION     "1.8.0"
+!define VERSION     "1.9.0"
 !define COMPANY     "ScummVM Team"
 !define URL         "http://scummvm.org/";
 !define DESCRIPTION "ScummVM Tools Installer. Look! A three headed monkey 
(TM)!"
@@ -81,7 +81,7 @@ XPStyle  on
 #TargetMinimalOS 5.0    ; Minimal version of windows for installer: Windows 
2000 or more recent
                         ; (will build unicode installer with NSIS 2.50+)
 
-VIProductVersion 1.8.0.0
+VIProductVersion 1.9.0.0
 VIAddVersionKey  ProductName      $(^Name)
 VIAddVersionKey  ProductVersion  "${VERSION}"
 VIAddVersionKey  CompanyName     "${COMPANY}"
diff --git a/engines/pegasus/pegasus_save_types.cpp 
b/engines/pegasus/pegasus_save_types.cpp
index 47af63b..b8258c1 100755
--- a/engines/pegasus/pegasus_save_types.cpp
+++ b/engines/pegasus/pegasus_save_types.cpp
@@ -76,7 +76,7 @@ int main(int argc, char **argv) {
        FSCatalogInfo catInfo;
        FSRef ref;
 
-       if (!FSPathMakeRef((const UInt8 *)argv[1], &ref, false)) {
+       if (!FSPathMakeRef((const UInt8 *)argv[1], &ref, 0)) {
                FSGetCatalogInfo(&ref, kFSCatInfoFinderInfo, &catInfo, 0, 0, 0);
                FileInfo *info = (FileInfo *)catInfo.finderInfo;
                info->fileCreator = creator;
diff --git a/engines/scumm/descumm.cpp b/engines/scumm/descumm.cpp
index 749c55b..a7fafeb 100644
--- a/engines/scumm/descumm.cpp
+++ b/engines/scumm/descumm.cpp
@@ -1561,11 +1561,70 @@ void do_if_active_object(char *buf, byte opcode) {
        char tmp[256];
 
        int obj = get_byte();
+       if (opcode & 0x80)
+               obj |= 0x100;
+
        sprintf(tmp, "activeObject2 == %d", obj);
 
        emit_if(buf, tmp);
 }
 
+void do_walk_actor_to_object(char *buf, byte opcode) {
+       
+       buf += sprintf(buf, "walkActorToObject(");
+       buf = add_a_tok(buf, (opcode & 0x80) ? A1V : A1B);
+
+       int obj = get_byte();
+       if (opcode & 0x40)
+               obj |= 0x100;
+
+       sprintf(buf, ",%d);", obj);
+}
+
+void do_put_actor_at_object(char *buf, byte opcode) {
+
+       buf += sprintf(buf, "putActorAtObject(");
+       buf = add_a_tok(buf, (opcode & 0x80) ? A1V : A1B);
+
+       int obj = get_byte();
+       if (opcode & 0x40)
+               obj |= 0x100;
+
+       sprintf(buf, ",%d);", obj);
+}
+
+void do_sentence(char *buf, byte opcode) {
+       int verb = get_byte();
+       int obj1 = get_byte();
+       int obj2 = get_byte();
+
+       // Not _cmdObject / _cmdObject2
+       if (obj1 != 0xFF && obj1 != 0xFE) {
+               if(opcode & 0x80)
+                       obj1 |= 0x100;
+       }
+       // Not _cmdObject / _cmdObject2
+       if (obj2 != 0xFF && obj2 != 0xFE) {
+               if (opcode & 0x40)
+                       obj2 |= 0x100;
+       }
+
+       sprintf(buf, "doSentence(%d,%d,%d);", verb, obj1, obj2);
+}
+
+
+void do_set_object_name(char *buf, byte opcode) {
+       int obj = get_byte();
+
+       if (opcode & 0x40)
+               obj |= 0x100;
+
+       buf += sprintf(buf, "setObjectName(%d,", obj);
+       buf = add_a_tok(buf, A1B | A1ASCII);
+
+       sprintf(buf, ");", obj);
+}
+
 void do_if_state_code(char *buf, byte opcode) {
        char var[256];
        char tmp[256], tmp2[256];
@@ -2616,7 +2675,7 @@ void next_line_V0(char *buf) {
        case 0x43:
        case 0x83:
        case 0xC3:
-               do_tok(buf, "doSentence", A1B | A2B | A3B);
+               do_sentence(buf, opcode);
                break;
        case 0x07:
        case 0x87:
@@ -2791,7 +2850,7 @@ void next_line_V0(char *buf) {
        case 0xCE:
        case 0x0E:
        case 0x8E:
-               do_tok(buf, "putActorAtObject", ((opcode & 0x80) ? A1V : A1B) | 
A2B);
+               do_put_actor_at_object(buf, opcode);
                break;
        case 0x0C:
        case 0x8C:
@@ -2824,7 +2883,7 @@ void next_line_V0(char *buf) {
 
        case 0x54:
        case 0xD4:
-               do_tok(buf, "setObjectName", A1B | A2ASCII);
+               do_set_object_name(buf, opcode);
                break;
 
        case 0x29:
@@ -2891,7 +2950,7 @@ void next_line_V0(char *buf) {
        case 0xB6:
        case 0x76:
        case 0xF6:
-               do_tok(buf, "walkActorToObject", ((opcode & 0x80) ? A1V : A1B) 
| A2B);
+               do_walk_actor_to_object(buf, opcode);
                break;
 
        default:
diff --git a/engines/scumm/descumm6.cpp b/engines/scumm/descumm6.cpp
index 45fc357..cfc8fad 100644
--- a/engines/scumm/descumm6.cpp
+++ b/engines/scumm/descumm6.cpp
@@ -375,8 +375,8 @@ const char *var_names72[] = {
        /* 36 */
        "VAR_CUTSCENE_START_SCRIPT",
        "VAR_CUTSCENE_END_SCRIPT",
-       NULL,
-       NULL,
+       "VAR_SAVELOAD_ENTER_SCRIPT",
+       "VAR_SAVELOAD_EXIT_SCRIPT",
        /* 40 */
        "VAR_SAVELOAD_SCRIPT",
        "VAR_OPTIONS_SCRIPT",
@@ -429,9 +429,9 @@ const char *var_names72[] = {
        "VAR_PLATFORM_VERSION",
        /* 80 */
        "VAR_CURRENT_CHARSET",
-       NULL,
-       NULL,
-       NULL,
+       "VAR_HIDE_ALL_TEXT",
+       "VAR_NO_SPEECH",
+       "VAR_MOUSE_OVERRIDE",
        /* 84 */
        "VAR_SOUNDCODE_TMR",
        "VAR_DEBUG_ENABLED",
@@ -441,20 +441,20 @@ const char *var_names72[] = {
        "VAR_NUM_SOUND_CHANNELS",
        "VAR_COLOR_DEPTH",
        NULL,
-       NULL,
+       "VAR_PRINTING_ENABED",
        /* 92 */
-       NULL,
-       NULL,
-       NULL,
+       "VAR_FADE_COLOR",
+       "VAR_BLACK_COLOR",
+       "VAR_WHITE_COLOR",
        "VAR_REDRAW_ALL_ACTORS",
        /* 96 */
        "VAR_TIMER_1",
        "VAR_TIMER_2",
-       NULL,
-       NULL,
+       "VAR_NETWORK_START_SCRIPT",
+       "VAR_NETWORK_TIMEOUT",
        /* 100 */
-       NULL,
-       NULL,
+       "VAR_NETWORK_ENABLED",
+       "VAR_NETWORK_ARRAY_SCRIPT",
        NULL,
        "VAR_SCRIPT_CYCLE",
        /* 104 */
@@ -476,7 +476,7 @@ const char *var_names72[] = {
        "VAR_U32_ARRAY_UNK",
        "VAR_WIZ_TCOLOR",
        "VAR_SMACKER_ENABLED",
-       NULL,
+       "VAR_ERROR_CODE",
        /* 120 */
        "VAR_RESERVED_SOUND_CHANNELS",
        NULL,
@@ -485,13 +485,13 @@ const char *var_names72[] = {
        /* 124 */
        "VAR_JOYSTICK_DETECTED",
        "VAR_SKIP_RESET_TALK_ACTOR",
-       NULL,
+       "VAR_UPDATE_SCREEN_TYPE",
        "VAR_MAIN_SCRIPT",
        /* 128 */
        "VAR_JOYSTICK_DISABLED",
-       NULL,
+       "VAR_BASE_NAME",
        "VAR_NUM_PALETTES",
-       "VAR_NUM_UNK",
+       "VAR_NUM_WINDOWS",
        /* 132 */
        NULL,
        NULL,
@@ -2091,21 +2091,21 @@ void next_line_HE_V100(char *output) {
                ext(output, "p|delaySeconds");
                break;
        case 0x77:
-               ext(output, "x" "startSound\0"
-                               "\x6p|setSoundFlag16,"
+               ext(output, "x" "soundOps\0"
+                               "\x6p|setOffset,"
                                "\x2Fhp|loadSoundFromFile,"
-                               "\x37|setQuickStartFlag,"
+                               "\x37|setQuickStart,"
                                "\x53ppp|setSoundVar,"
                                "\x5C|start,"
-                               "\x80|setForceQueueFlag,"
+                               "\x80|setAppend,"
                                "\x81p|setChannel,"
-                               "\x82p|setSoundFlag64,"
-                               "\x83|setSoundFlag1,"
+                               "\x82p|setFrequency,"
+                               "\x83|setLoop,"
                                "\x84p|setMusicId,"
-                               "\x85p|setSoundFlag128,"
+                               "\x85p|setPan,"
                                "\x86p|setSoundId,"
-                               "\x87|setSoundFlag4,"
-                               "\x88p|setSoundFlag32");
+                               "\x87|setSoftSound,"
+                               "\x88p|setVolume");
                break;
        case 0x79:
                ext(output, "x" "setSpriteInfo\0"
@@ -3276,17 +3276,17 @@ void next_line_HE_V72(char *output) {
                jump(output);
                break;
        case 0x74:
-               ext(output, "x" "startSound\0"
-                               "\x9|setSoundFlag4,"
+               ext(output, "x" "soundOps\0"
+                               "\x9|setSoftSound,"
                                "\x17ppp|setSoundVar,"
-                               "\x19pp|startWithFlag8,"
-                               "\x38|setQuickStartFlag,"
-                               "\xA4|setForceQueueFlag,"
+                               "\x19pp|setVolume,"
+                               "\x38|setQuickStart,"
+                               "\xA4|setAppend,"
                                "\xDE|dummy,"
                                "\xE0p|setFrequency,"
                                "\xE6p|setChannel,"
                                "\xE7p|setOffset,"
-                               "\xE8p|setId,"
+                               "\xE8p|setSoundId,"
                                "\xF5|setLoop,"
                                "\xFF|start");
                break;
diff --git a/engines/sword1/compress_sword1.cpp 
b/engines/sword1/compress_sword1.cpp
index ef8bd73..e454f8c 100644
--- a/engines/sword1/compress_sword1.cpp
+++ b/engines/sword1/compress_sword1.cpp
@@ -311,14 +311,15 @@ MusicFile musicNames[TOTAL_TUNES] = {
        { "RM3D", false }
 };
 
-int16 *CompressSword1::uncompressSpeech(Common::File &clu, uint32 idx, uint32 
cSize, uint32 *returnSize) {
+int16 *CompressSword1::uncompressSpeech(Common::File &clu, uint32 idx, uint32 
cSize, uint32 *returnSize, bool* ok) {
        if (_speechEndianness == UnknownEndian) {
                uint32 leSize, beSize;
+               bool leOk = false, beOk = false;
                _speechEndianness = LittleEndian;
-               int16* leData = uncompressSpeech(clu, idx, cSize, &leSize);
+               int16* leData = uncompressSpeech(clu, idx, cSize, &leSize, 
&leOk);
                _speechEndianness = BigEndian;
-               int16* beData = uncompressSpeech(clu, idx, cSize, &beSize);
-               _speechEndianness = guessEndianness(leData, leSize / 2, beData, 
beSize / 2);
+               int16* beData = uncompressSpeech(clu, idx, cSize, &beSize, 
&beOk);
+               _speechEndianness = guessEndianness(leData, leSize / 2, leOk, 
beData, beSize / 2, beOk);
                switch (_speechEndianness) {
                case LittleEndian:
                        free(beData);
@@ -339,8 +340,8 @@ int16 *CompressSword1::uncompressSpeech(Common::File &clu, 
uint32 idx, uint32 cS
                }
        }
        
-       uint32 resSize, srcPos;
-       int16 *srcData, *dstData, *dstPos;
+       uint32 resSize, srcPos, dstPos;
+       int16 *srcData, *dstData;
        uint32 headerPos = 0;
        int16 length, cnt;
        uint8 *fBuf = (uint8 *)malloc(cSize);
@@ -350,13 +351,15 @@ int16 *CompressSword1::uncompressSpeech(Common::File 
&clu, uint32 idx, uint32 cS
        while ((READ_BE_UINT32(fBuf + headerPos) != 'data') && (headerPos < 
100))
                headerPos++;
        if (headerPos < 100) {
+               if (ok != 0)
+                       *ok = true;
                resSize = READ_LE_UINT32(fBuf + headerPos + 4) >> 1;
                srcData = (int16 *)(fBuf + headerPos + 8);
                dstData = (int16 *)malloc(resSize * 2);
                srcPos = 0;
-               dstPos = dstData;
+               dstPos = 0;
                cSize = (cSize - (headerPos + 8)) / 2;
-               while (srcPos < cSize) {
+               while (srcPos < cSize && dstPos < resSize) {
                        if (_speechEndianness == LittleEndian)
                                length = (int16)READ_LE_UINT16(srcData + 
srcPos);
                        else
@@ -364,19 +367,32 @@ int16 *CompressSword1::uncompressSpeech(Common::File 
&clu, uint32 idx, uint32 cS
                        srcPos++;
                        if (length < 0) {
                                length = -length;
-                               for (cnt = 0; cnt < (uint16)length; cnt++)
-                                       *dstPos++ = srcData[srcPos];
+                               for (cnt = 0; cnt < (uint16)length && dstPos < 
resSize; cnt++)
+                                       dstData[dstPos++] = srcData[srcPos];
                                srcPos++;
+                               if (ok != 0 && cnt < (uint16)length)
+                                       *ok = false;
                        } else {
-                               memcpy(dstPos, srcData + srcPos, length * 2);
+                               if (dstPos + length > resSize) {
+                                       length = resSize - dstPos;
+                                       if (ok != 0)
+                                               *ok = false;
+                               }
+                               memcpy(dstData + dstPos, srcData + srcPos, 
length * 2);
                                dstPos += length;
                                srcPos += length;
                        }
                }
+               // The ok flag is used when detecting endianness. If the 
correct endianness was used then decoding cSize samples
+               // should result in the expected resSize. But when using the 
wrong endianness this is likely not to be the case.
+               if (ok != 0 && (srcPos < cSize || dstPos < resSize))
+                       *ok = false;
                free(fBuf);
                *returnSize = resSize * 2;
                return dstData;
        } else {
+               if (ok != 0)
+                       *ok = false;
                free(fBuf);
                error("Sound::uncompressSpeech(): DATA tag not found in wave 
header");
                *returnSize = 0;
@@ -384,7 +400,7 @@ int16 *CompressSword1::uncompressSpeech(Common::File &clu, 
uint32 idx, uint32 cS
        }
 }
 
-CompressSword1::Endianness CompressSword1::guessEndianness(int16 *leData, 
uint32 leSize, int16 *beData, uint32 beSize) {
+CompressSword1::Endianness CompressSword1::guessEndianness(int16 *leData, 
uint32 leSize, bool leOk, int16 *beData, uint32 beSize, bool beOk) {
        if (leData == NULL && beData == NULL)
                return UnknownEndian;
        else if (leData == NULL)
@@ -392,6 +408,14 @@ CompressSword1::Endianness 
CompressSword1::guessEndianness(int16 *leData, uint32
        else if (beData == NULL)
                return LittleEndian;
        
+       // Also decomding with the wrong endianness leads to wrong sizes when 
decrompressing the data. So if one of the two is wrong assume
+       // this indicates this was the wrong endianess. In the case when the 
two are wrong this indicate corrupetd data but try to recover
+       // from it anyway.
+       if (leOk && !beOk)
+               return LittleEndian;
+       else if (!leOk && beOk)
+               return BigEndian;
+       
        // Compute average of difference between two consecutive samples for 
both the given
        // data array and the byte swapped array.
        uint32 length = leSize > beSize ? beSize : leSize;
diff --git a/engines/sword1/compress_sword1.h b/engines/sword1/compress_sword1.h
index 7321d50..28f091a 100644
--- a/engines/sword1/compress_sword1.h
+++ b/engines/sword1/compress_sword1.h
@@ -42,7 +42,7 @@ protected:
 
        std::string _audioOuputFilename;
 
-       int16 *uncompressSpeech(Common::File &clu, uint32 idx, uint32 cSize, 
uint32 *returnSize);
+       int16 *uncompressSpeech(Common::File &clu, uint32 idx, uint32 cSize, 
uint32 *returnSize, bool* ok = 0);
        uint8 *convertData(uint8 *rawData, uint32 rawSize, uint32 *resSize);
        void convertClu(Common::File &clu, Common::File &cl3);
        void compressSpeech(const Common::Filename *inpath, const 
Common::Filename *outpath);
@@ -50,7 +50,7 @@ protected:
        void checkFilesExist(bool checkSpeech, bool checkMusic, const 
Common::Filename *inpath);
 
        enum Endianness { BigEndian , LittleEndian , UnknownEndian } ;
-       Endianness guessEndianness(int16 *leData, uint32 leSize, int16 *beData, 
uint32 beSize);
+       Endianness guessEndianness(int16 *leData, uint32 leSize, bool leOk, 
int16 *beData, uint32 beSize, bool beOk);
        double endiannessHeuristicValue(int16* data, uint32 dataSize, uint32 
maxSamples, Endianness dataEndianness);
 
 private:
diff --git a/internal_version.h b/internal_version.h
index ab7f855..4bbab3d 100644
--- a/internal_version.h
+++ b/internal_version.h
@@ -2,4 +2,4 @@
 #define SCUMMVM_TOOLS_SVN_REVISION
 #endif
 
-#define SCUMMVM_TOOLS_VERSION "1.8.0" SCUMMVM_TOOLS_SVN_REVISION
+#define SCUMMVM_TOOLS_VERSION "1.9.0" SCUMMVM_TOOLS_SVN_REVISION

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-games/scummvm-tools.git

_______________________________________________
Pkg-games-commits mailing list
Pkg-games-commits@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

Reply via email to