Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package scummvm-tools for openSUSE:Factory checked in at 2021-03-10 08:57:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/scummvm-tools (Old) and /work/SRC/openSUSE:Factory/.scummvm-tools.new.2378 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "scummvm-tools" Wed Mar 10 08:57:42 2021 rev:5 rq:878079 version:2.2.0 Changes: -------- --- /work/SRC/openSUSE:Factory/scummvm-tools/scummvm-tools.changes 2020-05-20 18:46:26.621414602 +0200 +++ /work/SRC/openSUSE:Factory/.scummvm-tools.new.2378/scummvm-tools.changes 2021-03-10 08:58:50.810987551 +0100 @@ -1,0 +2,7 @@ +Mon Mar 8 22:59:47 UTC 2021 - Dirk M??ller <[email protected]> + +- update to 2.2.0: + - Add a tool to extract Lost Eden archives + - Fix number of issues with prince translation generation. + +------------------------------------------------------------------- Old: ---- scummvm-tools-2.1.0.tar.xz New: ---- scummvm-tools-2.2.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ scummvm-tools.spec ++++++ --- /var/tmp/diff_new_pack.hLhi8l/_old 2021-03-10 08:58:51.234987988 +0100 +++ /var/tmp/diff_new_pack.hLhi8l/_new 2021-03-10 08:58:51.234987988 +0100 @@ -1,7 +1,7 @@ # # spec file for package scummvm-tools # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,21 +17,21 @@ Name: scummvm-tools -Version: 2.1.0 +Version: 2.2.0 Release: 0 Summary: ScummVM-related tools License: GPL-2.0-or-later -URL: http://www.scummvm.org -Source0: https://www.scummvm.org/frs/scummvm-tools/%{version}/scummvm-tools-%{version}.tar.xz +URL: https://www.scummvm.org +Source0: https://downloads.scummvm.org/frs/scummvm-tools/%{version}/scummvm-tools-%{version}.tar.xz Source1: %{name}.desktop Source99: %{name}.changes # PATCH-FIX-UPSTREAM fix-new-wxwidgets.patch -- https://bugs.scummvm.org/ticket/9554 Patch0: fix-new-wxwidgets.patch BuildRequires: ImageMagick BuildRequires: boost-devel >= 1.32.0 +BuildRequires: c++_compiler BuildRequires: desktop-file-utils BuildRequires: fdupes -BuildRequires: gcc-c++ BuildRequires: icns-utils BuildRequires: pkgconfig BuildRequires: wxWidgets-devel >= 3 @@ -67,7 +67,6 @@ icns2png -x -s 512x512 gui/media/scummvmtools.icns %build -export CXXFLAGS="%{optflags}" ./configure --prefix=%{_prefix} \ --enable-verbose-build %make_build ++++++ scummvm-tools-2.1.0.tar.xz -> scummvm-tools-2.2.0.tar.xz ++++++ ++++ 1785 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/COPYRIGHT new/scummvm-tools-2.2.0/COPYRIGHT --- old/scummvm-tools-2.1.0/COPYRIGHT 2019-10-04 23:44:09.000000000 +0200 +++ new/scummvm-tools-2.2.0/COPYRIGHT 2020-09-13 23:18:34.000000000 +0200 @@ -1,5 +1,5 @@ ScummVM Tools -Copyright (C) 2001-2019 by the following: +Copyright (C) 2001-2020 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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/Makefile new/scummvm-tools-2.2.0/Makefile --- old/scummvm-tools-2.1.0/Makefile 2019-10-04 23:44:09.000000000 +0200 +++ new/scummvm-tools-2.2.0/Makefile 2020-09-13 23:18:34.000000000 +0200 @@ -94,7 +94,7 @@ cp $(srcdir)/gui/media/logo.jpg $(WIN32PATH)/tools/media/ cp $(srcdir)/gui/media/tile.gif $(WIN32PATH)/tools/media/ $(STRIP) construct_mohawk$(EXEEXT) -o $(WIN32PATH)/tools/construct_mohawk$(EXEEXT) -ifeq "$(USE_FREETYPE)" "1" +ifeq "$(USE_FREETYPE2)" "1" ifeq "$(USE_ICONV)" "1" $(STRIP) create_sjisfnt$(EXEEXT) -o $(WIN32PATH)/tools/create_sjisfnt$(EXEEXT) endif @@ -132,7 +132,7 @@ cp $(srcdir)/README $(srcdir)/$(WIN32BUILD) unix2dos $(srcdir)/$(WIN32BUILD)/*.* $(STRIP) construct_mohawk$(EXEEXT) -o $(srcdir)/$(WIN32BUILD)/construct_mohawk$(EXEEXT) -ifeq "$(USE_FREETYPE)" "1" +ifeq "$(USE_FREETYPE2)" "1" ifeq "$(USE_ICONV)" "1" $(STRIP) create_sjisfnt$(EXEEXT) -o $(srcdir)/$(WIN32BUILD)/create_sjisfnt$(EXEEXT) endif @@ -234,7 +234,7 @@ cp $(srcdir)/gui/media/logo.jpg $(AMIGAOS4PATH)/tools/media/ cp $(srcdir)/gui/media/tile.gif $(AMIGAOS4PATH)/tools/media/ $(STRIP) construct_mohawk$(EXEEXT) -o $(AMIGAOS4PATH)/tools/construct_mohawk$(EXEEXT) -ifeq "$(USE_FREETYPE)" "1" +ifeq "$(USE_FREETYPE2)" "1" ifeq "$(USE_ICONV)" "1" $(STRIP) create_sjisfnt$(EXEEXT) -o $(AMIGAOS4PATH)/tools/create_sjisfnt$(EXEEXT) endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/Makefile.common new/scummvm-tools-2.2.0/Makefile.common --- old/scummvm-tools-2.1.0/Makefile.common 2019-10-04 23:44:09.000000000 +0200 +++ new/scummvm-tools-2.2.0/Makefile.common 2020-09-13 23:18:34.000000000 +0200 @@ -39,7 +39,7 @@ decompile endif -ifdef USE_FREETYPE +ifdef USE_FREETYPE2 ifdef USE_ICONV PROGRAMS += \ create_sjisfnt @@ -156,9 +156,9 @@ pegasus_save_types_LIBS := -framework CoreServices create_sjisfnt_OBJS := create_sjisfnt.o $(UTILS) -create_sjisfnt_LIBS := $(FREETYPELIBS) $(ICONVLIBS) +create_sjisfnt_LIBS := $(FREETYPE2_LIBS) $(ICONVLIBS) # Set custom build flags -create_sjisfnt.o: CPPFLAGS+=$(FREETYPEINCLUDES) $(ICONVCFLAGS) +create_sjisfnt.o: CPPFLAGS+=$(FREETYPE2_CFLAGS) $(ICONVCFLAGS) sword2_clue_OBJS := engines/sword2/sword2_clue.o common/file.o @@ -192,6 +192,7 @@ engines/cge/pack_cge.o \ engines/cine/extract_cine.o \ engines/cruise/extract_cruise_pc.o \ + engines/cryo/extract_cryo.o \ engines/gob/extract_gob_stk.o \ engines/kyra/extract_kyra.o \ engines/prince/extract_prince.o \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/NEWS new/scummvm-tools-2.2.0/NEWS --- old/scummvm-tools-2.1.0/NEWS 2019-10-04 23:44:09.000000000 +0200 +++ new/scummvm-tools-2.2.0/NEWS 2020-09-13 23:18:34.000000000 +0200 @@ -1,7 +1,11 @@ For a more comprehensive changelog of the latest experimental code, see: https://github.com/scummvm/scummvm-tools/commits/ -2.1.0 (2019-10-13) +2.2.0 (2020-09-27) + - Add a tool to extract Lost Eden archives + - Fix number of issues with prince translation generation. + +2.1.0 (2019-10-11) - Fix bug #10559: Add workaround to compress_scumm_sou for non-VOC speech sample in monster.sou of Indiana Jones and the Fate of Atlantis. - Improve endianness handling of internal FLAC encoder. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/README new/scummvm-tools-2.2.0/README --- old/scummvm-tools-2.1.0/README 2019-10-04 23:44:09.000000000 +0200 +++ new/scummvm-tools-2.2.0/README 2020-09-13 23:18:34.000000000 +0200 @@ -85,6 +85,12 @@ Example of usage: ./scummvm-tools-cli --tool extract_cruise_pc [-o outputdir] <infile> + extract_cryo + Extracts Lost Eden archives. + + Example of usage: + ./scummvm-tools-cli --tool extract_cryo [-o outputdir] <infile> + extract_gob_stk Extracts data files from STK/ITK files from Coktel Vision games. @@ -134,7 +140,7 @@ Mansion. Example of usage: - ./scummvm-tools-cli --tool extract_mm_apple [-o outputdir] <disk1.d64> <disk2.d64> + ./scummvm-tools-cli --tool extract_mm_c64 [-o outputdir] <disk1.d64> <disk2.d64> extract_mm_nes Extracts data files from the NES version of Maniac Mansion. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/convert_dxa.bat new/scummvm-tools-2.2.0/convert_dxa.bat --- old/scummvm-tools-2.1.0/convert_dxa.bat 2019-10-04 23:44:09.000000000 +0200 +++ new/scummvm-tools-2.2.0/convert_dxa.bat 2020-09-13 23:18:34.000000000 +0200 @@ -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-2019 ScummVM Team +:: (c) 2006-2020 ScummVM Team :: (c) 2006 oduverne :: (c) 2008 NoiZe :: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/convert_dxa.sh new/scummvm-tools-2.2.0/convert_dxa.sh --- old/scummvm-tools-2.1.0/convert_dxa.sh 2019-10-04 23:44:09.000000000 +0200 +++ new/scummvm-tools-2.2.0/convert_dxa.sh 2020-09-13 23:18:34.000000000 +0200 @@ -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-2019 ScummVM Team +# (c) 2006-2020 ScummVM Team # (c) 2006 crowley # diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/dists/macosx/Info.plist new/scummvm-tools-2.2.0/dists/macosx/Info.plist --- old/scummvm-tools-2.1.0/dists/macosx/Info.plist 2019-10-04 23:44:10.000000000 +0200 +++ new/scummvm-tools-2.2.0/dists/macosx/Info.plist 2020-09-13 23:18:34.000000000 +0200 @@ -9,7 +9,7 @@ <key>CFBundleExecutable</key> <string>scummvm-tools</string> <key>CFBundleGetInfoString</key> - <string>2.1.0, Copyright 2001-2019 The ScummVM team</string> + <string>2.2.0, Copyright 2001-2020 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>2.1.0</string> + <string>2.2.0</string> <key>CFBundleVersion</key> - <string>2.1.0</string> + <string>2.2.0</string> <key>NSAppleScriptEnabled</key> <false/> <key>NSHumanReadableCopyright</key> - <string>Copyright 2001-2019 The ScummVM team</string> + <string>Copyright 2001-2020 The ScummVM team</string> </dict> </plist> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/dists/macosx/Info.plist.in new/scummvm-tools-2.2.0/dists/macosx/Info.plist.in --- old/scummvm-tools-2.1.0/dists/macosx/Info.plist.in 2019-10-04 23:44:09.000000000 +0200 +++ new/scummvm-tools-2.2.0/dists/macosx/Info.plist.in 2020-09-13 23:18:34.000000000 +0200 @@ -9,7 +9,7 @@ <key>CFBundleExecutable</key> <string>scummvm-tools</string> <key>CFBundleGetInfoString</key> - <string>@VERSION@, Copyright 2001-2019 The ScummVM team</string> + <string>@VERSION@, Copyright 2001-2020 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-2019 The ScummVM team</string> + <string>Copyright 2001-2020 The ScummVM team</string> </dict> </plist> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/dists/scummvmtools.rc new/scummvm-tools-2.2.0/dists/scummvmtools.rc --- old/scummvm-tools-2.1.0/dists/scummvmtools.rc 2019-10-04 23:44:10.000000000 +0200 +++ new/scummvm-tools-2.2.0/dists/scummvmtools.rc 2020-09-13 23:18:34.000000000 +0200 @@ -10,8 +10,8 @@ IDI_ICON ICON DISCARDABLE "gui/media/scummvmtools.ico" VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,1,0,0 - PRODUCTVERSION 2,1,0,0 + FILEVERSION 2,2,0,0 + PRODUCTVERSION 2,2,0,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -28,13 +28,13 @@ BEGIN VALUE "Comments", "Look! A three headed monkey (TM)! .. Nice use of the TM!\0" VALUE "FileDescription", "http://www.scummvm.org/\0" - VALUE "FileVersion", "2.1.0\0" + VALUE "FileVersion", "2.2.0\0" VALUE "InternalName", "scummvm\0" - VALUE "LegalCopyright", "Copyright ? 2001-2019 The ScummVM Team\0" + VALUE "LegalCopyright", "Copyright ? 2001-2020 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", "2.1.0\0" + VALUE "ProductVersion", "2.2.0\0" END END diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/dists/scummvmtools.rc.in new/scummvm-tools-2.2.0/dists/scummvmtools.rc.in --- old/scummvm-tools-2.1.0/dists/scummvmtools.rc.in 2019-10-04 23:44:09.000000000 +0200 +++ new/scummvm-tools-2.2.0/dists/scummvmtools.rc.in 2020-09-13 23:18:34.000000000 +0200 @@ -30,7 +30,7 @@ VALUE "FileDescription", "http://www.scummvm.org/\0" VALUE "FileVersion", "@VERSION@\0" VALUE "InternalName", "scummvm\0" - VALUE "LegalCopyright", "Copyright ? 2001-2019 The ScummVM Team\0" + VALUE "LegalCopyright", "Copyright ? 2001-2020 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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh "old/scummvm-tools-2.1.0/dists/win32/ScummVM Tools.iss" "new/scummvm-tools-2.2.0/dists/win32/ScummVM Tools.iss" --- "old/scummvm-tools-2.1.0/dists/win32/ScummVM Tools.iss" 2019-10-04 23:44:09.000000000 +0200 +++ "new/scummvm-tools-2.2.0/dists/win32/ScummVM Tools.iss" 2020-09-13 23:18:34.000000000 +0200 @@ -1,5 +1,5 @@ [Setup] -AppCopyright=2019 +AppCopyright=2020 AppName=ScummVM Tools AppVerName=ScummVM Tools Git AppPublisher=The ScummVM Team diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/dists/win32/scummvm-tools.nsi new/scummvm-tools-2.2.0/dists/win32/scummvm-tools.nsi --- old/scummvm-tools-2.1.0/dists/win32/scummvm-tools.nsi 2019-10-04 23:44:10.000000000 +0200 +++ new/scummvm-tools-2.2.0/dists/win32/scummvm-tools.nsi 2020-09-13 23:18:34.000000000 +0200 @@ -61,7 +61,7 @@ # General Symbol Definitions ######################################################################################### !define REGKEY "Software\ScummVM\$(^Name)" -!define VERSION "2.1.0" +!define VERSION "2.2.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 @@ #TargetMinimalOS 5.0 ; Minimal version of windows for installer: Windows 2000 or more recent ; (will build unicode installer with NSIS 2.50+) -VIProductVersion 2.1.0.0 +VIProductVersion 2.2.0.0 VIAddVersionKey ProductName $(^Name) VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/engines/cryo/extract_cryo.cpp new/scummvm-tools-2.2.0/engines/cryo/extract_cryo.cpp --- old/scummvm-tools-2.1.0/engines/cryo/extract_cryo.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/scummvm-tools-2.2.0/engines/cryo/extract_cryo.cpp 2020-09-13 23:18:34.000000000 +0200 @@ -0,0 +1,107 @@ +/* ScummVM Tools + * + * ScummVM Tools is the legal property of its developers, whose + * names are too numerous to list here. Please refer to the + * COPYRIGHT file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include "extract_cryo.h" + + +ExtractCryo::ExtractCryo(const std::string &name) : Tool(name, TOOLTYPE_EXTRACTION) { + ToolInput input; + input.format = "*.*"; + _inputPaths.push_back(input); + + _outputToDirectory = true; + + _shorthelp = "Used to extract Lost Eden archive files."; + _helptext = "\nUsage: " + getName() + " [-o /path/to/output/dir/] <inputfile>\n"; +} + +void ExtractCryo::execute() { + Common::Filename filename = _inputPaths[0].path; + + if (!openDAT(filename)) + error("Unable to open %s", filename.getFullName().c_str()); + + Common::File fOut; + for (DATIterator it = _dir.begin(); it != _dir.end(); ++it) { + byte *buffer = (byte *)malloc((*it)->size); + _datFile.seek((*it)->offset, SEEK_SET); + _datFile.read_noThrow(buffer, (*it)->size); + + _outputPath.setFullName((*it)->filename); + print("... %s", (*it)->filename); + + fOut.open(_outputPath, "wb"); + fOut.write(buffer, (*it)->size); + fOut.close(); + + free(buffer); + } + + _datFile.close(); +} + +InspectionMatch ExtractCryo::inspectInput(const Common::Filename &filename) { + // TODO: DUNE.DAT + std::string file = filename.getFullName(); + if ( + scumm_stricmp(file.c_str(), "EDEN.DAT") == 0 + ) + return IMATCH_PERFECT; + return IMATCH_AWFUL; +} + +bool ExtractCryo::openDAT(Common::Filename &filename) { + _datFile.open(filename, "rb"); + if (!_datFile.isOpen()) { + error("FileMan::openDAT(): Error reading the DAT file %s", filename.getFullName().c_str()); + return false; + } + + uint16 entries = _datFile.readUint16LE(); + + for (uint16 fileIndex = 0; fileIndex < entries; fileIndex++) { + DATEntry *dirEntry = new DATEntry(); + + for (int i = 0; i < 16; i++) { + dirEntry->filename[i] = _datFile.readByte(); + } + + dirEntry->size = _datFile.readUint32LE(); + dirEntry->offset = _datFile.readUint32LE(); + dirEntry->flag = _datFile.readByte(); + + if (dirEntry->offset != 0 || dirEntry->size != 0) { + _dir.push_back(dirEntry); + } + } + + return true; +} + +#ifdef STANDALONE_MAIN +int main(int argc, char *argv[]) { + ExtractCryo cryo(argv[0]); + return cryo.run(argc, argv); +} +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/engines/cryo/extract_cryo.h new/scummvm-tools-2.2.0/engines/cryo/extract_cryo.h --- old/scummvm-tools-2.1.0/engines/cryo/extract_cryo.h 1970-01-01 01:00:00.000000000 +0100 +++ new/scummvm-tools-2.2.0/engines/cryo/extract_cryo.h 2020-09-13 23:18:34.000000000 +0200 @@ -0,0 +1,53 @@ +/* ScummVM Tools + * + * ScummVM Tools is the legal property of its developers, whose + * names are too numerous to list here. Please refer to the + * COPYRIGHT file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef EXTRACT_CRYO_H +#define EXTRACT_CRYO_H + +#include "tool.h" +#include "common/array.h" + +struct DATEntry { + char filename[16]; + uint32 size; + uint32 offset; + char flag; +}; + +#define DATIterator Common::Array<DATEntry *>::iterator + +class ExtractCryo : public Tool { +public: + ExtractCryo(const std::string &name = "extract_cryo"); + + virtual void execute(); + + virtual InspectionMatch inspectInput(const Common::Filename &filename); + +protected: + bool openDAT(Common::Filename &filename); + + Common::File _datFile; + + Common::Array<DATEntry *> _dir; +}; + +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/engines/hdb/extract_hdb.h new/scummvm-tools-2.2.0/engines/hdb/extract_hdb.h --- old/scummvm-tools-2.1.0/engines/hdb/extract_hdb.h 2019-10-04 23:44:09.000000000 +0200 +++ new/scummvm-tools-2.2.0/engines/hdb/extract_hdb.h 2020-09-13 23:18:34.000000000 +0200 @@ -40,7 +40,7 @@ char filename[64]; // filename int32 offset; // offset in MSD file of data int32 length; // compressed length of data - int32 ulength; // uncompressed length + uint32 ulength; // uncompressed length DataType type; // type of data }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/engines/kyra/kyra_ins.cpp new/scummvm-tools-2.2.0/engines/kyra/kyra_ins.cpp --- old/scummvm-tools-2.1.0/engines/kyra/kyra_ins.cpp 2019-10-04 23:44:09.000000000 +0200 +++ new/scummvm-tools-2.2.0/engines/kyra/kyra_ins.cpp 2020-09-13 23:18:34.000000000 +0200 @@ -316,7 +316,7 @@ void FileExpander::generateTables(uint8 srcIndex, uint8 dstIndex, uint8 dstIndex2, int cnt) { const uint8 *tbl1 = _tables[srcIndex]; uint8 *tbl2 = _tables[dstIndex]; - const uint8 *tbl3 = dstIndex2 == 0xff ? 0 : _tables[dstIndex2]; + uint8 *tbl3 = dstIndex2 == 0xff ? 0 : _tables[dstIndex2]; if (!cnt) return; @@ -460,7 +460,6 @@ bool startFile = true; _list = new Archive; - memset(_list, 0, sizeof(Archive)); Archive *newArchive = _list; for (int8 currentFile = 1; currentFile; currentFile++) { @@ -505,7 +504,6 @@ newArchive->next = new Archive; newArchive = newArchive->next; - memset(newArchive, 0, sizeof(Archive)); currentFile = -1; } else { pos = 0; @@ -518,7 +516,6 @@ newArchive->next = new Archive; newArchive = newArchive->next; - memset(newArchive, 0, sizeof(Archive)); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/engines/kyra/kyra_ins.h new/scummvm-tools-2.2.0/engines/kyra/kyra_ins.h --- old/scummvm-tools-2.1.0/engines/kyra/kyra_ins.h 2019-10-04 23:44:09.000000000 +0200 +++ new/scummvm-tools-2.2.0/engines/kyra/kyra_ins.h 2020-09-13 23:18:34.000000000 +0200 @@ -34,7 +34,7 @@ char _baseFilename[1024]; struct Archive { - Archive() : next(0) {} + Archive() : next(0), firstFile(0), startOffset(0), lastFile(0), endOffset(0), totalSize(0) { memset(filename, 0, sizeof(filename)); } ~Archive() { delete next; next = 0; } char filename[1024]; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/engines/mohawk/utils.cpp new/scummvm-tools-2.2.0/engines/mohawk/utils.cpp --- old/scummvm-tools-2.1.0/engines/mohawk/utils.cpp 2019-10-04 23:44:09.000000000 +0200 +++ new/scummvm-tools-2.2.0/engines/mohawk/utils.cpp 2020-09-13 23:18:34.000000000 +0200 @@ -49,7 +49,7 @@ } void adjustQuickTimeAtomOffsets(Common::File *src, uint32 parentSize, int32 offset, Common::File *outputFile) { - static const int kAtomHeaderSize = sizeof(uint32) + sizeof(uint32); // size, type + static const uint32 kAtomHeaderSize = sizeof(uint32) + sizeof(uint32); // size, type uint32 totalSize = 0; while (totalSize + kAtomHeaderSize < parentSize) { @@ -92,4 +92,4 @@ if (totalSize != parentSize) error("Unexpected position in atom %d (expected %d)", totalSize, parentSize); -} \ No newline at end of file +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/engines/prince/deprince.cpp new/scummvm-tools-2.2.0/engines/prince/deprince.cpp --- old/scummvm-tools-2.1.0/engines/prince/deprince.cpp 2019-10-04 23:44:09.000000000 +0200 +++ new/scummvm-tools-2.2.0/engines/prince/deprince.cpp 2020-09-13 23:18:34.000000000 +0200 @@ -825,7 +825,7 @@ int nlabel = 1; // Heuristics to decompile the rest - for (int i = 0; i < dataLen; i++) { + for (uint32 i = 0; i < dataLen; i++) { if (!dataMark[i]) { if (i > 53000 && i < 124348 && READ_LE_UINT16(&data[i]) < 244) { sprintf(buf, "unused%d", (modeRenum ? nlabel : i)); @@ -966,7 +966,7 @@ for (const char **p = pref; *p; p++) { int nn = 1; - for (int i = 0; i < dataLen; i++) { + for (uint32 i = 0; i < dataLen; i++) { if (!labels[i].empty() && labels[i].hasPrefix(*p)) { sprintf(buf, "%s%d", *p, nn); labels[i] = buf; @@ -981,7 +981,7 @@ nlabel = 1; - for (int i = 0; i < dataLen; i++) { + for (uint32 i = 0; i < dataLen; i++) { if (!labels[i].empty() && !labels[i].hasPrefix("backanim")) { if (inDB) { printf("\n\n"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/engines/prince/extract_prince.cpp new/scummvm-tools-2.2.0/engines/prince/extract_prince.cpp --- old/scummvm-tools-2.1.0/engines/prince/extract_prince.cpp 2019-10-04 23:44:09.000000000 +0200 +++ new/scummvm-tools-2.2.0/engines/prince/extract_prince.cpp 2020-09-13 23:18:34.000000000 +0200 @@ -204,9 +204,8 @@ mobName += c; namePointer++; } - if (mobName.size()) { - _fFiles.print("%s - ", mobName.c_str()); - } + + _fFiles.print("%s - ", mobName.c_str()); byte *examPointer = fileData._fileTable + examTextOffset; mobExamText.clear(); @@ -235,9 +234,8 @@ } }; } - if (mobName.size()) { - _fFiles.print("\n"); - } + _fFiles.print("\n"); + streamPos += kMobsStructSize; } free(fileData._fileTable); @@ -441,9 +439,9 @@ stringCurrOff += 2; if (off) { line = talkTxt + off; - dialogBoxAddr[dialogBox] = line; - dialogBox++; } + dialogBoxAddr[dialogBox] = line; + dialogBox++; } stringCurrOff += 2; @@ -452,9 +450,9 @@ stringCurrOff += 2; if (off) { line = talkTxt + off; - dialogOptAddr[dialogOpt] = line; - dialogOpt++; } + dialogOptAddr[dialogOpt] = line; + dialogOpt++; } _fFiles.print("@DIALOGBOX_LINES:\n"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/engines/prince/gen-translations.sh new/scummvm-tools-2.2.0/engines/prince/gen-translations.sh --- old/scummvm-tools-2.1.0/engines/prince/gen-translations.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/scummvm-tools-2.2.0/engines/prince/gen-translations.sh 2020-09-13 23:18:34.000000000 +0200 @@ -0,0 +1,6 @@ +#! /bin/bash + +cp -v ../../../scummvm/devtools/create_prince/en.po . +perl po-parse.pl en en.po +../../scummvm-tools-cli --tool pack_prince . +cp -v prince_translation.dat ../../../scummvm/dists/engine-data/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/engines/prince/pack_prince.cpp new/scummvm-tools-2.2.0/engines/prince/pack_prince.cpp --- old/scummvm-tools-2.1.0/engines/prince/pack_prince.cpp 2019-10-04 23:44:09.000000000 +0200 +++ new/scummvm-tools-2.2.0/engines/prince/pack_prince.cpp 2020-09-13 23:18:34.000000000 +0200 @@ -20,6 +20,7 @@ */ #include <string.h> +#include <time.h> #include "pack_prince.h" #include "common/endian.h" @@ -64,6 +65,13 @@ _fFiles.writeUint32LE(0); // and size of files } + time_t theTime; + + time(&theTime); + char *generationDate = asctime(gmtime(&theTime)); + + _fFiles.print("\nv1.0\n%s\n", generationDate); + printf("Packing The Prince and the Coward text data...\n"); filesInfo[fileNr]._offset = _fFiles.pos(); @@ -144,16 +152,16 @@ // Header test byte c; std::string name, examTxt; - while ((c = _databank.readByte()) != '\r') { - name += c; + while ((c = _databank.readByte()) != '\n') { + if (c != '\r') + name += c; } 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' + while ((c = _databank.readByte()) != '\n'); // Loading to array: const int kVariaTxtSize = 6000; @@ -175,7 +183,10 @@ // Text: newVariaTxt._txt.clear(); - while ((c = _databank.readByte()) != '\r') { + while ((c = _databank.readByte()) != '\n') { + if (c == '\r') + continue; + c = correctPolishLetter(c); // temporary if (c == '|') { c = 10; @@ -186,8 +197,6 @@ // Set VariaTxt in array variaTxtList[id]._txt = newVariaTxt._txt; - // Skip '\n' and test eof - _databank.readByte(); if ((uint)_databank.pos() == fileSize) { break; } @@ -222,8 +231,9 @@ // Header test byte c; std::string name, examTxt; - while ((c = _databank.readByte()) != '\r') { - name += c; + while ((c = _databank.readByte()) != '\n') { + if (c != '\r') + name += c; } if (name.compare("invtxt.dat")) { error("Wrong header in invtxt.txt"); @@ -257,7 +267,10 @@ _databank.readByte(); // skip second space // Exam text: - while ((c = _databank.readByte()) != '\r') { + while ((c = _databank.readByte()) != '\n') { + if (c == '\r') + continue; + c = correctPolishLetter(c); // temporary if (c == '|') { c = 10; @@ -268,8 +281,6 @@ // Add new item to list invTxtList[id] = newInvTxt; - // Skip '\n' and test eof - _databank.readByte(); if ((uint)_databank.pos() == fileSize) { break; } else { @@ -314,13 +325,13 @@ // Header test byte c; std::string line; - while ((c = _databank.readByte()) != '\r') { - line += c; + while ((c = _databank.readByte()) != '\n') { + if (c != '\r') + line += c; } if (line.compare("credits.dat")) { error("Wrong header in credits.txt"); } - _databank.readByte(); // skip '\n' // Packing: while (1) { @@ -355,22 +366,24 @@ // Header test byte c; std::string line; - while ((c = idsFile.readByte()) != '\r') { - line += c; + while ((c = idsFile.readByte()) != '\n') { + if (c != '\r') + line += c; } if (line.compare("talktxt_ids")) { error("Wrong header in talktxt_ids.txt"); } - idsFile.readByte(); // skip '\n' // IDs loading for (int i = 0; i < kSetStringValues; i++) { int value = 0; - while ((c = idsFile.readByte()) != '\r') { + while ((c = idsFile.readByte()) != '\n') { + if (c == '\r') + continue; + value *= 10; value += c - 48; } - idsFile.readByte(); // skip '\n' setStringIdArray[i] = value; } idsFile.close(); @@ -381,13 +394,13 @@ // Header test line.clear(); - while ((c = _databank.readByte()) != '\r') { - line += c; + while ((c = _databank.readByte()) != '\n') { + if (c != '\r') + line += c; } if (line.compare("talktxt.dat")) { error("Wrong header in talktxt.txt"); } - _databank.readByte(); // skip '\n' // Start pos of talkTxt file for later offset setting int startTalkTxtPos = _fFiles.pos(); @@ -405,10 +418,10 @@ while (1) { line.clear(); - while ((c = _databank.readByte()) != '\r') { - line += c; + while ((c = _databank.readByte()) != '\n') { + if (c != '\r') + line += c; } - _databank.readByte(); // skip '\n' for (int i = 0; i < kSetStringValues; i++) { if (id == setStringIdArray[i]) { @@ -453,10 +466,10 @@ while (1) { // Special dialog data line.clear(); - while ((c = _databank.readByte()) != '\r') { - line += c; + while ((c = _databank.readByte()) != '\n') { + if (c != '\r') + line += c; } - _databank.readByte(); // skip '\n' if (!line.compare("#HERO")) { tempTalkBeforeBox._dialogData = 1; @@ -476,7 +489,10 @@ // Line of text tempTalkBeforeBox._txt.clear(); - while ((c = _databank.readByte()) != '\r') { + while ((c = _databank.readByte()) != '\n') { + if (c == '\r') + continue; + c = correctPolishLetter(c); // temporary if (c == '|') { c = 10; @@ -485,7 +501,6 @@ } c = 0; tempTalkBeforeBox._txt += c; - _databank.readByte(); // skip '\n' beforeDialogBoxArray.push_back(tempTalkBeforeBox); } @@ -520,16 +535,21 @@ // Text number int textNr = 0; - while ((c = _databank.readByte()) != '\r') { + while ((c = _databank.readByte()) != '\n') { + if (c == '\r') + continue; + textNr *= 10; textNr += c - 48; } tempDialogBoxLine._dialogData = textNr; - _databank.readByte(); // skip '\n' // Line of text tempDialogBoxLine._txt.clear(); - while ((c = _databank.readByte()) != '\r') { + while ((c = _databank.readByte()) != '\n') { + if (c == '\r') + continue; + c = correctPolishLetter(c); // temporary if (c == '|') { c = 10; @@ -538,7 +558,6 @@ } c = 0; tempDialogBoxLine._txt += c; - _databank.readByte(); // skip '\n' allDialogBoxesArray[dbNr].push_back(tempDialogBoxLine); } @@ -559,12 +578,12 @@ while (1) { // Special dialog data line.clear(); - while ((c = _databank.readByte()) != '\r' && c != ' ') { - line += c; + while ((c = _databank.readByte()) != '\n' && c != ' ') { + if (c != '\r') + line += c; } // Check if #END if (!line.compare("#END")) { - _databank.readByte(); // skip '\n' break; } if (!line.compare("#HERO")) { @@ -576,14 +595,16 @@ } else if (!line.compare("#PAUSE")) { tempDialogOptionsLine._dialogData = 254; tempDialogOptionsLine._txt.clear(); - _databank.readByte(); // skip '\n' allDialogOptionsArray[dbOptNr].push_back(tempDialogOptionsLine); continue; } else { if (!line.compare("#ENABLE")) { // 0 - 15 tempDialogOptionsLine._dialogData = 240; uint8 value = 0; - while ((c = _databank.readByte()) != '\r') { + while ((c = _databank.readByte()) != '\n') { + if (c == '\r') + continue; + value *= 10; value += c - 48; } @@ -603,16 +624,16 @@ tempDialogOptionsLine._txt += _databank.readByte() - 48; _databank.readByte(); // skip '\r' } - _databank.readByte(); // skip '\n' allDialogOptionsArray[dbOptNr].push_back(tempDialogOptionsLine); continue; } - _databank.readByte(); // skip '\n' - // Line of text tempDialogOptionsLine._txt.clear(); - while ((c = _databank.readByte()) != '\r') { + while ((c = _databank.readByte()) != '\n') { + if (c == '\r') + continue; + c = correctPolishLetter(c); // temporary if (c == '|') { c = 10; @@ -621,16 +642,15 @@ } c = 0; tempDialogOptionsLine._txt += c; - _databank.readByte(); // skip '\n' allDialogOptionsArray[dbOptNr].push_back(tempDialogOptionsLine); } dbOptNr++; // Check if #ENDEND, skip @DIALOG_OPT %d line.clear(); - while ((c = _databank.readByte()) != '\r') { - line += c; + while ((c = _databank.readByte()) != '\n') { + if (c != '\r') + line += c; } - _databank.readByte(); // skip '\n' if (!line.compare("#ENDEND")) { break; } @@ -713,10 +733,10 @@ // Special dialog data line.clear(); - while ((c = _databank.readByte()) != '\r') { - line += c; + while ((c = _databank.readByte()) != '\n') { + if (c != '\r') + line += c; } - _databank.readByte(); // skip '\n' if (!line.compare("#HERO")) { tempNormalLine._dialogData = 1; @@ -733,7 +753,7 @@ break; } else { if (line[0] == '#') { - printf("UNKNOWN pragma: %s", line.c_str()); + printf("UNKNOWN pragma: %s\n", line.c_str()); break; } else { tempNormalLine._txt = line; @@ -746,7 +766,10 @@ if (havePragma) { // Line of text tempNormalLine._txt.clear(); - while ((c = _databank.readByte()) != '\r') { + while ((c = _databank.readByte()) != '\n') { + if (c == '\r') + continue; + c = correctPolishLetter(c); // temporary if (c == '|') { c = 10; @@ -755,7 +778,6 @@ } c = 0; tempNormalLine._txt += c; - _databank.readByte(); // skip '\n' } normalLinesArray.push_back(tempNormalLine); @@ -778,13 +800,13 @@ // Header test byte c; std::string name, examTxt; - while ((c = _databank.readByte()) != '\r') { - name += c; + while ((c = _databank.readByte()) != '\n') { + if (c != '\r') + name += c; } if (name.compare("mob.lst")) { error("Wrong header in mob.txt"); } - _databank.readByte(); // skip '\n' // Skip comment until first location nr while ((c = _databank.readByte()) != '\n'); @@ -809,16 +831,16 @@ } // Test if end of location - next number - if ((c = _databank.readByte()) > 47 && c < 58) { + if ((c = _databank.readByte()) >= '0' && c <= '9') { // Set location nr: - nr = c - 48; + nr = c - '0'; while ((c = _databank.readByte()) != '.') { nr *= 10; - nr += c - 48; + nr += c - '0'; } nr--; - _databank.readByte(); // skip '\r' - _databank.readByte(); // skip '\n' + if (_databank.readByte() == '\r') // skip '\r' + _databank.readByte(); // skip '\n' } else { c = correctPolishLetter(c); // temporary newMob._name += c; // first letter of name @@ -830,12 +852,16 @@ } // No mobs in this location - if ((c = _databank.readByte()) > 47 && c < 58) { + if ((c = _databank.readByte()) >= '0' && c <= '9') { _databank.seek(-1, SEEK_CUR); continue; } else { - c = correctPolishLetter(c); // temporary - newMob._name += c; + if (c == '-') { + _databank.seek(-1, SEEK_CUR); + } else { + c = correctPolishLetter(c); // temporary + newMob._name += c; + } } // Name: @@ -844,10 +870,14 @@ newMob._name += c; } newMob._name.erase(newMob._name.size() - 1); // remove first space - _databank.readByte(); // skip second space + if (_databank.readByte() != ' ') // skip second space + _databank.seek(-1, SEEK_CUR); // Exam text: - while ((c = _databank.readByte()) != '\r') { + while ((c = _databank.readByte()) != '\n') { + if (c == '\r') + continue; + c = correctPolishLetter(c); // temporary if (c == '|') { c = 10; @@ -863,9 +893,6 @@ newMob._examTxt += c; } - // Skip '\n' - _databank.readByte(); - // Add new item to list allLocations[nr].push_back(newMob); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/engines/prince/po-parse.pl new/scummvm-tools-2.2.0/engines/prince/po-parse.pl --- old/scummvm-tools-2.1.0/engines/prince/po-parse.pl 2019-10-04 23:44:09.000000000 +0200 +++ new/scummvm-tools-2.2.0/engines/prince/po-parse.pl 2020-09-13 23:18:34.000000000 +0200 @@ -9,6 +9,8 @@ sub process_mob($); sub process_credits($); sub process_talk($); +sub process_talktxt_ids($); +sub convert_utf($$); use open qw/:std :utf8/; @@ -24,7 +26,9 @@ my $seenheader = 0; my $inmsgid = 0; +my $inmsgstr = 0; our %data; +our %data1; open IN, $ARGV[1]; @@ -37,6 +41,8 @@ $seenheader = 1; + $inmsgid = $inmsgstr = 0; + next; } @@ -45,6 +51,14 @@ next; } + if (/^msgstr ""$/) { + $inmsgid = 0; + $inmsgstr = 1; + next; + } + + $_ = convert_utf $lang, $_; + if (/^msgid (.*)$/) { my $s = $1; @@ -55,35 +69,75 @@ $inmsgid = 0; } + if (/^msgstr (.*)$/) { + my $s = $1; + + $s =~ s/(^")|("$)//g; + + $data1{$fname}{$idx1} = $s; + + $inmsgstr = 0; + } + if (/^"(.*)"$/) { if ($inmsgid) { $data{$fname}{$idx1} .= $1; + } elsif ($inmsgstr) { + $data1{$fname}{$idx1} .= $1; } } +} - if (/^msgstr/) { - $inmsgid = 0; +for my $f (keys %data) { + for my $k (keys %{$data{$f}}) { + if (not exists $data1{$f}{$k}) { + warn "Missing msgstr $f:$k"; + } else { + my $pref1; + my $pref2; + ($pref1) = ($data{$f}{$k} =~ /^([P#HEROT0-9\$]+:)/); + ($pref2) = ($data1{$f}{$k} =~ /^([P#HEROT0-9\$]+:)/); + + if ($pref1 cmp $pref2) { + warn "Incorrect prefix in $f:$k: $pref1 != $pref2"; + } + + ($pref1) = ($data{$f}{$k} =~ /([#EDBXF0-9]+)$/); + ($pref2) = ($data1{$f}{$k} =~ /([#EDBXF0-9]+)$/); + + if ($pref1 cmp $pref2) { + warn "Incorrect postfix in $f:$k: $pref1 != $pref2"; + } + } } } -process_inv "invtxt.txt.out1"; -process_varia "variatxt.txt.out1"; -process_mob "mob.txt.out1"; -process_credits "credits.txt.out1"; -process_talk "talktxt.txt.out1"; +process_inv "invtxt.txt"; +process_varia "variatxt.txt"; +process_mob "mob.txt"; +process_credits "credits.txt"; +process_talk "talktxt.txt"; +process_talktxt_ids "talktxt_ids.txt"; exit; +sub convert_utf($$) { + my $lang = shift; + my $s = shift; + + return $s; +} + sub process_inv($) { my $file = shift; open(*OUT, ">$file") or die "Cannot open file $file: $!"; - print OUT "invtxt.dat\n"; + print OUT "invtxt.dat\nitemNr. name - exam text\n"; - for my $n (sort {$a<=>$b} keys $data{'invtxt.txt'}) { - print OUT "$n. $data{'invtxt.txt'}{$n}\n"; + for my $n (sort {$a<=>$b} keys $data1{'invtxt.txt'}) { + print OUT "$n. $data1{'invtxt.txt'}{$n}\n"; } close OUT; @@ -94,10 +148,10 @@ open(*OUT, ">$file") or die "Cannot open file $file: $!"; - print OUT "variatxt.dat\n"; + print OUT "variatxt.dat\nstringId. string\n"; - for my $n (sort {$a<=>$b} keys $data{'variatxt.txt'}) { - print OUT "$n. $data{'variatxt.txt'}{$n}\n"; + for my $n (sort {$a<=>$b} keys $data1{'variatxt.txt'}) { + print OUT "$n. $data1{'variatxt.txt'}{$n}\n"; } close OUT; @@ -108,11 +162,11 @@ open(*OUT, ">$file") or die "Cannot open file $file: $!"; - print OUT "mob.lst\n"; + print OUT "mob.lst\nmob_name - exam text\n1.\n"; my $pn = 0; - for my $n (sort {$a<=>$b} keys $data{'mob.lst'}) { + for my $n (sort {$a<=>$b} keys $data1{'mob.lst'}) { my $p1 = int($n / 1000); if ($p1 != $pn) { @@ -123,7 +177,7 @@ } $pn = $p1; } - print OUT "$data{'mob.lst'}{$n}\n"; + print OUT "$data1{'mob.lst'}{$n}\n"; } for my $i (($pn+1)..61) { @@ -133,22 +187,6 @@ close OUT; } -sub process_credits($) { - my $file = shift; - - open(*OUT, ">$file") or die "Cannot open file $file: $!"; - - print OUT "credits.dat\n"; - - for my $n (sort {$a<=>$b} keys $data{'credits.txt'}) { - $data{'credits.txt'}{$n} =~ s/\\n/\n/g; - - print OUT "$data{'credits.txt'}{$n}"; - } - - close OUT; -} - sub process_talk($) { my $file = shift; @@ -156,10 +194,10 @@ print OUT "talktxt.dat\n"; - for my $f (sort grep /^dialog/, keys %data) { + for my $f (sort grep /^dialog/, keys %data1) { $f =~ /dialog(\d+)/; my $dialog = $1; - my $hasDialog = !!grep { $_ > 100 } keys $data{$f}; + my $hasDialog = !!grep { $_ > 100 } keys $data1{$f}; if ($hasDialog) { print OUT "\@DIALOGBOX_LINES:\n"; @@ -170,8 +208,8 @@ my $seenDialogBox = 0; my $prevBox = -1; - for my $n (sort {$a<=>$b} keys $data{$f}) { - my $s = $data{$f}{$n}; + for my $n (sort {$a<=>$b} keys $data1{$f}) { + my $s = $data1{$f}{$n}; if ($n < 100) { while ($s =~ /^P#/) { print OUT "#PAUSE\n"; @@ -237,3 +275,116 @@ close OUT; } + +sub process_talktxt_ids($) { + my $file = shift; + + my @data = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, ); + + open(*OUT, ">$file") or die "Cannot open file $file: $!"; + + print OUT "talktxt_ids\n"; + + for my $d (@data) { + print OUT "$d\n"; + } + + print OUT "0\n" x (1999 - $#data); + + close OUT; +} + +sub process_credits($) { + my $file = shift; + + open(*OUT, ">$file") or die "Cannot open file $file: $!"; + + $now_string = gmtime; + + print OUT <<EOF; +credits.dat + + + + +GALADOR - THE PRINCE AND THE COWARD +v2.0 - ENGLISH +Built on: $now_string + + + + +# + + + +SCENARIO + +Adrian Chmielarz +Jacek Piekara + + + +# +GRAPHICS AND ANIMATION + +Andrzej Kukuta +Grzegorz Miechowski +Juliusz Gruber +Pawet Piotrowski +Andrzej Mitula +Ireneusz Konior +Pawet Miechowski + +# + + + +PROGRAMMING + +Maciej Marzec + + + + +# + +MUSIC + +Karim Martusewicz + +SOUND EFFECTS + +Adam "Scorpik" Skorupa + + +# + + + +ENGLISH LOCALIZATION + +ShinjiGR +ScummVM Team + + + + +## +EOF + + close OUT; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/gui/main.cpp new/scummvm-tools-2.2.0/gui/main.cpp --- old/scummvm-tools-2.1.0/gui/main.cpp 2019-10-04 23:44:09.000000000 +0200 +++ new/scummvm-tools-2.2.0/gui/main.cpp 2020-09-13 23:18:34.000000000 +0200 @@ -125,7 +125,7 @@ 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-2019")); + wxStaticText *copyrighttext = new wxStaticText(dialog, wxID_ANY, wxT("Copyright ScummVM Team 2009-2020")); copyrighttext->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, wxT("Arial"))); sizer->Add(copyrighttext, wxSizerFlags()); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/internal_version.h new/scummvm-tools-2.2.0/internal_version.h --- old/scummvm-tools-2.1.0/internal_version.h 2019-10-04 23:44:10.000000000 +0200 +++ new/scummvm-tools-2.2.0/internal_version.h 2020-09-13 23:18:34.000000000 +0200 @@ -2,4 +2,4 @@ #define SCUMMVM_TOOLS_SVN_REVISION #endif -#define SCUMMVM_TOOLS_VERSION "2.1.0" SCUMMVM_TOOLS_SVN_REVISION +#define SCUMMVM_TOOLS_VERSION "2.2.0" SCUMMVM_TOOLS_SVN_REVISION diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/scummvm-tools-2.1.0/tools.cpp new/scummvm-tools-2.2.0/tools.cpp --- old/scummvm-tools-2.1.0/tools.cpp 2019-10-04 23:44:10.000000000 +0200 +++ new/scummvm-tools-2.2.0/tools.cpp 2020-09-13 23:18:34.000000000 +0200 @@ -52,6 +52,7 @@ #include "engines/cge/pack_cge.h" #include "engines/cine/extract_cine.h" #include "engines/cruise/extract_cruise_pc.h" +#include "engines/cryo/extract_cryo.h" #include "engines/gob/extract_gob_stk.h" #include "engines/gob/extract_fascination_cd.h" #include "engines/hdb/extract_hdb.h" @@ -95,6 +96,7 @@ _tools.push_back(new PackCge()); _tools.push_back(new ExtractCine()); _tools.push_back(new ExtractCruisePC()); + _tools.push_back(new ExtractCryo()); _tools.push_back(new ExtractGobStk()); _tools.push_back(new ExtractFascinationCD()); _tools.push_back(new ExtractHDB());
