aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--COPYRIGHT2
-rw-r--r--audio/decoders/wave.cpp7
-rw-r--r--backends/platform/symbian/README2
-rw-r--r--backends/platform/symbian/S60/ScummVM_S60.mmp.in2
-rw-r--r--backends/platform/symbian/S60/ScummVM_S60_App.mmp2
-rw-r--r--backends/platform/symbian/S60v3/ScummVM_A0000658_S60v3.mmp.in2
-rw-r--r--backends/platform/symbian/S60v3/ScummVM_S60v3.mmp.in2
-rw-r--r--backends/platform/symbian/S80/ScummVM_S80.mmp.in2
-rw-r--r--backends/platform/symbian/S80/ScummVM_S80_App.mmp2
-rw-r--r--backends/platform/symbian/S90/Scummvm_S90.mmp.in2
-rw-r--r--backends/platform/symbian/S90/Scummvm_S90_App.mmp2
-rw-r--r--backends/platform/symbian/UIQ2/ScummVM.rss2
-rw-r--r--backends/platform/symbian/UIQ3/ScummVM.rss2
-rw-r--r--backends/platform/symbian/UIQ3/ScummVM_A0000658.rss2
-rw-r--r--backends/platform/symbian/UIQ3/ScummVM_A0000658_UIQ3.mmp.in2
-rw-r--r--backends/platform/symbian/UIQ3/ScummVM_UIQ3.mmp.in2
-rw-r--r--backends/platform/symbian/UIQ3/scummvm_A0000658_loc.rss2
-rw-r--r--backends/platform/symbian/mmp/config.mmh2
-rw-r--r--backends/platform/symbian/mmp/scummvm_access.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_agi.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_agos.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_avalanche.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_base.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_bbvs.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_cge.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_cge2.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_cine.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_composer.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_cruise.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_draci.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_drascula.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_dreamweb.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_fullpipe.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_gob.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_groovie.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_hopkins.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_hugo.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_kyra.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_lastexpress.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_lure.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_m4.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_made.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_mads.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_mohawk.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_mortevielle.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_neverhood.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_parallaction.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_pegasus.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_prince.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_queen.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_saga.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_sci.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_scumm.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_sherlock.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_sky.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_sword1.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_sword2.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_sword25.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_teenagent.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_testbed.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_tinsel.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_toltecs.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_tony.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_toon.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_touche.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_tsage.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_tucker.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_voyeur.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_wintermute.mmp.in2
-rw-r--r--backends/platform/symbian/mmp/scummvm_zvision.mmp.in2
-rw-r--r--backends/platform/symbian/res/ScummVmAif.rss2
-rw-r--r--backends/platform/symbian/res/scummvm.rss2
-rw-r--r--backends/platform/symbian/res/scummvm_A0000658.rss2
-rw-r--r--backends/platform/symbian/src/ScummVm.hrh2
-rw-r--r--common/scummsys.h1
-rw-r--r--devtools/create_titanic/create_titanic_dat.cpp18
-rw-r--r--dists/debian/copyright2
-rw-r--r--dists/macosx/Info.plist4
-rw-r--r--dists/macosx/Info.plist.in4
-rw-r--r--dists/macosx/dockplugin/Info.plist2
-rw-r--r--dists/macosx/dockplugin/Info.plist.in2
-rw-r--r--dists/scummvm.rc2
-rw-r--r--dists/scummvm.rc.in2
-rw-r--r--dists/win32/ScummVM.iss2
-rw-r--r--dists/win32/migration.bat2
-rw-r--r--engines/adl/adl.cpp275
-rw-r--r--engines/adl/adl.h15
-rw-r--r--engines/adl/adl_v2.cpp3
-rw-r--r--engines/adl/adl_v2.h3
-rw-r--r--engines/adl/adl_v4.cpp219
-rw-r--r--engines/adl/adl_v4.h10
-rw-r--r--engines/adl/console.cpp95
-rw-r--r--engines/adl/console.h3
-rw-r--r--engines/adl/display.cpp6
-rw-r--r--engines/adl/hires1.cpp3
-rw-r--r--engines/adl/hires5.cpp14
-rw-r--r--engines/fullpipe/detection.cpp2
-rw-r--r--engines/fullpipe/fullpipe.cpp8
-rw-r--r--engines/fullpipe/fullpipe.h4
-rw-r--r--engines/fullpipe/gfx.cpp25
-rw-r--r--engines/fullpipe/gfx.h6
-rw-r--r--engines/fullpipe/modal.cpp7
-rw-r--r--engines/fullpipe/scene.cpp3
-rw-r--r--engines/fullpipe/statics.cpp2
-rw-r--r--engines/sci/detection_tables.h12
-rw-r--r--engines/sci/engine/kscripts.cpp19
-rw-r--r--engines/sci/engine/script_patches.cpp32
-rw-r--r--engines/sci/engine/workarounds.cpp3
-rw-r--r--engines/sci/graphics/video32.cpp29
-rw-r--r--engines/sci/graphics/video32.h7
-rw-r--r--engines/titanic/carry/bridge_piece.cpp2
-rw-r--r--engines/titanic/carry/carry_parrot.cpp51
-rw-r--r--engines/titanic/carry/carry_parrot.h2
-rw-r--r--engines/titanic/continue_save_dialog.h4
-rw-r--r--engines/titanic/core/drop_target.cpp10
-rw-r--r--engines/titanic/core/drop_target.h2
-rw-r--r--engines/titanic/core/game_object.cpp21
-rw-r--r--engines/titanic/core/game_object.h112
-rw-r--r--engines/titanic/core/mail_man.cpp10
-rw-r--r--engines/titanic/core/mail_man.h4
-rw-r--r--engines/titanic/core/project_item.cpp6
-rw-r--r--engines/titanic/core/saveable_object.cpp3
-rw-r--r--engines/titanic/core/view_item.cpp2
-rw-r--r--engines/titanic/events.cpp2
-rw-r--r--engines/titanic/game/announce.cpp13
-rw-r--r--engines/titanic/game/announce.h2
-rw-r--r--engines/titanic/game/broken_pell_base.cpp4
-rw-r--r--engines/titanic/game/broken_pell_base.h4
-rw-r--r--engines/titanic/game/broken_pellerator.cpp30
-rw-r--r--engines/titanic/game/broken_pellerator.h4
-rw-r--r--engines/titanic/game/broken_pellerator_froz.cpp18
-rw-r--r--engines/titanic/game/cage.cpp8
-rw-r--r--engines/titanic/game/fan_control.cpp47
-rw-r--r--engines/titanic/game/fan_control.h6
-rw-r--r--engines/titanic/game/hammer_dispensor.cpp30
-rw-r--r--engines/titanic/game/hammer_dispensor.h4
-rw-r--r--engines/titanic/game/hammer_dispensor_button.cpp67
-rw-r--r--engines/titanic/game/hammer_dispensor_button.h11
-rw-r--r--engines/titanic/game/maitred/maitred_arm_holder.cpp2
-rw-r--r--engines/titanic/game/missiveomat.cpp234
-rw-r--r--engines/titanic/game/missiveomat.h22
-rw-r--r--engines/titanic/game/missiveomat_button.cpp2
-rw-r--r--engines/titanic/game/missiveomat_button.h5
-rw-r--r--engines/titanic/game/nose_holder.cpp25
-rw-r--r--engines/titanic/game/nose_holder.h2
-rw-r--r--engines/titanic/game/parrot/parrot_nut_eater.cpp1
-rw-r--r--engines/titanic/game/parrot/parrot_perch_holder.cpp4
-rw-r--r--engines/titanic/game/pickup/pick_up_hose.cpp8
-rw-r--r--engines/titanic/game/restaurant_cylinder_holder.cpp4
-rw-r--r--engines/titanic/game/start_action.cpp7
-rw-r--r--engines/titanic/game/sweet_bowl.cpp2
-rw-r--r--engines/titanic/game/television.cpp2
-rw-r--r--engines/titanic/game/tow_parrot_nav.cpp2
-rw-r--r--engines/titanic/game_state.cpp4
-rw-r--r--engines/titanic/gfx/edit_control.cpp113
-rw-r--r--engines/titanic/gfx/edit_control.h5
-rw-r--r--engines/titanic/gfx/text_control.cpp (renamed from engines/titanic/pet_control/pet_text.cpp)86
-rw-r--r--engines/titanic/gfx/text_control.h (renamed from engines/titanic/pet_control/pet_text.h)10
-rw-r--r--engines/titanic/input_handler.cpp10
-rw-r--r--engines/titanic/input_handler.h2
-rw-r--r--engines/titanic/messages/messages.h33
-rw-r--r--engines/titanic/module.mk2
-rw-r--r--engines/titanic/npcs/bilge_succubus.cpp138
-rw-r--r--engines/titanic/npcs/bilge_succubus.h8
-rw-r--r--engines/titanic/npcs/parrot.cpp96
-rw-r--r--engines/titanic/npcs/parrot.h16
-rw-r--r--engines/titanic/npcs/parrot_succubus.cpp2
-rw-r--r--engines/titanic/npcs/starlings.cpp17
-rw-r--r--engines/titanic/npcs/starlings.h3
-rw-r--r--engines/titanic/npcs/succubus.cpp199
-rw-r--r--engines/titanic/npcs/succubus.h38
-rw-r--r--engines/titanic/pet_control/pet_control.cpp6
-rw-r--r--engines/titanic/pet_control/pet_control.h9
-rw-r--r--engines/titanic/pet_control/pet_conversations.h6
-rw-r--r--engines/titanic/pet_control/pet_drag_chev.cpp1
-rw-r--r--engines/titanic/pet_control/pet_glyphs.cpp2
-rw-r--r--engines/titanic/pet_control/pet_glyphs.h4
-rw-r--r--engines/titanic/pet_control/pet_inventory.cpp9
-rw-r--r--engines/titanic/pet_control/pet_inventory.h7
-rw-r--r--engines/titanic/pet_control/pet_inventory_glyphs.cpp2
-rw-r--r--engines/titanic/pet_control/pet_inventory_glyphs.h2
-rw-r--r--engines/titanic/pet_control/pet_load.cpp2
-rw-r--r--engines/titanic/pet_control/pet_load.h2
-rw-r--r--engines/titanic/pet_control/pet_load_save.h4
-rw-r--r--engines/titanic/pet_control/pet_quit.cpp2
-rw-r--r--engines/titanic/pet_control/pet_quit.h8
-rw-r--r--engines/titanic/pet_control/pet_real_life.h6
-rw-r--r--engines/titanic/pet_control/pet_remote.cpp2
-rw-r--r--engines/titanic/pet_control/pet_remote.h6
-rw-r--r--engines/titanic/pet_control/pet_remote_glyphs.cpp36
-rw-r--r--engines/titanic/pet_control/pet_remote_glyphs.h36
-rw-r--r--engines/titanic/pet_control/pet_rooms.cpp6
-rw-r--r--engines/titanic/pet_control/pet_rooms.h6
-rw-r--r--engines/titanic/pet_control/pet_rooms_glyphs.cpp16
-rw-r--r--engines/titanic/pet_control/pet_rooms_glyphs.h2
-rw-r--r--engines/titanic/pet_control/pet_save.cpp2
-rw-r--r--engines/titanic/pet_control/pet_save.h2
-rw-r--r--engines/titanic/pet_control/pet_section.cpp4
-rw-r--r--engines/titanic/pet_control/pet_section.h4
-rw-r--r--engines/titanic/pet_control/pet_sound.cpp2
-rw-r--r--engines/titanic/pet_control/pet_sound.h12
-rw-r--r--engines/titanic/pet_control/pet_starfield.h4
-rw-r--r--engines/titanic/pet_control/pet_translation.cpp4
-rw-r--r--engines/titanic/pet_control/pet_translation.h8
-rw-r--r--engines/titanic/room_flags.cpp44
-rw-r--r--engines/titanic/room_flags.h4
-rw-r--r--engines/titanic/sound/auto_music_player_base.cpp2
-rw-r--r--engines/titanic/sound/season_noises.cpp19
-rw-r--r--engines/titanic/sound/season_noises.h2
-rw-r--r--engines/titanic/support/avi_surface.cpp6
-rw-r--r--engines/titanic/support/avi_surface.h5
-rw-r--r--engines/titanic/support/mouse_cursor.cpp8
-rw-r--r--engines/titanic/support/mouse_cursor.h11
-rw-r--r--engines/titanic/support/screen_manager.cpp5
-rw-r--r--engines/titanic/support/screen_manager.h5
-rw-r--r--engines/titanic/support/strings.h4
-rw-r--r--engines/titanic/true_talk/true_talk_manager.cpp3
-rw-r--r--engines/wintermute/base/base_game.cpp6
-rw-r--r--engines/wintermute/base/base_game.h3
-rw-r--r--engines/wintermute/base/file/base_disk_file.cpp4
-rw-r--r--engines/wintermute/base/gfx/osystem/render_ticket.cpp15
-rw-r--r--engines/wintermute/dctypes.h3
-rw-r--r--engines/wintermute/detection.cpp13
-rw-r--r--engines/wintermute/detection_tables.h13
-rw-r--r--engines/wintermute/utils/path_util.cpp48
-rw-r--r--engines/wintermute/utils/path_util.h15
-rw-r--r--graphics/macgui/mactext.cpp73
-rw-r--r--graphics/macgui/mactext.h5
-rw-r--r--graphics/transparent_surface.cpp384
-rw-r--r--graphics/transparent_surface.h12
-rw-r--r--gui/about.cpp2
-rw-r--r--gui/themes/translations.datbin609244 -> 610560 bytes
-rw-r--r--image/codecs/indeo/indeo.cpp7
-rw-r--r--image/codecs/indeo4.cpp2
-rw-r--r--image/codecs/indeo5.cpp2
-rw-r--r--image/tga.cpp17
-rw-r--r--po/be_BY.po66
-rw-r--r--po/ca_ES.po12
-rw-r--r--po/cs_CZ.po12
-rw-r--r--po/da_DK.po32
-rw-r--r--po/de_DE.po18
-rw-r--r--po/el.po4495
-rw-r--r--po/es_ES.po64
-rw-r--r--po/eu.po12
-rw-r--r--po/fi_FI.po628
-rw-r--r--po/fr_FR.po29
-rw-r--r--po/gl_ES.po12
-rw-r--r--po/hu_HU.po12
-rw-r--r--po/it_IT.po285
-rw-r--r--po/nb_NO.po45
-rw-r--r--po/nl_NL.po20
-rw-r--r--po/nn_NO.po12
-rw-r--r--po/pl_PL.po12
-rw-r--r--po/pt_BR.po41
-rw-r--r--po/pt_PT.po18
-rw-r--r--po/ru_RU.po44
-rw-r--r--po/scummvm.pot10
-rw-r--r--po/sv_SE.po95
-rw-r--r--po/uk_UA.po32
-rw-r--r--po/zh-Latn_CN.po124
-rw-r--r--test/engines/wintermute/path_utils.h236
-rw-r--r--test/module.mk5
-rw-r--r--video/avi_decoder.cpp19
263 files changed, 7772 insertions, 2166 deletions
diff --git a/COPYRIGHT b/COPYRIGHT
index 5ac5822799..531606a93e 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,5 +1,5 @@
ScummVM
-Copyright (C) 2001-2016 by the following:
+Copyright (C) 2001-2017 by the following:
If you have contributed to this project then you deserve to be on this
list. Contact us (see: AUTHORS) and we'll add you.
diff --git a/audio/decoders/wave.cpp b/audio/decoders/wave.cpp
index 803bdf3cf0..55c7034df6 100644
--- a/audio/decoders/wave.cpp
+++ b/audio/decoders/wave.cpp
@@ -61,6 +61,13 @@ bool loadWAVFromStream(Common::SeekableReadStream &stream, int &size, int &rate,
}
stream.read(buf, 4);
+ if (memcmp(buf, "fact", 4) == 0) {
+ // Initial fact chunk, so skip over it
+ uint32 factLen = stream.readUint32LE();
+ stream.skip(factLen);
+ stream.read(buf, 4);
+ }
+
if (memcmp(buf, "fmt ", 4) != 0) {
warning("getWavInfo: No 'fmt' header");
return false;
diff --git a/backends/platform/symbian/README b/backends/platform/symbian/README
index 47a3097ac0..cdff5f9787 100644
--- a/backends/platform/symbian/README
+++ b/backends/platform/symbian/README
@@ -1,7 +1,7 @@
ScummVM - ScummVM ported to EPOC/SymbianOS
- Copyright (C) 2008-2016 ScummVM Team
+ Copyright (C) 2008-2017 ScummVM Team
Copyright (C) 2013-2013 Fedor Strizhniou aka zanac
Copyright (C) 2003-2013 Lars 'AnotherGuest' Persson
Copyright (C) 2002-2008 Jurgen 'SumthinWicked' Braam
diff --git a/backends/platform/symbian/S60/ScummVM_S60.mmp.in b/backends/platform/symbian/S60/ScummVM_S60.mmp.in
index 14e586246a..9f47612f22 100644
--- a/backends/platform/symbian/S60/ScummVM_S60.mmp.in
+++ b/backends/platform/symbian/S60/ScummVM_S60.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/S60/ScummVM_S60_App.mmp b/backends/platform/symbian/S60/ScummVM_S60_App.mmp
index e75059b4b7..df70046bf4 100644
--- a/backends/platform/symbian/S60/ScummVM_S60_App.mmp
+++ b/backends/platform/symbian/S60/ScummVM_S60_App.mmp
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/S60v3/ScummVM_A0000658_S60v3.mmp.in b/backends/platform/symbian/S60v3/ScummVM_A0000658_S60v3.mmp.in
index a669943933..e6ae1b9f27 100644
--- a/backends/platform/symbian/S60v3/ScummVM_A0000658_S60v3.mmp.in
+++ b/backends/platform/symbian/S60v3/ScummVM_A0000658_S60v3.mmp.in
@@ -3,7 +3,7 @@
* Copyright (C) 2003-2014 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
* Copyright (C) 2013-2014 Fedor Strizhniou Additional library porting, engine support, help files etc
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/S60v3/ScummVM_S60v3.mmp.in b/backends/platform/symbian/S60v3/ScummVM_S60v3.mmp.in
index ac8fc6b35a..1555db872b 100644
--- a/backends/platform/symbian/S60v3/ScummVM_S60v3.mmp.in
+++ b/backends/platform/symbian/S60v3/ScummVM_S60v3.mmp.in
@@ -3,7 +3,7 @@
* Copyright (C) 2003-2014 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
* Copyright (C) 2013-2014 Fedor Strizhniou Additional library porting, engine support, help files etc
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/S80/ScummVM_S80.mmp.in b/backends/platform/symbian/S80/ScummVM_S80.mmp.in
index e7ebe900bb..304423e671 100644
--- a/backends/platform/symbian/S80/ScummVM_S80.mmp.in
+++ b/backends/platform/symbian/S80/ScummVM_S80.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/S80/ScummVM_S80_App.mmp b/backends/platform/symbian/S80/ScummVM_S80_App.mmp
index 4b3fc052cf..abf7c72aed 100644
--- a/backends/platform/symbian/S80/ScummVM_S80_App.mmp
+++ b/backends/platform/symbian/S80/ScummVM_S80_App.mmp
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/S90/Scummvm_S90.mmp.in b/backends/platform/symbian/S90/Scummvm_S90.mmp.in
index e35cdb9107..3f44b3ac26 100644
--- a/backends/platform/symbian/S90/Scummvm_S90.mmp.in
+++ b/backends/platform/symbian/S90/Scummvm_S90.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/S90/Scummvm_S90_App.mmp b/backends/platform/symbian/S90/Scummvm_S90_App.mmp
index 1716629ceb..e794acd3d3 100644
--- a/backends/platform/symbian/S90/Scummvm_S90_App.mmp
+++ b/backends/platform/symbian/S90/Scummvm_S90_App.mmp
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/UIQ2/ScummVM.rss b/backends/platform/symbian/UIQ2/ScummVM.rss
index 13712e26c4..c7d703bc5c 100644
--- a/backends/platform/symbian/UIQ2/ScummVM.rss
+++ b/backends/platform/symbian/UIQ2/ScummVM.rss
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-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
diff --git a/backends/platform/symbian/UIQ3/ScummVM.rss b/backends/platform/symbian/UIQ3/ScummVM.rss
index 5e133ac137..2f6d17fe3b 100644
--- a/backends/platform/symbian/UIQ3/ScummVM.rss
+++ b/backends/platform/symbian/UIQ3/ScummVM.rss
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/UIQ3/ScummVM_A0000658.rss b/backends/platform/symbian/UIQ3/ScummVM_A0000658.rss
index 5e133ac137..2f6d17fe3b 100644
--- a/backends/platform/symbian/UIQ3/ScummVM_A0000658.rss
+++ b/backends/platform/symbian/UIQ3/ScummVM_A0000658.rss
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/UIQ3/ScummVM_A0000658_UIQ3.mmp.in b/backends/platform/symbian/UIQ3/ScummVM_A0000658_UIQ3.mmp.in
index 5e27b87433..0bc0bf1f8e 100644
--- a/backends/platform/symbian/UIQ3/ScummVM_A0000658_UIQ3.mmp.in
+++ b/backends/platform/symbian/UIQ3/ScummVM_A0000658_UIQ3.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2009 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2009 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/UIQ3/ScummVM_UIQ3.mmp.in b/backends/platform/symbian/UIQ3/ScummVM_UIQ3.mmp.in
index 8568a51ec3..1c5127ff0f 100644
--- a/backends/platform/symbian/UIQ3/ScummVM_UIQ3.mmp.in
+++ b/backends/platform/symbian/UIQ3/ScummVM_UIQ3.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/UIQ3/scummvm_A0000658_loc.rss b/backends/platform/symbian/UIQ3/scummvm_A0000658_loc.rss
index 8f8ff5c3b0..1e08f72002 100644
--- a/backends/platform/symbian/UIQ3/scummvm_A0000658_loc.rss
+++ b/backends/platform/symbian/UIQ3/scummvm_A0000658_loc.rss
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/config.mmh b/backends/platform/symbian/mmp/config.mmh
index 8a81fd2b78..414110ccd0 100644
--- a/backends/platform/symbian/mmp/config.mmh
+++ b/backends/platform/symbian/mmp/config.mmh
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
* Copyright (C) 2014 Fedor Strizhniou
*
* ScummVM is the legal property of its developers, whose names
diff --git a/backends/platform/symbian/mmp/scummvm_access.mmp.in b/backends/platform/symbian/mmp/scummvm_access.mmp.in
index 8e1c85f3e3..d6dd0c3753 100644
--- a/backends/platform/symbian/mmp/scummvm_access.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_access.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM project
+ * Copyright (C) 2005-2017 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_agi.mmp.in b/backends/platform/symbian/mmp/scummvm_agi.mmp.in
index dcea8f023b..76df3cf57d 100644
--- a/backends/platform/symbian/mmp/scummvm_agi.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_agi.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_agos.mmp.in b/backends/platform/symbian/mmp/scummvm_agos.mmp.in
index c5eb4d8ad4..22d8fdcae0 100644
--- a/backends/platform/symbian/mmp/scummvm_agos.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_agos.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_avalanche.mmp.in b/backends/platform/symbian/mmp/scummvm_avalanche.mmp.in
index a9580c643e..adb18d3915 100644
--- a/backends/platform/symbian/mmp/scummvm_avalanche.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_avalanche.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
* Copyright (C) 2013 Strizniou Fedor
*
* ScummVM is the legal property of its developers, whose names
diff --git a/backends/platform/symbian/mmp/scummvm_base.mmp.in b/backends/platform/symbian/mmp/scummvm_base.mmp.in
index 58a56c95ac..703d2c6c32 100644
--- a/backends/platform/symbian/mmp/scummvm_base.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_base.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_bbvs.mmp.in b/backends/platform/symbian/mmp/scummvm_bbvs.mmp.in
index 864d019c97..9c27028682 100644
--- a/backends/platform/symbian/mmp/scummvm_bbvs.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_bbvs.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
* Copyright (C) 2014 Fedor Strizhniou - Epoc project file
*
* ScummVM is the legal property of its developers, whose names
diff --git a/backends/platform/symbian/mmp/scummvm_cge.mmp.in b/backends/platform/symbian/mmp/scummvm_cge.mmp.in
index bcfbec8a70..330ce0fe3b 100644
--- a/backends/platform/symbian/mmp/scummvm_cge.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_cge.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_cge2.mmp.in b/backends/platform/symbian/mmp/scummvm_cge2.mmp.in
index f09a2b2427..7e32ef4766 100644
--- a/backends/platform/symbian/mmp/scummvm_cge2.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_cge2.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_cine.mmp.in b/backends/platform/symbian/mmp/scummvm_cine.mmp.in
index ff55b1bc1d..d811d0529b 100644
--- a/backends/platform/symbian/mmp/scummvm_cine.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_cine.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_composer.mmp.in b/backends/platform/symbian/mmp/scummvm_composer.mmp.in
index c974df098a..9838194d0f 100644
--- a/backends/platform/symbian/mmp/scummvm_composer.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_composer.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_cruise.mmp.in b/backends/platform/symbian/mmp/scummvm_cruise.mmp.in
index 134c924d2a..dadc04e544 100644
--- a/backends/platform/symbian/mmp/scummvm_cruise.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_cruise.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_draci.mmp.in b/backends/platform/symbian/mmp/scummvm_draci.mmp.in
index 66d111efb0..26ef912cfb 100644
--- a/backends/platform/symbian/mmp/scummvm_draci.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_draci.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_drascula.mmp.in b/backends/platform/symbian/mmp/scummvm_drascula.mmp.in
index b3128978c3..bb695bdb5c 100644
--- a/backends/platform/symbian/mmp/scummvm_drascula.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_drascula.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_dreamweb.mmp.in b/backends/platform/symbian/mmp/scummvm_dreamweb.mmp.in
index b7841ee9cb..0829f4a2f0 100644
--- a/backends/platform/symbian/mmp/scummvm_dreamweb.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_dreamweb.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
* Copyright (C) 2013 Strizniou Fedor
*
* ScummVM is the legal property of its developers, whose names
diff --git a/backends/platform/symbian/mmp/scummvm_fullpipe.mmp.in b/backends/platform/symbian/mmp/scummvm_fullpipe.mmp.in
index 85bbfa69be..79a5641c80 100644
--- a/backends/platform/symbian/mmp/scummvm_fullpipe.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_fullpipe.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
* Copyright (C) 2013 Strizniou Fedor
*
* ScummVM is the legal property of its developers, whose names
diff --git a/backends/platform/symbian/mmp/scummvm_gob.mmp.in b/backends/platform/symbian/mmp/scummvm_gob.mmp.in
index b91fbb68b7..def031ec56 100644
--- a/backends/platform/symbian/mmp/scummvm_gob.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_gob.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_groovie.mmp.in b/backends/platform/symbian/mmp/scummvm_groovie.mmp.in
index effff997df..eb2778f4e4 100644
--- a/backends/platform/symbian/mmp/scummvm_groovie.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_groovie.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_hopkins.mmp.in b/backends/platform/symbian/mmp/scummvm_hopkins.mmp.in
index 4df1db9be6..7f344fb5ef 100644
--- a/backends/platform/symbian/mmp/scummvm_hopkins.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_hopkins.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_hugo.mmp.in b/backends/platform/symbian/mmp/scummvm_hugo.mmp.in
index c294588147..bdad87c480 100644
--- a/backends/platform/symbian/mmp/scummvm_hugo.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_hugo.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_kyra.mmp.in b/backends/platform/symbian/mmp/scummvm_kyra.mmp.in
index ad6dfebe71..21730e4761 100644
--- a/backends/platform/symbian/mmp/scummvm_kyra.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_kyra.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_lastexpress.mmp.in b/backends/platform/symbian/mmp/scummvm_lastexpress.mmp.in
index 9c49fe7dcb..ba93db6bbd 100644
--- a/backends/platform/symbian/mmp/scummvm_lastexpress.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_lastexpress.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_lure.mmp.in b/backends/platform/symbian/mmp/scummvm_lure.mmp.in
index 4982576432..32ac942f15 100644
--- a/backends/platform/symbian/mmp/scummvm_lure.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_lure.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_m4.mmp.in b/backends/platform/symbian/mmp/scummvm_m4.mmp.in
index 5a87e3fd14..f910e54214 100644
--- a/backends/platform/symbian/mmp/scummvm_m4.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_m4.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_made.mmp.in b/backends/platform/symbian/mmp/scummvm_made.mmp.in
index ab809351c5..b8f77c04a9 100644
--- a/backends/platform/symbian/mmp/scummvm_made.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_made.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_mads.mmp.in b/backends/platform/symbian/mmp/scummvm_mads.mmp.in
index 65224af700..43da279c4f 100644
--- a/backends/platform/symbian/mmp/scummvm_mads.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_mads.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
* Copyright (C) 2014 Fedor Strizhniou - Epoc project file
*
* ScummVM is the legal property of its developers, whose names
diff --git a/backends/platform/symbian/mmp/scummvm_mohawk.mmp.in b/backends/platform/symbian/mmp/scummvm_mohawk.mmp.in
index ff3bce9767..379614d12f 100644
--- a/backends/platform/symbian/mmp/scummvm_mohawk.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_mohawk.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_mortevielle.mmp.in b/backends/platform/symbian/mmp/scummvm_mortevielle.mmp.in
index e04006ea85..57484f4ccb 100644
--- a/backends/platform/symbian/mmp/scummvm_mortevielle.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_mortevielle.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
* Copyright (C) 2013 Strizniou Fedor
*
* ScummVM is the legal property of its developers, whose names
diff --git a/backends/platform/symbian/mmp/scummvm_neverhood.mmp.in b/backends/platform/symbian/mmp/scummvm_neverhood.mmp.in
index 05f195c2c4..1f4edd5627 100644
--- a/backends/platform/symbian/mmp/scummvm_neverhood.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_neverhood.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_parallaction.mmp.in b/backends/platform/symbian/mmp/scummvm_parallaction.mmp.in
index 933deec4b7..7ee266fd0b 100644
--- a/backends/platform/symbian/mmp/scummvm_parallaction.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_parallaction.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_pegasus.mmp.in b/backends/platform/symbian/mmp/scummvm_pegasus.mmp.in
index e292764ed9..1e62557c14 100644
--- a/backends/platform/symbian/mmp/scummvm_pegasus.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_pegasus.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_prince.mmp.in b/backends/platform/symbian/mmp/scummvm_prince.mmp.in
index c0b8193c38..466ba9bc5d 100644
--- a/backends/platform/symbian/mmp/scummvm_prince.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_prince.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM project
+ * Copyright (C) 2005-2017 The ScummVM project
* Copyright (C) 2014 Strizniou Fedor
*
* ScummVM is the legal property of its developers, whose names
diff --git a/backends/platform/symbian/mmp/scummvm_queen.mmp.in b/backends/platform/symbian/mmp/scummvm_queen.mmp.in
index 106037e741..301ead5ccb 100644
--- a/backends/platform/symbian/mmp/scummvm_queen.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_queen.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_saga.mmp.in b/backends/platform/symbian/mmp/scummvm_saga.mmp.in
index 230b54ed07..5f035578a4 100644
--- a/backends/platform/symbian/mmp/scummvm_saga.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_saga.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_sci.mmp.in b/backends/platform/symbian/mmp/scummvm_sci.mmp.in
index 42c79c4ccf..3db2e5b1ab 100644
--- a/backends/platform/symbian/mmp/scummvm_sci.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_sci.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_scumm.mmp.in b/backends/platform/symbian/mmp/scummvm_scumm.mmp.in
index c727a6f1be..bebe5e72f2 100644
--- a/backends/platform/symbian/mmp/scummvm_scumm.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_scumm.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_sherlock.mmp.in b/backends/platform/symbian/mmp/scummvm_sherlock.mmp.in
index 4c4117f39e..353442bfcb 100644
--- a/backends/platform/symbian/mmp/scummvm_sherlock.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_sherlock.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
* Copyright (C) 2015 Strizniou Fedor
*
* ScummVM is the legal property of its developers, whose names
diff --git a/backends/platform/symbian/mmp/scummvm_sky.mmp.in b/backends/platform/symbian/mmp/scummvm_sky.mmp.in
index 621dcd8699..d849c57704 100644
--- a/backends/platform/symbian/mmp/scummvm_sky.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_sky.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_sword1.mmp.in b/backends/platform/symbian/mmp/scummvm_sword1.mmp.in
index 0904732a1b..7321f85805 100644
--- a/backends/platform/symbian/mmp/scummvm_sword1.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_sword1.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_sword2.mmp.in b/backends/platform/symbian/mmp/scummvm_sword2.mmp.in
index 48aea59db3..0b9f6daf3f 100644
--- a/backends/platform/symbian/mmp/scummvm_sword2.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_sword2.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_sword25.mmp.in b/backends/platform/symbian/mmp/scummvm_sword25.mmp.in
index 49e37e3140..6704c13b4a 100644
--- a/backends/platform/symbian/mmp/scummvm_sword25.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_sword25.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
* Copyright (C) 2013 Strizniou Fedor
*
* ScummVM is the legal property of its developers, whose names
diff --git a/backends/platform/symbian/mmp/scummvm_teenagent.mmp.in b/backends/platform/symbian/mmp/scummvm_teenagent.mmp.in
index 85091abf2c..73a08491a7 100644
--- a/backends/platform/symbian/mmp/scummvm_teenagent.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_teenagent.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_testbed.mmp.in b/backends/platform/symbian/mmp/scummvm_testbed.mmp.in
index 3302bfe8af..160ab4c6ea 100644
--- a/backends/platform/symbian/mmp/scummvm_testbed.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_testbed.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
* Copyright (C) 2013 Strizniou Fedor
*
* ScummVM is the legal property of its developers, whose names
diff --git a/backends/platform/symbian/mmp/scummvm_tinsel.mmp.in b/backends/platform/symbian/mmp/scummvm_tinsel.mmp.in
index 21fe837a8a..f2ced4aa9f 100644
--- a/backends/platform/symbian/mmp/scummvm_tinsel.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_tinsel.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_toltecs.mmp.in b/backends/platform/symbian/mmp/scummvm_toltecs.mmp.in
index 00f2d2261d..5ca28c2736 100644
--- a/backends/platform/symbian/mmp/scummvm_toltecs.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_toltecs.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_tony.mmp.in b/backends/platform/symbian/mmp/scummvm_tony.mmp.in
index a05fba8842..64426475fa 100644
--- a/backends/platform/symbian/mmp/scummvm_tony.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_tony.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_toon.mmp.in b/backends/platform/symbian/mmp/scummvm_toon.mmp.in
index 1f268b3c00..5ca4176053 100644
--- a/backends/platform/symbian/mmp/scummvm_toon.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_toon.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_touche.mmp.in b/backends/platform/symbian/mmp/scummvm_touche.mmp.in
index 636b448168..90b18518e0 100644
--- a/backends/platform/symbian/mmp/scummvm_touche.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_touche.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_tsage.mmp.in b/backends/platform/symbian/mmp/scummvm_tsage.mmp.in
index d45a808628..a6ef4129cf 100644
--- a/backends/platform/symbian/mmp/scummvm_tsage.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_tsage.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_tucker.mmp.in b/backends/platform/symbian/mmp/scummvm_tucker.mmp.in
index 68c81aebbb..d7d6803ee7 100644
--- a/backends/platform/symbian/mmp/scummvm_tucker.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_tucker.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_voyeur.mmp.in b/backends/platform/symbian/mmp/scummvm_voyeur.mmp.in
index 9e02567651..7f8ec39e42 100644
--- a/backends/platform/symbian/mmp/scummvm_voyeur.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_voyeur.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_wintermute.mmp.in b/backends/platform/symbian/mmp/scummvm_wintermute.mmp.in
index d5eef5d3a3..c74b6b17d3 100644
--- a/backends/platform/symbian/mmp/scummvm_wintermute.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_wintermute.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/mmp/scummvm_zvision.mmp.in b/backends/platform/symbian/mmp/scummvm_zvision.mmp.in
index 1bd34dfe38..89f5fd02f9 100644
--- a/backends/platform/symbian/mmp/scummvm_zvision.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_zvision.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
* Copyright (C) 2013 Strizniou Fedor - Epoc project file
*
* ScummVM is the legal property of its developers, whose names
diff --git a/backends/platform/symbian/res/ScummVmAif.rss b/backends/platform/symbian/res/ScummVmAif.rss
index 3bb86ca796..358356194e 100644
--- a/backends/platform/symbian/res/ScummVmAif.rss
+++ b/backends/platform/symbian/res/ScummVmAif.rss
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/res/scummvm.rss b/backends/platform/symbian/res/scummvm.rss
index 67af8b77d0..051f1f4856 100644
--- a/backends/platform/symbian/res/scummvm.rss
+++ b/backends/platform/symbian/res/scummvm.rss
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/res/scummvm_A0000658.rss b/backends/platform/symbian/res/scummvm_A0000658.rss
index 2f478962de..938abe7e3b 100644
--- a/backends/platform/symbian/res/scummvm_A0000658.rss
+++ b/backends/platform/symbian/res/scummvm_A0000658.rss
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/backends/platform/symbian/src/ScummVm.hrh b/backends/platform/symbian/src/ScummVm.hrh
index 927da51e3d..cedf644879 100644
--- a/backends/platform/symbian/src/ScummVm.hrh
+++ b/backends/platform/symbian/src/ScummVm.hrh
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2016 The ScummVM Team
+ * Copyright (C) 2005-2017 The ScummVM Team
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
diff --git a/common/scummsys.h b/common/scummsys.h
index 959c67a404..1845f218bd 100644
--- a/common/scummsys.h
+++ b/common/scummsys.h
@@ -132,6 +132,7 @@
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
+ #include <stddef.h>
#include <assert.h>
#include <ctype.h>
// MSVC does not define M_PI, M_SQRT2 and other math defines by default.
diff --git a/devtools/create_titanic/create_titanic_dat.cpp b/devtools/create_titanic/create_titanic_dat.cpp
index 3822a9a955..0454f876ba 100644
--- a/devtools/create_titanic/create_titanic_dat.cpp
+++ b/devtools/create_titanic/create_titanic_dat.cpp
@@ -416,7 +416,7 @@ static const BedheadEntry OFF_RESTING_D_WRONG[1] = {
{ "Any", "Any", "Any", "ClosedWrong", 59, 70 }
};
-static const char *const STRINGS_EN[133] = {
+static const char *const STRINGS_EN[137] = {
"",
"You are standing outside the Pellerator.",
"I'm sorry, you cannot enter this pellerator at present as a bot is in the way.",
@@ -554,10 +554,14 @@ static const char *const STRINGS_EN[133] = {
"1st class",
"2nd class",
"SGT class",
- "no class"
+ "no class",
+ "Your assigned room: ",
+ "A previously assigned room: ",
+ "Saved Chevron: ",
+ "Current location: "
};
-static const char *const STRINGS_DE[178] = {
+static const char *const STRINGS_DE[182] = {
// TODO: Still many strings to translate to German
"",
"Sie befinden sich vor dem Pellerator.",
@@ -712,6 +716,10 @@ static const char *const STRINGS_DE[178] = {
"2nd class",
"SGT class",
"no class",
+ "Your assigned room: ",
+ "A previously assigned room: ",
+ "Saved Chevron: ",
+ "Current location: ",
"Sommer",
"Herbst",
@@ -1242,8 +1250,8 @@ void writeData() {
writeStringArray("TEXT/ITEM_NAMES", ITEM_NAMES, 46);
writeStringArray("TEXT/ITEM_IDS", ITEM_IDS, 40);
writeStringArray("TEXT/ROOM_NAMES", ROOM_NAMES, 34);
- writeStringArray("TEXT/STRINGS", STRINGS_EN, 133);
- writeStringArray("TEXT/STRINGS/DE", STRINGS_DE, 178);
+ writeStringArray("TEXT/STRINGS", STRINGS_EN, 137);
+ writeStringArray("TEXT/STRINGS/DE", STRINGS_DE, 182);
const int TEXT_PHRASES[3] = { 0x61D3C8, 0x618340, 0x61B1E0 };
const int TEXT_REPLACEMENTS1[3] = { 0x61D9B0, 0x61C788, 0x61B7C8 };
const int TEXT_REPLACEMENTS2[3] = { 0x61DD20, 0x61CAF8, 0x61BB38 };
diff --git a/dists/debian/copyright b/dists/debian/copyright
index 06705fd6bc..0123b2886c 100644
--- a/dists/debian/copyright
+++ b/dists/debian/copyright
@@ -7,7 +7,7 @@ It was downloaded from <http://www.scummvm.org/>.
Upstream Authors: see `/usr/share/doc/scummvm/AUTHORS'.
-ScummVM is Copyright © 2002-2016 The ScummVM Team
+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
diff --git a/dists/macosx/Info.plist b/dists/macosx/Info.plist
index aeab8eaf2d..ab0bf4db27 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-2016 The ScummVM Team</string>
+ <string>1.10.0git, Copyright 2001-2017 The ScummVM Team</string>
<key>CFBundleIconFile</key>
<string>scummvm.icns</string>
<key>CFBundleIdentifier</key>
@@ -49,7 +49,7 @@
<key>CFBundleVersion</key>
<string>1.10.0git</string>
<key>NSHumanReadableCopyright</key>
- <string>Copyright 2001-2016 The ScummVM Team</string>
+ <string>Copyright 2001-2017 The ScummVM Team</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>SUFeedURL</key>
diff --git a/dists/macosx/Info.plist.in b/dists/macosx/Info.plist.in
index c5f54fe3f0..db740769ef 100644
--- a/dists/macosx/Info.plist.in
+++ b/dists/macosx/Info.plist.in
@@ -9,7 +9,7 @@
<key>CFBundleExecutable</key>
<string>scummvm</string>
<key>CFBundleGetInfoString</key>
- <string>@VERSION@, Copyright 2001-2016 The ScummVM Team</string>
+ <string>@VERSION@, Copyright 2001-2017 The ScummVM Team</string>
<key>CFBundleIconFile</key>
<string>scummvm.icns</string>
<key>CFBundleIdentifier</key>
@@ -49,7 +49,7 @@
<key>CFBundleVersion</key>
<string>@VERSION@</string>
<key>NSHumanReadableCopyright</key>
- <string>Copyright 2001-2016 The ScummVM Team</string>
+ <string>Copyright 2001-2017 The ScummVM Team</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>SUFeedURL</key>
diff --git a/dists/macosx/dockplugin/Info.plist b/dists/macosx/dockplugin/Info.plist
index a8eab8afd8..dc2a4fda45 100644
--- a/dists/macosx/dockplugin/Info.plist
+++ b/dists/macosx/dockplugin/Info.plist
@@ -19,7 +19,7 @@
<key>CFBundleVersion</key>
<string>1.10.0git</string>
<key>NSHumanReadableCopyright</key>
- <string>Copyright 2001-2016 The ScummVM Team</string>
+ <string>Copyright 2001-2017 The ScummVM Team</string>
<key>NSPrincipalClass</key>
<string>ScummVMDockTilePlugIn</string>
</dict>
diff --git a/dists/macosx/dockplugin/Info.plist.in b/dists/macosx/dockplugin/Info.plist.in
index 851fc70f11..57699e6151 100644
--- a/dists/macosx/dockplugin/Info.plist.in
+++ b/dists/macosx/dockplugin/Info.plist.in
@@ -19,7 +19,7 @@
<key>CFBundleVersion</key>
<string>@VERSION@</string>
<key>NSHumanReadableCopyright</key>
- <string>Copyright 2001-2016 The ScummVM Team</string>
+ <string>Copyright 2001-2017 The ScummVM Team</string>
<key>NSPrincipalClass</key>
<string>ScummVMDockTilePlugIn</string>
</dict>
diff --git a/dists/scummvm.rc b/dists/scummvm.rc
index 699f5ce871..5fa760e06b 100644
--- a/dists/scummvm.rc
+++ b/dists/scummvm.rc
@@ -88,7 +88,7 @@ BEGIN
VALUE "FileDescription", "http://www.scummvm.org/\0"
VALUE "FileVersion", "1.10.0git\0"
VALUE "InternalName", "scummvm\0"
- VALUE "LegalCopyright", "Copyright © 2001-2016 The ScummVM Team\0"
+ VALUE "LegalCopyright", "Copyright © 2001-2017 The ScummVM Team\0"
VALUE "LegalTrademarks", "'SCUMM', and all SCUMM games are a TM of LucasArts. Simon The Sorcerer is a TM of AdventureSoft. Beneath a Steel Sky and Broken Sword are a TM of Revolution. Flight of the Amazon Queen is a TM of John Passfield and Steve Stamatiadis. \0"
VALUE "OriginalFilename", "scummvm.exe\0"
VALUE "ProductName", "ScummVM\0"
diff --git a/dists/scummvm.rc.in b/dists/scummvm.rc.in
index f78aa3acf5..411dbcaa7b 100644
--- a/dists/scummvm.rc.in
+++ b/dists/scummvm.rc.in
@@ -88,7 +88,7 @@ BEGIN
VALUE "FileDescription", "http://www.scummvm.org/\0"
VALUE "FileVersion", "@VERSION@\0"
VALUE "InternalName", "scummvm\0"
- VALUE "LegalCopyright", "Copyright © 2001-2016 The ScummVM Team\0"
+ VALUE "LegalCopyright", "Copyright © 2001-2017 The ScummVM Team\0"
VALUE "LegalTrademarks", "'SCUMM', and all SCUMM games are a TM of LucasArts. Simon The Sorcerer is a TM of AdventureSoft. Beneath a Steel Sky and Broken Sword are a TM of Revolution. Flight of the Amazon Queen is a TM of John Passfield and Steve Stamatiadis. \0"
VALUE "OriginalFilename", "scummvm.exe\0"
VALUE "ProductName", "ScummVM\0"
diff --git a/dists/win32/ScummVM.iss b/dists/win32/ScummVM.iss
index 6a5b7d91da..a4a63f4df4 100644
--- a/dists/win32/ScummVM.iss
+++ b/dists/win32/ScummVM.iss
@@ -1,5 +1,5 @@
[Setup]
-AppCopyright=2016
+AppCopyright=2017
AppName=ScummVM
AppVerName=ScummVM Git
AppPublisher=The ScummVM Team
diff --git a/dists/win32/migration.bat b/dists/win32/migration.bat
index 0ab38653f6..6ec7806b5f 100644
--- a/dists/win32/migration.bat
+++ b/dists/win32/migration.bat
@@ -4,7 +4,7 @@
:: This script will copy any saved games located in the
:: old default location, to the new default location.
::
-:: (c) 2012-2016 ScummVM Team
+:: (c) 2012-2017 ScummVM Team
::
@echo off
diff --git a/engines/adl/adl.cpp b/engines/adl/adl.cpp
index bc5bc74f3a..c1c3820b10 100644
--- a/engines/adl/adl.cpp
+++ b/engines/adl/adl.cpp
@@ -56,11 +56,14 @@ AdlEngine::AdlEngine(OSystem *syst, const AdlGameDescription *gd) :
_dumpFile(nullptr),
_display(nullptr),
_graphics(nullptr),
+ _speaker(nullptr),
_isRestarting(false),
_isRestoring(false),
_isQuitting(false),
_skipOneCommand(false),
_gameDescription(gd),
+ _console(nullptr),
+ _messageIds(),
_saveVerb(0),
_saveNoun(0),
_restoreVerb(0),
@@ -427,6 +430,11 @@ void AdlEngine::initState() {
initGameState();
}
+void AdlEngine::switchRoom(byte roomNr) {
+ getCurRoom().curPicture = getCurRoom().picture;
+ _state.room = roomNr;
+}
+
byte AdlEngine::roomArg(byte room) const {
return room;
}
@@ -578,6 +586,60 @@ void AdlEngine::dropItem(byte noun) {
printMessage(_messageIds.dontUnderstand);
}
+void AdlEngine::gameLoop() {
+ uint verb = 0, noun = 0;
+ _isRestarting = false;
+
+ // When restoring from the launcher, we don't read
+ // input on the first iteration. This is needed to
+ // ensure that restoring from the launcher and
+ // restoring in-game brings us to the same game state.
+ // (Also see comment below.)
+ if (!_isRestoring) {
+ showRoom();
+
+ if (_isRestarting)
+ return;
+
+ _canSaveNow = _canRestoreNow = true;
+ getInput(verb, noun);
+ _canSaveNow = _canRestoreNow = false;
+
+ if (shouldQuit())
+ return;
+
+ // If we just restored from the GMM, we skip this command
+ // set, as no command has been input by the user
+ if (!_isRestoring)
+ checkInput(verb, noun);
+ }
+
+ if (_isRestoring) {
+ // We restored from the GMM or launcher. As restoring
+ // with "RESTORE GAME" does not end command processing,
+ // we don't break it off here either. This essentially
+ // means that restoring a game will always run through
+ // the global commands and increase the move counter
+ // before the first user input.
+ _display->printAsciiString("\r");
+ _isRestoring = false;
+ verb = _restoreVerb;
+ noun = _restoreNoun;
+ }
+
+ // Restarting does end command processing
+ if (_isRestarting)
+ return;
+
+ doAllCommands(_globalCommands, verb, noun);
+
+ if (_isRestarting)
+ return;
+
+ advanceClock();
+ _state.moves++;
+}
+
Common::Error AdlEngine::run() {
initGraphics(DISPLAY_WIDTH * 2, DISPLAY_HEIGHT * 2, true);
@@ -603,59 +665,8 @@ Common::Error AdlEngine::run() {
_display->setMode(DISPLAY_MODE_MIXED);
- while (!_isQuitting) {
- uint verb = 0, noun = 0;
- _isRestarting = false;
-
- // When restoring from the launcher, we don't read
- // input on the first iteration. This is needed to
- // ensure that restoring from the launcher and
- // restoring in-game brings us to the same game state.
- // (Also see comment below.)
- if (!_isRestoring) {
- showRoom();
-
- if (_isRestarting)
- continue;
-
- _canSaveNow = _canRestoreNow = true;
- getInput(verb, noun);
- _canSaveNow = _canRestoreNow = false;
-
- if (shouldQuit())
- break;
-
- // If we just restored from the GMM, we skip this command
- // set, as no command has been input by the user
- if (!_isRestoring)
- checkInput(verb, noun);
- }
-
- if (_isRestoring) {
- // We restored from the GMM or launcher. As restoring
- // with "RESTORE GAME" does not end command processing,
- // we don't break it off here either. This essentially
- // means that restoring a game will always run through
- // the global commands and increase the move counter
- // before the first user input.
- _display->printAsciiString("\r");
- _isRestoring = false;
- verb = _restoreVerb;
- noun = _restoreNoun;
- }
-
- // Restarting does end command processing
- if (_isRestarting)
- continue;
-
- doAllCommands(_globalCommands, verb, noun);
-
- if (_isRestarting)
- continue;
-
- advanceClock();
- _state.moves++;
- }
+ while (!(_isQuitting || shouldQuit()))
+ gameLoop();
return Common::kNoError;
}
@@ -671,6 +682,49 @@ bool AdlEngine::hasFeature(EngineFeature f) const {
}
}
+void AdlEngine::loadState(Common::ReadStream &stream) {
+ _state.room = stream.readByte();
+ _state.moves = stream.readByte();
+ _state.isDark = stream.readByte();
+ _state.time.hours = stream.readByte();
+ _state.time.minutes = stream.readByte();
+
+ uint32 size = stream.readUint32BE();
+ if (size != _state.rooms.size())
+ error("Room count mismatch (expected %i; found %i)", _state.rooms.size(), size);
+
+ for (uint i = 0; i < size; ++i) {
+ _state.rooms[i].picture = stream.readByte();
+ _state.rooms[i].curPicture = stream.readByte();
+ _state.rooms[i].isFirstTime = stream.readByte();
+ }
+
+ // NOTE: _state.curPicture is part of the save state in the original engine. We
+ // reconstruct it instead. This is believed to be safe for at least hires 0-2, but
+ // this may need to be re-evaluated for later games.
+ _state.curPicture = getCurRoom().curPicture;
+
+ size = stream.readUint32BE();
+ if (size != _state.items.size())
+ error("Item count mismatch (expected %i; found %i)", _state.items.size(), size);
+
+ Common::List<Item>::iterator item;
+ for (item = _state.items.begin(); item != _state.items.end(); ++item) {
+ item->room = stream.readByte();
+ item->picture = stream.readByte();
+ item->position.x = stream.readByte();
+ item->position.y = stream.readByte();
+ item->state = stream.readByte();
+ }
+
+ size = stream.readUint32BE();
+ if (size != _state.vars.size())
+ error("Variable count mismatch (expected %i; found %i)", _state.vars.size(), size);
+
+ for (uint i = 0; i < size; ++i)
+ _state.vars[i] = stream.readByte();
+}
+
Common::Error AdlEngine::loadGameState(int slot) {
Common::String fileName = Common::String::format("%s.s%02d", _targetName.c_str(), slot);
Common::InSaveFile *inFile = getSaveFileManager()->openForLoading(fileName);
@@ -703,47 +757,7 @@ Common::Error AdlEngine::loadGameState(int slot) {
Graphics::skipThumbnail(*inFile);
initState();
-
- _state.room = inFile->readByte();
- _state.moves = inFile->readByte();
- _state.isDark = inFile->readByte();
- _state.time.hours = inFile->readByte();
- _state.time.minutes = inFile->readByte();
-
- uint32 size = inFile->readUint32BE();
- if (size != _state.rooms.size())
- error("Room count mismatch (expected %i; found %i)", _state.rooms.size(), size);
-
- for (uint i = 0; i < size; ++i) {
- _state.rooms[i].picture = inFile->readByte();
- _state.rooms[i].curPicture = inFile->readByte();
- _state.rooms[i].isFirstTime = inFile->readByte();
- }
-
- // NOTE: _state.curPicture is part of the save state in the original engine. We
- // reconstruct it instead. This is believed to be safe for at least hires 0-2, but
- // this may need to be re-evaluated for later games.
- _state.curPicture = getCurRoom().curPicture;
-
- size = inFile->readUint32BE();
- if (size != _state.items.size())
- error("Item count mismatch (expected %i; found %i)", _state.items.size(), size);
-
- Common::List<Item>::iterator item;
- for (item = _state.items.begin(); item != _state.items.end(); ++item) {
- item->room = inFile->readByte();
- item->picture = inFile->readByte();
- item->position.x = inFile->readByte();
- item->position.y = inFile->readByte();
- item->state = inFile->readByte();
- }
-
- size = inFile->readUint32BE();
- if (size != _state.vars.size())
- error("Variable count mismatch (expected %i; found %i)", _state.vars.size(), size);
-
- for (uint i = 0; i < size; ++i)
- _state.vars[i] = inFile->readByte();
+ loadState(*inFile);
if (inFile->err() || inFile->eos())
error("Failed to load game '%s'", fileName.c_str());
@@ -760,6 +774,35 @@ bool AdlEngine::canLoadGameStateCurrently() {
return _canRestoreNow;
}
+void AdlEngine::saveState(Common::WriteStream &stream) {
+ stream.writeByte(_state.room);
+ stream.writeByte(_state.moves);
+ stream.writeByte(_state.isDark);
+ stream.writeByte(_state.time.hours);
+ stream.writeByte(_state.time.minutes);
+
+ stream.writeUint32BE(_state.rooms.size());
+ for (uint i = 0; i < _state.rooms.size(); ++i) {
+ stream.writeByte(_state.rooms[i].picture);
+ stream.writeByte(_state.rooms[i].curPicture);
+ stream.writeByte(_state.rooms[i].isFirstTime);
+ }
+
+ stream.writeUint32BE(_state.items.size());
+ Common::List<Item>::const_iterator item;
+ for (item = _state.items.begin(); item != _state.items.end(); ++item) {
+ stream.writeByte(item->room);
+ stream.writeByte(item->picture);
+ stream.writeByte(item->position.x);
+ stream.writeByte(item->position.y);
+ stream.writeByte(item->state);
+ }
+
+ stream.writeUint32BE(_state.vars.size());
+ for (uint i = 0; i < _state.vars.size(); ++i)
+ stream.writeByte(_state.vars[i]);
+}
+
Common::Error AdlEngine::saveGameState(int slot, const Common::String &desc) {
Common::String fileName = Common::String::format("%s.s%02d", _targetName.c_str(), slot);
Common::OutSaveFile *outFile = getSaveFileManager()->openForSaving(fileName);
@@ -797,34 +840,7 @@ Common::Error AdlEngine::saveGameState(int slot, const Common::String &desc) {
outFile->writeUint32BE(playTime);
_display->saveThumbnail(*outFile);
-
- outFile->writeByte(_state.room);
- outFile->writeByte(_state.moves);
- outFile->writeByte(_state.isDark);
- outFile->writeByte(_state.time.hours);
- outFile->writeByte(_state.time.minutes);
-
- outFile->writeUint32BE(_state.rooms.size());
- for (uint i = 0; i < _state.rooms.size(); ++i) {
- outFile->writeByte(_state.rooms[i].picture);
- outFile->writeByte(_state.rooms[i].curPicture);
- outFile->writeByte(_state.rooms[i].isFirstTime);
- }
-
- outFile->writeUint32BE(_state.items.size());
- Common::List<Item>::const_iterator item;
- for (item = _state.items.begin(); item != _state.items.end(); ++item) {
- outFile->writeByte(item->room);
- outFile->writeByte(item->picture);
- outFile->writeByte(item->position.x);
- outFile->writeByte(item->position.y);
- outFile->writeByte(item->state);
- }
-
- outFile->writeUint32BE(_state.vars.size());
- for (uint i = 0; i < _state.vars.size(); ++i)
- outFile->writeByte(_state.vars[i]);
-
+ saveState(*outFile);
outFile->finalize();
if (outFile->err()) {
@@ -1073,8 +1089,7 @@ int AdlEngine::o1_moveItem(ScriptEnv &e) {
int AdlEngine::o1_setRoom(ScriptEnv &e) {
OP_DEBUG_1("\tROOM = %d", e.arg(1));
- getCurRoom().curPicture = getCurRoom().picture;
- _state.room = e.arg(1);
+ switchRoom(e.arg(1));
return 1;
}
@@ -1228,8 +1243,8 @@ bool AdlEngine::matchCommand(ScriptEnv &env) const {
return false;
if (DebugMan.isDebugChannelEnabled(kDebugChannelScript)) {
- op_debug("IF\n\tROOM == %s", roomStr(env.getCommand().room).c_str());
- op_debug("\t&& SAID(%s, %s)", verbStr(env.getCommand().verb).c_str(), nounStr(env.getCommand().noun).c_str());
+ (void)op_debug("IF\n\tROOM == %s", roomStr(env.getCommand().room).c_str());
+ (void)op_debug("\t&& SAID(%s, %s)", verbStr(env.getCommand().verb).c_str(), nounStr(env.getCommand().noun).c_str());
}
for (uint i = 0; i < env.getCondCount(); ++i) {
@@ -1242,7 +1257,7 @@ bool AdlEngine::matchCommand(ScriptEnv &env) const {
if (numArgs < 0) {
if (DebugMan.isDebugChannelEnabled(kDebugChannelScript))
- op_debug("FAIL\n");
+ (void)op_debug("FAIL\n");
return false;
}
@@ -1254,7 +1269,7 @@ bool AdlEngine::matchCommand(ScriptEnv &env) const {
void AdlEngine::doActions(ScriptEnv &env) {
if (DebugMan.isDebugChannelEnabled(kDebugChannelScript))
- op_debug("THEN");
+ (void)op_debug("THEN");
for (uint i = 0; i < env.getActCount(); ++i) {
byte op = env.op();
@@ -1266,7 +1281,7 @@ void AdlEngine::doActions(ScriptEnv &env) {
if (numArgs < 0) {
if (DebugMan.isDebugChannelEnabled(kDebugChannelScript))
- op_debug("ABORT\n");
+ (void)op_debug("ABORT\n");
return;
}
@@ -1274,7 +1289,7 @@ void AdlEngine::doActions(ScriptEnv &env) {
}
if (DebugMan.isDebugChannelEnabled(kDebugChannelScript))
- op_debug("END\n");
+ (void)op_debug("END\n");
}
bool AdlEngine::doOneCommand(const Commands &commands, byte verb, byte noun) {
diff --git a/engines/adl/adl.h b/engines/adl/adl.h
index 87e99a5537..62c5ea1b8e 100644
--- a/engines/adl/adl.h
+++ b/engines/adl/adl.h
@@ -42,6 +42,7 @@
namespace Common {
class ReadStream;
+class WriteStream;
class SeekableReadStream;
class File;
struct Event;
@@ -84,7 +85,8 @@ struct Room {
Room() :
description(0),
picture(0),
- curPicture(0) {
+ curPicture(0),
+ isFirstTime(true) {
memset(connections, 0, sizeof(connections));
}
@@ -152,6 +154,8 @@ struct Item {
byte description;
Common::Array<byte> roomPictures;
bool isOnScreen;
+
+ Item() : id(0), noun(0), region(0), room(0), picture(0), isLineArt(false), state(0), description(0), isOnScreen(false) { }
};
struct Time {
@@ -235,6 +239,9 @@ protected:
Common::Error loadGameState(int slot);
Common::Error saveGameState(int slot, const Common::String &desc);
+ virtual void gameLoop();
+ virtual void loadState(Common::ReadStream &stream);
+ virtual void saveState(Common::WriteStream &stream);
Common::String readString(Common::ReadStream &stream, byte until = 0) const;
Common::String readStringAt(Common::SeekableReadStream &stream, uint offset, byte until = 0) const;
void openFile(Common::File &file, const Common::String &name) const;
@@ -247,6 +254,7 @@ protected:
Common::String inputString(byte prompt = 0) const;
byte inputKey(bool showCursor = true) const;
+ void getInput(uint &verb, uint &noun);
virtual Common::String formatVerbError(const Common::String &verb) const;
virtual Common::String formatNounError(const Common::String &verb, const Common::String &noun) const;
@@ -262,6 +270,7 @@ protected:
virtual void setupOpcodeTables();
virtual void initState();
+ virtual void switchRoom(byte roomNr);
virtual byte roomArg(byte room) const;
virtual void advanceClock() { }
void loadDroppedItemOffsets(Common::ReadStream &stream, byte count);
@@ -381,6 +390,7 @@ protected:
State _state;
bool _isRestarting, _isRestoring, _isQuitting;
+ bool _canSaveNow, _canRestoreNow;
bool _skipOneCommand;
const AdlGameDescription *_gameDescription;
@@ -393,6 +403,7 @@ private:
virtual void drawItem(Item &item, const Common::Point &pos) = 0;
virtual void loadRoom(byte roomNr) = 0;
virtual void showRoom() = 0;
+ virtual void switchRegion(byte region) { }
// Engine
Common::Error run();
@@ -404,12 +415,10 @@ private:
byte convertKey(uint16 ascii) const;
Common::String getLine() const;
Common::String getWord(const Common::String &line, uint &index) const;
- void getInput(uint &verb, uint &noun);
Console *_console;
GUI::Debugger *getDebugger() { return _console; }
byte _saveVerb, _saveNoun, _restoreVerb, _restoreNoun;
- bool _canSaveNow, _canRestoreNow;
};
} // End of namespace Adl
diff --git a/engines/adl/adl_v2.cpp b/engines/adl/adl_v2.cpp
index 8670bd08df..c3e82117d8 100644
--- a/engines/adl/adl_v2.cpp
+++ b/engines/adl/adl_v2.cpp
@@ -367,7 +367,8 @@ DataBlockPtr AdlEngine_v2::readDataBlockPtr(Common::ReadStream &f) const {
void AdlEngine_v2::loadItems(Common::ReadStream &stream) {
byte id;
while ((id = stream.readByte()) != 0xff && !stream.eos() && !stream.err()) {
- Item item = Item();
+ Item item;
+
item.id = id;
item.noun = stream.readByte();
item.room = stream.readByte();
diff --git a/engines/adl/adl_v2.h b/engines/adl/adl_v2.h
index fe0c781f44..f0af9eba22 100644
--- a/engines/adl/adl_v2.h
+++ b/engines/adl/adl_v2.h
@@ -59,6 +59,7 @@ protected:
void loadPictures(Common::ReadStream &stream);
void loadItemPictures(Common::ReadStream &stream, byte count);
virtual bool isInventoryFull() { return false; }
+ int askForSlot(const Common::String &question);
void checkTextOverflow(char c);
@@ -91,8 +92,6 @@ protected:
byte _roomOnScreen, _picOnScreen, _itemsOnScreen;
private:
- int askForSlot(const Common::String &question);
-
Common::RandomSource *_random;
};
diff --git a/engines/adl/adl_v4.cpp b/engines/adl/adl_v4.cpp
index 456ee10dca..dcf0f997c9 100644
--- a/engines/adl/adl_v4.cpp
+++ b/engines/adl/adl_v4.cpp
@@ -21,6 +21,7 @@
*/
#include "adl/adl_v4.h"
+#include "adl/display.h"
#include "adl/detection.h"
namespace Adl {
@@ -36,6 +37,143 @@ AdlEngine_v4::~AdlEngine_v4() {
delete _itemPicIndex;
}
+void AdlEngine_v4::gameLoop() {
+ uint verb = 0, noun = 0;
+ _isRestarting = false;
+
+ if (_isRestoring) {
+ // Game restored from launcher. As this version of ADL long jumps to
+ // the game loop after restoring, no special action is required.
+ _isRestoring = false;
+ }
+
+ showRoom();
+
+ if (_isRestarting || shouldQuit())
+ return;
+
+ _canSaveNow = _canRestoreNow = true;
+ getInput(verb, noun);
+ _canSaveNow = _canRestoreNow = false;
+
+ if (_isRestoring) {
+ // Game restored from GMM. Move cursor to next line and jump to
+ // start of game loop.
+ _display->printAsciiString("\r");
+ _isRestoring = false;
+ return;
+ }
+
+ if (_isRestarting || shouldQuit())
+ return;
+
+ _linesPrinted = 0;
+
+ checkInput(verb, noun);
+
+ if (_isRestarting || shouldQuit())
+ return;
+
+ doAllCommands(_globalCommands, verb, noun);
+
+ if (_isRestarting || shouldQuit())
+ return;
+
+ _state.moves++;
+}
+
+void AdlEngine_v4::loadState(Common::ReadStream &stream) {
+ _state.room = stream.readByte();
+ _state.region = stream.readByte();
+ _state.prevRegion = stream.readByte();
+
+ uint32 size = stream.readUint32BE();
+ if (size != _state.regions.size())
+ error("Region count mismatch (expected %i; found %i)", _state.regions.size(), size);
+
+ Common::Array<Region>::iterator region;
+ for (region = _state.regions.begin(); region != _state.regions.end(); ++region) {
+ size = stream.readUint32BE();
+ if (size != region->rooms.size())
+ error("Room count mismatch (expected %i; found %i)", region->rooms.size(), size);
+
+ Common::Array<RoomState>::iterator room;
+ for (room = region->rooms.begin(); room != region->rooms.end(); ++room) {
+ room->picture = stream.readByte();
+ room->isFirstTime = stream.readByte();
+ }
+
+ size = stream.readUint32BE();
+ if (size != region->vars.size())
+ error("Variable count mismatch (expected %i; found %i)", region->vars.size(), size);
+
+ for (uint i = 0; i < region->vars.size(); ++i)
+ region->vars[i] = stream.readByte();
+ }
+
+ size = stream.readUint32BE();
+ if (size != _state.items.size())
+ error("Item count mismatch (expected %i; found %i)", _state.items.size(), size);
+
+ Common::List<Item>::iterator item;
+ for (item = _state.items.begin(); item != _state.items.end(); ++item) {
+ item->room = stream.readByte();
+ item->region = stream.readByte();
+ item->state = stream.readByte();
+ }
+
+ size = stream.readUint32BE();
+ const uint expectedSize = _state.vars.size() - getRegion(1).vars.size();
+ if (size != expectedSize)
+ error("Variable count mismatch (expected %i; found %i)", expectedSize, size);
+
+ for (uint i = getRegion(1).vars.size(); i < size; ++i)
+ _state.vars[i] = stream.readByte();
+
+ if (stream.err() || stream.eos())
+ return;
+
+ loadRegion(_state.region);
+ restoreRoomState(_state.room);
+ _roomOnScreen = _picOnScreen = 0;
+}
+
+void AdlEngine_v4::saveState(Common::WriteStream &stream) {
+ backupVars();
+ backupRoomState(_state.room);
+
+ stream.writeByte(_state.room);
+ stream.writeByte(_state.region);
+ stream.writeByte(_state.prevRegion);
+
+ stream.writeUint32BE(_state.regions.size());
+ Common::Array<Region>::const_iterator region;
+ for (region = _state.regions.begin(); region != _state.regions.end(); ++region) {
+ stream.writeUint32BE(region->rooms.size());
+ Common::Array<RoomState>::const_iterator room;
+ for (room = region->rooms.begin(); room != region->rooms.end(); ++room) {
+ stream.writeByte(room->picture);
+ stream.writeByte(room->isFirstTime);
+ }
+
+ stream.writeUint32BE(region->vars.size());
+ for (uint i = 0; i < region->vars.size(); ++i)
+ stream.writeByte(region->vars[i]);
+ }
+
+ stream.writeUint32BE(_state.items.size());
+ Common::List<Item>::const_iterator item;
+ for (item = _state.items.begin(); item != _state.items.end(); ++item) {
+ stream.writeByte(item->room);
+ stream.writeByte(item->region);
+ stream.writeByte(item->state);
+ }
+
+ stream.writeUint32BE(_state.vars.size() - getRegion(1).vars.size());
+ for (uint i = getRegion(1).vars.size(); i < _state.vars.size(); ++i)
+ stream.writeByte(_state.vars[i]);
+}
+
Common::String AdlEngine_v4::loadMessage(uint idx) const {
Common::String str = AdlEngine_v3::loadMessage(idx);
@@ -268,6 +406,14 @@ void AdlEngine_v4::switchRegion(byte region) {
_picOnScreen = _roomOnScreen = 0;
}
+void AdlEngine_v4::switchRoom(byte roomNr) {
+ getCurRoom().curPicture = getCurRoom().picture;
+ getCurRoom().isFirstTime = false;
+ backupRoomState(_state.room);
+ _state.room = roomNr;
+ restoreRoomState(_state.room);
+}
+
int AdlEngine_v4::o4_isItemInRoom(ScriptEnv &e) {
OP_DEBUG_2("\t&& GET_ITEM_ROOM(%s) == %s", itemStr(e.arg(1)).c_str(), itemRoomStr(e.arg(2)).c_str());
@@ -297,17 +443,6 @@ int AdlEngine_v4::o4_moveItem(ScriptEnv &e) {
return 2;
}
-int AdlEngine_v4::o4_setRoom(ScriptEnv &e) {
- OP_DEBUG_1("\tROOM = %d", e.arg(1));
-
- getCurRoom().curPicture = getCurRoom().picture;
- getCurRoom().isFirstTime = false;
- backupRoomState(_state.room);
- _state.room = e.arg(1);
- restoreRoomState(_state.room);
- return 1;
-}
-
int AdlEngine_v4::o4_setRegionToPrev(ScriptEnv &e) {
OP_DEBUG_0("\tREGION = PREV_REGION");
@@ -363,6 +498,68 @@ int AdlEngine_v4::o4_setRegion(ScriptEnv &e) {
return -1;
}
+int AdlEngine_v4::o4_save(ScriptEnv &e) {
+ OP_DEBUG_0("\tSAVE_GAME()");
+
+ _display->printString(_strings_v2.saveReplace);
+ const char key = inputKey();
+
+ if (shouldQuit())
+ return -1;
+
+ if (key != APPLECHAR('Y'))
+ return 0;
+
+ const int slot = askForSlot(_strings_v2.saveInsert);
+
+ if (slot < 0)
+ return -1;
+
+ saveGameState(slot, "");
+ return 0;
+}
+
+int AdlEngine_v4::o4_restore(ScriptEnv &e) {
+ OP_DEBUG_0("\tRESTORE_GAME()");
+
+ const int slot = askForSlot(_strings_v2.restoreInsert);
+
+ if (slot < 0)
+ return -1;
+
+ loadGameState(slot);
+ _isRestoring = false;
+
+ _picOnScreen = 0;
+ _roomOnScreen = 0;
+
+ // Long jump
+ _isRestarting = true;
+ return -1;
+}
+
+int AdlEngine_v4::o4_restart(ScriptEnv &e) {
+ OP_DEBUG_0("\tRESTART_GAME()");
+
+ while (true) {
+ _display->printString(_strings.playAgain);
+ const Common::String input(inputString());
+
+ if (shouldQuit())
+ return -1;
+
+ if (input.firstChar() == APPLECHAR('N')) {
+ return o1_quit(e);
+ } else if (input.firstChar() == APPLECHAR('Y')) {
+ // The original game loads a special save game from volume 3
+ initState();
+ // Long jump
+ _isRestarting = true;
+ return -1;
+ }
+ }
+}
+
int AdlEngine_v4::o4_setRegionRoom(ScriptEnv &e) {
OP_DEBUG_2("\tSET_REGION_ROOM(%d, %d)", e.arg(1), e.arg(2));
diff --git a/engines/adl/adl_v4.h b/engines/adl/adl_v4.h
index 1bc7664d58..4e87530673 100644
--- a/engines/adl/adl_v4.h
+++ b/engines/adl/adl_v4.h
@@ -49,8 +49,13 @@ protected:
AdlEngine_v4(OSystem *syst, const AdlGameDescription *gd);
// AdlEngine
+ virtual void gameLoop();
+ virtual void loadState(Common::ReadStream &stream);
+ virtual void saveState(Common::WriteStream &stream);
virtual Common::String loadMessage(uint idx) const;
virtual Common::String getItemDescription(const Item &item) const;
+ virtual void switchRegion(byte region);
+ virtual void switchRoom(byte roomNr);
// AdlEngine_v2
virtual void adjustDataBlockPtr(byte &track, byte &sector, byte &offset, byte &size) const;
@@ -67,15 +72,16 @@ protected:
void restoreRoomState(byte room);
void backupVars();
void restoreVars();
- void switchRegion(byte region);
int o4_isItemInRoom(ScriptEnv &e);
int o4_isVarGT(ScriptEnv &e);
int o4_moveItem(ScriptEnv &e);
- int o4_setRoom(ScriptEnv &e);
int o4_setRegionToPrev(ScriptEnv &e);
int o4_moveAllItems(ScriptEnv &e);
int o4_setRegion(ScriptEnv &e);
+ int o4_save(ScriptEnv &e);
+ int o4_restore(ScriptEnv &e);
+ int o4_restart(ScriptEnv &e);
int o4_setRegionRoom(ScriptEnv &e);
int o4_setRoomPic(ScriptEnv &e);
diff --git a/engines/adl/console.cpp b/engines/adl/console.cpp
index c35e8b02aa..7305ec8125 100644
--- a/engines/adl/console.cpp
+++ b/engines/adl/console.cpp
@@ -35,6 +35,7 @@ Console::Console(AdlEngine *engine) : GUI::Debugger() {
registerCmd("verbs", WRAP_METHOD(Console, Cmd_Verbs));
registerCmd("dump_scripts", WRAP_METHOD(Console, Cmd_DumpScripts));
registerCmd("valid_cmds", WRAP_METHOD(Console, Cmd_ValidCommands));
+ registerCmd("region", WRAP_METHOD(Console, Cmd_Region));
registerCmd("room", WRAP_METHOD(Console, Cmd_Room));
registerCmd("items", WRAP_METHOD(Console, Cmd_Items));
registerCmd("give_item", WRAP_METHOD(Console, Cmd_GiveItem));
@@ -112,35 +113,55 @@ bool Console::Cmd_ValidCommands(int argc, const char **argv) {
return true;
}
-bool Console::Cmd_DumpScripts(int argc, const char **argv) {
- if (argc != 1) {
- debugPrintf("Usage: %s\n", argv[0]);
- return true;
- }
-
- bool oldFlag = DebugMan.isDebugChannelEnabled(kDebugChannelScript);
-
- DebugMan.enableDebugChannel("Script");
-
- _engine->_dumpFile = new Common::DumpFile();
-
+void Console::dumpScripts(const Common::String &prefix) {
for (byte roomNr = 1; roomNr <= _engine->_state.rooms.size(); ++roomNr) {
_engine->loadRoom(roomNr);
if (_engine->_roomData.commands.size() != 0) {
- _engine->_dumpFile->open(Common::String::format("%03d.ADL", roomNr).c_str());
+ _engine->_dumpFile->open(prefix + Common::String::format("%03d.ADL", roomNr).c_str());
_engine->doAllCommands(_engine->_roomData.commands, IDI_ANY, IDI_ANY);
_engine->_dumpFile->close();
}
}
_engine->loadRoom(_engine->_state.room);
- _engine->_dumpFile->open("GLOBAL.ADL");
+ _engine->_dumpFile->open(prefix + "GLOBAL.ADL");
_engine->doAllCommands(_engine->_globalCommands, IDI_ANY, IDI_ANY);
_engine->_dumpFile->close();
- _engine->_dumpFile->open("RESPONSE.ADL");
+ _engine->_dumpFile->open(prefix + "RESPONSE.ADL");
_engine->doAllCommands(_engine->_roomCommands, IDI_ANY, IDI_ANY);
_engine->_dumpFile->close();
+}
+
+bool Console::Cmd_DumpScripts(int argc, const char **argv) {
+ if (argc != 1) {
+ debugPrintf("Usage: %s\n", argv[0]);
+ return true;
+ }
+
+ bool oldFlag = DebugMan.isDebugChannelEnabled(kDebugChannelScript);
+
+ DebugMan.enableDebugChannel("Script");
+
+ _engine->_dumpFile = new Common::DumpFile();
+
+ if (_engine->_state.regions.empty()) {
+ dumpScripts();
+ } else {
+ const byte oldRegion = _engine->_state.region;
+ const byte oldPrevRegion = _engine->_state.prevRegion;
+ const byte oldRoom = _engine->_state.room;
+
+ for (byte regionNr = 1; regionNr <= _engine->_state.regions.size(); ++regionNr) {
+ _engine->switchRegion(regionNr);
+ dumpScripts(Common::String::format("%03d-", regionNr));
+ }
+
+ _engine->switchRegion(oldRegion);
+ _engine->_state.prevRegion = oldPrevRegion;
+ _engine->_state.room = oldRoom;
+ _engine->loadRoom(oldRoom);
+ }
delete _engine->_dumpFile;
_engine->_dumpFile = nullptr;
@@ -151,6 +172,42 @@ bool Console::Cmd_DumpScripts(int argc, const char **argv) {
return true;
}
+void Console::prepareGame() {
+ _engine->clearScreen();
+ _engine->loadRoom(_engine->_state.room);
+ _engine->showRoom();
+ _engine->_display->updateTextScreen();
+ _engine->_display->updateHiResScreen();
+}
+
+bool Console::Cmd_Region(int argc, const char **argv) {
+ if (argc > 2) {
+ debugPrintf("Usage: %s [<new_region>]\n", argv[0]);
+ return true;
+ }
+
+ if (argc == 2) {
+ if (!_engine->_canRestoreNow) {
+ debugPrintf("Cannot change regions right now\n");
+ return true;
+ }
+
+ uint regionCount = _engine->_state.regions.size();
+ uint region = strtoul(argv[1], NULL, 0);
+ if (region < 1 || region > regionCount) {
+ debugPrintf("Region %u out of valid range [1, %u]\n", region, regionCount);
+ return true;
+ }
+
+ _engine->switchRegion(region);
+ prepareGame();
+ }
+
+ debugPrintf("Current region: %u\n", _engine->_state.region);
+
+ return true;
+}
+
bool Console::Cmd_Room(int argc, const char **argv) {
if (argc > 2) {
debugPrintf("Usage: %s [<new_room>]\n", argv[0]);
@@ -170,12 +227,8 @@ bool Console::Cmd_Room(int argc, const char **argv) {
return true;
}
- _engine->_state.room = room;
- _engine->clearScreen();
- _engine->loadRoom(_engine->_state.room);
- _engine->showRoom();
- _engine->_display->updateTextScreen();
- _engine->_display->updateHiResScreen();
+ _engine->switchRoom(room);
+ prepareGame();
}
debugPrintf("Current room: %u\n", _engine->_state.room);
diff --git a/engines/adl/console.h b/engines/adl/console.h
index a8c6adc1cc..68787e148a 100644
--- a/engines/adl/console.h
+++ b/engines/adl/console.h
@@ -48,6 +48,7 @@ private:
bool Cmd_Verbs(int argc, const char **argv);
bool Cmd_DumpScripts(int argc, const char **argv);
bool Cmd_ValidCommands(int argc, const char **argv);
+ bool Cmd_Region(int argc, const char **argv);
bool Cmd_Room(int argc, const char **argv);
bool Cmd_Items(int argc, const char **argv);
bool Cmd_GiveItem(int argc, const char **argv);
@@ -56,6 +57,8 @@ private:
void printItem(const Item &item);
void printWordMap(const Common::HashMap<Common::String, uint> &wordMap);
+ void dumpScripts(const Common::String &prefix = Common::String());
+ void prepareGame();
AdlEngine *_engine;
};
diff --git a/engines/adl/display.cpp b/engines/adl/display.cpp
index 2cf50f72fc..feef8fb2a4 100644
--- a/engines/adl/display.cpp
+++ b/engines/adl/display.cpp
@@ -130,7 +130,7 @@ Display::Display() :
_frameBufSurface->create(DISPLAY_WIDTH * 2, DISPLAY_HEIGHT * 2, Graphics::PixelFormat::createFormatCLUT8());
_textBuf = new byte[TEXT_BUF_SIZE];
- memset(_textBuf, APPLECHAR(' '), TEXT_BUF_SIZE);
+ memset(_textBuf, (byte)APPLECHAR(' '), TEXT_BUF_SIZE);
_textBufSurface = new Graphics::Surface;
// For ease of copying, also use 2x scaling here
_textBufSurface->create(DISPLAY_WIDTH * 2, DISPLAY_HEIGHT * 2, Graphics::PixelFormat::createFormatCLUT8());
@@ -267,7 +267,7 @@ void Display::clear(byte color) {
}
void Display::home() {
- memset(_textBuf, APPLECHAR(' '), TEXT_BUF_SIZE);
+ memset(_textBuf, (byte)APPLECHAR(' '), TEXT_BUF_SIZE);
_cursorPos = 0;
}
@@ -546,7 +546,7 @@ void Display::createFont() {
void Display::scrollUp() {
memmove(_textBuf, _textBuf + TEXT_WIDTH, TEXT_BUF_SIZE - TEXT_WIDTH);
- memset(_textBuf + TEXT_BUF_SIZE - TEXT_WIDTH, APPLECHAR(' '), TEXT_WIDTH);
+ memset(_textBuf + TEXT_BUF_SIZE - TEXT_WIDTH, (byte)APPLECHAR(' '), TEXT_WIDTH);
if (_cursorPos >= TEXT_WIDTH)
_cursorPos -= TEXT_WIDTH;
}
diff --git a/engines/adl/hires1.cpp b/engines/adl/hires1.cpp
index 8bd49c75b4..e811b747c3 100644
--- a/engines/adl/hires1.cpp
+++ b/engines/adl/hires1.cpp
@@ -318,7 +318,8 @@ void HiRes1Engine::initGameState() {
stream->seek(IDI_HR1_OFS_ITEMS);
byte id;
while ((id = stream->readByte()) != 0xff) {
- Item item = Item();
+ Item item;
+
item.id = id;
item.noun = stream->readByte();
item.room = stream->readByte();
diff --git a/engines/adl/hires5.cpp b/engines/adl/hires5.cpp
index a3ed6d890e..c1ada9e7d3 100644
--- a/engines/adl/hires5.cpp
+++ b/engines/adl/hires5.cpp
@@ -100,7 +100,7 @@ void HiRes5Engine::setupOpcodeTables() {
// 0x04
Opcode(o1_listInv);
Opcode(o4_moveItem);
- Opcode(o4_setRoom);
+ Opcode(o1_setRoom);
Opcode(o2_setCurPic);
// 0x08
Opcode(o2_setPic);
@@ -111,10 +111,10 @@ void HiRes5Engine::setupOpcodeTables() {
Opcode(o4_moveAllItems);
Opcode(o1_quit);
Opcode(o4_setRegion);
- Opcode(o2_save); // TODO
+ Opcode(o4_save);
// 0x10
- Opcode(o2_restore); // TODO
- Opcode(o1_restart); // TODO
+ Opcode(o4_restore);
+ Opcode(o4_restart);
Opcode(o4_setRegionRoom);
Opcode(o_startAnimation);
// 0x14
@@ -244,7 +244,11 @@ void HiRes5Engine::init() {
stream.reset(_disk->createReadStream(0x7, 0xc));
_strings.lineFeeds = readString(*stream);
- // TODO: opcode strings
+ stream.reset(_disk->createReadStream(0x8, 0x3, 0x00, 2));
+ _strings_v2.saveInsert = readStringAt(*stream, 0x66);
+ _strings_v2.saveReplace = readStringAt(*stream, 0x112);
+ _strings_v2.restoreInsert = readStringAt(*stream, 0x180);
+ _strings.playAgain = readStringAt(*stream, 0x247, 0xff);
_messageIds.cantGoThere = 110;
_messageIds.dontUnderstand = 112;
diff --git a/engines/fullpipe/detection.cpp b/engines/fullpipe/detection.cpp
index 8f4de11e79..e22bcd3d50 100644
--- a/engines/fullpipe/detection.cpp
+++ b/engines/fullpipe/detection.cpp
@@ -25,6 +25,8 @@
#include "engines/advancedDetector.h"
#include "common/file.h"
+#include "graphics/surface.h"
+
#include "fullpipe/fullpipe.h"
#include "fullpipe/gameloader.h"
diff --git a/engines/fullpipe/fullpipe.cpp b/engines/fullpipe/fullpipe.cpp
index 10c1744dd9..9c474d111b 100644
--- a/engines/fullpipe/fullpipe.cpp
+++ b/engines/fullpipe/fullpipe.cpp
@@ -28,6 +28,7 @@
#include "audio/mixer.h"
#include "engines/util.h"
+#include "graphics/surface.h"
#include "fullpipe/fullpipe.h"
#include "fullpipe/gameloader.h"
@@ -285,7 +286,8 @@ Common::Error FullpipeEngine::run() {
// Initialize backend
initGraphics(800, 600, true, &format);
- _backgroundSurface.create(800, 600, format);
+ _backgroundSurface = new Graphics::Surface;
+ _backgroundSurface->create(800, 600, format);
_origFormat = new Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0);
@@ -502,7 +504,9 @@ void FullpipeEngine::cleanup() {
stopAllSoundStreams();
delete _origFormat;
- _backgroundSurface.free();
+ _backgroundSurface->free();
+
+ delete _backgroundSurface;
}
void FullpipeEngine::updateScreen() {
diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h
index b00da629fe..3733bed65d 100644
--- a/engines/fullpipe/fullpipe.h
+++ b/engines/fullpipe/fullpipe.h
@@ -30,8 +30,6 @@
#include "common/savefile.h"
#include "common/system.h"
-#include "graphics/transparent_surface.h"
-
#include "engines/engine.h"
#include "gui/debugger.h"
@@ -123,7 +121,7 @@ public:
void updateEvents();
- Graphics::Surface _backgroundSurface;
+ Graphics::Surface *_backgroundSurface;
Graphics::PixelFormat *_origFormat;
GameLoader *_gameLoader;
diff --git a/engines/fullpipe/gfx.cpp b/engines/fullpipe/gfx.cpp
index 4dec4b640c..619f41d6da 100644
--- a/engines/fullpipe/gfx.cpp
+++ b/engines/fullpipe/gfx.cpp
@@ -30,6 +30,7 @@
#include "fullpipe/gameloader.h"
#include "common/memstream.h"
+#include "graphics/transparent_surface.h"
namespace Fullpipe {
@@ -478,7 +479,7 @@ void Picture::freePicture() {
if (_bitmap) {
if (testFlags() && !_field_54) {
freeData();
- //free(_bitmap);
+ free(_bitmap);
_bitmap = 0;
}
}
@@ -677,8 +678,8 @@ void Picture::displayPicture() {
if (!_dataSize)
return;
- g_fp->_backgroundSurface.fillRect(Common::Rect(0, 0, 800, 600), 0);
- g_fp->_system->copyRectToScreen(g_fp->_backgroundSurface.getBasePtr(0, 0), g_fp->_backgroundSurface.pitch, 0, 0, 800, 600);
+ g_fp->_backgroundSurface->fillRect(Common::Rect(0, 0, 800, 600), 0);
+ g_fp->_system->copyRectToScreen(g_fp->_backgroundSurface->getBasePtr(0, 0), g_fp->_backgroundSurface->pitch, 0, 0, 800, 600);
draw(0, 0, 0, 0);
@@ -771,6 +772,7 @@ Bitmap::Bitmap() {
_flags = 0;
_surface = 0;
_flipping = Graphics::FLIP_NONE;
+ _copied_surface = false;
}
Bitmap::Bitmap(Bitmap *src) {
@@ -783,15 +785,16 @@ Bitmap::Bitmap(Bitmap *src) {
_height = src->_height;
_pixels = src->_pixels;
_surface = new Graphics::TransparentSurface(*src->_surface);
+ _copied_surface = true;
_flipping = src->_flipping;
}
Bitmap::~Bitmap() {
- if (_pixels)
- free(_pixels);
- _surface->free();
+ if (!_copied_surface)
+ _surface->free();
delete _surface;
+ _surface = 0;
_pixels = 0;
}
@@ -858,8 +861,8 @@ void Bitmap::putDib(int x, int y, int32 *palette, byte alpha) {
int alphac = TS_ARGB(0xff, alpha, 0xff, 0xff);
- _surface->blit(g_fp->_backgroundSurface, x1, y1, _flipping, &sub, alphac);
- g_fp->_system->copyRectToScreen(g_fp->_backgroundSurface.getBasePtr(x1, y1), g_fp->_backgroundSurface.pitch, x1, y1, sub.width(), sub.height());
+ _surface->blit(*g_fp->_backgroundSurface, x1, y1, _flipping, &sub, alphac);
+ g_fp->_system->copyRectToScreen(g_fp->_backgroundSurface->getBasePtr(x1, y1), g_fp->_backgroundSurface->pitch, x1, y1, sub.width(), sub.height());
}
bool Bitmap::putDibRB(int32 *palette) {
@@ -1255,7 +1258,7 @@ DynamicPhase *Shadows::findSize(int width, int height) {
void FullpipeEngine::drawAlphaRectangle(int x1, int y1, int x2, int y2, int alpha) {
for (int y = y1; y < y2; y++) {
- uint32 *ptr = (uint32 *)g_fp->_backgroundSurface.getBasePtr(x1, y);
+ uint32 *ptr = (uint32 *)g_fp->_backgroundSurface->getBasePtr(x1, y);
for (int x = x1; x < x2; x++) {
uint32 color = *ptr;
@@ -1274,8 +1277,8 @@ void FullpipeEngine::sceneFade(Scene *sc, bool direction) {
int ticks = g_fp->_system->getMillis();
sc->draw();
- drawAlphaRectangle(0, 0, g_fp->_backgroundSurface.w, g_fp->_backgroundSurface.h, direction ? dim : 255 - dim);
- g_fp->_system->copyRectToScreen(g_fp->_backgroundSurface.getBasePtr(0, 0), g_fp->_backgroundSurface.pitch, 0, 0, 800, 600);
+ drawAlphaRectangle(0, 0, g_fp->_backgroundSurface->w, g_fp->_backgroundSurface->h, direction ? dim : 255 - dim);
+ g_fp->_system->copyRectToScreen(g_fp->_backgroundSurface->getBasePtr(0, 0), g_fp->_backgroundSurface->pitch, 0, 0, 800, 600);
g_fp->_system->updateScreen();
ticks = g_fp->_system->getMillis() - ticks;
diff --git a/engines/fullpipe/gfx.h b/engines/fullpipe/gfx.h
index 566586fb48..43c23b49bc 100644
--- a/engines/fullpipe/gfx.h
+++ b/engines/fullpipe/gfx.h
@@ -23,6 +23,11 @@
#ifndef FULLPIPE_GFX_H
#define FULLPIPE_GFX_H
+namespace Graphics {
+ struct Surface;
+ struct TransparentSurface;
+}
+
namespace Fullpipe {
class DynamicPhase;
@@ -40,6 +45,7 @@ struct Bitmap {
int _flags;
Graphics::TransparentSurface *_surface;
int _flipping;
+ bool _copied_surface;
Bitmap();
Bitmap(Bitmap *src);
diff --git a/engines/fullpipe/modal.cpp b/engines/fullpipe/modal.cpp
index 41c1ba368b..3faa035c60 100644
--- a/engines/fullpipe/modal.cpp
+++ b/engines/fullpipe/modal.cpp
@@ -33,6 +33,7 @@
#include "fullpipe/objectnames.h"
#include "graphics/palette.h"
+#include "graphics/surface.h"
#include "video/avi_decoder.h"
#include "engines/savestate.h"
@@ -2397,8 +2398,7 @@ bool ModalDemo::init(int counterDiff) {
if (_clickedQuit == -1)
return true;
- // open URL
- // http://www.amazon.de/EuroVideo-Bildprogramm-GmbH-Full-Pipe/dp/B003TO51YE/ref=sr_1_1?ie=UTF8&s=videogames&qid=1279207213&sr=8-1
+ g_system->openUrl("http://www.amazon.de/EuroVideo-Bildprogramm-GmbH-Full-Pipe/dp/B003TO51YE/ref=sr_1_1?ie=UTF8&s=videogames&qid=1279207213&sr=8-1");
g_fp->_gameContinue = false;
@@ -2407,8 +2407,7 @@ bool ModalDemo::init(int counterDiff) {
bool ModalDemo::init2(int counterDiff) {
if (_clickedQuit) {
- // open URL
- // http://pipestudio.ru/fullpipe/
+ g_system->openUrl("http://pipestudio.ru/fullpipe/");
g_fp->_gameContinue = false;
diff --git a/engines/fullpipe/scene.cpp b/engines/fullpipe/scene.cpp
index d560703fa5..4e3678bfb4 100644
--- a/engines/fullpipe/scene.cpp
+++ b/engines/fullpipe/scene.cpp
@@ -31,6 +31,7 @@
#include "fullpipe/constants.h"
#include "common/algorithm.h"
+#include "graphics/surface.h"
namespace Fullpipe {
@@ -534,7 +535,7 @@ void Scene::draw() {
updateScrolling();
// Clean previous stuff
- g_fp->_backgroundSurface.fillRect(Common::Rect(0, 0, 800, 600), 0);
+ g_fp->_backgroundSurface->fillRect(Common::Rect(0, 0, 800, 600), 0);
drawContent(60000, 0, true);
diff --git a/engines/fullpipe/statics.cpp b/engines/fullpipe/statics.cpp
index ece4f43e9f..bc66ebf40b 100644
--- a/engines/fullpipe/statics.cpp
+++ b/engines/fullpipe/statics.cpp
@@ -552,6 +552,8 @@ void Movement::draw(bool flipFlag, int angle) {
} else {
bmp->putDib(x, y, (int32 *)_currDynamicPhase->_paletteData, _currDynamicPhase->_alpha);
}
+ //Prevent memory leak after new was used to create bmp in reverseImage()
+ delete bmp;
if (_currDynamicPhase->_rect->top) {
if (!_currDynamicPhase->_convertedBitmap) {
diff --git a/engines/sci/detection_tables.h b/engines/sci/detection_tables.h
index 0709bd4606..98dab7b176 100644
--- a/engines/sci/detection_tables.h
+++ b/engines/sci/detection_tables.h
@@ -840,16 +840,12 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::EN_ANY, Common::kPlatformMacintosh, ADGF_MACRESFORK | ADGF_UNSTABLE, GUIO_GK1_MAC },
-#define GUIO_GK2_DEMO GUIO5(GUIO_NOSPEECH, \
+#define GUIO_GK2_DEMO GUIO3(GUIO_NOSPEECH, \
GUIO_NOASPECT, \
- GAMEOPTION_PREFER_DIGITAL_SFX, \
- GAMEOPTION_ORIGINAL_SAVELOAD, \
- GAMEOPTION_FB01_MIDI)
-#define GUIO_GK2 GUIO5(GAMEOPTION_ENABLE_BLACK_LINED_VIDEO, \
+ GAMEOPTION_ORIGINAL_SAVELOAD)
+#define GUIO_GK2 GUIO3(GAMEOPTION_ENABLE_BLACK_LINED_VIDEO, \
GUIO_NOASPECT, \
- GAMEOPTION_PREFER_DIGITAL_SFX, \
- GAMEOPTION_ORIGINAL_SAVELOAD, \
- GAMEOPTION_FB01_MIDI)
+ GAMEOPTION_ORIGINAL_SAVELOAD)
#define GUIO_GK2_MAC GUIO_GK2
// Gabriel Knight 2 - English Windows Non-Interactive Demo
diff --git a/engines/sci/engine/kscripts.cpp b/engines/sci/engine/kscripts.cpp
index 0e29ccf783..77ef92b349 100644
--- a/engines/sci/engine/kscripts.cpp
+++ b/engines/sci/engine/kscripts.cpp
@@ -102,15 +102,9 @@ reg_t kLock(EngineState *s, int argc, reg_t *argv) {
}
reg_t kResCheck(EngineState *s, int argc, reg_t *argv) {
- Resource *res = NULL;
+ Resource *res = nullptr;
ResourceType restype = g_sci->getResMan()->convertResType(argv[0].toUint16());
- if (restype == kResourceTypeVMD) {
- char fileName[10];
- sprintf(fileName, "%d.vmd", argv[1].toUint16());
- return make_reg(0, Common::File::exists(fileName));
- }
-
if ((restype == kResourceTypeAudio36) || (restype == kResourceTypeSync36)) {
if (argc >= 6) {
uint noun = argv[2].toUint16() & 0xff;
@@ -124,7 +118,16 @@ reg_t kResCheck(EngineState *s, int argc, reg_t *argv) {
res = g_sci->getResMan()->testResource(ResourceId(restype, argv[1].toUint16()));
}
- return make_reg(0, res != NULL);
+#ifdef ENABLE_SCI32
+ // GK2 stores some VMDs inside of resource volumes, but usually they are
+ // streamed from the filesystem
+ if (res == nullptr && restype == kResourceTypeVMD) {
+ const Common::String fileName = Common::String::format("%u.vmd", argv[1].toUint16());
+ return make_reg(0, Common::File::exists(fileName));
+ }
+#endif
+
+ return make_reg(0, res != nullptr);
}
reg_t kClone(EngineState *s, int argc, reg_t *argv) {
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index dcefa219f7..0c4f0da959 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -1488,6 +1488,7 @@ static const uint16 kq6CDPatchAudioTextSupport2[] = {
// Additional patch specifically for King's Quest 6
// Fixes special windows, used for example in the Pawn shop (room 280),
// when the man in a robe complains about no more mints.
+// Or also in room 300 at the cliffs (aka copy protection), when Alexander falls down the cliffs.
// We have to change even more code, because the game uses PODialog class for
// text windows and myDialog class for audio. Both are saved to KQ6Print::dialog
// Sadly PODialog is created during KQ6Print::addText, myDialog is set during
@@ -1514,13 +1515,34 @@ static const uint16 kq6CDSignatureAudioTextSupport3[] = {
};
static const uint16 kq6CDPatchAudioTextSupport3[] = {
- 0x31, 0x5c, // adjust jump to reuse audio mode addText-calling code
- PATCH_ADDTOOFFSET(102),
- 0x48, // ret
- 0x48, // ret (waste byte)
+ 0x31, 0x68, // adjust jump to reuse audio mode addText-calling code
+ PATCH_ADDTOOFFSET(+85), // right at the MAGIC_DWORD
+ // check, if text is supposed to be shown. If yes, skip the follow-up check (param[1])
+ 0x89, 0x5a, // lsg global[5Ah]
+ 0x35, 0x01, // ldi 01
+ 0x12, // and
+ 0x2f, 0x07, // bt [skip over param check]
+ // original code, checks param[1]
+ 0x8f, 0x01, // lsp param[1]
+ 0x35, 0x01, // ldi 01
+ 0x1a, // eq?
+ 0x31, 0x10, // bnt [code to set property repressText to 1], adjusted
+ // use myDialog class, so that text box automatically disappears (this is not done for text only mode, like in the original)
0x72, 0x0e, 0x00, // lofsa myDialog
0x65, 0x12, // aTop dialog
- 0x33, 0xed, // jump back to audio mode addText-calling code
+ // followed by original addText-calling code
+ 0x38,
+ PATCH_GETORIGINALBYTE(+95),
+ PATCH_GETORIGINALBYTE(+96), // pushi addText
+ 0x78, // push1
+ 0x8f, 0x02, // lsp param[2]
+ 0x59, 0x03, // &rest 03
+ 0x54, 0x06, // self 06
+ 0x48, // ret
+
+ 0x35, 0x01, // ldi 01
+ 0x65, 0x2e, // aTop repressText
+ 0x48, // ret
PATCH_END
};
diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp
index ed3c604f38..f3e22b7c51 100644
--- a/engines/sci/engine/workarounds.cpp
+++ b/engines/sci/engine/workarounds.cpp
@@ -521,7 +521,8 @@ const SciWorkaroundEntry kDisplay_workarounds[] = {
{ GID_LONGBOW, 220, 220, 0, "moveOn", "changeState", NULL, 0, { WORKAROUND_IGNORE, 0 } }, // DEMO: during second room "Outwit and outfight..."
{ GID_LONGBOW, 210, 210, 0, "mama", "changeState", NULL, 0, { WORKAROUND_IGNORE, 0 } }, // DEMO: during third room "Fall under the spell..."
{ GID_LONGBOW, 320, 320, 0, "flyin", "changeState", NULL, 0, { WORKAROUND_IGNORE, 0 } }, // DEMO: during fourth room "Conspiracies, love..."
- { GID_PQ2, 23, 23, 0, "rm23Script", "elements", sig_kDisplay_pq2_1, 0, { WORKAROUND_IGNORE, 0 } }, // when looking at the 2nd page of pate's file - 0x75 as id - bug #5223
+ { GID_PQ2, 23, 23, 0, "rm23Script", "elements", sig_kDisplay_pq2_1, 0, { WORKAROUND_IGNORE, 0 } }, // when looking at the 2nd page of files in jail - 0x75 as id - bug #5223
+ { GID_PQ2, 23, 23, 0, "rm23Script", "handleEvent", sig_kDisplay_pq2_1, 0, { WORKAROUND_IGNORE, 0 } }, // when looking at the 2nd page of file in jail - 0x75 as id - bug #9670
{ GID_QFG1, 11, 11, 0, "battle", "init", NULL, 0, { WORKAROUND_IGNORE, 0 } }, // DEMO: When entering battle, 0x75 as id
{ GID_SQ4, 397, 0, 0, "", "export 12", NULL, 0, { WORKAROUND_IGNORE, 0 } }, // FLOPPY: when going into the computer store - bug #5227
{ GID_SQ4, 391, 391, 0, "doCatalog", "changeState", sig_kDisplay_sq4_1, 0, { WORKAROUND_IGNORE, 0 } }, // CD: clicking on catalog in roboter sale - a parameter is an object
diff --git a/engines/sci/graphics/video32.cpp b/engines/sci/graphics/video32.cpp
index c3aafb62bf..4af1e76ed9 100644
--- a/engines/sci/graphics/video32.cpp
+++ b/engines/sci/graphics/video32.cpp
@@ -39,6 +39,7 @@
#include "sci/graphics/palette32.h" // for GfxPalette32
#include "sci/graphics/plane32.h" // for Plane, PlanePictureCodes::kP...
#include "sci/graphics/screen_item32.h" // for ScaleInfo, ScreenItem, Scale...
+#include "sci/resource.h" // for ResourceManager, ResourceId,...
#include "sci/sci.h" // for SciEngine, g_sci, getSciVersion
#include "sci/sound/audio32.h" // for Audio32
#include "sci/video/seq_decoder.h" // for SEQDecoder
@@ -492,6 +493,7 @@ VMDPlayer::VMDPlayer(SegManager *segMan, EventManager *eventMan) :
_isOpen(false),
_isInitialized(false),
+ _bundledVmd(nullptr),
_yieldFrame(0),
_yieldInterval(0),
_lastYieldedFrameNo(0),
@@ -536,15 +538,29 @@ VMDPlayer::IOStatus VMDPlayer::open(const Common::String &fileName, const OpenFl
g_sci->_audio32->stop(kAllChannels);
}
- if (_decoder->loadFile(fileName)) {
+ Resource *bundledVmd = g_sci->getResMan()->findResource(ResourceId(kResourceTypeVMD, fileName.asUint64()), true);
+
+ if (bundledVmd != nullptr) {
+ Common::SeekableReadStream *stream = bundledVmd->makeStream();
+ if (_decoder->loadStream(stream)) {
+ _bundledVmd = bundledVmd;
+ _isOpen = true;
+ } else {
+ delete stream;
+ g_sci->getResMan()->unlockResource(bundledVmd);
+ }
+ } else if (_decoder->loadFile(fileName)) {
+ _isOpen = true;
+ }
+
+ if (_isOpen) {
if (flags & kOpenFlagMute) {
_decoder->setVolume(0);
}
- _isOpen = true;
return kIOSuccess;
- } else {
- return kIOError;
}
+
+ return kIOError;
}
void VMDPlayer::init(const int16 x, const int16 y, const PlayFlags flags, const int16 boostPercent, const int16 boostStartColor, const int16 boostEndColor) {
@@ -571,6 +587,11 @@ VMDPlayer::IOStatus VMDPlayer::close() {
_isInitialized = false;
_ignorePalettes = false;
+ if (_bundledVmd) {
+ g_sci->getResMan()->unlockResource(_bundledVmd);
+ _bundledVmd = nullptr;
+ }
+
_segMan->freeBitmap(_screenItem->_celInfo.bitmap);
if (!_planeIsOwned && _screenItem != nullptr) {
diff --git a/engines/sci/graphics/video32.h b/engines/sci/graphics/video32.h
index 69acdf2fce..5ed8fd954a 100644
--- a/engines/sci/graphics/video32.h
+++ b/engines/sci/graphics/video32.h
@@ -321,6 +321,13 @@ private:
bool _isInitialized;
/**
+ * The Resource object for VMDs that are read out
+ * of a resource bundle instead of being streamed
+ * from the filesystem.
+ */
+ Resource *_bundledVmd;
+
+ /**
* For VMDs played with the `kEventFlagToFrame` flag,
* the target frame for yielding back to the SCI VM.
*/
diff --git a/engines/titanic/carry/bridge_piece.cpp b/engines/titanic/carry/bridge_piece.cpp
index 487ea32df6..f90f7cbd4d 100644
--- a/engines/titanic/carry/bridge_piece.cpp
+++ b/engines/titanic/carry/bridge_piece.cpp
@@ -77,7 +77,7 @@ bool CBridgePiece::UseWithOtherMsg(CUseWithOtherMsg *msg) {
} else if (name == "SeasonBridge") {
frameMsg._frameNumber = 3;
} else if (name == "BeamBridge") {
- frameMsg._frameNumber = 0;
+ frameMsg._frameNumber = 4;
}
frameMsg.execute(shipSetting);
diff --git a/engines/titanic/carry/carry_parrot.cpp b/engines/titanic/carry/carry_parrot.cpp
index ed86384147..8b332610e2 100644
--- a/engines/titanic/carry/carry_parrot.cpp
+++ b/engines/titanic/carry/carry_parrot.cpp
@@ -42,13 +42,13 @@ BEGIN_MESSAGE_MAP(CCarryParrot, CCarry)
ON_MESSAGE(ActMsg)
END_MESSAGE_MAP()
-CCarryParrot::CCarryParrot() : CCarry(), _string6("PerchedParrot"),
+CCarryParrot::CCarryParrot() : CCarry(), _parrotName("PerchedParrot"),
_timerId(0), _freeCounter(0), _feathersFlag(false) {
}
void CCarryParrot::save(SimpleFile *file, int indent) {
file->writeNumberLine(1, indent);
- file->writeQuotedLine(_string6, indent);
+ file->writeQuotedLine(_parrotName, indent);
file->writeNumberLine(_timerId, indent);
file->writeNumberLine(_freeCounter, indent);
file->writeNumberLine(_feathersFlag, indent);
@@ -58,7 +58,7 @@ void CCarryParrot::save(SimpleFile *file, int indent) {
void CCarryParrot::load(SimpleFile *file) {
file->readNumber();
- _string6 = file->readString();
+ _parrotName = file->readString();
_timerId = file->readNumber();
_freeCounter = file->readNumber();
_feathersFlag = file->readNumber();
@@ -67,7 +67,7 @@ void CCarryParrot::load(SimpleFile *file) {
}
bool CCarryParrot::PETGainedObjectMsg(CPETGainedObjectMsg *msg) {
- CParrot::_v4 = 4;
+ CParrot::_state = PARROT_4;
CActMsg actMsg("Shut");
actMsg.execute("ParrotCage");
@@ -75,7 +75,7 @@ bool CCarryParrot::PETGainedObjectMsg(CPETGainedObjectMsg *msg) {
}
bool CCarryParrot::TimerMsg(CTimerMsg *msg) {
- if (CParrot::_v4 == 1 || CParrot::_v4 == 4) {
+ if (CParrot::_state == PARROT_1 || CParrot::_state == PARROT_4) {
if (++_freeCounter >= 30) {
CActMsg actMsg("FreeParrot");
actMsg.execute(this);
@@ -94,7 +94,7 @@ bool CCarryParrot::LeaveViewMsg(CLeaveViewMsg *msg) {
if (_visible) {
setVisible(false);
_fieldE0 = 0;
- CParrot::_v4 = 2;
+ CParrot::_state = PARROT_ESCAPED;
}
return true;
@@ -105,10 +105,7 @@ bool CCarryParrot::MouseDragEndMsg(CMouseDragEndMsg *msg) {
if (msg->_mousePos.y >= 360) {
petAddToInventory();
- return true;
- }
-
- if (compareViewNameTo("ParrotLobby.Node 1.N")) {
+ } else if (compareViewNameTo("ParrotLobby.Node 1.N")) {
if (msg->_mousePos.x >= 75 && msg->_mousePos.x <= 565 &&
!CParrot::_v2 && !CCage::_open) {
setVisible(false);
@@ -123,7 +120,7 @@ bool CCarryParrot::MouseDragEndMsg(CMouseDragEndMsg *msg) {
} else {
setVisible(false);
_fieldE0 = 0;
- CParrot::_v4 = 2;
+ CParrot::_state = PARROT_ESCAPED;
playSound("z#475.wav");
sound8(true);
moveUnder(findRoom());
@@ -150,7 +147,7 @@ bool CCarryParrot::MouseDragEndMsg(CMouseDragEndMsg *msg) {
}
bool CCarryParrot::PassOnDragStartMsg(CPassOnDragStartMsg *msg) {
- if (CParrot::_v4 != 3) {
+ if (CParrot::_state != PARROT_MAILED) {
moveToView();
setPosition(Point(0, 0));
setVisible(true);
@@ -161,21 +158,22 @@ bool CCarryParrot::PassOnDragStartMsg(CPassOnDragStartMsg *msg) {
_timerId = addTimer(1000, 1000);
_freeCounter = 0;
- CParrot::_v4 = 1;
+ CParrot::_state = PARROT_1;
msg->_value3 = 1;
return CCarry::PassOnDragStartMsg(msg);
}
- CTrueTalkNPC *npc = dynamic_cast<CTrueTalkNPC *>(getRoot()->findByName(_string6));
+ CTrueTalkNPC *npc = dynamic_cast<CTrueTalkNPC *>(getRoot()->findByName(_parrotName));
if (npc)
startTalking(npc, 0x446BF);
_fieldE0 = 0;
playSound("z#475.wav");
moveUnder(findRoom());
- msg->_value4 = 1;
+ CParrot::_state = PARROT_ESCAPED;
+ msg->_value4 = 1;
return true;
}
@@ -191,24 +189,21 @@ bool CCarryParrot::PreEnterViewMsg(CPreEnterViewMsg *msg) {
bool CCarryParrot::UseWithCharMsg(CUseWithCharMsg *msg) {
CSuccUBus *succubus = dynamic_cast<CSuccUBus *>(msg->_character);
if (succubus)
- CParrot::_v4 = 3;
+ CParrot::_state = PARROT_MAILED;
return CCarry::UseWithCharMsg(msg);
}
bool CCarryParrot::ActMsg(CActMsg *msg) {
- if (msg->_action == "FreeParrot" && (CParrot::_v4 == 4 || CParrot::_v4 == 1)) {
- CTrueTalkNPC *npc = dynamic_cast<CTrueTalkNPC *>(getRoot()->findByName(_string6));
+ if (msg->_action == "FreeParrot" && (CParrot::_state == PARROT_4 || CParrot::_state == PARROT_1)) {
+ CTrueTalkNPC *npc = dynamic_cast<CTrueTalkNPC *>(getRoot()->findByName(_parrotName));
if (npc)
startTalking(npc, 0x446BF);
setVisible(false);
_fieldE0 = 0;
- if (CParrot::_v4 == 4) {
- CActMsg actMsg("Shut");
- actMsg.execute("ParrotCage");
- } else {
+ if (CParrot::_state == PARROT_4) {
playSound("z#475.wav");
if (!_feathersFlag) {
@@ -221,13 +216,17 @@ bool CCarryParrot::ActMsg(CActMsg *msg) {
_feathersFlag = true;
}
- getPetControl()->removeFromInventory(this);
- getPetControl()->setAreaChangeType(1);
+ CPetControl *pet = getPetControl();
+ pet->removeFromInventory(this);
+ pet->setAreaChangeType(1);
moveUnder(getRoom());
+ } else {
+ CActMsg actMsg("Shut");
+ actMsg.execute("ParrotCage");
}
- CParrot::_v4 = 2;
- stopTimer(_timerId);
+ CParrot::_state = PARROT_ESCAPED;
+ stopAnimTimer(_timerId);
_timerId = 0;
}
diff --git a/engines/titanic/carry/carry_parrot.h b/engines/titanic/carry/carry_parrot.h
index c42475e5f0..e165482edc 100644
--- a/engines/titanic/carry/carry_parrot.h
+++ b/engines/titanic/carry/carry_parrot.h
@@ -42,7 +42,7 @@ class CCarryParrot : public CCarry {
bool UseWithCharMsg(CUseWithCharMsg *msg);
bool ActMsg(CActMsg *msg);
private:
- CString _string6;
+ CString _parrotName;
int _timerId;
int _freeCounter;
bool _feathersFlag;
diff --git a/engines/titanic/continue_save_dialog.h b/engines/titanic/continue_save_dialog.h
index 58c7deef00..b6d9aebfac 100644
--- a/engines/titanic/continue_save_dialog.h
+++ b/engines/titanic/continue_save_dialog.h
@@ -28,7 +28,7 @@
#include "titanic/support/image.h"
#include "titanic/support/rect.h"
#include "titanic/support/string.h"
-#include "titanic/pet_control/pet_text.h"
+#include "titanic/gfx/text_control.h"
namespace Titanic {
@@ -43,7 +43,7 @@ class CContinueSaveDialog : public CEventTarget {
};
private:
Common::Array<SaveEntry> _saves;
- CPetText _slotNames[5];
+ CTextControl _slotNames[5];
int _highlightedSlot, _selectedSlot;
Point _mousePos;
bool _evilTwinShown;
diff --git a/engines/titanic/core/drop_target.cpp b/engines/titanic/core/drop_target.cpp
index f02efeee5d..ffeab03545 100644
--- a/engines/titanic/core/drop_target.cpp
+++ b/engines/titanic/core/drop_target.cpp
@@ -34,7 +34,7 @@ BEGIN_MESSAGE_MAP(CDropTarget, CGameObject)
END_MESSAGE_MAP()
CDropTarget::CDropTarget() : CGameObject(), _itemFrame(0),
- _itemMatchSize(0), _showItem(false), _fieldF4(0), _dropFrame(0),
+ _itemMatchSize(0), _showItem(false), _dropEnabled(false), _dropFrame(0),
_dragFrame(0), _dragCursorId(CURSOR_ARROW), _dropCursorId(CURSOR_HAND),
_clipFlags(20) {
}
@@ -48,7 +48,7 @@ void CDropTarget::save(SimpleFile *file, int indent) {
file->writeQuotedLine(_soundName, indent);
file->writeNumberLine(_showItem, indent);
file->writeQuotedLine(_itemName, indent);
- file->writeNumberLine(_fieldF4, indent);
+ file->writeNumberLine(_dropEnabled, indent);
file->writeNumberLine(_dropFrame, indent);
file->writeNumberLine(_dragFrame, indent);
file->writeQuotedLine(_clipName, indent);
@@ -68,7 +68,7 @@ void CDropTarget::load(SimpleFile *file) {
_soundName = file->readString();
_showItem = file->readNumber();
_itemName = file->readString();
- _fieldF4 = file->readNumber();
+ _dropEnabled = file->readNumber();
_dropFrame = file->readNumber();
_dragFrame = file->readNumber();
_clipName = file->readString();
@@ -119,7 +119,7 @@ bool CDropTarget::MouseDragStartMsg(CMouseDragStartMsg *msg) {
msg->_dragItem = dragItem;
CGameObject *obj = dynamic_cast<CGameObject *>(findByName(_itemName));
- if (_itemName.empty() || _fieldF4 || !obj)
+ if (_itemName.empty() || _dropEnabled || !obj)
return false;
CDropZoneLostObjectMsg lostMsg;
@@ -161,7 +161,7 @@ bool CDropTarget::EnterViewMsg(CEnterViewMsg *msg) {
bool CDropTarget::VisibleMsg(CVisibleMsg *msg) {
setVisible(msg->_visible);
- _fieldF4 = !msg->_visible;
+ _dropEnabled = !msg->_visible;
return true;
}
diff --git a/engines/titanic/core/drop_target.h b/engines/titanic/core/drop_target.h
index e07b640c9f..bdf8891789 100644
--- a/engines/titanic/core/drop_target.h
+++ b/engines/titanic/core/drop_target.h
@@ -42,7 +42,7 @@ protected:
CString _soundName;
bool _showItem;
CString _itemName;
- int _fieldF4;
+ bool _dropEnabled;
int _dropFrame;
int _dragFrame;
CString _clipName;
diff --git a/engines/titanic/core/game_object.cpp b/engines/titanic/core/game_object.cpp
index bfcfa9fbff..0a0b3b1c42 100644
--- a/engines/titanic/core/game_object.cpp
+++ b/engines/titanic/core/game_object.cpp
@@ -63,7 +63,7 @@ CGameObject::CGameObject(): CNamedItem() {
_field44 = 0xF0;
_field48 = 0xF0;
_field4C = 0xFF;
- _isMail = false;
+ _isPendingMail = false;
_destRoomFlags = 0;
_roomFlags = 0;
_visible = true;
@@ -119,7 +119,7 @@ void CGameObject::save(SimpleFile *file, int indent) {
file->writeNumberLine(_field4C, indent + 1);
file->writeNumberLine(_fieldB8, indent + 1);
file->writeNumberLine(_visible, indent + 1);
- file->writeNumberLine(_isMail, indent + 1);
+ file->writeNumberLine(_isPendingMail, indent + 1);
file->writeNumberLine(_destRoomFlags, indent + 1);
file->writeNumberLine(_roomFlags, indent + 1);
@@ -174,7 +174,7 @@ void CGameObject::load(SimpleFile *file) {
_field4C = file->readNumber();
_fieldB8 = file->readNumber();
_visible = file->readNumber() != 0;
- _isMail = file->readNumber();
+ _isPendingMail = file->readNumber();
_destRoomFlags = file->readNumber();
_roomFlags = file->readNumber();
@@ -1081,10 +1081,11 @@ void CGameObject::setMovieFrameRate(double rate) {
void CGameObject::setText(const CString &str, int border, int borderRight) {
if (!_text)
- _text = new CPetText();
+ _text = new CTextControl();
_textBorder = border;
_textBorderRight = borderRight;
+ setTextBounds();
_text->setText(str);
CScreenManager *screenManager = getGameManager()->setScreenManager();
_text->scrollToTop(screenManager);
@@ -1092,7 +1093,7 @@ void CGameObject::setText(const CString &str, int border, int borderRight) {
void CGameObject::setTextHasBorders(bool hasBorders) {
if (!_text)
- _text = new CPetText();
+ _text = new CTextControl();
_text->setHasBorder(hasBorders);
}
@@ -1108,14 +1109,14 @@ void CGameObject::setTextBounds() {
void CGameObject::setTextColor(byte r, byte g, byte b) {
if (!_text)
- _text = new CPetText();
+ _text = new CTextControl();
_text->setColor(r, g, b);
}
void CGameObject::setTextFontNumber(int fontNumber) {
if (!_text)
- _text = new CPetText();
+ _text = new CTextControl();
_text->setFontNumber(fontNumber);
}
@@ -1132,11 +1133,13 @@ CTextCursor *CGameObject::getTextCursor() const {
void CGameObject::scrollTextUp() {
if (_text)
_text->scrollUp(CScreenManager::_screenManagerPtr);
+ makeDirty();
}
void CGameObject::scrollTextDown() {
if (_text)
_text->scrollDown(CScreenManager::_screenManagerPtr);
+ makeDirty();
}
void CGameObject::lockMouse() {
@@ -1451,10 +1454,10 @@ CGameObject *CGameObject::findMail(uint roomFlags) const {
return mailMan ? mailMan->findMail(roomFlags) : nullptr;
}
-void CGameObject::removeMail(uint destRoomFlags, uint newRoomFlags) {
+void CGameObject::sendMail(uint currRoomFlags, uint newRoomFlags) {
CMailMan *mailMan = getMailMan();
if (mailMan)
- mailMan->removeMail(destRoomFlags, newRoomFlags);
+ mailMan->sendMail(currRoomFlags, newRoomFlags);
}
void CGameObject::resetMail() {
diff --git a/engines/titanic/core/game_object.h b/engines/titanic/core/game_object.h
index 8702b5f522..629c6a038d 100644
--- a/engines/titanic/core/game_object.h
+++ b/engines/titanic/core/game_object.h
@@ -34,7 +34,7 @@
#include "titanic/support/strings.h"
#include "titanic/support/movie_clip.h"
#include "titanic/pet_control/pet_section.h"
-#include "titanic/pet_control/pet_text.h"
+#include "titanic/gfx/text_control.h"
#include "titanic/game_state.h"
namespace Titanic {
@@ -87,7 +87,7 @@ protected:
int _initialFrame;
CMovieRangeInfoList _movieRangeInfoList;
int _frameNumber;
- CPetText *_text;
+ CTextControl *_text;
uint _textBorder;
uint _textBorderRight;
int _field9C;
@@ -519,57 +519,12 @@ protected:
void setMovieFrameRate(double rate);
/**
- * Set up the text and borders for the object
- */
- void setText(const CString &str, int border = 0, int borderRight = 0);
-
- /**
- * Sets whether the text will use borders
- */
- void setTextHasBorders(bool hasBorders);
-
- /**
- * Sets the bounds for a previously defined text area
- */
- void setTextBounds();
-
- /**
- * Sets the color for the object's text
- */
- void setTextColor(byte r, byte g, byte b);
-
- /**
- * Sets the font number to use for text
- */
- void setTextFontNumber(int fontNumber);
-
- /**
- * Gets the width of the text contents
- */
- int getTextWidth() const;
-
- /**
- * Returns the text cursor
- */
- CTextCursor *getTextCursor() const;
-
- /**
- * Scroll text up
- */
- void scrollTextUp();
-
- /**
- * Scroll text down
- */
- void scrollTextDown();
-
- /**
* Gets a new random number
*/
int getRandomNumber(int max, int *oldVal = nullptr);
public:
Rect _bounds;
- bool _isMail;
+ bool _isPendingMail;
uint _destRoomFlags;
uint _roomFlags;
int _field60;
@@ -748,11 +703,6 @@ public:
CGameObject *getHiddenObject(const CString &name) const;
/**
- * Sets up credits text
- */
- void createCredits();
-
- /**
* Support function for drag moving
*/
void dragMove(const Point &pt);
@@ -764,6 +714,58 @@ public:
bool compareRoomFlags(int mode, uint flags1, uint flags2);
+ /*--- Text display methods ---*/
+
+ /**
+ * Sets up credits text
+ */
+ void createCredits();
+
+ /**
+ * Set up the text and borders for the object
+ */
+ void setText(const CString &str, int border = 0, int borderRight = 0);
+
+ /**
+ * Sets whether the text will use borders
+ */
+ void setTextHasBorders(bool hasBorders);
+
+ /**
+ * Sets the bounds for a previously defined text area
+ */
+ void setTextBounds();
+
+ /**
+ * Sets the color for the object's text
+ */
+ void setTextColor(byte r, byte g, byte b);
+
+ /**
+ * Sets the font number to use for text
+ */
+ void setTextFontNumber(int fontNumber);
+
+ /**
+ * Gets the width of the text contents
+ */
+ int getTextWidth() const;
+
+ /**
+ * Scroll text up
+ */
+ void scrollTextUp();
+
+ /**
+ * Scroll text down
+ */
+ void scrollTextDown();
+
+ /**
+ * Returns the text cursor
+ */
+ CTextCursor *getTextCursor() const;
+
/*--- CGameManager Methods ---*/
/**
@@ -797,9 +799,9 @@ public:
void addMail(uint destRoomFlags);
/**
- * Remove an object from the mail list
+ * Sends a pending mail object to a given destination
*/
- void removeMail(uint destRoomFlags, uint newRoomFlags);
+ void sendMail(uint currRoomFlags, uint newRoomFlags);
/**
* Return the full Id of the current view in a
diff --git a/engines/titanic/core/mail_man.cpp b/engines/titanic/core/mail_man.cpp
index 851e52694d..a34c69674b 100644
--- a/engines/titanic/core/mail_man.cpp
+++ b/engines/titanic/core/mail_man.cpp
@@ -56,22 +56,22 @@ void CMailMan::addMail(CGameObject *obj, uint destRoomFlags) {
void CMailMan::setMailDest(CGameObject *obj, uint roomFlags) {
obj->_destRoomFlags = roomFlags;
obj->_roomFlags = 0;
- obj->_isMail = true;
+ obj->_isPendingMail = true;
}
CGameObject *CMailMan::findMail(uint roomFlags) const {
for (CGameObject *obj = getFirstObject(); obj; obj = getNextObject(obj)) {
- if (obj->_isMail && obj->_destRoomFlags == roomFlags)
+ if (obj->_isPendingMail && obj->_destRoomFlags == roomFlags)
return obj;
}
return nullptr;
}
-void CMailMan::removeMail(uint destRoomFlags, uint newRoomFlags) {
+void CMailMan::sendMail(uint currRoomFlags, uint newRoomFlags) {
for (CGameObject *obj = getFirstObject(); obj; obj = getNextObject(obj)) {
- if (obj->_isMail && obj->_destRoomFlags == destRoomFlags) {
- obj->_isMail = false;
+ if (obj->_isPendingMail && obj->_destRoomFlags == currRoomFlags) {
+ obj->_isPendingMail = false;
obj->_roomFlags = newRoomFlags;
break;
}
diff --git a/engines/titanic/core/mail_man.h b/engines/titanic/core/mail_man.h
index 0a8d5fa90a..b5d6a153fc 100644
--- a/engines/titanic/core/mail_man.h
+++ b/engines/titanic/core/mail_man.h
@@ -71,9 +71,9 @@ public:
CGameObject *findMail(uint roomFlags) const;
/**
- * Remove a mail item
+ * Sends a pending mail object to a given destination
*/
- void removeMail(uint destRoomFlags, uint newRoomFlags);
+ void sendMail(uint currRoomFlags, uint newRoomFlags);
void resetValue() { _value = 0; }
};
diff --git a/engines/titanic/core/project_item.cpp b/engines/titanic/core/project_item.cpp
index af67f69580..1093a5c6e7 100644
--- a/engines/titanic/core/project_item.cpp
+++ b/engines/titanic/core/project_item.cpp
@@ -158,8 +158,8 @@ void CProjectItem::loadGame(int slotId) {
CompressedFile file;
// Clear any existing project contents and call preload code
- clear();
preLoad();
+ clear();
// Open either an existing savegame slot or the new game template
if (slotId >= 0) {
@@ -309,6 +309,10 @@ void CProjectItem::saveData(SimpleFile *file, CTreeItem *item) const {
void CProjectItem::preLoad() {
if (_gameManager)
_gameManager->preLoad();
+
+ CScreenManager *scrManager = CScreenManager::_currentScreenManagerPtr;
+ if (scrManager)
+ scrManager->preLoad();
}
void CProjectItem::postLoad() {
diff --git a/engines/titanic/core/saveable_object.cpp b/engines/titanic/core/saveable_object.cpp
index 73b4bf861f..f718ba79b3 100644
--- a/engines/titanic/core/saveable_object.cpp
+++ b/engines/titanic/core/saveable_object.cpp
@@ -1473,6 +1473,9 @@ void CSaveableObject::initClassList() {
ADDFN(CEnterNodeMsg, CMessage);
ADDFN(CEnterRoomMsg, CMessage);
ADDFN(CEnterViewMsg, CMessage);
+ ADDFN(CPreEnterNodeMsg, CMessage);
+ ADDFN(CPreEnterRoomMsg, CMessage);
+ ADDFN(CPreEnterViewMsg, CMessage);
ADDFN(CPreSaveMsg, CMessage);
ADDFN(CProdMaitreDMsg, CMessage);
ADDFN(CPumpingMsg, CMessage);
diff --git a/engines/titanic/core/view_item.cpp b/engines/titanic/core/view_item.cpp
index c25461f5cc..9109bcc5b2 100644
--- a/engines/titanic/core/view_item.cpp
+++ b/engines/titanic/core/view_item.cpp
@@ -195,6 +195,8 @@ bool CViewItem::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
linkItem = dynamic_cast<CLinkItem *>(
findNextInstanceOf(CLinkItem::_type, linkItem));
}
+
+ handleMouseMsg(msg, false);
}
}
}
diff --git a/engines/titanic/events.cpp b/engines/titanic/events.cpp
index 97f9a86eb3..d29a19dec6 100644
--- a/engines/titanic/events.cpp
+++ b/engines/titanic/events.cpp
@@ -127,7 +127,7 @@ bool Events::checkForNextFrameCounter() {
}
uint32 Events::getTicksCount() const {
- return g_system->getMillis();
+ return _frameCounter * GAME_FRAME_TIME;
}
void Events::sleep(uint time) {
diff --git a/engines/titanic/game/announce.cpp b/engines/titanic/game/announce.cpp
index 74c126476f..16298f7b99 100644
--- a/engines/titanic/game/announce.cpp
+++ b/engines/titanic/game/announce.cpp
@@ -30,14 +30,14 @@ BEGIN_MESSAGE_MAP(CAnnounce, CGameObject)
ON_MESSAGE(ActMsg)
END_MESSAGE_MAP()
-CAnnounce::CAnnounce() : _nameIndex(0), _soundHandle(0), _leaveFlag(1), _enabled(false) {
+CAnnounce::CAnnounce() : _nameIndex(0), _soundHandle(0), _notActivatedFlag(true), _enabled(false) {
}
void CAnnounce::save(SimpleFile *file, int indent) {
file->writeNumberLine(1, indent);
file->writeNumberLine(_nameIndex, indent);
file->writeNumberLine(_soundHandle, indent);
- file->writeNumberLine(_leaveFlag, indent);
+ file->writeNumberLine(_notActivatedFlag, indent);
file->writeNumberLine(_enabled, indent);
CGameObject::save(file, indent);
@@ -47,7 +47,7 @@ void CAnnounce::load(SimpleFile *file) {
file->readNumber();
_nameIndex = file->readNumber();
_soundHandle = file->readNumber();
- _leaveFlag = file->readNumber();
+ _notActivatedFlag = file->readNumber();
_enabled = file->readNumber();
CGameObject::load(file);
@@ -97,6 +97,7 @@ bool CAnnounce::TimerMsg(CTimerMsg *msg) {
break;
}
+ // Schedule another announcement for a random future time
addTimer(1, 300000 + getRandomNumber(30000), 0);
if (getRandomNumber(3) == 0)
addTimer(2, 4000, 0);
@@ -111,9 +112,10 @@ bool CAnnounce::TimerMsg(CTimerMsg *msg) {
}
bool CAnnounce::LeaveRoomMsg(CLeaveRoomMsg *msg) {
- if (_leaveFlag) {
+ // The very first time the player leaves the Embarklation Lobby, start announcements
+ if (_notActivatedFlag) {
addTimer(1, 1000, 0);
- _leaveFlag = 0;
+ _notActivatedFlag = false;
_enabled = true;
}
@@ -121,6 +123,7 @@ bool CAnnounce::LeaveRoomMsg(CLeaveRoomMsg *msg) {
}
bool CAnnounce::ActMsg(CActMsg *msg) {
+ // Handle enabling or disabling announcements
if (msg->_action == "Enable")
_enabled = true;
else if (msg->_action == "Disable")
diff --git a/engines/titanic/game/announce.h b/engines/titanic/game/announce.h
index 9bf060daae..caacb8ffa1 100644
--- a/engines/titanic/game/announce.h
+++ b/engines/titanic/game/announce.h
@@ -35,7 +35,7 @@ class CAnnounce : public CGameObject {
private:
int _nameIndex;
int _soundHandle;
- bool _leaveFlag;
+ bool _notActivatedFlag;
bool _enabled;
public:
CLASSDEF;
diff --git a/engines/titanic/game/broken_pell_base.cpp b/engines/titanic/game/broken_pell_base.cpp
index 02c2d873ac..a3825d503e 100644
--- a/engines/titanic/game/broken_pell_base.cpp
+++ b/engines/titanic/game/broken_pell_base.cpp
@@ -33,7 +33,7 @@ void CBrokenPellBase::save(SimpleFile *file, int indent) {
file->writeNumberLine(1, indent);
file->writeNumberLine(_v1, indent);
file->writeNumberLine(_v2, indent);
- file->writeNumberLine(_fieldE0, indent);
+ file->writeNumberLine(_exitAction, indent);
CBackground::save(file, indent);
}
@@ -41,7 +41,7 @@ void CBrokenPellBase::load(SimpleFile *file) {
file->readNumber();
_v1 = file->readNumber();
_v2 = file->readNumber();
- _fieldE0 = file->readNumber();
+ _exitAction = file->readNumber();
CBackground::load(file);
}
diff --git a/engines/titanic/game/broken_pell_base.h b/engines/titanic/game/broken_pell_base.h
index 4ca7eddd20..c5b27d88bf 100644
--- a/engines/titanic/game/broken_pell_base.h
+++ b/engines/titanic/game/broken_pell_base.h
@@ -33,10 +33,10 @@ protected:
static bool _v1;
static int _v2;
- int _fieldE0;
+ int _exitAction;
public:
CLASSDEF;
- CBrokenPellBase() : CBackground(), _fieldE0(0) {}
+ CBrokenPellBase() : CBackground(), _exitAction(0) {}
/**
* Save the data for the class to file
diff --git a/engines/titanic/game/broken_pellerator.cpp b/engines/titanic/game/broken_pellerator.cpp
index 8fb7244b7e..d3664acccd 100644
--- a/engines/titanic/game/broken_pellerator.cpp
+++ b/engines/titanic/game/broken_pellerator.cpp
@@ -34,8 +34,8 @@ END_MESSAGE_MAP()
void CBrokenPellerator::save(SimpleFile *file, int indent) {
file->writeNumberLine(1, indent);
- file->writeQuotedLine(_string2, indent);
- file->writeQuotedLine(_string3, indent);
+ file->writeQuotedLine(_exitLeftView, indent);
+ file->writeQuotedLine(_exitRightView, indent);
file->writeQuotedLine(_string4, indent);
file->writeQuotedLine(_string5, indent);
@@ -44,8 +44,8 @@ void CBrokenPellerator::save(SimpleFile *file, int indent) {
void CBrokenPellerator::load(SimpleFile *file) {
file->readNumber();
- _string2 = file->readString();
- _string3 = file->readString();
+ _exitLeftView = file->readString();
+ _exitRightView = file->readString();
_string4 = file->readString();
_string5 = file->readString();
@@ -86,15 +86,15 @@ bool CBrokenPellerator::ActMsg(CActMsg *msg) {
CStatusChangeMsg statusMsg;
statusMsg.execute("PickupHose");
} else {
- _fieldE0 = 0;
+ _exitAction = 0;
bool closeFlag = msg->_action == "Close";
if (msg->_action == "CloseLeft") {
closeFlag = true;
- _fieldE0 = 1;
+ _exitAction = 1;
}
if (msg->_action == "CloseRight") {
closeFlag = true;
- _fieldE0 = 2;
+ _exitAction = 2;
}
if (closeFlag) {
@@ -105,18 +105,18 @@ bool CBrokenPellerator::ActMsg(CActMsg *msg) {
else
playMovie(14, 28, MOVIE_NOTIFY_OBJECT);
} else {
- switch (_fieldE0) {
+ switch (_exitAction) {
case 1:
- changeView(_string2);
+ changeView(_exitLeftView);
break;
case 2:
- changeView(_string3);
+ changeView(_exitRightView);
break;
default:
break;
}
- _fieldE0 = 0;
+ _exitAction = 0;
}
}
}
@@ -126,23 +126,25 @@ bool CBrokenPellerator::ActMsg(CActMsg *msg) {
bool CBrokenPellerator::MovieEndMsg(CMovieEndMsg *msg) {
if (msg->_endFrame == 14) {
+ // Pellerator has been opened, so let the hose be picked up (if it's still there)
CStatusChangeMsg statusMsg;
statusMsg._newStatus = 1;
statusMsg.execute("PickUpHose");
}
if (msg->_endFrame == 28) {
+ // Pellerator has been closed, so disable the hose (if it's still there)
CStatusChangeMsg statusMsg;
statusMsg._newStatus = 0;
statusMsg.execute("PickUpHose");
}
- switch (_fieldE0) {
+ switch (_exitAction) {
case 1:
- changeView(_string2);
+ changeView(_exitLeftView);
break;
case 2:
- changeView(_string3);
+ changeView(_exitRightView);
break;
default:
break;
diff --git a/engines/titanic/game/broken_pellerator.h b/engines/titanic/game/broken_pellerator.h
index 3b8c3ba587..f243f4ebfe 100644
--- a/engines/titanic/game/broken_pellerator.h
+++ b/engines/titanic/game/broken_pellerator.h
@@ -34,8 +34,8 @@ class CBrokenPellerator : public CBrokenPellBase {
bool ActMsg(CActMsg *msg);
bool MovieEndMsg(CMovieEndMsg *msg);
private:
- CString _string2;
- CString _string3;
+ CString _exitLeftView;
+ CString _exitRightView;
CString _string4;
CString _string5;
public:
diff --git a/engines/titanic/game/broken_pellerator_froz.cpp b/engines/titanic/game/broken_pellerator_froz.cpp
index 690ab76820..7025b37a0c 100644
--- a/engines/titanic/game/broken_pellerator_froz.cpp
+++ b/engines/titanic/game/broken_pellerator_froz.cpp
@@ -85,15 +85,15 @@ bool CBrokenPelleratorFroz::ActMsg(CActMsg *msg) {
statusMsg._newStatus = 0;
statusMsg.execute("FPickUpHose");
} else {
- _fieldE0 = 0;
+ _exitAction = 0;
bool closeFlag = msg->_action == "Close";
if (msg->_action == "CloseLeft") {
closeFlag = true;
- _fieldE0 = 1;
+ _exitAction = 1;
}
if (msg->_action == "CloseRight") {
closeFlag = true;
- _fieldE0 = 2;
+ _exitAction = 2;
}
if (closeFlag) {
@@ -104,7 +104,7 @@ bool CBrokenPelleratorFroz::ActMsg(CActMsg *msg) {
else
playMovie(72, 84, MOVIE_NOTIFY_OBJECT);
} else {
- switch (_fieldE0) {
+ switch (_exitAction) {
case 1:
changeView(_string2);
break;
@@ -115,7 +115,7 @@ bool CBrokenPelleratorFroz::ActMsg(CActMsg *msg) {
break;
}
- _fieldE0 = 0;
+ _exitAction = 0;
}
}
}
@@ -136,12 +136,12 @@ bool CBrokenPelleratorFroz::MovieEndMsg(CMovieEndMsg *msg) {
statusMsg.execute("FPickUpHose");
}
- if (_fieldE0 == 1) {
+ if (_exitAction == 1) {
changeView(_string2);
- _fieldE0 = 0;
- } else if (_fieldE0 == 2) {
+ _exitAction = 0;
+ } else if (_exitAction == 2) {
changeView(_string3);
- _fieldE0 = 0;
+ _exitAction = 0;
}
return true;
diff --git a/engines/titanic/game/cage.cpp b/engines/titanic/game/cage.cpp
index bbac384cea..11f5837e4c 100644
--- a/engines/titanic/game/cage.cpp
+++ b/engines/titanic/game/cage.cpp
@@ -53,7 +53,7 @@ void CCage::load(SimpleFile *file) {
}
bool CCage::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
- if (CParrot::_v4 && !CParrot::_v5) {
+ if (CParrot::_state != PARROT_IN_CAGE && !CParrot::_v5) {
CActMsg actMsg(_open ? "Open" : "Shut");
actMsg.execute(this);
}
@@ -88,7 +88,7 @@ bool CCage::MovieEndMsg(CMovieEndMsg *msg) {
_open = clipExistsByEnd("Shut", msg->_endFrame);
CStatusChangeMsg statusMsg;
- statusMsg._newStatus = _open ? 1 : (CParrot::_v4 == 0 ? 1 : 0);
+ statusMsg._newStatus = _open ? 1 : (CParrot::_state == PARROT_IN_CAGE ? 1 : 0);
statusMsg.execute("PerchCoreHolder");
return true;
@@ -96,14 +96,14 @@ bool CCage::MovieEndMsg(CMovieEndMsg *msg) {
bool CCage::PreEnterViewMsg(CPreEnterViewMsg *msg) {
loadSurface();
- _open = CParrot::_v4 != 0;
+ _open = CParrot::_state != PARROT_IN_CAGE;
loadFrame(_open ? 8 : 0);
return true;
}
bool CCage::MouseMoveMsg(CMouseMoveMsg *msg) {
- _cursorId = CParrot::_v4 && !CParrot::_v5 ? CURSOR_ACTIVATE : CURSOR_ARROW;
+ _cursorId = CParrot::_state != PARROT_IN_CAGE && !CParrot::_v5 ? CURSOR_ACTIVATE : CURSOR_ARROW;
return true;
}
diff --git a/engines/titanic/game/fan_control.cpp b/engines/titanic/game/fan_control.cpp
index b3c3b2e816..ca664764ea 100644
--- a/engines/titanic/game/fan_control.cpp
+++ b/engines/titanic/game/fan_control.cpp
@@ -32,17 +32,17 @@ BEGIN_MESSAGE_MAP(CFanControl, CGameObject)
ON_MESSAGE(TimerMsg)
END_MESSAGE_MAP()
-CFanControl::CFanControl() : CGameObject(), _state(-1),
- _enabled(false), _fieldC4(0), _fieldC8(false), _fieldCC(0) {
+CFanControl::CFanControl() : CGameObject(), _state(-1), _enabled(false),
+ _starlings(false), _fanOn(false), _starlingsDying(false) {
}
void CFanControl::save(SimpleFile *file, int indent) {
file->writeNumberLine(1, indent);
file->writeNumberLine(_state, indent);
file->writeNumberLine(_enabled, indent);
- file->writeNumberLine(_fieldC4, indent);
- file->writeNumberLine(_fieldC8, indent);
- file->writeNumberLine(_fieldCC, indent);
+ file->writeNumberLine(_starlings, indent);
+ file->writeNumberLine(_fanOn, indent);
+ file->writeNumberLine(_starlingsDying, indent);
CGameObject::save(file, indent);
}
@@ -51,9 +51,9 @@ void CFanControl::load(SimpleFile *file) {
file->readNumber();
_state = file->readNumber();
_enabled = file->readNumber();
- _fieldC4 = file->readNumber();
- _fieldC8 = file->readNumber();
- _fieldCC = file->readNumber();
+ _starlings = file->readNumber();
+ _fanOn = file->readNumber();
+ _starlingsDying = file->readNumber();
CGameObject::load(file);
}
@@ -64,22 +64,23 @@ bool CFanControl::ActMsg(CActMsg *msg) {
else if (msg->_action == "DisableObject")
_enabled = false;
else if (msg->_action == "StarlingsDead") {
- _fieldC4 = 0;
+ _starlings = false;
decTransitions();
- _fieldCC = 0;
+ _starlingsDying = false;
}
return true;
}
bool CFanControl::StatusChangeMsg(CStatusChangeMsg *msg) {
- if (!_fieldCC) {
+ if (!_starlingsDying) {
playSound("z#42.wav");
if (_enabled) {
switch (msg->_newStatus) {
case 1:
- _fieldC8 = !_fieldC8;
- if (_fieldC8) {
+ // Fan Power button
+ _fanOn = !_fanOn;
+ if (_fanOn) {
playMovie(6, 8, 0);
_state = 0;
} else {
@@ -104,7 +105,8 @@ bool CFanControl::StatusChangeMsg(CStatusChangeMsg *msg) {
break;
case 2:
- if (_fieldC8) {
+ // Fan Speed button
+ if (_fanOn) {
_state = (_state + 1) % 4;
switch (_state) {
case 0:
@@ -115,9 +117,10 @@ bool CFanControl::StatusChangeMsg(CStatusChangeMsg *msg) {
playMovie(8, 12, 0);
break;
case 2:
- if (_fieldC4) {
+ if (_starlings) {
+ // It's puret time
incTransitions();
- _fieldCC = 1;
+ _starlingsDying = true;
playMovie(12, 18, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
} else {
playMovie(12, 18, 0);
@@ -146,16 +149,20 @@ bool CFanControl::StatusChangeMsg(CStatusChangeMsg *msg) {
bool CFanControl::EnterViewMsg(CEnterViewMsg *msg) {
switch (_state) {
- case 0:
+ case -1:
+ // Fan off
loadFrame(6);
break;
- case 1:
+ case 0:
+ // Low speed
loadFrame(4);
break;
- case 2:
+ case 1:
+ // Medium speed
loadFrame(0);
break;
- case 3:
+ case 2:
+ // High speed
loadFrame(18);
break;
default:
diff --git a/engines/titanic/game/fan_control.h b/engines/titanic/game/fan_control.h
index 1f7402db12..063243c164 100644
--- a/engines/titanic/game/fan_control.h
+++ b/engines/titanic/game/fan_control.h
@@ -37,9 +37,9 @@ class CFanControl : public CGameObject {
public:
int _state;
bool _enabled;
- int _fieldC4;
- bool _fieldC8;
- int _fieldCC;
+ bool _starlings;
+ bool _fanOn;
+ bool _starlingsDying;
public:
CLASSDEF;
CFanControl();
diff --git a/engines/titanic/game/hammer_dispensor.cpp b/engines/titanic/game/hammer_dispensor.cpp
index bc6a3d5ad8..2450868b14 100644
--- a/engines/titanic/game/hammer_dispensor.cpp
+++ b/engines/titanic/game/hammer_dispensor.cpp
@@ -32,13 +32,13 @@ BEGIN_MESSAGE_MAP(CHammerDispensor, CBackground)
END_MESSAGE_MAP()
CHammerDispensor::CHammerDispensor() : CBackground(),
- _fieldE0(false), _fieldE4(true), _state(0) {
+ _isOpen(false), _panUp(true), _state(0) {
}
void CHammerDispensor::save(SimpleFile *file, int indent) {
file->writeNumberLine(1, indent);
- file->writeNumberLine(_fieldE0, indent);
- file->writeNumberLine(_fieldE4, indent);
+ file->writeNumberLine(_isOpen, indent);
+ file->writeNumberLine(_panUp, indent);
file->writeNumberLine(_state, indent);
CBackground::save(file, indent);
@@ -46,44 +46,44 @@ void CHammerDispensor::save(SimpleFile *file, int indent) {
void CHammerDispensor::load(SimpleFile *file) {
file->readNumber();
- _fieldE0 = file->readNumber();
- _fieldE4 = file->readNumber();
+ _isOpen = file->readNumber();
+ _panUp = file->readNumber();
_state = file->readNumber();
CBackground::load(file);
}
bool CHammerDispensor::ActMsg(CActMsg *msg) {
- if (msg->_action == "DispenseHammer" && !_fieldE0) {
+ if (msg->_action == "DispenseHammer" && !_isOpen) {
_state = 1;
playMovie(15, 31, MOVIE_NOTIFY_OBJECT);
- _fieldE0 = true;
+ _isOpen = true;
}
- if (msg->_action == "HammerTaken" && _fieldE0)
+ if (msg->_action == "HammerTaken" && _isOpen)
loadFrame(32);
return true;
}
bool CHammerDispensor::EnterViewMsg(CEnterViewMsg *msg) {
- if (_fieldE4) {
+ if (_panUp) {
playMovie(7, 14, 0);
- _fieldE4 = false;
+ _panUp = false;
}
return true;
}
bool CHammerDispensor::LeaveViewMsg(CLeaveViewMsg *msg) {
- _fieldE4 = true;
- _fieldE0 = 0;
- _state = 2;
-
- if (_fieldE0)
+ if (_isOpen)
playMovie(32, 50, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
else
playMovie(0, 7, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+
+ _panUp = true;
+ _isOpen = false;
+ _state = 2;
return true;
}
diff --git a/engines/titanic/game/hammer_dispensor.h b/engines/titanic/game/hammer_dispensor.h
index 2383a3349e..f93f4141ab 100644
--- a/engines/titanic/game/hammer_dispensor.h
+++ b/engines/titanic/game/hammer_dispensor.h
@@ -34,8 +34,8 @@ class CHammerDispensor : public CBackground {
bool LeaveViewMsg(CLeaveViewMsg *msg);
bool MovieEndMsg(CMovieEndMsg *msg);
private:
- bool _fieldE0;
- bool _fieldE4;
+ bool _isOpen;
+ bool _panUp;
int _state;
public:
CLASSDEF;
diff --git a/engines/titanic/game/hammer_dispensor_button.cpp b/engines/titanic/game/hammer_dispensor_button.cpp
index 89d37a0476..661a92eb17 100644
--- a/engines/titanic/game/hammer_dispensor_button.cpp
+++ b/engines/titanic/game/hammer_dispensor_button.cpp
@@ -34,36 +34,36 @@ BEGIN_MESSAGE_MAP(CHammerDispensorButton, CStartAction)
END_MESSAGE_MAP()
CHammerDispensorButton::CHammerDispensorButton() : CStartAction(),
- _fieldF8(0), _fieldFC(0), _field100(0), _btnPos(Point(56, 6)),
- _field10C(nullptr), _field110(0) {
+ _active(false), _open(false), _hitCounter(0), _btnPos(Point(56, 6)),
+ _perch(nullptr), _hammerTaken(0) {
}
void CHammerDispensorButton::save(SimpleFile *file, int indent) {
file->writeNumberLine(1, indent);
- file->writeNumberLine(_fieldF8, indent);
- file->writeNumberLine(_fieldFC, indent);
- file->writeNumberLine(_field100, indent);
+ file->writeNumberLine(_active, indent);
+ file->writeNumberLine(_open, indent);
+ file->writeNumberLine(_hitCounter, indent);
file->writeNumberLine(_btnPos.x, indent);
file->writeNumberLine(_btnPos.y, indent);
- file->writeNumberLine(_field110, indent);
+ file->writeNumberLine(_hammerTaken, indent);
CStartAction::save(file, indent);
}
void CHammerDispensorButton::load(SimpleFile *file) {
file->readNumber();
- _fieldF8 = file->readNumber();
- _fieldFC = file->readNumber();
- _field100 = file->readNumber();
+ _active = file->readNumber();
+ _open = file->readNumber();
+ _hitCounter = file->readNumber();
_btnPos.x = file->readNumber();
_btnPos.y = file->readNumber();
- _field110 = file->readNumber();
+ _hammerTaken = file->readNumber();
CStartAction::load(file);
}
bool CHammerDispensorButton::PuzzleSolvedMsg(CPuzzleSolvedMsg *msg) {
- _fieldF8 = 1;
+ _active = true;
return true;
}
@@ -75,54 +75,47 @@ bool CHammerDispensorButton::MouseButtonUpMsg(CMouseButtonUpMsg *msg) {
bool CHammerDispensorButton::ActMsg(CActMsg *msg) {
if (msg->_action == "HammerTaken")
- _field110 = true;
+ _hammerTaken = true;
return true;
}
bool CHammerDispensorButton::FrameMsg(CFrameMsg *msg) {
- if (!_fieldF8)
+ if (!_active)
return true;
- if (!_field10C) {
+ if (!_perch) {
CGameObject *obj = getDraggingObject();
if (obj) {
if (obj->isEquals("Perch") && getView() == findView())
- _field10C = obj;
+ _perch = static_cast<CPerch *>(obj);
}
}
- if (_field10C) {
- Point pt(_btnPos.x + _bounds.left, _btnPos.y + _bounds.top);
+ if (_perch) {
+ Point pt(_btnPos.x + _perch->_bounds.left, _btnPos.y + _perch->_bounds.top);
bool flag = checkPoint(pt, true);
- switch (_fieldFC) {
- case 0:
+ if (!_open) {
if (flag) {
playSound("z#93.wav");
- if (++_field100 == 5) {
- if (!_field110) {
+ if (++_hitCounter == 5) {
+ if (!_hammerTaken) {
CActMsg actMsg(_msgAction);
actMsg.execute(_msgTarget);
}
setVisible(false);
- _fieldF8 = 0;
- _field100 = 0;
+ _active = false;
+ _hitCounter = 0;
}
- _fieldFC = 1;
+ _open = true;
}
- break;
-
- case 1:
+ } else {
if (!flag) {
- _fieldFC = 0;
- ++_field100;
+ _open = false;
+ ++_hitCounter;
}
- break;
-
- default:
- break;
}
}
@@ -130,15 +123,15 @@ bool CHammerDispensorButton::FrameMsg(CFrameMsg *msg) {
}
bool CHammerDispensorButton::LeaveViewMsg(CLeaveViewMsg *msg) {
- _field10C = nullptr;
- _field100 = 0;
- _fieldFC = 0;
+ _perch = nullptr;
+ _hitCounter = 0;
+ _open = false;
return true;
}
bool CHammerDispensorButton::EnterViewMsg(CEnterViewMsg *msg) {
setVisible(true);
- _fieldF8 = 1;
+ _active = true;
return true;
}
diff --git a/engines/titanic/game/hammer_dispensor_button.h b/engines/titanic/game/hammer_dispensor_button.h
index f497b9dae1..0194021943 100644
--- a/engines/titanic/game/hammer_dispensor_button.h
+++ b/engines/titanic/game/hammer_dispensor_button.h
@@ -24,6 +24,7 @@
#define TITANIC_HAMMER_DISPENSOR_BUTTON_H
#include "titanic/game/start_action.h"
+#include "titanic/carry/perch.h"
namespace Titanic {
@@ -36,12 +37,12 @@ class CHammerDispensorButton : public CStartAction {
bool LeaveViewMsg(CLeaveViewMsg *msg);
bool EnterViewMsg(CEnterViewMsg *msg);
private:
- int _fieldF8;
- int _fieldFC;
- int _field100;
+ bool _active;
+ bool _open;
+ int _hitCounter;
Point _btnPos;
- CGameObject *_field10C;
- int _field110;
+ CPerch *_perch;
+ bool _hammerTaken;
public:
CLASSDEF;
CHammerDispensorButton();
diff --git a/engines/titanic/game/maitred/maitred_arm_holder.cpp b/engines/titanic/game/maitred/maitred_arm_holder.cpp
index 75d95640d2..51c19561a7 100644
--- a/engines/titanic/game/maitred/maitred_arm_holder.cpp
+++ b/engines/titanic/game/maitred/maitred_arm_holder.cpp
@@ -40,7 +40,7 @@ void CMaitreDArmHolder::load(SimpleFile *file) {
}
bool CMaitreDArmHolder::MaitreDArmHolder(CMaitreDArmHolder *msg) {
- _fieldF4 = 0;
+ _dropEnabled = false;
return true;
}
diff --git a/engines/titanic/game/missiveomat.cpp b/engines/titanic/game/missiveomat.cpp
index 8f7845bc3f..fa0a9d7c74 100644
--- a/engines/titanic/game/missiveomat.cpp
+++ b/engines/titanic/game/missiveomat.cpp
@@ -34,8 +34,8 @@ BEGIN_MESSAGE_MAP(CMissiveOMat, CGameObject)
ON_MESSAGE(LeaveViewMsg)
END_MESSAGE_MAP()
-CMissiveOMat::CMissiveOMat() : CGameObject(), _mode(1),
- _totalMessages(0), _messageNum(0), _personIndex(-1) {
+CMissiveOMat::CMissiveOMat() : CGameObject(), _mode(MMODE_USERNAME),
+ _totalMessages(0), _messageNum(0), _account(NO_ACCOUNT) {
// Load data for the messages, their from and to names
loadArray(_welcomeMessages, "TEXT/MISSIVEOMAT/WELCOME", 3);
loadArray(_messages, "TEXT/MISSIVEOMAT/MESSAGES", 58);
@@ -55,129 +55,150 @@ void CMissiveOMat::save(SimpleFile *file, int indent) {
file->writeNumberLine(_mode, indent);
file->writeNumberLine(_totalMessages, indent);
file->writeNumberLine(_messageNum, indent);
- file->writeQuotedLine(_string1, indent);
- file->writeQuotedLine(_string2, indent);
- file->writeNumberLine(_personIndex, indent);
+ file->writeQuotedLine(_username, indent);
+ file->writeQuotedLine(_password, indent);
+ file->writeNumberLine(_account, indent);
CGameObject::save(file, indent);
}
void CMissiveOMat::load(SimpleFile *file) {
file->readNumber();
- _mode = file->readNumber();
+ _mode = (MissiveOMatMode)file->readNumber();
_totalMessages = file->readNumber();
_messageNum = file->readNumber();
- _string1 = file->readString();
- _string2 = file->readString();
- _personIndex = file->readNumber();
+ _username = file->readString();
+ _password = file->readString();
+ _account = (MissiveOMatAccount)file->readNumber();
CGameObject::load(file);
}
bool CMissiveOMat::EnterViewMsg(CEnterViewMsg *msg) {
- CMissiveOMatActionMsg actionMsg(9);
+ CMissiveOMatActionMsg actionMsg(MESSAGE_9);
actionMsg.execute(this);
return true;
}
bool CMissiveOMat::KeyCharMsg(CKeyCharMsg *msg) {
CTreeItem *loginControl = findRoom()->findByName("MissiveOMat Login Control");
- CTreeItem *welcome = findRoom()->findByName("MissiveOMat Welcome");
- CTreeItem *scrollUp = findRoom()->findByName("MissiveOMat ScrollUp Button");
CEditControlMsg editMsg;
switch (_mode) {
- case 1: {
+ case MMODE_USERNAME:
+ if (!msg->_key)
+ return true;
+
playSound("z#228.wav");
- editMsg._mode = 6;
+ editMsg._mode = EDIT_KEYPRESS;
editMsg._param = msg->_key;
editMsg.execute(loginControl);
if (editMsg._param == 1000) {
- editMsg._mode = 3;
+ // Get the username
+ editMsg._mode = EDIT_GET_TEXT;
editMsg.execute(loginControl);
+ _username = editMsg._text;
+ _username.toLowercase();
- _string1 = editMsg._text;
- if (!_string1.empty()) {
+ // Next ask for the password
+ if (!_username.empty()) {
loadFrame(2);
- _mode = 2;
+ _mode = MMODE_PASSWORD;
- editMsg._mode = 1;
+ editMsg._mode = EDIT_CLEAR;
editMsg.execute(loginControl);
- editMsg._mode = 10;
+ editMsg._mode = EDIT_BORDERS;
editMsg._param = 24;
editMsg.execute(loginControl);
}
}
break;
- }
- case 2: {
+ case MMODE_PASSWORD:
+ if (!msg->_key)
+ return true;
+
playSound("z#228.wav");
- editMsg._mode = 6;
+ editMsg._mode = EDIT_KEYPRESS;
editMsg._param = msg->_key;
editMsg.execute(loginControl);
- _string2 = editMsg._text;
- if (_string1 == "Droot Scraliontis") {
- _string1 = "Scraliontis";
- } else if (_string1 == "Antar Brobostigon") {
- _string1 = "Brobostigon";
- } else if (_string1 == "colin") {
- _string1 = "Leovinus";
- }
-
- bool flag = false;
- if (_string1 == "Leovinus") {
- if (_string2 == "Other") {
- flag = true;
- _personIndex = 0;
- }
- } else if (_string1 == "Scraliontis") {
- if (_string2 == "This") {
- flag = true;
- _personIndex = 1;
+ if (editMsg._param == 1000) {
+ // Get the password
+ editMsg._mode = EDIT_GET_TEXT;
+ editMsg.execute(loginControl);
+ _password = editMsg._text;
+ _password.toLowercase();
+
+ // Handle special variations of the names
+ if (_username == "droot scraliontis") {
+ _username = "scraliontis";
+ } else if (_username == "antar brobostigon") {
+ _username = "brobostigon";
+ } else if (_username == "colin") {
+ _username = "leovinus";
}
- } else if (_string1 == "Brobostigon") {
- if (_string2 == "That") {
- flag = true;
- _personIndex = 2;
+
+ // Check whether a valid username and password has been entered
+ static const char *const PASSWORDS_EN[3] = { "other", "this", "that" };
+ static const char *const PASSWORDS_DE[3] = { "t'ok", "t'ik", "t'ak" };
+ static const char *const *pwds = g_vm->isGerman() ? PASSWORDS_DE : PASSWORDS_EN;
+
+ bool validFlag = false;
+ if ((_username == "leovinus" && _password == pwds[0]) ||
+ (_username == "scummvm")) {
+ validFlag = true;
+ _account = LEOVINUS;
+ } else if (_username == "scraliontis" && _password == pwds[1]) {
+ validFlag = true;
+ _account = SCRALIONTIS;
+ } else if (_username == "brobostigon" && _password == pwds[2]) {
+ validFlag = true;
+ _account = BROBOSTIGON;
}
- }
- if (flag) {
- _mode = 4;
- loadFrame(4);
- editMsg._mode = 1;
- editMsg.execute(loginControl);
+ if (validFlag) {
+ // Credentials were valid, so log in
+ _mode = MMODE_LOGGED_IN;
+ loadFrame(4);
+ editMsg._mode = EDIT_CLEAR;
+ editMsg.execute(loginControl);
- getTextCursor()->hide();
- editMsg._mode = 13;
- editMsg.execute(loginControl);
+ CRoomItem *room = findRoom();
+ CTreeItem *welcome = room->findByName("MissiveOMat Welcome");
+ CTreeItem *scrollUp = room->findByName("MissiveOMat ScrollUp Button");
+ CTreeItem *scrollDown = room->findByName("MissiveOMat ScrollDown Button");
+ CTreeItem *ok = room->findByName("MissiveOMat OK Button");
- editMsg._mode = 12;
- editMsg.execute(welcome);
+ getTextCursor()->hide();
+ editMsg._mode = EDIT_HIDE;
+ editMsg.execute(loginControl);
- editMsg._mode = 2;
- editMsg._text = _welcomeMessages[_personIndex];
- editMsg.execute(welcome);
+ editMsg._mode = EDIT_SHOW;
+ editMsg.execute(welcome);
- editMsg._mode = 12;
- editMsg._text = "MissiveOMat OK Button";
- editMsg.execute(welcome);
- editMsg.execute(scrollUp);
- } else {
- _mode = 3;
- loadFrame(3);
- addTimer(1500);
+ editMsg._mode = EDIT_SET_TEXT;
+ editMsg._text = _welcomeMessages[_account];
+ editMsg.execute(welcome);
- editMsg._mode = 1;
- editMsg.execute(loginControl);
+ editMsg._mode = EDIT_SHOW;
+ editMsg.execute(ok);
+ editMsg.execute(scrollUp);
+ editMsg.execute(scrollDown);
+ } else {
+ // Credentials were invalid, so access denied
+ _mode = MMODE_DENIED;
+ loadFrame(3);
+ addTimer(1500);
+
+ editMsg._mode = EDIT_CLEAR;
+ editMsg.execute(loginControl);
- getTextCursor()->hide();
+ getTextCursor()->hide();
+ }
}
break;
- }
default:
break;
@@ -187,10 +208,14 @@ bool CMissiveOMat::KeyCharMsg(CKeyCharMsg *msg) {
}
bool CMissiveOMat::TimerMsg(CTimerMsg *msg) {
- if (_mode == 3) {
+ if (_mode == MMODE_DENIED) {
+ // Reset back to asking for a login username
+ _mode = MMODE_USERNAME;
+ loadFrame(1);
+
CTreeItem *loginControl = findRoom()->findByName("MissiveOMat Login Control");
CEditControlMsg editMsg;
- editMsg._mode = 10;
+ editMsg._mode = EDIT_BORDERS;
editMsg._param = 8;
editMsg.execute(loginControl);
}
@@ -199,16 +224,17 @@ bool CMissiveOMat::TimerMsg(CTimerMsg *msg) {
}
bool CMissiveOMat::MissiveOMatActionMsg(CMissiveOMatActionMsg *msg) {
- CTreeItem *welcome = findByName("MissiveOMat Welcome");
+ CGameObject *welcome = static_cast<CGameObject *>(findByName("MissiveOMat Welcome"));
switch (msg->_action) {
case MESSAGE_SHOW: {
- CTreeItem *btnOk = findRoom()->findByName("MissiveOMat OK Button");
- CTreeItem *btnNext = findRoom()->findByName("MissiveOMat Next Button");
- CTreeItem *btnPrev = findRoom()->findByName("MissiveOMat Prev Button");
- CTreeItem *btnLogout = findRoom()->findByName("MissiveOMat Logout Button");
+ CRoomItem *room = findRoom();
+ CTreeItem *btnOk = room->findByName("MissiveOMat OK Button");
+ CTreeItem *btnNext = room->findByName("MissiveOMat Next Button");
+ CTreeItem *btnPrev = room->findByName("MissiveOMat Prev Button");
+ CTreeItem *btnLogout = room->findByName("MissiveOMat Logout Button");
- _mode = MESSAGE_5;
+ _mode = MMODE_5;
CVisibleMsg visibleMsg;
visibleMsg._visible = false;
visibleMsg.execute(btnOk);
@@ -219,7 +245,7 @@ bool CMissiveOMat::MissiveOMatActionMsg(CMissiveOMatActionMsg *msg) {
_messageNum = 0;
_totalMessages = 0;
- CString *strP = &_messages[_personIndex * 19];
+ CString *strP = &_messages[_account * 19];
for (_totalMessages = 0; !strP->empty(); ++strP, ++_totalMessages)
;
@@ -256,58 +282,58 @@ bool CMissiveOMat::MissiveOMatActionMsg(CMissiveOMatActionMsg *msg) {
case MESSAGE_DOWN:
if (welcome)
- scrollTextDown();
+ welcome->scrollTextDown();
break;
case MESSAGE_UP:
if (welcome)
- scrollTextUp();
+ welcome->scrollTextUp();
break;
case REDRAW_MESSAGE:
if (welcome) {
CString str = CString::format(
"Missive %d of %d.\nFrom: %s\nTo: %s\n\n%s\n",
- _messageNum + 1, _totalMessages, _from[_messageNum].c_str(),
- _to[_messageNum].c_str(), _messages[_messageNum].c_str());
+ _messageNum + 1, _totalMessages, _from[_account * 19 + _messageNum].c_str(),
+ _to[_account * 19 + _messageNum].c_str(), _messages[_account * 19 + _messageNum].c_str());
- setText(str);
+ welcome->setText(str);
}
break;
case MESSAGE_9: {
loadFrame(1);
- _mode = MESSAGE_NONE;
- _personIndex = -1;
-
- static const char *const WIDGETS[7] = {
- "MissiveOMat Login Control", "MissiveOMat OK Button",
- "MissiveOMat Next Button", "MissiveOMat Prev Button",
- "MissiveOMat Logout Button", "MissiveOMat ScrollDown Button",
- "MissiveOMat ScrollUp Button"
+ _mode = MMODE_USERNAME;
+ _account = NO_ACCOUNT;
+
+ static const char *const WIDGETS[8] = {
+ "MissiveOMat Login Control", "MissiveOMat Welcome",
+ "MissiveOMat OK Button", "MissiveOMat Next Button",
+ "MissiveOMat Prev Button", "MissiveOMat Logout Button",
+ "MissiveOMat ScrollDown Button", "MissiveOMat ScrollUp Button"
};
CEditControlMsg editMsg;
- for (int idx = 0; idx < 7; ++idx) {
- editMsg._mode = 0;
+ for (int idx = 0; idx < 8; ++idx) {
+ editMsg._mode = EDIT_INIT;
editMsg._param = 12;
editMsg.execute(WIDGETS[idx]);
- editMsg._mode = 1;
+ editMsg._mode = EDIT_CLEAR;
editMsg.execute(WIDGETS[idx]);
- editMsg._mode = 13;
+ editMsg._mode = EDIT_HIDE;
editMsg.execute(WIDGETS[idx]);
}
- editMsg._mode = 12;
+ editMsg._mode = EDIT_SHOW;
editMsg.execute("MissiveOMat Login Control");
- editMsg._mode = 10;
+ editMsg._mode = EDIT_BORDERS;
editMsg._param = 8;
editMsg.execute("MissiveOMat Login Control");
- editMsg._mode = 8;
+ editMsg._mode = EDIT_SHOW_CURSOR;
editMsg.execute("MissiveOMat Login Control");
- _string1.clear();
- _string2.clear();
+ _username.clear();
+ _password.clear();
break;
}
@@ -320,7 +346,7 @@ bool CMissiveOMat::MissiveOMatActionMsg(CMissiveOMatActionMsg *msg) {
bool CMissiveOMat::LeaveViewMsg(CLeaveViewMsg *msg) {
CEditControlMsg editMsg;
- editMsg._mode = 9;
+ editMsg._mode = EDIT_HIDE_CURSOR;
editMsg.execute("MissiveOMat Login Control");
petShowCursor();
diff --git a/engines/titanic/game/missiveomat.h b/engines/titanic/game/missiveomat.h
index 9810fcc403..c8441edff2 100644
--- a/engines/titanic/game/missiveomat.h
+++ b/engines/titanic/game/missiveomat.h
@@ -27,10 +27,16 @@
namespace Titanic {
-enum MissiveOMatAction {
- MESSAGE_NONE = 1, MESSAGE_SHOW = 2, NEXT_MESSAGE = 3, PRIOR_MESSAGE = 4,
- MESSAGE_5 = 5, MESSAGE_DOWN = 6, MESSAGE_UP = 7, REDRAW_MESSAGE = 8,
- MESSAGE_9 = 9
+enum MissiveOMatMode {
+ MMODE_USERNAME = 1,
+ MMODE_PASSWORD = 2,
+ MMODE_DENIED = 3,
+ MMODE_LOGGED_IN = 4,
+ MMODE_5 = 5
+};
+
+enum MissiveOMatAccount {
+ NO_ACCOUNT = -1, LEOVINUS = 0, SCRALIONTIS = 1, BROBOSTIGON = 2
};
class CMissiveOMat : public CGameObject {
@@ -48,12 +54,12 @@ private:
private:
void loadArray(CString *arr, const CString &resName, int count);
public:
- int _mode;
+ MissiveOMatMode _mode;
int _totalMessages;
int _messageNum;
- CString _string1;
- CString _string2;
- int _personIndex;
+ CString _username;
+ CString _password;
+ MissiveOMatAccount _account;
public:
CLASSDEF;
CMissiveOMat();
diff --git a/engines/titanic/game/missiveomat_button.cpp b/engines/titanic/game/missiveomat_button.cpp
index b7ad7f8f6f..8c1f6c51c6 100644
--- a/engines/titanic/game/missiveomat_button.cpp
+++ b/engines/titanic/game/missiveomat_button.cpp
@@ -40,7 +40,7 @@ void CMissiveOMatButton::save(SimpleFile *file, int indent) {
void CMissiveOMatButton::load(SimpleFile *file) {
file->readNumber();
- _buttonId = file->readNumber();
+ _buttonId = (MissiveOMatAction)file->readNumber();
CEditControl::load(file);
}
diff --git a/engines/titanic/game/missiveomat_button.h b/engines/titanic/game/missiveomat_button.h
index 6dbfd4cd56..b029f6ce85 100644
--- a/engines/titanic/game/missiveomat_button.h
+++ b/engines/titanic/game/missiveomat_button.h
@@ -24,6 +24,7 @@
#define TITANIC_MISSIVEOMAT_BUTTON_H
#include "titanic/gfx/edit_control.h"
+#include "titanic/messages/messages.h"
namespace Titanic {
@@ -33,10 +34,10 @@ class CMissiveOMatButton : public CEditControl {
bool VisibleMsg(CVisibleMsg *msg);
bool MouseDoubleClickMsg(CMouseDoubleClickMsg *msg);
public:
- int _buttonId;
+ MissiveOMatAction _buttonId;
public:
CLASSDEF;
- CMissiveOMatButton() : CEditControl(), _buttonId(2) {}
+ CMissiveOMatButton() : CEditControl(), _buttonId(MESSAGE_SHOW) {}
/**
* Save the data for the class to file
diff --git a/engines/titanic/game/nose_holder.cpp b/engines/titanic/game/nose_holder.cpp
index ac6c10dafd..d00c7b372e 100644
--- a/engines/titanic/game/nose_holder.cpp
+++ b/engines/titanic/game/nose_holder.cpp
@@ -33,25 +33,25 @@ BEGIN_MESSAGE_MAP(CNoseHolder, CDropTarget)
END_MESSAGE_MAP()
CNoseHolder::CNoseHolder() : CDropTarget(), _dragObject(nullptr),
- _field11C(0) {
+ _draggingFeather(false) {
}
void CNoseHolder::save(SimpleFile *file, int indent) {
file->writeNumberLine(1, indent);
- file->writeNumberLine(_field11C, indent);
+ file->writeNumberLine(_draggingFeather, indent);
CDropTarget::save(file, indent);
}
void CNoseHolder::load(SimpleFile *file) {
file->readNumber();
- _field11C = file->readNumber();
+ _draggingFeather = file->readNumber();
CDropTarget::load(file);
}
bool CNoseHolder::ActMsg(CActMsg *msg) {
- if (msg->_action == "Sneeze" && !_itemName.empty() && _fieldF4) {
+ if (msg->_action == "Sneeze" && !_itemName.empty() && _dropEnabled) {
CProximity prox;
prox._positioningMode = POSMODE_VECTOR;
playSound("z#35.wav", prox);
@@ -78,13 +78,12 @@ bool CNoseHolder::FrameMsg(CFrameMsg *msg) {
}
if (_dragObject) {
- if (!checkPoint(Point(_dragObject->_bounds.left,
- _dragObject->_bounds.top))) {
- _field11C = false;
- } else if (!_field11C) {
+ if (!checkPoint(Point(_dragObject->_bounds.left, _dragObject->_bounds.top), true)) {
+ _draggingFeather = false;
+ } else if (!_draggingFeather) {
CActMsg actMsg("Sneeze");
actMsg.execute(this);
- _field11C = true;
+ _draggingFeather = true;
}
}
@@ -92,9 +91,9 @@ bool CNoseHolder::FrameMsg(CFrameMsg *msg) {
}
bool CNoseHolder::LeaveViewMsg(CLeaveViewMsg *msg) {
- _field11C = false;
+ _draggingFeather = false;
_dragObject = nullptr;
- if (_fieldF4) {
+ if (_dropEnabled) {
loadFrame(_dropFrame);
setVisible(false);
}
@@ -103,7 +102,7 @@ bool CNoseHolder::LeaveViewMsg(CLeaveViewMsg *msg) {
}
bool CNoseHolder::MovieEndMsg(CMovieEndMsg *msg) {
- if (_fieldF4) {
+ if (_dropEnabled) {
loadFrame(_dropFrame);
setVisible(false);
}
@@ -112,7 +111,7 @@ bool CNoseHolder::MovieEndMsg(CMovieEndMsg *msg) {
}
bool CNoseHolder::EnterViewMsg(CEnterViewMsg *msg) {
- if (_fieldF4)
+ if (_dropEnabled)
setVisible(false);
return CDropTarget::EnterViewMsg(msg);
diff --git a/engines/titanic/game/nose_holder.h b/engines/titanic/game/nose_holder.h
index 7b3fbba625..ef20b6f78e 100644
--- a/engines/titanic/game/nose_holder.h
+++ b/engines/titanic/game/nose_holder.h
@@ -36,7 +36,7 @@ class CNoseHolder : public CDropTarget {
bool EnterViewMsg(CEnterViewMsg *msg);
private:
CGameObject *_dragObject;
- int _field11C;
+ bool _draggingFeather;
public:
CLASSDEF;
CNoseHolder();
diff --git a/engines/titanic/game/parrot/parrot_nut_eater.cpp b/engines/titanic/game/parrot/parrot_nut_eater.cpp
index 49b8de509f..b9697d7b61 100644
--- a/engines/titanic/game/parrot/parrot_nut_eater.cpp
+++ b/engines/titanic/game/parrot/parrot_nut_eater.cpp
@@ -66,6 +66,7 @@ bool CParrotNutEater::ReplaceBowlAndNutsMsg(CReplaceBowlAndNutsMsg *msg) {
bool CParrotNutEater::NutPuzzleMsg(CNutPuzzleMsg *msg) {
if (msg->_value == "Jiggle") {
+ setVisible(true);
playMovie(MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
movieEvent(68);
movieEvent(132);
diff --git a/engines/titanic/game/parrot/parrot_perch_holder.cpp b/engines/titanic/game/parrot/parrot_perch_holder.cpp
index 205995cf1c..557f70437a 100644
--- a/engines/titanic/game/parrot/parrot_perch_holder.cpp
+++ b/engines/titanic/game/parrot/parrot_perch_holder.cpp
@@ -48,7 +48,7 @@ bool CParrotPerchHolder::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
if (!CParrot::_v1) {
if (CCage::_open) {
petDisplayMessage(CANNOT_TAKE_CAGE_LOCKED);
- } else if (!CParrot::_v4) {
+ } else if (CParrot::_state == PARROT_IN_CAGE) {
CTrueTalkTriggerActionMsg triggerMsg(280252, 0, 0);
triggerMsg.execute(getRoot(), CParrot::_type,
MSGFLAG_CLASS_DEF | MSGFLAG_BREAK_IF_HANDLED | MSGFLAG_SCAN);
@@ -59,7 +59,7 @@ bool CParrotPerchHolder::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
}
bool CParrotPerchHolder::StatusChangeMsg(CStatusChangeMsg *msg) {
- _fieldF4 = msg->_newStatus;
+ _dropEnabled = msg->_newStatus;
return true;
}
diff --git a/engines/titanic/game/pickup/pick_up_hose.cpp b/engines/titanic/game/pickup/pick_up_hose.cpp
index d07088cefd..442c43f9b0 100644
--- a/engines/titanic/game/pickup/pick_up_hose.cpp
+++ b/engines/titanic/game/pickup/pick_up_hose.cpp
@@ -72,13 +72,13 @@ bool CPickUpHose::MouseDragStartMsg(CMouseDragStartMsg *msg) {
if (hose) {
CVisibleMsg visibleMsg;
- visibleMsg.execute(this);
- moveUnder(view);
+ visibleMsg.execute(hose);
+ hose->moveUnder(view);
CPassOnDragStartMsg passMsg(msg->_mousePos, 1);
passMsg.execute("Hose");
- msg->_dragItem = getRoot()->findByName("Hose");
+ msg->_dragItem = hose;
_cursorId = CURSOR_IGNORE;
CActMsg actMsg("PlayerGetsHose");
@@ -91,7 +91,7 @@ bool CPickUpHose::MouseDragStartMsg(CMouseDragStartMsg *msg) {
bool CPickUpHose::StatusChangeMsg(CStatusChangeMsg *msg) {
_cursorId = msg->_newStatus == 1 ? CURSOR_HAND : CURSOR_IGNORE;
- return true;
+ return CPickUp::StatusChangeMsg(msg);
}
bool CPickUpHose::EnterViewMsg(CEnterViewMsg *msg) {
diff --git a/engines/titanic/game/restaurant_cylinder_holder.cpp b/engines/titanic/game/restaurant_cylinder_holder.cpp
index adf029d8f7..5fb8c97cde 100644
--- a/engines/titanic/game/restaurant_cylinder_holder.cpp
+++ b/engines/titanic/game/restaurant_cylinder_holder.cpp
@@ -71,7 +71,7 @@ bool CRestaurantCylinderHolder::EjectCylinderMsg(CEjectCylinderMsg *msg) {
if (_field118) {
playClip(hasCylinder ? "CloseHolder_Full" : "CloseHolder_Empty",
MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
- _fieldF4 = 1;
+ _dropEnabled = true;
} else {
playClip(hasCylinder ? "OpenHolder_Full" : "OpenHolder_Empty",
MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
@@ -109,7 +109,7 @@ bool CRestaurantCylinderHolder::MovieEndMsg(CMovieEndMsg *msg) {
readyMsg.execute(_target);
} else {
_field118 = true;
- _fieldF4 = false;
+ _dropEnabled = false;
_cursorId = findByName("Phonograph Cylinder") ? _dropCursorId : _dragCursorId;
}
diff --git a/engines/titanic/game/start_action.cpp b/engines/titanic/game/start_action.cpp
index ab356ea1f4..c4f8db8190 100644
--- a/engines/titanic/game/start_action.cpp
+++ b/engines/titanic/game/start_action.cpp
@@ -50,14 +50,13 @@ void CStartAction::load(SimpleFile *file) {
}
bool CStartAction::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
- // Dispatch the desired action to the desired target
- CActMsg actMsg(_msgAction);
- actMsg.execute(_msgTarget);
-
return true;
}
bool CStartAction::MouseButtonUpMsg(CMouseButtonUpMsg *msg) {
+ // Dispatch the desired action to the desired target
+ CActMsg actMsg(_msgAction);
+ actMsg.execute(_msgTarget);
return true;
}
diff --git a/engines/titanic/game/sweet_bowl.cpp b/engines/titanic/game/sweet_bowl.cpp
index 29d8044a85..7a3832e7c2 100644
--- a/engines/titanic/game/sweet_bowl.cpp
+++ b/engines/titanic/game/sweet_bowl.cpp
@@ -48,7 +48,7 @@ bool CSweetBowl::MovieEndMsg(CMovieEndMsg *msg) {
bool CSweetBowl::EnterViewMsg(CEnterViewMsg *msg) {
setVisible(false);
loadSound("b#43.wav");
- playSound("b#42.wav");
+ loadSound("b#42.wav");
return true;
}
diff --git a/engines/titanic/game/television.cpp b/engines/titanic/game/television.cpp
index 390d8553a6..a0499f1d39 100644
--- a/engines/titanic/game/television.cpp
+++ b/engines/titanic/game/television.cpp
@@ -246,7 +246,7 @@ bool CTelevision::MovieEndMsg(CMovieEndMsg *msg) {
debugC(kDebugScripts, "Assigned room - %d", roomFlags);
magazine->addMail(roomFlags);
- magazine->removeMail(roomFlags, roomFlags);
+ magazine->sendMail(roomFlags, roomFlags);
}
loadFrame(561);
diff --git a/engines/titanic/game/tow_parrot_nav.cpp b/engines/titanic/game/tow_parrot_nav.cpp
index 57f1649add..b8a99a5f1b 100644
--- a/engines/titanic/game/tow_parrot_nav.cpp
+++ b/engines/titanic/game/tow_parrot_nav.cpp
@@ -44,7 +44,7 @@ bool CTOWParrotNav::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
actMsg.execute("PerchedParrot");
CString clipString = "_EXIT,36,1,N,9,3,N";
- if (CParrot::_v4)
+ if (CParrot::_state != PARROT_IN_CAGE)
clipString += 'a';
changeView("ParrotLobby.Node 3.N", clipString);
diff --git a/engines/titanic/game_state.cpp b/engines/titanic/game_state.cpp
index 26a4297358..49779ad745 100644
--- a/engines/titanic/game_state.cpp
+++ b/engines/titanic/game_state.cpp
@@ -83,11 +83,11 @@ void CGameState::setMode(GameStateMode newMode) {
_gameManager->lockInputHandler();
if (sm && sm->_mouseCursor)
- sm->_mouseCursor->hide();
+ sm->_mouseCursor->setBusy();
} else if (newMode != GSMODE_CUTSCENE && _mode == GSMODE_CUTSCENE) {
if (sm && sm->_mouseCursor)
- sm->_mouseCursor->show();
+ sm->_mouseCursor->clearBusy();
if (_gameManager)
_gameManager->unlockInputHandler();
diff --git a/engines/titanic/gfx/edit_control.cpp b/engines/titanic/gfx/edit_control.cpp
index 3f3c4d4035..33707f93f6 100644
--- a/engines/titanic/gfx/edit_control.cpp
+++ b/engines/titanic/gfx/edit_control.cpp
@@ -26,15 +26,16 @@ namespace Titanic {
BEGIN_MESSAGE_MAP(CEditControl, CGameObject)
ON_MESSAGE(EditControlMsg)
+ ON_MESSAGE(MouseWheelMsg)
END_MESSAGE_MAP()
-CEditControl::CEditControl() : CGameObject(), _fieldBC(false), _fontNumber(0), _fieldD4(2),
- _textR(0), _textG(0), _textB(0), _fieldF0(0), _fieldF4(0) {
+CEditControl::CEditControl() : CGameObject(), _showCursor(false), _fontNumber(0), _fieldD4(2),
+ _textR(0), _textG(0), _textB(0), _fieldF0(0), _isPassword(false) {
}
void CEditControl::save(SimpleFile *file, int indent) {
file->writeNumberLine(1, indent);
- file->writeNumberLine(_fieldBC, indent);
+ file->writeNumberLine(_showCursor, indent);
file->writeNumberLine(_editLeft, indent);
file->writeNumberLine(_editBottom, indent);
file->writeNumberLine(_editHeight, indent);
@@ -46,14 +47,14 @@ void CEditControl::save(SimpleFile *file, int indent) {
file->writeNumberLine(_textB, indent);
file->writeQuotedLine(_text, indent);
file->writeNumberLine(_fieldF0, indent);
- file->writeNumberLine(_fieldF4, indent);
+ file->writeNumberLine(_isPassword, indent);
CGameObject::save(file, indent);
}
void CEditControl::load(SimpleFile *file) {
file->readNumber();
- _fieldBC = file->readNumber();
+ _showCursor = file->readNumber();
_editLeft = file->readNumber();
_editBottom = file->readNumber();
_editHeight = file->readNumber();
@@ -65,67 +66,68 @@ void CEditControl::load(SimpleFile *file) {
_textB = file->readNumber();
_text = file->readString();
_fieldF0 = file->readNumber();
- _fieldF4 = file->readNumber();
+ _isPassword = file->readNumber();
CGameObject::load(file);
}
bool CEditControl::EditControlMsg(CEditControlMsg *msg) {
switch (msg->_mode) {
- case 0:
- if (!_editLeft) {
- _editHeight = _bounds.height();
- _editBottom = _bounds.bottom;
- _editLeft = _bounds.left + _bounds.width() / 2;
- _maxTextChars = msg->_param;
- setTextFontNumber(_fontNumber);
+ case EDIT_INIT: {
+ // WORKAROUND: Fix original bug where MissiveOMat username & password
+ // text weren't initialised after the first time you use the MissiveOMat
+ _editHeight = _bounds.height();
+ _editBottom = _bounds.bottom;
+ _editLeft = _bounds.left + _bounds.width() / 2;
+ _maxTextChars = msg->_param;
+ setTextFontNumber(_fontNumber);
- CEditControlMsg ctlMsg;
- ctlMsg._mode = 10;
- ctlMsg._param = _fieldD4;
- ctlMsg.execute(this);
+ CEditControlMsg ctlMsg;
+ ctlMsg._mode = EDIT_BORDERS;
+ ctlMsg._param = _fieldD4;
+ ctlMsg.execute(this);
- ctlMsg._mode = 11;
- ctlMsg._textR = _textR;
- ctlMsg._textG = _textG;
- ctlMsg._textB = _textB;
- ctlMsg.execute(this);
- }
+ ctlMsg._mode = EDIT_SET_COLOR;
+ ctlMsg._textR = _textR;
+ ctlMsg._textG = _textG;
+ ctlMsg._textB = _textB;
+ ctlMsg.execute(this);
break;
+ }
- case 1: {
+ case EDIT_CLEAR: {
_text = "";
CEditControlMsg ctlMsg;
- ctlMsg._mode = 14;
+ ctlMsg._mode = EDIT_RENDER;
ctlMsg.execute(this);
break;
}
- case 2: {
+ case EDIT_SET_TEXT: {
_text = msg->_text;
CEditControlMsg ctlMsg;
- ctlMsg._mode = 14;
+ ctlMsg._mode = EDIT_RENDER;
ctlMsg.execute(this);
break;
}
- case 3:
+ case EDIT_GET_TEXT:
msg->_text = _text;
break;
- case 4:
+ case EDIT_LENGTH:
msg->_param = _text.size();
break;
- case 5:
+ case EDIT_MAX_LENGTH:
_maxTextChars = msg->_param;
break;
- case 6:
+ case EDIT_KEYPRESS:
if (msg->_param == 8 && !_text.empty()) {
_text = _text.left(_text.size() - 1);
CEditControlMsg ctlMsg;
- ctlMsg._mode = 14;
+ ctlMsg._mode = EDIT_RENDER;
ctlMsg.execute(this);
} else if (msg->_param == 13) {
msg->_param = 1000;
@@ -135,32 +137,32 @@ bool CEditControl::EditControlMsg(CEditControlMsg *msg) {
_text += c;
CEditControlMsg ctlMsg;
- ctlMsg._mode = 14;
+ ctlMsg._mode = EDIT_RENDER;
ctlMsg.execute(this);
}
break;
- case 7:
+ case EDIT_SET_FONT:
setTextFontNumber(msg->_param);
break;
- case 8:
- if (!_fieldBC) {
- _fieldBC = true;
+ case EDIT_SHOW_CURSOR:
+ if (!_showCursor) {
+ _showCursor = true;
CEditControlMsg ctlMsg;
- ctlMsg._mode = 14;
+ ctlMsg._mode = EDIT_RENDER;
ctlMsg.execute(this);
}
break;
- case 9:
- if (_fieldBC) {
- _fieldBC = false;
+ case EDIT_HIDE_CURSOR:
+ if (_showCursor) {
+ _showCursor = false;
getTextCursor()->hide();
}
break;
- case 10: {
+ case EDIT_BORDERS: {
setTextHasBorders((msg->_param & 1) != 0);
if (msg->_param & 4)
_fieldF0 = 1;
@@ -169,28 +171,28 @@ bool CEditControl::EditControlMsg(CEditControlMsg *msg) {
else
_fieldF0 = 0;
- _fieldF4 = msg->_param & 0x10;
+ _isPassword = (msg->_param & 0x10) != 0;
CEditControlMsg ctlMsg;
- ctlMsg._mode = 14;
+ ctlMsg._mode = EDIT_RENDER;
ctlMsg.execute(this);
break;
}
- case 11:
+ case EDIT_SET_COLOR:
setTextColor(msg->_textR, msg->_textG, msg->_textB);
break;
- case 12:
+ case EDIT_SHOW:
setVisible(true);
break;
- case 13:
+ case EDIT_HIDE:
setVisible(false);
break;
- case 14: {
+ case EDIT_RENDER: {
makeDirty();
- CString str = _fieldF4 ? CString('*', _text.size()) : _text;
+ CString str = _isPassword ? CString('*', _text.size()) : _text;
setText(str);
int textWidth = getTextWidth();
@@ -201,7 +203,7 @@ bool CEditControl::EditControlMsg(CEditControlMsg *msg) {
makeDirty();
}
- if (_fieldBC) {
+ if (_showCursor) {
CTextCursor *textCursor = getTextCursor();
textCursor->show();
textCursor->setPos(Point(_bounds.left + textWidth + 1, _bounds.top + 3));
@@ -219,4 +221,15 @@ bool CEditControl::EditControlMsg(CEditControlMsg *msg) {
return true;
}
+bool CEditControl::MouseWheelMsg(CMouseWheelMsg *msg) {
+ if (_name != "MissiveOMat Welcome")
+ return false;
+
+ if (msg->_wheelUp)
+ scrollTextUp();
+ else
+ scrollTextDown();
+ return true;
+}
+
} // End of namespace Titanic
diff --git a/engines/titanic/gfx/edit_control.h b/engines/titanic/gfx/edit_control.h
index 6c02f7afb9..5ed91c9e84 100644
--- a/engines/titanic/gfx/edit_control.h
+++ b/engines/titanic/gfx/edit_control.h
@@ -30,8 +30,9 @@ namespace Titanic {
class CEditControl : public CGameObject {
DECLARE_MESSAGE_MAP;
bool EditControlMsg(CEditControlMsg *msg);
+ bool MouseWheelMsg(CMouseWheelMsg *msg);
protected:
- bool _fieldBC;
+ bool _showCursor;
int _editLeft;
int _editBottom;
int _editHeight;
@@ -43,7 +44,7 @@ protected:
byte _textB;
CString _text;
int _fieldF0;
- int _fieldF4;
+ bool _isPassword;
public:
CLASSDEF;
CEditControl();
diff --git a/engines/titanic/pet_control/pet_text.cpp b/engines/titanic/gfx/text_control.cpp
index 05038d2fd0..f731dbb340 100644
--- a/engines/titanic/pet_control/pet_text.cpp
+++ b/engines/titanic/gfx/text_control.cpp
@@ -20,12 +20,12 @@
*
*/
-#include "titanic/pet_control/pet_text.h"
+#include "titanic/gfx/text_control.h"
#include "titanic/titanic.h"
namespace Titanic {
-CPetText::CPetText(uint count) :
+CTextControl::CTextControl(uint count) :
_stringsMerged(false), _maxCharsPerLine(-1), _lineCount(0),
_displayEndCharIndex(-1), _unused1(0), _unused2(0), _unused3(0),
_backR(0xff), _backG(0xff), _backB(0xff),
@@ -35,18 +35,18 @@ CPetText::CPetText(uint count) :
setupArrays(count);
}
-void CPetText::setupArrays(int count) {
+void CTextControl::setupArrays(int count) {
freeArrays();
if (count < 10 || count > 60)
count = 10;
_array.resize(count);
}
-void CPetText::freeArrays() {
+void CTextControl::freeArrays() {
_array.clear();
}
-void CPetText::setup() {
+void CTextControl::setup() {
for (int idx = 0; idx < (int)_array.size(); ++idx) {
_array[idx]._line.clear();
setLineColor(idx, _textR, _textG, _textB);
@@ -57,16 +57,16 @@ void CPetText::setup() {
_stringsMerged = false;
}
-void CPetText::setLineColor(uint lineNum, uint col) {
+void CTextControl::setLineColor(uint lineNum, uint col) {
setLineColor(lineNum, col & 0xff, (col >> 8) & 0xff, (col >> 16) & 0xff);
}
-void CPetText::setLineColor(uint lineNum, byte r, byte g, byte b) {
+void CTextControl::setLineColor(uint lineNum, byte r, byte g, byte b) {
_array[lineNum]._rgb = getColorText(r, g, b);
_stringsMerged = false;
}
-CString CPetText::getColorText(byte r, byte g, byte b) {
+CString CTextControl::getColorText(byte r, byte g, byte b) {
char buffer[6];
if (!r)
r = 1;
@@ -85,7 +85,7 @@ CString CPetText::getColorText(byte r, byte g, byte b) {
return CString(buffer);
}
-void CPetText::load(SimpleFile *file, int param) {
+void CTextControl::load(SimpleFile *file, int param) {
if (!param) {
uint numLines = file->readNumber();
int charsPerLine = file->readNumber();
@@ -116,7 +116,7 @@ void CPetText::load(SimpleFile *file, int param) {
}
}
-void CPetText::save(SimpleFile *file, int indent) {
+void CTextControl::save(SimpleFile *file, int indent) {
int numLines = _lineCount + 1;
file->writeNumberLine(_array.size(), indent);
@@ -143,7 +143,7 @@ void CPetText::save(SimpleFile *file, int indent) {
}
}
-void CPetText::draw(CScreenManager *screenManager) {
+void CTextControl::draw(CScreenManager *screenManager) {
Rect tempRect = _bounds;
if (_hasBorder) {
@@ -179,7 +179,7 @@ void CPetText::draw(CScreenManager *screenManager) {
screenManager->setFontNumber(oldFontNumber);
}
-void CPetText::mergeStrings() {
+void CTextControl::mergeStrings() {
if (!_stringsMerged) {
_lines.clear();
@@ -193,14 +193,14 @@ void CPetText::mergeStrings() {
}
}
-void CPetText::resize(uint count) {
+void CTextControl::resize(uint count) {
if (!count || _array.size() == count)
return;
_array.clear();
_array.resize(count);
}
-CString CPetText::getText() const {
+CString CTextControl::getText() const {
CString result = "";
for (int idx = 0; idx <= _lineCount; ++idx)
result += _array[idx]._line;
@@ -208,16 +208,16 @@ CString CPetText::getText() const {
return result;
}
-void CPetText::setText(const CString &str) {
+void CTextControl::setText(const CString &str) {
setup();
appendText(str);
}
-void CPetText::setText(StringId stringId) {
+void CTextControl::setText(StringId stringId) {
setText(g_vm->_strings[stringId]);
}
-void CPetText::appendText(const CString &str) {
+void CTextControl::appendText(const CString &str) {
int lineSize = _array[_lineCount]._line.size();
int strSize = str.size();
@@ -236,19 +236,19 @@ void CPetText::appendText(const CString &str) {
_stringsMerged = false;
}
-void CPetText::setColor(uint col) {
+void CTextControl::setColor(uint col) {
_textR = col & 0xff;
_textG = (col >> 8) & 0xff;
_textB = (col >> 16) & 0xff;
}
-void CPetText::setColor(byte r, byte g, byte b) {
+void CTextControl::setColor(byte r, byte g, byte b) {
_textR = r;
_textG = g;
_textB = b;
}
-void CPetText::remapColors(uint count, uint *srcColors, uint *destColors) {
+void CTextControl::remapColors(uint count, uint *srcColors, uint *destColors) {
for (int lineNum = 0; lineNum <= _lineCount; ++lineNum) {
if (_array[lineNum]._rgb.empty())
continue;
@@ -271,12 +271,12 @@ void CPetText::remapColors(uint count, uint *srcColors, uint *destColors) {
_stringsMerged = false;
}
-void CPetText::setMaxCharsPerLine(int maxChars) {
+void CTextControl::setMaxCharsPerLine(int maxChars) {
if (maxChars >= -1 && maxChars < 257)
_maxCharsPerLine = maxChars;
}
-void CPetText::updateStr3(int lineNum) {
+void CTextControl::updateStr3(int lineNum) {
if (_npcFlag > 0 && _npcId > 0) {
char line[5];
line[0] = line[3] = TEXTCMD_NPC;
@@ -290,7 +290,7 @@ void CPetText::updateStr3(int lineNum) {
}
}
-int CPetText::getTextWidth(CScreenManager *screenManager) {
+int CTextControl::getTextWidth(CScreenManager *screenManager) {
mergeStrings();
int oldFontNumber = screenManager->setFontNumber(_fontNumber);
int textWidth = screenManager->stringWidth(_lines);
@@ -299,7 +299,7 @@ int CPetText::getTextWidth(CScreenManager *screenManager) {
return textWidth;
}
-int CPetText::getTextHeight(CScreenManager *screenManager) {
+int CTextControl::getTextHeight(CScreenManager *screenManager) {
mergeStrings();
int oldFontNumber = screenManager->setFontNumber(_fontNumber);
int textHeight = screenManager->getTextBounds(_lines, _bounds.width() - 4);
@@ -308,63 +308,63 @@ int CPetText::getTextHeight(CScreenManager *screenManager) {
return textHeight;
}
-void CPetText::deleteLastChar() {
+void CTextControl::deleteLastChar() {
if (!_array[_lineCount]._line.empty()) {
_array[_lineCount]._line.deleteLastChar();
_stringsMerged = false;
}
}
-void CPetText::setNPC(int npcFlag, int npcId) {
+void CTextControl::setNPC(int npcFlag, int npcId) {
_npcFlag = npcFlag;
_npcId = npcId;
}
-void CPetText::scrollUp(CScreenManager *screenManager) {
+void CTextControl::scrollUp(CScreenManager *screenManager) {
int oldFontNumber = screenManager->setFontNumber(_fontNumber);
_scrollTop -= screenManager->getFontHeight();
constrainScrollUp(screenManager);
screenManager->setFontNumber(oldFontNumber);
}
-void CPetText::scrollDown(CScreenManager *screenManager) {
+void CTextControl::scrollDown(CScreenManager *screenManager) {
int oldFontNumber = screenManager->setFontNumber(_fontNumber);
_scrollTop += screenManager->getFontHeight();
constrainScrollDown(screenManager);
screenManager->setFontNumber(oldFontNumber);
}
-void CPetText::scrollUpPage(CScreenManager *screenManager) {
+void CTextControl::scrollUpPage(CScreenManager *screenManager) {
int oldFontNumber = screenManager->setFontNumber(_fontNumber);
_scrollTop -= getPageHeight(screenManager);
constrainScrollUp(screenManager);
screenManager->setFontNumber(oldFontNumber);
}
-void CPetText::scrollDownPage(CScreenManager *screenManager) {
+void CTextControl::scrollDownPage(CScreenManager *screenManager) {
int oldFontNumber = screenManager->setFontNumber(_fontNumber);
_scrollTop += getPageHeight(screenManager);
constrainScrollDown(screenManager);
screenManager->setFontNumber(oldFontNumber);
}
-void CPetText::scrollToTop(CScreenManager *screenManager) {
+void CTextControl::scrollToTop(CScreenManager *screenManager) {
_scrollTop = 0;
}
-void CPetText::scrollToBottom(CScreenManager *screenManager) {
+void CTextControl::scrollToBottom(CScreenManager *screenManager) {
int oldFontNumber = screenManager->setFontNumber(_fontNumber);
_scrollTop = getTextHeight(screenManager);
constrainScrollDown(screenManager);
screenManager->setFontNumber(oldFontNumber);
}
-void CPetText::constrainScrollUp(CScreenManager *screenManager) {
+void CTextControl::constrainScrollUp(CScreenManager *screenManager) {
if (_scrollTop < 0)
_scrollTop = 0;
}
-void CPetText::constrainScrollDown(CScreenManager *screenManager) {
+void CTextControl::constrainScrollDown(CScreenManager *screenManager) {
// Figure out the maximum scroll amount allowed
int maxScroll = getTextHeight(screenManager) - _bounds.height() - 4;
if (maxScroll < 0)
@@ -374,7 +374,7 @@ void CPetText::constrainScrollDown(CScreenManager *screenManager) {
_scrollTop = maxScroll;
}
-int CPetText::getPageHeight(CScreenManager *screenManager) {
+int CTextControl::getPageHeight(CScreenManager *screenManager) {
int textHeight = _bounds.height();
int oldFontNumber = screenManager->setFontNumber(_fontNumber);
int fontHeight = screenManager->getFontHeight();
@@ -390,16 +390,16 @@ int CPetText::getPageHeight(CScreenManager *screenManager) {
}
}
-void CPetText::addLine(const CString &str) {
+void CTextControl::addLine(const CString &str) {
addLine(str, _textR, _textG, _textB);
}
-void CPetText::addLine(const CString &str, uint color) {
+void CTextControl::addLine(const CString &str, uint color) {
addLine(str, color & 0xff, (color >> 8) & 0xff,
(color >> 16) & 0xff);
}
-void CPetText::addLine(const CString &str, byte r, byte g, byte b) {
+void CTextControl::addLine(const CString &str, byte r, byte g, byte b) {
if (_lineCount == ((int)_array.size() - 1)) {
// Lines array is full
if (_array.size() > 1) {
@@ -416,7 +416,7 @@ void CPetText::addLine(const CString &str, byte r, byte g, byte b) {
++_lineCount;
}
-bool CPetText::handleKey(char c) {
+bool CTextControl::handleKey(char c) {
switch (c) {
case (char)Common::KEYCODE_BACKSPACE:
deleteLastChar();
@@ -434,7 +434,7 @@ bool CPetText::handleKey(char c) {
return false;
}
-void CPetText::showCursor(int mode) {
+void CTextControl::showCursor(int mode) {
CScreenManager *screenManager = CScreenManager::setCurrent();
_textCursor = screenManager->_textCursor;
if (_textCursor) {
@@ -448,7 +448,7 @@ void CPetText::showCursor(int mode) {
}
}
-void CPetText::hideCursor() {
+void CTextControl::hideCursor() {
if (_textCursor) {
_textCursor->setMode(-1);
_textCursor->hide();
@@ -456,7 +456,7 @@ void CPetText::hideCursor() {
}
}
-int CPetText::getNPCNum(uint ident, uint startIndex) {
+int CTextControl::getNPCNum(uint ident, uint startIndex) {
if (!_stringsMerged) {
mergeStrings();
if (!_stringsMerged)
@@ -483,7 +483,7 @@ int CPetText::getNPCNum(uint ident, uint startIndex) {
return -1;
}
-void CPetText::setFontNumber(int fontNumber) {
+void CTextControl::setFontNumber(int fontNumber) {
if (fontNumber >= 0 && fontNumber <= 2)
_fontNumber = fontNumber;
}
diff --git a/engines/titanic/pet_control/pet_text.h b/engines/titanic/gfx/text_control.h
index 9b2f47274c..d4ef19a7cf 100644
--- a/engines/titanic/pet_control/pet_text.h
+++ b/engines/titanic/gfx/text_control.h
@@ -20,8 +20,8 @@
*
*/
-#ifndef TITANIC_PET_TEXT_H
-#define TITANIC_PET_TEXT_H
+#ifndef TITANIC_TEXT_CONTROL_H
+#define TITANIC_TEXT_CONTROL_H
#include "common/keyboard.h"
#include "titanic/support/simple_file.h"
@@ -30,7 +30,7 @@
namespace Titanic {
-class CPetText {
+class CTextControl {
struct ArrayEntry {
CString _line;
CString _rgb;
@@ -91,7 +91,7 @@ private:
*/
int getPageHeight(CScreenManager *screenManager);
public:
- CPetText(uint count = 10);
+ CTextControl(uint count = 10);
/**
* Set up the control
@@ -282,4 +282,4 @@ public:
} // End of namespace Titanic
-#endif /* TITANIC_PET_TEXT_H */
+#endif /* TITANIC_TEXT_CONTROL_H */
diff --git a/engines/titanic/input_handler.cpp b/engines/titanic/input_handler.cpp
index ba2c08ed89..481224141d 100644
--- a/engines/titanic/input_handler.cpp
+++ b/engines/titanic/input_handler.cpp
@@ -32,7 +32,7 @@ namespace Titanic {
CInputHandler::CInputHandler(CGameManager *owner) :
_gameManager(owner), _inputTranslator(nullptr), _dragging(false),
_buttonDown(false), _dragItem(nullptr), _lockCount(0),
- _singleton(false) {
+ _abortMessage(false) {
CScreenManager::_screenManagerPtr->_inputHandler = this;
}
@@ -59,7 +59,7 @@ void CInputHandler::decLockCount() {
}
_buttonDown = _inputTranslator->isMousePressed();
- _singleton = true;
+ _abortMessage = true;
}
}
@@ -75,11 +75,11 @@ void CInputHandler::handleMessage(CMessage &msg, bool respectLock) {
void CInputHandler::processMessage(CMessage *msg) {
const CMouseMsg *mouseMsg = dynamic_cast<const CMouseMsg *>(msg);
- _singleton = false;
+ _abortMessage = false;
dispatchMessage(msg);
- if (_singleton) {
- _singleton = false;
+ if (_abortMessage) {
+ _abortMessage = false;
} else if (mouseMsg) {
// Keep the game state mouse position up to date
if (_mousePos != mouseMsg->_mousePos) {
diff --git a/engines/titanic/input_handler.h b/engines/titanic/input_handler.h
index d5f29b7921..5f0be04f1a 100644
--- a/engines/titanic/input_handler.h
+++ b/engines/titanic/input_handler.h
@@ -56,7 +56,7 @@ public:
Point _dragStartPos;
Point _mousePos;
int _lockCount;
- bool _singleton;
+ bool _abortMessage;
public:
CInputHandler(CGameManager *owner);
~CInputHandler();
diff --git a/engines/titanic/messages/messages.h b/engines/titanic/messages/messages.h
index a40477a702..0cbb4b0e76 100644
--- a/engines/titanic/messages/messages.h
+++ b/engines/titanic/messages/messages.h
@@ -87,6 +87,7 @@ class CRoomItem;
class CNodeItem;
class CViewItem;
class CMusicPlayer;
+class CMovePlayerTo;
class CMessage : public CSaveableObject {
private:
@@ -148,9 +149,27 @@ public:
virtual bool isLeaveViewMsg() const;
};
+enum EditControlAction {
+ EDIT_INIT = 0,
+ EDIT_CLEAR = 1,
+ EDIT_SET_TEXT = 2,
+ EDIT_GET_TEXT = 3,
+ EDIT_LENGTH = 4,
+ EDIT_MAX_LENGTH = 5,
+ EDIT_KEYPRESS = 6,
+ EDIT_SET_FONT = 7,
+ EDIT_SHOW_CURSOR = 8,
+ EDIT_HIDE_CURSOR = 9,
+ EDIT_BORDERS = 10,
+ EDIT_SET_COLOR = 11,
+ EDIT_SHOW = 12,
+ EDIT_HIDE = 13,
+ EDIT_RENDER = 14
+};
+
class CEditControlMsg : public CMessage {
public:
- int _mode;
+ EditControlAction _mode;
int _param;
CString _text;
byte _textR;
@@ -158,7 +177,7 @@ public:
byte _textB;
public:
CLASSDEF;
- CEditControlMsg() : _mode(0), _param(0), _textR(0), _textG(0), _textB(0) {}
+ CEditControlMsg() : _mode(EDIT_INIT), _param(0), _textR(0), _textG(0), _textB(0) {}
static bool isSupportedBy(const CTreeItem *item) {
return CMessage::supports(item, _type);
@@ -197,6 +216,12 @@ public:
}
};
+enum MissiveOMatAction {
+ MESSAGE_NONE = 1, MESSAGE_SHOW = 2, NEXT_MESSAGE = 3, PRIOR_MESSAGE = 4,
+ MESSAGE_5 = 5, MESSAGE_DOWN = 6, MESSAGE_UP = 7, REDRAW_MESSAGE = 8,
+ MESSAGE_9 = 9
+};
+
MESSAGE1(CActMsg, CString, action, "");
MESSAGE1(CActivationmsg, CString, value, "");
MESSAGE1(CAddHeadPieceMsg, CString, value, "NULL");
@@ -260,7 +285,7 @@ MESSAGE1(CLoadSuccessMsg, int, ticks, 0);
MESSAGE1(CLockPhonographMsg, int, value, 0);
MESSAGE0(CMaitreDDefeatedMsg);
MESSAGE0(CMaitreDHappyMsg);
-MESSAGE1(CMissiveOMatActionMsg, int, action, 0);
+MESSAGE1(CMissiveOMatActionMsg, MissiveOMatAction, action, MESSAGE_NONE);
MESSAGE0(CMoveToStartPosMsg);
MESSAGE2(CMovieEndMsg, int, startFrame, 0, int, endFrame, 0);
MESSAGE2(CMovieFrameMsg, int, frameNumber, 0, int, value2, 0);
@@ -274,7 +299,7 @@ MESSAGE0(CNPCQueueIdleAnimMsg);
MESSAGE1(CNutPuzzleMsg, CString, value, "");
MESSAGE1(COnSummonBotMsg, int, value, 0);
MESSAGE0(COpeningCreditsMsg);
-MESSAGE1(CPanningAwayFromParrotMsg, CTreeItem *, target, nullptr);
+MESSAGE1(CPanningAwayFromParrotMsg, CMovePlayerTo *, target, nullptr);
MESSAGE2(CParrotSpeakMsg, CString, target, "", CString, action, "");
MESSAGE2(CParrotTriesChickenMsg, int, value1, 0, int, value2, 0);
MESSAGE1(CPhonographPlayMsg, int, value, 0);
diff --git a/engines/titanic/module.mk b/engines/titanic/module.mk
index e802456c5a..51c77ba1dd 100644
--- a/engines/titanic/module.mk
+++ b/engines/titanic/module.mk
@@ -280,6 +280,7 @@ MODULE_OBJS := \
gfx/chev_right_on.o \
gfx/chev_send_rec_switch.o \
gfx/edit_control.o \
+ gfx/text_control.o \
gfx/elevator_button.o \
gfx/get_from_succ.o \
gfx/helmet_on_off.o \
@@ -398,7 +399,6 @@ MODULE_OBJS := \
pet_control/pet_show_translation.o \
pet_control/pet_slider.o \
pet_control/pet_sound.o \
- pet_control/pet_text.o \
sound/auto_music_player.o \
sound/auto_music_player_base.o \
sound/auto_sound_player.o \
diff --git a/engines/titanic/npcs/bilge_succubus.cpp b/engines/titanic/npcs/bilge_succubus.cpp
index d0a5dc17ae..36627842a5 100644
--- a/engines/titanic/npcs/bilge_succubus.cpp
+++ b/engines/titanic/npcs/bilge_succubus.cpp
@@ -42,26 +42,26 @@ BEGIN_MESSAGE_MAP(CBilgeSuccUBus, CSuccUBus)
END_MESSAGE_MAP()
CBilgeSuccUBus::CBilgeSuccUBus() : CSuccUBus(),
- _bilgeStartFrame1(-1), _bilgeEndFrame1(-1),
- _bilgeStartFrame2(-1), _bilgeEndFrame2(-1) {
+ _sneezing2StartFrame(-1), _sneezing2EndFrame(-1),
+ _sneezing1StartFrame(-1), _sneezing1EndFrame(-1) {
}
void CBilgeSuccUBus::save(SimpleFile *file, int indent) {
file->writeNumberLine(1, indent);
- file->writeNumberLine(_bilgeStartFrame1, indent);
- file->writeNumberLine(_bilgeEndFrame1, indent);
- file->writeNumberLine(_bilgeStartFrame2, indent);
- file->writeNumberLine(_bilgeEndFrame2, indent);
+ file->writeNumberLine(_sneezing2StartFrame, indent);
+ file->writeNumberLine(_sneezing2EndFrame, indent);
+ file->writeNumberLine(_sneezing1StartFrame, indent);
+ file->writeNumberLine(_sneezing1EndFrame, indent);
CSuccUBus::save(file, indent);
}
void CBilgeSuccUBus::load(SimpleFile *file) {
file->readNumber();
- _bilgeStartFrame1 = file->readNumber();
- _bilgeEndFrame1 = file->readNumber();
- _bilgeStartFrame2 = file->readNumber();
- _bilgeEndFrame2 = file->readNumber();
+ _sneezing2StartFrame = file->readNumber();
+ _sneezing2EndFrame = file->readNumber();
+ _sneezing1StartFrame = file->readNumber();
+ _sneezing1EndFrame = file->readNumber();
CSuccUBus::load(file);
}
@@ -74,10 +74,10 @@ bool CBilgeSuccUBus::PETReceiveMsg(CPETReceiveMsg *msg) {
CPetControl *pet = getPetControl();
if (_v2) {
- if (_startFrame4 >= 0)
- playMovie(_startFrame4, _endFrame4, MOVIE_GAMESTATE);
- if (_startFrame5 >= 0)
- playMovie(_startFrame5, _endFrame5, MOVIE_GAMESTATE);
+ if (_receiveStartFrame >= 0)
+ playMovie(_receiveStartFrame, _receiveEndFrame, MOVIE_GAMESTATE);
+ if (_afterReceiveStartFrame >= 0)
+ playMovie(_afterReceiveStartFrame, _afterReceiveEndFrame, MOVIE_GAMESTATE);
playSound("z#28.wav", 70);
} else if (!_enabled) {
@@ -93,8 +93,8 @@ bool CBilgeSuccUBus::PETReceiveMsg(CPETReceiveMsg *msg) {
if (mailObject) {
_mailP = mailObject;
- if (_startFrame4 >= 0)
- playMovie(_startFrame4, _endFrame4, MOVIE_GAMESTATE);
+ if (_receiveStartFrame >= 0)
+ playMovie(_receiveStartFrame, _receiveEndFrame, MOVIE_GAMESTATE);
} else {
petDisplayMessage(2, NOTHING_TO_DELIVER);
}
@@ -116,14 +116,13 @@ bool CBilgeSuccUBus::PETDeliverMsg(CPETDeliverMsg *msg) {
return true;
}
- _field19C = 0;
+ _sendLost = false;
_mailP = mailObject;
uint roomFlags = _roomFlags;
- if (!pet->testRooms5(roomFlags) ||
- getPassengerClass() > pet->getMailDest(roomFlags)) {
+ if (!pet->isSuccUBusDest(roomFlags) || pet->getMailDestClass(roomFlags) < getPassengerClass()) {
roomFlags = pet->getSpecialRoomFlags("BilgeRoom");
- _field19C = 1;
+ _sendLost = true;
}
_isChicken = mailObject->getName() == "Chicken";
@@ -135,42 +134,42 @@ bool CBilgeSuccUBus::PETDeliverMsg(CPETDeliverMsg *msg) {
startTalking(this, 230022);
_field158 = 1;
- if (_startFrame3 >= 0)
- playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT);
+ if (_sendStartFrame >= 0)
+ playMovie(_sendStartFrame, _sendEndFrame, MOVIE_NOTIFY_OBJECT);
- if (_bilgeStartFrame1 >= 0) {
- playMovie(_startFrame12, _endFrame12, MOVIE_GAMESTATE);
- playMovie(_bilgeStartFrame2, _bilgeEndFrame2, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
- playMovie(_bilgeStartFrame1, _bilgeEndFrame1, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+ if (_sneezing2StartFrame >= 0) {
+ playMovie(_trayOutStartFrame, _trayOutEndFrame, MOVIE_GAMESTATE);
+ playMovie(_sneezing1StartFrame, _sneezing1EndFrame, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+ playMovie(_sneezing2StartFrame, _sneezing2EndFrame, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
incTransitions();
}
} else {
startTalking(this, 230012);
_field158 = 2;
- if (_startFrame3 >= 0)
- playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
- if (_startFrame4 >= 0)
- playMovie(_startFrame4, _endFrame4, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
- if (_startFrame5 >= 0)
- playMovie(_startFrame5, _endFrame5, MOVIE_GAMESTATE);
+ if (_sendStartFrame >= 0)
+ playMovie(_sendStartFrame, _sendEndFrame, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+ if (_receiveStartFrame >= 0)
+ playMovie(_receiveStartFrame, _receiveEndFrame, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+ if (_afterReceiveStartFrame >= 0)
+ playMovie(_afterReceiveStartFrame, _afterReceiveEndFrame, MOVIE_GAMESTATE);
}
} else {
if (_isFeathers) {
startTalking(this, 230022);
_field158 = 3;
- if (_startFrame3 >= 0)
- playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
- if (_startFrame4 >= 0)
- playMovie(_startFrame4, _endFrame4, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
- if (_startFrame5 >= 0)
- playMovie(_startFrame5, _endFrame5, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+ if (_sendStartFrame >= 0)
+ playMovie(_sendStartFrame, _sendEndFrame, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+ if (_receiveStartFrame >= 0)
+ playMovie(_receiveStartFrame, _receiveEndFrame, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+ if (_afterReceiveStartFrame >= 0)
+ playMovie(_afterReceiveStartFrame, _afterReceiveEndFrame, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
} else {
- removeMail(petRoomFlags, roomFlags);
+ sendMail(petRoomFlags, roomFlags);
startTalking(this, 230012);
- if (_startFrame3 >= 0) {
+ if (_sendStartFrame >= 0) {
_field158 = 4;
- playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+ playMovie(_sendStartFrame, _sendEndFrame, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
}
}
}
@@ -181,14 +180,14 @@ bool CBilgeSuccUBus::PETDeliverMsg(CPETDeliverMsg *msg) {
bool CBilgeSuccUBus::MovieEndMsg(CMovieEndMsg *msg) {
CPetControl *pet = getPetControl();
- if (msg->_endFrame == _endFrame12) {
- if (_startFrame10 >= 0)
+ if (msg->_endFrame == _trayOutEndFrame) {
+ if (_offStartFrame >= 0)
playSound("z#27.wav");
- } else if (msg->_endFrame == _endFrame10) {
+ } else if (msg->_endFrame == _offEndFrame) {
if (_startFrame11 >= 0)
playSound("z#30.wav");
} else {
- if (_endFrame9 == _endFrame10 && pet) {
+ if (msg->_endFrame == _onEndFrame && pet) {
if (_v2) {
startTalking(this, getRandomNumber(1) ? 230062 : 230063);
} else if (!findMail(pet->getRoomFlags())) {
@@ -206,9 +205,8 @@ bool CBilgeSuccUBus::MovieEndMsg(CMovieEndMsg *msg) {
break;
}
}
- }
- if (msg->_endFrame == _endFrame3) {
+ } else if (msg->_endFrame == _sendEndFrame) {
switch (_field158) {
case 1:
stopSound(_soundHandle);
@@ -236,11 +234,7 @@ bool CBilgeSuccUBus::MovieEndMsg(CMovieEndMsg *msg) {
CSUBTransition transMsg;
transMsg.execute(this);
- } else if (msg->_endFrame == _bilgeEndFrame2) {
- playSound("z#25.wav", 70);
- playSound("z#24.wav", 70);
-
- } else if (msg->_endFrame == _endFrame4) {
+ } else if (msg->_endFrame == _receiveEndFrame) {
if (_mailP) {
_mailP->petAddToInventory();
CVisibleMsg visibleMsg(true);
@@ -253,7 +247,11 @@ bool CBilgeSuccUBus::MovieEndMsg(CMovieEndMsg *msg) {
transMsg.execute(this);
}
- } else if (msg->_endFrame == _bilgeEndFrame1) {
+ } else if (msg->_endFrame == _sneezing1EndFrame) {
+ playSound("z#25.wav", 70);
+ playSound("z#24.wav", 70);
+
+ } else if (msg->_endFrame == _sneezing2EndFrame) {
changeView("BilgeRoomWith.Node 1.N", "");
_v2 = 0;
resetMail();
@@ -342,14 +340,14 @@ bool CBilgeSuccUBus::SubAcceptCCarryMsg(CSubAcceptCCarryMsg *msg) {
bool chickenFlag = chicken ? chicken->_string6 == "None" : false;
if (chickenFlag) {
- if (_startFrame2 >= 0) {
+ if (_okStartFrame >= 0) {
startTalking(this, 70219);
- playMovie(_startFrame2, _endFrame2, 0);
+ playMovie(_okStartFrame, _okEndFrame, 0);
}
- if (_startFrame3 >= 0) {
+ if (_sendStartFrame >= 0) {
_field158 = 5;
- playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT);
+ playMovie(_sendStartFrame, _sendEndFrame, MOVIE_NOTIFY_OBJECT);
}
CViewItem *view = parseView(item->_fullViewName);
@@ -365,8 +363,8 @@ bool CBilgeSuccUBus::SubAcceptCCarryMsg(CSubAcceptCCarryMsg *msg) {
}
} else {
item->addMail(petRoomFlags);
- if (_startFrame2 >= 0)
- playMovie(_startFrame2, _endFrame2, 0);
+ if (_okStartFrame >= 0)
+ playMovie(_okStartFrame, _okEndFrame, 0);
petSetArea(PET_REMOTE);
CSUBTransition transMsg;
@@ -397,7 +395,7 @@ bool CBilgeSuccUBus::LeaveViewMsg(CLeaveViewMsg *msg) {
if (_enabled) {
_enabled = false;
- if (_startFrame10 >= 0)
+ if (_offStartFrame >= 0)
playSound("z#27.wav");
}
@@ -419,13 +417,13 @@ bool CBilgeSuccUBus::TurnOn(CTurnOn *msg) {
CPetControl *pet = getPetControl();
if (pet) {
- if (_startFrame9 >= 0) {
- playMovie(_startFrame9, _endFrame9, MOVIE_NOTIFY_OBJECT);
+ if (_onStartFrame >= 0) {
+ playMovie(_onStartFrame, _onEndFrame, MOVIE_NOTIFY_OBJECT);
playSound("z#26.wav");
}
- if (mailExists(pet->getRoomFlags()) && _startFrame2 >= 0)
- playMovie(_startFrame2, _endFrame2, 0);
+ if (mailExists(pet->getRoomFlags()) && _okStartFrame >= 0)
+ playMovie(_okStartFrame, _okEndFrame, 0);
_enabled = true;
CSUBTransition transMsg;
@@ -442,18 +440,18 @@ bool CBilgeSuccUBus::TurnOn(CTurnOn *msg) {
bool CBilgeSuccUBus::TurnOff(CTurnOff *msg) {
CPetControl *pet = getPetControl();
- if (pet && mailExists(pet->getRoomFlags()) && _startFrame12 >= 0)
- playMovie(_startFrame12, _endFrame12, MOVIE_NOTIFY_OBJECT);
- else if (_endFrame12 >= 0)
- playMovie(_endFrame12, _endFrame12, MOVIE_NOTIFY_OBJECT);
+ if (pet && mailExists(pet->getRoomFlags()) && _trayOutStartFrame >= 0)
+ playMovie(_trayOutStartFrame, _trayOutEndFrame, MOVIE_NOTIFY_OBJECT);
+ else if (_trayOutEndFrame >= 0)
+ playMovie(_trayOutEndFrame, _trayOutEndFrame, MOVIE_NOTIFY_OBJECT);
if (_soundHandle != -1) {
stopSound(_soundHandle);
_soundHandle = -1;
}
- if (_startFrame10 >= 0)
- playMovie(_startFrame10, _endFrame10, MOVIE_NOTIFY_OBJECT);
+ if (_offStartFrame >= 0)
+ playMovie(_offStartFrame, _offEndFrame, MOVIE_NOTIFY_OBJECT);
_enabled = false;
performAction(true);
diff --git a/engines/titanic/npcs/bilge_succubus.h b/engines/titanic/npcs/bilge_succubus.h
index 754949a306..b56716d110 100644
--- a/engines/titanic/npcs/bilge_succubus.h
+++ b/engines/titanic/npcs/bilge_succubus.h
@@ -41,10 +41,10 @@ class CBilgeSuccUBus : public CSuccUBus {
bool TurnOn(CTurnOn *msg);
bool TurnOff(CTurnOff *msg);
public:
- int _bilgeStartFrame1;
- int _bilgeEndFrame1;
- int _bilgeStartFrame2;
- int _bilgeEndFrame2;
+ int _sneezing2StartFrame;
+ int _sneezing2EndFrame;
+ int _sneezing1StartFrame;
+ int _sneezing1EndFrame;
public:
CLASSDEF;
CBilgeSuccUBus();
diff --git a/engines/titanic/npcs/parrot.cpp b/engines/titanic/npcs/parrot.cpp
index e9aeba11cd..e039b15dfe 100644
--- a/engines/titanic/npcs/parrot.cpp
+++ b/engines/titanic/npcs/parrot.cpp
@@ -48,7 +48,7 @@ END_MESSAGE_MAP()
int CParrot::_v1;
int CParrot::_v2;
int CParrot::_v3;
-int CParrot::_v4;
+ParrotState CParrot::_state;
int CParrot::_v5;
CParrot::CParrot() : CTrueTalkNPC() {
@@ -56,12 +56,12 @@ CParrot::CParrot() : CTrueTalkNPC() {
_string2 = "CarryParrot";
_field118 = 1;
_field11C = 25;
- _field120 = 0;
- _field124 = 73;
- _field128 = 58;
+ _lastSpeakTime = 0;
+ _newXp = 73;
+ _newXc = 58;
_field12C = 0;
_field130 = 0;
- _field134 = nullptr;
+ _panTarget = nullptr;
_field138 = 851;
_field13C = 851;
_field140 = 265;
@@ -126,12 +126,12 @@ void CParrot::save(SimpleFile *file, int indent) {
file->writeQuotedLine(_string2, indent);
file->writeNumberLine(_field118, indent);
file->writeNumberLine(_field11C, indent);
- file->writeNumberLine(_field120, indent);
- file->writeNumberLine(_field124, indent);
- file->writeNumberLine(_field128, indent);
+ file->writeNumberLine(_lastSpeakTime, indent);
+ file->writeNumberLine(_newXp, indent);
+ file->writeNumberLine(_newXc, indent);
file->writeNumberLine(_field12C, indent);
file->writeNumberLine(_field130, indent);
- file->writeNumberLine(_v4, indent);
+ file->writeNumberLine(_state, indent);
file->writeNumberLine(_v5, indent);
CTrueTalkNPC::save(file, indent);
@@ -150,12 +150,12 @@ void CParrot::load(SimpleFile *file) {
_string2 = file->readString();
_field118 = file->readNumber();
_field11C = file->readNumber();
- _field120 = file->readNumber();
- _field124 = file->readNumber();
- _field128 = file->readNumber();
+ _lastSpeakTime = file->readNumber();
+ _newXp = file->readNumber();
+ _newXc = file->readNumber();
_field12C = file->readNumber();
_field130 = file->readNumber();
- _v4 = file->readNumber();
+ _state = (ParrotState)file->readNumber();
_v5 = file->readNumber();
CTrueTalkNPC::load(file);
@@ -175,13 +175,13 @@ bool CParrot::ActMsg(CActMsg *msg) {
statusMsg.execute("PerchCoreHolder");
}
} else if (msg->_action == "StartChickenDrag") {
- if (!_v4) {
+ if (_state == PARROT_IN_CAGE) {
stopMovie();
startTalking(this, 280275, findView());
_field12C = 0;
}
} else if (msg->_action == "EnteringFromTOW" &&
- (_v4 == 0 || _v4 == 2)) {
+ (_state == PARROT_IN_CAGE || _state == PARROT_ESCAPED)) {
if (_v2) {
_v2 = 2;
} else {
@@ -190,7 +190,7 @@ bool CParrot::ActMsg(CActMsg *msg) {
detach();
attach(cageBar);
- _v4 = 0;
+ _state = PARROT_IN_CAGE;
CActMsg actMsg1("OpenNow");
actMsg1.execute("ParrotCage");
CActMsg actMsg2("GainParrot");
@@ -219,17 +219,17 @@ bool CParrot::MovieEndMsg(CMovieEndMsg *msg) {
CActMsg actMsg1("LoseParrot");
actMsg1.execute("ParrotLobbyController");
- if (_field134) {
+ if (_panTarget) {
CActMsg actMsg2("PanAwayFromParrot");
- actMsg2.execute(_field134);
- _field134 = nullptr;
+ actMsg2.execute(_panTarget);
+ _panTarget = nullptr;
} else {
CActMsg actMsg2("Shut");
actMsg2.execute("ParrotCage");
}
_npcFlags &= ~NPCFLAG_2000000;
- _v4 = 2;
+ _state = PARROT_ESCAPED;
} else if (_npcFlags & NPCFLAG_10000) {
if (_npcFlags & NPCFLAG_20000) {
_npcFlags = (_npcFlags & ~NPCFLAG_20000) | NPCFLAG_40000;
@@ -243,7 +243,7 @@ bool CParrot::MovieEndMsg(CMovieEndMsg *msg) {
int xp = _bounds.left + _bounds.width() / 2;
if (_npcFlags & NPCFLAG_100000) {
- if ((xp - _field128) > 32) {
+ if ((xp - _newXc) > 32) {
setPosition(Point(_bounds.left - 40, _bounds.top));
playClip("Walk Left Loop", MOVIE_NOTIFY_OBJECT);
movieEvent(236);
@@ -253,7 +253,7 @@ bool CParrot::MovieEndMsg(CMovieEndMsg *msg) {
_npcFlags = (_npcFlags & ~NPCFLAG_40000) | NPCFLAG_80000;
}
} else {
- if ((_field128 - xp) > 32) {
+ if ((_newXc - xp) > 32) {
playClip("Walk Right Loop", MOVIE_NOTIFY_OBJECT);
movieEvent(244);
} else {
@@ -347,8 +347,8 @@ bool CParrot::EnterViewMsg(CEnterViewMsg *msg) {
"Talking5", "Talking6", "Talking7", nullptr
};
- if (!_v4) {
- setPosition(Point(_field124, _bounds.top));
+ if (_state == PARROT_IN_CAGE) {
+ setPosition(Point(_newXp, _bounds.top));
_field118 = 1;
_npcFlags &= ~(NPCFLAG_10000 | NPCFLAG_20000 | NPCFLAG_40000 | NPCFLAG_80000 | NPCFLAG_100000 | NPCFLAG_200000 | NPCFLAG_400000);
loadFrame(0);
@@ -369,7 +369,7 @@ bool CParrot::EnterViewMsg(CEnterViewMsg *msg) {
}
bool CParrot::TrueTalkTriggerActionMsg(CTrueTalkTriggerActionMsg *msg) {
- if (_v4 != 3) {
+ if (_state != PARROT_MAILED) {
CViewItem *view = msg->_param2 ? findView() : nullptr;
startTalking(this, msg->_action, view);
}
@@ -378,7 +378,7 @@ bool CParrot::TrueTalkTriggerActionMsg(CTrueTalkTriggerActionMsg *msg) {
}
bool CParrot::MouseDragStartMsg(CMouseDragStartMsg *msg) {
- if (_field118 && !_v4 && checkPoint(msg->_mousePos, false, true)) {
+ if (_field118 && _state == PARROT_IN_CAGE && checkPoint(msg->_mousePos, false, true)) {
setVisible(false);
CRoomItem *room = findRoom();
@@ -416,7 +416,7 @@ bool CParrot::ParrotSpeakMsg(CParrotSpeakMsg *msg) {
"Lift", "ServiceElevator", "Dome", "Home", "MoonEmbLobby", nullptr
};
- if (!stateGetParrotMet() || _v4 == 3 || compareViewNameTo("Titania.Node 18.N"))
+ if (!stateGetParrotMet() || _state == PARROT_MAILED || compareViewNameTo("Titania.Node 18.N"))
return true;
// Check for rooms not to speak in
@@ -426,7 +426,7 @@ bool CParrot::ParrotSpeakMsg(CParrotSpeakMsg *msg) {
}
// Don't have the parrot speak too often
- if ((getTicksCount() - _field120) < 20000 || _speechCounter)
+ if ((getTicksCount() - _lastSpeakTime) < 20000 || _speechCounter)
return true;
playSound("z#475.wav", 50);
@@ -473,7 +473,7 @@ bool CParrot::ParrotSpeakMsg(CParrotSpeakMsg *msg) {
}
}
- _field120 = getTicksCount();
+ _lastSpeakTime = getTicksCount();
return true;
}
@@ -484,7 +484,7 @@ bool CParrot::NPCPlayTalkingAnimationMsg(CNPCPlayTalkingAnimationMsg *msg) {
};
if (!(_npcFlags & (NPCFLAG_10000 | NPCFLAG_20000 | NPCFLAG_40000 | NPCFLAG_80000 | NPCFLAG_100000 | NPCFLAG_200000 | NPCFLAG_400000))
- && _visible && !_v4) {
+ && _visible && _state == PARROT_IN_CAGE) {
if (!compareViewNameTo("ParrotLobby.Node 1.N"))
msg->_names = NAMES;
}
@@ -499,7 +499,7 @@ bool CParrot::NPCPlayIdleAnimationMsg(CNPCPlayIdleAnimationMsg *msg) {
};
if (!(_npcFlags & (NPCFLAG_10000 | NPCFLAG_20000 | NPCFLAG_40000 | NPCFLAG_80000 | NPCFLAG_100000 | NPCFLAG_200000 | NPCFLAG_400000))
- && _visible && !_v4 && !compareViewNameTo("ParrotLobby.Node 1.N")) {
+ && _visible && _state == PARROT_IN_CAGE && !compareViewNameTo("ParrotLobby.Node 1.N")) {
CGameObject *dragItem = getDraggingObject();
if (!dragItem || dragItem->getName() == "Chicken") {
if (!_v5 ||getRandomNumber(3) != 0) {
@@ -564,9 +564,9 @@ bool CParrot::NPCPlayIdleAnimationMsg(CNPCPlayIdleAnimationMsg *msg) {
}
bool CParrot::FrameMsg(CFrameMsg *msg) {
- if (compareViewNameTo("ParrotLobby.Node 1.N"))
+ if (!compareViewNameTo("ParrotLobby.Node 1.N"))
return false;
- if (_v4)
+ if (_state != PARROT_IN_CAGE)
return true;
Point pt = getMousePos();
@@ -574,12 +574,14 @@ bool CParrot::FrameMsg(CFrameMsg *msg) {
int xp = _bounds.left + _bounds.width() / 2;
if ((_npcFlags & NPCFLAG_400000) && !hasActiveMovie()) {
- _field128 = xp - (_field124 + _bounds.width() / 2);
+ _newXc = _newXp + _bounds.width() / 2;
+ int xDiff = ABS(xp - _newXc);
- if (xp < 64) {
- if (_field134) {
+ if (xDiff < 64) {
+ if (_panTarget) {
CActMsg actMsg("PanAwayFromParrot");
- actMsg.execute(_field134);
+ actMsg.execute(_panTarget);
+ _panTarget = nullptr;
}
_npcFlags &= ~(NPCFLAG_10000 | NPCFLAG_20000 | NPCFLAG_40000
@@ -601,14 +603,14 @@ bool CParrot::FrameMsg(CFrameMsg *msg) {
return false;
}
- _field128 = CLIP((int)pt.x, 230, 480);
+ _newXc = CLIP((int)pt.x, 230, 480);
if ((_npcFlags & NPCFLAG_10000) || hasActiveMovie())
return true;
- if (_field128 > 64) {
+ if (_newXc > 64) {
_npcFlags |= NPCFLAG_10000 | NPCFLAG_20000;
- if (_field128 >= xp) {
+ if (_newXc >= xp) {
setPosition(Point(_bounds.left + 30, _bounds.top));
_npcFlags |= NPCFLAG_200000;
playClip("Walk Right Intro", MOVIE_NOTIFY_OBJECT);
@@ -707,7 +709,7 @@ bool CParrot::PutParrotBackMsg(CPutParrotBackMsg *msg) {
int xp = CLIP(msg->_value, 230, 480);
setVisible(true);
moveToView();
- _v4 = 0;
+ _state = PARROT_IN_CAGE;
setPosition(Point(xp - _bounds.width() / 2, _bounds.top));
playRandomClip(NAMES, MOVIE_NOTIFY_OBJECT);
@@ -719,7 +721,7 @@ bool CParrot::PutParrotBackMsg(CPutParrotBackMsg *msg) {
}
bool CParrot::PreEnterViewMsg(CPreEnterViewMsg *msg) {
- if (!_v4) {
+ if (_state == PARROT_IN_CAGE) {
loadMovie("z167.avi", false);
loadFrame(0);
}
@@ -728,19 +730,19 @@ bool CParrot::PreEnterViewMsg(CPreEnterViewMsg *msg) {
}
bool CParrot::PanningAwayFromParrotMsg(CPanningAwayFromParrotMsg *msg) {
- if (_v4) {
+ if (_state != PARROT_IN_CAGE) {
CActMsg actMsg("PanAwayFromParrot");
actMsg.execute(msg->_target);
- _field134 = 0;
+ _panTarget = nullptr;
} else if (_v2) {
- _field134 = msg->_target;
+ _panTarget = msg->_target;
loadMovie("z168.avi", false);
stopMovie();
playClip("Take Off", MOVIE_NOTIFY_OBJECT);
_npcFlags |= NPCFLAG_2000000;
} else {
_npcFlags |= NPCFLAG_400000;
- _field134 = msg->_target;
+ _panTarget = msg->_target;
stopMovie();
}
@@ -748,7 +750,7 @@ bool CParrot::PanningAwayFromParrotMsg(CPanningAwayFromParrotMsg *msg) {
}
bool CParrot::LeaveRoomMsg(CLeaveRoomMsg *msg) {
- if (!_v4)
+ if (_state == PARROT_IN_CAGE)
startTalking(this, 280259);
return true;
diff --git a/engines/titanic/npcs/parrot.h b/engines/titanic/npcs/parrot.h
index 93e0643857..ce0397fb71 100644
--- a/engines/titanic/npcs/parrot.h
+++ b/engines/titanic/npcs/parrot.h
@@ -24,9 +24,15 @@
#define TITANIC_PARROT_H
#include "titanic/npcs/true_talk_npc.h"
+#include "titanic/moves/move_player_to.h"
namespace Titanic {
+enum ParrotState {
+ PARROT_IN_CAGE = 0, PARROT_1 = 1, PARROT_ESCAPED = 2,
+ PARROT_MAILED = 3, PARROT_4 = 4
+};
+
class CParrot : public CTrueTalkNPC {
DECLARE_MESSAGE_MAP;
bool ActMsg(CActMsg *msg);
@@ -49,19 +55,19 @@ public:
static int _v1;
static int _v2;
static int _v3;
- static int _v4;
+ static ParrotState _state;
static int _v5;
private:
int _field108;
CString _string2;
int _field118;
int _field11C;
- int _field120;
- int _field124;
- int _field128;
+ uint _lastSpeakTime;
+ int _newXp;
+ int _newXc;
int _field12C;
int _field130;
- CTreeItem *_field134;
+ CMovePlayerTo *_panTarget;
int _field138;
int _field13C;
int _field140;
diff --git a/engines/titanic/npcs/parrot_succubus.cpp b/engines/titanic/npcs/parrot_succubus.cpp
index 657bde5b66..08866f187d 100644
--- a/engines/titanic/npcs/parrot_succubus.cpp
+++ b/engines/titanic/npcs/parrot_succubus.cpp
@@ -78,7 +78,7 @@ bool CParrotSuccUBus::HoseConnectedMsg(CHoseConnectedMsg *msg) {
if (_enabled) {
_enabled = false;
} else {
- playMovie(_startFrame9, _endFrame9, 0);
+ playMovie(_onStartFrame, _onEndFrame, 0);
playSound("z#26.wav");
}
diff --git a/engines/titanic/npcs/starlings.cpp b/engines/titanic/npcs/starlings.cpp
index 7e5907f577..ff1c40cf29 100644
--- a/engines/titanic/npcs/starlings.cpp
+++ b/engines/titanic/npcs/starlings.cpp
@@ -29,34 +29,39 @@ BEGIN_MESSAGE_MAP(CStarlings, CCharacter)
ON_MESSAGE(StatusChangeMsg)
END_MESSAGE_MAP()
-CStarlings::CStarlings() : CCharacter(), _enabled(false) {
+bool CStarlings::_dead;
+
+CStarlings::CStarlings() : CCharacter() {
}
void CStarlings::save(SimpleFile *file, int indent) {
file->writeNumberLine(1, indent);
- file->writeNumberLine(_enabled, indent);
+ file->writeNumberLine(_dead, indent);
CCharacter::save(file, indent);
}
void CStarlings::load(SimpleFile *file) {
file->readNumber();
- _enabled = file->readNumber();
+ _dead = file->readNumber();
CCharacter::load(file);
}
bool CStarlings::EnterViewMsg(CEnterViewMsg *msg) {
- if (_enabled)
+ if (_dead)
+ // Tis but a flesh wound
setVisible(false);
else
+ // Repeatedly play the starlings flying
playMovie(MOVIE_REPEAT);
return true;
}
bool CStarlings::StatusChangeMsg(CStatusChangeMsg *msg) {
- _enabled = msg->_newStatus == 1;
- setVisible(!_enabled);
+ // I'm not dead.. I'm getting better.
+ _dead = msg->_newStatus == 1;
+ setVisible(!_dead);
return true;
}
diff --git a/engines/titanic/npcs/starlings.h b/engines/titanic/npcs/starlings.h
index 1998e6490d..4885777087 100644
--- a/engines/titanic/npcs/starlings.h
+++ b/engines/titanic/npcs/starlings.h
@@ -32,7 +32,8 @@ class CStarlings : public CCharacter {
bool EnterViewMsg(CEnterViewMsg *msg);
bool StatusChangeMsg(CStatusChangeMsg *msg);
private:
- bool _enabled;
+ // This needs to be static to be shared across all starling instances
+ static bool _dead;
public:
CLASSDEF;
CStarlings();
diff --git a/engines/titanic/npcs/succubus.cpp b/engines/titanic/npcs/succubus.cpp
index af859f9f3c..a05cc71d00 100644
--- a/engines/titanic/npcs/succubus.cpp
+++ b/engines/titanic/npcs/succubus.cpp
@@ -57,22 +57,22 @@ CSuccUBus::CSuccUBus() : CTrueTalkNPC() {
_endFrame8 = -1;
_startFrame11 = -1;
_endFrame11 = -1;
- _startFrame3 = 68;
- _endFrame3 = 168;
- _startFrame4 = 168;
- _endFrame4 = 248;
- _startFrame9 = 0;
- _endFrame9 = 0x0E;
- _startFrame10 = 0x0E;
- _endFrame10 = 27;
- _startFrame2 = 40;
- _endFrame2 = 68;
+ _sendStartFrame = 68;
+ _sendEndFrame = 168;
+ _receiveStartFrame = 168;
+ _receiveEndFrame = 248;
+ _onStartFrame = 0;
+ _onEndFrame = 0x0E;
+ _offStartFrame = 0x0E;
+ _offEndFrame = 27;
+ _okStartFrame = 40;
+ _okEndFrame = 68;
_field140 = 1;
_mailP = nullptr;
- _startFrame5 = 0;
- _endFrame5 = 0;
- _startFrame12 = 224;
- _endFrame12 = 248;
+ _afterReceiveStartFrame = 0;
+ _afterReceiveEndFrame = 0;
+ _trayOutStartFrame = 224;
+ _trayOutEndFrame = 248;
_field158 = 0;
_field15C = 0;
_string2 = "NULL";
@@ -82,16 +82,16 @@ CSuccUBus::CSuccUBus() : CTrueTalkNPC() {
_field184 = 15;
_field188 = 0;
_rect2 = Rect(0, 0, 240, 340);
- _field19C = 0;
+ _sendLost = false;
_soundHandle = -1;
_isChicken = false;
_isFeathers = false;
_field1AC = 0;
_field1B0 = 0;
- _startFrame6 = 303;
- _endFrame6 = 312;
- _startFrame7 = 313;
- _endFrame7 = 325;
+ _emptyStartFrame = 303;
+ _emptyEndFrame = 312;
+ _smokeStartFrame = 313;
+ _smokeEndFrame = 325;
_field1C4 = 326;
_field1C8 = 347;
_field1CC = 348;
@@ -108,23 +108,23 @@ void CSuccUBus::save(SimpleFile *file, int indent) {
file->writeNumberLine(_endFrame8, indent);
file->writeNumberLine(_startFrame11, indent);
file->writeNumberLine(_endFrame11, indent);
- file->writeNumberLine(_startFrame3, indent);
- file->writeNumberLine(_endFrame3, indent);
- file->writeNumberLine(_startFrame4, indent);
- file->writeNumberLine(_endFrame4, indent);
- file->writeNumberLine(_startFrame9, indent);
- file->writeNumberLine(_endFrame9, indent);
- file->writeNumberLine(_startFrame10, indent);
- file->writeNumberLine(_endFrame10, indent);
- file->writeNumberLine(_startFrame2, indent);
- file->writeNumberLine(_endFrame2, indent);
+ file->writeNumberLine(_sendStartFrame, indent);
+ file->writeNumberLine(_sendEndFrame, indent);
+ file->writeNumberLine(_receiveStartFrame, indent);
+ file->writeNumberLine(_receiveEndFrame, indent);
+ file->writeNumberLine(_onStartFrame, indent);
+ file->writeNumberLine(_onEndFrame, indent);
+ file->writeNumberLine(_offStartFrame, indent);
+ file->writeNumberLine(_offEndFrame, indent);
+ file->writeNumberLine(_okStartFrame, indent);
+ file->writeNumberLine(_okEndFrame, indent);
file->writeNumberLine(_field140, indent);
file->writeNumberLine(_v2, indent);
- file->writeNumberLine(_startFrame5, indent);
- file->writeNumberLine(_endFrame5, indent);
- file->writeNumberLine(_startFrame12, indent);
- file->writeNumberLine(_endFrame12, indent);
+ file->writeNumberLine(_afterReceiveStartFrame, indent);
+ file->writeNumberLine(_afterReceiveEndFrame, indent);
+ file->writeNumberLine(_trayOutStartFrame, indent);
+ file->writeNumberLine(_trayOutEndFrame, indent);
file->writeNumberLine(_field158, indent);
file->writeNumberLine(_field15C, indent);
@@ -141,16 +141,16 @@ void CSuccUBus::save(SimpleFile *file, int indent) {
file->writeNumberLine(_rect2.top, indent);
file->writeNumberLine(_rect2.right, indent);
file->writeNumberLine(_rect2.bottom, indent);
- file->writeNumberLine(_field19C, indent);
+ file->writeNumberLine(_sendLost, indent);
file->writeNumberLine(_soundHandle, indent);
file->writeNumberLine(_isChicken, indent);
file->writeNumberLine(_isFeathers, indent);
file->writeNumberLine(_field1AC, indent);
file->writeNumberLine(_field1B0, indent);
- file->writeNumberLine(_startFrame6, indent);
- file->writeNumberLine(_endFrame6, indent);
- file->writeNumberLine(_startFrame7, indent);
- file->writeNumberLine(_endFrame7, indent);
+ file->writeNumberLine(_emptyStartFrame, indent);
+ file->writeNumberLine(_emptyEndFrame, indent);
+ file->writeNumberLine(_smokeStartFrame, indent);
+ file->writeNumberLine(_smokeEndFrame, indent);
file->writeNumberLine(_field1C4, indent);
file->writeNumberLine(_field1C8, indent);
file->writeNumberLine(_field1CC, indent);
@@ -172,23 +172,23 @@ void CSuccUBus::load(SimpleFile *file) {
_endFrame8 = file->readNumber();
_startFrame11 = file->readNumber();
_endFrame11 = file->readNumber();
- _startFrame3 = file->readNumber();
- _endFrame3 = file->readNumber();
- _startFrame4 = file->readNumber();
- _endFrame4 = file->readNumber();
- _startFrame9 = file->readNumber();
- _endFrame9 = file->readNumber();
- _startFrame10 = file->readNumber();
- _endFrame10 = file->readNumber();
- _startFrame2 = file->readNumber();
- _endFrame2 = file->readNumber();
+ _sendStartFrame = file->readNumber();
+ _sendEndFrame = file->readNumber();
+ _receiveStartFrame = file->readNumber();
+ _receiveEndFrame = file->readNumber();
+ _onStartFrame = file->readNumber();
+ _onEndFrame = file->readNumber();
+ _offStartFrame = file->readNumber();
+ _offEndFrame = file->readNumber();
+ _okStartFrame = file->readNumber();
+ _okEndFrame = file->readNumber();
_field140 = file->readNumber();
_v2 = file->readNumber();
- _startFrame5 = file->readNumber();
- _endFrame5 = file->readNumber();
- _startFrame12 = file->readNumber();
- _endFrame12 = file->readNumber();
+ _afterReceiveStartFrame = file->readNumber();
+ _afterReceiveEndFrame = file->readNumber();
+ _trayOutStartFrame = file->readNumber();
+ _trayOutEndFrame = file->readNumber();
_field158 = file->readNumber();
_field15C = file->readNumber();
@@ -205,16 +205,16 @@ void CSuccUBus::load(SimpleFile *file) {
_rect2.top = file->readNumber();
_rect2.right = file->readNumber();
_rect2.bottom = file->readNumber();
- _field19C = file->readNumber();
+ _sendLost = file->readNumber();
_soundHandle = file->readNumber();
_isChicken = file->readNumber();
_isFeathers = file->readNumber();
_field1AC = file->readNumber();
_field1B0 = file->readNumber();
- _startFrame6 = file->readNumber();
- _endFrame6 = file->readNumber();
- _startFrame7 = file->readNumber();
- _endFrame7 = file->readNumber();
+ _emptyStartFrame = file->readNumber();
+ _emptyEndFrame = file->readNumber();
+ _smokeStartFrame = file->readNumber();
+ _smokeEndFrame = file->readNumber();
_field1C4 = file->readNumber();
_field1C8 = file->readNumber();
_field1CC = file->readNumber();
@@ -297,13 +297,13 @@ bool CSuccUBus::SubAcceptCCarryMsg(CSubAcceptCCarryMsg *msg) {
CSUBTransition transMsg;
transMsg.execute(this);
} else {
- if (_startFrame2 >= 0) {
+ if (_okStartFrame >= 0) {
startTalking(this, 70219, findView());
- playMovie(_startFrame2, _endFrame2, 0);
+ playMovie(_okStartFrame, _okEndFrame, 0);
}
- if (_startFrame3 >= 0) {
- playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT);
+ if (_sendStartFrame >= 0) {
+ playMovie(_sendStartFrame, _sendEndFrame, MOVIE_NOTIFY_OBJECT);
_field158 = 2;
}
@@ -340,8 +340,8 @@ bool CSuccUBus::LeaveViewMsg(CLeaveViewMsg *msg) {
petDisplayMessage(2, BLANK);
if (_startFrame8 >= 0)
loadFrame(_startFrame8);
- else if (!_field15C && _startFrame9 >= 0)
- loadFrame(_startFrame9);
+ else if (!_field15C && _onStartFrame >= 0)
+ loadFrame(_onStartFrame);
petClear();
if (_soundHandle != -1) {
@@ -351,7 +351,7 @@ bool CSuccUBus::LeaveViewMsg(CLeaveViewMsg *msg) {
if (_enabled) {
_enabled = false;
- if (_startFrame10 >= 0)
+ if (_offStartFrame >= 0)
playSound("z#27.wav", 100);
if (_field15C)
@@ -397,14 +397,12 @@ bool CSuccUBus::PETDeliverMsg(CPETDeliverMsg *msg) {
petDisplayMessage(2, NOTHING_IN_SUCCUBUS_TRAY);
} else {
- _field19C = 0;
+ _sendLost = false;
CRoomFlags roomFlags = _roomFlags;
- if (!pet->testRooms5(roomFlags) || getPassengerClass() > 0) {
+ if (!pet->isSuccUBusDest(roomFlags) || pet->getMailDestClass(roomFlags) < getPassengerClass()) {
roomFlags = pet->getSpecialRoomFlags("BilgeRoom");
- _field19C = 1;
- } else {
- pet->getMailDest(roomFlags);
+ _sendLost = true;
}
_isFeathers = mailObject->getName() == "Feathers";
@@ -415,38 +413,40 @@ bool CSuccUBus::PETDeliverMsg(CPETDeliverMsg *msg) {
incTransitions();
if (_isFeathers) {
- _field19C = 0;
- removeMail(destRoomFlags, roomFlags);
+ // The feather has special handling to be rejected by the SuccUBus
+ _sendLost = false;
+ sendMail(destRoomFlags, roomFlags);
pet->phonographAction("");
- if (_startFrame2 >= 0) {
- playMovie(_startFrame2, _endFrame2, 0);
+ if (_okStartFrame >= 0) {
+ playMovie(_okStartFrame, _okEndFrame, 0);
startTalking(this, 230022, findView());
}
_field158 = 1;
- if (_startFrame3 >= 0)
- playMovie(_startFrame3, _endFrame3, 0);
+ if (_sendStartFrame >= 0)
+ playMovie(_sendStartFrame, _sendEndFrame, 0);
- if (_startFrame4 >= 0) {
+ if (_receiveStartFrame >= 0) {
_mailP = mailObject;
- playMovie(_startFrame4, _endFrame4, MOVIE_NOTIFY_OBJECT);
+ playMovie(_receiveStartFrame, _receiveEndFrame, MOVIE_NOTIFY_OBJECT);
}
- if (_startFrame5 >= 0) {
- playMovie(_startFrame5, _endFrame5, 0);
+ if (_afterReceiveStartFrame >= 0) {
+ playMovie(_afterReceiveStartFrame, _afterReceiveEndFrame, 0);
}
} else {
- removeMail(pet->getRoomFlags(), roomFlags);
+ // Send the mail to the destination
+ sendMail(pet->getRoomFlags(), roomFlags);
pet->phonographAction("");
- if (_startFrame2 >= 0) {
- playMovie(_startFrame2, _endFrame2, 0);
+ if (_okStartFrame >= 0) {
+ playMovie(_okStartFrame, _okEndFrame, 0);
startTalking(this, 230012, findView());
}
- if (_startFrame3 >= 0)
- playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT);
+ if (_sendStartFrame >= 0)
+ playMovie(_sendStartFrame, _sendEndFrame, MOVIE_NOTIFY_OBJECT);
}
}
@@ -465,6 +465,7 @@ bool CSuccUBus::PETReceiveMsg(CPETReceiveMsg *msg) {
uint petRoomFlags = pet->getRoomFlags();
if (mailExists(petRoomFlags)) {
+ // There's already something to send in the tray, so you can't receive
switch (getRandomNumber(2)) {
case 0:
startTalking(this, 70080, findView());
@@ -482,24 +483,26 @@ bool CSuccUBus::PETReceiveMsg(CPETReceiveMsg *msg) {
CGameObject *mailObject = findMailByFlags(
_v3 && compareRoomNameTo("Titania") ? 3 : _field140, petRoomFlags);
if (!mailObject) {
+ // No mail for this SuccUBus
if (getRandomNumber(1) == 0) {
startTalking(this, 70104, findView());
} else {
startTalking(this, 70105, findView());
}
- playMovie(_startFrame6, _endFrame6, 0);
- playMovie(_startFrame7, _endFrame7, 0);
+ playMovie(_emptyStartFrame, _emptyEndFrame, 0);
+ playMovie(_smokeStartFrame, _smokeEndFrame, 0);
petDisplayMessage(2, NOTHING_TO_DELIVER);
} else {
+ // Receive the mail addressed to this SuccUBus
_mailP = mailObject;
startTalking(this, 230004, findView());
- if (_startFrame4 >= 0) {
+ if (_receiveStartFrame >= 0) {
_field158 = 1;
_field1D8 = 1;
incTransitions();
- playMovie(_startFrame4, _endFrame4, MOVIE_NOTIFY_OBJECT);
+ playMovie(_receiveStartFrame, _receiveEndFrame, MOVIE_NOTIFY_OBJECT);
}
}
}
@@ -511,7 +514,7 @@ bool CSuccUBus::MovieEndMsg(CMovieEndMsg *msg) {
CPetControl *pet = getPetControl();
uint petRoomFlags = pet ? pet->getRoomFlags() : 0;
- if (msg->_endFrame == _endFrame10) {
+ if (msg->_endFrame == _offEndFrame) {
if (_startFrame11 >= 0)
playSound("z#30.wav", 100);
@@ -524,7 +527,7 @@ bool CSuccUBus::MovieEndMsg(CMovieEndMsg *msg) {
}
}
- if (msg->_endFrame == _endFrame9) {
+ if (msg->_endFrame == _onEndFrame) {
bool flag = false;
if (pet && !mailExists(petRoomFlags)) {
@@ -585,14 +588,14 @@ bool CSuccUBus::MovieEndMsg(CMovieEndMsg *msg) {
}
}
- if (msg->_endFrame == _endFrame3) {
+ if (msg->_endFrame == _sendEndFrame) {
if (_field158 == 1) {
startTalking(this, 230022, findView());
} else if (_field158 == 2) {
startTalking(this, 230017, findView());
- } else if (_field19C) {
+ } else if (_sendLost) {
startTalking(this, 230019, findView());
- _field19C = 0;
+ _sendLost = false;
} else if (_isChicken) {
startTalking(this, 230018, findView());
_isChicken = false;
@@ -609,7 +612,7 @@ bool CSuccUBus::MovieEndMsg(CMovieEndMsg *msg) {
transMsg.execute(this);
}
- if (msg->_endFrame == _endFrame4) {
+ if (msg->_endFrame == _receiveEndFrame) {
// SuccUBus disgorged mail
if (pet && _mailP) {
_mailP->setMailDest(petRoomFlags);
@@ -661,8 +664,8 @@ bool CSuccUBus::TurnOn(CTurnOn *msg) {
playSound("z#30.wav", 100);
}
- if (_startFrame9 >= 0) {
- playMovie(_startFrame9, _endFrame9, MOVIE_NOTIFY_OBJECT);
+ if (_onStartFrame >= 0) {
+ playMovie(_onStartFrame, _onEndFrame, MOVIE_NOTIFY_OBJECT);
playSound("z#26.wav", 100);
}
@@ -689,9 +692,9 @@ bool CSuccUBus::TurnOff(CTurnOff *msg) {
_soundHandle = -1;
}
- if (_startFrame10 >= 0) {
+ if (_offStartFrame >= 0) {
playSound("z#27.wav", 100);
- playMovie(_startFrame10, _endFrame10, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+ playMovie(_offStartFrame, _offEndFrame, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
}
if (!_field15C && _startFrame11 >= 0)
diff --git a/engines/titanic/npcs/succubus.h b/engines/titanic/npcs/succubus.h
index 7ca8037a0a..d996bcdc68 100644
--- a/engines/titanic/npcs/succubus.h
+++ b/engines/titanic/npcs/succubus.h
@@ -56,22 +56,22 @@ protected:
int _endFrame8;
int _startFrame11;
int _endFrame11;
- int _startFrame3;
- int _endFrame3;
- int _startFrame4;
- int _endFrame4;
- int _startFrame9;
- int _endFrame9;
- int _startFrame10;
- int _endFrame10;
- int _startFrame2;
- int _endFrame2;
+ int _sendStartFrame;
+ int _sendEndFrame;
+ int _receiveStartFrame;
+ int _receiveEndFrame;
+ int _onStartFrame;
+ int _onEndFrame;
+ int _offStartFrame;
+ int _offEndFrame;
+ int _okStartFrame;
+ int _okEndFrame;
int _field140;
CGameObject *_mailP;
- int _startFrame5;
- int _endFrame5;
- int _startFrame12;
- int _endFrame12;
+ int _afterReceiveStartFrame;
+ int _afterReceiveEndFrame;
+ int _trayOutStartFrame;
+ int _trayOutEndFrame;
int _field158;
bool _field15C;
CString _string2;
@@ -84,16 +84,16 @@ protected:
int _field190;
int _field194;
int _field198;
- int _field19C;
+ bool _sendLost;
int _soundHandle;
bool _isChicken;
bool _isFeathers;
int _field1AC;
int _field1B0;
- int _startFrame6;
- int _endFrame6;
- int _startFrame7;
- int _endFrame7;
+ int _emptyStartFrame;
+ int _emptyEndFrame;
+ int _smokeStartFrame;
+ int _smokeEndFrame;
int _field1C4;
int _field1C8;
int _field1CC;
diff --git a/engines/titanic/pet_control/pet_control.cpp b/engines/titanic/pet_control/pet_control.cpp
index b7fece7569..55b2ecc24b 100644
--- a/engines/titanic/pet_control/pet_control.cpp
+++ b/engines/titanic/pet_control/pet_control.cpp
@@ -699,11 +699,11 @@ void CPetControl::resetDials0() {
_conversations.resetDials0();
}
-int CPetControl::getMailDest(const CRoomFlags &roomFlags) const {
+PassengerClass CPetControl::getMailDestClass(const CRoomFlags &roomFlags) const {
if (!roomFlags.isSuccUBusRoomFlags())
- return (int)roomFlags.getPassengerClassNum();
+ return roomFlags.getPassengerClassNum();
- return roomFlags.getSuccUBusNum(roomFlags.getSuccUBusRoomName());
+ return roomFlags.getSuccUBusClass(roomFlags.getSuccUBusRoomName());
}
void CPetControl::starsSetButtons(int val1, int val2) {
diff --git a/engines/titanic/pet_control/pet_control.h b/engines/titanic/pet_control/pet_control.h
index 0a8b6295be..a63c29d6b3 100644
--- a/engines/titanic/pet_control/pet_control.h
+++ b/engines/titanic/pet_control/pet_control.h
@@ -522,11 +522,14 @@ public:
}
/**
- * Get mail destination given the specified flags
+ * Get the passenger class of the specified room flags
*/
- int getMailDest(const CRoomFlags &roomFlags) const;
+ PassengerClass getMailDestClass(const CRoomFlags &roomFlags) const;
- bool testRooms5(uint roomFlags) {
+ /**
+ * Returns whether the given room flags specify a location with a SuccUBus
+ */
+ bool isSuccUBusDest(uint roomFlags) {
return CRoomFlags(roomFlags).not5();
}
diff --git a/engines/titanic/pet_control/pet_conversations.h b/engines/titanic/pet_control/pet_conversations.h
index c3508f62a8..37d216ed2f 100644
--- a/engines/titanic/pet_control/pet_conversations.h
+++ b/engines/titanic/pet_control/pet_conversations.h
@@ -24,7 +24,7 @@
#define TITANIC_PET_CONVERSATIONS_H
#include "titanic/pet_control/pet_section.h"
-#include "titanic/pet_control/pet_text.h"
+#include "titanic/gfx/text_control.h"
#include "titanic/pet_control/pet_gfx_element.h"
#include "titanic/true_talk/true_talk_manager.h"
@@ -48,8 +48,8 @@ private:
CPetGfxElement _splitter;
CPetGfxElement _npcIcons[9];
int _npcNum;
- CPetText _log;
- CPetText _textInput;
+ CTextControl _log;
+ CTextControl _textInput;
bool _logChanged;
int _field418;
CString _npcName;
diff --git a/engines/titanic/pet_control/pet_drag_chev.cpp b/engines/titanic/pet_control/pet_drag_chev.cpp
index 957fe5295c..4b54d3e69c 100644
--- a/engines/titanic/pet_control/pet_drag_chev.cpp
+++ b/engines/titanic/pet_control/pet_drag_chev.cpp
@@ -59,6 +59,7 @@ bool CPetDragChev::MouseDragEndMsg(CMouseDragEndMsg *msg) {
if (succubus) {
CSetChevRoomBits chevMsg(_destRoomFlags);
chevMsg.execute(succubus);
+ petMoveToHiddenRoom();
} else {
CPetControl *petControl = getPetControl();
if (!petControl || !petControl->contains(msg->_mousePos)
diff --git a/engines/titanic/pet_control/pet_glyphs.cpp b/engines/titanic/pet_control/pet_glyphs.cpp
index ed043811ce..b42b87199b 100644
--- a/engines/titanic/pet_control/pet_glyphs.cpp
+++ b/engines/titanic/pet_control/pet_glyphs.cpp
@@ -39,7 +39,7 @@ void CPetGlyph::drawAt(CScreenManager *screenManager, const Point &pt, bool isHi
}
void CPetGlyph::updateTooltip() {
- CPetText *petText = getPetSection()->getText();
+ CTextControl *petText = getPetSection()->getText();
if (petText) {
petText->setColor(getPetSection()->getColor(0));
getTooltip(petText);
diff --git a/engines/titanic/pet_control/pet_glyphs.h b/engines/titanic/pet_control/pet_glyphs.h
index ac008c5ab0..6229d17994 100644
--- a/engines/titanic/pet_control/pet_glyphs.h
+++ b/engines/titanic/pet_control/pet_glyphs.h
@@ -35,7 +35,7 @@ namespace Titanic {
class CPetGlyphs;
class CPetSection;
-class CPetText;
+class CTextControl;
enum GlyphActionMode { ACTION_REMOVE = 0, ACTION_REMOVED = 1, ACTION_CHANGE = 2 };
@@ -177,7 +177,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text) {}
+ virtual void getTooltip(CTextControl *text) {}
/**
* Saves the data for the glyph
diff --git a/engines/titanic/pet_control/pet_inventory.cpp b/engines/titanic/pet_control/pet_inventory.cpp
index c1eb0754a2..aa1bb31809 100644
--- a/engines/titanic/pet_control/pet_inventory.cpp
+++ b/engines/titanic/pet_control/pet_inventory.cpp
@@ -94,6 +94,15 @@ bool CPetInventory::VirtualKeyCharMsg(CVirtualKeyCharMsg *msg) {
return _items.VirtualKeyCharMsg(msg);
}
+bool CPetInventory::MouseWheelMsg(CMouseWheelMsg *msg) {
+ if (msg->_wheelUp)
+ _items.scrollLeft();
+ else
+ _items.scrollRight();
+
+ return true;
+}
+
CGameObject *CPetInventory::dragEnd(const Point &pt) const {
return _items.getObjectAt(pt);
}
diff --git a/engines/titanic/pet_control/pet_inventory.h b/engines/titanic/pet_control/pet_inventory.h
index 5433feae95..7efc0755d8 100644
--- a/engines/titanic/pet_control/pet_inventory.h
+++ b/engines/titanic/pet_control/pet_inventory.h
@@ -26,7 +26,7 @@
#include "titanic/support/simple_file.h"
#include "titanic/pet_control/pet_section.h"
#include "titanic/pet_control/pet_inventory_glyphs.h"
-#include "titanic/pet_control/pet_text.h"
+#include "titanic/gfx/text_control.h"
namespace Titanic {
@@ -35,7 +35,7 @@ namespace Titanic {
*/
class CPetInventory : public CPetSection {
private:
- CPetText _text;
+ CTextControl _text;
CPetInventoryGlyphs _items;
CGameObject *_itemBackgrounds[46];
CGameObject *_itemGlyphs[46];
@@ -94,6 +94,7 @@ public:
virtual bool MouseButtonUpMsg(CMouseButtonUpMsg *msg);
virtual bool MouseDoubleClickMsg(CMouseDoubleClickMsg *msg);
virtual bool VirtualKeyCharMsg(CVirtualKeyCharMsg *msg);
+ virtual bool MouseWheelMsg(CMouseWheelMsg *msg);
/**
* Returns item a drag-drop operation has dropped on, if any
@@ -133,7 +134,7 @@ public:
/**
* Get a reference to the tooltip text associated with the section
*/
- virtual CPetText *getText() { return &_text; }
+ virtual CTextControl *getText() { return &_text; }
/**
* Special retrieval of glyph background image
diff --git a/engines/titanic/pet_control/pet_inventory_glyphs.cpp b/engines/titanic/pet_control/pet_inventory_glyphs.cpp
index 74d769af6d..9d745d8806 100644
--- a/engines/titanic/pet_control/pet_inventory_glyphs.cpp
+++ b/engines/titanic/pet_control/pet_inventory_glyphs.cpp
@@ -143,7 +143,7 @@ bool CPetInventoryGlyph::dragGlyph(const Point &topLeft, CMouseDragStartMsg *msg
}
}
-void CPetInventoryGlyph::getTooltip(CPetText *text) {
+void CPetInventoryGlyph::getTooltip(CTextControl *text) {
if (text) {
text->setText("");
diff --git a/engines/titanic/pet_control/pet_inventory_glyphs.h b/engines/titanic/pet_control/pet_inventory_glyphs.h
index 508db67f2d..e843cf53f9 100644
--- a/engines/titanic/pet_control/pet_inventory_glyphs.h
+++ b/engines/titanic/pet_control/pet_inventory_glyphs.h
@@ -106,7 +106,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
/**
* Return whether the glyph is currently valid
diff --git a/engines/titanic/pet_control/pet_load.cpp b/engines/titanic/pet_control/pet_load.cpp
index 3d67cf6d71..81ea85874f 100644
--- a/engines/titanic/pet_control/pet_load.cpp
+++ b/engines/titanic/pet_control/pet_load.cpp
@@ -50,7 +50,7 @@ bool CPetLoad::MouseButtonUpMsg(const Point &pt) {
}
}
-void CPetLoad::getTooltip(CPetText *text) {
+void CPetLoad::getTooltip(CTextControl *text) {
text->setText("Load the game.");
}
diff --git a/engines/titanic/pet_control/pet_load.h b/engines/titanic/pet_control/pet_load.h
index 5669991b59..103477a2f5 100644
--- a/engines/titanic/pet_control/pet_load.h
+++ b/engines/titanic/pet_control/pet_load.h
@@ -47,7 +47,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
/**
* Highlights a save slot
diff --git a/engines/titanic/pet_control/pet_load_save.h b/engines/titanic/pet_control/pet_load_save.h
index 26ddec0ff9..5bdb2b5485 100644
--- a/engines/titanic/pet_control/pet_load_save.h
+++ b/engines/titanic/pet_control/pet_load_save.h
@@ -24,7 +24,7 @@
#define TITANIC_PET_LOAD_SAVE_H
#include "titanic/pet_control/pet_glyphs.h"
-#include "titanic/pet_control/pet_text.h"
+#include "titanic/gfx/text_control.h"
namespace Titanic {
@@ -52,7 +52,7 @@ private:
*/
bool isSlotHighlighted(int index, const Point &pt);
protected:
- CPetText _slotNames[SAVEGAME_SLOTS_COUNT];
+ CTextControl _slotNames[SAVEGAME_SLOTS_COUNT];
bool _slotInUse[SAVEGAME_SLOTS_COUNT];
CPetGfxElement _btnLoadSave;
CPetGfxElement _gutter;
diff --git a/engines/titanic/pet_control/pet_quit.cpp b/engines/titanic/pet_control/pet_quit.cpp
index a6fb22d7e1..0d94474f99 100644
--- a/engines/titanic/pet_control/pet_quit.cpp
+++ b/engines/titanic/pet_control/pet_quit.cpp
@@ -83,7 +83,7 @@ bool CPetQuit::MouseButtonUpMsg(const Point &pt) {
}
}
-void CPetQuit::getTooltip(CPetText *text) {
+void CPetQuit::getTooltip(CTextControl *text) {
text->setText("Quit the game.");
}
diff --git a/engines/titanic/pet_control/pet_quit.h b/engines/titanic/pet_control/pet_quit.h
index b775000933..7eeedaf701 100644
--- a/engines/titanic/pet_control/pet_quit.h
+++ b/engines/titanic/pet_control/pet_quit.h
@@ -25,13 +25,13 @@
#include "titanic/pet_control/pet_gfx_element.h"
#include "titanic/pet_control/pet_glyphs.h"
-#include "titanic/pet_control/pet_text.h"
+#include "titanic/gfx/text_control.h"
namespace Titanic {
class CPetQuit : public CPetGlyph {
private:
- CPetText _text;
+ CTextControl _text;
CPetGfxElement _btnYes;
public:
/**
@@ -62,12 +62,12 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
/**
* Get a reference to the tooltip text associated with the section
*/
- virtual CPetText *getText() { return &_text; }
+ virtual CTextControl *getText() { return &_text; }
};
} // End of namespace Titanic
diff --git a/engines/titanic/pet_control/pet_real_life.h b/engines/titanic/pet_control/pet_real_life.h
index 7c7101a84b..294f9a3f9f 100644
--- a/engines/titanic/pet_control/pet_real_life.h
+++ b/engines/titanic/pet_control/pet_real_life.h
@@ -25,7 +25,7 @@
#include "titanic/pet_control/pet_section.h"
#include "titanic/pet_control/pet_glyphs.h"
-#include "titanic/pet_control/pet_text.h"
+#include "titanic/gfx/text_control.h"
namespace Titanic {
@@ -35,7 +35,7 @@ class CPetSaveGlyphs : public CPetGlyphs {
class CPetRealLife : public CPetSection {
private:
CPetGlyphs _glyphs;
- CPetText _text;
+ CTextControl _text;
private:
/**
* Does setup
@@ -124,7 +124,7 @@ public:
/**
* Get a reference to the tooltip text associated with the section
*/
- virtual CPetText *getText() { return &_text; }
+ virtual CTextControl *getText() { return &_text; }
};
diff --git a/engines/titanic/pet_control/pet_remote.cpp b/engines/titanic/pet_control/pet_remote.cpp
index 3f00ce5066..0293ec93a1 100644
--- a/engines/titanic/pet_control/pet_remote.cpp
+++ b/engines/titanic/pet_control/pet_remote.cpp
@@ -202,7 +202,7 @@ void CPetRemote::enterRoom(CRoomItem *room) {
}
}
-CPetText *CPetRemote::getText() {
+CTextControl *CPetRemote::getText() {
return &_text;
}
diff --git a/engines/titanic/pet_control/pet_remote.h b/engines/titanic/pet_control/pet_remote.h
index 9cd9c1e9d7..008c6459df 100644
--- a/engines/titanic/pet_control/pet_remote.h
+++ b/engines/titanic/pet_control/pet_remote.h
@@ -27,7 +27,7 @@
#include "titanic/pet_control/pet_section.h"
#include "titanic/pet_control/pet_glyphs.h"
#include "titanic/pet_control/pet_remote_glyphs.h"
-#include "titanic/pet_control/pet_text.h"
+#include "titanic/gfx/text_control.h"
namespace Titanic {
@@ -45,7 +45,7 @@ private:
CPetGfxElement _send;
CPetGfxElement _receive;
CPetGfxElement _call;
- CPetText _text;
+ CTextControl _text;
private:
/**
* Setup the control
@@ -137,7 +137,7 @@ public:
/**
* Get a reference to the tooltip text associated with the section
*/
- virtual CPetText *getText();
+ virtual CTextControl *getText();
/**
* Get an element from the section by a designated Id
diff --git a/engines/titanic/pet_control/pet_remote_glyphs.cpp b/engines/titanic/pet_control/pet_remote_glyphs.cpp
index f0e71d31ee..7f52ca7ee9 100644
--- a/engines/titanic/pet_control/pet_remote_glyphs.cpp
+++ b/engines/titanic/pet_control/pet_remote_glyphs.cpp
@@ -81,7 +81,7 @@ bool CBasicRemoteGlyph::MouseButtonUpMsg(const Point &pt) {
return false;
}
-void CBasicRemoteGlyph::getTooltip(CPetText *text) {
+void CBasicRemoteGlyph::getTooltip(CTextControl *text) {
text->setText(_tooltip);
}
@@ -160,7 +160,7 @@ bool CRemoteGotoGlyph::MouseButtonUpMsg(const Point &pt) {
return true;
}
-void CRemoteGotoGlyph::getTooltip(CPetText *text) {
+void CRemoteGotoGlyph::getTooltip(CTextControl *text) {
text->setText(_tooltip);
}
@@ -216,7 +216,7 @@ bool CTelevisionControlGlyph::MouseButtonUpMsg(const Point &pt) {
return false;
}
-void CTelevisionControlGlyph::getTooltip(CPetText *text) {
+void CTelevisionControlGlyph::getTooltip(CTextControl *text) {
text->setText(TELEVISION_CONTROL);
}
@@ -280,7 +280,7 @@ bool CEntertainmentDeviceGlyph::MouseButtonUpMsg(const Point &pt) {
return false;
}
-void CEntertainmentDeviceGlyph::getTooltip(CPetText *text) {
+void CEntertainmentDeviceGlyph::getTooltip(CTextControl *text) {
text->setText(OPERATE_ENTERTAINMENT);
}
@@ -334,7 +334,7 @@ bool COperateLightsGlyph::MouseButtonUpMsg(const Point &pt) {
return true;
}
-void COperateLightsGlyph::getTooltip(CPetText *text) {
+void COperateLightsGlyph::getTooltip(CTextControl *text) {
text->setText(OPERATE_LIGHTS);
}
@@ -346,7 +346,7 @@ bool CDeployFloralGlyph::setup(CPetControl *petControl, CPetGlyphs *owner) {
return true;
}
-void CDeployFloralGlyph::getTooltip(CPetText *text) {
+void CDeployFloralGlyph::getTooltip(CTextControl *text) {
text->setText(DEPLOY_FLORAL_ENHANCEMENT);
}
@@ -359,7 +359,7 @@ bool CDeployFullyRelaxationGlyph::setup(CPetControl *petControl, CPetGlyphs *own
return true;
}
-void CDeployFullyRelaxationGlyph::getTooltip(CPetText *text) {
+void CDeployFullyRelaxationGlyph::getTooltip(CTextControl *text) {
text->setText(DEPLOY_FULLY_RELAXATION);
}
@@ -371,7 +371,7 @@ bool CDeployComfortGlyph::setup(CPetControl *petControl, CPetGlyphs *owner) {
return true;
}
-void CDeployComfortGlyph::getTooltip(CPetText *text) {
+void CDeployComfortGlyph::getTooltip(CTextControl *text) {
text->setText(DEPLOY_COMFORT_WORKSTATION);
}
@@ -383,7 +383,7 @@ bool CDeployMinorStorageGlyph::setup(CPetControl *petControl, CPetGlyphs *owner)
return true;
}
-void CDeployMinorStorageGlyph::getTooltip(CPetText *text) {
+void CDeployMinorStorageGlyph::getTooltip(CTextControl *text) {
text->setText(DEPLOY_MINOR_STORAGE);
}
@@ -395,7 +395,7 @@ bool CDeployMajorRelaxationGlyph::setup(CPetControl *petControl, CPetGlyphs *own
return true;
}
-void CDeployMajorRelaxationGlyph::getTooltip(CPetText *text) {
+void CDeployMajorRelaxationGlyph::getTooltip(CTextControl *text) {
text->setText(DEPLOY_MAJOR_RELAXATION);
}
@@ -407,7 +407,7 @@ bool CInflateRelaxationGlyph::setup(CPetControl *petControl, CPetGlyphs *owner)
return true;
}
-void CInflateRelaxationGlyph::getTooltip(CPetText *text) {
+void CInflateRelaxationGlyph::getTooltip(CTextControl *text) {
text->setText(INFLATE_RELAXATION_DEVICE);
}
@@ -419,7 +419,7 @@ bool CDeployMaintenanceGlyph::setup(CPetControl *petControl, CPetGlyphs *owner)
return true;
}
-void CDeployMaintenanceGlyph::getTooltip(CPetText *text) {
+void CDeployMaintenanceGlyph::getTooltip(CTextControl *text) {
text->setText(DEPLOY_MAINTENANCE_HUB);
}
@@ -431,7 +431,7 @@ bool CDeployWorkSurfaceGlyph::setup(CPetControl *petControl, CPetGlyphs *owner)
return true;
}
-void CDeployWorkSurfaceGlyph::getTooltip(CPetText *text) {
+void CDeployWorkSurfaceGlyph::getTooltip(CTextControl *text) {
text->setText(DEPLOY_EXECUTIVE_SURFACE);
}
@@ -443,7 +443,7 @@ bool CDeployMinorRelaxationGlyph::setup(CPetControl *petControl, CPetGlyphs *own
return true;
}
-void CDeployMinorRelaxationGlyph::getTooltip(CPetText *text) {
+void CDeployMinorRelaxationGlyph::getTooltip(CTextControl *text) {
text->setText(DEPLOY_MINOR_RELAXATION);
}
@@ -455,7 +455,7 @@ bool CDeploySinkGlyph::setup(CPetControl *petControl, CPetGlyphs *owner) {
return true;
}
-void CDeploySinkGlyph::getTooltip(CPetText *text) {
+void CDeploySinkGlyph::getTooltip(CTextControl *text) {
text->setText(DEPLOY_SINK);
}
@@ -467,7 +467,7 @@ bool CDeployMajorStorageGlyph::setup(CPetControl *petControl, CPetGlyphs *owner)
return true;
}
-void CDeployMajorStorageGlyph::getTooltip(CPetText *text) {
+void CDeployMajorStorageGlyph::getTooltip(CTextControl *text) {
text->setText(DEPLOY_MAJOR_STORAGE);
}
@@ -515,7 +515,7 @@ bool CSuccubusDeliveryGlyph::MouseButtonUpMsg(const Point &pt) {
return true;
}
-void CSuccubusDeliveryGlyph::getTooltip(CPetText *text) {
+void CSuccubusDeliveryGlyph::getTooltip(CTextControl *text) {
text->setText(SUCCUBUS_DELIVERY_SYSTEM);
}
@@ -554,7 +554,7 @@ bool CNavigationControllerGlyph::MouseButtonUpMsg(const Point &pt) {
return true;
}
-void CNavigationControllerGlyph::getTooltip(CPetText *text) {
+void CNavigationControllerGlyph::getTooltip(CTextControl *text) {
text->setText(NAVIGATION_CONTROLLER);
}
diff --git a/engines/titanic/pet_control/pet_remote_glyphs.h b/engines/titanic/pet_control/pet_remote_glyphs.h
index 691a70f609..0a035ec03a 100644
--- a/engines/titanic/pet_control/pet_remote_glyphs.h
+++ b/engines/titanic/pet_control/pet_remote_glyphs.h
@@ -116,7 +116,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
};
class CToggleRemoteGlyph : public CPetRemoteGlyph {
@@ -181,7 +181,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
};
class CSummonElevatorGlyph : public CBasicRemoteGlyph {
@@ -225,7 +225,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
};
class CEntertainmentDeviceGlyph : public CToggleRemoteGlyph {
@@ -259,7 +259,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
};
@@ -293,7 +293,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
};
class CDeployFloralGlyph : public CToggleRemoteGlyph {
@@ -320,7 +320,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
};
class CDeployFullyRelaxationGlyph : public CToggleRemoteGlyph {
@@ -347,7 +347,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
};
class CDeployComfortGlyph : public CToggleRemoteGlyph {
@@ -374,7 +374,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
};
class CDeployMinorStorageGlyph : public CToggleRemoteGlyph {
@@ -401,7 +401,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
};
class CDeployMajorRelaxationGlyph : public CToggleRemoteGlyph {
@@ -428,7 +428,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
};
class CInflateRelaxationGlyph : public CToggleRemoteGlyph {
@@ -455,7 +455,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
};
class CDeployMaintenanceGlyph : public CToggleRemoteGlyph {
@@ -482,7 +482,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
};
class CDeployWorkSurfaceGlyph : public CToggleRemoteGlyph {
@@ -509,7 +509,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
};
class CDeployMinorRelaxationGlyph : public CToggleRemoteGlyph {
@@ -536,7 +536,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
};
class CDeploySinkGlyph : public CToggleRemoteGlyph {
@@ -563,7 +563,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
};
class CDeployMajorStorageGlyph : public CToggleRemoteGlyph {
@@ -590,7 +590,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
};
class CSuccubusDeliveryGlyph : public CPetRemoteGlyph {
@@ -623,7 +623,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
};
class CNavigationControllerGlyph : public CPetRemoteGlyph {
@@ -657,7 +657,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
};
class CGotoBottomOfWellGlyph : public CRemoteGotoGlyph {
diff --git a/engines/titanic/pet_control/pet_rooms.cpp b/engines/titanic/pet_control/pet_rooms.cpp
index f8017373ec..88d9df15cd 100644
--- a/engines/titanic/pet_control/pet_rooms.cpp
+++ b/engines/titanic/pet_control/pet_rooms.cpp
@@ -97,8 +97,8 @@ bool CPetRooms::VirtualKeyCharMsg(CVirtualKeyCharMsg *msg) {
}
bool CPetRooms::checkDragEnd(CGameObject *item) {
- // Ignore any item drops except valid mail items
- if (!item->_isMail)
+ // Ignore any item drops except onto mail items
+ if (!item->_isPendingMail)
return false;
uint roomFlags = item->_destRoomFlags;
@@ -170,7 +170,7 @@ void CPetRooms::enterRoom(CRoomItem *room) {
resetHighlight();
}
-CPetText *CPetRooms::getText() {
+CTextControl *CPetRooms::getText() {
return &_text;
}
diff --git a/engines/titanic/pet_control/pet_rooms.h b/engines/titanic/pet_control/pet_rooms.h
index 19c97c0d4e..6b71359ce6 100644
--- a/engines/titanic/pet_control/pet_rooms.h
+++ b/engines/titanic/pet_control/pet_rooms.h
@@ -24,7 +24,7 @@
#define TITANIC_PET_ROOMS_H
#include "titanic/pet_control/pet_section.h"
-#include "titanic/pet_control/pet_text.h"
+#include "titanic/gfx/text_control.h"
#include "titanic/pet_control/pet_rooms_glyphs.h"
#include "titanic/game_location.h"
@@ -43,7 +43,7 @@ private:
CGameObject *_chevRightOnLit;
CGameObject *_chevRightOffLit;
CPetGfxElement _plinth;
- CPetText _text;
+ CTextControl _text;
int _floorNum;
int _elevatorNum;
int _roomNum;
@@ -141,7 +141,7 @@ public:
/**
* Get a reference to the tooltip text associated with the section
*/
- virtual CPetText *getText();
+ virtual CTextControl *getText();
/**
* Special retrieval of glyph background image
diff --git a/engines/titanic/pet_control/pet_rooms_glyphs.cpp b/engines/titanic/pet_control/pet_rooms_glyphs.cpp
index e911759f25..a69704c7a5 100644
--- a/engines/titanic/pet_control/pet_rooms_glyphs.cpp
+++ b/engines/titanic/pet_control/pet_rooms_glyphs.cpp
@@ -124,7 +124,7 @@ bool CPetRoomsGlyph::dragGlyph(const Point &topLeft, CMouseDragStartMsg *msg) {
if (chevron) {
chevron->_destRoomFlags = _roomFlags;
- chevron->_isMail = _mailFlag != 0;
+ chevron->_isPendingMail = _mailFlag != 0;
petControl->removeFromInventory(chevron, false, false);
chevron->loadSurface();
@@ -141,19 +141,19 @@ bool CPetRoomsGlyph::dragGlyph(const Point &topLeft, CMouseDragStartMsg *msg) {
return false;
}
-void CPetRoomsGlyph::getTooltip(CPetText *text) {
+void CPetRoomsGlyph::getTooltip(CTextControl *text) {
CRoomFlags roomFlags(_roomFlags);
CPetRooms *owner = static_cast<CPetRooms *>(getPetSection());
- CString msg;
+ CString prefix;
if (isCurrentlyAssigned()) {
- msg = "Your assigned room: ";
+ prefix = "Your assigned room: ";
} else if (isPreviouslyAssigned()) {
- msg = "A previously assigned room: ";
+ prefix = "A previously assigned room: ";
} else if (!_mailFlag) {
- msg = "Saved Chevron: ";
+ prefix = "Saved Chevron: ";
} else if (_mailFlag == 1 && owner->getRoomFlags() == _roomFlags) {
- msg = "Current location: ";
+ prefix = "Current location: ";
}
// Get the room description
@@ -165,7 +165,7 @@ void CPetRoomsGlyph::getTooltip(CPetText *text) {
}
roomStr += " (shift-click edits)";
- text->setText(roomStr);
+ text->setText(prefix + roomStr);
}
void CPetRoomsGlyph::saveGlyph(SimpleFile *file, int indent) {
diff --git a/engines/titanic/pet_control/pet_rooms_glyphs.h b/engines/titanic/pet_control/pet_rooms_glyphs.h
index 6c51b6f875..3a43bdc06c 100644
--- a/engines/titanic/pet_control/pet_rooms_glyphs.h
+++ b/engines/titanic/pet_control/pet_rooms_glyphs.h
@@ -89,7 +89,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
/**
* Saves the data for the glyph
diff --git a/engines/titanic/pet_control/pet_save.cpp b/engines/titanic/pet_control/pet_save.cpp
index 60afa11ab4..00dbfa6b4a 100644
--- a/engines/titanic/pet_control/pet_save.cpp
+++ b/engines/titanic/pet_control/pet_save.cpp
@@ -64,7 +64,7 @@ void CPetSave::highlightCurrent(const Point &pt) {
highlightSave(_savegameSlotNum);
}
-void CPetSave::getTooltip(CPetText *text) {
+void CPetSave::getTooltip(CTextControl *text) {
text->setText("Save the game.");
}
diff --git a/engines/titanic/pet_control/pet_save.h b/engines/titanic/pet_control/pet_save.h
index 39a25eb087..9b3c11566f 100644
--- a/engines/titanic/pet_control/pet_save.h
+++ b/engines/titanic/pet_control/pet_save.h
@@ -57,7 +57,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
/**
* Called on a highlighted item when PET area is entered
diff --git a/engines/titanic/pet_control/pet_section.cpp b/engines/titanic/pet_control/pet_section.cpp
index aced697705..2c2238e3f9 100644
--- a/engines/titanic/pet_control/pet_section.cpp
+++ b/engines/titanic/pet_control/pet_section.cpp
@@ -39,7 +39,7 @@ static const uint PALETTE3[5] = {
};
void CPetSection::displayMessage(const CString &msg) {
- CPetText *text = getText();
+ CTextControl *text = getText();
if (text) {
text->setColor(getColor(1));
@@ -64,7 +64,7 @@ void CPetSection::removeText(int duration) {
}
void CPetSection::removeText() {
- CPetText *text = getText();
+ CTextControl *text = getText();
if (text)
text->setup();
}
diff --git a/engines/titanic/pet_control/pet_section.h b/engines/titanic/pet_control/pet_section.h
index c68aa90411..e245d5176b 100644
--- a/engines/titanic/pet_control/pet_section.h
+++ b/engines/titanic/pet_control/pet_section.h
@@ -35,7 +35,7 @@ enum PetArea {
class CPetControl;
class CPetElement;
-class CPetText;
+class CTextControl;
class CScreenManager;
class CRoomItem;
@@ -170,7 +170,7 @@ public:
/**
* Get a reference to the tooltip text associated with the section
*/
- virtual CPetText *getText() { return nullptr; }
+ virtual CTextControl *getText() { return nullptr; }
/**
* Removes text after a given duration
diff --git a/engines/titanic/pet_control/pet_sound.cpp b/engines/titanic/pet_control/pet_sound.cpp
index e9958c67be..f4d45038e9 100644
--- a/engines/titanic/pet_control/pet_sound.cpp
+++ b/engines/titanic/pet_control/pet_sound.cpp
@@ -275,7 +275,7 @@ bool CPetSound::MouseButtonUpMsg(const Point &pt) {
return true;
}
-void CPetSound::getTooltip(CPetText *text) {
+void CPetSound::getTooltip(CTextControl *text) {
text->setText("Change the volume settings.");
}
diff --git a/engines/titanic/pet_control/pet_sound.h b/engines/titanic/pet_control/pet_sound.h
index c4b663ad44..fed4f43f92 100644
--- a/engines/titanic/pet_control/pet_sound.h
+++ b/engines/titanic/pet_control/pet_sound.h
@@ -25,7 +25,7 @@
#include "titanic/pet_control/pet_glyphs.h"
#include "titanic/pet_control/pet_gfx_element.h"
-#include "titanic/pet_control/pet_text.h"
+#include "titanic/gfx/text_control.h"
#include "titanic/pet_control/pet_slider.h"
namespace Titanic {
@@ -39,10 +39,10 @@ private:
CPetSlider _musicVolume;
CPetSlider _parrotVolume;
CPetSlider _speechVolume;
- CPetText _textMasterVolume;
- CPetText _textMusicVolume;
- CPetText _textParrotVolume;
- CPetText _textSpeechVolume;
+ CTextControl _textMasterVolume;
+ CTextControl _textMusicVolume;
+ CTextControl _textParrotVolume;
+ CTextControl _textSpeechVolume;
CPetSlider *_draggingSlider;
int _draggingSliderNum;
private:
@@ -96,7 +96,7 @@ public:
/**
* Returns the tooltip text for when the glyph is selected
*/
- virtual void getTooltip(CPetText *text);
+ virtual void getTooltip(CTextControl *text);
};
} // End of namespace Titanic
diff --git a/engines/titanic/pet_control/pet_starfield.h b/engines/titanic/pet_control/pet_starfield.h
index 6c47f47d67..ec96fb93ef 100644
--- a/engines/titanic/pet_control/pet_starfield.h
+++ b/engines/titanic/pet_control/pet_starfield.h
@@ -24,7 +24,7 @@
#define TITANIC_PET_STARFIELD_H
#include "titanic/pet_control/pet_section.h"
-#include "titanic/pet_control/pet_text.h"
+#include "titanic/gfx/text_control.h"
#include "titanic/pet_control/pet_gfx_element.h"
namespace Titanic {
@@ -39,7 +39,7 @@ private:
CPetGfxElement _leds[6];
Rect _rect1;
int _field18C;
- CPetText _text;
+ CTextControl _text;
bool _photoOn;
bool _hasReference;
private:
diff --git a/engines/titanic/pet_control/pet_translation.cpp b/engines/titanic/pet_control/pet_translation.cpp
index fe6c37c8ab..9509047325 100644
--- a/engines/titanic/pet_control/pet_translation.cpp
+++ b/engines/titanic/pet_control/pet_translation.cpp
@@ -61,8 +61,8 @@ void CPetTranslation::clearTranslation() {
void CPetTranslation::addTranslation(const CString &str1, const CString &str2) {
CString msg = CString::format("%s%s - %s%s",
- CPetText::getColorText(0, 0x80, 0).c_str(), str1.c_str(),
- CPetText::getColorText(0, 0, 0).c_str(), str2.c_str());
+ CTextControl::getColorText(0, 0x80, 0).c_str(), str1.c_str(),
+ CTextControl::getColorText(0, 0, 0).c_str(), str2.c_str());
_message.addLine(msg);
_petControl->makeDirty();
}
diff --git a/engines/titanic/pet_control/pet_translation.h b/engines/titanic/pet_control/pet_translation.h
index 26070d6e59..ce12be454e 100644
--- a/engines/titanic/pet_control/pet_translation.h
+++ b/engines/titanic/pet_control/pet_translation.h
@@ -24,14 +24,14 @@
#define TITANIC_PET_TRANSLATION_H
#include "titanic/pet_control/pet_section.h"
-#include "titanic/pet_control/pet_text.h"
+#include "titanic/gfx/text_control.h"
namespace Titanic {
class CPetTranslation : public CPetSection {
private:
- CPetText _message;
- CPetText _tooltip;
+ CTextControl _message;
+ CTextControl _tooltip;
private:
/**
* Setup the control
@@ -87,7 +87,7 @@ public:
/**
* Get a reference to the tooltip text associated with the section
*/
- virtual CPetText *getText() { return &_tooltip; }
+ virtual CTextControl *getText() { return &_tooltip; }
/**
* Clear any current translation text
diff --git a/engines/titanic/room_flags.cpp b/engines/titanic/room_flags.cpp
index 25c604ba93..57156f0655 100644
--- a/engines/titanic/room_flags.cpp
+++ b/engines/titanic/room_flags.cpp
@@ -41,7 +41,7 @@ struct TransportFlagsEntry {
struct SuccUBusFlagsEntry {
const char *const _roomName;
uint _roomFlags;
- uint _succubusNum;
+ PassengerClass _classNum;
};
#define TRANSPORT_ROOMS_SIZE 6
@@ -56,23 +56,23 @@ const TransportFlagsEntry TRANSPORT_ROOMS[TRANSPORT_ROOMS_SIZE] = {
#define SUCCUBUS_ROOMS_SIZE 17
const SuccUBusFlagsEntry SUCCUBUS_ROOMS[SUCCUBUS_ROOMS_SIZE] = {
- { "ParrotLobby", 0x1D0D9, 3 },
- { "SculptureChamber", 0x465FB, 2 },
- { "Bar", 0x0B3D97, 2 },
- { "EmbLobby", 0x0CC971, 3 },
- { "MoonEmbLobby", 0x0CC971, 3 },
- { "MusicRoom", 0x0F34DB, 2 },
- { "MusicRoomLobby", 0x0F34DB, 2 },
- { "Titania", 0x8A397, 3 },
- { "BottomOfWell", 0x59FAD, 3 },
- { "Arboretum", 0x4D6AF, 1 },
- { "PromenadeDeck", 0x79C45, 2 },
- { "1stClassRestaurant", 0x896B9, 1 },
- { "CreatorsChamber", 0x2F86D, 2 },
- { "CreatorsChamberOn", 0x2F86D, 2 },
- { "BilgeRoom", 0x3D94B, 3 },
- { "BilgeRoomWith", 0x3D94B, 3 },
- { "Bridge", 0x39FCB, 3 }
+ { "ParrotLobby", 0x1D0D9, THIRD_CLASS },
+ { "SculptureChamber", 0x465FB, SECOND_CLASS },
+ { "Bar", 0x0B3D97, SECOND_CLASS },
+ { "EmbLobby", 0x0CC971, THIRD_CLASS },
+ { "MoonEmbLobby", 0x0CC971, THIRD_CLASS },
+ { "MusicRoom", 0x0F34DB, SECOND_CLASS },
+ { "MusicRoomLobby", 0x0F34DB, SECOND_CLASS },
+ { "Titania", 0x8A397, THIRD_CLASS },
+ { "BottomOfWell", 0x59FAD, THIRD_CLASS },
+ { "Arboretum", 0x4D6AF, FIRST_CLASS },
+ { "PromenadeDeck", 0x79C45, SECOND_CLASS },
+ { "1stClassRestaurant", 0x896B9, FIRST_CLASS },
+ { "CreatorsChamber", 0x2F86D, SECOND_CLASS },
+ { "CreatorsChamberOn", 0x2F86D, SECOND_CLASS },
+ { "BilgeRoom", 0x3D94B, THIRD_CLASS },
+ { "BilgeRoomWith", 0x3D94B, THIRD_CLASS },
+ { "Bridge", 0x39FCB, THIRD_CLASS }
};
int CRoomFlags::getConditionally() const {
@@ -355,13 +355,13 @@ uint CRoomFlags::getSpecialRoomFlags(const CString &roomName) {
return 0;
}
-uint CRoomFlags::getSuccUBusNum(const CString &roomName) const {
+PassengerClass CRoomFlags::getSuccUBusClass(const CString &roomName) const {
for (int idx = 0; idx < SUCCUBUS_ROOMS_SIZE; ++idx) {
if (roomName == SUCCUBUS_ROOMS[idx]._roomName)
- return SUCCUBUS_ROOMS[idx]._succubusNum;
+ return SUCCUBUS_ROOMS[idx]._classNum;
}
- return 0;
+ return NO_CLASS;
}
CString CRoomFlags::getSuccUBusRoomName() const {
@@ -472,7 +472,7 @@ bool CRoomFlags::compareLocation(uint flags1, uint flags2) {
CRoomFlags f1(flags1);
CRoomFlags f2(flags2);
- return f1.getElevatorNum() == f2.getElevatorBits() &&
+ return f1.getElevatorNum() == f2.getElevatorNum() &&
f1.getFloorNum() == f2.getFloorNum() &&
f1.getRoomNum() == f2.getRoomNum();
}
diff --git a/engines/titanic/room_flags.h b/engines/titanic/room_flags.h
index 8e86bf707e..e2fb91015a 100644
--- a/engines/titanic/room_flags.h
+++ b/engines/titanic/room_flags.h
@@ -209,9 +209,9 @@ public:
void setRandomLocation(PassengerClass classNum, bool flag);
/**
- * Gets the succubus number associated with a given room
+ * Gets the passenger class for a succubus associated with a given room
*/
- uint getSuccUBusNum(const CString &roomName) const;
+ PassengerClass getSuccUBusClass(const CString &roomName) const;
/**
* Gets the succubus room name associated with the current room flags
diff --git a/engines/titanic/sound/auto_music_player_base.cpp b/engines/titanic/sound/auto_music_player_base.cpp
index 49ae906e91..b000d8f90d 100644
--- a/engines/titanic/sound/auto_music_player_base.cpp
+++ b/engines/titanic/sound/auto_music_player_base.cpp
@@ -90,7 +90,7 @@ bool CAutoMusicPlayerBase::ChangeMusicMsg(CChangeMusicMsg *msg) {
}
}
- if (_isRepeated && msg->_flags == 2) {
+ if (!_isRepeated && msg->_flags == 2) {
_isRepeated = true;
playGlobalSound(_filename, _volumeMode, _initialMute, true, 0);
}
diff --git a/engines/titanic/sound/season_noises.cpp b/engines/titanic/sound/season_noises.cpp
index 14689d5337..5f139e728f 100644
--- a/engines/titanic/sound/season_noises.cpp
+++ b/engines/titanic/sound/season_noises.cpp
@@ -31,7 +31,7 @@ BEGIN_MESSAGE_MAP(CSeasonNoises, CViewAutoSoundPlayer)
ON_MESSAGE(LoadSuccessMsg)
END_MESSAGE_MAP()
-CSeasonNoises::CSeasonNoises() : CViewAutoSoundPlayer(), _seasonNumber(0),
+CSeasonNoises::CSeasonNoises() : CViewAutoSoundPlayer(), _seasonNumber(SEASON_SUMMER),
_springName("NULL"), _summerName("NULL"), _autumnName("NULL"), _winterName("NULL") {
}
@@ -48,7 +48,7 @@ void CSeasonNoises::save(SimpleFile *file, int indent) {
void CSeasonNoises::load(SimpleFile *file) {
file->readNumber();
- _seasonNumber = file->readNumber();
+ _seasonNumber = (Season)file->readNumber();
_springName = file->readString();
_summerName = file->readString();
_autumnName = file->readString();
@@ -58,7 +58,7 @@ void CSeasonNoises::load(SimpleFile *file) {
}
bool CSeasonNoises::ChangeSeasonMsg(CChangeSeasonMsg *msg) {
- _seasonNumber = (_seasonNumber + 1) % 4;
+ _seasonNumber = (Season)(((int)_seasonNumber + 1) % 4);
CActMsg actMsg("Update");
actMsg.execute(this);
@@ -67,6 +67,7 @@ bool CSeasonNoises::ChangeSeasonMsg(CChangeSeasonMsg *msg) {
bool CSeasonNoises::EnterViewMsg(CEnterViewMsg *msg) {
CActMsg actMsg("Update");
+ actMsg.execute(this);
return true;
}
@@ -74,18 +75,18 @@ bool CSeasonNoises::ActMsg(CActMsg *msg) {
msg->_action = "Update";
switch (_seasonNumber) {
- case 0:
- _filename = _springName;
- break;
- case 1:
+ case SEASON_SUMMER:
_filename = _summerName;
break;
- case 2:
+ case SEASON_AUTUMN:
_filename = _autumnName;
break;
- case 3:
+ case SEASON_WINTER:
_filename = _winterName;
break;
+ case SEASON_SPRING:
+ _filename = _springName;
+ break;
default:
break;
}
diff --git a/engines/titanic/sound/season_noises.h b/engines/titanic/sound/season_noises.h
index 796628d10d..cab8d5907f 100644
--- a/engines/titanic/sound/season_noises.h
+++ b/engines/titanic/sound/season_noises.h
@@ -34,7 +34,7 @@ class CSeasonNoises : public CViewAutoSoundPlayer {
bool ActMsg(CActMsg *msg);
bool LoadSuccessMsg(CLoadSuccessMsg *msg);
private:
- int _seasonNumber;
+ Season _seasonNumber;
CString _springName;
CString _summerName;
CString _autumnName;
diff --git a/engines/titanic/support/avi_surface.cpp b/engines/titanic/support/avi_surface.cpp
index de7b9abe3e..22b3e98c16 100644
--- a/engines/titanic/support/avi_surface.cpp
+++ b/engines/titanic/support/avi_surface.cpp
@@ -273,12 +273,14 @@ void AVISurface::setupDecompressor() {
}
void AVISurface::copyMovieFrame(const Graphics::Surface &src, Graphics::ManagedSurface &dest) {
- assert(src.w == dest.w && src.h == dest.h);
+ // WORKAROUND: A bad video in the Promenade has a frame with a width slightly larger
+ // than the defined width for the movie it's in. Hence the assert below is >=
+ assert(src.w >= dest.w && src.h == dest.h);
if (src.format.bytesPerPixel == 1) {
// Paletted 8-bit, so convert to 16-bit and copy over
Graphics::Surface *s = src.convertTo(dest.format, _decoder->getPalette());
- dest.blitFrom(*s);
+ dest.blitFrom(*s, Common::Rect(0, 0, dest.w, dest.h), Common::Point(0, 0));
s->free();
delete s;
} else if (src.format.bytesPerPixel == 2) {
diff --git a/engines/titanic/support/avi_surface.h b/engines/titanic/support/avi_surface.h
index 216d4f8837..4ee6cc6e0b 100644
--- a/engines/titanic/support/avi_surface.h
+++ b/engines/titanic/support/avi_surface.h
@@ -179,11 +179,6 @@ public:
int getFrame() const { return _currentFrame; }
/**
- * Returns true if the surface is playing in reverse
- */
- bool isReversed() const { return _isReversed; }
-
- /**
* Add a movie event
*/
bool addEvent(int frameNumber, CGameObject *obj);
diff --git a/engines/titanic/support/mouse_cursor.cpp b/engines/titanic/support/mouse_cursor.cpp
index 6300f65a3b..c6942510cc 100644
--- a/engines/titanic/support/mouse_cursor.cpp
+++ b/engines/titanic/support/mouse_cursor.cpp
@@ -192,6 +192,14 @@ void CMouseCursor::enableControl() {
CScreenManager::_screenManagerPtr->_inputHandler->decLockCount();
}
+void CMouseCursor::setBusy() {
+ setCursor(CURSOR_HOURGLASS);
+}
+
+void CMouseCursor::clearBusy() {
+ setCursor(CURSOR_ARROW);
+}
+
void CMouseCursor::setPosition(const Point &pt, double duration) {
_moveStartPos = g_vm->_events->getMousePos();
_moveDestPos = pt;
diff --git a/engines/titanic/support/mouse_cursor.h b/engines/titanic/support/mouse_cursor.h
index 1662ce743d..d61e5fe0bc 100644
--- a/engines/titanic/support/mouse_cursor.h
+++ b/engines/titanic/support/mouse_cursor.h
@@ -144,6 +144,17 @@ public:
void enableControl();
/**
+ * Shows the busy cursor
+ */
+ void setBusy();
+
+ /**
+ * Resets the cursor back to normal
+ */
+ void clearBusy();
+
+
+ /**
* Move the mouse to a new position
*/
void setPosition(const Point &pt, double duration);
diff --git a/engines/titanic/support/screen_manager.cpp b/engines/titanic/support/screen_manager.cpp
index 553486d094..cc9054e688 100644
--- a/engines/titanic/support/screen_manager.cpp
+++ b/engines/titanic/support/screen_manager.cpp
@@ -73,6 +73,11 @@ int CScreenManager::setFontNumber(int fontNumber) {
return oldFontNumber;
}
+void CScreenManager::preLoad() {
+ if (_textCursor)
+ _textCursor->hide();
+}
+
/*------------------------------------------------------------------------*/
OSScreenManager::OSScreenManager(TitanicEngine *vm): CScreenManager(vm),
diff --git a/engines/titanic/support/screen_manager.h b/engines/titanic/support/screen_manager.h
index a7c929fb5f..7140001bd4 100644
--- a/engines/titanic/support/screen_manager.h
+++ b/engines/titanic/support/screen_manager.h
@@ -228,6 +228,11 @@ public:
* Set the current font number
*/
int setFontNumber(int fontNumber);
+
+ /**
+ * Called when a game is about to be loaded
+ */
+ void preLoad();
};
class OSScreenManager: CScreenManager {
diff --git a/engines/titanic/support/strings.h b/engines/titanic/support/strings.h
index e82f882028..97928dc6e8 100644
--- a/engines/titanic/support/strings.h
+++ b/engines/titanic/support/strings.h
@@ -162,6 +162,10 @@ enum StringId {
CLASS_2,
CLASS_3,
CLASS_NONE,
+ YOUR_ASSIGNED_ROOM,
+ PREVIOUSLY_ASSIGNED_ROOM,
+ SAVED_CHEVRON,
+ CURRENT_LOCATION,
// German version only
DE_SUMMER,
diff --git a/engines/titanic/true_talk/true_talk_manager.cpp b/engines/titanic/true_talk/true_talk_manager.cpp
index 8b1cd8cc9a..446a32eaae 100644
--- a/engines/titanic/true_talk/true_talk_manager.cpp
+++ b/engines/titanic/true_talk/true_talk_manager.cpp
@@ -538,9 +538,10 @@ void CTrueTalkManager::playSpeech(TTtalker *talker, TTroomScript *roomScript, CV
if (!milli)
continue;
+#ifdef SPATIAL_SOUND
if (idx == 0)
g_vm->_events->sleep(milli);
-#ifdef SPATIAL_SOUND
+
// TODO: Figure out if these below are needed. It kinda looks like they were
// simply playing the same speech at different spatial co-ordinates. And since
// we don't support spatial processing in ScummVM yet, they're being left disabled
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index ef3cc2d84f..24779b9793 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -361,6 +361,12 @@ bool BaseGame::initConfManSettings() {
_debugShowFPS = false;
}
+ if (ConfMan.hasKey("bilinear_filtering")) {
+ _bilinearFiltering = ConfMan.getBool("bilinear_filtering");
+ } else {
+ _bilinearFiltering = false;
+ }
+
if (ConfMan.hasKey("disable_smartcache")) {
_smartCache = ConfMan.getBool("disable_smartcache");
} else {
diff --git a/engines/wintermute/base/base_game.h b/engines/wintermute/base/base_game.h
index 6aacc1feab..46484cc5ca 100644
--- a/engines/wintermute/base/base_game.h
+++ b/engines/wintermute/base/base_game.h
@@ -101,7 +101,7 @@ public:
virtual bool displayDebugInfo();
void setShowFPS(bool enabled) { _debugShowFPS = enabled; }
-
+ bool getBilinearFiltering() { return _bilinearFiltering; }
bool getSuspendedRendering() const { return _suspendedRendering; }
TTextEncoding _textEncoding;
@@ -279,6 +279,7 @@ protected:
VideoTheoraPlayer *_theoraPlayer;
private:
bool _debugShowFPS;
+ bool _bilinearFiltering;
void *_debugLogFile;
void DEBUG_DebugDisable();
void DEBUG_DebugEnable(const char *filename = nullptr);
diff --git a/engines/wintermute/base/file/base_disk_file.cpp b/engines/wintermute/base/file/base_disk_file.cpp
index d0c51616f4..0684b3f591 100644
--- a/engines/wintermute/base/file/base_disk_file.cpp
+++ b/engines/wintermute/base/file/base_disk_file.cpp
@@ -29,6 +29,7 @@
#include "engines/wintermute/dcgf.h"
#include "engines/wintermute/base/file/base_disk_file.h"
#include "engines/wintermute/base/base_file_manager.h"
+#include "engines/wintermute/utils/path_util.h"
#include "common/stream.h"
#include "common/memstream.h"
#include "common/file.h"
@@ -37,6 +38,7 @@
#include "common/tokenizer.h"
#include "common/config-manager.h"
+
namespace Wintermute {
void correctSlashes(Common::String &fileName) {
@@ -150,7 +152,7 @@ Common::SeekableReadStream *openDiskFile(const Common::String &filename) {
}
// File wasn't found in SearchMan, try to parse the path as a relative path.
if (!file) {
- Common::FSNode searchNode = getNodeForRelativePath(filename);
+ Common::FSNode searchNode = getNodeForRelativePath(PathUtil::normalizeFileName(filename));
if (searchNode.exists() && !searchNode.isDirectory() && searchNode.isReadable()) {
file = searchNode.createReadStream();
}
diff --git a/engines/wintermute/base/gfx/osystem/render_ticket.cpp b/engines/wintermute/base/gfx/osystem/render_ticket.cpp
index afe884300a..acc9530684 100644
--- a/engines/wintermute/base/gfx/osystem/render_ticket.cpp
+++ b/engines/wintermute/base/gfx/osystem/render_ticket.cpp
@@ -27,6 +27,7 @@
*/
+#include "engines/wintermute/base/base_game.h"
#include "engines/wintermute/base/gfx/osystem/render_ticket.h"
#include "engines/wintermute/base/gfx/osystem/base_surface_osystem.h"
#include "graphics/transform_tools.h"
@@ -59,7 +60,12 @@ RenderTicket::RenderTicket(BaseSurfaceOSystem *owner, const Graphics::Surface *s
// TransformTools.)
if (_transform._angle != Graphics::kDefaultAngle) {
Graphics::TransparentSurface src(*_surface, false);
- Graphics::Surface *temp = src.rotoscale(transform);
+ Graphics::Surface *temp;
+ if (owner->_gameRef->getBilinearFiltering()) {
+ temp = src.rotoscaleT<Graphics::FILTER_BILINEAR>(transform);
+ } else {
+ temp = src.rotoscaleT<Graphics::FILTER_NEAREST>(transform);
+ }
_surface->free();
delete _surface;
_surface = temp;
@@ -67,7 +73,12 @@ RenderTicket::RenderTicket(BaseSurfaceOSystem *owner, const Graphics::Surface *s
dstRect->height() != srcRect->height()) &&
_transform._numTimesX * _transform._numTimesY == 1) {
Graphics::TransparentSurface src(*_surface, false);
- Graphics::Surface *temp = src.scale(dstRect->width(), dstRect->height());
+ Graphics::Surface *temp;
+ if (owner->_gameRef->getBilinearFiltering()) {
+ temp = src.scaleT<Graphics::FILTER_BILINEAR>(dstRect->width(), dstRect->height());
+ } else {
+ temp = src.scaleT<Graphics::FILTER_NEAREST>(dstRect->width(), dstRect->height());
+ }
_surface->free();
delete _surface;
_surface = temp;
diff --git a/engines/wintermute/dctypes.h b/engines/wintermute/dctypes.h
index 90340f437d..571ce21931 100644
--- a/engines/wintermute/dctypes.h
+++ b/engines/wintermute/dctypes.h
@@ -37,9 +37,6 @@
namespace Wintermute {
-//typedef std::string AnsiString;
-//typedef std::string Utf8String;
-//typedef std::wstring WideString;
typedef Common::String AnsiString;
typedef Common::String Utf8String;
typedef Common::U32String WideString;
diff --git a/engines/wintermute/detection.cpp b/engines/wintermute/detection.cpp
index 4e8eab505f..9ccb75d62f 100644
--- a/engines/wintermute/detection.cpp
+++ b/engines/wintermute/detection.cpp
@@ -59,8 +59,19 @@ static const ADExtraGuiOptionsMap gameGuiOptions[] = {
_s("Show the current number of frames per second in the upper left corner"),
"show_fps",
false
+ },
+ },
+
+ {
+ GAMEOPTION_BILINEAR,
+ {
+ _s("Sprite bilinear filtering (SLOW)"),
+ _s("Apply bilinear filtering to individual sprites"),
+ "bilinear_filtering",
+ false
}
},
+
AD_EXTRA_GUI_OPTIONS_TERMINATOR
};
@@ -76,7 +87,7 @@ class WintermuteMetaEngine : public AdvancedMetaEngine {
public:
WintermuteMetaEngine() : AdvancedMetaEngine(Wintermute::gameDescriptions, sizeof(WMEGameDescription), Wintermute::wintermuteGames, gameGuiOptions) {
_singleId = "wintermute";
- _guiOptions = GUIO2(GUIO_NOMIDI, GAMEOPTION_SHOW_FPS);
+ _guiOptions = GUIO3(GUIO_NOMIDI, GAMEOPTION_SHOW_FPS, GAMEOPTION_BILINEAR);
_maxScanDepth = 2;
_directoryGlobs = directoryGlobs;
}
diff --git a/engines/wintermute/detection_tables.h b/engines/wintermute/detection_tables.h
index 68985d8d0c..5b87dd439c 100644
--- a/engines/wintermute/detection_tables.h
+++ b/engines/wintermute/detection_tables.h
@@ -23,6 +23,7 @@
namespace Wintermute {
#define GAMEOPTION_SHOW_FPS GUIO_GAMEOPTIONS1
+#define GAMEOPTION_BILINEAR GUIO_GAMEOPTIONS2
static const PlainGameDescriptor wintermuteGames[] = {
{"5ld", "Five Lethal Demons"},
@@ -42,6 +43,8 @@ static const PlainGameDescriptor wintermuteGames[] = {
{"conspiracao", "Conspiracao Dumont"},
{"corrosion", "Corrosion: Cold Winter Waiting"},
{"deadcity", "Dead City"},
+ {"dfafadventure", "DFAF Adventure"},
+ {"dreamcat", "Dreamcat"},
{"dreaming", "Des Reves Elastiques Avec Mille Insectes Nommes Georges"},
{"dirtysplit", "Dirty Split"},
{"dreamscape", "Dreamscape"},
@@ -60,6 +63,7 @@ static const PlainGameDescriptor wintermuteGames[] = {
{"mirage", "Mirage"},
{"nighttrain", "Night Train"},
{"oknytt", "Oknytt"},
+ {"openquest", "Open Quest"},
{"paintaria", "Paintaria"},
{"pigeons", "Pigeons in the Park"},
{"projectdoom", "Project: Doom"},
@@ -237,6 +241,9 @@ static const WMEGameDescription gameDescriptions[] = {
WME_WINENTRY("deadcity", "",
WME_ENTRY2s("russian.dcp", "a0ae71e9e1185596fffb07ad2c951eb9", 653317,
"data.dcp", "7ebfd50d1a22370ed7b079bcaa631d62", 9070205), Common::RU_RUS, ADGF_UNSTABLE, LATEST_VERSION),
+ // DFAF Adventure
+ WME_WINENTRY("dfafadventure", "",
+ WME_ENTRY1s("data.dcp","5704ebef961176f647742aa66bd09352", 10083417), Common::EN_ANY, ADGF_UNSTABLE, LATEST_VERSION),
// Dirty Split (Czech)
WME_WINENTRY("dirtysplit", "",
WME_ENTRY2s("czech.dcp", "08a71446467cf8f9444cfea446b46ad6", 127697934,
@@ -262,6 +269,9 @@ static const WMEGameDescription gameDescriptions[] = {
// Des Reves Elastiques Avec Mille Insectes Nommes Georges
WME_WINENTRY("dreaming", "",
WME_ENTRY1s("data.dcp", "4af26d97ea063fc1277ce30ae431de90", 8804073), Common::EN_ANY, ADGF_UNSTABLE, LATEST_VERSION),
+ // Dreamcat
+ WME_WINENTRY("dreamcat", "",
+ WME_ENTRY1s("data.dcp","189bd4eef29034f4ff4ed30120eaac4e", 7758040), Common::EN_ANY, ADGF_UNSTABLE, LATEST_VERSION),
// Dreamscape
WME_WINENTRY("dreamscape", "",
WME_ENTRY1s("data.dcp", "7a5752ed4446c862be9f02d7932acf54", 17034377), Common::EN_ANY, ADGF_UNSTABLE, LATEST_VERSION),
@@ -366,6 +376,9 @@ static const WMEGameDescription gameDescriptions[] = {
WME_WINENTRY("oknytt", "Version 1.13",
WME_ENTRY2s("spanish.dcp", "10c46152cb29581671f3b6b7c229c957", 319406572,
"d_sounds.dcp", "7d04dff8ca11174486bd4b7a80fdcabb", 154943401), Common::ES_ESP, ADGF_UNSTABLE, LATEST_VERSION),
+ // Open Quest
+ WME_WINENTRY("openquest", "",
+ WME_ENTRY1s("data.dcp", "16893e3fc15a211a49654ae66f684f28", 82281736), Common::EN_ANY, ADGF_UNSTABLE | ADGF_DEMO, LATEST_VERSION),
// Night Train Demo
WME_WINENTRY("nighttrain", "",
WME_ENTRY1s("data.dcp", "5a027ef84b083a730c9a4c85ec1d3a32", 131760816), Common::EN_ANY, ADGF_UNSTABLE | ADGF_DEMO, LATEST_VERSION),
diff --git a/engines/wintermute/utils/path_util.cpp b/engines/wintermute/utils/path_util.cpp
index 71311713af..8518f8968f 100644
--- a/engines/wintermute/utils/path_util.cpp
+++ b/engines/wintermute/utils/path_util.cpp
@@ -32,8 +32,8 @@
namespace Wintermute {
//////////////////////////////////////////////////////////////////////////
-AnsiString PathUtil::unifySeparators(const AnsiString &path) {
- AnsiString newPath = path;
+Common::String PathUtil::unifySeparators(const Common::String &path) {
+ Common::String newPath = path;
for (uint32 i = 0; i < newPath.size(); i++) {
if (newPath[i] == '\\') {
@@ -45,16 +45,16 @@ AnsiString PathUtil::unifySeparators(const AnsiString &path) {
}
//////////////////////////////////////////////////////////////////////////
-AnsiString PathUtil::normalizeFileName(const AnsiString &path) {
- AnsiString newPath = unifySeparators(path);
+Common::String PathUtil::normalizeFileName(const Common::String &path) {
+ Common::String newPath = unifySeparators(path);
newPath.toLowercase();
return newPath;
}
//////////////////////////////////////////////////////////////////////////
-AnsiString PathUtil::combine(const AnsiString &path1, const AnsiString &path2) {
- AnsiString newPath1 = unifySeparators(path1);
- AnsiString newPath2 = unifySeparators(path2);
+Common::String PathUtil::combine(const Common::String &path1, const Common::String &path2) {
+ Common::String newPath1 = unifySeparators(path1);
+ Common::String newPath2 = unifySeparators(path2);
if (!newPath1.hasSuffix("/") && !newPath2.hasPrefix("/")) {
newPath1 += "/";
@@ -63,29 +63,37 @@ AnsiString PathUtil::combine(const AnsiString &path1, const AnsiString &path2) {
return newPath1 + newPath2;
}
+bool PathUtil::hasTrailingSlash(const Common::String &path) {
+ return (path.size() > 0 && path[path.size() - 1 ] == '/');
+}
+
//////////////////////////////////////////////////////////////////////////
-AnsiString PathUtil::getDirectoryName(const AnsiString &path) {
- AnsiString newPath = unifySeparators(path);
+Common::String PathUtil::getDirectoryName(const Common::String &path) {
+ Common::String newPath = unifySeparators(path);
Common::String filename = getFileName(path);
- return Common::String(path.c_str(), path.size() - filename.size());
+ if (hasTrailingSlash(newPath)) {
+ return path;
+ } else {
+ return Common::String(path.c_str(), path.size() - filename.size());
+ }
}
//////////////////////////////////////////////////////////////////////////
-AnsiString PathUtil::getFileName(const AnsiString &path) {
- AnsiString newPath = unifySeparators(path);
+Common::String PathUtil::getFileName(const Common::String &path) {
+ Common::String newPath = unifySeparators(path);
Common::String lastPart = Common::lastPathComponent(newPath, '/');
- if (lastPart[lastPart.size() - 1 ] != '/') {
- return lastPart;
+ if (hasTrailingSlash(newPath)) {
+ return Common::String("");
} else {
- return path;
+ return lastPart;
}
}
//////////////////////////////////////////////////////////////////////////
-AnsiString PathUtil::getFileNameWithoutExtension(const AnsiString &path) {
- AnsiString fileName = getFileName(path);
+Common::String PathUtil::getFileNameWithoutExtension(const Common::String &path) {
+ Common::String fileName = getFileName(path);
// TODO: Prettify this.
- AnsiString extension = Common::lastPathComponent(fileName, '.');
+ Common::String extension = Common::lastPathComponent(fileName, '.');
for (uint32 i = 0; i < extension.size() + 1; i++) {
fileName.deleteLastChar();
}
@@ -93,8 +101,8 @@ AnsiString PathUtil::getFileNameWithoutExtension(const AnsiString &path) {
}
//////////////////////////////////////////////////////////////////////////
-AnsiString PathUtil::getExtension(const AnsiString &path) {
- AnsiString fileName = getFileName(path);
+Common::String PathUtil::getExtension(const Common::String &path) {
+ Common::String fileName = getFileName(path);
return Common::lastPathComponent(path, '.');
}
diff --git a/engines/wintermute/utils/path_util.h b/engines/wintermute/utils/path_util.h
index 264dc5d241..8050cdfae2 100644
--- a/engines/wintermute/utils/path_util.h
+++ b/engines/wintermute/utils/path_util.h
@@ -35,13 +35,14 @@ namespace Wintermute {
class PathUtil {
public:
- static AnsiString unifySeparators(const AnsiString &path);
- static AnsiString normalizeFileName(const AnsiString &path);
- static AnsiString combine(const AnsiString &path1, const AnsiString &path2);
- static AnsiString getDirectoryName(const AnsiString &path);
- static AnsiString getFileName(const AnsiString &path);
- static AnsiString getFileNameWithoutExtension(const AnsiString &path);
- static AnsiString getExtension(const AnsiString &path);
+ static Common::String unifySeparators(const Common::String &path);
+ static Common::String normalizeFileName(const Common::String &path);
+ static Common::String combine(const Common::String &path1, const Common::String &path2);
+ static Common::String getDirectoryName(const Common::String &path);
+ static Common::String getFileName(const Common::String &path);
+ static Common::String getFileNameWithoutExtension(const Common::String &path);
+ static Common::String getExtension(const Common::String &path);
+ static bool hasTrailingSlash(const Common::String &path);
};
} // End of namespace Wintermute
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 2dc1fc8e2c..06354457f2 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -30,6 +30,7 @@ MacText::MacText(Common::String s, Graphics::Font *font, int fgcolor, int bgcolo
_fgcolor = fgcolor;
_bgcolor = bgcolor;
_maxWidth = maxWidth;
+ _surface = nullptr;
_interLinear = 0; // 0 pixels between the lines by default
@@ -69,57 +70,89 @@ void MacText::splitString(Common::String &str) {
tmp += *s;
}
- if (_text.size())
+ if (tmp.size())
_maxWidth = MIN(_font->wordWrapText(tmp, _maxWidth, _text), _maxWidth);
}
void MacText::reallocSurface() {
- int lineHeight = _font->getFontHeight() + _interLinear;
- int requiredHeight = (_text.size() + (_text.size() * 10 + 9) / 10) * lineHeight;
+ int lineH = _font->getFontHeight() + _interLinear;
+ // round to closest 10
+ int requiredH = (_text.size() + (_text.size() * 10 + 9) / 10) * lineH;
+ int surfW = _maxWidth == -1 ? _textMaxWidth : _maxWidth;
+
+ if (!_surface) {
+ _surface = new ManagedSurface(surfW, requiredH);
+
+ return;
+ }
+
+ if (_surface->h < requiredH) {
+ // realloc surface and copy old content
+ ManagedSurface *n = new ManagedSurface(surfW, requiredH);
+ n->blitFrom(*_surface, Common::Point(0, 0));
- if (_surface.w < requiredHeight) {
- // realloc surface
- _surface.create(_maxWidth == -1 ? _textMaxWidth : _maxWidth, requiredHeight);
+ delete _surface;
+ _surface = n;
}
}
void MacText::render() {
if (_fullRefresh) {
- reallocSurface();
+ render(0, _text.size());
- _surface.clear(_bgcolor);
+ _fullRefresh = false;
+ }
+}
- int y = 0;
+void MacText::render(int from, int to) {
+ reallocSurface();
- for (uint i = 0; i < _text.size(); i++) {
- _font->drawString(&_surface, _text[i], 0, y, _textMaxWidth, _fgcolor);
+ from = MAX<int>(0, from);
+ to = MIN<int>(to, _text.size());
- y += _font->getFontHeight() + _interLinear;
- }
+ int lineH = _font->getFontHeight() + _interLinear;
+ int y = from * lineH;
- _fullRefresh = false;
+ // Clear the screen
+ _surface->fillRect(Common::Rect(0, y, _surface->w, to * lineH), _bgcolor);
+
+ for (uint i = from; i < to; i++) {
+ _font->drawString(_surface, _text[i], 0, y, _textMaxWidth, _fgcolor);
+
+ y += _font->getFontHeight() + _interLinear;
}
+
}
void MacText::draw(ManagedSurface *g, int x, int y, int w, int h, int xoff, int yoff) {
render();
- if (x + w < _surface.w || y + h < _surface.h) {
+ if (x + w < _surface->w || y + h < _surface->h) {
g->fillRect(Common::Rect(x, y, x + w, y + w), _bgcolor);
}
- g->blitFrom(_surface, Common::Rect(MIN<int>(_surface.w, x), MIN<int>(_surface.h, y),
- MIN<int>(_surface.w, x + w), MIN<int>(_surface.w, y + w)), Common::Point(xoff, yoff));
+ g->blitFrom(*_surface, Common::Rect(MIN<int>(_surface->w, x), MIN<int>(_surface->h, y),
+ MIN<int>(_surface->w, x + w), MIN<int>(_surface->w, y + w)),
+ Common::Point(xoff, yoff));
}
void MacText::appendText(Common::String str) {
- //int oldLen = _text.size();
+ int oldLen = _text.size();
splitString(str);
- reallocSurface();
+ render(oldLen + 1, _text.size());
+}
+
+void MacText::replaceLastLine(Common::String str) {
+ int oldLen = MAX<int>(0, _text.size() - 1);
+
+ if (_text.size())
+ _text.pop_back();
+
+ splitString(str);
- //render(oldLen + 1, _text.size());
+ render(oldLen, _text.size());
}
} // End of namespace Graphics
diff --git a/graphics/macgui/mactext.h b/graphics/macgui/mactext.h
index 65e93ca5c3..e035eb123f 100644
--- a/graphics/macgui/mactext.h
+++ b/graphics/macgui/mactext.h
@@ -36,11 +36,12 @@ public:
void draw(ManagedSurface *g, int x, int y, int w, int h, int xoff, int yoff);
void appendText(Common::String str);
-
+ void replaceLastLine(Common::String str);
private:
void splitString(Common::String &s);
void render();
+ void render(int from, int to);
void calcMaxWidth();
void reallocSurface();
@@ -56,7 +57,7 @@ private:
int _textMaxWidth;
- Graphics::ManagedSurface _surface;
+ Graphics::ManagedSurface *_surface;
bool _fullRefresh;
};
diff --git a/graphics/transparent_surface.cpp b/graphics/transparent_surface.cpp
index 7ef7d00286..48e6da6c79 100644
--- a/graphics/transparent_surface.cpp
+++ b/graphics/transparent_surface.cpp
@@ -37,8 +37,6 @@
#include "graphics/transparent_surface.h"
#include "graphics/transform_tools.h"
-//#define ENABLE_BILINEAR
-
namespace Graphics {
static const int kBModShift = 0;//img->format.bShift;
@@ -676,8 +674,10 @@ systems.
+struct tColorRGBA { byte r; byte g; byte b; byte a; };
-TransparentSurface *TransparentSurface::rotoscale(const TransformStruct &transform) const {
+template <TFilteringMode filteringMode>
+TransparentSurface *TransparentSurface::rotoscaleT(const TransformStruct &transform) const {
assert(transform._angle != 0); // This would not be ideal; rotoscale() should never be called in conditional branches where angle = 0 anyway.
@@ -704,7 +704,6 @@ TransparentSurface *TransparentSurface::rotoscale(const TransformStruct &transfo
float invCos = cos(invAngle * M_PI / 180.0);
float invSin = sin(invAngle * M_PI / 180.0);
- struct tColorRGBA { byte r; byte g; byte b; byte a; };
int icosx = (int)(invCos * (65536.0f * kDefaultZoomX / transform._zoom.x));
int isinx = (int)(invSin * (65536.0f * kDefaultZoomX / transform._zoom.x));
int icosy = (int)(invCos * (65536.0f * kDefaultZoomY / transform._zoom.y));
@@ -739,50 +738,50 @@ TransparentSurface *TransparentSurface::rotoscale(const TransformStruct &transfo
dy = sh - dy;
}
-#ifdef ENABLE_BILINEAR
- if ((dx > -1) && (dy > -1) && (dx < sw) && (dy < sh)) {
- const tColorRGBA *sp = (const tColorRGBA *)getBasePtr(dx, dy);
- tColorRGBA c00, c01, c10, c11, cswap;
- c00 = *sp;
- sp += 1;
- c01 = *sp;
- sp += (this->pitch / 4);
- c11 = *sp;
- sp -= 1;
- c10 = *sp;
- if (flipx) {
- cswap = c00; c00=c01; c01=cswap;
- cswap = c10; c10=c11; c11=cswap;
+ if (filteringMode == FILTER_BILINEAR) {
+ if ((dx > -1) && (dy > -1) && (dx < sw) && (dy < sh)) {
+ const tColorRGBA *sp = (const tColorRGBA *)getBasePtr(dx, dy);
+ tColorRGBA c00, c01, c10, c11, cswap;
+ c00 = *sp;
+ sp += 1;
+ c01 = *sp;
+ sp += (this->pitch / 4);
+ c11 = *sp;
+ sp -= 1;
+ c10 = *sp;
+ if (flipx) {
+ cswap = c00; c00=c01; c01=cswap;
+ cswap = c10; c10=c11; c11=cswap;
+ }
+ if (flipy) {
+ cswap = c00; c00=c10; c10=cswap;
+ cswap = c01; c01=c11; c11=cswap;
+ }
+ /*
+ * Interpolate colors
+ */
+ int ex = (sdx & 0xffff);
+ int ey = (sdy & 0xffff);
+ int t1, t2;
+ t1 = ((((c01.r - c00.r) * ex) >> 16) + c00.r) & 0xff;
+ t2 = ((((c11.r - c10.r) * ex) >> 16) + c10.r) & 0xff;
+ pc->r = (((t2 - t1) * ey) >> 16) + t1;
+ t1 = ((((c01.g - c00.g) * ex) >> 16) + c00.g) & 0xff;
+ t2 = ((((c11.g - c10.g) * ex) >> 16) + c10.g) & 0xff;
+ pc->g = (((t2 - t1) * ey) >> 16) + t1;
+ t1 = ((((c01.b - c00.b) * ex) >> 16) + c00.b) & 0xff;
+ t2 = ((((c11.b - c10.b) * ex) >> 16) + c10.b) & 0xff;
+ pc->b = (((t2 - t1) * ey) >> 16) + t1;
+ t1 = ((((c01.a - c00.a) * ex) >> 16) + c00.a) & 0xff;
+ t2 = ((((c11.a - c10.a) * ex) >> 16) + c10.a) & 0xff;
+ pc->a = (((t2 - t1) * ey) >> 16) + t1;
}
- if (flipy) {
- cswap = c00; c00=c10; c10=cswap;
- cswap = c01; c01=c11; c11=cswap;
+ } else {
+ if ((dx >= 0) && (dy >= 0) && (dx < srcW) && (dy < srcH)) {
+ const tColorRGBA *sp = (const tColorRGBA *)getBasePtr(dx, dy);
+ *pc = *sp;
}
- /*
- * Interpolate colors
- */
- int ex = (sdx & 0xffff);
- int ey = (sdy & 0xffff);
- int t1, t2;
- t1 = ((((c01.r - c00.r) * ex) >> 16) + c00.r) & 0xff;
- t2 = ((((c11.r - c10.r) * ex) >> 16) + c10.r) & 0xff;
- pc->r = (((t2 - t1) * ey) >> 16) + t1;
- t1 = ((((c01.g - c00.g) * ex) >> 16) + c00.g) & 0xff;
- t2 = ((((c11.g - c10.g) * ex) >> 16) + c10.g) & 0xff;
- pc->g = (((t2 - t1) * ey) >> 16) + t1;
- t1 = ((((c01.b - c00.b) * ex) >> 16) + c00.b) & 0xff;
- t2 = ((((c11.b - c10.b) * ex) >> 16) + c10.b) & 0xff;
- pc->b = (((t2 - t1) * ey) >> 16) + t1;
- t1 = ((((c01.a - c00.a) * ex) >> 16) + c00.a) & 0xff;
- t2 = ((((c11.a - c10.a) * ex) >> 16) + c10.a) & 0xff;
- pc->a = (((t2 - t1) * ey) >> 16) + t1;
}
-#else
- if ((dx >= 0) && (dy >= 0) && (dx < srcW) && (dy < srcH)) {
- const tColorRGBA *sp = (const tColorRGBA *)getBasePtr(dx, dy);
- *pc = *sp;
- }
-#endif
sdx += icosx;
sdy += isiny;
pc++;
@@ -791,7 +790,8 @@ TransparentSurface *TransparentSurface::rotoscale(const TransformStruct &transfo
return target;
}
-TransparentSurface *TransparentSurface::scale(uint16 newWidth, uint16 newHeight) const {
+template <TFilteringMode filteringMode>
+TransparentSurface *TransparentSurface::scaleT(uint16 newWidth, uint16 newHeight) const {
Common::Rect srcRect(0, 0, (int16)w, (int16)h);
Common::Rect dstRect(0, 0, (int16)newWidth, (int16)newHeight);
@@ -807,173 +807,169 @@ TransparentSurface *TransparentSurface::scale(uint16 newWidth, uint16 newHeight)
target->create((uint16)dstW, (uint16)dstH, this->format);
-#ifdef ENABLE_BILINEAR
+ if (filteringMode == FILTER_BILINEAR) {
- // NB: The actual order of these bytes may not be correct, but
- // since all values are treated equal, that does not matter.
- struct tColorRGBA { byte r; byte g; byte b; byte a; };
+ bool flipx = false, flipy = false; // TODO: See mirroring comment in RenderTicket ctor
- bool flipx = false, flipy = false; // TODO: See mirroring comment in RenderTicket ctor
+ int *sax = new int[dstW + 1];
+ int *say = new int[dstH + 1];
+ assert(sax && say);
+
+ /*
+ * Precalculate row increments
+ */
+ int spixelw = (srcW - 1);
+ int spixelh = (srcH - 1);
+ int sx = (int) (65536.0f * (float) spixelw / (float) (dstW - 1));
+ int sy = (int) (65536.0f * (float) spixelh / (float) (dstH - 1));
+
+ /* Maximum scaled source size */
+ int ssx = (srcW << 16) - 1;
+ int ssy = (srcH << 16) - 1;
+
+ /* Precalculate horizontal row increments */
+ int csx = 0;
+ int *csax = sax;
+ for (int x = 0; x <= dstW; x++) {
+ *csax = csx;
+ csax++;
+ csx += sx;
- int *sax = new int[dstW + 1];
- int *say = new int[dstH + 1];
- assert(sax && say);
-
- /*
- * Precalculate row increments
- */
- int spixelw = (srcW - 1);
- int spixelh = (srcH - 1);
- int sx = (int) (65536.0f * (float) spixelw / (float) (dstW - 1));
- int sy = (int) (65536.0f * (float) spixelh / (float) (dstH - 1));
-
- /* Maximum scaled source size */
- int ssx = (srcW << 16) - 1;
- int ssy = (srcH << 16) - 1;
-
- /* Precalculate horizontal row increments */
- int csx = 0;
- int *csax = sax;
- for (int x = 0; x <= dstW; x++) {
- *csax = csx;
- csax++;
- csx += sx;
-
- /* Guard from overflows */
- if (csx > ssx) {
- csx = ssx;
+ /* Guard from overflows */
+ if (csx > ssx) {
+ csx = ssx;
+ }
}
- }
- /* Precalculate vertical row increments */
- int csy = 0;
- int *csay = say;
- for (int y = 0; y <= dstH; y++) {
- *csay = csy;
- csay++;
- csy += sy;
-
- /* Guard from overflows */
- if (csy > ssy) {
- csy = ssy;
+ /* Precalculate vertical row increments */
+ int csy = 0;
+ int *csay = say;
+ for (int y = 0; y <= dstH; y++) {
+ *csay = csy;
+ csay++;
+ csy += sy;
+
+ /* Guard from overflows */
+ if (csy > ssy) {
+ csy = ssy;
+ }
}
- }
- const tColorRGBA *sp = (const tColorRGBA *) getBasePtr(0, 0);
- tColorRGBA *dp = (tColorRGBA *) target->getBasePtr(0, 0);
- int spixelgap = srcW;
+ const tColorRGBA *sp = (const tColorRGBA *) getBasePtr(0, 0);
+ tColorRGBA *dp = (tColorRGBA *) target->getBasePtr(0, 0);
+ int spixelgap = srcW;
- if (flipx) {
- sp += spixelw;
- }
- if (flipy) {
- sp += spixelgap * spixelh;
- }
+ if (flipx) {
+ sp += spixelw;
+ }
+ if (flipy) {
+ sp += spixelgap * spixelh;
+ }
- csay = say;
- for (int y = 0; y < dstH; y++) {
- const tColorRGBA *csp = sp;
- csax = sax;
- for (int x = 0; x < dstW; x++) {
- /*
- * Setup color source pointers
- */
- int ex = (*csax & 0xffff);
- int ey = (*csay & 0xffff);
- int cx = (*csax >> 16);
- int cy = (*csay >> 16);
-
- const tColorRGBA *c00, *c01, *c10, *c11;
- c00 = sp;
- c01 = sp;
- c10 = sp;
- if (cy < spixelh) {
- if (flipy) {
- c10 -= spixelgap;
- } else {
- c10 += spixelgap;
+ csay = say;
+ for (int y = 0; y < dstH; y++) {
+ const tColorRGBA *csp = sp;
+ csax = sax;
+ for (int x = 0; x < dstW; x++) {
+ /*
+ * Setup color source pointers
+ */
+ int ex = (*csax & 0xffff);
+ int ey = (*csay & 0xffff);
+ int cx = (*csax >> 16);
+ int cy = (*csay >> 16);
+
+ const tColorRGBA *c00, *c01, *c10, *c11;
+ c00 = sp;
+ c01 = sp;
+ c10 = sp;
+ if (cy < spixelh) {
+ if (flipy) {
+ c10 -= spixelgap;
+ } else {
+ c10 += spixelgap;
+ }
}
- }
- c11 = c10;
- if (cx < spixelw) {
+ c11 = c10;
+ if (cx < spixelw) {
+ if (flipx) {
+ c01--;
+ c11--;
+ } else {
+ c01++;
+ c11++;
+ }
+ }
+
+ /*
+ * Draw and interpolate colors
+ */
+ int t1, t2;
+ t1 = ((((c01->r - c00->r) * ex) >> 16) + c00->r) & 0xff;
+ t2 = ((((c11->r - c10->r) * ex) >> 16) + c10->r) & 0xff;
+ dp->r = (((t2 - t1) * ey) >> 16) + t1;
+ t1 = ((((c01->g - c00->g) * ex) >> 16) + c00->g) & 0xff;
+ t2 = ((((c11->g - c10->g) * ex) >> 16) + c10->g) & 0xff;
+ dp->g = (((t2 - t1) * ey) >> 16) + t1;
+ t1 = ((((c01->b - c00->b) * ex) >> 16) + c00->b) & 0xff;
+ t2 = ((((c11->b - c10->b) * ex) >> 16) + c10->b) & 0xff;
+ dp->b = (((t2 - t1) * ey) >> 16) + t1;
+ t1 = ((((c01->a - c00->a) * ex) >> 16) + c00->a) & 0xff;
+ t2 = ((((c11->a - c10->a) * ex) >> 16) + c10->a) & 0xff;
+ dp->a = (((t2 - t1) * ey) >> 16) + t1;
+
+ /*
+ * Advance source pointer x
+ */
+ int *salastx = csax;
+ csax++;
+ int sstepx = (*csax >> 16) - (*salastx >> 16);
if (flipx) {
- c01--;
- c11--;
+ sp -= sstepx;
} else {
- c01++;
- c11++;
+ sp += sstepx;
}
- }
-
- /*
- * Draw and interpolate colors
- */
- int t1, t2;
- t1 = ((((c01->r - c00->r) * ex) >> 16) + c00->r) & 0xff;
- t2 = ((((c11->r - c10->r) * ex) >> 16) + c10->r) & 0xff;
- dp->r = (((t2 - t1) * ey) >> 16) + t1;
- t1 = ((((c01->g - c00->g) * ex) >> 16) + c00->g) & 0xff;
- t2 = ((((c11->g - c10->g) * ex) >> 16) + c10->g) & 0xff;
- dp->g = (((t2 - t1) * ey) >> 16) + t1;
- t1 = ((((c01->b - c00->b) * ex) >> 16) + c00->b) & 0xff;
- t2 = ((((c11->b - c10->b) * ex) >> 16) + c10->b) & 0xff;
- dp->b = (((t2 - t1) * ey) >> 16) + t1;
- t1 = ((((c01->a - c00->a) * ex) >> 16) + c00->a) & 0xff;
- t2 = ((((c11->a - c10->a) * ex) >> 16) + c10->a) & 0xff;
- dp->a = (((t2 - t1) * ey) >> 16) + t1;
+ /*
+ * Advance destination pointer x
+ */
+ dp++;
+ }
/*
- * Advance source pointer x
+ * Advance source pointer y
*/
- int *salastx = csax;
- csax++;
- int sstepx = (*csax >> 16) - (*salastx >> 16);
- if (flipx) {
- sp -= sstepx;
+ int *salasty = csay;
+ csay++;
+ int sstepy = (*csay >> 16) - (*salasty >> 16);
+ sstepy *= spixelgap;
+ if (flipy) {
+ sp = csp - sstepy;
} else {
- sp += sstepx;
+ sp = csp + sstepy;
}
-
- /*
- * Advance destination pointer x
- */
- dp++;
- }
- /*
- * Advance source pointer y
- */
- int *salasty = csay;
- csay++;
- int sstepy = (*csay >> 16) - (*salasty >> 16);
- sstepy *= spixelgap;
- if (flipy) {
- sp = csp - sstepy;
- } else {
- sp = csp + sstepy;
}
- }
- delete[] sax;
- delete[] say;
+ delete[] sax;
+ delete[] say;
-#else
-
- int *scaleCacheX = new int[dstW];
- for (int x = 0; x < dstW; x++) {
- scaleCacheX[x] = (x * srcW) / dstW;
- }
+ } else {
- for (int y = 0; y < dstH; y++) {
- uint32 *destP = (uint32 *)target->getBasePtr(0, y);
- const uint32 *srcP = (const uint32 *)getBasePtr(0, (y * srcH) / dstH);
+ int *scaleCacheX = new int[dstW];
for (int x = 0; x < dstW; x++) {
- *destP++ = srcP[scaleCacheX[x]];
+ scaleCacheX[x] = (x * srcW) / dstW;
}
- }
- delete[] scaleCacheX;
-#endif
+ for (int y = 0; y < dstH; y++) {
+ uint32 *destP = (uint32 *)target->getBasePtr(0, y);
+ const uint32 *srcP = (const uint32 *)getBasePtr(0, (y * srcH) / dstH);
+ for (int x = 0; x < dstW; x++) {
+ *destP++ = srcP[scaleCacheX[x]];
+ }
+ }
+ delete[] scaleCacheX;
+
+ }
return target;
@@ -1057,4 +1053,18 @@ TransparentSurface *TransparentSurface::convertTo(const PixelFormat &dstFormat,
return surface;
}
+
+template TransparentSurface *TransparentSurface::rotoscaleT<FILTER_NEAREST>(const TransformStruct &transform) const;
+template TransparentSurface *TransparentSurface::rotoscaleT<FILTER_BILINEAR>(const TransformStruct &transform) const;
+template TransparentSurface *TransparentSurface::scaleT<FILTER_NEAREST>(uint16 newWidth, uint16 newHeight) const;
+template TransparentSurface *TransparentSurface::scaleT<FILTER_BILINEAR>(uint16 newWidth, uint16 newHeight) const;
+
+TransparentSurface *TransparentSurface::rotoscale(const TransformStruct &transform) const {
+ return rotoscaleT<FILTER_BILINEAR>(transform);
+}
+
+TransparentSurface *TransparentSurface::scale(uint16 newWidth, uint16 newHeight) const {
+ return scaleT<FILTER_NEAREST>(newWidth, newHeight);
+}
+
} // End of namespace Graphics
diff --git a/graphics/transparent_surface.h b/graphics/transparent_surface.h
index 8654183548..6fcdac1735 100644
--- a/graphics/transparent_surface.h
+++ b/graphics/transparent_surface.h
@@ -68,6 +68,11 @@ enum AlphaType {
ALPHA_FULL = 2
};
+enum TFilteringMode {
+ FILTER_NEAREST = 0,
+ FILTER_BILINEAR = 1
+};
+
/**
* A transparent graphics surface, which implements alpha blitting.
*/
@@ -141,8 +146,10 @@ struct TransparentSurface : public Graphics::Surface {
* @param newHeight the resulting height.
* @see TransformStruct
*/
- TransparentSurface *scale(uint16 newWidth, uint16 newHeight) const;
+ template <TFilteringMode filteringMode>
+ TransparentSurface *scaleT(uint16 newWidth, uint16 newHeight) const;
+ TransparentSurface *scale(uint16 newWidth, uint16 newHeight) const;
/**
* @brief Rotoscale function; this returns a transformed version of this surface after rotation and
* scaling. Please do not use this if angle == 0, use plain old scaling function.
@@ -150,6 +157,9 @@ struct TransparentSurface : public Graphics::Surface {
* @param transform a TransformStruct wrapping the required info. @see TransformStruct
*
*/
+ template <TFilteringMode filteringMode>
+ TransparentSurface *rotoscaleT(const TransformStruct &transform) const;
+
TransparentSurface *rotoscale(const TransformStruct &transform) const;
TransparentSurface *convertTo(const PixelFormat &dstFormat, const byte *palette = 0) const;
diff --git a/gui/about.cpp b/gui/about.cpp
index 211542adb3..bde5db310a 100644
--- a/gui/about.cpp
+++ b/gui/about.cpp
@@ -57,7 +57,7 @@ enum {
static const char *copyright_text[] = {
"",
-"C0""Copyright (C) 2001-2016 The ScummVM Team",
+"C0""Copyright (C) 2001-2017 The ScummVM Team",
"C0""http://www.scummvm.org",
"",
"C0""ScummVM is the legal property of its developers, whose names are too numerous to list here. Please refer to the COPYRIGHT file distributed with this binary.",
diff --git a/gui/themes/translations.dat b/gui/themes/translations.dat
index ea9a61e6e5..2121155363 100644
--- a/gui/themes/translations.dat
+++ b/gui/themes/translations.dat
Binary files differ
diff --git a/image/codecs/indeo/indeo.cpp b/image/codecs/indeo/indeo.cpp
index a20a3ec113..65c0647083 100644
--- a/image/codecs/indeo/indeo.cpp
+++ b/image/codecs/indeo/indeo.cpp
@@ -21,12 +21,7 @@
*/
/* Common structures, macros, and base class shared by both Indeo4 and
- * Indeo5 decoders, derived from ffmpeg. We don't currently support Indeo5
- * decoding, but just in case we eventually need it, this is kept as a separate
- * file like it is in ffmpeg.
- *
- * Original copyright note: * Intel Indeo 4 (IV41, IV42, etc.) video decoder for ffmpeg
- * written, produced, and directed by Alan Smithee
+ * Indeo5 decoders, derived from ffmpeg.
*/
#include "image/codecs/indeo/indeo.h"
diff --git a/image/codecs/indeo4.cpp b/image/codecs/indeo4.cpp
index b3a5d3a2bf..8dc67d5501 100644
--- a/image/codecs/indeo4.cpp
+++ b/image/codecs/indeo4.cpp
@@ -22,7 +22,7 @@
/* Intel Indeo 4 decompressor, derived from ffmpeg.
*
- * Original copyright note: * Intel Indeo 3 (IV41, IV42, etc.) video decoder for ffmpeg
+ * Original copyright note: * Intel Indeo 4 (IV41, IV42, etc.) video decoder for ffmpeg
* written, produced, and directed by Alan Smithee
*/
diff --git a/image/codecs/indeo5.cpp b/image/codecs/indeo5.cpp
index f4a78574d3..aca49c3d55 100644
--- a/image/codecs/indeo5.cpp
+++ b/image/codecs/indeo5.cpp
@@ -22,7 +22,7 @@
/* Intel Indeo 5 decompressor, derived from ffmpeg.
*
- * Original copyright note: * Intel Indeo 3 (IV41, IV42, etc.) video decoder for ffmpeg
+ * Original copyright note: * Intel Indeo 5 (IV51, IV52, etc.) video decoder for ffmpeg
* written, produced, and directed by Alan Smithee
*/
diff --git a/image/tga.cpp b/image/tga.cpp
index adfe7eefbb..b23c597ed5 100644
--- a/image/tga.cpp
+++ b/image/tga.cpp
@@ -27,6 +27,7 @@
#include "image/tga.h"
#include "common/util.h"
+#include "common/algorithm.h"
#include "common/stream.h"
#include "common/textconsole.h"
#include "common/error.h"
@@ -437,6 +438,22 @@ bool TGADecoder::readDataRLE(Common::SeekableReadStream &tga, byte imageType, by
} else {
return false;
}
+
+ // If it's a bottom origin image, we need to vertically flip the image
+ if (!_originTop) {
+ byte *tempLine = new byte[_surface.pitch];
+ byte *line1 = (byte *)_surface.getBasePtr(0, 0);
+ byte *line2 = (byte *)_surface.getBasePtr(0, _surface.h - 1);
+
+ for (int y = 0; y < (_surface.h / 2); ++y, line1 += _surface.pitch, line2 -= _surface.pitch) {
+ Common::copy(line1, line1 + _surface.pitch, tempLine);
+ Common::copy(line2, line2 + _surface.pitch, line1);
+ Common::copy(tempLine, tempLine + _surface.pitch, line2);
+ }
+
+ delete[] tempLine;
+ }
+
return true;
}
diff --git a/po/be_BY.po b/po/be_BY.po
index 62c2ce3610..6f4a91ee9f 100644
--- a/po/be_BY.po
+++ b/po/be_BY.po
@@ -1,23 +1,23 @@
# Belarusian translation for ScummVM.
-# Copyright (C) 2010-2016 The ScummVM Team
+# Copyright (C) 2013-2017 The ScummVM Team
# This file is distributed under the same license as the ScummVM package.
-# Ivan Lukyanov <greencis@mail.ru>, 2013-2016.
+# Ivan Lukyanov <greencis@mail.ru>, 2013-2017.
#
msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.8.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2016-12-19 02:13+0100\n"
-"PO-Revision-Date: 2016-11-27 18:01+0000\n"
+"POT-Creation-Date: 2016-12-26 16:14+0100\n"
+"PO-Revision-Date: 2016-12-31 15:15+0000\n"
"Last-Translator: Ivan Lukyanov <lid-gr@tut.by>\n"
-"Language-Team: Belarusian <https://translations.scummvm.org/projects/scummvm/"
-"scummvm/be/>\n"
+"Language-Team: Belarusian "
+"<https://translations.scummvm.org/projects/scummvm/scummvm/be/>\n"
"Language: be_BY\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-5\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<="
+"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 2.9\n"
"X-Language-name: Belarusian\n"
@@ -845,9 +845,8 @@ msgid "the fullscreen setting could not be changed"
msgstr "ßÞþÝÐíÚàÐÝÝë àíÖëÜ ÝÕ ÜÞÖÐ Ñëæì ×ÜÕÝÕÝë"
#: gui/options.cpp:486
-#, fuzzy
msgid "the filtering setting could not be changed"
-msgstr "ßÞþÝÐíÚàÐÝÝë àíÖëÜ ÝÕ ÜÞÖÐ Ñëæì ×ÜÕÝÕÝë"
+msgstr "àíÖëÜ äöÛìâàÐÒÐÝÝï ÝÕ ÜÞÖÐ Ñëæì ×ÜÕÝÕÝë"
#: gui/options.cpp:809
msgid "Graphics mode:"
@@ -867,13 +866,12 @@ msgid "Fullscreen mode"
msgstr "¿ÞþÝÐíÚàÐÝÝë àíÖëÜ"
#: gui/options.cpp:838
-#, fuzzy
msgid "Filter graphics"
-msgstr "²ëÚÐàëáâÞþÒÐæì ÚÐÛïàÞÒãî ÓàÐäöÚã"
+msgstr "ÄöÛìâàÐÒÐÝÝÕ ÓàÐäöÚö"
#: gui/options.cpp:838
msgid "Use linear filtering when scaling graphics"
-msgstr ""
+msgstr "²ëÚÐàëáâÞþÒÐæì ÛöÝÕÙÝãî äöÛìâàÐæëî ÔÛï ßÐÒÕÛöçíÝÝï ÐÔàÞ×ÝÕÝÝï"
#: gui/options.cpp:841
msgid "Aspect ratio correction"
@@ -1279,7 +1277,7 @@ msgstr ""
#: gui/options.cpp:1462
msgid "Apply"
-msgstr ""
+msgstr "ÃÖëæì"
#: gui/options.cpp:1628
msgid "Failed to change cloud storage!"
@@ -1458,9 +1456,8 @@ msgid "Playtime: "
msgstr "ÇÐá ÓãÛìÝö: "
#: gui/saveload-dialog.cpp:577 gui/saveload-dialog.cpp:665
-#, fuzzy
msgid "Untitled saved game"
-msgstr "·ÐåÐÒÐÝÝÕ ÑÕ× öÜï"
+msgstr "·ÐåÐÒÐÝÐï ÓãÛìÝï ÑÕ× öÜï"
#: gui/saveload-dialog.cpp:718
msgid "Next"
@@ -1700,9 +1697,8 @@ msgid "Could not find suitable engine plugin"
msgstr "½Õ ÜÐÓã ×ÝÐÙáæö ßÐÔëåÞÔÝë ßÛÐÓöÝ ÔÛï àãåÐÒöçÚÐ"
#: common/error.cpp:68
-#, fuzzy
msgid "Engine plugin does not support saved games"
-msgstr "ÀãåÐÒöçÞÚ ÝÕ ßÐÔâàëÜÛöÒÐÕ ×ÐåÐÒÐÝÝö"
+msgstr "ÀãåÐÒöçÞÚ ÝÕ ßÐÔâàëÜÛöÒÐÕ ×ÐåÐÒÐÝÝÕ ÓãÛìÝïþ"
#: common/error.cpp:71
msgid "User canceled"
@@ -1762,6 +1758,9 @@ msgid ""
"Please, report the following data to the ScummVM team along with name\n"
"of the game you tried to add and its version, language, etc.:"
msgstr ""
+"·ÔÐÕææÐ, ÓãÛìÝï þ '%s' ÝÕÒïÔÞÜÐï.\n"
+"ºÐÛö ÛÐáÚÐ, ßÕàÐÔÐÙæÕ ÚÐÜÐÝÔ×Õ ScummVM ÝÐáâãßÝëï ÔÐÔ×ÕÝëï àÐ×ÐÜ\n"
+"× ÝÐ×ÒÐÙ ÓãÛìÝö, ïÕ ÒÕàáöïÙ, ÜÞÒÐÙ ö öÝè.:"
#: engines/dialogs.cpp:85
msgid "~R~esume"
@@ -1844,13 +1843,13 @@ msgstr ""
"öÝáâàãÚæëïÜö ßàÐ âÞÕ, ïÚ ÐâàëÜÐæì ÔÐÛÕÙèãî ÔÐßÐÜÞÓã."
#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
-#, 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."
msgstr ""
"½Õ ÐâàëÜÐÛÐáï ×ÐåÐÒÐæì ÓãÛìÝî (%s)! ºÐÛö ÛÐáÚÐ, ×ÒïàÝöæÕáï ÔÐ äÐÙÛÐ README "
-"×Ð ÑÐ×ÐÒÐÙ öÝäÐàÜÐæëïÙ, Ð âÐÚáÐÜÐ öÝáâàãÚæëïÜö ßàÐ âÞÕ, ïÚ ÐâàëÜÐæì ÔÐÛÕÙèãî "
+"×Ð ÐáÝÞþÝÐÙ öÝäÐàÜÐæëïÙ, Ð âÐÚáÐÜÐ öÝáâàãÚæëïÜö, ïÚ ÐâàëÜÐæì ÔÐÛÕÙèãî "
"ÔÐßÐÜÞÓã."
#: engines/dialogs.cpp:307 engines/mohawk/dialogs.cpp:100
@@ -1884,9 +1883,8 @@ msgid "Could not apply fullscreen setting."
msgstr "½Õ ÜÐÓã þÖëæì ßÞþÝÐíÚàÐÝÝë àíÖëÜ."
#: engines/engine.cpp:373
-#, fuzzy
msgid "Could not apply filtering setting."
-msgstr "½Õ ÜÐÓã þÖëæì ßÞþÝÐíÚàÐÝÝë àíÖëÜ."
+msgstr "½Õ ÜÐÓã þÖëæì ÝÐÛÐÔë äöÛìâàÐæëö."
#: engines/engine.cpp:473
msgid ""
@@ -1918,14 +1916,14 @@ msgstr ""
"äÐÙÛÕ README."
#: engines/engine.cpp:542
-#, 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."
msgstr ""
-"½Õ ÐâàëÜÐÛÐáï ßàÐçëâÐæì ×ÐåÐÒÐÝÝÕ ÓãÛìÝö (%s)! ºÐÛö ÛÐáÚÐ, ×ÒïàÝöæÕáï þ äÐÙÛ "
-"README ×Ð ÑÐ×ÐÒÐÙ öÝäÐàÜÐæëïÙ, Ð âÐÚáÐÜÐ öÝáâàãÚæëïÜö ßàÐ âÞÕ, ïÚ ÐâàëÜÐæì "
-"ÔÐÛÕÙèãî ÔÐßÐÜÞÓã."
+"½Õ ÐâàëÜÐÛÐáï ×ÐÓàã×öæì ÓãÛìÝî (%s)! ºÐÛö ÛÐáÚÐ, ×ÒïàÝöæÕáï ÔÐ äÐÙÛÐ README "
+"×Ð ÐáÝÞþÝÐÙ öÝäÐàÜÐæëïÙ, Ð âÐÚáÐÜÐ öÝáâàãÚæëïÜö, ïÚ ÐâàëÜÐæì ÔÐÛÕÙèãî "
+"ÔÐßÐÜÞÓã."
#: engines/engine.cpp:555
msgid ""
@@ -2188,7 +2186,7 @@ msgstr "°ÚÞÝÝë àíÖëÜ"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:710
#, c-format
msgid "Resolution: %dx%d"
-msgstr ""
+msgstr "°ÔàÞ×ÝÕÝÝÕ: %dx%d"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:731
#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2338
@@ -2202,15 +2200,13 @@ msgstr "ºÐàíÚæëï áãÐÔÝÞáöÝ ÑÐÚÞþ ÒëÚÛîçÐÝÐ"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:753
#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2362
-#, fuzzy
msgid "Filtering enabled"
-msgstr "¿áâàëçÚö þÚÛîçÐÝë"
+msgstr "ÄöÛìâàÐæëï þÚÛîçÐÝÐ"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:755
#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2364
-#, fuzzy
msgid "Filtering disabled"
-msgstr "¿áâàëçÚö ÒëÚÛîçÐÝë"
+msgstr "ÄöÛìâàÐæëï ÒëÚÛîçÐÝÐï"
#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:47
#: backends/graphics/wincesdl/wincesdl-graphics.cpp:88
@@ -4410,6 +4406,14 @@ msgstr "¿ÐÚÐ×Ðæì ÛöçëÛìÝöÚ ÚÐÔàÐþ ã áÕÚãÝÔã"
msgid "Show the current number of frames per second in the upper left corner"
msgstr "¿ÐÚÐ×Ðæì ã ÒÕàåÝöÜ ÛÕÒëÜ ÚãæÕ ÑïÓãçãî ÚÞÛìÚÐáæì ÚÐÔàÐþ ã áÕÚãÝÔã"
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr ""
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr ""
+
#: engines/zvision/detection_tables.h:52
msgid "Use the original save/load screens instead of the ScummVM interface"
msgstr ""
diff --git a/po/ca_ES.po b/po/ca_ES.po
index 161347dce7..56f73ae845 100644
--- a/po/ca_ES.po
+++ b/po/ca_ES.po
@@ -1,5 +1,5 @@
# Catalan translation for ScummVM.
-# Copyright (C) 2007-2016 The ScummVM Team
+# Copyright (C) 2007-2017 The ScummVM Team
# This file is distributed under the same license as the ScummVM package.
# Jordi Vilalta Prat <jvprat@jvprat.com>, 2007-2011.
#
@@ -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: 2016-12-19 02:13+0100\n"
+"POT-Creation-Date: 2016-12-26 16:14+0100\n"
"PO-Revision-Date: 2016-12-04 15:46+0000\n"
"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n"
"Language-Team: Catalan <https://translations.scummvm.org/projects/scummvm/"
@@ -4414,6 +4414,14 @@ msgstr ""
msgid "Show the current number of frames per second in the upper left corner"
msgstr ""
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr ""
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr ""
+
#: engines/zvision/detection_tables.h:52
#, fuzzy
msgid "Use the original save/load screens instead of the ScummVM interface"
diff --git a/po/cs_CZ.po b/po/cs_CZ.po
index be63eb7eb5..f1238bc515 100644
--- a/po/cs_CZ.po
+++ b/po/cs_CZ.po
@@ -1,5 +1,5 @@
# Czech translation for ScummVM.
-# Copyright (C) 2001-2016 The ScummVM Team
+# Copyright (C) 2011-2017 The ScummVM Team
# This file is distributed under the same license as the ScummVM package.
# Zbynìk Schwarz <zbynek.schwarz@gmail.com>, 2011-2013.
#
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.7.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2016-12-19 02:13+0100\n"
+"POT-Creation-Date: 2016-12-26 16:14+0100\n"
"PO-Revision-Date: 2016-12-04 15:43+0000\n"
"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n"
"Language-Team: Czech <https://translations.scummvm.org/projects/scummvm/"
@@ -4391,6 +4391,14 @@ msgstr "Zobrazit poèítadlo FPS"
msgid "Show the current number of frames per second in the upper left corner"
msgstr "Zobrazit souèasný poèet snímkù za sekundu v horním levém rohu"
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr ""
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr ""
+
#: engines/zvision/detection_tables.h:52
msgid "Use the original save/load screens instead of the ScummVM interface"
msgstr "Pou¾ít pùvodní obrazovky naètení/ulo¾ení místo rozhraní ScummVM"
diff --git a/po/da_DK.po b/po/da_DK.po
index 0434175bea..4c46d1fd31 100644
--- a/po/da_DK.po
+++ b/po/da_DK.po
@@ -1,5 +1,5 @@
# Dansk translation for ScummVM
-# Copyright (C) 2010-2016 The ScummVM Team
+# Copyright (C) 2010-2017 The ScummVM Team
# This file is distributed under the same license as the ScummVM package.
# Steffen Nyeland <steffen@nyeland.dk>, 2010.
#
@@ -7,11 +7,11 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.3.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2016-12-19 02:13+0100\n"
-"PO-Revision-Date: 2016-12-06 22:20+0000\n"
-"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n"
-"Language-Team: Danish <https://translations.scummvm.org/projects/scummvm/"
-"scummvm/da/>\n"
+"POT-Creation-Date: 2016-12-26 16:14+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/scummvm/da/>\n"
"Language: da_DK\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
@@ -89,24 +89,24 @@ msgstr "Vælg bibliotek med spil data"
#: gui/downloaddialog.cpp:51 gui/downloaddialog.cpp:263
msgid "From: "
-msgstr ""
+msgstr "Fra: "
#: gui/downloaddialog.cpp:52 gui/downloaddialog.cpp:264
msgid "To: "
-msgstr ""
+msgstr "Til: "
#: gui/downloaddialog.cpp:63
msgid "Cancel download"
-msgstr ""
+msgstr "Annuller download"
#: gui/downloaddialog.cpp:65
msgctxt "lowres"
msgid "Cancel download"
-msgstr ""
+msgstr "Annuller download"
#: gui/downloaddialog.cpp:67
msgid "Hide"
-msgstr ""
+msgstr "Skjul"
#: gui/downloaddialog.cpp:117
msgid ""
@@ -701,7 +701,7 @@ msgstr ""
#: gui/launcher.cpp:365
msgid "This directory cannot be used yet, it is being downloaded into!"
-msgstr ""
+msgstr "Denne mappe kan ikke bruges endnu, der downloades filer til den!"
#: gui/launcher.cpp:415
msgid "Do you really want to remove this game configuration?"
@@ -4395,6 +4395,14 @@ msgstr "Vis FPS-tæller"
msgid "Show the current number of frames per second in the upper left corner"
msgstr "Vis det nuværende antal billeder per sekund i øverste venstre hjørne"
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr ""
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr ""
+
#: engines/zvision/detection_tables.h:52
msgid "Use the original save/load screens instead of the ScummVM interface"
msgstr ""
diff --git a/po/de_DE.po b/po/de_DE.po
index cc9fad379d..069602d3d6 100644
--- a/po/de_DE.po
+++ b/po/de_DE.po
@@ -1,5 +1,5 @@
# German translation for ScummVM.
-# Copyright (C) 2010-2016 The ScummVM Team
+# Copyright (C) 2010-2017 The ScummVM Team
# This file is distributed under the same license as the ScummVM package.
# Simon Sawatzki <SimSaw@gmx.de>, Lothar Serra Mari <rootfather@scummvm.org>, 2016.
#
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.10.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2016-12-19 02:13+0100\n"
-"PO-Revision-Date: 2016-12-19 08:20+0000\n"
+"POT-Creation-Date: 2016-12-26 16:14+0100\n"
+"PO-Revision-Date: 2016-12-27 09:55+0000\n"
"Last-Translator: Lothar Serra Mari <rootfather@scummvm.org>\n"
"Language-Team: German "
"<https://translations.scummvm.org/projects/scummvm/scummvm/de/>\n"
@@ -2797,8 +2797,8 @@ msgid ""
"Incorrect version of the '%s' engine data file found. Expected %d.%d but got "
"%d.%d."
msgstr ""
-"Falsche Version der Engine-Datendatei '%s' gefunden. %d.%d erwartet, aber "
-"%d.%d bekommen."
+"Falsche Version der Engine-Datendatei '%s' gefunden. %d.%d erwartet, aber %d."
+"%d bekommen."
#: engines/adl/detection.cpp:45 engines/adl/detection.cpp:55
msgid "Color mode"
@@ -4449,6 +4449,14 @@ msgid "Show the current number of frames per second in the upper left corner"
msgstr ""
"Zeige die aktuelle Anzahl von Bildern pro Sekunde in der oberen linken Ecke"
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr "Bilineare Filterung für Sprites (LANGSAM)"
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr "Bilineare Filterung auf einzelne Sprites anwenden"
+
#: engines/zvision/detection_tables.h:52
msgid "Use the original save/load screens instead of the ScummVM interface"
msgstr ""
diff --git a/po/el.po b/po/el.po
new file mode 100644
index 0000000000..9ecdcf4e33
--- /dev/null
+++ b/po/el.po
@@ -0,0 +1,4495 @@
+# Greek translation for ScummVM.
+# Copyright (C) 2016-2017 ScummVM Team
+# This file is distributed under the same license as the ScummVM package.
+# Filippos Karapetis <md5@scummvm.org>, 2016.
+msgid ""
+msgstr ""
+"Project-Id-Version: ScummVM 1.10.0git\n"
+"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
+"POT-Creation-Date: 2016-12-26 16:14+0100\n"
+"PO-Revision-Date: 2017-01-04 23:55+0200\n"
+"Last-Translator: Filippos Karapetis <bluegr@gmail.com>\n"
+"Language-Team: Greek "
+"<https://translations.scummvm.org/projects/scummvm/scummvm/el/>\n"
+"Language: el\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-7\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Poedit 1.8.11\n"
+"X-Language-name: Greek\n"
+
+#: gui/about.cpp:94
+#, c-format
+msgid "(built on %s)"
+msgstr "(äçìéïõñãÞèçêå ôçí %s)"
+
+#: gui/about.cpp:101
+msgid "Features compiled in:"
+msgstr "×áñáêôçñéóôéêÜ ðïõ ðåñéëáìâÜíïíôáé:"
+
+#: gui/about.cpp:110
+msgid "Available engines:"
+msgstr "ÄéáèÝóéìåò ìç÷áíÝò:"
+
+#: gui/browser.cpp:68 gui/browser_osx.mm:104
+msgid "Show hidden files"
+msgstr "ÅìöÜíéóç êñõöþí áñ÷åßùí"
+
+#: gui/browser.cpp:68
+msgid "Show files marked with the hidden attribute"
+msgstr "ÅìöÜíåéóç áñ÷åßùí ðïõ Ý÷ïõí åðéóçìáíèåß ùò êñõöÜ"
+
+#: gui/browser.cpp:72 gui/remotebrowser.cpp:56
+msgid "Go up"
+msgstr "ÌåôÜâáóç ðÜíù"
+
+#: gui/browser.cpp:72 gui/browser.cpp:74 gui/remotebrowser.cpp:56
+#: gui/remotebrowser.cpp:58
+msgid "Go to previous directory level"
+msgstr "ÌåôÜâáóç óôï ðñïçãïýìåíï åðßðåäï êáôáëüãïõ"
+
+#: gui/browser.cpp:74 gui/remotebrowser.cpp:58
+msgctxt "lowres"
+msgid "Go up"
+msgstr "ÌåôÜâáóç ðÜíù"
+
+#: gui/browser.cpp:75 gui/chooser.cpp:46 gui/editgamedialog.cpp:292
+#: gui/editrecorddialog.cpp:67 gui/filebrowser-dialog.cpp:64
+#: gui/fluidsynth-dialog.cpp:152 gui/KeysDialog.cpp:43 gui/massadd.cpp:95
+#: gui/options.cpp:1461 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/recorderdialog.cpp:155 gui/remotebrowser.cpp:59
+#: gui/saveload-dialog.cpp:383 gui/saveload-dialog.cpp:443
+#: gui/saveload-dialog.cpp:717 gui/saveload-dialog.cpp:1111
+#: gui/storagewizarddialog.cpp:68 gui/themebrowser.cpp:55
+#: gui/updates-dialog.cpp:113 engines/engine.cpp:558
+#: backends/events/default/default-events.cpp:196
+#: backends/events/default/default-events.cpp:218
+#: backends/platform/wii/options.cpp:48 engines/drascula/saveload.cpp:49
+#: engines/parallaction/saveload.cpp:271 engines/scumm/dialogs.cpp:187
+#: engines/sword1/control.cpp:865
+msgid "Cancel"
+msgstr "Áêýñùóç"
+
+#: gui/browser.cpp:76 gui/browser_osx.mm:103 gui/chooser.cpp:47
+#: gui/filebrowser-dialog.cpp:65 gui/remotebrowser.cpp:60
+#: gui/themebrowser.cpp:56
+msgid "Choose"
+msgstr "ÅðéëïãÞ"
+
+#: gui/downloaddialog.cpp:48
+msgid "Select directory where to download game data"
+msgstr "ÅðéëÝîôå öÜêåëï ãéá íá ìåôáöïñôþóåôå ôá äåäïìÝíá ðáé÷íéäéþí"
+
+#: gui/downloaddialog.cpp:49 gui/editgamedialog.cpp:470 gui/launcher.cpp:197
+msgid "Select directory with game data"
+msgstr "ÅðéëÝîôå öÜêåëï ìå äåäïìÝíá ðáé÷íéäéïý"
+
+#: gui/downloaddialog.cpp:51 gui/downloaddialog.cpp:263
+msgid "From: "
+msgstr "Áðü: "
+
+#: gui/downloaddialog.cpp:52 gui/downloaddialog.cpp:264
+msgid "To: "
+msgstr "¸ùò: "
+
+#: gui/downloaddialog.cpp:63
+msgid "Cancel download"
+msgstr "Áêýñùóç ëÞøçò"
+
+#: gui/downloaddialog.cpp:65
+msgctxt "lowres"
+msgid "Cancel download"
+msgstr "Áêýñùóç ëÞøçò"
+
+#: gui/downloaddialog.cpp:67
+msgid "Hide"
+msgstr "Áðüêñõøç"
+
+#: gui/downloaddialog.cpp:117
+msgid ""
+"It looks like your connection is limited. Do you really want to download "
+"files with it?"
+msgstr ""
+"Öáßíåôáé ðùò ç óýíäåóÞ óáò åßíáé ðåñéïñéóìÝíç. ÈÝëåôå ðñáãìáôéêÜ íá "
+"ìåôáöïñôþóåôå áñ÷åßá ìå áõôÞ;"
+
+#: gui/downloaddialog.cpp:118 gui/downloaddialog.cpp:152
+#: gui/filebrowser-dialog.cpp:132 gui/fluidsynth-dialog.cpp:217
+#: gui/launcher.cpp:307 gui/launcher.cpp:415 gui/launcher.cpp:474
+#: gui/storagewizarddialog.cpp:112
+#: backends/events/symbiansdl/symbiansdl-events.cpp:186
+#: backends/platform/wince/CEActionsPocket.cpp:326
+#: backends/platform/wince/CEActionsSmartphone.cpp:287
+#: backends/platform/wince/CELauncherDialog.cpp:83
+#: engines/kyra/saveload_eob.cpp:557 engines/kyra/saveload_eob.cpp:590
+#: engines/sci/graphics/controls32.cpp:827
+msgid "Yes"
+msgstr "Íáé"
+
+#: gui/downloaddialog.cpp:118 gui/downloaddialog.cpp:153
+#: gui/filebrowser-dialog.cpp:132 gui/fluidsynth-dialog.cpp:217
+#: gui/launcher.cpp:307 gui/launcher.cpp:415 gui/launcher.cpp:474
+#: gui/storagewizarddialog.cpp:112
+#: backends/events/symbiansdl/symbiansdl-events.cpp:186
+#: backends/platform/wince/CEActionsPocket.cpp:326
+#: backends/platform/wince/CEActionsSmartphone.cpp:287
+#: backends/platform/wince/CELauncherDialog.cpp:83
+#: engines/kyra/saveload_eob.cpp:557 engines/kyra/saveload_eob.cpp:590
+#: engines/sci/graphics/controls32.cpp:827
+msgid "No"
+msgstr "¼÷é"
+
+#: gui/downloaddialog.cpp:136 gui/launcher.cpp:565
+msgid "ScummVM couldn't open the specified directory!"
+msgstr "Ôï ScummVM äå ìðüñåóå íá áíïßîåé ôï êáèïñéóìÝíï öÜêåëï!"
+
+#: gui/downloaddialog.cpp:146
+msgid ""
+"Cannot create a directory to download - the specified directory has a file "
+"with the same name."
+msgstr ""
+"Äåí Þôáí äõíáôÞ ç äçìéïõñãßá öáêÝëïõ ãéá ìåôáöüñôùóç - ï ðñïêáèïñéóìÝíïò "
+"öÜêåëïò Ý÷åé Ýíá áñ÷åßï ìå ôï ßäéï üíïìá."
+
+#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
+#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:522
+#: gui/launcher.cpp:526 gui/massadd.cpp:92 gui/options.cpp:1463
+#: gui/saveload-dialog.cpp:1112 engines/engine.cpp:477 engines/engine.cpp:488
+#: backends/platform/wii/options.cpp:47
+#: backends/platform/wince/CELauncherDialog.cpp:54
+#: engines/agos/animation.cpp:559 engines/drascula/saveload.cpp:49
+#: engines/groovie/script.cpp:407 engines/parallaction/saveload.cpp:271
+#: engines/sci/graphics/controls32.cpp:824 engines/scumm/dialogs.cpp:189
+#: engines/scumm/scumm.cpp:1882 engines/scumm/players/player_v3m.cpp:130
+#: engines/scumm/players/player_v5m.cpp:108 engines/sky/compact.cpp:141
+#: engines/sword1/animation.cpp:524 engines/sword1/animation.cpp:545
+#: engines/sword1/animation.cpp:561 engines/sword1/animation.cpp:569
+#: engines/sword1/control.cpp:865 engines/sword1/logic.cpp:1633
+#: engines/sword2/animation.cpp:425 engines/sword2/animation.cpp:445
+#: engines/sword2/animation.cpp:461 engines/sword2/animation.cpp:471
+#: engines/zvision/file/save_manager.cpp:224
+msgid "OK"
+msgstr "OK"
+
+#: gui/downloaddialog.cpp:151
+#, c-format
+msgid ""
+"The \"%s\" already exists in the specified directory.\n"
+"Do you really want to download files into that directory?"
+msgstr ""
+"Ôï \"%s\" õðÜñ÷åé Þäç óôïí ðñïêáèïñéóìÝíï öÜêåëï.\n"
+"ÈÝëåôå ðñáãìáôéêÜ íá ìåôáöïñôþóåôå áñ÷åßá óå áõôü ôï öÜêåëï;"
+
+#: gui/downloaddialog.cpp:251
+#, c-format
+msgid "Downloaded %s %s / %s %s"
+msgstr "Ìåôáöïñôþèçêáí %s %s / %s %s"
+
+#: gui/downloaddialog.cpp:258
+#, c-format
+msgid "Download speed: %s %s"
+msgstr "Ôá÷ýôçôá ìåôáöüñôùóçò: %s %s"
+
+#: gui/editgamedialog.cpp:132
+msgid "Game"
+msgstr "Ðáé÷íßäé"
+
+#: gui/editgamedialog.cpp:136
+msgid "ID:"
+msgstr "ID:"
+
+#: gui/editgamedialog.cpp:136 gui/editgamedialog.cpp:138
+#: gui/editgamedialog.cpp:139
+msgid ""
+"Short game identifier used for referring to saved games and running the game "
+"from the command line"
+msgstr ""
+"Óýíôïìï áíáãíùñéóôéêü ðáé÷íéäéïý ðïõ ÷ñçóéìïðïéåßôáé ãéá ôçí ðáñáðïìðÞ "
+"áðïèçêåõìÝíùí ðáé÷íéäéþí êáé ãéá ôçí åêôÝëåóç ôïõ ðáé÷íéäéïý áðü ôç ãñáììÞ "
+"åíôïëþí"
+
+#: gui/editgamedialog.cpp:138
+msgctxt "lowres"
+msgid "ID:"
+msgstr "ID:"
+
+#: gui/editgamedialog.cpp:143 gui/editrecorddialog.cpp:59
+msgid "Name:"
+msgstr "¼íïìá:"
+
+#: gui/editgamedialog.cpp:143 gui/editgamedialog.cpp:145
+#: gui/editgamedialog.cpp:146
+msgid "Full title of the game"
+msgstr "ÐëÞñçò ôßôëïò ôïõ ðáé÷íéäéïý"
+
+#: gui/editgamedialog.cpp:145
+msgctxt "lowres"
+msgid "Name:"
+msgstr "¼íïìá:"
+
+#: gui/editgamedialog.cpp:149
+msgid "Language:"
+msgstr "Ãëþóóá:"
+
+#: gui/editgamedialog.cpp:149 gui/editgamedialog.cpp:150
+msgid ""
+"Language of the game. This will not turn your Spanish game version into "
+"English"
+msgstr ""
+"Ãëþóóá ôïõ ðáé÷íéäéïý. Áõôü äå èá ìåôáôñÝøåé ôçí ÉóðáíéêÞ Ýêäïóç ôïõ "
+"ðáé÷íéäéïý óáò óå ÁããëéêÞ"
+
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:121
+#: gui/options.cpp:812 gui/options.cpp:825 gui/options.cpp:1356
+#: audio/null.cpp:41
+msgid "<default>"
+msgstr "<ðñïêáèïñéóìÝíç>"
+
+#: gui/editgamedialog.cpp:161
+msgid "Platform:"
+msgstr "Ðëáôöüñìá:"
+
+#: gui/editgamedialog.cpp:161 gui/editgamedialog.cpp:163
+#: gui/editgamedialog.cpp:164
+msgid "Platform the game was originally designed for"
+msgstr "Ðëáôöüñìá ãéá ôçí ïðïßá ó÷åäéÜóôçêå áñ÷éêÜ ôï ðáé÷íßäé"
+
+#: gui/editgamedialog.cpp:163
+msgctxt "lowres"
+msgid "Platform:"
+msgstr "Ðëáôöüñìá:"
+
+#: gui/editgamedialog.cpp:176
+msgid "Engine"
+msgstr "Ìç÷áíÞ"
+
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1147 gui/options.cpp:1232
+msgid "Graphics"
+msgstr "ÃñáöéêÜ"
+
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1147 gui/options.cpp:1232
+msgid "GFX"
+msgstr "Ãñáö."
+
+#: gui/editgamedialog.cpp:187
+msgid "Override global graphic settings"
+msgstr "ÐáñÜêáìøç êáèïëéêþí ñõèìßóåùí ãñáöéêþí"
+
+#: gui/editgamedialog.cpp:189
+msgctxt "lowres"
+msgid "Override global graphic settings"
+msgstr "ÐáñÜêáìøç ñõèì, ãñáöéêþí"
+
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1238
+msgid "Audio"
+msgstr "¹÷ïò"
+
+#: gui/editgamedialog.cpp:199
+msgid "Override global audio settings"
+msgstr "ÐáñÜêáìøç êáèïëéêþí ñõèìßóåùí Þ÷ïõ"
+
+#: gui/editgamedialog.cpp:201
+msgctxt "lowres"
+msgid "Override global audio settings"
+msgstr "ÐáñÜêáìøç ñõèì. Þ÷ïõ"
+
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1243
+msgid "Volume"
+msgstr "¸íôáóç"
+
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1245
+msgctxt "lowres"
+msgid "Volume"
+msgstr "¸íôáóç"
+
+#: gui/editgamedialog.cpp:215
+msgid "Override global volume settings"
+msgstr "ÐáñÜêáìøç êáèïëéêþí ñõèìßóåùí Ýíôáóçò"
+
+#: gui/editgamedialog.cpp:217
+msgctxt "lowres"
+msgid "Override global volume settings"
+msgstr "ÐáñÜêáìøç ñõèì. Ýíôáóçò"
+
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1253
+msgid "MIDI"
+msgstr "MIDI"
+
+#: gui/editgamedialog.cpp:229
+msgid "Override global MIDI settings"
+msgstr "ÐáñÜêáìøç êáèïëéêþí ñõèìßóåùí MIDI"
+
+#: gui/editgamedialog.cpp:231
+msgctxt "lowres"
+msgid "Override global MIDI settings"
+msgstr "ÐáñÜêáìøç ñõèì. MIDI"
+
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1263
+msgid "MT-32"
+msgstr "MT-32"
+
+#: gui/editgamedialog.cpp:244
+msgid "Override global MT-32 settings"
+msgstr "ÐáñÜêáìøç êáèïëéêþí ñõèìßóåùí MT-32"
+
+#: gui/editgamedialog.cpp:246
+msgctxt "lowres"
+msgid "Override global MT-32 settings"
+msgstr "ÐáñÜêáìøç ñõèì. MT-32"
+
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1270
+msgid "Paths"
+msgstr "ÖÜêåëïé"
+
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1272
+msgctxt "lowres"
+msgid "Paths"
+msgstr "ÖÜêåëïé"
+
+#: gui/editgamedialog.cpp:264
+msgid "Game Path:"
+msgstr "ÖÜêåëïò Ðáé÷íéäéïý:"
+
+#: gui/editgamedialog.cpp:266
+msgctxt "lowres"
+msgid "Game Path:"
+msgstr "ÖÜêåëïò Ðáé÷íéäéïý:"
+
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1296
+msgid "Extra Path:"
+msgstr "ÖÜêåëïò ¸îôñá:"
+
+#: gui/editgamedialog.cpp:271 gui/editgamedialog.cpp:273
+#: gui/editgamedialog.cpp:274
+msgid "Specifies path to additional data used by the game"
+msgstr ""
+"Êáèïñßæåé äéáäñïìÞ ãéá ðñüóèåôá äåäïìÝíá ðïõ ÷ñçóéìïðïéïýíôáé áðü ôï ðáé÷íßäé"
+
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1298
+msgctxt "lowres"
+msgid "Extra Path:"
+msgstr "ÖÜêåëïò ¸îôñá:"
+
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1280
+msgid "Save Path:"
+msgstr "ÖÜêåëïò ÁðïèÞêåõóçò:"
+
+#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1280 gui/options.cpp:1282
+#: gui/options.cpp:1283
+msgid "Specifies where your saved games are put"
+msgstr "Êáèïñßæåé ôçí ôïðïèåóßá ôùí áðïèçêåõìÝíùí ðáé÷íéäéþí óáò"
+
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1282
+msgctxt "lowres"
+msgid "Save Path:"
+msgstr "ÖÜêåëïò Áðïè.:"
+
+#: gui/editgamedialog.cpp:301 gui/editgamedialog.cpp:398
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1291
+#: gui/options.cpp:1299 gui/options.cpp:1308 gui/options.cpp:1488
+#: gui/options.cpp:1494 gui/options.cpp:1502 gui/options.cpp:1525
+#: gui/options.cpp:1554 gui/options.cpp:1560 gui/options.cpp:1567
+#: gui/options.cpp:1575 gui/options.cpp:1758 gui/options.cpp:1761
+#: gui/options.cpp:1768 gui/options.cpp:1778
+msgctxt "path"
+msgid "None"
+msgstr "ÊáíÝíá"
+
+#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1482 gui/options.cpp:1548
+#: gui/options.cpp:1764 backends/platform/wii/options.cpp:56
+msgid "Default"
+msgstr "ÐñïêáèïñéóìÝíï"
+
+#: gui/editgamedialog.cpp:450 gui/options.cpp:1772
+msgid "Select SoundFont"
+msgstr "ÅðéëÝîôå SoundFont"
+
+#: gui/editgamedialog.cpp:489
+msgid "Select additional game directory"
+msgstr "ÅðéëÝîôå ðñüóèåôï öÜêåëï ðáé÷íéäéïý"
+
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1695
+msgid "Select directory for saved games"
+msgstr "ÅðéëÝîôå öÜêåëï ãéá áðïèçêåõìÝíá ðáé÷íßäéá"
+
+#: gui/editgamedialog.cpp:508
+msgid ""
+"Saved games sync feature doesn't work with non-default directories. If you "
+"want your saved games to sync, use default directory."
+msgstr ""
+"Ç ëåéôïõñãßá óõã÷ñïíéóìïý áðïèçêåõìÝíùí ðáé÷íéäéþí äå ëåéôïõñãåß ìå ìç-"
+"ðñïåðéëåãìÝíïõò öáêÝëïõò. Áí åðéèõìåßôå íá óõã÷ñïíßæïíôáé ôá áðïèçêåõìÝíá "
+"ðáé÷íßäéá óáò, ÷ñçóéìïðïéÞóôå ôïí ðñïåðéëåãìÝíï öÜêåëï."
+
+#: gui/editgamedialog.cpp:534
+msgid "This game ID is already taken. Please choose another one."
+msgstr ""
+"Áõôü ôï áíáãíùñéóôéêü ðáé÷íéäéïý ÷ñçóéìïðïéåßôáé Þäç. Ðáñáêáëþ åðéëÝîôå Ýíá "
+"Üëëï."
+
+#: gui/editrecorddialog.cpp:58
+msgid "Author:"
+msgstr "ÓõããñáöÝáò:"
+
+#: gui/editrecorddialog.cpp:60
+msgid "Notes:"
+msgstr "Óçìåéþóåéò:"
+
+#: gui/editrecorddialog.cpp:68 gui/predictivedialog.cpp:74
+msgid "Ok"
+msgstr "Ok"
+
+#: gui/filebrowser-dialog.cpp:49
+msgid "Choose file for loading"
+msgstr "ÅðéëïãÞ áñ÷åßïõ ãéá öüñôùóç"
+
+#: gui/filebrowser-dialog.cpp:49
+msgid "Enter filename for saving"
+msgstr "ÅéóÜãåôå üíïìá áñ÷åßïõ ãéá áðïèÞêåõóç"
+
+#: gui/filebrowser-dialog.cpp:132
+msgid "Do you really want to overwrite the file?"
+msgstr "ÈÝëåôå ðñáãìáôéêÜ íá áíôéêáôáóôÞóåôå ôï áñ÷åßï;"
+
+#: gui/fluidsynth-dialog.cpp:68
+msgid "Reverb"
+msgstr "ÁíôÞ÷çóç"
+
+#: gui/fluidsynth-dialog.cpp:70 gui/fluidsynth-dialog.cpp:102
+msgid "Active"
+msgstr "Åíåñãü"
+
+#: gui/fluidsynth-dialog.cpp:72
+msgid "Room:"
+msgstr "ÄùìÜôéï:"
+
+#: gui/fluidsynth-dialog.cpp:79
+msgid "Damp:"
+msgstr "Õãñáóßá:"
+
+#: gui/fluidsynth-dialog.cpp:86
+msgid "Width:"
+msgstr "ÐëÜôïò:"
+
+#: gui/fluidsynth-dialog.cpp:93 gui/fluidsynth-dialog.cpp:111
+msgid "Level:"
+msgstr "Åðßðåäï:"
+
+#: gui/fluidsynth-dialog.cpp:100
+msgid "Chorus"
+msgstr "×ïñùäßá"
+
+#: gui/fluidsynth-dialog.cpp:104
+msgid "N:"
+msgstr "N:"
+
+#: gui/fluidsynth-dialog.cpp:118
+msgid "Speed:"
+msgstr "Ôá÷ýôçôá:"
+
+#: gui/fluidsynth-dialog.cpp:125
+msgid "Depth:"
+msgstr "ÂÜèïò:"
+
+#: gui/fluidsynth-dialog.cpp:132
+msgid "Type:"
+msgstr "Ôýðïò:"
+
+#: gui/fluidsynth-dialog.cpp:135
+msgid "Sine"
+msgstr "Çìßôïíï"
+
+#: gui/fluidsynth-dialog.cpp:136
+msgid "Triangle"
+msgstr "Ôñßãùíï"
+
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1316
+msgid "Misc"
+msgstr "ÄéÜöïñá"
+
+#: gui/fluidsynth-dialog.cpp:140
+msgid "Interpolation:"
+msgstr "ÐáñåìâïëÞ:"
+
+#: gui/fluidsynth-dialog.cpp:143
+msgid "None (fastest)"
+msgstr "Êáìßá (ãñçãïñüôåñï)"
+
+#: gui/fluidsynth-dialog.cpp:144
+msgid "Linear"
+msgstr "ÃñáììéêÞ"
+
+#: gui/fluidsynth-dialog.cpp:145
+msgid "Fourth-order"
+msgstr "ÔÝôáñôçò-ôÜîçò"
+
+#: gui/fluidsynth-dialog.cpp:146
+msgid "Seventh-order"
+msgstr "¸âäïìçò-ôÜîçò"
+
+#: gui/fluidsynth-dialog.cpp:150
+msgid "Reset"
+msgstr "ÅðáíáöïñÜ"
+
+#: gui/fluidsynth-dialog.cpp:150
+msgid "Reset all FluidSynth settings to their default values."
+msgstr ""
+"ÅðáíáöïñÜ üëùí ôùí ñõèìßóåùí ôïõ FluidSynth óôéò ðñïêáèïñéóìÝíåò ôïõò ôéìÝò."
+
+#: gui/fluidsynth-dialog.cpp:217
+msgid ""
+"Do you really want to reset all FluidSynth settings to their default values?"
+msgstr ""
+"ÈÝëåôå ðñáãìáôéêÜ íá åðáíáöÝñåôå üëåò ôéò ñõèìßóåéò ôïõ FluidSynth óôéò "
+"ðñïêáèïñéóìÝíåò ôïõò ôéìÝò;"
+
+#: gui/gui-manager.cpp:119 backends/keymapper/remap-dialog.cpp:53
+#: engines/scumm/help.cpp:126 engines/scumm/help.cpp:141
+#: engines/scumm/help.cpp:166 engines/scumm/help.cpp:192
+#: engines/scumm/help.cpp:210
+msgid "Close"
+msgstr "Êëåßóéìï"
+
+#: gui/gui-manager.cpp:122
+msgid "Mouse click"
+msgstr "Click ðïíôéêéïý"
+
+#: gui/gui-manager.cpp:126 base/main.cpp:340
+msgid "Display keyboard"
+msgstr "ÐñïâïëÞ ðëçêôñïëïãßïõ"
+
+#: gui/gui-manager.cpp:130 base/main.cpp:344
+msgid "Remap keys"
+msgstr "Áíôéóôïß÷éóç ðëÞêôñùí"
+
+#: gui/gui-manager.cpp:133 base/main.cpp:347 engines/scumm/help.cpp:87
+msgid "Toggle fullscreen"
+msgstr "Ëåéôïõñãßá ðëÞñïõò ïèüíçò"
+
+#: gui/KeysDialog.cpp:41
+msgid "Map"
+msgstr "Áíôéóôïß÷éóç"
+
+#: gui/KeysDialog.cpp:49
+msgid "Select an action and click 'Map'"
+msgstr "ÅðéëÝîôå ìéá åíÝñãåéá êáé ðáôÞóôå 'Áíôéóôïß÷éóç'"
+
+#: gui/KeysDialog.cpp:80 gui/KeysDialog.cpp:102 gui/KeysDialog.cpp:141
+#, c-format
+msgid "Associated key : %s"
+msgstr "Óõó÷åôéóìÝíï êëåéäß : %s"
+
+#: gui/KeysDialog.cpp:82 gui/KeysDialog.cpp:104 gui/KeysDialog.cpp:143
+#, c-format
+msgid "Associated key : none"
+msgstr "Óõó÷åôéóìÝíï êëåéäß: êáíÝíá"
+
+#: gui/KeysDialog.cpp:90
+msgid "Please select an action"
+msgstr "Ðáñáêáëþ åðéëÝîôå ìéá åíÝñãåéá"
+
+#: gui/KeysDialog.cpp:106
+msgid "Press the key to associate"
+msgstr "ÐáôÞóôå ôï ðëÞêôñï ãéá óõó÷Ýôéóç"
+
+#: gui/KeysDialog.cpp:145 gui/KeysDialog.h:36
+msgid "Choose an action to map"
+msgstr "ÅðéëÝîôå ìéá åíÝñãåéá ãéá áíôéóôïß÷éóç"
+
+#: gui/launcher.cpp:141 engines/dialogs.cpp:111 engines/mohawk/dialogs.cpp:98
+msgid "~Q~uit"
+msgstr "¸~î~ïäïò"
+
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+msgid "Quit ScummVM"
+msgstr "¸îïäïò áðü ôï ScummVM"
+
+#: gui/launcher.cpp:142
+msgid "A~b~out..."
+msgstr "~Ð~åñß..."
+
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+msgid "About ScummVM"
+msgstr "Ðåñß ôïõ ScummVM"
+
+#: gui/launcher.cpp:143
+msgid "~O~ptions..."
+msgstr "~Å~ðéëïãÝò..."
+
+#: gui/launcher.cpp:143
+msgid "Change global ScummVM options"
+msgstr "ÁëëáãÞ êáèïëéêþí åðéëïãþí ôïõ ScummVM"
+
+#: gui/launcher.cpp:145
+msgid "~S~tart"
+msgstr "Å~ê~êßíçóç"
+
+#: gui/launcher.cpp:145
+msgid "Start selected game"
+msgstr "Åêêßíçóç åðéëåãìÝíïõ ðáé÷íéäéïý"
+
+#: gui/launcher.cpp:148
+msgid "~L~oad..."
+msgstr "~Ö~üñôùóç..."
+
+#: gui/launcher.cpp:148
+msgid "Load saved game for selected game"
+msgstr "Öüñôùóç áðïèçêåõìÝíïõ ðáé÷íéäéïý ãéá ôï åðéëåãìÝíï ðáé÷íßäé"
+
+#: gui/launcher.cpp:153
+msgid "~A~dd Game..."
+msgstr "~Ð~ñïóèÞêç Ðáé÷íéäéïý..."
+
+#: gui/launcher.cpp:153 gui/launcher.cpp:160
+msgid "Hold Shift for Mass Add"
+msgstr "ÊñáôÞóôå ðáôçìÝíï ôï Shift ãéá ÌáæéêÞ ÐñïóèÞêç"
+
+#: gui/launcher.cpp:155
+msgid "~E~dit Game..."
+msgstr "~Ä~éüñèùóç Ðáé÷íéäéïý..."
+
+#: gui/launcher.cpp:155 gui/launcher.cpp:162
+msgid "Change game options"
+msgstr "ÁëëáãÞ åðéëïãþí ðáé÷íéäéïý"
+
+#: gui/launcher.cpp:157
+msgid "~R~emove Game"
+msgstr "~Á~öáßñåóç Ðáé÷íéäéïý"
+
+#: gui/launcher.cpp:157 gui/launcher.cpp:164
+msgid "Remove game from the list. The game data files stay intact"
+msgstr ""
+"Áöáßñåóç ðáé÷íéäéïý áðü ôç ëßóôá. Ôá áñ÷åßá äåäïìÝíùí ôïõ ðáé÷íéäéïý ìÝíïõí "
+"áíÝðáöá"
+
+#: gui/launcher.cpp:160
+msgctxt "lowres"
+msgid "~A~dd Game..."
+msgstr "~Ð~ñïóè. Ðáé÷í..."
+
+#: gui/launcher.cpp:162
+msgctxt "lowres"
+msgid "~E~dit Game..."
+msgstr "~Ä~éüñè. Ðáé÷í..."
+
+#: gui/launcher.cpp:164
+msgctxt "lowres"
+msgid "~R~emove Game"
+msgstr "~Á~öáßñ. Ðáé÷í"
+
+#: gui/launcher.cpp:172
+msgid "Search in game list"
+msgstr "ÁíáæÞôçóç óôç ëßóôá ðáé÷íéäéþí"
+
+#: gui/launcher.cpp:176 gui/launcher.cpp:771
+msgid "Search:"
+msgstr "ÁíáæÞôçóç:"
+
+#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
+#: engines/mohawk/dialogs.cpp:103 engines/mohawk/riven.cpp:734
+#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/wage/saveload.cpp:748
+msgid "Load game:"
+msgstr "Öüñôùóç ðáé÷íéäéïý:"
+
+#: gui/launcher.cpp:200 engines/dialogs.cpp:115
+#: backends/platform/wince/CEActionsPocket.cpp:267
+#: backends/platform/wince/CEActionsSmartphone.cpp:231
+#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:103
+#: engines/mohawk/riven.cpp:734 engines/parallaction/saveload.cpp:194
+#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
+msgid "Load"
+msgstr "Öüñôùóç"
+
+#: gui/launcher.cpp:306
+msgid ""
+"Do you really want to run the mass game detector? This could potentially add "
+"a huge number of games."
+msgstr ""
+"ÈÝëåôå ðñáãìáôéêÜ íá ôñÝîåôå ôïí ìáæéêü áíé÷íåõôÞ ðáé÷íéäéþí; Áõôü èá "
+"ìðïñïýóå åíäå÷ïìÝíùò íá ðñïóèÝóåé Ýíá ôåñÜóôéï áñéèìü ðáé÷íéäéþí."
+
+#: gui/launcher.cpp:365
+msgid "This directory cannot be used yet, it is being downloaded into!"
+msgstr ""
+"Áõôüò ï öÜêåëïò äå ìðïñåß íá ÷ñçóéìïðïéçèåß áêüìç, ãßíåôáé ìåôáöüñôùóç óå "
+"áõôüí!"
+
+#: gui/launcher.cpp:415
+msgid "Do you really want to remove this game configuration?"
+msgstr "ÈÝëåôå ðñáãìáôéêÜ íá óâÞóåôå ôéò ñõèìßóåéò áõôïý ôïõ ðáé÷íéäéïý;"
+
+#: gui/launcher.cpp:473
+msgid "Do you want to load saved game?"
+msgstr "ÈÝëåôå íá öïñôþóåôå ôï áðïèçêåõìÝíï ðáé÷íßäé;"
+
+#: gui/launcher.cpp:522
+msgid "This game does not support loading games from the launcher."
+msgstr "Áõôü ôï ðáé÷íßäé äåí õðïóôçñßæåé öüñôùóç ðáé÷íéäéþí áðü ôïí ðñïùèçôÞ."
+
+#: gui/launcher.cpp:526
+msgid "ScummVM could not find any engine capable of running the selected game!"
+msgstr ""
+"Ôï ScummVM äå ìðüñåóå íá âñåß êÜðïéá ìç÷áíÞ éêáíÞ íá åêôåëÝóåé ôï åðéëåãìÝíï "
+"ðáé÷íßäé!"
+
+#: gui/launcher.cpp:577
+msgid "ScummVM could not find any game in the specified directory!"
+msgstr ""
+"Ôï ScummVM äå ìðüñåóå íá âñåß êÜðïéï ðáé÷íßäé óôïí ðñïêáèïñéóìÝíï öÜêåëï!"
+
+#: gui/launcher.cpp:590
+msgid "Pick the game:"
+msgstr "ÄéáëÝîôå ôï ðáé÷íßäé:"
+
+#: gui/launcher.cpp:708
+msgid "Mass Add..."
+msgstr "ÌáæéêÞ ÐñïóèÞêç..."
+
+#: gui/launcher.cpp:710
+msgid "Record..."
+msgstr "ÅããñáöÞ..."
+
+#: gui/massadd.cpp:79 gui/massadd.cpp:82
+msgid "... progress ..."
+msgstr "... ðñüïäïò ..."
+
+#: gui/massadd.cpp:259
+msgid "Scan complete!"
+msgstr "Ç óÜñùóç ïëïêëçñþèçêå!"
+
+#: gui/massadd.cpp:262
+#, c-format
+msgid "Discovered %d new games, ignored %d previously added games."
+msgstr ""
+"Áíáêáëýöèçêáí %d íÝá ðáé÷íßäéá, áãíïÞèçêáí %d ðáé÷íßäéá ðïõ Ý÷ïõí Þäç "
+"ðñïóôåèåß."
+
+#: gui/massadd.cpp:266
+#, c-format
+msgid "Scanned %d directories ..."
+msgstr "Óáñþèçêáí %d öÜêåëïé ..."
+
+#: gui/massadd.cpp:269
+#, c-format
+msgid "Discovered %d new games, ignored %d previously added games ..."
+msgstr ""
+"Áíáêáëýöèçêáí %d íÝá ðáé÷íßäéá, áãíïÞèçêáí %d ðáé÷íßäéá ðïõ Ý÷ïõí Þäç "
+"ðñïóôåèåß ..."
+
+#: gui/onscreendialog.cpp:101 gui/onscreendialog.cpp:103
+msgid "Stop"
+msgstr "Óôïð"
+
+#: gui/onscreendialog.cpp:106
+msgid "Edit record description"
+msgstr "Äéüñèùóç ðåñéãñáöÞò åããñáöÞò"
+
+#: gui/onscreendialog.cpp:108
+msgid "Switch to Game"
+msgstr "ÌåôÜâáóç óôï Ðáé÷íßäé"
+
+#: gui/onscreendialog.cpp:110
+msgid "Fast replay"
+msgstr "ÃñÞãïñç åðáíÜëçøç"
+
+#: gui/options.cpp:119 common/updates.cpp:56
+msgid "Never"
+msgstr "ÐïôÝ"
+
+#: gui/options.cpp:119
+msgid "every 5 mins"
+msgstr "êÜèå 5 ëåðôÜ"
+
+#: gui/options.cpp:119
+msgid "every 10 mins"
+msgstr "êÜèå 10 ëåðôÜ"
+
+#: gui/options.cpp:119
+msgid "every 15 mins"
+msgstr "êÜèå 15 ëåðôÜ"
+
+#: gui/options.cpp:119
+msgid "every 30 mins"
+msgstr "êÜèå 30 ëåðôÜ"
+
+#: gui/options.cpp:121
+msgid "8 kHz"
+msgstr "8 kHz"
+
+#: gui/options.cpp:121
+msgid "11 kHz"
+msgstr "11 kHz"
+
+#: gui/options.cpp:121
+msgid "22 kHz"
+msgstr "22 kHz"
+
+#: gui/options.cpp:121
+msgid "44 kHz"
+msgstr "44 kHz"
+
+#: gui/options.cpp:121
+msgid "48 kHz"
+msgstr "48 kHz"
+
+#: gui/options.cpp:289 gui/options.cpp:552 gui/options.cpp:657
+#: gui/options.cpp:726 gui/options.cpp:937
+msgctxt "soundfont"
+msgid "None"
+msgstr "ÊáíÝíá"
+
+#: gui/options.cpp:456
+msgid "Failed to apply some of the graphic options changes:"
+msgstr "Äåí Þôáí äõíáôÞ ç åöáñìïãÞ ïñéóìÝíùí áëëáãþí óôéò åðéëïãÝò ãñáöéêþí:"
+
+#: gui/options.cpp:468
+msgid "the video mode could not be changed."
+msgstr "äåí Þôáí äõíáôÞ ç áëëáãÞ ôçò ëåéôïõñãßáò âßíôåï."
+
+#: gui/options.cpp:474
+msgid "the aspect ratio setting could not be changed"
+msgstr "äåí Þôáí äõíáôÞ ç áëëáãÞ ôçò äéüñèùóçò áíáëïãßáò äéáóôÜóåùí"
+
+#: gui/options.cpp:480
+msgid "the fullscreen setting could not be changed"
+msgstr "äåí Þôáí äõíáôÞ ç áëëáãÞ ôçò ñýèìéóçò ðëÞñïõò ïèüíçò"
+
+#: gui/options.cpp:486
+msgid "the filtering setting could not be changed"
+msgstr "äåí Þôáí äõíáôÞ ç áëëáãÞ ôçò ñýèìéóçò öéëôñáñßóìáôïò"
+
+#: gui/options.cpp:809
+msgid "Graphics mode:"
+msgstr "Ëåéôïõñãßá ãñáöéêþí:"
+
+#: gui/options.cpp:823
+msgid "Render mode:"
+msgstr "Ëåéôïõñãßá áðüäïóçò:"
+
+#: gui/options.cpp:823 gui/options.cpp:824
+msgid "Special dithering modes supported by some games"
+msgstr ""
+"ÅéäéêÝò ëåéôïõñãßåò ÷ñùìáôéêÞò áíôéðáñÜèåóçò ïé ïðïßåò õðïóôçñßæïíôáé áðü "
+"ïñéóìÝíá ðáé÷íßäéá"
+
+#: gui/options.cpp:835 backends/graphics/openglsdl/openglsdl-graphics.cpp:615
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2460
+msgid "Fullscreen mode"
+msgstr "Ëåéôïõñãßá ðëÞñïõò ïèüíçò"
+
+#: gui/options.cpp:838
+msgid "Filter graphics"
+msgstr "Ößëôñï ãñáöéêþí"
+
+#: gui/options.cpp:838
+msgid "Use linear filtering when scaling graphics"
+msgstr "×ñÞóç ãñáììéêïý öéëôñáñßóìáôïò ãéá ôçí êëéìÜêùóç ãñáöéêþí"
+
+#: gui/options.cpp:841
+msgid "Aspect ratio correction"
+msgstr "Äéüñèùóç áíáëïãßáò äéáóôÜóåùí"
+
+#: gui/options.cpp:841
+msgid "Correct aspect ratio for 320x200 games"
+msgstr "Äéüñèùóç áíáëïãßáò äéáóôÜóåùí ãéá ðáé÷íßäéá 320x200"
+
+#: gui/options.cpp:849
+msgid "Preferred Device:"
+msgstr "Ðñïôéìþìåíç óõóêåõÞ:"
+
+#: gui/options.cpp:849
+msgid "Music Device:"
+msgstr "ÓõóêåõÞ ÌïõóéêÞò:"
+
+#: gui/options.cpp:849 gui/options.cpp:851
+msgid "Specifies preferred sound device or sound card emulator"
+msgstr "Êáèïñßæåé ôçí ðñïôéìþìåíç óõóêåõÞ åîüäïõ Þ÷ïõ Þ åîïìïéùôÞ êÜñôáò Þ÷ïõ"
+
+#: gui/options.cpp:849 gui/options.cpp:851 gui/options.cpp:852
+msgid "Specifies output sound device or sound card emulator"
+msgstr "Êáèïñßæåé ôç óõóêåõÞ åîüäïõ Þ÷ïõ Þ åîïìïéùôÞ êÜñôáò Þ÷ïõ"
+
+#: gui/options.cpp:851
+msgctxt "lowres"
+msgid "Preferred Dev.:"
+msgstr "Ðñïôéì. Óõóê.:"
+
+#: gui/options.cpp:851
+msgctxt "lowres"
+msgid "Music Device:"
+msgstr "Óõóê. Ìïõó.:"
+
+#: gui/options.cpp:878
+msgid "AdLib emulator:"
+msgstr "ÅîïìïéùôÞò Adlib:"
+
+#: gui/options.cpp:878 gui/options.cpp:879
+msgid "AdLib is used for music in many games"
+msgstr "Ç Adlib ÷ñçóéìïðïéåßôáé ãéá ìïõóéêÞ óå ðïëëÜ ðáé÷íßäéá"
+
+#: gui/options.cpp:889
+msgid "Output rate:"
+msgstr "Ñõèìüò åîüäïõ:"
+
+#: gui/options.cpp:889 gui/options.cpp:890
+msgid ""
+"Higher value specifies better sound quality but may be not supported by your "
+"soundcard"
+msgstr ""
+"Õøçëüôåñç ôéìÞ êáèïñßæåé êáëýôåñç ðïéüôçôá Þ÷ïõ, áëëÜ ìðïñåß íá ìçí "
+"õðïóôçñßæåôáé áðü ôçí êÜñôá Þ÷ïõ óáò"
+
+#: gui/options.cpp:900
+msgid "GM Device:"
+msgstr "ÓõóêåõÞ GM:"
+
+#: gui/options.cpp:900
+msgid "Specifies default sound device for General MIDI output"
+msgstr "Êáèïñßæåé ðñïåðéëåãìÝíç óõóêåõÞ Þ÷ïõ ãéá ôçí Ýîïäï General MIDI"
+
+#: gui/options.cpp:911
+msgid "Don't use General MIDI music"
+msgstr "Ìç ÷ñÞóç ìïõóéêÞò General MIDI"
+
+#: gui/options.cpp:922 gui/options.cpp:984
+msgid "Use first available device"
+msgstr "×ñÞóç ðñþôçò äéáèÝóéìçò óõóêåõÞò"
+
+#: gui/options.cpp:934
+msgid "SoundFont:"
+msgstr "SoundFont:"
+
+#: gui/options.cpp:934 gui/options.cpp:936 gui/options.cpp:937
+msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
+msgstr ""
+"Ôï SoundFont õðïóôçñßæåôáé áðü ìåñéêÝò êÜñôåò Þ÷ïõ, ôï FluidSynth êáé ôï "
+"Timidity"
+
+#: gui/options.cpp:936
+msgctxt "lowres"
+msgid "SoundFont:"
+msgstr "SoundFont:"
+
+#: gui/options.cpp:942
+msgid "Mixed AdLib/MIDI mode"
+msgstr "ÌéêôÞ ëåéôïõñãßá Adlib/MIDI"
+
+#: gui/options.cpp:942
+msgid "Use both MIDI and AdLib sound generation"
+msgstr "×ñÞóç MIDI êáé Adlib ãéá äçìéïõñãßá Þ÷ïõ"
+
+#: gui/options.cpp:945
+msgid "MIDI gain:"
+msgstr "Áýîçóç MIDI:"
+
+#: gui/options.cpp:955
+msgid "MT-32 Device:"
+msgstr "ÓõóêåõÞ MT-32:"
+
+#: gui/options.cpp:955
+msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
+msgstr ""
+"Êáèïñßæåé ðñïåðéëåãìÝíç óõóêåõÞ Þ÷ïõ ãéá Ýîïäï Roland MT-32/LAPC1/CM32l/CM64"
+
+#: gui/options.cpp:960
+msgid "True Roland MT-32 (disable GM emulation)"
+msgstr "ÐñáãìáôéêÞ Roland MT-32 (áðåíåñãïðïßçóç åîïìïéùôÞ GM)"
+
+#: gui/options.cpp:960 gui/options.cpp:962
+msgid ""
+"Check if you want to use your real hardware Roland-compatible sound device "
+"connected to your computer"
+msgstr ""
+"ÅðéëÝîôå áí èÝëåôå íá ÷ñçóéìïðïéÞóåôå óõóêåõÞ Þ÷ïõ óõìâáôÞ ìå Roland, ç "
+"ïðïßá åßíáé óõíäåäåìÝíç óôïí õðïëïãéóôÞ óáò"
+
+#: gui/options.cpp:962
+msgctxt "lowres"
+msgid "True Roland MT-32 (no GM emulation)"
+msgstr "ÐñáãìáôéêÞ Roland MT-32 (÷ùñßò åîïìïßùóç GM)"
+
+#: gui/options.cpp:965
+msgid "Roland GS Device (enable MT-32 mappings)"
+msgstr "ÓõóêåõÞ Roland GS (åíåñãïðïßçóç áíôéóôïé÷ßóåùí MT-32)"
+
+#: gui/options.cpp:965
+msgid ""
+"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
+"GS device"
+msgstr ""
+"ÅðéëÝîôå áí èÝëåôå íá åíåñãïðïéÞóåôå äéïñèùìÝíåò áíôéóôïé÷ßóåéò ãéá íá "
+"åîïìïéþóåôå ìéá MT-32 óå óõóêåõÞ Roland GS"
+
+#: gui/options.cpp:974
+msgid "Don't use Roland MT-32 music"
+msgstr "Ìç ÷ñÞóç ìïõóéêÞò Roland MT-32"
+
+#: gui/options.cpp:1001
+msgid "Text and Speech:"
+msgstr "Êåßìåíï êáé Ïìéëßá:"
+
+#: gui/options.cpp:1005 gui/options.cpp:1015
+msgid "Speech"
+msgstr "Ïìéëßá"
+
+#: gui/options.cpp:1006 gui/options.cpp:1016
+msgid "Subtitles"
+msgstr "Õðüôéôëïé"
+
+#: gui/options.cpp:1007
+msgid "Both"
+msgstr "Êáé ôá äõï"
+
+#: gui/options.cpp:1009
+msgid "Subtitle speed:"
+msgstr "Ôá÷ýôçôá õðïôßôëùí:"
+
+#: gui/options.cpp:1011
+msgctxt "lowres"
+msgid "Text and Speech:"
+msgstr "Êåßìåíï êáé Ïìéëßá:"
+
+#: gui/options.cpp:1015
+msgid "Spch"
+msgstr "Ïìéëßá"
+
+#: gui/options.cpp:1016
+msgid "Subs"
+msgstr "Õðüô."
+
+#: gui/options.cpp:1017
+msgctxt "lowres"
+msgid "Both"
+msgstr "Êáé ôá äõï"
+
+#: gui/options.cpp:1017
+msgid "Show subtitles and play speech"
+msgstr "ÐñïâïëÞ õðïôßôëùí êáé áíáðáñáãùãÞ öùíÞò"
+
+#: gui/options.cpp:1019
+msgctxt "lowres"
+msgid "Subtitle speed:"
+msgstr "Ôá÷ýôçôá õðüô.:"
+
+#: gui/options.cpp:1035
+msgid "Music volume:"
+msgstr "¸íôáóç ìïõóéêÞò:"
+
+#: gui/options.cpp:1037
+msgctxt "lowres"
+msgid "Music volume:"
+msgstr "¸íôáóç ìïõóéêÞò:"
+
+#: gui/options.cpp:1044
+msgid "Mute All"
+msgstr "Óßãáóç ¼ëùí"
+
+#: gui/options.cpp:1047
+msgid "SFX volume:"
+msgstr "¸íôáóç åöÝ:"
+
+#: gui/options.cpp:1047 gui/options.cpp:1049 gui/options.cpp:1050
+msgid "Special sound effects volume"
+msgstr "¸íôáóç åéäéêþí áêïõóôéêþí åöÝ"
+
+#: gui/options.cpp:1049
+msgctxt "lowres"
+msgid "SFX volume:"
+msgstr "¸íôáóç åöÝ:"
+
+#: gui/options.cpp:1057
+msgid "Speech volume:"
+msgstr "¸íôáóç ïìéëßáò:"
+
+#: gui/options.cpp:1059
+msgctxt "lowres"
+msgid "Speech volume:"
+msgstr "¸íôáóç ïìéëßáò:"
+
+#: gui/options.cpp:1257
+msgid "FluidSynth Settings"
+msgstr "Ñõèìßóåéò FluidSynth"
+
+#: gui/options.cpp:1288
+msgid "Theme Path:"
+msgstr "ÖÜêåëïò ÈÝìáôïò:"
+
+#: gui/options.cpp:1290
+msgctxt "lowres"
+msgid "Theme Path:"
+msgstr "ÖÜêåëïò ÈÝìáôïò:"
+
+#: gui/options.cpp:1296 gui/options.cpp:1298 gui/options.cpp:1299
+msgid "Specifies path to additional data used by all games or ScummVM"
+msgstr ""
+"Êáèïñßæåé ôç äéáäñïìÞ ãéá ðñüóèåôá äåäïìÝíá ðïõ ÷ñçóéìïðïéïýíôáé áðü üëá ôá "
+"ðáé÷íßäéá Þ ôï ScummVM"
+
+#: gui/options.cpp:1305
+msgid "Plugins Path:"
+msgstr "ÄéáäñïìÞ Ðñüóèåôùí:"
+
+#: gui/options.cpp:1307
+msgctxt "lowres"
+msgid "Plugins Path:"
+msgstr "Äéáäñ. Ðñüóè.:"
+
+#: gui/options.cpp:1318
+msgctxt "lowres"
+msgid "Misc"
+msgstr "ËïéðÜ"
+
+#: gui/options.cpp:1320
+msgid "Theme:"
+msgstr "ÈÝìá:"
+
+#: gui/options.cpp:1324
+msgid "GUI Renderer:"
+msgstr "Áðåéêüíéóç GUI:"
+
+#: gui/options.cpp:1336
+msgid "Autosave:"
+msgstr "Áõôüìáôç áðïèÞêåõóç:"
+
+#: gui/options.cpp:1338
+msgctxt "lowres"
+msgid "Autosave:"
+msgstr "Áõôüì. áðïè.:"
+
+#: gui/options.cpp:1346
+msgid "Keys"
+msgstr "ÐëÞêôñá"
+
+#: gui/options.cpp:1353
+msgid "GUI Language:"
+msgstr "Ãëþóóá GUI:"
+
+#: gui/options.cpp:1353
+msgid "Language of ScummVM GUI"
+msgstr "Ãëþóóá ôïõ ScummVM GUI"
+
+#: gui/options.cpp:1381
+msgid "Update check:"
+msgstr "¸ëåã÷ïò áíáâáèìßóåùí:"
+
+#: gui/options.cpp:1381
+msgid "How often to check ScummVM updates"
+msgstr "Óõ÷íüôçôá åëÝã÷ïõ åíçìåñþóåùí ôïõ ScummVM"
+
+#: gui/options.cpp:1393
+msgid "Check now"
+msgstr "ÅëÝãîôå ôþñá"
+
+#: gui/options.cpp:1401
+msgid "Cloud"
+msgstr "Óýííåöï"
+
+#: gui/options.cpp:1403
+msgctxt "lowres"
+msgid "Cloud"
+msgstr "Óýííåöï"
+
+#: gui/options.cpp:1408
+msgid "Storage:"
+msgstr "ÁðïèÞêåõóç:"
+
+#: gui/options.cpp:1408
+msgid "Active cloud storage"
+msgstr "ÅíåñãÞ áðïèÞêåõóç óýííåöïõ"
+
+#: gui/options.cpp:1415 gui/options.cpp:1972
+msgid "<none>"
+msgstr "<êáìßá>"
+
+#: gui/options.cpp:1419 backends/platform/wii/options.cpp:114
+msgid "Username:"
+msgstr "¼íïìá ÷ñÞóôç:"
+
+#: gui/options.cpp:1419
+msgid "Username used by this storage"
+msgstr "Ôï üíïìá ÷ñÞóôç ðïõ ÷ñçóéìïðïéåßôáé áðü áõôÞ ôçí áðïèÞêç"
+
+#: gui/options.cpp:1422
+msgid "Used space:"
+msgstr "×ñçóéìïðïéçìÝíïò ÷þñïò:"
+
+#: gui/options.cpp:1422
+msgid "Space used by ScummVM's saved games on this storage"
+msgstr ""
+"×þñïò ðïõ ÷ñçóéìïðïéåßôáé áðü ôá áðïèçêåõìÝíá ðáé÷íßäéá ôïõ ScummVM óå áõôÞ "
+"ôçí áðïèÞêç"
+
+#: gui/options.cpp:1425
+msgid "Last sync time:"
+msgstr "Ôåëåõôáßá þñá óõã÷ñïíéóìïý:"
+
+#: gui/options.cpp:1425
+msgid "When the last saved games sync for this storage occured"
+msgstr ""
+"Ðüôå ðñáãìáôïðïéÞèçêå ï ôåëåõôáßïò óõã÷ñïíéóìüò áðïèçêåõìÝíùí ðáé÷íéäéþí"
+
+#: gui/options.cpp:1428 gui/storagewizarddialog.cpp:71
+msgid "Connect"
+msgstr "Óýíäåóç"
+
+#: gui/options.cpp:1428
+msgid "Open wizard dialog to connect your cloud storage account"
+msgstr ""
+"Áíïßîôå ôï äéÜëïãï ïäçãïý ãéá íá óõíäÝóåôå ôï ëïãáñéáóìü ôïý óýííåöïõ "
+"áðïèÞêåõóÞò óáò"
+
+#: gui/options.cpp:1429
+msgid "Refresh"
+msgstr "ÁíáíÝùóç"
+
+#: gui/options.cpp:1429
+msgid "Refresh current cloud storage information (username and usage)"
+msgstr ""
+"ÁíáíÝùóç ðëçñïöïñéþí ôñÝ÷ïíôïò ÷þñïõ áðïèÞêåõóçò óôï óýííåöï (üíïìá ÷ñÞóôç "
+"êáé ÷ñÞóç)"
+
+#: gui/options.cpp:1430
+msgid "Download"
+msgstr "Ìåôáöüñôùóç"
+
+#: gui/options.cpp:1430
+msgid "Open downloads manager dialog"
+msgstr "¶íïéãìá äéáëüãïõ äéá÷åßñéóçò ìåôáöïñôþóåùí"
+
+#: gui/options.cpp:1432
+msgid "Run server"
+msgstr "ÅêôÝëåóç äéáêïìéóôÞ"
+
+#: gui/options.cpp:1432
+msgid "Run local webserver"
+msgstr "ÅêôÝëåóç ôïðéêïý äéáêïìéóôÞ web"
+
+#: gui/options.cpp:1433 gui/options.cpp:2082
+msgid "Not running"
+msgstr "Äåí åêôåëåßôáé"
+
+#: gui/options.cpp:1437
+msgid "/root/ Path:"
+msgstr "/root/ ÄéáäñïìÞ:"
+
+#: gui/options.cpp:1437 gui/options.cpp:1439 gui/options.cpp:1440
+msgid "Specifies which directory the Files Manager can access"
+msgstr "Êáèïñßæåé ôï öÜêåëï óôïí ïðïßï Ý÷åé ðñüóâáóç ï File Manager"
+
+#: gui/options.cpp:1439
+msgctxt "lowres"
+msgid "/root/ Path:"
+msgstr "/root/ ÄéáäñïìÞ:"
+
+#: gui/options.cpp:1449
+msgid "Server's port:"
+msgstr "Èýñá åîõðçñåôçôÞ:"
+
+#: gui/options.cpp:1449
+msgid ""
+"Which port is used by the server\n"
+"Auth with server is not available with non-default port"
+msgstr ""
+"ÐïéÜ èýñá ÷ñçóéìïðïéåßôáé áðü ôï äéáêïìéóôÞ\n"
+"Äåí åßíáé äéáèÝóéìç ç ðéóôïðïßçóç ìå ôï äéáêïìéóôÞ óå ìç-ðñïåðéëåãìÝíç èýñá"
+
+#: gui/options.cpp:1462
+msgid "Apply"
+msgstr "ÅöáñìïãÞ"
+
+#: gui/options.cpp:1628
+msgid "Failed to change cloud storage!"
+msgstr "Áäõíáìßá áëëáãÞò áðïèÞêåõóçò óýííåöïõ!"
+
+#: gui/options.cpp:1631
+msgid "Another cloud storage is already active."
+msgstr "Ìéá Üëëç áðïèÞêåõóç óýííåöïõ åßíáé Þäç åíåñãÞ."
+
+#: gui/options.cpp:1667
+msgid ""
+"The theme you selected does not support your current language. If you want "
+"to use this theme you need to switch to another language first."
+msgstr ""
+"Ôï èÝìá ðïõ åðéëÝîáôå äåí õðïóôçñßæåé ôçí ôñÝ÷ïõóá ãëþóóá óáò. Áí åðéèõìåßôå "
+"íá ÷ñçóéìïðïéÞóåôå áõôü ôï èÝìá èá ðñÝðåé ðñþôá íá áëëÜîåôå óå êÜðïéá Üëëç "
+"ãëþóóá."
+
+#: gui/options.cpp:1702
+msgid "The chosen directory cannot be written to. Please select another one."
+msgstr ""
+"Äåí Þôáí äõíáôÞ ç åããñáöÞ óôïí åðéëåãìÝíï öÜêåëï. Ðáñáêáëþ åðéëÝîôå êÜðïéïí "
+"Üëëï."
+
+#: gui/options.cpp:1711
+msgid "Select directory for GUI themes"
+msgstr "ÅðéëÝîôå öÜêåëï ãéá èÝìáôá GUI"
+
+#: gui/options.cpp:1721
+msgid "Select directory for extra files"
+msgstr "ÅðéëÝîôå öÜêåëï ãéá Ýîôñá áñ÷åßá"
+
+#: gui/options.cpp:1732
+msgid "Select directory for plugins"
+msgstr "ÅðéëÝîôå öÜêåëï ãéá ðñüóèåôá"
+
+#: gui/options.cpp:1744
+msgid "Select directory for Files Manager /root/"
+msgstr "ÅðéëÝîôå öÜêåëï ãéá ôï /root/ ôïõ Äéá÷åéñéóôÞ Áñ÷åßùí"
+
+#: gui/options.cpp:1979
+#, c-format
+msgid "%llu bytes"
+msgstr "%llu bytes"
+
+#: gui/options.cpp:1987
+msgid "<right now>"
+msgstr "<Üìåóá>"
+
+#: gui/options.cpp:1989
+msgid "<never>"
+msgstr "<ðïôÝ>"
+
+#: gui/options.cpp:2073
+msgid "Stop server"
+msgstr "ÄéáêïðÞ åîõðçñåôçôÞ"
+
+#: gui/options.cpp:2074
+msgid "Stop local webserver"
+msgstr "ÄéáêïðÞ ôïðéêïý åîõðçñåôçôÞ web"
+
+#: gui/options.cpp:2163
+msgid ""
+"Request failed.\n"
+"Check your Internet connection."
+msgstr ""
+"Ôï áßôçìá áðÝôõ÷å.\n"
+"ÅëÝãîôå ôç óýíäåóÞ óáò óôï Internet."
+
+#. I18N: You must leave "#" as is, only word 'next' is translatable
+#: gui/predictivedialog.cpp:86
+msgid "# next"
+msgstr "# åðüìåíï"
+
+#: gui/predictivedialog.cpp:87
+msgid "add"
+msgstr "ðñïóèÞêç"
+
+#: gui/predictivedialog.cpp:92 gui/predictivedialog.cpp:167
+msgid "Delete char"
+msgstr "ÄéáãñáöÞ ÷áñáêôÞñá"
+
+#: gui/predictivedialog.cpp:97 gui/predictivedialog.cpp:171
+msgid "<"
+msgstr "<"
+
+#. I18N: Pre means 'Predictive', leave '*' as is
+#: gui/predictivedialog.cpp:99 gui/predictivedialog.cpp:575
+msgid "* Pre"
+msgstr "* Pre"
+
+#. I18N: 'Num' means Numbers
+#: gui/predictivedialog.cpp:578
+msgid "* Num"
+msgstr "* Áñéè"
+
+#. I18N: 'Abc' means Latin alphabet input
+#: gui/predictivedialog.cpp:581
+msgid "* Abc"
+msgstr "* Abc"
+
+#: gui/recorderdialog.cpp:63
+msgid "Recorder or Playback Gameplay"
+msgstr "ÅããñáöÞ Þ ÁíáðáñáãùãÞ Gameplay"
+
+#: gui/recorderdialog.cpp:68 gui/recorderdialog.cpp:155
+#: gui/saveload-dialog.cpp:387 gui/saveload-dialog.cpp:443
+msgid "Delete"
+msgstr "ÓâÞóéìï"
+
+#: gui/recorderdialog.cpp:70
+msgid "Record"
+msgstr "ÅããñáöÞ"
+
+#: gui/recorderdialog.cpp:71
+msgid "Playback"
+msgstr "ÁíáðáñáãùãÞ"
+
+#: gui/recorderdialog.cpp:73
+msgid "Edit"
+msgstr "Äéüñèùóç"
+
+#: gui/recorderdialog.cpp:85 gui/recorderdialog.cpp:242
+#: gui/recorderdialog.cpp:252
+msgid "Author: "
+msgstr "ÓõããñáöÝáò: "
+
+#: gui/recorderdialog.cpp:86 gui/recorderdialog.cpp:243
+#: gui/recorderdialog.cpp:253
+msgid "Notes: "
+msgstr "Óçìåéþóåéò: "
+
+#: gui/recorderdialog.cpp:154
+msgid "Do you really want to delete this record?"
+msgstr "ÈÝëåôå ðñáãìáôéêÜ íá óâÞóåôå áõôÞ ôçí åããñáöÞ;"
+
+#: gui/recorderdialog.cpp:173
+msgid "Unknown Author"
+msgstr "¶ãíùóôïò ÓõããñáöÝáò"
+
+#: gui/remotebrowser.cpp:128
+msgid "ScummVM could not access the directory!"
+msgstr "Ôï ScummVM äå ìðüñåóå íá ðñïóðåëÜóåé ôïí öÜêåëï!"
+
+#: gui/saveload-dialog.cpp:334
+msgid "List view"
+msgstr "ÐñïâïëÞ ëßóôáò"
+
+#: gui/saveload-dialog.cpp:335
+msgid "Grid view"
+msgstr "ÐñïâïëÞ ðëÝãìáôïò"
+
+#: gui/saveload-dialog.cpp:378 gui/saveload-dialog.cpp:528
+msgid "No date saved"
+msgstr "×ùñßò áðïèçê. çì/íßá"
+
+#: gui/saveload-dialog.cpp:379 gui/saveload-dialog.cpp:529
+msgid "No time saved"
+msgstr "×ùñßò áðïèçê. þñá"
+
+#: gui/saveload-dialog.cpp:380 gui/saveload-dialog.cpp:530
+msgid "No playtime saved"
+msgstr "×ùñßò áðïèçê. þñá ðáé÷íéäéïý"
+
+#: gui/saveload-dialog.cpp:442
+msgid "Do you really want to delete this saved game?"
+msgstr "ÈÝëåôå ðñáãìáôéêÜ íá óâÞóåôå áõôü ôï áðïèçêåõìÝíï ðáé÷íßäé;"
+
+#: gui/saveload-dialog.cpp:554 gui/saveload-dialog.cpp:1060
+msgid "Date: "
+msgstr "Çìåñïìçíßá: "
+
+#: gui/saveload-dialog.cpp:558 gui/saveload-dialog.cpp:1066
+msgid "Time: "
+msgstr "¿ñá: "
+
+#: gui/saveload-dialog.cpp:564 gui/saveload-dialog.cpp:1074
+msgid "Playtime: "
+msgstr "¿ñá ðáé÷íéäéïý: "
+
+#: gui/saveload-dialog.cpp:577 gui/saveload-dialog.cpp:665
+msgid "Untitled saved game"
+msgstr "ÁðïèçêåõìÝíï ðáé÷íßäé ÷ùñßò üíïìá"
+
+#: gui/saveload-dialog.cpp:718
+msgid "Next"
+msgstr "Åðüìåíï"
+
+#: gui/saveload-dialog.cpp:721
+msgid "Prev"
+msgstr "Ðñïçãïýìåíï"
+
+#: gui/saveload-dialog.cpp:924
+msgid "New Save"
+msgstr "ÍÝá ÁðïèÞêåõóç"
+
+#: gui/saveload-dialog.cpp:924
+msgid "Create a new saved game"
+msgstr "Äçìéïõñãßá íÝïõ áðïèçêåõìÝíïõ ðáé÷íéäéïý"
+
+#: gui/saveload-dialog.cpp:1053
+msgid "Name: "
+msgstr "¼íïìá: "
+
+#: gui/saveload-dialog.cpp:1131
+#, c-format
+msgid "Enter a description for slot %d:"
+msgstr "ÅéóÜãåôå ðåñéãñáöÞ ãéá ôç èõñßäá %d:"
+
+#: gui/storagewizarddialog.cpp:55
+#, c-format
+msgid "%s Storage Connection Wizard"
+msgstr "%s Ïäçãüò Óýíäåóçò ÁðïèÞêåõóçò"
+
+#: gui/storagewizarddialog.cpp:58
+msgid "Navigate to the following URL:"
+msgstr "Ðëïçãçèåßôå óôçí áêüëïõèç äéåýèõíóç URL:"
+
+#: gui/storagewizarddialog.cpp:61
+msgid "Obtain the code from the storage, enter it"
+msgstr "ÁðïêôÞóôå ôïí êùäéêü áðü ôçí áðïèÞêåõóç, åéóÜãåôÝ ôïí"
+
+#: gui/storagewizarddialog.cpp:62
+msgid "in the following field and press 'Connect':"
+msgstr "óôï ðáñáêÜôù ðåäßï êáé ðáôÞóôå \"Óýíäåóç\":"
+
+#: gui/storagewizarddialog.cpp:69
+msgid "Open URL"
+msgstr "¶íïéãìá äéåýèõíóçò URL"
+
+#: gui/storagewizarddialog.cpp:70
+msgid "Paste"
+msgstr "Åðéêüëëçóç"
+
+#: gui/storagewizarddialog.cpp:70
+msgid "Pastes clipboard contents into fields"
+msgstr "Åðéêüëëçóç ðåñéå÷üìåíïõ ðñü÷åéñïõ óå ðåäßá"
+
+#: gui/storagewizarddialog.cpp:78
+msgid "You will be directed to ScummVM's page where"
+msgstr "Èá ïäçãçèåßôå óôç óåëßäá ScummVM üðïõ"
+
+#: gui/storagewizarddialog.cpp:79
+msgid "you should allow it to access your storage."
+msgstr "èá ðñÝðåé íá åðéôñÝøåôå ôçí ðñüóâáóç óôïí áðïèçêåõôéêü ÷þñï óáò."
+
+#: gui/storagewizarddialog.cpp:112
+msgid "Another Storage is active. Do you want to interrupt it?"
+msgstr "ÊÜðïéá Üëëç ÁðïèÞêåõóç åßíáé åíåñãÞ. Åðéèõìåßôå íá ôç äéáêüøåôå;"
+
+#: gui/storagewizarddialog.cpp:121
+msgid "Wait until current Storage finishes up and try again."
+msgstr "ÁíáìïíÞ ìÝ÷ñé íá ïëïêëçñùèåß ç ôñÝ÷ïõóá ÁðïèÞêåõóç êáé äïêéìÜóôå îáíÜ."
+
+#: gui/storagewizarddialog.cpp:182
+#, c-format
+msgid "Field %s has a mistake in it."
+msgstr "Ôï ðåäßï %s ðåñéÝ÷åé Ýíá ëÜèïò."
+
+#: gui/storagewizarddialog.cpp:184
+#, c-format
+msgid "Fields %s have mistakes in them."
+msgstr "Ôá ðåäßá %s ðåñéÝ÷ïõí ëÜèç."
+
+#: gui/storagewizarddialog.cpp:199
+msgid "All OK!"
+msgstr "¼ëá OK!"
+
+#: gui/storagewizarddialog.cpp:201
+msgid "Invalid code"
+msgstr "ÅóöáëìÝíïò êùäéêüò"
+
+#: gui/storagewizarddialog.cpp:209
+msgid ""
+"Failed to open URL!\n"
+"Please navigate to this page manually."
+msgstr ""
+"Áðïôõ÷ßá áíïßãìáôïò ôïõ URL!\n"
+"Ðáñáêáëïýìå, ìåôáöåñèåßôå óå áõôÞ ôç óåëßäá ÷åéñïêßíçôá."
+
+#: gui/themebrowser.cpp:45
+msgid "Select a Theme"
+msgstr "ÅðéëÝîôå èÝìá"
+
+#: gui/ThemeEngine.cpp:452
+msgid "Disabled GFX"
+msgstr "ÁðåíåñãïðïéçìÝíá ãñáöéêÜ"
+
+#: gui/ThemeEngine.cpp:452
+msgctxt "lowres"
+msgid "Disabled GFX"
+msgstr "Áðåíåñã. ãñáöéêÜ"
+
+#: gui/ThemeEngine.cpp:453
+msgid "Standard Renderer"
+msgstr "ÊáíïíéêÞ Áðåéêüíéóç"
+
+#: gui/ThemeEngine.cpp:453 engines/scumm/dialogs.cpp:659
+msgid "Standard"
+msgstr "Êáíïíéêü"
+
+#: gui/ThemeEngine.cpp:455
+msgid "Antialiased Renderer"
+msgstr "ÅîïìáëõìÝíç Áðüäïóç"
+
+#: gui/ThemeEngine.cpp:455
+msgid "Antialiased"
+msgstr "ÅîïìáëõìÝíç"
+
+#: gui/updates-dialog.cpp:51
+msgid ""
+"ScummVM now supports automatic check for updates\n"
+"which requires access to the Internet.\n"
+"\n"
+"Would you like to enable this feature?"
+msgstr ""
+"Ôï ScummVM ôþñá õðïóôçñßæåé áõôüìáôï Ýëåã÷ï ãéá åíçìåñþóåéò\n"
+"ôï ïðïßï áðáéôåß ðñüóâáóç óôï Internet.\n"
+"\n"
+"ÈÝëåôå íá åíåñãïðïéÞóåôå áõôÞ ôç äõíáôüôçôá;"
+
+#: gui/updates-dialog.cpp:55
+msgid "(You can always enable it in the options dialog on the Misc tab)"
+msgstr ""
+"(Ìðïñåßôå ðÜíôá íá ôçí åíåñãïðïéÞóåôå óôï ðáñÜèõñï äéáëüãïõ ÅðéëïãÝò óôçí "
+"êáñôÝëá ÄéÜöïñá)"
+
+#: gui/updates-dialog.cpp:92
+msgid "Check for updates automatically"
+msgstr "Áõôüìáôïò Ýëåã÷ïò åíçìåñþóåùí"
+
+#: gui/updates-dialog.cpp:111
+msgid "Proceed"
+msgstr "Ðñï÷þñá"
+
+#: gui/widget.cpp:366 gui/widget.cpp:368 gui/widget.cpp:374 gui/widget.cpp:376
+msgid "Clear value"
+msgstr "ÓâÞóéìï ôéìÞò"
+
+#: base/main.cpp:253
+#, c-format
+msgid "Engine does not support debug level '%s'"
+msgstr "Ç ìç÷áíÞ äåí õðïóôçñßæåé åðßðåäï åíôïðéóìïý óöáëìÜôùí '%s'"
+
+#: base/main.cpp:327
+msgid "Menu"
+msgstr "Ìåíïý"
+
+#: base/main.cpp:330 backends/platform/symbian/src/SymbianActions.cpp:45
+#: backends/platform/wince/CEActionsPocket.cpp:45
+#: backends/platform/wince/CEActionsSmartphone.cpp:46
+msgid "Skip"
+msgstr "ÐáñÜëåéøç"
+
+#: base/main.cpp:333 backends/platform/symbian/src/SymbianActions.cpp:50
+#: backends/platform/wince/CEActionsPocket.cpp:42
+msgid "Pause"
+msgstr "Ðáýóç"
+
+#: base/main.cpp:336
+msgid "Skip line"
+msgstr "ÐáñÜëåéøç ãñáììÞò"
+
+#: base/main.cpp:547
+msgid "Error running game:"
+msgstr "ÓöÜëìá êáôÜ ôçí åêôÝëåóç ôïõ ðáé÷íéäéïý:"
+
+#: base/main.cpp:594
+msgid "Could not find any engine capable of running the selected game"
+msgstr ""
+"Äåí Þôáí äõíáôÞ ç åýñåóç ìç÷áíÞò ç ïðïßá íá ìðïñåß íá åêôåëÝóåé ôï "
+"óõãêåêñéìÝíï ðáé÷íßäé"
+
+#: common/error.cpp:38
+msgid "No error"
+msgstr "ÊáíÝíá óöÜëìá"
+
+#: common/error.cpp:40
+msgid "Game data not found"
+msgstr "Äå âñÝèçêáí äåäïìÝíá ðáé÷íéäéïý"
+
+#: common/error.cpp:42
+msgid "Game id not supported"
+msgstr "Ôï áíáãíùñéóôéêü ðáé÷íéäéïý äåí õðïóôçñßæåôáé"
+
+#: common/error.cpp:44
+msgid "Unsupported color mode"
+msgstr "Ìç õðïóôçñéæüìåíç ëåéôïõñãßá ÷ñþìáôïò"
+
+#: common/error.cpp:47
+msgid "Read permission denied"
+msgstr "¶ñíçóç Üäåéáò áíÜãíùóçò"
+
+#: common/error.cpp:49
+msgid "Write permission denied"
+msgstr "¶ñíçóç Üäåéáò åããñáöÞò"
+
+#: common/error.cpp:52
+msgid "Path does not exist"
+msgstr "Ç äéáäñïìÞ äåí õðÜñ÷åé"
+
+#: common/error.cpp:54
+msgid "Path not a directory"
+msgstr "Ç äéáäñïìÞ äåí åßíáé öÜêåëïò"
+
+#: common/error.cpp:56
+msgid "Path not a file"
+msgstr "Ç äéáäñïìÞ äåí åßíáé áñ÷åßï"
+
+#: common/error.cpp:59
+msgid "Cannot create file"
+msgstr "Äåí åßíáé äõíáôÞ ç äçìéïõñãßá ôïõ áñ÷åßïõ"
+
+#: common/error.cpp:61
+msgid "Reading data failed"
+msgstr "Ç áíÜãíùóç äåäïìÝíùí áðÝôõ÷å"
+
+#: common/error.cpp:63
+msgid "Writing data failed"
+msgstr "Ç åããñáöÞ äåäïìÝíùí áðÝôõ÷å"
+
+#: common/error.cpp:66
+msgid "Could not find suitable engine plugin"
+msgstr "Äåí Þôáí äõíáôÞ ç åýñåóç êáôÜëëçëïõ ðñüóèåôïõ ìç÷áíÞò"
+
+#: common/error.cpp:68
+msgid "Engine plugin does not support saved games"
+msgstr "Ôï ðñüóèåôï ìç÷áíÞò äåí õðïóôçñßæåé áðïèçêåõìÝíá ðáé÷íßäéá"
+
+#: common/error.cpp:71
+msgid "User canceled"
+msgstr "Ï ÷ñÞóôçò áêýñùóå"
+
+#: common/error.cpp:75
+msgid "Unknown error"
+msgstr "¶ãíùóôï óöÜëìá"
+
+#. I18N: Hercules is graphics card name
+#: common/rendermode.cpp:35
+msgid "Hercules Green"
+msgstr "ÐñÜóéíç Hercules"
+
+#: common/rendermode.cpp:36
+msgid "Hercules Amber"
+msgstr "Ðïñôïêáëß Hercules"
+
+#: common/rendermode.cpp:42
+msgid "PC-9821 (256 Colors)"
+msgstr "PC-9821 (256 ×ñþìáôá)"
+
+#: common/rendermode.cpp:43
+msgid "PC-9801 (16 Colors)"
+msgstr "PC-9801 (16 ×ñþìáôá)"
+
+#: common/rendermode.cpp:73
+msgctxt "lowres"
+msgid "Hercules Green"
+msgstr "ÐñÜóéíç Hercules"
+
+#: common/rendermode.cpp:74
+msgctxt "lowres"
+msgid "Hercules Amber"
+msgstr "Ðïñôïêáëß Hercules"
+
+#: common/updates.cpp:58
+msgid "Daily"
+msgstr "ÊáèçìåñéíÜ"
+
+#: common/updates.cpp:60
+msgid "Weekly"
+msgstr "Åâäïìáäéáßá"
+
+#: common/updates.cpp:62
+msgid "Monthly"
+msgstr "Ìçíéáßá"
+
+#: common/updates.cpp:64
+msgid "<Bad value>"
+msgstr "<ÅóöáëìÝíç ôéìÞ>"
+
+#: engines/advancedDetector.cpp:335
+#, c-format
+msgid ""
+"The game in '%s' seems to be unknown.\n"
+"Please, report the following data to the ScummVM team along with name\n"
+"of the game you tried to add and its version, language, etc.:"
+msgstr ""
+"Ôï ðáé÷íßäé óôï '%s' öáßíåôáé íá åßíáé Üãíùóôï.\n"
+"Ðáñáêáëïýìå, áíáöÝñåôå ôá áêüëïõèá óôïé÷åßá óôçí ïìÜäá ScummVM ìáæß ìå ôï "
+"üíïìá\n"
+"ôïõ ðáé÷íéäéïý ðïõ ðñïóðáèÞóáôå íá ðñïóèÝóåôå êáé ôçí Ýêäïóç, ôç ãëþóóá ôïõ, "
+"êëð.:"
+
+#: engines/dialogs.cpp:85
+msgid "~R~esume"
+msgstr "~Ó~õíÝ÷åéá"
+
+#: engines/dialogs.cpp:87 engines/mohawk/dialogs.cpp:96
+msgid "~L~oad"
+msgstr "~Ö~üñôùóç"
+
+#: engines/dialogs.cpp:91 engines/mohawk/dialogs.cpp:97
+msgid "~S~ave"
+msgstr "~Á~ðïèÞêåõóç"
+
+#: engines/dialogs.cpp:95
+msgid "~O~ptions"
+msgstr "~Å~ðéëïãÝò"
+
+#: engines/dialogs.cpp:100
+msgid "~H~elp"
+msgstr "~Â~ïÞèåéá"
+
+#: engines/dialogs.cpp:102
+msgid "~A~bout"
+msgstr "~Ð~åñß"
+
+#: engines/dialogs.cpp:105 engines/dialogs.cpp:181
+msgid "~R~eturn to Launcher"
+msgstr "Åðéó~ô~ñïöÞ óôïí ÏäçãçôÞ"
+
+#: engines/dialogs.cpp:107 engines/dialogs.cpp:183
+msgctxt "lowres"
+msgid "~R~eturn to Launcher"
+msgstr "Åðéó~ô~ñ. óôïí ÏäçãçôÞ"
+
+#: engines/dialogs.cpp:116 engines/agi/saveload.cpp:761
+#: engines/avalanche/parser.cpp:1900 engines/cge/events.cpp:72
+#: engines/cge2/events.cpp:65 engines/cine/various.cpp:348
+#: engines/cruise/menu.cpp:212 engines/dm/loadsave.cpp:196
+#: engines/drascula/saveload.cpp:364 engines/dreamweb/saveload.cpp:262
+#: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298
+#: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:104
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
+#: engines/sci/engine/kfile.cpp:891 engines/sci/engine/kfile.cpp:1167
+#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291
+#: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599
+#: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49
+msgid "Save game:"
+msgstr "ÁðïèÞêåõóç ðáé÷íéäéïý:"
+
+#: engines/dialogs.cpp:116 backends/platform/symbian/src/SymbianActions.cpp:44
+#: backends/platform/wince/CEActionsPocket.cpp:43
+#: backends/platform/wince/CEActionsPocket.cpp:267
+#: backends/platform/wince/CEActionsSmartphone.cpp:45
+#: backends/platform/wince/CEActionsSmartphone.cpp:231
+#: engines/agi/saveload.cpp:761 engines/avalanche/parser.cpp:1900
+#: engines/cge/events.cpp:72 engines/cge2/events.cpp:65
+#: engines/cine/various.cpp:348 engines/cruise/menu.cpp:212
+#: engines/dm/loadsave.cpp:196 engines/drascula/saveload.cpp:364
+#: engines/dreamweb/saveload.cpp:262 engines/gnap/menu.cpp:464
+#: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350
+#: engines/mohawk/dialogs.cpp:104 engines/neverhood/menumodule.cpp:880
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
+#: engines/sci/engine/kfile.cpp:891 engines/sci/engine/kfile.cpp:1167
+#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291
+#: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599
+#: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49
+msgid "Save"
+msgstr "ÁðïèÞêåõóç"
+
+#: engines/dialogs.cpp:145
+msgid ""
+"Sorry, this engine does not currently provide in-game help. Please consult "
+"the README for basic information, and for instructions on how to obtain "
+"further assistance."
+msgstr ""
+"Ëõðïýìáóôå, áõôÞ ç ìç÷áíÞ äåí ðáñÝ÷åé ðñïò ôï ðáñüí âïÞèåéá åíôüò "
+"ðáé÷íéäéïý. Ðáñáêáëïýìå óõìâïõëåõôåßôå ôï áñ÷åßï README ãéá âáóéêÝò "
+"ðëçñïöïñßåò, êáèþò êáé ãéá ïäçãßåò ó÷åôéêÜ ìå ôï ðþò íá ëÜâåôå ðåñáéôÝñù "
+"âïÞèåéá."
+
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#, c-format
+msgid ""
+"Failed to save game (%s)! Please consult the README for basic information, "
+"and for instructions on how to obtain further assistance."
+msgstr ""
+"Áðïôõ÷ßá áðïèÞêåõóçò ôïõ ðáé÷íéäéïý (%s)! Ðáñáêáëïýìå óõìâïõëåõôåßôå ôï "
+"áñ÷åßï README ãéá âáóéêÝò ðëçñïöïñßåò, êáèþò êáé ãéá ïäçãßåò ó÷åôéêÜ ìå ôï "
+"ðþò íá ëÜâåôå ðåñáéôÝñù âïÞèåéá."
+
+#: engines/dialogs.cpp:307 engines/mohawk/dialogs.cpp:100
+#: engines/tsage/dialogs.cpp:112
+msgid "~O~K"
+msgstr "~Ï~Ê"
+
+#: engines/dialogs.cpp:308 engines/mohawk/dialogs.cpp:101
+#: engines/tsage/dialogs.cpp:113
+msgid "~C~ancel"
+msgstr "~Á~êýñùóç"
+
+#: engines/dialogs.cpp:311
+msgid "~K~eys"
+msgstr "Ð~ë~Þêôñá"
+
+#: engines/engine.cpp:346
+msgid "Could not initialize color format."
+msgstr "Äåí Þôáí äõíáôÞ ç ðñïåôïéìáóßá ìïñöÞò ÷ñþìáôïò."
+
+#: engines/engine.cpp:354
+msgid "Could not switch to video mode: '"
+msgstr "Äåí Þôáí äõíáôÞ ç áëëáãÞ óå ëåéôïõñãßá ïèüíçò: '"
+
+#: engines/engine.cpp:363
+msgid "Could not apply aspect ratio setting."
+msgstr "Äåí Þôáí äõíáôÞ ç åöáñìïãÞ ñýèìéóçò äéüñèùóçò áíáëïãßáò äéáóôÜóåùí."
+
+#: engines/engine.cpp:368
+msgid "Could not apply fullscreen setting."
+msgstr "Äåí Þôáí äõíáôÞ ç åöáñìïãÞ ñýèìéóçò ðëÞñïõò ïèüíçò."
+
+#: engines/engine.cpp:373
+msgid "Could not apply filtering setting."
+msgstr "Äåí Þôáí äõíáôÞ ç åöáñìïãÞ ñýèìéóçò öéëôñáñßóìáôïò."
+
+#: engines/engine.cpp:473
+msgid ""
+"You appear to be playing this game directly\n"
+"from the CD. This is known to cause problems,\n"
+"and it is therefore recommended that you copy\n"
+"the data files to your hard disk instead.\n"
+"See the README file for details."
+msgstr ""
+"Öáßíåôå üôé ðáßæåôå ôï ðáé÷íßäé áðåõèåßáò\n"
+"áðü ôï CD. Áõôü åßíáé ãíùóôü üôé ðñïêáëåß ðñïâëÞìáôá,\n"
+"êáé ùò åê ôïýôïõ óõíéóôÜôáé íá áíôéãñÜøåôå áíô'áõôïý\n"
+"ôá áñ÷åßá äåäïìÝíùí óôï óêëçñü óáò äßóêï.\n"
+"Äåßôå ôï áñ÷åßï README ãéá ëåðôïìÝñåéåò."
+
+#: engines/engine.cpp:484
+msgid ""
+"This game has audio tracks in its disk. These\n"
+"tracks need to be ripped from the disk using\n"
+"an appropriate CD audio extracting tool in\n"
+"order to listen to the game's music.\n"
+"See the README file for details."
+msgstr ""
+"Áõôü ôï ðáé÷íßäé Ý÷åé êïììÜôéá Þ÷ïõ óôï äßóêï ôïõ. ÁõôÜ ôá\n"
+"êïììÜôéá ðñÝðåé íá áíôéãñáöïýí áðü ôï äßóêï ìå ôç ÷ñÞóç\n"
+"åíüò êáôÜëëçëïõ åñãáëåßïõ åîáãùãÞò Þ÷ïõ CD þóôå\n"
+"íá áêïýóåôå ôç ìïõóéêÞ ôïõ ðáé÷íéäéïý.\n"
+"Äåßôå ôï áñ÷åßï README ãéá ëåðôïìÝñåéåò."
+
+#: engines/engine.cpp:542
+#, 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."
+msgstr ""
+"Áðïôõ÷ßá öüñôùóçò áðïèçêåõìÝíïõ ðáé÷íéäéïý (%s)! Ðáñáêáëïýìå óõìâïõëåõôåßôå "
+"ôï áñ÷åßï README ãéá âáóéêÝò ðëçñïöïñßåò, êáèþò êáé ãéá ïäçãßåò ó÷åôéêÜ ìå "
+"ôï ðþò íá ëÜâåôå ðåñáéôÝñù âïÞèåéá."
+
+#: engines/engine.cpp:555
+msgid ""
+"WARNING: The game you are about to start is not yet fully supported by "
+"ScummVM. As such, it is likely to be unstable, and any saved game you make "
+"might not work in future versions of ScummVM."
+msgstr ""
+"ÐÑÏÓÏ×Ç: Ôï ðáé÷íßäé ðïõ èá îåêéíÞóåé, äåí õðïóôçñßæåôáé áêüìá ðëÞñùò áðü ôï "
+"ScummVM. Ùò åê ôïýôïõ, åßíáé ðéèáíü íá åßíáé áóôáèÝò, êáé êÜèå áðïèçêåõìÝíï "
+"ðáé÷íßäé ðïõ êÜíåôå ìðïñåß íá ìç ëåéôïõñãåß óå ìåëëïíôéêÝò åêäüóåéò ôïõ "
+"ScummVM."
+
+#: engines/engine.cpp:558
+msgid "Start anyway"
+msgstr "Åêêßíçóç ïýôùò Þ Üëëùò"
+
+#: audio/adlib.cpp:2290
+msgid "AdLib Emulator"
+msgstr "ÅîïìïéùôÞò Adlib"
+
+#: audio/fmopl.cpp:62
+msgid "MAME OPL emulator"
+msgstr "ÅîïìïéùôÞò MAME OPL"
+
+#: audio/fmopl.cpp:64
+msgid "DOSBox OPL emulator"
+msgstr "ÅîïìïéùôÞò DOSBox OPL"
+
+#: audio/fmopl.cpp:67
+msgid "ALSA Direct FM"
+msgstr "ALSA Direct FM"
+
+#: audio/mididrv.cpp:209
+#, c-format
+msgid ""
+"The selected audio device '%s' was not found (e.g. might be turned off or "
+"disconnected)."
+msgstr ""
+"Ç åðéëåãìÝíç óõóêåõÞ Þ÷ïõ '%s' äå âñÝèçêå (ð.÷. ìðïñåß íá åßíáé óâçóôÞ Þ "
+"áðïóõíäåäåìÝíç)."
+
+#: audio/mididrv.cpp:209 audio/mididrv.cpp:221 audio/mididrv.cpp:257
+#: audio/mididrv.cpp:272
+msgid "Attempting to fall back to the next available device..."
+msgstr "ÐñïóðÜèåéá ìåôÜðôùóçò óôçí åðüìåíç äéáèÝóéìç óõóêåõÞ ..."
+
+#: audio/mididrv.cpp:221
+#, c-format
+msgid ""
+"The selected audio device '%s' cannot be used. See log file for more "
+"information."
+msgstr ""
+"Ç åðéëåãìÝíç óõóêåõÞ Þ÷ïõ '%s' äåí Þôáí äõíáôü íá ÷ñçóéìïðïéçèåß. Äåßôå ôï "
+"áñ÷åßï êáôáãñáöÞò ãéá ðåñéóóüôåñåò ðëçñïöïñßåò."
+
+#: audio/mididrv.cpp:257
+#, c-format
+msgid ""
+"The preferred audio device '%s' was not found (e.g. might be turned off or "
+"disconnected)."
+msgstr ""
+"Ç åðéèõìçôÞ óõóêåõÞ Þ÷ïõ '%s' äå âñÝèçêå (ð.÷. ìðïñåß íá åßíáé óâçóôÞ Þ "
+"áðïóõíäåäåìÝíç)."
+
+#: audio/mididrv.cpp:272
+#, c-format
+msgid ""
+"The preferred audio device '%s' cannot be used. See log file for more "
+"information."
+msgstr ""
+"Ç åðéèõìçôÞ óõóêåõÞ Þ÷ïõ '%s' äåí Þôáí äõíáôü íá ÷ñçóéìïðïéçèåß. Äåßôå ôï "
+"áñ÷åßï êáôáãñáöÞò ãéá ðåñéóóüôåñåò ðëçñïöïñßåò."
+
+#: audio/mods/paula.cpp:196
+msgid "Amiga Audio Emulator"
+msgstr "ÅîïìïéùôÞò ¹÷ïõ Amiga"
+
+#: audio/null.h:44
+msgid "No music"
+msgstr "×ùñßò ìïõóéêÞ"
+
+#: audio/softsynth/appleiigs.cpp:33
+msgid "Apple II GS Emulator (NOT IMPLEMENTED)"
+msgstr "ÅîïìïéùôÞò Apple II GS (ÄÅÍ Å×ÅÉ ÕËÏÐÏÉÇÈÅÉ)"
+
+#: audio/softsynth/cms.cpp:350
+msgid "Creative Music System Emulator"
+msgstr "ÅîïìïéùôÞò Creative Music System"
+
+#: audio/softsynth/fmtowns_pc98/towns_pc98_plugins.cpp:33
+msgid "FM-Towns Audio"
+msgstr "¹÷ïò FM-Towns"
+
+#: audio/softsynth/fmtowns_pc98/towns_pc98_plugins.cpp:58
+msgid "PC-98 Audio"
+msgstr "¹÷ïò PC-98"
+
+#: audio/softsynth/mt32.cpp:175
+msgid "Initializing MT-32 Emulator"
+msgstr "Ðñïåôïéìáóßá ÅîïìïéùôÞ MT-32"
+
+#: audio/softsynth/mt32.cpp:437
+msgid "MT-32 Emulator"
+msgstr "ÅîïìïéùôÞò MT-32"
+
+#: audio/softsynth/pcspk.cpp:139
+msgid "PC Speaker Emulator"
+msgstr "ÅîïìïéùôÞò Ç÷åßïõ PC"
+
+#: audio/softsynth/pcspk.cpp:158
+msgid "IBM PCjr Emulator"
+msgstr "ÅîïìïéùôÞò IBM PCjr"
+
+#: audio/softsynth/sid.cpp:1430
+msgid "C64 Audio Emulator"
+msgstr "ÅîïìïéùôÞò ¹÷ïõ C64"
+
+#: backends/cloud/storage.cpp:211
+msgid "Saved games sync complete."
+msgstr "Ï óõã÷ñïíéóìüò áðïèçêåõìÝíùí ðáé÷íéäéþí ïëïêëçñþèçêå."
+
+#: backends/cloud/storage.cpp:222
+msgid "Saved games sync was cancelled."
+msgstr "Ï óõã÷ñïíéóìüò áðïèçêåõìÝíùí ðáé÷íéäéþí áêõñþèçêå."
+
+#: backends/cloud/storage.cpp:224
+msgid ""
+"Saved games sync failed.\n"
+"Check your Internet connection."
+msgstr ""
+"Ï óõã÷ñïíéóìüò áðïèçêåõìÝíùí ðáé÷íéäéþí áðÝôõ÷å.\n"
+"ÅëÝãîôå ôç óýíäåóÞ óáò óôï Internet."
+
+#: backends/cloud/storage.cpp:328
+#, c-format
+msgid ""
+"Download complete.\n"
+"Failed to download %u files."
+msgstr ""
+"Ç ìåôáöüñôùóç ïëïêëçñþèçêå.\n"
+"Äåí Þôáí äõíáôÞ ç ìåôáöüñôùóç %u áñ÷åßùí."
+
+#: backends/cloud/storage.cpp:330
+msgid "Download complete."
+msgstr "Ç ìåôáöüñôùóç ïëïêëçñþèçêå."
+
+#: backends/cloud/storage.cpp:340
+msgid "Download failed."
+msgstr "Ç ìåôáöüñôùóç áðÝôõ÷å."
+
+#: backends/events/default/default-events.cpp:196
+msgid "Do you really want to return to the Launcher?"
+msgstr "ÈÝëåôå ðñáãìáôéêÜ íá åðéóôñÝøåôå óôïí ÐñïùèçôÞ;"
+
+#: backends/events/default/default-events.cpp:196
+msgid "Launcher"
+msgstr "ÐñïùèçôÞò"
+
+#: backends/events/default/default-events.cpp:218
+msgid "Do you really want to quit?"
+msgstr "Åßóôå óßãïõñïé üôé èÝëåôå íá âãåßôå áðü ôï ðñüãñáììá;"
+
+#: backends/events/default/default-events.cpp:218
+#: backends/platform/symbian/src/SymbianActions.cpp:52
+#: backends/platform/wince/CEActionsPocket.cpp:44
+#: backends/platform/wince/CEActionsSmartphone.cpp:52
+#: engines/scumm/dialogs.cpp:188 engines/scumm/help.cpp:83
+#: engines/scumm/help.cpp:85
+msgid "Quit"
+msgstr "¸îïäïò"
+
+#: backends/events/gph/gph-events.cpp:385
+#: backends/events/gph/gph-events.cpp:428
+#: backends/events/openpandora/op-events.cpp:168
+msgid "Touchscreen 'Tap Mode' - Left Click"
+msgstr "'Ëåéôïõñãßá Tap' ïèüíçò áöÞò - Áñéóôåñü Click"
+
+#: backends/events/gph/gph-events.cpp:387
+#: backends/events/gph/gph-events.cpp:430
+#: backends/events/openpandora/op-events.cpp:170
+msgid "Touchscreen 'Tap Mode' - Right Click"
+msgstr "'Ëåéôïõñãßá Tap' ïèüíçò áöÞò - Äåîß Click"
+
+#: backends/events/gph/gph-events.cpp:389
+#: backends/events/gph/gph-events.cpp:432
+#: backends/events/openpandora/op-events.cpp:172
+msgid "Touchscreen 'Tap Mode' - Hover (No Click)"
+msgstr ""
+
+#: backends/events/gph/gph-events.cpp:409
+msgid "Maximum Volume"
+msgstr "ÌÝãéóôç ¸íôáóç"
+
+#: backends/events/gph/gph-events.cpp:411
+msgid "Increasing Volume"
+msgstr "Áýîçóç ¸íôáóçò"
+
+#: backends/events/gph/gph-events.cpp:417
+msgid "Minimal Volume"
+msgstr "ÅëÜ÷éóôç ¸íôáóç"
+
+#: backends/events/gph/gph-events.cpp:419
+msgid "Decreasing Volume"
+msgstr "Ìåßùóç ¸íôáóçò"
+
+#: backends/events/maemosdl/maemosdl-events.cpp:180
+msgid "Clicking Enabled"
+msgstr "ÅíåñãïðïéçìÝíï Clicking"
+
+#: backends/events/maemosdl/maemosdl-events.cpp:180
+msgid "Clicking Disabled"
+msgstr "ÁðåíåñãïðïéçìÝíï Clicking"
+
+#: backends/events/openpandora/op-events.cpp:174
+msgid "Touchscreen 'Tap Mode' - Hover (DPad Clicks)"
+msgstr ""
+
+#: backends/events/symbiansdl/symbiansdl-events.cpp:186
+msgid "Do you want to quit ?"
+msgstr "ÈÝëåôå íá âãåßôå áðü ôï ðñüãñáììá;"
+
+#. I18N: Trackpad mode toggle status.
+#: backends/events/webossdl/webossdl-events.cpp:308
+msgid "Trackpad mode is now"
+msgstr "Ç ëåéôïõñãßá trackpad åßíáé ôþñá"
+
+#. I18N: Trackpad mode on or off.
+#. I18N: Auto-drag on or off.
+#: backends/events/webossdl/webossdl-events.cpp:311
+#: backends/events/webossdl/webossdl-events.cpp:338
+msgid "ON"
+msgstr "ÅíåñãïðïéçìÝíç"
+
+#: backends/events/webossdl/webossdl-events.cpp:311
+#: backends/events/webossdl/webossdl-events.cpp:338
+msgid "OFF"
+msgstr "ÁðåíåñãïðïéçìÝíç"
+
+#: backends/events/webossdl/webossdl-events.cpp:315
+msgid "Swipe two fingers to the right to toggle."
+msgstr "ÐåñÜóôå äýï äÜ÷ôõëá ðñïò ôá äåîéÜ ãéá åíáëëáãÞ."
+
+#. I18N: Auto-drag toggle status.
+#: backends/events/webossdl/webossdl-events.cpp:335
+msgid "Auto-drag mode is now"
+msgstr "Ç ëåéôïõñãßá auto-drag åßíáé ôþñá"
+
+#: backends/events/webossdl/webossdl-events.cpp:342
+msgid "Swipe three fingers to the right to toggle."
+msgstr "ÐåñÜóôå ôñßá äÜ÷ôõëá ðñïò ôá äåîéÜ ãéá åíáëëáãÞ."
+
+#: backends/graphics/opengl/opengl-graphics.cpp:146
+msgid "OpenGL"
+msgstr "OpenGL"
+
+#: backends/graphics/openglsdl/openglsdl-graphics.cpp:617
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2462
+msgid "Windowed mode"
+msgstr "Ëåéôïõñãßá ðáñáèýñïõ"
+
+#: backends/graphics/openglsdl/openglsdl-graphics.cpp:710
+#, c-format
+msgid "Resolution: %dx%d"
+msgstr "ÁíÜëõóç: %dx%d"
+
+#: backends/graphics/openglsdl/openglsdl-graphics.cpp:731
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2338
+msgid "Enabled aspect ratio correction"
+msgstr "ÅíåñãïðïéçìÝíç äéüñèùóç áíáëïãßáò äéáóôÜóåùí"
+
+#: backends/graphics/openglsdl/openglsdl-graphics.cpp:733
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2344
+msgid "Disabled aspect ratio correction"
+msgstr "ÁðåíåñãïðïéçìÝíç äéüñèùóç áíáëïãßáò äéáóôÜóåùí"
+
+#: backends/graphics/openglsdl/openglsdl-graphics.cpp:753
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2362
+msgid "Filtering enabled"
+msgstr "Åíåñãïðïßçóç öéëôñáñßóìáôïò"
+
+#: backends/graphics/openglsdl/openglsdl-graphics.cpp:755
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2364
+msgid "Filtering disabled"
+msgstr "Áðåíåñãïðïßçóç öéëôñáñßóìáôïò"
+
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:47
+#: backends/graphics/wincesdl/wincesdl-graphics.cpp:88
+#: backends/graphics/wincesdl/wincesdl-graphics.cpp:95
+msgid "Normal (no scaling)"
+msgstr "Êáíïíéêü (÷ùñßò êëéìÜêùóç)"
+
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:66
+msgctxt "lowres"
+msgid "Normal (no scaling)"
+msgstr "Êáíïíéêü (÷ùñßò êëéìÜêùóç)"
+
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2417
+msgid "Active graphics filter:"
+msgstr "Åíåñãü ößëôñï ãñáöéêþí:"
+
+#: backends/keymapper/remap-dialog.cpp:48
+msgid "Keymap:"
+msgstr "Áíôéóôïé÷ßóåéò ðëÞêôñùí:"
+
+#: backends/keymapper/remap-dialog.cpp:67
+msgid " (Effective)"
+msgstr " (Éó÷ýïí)"
+
+#: backends/keymapper/remap-dialog.cpp:107
+msgid " (Active)"
+msgstr " (Åíåñãü)"
+
+#: backends/keymapper/remap-dialog.cpp:107
+msgid " (Blocked)"
+msgstr " (ÁðïêëåéóìÝíï)"
+
+#: backends/keymapper/remap-dialog.cpp:120
+msgid " (Global)"
+msgstr " (Ïëéêü)"
+
+#: backends/keymapper/remap-dialog.cpp:128
+msgid " (Game)"
+msgstr " (Ðáé÷íßäé)"
+
+#: backends/midi/windows.cpp:165
+msgid "Windows MIDI"
+msgstr "Windows MIDI"
+
+#: backends/platform/ds/arm9/source/dsoptions.cpp:56
+#: engines/scumm/dialogs.cpp:287
+msgid "~C~lose"
+msgstr "~Ê~ëåßóéìï"
+
+#: backends/platform/ds/arm9/source/dsoptions.cpp:57
+msgid "ScummVM Main Menu"
+msgstr "Êåíôñéêü Ìåíïý ScummVM"
+
+#: backends/platform/ds/arm9/source/dsoptions.cpp:63
+msgid "~L~eft handed mode"
+msgstr "~Ë~åéôïõñãßá ãéá áñéóôåñü÷åéñåò"
+
+#: backends/platform/ds/arm9/source/dsoptions.cpp:64
+msgid "~I~ndy fight controls"
+msgstr "~×~åéñéóìïß ìÜ÷çò ºíôõ"
+
+#: backends/platform/ds/arm9/source/dsoptions.cpp:65
+msgid "Show mouse cursor"
+msgstr "ÐñïâïëÞ äñïìÝá ðïíôéêéïý"
+
+#: backends/platform/ds/arm9/source/dsoptions.cpp:66
+msgid "Snap to edges"
+msgstr "ÓõãêñÜôçóç óôéò Üêñåò"
+
+#: backends/platform/ds/arm9/source/dsoptions.cpp:68
+msgid "Touch X Offset"
+msgstr "Ìåôáôüðéóç ÁöÞò ×"
+
+#: backends/platform/ds/arm9/source/dsoptions.cpp:75
+msgid "Touch Y Offset"
+msgstr "Ìåôáôüðéóç ÁöÞò Ø"
+
+#: backends/platform/ds/arm9/source/dsoptions.cpp:87
+msgid "Use laptop trackpad-style cursor control"
+msgstr "×ñÞóç åëÝã÷ïõ äñïìÝá ôýðïõ laptop trackpad"
+
+#: backends/platform/ds/arm9/source/dsoptions.cpp:88
+msgid "Tap for left click, double tap right click"
+msgstr "ÐáôÞóôå ãéá áñéóôåñü click, ðáôÞóôå äéðëÜ ãéá äåîß click"
+
+#: backends/platform/ds/arm9/source/dsoptions.cpp:90
+msgid "Sensitivity"
+msgstr "Åõáéóèçóßá"
+
+#: backends/platform/ds/arm9/source/dsoptions.cpp:99
+msgid "Initial top screen scale:"
+msgstr "Áñ÷éêÞ ðÜíù êëßìáêá ïèüíçò:"
+
+#: backends/platform/ds/arm9/source/dsoptions.cpp:105
+msgid "Main screen scaling:"
+msgstr "Êýñéá êëéìÜêùóç ôçò ïèüíçò:"
+
+#: backends/platform/ds/arm9/source/dsoptions.cpp:107
+msgid "Hardware scale (fast, but low quality)"
+msgstr "Êëßìáêá õëéêïý (ãñÞãïñç, áëëÜ ÷áìçëÞò ðïéüôçôáò)"
+
+#: backends/platform/ds/arm9/source/dsoptions.cpp:108
+msgid "Software scale (good quality, but slower)"
+msgstr "Êëßìáêá ëïãéóìéêïý (êáëÞ ðïéüôçôá, áëëÜ ðéï áñãÞ)"
+
+#: backends/platform/ds/arm9/source/dsoptions.cpp:109
+msgid "Unscaled (you must scroll left and right)"
+msgstr "×ùñßò êëßìáêá (ðñÝðåé íá êõëßóåôå ôçí ïèüíç áñéóôåñÜ êáé äåîéÜ)"
+
+#: backends/platform/ds/arm9/source/dsoptions.cpp:111
+msgid "Brightness:"
+msgstr "Öùôåéíüôçôá:"
+
+#: backends/platform/ds/arm9/source/dsoptions.cpp:121
+msgid "High quality audio (slower) (reboot)"
+msgstr "¹÷ïò õøçëÞò ðïéüôçôáò (ðéï áñãü) (åðáíåêêßíçóç)"
+
+#: backends/platform/ds/arm9/source/dsoptions.cpp:122
+msgid "Disable power off"
+msgstr "Áðåíåñãïðïßçóç óâçóßìáôïò"
+
+#: backends/platform/ios7/ios7_osys_events.cpp:309
+#: backends/platform/ios7/ios7_osys_events.cpp:519
+#: backends/platform/iphone/osys_events.cpp:300
+msgid "Mouse-click-and-drag mode enabled."
+msgstr "Åíåñãïðïßçóç ëåéôïõñãßáò ðïíôéêéïý click-and-drag."
+
+#: backends/platform/ios7/ios7_osys_events.cpp:311
+#: backends/platform/ios7/ios7_osys_events.cpp:521
+#: backends/platform/iphone/osys_events.cpp:302
+msgid "Mouse-click-and-drag mode disabled."
+msgstr "Áðåíåñãïðïßçóç ëåéôïõñãßáò ðïíôéêéïý click-and-drag."
+
+#: backends/platform/ios7/ios7_osys_events.cpp:322
+#: backends/platform/ios7/ios7_osys_events.cpp:540
+#: backends/platform/iphone/osys_events.cpp:313
+msgid "Touchpad mode enabled."
+msgstr "Ëåéôïõñãßá Touchpad åíåñãïðïéçìÝíç."
+
+#: backends/platform/ios7/ios7_osys_events.cpp:324
+#: backends/platform/ios7/ios7_osys_events.cpp:542
+#: backends/platform/iphone/osys_events.cpp:315
+msgid "Touchpad mode disabled."
+msgstr "Ëåéôïõñãßá Touchpad áðåíåñãïðïéçìÝíç."
+
+#: backends/platform/maemo/maemo.cpp:208
+msgid "Click Mode"
+msgstr "Ëåéôïõñãßá Click"
+
+#: backends/platform/maemo/maemo.cpp:214
+#: backends/platform/symbian/src/SymbianActions.cpp:42
+#: backends/platform/tizen/form.cpp:275
+#: backends/platform/wince/CEActionsPocket.cpp:60
+#: backends/platform/wince/CEActionsSmartphone.cpp:43
+msgid "Left Click"
+msgstr "Áñéóôåñü Click"
+
+#: backends/platform/maemo/maemo.cpp:217
+msgid "Middle Click"
+msgstr "Ìåóáßï Click"
+
+#: backends/platform/maemo/maemo.cpp:220
+#: backends/platform/symbian/src/SymbianActions.cpp:43
+#: backends/platform/tizen/form.cpp:267
+#: backends/platform/wince/CEActionsSmartphone.cpp:44
+msgid "Right Click"
+msgstr "Äåîß Click"
+
+#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+msgid "Hide ScummVM"
+msgstr "Áðüêñõøç ScummVM"
+
+#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+msgid "Hide Others"
+msgstr "Áðüêñõøç ¶ëëùí"
+
+#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+msgid "Show All"
+msgstr "ÐñïâïëÞ üëùí"
+
+#: backends/platform/sdl/macosx/appmenu_osx.mm:120
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+msgid "Window"
+msgstr "ÐáñÜèõñï"
+
+#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+msgid "Minimize"
+msgstr "Åëá÷éóôïðïßçóç"
+
+#: backends/platform/symbian/src/SymbianActions.cpp:38
+#: backends/platform/wince/CEActionsSmartphone.cpp:39
+msgid "Up"
+msgstr "ÐÜíù"
+
+#: backends/platform/symbian/src/SymbianActions.cpp:39
+#: backends/platform/wince/CEActionsSmartphone.cpp:40
+msgid "Down"
+msgstr "ÊÜôù"
+
+#: backends/platform/symbian/src/SymbianActions.cpp:40
+#: backends/platform/wince/CEActionsSmartphone.cpp:41
+msgid "Left"
+msgstr "ÁñéóôåñÜ"
+
+#: backends/platform/symbian/src/SymbianActions.cpp:41
+#: backends/platform/wince/CEActionsSmartphone.cpp:42
+msgid "Right"
+msgstr "ÄåîéÜ"
+
+#: backends/platform/symbian/src/SymbianActions.cpp:46
+#: backends/platform/wince/CEActionsSmartphone.cpp:47
+msgid "Zone"
+msgstr "Æþíç"
+
+#: backends/platform/symbian/src/SymbianActions.cpp:47
+#: backends/platform/wince/CEActionsPocket.cpp:54
+#: backends/platform/wince/CEActionsSmartphone.cpp:48
+msgid "Multi Function"
+msgstr "ÐïëëáðëÞ Ëåéôïõñãßá"
+
+#: backends/platform/symbian/src/SymbianActions.cpp:48
+msgid "Swap character"
+msgstr "ÁíôáëëáãÞ ÷áñáêôÞñá"
+
+#: backends/platform/symbian/src/SymbianActions.cpp:49
+msgid "Skip text"
+msgstr "ÐáñÜëåéøç êåéìÝíïõ"
+
+#: backends/platform/symbian/src/SymbianActions.cpp:51
+msgid "Fast mode"
+msgstr "ÃñÞãïñç ëåéôïõñãßá"
+
+#: backends/platform/symbian/src/SymbianActions.cpp:53
+msgid "Debugger"
+msgstr "ÅíôïðéóôÞò óöáëìÜôùí"
+
+#: backends/platform/symbian/src/SymbianActions.cpp:54
+msgid "Global menu"
+msgstr "Êáèïëéêü ìåíïý"
+
+#: backends/platform/symbian/src/SymbianActions.cpp:55
+msgid "Virtual keyboard"
+msgstr "Åéêïíéêü ðëçêôñïëüãéï"
+
+#: backends/platform/symbian/src/SymbianActions.cpp:56
+msgid "Key mapper"
+msgstr ""
+
+#: backends/platform/tizen/form.cpp:263
+msgid "Right Click Once"
+msgstr "Äåîß Click Ìéá ÖïñÜ"
+
+#: backends/platform/tizen/form.cpp:271
+msgid "Move Only"
+msgstr "Ìüíï Ìåôáêßíçóç"
+
+#: backends/platform/tizen/form.cpp:294
+msgid "Escape Key"
+msgstr "ÐëÞêôñï Escape"
+
+#: backends/platform/tizen/form.cpp:299
+msgid "Game Menu"
+msgstr "Ìåíïý Ðáé÷íéäéïý"
+
+#: backends/platform/tizen/form.cpp:304
+msgid "Show Keypad"
+msgstr "ÐñïâïëÞ Áñéèìçôéêïý Ðëçêôñïëïãßïõ"
+
+#: backends/platform/tizen/form.cpp:309
+msgid "Control Mouse"
+msgstr "¸ëåã÷ïò Ðïíôéêéïý"
+
+#: backends/platform/tizen/fs.cpp:259
+msgid "[ Data ]"
+msgstr "[ ÄåäïìÝíá ]"
+
+#: backends/platform/tizen/fs.cpp:263
+msgid "[ Resources ]"
+msgstr "[ Ðüñïé ]"
+
+#: backends/platform/tizen/fs.cpp:267
+msgid "[ SDCard ]"
+msgstr "[ ÊÜñôá SD ]"
+
+#: backends/platform/tizen/fs.cpp:271
+msgid "[ Media ]"
+msgstr "[ ÌÝóá ]"
+
+#: backends/platform/tizen/fs.cpp:275
+msgid "[ Shared ]"
+msgstr "[ Êïéíü÷ñçóôá ]"
+
+#: backends/platform/wii/options.cpp:51
+msgid "Video"
+msgstr "Âßíôåï"
+
+#: backends/platform/wii/options.cpp:54
+msgid "Current video mode:"
+msgstr "ÔñÝ÷ïõóá ëåéôïõñãßá âßíôåï:"
+
+#: backends/platform/wii/options.cpp:56
+msgid "Double-strike"
+msgstr "Äéðëü-êôýðçìá"
+
+#: backends/platform/wii/options.cpp:60
+msgid "Horizontal underscan:"
+msgstr "Ïñéæüíôéá ÕðïóÜñùóç:"
+
+#: backends/platform/wii/options.cpp:66
+msgid "Vertical underscan:"
+msgstr "ÊÜèåôç ÕðïóÜñùóç:"
+
+#: backends/platform/wii/options.cpp:71
+msgid "Input"
+msgstr "Åßóïäïò"
+
+#: backends/platform/wii/options.cpp:74
+msgid "GC Pad sensitivity:"
+msgstr "Åõáéóèçóßá GC Pad:"
+
+#: backends/platform/wii/options.cpp:80
+msgid "GC Pad acceleration:"
+msgstr "ÅðéôÜ÷õíóç GC Pad:"
+
+#: backends/platform/wii/options.cpp:86
+msgid "DVD"
+msgstr "DVD"
+
+#: backends/platform/wii/options.cpp:89 backends/platform/wii/options.cpp:101
+msgid "Status:"
+msgstr "ÊáôÜóôáóç:"
+
+#: backends/platform/wii/options.cpp:90 backends/platform/wii/options.cpp:102
+msgid "Unknown"
+msgstr "¶ãíùóôï"
+
+#: backends/platform/wii/options.cpp:93
+msgid "Mount DVD"
+msgstr "ÐñïóÜñôçóç DVD"
+
+#: backends/platform/wii/options.cpp:94
+msgid "Unmount DVD"
+msgstr "ÁðïðñïóÜñôçóç DVD"
+
+#: backends/platform/wii/options.cpp:98
+msgid "SMB"
+msgstr "SMB"
+
+#: backends/platform/wii/options.cpp:106
+msgid "Server:"
+msgstr "ÅîõðçñåôçôÞò:"
+
+#: backends/platform/wii/options.cpp:110
+msgid "Share:"
+msgstr "Êïéíü÷ñçóôï:"
+
+#: backends/platform/wii/options.cpp:118
+msgid "Password:"
+msgstr "Êùäéêüò:"
+
+#: backends/platform/wii/options.cpp:121
+msgid "Init network"
+msgstr "Ðñïåôïéìáóßá äéêôýïõ"
+
+#: backends/platform/wii/options.cpp:123
+msgid "Mount SMB"
+msgstr "ÐñïóÜñôçóç SMB"
+
+#: backends/platform/wii/options.cpp:124
+msgid "Unmount SMB"
+msgstr "ÁðïðñïóÜñôçóç SMB"
+
+#: backends/platform/wii/options.cpp:143
+msgid "DVD Mounted successfully"
+msgstr "Ôï DVD ðñïóáñôÞèçêå ìå åðéôõ÷ßá"
+
+#: backends/platform/wii/options.cpp:146
+msgid "Error while mounting the DVD"
+msgstr "ÓöÜëìá êáôÜ ôçí ðñïóÜñôçóç ôïõ DVD"
+
+#: backends/platform/wii/options.cpp:148
+msgid "DVD not mounted"
+msgstr "Ôï DVD äåí ðñïóáñôÞèçêå"
+
+#: backends/platform/wii/options.cpp:161
+msgid "Network up, share mounted"
+msgstr "Äßêôõï åíåñãü, ï êïéíü÷ñçóôïò öÜêåëïò ðñïóáñôÞèçêå"
+
+#: backends/platform/wii/options.cpp:163
+msgid "Network up"
+msgstr "Äßêôõï åíåñãü"
+
+#: backends/platform/wii/options.cpp:166
+msgid ", error while mounting the share"
+msgstr ", óöÜëìá êáôÜ ôçí ðñïóÜñôçóç ôïõ êïéíü÷ñçóôïõ öáêÝëïõ"
+
+#: backends/platform/wii/options.cpp:168
+msgid ", share not mounted"
+msgstr ", ï êïéíü÷ñçóôïò öÜêåëïò äåí ðñïóáñôÞèçêå"
+
+#: backends/platform/wii/options.cpp:174
+msgid "Network down"
+msgstr "Äßêôõï áíåíåñãü"
+
+#: backends/platform/wii/options.cpp:178
+msgid "Initializing network"
+msgstr "Áñ÷éêïðïßçóç äéêôýïõ"
+
+#: backends/platform/wii/options.cpp:182
+msgid "Timeout while initializing network"
+msgstr "ÅîÜíôëçóç ÷ñïíéêïý ïñßïõ êáôÜ ôçí áñ÷éêïðïßçóç äéêôýïõ"
+
+#: backends/platform/wii/options.cpp:186
+#, c-format
+msgid "Network not initialized (%d)"
+msgstr "Ôï äßêôõï äåí áñ÷éêïðïéÞèçêå (%d)"
+
+#: backends/platform/wince/CEActionsPocket.cpp:46
+msgid "Hide Toolbar"
+msgstr "Áðüêñõøç ÃñáììÞò Åñãáëåßùí"
+
+#: backends/platform/wince/CEActionsPocket.cpp:47
+msgid "Show Keyboard"
+msgstr "ÐñïâïëÞ Ðëçêôñïëïãßïõ"
+
+#: backends/platform/wince/CEActionsPocket.cpp:48
+msgid "Sound on/off"
+msgstr "¹÷ïò áíïéêôüò/êëåéóôüò"
+
+#: backends/platform/wince/CEActionsPocket.cpp:49
+msgid "Right click"
+msgstr "Äåîß click"
+
+#: backends/platform/wince/CEActionsPocket.cpp:50
+msgid "Show/Hide Cursor"
+msgstr "ÅìöÜíéóç/Áðüêñõøç ÄñïìÝá"
+
+#: backends/platform/wince/CEActionsPocket.cpp:51
+msgid "Free look"
+msgstr "Åëåýèåñç ðåñéÞãçóç"
+
+#: backends/platform/wince/CEActionsPocket.cpp:52
+msgid "Zoom up"
+msgstr "ÌåãÝèõíóç ðÜíù"
+
+#: backends/platform/wince/CEActionsPocket.cpp:53
+msgid "Zoom down"
+msgstr "ÌåãÝèõíóç êÜôù"
+
+#: backends/platform/wince/CEActionsPocket.cpp:55
+#: backends/platform/wince/CEActionsSmartphone.cpp:49
+msgid "Bind Keys"
+msgstr "ÄÝóìåõóç ÐëÞêôñùí"
+
+#: backends/platform/wince/CEActionsPocket.cpp:56
+msgid "Cursor Up"
+msgstr "ÄñïìÝáò ÐÜíù"
+
+#: backends/platform/wince/CEActionsPocket.cpp:57
+msgid "Cursor Down"
+msgstr "ÄñïìÝáò ÊÜôù"
+
+#: backends/platform/wince/CEActionsPocket.cpp:58
+msgid "Cursor Left"
+msgstr "ÄñïìÝáò ÁñéóôåñÜ"
+
+#: backends/platform/wince/CEActionsPocket.cpp:59
+msgid "Cursor Right"
+msgstr "ÄñïìÝáò ÄåîéÜ"
+
+#: backends/platform/wince/CEActionsPocket.cpp:267
+#: backends/platform/wince/CEActionsSmartphone.cpp:231
+msgid "Do you want to load or save the game?"
+msgstr "ÈÝëåôå íá öïñôþóåôå Þ íá áðïèçêåýóåôå ôï ðáé÷íßäé;"
+
+#: backends/platform/wince/CEActionsPocket.cpp:326
+#: backends/platform/wince/CEActionsSmartphone.cpp:287
+msgid " Are you sure you want to quit ? "
+msgstr " Åßóôå óßãïõñïé üôé èÝëåôå íá âãåßôå áðü ôï ðñüãñáììá ; "
+
+#: backends/platform/wince/CEActionsSmartphone.cpp:50
+msgid "Keyboard"
+msgstr "Ðëçêôñïëüãéï"
+
+#: backends/platform/wince/CEActionsSmartphone.cpp:51
+msgid "Rotate"
+msgstr "ÐåñéóôñïöÞ"
+
+#: backends/platform/wince/CELauncherDialog.cpp:56
+msgid "Using SDL driver "
+msgstr "×ñÞóç ïäçãïý SDL "
+
+#: backends/platform/wince/CELauncherDialog.cpp:60
+msgid "Display "
+msgstr "Áðåéêüíéóç "
+
+#: backends/platform/wince/CELauncherDialog.cpp:83
+msgid "Do you want to perform an automatic scan ?"
+msgstr "ÈÝëåôå íá ðñáãìáôïðïéçèåß áõôïìáôïðïéçìÝíç óÜñùóç ;"
+
+#: backends/platform/wince/wince-sdl.cpp:516
+msgid "Map right click action"
+msgstr "Áíôéóôïß÷éóç åíÝñãåéáò äåîß click"
+
+#: backends/platform/wince/wince-sdl.cpp:520
+msgid "You must map a key to the 'Right Click' action to play this game"
+msgstr ""
+"Èá ðñÝðåé íá áíôéóôïé÷ßóåôå Ýíá ðëÞêôñï óôçí åíÝñãåéá \"Äåîß click\" ãéá íá "
+"ðáßîåôå áõôü ôï ðáé÷íßäé"
+
+#: backends/platform/wince/wince-sdl.cpp:529
+msgid "Map hide toolbar action"
+msgstr "Áíôéóôïß÷éóç åíÝñãåéáò áðüêñõøçò ãñáììÞò åñãáëåßùí"
+
+#: backends/platform/wince/wince-sdl.cpp:533
+msgid "You must map a key to the 'Hide toolbar' action to play this game"
+msgstr ""
+"Èá ðñÝðåé íá áíôéóôïé÷ßóåôå Ýíá ðëÞêôñï óôçí åíÝñãåéá \"Áðüêñõøç ãñáììÞò "
+"åñãáëåßùí\" ãéá íá ðáßîåôå áõôü ôï ðáé÷íßäé"
+
+#: backends/platform/wince/wince-sdl.cpp:542
+msgid "Map Zoom Up action (optional)"
+msgstr ""
+
+#: backends/platform/wince/wince-sdl.cpp:545
+msgid "Map Zoom Down action (optional)"
+msgstr ""
+
+#: backends/platform/wince/wince-sdl.cpp:553
+msgid ""
+"Don't forget to map a key to 'Hide Toolbar' action to see the whole inventory"
+msgstr ""
+"Ìçí îå÷Üóåôå íá áíôéóôïé÷ßóåôå Ýíá ðëÞêôñï ãéá ôçí åíÝñãåéá \"Áðüêñõøç "
+"ÃñáììÞò Åñãáëåßùí\" ãéá íá äåßôå üëá ôá áíôéêåßìåíá"
+
+#: backends/updates/macosx/macosx-updates.mm:79
+msgid "Check for Updates..."
+msgstr "¸ëåã÷ïò Åíçìåñþóåùí..."
+
+#: engines/access/resources.cpp:44 engines/drascula/drascula.cpp:965
+#: engines/hugo/hugo.cpp:437 engines/lure/lure.cpp:64
+#: engines/mortevielle/mortevielle.cpp:306 engines/sky/compact.cpp:131
+#: engines/teenagent/resources.cpp:97 engines/tony/tony.cpp:198
+#: engines/toon/toon.cpp:4918
+#, c-format
+msgid "Unable to locate the '%s' engine data file."
+msgstr "Äåí Þôáí äõíáôÞ ç åýñåóç ôïõ áñ÷åßïõ ðáé÷íéäéïý '%s'."
+
+#: engines/access/resources.cpp:52 engines/drascula/drascula.cpp:979
+#: engines/hugo/hugo.cpp:448 engines/lure/lure.cpp:73
+#: engines/mortevielle/mortevielle.cpp:315 engines/tony/tony.cpp:210
+#: engines/toon/toon.cpp:4930
+#, c-format
+msgid "The '%s' engine data file is corrupt."
+msgstr "Ôï áñ÷åéï ðáé÷íéäéïý '%s' åßíáé êáôåóôñáììÝíï."
+
+#: engines/access/resources.cpp:61 engines/drascula/drascula.cpp:990
+#: engines/hugo/hugo.cpp:458 engines/lure/lure.cpp:76
+#: engines/mortevielle/mortevielle.cpp:326 engines/tony/tony.cpp:221
+#: engines/toon/toon.cpp:4941
+#, c-format
+msgid ""
+"Incorrect version of the '%s' engine data file found. Expected %d.%d but got "
+"%d.%d."
+msgstr ""
+"ÂñÝèçêå ëáíèáóìÝíç Ýêäïóç ôïõ '%s' áñ÷åßïõ ðáé÷íéäéïý. Áíáìåíüìåíç %d.%d "
+"áëëÜ âñÝèçêå ç %d.%d."
+
+#: engines/adl/detection.cpp:45 engines/adl/detection.cpp:55
+msgid "Color mode"
+msgstr "Ëåéôïõñãßá ÷ñþìáôïò"
+
+#: engines/adl/detection.cpp:46 engines/adl/detection.cpp:56
+msgid "Use color graphics"
+msgstr "×ñÞóç Ýã÷ñùìùí ãñáöéêþí"
+
+#: engines/adl/detection.cpp:65
+msgid "Scanlines"
+msgstr "ÃñáììÝò óÜñùóçò"
+
+#: engines/adl/detection.cpp:66
+msgid "Show scanlines"
+msgstr "ÐñïâïëÞ ãñáììþí óÜñùóçò"
+
+#: engines/agi/detection.cpp:147 engines/cine/detection.cpp:70
+#: engines/drascula/detection.cpp:302 engines/dreamweb/detection.cpp:48
+#: engines/neverhood/detection.cpp:177 engines/sci/detection.cpp:430
+#: engines/sherlock/detection.cpp:71 engines/toltecs/detection.cpp:200
+#: engines/zvision/detection_tables.h:51
+msgid "Use original save/load screens"
+msgstr "×ñÞóç áñ÷éêþí ïèïíþí áðïèÞêåõóçò/öüñôùóçò"
+
+#: engines/agi/detection.cpp:148 engines/cine/detection.cpp:71
+#: engines/drascula/detection.cpp:303 engines/dreamweb/detection.cpp:49
+#: engines/neverhood/detection.cpp:178 engines/sci/detection.cpp:431
+#: engines/sherlock/detection.cpp:72 engines/toltecs/detection.cpp:201
+msgid "Use the original save/load screens instead of the ScummVM ones"
+msgstr ""
+"×ñÞóç ôùí áñ÷éêþí ïèïíþí áðïèÞêåõóçò/öüñôùóçò áíôß ãéá áõôÝò ôïõ ScummVM"
+
+#: engines/agi/detection.cpp:157
+msgid "Use an alternative palette"
+msgstr "×ñÞóç åíáëëáêôéêÞò ðáëÝôáò"
+
+#: engines/agi/detection.cpp:158
+msgid ""
+"Use an alternative palette, common for all Amiga games. This was the old "
+"behavior"
+msgstr ""
+"×ñÞóç åíáëëáêôéêÞò ðáëÝôáò, êïéíÞò ãéá üëá ôá ðáé÷íßäéá Amiga. ÁõôÞ Þôáí ç "
+"ðáëéÜ óõìðåñéöïñÜ"
+
+#: engines/agi/detection.cpp:167
+msgid "Mouse support"
+msgstr "ÕðïóôÞñéîç ðïíôéêéïý"
+
+#: engines/agi/detection.cpp:168
+msgid ""
+"Enables mouse support. Allows to use mouse for movement and in game menus."
+msgstr ""
+"Åíåñãïðïßçóç ôçò õðïóôÞñéîçò ôïõ ðïíôéêéïý. ÅðéôñÝðåé ôç ÷ñÞóç ôïõ ðïíôéêéïý "
+"ãéá êßíçóç êáé ôá ìåíïý ôïõ ðáé÷íéäéïý."
+
+#: engines/agi/detection.cpp:177
+msgid "Use Hercules hires font"
+msgstr "×ñÞóç ãñáììáôïóåéñÜò Hercules õøçëÞò åõêñßíåéáò"
+
+#: engines/agi/detection.cpp:178
+msgid "Uses Hercules hires font, when font file is available."
+msgstr ""
+"×ñÞóç ãñáììáôïóåéñÜò Hercules õøçëÞò åõêñßíåéáò, üôáí ç ãñáììáôïóåéñÜ åßíáé "
+"äéáèÝóéìç."
+
+#: engines/agi/detection.cpp:187
+msgid "Pause when entering commands"
+msgstr "Ðáýóç êáôÜ ôçí åéóáãùãÞ åíôïëþí"
+
+#: engines/agi/detection.cpp:188
+msgid ""
+"Shows a command prompt window and pauses the game (like in SCI) instead of a "
+"real-time prompt."
+msgstr ""
+"Åìöáíßæåé Ýíá ðáñÜèõñï ãñáììÞò åíôïëþí êáé ðáýåé ôï ðáé÷íßäé (üðùò êáé ôï "
+"SCI) áíôß ôçò ãñáììÞò åíôïëþí ðñáãìáôéêïý ÷ñüíïõ."
+
+#: engines/agi/saveload.cpp:774 engines/avalanche/parser.cpp:1888
+#: engines/cge/events.cpp:83 engines/cge2/events.cpp:76
+#: engines/cine/various.cpp:359 engines/dm/dm.cpp:269
+#: engines/dm/loadsave.cpp:184 engines/drascula/saveload.cpp:377
+#: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473
+#: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377
+#: engines/neverhood/menumodule.cpp:893 engines/sci/engine/kfile.cpp:1010
+#: engines/sci/engine/kfile.cpp:1239 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266
+#: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62
+msgid "Restore game:"
+msgstr "ÅðáíáöïñÜ ðáé÷íéäéïý:"
+
+#: engines/agi/saveload.cpp:774 engines/avalanche/parser.cpp:1888
+#: engines/cge/events.cpp:83 engines/cge2/events.cpp:76
+#: engines/cine/various.cpp:359 engines/dm/dm.cpp:269
+#: engines/dm/loadsave.cpp:184 engines/drascula/saveload.cpp:377
+#: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473
+#: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377
+#: engines/neverhood/menumodule.cpp:893 engines/sci/engine/kfile.cpp:1010
+#: engines/sci/engine/kfile.cpp:1239 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266
+#: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62
+msgid "Restore"
+msgstr "ÅðáíáöïñÜ"
+
+#: engines/agos/saveload.cpp:159 engines/scumm/scumm.cpp:2436
+#, c-format
+msgid ""
+"Failed to load saved game from file:\n"
+"\n"
+"%s"
+msgstr ""
+"Áðïôõ÷ßá öüñôùóçò ðáé÷íéäéïý áðü ôï áñ÷åßï:\n"
+"\n"
+"%s"
+
+#: engines/agos/saveload.cpp:194 engines/scumm/scumm.cpp:2429
+#, c-format
+msgid ""
+"Failed to save game to file:\n"
+"\n"
+"%s"
+msgstr ""
+"Áðïôõ÷ßá áðïèÞêåõóçò ðáé÷íéäéïý óôï áñ÷åßï:\n"
+"\n"
+"%s"
+
+#: engines/agos/saveload.cpp:202 engines/scumm/scumm.cpp:2447
+#, c-format
+msgid ""
+"Successfully saved game in file:\n"
+"\n"
+"%s"
+msgstr ""
+"Åðéôõ÷Þò áðïèÞêåõóç ðáé÷íéäéïý óôï áñ÷åßï:\n"
+"\n"
+"%s"
+
+#: engines/agos/animation.cpp:558
+#, c-format
+msgid "Cutscene file '%s' not found!"
+msgstr ""
+
+#: engines/cge/detection.cpp:105 engines/cge2/detection.cpp:101
+msgid "Color Blind Mode"
+msgstr "Ëåéôïõñãßá ãéá ¶ôïìá ìå Á÷ñùìáôïøßá"
+
+#: engines/cge/detection.cpp:106 engines/cge2/detection.cpp:102
+msgid "Enable Color Blind Mode by default"
+msgstr "Åíåñãïðïßçóç ëåéôïõñãßáò ãéá ¶ôïìá ìå Á÷ñùìáôïøßá åî'ïñéóìïý"
+
+#: engines/drascula/saveload.cpp:47
+msgid ""
+"ScummVM found that you have old saved games for Drascula that should be "
+"converted.\n"
+"The old saved game format is no longer supported, so you will not be able to "
+"load your games if you don't convert them.\n"
+"\n"
+"Press OK to convert them now, otherwise you will be asked again the next "
+"time you start the game.\n"
+msgstr ""
+"Ôï ScummVM äéáðßóôùóå üôé Ý÷åôå ðáëéÜ áðïèçêåõìÝíá ðáé÷íßäéá ãéá ôï Drascula "
+"ðïõ èá ðñÝðåé íá ìåôáôñáðïýí.\n"
+"Ç ðáëéÜ áðïèçêåõìÝíç ìïñöÞ ðáé÷íéäéþí äåí õðïóôçñßæåôáé ðëÝïí, ïðüôå äå èá "
+"åßóôå óå èÝóç íá öïñôþóåôå ôá ðáé÷íßäéá óáò, áí äåí ôá ìåôáôñÝøåôå.\n"
+"\n"
+"ÐáôÞóôå OK ãéá íá ôá ìåôáôñÝøåôå ôþñá, áëëéþò èá óáò æçôçèåß îáíÜ ôçí "
+"åðüìåíç öïñÜ ðïõ èá îåêéíÞóåôå ôï ðáé÷íßäé.\n"
+
+#: engines/dreamweb/detection.cpp:58
+msgid "Use bright palette mode"
+msgstr "×ñÞóç ëáìðåñÞò ðáëÝôáò"
+
+#: engines/dreamweb/detection.cpp:59
+msgid "Display graphics using the game's bright palette"
+msgstr "ÐñïâïëÞ ãñáöéêþí ìå ÷ñÞóç ôçò ëáìðåñÞò ðáëÝôáò ôïõ ðáé÷íéäéïý"
+
+#: engines/gob/inter_playtoons.cpp:255 engines/gob/inter_v2.cpp:1467
+#: engines/gob/inter_geisha.cpp:232 engines/tinsel/saveload.cpp:532
+msgid "Failed to load saved game from file."
+msgstr "Ç áíÜãíùóç áðïèçêåõìÝíïõ ðáé÷íéäéïý áðü áñ÷åßï áðÝôõ÷å."
+
+#: engines/gob/inter_v2.cpp:1537 engines/gob/inter_geisha.cpp:263
+#: engines/tinsel/saveload.cpp:545
+msgid "Failed to save game to file."
+msgstr "Ç åããñáöÞ áðïèçêåõìÝíïõ ðáé÷íéäéïý óå áñ÷åßï áðÝôõ÷å."
+
+#: engines/gob/inter_v5.cpp:107
+msgid "Failed to delete file."
+msgstr "Ç äéáãñáöÞ ôïõ áñ÷åßïõ áðÝôõ÷å."
+
+#: engines/groovie/detection.cpp:312
+msgid "Fast movie speed"
+msgstr "ÃñÞãïñç ôá÷ýôçôá ôáéíéþí"
+
+#: engines/groovie/detection.cpp:313
+msgid "Play movies at an increased speed"
+msgstr "ÁíáðáñáãùãÞ ôáéíéþí ìå áõîçìÝíç ôá÷ýôçôá"
+
+#: engines/groovie/script.cpp:407
+msgid "Failed to save game"
+msgstr "Áäõíáìßá áðïèÞêåõóçò ðáé÷íéäéïý"
+
+#: engines/hopkins/detection.cpp:76 engines/hopkins/detection.cpp:86
+msgid "Gore Mode"
+msgstr "Ëåéôïõñãßá Áßìáôïò"
+
+#: engines/hopkins/detection.cpp:77 engines/hopkins/detection.cpp:87
+msgid "Enable Gore Mode when available"
+msgstr "Åíåñãïðïßçóç Ëåéôïõñãßáò Áßìáôïò üôáí õðÜñ÷åé äéáèåóéìüôçôá"
+
+#. I18N: Studio audience adds an applause and cheering sounds whenever
+#. Malcolm makes a joke.
+#: engines/kyra/detection.cpp:62
+msgid "Studio audience"
+msgstr "Êïéíü óôïýíôéï"
+
+#: engines/kyra/detection.cpp:63
+msgid "Enable studio audience"
+msgstr "Åíåñãïðïßçóç êïéíïý óôïýíôéï"
+
+#. I18N: This option allows the user to skip text and cutscenes.
+#: engines/kyra/detection.cpp:73
+msgid "Skip support"
+msgstr "ÕðïóôÞñéîç ðáñÜëåéøçò"
+
+#: engines/kyra/detection.cpp:74
+msgid "Allow text and cutscenes to be skipped"
+msgstr "Íá åðéôñÝðåôáé ç ðáñÜëåéøç êåéìÝíïõ êáé ôáéíéþí"
+
+#. I18N: Helium mode makes people sound like they've inhaled Helium.
+#: engines/kyra/detection.cpp:84
+msgid "Helium mode"
+msgstr "Ëåéôïõñãßá çëßïõ"
+
+#: engines/kyra/detection.cpp:85
+msgid "Enable helium mode"
+msgstr "Åíåñãïðïßçóç ëåéôïõñãßáò çëßïõ"
+
+#. I18N: When enabled, this option makes scrolling smoother when
+#. changing from one screen to another.
+#: engines/kyra/detection.cpp:99
+msgid "Smooth scrolling"
+msgstr "ÏìáëÞ êýëéóç"
+
+#: engines/kyra/detection.cpp:100
+msgid "Enable smooth scrolling when walking"
+msgstr "Åíåñãïðïßçóç ïìáëÞò êýëéóçò êáôÜ ôï ðåñðÜôçìá"
+
+#. I18N: When enabled, this option changes the cursor when it floats to the
+#. edge of the screen to a directional arrow. The player can then click to
+#. walk towards that direction.
+#: engines/kyra/detection.cpp:112
+msgid "Floating cursors"
+msgstr ""
+
+#: engines/kyra/detection.cpp:113
+msgid "Enable floating cursors"
+msgstr ""
+
+#. I18N: HP stands for Hit Points
+#: engines/kyra/detection.cpp:127
+msgid "HP bar graphs"
+msgstr "ÑáâäïãñÜììáôá HP"
+
+#: engines/kyra/detection.cpp:128
+msgid "Enable hit point bar graphs"
+msgstr "Åíåñãïðïßçóç ñáâäïãñáììÜôùí ãéá hit points"
+
+#: engines/kyra/eobcommon.cpp:331 engines/kyra/lol.cpp:481
+msgid "Move Forward"
+msgstr "Ðñï÷þñçóå ÌðñïóôÜ"
+
+#: engines/kyra/eobcommon.cpp:332 engines/kyra/lol.cpp:482
+msgid "Move Back"
+msgstr "Ðñï÷þñçóå Ðßóù"
+
+#: engines/kyra/eobcommon.cpp:333
+msgid "Move Left"
+msgstr "Ðñï÷þñçóå ÁñéóôåñÜ"
+
+#: engines/kyra/eobcommon.cpp:334
+msgid "Move Right"
+msgstr "Ðñï÷þñçóå ÄåîéÜ"
+
+#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
+#: engines/pegasus/pegasus.cpp:2509
+msgid "Turn Left"
+msgstr "Óôñßøå ÁñéóôåñÜ"
+
+#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
+#: engines/pegasus/pegasus.cpp:2510
+msgid "Turn Right"
+msgstr "Óôñßøå ÄåîéÜ"
+
+#: engines/kyra/eobcommon.cpp:337
+msgid "Open/Close Inventory"
+msgstr "¶íïéãìá/Êëåßóéìï ÁíôéêåéìÝíùí"
+
+#: engines/kyra/eobcommon.cpp:338
+msgid "Switch Inventory/Character screen"
+msgstr "ÅíáëëáãÞ ïèüíçò ÁíôéêåéìÝíùí/×áñáêôÞñùí"
+
+#: engines/kyra/eobcommon.cpp:339
+msgid "Camp"
+msgstr "ÊáôáóêÞíùóå"
+
+#: engines/kyra/eobcommon.cpp:340
+msgid "Cast Spell"
+msgstr "ÊÜíå Îüñêé"
+
+#: engines/kyra/eobcommon.cpp:343
+msgid "Spell Level 1"
+msgstr "Îüñêé ÅðéðÝäïõ 1"
+
+#: engines/kyra/eobcommon.cpp:344
+msgid "Spell Level 2"
+msgstr "Îüñêé ÅðéðÝäïõ 2"
+
+#: engines/kyra/eobcommon.cpp:345
+msgid "Spell Level 3"
+msgstr "Îüñêé ÅðéðÝäïõ 3"
+
+#: engines/kyra/eobcommon.cpp:346
+msgid "Spell Level 4"
+msgstr "Îüñêé ÅðéðÝäïõ 4"
+
+#: engines/kyra/eobcommon.cpp:347
+msgid "Spell Level 5"
+msgstr "Îüñêé ÅðéðÝäïõ 5"
+
+#: engines/kyra/eobcommon.cpp:356
+msgid "Spell Level 6"
+msgstr "Îüñêé ÅðéðÝäïõ 6"
+
+#: engines/kyra/lol.cpp:478
+msgid "Attack 1"
+msgstr "Åðßèåóç 1"
+
+#: engines/kyra/lol.cpp:479
+msgid "Attack 2"
+msgstr "Åðßèåóç 2"
+
+#: engines/kyra/lol.cpp:480
+msgid "Attack 3"
+msgstr "Åðßèåóç 3"
+
+#: engines/kyra/lol.cpp:483
+msgid "Slide Left"
+msgstr "Ïëßóèçóç ÁñéóôåñÜ"
+
+#: engines/kyra/lol.cpp:484
+msgid "Slide Right"
+msgstr "Ïëßóèçóç ÄåîéÜ"
+
+#: engines/kyra/lol.cpp:487
+msgid "Rest"
+msgstr "ÁíÜðáõóç"
+
+#: engines/kyra/lol.cpp:488
+msgid "Options"
+msgstr "ÅðéëïãÝò"
+
+#: engines/kyra/lol.cpp:489
+msgid "Choose Spell"
+msgstr "ÅðéëÝîôå Îüñêé"
+
+#: engines/kyra/sound_midi.cpp:477
+msgid ""
+"You appear to be using a General MIDI device,\n"
+"but your game only supports Roland MT32 MIDI.\n"
+"We try to map the Roland MT32 instruments to\n"
+"General MIDI ones. It is still possible that\n"
+"some tracks sound incorrect."
+msgstr ""
+"Öáßíåôáé ðùò ÷ñçóéìïðïéåßôå ìéá óõóêåõÞ General MIDI,\n"
+"áëëÜ ôï ðáé÷íßäé óáò õðïóôçñßæåé ìüíï Roland MT32 MIDI.\n"
+"Ðñïóðáèïýìå íá ÷áñôïãñáöÞóïõìå ôá üñãáíá ôçò\n"
+"Roland MT32 óå áõôÜ ôïõ General MIDI. Åßíáé ðéèáíü üôé\n"
+"ïñéóìÝíá êïììÜôéá èá áêïýãïíôáé åóöáëìÝíá."
+
+#: engines/kyra/saveload_eob.cpp:557
+#, c-format
+msgid ""
+"The following original saved game file has been found in your game path:\n"
+"\n"
+"%s %s\n"
+"\n"
+"Do you wish to use this saved game file with ScummVM?\n"
+"\n"
+msgstr ""
+"Ôï áêüëïõèï áðïèçêåõìÝíï áñ÷åßï ôïõ áñ÷éêïý ðáé÷íéäéïý Ý÷åé âñåèåß óôï "
+"öÜêåëï ôïõ ðáé÷íéäéïý óáò:\n"
+"\n"
+"%s %s\n"
+"\n"
+"ÈÝëåôå íá ÷ñçóéìïðïéÞóåôå áõôü ôï áðïèçêåõìÝíï áñ÷åßï ðáé÷íéäéïý ìå ôï "
+"ScummVM;\n"
+
+#: engines/kyra/saveload_eob.cpp:590
+#, c-format
+msgid ""
+"A saved game file was found in the specified slot %d. Overwrite?\n"
+"\n"
+msgstr ""
+"¸íá áðïèçêåõìÝíï áñ÷åßï ðáé÷íéäéïý âñÝèçêå óôçí åðéëåãìÝíç èõñßäá %d. "
+"ÁíôéêáôÜóôáóç;\n"
+"\n"
+
+#: engines/kyra/saveload_eob.cpp:623
+#, 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"
+"need to open the ScummVM debug console and use the command "
+"'import_savefile'.\n"
+"\n"
+msgstr ""
+
+#: engines/mads/detection.cpp:91
+msgid "Easy mouse interface"
+msgstr "Åýêïëç äéåðáöÞ ðïíôéêéïý"
+
+#: engines/mads/detection.cpp:92
+msgid "Shows object names when hovering the mouse over them"
+msgstr ""
+"Åìöáíßæåé ôá ïíüìáôá ôùí áíôéêåéìÝíùí üôáí áéùñåßôáé ôï ðïíôßêé ðÜíù ôïõò"
+
+#: engines/mads/detection.cpp:101 engines/mads/detection.cpp:102
+msgid "Animated inventory items"
+msgstr "Êéíïýìåíá áíôéêåßìåíá"
+
+#: engines/mads/detection.cpp:111 engines/mads/detection.cpp:112
+msgid "Animated game interface"
+msgstr "Êéíïýìåíç äéåðáöÞ ðáé÷íéäéïý"
+
+#: engines/mads/detection.cpp:121 engines/mads/detection.cpp:122
+msgid "Naughty game mode"
+msgstr "Ëåéôïõñãßá ðáé÷íéäéïý ãéá Üôáêôïõò"
+
+#: engines/mohawk/detection.cpp:169
+msgid "Play the Myst fly by movie"
+msgstr ""
+
+#: engines/mohawk/detection.cpp:170
+msgid "The Myst fly by movie was not played by the original engine."
+msgstr ""
+
+#. I18N: Option for fast scene switching
+#: engines/mohawk/dialogs.cpp:181 engines/mohawk/dialogs.cpp:267
+msgid "~Z~ip Mode Activated"
+msgstr "Ëåéôïõñãßá ~Z~ip ÅíåñãïðïéçìÝíç"
+
+#: engines/mohawk/dialogs.cpp:182
+msgid "~T~ransitions Enabled"
+msgstr "~Ì~åôáâÜóåéò ÅíåñãïðïéçìÝíåò"
+
+#. I18N: Drop book page
+#: engines/mohawk/dialogs.cpp:184
+msgid "~D~rop Page"
+msgstr "~Ñ~ßîéìï Óåëßäáò"
+
+#: engines/mohawk/dialogs.cpp:188
+msgid "Show ~M~ap"
+msgstr "ÅìöÜíéóç ~×~Üñôç"
+
+#: engines/mohawk/dialogs.cpp:194
+msgid "Main Men~u~"
+msgstr "Êåíôñéêü Ìåíï~ý~"
+
+#: engines/mohawk/dialogs.cpp:268
+msgid "~W~ater Effect Enabled"
+msgstr "ÅöÝ ~Í~åñïý ÅíåñãïðïéçìÝíï"
+
+#: engines/mohawk/riven.cpp:150
+msgid ""
+"You're missing a Riven executable. The Windows executable is 'riven.exe' or "
+"'rivendmo.exe'. "
+msgstr ""
+"Ëåßðåé ôï åêôåëÝóéìï ôïõ Riven. Ôï åêôåëÝóéìï ãéá Windows åßíáé 'riven.exe' "
+"Þ 'rivendemo.exe'. "
+
+#: engines/mohawk/riven.cpp:151
+msgid ""
+"Using the 'arcriven.z' installer file also works. In addition, you can use "
+"the Mac 'Riven' executable."
+msgstr ""
+"Ç ÷ñÞóç ôïõ áñ÷åßïõ åãêáôÜóôáóçò 'arcriven.z' ëåéôïõñãåß åðßóçò. ÅðéðëÝïí, "
+"ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôï åêôåëÝóéìï ôïõ Mac 'Riven'."
+
+#: engines/mohawk/riven.cpp:162
+msgid ""
+"You're missing 'extras.mhk'. Using the 'arcriven.z' installer file also "
+"works."
+msgstr ""
+"Óáò ëåßðåé ôï 'extras.mhk'. Ç ÷ñÞóç ôïõ áñ÷åßïõ åãêáôÜóôáóçò 'arcriven.z' "
+"ëåéôïõñãåß åðßóçò."
+
+#: engines/mohawk/riven_external.cpp:213
+msgid ""
+"Exploration beyond this point available only within the full version of\n"
+"the game."
+msgstr ""
+"Ç åîåñåýíçóç ðÝñá áðü áõôü ôï óçìåßï åßíáé äéáèÝóéìç ìüíï ìÝóù ôçò\n"
+"ðëÞñïõò Ýêäïóçò ôïõ ðáé÷íéäéïý."
+
+#: engines/mohawk/riven_external.cpp:655
+msgid ""
+"At this point, the Riven Demo would\n"
+"ask if you would like to open a web browser\n"
+"to bring you to the Red Orb store to buy\n"
+"the game. ScummVM cannot do that and\n"
+"the site no longer exists."
+msgstr ""
+"Óå áõôü ôï óçìåßï, ç äïêéìáóôéêÞ Ýêäïóç ôïõ Riven\n"
+"èá óáò ñùôïýóå áí èÝëåôå íá áíïßîåôå Ýíá öõëëïìåôñçôÞ\n"
+"ãéá íá ìåôáâåßôå óôï çëåêôñïíéêü êáôÜóôçìá ôçò Red Orb\n"
+"ãéá íá áãïñÜóåôå ôï ðáé÷íßäé. Ôï ScummVM äå ìðïñåß íá\n"
+"ôï êÜíåé áõôü êáé ç éóôïóåëßäá äåí õðÜñ÷åé ðëÝïí."
+
+#: engines/mohawk/mohawk.cpp:61
+msgid "The game is paused. Press any key to continue."
+msgstr ""
+"Ôï ðáé÷íßäé âñßóêåôáé óå ðáýóç. ÐáôÞóôå ïðïéïäÞðïôå êïõìðß ãéá íá óõíå÷ßóåôå."
+
+#: engines/neverhood/detection.cpp:184
+msgid "Skip the Hall of Records storyboard scenes"
+msgstr ""
+
+#: engines/neverhood/detection.cpp:185
+msgid "Allows the player to skip past the Hall of Records storyboard scenes"
+msgstr ""
+
+#: engines/neverhood/detection.cpp:191
+msgid "Scale the making of videos to full screen"
+msgstr "ÊëéìÜêùóç ôùí ôáéíéþí äçìéïõñãßáò óå ðëÞñç ïèüíç"
+
+#: engines/neverhood/detection.cpp:192
+msgid "Scale the making of videos, so that they use the whole screen"
+msgstr "ÊëéìÜêùóç ôùí ôáéíéþí äçìéïõñãßáò, þóôå íá êáôáëáìâÜíïõí üëç ôçí ïèüíç"
+
+#: engines/parallaction/saveload.cpp:130
+#, c-format
+msgid ""
+"Can't save game in slot %i\n"
+"\n"
+msgstr ""
+"Äåí Þôáí äõíáôÞ ç áðïèÞêåõóç ðáé÷íéäéïý óôç èõñßäá %i\n"
+"\n"
+
+#: engines/parallaction/saveload.cpp:194
+msgid "Load file"
+msgstr "Öüñôùóç áñ÷åßïõ"
+
+#: engines/parallaction/saveload.cpp:201
+msgid "Loading game..."
+msgstr "Öüñôùóç ðáé÷íéäéïý..."
+
+#: engines/parallaction/saveload.cpp:209
+msgid "Save file"
+msgstr "ÁðïèÞêåõóç áñ÷åßïõ"
+
+#: engines/parallaction/saveload.cpp:216
+msgid "Saving game..."
+msgstr "ÁðïèÞêåõóç ðáé÷íéäéïý..."
+
+#: engines/parallaction/saveload.cpp:269
+msgid ""
+"ScummVM found that you have old saved games for Nippon Safes that should be "
+"renamed.\n"
+"The old names are no longer supported, so you will not be able to load your "
+"games if you don't convert them.\n"
+"\n"
+"Press OK to convert them now, otherwise you will be asked next time.\n"
+msgstr ""
+"Ôï ScummVM äéáðßóôùóå üôé Ý÷åôå ðáëéÜ áðïèçêåõìÝíá ðáé÷íßäéá ôïõ Nippon "
+"Safes ôá ïðïßá èá ðñÝðåé íá ìåôïíïìáóôïýí.\n"
+"Ôá ðáëéÜ ïíüìáôá äåí õðïóôçñßæïíôáé ðëÝïí, ïðüôå äå èá åßóôå óå èÝóç íá "
+"öïñôþóåôå ôá ðáé÷íßäéá óáò, áí äåí ôá ìåôáôñÝøåôå.\n"
+"\n"
+"ÐáôÞóôå OK ãéá íá ôá ìåôáôñÝøåôå ôþñá, áëëéþò èá óáò æçôçèåß ôçí åðüìåíç "
+"öïñÜ.\n"
+
+#: engines/parallaction/saveload.cpp:316
+msgid "ScummVM successfully converted all your saved games."
+msgstr "Ôï ScummVM ìåôÜôñåøå åðéôõ÷þò üëá ôá áðïèçêåõìÝíá ðáé÷íßäéá óáò."
+
+#: engines/parallaction/saveload.cpp:318
+msgid ""
+"ScummVM printed some warnings in your console window and can't guarantee all "
+"your files have been converted.\n"
+"\n"
+"Please report to the team."
+msgstr ""
+"Ôï ScummVM ôýðùóå êÜðïéåò ðñïåéäïðïéÞóåéò óôï ðáñÜèõñï ôçò êïíóüëáò óáò êáé "
+"äåí ìðïñåß íá åããõçèåß üôé üëá ôá áñ÷åßá óáò Ý÷ïõí ìåôáôñáðåß.\n"
+"\n"
+"Ðáñáêáëïýìå áíáöÝñåôå óôçí ïìÜäá."
+
+#: engines/pegasus/pegasus.cpp:714
+msgid "Invalid file name for saving"
+msgstr "ÅóöáëìÝíï üíïìá áñ÷åßïõ ãéá áðïèÞêåõóç"
+
+#: engines/pegasus/pegasus.cpp:2507
+msgid "Up/Zoom In/Move Forward/Open Doors"
+msgstr "ÐÜíù/ÌåãÝèõíóç/Ìåôáêßíçóç Åìðñüò/¶íïéãìá Èõñþí"
+
+#: engines/pegasus/pegasus.cpp:2508
+msgid "Down/Zoom Out"
+msgstr "ÊÜôù/Óìßêñõíóç"
+
+#: engines/pegasus/pegasus.cpp:2511
+msgid "Display/Hide Inventory Tray"
+msgstr "ÅìöÜíéóç/Áðüêñõøç Äßóêïõ ÁíôéêåéìÝíùí"
+
+#: engines/pegasus/pegasus.cpp:2512
+msgid "Display/Hide Biochip Tray"
+msgstr "ÅìöÜíéóç/Áðüêñõøç Äßóêïõ Biochip"
+
+#: engines/pegasus/pegasus.cpp:2513
+msgid "Action/Select"
+msgstr "ÅíÝñãåéá/ÅðéëïãÞ"
+
+#: engines/pegasus/pegasus.cpp:2514
+msgid "Toggle Center Data Display"
+msgstr "ÅíáëëáãÞ ÊåíôñéêÞò Ðáñïõóßáóçò ÄåäïìÝíùí"
+
+#: engines/pegasus/pegasus.cpp:2515
+msgid "Display/Hide Info Screen"
+msgstr "ÐñïâïëÞ/Áðüêñõøç Ïèüíçò Ðëçñïöïñéþí"
+
+#: engines/pegasus/pegasus.cpp:2516
+msgid "Display/Hide Pause Menu"
+msgstr "ÐñïâïëÞ/Áðüêñõøç Ìåíïý Ðáýóçò"
+
+#: engines/queen/detection.cpp:56
+msgid "Alternative intro"
+msgstr "ÅíáëëáêôéêÞ åéóáãùãÞ"
+
+#: engines/queen/detection.cpp:57
+msgid "Use an alternative game intro (CD version only)"
+msgstr "×ñÞóç åíáëëáêôéêÞò åéóáãùãÞò ðáé÷íéäéïý (Ýêäïóç CD ìüíï)"
+
+#: engines/sci/detection.cpp:390
+msgid "Skip EGA dithering pass (full color backgrounds)"
+msgstr ""
+
+#: engines/sci/detection.cpp:391
+msgid "Skip dithering pass in EGA games, graphics are shown with full colors"
+msgstr ""
+
+#: engines/sci/detection.cpp:400
+msgid "Enable high resolution graphics"
+msgstr "Åíåñãïðïßçóç ãñáöéêþí õøçëÞò áíÜëõóçò"
+
+#: engines/sci/detection.cpp:401
+msgid "Enable high resolution graphics/content"
+msgstr "Åíåñãïðïßçóç ãñáöéêþí/ðåñéå÷ïìÝíïõ õøçëÞò áíÜëõóçò"
+
+#: engines/sci/detection.cpp:410
+msgid "Enable black-lined video"
+msgstr "Åíåñãïðïßçóç âßíôåï ìå ìáýñåò ãñáììÝò"
+
+#: engines/sci/detection.cpp:411
+msgid "Draw black lines over videos to increase their apparent sharpness"
+msgstr ""
+"Ó÷åäéáóìüò ìáýñùí ãñáììþí ðÜíù óôá âßíôåï ãéá ôçí áýîçóç ôçò ïîýôçôáò ôïõò"
+
+#: engines/sci/detection.cpp:420
+msgid "Prefer digital sound effects"
+msgstr "Ðñïôßìçóç øçöéáêþí áêïõóôéêþí åöå"
+
+#: engines/sci/detection.cpp:421
+msgid "Prefer digital sound effects instead of synthesized ones"
+msgstr "Ðñïôßìçóç øçöéáêþí ç÷çôéêþí åöÝ áíôß ãéá åöÝ äõíáìéêÞò óýíèåóçò"
+
+#: engines/sci/detection.cpp:440
+msgid "Use IMF/Yamaha FB-01 for MIDI output"
+msgstr "×ñÞóç IMF/Yamaha FB-01 ãéá Ýîïäï MIDI"
+
+#: engines/sci/detection.cpp:441
+msgid ""
+"Use an IBM Music Feature card or a Yamaha FB-01 FM synth module for MIDI "
+"output"
+msgstr ""
+"×ñÞóç ìéáò êÜñôáò IBM Music Feature Þ ìéá ìïíÜäá óýíèåóçò FM Yamaha FB-01 "
+"ãéá Ýîïäï MIDI"
+
+#: engines/sci/detection.cpp:451
+msgid "Use CD audio"
+msgstr "×ñÞóç Þ÷ïõ CD"
+
+#: engines/sci/detection.cpp:452
+msgid "Use CD audio instead of in-game audio, if available"
+msgstr "×ñÞóç Þ÷ïõ CD áíôß ãéá Þ÷ï ðáé÷íéäéïý, üðïõ åßíáé äéáèÝóéìï"
+
+#: engines/sci/detection.cpp:462
+msgid "Use Windows cursors"
+msgstr "×ñÞóç äñïìÝùí Windows"
+
+#: engines/sci/detection.cpp:463
+msgid ""
+"Use the Windows cursors (smaller and monochrome) instead of the DOS ones"
+msgstr ""
+"×ñÞóç äñïìÝùí Windows (ìéêñüôåñïé êáé áóðñüìáõñïé) áíôß ãéá ôïõò äñïìåßò DOS"
+
+#: engines/sci/detection.cpp:473
+msgid "Use silver cursors"
+msgstr "×ñÞóç áóçìÝíéùí äñïìÝùí"
+
+#: engines/sci/detection.cpp:474
+msgid ""
+"Use the alternate set of silver cursors instead of the normal golden ones"
+msgstr ""
+"×ñÞóç ôùí åíáëëáêôéêþí áóçìÝíéùí äñïìÝùí áíôß ôùí ðñïêáèïñéóìÝíùí ÷ñõóþí"
+
+#: engines/scumm/detection.cpp:1120
+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"
+"following data to the ScummVM team along with the name of the game you "
+"tried\n"
+"to add and its version, language, etc.:\n"
+msgstr ""
+"Ç Ýêäïóç ôïõ ðáé÷íéäéïý óáò öáßíåôáé íá åßíáé Üãíùóôç. Áí áõôÞ åßíáé *ÄÅÍ* "
+"åßíáé Ýêäïóç ôñïðïðïéçìÝíç\n"
+"áðü èáõìáóôÝò (åéäéêüôåñá, äåí åßíáé ìéá ìåôÜöñáóç öôéáãìÝíç áðü èáõìáóôÝò), "
+"ðáñáêáëþ, áíáöÝñåôå ôá\n"
+"áêüëïõèá äåäïìÝíá óôçí ïìÜäá ôïõ ScummVM ìáæß ìå ôï üíïìá ôïõ ðáé÷íéäéïý ðïõ "
+"ðñïóðáèÞóáôå\n"
+"íá ðñïóèÝóåôå êáé ôçí ÝêäïóÞ ôïõ, ôç ãëþóóá ôïõ, êëð.:\n"
+
+#: engines/scumm/detection.cpp:1138
+msgid ""
+"The Lite version of Putt-Putt Saves the Zoo iOS is not supported to avoid "
+"piracy.\n"
+"The full version is available for purchase from the iTunes Store."
+msgstr ""
+"Ç Lite Ýêäïóç ôïõ Putt-Putt Saves the Zoo ãéá iOS äåí õðïóôçñßæåôáé ãéá "
+"áðïöõãÞ ðåéñáôåßáò.\n"
+"Ç ðëÞñçò Ýêäïóç åßíáé äéáèÝóéìç ãéá áãïñÜ áðü ôï ÊáôÜóôçìá iTunes."
+
+#: engines/scumm/detection.cpp:1341
+msgid "Show Object Line"
+msgstr "ÐñïâïëÞ ÃñáììÞò ÁíôéêåéìÝíùí"
+
+#: engines/scumm/detection.cpp:1342
+msgid "Show the names of objects at the bottom of the screen"
+msgstr "Ðáñïõóßáóç ôùí ïíïìÜôùí ôùí áíôéêåéìÝíùí óôï êÜôù ìÝñïò ôçò ïèüíçò"
+
+#: engines/scumm/dialogs.cpp:172
+#, c-format
+msgid "Insert Disk %c and Press Button to Continue."
+msgstr "ÅéóÜãåôå ôç ÄéóêÝôá %c êáé ÐáôÞóôå Êïõìðß ãéá ÓõíÝ÷åéá."
+
+#: engines/scumm/dialogs.cpp:173
+#, c-format
+msgid "Unable to Find %s, (%c%d) Press Button."
+msgstr "Äåí Þôáí äõíáôÞ ç Åýñåóç ôïõ %s, (%c%d) ÐáôÞóôå Ýíá Êïõìðß."
+
+#: engines/scumm/dialogs.cpp:174
+#, c-format
+msgid "Error reading disk %c, (%c%d) Press Button."
+msgstr "ÓöÜëìá áíÜãíùóçò äßóêïõ %c, (%c%d) ÐáôÞóôå Ýíá Êïõìðß."
+
+#: engines/scumm/dialogs.cpp:175
+msgid "Game Paused. Press SPACE to Continue."
+msgstr "Ôï ðáé÷íßäé åßíáé óå Ðáýóç. ÐáôÞóôå ôï SPACE ãéá íá Óõíå÷ßóåôå."
+
+#. I18N: You may specify 'Yes' symbol at the end of the line, like this:
+#. "Moechten Sie wirklich neu starten? (J/N)J"
+#. Will react to J as 'Yes'
+#: engines/scumm/dialogs.cpp:179
+msgid "Are you sure you want to restart? (Y/N)Y"
+msgstr "Åßóôå óßãïõñïé üôé èÝëåôå íá ãßíåé åðáíåêêßíçóç; (Í/Ï)Í"
+
+#. I18N: you may specify 'Yes' symbol at the end of the line. See previous comment
+#: engines/scumm/dialogs.cpp:181
+msgid "Are you sure you want to quit? (Y/N)Y"
+msgstr "Åßóôå óßãïõñïé üôé èÝëåôå íá âãåßôå áðü ôï ðñüãñáììá; (N/O)N"
+
+#: engines/scumm/dialogs.cpp:186
+msgid "Play"
+msgstr "Ðáßîå"
+
+#: engines/scumm/dialogs.cpp:190
+msgid "Insert save/load game disk"
+msgstr "ÅéóÜãåôå äéóêÝôá áðïèÞêåõóçò/öüñôùóçò ðáé÷íéäéïý"
+
+#: engines/scumm/dialogs.cpp:191
+msgid "You must enter a name"
+msgstr "ÐñÝðåé íá åéóÜãåôå Ýíá üíïìá"
+
+#: engines/scumm/dialogs.cpp:192
+msgid "The game was NOT saved (disk full?)"
+msgstr "Ôï ðáé÷íßäé ÄÅÍ áðïèçêåýôçêå (ãåìÜôïò äßóêïò;)"
+
+#: engines/scumm/dialogs.cpp:193
+msgid "The game was NOT loaded"
+msgstr "Ôï ðáé÷íßäé ÄÅÍ öïñôþèçêå"
+
+#: engines/scumm/dialogs.cpp:194
+#, c-format
+msgid "Saving '%s'"
+msgstr "ÁðïèÞêåõóç '%s'"
+
+#: engines/scumm/dialogs.cpp:195
+#, c-format
+msgid "Loading '%s'"
+msgstr "Öüñôùóç '%s'"
+
+#: engines/scumm/dialogs.cpp:196
+msgid "Name your SAVE game"
+msgstr "ÏíïìÜóôå ôï ðáé÷íßäé ÁÐÏÈÇÊÅÕÓÇÓ"
+
+#: engines/scumm/dialogs.cpp:197
+msgid "Select a game to LOAD"
+msgstr "ÅðéëÝîôå Ýíá ðáé÷íßäé ãéá ÖÏÑÔÙÓÇ"
+
+#: engines/scumm/dialogs.cpp:198
+msgid "Game title)"
+msgstr "ôßôëïõ Ðáé÷íéäéïý)"
+
+#. I18N: Previous page button
+#: engines/scumm/dialogs.cpp:284
+msgid "~P~revious"
+msgstr "~Ð~ñïçãïýìåíï"
+
+#. I18N: Next page button
+#: engines/scumm/dialogs.cpp:286
+msgid "~N~ext"
+msgstr "~Å~ðüìåíï"
+
+#: engines/scumm/dialogs.cpp:598
+msgid "Speech Only"
+msgstr "Ìüíï Ïìéëßá"
+
+#: engines/scumm/dialogs.cpp:599
+msgid "Speech and Subtitles"
+msgstr "Ïìéëßá êáé Õðüôéôëïé"
+
+#: engines/scumm/dialogs.cpp:600
+msgid "Subtitles Only"
+msgstr "Ìüíï Õðüôéôëïé"
+
+#: engines/scumm/dialogs.cpp:608
+msgctxt "lowres"
+msgid "Speech & Subs"
+msgstr "Ïìéëßá & Õðüô"
+
+#: engines/scumm/dialogs.cpp:654
+msgid "Select a Proficiency Level."
+msgstr "ÅðéëÝîôå Åðßðåäï Éêáíüôçôáò."
+
+#: engines/scumm/dialogs.cpp:656
+msgid "Refer to your Loom(TM) manual for help."
+msgstr "ÁíáôñÝîôå óôï åã÷åéñßäéï Loom(TM) óáò ãéá âïÞèåéá."
+
+#: engines/scumm/dialogs.cpp:660
+msgid "Practice"
+msgstr "ÅîÜóêçóç"
+
+#: engines/scumm/dialogs.cpp:661
+msgid "Expert"
+msgstr "Åéäéêüò"
+
+#: engines/scumm/help.cpp:74
+msgid "Common keyboard commands:"
+msgstr "Óýíçèåéò åíôïëÝò ðëçêôñïëïãßïõ:"
+
+#: engines/scumm/help.cpp:75
+msgid "Save / Load dialog"
+msgstr "ÄéÜëïãïò ÁðïèÞêåõóçò / Öüñôùóçò"
+
+#: engines/scumm/help.cpp:77
+msgid "Skip line of text"
+msgstr "ÐáñÜëåéøç ãñáììÞò êåéìÝíïõ"
+
+#: engines/scumm/help.cpp:78
+msgid "Esc"
+msgstr "Esc"
+
+#: engines/scumm/help.cpp:78
+msgid "Skip cutscene"
+msgstr "ÐáñÜëåéøç ôáéíßáò"
+
+#: engines/scumm/help.cpp:79
+msgid "Space"
+msgstr "Space"
+
+#: engines/scumm/help.cpp:79
+msgid "Pause game"
+msgstr "Ðáýóç ðáé÷íéäéïý"
+
+#: engines/scumm/help.cpp:80 engines/scumm/help.cpp:85
+#: engines/scumm/help.cpp:96 engines/scumm/help.cpp:97
+#: engines/scumm/help.cpp:98 engines/scumm/help.cpp:99
+#: engines/scumm/help.cpp:100 engines/scumm/help.cpp:101
+#: engines/scumm/help.cpp:102 engines/scumm/help.cpp:103
+msgid "Ctrl"
+msgstr "Ctrl"
+
+#: engines/scumm/help.cpp:80
+msgid "Load saved game 1-10"
+msgstr "Öüñôùóç áðïèçêåõìÝíïõ ðáé÷íéäéïý 1-10"
+
+#: engines/scumm/help.cpp:81 engines/scumm/help.cpp:85
+#: engines/scumm/help.cpp:87 engines/scumm/help.cpp:101
+#: engines/scumm/help.cpp:102 engines/scumm/help.cpp:103
+msgid "Alt"
+msgstr "Alt"
+
+#: engines/scumm/help.cpp:81
+msgid "Save game 1-10"
+msgstr "ÁðïèÞêåõóç ðáé÷íéäéïý 1-10"
+
+#: engines/scumm/help.cpp:87 engines/scumm/help.cpp:90
+msgid "Enter"
+msgstr "Enter"
+
+#: engines/scumm/help.cpp:88
+msgid "Music volume up / down"
+msgstr "¸íôáóç ìïõóéêÞò ðÜíù / êÜôù"
+
+#: engines/scumm/help.cpp:89
+msgid "Text speed slower / faster"
+msgstr "Ôá÷ýôçôá êåéìÝíïõ ðéï áñãÞ / ðéï ãñÞãïñç"
+
+#: engines/scumm/help.cpp:90
+msgid "Simulate left mouse button"
+msgstr "Åîïìïßùóç áñéóôåñïý êïõìðéïý ðïíôéêéïý"
+
+#: engines/scumm/help.cpp:91
+msgid "Tab"
+msgstr "Tab"
+
+#: engines/scumm/help.cpp:91
+msgid "Simulate right mouse button"
+msgstr "Åîïìïßùóç äåîéïý êïõìðéïý ðïíôéêéïý"
+
+#: engines/scumm/help.cpp:94
+msgid "Special keyboard commands:"
+msgstr "ÅéäéêÝò åíôïëÝò ðëçêôñïëïãßïõ:"
+
+#: engines/scumm/help.cpp:95
+msgid "Show / Hide console"
+msgstr "ÅìöÜíéóç / Áðüêñõøç êïíóüëáò"
+
+#: engines/scumm/help.cpp:96
+msgid "Start the debugger"
+msgstr "Åêêßíçóç ôïõ åíôïðéóìïý óöáëìÜôùí"
+
+#: engines/scumm/help.cpp:97
+msgid "Show memory consumption"
+msgstr "ÅìöÜíéóç êáôáíÜëùóçò ìíÞìçò"
+
+#: engines/scumm/help.cpp:98
+msgid "Run in fast mode (*)"
+msgstr "ÅêôÝëåóç óå ãñÞãïñç ëåéôïõñãßá (*)"
+
+#: engines/scumm/help.cpp:99
+msgid "Run in really fast mode (*)"
+msgstr "ÅêôÝëåóç óå ðïëý ãñÞãïñç ëåéôïõñãßá (*)"
+
+#: engines/scumm/help.cpp:100
+msgid "Toggle mouse capture"
+msgstr "ÅíáëëáãÞ êñÜôçóçò ðïíôéêéïý"
+
+#: engines/scumm/help.cpp:101
+msgid "Switch between graphics filters"
+msgstr "ÅíáëëáãÞ ìåôáîý ößëôñùí ãñáöéêþí"
+
+#: engines/scumm/help.cpp:102
+msgid "Increase / Decrease scale factor"
+msgstr "Áýîçóç / Ìåßùóç óõíôåëåóôÞ êëßìáêáò"
+
+#: engines/scumm/help.cpp:103
+msgid "Toggle aspect-ratio correction"
+msgstr "ÅíáëëáãÞ äéüñèùóçò áíáëïãßáò äéáóôÜóåùí"
+
+#: engines/scumm/help.cpp:108
+msgid "* Note that using ctrl-f and"
+msgstr "* Íá óçìåéùèåß üôé ç ÷ñÞóç ôïõ ctrl-f"
+
+#: engines/scumm/help.cpp:109
+msgid " ctrl-g are not recommended"
+msgstr " êáé ôïõ ctrl-g äå óõíßóôáôáé, ìéá"
+
+#: engines/scumm/help.cpp:110
+msgid " since they may cause crashes"
+msgstr " êáé ìðïñåß íá ðñïêáëÝóïõí êïëëÞìáôá"
+
+#: engines/scumm/help.cpp:111
+msgid " or incorrect game behavior."
+msgstr " Þ åóöáëìÝíç óõìðåñéöïñÜ ðáé÷íéäéþí."
+
+#: engines/scumm/help.cpp:115
+msgid "Spinning drafts on the keyboard:"
+msgstr ""
+
+#: engines/scumm/help.cpp:117
+msgid "Main game controls:"
+msgstr "Êýñéïé ÷åéñéóìïß ðáé÷íéäéïý:"
+
+#: engines/scumm/help.cpp:122 engines/scumm/help.cpp:137
+#: engines/scumm/help.cpp:162
+msgid "Push"
+msgstr "Óðñþîå"
+
+#: engines/scumm/help.cpp:123 engines/scumm/help.cpp:138
+#: engines/scumm/help.cpp:163
+msgid "Pull"
+msgstr "ÔñÜâçîå"
+
+#: engines/scumm/help.cpp:124 engines/scumm/help.cpp:139
+#: engines/scumm/help.cpp:164 engines/scumm/help.cpp:198
+#: engines/scumm/help.cpp:208
+msgid "Give"
+msgstr "Äþóå"
+
+#: engines/scumm/help.cpp:125 engines/scumm/help.cpp:140
+#: engines/scumm/help.cpp:165 engines/scumm/help.cpp:191
+#: engines/scumm/help.cpp:209
+msgid "Open"
+msgstr "¶íïéîå"
+
+#: engines/scumm/help.cpp:127
+msgid "Go to"
+msgstr "ÌåôÜâáóç óå"
+
+#: engines/scumm/help.cpp:128
+msgid "Get"
+msgstr "ÐÜñå"
+
+#: engines/scumm/help.cpp:129 engines/scumm/help.cpp:153
+#: engines/scumm/help.cpp:171 engines/scumm/help.cpp:199
+#: engines/scumm/help.cpp:214 engines/scumm/help.cpp:225
+#: engines/scumm/help.cpp:251
+msgid "Use"
+msgstr "×ñÞóç"
+
+#: engines/scumm/help.cpp:130 engines/scumm/help.cpp:142
+msgid "Read"
+msgstr "ÄéÜâáóå"
+
+#: engines/scumm/help.cpp:131 engines/scumm/help.cpp:148
+msgid "New kid"
+msgstr "ÍÝï ðáéäß"
+
+#: engines/scumm/help.cpp:132 engines/scumm/help.cpp:154
+#: engines/scumm/help.cpp:172
+msgid "Turn on"
+msgstr "¶íáøå"
+
+#: engines/scumm/help.cpp:133 engines/scumm/help.cpp:155
+#: engines/scumm/help.cpp:173
+msgid "Turn off"
+msgstr "ÓâÞóå"
+
+#: engines/scumm/help.cpp:143 engines/scumm/help.cpp:168
+#: engines/scumm/help.cpp:195
+msgid "Walk to"
+msgstr "ÐåñðÜôçóå óå"
+
+#: engines/scumm/help.cpp:144 engines/scumm/help.cpp:169
+#: engines/scumm/help.cpp:196 engines/scumm/help.cpp:211
+#: engines/scumm/help.cpp:228
+msgid "Pick up"
+msgstr "ÌÜæåøå"
+
+#: engines/scumm/help.cpp:145 engines/scumm/help.cpp:170
+msgid "What is"
+msgstr "Ôé åßíáé"
+
+#: engines/scumm/help.cpp:147
+msgid "Unlock"
+msgstr "Îåêëåßäùóå"
+
+#: engines/scumm/help.cpp:150
+msgid "Put on"
+msgstr "Öüñåóå"
+
+#: engines/scumm/help.cpp:151
+msgid "Take off"
+msgstr "ÂãÜëå"
+
+#: engines/scumm/help.cpp:157
+msgid "Fix"
+msgstr "Äéüñèùóå"
+
+#: engines/scumm/help.cpp:159
+msgid "Switch"
+msgstr "¶ëëáîå"
+
+#: engines/scumm/help.cpp:167 engines/scumm/help.cpp:229
+msgid "Look"
+msgstr "Êïßôáîå"
+
+#: engines/scumm/help.cpp:174 engines/scumm/help.cpp:224
+msgid "Talk"
+msgstr "Ìßëá"
+
+#: engines/scumm/help.cpp:175
+msgid "Travel"
+msgstr "Ôáîßäåøå"
+
+#: engines/scumm/help.cpp:176
+msgid "To Henry / To Indy"
+msgstr "Óôï ×Ýíñõ / Óôïí ºíôõ"
+
+#. I18N: These are different musical notes
+#: engines/scumm/help.cpp:180
+msgid "play C minor on distaff"
+msgstr "ðáßîå C åëÜóóïíá óôç ñüêá"
+
+#: engines/scumm/help.cpp:181
+msgid "play D on distaff"
+msgstr "ðáßîå D óôç ñüêá"
+
+#: engines/scumm/help.cpp:182
+msgid "play E on distaff"
+msgstr "ðáßîå E óôç ñüêá"
+
+#: engines/scumm/help.cpp:183
+msgid "play F on distaff"
+msgstr "ðáßîå F óôç ñüêá"
+
+#: engines/scumm/help.cpp:184
+msgid "play G on distaff"
+msgstr "ðáßîå G óôç ñüêá"
+
+#: engines/scumm/help.cpp:185
+msgid "play A on distaff"
+msgstr "ðáßîå A óôç ñüêá"
+
+#: engines/scumm/help.cpp:186
+msgid "play B on distaff"
+msgstr "ðáßîå B óôç ñüêá"
+
+#: engines/scumm/help.cpp:187
+msgid "play C major on distaff"
+msgstr "ðáßîå C ìåßæïíá óôç ñüêá"
+
+#: engines/scumm/help.cpp:193 engines/scumm/help.cpp:215
+msgid "puSh"
+msgstr "Óðñþîå (S)"
+
+#: engines/scumm/help.cpp:194 engines/scumm/help.cpp:216
+msgid "pull (Yank)"
+msgstr "ÔñÜâçîå (Y)"
+
+#: engines/scumm/help.cpp:197 engines/scumm/help.cpp:213
+#: engines/scumm/help.cpp:249
+msgid "Talk to"
+msgstr "Ìßëá ìå (T)"
+
+#: engines/scumm/help.cpp:200 engines/scumm/help.cpp:212
+msgid "Look at"
+msgstr "Êïßôáîå ôï"
+
+#: engines/scumm/help.cpp:201
+msgid "turn oN"
+msgstr "Üíáøå (N)"
+
+#: engines/scumm/help.cpp:202
+msgid "turn oFf"
+msgstr "óâÞóå (F)"
+
+#: engines/scumm/help.cpp:218
+msgid "KeyUp"
+msgstr "ÐëÞêôñï ðÜíù"
+
+#: engines/scumm/help.cpp:218
+msgid "Highlight prev dialogue"
+msgstr "ÅðéóÞìáíóç ðñïçãïýìåíïõ äéáëüãïõ"
+
+#: engines/scumm/help.cpp:219
+msgid "KeyDown"
+msgstr "ÐëÞêôñï êÜôù"
+
+#: engines/scumm/help.cpp:219
+msgid "Highlight next dialogue"
+msgstr "ÅðéóÞìáíóç åðüìåíïõ äéáëüãïõ"
+
+#: engines/scumm/help.cpp:223
+msgid "Walk"
+msgstr "ÐåñðÜôçóå"
+
+#: engines/scumm/help.cpp:226 engines/scumm/help.cpp:235
+#: engines/scumm/help.cpp:242 engines/scumm/help.cpp:250
+msgid "Inventory"
+msgstr "Áíôéêåßìåíá"
+
+#: engines/scumm/help.cpp:227
+msgid "Object"
+msgstr "Áíôéêåßìåíï"
+
+#: engines/scumm/help.cpp:230
+msgid "Black and White / Color"
+msgstr "Áóðñüìáõñï / ¸ã÷ñùìï"
+
+#: engines/scumm/help.cpp:233
+msgid "Eyes"
+msgstr "ÌÜôéá"
+
+#: engines/scumm/help.cpp:234
+msgid "Tongue"
+msgstr "Ãëþóóá"
+
+#: engines/scumm/help.cpp:236
+msgid "Punch"
+msgstr "ÃñïèéÜ"
+
+#: engines/scumm/help.cpp:237
+msgid "Kick"
+msgstr "ÊëùôóéÜ"
+
+#: engines/scumm/help.cpp:240 engines/scumm/help.cpp:248
+msgid "Examine"
+msgstr "ÅîÝôáóå"
+
+#: engines/scumm/help.cpp:241
+msgid "Regular cursor"
+msgstr "Êáíïíéêüò äñïìÝáò"
+
+#. I18N: Comm is a communication device
+#: engines/scumm/help.cpp:244
+msgid "Comm"
+msgstr "Äéáâßâáóç"
+
+#: engines/scumm/help.cpp:247
+msgid "Save / Load / Options"
+msgstr "ÁðïèÞêåõóç / Öüñôùóç / ÅðéëïãÝò"
+
+#: engines/scumm/help.cpp:256
+msgid "Other game controls:"
+msgstr "¶ëëïé ÷åéñéóìïß ôïõ ðáé÷íéäéïý:"
+
+#: engines/scumm/help.cpp:258 engines/scumm/help.cpp:268
+msgid "Inventory:"
+msgstr "Áíôéêåßìåíá:"
+
+#: engines/scumm/help.cpp:259 engines/scumm/help.cpp:275
+msgid "Scroll list up"
+msgstr "Êýëéóç ëßóôáò ðÜíù"
+
+#: engines/scumm/help.cpp:260 engines/scumm/help.cpp:276
+msgid "Scroll list down"
+msgstr "Êýëéóç ëßóôáò êÜôù"
+
+#: engines/scumm/help.cpp:261 engines/scumm/help.cpp:269
+msgid "Upper left item"
+msgstr "ÐÜíù áñéóôåñÜ áíôéêåßìåíï"
+
+#: engines/scumm/help.cpp:262 engines/scumm/help.cpp:271
+msgid "Lower left item"
+msgstr "ÊÜôù áñéóôåñÜ áíôéêåßìåíï"
+
+#: engines/scumm/help.cpp:263 engines/scumm/help.cpp:272
+msgid "Upper right item"
+msgstr "ÐÜíù äåîéÜ áíôéêåßìåíï"
+
+#: engines/scumm/help.cpp:264 engines/scumm/help.cpp:274
+msgid "Lower right item"
+msgstr "ÊÜôù äåîéÜ áíôéêåßìåíï"
+
+#: engines/scumm/help.cpp:270
+msgid "Middle left item"
+msgstr "Ìåóáßï áñéóôåñÜ áíôéêåßìåíï"
+
+#: engines/scumm/help.cpp:273
+msgid "Middle right item"
+msgstr "Ìåóáßï äåîéÜ áíôéêåßìåíï"
+
+#: engines/scumm/help.cpp:280 engines/scumm/help.cpp:285
+msgid "Switching characters:"
+msgstr "ÅíáëëáãÞ ÷áñáêôÞñùí:"
+
+#: engines/scumm/help.cpp:282
+msgid "Second kid"
+msgstr "Äåýôåñï ðáéäß"
+
+#: engines/scumm/help.cpp:283
+msgid "Third kid"
+msgstr "Ôñßôï ðáéäß"
+
+#: engines/scumm/help.cpp:292
+msgid "Toggle Inventory/IQ Points display"
+msgstr "ÅíáëëáãÞ ÁíôéêåéìÝíùí/ðñïâïëÞ Ðüíôùí IQ"
+
+#: engines/scumm/help.cpp:293
+msgid "Toggle Keyboard/Mouse Fighting (*)"
+msgstr "ÅíáëëáãÞ ÐÜëçò Ðëçêôñïëïãßïõ/Ðïíôéêéïý (*)"
+
+#: engines/scumm/help.cpp:295
+msgid "* Keyboard Fighting is always on,"
+msgstr ""
+
+#: engines/scumm/help.cpp:296
+msgid " so despite the in-game message this"
+msgstr ""
+
+#: engines/scumm/help.cpp:297
+msgid " actually toggles Mouse Fighting Off/On"
+msgstr ""
+
+#: engines/scumm/help.cpp:304
+msgid "Fighting controls (numpad):"
+msgstr "×åéñéóìïß ìÜ÷çò (áñéè. ðëçêôñ.):"
+
+#: engines/scumm/help.cpp:305 engines/scumm/help.cpp:306
+#: engines/scumm/help.cpp:307
+msgid "Step back"
+msgstr "ÊÜíå ðßóù"
+
+#: engines/scumm/help.cpp:308
+msgid "Block high"
+msgstr "Õøçëü ìðëïêÜñéóìá"
+
+#: engines/scumm/help.cpp:309
+msgid "Block middle"
+msgstr "Ìåóáßï ìðëïêÜñéóìá"
+
+#: engines/scumm/help.cpp:310
+msgid "Block low"
+msgstr "×áìçëü ìðëïêÜñéóìá"
+
+#: engines/scumm/help.cpp:311
+msgid "Punch high"
+msgstr "ØçëÞ ìðïõíéÜ"
+
+#: engines/scumm/help.cpp:312
+msgid "Punch middle"
+msgstr "Ìåóáßá ìðïõíéÜ"
+
+#: engines/scumm/help.cpp:313
+msgid "Punch low"
+msgstr "×áìçëÞ ìðïõíéÜ"
+
+#: engines/scumm/help.cpp:315
+msgid "Sucker punch"
+msgstr "Áéöíéäéáóôéêü ÷ôýðçìá"
+
+#: engines/scumm/help.cpp:318
+msgid "These are for Indy on left."
+msgstr "ÁõôÜ éó÷ýïõí üôáí ï ºíôõ åßíáé óôá áñéóôåñÜ."
+
+#: engines/scumm/help.cpp:319
+msgid "When Indy is on the right,"
+msgstr "¼ôáí ï ºíôõ åßíáé óôá äåîéÜ,"
+
+#: engines/scumm/help.cpp:320
+msgid "7, 4, and 1 are switched with"
+msgstr "ôá 7, 4 êáé 1 åíáëëÜóóïíôáé ìå ôá"
+
+#: engines/scumm/help.cpp:321
+msgid "9, 6, and 3, respectively."
+msgstr "9, 6 êáé 3, áíôßóôïé÷á."
+
+#: engines/scumm/help.cpp:328
+msgid "Biplane controls (numpad):"
+msgstr "×åéñéóìüò äßðôåñïõ (áñéè. ðëçêôñ.):"
+
+#: engines/scumm/help.cpp:329
+msgid "Fly to upper left"
+msgstr "ÐÝôáîå ðÜíù áñéóôåñÜ"
+
+#: engines/scumm/help.cpp:330
+msgid "Fly to left"
+msgstr "ÐÝôáîå áñéóôåñÜ"
+
+#: engines/scumm/help.cpp:331
+msgid "Fly to lower left"
+msgstr "ÐÝôáîå êÜôù áñéóôåñÜ"
+
+#: engines/scumm/help.cpp:332
+msgid "Fly upwards"
+msgstr "ÐÝôáîå ðÜíù"
+
+#: engines/scumm/help.cpp:333
+msgid "Fly straight"
+msgstr "ÐÝôáîå åõèåßá"
+
+#: engines/scumm/help.cpp:334
+msgid "Fly down"
+msgstr "ÐÝôáîå êÜôù"
+
+#: engines/scumm/help.cpp:335
+msgid "Fly to upper right"
+msgstr "ÐÝôáîå ðÜíù äåîéÜ"
+
+#: engines/scumm/help.cpp:336
+msgid "Fly to right"
+msgstr "ÐÝôáîå äåîéÜ"
+
+#: engines/scumm/help.cpp:337
+msgid "Fly to lower right"
+msgstr "ÐÝôáîå êÜôù äåîéÜ"
+
+#: engines/scumm/input.cpp:578
+msgid "Snap scroll on"
+msgstr ""
+
+#: engines/scumm/input.cpp:580
+msgid "Snap scroll off"
+msgstr ""
+
+#: engines/scumm/input.cpp:593
+msgid "Music volume: "
+msgstr "¸íôáóç ìïõóéêÞò: "
+
+#: engines/scumm/input.cpp:610
+msgid "Subtitle speed: "
+msgstr "Ôá÷ýôçôá õðïôßôëùí: "
+
+#: engines/scumm/scumm.cpp:1880
+#, c-format
+msgid ""
+"Native MIDI support requires the Roland Upgrade from LucasArts,\n"
+"but %s is missing. Using AdLib instead."
+msgstr ""
+"Ç õðïóôÞñéîç native MIDI áðáéôåß ôçí ÁíáâÜèìéóç Roland áðü ôç LucasArts,\n"
+"áëëÜ ôï %s ëåßðåé. Ãßíåôáé ÷ñÞóç AdLib áíô 'áõôïý."
+
+#: engines/scumm/scumm.cpp:2733
+msgid ""
+"Usually, Maniac Mansion would start now. But for that to work, the game "
+"files for Maniac Mansion have to be in the 'Maniac' directory inside the "
+"Tentacle game directory, and the game has to be added to ScummVM."
+msgstr ""
+"ÊáíïíéêÜ, ôþñá èá îåêéíïýóå ôï Maniac Mansion. ÁëëÜ ãéá íá ëåéôïõñãÞóåé "
+"áõôü, ôá áñ÷åßá ðáé÷íéäéïý ôïõ Maniac Mansion èá ðñÝðåé íá åßíáé ìÝóá óôï "
+"öÜêåëï 'Maniac' ìÝóá óôï öÜêåëï ðáé÷íéäéïý ôïõ Tentacle, êáé ôï ðáé÷íßäé "
+"ðñÝðåé íá ðñïóôåèåß óôï ScummVM."
+
+#: engines/scumm/players/player_v3m.cpp:129
+msgid ""
+"Could not find the 'Loom' Macintosh executable to read the\n"
+"instruments from. Music will be disabled."
+msgstr ""
+
+#: engines/scumm/players/player_v5m.cpp:107
+msgid ""
+"Could not find the 'Monkey Island' Macintosh executable to read the\n"
+"instruments from. Music will be disabled."
+msgstr ""
+"Äåí Þôáí äõíáôÞ ç åýñåóç ôïõ åêôåëÝóéìïõ Macintosh 'Monkey Island' áðü\n"
+"ôï ïðïßï íá äéáâáóôïýí ôá üñãáíá ìïõóéêÞò. Ç ìïõóéêÞ èá áðåíåñãïðïéçèåß."
+
+#: engines/sherlock/detection.cpp:81
+msgid "Pixellated scene transitions"
+msgstr "ÐéîåëéáóìÝíåò ìåôáâÜóåéò óêçíÞò"
+
+#: engines/sherlock/detection.cpp:82
+msgid "When changing scenes, a randomized pixel transition is done"
+msgstr "Óôçí åíáëëáãÞ óêçíþí, ðñáãìáôïðïéåßôáé ìéá ôõ÷áßá ìåôÜâáóç pixel"
+
+#: engines/sherlock/detection.cpp:91
+msgid "Don't show hotspots when moving mouse"
+msgstr "Áðüêñõøç åíåñãþí ðåñéï÷þí üôáí ìåôáêéíåßôáé ï äñïìÝáò"
+
+#: engines/sherlock/detection.cpp:92
+msgid ""
+"Only show hotspot names after you actually click on a hotspot or action "
+"button"
+msgstr ""
+
+#: engines/sherlock/detection.cpp:101
+msgid "Show character portraits"
+msgstr "ÐñïâïëÞ ðïñôñÝôùí ÷áñáêôÞñùí"
+
+#: engines/sherlock/detection.cpp:102
+msgid "Show portraits for the characters when conversing"
+msgstr "ÅìöÜíéóç ðïñôñÝôùí ÷áñáêôÞñùí êáôÜ ôç äéÜñêåéá óõíïìéëßáò"
+
+#: engines/sherlock/detection.cpp:111
+msgid "Slide dialogs into view"
+msgstr "Êýëéóç äéáëüãùí üôáí åìöáíßæïíôáé"
+
+#: engines/sherlock/detection.cpp:112
+msgid "Slide UI dialogs into view, rather than simply showing them immediately"
+msgstr "Êýëéóç äéáëüãùí äéåðáöÞò üôáí åìöáíßæïíôáé, áíôß íá åìöáíßæïíôáé Üìåóá"
+
+#: engines/sherlock/detection.cpp:121
+msgid "Transparent windows"
+msgstr "ÄéáöáíÞ ðáñÜèõñá"
+
+#: engines/sherlock/detection.cpp:122
+msgid "Show windows with a partially transparent background"
+msgstr "ÅìöÜíéóç ðáñáèýñùí ìå Ýíá ìåñéêþò äéáöáíÝò öüíôï"
+
+#: engines/sky/compact.cpp:141
+msgid "The \"sky.cpt\" engine data file has an incorrect size."
+msgstr "Ôï áñ÷åßï äåäïìÝíùí ðáé÷íéäéïý \"sky.cpt\" Ý÷åé åóöáëìÝíï ìÝãåèïò."
+
+#: engines/sky/detection.cpp:44
+msgid "Floppy intro"
+msgstr "ÅéóáãùãÞ Ýêäïóçò äéóêÝôáò"
+
+#: engines/sky/detection.cpp:45
+msgid "Use the floppy version's intro (CD version only)"
+msgstr "×ñÞóç ôçò åéóáãùãÞò áðü ôçí Ýêäïóç äéóêÝôáò (Ýêäïóç CD ìüíï)"
+
+#: engines/sword1/animation.cpp:524
+#, c-format
+msgid "PSX stream cutscene '%s' cannot be played in paletted mode"
+msgstr ""
+
+#: engines/sword1/animation.cpp:545 engines/sword2/animation.cpp:445
+msgid "DXA cutscenes found but ScummVM has been built without zlib"
+msgstr ""
+"ÂñÝèçêáí ôáéíßåò DXA áëëÜ ôï ScummVM Ý÷åé öôéá÷ôåß ÷ùñßò õðïóôÞñéîç zlib"
+
+#: engines/sword1/animation.cpp:561 engines/sword2/animation.cpp:461
+msgid ""
+"MPEG-2 cutscenes found but ScummVM has been built without MPEG-2 support"
+msgstr ""
+"ÂñÝèçêáí âßíôåï MPEG-2 áëëÜ ôï ScummVM êáôáóêåõÜóôçêå ÷ùñßò õðïóôÞñéîç MPEG-2"
+
+#: engines/sword1/animation.cpp:568 engines/sword2/animation.cpp:470
+#, c-format
+msgid "Cutscene '%s' not found"
+msgstr ""
+
+#: engines/sword1/control.cpp:863
+msgid ""
+"ScummVM found that you have old saved games for Broken Sword 1 that should "
+"be converted.\n"
+"The old saved game format is no longer supported, so you will not be able to "
+"load your games if you don't convert them.\n"
+"\n"
+"Press OK to convert them now, otherwise you will be asked again the next "
+"time you start the game.\n"
+msgstr ""
+"Ôï ScummVM äéáðßóôùóå üôé Ý÷åôå ðáëéÜ áðïèçêåõìÝíá ðáé÷íßäéá ãéá ôï Broken "
+"Sword 1 ðïõ èá ðñÝðåé íá ìåôáôñáðïýí.\n"
+"Ç ðáëéÜ áðïèçêåõìÝíç ìïñöÞ ðáé÷íéäéïý äåí õðïóôçñßæåôáé ðëÝïí, ïðüôå äå èá "
+"åßóôå óå èÝóç íá öïñôþóåôå ôá ðáé÷íßäéá óáò, áí äåí ôá ìåôáôñÝøåôå.\n"
+"\n"
+"ÐáôÞóôå OK ãéá íá ôá ìåôáôñÝøåôå ôþñá, áëëéþò èá óáò æçôçèåß îáíÜ ôçí "
+"åðüìåíç öïñÜ ðïõ èá îåêéíÞóåôå ôï ðáé÷íßäé.\n"
+
+#: engines/sword1/control.cpp:1232
+#, c-format
+msgid ""
+"Target new saved game already exists!\n"
+"Would you like to keep the old saved game (%s) or the new one (%s)?\n"
+msgstr ""
+"Ôï íÝï áðïèçêåõìÝíï ðáé÷íßäé õðÜñ÷åé Þäç óôïí ðñïïñéóìü!\n"
+"ÈÝëåôå íá äéáôçñÞóåôå ôï ðáëéü áðïèçêåõìÝíï ðáé÷íßäé (%s) Þ ôï íÝï (%s);\n"
+
+#: engines/sword1/control.cpp:1235
+msgid "Keep the old one"
+msgstr "ÊñÜôçóå ôï ðáëéü"
+
+#: engines/sword1/control.cpp:1235
+msgid "Keep the new one"
+msgstr "ÊñÜôçóå ôï êáéíïýñãéï"
+
+#: engines/sword1/logic.cpp:1633
+msgid "This is the end of the Broken Sword 1 Demo"
+msgstr "Áõôü åßíáé ôï ôÝëïò ôçò åðßäåéîçò ôïõ Broken Sword 1"
+
+#: engines/sword2/animation.cpp:425
+msgid ""
+"PSX cutscenes found but ScummVM has been built without RGB color support"
+msgstr ""
+"ÂñÝèçêáí âßíôåï PSX áëëÜ ôï ScummVM äçìéïõñãÞèçêå ÷ùñßò õðïóôÞñéîç ÷ñþìáôïò "
+"RGB"
+
+#: engines/sword2/sword2.cpp:79
+msgid "Show object labels"
+msgstr "ÐñïâïëÞ åôéêåôþí áíôéêåéìÝíùí"
+
+#: engines/sword2/sword2.cpp:80
+msgid "Show labels for objects on mouse hover"
+msgstr "ÅìöÜíéóç åôéêåôþí ãéá áíôéêåßìåíá êáôÜ ôçí áéþñçóç ôïõ ðïíôéêéïý"
+
+#: engines/sword25/detection.cpp:46
+msgid "Use English speech"
+msgstr "×ñÞóç ÁããëéêÞò ïìéëßáò"
+
+#: engines/sword25/detection.cpp:47
+msgid ""
+"Use English speech instead of German for every language other than German"
+msgstr ""
+"×ñÞóç ÁããëéêÞò ïìéëßáò áíôß ãéá ÃåñìáíéêÞ ãéá êÜèå ãëþóóá åêôüò ôçò "
+"ÃåñìáíéêÞò"
+
+#: engines/teenagent/resources.cpp:118
+msgid ""
+"The teenagent.dat file is compressed and zlib hasn't been included in this "
+"executable. Please decompress it"
+msgstr ""
+"Ôï áñ÷åßï teenagent.dat åßíáé óõìðéåóìÝíï êáé ç zlib äåí Ý÷åé óõìðåñéëçöèåß "
+"óå áõôü ôï åêôåëÝóéìï. Ðáñáêáëþ áðïóõìðéÝóôå ôï"
+
+#: engines/tony/tony.cpp:258
+#, c-format
+msgid "Font variant not present in '%s' engine data file."
+msgstr ""
+"H ðáñáëëáãÞ ãñáììáôïóåéñÜò äåí õðÜñ÷åé óôï áñ÷åßï äåäïìÝíùí '%s' ôçò ìç÷áíÞò."
+
+#: engines/toon/toon.cpp:222
+#, c-format
+msgid "Saved game in slot #%d "
+msgstr "ÁðïèÞêåõóç ðáé÷íéäéïý óôç èõñßäá #%d "
+
+#: engines/toon/toon.cpp:226
+#, c-format
+msgid "Could not quick save into slot #%d"
+msgstr "Äåí Þôáí äõíáôÞ ç ãñÞãïñç áðïèÞêåõóç óôç èõñßäá #%d"
+
+#: engines/toon/toon.cpp:239
+#, c-format
+msgid "Saved game #%d quick loaded"
+msgstr "Ôï áðïèçêåõìÝíç ðáé÷íßäé #%d öïñôþèçêå ãñÞãïñá"
+
+#: engines/toon/toon.cpp:243
+#, c-format
+msgid "Could not quick load the saved game #%d"
+msgstr "Äåí Þôáí äõíáôÞ ç ãñÞãïñç öüñôùóç ôïõ áðïèçêåõìÝíïõ ðáé÷íéäéïý #%d"
+
+#: engines/wintermute/detection.cpp:58
+msgid "Show FPS-counter"
+msgstr "ÐñïâïëÞ ìåôñçôÞ FPS"
+
+#: engines/wintermute/detection.cpp:59
+msgid "Show the current number of frames per second in the upper left corner"
+msgstr ""
+"ÅìöÜíéóç ôïõ ôñÝ÷ïíôïò áñéèìïý êáñÝ áíÜ äåõôåñüëåðôï óôçí åðÜíù áñéóôåñÞ "
+"ãùíßá"
+
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr "Äéãñáììéêü öéëôñÜñéóìá óôïé÷åßùí (ÁÑÃÏ)"
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr "ÅöáñìïãÞ äéãñáììéêïý öéëôñáñßóìáôïò óå ìåìïíùìÝíá óôïé÷åßá"
+
+#: engines/zvision/detection_tables.h:52
+msgid "Use the original save/load screens instead of the ScummVM interface"
+msgstr ""
+
+#: engines/zvision/detection_tables.h:61
+msgid "Double FPS"
+msgstr "ÄéðëÜóéá FPS"
+
+#: engines/zvision/detection_tables.h:62
+msgid "Increase framerate from 30 to 60 FPS"
+msgstr ""
+
+#: engines/zvision/detection_tables.h:71
+msgid "Enable Venus"
+msgstr "Åíåñãïðïßçóç Áöñïäßôçò"
+
+#: engines/zvision/detection_tables.h:72
+msgid "Enable the Venus help system"
+msgstr "Åíåñãïðïßçóç ôïõ óõóôÞìáôïò âïÞèåéáò ôçò Áöñïäßôçò"
+
+#: engines/zvision/detection_tables.h:81
+msgid "Disable animation while turning"
+msgstr "Áðåíåñãïðïßçóç êßíçóçò êáôÜ ôçí ðåñéóôñïöÞ"
+
+#: engines/zvision/detection_tables.h:82
+msgid "Disable animation while turning in panorama mode"
+msgstr "Áðåíåñãïðïßçóç êßíçóçò êáôÜ ôçí ðåñéóôñïöÞ óå ëåéôïõñãßá ðáíïñÜìáôïò"
+
+#: engines/zvision/detection_tables.h:91
+msgid "Use high resolution MPEG video"
+msgstr "×ñÞóç MPEG âßíôåï õøçëÞò áíÜëõóçò"
+
+#: engines/zvision/detection_tables.h:92
+msgid "Use MPEG video from the DVD version instead of lower resolution AVI"
+msgstr ""
+"×ñÞóç âßíôåï MPEG áðü ôçí Ýêäïóç DVD áíôß ãéá ôï ÷áìçëüôåñçò áíÜëõóçò AVI"
+
+#: engines/zvision/file/save_manager.cpp:220
+#, 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 ""
+"Áõôü ôï áðïèçêåõìÝíï ðáé÷íßäé ÷ñçóéìïðïéåß Ýêäïóç%u, áëëÜ ç ìç÷áíÞ áõôÞ "
+"õðïóôçñßæåé ìüíï ìÝ÷ñé ôçí Ýêäïóç%d. Èá ÷ñåéáóôåßôå ìéá åíçìåñùìÝíç Ýêäïóç "
+"ôçò ìç÷áíÞò ãéá íá ÷ñçóéìïðïéÞóåôå áõôü ôï áðïèçêåõìÝíï ðáé÷íßäé."
diff --git a/po/es_ES.po b/po/es_ES.po
index aaea82720f..d7a0bf71dd 100644
--- a/po/es_ES.po
+++ b/po/es_ES.po
@@ -1,5 +1,5 @@
# Spanish translation for ScummVM.
-# Copyright (C) 2010-2016 The ScummVM Team
+# Copyright (C) 2010-2017 The ScummVM Team
# This file is distributed under the same license as the ScummVM package.
# Tomás Maidagan, 2011.
#
@@ -7,11 +7,11 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.4.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2016-12-19 02:13+0100\n"
-"PO-Revision-Date: 2016-12-06 22:15+0000\n"
-"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n"
-"Language-Team: Spanish <https://translations.scummvm.org/projects/scummvm/"
-"scummvm/es/>\n"
+"POT-Creation-Date: 2016-12-26 16:14+0100\n"
+"PO-Revision-Date: 2016-12-30 20:22+0000\n"
+"Last-Translator: Luis <luissagasta@gmail.com>\n"
+"Language-Team: Spanish "
+"<https://translations.scummvm.org/projects/scummvm/scummvm/es/>\n"
"Language: es_ES\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
@@ -2759,7 +2759,7 @@ msgstr "Buscar actualizaciones..."
#: engines/toon/toon.cpp:4918
#, c-format
msgid "Unable to locate the '%s' engine data file."
-msgstr ""
+msgstr "No se puede localizar el archivo de datos del motor '%s'."
#: engines/access/resources.cpp:52 engines/drascula/drascula.cpp:979
#: engines/hugo/hugo.cpp:448 engines/lure/lure.cpp:73
@@ -2767,7 +2767,7 @@ msgstr ""
#: engines/toon/toon.cpp:4930
#, c-format
msgid "The '%s' engine data file is corrupt."
-msgstr ""
+msgstr "El archivo de datos del motor '%s' está corrupto."
#: engines/access/resources.cpp:61 engines/drascula/drascula.cpp:990
#: engines/hugo/hugo.cpp:458 engines/lure/lure.cpp:76
@@ -2778,6 +2778,8 @@ msgid ""
"Incorrect version of the '%s' engine data file found. Expected %d.%d but got "
"%d.%d."
msgstr ""
+"Se ha encontrado una versión incorrecta del archivo de datos del motor '%s'. "
+"Se esperaba %d.%d pero se encontró %d.%d."
#: engines/adl/detection.cpp:45 engines/adl/detection.cpp:55
msgid "Color mode"
@@ -3074,7 +3076,7 @@ msgstr "Abrir/Cerrar Inventario"
#: engines/kyra/eobcommon.cpp:338
msgid "Switch Inventory/Character screen"
-msgstr "Intercambiar pantalla de Inventario/Personaje"
+msgstr "Cambiar pantalla de Inventario/Personaje"
#: engines/kyra/eobcommon.cpp:339
msgid "Camp"
@@ -3196,7 +3198,7 @@ msgstr ""
#: engines/mads/detection.cpp:91
msgid "Easy mouse interface"
-msgstr "Interfaz de ratón fácil"
+msgstr "Interfaz de mouse sencilla"
#: engines/mads/detection.cpp:92
msgid "Shows object names when hovering the mouse over them"
@@ -3204,7 +3206,7 @@ msgstr "Muestra los nombres de los objetos al pasar el ratón"
#: engines/mads/detection.cpp:101 engines/mads/detection.cpp:102
msgid "Animated inventory items"
-msgstr "Objetos del inventario animados"
+msgstr "Items de inventario animados"
#: engines/mads/detection.cpp:111 engines/mads/detection.cpp:112
msgid "Animated game interface"
@@ -3212,7 +3214,7 @@ msgstr "Interfaz de juego animada"
#: engines/mads/detection.cpp:121 engines/mads/detection.cpp:122
msgid "Naughty game mode"
-msgstr "Modo de juego travieso"
+msgstr "Modo de juego picante"
#: engines/mohawk/detection.cpp:169
msgid "Play the Myst fly by movie"
@@ -3254,16 +3256,16 @@ msgid ""
"You're missing a Riven executable. The Windows executable is 'riven.exe' or "
"'rivendmo.exe'. "
msgstr ""
-"Falta el ejecutable de Riven. El ejecutable de Windows es 'riven.exe' o "
-"'rivendmo.exe'. "
+"El ejecutable de Riven no ha sido encontrado. El ejecutable de Windows es "
+"'riven.exe' o 'rivendmo.exe'. "
#: engines/mohawk/riven.cpp:151
msgid ""
"Using the 'arcriven.z' installer file also works. In addition, you can use "
"the Mac 'Riven' executable."
msgstr ""
-"También es posible usar el instalador 'arcriven.z'. Además, puedes usar el "
-"ejecutable de Mac 'Riven'."
+"Usar el archivo de instalacion 'arcriven.z' es funcional. Tambien puedes "
+"utilizar el ejecutable de Mac."
#: engines/mohawk/riven.cpp:162
msgid ""
@@ -3278,8 +3280,7 @@ msgid ""
"Exploration beyond this point available only within the full version of\n"
"the game."
msgstr ""
-"La exploración a partir de este punto solo está disponible en la versión\n"
-"completa del juego."
+"Exploracion mas alla de aquí solo esta disponible en la version completa."
#: engines/mohawk/riven_external.cpp:655
msgid ""
@@ -3289,11 +3290,11 @@ msgid ""
"the game. ScummVM cannot do that and\n"
"the site no longer exists."
msgstr ""
-"En este punto, la Demo de Riven\n"
-"preguntaría si quieres abrir un navegador\n"
-"para llevarte a la Red Orb store para comprar\n"
-"el juego. ScummVM no puede hacer eso y\n"
-"la página ya no existe."
+"En este punto, la demo de Riven te\n"
+"preguntaria si quisieras abrir un navegador de internet\n"
+"para llevarte a la tienda de Red Orb para\n"
+"comprar el juego. ScummVM no puede hacer eso y\n"
+"el sitio ya no existe."
#: engines/mohawk/mohawk.cpp:61
msgid "The game is paused. Press any key to continue."
@@ -3516,9 +3517,9 @@ msgid ""
"piracy.\n"
"The full version is available for purchase from the iTunes Store."
msgstr ""
-"La versión Lite de Putt-Putt Saves the Zoo iOS no está soportada para evitar "
-"la piratería.\n"
-"La versión completa está disponible para comprar en la tienda iTunes."
+"La version de prueba de Putt-Putt Saves the Zoo para IOS no esta soportada "
+"para prevenir pirateria\n"
+"La version completa puede ser comprada en la tienda de iTunes."
#: engines/scumm/detection.cpp:1341
msgid "Show Object Line"
@@ -4419,6 +4420,14 @@ msgid "Show the current number of frames per second in the upper left corner"
msgstr ""
"El número de fotogramas por segundo aparece en la esquina superior izquierda"
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr ""
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr ""
+
#: engines/zvision/detection_tables.h:52
msgid "Use the original save/load screens instead of the ScummVM interface"
msgstr ""
@@ -4453,10 +4462,9 @@ msgid "Use high resolution MPEG video"
msgstr "Usar vídeos 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 ""
-"Usar los vídeos MPEG de la versión DVD, en vez de los AVI de baja resolución"
+"Usar los vídeos MPEG de la versión DVD en vez de los AVI de baja resolución"
#: engines/zvision/file/save_manager.cpp:220
#, c-format
diff --git a/po/eu.po b/po/eu.po
index b5d3ba35b7..3201ad3cf2 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -1,5 +1,5 @@
# Basque translation for ScummVM.
-# Copyright (C) 2012-2016 The ScummVM Team
+# Copyright (C) 2012-2017 The ScummVM Team
# This file is distributed under the same license as the ScummVM package.
# Mikel Iturbe Urretxa <mikel@hamahiru.org>, 2012.
#
@@ -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: 2016-12-19 02:13+0100\n"
+"POT-Creation-Date: 2016-12-26 16:14+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/"
@@ -4402,6 +4402,14 @@ msgstr "Erakutsi FPS kontatzailea"
msgid "Show the current number of frames per second in the upper left corner"
msgstr "Erakutsi momentuko FPS (frames per second) goiko ezkerreko ertzean"
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr ""
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr ""
+
#: engines/zvision/detection_tables.h:52
msgid "Use the original save/load screens instead of the ScummVM interface"
msgstr ""
diff --git a/po/fi_FI.po b/po/fi_FI.po
index 139c031881..1474fe13a2 100644
--- a/po/fi_FI.po
+++ b/po/fi_FI.po
@@ -1,5 +1,5 @@
# Finnish translation for ScummVM.
-# Copyright (c) 2012-2016 The ScummVM Team
+# Copyright (c) 2012-2017 The ScummVM Team
# This file is distributed under the same license as the ScummVM package.
# Toni Saarela <saarela@gmail.com>, 2012.
#
@@ -7,11 +7,11 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.6.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2016-12-19 02:13+0100\n"
-"PO-Revision-Date: 2016-12-12 00:10+0000\n"
-"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n"
-"Language-Team: Finnish <https://translations.scummvm.org/projects/scummvm/"
-"scummvm/fi/>\n"
+"POT-Creation-Date: 2016-12-26 16:14+0100\n"
+"PO-Revision-Date: 2017-01-04 21:26+0000\n"
+"Last-Translator: Timo Mikkolainen <tmikkola@gmail.com>\n"
+"Language-Team: Finnish "
+"<https://translations.scummvm.org/projects/scummvm/scummvm/fi/>\n"
"Language: fi_FI\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
@@ -79,21 +79,20 @@ msgid "Choose"
msgstr "Valitse"
#: gui/downloaddialog.cpp:48
-#, fuzzy
msgid "Select directory where to download game data"
-msgstr "Valitse pelin kansio"
+msgstr "Valitse hakemisto pelilataukselle"
#: gui/downloaddialog.cpp:49 gui/editgamedialog.cpp:470 gui/launcher.cpp:197
msgid "Select directory with game data"
-msgstr "Valitse pelin kansio"
+msgstr "Valitse pelin hakemisto"
#: gui/downloaddialog.cpp:51 gui/downloaddialog.cpp:263
msgid "From: "
-msgstr ""
+msgstr "Lähde: "
#: gui/downloaddialog.cpp:52 gui/downloaddialog.cpp:264
msgid "To: "
-msgstr ""
+msgstr "Kohde: "
#: gui/downloaddialog.cpp:63
msgid "Cancel download"
@@ -113,6 +112,7 @@ msgid ""
"It looks like your connection is limited. Do you really want to download "
"files with it?"
msgstr ""
+"Yhteytesi vaikuttaa rajatulta. Haluatko varmasti ladata tiedostoja sillä?"
#: gui/downloaddialog.cpp:118 gui/downloaddialog.cpp:152
#: gui/filebrowser-dialog.cpp:132 gui/fluidsynth-dialog.cpp:217
@@ -149,6 +149,8 @@ msgid ""
"Cannot create a directory to download - the specified directory has a file "
"with the same name."
msgstr ""
+"Kansion luonti latausta varten epäonnistui - valitussa kansiossa on jo "
+"tiedosto samalla nimellä."
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:522
@@ -168,7 +170,7 @@ msgstr ""
#: engines/sword2/animation.cpp:461 engines/sword2/animation.cpp:471
#: engines/zvision/file/save_manager.cpp:224
msgid "OK"
-msgstr "Tallenna"
+msgstr "OK"
#: gui/downloaddialog.cpp:151
#, c-format
@@ -176,11 +178,13 @@ msgid ""
"The \"%s\" already exists in the specified directory.\n"
"Do you really want to download files into that directory?"
msgstr ""
+"\"%s\" on jo olemassa valitussa hakemistossa. Haluatko varmasti ladata "
+"tiedostoja tähän hakemistoon?"
#: gui/downloaddialog.cpp:251
#, c-format
msgid "Downloaded %s %s / %s %s"
-msgstr ""
+msgstr "Ladattu %s %s / %s %s"
#: gui/downloaddialog.cpp:258
#, c-format
@@ -257,7 +261,7 @@ msgstr "Alusta:"
#: gui/editgamedialog.cpp:176
msgid "Engine"
-msgstr "Moottori"
+msgstr "Pelimoottori"
#: gui/editgamedialog.cpp:184 gui/options.cpp:1147 gui/options.cpp:1232
msgid "Graphics"
@@ -399,21 +403,23 @@ msgstr "Oletus"
#: gui/editgamedialog.cpp:450 gui/options.cpp:1772
msgid "Select SoundFont"
-msgstr "Valitse äänifontti"
+msgstr "Valitse SoundFont"
#: gui/editgamedialog.cpp:489
msgid "Select additional game directory"
-msgstr "Valitse lisäkansio pelille"
+msgstr "Valitse lisähakemisto pelille"
#: gui/editgamedialog.cpp:502 gui/options.cpp:1695
msgid "Select directory for saved games"
-msgstr "Valitse kansio pelitallennuksille"
+msgstr "Valitse hakemisto pelitallennuksille"
#: gui/editgamedialog.cpp:508
msgid ""
"Saved games sync feature doesn't work with non-default directories. If you "
"want your saved games to sync, use default directory."
msgstr ""
+"Pelitallennusten synkronointiominaisuus toimii ainoastaa vakiohakemistoilla. "
+"Jos haluat synkronoida pelitallennuksesi, käytä vakiohakemistoa."
#: gui/editgamedialog.cpp:534
msgid "This game ID is already taken. Please choose another one."
@@ -421,11 +427,11 @@ msgstr "Pelin tunnus on jo käytössä. Valitse jokin muu."
#: gui/editrecorddialog.cpp:58
msgid "Author:"
-msgstr ""
+msgstr "Tekijä:"
#: gui/editrecorddialog.cpp:60
msgid "Notes:"
-msgstr ""
+msgstr "Merkinnät:"
#: gui/editrecorddialog.cpp:68 gui/predictivedialog.cpp:74
msgid "Ok"
@@ -433,11 +439,11 @@ msgstr "Ok"
#: gui/filebrowser-dialog.cpp:49
msgid "Choose file for loading"
-msgstr ""
+msgstr "Valitse ladattava tiedosto"
#: gui/filebrowser-dialog.cpp:49
msgid "Enter filename for saving"
-msgstr ""
+msgstr "Syötä tiedoston nimi tallennukselle"
#: gui/filebrowser-dialog.cpp:132
msgid "Do you really want to overwrite the file?"
@@ -448,9 +454,8 @@ msgid "Reverb"
msgstr "Kaiku"
#: gui/fluidsynth-dialog.cpp:70 gui/fluidsynth-dialog.cpp:102
-#, fuzzy
msgid "Active"
-msgstr " (Aktiivinen)"
+msgstr "Aktiivinen"
#: gui/fluidsynth-dialog.cpp:72
msgid "Room:"
@@ -458,7 +463,7 @@ msgstr "Huone:"
#: gui/fluidsynth-dialog.cpp:79
msgid "Damp:"
-msgstr ""
+msgstr "Vaimennus:"
#: gui/fluidsynth-dialog.cpp:86
msgid "Width:"
@@ -470,11 +475,11 @@ msgstr "Taso:"
#: gui/fluidsynth-dialog.cpp:100
msgid "Chorus"
-msgstr ""
+msgstr "Korus"
#: gui/fluidsynth-dialog.cpp:104
msgid "N:"
-msgstr ""
+msgstr "N:"
#: gui/fluidsynth-dialog.cpp:118
msgid "Speed:"
@@ -506,7 +511,7 @@ msgstr "Interpolaatio:"
#: gui/fluidsynth-dialog.cpp:143
msgid "None (fastest)"
-msgstr "ei päällä (nopein)"
+msgstr "Ei päällä (nopein)"
#: gui/fluidsynth-dialog.cpp:144
msgid "Linear"
@@ -522,11 +527,11 @@ msgstr "Seitsemännen asteen"
#: gui/fluidsynth-dialog.cpp:150
msgid "Reset"
-msgstr ""
+msgstr "Tyhjää valinnat"
#: gui/fluidsynth-dialog.cpp:150
msgid "Reset all FluidSynth settings to their default values."
-msgstr ""
+msgstr "Palauta FluidSynth vaikoasetukset."
#: gui/fluidsynth-dialog.cpp:217
msgid ""
@@ -700,7 +705,7 @@ msgstr ""
#: gui/launcher.cpp:365
msgid "This directory cannot be used yet, it is being downloaded into!"
-msgstr ""
+msgstr "Tätä kansiota ei voi käyttää vielä, siihen ladataan tiedostoja!"
#: gui/launcher.cpp:415
msgid "Do you really want to remove this game configuration?"
@@ -732,7 +737,7 @@ msgstr "Lisää monta..."
#: gui/launcher.cpp:710
msgid "Record..."
-msgstr ""
+msgstr "Nauhoita..."
#: gui/massadd.cpp:79 gui/massadd.cpp:82
msgid "... progress ..."
@@ -763,21 +768,19 @@ msgstr ""
#: gui/onscreendialog.cpp:101 gui/onscreendialog.cpp:103
msgid "Stop"
-msgstr ""
+msgstr "Pysäytä"
#: gui/onscreendialog.cpp:106
msgid "Edit record description"
-msgstr ""
+msgstr "Muokkaa nauhoituksen kuvausta"
#: gui/onscreendialog.cpp:108
-#, fuzzy
msgid "Switch to Game"
-msgstr "Vaihda"
+msgstr "Vaihda peliin"
#: gui/onscreendialog.cpp:110
-#, fuzzy
msgid "Fast replay"
-msgstr "Nopea moodi"
+msgstr "Nopea toisto"
#: gui/options.cpp:119 common/updates.cpp:56
msgid "Never"
@@ -842,9 +845,8 @@ msgid "the fullscreen setting could not be changed"
msgstr "kokoruututilaa ei voitu muuttaa"
#: gui/options.cpp:486
-#, fuzzy
msgid "the filtering setting could not be changed"
-msgstr "kokoruututilaa ei voitu muuttaa"
+msgstr "Suodatusasetusta ei voitu muuttaa"
#: gui/options.cpp:809
msgid "Graphics mode:"
@@ -864,13 +866,12 @@ msgid "Fullscreen mode"
msgstr "Kokoruututila"
#: gui/options.cpp:838
-#, fuzzy
msgid "Filter graphics"
-msgstr "Grafiikka"
+msgstr "Suodata grafiikka"
#: gui/options.cpp:838
msgid "Use linear filtering when scaling graphics"
-msgstr ""
+msgstr "Käytä bilineaarista suodatinta grafiikan skaalauksessa"
#: gui/options.cpp:841
msgid "Aspect ratio correction"
@@ -878,7 +879,7 @@ msgstr "Kuvasuhteen korjaus"
#: gui/options.cpp:841
msgid "Correct aspect ratio for 320x200 games"
-msgstr "Oikea kuvasuhde 320x200 peleille"
+msgstr "Korjaa kuvasuhde 320x200 peleille"
#: gui/options.cpp:849
msgid "Preferred Device:"
@@ -946,7 +947,7 @@ msgstr "Käytä ensimmäistä laitetta"
#: gui/options.cpp:934
msgid "SoundFont:"
-msgstr "Äänifontti:"
+msgstr "SoundFont:"
#: gui/options.cpp:934 gui/options.cpp:936 gui/options.cpp:937
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
@@ -956,7 +957,7 @@ msgstr ""
#: gui/options.cpp:936
msgctxt "lowres"
msgid "SoundFont:"
-msgstr "Äänifontti:"
+msgstr "SoundFont:"
#: gui/options.cpp:942
msgid "Mixed AdLib/MIDI mode"
@@ -996,15 +997,16 @@ msgid "True Roland MT-32 (no GM emulation)"
msgstr "Aito Roland MT-32 (ei GM emulointia)"
#: gui/options.cpp:965
-#, fuzzy
msgid "Roland GS Device (enable MT-32 mappings)"
-msgstr "Aito Roland MT-32 (ei GM emulointia)"
+msgstr "Roland GS Laite (aktivoi MT-32 mappaukset)"
#: gui/options.cpp:965
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
msgstr ""
+"Valitse jos haluat käyttää patch mappingia MT-32:n emultointiin Roland GS "
+"laitteella"
#: gui/options.cpp:974
msgid "Don't use Roland MT-32 music"
@@ -1028,7 +1030,7 @@ msgstr "Molemmat"
#: gui/options.cpp:1009
msgid "Subtitle speed:"
-msgstr "Tekstin nopeus:"
+msgstr "Tekstityksen nopeus:"
#: gui/options.cpp:1011
msgctxt "lowres"
@@ -1055,7 +1057,7 @@ msgstr "Näytä tekstitys ja käytä puhetta"
#: gui/options.cpp:1019
msgctxt "lowres"
msgid "Subtitle speed:"
-msgstr "Tekstin nopeus:"
+msgstr "Tekstityksen nopeus:"
#: gui/options.cpp:1035
msgid "Music volume:"
@@ -1156,15 +1158,15 @@ msgstr "ScummVM käyttöliittymän kieli"
#: gui/options.cpp:1381
msgid "Update check:"
-msgstr ""
+msgstr "Päivitystarkistus:"
#: gui/options.cpp:1381
msgid "How often to check ScummVM updates"
-msgstr ""
+msgstr "Kuinka usein tarkistaa onko ScummVM:ään päivityksiä"
#: gui/options.cpp:1393
msgid "Check now"
-msgstr ""
+msgstr "Tarkista nyt"
#: gui/options.cpp:1401
msgid "Cloud"
@@ -1177,15 +1179,15 @@ msgstr "Pilvi"
#: gui/options.cpp:1408
msgid "Storage:"
-msgstr ""
+msgstr "Tallennustila:"
#: gui/options.cpp:1408
msgid "Active cloud storage"
-msgstr ""
+msgstr "Aktiivinen pilvitallennus"
#: gui/options.cpp:1415 gui/options.cpp:1972
msgid "<none>"
-msgstr ""
+msgstr "<tyhjä>"
#: gui/options.cpp:1419 backends/platform/wii/options.cpp:114
msgid "Username:"
@@ -1193,7 +1195,7 @@ msgstr "Käyttäjänimi:"
#: gui/options.cpp:1419
msgid "Username used by this storage"
-msgstr ""
+msgstr "Tallennustilan käyttäjänimi"
#: gui/options.cpp:1422
msgid "Used space:"
@@ -1201,31 +1203,31 @@ msgstr "Käytetty tila:"
#: gui/options.cpp:1422
msgid "Space used by ScummVM's saved games on this storage"
-msgstr ""
+msgstr "ScummVM:n pelitallennusten käyttämä tila tallennustilassa"
#: gui/options.cpp:1425
msgid "Last sync time:"
-msgstr ""
+msgstr "Viimeisin synkronointi:"
#: gui/options.cpp:1425
msgid "When the last saved games sync for this storage occured"
-msgstr ""
+msgstr "Milloin pelitallennukset viimeksi synkronoitiin tähän tallennustilaan"
#: gui/options.cpp:1428 gui/storagewizarddialog.cpp:71
msgid "Connect"
-msgstr ""
+msgstr "Yhdistä"
#: gui/options.cpp:1428
msgid "Open wizard dialog to connect your cloud storage account"
-msgstr ""
+msgstr "Avaa velhodialogi pilvitilan tiliin kirjautumiseen"
#: gui/options.cpp:1429
msgid "Refresh"
-msgstr ""
+msgstr "Päivitä"
#: gui/options.cpp:1429
msgid "Refresh current cloud storage information (username and usage)"
-msgstr ""
+msgstr "Päivitä tämänhetkiset pilvitilan tiedot (käyttäjänimi ja käyttöaste)"
#: gui/options.cpp:1430
msgid "Download"
@@ -1233,36 +1235,32 @@ msgstr "Lataa"
#: gui/options.cpp:1430
msgid "Open downloads manager dialog"
-msgstr ""
+msgstr "Avaa lataustenhallintadialogi"
#: gui/options.cpp:1432
msgid "Run server"
-msgstr ""
+msgstr "Käynnistä palvelin"
#: gui/options.cpp:1432
msgid "Run local webserver"
-msgstr ""
+msgstr "Käynnistä paikallinen webpalvelin"
#: gui/options.cpp:1433 gui/options.cpp:2082
-#, fuzzy
msgid "Not running"
-msgstr "Virhe ajettaessa peliä:"
+msgstr "Ei käynnissä"
#: gui/options.cpp:1437
-#, fuzzy
msgid "/root/ Path:"
-msgstr "Lisäkansio:"
+msgstr "/root/-polku:"
#: gui/options.cpp:1437 gui/options.cpp:1439 gui/options.cpp:1440
-#, fuzzy
msgid "Specifies which directory the Files Manager can access"
-msgstr "Määrittää polun pelitallennuksille"
+msgstr "Määrittää hakemiston johon tiedostonhallinnalla on pääsy"
#: gui/options.cpp:1439
-#, fuzzy
msgctxt "lowres"
msgid "/root/ Path:"
-msgstr "Lisäkansio:"
+msgstr "/root/-polku:"
#: gui/options.cpp:1449
msgid "Server's port:"
@@ -1273,19 +1271,20 @@ msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
msgstr ""
+"Palvelimen käyttämä portti\n"
+"Autentikaatio palvelimella on mahdollista vain vakioportilla"
#: gui/options.cpp:1462
msgid "Apply"
-msgstr ""
+msgstr "Käytä"
#: gui/options.cpp:1628
-#, fuzzy
msgid "Failed to change cloud storage!"
-msgstr "Pelin tallentaminen epäonnistui."
+msgstr "Pilvitallennustilan vaihtaminen epäonnistui!"
#: gui/options.cpp:1631
msgid "Another cloud storage is already active."
-msgstr ""
+msgstr "Toinen pilvitila on jo aktiivinen."
#: gui/options.cpp:1667
msgid ""
@@ -1312,23 +1311,21 @@ msgid "Select directory for plugins"
msgstr "Valitse hakemisto plugineille"
#: gui/options.cpp:1744
-#, fuzzy
msgid "Select directory for Files Manager /root/"
-msgstr "Valitse hakemisto lisätiedostoille"
+msgstr "Valitse /root/ hakemisto tiedostonhallinnalle"
#: gui/options.cpp:1979
#, c-format
msgid "%llu bytes"
-msgstr ""
+msgstr "%llu tavua"
#: gui/options.cpp:1987
msgid "<right now>"
msgstr "<nyt>"
#: gui/options.cpp:1989
-#, fuzzy
msgid "<never>"
-msgstr "Ei koskaan"
+msgstr "<ei koskaan>"
#: gui/options.cpp:2073
msgid "Stop server"
@@ -1336,13 +1333,15 @@ msgstr "Pysäytä palvelin"
#: gui/options.cpp:2074
msgid "Stop local webserver"
-msgstr ""
+msgstr "Pysäytä paikallinen webpalvelin"
#: gui/options.cpp:2163
msgid ""
"Request failed.\n"
"Check your Internet connection."
msgstr ""
+"Pyyntö epäonnistui\n"
+"Tarkista verkkoyhteytesi."
#. I18N: You must leave "#" as is, only word 'next' is translatable
#: gui/predictivedialog.cpp:86
@@ -1354,9 +1353,8 @@ msgid "add"
msgstr "lisää"
#: gui/predictivedialog.cpp:92 gui/predictivedialog.cpp:167
-#, fuzzy
msgid "Delete char"
-msgstr "Poista"
+msgstr "Poista merkki"
#: gui/predictivedialog.cpp:97 gui/predictivedialog.cpp:171
msgid "<"
@@ -1379,7 +1377,7 @@ msgstr "* Abc"
#: gui/recorderdialog.cpp:63
msgid "Recorder or Playback Gameplay"
-msgstr ""
+msgstr "Nauhoitin tai Toista Tallennus"
#: gui/recorderdialog.cpp:68 gui/recorderdialog.cpp:155
#: gui/saveload-dialog.cpp:387 gui/saveload-dialog.cpp:443
@@ -1388,12 +1386,11 @@ msgstr "Poista"
#: gui/recorderdialog.cpp:70
msgid "Record"
-msgstr ""
+msgstr "Nauhoita"
#: gui/recorderdialog.cpp:71
-#, fuzzy
msgid "Playback"
-msgstr "Pelaa"
+msgstr "Toista"
#: gui/recorderdialog.cpp:73
msgid "Edit"
@@ -1402,25 +1399,22 @@ msgstr "Muokkaa"
#: gui/recorderdialog.cpp:85 gui/recorderdialog.cpp:242
#: gui/recorderdialog.cpp:252
msgid "Author: "
-msgstr ""
+msgstr "Tekijä: "
#: gui/recorderdialog.cpp:86 gui/recorderdialog.cpp:243
#: gui/recorderdialog.cpp:253
msgid "Notes: "
-msgstr ""
+msgstr "Merkinnät: "
#: gui/recorderdialog.cpp:154
-#, fuzzy
msgid "Do you really want to delete this record?"
-msgstr "Haluatko varmasti poistaa tämän pelitallennuksen?"
+msgstr "Haluatko varmasti poistaa tämän pelinauhoituksen?"
#: gui/recorderdialog.cpp:173
-#, fuzzy
msgid "Unknown Author"
-msgstr "Tuntematon virhe"
+msgstr "Tuntematon tekijä"
#: gui/remotebrowser.cpp:128
-#, fuzzy
msgid "ScummVM could not access the directory!"
msgstr "ScummVM ei voi avata kyseistä hakemistoa!"
@@ -1461,7 +1455,6 @@ msgid "Playtime: "
msgstr "Peliaika: "
#: gui/saveload-dialog.cpp:577 gui/saveload-dialog.cpp:665
-#, fuzzy
msgid "Untitled saved game"
msgstr "Nimetön pelitallennus"
@@ -1493,19 +1486,19 @@ msgstr "Anna kuvaus tallennukselle numero %d:"
#: gui/storagewizarddialog.cpp:55
#, c-format
msgid "%s Storage Connection Wizard"
-msgstr ""
+msgstr "%s Tallennustilan Yhdistämisvelho"
#: gui/storagewizarddialog.cpp:58
msgid "Navigate to the following URL:"
-msgstr ""
+msgstr "Siirry seuraavaan osoitteeseen:"
#: gui/storagewizarddialog.cpp:61
msgid "Obtain the code from the storage, enter it"
-msgstr ""
+msgstr "Hanki koodi tallennustilasta, syötä se"
#: gui/storagewizarddialog.cpp:62
msgid "in the following field and press 'Connect':"
-msgstr ""
+msgstr "seuraavasta kentästä ja paina 'Yhdistä':"
#: gui/storagewizarddialog.cpp:69
msgid "Open URL"
@@ -1517,33 +1510,33 @@ msgstr "Liitä"
#: gui/storagewizarddialog.cpp:70
msgid "Pastes clipboard contents into fields"
-msgstr ""
+msgstr "Liittää lekepöydän sisällön kenttiin"
#: gui/storagewizarddialog.cpp:78
msgid "You will be directed to ScummVM's page where"
-msgstr ""
+msgstr "Sinut ohjataan ScummVM:n sivuille jossa"
#: gui/storagewizarddialog.cpp:79
msgid "you should allow it to access your storage."
-msgstr ""
+msgstr "sinun pitää sallia sen pääsy tallennustilaasi."
#: gui/storagewizarddialog.cpp:112
msgid "Another Storage is active. Do you want to interrupt it?"
-msgstr ""
+msgstr "Toinen tallennustila on aktiivinen. Haluatko keskeyttää sen?"
#: gui/storagewizarddialog.cpp:121
msgid "Wait until current Storage finishes up and try again."
-msgstr ""
+msgstr "Odota kunnes aktiivinen Tallennus on valmis ja yritä sitten uudestaan."
#: gui/storagewizarddialog.cpp:182
#, c-format
msgid "Field %s has a mistake in it."
-msgstr ""
+msgstr "%s-kentässä on virhe."
#: gui/storagewizarddialog.cpp:184
#, c-format
msgid "Fields %s have mistakes in them."
-msgstr ""
+msgstr "Seuraavissa kentissä on virheitä: %s."
#: gui/storagewizarddialog.cpp:199
msgid "All OK!"
@@ -1558,6 +1551,8 @@ msgid ""
"Failed to open URL!\n"
"Please navigate to this page manually."
msgstr ""
+"Osoitteen avaaminen epäonnistui!\n"
+"Ole hyvä ja siirry osoitteeseen käsin."
#: gui/themebrowser.cpp:45
msgid "Select a Theme"
@@ -1573,23 +1568,20 @@ msgid "Disabled GFX"
msgstr "Disabloitu GFX"
#: gui/ThemeEngine.cpp:453
-#, fuzzy
msgid "Standard Renderer"
-msgstr "Standardirenderöijä (16 bpp)"
+msgstr "Standardirenderöijä"
#: gui/ThemeEngine.cpp:453 engines/scumm/dialogs.cpp:659
msgid "Standard"
msgstr "Standardi"
#: gui/ThemeEngine.cpp:455
-#, fuzzy
msgid "Antialiased Renderer"
-msgstr "Antialiasoitu renderöijä (16 bpp)"
+msgstr "Antialiasoitu renderöijä"
#: gui/ThemeEngine.cpp:455
-#, fuzzy
msgid "Antialiased"
-msgstr "Antialiasoitu (16 bpp)"
+msgstr "Antialiasoitu"
#: gui/updates-dialog.cpp:51
msgid ""
@@ -1598,10 +1590,14 @@ msgid ""
"\n"
"Would you like to enable this feature?"
msgstr ""
+"ScummVM tukee nyt automaattista päivitysten tarkistusta\n"
+"joka vaatii pääsyn internetiin\n"
+"\n"
+"Haluaisitko laittaa päälle tämän ominaisuuden?"
#: gui/updates-dialog.cpp:55
msgid "(You can always enable it in the options dialog on the Misc tab)"
-msgstr ""
+msgstr "(Voit aina laittaa sen päälle asetusvalikon \"Muut\"-välilehdestä)"
#: gui/updates-dialog.cpp:92
msgid "Check for updates automatically"
@@ -1700,9 +1696,8 @@ msgid "Could not find suitable engine plugin"
msgstr "Sopivaa pelimoottorin pluginia ei löytynyt"
#: common/error.cpp:68
-#, fuzzy
msgid "Engine plugin does not support saved games"
-msgstr "Pelimoottori ei tue tallennustiloja"
+msgstr "Pelimoottoriliitännäinen ei tue pelitallenteita"
#: common/error.cpp:71
msgid "User canceled"
@@ -1715,11 +1710,11 @@ msgstr "Tuntematon virhe"
#. I18N: Hercules is graphics card name
#: common/rendermode.cpp:35
msgid "Hercules Green"
-msgstr ""
+msgstr "Hercules vihreä"
#: common/rendermode.cpp:36
msgid "Hercules Amber"
-msgstr ""
+msgstr "Hercules keltainen"
#: common/rendermode.cpp:42
msgid "PC-9821 (256 Colors)"
@@ -1732,12 +1727,12 @@ msgstr "PC-9801 (16 Väriä)"
#: common/rendermode.cpp:73
msgctxt "lowres"
msgid "Hercules Green"
-msgstr ""
+msgstr "Hercules vihreä"
#: common/rendermode.cpp:74
msgctxt "lowres"
msgid "Hercules Amber"
-msgstr ""
+msgstr "Hercules keltainen"
#: common/updates.cpp:58
msgid "Daily"
@@ -1752,9 +1747,8 @@ msgid "Monthly"
msgstr "Kuukausittain"
#: common/updates.cpp:64
-#, fuzzy
msgid "<Bad value>"
-msgstr "Tyhjennä arvo"
+msgstr "<Huono arvo>"
#: engines/advancedDetector.cpp:335
#, c-format
@@ -1763,6 +1757,9 @@ msgid ""
"Please, report the following data to the ScummVM team along with name\n"
"of the game you tried to add and its version, language, etc.:"
msgstr ""
+"Peli kansiossa \"%s\" näyttää olevan tuntematon.\n"
+"Ole kiltti ja raportoi seuraavat tiedot ScummVM:n kehittäjille pelin nimen,\n"
+"version, kielen, yms. kera:"
#: engines/dialogs.cpp:85
msgid "~R~esume"
@@ -1844,13 +1841,13 @@ msgstr ""
"tiedosto saadaksesi lisätietoa."
#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
-#, 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."
msgstr ""
-"Pelitilan tallennus epäonnistui (%s)! Avaa LUEMINUT tiedosto saadaksesi "
-"lisätietoa."
+"Pelitilan tallennus epäonnistui (%s)! Konsultoi README-tiedostoa saadaksesi "
+"lisätietoa ja ohjeita avun hankkimiseen."
#: engines/dialogs.cpp:307 engines/mohawk/dialogs.cpp:100
#: engines/tsage/dialogs.cpp:112
@@ -1883,9 +1880,8 @@ msgid "Could not apply fullscreen setting."
msgstr "Kokoruututila-asetusta ei voi asettaa."
#: engines/engine.cpp:373
-#, fuzzy
msgid "Could not apply filtering setting."
-msgstr "Kokoruututila-asetusta ei voi asettaa."
+msgstr "Suodatusasetusta ei voitu ottaa käyttöön."
#: engines/engine.cpp:473
msgid ""
@@ -1914,13 +1910,13 @@ msgstr ""
"kuuluvat. Lue ohjeet LUEMINUT tiedostosta."
#: engines/engine.cpp:542
-#, 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."
msgstr ""
-"Pelitilan lataus epäonnistui (%s)! Avaa LUEMINUT tiedosto saadaksesi "
-"lisätietoa."
+"Pelitilan lataus epäonnistui (%s)! Konsultoi README-tiedostoa saadaksesi "
+"lisätietoa ja ohjeita avun hankkimiseen."
#: engines/engine.cpp:555
msgid ""
@@ -2011,7 +2007,7 @@ msgstr "Creative Music System-emulaattori"
#: audio/softsynth/fmtowns_pc98/towns_pc98_plugins.cpp:33
msgid "FM-Towns Audio"
-msgstr ""
+msgstr "FM-Towns Ääni"
#: audio/softsynth/fmtowns_pc98/towns_pc98_plugins.cpp:58
msgid "PC-98 Audio"
@@ -2043,13 +2039,15 @@ msgstr "Tallennuksien synkronointi valmis."
#: backends/cloud/storage.cpp:222
msgid "Saved games sync was cancelled."
-msgstr ""
+msgstr "Pelitallennusten synkronointi peruttiin."
#: backends/cloud/storage.cpp:224
msgid ""
"Saved games sync failed.\n"
"Check your Internet connection."
msgstr ""
+"Pelitallennusten synkronointi epäonnistui.\n"
+"Tarkista verkkoyhteytesi."
#: backends/cloud/storage.cpp:328
#, c-format
@@ -2057,6 +2055,8 @@ msgid ""
"Download complete.\n"
"Failed to download %u files."
msgstr ""
+"Lataus valmis.\n"
+"%u:n tiedoston lataus epäonnistui."
#: backends/cloud/storage.cpp:330
msgid "Download complete."
@@ -2130,9 +2130,8 @@ msgid "Clicking Disabled"
msgstr "Klikkaus pois päältä"
#: backends/events/openpandora/op-events.cpp:174
-#, fuzzy
msgid "Touchscreen 'Tap Mode' - Hover (DPad Clicks)"
-msgstr "Kosketusnäytön 'Tap moodi' - ei klikkausta"
+msgstr "Kosketusnäytön 'Tap moodi' - Hover (DPad klikkaus)"
#: backends/events/symbiansdl/symbiansdl-events.cpp:186
msgid "Do you want to quit ?"
@@ -2140,34 +2139,33 @@ msgstr "Haluatko lopettaa?"
#. I18N: Trackpad mode toggle status.
#: backends/events/webossdl/webossdl-events.cpp:308
-#, fuzzy
msgid "Trackpad mode is now"
-msgstr "Touchpad tila pois päältä"
+msgstr "Trackpad tila on nyt"
#. I18N: Trackpad mode on or off.
#. I18N: Auto-drag on or off.
#: backends/events/webossdl/webossdl-events.cpp:311
#: backends/events/webossdl/webossdl-events.cpp:338
msgid "ON"
-msgstr ""
+msgstr "PÄÄLLÄ"
#: backends/events/webossdl/webossdl-events.cpp:311
#: backends/events/webossdl/webossdl-events.cpp:338
msgid "OFF"
-msgstr ""
+msgstr "POIS"
#: backends/events/webossdl/webossdl-events.cpp:315
msgid "Swipe two fingers to the right to toggle."
-msgstr ""
+msgstr "Aktivoi pyyhkäisemällä kahdella sormella oikealle."
#. I18N: Auto-drag toggle status.
#: backends/events/webossdl/webossdl-events.cpp:335
msgid "Auto-drag mode is now"
-msgstr ""
+msgstr "Automaattiraahaustila on nyt"
#: backends/events/webossdl/webossdl-events.cpp:342
msgid "Swipe three fingers to the right to toggle."
-msgstr ""
+msgstr "Aktivoi pyyhkäisemällä kolmella sormella oikealle."
#: backends/graphics/opengl/opengl-graphics.cpp:146
msgid "OpenGL"
@@ -2224,7 +2222,7 @@ msgstr "Näppäinkartta:"
#: backends/keymapper/remap-dialog.cpp:67
msgid " (Effective)"
-msgstr ""
+msgstr " (Efektiivinen)"
#: backends/keymapper/remap-dialog.cpp:107
msgid " (Active)"
@@ -2295,7 +2293,7 @@ msgstr "Herkkyys"
#: backends/platform/ds/arm9/source/dsoptions.cpp:99
msgid "Initial top screen scale:"
-msgstr ""
+msgstr "Alustava ylänäytön skaala:"
#: backends/platform/ds/arm9/source/dsoptions.cpp:105
msgid "Main screen scaling:"
@@ -2323,7 +2321,7 @@ msgstr "Korkealuokkainen ääni (hidas) (buuttaus)"
#: backends/platform/ds/arm9/source/dsoptions.cpp:122
msgid "Disable power off"
-msgstr ""
+msgstr "Poista virran sammutus käytöstä"
#: backends/platform/ios7/ios7_osys_events.cpp:309
#: backends/platform/ios7/ios7_osys_events.cpp:519
@@ -2422,7 +2420,7 @@ msgstr "Alue"
#: backends/platform/wince/CEActionsPocket.cpp:54
#: backends/platform/wince/CEActionsSmartphone.cpp:48
msgid "Multi Function"
-msgstr ""
+msgstr "Monitoiminen"
#: backends/platform/symbian/src/SymbianActions.cpp:48
msgid "Swap character"
@@ -2458,7 +2456,7 @@ msgstr "Klikkaa oikealla kerran"
#: backends/platform/tizen/form.cpp:271
msgid "Move Only"
-msgstr ""
+msgstr "Vain siirto"
#: backends/platform/tizen/form.cpp:294
msgid "Escape Key"
@@ -2493,9 +2491,8 @@ msgid "[ Media ]"
msgstr "[ Media ]"
#: backends/platform/tizen/fs.cpp:275
-#, fuzzy
msgid "[ Shared ]"
-msgstr "Jako:"
+msgstr "[ Jaettu ]"
#: backends/platform/wii/options.cpp:51
msgid "Video"
@@ -2507,7 +2504,7 @@ msgstr "Nykyinen videotila:"
#: backends/platform/wii/options.cpp:56
msgid "Double-strike"
-msgstr ""
+msgstr "Lomittamaton"
#: backends/platform/wii/options.cpp:60
msgid "Horizontal underscan:"
@@ -2751,7 +2748,7 @@ msgstr "Tarkista päivitykset..."
#: engines/toon/toon.cpp:4918
#, c-format
msgid "Unable to locate the '%s' engine data file."
-msgstr ""
+msgstr "\"%s\" pelimoottorin datatiedostoa ei löydetty."
#: engines/access/resources.cpp:52 engines/drascula/drascula.cpp:979
#: engines/hugo/hugo.cpp:448 engines/lure/lure.cpp:73
@@ -2759,7 +2756,7 @@ msgstr ""
#: engines/toon/toon.cpp:4930
#, c-format
msgid "The '%s' engine data file is corrupt."
-msgstr ""
+msgstr "\"%s\" pelimoottorin datatiedosto on korruptoitunut."
#: engines/access/resources.cpp:61 engines/drascula/drascula.cpp:990
#: engines/hugo/hugo.cpp:458 engines/lure/lure.cpp:76
@@ -2770,6 +2767,8 @@ msgid ""
"Incorrect version of the '%s' engine data file found. Expected %d.%d but got "
"%d.%d."
msgstr ""
+"\"%s\" pelimoottorin datatiedostosta löytyi väärä versio. Odotettu versio "
+"%d.%d, löytynyt versio %d.%d."
#: engines/adl/detection.cpp:45 engines/adl/detection.cpp:55
msgid "Color mode"
@@ -2777,7 +2776,7 @@ msgstr "Värimoodi"
#: engines/adl/detection.cpp:46 engines/adl/detection.cpp:56
msgid "Use color graphics"
-msgstr ""
+msgstr "Käytä värigrafiikkaa"
#: engines/adl/detection.cpp:65
msgid "Scanlines"
@@ -2811,34 +2810,38 @@ msgid ""
"Use an alternative palette, common for all Amiga games. This was the old "
"behavior"
msgstr ""
+"Käytä vaihtoehtoista väripalettia, joka on yleinen kaikissa Amigapeleissä. "
+"Tämä on vanha toimintamalli"
#: engines/agi/detection.cpp:167
-#, fuzzy
msgid "Mouse support"
-msgstr "Ohita tuki"
+msgstr "Hiirituki"
#: engines/agi/detection.cpp:168
msgid ""
"Enables mouse support. Allows to use mouse for movement and in game menus."
-msgstr ""
+msgstr "Aktivoi hiirituen. Mahdollistaa hiiren käyttämisen pelivalikoissa."
#: engines/agi/detection.cpp:177
msgid "Use Hercules hires font"
-msgstr ""
+msgstr "Käytä korkearesoluutioista Hercules-fonttia"
#: engines/agi/detection.cpp:178
msgid "Uses Hercules hires font, when font file is available."
msgstr ""
+"Käyttää korkearesoluutioista Hercules-fonttia jos tiedosto on saatavilla."
#: engines/agi/detection.cpp:187
msgid "Pause when entering commands"
-msgstr ""
+msgstr "Pysäytä käskyjen syöttämisen ajaksi"
#: engines/agi/detection.cpp:188
msgid ""
"Shows a command prompt window and pauses the game (like in SCI) instead of a "
"real-time prompt."
msgstr ""
+"Näyttää komentokehoitteen ja pysäyttää pelin (kuten SCI:ssä) reaaliaikaisen "
+"kehoitteen sijaan."
#: engines/agi/saveload.cpp:774 engines/avalanche/parser.cpp:1888
#: engines/cge/events.cpp:83 engines/cge2/events.cpp:76
@@ -2867,7 +2870,7 @@ msgid "Restore"
msgstr "Lataa tallenne"
#: 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"
@@ -2878,7 +2881,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"
@@ -2889,7 +2892,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"
@@ -2905,13 +2908,12 @@ msgid "Cutscene file '%s' not found!"
msgstr "Videotiedostoa '%s' ei löytynyt!"
#: engines/cge/detection.cpp:105 engines/cge2/detection.cpp:101
-#, fuzzy
msgid "Color Blind Mode"
-msgstr "Klikkaus moodi"
+msgstr "Värisokeusmoodi"
#: engines/cge/detection.cpp:106 engines/cge2/detection.cpp:102
msgid "Enable Color Blind Mode by default"
-msgstr ""
+msgstr "Aktivoi värisokeusmoodi vakiona"
#: engines/drascula/saveload.cpp:47
msgid ""
@@ -2939,13 +2941,11 @@ msgstr "Näytä grafiikat käyttäen pelin kirkasta palettia"
#: 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 "Pelitallenteen lataaminen tiedostosta epäonnistui."
#: 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 "Pelin tallentaminen tiedostoon epäonnistui."
@@ -2954,13 +2954,12 @@ msgid "Failed to delete file."
msgstr "Tiedoston tuhoaminen ei onnistunut."
#: engines/groovie/detection.cpp:312
-#, fuzzy
msgid "Fast movie speed"
-msgstr "Nopea moodi"
+msgstr "Nopea videontoisto"
#: engines/groovie/detection.cpp:313
msgid "Play movies at an increased speed"
-msgstr ""
+msgstr "Toista videot nopeampana"
#: engines/groovie/script.cpp:407
msgid "Failed to save game"
@@ -2972,7 +2971,7 @@ msgstr "Hurmemoodi"
#: engines/hopkins/detection.cpp:77 engines/hopkins/detection.cpp:87
msgid "Enable Gore Mode when available"
-msgstr ""
+msgstr "Aktivoi hurmemoodi jos saatavilla"
#. I18N: Studio audience adds an applause and cheering sounds whenever
#. Malcolm makes a joke.
@@ -3041,12 +3040,10 @@ msgid "Move Back"
msgstr "Liiku taaksepäin"
#: engines/kyra/eobcommon.cpp:333
-#, fuzzy
msgid "Move Left"
msgstr "Liiku vasemmalle"
#: engines/kyra/eobcommon.cpp:334
-#, fuzzy
msgid "Move Right"
msgstr "Liiku oikealle"
@@ -3061,46 +3058,44 @@ msgid "Turn Right"
msgstr "Käänny oikealle"
#: engines/kyra/eobcommon.cpp:337
-#, fuzzy
msgid "Open/Close Inventory"
-msgstr "Tavarat"
+msgstr "Avaa/Sulje Inventorio"
#: engines/kyra/eobcommon.cpp:338
msgid "Switch Inventory/Character screen"
-msgstr ""
+msgstr "Vaihda Inventorio/Hahmo näyttö"
#: engines/kyra/eobcommon.cpp:339
msgid "Camp"
-msgstr ""
+msgstr "Leiriydy"
#: engines/kyra/eobcommon.cpp:340
-#, fuzzy
msgid "Cast Spell"
-msgstr "Valitse loitsu"
+msgstr "Lue loitsu"
#: engines/kyra/eobcommon.cpp:343
msgid "Spell Level 1"
-msgstr ""
+msgstr "Loitsutaso 1"
#: engines/kyra/eobcommon.cpp:344
msgid "Spell Level 2"
-msgstr ""
+msgstr "Loitsutaso 2"
#: engines/kyra/eobcommon.cpp:345
msgid "Spell Level 3"
-msgstr ""
+msgstr "Loitsutaso 3"
#: engines/kyra/eobcommon.cpp:346
msgid "Spell Level 4"
-msgstr ""
+msgstr "Loitsutaso 4"
#: engines/kyra/eobcommon.cpp:347
msgid "Spell Level 5"
-msgstr ""
+msgstr "Loitsutaso 5"
#: engines/kyra/eobcommon.cpp:356
msgid "Spell Level 6"
-msgstr ""
+msgstr "Loitsutaso 6"
#: engines/kyra/lol.cpp:478
msgid "Attack 1"
@@ -3156,6 +3151,12 @@ msgid ""
"Do you wish to use this saved game file with ScummVM?\n"
"\n"
msgstr ""
+"Seuraava alkuperäinen pelitallennus löydettiin pelipolustasi:\n"
+"\n"
+"%s %s\n"
+"\n"
+"Haluatko käyttää tätä tallennusta ScummVM:ssä?\n"
+"\n"
#: engines/kyra/saveload_eob.cpp:590
#, c-format
@@ -3163,6 +3164,8 @@ msgid ""
"A saved game file was found in the specified slot %d. Overwrite?\n"
"\n"
msgstr ""
+"Numerolla %d on jo pelitallennus. Ylikirjoitetaanko?\n"
+"\n"
#: engines/kyra/saveload_eob.cpp:623
#, c-format
@@ -3173,23 +3176,26 @@ msgid ""
"'import_savefile'.\n"
"\n"
msgstr ""
+"%d alkuperäistä pelitallennusta onnistuneesti ladattu ScummVM:ään.\n"
+"Jos haluat myöhemmin ladata pelitallennuksia käsin, joudut avaamaan\n"
+"ScummVM:n debug konsolin ja käyttämään komentoa \"import_savefile\".\n"
+"\n"
#: engines/mads/detection.cpp:91
msgid "Easy mouse interface"
-msgstr ""
+msgstr "Helppo hiirikäyttöliittymä"
#: engines/mads/detection.cpp:92
-#, fuzzy
msgid "Shows object names when hovering the mouse over them"
msgstr "Näytä esineiden kuvaus kohdistaessasi kursorin esineen ylle"
#: engines/mads/detection.cpp:101 engines/mads/detection.cpp:102
msgid "Animated inventory items"
-msgstr ""
+msgstr "Animoidut inventorioesineet"
#: engines/mads/detection.cpp:111 engines/mads/detection.cpp:112
msgid "Animated game interface"
-msgstr ""
+msgstr "Animoitu pelikäyttöliittymä"
#: engines/mads/detection.cpp:121 engines/mads/detection.cpp:122
msgid "Naughty game mode"
@@ -3197,11 +3203,11 @@ msgstr "Tuhma pelimoodi"
#: engines/mohawk/detection.cpp:169
msgid "Play the Myst fly by movie"
-msgstr ""
+msgstr "Soita Myst fly by-video"
#: engines/mohawk/detection.cpp:170
msgid "The Myst fly by movie was not played by the original engine."
-msgstr ""
+msgstr "Alkuperäinen pelimoottori ei toistanut Myst fly by-videota."
#. I18N: Option for fast scene switching
#: engines/mohawk/dialogs.cpp:181 engines/mohawk/dialogs.cpp:267
@@ -3210,22 +3216,20 @@ msgstr "~Z~ip moodi valittu"
#: engines/mohawk/dialogs.cpp:182
msgid "~T~ransitions Enabled"
-msgstr "Siirtymät päällä"
+msgstr "Siir~T~ymät päällä"
#. I18N: Drop book page
#: engines/mohawk/dialogs.cpp:184
msgid "~D~rop Page"
-msgstr "Pudota sivu"
+msgstr "Pu~D~ota sivu"
#: engines/mohawk/dialogs.cpp:188
-#, fuzzy
msgid "Show ~M~ap"
-msgstr "Näytä kartta"
+msgstr "Näytä kartta ~M~"
#: engines/mohawk/dialogs.cpp:194
-#, fuzzy
msgid "Main Men~u~"
-msgstr "Päävalikko"
+msgstr "Päävalikko ~u~"
#: engines/mohawk/dialogs.cpp:268
msgid "~W~ater Effect Enabled"
@@ -3236,24 +3240,30 @@ msgid ""
"You're missing a Riven executable. The Windows executable is 'riven.exe' or "
"'rivendmo.exe'. "
msgstr ""
+"Sinulta puuttuu Riven ohjelmatiedosto. WIndowsissa tiedosto on nimeltään \""
+"riven.exe\" tai \"rivendmo.exe\". "
#: engines/mohawk/riven.cpp:151
msgid ""
"Using the 'arcriven.z' installer file also works. In addition, you can use "
"the Mac 'Riven' executable."
msgstr ""
+"\"archriven.z\" asennustiedoston käyttö toimii myös. Lisäksi voit käyttää "
+"Macin \"Riven\"-ohjelmatiedostoa."
#: engines/mohawk/riven.cpp:162
msgid ""
"You're missing 'extras.mhk'. Using the 'arcriven.z' installer file also "
"works."
msgstr ""
+"Sinulta puuttuu \"extras.mhk\". \"archriven.z\" asennustiedoston käyttö "
+"toimii myös."
#: engines/mohawk/riven_external.cpp:213
msgid ""
"Exploration beyond this point available only within the full version of\n"
"the game."
-msgstr ""
+msgstr "Tutkiminen tätä pidemmälle on mahdollista vain pelin täysversiossa."
#: engines/mohawk/riven_external.cpp:655
msgid ""
@@ -3263,27 +3273,32 @@ msgid ""
"the game. ScummVM cannot do that and\n"
"the site no longer exists."
msgstr ""
+"Tässä kohtaa Rivenin demo kysyisi\n"
+"josko haluaisit avata selaimen\n"
+"viedäkseen sinut Red Orb-kauppaan\n"
+"josta voisit ostaa pelin. ScummVM ei\n"
+"voi tehdä sitä ja sivustoa ei ole enää\n"
+"olemassa."
#: engines/mohawk/mohawk.cpp:61
-#, fuzzy
msgid "The game is paused. Press any key to continue."
-msgstr "Pause. Paina välilyöntiä jatkaaksesi."
+msgstr "Pause. Paina mitä tahansa nappia jatkaaksesi."
#: engines/neverhood/detection.cpp:184
msgid "Skip the Hall of Records storyboard scenes"
-msgstr ""
+msgstr "Ohita Hall of Records storyboardkohtaukset"
#: engines/neverhood/detection.cpp:185
msgid "Allows the player to skip past the Hall of Records storyboard scenes"
-msgstr ""
+msgstr "Sallii pelaajan ohittaa Hall of Records storyboardkohtaukset"
#: engines/neverhood/detection.cpp:191
msgid "Scale the making of videos to full screen"
-msgstr ""
+msgstr "Skaalaa makin of-videot koko ruudun kokoiseksi"
#: engines/neverhood/detection.cpp:192
msgid "Scale the making of videos, so that they use the whole screen"
-msgstr ""
+msgstr "Skaalaa making of-videot niin että ne käyttävät koko ruudun tilan"
#: engines/parallaction/saveload.cpp:130
#, c-format
@@ -3295,25 +3310,22 @@ msgstr ""
"\n"
#: engines/parallaction/saveload.cpp:194
-#, fuzzy
msgid "Load file"
-msgstr "Lataa peli:"
+msgstr "Lataa tiedosto"
#: engines/parallaction/saveload.cpp:201
msgid "Loading game..."
msgstr "Ladataan peliä..."
#: engines/parallaction/saveload.cpp:209
-#, fuzzy
msgid "Save file"
-msgstr "Tallenna peli:"
+msgstr "Tallenna tiedosto"
#: engines/parallaction/saveload.cpp:216
msgid "Saving game..."
msgstr "Tallennetaan peliä..."
#: engines/parallaction/saveload.cpp:269
-#, fuzzy
msgid ""
"ScummVM found that you have old saved games for Nippon Safes that should be "
"renamed.\n"
@@ -3322,17 +3334,17 @@ msgid ""
"\n"
"Press OK to convert them now, otherwise you will be asked next time.\n"
msgstr ""
-"Pelin Nippon Safes tallennukset ovat vanhassa muodossa, joita ei enää tueta. "
-"Tallennukset\n"
-"tulee nimetä uudelleen ennen kuin ScummVM voi käyttää niitä. Paina 'Hyväksy' "
-"muuntaaksesi tallennukset.\n"
-"Jos et tee muunnosta nyt, ScummVM kysyy sinulta uudelleen seuraavalla "
-"kerralla kun käynnistät pelin.\n"
+"ScummVM löysi pelille Nippon Safes vanhoja pelitallennuksia jotka pitäisi "
+"uudelleennimetä.\n"
+"Vanhoja nimiä ei enää tueta, joten et pysty lataamaan tallenteitasi ellet "
+"muuta niiden nimiä.\n"
+"\n"
+"Paina OK nimetäksesi tallenteet nyt, muuten kysymme sinulta uudestaan "
+"seuraavalla kerralla. \n"
#: engines/parallaction/saveload.cpp:316
-#, fuzzy
msgid "ScummVM successfully converted all your saved games."
-msgstr "ScummVM muunsi kaikki pelitallenteet onnistuneesti"
+msgstr "ScummVM muunsi kaikki pelitallenteet onnistuneesti."
#: engines/parallaction/saveload.cpp:318
msgid ""
@@ -3347,40 +3359,39 @@ msgstr ""
#: engines/pegasus/pegasus.cpp:714
msgid "Invalid file name for saving"
-msgstr ""
+msgstr "Viallinen tiedostonnimi tallennuselle"
#: engines/pegasus/pegasus.cpp:2507
msgid "Up/Zoom In/Move Forward/Open Doors"
-msgstr ""
+msgstr "Ylös/Zoomi Sisään/Liiku Eteen/Avaa Ovia"
#: engines/pegasus/pegasus.cpp:2508
-#, fuzzy
msgid "Down/Zoom Out"
-msgstr "Zoomaa ylös"
+msgstr "Alas/Zoomaa ylös"
#: engines/pegasus/pegasus.cpp:2511
msgid "Display/Hide Inventory Tray"
-msgstr ""
+msgstr "Näytä/Piilota Inventorio"
#: engines/pegasus/pegasus.cpp:2512
msgid "Display/Hide Biochip Tray"
-msgstr ""
+msgstr "Näytä/Piilota Biochip"
#: engines/pegasus/pegasus.cpp:2513
msgid "Action/Select"
-msgstr ""
+msgstr "Toiminta/Valitse"
#: engines/pegasus/pegasus.cpp:2514
msgid "Toggle Center Data Display"
-msgstr ""
+msgstr "Aktivoi Keskidatanäyttö"
#: engines/pegasus/pegasus.cpp:2515
msgid "Display/Hide Info Screen"
-msgstr ""
+msgstr "Näytä/Piilota Infonäyttö"
#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Pause Menu"
-msgstr ""
+msgstr "Näytä/Piilota Pausemenu"
#: engines/queen/detection.cpp:56
msgid "Alternative intro"
@@ -3392,30 +3403,27 @@ msgstr "Käytä vaihtoehtoista pelin introa (vain CD versiossa)"
#: engines/sci/detection.cpp:390
msgid "Skip EGA dithering pass (full color backgrounds)"
-msgstr ""
+msgstr "Ohita EGA dithering pass (täysväritaustat)"
#: engines/sci/detection.cpp:391
msgid "Skip dithering pass in EGA games, graphics are shown with full colors"
-msgstr ""
+msgstr "Ohita dirhering pass EGA peleissä, grafiikat näytetään täysvärisinä"
#: engines/sci/detection.cpp:400
-#, fuzzy
msgid "Enable high resolution graphics"
-msgstr "Käytä kestopisteissä värillisiä grafiikkapalkkeja numeroiden sijaan"
+msgstr "Käytä korkearesoluutioisia grafiikoita"
#: engines/sci/detection.cpp:401
-#, fuzzy
msgid "Enable high resolution graphics/content"
-msgstr "Käytä kestopisteissä värillisiä grafiikkapalkkeja numeroiden sijaan"
+msgstr "Käytä korkearesoluutioisia grafiikoita/sisältöä"
#: engines/sci/detection.cpp:410
-#, fuzzy
msgid "Enable black-lined video"
-msgstr "Käytä Roland GS moodia"
+msgstr "Käytä mustia vuoroviivoja videoissa"
#: engines/sci/detection.cpp:411
msgid "Draw black lines over videos to increase their apparent sharpness"
-msgstr ""
+msgstr "Piirrä mustia vuoroviivoja videoihin jotta ne näyttäisivät terävämmiltä"
#: engines/sci/detection.cpp:420
msgid "Prefer digital sound effects"
@@ -3460,7 +3468,6 @@ msgid "Use silver cursors"
msgstr "Käytä hopeisia kursoreita"
#: engines/sci/detection.cpp:474
-#, fuzzy
msgid ""
"Use the alternate set of silver cursors instead of the normal golden ones"
msgstr "Käytä vaihtoehtoisia hopeisia kursoreita normaalien kultaisten sijaan"
@@ -3473,6 +3480,10 @@ msgid ""
"tried\n"
"to add and its version, language, etc.:\n"
msgstr ""
+"Peliversiosi vaikuttaa olevan tuntematon. Jos tämä *EI* ole faniversio\n"
+"(esim. fanikäännös), ole kiltti ja raportoi seuraavat tiedot ScummVM:n "
+"kehittäjille pelin nimen,\n"
+"version, kielen, yms. kera.\n"
#: engines/scumm/detection.cpp:1138
msgid ""
@@ -3480,15 +3491,17 @@ msgid ""
"piracy.\n"
"The full version is available for purchase from the iTunes Store."
msgstr ""
+"Putt-Putt Saves the Zoo iOS:in kevytversio ei ole tuettu piratismin "
+"ehkäisemiseksi.\n"
+"Kokoversion voi ostaa iTunes-kaupasta."
#: engines/scumm/detection.cpp:1341
-#, fuzzy
msgid "Show Object Line"
msgstr "Näytä esineiden tiedot"
#: engines/scumm/detection.cpp:1342
msgid "Show the names of objects at the bottom of the screen"
-msgstr ""
+msgstr "Näytä esineiden nimet näytön alalaidassa"
#: engines/scumm/dialogs.cpp:172
#, c-format
@@ -3513,15 +3526,13 @@ msgstr "Pause. Paina välilyöntiä jatkaaksesi."
#. "Moechten Sie wirklich neu starten? (J/N)J"
#. Will react to J as 'Yes'
#: engines/scumm/dialogs.cpp:179
-#, fuzzy
msgid "Are you sure you want to restart? (Y/N)Y"
msgstr "Haluatko varmasti aloittaa pelin alusta? (K/E)K"
#. I18N: you may specify 'Yes' symbol at the end of the line. See previous comment
#: engines/scumm/dialogs.cpp:181
-#, fuzzy
msgid "Are you sure you want to quit? (Y/N)Y"
-msgstr "Haluatko varmati lopettaa?"
+msgstr "Haluatko varmati lopettaa? (K/E)K"
#: engines/scumm/dialogs.cpp:186
msgid "Play"
@@ -3645,9 +3656,8 @@ msgid "Ctrl"
msgstr "Ctrl"
#: engines/scumm/help.cpp:80
-#, fuzzy
msgid "Load saved game 1-10"
-msgstr "Lataa pelitila 1-10"
+msgstr "Lataa pelitallennus 1-10"
#: engines/scumm/help.cpp:81 engines/scumm/help.cpp:85
#: engines/scumm/help.cpp:87 engines/scumm/help.cpp:101
@@ -3656,9 +3666,8 @@ msgid "Alt"
msgstr "Alt"
#: engines/scumm/help.cpp:81
-#, fuzzy
msgid "Save game 1-10"
-msgstr "Tallenna pelitila 1-10"
+msgstr "Tee pelitallennus 1-10"
#: engines/scumm/help.cpp:87 engines/scumm/help.cpp:90
msgid "Enter"
@@ -3742,7 +3751,7 @@ msgstr " mahdollisten virheiden vuoksi."
#: engines/scumm/help.cpp:115
msgid "Spinning drafts on the keyboard:"
-msgstr ""
+msgstr "Kehräysluonnokset näppäimistöllä:"
#: engines/scumm/help.cpp:117
msgid "Main game controls:"
@@ -3996,27 +4005,27 @@ msgstr "Vieritä listaa alas"
#: engines/scumm/help.cpp:261 engines/scumm/help.cpp:269
msgid "Upper left item"
-msgstr ""
+msgstr "Ylävasen esine"
#: engines/scumm/help.cpp:262 engines/scumm/help.cpp:271
msgid "Lower left item"
-msgstr ""
+msgstr "Alavasen esine"
#: engines/scumm/help.cpp:263 engines/scumm/help.cpp:272
msgid "Upper right item"
-msgstr ""
+msgstr "Yläoikea esine"
#: engines/scumm/help.cpp:264 engines/scumm/help.cpp:274
msgid "Lower right item"
-msgstr ""
+msgstr "Alaoikea esine"
#: engines/scumm/help.cpp:270
msgid "Middle left item"
-msgstr ""
+msgstr "Keskivasen esine"
#: engines/scumm/help.cpp:273
msgid "Middle right item"
-msgstr ""
+msgstr "Keskioikea esine"
#: engines/scumm/help.cpp:280 engines/scumm/help.cpp:285
msgid "Switching characters:"
@@ -4032,23 +4041,23 @@ msgstr "Kolmas lapsi"
#: engines/scumm/help.cpp:292
msgid "Toggle Inventory/IQ Points display"
-msgstr ""
+msgstr "Inventorio/ÄÖ PIstenäyttö päälle/pois"
#: engines/scumm/help.cpp:293
msgid "Toggle Keyboard/Mouse Fighting (*)"
-msgstr ""
+msgstr "Näppäimistö/Hiiritappelu (*)"
#: engines/scumm/help.cpp:295
msgid "* Keyboard Fighting is always on,"
-msgstr ""
+msgstr "* Näppäimistötappelu on aina päällä,"
#: engines/scumm/help.cpp:296
msgid " so despite the in-game message this"
-msgstr ""
+msgstr " joten huolimatta viestistä pelissä tämä"
#: engines/scumm/help.cpp:297
msgid " actually toggles Mouse Fighting Off/On"
-msgstr ""
+msgstr " itseasiassa laittaa hiiritappelun päälle/pois"
#: engines/scumm/help.cpp:304
msgid "Fighting controls (numpad):"
@@ -4085,7 +4094,7 @@ msgstr "Lyö alas"
#: engines/scumm/help.cpp:315
msgid "Sucker punch"
-msgstr ""
+msgstr "Yllätyslyönti"
#: engines/scumm/help.cpp:318
msgid "These are for Indy on left."
@@ -4144,23 +4153,20 @@ msgid "Fly to lower right"
msgstr "Lennä alas oikealle"
#: engines/scumm/input.cpp:578
-#, fuzzy
msgid "Snap scroll on"
-msgstr "Pehmeä vieritys"
+msgstr "Pehmeä vieritys päälle"
#: engines/scumm/input.cpp:580
msgid "Snap scroll off"
-msgstr ""
+msgstr "Pehmeä vieritys pois päältä"
#: engines/scumm/input.cpp:593
-#, fuzzy
msgid "Music volume: "
-msgstr "Musiikki:"
+msgstr "Musiikin äänenvoimakkuus: "
#: engines/scumm/input.cpp:610
-#, fuzzy
msgid "Subtitle speed: "
-msgstr "Tekstin nopeus:"
+msgstr "Tekstityksen nopeus: "
#: engines/scumm/scumm.cpp:1880
#, c-format
@@ -4172,62 +4178,66 @@ msgstr ""
"%s puuttuu. Käytetään AdLibia sen sijaan."
#: engines/scumm/scumm.cpp:2733
-#, fuzzy
msgid ""
"Usually, Maniac Mansion would start now. But for that to work, the game "
"files for Maniac Mansion have to be in the 'Maniac' directory inside the "
"Tentacle game directory, and the game has to be added to ScummVM."
msgstr ""
-"Maniac Mansionin pitäisi nyt käynnistyä, mutta ScummVM ei tue sitä vielä. "
-"Pelataksesi Maniac Mansionia, mene ScummVM:n päävalikkoon ja paina 'Lisää "
-"peli'. Valitse 'Maniac' hakemisto Tentacle hakemiston sisältä."
+"Normaalisti Maniac Mansion käynnistyisi nyt. Jotta se olisi mahdollista, "
+"Maniac Mansionin pelitiedostojen pitää löytyä \"Maniac\"-kansiosta Tentacle-"
+"pelikansion sisältä, ja sen pitää myös olla lisätty pelinä ScummVM:ään."
#: engines/scumm/players/player_v3m.cpp:129
msgid ""
"Could not find the 'Loom' Macintosh executable to read the\n"
"instruments from. Music will be disabled."
msgstr ""
+"\"Loom\":in Macintosh ohjelmatiedostoa ei löydetty\n"
+"instrumenttien lukemiseksi. Emme soita musiikkia."
#: engines/scumm/players/player_v5m.cpp:107
msgid ""
"Could not find the 'Monkey Island' Macintosh executable to read the\n"
"instruments from. Music will be disabled."
msgstr ""
+"\"Monkey Island\":in Macintosh ohjelmatiedostoa ei löydetty\n"
+"instrumenttien lukemiseksi. Emme soita musiikkia."
#: engines/sherlock/detection.cpp:81
msgid "Pixellated scene transitions"
-msgstr ""
+msgstr "Pikselöidyt kohtauksenvaihdot"
#: engines/sherlock/detection.cpp:82
msgid "When changing scenes, a randomized pixel transition is done"
-msgstr ""
+msgstr "Kohtauksia vaihtaessa näytetään sattumanvarainen pikselitransitio"
#: engines/sherlock/detection.cpp:91
msgid "Don't show hotspots when moving mouse"
-msgstr ""
+msgstr "Älä näytä tärkeitä alueita hiirtä liikuttaessa"
#: engines/sherlock/detection.cpp:92
msgid ""
"Only show hotspot names after you actually click on a hotspot or action "
"button"
msgstr ""
+"Näytä tärkeiden alueiden nimet vain sen jälkeen kun aluetta tai "
+"toimintanappia on painettu"
#: engines/sherlock/detection.cpp:101
-#, fuzzy
msgid "Show character portraits"
-msgstr "Vaihda hahmoa"
+msgstr "Näytä hahmojen muotokuvat"
#: engines/sherlock/detection.cpp:102
msgid "Show portraits for the characters when conversing"
-msgstr ""
+msgstr "Näytä hahmojen muotokuvat keskustelujen aikana"
#: engines/sherlock/detection.cpp:111
msgid "Slide dialogs into view"
-msgstr ""
+msgstr "Liu'uta dialogit ruudulle"
#: engines/sherlock/detection.cpp:112
msgid "Slide UI dialogs into view, rather than simply showing them immediately"
-msgstr ""
+msgstr "Liu'uta dialogit ruudulle sen sijaan että ne näytettäisiin välittömästi"
#: engines/sherlock/detection.cpp:121
msgid "Transparent windows"
@@ -4239,7 +4249,7 @@ msgstr "Näytä ikkunat osittain läpinäkyvällä taustalla"
#: engines/sky/compact.cpp:141
msgid "The \"sky.cpt\" engine data file has an incorrect size."
-msgstr ""
+msgstr "\"sky.cpt\" pelimoottorin datatiedostolla on väärä koko."
#: engines/sky/detection.cpp:44
msgid "Floppy intro"
@@ -4272,7 +4282,6 @@ msgid "Cutscene '%s' not found"
msgstr "Videotiedosto '%s' ei löytynyt"
#: engines/sword1/control.cpp:863
-#, fuzzy
msgid ""
"ScummVM found that you have old saved games for Broken Sword 1 that should "
"be converted.\n"
@@ -4282,11 +4291,13 @@ msgid ""
"Press OK to convert them now, otherwise you will be asked again the next "
"time you start the game.\n"
msgstr ""
-"Broken Sword 1:n pelitallennukset ovat vanhassa formaatissa. Tallennukset "
-"tulee muuntaa,\n"
-"jotta niitä voi käyttää ScummVM:ssä. Paina 'Hyväksy' muuntaaksesi tiedostot. "
-"Mikäli et halua muuntaa tiedostoja nyt\n"
-"ScummVM kysyy asiaa seuraavan kerran kun käynnistät pelin.\n"
+"ScummVM löysi pelille Broken Sword 1 vanhoja pelitallennuksia jotka pitäisi "
+"muuntaa.\n"
+"Vanhaa formaattia ei enää tueta, joten et pysty lataamaan tallenteitasi "
+"ellet muunna niitä.\n"
+"\n"
+"Paina OK muuntaaksesi tallenteet nyt, muuten kysymme sinulta uudelleestaan "
+"seuraavalla kerralla\n"
#: engines/sword1/control.cpp:1232
#, c-format
@@ -4344,26 +4355,22 @@ msgstr ""
#: engines/tony/tony.cpp:258
#, c-format
msgid "Font variant not present in '%s' engine data file."
-msgstr ""
+msgstr "Fonttivarianttia ei löydy %s pelimoottorin datatiedostosta."
#: engines/toon/toon.cpp:222
-#, fuzzy, c-format
+#, c-format
msgid "Saved game in slot #%d "
-msgstr ""
-"Pelin tallennus kohtaan ei onnistunut kohtaan %i\n"
-"\n"
+msgstr "Peli tallennettu kohtaan #%d "
#: engines/toon/toon.cpp:226
#, c-format
msgid "Could not quick save into slot #%d"
-msgstr ""
+msgstr "Pikapelitallennus kohtaan %d epäonnistui"
#: engines/toon/toon.cpp:239
-#, fuzzy, c-format
+#, c-format
msgid "Saved game #%d quick loaded"
-msgstr ""
-"Pelin tallennus kohtaan ei onnistunut kohtaan %i\n"
-"\n"
+msgstr "Pelitallenne #%d pikaladattu"
#: engines/toon/toon.cpp:243
#, c-format
@@ -4372,16 +4379,24 @@ msgstr "Tallennuksen #%d pikalataus epäonnistui"
#: engines/wintermute/detection.cpp:58
msgid "Show FPS-counter"
-msgstr ""
+msgstr "Näytä FPS-laskuri"
#: engines/wintermute/detection.cpp:59
msgid "Show the current number of frames per second in the upper left corner"
-msgstr ""
+msgstr "Näytä tämänhetkinen kuvia/sekunti määrä vasemmassa ylänurkassa"
+
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr "Spritejen bilineaarinen suodatus (HIDAS)"
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr "Käytä bilineaarista suodatusta yksittäisiin spriteihin"
#: engines/zvision/detection_tables.h:52
-#, fuzzy
msgid "Use the original save/load screens instead of the ScummVM interface"
-msgstr "Käytä alkuperäisiä tallenna/lataa valikkoja, ScummVM valikoiden sijaan"
+msgstr ""
+"Käytä alkuperäisiä tallenna/lataa valikkoja ScummVM käyttöliittymän sijaan"
#: engines/zvision/detection_tables.h:61
msgid "Double FPS"
@@ -4389,25 +4404,23 @@ msgstr "Tupla FPS"
#: engines/zvision/detection_tables.h:62
msgid "Increase framerate from 30 to 60 FPS"
-msgstr ""
+msgstr "Kasvata ruudunpäivitysnopeus 60 FPS:ään 30 FPS:stä"
#: engines/zvision/detection_tables.h:71
-#, fuzzy
msgid "Enable Venus"
-msgstr "Käytä helium moodia"
+msgstr "Käytä Venusta"
#: engines/zvision/detection_tables.h:72
-#, fuzzy
msgid "Enable the Venus help system"
-msgstr "Käytä helium moodia"
+msgstr "Käytä Venus-avustusjärjestelmää"
#: engines/zvision/detection_tables.h:81
msgid "Disable animation while turning"
-msgstr ""
+msgstr "Animaatio pois päältä kääntyessä"
#: engines/zvision/detection_tables.h:82
msgid "Disable animation while turning in panorama mode"
-msgstr ""
+msgstr "Animaatio pois päältä panoraamamoodissa kääntyessä"
#: engines/zvision/detection_tables.h:91
msgid "Use high resolution MPEG video"
@@ -4425,6 +4438,9 @@ 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 ""
+"Tämä pelitallennus käyttää versiota %u, mutta tämä pelimoottorin tuki on "
+"vain versioon %d asti. Tarvitset päivitetyn version tästä pelimoottorista "
+"käyttääksesi tätä pelitallennusta."
#~ msgid ""
#~ "Unable to find \"sky.cpt\" file!\n"
diff --git a/po/fr_FR.po b/po/fr_FR.po
index 7dd2dfb9e6..bbaacffae7 100644
--- a/po/fr_FR.po
+++ b/po/fr_FR.po
@@ -1,5 +1,5 @@
# French translation for ScummVM.
-# Copyright (C) 2010-2016 The ScummVM Team
+# Copyright (C) 2010-2017 The ScummVM Team
# This file is distributed under the same license as the ScummVM package.
# Thierry Crozat <criezy@scummvm.org>, 2011.
#
@@ -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: 2016-12-19 02:13+0100\n"
-"PO-Revision-Date: 2016-12-16 21:50+0000\n"
-"Last-Translator: Gilles <draky@draky.net>\n"
-"Language-Team: French <https://translations.scummvm.org/projects/scummvm/"
-"scummvm/fr/>\n"
+"POT-Creation-Date: 2016-12-26 16:14+0100\n"
+"PO-Revision-Date: 2017-01-03 19:44+0000\n"
+"Last-Translator: Thierry Crozat <criezy@scummvm.org>\n"
+"Language-Team: French "
+"<https://translations.scummvm.org/projects/scummvm/scummvm/fr/>\n"
"Language: fr_FR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
@@ -2767,7 +2767,7 @@ msgstr "Recherche des mises à jour..."
#: engines/toon/toon.cpp:4918
#, c-format
msgid "Unable to locate the '%s' engine data file."
-msgstr ""
+msgstr "Le fichier de données '%s' n'a pu être trouvé."
#: engines/access/resources.cpp:52 engines/drascula/drascula.cpp:979
#: engines/hugo/hugo.cpp:448 engines/lure/lure.cpp:73
@@ -2775,7 +2775,7 @@ msgstr ""
#: engines/toon/toon.cpp:4930
#, c-format
msgid "The '%s' engine data file is corrupt."
-msgstr ""
+msgstr "Le fichier de données '%s' est corrompu."
#: engines/access/resources.cpp:61 engines/drascula/drascula.cpp:990
#: engines/hugo/hugo.cpp:458 engines/lure/lure.cpp:76
@@ -2786,6 +2786,8 @@ msgid ""
"Incorrect version of the '%s' engine data file found. Expected %d.%d but got "
"%d.%d."
msgstr ""
+"La bonne version du fichier de données '%s' n'a pu être trouvée. Version "
+"attendue : %d.%d ; version trouvée : %d.%d."
#: engines/adl/detection.cpp:45 engines/adl/detection.cpp:55
msgid "Color mode"
@@ -4288,7 +4290,7 @@ msgstr "Afficher les fenêtres avec un fond partiellement transparent"
#: engines/sky/compact.cpp:141
msgid "The \"sky.cpt\" engine data file has an incorrect size."
-msgstr ""
+msgstr "Le fichier de données 'sky.cpt' n'a pas la taille attendue."
#: engines/sky/detection.cpp:44
msgid "Floppy intro"
@@ -4399,6 +4401,7 @@ msgstr ""
#, c-format
msgid "Font variant not present in '%s' engine data file."
msgstr ""
+"Variante de police de caractères non trouvée dans le fichier de données '%s'."
#: engines/toon/toon.cpp:222
#, c-format
@@ -4429,6 +4432,14 @@ msgid "Show the current number of frames per second in the upper left corner"
msgstr ""
"Affiche le nombre d'images par seconde (FPS) dans le coin en haut à gauche"
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr "Filtrage bilinéaire des images-objets (LENT)"
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr "Applique un filtrage bilinéaire à chaque image-objet"
+
#: engines/zvision/detection_tables.h:52
msgid "Use the original save/load screens instead of the ScummVM interface"
msgstr ""
diff --git a/po/gl_ES.po b/po/gl_ES.po
index f4ddf359c7..a7af9cf2b1 100644
--- a/po/gl_ES.po
+++ b/po/gl_ES.po
@@ -1,5 +1,5 @@
# Galician translation for ScummVM.
-# Copyright (C) 2010-2016 The ScummVM Team
+# Copyright (C) 2010-2017 The ScummVM Team
# This file is distributed under the same license as the ScummVM package.
# Santiago G. Sanz <s.sanz@uvigo.es>, 2013.
#
@@ -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: 2016-12-19 02:13+0100\n"
+"POT-Creation-Date: 2016-12-26 16:14+0100\n"
"PO-Revision-Date: 2016-11-28 15:51+0000\n"
"Last-Translator: Santiago G. Sanz <santiagogarciasanz@gmail.com>\n"
"Language-Team: Galician <https://translations.scummvm.org/projects/scummvm/"
@@ -4417,6 +4417,14 @@ msgstr "Mostrar FPS"
msgid "Show the current number of frames per second in the upper left corner"
msgstr "Mostra o número actual de FPS na esquina superior esquerda."
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr ""
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr ""
+
#: engines/zvision/detection_tables.h:52
msgid "Use the original save/load screens instead of the ScummVM interface"
msgstr ""
diff --git a/po/hu_HU.po b/po/hu_HU.po
index b6ac0ab982..81ff3384c5 100644
--- a/po/hu_HU.po
+++ b/po/hu_HU.po
@@ -1,12 +1,12 @@
# Hungarian translation for ScummVM.
-# Copyright (C) 2010-2016 The ScummVM Team
+# Copyright (C) 2010-2017 The ScummVM Team
# This file is distributed under the same license as the ScummVM package.
# George Kormendi <grubycza@hotmail.com>, 2010, 2016.
msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.3.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2016-12-19 02:13+0100\n"
+"POT-Creation-Date: 2016-12-26 16:14+0100\n"
"PO-Revision-Date: 2016-12-13 20:02+0000\n"
"Last-Translator: George Kormendi <grubycza@hotmail.com>\n"
"Language-Team: Hungarian <https://translations.scummvm.org/projects/scummvm/"
@@ -4373,6 +4373,14 @@ msgid "Show the current number of frames per second in the upper left corner"
msgstr ""
"A jelenlegi másodpercenkénti képkocka szám kijelzése a bal felsõ sarokban"
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr ""
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr ""
+
#: engines/zvision/detection_tables.h:52
msgid "Use the original save/load screens instead of the ScummVM interface"
msgstr "Használd az eredeti mentés/töltés képet a ScummVM felület helyett"
diff --git a/po/it_IT.po b/po/it_IT.po
index 3306e670a0..1df03cabea 100644
--- a/po/it_IT.po
+++ b/po/it_IT.po
@@ -1,5 +1,5 @@
# Italian translation for ScummVM.
-# Copyright (C) 2010-2016 The ScummVM Team
+# Copyright (C) 2010-2017 The ScummVM Team
# This file is distributed under the same license as the ScummVM package.
# Matteo 'Maff' Angelino <matteo.maff at gmail dot com>, 2010.
#
@@ -7,11 +7,11 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.3.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2016-12-19 02:13+0100\n"
-"PO-Revision-Date: 2016-12-13 19:58+0000\n"
+"POT-Creation-Date: 2016-12-26 16:14+0100\n"
+"PO-Revision-Date: 2017-01-04 22:19+0000\n"
"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n"
-"Language-Team: Italian <https://translations.scummvm.org/projects/scummvm/"
-"scummvm/it/>\n"
+"Language-Team: Italian "
+"<https://translations.scummvm.org/projects/scummvm/scummvm/it/>\n"
"Language: it_IT\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
@@ -1254,7 +1254,7 @@ msgstr "Avvia webserver locale"
#: gui/options.cpp:1433 gui/options.cpp:2082
msgid "Not running"
-msgstr ""
+msgstr "Non avviato"
#: gui/options.cpp:1437
msgid "/root/ Path:"
@@ -1768,6 +1768,11 @@ msgid ""
"Please, report the following data to the ScummVM team along with name\n"
"of the game you tried to add and its version, language, etc.:"
msgstr ""
+"Il gioco in '%s' sembra sconosciuto.\n"
+"Per favore, comunica al team ScummVM le informazioni riportate di seguito "
+"insieme\n"
+"al nome del gioco che hai tentato di aggiungere, la sua versione, lingua, "
+"etc:"
#: engines/dialogs.cpp:85
msgid "~R~esume"
@@ -1850,14 +1855,13 @@ msgstr ""
"per le istruzioni su come ottenere ulteriore assistenza."
#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
-#, 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."
msgstr ""
-"Salvataggio fallito (%s)! Si prega di consultare il file README per le "
-"informazioni di base e per le istruzioni su come ottenere ulteriore "
-"assistenza."
+"Salvataggio non riuscito (%s). Consultare il file README per le informazioni "
+"di base e per le istruzioni su come ottenere ulteriore assistenza."
#: engines/dialogs.cpp:307 engines/mohawk/dialogs.cpp:100
#: engines/tsage/dialogs.cpp:112
@@ -1890,9 +1894,8 @@ msgid "Could not apply fullscreen setting."
msgstr "Impossibile applicare l'impostazione schermo intero."
#: engines/engine.cpp:373
-#, fuzzy
msgid "Could not apply filtering setting."
-msgstr "Impossibile applicare l'impostazione schermo intero."
+msgstr "Impossibile applicare l'impostazione di filtraggio."
#: engines/engine.cpp:473
msgid ""
@@ -1923,13 +1926,13 @@ msgstr ""
"Vedi il file README per i dettagli."
#: engines/engine.cpp:542
-#, 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."
msgstr ""
-"Caricamento salvataggio fallito (%s)! Si prega di consultare il file README "
-"per le informazioni di base e per le istruzioni su come ottenere ulteriore "
+"Caricamento salvataggio non riuscito (%s). Consultare il file README per le "
+"informazioni di base e per le istruzioni su come ottenere ulteriore "
"assistenza."
#: engines/engine.cpp:555
@@ -1960,7 +1963,7 @@ msgstr "Emulatore OPL DOSBox"
#: audio/fmopl.cpp:67
msgid "ALSA Direct FM"
-msgstr ""
+msgstr "ALSA Direct FM"
#: audio/mididrv.cpp:209
#, c-format
@@ -2017,17 +2020,15 @@ msgstr "Emulatore Apple II GS (NON IMPLEMENTATO)"
#: audio/softsynth/cms.cpp:350
msgid "Creative Music System Emulator"
-msgstr ""
+msgstr "Emulatore Creative Music System"
#: audio/softsynth/fmtowns_pc98/towns_pc98_plugins.cpp:33
-#, fuzzy
msgid "FM-Towns Audio"
msgstr "Emulatore FM Towns"
#: audio/softsynth/fmtowns_pc98/towns_pc98_plugins.cpp:58
-#, fuzzy
msgid "PC-98 Audio"
-msgstr "Audio"
+msgstr "Audio PC-98"
#: audio/softsynth/mt32.cpp:175
msgid "Initializing MT-32 Emulator"
@@ -2050,19 +2051,20 @@ msgid "C64 Audio Emulator"
msgstr "Emulatore audio C64"
#: backends/cloud/storage.cpp:211
-#, fuzzy
msgid "Saved games sync complete."
-msgstr "Scansione completa!"
+msgstr "Sincronizzazione salvataggi completata."
#: backends/cloud/storage.cpp:222
msgid "Saved games sync was cancelled."
-msgstr ""
+msgstr "Sincronizzazione salvataggi annullata."
#: backends/cloud/storage.cpp:224
msgid ""
"Saved games sync failed.\n"
"Check your Internet connection."
msgstr ""
+"La sincronizzazione dei salvataggi non è riuscita.\n"
+"Controllare la propria connessione Internet."
#: backends/cloud/storage.cpp:328
#, c-format
@@ -2070,16 +2072,16 @@ msgid ""
"Download complete.\n"
"Failed to download %u files."
msgstr ""
+"Scaricamento completato.\n"
+"Scaricamento di %u file non riuscito."
#: backends/cloud/storage.cpp:330
-#, fuzzy
msgid "Download complete."
-msgstr "Scansione completa!"
+msgstr "Scaricamento completato."
#: backends/cloud/storage.cpp:340
-#, fuzzy
msgid "Download failed."
-msgstr "Carica gioco:"
+msgstr "Scaricamento non riuscito."
#: backends/events/default/default-events.cpp:196
msgid "Do you really want to return to the Launcher?"
@@ -2154,34 +2156,33 @@ msgstr "Sei sicuro di voler uscire?"
#. I18N: Trackpad mode toggle status.
#: backends/events/webossdl/webossdl-events.cpp:308
-#, fuzzy
msgid "Trackpad mode is now"
-msgstr "Modalità touchpad disattivata."
+msgstr "la modalità touchpad è ora"
#. I18N: Trackpad mode on or off.
#. I18N: Auto-drag on or off.
#: backends/events/webossdl/webossdl-events.cpp:311
#: backends/events/webossdl/webossdl-events.cpp:338
msgid "ON"
-msgstr ""
+msgstr "On"
#: backends/events/webossdl/webossdl-events.cpp:311
#: backends/events/webossdl/webossdl-events.cpp:338
msgid "OFF"
-msgstr ""
+msgstr "Off"
#: backends/events/webossdl/webossdl-events.cpp:315
msgid "Swipe two fingers to the right to toggle."
-msgstr ""
+msgstr "Fai scivolare due dita verso destra per cambiare."
#. I18N: Auto-drag toggle status.
#: backends/events/webossdl/webossdl-events.cpp:335
msgid "Auto-drag mode is now"
-msgstr ""
+msgstr "La modalità di autotrascimento è ora"
#: backends/events/webossdl/webossdl-events.cpp:342
msgid "Swipe three fingers to the right to toggle."
-msgstr ""
+msgstr "Fai scivolare tre dita verso destra per cambiare."
#: backends/graphics/opengl/opengl-graphics.cpp:146
msgid "OpenGL"
@@ -2195,7 +2196,7 @@ msgstr "Modalità finestra"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:710
#, c-format
msgid "Resolution: %dx%d"
-msgstr ""
+msgstr "Risoluzione: %dx%d"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:731
#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2338
@@ -2209,15 +2210,13 @@ msgstr "Correzione proporzioni disattivata"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:753
#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2362
-#, fuzzy
msgid "Filtering enabled"
-msgstr "Clic attivato"
+msgstr "Filtro video attivato"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:755
#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2364
-#, fuzzy
msgid "Filtering disabled"
-msgstr "Clic disattivato"
+msgstr "Filtro disattivato"
#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:47
#: backends/graphics/wincesdl/wincesdl-graphics.cpp:88
@@ -2492,24 +2491,23 @@ msgstr "Controllo mouse"
#: backends/platform/tizen/fs.cpp:259
msgid "[ Data ]"
-msgstr ""
+msgstr "[ Dati ]"
#: backends/platform/tizen/fs.cpp:263
msgid "[ Resources ]"
-msgstr ""
+msgstr "[ Risorse ]"
#: backends/platform/tizen/fs.cpp:267
msgid "[ SDCard ]"
-msgstr ""
+msgstr "[ Scheda SD ]"
#: backends/platform/tizen/fs.cpp:271
msgid "[ Media ]"
-msgstr ""
+msgstr "[ Media ]"
#: backends/platform/tizen/fs.cpp:275
-#, fuzzy
msgid "[ Shared ]"
-msgstr "Condivisione:"
+msgstr "[ Condivisi ]"
#: backends/platform/wii/options.cpp:51
msgid "Video"
@@ -2763,7 +2761,7 @@ msgstr "Cerca aggiornamenti..."
#: engines/toon/toon.cpp:4918
#, c-format
msgid "Unable to locate the '%s' engine data file."
-msgstr ""
+msgstr "File dati del motore '%s' non trovato."
#: engines/access/resources.cpp:52 engines/drascula/drascula.cpp:979
#: engines/hugo/hugo.cpp:448 engines/lure/lure.cpp:73
@@ -2771,7 +2769,7 @@ msgstr ""
#: engines/toon/toon.cpp:4930
#, c-format
msgid "The '%s' engine data file is corrupt."
-msgstr ""
+msgstr "Il file dati del motore '%s' è danneggiato."
#: engines/access/resources.cpp:61 engines/drascula/drascula.cpp:990
#: engines/hugo/hugo.cpp:458 engines/lure/lure.cpp:76
@@ -2782,24 +2780,24 @@ msgid ""
"Incorrect version of the '%s' engine data file found. Expected %d.%d but got "
"%d.%d."
msgstr ""
+"Il file dati del motore '%s' non è corretto. Versione richiesta: %d.%d; "
+"versione trovata: %d.%d."
#: engines/adl/detection.cpp:45 engines/adl/detection.cpp:55
-#, fuzzy
msgid "Color mode"
-msgstr "Modalità clic"
+msgstr "Modalità colore"
#: engines/adl/detection.cpp:46 engines/adl/detection.cpp:56
msgid "Use color graphics"
-msgstr ""
+msgstr "Usa grafica a colori"
#: engines/adl/detection.cpp:65
msgid "Scanlines"
-msgstr ""
+msgstr "Linee di scansione"
#: engines/adl/detection.cpp:66
-#, fuzzy
msgid "Show scanlines"
-msgstr "Mostra etichette oggetti"
+msgstr "Mostra linee di scansione"
#: engines/agi/detection.cpp:147 engines/cine/detection.cpp:70
#: engines/drascula/detection.cpp:302 engines/dreamweb/detection.cpp:48
@@ -2813,51 +2811,53 @@ msgstr "Usa schermate di salvataggio originali"
#: engines/drascula/detection.cpp:303 engines/dreamweb/detection.cpp:49
#: engines/neverhood/detection.cpp:178 engines/sci/detection.cpp:431
#: engines/sherlock/detection.cpp:72 engines/toltecs/detection.cpp:201
-#, fuzzy
msgid "Use the original save/load screens instead of the ScummVM ones"
msgstr ""
"Usa le schermate originali di salvataggio e caricamento, al posto di quelle "
"di ScummVM"
#: engines/agi/detection.cpp:157
-#, fuzzy
msgid "Use an alternative palette"
-msgstr "Usa un'intro del gioco alternativa (solo versione CD)"
+msgstr "Usa una differente palette di colori"
#: engines/agi/detection.cpp:158
msgid ""
"Use an alternative palette, common for all Amiga games. This was the old "
"behavior"
msgstr ""
+"Usa una palette di colori alternativa, comune per tutti i giochi Amiga. "
+"Opzione predefinita nelle versioni precedenti"
#: engines/agi/detection.cpp:167
-#, fuzzy
msgid "Mouse support"
-msgstr "Interruzione del parlato"
+msgstr "Supporto mouse"
#: engines/agi/detection.cpp:168
msgid ""
"Enables mouse support. Allows to use mouse for movement and in game menus."
msgstr ""
+"Abilita il mouse. Permette l'uso del mouse per il movimento e per i menù di "
+"gioco."
#: engines/agi/detection.cpp:177
-#, fuzzy
msgid "Use Hercules hires font"
-msgstr "Hercules verde"
+msgstr "Usa caratteri Hercules ad alta risoluzione"
#: engines/agi/detection.cpp:178
msgid "Uses Hercules hires font, when font file is available."
-msgstr ""
+msgstr "Utilizza caratteri Hercules ad alta risoluzione, se disponibili."
#: engines/agi/detection.cpp:187
msgid "Pause when entering commands"
-msgstr ""
+msgstr "Pausa per immissione comandi"
#: engines/agi/detection.cpp:188
msgid ""
"Shows a command prompt window and pauses the game (like in SCI) instead of a "
"real-time prompt."
msgstr ""
+"Apre una finestra di comando e mette in pausa il gioco (come per i giochi "
+"SCI), anziché usare un prompt dei comandi in tempo reale."
#: engines/agi/saveload.cpp:774 engines/avalanche/parser.cpp:1888
#: engines/cge/events.cpp:83 engines/cge2/events.cpp:76
@@ -2886,13 +2886,13 @@ msgid "Restore"
msgstr "Ripristina"
#: 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"
"%s"
msgstr ""
-"Impossibile caricare il gioco dal file:\n"
+"Impossibile caricare il gioco salvato nel file:\n"
"\n"
"%s"
@@ -2924,16 +2924,14 @@ msgid "Cutscene file '%s' not found!"
msgstr "File della scena di intermezzo '%s' non trovato!"
#: engines/cge/detection.cpp:105 engines/cge2/detection.cpp:101
-#, fuzzy
msgid "Color Blind Mode"
-msgstr "Modalità clic"
+msgstr "Modalità daltonici"
#: engines/cge/detection.cpp:106 engines/cge2/detection.cpp:102
msgid "Enable Color Blind Mode by default"
-msgstr ""
+msgstr "Abilita di default la modalità daltonici"
#: engines/drascula/saveload.cpp:47
-#, fuzzy
msgid ""
"ScummVM found that you have old saved games for Drascula that should be "
"converted.\n"
@@ -2989,11 +2987,11 @@ msgstr "Impossibile salvare il gioco"
#: engines/hopkins/detection.cpp:76 engines/hopkins/detection.cpp:86
msgid "Gore Mode"
-msgstr ""
+msgstr "Sangue"
#: engines/hopkins/detection.cpp:77 engines/hopkins/detection.cpp:87
msgid "Enable Gore Mode when available"
-msgstr ""
+msgstr "Abilita scene sanguinose (se disponibili)"
#. I18N: Studio audience adds an applause and cheering sounds whenever
#. Malcolm makes a joke.
@@ -3062,14 +3060,12 @@ msgid "Move Back"
msgstr "Vai indietro"
#: engines/kyra/eobcommon.cpp:333
-#, fuzzy
msgid "Move Left"
-msgstr "Scorri a sinistra"
+msgstr "Vai a sinistra"
#: engines/kyra/eobcommon.cpp:334
-#, fuzzy
msgid "Move Right"
-msgstr "Scorri a destra"
+msgstr "Vai a destra"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
#: engines/pegasus/pegasus.cpp:2509
@@ -3082,46 +3078,44 @@ msgid "Turn Right"
msgstr "Gira a destra"
#: engines/kyra/eobcommon.cpp:337
-#, fuzzy
msgid "Open/Close Inventory"
-msgstr "Inventario"
+msgstr "Apri/Chiudi l'inventario"
#: engines/kyra/eobcommon.cpp:338
msgid "Switch Inventory/Character screen"
-msgstr ""
+msgstr "Alterna schermata Inventario/Personaggio"
#: engines/kyra/eobcommon.cpp:339
msgid "Camp"
-msgstr ""
+msgstr "Accampamento"
#: engines/kyra/eobcommon.cpp:340
-#, fuzzy
msgid "Cast Spell"
-msgstr "Scegli incantesimo"
+msgstr "Lancia incantesimo"
#: engines/kyra/eobcommon.cpp:343
msgid "Spell Level 1"
-msgstr ""
+msgstr "Incantesimo di livello 1"
#: engines/kyra/eobcommon.cpp:344
msgid "Spell Level 2"
-msgstr ""
+msgstr "Incantesimo di livello 2"
#: engines/kyra/eobcommon.cpp:345
msgid "Spell Level 3"
-msgstr ""
+msgstr "Incantesimo di livello 3"
#: engines/kyra/eobcommon.cpp:346
msgid "Spell Level 4"
-msgstr ""
+msgstr "Incantesimo di livello 4"
#: engines/kyra/eobcommon.cpp:347
msgid "Spell Level 5"
-msgstr ""
+msgstr "Incantesimo di livello 5"
#: engines/kyra/eobcommon.cpp:356
msgid "Spell Level 6"
-msgstr ""
+msgstr "Incantesimo di livello 6"
#: engines/kyra/lol.cpp:478
msgid "Attack 1"
@@ -3186,6 +3180,8 @@ msgid ""
"A saved game file was found in the specified slot %d. Overwrite?\n"
"\n"
msgstr ""
+"È già presente un salvataggio nello slot %d. Sovrascrivere?\n"
+"\n"
#: engines/kyra/saveload_eob.cpp:623
#, c-format
@@ -3196,35 +3192,40 @@ msgid ""
"'import_savefile'.\n"
"\n"
msgstr ""
+"%d salvataggi originali sono stati importati con successo in ScummVM.\n"
+"Per importare ulteriori salvataggi successivamente, è possibile utilizzare\n"
+"il comando 'import_savefile' disponibile nella console di debug di ScummVM.\n"
+"\n"
#: engines/mads/detection.cpp:91
msgid "Easy mouse interface"
-msgstr ""
+msgstr "Interfaccia mouse facilitata"
#: engines/mads/detection.cpp:92
-#, fuzzy
msgid "Shows object names when hovering the mouse over them"
-msgstr "Mostra etichette per gli oggetti al passaggio del mouse"
+msgstr "Mostra i nomi degli oggetti al passaggio del mouse"
#: engines/mads/detection.cpp:101 engines/mads/detection.cpp:102
msgid "Animated inventory items"
-msgstr ""
+msgstr "Animazioni oggetti inventario"
#: engines/mads/detection.cpp:111 engines/mads/detection.cpp:112
msgid "Animated game interface"
-msgstr ""
+msgstr "Animazioni interfaccia di gioco"
#: engines/mads/detection.cpp:121 engines/mads/detection.cpp:122
msgid "Naughty game mode"
-msgstr ""
+msgstr "Modalità osé"
#: engines/mohawk/detection.cpp:169
msgid "Play the Myst fly by movie"
-msgstr ""
+msgstr "Riproduci il volo panoramico di Myst"
#: engines/mohawk/detection.cpp:170
msgid "The Myst fly by movie was not played by the original engine."
msgstr ""
+"Il filmato del volo panoramico non veniva riprodotto dal motore originale "
+"del gioco."
#. I18N: Option for fast scene switching
#: engines/mohawk/dialogs.cpp:181 engines/mohawk/dialogs.cpp:267
@@ -3241,9 +3242,8 @@ msgid "~D~rop Page"
msgstr "~L~ascia pagina"
#: engines/mohawk/dialogs.cpp:188
-#, fuzzy
msgid "Show ~M~ap"
-msgstr "~M~ostra mappa"
+msgstr "Mostra ~M~appa"
#: engines/mohawk/dialogs.cpp:194
#, fuzzy
@@ -3259,24 +3259,30 @@ msgid ""
"You're missing a Riven executable. The Windows executable is 'riven.exe' or "
"'rivendmo.exe'. "
msgstr ""
+"File eseguibile di Riven non trovato. L'eseguibile per la versione Windows è "
+"'riven.exe' o 'rivendmo.exe'. "
#: engines/mohawk/riven.cpp:151
msgid ""
"Using the 'arcriven.z' installer file also works. In addition, you can use "
"the Mac 'Riven' executable."
msgstr ""
+"È anche possibile usare il file di installazione 'arcriven.z', o "
+"l'eseguibile 'Riven' per la versione Mac."
#: engines/mohawk/riven.cpp:162
msgid ""
"You're missing 'extras.mhk'. Using the 'arcriven.z' installer file also "
"works."
msgstr ""
+"File 'extras.mhk' non trovato. È anche possibile usare il file di "
+"installazione 'arcriven.z'."
#: engines/mohawk/riven_external.cpp:213
msgid ""
"Exploration beyond this point available only within the full version of\n"
"the game."
-msgstr ""
+msgstr "Le aree oltre questo punto sono disponibili solo nel gioco completo."
#: engines/mohawk/riven_external.cpp:655
msgid ""
@@ -3286,11 +3292,15 @@ msgid ""
"the game. ScummVM cannot do that and\n"
"the site no longer exists."
msgstr ""
+"A questo punto, la demo di Riven dovrebbe\n"
+"chiederti se desideri aprire il browser e indirizzarti\n"
+"al negozio online della Red Orb, per acquistare\n"
+"il gioco. ScummVM non può farlo, e comunque il\n"
+"sito non è più disponibile."
#: engines/mohawk/mohawk.cpp:61
-#, fuzzy
msgid "The game is paused. Press any key to continue."
-msgstr "Gioco in pausa. Premere SPAZIO per continuare."
+msgstr "Gioco in pausa. Premi un tasto per continuare."
#: engines/neverhood/detection.cpp:184
msgid "Skip the Hall of Records storyboard scenes"
@@ -3318,25 +3328,22 @@ msgstr ""
"\n"
#: engines/parallaction/saveload.cpp:194
-#, fuzzy
msgid "Load file"
-msgstr "Carica gioco:"
+msgstr "Carica gioco"
#: engines/parallaction/saveload.cpp:201
msgid "Loading game..."
msgstr "Caricamento..."
#: engines/parallaction/saveload.cpp:209
-#, fuzzy
msgid "Save file"
-msgstr "Salvataggio fallito!"
+msgstr "Salva gioco"
#: engines/parallaction/saveload.cpp:216
msgid "Saving game..."
msgstr "Salvataggio..."
#: engines/parallaction/saveload.cpp:269
-#, fuzzy
msgid ""
"ScummVM found that you have old saved games for Nippon Safes that should be "
"renamed.\n"
@@ -3354,7 +3361,6 @@ msgstr ""
"volta.\n"
#: engines/parallaction/saveload.cpp:316
-#, fuzzy
msgid "ScummVM successfully converted all your saved games."
msgstr "ScummVM ha convertito con successo tutti i tuoi salvataggi."
@@ -3371,7 +3377,6 @@ msgstr ""
"Per favore, contatta il team."
#: engines/pegasus/pegasus.cpp:714
-#, fuzzy
msgid "Invalid file name for saving"
msgstr "Nome salvataggio non valido"
@@ -3417,30 +3422,30 @@ msgstr "Usa un'intro del gioco alternativa (solo versione CD)"
#: engines/sci/detection.cpp:390
msgid "Skip EGA dithering pass (full color backgrounds)"
-msgstr ""
+msgstr "Non applicare l'effetto dithering EGA (usa sfondi a tinta unita)"
#: engines/sci/detection.cpp:391
msgid "Skip dithering pass in EGA games, graphics are shown with full colors"
msgstr ""
+"Non applica effetti dithering ai giochi con grafica EGA. Verranno sempre "
+"usati colori a piena intensità"
#: engines/sci/detection.cpp:400
-#, fuzzy
msgid "Enable high resolution graphics"
-msgstr "Attiva le barre di Hit Point"
+msgstr "Abilita grafica ad alta risoluzione"
#: engines/sci/detection.cpp:401
-#, fuzzy
msgid "Enable high resolution graphics/content"
-msgstr "Attiva le barre di Hit Point"
+msgstr "Abilita grafica ed altri contenuti ad alta risoluzione"
#: engines/sci/detection.cpp:410
-#, fuzzy
msgid "Enable black-lined video"
-msgstr "Attiva la modalità Roland GS"
+msgstr "Abilita linee di scansione nei video"
#: engines/sci/detection.cpp:411
msgid "Draw black lines over videos to increase their apparent sharpness"
msgstr ""
+"Applica linee di scansione ai video per migliorarne la nitidezza (apparente)"
#: engines/sci/detection.cpp:420
msgid "Prefer digital sound effects"
@@ -3500,6 +3505,12 @@ msgid ""
"tried\n"
"to add and its version, language, etc.:\n"
msgstr ""
+"Il tuo gioco sembra essere di una versione sconosciuta. Se *NON* si tratta "
+"di\n"
+"una versione modificata (per esempio, una traduzione amatoriale), per "
+"favore\n"
+"comunica le seguenti informazioni al team di ScummVM, indicando il nome del\n"
+"gioco e la versione, lingua, eccetera:\n"
#: engines/scumm/detection.cpp:1138
msgid ""
@@ -3507,15 +3518,17 @@ msgid ""
"piracy.\n"
"The full version is available for purchase from the iTunes Store."
msgstr ""
+"La versione lite di \"Putt-Putt Saves the Zoo\" per iOS non è supportata per "
+"evitarne la pirateria.\n"
+"La versione completa è disponibile per l'acquisto sull'iTunes Store."
#: engines/scumm/detection.cpp:1341
-#, fuzzy
msgid "Show Object Line"
-msgstr "Mostra etichette oggetti"
+msgstr "Mostra riga nomi oggetti"
#: engines/scumm/detection.cpp:1342
msgid "Show the names of objects at the bottom of the screen"
-msgstr ""
+msgstr "Mostra i nomi degli oggetti nella parte inferiore dello schermo"
#: engines/scumm/dialogs.cpp:172
#, c-format
@@ -3540,15 +3553,13 @@ msgstr "Gioco in pausa. Premere SPAZIO per continuare."
#. "Moechten Sie wirklich neu starten? (J/N)J"
#. Will react to J as 'Yes'
#: engines/scumm/dialogs.cpp:179
-#, fuzzy
msgid "Are you sure you want to restart? (Y/N)Y"
-msgstr "Sei sicuro di voler riavviare? (S/N)S"
+msgstr "Sei sicuro di voler ricominciare? (S/N)S"
#. I18N: you may specify 'Yes' symbol at the end of the line. See previous comment
#: engines/scumm/dialogs.cpp:181
-#, fuzzy
msgid "Are you sure you want to quit? (Y/N)Y"
-msgstr "Sei sicuro di voler uscire? (S/N)S"
+msgstr "Sei sicuro di voler uscire? (S/N)S"
#: engines/scumm/dialogs.cpp:186
msgid "Play"
@@ -3672,7 +3683,6 @@ msgid "Ctrl"
msgstr "Ctrl"
#: engines/scumm/help.cpp:80
-#, fuzzy
msgid "Load saved game 1-10"
msgstr "Carica salvataggio 1-10"
@@ -3683,7 +3693,6 @@ msgid "Alt"
msgstr "Alt"
#: engines/scumm/help.cpp:81
-#, fuzzy
msgid "Save game 1-10"
msgstr "Salva nella posizione 1-10"
@@ -4058,25 +4067,24 @@ msgid "Third kid"
msgstr "Terzo ragazzo"
#: engines/scumm/help.cpp:292
-#, fuzzy
msgid "Toggle Inventory/IQ Points display"
-msgstr "Mostra/nascondi schermo centrale dati"
+msgstr "Alterna tra visualizzazione Inventario e Punteggio QI"
#: engines/scumm/help.cpp:293
msgid "Toggle Keyboard/Mouse Fighting (*)"
-msgstr ""
+msgstr "Alterna tra Tastiera o Mouse per le fasi di combattimento (*)"
#: engines/scumm/help.cpp:295
msgid "* Keyboard Fighting is always on,"
-msgstr ""
+msgstr "* La tastiera è sempre attiva durante i combattimenti,"
#: engines/scumm/help.cpp:296
msgid " so despite the in-game message this"
-msgstr ""
+msgstr " quindi indipendentemente dai messaggi nel gioco,"
#: engines/scumm/help.cpp:297
msgid " actually toggles Mouse Fighting Off/On"
-msgstr ""
+msgstr " questa opzione non fa altro che attivare/disattivare il mouse"
#: engines/scumm/help.cpp:304
msgid "Fighting controls (numpad):"
@@ -4113,11 +4121,11 @@ msgstr "Colpisci in basso"
#: engines/scumm/help.cpp:315
msgid "Sucker punch"
-msgstr ""
+msgstr "Pugno \"a tradimento\""
#: engines/scumm/help.cpp:318
msgid "These are for Indy on left."
-msgstr ""
+msgstr "Validi quando Indy si trova a sinistra."
#: engines/scumm/help.cpp:319
msgid "When Indy is on the right,"
@@ -4181,14 +4189,12 @@ msgid "Snap scroll off"
msgstr ""
#: engines/scumm/input.cpp:593
-#, fuzzy
msgid "Music volume: "
-msgstr "Volume musica:"
+msgstr "Volume musica: "
#: engines/scumm/input.cpp:610
-#, fuzzy
msgid "Subtitle speed: "
-msgstr "Velocità testo:"
+msgstr "Velocità testo: "
#: engines/scumm/scumm.cpp:1880
#, c-format
@@ -4411,6 +4417,14 @@ msgstr ""
msgid "Show the current number of frames per second in the upper left corner"
msgstr ""
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr ""
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr ""
+
#: engines/zvision/detection_tables.h:52
#, fuzzy
msgid "Use the original save/load screens instead of the ScummVM interface"
@@ -4446,7 +4460,7 @@ msgstr ""
#: engines/zvision/detection_tables.h:91
msgid "Use high resolution MPEG video"
-msgstr ""
+msgstr "Usa filmati MPEG ad alta risoluzione"
#: engines/zvision/detection_tables.h:92
#, fuzzy
@@ -4460,6 +4474,9 @@ 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 ""
+"Il salvataggio utilizza la versione %u, ma questo motore supporta solo la "
+"versione %d o inferiori. Procurati una motore aggiornato per usare questo "
+"salvataggio."
#~ msgid ""
#~ "Unable to find \"sky.cpt\" file!\n"
diff --git a/po/nb_NO.po b/po/nb_NO.po
index 79aa121e9c..18bba2e9d7 100644
--- a/po/nb_NO.po
+++ b/po/nb_NO.po
@@ -1,5 +1,5 @@
# Norwegian (Bokmaal) translation for ScummVM.
-# Copyright (C) 2010-2016 The ScummVM Team
+# Copyright (C) 2010-2017 The ScummVM Team
# This file is distributed under the same license as the ScummVM package.
# Einar Johan T. Sømåen <einarjohants@gmail.com>, 2010.
#
@@ -7,11 +7,11 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.3.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2016-12-19 02:13+0100\n"
-"PO-Revision-Date: 2016-12-17 11:35+0000\n"
-"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n"
-"Language-Team: Norwegian Bokmål <https://translations.scummvm.org/projects/"
-"scummvm/scummvm/nb_NO/>\n"
+"POT-Creation-Date: 2016-12-26 16:14+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/scummvm/scummvm/nb_NO/>\n"
"Language: nb_NO\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
@@ -465,7 +465,7 @@ msgstr "Rom:"
#: gui/fluidsynth-dialog.cpp:79
msgid "Damp:"
-msgstr ""
+msgstr "Demp:"
#: gui/fluidsynth-dialog.cpp:86
msgid "Width:"
@@ -847,9 +847,8 @@ msgid "the fullscreen setting could not be changed"
msgstr "fullskjermsinnstillingen kunne ikke endres"
#: gui/options.cpp:486
-#, fuzzy
msgid "the filtering setting could not be changed"
-msgstr "fullskjermsinnstillingen kunne ikke endres"
+msgstr "filterinnstillingen kunne ikke endres"
#: gui/options.cpp:809
msgid "Graphics mode:"
@@ -869,9 +868,8 @@ msgid "Fullscreen mode"
msgstr "Fullskjermsmodus"
#: gui/options.cpp:838
-#, fuzzy
msgid "Filter graphics"
-msgstr "Bruk fargegrafikk"
+msgstr "Filtrer grafikk"
#: gui/options.cpp:838
msgid "Use linear filtering when scaling graphics"
@@ -1349,7 +1347,7 @@ msgstr "# neste"
#: gui/predictivedialog.cpp:87
msgid "add"
-msgstr ""
+msgstr "legg til"
#: gui/predictivedialog.cpp:92 gui/predictivedialog.cpp:167
msgid "Delete char"
@@ -1696,9 +1694,8 @@ msgid "Could not find suitable engine plugin"
msgstr "Kunne ikke finne en passende engine-plugin"
#: common/error.cpp:68
-#, fuzzy
msgid "Engine plugin does not support saved games"
-msgstr "Spillmotor-plugin støtter ikke lagrede tilstander"
+msgstr "Spillmotor-plugin støtter ikke lagrede spill"
#: common/error.cpp:71
msgid "User canceled"
@@ -1879,9 +1876,8 @@ msgid "Could not apply fullscreen setting."
msgstr "Kunne ikke aktivere fullskjermsinnstilling."
#: engines/engine.cpp:373
-#, fuzzy
msgid "Could not apply filtering setting."
-msgstr "Kunne ikke aktivere fullskjermsinnstilling."
+msgstr "Kunne ikke aktivere filterinnstilling."
#: engines/engine.cpp:473
msgid ""
@@ -2181,7 +2177,7 @@ msgstr "Vindusmodus"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:710
#, c-format
msgid "Resolution: %dx%d"
-msgstr ""
+msgstr "Oppløsning: %dx%d"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:731
#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2338
@@ -2195,15 +2191,13 @@ msgstr "Aspekt-rate korrigering deaktivert"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:753
#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2362
-#, fuzzy
msgid "Filtering enabled"
-msgstr "Klikking aktivert"
+msgstr "Filtrering aktivert"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:755
#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2364
-#, fuzzy
msgid "Filtering disabled"
-msgstr "Klikking deaktivert"
+msgstr "Filtrering deaktivert"
#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:47
#: backends/graphics/wincesdl/wincesdl-graphics.cpp:88
@@ -4386,6 +4380,14 @@ msgstr ""
"Vis det gjeldende antall bilder per sekund (FPS) i øvre venstre hjørne av "
"skjermen"
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr ""
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr ""
+
#: engines/zvision/detection_tables.h:52
msgid "Use the original save/load screens instead of the ScummVM interface"
msgstr ""
@@ -4420,7 +4422,6 @@ msgid "Use high resolution MPEG video"
msgstr "Bruk høyoppløst MPEG-video"
#: engines/zvision/detection_tables.h:92
-#, fuzzy
msgid "Use MPEG video from the DVD version instead of lower resolution AVI"
msgstr ""
"Bruk MPEG-video fra DVD-versjonen istedenfor AVI-versjonen med lavere "
diff --git a/po/nl_NL.po b/po/nl_NL.po
index d0ea83fc20..5fe5dffa24 100644
--- a/po/nl_NL.po
+++ b/po/nl_NL.po
@@ -1,5 +1,5 @@
# Dutch translation for ScummVM.
-# Copyright (C) 2014-2016 The ScummVM Team
+# Copyright (C) 2014-2017 The ScummVM Team
# This file is distributed under the same license as the ScummVM package.
# FIRST AUTHOR scummvm@bencastricum.nl, 2014.
#
@@ -7,11 +7,11 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.9.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2016-12-19 02:13+0100\n"
-"PO-Revision-Date: 2016-12-18 19:21+0000\n"
+"POT-Creation-Date: 2016-12-26 16:14+0100\n"
+"PO-Revision-Date: 2017-01-02 18:38+0000\n"
"Last-Translator: Ben Castricum <github@bencastricum.nl>\n"
-"Language-Team: Dutch <https://translations.scummvm.org/projects/scummvm/"
-"scummvm/nl/>\n"
+"Language-Team: Dutch "
+"<https://translations.scummvm.org/projects/scummvm/scummvm/nl/>\n"
"Language: nl_NL\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
@@ -2511,7 +2511,7 @@ msgstr "Huidige videomodus:"
#: backends/platform/wii/options.cpp:56
msgid "Double-strike"
-msgstr "Dubbele-slag"
+msgstr "Double-strike"
#: backends/platform/wii/options.cpp:60
msgid "Horizontal underscan:"
@@ -4410,6 +4410,14 @@ msgstr "Toon FPS-teller"
msgid "Show the current number of frames per second in the upper left corner"
msgstr "Toon de huidige Frames Per Second teller in de linkerbovenhoek"
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr "Sprite bilineair filteren (langzaam)"
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr "Pas bilineair filteren toe op individuele sprites"
+
#: engines/zvision/detection_tables.h:52
msgid "Use the original save/load screens instead of the ScummVM interface"
msgstr ""
diff --git a/po/nn_NO.po b/po/nn_NO.po
index 9951c5680b..694412c320 100644
--- a/po/nn_NO.po
+++ b/po/nn_NO.po
@@ -1,5 +1,5 @@
# Norwegian (Nynorsk) translation for ScummVM.
-# Copyright (C) 2010-2016 The ScummVM Team
+# Copyright (C) 2010-2017 The ScummVM Team
# This file is distributed under the same license as the ScummVM package.
# Einar Johan T. Sømåen <einarjohants@gmail.com>, 2010.
#
@@ -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: 2016-12-19 02:13+0100\n"
+"POT-Creation-Date: 2016-12-26 16:14+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/"
@@ -4343,6 +4343,14 @@ msgid "Show the current number of frames per second in the upper left corner"
msgstr ""
"Vis det gjeldande antall bilete per sekund i øvre venstre hjørne av skjermen"
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr ""
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr ""
+
#: engines/zvision/detection_tables.h:52
msgid "Use the original save/load screens instead of the ScummVM interface"
msgstr ""
diff --git a/po/pl_PL.po b/po/pl_PL.po
index 4ed6ffc1b3..371395d298 100644
--- a/po/pl_PL.po
+++ b/po/pl_PL.po
@@ -1,5 +1,5 @@
# Polish translation for ScummVM.
-# Copyright (C) 2010-2016 The ScummVM Team
+# Copyright (C) 2010-2017 The ScummVM Team
# This file is distributed under the same license as the ScummVM package.
# Grajpopolsku.pl <grajpopolsku@gmail.com>, 2011-2013.
#
@@ -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: 2016-12-19 02:13+0100\n"
+"POT-Creation-Date: 2016-12-26 16:14+0100\n"
"PO-Revision-Date: 2016-12-12 08:18+0000\n"
"Last-Translator: Rafa³ Rzepecki <divided.mind@gmail.com>\n"
"Language-Team: Polish <https://translations.scummvm.org/projects/scummvm/"
@@ -4395,6 +4395,14 @@ msgstr "Poka¿ licznik klatek na sekundê"
msgid "Show the current number of frames per second in the upper left corner"
msgstr "Wy¶wietl aktualn± liczbê klatek na sekundê w lewym, górnym logu"
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr ""
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr ""
+
#: engines/zvision/detection_tables.h:52
msgid "Use the original save/load screens instead of the ScummVM interface"
msgstr "U¿yj oryginalnych ekranów odczytu/zapisu zamiast interfejsu ScummVM"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index bd666767e1..5b42e795ee 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -1,5 +1,5 @@
# Portuguese (Brazilian) translation for ScummVM.
-# Copyright (C) 2010-2016 The ScummVM Team
+# Copyright (C) 2010-2017 The ScummVM Team
# This file is distributed under the same license as the ScummVM package.
# Saulo Benigno <saulobenigno@gmail.com>, 2010.
#
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.3.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2016-12-19 02:13+0100\n"
-"PO-Revision-Date: 2016-12-18 18:28+0000\n"
-"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n"
+"POT-Creation-Date: 2016-12-26 16:14+0100\n"
+"PO-Revision-Date: 2016-12-22 21:50+0000\n"
+"Last-Translator: Alexandre Folle de Menezes <afmenez@terra.com.br>\n"
"Language-Team: Portuguese (Brazil) <https://translations.scummvm.org/"
"projects/scummvm/scummvm/pt_BR/>\n"
"Language: pt_BR\n"
@@ -37,13 +37,12 @@ msgid "Available engines:"
msgstr "Programas disponíveis:"
#: gui/browser.cpp:68 gui/browser_osx.mm:104
-#, fuzzy
msgid "Show hidden files"
-msgstr "Mostrar / Ocultar console"
+msgstr "Mostrar arquivos ocultos"
#: gui/browser.cpp:68
msgid "Show files marked with the hidden attribute"
-msgstr ""
+msgstr "Mostrar arquivos marcados como ocultos"
#: gui/browser.cpp:72 gui/remotebrowser.cpp:56
msgid "Go up"
@@ -83,9 +82,8 @@ msgid "Choose"
msgstr "Escolher"
#: gui/downloaddialog.cpp:48
-#, fuzzy
msgid "Select directory where to download game data"
-msgstr "Selecione a pasta com os arquivos do jogo"
+msgstr "Selecione a pasta para baixar os arquivos do jogo"
#: gui/downloaddialog.cpp:49 gui/editgamedialog.cpp:470 gui/launcher.cpp:197
msgid "Select directory with game data"
@@ -93,11 +91,11 @@ msgstr "Selecione a pasta com os arquivos do jogo"
#: gui/downloaddialog.cpp:51 gui/downloaddialog.cpp:263
msgid "From: "
-msgstr ""
+msgstr "De: "
#: gui/downloaddialog.cpp:52 gui/downloaddialog.cpp:264
msgid "To: "
-msgstr ""
+msgstr "Para: "
#: gui/downloaddialog.cpp:63
msgid "Cancel download"
@@ -110,13 +108,14 @@ msgstr ""
#: gui/downloaddialog.cpp:67
msgid "Hide"
-msgstr ""
+msgstr "Ocultar"
#: gui/downloaddialog.cpp:117
msgid ""
"It looks like your connection is limited. Do you really want to download "
"files with it?"
msgstr ""
+"Parece que a sua conexão é limitada. Deseja baixar os arquivos mesmo assim?"
#: gui/downloaddialog.cpp:118 gui/downloaddialog.cpp:152
#: gui/filebrowser-dialog.cpp:132 gui/fluidsynth-dialog.cpp:217
@@ -153,6 +152,8 @@ msgid ""
"Cannot create a directory to download - the specified directory has a file "
"with the same name."
msgstr ""
+"Não é possível criar uma pasta para baixar - a pasta especificada possui um "
+"arquivo com o mesmo nome."
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:522
@@ -180,11 +181,13 @@ msgid ""
"The \"%s\" already exists in the specified directory.\n"
"Do you really want to download files into that directory?"
msgstr ""
+"O \"%s\" já existe na pasta especificada.\n"
+"Deseja mesmo baixar arquivos nessa pasta?"
#: gui/downloaddialog.cpp:251
#, c-format
msgid "Downloaded %s %s / %s %s"
-msgstr ""
+msgstr "Baixado %s %s / %s %s"
#: gui/downloaddialog.cpp:258
#, fuzzy, c-format
@@ -4434,6 +4437,14 @@ msgstr ""
msgid "Show the current number of frames per second in the upper left corner"
msgstr ""
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr ""
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr ""
+
#: engines/zvision/detection_tables.h:52
msgid "Use the original save/load screens instead of the ScummVM interface"
msgstr ""
@@ -4466,11 +4477,11 @@ msgstr ""
#: engines/zvision/detection_tables.h:91
msgid "Use high resolution MPEG video"
-msgstr ""
+msgstr "Usar vídeos MPEG de alta resolução"
#: engines/zvision/detection_tables.h:92
msgid "Use MPEG video from the DVD version instead of lower resolution AVI"
-msgstr ""
+msgstr "Usar vídeo MPEG da versão em DVD em vez do AVi de resolução mais baixa"
#: engines/zvision/file/save_manager.cpp:220
#, c-format
diff --git a/po/pt_PT.po b/po/pt_PT.po
index 46fb9ca41c..0773e99203 100644
--- a/po/pt_PT.po
+++ b/po/pt_PT.po
@@ -1,13 +1,13 @@
-# LANGUAGE translation for ScummVM.
-# Copyright (C) YEAR ScummVM Team
+# Portuguese (Portugal) translation for ScummVM.
+# Copyright (C) 2016-2017 ScummVM Team
# This file is distributed under the same license as the ScummVM package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Fernando Sarmento <nando_sarmento@hotmail.com>, 2016
#
msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.10.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2016-12-19 02:13+0100\n"
+"POT-Creation-Date: 2016-12-26 16:14+0100\n"
"PO-Revision-Date: 2016-12-14 00:22+0000\n"
"Last-Translator: Fernando Sarmento <nando_sarmento@hotmail.com>\n"
"Language-Team: Portuguese (Portugal) <https://translations.scummvm.org/"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 2.9\n"
-"X-Language-name: Portugues (Portugal)\n"
+"X-Language-name: Portuguese (Portugal)\n"
#: gui/about.cpp:94
#, c-format
@@ -4237,6 +4237,14 @@ msgstr ""
msgid "Show the current number of frames per second in the upper left corner"
msgstr ""
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr ""
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr ""
+
#: engines/zvision/detection_tables.h:52
msgid "Use the original save/load screens instead of the ScummVM interface"
msgstr ""
diff --git a/po/ru_RU.po b/po/ru_RU.po
index 0fae24fbc5..e404ee228f 100644
--- a/po/ru_RU.po
+++ b/po/ru_RU.po
@@ -1,23 +1,23 @@
# Russian translation for ScummVM.
-# Copyright (C) 2010-2016 The ScummVM Team
+# Copyright (C) 2010-2017 The ScummVM Team
# This file is distributed under the same license as the ScummVM package.
-# Eugene Sandulenko <sev@scummvm.org>, 2010-2016
+# Eugene Sandulenko <sev@scummvm.org>, 2010-2017
#
msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.8.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2016-12-19 02:13+0100\n"
-"PO-Revision-Date: 2016-12-17 22:07+0000\n"
-"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n"
-"Language-Team: Russian <https://translations.scummvm.org/projects/scummvm/"
-"scummvm/ru/>\n"
+"POT-Creation-Date: 2016-12-26 16:14+0100\n"
+"PO-Revision-Date: 2016-12-31 21:04+0000\n"
+"Last-Translator: Ivan Lukyanov <lid-gr@tut.by>\n"
+"Language-Team: Russian "
+"<https://translations.scummvm.org/projects/scummvm/scummvm/ru/>\n"
"Language: ru_RU\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-5\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<="
+"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 2.9\n"
"X-Language-name: Russian\n"
@@ -848,7 +848,7 @@ msgstr "ßÞÛÝÞíÚàÐÝÝëÙ àÕÖØÜ ÝÕ ÜÞÖÕâ Ñëâì Ø×ÜÕÝñÝ"
#: gui/options.cpp:486
msgid "the filtering setting could not be changed"
-msgstr "àÕÖØÜ ÜÐáèâÐÑØàÞÒÐÝØï ÝÕ ÜÞÖÕâ Ñëâì Ø×ÜÕÝñÝ"
+msgstr "àÕÖØÜ äØÛìâàÐæØØ ÝÕ ÜÞÖÕâ Ñëâì Ø×ÜÕÝñÝ"
#: gui/options.cpp:809
msgid "Graphics mode:"
@@ -869,11 +869,11 @@ msgstr "¿ÞÛÝÞíÚàÐÝÝëÙ àÕÖØÜ"
#: gui/options.cpp:838
msgid "Filter graphics"
-msgstr "¼ÐáèâÐÑØàÞÒÐâì ÓàÐäØÚã"
+msgstr "ÄØÛìâàÞÒÐÝØÕ ÓàÐäØÚØ"
#: gui/options.cpp:838
msgid "Use linear filtering when scaling graphics"
-msgstr "¸áßÞÛì×ÞÒÐâì ÛØÝÕÙÝÞÕ ÜÐáèâÐÑØàÞÒÐÝØï ÔÛï ãÒÕÛØçÕÝØï àÐ×àÕèÕÝØï"
+msgstr "¸áßÞÛì×ÞÒÐâì ÛØÝÕÙÝãî äØÛìâàÐæØî ÔÛï ãÒÕÛØçÕÝØï àÐ×àÕèÕÝØï"
#: gui/options.cpp:841
msgid "Aspect ratio correction"
@@ -1460,7 +1460,7 @@ msgstr "²àÕÜï ØÓàë: "
#: gui/saveload-dialog.cpp:577 gui/saveload-dialog.cpp:665
msgid "Untitled saved game"
-msgstr "ÁÞåàÐÝÕÝØÕ ÑÕ× ØÜÕÝØ"
+msgstr "ÁÞåàÐÝñÝÝÐï ØÓàÐ ÑÕ× ØÜÕÝØ"
#: gui/saveload-dialog.cpp:718
msgid "Next"
@@ -1763,7 +1763,7 @@ msgid ""
msgstr ""
"¿ÞåÞÖÕ, çâÞ ØÓàÐ Ò '%s' ÝÕØ×ÒÕáâÝÐ.\n"
"¿ÞÖÐÛãÙáâÐ, áÞÞÑéØâÕ ÚÞÜÐÝÔÕ ScummVM áÛÕÔãîéØÕ ÔÐÝÝëÕ ÒÜÕáâÕ\n"
-"á ÝÐ×ÒÐÝØÕÜ ØÓàë, Õñ ÒÕàáØÕÙ, ï×ëÚÞÜ Ø â. Ô.:"
+"á ÝÐ×ÒÐÝØÕÜ ØÓàë, Õñ ÒÕàáØÕÙ, ï×ëÚÞÜ Ø Ôà.:"
#: engines/dialogs.cpp:85
msgid "~R~esume"
@@ -1887,7 +1887,7 @@ msgstr "½Õ ÜÞÓã ßàØÜÕÝØâì ßÞÛÝÞíÚàÐÝÝëÙ àÕÖØÜ."
#: engines/engine.cpp:373
msgid "Could not apply filtering setting."
-msgstr "½Õ ÜÞÓã ßàØÜÕÝØâì ÝÐáâàÞÙÚØ ÜÐáèâÐÑØàÞÒÐÝØï."
+msgstr "½Õ ÜÞÓã ßàØÜÕÝØâì ÝÐáâàÞÙÚØ äØÛìâàÐæØØ."
#: engines/engine.cpp:473
msgid ""
@@ -2204,12 +2204,12 @@ msgstr "ºÞààÕÚæØï áÞÞâÝÞèÕÝØï áâÞàÞÝ ÒëÚÛîçÕÝÐ"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:753
#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2362
msgid "Filtering enabled"
-msgstr "¼ÐáèâÐÑØàÞÒÐÝØÕ ÒÚÛîçÕÝÞ"
+msgstr "ÄØÛìâàÐæØï ÒÚÛîçÕÝÐ"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:755
#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2364
msgid "Filtering disabled"
-msgstr "¼ÐáèâÐÑØàÞÒÐÝØÕ ÒëÚÛîçÕÝÞ"
+msgstr "ÄØÛìàÐæØï ÒëÚÛîçÕÝÐ"
#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:47
#: backends/graphics/wincesdl/wincesdl-graphics.cpp:88
@@ -2512,7 +2512,7 @@ msgstr "ÂÕÚãéØÙ ÒØÔÕÞàÕÖØÜ:"
#: backends/platform/wii/options.cpp:56
msgid "Double-strike"
-msgstr "´ÒÞÙÝÞÙ ãÔÐà"
+msgstr "ÃÔÒÞÕÝÝëÙ"
#: backends/platform/wii/options.cpp:60
msgid "Horizontal underscan:"
@@ -4407,6 +4407,14 @@ msgstr "¿ÞÚÐ×Ðâì áçñâçØÚ ÚÐÔàÞÒ Ò áÕÚãÝÔã"
msgid "Show the current number of frames per second in the upper left corner"
msgstr "¿ÞÚÐ×Ðâì Ò ÒÕàåÝÕÜ ÛÕÒÞÜ ãÓÛã âÕÚãéÕÕ ÚÞÛØçÕáâÒÞ ÚÐÔàÞÒ Ò áÕÚãÝÔã"
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr "±ØÛØÝÕÙÝÐï äØÛìâàÐæØï áßàÐÙâÞÒ (ÜÕÔÛÕÝÝÞ)"
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr "¿àØÜÕÝØâì ÑØÛØÝÕÙÝãî äØÛìâàÐæØî ÔÛï ØÝÔØÒØÔãÐÛìÝëå áßàÐÙâÞÒ"
+
#: engines/zvision/detection_tables.h:52
msgid "Use the original save/load screens instead of the ScummVM interface"
msgstr ""
diff --git a/po/scummvm.pot b/po/scummvm.pot
index 269979290b..9e98951584 100644
--- a/po/scummvm.pot
+++ b/po/scummvm.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.10.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2016-12-19 02:13+0100\n"
+"POT-Creation-Date: 2016-12-26 16:14+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"
@@ -4205,6 +4205,14 @@ msgstr ""
msgid "Show the current number of frames per second in the upper left corner"
msgstr ""
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr ""
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr ""
+
#: engines/zvision/detection_tables.h:52
msgid "Use the original save/load screens instead of the ScummVM interface"
msgstr ""
diff --git a/po/sv_SE.po b/po/sv_SE.po
index c1593f52d6..0dea06acdc 100644
--- a/po/sv_SE.po
+++ b/po/sv_SE.po
@@ -1,5 +1,5 @@
# Swedish translation for ScummVM.
-# Copyright (C) 2011-2016 The ScummVM Team
+# Copyright (C) 2011-2017 The ScummVM Team
# This file is distributed under the same license as the ScummVM package.
# Hampus Flink <hampus.flink@gmail.com>, 2011.
#
@@ -7,11 +7,11 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.5.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2016-12-19 02:13+0100\n"
-"PO-Revision-Date: 2016-12-04 13:18+0000\n"
+"POT-Creation-Date: 2016-12-26 16:14+0100\n"
+"PO-Revision-Date: 2017-01-03 16:23+0000\n"
"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n"
-"Language-Team: Swedish <https://translations.scummvm.org/projects/scummvm/"
-"scummvm/sv/>\n"
+"Language-Team: Swedish "
+"<https://translations.scummvm.org/projects/scummvm/scummvm/sv/>\n"
"Language: sv_SE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
@@ -870,7 +870,7 @@ msgstr "Fullskärmsläge"
#: gui/options.cpp:838
msgid "Filter graphics"
-msgstr "Filtergrafik"
+msgstr "Filtrera grafik"
#: gui/options.cpp:838
msgid "Use linear filtering when scaling graphics"
@@ -1760,6 +1760,10 @@ msgid ""
"Please, report the following data to the ScummVM team along with name\n"
"of the game you tried to add and its version, language, etc.:"
msgstr ""
+"Spelet i '%s' verkar vara okänt.\n"
+"Rapportera informationen nedan till ScummVM-teamet tillsammans med namnet på "
+"spelet du försökte lägga till och vilken version det är, vilket språk det är "
+"på och så vidare:"
#: engines/dialogs.cpp:85
msgid "~R~esume"
@@ -1842,13 +1846,13 @@ msgstr ""
"ytterligare assistens."
#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
-#, 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."
msgstr ""
-"Kunde inte spara data (%s)! Var god läs README-filen för grundläggande "
-"information och instruktioner för hur du kan få mer hjälp."
+"Kunde inte spara data (%s)! Läs README-filen för grundläggande information "
+"och instruktioner för hur du kan få mer hjälp."
#: engines/dialogs.cpp:307 engines/mohawk/dialogs.cpp:100
#: engines/tsage/dialogs.cpp:112
@@ -1882,7 +1886,7 @@ msgstr "Kunde inte applicera fullskärmsinställning."
#: engines/engine.cpp:373
msgid "Could not apply filtering setting."
-msgstr "Kunde inte ändra filterinställningen."
+msgstr "Filterinställningen stöds inte."
#: engines/engine.cpp:473
msgid ""
@@ -2195,7 +2199,7 @@ msgstr "Korrektion av bildförhållande av"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:753
#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2362
msgid "Filtering enabled"
-msgstr "Filtrering är aktiverat"
+msgstr "Filtrering aktiverat"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:755
#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2364
@@ -2746,7 +2750,7 @@ msgstr "Sök efter uppdateringar..."
#: engines/toon/toon.cpp:4918
#, c-format
msgid "Unable to locate the '%s' engine data file."
-msgstr ""
+msgstr "Kunde inte hitta spelmotorns datafil '%s'."
#: engines/access/resources.cpp:52 engines/drascula/drascula.cpp:979
#: engines/hugo/hugo.cpp:448 engines/lure/lure.cpp:73
@@ -2754,7 +2758,7 @@ msgstr ""
#: engines/toon/toon.cpp:4930
#, c-format
msgid "The '%s' engine data file is corrupt."
-msgstr ""
+msgstr "Datafilen '%s' är trasig."
#: engines/access/resources.cpp:61 engines/drascula/drascula.cpp:990
#: engines/hugo/hugo.cpp:458 engines/lure/lure.cpp:76
@@ -2765,6 +2769,8 @@ msgid ""
"Incorrect version of the '%s' engine data file found. Expected %d.%d but got "
"%d.%d."
msgstr ""
+"Felaktig version av datafilen '%s' hittades. Version %d.%d krävs, hittade "
+"%d.%d."
#: engines/adl/detection.cpp:45 engines/adl/detection.cpp:55
msgid "Color mode"
@@ -2794,9 +2800,9 @@ msgstr "Använd originalskärmar för spara/ladda"
#: engines/drascula/detection.cpp:303 engines/dreamweb/detection.cpp:49
#: engines/neverhood/detection.cpp:178 engines/sci/detection.cpp:431
#: engines/sherlock/detection.cpp:72 engines/toltecs/detection.cpp:201
-#, fuzzy
msgid "Use the original save/load screens instead of the ScummVM ones"
-msgstr "Använder originalskärmarna för spara/ladda istället för ScummVM:s"
+msgstr ""
+"Använd originalskärmarna för ladda och spara istället för ScummVM:s egna"
#: engines/agi/detection.cpp:157
msgid "Use an alternative palette"
@@ -2827,12 +2833,11 @@ msgstr "Använd högupplöst typsnitt för Hercules"
#: engines/agi/detection.cpp:178
msgid "Uses Hercules hires font, when font file is available."
-msgstr ""
-"Använd högupplöst typsnitt för Herkules när typsnittsfilen är tillgänglig."
+msgstr "Använd högupplöst Herkules-typsnitt när typsnittsfilen är tillgänglig."
#: engines/agi/detection.cpp:187
msgid "Pause when entering commands"
-msgstr "Pausa när kommandon anges"
+msgstr "Pausa spelet när du skriver in kommandon"
#: engines/agi/detection.cpp:188
msgid ""
@@ -2853,7 +2858,7 @@ msgstr ""
#: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266
#: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62
msgid "Restore game:"
-msgstr "Återställ spel:"
+msgstr "Ladda sparfil:"
#: engines/agi/saveload.cpp:774 engines/avalanche/parser.cpp:1888
#: engines/cge/events.cpp:83 engines/cge2/events.cpp:76
@@ -2866,7 +2871,7 @@ msgstr "Återställ spel:"
#: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266
#: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62
msgid "Restore"
-msgstr "Återställ"
+msgstr "Ladda"
#: engines/agos/saveload.cpp:159 engines/scumm/scumm.cpp:2436
#, fuzzy, c-format
@@ -2904,7 +2909,7 @@ msgstr ""
#: engines/agos/animation.cpp:558
#, c-format
msgid "Cutscene file '%s' not found!"
-msgstr "Filmscensfilen '%s' hittades ej!"
+msgstr "Filmfilen '%s' hittades ej!"
#: engines/cge/detection.cpp:105 engines/cge2/detection.cpp:101
msgid "Color Blind Mode"
@@ -3248,24 +3253,30 @@ msgid ""
"You're missing a Riven executable. The Windows executable is 'riven.exe' or "
"'rivendmo.exe'. "
msgstr ""
+"Rivens huvudprogram saknas. Windowsprogrammet heter 'riven.exe' eller "
+"'rivendmo.exe'. "
#: engines/mohawk/riven.cpp:151
msgid ""
"Using the 'arcriven.z' installer file also works. In addition, you can use "
"the Mac 'Riven' executable."
msgstr ""
+"Det går även bra med installationsfilen 'arcriven.z', eller "
+"Macintoshprogrammet 'Riven'."
#: engines/mohawk/riven.cpp:162
msgid ""
"You're missing 'extras.mhk'. Using the 'arcriven.z' installer file also "
"works."
msgstr ""
+"Filen 'extras.mhk' saknas. Det går även bra att använda installationsfilen "
+"'arcriven.z' i stället."
#: engines/mohawk/riven_external.cpp:213
msgid ""
"Exploration beyond this point available only within the full version of\n"
"the game."
-msgstr ""
+msgstr "För fortsatt utforskande krävs den fullständiga versionen av spelet."
#: engines/mohawk/riven_external.cpp:655
msgid ""
@@ -3275,6 +3286,11 @@ msgid ""
"the game. ScummVM cannot do that and\n"
"the site no longer exists."
msgstr ""
+"Har skulle Riven-demon ha\n"
+"frågat om du vill öppna en webbläsare\n"
+"för att gå in på Red Orb-butiken och köpa\n"
+"spelet. Det här går inte i ScummVM, och\n"
+"sidan i fråga finns inte längre."
#: engines/mohawk/mohawk.cpp:61
msgid "The game is paused. Press any key to continue."
@@ -3357,9 +3373,8 @@ msgstr ""
"Var god rapportera till teamet."
#: engines/pegasus/pegasus.cpp:714
-#, fuzzy
msgid "Invalid file name for saving"
-msgstr "Ange ett filnamn för att spara"
+msgstr "Ogiltigt namn på sparfilen"
#: engines/pegasus/pegasus.cpp:2507
msgid "Up/Zoom In/Move Forward/Open Doors"
@@ -3468,11 +3483,9 @@ msgid "Use silver cursors"
msgstr "Använd silverpekare"
#: engines/sci/detection.cpp:474
-#, fuzzy
msgid ""
"Use the alternate set of silver cursors instead of the normal golden ones"
-msgstr ""
-"Använd de alternativa silverpekarna istället för de normala guldpekarna"
+msgstr "Använd muspekare i silver istället för de vanliga guldfärgade"
#: engines/scumm/detection.cpp:1120
msgid ""
@@ -3482,6 +3495,10 @@ msgid ""
"tried\n"
"to add and its version, language, etc.:\n"
msgstr ""
+"Okänd version av spelet. Om det *INTE* är en spelarmodifierad\n"
+"version (som en spelarskapad översättning) rapportera följande\n"
+"data till ScummVM-teamet tillsammans med namnet på spelet du\n"
+"försökte lägga till och vilken version och språk det har, osv.\n"
#: engines/scumm/detection.cpp:1138
msgid ""
@@ -3489,6 +3506,9 @@ msgid ""
"piracy.\n"
"The full version is available for purchase from the iTunes Store."
msgstr ""
+"Lite-versionen av Putt-Putt Saves the Zoo iOS stöds inte av upphovsrättsliga "
+"skäl.\n"
+"Den fullständiga versionen går att köpa på iTunes Store."
#: engines/scumm/detection.cpp:1341
msgid "Show Object Line"
@@ -4248,7 +4268,7 @@ msgstr "Visar fönster med en delvis genomskinlig bakgrund"
#: engines/sky/compact.cpp:141
msgid "The \"sky.cpt\" engine data file has an incorrect size."
-msgstr ""
+msgstr "Datafilen 'sky.cpt' har felaktig storlek."
#: engines/sky/detection.cpp:44
msgid "Floppy intro"
@@ -4350,7 +4370,7 @@ msgstr ""
#: engines/tony/tony.cpp:258
#, c-format
msgid "Font variant not present in '%s' engine data file."
-msgstr ""
+msgstr "Typsnittsvarianten finns inte i datafilen '%s'."
#: engines/toon/toon.cpp:222
#, fuzzy, c-format
@@ -4362,7 +4382,7 @@ msgstr ""
#: engines/toon/toon.cpp:226
#, c-format
msgid "Could not quick save into slot #%d"
-msgstr ""
+msgstr "Det gick inte att snabbspara i position #%d"
#: engines/toon/toon.cpp:239
#, fuzzy, c-format
@@ -4372,9 +4392,9 @@ msgstr ""
"\n"
#: engines/toon/toon.cpp:243
-#, fuzzy, c-format
+#, c-format
msgid "Could not quick load the saved game #%d"
-msgstr "Vill du ladda sparat spel?"
+msgstr "Det gick inte att snabbladda sparat spel #%d"
#: engines/wintermute/detection.cpp:58
msgid "Show FPS-counter"
@@ -4385,6 +4405,14 @@ msgid "Show the current number of frames per second in the upper left corner"
msgstr ""
"Visar det aktuella antalet bildrutor per sekund i det övre vänstra hörnet"
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr "Bilinjär filtrering av rörliga figurer (LÅNGSAM)"
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr "Tillämpa bilinjär filtrering på enskilda rörliga figurer"
+
#: engines/zvision/detection_tables.h:52
msgid "Use the original save/load screens instead of the ScummVM interface"
msgstr "Använd originalskärmarna för spara/ladda istället för ScummVM:s"
@@ -4429,6 +4457,9 @@ 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 ""
+"Den här sparfilen använder version %u, men spelmotorn har bara stöd för upp "
+"till version %d. Det krävs en uppdaterad version av spelmotorn för att "
+"använda den här sparfilen."
#~ msgid ""
#~ "Unable to find \"sky.cpt\" file!\n"
diff --git a/po/uk_UA.po b/po/uk_UA.po
index 6bf8f4d88c..230c798004 100644
--- a/po/uk_UA.po
+++ b/po/uk_UA.po
@@ -1,24 +1,24 @@
# Ukrainian translation for ScummVM.
-# Copyright (C) 2010-2016 The ScummVM Team
+# Copyright (C) 2010-2017 The ScummVM Team
# This file is distributed under the same license as the ScummVM package.
# Lubomyr Lisen, 2010.
-# Eugene Sandulenko <sev@scummvm.org>, 2010-2016
+# Eugene Sandulenko <sev@scummvm.org>, 2010-2017
#
msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.9.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2016-12-19 02:13+0100\n"
-"PO-Revision-Date: 2016-12-17 22:05+0000\n"
+"POT-Creation-Date: 2016-12-26 16:14+0100\n"
+"PO-Revision-Date: 2017-01-01 00:02+0000\n"
"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n"
-"Language-Team: Ukrainian <https://translations.scummvm.org/projects/scummvm/"
-"scummvm/uk/>\n"
+"Language-Team: Ukrainian "
+"<https://translations.scummvm.org/projects/scummvm/scummvm/uk/>\n"
"Language: uk_UA\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-5\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<="
+"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 2.9\n"
"X-Language-name: Ukrainian\n"
@@ -41,7 +41,7 @@ msgstr "¿ÞÚÐ×ÐâØ cåÞÒÐÝö äÐÙÛö"
#: gui/browser.cpp:68
msgid "Show files marked with the hidden attribute"
-msgstr "¿ÞÚÐ×ãô äÐÙÛØ ïÚö ßÞÜöçÕÝÞ ïÚ áåÞÒÐÝö"
+msgstr "¿ÞÚÐ×ãÒÐâØ äÐÙÛØ ïÚö ßÞÜöçÕÝÞ ïÚ áåÞÒÐÝö"
#: gui/browser.cpp:72 gui/remotebrowser.cpp:56
msgid "Go up"
@@ -2510,7 +2510,7 @@ msgstr "¿ÞâÞçÝØÙ ÒöÔÕÞàÕÖØÜ:"
#: backends/platform/wii/options.cpp:56
msgid "Double-strike"
-msgstr "¿ÞÔÒöÙÝØÙ ãÔÐà"
+msgstr "¿ÞÔÒöÙÝØÙ"
#: backends/platform/wii/options.cpp:60
msgid "Horizontal underscan:"
@@ -3252,8 +3252,8 @@ msgid ""
"You're missing a Riven executable. The Windows executable is 'riven.exe' or "
"'rivendmo.exe'. "
msgstr ""
-"à ÒÐÜ ÝÕÜÐô äÐÙÛã ÔÛï ÒØÚÞÝÐÝÝï Riven. ÄÐÙÛ ÒØÚÞÝÐÝÝï ÔÛï Windows ÜÐô "
-"ÝÐ×Òã'riven.exe' ÐÑÞ 'rivendemo.exe'. "
+"à ÒÐÜ ÝÕÜÐô äÐÙÛã ÔÛï ÒØÚÞÝÐÝÝï Riven. ÄÐÙÛ ÒØÚÞÝÐÝÝï ÔÛï Windows ÜÐô ÝÐ×Òã "
+"'riven.exe' ÐÑÞ 'rivendmo.exe'. "
#: engines/mohawk/riven.cpp:151
msgid ""
@@ -4395,6 +4395,14 @@ msgstr "¿ÞÚÐ×ÐâØ ÛöçØÛìÝØÚ ÚÐÔàöÒ"
msgid "Show the current number of frames per second in the upper left corner"
msgstr "¿ÞÚÐ×ãô ã ÒÕàÝìÞÜã ÛöÒÞÜã Úãâö ßÞâÞçÝã ÚöÛìÚöáâì ÚÐÔàöÒ ÝÐ áÕÚãÝÔã"
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr "±öÛöÝöÙÝÐ äöÛìâàÐæöï áßàÐÙâöÒ (ßÞÒöÛìÝÞ)"
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr "·ÐáâÞáãÒÐâØ ÑöÛöÝöÙÝã äöÛìâàÐæöî ÔÞ ÞÚàÕÜØå áßàÐÙâöÒ"
+
#: engines/zvision/detection_tables.h:52
msgid "Use the original save/load screens instead of the ScummVM interface"
msgstr ""
diff --git a/po/zh-Latn_CN.po b/po/zh-Latn_CN.po
index 4eed00943a..ffcf999c85 100644
--- a/po/zh-Latn_CN.po
+++ b/po/zh-Latn_CN.po
@@ -1,5 +1,5 @@
-# LANGUAGE translation for ScummVM.
-# Copyright (C) YEAR ScummVM Team
+# Chinese Pinyin (Mandarin) translation for ScummVM.
+# Copyright (C) 2016-2017 ScummVM Team
# This file is distributed under the same license as the ScummVM package.
# Chenbo Li <lichenbo1949@gmail.com>, 2016.
#
@@ -7,15 +7,17 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.9.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2016-12-19 02:13+0100\n"
-"PO-Revision-Date: 2016-03-15 04:09-0700\n"
-"Last-Translator: Chenbo Li <lichenbo1949@gmail.com>\n"
-"Language-Team: Chenbo Li <lichenbo1949@gmail.com>\n"
-"Language: Chinese Pinyin (Mandarin)\n"
+"POT-Creation-Date: 2016-12-26 16:14+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/scummvm/zh_LATN@cn/>\n"
+"Language: zh-Latn_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.7\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 2.9\n"
"X-Language-name: Chinese Pinyin (Mandarin)\n"
#: gui/about.cpp:94
@@ -25,11 +27,11 @@ msgstr "(Bianyiyu %s)"
#: gui/about.cpp:101
msgid "Features compiled in:"
-msgstr "Gongneng BianyiYu"
+msgstr "Gongneng BianyiYu:"
#: gui/about.cpp:110
msgid "Available engines:"
-msgstr "KeyongDeYinQing"
+msgstr "KeyongDeYinQing:"
#: gui/browser.cpp:68 gui/browser_osx.mm:104
msgid "Show hidden files"
@@ -245,7 +247,7 @@ msgstr "Pingtai:"
#: gui/editgamedialog.cpp:161 gui/editgamedialog.cpp:163
#: gui/editgamedialog.cpp:164
msgid "Platform the game was originally designed for"
-msgstr "Youxi Chushi Yunxing de Pingtai:"
+msgstr "Youxi Chushi Yunxing de Pingtai"
#: gui/editgamedialog.cpp:163
msgctxt "lowres"
@@ -414,7 +416,7 @@ msgstr ""
#: gui/editgamedialog.cpp:534
msgid "This game ID is already taken. Please choose another one."
-msgstr "Ci Youxi ID Yi Bei Zhanyong. Qing Xuanze Qita Mingcheng"
+msgstr "Ci Youxi ID Yi Bei Zhanyong. Qing Xuanze Qita Mingcheng."
#: gui/editrecorddialog.cpp:58
msgid "Author:"
@@ -438,7 +440,7 @@ msgstr "Shuru Baocun de Wenjianming"
#: gui/filebrowser-dialog.cpp:132
msgid "Do you really want to overwrite the file?"
-msgstr "Nin Shifou Queding Fugai Ciwenjian"
+msgstr "Nin Shifou Queding Fugai Ciwenjian ?"
#: gui/fluidsynth-dialog.cpp:68
msgid "Reverb"
@@ -466,7 +468,7 @@ msgstr "Jibie:"
#: gui/fluidsynth-dialog.cpp:100
msgid "Chorus"
-msgstr "Hechang:"
+msgstr "Hechang"
#: gui/fluidsynth-dialog.cpp:104
msgid "N:"
@@ -522,7 +524,7 @@ msgstr "Chongzhi"
#: gui/fluidsynth-dialog.cpp:150
msgid "Reset all FluidSynth settings to their default values."
-msgstr "Chongzhi Suoyou de FluidSynth Shezhi"
+msgstr "Chongzhi Suoyou de FluidSynth Shezhi."
#: gui/fluidsynth-dialog.cpp:217
msgid ""
@@ -592,7 +594,7 @@ msgstr "Tuichu ScummVM"
#: gui/launcher.cpp:142
msgid "A~b~out..."
-msgstr "~b~Guanyu"
+msgstr "~b~Guanyu..."
#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
msgid "About ScummVM"
@@ -600,7 +602,7 @@ msgstr "Guanyu ScummVM"
#: gui/launcher.cpp:143
msgid "~O~ptions..."
-msgstr "~O~Xuanxiang"
+msgstr "~O~Xuanxiang..."
#: gui/launcher.cpp:143
msgid "Change global ScummVM options"
@@ -616,7 +618,7 @@ msgstr "Kaishi Xuanze de Youxi"
#: gui/launcher.cpp:148
msgid "~L~oad..."
-msgstr "~L~Jiazai"
+msgstr "~L~Jiazai..."
#: gui/launcher.cpp:148
msgid "Load saved game for selected game"
@@ -659,7 +661,7 @@ msgstr "~E~Bianji Youxi ..."
#: gui/launcher.cpp:164
msgctxt "lowres"
msgid "~R~emove Game"
-msgstr "~R~Yichu Youxi ..."
+msgstr "~R~Yichu Youxi"
#: gui/launcher.cpp:172
msgid "Search in game list"
@@ -741,7 +743,7 @@ msgstr "Saomiao Wancheng!"
#: gui/massadd.cpp:262
#, c-format
msgid "Discovered %d new games, ignored %d previously added games."
-msgstr "Faxian le %d ge Xinyouxi, Hulue %d ge YiTianjia de Youxi"
+msgstr "Faxian le %d ge Xinyouxi, Hulue %d ge YiTianjia de Youxi."
#: gui/massadd.cpp:266
#, c-format
@@ -1045,7 +1047,7 @@ msgstr "Xianshi Zimu Bing Bofang Yuyin"
#: gui/options.cpp:1019
msgctxt "lowres"
msgid "Subtitle speed:"
-msgstr "Zimu Sudu"
+msgstr "Zimu Sudu:"
#: gui/options.cpp:1035
msgid "Music volume:"
@@ -1391,12 +1393,12 @@ msgstr "Binaji"
#: gui/recorderdialog.cpp:85 gui/recorderdialog.cpp:242
#: gui/recorderdialog.cpp:252
msgid "Author: "
-msgstr "Zuozhe:"
+msgstr "Zuozhe: "
#: gui/recorderdialog.cpp:86 gui/recorderdialog.cpp:243
#: gui/recorderdialog.cpp:253
msgid "Notes: "
-msgstr "Zhushi:"
+msgstr "Zhushi: "
#: gui/recorderdialog.cpp:154
msgid "Do you really want to delete this record?"
@@ -1445,7 +1447,7 @@ msgstr "Shijian: "
#: gui/saveload-dialog.cpp:564 gui/saveload-dialog.cpp:1074
msgid "Playtime: "
-msgstr "Bofang Shijian:"
+msgstr "Bofang Shijian: "
#: gui/saveload-dialog.cpp:577 gui/saveload-dialog.cpp:665
#, fuzzy
@@ -1470,12 +1472,12 @@ msgstr "Chuangjian Yige Xin Cundang"
#: gui/saveload-dialog.cpp:1053
msgid "Name: "
-msgstr "Mingcheng:"
+msgstr "Mingcheng: "
#: gui/saveload-dialog.cpp:1131
#, c-format
msgid "Enter a description for slot %d:"
-msgstr "Shuru dui %d Dangwei de Miaoshu"
+msgstr "Shuru dui %d Dangwei de Miaoshu:"
#: gui/storagewizarddialog.cpp:55
#, c-format
@@ -1862,11 +1864,11 @@ msgstr "Wufa Qiehuandao Shipin Moshi: '"
#: engines/engine.cpp:363
msgid "Could not apply aspect ratio setting."
-msgstr "Wufa Shezhi Bili Xuanxiang"
+msgstr "Wufa Shezhi Bili Xuanxiang."
#: engines/engine.cpp:368
msgid "Could not apply fullscreen setting."
-msgstr "Wufa Shezhi Quanping Xuanxiang"
+msgstr "Wufa Shezhi Quanping Xuanxiang."
#: engines/engine.cpp:373
#, fuzzy
@@ -2147,7 +2149,7 @@ msgstr "Guan"
#: backends/events/webossdl/webossdl-events.cpp:315
msgid "Swipe two fingers to the right to toggle."
-msgstr "XiangYou Shiyong Liang Gen Shouzhi Huadong Qiehuan"
+msgstr "XiangYou Shiyong Liang Gen Shouzhi Huadong Qiehuan."
#. I18N: Auto-drag toggle status.
#: backends/events/webossdl/webossdl-events.cpp:335
@@ -2156,7 +2158,7 @@ msgstr "Muqian Wei Zidong Tuozhuai Moshi"
#: backends/events/webossdl/webossdl-events.cpp:342
msgid "Swipe three fingers to the right to toggle."
-msgstr "Xiangyou Huadong San Gen Shouzhi Qiehuan"
+msgstr "Xiangyou Huadong San Gen Shouzhi Qiehuan."
#: backends/graphics/opengl/opengl-graphics.cpp:146
msgid "OpenGL"
@@ -2284,11 +2286,11 @@ msgstr "Mingandu"
#: backends/platform/ds/arm9/source/dsoptions.cpp:99
msgid "Initial top screen scale:"
-msgstr "Chushi Shangping Daxiao"
+msgstr "Chushi Shangping Daxiao:"
#: backends/platform/ds/arm9/source/dsoptions.cpp:105
msgid "Main screen scaling:"
-msgstr "Zhu Pingmu Daxiao"
+msgstr "Zhu Pingmu Daxiao:"
#: backends/platform/ds/arm9/source/dsoptions.cpp:107
msgid "Hardware scale (fast, but low quality)"
@@ -2318,7 +2320,7 @@ msgstr "Jinyong Guanji"
#: backends/platform/ios7/ios7_osys_events.cpp:519
#: backends/platform/iphone/osys_events.cpp:300
msgid "Mouse-click-and-drag mode enabled."
-msgstr "QIdong Shubiao Dianji-tuozhuai Moshi"
+msgstr "QIdong Shubiao Dianji-tuozhuai Moshi."
#: backends/platform/ios7/ios7_osys_events.cpp:311
#: backends/platform/ios7/ios7_osys_events.cpp:521
@@ -2330,13 +2332,13 @@ msgstr "Jinyong Shubiao Dianji-Tuozhuai Moshi."
#: backends/platform/ios7/ios7_osys_events.cpp:540
#: backends/platform/iphone/osys_events.cpp:313
msgid "Touchpad mode enabled."
-msgstr "Qiyong Chumoban Moshi"
+msgstr "Qiyong Chumoban Moshi."
#: backends/platform/ios7/ios7_osys_events.cpp:324
#: backends/platform/ios7/ios7_osys_events.cpp:542
#: backends/platform/iphone/osys_events.cpp:315
msgid "Touchpad mode disabled."
-msgstr "Jinyong Chumoban Moshi"
+msgstr "Jinyong Chumoban Moshi."
#: backends/platform/maemo/maemo.cpp:208
msgid "Click Mode"
@@ -2499,11 +2501,11 @@ msgstr "Shuang Ji"
#: backends/platform/wii/options.cpp:60
msgid "Horizontal underscan:"
-msgstr "Shuiping Saomiao"
+msgstr "Shuiping Saomiao:"
#: backends/platform/wii/options.cpp:66
msgid "Vertical underscan:"
-msgstr "Chuizhi Saomiao"
+msgstr "Chuizhi Saomiao:"
#: backends/platform/wii/options.cpp:71
msgid "Input"
@@ -2511,11 +2513,11 @@ msgstr "Shuru"
#: backends/platform/wii/options.cpp:74
msgid "GC Pad sensitivity:"
-msgstr "GC Pan Mingandu"
+msgstr "GC Pan Mingandu:"
#: backends/platform/wii/options.cpp:80
msgid "GC Pad acceleration:"
-msgstr "GC Pad Jiasu"
+msgstr "GC Pad Jiasu:"
#: backends/platform/wii/options.cpp:86
msgid "DVD"
@@ -2671,7 +2673,7 @@ msgstr "Nin Xinagyao Zairu Huo Baocun Youxi Ma?"
#: backends/platform/wince/CEActionsPocket.cpp:326
#: backends/platform/wince/CEActionsSmartphone.cpp:287
msgid " Are you sure you want to quit ? "
-msgstr "Nin Queding Tuichu ma ?"
+msgstr " Nin Queding Tuichu ma ? "
#: backends/platform/wince/CEActionsSmartphone.cpp:50
msgid "Keyboard"
@@ -2683,11 +2685,11 @@ msgstr "Xuanzhuan"
#: backends/platform/wince/CELauncherDialog.cpp:56
msgid "Using SDL driver "
-msgstr "Shiyong SDL Qudong"
+msgstr "Shiyong SDL Qudong "
#: backends/platform/wince/CELauncherDialog.cpp:60
msgid "Display "
-msgstr "Xianshi"
+msgstr "Xianshi "
#: backends/platform/wince/CELauncherDialog.cpp:83
msgid "Do you want to perform an automatic scan ?"
@@ -2797,7 +2799,7 @@ msgstr "Shiyong Qita Mianban"
msgid ""
"Use an alternative palette, common for all Amiga games. This was the old "
"behavior"
-msgstr "Shiyong QIta Mianban, Yiban Yonghu suoyou de Amiga Youxi. "
+msgstr "Shiyong QIta Mianban, Yiban Yonghu suoyou de Amiga Youxi"
#: engines/agi/detection.cpp:167
msgid "Mouse support"
@@ -2808,7 +2810,7 @@ msgid ""
"Enables mouse support. Allows to use mouse for movement and in game menus."
msgstr ""
"Qiyong shubiao zhichi. Yunxu Shiyong Shubiao jinxing Yidong He Youxi Nei "
-"Caidan"
+"Caidan."
#: engines/agi/detection.cpp:177
#, fuzzy
@@ -2942,7 +2944,7 @@ msgstr "Wufa Baocun Cundang "
#: engines/gob/inter_v5.cpp:107
msgid "Failed to delete file."
-msgstr "Wufa Shanchu Wenjian"
+msgstr "Wufa Shanchu Wenjian."
#: engines/groovie/detection.cpp:312
msgid "Fast movie speed"
@@ -3492,7 +3494,7 @@ msgstr ""
#: engines/scumm/dialogs.cpp:172
#, c-format
msgid "Insert Disk %c and Press Button to Continue."
-msgstr "Charu Guangpan %c Bing An Anniu YI jixu"
+msgstr "Charu Guangpan %c Bing An Anniu YI jixu."
#: engines/scumm/dialogs.cpp:173
#, c-format
@@ -3591,7 +3593,7 @@ msgstr "Yuyin He Zimu"
#: engines/scumm/dialogs.cpp:654
msgid "Select a Proficiency Level."
-msgstr "Qing Xuanze Shulian Dengji"
+msgstr "Qing Xuanze Shulian Dengji."
#: engines/scumm/dialogs.cpp:656
msgid "Refer to your Loom(TM) manual for help."
@@ -3727,15 +3729,15 @@ msgstr "* Zhuyi Ctrl-f He"
#: engines/scumm/help.cpp:109
msgid " ctrl-g are not recommended"
-msgstr " Ctrl-g BIngbu zhichi"
+msgstr " Ctrl-g BIngbu zhichi"
#: engines/scumm/help.cpp:110
msgid " since they may cause crashes"
-msgstr " Yinwei Keneng zaocheng cuowu"
+msgstr " Yinwei Keneng zaocheng cuowu"
#: engines/scumm/help.cpp:111
msgid " or incorrect game behavior."
-msgstr " Huo Buzhengque de Youxi xingwei"
+msgstr " Huo Buzhengque de Youxi xingwei."
#: engines/scumm/help.cpp:115
msgid "Spinning drafts on the keyboard:"
@@ -4017,7 +4019,7 @@ msgstr "Zhongyou Wupin"
#: engines/scumm/help.cpp:280 engines/scumm/help.cpp:285
msgid "Switching characters:"
-msgstr "Qiehuan Juese"
+msgstr "Qiehuan Juese:"
#: engines/scumm/help.cpp:282
msgid "Second kid"
@@ -4041,11 +4043,11 @@ msgstr "* Jianpan Zhandou zongshi Kaiqi,"
#: engines/scumm/help.cpp:296
msgid " so despite the in-game message this"
-msgstr " Suoyi Hulue youxi nei xinxi"
+msgstr " Suoyi Hulue youxi nei xinxi"
#: engines/scumm/help.cpp:297
msgid " actually toggles Mouse Fighting Off/On"
-msgstr " Zhe shiji shang shi Zai qiehuan Shubiao Zhandou de Kaiguan"
+msgstr " Zhe shiji shang shi Zai qiehuan Shubiao Zhandou de Kaiguan"
#: engines/scumm/help.cpp:304
msgid "Fighting controls (numpad):"
@@ -4086,7 +4088,7 @@ msgstr "Sucker Punch"
#: engines/scumm/help.cpp:318
msgid "These are for Indy on left."
-msgstr "Weile zai Zuobian de Indy"
+msgstr "Weile zai Zuobian de Indy."
#: engines/scumm/help.cpp:319
msgid "When Indy is on the right,"
@@ -4150,11 +4152,11 @@ msgstr "Snap Gundong Guan"
#: engines/scumm/input.cpp:593
msgid "Music volume: "
-msgstr "Yinyue Yinliang:"
+msgstr "Yinyue Yinliang: "
#: engines/scumm/input.cpp:610
msgid "Subtitle speed: "
-msgstr "Zimu Sudu:"
+msgstr "Zimu Sudu: "
#: engines/scumm/scumm.cpp:1880
#, c-format
@@ -4331,7 +4333,7 @@ msgid ""
"executable. Please decompress it"
msgstr ""
"teenagent.dat Wenjian Yibeiyasuo Bingqie zlib Bingmeiyou Zai chengxu Zhong. "
-"Qing jieya."
+"Qing jieya"
#: engines/tony/tony.cpp:258
#, c-format
@@ -4370,6 +4372,14 @@ msgstr "Xianshi FPS Jishuqi"
msgid "Show the current number of frames per second in the upper left corner"
msgstr "Zai Zuoshangjiao Xianshi Xianzai Meimiaozhong Zhenshu"
+#: engines/wintermute/detection.cpp:68
+msgid "Sprite bilinear filtering (SLOW)"
+msgstr ""
+
+#: engines/wintermute/detection.cpp:69
+msgid "Apply bilinear filtering to individual sprites"
+msgstr ""
+
#: engines/zvision/detection_tables.h:52
msgid "Use the original save/load screens instead of the ScummVM interface"
msgstr "Shiyong Yuanshi baocun/zairu Pingmu Erfei ScummVM jiemian"
diff --git a/test/engines/wintermute/path_utils.h b/test/engines/wintermute/path_utils.h
new file mode 100644
index 0000000000..26f3404396
--- /dev/null
+++ b/test/engines/wintermute/path_utils.h
@@ -0,0 +1,236 @@
+#include <cxxtest/TestSuite.h>
+#include "engines/wintermute/utils/path_util.h"
+/**
+ * Test suite for the functions in engines/wintermute/utils/path_util.h
+ *
+ * NOTE: This is not a prescription;
+ * this was not written by the original engine author;
+ * this was not written by the engine porter.
+ *
+ * It might, however, help to spot variations in behavior that are introduced by modifications
+ */
+
+class PathUtilTestSuite : public CxxTest::TestSuite {
+ public:
+ const Common::String unixPath;
+ const Common::String unixCapPath;
+ const Common::String windowsPath;
+ const Common::String windowsCapPath;
+ const Common::String emptyString;
+ const Common::String dualExtPath;
+ const Common::String manyExtPath;
+ const Common::String mixedSlashesPath1;
+ const Common::String mixedSlashesPath2;
+ const Common::String unixRelativePath;
+ const Common::String windowsRelativePath;
+ const Common::String unixDirPath;
+ const Common::String windowsDirPath;
+ PathUtilTestSuite () :
+ unixPath("/some/file.ext"),
+ unixCapPath("/SOME/FILE.EXT"),
+ windowsPath("C:\\some\\file.ext"),
+ windowsCapPath("C:\\SOME\\FILE.EXT"),
+ emptyString(""),
+ dualExtPath("/some/file.tar.gz"),
+ manyExtPath("/some/file.tar.bz2.gz.zip"),
+ mixedSlashesPath1("C:\\this/IS_REALLY\\weird.exe"),
+ mixedSlashesPath2("/pretty\\weird/indeed.txt"),
+ unixRelativePath("some/file.ext"),
+ windowsRelativePath("some\\file.ext"),
+ unixDirPath("/some/dir/"),
+ windowsDirPath("C:\\some\\dir\\")
+ {}
+ void test_getdirectoryname() {
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getDirectoryName(unixPath),
+ Common::String("/some/")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getDirectoryName(unixCapPath),
+ Common::String("/SOME/")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getDirectoryName(windowsPath),
+ Common::String("C:\\some\\")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getDirectoryName(windowsCapPath),
+ Common::String("C:\\SOME\\")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getDirectoryName(emptyString),
+ Common::String("")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getDirectoryName(unixDirPath),
+ Common::String("/some/dir/")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getDirectoryName(windowsDirPath),
+ Common::String("C:\\some\\dir\\")
+ );
+ }
+
+ void test_getfilename() {
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getFileName(unixPath),
+ Common::String("file.ext")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getFileName(unixCapPath),
+ Common::String("FILE.EXT")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getFileName(windowsPath),
+ Common::String("file.ext")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getFileName(windowsCapPath),
+ Common::String("FILE.EXT")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getFileName(emptyString),
+ Common::String("")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getFileName(unixRelativePath),
+ Common::String("file.ext")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getFileName(windowsRelativePath),
+ Common::String("file.ext")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getFileName(windowsDirPath),
+ Common::String("")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getFileName(unixDirPath),
+ Common::String("")
+ );
+ }
+
+ void test_getextension() {
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getExtension(windowsPath),
+ Common::String("ext")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getExtension(windowsCapPath),
+ Common::String("EXT")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getExtension(emptyString),
+ Common::String("")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getExtension(dualExtPath),
+ Common::String("gz")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getExtension(manyExtPath),
+ Common::String("zip")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getExtension(unixRelativePath),
+ Common::String("ext")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getExtension(windowsRelativePath),
+ Common::String("ext")
+ );
+ }
+
+ void test_getfilenamewithoutextension() {
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getFileNameWithoutExtension(windowsPath),
+ Common::String("file")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getFileNameWithoutExtension(windowsCapPath),
+ Common::String("FILE")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getFileNameWithoutExtension(emptyString),
+ Common::String("")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getFileNameWithoutExtension(dualExtPath),
+ Common::String("file.tar")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getFileNameWithoutExtension(manyExtPath),
+ Common::String("file.tar.bz2.gz")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getFileNameWithoutExtension(unixRelativePath),
+ Common::String("file")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getFileNameWithoutExtension(windowsRelativePath),
+ Common::String("file")
+ );
+ }
+
+ void test_combine_identity() {
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getDirectoryName(windowsPath) +
+ Wintermute::PathUtil::getFileNameWithoutExtension(windowsPath) +
+ "." +
+ Wintermute::PathUtil::getExtension(windowsPath),
+ windowsPath
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getDirectoryName(windowsCapPath) +
+ Wintermute::PathUtil::getFileNameWithoutExtension(windowsCapPath) +
+ "." +
+ Wintermute::PathUtil::getExtension(windowsCapPath),
+ windowsCapPath
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getDirectoryName(unixCapPath) +
+ Wintermute::PathUtil::getFileNameWithoutExtension(unixCapPath) +
+ "." +
+ Wintermute::PathUtil::getExtension(unixCapPath),
+ unixCapPath
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::getDirectoryName(manyExtPath) +
+ Wintermute::PathUtil::getFileNameWithoutExtension(manyExtPath) +
+ "." +
+ Wintermute::PathUtil::getExtension(manyExtPath),
+ manyExtPath
+ );
+ }
+
+ void test_normalize() {
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::normalizeFileName(windowsCapPath),
+ Common::String("c:/some/file.ext")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::normalizeFileName(windowsPath),
+ Common::String("c:/some/file.ext")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::normalizeFileName(mixedSlashesPath1),
+ Common::String("c:/this/is_really/weird.exe")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::normalizeFileName(mixedSlashesPath2),
+ Common::String("/pretty/weird/indeed.txt")
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::normalizeFileName(emptyString),
+ emptyString
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::normalizeFileName(unixRelativePath),
+ unixRelativePath
+ );
+ TS_ASSERT_EQUALS(
+ Wintermute::PathUtil::normalizeFileName(windowsRelativePath),
+ unixRelativePath // NOT windows
+ );
+ }
+};
diff --git a/test/module.mk b/test/module.mk
index 11ee6bd200..04e7deeacd 100644
--- a/test/module.mk
+++ b/test/module.mk
@@ -8,6 +8,11 @@
TESTS := $(srcdir)/test/common/*.h $(srcdir)/test/audio/*.h
TEST_LIBS := audio/libaudio.a common/libcommon.a
+ifdef ENABLE_WINTERMUTE
+ TESTS += $(srcdir)/test/engines/wintermute/*.h
+ TEST_LIBS += engines/wintermute/libwintermute.a
+endif
+
#
TEST_FLAGS := --runner=StdioPrinter --no-std --no-eh --include=$(srcdir)/test/cxxtest_mingw.h
TEST_CFLAGS := -I$(srcdir)/test/cxxtest
diff --git a/video/avi_decoder.cpp b/video/avi_decoder.cpp
index fc73cfaeac..32aa9f9044 100644
--- a/video/avi_decoder.cpp
+++ b/video/avi_decoder.cpp
@@ -721,18 +721,31 @@ bool AVIDecoder::seekIntern(const Audio::Timestamp &time) {
AVIVideoTrack *videoTrack2 = static_cast<AVIVideoTrack *>(_videoTracks.back().track);
videoTrack2->setCurFrame((int)frame - 1);
- // Find the index entry for the frame and read it in
- OldIndex *entry = _indexEntries.find(_videoTracks.back().index, frame);
+ // Find the index entry for the frame
+ int indexFrame = frame;
+ OldIndex *entry = nullptr;
+ do {
+ entry = _indexEntries.find(_videoTracks.back().index, indexFrame);
+ } while (!entry && indexFrame-- > 0);
assert(entry);
+ // Read in the frame
Common::SeekableReadStream *chunk = nullptr;
_fileStream->seek(entry->offset + 8);
_videoTracks.back().chunkSearchOffset = entry->offset;
if (entry->size != 0)
chunk = _fileStream->readStream(entry->size);
-
videoTrack2->decodeFrame(chunk);
+
+ if (indexFrame < frame) {
+ TrackStatus &status = _videoTracks.back();
+ while (status.chunkSearchOffset < _movieListEnd && indexFrame++ < frame) {
+ // There was no index entry for the desired frame, so an earlier one was decoded.
+ // We now have to sequentially decode frames until we get to the desired frame
+ handleNextPacket(status);
+ }
+ }
}
// Set the video track's frame