aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS3
-rw-r--r--NEWS10
-rw-r--r--audio/decoders/mp3.cpp15
-rw-r--r--backends/platform/psp/README.PSP2
-rw-r--r--base/internal_version.h2
-rwxr-xr-xconfigure19
-rw-r--r--devtools/create_kyradat/games.cpp1
-rw-r--r--devtools/create_kyradat/resources.cpp1
-rw-r--r--devtools/create_kyradat/resources/lok_dos_oldfloppy.h13
-rwxr-xr-xdevtools/credits.pl4
-rwxr-xr-xdevtools/update-version.pl1
-rw-r--r--dists/android/AndroidManifest.xml56
-rw-r--r--dists/android/AndroidManifest.xml.in54
-rw-r--r--dists/debian/changelog161
-rw-r--r--dists/debian/clean3
-rw-r--r--dists/debian/compat2
-rw-r--r--dists/debian/control59
-rw-r--r--dists/debian/copyright414
-rw-r--r--dists/debian/gbp.conf11
-rwxr-xr-xdists/debian/rules65
-rw-r--r--dists/debian/scummvm-data.install8
-rw-r--r--dists/debian/scummvm.dirs3
-rw-r--r--dists/debian/scummvm.docs1
-rw-r--r--dists/debian/scummvm.install2
-rw-r--r--dists/debian/source/format1
-rw-r--r--dists/debian/source/options4
-rw-r--r--dists/debian/watch17
-rw-r--r--dists/engine-data/kyra.datbin496596 -> 496676 bytes
-rw-r--r--dists/gph/README-GPH2
-rw-r--r--dists/gph/scummvm.ini2
-rw-r--r--dists/ios7/Info.plist4
-rw-r--r--dists/iphone/Info.plist4
-rw-r--r--dists/irix/scummvm.spec2
-rw-r--r--dists/macosx/Info.plist6
-rw-r--r--dists/macosx/dockplugin/Info.plist4
-rw-r--r--dists/openpandora/PXML.xml8
-rw-r--r--dists/openpandora/README-OPENPANDORA2
-rw-r--r--dists/openpandora/README-PND.txt2
-rw-r--r--dists/openpandora/index.html4
-rw-r--r--dists/redhat/README35
-rw-r--r--dists/redhat/scummvm-tools.spec40
-rw-r--r--dists/redhat/scummvm-tools.spec.in42
-rw-r--r--dists/redhat/scummvm.spec69
-rw-r--r--dists/redhat/scummvm.spec.in67
-rw-r--r--dists/riscos/!Boot,feb2
-rw-r--r--dists/scummvm.rc8
-rwxr-xr-xdists/slackware/scummvm.SlackBuild2
-rw-r--r--dists/wii/meta.xml2
-rw-r--r--doc/de/NEUES2
-rw-r--r--engines/drascula/animation.cpp2
-rw-r--r--engines/drascula/rooms.cpp83
-rw-r--r--engines/fullpipe/gfx.h2
-rw-r--r--engines/fullpipe/inventory.cpp4
-rw-r--r--engines/mads/nebular/nebular_scenes3.cpp3
-rw-r--r--engines/prince/detection.cpp12
-rw-r--r--engines/sci/decompressor.cpp2
-rw-r--r--engines/sci/detection_tables.h222
-rw-r--r--engines/sci/graphics/cursor.cpp2
-rw-r--r--engines/sci/resource.cpp2
-rw-r--r--engines/tinsel/object.h2
-rw-r--r--engines/tsage/core.cpp2
-rw-r--r--engines/tsage/ringworld2/ringworld2_logic.cpp8
-rw-r--r--engines/tsage/ringworld2/ringworld2_scenes0.cpp1
-rw-r--r--engines/tsage/saveload.cpp14
-rw-r--r--engines/tsage/saveload.h3
-rw-r--r--engines/tsage/sound.cpp35
-rw-r--r--engines/tsage/sound.h5
-rw-r--r--engines/tsage/user_interface.cpp2
-rw-r--r--engines/xeen/character.cpp17
-rw-r--r--engines/xeen/dialogs.cpp2
-rw-r--r--engines/xeen/dialogs_char_info.cpp2
-rw-r--r--engines/xeen/dialogs_items.cpp11
-rw-r--r--engines/xeen/events.cpp16
-rw-r--r--engines/xeen/events.h2
-rw-r--r--engines/xeen/interface.cpp12
-rw-r--r--engines/xeen/interface.h1
-rw-r--r--engines/xeen/map.cpp46
-rw-r--r--engines/xeen/music.cpp4
-rw-r--r--engines/xeen/music.h1
-rw-r--r--engines/xeen/party.cpp18
-rw-r--r--engines/xeen/resources.cpp13
-rw-r--r--engines/xeen/resources.h4
-rw-r--r--engines/xeen/scripts.cpp730
-rw-r--r--engines/xeen/scripts.h298
-rw-r--r--engines/xeen/sprites.cpp4
-rw-r--r--engines/xeen/town.cpp126
-rw-r--r--engines/xeen/town.h12
-rw-r--r--gui/credits.h3
-rw-r--r--gui/themes/translations.datbin703849 -> 708087 bytes
-rw-r--r--po/be_BY.po2
-rw-r--r--po/ca_ES.po2
-rw-r--r--po/cs_CZ.po14
-rw-r--r--po/da_DK.po2
-rw-r--r--po/de_DE.po6
-rw-r--r--po/el.po2
-rw-r--r--po/es_ES.po2
-rw-r--r--po/eu.po2
-rw-r--r--po/fi_FI.po2
-rw-r--r--po/fr_FR.po2
-rw-r--r--po/gl_ES.po202
-rw-r--r--po/hu_HU.po2
-rw-r--r--po/it_IT.po2
-rw-r--r--po/nb_NO.po2
-rw-r--r--po/nl_NL.po2
-rw-r--r--po/nn_NO.po2
-rw-r--r--po/pl_PL.po2
-rw-r--r--po/pt_BR.po2
-rw-r--r--po/pt_PT.po2
-rw-r--r--po/ru_RU.po2
-rw-r--r--po/scummvm.pot4
-rw-r--r--po/sv_SE.po2
-rw-r--r--po/uk_UA.po2
-rw-r--r--po/zh-Latn_CN.po2
-rw-r--r--snapcraft.yaml2
-rw-r--r--snapcraft.yaml.in63
-rw-r--r--test/common/str.h2
-rw-r--r--test/module.mk7
117 files changed, 2175 insertions, 1134 deletions
diff --git a/AUTHORS b/AUTHORS
index c7a5c839f0..2181ef5cc8 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -486,6 +486,9 @@ Other contributions
OS/2:
Paul Smedley
+ RISC OS:
+ Cameron Cawley
+
SlackWare:
Robert Kelsen
diff --git a/NEWS b/NEWS
index 763e87f124..9c1ce8c6a4 100644
--- a/NEWS
+++ b/NEWS
@@ -1,7 +1,7 @@
For a more comprehensive changelog of the latest experimental code, see:
https://github.com/scummvm/scummvm/commits/
-1.10.0 (YYYY-MM-DD)
+2.0.0 (YYYY-MM-DD)
New Games:
- Added support for Full Pipe.
- Added support for Hi-Res Adventure #3: Cranston Manor.
@@ -57,6 +57,9 @@ For a more comprehensive changelog of the latest experimental code, see:
MADE:
- Fixed badly distorted sound (bug #9753).
+ MADS:
+ - Fix rare crash that can happen when Rex is first locked up
+
MOHAWK:
- Added patch to the original data files to correct the vault access
instructions in Myst ME.
@@ -77,6 +80,10 @@ For a more comprehensive changelog of the latest experimental code, see:
This bug is also present when using the original interpreter.
- Fixed various other script bugs.
+ TsAGE:
+ - Display fixes for Return to Ringworld Demo
+ - Fix loading Return to Ringworld savegames with unreferenced dynamic objects
+
1.9.1 (YYYY-MM-DD)
General:
- Added bilinear filtering option for SDL2 fullscreen mode.
@@ -98,6 +105,7 @@ For a more comprehensive changelog of the latest experimental code, see:
Tinsel:
- Fixed some Discworld 2 text/voice not displaying & playing all the way through
+ - Fix crash in in-game save menu when all slots are used with long names
TsAGE:
- Fixed recently introduced bug preventing animations in Return to Ringworld from playing.
diff --git a/audio/decoders/mp3.cpp b/audio/decoders/mp3.cpp
index 93c21b9072..3fd134df41 100644
--- a/audio/decoders/mp3.cpp
+++ b/audio/decoders/mp3.cpp
@@ -119,6 +119,7 @@ public:
// AudioStream API
int readBuffer(int16 *buffer, const int numSamples);
+ bool endOfData() const;
bool endOfStream() const;
// PacketizedAudioStream API
@@ -452,7 +453,10 @@ int PacketizedMP3Stream::readBuffer(int16 *buffer, const int numSamples) {
while (samples < numSamples) {
// Empty? Bail out for now, and mark the stream as ended
if (_queue.empty()) {
- _state = MP3_STATE_EOS;
+ // EOS state is only valid once a packet has been received at least
+ // once
+ if (_state == MP3_STATE_READY)
+ _state = MP3_STATE_EOS;
return samples;
}
@@ -484,12 +488,17 @@ int PacketizedMP3Stream::readBuffer(int16 *buffer, const int numSamples) {
return samples;
}
+bool PacketizedMP3Stream::endOfData() const {
+ Common::StackLock lock(_mutex);
+ return BaseMP3Stream::endOfData();
+}
+
bool PacketizedMP3Stream::endOfStream() const {
+ Common::StackLock lock(_mutex);
+
if (!endOfData())
return false;
- // Lock the mutex
- Common::StackLock lock(_mutex);
if (!_queue.empty())
return false;
diff --git a/backends/platform/psp/README.PSP b/backends/platform/psp/README.PSP
index 46e027f4f7..b2f639af22 100644
--- a/backends/platform/psp/README.PSP
+++ b/backends/platform/psp/README.PSP
@@ -1,4 +1,4 @@
-ScummVM-PSP 1.10.0git README
+ScummVM-PSP 2.0.0git README
==============================================================================
Installation
diff --git a/base/internal_version.h b/base/internal_version.h
index c46922da57..63b63e5484 100644
--- a/base/internal_version.h
+++ b/base/internal_version.h
@@ -16,4 +16,4 @@
#define SCUMMVM_REVISION
#endif
-#define SCUMMVM_VERSION "1.10.0git" SCUMMVM_REVISION
+#define SCUMMVM_VERSION "2.0.0git" SCUMMVM_REVISION
diff --git a/configure b/configure
index cd79adfce6..a8716ac5c3 100755
--- a/configure
+++ b/configure
@@ -2247,20 +2247,11 @@ echo_n "Checking host CPU architecture... "
case $_host_cpu in
arm*)
echo "ARM"
- case $_host_alias in
- # Apple's as does not support the syntax we use in our ARM
- # assembly. We simply do not enable it.
- arm-apple-darwin9)
- ;;
- arm-apple-darwin10)
- ;;
- arm-apple-darwin11)
- ;;
- # psvita does not like the asm code...
- arm-vita-eabi)
+ case $_host in
+ openpandora)
+ define_in_config_if_yes yes 'USE_ARM_NEON_ASPECT_CORRECTOR'
;;
-
- *)
+ android | android-arm | androidsdl-armeabi | arm-*riscos | caanoo | ds | gp2x | gp2xwiz | maemo | tizen | wince)
define_in_config_if_yes yes 'USE_ARM_SCALER_ASM'
# FIXME: The following feature exhibits a bug. It produces distorted
# sound since 9003ce517ff9906b0288f9f7c02197fd091d4554. The ARM
@@ -3156,7 +3147,6 @@ if test -n "$_host"; then
_optimization_level=-O3
fi
- define_in_config_if_yes yes 'USE_ARM_NEON_ASPECT_CORRECTOR'
append_var CXXFLAGS "-march=armv7-a"
append_var CXXFLAGS "-mtune=cortex-a8"
append_var CXXFLAGS "-mfloat-abi=softfp"
@@ -3263,7 +3253,6 @@ if test -n "$_host"; then
_unix=yes
_backend="tizen"
_port_mk="backends/platform/tizen/tizen.mk"
- _arm_asm=yes
_build_scalers=no
_seq_midi=no
_mt32emu=no
diff --git a/devtools/create_kyradat/games.cpp b/devtools/create_kyradat/games.cpp
index e6f0b38c45..0c151ec7cb 100644
--- a/devtools/create_kyradat/games.cpp
+++ b/devtools/create_kyradat/games.cpp
@@ -287,6 +287,7 @@ const int kyra1FloppyOldNeed[] = {
k1SpecialPalette30,
k1SpecialPalette31,
k1SpecialPalette32,
+ k1SpecialPalette33,
k1PutDownString,
k1WaitAmuletString,
k1BlackJewelString,
diff --git a/devtools/create_kyradat/resources.cpp b/devtools/create_kyradat/resources.cpp
index 246811f821..8347279f13 100644
--- a/devtools/create_kyradat/resources.cpp
+++ b/devtools/create_kyradat/resources.cpp
@@ -442,6 +442,7 @@ static const ResourceProvider resourceProviders[] = {
{ k1SpecialPalette30, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette30DOSOldFloppyProvider },
{ k1SpecialPalette31, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette31DOSOldFloppyProvider },
{ k1SpecialPalette32, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette32DOSOldFloppyProvider },
+ { k1SpecialPalette33, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette33DOSOldFloppyProvider },
{ k1PutDownString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1PutDownStringDOSOldFloppyRussianProvider },
{ k1WaitAmuletString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1WaitAmuletStringDOSOldFloppyRussianProvider },
{ k1BlackJewelString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1BlackJewelStringDOSOldFloppyRussianProvider },
diff --git a/devtools/create_kyradat/resources/lok_dos_oldfloppy.h b/devtools/create_kyradat/resources/lok_dos_oldfloppy.h
index 62b1530941..68c8a588e8 100644
--- a/devtools/create_kyradat/resources/lok_dos_oldfloppy.h
+++ b/devtools/create_kyradat/resources/lok_dos_oldfloppy.h
@@ -1440,6 +1440,19 @@ static const byte k1SpecialPalette32DOSOldFloppy[39] = {
static const ByteProvider k1SpecialPalette32DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette32DOSOldFloppy), k1SpecialPalette32DOSOldFloppy };
+static const byte k1SpecialPalette33DOSOldFloppy[60] = {
+ 0x3F, 0x3D, 0x2F, 0x3F, 0x3D, 0x29, 0x3F, 0x3D,
+ 0x23, 0x3F, 0x3D, 0x1D, 0x3F, 0x3B, 0x17, 0x3F,
+ 0x3B, 0x11, 0x3F, 0x3B, 0x0B, 0x3F, 0x3B, 0x05,
+ 0x3F, 0x3B, 0x00, 0x3D, 0x38, 0x00, 0x3B, 0x34,
+ 0x00, 0x39, 0x33, 0x00, 0x39, 0x30, 0x00, 0x37,
+ 0x2D, 0x00, 0x36, 0x2B, 0x00, 0x34, 0x28, 0x00,
+ 0x33, 0x26, 0x00, 0x32, 0x24, 0x00, 0x30, 0x22,
+ 0x00, 0x2F, 0x20, 0x00
+};
+
+static const ByteProvider k1SpecialPalette33DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette33DOSOldFloppy), k1SpecialPalette33DOSOldFloppy };
+
static const Shape k1Healing1ShapesDOSOldFloppy[22] = {
{ 8, 0, 0, 3, 48, -12, -48 },
{ 8, 3, 0, 3, 48, -12, -48 },
diff --git a/devtools/credits.pl b/devtools/credits.pl
index fcf5602992..e86ea0e854 100755
--- a/devtools/credits.pl
+++ b/devtools/credits.pl
@@ -1058,6 +1058,10 @@ begin_credits("Credits");
add_person("Paul Smedley", "Creeping", "");
end_section();
+ begin_section("RISC OS");
+ add_person("Cameron Cawley", "ccawley2011", "");
+ end_section();
+
begin_section("SlackWare");
add_person("Robert Kelsen", "", "");
end_section();
diff --git a/devtools/update-version.pl b/devtools/update-version.pl
index 0e2879ffd9..75f6f0e7c8 100755
--- a/devtools/update-version.pl
+++ b/devtools/update-version.pl
@@ -51,6 +51,7 @@ my @subs_files = qw(
dists/gph/scummvm.ini
dists/riscos/!Boot,feb
backends/platform/psp/README.PSP
+ snapcraft.yaml
);
my %subs = (
diff --git a/dists/android/AndroidManifest.xml b/dists/android/AndroidManifest.xml
index 208ed62f90..3201fbee7e 100644
--- a/dists/android/AndroidManifest.xml
+++ b/dists/android/AndroidManifest.xml
@@ -1,16 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- NB: android:versionCode needs to be bumped for formal releases -->
+<!-- NB: android:versionCode needs to be bumped for formal releases -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.scummvm.scummvm"
android:versionCode="@ANDROID_VERSIONCODE@"
- android:versionName="1.10.0git"
+ android:versionName="2.0.0git"
android:sharedUserId="org.scummvm.scummvm">
- <!-- This version works on Android 1.5 (SDK 3) and newer, but we
- want Android 2.2 (SDK 8) defaults and features. -->
<uses-sdk android:minSdkVersion="3"
- android:targetSdkVersion="8"/>
+ android:targetSdkVersion="14"/>
+
+ <uses-permission
+ android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+
+ <uses-permission
+ android:name="android.permission.ACCESS_WIFI_STATE"/>
+
+ <uses-feature
+ android:name="android.hardware.wifi"
+ android:required="false"/>
+
+ <uses-feature
+ android:name="android.hardware.screen.landscape"
+ android:required="false"/>
+
+ <uses-feature
+ android:name="android.hardware.touchscreen"
+ android:required="false"/>
+
+ <uses-feature
+ android:name="android.software.leanback"
+ android:required="false"/>
<application
android:label="@string/app_name"
@@ -19,36 +39,16 @@
android:icon="@drawable/scummvm">
<activity android:name=".ScummVMActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
+ android:banner="@drawable/leanback_icon"
android:screenOrientation="landscape"
- android:configChanges="orientation|keyboardHidden"
+ android:configChanges="orientation|keyboardHidden|screenSize"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<category android:name="tv.ouya.intent.category.GAME"/>
- </intent-filter>
- </activity>
- <activity android:name=".ScummVMActivity"
- android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
- android:banner="@drawable/leanback_icon">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
- </intent-filter>
+ </intent-filter>
</activity>
</application>
-
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" android:required="true"/>
-
- <uses-feature android:name="android.hardware.screen.landscape"
- android:required="false" />
-
- <uses-feature android:name="android.hardware.touchscreen"
- android:required="false" />
-
- <uses-feature android:name="android.software.leanback"
- android:required="false" />
-
</manifest>
diff --git a/dists/android/AndroidManifest.xml.in b/dists/android/AndroidManifest.xml.in
index 9601425c74..6cd7601f83 100644
--- a/dists/android/AndroidManifest.xml.in
+++ b/dists/android/AndroidManifest.xml.in
@@ -1,16 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- NB: android:versionCode needs to be bumped for formal releases -->
+<!-- NB: android:versionCode needs to be bumped for formal releases -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.scummvm.scummvm"
android:versionCode="@ANDROID_VERSIONCODE@"
android:versionName="@VERSION@"
android:sharedUserId="org.scummvm.scummvm">
- <!-- This version works on Android 1.5 (SDK 3) and newer, but we
- want Android 2.2 (SDK 8) defaults and features. -->
<uses-sdk android:minSdkVersion="3"
- android:targetSdkVersion="8"/>
+ android:targetSdkVersion="14"/>
+
+ <uses-permission
+ android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+
+ <uses-permission
+ android:name="android.permission.ACCESS_WIFI_STATE"/>
+
+ <uses-feature
+ android:name="android.hardware.wifi"
+ android:required="false"/>
+
+ <uses-feature
+ android:name="android.hardware.screen.landscape"
+ android:required="false"/>
+
+ <uses-feature
+ android:name="android.hardware.touchscreen"
+ android:required="false"/>
+
+ <uses-feature
+ android:name="android.software.leanback"
+ android:required="false"/>
<application
android:label="@string/app_name"
@@ -19,36 +39,16 @@
android:icon="@drawable/scummvm">
<activity android:name=".ScummVMActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
+ android:banner="@drawable/leanback_icon"
android:screenOrientation="landscape"
- android:configChanges="orientation|keyboardHidden"
+ android:configChanges="orientation|keyboardHidden|screenSize"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<category android:name="tv.ouya.intent.category.GAME"/>
- </intent-filter>
- </activity>
- <activity android:name=".ScummVMActivity"
- android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
- android:banner="@drawable/leanback_icon">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
- </intent-filter>
+ </intent-filter>
</activity>
</application>
-
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" android:required="true"/>
-
- <uses-feature android:name="android.hardware.screen.landscape"
- android:required="false" />
-
- <uses-feature android:name="android.hardware.touchscreen"
- android:required="false" />
-
- <uses-feature android:name="android.software.leanback"
- android:required="false" />
-
</manifest>
diff --git a/dists/debian/changelog b/dists/debian/changelog
index 902aa89c9a..8d27a39da2 100644
--- a/dists/debian/changelog
+++ b/dists/debian/changelog
@@ -1,3 +1,164 @@
+scummvm (1.9.0+dfsg-2) unstable; urgency=medium
+
+ * Team upload.
+ * Avoid disabling -Wformat, which causes a build failure with GCC 7.
+ Closes: #871161.
+
+ -- Stephen Kitt <skitt@debian.org> Thu, 10 Aug 2017 12:05:39 +0200
+
+scummvm (1.9.0+dfsg-1) unstable; urgency=medium
+
+ * New upstream release [October 2016].
+ * Removed obsolete "libsdl2.patch".
+ * Removed traces of -dbg package.
+ * Build reproducibly (Closes: #827145)
+ Thanks, Reiner Herrmann.
+
+ -- Dmitry Smirnov <onlyjob@debian.org> Fri, 11 Nov 2016 23:17:07 +1100
+
+scummvm (1.8.1+dfsg-1) unstable; urgency=medium
+
+ * New upstream release [May 2016].
+ * Standards-Version: 3.9.8.
+ * Removed obsolete "format-security.patch".
+ * Build-Depends:
+ + libfreetype6-dev
+ + libpng-dev
+
+ -- Dmitry Smirnov <onlyjob@debian.org> Mon, 06 Jun 2016 00:28:50 +1000
+
+scummvm (1.8.0+dfsg-1) unstable; urgency=low
+
+ * New upstream release [March 2016].
+
+ [ Alexandre Detiste ]
+ * Use HTTPS for Vcs URLs.
+ * Standards-Version: 3.9.7.
+ * Watch "http://scummvm.org/downloads/" for releases.
+
+ [ Dmitry Smirnov ]
+ * Corrected icons installation path (Closes: #778687)
+ * Update watch file to v4; use copyright/Files-Exclided;
+ simplified rules/get-orig-source.
+ * watch: check GitHub for releases.
+ * Removed .menu file.
+ * Fixed in new upstream release 1.8.0:
+ + Spelling mistake in Spanish translation of Lure of the Temptress:
+ "obsevar" -> "observar" has been fixed upstream (Closes: #805215).
+ * clean: remove "config.mk".
+ * Removed obsolete "drop1test.patch".
+ * Switch to libsdl2 (Closes: #807710):
+ + New "libsdl2.patch" to find "sdl2-config";
+ + Build-Depends:
+ - libsdl1.2-dev
+ + libsdl2-dev | libsdl1.2-dev
+ * Added "format-security.patch" to fix FTBFS.
+ * Build with full hardening.
+
+ -- Dmitry Smirnov <onlyjob@debian.org> Tue, 15 Mar 2016 10:07:19 +1100
+
+scummvm (1.7.0+dfsg-2) unstable; urgency=medium
+
+ * Team upload.
+ * Add disable-arm-asm.patch.
+ Fix a crash and segmentation fault on ARM systems by disabling asm
+ optimizations.
+ Thanks to Konstantinos Margaritis <markos@freevec.org> for the report
+ and patch and Vagrant Cascadian for further testing.
+ (Closes: #779029)
+
+ -- Markus Koschany <apo@gambaru.de> Sat, 28 Feb 2015 18:50:52 +0100
+
+scummvm (1.7.0+dfsg-1) unstable; urgency=low
+
+ * New upstream release [July 2014].
+ - remove old/obsolete patches.
+ + added new "drop1test.patch" to disable problematic test.
+ + build with "--disable-eventrecorder" to avoid FTBFS in tests.
+ + added "libjpeg-dev" and "libfaad-dev" to Build-Depends.
+ * Install all arch-independent files (themes, game data, etc.).
+ * Build-time re-compression of "classic" theme.
+ * Added "debian/gbp.conf".
+ * Standards-Version to 3.9.5.
+
+ -- Dmitry Smirnov <onlyjob@debian.org> Sun, 10 Aug 2014 00:50:36 +1000
+
+scummvm (1.6.0+dfsg-3) unstable; urgency=medium
+
+ * Touch "config.mk" before dh_auto_clean to fix FTBFS (Closes: #718164).
+
+ -- Dmitry Smirnov <onlyjob@debian.org> Tue, 30 Jul 2013 17:05:40 +1000
+
+scummvm (1.6.0+dfsg-2) unstable; urgency=low
+
+ * New patches to produce working executables on kFreeBSD and Hurd:
+ + [hurd+kfreebsd] to build on Hurd & kFreeBSD (Closes: #711320);
+ thanks to Petr Salinger.
+ + [posix] to fix FTBFS in timidity on GNU Hurd.
+
+ -- Dmitry Smirnov <onlyjob@debian.org> Fri, 07 Jun 2013 18:40:21 +1000
+
+scummvm (1.6.0+dfsg-1) unstable; urgency=low
+
+ * New upstream release [May 2013].
+ * Added "libtheora-dev" to Build-Depends.
+ * get-orig-source: minor repacking improvement to produce identical
+ archives.
+
+ -- Dmitry Smirnov <onlyjob@debian.org> Sun, 02 Jun 2013 19:09:54 +1000
+
+scummvm (1.5.0+dfsg-1) unstable; urgency=low
+
+ [ Dmitry Smirnov ]
+ * New upstream release [July 2012].
+ * xz compression for .deb files and debian source.
+ * debhelper to version 9.
+ * Standards to 3.9.4.
+ * Built-Using field for scummvm-data to document bundled fonts.
+ * Build-Depends:
+ + alphabetising and sorting.
+ + added "fonts-freefont-ttf" and "zip" to facilitate substitution
+ of font files and theme re-compression.
+ + introduced "autotools_dev".
+ * Added Vcs links.
+ * Tightened relationships with "scummvm-data (= ${source:Version})".
+ * lintianisation: removed tabs from package description.
+ * Added commented scummvm-dbg package.
+ * debian/rules:
+ + optimisation.
+ + enabled parallel build.
+ + increased log verbosity with "--enable-verbose-build".
+ + install upstream changelog.
+ + gracefully handle stripping if -dbg package is
+ (un-)commented in debian/control.
+ + re-compress scummmodern.zip and replace bundled fonts from
+ fonts-freefont-ttf.
+ + added "get-orig-source" target for DFSG-repackaging and removing
+ non-free fonts.
+ + fixed FTBFS on GNU Hurd.
+ * debian/copyright:
+ + to copyright-format-1.0.
+ + audit of upstream copyrights/licenses.
+ * Dropped obsolete patch "debian-changes-1.0.0-1".
+ * Dropped empty directories.
+ * Moved .desktop file to the main package, added breaks/replaces
+ * Added README.source with notes regarding DFSG concerns.
+ * Added debian/watch.
+ * Added myself to Uploaders.
+
+ [ Markus Koschany ]
+ * Update package description. Suggest new ScummVM games Drascula and
+ Lure of the Temptress.
+
+ -- Dmitry Smirnov <onlyjob@debian.org> Sun, 05 May 2013 20:46:54 +1000
+
+scummvm (1.4.1-1) unstable; urgency=low
+
+ * New upstream release
+ * Install translations.dat into scummvm-data
+
+ -- Moritz Muehlenhoff <jmm@debian.org> Sat, 14 Jan 2012 11:39:15 +0100
+
scummvm (1.4.0-1) unstable; urgency=low
* New upstream release
diff --git a/dists/debian/clean b/dists/debian/clean
new file mode 100644
index 0000000000..add6683a6d
--- /dev/null
+++ b/dists/debian/clean
@@ -0,0 +1,3 @@
+gui/themes/scummclassic.zip
+gui/themes/scummmodern.zip
+config.mk
diff --git a/dists/debian/compat b/dists/debian/compat
index 7f8f011eb7..ec635144f6 100644
--- a/dists/debian/compat
+++ b/dists/debian/compat
@@ -1 +1 @@
-7
+9
diff --git a/dists/debian/control b/dists/debian/control
index f101ce3ef8..a1ffa15e82 100644
--- a/dists/debian/control
+++ b/dists/debian/control
@@ -2,15 +2,45 @@ Source: scummvm
Section: games
Priority: optional
Maintainer: Debian Games Team <pkg-games-devel@lists.alioth.debian.org>
-Uploaders: David Weinehall <tao@debian.org>, Moritz Muehlenhoff <jmm@debian.org>
-Build-Depends: debhelper (>= 7.0.50~), nasm [i386], libsdl2-dev, libmad0-dev, libasound2-dev [linux-any], libvorbis-dev, libmpeg2-4-dev, libflac-dev, libz-dev, libfluidsynth-dev, python
-Standards-Version: 3.9.2
+Uploaders: David Weinehall <tao@debian.org>
+ ,Moritz Muehlenhoff <jmm@debian.org>
+ ,Dmitry Smirnov <onlyjob@debian.org>
+Build-Depends: debhelper (>= 9), autotools-dev
+ ,fonts-freefont-ttf
+ ,libasound2-dev [linux-any]
+ ,libfaad-dev
+ ,libflac-dev
+ ,libfluidsynth-dev
+ ,libfreetype6-dev
+ ,libjpeg-dev
+ ,libmad0-dev
+ ,libmpeg2-4-dev
+ ,libpng-dev
+ ,libsdl2-dev | libsdl1.2-dev
+ ,libtheora-dev
+ ,libvorbis-dev
+ ,libz-dev
+ ,nasm [i386]
+ ,python
+ ,zip
+# Cloud integration:
+# ,libsdl2-net-dev
+# ,libcurl4-gnutls-dev
+Standards-Version: 3.9.8
Homepage: http://www.scummvm.org
+Vcs-Git: https://anonscm.debian.org/git/pkg-games/scummvm.git
+Vcs-Browser: https://anonscm.debian.org/cgit/pkg-games/scummvm.git
Package: scummvm
Architecture: any
-Depends: ${shlibs:Depends}, scummvm-data, ${misc:Depends}
-Suggests: fluidsynth | timidity, beneath-a-steel-sky, flight-of-the-amazon-queen
+Depends: ${misc:Depends}, ${shlibs:Depends}, scummvm-data (= ${source:Version})
+Suggests: fluidsynth | timidity
+ ,beneath-a-steel-sky
+ ,drascula
+ ,flight-of-the-amazon-queen
+ ,lure-of-the-temptress
+Replaces: scummvm-data (<< 1.5.0-1)
+Breaks: scummvm-data (<< 1.5.0-1)
Description: engine for several graphical adventure games
ScummVM is a `virtual machine' for several classic graphical
point-and-click adventure games. It is designed to run Adventure Soft's
@@ -21,11 +51,13 @@ Description: engine for several graphical adventure games
list at <http://www.scummvm.org/compatibility.php> for a full list
of supported games.
.
- The game data of two games compatible with ScummVM is included in Debian.
+ The game data of four games compatible with ScummVM is included in Debian.
These are:
.
- - Beneath a Steel Sky (package name: beneath-a-steel-sky)
- - Flight of the Amazon Queen (package name: flight-of-the-amazon-queen)
+ - Beneath a Steel Sky (package: beneath-a-steel-sky)
+ - Drascula: The Vampire Strikes Back (package: drascula)
+ - Flight of the Amazon Queen (package: flight-of-the-amazon-queen)
+ - Lure of the Temptress (package: lure-of-the-temptress)
.
To actually make use of ScummVM, you'll have to install one of these, or
obtain the proprietary game data for another supported game from somewhere
@@ -33,7 +65,8 @@ Description: engine for several graphical adventure games
Package: scummvm-data
Architecture: all
-Depends: ${shlibs:Depends},${misc:Depends}
+Built-Using: ${my:Built-Using}
+Depends: ${misc:Depends}
Replaces: scummvm (<< 1.0.0-3)
Description: engine for several graphical adventure games (data files)
ScummVM is a `virtual machine' for several classic graphical
@@ -45,11 +78,13 @@ Description: engine for several graphical adventure games (data files)
list at <http://www.scummvm.org/compatibility.php> for a full list
of supported games.
.
- The game data of two games compatible with ScummVM is included in Debian.
+ The game data of four games compatible with ScummVM is included in Debian.
These are:
.
- - Beneath a Steel Sky (package name: beneath-a-steel-sky)
- - Flight of the Amazon Queen (package name: flight-of-the-amazon-queen)
+ - Beneath a Steel Sky (package: beneath-a-steel-sky)
+ - Drascula: The Vampire Strikes Back (package: drascula)
+ - Flight of the Amazon Queen (package: flight-of-the-amazon-queen)
+ - Lure of the Temptress (package: lure-of-the-temptress)
.
To actually make use of ScummVM, you'll have to install one of these, or
obtain the proprietary game data for another supported game from somewhere
diff --git a/dists/debian/copyright b/dists/debian/copyright
index 0123b2886c..bd2068aa1a 100644
--- a/dists/debian/copyright
+++ b/dists/debian/copyright
@@ -1,41 +1,373 @@
-ScummVM was debianized by Bastien Nocera <hadess@hadess.net> the 5th Apr 2002.
-It was adopted by Tore Anderson <tore@linpro.no> the 4th Oct 2002,
-then adopted by David Weinehall <tao@debian.org> the 30th Jan 2006,
-then adopted by the Debian Games Team by Moritz Muehlenhoff <jmm@debian.org>
-
-It was downloaded from <http://www.scummvm.org/>.
-
-Upstream Authors: see `/usr/share/doc/scummvm/AUTHORS'.
-
-ScummVM is Copyright © 2002-2017 The ScummVM Team
-
- 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, or (at your option) any
- later version.
-
- On Debian GNU/Linux systems, the complete text of the GNU General
- Public License can be found in `/usr/share/common-licenses/GPL'.
-
-This copyright also applies to the Debian-related build scripts.
-
-Some parts of ScummVM (the mt32 softsynth code) is covered by a more
-permissive BSD-style license:
-
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: ScummVM
+Source: http://www.scummvm.org/
+Comment:
+ ScummVM was debianized by Bastien Nocera <hadess@hadess.net> the 5th Apr 2002.
+ It was adopted by Tore Anderson <tore@linpro.no> the 4th Oct 2002,
+ then adopted by David Weinehall <tao@debian.org> the 30th Jan 2006,
+ then adopted by the Debian Games Team by Moritz Muehlenhoff <jmm@debian.org>
+Files-Excluded:
+ gui/themes/fonts/topaz
+ gui/themes/fonts/Arial*
+ */*/*/*/*.o*
+ */*/*/*.dll
+
+Files: *
+Copyright:
+ 2001-2016 The ScummVM Project
+ The ScummVM Team
+ 2002-2011 The DOSBox Team
+ 1994-1998 Revolution Software Ltd.
+ 2001-2004 Andrea Mazzoleni
+ 2003-2005 Andreas 'Sprawl' Karlsso
+ 2002-2008 Jurgen 'SumthinWicked' Braam
+ 2003-2014 Lars 'AnotherGuest' Persso
+ 2013-2014 Fedor Strizhniou
+ 1990-2012 Neil Dodwell
+ 1995-1997 Presto Studios, Inc.
+ and others listed in COPYRIGHT file
+License: GPL-2+
+Comment:
+ See list of copyright holders in "/usr/share/doc/scummvm/COPYRIGHT".
+ See list of upstream authors in "/usr/share/doc/scummvm/AUTHORS".
+
+Files: audio/softsynth/mt32/*
+Copyright: 2003-2006,2008-2009,2011-2014 Dean Beeler
+ 2003-2006,2008-2009,2011-2014 Jerome Fisher
+ 2011-2014 Sergey V. Mikayev
+License: LGPL-2.1+
+
+Files: backends/platform/ds/arm9/source/fat/*
+Copyright: Michael Chisholm <chishm@hotmail.com>
+License: MC-custom
+ This software is completely free. No warranty is provided.
+ If you use it, please give me credit and email me about your
+ project at chishm@hotmail.com
+
+Files: backends/platform/ds/arm9/source/fat/io_m3_common.*
+ backends/platform/ds/arm9/source/fat/io_njsd.*
+ backends/platform/ds/arm9/source/fat/io_sd_*
+Copyright: 2006 Michael "Chishm" Chisholm
+License: BSD-3-clause
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+ .
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation and/or
+ other materials provided with the distribution.
+ 3. The name of the author may not be used to endorse or promote products derived
+ from this software without specific prior written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Files: backends/platform/ds/arm9/source/interrupt.s
+ backends/platform/ds/arm9/source/keys.cpp
+Copyright: 2005 Dave Murphy (WinterMute)
+License: BSD-3-clause~dm
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any
+ damages arising from the use of this software.
+ .
+ Permission is granted to anyone to use this software for any
+ purpose, including commercial applications, and to alter it and
+ redistribute it freely, subject to the following restrictions:
+ 1. The origin of this software must not be misrepresented; you
+ must not claim that you wrote the original software. If you use
+ this software in a product, an acknowledgment in the product
+ documentation would be appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and
+ must not be misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source
+ distribution.
+
+Files:
+ engines/pegasus/interaction.cpp
+Copyright:
+ 2001-2016 The ScummVM Team
+ 1995-1997 Presto Studios, Inc.
+License: GPL-2+
+
+Files: engines/sword25/util/lua_*
+Copyright:
+ 2001-2016 The ScummVM Team
+ 2004 Ben Sunshine-Hill
+License: GPL-2+
+Comment:
+ This code is heavily based on the Pluto code base.
+ Copyright (C) 2004 by Ben Sunshine-Hill, and released into the public
+ domain. People making use of this software as part of an application
+ are politely requested to email the author at sneftel@gmail.com
+ with a brief description of the application, primarily to satisfy his
+ curiosity.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Files: engines/sword25/util/lua/*
+Copyright: 1994-2008 Lua.org, PUC-Rio.
+License: Expat
+
+Files: engines/wintermute/utils/convert_utf.*
+Copyright: 2001-2004 Unicode, Inc.
+License: unicode
+ This source code is provided as is by Unicode, Inc. No claims are
+ made as to fitness for any particular purpose. No warranties of any
+ kind are expressed or implied. The recipient agrees to determine
+ applicability of information provided. If this file has been
+ purchased on magnetic or optical media from Unicode, Inc., the
+ sole remedy for any claim will be exchange of defective media
+ within 90 days of receipt.
+ .
+ Limitations on Rights to Redistribute This Code
+ .
+ Unicode, Inc. hereby grants the right to freely use the information
+ supplied in this file in the creation of products supporting the
+ Unicode Standard, and to make copies of this file in any form
+ for internal or external distribution as long as this notice
+ remains attached.
+
+Files: engines/wintermute/utils/crc.*
+Copyright: 2000 Michael Barr
+License: public-domain-crc
+ This software is placed into
+ the public domain and may be used for any purpose. However, this
+ notice must not be changed or removed and no warranty is either
+ expressed or implied by its publication or distribution.
+
+Files:
+ engines/wage/combat.cpp
+ engines/wage/design.cpp
+ engines/wage/design.h
+ engines/wage/dialog.cpp
+ engines/wage/dialog.h
+ engines/wage/entities.cpp
+ engines/wage/entities.h
+ engines/wage/gui-console.cpp
+ engines/wage/gui.cpp
+ engines/wage/gui.h
+ engines/wage/randomhat.cpp
+ engines/wage/randomhat.h
+ engines/wage/saveload.cpp
+ engines/wage/script.cpp
+ engines/wage/script.h
+ engines/wage/sound.cpp
+ engines/wage/sound.h
+ engines/wage/util.cpp
+ engines/wage/wage.cpp
+ engines/wage/wage.h
+ engines/wage/world.cpp
+ engines/wage/world.h
+Copyright:
+ 2001-2016 The ScummVM Project
+ 2009 Alexei Svitkine, Eugene Sandulenko
+License: GPL-2+ and Expat
+
+Files:
+ graphics/nine_patch.cpp
+ graphics/nine_patch.h
+Copyright:
+ 2001-2016 The ScummVM Project
+ 2011 Matthew Leverton
+License: GPL-2+ and Expat
+
+Files: gui/themes/fonts/Free*.ttf
+ gui/themes/scummmodern/Free*.ttf
+Copyright: 2002-2009 Free Software Foundation.
+License: GPL-3+
+ 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 3, 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.
+ .
+ The complete text of the GNU General Public License can be found
+ in "/usr/share/common-licenses/GPL-3".
+
+Files: gui/themes/fonts/clR6x12*.bdf
+Copyright: 1989 Dale Schumacher <dal@syntel.mn.org>
+License: MIT-like
+ Permission to use, copy, modify, and distribute this software and
+ its documentation for any purpose and without fee is hereby
+ granted, provided that the above copyright notice appear in all
+ copies and that both that copyright notice and this permission
+ notice appear in supporting documentation, and that the name of
+ Dale Schumacher not be used in advertising or publicity pertaining to
+ distribution of the software without specific, written prior
+ permission. Dale Schumacher makes no representations about the
+ suitability of this software for any purpose. It is provided "as
+ is" without express or implied warranty.
+
+Files: gui/themes/fonts/fixed5x8*.bdf
+Copyright: not-applicable
+License: public-domain
+ Public domain font. Share and enjoy.
+
+Files: gui/themes/fonts/helv*.bdf
+Copyright: 1984-1989,1994 Adobe Systems Incorporated.
+ 1988,1994 Digital Equipment Corporation.
+License: MIT-Adobe-DEC
+ Adobe is a trademark of Adobe Systems Incorporated which may be
+ registered in certain jurisdictions.
+ Permission to use these trademarks is hereby granted only in
+ association with the images described in this file.
+ .
+ Permission to use, copy, modify, distribute and sell this software
+ and its documentation for any purpose and without fee is hereby
+ granted, provided that the above copyright notices appear in all
+ copies and that both those copyright notices and this permission
+ notice appear in supporting documentation, and that the names of
+ Adobe Systems and Digital Equipment Corporation not be used in
+ advertising or publicity pertaining to distribution of the software
+ without specific, written prior permission. Adobe Systems and
+ Digital Equipment Corporation make no representations about the
+ suitability of this software for any purpose. It is provided "as
+ is" without express or implied warranty.
+
+Files: graphics/yuv_to_rgb.cpp
+Copyright: 2001-2012 The ScummVM Project
+License: GPL-2+
+Comment: portions copyright as below
+ The YUV to RGB conversion code is derived from SDL's YUV overlay code, which
+ in turn appears to be derived from mpeg_play. The following copyright
+ notices have been included in accordance with the original license. Please
+ note that the term "software" in this context only applies to the
+ buildLookup() and plotYUV*() functions below.
+ .
+ Copyright (c) 1995 The Regents of the University of California.
+ All rights reserved.
+ .
+ Permission to use, copy, modify, and distribute this software and its
+ documentation for any purpose, without fee, and without written agreement is
+ hereby granted, provided that the above copyright notice and the following
+ two paragraphs appear in all copies of this software.
+ .
+ IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
+ DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
+ OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
+ CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ .
+ THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
+ PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ .
+ Copyright (c) 1995 Erik Corry
+ All rights reserved.
+ .
+ Permission to use, copy, modify, and distribute this software and its
+ documentation for any purpose, without fee, and without written agreement is
+ hereby granted, provided that the above copyright notice and the following
+ two paragraphs appear in all copies of this software.
+ .
+ IN NO EVENT SHALL ERIK CORRY BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+ SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF
+ THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF ERIK CORRY HAS BEEN ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+ .
+ ERIK CORRY SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS"
+ BASIS, AND ERIK CORRY HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT,
+ UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ .
+ Portions of this software Copyright (c) 1995 Brown University.
+ All rights reserved.
+ .
+ Permission to use, copy, modify, and distribute this software and its
+ documentation for any purpose, without fee, and without written agreement
+ is hereby granted, provided that the above copyright notice and the
+ following two paragraphs appear in all copies of this software.
+ .
+ IN NO EVENT SHALL BROWN UNIVERSITY BE LIABLE TO ANY PARTY FOR
+ DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
+ OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF BROWN
+ UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ .
+ BROWN UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS"
+ BASIS, AND BROWN UNIVERSITY HAS NO OBLIGATION TO PROVIDE MAINTENANCE,
+ SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+Files: test/cxxtest/*
+Copyright: 2008 Sandia Corporation
+License: LGPL-2.1+
+
+Files: debian/*
+Copyright: 2002 Bastien Nocera <hadess@hadess.net>
+ 2003,2006-2008 David Weinehall <tao@debian.org>
+ 2012-2016 Dmitry Smirnov <onlyjob@debian.org>
+ 2009-2012 Moritz Muehlenhoff <jmm@debian.org>
+ 2002-2005 Tore Anderson <tore@linpro.no>
+License: GPL-2+
+
+License: GPL-2+
+ 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 package 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.
+ .
+ The complete text of the GNU General Public License version 2
+ can be found in `/usr/share/common-licenses/GPL-2'.
+
+License: LGPL-2.1+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+ .
+ This library 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
+ Lesser General Public License for more details.
+ .
+ On Debian systems, the complete text of the GNU Library General Public License
+ can be found in the file `/usr/share/common-licenses/LGPL-2.1'.
+
+License: Expat
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+ .
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+Comment:
+ This license also known as "MIT/X11 (BSD like)" or "MIT" however FSF
+ consider "MIT" labelling ambiguous and copyright-format specification
+ recommend to label such license as "Expat".
diff --git a/dists/debian/gbp.conf b/dists/debian/gbp.conf
new file mode 100644
index 0000000000..964373b02a
--- /dev/null
+++ b/dists/debian/gbp.conf
@@ -0,0 +1,11 @@
+[buildpackage]
+force-create = True
+overlay = True
+export-dir = ../build-area/
+
+[dch]
+id-length = 0
+
+[import-orig]
+pristine-tar = False
+merge = False
diff --git a/dists/debian/rules b/dists/debian/rules
index bf91ca37aa..4b91a47e3e 100755
--- a/dists/debian/rules
+++ b/dists/debian/rules
@@ -1,14 +1,69 @@
#!/usr/bin/make -f
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+# #827145:
+# When building for i386 on an amd64 system/kernel, the host
+# architecture is misdetected as x86_64, which causes USE_NASM to be
+# unset and prevents the object files hq2x_i386.o and hq3x_i386.o from
+# being built.
+# This is fixed by passing the host architecture explicitely to
+# configure.
+DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+
%:
- dh $@
+ dh $@ --parallel --max-parallel=4 --with autotools_dev
-override_dh_auto_configure:
+ifeq ($(DEB_BUILD_ARCH_OS),hurd)
+OPTARGS:= --disable-alsa
+endif
ifeq ($(DEB_BUILD_ARCH_OS),kfreebsd)
- ./configure --prefix=/usr --datadir=/usr/share/scummvm --enable-release --disable-alsa
-else
- ./configure --prefix=/usr --datadir=/usr/share/scummvm --enable-release
+OPTARGS:= --disable-alsa
endif
+override_dh_auto_clean:
+ ##718164 "FTBFS: Makefile:87: *** You need to run ./configure before you can run make".
+ [ -f config.mk ] || touch config.mk
+ dh_auto_clean
+
+override_dh_auto_configure:
+ ./configure \
+ --host=$(DEB_HOST_GNU_TYPE) \
+ --datadir=/usr/share/scummvm \
+ --disable-eventrecorder \
+ --enable-release \
+ --enable-verbose-build \
+ --prefix=/usr $(OPTARGS)
+
+FPATH=gui/themes/scummmodern
+override_dh_auto_build:
+ ## replacing bundled fonts...
+ for F in $(FPATH)/Free*.ttf; do cp -v /usr/share/fonts/truetype/freefont/$$(basename $${F}) $(FPATH)/ ;done
+ ## re-compressing "modern" theme...
+ cd $(FPATH) && zip -9 -X ../scummmodern.zip -r .
+ ## re-compressing "classic" theme...
+ cd gui/themes/scummclassic && zip -9 -X ../scummclassic.zip -r .
+ ## build executable(s)...
+ dh_auto_build
+
+override_dh_installchangelogs:
+ dh_installchangelogs NEWS
+
+override_dh_gencontrol:
+ dh_gencontrol -- -Vmy:Built-Using="$(foreach pkg,fonts-freefont-ttf,$(word 2,$(shell dpkg --status $(pkg) | grep Source)) (=$(word 2,$(shell dpkg --status $(pkg) | grep Version))),)"
+# get-orig-source
+PKD = $(abspath $(dir $(MAKEFILE_LIST)))
+PKG = $(word 2,$(shell dpkg-parsechangelog -l$(PKD)/changelog | grep ^Source))
+VER ?= $(shell dpkg-parsechangelog -l$(PKD)/changelog | perl -ne 'print $$1 if m{^Version:\s*([\d\.]+)}')
+DTYPE := +dfsg
+.PHONY: get-orig-source
+get-orig-source: $(PKG)_$(VER)$(DTYPE).orig.tar.xz
+ @
+$(PKG)_$(VER)$(DTYPE).orig.tar.xz:
+ @echo "# Downloading..."
+ uscan --noconf --verbose --rename --destdir=$(CURDIR) --check-dirname-level=0 --force-download --download-version $(VER) $(PKD)
diff --git a/dists/debian/scummvm-data.install b/dists/debian/scummvm-data.install
index c77aefbc0a..613913e8a8 100644
--- a/dists/debian/scummvm-data.install
+++ b/dists/debian/scummvm-data.install
@@ -1,5 +1,3 @@
-icons/scummvm.xpm usr/share/icons
-icons/scummvm.svg usr/share/icons
-dists/scummvm.desktop usr/share/applications
-gui/themes/scummmodern.zip usr/share/scummvm
-dists/pred.dic usr/share/scummvm
+usr/share/scummvm/*
+usr/share/pixmaps/*.xpm
+icons/scummvm.svg /usr/share/icons/hicolor/scalable/apps/
diff --git a/dists/debian/scummvm.dirs b/dists/debian/scummvm.dirs
index 6b05c7ace8..465f3a3d81 100644
--- a/dists/debian/scummvm.dirs
+++ b/dists/debian/scummvm.dirs
@@ -1,5 +1,2 @@
usr/games
usr/share/man/man6
-usr/share/icons
-usr/share/scummvm
-usr/share/applications
diff --git a/dists/debian/scummvm.docs b/dists/debian/scummvm.docs
index c73c810363..f34db31d52 100644
--- a/dists/debian/scummvm.docs
+++ b/dists/debian/scummvm.docs
@@ -2,4 +2,3 @@ AUTHORS
COPYRIGHT
README
TODO
-NEWS
diff --git a/dists/debian/scummvm.install b/dists/debian/scummvm.install
index 457a89cfaa..838c30419f 100644
--- a/dists/debian/scummvm.install
+++ b/dists/debian/scummvm.install
@@ -1,2 +1,2 @@
scummvm usr/games
-
+dists/scummvm.desktop usr/share/applications
diff --git a/dists/debian/source/format b/dists/debian/source/format
new file mode 100644
index 0000000000..163aaf8d82
--- /dev/null
+++ b/dists/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/dists/debian/source/options b/dists/debian/source/options
new file mode 100644
index 0000000000..628961cb39
--- /dev/null
+++ b/dists/debian/source/options
@@ -0,0 +1,4 @@
+compression = "xz"
+
+# ignore changes on replaced (unbundled) fonts
+extend-diff-ignore = "(^|/)gui/themes/scummmodern/[^/]+\.ttf$"
diff --git a/dists/debian/watch b/dists/debian/watch
new file mode 100644
index 0000000000..13b3749cef
--- /dev/null
+++ b/dists/debian/watch
@@ -0,0 +1,17 @@
+# uscan(1) configuration file.
+version=4
+
+opts="\
+pgpmode=none,\
+repacksuffix=+dfsg,\
+repack,compression=xz,\
+dversionmangle=s/\+dfsg\d*//,\
+" http://scummvm.org/downloads/ .*/scummvm-([0-9.]+)\.tar\.(?:xz|bz2|gz)
+
+opts="\
+pgpmode=none,\
+repacksuffix=+dfsg,\
+repack,compression=xz,\
+dversionmangle=s/\+dfsg\d*//,\
+" https://github.com/scummvm/scummvm/releases \
+ .*/archive/v?\.?(\d[\d\.]+)\.tar\.gz
diff --git a/dists/engine-data/kyra.dat b/dists/engine-data/kyra.dat
index 4dcfb0c380..81f96e7831 100644
--- a/dists/engine-data/kyra.dat
+++ b/dists/engine-data/kyra.dat
Binary files differ
diff --git a/dists/gph/README-GPH b/dists/gph/README-GPH
index f1588b3e38..55136e5352 100644
--- a/dists/gph/README-GPH
+++ b/dists/gph/README-GPH
@@ -1,4 +1,4 @@
-ScummVM 1.10.0git - GPH DEVICE SPECIFIC README
+ScummVM 2.0.0git - GPH DEVICE SPECIFIC README
------------------------------------------------------------------------
diff --git a/dists/gph/scummvm.ini b/dists/gph/scummvm.ini
index 392eccf29b..339554d9ee 100644
--- a/dists/gph/scummvm.ini
+++ b/dists/gph/scummvm.ini
@@ -1,5 +1,5 @@
[info]
-name="ScummVM 1.10.0git"
+name="ScummVM 2.0.0git"
path="/scummvm/scummvm.gpe"
icon="/scummvm/scummvm.png"
title="/scummvm/scummvmb.png"
diff --git a/dists/ios7/Info.plist b/dists/ios7/Info.plist
index 3684ade28d..6cc5f6ede9 100644
--- a/dists/ios7/Info.plist
+++ b/dists/ios7/Info.plist
@@ -19,11 +19,11 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
- <string>1.10.0git</string>
+ <string>2.0.0git</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
- <string>1.10.0git</string>
+ <string>2.0.0git</string>
<key>UIApplicationExitsOnSuspend</key>
<false/>
<key>UIDeviceFamily</key>
diff --git a/dists/iphone/Info.plist b/dists/iphone/Info.plist
index 491f3af3ac..a757eb645f 100644
--- a/dists/iphone/Info.plist
+++ b/dists/iphone/Info.plist
@@ -15,11 +15,11 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
- <string>1.10.0git</string>
+ <string>2.0.0git</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
- <string>1.10.0git</string>
+ <string>2.0.0git</string>
<key>CFBundleIconFile</key>
<string>icon.png</string>
<key>CFBundleIconFiles</key>
diff --git a/dists/irix/scummvm.spec b/dists/irix/scummvm.spec
index 9b218ff988..3e121d8a82 100644
--- a/dists/irix/scummvm.spec
+++ b/dists/irix/scummvm.spec
@@ -1,5 +1,5 @@
product scummvm
- id "ScummVM 1.10.0git"
+ id "ScummVM 2.0.0git"
image sw
id "software"
version 18
diff --git a/dists/macosx/Info.plist b/dists/macosx/Info.plist
index ab0bf4db27..ffeb9dd569 100644
--- a/dists/macosx/Info.plist
+++ b/dists/macosx/Info.plist
@@ -9,7 +9,7 @@
<key>CFBundleExecutable</key>
<string>scummvm</string>
<key>CFBundleGetInfoString</key>
- <string>1.10.0git, Copyright 2001-2017 The ScummVM Team</string>
+ <string>2.0.0git, Copyright 2001-2017 The ScummVM Team</string>
<key>CFBundleIconFile</key>
<string>scummvm.icns</string>
<key>CFBundleIdentifier</key>
@@ -45,9 +45,9 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
- <string>1.10.0git</string>
+ <string>2.0.0git</string>
<key>CFBundleVersion</key>
- <string>1.10.0git</string>
+ <string>2.0.0git</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright 2001-2017 The ScummVM Team</string>
<key>NSPrincipalClass</key>
diff --git a/dists/macosx/dockplugin/Info.plist b/dists/macosx/dockplugin/Info.plist
index dc2a4fda45..7f51ef4d4a 100644
--- a/dists/macosx/dockplugin/Info.plist
+++ b/dists/macosx/dockplugin/Info.plist
@@ -15,9 +15,9 @@
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
- <string>1.10.0git</string>
+ <string>2.0.0git</string>
<key>CFBundleVersion</key>
- <string>1.10.0git</string>
+ <string>2.0.0git</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright 2001-2017 The ScummVM Team</string>
<key>NSPrincipalClass</key>
diff --git a/dists/openpandora/PXML.xml b/dists/openpandora/PXML.xml
index e6ec51c281..b728e9201b 100644
--- a/dists/openpandora/PXML.xml
+++ b/dists/openpandora/PXML.xml
@@ -4,11 +4,11 @@
<package id="scummvm.djwillis.0001">
<author name="DJWillis" website="http://www.scummvm.org/"/>
<!-- version type can be alpha, beta or release, set to release in branch -->
- <version major="1" minor="10" release="0" build="1" type="release"/>
+ <version major="2" minor="0" release="0" build="1" type="release"/>
<!-- Both title and titles are needed -->
- <title lang="en_US">ScummVM 1.10.0git</title>
+ <title lang="en_US">ScummVM 2.0.0git</title>
<titles>
- <title lang="en_US">ScummVM 1.10.0git</title>
+ <title lang="en_US">ScummVM 2.0.0git</title>
</titles>
<descriptions>
<description lang="en_US">
@@ -25,7 +25,7 @@
<exec command="./runscummvm.sh"/>
<author name="DJWillis" website="http://www.scummvm.org/"/>
<!-- version type can be alpha, beta or release, set to release in branch -->
- <version major="1" minor="10" release="0" build="1" type="release"/>
+ <version major="2" minor="0" release="0" build="1" type="release"/>
<!-- Both title and titles are needed -->
<title lang="en_US">ScummVM</title>
<titles>
diff --git a/dists/openpandora/README-OPENPANDORA b/dists/openpandora/README-OPENPANDORA
index d5f6c473df..daa3197146 100644
--- a/dists/openpandora/README-OPENPANDORA
+++ b/dists/openpandora/README-OPENPANDORA
@@ -1,4 +1,4 @@
-ScummVM 1.10.0git - OPENPANDORA SPECIFIC README
+ScummVM 2.0.0git - OPENPANDORA SPECIFIC README
------------------------------------------------------------------------
Please refer to the:
diff --git a/dists/openpandora/README-PND.txt b/dists/openpandora/README-PND.txt
index 369ce669a9..0a1f4435e6 100644
--- a/dists/openpandora/README-PND.txt
+++ b/dists/openpandora/README-PND.txt
@@ -1,4 +1,4 @@
-ScummVM 1.10.0git - OPENPANDORA README - HOW TO INSTALL
+ScummVM 2.0.0git - OPENPANDORA README - HOW TO INSTALL
------------------------------------------------------------------------
Please refer to the:
diff --git a/dists/openpandora/index.html b/dists/openpandora/index.html
index efececaed5..6c241bdf8a 100644
--- a/dists/openpandora/index.html
+++ b/dists/openpandora/index.html
@@ -5,7 +5,7 @@
</h3>
<h4>
- <p>ScummVM 1.10.0git: OpenPandora Specific Documentation</p>
+ <p>ScummVM 2.0.0git: OpenPandora Specific Documentation</p>
</h4>
<A href="docs/README-OPENPANDORA">ScummVM OpenPandora README</a><br/>
@@ -13,7 +13,7 @@
<A href="http://wiki.scummvm.org/index.php/OpenPandora">ScummVM OpenPandora WiKi</a><br/>
<h4>
- <p>ScummVM 1.10.0git: General Documentation</p>
+ <p>ScummVM 2.0.0git: General Documentation</p>
</h4>
<A href="http://www.scummvm.org/">ScummVM website</a><br/>
diff --git a/dists/redhat/README b/dists/redhat/README
index d1cef06632..04a9ab3bc1 100644
--- a/dists/redhat/README
+++ b/dists/redhat/README
@@ -1,34 +1,35 @@
How to build an RPM:
-Note: the following assumes that the RPM topdir is /usr/src/redhat .
-If you have set a different topdir in /usr/lib/rpm/macros or ~/.rpmmacros,
-adapt the below instructions where necessary.
+0) Install dependencies:
+This assumes Fedora 24 or higher.
+
+dnf install gcc-c++ make git libmad-devel desktop-file-utils libogg-devel libvorbis-devel flac-devel zlib-devel nasm SDL2-devel freetype-devel fluidsynth-devel libtheora-devel libpng-devel libjpeg-turbo-devel alsa-lib-devel wxGTK3-devel boost-devel rpm-build
1) Collect sources:
-Place scummvm-%{version}.tar.bz2 and libmad-0.15.1b.tar.bz2
-in /usr/src/redhat/SOURCES .
-If you have a different version of libmad, put the correct version
-numbers in the .spec file.
+Place scummvm-%{version}.tar.bz2, scummvm-tools-%{version}.tar.bz2,
+faad2-2.8.6.tar.gz, libmpeg2-0.5.1.tar.gz in ~/rpmbuild/SOURCES .
+
+This assumes that the RPM topdir is ~/rpmbuild/ . If you have set a different
+topdir, adapt appropriately.
-Place scummvm.spec in /usr/src/redhat/SPECS .
+faad2 is available at https://sourceforge.net/projects/faac/files/faad2-src/faad2-2.8.0/faad2-2.8.6.tar.gz/download
+libmpeg2 at http://libmpeg2.sourceforge.net/files/libmpeg2-0.5.1.tar.gz
-2) Build the rpm:
-Change directory to /usr/src/redhat/SPECS .
+2) Build the rpms:
+
Run:
rpmbuild -ba scummvm.spec
+rpmbuild -ba scummvm-tools.spec
-The RPM should now be built and placed in /usr/src/redhat/RPMS/i386 and
-the source RPM in /usr/src/redhat/SRPMS
-
+The RPMs should now be built and placed in ~/rpmbuild/RPMS/x86_64 and
+the source RPMs in ~/rpmbuild/SRPMS
-Note: libmad is statically linked into the scummvm binary
-because Fedora does not carry a libmad package, so I did not
-want to make the scummvm package depend on them.
-You can get libmad from http://www.underbit.com/products/mad/ .
+Note: faad2 and libmpeg2 are statically linked into the scummvm binary
+because Fedora do not carry the corresponding packages.
diff --git a/dists/redhat/scummvm-tools.spec b/dists/redhat/scummvm-tools.spec
index a9ca021a65..8a87b95ffb 100644
--- a/dists/redhat/scummvm-tools.spec
+++ b/dists/redhat/scummvm-tools.spec
@@ -7,7 +7,7 @@
# Prologue information
#------------------------------------------------------------------------------
Name : scummvm-tools
-Version : 1.10.0git
+Version : 2.0.0git
Release : 1
Summary : ScummVM-related tools
Group : Interpreters
@@ -16,11 +16,18 @@ License : GPL
Url : http://www.scummvm.org
Source : %{name}-%{version}.tar.bz2
-Source1 : libmad-0.15.1b.tar.bz2
BuildRoot : %{_tmppath}/%{name}-%{version}-root
-BuildRequires : zlib-devel
-BuildRequires : wxGTK-devel
+BuildRequires: zlib-devel
+BuildRequires: wxGTK3-devel
+BuildRequires: libmad-devel
+BuildRequires: libvorbis-devel
+BuildRequires: libogg-devel
+BuildRequires: libpng-devel
+BuildRequires: boost-devel
+BuildRequires: flac-devel
+BuildRequires: freetype-devel
+
#------------------------------------------------------------------------------
# Description
#------------------------------------------------------------------------------
@@ -31,19 +38,20 @@ Tools for compressing ScummVM datafiles and other related tools.
# install scripts
#------------------------------------------------------------------------------
%prep
-%setup -q -a 1 -n scummvm-tools-%{version}
+%setup -q -n scummvm-tools-%{version}
%build
-(cd libmad-0.15.1b; grep -v 'force-\(mem\|addr\)' configure > configure.new; mv -f configure.new configure; chmod 700 configure; ./configure --enable-static --disable-shared --prefix=%{_builddir}/scummvm-%{version}/tmp; make; make install)
-./configure --with-mad-prefix=%{_builddir}/scummvm-%{version}/tmp
-make
+./configure --prefix=%{_prefix}
+make %{_smp_mflags}
%install
-install -m755 -d %{buildroot}%{_bindir}
-install -m755 -D create_sjisfnt %{buildroot}%{_bindir}
-install -m755 -D scummvm-tools{,-cli} %{buildroot}%{_bindir}
-install -m755 -D de{cine,gob,kyra,riven,scumm,sword2} %{buildroot}%{_bindir}
-install -m755 -D {construct,extract}_mohawk %{buildroot}%{_bindir}
+make DESTDIR=%{buildroot} install
+rm %{buildroot}%{_datadir}/scummvm-tools/detaillogo.jpg
+rm %{buildroot}%{_datadir}/scummvm-tools/logo.jpg
+rm %{buildroot}%{_datadir}/scummvm-tools/scummvmtools.icns
+rm %{buildroot}%{_datadir}/scummvm-tools/scummvmtools.ico
+rm %{buildroot}%{_datadir}/scummvm-tools/scummvmtools_128.png
+rm %{buildroot}%{_datadir}/scummvm-tools/tile.gif
%clean
rm -Rf ${RPM_BUILD_ROOT}
@@ -53,11 +61,7 @@ rm -Rf ${RPM_BUILD_ROOT}
#------------------------------------------------------------------------------
%files
%doc README COPYING
-%attr(0755,root,root)%{_bindir}/scummvm*
-%attr(0755,root,root)%{_bindir}/create_sjisfnt
-%attr(0755,root,root)%{_bindir}/de*
-%attr(0755,root,root)%{_bindir}/extract_*
-%attr(0755,root,root)%{_bindir}/construct_*
+%attr(0755,root,root)%{_bindir}/*
#------------------------------------------------------------------------------
# Change Log
diff --git a/dists/redhat/scummvm-tools.spec.in b/dists/redhat/scummvm-tools.spec.in
index f64871486d..373b85f693 100644
--- a/dists/redhat/scummvm-tools.spec.in
+++ b/dists/redhat/scummvm-tools.spec.in
@@ -16,11 +16,18 @@ License : GPL
Url : http://www.scummvm.org
Source : %{name}-%{version}.tar.bz2
-Source1 : libmad-0.15.1b.tar.bz2
BuildRoot : %{_tmppath}/%{name}-%{version}-root
-BuildRequires : zlib-devel
-BuildRequires : wxGTK-devel
+BuildRequires: zlib-devel
+BuildRequires: wxGTK3-devel
+BuildRequires: libmad-devel
+BuildRequires: libvorbis-devel
+BuildRequires: libogg-devel
+BuildRequires: libpng-devel
+BuildRequires: boost-devel
+BuildRequires: flac-devel
+BuildRequires: freetype-devel
+
#------------------------------------------------------------------------------
# Description
#------------------------------------------------------------------------------
@@ -31,19 +38,20 @@ Tools for compressing ScummVM datafiles and other related tools.
# install scripts
#------------------------------------------------------------------------------
%prep
-%setup -q -a 1 -n scummvm-tools-%{version}
+%setup -q -n scummvm-tools-%{version}
%build
-(cd libmad-0.15.1b; grep -v 'force-\(mem\|addr\)' configure > configure.new; mv -f configure.new configure; chmod 700 configure; ./configure --enable-static --disable-shared --prefix=%{_builddir}/scummvm-%{version}/tmp; make; make install)
-./configure --with-mad-prefix=%{_builddir}/scummvm-%{version}/tmp
-make
+./configure --prefix=%{_prefix}
+make %{_smp_mflags}
%install
-install -m755 -d %{buildroot}%{_bindir}
-install -m755 -D create_sjisfnt %{buildroot}%{_bindir}
-install -m755 -D scummvm-tools{,-cli} %{buildroot}%{_bindir}
-install -m755 -D de{cine,gob,kyra,riven,scumm,sword2} %{buildroot}%{_bindir}
-install -m755 -D {construct,extract}_mohawk %{buildroot}%{_bindir}
+make DESTDIR=%{buildroot} install
+rm %{buildroot}%{_datadir}/scummvm-tools/detaillogo.jpg
+rm %{buildroot}%{_datadir}/scummvm-tools/logo.jpg
+rm %{buildroot}%{_datadir}/scummvm-tools/scummvmtools.icns
+rm %{buildroot}%{_datadir}/scummvm-tools/scummvmtools.ico
+rm %{buildroot}%{_datadir}/scummvm-tools/scummvmtools_128.png
+rm %{buildroot}%{_datadir}/scummvm-tools/tile.gif
%clean
rm -Rf ${RPM_BUILD_ROOT}
@@ -53,15 +61,15 @@ rm -Rf ${RPM_BUILD_ROOT}
#------------------------------------------------------------------------------
%files
%doc README COPYING
-%attr(0755,root,root)%{_bindir}/scummvm*
-%attr(0755,root,root)%{_bindir}/create_sjisfnt
-%attr(0755,root,root)%{_bindir}/de*
-%attr(0755,root,root)%{_bindir}/extract_*
-%attr(0755,root,root)%{_bindir}/construct_*
+%attr(0755,root,root)%{_bindir}/*
#------------------------------------------------------------------------------
# Change Log
#------------------------------------------------------------------------------
%changelog
+* Thu Nov 23 2017 (2.0.0)
+ - remove own libmad since this is now in Fedora itself
+* Sat Apr 03 2010 (1.2.0)
+ - include libmad
* Sat Mar 26 2005 (0.7.1)
- first tools package
diff --git a/dists/redhat/scummvm.spec b/dists/redhat/scummvm.spec
index b2b821a189..eb84b6e324 100644
--- a/dists/redhat/scummvm.spec
+++ b/dists/redhat/scummvm.spec
@@ -7,7 +7,7 @@
# Prologue information
#------------------------------------------------------------------------------
Name : scummvm
-Version : 1.10.0git
+Version : 2.0.0git
Release : 1
Summary : Graphic adventure game interpreter
Group : Interpreters
@@ -16,10 +16,8 @@ License : GPL
Url : http://www.scummvm.org
Source : %{name}-%{version}.tar.bz2
-Source1 : libmad-0.15.1b.tar.bz2
-Source2 : faad2-2.7.tar.bz2
-Source3 : mpeg2dec-0.5.1.tar.bz2
-Patch0 : libmad-0.15.1b-fixes-1.patch
+Source1 : faad2-2.8.6.tar.gz
+Source2 : libmpeg2-0.5.1.tar.gz
BuildRoot : %{_tmppath}/%{name}-%{version}-root
BuildRequires: desktop-file-utils
@@ -34,6 +32,8 @@ BuildRequires: fluidsynth-devel
BuildRequires: libtheora-devel
BuildRequires: libpng-devel
BuildRequires: libjpeg-turbo-devel
+BuildRequires: alsa-lib-devel
+BuildRequires: libmad-devel
#------------------------------------------------------------------------------
# Description
@@ -52,41 +52,18 @@ games) and many more. See http://www.scummvm.org for a full compatibility list.
# install scripts
#------------------------------------------------------------------------------
%prep
-%setup -q -a 1 -a 2 -a 3 -n scummvm-%{version}
-%patch0 -p0
+%setup -q -a 1 -a 2 -n scummvm-%{version}
mkdir tmp
%build
-(cd libmad-0.15.1b; ./configure --enable-static --disable-shared --prefix=%{_builddir}/scummvm-%{version}/tmp; make; make install)
-(cd faad2-2.7; ./configure --enable-static --disable-shared --prefix=%{_builddir}/scummvm-%{version}/tmp; make; make install)
-(cd mpeg2dec-0.5.1; ./configure --enable-static --disable-shared --prefix=%{_builddir}/scummvm-%{version}/tmp; make; make install)
-./configure --with-mad-prefix=%{_builddir}/scummvm-%{version}/tmp --with-faad-prefix=%{_builddir}/scummvm-%{version}/tmp --with-mpeg2-prefix=%{_builddir}/scummvm-%{version}/tmp --prefix=%{_prefix} --enable-release
-make
+(cd faad2-2.8.6; ./configure --enable-static --disable-shared --prefix=%{_builddir}/scummvm-%{version}/tmp; make %{_smp_mflags} -C libfaad all install)
+(cd libmpeg2-0.5.1; ./configure --enable-static --disable-shared --prefix=%{_builddir}/scummvm-%{version}/tmp; make -C libmpeg2 all install; make -C include all install)
+./configure --with-faad-prefix=%{_builddir}/scummvm-%{version}/tmp --with-mpeg2-prefix=%{_builddir}/scummvm-%{version}/tmp --prefix=%{_prefix} --enable-release
+make %{_smp_mflags}
%install
-install -m755 -D scummvm %{buildroot}%{_bindir}/scummvm
-install -m644 -D dists/scummvm.6 %{buildroot}%{_mandir}/man6/scummvm.6
-install -m644 -D icons/scummvm.xpm %{buildroot}%{_datadir}/pixmaps/scummvm.xpm
-install -m644 -D icons/scummvm.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/scummvm.svg
+make DESTDIR=%{buildroot} install
install -m644 -D dists/redhat/scummvm48.png %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/scummvm.png
-install -m644 -D gui/themes/scummclassic.zip %{buildroot}%{_datadir}/scummvm/scummclassic.zip
-install -m644 -D gui/themes/scummmodern.zip %{buildroot}%{_datadir}/scummvm/scummmodern.zip
-install -m644 -D gui/themes/translations.dat %{buildroot}%{_datadir}/scummvm/translations.dat
-install -m644 -D dists/pred.dic %{buildroot}%{_datadir}/scummvm/pred.dic
-install -m644 -D dists/engine-data/kyra.dat %{buildroot}%{_datadir}/scummvm/kyra.dat
-install -m644 -D dists/engine-data/lure.dat %{buildroot}%{_datadir}/scummvm/lure.dat
-install -m644 -D dists/engine-data/queen.tbl %{buildroot}%{_datadir}/scummvm/queen.tbl
-install -m644 -D dists/engine-data/sky.cpt %{buildroot}%{_datadir}/scummvm/sky.cpt
-install -m644 -D dists/engine-data/drascula.dat %{buildroot}%{_datadir}/scummvm/drascula.dat
-install -m644 -D dists/engine-data/teenagent.dat %{buildroot}%{_datadir}/scummvm/teenagent.dat
-install -m644 -D dists/engine-data/titanic.dat %{buildroot}%{_datadir}/scummvm/titanic.dat
-install -m644 -D dists/engine-data/hugo.dat %{buildroot}%{_datadir}/scummvm/hugo.dat
-install -m644 -D dists/engine-data/tony.dat %{buildroot}%{_datadir}/scummvm/tony.dat
-install -m644 -D dists/engine-data/toon.dat %{buildroot}%{_datadir}/scummvm/toon.dat
-install -m644 -D dists/engine-data/wintermute.zip %{buildroot}%{_datadir}/scummvm/wintermute.zip
-install -m644 -D dists/engine-data/neverhood.dat %{buildroot}%{_datadir}/scummvm/neverhood.dat
-install -m644 -D dists/engine-data/mort.dat %{buildroot}%{_datadir}/scummvm/mort.dat
-install -m644 -D dists/engine-data/access.dat %{buildroot}%{_datadir}/scummvm/access.dat
desktop-file-install --vendor scummvm --dir=%{buildroot}/%{_datadir}/applications dists/scummvm.desktop
%clean
@@ -115,29 +92,19 @@ fi
%{_datadir}/pixmaps/scummvm.xpm
%{_datadir}/icons/hicolor/48x48/apps/scummvm.png
%{_datadir}/icons/hicolor/scalable/apps/scummvm.svg
-%{_datadir}/scummvm/scumm*.zip
-%{_datadir}/scummvm/translations.dat
-%{_datadir}/scummvm/pred.dic
-%{_datadir}/scummvm/kyra.dat
-%{_datadir}/scummvm/queen.tbl
-%{_datadir}/scummvm/sky.cpt
-%{_datadir}/scummvm/lure.dat
-%{_datadir}/scummvm/drascula.dat
-%{_datadir}/scummvm/teenagent.dat
-%{_datadir}/scummvm/titanic.dat
-%{_datadir}/scummvm/hugo.dat
-%{_datadir}/scummvm/tony.dat
-%{_datadir}/scummvm/toon.dat
-%{_datadir}/scummvm/wintermute.zip
-%{_datadir}/scummvm/neverhood.dat
-%{_datadir}/scummvm/mort.dat
-%{_datadir}/scummvm/access.dat
+%{_datadir}/appdata/scummvm.appdata.xml
+%{_datadir}/scummvm/*
%{_mandir}/man6/scummvm.6*
#------------------------------------------------------------------------------
# Change Log
#------------------------------------------------------------------------------
%changelog
+* Thu Nov 23 2017 (2.0.0)
+ - remove own libmad since this is now in Fedora itself
+* Fri Jul 11 2014 (1.8.0)
+ - add libmad build patch
+ - re-add mpeg2dec
* Thu Dec 29 2011 (1.4.0-2)
- include libfaad2
* Fri Sep 17 2010 (1.2.0)
diff --git a/dists/redhat/scummvm.spec.in b/dists/redhat/scummvm.spec.in
index 6c3f7ebaa8..7fbedd77f7 100644
--- a/dists/redhat/scummvm.spec.in
+++ b/dists/redhat/scummvm.spec.in
@@ -16,10 +16,8 @@ License : GPL
Url : http://www.scummvm.org
Source : %{name}-%{version}.tar.bz2
-Source1 : libmad-0.15.1b.tar.bz2
-Source2 : faad2-2.7.tar.bz2
-Source3 : mpeg2dec-0.5.1.tar.bz2
-Patch0 : libmad-0.15.1b-fixes-1.patch
+Source1 : faad2-2.8.6.tar.gz
+Source2 : libmpeg2-0.5.1.tar.gz
BuildRoot : %{_tmppath}/%{name}-%{version}-root
BuildRequires: desktop-file-utils
@@ -34,6 +32,8 @@ BuildRequires: fluidsynth-devel
BuildRequires: libtheora-devel
BuildRequires: libpng-devel
BuildRequires: libjpeg-turbo-devel
+BuildRequires: alsa-lib-devel
+BuildRequires: libmad-devel
#------------------------------------------------------------------------------
# Description
@@ -52,41 +52,18 @@ games) and many more. See http://www.scummvm.org for a full compatibility list.
# install scripts
#------------------------------------------------------------------------------
%prep
-%setup -q -a 1 -a 2 -a 3 -n scummvm-%{version}
-%patch0 -p0
+%setup -q -a 1 -a 2 -n scummvm-%{version}
mkdir tmp
%build
-(cd libmad-0.15.1b; ./configure --enable-static --disable-shared --prefix=%{_builddir}/scummvm-%{version}/tmp; make; make install)
-(cd faad2-2.7; ./configure --enable-static --disable-shared --prefix=%{_builddir}/scummvm-%{version}/tmp; make; make install)
-(cd mpeg2dec-0.5.1; ./configure --enable-static --disable-shared --prefix=%{_builddir}/scummvm-%{version}/tmp; make; make install)
-./configure --with-mad-prefix=%{_builddir}/scummvm-%{version}/tmp --with-faad-prefix=%{_builddir}/scummvm-%{version}/tmp --with-mpeg2-prefix=%{_builddir}/scummvm-%{version}/tmp --prefix=%{_prefix} --enable-release
-make
+(cd faad2-2.8.6; ./configure --enable-static --disable-shared --prefix=%{_builddir}/scummvm-%{version}/tmp; make %{_smp_mflags} -C libfaad all install)
+(cd libmpeg2-0.5.1; ./configure --enable-static --disable-shared --prefix=%{_builddir}/scummvm-%{version}/tmp; make -C libmpeg2 all install; make -C include all install)
+./configure --with-faad-prefix=%{_builddir}/scummvm-%{version}/tmp --with-mpeg2-prefix=%{_builddir}/scummvm-%{version}/tmp --prefix=%{_prefix} --enable-release
+make %{_smp_mflags}
%install
-install -m755 -D scummvm %{buildroot}%{_bindir}/scummvm
-install -m644 -D dists/scummvm.6 %{buildroot}%{_mandir}/man6/scummvm.6
-install -m644 -D icons/scummvm.xpm %{buildroot}%{_datadir}/pixmaps/scummvm.xpm
-install -m644 -D icons/scummvm.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/scummvm.svg
+make DESTDIR=%{buildroot} install
install -m644 -D dists/redhat/scummvm48.png %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/scummvm.png
-install -m644 -D gui/themes/scummclassic.zip %{buildroot}%{_datadir}/scummvm/scummclassic.zip
-install -m644 -D gui/themes/scummmodern.zip %{buildroot}%{_datadir}/scummvm/scummmodern.zip
-install -m644 -D gui/themes/translations.dat %{buildroot}%{_datadir}/scummvm/translations.dat
-install -m644 -D dists/pred.dic %{buildroot}%{_datadir}/scummvm/pred.dic
-install -m644 -D dists/engine-data/kyra.dat %{buildroot}%{_datadir}/scummvm/kyra.dat
-install -m644 -D dists/engine-data/lure.dat %{buildroot}%{_datadir}/scummvm/lure.dat
-install -m644 -D dists/engine-data/queen.tbl %{buildroot}%{_datadir}/scummvm/queen.tbl
-install -m644 -D dists/engine-data/sky.cpt %{buildroot}%{_datadir}/scummvm/sky.cpt
-install -m644 -D dists/engine-data/drascula.dat %{buildroot}%{_datadir}/scummvm/drascula.dat
-install -m644 -D dists/engine-data/teenagent.dat %{buildroot}%{_datadir}/scummvm/teenagent.dat
-install -m644 -D dists/engine-data/titanic.dat %{buildroot}%{_datadir}/scummvm/titanic.dat
-install -m644 -D dists/engine-data/hugo.dat %{buildroot}%{_datadir}/scummvm/hugo.dat
-install -m644 -D dists/engine-data/tony.dat %{buildroot}%{_datadir}/scummvm/tony.dat
-install -m644 -D dists/engine-data/toon.dat %{buildroot}%{_datadir}/scummvm/toon.dat
-install -m644 -D dists/engine-data/wintermute.zip %{buildroot}%{_datadir}/scummvm/wintermute.zip
-install -m644 -D dists/engine-data/neverhood.dat %{buildroot}%{_datadir}/scummvm/neverhood.dat
-install -m644 -D dists/engine-data/mort.dat %{buildroot}%{_datadir}/scummvm/mort.dat
-install -m644 -D dists/engine-data/access.dat %{buildroot}%{_datadir}/scummvm/access.dat
desktop-file-install --vendor scummvm --dir=%{buildroot}/%{_datadir}/applications dists/scummvm.desktop
%clean
@@ -115,29 +92,19 @@ fi
%{_datadir}/pixmaps/scummvm.xpm
%{_datadir}/icons/hicolor/48x48/apps/scummvm.png
%{_datadir}/icons/hicolor/scalable/apps/scummvm.svg
-%{_datadir}/scummvm/scumm*.zip
-%{_datadir}/scummvm/translations.dat
-%{_datadir}/scummvm/pred.dic
-%{_datadir}/scummvm/kyra.dat
-%{_datadir}/scummvm/queen.tbl
-%{_datadir}/scummvm/sky.cpt
-%{_datadir}/scummvm/lure.dat
-%{_datadir}/scummvm/drascula.dat
-%{_datadir}/scummvm/teenagent.dat
-%{_datadir}/scummvm/titanic.dat
-%{_datadir}/scummvm/hugo.dat
-%{_datadir}/scummvm/tony.dat
-%{_datadir}/scummvm/toon.dat
-%{_datadir}/scummvm/wintermute.zip
-%{_datadir}/scummvm/neverhood.dat
-%{_datadir}/scummvm/mort.dat
-%{_datadir}/scummvm/access.dat
+%{_datadir}/appdata/scummvm.appdata.xml
+%{_datadir}/scummvm/*
%{_mandir}/man6/scummvm.6*
#------------------------------------------------------------------------------
# Change Log
#------------------------------------------------------------------------------
%changelog
+* Thu Nov 23 2017 (2.0.0)
+ - remove own libmad since this is now in Fedora itself
+* Fri Jul 11 2014 (1.8.0)
+ - add libmad build patch
+ - re-add mpeg2dec
* Thu Dec 29 2011 (1.4.0-2)
- include libfaad2
* Fri Sep 17 2010 (1.2.0)
diff --git a/dists/riscos/!Boot,feb b/dists/riscos/!Boot,feb
index b286b449fa..fc6cb78b3c 100644
--- a/dists/riscos/!Boot,feb
+++ b/dists/riscos/!Boot,feb
@@ -5,4 +5,4 @@ Set ScummVM$Title "ScummVM"
Set ScummVM$Description "Play certain classic graphical point-and-click adventure games"
Set ScummVM$Publisher "ScummVM Developers"
Set ScummVM$Web "http://www.scummvm.org/"
-Set ScummVM$Version "1.10.0git"
+Set ScummVM$Version "2.0.0git"
diff --git a/dists/scummvm.rc b/dists/scummvm.rc
index e926382aa9..89c1905026 100644
--- a/dists/scummvm.rc
+++ b/dists/scummvm.rc
@@ -73,8 +73,8 @@ pred.dic FILE "dists/pred.dic"
#endif
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,10,0,0
- PRODUCTVERSION 1,10,0,0
+ FILEVERSION 2,0,0,0
+ PRODUCTVERSION 2,0,0,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -92,13 +92,13 @@ BEGIN
VALUE "Comments", "Look! A three headed monkey (TM)! .. Nice use of the TM!\0"
VALUE "CompanyName", "scummvm.org\0"
VALUE "FileDescription", "http://www.scummvm.org/\0"
- VALUE "FileVersion", "1.10.0git\0"
+ VALUE "FileVersion", "2.0.0git\0"
VALUE "InternalName", "scummvm\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.exe\0"
VALUE "ProductName", "ScummVM\0"
- VALUE "ProductVersion", "1.10.0git\0"
+ VALUE "ProductVersion", "2.0.0git\0"
END
END
diff --git a/dists/slackware/scummvm.SlackBuild b/dists/slackware/scummvm.SlackBuild
index 527f567a57..4a20d01fab 100755
--- a/dists/slackware/scummvm.SlackBuild
+++ b/dists/slackware/scummvm.SlackBuild
@@ -9,7 +9,7 @@ if [ "$TMP" = "" ]; then
fi
PKG=$TMP/package-scummvm
-VERSION=1.10.0git
+VERSION=2.0.0git
ARCH=i486
BUILD=1
diff --git a/dists/wii/meta.xml b/dists/wii/meta.xml
index 1cd2e36e42..e961fd16f9 100644
--- a/dists/wii/meta.xml
+++ b/dists/wii/meta.xml
@@ -2,7 +2,7 @@
<app version="1">
<name>ScummVM</name>
<coder>The ScummVM Team</coder>
- <version>1.10.0git@REVISION@</version>
+ <version>2.0.0git@REVISION@</version>
<release_date>@TIMESTAMP@</release_date>
<short_description>Point &amp; Click Adventures</short_description>
<long_description>ScummVM is a program which allows you to run certain classic graphical point-and-click adventure games, provided you already have their data files. The clever part about this: ScummVM just replaces the executables shipped with the games, allowing you to play them on systems for which they were never designed!
diff --git a/doc/de/NEUES b/doc/de/NEUES
index da0fcff4c1..05a769e4ce 100644
--- a/doc/de/NEUES
+++ b/doc/de/NEUES
@@ -2,7 +2,7 @@ Umfangreichere Informationen über die Änderungen des aktuellen experimentellen
Programmcodes finden Sie auf Englisch unter:
https://github.com/scummvm/scummvm/commits/
-1.10.0 (DD.MM.YYYY)
+2.0.0 (DD.MM.YYYY)
Neue Spiele:
- Unterstützung für Full Pipe hinzugefügt.
- Unterstützung für Hi-Res Adventure #3: Cranston Manor hinzugefügt.
diff --git a/engines/drascula/animation.cpp b/engines/drascula/animation.cpp
index c89e5ff738..d9ff90748b 100644
--- a/engines/drascula/animation.cpp
+++ b/engines/drascula/animation.cpp
@@ -1293,7 +1293,7 @@ void DrasculaEngine::animation_5_5(){
}
flags[6] = 1;
- updateVisible();
+ updateVisible(); // sets visible[1] to 1 and visible[2] to 0
pause(12);
loadPic(96, frontSurface);
diff --git a/engines/drascula/rooms.cpp b/engines/drascula/rooms.cpp
index f99f00c8e7..8263483666 100644
--- a/engines/drascula/rooms.cpp
+++ b/engines/drascula/rooms.cpp
@@ -618,7 +618,7 @@ bool DrasculaEngine::room_22(int fl) {
finishSound();
selectVerb(kVerbNone);
removeObject(22);
- updateVisible();
+ updateVisible(); // sets visible[2] to 0 and visible[1] to 1
trackProtagonist = 3;
talk(499);
talk(500);
@@ -825,7 +825,7 @@ bool DrasculaEngine::room_35(int fl) {
visible[1] = 0;
flags[15] = 1;
flags[17] = 1;
- updateVisible();
+ updateVisible(); // sets visible[1] to 0 and visible[3] to 1
} else if (pickedObject == kVerbPick && fl == 149) {
pickObject(13);
visible[3] = 0;
@@ -872,7 +872,7 @@ bool DrasculaEngine::room_53(int fl) {
} else if (pickedObject == 16 && fl == 121) {
flags[2] = 1;
selectVerb(kVerbNone);
- updateVisible();
+ updateVisible(); // sets visible[3] to 0
pickedObject = kVerbMove;
} else if (pickedObject == 16) {
// Wall plug in chapter 5
@@ -906,7 +906,7 @@ bool DrasculaEngine::room_54(int fl) {
pickObject(8);
flags[13] = 1;
talk_mus(10);
- updateVisible();
+ updateVisible(); // sets visible[3] to 0
} else if (pickedObject == 10 && fl == 119) {
pause(4);
talk(436);
@@ -922,7 +922,7 @@ bool DrasculaEngine::room_55(int fl) {
if (pickedObject == kVerbPick && fl == 122) {
pickObject(12);
flags[8] = 1;
- updateVisible();
+ updateVisible(); // sets visible[1] to 0
} else if (fl == 206) {
playSound(11);
animate("det.bin", 17);
@@ -947,7 +947,7 @@ bool DrasculaEngine::room_56(int fl) {
bool DrasculaEngine::room_58(int fl) {
if (pickedObject == kVerbMove && fl == 103) {
flags[8] = 1;
- updateVisible();
+ updateVisible(); // sets isDoor[1] to 1
} else {
hasAnswer = 0;
}
@@ -1665,9 +1665,9 @@ void DrasculaEngine::enterRoom(int roomIndex) {
char fileName[20];
sprintf(fileName, "%d.ald", roomIndex);
- int soc, l, martin = 0, objIsExit = 0;
+ int soc, l, overridenWidth = 0, objIsExit = 0;
float chiquez = 0, pequegnez = 0;
- char pant1[20], pant2[20], pant3[20], pant4[20];
+ char surfaceName[20];
int palLevel = 0;
_hasName = false;
@@ -1685,22 +1685,42 @@ void DrasculaEngine::enterRoom(int roomIndex) {
p.parseString(roomDisk);
p.parseInt(palLevel);
- if (currentChapter == 2)
- p.parseInt(martin);
+ if (currentChapter == 2) {
+ p.parseInt(overridenWidth);
+
+ if (overridenWidth != 0) {
+ curWidth = overridenWidth;
+ p.parseInt(curHeight);
+ p.parseInt(feetHeight);
+ p.parseInt(stepX);
+ p.parseInt(stepY);
+
+ p.parseString(surfaceName);
+ loadPic(surfaceName, frontSurface);
- if (currentChapter == 2 && martin != 0) {
- curWidth = martin;
- p.parseInt(curHeight);
- p.parseInt(feetHeight);
- p.parseInt(stepX);
- p.parseInt(stepY);
+ p.parseString(surfaceName);
+ loadPic(surfaceName, extraSurface);
- p.parseString(pant1);
- p.parseString(pant2);
- p.parseString(pant3);
- p.parseString(pant4);
+ p.parseString(surfaceName);
+ // unused
+
+ p.parseString(surfaceName);
+ loadPic(surfaceName, backSurface);
+
+ strcpy(menuBackground, surfaceName);
+ } else {
+ curWidth = CHARACTER_WIDTH;
+ curHeight = CHARACTER_HEIGHT;
+ feetHeight = FEET_HEIGHT;
+ stepX = STEP_X;
+ stepY = STEP_Y;
+
+ loadPic(97, extraSurface);
+ loadPic(96, frontSurface);
+ loadPic(99, backSurface);
- strcpy(menuBackground, pant4);
+ strcpy(menuBackground, "99.alg");
+ }
}
p.parseInt(numRoomObjs);
@@ -1745,27 +1765,6 @@ void DrasculaEngine::enterRoom(int roomIndex) {
// no need to delete the stream, since TextResourceParser takes ownership
// delete stream;
- if (currentChapter == 2 && martin != 0) {
- loadPic(pant2, extraSurface);
- loadPic(pant1, frontSurface);
- loadPic(pant4, backSurface);
- }
-
- if (currentChapter == 2) {
- if (martin == 0) {
- stepX = STEP_X;
- stepY = STEP_Y;
- curHeight = CHARACTER_HEIGHT;
- curWidth = CHARACTER_WIDTH;
- feetHeight = FEET_HEIGHT;
- loadPic(97, extraSurface);
- loadPic(96, frontSurface);
- loadPic(99, backSurface);
-
- strcpy(menuBackground, "99.alg");
- }
- }
-
for (l = 0; l < numRoomObjs; l++) {
if (objectNum[l] == objExit)
objIsExit = l;
diff --git a/engines/fullpipe/gfx.h b/engines/fullpipe/gfx.h
index a7c0c765e2..a2c83c8131 100644
--- a/engines/fullpipe/gfx.h
+++ b/engines/fullpipe/gfx.h
@@ -214,7 +214,7 @@ public:
virtual bool load(MfcArchive &file);
void addPictureObject(PictureObject *pct);
- BigPicture *getBigPicture(int x, int y) { return _bigPictureArray[y * _bigPictureYDim + x]; }
+ BigPicture *getBigPicture(int x, int y) { return _bigPictureArray[y * _bigPictureXDim + x]; }
};
struct ShadowsItem {
diff --git a/engines/fullpipe/inventory.cpp b/engines/fullpipe/inventory.cpp
index 7cf8fe9712..1a3c234ef6 100644
--- a/engines/fullpipe/inventory.cpp
+++ b/engines/fullpipe/inventory.cpp
@@ -95,7 +95,9 @@ bool Inventory2::loadPartial(MfcArchive &file) { // Inventory2_SerializePartiall
int numInvs = file.readUint32LE();
for (int i = 0; i < numInvs; i++) {
- _inventoryItems.push_back(InventoryItem(file.readUint16LE(), file.readUint16LE()));
+ int16 itemId = file.readUint16LE();
+ int16 count = file.readUint16LE();
+ _inventoryItems.push_back(InventoryItem(itemId, count));
}
return true;
diff --git a/engines/mads/nebular/nebular_scenes3.cpp b/engines/mads/nebular/nebular_scenes3.cpp
index 7323ee893d..6c6afa9a61 100644
--- a/engines/mads/nebular/nebular_scenes3.cpp
+++ b/engines/mads/nebular/nebular_scenes3.cpp
@@ -881,6 +881,9 @@ void Scene307::step() {
_guardTime = 0;
} else if ((_prisonerTimer > 300) && (_game._screenObjects._inputMode != kInputConversation) && (_scene->_animation[0] == nullptr) && !_activePrisonerFl) {
if (!_globals[kMetBuddyBeast]) {
+ if (_prisonerMessageId == -1)
+ _prisonerMessageId = 0x104;
+
int idx = _scene->_kernelMessages.add(Common::Point(5, 51), 0xFDFC, 0, 81, 120, _game.getQuote(_prisonerMessageId));
_scene->_kernelMessages.setQuoted(idx, 4, true);
_prisonerMessageId++;
diff --git a/engines/prince/detection.cpp b/engines/prince/detection.cpp
index 8e7fbd7197..a8fa305332 100644
--- a/engines/prince/detection.cpp
+++ b/engines/prince/detection.cpp
@@ -88,6 +88,18 @@ static const PrinceGameDescription gameDescriptions[] = {
{
{
"prince",
+ "Galador",
+ AD_ENTRY1s("databank.ptc", "a67b55730f3d7064921bd2a59e1063a3", 3892982),
+ Common::RU_RUS,
+ Common::kPlatformWindows,
+ ADGF_TESTING,
+ GUIO1(GUIO_NONE)
+ },
+ kPrinceDataPL
+ },
+ {
+ {
+ "prince",
"The Prince and the Coward",
{
{"databank.ptc", 0, "5fa03833177331214ec1354761b1d2ee", 3565031},
diff --git a/engines/sci/decompressor.cpp b/engines/sci/decompressor.cpp
index ca2298e67e..158119fe86 100644
--- a/engines/sci/decompressor.cpp
+++ b/engines/sci/decompressor.cpp
@@ -89,7 +89,7 @@ uint32 Decompressor::getBitsLSB(int n) {
// fetching more data to buffer if needed
if (_nBits < n)
fetchBitsLSB();
- uint32 ret = (_dwBits & ~((~0) << n));
+ uint32 ret = (_dwBits & ~(0xFFFFFFFFU << n));
_dwBits >>= n;
_nBits -= n;
return ret;
diff --git a/engines/sci/detection_tables.h b/engines/sci/detection_tables.h
index 9d55f02345..4b91ec158c 100644
--- a/engines/sci/detection_tables.h
+++ b/engines/sci/detection_tables.h
@@ -736,7 +736,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "372d059f75856afa6d73dd84cbb8913d", 10783},
{"resource.000", 0, "69b7516962510f780d38519cc15fcc7c", 13022630},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_GK1_FLOPPY },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_GK1_FLOPPY },
// Gabriel Knight - English DOS Floppy (supplied my markcoolio in bug report #2723777)
// SCI interpreter version 2.000.000
@@ -744,7 +744,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "65e8c14092e4c9b3b3538b7602c8c5ec", 10783},
{"resource.000", 0, "69b7516962510f780d38519cc15fcc7c", 13022630},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_GK1_FLOPPY },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_GK1_FLOPPY },
// Gabriel Knight - English DOS Floppy
// SCI interpreter version 2.000.000, VERSION file reports "1.0\nGabriel Knight\n11/22/10:33 pm\n\x1A"
@@ -752,7 +752,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "ef41df08cf2c1f680216cdbeed0f8311", 10783},
{"resource.000", 0, "69b7516962510f780d38519cc15fcc7c", 13022630},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_GK1_FLOPPY },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_GK1_FLOPPY },
// Gabriel Knight - German DOS Floppy (supplied my markcoolio in bug report #2723775)
// SCI interpreter version 2.000.000
@@ -760,7 +760,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "ad6508b0296b25c07b1f58828dc33696", 10789},
{"resource.000", 0, "091cf08910780feabc56f8551b09cb36", 13077029},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformDOS, ADGF_TESTING, GUIO_GK1_FLOPPY },
+ Common::DE_DEU, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_GK1_FLOPPY },
// Gabriel Knight - French DOS Floppy (supplied my kervala in bug report #3611487)
// SCI interpreter version 2.000.000
@@ -768,7 +768,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "236e36cc847cdeafdd5e5fa8cba916ed", 10801},
{"resource.000", 0, "091cf08910780feabc56f8551b09cb36", 13033072},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformDOS, ADGF_TESTING, GUIO_GK1_FLOPPY },
+ Common::FR_FRA, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_GK1_FLOPPY },
// Gabriel Knight - English DOS CD (from jvprat)
// Executable scanning reports "2.000.000", VERSION file reports "01.100.000"
@@ -776,7 +776,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "372d059f75856afa6d73dd84cbb8913d", 10996},
{"resource.000", 0, "69b7516962510f780d38519cc15fcc7c", 12581736},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_GK1_CD_DOS },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_CD, GUIO_GK1_CD_DOS },
// Gabriel Knight - English Windows CD (from jvprat)
// Executable scanning reports "2.000.000", VERSION file reports "01.100.000"
@@ -784,7 +784,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "372d059f75856afa6d73dd84cbb8913d", 10996},
{"resource.000", 0, "69b7516962510f780d38519cc15fcc7c", 12581736},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_CD | ADGF_TESTING, GUIO_GK1_CD_WIN },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_CD, GUIO_GK1_CD_WIN },
// Gabriel Knight - German DOS CD (from Tobis87)
// SCI interpreter version 2.000.000
@@ -792,7 +792,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "a7d3e55114c65647310373cb390815ba", 11392},
{"resource.000", 0, "091cf08910780feabc56f8551b09cb36", 13400497},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_GK1_CD_DOS },
+ Common::DE_DEU, Common::kPlatformDOS, ADGF_CD, GUIO_GK1_CD_DOS },
// Gabriel Knight - Spanish DOS CD (from jvprat)
// Executable scanning reports "2.000.000", VERSION file reports "1.000.000, April 13, 1995"
@@ -800,7 +800,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "7cb6e9bba15b544ec7a635c45bde9953", 11404},
{"resource.000", 0, "091cf08910780feabc56f8551b09cb36", 13381599},
AD_LISTEND},
- Common::ES_ESP, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_GK1_CD_DOS },
+ Common::ES_ESP, Common::kPlatformDOS, ADGF_CD, GUIO_GK1_CD_DOS },
// Gabriel Knight - French DOS CD (from Hkz)
// VERSION file reports "1.000.000, May 3, 1994"
@@ -808,7 +808,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "55f909ba93a2515042a08d8a2da8414e", 11392},
{"resource.000", 0, "091cf08910780feabc56f8551b09cb36", 13325145},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_GK1_CD_DOS },
+ Common::FR_FRA, Common::kPlatformDOS, ADGF_CD, GUIO_GK1_CD_DOS },
// Gabriel Knight - Spanish Windows CD (from jvprat)
// Executable scanning reports "2.000.000", VERSION file reports "1.000.000, April 13, 1995"
@@ -816,7 +816,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "7cb6e9bba15b544ec7a635c45bde9953", 11404},
{"resource.000", 0, "091cf08910780feabc56f8551b09cb36", 13381599},
AD_LISTEND},
- Common::ES_ESP, Common::kPlatformWindows, ADGF_CD | ADGF_TESTING, GUIO_GK1_CD_WIN },
+ Common::ES_ESP, Common::kPlatformWindows, ADGF_CD, GUIO_GK1_CD_WIN },
// Gabriel Knight - English Macintosh (Floppy!)
// This version is hi-res ONLY, so it should NOT get GAMEOPTION_HIGH_RESOLUTION_GRAPHICS
@@ -858,7 +858,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "e0effce11c4908f4b91838741716c83d", 1351},
{"resource.000", 0, "d04cfc7f04b6f74d13025378be49ec2b", 4640330},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_TESTING, GUIO_GK2_DEMO },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO, GUIO_GK2_DEMO },
// Gabriel Knight 2 - English DOS (GOG version) - ressci.* merged in ressci.000
// using Enrico Rolfi's HD/DVD installer: http://gkpatches.vogons.zetafleet.com/
@@ -866,7 +866,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "b996fa1e57389a1e179a00a0049de1f4", 8110},
{"ressci.000", 0, "a19fc3604c6e5407abcf03d59ee87217", 168522221},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_GK2 },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_GK2 },
// Gabriel Knight 2 - English DOS (from jvprat)
// Executable scanning reports "2.100.002", VERSION file reports "1.1"
@@ -884,7 +884,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.006", 0, "ce9359037277b7d7976da185c2fa0aad", 2977},
{"ressci.006", 0, "8e44e03890205a7be12f45aaba9644b4", 60659424},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_GK2 },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_GK2 },
// Gabriel Knight 2 - French DOS (6-CDs Sierra Originals reedition)
// Executable scanning reports "2.100.002", VERSION file reports "1.0"
@@ -902,7 +902,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.006", 0, "11b2e722170b8c93fdaa5428e2c7676f", 3001},
{"ressci.006", 0, "4037d941aec39d2e654e20960429aefc", 60568486},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformDOS, ADGF_TESTING, GUIO_GK2 },
+ Common::FR_FRA, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_GK2 },
// Gabriel Knight 2 - German DOS/Windows (6-CDs original release, provided by m_kiewitz)
// Executable scanning reports "2.100.002", VERSION file reports "1.0"
@@ -920,7 +920,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.005", 0, "9fe7e86d66deabfeb10760990d2b1724", 2053},
{"resmap.006", 0, "c5323f49b7ee6a2c08c4852290e351c0", 2995},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformDOS, ADGF_TESTING, GUIO_GK2 },
+ Common::DE_DEU, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_GK2 },
// Gabriel Knight 2 - English Macintosh
// NOTE: This only contains disc 1 files (as well as the persistent file:
@@ -1847,7 +1847,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "2be9ab94429c721af8e05c507e048a15", 18697},
{"resource.000", 0, "eb63ea3a2c2469dc2d777d351c626404", 203882535},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING, GUIO_KQ7 },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_NO_FLAGS, GUIO_KQ7 },
// King's Quest 7 - English Windows-interpreter-only (supplied by m_kiewitz)
// SCI interpreter version 2.100.002, VERSION file reports "1.51"
@@ -1856,7 +1856,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.000", 0, "eb63ea3a2c2469dc2d777d351c626404", 206626576},
{"resource.aud", 0, "c2a988a16053eb98c7b73a75139902a0", 217716879},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING, GUIO_KQ7 },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_NO_FLAGS, GUIO_KQ7 },
// King's Quest 7 - German Windows-interpreter-only (supplied by markcoolio in bug report #2727402)
// SCI interpreter version 2.100.002, VERSION file reports "1.51"
@@ -1866,7 +1866,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.000", 0, "eb63ea3a2c2469dc2d777d351c626404", 206626576},
{"resource.aud", 0, "3f17bcaf8a9ff6a6c2d4de1a2078fdcc", 258119621},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING, GUIO_KQ7 },
+ Common::DE_DEU, Common::kPlatformWindows, ADGF_NO_FLAGS, GUIO_KQ7 },
// King's Quest 7 - English Windows (from abevi)
// VERSION 1.65c
@@ -1874,7 +1874,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.000", 0, "4948e4e1506f1e1c4e1d47abfa06b7f8", 204385195},
{"resource.map", 0, "40ccafb2195301504eba2e4f4f2c7f3d", 18925},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING, GUIO_KQ7 },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_NO_FLAGS, GUIO_KQ7 },
// King's Quest 7 - German Windows (from blumentopferde in bug report Trac#9738)
// VERSION 1.65c
@@ -1883,7 +1883,16 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.000", 0, "4948e4e1506f1e1c4e1d47abfa06b7f8", 204385195},
{"resource.map", 0, "59d234e4fd61c1377f659c8479a513fb", 18925},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING, GUIO_KQ7 },
+ Common::DE_DEU, Common::kPlatformWindows, ADGF_NO_FLAGS, GUIO_KQ7 },
+
+ // King's Quest 7 - French Windows (from gatesbillou)
+ // VERSION 1.51
+ {"kq7", "", {
+ {"resource.aud", 0, "d8b89ef2f7248c63d5810f2e49fb7255", 205546166},
+ {"resource.000", 0, "eb63ea3a2c2469dc2d777d351c626404", 206626576},
+ {"resource.map", 0, "838b9ff132bd6962026fee832e8a7ddb", 18697},
+ AD_LISTEND},
+ Common::FR_FRA, Common::kPlatformWindows, ADGF_NO_FLAGS, GUIO_KQ7 },
// King's Quest 7 - French Windows (from bgK)
// VERSION 1.65c
@@ -1892,7 +1901,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.000", 0, "4948e4e1506f1e1c4e1d47abfa06b7f8", 204385195},
{"resource.map", 0, "a134fc9138b0830d8197877c52ed7aaa", 18925},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING, GUIO_KQ7 },
+ Common::FR_FRA, Common::kPlatformWindows, ADGF_NO_FLAGS, GUIO_KQ7 },
// King's Quest 7 - English DOS (from FRG)
// SCI interpreter version 2.100.002, VERSION file reports "2.00b"
@@ -1908,7 +1917,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"avi/911.rbt", 0, NULL, -1},
{"avi/912.rbt", 0, NULL, -1},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_KQ7 },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_KQ7 },
// King's Quest 7 - English Windows (from FRG)
// SCI interpreter version 2.100.002, VERSION file reports "2.00b"
@@ -1924,7 +1933,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"avi/e208x11.avi", 0, NULL, -1},
{"avi/int08x11.avi", 0, NULL, -1},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING, GUIO_KQ7 },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_NO_FLAGS, GUIO_KQ7 },
// King's Quest 7 - Italian DOS (from dego93 on bug report Trac#9739)
// VERSION file reports "2.00"
@@ -1933,7 +1942,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.000", 0, "51c1ead1163e19a2de8f121c39df7a76", 200764100},
{"resource.map", 0, "c174fb32f045112e210373a31681d97f", 18709},
AD_LISTEND},
- Common::IT_ITA, Common::kPlatformDOS, ADGF_TESTING, GUIO_KQ7 },
+ Common::IT_ITA, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_KQ7 },
// King's Quest 7 - Italian Windows (from dego93 on bug report Trac#9739)
// VERSION file reports "2.00"
@@ -1942,7 +1951,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.000", 0, "51c1ead1163e19a2de8f121c39df7a76", 200764100},
{"resource.map", 0, "c174fb32f045112e210373a31681d97f", 18709},
AD_LISTEND},
- Common::IT_ITA, Common::kPlatformWindows, ADGF_TESTING, GUIO_KQ7 },
+ Common::IT_ITA, Common::kPlatformWindows, ADGF_NO_FLAGS, GUIO_KQ7 },
// King's Quest 7 - Spanish DOS (from jvprat)
// Executable scanning reports "2.100.002", VERSION file reports "2.00"
@@ -1950,7 +1959,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "0b62693cbe87e3aaca3e8655a437f27f", 18709},
{"resource.000", 0, "51c1ead1163e19a2de8f121c39df7a76", 200764100},
AD_LISTEND},
- Common::ES_ESP, Common::kPlatformDOS, ADGF_TESTING, GUIO_KQ7 },
+ Common::ES_ESP, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_KQ7 },
// King's Quest 7 - Spanish Windows (from jvprat)
// Executable scanning reports "2.100.002", VERSION file reports "2.00"
@@ -1958,7 +1967,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "0b62693cbe87e3aaca3e8655a437f27f", 18709},
{"resource.000", 0, "51c1ead1163e19a2de8f121c39df7a76", 200764100},
AD_LISTEND},
- Common::ES_ESP, Common::kPlatformWindows, ADGF_TESTING, GUIO_KQ7 },
+ Common::ES_ESP, Common::kPlatformWindows, ADGF_NO_FLAGS, GUIO_KQ7 },
// King's Quest 7 - English DOS Non-Interactive Demo
// SCI interpreter version 2.100.002
@@ -1966,7 +1975,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "b44f774108d63faa1d021101221c5a54", 1690},
{"resource.000", 0, "d9659d2cf0c269c6a9dc776707f5bea0", 2433827},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO | ADGF_TESTING, GUIO_KQ7_DEMO },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO_KQ7_DEMO },
// King's Quest 7 - English Windows Demo (from DrMcCoy)
// SCI interpreter version 2.100.002
@@ -1974,7 +1983,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "38e627a37a975aea40cc72b0518b0709", 18412},
{"resource.000", 0, "bad61d50aaa64298fa57a7c6ccd3bccf", 84020382},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_TESTING, GUIO_KQ7_DEMO },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO, GUIO_KQ7_DEMO },
#undef GUIO_KQ7_DEMO
#undef GUIO_KQ7
@@ -1985,7 +1994,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.000", 0, "9b1cddecd4f0720d83661ba7aed28891", 162697},
{"resource.map", 0, "93a2251fa64e729d7a7d2fe56b217c8e", 502},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO6(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOSPEECH, GUIO_NOSFX, GUIO_NOMIDI, GUIO_NOLAUNCHLOAD) },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO6(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOSPEECH, GUIO_NOSFX, GUIO_NOMIDI, GUIO_NOLAUNCHLOAD) },
#endif // ENABLE_SCI32
@@ -2692,7 +2701,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "0c0804434ea62278dd15032b1947426c", 8872},
{"resource.000", 0, "9a9f4870504444cda863dd14d077a680", 18520872},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_LSL6HIRES },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_LSL6HIRES },
// Larry 6 - German DOS CD - HIRES (provided by richiefs in bug report #2670691)
// SCI interpreter version 2.100.002
@@ -2700,7 +2709,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "badfdf446ffed569a310d2c63a249421", 8896},
{"resource.000", 0, "bd944d2b06614a5b39f1586906f0ee88", 18534274},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformDOS, ADGF_TESTING, GUIO_LSL6HIRES },
+ Common::DE_DEU, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_LSL6HIRES },
// Larry 6 - French DOS CD - HIRES (provided by richiefs in bug report #2670691)
// SCI interpreter version 2.100.002
@@ -2708,7 +2717,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "d184e9aa4f2d4b5670ddb3669db82cda", 8896},
{"resource.000", 0, "bd944d2b06614a5b39f1586906f0ee88", 18538987},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformDOS, ADGF_TESTING, GUIO_LSL6HIRES },
+ Common::FR_FRA, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_LSL6HIRES },
#undef GUIO_LSL6HIRES
@@ -2727,7 +2736,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"ressci.000", 0, "5cc6159688b2dc03790a67c90ccc67f9", 10195878},
{"resmap.000", 0, "6a2b2811eef82e87cde91cf1de845af8", 2695},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO | ADGF_TESTING, GUIO_LSL7_DEMO },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO_LSL7_DEMO },
// Larry 7 - English DOS CD (from spookypeanut)
// SCI interpreter version 3.000.000
@@ -2735,7 +2744,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "eae93e1b1d1ccc58b4691c371281c95d", 8188},
{"ressci.000", 0, "89353723488219e25589165d73ed663e", 66965678},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_LSL7 },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_LSL7 },
// Larry 7 - German DOS (from Tobis87)
// SCI interpreter version 3.000.000
@@ -2743,7 +2752,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "c11e6bfcfc2f2d05da47e5a7df3e9b1a", 8188},
{"ressci.000", 0, "a8c6817bb94f332ff498a71c8b47f893", 66971724},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformDOS, ADGF_TESTING, GUIO_LSL7 },
+ Common::DE_DEU, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_LSL7 },
// Larry 7 - French DOS (provided by richiefs in bug report #2670691)
// SCI interpreter version 3.000.000
@@ -2751,7 +2760,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "4407849fd52fe3efb0c30fba60cd5cd4", 8206},
{"ressci.000", 0, "dc37c3055fffbefb494ff22b145d377b", 66964472},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformDOS, ADGF_TESTING, GUIO_LSL7 },
+ Common::FR_FRA, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_LSL7 },
// Larry 7 - Italian DOS CD (from glorifindel)
// SCI interpreter version 3.000.000
@@ -2759,7 +2768,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "9852a97141f789413f29bf956052acdb", 8212},
{"ressci.000", 0, "440b9fed89590abb4e4386ed6f948ee2", 67140181},
AD_LISTEND},
- Common::IT_ITA, Common::kPlatformDOS, ADGF_TESTING, GUIO_LSL7 },
+ Common::IT_ITA, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_LSL7 },
// Larry 7 - Spanish DOS (from the Leisure Suit Larry Collection)
// Executable scanning reports "3.000.000", VERSION file reports "1.0s"
@@ -2767,7 +2776,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "8f3d603e1acc834a5d598b30cdfc93f3", 8188},
{"ressci.000", 0, "32792f9bc1bf3633a88b382bb3f6e40d", 67071418},
AD_LISTEND},
- Common::ES_ESP, Common::kPlatformDOS, ADGF_TESTING, GUIO_LSL7 },
+ Common::ES_ESP, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_LSL7 },
#undef GUIO_LSL7_DEMO
#undef GUIO_LSL7
@@ -2793,7 +2802,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "543124606352bfa5e07696ddf2a669be", 64},
{"resource.000", 0, "5d7714416b612463d750fb9c5690c859", 28952},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO | ADGF_TESTING, GUIO_LIGHTHOUSE_DEMO },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO_LIGHTHOUSE_DEMO },
// Lighthouse - English Windows Demo
// Executable scanning reports "3.000.000", VERSION file reports "1.00"
@@ -2801,7 +2810,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "3bdee7a16926975a4729f75cf6b80a92", 1525},
{"ressci.000", 0, "3c585827fa4a82f4c04a56a0bc52ccee", 11494351},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO | ADGF_TESTING, GUIO_LIGHTHOUSE_DEMO },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO_LIGHTHOUSE_DEMO },
// Lighthouse - English Windows Glider Demo
// Executable scanning reports "3.000.000"
@@ -2809,7 +2818,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "fca5bec5f778fc3f86d3176dc4ae6e54", 346},
{"ressci.000", 0, "896e81b6d70940c3b0696ef51cee51bc", 3300500},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO | ADGF_TESTING, GUIO_LIGHTHOUSE_DEMO },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO_LIGHTHOUSE_DEMO },
// Lighthouse - English DOS (from jvprat)
// Executable scanning reports "3.000.000", VERSION file reports "1.1"
@@ -2819,7 +2828,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.002", 0, "c68db5333f152fea6ca2dfc75cad8b34", 7573},
{"ressci.002", 0, "175468431a979b9f317c294ce3bc1430", 94628315},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_LIGHTHOUSE },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_LIGHTHOUSE },
// Lighthouse - Japanese DOS (from m_kiewitz)
// Executable scanning reports "3.000.000", VERSION file reports "1.0C"
@@ -2829,7 +2838,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.002", 0, "723fc742c623d8933e5753a264324cb0", 7657},
{"ressci.002", 0, "175468431a979b9f317c294ce3bc1430", 94627469},
AD_LISTEND},
- Common::JA_JPN, Common::kPlatformDOS, ADGF_TESTING, GUIO_LIGHTHOUSE },
+ Common::JA_JPN, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_LIGHTHOUSE },
// Lighthouse - Spanish DOS (from jvprat)
// Executable scanning reports "3.000.000", VERSION file reports "1.1"
@@ -2839,7 +2848,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.002", 0, "e7dc85884a2417e2eff9de0c63dd65fa", 7630},
{"ressci.002", 0, "3c8d627c555b0e3e4f1d9955bc0f0df4", 94631127},
AD_LISTEND},
- Common::ES_ESP, Common::kPlatformDOS, ADGF_TESTING, GUIO_LIGHTHOUSE },
+ Common::ES_ESP, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_LIGHTHOUSE },
// Lighthouse - French DOS (from bgK)
// Executable scanning reports "3.000.000", VERSION file reports "1.1"
@@ -2849,7 +2858,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.002", 0, "703e7ab04bd358e76bc098995d71f36a", 7642},
{"ressci.002", 0, "6635764dc258b2041ca9a387e5aaab25", 115212682},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformDOS, ADGF_TESTING, GUIO_LIGHTHOUSE },
+ Common::FR_FRA, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_LIGHTHOUSE },
#undef GUIO_LIGHTHOUSE_DEMO
#undef GUIO_LIGHTHOUSE
@@ -2985,7 +2994,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "5159a1578c4306bfe070a3e4d8c2e1d3", 4741},
{"resource.000", 0, "1926925c95d82f0999590e93b02887c5", 15150768},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_MOTHERGOOSEHIRES },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_MOTHERGOOSEHIRES },
// Mixed-Up Mother Goose Deluxe - Multilingual Windows CD (EN/FR/DE/ES)
// Executable scanning reports "2.100.002"
@@ -2993,7 +3002,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "ef611af561898dcfea87846919ebf3eb", 4969},
{"ressci.000", 0, "227685bc59d90821978d330713e44a7a", 17205800},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_MOTHERGOOSEHIRES },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_MOTHERGOOSEHIRES },
#undef GUIO_MOTHERGOOSEHIRES
@@ -3038,7 +3047,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.007", 0, "aa8175cfc93242af6f5e65bdceaafc0d", 7972},
//{"ressci.007", 0, "3aae6559aa1df273bc542d5ac6330d75", 25859038},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_PHANTASMAGORIA },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_PHANTASMAGORIA },
// Phantasmagoria - English DOS (from jvprat)
// Executable scanning reports "2.100.002", VERSION file reports "1.100.000UK"
@@ -3058,7 +3067,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.007", 0, "afbd16ea77869a720afa1c5371de107d", 7972},
//{"ressci.007", 0, "3aae6559aa1df273bc542d5ac6330d75", 25859038},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_PHANTASMAGORIA },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_PHANTASMAGORIA },
// Phantasmagoria - German DOS/Windows
// Windows executable scanning reports "unknown" - "Sep 19 1995 09:39:48"
@@ -3081,7 +3090,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.007", 0, "06309b8043aecb85bd507b15d16cb544", 7984},
//{"ressci.007", 0, "3aae6559aa1df273bc542d5ac6330d75", 26898681},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformDOS, ADGF_TESTING, GUIO_PHANTASMAGORIA },
+ Common::DE_DEU, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_PHANTASMAGORIA },
// Phantasmagoria - French DOS
// Supplied by Kervala in bug #6574
@@ -3100,7 +3109,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"ressci.006", 0, "3aae6559aa1df273bc542d5ac6330d75", 85415107},
{"resmap.007", 0, "5633960bc106c39ca91d2d8fce18fd2d", 7984},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformDOS, ADGF_TESTING, GUIO_PHANTASMAGORIA },
+ Common::FR_FRA, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_PHANTASMAGORIA },
// Phantasmagoria - French DOS (supplied by enclume in bug report Trac#9910)
// VERSION file reports "1.100.000"
@@ -3119,7 +3128,26 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"ressci.006", 0, "3aae6559aa1df273bc542d5ac6330d75", 81076474},
{"resmap.007", 0, "3d15c24fe60e8f7171480bfaa2d566bc", 7984},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformDOS, ADGF_TESTING, GUIO_PHANTASMAGORIA },
+ Common::FR_FRA, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_PHANTASMAGORIA },
+
+ // Phantasmagoria - Italian DOS (from AlessioR)
+ // VERSION file reports "1.100.000"
+ {"phantasmagoria", "", {
+ {"resmap.001", 0, "fba09c05c18e526fa35b30c33c12b150", 11524},
+ {"ressci.001", 0, "3aae6559aa1df273bc542d5ac6330d75", 65804446},
+ {"resmap.002", 0, "1cf3e74510804f1c87f83e25b61042cb", 12064},
+ {"ressci.002", 0, "3aae6559aa1df273bc542d5ac6330d75", 71473087},
+ {"resmap.003", 0, "6c22d9ff6a9d3803d4d7435b8bf6b2f7", 12340},
+ {"ressci.003", 0, "3aae6559aa1df273bc542d5ac6330d75", 73552108},
+ {"resmap.004", 0, "73e22dc5e0f5134a7e70ebe6d52735b9", 12562},
+ {"ressci.004", 0, "3aae6559aa1df273bc542d5ac6330d75", 75712511},
+ {"resmap.005", 0, "197bc2be5412bea7b8aaf9a65a2da92f", 12616},
+ {"ressci.005", 0, "3aae6559aa1df273bc542d5ac6330d75", 78868623},
+ {"resmap.006", 0, "673ca2dda6f9337459de768f52f63c7e", 12538},
+ {"ressci.006", 0, "3aae6559aa1df273bc542d5ac6330d75", 77794567},
+ {"resmap.007", 0, "7d6abc183155daf93e0452a58ddf16dc", 7984},
+ AD_LISTEND},
+ Common::IT_ITA, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_PHANTASMAGORIA },
// Phantasmagoria - English DOS Demo
// Executable scanning reports "2.100.002"
@@ -3127,7 +3155,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.001", 0, "416138651ea828219ca454cae18341a3", 11518},
{"ressci.001", 0, "3aae6559aa1df273bc542d5ac6330d75", 65844612},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO | ADGF_TESTING, GUIO_PHANTASMAGORIA_DEMO },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO_PHANTASMAGORIA_DEMO },
// Phantasmagoria - English DOS/Windows (GOG version) - ressci.* merged in ressci.000
// Windows executable scanning reports "2.100.002" - "Sep 19 1995 15:09:43"
@@ -3138,7 +3166,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"ressci.000", 0, "cd5967f9b9586e3380645961c0765be3", 116822037},
{"resmap.000", 0, "3cafc1c6a53945c1f3babbfd6380c64c", 16468},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_PHANTASMAGORIA },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_PHANTASMAGORIA },
// Phantasmagoria - English Macintosh
// NOTE: This only contains disc 1 files (as well as the two persistent files:
@@ -3202,7 +3230,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.005", 0, "8bd5ceeedcbe16dfe55d1b90dcd4be84", 1942},
{"ressci.005", 0, "05f9fe2bee749659acb3cd2c90252fc5", 67905112},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_PHANTASMAGORIA2 },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_PHANTASMAGORIA2 },
// Phantasmagoria 2 - English DOS (GOG version) (supplied by littleboy in patch #1360)
// Note: Fully uncensored, basically the US release, but ressci.* merged into ressci.000
@@ -3213,7 +3241,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"ressci.000", 0, "c54f26d9f43f908151263254b6d97053", 108134481},
{"resmap.000", 0, "de154a223a9ef4ea7358b76adc38ef5b", 2956},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_PHANTASMAGORIA2 },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_PHANTASMAGORIA2 },
// Phantasmagoria 2 - German DOS/Windows (supplied by AReim1982)
// Note: Fully uncensored, but one scene is missing probably because of a mastering error (Curtis + Therese meeting near water cooler)
@@ -3235,7 +3263,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.005", 0, "2fc48a4a5a73b726994f189da51a8b2a", 1954},
{"ressci.005", 0, "e94005890d22dd3b7f605a2a7c025803", 68232146},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_PHANTASMAGORIA2 },
+ Common::DE_DEU, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_PHANTASMAGORIA2 },
// Phantasmagoria 2 - French DOS/Windows (supplied by bgK)
// Windows executable scanning reports "3.000.000" - "Nov 09 1996 16:03:00"
@@ -3253,7 +3281,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.005", 0, "7811a1801660090725ceef799b62fc72", 1954},
{"ressci.005", 0, "b6f090a2c8fc955d17b8a47085b2f890", 68231525},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_PHANTASMAGORIA2 },
+ Common::FR_FRA, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_PHANTASMAGORIA2 },
// Phantasmagoria 2 - Japanese Windows (supplied by m_kiewitz)
// Features English voices w/ Japanese subtitles. Background images were also localized to Japanese.
@@ -3275,7 +3303,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
//{"resaud.002", 0, "3b4c5f92e5143fd3539b227e48ac2929", 8414502},
//{"ressfx.001", 0, "343a6ca9ddd614541b11b155de6368ac", 90268706},
AD_LISTEND},
- Common::JA_JPN, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_PHANTASMAGORIA2 },
+ Common::JA_JPN, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_PHANTASMAGORIA2 },
#undef GUIO_PHANTASMAGORIA2
#undef GUIO_PHANTASMAGORIA2_CENSORED
@@ -3522,7 +3550,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "379dfe80ed6bd16c47e4b950c4722eac", 11374},
{"resource.000", 0, "fd316a09b628b7032248139003369022", 18841068},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_PQ4_CD },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_CD, GUIO_PQ4_CD },
// Police Quest 4 - French DOS CD (French text, English speech) (From bgK)
// Executable scanning reports "2.100.002", VERSION file reports "1.000.000"
@@ -3530,7 +3558,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "c378f024f27332deccb1bae3b78e693c", 11386},
{"resource.000", 0, "3dd3ff150b78899500d4e1bea9b733c6", 18866242},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_PQ4_CD },
+ Common::FR_FRA, Common::kPlatformDOS, ADGF_CD, GUIO_PQ4_CD },
// Police Quest 4 - German DOS CD (German text, English speech)
// Supplied by markcoolio in bug report #3392955
@@ -3538,7 +3566,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "a398076371ed0e1e706c8f9fb9fc7ac5", 11386},
{"resource.000", 0, "6ff21954e0a2c5992279e7eb787c8d56", 18918747},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_PQ4_CD },
+ Common::DE_DEU, Common::kPlatformDOS, ADGF_CD, GUIO_PQ4_CD },
// Police Quest 4 - English DOS
// SCI interpreter version 2.000.000 (a guess?)
@@ -3546,7 +3574,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "aed9643158ccf01b71f359db33137f82", 9895},
{"resource.000", 0, "da383857b3be1e4514daeba2524359e0", 15141432},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_PQ4_FLOPPY },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_PQ4_FLOPPY },
// Police Quest 4 - French DOS (supplied by abevi in bug report #2612718)
// SCI interpreter version 2.000.000
@@ -3554,7 +3582,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "008030846edcc7c5c7a812c7f4ae4ceb", 9256},
{"resource.000", 0, "6ba98bd2e436739d87ecd2a9b99cabb4", 14730153},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformDOS, ADGF_TESTING, GUIO_PQ4_FLOPPY },
+ Common::FR_FRA, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_PQ4_FLOPPY },
// Police Quest 4 - German DOS (supplied by markcoolio in bug report #2723840)
// SCI interpreter version 2.000.000 (a guess?)
@@ -3562,7 +3590,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "2393ee728ab930b2762cb5889f9b5aff", 9256},
{"resource.000", 0, "6ba98bd2e436739d87ecd2a9b99cabb4", 14730155},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformDOS, ADGF_TESTING, GUIO_PQ4_FLOPPY },
+ Common::DE_DEU, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_PQ4_FLOPPY },
#undef GUIO_PQ4_FLOPPY
#undef GUIO_PQ4_CD
@@ -4044,7 +4072,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.001", 0, "775304e9b2a545156be4d94209550094", 1393},
{"ressci.001", 0, "259437fd75fdf51e8207fda8c01fa4fd", 2334384},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO | ADGF_TESTING, GUIO_RAMA_DEMO },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO_RAMA_DEMO },
// RAMA - English DOS/Windows (from jvprat)
// Executable scanning reports "3.000.000", VERSION file reports "1.100.000"
@@ -4056,7 +4084,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.003", 0, "31ef4c0621711585d031f0ae81707251", 1636},
{"ressci.003", 0, "2a68edd064e5e4937b5e9c74b38f2082", 6860492},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_RAMA },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_RAMA },
// RAMA - English DOS/Windows (from Quietust, in bug report #2850645)
{"rama", "", {
@@ -4067,7 +4095,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.003", 0, "48841e4b84ef1b98b48d43566fda9e13", 1636},
{"ressci.003", 0, "2a68edd064e5e4937b5e9c74b38f2082", 6870356},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_RAMA },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_RAMA },
// RAMA - German DOS/Windows CD (from farmboy0, in gh-397)
{"rama", "", {
@@ -4078,7 +4106,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.003", 0, "222096000bd83a1d56577114a452cccf", 1636},
{"ressci.003", 0, "2a68edd064e5e4937b5e9c74b38f2082", 6954219},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformDOS, ADGF_TESTING, GUIO_RAMA },
+ Common::DE_DEU, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_RAMA },
// RAMA - French DOS/Windows CD (from bgK)
// Executable scanning reports "3.000.000", VERSION file reports "1.000.000"
@@ -4090,14 +4118,14 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.003", 0, "fd2ce2312084e60b2cc5194a799873d0", 1636},
{"ressci.003", 0, "2a68edd064e5e4937b5e9c74b38f2082", 6379952},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformDOS, ADGF_TESTING, GUIO_RAMA },
+ Common::FR_FRA, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_RAMA },
// RAMA - Italian DOS/Windows CD (from glorifindel)
{"rama", "", {
{"ressci.001", 0, "2a68edd064e5e4937b5e9c74b38f2082", 70611091},
{"resmap.001", 0, "70ba2ff04a2b7fb2c52420ba7fbd47c2", 8338},
AD_LISTEND},
- Common::IT_ITA, Common::kPlatformDOS, ADGF_TESTING, GUIO_RAMA },
+ Common::IT_ITA, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_RAMA },
#undef GUIO_RAMA_DEMO
#undef GUIO_RAMA
@@ -4121,21 +4149,21 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "f2ead37749ed8f6535a2445a7d05a0cc", 46525},
{"ressci.000", 0, "4294c6d7510935f2e0a52e302073c951", 262654836},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_SHIVERS },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_SHIVERS },
// Shivers - German Windows (from Tobis87)
{"shivers", "", {
{"resmap.000", 0, "f483d0a1f78334c18052e92785c3086e", 46537},
{"ressci.000", 0, "6751b144671e2deed919eb9d284b07eb", 262390692},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_SHIVERS },
+ Common::DE_DEU, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_SHIVERS },
// Shivers - French Windows (from legluondunet in bug report Trac#9742)
{"shivers", "", {
{"resmap.000", 0, "73bee036dc8ece0d03f637eb340ea428", 46543},
{"ressci.000", 0, "8d45ebb1e5a13468d10e676b8dbce682", 262161072},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_SHIVERS },
+ Common::FR_FRA, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_SHIVERS },
// Shivers - English Windows Non-interactive Demo
// Executable scanning reports "2.100.002"
@@ -4143,14 +4171,14 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "d9e0bc5eddefcbe47f528760085d8927", 1186},
{"ressci.000", 0, "3a93c6340b54e07e65d0e5583354d186", 10505469},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_SHIVERS },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_DROPPLATFORM, GUIO_SHIVERS },
// Shivers - English Windows Interactive Demo (from bgK in bug report Trac#9745)
{"shivers", "Demo", {
{"resmap.000", 0, "58a20b0c839d31d56802ead6c8f953c4", 7069},
{"ressci.000", 0, "f9eb6338f658945feadd4d27e58bdb93", 37404155},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_SHIVERS },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_DROPPLATFORM, GUIO_SHIVERS },
#undef GUIO_SHIVERS_DEMO
#undef GUIO_SHIVERS
@@ -4753,7 +4781,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "6dddfa3a8f3a3a513ec9dfdfae955005", 10528},
{"resource.000", 0, "c4259ab7355aead07773397b1052827d", 41150806},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_SQ6 },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_SQ6 },
// Space Quest 6 - English DOS/Win3.11 CD ver 1.11 (from FRG)
// SCI interpreter version 2.100.002 (just a guess)
@@ -4761,7 +4789,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "e0615d6e4e10e37ae42e6a2a95aaf145", 10528},
{"resource.000", 0, "c4259ab7355aead07773397b1052827d", 41150806},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_SQ6 },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_SQ6 },
// Space Quest 6 - French DOS/Win3.11 CD (from French magazine Joystick - September 1997)
// Executable scanning reports "2.100.002", VERSION file reports "1.0"
@@ -4769,7 +4797,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "3c831625931d5079b73ae8c275f52c95", 10534},
{"resource.000", 0, "4195ca940f759424f62b90e262cc1737", 40932397},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformDOS, ADGF_TESTING, GUIO_SQ6 },
+ Common::FR_FRA, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_SQ6 },
// Space Quest 6 - German DOS (from Tobis87, updated info from markcoolio in bug report #2723884)
// SCI interpreter version 2.100.002 (just a guess)
@@ -4777,7 +4805,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "664d797415484f85c90b1b45aedc7686", 10534},
{"resource.000", 0, "ba87ba91e5bdabb4169dd0df75777722", 40933685},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformDOS, ADGF_TESTING, GUIO_SQ6 },
+ Common::DE_DEU, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_SQ6 },
// Space Quest 6 - English DOS/Win3.11 Interactive Demo (from FRG)
// SCI interpreter version 2.100.002 (just a guess)
@@ -4785,7 +4813,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "368f07b07433db3f819fa3fa0e5efee5", 2572},
{"resource.000", 0, "ab12724e078dea34b624e0d2a38dcd7c", 2272050},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO | ADGF_TESTING, GUIO_SQ6_DEMO },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO_SQ6_DEMO },
// Space Quest 6 - English Win3.11 Demo (from Sneak Peeks 2 CD)
// Executable scanning reports "2.100.002", VERSION file reports "1.000.000"
@@ -4793,7 +4821,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "5cf3f0db76080a4ac327190bd027e355", 2164},
{"resource.000", 0, "ab12724e078dea34b624e0d2a38dcd7c", 2159708},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_TESTING, GUIO_SQ6_DEMO },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO, GUIO_SQ6_DEMO },
#undef GUIO_SQ6_DEMO
#undef GUIO_SQ6
@@ -4842,7 +4870,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "9a3e172cde9963d0a969f26469318cec", 3403},
{"ressci.000", 0, "db3e290481c35c3224e9602e71e4a1f1", 5073868},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN_DEMO },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_DROPPLATFORM, GUIO_TORIN_DEMO },
// Torin's Passage - Multilingual EN/FR/DE w/ English audio Windows CD
// Also matches GOG.com English-only release
@@ -4856,21 +4884,21 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "bb3b0b22ff08df54fbe2d06263409be6", 9799},
{"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_TORIN },
{"torin", "", {
{"resmap.000", 0, "bb3b0b22ff08df54fbe2d06263409be6", 9799},
{"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
{"french/msg/0.msg", 0, "cbf314308636380a96f20a76f2a26ce5", 5857},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
+ Common::FR_FRA, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_TORIN },
{"torin", "", {
{"resmap.000", 0, "bb3b0b22ff08df54fbe2d06263409be6", 9799},
{"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
{"german/msg/0.msg", 0, "374ce3a7e540e1f4917d132f74f356b8", 5993},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
+ Common::DE_DEU, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_TORIN },
// from jvprat and m_kiewitz
{"torin", "", {
@@ -4878,7 +4906,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
{"spanish/msg/0.msg", 0, "3c468ee0a8595d64d93df68054b116d7", 5681},
AD_LISTEND},
- Common::ES_ESP, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
+ Common::ES_ESP, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_TORIN },
// from glorifindel
// TODO: Need to get ahold of italian/msg/0.msg from an Italian release
@@ -4887,7 +4915,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
// {"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
// // {"italian/msg/0.msg", 0, ?, ?},
// AD_LISTEND},
-// Common::IT_ITA, Common::kPlatformWindows, ADGF_TESTING, GUIO_TORIN },
+// Common::IT_ITA, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_TORIN },
// ---
@@ -4898,19 +4926,19 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "e55c3097329b3c53752301e01c6af2fb", 9787},
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56127540},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_TORIN },
{"torin", "", {
{"resmap.000", 0, "e55c3097329b3c53752301e01c6af2fb", 9787},
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56127540},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
+ Common::FR_FRA, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_TORIN },
{"torin", "", {
{"resmap.000", 0, "e55c3097329b3c53752301e01c6af2fb", 9787},
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56127540},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
+ Common::DE_DEU, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_TORIN },
// ---
@@ -4922,19 +4950,19 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "66ed46e3e56f487e688d52f05b33d0ba", 9787},
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56126981},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_TORIN },
{"torin", "", {
{"resmap.000", 0, "66ed46e3e56f487e688d52f05b33d0ba", 9787},
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56126981},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
+ Common::FR_FRA, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_TORIN },
{"torin", "", {
{"resmap.000", 0, "66ed46e3e56f487e688d52f05b33d0ba", 9787},
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56126981},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
+ Common::DE_DEU, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_TORIN },
// ---
@@ -4946,7 +4974,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{ "ressci.000", 0, "e672da099fb1663b87c78abc6c8ba2a4", 130622695 },
{ "resmap.000", 0, "643859f8f2be8e7701611e29b3b65208", 9799 },
AD_LISTEND },
- Common::RU_RUS, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
+ Common::RU_RUS, Common::kPlatformWindows, ADGF_DROPPLATFORM, GUIO_TORIN },
// Torin's Passage - English Macintosh
{"torin", "", {
diff --git a/engines/sci/graphics/cursor.cpp b/engines/sci/graphics/cursor.cpp
index 6b18dce518..9c26d816a1 100644
--- a/engines/sci/graphics/cursor.cpp
+++ b/engines/sci/graphics/cursor.cpp
@@ -113,7 +113,7 @@ void GfxCursor::kernelSetShape(GuiResourceId resourceId) {
byte colorMapping[4];
int16 x, y;
byte color;
- int16 maskA, maskB;
+ uint16 maskA, maskB;
byte *pOut;
int16 heightWidth;
diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp
index af2ff60d59..eb786bce03 100644
--- a/engines/sci/resource.cpp
+++ b/engines/sci/resource.cpp
@@ -1805,7 +1805,7 @@ int ResourceManager::readResourceMapSCI0(ResourceSource *map) {
}
}
- addResource(resId, source, offset & (((~bMask) << 24) | 0xFFFFFF), 0, map->getLocationName());
+ addResource(resId, source, offset & ((((byte)~bMask) << 24) | 0xFFFFFF), 0, map->getLocationName());
}
} while (!fileStream->eos());
diff --git a/engines/tinsel/object.h b/engines/tinsel/object.h
index 0b6efc3356..097e1872d1 100644
--- a/engines/tinsel/object.h
+++ b/engines/tinsel/object.h
@@ -34,7 +34,7 @@ struct PALQ;
enum {
/** the maximum number of objects */
- NUM_OBJECTS = 256,
+ NUM_OBJECTS = 512,
// object flags
DMA_WNZ = 0x0001, ///< write non-zero data
diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp
index a3ed3abb5b..247070d59c 100644
--- a/engines/tsage/core.cpp
+++ b/engines/tsage/core.cpp
@@ -93,7 +93,7 @@ InvObject::InvObject(int strip, int frame) {
void InvObject::setCursor() {
if (g_vm->getGameID() != GType_Ringworld) {
// All other games
- _cursorId = (CursorType)BF_GLOBALS._inventory->indexOf(this);
+ _cursorId = (CursorType)g_globals->_inventory->indexOf(this);
g_globals->_events.setCursor(_cursorId);
} else {
// Ringworld cursor handling
diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index e8d51109b1..f54efb5a8a 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -387,9 +387,13 @@ void SceneExt::postInit(SceneObjectList *OwnerList) {
int prevScene = R2_GLOBALS._sceneManager._previousScene;
int sceneNumber = R2_GLOBALS._sceneManager._sceneNumber;
if (g_vm->getFeatures() & GF_DEMO) {
- if (((prevScene == -1) && (sceneNumber != 180) && (sceneNumber != 205) && (sceneNumber != 50))
+ if (prevScene == 0 && sceneNumber == 180) {
+ // Very start of the demo, title & intro about to be shown
+ R2_GLOBALS._uiElements._active = false;
+ R2_GLOBALS._uiElements.hide();
+ } else if (((prevScene == -1) && (sceneNumber != 180) && (sceneNumber != 205) && (sceneNumber != 50))
|| (prevScene == 0) || (sceneNumber == 600)
- || ((prevScene == 205 || prevScene == 180) && (sceneNumber == 100))) {
+ || ((prevScene == 205 || prevScene == 180 || prevScene == 50) && (sceneNumber == 100))) {
R2_GLOBALS._uiElements._active = true;
R2_GLOBALS._uiElements.show();
} else {
diff --git a/engines/tsage/ringworld2/ringworld2_scenes0.cpp b/engines/tsage/ringworld2/ringworld2_scenes0.cpp
index 16fb870120..a9f879f84b 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes0.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes0.cpp
@@ -1659,6 +1659,7 @@ void Scene180::signal() {
case 10:
loadScene(4002);
R2_GLOBALS._scenePalette.loadPalette(0);
+ R2_GLOBALS._interfaceY = SCREEN_HEIGHT;
setSceneDelay(6);
break;
diff --git a/engines/tsage/saveload.cpp b/engines/tsage/saveload.cpp
index 3cb8e52692..03f615db21 100644
--- a/engines/tsage/saveload.cpp
+++ b/engines/tsage/saveload.cpp
@@ -211,12 +211,14 @@ Common::Error Saver::restore(int slot) {
// Note: I don't store pointers to instantiated objects here, because it's not necessary - the mere act
// of instantiating a saved object registers it with the saver, and will then be resolved to whatever
// object originally had a pointer to it as part of the post-processing step
+ DynObjects dynObjects;
Common::String className;
serializer.syncString(className);
while (className != "END") {
SavedObject *savedObject;
if (!_factoryPtr || ((savedObject = _factoryPtr(className)) == NULL))
error("Unknown class name '%s' encountered trying to restore savegame", className.c_str());
+ dynObjects.push_back(savedObject);
// Populate the contents of the object
savedObject->synchronize(serializer);
@@ -226,7 +228,12 @@ Common::Error Saver::restore(int slot) {
}
// Post-process any unresolved pointers to get the correct pointer
- resolveLoadPointers();
+ resolveLoadPointers(dynObjects);
+
+ // Post-process safety check: if any dynamically created objects didn't get any
+ // references, then delete them, since they'd never be freed otherwise
+ for (DynObjects::iterator i = dynObjects.begin(); i != dynObjects.end(); ++i)
+ delete *i;
delete saveFile;
@@ -392,7 +399,7 @@ void Saver::listObjects() {
/**
* Returns the pointer associated with the specified object index
*/
-void Saver::resolveLoadPointers() {
+void Saver::resolveLoadPointers(DynObjects &dynObjects) {
if (_unresolvedPtrs.size() == 0)
// Nothing to resolve
return;
@@ -410,6 +417,9 @@ void Saver::resolveLoadPointers() {
SavedObject **objPP = r._savedObject;
*objPP = pObj;
iPtr = _unresolvedPtrs.erase(iPtr);
+
+ // If it's a dynamic object, remove it from the dynamic objects list
+ dynObjects.remove(pObj);
} else {
++iPtr;
}
diff --git a/engines/tsage/saveload.h b/engines/tsage/saveload.h
index be5ff51ffb..04a1e02b28 100644
--- a/engines/tsage/saveload.h
+++ b/engines/tsage/saveload.h
@@ -201,6 +201,7 @@ public:
typedef SavedObject *(*SavedObjectFactory)(const Common::String &className);
class Saver {
+ typedef Common::List<SavedObject *> DynObjects;
private:
Common::List<SavedObject *> _objList;
FunctionList<bool> _saveNotifiers;
@@ -213,7 +214,7 @@ private:
bool _macroSaveFlag;
bool _macroRestoreFlag;
- void resolveLoadPointers();
+ void resolveLoadPointers(DynObjects &dynObjects);
public:
Saver();
~Saver();
diff --git a/engines/tsage/sound.cpp b/engines/tsage/sound.cpp
index 0d3fb55dd3..044bd567d4 100644
--- a/engines/tsage/sound.cpp
+++ b/engines/tsage/sound.cpp
@@ -23,6 +23,7 @@
#include "audio/fmopl.h"
#include "audio/decoders/raw.h"
#include "common/config-manager.h"
+#include "common/timer.h"
#include "audio/audiostream.h"
#include "tsage/core.h"
#include "tsage/globals.h"
@@ -70,7 +71,7 @@ SoundManager::~SoundManager() {
}
sfTerminate();
-// g_system->getTimerManager()->removeTimerProc(_sfUpdateCallback);
+ g_system->getTimerManager()->removeTimerProc(&sfSoundServer);
}
// Free any allocated voice type structures
@@ -90,12 +91,7 @@ void SoundManager::postInit() {
g_saver->addLoadNotifier(&SoundManager::loadNotifier);
g_saver->addListener(this);
-
-// I originally separated the sound manager update method into a separate thread, since
-// it handles updates for both music and Fx. However, since Adlib updates also get done in a
-// thread, and doesn't get too far ahead, I've left it to the AdlibSoundDriver class to
-// call the update method, rather than having it be called separately
-// g_system->getTimerManager()->installTimerProc(_sfUpdateCallback, 1000000 / SOUND_FREQUENCY, NULL, "tsageSoundUpdate");
+ g_system->getTimerManager()->installTimerProc(&sfSoundServer, 1000000 / CALLBACKS_PER_SECOND, NULL, "tsageSoundUpdate");
_sndmgrReady = true;
}
}
@@ -147,10 +143,6 @@ void SoundManager::syncSounds() {
}
}
-void SoundManager::update() {
- sfSoundServer();
-}
-
Common::List<SoundDriverEntry> &SoundManager::buildDriverList(bool detectFlag) {
assert(_sndmgrReady);
_availableDrivers.clear();
@@ -382,7 +374,10 @@ void SoundManager::rethinkVoiceTypes() {
sfRethinkVoiceTypes();
}
-void SoundManager::sfSoundServer() {
+void SoundManager::sfSoundServer(void *) {
+ Common::StackLock slock1(SoundManager::sfManager()._serverDisabledMutex);
+ Common::StackLock slock2(SoundManager::sfManager()._serverSuspendedMutex);
+
if (sfManager()._needToRethink) {
sfRethinkVoiceTypes();
sfManager()._needToRethink = false;
@@ -544,10 +539,6 @@ void SoundManager::sfUpdateVoiceStructs2() {
}
}
-void SoundManager::sfUpdateCallback(void *ref) {
- ((SoundManager *)ref)->update();
-}
-
/*--------------------------------------------------------------------------*/
void SoundManager::saveNotifier(bool postFlag) {
@@ -1562,7 +1553,9 @@ void Sound::play(int soundNum) {
}
void Sound::stop() {
- g_globals->_soundManager.removeFromPlayList(this);
+ if (g_globals) {
+ g_globals->_soundManager.removeFromPlayList(this);
+ }
_unPrime();
}
@@ -2879,13 +2872,13 @@ void AdlibSoundDriver::setPitch(int channel, int pitchBlend) {
}
void AdlibSoundDriver::write(byte reg, byte value) {
+ Common::StackLock lock(_queueMutex);
_portContents[reg] = value;
_queue.push(RegisterValue(reg, value));
}
void AdlibSoundDriver::flush() {
- Common::StackLock slock(SoundManager::sfManager()._serverDisabledMutex);
-
+ Common::StackLock lock(_queueMutex);
while (!_queue.empty()) {
RegisterValue v = _queue.pop();
_opl->writeReg(v._regNum, v._value);
@@ -3013,10 +3006,6 @@ void AdlibSoundDriver::setFrequency(int channel) {
}
void AdlibSoundDriver::onTimer() {
- Common::StackLock slock1(SoundManager::sfManager()._serverDisabledMutex);
- Common::StackLock slock2(SoundManager::sfManager()._serverSuspendedMutex);
-
- SoundManager::sfUpdateCallback(NULL);
flush();
}
diff --git a/engines/tsage/sound.h b/engines/tsage/sound.h
index da56c8bfa5..6d6b480d58 100644
--- a/engines/tsage/sound.h
+++ b/engines/tsage/sound.h
@@ -196,7 +196,6 @@ public:
virtual void listenerSynchronize(Serializer &s);
virtual void postInit();
void syncSounds();
- void update();
static void saveNotifier(bool postFlag);
void saveNotifierProc(bool postFlag);
@@ -252,11 +251,10 @@ public:
static void sfDoAddToPlayList(Sound *sound);
static bool sfDoRemoveFromPlayList(Sound *sound);
static void sfDoUpdateVolume(Sound *sound);
- static void sfSoundServer();
+ static void sfSoundServer(void *);
static void sfProcessFading();
static void sfUpdateVoiceStructs();
static void sfUpdateVoiceStructs2();
- static void sfUpdateCallback(void *ref);
};
class Sound: public EventHandler {
@@ -460,6 +458,7 @@ private:
byte _portContents[256];
const byte *_patchData;
int _masterVolume;
+ Common::Mutex _queueMutex;
Common::Queue<RegisterValue> _queue;
bool _channelVoiced[ADLIB_CHANNEL_COUNT];
diff --git a/engines/tsage/user_interface.cpp b/engines/tsage/user_interface.cpp
index fffc0dc16c..d5e40cba83 100644
--- a/engines/tsage/user_interface.cpp
+++ b/engines/tsage/user_interface.cpp
@@ -205,7 +205,7 @@ void UIInventoryScroll::process(Event &event) {
toggle(true);
// Wait for the mouse to be released
- BF_GLOBALS._events.waitForPress(EVENT_BUTTON_UP);
+ g_globals->_events.waitForPress(EVENT_BUTTON_UP);
// Restore unselected version
toggle(false);
diff --git a/engines/xeen/character.cpp b/engines/xeen/character.cpp
index def830e2a1..26794d8080 100644
--- a/engines/xeen/character.cpp
+++ b/engines/xeen/character.cpp
@@ -1089,7 +1089,7 @@ int Character::getThievery() const {
result += itemScan(10);
- // If the character doesn't have a thievery skill, then do'nt allow any result
+ // If the character doesn't have a thievery skill, then don't allow any result
if (!_skills[THIEVERY])
result = 0;
@@ -1666,20 +1666,15 @@ int Character::makeItem(int p1, int itemIndex, int p3) {
rval = vm->getRandomNumber(1, 100);
if (rval <= 25) {
mult = 0;
- }
- else if (rval <= 45) {
+ } else if (rval <= 45) {
mult = 1;
- }
- else if (rval <= 60) {
+ } else if (rval <= 60) {
mult = 2;
- }
- else if (rval <= 75) {
+ } else if (rval <= 75) {
mult = 3;
- }
- else if (rval <= 95) {
+ } else if (rval <= 95) {
mult = 4;
- }
- else {
+ } else {
mult = 5;
}
diff --git a/engines/xeen/dialogs.cpp b/engines/xeen/dialogs.cpp
index 92082b4e0b..a88efd2520 100644
--- a/engines/xeen/dialogs.cpp
+++ b/engines/xeen/dialogs.cpp
@@ -94,7 +94,7 @@ bool ButtonContainer::checkEvents(XeenEngine *vm) {
else if (_buttonValue == Common::KEYCODE_KP_ENTER)
_buttonValue = Common::KEYCODE_RETURN;
- _buttonValue |= (keyState.flags << 8);
+ _buttonValue |= keyState.flags << 16;
if (_buttonValue)
return true;
}
diff --git a/engines/xeen/dialogs_char_info.cpp b/engines/xeen/dialogs_char_info.cpp
index 23f089b93e..619382bb84 100644
--- a/engines/xeen/dialogs_char_info.cpp
+++ b/engines/xeen/dialogs_char_info.cpp
@@ -93,6 +93,8 @@ void CharacterInfo::execute(int charIndex) {
} else {
_vm->_mode = MODE_CHARACTER_INFO;
}
+
+ intf.highlightChar(_buttonValue);
redrawFlag = true;
break;
diff --git a/engines/xeen/dialogs_items.cpp b/engines/xeen/dialogs_items.cpp
index 4adab68b29..3b0b4ffbed 100644
--- a/engines/xeen/dialogs_items.cpp
+++ b/engines/xeen/dialogs_items.cpp
@@ -66,7 +66,7 @@ Character *ItemsDialog::execute(Character *c, ItemsMode mode) {
if (redrawFlag == REDRAW_FULL) {
if ((mode != ITEMMODE_CHAR_INFO || category != CATEGORY_MISC) && mode != ITEMMODE_ENCHANT
&& mode != ITEMMODE_RECHARGE && mode != ITEMMODE_TO_GOLD) {
- _buttons[8]._bounds.moveTo(148, _buttons[8]._bounds.top);
+ _buttons[4]._bounds.moveTo(148, _buttons[4]._bounds.top);
_buttons[9]._draw = false;
} else if (mode == ITEMMODE_RECHARGE) {
_buttons[4]._value = Common::KEYCODE_r;
@@ -75,7 +75,7 @@ Character *ItemsDialog::execute(Character *c, ItemsMode mode) {
} else if (mode == ITEMMODE_TO_GOLD) {
_buttons[4]._value = Common::KEYCODE_g;
} else {
- _buttons[8]._bounds.moveTo(0, _buttons[8]._bounds.top);
+ _buttons[4]._bounds.moveTo(0, _buttons[4]._bounds.top);
_buttons[9]._draw = true;
_buttons[9]._value = Common::KEYCODE_u;
}
@@ -85,7 +85,7 @@ Character *ItemsDialog::execute(Character *c, ItemsMode mode) {
if (mode != ITEMMODE_CHAR_INFO && mode != ITEMMODE_8 && mode != ITEMMODE_ENCHANT
&& mode != ITEMMODE_RECHARGE && mode != ITEMMODE_TO_GOLD) {
msg = Common::String::format(Res.ITEMS_DIALOG_TEXT1,
- Res.BTN_SELL, Res.BTN_IDENTIFY, Res.BTN_FIX);
+ Res.BTN_BUY, Res.BTN_SELL, Res.BTN_IDENTIFY, Res.BTN_FIX);
} else if (mode != ITEMMODE_ENCHANT && mode != ITEMMODE_RECHARGE && mode != ITEMMODE_TO_GOLD) {
msg = Common::String::format(Res.ITEMS_DIALOG_TEXT1,
category == 3 ? Res.BTN_USE : Res.BTN_EQUIP,
@@ -134,8 +134,9 @@ Character *ItemsDialog::execute(Character *c, ItemsMode mode) {
break;
}
- for (int idx = 0; idx < 9; ++idx) {
- _itemsDrawList[idx]._y = 10 + idx * 9;
+ for (int idx = 0; idx < INV_ITEMS_TOTAL; ++idx) {
+ _itemsDrawList[idx]._x = 8;
+ _itemsDrawList[idx]._y = 18 + idx * 9;
switch (category) {
case CATEGORY_WEAPON:
diff --git a/engines/xeen/events.cpp b/engines/xeen/events.cpp
index 55ff24491d..9299eee040 100644
--- a/engines/xeen/events.cpp
+++ b/engines/xeen/events.cpp
@@ -33,9 +33,9 @@ namespace Xeen {
EventsManager::EventsManager(XeenEngine *vm) : _vm(vm),
_frameCounter(0), _priorFrameCounterTime(0), _gameCounter(0),
- _leftButton(false), _rightButton(false), _sprites("mouse.icn"),
- _keyCode(Common::KEYCODE_INVALID) {
+ _leftButton(false), _rightButton(false), _sprites("mouse.icn") {
Common::fill(&_gameCounters[0], &_gameCounters[6], 0);
+ _key.keycode = Common::KEYCODE_INVALID;
}
EventsManager::~EventsManager() {
@@ -81,7 +81,7 @@ void EventsManager::pollEvents() {
_vm->_debugger->attach();
_vm->_debugger->onFrame();
} else {
- _keyCode = event.kbd.keycode;
+ _key = event.kbd;
}
break;
case Common::EVENT_MOUSEMOVE:
@@ -111,7 +111,7 @@ void EventsManager::pollEventsAndWait() {
}
void EventsManager::clearEvents() {
- _keyCode = Common::KEYCODE_INVALID;
+ _key.keycode = Common::KEYCODE_INVALID;
_leftButton = _rightButton = false;
}
@@ -122,17 +122,17 @@ void EventsManager::debounceMouse() {
}
}
bool EventsManager::getKey(Common::KeyState &key) {
- if (_keyCode == Common::KEYCODE_INVALID) {
+ if (_key.keycode == Common::KEYCODE_INVALID) {
return false;
} else {
- key = _keyCode;
- _keyCode = Common::KEYCODE_INVALID;
+ key = _key;
+ _key.keycode = Common::KEYCODE_INVALID;
return true;
}
}
bool EventsManager::isKeyPending() const {
- return _keyCode != Common::KEYCODE_INVALID;
+ return _key.keycode != Common::KEYCODE_INVALID;
}
bool EventsManager::isKeyMousePressed() {
diff --git a/engines/xeen/events.h b/engines/xeen/events.h
index 36ef939004..4ebc36d3f7 100644
--- a/engines/xeen/events.h
+++ b/engines/xeen/events.h
@@ -40,7 +40,7 @@ private:
uint32 _priorFrameCounterTime;
uint32 _gameCounter;
uint32 _gameCounters[6];
- Common::KeyCode _keyCode;
+ Common::KeyState _key;
SpriteResource _sprites;
/**
diff --git a/engines/xeen/interface.cpp b/engines/xeen/interface.cpp
index 959252d65e..d3face1986 100644
--- a/engines/xeen/interface.cpp
+++ b/engines/xeen/interface.cpp
@@ -43,7 +43,7 @@ PartyDrawer::PartyDrawer(XeenEngine *vm): _vm(vm) {
_restoreSprites.load("restorex.icn");
_hpSprites.load("hpbars.icn");
_dseFace.load("dse.fac");
- _hiliteChar = -1;
+ _hiliteChar = HILIGHT_CHAR_NONE;
}
void PartyDrawer::drawParty(bool updateFlag) {
@@ -88,7 +88,7 @@ void PartyDrawer::drawParty(bool updateFlag) {
_hpSprites.draw(screen, frame, Common::Point(Res.HP_BARS_X[idx], 182));
}
- if (_hiliteChar != -1)
+ if (_hiliteChar != HILIGHT_CHAR_NONE)
res._globalSprites.draw(screen, 8, Common::Point(Res.CHAR_FACES_X[_hiliteChar] - 1, 149));
if (updateFlag)
@@ -101,7 +101,7 @@ void PartyDrawer::highlightChar(int charId) {
if (charId != _hiliteChar && _hiliteChar != HILIGHT_CHAR_DISABLED) {
// Handle deselecting any previusly selected char
- if (_hiliteChar != -1) {
+ if (_hiliteChar != HILIGHT_CHAR_NONE) {
res._globalSprites.draw(screen, 9 + _hiliteChar,
Common::Point(Res.CHAR_FACES_X[_hiliteChar] - 1, 149));
}
@@ -117,16 +117,16 @@ void PartyDrawer::unhighlightChar() {
Resources &res = *_vm->_resources;
Screen &screen = *_vm->_screen;
- if (_hiliteChar != -1) {
+ if (_hiliteChar != HILIGHT_CHAR_NONE) {
res._globalSprites.draw(screen, _hiliteChar + 9,
Common::Point(Res.CHAR_FACES_X[_hiliteChar] - 1, 149));
- _hiliteChar = -1;
+ _hiliteChar = HILIGHT_CHAR_NONE;
screen._windows[33].update();
}
}
void PartyDrawer::resetHighlight() {
- _hiliteChar = -1;
+ _hiliteChar = HILIGHT_CHAR_NONE;
}
/*------------------------------------------------------------------------*/
diff --git a/engines/xeen/interface.h b/engines/xeen/interface.h
index 074d7fdafb..ce887d2ae9 100644
--- a/engines/xeen/interface.h
+++ b/engines/xeen/interface.h
@@ -35,6 +35,7 @@ class XeenEngine;
#define MINIMAP_SIZE 7
#define HILIGHT_CHAR_DISABLED -2
+#define HILIGHT_CHAR_NONE -1
/**
* Class responsible for drawing the images of the characters in the party
diff --git a/engines/xeen/map.cpp b/engines/xeen/map.cpp
index 028ca4b6c4..9916c86130 100644
--- a/engines/xeen/map.cpp
+++ b/engines/xeen/map.cpp
@@ -38,6 +38,24 @@ const int MAP_GRID_PRIOR_INDEX2[] = { 0, 0, 0, 0, 2, 3, 4, 1, 0 };
const int MAP_GRID_PRIOR_DIRECTION2[] = { 0, 1, 2, 3, 0, 1, 2, 3, 0 };
+const char *const MUSIC_FILES1[5] = {
+ "outdoors.m", "town.m", "cavern.m", "dungeon.m", "castle.m"
+};
+
+const char *const MUSIC_FILES2[6][7] = {
+ { "outday1.m", "outday2.m", "outday4.m", "outnght1.m",
+ "outnght2.m", "outnght4.m", "daydesrt.m" },
+ { "townday1.m", "twnwlk.m", "newbrigh.m", "twnnitea.m",
+ "twnniteb.m", "twnwlk.m", "townday1.m" },
+ { "cavern1.m", "cavern2.m", "cavern3a.m", "cavern1.m",
+ "cavern2.m", "cavern3a.m", "cavern1.m" },
+ { "dngon1.m", "dngon2.m", "dngon3.m", "dngon1.m",
+ "dngon2.m", "dngon3.m", "dngon1.m" },
+ { "cstl1rev.m", "cstl2rev.m", "cstl3rev.m", "cstl1rev.m",
+ "cstl2rev.m", "cstl3rev.m", "cstl1rev.m" },
+ { "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m" }
+};
+
MonsterStruct::MonsterStruct() {
_experience = 0;
_hp = 0;
@@ -890,6 +908,7 @@ Map::Map(XeenEngine *vm) : _vm(vm), _mobData(vm) {
void Map::load(int mapId) {
Interface &intf = *_vm->_interface;
Screen &screen = *_vm->_screen;
+ Sound &sound = *_vm->_sound;
IndoorDrawList &indoorList = _vm->_interface->_indoorList;
OutdoorDrawList &outdoorList = _vm->_interface->_outdoorList;
@@ -1098,8 +1117,19 @@ void Map::load(int mapId) {
// Handle loading miscellaneous sprites for the map
if (_isOutdoors) {
- warning("TODO"); // Sound loading
+ // Start playing relevant music
+ Common::String musName;
+
+ if (_vm->_files->_isDarkCc) {
+ int randIndex = _vm->getRandomNumber(6);
+ musName = MUSIC_FILES2[_mazeData->_wallKind][randIndex];
+ } else {
+ musName = "outdoors.m";
+ }
+ if (musName != sound._currentMusic)
+ sound.playSong(musName, 207);
+ // Load sprite sets needed for scene rendering
_groundSprites.load("water.out");
_tileSprites.load("outdoor.til");
outdoorList._sky1._sprites = &_skySprites[0];
@@ -1119,8 +1149,20 @@ void Map::load(int mapId) {
_surfaceSprites[i].load(Res.SURFACE_NAMES[_mazeData[0]._surfaceTypes[i]]);
}
} else {
- warning("TODO"); // Sound loading
+ // Start playing relevant music
+ const int MUS_INDEXES[] = { 1, 2, 3, 4, 3, 5 };
+ Common::String musName;
+
+ if (_vm->_files->_isDarkCc) {
+ int randIndex = _vm->getRandomNumber(6);
+ musName = MUSIC_FILES2[MUS_INDEXES[_mazeData->_wallKind]][randIndex];
+ } else {
+ musName = MUSIC_FILES1[MUS_INDEXES[_mazeData->_wallKind]];
+ }
+ if (musName != sound._currentMusic)
+ sound.playSong(musName, 207);
+ // Load sprite sets needed for scene rendering
_skySprites[1].load(Common::String::format("%s.sky",
Res.TERRAIN_TYPES[_mazeData[0]._wallKind]));
_groundSprites.load(Common::String::format("%s.gnd",
diff --git a/engines/xeen/music.cpp b/engines/xeen/music.cpp
index ab22afd6c1..fbbaadb374 100644
--- a/engines/xeen/music.cpp
+++ b/engines/xeen/music.cpp
@@ -200,7 +200,6 @@ bool MusicDriver::fxEndSubroutine(const byte *&srcP, byte param) {
void MusicDriver::playFX(uint effectId, const byte *data) {
if (!_fxPlaying || effectId < 7 || effectId >= 11) {
- _musStartPtr = nullptr;
_fxDataPtr = _fxStartPtr = data;
_fxCountdownTimer = 0;
_channels[7]._changeFrequency = _channels[8]._changeFrequency = false;
@@ -736,6 +735,9 @@ void Music::playSong(Common::SeekableReadStream &stream) {
}
void Music::playSong(const Common::String &name, int param) {
+ _priorMusic = _currentMusic;
+ _currentMusic = name;
+
File f(name);
playSong(f);
}
diff --git a/engines/xeen/music.h b/engines/xeen/music.h
index 207ec991a3..a3d0121665 100644
--- a/engines/xeen/music.h
+++ b/engines/xeen/music.h
@@ -318,6 +318,7 @@ private:
void update();
public:
bool _musicOn;
+ Common::String _currentMusic, _priorMusic;
public:
Music();
~Music();
diff --git a/engines/xeen/party.cpp b/engines/xeen/party.cpp
index 15e7b5fda6..45b85f20f8 100644
--- a/engines/xeen/party.cpp
+++ b/engines/xeen/party.cpp
@@ -1436,11 +1436,11 @@ void Party::resetBlacksmithWares() {
for (int idx2 = 0; idx2 < 4; ++idx2) {
for (int idx3 = 0; idx3 < BLACKSMITH_DATA1[idx2][idx1]; ++idx3) {
- int itemCat = c.makeItem(idx2, 0, 0);
+ int itemCat = c.makeItem(idx2 + 1, 0, 0);
if (catCount[itemCat] < 8) {
switch (itemCat) {
case 0: {
- XeenItem &item = _blacksmithWeapons[0][idx2 * 4 + catCount[itemCat]];
+ XeenItem &item = _blacksmithWeapons[0][catCount[itemCat] * 4 + idx1];
item._id = c._weapons[0]._id;
item._material = c._weapons[0]._material;
item._bonusFlags = c._weapons[0]._bonusFlags;
@@ -1448,7 +1448,7 @@ void Party::resetBlacksmithWares() {
}
case 1: {
- XeenItem &item = _blacksmithArmor[0][idx2 * 4 + catCount[itemCat]];
+ XeenItem &item = _blacksmithArmor[0][catCount[itemCat] * 4 + idx1];
item._id = c._weapons[0]._id;
item._material = c._weapons[0]._material;
item._bonusFlags = c._weapons[0]._bonusFlags;
@@ -1456,7 +1456,7 @@ void Party::resetBlacksmithWares() {
}
case 2: {
- XeenItem &item = _blacksmithAccessories[0][idx2 * 4 + catCount[itemCat]];
+ XeenItem &item = _blacksmithAccessories[0][catCount[itemCat] * 4 + idx1];
item._id = c._weapons[0]._id;
item._material = c._weapons[0]._material;
item._bonusFlags = c._weapons[0]._bonusFlags;
@@ -1464,7 +1464,7 @@ void Party::resetBlacksmithWares() {
}
case 3: {
- XeenItem &item = _blacksmithMisc[0][idx2 * 4 + catCount[itemCat]];
+ XeenItem &item = _blacksmithMisc[0][catCount[itemCat] * 4 + idx1];
item._id = c._weapons[0]._id;
item._material = c._weapons[0]._material;
item._bonusFlags = c._weapons[0]._bonusFlags;
@@ -1490,7 +1490,7 @@ void Party::resetBlacksmithWares() {
if (catCount[itemCat] < 8) {
switch (itemCat) {
case 0: {
- XeenItem &item = _blacksmithWeapons[1][idx2 * 4 + catCount[itemCat]];
+ XeenItem &item = _blacksmithWeapons[1][catCount[itemCat] * 4 + idx1];
item._id = c._weapons[0]._id;
item._material = c._weapons[0]._material;
item._bonusFlags = c._weapons[0]._bonusFlags;
@@ -1498,7 +1498,7 @@ void Party::resetBlacksmithWares() {
}
case 1: {
- XeenItem &item = _blacksmithArmor[1][idx2 * 4 + catCount[itemCat]];
+ XeenItem &item = _blacksmithArmor[1][catCount[itemCat] * 4 + idx1];
item._id = c._weapons[0]._id;
item._material = c._weapons[0]._material;
item._bonusFlags = c._weapons[0]._bonusFlags;
@@ -1506,7 +1506,7 @@ void Party::resetBlacksmithWares() {
}
case 2: {
- XeenItem &item = _blacksmithAccessories[1][idx2 * 4 + catCount[itemCat]];
+ XeenItem &item = _blacksmithAccessories[1][catCount[itemCat] * 4 + idx1];
item._id = c._weapons[0]._id;
item._material = c._weapons[0]._material;
item._bonusFlags = c._weapons[0]._bonusFlags;
@@ -1514,7 +1514,7 @@ void Party::resetBlacksmithWares() {
}
case 3: {
- XeenItem &item = _blacksmithMisc[1][idx2 * 4 + catCount[itemCat]];
+ XeenItem &item = _blacksmithMisc[1][catCount[itemCat] * 4 + idx1];
item._id = c._weapons[0]._id;
item._material = c._weapons[0]._material;
item._bonusFlags = c._weapons[0]._bonusFlags;
diff --git a/engines/xeen/resources.cpp b/engines/xeen/resources.cpp
index 082f9b881e..b48f4ac5c9 100644
--- a/engines/xeen/resources.cpp
+++ b/engines/xeen/resources.cpp
@@ -691,14 +691,15 @@ const int Resources::TOWN_MAXES[2][11] = {
{ 26, 19, 48, 27, 26, 37, 16, 16, 16, 16, 16 }
};
-const char *const Resources::TOWN_ACTION_MUSIC[14] = {
- "bank.m", "smith.m", "guild.m", "tavern.m", "temple.m",
- "grounds.m", "endgame.m", "bank.m", "sf09.m", "guild.m",
- "tavern.m", "temple.m", "smith.m", "endgame.m"
+const char *const Resources::TOWN_ACTION_MUSIC[2][7] = {
+ { "bank.m", "smith.m", "guild.m", "tavern.m",
+ "temple.m", "grounds.m", "endgame.m" },
+ { "bank.m", "sf09.m", "guild.m", "tavern.m",
+ "temple.m", "smith.m", "endgame.m" }
};
-const char *const Resources::TOWN_ACTION_SHAPES[4] = {
- "bankr", "blck", "gild", "tvrn"
+const char *const Resources::TOWN_ACTION_SHAPES[7] = {
+ "bankr", "blck", "gild", "tvrn", "tmpl", "trng", "eface08"
};
const int Resources::TOWN_ACTION_FILES[2][7] = {
diff --git a/engines/xeen/resources.h b/engines/xeen/resources.h
index 000e332ad4..aa19baadcb 100644
--- a/engines/xeen/resources.h
+++ b/engines/xeen/resources.h
@@ -124,8 +124,8 @@ public:
static const int MAKE_ITEM_ARR5[8][2];
static const int OUTDOOR_DRAWSTRCT_INDEXES[44];
static const int TOWN_MAXES[2][11];
- static const char *const TOWN_ACTION_MUSIC[14];
- static const char *const TOWN_ACTION_SHAPES[4];
+ static const char *const TOWN_ACTION_MUSIC[2][7];
+ static const char *const TOWN_ACTION_SHAPES[7];
static const int TOWN_ACTION_FILES[2][7];
static const char *const BANK_TEXT;
static const char *const BLACKSMITH_TEXT;
diff --git a/engines/xeen/scripts.cpp b/engines/xeen/scripts.cpp
index 2198689f32..cb49586d54 100644
--- a/engines/xeen/scripts.cpp
+++ b/engines/xeen/scripts.cpp
@@ -31,6 +31,28 @@
namespace Xeen {
+byte EventParameters::Iterator::readByte() {
+ byte result = (_index >= _data.size()) ? 0 : _data[_index];
+ ++_index;
+ return result;
+}
+
+uint16 EventParameters::Iterator::readUint16LE() {
+ uint16 result = ((_index + 1) >= _data.size()) ? 0 :
+ READ_LE_UINT16(&_data[_index]);
+ _index += 2;
+ return result;
+}
+
+uint32 EventParameters::Iterator::readUint32LE() {
+ uint16 result = ((_index + 3) >= _data.size()) ? 0 :
+ READ_LE_UINT32(&_data[_index]);
+ _index += 4;
+ return result;
+}
+
+/*------------------------------------------------------------------------*/
+
MazeEvent::MazeEvent() : _direction(DIR_ALL), _line(-1), _opcode(OP_None) {
}
@@ -317,41 +339,57 @@ void Scripts::openGrate(int wallVal, int action) {
}
}
-typedef void(Scripts::*ScriptMethodPtr)(Common::Array<byte> &);
-
-void Scripts::doOpcode(MazeEvent &event) {
+bool Scripts::doOpcode(MazeEvent &event) {
+ Map &map = *_vm->_map;
+ typedef bool(Scripts::*ScriptMethodPtr)(ParamsIterator &);
static const ScriptMethodPtr COMMAND_LIST[] = {
- &Scripts::cmdNoAction, &Scripts::cmdDisplay1, &Scripts::cmdDoorTextSml,
+ &Scripts::cmdDoNothing, &Scripts::cmdDisplay1, &Scripts::cmdDoorTextSml,
&Scripts::cmdDoorTextLrg, &Scripts::cmdSignText,
&Scripts::cmdNPC, &Scripts::cmdPlayFX, &Scripts::cmdTeleport,
&Scripts::cmdIf, &Scripts::cmdIf, &Scripts::cmdIf,
- &Scripts::cmdMoveObj, &Scripts::cmdTakeOrGive, &Scripts::cmdNoAction,
+ &Scripts::cmdMoveObj, &Scripts::cmdTakeOrGive, &Scripts::cmdDoNothing,
&Scripts::cmdRemove, &Scripts::cmdSetChar, &Scripts::cmdSpawn,
&Scripts::cmdDoTownEvent, &Scripts::cmdExit, &Scripts::cmdAlterMap,
- &Scripts::cmdGiveExtended, &Scripts::cmdConfirmWord, &Scripts::cmdDamage,
+ &Scripts::cmdGiveExtended, &Scripts::cmdConfirmEnding, &Scripts::cmdDamage,
&Scripts::cmdJumpRnd, &Scripts::cmdAlterEvent, &Scripts::cmdCallEvent,
&Scripts::cmdReturn, &Scripts::cmdSetVar, &Scripts::cmdTakeOrGive,
&Scripts::cmdTakeOrGive, &Scripts::cmdCutsceneEndClouds,
&Scripts::cmdTeleport, &Scripts::cmdWhoWill,
&Scripts::cmdRndDamage, &Scripts::cmdMoveWallObj, &Scripts::cmdAlterCellFlag,
&Scripts::cmdAlterHed, &Scripts::cmdDisplayStat, &Scripts::cmdTakeOrGive,
- &Scripts::cmdSeatTextSml, &Scripts::cmdPlayEventVoc, &Scripts::cmdDisplayBottom,
- &Scripts::cmdIfMapFlag, &Scripts::cmdSelRndChar, &Scripts::cmdGiveEnchanted,
+ &Scripts::cmdSignTextSml, &Scripts::cmdPlayEventVoc, &Scripts::cmdDisplayBottom,
+ &Scripts::cmdIfMapFlag, &Scripts::cmdSelectRandomChar, &Scripts::cmdGiveEnchanted,
&Scripts::cmdItemType, &Scripts::cmdMakeNothingHere, &Scripts::cmdCheckProtection,
&Scripts::cmdChooseNumeric, &Scripts::cmdDisplayBottomTwoLines,
&Scripts::cmdDisplayLarge, &Scripts::cmdExchObj, &Scripts::cmdFallToMap,
- &Scripts::cmdDisplayMain, &Scripts::cmdGoto, &Scripts::cmdConfirmWord,
+ &Scripts::cmdDisplayMain, &Scripts::cmdGoto, &Scripts::cmdConfirmEnding,
&Scripts::cmdGotoRandom, &Scripts::cmdCutsceneEndDarkside,
- &Scripts::cmdCutsceneEdWorld, &Scripts::cmdFlipWorld, &Scripts::cmdPlayCD
+ &Scripts::cmdCutsceneEndWorld, &Scripts::cmdFlipWorld, &Scripts::cmdPlayCD
};
_event = &event;
- (this->*COMMAND_LIST[event._opcode])(event._parameters);
+
+ // Some opcodes use the first parameter as a message
+ int msgId = event._parameters.empty() ? 0 : event._parameters[0];
+ _message = msgId >= map._events._text.size() ? "" : map._events._text[msgId];
+
+ // Execute the opcode
+ ParamsIterator params = event._parameters.getIterator();
+ bool result = (this->*COMMAND_LIST[event._opcode])(params);
+ if (result)
+ // Move to next line
+ _lineNum = _vm->_party->_partyDead ? -1 : _lineNum + 1;
+
+ return result;
+}
+
+bool Scripts::cmdDoNothing(ParamsIterator &params) {
+ return true;
}
-void Scripts::cmdDisplay1(Common::Array<byte> &params) {
+bool Scripts::cmdDisplay1(ParamsIterator &params) {
Screen &screen = *_vm->_screen;
- Common::String paramText = _vm->_map->_events._text[_event->_parameters[0]];
+ Common::String paramText = _vm->_map->_events._text[params.readByte()];
Common::String msg = Common::String::format("\r\x03""c%s", paramText.c_str());
screen._windows[12].close();
@@ -360,62 +398,70 @@ void Scripts::cmdDisplay1(Common::Array<byte> &params) {
screen._windows[38].writeString(msg);
screen._windows[38].update();
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdDoorTextSml(Common::Array<byte> &params) {
+bool Scripts::cmdDoorTextSml(ParamsIterator &params) {
Interface &intf = *_vm->_interface;
- Common::String paramText = _vm->_map->_events._text[_event->_parameters[0]];
+ Common::String paramText = _vm->_map->_events._text[params.readByte()];
intf._screenText = Common::String::format("\x02\f""08\x03""c\t116\v025%s\x03""l\fd""\x01",
paramText.c_str());
intf._upDoorText = true;
intf.draw3d(true);
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdDoorTextLrg(Common::Array<byte> &params) {
+bool Scripts::cmdDoorTextLrg(ParamsIterator &params) {
Interface &intf = *_vm->_interface;
- Common::String paramText = _vm->_map->_events._text[_event->_parameters[0]];
+ Common::String paramText = _vm->_map->_events._text[params.readByte()];
intf._screenText = Common::String::format("\f04\x03""c\t116\v030%s\x03""l\fd",
paramText.c_str());
intf._upDoorText = true;
intf.draw3d(true);
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdSignText(Common::Array<byte> &params) {
+bool Scripts::cmdSignText(ParamsIterator &params) {
Interface &intf = *_vm->_interface;
- Common::String paramText = _vm->_map->_events._text[_event->_parameters[0]];
+ Common::String paramText = _vm->_map->_events._text[params.readByte()];
intf._screenText = Common::String::format("\f08\x03""c\t120\v088%s\x03""l\fd",
paramText.c_str());
intf._upDoorText = true;
intf.draw3d(true);
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdNPC(Common::Array<byte> &params) {
+bool Scripts::cmdNPC(ParamsIterator &params) {
Map &map = *_vm->_map;
- if (TownMessage::show(_vm, params[2], _message, map._events._text[params[1]],
- params[3]))
- _lineNum = params[4] - 1;
+ params.readByte();
+ int textNum = params.readByte();
+ int portrait = params.readByte();
+ int confirm = params.readByte();
+ int lineNum = params.readByte();
+
+ if (TownMessage::show(_vm, portrait, _message, map._events._text[textNum],
+ confirm)) {
+ _lineNum = lineNum;
+ return false;
+ }
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdPlayFX(Common::Array<byte> &params) {
- _vm->_sound->playFX(params[0]);
+bool Scripts::cmdPlayFX(ParamsIterator &params) {
+ _vm->_sound->playFX(params.readByte());
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdTeleport(Common::Array<byte> &params) {
+bool Scripts::cmdTeleport(ParamsIterator &params) {
EventsManager &events = *_vm->_events;
Interface &intf = *_vm->_interface;
Map &map = *_vm->_map;
@@ -425,12 +471,12 @@ void Scripts::cmdTeleport(Common::Array<byte> &params) {
screen.closeWindows();
- int mapId;
+ int mapId = params.readByte();
Common::Point pt;
- if (params[0]) {
- mapId = params[0];
- pt = Common::Point((int8)params[1], (int8)params[2]);
+ if (mapId) {
+ pt.x = params.readShort();
+ pt.y = params.readShort();
} else {
assert(_mirrorId > 0);
MirrorEntry &me = _mirror[_mirrorId - 1];
@@ -476,130 +522,128 @@ void Scripts::cmdTeleport(Common::Array<byte> &params) {
if (_event->_opcode == OP_TeleportAndContinue) {
intf.draw3d(true);
_lineNum = 0;
+ return true;
} else {
- cmdExit(params);
+ return cmdExit(params);
}
}
-void Scripts::cmdIf(Common::Array<byte> &params) {
+bool Scripts::cmdIf(ParamsIterator &params) {
Party &party = *_vm->_party;
- uint32 mask;
+ uint32 val;
int newLineNum;
- switch (params[0]) {
+ int mode = params.readByte();
+ switch (mode) {
case 16:
case 34:
case 100:
- mask = (params[4] << 24) | (params[3] << 16) | (params[2] << 8) | params[1];
- newLineNum = params[5];
+ val = params.readUint32LE();
break;
case 25:
case 35:
case 101:
case 106:
- mask = (params[2] << 8) | params[1];
- newLineNum = params[3];
+ val = params.readUint16LE();
break;
default:
- mask = params[1];
- newLineNum = params[2];
+ val = params.readByte();
break;
}
+ newLineNum = params.readByte();
bool result;
- if ((_charIndex != 0 && _charIndex != 8) || params[0] == 44) {
- result = ifProc(params[0], mask, _event->_opcode - 8, _charIndex - 1);
+ if ((_charIndex != 0 && _charIndex != 8) || mode == 44) {
+ result = ifProc(mode, val, _event->_opcode - 8, _charIndex - 1);
} else {
result = false;
for (int idx = 0; idx < (int)party._activeParty.size() && !result; ++idx) {
if (_charIndex == 0 || (_charIndex == 8 && (int)idx != _v2)) {
- result = ifProc(params[0], mask, _event->_opcode - 8, idx);
+ result = ifProc(mode, val, _event->_opcode - 8, idx);
}
}
}
- if (result)
- _lineNum = newLineNum - 1;
+ if (result) {
+ _lineNum = newLineNum;
+ return false;
+ }
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdMoveObj(Common::Array<byte> &params) {
- MazeObject &mazeObj = _vm->_map->_mobData._objects[params[0]];
+bool Scripts::cmdMoveObj(ParamsIterator &params) {
+ MazeObject &mazeObj = _vm->_map->_mobData._objects[params.readByte()];
+ int x = params.readShort(), y = params.readShort();
- if (mazeObj._position.x == params[1] && mazeObj._position.y == params[2]) {
+ if (mazeObj._position.x == x && mazeObj._position.y == y) {
// Already in position, so simply flip it
mazeObj._flipped = !mazeObj._flipped;
} else {
- mazeObj._position.x = params[1];
- mazeObj._position.y = params[2];
+ mazeObj._position.x = x;
+ mazeObj._position.y = y;
}
+
+ return true;
}
-void Scripts::cmdTakeOrGive(Common::Array<byte> &params) {
+bool Scripts::cmdTakeOrGive(ParamsIterator &params) {
Party &party = *_vm->_party;
Screen &screen = *_vm->_screen;
int mode1, mode2, mode3, param2;
- uint32 mask1, mask2, mask3;
- byte *extraP;
+ uint32 val1, val2, val3;
- mode1 = params[0];
+ mode1 = params.readByte();
switch (mode1) {
case 16:
case 34:
case 100:
- mask1 = (params[4] << 24) | (params[3] << 16) | (params[2] << 8) | params[1];
- extraP = &params[5];
+ val1 = params.readUint32LE();
break;
case 25:
case 35:
case 101:
case 106:
- mask1 = (params[2] << 8) | params[1];
- extraP = &params[3];
+ val1 = params.readUint16LE();
break;
default:
- mask1 = params[1];
- extraP = &params[9];
+ val1 = params.readByte();
break;
}
- param2 = mode2 = *extraP++;
+ param2 = mode2 = params.readByte();
switch (mode2) {
case 16:
case 34:
case 100:
- mask2 = (extraP[3] << 24) | (extraP[2] << 16) | (extraP[1] << 8) | extraP[0];
- extraP += 4;
+ val2 = params.readUint32LE();
break;
case 25:
case 35:
case 101:
case 106:
- mask2 = (extraP[1] << 8) | extraP[0];
- extraP += 2;
+ val2 = params.readUint16LE();
break;
default:
- mask2 = extraP[0];
- extraP++;
+ val2 = params.readByte();
break;
}
- mode3 = *extraP++;
+ mode3 = params.readByte();
switch (mode3) {
case 16:
case 34:
case 100:
- mask3 = (extraP[3] << 24) | (extraP[2] << 16) | (extraP[1] << 8) | extraP[0];
+ val3 = params.readUint32LE();
break;
case 25:
case 35:
case 101:
case 106:
- mask3 = (extraP[1] << 8) | extraP[0];
+ val3 = params.readUint16LE();
break;
default:
- mask3 = extraP[0];
+ val3 = params.readByte();
break;
}
@@ -611,15 +655,15 @@ void Scripts::cmdTakeOrGive(Common::Array<byte> &params) {
if (_charIndex == 0 || _charIndex == 8) {
for (uint idx = 0; idx < party._activeParty.size(); ++idx) {
if (_charIndex == 0 || (_charIndex == 8 && (int)idx != _v2)) {
- if (ifProc(params[0], mask1, _event->_opcode == OP_TakeOrGive_4 ? 2 : 1, idx)) {
- party.giveTake(0, 0, mode2, mask2, idx);
+ if (ifProc(mode1, val1, _event->_opcode == OP_TakeOrGive_4 ? 2 : 1, idx)) {
+ party.giveTake(0, 0, mode2, val2, idx);
if (mode2 == 82)
break;
}
}
}
- } else if (ifProc(params[0], mask1, _event->_opcode == OP_TakeOrGive_4 ? 2 : 1, _charIndex - 1)) {
- party.giveTake(0, 0, mode2, mask2, _charIndex - 1);
+ } else if (ifProc(mode1, val1, _event->_opcode == OP_TakeOrGive_4 ? 2 : 1, _charIndex - 1)) {
+ party.giveTake(0, 0, mode2, val2, _charIndex - 1);
}
break;
@@ -627,16 +671,16 @@ void Scripts::cmdTakeOrGive(Common::Array<byte> &params) {
if (_charIndex == 0 || _charIndex == 8) {
for (uint idx = 0; idx < party._activeParty.size(); ++idx) {
if (_charIndex == 0 || (_charIndex == 8 && (int)idx != _v2)) {
- if (ifProc(params[0], mask1, 1, idx) && ifProc(mode2, mask2, 1, idx)) {
- party.giveTake(0, 0, mode2, mask3, idx);
+ if (ifProc(mode1, val1, 1, idx) && ifProc(mode2, val2, 1, idx)) {
+ party.giveTake(0, 0, mode2, val3, idx);
if (mode2 == 82)
break;
}
}
}
- } else if (ifProc(params[0], mask1, 1, _charIndex - 1) &&
- ifProc(mode2, mask2, 1, _charIndex - 1)) {
- party.giveTake(0, 0, mode2, mask3, _charIndex - 1);
+ } else if (ifProc(mode1, val1, 1, _charIndex - 1) &&
+ ifProc(mode2, val2, 1, _charIndex - 1)) {
+ party.giveTake(0, 0, mode2, val3, _charIndex - 1);
}
break;
@@ -644,15 +688,15 @@ void Scripts::cmdTakeOrGive(Common::Array<byte> &params) {
if (_charIndex == 0 || _charIndex == 8) {
for (uint idx = 0; idx < party._activeParty.size(); ++idx) {
if (_charIndex == 0 || (_charIndex == 8 && (int)idx != _v2)) {
- if (ifProc(params[0], mask1, _event->_opcode == OP_TakeOrGive_4 ? 2 : 1, idx)) {
- party.giveTake(0, 0, mode2, mask2, idx);
+ if (ifProc(mode1, val1, _event->_opcode == OP_TakeOrGive_4 ? 2 : 1, idx)) {
+ party.giveTake(0, 0, mode2, val2, idx);
if (mode2 == 82)
break;
}
}
}
- } else if (ifProc(params[0], mask1, 1, _charIndex - 1)) {
- party.giveTake(0, 0, mode2, mask2, _charIndex - 1);
+ } else if (ifProc(mode1, val1, 1, _charIndex - 1)) {
+ party.giveTake(0, 0, mode2, val2, _charIndex - 1);
}
break;
@@ -660,7 +704,7 @@ void Scripts::cmdTakeOrGive(Common::Array<byte> &params) {
if (_charIndex == 0 || _charIndex == 8) {
for (uint idx = 0; idx < party._activeParty.size(); ++idx) {
if (_charIndex == 0 || (_charIndex == 8 && (int)idx != _v2)) {
- party.giveTake(mode1, mask1, mode1, mask2, idx);
+ party.giveTake(mode1, val1, mode2, val2, idx);
switch (mode1) {
case 8:
@@ -699,7 +743,7 @@ void Scripts::cmdTakeOrGive(Common::Array<byte> &params) {
case 106:
if (param2) {
_lineNum = -1;
- return;
+ return false;
}
// Break out of character loop
@@ -731,7 +775,7 @@ void Scripts::cmdTakeOrGive(Common::Array<byte> &params) {
}
}
} else {
- if (!party.giveTake(mode1, mask1, mode2, mask2, _charIndex - 1)) {
+ if (!party.giveTake(mode1, val1, mode2, val2, _charIndex - 1)) {
if (mode2 == 79)
screen.closeWindows();
}
@@ -739,15 +783,10 @@ void Scripts::cmdTakeOrGive(Common::Array<byte> &params) {
break;
}
- cmdNoAction(params);
-}
-
-void Scripts::cmdNoAction(Common::Array<byte> &params) {
- // Move to next line
- _lineNum = _vm->_party->_partyDead ? -1 : _lineNum + 1;
+ return true;
}
-void Scripts::cmdRemove(Common::Array<byte> &params) {
+bool Scripts::cmdRemove(ParamsIterator &params) {
Interface &intf = *_vm->_interface;
Map &map = *_vm->_map;
@@ -758,125 +797,144 @@ void Scripts::cmdRemove(Common::Array<byte> &params) {
}
cmdMakeNothingHere(params);
+ return true;
}
-void Scripts::cmdSetChar(Common::Array<byte> &params) {
- if (params[0] != 7) {
- _charIndex = WhoWill::show(_vm, 22, 3, false);
- if (_charIndex == 0) {
- cmdExit(params);
- return;
- }
- } else {
+bool Scripts::cmdSetChar(ParamsIterator &params) {
+ int charId = params.readByte();
+
+ if (charId == 0) {
+ _charIndex = 0;
+ _v2 = 0;
+ } else if (charId < 7) {
+ _v2 = charId;
+ } else if (charId == 7) {
_charIndex = _vm->getRandomNumber(1, _vm->_party->_activeParty.size());
+ _v2 = 1;
+ } else {
+ _charIndex = WhoWill::show(_vm, 22, 3, false);
+ if (_charIndex == 0)
+ return cmdExit(params);
}
- _v2 = 1;
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdSpawn(Common::Array<byte> &params) {
+bool Scripts::cmdSpawn(ParamsIterator &params) {
Map &map = *_vm->_map;
- if (params[0] >= map._mobData._monsters.size())
- map._mobData._monsters.resize(params[0] + 1);
+ uint index = params.readByte();
- MazeMonster &monster = _vm->_map->_mobData._monsters[params[0]];
+ if (index >= map._mobData._monsters.size())
+ map._mobData._monsters.resize(index + 1);
+
+ MazeMonster &monster = _vm->_map->_mobData._monsters[index];
MonsterStruct &monsterData = _vm->_map->_monsterData[monster._spriteId];
monster._monsterData = &monsterData;
- monster._position.x = params[1];
- monster._position.y = params[2];
+ monster._position.x = params.readShort();
+ monster._position.y = params.readShort();
monster._frame = _vm->getRandomNumber(7);
- monster._damageType = 0;
- monster._isAttacking = params[1] != 0;
+ monster._damageType = DT_PHYSICAL;
+ monster._isAttacking = false;
monster._hp = monsterData._hp;
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdDoTownEvent(Common::Array<byte> &params) {
- _scriptResult = _vm->_town->townAction(params[0]);
+bool Scripts::cmdDoTownEvent(ParamsIterator &params) {
+ _scriptResult = _vm->_town->townAction((TownAction)params.readByte());
_vm->_party->_stepped = true;
_refreshIcons = true;
- cmdExit(params);
+ return cmdExit(params);
}
-void Scripts::cmdExit(Common::Array<byte> &params) {
+bool Scripts::cmdExit(ParamsIterator &params) {
_lineNum = -1;
+ return false;
}
-void Scripts::cmdAlterMap(Common::Array<byte> &params) {
+bool Scripts::cmdAlterMap(ParamsIterator &params) {
Map &map = *_vm->_map;
-
- if (params[2] == DIR_ALL) {
- for (int dir = DIR_NORTH; dir <= DIR_WEST; ++dir)
- map.setWall(Common::Point(params[0], params[1]), (Direction)dir, params[3]);
+ int x = params.readShort();
+ int y = params.readShort();
+ Direction dir = (Direction)params.readByte();
+ int val = params.readByte();
+
+ if (dir == DIR_ALL) {
+ for (dir = DIR_NORTH; dir <= DIR_WEST; dir = (Direction)((int)dir + 1))
+ map.setWall(Common::Point(x, y), dir, val);
} else {
- map.setWall(Common::Point(params[0], params[1]), (Direction)params[2], params[3]);
+ map.setWall(Common::Point(x, y), dir, val);
}
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdGiveExtended(Common::Array<byte> &params) {
+bool Scripts::cmdGiveExtended(ParamsIterator &params) {
Party &party = *_vm->_party;
- uint32 mask;
+ uint32 val;
int newLineNum;
bool result;
- switch (params[0]) {
+ int mode = params.readByte();
+ switch (mode) {
case 16:
case 34:
case 100:
- mask = (params[4] << 24) | params[3] | (params[2] << 8) | (params[1] << 16);
- newLineNum = params[5];
+ val = params.readUint32LE();
break;
case 25:
case 35:
case 101:
case 106:
- mask = (params[2] << 8) | params[1];
- newLineNum = params[3];
+ val = params.readUint16LE();
break;
default:
- mask = params[1];
- newLineNum = params[2];
+ val = params.readByte();
break;
}
+ newLineNum = params.readByte();
- if ((_charIndex != 0 && _charIndex != 8) || params[0] == 44) {
- result = ifProc(params[0], mask, _event->_opcode - OP_If1, _charIndex - 1);
+ if ((_charIndex != 0 && _charIndex != 8) || mode == 44) {
+ result = ifProc(mode, val, _event->_opcode - OP_If1, _charIndex - 1);
} else {
result = false;
for (int idx = 0; idx < (int)party._activeParty.size() && !result; ++idx) {
if (_charIndex == 0 || (_charIndex == 8 && _v2 != idx)) {
- result = ifProc(params[0], mask, _event->_opcode - OP_If1, idx);
+ result = ifProc(mode, val, _event->_opcode - OP_If1, idx);
}
}
}
- if (result)
- _lineNum = newLineNum - 1;
+ if (result) {
+ _lineNum = newLineNum;
+ return false;
+ }
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdConfirmWord(Common::Array<byte> &params) {
+bool Scripts::cmdConfirmEnding(ParamsIterator &params) {
Map &map = *_vm->_map;
Party &party = *_vm->_party;
- Common::String msg1 = params[2] ? map._events._text[params[2]] :
+ int inputType = params.readByte();
+ int lineNum = params.readByte();
+ int param2 = params.readByte();
+ int param3 = params.readByte();
+
+ Common::String msg1 = param2 ? map._events._text[param2] :
_vm->_interface->_interfaceText;
Common::String msg2;
if (_event->_opcode == OP_ConfirmWord_2) {
- msg2 = map._events._text[params[3]];
- } else if (params[3]) {
+ msg2 = map._events._text[param3];
+ } else if (param3) {
msg2 = "";
} else {
msg2 = Res.WHATS_THE_PASSWORD;
}
- int result = StringInput::show(_vm, params[0], msg1, msg2,_event->_opcode);
+ int result = StringInput::show(_vm, inputType, msg1, msg2,_event->_opcode);
if (result) {
if (result == 33 && _vm->_files->_isDarkCc) {
doEndGame2();
@@ -889,8 +947,7 @@ void Scripts::cmdConfirmWord(Common::Array<byte> &params) {
doEndGame();
} else if (result == 60 && !_vm->_files->_isDarkCc) {
doEndGame2();
- }
- else if (result == 61 && !_vm->_files->_isDarkCc) {
+ } else if (result == 61 && !_vm->_files->_isDarkCc) {
doWorldEnd();
} else {
if (result == 59 && !_vm->_files->_isDarkCc) {
@@ -902,22 +959,19 @@ void Scripts::cmdConfirmWord(Common::Array<byte> &params) {
item._bonusFlags = 0;
party._treasure._hasItems = true;
- cmdExit(params);
- return;
+ return cmdExit(params);
}
}
}
- _lineNum = result == -1 ? params[3] : params[1];
-
- return;
+ _lineNum = result == -1 ? param3 : lineNum;
}
}
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdDamage(Common::Array<byte> &params) {
+bool Scripts::cmdDamage(ParamsIterator &params) {
Combat &combat = *_vm->_combat;
Interface &intf = *_vm->_interface;
@@ -926,100 +980,109 @@ void Scripts::cmdDamage(Common::Array<byte> &params) {
_redrawDone = true;
}
- int damage = (params[1] << 8) | params[0];
- combat.giveCharDamage(damage, (DamageType)params[2], _charIndex);
+ int damage = params.readUint16LE();
+ DamageType damageType = (DamageType)params.readByte();
+ combat.giveCharDamage(damage, damageType, _charIndex);
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdJumpRnd(Common::Array<byte> &params) {
- int v = _vm->getRandomNumber(1, params[0]);
- if (v == params[1])
- _lineNum = params[2] - 1;
+bool Scripts::cmdJumpRnd(ParamsIterator &params) {
+ int v = _vm->getRandomNumber(1, params.readByte());
+ if (v == params.readByte()) {
+ _lineNum = params.readByte();
+ return false;
+ }
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdAlterEvent(Common::Array<byte> &params) {
+bool Scripts::cmdAlterEvent(ParamsIterator &params) {
Map &map = *_vm->_map;
Party &party = *_vm->_party;
+ int lineNum = params.readByte();
+ Opcode opcode = (Opcode)params.readByte();
for (uint idx = 0; idx < map._events.size(); ++idx) {
MazeEvent &evt = map._events[idx];
if (evt._position == party._mazePosition &&
(evt._direction == DIR_ALL || evt._direction == party._mazeDirection) &&
- evt._line == params[0]) {
- evt._opcode = (Opcode)params[1];
+ evt._line == lineNum) {
+ evt._opcode = opcode;
}
}
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdCallEvent(Common::Array<byte> &params) {
+bool Scripts::cmdCallEvent(ParamsIterator &params) {
_stack.push(StackEntry(_currentPos, _lineNum));
- _currentPos = Common::Point(params[0], params[1]);
- _lineNum = params[2] - 1;
+ _currentPos.x = params.readShort();
+ _currentPos.y = params.readShort();
+ _lineNum = params.readByte();
- cmdNoAction(params);
+ return false;
}
-void Scripts::cmdReturn(Common::Array<byte> &params) {
+bool Scripts::cmdReturn(ParamsIterator &params) {
StackEntry &se = _stack.top();
_currentPos = se;
_lineNum = se.line;
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdSetVar(Common::Array<byte> &params) {
+bool Scripts::cmdSetVar(ParamsIterator &params) {
Party &party = *_vm->_party;
uint val;
_refreshIcons = true;
- switch (params[0]) {
+ int mode = params.readByte();
+ switch (mode) {
case 25:
case 35:
case 101:
case 106:
- val = (params[2] << 8) | params[1];
+ val = params.readUint16LE();
break;
case 16:
case 34:
case 100:
- val = (params[4] << 24) | (params[3] << 16) | (params[2] << 8) | params[3];
+ val = params.readUint32LE();
break;
default:
- val = params[1];
+ val = params.readByte();
break;
}
if (_charIndex != 0 && _charIndex != 8) {
- party._activeParty[_charIndex - 1].setValue(params[0], val);
+ party._activeParty[_charIndex - 1].setValue(mode, val);
} else {
// Set value for entire party
for (int idx = 0; idx < (int)party._activeParty.size(); ++idx) {
if (_charIndex == 0 || (_charIndex == 8 && _v2 != idx)) {
- party._activeParty[idx].setValue(params[0], val);
+ party._activeParty[idx].setValue(mode, val);
}
}
}
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdCutsceneEndClouds(Common::Array<byte> &params) { error("TODO"); }
+bool Scripts::cmdCutsceneEndClouds(ParamsIterator &params) { error("TODO"); }
-void Scripts::cmdWhoWill(Common::Array<byte> &params) {
- _charIndex = WhoWill::show(_vm, params[0], params[1], true);
+bool Scripts::cmdWhoWill(ParamsIterator &params) {
+ int msg = params.readByte();
+ int action = params.readByte();
+ _charIndex = WhoWill::show(_vm, msg, action, true);
if (_charIndex == 0)
- cmdExit(params);
+ return cmdExit(params);
else
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdRndDamage(Common::Array<byte> &params) {
+bool Scripts::cmdRndDamage(ParamsIterator &params) {
Combat &combat = *_vm->_combat;
Interface &intf = *_vm->_interface;
@@ -1028,47 +1091,56 @@ void Scripts::cmdRndDamage(Common::Array<byte> &params) {
_redrawDone = true;
}
- combat.giveCharDamage(_vm->getRandomNumber(1, params[1]), (DamageType)params[0], _charIndex);
- cmdNoAction(params);
+ DamageType dmgType = (DamageType)params.readByte();
+ int max = params.readByte();
+ combat.giveCharDamage(_vm->getRandomNumber(1, max), dmgType, _charIndex);
+ return true;
}
-void Scripts::cmdMoveWallObj(Common::Array<byte> &params) {
+bool Scripts::cmdMoveWallObj(ParamsIterator &params) {
Map &map = *_vm->_map;
+ int itemNum = params.readByte();
+ int x = params.readShort();
+ int y = params.readShort();
- map._mobData._wallItems[params[0]]._position = Common::Point(params[1], params[2]);
- cmdNoAction(params);
+ map._mobData._wallItems[itemNum]._position = Common::Point(x, y);
+ return true;
}
-void Scripts::cmdAlterCellFlag(Common::Array<byte> &params) {
+bool Scripts::cmdAlterCellFlag(ParamsIterator &params) {
Map &map = *_vm->_map;
- Common::Point pt(params[0], params[1]);
+ Common::Point pt;
+ pt.x = params.readShort();
+ pt.y = params.readShort();
+ int surfaceId = params.readByte();
+
map.cellFlagLookup(pt);
if (map._isOutdoors) {
MazeWallLayers &wallData = map.mazeDataCurrent()._wallData[pt.y][pt.x];
- wallData._data = (wallData._data & 0xFFF0) | params[2];
+ wallData._data = (wallData._data & 0xFFF0) | surfaceId;
} else {
pt.x &= 0xF;
pt.y &= 0xF;
MazeCell &cell = map.mazeDataCurrent()._cells[pt.y][pt.x];
- cell._surfaceId = params[2];
+ cell._surfaceId = surfaceId;
}
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdAlterHed(Common::Array<byte> &params) {
+bool Scripts::cmdAlterHed(ParamsIterator &params) {
Map &map = *_vm->_map;
Party &party = *_vm->_party;
HeadData::HeadEntry &he = map._headData[party._mazePosition.y][party._mazePosition.x];
- he._left = params[0];
- he._right = params[1];
+ he._left = params.readByte();
+ he._right = params.readByte();
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdDisplayStat(Common::Array<byte> &params) {
+bool Scripts::cmdDisplayStat(ParamsIterator &params) {
Party &party = *_vm->_party;
Window &w = _vm->_screen->_windows[12];
Character &c = party._activeParty[_charIndex - 1];
@@ -1078,10 +1150,10 @@ void Scripts::cmdDisplayStat(Common::Array<byte> &params) {
w.writeString(Common::String::format(_message.c_str(), c._name.c_str()));
w.update();
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdSeatTextSml(Common::Array<byte> &params) {
+bool Scripts::cmdSignTextSml(ParamsIterator &params) {
Interface &intf = *_vm->_interface;
intf._screenText = Common::String::format("\x2\f08\x3""c\t116\v090%s\x3l\fd\x1",
@@ -1089,86 +1161,88 @@ void Scripts::cmdSeatTextSml(Common::Array<byte> &params) {
intf._upDoorText = true;
intf.draw3d(true);
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdPlayEventVoc(Common::Array<byte> &params) {
+bool Scripts::cmdPlayEventVoc(ParamsIterator &params) {
Sound &sound = *_vm->_sound;
sound.stopSound();
- sound.playSound(Res.EVENT_SAMPLES[params[0]], 1);
+ sound.playSound(Res.EVENT_SAMPLES[params.readByte()], 1);
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdDisplayBottom(Common::Array<byte> &params) {
+bool Scripts::cmdDisplayBottom(ParamsIterator &params) {
_windowIndex = 12;
display(false, 0);
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdIfMapFlag(Common::Array<byte> &params) {
+bool Scripts::cmdIfMapFlag(ParamsIterator &params) {
Map &map = *_vm->_map;
- MazeMonster &monster = map._mobData._monsters[params[0]];
+ MazeMonster &monster = map._mobData._monsters[params.readByte()];
if (monster._position.x >= 32 || monster._position.y >= 32) {
- _lineNum = params[1] - 1;
+ _lineNum = params.readByte();
+ return false;
}
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdSelRndChar(Common::Array<byte> &params) {
+bool Scripts::cmdSelectRandomChar(ParamsIterator &params) {
_charIndex = _vm->getRandomNumber(1, _vm->_party->_activeParty.size());
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdGiveEnchanted(Common::Array<byte> &params) {
+bool Scripts::cmdGiveEnchanted(ParamsIterator &params) {
Party &party = *_vm->_party;
- if (params[0] >= 35) {
- if (params[0] < 49) {
+ int id = params.readByte();
+ int material = params.readByte();
+ int flags = params.readByte();
+
+ if (id >= 35) {
+ if (id < 49) {
for (int idx = 0; idx < MAX_TREASURE_ITEMS; ++idx) {
XeenItem &item = party._treasure._armor[idx];
if (!item.empty()) {
- item._id = params[0] - 35;
- item._material = params[1];
- item._bonusFlags = params[2];
+ item._id = id - 35;
+ item._material = material;
+ item._bonusFlags = flags;
party._treasure._hasItems = true;
break;
}
}
- cmdNoAction(params);
- return;
- } else if (params[0] < 60) {
+ return true;
+ } else if (id < 60) {
for (int idx = 0; idx < MAX_TREASURE_ITEMS; ++idx) {
XeenItem &item = party._treasure._accessories[idx];
if (!item.empty()) {
- item._id = params[0] - 49;
- item._material = params[1];
- item._bonusFlags = params[2];
+ item._id = id - 49;
+ item._material = material;
+ item._bonusFlags = flags;
party._treasure._hasItems = true;
break;
}
}
- cmdNoAction(params);
- return;
- } else if (params[0] < 82) {
+ return true;
+ } else if (id < 82) {
for (int idx = 0; idx < MAX_TREASURE_ITEMS; ++idx) {
XeenItem &item = party._treasure._misc[idx];
if (!item.empty()) {
- item._id = params[0];
- item._material = params[1];
- item._bonusFlags = params[2];
+ item._id = id;
+ item._material = material;
+ item._bonusFlags = flags;
party._treasure._hasItems = true;
break;
}
}
- cmdNoAction(params);
- return;
+ return true;
} else {
error("Invalid id");
}
@@ -1177,22 +1251,24 @@ void Scripts::cmdGiveEnchanted(Common::Array<byte> &params) {
for (int idx = 0; idx < MAX_TREASURE_ITEMS; ++idx) {
XeenItem &item = party._treasure._weapons[idx];
if (!item.empty()) {
- item._id = params[0];
- item._material = params[1];
- item._bonusFlags = params[2];
+ item._id = id;
+ item._material = material;
+ item._bonusFlags = flags;
party._treasure._hasItems = true;
break;
}
}
+
+ return true;
}
-void Scripts::cmdItemType(Common::Array<byte> &params) {
- _itemType = params[0];
+bool Scripts::cmdItemType(ParamsIterator &params) {
+ _itemType = params.readByte();
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdMakeNothingHere(Common::Array<byte> &params) {
+bool Scripts::cmdMakeNothingHere(ParamsIterator &params) {
Map &map = *_vm->_map;
Party &party = *_vm->_party;
@@ -1204,33 +1280,36 @@ void Scripts::cmdMakeNothingHere(Common::Array<byte> &params) {
evt._opcode = OP_None;
}
- cmdExit(params);
+ return cmdExit(params);
}
-void Scripts::cmdCheckProtection(Common::Array<byte> &params) {
+bool Scripts::cmdCheckProtection(ParamsIterator &params) {
if (copyProtectionCheck())
- cmdNoAction(params);
+ return true;
else
- cmdExit(params);
+ return cmdExit(params);
}
-void Scripts::cmdChooseNumeric(Common::Array<byte> &params) {
- int choice = Choose123::show(_vm, params[0]);
+bool Scripts::cmdChooseNumeric(ParamsIterator &params) {
+ int choice = Choose123::show(_vm, params.readByte());
if (choice) {
- _lineNum = params[choice] - 1;
+ _lineNum = _event->_parameters[choice];
+ return false;
}
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdDisplayBottomTwoLines(Common::Array<byte> &params) {
+bool Scripts::cmdDisplayBottomTwoLines(ParamsIterator &params) {
Map &map = *_vm->_map;
Window &w = _vm->_screen->_windows[12];
- warning("TODO: cmdDisplayBottomTwoLines");
+ params.readByte();
+ int textId = params.readByte();
+
Common::String msg = Common::String::format("\r\x03c\t000\v007%s\n\n%s",
"",
- map._events._text[params[1]].c_str());
+ map._events._text[textId].c_str());
w.close();
w.open();
w.writeString(msg);
@@ -1238,57 +1317,64 @@ void Scripts::cmdDisplayBottomTwoLines(Common::Array<byte> &params) {
YesNo::show(_vm, true);
_lineNum = -1;
+ return false;
}
-void Scripts::cmdDisplayLarge(Common::Array<byte> &params) {
+bool Scripts::cmdDisplayLarge(ParamsIterator &params) {
error("TODO: Implement event text loading");
display(true, 0);
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdExchObj(Common::Array<byte> &params) {
- MazeObject &obj1 = _vm->_map->_mobData._objects[params[0]];
- MazeObject &obj2 = _vm->_map->_mobData._objects[params[1]];
+bool Scripts::cmdExchObj(ParamsIterator &params) {
+ int id1 = params.readByte(), id2 = params.readByte();
+
+ MazeObject &obj1 = _vm->_map->_mobData._objects[id1];
+ MazeObject &obj2 = _vm->_map->_mobData._objects[id2];
Common::Point pt = obj1._position;
obj1._position = obj2._position;
obj2._position = pt;
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdFallToMap(Common::Array<byte> &params) {
+bool Scripts::cmdFallToMap(ParamsIterator &params) {
Interface &intf = *_vm->_interface;
Party &party = *_vm->_party;
- party._fallMaze = params[0];
- party._fallPosition = Common::Point(params[1], params[2]);
- party._fallDamage = params[3];
+ party._fallMaze = params.readByte();
+ party._fallPosition.x = params.readShort();
+ party._fallPosition.y = params.readShort();
+ party._fallDamage = params.readByte();
intf.startFalling(true);
_lineNum = -1;
+ return false;
}
-void Scripts::cmdDisplayMain(Common::Array<byte> &params) {
+bool Scripts::cmdDisplayMain(ParamsIterator &params) {
display(false, 0);
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdGoto(Common::Array<byte> &params) {
+bool Scripts::cmdGoto(ParamsIterator &params) {
Map &map = *_vm->_map;
map.getCell(1);
- if (params[0] == map._currentSurfaceId)
- _lineNum = params[1] - 1;
+ if (map._currentSurfaceId == params.readByte()) {
+ _lineNum = params.readByte();
+ return false;
+ }
- cmdNoAction(params);
+ return true;
}
-void Scripts::cmdGotoRandom(Common::Array<byte> &params) {
- _lineNum = params[_vm->getRandomNumber(1, params[0])] - 1;
- cmdNoAction(params);
+bool Scripts::cmdGotoRandom(ParamsIterator &params) {
+ _lineNum = _event->_parameters[_vm->getRandomNumber(1, params.readByte())];
+ return false;
}
-void Scripts::cmdCutsceneEndDarkside(Common::Array<byte> &params) {
+bool Scripts::cmdCutsceneEndDarkside(ParamsIterator &params) {
Party &party = *_vm->_party;
_vm->_saves->_wonDarkSide = true;
party._questItems[53] = 1;
@@ -1298,19 +1384,23 @@ void Scripts::cmdCutsceneEndDarkside(Common::Array<byte> &params) {
party._mazePosition = Common::Point(25, 21);
doEndGame2();
+ return false;
}
-void Scripts::cmdCutsceneEdWorld(Common::Array<byte> &params) {
+bool Scripts::cmdCutsceneEndWorld(ParamsIterator &params) {
_vm->_saves->_wonWorld = true;
_vm->_party->_worldEnd = true;
+
doWorldEnd();
+ return false;
}
-void Scripts::cmdFlipWorld(Common::Array<byte> &params) {
- _vm->_map->_loadDarkSide = params[0] != 0;
+bool Scripts::cmdFlipWorld(ParamsIterator &params) {
+ _vm->_map->_loadDarkSide = params.readByte() != 0;
+ return true;
}
-void Scripts::cmdPlayCD(Common::Array<byte> &params) { error("TODO"); }
+bool Scripts::cmdPlayCD(ParamsIterator &params) { error("TODO"); }
void Scripts::doEndGame() {
doEnding("ENDGAME", 0);
@@ -1336,16 +1426,16 @@ void Scripts::doEndGame2() {
}
void Scripts::doWorldEnd() {
-
+ error("TODO: doWorldEnd");
}
void Scripts::doEnding(const Common::String &endStr, int v2) {
_vm->_saves->saveChars();
- warning("TODO: doEnding");
+ error("TODO: doEnding");
}
-bool Scripts::ifProc(int action, uint32 mask, int mode, int charIndex) {
+bool Scripts::ifProc(int action, uint32 val, int mode, int charIndex) {
Party &party = *_vm->_party;
Character &ps = party._activeParty[charIndex];
uint v = 0;
@@ -1384,15 +1474,15 @@ bool Scripts::ifProc(int action, uint32 mask, int mode, int charIndex) {
v = ps.getAge(false);
break;
case 13:
- assert(mask < 18);
- if (ps._skills[mask])
- v = mask;
+ assert(val < 18);
+ if (ps._skills[val])
+ v = val;
break;
case 15:
// Award
- assert(mask < 128);
- if (ps.hasAward(mask))
- v = mask;
+ assert(val < 128);
+ if (ps.hasAward(val))
+ v = val;
break;
case 16:
// Experience
@@ -1404,9 +1494,9 @@ bool Scripts::ifProc(int action, uint32 mask, int mode, int charIndex) {
break;
case 18:
// Condition
- assert(mask < 16);
- if (!ps._conditions[mask] && !(mask & 0x10))
- v = mask;
+ assert(val < 16);
+ if (!ps._conditions[val] && !(val & 0x10))
+ v = val;
break;
case 19: {
// Can player cast a given spell
@@ -1433,10 +1523,10 @@ bool Scripts::ifProc(int action, uint32 mask, int mode, int charIndex) {
// Check if the character class can cast the particular spell
for (int idx = 0; idx < 39; ++idx) {
- if (Res.SPELLS_ALLOWED[category][idx] == mask) {
+ if (Res.SPELLS_ALLOWED[category][idx] == val) {
// Can cast it. Check if the player has it in their spellbook
if (ps._spells[idx])
- v = mask;
+ v = val;
break;
}
}
@@ -1444,33 +1534,33 @@ bool Scripts::ifProc(int action, uint32 mask, int mode, int charIndex) {
}
case 20:
if (_vm->_files->_isDarkCc)
- mask += 256;
- assert(mask < 512);
- v = party._gameFlags[mask / 256][mask % 256] ? mask : 0xffffffff;
+ val += 256;
+ assert(val < 512);
+ v = party._gameFlags[val / 256][val % 256] ? val : 0xffffffff;
break;
case 21:
// Scans inventories for given item number
v = 0xFFFFFFFF;
- if (mask < 82) {
+ if (val < 82) {
for (int idx = 0; idx < 9; ++idx) {
- if (mask == 35) {
- if (ps._weapons[idx]._id == mask) {
- v = mask;
+ if (val == 35) {
+ if (ps._weapons[idx]._id == val) {
+ v = val;
break;
}
- } else if (mask < 49) {
- if (ps._armor[idx]._id == (mask - 35)) {
- v = mask;
+ } else if (val < 49) {
+ if (ps._armor[idx]._id == (val - 35)) {
+ v = val;
break;
}
- } else if (mask < 60) {
- if (ps._accessories[idx]._id == (mask - 49)) {
- v = mask;
+ } else if (val < 60) {
+ if (ps._accessories[idx]._id == (val - 49)) {
+ v = val;
break;
}
} else {
- if (ps._misc[idx]._id == (mask - 60)) {
- v = mask;
+ if (ps._misc[idx]._id == (val - 60)) {
+ v = val;
break;
}
}
@@ -1520,8 +1610,8 @@ bool Scripts::ifProc(int action, uint32 mask, int mode, int charIndex) {
v = ps._luck._temporary;
break;
case 44:
- v = YesNo::show(_vm, mask);
- v = (!v && !mask) ? 2 : mask;
+ v = YesNo::show(_vm, val);
+ v = (!v && !val) ? 2 : val;
break;
case 45:
// Might base (before bonus)
@@ -1674,7 +1764,7 @@ bool Scripts::ifProc(int action, uint32 mask, int mode, int charIndex) {
break;
case 99:
// Party skills check
- v = party.checkSkill((Skill)mask) ? mask : 0xffffffff;
+ v = party.checkSkill((Skill)val) ? val : 0xffffffff;
break;
case 102:
// Thievery skill
@@ -1682,11 +1772,11 @@ bool Scripts::ifProc(int action, uint32 mask, int mode, int charIndex) {
break;
case 103:
// Get value of world flag
- v = party._worldFlags[mask] ? mask : 0xffffffff;
+ v = party._worldFlags[val] ? val : 0xffffffff;
break;
case 104:
// Get value of quest flag
- v = party._questFlags[_vm->_files->_isDarkCc][mask] ? mask : 0xffffffff;
+ v = party._questFlags[_vm->_files->_isDarkCc][val] ? val : 0xffffffff;
break;
case 105:
// Test number of Megacredits in party. Only used by King's Engineer in Castle Burlock
@@ -1702,11 +1792,11 @@ bool Scripts::ifProc(int action, uint32 mask, int mode, int charIndex) {
switch (mode) {
case 0:
- return v >= mask;
+ return v >= val;
case 1:
- return v == mask;
+ return v == val;
case 2:
- return v <= mask;
+ return v <= val;
default:
return false;
}
diff --git a/engines/xeen/scripts.h b/engines/xeen/scripts.h
index f2ffc90b5f..97029c7973 100644
--- a/engines/xeen/scripts.h
+++ b/engines/xeen/scripts.h
@@ -77,7 +77,7 @@ enum Opcode {
OP_PlayEventVoc = 0x28,
OP_DisplayBottom = 0x29,
OP_IfMapFlag = 0x2A,
- OP_SelRndChar = 0x2B,
+ OP_SelectRandomChar = 0x2B,
OP_GiveEnchanted= 0x2C,
OP_ItemType = 0x2D,
OP_MakeNothingHere = 0x2E,
@@ -99,13 +99,52 @@ enum Opcode {
class XeenEngine;
+class EventParameters : public Common::Array<byte> {
+public:
+ class Iterator {
+ private:
+ uint _index;
+ const EventParameters &_data;
+ public:
+ Iterator(const EventParameters &owner) : _data(owner), _index(0) {}
+ Iterator(const Iterator &it) : _data(it._data), _index(0) {}
+
+ /**
+ * Return a byte
+ */
+ byte readByte();
+
+ /**
+ * Return a signed byte
+ */
+ int8 readShort() { return (int8)readByte(); }
+
+ /**
+ * Return a word
+ */
+ uint16 readUint16LE();
+
+ /**
+ * Return a 32-bit dword
+ */
+ uint32 readUint32LE();
+ };
+public:
+ /**
+ * Return an iterator for getting parameters
+ */
+ Iterator getIterator() const {
+ return Iterator(*this);
+ }
+};
+
class MazeEvent {
public:
Common::Point _position;
int _direction;
int _line;
Opcode _opcode;
- Common::Array<byte> _parameters;
+ EventParameters _parameters;
public:
MazeEvent();
@@ -155,152 +194,289 @@ private:
Common::String _message;
Common::String _displayMessage;
+ typedef EventParameters::Iterator ParamsIterator;
+
/**
* Handles executing a given script command
*/
- void doOpcode(MazeEvent &event);
+ bool doOpcode(MazeEvent &event);
+
+ /**
+ * Do nothing
+ */
+ bool cmdDoNothing(ParamsIterator &params);
/**
* Display a msesage on-screen
*/
- void cmdDisplay1(Common::Array<byte> &params);
+ bool cmdDisplay1(ParamsIterator &params);
/**
* Displays a door text message using the small font
*/
- void cmdDoorTextSml(Common::Array<byte> &params);
+ bool cmdDoorTextSml(ParamsIterator &params);
/**
* Displays a door text message using the large font
*/
- void cmdDoorTextLrg(Common::Array<byte> &params);
+ bool cmdDoorTextLrg(ParamsIterator &params);
/**
* Show a sign text on-screen
*/
- void cmdSignText(Common::Array<byte> &params);
- void cmdNPC(Common::Array<byte> &params);
+ bool cmdSignText(ParamsIterator &params);
+
+ /**
+ * Show an NPC interaction message
+ */
+ bool cmdNPC(ParamsIterator &params);
/**
* Play a sound FX
*/
- void cmdPlayFX(Common::Array<byte> &params);
- void cmdTeleport(Common::Array<byte> &params);
+ bool cmdPlayFX(ParamsIterator &params);
+
+ /**
+ * Handles teleportation
+ */
+ bool cmdTeleport(ParamsIterator &params);
/**
* Do a conditional check
*/
- void cmdIf(Common::Array<byte> &params);
+ bool cmdIf(ParamsIterator &params);
/**
* Moves the position of an object
*/
- void cmdMoveObj(Common::Array<byte> &params);
- void cmdTakeOrGive(Common::Array<byte> &params);
+ bool cmdMoveObj(ParamsIterator &params);
+
+ /**
+ * Take or give amounts from various character or party figures
+ */
+ bool cmdTakeOrGive(ParamsIterator &params);
/**
- * Move to the next line of the script
+ * Removes an object from the playfield
*/
- void cmdNoAction(Common::Array<byte> &params);
- void cmdRemove(Common::Array<byte> &params);
+ bool cmdRemove(ParamsIterator &params);
/**
* Set the currently active character for other script operations
*/
- void cmdSetChar(Common::Array<byte> &params);
+ bool cmdSetChar(ParamsIterator &params);
/**
* Spawn a monster
*/
- void cmdSpawn(Common::Array<byte> &params);
- void cmdDoTownEvent(Common::Array<byte> &params);
+ bool cmdSpawn(ParamsIterator &params);
+
+ /**
+ * Does various things that can be done within towns, like visiting
+ * banks, guilds, etc.
+ */
+ bool cmdDoTownEvent(ParamsIterator &params);
/**
* Stop executing the script
*/
- void cmdExit(Common::Array<byte> &params);
+ bool cmdExit(ParamsIterator &params);
/**
* Changes the value for the wall on a given cell
*/
- void cmdAlterMap(Common::Array<byte> &params);
- void cmdGiveExtended(Common::Array<byte> &params);
- void cmdConfirmWord(Common::Array<byte> &params);
- void cmdDamage(Common::Array<byte> &params);
+ bool cmdAlterMap(ParamsIterator &params);
+
+ /**
+ *
+ */
+ bool cmdGiveExtended(ParamsIterator &params);
+
+ /**
+ * Confirms with the player for initiating the endgame
+ */
+ bool cmdConfirmEnding(ParamsIterator &params);
+
+ /**
+ * Deals damage to a character
+ */
+ bool cmdDamage(ParamsIterator &params);
/**
* Jump if a random number matches a given value
*/
- void cmdJumpRnd(Common::Array<byte> &params);
+ bool cmdJumpRnd(ParamsIterator &params);
/**
* Alter an existing event
*/
- void cmdAlterEvent(Common::Array<byte> &params);
+ bool cmdAlterEvent(ParamsIterator &params);
/**
* Stores the current location and line for later resuming, and set up to execute
* a script at a given location
*/
- void cmdCallEvent(Common::Array<byte> &params);
+ bool cmdCallEvent(ParamsIterator &params);
/**
* Return from executing a script to the script location that previously
* called the script
*/
- void cmdReturn(Common::Array<byte> &params);
- void cmdSetVar(Common::Array<byte> &params);
- void cmdCutsceneEndClouds(Common::Array<byte> &params);
- void cmdWhoWill(Common::Array<byte> &params);
- void cmdRndDamage(Common::Array<byte> &params);
- void cmdMoveWallObj(Common::Array<byte> &params);
- void cmdAlterCellFlag(Common::Array<byte> &params);
- void cmdAlterHed(Common::Array<byte> &params);
- void cmdDisplayStat(Common::Array<byte> &params);
- void cmdSeatTextSml(Common::Array<byte> &params);
- void cmdPlayEventVoc(Common::Array<byte> &params);
- void cmdDisplayBottom(Common::Array<byte> &params);
- void cmdIfMapFlag(Common::Array<byte> &params);
- void cmdSelRndChar(Common::Array<byte> &params);
- void cmdGiveEnchanted(Common::Array<byte> &params);
- void cmdItemType(Common::Array<byte> &params);
+ bool cmdReturn(ParamsIterator &params);
+
+ /**
+ * Sets variables on characters like race, sex, and class
+ */
+ bool cmdSetVar(ParamsIterator &params);
+
+ /**
+ * Play the Clouds endgame
+ */
+ bool cmdCutsceneEndClouds(ParamsIterator &params);
+
+ /**
+ * Prompts the user for which character will do an action
+ */
+ bool cmdWhoWill(ParamsIterator &params);
+
+ /**
+ * Deals a random amount of damage to a character
+ */
+ bool cmdRndDamage(ParamsIterator &params);
+
+ /**
+ * Moves the wall object to the given coordinates. Doesn't change it's orientation.
+ * Wall objects are only visible when viewed straight on, and were never intended
+ * to be anywhere but on squares directly facing walls
+ */
+ bool cmdMoveWallObj(ParamsIterator &params);
+
+ /**
+ * Sets the cell flag at the specified X/Y coordinate on the current map
+ */
+ bool cmdAlterCellFlag(ParamsIterator &params);
+
+ /**
+ * Sets the word value at the current X/Y location in the HED file
+ * in memory to the given two bytes
+ */
+ bool cmdAlterHed(ParamsIterator &params);
+
+ /**
+ * Displays a text string which includes some stat of the currently selected character
+ */
+ bool cmdDisplayStat(ParamsIterator &params);
+
+ /**
+ * Displays text in the scene window for various objects
+ * the user interacts with
+ */
+ bool cmdSignTextSml(ParamsIterator &params);
+
+ /**
+ * An array of six VOC filenames are hard-coded into the game executable file.
+ * This function plays the VOC file at the specified index in this array
+ */
+ bool cmdPlayEventVoc(ParamsIterator &params);
+
+ /**
+ * Displays a large text message across the bottom of the screen
+ */
+ bool cmdDisplayBottom(ParamsIterator &params);
+
+ /**
+ * Checks if a given map flag/monster has been set, and if so
+ * jumps to a given line
+ */
+ bool cmdIfMapFlag(ParamsIterator &params);
+
+ /**
+ * Selects a random character for further other actions
+ */
+ bool cmdSelectRandomChar(ParamsIterator &params);
+
+ /**
+ * Gives an enchanted item to a character
+ */
+ bool cmdGiveEnchanted(ParamsIterator &params);
+
+ /**
+ * Sets the item category for used in character operations
+ */
+ bool cmdItemType(ParamsIterator &params);
/**
* Disable all the scripts at the party's current position
*/
- void cmdMakeNothingHere(Common::Array<byte> &params);
- void cmdCheckProtection(Common::Array<byte> &params);
+ bool cmdMakeNothingHere(ParamsIterator &params);
+
+ /**
+ * Does a copy protection check
+ */
+ bool cmdCheckProtection(ParamsIterator &params);
/**
* Given a number of options, and a list of line numbers associated with
* those options, jumps to whichever line for the option the user selects
*/
- void cmdChooseNumeric(Common::Array<byte> &params);
- void cmdDisplayBottomTwoLines(Common::Array<byte> &params);
- void cmdDisplayLarge(Common::Array<byte> &params);
+ bool cmdChooseNumeric(ParamsIterator &params);
+
+ /**
+ * Displays a two line message at the bottom of the screen
+ */
+ bool cmdDisplayBottomTwoLines(ParamsIterator &params);
+
+ /**
+ * Displays a message
+ */
+ bool cmdDisplayLarge(ParamsIterator &params);
/**
* Exchange the positions of two objects in the maze
*/
- void cmdExchObj(Common::Array<byte> &params);
- void cmdFallToMap(Common::Array<byte> &params);
- void cmdDisplayMain(Common::Array<byte> &params);
+ bool cmdExchObj(ParamsIterator &params);
+
+ /**
+ * Handles making the player fall down to the ground
+ */
+ bool cmdFallToMap(ParamsIterator &params);
+
+ /**
+ * Displays a message
+ */
+ bool cmdDisplayMain(ParamsIterator &params);
/**
* Jumps to a given line number if the surface at relative cell position 1 matches
* a specified surface.
* @remarks This opcode is apparently never actually used
*/
- void cmdGoto(Common::Array<byte> &params);
+ bool cmdGoto(ParamsIterator &params);
/**
* Pick a random value from the parameter list and jump to that line number
*/
- void cmdGotoRandom(Common::Array<byte> &params);
- void cmdCutsceneEndDarkside(Common::Array<byte> &params);
- void cmdCutsceneEdWorld(Common::Array<byte> &params);
- void cmdFlipWorld(Common::Array<byte> &params);
- void cmdPlayCD(Common::Array<byte> &params);
+ bool cmdGotoRandom(ParamsIterator &params);
+
+ /**
+ * Plays the Dark Side of Xeen ending
+ */
+ bool cmdCutsceneEndDarkside(ParamsIterator &params);
+
+ /**
+ * Plays the World of Xeen ending
+ */
+ bool cmdCutsceneEndWorld(ParamsIterator &params);
+
+ /**
+ * Switches the player between the Clouds and Dark Side
+ */
+ bool cmdFlipWorld(ParamsIterator &params);
+
+ /**
+ * Plays a CD track
+ */
+ bool cmdPlayCD(ParamsIterator &params);
int whoWill(int v1, int v2, int v3);
@@ -315,10 +491,16 @@ private:
/**
* This monstrosity handles doing the various types of If checks on various data
*/
- bool ifProc(int action, uint32 mask, int mode, int charIndex);
+ bool ifProc(int action, uint32 val, int mode, int charIndex);
+ /**
+ * Prompts the user for a copy protection check
+ */
bool copyProtectionCheck();
+ /**
+ * Displays a message
+ */
void display(bool justifyFlag, int var46);
public:
int _animCounter;
diff --git a/engines/xeen/sprites.cpp b/engines/xeen/sprites.cpp
index 68382abc67..8070368a30 100644
--- a/engines/xeen/sprites.cpp
+++ b/engines/xeen/sprites.cpp
@@ -257,7 +257,7 @@ void SpriteResource::drawOffset(XSurface &dest, uint16 offset, const Common::Poi
assert(byteCount == lineLength);
drawBounds.top = MIN(drawBounds.top, destPos.y);
- drawBounds.bottom = MAX(drawBounds.bottom, destPos.y);
+ drawBounds.bottom = MAX((int)drawBounds.bottom, destPos.y + 1);
// Handle drawing out the line
byte *destP = (byte *)dest.getBasePtr(destPos.x, destPos.y);
@@ -274,7 +274,7 @@ void SpriteResource::drawOffset(XSurface &dest, uint16 offset, const Common::Poi
if (*lineP != -1 && xp >= bounds.left && xp < bounds.right &&
((!(flags & SPRFLAG_SCENE_CLIPPED) && !enlarge) || (xp >= SCENE_CLIP_LEFT && xp < SCENE_CLIP_RIGHT))) {
drawBounds.left = MIN(drawBounds.left, xp);
- drawBounds.right = MAX(drawBounds.right, xp);
+ drawBounds.right = MAX((int)drawBounds.right, xp + 1);
*destP = (byte)*lineP;
if (enlarge)
*(destP + SCREEN_WIDTH) = (byte)*lineP;
diff --git a/engines/xeen/town.cpp b/engines/xeen/town.cpp
index f15030503b..ac1fc1edbb 100644
--- a/engines/xeen/town.cpp
+++ b/engines/xeen/town.cpp
@@ -33,7 +33,7 @@ namespace Xeen {
Town::Town(XeenEngine *vm) : ButtonContainer(vm) {
Common::fill(&_arr1[0], &_arr1[6], 0);
_townMaxId = 0;
- _townActionId = 0;
+ _townActionId = BANK;
_drawFrameIndex = 0;
_currentCharLevel = 0;
_v1 = 0;
@@ -44,7 +44,7 @@ Town::Town(XeenEngine *vm) : ButtonContainer(vm) {
_v10 = _v11 = 0;
_v12 = _v13 = 0;
_v14 = 0;
- _v20 = 0;
+ _maxLevel = 0;
_v21 = 0;
_v22 = 0;
_v23 = 0;
@@ -64,7 +64,7 @@ void Town::loadStrings(const Common::String &name) {
f.close();
}
-int Town::townAction(int actionId) {
+int Town::townAction(TownAction actionId) {
Interface &intf = *_vm->_interface;
Map &map = *_vm->_map;
Party &party = *_vm->_party;
@@ -72,7 +72,7 @@ int Town::townAction(int actionId) {
Sound &sound = *_vm->_sound;
bool isDarkCc = _vm->_files->_isDarkCc;
- if (actionId == 12) {
+ if (actionId == ACTION12) {
pyramidEvent();
return 0;
}
@@ -92,7 +92,7 @@ int Town::townAction(int actionId) {
_icons2.clear();
switch (actionId) {
- case 0:
+ case BANK:
// Bank
_icons1.load("bank.icn");
_icons2.load("bank2.icn");
@@ -105,10 +105,10 @@ int Town::townAction(int actionId) {
vocName = isDarkCc ? "bank1.voc" : "banker.voc";
break;
- case 1:
+ case BLACKSMITH:
// Blacksmith
_icons1.load("esc.icn");
- addButton(Common::Rect(261, 100, 285, 120), Common::KEYCODE_ESCAPE, &_icons1);
+ addButton(Common::Rect(261, 108, 285, 128), Common::KEYCODE_ESCAPE, &_icons1);
addButton(Common::Rect(234, 54, 308, 62), 0);
addButton(Common::Rect(234, 64, 308, 72), Common::KEYCODE_b);
addButton(Common::Rect(234, 74, 308, 82), 0);
@@ -118,11 +118,11 @@ int Town::townAction(int actionId) {
vocName = isDarkCc ? "see2.voc" : "whaddayo.voc";
break;
- case 2:
+ case GUILD:
// Guild
loadStrings("spldesc.bin");
_icons1.load("esc.icn");
- addButton(Common::Rect(261, 100, 285, 120), Common::KEYCODE_ESCAPE, &_icons1);
+ addButton(Common::Rect(261, 108, 285, 128), Common::KEYCODE_ESCAPE, &_icons1);
addButton(Common::Rect(234, 54, 308, 62), 0);
addButton(Common::Rect(234, 64, 308, 72), Common::KEYCODE_b);
addButton(Common::Rect(234, 74, 308, 82), Common::KEYCODE_s);
@@ -133,7 +133,7 @@ int Town::townAction(int actionId) {
vocName = isDarkCc ? "parrot1.voc" : "guild10.voc";
break;
- case 3:
+ case TAVERN:
// Tavern
loadStrings("tavern.bin");
_icons1.load("tavern.icn");
@@ -149,10 +149,10 @@ int Town::townAction(int actionId) {
vocName = isDarkCc ? "hello1.voc" : "hello.voc";
break;
- case 4:
+ case TEMPLE:
// Temple
_icons1.load("esc.icn");
- addButton(Common::Rect(261, 100, 285, 120), Common::KEYCODE_ESCAPE, &_icons1);
+ addButton(Common::Rect(261, 108, 285, 128), Common::KEYCODE_ESCAPE, &_icons1);
addButton(Common::Rect(234, 54, 308, 62), Common::KEYCODE_h);
addButton(Common::Rect(234, 64, 308, 72), Common::KEYCODE_d);
addButton(Common::Rect(234, 74, 308, 82), Common::KEYCODE_u);
@@ -162,40 +162,40 @@ int Town::townAction(int actionId) {
vocName = isDarkCc ? "help2.voc" : "maywe2.voc";
break;
- case 5:
+ case TRAINING:
// Training
Common::fill(&_arr1[0], &_arr1[6], 0);
_v2 = 0;
_icons1.load("train.icn");
addButton(Common::Rect(281, 108, 305, 128), Common::KEYCODE_ESCAPE, &_icons1);
- addButton(Common::Rect(242, 108, 266, 128), Common::KEYCODE_t);
+ addButton(Common::Rect(242, 108, 266, 128), Common::KEYCODE_t, &_icons1);
sound.stopSound();
vocName = isDarkCc ? "training.voc" : "youtrn1.voc";
break;
- case 6:
+ case ARENA:
// Arena event
arenaEvent();
return false;
- case 8:
+ case REAPER:
// Reaper event
reaperEvent();
return false;
- case 9:
+ case GOLEM:
// Golem event
golemEvent();
return false;
- case 10:
- case 13:
+ case DWARF1:
+ case DWARF2:
dwarfEvent();
return false;
- case 11:
+ case SPHINX:
sphinxEvent();
return false;
@@ -203,7 +203,7 @@ int Town::townAction(int actionId) {
break;
}
- sound.playSong(Res.TOWN_ACTION_MUSIC[actionId], 223);
+ sound.playSong(Res.TOWN_ACTION_MUSIC[_vm->_files->_isDarkCc][actionId], 223);
_townSprites.resize(Res.TOWN_ACTION_FILES[isDarkCc][actionId]);
for (uint idx = 0; idx < _townSprites.size(); ++idx) {
@@ -220,7 +220,7 @@ int Town::townAction(int actionId) {
intf._levitateUIFrame = 0;
_townSprites[_drawFrameIndex / 8].draw(screen, _drawFrameIndex % 8, _townPos);
- if (actionId == 0 && isDarkCc) {
+ if (actionId == BANK && isDarkCc) {
_townSprites[4].draw(screen, _vm->getRandomNumber(13, 18),
Common::Point(8, 30));
}
@@ -236,7 +236,7 @@ int Town::townAction(int actionId) {
intf.highlightChar(0);
drawTownAnim(1);
- if (actionId == 0)
+ if (actionId == BANK)
intf._overallFrame = 2;
sound.playSound(vocName, 1);
@@ -244,12 +244,13 @@ int Town::townAction(int actionId) {
do {
townWait();
charP = doTownOptions(charP);
+ title = createTownText(*charP);
screen._windows[10].writeString(title);
drawButtons(&screen);
} while (!_vm->shouldQuit() && _buttonValue != Common::KEYCODE_ESCAPE);
switch (actionId) {
- case 1:
+ case BLACKSMITH:
// Leave blacksmith
if (isDarkCc) {
sound.stopSound();
@@ -257,14 +258,14 @@ int Town::townAction(int actionId) {
}
break;
- case 3: {
+ case TAVERN:
// Leave Tavern
sound.stopSound();
sound.playSound(isDarkCc ? "gdluck1.voc" : "goodbye.voc", 1);
map.mazeData()._mazeNumber = party._mazeId;
break;
- }
+
default:
break;
}
@@ -334,29 +335,30 @@ Common::String Town::createTownText(Character &ch) {
Common::String msg;
switch (_townActionId) {
- case 0:
+ case BANK:
// Bank
return Common::String::format(Res.BANK_TEXT,
XeenEngine::printMil(party._bankGold).c_str(),
XeenEngine::printMil(party._bankGems).c_str(),
XeenEngine::printMil(party._gold).c_str(),
XeenEngine::printMil(party._gems).c_str());
- case 1:
+
+ case BLACKSMITH:
// Blacksmith
return Common::String::format(Res.BLACKSMITH_TEXT,
- XeenEngine::printMil(party._gold).c_str());
+ ch._name.c_str(), XeenEngine::printMil(party._gold).c_str());
- case 2:
+ case GUILD:
// Guild
return !ch.guildMember() ? Res.GUILD_NOT_MEMBER_TEXT :
Common::String::format(Res.GUILD_TEXT, ch._name.c_str());
- case 3:
+ case TAVERN:
// Tavern
return Common::String::format(Res.TAVERN_TEXT, ch._name.c_str(),
Res.FOOD_AND_DRINK, XeenEngine::printMil(party._gold).c_str());
- case 4:
+ case TEMPLE:
// Temple
_donation = 0;
_uncurseCost = 0;
@@ -425,52 +427,55 @@ Common::String Town::createTownText(Character &ch) {
_healCost, _donation, XeenEngine::printK(_uncurseCost).c_str(),
XeenEngine::printMil(party._gold).c_str());
- case 5:
+ case TRAINING:
// Training
if (_vm->_files->_isDarkCc) {
switch (party._mazeId) {
case 29:
- _v20 = 30;
+ _maxLevel = 30;
break;
case 31:
- _v20 = 50;
+ _maxLevel = 50;
break;
case 37:
- _v20 = 200;
+ _maxLevel = 200;
break;
default:
- _v20 = 100;
+ _maxLevel = 100;
break;
}
} else {
switch (party._mazeId) {
case 28:
- _v20 = 10;
+ _maxLevel = 10;
break;
case 30:
- _v20 = 15;
+ _maxLevel = 15;
break;
default:
- _v20 = 20;
+ _maxLevel = 20;
break;
}
}
_experienceToNextLevel = ch.experienceToNextLevel();
- if (_experienceToNextLevel >= 0x10000 && ch._level._permanent < _v20) {
+ if (_experienceToNextLevel && ch._level._permanent < _maxLevel) {
+ // Need more experience
int nextLevel = ch._level._permanent + 1;
- return Common::String::format(Res.EXPERIENCE_FOR_LEVEL,
+ msg = Common::String::format(Res.EXPERIENCE_FOR_LEVEL,
ch._name.c_str(), _experienceToNextLevel, nextLevel);
- } else if (ch._level._permanent >= 20) {
+ } else if (ch._level._permanent >= _maxLevel) {
+ // At maximum level
_experienceToNextLevel = 1;
msg = Common::String::format(Res.LEARNED_ALL, ch._name.c_str());
} else {
+ // Eligble for level increase
msg = Common::String::format(Res.ELIGIBLE_FOR_LEVEL,
ch._name.c_str(), ch._level._permanent + 1);
}
- return Common::String::format(Res.TRAINING_TEXT,
+ return Common::String::format(Res.TRAINING_TEXT, msg.c_str(),
XeenEngine::printMil(party._gold).c_str());
default:
@@ -480,27 +485,27 @@ Common::String Town::createTownText(Character &ch) {
Character *Town::doTownOptions(Character *c) {
switch (_townActionId) {
- case 0:
+ case BANK:
// Bank
c = doBankOptions(c);
break;
- case 1:
+ case BLACKSMITH:
// Blacksmith
c = doBlacksmithOptions(c);
break;
- case 2:
+ case GUILD:
// Guild
c = doGuildOptions(c);
break;
- case 3:
+ case TAVERN:
// Tavern
c = doTavernOptions(c);
break;
- case 4:
+ case TEMPLE:
// Temple
c = doTempleOptions(c);
break;
- case 5:
+ case TRAINING:
// Training
c = doTrainingOptions(c);
break;
@@ -903,7 +908,7 @@ Character *Town::doTrainingOptions(Character *c) {
_drawFrameIndex = 0;
Common::String name;
- if (c->_level._permanent >= _v20) {
+ if (c->_level._permanent >= _maxLevel) {
name = isDarkCc ? "gtlost.voc" : "trainin1.voc";
} else {
name = isDarkCc ? "gtlost.voc" : "trainin0.voc";
@@ -1072,7 +1077,7 @@ void Town::drawTownAnim(bool flag) {
}
switch (_townActionId) {
- case 0:
+ case BANK:
if (sound.isPlaying() || (isDarkCc && intf._overallFrame)) {
if (isDarkCc) {
if (sound.isPlaying() || intf._overallFrame == 1) {
@@ -1090,7 +1095,7 @@ void Town::drawTownAnim(bool flag) {
}
break;
- case 2:
+ case GUILD:
if (sound.isPlaying()) {
if (isDarkCc) {
if (intf._overallFrame) {
@@ -1103,19 +1108,20 @@ void Town::drawTownAnim(bool flag) {
}
break;
- case 3:
+ case TAVERN:
if (sound.isPlaying() && isDarkCc) {
_townSprites[4].draw(screen, _vm->getRandomNumber(7), Common::Point(153, 49));
}
break;
- case 4:
+
+ case TEMPLE:
if (sound.isPlaying()) {
_townSprites[3].draw(screen, _vm->getRandomNumber(2, 4), Common::Point(8, 8));
}
break;
- case 5:
+ case TRAINING:
if (sound.isPlaying()) {
if (isDarkCc) {
_townSprites[_drawFrameIndex / 8].draw(screen, _drawFrameIndex % 8, _townPos);
@@ -1128,6 +1134,10 @@ void Town::drawTownAnim(bool flag) {
_townSprites[1].draw(screen, _vm->getRandomNumber(8, 12), Common::Point(8, 8));
}
}
+ break;
+
+ default:
+ break;
}
if (flag) {
@@ -1202,7 +1212,7 @@ bool TownMessage::execute(int portrait, const Common::String &name, const Common
Window &w = screen._windows[11];
town._townMaxId = 4;
- town._townActionId = 7;
+ town._townActionId = NO_ACTION;
town._drawFrameIndex = 0;
town._townPos = Common::Point(23, 22);
@@ -1225,7 +1235,7 @@ bool TownMessage::execute(int portrait, const Common::String &name, const Common
name.c_str(), msgText.c_str());
// Count the number of words
- const char *msgEnd = w.writeString(msg.c_str());
+ const char *msgEnd = w.writeString(msg);
int wordCount = 0;
for (const char *msgP = msg.c_str(); msgP != msgEnd && *msgP; ++msgP) {
diff --git a/engines/xeen/town.h b/engines/xeen/town.h
index 25faa38c76..618c4c510a 100644
--- a/engines/xeen/town.h
+++ b/engines/xeen/town.h
@@ -31,6 +31,12 @@
namespace Xeen {
+enum TownAction {
+ BANK = 0, BLACKSMITH = 1, GUILD = 2, TAVERN = 3, TEMPLE = 4,
+ TRAINING = 5, ARENA = 6, NO_ACTION = 7, REAPER = 8, GOLEM = 9,
+ DWARF1 = 10, SPHINX = 11, ACTION12 = 12, DWARF2 = 13
+};
+
class XeenEngine;
class TownMessage;
@@ -41,14 +47,14 @@ private:
Common::StringArray _textStrings;
Common::Array<SpriteResource> _townSprites;
int _townMaxId;
- int _townActionId;
+ TownAction _townActionId;
int _v1, _v2;
int _donation;
int _healCost;
int _v5, _v6;
int _v10, _v11, _v12;
int _v13, _v14;
- uint _v20;
+ uint _maxLevel;
int _v21;
uint _v22;
int _v23;
@@ -99,7 +105,7 @@ private:
public:
Town(XeenEngine *vm);
- int townAction(int actionId);
+ int townAction(TownAction actionId);
void drawTownAnim(bool flag);
diff --git a/gui/credits.h b/gui/credits.h
index c0d7b32032..8f3f934024 100644
--- a/gui/credits.h
+++ b/gui/credits.h
@@ -589,6 +589,9 @@ static const char *credits[] = {
"C1""OS/2",
"C0""Paul Smedley",
"",
+"C1""RISC OS",
+"C0""Cameron Cawley",
+"",
"C1""SlackWare",
"C0""Robert Kelsen",
"",
diff --git a/gui/themes/translations.dat b/gui/themes/translations.dat
index b06de5eefb..8037a89f07 100644
--- a/gui/themes/translations.dat
+++ b/gui/themes/translations.dat
Binary files differ
diff --git a/po/be_BY.po b/po/be_BY.po
index 5c9a7ed894..7ee915d368 100644
--- a/po/be_BY.po
+++ b/po/be_BY.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.8.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2017-07-26 18:23+0000\n"
"Last-Translator: Ivan Lukyanov <lid-gr@tut.by>\n"
"Language-Team: Belarusian <https://translations.scummvm.org/projects/scummvm/"
diff --git a/po/ca_ES.po b/po/ca_ES.po
index 6f05175300..26ff0215c1 100644
--- a/po/ca_ES.po
+++ b/po/ca_ES.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.6.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2017-02-20 14:15+0000\n"
"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n"
"Language-Team: Catalan <https://translations.scummvm.org/projects/scummvm/"
diff --git a/po/cs_CZ.po b/po/cs_CZ.po
index 5bf98a8e65..ffcab9dbba 100644
--- a/po/cs_CZ.po
+++ b/po/cs_CZ.po
@@ -7,11 +7,11 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.7.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2017-11-18 10:07+0000\n"
"Last-Translator: Zbynìk Schwarz <zbynek.schwarz@gmail.com>\n"
-"Language-Team: Czech "
-"<https://translations.scummvm.org/projects/scummvm/scummvm/cs/>\n"
+"Language-Team: Czech <https://translations.scummvm.org/projects/scummvm/"
+"scummvm/cs/>\n"
"Language: cs_CZ\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-2\n"
@@ -1790,8 +1790,8 @@ msgid ""
"Please report the following data to the ScummVM team at %s along with the "
"name of the game you tried to add and its version, language, etc.:"
msgstr ""
-"Hra nacházející se v '%s' pravdìpodobnì vyu¾ívá neznámou variantu jádra %s ."
-"\n"
+"Hra nacházející se v '%s' pravdìpodobnì vyu¾ívá neznámou variantu jádra "
+"%s .\n"
"\n"
"Prosím pøepo¹lete následující data týmu ScummVM na %s spolu s názvem hry, "
"kterou jste chtìli pøidat, a její verzí, jazykem, atd.:"
@@ -3311,8 +3311,8 @@ msgid ""
"You're missing a Riven executable. The Windows executable is 'riven.exe' or "
"'rivendmo.exe'. "
msgstr ""
-"Schází vám spustitelný soubor Riven. Ve Windows se soubor jmenuje "
-"'riven.exe' nebo 'rivendmo.exe'. "
+"Schází vám spustitelný soubor Riven. Ve Windows se soubor jmenuje 'riven."
+"exe' nebo 'rivendmo.exe'. "
#: engines/mohawk/riven.cpp:150
msgid ""
diff --git a/po/da_DK.po b/po/da_DK.po
index cbee32ed97..73e0b2ec8a 100644
--- a/po/da_DK.po
+++ b/po/da_DK.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.3.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2016-12-29 07:29+0000\n"
"Last-Translator: poulsen93 <poulsen93@gmail.com>\n"
"Language-Team: Danish <https://translations.scummvm.org/projects/scummvm/"
diff --git a/po/de_DE.po b/po/de_DE.po
index 0808837e18..7638919cbd 100644
--- a/po/de_DE.po
+++ b/po/de_DE.po
@@ -7,11 +7,11 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.10.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2017-11-15 09:26+0000\n"
"Last-Translator: Lothar Serra Mari <rootfather@scummvm.org>\n"
-"Language-Team: German "
-"<https://translations.scummvm.org/projects/scummvm/scummvm/de/>\n"
+"Language-Team: German <https://translations.scummvm.org/projects/scummvm/"
+"scummvm/de/>\n"
"Language: de_DE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
diff --git a/po/el.po b/po/el.po
index 4b32c6a86e..49c645a905 100644
--- a/po/el.po
+++ b/po/el.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.10.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2017-04-28 11:12+0000\n"
"Last-Translator: Arius <alidop@pathfinder.gr>\n"
"Language-Team: Greek <https://translations.scummvm.org/projects/scummvm/"
diff --git a/po/es_ES.po b/po/es_ES.po
index 4f5e525b29..c31307428d 100644
--- a/po/es_ES.po
+++ b/po/es_ES.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.4.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2017-04-23 05:59+0000\n"
"Last-Translator: Santiago Sanchez <sanchez.santiago.j@gmail.com>\n"
"Language-Team: Spanish <https://translations.scummvm.org/projects/scummvm/"
diff --git a/po/eu.po b/po/eu.po
index e35dd80c2d..ade476de27 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.5.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2016-12-04 13:27+0000\n"
"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n"
"Language-Team: Basque <https://translations.scummvm.org/projects/scummvm/"
diff --git a/po/fi_FI.po b/po/fi_FI.po
index c888cd7125..cb304015a9 100644
--- a/po/fi_FI.po
+++ b/po/fi_FI.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.6.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2017-11-10 17:07+0000\n"
"Last-Translator: Timo Mikkolainen <tmikkola@gmail.com>\n"
"Language-Team: Finnish <https://translations.scummvm.org/projects/scummvm/"
diff --git a/po/fr_FR.po b/po/fr_FR.po
index 2cbc2c4acd..fae7d34f56 100644
--- a/po/fr_FR.po
+++ b/po/fr_FR.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.8.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2017-11-12 22:44+0000\n"
"Last-Translator: Thierry Crozat <criezy@scummvm.org>\n"
"Language-Team: French <https://translations.scummvm.org/projects/scummvm/"
diff --git a/po/gl_ES.po b/po/gl_ES.po
index 73269eec97..ebb55fd255 100644
--- a/po/gl_ES.po
+++ b/po/gl_ES.po
@@ -7,11 +7,11 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.8.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
-"PO-Revision-Date: 2016-11-28 15:51+0000\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
+"PO-Revision-Date: 2017-11-23 12:42+0000\n"
"Last-Translator: Santiago G. Sanz <santiagogarciasanz@gmail.com>\n"
-"Language-Team: Galician <https://translations.scummvm.org/projects/scummvm/"
-"scummvm/gl/>\n"
+"Language-Team: Galician "
+"<https://translations.scummvm.org/projects/scummvm/scummvm/gl/>\n"
"Language: gl_ES\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
@@ -827,61 +827,59 @@ msgstr "non se puido cambiar a configuración de filtrado."
#: gui/options.cpp:932
msgid "Show On-screen control"
-msgstr ""
+msgstr "Mostrar controis na pantalla"
#: gui/options.cpp:936
-#, fuzzy
msgid "Touchpad mouse mode"
-msgstr "Modo Panel táctil desactivado."
+msgstr "Modo Panel táctil"
#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
-msgstr ""
+msgstr "Cambiar botóns Menú e Atrás"
#: gui/options.cpp:945
-#, fuzzy
msgid "Pointer Speed:"
-msgstr "Velocidade:"
+msgstr "Velocidade do punteiro:"
#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
-msgstr ""
+msgstr "Velocidade do control do punteiro."
#: gui/options.cpp:947
-#, fuzzy
msgctxt "lowres"
msgid "Pointer Speed:"
-msgstr "Velocidade:"
+msgstr "Velocidade do punteiro:"
#: gui/options.cpp:958
msgid "Joy Deadzone:"
-msgstr ""
+msgstr "Zona morta da panca:"
#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
-msgstr ""
+msgstr "Zona morta da panca de xogos"
#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
-msgstr ""
+msgstr "Zona morta da panca:"
#: gui/options.cpp:974
msgid "HW Shader:"
-msgstr ""
+msgstr "Sombreador HW:"
#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr ""
+"Os distintos sombreadores por hardware teñen efectos visuais diferentes."
#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
-msgstr ""
+msgstr "Sombreador HW:"
#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
-msgstr ""
+msgstr "Os distintos sombreadores teñen efectos diferentes."
#: gui/options.cpp:994
msgid "Graphics mode:"
@@ -1119,12 +1117,11 @@ msgstr "Volume voz:"
#: gui/options.cpp:1438
msgid "Shader"
-msgstr ""
+msgstr "Sombreador"
#: gui/options.cpp:1450
-#, fuzzy
msgid "Control"
-msgstr "Rato"
+msgstr "Control"
#: gui/options.cpp:1476
msgid "FluidSynth Settings"
@@ -1324,20 +1321,20 @@ msgid "Another cloud storage is already active."
msgstr "Xa está activo outro almacenamento na nube."
#: gui/options.cpp:1895
-#, fuzzy
msgid "Theme does not support selected language!"
-msgstr "O complemento do motor non é compatible cos ficheiros de gardado"
+msgstr "O tema non é compatible co idioma seleccionado!"
#: gui/options.cpp:1898
-#, fuzzy
msgid "Theme cannot be loaded!"
-msgstr "Non se puido cargar a partida"
+msgstr "Non se puido cargar o tema!"
#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
msgstr ""
+"\n"
+"A configuración de Misc. será restaurada."
#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
@@ -1500,9 +1497,8 @@ msgid "Playtime: "
msgstr "Tempo de xogo: "
#: gui/saveload-dialog.cpp:579 gui/saveload-dialog.cpp:667
-#, fuzzy
msgid "Untitled saved game"
-msgstr "Partida sen título"
+msgstr "Partida gardada sen título"
#: gui/saveload-dialog.cpp:720
msgid "Next"
@@ -1630,7 +1626,6 @@ msgid "Antialiased"
msgstr "Antidistorsión"
#: gui/updates-dialog.cpp:49
-#, fuzzy
msgid ""
"ScummVM now supports automatic check for updates\n"
"which requires access to the Internet. Would you\n"
@@ -1638,7 +1633,6 @@ msgid ""
msgstr ""
"ScummVM agora ofrece a busca automática\n"
"de actualizacións. Require acceso á Internet.\n"
-"\n"
"Queres activar esta característica?"
#: gui/updates-dialog.cpp:52
@@ -1646,6 +1640,8 @@ msgid ""
"You can change this setting later in the Misc tab\n"
"in the Options dialog."
msgstr ""
+"Podes cambiar esta configuración máis tarde\n"
+"na pestana Misc. do diálogo Opcións."
#: gui/updates-dialog.cpp:116
msgid "Proceed"
@@ -1740,9 +1736,8 @@ msgid "Could not find suitable engine plugin"
msgstr "Non se atopou un complemento axeitado para o motor"
#: common/error.cpp:68
-#, fuzzy
msgid "Engine plugin does not support saved games"
-msgstr "O complemento do motor non é compatible cos ficheiros de gardado"
+msgstr "O complemento do motor non é compatible con ficheiros de gardado."
#: common/error.cpp:71
msgid "User canceled"
@@ -1796,20 +1791,21 @@ msgid "<Bad value>"
msgstr "<Valor erróneo>"
#: engines/advancedDetector.cpp:330
-#, fuzzy, c-format
+#, c-format
msgid ""
"The game in '%s' seems to be an unknown %s engine game variant.\n"
"\n"
"Please report the following data to the ScummVM team at %s along with the "
"name of the game you tried to add and its version, language, etc.:"
msgstr ""
-"O xogo en %s semella descoñecido.\n"
-"Por favor, envía estes datos ao equipo de ScummVM xunto co nome\n"
-"do xogo que queres engadir, a súa versión, lingua, etc.:"
+"O xogo en %s semella ser unha variante descoñecida do motor %s.\n"
+"\n"
+"Por favor, envía os seguintes datos ao equipo de ScummVM en %s xunto co nome "
+"do xogo que tentaches engadir, a súa versión, lingua, etc.:"
#: engines/advancedDetector.cpp:338
msgid "Matched game IDs:"
-msgstr ""
+msgstr "ID de xogo emparellados:"
#: engines/dialogs.cpp:85
msgid "~R~esume"
@@ -1893,7 +1889,7 @@ msgstr ""
"adicional."
#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
-#, fuzzy, c-format
+#, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
"and for instructions on how to obtain further assistance."
@@ -1964,7 +1960,7 @@ msgstr ""
"para obter máis información."
#: engines/engine.cpp:508
-#, fuzzy, c-format
+#, c-format
msgid ""
"Failed to load saved game (%s)! Please consult the README for basic "
"information, and for instructions on how to obtain further assistance."
@@ -2798,7 +2794,7 @@ msgstr "Buscar actualizacións..."
#: engines/toon/toon.cpp:4918
#, c-format
msgid "Unable to locate the '%s' engine data file."
-msgstr ""
+msgstr "Non se puido localizar o ficheiro de datos do motor %s."
#: engines/access/resources.cpp:52 engines/drascula/drascula.cpp:977
#: engines/hugo/hugo.cpp:448 engines/lure/lure.cpp:73
@@ -2806,7 +2802,7 @@ msgstr ""
#: engines/toon/toon.cpp:4930
#, c-format
msgid "The '%s' engine data file is corrupt."
-msgstr ""
+msgstr "O ficheiro de datos do motor %s está danado."
#: engines/access/resources.cpp:61 engines/drascula/drascula.cpp:988
#: engines/hugo/hugo.cpp:458 engines/lure/lure.cpp:76
@@ -2817,6 +2813,8 @@ msgid ""
"Incorrect version of the '%s' engine data file found. Expected %d.%d but got "
"%d.%d."
msgstr ""
+"Atopouse unha versión incorrecta do ficheiro de datos do motor %s. Ficheiro "
+"esperado: %d.%d. Ficheiro atopado: %d.%d."
#: engines/adl/detection.cpp:45 engines/adl/detection.cpp:55
msgid "Color mode"
@@ -2846,7 +2844,6 @@ msgstr "Empregar pantallas orixinais de gardado e carga"
#: engines/drascula/detection.cpp:303 engines/dreamweb/detection.cpp:49
#: engines/neverhood/detection.cpp:178 engines/sci/detection.cpp:453
#: engines/sherlock/detection.cpp:72 engines/toltecs/detection.cpp:201
-#, fuzzy
msgid "Use the original save/load screens instead of the ScummVM ones"
msgstr ""
"Emprega as pantallas orixinais de gardado e carga, no canto das de ScummVM."
@@ -2923,7 +2920,7 @@ msgid "Restore"
msgstr "Restaurar"
#: engines/agos/saveload.cpp:159 engines/scumm/scumm.cpp:2436
-#, fuzzy, c-format
+#, c-format
msgid ""
"Failed to load saved game from file:\n"
"\n"
@@ -2934,7 +2931,7 @@ msgstr ""
"%s"
#: engines/agos/saveload.cpp:194 engines/scumm/scumm.cpp:2429
-#, fuzzy, c-format
+#, c-format
msgid ""
"Failed to save game to file:\n"
"\n"
@@ -2945,7 +2942,7 @@ msgstr ""
"%s"
#: engines/agos/saveload.cpp:202 engines/scumm/scumm.cpp:2447
-#, fuzzy, c-format
+#, c-format
msgid ""
"Successfully saved game in file:\n"
"\n"
@@ -2969,7 +2966,6 @@ msgid "Enable Color Blind Mode by default"
msgstr "Activa o modo accesible para daltonismo de xeito predeterminado."
#: engines/drascula/saveload.cpp:47
-#, fuzzy
msgid ""
"ScummVM found that you have old saved games for Drascula that should be "
"converted.\n"
@@ -2997,13 +2993,11 @@ msgstr "Mostrar os gráficos coa paletta intensa do xogo"
#: engines/gob/inter_playtoons.cpp:255 engines/gob/inter_v2.cpp:1467
#: engines/gob/inter_geisha.cpp:232 engines/tinsel/saveload.cpp:532
-#, fuzzy
msgid "Failed to load saved game from file."
msgstr "Erro ao cargar a partida do ficheiro."
#: engines/gob/inter_v2.cpp:1537 engines/gob/inter_geisha.cpp:263
#: engines/tinsel/saveload.cpp:545
-#, fuzzy
msgid "Failed to save game to file."
msgstr "Erro ao gardar a partida no ficheiro."
@@ -3228,7 +3222,7 @@ msgstr ""
"\n"
#: engines/kyra/saveload_eob.cpp:623
-#, fuzzy, c-format
+#, c-format
msgid ""
"%d original saved games have been successfully imported into\n"
"ScummVM. If you want to manually import original saved game later you will\n"
@@ -3236,11 +3230,11 @@ msgid ""
"'import_savefile'.\n"
"\n"
msgstr ""
-"Importación exitosa de %d ficheiro(s) de gardado a ScummVM.\n"
+"Importación exitosa de %d ficheiros de gardado orixinais a ScummVM.\n"
"Se queres importar manualmente outros ficheiros de gardado orixinais máis "
"adiante,\n"
-"abre a consola de depuración de ScummVM e emprega o comando \"import_savefile"
-"\".\n"
+"abre a consola de depuración de ScummVM e emprega o comando \""
+"import_savefile\".\n"
"\n"
#: engines/mads/detection.cpp:91
@@ -3298,28 +3292,24 @@ msgid "~W~ater Effect Enabled"
msgstr "Efecto de ~a~uga activado"
#: engines/mohawk/dialogs.cpp:272
-#, fuzzy
msgid "Transitions:"
-msgstr "~T~ransicións activadas"
+msgstr "Transicións:"
#: engines/mohawk/dialogs.cpp:274
-#, fuzzy
msgid "Disabled"
-msgstr "Efectos gráficos desactivados"
+msgstr "Desactivados"
#: engines/mohawk/dialogs.cpp:275
-#, fuzzy
msgid "Fastest"
-msgstr "Pegar"
+msgstr "Máis rápido"
#: engines/mohawk/dialogs.cpp:276
-#, fuzzy
msgid "Normal"
-msgstr "OpenGL Normal"
+msgstr "Normal"
#: engines/mohawk/dialogs.cpp:277
msgid "Best"
-msgstr ""
+msgstr "Mellor"
#: engines/mohawk/mohawk.cpp:58
msgid "The game is paused. Press any key to continue."
@@ -3351,7 +3341,7 @@ msgstr ""
#: engines/mohawk/riven.cpp:410
msgid "You are missing the following required Riven data files:\n"
-msgstr ""
+msgstr "Faltan os seguintes ficheiros de datos requiridos de Riven:\n"
#: engines/mohawk/riven_stack.cpp:182
msgid ""
@@ -3417,7 +3407,6 @@ msgid "Saving game..."
msgstr "Gardando..."
#: engines/parallaction/saveload.cpp:269
-#, fuzzy
msgid ""
"ScummVM found that you have old saved games for Nippon Safes that should be "
"renamed.\n"
@@ -3435,7 +3424,6 @@ msgstr ""
"vez que inicies o xogo.\n"
#: engines/parallaction/saveload.cpp:316
-#, fuzzy
msgid "ScummVM successfully converted all your saved games."
msgstr "ScummVM converteu correctamente todos os ficheiros de gardado."
@@ -3452,9 +3440,8 @@ msgstr ""
"Contacta co equipo de ScummVM."
#: engines/pegasus/pegasus.cpp:716
-#, fuzzy
msgid "Invalid file name for saving"
-msgstr "Introducir nome de ficheiro para gardar"
+msgstr "Nome de ficheiro de gardado non válido"
#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
@@ -3524,12 +3511,11 @@ msgstr "Debuxa liñas negras sobre os vídeos para aumentar a nitidez aparente."
#: engines/sci/detection.cpp:431
msgid "Use high-quality video scaling"
-msgstr ""
+msgstr "Empregar escalado de vídeo de alta calidade"
#: engines/sci/detection.cpp:432
-#, fuzzy
msgid "Use linear interpolation when upscaling videos, where possible"
-msgstr "Empregar filtrado linear ao escalar gráficos"
+msgstr "Empregar interpolación linear ao escalar gráficos, se é posible"
#: engines/sci/detection.cpp:442
msgid "Prefer digital sound effects"
@@ -3575,7 +3561,6 @@ msgid "Use silver cursors"
msgstr "Empregar cursores prateados"
#: engines/sci/detection.cpp:496
-#, fuzzy
msgid ""
"Use the alternate set of silver cursors instead of the normal golden ones"
msgstr ""
@@ -3583,18 +3568,16 @@ msgstr ""
"normais."
#: engines/sci/detection.cpp:506
-#, fuzzy
msgid "Enable content censoring"
-msgstr "Activa os cursores flotantes."
+msgstr "Activar censura de contidos"
#: engines/sci/detection.cpp:507
msgid "Enable the game's built-in optional content censoring"
-msgstr ""
+msgstr "Activa a censura de contidos opcional incorporada ao xogo."
#: engines/sci/detection.cpp:837 engines/sci/engine/kfile.cpp:481
-#, fuzzy
msgid "(Autosave)"
-msgstr "Autogardado:"
+msgstr "(Autogardado)"
#: engines/sci/engine/kgraphics.cpp:984
msgid ""
@@ -3604,26 +3587,34 @@ msgid ""
"was saved in: 'qfg1-' for Quest for Glory 1, 'qfg2-' for Quest for Glory 2. "
"Example: 'qfg2-thief.sav'."
msgstr ""
+"Os personaxes gardados en ScummVM móstranse automaticamente. Os ficheiros de "
+"personaxes gardados no intérprete orixinal deben ser ubicados no directorio "
+"de partidas gardadas de ScummVM e precisarán un prefixo, segundo o xogo no "
+"que se gardasen: \"qfg1-\" para Quest for Glory 1, \"qfg2-\" para Quest for "
+"Glory 2. Exemplo: \"qfg2-thief.sav\"."
#: engines/sci/engine/kgraphics32.cpp:348
#, c-format
msgid "Please use an external viewer to open the game's help file: %s"
-msgstr ""
+msgstr "Usa un visor externo para abrir o ficheiro de axuda do xogo: %s."
#: engines/sci/engine/savegame.cpp:1290
msgid "The format of this saved game is obsolete, unable to load it"
-msgstr ""
+msgstr "O formato desta partida gardada está obsoleto. Non é posible cargala."
#: engines/sci/engine/savegame.cpp:1292
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr ""
+"A versión do ficheiro de gardado é %d. A versión máxima compatible é %0d."
#: engines/sci/engine/savegame.cpp:1303
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
msgstr ""
+"Esta partida gardada creouse cunha versión diferente do xogo. Non é posible "
+"cargala."
#: engines/sci/resource.cpp:822
msgid ""
@@ -3631,6 +3622,9 @@ msgid ""
"not work properly. Please check the console for more information, and verify "
"that your game files are valid."
msgstr ""
+"Detectáronse recursos faltantes ou danados. Algunhas características do xogo "
+"poderán non funcionar correctamente. Consulta a consola para obter máis "
+"información e verifica que os ficheiros do xogo son válidos."
#: engines/sci/sci.cpp:400
msgid ""
@@ -3639,6 +3633,10 @@ msgid ""
"riddles. Please, apply the latest patch for this game by Sierra to avoid "
"possible problems."
msgstr ""
+"Detectouse un script do xogo con erros coñecidos, que podería impedir o "
+"progreso posterior no xogo, durante a secuencia das adiviñas do home verde. "
+"Aplica o último parche de Sierra para este xogo para evitar posibles "
+"problemas."
#: engines/sci/sci.cpp:409
msgid ""
@@ -3648,6 +3646,11 @@ msgid ""
"not always render properly or reflect the actual game speech. This is not a "
"ScummVM bug -- it is a problem with the game's assets."
msgstr ""
+"Subtítulos activados. No entanto, esta característica de King's Quest 7 non "
+"se rematou e foi desactivada na versión comercial do xogo. ScummVM permite a "
+"reactivación dos subtítulos, mais como foron eliminados do xogo orixinal, "
+"non sempre son reproducidos correctamente e poden non reflectir os diálogos "
+"do xogo: non é un erro de ScummVM, é un problema dos recursos do xogo."
#: engines/sci/sci.cpp:433
msgid ""
@@ -3661,6 +3664,15 @@ msgid ""
"place it in the game folder. Without this patch, General MIDI music for this "
"game will sound badly distorted."
msgstr ""
+"Seleccionaches General MIDI como dispositivo de son. Sierra forneceu "
+"compatibilidade con General MIDI para este xogo coa súa \"General MIDI "
+"Utility\". Aplica este parche para gozar da música MIDI neste xogo. Cando o "
+"obteñas, podes descomprimir todos os ficheiros .PAT incluídos nel no "
+"cartafol de extras de ScummVM, e a aplicación engadirá o parche apropiado "
+"automaticamente. Tamén podes seguir as instrucións do ficheiro READ.ME "
+"incluído no parche e renomear o ficheiro .PAT asociado como 4.PAT, e ubicalo "
+"no cartafol do xogo. Sen o parche, a música General MIDI deste xogo soará "
+"moi distorsionada."
#: engines/sci/sci.cpp:452
msgid ""
@@ -3670,9 +3682,13 @@ msgid ""
"remove this patch from your game folder in order to avoid having unexpected "
"errors and/or issues later on."
msgstr ""
+"O xogo está parcheado cun parche de scripts realizado por afeccionados. "
+"Estes parches poden causar problemas, xa que modifican os scripts do xogo "
+"significativamente. Os problemas que corrixen estes parches non teñen lugar "
+"en ScummVM, polo que recomendamos que elimines este parche do cartafol do "
+"xogo para evitar erros ou problemas inesperados máis adiante."
#: engines/scumm/detection.cpp:1126
-#, fuzzy
msgid ""
"Your game version appears to be unknown. If this is *NOT* a fan-modified\n"
"version (in particular, not a fan-made translation), please, report the\n"
@@ -3683,7 +3699,7 @@ msgstr ""
"A túa versión do xogo semella descoñecida. Se non é unha versión\n"
"modificada por afeccionados (en particular, unha tradución feita por\n"
"afeccionados), envía os seguintes datos ao equipo de ScummVM,\n"
-"xunto co nome do xogo que queres engadir, a súa versión, lingua, etc.:"
+"xunto co nome do xogo que tentaches engadir, a súa versión, lingua, etc.:\n"
#: engines/scumm/detection.cpp:1144
msgid ""
@@ -3856,7 +3872,6 @@ msgid "Ctrl"
msgstr "CTRL"
#: engines/scumm/help.cpp:80
-#, fuzzy
msgid "Load saved game 1-10"
msgstr "Cargar partida 1-10"
@@ -3867,7 +3882,6 @@ msgid "Alt"
msgstr "ALT"
#: engines/scumm/help.cpp:81
-#, fuzzy
msgid "Save game 1-10"
msgstr "Gardar partida 1-10"
@@ -4451,7 +4465,7 @@ msgstr "Mostra ventás cun fondo parcialmente transparente."
#: engines/sky/compact.cpp:141
msgid "The \"sky.cpt\" engine data file has an incorrect size."
-msgstr ""
+msgstr "O ficheiro de datos do motor \"sky.cpt\" ten un tamaño incorrecto."
#: engines/sky/detection.cpp:44
msgid "Floppy intro"
@@ -4485,7 +4499,6 @@ msgid "Cutscene '%s' not found"
msgstr "Non se atopou a secuencia %s"
#: engines/sword1/control.cpp:885
-#, fuzzy
msgid ""
"ScummVM found that you have old saved games for Broken Sword 1 that should "
"be converted.\n"
@@ -4560,7 +4573,7 @@ msgstr ""
#: engines/tony/tony.cpp:258
#, c-format
msgid "Font variant not present in '%s' engine data file."
-msgstr ""
+msgstr "Variante de fonte non presente no ficheiro de datos do motor \"%s\"."
#: engines/toon/toon.cpp:222
#, c-format
@@ -4573,14 +4586,14 @@ msgid "Could not quick save into slot #%d"
msgstr "Erro ao gardar rápido no espazo %d"
#: engines/toon/toon.cpp:239
-#, fuzzy, c-format
+#, c-format
msgid "Saved game #%d quick loaded"
-msgstr "Carga rápida exitosa dos datos gardados %d"
+msgstr "Carga rápida exitosa da partida gardada %d."
#: engines/toon/toon.cpp:243
-#, fuzzy, c-format
+#, c-format
msgid "Could not quick load the saved game #%d"
-msgstr "Erro de carga rápida dos datos gardados %d"
+msgstr "Erro de carga rápida da partida gardada %d."
#: engines/wintermute/detection.cpp:58
msgid "Show FPS-counter"
@@ -4592,11 +4605,11 @@ msgstr "Mostra o número actual de FPS na esquina superior esquerda."
#: engines/wintermute/detection.cpp:68
msgid "Sprite bilinear filtering (SLOW)"
-msgstr ""
+msgstr "Filtraxe bilineal de sprites (LENTA)"
#: engines/wintermute/detection.cpp:69
msgid "Apply bilinear filtering to individual sprites"
-msgstr ""
+msgstr "Aplica a flitraxe bilineal a cada sprite."
#: engines/zvision/detection_tables.h:52
msgid "Use the original save/load screens instead of the ScummVM interface"
@@ -4633,20 +4646,19 @@ msgid "Use high resolution MPEG video"
msgstr "Empregar modo de vídeo MPEG de alta resolución"
#: engines/zvision/detection_tables.h:92
-#, fuzzy
msgid "Use MPEG video from the DVD version instead of lower resolution AVI"
msgstr ""
-"Emprega o vídeo MPEG da versión en DVD, no canto do AVI de baixa resolución."
+"Emprega o vídeo MPEG da versión en DVD, no canto do AVI de menor resolución."
#: engines/zvision/file/save_manager.cpp:220
-#, fuzzy, c-format
+#, c-format
msgid ""
"This saved game uses version %u, but this engine only supports up to version "
"%d. You will need an updated version of the engine to use this saved game."
msgstr ""
-"Estes datos gardados empregan a versión %u. No entanto, o motor só é "
+"Esta partida gardada emprega a versión %u. No entanto, o motor só é "
"compatíbel até a versión %d. Cómpre descargar unha versión actualizada do "
-"motor para empregar estes datos gardados."
+"motor para empregar esta partida gardada."
#~ msgid "(You can always enable it in the options dialog on the Misc tab)"
#~ msgstr "(Podes actívalo no diálogo de opción da pestana Misc.)"
diff --git a/po/hu_HU.po b/po/hu_HU.po
index 418ffce437..b8765217dd 100644
--- a/po/hu_HU.po
+++ b/po/hu_HU.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.3.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2017-11-10 16:20+0000\n"
"Last-Translator: George Kormendi <grubycza@hotmail.com>\n"
"Language-Team: Hungarian <https://translations.scummvm.org/projects/scummvm/"
diff --git a/po/it_IT.po b/po/it_IT.po
index db1f24e114..e4ba8deeeb 100644
--- a/po/it_IT.po
+++ b/po/it_IT.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.3.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2017-10-15 16:42+0000\n"
"Last-Translator: Paolo Bossi <pbossi86@gmail.com>\n"
"Language-Team: Italian <https://translations.scummvm.org/projects/scummvm/"
diff --git a/po/nb_NO.po b/po/nb_NO.po
index 53ccf89d11..be8a2fbff1 100644
--- a/po/nb_NO.po
+++ b/po/nb_NO.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.3.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2016-12-26 17:36+0000\n"
"Last-Translator: Einar Johan Trøan Sømåen <einarjohants@gmail.com>\n"
"Language-Team: Norwegian Bokmål <https://translations.scummvm.org/projects/"
diff --git a/po/nl_NL.po b/po/nl_NL.po
index ca33c70ad1..bb746d489c 100644
--- a/po/nl_NL.po
+++ b/po/nl_NL.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.9.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2017-11-11 15:31+0000\n"
"Last-Translator: Ben Castricum <github@bencastricum.nl>\n"
"Language-Team: Dutch <https://translations.scummvm.org/projects/scummvm/"
diff --git a/po/nn_NO.po b/po/nn_NO.po
index f712423d26..b4cbe945b3 100644
--- a/po/nn_NO.po
+++ b/po/nn_NO.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.3.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2016-12-18 18:23+0000\n"
"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n"
"Language-Team: Norwegian Nynorsk <https://translations.scummvm.org/projects/"
diff --git a/po/pl_PL.po b/po/pl_PL.po
index f327217ad5..84e32a25b5 100644
--- a/po/pl_PL.po
+++ b/po/pl_PL.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.3.0\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2017-01-25 12:49+0000\n"
"Last-Translator: Rafa³ Rzepecki <divided.mind@gmail.com>\n"
"Language-Team: Polish <https://translations.scummvm.org/projects/scummvm/"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index e1833b538b..1fad502174 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.3.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2017-03-03 22:26+0000\n"
"Last-Translator: rafaelmessias <rmmartins@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://translations.scummvm.org/"
diff --git a/po/pt_PT.po b/po/pt_PT.po
index 9353874a96..96b5d23618 100644
--- a/po/pt_PT.po
+++ b/po/pt_PT.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.10.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2017-01-30 14:50+0000\n"
"Last-Translator: Vitor Santos <vitorhgsantos90@gmail.com>\n"
"Language-Team: Portuguese (Portugal) <https://translations.scummvm.org/"
diff --git a/po/ru_RU.po b/po/ru_RU.po
index 6e9fdcbd19..381b3bdd33 100644
--- a/po/ru_RU.po
+++ b/po/ru_RU.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.8.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2017-06-20 15:35+0000\n"
"Last-Translator: Ivan Lukyanov <lid-gr@tut.by>\n"
"Language-Team: Russian <https://translations.scummvm.org/projects/scummvm/"
diff --git a/po/scummvm.pot b/po/scummvm.pot
index acfe0905ad..4ed6c21e8c 100644
--- a/po/scummvm.pot
+++ b/po/scummvm.pot
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: ScummVM 1.10.0git\n"
+"Project-Id-Version: ScummVM 2.0.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/po/sv_SE.po b/po/sv_SE.po
index 05074ea4bc..9ebfe86e8e 100644
--- a/po/sv_SE.po
+++ b/po/sv_SE.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.5.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2017-01-06 09:18+0000\n"
"Last-Translator: Petter Sjölund <ignalina@mac.com>\n"
"Language-Team: Swedish <https://translations.scummvm.org/projects/scummvm/"
diff --git a/po/uk_UA.po b/po/uk_UA.po
index 9cb3cc4a1d..c68f09ea66 100644
--- a/po/uk_UA.po
+++ b/po/uk_UA.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.9.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2017-06-14 14:55+0000\n"
"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n"
"Language-Team: Ukrainian <https://translations.scummvm.org/projects/scummvm/"
diff --git a/po/zh-Latn_CN.po b/po/zh-Latn_CN.po
index ee0ca542d4..912d0f45ca 100644
--- a/po/zh-Latn_CN.po
+++ b/po/zh-Latn_CN.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.9.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-11-15 00:50+0100\n"
+"POT-Creation-Date: 2017-11-21 22:47+0100\n"
"PO-Revision-Date: 2016-12-26 19:38+0000\n"
"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n"
"Language-Team: Chinese <https://translations.scummvm.org/projects/scummvm/"
diff --git a/snapcraft.yaml b/snapcraft.yaml
index 178a323414..eee5e6ae42 100644
--- a/snapcraft.yaml
+++ b/snapcraft.yaml
@@ -1,5 +1,5 @@
name: scummvm
-version: "1.9.0git"
+version: "2.0.0git"
summary: ScummVM
description: |
ScummVM is a program which allows you to run certain classic graphical
diff --git a/snapcraft.yaml.in b/snapcraft.yaml.in
new file mode 100644
index 0000000000..a95477707a
--- /dev/null
+++ b/snapcraft.yaml.in
@@ -0,0 +1,63 @@
+name: scummvm
+version: "@VERSION@"
+summary: ScummVM
+description: |
+ ScummVM is a program which allows you to run certain classic graphical
+ point-and-click adventure games, provided you already have their data
+ files. The clever part about this: ScummVM just replaces the executables
+ shipped with the game, allowing you to play them on systems for which
+ they were never designed!
+confinement: strict
+
+apps:
+ scummvm:
+ command: scummvm
+ plugs: [x11, home, pulseaudio, unity7, opengl]
+
+parts:
+ scummvm:
+ source: .
+ plugin: autotools
+# Quick test build
+# configflags:
+# - --disable-all-engines
+# - --enable-engine=scumm
+ build-packages:
+ - g++
+ - make
+ - libsdl2-dev
+ - libjpeg62-dev
+ - libmpeg2-4-dev
+ - libogg-dev
+ - libvorbis-dev
+ - libflac-dev
+ - libmad0-dev
+ - libpng12-dev
+ - libtheora-dev
+ - libfaad-dev
+ - libfluidsynth-dev
+ - libfreetype6-dev
+ - zlib1g-dev
+ - libunity-dev
+ stage-packages:
+ - libicu55
+ - libasound2
+ - libc6
+ - libfaad2
+ - libflac8
+ - libfluidsynth1
+ - libgl1-mesa-dri
+ - libgl1-mesa-glx
+ - libjpeg62
+ - libjpeg8
+ - libmad0
+ - libmpeg2-4
+ - libogg0
+ - libpng12-0
+ - libsdl2-2.0-0
+ - libsndio6.1
+ - libstdc++6
+ - libtheora0
+ - libvorbis0a
+ - libvorbisfile3
+ - zlib1g
diff --git a/test/common/str.h b/test/common/str.h
index 9f8c6fbd60..783ed53c48 100644
--- a/test/common/str.h
+++ b/test/common/str.h
@@ -340,7 +340,7 @@ class StringTestSuite : public CxxTest::TestSuite
}
void test_string_printf() {
- TS_ASSERT_EQUALS( Common::String::format(""), "" );
+ TS_ASSERT_EQUALS( Common::String::format(" "), " " );
TS_ASSERT_EQUALS( Common::String::format("%s", "test"), "test" );
TS_ASSERT_EQUALS( Common::String::format("%s.s%.02d", "monkey", 1), "monkey.s01" );
TS_ASSERT_EQUALS( Common::String::format("Some %s to make this string longer than the default built-in %s %d", "text", "capacity", 123456), "Some text to make this string longer than the default built-in capacity 123456" );
diff --git a/test/module.mk b/test/module.mk
index 6974c7bfc1..9e844fa42d 100644
--- a/test/module.mk
+++ b/test/module.mk
@@ -29,13 +29,6 @@ TEST_LIBS += backends/platform/psp/memory.o \
backends/platform/psp/trace.o
endif
-ifdef HAVE_GCC3
-# In test/common/str.h, we test a zero length format string. This causes GCC
-# to generate a warning which in turn poses a problem when building with -Werror.
-# To work around this, we disable -Wformat here.
-TEST_CFLAGS += -Wno-format
-endif
-
# Enable this to get an X11 GUI for the error reporter.
#TEST_FLAGS += --gui=X11Gui
#TEST_LDFLAGS += -L/usr/X11R6/lib -lX11