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

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

commit 7463ccedc67e04c0391acc0cbca2515a708cb6ea
Author: Stephen Kitt <sk...@debian.org>
Date:   Sat Dec 9 13:30:28 2017 +0100

    New upstream version 2.0.0
---
 COPYRIGHT                          |   2 +-
 NEWS                               |   7 +
 README                             | 169 ++++++++------
 convert_dxa.bat                    |   2 +-
 convert_dxa.sh                     |   2 +-
 dists/macosx/Info.plist            |   8 +-
 dists/macosx/Info.plist.in         |   4 +-
 dists/scummvmtools.rc              |  10 +-
 dists/scummvmtools.rc.in           |   2 +-
 dists/win32/ScummVM Tools.iss      |   2 +-
 dists/win32/scummvm-tools.nsi      |   6 +-
 dists/win32/scummvm-tools.nsi.in   |   2 +-
 engines/cine/extract_cine.cpp      |  11 +-
 engines/prince/extract_prince.cpp  | 463 +++++++++++++++++++++----------------
 engines/prince/extract_prince.h    |   1 +
 engines/prince/pack_prince.cpp     |  75 +++---
 engines/touche/compress_touche.cpp |   5 +-
 gui/main.cpp                       |   2 +-
 internal_version.h                 |   2 +-
 19 files changed, 448 insertions(+), 327 deletions(-)

diff --git a/COPYRIGHT b/COPYRIGHT
index ebeb385..d1a86ee 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,5 +1,5 @@
 ScummVM Tools
-Copyright (C) 2001-2016 by the following:
+Copyright (C) 2001-2017 by the following:
 
 If you have contributed to this project then you deserve to be on this
 list.  Contact us and we'll add you.
diff --git a/NEWS b/NEWS
index fa56aa6..565ca60 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,13 @@
 For a more comprehensive changelog of the latest experimental code, see:
         https://github.com/scummvm/scummvm-tools/commits/
 
+2.0.0 (2017-12-17)
+ - Fix handling of output path for the compress_touche tool.
+ - Fix handling of input path for the extract_cine tool. It was only working
+   when run from the directory that contains the game data.
+ - Fix memory corruption that could cause random errors during extraction when
+   using the extract_cine tool.
+
 1.9.0 (2016-10-27)
  - Fix random crashes in the tool to convert Broken Sword 1 speech files.
 
diff --git a/README b/README
index 70822e3..aee6634 100644
--- a/README
+++ b/README
@@ -33,7 +33,7 @@ You can get a list of the supported tools using --list:
 scummvm-tools-cli --list
 
 
-[audio params] is used for compression tools to defined which audio format to
+[audio params] is used for compression tools to define which audio format to
 compress to. Use --mp3, --flac or --vorbis first to select a special format,
 default is MP3. Then you can give additional information such as the bit rate
 you want to use. Use --help to get the list of all the options you can use:
@@ -53,27 +53,40 @@ Extraction Tools:
                 ./scummvm-tools-cli --tool extract_agos <infile 1> ... <infile 
n>
 
         extract_cge
-                Unpack Soltys and Sfinx game data files.
+                Unpacks Soltys and Sfinx game data files.
+                
                 Example of usage:
                 ./scummvm-tools-cli --tool extract_cge [-o outputdir] 
<inputfile>
 
         pack_cge
-               Pack Soltys and Sfinx game data files.
+               Packs Soltys and Sfinx game data files.
+               
                Example of usage:
                 ./scummvm-tools-cli --tool pack_cge [-o outputdir] <inputdir>
 
         extract_cine
                 Unpacks Delphine's Cinematique engine's archive files.
+                
                 Should work at least with Future Wars and Operation Stealth.
-                Supports using Operation Stealth's 'vol.cnf' file as input
-                in which case it will try to unpack all the archive files
-                listed in 'vol.cnf'. Accepts only one input file.
+                It seems to work also with Cruise for a Corpse. It accepts only
+                one input file. This may be either one of the archive file, in
+                which case only this file is unpacked, or the 'vol.cnf' file,
+                in which case all archive files listed in the 'vol.cnf' file 
are
+                unpacked.
 
                 Example of usage:
-                ./scummvm-tools-cli --tool extract_cine <infile>
+                ./scummvm-tools-cli --tool extract_cine [-o outputdir] <infile>
+
+        extract_cruise_pc
+                Unpack the E1, E4 and E5 files found in some versions of
+                Cruise for a Corpse. To extract the D1 to D5 files, use the
+                extract_cine tool instead.
+
+                Example of usage:
+                ./scummvm-tools-cli --tool extract_cruise_pc [-o outputdir] 
<infile>
 
         extract_gob_stk
-                Extracts data files from STK/ITK files of Coktel Vision
+                Extracts data files from STK/ITK files from Coktel Vision
                 games.
 
                 Example of usage:
@@ -81,26 +94,28 @@ Extraction Tools:
 
         extract_kyra
                 Unpacks .PAK files from Kyrandia games.
+                
                 It is also able to extract the installer package files from
-                Hand of Fate DOS floppy version. You should be sure you got
+                Hand of Fate DOS floppy version. You should make sure you got
                 all WESTWOOD.### files for that, since they are one big package
                 file splitted into several, so with -x you will extract *all*
                 files from the installer files.
 
-                Takes some additional arguments, run extract_kyra --help for
-                details.
-
                 Example of usage:
                 ./scummvm-tools-cli --tool extract_kyra -x [-o outputdir] 
<infile>
 
+                NOTE: Takes some additional arguments, run extract_kyra --help
+                for details.
+
         extract_loom_tg16
                 Extracts data files from the PC-Engine version of Loom.
-                Use the dumpcd utility at 
http://www.zeograd.com/misc_download.php
-                to dump the code tracks on the CD.
-
+                
                 Example of usage:
                 ./scummvm-tools-cli --tool extract_loom_tg16 [-o outputdir] 
<infile>
 
+                NOTE: Use the dumpcd utility at 
http://www.zeograd.com/misc_download.php
+                to dump the code tracks on the CD.
+
         extract_mm_apple
                 Extracts data files from the Apple II version of Maniac
                 Mansion.
@@ -117,13 +132,14 @@ Extraction Tools:
 
         extract_mm_nes
                 Extracts data files from the NES version of Maniac Mansion.
-                Japanese version is _not_ supported.
-
+                
                 Example of usage:
                 ./scummvm-tools-cli --tool extract_mm_nes [-o outputdir] 
<infile.PRG>
 
+                NOTE: Japanese version is _not_ supported.
+
         extract_parallaction
-                Extracts the contents of archives used by Nippon Safes
+                Extracts the contents of archives used in Nippon Safes.
 
                 Example of usage:
                 ./scummvm-tools-cli --tool extract_parallaction [--small] [-o 
outputdir] <infile>
@@ -131,13 +147,13 @@ Extraction Tools:
         extract_scumm_mac
                 Extracts Macintosh "single file" SCUMM games into their
                 component parts, for use with ScummVM.
-                This is required for ScummVM up to version 0.6.x; all
-                later versions directly support reading this file
-                format.
 
                 Example of usage:
                 ./scummvm-tools-cli --tool extract_scumm_mac [-o outputdir] 
<infile>
 
+                NOTE: This is required for ScummVM up to version 0.6.x; all
+                later versions directly support reading this file format.
+
         extract_zak_c64
                 Extracts data files from the Commodore 64 version of Zak
                 McKracken.
@@ -153,22 +169,30 @@ Compression Tools:
                 Example of usage:
                 ./scummvm-tools-cli --tool compress_agos --vorbis -q 7 
SIMON2.WAV
 
-                Specify --mac for the mac version (obviously).
+                NOTE: Specify --mac for the mac version (obviously).
                 Default output is input with changed extension.
 
         compress_gob
                 Compresses Gobliiins! data files.
 
+                Example of usage:
+                ./scummvm-tools-cli --tool compress_gob [-o outputpath] -f 
<conf_file>
+                
+                <conf file> is a .gob file generated by extract_gob_stk.
+                -f forces compression for all files.
+                The stick archive (STK/ITK/LTK) will be created in the 
directory
+                specified by the '-o' parameter.
+
         compress_kyra
                 Used to compress The Legend of Kyrandia, The Legend of
-                Kyrandia: Hand of Fate and The Legend of Kyrandia: Malcolm's
-                Revenge, Lands of Lore: The Throne of Chaos audio files with
-                MP3, Vorbis or FLAC.
+                Kyrandia: Hand of Fate, The Legend of Kyrandia: Malcolm's
+                Revenge and Lands of Lore: The Throne of Chaos audio files
+                with MP3, Vorbis or FLAC.
 
-                Examples of usage:
+                Example of usage:
                 ./scummvm-tools-cli --tool compress_kyra <flags here> 
input/GEMCUT.VRM
 
-                Note: You have to keep the file extension the tool will append
+                You have to keep the file extension the tool will append
                 else it will NOT work. Use it as shown above, copy all speech
                 files to a directory and let the tool put the output file in
                 another directory.
@@ -189,22 +213,23 @@ Compression Tools:
                 Example of usage:
                 ./scummvm-tools-cli --tool compress_saga [mode params] [-o 
outputfile] <infile>
 
-                Where <file> is the sound file you with to compress, without 
the
-                extension.
+                Where <infile> is the sound file you wish to compress, without
+                the extension.
                 Default output file is input file with the extensions ".cmp"
 
                 For Inherit the Earth, the digital music (music.rsc), speech
-                (voices.rsc or "inherit the earth voices") and sound effects
-                (sounds.rsc) files can be compressed. For I have no mouth, the
+                (voices.rsc or "Inherit the Earth voices") and sound effects
+                (sounds.rsc) files can be compressed. For I have no Mouth, the
                 speech (voices*.res) files can be compressed.
 
                 The compressed files have the ".cmp" extension. Once 
compressed,
                 you only need the respective .cmp files.
 
-                There is no compression support yet for the following versions:
+                Note: There is no compression support yet for the following
+                versions:
                 - The Mac CD Guild version of Inherit the Earth (uses MacBinary
-                  *.bin files)
-                - The unsupported early DOS demo of Inherit the Earth
+                  *.bin files).
+                - The unsupported early DOS demo of Inherit the Earth.
 
         compress_sci
                 Used to compress Sierra resource.aud/.sfx and AUDIO001.002
@@ -212,7 +237,7 @@ Compression Tools:
                 compatible with the newer SCI32 games yet.
 
                 Example of usage:
-                ./scummvm-tools-cli --tool compress_sci [mode params] -o 
outputfile <infile>
+                ./scummvm-tools-cli --tool compress_sci [mode params] [-o 
outputfile] <infile>
 
                 The name of the output file is required. Use a temporary name,
                 and after the tool finishes compressing it, replace the 
original
@@ -229,20 +254,20 @@ Compression Tools:
                 Example of usage:
                 ./scummvm-tools-cli --tool compress_scumm_bun [mode params] 
[-o outputfile] <infile>
 
-                Default outputfile is inputfile with the extension ".bun"
+                Default outputfile is inputfile with the extension ".bun".
 
-                Please note that FLAC compression will produce larger files
-                than the original, for The Curse of Monkey Island!
+                Note: For "The Curse of Monkey Island", FLAC compression will
+                produce larger files than in the original game.
 
         compress_scumm_san
                 Compresses '.san' smush animation files. It uses lossless
                 zlib for compressing FOBJ gfx chunks inside a san file.
-                It also can create a separate Ogg file with the audio track.
+                It can also create a separate Ogg file with the audio track.
 
                 Example of usage:
                 ./scummvm-tools-cli --tool compress_scumm_san [mode params] 
[-o outputfile] <infile>
 
-                Default output is inputfile with the extension ".san"
+                Default output is inputfile with the extension ".san".
 
                 In order to use such compressed files, your ScummVM binary
                 must have been built with zlib support enabled (you can find
@@ -267,35 +292,41 @@ Compression Tools:
                 ./scummvm-tools-cli --mp3 MONSTER.SOU
 
                 Default output file is inputfile with changed extensions,
-                depends on the compression method used.
+                depending on the compression method used.
 
         compress_sword1
                 Used to compress Broken Sword 1's music and speech .clu files
-                to .cl3 (MP3), .clg (Vorbis) or .clf (FLAC). Only the PC and
-                the Mac version are currently supported. The PSX version is not
-                supported by this tool.
+                to .cl3 (MP3), .clg (Vorbis) or .clf (FLAC).
 
                 Example of usage:
                 ./scummvm-tools-cli --tool compress_sword1 --vorbis -q 7 
BS1/swordres.rif
+                
+                NOTE: Only the PC and Mac versions are currently supported.
+                The PSX version is not supported by this tool.
 
         compress_sword2
                 Used to compress Broken Sword 2's music and speech .clu
                 files to .cl3 (MP3), .clg (Vorbis) or .clf (FLAC).
 
-                Please note that FLAC compression will produce a larger file
-                than the original! This is because the original files already
-                use lossy compression.
-
                 Example of usage:
                 ./scummvm-tools-cli --tool compress_sword2 [params] <file>
 
+                NOTE: FLAC compression will produce larger files than the 
original!
+                This is because the original files already use lossy 
compression.
+
         compress_tinsel
                 Used to compress tinsel .smp files.
+                
+                The corresponding .idx file must be part of the command.
+                
+                Example of usage:
+                ./scummvm-tools-cli --tool compress_tinsel [mode_params] [-o 
outputfile] <infile.smp> <infile.idx>
+                ./scummvm-tools-cli --tool compress_tinsel --vorbis -q 9 
ENGLISH.SMP ENGLISH.IDX
 
         compress_touche
                 Used to compress and pack Touche speech files ('Vxxx' and
                 'OBJ') to MP3, Vorbis or FLAC to a single file named
-                TOUCHE.SO3 (MP3), TOUCHE.SOG (Vorbis), or TOUCHE.SOF (FLAC).
+                TOUCHE.SO3 (MP3), TOUCHE.SOG (Vorbis) or TOUCHE.SOF (FLAC).
 
                 Once compressed, only TOUCHE.DAT and TOUCHE.SOx files are
                 required to play the game under ScummVM.
@@ -303,8 +334,8 @@ Compression Tools:
                 Example of usage:
                 ./scummvm-tools-cli --tool compress_touche [mode params] [-o 
outputfile] <inputdir>
 
-                Default outpufile is TOUCHE.* (depends on compression method).
-                Files in the input folder should be in uppercase.
+                NOTE: Default outputfile is TOUCHE.* (depending on the 
compression method).
+                Files in the input folder should be uppercase.
 
         compress_tucker
                 Used to compress sound and speech files from 
AUDIO/FX/MUSIC/SPEECH
@@ -312,13 +343,13 @@ Compression Tools:
                 (Vorbis) or TUCKER.SOF (FLAC).
 
                 Once compressed, the four directories are not required to play
-                the game under ScummVM.
+                the game under ScummVM anymore.
 
                 Example of usage:
                 ./scummvm-tools-cli --tool compress_tucker [mode params] [-o 
outputfile] <inputdir>
 
-                Default outpufile is TUCKER.SOx (depends on compression 
method).
-                Files in the input folder should be in uppercase.
+                NOTE: Default outputfile is TUCKER.SOx (depending on the 
compression method).
+                Files in the input folder should be uppercase.
 
 Script Tools:
         decine
@@ -329,10 +360,10 @@ Script Tools:
                 decine [type] [version] [filename]
                 type: -prc or -rel (Use -prc for *.prc-files, -rel for 
*.rel-files)
                 version: -v1 or -v2 (Use -v1 for Future Wars, -v2 for 
Operation Stealth)
-                filename: The name of the script file to decode
+                filename: The name of the script file to decode.
 
         degob
-                Decompiles TOT scripts used in Coktel Vision games
+                Decompiles TOT scripts used in Coktel Vision games.
 
                 Example of usage:
                 degob <version> <file.tot> [<file.ext>] [<commun.ext>]
@@ -349,13 +380,13 @@ Script Tools:
                 case.
 
         dekyra
-                Basic script disassembler for Legend of Kyrandia games
+                Basic script disassembler for Legend of Kyrandia games.
 
         descumm
-                Decompiles SCUMM scripts
+                Decompiles SCUMM scripts.
 
         desword2
-                Disassembles Broken Sword II scripts
+                Disassembles Broken Sword II scripts.
 
 
 Encoder Tools:
@@ -364,10 +395,10 @@ Encoder Tools:
                 Creates DXA file out of extracted Smacker video.
 
                 To extract a video use RAD Game Tools and perform 2 passes
-                on it. For example, if your video is called 'intro.smk'.
+                on it. For example, if your video is called 'intro.smk':
 
                 1. Extract the video to PNG, 256 colors (choose PNG format
-                and tick the checkbox). It will create bunch of files named
+                and tick the checkbox). It will create a bunch of files named
                 'introXXX.png', where XXX is frame number. Make sure you have
                 extracted 256 colors PNGs, otherwise encode_dxa will complain.
 
@@ -377,13 +408,13 @@ Encoder Tools:
                 3. Put files 'intro.smk', 'intro.wav' and 'intro*.png' into a
                 single directory.
 
-                4. Run `encode_dxa intro.smk` in that directory
+                4. Run `encode_dxa intro.smk` in that directory.
 
                 5. You will get an intro.dxa file and intro.flac/mp3/ogg file
                 in result.
 
-                Additionally you may use batch processing mode of SMK files in
-                RAD Game Tools. Just select more than one file and push the
+                Additionally you may use the batch processing mode of SMK files
+                in RAD Game Tools. Just select more than one file and push the
                 'Convert' button. It will ask you either you want them
                 processed in batch mode and will do this for you. All buttons
                 and conversion options work the same.
@@ -394,16 +425,16 @@ Encoder Tools:
                 To ease your life we also provide batch files to autoconvert
                 all files. It should work with any game version.
 
-                1. Copy *.smk files from all CDs to some directory
+                1. Copy *.smk files from all CDs to some directory.
 
                 2. Edit paths in convert_dxa.bat file.
 
                 3. Run the batch. If you set everything correct, it will be
-                almost unattended conversion, just for several files there
-                are no audio, and RAD Game Tools converter will ask you to
-                press OK
+                an almost unattended conversion.
+                Just for several files which don't have audio, RAD Game Tools
+                converter will ask you to press OK.
 
         convert_dxa.sh
 
-                Same as above convert_dxa.bat, just for *nix-based systems.
+                Same as the above convert_dxa.bat, just for *nix-based systems.
                 It uses Wine to run RAD Game Tools.
diff --git a/convert_dxa.bat b/convert_dxa.bat
index c631e6d..cdbb277 100755
--- a/convert_dxa.bat
+++ b/convert_dxa.bat
@@ -4,7 +4,7 @@
 :: This script will search for all SMK files in all subtree directories,
 :: and encode them as DXA files next to the original files.
 ::
-:: (c) 2006-2016 ScummVM Team
+:: (c) 2006-2017 ScummVM Team
 :: (c) 2006 oduverne
 :: (c) 2008 NoiZe
 ::
diff --git a/convert_dxa.sh b/convert_dxa.sh
index dc117c0..d3f077d 100755
--- a/convert_dxa.sh
+++ b/convert_dxa.sh
@@ -5,7 +5,7 @@
 # This script will search for all SMK files in all subtree directories,
 # and encode them as DXA files next to the original files.
 #
-# (c) 2006-2016 ScummVM Team
+# (c) 2006-2017 ScummVM Team
 # (c) 2006 crowley
 #
 
diff --git a/dists/macosx/Info.plist b/dists/macosx/Info.plist
index ded451f..afb95c1 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.9.0, Copyright 2001-2016 The ScummVM team</string>
+       <string>2.0.0, Copyright 2001-2017 The ScummVM team</string>
        <key>CFBundleIconFile</key>
        <string>scummvmtools.icns</string>
        <key>CFBundleIdentifier</key>
@@ -21,12 +21,12 @@
        <key>CFBundlePackageType</key>
        <string>APPL</string>
        <key>CFBundleShortVersionString</key>
-       <string>1.9.0</string>
+       <string>2.0.0</string>
        <key>CFBundleVersion</key>
-       <string>1.9.0</string>
+       <string>2.0.0</string>
        <key>NSAppleScriptEnabled</key>
        <false/>
        <key>NSHumanReadableCopyright</key>
-       <string>Copyright 2001-2016 The ScummVM team</string>
+       <string>Copyright 2001-2017 The ScummVM team</string>
 </dict>
 </plist>
diff --git a/dists/macosx/Info.plist.in b/dists/macosx/Info.plist.in
index 68d9241..fc21190 100644
--- a/dists/macosx/Info.plist.in
+++ b/dists/macosx/Info.plist.in
@@ -9,7 +9,7 @@
        <key>CFBundleExecutable</key>
        <string>scummvm-tools</string>
        <key>CFBundleGetInfoString</key>
-       <string>@VERSION@, Copyright 2001-2016 The ScummVM team</string>
+       <string>@VERSION@, Copyright 2001-2017 The ScummVM team</string>
        <key>CFBundleIconFile</key>
        <string>scummvmtools.icns</string>
        <key>CFBundleIdentifier</key>
@@ -27,6 +27,6 @@
        <key>NSAppleScriptEnabled</key>
        <false/>
        <key>NSHumanReadableCopyright</key>
-       <string>Copyright 2001-2016 The ScummVM team</string>
+       <string>Copyright 2001-2017 The ScummVM team</string>
 </dict>
 </plist>
diff --git a/dists/scummvmtools.rc b/dists/scummvmtools.rc
index 87b7fe5..50c45d9 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,9,0,0
- PRODUCTVERSION  1,9,0,0
+ FILEVERSION     2,0,0,0
+ PRODUCTVERSION  2,0,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.9.0\0"
+            VALUE "FileVersion", "2.0.0\0"
             VALUE "InternalName", "scummvm\0"
-            VALUE "LegalCopyright", "Copyright � 2001-2016 The ScummVM Team\0"
+            VALUE "LegalCopyright", "Copyright � 2001-2017 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.9.0\0"
+            VALUE "ProductVersion", "2.0.0\0"
         END
     END
 
diff --git a/dists/scummvmtools.rc.in b/dists/scummvmtools.rc.in
index 67fb030..7eb3737 100644
--- a/dists/scummvmtools.rc.in
+++ b/dists/scummvmtools.rc.in
@@ -30,7 +30,7 @@ BEGIN
             VALUE "FileDescription", "http://www.scummvm.org/\0";
             VALUE "FileVersion", "@VERSION@\0"
             VALUE "InternalName", "scummvm\0"
-            VALUE "LegalCopyright", "Copyright � 2001-2016 The ScummVM Team\0"
+            VALUE "LegalCopyright", "Copyright � 2001-2017 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"
diff --git a/dists/win32/ScummVM Tools.iss b/dists/win32/ScummVM Tools.iss
index d022fd8..b28a4bd 100755
--- a/dists/win32/ScummVM Tools.iss     
+++ b/dists/win32/ScummVM Tools.iss     
@@ -1,5 +1,5 @@
 [Setup]
-AppCopyright=2016
+AppCopyright=2017
 AppName=ScummVM Tools
 AppVerName=ScummVM Tools Git
 AppPublisher=The ScummVM Team
diff --git a/dists/win32/scummvm-tools.nsi b/dists/win32/scummvm-tools.nsi
index c41d50a..82f4b44 100644
--- a/dists/win32/scummvm-tools.nsi
+++ b/dists/win32/scummvm-tools.nsi
@@ -61,11 +61,11 @@ Name "ScummVM Tools"
 # General Symbol Definitions
 
#########################################################################################
 !define REGKEY      "Software\ScummVM\$(^Name)"
-!define VERSION     "1.9.0"
+!define VERSION     "2.0.0"
 !define COMPANY     "ScummVM Team"
 !define URL         "http://scummvm.org/";
 !define DESCRIPTION "ScummVM Tools Installer. Look! A three headed monkey 
(TM)!"
-!define COPYRIGHT   "Copyright � 2001-2016 The ScummVM Team"
+!define COPYRIGHT   "Copyright � 2001-2017 The ScummVM Team"
 
 
#########################################################################################
 # Installer configuration
@@ -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.9.0.0
+VIProductVersion 2.0.0.0
 VIAddVersionKey  ProductName      $(^Name)
 VIAddVersionKey  ProductVersion  "${VERSION}"
 VIAddVersionKey  CompanyName     "${COMPANY}"
diff --git a/dists/win32/scummvm-tools.nsi.in b/dists/win32/scummvm-tools.nsi.in
index 89db12d..1f13af3 100644
--- a/dists/win32/scummvm-tools.nsi.in
+++ b/dists/win32/scummvm-tools.nsi.in
@@ -65,7 +65,7 @@ Name "ScummVM Tools"
 !define COMPANY     "ScummVM Team"
 !define URL         "http://scummvm.org/";
 !define DESCRIPTION "ScummVM Tools Installer. Look! A three headed monkey 
(TM)!"
-!define COPYRIGHT   "Copyright � 2001-2016 The ScummVM Team"
+!define COPYRIGHT   "Copyright � 2001-2017 The ScummVM Team"
 
 
#########################################################################################
 # Installer configuration
diff --git a/engines/cine/extract_cine.cpp b/engines/cine/extract_cine.cpp
index 179505e..7df05cc 100644
--- a/engines/cine/extract_cine.cpp
+++ b/engines/cine/extract_cine.cpp
@@ -260,7 +260,7 @@ void ExtractCine::unpackAllResourceFiles(const 
Common::Filename &filename) {
                        unpackedSize = f.readUint32BE();
                        packedSize = f.readUint32BE();
                } else {
-                       unpackedSize = packedSize = f.pos(); /* Get file size */
+                       unpackedSize = packedSize = f.size(); /* Get file size 
*/
                        f.seek(0, SEEK_SET);
                }
        }
@@ -284,8 +284,10 @@ void ExtractCine::unpackAllResourceFiles(const 
Common::Filename &filename) {
        for (unsigned int i = 0; i < resourceFilesCount; ++i) {
                memcpy(resourceFileName, &buf[4 + i * entrySize], 8);
                resourceFileName[8] = 0;
+               Common::Filename resourcePath(filename);
+               resourcePath.setFullName(resourceFileName);
 
-               Common::File fpResFile(resourceFileName, "rb");
+               Common::File fpResFile(resourcePath, "rb");
                print("--- Unpacking resource file %s:", resourceFileName);
                unpackFile(fpResFile);
        }
@@ -294,6 +296,11 @@ void ExtractCine::unpackAllResourceFiles(const 
Common::Filename &filename) {
 }
 
 void ExtractCine::execute() {
+       // We always need to setup default output path, since there is no 
obligation to specify it
+       if (_outputPath.empty()) {
+               _outputPath.setFullPath("./");
+       }
+
        Common::Filename infilename(_inputPaths[0].path);
 
        std::string fname = infilename.getFullName();
diff --git a/engines/prince/extract_prince.cpp 
b/engines/prince/extract_prince.cpp
index 5fd49ab..b0d8ead 100644
--- a/engines/prince/extract_prince.cpp
+++ b/engines/prince/extract_prince.cpp
@@ -48,85 +48,89 @@ void ExtractPrince::execute() {
        char *pathBuffer = (char *)malloc(17 * sizeof(char));
        printf("Unpacking The Prince and the Coward text data... \n");
 
-       std::string fullName = mainDir.getFullPath();
+       std::string databankFullName = mainDir.getFullPath();
        sprintf(pathBuffer, "all/databank.ptc");
-       fullName += pathBuffer;
-       Common::Filename filename(fullName);
-       _databank.open(filename, "rb");
-       if (!_databank.isOpen()) {
-               _fFiles.close();
-               error("Unable to open all/databank.ptc");
-       }
-       byte *fileTable = openDatabank();
-       bool mobsDE = false;
-       for (size_t i = 0; i < _items.size(); i++) {
-               if (!scumm_stricmp(_items[i]._name.c_str(), "variatxt.dat")) {
-                       exportVariaTxt(loadFile(i));
-               }
-               if (!scumm_stricmp(_items[i]._name.c_str(), "invtxt.dat")) {
-                       exportInvTxt(loadFile(i));
-               }
-               if (!scumm_stricmp(_items[i]._name.c_str(), "talktxt.dat")) {
-                       exportTalkTxt(loadFile(i));
-               }
-               if (!scumm_stricmp(_items[i]._name.c_str(), "credits.dat")) {
-                       exportCredits(loadFile(i));
+       databankFullName += pathBuffer;
+       Common::Filename filename(databankFullName);
+       // Trying to access the DATABANK files
+       // Here we check if the File all/databank.ptc exists.
+       // If so, we load it and extract the data from the databanks.
+       //
+       // If the databank.ptc file is not found, we try to access the
+       // uncompressed files directly.
+       if (Common::Filename(databankFullName).exists()) {
+               _databank.open(filename, "rb");
+               printf("DATABANK.PTC loaded, processing... \n");
+               byte *fileTable = openDatabank();
+               bool mobsDE = false;
+               for (size_t i = 0; i < _items.size(); i++) {
+                       if (!scumm_stricmp(_items[i]._name.c_str(), 
"variatxt.dat")) {
+                               exportVariaTxt(loadFile(i));
+                       }
+                       if (!scumm_stricmp(_items[i]._name.c_str(), 
"invtxt.dat")) {
+                               exportInvTxt(loadFile(i));
+                       }
+                       if (!scumm_stricmp(_items[i]._name.c_str(), 
"talktxt.dat")) {
+                               exportTalkTxt(loadFile(i));
+                       }
+                       if (!scumm_stricmp(_items[i]._name.c_str(), 
"credits.dat")) {
+                               exportCredits(loadFile(i));
+                       }
+                       if (!scumm_stricmp(_items[i]._name.c_str(), 
"mob01.lst")) {
+                               // For DE game data
+                               mobsDE = true;
+                               _outputPath.setFullName("mob.txt");
+                               _fFiles.open(_outputPath, "w");
+                               if (!_fFiles.isOpen()) {
+                                       error("Unable to create mob.txt");
+                               }
+                               _fFiles.print("mob.lst\nmob_name - exam 
text\n");
+                               int loc = 0;
+                               for (int j = 1; j <= kNumberOfLocations; j++) {
+                                       _fFiles.print("%d.\n", j);
+                                       // no databanks for loc 44 and 45
+                                       if (j != 44 && j != 45) {
+                                               exportMobs(loadFile(i + loc));
+                                               loc++;
+                                       }
+                               }
+                               printf("mob.txt - done\n");
+                               printf("All done!\n");
+                               free(pathBuffer);
+                               _fFiles.close();
+                       }
                }
-               if (!scumm_stricmp(_items[i]._name.c_str(), "mob01.lst")) {
-                       // For DE game data
-                       mobsDE = true;
+               free(fileTable);
+               _databank.close();
+               _items.clear();
+
+               // For PL game data
+               if (!mobsDE) {
                        _outputPath.setFullName("mob.txt");
                        _fFiles.open(_outputPath, "w");
                        if (!_fFiles.isOpen()) {
                                error("Unable to create mob.txt");
                        }
                        _fFiles.print("mob.lst\nmob_name - exam text\n");
-                       int loc = 0;
-                       for (int j = 1; j <= kNumberOfLocations; j++) {
-                               _fFiles.print("%d.\n", j);
+                       for (int loc = 1; loc <= kNumberOfLocations; loc++) {
+                               _fFiles.print("%d.\n", loc);
                                // no databanks for loc 44 and 45
-                               if (j != 44 && j != 45) {
-                                       exportMobs(loadFile(i + loc));
-                                       loc++;
-                               }
-                       }
-                       printf("mob.txt - done\n");
-                       printf("All done!\n");
-                       free(pathBuffer);
-                       _fFiles.close();
-               }
-       }
-       free(fileTable);
-       _databank.close();
-       _items.clear();
-
-       // For PL game data
-       if (!mobsDE) {
-               _outputPath.setFullName("mob.txt");
-               _fFiles.open(_outputPath, "w");
-               if (!_fFiles.isOpen()) {
-                       error("Unable to create mob.txt");
-               }
-               _fFiles.print("mob.lst\nmob_name - exam text\n");
-               for (int loc = 1; loc <= kNumberOfLocations; loc++) {
-                       _fFiles.print("%d.\n", loc);
-                       // no databanks for loc 44 and 45
-                       if (loc != 44 && loc != 45) {
-                               fullName = mainDir.getFullPath();
-                               sprintf(pathBuffer, "%02d/databank.ptc", loc);
-                               fullName += pathBuffer;
-                               filename = Common::Filename(fullName);
-                               _databank.open(filename, "rb");
-                               if (!_databank.isOpen()) {
-                                       _fFiles.close();
-                                       error("Unable to open 
%02d/databank.ptc", loc);
-                               }
-                               fileTable = openDatabank();
-                               for (size_t i = 0; i < _items.size(); i++) {
-                                       if 
(!scumm_stricmp(_items[i]._name.c_str(), "mob.lst")) {
-                                               exportMobs(loadFile(i));
+                               if (loc != 44 && loc != 45) {
+                                       databankFullName = 
mainDir.getFullPath();
+                                       sprintf(pathBuffer, 
"%02d/databank.ptc", loc);
+                                       databankFullName += pathBuffer;
+                                       filename = 
Common::Filename(databankFullName);
+                                       _databank.open(filename, "rb");
+                                       if (!_databank.isOpen()) {
+                                               _fFiles.close();
+                                               error("Unable to open 
%02d/databank.ptc", loc);
+                                       }
+                                       fileTable = openDatabank();
+                                       for (size_t i = 0; i < _items.size(); 
i++) {
+                                               if 
(!scumm_stricmp(_items[i]._name.c_str(), "mob.lst")) {
+                                                       exportMobs(loadFile(i));
+                                               }
                                        }
-                               }
                                free(fileTable);
                                _databank.close();
                                _items.clear();
@@ -136,15 +140,49 @@ void ExtractPrince::execute() {
                printf("All done!\n");
                free(pathBuffer);
                _fFiles.close();
+               }
        }
-}
+       if (Common::Filename(databankFullName).exists() == false) {
+               printf("Unable to load DATABANK.PTC. Trying to access the 
uncompressed data files... \n");
+
+               // Since we found out that there's no databank.ptc file, we now
+               // try to extract the data from the uncompressed datafiles.
+               printf("Processing variatxt.dat...\n");
+               exportVariaTxt(loadFile(mainDir.getFullPath() + 
"variatxt.dat"));
+               printf("Processing invtxt.dat...\n");
+               exportInvTxt(loadFile(mainDir.getFullPath() + "invtxt.dat"));
+               printf("Processing talktxt.dat...\n");
+               exportTalkTxt(loadFile(mainDir.getFullPath() + "talktxt.dat"));
+               printf("Processing credits.dat...\n");
+               exportCredits(loadFile(mainDir.getFullPath() + "credits.dat"));
+
+               // Process the mob*.lst files. We have up to 61 files, so we 
process them recursively.
+               _outputPath.setFullName("mob.txt");
+               _fFiles.open(_outputPath, "w");
+               _fFiles.print("mob.lst\nmob_name - exam text\n");
 
-InspectionMatch ExtractPrince::inspectInput(const Common::Filename &filename) {
-       std::string file = filename.getFullName();
-       if (scumm_stricmp(file.c_str(), "databank.ptc") == 0) {
-               return IMATCH_PERFECT;
+               int mobFileNumber;
+               for (mobFileNumber = 1; mobFileNumber <= 9; ++mobFileNumber) {
+                       if (Common::Filename(mainDir.getFullPath() + "mob0" + 
std::to_string(mobFileNumber) + ".lst").exists() == true) {
+                               _fFiles.print("%d.\n", mobFileNumber);
+                               exportMobs(loadFile(mainDir.getFullPath() + 
"mob0" + std::to_string(mobFileNumber) + ".lst"));
+                               print("Processing mob0%d.lst", mobFileNumber);
+                       }
+               }
+               for (mobFileNumber = 10; mobFileNumber <= 61; ++mobFileNumber) {
+                       if (Common::Filename(mainDir.getFullPath() + "mob" + 
std::to_string(mobFileNumber) + ".lst").exists() == true) {
+                               _fFiles.print("%d.\n", mobFileNumber);
+                               exportMobs(loadFile(mainDir.getFullPath() + 
"mob" + std::to_string(mobFileNumber) + ".lst"));
+                               print("Processing mob%d.lst...", mobFileNumber);
+                       }
+               }
+               _fFiles.close();
+               printf("mob.txt - done\n");
+               printf("All done!\n");
        }
-       return IMATCH_AWFUL;
+}
+InspectionMatch ExtractPrince::inspectInput(const Common::Filename &filename) {
+       return IMATCH_PERFECT;
 }
 
 byte *ExtractPrince::openDatabank() {
@@ -180,6 +218,7 @@ void ExtractPrince::decrypt(byte *buffer, uint32 size) {
        }
 }
 
+// DATABANK loader
 ExtractPrince::FileData ExtractPrince::loadFile(int itemIndex) {
        FileData fileData;
        fileData._fileTable = 0;
@@ -210,6 +249,22 @@ ExtractPrince::FileData ExtractPrince::loadFile(int 
itemIndex) {
 
        return fileData;
 }
+// Uncompressed datafile loader
+ExtractPrince::FileData ExtractPrince::loadFile(std::string fileName) {
+       Common::File file;
+       file.open(fileName, "rb");
+       if (!file.isOpen()) {
+               error("Unable to open datafile %s", fileName.c_str());
+       }
+       FileData fileData;
+       fileData._size = file.size();
+       fileData._fileTable = 0;
+
+       fileData._fileTable = (byte *)malloc(fileData._size);
+       file.read_throwsOnError(fileData._fileTable, fileData._size);
+
+       return fileData;
+}
 
 void ExtractPrince::exportMobs(FileData fileData) {
        if (fileData._fileTable != 0) {
@@ -496,7 +551,7 @@ byte *ExtractPrince::talkTxtWithDialog(byte *talkTxt) {
                mainString++;
        }
        _fFiles.print("#END\n");
-                       
+
        for (int i = 0; i < dialogBox; i++) {
                _fFiles.print("@DIALOG_BOX %d\n", i);
                while ((c = *dialogBoxAddr[i]) != 255) {
@@ -555,7 +610,7 @@ byte *ExtractPrince::talkTxtNoDialog(byte *talkTxt) {
        return talkTxt;
 }
 
-// Returns 'true' if next char is a value for 'enable option', 
+// Returns 'true' if next char is a value for 'enable option',
 // 'disable option', 'show dialog box", 'flag code' or 'exit code'
 bool ExtractPrince::printSpecialDialogData(byte c) {
        switch (c) {
@@ -645,145 +700,145 @@ char ExtractPrince::correctPolishLetter(char c) {
 
 // John_Doe's implementation
 static const uint16 table1[] = {
-    0x8000, 0x0002,
-    0x4000, 0x0004,
-    0x2000, 0x0008,
-    0x1000, 0x0010,
-    0x0800, 0x0020,
-    0x0400, 0x0040,
-    0x0200, 0x0080,
-    0x0100, 0x0100,
-    0x0080, 0x0200,
-    0x0040, 0x0400
+       0x8000, 0x0002,
+       0x4000, 0x0004,
+       0x2000, 0x0008,
+       0x1000, 0x0010,
+       0x0800, 0x0020,
+       0x0400, 0x0040,
+       0x0200, 0x0080,
+       0x0100, 0x0100,
+       0x0080, 0x0200,
+       0x0040, 0x0400
 };
 
 static const uint32 table2[] = {
-    0x0000F000,
-    0x0020FC00,
-    0x00A0FF00,
-    0x02A0FF80,
-    0x06A0FFC0,
-    0x0EA0FFE0,
-    0x1EA0FFF0,
-    0x3EA0FFF8
+       0x0000F000,
+       0x0020FC00,
+       0x00A0FF00,
+       0x02A0FF80,
+       0x06A0FFC0,
+       0x0EA0FFE0,
+       0x1EA0FFF0,
+       0x3EA0FFF8
 };
 
 static const uint16 table3[] = {
-    0x8000, 0x0000,
-    0x4000, 0x0002,
-    0x2000, 0x0006,
-    0x1000, 0x000E,
-    0x0800, 0x001E,
-    0x0400, 0x003E,
-    0x0200, 0x007E,
-    0x0100, 0x00FE,
-    0x0080, 0x01FE,
-    0x0040, 0x03FE,
-    0x0020, 0x07FE,
-    0x0010, 0x0FFE,
-    0x0008, 0x1FFE,
-    0x0004, 0x3FFE,
-    0x0002, 0x7FFE,
-    0x0001, 0xFFFE
+       0x8000, 0x0000,
+       0x4000, 0x0002,
+       0x2000, 0x0006,
+       0x1000, 0x000E,
+       0x0800, 0x001E,
+       0x0400, 0x003E,
+       0x0200, 0x007E,
+       0x0100, 0x00FE,
+       0x0080, 0x01FE,
+       0x0040, 0x03FE,
+       0x0020, 0x07FE,
+       0x0010, 0x0FFE,
+       0x0008, 0x1FFE,
+       0x0004, 0x3FFE,
+       0x0002, 0x7FFE,
+       0x0001, 0xFFFE
 };
 
 void Decompressor::decompress(byte *source, byte *dest, uint32 destSize) {
-    byte *destEnd = dest + destSize;
-    int more;
-    _src = source;
-    _dst = dest;
-    _bitBuffer = 0x80;
-    while (_dst < destEnd) {
-        uint32 ebp;
-        uint16 offset, length;
-        if (getBit()) {
-            if (getBit()) {
-                if (getBit()) {
-                    if (getBit()) {
-                        if (getBit()) {
-                            if (getBit()) {
-                                uint32 tableIndex = 0;
-                                while (getBit())
-                                    tableIndex++;
-                                length = table3[tableIndex * 2 + 0];
-                                do {
-                                    more = !(length & 0x8000);
-                                    length = (length << 1) | getBit();
-                                } while (more);
-                                length += table3[tableIndex * 2 + 1];
-                                length++;
-                                memcpy(_dst, _src, length);
-                                _src += length;
-                                _dst += length;
-                            }
-                            *_dst++ = *_src++;
-                        }
-                        *_dst++ = *_src++;
-                    }
-                    *_dst++ = *_src++;
-                }
-                *_dst++ = *_src++;
-            }
-            *_dst++ = *_src++;
-        }
-        if (!getBit()) {
-            if (getBit()) {
-                uint32 tableIndex = getBit();
-                tableIndex = (tableIndex << 1) | getBit();
-                tableIndex = (tableIndex << 1) | getBit();
-                ebp = table2[tableIndex];
-                length = 1;
-            } else {
-                ebp = 0x0000FF00;
-                length = 0;
-            }
-        } else {
-            uint32 tableIndex = 0;
-            while (getBit())
-                tableIndex++;
-            length = table1[tableIndex * 2 + 0];
-            do {
-                more = !(length & 0x8000);
-                length = (length << 1) | getBit();
-            } while (more);
-            length += table1[tableIndex * 2 + 1];
-            tableIndex = getBit();
-            tableIndex = (tableIndex << 1) | getBit();
-            tableIndex = (tableIndex << 1) | getBit();
-            ebp = table2[tableIndex];
-        }
-        offset = ebp & 0xFFFF;
-        do {
-            if (_bitBuffer == 0x80) {
-                if (offset >= 0xFF00) {
-                    offset = (offset << 8) | *_src++;
-                }
-            }
-            more = offset & 0x8000;
-            offset = (offset << 1) | getBit();
-        } while (more);
-        offset += (ebp >> 16);
-        length += 2;
-        while (length--) {
-            if (_dst >= destEnd) {
-                return;
-            }
-            *_dst = *(_dst - offset);
-            _dst++;
-        }
-    }
+       byte *destEnd = dest + destSize;
+       int more;
+       _src = source;
+       _dst = dest;
+       _bitBuffer = 0x80;
+       while (_dst < destEnd) {
+               uint32 ebp;
+               uint16 offset, length;
+               if (getBit()) {
+                       if (getBit()) {
+                               if (getBit()) {
+                                       if (getBit()) {
+                                               if (getBit()) {
+                                                       if (getBit()) {
+                                                               uint32 
tableIndex = 0;
+                                                               while (getBit())
+                                                                       
tableIndex++;
+                                                               length = 
table3[tableIndex * 2 + 0];
+                                                               do {
+                                                                       more = 
!(length & 0x8000);
+                                                                       length 
= (length << 1) | getBit();
+                                                               } while (more);
+                                                               length += 
table3[tableIndex * 2 + 1];
+                                                               length++;
+                                                               memcpy(_dst, 
_src, length);
+                                                               _src += length;
+                                                               _dst += length;
+                                                       }
+                                                       *_dst++ = *_src++;
+                                               }
+                                               *_dst++ = *_src++;
+                                       }
+                                       *_dst++ = *_src++;
+                               }
+                               *_dst++ = *_src++;
+                       }
+                       *_dst++ = *_src++;
+               }
+               if (!getBit()) {
+                       if (getBit()) {
+                               uint32 tableIndex = getBit();
+                               tableIndex = (tableIndex << 1) | getBit();
+                               tableIndex = (tableIndex << 1) | getBit();
+                               ebp = table2[tableIndex];
+                               length = 1;
+                       } else {
+                               ebp = 0x0000FF00;
+                               length = 0;
+                       }
+               } else {
+                       uint32 tableIndex = 0;
+                       while (getBit())
+                               tableIndex++;
+                       length = table1[tableIndex * 2 + 0];
+                       do {
+                               more = !(length & 0x8000);
+                               length = (length << 1) | getBit();
+                       } while (more);
+                       length += table1[tableIndex * 2 + 1];
+                       tableIndex = getBit();
+                       tableIndex = (tableIndex << 1) | getBit();
+                       tableIndex = (tableIndex << 1) | getBit();
+                       ebp = table2[tableIndex];
+               }
+               offset = ebp & 0xFFFF;
+               do {
+                       if (_bitBuffer == 0x80) {
+                               if (offset >= 0xFF00) {
+                                       offset = (offset << 8) | *_src++;
+                               }
+                       }
+                       more = offset & 0x8000;
+                       offset = (offset << 1) | getBit();
+               } while (more);
+               offset += (ebp >> 16);
+               length += 2;
+               while (length--) {
+                       if (_dst >= destEnd) {
+                               return;
+                       }
+                       *_dst = *(_dst - offset);
+                       _dst++;
+               }
+       }
 }
 
 int Decompressor::getBit() {
-    int bit = (_bitBuffer & 0x80) >> 7;
-    _bitBuffer <<= 1;
-    if (_bitBuffer == 0) {
-        _bitBuffer = *_src++;
-        bit = (_bitBuffer & 0x80) >> 7;
-        _bitBuffer <<= 1;
-        _bitBuffer |= 1;
-    }
-    return bit;
+       int bit = (_bitBuffer & 0x80) >> 7;
+       _bitBuffer <<= 1;
+       if (_bitBuffer == 0) {
+               _bitBuffer = *_src++;
+               bit = (_bitBuffer & 0x80) >> 7;
+               _bitBuffer <<= 1;
+               _bitBuffer |= 1;
+       }
+       return bit;
 }
 
 #ifdef STANDALONE_MAIN
diff --git a/engines/prince/extract_prince.h b/engines/prince/extract_prince.h
index 8d677ec..cc440ce 100644
--- a/engines/prince/extract_prince.h
+++ b/engines/prince/extract_prince.h
@@ -49,6 +49,7 @@ protected:
        static void decrypt(byte *buffer, uint32 size);
 
        FileData loadFile(int itemIndex);
+       FileData loadFile(std::string fileName);
        char correctPolishLetter(char c);
 
        void exportMobs(FileData fileData);
diff --git a/engines/prince/pack_prince.cpp b/engines/prince/pack_prince.cpp
index f1547f7..c8b2a0f 100644
--- a/engines/prince/pack_prince.cpp
+++ b/engines/prince/pack_prince.cpp
@@ -150,11 +150,11 @@ void PackPrince::packVariaTxt() {
        if (name.compare("variatxt.dat")) {
                error("Wrong header in variatxt.txt");
        }
-       
+
        // Skip comment until first number
        while ((c = _databank.readByte()) != '\r');
        _databank.readByte(); // skip '\n'
-       
+
        // Loading to array:
        const int kVariaTxtSize = 6000;
        Common::Array<VariaTxt> variaTxtList; // list of all txt
@@ -187,12 +187,12 @@ void PackPrince::packVariaTxt() {
                variaTxtList[id]._txt = newVariaTxt._txt;
 
                // Skip '\n' and test eof
-               _databank.readByte(); 
+               _databank.readByte();
                if ((uint)_databank.pos() == fileSize) {
                        break;
                }
        }
-       
+
        int textOffset = kVariaTxtSize * 4;
        // Offset counting and packing:
        for (int i = 0; i < kVariaTxtSize; i++) {
@@ -228,10 +228,10 @@ void PackPrince::packInvTxt() {
        if (name.compare("invtxt.dat")) {
                error("Wrong header in invtxt.txt");
        }
-       
+
        // Skip comments until first inventory item nr
        while ((c = _databank.readByte()) != '0');
-       
+
        // Skip first dot and space
        _databank.readByte();
        _databank.readByte();
@@ -269,7 +269,7 @@ void PackPrince::packInvTxt() {
                invTxtList[id] = newInvTxt;
 
                // Skip '\n' and test eof
-               _databank.readByte(); 
+               _databank.readByte();
                if ((uint)_databank.pos() == fileSize) {
                        break;
                } else {
@@ -277,7 +277,7 @@ void PackPrince::packInvTxt() {
                }
                id++;
        }
-       
+
        // Offset counting and packing:
        int nameOffset = kItems * 4 * 2;
        for (int i = 0; i < kItems; i++) {
@@ -391,7 +391,7 @@ void PackPrince::packTalkTxt() {
 
        // Start pos of talkTxt file for later offset setting
        int startTalkTxtPos = _fFiles.pos();
-       
+
        // Making space for main offsets
        for (int i = 0; i < kSetStringValues; i++) {
                _fFiles.writeUint32LE(0);
@@ -508,7 +508,7 @@ void PackPrince::talkTxtWithDialog() {
 
                tempDialogBoxArray.clear();
                allDialogBoxesArray.push_back(tempDialogBoxArray);
-       
+
                // Lines of dialog box
                while (1) {
                        // Skip $, check if #END
@@ -554,7 +554,7 @@ void PackPrince::talkTxtWithDialog() {
        while (1) {
                tempDialogOptionsArray.clear();
                allDialogOptionsArray.push_back(tempDialogOptionsArray);
-       
+
                // Lines of dialog opt
                while (1) {
                        // Special dialog data
@@ -638,15 +638,15 @@ void PackPrince::talkTxtWithDialog() {
 
        // Offset counting and packing:
        _fFiles.writeByte(255); // show that this is dialog box
-       
+
        // Offset of init dialog texts
        int offset = 3 + allDialogBoxesArray.size() * 2 + 2 + 
allDialogOptionsArray.size() * 2 + 2;
-       _fFiles.writeUint16LE(offset); 
+       _fFiles.writeUint16LE(offset);
        for (uint i = 0; i < beforeDialogBoxArray.size(); i++) {
                offset += beforeDialogBoxArray[i]._txt.size() + 1; // data and 
text
        }
        offset += 3; // always BOX 0 and 255 at the end
-       
+
        // Dialog boxes texts offsets:
        for (uint i = 0; i < allDialogBoxesArray.size(); i++) {
                _fFiles.writeUint16LE(offset);
@@ -707,7 +707,10 @@ void PackPrince::talkTxtNoDialog() {
        std::string line;
        Common::Array<TalkTxt> normalLinesArray;
        TalkTxt tempNormalLine;
+       bool havePragma;
        while (1) {
+               havePragma = true;
+
                // Special dialog data
                line.clear();
                while ((c = _databank.readByte()) != '\r') {
@@ -728,20 +731,32 @@ void PackPrince::talkTxtNoDialog() {
                        continue;
                } else if (!line.compare("#END")) {
                        break;
+               } else {
+                       if (line.front() == '#') {
+                               printf("UNKNOWN pragma: %s", line.c_str());
+                               break;
+                       } else {
+                               tempNormalLine._txt = line;
+                               havePragma = false;
+
+                               tempNormalLine._txt += '\0';
+                       }
                }
 
-               // Line of text
-               tempNormalLine._txt.clear();
-               while ((c = _databank.readByte()) != '\r') {
-                       c = correctPolishLetter(c); // temporary
-                       if (c == '|') {
-                               c = 10;
+               if (havePragma) {
+                       // Line of text
+                       tempNormalLine._txt.clear();
+                       while ((c = _databank.readByte()) != '\r') {
+                               c = correctPolishLetter(c); // temporary
+                               if (c == '|') {
+                                       c = 10;
+                               }
+                               tempNormalLine._txt += c;
                        }
+                       c = 0;
                        tempNormalLine._txt += c;
+                       _databank.readByte(); // skip '\n'
                }
-               c = 0;
-               tempNormalLine._txt += c;
-               _databank.readByte(); // skip '\n'
 
                normalLinesArray.push_back(tempNormalLine);
        }
@@ -789,6 +804,10 @@ void PackPrince::packMobs() {
                newMob._name.clear();
                newMob._examTxt.clear();
 
+               if ((uint)_databank.pos() == fileSize) {
+                       break;
+               }
+
                // Test if end of location - next number
                if ((c = _databank.readByte()) > 47 && c < 58) {
                        // Set location nr:
@@ -871,7 +890,7 @@ void PackPrince::packMobs() {
                        _fFiles.writeByte(0);
                        _fFiles.writeByte(1);
                        for (uint k = 0; k < 
allLocations[i][j]._examTxt.size(); k++) {
-                               
_fFiles.writeByte(allLocations[i][j]._examTxt[k]);                      
+                               
_fFiles.writeByte(allLocations[i][j]._examTxt[k]);
                        }
                        _fFiles.writeByte(0);
                        _fFiles.writeByte(255);
@@ -899,7 +918,7 @@ char PackPrince::correctPolishLetter(char c) {
                return '\x91';
        case '\xF3':
                return '\xA2';
-       case '\xBF':    
+       case '\xBF':
                return '\xA7';
        case '\xA5':
                return '\x8F';
@@ -909,15 +928,15 @@ char PackPrince::correctPolishLetter(char c) {
                return '\x98';
        case '\xC6':
                return '\x95';
-       case '\xD1':    
+       case '\xD1':
                return '\xA5';
        case '\x8F':
                return '\xA0';
-       case '\xCA':    
+       case '\xCA':
                return '\x90';
        case '\xD3':
                return '\xA3';
-       case '\xAF':    
+       case '\xAF':
                return '\xA1';
        default:
                return c;
diff --git a/engines/touche/compress_touche.cpp 
b/engines/touche/compress_touche.cpp
index 4cc6803..beb9dee 100644
--- a/engines/touche/compress_touche.cpp
+++ b/engines/touche/compress_touche.cpp
@@ -44,13 +44,14 @@ static uint32 input_Vxx_size[Vxx_HDR_LEN];
 
 CompressTouche::CompressTouche(const std::string &name) : 
CompressionTool(name, TOOLTYPE_COMPRESSION) {
        _supportsProgressBar = true;
+       _outputToDirectory = false;
 
        ToolInput input;
        input.format = "/";
        _inputPaths.push_back(input);
 
        _shorthelp = "Used to compress Touche speech files (Vxxx and OBJ).";
-       _helptext = "\nUsage: " + getName() + " [params] [-o outputfile 
TOUCHE.*] <inputdir>\n* differs with compression type.\n" + _shorthelp + "\n";
+       _helptext = "\nUsage: " + getName() + " [params] [-o outputfile] 
<inputdir>\n* differs with compression type.\n" + _shorthelp + "\n";
 }
 
 InspectionMatch CompressTouche::inspectInput(const Common::Filename &filename) 
{
@@ -184,7 +185,7 @@ void CompressTouche::execute() {
        Common::Filename inpath(_inputPaths[0].path);
        Common::Filename &outpath = _outputPath;
 
-       if (outpath.empty()) {
+       if (outpath.getFullName().empty()) {
                switch(_format) {
                case AUDIO_MP3:
                        outpath.setFullName(OUTPUT_MP3);
diff --git a/gui/main.cpp b/gui/main.cpp
index 4f28ba3..7493b75 100644
--- a/gui/main.cpp
+++ b/gui/main.cpp
@@ -125,7 +125,7 @@ void ScummVMToolsApp::OnAbout() {
        wxHyperlinkCtrl *websitetext = new wxHyperlinkCtrl(dialog, wxID_ANY, 
wxT("http://www.scummvm.org";), wxT("http://www.scummvm.org";));
        sizer->Add(websitetext, wxSizerFlags().Border(wxTOP, 5));
 
-       wxStaticText *copyrighttext = new wxStaticText(dialog, wxID_ANY, 
wxT("Copyright ScummVM Team 2009-2016"));
+       wxStaticText *copyrighttext = new wxStaticText(dialog, wxID_ANY, 
wxT("Copyright ScummVM Team 2009-2017"));
        copyrighttext->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, 
wxT("Arial")));
        sizer->Add(copyrighttext, wxSizerFlags());
 
diff --git a/internal_version.h b/internal_version.h
index 4bbab3d..7e39734 100644
--- a/internal_version.h
+++ b/internal_version.h
@@ -2,4 +2,4 @@
 #define SCUMMVM_TOOLS_SVN_REVISION
 #endif
 
-#define SCUMMVM_TOOLS_VERSION "1.9.0" SCUMMVM_TOOLS_SVN_REVISION
+#define SCUMMVM_TOOLS_VERSION "2.0.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