aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--.travis.yml1
-rw-r--r--NEWS5
-rw-r--r--README16
-rw-r--r--audio/decoders/adpcm.cpp80
-rw-r--r--audio/decoders/adpcm.h1
-rw-r--r--audio/decoders/adpcm_intern.h8
-rw-r--r--audio/decoders/quicktime.cpp11
-rw-r--r--audio/midiparser_qt.cpp4
-rw-r--r--audio/mods/mod_xm_s3m.cpp1350
-rw-r--r--audio/mods/mod_xm_s3m.h92
-rw-r--r--audio/mods/module_mod_xm_s3m.cpp841
-rw-r--r--audio/mods/module_mod_xm_s3m.h174
-rw-r--r--audio/module.mk2
-rw-r--r--backends/graphics/surfacesdl/surfacesdl-graphics.cpp73
-rw-r--r--backends/mixer/doublebuffersdl/doublebuffersdl-mixer.cpp130
-rw-r--r--backends/mixer/sdl/sdl-mixer.cpp66
-rw-r--r--backends/module.mk1
-rw-r--r--backends/networking/curl/networkreadstream.cpp21
-rw-r--r--backends/networking/curl/networkreadstream.h39
-rw-r--r--backends/platform/gph/gph-backend.cpp1
-rw-r--r--backends/platform/openpandora/op-backend.cpp1
-rw-r--r--backends/platform/sdl/macosx/appmenu_osx.mm8
-rw-r--r--backends/platform/sdl/macosx/macosx-compat.h (renamed from backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h)48
-rw-r--r--backends/platform/sdl/macosx/macosx.cpp9
-rw-r--r--backends/taskbar/macosx/macosx-taskbar.mm16
-rw-r--r--base/main.cpp2
-rw-r--r--common/archive.h6
-rw-r--r--common/gui_options.cpp1
-rw-r--r--common/gui_options.h2
-rw-r--r--common/memstream.h4
-rw-r--r--common/quicktime.cpp16
-rw-r--r--common/quicktime.h3
-rw-r--r--common/rect.h2
-rw-r--r--devtools/create_project/xcode.cpp171
-rw-r--r--devtools/create_project/xcode.h2
-rw-r--r--devtools/create_titanic/create_titanic_dat.cpp12
-rw-r--r--devtools/create_titanic/script_preresponses.cpp312
-rw-r--r--engines/agi/sound_midi.cpp2
-rw-r--r--engines/agos/draw.cpp2
-rw-r--r--engines/bbvs/minigames/bbant.cpp8
-rw-r--r--engines/bladerunner/actor.cpp53
-rw-r--r--engines/bladerunner/actor.h2
-rw-r--r--engines/bladerunner/aud_stream.cpp6
-rw-r--r--engines/bladerunner/audio_mixer.cpp60
-rw-r--r--engines/bladerunner/audio_mixer.h12
-rw-r--r--engines/bladerunner/audio_player.cpp16
-rw-r--r--engines/bladerunner/audio_player.h14
-rw-r--r--engines/bladerunner/audio_speech.cpp2
-rw-r--r--engines/bladerunner/bladerunner.cpp88
-rw-r--r--engines/bladerunner/bladerunner.h15
-rw-r--r--engines/bladerunner/module.mk8
-rw-r--r--engines/bladerunner/mouse.cpp9
-rw-r--r--engines/bladerunner/music.cpp229
-rw-r--r--engines/bladerunner/music.h86
-rw-r--r--engines/bladerunner/overlays.cpp20
-rw-r--r--engines/bladerunner/overlays.h2
-rw-r--r--engines/bladerunner/scene.cpp11
-rw-r--r--engines/bladerunner/scene.h7
-rw-r--r--engines/bladerunner/screen_effects.cpp (renamed from engines/bladerunner/aesc.cpp)12
-rw-r--r--engines/bladerunner/screen_effects.h (renamed from engines/bladerunner/aesc.h)12
-rw-r--r--engines/bladerunner/script/ai.cpp15
-rw-r--r--engines/bladerunner/script/ai.h16
-rw-r--r--engines/bladerunner/script/ai/leon.cpp8
-rw-r--r--engines/bladerunner/script/ai/maggie.cpp634
-rw-r--r--engines/bladerunner/script/ai/mccoy.cpp4
-rw-r--r--engines/bladerunner/script/ai/officer_leary.cpp2
-rw-r--r--engines/bladerunner/script/ai/runciter.cpp2
-rw-r--r--engines/bladerunner/script/scene.h10
-rw-r--r--engines/bladerunner/script/scene/bb02.cpp4
-rw-r--r--engines/bladerunner/script/scene/ct02.cpp8
-rw-r--r--engines/bladerunner/script/scene/dr04.cpp4
-rw-r--r--engines/bladerunner/script/scene/hc03.cpp4
-rw-r--r--engines/bladerunner/script/scene/hf04.cpp4
-rw-r--r--engines/bladerunner/script/scene/hf05.cpp2
-rw-r--r--engines/bladerunner/script/scene/hf06.cpp2
-rw-r--r--engines/bladerunner/script/scene/kp03.cpp8
-rw-r--r--engines/bladerunner/script/scene/ma01.cpp72
-rw-r--r--engines/bladerunner/script/scene/ma02.cpp41
-rw-r--r--engines/bladerunner/script/scene/ma04.cpp46
-rw-r--r--engines/bladerunner/script/scene/ma05.cpp10
-rw-r--r--engines/bladerunner/script/scene/ma06.cpp59
-rw-r--r--engines/bladerunner/script/scene/ma07.cpp8
-rw-r--r--engines/bladerunner/script/scene/nr08.cpp2
-rw-r--r--engines/bladerunner/script/scene/nr10.cpp2
-rw-r--r--engines/bladerunner/script/scene/nr11.cpp4
-rw-r--r--engines/bladerunner/script/scene/ps05.cpp27
-rw-r--r--engines/bladerunner/script/scene/rc01.cpp240
-rw-r--r--engines/bladerunner/script/scene/tb07.cpp2
-rw-r--r--engines/bladerunner/script/scene/ug01.cpp2
-rw-r--r--engines/bladerunner/script/scene/ug10.cpp6
-rw-r--r--engines/bladerunner/script/scene/ug13.cpp4
-rw-r--r--engines/bladerunner/script/scene/ug15.cpp2
-rw-r--r--engines/bladerunner/script/script.cpp111
-rw-r--r--engines/bladerunner/script/script.h36
-rw-r--r--engines/bladerunner/settings.cpp9
-rw-r--r--engines/bladerunner/slice_renderer.cpp8
-rw-r--r--engines/bladerunner/slice_renderer.h6
-rw-r--r--engines/bladerunner/vqa_decoder.cpp30
-rw-r--r--engines/bladerunner/vqa_decoder.h10
-rw-r--r--engines/bladerunner/vqa_player.cpp4
-rw-r--r--engines/bladerunner/vqa_player.h2
-rw-r--r--engines/cge/detection.cpp5
-rw-r--r--engines/cge2/detection.cpp5
-rw-r--r--engines/director/archive.cpp5
-rw-r--r--engines/director/cast.cpp30
-rw-r--r--engines/director/cast.h4
-rw-r--r--engines/director/detection.cpp52
-rw-r--r--engines/director/frame.cpp67
-rw-r--r--engines/director/resource.cpp52
-rw-r--r--engines/director/score.cpp68
-rw-r--r--engines/dm/eventman.cpp2
-rw-r--r--engines/fullpipe/statesaver.cpp2
-rw-r--r--engines/gnap/menu.cpp2
-rw-r--r--engines/made/sound.cpp3
-rw-r--r--engines/mohawk/riven_card.cpp2
-rw-r--r--engines/mohawk/riven_graphics.cpp137
-rw-r--r--engines/mohawk/riven_graphics.h45
-rw-r--r--engines/mohawk/riven_saveload.cpp12
-rw-r--r--engines/pegasus/ai/ai_area.cpp2
-rw-r--r--engines/pegasus/cursor.cpp5
-rw-r--r--engines/pegasus/graphics.cpp22
-rw-r--r--engines/pegasus/graphics.h6
-rw-r--r--engines/pegasus/input.cpp18
-rw-r--r--engines/pegasus/items/biochips/pegasuschip.cpp5
-rw-r--r--engines/pegasus/items/biochips/pegasuschip.h2
-rw-r--r--engines/pegasus/neighborhood/mars/mars.cpp8
-rw-r--r--engines/pegasus/pegasus.cpp9
-rw-r--r--engines/pegasus/transition.cpp28
-rw-r--r--engines/pegasus/transition.h2
-rw-r--r--engines/sci/console.cpp497
-rw-r--r--engines/sci/console.h15
-rw-r--r--engines/sci/detection.cpp16
-rw-r--r--engines/sci/detection_tables.h217
-rw-r--r--engines/sci/engine/features.cpp1
-rw-r--r--engines/sci/engine/file.cpp221
-rw-r--r--engines/sci/engine/file.h82
-rw-r--r--engines/sci/engine/guest_additions.cpp217
-rw-r--r--engines/sci/engine/guest_additions.h37
-rw-r--r--engines/sci/engine/kernel.h1
-rw-r--r--engines/sci/engine/kernel_tables.h54
-rw-r--r--engines/sci/engine/kfile.cpp267
-rw-r--r--engines/sci/engine/kgraphics.cpp6
-rw-r--r--engines/sci/engine/klists.cpp12
-rw-r--r--engines/sci/engine/kmisc.cpp10
-rw-r--r--engines/sci/engine/kscripts.cpp2
-rw-r--r--engines/sci/engine/kstring.cpp36
-rw-r--r--engines/sci/engine/savegame.cpp75
-rw-r--r--engines/sci/engine/savegame.h7
-rw-r--r--engines/sci/engine/script.cpp32
-rw-r--r--engines/sci/engine/script.h2
-rw-r--r--engines/sci/engine/script_patches.cpp1759
-rw-r--r--engines/sci/engine/segment.h28
-rw-r--r--engines/sci/engine/selector.cpp4
-rw-r--r--engines/sci/engine/selector.h4
-rw-r--r--engines/sci/engine/state.cpp17
-rw-r--r--engines/sci/engine/state.h7
-rw-r--r--engines/sci/engine/vm.cpp8
-rw-r--r--engines/sci/engine/vm.h9
-rw-r--r--engines/sci/graphics/celobj32.cpp3
-rw-r--r--engines/sci/graphics/controls32.cpp2
-rw-r--r--engines/sci/graphics/cursor32.cpp11
-rw-r--r--engines/sci/graphics/cursor32.h2
-rw-r--r--engines/sci/graphics/frameout.cpp22
-rw-r--r--engines/sci/graphics/frameout.h8
-rw-r--r--engines/sci/graphics/helpers.h4
-rw-r--r--engines/sci/graphics/screen_item32.cpp2
-rw-r--r--engines/sci/graphics/video32.cpp23
-rw-r--r--engines/sci/graphics/view.cpp74
-rw-r--r--engines/sci/resource.cpp18
-rw-r--r--engines/sci/resource.h7
-rw-r--r--engines/sci/resource_audio.cpp40
-rw-r--r--engines/sci/sci.cpp4
-rw-r--r--engines/sci/sci.h1
-rw-r--r--engines/sci/sound/audio32.cpp89
-rw-r--r--engines/sci/sound/audio32.h5
-rw-r--r--engines/sci/sound/drivers/midi.cpp51
-rw-r--r--engines/sci/sound/soundcmd.cpp2
-rw-r--r--engines/sci/video/robot_decoder.cpp2
-rw-r--r--engines/scumm/saveload.cpp2
-rw-r--r--engines/sludge/detection.cpp20
-rw-r--r--engines/sludge/sound.cpp79
-rw-r--r--engines/sword1/control.cpp2
-rw-r--r--engines/sword25/gfx/screenshot.cpp6
-rw-r--r--engines/sword25/script/luascript.cpp2
-rw-r--r--engines/titanic/carry/arm.cpp3
-rw-r--r--engines/titanic/carry/brain.cpp3
-rw-r--r--engines/titanic/carry/bridge_piece.cpp3
-rw-r--r--engines/titanic/carry/carry_parrot.cpp9
-rw-r--r--engines/titanic/carry/eye.cpp4
-rw-r--r--engines/titanic/carry/photograph.cpp3
-rw-r--r--engines/titanic/continue_save_dialog.cpp3
-rw-r--r--engines/titanic/core/game_object.cpp7
-rw-r--r--engines/titanic/core/game_object.h4
-rw-r--r--engines/titanic/core/project_item.cpp7
-rw-r--r--engines/titanic/debugger.cpp2
-rw-r--r--engines/titanic/game/announce.cpp36
-rw-r--r--engines/titanic/game/bar_bell.cpp15
-rw-r--r--engines/titanic/game/bomb.cpp235
-rw-r--r--engines/titanic/game/bowl_unlocker.cpp3
-rw-r--r--engines/titanic/game/bridge_view.cpp3
-rw-r--r--engines/titanic/game/broken_pellerator.cpp2
-rw-r--r--engines/titanic/game/captains_wheel.cpp4
-rw-r--r--engines/titanic/game/cdrom_tray.cpp13
-rw-r--r--engines/titanic/game/cell_point_button.cpp3
-rw-r--r--engines/titanic/game/chev_code.cpp2
-rw-r--r--engines/titanic/game/chicken_dispensor.cpp7
-rw-r--r--engines/titanic/game/code_wheel.cpp4
-rw-r--r--engines/titanic/game/computer.cpp17
-rw-r--r--engines/titanic/game/computer_screen.cpp42
-rw-r--r--engines/titanic/game/credits.cpp9
-rw-r--r--engines/titanic/game/credits_button.cpp3
-rw-r--r--engines/titanic/game/desk_click_responder.cpp3
-rw-r--r--engines/titanic/game/end_credit_text.cpp3
-rw-r--r--engines/titanic/game/end_credits.cpp5
-rw-r--r--engines/titanic/game/end_explode_ship.cpp13
-rw-r--r--engines/titanic/game/end_sequence_control.cpp5
-rw-r--r--engines/titanic/game/fan_control.cpp3
-rw-r--r--engines/titanic/game/fan_noises.cpp15
-rw-r--r--engines/titanic/game/glass_smasher.cpp3
-rw-r--r--engines/titanic/game/gondolier/gondolier_mixer.cpp3
-rw-r--r--engines/titanic/game/hammer_dispensor_button.cpp5
-rw-r--r--engines/titanic/game/head_smash_lever.cpp11
-rw-r--r--engines/titanic/game/light.cpp9
-rw-r--r--engines/titanic/game/long_stick_dispenser.cpp5
-rw-r--r--engines/titanic/game/maitred/maitred_body.cpp3
-rw-r--r--engines/titanic/game/missiveomat.cpp5
-rw-r--r--engines/titanic/game/nav_helmet.cpp67
-rw-r--r--engines/titanic/game/nav_helmet.h4
-rw-r--r--engines/titanic/game/nose_holder.cpp3
-rw-r--r--engines/titanic/game/parrot/parrot_nut_bowl_actor.cpp3
-rw-r--r--engines/titanic/game/parrot/parrot_nut_eater.cpp9
-rw-r--r--engines/titanic/game/pet/pet_sounds.cpp5
-rw-r--r--engines/titanic/game/record_phonograph_button.cpp5
-rw-r--r--engines/titanic/game/replacement_ear.cpp3
-rw-r--r--engines/titanic/game/sauce_dispensor.cpp5
-rw-r--r--engines/titanic/game/search_point.cpp3
-rw-r--r--engines/titanic/game/seasonal_adjustment.cpp3
-rw-r--r--engines/titanic/game/sgt/armchair.cpp5
-rw-r--r--engines/titanic/game/sgt/basin.cpp5
-rw-r--r--engines/titanic/game/sgt/bedfoot.cpp11
-rw-r--r--engines/titanic/game/sgt/bedhead.cpp3
-rw-r--r--engines/titanic/game/sgt/chest_of_drawers.cpp7
-rw-r--r--engines/titanic/game/sgt/desk.cpp5
-rw-r--r--engines/titanic/game/sgt/deskchair.cpp5
-rw-r--r--engines/titanic/game/sgt/drawer.cpp5
-rw-r--r--engines/titanic/game/sgt/sgt_state_room.cpp3
-rw-r--r--engines/titanic/game/sgt/toilet.cpp7
-rw-r--r--engines/titanic/game/sgt/washstand.cpp5
-rw-r--r--engines/titanic/game/speech_dispensor.cpp5
-rw-r--r--engines/titanic/game/stop_phonograph_button.cpp8
-rw-r--r--engines/titanic/game/stop_phonograph_button.h1
-rw-r--r--engines/titanic/game/sub_glass.cpp5
-rw-r--r--engines/titanic/game/sweet_bowl.cpp9
-rw-r--r--engines/titanic/game/television.cpp5
-rw-r--r--engines/titanic/game/throw_tv_down_well.cpp9
-rw-r--r--engines/titanic/game/transport/lift.cpp28
-rw-r--r--engines/titanic/game/transport/pellerator.cpp31
-rw-r--r--engines/titanic/game/transport/service_elevator.cpp30
-rw-r--r--engines/titanic/game/up_lighter.cpp3
-rw-r--r--engines/titanic/game/useless_lever.cpp5
-rw-r--r--engines/titanic/game_manager.cpp1
-rw-r--r--engines/titanic/gfx/music_slider_pitch.cpp3
-rw-r--r--engines/titanic/gfx/music_slider_speed.cpp5
-rw-r--r--engines/titanic/gfx/music_switch_inversion.cpp5
-rw-r--r--engines/titanic/gfx/music_switch_reverse.cpp5
-rw-r--r--engines/titanic/gfx/music_voice_mute.cpp3
-rw-r--r--engines/titanic/main_game_window.cpp15
-rw-r--r--engines/titanic/messages/bilge_dispensor_event.cpp3
-rw-r--r--engines/titanic/moves/enter_sec_class_state.cpp13
-rw-r--r--engines/titanic/moves/exit_bridge.cpp3
-rw-r--r--engines/titanic/moves/exit_pellerator.cpp17
-rw-r--r--engines/titanic/moves/restricted_move.cpp6
-rw-r--r--engines/titanic/npcs/barbot.cpp23
-rw-r--r--engines/titanic/npcs/bellbot.cpp39
-rw-r--r--engines/titanic/npcs/bilge_succubus.cpp21
-rw-r--r--engines/titanic/npcs/deskbot.cpp90
-rw-r--r--engines/titanic/npcs/doorbot.cpp64
-rw-r--r--engines/titanic/npcs/parrot.cpp16
-rw-r--r--engines/titanic/npcs/parrot.h1
-rw-r--r--engines/titanic/npcs/parrot_succubus.cpp7
-rw-r--r--engines/titanic/npcs/succubus.cpp15
-rw-r--r--engines/titanic/npcs/titania.cpp5
-rw-r--r--engines/titanic/pet_control/pet_control.cpp5
-rw-r--r--engines/titanic/pet_control/pet_control.h5
-rw-r--r--engines/titanic/pet_control/pet_gfx_element.h6
-rw-r--r--engines/titanic/pet_control/pet_glyphs.h5
-rw-r--r--engines/titanic/pet_control/pet_inventory.cpp8
-rw-r--r--engines/titanic/pet_control/pet_inventory.h5
-rw-r--r--engines/titanic/pet_control/pet_real_life.cpp8
-rw-r--r--engines/titanic/pet_control/pet_real_life.h4
-rw-r--r--engines/titanic/pet_control/pet_slider.cpp2
-rw-r--r--engines/titanic/pet_control/pet_sound.cpp129
-rw-r--r--engines/titanic/pet_control/pet_sound.h19
-rw-r--r--engines/titanic/pet_control/pet_starfield.cpp23
-rw-r--r--engines/titanic/pet_control/pet_starfield.h9
-rw-r--r--engines/titanic/sound/audio_buffer.cpp46
-rw-r--r--engines/titanic/sound/audio_buffer.h38
-rw-r--r--engines/titanic/sound/music_room_handler.cpp8
-rw-r--r--engines/titanic/sound/music_room_instrument.cpp4
-rw-r--r--engines/titanic/sound/qmixer.cpp9
-rw-r--r--engines/titanic/sound/qmixer.h3
-rw-r--r--engines/titanic/sound/seasonal_music_player.cpp17
-rw-r--r--engines/titanic/sound/sound.cpp4
-rw-r--r--engines/titanic/sound/sound_manager.cpp3
-rw-r--r--engines/titanic/sound/sound_manager.h4
-rw-r--r--engines/titanic/sound/titania_speech.cpp23
-rw-r--r--engines/titanic/sound/wave_file.cpp11
-rw-r--r--engines/titanic/star_control/camera_auto_mover.cpp32
-rw-r--r--engines/titanic/star_control/camera_auto_mover.h14
-rw-r--r--engines/titanic/star_control/fpose.cpp2
-rw-r--r--engines/titanic/star_control/fvector.cpp8
-rw-r--r--engines/titanic/star_control/marked_auto_mover.cpp4
-rw-r--r--engines/titanic/star_control/marked_auto_mover.h2
-rw-r--r--engines/titanic/star_control/marked_camera_mover.cpp3
-rw-r--r--engines/titanic/star_control/star_camera.cpp40
-rw-r--r--engines/titanic/star_control/star_camera.h14
-rw-r--r--engines/titanic/star_control/star_control.cpp12
-rw-r--r--engines/titanic/star_control/star_control.h5
-rw-r--r--engines/titanic/star_control/star_points1.cpp1
-rw-r--r--engines/titanic/star_control/star_points2.cpp1
-rw-r--r--engines/titanic/star_control/unmarked_auto_mover.cpp6
-rw-r--r--engines/titanic/star_control/unmarked_auto_mover.h4
-rw-r--r--engines/titanic/star_control/unmarked_camera_mover.cpp2
-rw-r--r--engines/titanic/star_control/viewport.cpp4
-rw-r--r--engines/titanic/star_control/viewport.h2
-rw-r--r--engines/titanic/support/avi_surface.cpp45
-rw-r--r--engines/titanic/support/avi_surface.h41
-rw-r--r--engines/titanic/support/direct_draw.cpp5
-rw-r--r--engines/titanic/support/exe_resources.cpp6
-rw-r--r--engines/titanic/support/exe_resources.h17
-rw-r--r--engines/titanic/support/fixed_queue.h143
-rw-r--r--engines/titanic/support/movie.cpp7
-rw-r--r--engines/titanic/support/movie.h11
-rw-r--r--engines/titanic/titanic.cpp28
-rw-r--r--engines/titanic/titanic.h9
-rw-r--r--engines/titanic/translation.h36
-rw-r--r--engines/titanic/true_talk/barbot_script.cpp205
-rw-r--r--engines/titanic/true_talk/bellbot_script.cpp487
-rw-r--r--engines/titanic/true_talk/deskbot_script.cpp89
-rw-r--r--engines/titanic/true_talk/deskbot_script.h30
-rw-r--r--engines/titanic/true_talk/doorbot_script.cpp278
-rw-r--r--engines/titanic/true_talk/doorbot_script.h1
-rw-r--r--engines/titanic/true_talk/liftbot_script.cpp100
-rw-r--r--engines/titanic/true_talk/maitred_script.cpp40
-rw-r--r--engines/titanic/true_talk/script_handler.cpp6
-rw-r--r--engines/titanic/true_talk/script_handler.h2
-rw-r--r--engines/titanic/true_talk/succubus_script.cpp24
-rw-r--r--engines/titanic/true_talk/title_engine.cpp9
-rw-r--r--engines/titanic/true_talk/title_engine.h4
-rw-r--r--engines/titanic/true_talk/true_talk_manager.cpp3
-rw-r--r--engines/titanic/true_talk/tt_npc_script.cpp131
-rw-r--r--engines/titanic/true_talk/tt_parser.cpp2
-rw-r--r--engines/titanic/true_talk/tt_scripts.cpp9
-rw-r--r--engines/titanic/true_talk/tt_sentence.cpp6
-rw-r--r--engines/titanic/true_talk/tt_string.cpp4
-rw-r--r--engines/titanic/true_talk/tt_string_node.cpp4
-rw-r--r--engines/titanic/true_talk/tt_string_node.h2
-rw-r--r--engines/titanic/true_talk/tt_vocab.cpp12
-rw-r--r--engines/titanic/true_talk/tt_vocab.h5
-rw-r--r--engines/titanic/true_talk/tt_word.cpp4
-rw-r--r--engines/titanic/true_talk/tt_word.h4
-rw-r--r--engines/xeen/map.cpp2
-rw-r--r--engines/xeen/saves.cpp25
-rw-r--r--engines/xeen/saves.h9
-rw-r--r--engines/zvision/file/save_manager.cpp4
-rw-r--r--graphics/fonts/bdf.cpp3
-rw-r--r--graphics/pixelformat.h10
-rw-r--r--gui/debugger.cpp1
-rw-r--r--gui/module.mk8
-rw-r--r--gui/options.cpp34
-rw-r--r--gui/options.h2
-rw-r--r--gui/themes/default.inc16
-rw-r--r--gui/themes/scummclassic.zipbin129631 -> 129144 bytes
-rw-r--r--gui/themes/scummclassic/classic_layout.stx8
-rw-r--r--gui/themes/scummclassic/classic_layout_lowres.stx8
-rw-r--r--gui/themes/scummmodern.zipbin1649171 -> 1648684 bytes
-rw-r--r--gui/themes/scummmodern/scummmodern_layout.stx8
-rw-r--r--gui/themes/scummmodern/scummmodern_layout_lowres.stx8
-rw-r--r--gui/themes/translations.datbin711062 -> 707329 bytes
-rw-r--r--image/codecs/bmp_raw.cpp5
-rw-r--r--image/codecs/indeo/indeo.cpp3
-rw-r--r--image/codecs/indeo3.cpp3
-rw-r--r--image/png.cpp12
-rw-r--r--po/be_BY.po486
-rw-r--r--po/ca_ES.po486
-rw-r--r--po/cs_CZ.po486
-rw-r--r--po/da_DK.po486
-rw-r--r--po/de_DE.po491
-rw-r--r--po/el.po486
-rw-r--r--po/es_ES.po486
-rw-r--r--po/eu.po486
-rw-r--r--po/fi_FI.po487
-rw-r--r--po/fr_FR.po486
-rw-r--r--po/gl_ES.po486
-rw-r--r--po/hu_HU.po486
-rw-r--r--po/it_IT.po487
-rw-r--r--po/nb_NO.po486
-rw-r--r--po/nl_NL.po487
-rw-r--r--po/nn_NO.po483
-rw-r--r--po/pl_PL.po486
-rw-r--r--po/pt_BR.po485
-rw-r--r--po/pt_PT.po473
-rw-r--r--po/ru_RU.po486
-rw-r--r--po/scummvm.pot458
-rw-r--r--po/sv_SE.po486
-rw-r--r--po/uk_UA.po486
-rw-r--r--po/zh-Latn_CN.po486
-rw-r--r--video/avi_decoder.cpp5
-rw-r--r--video/bink_decoder.cpp2
-rw-r--r--video/qt_decoder.cpp6
411 files changed, 16013 insertions, 9769 deletions
diff --git a/.gitignore b/.gitignore
index e4efe9026f..c19710fd13 100644
--- a/.gitignore
+++ b/.gitignore
@@ -209,7 +209,7 @@ dists/msvc*/**
#Ignore Xcode output/project files
out/
-scummvm.xcodeproj
+/*.xcodeproj
#Ignore PSP2 files
psp2pkg/
diff --git a/.travis.yml b/.travis.yml
index 36c6774dc1..e2643690cb 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -38,7 +38,6 @@ compiler:
os:
- linux
- - osx
dist: trusty
diff --git a/NEWS b/NEWS
index 3e3bba90a8..7ed09c329a 100644
--- a/NEWS
+++ b/NEWS
@@ -12,7 +12,7 @@ For a more comprehensive changelog of the latest experimental code, see:
- Added support for Starship Titanic.
- New Games (Sierra SCI2 - SCI2.1):
+ New Games (Sierra SCI2 - SCI3):
- Added support for Gabriel Knight.
- Added support for Gabriel Knight 2.
- Added support for King's Quest VII.
@@ -50,6 +50,9 @@ For a more comprehensive changelog of the latest experimental code, see:
the game and ScummVM options.
- Added possibility to load and save games using GMM.
+ MADE:
+ - Fixed badly distorted sound (bug #9753).
+
SCI
- Fixed a script bug in Police Quest 3 to now grant 10 points when giving the
locket to Marie. Now it's possible to beat the game with a perfect score.
diff --git a/README b/README
index 1cbb0bf3f5..798f490b75 100644
--- a/README
+++ b/README
@@ -387,6 +387,7 @@ Other Games:
Return to Ringworld [ringworld2]
Sfinx [sfinx]
Soltys [soltys]
+ Starship Titanic [titanic]
The Journeyman Project: Pegasus Prime [pegasus]
The Labyrinth of Time [lab]
The Legend of Kyrandia [kyra1]
@@ -1552,6 +1553,7 @@ Engines which currently support returning to the Launcher are:
SWORD1
SWORD2
TEENAGENT
+ TITANIC
TOUCHE
TSAGE
TUCKER
@@ -1982,6 +1984,7 @@ Where 'xxx' is exact the saved game slot (i.e., 001) under ScummVM
SWORD2
TEENAGENT
TINSEL
+ TITANIC
TOON
TOUCHE
TSAGE
@@ -2015,6 +2018,7 @@ Where 'xxx' is exact the saved game slot (i.e., 001) under ScummVM
SWORD2
TEENAGENT
TINSEL
+ TITANIC
TOON
TOUCHE
TSAGE
@@ -2540,6 +2544,13 @@ The following keywords are recognized:
save_slot number The saved game number to load on startup.
savepath string The path to where a game will store its
saved games.
+ screenshotpath string The path to where screenshots are saved.
+ iconpath string The path to where to look for icons to use as
+ overlay for the ScummVM icon in the Windows
+ taskbar or macOS X Dock when running a game.
+ The icon files should be named after the game
+ ids and be in ico format on Windows or png
+ format on macOS X.
versioninfo string The version of the ScummVM that created the
configuration file.
@@ -2574,6 +2585,11 @@ The following keywords are recognized:
opl_driver string The AdLib (OPL) emulator to use.
output_rate number The output sample rate to use, in Hz. Sensible
values are 11025, 22050 and 44100.
+ audio_buffer_size number Overrides the size of the audio buffer. The
+ value must be one of: 256 512 1024 2048 4096
+ 8192 16384 32768. The default value is
+ calculated based on the output_rate to keep
+ audio latency below 45ms.
alsa_port string Port to use for output when using the
ALSA music driver.
music_volume number The music volume setting (0-255)
diff --git a/audio/decoders/adpcm.cpp b/audio/decoders/adpcm.cpp
index ffb61a49c0..e87661dbbb 100644
--- a/audio/decoders/adpcm.cpp
+++ b/audio/decoders/adpcm.cpp
@@ -334,67 +334,89 @@ int MS_ADPCMStream::readBuffer(int16 *buffer, const int numSamples) {
#pragma mark -
-
-#define DK3_READ_NIBBLE() \
+#define DK3_READ_NIBBLE(channelNo) \
do { \
if (_topNibble) { \
_nibble = _lastByte >> 4; \
_topNibble = false; \
} else { \
- if (_stream->pos() >= _endpos) \
- break; \
- if ((_stream->pos() % _blockAlign) == 0) \
- continue; \
_lastByte = _stream->readByte(); \
_nibble = _lastByte & 0xf; \
_topNibble = true; \
+ --blockBytesLeft; \
+ --audioBytesLeft; \
} \
-} while (0)
-
+ decodeIMA(_nibble, channelNo); \
+} while(0)
int DK3_ADPCMStream::readBuffer(int16 *buffer, const int numSamples) {
+ assert((numSamples % 4) == 0);
+
+ const uint32 startOffset = _stream->pos() % _blockAlign;
+ uint32 audioBytesLeft = _endpos - _stream->pos();
+ uint32 blockBytesLeft;
+ if (startOffset != 0) {
+ blockBytesLeft = _blockAlign - startOffset;
+ } else {
+ blockBytesLeft = 0;
+ }
+
int samples = 0;
+ while (samples < numSamples && audioBytesLeft) {
+ if (blockBytesLeft == 0) {
+ blockBytesLeft = MIN(_blockAlign, audioBytesLeft);
+ _topNibble = false;
- assert((numSamples % 4) == 0);
+ if (blockBytesLeft < 16) {
+ warning("Truncated DK3 ADPCM block header");
+ break;
+ }
+
+ _stream->skip(2);
+ const uint16 rate = _stream->readUint16LE();
+ assert(rate == getRate());
+ _stream->skip(6);
- while (samples < numSamples && !_stream->eos() && _stream->pos() < _endpos) {
- if ((_stream->pos() % _blockAlign) == 0) {
- _stream->readUint16LE(); // Unknown
- uint16 rate = _stream->readUint16LE(); // Copy of rate
- _stream->skip(6); // Unknown
// Get predictor for both sum/diff channels
_status.ima_ch[0].last = _stream->readSint16LE();
_status.ima_ch[1].last = _stream->readSint16LE();
+
// Get index for both sum/diff channels
_status.ima_ch[0].stepIndex = _stream->readByte();
_status.ima_ch[1].stepIndex = _stream->readByte();
+ assert(_status.ima_ch[0].stepIndex < ARRAYSIZE(_imaTable));
+ assert(_status.ima_ch[1].stepIndex < ARRAYSIZE(_imaTable));
- if (_stream->eos())
- break;
-
- // Sanity check
- assert(rate == getRate());
+ blockBytesLeft -= 16;
+ audioBytesLeft -= 16;
}
- DK3_READ_NIBBLE();
- decodeIMA(_nibble, 0);
+ DK3_READ_NIBBLE(0);
+ DK3_READ_NIBBLE(1);
- DK3_READ_NIBBLE();
- decodeIMA(_nibble, 1);
+ *buffer++ = _status.ima_ch[0].last + _status.ima_ch[1].last;
+ *buffer++ = _status.ima_ch[0].last - _status.ima_ch[1].last;
- buffer[samples++] = _status.ima_ch[0].last + _status.ima_ch[1].last;
- buffer[samples++] = _status.ima_ch[0].last - _status.ima_ch[1].last;
+ DK3_READ_NIBBLE(0);
- DK3_READ_NIBBLE();
- decodeIMA(_nibble, 0);
+ *buffer++ = _status.ima_ch[0].last + _status.ima_ch[1].last;
+ *buffer++ = _status.ima_ch[0].last - _status.ima_ch[1].last;
- buffer[samples++] = _status.ima_ch[0].last + _status.ima_ch[1].last;
- buffer[samples++] = _status.ima_ch[0].last - _status.ima_ch[1].last;
+ samples += 4;
+
+ // if the last sample of a block ends on an odd byte, the encoder adds
+ // an extra alignment byte
+ if (!_topNibble && blockBytesLeft == 1) {
+ _stream->skip(1);
+ --blockBytesLeft;
+ --audioBytesLeft;
+ }
}
return samples;
}
+#undef DK3_READ_NIBBLE
#pragma mark -
diff --git a/audio/decoders/adpcm.h b/audio/decoders/adpcm.h
index 353fd3b71d..0f0d83c3c2 100644
--- a/audio/decoders/adpcm.h
+++ b/audio/decoders/adpcm.h
@@ -27,6 +27,7 @@
* - lastexpress
* - mohawk
* - saga
+ * - sci (DK3 ADPCM for Phantasmagoria 2)
* - scumm
* - tinsel
*/
diff --git a/audio/decoders/adpcm_intern.h b/audio/decoders/adpcm_intern.h
index f4a708c3fc..4b7b3481f4 100644
--- a/audio/decoders/adpcm_intern.h
+++ b/audio/decoders/adpcm_intern.h
@@ -229,20 +229,12 @@ private:
// Based on FFmpeg's decoder and http://wiki.multimedia.cx/index.php?title=Duck_DK3_IMA_ADPCM
class DK3_ADPCMStream : public Ima_ADPCMStream {
-protected:
-
- void reset() {
- Ima_ADPCMStream::reset();
- _topNibble = false;
- }
-
public:
DK3_ADPCMStream(Common::SeekableReadStream *stream, DisposeAfterUse::Flag disposeAfterUse, uint32 size, int rate, int channels, uint32 blockAlign)
: Ima_ADPCMStream(stream, disposeAfterUse, size, rate, channels, blockAlign) {
// DK3 only works as a stereo stream
assert(channels == 2);
- _topNibble = false;
}
virtual int readBuffer(int16 *buffer, const int numSamples);
diff --git a/audio/decoders/quicktime.cpp b/audio/decoders/quicktime.cpp
index ff87e7a9f8..4b0d5e078f 100644
--- a/audio/decoders/quicktime.cpp
+++ b/audio/decoders/quicktime.cpp
@@ -299,7 +299,7 @@ int QuickTimeAudioDecoder::QuickTimeAudioTrack::readBuffer(int16 *buffer, const
}
bool QuickTimeAudioDecoder::QuickTimeAudioTrack::allDataRead() const {
- return _curEdit == _parentTrack->editCount;
+ return _curEdit == _parentTrack->editList.size();
}
bool QuickTimeAudioDecoder::QuickTimeAudioTrack::endOfData() const {
@@ -314,7 +314,7 @@ bool QuickTimeAudioDecoder::QuickTimeAudioTrack::seek(const Timestamp &where) {
if (where >= getLength()) {
// We're done
- _curEdit = _parentTrack->editCount;
+ _curEdit = _parentTrack->editList.size();
return true;
}
@@ -324,8 +324,7 @@ bool QuickTimeAudioDecoder::QuickTimeAudioTrack::seek(const Timestamp &where) {
// Now queue up some audio and skip whatever we need to skip
Timestamp samplesToSkip = where.convertToFramerate(getRate()) - getCurrentTrackTime();
queueAudio();
- if (_parentTrack->editList[_curEdit].mediaTime != -1)
- skipSamples(samplesToSkip, _queue);
+ skipSamples(samplesToSkip, _queue);
return true;
}
@@ -345,7 +344,7 @@ bool QuickTimeAudioDecoder::QuickTimeAudioTrack::isOldDemuxing() const {
AudioStream *QuickTimeAudioDecoder::QuickTimeAudioTrack::readAudioChunk(uint chunk) {
AudioSampleDesc *entry = (AudioSampleDesc *)_parentTrack->sampleDescs[0];
- Common::MemoryWriteStreamDynamic *wStream = new Common::MemoryWriteStreamDynamic();
+ Common::MemoryWriteStreamDynamic *wStream = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::NO);
_decoder->_fd->seek(_parentTrack->chunkOffsets[chunk]);
@@ -427,7 +426,7 @@ void QuickTimeAudioDecoder::QuickTimeAudioTrack::findEdit(const Timestamp &posit
// as the position is >= to the edit's start time, it is considered to be in that
// edit. seek() already figured out if we reached the last edit, so we don't need
// to handle that case here.
- for (_curEdit = 0; _curEdit < _parentTrack->editCount - 1; _curEdit++) {
+ for (_curEdit = 0; _curEdit < _parentTrack->editList.size() - 1; _curEdit++) {
Timestamp nextEditTime(0, _parentTrack->editList[_curEdit + 1].timeOffset, _decoder->_timeScale);
if (position < nextEditTime)
break;
diff --git a/audio/midiparser_qt.cpp b/audio/midiparser_qt.cpp
index b97ea56df5..8821dbfaa8 100644
--- a/audio/midiparser_qt.cpp
+++ b/audio/midiparser_qt.cpp
@@ -423,7 +423,7 @@ void MidiParser_QT::initFromContainerTracks() {
if (tracks[i]->codecType == CODEC_TYPE_MIDI) {
assert(tracks[i]->sampleDescs.size() == 1);
- if (tracks[i]->editCount != 1)
+ if (tracks[i]->editList.size() != 1)
warning("Unhandled QuickTime MIDI edit lists, things may go awry");
MIDITrackInfo trackInfo;
@@ -455,7 +455,7 @@ void MidiParser_QT::initCommon() {
byte *MidiParser_QT::readWholeTrack(Common::QuickTimeParser::Track *track, uint32 &trackSize) {
// This just goes through all chunks and appends them together
- Common::MemoryWriteStreamDynamic output;
+ Common::MemoryWriteStreamDynamic output(DisposeAfterUse::NO);
uint32 curSample = 0;
// Read in the note request data first
diff --git a/audio/mods/mod_xm_s3m.cpp b/audio/mods/mod_xm_s3m.cpp
new file mode 100644
index 0000000000..615e587380
--- /dev/null
+++ b/audio/mods/mod_xm_s3m.cpp
@@ -0,0 +1,1350 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * 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 source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+/*
+ * This code is based on IBXM mod player
+ *
+ * Copyright (c) 2015, Martin Cameron
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the
+ * following conditions are met:
+ *
+ * * Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the
+ * above copyright notice, this list of conditions and the
+ * following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * * Neither the name of the organization nor the names of
+ * its contributors may be used to endorse or promote
+ * products derived from this software without specific
+ * prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include "common/debug.h"
+#include "common/file.h"
+#include "common/memstream.h"
+
+#include "audio/audiostream.h"
+#include "audio/mods/mod_xm_s3m.h"
+#include "audio/mods/module_mod_xm_s3m.h"
+
+namespace Modules {
+
+class ModXmS3mStream : public Audio::AudioStream {
+private:
+ struct Channel {
+ Instrument *instrument;
+ Sample *sample;
+ Note note;
+ int keyOn, randomSeed, plRow;
+ int sampleOff, sampleIdx, sampleFra, freq, ampl, pann;
+ int volume, panning, fadeoutVol, volEnvTick, panEnvTick;
+ int period, portaPeriod, retrigCount, fxCount, avCount;
+ int portaUpParam, portaDownParam, tonePortaParam, offsetParam;
+ int finePortaUpParam, finePortaDownParam, xfinePortaParam;
+ int arpeggioParam, volSlideParam, gvolSlideParam, panSlideParam;
+ int fineVslideUpParam, fineVslideDownParam;
+ int retrigVolume, retrigTicks, tremorOnTicks, tremorOffTicks;
+ int vibratoType, vibratoPhase, vibratoSpeed, vibratoDepth;
+ int tremoloType, tremoloPhase, tremoloSpeed, tremoloDepth;
+ int tremoloAdd, vibratoAdd, arpeggioAdd;
+ };
+
+ ModuleModXmS3m _module;
+ bool _loadSuccess;
+ int _sampleRate, _interpolation, _globalVol;
+ int _seqPos, _breakPos, _row, _nextRow, _tick;
+ int _speed, _tempo, _plCount, _plChan;
+ int *_rampBuf;
+ int8 **_playCount;
+ Channel *_channels;
+ int _dataLeft;
+
+ // mix buffer to keep a partially consumed decoded tick.
+ int *_mixBuffer;
+ int _mixBufferSamples; // number of samples kept in _mixBuffer
+
+ static const int FP_SHIFT;
+ static const int FP_ONE;
+ static const int FP_MASK;
+ static const int16 sinetable[];
+
+ int calculateDuration();
+ int calculateTickLength() { return (_sampleRate * 5) / (_tempo * 2); }
+ int calculateMixBufLength() { return (calculateTickLength() + 65) * 4; }
+
+ int initPlayCount(int8 **playCount);
+ void setSequencePos(int pos);
+ int tick();
+ void updateRow();
+ int seek(int samplePos);
+
+ // Sample
+ void downsample(int *buf, int count);
+ void resample(Channel &channel, int *mixBuf, int offset, int count, int sampleRate);
+ void updateSampleIdx(Channel &channel, int count, int sampleRate);
+
+ // Channel
+ void initChannel(int idx);
+ void tickChannel(Channel &channel);
+ void updateChannelRow(Channel &channel, Note note);
+
+ // Effects
+ int waveform(Channel &channel, int phase, int type);
+ void vibrato(Channel &channel, int fine);
+ void autoVibrato(Channel &channel);
+ void portaUp(Channel &channel, int param);
+ void portaDown(Channel &channel, int param);
+ void tonePorta(Channel &channel);
+ void volumeSlide(Channel &channel);
+ void retrigVolSlide(Channel &channel);
+ void tremolo(Channel &channel);
+ void tremor(Channel &channel);
+ void trigger(Channel &channel);
+ void calculateFreq(Channel &channel);
+ void calculateAmpl(Channel &channel);
+
+ // Envelopes
+ void updateEnvelopes(Channel &channel);
+ int envelopeNextTick(Envelope &envelope, int tick, int keyOn);
+ int calculateAmpl(Envelope &envelope, int tick);
+
+ // Read stream
+ int getAudio(int *mixBuf);
+ void volumeRamp(int *mixBuf, int tickLen);
+
+public:
+ // Check if module loading succeeds
+ bool loadSuccess() const { return _loadSuccess; }
+
+ // Implement virtual functions
+ virtual int readBuffer(int16 *buffer, const int numSamples);
+ virtual bool isStereo() const { return true; }
+ virtual int getRate() const { return _sampleRate; }
+ virtual bool endOfData() const { return _dataLeft <= 0; }
+
+ ModXmS3mStream(Common::SeekableReadStream *stream, int rate, int interpolation);
+ ~ModXmS3mStream();
+};
+
+const int ModXmS3mStream::FP_SHIFT = 0xF;
+const int ModXmS3mStream::FP_ONE = 0x8000;
+const int ModXmS3mStream::FP_MASK = 0x7FFF;
+const short ModXmS3mStream::sinetable[] = {
+ 0, 24, 49, 74, 97, 120, 141, 161, 180, 197, 212, 224, 235, 244, 250, 253,
+ 255, 253, 250, 244, 235, 224, 212, 197, 180, 161, 141, 120, 97, 74, 49, 24
+ };
+
+ModXmS3mStream::ModXmS3mStream(Common::SeekableReadStream *stream, int rate, int interpolation) {
+ _rampBuf = nullptr;
+ _playCount = nullptr;
+ _channels = nullptr;
+
+ if (!_module.load(*stream)) {
+ warning("It's not a valid Mod/S3m/Xm sound file");
+ _loadSuccess = false;
+ return;
+ }
+
+ // assign values
+ _loadSuccess = true;
+ _mixBufferSamples = 0;
+ _sampleRate = rate;
+ _interpolation = interpolation;
+ _rampBuf = new int[128];
+ _channels = new Channel[_module.numChannels];
+ _dataLeft = calculateDuration() * 4; // stereo and uint16
+ _mixBuffer = nullptr;
+}
+
+ModXmS3mStream::~ModXmS3mStream() {
+ if (_rampBuf) {
+ delete[] _rampBuf;
+ _rampBuf = nullptr;
+ }
+
+ if (_playCount) {
+ delete[] _playCount;
+ _playCount = nullptr;
+ }
+
+ if (_channels) {
+ delete[] _channels;
+ _channels = nullptr;
+ }
+
+ if (_mixBuffer) {
+ delete []_mixBuffer;
+ _mixBuffer = nullptr;
+ }
+}
+
+int ModXmS3mStream::initPlayCount(int8 **playCount) {
+ int len = 0;
+ for (int idx = 0; idx < _module.sequenceLen; ++idx) {
+ int pat = _module.sequence[idx];
+ int rows = (pat < _module.numPatterns) ? _module.patterns[pat].numRows : 0;
+ if (playCount) {
+ playCount[idx] = playCount[0] ? &playCount[0][len] : nullptr;
+ }
+ len += rows;
+ }
+ return len;
+}
+
+void ModXmS3mStream::initChannel(int idx) {
+ memset(&_channels[idx], 0, sizeof(Channel));
+ _channels[idx].panning = _module.defaultPanning[idx];
+ _channels[idx].instrument = &_module.instruments[0];
+ _channels[idx].sample = &_module.instruments[0].samples[0];
+ _channels[idx].randomSeed = (idx + 1) * 0xABCDEF;
+}
+
+void ModXmS3mStream::tickChannel(Channel &channel) {
+ channel.vibratoAdd = 0;
+ channel.fxCount++;
+ channel.retrigCount++;
+ if (!(channel.note.effect == 0x7D && channel.fxCount <= channel.note.param)) {
+ switch (channel.note.volume & 0xF0) {
+ case 0x60: /* Vol Slide Down.*/
+ channel.volume -= channel.note.volume & 0xF;
+ if (channel.volume < 0) {
+ channel.volume = 0;
+ }
+ break;
+ case 0x70: /* Vol Slide Up.*/
+ channel.volume += channel.note.volume & 0xF;
+ if (channel.volume > 64) {
+ channel.volume = 64;
+ }
+ break;
+ case 0xB0: /* Vibrato.*/
+ channel.vibratoPhase += channel.vibratoSpeed;
+ vibrato(channel, 0);
+ break;
+ case 0xD0: /* Pan Slide Left.*/
+ channel.panning -= channel.note.volume & 0xF;
+ if (channel.panning < 0) {
+ channel.panning = 0;
+ }
+ break;
+ case 0xE0: /* Pan Slide Right.*/
+ channel.panning += channel.note.volume & 0xF;
+ if (channel.panning > 255) {
+ channel.panning = 255;
+ }
+ break;
+ case 0xF0: /* Tone Porta.*/
+ tonePorta(channel);
+ break;
+ }
+ }
+ switch (channel.note.effect) {
+ case 0x01:
+ case 0x86: /* Porta Up. */
+ portaUp(channel, channel.portaUpParam);
+ break;
+ case 0x02:
+ case 0x85: /* Porta Down. */
+ portaDown(channel, channel.portaDownParam);
+ break;
+ case 0x03:
+ case 0x87: /* Tone Porta. */
+ tonePorta(channel);
+ break;
+ case 0x04:
+ case 0x88: /* Vibrato. */
+ channel.vibratoPhase += channel.vibratoSpeed;
+ vibrato(channel, 0);
+ break;
+ case 0x05:
+ case 0x8C: /* Tone Porta + Vol Slide. */
+ tonePorta(channel);
+ volumeSlide(channel);
+ break;
+ case 0x06:
+ case 0x8B: /* Vibrato + Vol Slide. */
+ channel.vibratoPhase += channel.vibratoSpeed;
+ vibrato(channel, 0);
+ volumeSlide(channel);
+ break;
+ case 0x07:
+ case 0x92: /* Tremolo. */
+ channel.tremoloPhase += channel.tremoloSpeed;
+ tremolo(channel);
+ break;
+ case 0x0A:
+ case 0x84: /* Vol Slide. */
+ volumeSlide(channel);
+ break;
+ case 0x11: /* Global Volume Slide. */
+ _globalVol = _globalVol + (channel.gvolSlideParam >> 4) - (channel.gvolSlideParam & 0xF);
+ if (_globalVol < 0) {
+ _globalVol = 0;
+ }
+ if (_globalVol > 64) {
+ _globalVol = 64;
+ }
+ break;
+ case 0x19: /* Panning Slide. */
+ channel.panning = channel.panning + (channel.panSlideParam >> 4) - (channel.panSlideParam & 0xF);
+ if (channel.panning < 0) {
+ channel.panning = 0;
+ }
+ if (channel.panning > 255) {
+ channel.panning = 255;
+ }
+ break;
+ case 0x1B:
+ case 0x91: /* Retrig + Vol Slide. */
+ retrigVolSlide(channel);
+ break;
+ case 0x1D:
+ case 0x89: /* Tremor. */
+ tremor(channel);
+ break;
+ case 0x79: /* Retrig. */
+ if (channel.fxCount >= channel.note.param) {
+ channel.fxCount = 0;
+ channel.sampleIdx = channel.sampleFra = 0;
+ }
+ break;
+ case 0x7C:
+ case 0xFC: /* Note Cut. */
+ if (channel.note.param == channel.fxCount) {
+ channel.volume = 0;
+ }
+ break;
+ case 0x7D:
+ case 0xFD: /* Note Delay. */
+ if (channel.note.param == channel.fxCount) {
+ trigger(channel);
+ }
+ break;
+ case 0x8A: /* Arpeggio. */
+ if (channel.fxCount == 1) {
+ channel.arpeggioAdd = channel.arpeggioParam >> 4;
+ } else if (channel.fxCount == 2) {
+ channel.arpeggioAdd = channel.arpeggioParam & 0xF;
+ } else {
+ channel.arpeggioAdd = channel.fxCount = 0;
+ }
+ break;
+ case 0x95: /* Fine Vibrato. */
+ channel.vibratoPhase += channel.vibratoSpeed;
+ vibrato(channel, 1);
+ break;
+ }
+ autoVibrato(channel);
+ calculateFreq(channel);
+ calculateAmpl(channel);
+ updateEnvelopes(channel);
+}
+
+void ModXmS3mStream::volumeSlide(Channel &channel) {
+ int up = channel.volSlideParam >> 4;
+ int down = channel.volSlideParam & 0xF;
+ if (down == 0xF && up > 0) {
+ /* Fine slide up.*/
+ if (channel.fxCount == 0) {
+ channel.volume += up;
+ }
+ } else if (up == 0xF && down > 0) {
+ /* Fine slide down.*/
+ if (channel.fxCount == 0) {
+ channel.volume -= down;
+ }
+ } else if (channel.fxCount > 0 || _module.fastVolSlides) {
+ /* Normal.*/
+ channel.volume += up - down;
+ }
+ if (channel.volume > 64) {
+ channel.volume = 64;
+ }
+ if (channel.volume < 0) {
+ channel.volume = 0;
+ }
+}
+
+void ModXmS3mStream::portaUp(Channel &channel, int param) {
+ switch (param & 0xF0) {
+ case 0xE0: /* Extra-fine porta.*/
+ if (channel.fxCount == 0) {
+ channel.period -= param & 0xF;
+ }
+ break;
+ case 0xF0: /* Fine porta.*/
+ if (channel.fxCount == 0) {
+ channel.period -= (param & 0xF) << 2;
+ }
+ break;
+ default:/* Normal porta.*/
+ if (channel.fxCount > 0) {
+ channel.period -= param << 2;
+ }
+ break;
+ }
+ if (channel.period < 0) {
+ channel.period = 0;
+ }
+}
+
+void ModXmS3mStream::portaDown(Channel &channel, int param) {
+ if (channel.period > 0) {
+ switch (param & 0xF0) {
+ case 0xE0: /* Extra-fine porta.*/
+ if (channel.fxCount == 0) {
+ channel.period += param & 0xF;
+ }
+ break;
+ case 0xF0: /* Fine porta.*/
+ if (channel.fxCount == 0) {
+ channel.period += (param & 0xF) << 2;
+ }
+ break;
+ default:/* Normal porta.*/
+ if (channel.fxCount > 0) {
+ channel.period += param << 2;
+ }
+ break;
+ }
+ if (channel.period > 65535) {
+ channel.period = 65535;
+ }
+ }
+}
+
+void ModXmS3mStream::tonePorta(Channel &channel) {
+ if (channel.period > 0) {
+ if (channel.period < channel.portaPeriod) {
+ channel.period += channel.tonePortaParam << 2;
+ if (channel.period > channel.portaPeriod) {
+ channel.period = channel.portaPeriod;
+ }
+ } else {
+ channel.period -= channel.tonePortaParam << 2;
+ if (channel.period < channel.portaPeriod) {
+ channel.period = channel.portaPeriod;
+ }
+ }
+ }
+}
+
+int ModXmS3mStream::waveform(Channel &channel, int phase, int type) {
+ int amplitude = 0;
+ switch (type) {
+ default: /* Sine. */
+ amplitude = sinetable[phase & 0x1F];
+ if ((phase & 0x20) > 0) {
+ amplitude = -amplitude;
+ }
+ break;
+ case 6: /* Saw Up.*/
+ amplitude = (((phase + 0x20) & 0x3F) << 3) - 255;
+ break;
+ case 1:
+ case 7: /* Saw Down. */
+ amplitude = 255 - (((phase + 0x20) & 0x3F) << 3);
+ break;
+ case 2:
+ case 5: /* Square. */
+ amplitude = (phase & 0x20) > 0 ? 255 : -255;
+ break;
+ case 3:
+ case 8: /* Random. */
+ amplitude = (channel.randomSeed >> 20) - 255;
+ channel.randomSeed = (channel.randomSeed * 65 + 17) & 0x1FFFFFFF;
+ break;
+ }
+ return amplitude;
+}
+
+void ModXmS3mStream::vibrato(Channel &channel, int fine) {
+ int wave = waveform(channel, channel.vibratoPhase, channel.vibratoType & 0x3);
+ channel.vibratoAdd = wave * channel.vibratoDepth >> (fine ? 7 : 5);
+}
+
+void ModXmS3mStream::tremolo(Channel &channel) {
+ int wave = waveform(channel, channel.tremoloPhase, channel.tremoloType & 0x3);
+ channel.tremoloAdd = wave * channel.tremoloDepth >> 6;
+}
+
+void ModXmS3mStream::tremor(Channel &channel) {
+ if (channel.retrigCount >= channel.tremorOnTicks) {
+ channel.tremoloAdd = -64;
+ }
+ if (channel.retrigCount >= (channel.tremorOnTicks + channel.tremorOffTicks)) {
+ channel.tremoloAdd = channel.retrigCount = 0;
+ }
+}
+
+void ModXmS3mStream::retrigVolSlide(Channel &channel) {
+ if (channel.retrigCount >= channel.retrigTicks) {
+ channel.retrigCount = channel.sampleIdx = channel.sampleFra = 0;
+ switch (channel.retrigVolume) {
+ case 0x1:
+ channel.volume = channel.volume - 1;
+ break;
+ case 0x2:
+ channel.volume = channel.volume - 2;
+ break;
+ case 0x3:
+ channel.volume = channel.volume - 4;
+ break;
+ case 0x4:
+ channel.volume = channel.volume - 8;
+ break;
+ case 0x5:
+ channel.volume = channel.volume - 16;
+ break;
+ case 0x6:
+ channel.volume = channel.volume * 2 / 3;
+ break;
+ case 0x7:
+ channel.volume = channel.volume >> 1;
+ break;
+ case 0x8: /* ? */
+ break;
+ case 0x9:
+ channel.volume = channel.volume + 1;
+ break;
+ case 0xA:
+ channel.volume = channel.volume + 2;
+ break;
+ case 0xB:
+ channel.volume = channel.volume + 4;
+ break;
+ case 0xC:
+ channel.volume = channel.volume + 8;
+ break;
+ case 0xD:
+ channel.volume = channel.volume + 16;
+ break;
+ case 0xE:
+ channel.volume = channel.volume * 3 / 2;
+ break;
+ case 0xF:
+ channel.volume = channel.volume << 1;
+ break;
+ }
+ if (channel.volume < 0) {
+ channel.volume = 0;
+ }
+ if (channel.volume > 64) {
+ channel.volume = 64;
+ }
+ }
+}
+
+void ModXmS3mStream::trigger(Channel &channel) {
+ int ins = channel.note.instrument;
+ if (ins > 0 && ins <= _module.numInstruments) {
+ channel.instrument = &_module.instruments[ins];
+ int key = channel.note.key < 97 ? channel.note.key : 0;
+ int sam = channel.instrument->keyToSample[key];
+ Sample *sample = &channel.instrument->samples[sam];
+ channel.volume = sample->volume >= 64 ? 64 : sample->volume & 0x3F;
+ if (sample->panning > 0) {
+ channel.panning = (sample->panning - 1) & 0xFF;
+ }
+ if (channel.period > 0 && sample->loopLength > 1) {
+ /* Amiga trigger.*/
+ channel.sample = sample;
+ }
+ channel.sampleOff = 0;
+ channel.volEnvTick = channel.panEnvTick = 0;
+ channel.fadeoutVol = 32768;
+ channel.keyOn = 1;
+ }
+ if (channel.note.effect == 0x09 || channel.note.effect == 0x8F) {
+ /* Set Sample Offset. */
+ if (channel.note.param > 0) {
+ channel.offsetParam = channel.note.param;
+ }
+ channel.sampleOff = channel.offsetParam << 8;
+ }
+ if (channel.note.volume >= 0x10 && channel.note.volume < 0x60) {
+ channel.volume = channel.note.volume < 0x50 ? channel.note.volume - 0x10 : 64;
+ }
+ switch (channel.note.volume & 0xF0) {
+ case 0x80: /* Fine Vol Down.*/
+ channel.volume -= channel.note.volume & 0xF;
+ if (channel.volume < 0) {
+ channel.volume = 0;
+ }
+ break;
+ case 0x90: /* Fine Vol Up.*/
+ channel.volume += channel.note.volume & 0xF;
+ if (channel.volume > 64) {
+ channel.volume = 64;
+ }
+ break;
+ case 0xA0: /* Set Vibrato Speed.*/
+ if ((channel.note.volume & 0xF) > 0) {
+ channel.vibratoSpeed = channel.note.volume & 0xF;
+ }
+ break;
+ case 0xB0: /* Vibrato.*/
+ if ((channel.note.volume & 0xF) > 0) {
+ channel.vibratoDepth = channel.note.volume & 0xF;
+ }
+ vibrato(channel, 0);
+ break;
+ case 0xC0: /* Set Panning.*/
+ channel.panning = (channel.note.volume & 0xF) * 17;
+ break;
+ case 0xF0: /* Tone Porta.*/
+ if ((channel.note.volume & 0xF) > 0) {
+ channel.tonePortaParam = channel.note.volume & 0xF;
+ }
+ break;
+ }
+ if (channel.note.key > 0) {
+ if (channel.note.key > 96) {
+ channel.keyOn = 0;
+ } else {
+ int porta = (channel.note.volume & 0xF0) == 0xF0 || channel.note.effect == 0x03 || channel.note.effect == 0x05 || channel.note.effect == 0x87 || channel.note.effect == 0x8C;
+ if (!porta) {
+ ins = channel.instrument->keyToSample[channel.note.key];
+ channel.sample = &channel.instrument->samples[ins];
+ }
+ int finetune = channel.sample->finetune;
+ if (channel.note.effect == 0x75 || channel.note.effect == 0xF2) {
+ /* Set Fine Tune. */
+ finetune = ((channel.note.param & 0xF) << 4) - 128;
+ }
+ int key = channel.note.key + channel.sample->relNote;
+ if (key < 1) {
+ key = 1;
+ }
+ if (key > 120) {
+ key = 120;
+ }
+ int period = (key << 6) + (finetune >> 1);
+ if (_module.linearPeriods) {
+ channel.portaPeriod = 7744 - period;
+ } else {
+ channel.portaPeriod = 29021 * ModuleModXmS3m::moduleExp2((period << FP_SHIFT) / -768) >> FP_SHIFT;
+ }
+ if (!porta) {
+ channel.period = channel.portaPeriod;
+ channel.sampleIdx = channel.sampleOff;
+ channel.sampleFra = 0;
+ if (channel.vibratoType < 4) {
+ channel.vibratoPhase = 0;
+ }
+ if (channel.tremoloType < 4) {
+ channel.tremoloPhase = 0;
+ }
+ channel.retrigCount = channel.avCount = 0;
+ }
+ }
+ }
+}
+
+void ModXmS3mStream::updateEnvelopes(Channel &channel) {
+ if (channel.instrument->volEnv.enabled) {
+ if (!channel.keyOn) {
+ channel.fadeoutVol -= channel.instrument->volFadeout;
+ if (channel.fadeoutVol < 0) {
+ channel.fadeoutVol = 0;
+ }
+ }
+ channel.volEnvTick = envelopeNextTick(channel.instrument->volEnv, channel.volEnvTick, channel.keyOn);
+ }
+ if (channel.instrument->panEnv.enabled) {
+ channel.panEnvTick = envelopeNextTick(channel.instrument->panEnv, channel.panEnvTick, channel.keyOn);
+ }
+}
+
+void ModXmS3mStream::autoVibrato(Channel &channel) {
+ int depth = channel.instrument->vibDepth & 0x7F;
+ if (depth > 0) {
+ int sweep = channel.instrument->vibSweep & 0x7F;
+ int rate = channel.instrument->vibRate & 0x7F;
+ int type = channel.instrument->vibType;
+ if (channel.avCount < sweep) {
+ depth = depth * channel.avCount / sweep;
+ }
+ int wave = waveform(channel, channel.avCount * rate >> 2, type + 4);
+ channel.vibratoAdd += wave * depth >> 8;
+ channel.avCount++;
+ }
+}
+
+void ModXmS3mStream::calculateFreq(Channel &channel) {
+ int per = channel.period + channel.vibratoAdd;
+ if (_module.linearPeriods) {
+ per = per - (channel.arpeggioAdd << 6);
+ if (per < 28 || per > 7680) {
+ per = 7680;
+ }
+ channel.freq = ((_module.c2Rate >> 4) * ModuleModXmS3m::moduleExp2(((4608 - per) << FP_SHIFT) / 768)) >> (FP_SHIFT - 4);
+ } else {
+ if (per > 29021) {
+ per = 29021;
+ }
+ per = (per << FP_SHIFT) / ModuleModXmS3m::moduleExp2((channel.arpeggioAdd << FP_SHIFT) / 12);
+ if (per < 28) {
+ per = 29021;
+ }
+ channel.freq = _module.c2Rate * 1712 / per;
+ }
+}
+
+void ModXmS3mStream::calculateAmpl(Channel &channel) {
+ int envPan = 32, envVol = channel.keyOn ? 64 : 0;
+ if (channel.instrument->volEnv.enabled) {
+ envVol = calculateAmpl(channel.instrument->volEnv, channel.volEnvTick);
+ }
+ int vol = channel.volume + channel.tremoloAdd;
+ if (vol > 64) {
+ vol = 64;
+ }
+ if (vol < 0) {
+ vol = 0;
+ }
+ vol = (vol * _module.gain * FP_ONE) >> 13;
+ vol = (vol * channel.fadeoutVol) >> 15;
+ channel.ampl = (vol * _globalVol * envVol) >> 12;
+ if (channel.instrument->panEnv.enabled) {
+ envPan = calculateAmpl(channel.instrument->panEnv, channel.panEnvTick);
+ }
+ int range = (channel.panning < 128) ? channel.panning : (255 - channel.panning);
+ channel.pann = channel.panning + (range * (envPan - 32) >> 5);
+}
+
+void ModXmS3mStream::updateChannelRow(Channel &channel, Note note) {
+ channel.note = note;
+ channel.retrigCount++;
+ channel.vibratoAdd = channel.tremoloAdd = channel.arpeggioAdd = channel.fxCount = 0;
+ if (!((note.effect == 0x7D || note.effect == 0xFD) && note.param > 0)) {
+ /* Not note delay.*/
+ trigger(channel);
+ }
+ switch (channel.note.effect) {
+ case 0x01:
+ case 0x86: /* Porta Up. */
+ if (channel.note.param > 0) {
+ channel.portaUpParam = channel.note.param;
+ }
+ portaUp(channel, channel.portaUpParam);
+ break;
+ case 0x02:
+ case 0x85: /* Porta Down. */
+ if (channel.note.param > 0) {
+ channel.portaDownParam = channel.note.param;
+ }
+ portaDown(channel, channel.portaDownParam);
+ break;
+ case 0x03:
+ case 0x87: /* Tone Porta. */
+ if (channel.note.param > 0) {
+ channel.tonePortaParam = channel.note.param;
+ }
+ break;
+ case 0x04:
+ case 0x88: /* Vibrato. */
+ if ((channel.note.param >> 4) > 0) {
+ channel.vibratoSpeed = channel.note.param >> 4;
+ }
+ if ((channel.note.param & 0xF) > 0) {
+ channel.vibratoDepth = channel.note.param & 0xF;
+ }
+ vibrato(channel, 0);
+ break;
+ case 0x05:
+ case 0x8C: /* Tone Porta + Vol Slide. */
+ if (channel.note.param > 0) {
+ channel.volSlideParam = channel.note.param;
+ }
+ volumeSlide(channel);
+ break;
+ case 0x06:
+ case 0x8B: /* Vibrato + Vol Slide. */
+ if (channel.note.param > 0) {
+ channel.volSlideParam = channel.note.param;
+ }
+ vibrato(channel, 0);
+ volumeSlide(channel);
+ break;
+ case 0x07:
+ case 0x92: /* Tremolo. */
+ if ((channel.note.param >> 4) > 0) {
+ channel.tremoloSpeed = channel.note.param >> 4;
+ }
+ if ((channel.note.param & 0xF) > 0) {
+ channel.tremoloDepth = channel.note.param & 0xF;
+ }
+ tremolo(channel);
+ break;
+ case 0x08: /* Set Panning.*/
+ channel.panning = (channel.note.param < 128) ? (channel.note.param << 1) : 255;
+ break;
+ case 0x0A:
+ case 0x84: /* Vol Slide. */
+ if (channel.note.param > 0) {
+ channel.volSlideParam = channel.note.param;
+ }
+ volumeSlide(channel);
+ break;
+ case 0x0C: /* Set Volume. */
+ channel.volume = channel.note.param >= 64 ? 64 : channel.note.param & 0x3F;
+ break;
+ case 0x10:
+ case 0x96: /* Set Global Volume. */
+ _globalVol = channel.note.param >= 64 ? 64 : channel.note.param & 0x3F;
+ break;
+ case 0x11: /* Global Volume Slide. */
+ if (channel.note.param > 0) {
+ channel.gvolSlideParam = channel.note.param;
+ }
+ break;
+ case 0x14: /* Key Off. */
+ channel.keyOn = 0;
+ break;
+ case 0x15: /* Set Envelope Tick. */
+ channel.volEnvTick = channel.panEnvTick = channel.note.param & 0xFF;
+ break;
+ case 0x19: /* Panning Slide. */
+ if (channel.note.param > 0) {
+ channel.panSlideParam = channel.note.param;
+ }
+ break;
+ case 0x1B:
+ case 0x91: /* Retrig + Vol Slide. */
+ if ((channel.note.param >> 4) > 0) {
+ channel.retrigVolume = channel.note.param >> 4;
+ }
+ if ((channel.note.param & 0xF) > 0) {
+ channel.retrigTicks = channel.note.param & 0xF;
+ }
+ retrigVolSlide(channel);
+ break;
+ case 0x1D:
+ case 0x89: /* Tremor. */
+ if ((channel.note.param >> 4) > 0) {
+ channel.tremorOnTicks = channel.note.param >> 4;
+ }
+ if ((channel.note.param & 0xF) > 0) {
+ channel.tremorOffTicks = channel.note.param & 0xF;
+ }
+ tremor(channel);
+ break;
+ case 0x21: /* Extra Fine Porta. */
+ if (channel.note.param > 0) {
+ channel.xfinePortaParam = channel.note.param;
+ }
+ switch (channel.xfinePortaParam & 0xF0) {
+ case 0x10:
+ portaUp(channel, 0xE0 | (channel.xfinePortaParam & 0xF));
+ break;
+ case 0x20:
+ portaDown(channel, 0xE0 | (channel.xfinePortaParam & 0xF));
+ break;
+ }
+ break;
+ case 0x71: /* Fine Porta Up. */
+ if (channel.note.param > 0) {
+ channel.finePortaUpParam = channel.note.param;
+ }
+ portaUp(channel, 0xF0 | (channel.finePortaUpParam & 0xF));
+ break;
+ case 0x72: /* Fine Porta Down. */
+ if (channel.note.param > 0) {
+ channel.finePortaDownParam = channel.note.param;
+ }
+ portaDown(channel, 0xF0 | (channel.finePortaDownParam & 0xF));
+ break;
+ case 0x74:
+ case 0xF3: /* Set Vibrato Waveform. */
+ if (channel.note.param < 8) {
+ channel.vibratoType = channel.note.param;
+ }
+ break;
+ case 0x77:
+ case 0xF4: /* Set Tremolo Waveform. */
+ if (channel.note.param < 8) {
+ channel.tremoloType = channel.note.param;
+ }
+ break;
+ case 0x7A: /* Fine Vol Slide Up. */
+ if (channel.note.param > 0) {
+ channel.fineVslideUpParam = channel.note.param;
+ }
+ channel.volume += channel.fineVslideUpParam;
+ if (channel.volume > 64) {
+ channel.volume = 64;
+ }
+ break;
+ case 0x7B: /* Fine Vol Slide Down. */
+ if (channel.note.param > 0) {
+ channel.fineVslideDownParam = channel.note.param;
+ }
+ channel.volume -= channel.fineVslideDownParam;
+ if (channel.volume < 0) {
+ channel.volume = 0;
+ }
+ break;
+ case 0x7C:
+ case 0xFC: /* Note Cut. */
+ if (channel.note.param <= 0) {
+ channel.volume = 0;
+ }
+ break;
+ case 0x8A: /* Arpeggio. */
+ if (channel.note.param > 0) {
+ channel.arpeggioParam = channel.note.param;
+ }
+ break;
+ case 0x95: /* Fine Vibrato.*/
+ if ((channel.note.param >> 4) > 0) {
+ channel.vibratoSpeed = channel.note.param >> 4;
+ }
+ if ((channel.note.param & 0xF) > 0) {
+ channel.vibratoDepth = channel.note.param & 0xF;
+ }
+ vibrato(channel, 1);
+ break;
+ case 0xF8: /* Set Panning. */
+ channel.panning = channel.note.param * 17;
+ break;
+ }
+ autoVibrato(channel);
+ calculateFreq(channel);
+ calculateAmpl(channel);
+ updateEnvelopes(channel);
+}
+
+int ModXmS3mStream::tick() {
+ int count = 1;
+ if (--_tick <= 0) {
+ _tick = _speed;
+ updateRow();
+ } else {
+ for (int idx = 0; idx < _module.numChannels; idx++) {
+ tickChannel(_channels[idx]);
+ }
+ }
+ if (_playCount && _playCount[0]) {
+ count = _playCount[_seqPos][_row] - 1;
+ }
+ return count;
+}
+
+void ModXmS3mStream::updateRow() {
+ if (_nextRow < 0) {
+ _breakPos = _seqPos + 1;
+ _nextRow = 0;
+ }
+ if (_breakPos >= 0) {
+ if (_breakPos >= _module.sequenceLen) {
+ _breakPos = _nextRow = 0;
+ }
+ while (_module.sequence[_breakPos] >= _module.numPatterns) {
+ _breakPos++;
+ if (_breakPos >= _module.sequenceLen) {
+ _breakPos = _nextRow = 0;
+ }
+ }
+ _seqPos = _breakPos;
+ for (int idx = 0; idx < _module.numChannels; idx++) {
+ _channels[idx].plRow = 0;
+ }
+ _breakPos = -1;
+ }
+ Pattern &pattern = _module.patterns[_module.sequence[_seqPos]];
+ _row = _nextRow;
+ if (_row >= pattern.numRows) {
+ _row = 0;
+ }
+ if (_playCount && _playCount[0]) {
+ int count = _playCount[_seqPos][_row];
+ if (_plCount < 0 && count < 127) {
+ _playCount[_seqPos][_row] = count + 1;
+ }
+ }
+ _nextRow = _row + 1;
+ if (_nextRow >= pattern.numRows) {
+ _nextRow = -1;
+ }
+ for (int idx = 0; idx < _module.numChannels; ++idx) {
+ Note note = pattern.getNote(_row, idx);
+ if (note.effect == 0xE) {
+ note.effect = 0x70 | (note.param >> 4);
+ note.param &= 0xF;
+ }
+ if (note.effect == 0x93) {
+ note.effect = 0xF0 | (note.param >> 4);
+ note.param &= 0xF;
+ }
+ if (note.effect == 0 && note.param > 0) {
+ note.effect = 0x8A;
+ }
+
+ Channel &channel = _channels[idx];
+ updateChannelRow(channel, note);
+ switch (note.effect) {
+ case 0x81: /* Set Speed. */
+ if (note.param > 0) {
+ _tick = _speed = note.param;
+ }
+ break;
+ case 0xB:
+ case 0x82: /* Pattern Jump.*/
+ if (_plCount < 0) {
+ _breakPos = note.param;
+ _nextRow = 0;
+ }
+ break;
+ case 0xD:
+ case 0x83: /* Pattern Break.*/
+ if (_plCount < 0) {
+ if (_breakPos < 0) {
+ _breakPos = _seqPos + 1;
+ }
+ _nextRow = (note.param >> 4) * 10 + (note.param & 0xF);
+ }
+ break;
+ case 0xF: /* Set Speed/Tempo.*/
+ if (note.param > 0) {
+ if (note.param < 32) {
+ _tick = _speed = note.param;
+ } else {
+ _tempo = note.param;
+ }
+ }
+ break;
+ case 0x94: /* Set Tempo.*/
+ if (note.param > 32) {
+ _tempo = note.param;
+ }
+ break;
+ case 0x76:
+ case 0xFB: /* Pattern Loop.*/
+ if (note.param == 0) {
+ /* Set loop marker on this channel. */
+ channel.plRow = _row;
+ }
+ if (channel.plRow < _row && _breakPos < 0) {
+ /* Marker valid. */
+ if (_plCount < 0) {
+ /* Not already looping, begin. */
+ _plCount = note.param;
+ _plChan = idx;
+ }
+ if (_plChan == idx) {
+ /* Next Loop.*/
+ if (_plCount == 0) {
+ /* Loop finished. Invalidate current marker. */
+ channel.plRow = _row + 1;
+ } else {
+ /* Loop. */
+ _nextRow = channel.plRow;
+ }
+ _plCount--;
+ }
+ }
+ break;
+ case 0x7E:
+ case 0xFE: /* Pattern Delay.*/
+ _tick = _speed + _speed * note.param;
+ break;
+ }
+ }
+}
+
+int ModXmS3mStream::envelopeNextTick(Envelope &envelope, int tick, int keyOn) {
+ tick++;
+ if (envelope.looped && tick >= envelope.loopEndTick) {
+ tick = envelope.loopStartTick;
+ }
+ if (envelope.sustain && keyOn && tick >= envelope.sustainTick) {
+ tick = envelope.sustainTick;
+ }
+ return tick;
+}
+
+int ModXmS3mStream::calculateAmpl(Envelope &envelope, int tick) {
+ int idx, point, dt, da;
+ int ampl = envelope.pointsAmpl[envelope.numPoints - 1];
+ if (tick < envelope.pointsTick[envelope.numPoints - 1]) {
+ point = 0;
+ for (idx = 1; idx < envelope.numPoints; idx++) {
+ if (envelope.pointsTick[idx] <= tick) {
+ point = idx;
+ }
+ }
+ dt = envelope.pointsTick[point + 1] - envelope.pointsTick[point];
+ da = envelope.pointsAmpl[point + 1] - envelope.pointsAmpl[point];
+ ampl = envelope.pointsAmpl[point];
+ ampl += ((da << 24) / dt) * (tick - envelope.pointsTick[point]) >> 24;
+ }
+ return ampl;
+}
+
+int ModXmS3mStream::calculateDuration() {
+ int count = 0, duration = 0;
+ setSequencePos(0);
+ while (count < 1) {
+ duration += calculateTickLength();
+ count = tick();
+ }
+ setSequencePos(0);
+ return duration;
+}
+
+/* Seek to approximately the specified sample position.
+ The actual sample position reached is returned. */
+int ModXmS3mStream::seek(int samplePos) {
+ int currentPos = 0;
+ setSequencePos(0);
+ int tickLen = calculateTickLength();
+ while ((samplePos - currentPos) >= tickLen) {
+ for (int idx = 0; idx < _module.numChannels; ++idx) {
+ updateSampleIdx(_channels[idx], tickLen * 2, _sampleRate * 2);
+ }
+ currentPos += tickLen;
+ tick();
+ tickLen = calculateTickLength();
+ }
+ return currentPos;
+}
+
+void ModXmS3mStream::resample(Channel &channel, int *mixBuf, int offset, int count, int sampleRate) {
+ Sample *sample = channel.sample;
+ int lGain = 0, rGain = 0, samIdx = 0, samFra = 0, step = 0;
+ int loopLen = 0, loopEnd = 0, outIdx = 0, outEnd = 0, y = 0, m = 0, c = 0;
+ int16 *sampleData = channel.sample->data;
+ if (channel.ampl > 0) {
+ lGain = channel.ampl * (255 - channel.pann) >> 8;
+ rGain = channel.ampl * channel.pann >> 8;
+ samIdx = channel.sampleIdx;
+ samFra = channel.sampleFra;
+ step = (channel.freq << (FP_SHIFT - 3)) / (sampleRate >> 3);
+ loopLen = sample->loopLength;
+ loopEnd = sample->loopStart + loopLen;
+ outIdx = offset * 2;
+ outEnd = (offset + count) * 2;
+ if (_interpolation) {
+ while (outIdx < outEnd) {
+ if (samIdx >= loopEnd) {
+ if (loopLen > 1) {
+ while (samIdx >= loopEnd) {
+ samIdx -= loopLen;
+ }
+ } else {
+ break;
+ }
+ }
+ c = sampleData[samIdx];
+ m = sampleData[samIdx + 1] - c;
+ y = ((m * samFra) >> FP_SHIFT) + c;
+ mixBuf[outIdx++] += (y * lGain) >> FP_SHIFT;
+ mixBuf[outIdx++] += (y * rGain) >> FP_SHIFT;
+ samFra += step;
+ samIdx += samFra >> FP_SHIFT;
+ samFra &= FP_MASK;
+ }
+ } else {
+ while (outIdx < outEnd) {
+ if (samIdx >= loopEnd) {
+ if (loopLen > 1) {
+ while (samIdx >= loopEnd) {
+ samIdx -= loopLen;
+ }
+ } else {
+ break;
+ }
+ }
+ if (samIdx < 0)
+ samIdx = 0;
+ y = sampleData[samIdx];
+ mixBuf[outIdx++] += (y * lGain) >> FP_SHIFT;
+ mixBuf[outIdx++] += (y * rGain) >> FP_SHIFT;
+ samFra += step;
+ samIdx += samFra >> FP_SHIFT;
+ samFra &= FP_MASK;
+ }
+ }
+ }
+}
+
+void ModXmS3mStream::updateSampleIdx(Channel &channel, int count, int sampleRate) {
+ Sample *sample = channel.sample;
+ int step = (channel.freq << (FP_SHIFT - 3)) / (sampleRate >> 3);
+ channel.sampleFra += step * count;
+ channel.sampleIdx += channel.sampleFra >> FP_SHIFT;
+ if (channel.sampleIdx > (int)sample->loopStart) {
+ if (sample->loopLength > 1) {
+ channel.sampleIdx = sample->loopStart + (channel.sampleIdx - sample->loopStart) % sample->loopLength;
+ } else {
+ channel.sampleIdx = sample->loopStart;
+ }
+ }
+ channel.sampleFra &= FP_MASK;
+}
+
+void ModXmS3mStream::volumeRamp(int *mixBuf, int tickLen) {
+ int rampRate = 256 * 2048 / _sampleRate;
+ for (int idx = 0, a1 = 0; a1 < 256; idx += 2, a1 += rampRate) {
+ int a2 = 256 - a1;
+ mixBuf[idx] = (mixBuf[idx] * a1 + _rampBuf[idx] * a2) >> 8;
+ mixBuf[idx + 1] = (mixBuf[idx + 1] * a1 + _rampBuf[idx + 1] * a2) >> 8;
+ }
+ memcpy(_rampBuf, &mixBuf[tickLen * 2], 128 * sizeof(int));
+}
+
+/* 2:1 downsampling with simple but effective anti-aliasing. Buf must contain count * 2 + 1 stereo samples. */
+void ModXmS3mStream::downsample(int *buf, int count) {
+ int outLen = count * 2;
+ for (int idx = 0, outIdx = 0; outIdx < outLen; idx += 4, outIdx += 2) {
+ buf[outIdx] = (buf[idx] >> 2) + (buf[idx + 2] >> 1) + (buf[idx + 4] >> 2);
+ buf[outIdx + 1] = (buf[idx + 1] >> 2) + (buf[idx + 3] >> 1) + (buf[idx + 5] >> 2);
+ }
+}
+
+/* Generates audio and returns the number of stereo samples written into mixBuf. */
+int ModXmS3mStream::getAudio(int *mixBuf) {
+ if (_mixBuffer) {
+ memcpy(mixBuf, _mixBuffer, _mixBufferSamples * sizeof(int));
+ delete []_mixBuffer;
+ _mixBuffer = nullptr;
+ return _mixBufferSamples;
+ }
+
+ int tickLen = calculateTickLength();
+ /* Clear output buffer. */
+ memset(mixBuf, 0, (tickLen + 65) * 4 * sizeof(int));
+ /* Resample. */
+ for (int idx = 0; idx < _module.numChannels; idx++) {
+ Channel &channel = _channels[idx];
+ resample(channel, mixBuf, 0, (tickLen + 65) * 2, _sampleRate * 2);
+ updateSampleIdx(channel, tickLen * 2, _sampleRate * 2);
+ }
+ downsample(mixBuf, tickLen + 64);
+ volumeRamp(mixBuf, tickLen);
+ tick();
+ return tickLen * 2; // stereo samples
+}
+
+int ModXmS3mStream::readBuffer(int16 *buffer, const int numSamples) {
+ int samplesRead = 0;
+ while (samplesRead < numSamples && _dataLeft >= 0) {
+ int *mixBuf = new int[calculateMixBufLength()];
+ int samples = getAudio(mixBuf);
+ if (samplesRead + samples > numSamples) {
+ _mixBufferSamples = samplesRead + samples - numSamples;
+ samples -= _mixBufferSamples;
+ _mixBuffer = new int[_mixBufferSamples];
+ memcpy(_mixBuffer, mixBuf + samples, _mixBufferSamples * sizeof(int));
+ }
+ for (int idx = 0; idx < samples; ++idx) {
+ int ampl = mixBuf[idx];
+ if (ampl > 32767) {
+ ampl = 32767;
+ }
+ if (ampl < -32768) {
+ ampl = -32768;
+ }
+ *buffer++ = ampl;
+ }
+ samplesRead += samples;
+ delete []mixBuf; // free
+ }
+ _dataLeft -= samplesRead * 2;
+
+ return samplesRead;
+}
+
+void ModXmS3mStream::setSequencePos(int pos) {
+ if (pos >= _module.sequenceLen) {
+ pos = 0;
+ }
+ _breakPos = pos;
+ _nextRow = 0;
+ _tick = 1;
+ _globalVol = _module.defaultGvol;
+ _speed = _module.defaultSpeed > 0 ? _module.defaultSpeed : 6;
+ _tempo = _module.defaultTempo > 0 ? _module.defaultTempo : 125;
+ _plCount = _plChan = -1;
+
+ // play count
+ if (_playCount) {
+ delete[] _playCount[0];
+ delete[] _playCount;
+ }
+ _playCount = new int8 *[_module.sequenceLen];
+ memset(_playCount, 0, _module.sequenceLen * sizeof(int8 *));
+ int len = initPlayCount(_playCount);
+ _playCount[0] = new int8[len];
+ memset(_playCount[0], 0, len * sizeof(int8));
+ initPlayCount(_playCount);
+
+ for (int idx = 0; idx < _module.numChannels; ++idx) {
+ initChannel(idx);
+ }
+ memset(_rampBuf, 0, 128 * sizeof(int));
+ tick();
+}
+
+} // End of namespace Modules
+
+namespace Audio {
+
+AudioStream *makeModXmS3mStream(Common::SeekableReadStream *stream, DisposeAfterUse::Flag disposeAfterUse, int rate, int interpolation) {
+ Modules::ModXmS3mStream *soundStream = new Modules::ModXmS3mStream(stream, rate, interpolation);
+
+ if (disposeAfterUse == DisposeAfterUse::YES)
+ delete stream;
+
+ if (!soundStream->loadSuccess()) {
+ delete soundStream;
+ return nullptr;
+ }
+
+ return (AudioStream *)soundStream;
+}
+
+} // End of namespace Audio
diff --git a/audio/mods/mod_xm_s3m.h b/audio/mods/mod_xm_s3m.h
new file mode 100644
index 0000000000..904adae952
--- /dev/null
+++ b/audio/mods/mod_xm_s3m.h
@@ -0,0 +1,92 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * 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 source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+/*
+ * This code is based on IBXM mod player
+ *
+ * Copyright (c) 2015, Martin Cameron
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the
+ * following conditions are met:
+ *
+ * * Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the
+ * above copyright notice, this list of conditions and the
+ * following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * * Neither the name of the organization nor the names of
+ * its contributors may be used to endorse or promote
+ * products derived from this software without specific
+ * prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef AUDIO_MODS_MOD_XM_S3M_H
+#define AUDIO_MODS_MOD_XM_S3M_H
+
+namespace Common {
+class SeekableReadStream;
+}
+
+namespace Audio {
+
+class AudioStream;
+
+/*
+ * Factory function for ModXmS3mStream streams. Reads all data from the
+ * given ReadStream and creates an AudioStream from this. No reference
+ * to the 'stream' object is kept, so you can safely delete it after
+ * invoking this factory.
+ *
+ * @param stream the ReadStream from which to read the tracker sound data
+ * @param disposeAfterUse whether to delete the stream after use
+ * @param rate sample rate
+ * @param interpolation interpolation effect level
+ */
+AudioStream *makeModXmS3mStream(Common::SeekableReadStream *stream,
+ DisposeAfterUse::Flag disposeAfterUse,
+ int rate = 48000, int interpolation = 0);
+
+} // End of namespace Audio
+
+#endif
diff --git a/audio/mods/module_mod_xm_s3m.cpp b/audio/mods/module_mod_xm_s3m.cpp
new file mode 100644
index 0000000000..3ea68e5486
--- /dev/null
+++ b/audio/mods/module_mod_xm_s3m.cpp
@@ -0,0 +1,841 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * 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 source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+/*
+ * This code is based on IBXM mod player
+ *
+ * Copyright (c) 2015, Martin Cameron
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the
+ * following conditions are met:
+ *
+ * * Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the
+ * above copyright notice, this list of conditions and the
+ * following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * * Neither the name of the organization nor the names of
+ * its contributors may be used to endorse or promote
+ * products derived from this software without specific
+ * prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include "common/debug.h"
+#include "common/endian.h"
+#include "common/stream.h"
+#include "common/textconsole.h"
+#include "common/util.h"
+#include "module_mod_xm_s3m.h"
+
+namespace Modules {
+
+const int ModuleModXmS3m::FP_SHIFT = 0xF;
+const int ModuleModXmS3m::FP_ONE = 0x8000;
+const int ModuleModXmS3m::FP_MASK = 0x7FFF;
+
+const int ModuleModXmS3m::exp2table[] = {
+ 32768, 32946, 33125, 33305, 33486, 33667, 33850, 34034,
+ 34219, 34405, 34591, 34779, 34968, 35158, 35349, 35541,
+ 35734, 35928, 36123, 36319, 36516, 36715, 36914, 37114,
+ 37316, 37518, 37722, 37927, 38133, 38340, 38548, 38757,
+ 38968, 39180, 39392, 39606, 39821, 40037, 40255, 40473,
+ 40693, 40914, 41136, 41360, 41584, 41810, 42037, 42265,
+ 42495, 42726, 42958, 43191, 43425, 43661, 43898, 44137,
+ 44376, 44617, 44859, 45103, 45348, 45594, 45842, 46091,
+ 46341, 46593, 46846, 47100, 47356, 47613, 47871, 48131,
+ 48393, 48655, 48920, 49185, 49452, 49721, 49991, 50262,
+ 50535, 50810, 51085, 51363, 51642, 51922, 52204, 52488,
+ 52773, 53059, 53347, 53637, 53928, 54221, 54515, 54811,
+ 55109, 55408, 55709, 56012, 56316, 56622, 56929, 57238,
+ 57549, 57861, 58176, 58491, 58809, 59128, 59449, 59772,
+ 60097, 60423, 60751, 61081, 61413, 61746, 62081, 62419,
+ 62757, 63098, 63441, 63785, 64132, 64480, 64830, 65182,
+ 65536
+};
+
+int ModuleModXmS3m::moduleExp2(int x) {
+ int c, m, y;
+ int x0 = (x & FP_MASK) >> (FP_SHIFT - 7);
+ c = exp2table[x0];
+ m = exp2table[x0 + 1] - c;
+ y = (m * (x & (FP_MASK >> 7)) >> 8) + c;
+ return (y << FP_SHIFT) >> (FP_SHIFT - (x >> FP_SHIFT));
+}
+
+int ModuleModXmS3m::moduleLog2(int x) {
+ int y = 16 << FP_SHIFT;
+ for (int step = y; step > 0; step >>= 1) {
+ if (moduleExp2(y - step) >= x) {
+ y -= step;
+ }
+ }
+ return y;
+}
+
+bool ModuleModXmS3m::load(Common::SeekableReadStream &st) {
+ int32 setPos = st.pos();
+
+ // xm file
+ char sigXm[18] = { 0 };
+ st.read(sigXm, 17);
+ if (!memcmp(sigXm, "Extended Module: ", 17)) {
+ return loadXm(st);
+ }
+ st.seek(setPos);
+
+ // s3m file
+ char sigS3m[4];
+ st.skip(44);
+ st.read(sigS3m, 4);
+ if (!memcmp(sigS3m, "SCRM", 4)) {
+ st.seek(setPos);
+ return loadS3m(st);
+ }
+ st.seek(setPos);
+
+ // mod file
+ return loadMod(st);
+}
+
+ModuleModXmS3m::ModuleModXmS3m() {
+ sequenceLen = 1;
+ sequence = nullptr;
+ restartPos = 0;
+
+ // patterns
+ numChannels = 4;
+ numPatterns = 1;
+ patterns = nullptr;
+
+ // instruments
+ numInstruments = 1;
+ instruments = nullptr;
+
+ // others
+ defaultGvol = 64;
+ defaultSpeed = 6;
+ defaultTempo = 125;
+ c2Rate = 8287;
+ gain = 64;
+ linearPeriods = false;
+ fastVolSlides = false;
+ defaultPanning = nullptr; //{ 51, 204, 204, 51 };
+}
+
+ModuleModXmS3m::~ModuleModXmS3m() {
+ // free song position
+ if (sequence) {
+ delete[] sequence;
+ sequence = nullptr;
+ }
+
+ // free instruments
+ if (instruments) {
+ for (int i = 0; i <= numInstruments; ++i) {
+ // free samples
+ for (int j = 0; j < instruments[i].numSamples; ++j) {
+ if (instruments[i].samples[j].data) {
+ delete[] instruments[i].samples[j].data;
+ instruments[i].samples[j].data = nullptr;
+ }
+ }
+ delete[] instruments[i].samples;
+ instruments[i].samples = nullptr;
+ }
+ delete[] instruments;
+ instruments = nullptr;
+ }
+
+ // free patterns
+ if (patterns) {
+ for (int i = 0; i < numPatterns; ++i) {
+ delete []patterns[i].notes;
+ }
+ delete[] patterns;
+ patterns = nullptr;
+ }
+
+ // free default values
+ if (defaultPanning) {
+ delete[] defaultPanning;
+ defaultPanning = nullptr;
+ }
+}
+
+bool ModuleModXmS3m::loadMod(Common::SeekableReadStream &st) {
+ // load song name
+ st.read(name, 20);
+ name[20] = '\0';
+
+ // load instruments
+ numInstruments = 31;
+ instruments = new Instrument[numInstruments + 1];
+ memset(instruments, 0, sizeof(Instrument) * (numInstruments + 1));
+ instruments[0].numSamples = 1;
+ instruments[0].samples = new Sample[1];
+ memset(&instruments[0].samples[0], 0, sizeof(Sample));
+
+ for (int i = 1; i <= numInstruments; ++i) {
+ instruments[i].numSamples = 1;
+ instruments[i].samples = new Sample[1];
+ memset(&instruments[i].samples[0], 0, sizeof(Sample));
+
+ // load sample
+ Sample &sample = instruments[i].samples[0];
+ st.read((byte *)sample.name, 22);
+ sample.name[22] = '\0';
+ sample.length = 2 * st.readUint16BE();
+
+ sample.finetune = st.readByte();
+ assert(sample.finetune < 0x10);
+
+ sample.volume = st.readByte();
+ sample.loopStart = 2 * st.readUint16BE();
+ sample.loopLength = 2 * st.readUint16BE();
+
+ if (sample.loopStart + sample.loopLength > sample.length) {
+ sample.loopLength = sample.length - sample.loopStart;
+ }
+ if (sample.loopLength < 4) {
+ sample.loopStart = sample.length;
+ sample.loopLength = 0;
+ }
+ }
+
+ sequenceLen = st.readByte();
+ if (sequenceLen > 128)
+ sequenceLen = 128;
+
+ restartPos = 0;
+ st.readByte(); // undefined byte, should be 127
+
+ sequence = new byte[128];
+ st.read(sequence, 128);
+
+ // check signature
+ byte xx[2];
+ st.read(xx, 2); // first 2 bytes of the signature
+ switch (st.readUint16BE()) {
+ case MKTAG16('K', '.'): /* M.K. */
+ // Fall Through intended
+ case MKTAG16('K', '!'): /* M!K! */
+ // Fall Through intended
+ case MKTAG16('T', '4'): /* FLT4 */
+ // Fall Through intended
+ numChannels = 4;
+ c2Rate = 8287;
+ gain = 64;
+ break;
+
+ case MKTAG16('H', 'N'): /* xCHN */
+ numChannels = xx[0] - '0';
+ c2Rate = 8363;
+ gain = 32;
+ break;
+
+ case MKTAG16('C', 'H'): /* xxCH */
+ numChannels = (xx[0] - '0') * 10 + xx[1] - '0';
+ c2Rate = 8363;
+ gain = 32;
+ break;
+
+ default:
+ warning("No known signature found in micromod module");
+ return false;
+
+ }
+
+ // default values
+ defaultGvol = 64;
+ defaultSpeed = 6;
+ defaultTempo = 125;
+ defaultPanning = new byte[numChannels];
+ for (int i = 0; i < numChannels; ++i) {
+ defaultPanning[i] = 51;
+ if ((i & 3) == 1 || (i & 3) == 2) {
+ defaultPanning[i] = 204;
+ }
+ }
+
+ // load patterns
+ numPatterns = 0;
+ for (int i = 0; i < 128; ++i)
+ if (numPatterns < sequence[i])
+ numPatterns = sequence[i];
+ ++numPatterns;
+
+ // load patterns
+ patterns = new Pattern[numPatterns];
+ for (int i = 0; i < numPatterns; ++i) {
+ patterns[i].numChannels = numChannels;
+ patterns[i].numRows = 64;
+
+ // load notes
+ /*
+ Old (amiga) noteinfo:
+
+ _____byte 1_____ byte2_ _____byte 3_____ byte4_
+ / \ / \ / \ / \
+ 0000 0000-00000000 0000 0000-00000000
+
+ Upper four 12 bits for Lower four Effect command.
+ bits of sam- note period. bits of sam-
+ ple number. ple number.
+ */
+
+ int numNotes = patterns[i].numChannels * patterns[i].numRows;
+ patterns[i].notes = new Note[numNotes];
+ memset(patterns[i].notes, 0, numNotes * sizeof(Note));
+ for (int idx = 0; idx < numNotes; ++idx) {
+ byte first = st.readByte();
+ byte second = st.readByte();
+ byte third = st.readByte();
+ byte fourth = st.readByte();
+
+ // period, key
+ uint period = (first & 0xF) << 8;
+ period = (period | second) * 4;
+ if (period >= 112 && period <= 6848) {
+ int key = -12 * moduleLog2((period << FP_SHIFT) / 29021);
+ key = (key + (key & (FP_ONE >> 1))) >> FP_SHIFT;
+ patterns[i].notes[idx].key = key;
+ }
+
+ // instrument
+ uint ins = (third & 0xF0) >> 4;
+ ins = ins | (first & 0x10);
+ patterns[i].notes[idx].instrument = ins;
+
+ // effect, param
+ byte effect = third & 0x0F;
+ byte param = fourth & 0xff;
+ if(param == 0 && (effect < 3 || effect == 0xA)) {
+ effect = 0;
+ }
+ if(param == 0 && (effect == 5 || effect == 6)) {
+ effect -= 2;
+ }
+ if(effect == 8 && numChannels == 4) {
+ effect = param = 0;
+ }
+ patterns[i].notes[idx].effect = effect;
+ patterns[i].notes[idx].param = param;
+ }
+ }
+
+ // load data for the sample of instruments
+ for (int i = 1; i <= numInstruments; ++i) {
+ Sample &sample = instruments[i].samples[0];
+ if (!sample.length) {
+ sample.data = 0;
+ } else {
+ sample.data = new int16[sample.length + 1];
+ readSampleSint8(st, sample.length, sample.data);
+ sample.data[sample.loopStart + sample.loopLength] = sample.data[sample.loopStart];
+ }
+ }
+
+ return true;
+}
+
+bool ModuleModXmS3m::loadXm(Common::SeekableReadStream &st) {
+ st.read(name, 20);
+ name[20] = '\0';
+ st.readByte(); // reserved byte
+
+ byte trackername[20];
+ st.read(trackername, 20);
+ bool deltaEnv = !memcmp(trackername, "DigiBooster Pro", 15);
+
+ uint16 version = st.readUint16LE();
+ if (version != 0x0104) {
+ warning("XM format version must be 0x0104!");
+ return false;
+ }
+
+ uint offset = st.pos() + st.readUint32LE();
+
+ sequenceLen = st.readUint16LE();
+ restartPos = st.readUint16LE();
+
+ numChannels = st.readUint16LE();
+ numPatterns = st.readUint16LE();
+ numInstruments = st.readUint16LE();
+ linearPeriods = st.readUint16LE() & 0x1;
+ defaultGvol = 64;
+ defaultSpeed = st.readUint16LE();
+ defaultTempo = st.readUint16LE();
+ c2Rate = 8363;
+ gain = 64;
+
+ defaultPanning = new byte[numChannels];
+ for (int i = 0; i < numChannels; ++i) {
+ defaultPanning[i] = 128;
+ }
+
+ sequence = new byte[sequenceLen];
+ for (int i = 0; i < sequenceLen; ++i) {
+ int entry = st.readByte();
+ sequence[i] = entry < numPatterns ? entry : 0;
+ }
+
+ // load patterns
+ patterns = new Pattern[numPatterns];
+ for (int i = 0; i < numPatterns; ++i) {
+ st.seek(offset, SEEK_SET);
+ offset += st.readUint32LE();
+ if (st.readByte()) {
+ warning("Unknown pattern packing type!");
+ return false;
+ }
+ patterns[i].numRows = st.readUint16LE();
+ if (patterns[i].numRows < 1)
+ patterns[i].numRows = 1;
+ uint16 patDataLength = st.readUint16LE();
+ offset += patDataLength;
+
+ // load notes
+ patterns[i].numChannels = numChannels;
+ int numNotes = patterns[i].numRows * numChannels;
+ patterns[i].notes = new Note[numNotes];
+ memset(patterns[i].notes, 0, numNotes * sizeof(Note));
+
+ if (patDataLength > 0) {
+ for (int j = 0; j < numNotes; ++j) {
+ Note &note = patterns[i].notes[j];
+ byte cmp = st.readByte();
+ if (cmp & 0x80) {
+ if (cmp & 1)
+ note.key = st.readByte();
+ if (cmp & 2)
+ note.instrument = st.readByte();
+ if (cmp & 4)
+ note.volume = st.readByte();
+ if (cmp & 8)
+ note.effect = st.readByte();
+ if (cmp & 16)
+ note.param = st.readByte();
+ } else {
+ note.key = cmp;
+ note.instrument = st.readByte();
+ note.volume = st.readByte();
+ note.effect = st.readByte();
+ note.param = st.readByte();
+ }
+ if( note.effect >= 0x40 ) {
+ note.effect = note.param = 0;
+ }
+ }
+ }
+ }
+
+ // load instruments
+ instruments = new Instrument[numInstruments + 1];
+ memset(instruments, 0, (numInstruments + 1) * sizeof(Instrument));
+ instruments[0].samples = new Sample[1];
+ memset(instruments[0].samples, 0, sizeof(Sample));
+ for (int i = 1; i <= numInstruments; ++i) {
+ st.seek(offset, SEEK_SET);
+ offset += st.readUint32LE();
+
+ Instrument &ins = instruments[i];
+ st.read(ins.name, 22);
+ ins.name[22] = '\0';
+
+ st.readByte(); // Instrument type (always 0)
+
+ // load sample number
+ int nSamples = st.readUint16LE();
+ ins.numSamples = nSamples > 0 ? nSamples : 1;
+ ins.samples = new Sample[ins.numSamples];
+ memset(ins.samples, 0, ins.numSamples * sizeof(Sample));
+ st.readUint32LE(); // skip 4 byte
+
+ // load instrument informations
+ if (nSamples > 0) {
+ for (int k = 0; k < 96; ++k) {
+ ins.keyToSample[k + 1] = st.readByte();
+ }
+ int pointTick = 0;
+ for (int p = 0; p < 12; ++p) {
+ pointTick = (deltaEnv ? pointTick : 0) + st.readUint16LE();
+ ins.volEnv.pointsTick[p] = pointTick;
+ ins.volEnv.pointsAmpl[p] = st.readUint16LE();
+ }
+ pointTick = 0;
+ for (int p = 0; p < 12; ++p) {
+ pointTick = (deltaEnv ? pointTick : 0) + st.readUint16LE();
+ ins.panEnv.pointsTick[p] = pointTick;
+ ins.panEnv.pointsAmpl[p] = st.readUint16LE();
+ }
+ ins.volEnv.numPoints = st.readByte();
+ if (ins.volEnv.numPoints > 12)
+ ins.volEnv.numPoints = 0;
+ ins.panEnv.numPoints = st.readByte();
+ if (ins.panEnv.numPoints > 12)
+ ins.panEnv.numPoints = 0;
+ ins.volEnv.sustainTick = ins.volEnv.pointsTick[st.readByte() & 0xF];
+ ins.volEnv.loopStartTick = ins.volEnv.pointsTick[st.readByte() & 0xF];
+ ins.volEnv.loopEndTick = ins.volEnv.pointsTick[st.readByte() & 0xF];
+ ins.panEnv.sustainTick = ins.panEnv.pointsTick[st.readByte() & 0xF];
+ ins.panEnv.loopStartTick = ins.panEnv.pointsTick[st.readByte() & 0xF];
+ ins.panEnv.loopEndTick = ins.panEnv.pointsTick[st.readByte() & 0xF];
+ byte volParam = st.readByte();
+ ins.volEnv.enabled = ins.volEnv.numPoints > 0 && (volParam & 0x1);
+ ins.volEnv.sustain = (volParam & 0x2) > 0;
+ ins.volEnv.looped = (volParam & 0x4) > 0;
+ byte panParam = st.readByte();
+ ins.panEnv.enabled = ins.panEnv.numPoints > 0 && (panParam & 0x1);
+ ins.panEnv.sustain = (panParam & 0x2) > 0;
+ ins.panEnv.looped = (panParam & 0x4) > 0;
+ ins.vibType = st.readByte();
+ ins.vibSweep = st.readByte();
+ ins.vibDepth = st.readByte();
+ ins.vibRate = st.readByte();
+ ins.volFadeout = st.readUint16LE();
+ }
+
+ // load samples
+ uint samHeadOffset = offset;
+ offset += nSamples * 40; // offset for sample data
+ for (int j = 0; j < nSamples; ++j) {
+ // load sample head
+ st.seek(samHeadOffset, SEEK_SET);
+ samHeadOffset += 40; // increment
+ Sample &sample = ins.samples[j];
+ uint samDataBytes = st.readUint32LE();
+ uint samLoopStart = st.readUint32LE();
+ uint samLoopLength = st.readUint32LE();
+ sample.volume = st.readByte();
+ sample.finetune = st.readSByte();
+ byte loopType = st.readByte();
+ bool looped = (loopType & 0x3) > 0;
+ bool pingPong = (loopType & 0x2) > 0;
+ bool sixteenBit = (loopType & 0x10) > 0;
+ sample.panning = st.readByte() + 1;
+ sample.relNote = st.readSByte();
+ st.readByte(); // reserved byte
+ st.read(sample.name, 22);
+ sample.name[22] = '\0';
+
+ uint samDataSamples = samDataBytes;
+ if (sixteenBit) {
+ samDataSamples = samDataSamples >> 1;
+ samLoopStart = samLoopStart >> 1;
+ samLoopLength = samLoopLength >> 1;
+ }
+ if (!looped || (samLoopStart + samLoopLength) > samDataSamples) {
+ samLoopStart = samDataSamples;
+ samLoopLength = 0;
+ }
+ sample.loopStart = samLoopStart;
+ sample.loopLength = samLoopLength;
+
+ // load sample data
+ st.seek(offset, SEEK_SET);
+ offset += samDataBytes; // increment
+ sample.data = new int16[samDataSamples + 1];
+ if (sixteenBit) {
+ readSampleSint16LE(st, samDataSamples, sample.data);
+ } else {
+ readSampleSint8(st, samDataSamples, sample.data);
+ }
+ int amp = 0;
+ for (uint idx = 0; idx < samDataSamples; idx++) {
+ amp = amp + sample.data[idx];
+ amp = (amp & 0x7FFF) - (amp & 0x8000);
+ sample.data[idx] = amp;
+ }
+ sample.data[samLoopStart + samLoopLength] = sample.data[samLoopStart];
+ if (pingPong) {
+ SamplePingPong(sample);
+ }
+ }
+ }
+ return true;
+}
+
+bool ModuleModXmS3m::loadS3m(Common::SeekableReadStream &st) {
+ st.read(name, 28);
+ name[28] = '\0';
+ st.skip(4); // skip 4 bytes
+
+ sequenceLen = st.readUint16LE();
+ numInstruments = st.readUint16LE();
+ numPatterns = st.readUint16LE();
+ uint16 flags = st.readUint16LE();
+ uint16 version = st.readUint16LE();
+ fastVolSlides = ((flags & 0x40) == 0x40) || version == 0x1300;
+ bool signedSamples = st.readUint16LE() == 1;
+
+ // check signature
+ if (st.readUint32BE() != MKTAG('S', 'C', 'R', 'M')) {
+ warning("Not an S3M file!");
+ return false;
+ }
+
+ defaultGvol = st.readByte();
+ defaultSpeed = st.readByte();
+ defaultTempo = st.readByte();
+ c2Rate = 8363;
+ byte mastermult = st.readByte();
+ gain = mastermult & 0x7F;
+ bool stereoMode = (mastermult & 0x80) == 0x80;
+ st.readByte(); // skip ultra-click
+ bool defaultPan = st.readByte() == 0xFC;
+ st.skip(10); // skip 10 bytes
+
+ // load channel map
+ numChannels = 0;
+ int channelMap[32];
+ for (int i = 0; i < 32; ++i) {
+ channelMap[i] = -1;
+ if (st.readByte() < 16) {
+ channelMap[i] = numChannels++;
+ }
+ }
+
+ // load sequence
+ sequence = new byte[sequenceLen];
+ st.read(sequence, sequenceLen);
+
+ int moduleDataIndex = st.pos();
+
+ // load instruments
+ instruments = new Instrument[numInstruments + 1];
+ memset(instruments, 0, sizeof(Instrument) * (numInstruments + 1));
+ instruments[0].numSamples = 1;
+ instruments[0].samples = new Sample[1];
+ memset(instruments[0].samples, 0, sizeof(Sample));
+ for (int i = 1; i <= numInstruments; ++i) {
+ Instrument &instrum = instruments[i];
+ instrum.numSamples = 1;
+ instrum.samples = new Sample[1];
+ memset(instrum.samples, 0, sizeof(Sample));
+ Sample &sample = instrum.samples[0];
+
+ // get instrument offset
+ st.seek(moduleDataIndex, SEEK_SET);
+ int instOffset = st.readUint16LE() << 4;
+ moduleDataIndex += 2;
+ st.seek(instOffset, SEEK_SET);
+
+ // load instrument, sample
+ if (st.readByte() == 1) { // type
+ st.skip(12); // skip file name
+ int sampleOffset = (st.readByte() << 20) + (st.readUint16LE() << 4);
+ uint sampleLength = st.readUint32LE();
+ uint loopStart = st.readUint32LE();
+ uint loopLength = st.readUint32LE() - loopStart;
+ sample.volume = st.readByte();
+ st.skip(1); // skip dsk
+ if (st.readByte() != 0) {
+ warning("Packed samples not supported for S3M files");
+ return false;
+ }
+ byte samParam = st.readByte();
+
+ if (loopStart + loopLength > sampleLength) {
+ loopLength = sampleLength - loopStart;
+ }
+ if (loopLength < 1 || !(samParam & 0x1)) {
+ loopStart = sampleLength;
+ loopLength = 0;
+ }
+
+ sample.loopStart = loopStart;
+ sample.loopLength = loopLength;
+
+ bool sixteenBit = samParam & 0x4;
+ int tune = (moduleLog2(st.readUint32LE()) - moduleLog2(c2Rate)) * 12;
+ sample.relNote = tune >> FP_SHIFT;
+ sample.finetune = (tune & FP_MASK) >> (FP_SHIFT - 7);
+ st.skip(12); // skip unused bytes
+ st.read(instrum.name, 28);
+
+ // load sample data
+ sample.data = new int16[sampleLength + 1];
+ st.seek(sampleOffset, SEEK_SET);
+ if (sixteenBit) {
+ readSampleSint16LE(st, sampleLength, sample.data);
+ } else {
+ readSampleSint8(st, sampleLength, sample.data);
+ }
+ if (!signedSamples) {
+ for (uint idx = 0; idx < sampleLength; ++idx) {
+ sample.data[idx] = (sample.data[idx] & 0xFFFF) - 32768;
+ }
+ }
+ sample.data[loopStart + loopLength] = sample.data[loopStart];
+ }
+ }
+
+ // load patterns
+ patterns = new Pattern[numPatterns];
+ memset(patterns, 0, numPatterns * sizeof(Pattern));
+ for (int i = 0; i < numPatterns; ++i) {
+ patterns[i].numChannels = numChannels;
+ patterns[i].numRows = 64;
+
+ // get pattern data offset
+ st.seek(moduleDataIndex, SEEK_SET);
+ int patOffset = (st.readUint16LE() << 4) + 2;
+ st.seek(patOffset, SEEK_SET);
+
+ // load notes
+ patterns[i].notes = new Note[numChannels * 64];
+ memset(patterns[i].notes, 0, numChannels * 64 * sizeof(Note));
+ int row = 0;
+ while (row < 64) {
+ byte token = st.readByte();
+ if (token) {
+ byte key = 0;
+ byte ins = 0;
+ if ((token & 0x20) == 0x20) {
+ /* Key + Instrument.*/
+ key = st.readByte();
+ ins = st.readByte();
+ if (key < 0xFE) {
+ key = (key >> 4) * 12 + (key & 0xF) + 1;
+ } else if (key == 0xFF) {
+ key = 0;
+ }
+ }
+ byte volume = 0;
+ if ((token & 0x40) == 0x40) {
+ /* Volume Column.*/
+ volume = (st.readByte() & 0x7F) + 0x10;
+ if (volume > 0x50) {
+ volume = 0;
+ }
+ }
+ byte effect = 0;
+ byte param = 0;
+ if ((token & 0x80) == 0x80) {
+ /* Effect + Param.*/
+ effect = st.readByte();
+ param = st.readByte();
+ if (effect < 1 || effect >= 0x40) {
+ effect = param = 0;
+ } else if (effect > 0) {
+ effect += 0x80;
+ }
+ }
+ int chan = channelMap[token & 0x1F];
+ if (chan >= 0) {
+ int noteIndex = row * numChannels + chan;
+ patterns[i].notes[noteIndex].key = key;
+ patterns[i].notes[noteIndex].instrument = ins;
+ patterns[i].notes[noteIndex].volume = volume;
+ patterns[i].notes[noteIndex].effect = effect;
+ patterns[i].notes[noteIndex].param = param;
+ }
+ } else {
+ row++;
+ }
+ }
+
+ // increment index
+ moduleDataIndex += 2;
+ }
+
+ // load default panning
+ defaultPanning = new byte[numChannels];
+ memset(defaultPanning, 0, numChannels);
+ for (int chan = 0; chan < 32; ++chan) {
+ if (channelMap[chan] >= 0) {
+ byte panning = 7;
+ if (stereoMode) {
+ panning = 12;
+ st.seek(64 + chan, SEEK_SET);
+ if (st.readByte() < 8) {
+ panning = 3;
+ }
+ }
+ if (defaultPan) {
+ st.seek(moduleDataIndex + chan, SEEK_SET);
+ flags = st.readByte();
+ if ((flags & 0x20) == 0x20) {
+ panning = flags & 0xF;
+ }
+ }
+ defaultPanning[channelMap[chan]] = panning * 17;
+ }
+ }
+ return true;
+}
+
+void ModuleModXmS3m::readSampleSint8(Common::SeekableReadStream &stream, int length, int16 *dest) {
+ for (int i = 0; i < length; ++i) {
+ dest[i] = (stream.readSByte() << 8);
+ dest[i] = (dest[i] & 0x7FFF) - (dest[i] & 0x8000);
+ }
+}
+
+void ModuleModXmS3m::readSampleSint16LE(Common::SeekableReadStream &stream, int length, int16 *dest) {
+ for (int i = 0; i < length; ++i) {
+ dest[i] = stream.readSint16LE();
+ dest[i] = (dest[i] & 0x7FFF) - (dest[i] & 0x8000);
+ }
+}
+
+void ModuleModXmS3m::SamplePingPong(Sample &sample) {
+ int loopStart = sample.loopStart;
+ int loopLength = sample.loopLength;
+ int loopEnd = loopStart + loopLength;
+ int16 *sampleData = sample.data;
+ int16 *newData = new int16[loopEnd + loopLength + 1];
+ if (newData) {
+ memcpy(newData, sampleData, loopEnd * sizeof(int16));
+ for (int idx = 0; idx < loopLength; idx++) {
+ newData[loopEnd + idx] = sampleData[loopEnd - idx - 1];
+ }
+ delete []sample.data;
+ sample.data = newData;
+ sample.loopLength *= 2;
+ sample.data[loopStart + sample.loopLength] = sample.data[loopStart];
+ }
+}
+
+} // End of namespace Modules
diff --git a/audio/mods/module_mod_xm_s3m.h b/audio/mods/module_mod_xm_s3m.h
new file mode 100644
index 0000000000..b4c984ad05
--- /dev/null
+++ b/audio/mods/module_mod_xm_s3m.h
@@ -0,0 +1,174 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * 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 source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+/*
+ * This code is based on IBXM mod player
+ *
+ * Copyright (c) 2015, Martin Cameron
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the
+ * following conditions are met:
+ *
+ * * Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the
+ * above copyright notice, this list of conditions and the
+ * following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * * Neither the name of the organization nor the names of
+ * its contributors may be used to endorse or promote
+ * products derived from this software without specific
+ * prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef AUDIO_MODS_MODULE_MOD_XM_S3M_H
+#define AUDIO_MODS_MODULE_MOD_XM_S3M_H
+
+#include "common/scummsys.h"
+
+namespace Common {
+class SeekableReadStream;
+}
+
+namespace Modules {
+
+struct Note {
+ byte key;
+ byte instrument;
+ byte volume;
+ byte effect; // effect type
+ byte param; // parameter of effect
+};
+
+struct Pattern {
+ int numChannels, numRows;
+ Note *notes;
+
+ Note getNote(int row, int chan) {
+ Note res;
+ if (row >= 0 && chan >= 0 && row < numRows && chan < numChannels)
+ res = notes[row * numChannels + chan];
+ else
+ memset(&res, 0, sizeof(struct Note));
+ return res;
+ }
+};
+
+struct Sample {
+ char name[32]; // sample name
+ int16 finetune; // fine tune
+ int16 volume; // volume
+ int length; // loop start
+ int loopStart; // loop start
+ int loopLength; // loop length
+ int16 panning;
+ int16 relNote;
+ int16 *data;
+};
+
+struct Envelope {
+ byte enabled, sustain, looped, numPoints;
+ uint16 sustainTick, loopStartTick, loopEndTick;
+ uint16 pointsTick[16], pointsAmpl[16];
+};
+
+struct Instrument {
+ int numSamples, volFadeout;
+ char name[32], keyToSample[97];
+ int8 vibType, vibSweep, vibDepth, vibRate;
+ Envelope volEnv, panEnv;
+ Sample *samples;
+};
+
+struct ModuleModXmS3m {
+
+private:
+ static const int FP_SHIFT;
+ static const int FP_ONE;
+ static const int FP_MASK;
+ static const int exp2table[];
+
+public:
+ // sound properties
+ byte name[32];
+ int sequenceLen;
+ int restartPos;
+ byte *sequence;
+
+ // patterns
+ int numChannels;
+ int numPatterns;
+ Pattern *patterns;
+
+ // instruments
+ int numInstruments;
+ Instrument *instruments;
+
+ // others
+ int defaultGvol, defaultSpeed, defaultTempo, c2Rate, gain;
+ bool linearPeriods, fastVolSlides;
+ byte *defaultPanning;
+
+ ModuleModXmS3m();
+ ~ModuleModXmS3m();
+
+ bool load(Common::SeekableReadStream &stream);
+
+ // math functions
+ static int moduleLog2(int x);
+ static int moduleExp2(int x);
+
+private:
+ bool loadMod(Common::SeekableReadStream &stream);
+ bool loadXm(Common::SeekableReadStream &stream);
+ bool loadS3m(Common::SeekableReadStream &stream);
+
+ void readSampleSint8(Common::SeekableReadStream &stream, int length, int16 *dest);
+ void readSampleSint16LE(Common::SeekableReadStream &stream, int length, int16 *dest);
+
+ void SamplePingPong(Sample &sample);
+};
+
+} // End of namespace Modules
+
+#endif
diff --git a/audio/module.mk b/audio/module.mk
index 9e002d57ba..0d95ecc6f1 100644
--- a/audio/module.mk
+++ b/audio/module.mk
@@ -34,7 +34,9 @@ MODULE_OBJS := \
decoders/xa.o \
mods/infogrames.o \
mods/maxtrax.o \
+ mods/mod_xm_s3m.o \
mods/module.o \
+ mods/module_mod_xm_s3m.o \
mods/protracker.o \
mods/paula.o \
mods/rjp1.o \
diff --git a/backends/graphics/surfacesdl/surfacesdl-graphics.cpp b/backends/graphics/surfacesdl/surfacesdl-graphics.cpp
index f84c09f535..983b71ab28 100644
--- a/backends/graphics/surfacesdl/surfacesdl-graphics.cpp
+++ b/backends/graphics/surfacesdl/surfacesdl-graphics.cpp
@@ -464,11 +464,64 @@ Common::List<Graphics::PixelFormat> SurfaceSdlGraphicsManager::getSupportedForma
return _supportedFormats;
}
-void SurfaceSdlGraphicsManager::detectSupportedFormats() {
+#if SDL_VERSION_ATLEAST(2, 0, 0)
+static void maskToBitCount(Uint32 mask, uint8 &numBits, uint8 &shift) {
+ numBits = 0;
+ shift = 32;
+ for (int i = 0; i < 32; ++i) {
+ if (mask & 1) {
+ if (i < shift) {
+ shift = i;
+ }
+ ++numBits;
+ }
- // Clear old list
+ mask >>= 1;
+ }
+}
+#endif
+
+void SurfaceSdlGraphicsManager::detectSupportedFormats() {
_supportedFormats.clear();
+ Graphics::PixelFormat format = Graphics::PixelFormat::createFormatCLUT8();
+
+#if SDL_VERSION_ATLEAST(2, 0, 0)
+ {
+ SDL_Window *window = _window->getSDLWindow();
+ if (window == nullptr) {
+ error("Could not find ScummVM window for retrieving default display mode");
+ }
+
+ const int displayIndex = SDL_GetWindowDisplayIndex(window);
+ if (displayIndex < 0) {
+ error("Could not find ScummVM window display index");
+ }
+
+ SDL_DisplayMode defaultMode;
+ if (SDL_GetDesktopDisplayMode(displayIndex, &defaultMode) != 0) {
+ error("Could not get default system display mode");
+ }
+
+ int bpp;
+ Uint32 rMask, gMask, bMask, aMask;
+ if (SDL_PixelFormatEnumToMasks(defaultMode.format, &bpp, &rMask, &gMask, &bMask, &aMask) != SDL_TRUE) {
+ error("Could not convert system pixel format %s to masks", SDL_GetPixelFormatName(defaultMode.format));
+ }
+
+ const uint8 bytesPerPixel = SDL_BYTESPERPIXEL(defaultMode.format);
+ uint8 rBits, rShift, gBits, gShift, bBits, bShift, aBits, aShift;
+ maskToBitCount(rMask, rBits, rShift);
+ maskToBitCount(gMask, gBits, gShift);
+ maskToBitCount(bMask, bBits, bShift);
+ maskToBitCount(aMask, aBits, aShift);
+
+ format = Graphics::PixelFormat(bytesPerPixel, rBits, gBits, bBits, aBits, rShift, gShift, bShift, aShift);
+
+ _supportedFormats.push_back(format);
+ }
+#endif
+
// Some tables with standard formats that we always list
// as "supported". If frontend code tries to use one of
// these, we will perform the necessary format
@@ -479,12 +532,10 @@ void SurfaceSdlGraphicsManager::detectSupportedFormats() {
// available format, it will get one that is "cheap" to
// use.
const Graphics::PixelFormat RGBList[] = {
-#ifdef USE_RGB_COLOR
// RGBA8888, ARGB8888, RGB888
Graphics::PixelFormat(4, 8, 8, 8, 8, 24, 16, 8, 0),
Graphics::PixelFormat(4, 8, 8, 8, 8, 16, 8, 0, 24),
Graphics::PixelFormat(3, 8, 8, 8, 0, 16, 8, 0, 0),
-#endif
// RGB565, XRGB1555, RGB555, RGBA4444, ARGB4444
Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0),
Graphics::PixelFormat(2, 5, 5, 5, 1, 10, 5, 0, 15),
@@ -493,12 +544,10 @@ void SurfaceSdlGraphicsManager::detectSupportedFormats() {
Graphics::PixelFormat(2, 4, 4, 4, 4, 8, 4, 0, 12)
};
const Graphics::PixelFormat BGRList[] = {
-#ifdef USE_RGB_COLOR
// ABGR8888, BGRA8888, BGR888
Graphics::PixelFormat(4, 8, 8, 8, 8, 0, 8, 16, 24),
Graphics::PixelFormat(4, 8, 8, 8, 8, 8, 16, 24, 0),
Graphics::PixelFormat(3, 8, 8, 8, 0, 0, 8, 16, 0),
-#endif
// BGR565, XBGR1555, BGR555, ABGR4444, BGRA4444
Graphics::PixelFormat(2, 5, 6, 5, 0, 0, 5, 11, 0),
Graphics::PixelFormat(2, 5, 5, 5, 1, 0, 5, 10, 15),
@@ -507,10 +556,9 @@ void SurfaceSdlGraphicsManager::detectSupportedFormats() {
Graphics::PixelFormat(2, 4, 4, 4, 4, 4, 8, 12, 0)
};
- Graphics::PixelFormat format = Graphics::PixelFormat::createFormatCLUT8();
if (_hwscreen) {
// Get our currently set hardware format
- format = Graphics::PixelFormat(_hwscreen->format->BytesPerPixel,
+ Graphics::PixelFormat hwFormat(_hwscreen->format->BytesPerPixel,
8 - _hwscreen->format->Rloss, 8 - _hwscreen->format->Gloss,
8 - _hwscreen->format->Bloss, 8 - _hwscreen->format->Aloss,
_hwscreen->format->Rshift, _hwscreen->format->Gshift,
@@ -518,10 +566,13 @@ void SurfaceSdlGraphicsManager::detectSupportedFormats() {
// Workaround to SDL not providing an accurate Aloss value on Mac OS X.
if (_hwscreen->format->Amask == 0)
- format.aLoss = 8;
+ hwFormat.aLoss = 8;
- // Push it first, as the prefered format.
- _supportedFormats.push_back(format);
+ _supportedFormats.push_back(hwFormat);
+
+#if !SDL_VERSION_ATLEAST(2, 0, 0)
+ format = hwFormat;
+#endif
}
// TODO: prioritize matching alpha masks
diff --git a/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.cpp b/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.cpp
deleted file mode 100644
index e5f63dc908..0000000000
--- a/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * 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 source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#if defined(MACOSX) || defined(GP2X) || defined(CAANOO) || defined(GP2XWIZ)
-
-#include "backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h"
-
-DoubleBufferSDLMixerManager::DoubleBufferSDLMixerManager()
- :
- _soundMutex(0), _soundCond(0), _soundThread(0),
- _soundThreadIsRunning(false), _soundThreadShouldQuit(false) {
-
-}
-
-DoubleBufferSDLMixerManager::~DoubleBufferSDLMixerManager() {
- deinitThreadedMixer();
-}
-
-void DoubleBufferSDLMixerManager::startAudio() {
- _soundThreadIsRunning = false;
- _soundThreadShouldQuit = false;
-
- // Create mutex and condition variable
- _soundMutex = SDL_CreateMutex();
- _soundCond = SDL_CreateCond();
-
- // Create two sound buffers
- _activeSoundBuf = 0;
- uint bufSize = _obtained.samples * 4;
- _soundBufSize = bufSize;
- _soundBuffers[0] = (byte *)calloc(1, bufSize);
- _soundBuffers[1] = (byte *)calloc(1, bufSize);
-
- _soundThreadIsRunning = true;
-
- // Finally start the thread
-#if SDL_VERSION_ATLEAST(2, 0, 0)
- _soundThread = SDL_CreateThread(mixerProducerThreadEntry, "ScummVM Double Buffer Mixer", this);
-#else
- _soundThread = SDL_CreateThread(mixerProducerThreadEntry, this);
-#endif
-
- SdlMixerManager::startAudio();
-}
-
-void DoubleBufferSDLMixerManager::mixerProducerThread() {
- byte nextSoundBuffer;
-
- SDL_LockMutex(_soundMutex);
- while (true) {
- // Wait till we are allowed to produce data
- SDL_CondWait(_soundCond, _soundMutex);
-
- if (_soundThreadShouldQuit)
- break;
-
- // Generate samples and put them into the next buffer
- nextSoundBuffer = _activeSoundBuf ^ 1;
- _mixer->mixCallback(_soundBuffers[nextSoundBuffer], _soundBufSize);
-
- // Swap buffers
- _activeSoundBuf = nextSoundBuffer;
- }
- SDL_UnlockMutex(_soundMutex);
-}
-
-int SDLCALL DoubleBufferSDLMixerManager::mixerProducerThreadEntry(void *arg) {
- DoubleBufferSDLMixerManager *mixer = (DoubleBufferSDLMixerManager *)arg;
- assert(mixer);
- mixer->mixerProducerThread();
- return 0;
-}
-
-void DoubleBufferSDLMixerManager::deinitThreadedMixer() {
- // Kill thread?? _soundThread
-
- if (_soundThreadIsRunning) {
- // Signal the producer thread to end, and wait for it to actually finish.
- _soundThreadShouldQuit = true;
- SDL_CondBroadcast(_soundCond);
- SDL_WaitThread(_soundThread, NULL);
-
- // Kill the mutex & cond variables.
- // Attention: AT this point, the mixer callback must not be running
- // anymore, else we will crash!
- SDL_DestroyMutex(_soundMutex);
- SDL_DestroyCond(_soundCond);
-
- _soundThreadIsRunning = false;
-
- free(_soundBuffers[0]);
- free(_soundBuffers[1]);
- }
-}
-
-void DoubleBufferSDLMixerManager::callbackHandler(byte *samples, int len) {
- assert(_mixer);
- assert((int)_soundBufSize == len);
-
- // Lock mutex, to ensure our data is not overwritten by the producer thread
- SDL_LockMutex(_soundMutex);
-
- // Copy data from the current sound buffer
- memcpy(samples, _soundBuffers[_activeSoundBuf], len);
-
- // Unlock mutex and wake up the produced thread
- SDL_UnlockMutex(_soundMutex);
- SDL_CondSignal(_soundCond);
-}
-
-#endif
diff --git a/backends/mixer/sdl/sdl-mixer.cpp b/backends/mixer/sdl/sdl-mixer.cpp
index 3e65fbae97..11a45ebcb2 100644
--- a/backends/mixer/sdl/sdl-mixer.cpp
+++ b/backends/mixer/sdl/sdl-mixer.cpp
@@ -125,29 +125,63 @@ void SdlMixerManager::init() {
startAudio();
}
+static uint32 roundDownPowerOfTwo(uint32 samples) {
+ // Public domain code from Sean Eron Anderson
+ // http://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2
+ uint32 rounded = samples;
+ --rounded;
+ rounded |= rounded >> 1;
+ rounded |= rounded >> 2;
+ rounded |= rounded >> 4;
+ rounded |= rounded >> 8;
+ rounded |= rounded >> 16;
+ ++rounded;
+
+ if (rounded != samples)
+ rounded >>= 1;
+
+ return rounded;
+}
+
SDL_AudioSpec SdlMixerManager::getAudioSpec(uint32 outputRate) {
SDL_AudioSpec desired;
- // Determine the desired output sampling frequency.
- uint32 samplesPerSec = 0;
- if (ConfMan.hasKey("output_rate"))
- samplesPerSec = ConfMan.getInt("output_rate");
- if (samplesPerSec <= 0)
- samplesPerSec = outputRate;
-
- // Determine the sample buffer size. We want it to store enough data for
- // at least 1/16th of a second (though at most 8192 samples). Note
- // that it must be a power of two. So e.g. at 22050 Hz, we request a
- // sample buffer size of 2048.
- uint32 samples = 8192;
- while (samples * 16 > samplesPerSec * 2)
- samples >>= 1;
+ const char *const appDomain = Common::ConfigManager::kApplicationDomain;
+
+ // There was once a GUI option for this, but it was never used;
+ // configurability is retained for advanced users only who wish to modify
+ // their ScummVM config file directly
+ uint32 freq = 0;
+ if (ConfMan.hasKey("output_rate", appDomain))
+ freq = ConfMan.getInt("output_rate", appDomain);
+ if (freq <= 0)
+ freq = outputRate;
+
+ // One SDL "sample" is a complete audio frame (i.e. all channels = 1 sample)
+ uint32 samples = 0;
+
+ // Different games and host systems have different performance
+ // characteristics which are not easily measured, so allow advanced users to
+ // tweak their audio buffer size if they are experience excess latency or
+ // drop-outs by setting this value in their ScummVM config file directly
+ if (ConfMan.hasKey("audio_buffer_size", appDomain))
+ samples = ConfMan.getInt("audio_buffer_size", appDomain);
+
+ // 256 is an arbitrary minimum; 32768 is the largest power-of-two value
+ // representable with uint16
+ if (samples < 256 || samples > 32768)
+ // By default, hold no more than 45ms worth of samples to avoid
+ // perceptable audio lag (ATSC IS-191). For reference, DOSBox (as of Sep
+ // 2017) uses a buffer size of 1024 samples by default for a 16-bit
+ // stereo 44kHz mixer, which happens to be the next lowest power of two
+ // below 45ms.
+ samples = freq / (1000.0 / 45);
memset(&desired, 0, sizeof(desired));
- desired.freq = samplesPerSec;
+ desired.freq = freq;
desired.format = AUDIO_S16SYS;
desired.channels = 2;
- desired.samples = (uint16)samples;
+ desired.samples = roundDownPowerOfTwo(samples);
desired.callback = sdlCallback;
desired.userdata = this;
diff --git a/backends/module.mk b/backends/module.mk
index d8b518b59a..5d8c91253f 100644
--- a/backends/module.mk
+++ b/backends/module.mk
@@ -139,7 +139,6 @@ MODULE_OBJS += \
events/sdl/sdl-events.o \
graphics/sdl/sdl-graphics.o \
graphics/surfacesdl/surfacesdl-graphics.o \
- mixer/doublebuffersdl/doublebuffersdl-mixer.o \
mixer/sdl/sdl-mixer.o \
mutex/sdl/sdl-mutex.o \
plugins/sdl/sdl-provider.o \
diff --git a/backends/networking/curl/networkreadstream.cpp b/backends/networking/curl/networkreadstream.cpp
index e4fc5492b5..20488401dd 100644
--- a/backends/networking/curl/networkreadstream.cpp
+++ b/backends/networking/curl/networkreadstream.cpp
@@ -29,21 +29,21 @@
namespace Networking {
-static size_t curlDataCallback(char *d, size_t n, size_t l, void *p) {
+size_t NetworkReadStream::curlDataCallback(char *d, size_t n, size_t l, void *p) {
NetworkReadStream *stream = (NetworkReadStream *)p;
if (stream)
- return stream->write(d, n * l);
+ return stream->_backingStream.write(d, n * l);
return 0;
}
-static size_t curlReadDataCallback(char *d, size_t n, size_t l, void *p) {
+size_t NetworkReadStream::curlReadDataCallback(char *d, size_t n, size_t l, void *p) {
NetworkReadStream *stream = (NetworkReadStream *)p;
if (stream)
return stream->fillWithSendingContents(d, n * l);
return 0;
}
-static size_t curlHeadersCallback(char *d, size_t n, size_t l, void *p) {
+size_t NetworkReadStream::curlHeadersCallback(char *d, size_t n, size_t l, void *p) {
NetworkReadStream *stream = (NetworkReadStream *)p;
if (stream)
return stream->addResponseHeaders(d, n * l);
@@ -57,7 +57,7 @@ static int curlProgressCallback(void *p, curl_off_t dltotal, curl_off_t dlnow, c
return 0;
}
-static int curlProgressCallbackOlder(void *p, double dltotal, double dlnow, double ultotal, double ulnow) {
+int NetworkReadStream::curlProgressCallbackOlder(void *p, double dltotal, double dlnow, double ultotal, double ulnow) {
// for libcurl older than 7.32.0 (CURLOPT_PROGRESSFUNCTION)
return curlProgressCallback(p, (curl_off_t)dltotal, (curl_off_t)dlnow, (curl_off_t)ultotal, (curl_off_t)ulnow);
}
@@ -178,15 +178,18 @@ void NetworkReadStream::init(const char *url, curl_slist *headersList, Common::H
ConnMan.registerEasyHandle(_easy);
}
-NetworkReadStream::NetworkReadStream(const char *url, curl_slist *headersList, Common::String postFields, bool uploading, bool usingPatch) {
+NetworkReadStream::NetworkReadStream(const char *url, curl_slist *headersList, Common::String postFields, bool uploading, bool usingPatch) :
+ _backingStream(DisposeAfterUse::YES) {
init(url, headersList, (const byte *)postFields.c_str(), postFields.size(), uploading, usingPatch, false);
}
-NetworkReadStream::NetworkReadStream(const char *url, curl_slist *headersList, Common::HashMap<Common::String, Common::String> formFields, Common::HashMap<Common::String, Common::String> formFiles) {
+NetworkReadStream::NetworkReadStream(const char *url, curl_slist *headersList, Common::HashMap<Common::String, Common::String> formFields, Common::HashMap<Common::String, Common::String> formFiles) :
+ _backingStream(DisposeAfterUse::YES) {
init(url, headersList, formFields, formFiles);
}
-NetworkReadStream::NetworkReadStream(const char *url, curl_slist *headersList, const byte *buffer, uint32 bufferSize, bool uploading, bool usingPatch, bool post) {
+NetworkReadStream::NetworkReadStream(const char *url, curl_slist *headersList, const byte *buffer, uint32 bufferSize, bool uploading, bool usingPatch, bool post) :
+ _backingStream(DisposeAfterUse::YES) {
init(url, headersList, buffer, bufferSize, uploading, usingPatch, post);
}
@@ -201,7 +204,7 @@ bool NetworkReadStream::eos() const {
}
uint32 NetworkReadStream::read(void *dataPtr, uint32 dataSize) {
- uint32 actuallyRead = MemoryReadWriteStream::read(dataPtr, dataSize);
+ uint32 actuallyRead = _backingStream.read(dataPtr, dataSize);
if (actuallyRead == 0) {
if (_requestComplete)
diff --git a/backends/networking/curl/networkreadstream.h b/backends/networking/curl/networkreadstream.h
index 8e59429a0a..b83ab27400 100644
--- a/backends/networking/curl/networkreadstream.h
+++ b/backends/networking/curl/networkreadstream.h
@@ -34,8 +34,9 @@ struct curl_slist;
namespace Networking {
-class NetworkReadStream: public Common::MemoryReadWriteStream {
+class NetworkReadStream: public Common::ReadStream {
CURL *_easy;
+ Common::MemoryReadWriteStream _backingStream;
bool _eos, _requestComplete;
const byte *_sendingContentsBuffer;
uint32 _sendingContentsSize;
@@ -46,6 +47,26 @@ class NetworkReadStream: public Common::MemoryReadWriteStream {
void init(const char *url, curl_slist *headersList, const byte *buffer, uint32 bufferSize, bool uploading, bool usingPatch, bool post);
void init(const char *url, curl_slist *headersList, Common::HashMap<Common::String, Common::String> formFields, Common::HashMap<Common::String, Common::String> formFiles);
+ /**
+ * Fills the passed buffer with _sendingContentsBuffer contents.
+ * It works similarly to read(), expect it's not for reading
+ * Stream's contents, but for sending our own data to the server.
+ *
+ * @returns how many bytes were actually read (filled in)
+ */
+ uint32 fillWithSendingContents(char *bufferToFill, uint32 maxSize);
+
+ /**
+ * Remembers headers returned to CURL in server's response.
+ *
+ * @returns how many bytes were actually read
+ */
+ uint32 addResponseHeaders(char *buffer, uint32 bufferSize);
+
+ static size_t curlDataCallback(char *d, size_t n, size_t l, void *p);
+ static size_t curlReadDataCallback(char *d, size_t n, size_t l, void *p);
+ static size_t curlHeadersCallback(char *d, size_t n, size_t l, void *p);
+ static int curlProgressCallbackOlder(void *p, double dltotal, double dlnow, double ultotal, double ulnow);
public:
/** Send <postFields>, using POST by default. */
NetworkReadStream(const char *url, curl_slist *headersList, Common::String postFields, bool uploading = false, bool usingPatch = false);
@@ -115,22 +136,6 @@ public:
*/
Common::String responseHeaders() const;
- /**
- * Fills the passed buffer with _sendingContentsBuffer contents.
- * It works similarly to read(), expect it's not for reading
- * Stream's contents, but for sending our own data to the server.
- *
- * @returns how many bytes were actually read (filled in)
- */
- uint32 fillWithSendingContents(char *bufferToFill, uint32 maxSize);
-
- /**
- * Remembers headers returned to CURL in server's response.
- *
- * @returns how many bytes were actually read
- */
- uint32 addResponseHeaders(char *buffer, uint32 bufferSize);
-
/** Returns a number in range [0, 1], where 1 is "complete". */
double getProgress() const;
diff --git a/backends/platform/gph/gph-backend.cpp b/backends/platform/gph/gph-backend.cpp
index fb1cbe030c..96f42627b5 100644
--- a/backends/platform/gph/gph-backend.cpp
+++ b/backends/platform/gph/gph-backend.cpp
@@ -27,7 +27,6 @@
#include "backends/platform/sdl/sdl-sys.h"
-#include "backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h"
#include "backends/platform/gph/gph-hw.h"
#include "backends/platform/gph/gph.h"
#include "backends/plugins/posix/posix-provider.h"
diff --git a/backends/platform/openpandora/op-backend.cpp b/backends/platform/openpandora/op-backend.cpp
index e7975a6aa0..0d81ef8755 100644
--- a/backends/platform/openpandora/op-backend.cpp
+++ b/backends/platform/openpandora/op-backend.cpp
@@ -27,7 +27,6 @@
#include "backends/platform/sdl/sdl-sys.h"
-#include "backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h"
#include "backends/platform/openpandora/op-sdl.h"
#include "backends/plugins/posix/posix-provider.h"
#include "backends/saves/default/default-saves.h"
diff --git a/backends/platform/sdl/macosx/appmenu_osx.mm b/backends/platform/sdl/macosx/appmenu_osx.mm
index feea40bc06..64b8e2b6d7 100644
--- a/backends/platform/sdl/macosx/appmenu_osx.mm
+++ b/backends/platform/sdl/macosx/appmenu_osx.mm
@@ -26,8 +26,14 @@
#include "backends/platform/sdl/macosx/appmenu_osx.h"
#include "common/translation.h"
+#include "backends/platform/sdl/macosx/macosx-compat.h"
#include <Cocoa/Cocoa.h>
+#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_12
+#define NSEventModifierFlagCommand NSCommandKeyMask
+#define NSEventModifierFlagOption NSAlternateKeyMask
+#endif
+
// Apple added setAppleMenu in 10.5 and removed it in 10.6.
// But as the method still exists we declare it ourselves here.
// Yes, this works :)
@@ -92,7 +98,7 @@ void replaceApplicationMenuItems() {
// Add "Hide Others" menu item
nsString = constructNSStringFromCString(_("Hide Others"), stringEncoding);
menuItem = (NSMenuItem *)[appleMenu addItemWithTitle:nsString action:@selector(hideOtherApplications:) keyEquivalent:@"h"];
- [menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask|NSCommandKeyMask)];
+ [menuItem setKeyEquivalentModifierMask:(NSEventModifierFlagOption|NSEventModifierFlagCommand)];
// Add "Show All" menu item
nsString = constructNSStringFromCString(_("Show All"), stringEncoding);
diff --git a/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h b/backends/platform/sdl/macosx/macosx-compat.h
index e3019fe11b..9bf1600688 100644
--- a/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h
+++ b/backends/platform/sdl/macosx/macosx-compat.h
@@ -20,47 +20,17 @@
*
*/
-#ifndef BACKENDS_MIXER_DOUBLEBUFFERSDL_H
-#define BACKENDS_MIXER_DOUBLEBUFFERSDL_H
+#ifndef PLATFORM_SDL_MACOSX_COMPAT_H
+#define PLATFORM_SDL_MACOSX_COMPAT_H
-#include "backends/mixer/sdl/sdl-mixer.h"
+#include <AvailabilityMacros.h>
-/**
- * SDL mixer manager with double buffering support.
- */
-class DoubleBufferSDLMixerManager : public SdlMixerManager {
-public:
- DoubleBufferSDLMixerManager();
- virtual ~DoubleBufferSDLMixerManager();
-
-protected:
- SDL_mutex *_soundMutex;
- SDL_cond *_soundCond;
- SDL_Thread *_soundThread;
- bool _soundThreadIsRunning;
- bool _soundThreadShouldQuit;
-
- byte _activeSoundBuf;
- uint _soundBufSize;
- byte *_soundBuffers[2];
-
- /**
- * Handles and swap the sound buffers
- */
- void mixerProducerThread();
-
- /**
- * Finish the mixer manager
- */
- void deinitThreadedMixer();
-
- /**
- * Callback entry point for the sound thread
- */
- static int SDLCALL mixerProducerThreadEntry(void *arg);
+#ifndef MAC_OS_X_VERSION_10_5
+#define MAC_OS_X_VERSION_10_5 1050
+#endif
- virtual void startAudio();
- virtual void callbackHandler(byte *samples, int len);
-};
+#ifndef MAC_OS_X_VERSION_10_12
+#define MAC_OS_X_VERSION_10_12 101200
+#endif
#endif
diff --git a/backends/platform/sdl/macosx/macosx.cpp b/backends/platform/sdl/macosx/macosx.cpp
index 7e6ef9588e..8ecbe7306c 100644
--- a/backends/platform/sdl/macosx/macosx.cpp
+++ b/backends/platform/sdl/macosx/macosx.cpp
@@ -28,7 +28,6 @@
#ifdef MACOSX
#include "backends/audiocd/macosx/macosx-audiocd.h"
-#include "backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h"
#include "backends/platform/sdl/macosx/appmenu_osx.h"
#include "backends/platform/sdl/macosx/macosx.h"
#include "backends/updates/macosx/macosx-updates.h"
@@ -62,14 +61,6 @@ void OSystem_MacOSX::init() {
}
void OSystem_MacOSX::initBackend() {
- // Create the mixer manager
- if (_mixer == 0) {
- _mixerManager = new DoubleBufferSDLMixerManager();
-
- // Setup and start mixer
- _mixerManager->init();
- }
-
#ifdef USE_TRANSLATION
// We need to initialize the translataion manager here for the following
// call to replaceApplicationMenuItems() work correctly
diff --git a/backends/taskbar/macosx/macosx-taskbar.mm b/backends/taskbar/macosx/macosx-taskbar.mm
index 692fa84429..f6d3be55ce 100644
--- a/backends/taskbar/macosx/macosx-taskbar.mm
+++ b/backends/taskbar/macosx/macosx-taskbar.mm
@@ -26,13 +26,10 @@
#if defined(MACOSX) && defined(USE_TASKBAR)
-// NSDockTile was introduced with Mac OS X 10.5.
-// Try provide backward compatibility by avoiding NSDockTile symbols.
-
#include "backends/taskbar/macosx/macosx-taskbar.h"
#include "common/config-manager.h"
#include "common/file.h"
-
+#include "backends/platform/sdl/macosx/macosx-compat.h"
#include <AppKit/NSApplication.h>
#include <AppKit/NSImage.h>
#include <Foundation/NSString.h>
@@ -44,7 +41,16 @@
#include <AppKit/NSBezierPath.h>
#include <CoreFoundation/CFString.h>
-id _dockTile;
+// NSDockTile was introduced with Mac OS X 10.5.
+// Try provide backward compatibility by avoiding NSDockTile symbols.
+#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
+typedef id NSDockTilePtr;
+#else
+#include <AppKit/NSDockTile.h>
+typedef NSDockTile * NSDockTilePtr;
+#endif
+
+NSDockTilePtr _dockTile;
NSImageView *_applicationIconView;
NSImageView *_overlayIconView;
diff --git a/base/main.cpp b/base/main.cpp
index c52888a827..4251c2c678 100644
--- a/base/main.cpp
+++ b/base/main.cpp
@@ -484,7 +484,7 @@ extern "C" int scummvm_main(int argc, const char * const argv[]) {
setupKeymapper(system);
#ifdef USE_UPDATES
- if (!ConfMan.hasKey("updates_check")) {
+ if (!ConfMan.hasKey("updates_check") && g_system->getUpdateManager()) {
GUI::UpdatesDialog dlg;
dlg.runModal();
}
diff --git a/common/archive.h b/common/archive.h
index 9293b937af..d76d0c4966 100644
--- a/common/archive.h
+++ b/common/archive.h
@@ -53,6 +53,12 @@ public:
typedef SharedPtr<ArchiveMember> ArchiveMemberPtr;
typedef List<ArchiveMemberPtr> ArchiveMemberList;
+struct ArchiveMemberListComparator {
+ bool operator()(const ArchiveMemberPtr &a, const ArchiveMemberPtr &b) {
+ return a->getName() < b->getName();
+ }
+};
+
class Archive;
/**
diff --git a/common/gui_options.cpp b/common/gui_options.cpp
index 500830a303..18e02c1077 100644
--- a/common/gui_options.cpp
+++ b/common/gui_options.cpp
@@ -83,6 +83,7 @@ const struct GameOpt {
// Option strings must not contain substrings of any other options, so
// "gameOption10" would be invalid here because it contains "gameOption1"
{ GUIO_GAMEOPTIONS10, "gameOptionA" },
+ { GUIO_GAMEOPTIONS11, "gameOptionB" },
{ GUIO_NONE, 0 }
};
diff --git a/common/gui_options.h b/common/gui_options.h
index 6c1aa2fdcd..0813ff1216 100644
--- a/common/gui_options.h
+++ b/common/gui_options.h
@@ -75,6 +75,7 @@
#define GUIO_GAMEOPTIONS8 "\057"
#define GUIO_GAMEOPTIONS9 "\060"
#define GUIO_GAMEOPTIONS10 "\061"
+#define GUIO_GAMEOPTIONS11 "\062"
#define GUIO0() (GUIO_NONE)
#define GUIO1(a) (a)
@@ -85,6 +86,7 @@
#define GUIO6(a,b,c,d,e,f) (a b c d e f)
#define GUIO7(a,b,c,d,e,f,g) (a b c d e f g)
#define GUIO8(a,b,c,d,e,f,g,h) (a b c d e f g h)
+#define GUIO9(a,b,c,d,e,f,g,h,i) (a b c d e f g h i)
namespace Common {
diff --git a/common/memstream.h b/common/memstream.h
index 0338d35378..f6bf990208 100644
--- a/common/memstream.h
+++ b/common/memstream.h
@@ -184,7 +184,7 @@ protected:
_size = new_len;
}
public:
- MemoryWriteStreamDynamic(DisposeAfterUse::Flag disposeMemory = DisposeAfterUse::NO) : _capacity(0), _size(0), _ptr(0), _data(0), _pos(0), _disposeMemory(disposeMemory) {}
+ explicit MemoryWriteStreamDynamic(DisposeAfterUse::Flag disposeMemory) : _capacity(0), _size(0), _ptr(0), _data(0), _pos(0), _disposeMemory(disposeMemory) {}
~MemoryWriteStreamDynamic() {
if (_disposeMemory)
@@ -247,7 +247,7 @@ private:
}
}
public:
- MemoryReadWriteStream(DisposeAfterUse::Flag disposeMemory = DisposeAfterUse::NO) : _capacity(0), _size(0), _data(0), _writePos(0), _readPos(0), _pos(0), _length(0), _disposeMemory(disposeMemory), _eos(false) {}
+ explicit MemoryReadWriteStream(DisposeAfterUse::Flag disposeMemory) : _capacity(0), _size(0), _data(0), _writePos(0), _readPos(0), _pos(0), _length(0), _disposeMemory(disposeMemory), _eos(false) {}
~MemoryReadWriteStream() {
if (_disposeMemory)
diff --git a/common/quicktime.cpp b/common/quicktime.cpp
index 76880e1016..ecbf021e45 100644
--- a/common/quicktime.cpp
+++ b/common/quicktime.cpp
@@ -124,9 +124,8 @@ void QuickTimeParser::init() {
// If this track doesn't have an edit list (like in MPEG-4 files),
// fake an entry of one edit that takes up the entire sample
- if (_tracks[i]->editCount == 0) {
- _tracks[i]->editCount = 1;
- _tracks[i]->editList = new EditListEntry[1];
+ if (_tracks[i]->editList.size() == 0) {
+ _tracks[i]->editList.resize(1);
_tracks[i]->editList[0].trackDuration = _tracks[i]->duration;
_tracks[i]->editList[0].timeOffset = 0;
_tracks[i]->editList[0].mediaTime = 0;
@@ -434,14 +433,14 @@ int QuickTimeParser::readELST(Atom atom) {
_fd->readByte(); // version
_fd->readByte(); _fd->readByte(); _fd->readByte(); // flags
- track->editCount = _fd->readUint32BE();
- track->editList = new EditListEntry[track->editCount];
+ uint32 editCount = _fd->readUint32BE();
+ track->editList.resize(editCount);
- debug(2, "Track %d edit list count: %d", _tracks.size() - 1, track->editCount);
+ debug(2, "Track %d edit list count: %d", _tracks.size() - 1, editCount);
uint32 offset = 0;
- for (uint32 i = 0; i < track->editCount; i++) {
+ for (uint32 i = 0; i < editCount; i++) {
track->editList[i].trackDuration = _fd->readUint32BE();
track->editList[i].mediaTime = _fd->readSint32BE();
track->editList[i].mediaRate = Rational(_fd->readUint32BE(), 0x10000);
@@ -836,8 +835,6 @@ QuickTimeParser::Track::Track() {
width = 0;
height = 0;
codecType = CODEC_TYPE_MOV_OTHER;
- editCount = 0;
- editList = 0;
frameCount = 0;
duration = 0;
startTime = 0;
@@ -850,7 +847,6 @@ QuickTimeParser::Track::~Track() {
delete[] sampleToChunk;
delete[] sampleSizes;
delete[] keyframes;
- delete[] editList;
for (uint32 i = 0; i < sampleDescs.size(); i++)
delete sampleDescs[i];
diff --git a/common/quicktime.h b/common/quicktime.h
index f74d1ed0d9..3f82fc0431 100644
--- a/common/quicktime.h
+++ b/common/quicktime.h
@@ -150,8 +150,7 @@ protected:
Array<SampleDesc *> sampleDescs;
- uint32 editCount;
- EditListEntry *editList;
+ Common::Array<EditListEntry> editList;
uint32 frameCount;
uint32 duration;
diff --git a/common/rect.h b/common/rect.h
index e6534e55d3..6c4292c7af 100644
--- a/common/rect.h
+++ b/common/rect.h
@@ -27,6 +27,8 @@
#include "common/util.h"
#include "common/debug.h"
+#define PRINT_RECT(x) (x).left,(x).top,(x).right,(x).bottom
+
namespace Common {
/**
diff --git a/devtools/create_project/xcode.cpp b/devtools/create_project/xcode.cpp
index d60934bcb8..00ef800af4 100644
--- a/devtools/create_project/xcode.cpp
+++ b/devtools/create_project/xcode.cpp
@@ -34,6 +34,8 @@
namespace CreateProjectTool {
+#define LAST_XCODE_VERSION "0830"
+
#define DEBUG_XCODE_HASH 0
#define IOS_TARGET 0
@@ -52,7 +54,7 @@ namespace CreateProjectTool {
config._settings[key] = Setting(value, "", kSettingsNoQuote);
#define ADD_SETTING_ORDER(config, key, value, order) \
- config.settings[key] = Setting(value, "", kSettingsNoQuote, 0, order);
+ config._settings[key] = Setting(value, "", kSettingsNoQuote, 0, order);
#define ADD_SETTING_ORDER_NOVALUE(config, key, comment, order) \
config._settings[key] = Setting("", comment, kSettingsNoValue, 0, order);
@@ -314,7 +316,7 @@ void XcodeProvider::createOtherBuildFiles(const BuildSetup &setup) {
// This needs to be done at the end when all build files have been accounted for
setupSourcesBuildPhase();
- ouputMainProjectFile(setup);
+ outputMainProjectFile(setup);
}
// Store information about a project here, for use at the end
@@ -337,7 +339,7 @@ void XcodeProvider::createProjectFile(const std::string &, const std::string &,
//////////////////////////////////////////////////////////////////////////
// Main Project file
//////////////////////////////////////////////////////////////////////////
-void XcodeProvider::ouputMainProjectFile(const BuildSetup &setup) {
+void XcodeProvider::outputMainProjectFile(const BuildSetup &setup) {
std::ofstream project((setup.outputDir + '/' + PROJECT_NAME ".xcodeproj" + '/' + "project.pbxproj").c_str());
if (!project)
error("Could not open \"" + setup.outputDir + '/' + PROJECT_NAME ".xcodeproj" + '/' + "project.pbxproj\" for writing");
@@ -389,6 +391,14 @@ void XcodeProvider::writeFileListToProject(const FileNode &dir, std::ofstream &p
// for folders, we shouldn't add folders as file references, obviously.
if (node->children.empty()) {
group->addChildFile(node->name);
+
+ // HACK: Also add browser_osx.mm, since browser.cpp is added for
+ // iOS and browser_osx.mm for macOS, and create_project cannot
+ // deal with two competing exclusive ifdefs in module.mk going
+ // into one project
+ if (filePrefix.find("/gui/") == filePrefix.size() - 5 && node->name == "browser.cpp") {
+ group->addChildFile("browser_osx.mm");
+ }
}
// Process child nodes
if (!node->children.empty())
@@ -452,11 +462,45 @@ void XcodeProvider::setupFrameworksBuildPhase(const BuildSetup &setup) {
DEF_SYSTBD("libiconv");
// Local libraries
- DEF_LOCALLIB_STATIC("libFLAC");
- DEF_LOCALLIB_STATIC("libmad");
- DEF_LOCALLIB_STATIC("libvorbisidec");
- DEF_LOCALLIB_STATIC("libfreetype");
-// DEF_LOCALLIB_STATIC("libmpeg2");
+ if (CONTAINS_DEFINE(setup.defines, "USE_FLAC")) {
+ DEF_LOCALLIB_STATIC("libFLAC");
+ }
+ if (CONTAINS_DEFINE(setup.defines, "USE_FLUIDSYNTH")) {
+ DEF_LOCALLIB_STATIC("libfluidsynth");
+ DEF_LOCALLIB_STATIC("libglib-2.0");
+ DEF_SYSTBD("libffi");
+ }
+ if (CONTAINS_DEFINE(setup.defines, "USE_FREETYPE2")) {
+ DEF_LOCALLIB_STATIC("libfreetype");
+ }
+ if (CONTAINS_DEFINE(setup.defines, "USE_JPEG")) {
+ DEF_LOCALLIB_STATIC("libjpeg");
+ }
+ if (CONTAINS_DEFINE(setup.defines, "USE_LIBCURL")) {
+ DEF_LOCALLIB_STATIC("libcurl");
+ }
+ if (CONTAINS_DEFINE(setup.defines, "USE_MAD")) {
+ DEF_LOCALLIB_STATIC("libmad");
+ }
+ if (CONTAINS_DEFINE(setup.defines, "USE_PNG")) {
+ DEF_LOCALLIB_STATIC("libpng");
+ }
+ if (CONTAINS_DEFINE(setup.defines, "USE_VORBIS")) {
+ DEF_LOCALLIB_STATIC("libogg");
+ DEF_LOCALLIB_STATIC("libvorbis");
+ DEF_LOCALLIB_STATIC("libvorbisfile");
+ }
+ if (CONTAINS_DEFINE(setup.defines, "USE_ZLIB")) {
+ DEF_SYSTBD("libz");
+ }
+
+ if (setup.useSDL2) {
+ DEF_LOCALLIB_STATIC("libSDL2main");
+ DEF_LOCALLIB_STATIC("libSDL2");
+ } else {
+ DEF_LOCALLIB_STATIC("libSDLmain");
+ DEF_LOCALLIB_STATIC("libSDL");
+ }
std::string absoluteOutputDir;
#ifdef POSIX
@@ -468,16 +512,6 @@ void XcodeProvider::setupFrameworksBuildPhase(const BuildSetup &setup) {
absoluteOutputDir = "lib";
#endif
- DEF_LOCALLIB_STATIC_PATH(absoluteOutputDir + "/libFLAC.a", "libFLAC", true);
- DEF_LOCALLIB_STATIC_PATH(absoluteOutputDir + "/libfreetype.a", "libfreetype", true);
- DEF_LOCALLIB_STATIC_PATH(absoluteOutputDir + "/libogg.a", "libogg", true);
- DEF_LOCALLIB_STATIC_PATH(absoluteOutputDir + "/libpng.a", "libpng", true);
- DEF_LOCALLIB_STATIC_PATH(absoluteOutputDir + "/libvorbis.a", "libvorbis", true);
- DEF_LOCALLIB_STATIC_PATH(absoluteOutputDir + "/libmad.a", "libmad", true);
- DEF_LOCALLIB_STATIC_PATH(absoluteOutputDir + "/libfluidsynth.a", "libfluidsynth", true);
- DEF_LOCALLIB_STATIC_PATH(absoluteOutputDir + "/libglib.a", "libglib", true);
- DEF_LOCALLIB_STATIC_PATH(absoluteOutputDir + "/libffi.a", "libffi", true);
-
frameworksGroup->_properties["children"] = children;
_groups.add(frameworksGroup);
// Force this to be added as a sub-group in the root.
@@ -521,17 +555,21 @@ void XcodeProvider::setupFrameworksBuildPhase(const BuildSetup &setup) {
if (CONTAINS_DEFINE(setup.defines, "USE_VORBIS")) {
frameworks_iOS.push_back("libogg.a");
frameworks_iOS.push_back("libvorbis.a");
+ frameworks_iOS.push_back("libvorbisfile.a");
}
if (CONTAINS_DEFINE(setup.defines, "USE_MAD")) {
frameworks_iOS.push_back("libmad.a");
}
if (CONTAINS_DEFINE(setup.defines, "USE_FLUIDSYNTH")) {
frameworks_iOS.push_back("libfluidsynth.a");
- frameworks_iOS.push_back("libglib.a");
- frameworks_iOS.push_back("libffi.a");
+ frameworks_iOS.push_back("libglib-2.0.a");
+ frameworks_iOS.push_back("libffi.tbd");
frameworks_iOS.push_back("CoreMIDI.framework");
frameworks_iOS.push_back("libiconv.tbd");
}
+ if (CONTAINS_DEFINE(setup.defines, "USE_ZLIB")) {
+ frameworks_iOS.push_back("libz.tbd");
+ }
for (ValueList::iterator framework = frameworks_iOS.begin(); framework != frameworks_iOS.end(); framework++) {
std::string id = "Frameworks_" + *framework + "_iphone";
@@ -571,6 +609,46 @@ void XcodeProvider::setupFrameworksBuildPhase(const BuildSetup &setup) {
frameworks_osx.push_back("Cocoa.framework");
frameworks_osx.push_back("AudioUnit.framework");
+ if (CONTAINS_DEFINE(setup.defines, "USE_FLAC")) {
+ frameworks_osx.push_back("libFLAC.a");
+ }
+ if (CONTAINS_DEFINE(setup.defines, "USE_FLUIDSYNTH")) {
+ frameworks_osx.push_back("libfluidsynth.a");
+ frameworks_osx.push_back("libglib-2.0.a");
+ frameworks_osx.push_back("libffi.tbd");
+ }
+ if (CONTAINS_DEFINE(setup.defines, "USE_FREETYPE2")) {
+ frameworks_osx.push_back("libfreetype.a");
+ }
+ if (CONTAINS_DEFINE(setup.defines, "USE_JPEG")) {
+ frameworks_osx.push_back("libjpeg.a");
+ }
+ if (CONTAINS_DEFINE(setup.defines, "USE_LIBCURL")) {
+ frameworks_osx.push_back("libcurl.a");
+ }
+ if (CONTAINS_DEFINE(setup.defines, "USE_MAD")) {
+ frameworks_osx.push_back("libmad.a");
+ }
+ if (CONTAINS_DEFINE(setup.defines, "USE_PNG")) {
+ frameworks_osx.push_back("libpng.a");
+ }
+ if (CONTAINS_DEFINE(setup.defines, "USE_VORBIS")) {
+ frameworks_osx.push_back("libogg.a");
+ frameworks_osx.push_back("libvorbis.a");
+ frameworks_osx.push_back("libvorbisfile.a");
+ }
+ if (CONTAINS_DEFINE(setup.defines, "USE_ZLIB")) {
+ frameworks_osx.push_back("libz.tbd");
+ }
+
+ if (setup.useSDL2) {
+ frameworks_osx.push_back("libSDL2main.a");
+ frameworks_osx.push_back("libSDL2.a");
+ } else {
+ frameworks_osx.push_back("libSDLmain.a");
+ frameworks_osx.push_back("libSDL.a");
+ }
+
order = 0;
for (ValueList::iterator framework = frameworks_osx.begin(); framework != frameworks_osx.end(); framework++) {
std::string id = "Frameworks_" + *framework + "_osx";
@@ -631,6 +709,7 @@ void XcodeProvider::setupProject() {
project->addProperty("compatibilityVersion", "Xcode 3.2", "", kSettingsNoValue | kSettingsQuoteVariable);
project->addProperty("developmentRegion", "English", "", kSettingsNoValue);
project->addProperty("hasScannedForEncodings", "1", "", kSettingsNoValue);
+ project->addProperty("attributes", "{ LastUpgradeCheck = " LAST_XCODE_VERSION "; }", "", kSettingsNoQuote | kSettingsNoValue);
// List of known regions
Property regions;
@@ -783,16 +862,34 @@ void XcodeProvider::setupBuildConfiguration(const BuildSetup &setup) {
Property scummvm_Debug;
ADD_SETTING(scummvm_Debug, "ALWAYS_SEARCH_USER_PATHS", "NO");
ADD_SETTING_QUOTE(scummvm_Debug, "USER_HEADER_SEARCH_PATHS", "$(SRCROOT) $(SRCROOT)/engines");
+ ADD_SETTING(scummvm_Debug, "CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED", "YES");
+ ADD_SETTING(scummvm_Debug, "CLANG_WARN_BOOL_CONVERSION", "YES");
+ ADD_SETTING(scummvm_Debug, "CLANG_WARN_CONSTANT_CONVERSION", "YES");
+ ADD_SETTING(scummvm_Debug, "CLANG_WARN_EMPTY_BODY", "YES");
+ ADD_SETTING(scummvm_Debug, "CLANG_WARN_ENUM_CONVERSION", "YES");
+ ADD_SETTING(scummvm_Debug, "CLANG_WARN_INFINITE_RECURSION", "YES");
+ ADD_SETTING(scummvm_Debug, "CLANG_WARN_INT_CONVERSION", "YES");
+ ADD_SETTING(scummvm_Debug, "CLANG_WARN_SUSPICIOUS_MOVE", "YES");
+ ADD_SETTING(scummvm_Debug, "CLANG_WARN_UNREACHABLE_CODE", "YES");
+ ADD_SETTING(scummvm_Debug, "CLANG_WARN__DUPLICATE_METHOD_MATCH", "YES");
ADD_SETTING_QUOTE(scummvm_Debug, "CODE_SIGN_IDENTITY", "");
ADD_SETTING_QUOTE_VAR(scummvm_Debug, "CODE_SIGN_IDENTITY[sdk=iphoneos*]", "");
+ ADD_SETTING(scummvm_Debug, "ENABLE_STRICT_OBJC_MSGSEND", "YES");
ADD_SETTING_QUOTE(scummvm_Debug, "FRAMEWORK_SEARCH_PATHS", "");
ADD_SETTING(scummvm_Debug, "GCC_C_LANGUAGE_STANDARD", "c99");
ADD_SETTING(scummvm_Debug, "GCC_ENABLE_CPP_EXCEPTIONS", "NO");
ADD_SETTING(scummvm_Debug, "GCC_ENABLE_CPP_RTTI", "YES");
ADD_SETTING(scummvm_Debug, "GCC_INPUT_FILETYPE", "automatic");
+ ADD_SETTING(scummvm_Debug, "GCC_NO_COMMON_BLOCKS", "YES");
ADD_SETTING(scummvm_Debug, "GCC_OPTIMIZATION_LEVEL", "0");
ADD_SETTING(scummvm_Debug, "GCC_WARN_SIGN_COMPARE", "YES");
- ADD_SETTING(scummvm_Debug, "WARNING_CFLAGS", "-Wno-multichar");
+ ADD_SETTING(scummvm_Debug, "GCC_WARN_UNDECLARED_SELECTOR", "YES");
+ ADD_SETTING(scummvm_Debug, "GCC_WARN_UNINITIALIZED_AUTOS", "YES");
+ ADD_SETTING(scummvm_Debug, "GCC_WARN_UNUSED_FUNCTION", "YES");
+ ValueList scummvm_WarningCFlags;
+ scummvm_WarningCFlags.push_back("-Wno-multichar");
+ scummvm_WarningCFlags.push_back("-Wno-undefined-var-template");
+ ADD_SETTING_LIST(scummvm_Debug, "WARNING_CFLAGS", scummvm_WarningCFlags, kSettingsQuoteVariable | kSettingsAsList, 5);
ValueList scummvm_defines(_defines);
REMOVE_DEFINE(scummvm_defines, "MACOSX");
REMOVE_DEFINE(scummvm_defines, "IPHONE");
@@ -810,7 +907,7 @@ void XcodeProvider::setupBuildConfiguration(const BuildSetup &setup) {
ADD_SETTING_QUOTE(scummvm_Debug, "LIBRARY_SEARCH_PATHS", "");
ADD_SETTING(scummvm_Debug, "ONLY_ACTIVE_ARCH", "YES");
ADD_SETTING_QUOTE(scummvm_Debug, "OTHER_CFLAGS", "");
- ADD_SETTING_QUOTE(scummvm_Debug, "OTHER_LDFLAGS", "-lz");
+ ADD_SETTING_QUOTE(scummvm_Debug, "OTHER_LDFLAGS", "");
ADD_SETTING(scummvm_Debug, "ENABLE_TESTABILITY", "YES");
scummvm_Debug_Object->addProperty("name", "Debug", "", kSettingsNoValue);
@@ -867,8 +964,7 @@ void XcodeProvider::setupBuildConfiguration(const BuildSetup &setup) {
ADD_SETTING(iPhone_Debug, "ONLY_ACTIVE_ARCH", "YES");
ADD_SETTING(iPhone_Debug, "PRODUCT_NAME", PROJECT_NAME);
ADD_SETTING(iPhone_Debug, "PRODUCT_BUNDLE_IDENTIFIER", "\"org.scummvm.${PRODUCT_NAME}\"");
- ADD_SETTING(iPhone_Debug, "IPHONEOS_DEPLOYMENT_TARGET", "7.1");
- //ADD_SETTING_QUOTE(iPhone_Debug, "PROVISIONING_PROFILE", "EF590570-5FAC-4346-9071-D609DE2B28D8");
+ ADD_SETTING(iPhone_Debug, "IPHONEOS_DEPLOYMENT_TARGET", "8.0");
ADD_SETTING_QUOTE_VAR(iPhone_Debug, "PROVISIONING_PROFILE[sdk=iphoneos*]", "");
ADD_SETTING(iPhone_Debug, "SDKROOT", "iphoneos");
ADD_SETTING_QUOTE(iPhone_Debug, "TARGETED_DEVICE_FAMILY", "1,2");
@@ -944,26 +1040,6 @@ void XcodeProvider::setupBuildConfiguration(const BuildSetup &setup) {
scummvmOSX_LibPaths.push_back("\"\\\"$(SRCROOT)/lib\\\"\"");
ADD_SETTING_LIST(scummvmOSX_Debug, "LIBRARY_SEARCH_PATHS", scummvmOSX_LibPaths, kSettingsNoQuote | kSettingsAsList, 5);
ADD_SETTING_QUOTE(scummvmOSX_Debug, "OTHER_CFLAGS", "");
- ValueList scummvmOSX_LdFlags;
- scummvmOSX_LdFlags.push_back("-logg");
- scummvmOSX_LdFlags.push_back("-lpng");
- scummvmOSX_LdFlags.push_back("-ljpeg");
- scummvmOSX_LdFlags.push_back("-ltheora");
- scummvmOSX_LdFlags.push_back("-lfreetype");
- scummvmOSX_LdFlags.push_back("-lvorbisfile");
- scummvmOSX_LdFlags.push_back("-lvorbis");
- scummvmOSX_LdFlags.push_back("-lmad");
- scummvmOSX_LdFlags.push_back("-lFLAC");
- scummvmOSX_LdFlags.push_back("-lcurl");
- if (setup.useSDL2) {
- scummvmOSX_LdFlags.push_back("-lSDL2main");
- scummvmOSX_LdFlags.push_back("-lSDL2");
- } else {
- scummvmOSX_LdFlags.push_back("-lSDLmain");
- scummvmOSX_LdFlags.push_back("-lSDL");
- }
- scummvmOSX_LdFlags.push_back("-lz");
- ADD_SETTING_LIST(scummvmOSX_Debug, "OTHER_LDFLAGS", scummvmOSX_LdFlags, kSettingsAsList, 5);
ADD_SETTING(scummvmOSX_Debug, "PRODUCT_NAME", PROJECT_NAME);
scummvmOSX_Debug_Object->addProperty("name", "Debug", "", kSettingsNoValue);
@@ -1018,6 +1094,11 @@ void XcodeProvider::setupAdditionalSources(std::string targetName, Property &fil
if (targetIsIOS(targetName)) {
const std::string absoluteCatalogPath = _projectRoot + "/dists/ios7/Images.xcassets";
ADD_SETTING_ORDER_NOVALUE(files, getHash(absoluteCatalogPath), "Image Asset Catalog", order++);
+ } else {
+ // HACK: browser_osx.mm needs to be added
+ const std::string browserPath = "gui/browser_osx.mm";
+ const std::string comment = "browser_osx.mm in Sources";
+ ADD_SETTING_ORDER_NOVALUE(files, getHash(browserPath), comment, order++);
}
}
@@ -1029,7 +1110,7 @@ void XcodeProvider::setupAdditionalSources(std::string targetName, Property &fil
void XcodeProvider::setupDefines(const BuildSetup &setup) {
for (StringList::const_iterator i = setup.defines.begin(); i != setup.defines.end(); ++i) {
- if (*i == "USE_NASM" || *i == "USE_FLUIDSYNTH") // Not supported on Mac
+ if (*i == "USE_NASM") // Not supported on Mac
continue;
ADD_DEFINE(_defines, *i);
diff --git a/devtools/create_project/xcode.h b/devtools/create_project/xcode.h
index d495dd0dfd..c3b44b2590 100644
--- a/devtools/create_project/xcode.h
+++ b/devtools/create_project/xcode.h
@@ -308,7 +308,7 @@ private:
ObjectList _buildConfiguration;
ObjectList _configurationList;
- void ouputMainProjectFile(const BuildSetup &setup);
+ void outputMainProjectFile(const BuildSetup &setup);
// Setup objects
void setupCopyFilesBuildPhase();
diff --git a/devtools/create_titanic/create_titanic_dat.cpp b/devtools/create_titanic/create_titanic_dat.cpp
index b9d21d7ca8..88ff97fb20 100644
--- a/devtools/create_titanic/create_titanic_dat.cpp
+++ b/devtools/create_titanic/create_titanic_dat.cpp
@@ -57,7 +57,7 @@
*/
#define VERSION_NUMBER 3
-#define HEADER_SIZE 0x1380
+#define HEADER_SIZE 0x1480
Common::File inputFile, outputFile;
Common::PEResources resEng, resGer;
@@ -941,7 +941,7 @@ static const char *const STRINGS_DE[197] = {
"Speichern Sie das Spiel.",
"Leer",
"Beenden Sie das Spiel.",
- "Sind Sie sicher, da\xDF"" Sie das Spiel verlassen m\XF6""chten?",
+ "Sind Sie sicher, da\xDF"" Sie das Spiel verlassen m\xF6""chten?",
"\xC4""ndern der Lautst\xE4""rkeeinstellungen",
"Grundlautst\xE4""rke",
"Musiklautst\xE4""rke",
@@ -1714,6 +1714,14 @@ void writeGermanData() {
writeStringArray("TEXT/REPLACEMENTS4/DE", 0x241D38 + GERMAN_DIFF, 195);
writeStringArray("TEXT/PRONOUNS/DE", 0x248610 + GERMAN_DIFF, 15);
+ writeSentenceMappings("Mappings/Barbot/DE", 0x1BA388 + GERMAN_DIFF, 8);
+ writeSentenceMappings("Mappings/Bellbot/DE", 0x1E1D20 + GERMAN_DIFF, 1);
+ writeSentenceMappings("Mappings/Deskbot/DE", 0x1F5A18 + GERMAN_DIFF, 4);
+ writeSentenceMappings("Mappings/Doorbot/DE", 0x214E00 + GERMAN_DIFF, 4);
+ writeSentenceMappings("Mappings/Liftbot/DE", 0x224AE0 + GERMAN_DIFF, 4);
+ writeSentenceMappings("Mappings/MaitreD/DE", 0x232E30 + GERMAN_DIFF, 1);
+ writeSentenceMappings("Mappings/Parrot/DE", 0x235FA8 + GERMAN_DIFF, 1);
+ writeSentenceMappings("Mappings/SuccUBus/DE", 0x2399C8 + GERMAN_DIFF, 1);
const int SENTENCES_BARBOT[2] = { 0x5B00C0, 0x5C5AC8 };
const int SENTENCES_BELLBOT[20] = { 0x5CACF8, 0x5D1670 };
diff --git a/devtools/create_titanic/script_preresponses.cpp b/devtools/create_titanic/script_preresponses.cpp
index a12210a53c..cb5beba90d 100644
--- a/devtools/create_titanic/script_preresponses.cpp
+++ b/devtools/create_titanic/script_preresponses.cpp
@@ -32,109 +32,213 @@
#include "file.h"
#include "script_preresponses.h"
-static const PreResponse BARBOT_PRERESPONSES[] = {
- { 0x0000CA02, 0x0003D102 },
- { 0x0000CA68, 0x0003D102 },
- { 0x0000C9DA, 0x0003D102 },
- { 0x0000CA6A, 0x0003D103 },
- { 0x0000C922, 0x0003D099 },
- { 0x0000C97C, 0x0003D099 },
- { 0x0000CA0B, 0x0003D099 },
- { 0x0000CA72, 0x0003D099 },
- { 0x0000CA0E, 0x0003D107 },
- { 0x0000CA73, 0x0003D107 },
- { 0x0000CA12, 0x0003D108 },
- { 0x0000CA1C, 0x0003D10E },
- { 0x0000CA83, 0x0003D10E },
- { 0x0000CA1F, 0x0003D110 },
- { 0x0000CA86, 0x0003D110 },
- { 0x0000CA23, 0x0003D112 },
- { 0x0000CA8A, 0x0003D112 },
- { 0x0000CA92, 0x0003D122 },
- { 0x0000CA30, 0x0003D116 },
- { 0x0000CA96, 0x0003D116 },
- { 0x0000CA36, 0x0003D117 },
- { 0x0000C9FC, 0x0003D117 },
- { 0x0000CA9B, 0x0003D117 },
- { 0x0000CA63, 0x0003D117 },
- { 0x0000CA38, 0x0003D11B },
- { 0x0000CA15, 0x0003D109 },
- { 0x0000CA7B, 0x0003D109 },
- { 0x0000CA2E, 0x0003D115 },
- { 0x0000CA94, 0x0003D115 },
- { 0x0000CA5C, 0x0003D115 },
- { 0x0000CA21, 0x0003D111 },
- { 0x0000CA88, 0x0003D111 },
- { 0x0000CA2A, 0x0003D114 },
- { 0x0000CA28, 0x0003D119 },
- { 0x0000CA8E, 0x0003D119 },
- { 0x0000CA17, 0x0003D10B },
- { 0x0000CA7D, 0x0003D10B },
- { 0x0000CA4C, 0x0003D10B },
- { 0x0000CA06, 0x0003D105 },
- { 0x0000CA6C, 0x0003D105 },
- { 0x0000CA0A, 0x0003D106 },
- { 0x0000CA70, 0x0003D106 },
- { 0x0000CA19, 0x0003D10C },
- { 0x0000CA7F, 0x0003D10C },
- { 0x0000C9FF, 0x0003D101 },
- { 0x0000CA65, 0x0003D101 },
- { 0x00000000, 0x00000000 }
+static const PreResponse BARBOT_PRERESPONSES_EN[] = {
+ { 0x0CA02, 0x3D102 },
+ { 0x0CA68, 0x3D102 },
+ { 0x0C9DA, 0x3D102 },
+ { 0x0CA6A, 0x3D103 },
+ { 0x0C922, 0x3D099 },
+ { 0x0C97C, 0x3D099 },
+ { 0x0CA0B, 0x3D099 },
+ { 0x0CA72, 0x3D099 },
+ { 0x0CA0E, 0x3D107 },
+ { 0x0CA73, 0x3D107 },
+ { 0x0CA12, 0x3D108 },
+ { 0x0CA1C, 0x3D10E },
+ { 0x0CA83, 0x3D10E },
+ { 0x0CA1F, 0x3D110 },
+ { 0x0CA86, 0x3D110 },
+ { 0x0CA23, 0x3D112 },
+ { 0x0CA8A, 0x3D112 },
+ { 0x0CA92, 0x3D122 },
+ { 0x0CA30, 0x3D116 },
+ { 0x0CA96, 0x3D116 },
+ { 0x0CA36, 0x3D117 },
+ { 0x0C9FC, 0x3D117 },
+ { 0x0CA9B, 0x3D117 },
+ { 0x0CA63, 0x3D117 },
+ { 0x0CA38, 0x3D11B },
+ { 0x0CA15, 0x3D109 },
+ { 0x0CA7B, 0x3D109 },
+ { 0x0CA2E, 0x3D115 },
+ { 0x0CA94, 0x3D115 },
+ { 0x0CA5C, 0x3D115 },
+ { 0x0CA21, 0x3D111 },
+ { 0x0CA88, 0x3D111 },
+ { 0x0CA2A, 0x3D114 },
+ { 0x0CA28, 0x3D119 },
+ { 0x0CA8E, 0x3D119 },
+ { 0x0CA17, 0x3D10B },
+ { 0x0CA7D, 0x3D10B },
+ { 0x0CA4C, 0x3D10B },
+ { 0x0CA06, 0x3D105 },
+ { 0x0CA6C, 0x3D105 },
+ { 0x0CA0A, 0x3D106 },
+ { 0x0CA70, 0x3D106 },
+ { 0x0CA19, 0x3D10C },
+ { 0x0CA7F, 0x3D10C },
+ { 0x0C9FF, 0x3D101 },
+ { 0x0CA65, 0x3D101 },
+ { 0x00000, 0x00000 }
+};
+static const PreResponse BARBOT_PRERESPONSES_DE[] = {
+ { 0x0ca11, 0x3d102 },
+ { 0x0ca77, 0x3d102 },
+ { 0x0c9e9, 0x3d102 },
+ { 0x0ca79, 0x3d103 },
+ { 0x0c931, 0x3d099 },
+ { 0x0c98b, 0x3d099 },
+ { 0x0ca1a, 0x3d099 },
+ { 0x0ca81, 0x3d099 },
+ { 0x0ca1d, 0x3d107 },
+ { 0x0ca82, 0x3d107 },
+ { 0x0ca21, 0x3d108 },
+ { 0x0ca2b, 0x3d10e },
+ { 0x0ca92, 0x3d10e },
+ { 0x0ca2e, 0x3d110 },
+ { 0x0ca95, 0x3d110 },
+ { 0x0ca32, 0x3d112 },
+ { 0x0ca99, 0x3d112 },
+ { 0x0caa1, 0x3d122 },
+ { 0x0ca3f, 0x3d116 },
+ { 0x0caa5, 0x3d116 },
+ { 0x0ca45, 0x3d117 },
+ { 0x0ca0b, 0x3d117 },
+ { 0x0caaa, 0x3d117 },
+ { 0x0ca72, 0x3d117 },
+ { 0x0ca47, 0x3d11b },
+ { 0x0ca24, 0x3d109 },
+ { 0x0ca8a, 0x3d109 },
+ { 0x0ca3d, 0x3d115 },
+ { 0x0caa3, 0x3d115 },
+ { 0x0ca6b, 0x3d115 },
+ { 0x0ca30, 0x3d111 },
+ { 0x0ca97, 0x3d111 },
+ { 0x0ca39, 0x3d114 },
+ { 0x0ca37, 0x3d119 },
+ { 0x0ca9d, 0x3d119 },
+ { 0x0ca26, 0x3d10b },
+ { 0x0ca8c, 0x3d10b },
+ { 0x0ca5b, 0x3d10b },
+ { 0x0ca15, 0x3d105 },
+ { 0x0ca7b, 0x3d105 },
+ { 0x0ca19, 0x3d106 },
+ { 0x0ca7f, 0x3d106 },
+ { 0x0ca28, 0x3d10c },
+ { 0x0ca8e, 0x3d10c },
+ { 0x0ca0e, 0x3d101 },
+ { 0x0ca74, 0x3d101 },
+ { 0x00000, 0x00000 }
+};
+
+static const PreResponse BELLBOT_PRERESPONSES_EN[] = {
+ { 0x052DC, 0x30D40 },
+ { 0x054E9, 0x30D40 },
+ { 0x054EC, 0x30D40 },
+ { 0x054F0, 0x30D40 },
+ { 0x0532C, 0x31625 },
+ { 0x05330, 0x31625 },
+ { 0x05368, 0x31625 },
+ { 0x05369, 0x31625 },
+ { 0x0536A, 0x31625 },
+ { 0x0536B, 0x31625 },
+ { 0x0536C, 0x31625 },
+ { 0x0536D, 0x31625 },
+ { 0x053A4, 0x31625 },
+ { 0x0558A, 0x31625 },
+ { 0x05485, 0x31625 },
+ { 0x04EE7, 0x31625 },
+ { 0x04EE8, 0x31625 },
+ { 0x0530A, 0x31625 },
+ { 0x0530B, 0x31625 },
+ { 0x053F6, 0x31625 },
+ { 0x053F7, 0x31625 },
+ { 0x053F8, 0x31625 },
+ { 0x053F9, 0x31625 },
+ { 0x053FA, 0x31625 },
+ { 0x053FB, 0x31625 },
+ { 0x053FC, 0x31625 },
+ { 0x053FD, 0x31625 },
+ { 0x0556B, 0x31041 },
+ { 0x05499, 0x30D40 },
+ { 0x053E9, 0x30E01 },
+ { 0x053EB, 0x30E01 },
+ { 0x053EC, 0x30E01 },
+ { 0x053ED, 0x30E01 },
+ { 0x053EE, 0x30E01 },
+ { 0x053EF, 0x30E01 },
+ { 0x053F0, 0x30E01 },
+ { 0x053F1, 0x30E01 },
+ { 0x053F2, 0x30E01 },
+ { 0x053EA, 0x30E01 },
+ { 0x05441, 0x30F00 },
+ { 0x05444, 0x30F00 },
+ { 0x05445, 0x30F00 },
+ { 0x05443, 0x30F00 },
+ { 0x05446, 0x30F00 },
+ { 0x05447, 0x30F00 },
+ { 0x05448, 0x30F00 },
+ { 0x05449, 0x30F00 },
+ { 0x0544A, 0x30F00 },
+ { 0x0544B, 0x30F00 },
+ { 0x05442, 0x30F00 },
+ { 0x0527C, 0x315C8 },
+ { 0x00000, 0x00000 }
};
-static const PreResponse BELLBOT_PRERESPONSES[] = {
- { 0x000052DC, 0x00030D40 },
- { 0x000054E9, 0x00030D40 },
- { 0x000054EC, 0x00030D40 },
- { 0x000054F0, 0x00030D40 },
- { 0x0000532C, 0x00031625 },
- { 0x00005330, 0x00031625 },
- { 0x00005368, 0x00031625 },
- { 0x00005369, 0x00031625 },
- { 0x0000536A, 0x00031625 },
- { 0x0000536B, 0x00031625 },
- { 0x0000536C, 0x00031625 },
- { 0x0000536D, 0x00031625 },
- { 0x000053A4, 0x00031625 },
- { 0x0000558A, 0x00031625 },
- { 0x00005485, 0x00031625 },
- { 0x00004EE7, 0x00031625 },
- { 0x00004EE8, 0x00031625 },
- { 0x0000530A, 0x00031625 },
- { 0x0000530B, 0x00031625 },
- { 0x000053F6, 0x00031625 },
- { 0x000053F7, 0x00031625 },
- { 0x000053F8, 0x00031625 },
- { 0x000053F9, 0x00031625 },
- { 0x000053FA, 0x00031625 },
- { 0x000053FB, 0x00031625 },
- { 0x000053FC, 0x00031625 },
- { 0x000053FD, 0x00031625 },
- { 0x0000556B, 0x00031041 },
- { 0x00005499, 0x00030D40 },
- { 0x000053E9, 0x00030E01 },
- { 0x000053EB, 0x00030E01 },
- { 0x000053EC, 0x00030E01 },
- { 0x000053ED, 0x00030E01 },
- { 0x000053EE, 0x00030E01 },
- { 0x000053EF, 0x00030E01 },
- { 0x000053F0, 0x00030E01 },
- { 0x000053F1, 0x00030E01 },
- { 0x000053F2, 0x00030E01 },
- { 0x000053EA, 0x00030E01 },
- { 0x00005441, 0x00030F00 },
- { 0x00005444, 0x00030F00 },
- { 0x00005445, 0x00030F00 },
- { 0x00005443, 0x00030F00 },
- { 0x00005446, 0x00030F00 },
- { 0x00005447, 0x00030F00 },
- { 0x00005448, 0x00030F00 },
- { 0x00005449, 0x00030F00 },
- { 0x0000544A, 0x00030F00 },
- { 0x0000544B, 0x00030F00 },
- { 0x00005442, 0x00030F00 },
- { 0x0000527C, 0x000315C8 },
- { 0x00000000, 0x00000000 }
+static const PreResponse BELLBOT_PRERESPONSES_DE[] = {
+ { 0x052e2, 0x30d40 },
+ { 0x054f1, 0x30d40 },
+ { 0x054f4, 0x30d40 },
+ { 0x054f8, 0x30d40 },
+ { 0x05332, 0x31625 },
+ { 0x05336, 0x31625 },
+ { 0x0536e, 0x31625 },
+ { 0x0536f, 0x31625 },
+ { 0x05370, 0x31625 },
+ { 0x05371, 0x31625 },
+ { 0x05372, 0x31625 },
+ { 0x05373, 0x31625 },
+ { 0x053ab, 0x31625 },
+ { 0x05592, 0x31625 },
+ { 0x0548c, 0x31625 },
+ { 0x04ee7, 0x31625 },
+ { 0x04ee8, 0x31625 },
+ { 0x05310, 0x31625 },
+ { 0x05311, 0x31625 },
+ { 0x053fd, 0x31625 },
+ { 0x053fe, 0x31625 },
+ { 0x053ff, 0x31625 },
+ { 0x05400, 0x31625 },
+ { 0x05401, 0x31625 },
+ { 0x05402, 0x31625 },
+ { 0x05403, 0x31625 },
+ { 0x05404, 0x31625 },
+ { 0x05573, 0x31041 },
+ { 0x054a1, 0x30d40 },
+ { 0x053f0, 0x30e01 },
+ { 0x053f2, 0x30e01 },
+ { 0x053f3, 0x30e01 },
+ { 0x053f4, 0x30e01 },
+ { 0x053f5, 0x30e01 },
+ { 0x053f6, 0x30e01 },
+ { 0x053f7, 0x30e01 },
+ { 0x053f8, 0x30e01 },
+ { 0x053f9, 0x30e01 },
+ { 0x053f1, 0x30e01 },
+ { 0x05448, 0x30f00 },
+ { 0x0544b, 0x30f00 },
+ { 0x0544c, 0x30f00 },
+ { 0x0544a, 0x30f00 },
+ { 0x0544d, 0x30f00 },
+ { 0x0544e, 0x30f00 },
+ { 0x0544f, 0x30f00 },
+ { 0x05450, 0x30f00 },
+ { 0x05451, 0x30f00 },
+ { 0x05452, 0x30f00 },
+ { 0x05449, 0x30f00 },
+ { 0x05282, 0x315c8 },
+ { 0x00000, 0x00000 }
};
void writeScriptPreResponses(const char *name, const PreResponse *states) {
@@ -151,6 +255,8 @@ void writeScriptPreResponses(const char *name, const PreResponse *states) {
}
void writeAllScriptPreResponses() {
- writeScriptPreResponses("PreResponses/Barbot", BARBOT_PRERESPONSES);
- writeScriptPreResponses("PreResponses/Bellbot", BELLBOT_PRERESPONSES);
+ writeScriptPreResponses("PreResponses/Barbot", BARBOT_PRERESPONSES_EN);
+ writeScriptPreResponses("PreResponses/Barbot/DE", BARBOT_PRERESPONSES_DE);
+ writeScriptPreResponses("PreResponses/Bellbot", BELLBOT_PRERESPONSES_EN);
+ writeScriptPreResponses("PreResponses/Bellbot/DE", BELLBOT_PRERESPONSES_DE);
}
diff --git a/engines/agi/sound_midi.cpp b/engines/agi/sound_midi.cpp
index 6998df6862..97dcc0d98b 100644
--- a/engines/agi/sound_midi.cpp
+++ b/engines/agi/sound_midi.cpp
@@ -169,7 +169,7 @@ static uint32 convertSND2MIDI(byte *snddata, byte **data) {
int n;
double ll;
- Common::MemoryWriteStreamDynamic st;
+ Common::MemoryWriteStreamDynamic st(DisposeAfterUse::NO);
ll = log10(pow(2.0, 1.0 / 12.0));
diff --git a/engines/agos/draw.cpp b/engines/agos/draw.cpp
index 4ba9446eb2..f7ceeb70c1 100644
--- a/engines/agos/draw.cpp
+++ b/engines/agos/draw.cpp
@@ -157,7 +157,7 @@ void AGOSEngine::animateSprites() {
}
if (getGameType() == GType_ELVIRA1 || getGameType() == GType_ELVIRA2) {
- const uint8 var = (getGameType() == GType_ELVIRA1) ? 293 : 71;
+ const uint var = (getGameType() == GType_ELVIRA1) ? 293 : 71;
if (_wallOn && !_variableArray[var]) {
_wallOn--;
diff --git a/engines/bbvs/minigames/bbant.cpp b/engines/bbvs/minigames/bbant.cpp
index 3c13ee5426..72c2d62b13 100644
--- a/engines/bbvs/minigames/bbant.cpp
+++ b/engines/bbvs/minigames/bbant.cpp
@@ -588,7 +588,7 @@ void MinigameBbAnt::insertBugSmokeObj(int x, int y, int bugObjIndex) {
obj->priority = 950;
if (bugObj->status >= 4 && (bugObj->status <= 6 || bugObj->status == 8)) {
obj->xIncr = 0;
- obj->yIncr = (-1 << 16);
+ obj->yIncr = -0x10000;
} else {
obj->xIncr = bugObj->xIncr / 8;
obj->yIncr = bugObj->yIncr / 8;
@@ -730,8 +730,8 @@ bool MinigameBbAnt::isBugOutOfScreen(int objIndex) {
Obj *obj = &_objects[objIndex];
return
- obj->x < (-10 << 16) || obj->x > (330 << 16) ||
- obj->y < (-10 << 16) || obj->y > (250 << 16);
+ obj->x < -0xa0000 || obj->x > (330 << 16) ||
+ obj->y < -0xa0000 || obj->y > (250 << 16);
}
void MinigameBbAnt::updateObjAnim3(int objIndex) {
@@ -931,7 +931,7 @@ void MinigameBbAnt::updateFootObj(int objIndex) {
case 1:
obj->xIncr = -0x8000;
- obj->yIncr = (-4 << 16);
+ obj->yIncr = -0x40000;
obj->status = 2;
_stompCounter1 += 5;
_stompCounter2 = 100;
diff --git a/engines/bladerunner/actor.cpp b/engines/bladerunner/actor.cpp
index c29956ca8b..3877947923 100644
--- a/engines/bladerunner/actor.cpp
+++ b/engines/bladerunner/actor.cpp
@@ -333,20 +333,6 @@ void Actor::movementTrackWaypointReached() {
}
}
-bool Actor::loopWalkToActor(int otherActorId, int destinationOffset, int a3, bool run, bool a5, bool *flagIsRunning) {
- return loopWalk(_vm->_actors[otherActorId]->_position, destinationOffset, a3, run, _position, 24.0f, 24.0f, a5, flagIsRunning, false);
-}
-
-bool Actor::loopWalkToItem(int itemId, int destinationOffset, int a3, bool run, bool a5, bool *flagIsRunning) {
- float x, y, z;
- int width, height;
- _vm->_items->getXYZ(itemId, &x, &y, &z);
- _vm->_items->getWidthHeight(itemId, &width, &height);
- Vector3 itemPosition(x, y, z);
-
- return loopWalk(itemPosition, destinationOffset, a3, run, _position, width, 24.0f, a5, flagIsRunning, false);
-}
-
void Actor::setAtXYZ(const Vector3 &position, int facing, bool snapFacing, bool moving, bool retired) {
_position = position;
setFacing(facing, snapFacing);
@@ -378,12 +364,19 @@ bool Actor::loopWalk(const Vector3 &destination, int destinationOffset, bool a3,
bool arrived;
_walkInfo->setup(_id, false, _position, destination, false, &arrived);
- for (;;) {
+ if (async) {
+ return false;
+ }
+ while (true) {
_vm->gameTick();
if (!_walkInfo->isWalking() && !_walkInfo->isRunning())
+ {
break;
+ }
if (!_vm->_gameIsRunning)
+ {
break;
+ }
}
return false;
} else {
@@ -481,8 +474,18 @@ bool Actor::walkTo(bool run, const Vector3 &destination, bool a3) {
return _walkInfo->setup(_id, run, _position, destination, a3, &arrived);
}
-bool Actor::loopWalkToXYZ(const Vector3 &destination, int destinationOffset, bool a3, bool run, bool a5, bool *flagIsRunning) {
- return loopWalk(destination, destinationOffset, a3, run, _position, 0.0f, 24.0f, a5, flagIsRunning, false);
+bool Actor::loopWalkToActor(int otherActorId, int destinationOffset, int a3, bool run, bool a5, bool *flagIsRunning) {
+ return loopWalk(_vm->_actors[otherActorId]->_position, destinationOffset, a3, run, _position, 24.0f, 24.0f, a5, flagIsRunning, false);
+}
+
+bool Actor::loopWalkToItem(int itemId, int destinationOffset, int a3, bool run, bool a5, bool *flagIsRunning) {
+ float x, y, z;
+ int width, height;
+ _vm->_items->getXYZ(itemId, &x, &y, &z);
+ _vm->_items->getWidthHeight(itemId, &width, &height);
+ Vector3 itemPosition(x, y, z);
+
+ return loopWalk(itemPosition, destinationOffset, a3, run, _position, width, 24.0f, a5, flagIsRunning, false);
}
bool Actor::loopWalkToSceneObject(const char *objectName, int destinationOffset, bool a3, bool run, bool a5, bool *flagIsRunning) {
@@ -536,6 +539,22 @@ bool Actor::loopWalkToWaypoint(int waypointId, int destinationOffset, int a3, bo
return loopWalk(waypointPosition, destinationOffset, a3, run, _position, 0.0f, 24.0f, a5, flagIsRunning, false);
}
+bool Actor::loopWalkToXYZ(const Vector3 &destination, int destinationOffset, bool a3, bool run, bool a5, bool *flagIsRunning) {
+ return loopWalk(destination, destinationOffset, a3, run, _position, 0.0f, 24.0f, a5, flagIsRunning, false);
+}
+
+bool Actor::asyncWalkToWaypoint(int waypointId, int destinationOffset, bool run, bool a5) {
+ bool flagIsRunning;
+ Vector3 waypointPosition;
+ _vm->_waypoints->getXYZ(waypointId, &waypointPosition.x, &waypointPosition.y, &waypointPosition.z);
+ return loopWalk(waypointPosition, destinationOffset, false, run, _position, 0.0f, 24.0f, a5, &flagIsRunning, true);
+}
+
+void Actor::asyncWalkToXYZ(const Vector3 &destination, int destinationOffset, bool run, int a6) {
+ bool flagIsRunning;
+ loopWalk(destination, destinationOffset, false, run, _position, 0.0f, 24.0f, a6, &flagIsRunning, true);
+}
+
bool Actor::tick(bool forceDraw, Common::Rect *screenRect) {
int remain = 0;
bool needsUpdate = false;
diff --git a/engines/bladerunner/actor.h b/engines/bladerunner/actor.h
index 0ff4723c9d..8c426bde68 100644
--- a/engines/bladerunner/actor.h
+++ b/engines/bladerunner/actor.h
@@ -147,6 +147,8 @@ public:
bool loopWalkToSceneObject(const char *objectName, int destinationOffset, bool a3, bool run, bool a5, bool *flagIsRunning);
bool loopWalkToWaypoint(int waypointId, int destinationOffset, int a3, bool run, bool a5, bool *flagIsRunning);
bool loopWalkToXYZ(const Vector3 &destination, int destinationOffset, bool a3, bool run, bool a5, bool *flagIsRunning);
+ bool asyncWalkToWaypoint(int waypointId, int destinationOffset, bool run, bool a5);
+ void asyncWalkToXYZ(const Vector3 &destination, int destinationOffset, bool run, int a6);
bool tick(bool forceUpdate, Common::Rect *screenRect);
bool draw(Common::Rect *screenRect);
diff --git a/engines/bladerunner/aud_stream.cpp b/engines/bladerunner/aud_stream.cpp
index c74421bbd0..6e7152a848 100644
--- a/engines/bladerunner/aud_stream.cpp
+++ b/engines/bladerunner/aud_stream.cpp
@@ -55,8 +55,9 @@ void AudStream::init(byte *data) {
}
AudStream::~AudStream() {
- if (_cache)
+ if (_cache) {
_cache->decRef(_hash);
+ }
}
int AudStream::readBuffer(int16 *buffer, const int numSamples) {
@@ -117,8 +118,7 @@ bool AudStream::rewind() {
return true;
}
-int AudStream::getLength()
-{
+int AudStream::getLength() {
int bytesPerSecond = _frequency;
if (_flags & 1) { // 16 bit
bytesPerSecond *= 2;
diff --git a/engines/bladerunner/audio_mixer.cpp b/engines/bladerunner/audio_mixer.cpp
index 0bd7b04b89..d9d04e65d9 100644
--- a/engines/bladerunner/audio_mixer.cpp
+++ b/engines/bladerunner/audio_mixer.cpp
@@ -30,29 +30,30 @@
#include "common/timer.h"
namespace BladeRunner {
+
AudioMixer::AudioMixer(BladeRunnerEngine *vm):
_vm(vm)
{
- for (int i = 0; i < kAudioMixerChannels; i++) {
+ for (int i = 0; i < kChannels; i++) {
_channels[i].isPresent = false;
}
- _vm->getTimerManager()->installTimerProc(timerCallback, 25 * 1000 , this, "BladeRunnerAudioMixerTimer");
+ _vm->getTimerManager()->installTimerProc(timerCallback, (1000 / kUpdatesPerSecond) * 1000 , this, "BladeRunnerAudioMixerTimer");
}
AudioMixer::~AudioMixer() {
- for (int i = 0; i < kAudioMixerChannels; i++) {
+ for (int i = 0; i < kChannels; i++) {
stop(i, 0);
}
_vm->getTimerManager()->removeTimerProc(timerCallback);
}
-int AudioMixer::playStream(Audio::Mixer::SoundType type, Audio::RewindableAudioStream *stream, int priority, bool loop, int volume, int pan, void (*endCallback)(int, void*), void *callbackData) {
+int AudioMixer::play(Audio::Mixer::SoundType type, Audio::RewindableAudioStream *stream, int priority, bool loop, int volume, int pan, void (*endCallback)(int, void*), void *callbackData) {
Common::StackLock lock(_mutex);
int channel = -1;
int lowestPriority = 1000000;
int lowestPriorityChannel = -1;
- for (int i = 0; i < kAudioMixerChannels; i++) {
+ for (int i = 0; i < kUsableChannels; i++) {
if (!_channels[i].isPresent) {
channel = i;
break;
@@ -70,6 +71,32 @@ int AudioMixer::playStream(Audio::Mixer::SoundType type, Audio::RewindableAudioS
channel = lowestPriorityChannel;
}
+ return playInChannel(channel, type, stream, priority, loop, volume, pan, endCallback, callbackData);
+}
+
+int AudioMixer::playMusic(Audio::RewindableAudioStream *stream, int volume, void(*endCallback)(int, void *), void *callbackData) {
+ Common::StackLock lock(_mutex);
+
+ return playInChannel(kMusicChannel, Audio::Mixer::kMusicSoundType, stream, 100, false, volume, 0, endCallback, callbackData);
+}
+
+void AudioMixer::stop(int channel, int time) {
+ Common::StackLock lock(_mutex);
+
+ if (_channels[channel].isPresent) {
+ if (time) {
+ adjustVolume(channel, 0, time);
+ } else {
+ _channels[channel].isPresent = false;
+ _vm->_mixer->stopHandle(_channels[channel].handle);
+ if (_channels[channel].endCallback != nullptr) {
+ _channels[channel].endCallback(channel, _channels[channel].callbackData);
+ }
+ }
+ }
+}
+
+int AudioMixer::playInChannel(int channel, Audio::Mixer::SoundType type, Audio::RewindableAudioStream *stream, int priority, bool loop, int volume, int pan, void(*endCallback)(int, void *), void *callbackData) {
_channels[channel].isPresent = true;
_channels[channel].stream = stream;
_channels[channel].priority = priority;
@@ -83,7 +110,6 @@ int AudioMixer::playStream(Audio::Mixer::SoundType type, Audio::RewindableAudioS
_channels[channel].endCallback = endCallback;
_channels[channel].callbackData = callbackData;
-
Audio::AudioStream* audioStream = stream;
if (loop) {
@@ -101,22 +127,6 @@ int AudioMixer::playStream(Audio::Mixer::SoundType type, Audio::RewindableAudioS
return channel;
}
-void AudioMixer::stop(int channel, int time) {
- Common::StackLock lock(_mutex);
-
- if (_channels[channel].isPresent) {
- if (time) {
- adjustVolume(channel, 0, time);
- } else {
- _channels[channel].isPresent = false;
- _vm->_mixer->stopHandle(_channels[channel].handle);
- if (_channels[channel].endCallback != nullptr) {
- _channels[channel].endCallback(channel, _channels[channel].callbackData);
- }
- }
- }
-}
-
bool AudioMixer::isActive(int channel) {
Common::StackLock lock(_mutex);
@@ -133,7 +143,7 @@ void AudioMixer::adjustVolume(int channel, int newVolume, int time)
if (_channels[channel].isPresent) {
_channels[channel].volumeTarget = newVolume;
- _channels[channel].volumeDelta = ((newVolume - _channels[channel].volume) / (time / 60.0f)) / 40.0f;
+ _channels[channel].volumeDelta = ((newVolume - _channels[channel].volume) / (time / 60.0f)) / (float)kUpdatesPerSecond;
}
}
@@ -144,7 +154,7 @@ void AudioMixer::adjustPan(int channel, int newPan, int time)
if (_channels[channel].isPresent) {
newPan = CLIP(newPan, -100, 100);
_channels[channel].panTarget = newPan;
- _channels[channel].panDelta = ((newPan - _channels[channel].pan) / (time / 60.0f)) / 40.0f;
+ _channels[channel].panDelta = ((newPan - _channels[channel].pan) / (time / 60.0f)) / (float)kUpdatesPerSecond;
}
}
@@ -152,7 +162,7 @@ void AudioMixer::tick()
{
Common::StackLock lock(_mutex);
- for (int i = 0; i < kAudioMixerChannels; i++) {
+ for (int i = 0; i < kChannels; i++) {
Channel *channel = &_channels[i];
if (!channel->isPresent) {
continue;
diff --git a/engines/bladerunner/audio_mixer.h b/engines/bladerunner/audio_mixer.h
index 75a0f08201..a221e681ec 100644
--- a/engines/bladerunner/audio_mixer.h
+++ b/engines/bladerunner/audio_mixer.h
@@ -33,7 +33,10 @@ namespace BladeRunner {
class BladeRunnerEngine;
class AudioMixer {
- static const int kAudioMixerChannels = 9;
+ static const int kChannels = 9;
+ static const int kUsableChannels = 8;
+ static const int kMusicChannel = 8;
+ static const int kUpdatesPerSecond = 40;
struct Channel {
bool isPresent;
@@ -53,14 +56,15 @@ class AudioMixer {
BladeRunnerEngine *_vm;
- Channel _channels[kAudioMixerChannels];
+ Channel _channels[kChannels];
Common::Mutex _mutex;
public:
AudioMixer(BladeRunnerEngine *vm);
~AudioMixer();
- int playStream(Audio::Mixer::SoundType type, Audio::RewindableAudioStream *stream, int priority, bool loop, int volume, int pan, void(*onEndCallback)(int, void *), void *callbackData);
+ int play(Audio::Mixer::SoundType type, Audio::RewindableAudioStream *stream, int priority, bool loop, int volume, int pan, void(*endCallback)(int, void *), void *callbackData);
+ int playMusic(Audio::RewindableAudioStream *stream, int volume, void(*endCallback)(int, void *), void *callbackData);
void stop(int channel, int delay);
void adjustVolume(int channel, int newVolume, int time);
@@ -70,6 +74,8 @@ public:
void pause(int channel, int delay);
private:
+ int playInChannel(int channel, Audio::Mixer::SoundType type, Audio::RewindableAudioStream *stream, int priority, bool loop, int volume, int pan, void(*endCallback)(int, void *), void *callbackData);
+
bool isActive(int channel);
void tick();
static void timerCallback(void *refCon);
diff --git a/engines/bladerunner/audio_player.cpp b/engines/bladerunner/audio_player.cpp
index f5ba83c4b3..1e459e9b86 100644
--- a/engines/bladerunner/audio_player.cpp
+++ b/engines/bladerunner/audio_player.cpp
@@ -130,6 +130,9 @@ AudioPlayer::AudioPlayer(BladeRunnerEngine *vm) : _vm(vm) {
for (int i = 0; i != 6; ++i) {
_tracks[i].hash = 0;
_tracks[i].priority = 0;
+ _tracks[i].isActive = false;
+ _tracks[i].channel = -1;
+ _tracks[i].stream = nullptr;
}
_sfxVolume = 65;
@@ -174,12 +177,6 @@ void AudioPlayer::adjustPan(int track, int pan, int delay) {
_vm->_audioMixer->adjustPan(_tracks[track].channel, pan, 60 * delay);
}
-//void AudioPlayer::tick() {
-// for (int i = 0; i != 6; ++i) {
-// Track *ti = &_tracks[i];
-// }
-//}
-
void AudioPlayer::remove(int channel) {
Common::StackLock lock(_mutex);
for (int i = 0; i != kTracks; ++i) {
@@ -187,7 +184,7 @@ void AudioPlayer::remove(int channel) {
_tracks[i].isActive = false;
_tracks[i].priority = 0;
_tracks[i].channel = -1;
- //_cache->decRef(_tracks[i].hash);
+ _tracks[i].stream = nullptr;
break;
}
}
@@ -257,7 +254,7 @@ int AudioPlayer::playAud(const Common::String &name, int volume, int panFrom, in
// debug("PlayStream: %s", name.c_str());
- int channel = _vm->_audioMixer->playStream(
+ int channel = _vm->_audioMixer->play(
Audio::Mixer::kPlainSoundType,
audioStream,
priority,
@@ -268,6 +265,8 @@ int AudioPlayer::playAud(const Common::String &name, int volume, int panFrom, in
this);
if (channel == -1) {
+ delete audioStream;
+ _cache->decRef(hash);
return -1;
}
@@ -280,6 +279,7 @@ int AudioPlayer::playAud(const Common::String &name, int volume, int panFrom, in
_tracks[track].priority = priority;
_tracks[track].hash = hash;
_tracks[track].volume = actualVolume;
+ _tracks[track].stream = audioStream;
return track;
}
diff --git a/engines/bladerunner/audio_player.h b/engines/bladerunner/audio_player.h
index c573c64840..4934b43871 100644
--- a/engines/bladerunner/audio_player.h
+++ b/engines/bladerunner/audio_player.h
@@ -26,6 +26,7 @@
#include "common/array.h"
#include "common/mutex.h"
#include "common/str.h"
+#include "audio/audiostream.h"
namespace BladeRunner {
@@ -72,12 +73,13 @@ class AudioPlayer {
static const int kTracks = 6;
struct Track {
- bool isActive;
- int channel;
- int priority;
- int32 hash;
- int volume;
- int pan;
+ bool isActive;
+ int channel;
+ int priority;
+ int32 hash;
+ int volume;
+ int pan;
+ Audio::AudioStream *stream;
Track() : isActive(false) {}
};
diff --git a/engines/bladerunner/audio_speech.cpp b/engines/bladerunner/audio_speech.cpp
index 7177cf0f9c..90fc213f2d 100644
--- a/engines/bladerunner/audio_speech.cpp
+++ b/engines/bladerunner/audio_speech.cpp
@@ -82,7 +82,7 @@ bool AudioSpeech::playSpeech(const char *name, int pan) {
// TODO: shorty mode - set rate of sound to 33khz
- _channel = _vm->_audioMixer->playStream(
+ _channel = _vm->_audioMixer->play(
Audio::Mixer::kSpeechSoundType,
audioStream,
100,
diff --git a/engines/bladerunner/bladerunner.cpp b/engines/bladerunner/bladerunner.cpp
index 121ad8128e..1d29bde75f 100644
--- a/engines/bladerunner/bladerunner.cpp
+++ b/engines/bladerunner/bladerunner.cpp
@@ -24,7 +24,6 @@
#include "bladerunner/actor.h"
#include "bladerunner/adq.h"
-#include "bladerunner/aesc.h"
#include "bladerunner/ambient_sounds.h"
#include "bladerunner/audio_mixer.h"
#include "bladerunner/audio_player.h"
@@ -42,12 +41,14 @@
#include "bladerunner/items.h"
#include "bladerunner/lights.h"
#include "bladerunner/mouse.h"
+#include "bladerunner/music.h"
#include "bladerunner/outtake.h"
#include "bladerunner/obstacles.h"
#include "bladerunner/overlays.h"
#include "bladerunner/regions.h"
#include "bladerunner/scene.h"
#include "bladerunner/scene_objects.h"
+#include "bladerunner/screen_effects.h"
#include "bladerunner/script/init.h"
#include "bladerunner/script/scene.h"
#include "bladerunner/script/ai.h"
@@ -86,7 +87,7 @@ BladeRunnerEngine::BladeRunnerEngine(OSystem *syst)
_sceneScript = new SceneScript(this);
_settings = new Settings(this);
_lights = new Lights(this);
- _aesc = new AESC(this, 0x8000);
+ _screenEffects = new ScreenEffects(this, 0x8000);
_combat = new Combat(this);
_adq = new ADQ(this);
_obstacles = new Obstacles(this);
@@ -126,7 +127,7 @@ BladeRunnerEngine::~BladeRunnerEngine() {
delete _obstacles;
delete _adq;
delete _combat;
- delete _aesc;
+ delete _screenEffects;
delete _lights;
delete _settings;
delete _sceneScript;
@@ -219,7 +220,7 @@ bool BladeRunnerEngine::startup(bool hasSavegames) {
_audioPlayer = new AudioPlayer(this);
- // TODO: Audio: Music
+ _music = new Music(this);
_audioSpeech = new AudioSpeech(this);
@@ -341,7 +342,7 @@ bool BladeRunnerEngine::startup(bool hasSavegames) {
}
_sliceRenderer = new SliceRenderer(this);
- _sliceRenderer->setAESC(_aesc);
+ _sliceRenderer->setScreenEffects(_screenEffects);
_crimesDatabase = new CrimesDatabase(this, "CLUES", _gameInfo->getClueCount());
@@ -376,6 +377,7 @@ void BladeRunnerEngine::initChapterAndScene() {
_settings->setChapter(1);
_settings->setNewSetAndScene(_gameInfo->getInitialSetId(), _gameInfo->getInitialSceneId());
+// _settings->setNewSetAndScene(52, 52);
}
void BladeRunnerEngine::shutdown() {
@@ -435,29 +437,38 @@ void BladeRunnerEngine::shutdown() {
delete _textOptions;
_textOptions = nullptr;
- // TODO: Delete dialogue menu
+ delete _dialogueMenu;
+ _dialogueMenu = nullptr;
delete _ambientSounds;
+ _ambientSounds = nullptr;
delete _overlays;
_overlays = nullptr;
delete _audioSpeech;
+ _audioSpeech = nullptr;
- // TODO: Delete Audio: Music
+ delete _music;
+ _music = nullptr;
delete _audioPlayer;
+ _audioPlayer = nullptr;
delete _audioMixer;
+ _audioMixer = nullptr;
- if (isArchiveOpen("MUSIC.MIX"))
+ if (isArchiveOpen("MUSIC.MIX")) {
closeArchive("MUSIC.MIX");
+ }
- if (isArchiveOpen("SFX.MIX"))
+ if (isArchiveOpen("SFX.MIX")) {
closeArchive("SFX.MIX");
+ }
- if (isArchiveOpen("SPCHSFX.TLK"))
+ if (isArchiveOpen("SPCHSFX.TLK")) {
closeArchive("SPCHSFX.TLK");
+ }
if (_mainFont) {
_mainFont->close();
@@ -528,8 +539,9 @@ void BladeRunnerEngine::shutdown() {
_surfaceInterface.free();
_surfaceGame.free();
- if (isArchiveOpen("STARTUP.MIX"))
+ if (isArchiveOpen("STARTUP.MIX")) {
closeArchive("STARTUP.MIX");
+ }
// TODO: Delete MIXArchives here
@@ -538,8 +550,9 @@ void BladeRunnerEngine::shutdown() {
bool BladeRunnerEngine::loadSplash() {
Image img(this);
- if (!img.open("SPLASH.IMG"))
+ if (!img.open("SPLASH.IMG")) {
return false;
+ }
img.copyToSurface(&_surfaceGame);
@@ -666,7 +679,11 @@ void BladeRunnerEngine::gameTick() {
int setId = _scene->getSetId();
for (int i = 0, end = _gameInfo->getActorCount(); i != end; ++i) {
if (_actors[i]->getSetId() == setId) {
- if (i == 0 || i == 15 || i == 23) { // Currently limited to McCoy, Runciter and Officer Leroy
+ // TODO: remove this limitation
+ if (i == kActorMcCoy
+ || i == kActorRunciter
+ || i == kActorOfficerLeary
+ || i == kActorMaggie) {
Common::Rect screenRect;
if (_actors[i]->tick(backgroundChanged, &screenRect)) {
_zbuffer->mark(screenRect);
@@ -811,8 +828,8 @@ void BladeRunnerEngine::gameTick() {
#endif
#if 0
//draw aesc
- for (uint i = 0; i < _aesc->_entries.size(); i++) {
- AESC::Entry &entry = _aesc->_entries[i];
+ for (uint i = 0; i < _screenEffects->_entries.size(); i++) {
+ ScreenEffects::Entry &entry = _screenEffects->_entries[i];
int j = 0;
for (int y = 0; y < entry.height; y++) {
for (int x = 0; x < entry.width; x++) {
@@ -930,13 +947,13 @@ void BladeRunnerEngine::handleMouseAction(int x, int y, bool buttonLeft, bool bu
}
if (buttonLeft && !buttonDown) {
- Vector3 mousePosition = _mouse->getXYZ(x, y);
+ Vector3 scenePosition = _mouse->getXYZ(x, y);
int isClickable;
int isObstacle;
int isTarget;
- int sceneObjectId = _sceneObjects->findByXYZ(&isClickable, &isObstacle, &isTarget, mousePosition.x, mousePosition.y, mousePosition.z, true, false, true);
+ int sceneObjectId = _sceneObjects->findByXYZ(&isClickable, &isObstacle, &isTarget, scenePosition.x, scenePosition.y, scenePosition.z, true, false, true);
int exitIndex = _scene->_exits->getRegionAtXY(x, y);
if ((sceneObjectId < 0 || sceneObjectId > 73) && exitIndex >= 0) {
@@ -951,9 +968,7 @@ void BladeRunnerEngine::handleMouseAction(int x, int y, bool buttonLeft, bool bu
}
if (sceneObjectId == -1) {
- bool isRunning;
- _playerActor->loopWalkToXYZ(mousePosition, 0, false, false, false, &isRunning);
- debug("Clicked on nothing %f, %f, %f", mousePosition.x, mousePosition.y, mousePosition.z);
+ handleMouseClickEmpty(x, y, scenePosition);
return;
} else if (sceneObjectId >= 0 && sceneObjectId <= 73) {
handleMouseClickActor(x, y, sceneObjectId);
@@ -966,10 +981,13 @@ void BladeRunnerEngine::handleMouseAction(int x, int y, bool buttonLeft, bool bu
return;
}
}
+ if (!buttonLeft && buttonDown) {
+ // TODO: stop walking && switch combat mode
+ }
+
}
void BladeRunnerEngine::handleMouseClickExit(int x, int y, int exitIndex) {
- // clickedOnExit(exitType, x, y);
debug("clicked on exit %d %d %d", exitIndex, x, y);
_sceneScript->ClickedOnExit(exitIndex);
}
@@ -985,6 +1003,19 @@ void BladeRunnerEngine::handleMouseClick3DObject(int x, int y, int objectId, boo
_sceneScript->ClickedOn3DObject(objectName, false);
}
+void BladeRunnerEngine::handleMouseClickEmpty(int x, int y, Vector3 &mousePosition) {
+ bool sceneMouseClick = _sceneScript->MouseClick(x, y);
+
+ if (sceneMouseClick) {
+ return;
+ }
+
+
+ bool isRunning;
+ debug("Clicked on nothing %f, %f, %f", mousePosition.x, mousePosition.y, mousePosition.z);
+ _playerActor->loopWalkToXYZ(mousePosition, 0, false, false, false, &isRunning);
+}
+
void BladeRunnerEngine::handleMouseClickItem(int x, int y, int itemId) {
debug("Clicked on item %d", itemId);
_sceneScript->ClickedOnItem(itemId, false);
@@ -992,7 +1023,10 @@ void BladeRunnerEngine::handleMouseClickItem(int x, int y, int itemId) {
void BladeRunnerEngine::handleMouseClickActor(int x, int y, int actorId) {
debug("Clicked on actor %d", actorId);
- _sceneScript->ClickedOnActor(actorId);
+ bool t = _sceneScript->ClickedOnActor(actorId);
+ if (!_combat->isActive() && !t) {
+ _aiScripts->ClickedByPlayer(actorId);
+ }
}
void BladeRunnerEngine::gameWaitForActive() {
@@ -1072,14 +1106,16 @@ bool BladeRunnerEngine::isArchiveOpen(const Common::String &name) {
Common::SeekableReadStream *BladeRunnerEngine::getResourceStream(const Common::String &name) {
for (uint i = 0; i != 10; ++i) {
- if (!_archives[i].isOpen())
+ if (!_archives[i].isOpen()) {
continue;
-
- if (false)
+ }
+ if (false) {
debug("getResource: Searching archive %s for %s.", _archives[i].getName().c_str(), name.c_str());
+ }
Common::SeekableReadStream *stream = _archives[i].createReadStreamForMember(name);
- if (stream)
+ if (stream) {
return stream;
+ }
}
debug("getResource: Resource %s not found.", name.c_str());
diff --git a/engines/bladerunner/bladerunner.h b/engines/bladerunner/bladerunner.h
index 066937ca38..7ed3fb4af3 100644
--- a/engines/bladerunner/bladerunner.h
+++ b/engines/bladerunner/bladerunner.h
@@ -48,9 +48,16 @@ enum AnimationModes {
kAnimationModeCombatRun = 8
};
+enum SceneLoopMode {
+ kSceneLoopModeLoseControl = 0,
+ kSceneLoopModeChangeSet = 1,
+ kSceneLoopMode2 = 2,
+ kSceneLoopModeSpinner = 3
+};
+
class Actor;
class ADQ;
-class AESC;
+class ScreenEffects;
class AIScripts;
class AmbientSounds;
class AudioMixer;
@@ -68,6 +75,7 @@ class ItemPickup;
class Items;
class Lights;
class Mouse;
+class Music;
class Obstacles;
class Overlays;
class Scene;
@@ -80,6 +88,7 @@ class SliceRenderer;
class Spinner;
class SuspectsDatabase;
class TextResource;
+class Vector3;
class View;
class Waypoints;
class ZBuffer;
@@ -94,7 +103,7 @@ public:
int _playerLosesControlCounter;
ADQ *_adq;
- AESC *_aesc;
+ ScreenEffects *_screenEffects;
AIScripts *_aiScripts;
AmbientSounds *_ambientSounds;
AudioMixer *_audioMixer;
@@ -112,6 +121,7 @@ public:
Lights *_lights;
Font *_mainFont;
Mouse *_mouse;
+ Music *_music;
Obstacles *_obstacles;
Overlays *_overlays;
Scene *_scene;
@@ -194,6 +204,7 @@ public:
void handleMouseClickItem(int x, int y, int itemId);
void handleMouseClickActor(int x, int y, int actorId);
void handleMouseClick3DObject(int x, int y, int objectId, bool isClickable, bool isTarget);
+ void handleMouseClickEmpty(int x, int y, Vector3 &mousePosition);
void gameWaitForActive();
void loopActorSpeaking();
diff --git a/engines/bladerunner/module.mk b/engines/bladerunner/module.mk
index 711ddd3346..89419d41d0 100644
--- a/engines/bladerunner/module.mk
+++ b/engines/bladerunner/module.mk
@@ -2,7 +2,6 @@ MODULE := engines/bladerunner
MODULE_OBJS = \
adq.o \
- aesc.o \
actor.o \
actor_clues.o \
actor_combat.o \
@@ -37,22 +36,25 @@ MODULE_OBJS = \
matrix.o \
mouse.o \
movement_track.o \
+ music.o \
obstacles.o \
outtake.o \
overlays.o \
regions.o \
scene.o \
scene_objects.o \
+ screen_effects.o \
script/script.o \
script/init.o \
script/kia.o \
script/vk.o \
script/esper.o \
script/ai.o \
+ script/ai/leon.o \
+ script/ai/maggie.o \
script/ai/mccoy.o \
- script/ai/runciter.o \
script/ai/officer_leary.o \
- script/ai/leon.o \
+ script/ai/runciter.o \
script/scene.o \
script/scene/ar01.o \
script/scene/ar02.o \
diff --git a/engines/bladerunner/mouse.cpp b/engines/bladerunner/mouse.cpp
index 42d6ffef09..8293cbc59c 100644
--- a/engines/bladerunner/mouse.cpp
+++ b/engines/bladerunner/mouse.cpp
@@ -23,6 +23,7 @@
#include "bladerunner/mouse.h"
#include "bladerunner/bladerunner.h"
+#include "bladerunner/dialogue_menu.h"
#include "bladerunner/regions.h"
#include "bladerunner/scene.h"
#include "bladerunner/scene_objects.h"
@@ -255,8 +256,14 @@ void Mouse::updateCursorFrame() {
}
void Mouse::tick(int x, int y) {
- if (!_vm->playerHasControl() || isDisabled())
+ if (!_vm->playerHasControl() || isDisabled()) {
return;
+ }
+
+ if (_vm->_dialogueMenu->isVisible()) {
+ setCursor(0);
+ return;
+ }
Vector3 mousePosition = getXYZ(x, y);
int cursorId = 0;
diff --git a/engines/bladerunner/music.cpp b/engines/bladerunner/music.cpp
new file mode 100644
index 0000000000..6b7a733338
--- /dev/null
+++ b/engines/bladerunner/music.cpp
@@ -0,0 +1,229 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * 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 source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "bladerunner/music.h"
+
+#include "bladerunner/audio_mixer.h"
+#include "bladerunner/aud_stream.h"
+#include "bladerunner/bladerunner.h"
+
+#include "common/timer.h"
+
+namespace BladeRunner {
+
+Music::Music(BladeRunnerEngine *vm)
+ : _vm(vm) {
+ _channel = -1;
+ _volume = 65;
+ _isPlaying = false;
+ _isPaused = false;
+ _current.loop = false;
+ _isNextPresent = false;
+ _data = nullptr;
+ _stream = nullptr;
+}
+
+Music::~Music() {
+ stop(1);
+ while (isPlaying()) {
+ // wait for the mixer to finish
+ }
+
+ _vm->getTimerManager()->removeTimerProc(timerCallbackFadeOut);
+ _vm->getTimerManager()->removeTimerProc(timerCallbackNext);
+}
+
+bool Music::play(const char *trackName, int volume, int pan, int timeFadeIn, int timePlay, int loop, int timeFadeOut) {
+ //Common::StackLock lock(_mutex);
+
+ if (_volume <= 0) {
+ return false;
+ }
+
+ int volumeAdjusted = volume * _volume / 100;
+ int volumeStart = volumeAdjusted;
+ if (timeFadeIn > 0) {
+ volumeStart = 1;
+ }
+
+ if (isPlaying()) {
+ if (!_current.name.equalsIgnoreCase(trackName)) {
+ _next.name = trackName;
+ _next.volume = volume;
+ _next.pan = pan;
+ _next.timeFadeIn = timeFadeIn;
+ _next.timePlay = timePlay;
+ _next.loop = loop;
+ _next.timeFadeOut = timeFadeOut;
+ if (_isNextPresent) {
+ stop(2);
+ }
+ _isNextPresent = true;
+ } else {
+ _current.loop = loop;
+ adjustVolume(volumeAdjusted, timeFadeIn);
+ adjustPan(volumeAdjusted, timeFadeIn);
+ }
+ return true;
+ }
+
+ _data = getData(trackName);
+ if (_data == nullptr) {
+ return false;
+ }
+ _stream = new AudStream(_data);
+
+ _isNextPresent = false;
+ _channel = _vm->_audioMixer->playMusic(_stream, volumeStart, mixerChannelEnded, this);
+ if (_channel < 0) {
+ delete _stream;
+ _stream = nullptr;
+ delete _data;
+ _data = nullptr;
+
+ return false;
+ }
+ if (timeFadeIn > 0) {
+ adjustVolume(volumeAdjusted, timeFadeIn);
+ }
+ _current.name = trackName;
+ if (timePlay > 0) {
+ _vm->getTimerManager()->installTimerProc(timerCallbackFadeOut, timePlay * 1000 * 1000, this, "BladeRunnerMusicFadeoutTimer");
+ } else if (timeFadeOut > 0) {
+ _vm->getTimerManager()->installTimerProc(timerCallbackFadeOut, (_stream->getLength() - timeFadeOut * 1000) * 1000, this, "BladeRunnerMusicFadeoutTimer");
+ }
+ _isPlaying = true;
+ _current.volume = volume;
+ _current.pan = pan;
+ _current.timeFadeIn = timeFadeIn;
+ _current.timePlay = timePlay;
+ _current.loop = loop;
+ _current.timeFadeOut = timeFadeOut;
+ return true;
+}
+
+void Music::stop(int delay) {
+ Common::StackLock lock(_mutex);
+
+ if (_channel < 0) {
+ return;
+ }
+
+ _current.loop = false;
+ _vm->_audioMixer->stop(_channel, 60 * delay);
+}
+
+void Music::adjust(int volume, int pan, int delay) {
+ if (volume != -1) {
+ adjustVolume(_volume * volume/ 100, delay);
+ }
+ if (pan != -101) {
+ adjustPan(pan, delay);
+ }
+}
+
+bool Music::isPlaying() {
+ return _channel >= 0 && _isPlaying;
+}
+
+void Music::setVolume(int volume) {
+ _volume = volume;
+ if (volume <= 0) {
+ stop(2);
+ } else if (isPlaying()) {
+ _vm->_audioMixer->adjustVolume(_channel, _volume * _current.volume / 100, 120);
+ }
+}
+
+void Music::adjustVolume(int volume, int delay) {
+ if (_channel >= 0) {
+ _vm->_audioMixer->adjustVolume(_channel, volume, delay);
+ }
+}
+
+void Music::adjustPan(int pan, int delay) {
+ if (_channel >= 0) {
+ _vm->_audioMixer->adjustPan(_channel, pan, delay);
+ }
+}
+
+void Music::ended() {
+ Common::StackLock lock(_mutex);
+
+ _isPlaying = false;
+ _channel = -1;
+
+ delete _data;
+ _data = nullptr;
+
+ _vm->getTimerManager()->installTimerProc(timerCallbackNext, 100 * 1000, this, "BladeRunnerMusicNextTimer");
+}
+
+void Music::fadeOut() {
+ _vm->getTimerManager()->removeTimerProc(timerCallbackFadeOut);
+ if (_channel >= 0) {
+ _vm->_audioMixer->stop(_channel, 60 * _current.timeFadeOut);
+ }
+}
+
+void Music::next() {
+ _vm->getTimerManager()->removeTimerProc(timerCallbackNext);
+
+ if (_isNextPresent) {
+ if (_isPaused) {
+ _vm->getTimerManager()->installTimerProc(timerCallbackNext, 2000 * 1000, this, "BladeRunnerMusicNextTimer");
+ } else {
+ play(_next.name.c_str(), _next.volume, _next.pan, _next.timeFadeIn, _next.timePlay, _next.loop, _next.timeFadeOut);
+ }
+ _current.loop = false;
+ } else if (_current.loop) {
+ play(_current.name.c_str(), _current.volume, _current.pan, _current.timeFadeIn, _current.timePlay, _current.loop, _current.timeFadeOut);
+ }
+}
+
+void Music::mixerChannelEnded(int channel, void *data) {
+ if (data != nullptr) {
+ ((Music *)data)->ended();
+ }
+}
+
+void Music::timerCallbackFadeOut(void *refCon) {
+ ((Music *)refCon)->fadeOut();
+}
+
+void Music::timerCallbackNext(void *refCon) {
+ ((Music *)refCon)->next();
+}
+
+byte *Music::getData(const char *name) {
+ // NOTE: This is not part original game, loading data is done in the mixer and its using buffering to limit memory usage
+ Common::SeekableReadStream *stream = _vm->getResourceStream(name);
+ if (stream == nullptr) {
+ return nullptr;
+ }
+ uint32 size = stream->size();
+ byte *data = (byte *)malloc(size);
+ stream->read(data, size);
+ return data;
+}
+
+} // End of namespace BladeRunner
diff --git a/engines/bladerunner/music.h b/engines/bladerunner/music.h
new file mode 100644
index 0000000000..3dcf969a8a
--- /dev/null
+++ b/engines/bladerunner/music.h
@@ -0,0 +1,86 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * 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 source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef BLADERUNNER_MUSIC_H
+#define BLADERUNNER_MUSIC_H
+
+#include "common/mutex.h"
+#include "common/str.h"
+
+namespace BladeRunner {
+
+class AudStream;
+class BladeRunnerEngine;
+
+class Music {
+ struct Track {
+ Common::String name;
+ int volume;
+ int pan;
+ int timeFadeIn;
+ int timePlay;
+ int loop;
+ int timeFadeOut;
+ };
+
+ BladeRunnerEngine *_vm;
+
+ Common::Mutex _mutex;
+ int _volume;
+ int _channel;
+ int _isNextPresent;
+ int _isPlaying;
+ int _isPaused;
+ Track _current;
+ Track _next;
+ byte *_data;
+ AudStream *_stream;
+
+public:
+ Music(BladeRunnerEngine *vm);
+ ~Music();
+
+ bool play(const char *trackName, int volume, int pan, int timeFadeIn, int timePlay, int loop, int timeFadeOut);
+ void stop(int delay);
+ void adjust(int volume, int pan, int delay);
+ bool isPlaying();
+
+ void setVolume(int volume);
+
+private:
+ void adjustVolume(int volume, int delay);
+ void adjustPan(int pan, int delay);
+
+ void ended();
+ void fadeOut();
+ void next();
+
+ static void mixerChannelEnded(int channel, void *data);
+ static void timerCallbackFadeOut(void *refCon);
+ static void timerCallbackNext(void *refCon);
+
+ byte *getData(const char* name);
+};
+
+} // End of namespace BladeRunner
+
+#endif
diff --git a/engines/bladerunner/overlays.cpp b/engines/bladerunner/overlays.cpp
index dddf677c53..6e94b291e5 100644
--- a/engines/bladerunner/overlays.cpp
+++ b/engines/bladerunner/overlays.cpp
@@ -56,7 +56,7 @@ Overlays::~Overlays() {
reset();
}
-int Overlays::play(const Common::String &name, int loopId, int loopForever, int a5, int a6) {
+int Overlays::play(const Common::String &name, int loopId, int loopForever, int startNow, int a6) {
int id = mix_id(name);
int index = findById(id);
if (index < 0) {
@@ -77,7 +77,7 @@ int Overlays::play(const Common::String &name, int loopId, int loopForever, int
_videos[index].vqaPlayer->setLoop(
loopId,
loopForever ? -1 : 0,
- a5 ? kLoopSetModeImmediate : kLoopSetModeEnqueue,
+ startNow ? kLoopSetModeImmediate : kLoopSetModeEnqueue,
nullptr, nullptr);
return index;
@@ -91,6 +91,14 @@ void Overlays::remove(const Common::String &name) {
}
}
+void Overlays::removeAll() {
+ for (int i = 0; i < kOverlayVideos; ++i) {
+ if (_videos[i].loaded) {
+ resetSingle(i);
+ }
+ }
+}
+
void Overlays::tick() {
for (int i = 0; i < kOverlayVideos; ++i) {
if (_videos[i].loaded) {
@@ -131,14 +139,6 @@ void Overlays::resetSingle(int i) {
_videos[i].field2 = -1;
}
-void Overlays::resetAll() {
- for (int i = 0; i < kOverlayVideos; ++i) {
- if (_videos[i].loaded) {
- resetSingle(i);
- }
- }
-}
-
void Overlays::reset() {
_videos.clear();
}
diff --git a/engines/bladerunner/overlays.h b/engines/bladerunner/overlays.h
index 9be515e036..f547253269 100644
--- a/engines/bladerunner/overlays.h
+++ b/engines/bladerunner/overlays.h
@@ -58,6 +58,7 @@ public:
int play(const Common::String &name, int a3, int a4, int a5, int a6);
void remove(const Common::String &name);
+ void removeAll();
void tick();
private:
@@ -65,7 +66,6 @@ private:
int findEmpty() const;
void resetSingle(int i);
- void resetAll();
void reset();
};
diff --git a/engines/bladerunner/scene.cpp b/engines/bladerunner/scene.cpp
index de3d89291b..ebf8ed34ba 100644
--- a/engines/bladerunner/scene.cpp
+++ b/engines/bladerunner/scene.cpp
@@ -28,11 +28,13 @@
#include "bladerunner/chapters.h"
#include "bladerunner/gameinfo.h"
#include "bladerunner/items.h"
+#include "bladerunner/overlays.h"
+#include "bladerunner/regions.h"
#include "bladerunner/scene_objects.h"
+#include "bladerunner/screen_effects.h"
#include "bladerunner/set.h"
#include "bladerunner/settings.h"
#include "bladerunner/slice_renderer.h"
-#include "bladerunner/regions.h"
#include "bladerunner/vqa_player.h"
#include "bladerunner/script/scene.h"
#include "bladerunner/spinner.h"
@@ -84,9 +86,8 @@ bool Scene::open(int setId, int sceneId, bool isLoadingGame) {
} else {
_regions->clear();
_exits->clear();
- // TODO: Reset aesc
- // TODO: Clear regions
- // TODO: Destroy all overlays
+ _vm->_screenEffects->_entries.clear();
+ _vm->_overlays->removeAll();
_defaultLoop = 0;
_defaultLoopSet = false;
_specialLoopAtEnd = false;
@@ -210,7 +211,7 @@ int Scene::advanceFrame() {
blit(_vm->_surfaceInterface, _vm->_surfaceGame);
_vqaPlayer->updateZBuffer(_vm->_zbuffer);
_vqaPlayer->updateView(_vm->_view);
- _vqaPlayer->updateAESC(_vm->_aesc);
+ _vqaPlayer->updateScreenEffects(_vm->_screenEffects);
_vqaPlayer->updateLights(_vm->_lights);
}
if (_specialLoopMode && _specialLoopMode != kSceneLoopMode2 && _specialLoopMode != kSceneLoopModeSpinner) {
diff --git a/engines/bladerunner/scene.h b/engines/bladerunner/scene.h
index 65ad5bf431..70f648acea 100644
--- a/engines/bladerunner/scene.h
+++ b/engines/bladerunner/scene.h
@@ -33,13 +33,6 @@ class Regions;
class Set;
class VQAPlayer;
-enum SceneLoopMode {
- kSceneLoopModeLoseControl = 0,
- kSceneLoopModeChangeSet = 1,
- kSceneLoopMode2 = 2,
- kSceneLoopModeSpinner = 3
-};
-
class Scene {
BladeRunnerEngine *_vm;
diff --git a/engines/bladerunner/aesc.cpp b/engines/bladerunner/screen_effects.cpp
index d653d1df35..70c872b746 100644
--- a/engines/bladerunner/aesc.cpp
+++ b/engines/bladerunner/screen_effects.cpp
@@ -20,23 +20,23 @@
*
*/
-#include "bladerunner/aesc.h"
+#include "bladerunner/screen_effects.h"
#include "common/stream.h"
namespace BladeRunner {
-AESC::AESC(BladeRunnerEngine *vm, int size) : _vm(vm) {
+ScreenEffects::ScreenEffects(BladeRunnerEngine *vm, int size) : _vm(vm) {
_dataSize = size;
_data = new uint8[size];
_entries.reserve(8);
}
-AESC::~AESC() {
+ScreenEffects::~ScreenEffects() {
delete[] _data;
}
-void AESC::readVqa(Common::SeekableReadStream *stream) {
+void ScreenEffects::readVqa(Common::SeekableReadStream *stream) {
uint8* dataPtr = _data;
int dataSize = _dataSize;
@@ -96,7 +96,7 @@ void AESC::readVqa(Common::SeekableReadStream *stream) {
}
//TODO:
-//bool AESC::isAffectingArea(int x, int y, int width, int height, int z) {
+//bool ScreenEffects::isAffectingArea(int x, int y, int width, int height, int z) {
// int xx = x >> 1;
// int yy = y >> 1;
// if (_entries.empty()) {
@@ -120,7 +120,7 @@ void AESC::readVqa(Common::SeekableReadStream *stream) {
// return false;
//}
-void AESC::getColor(Color256 *outColor, uint16 x, uint16 y, uint16 z) {
+void ScreenEffects::getColor(Color256 *outColor, uint16 x, uint16 y, uint16 z) {
Color256 color = { 0, 0, 0 };
for (Common::Array<Entry>::iterator entry = _entries.begin(); entry != _entries.end(); entry++) {
uint16 x1 = (x / 2) - entry->x;
diff --git a/engines/bladerunner/aesc.h b/engines/bladerunner/screen_effects.h
index d3f926b190..1ffb68413f 100644
--- a/engines/bladerunner/aesc.h
+++ b/engines/bladerunner/screen_effects.h
@@ -20,8 +20,8 @@
*
*/
-#ifndef BLADERUNNER_AESC_H
-#define BLADERUNNER_AESC_H
+#ifndef BLADERUNNER_SCREEN_EFFECTS_H
+#define BLADERUNNER_SCREEN_EFFECTS_H
#include "bladerunner/color.h"
@@ -32,9 +32,10 @@ class ReadStream;
}
namespace BladeRunner {
+
class BladeRunnerEngine;
-class AESC {
+class ScreenEffects {
public:
struct Entry
{
@@ -54,8 +55,8 @@ public:
int _dataSize;
public:
- AESC(BladeRunnerEngine *vm, int size);
- ~AESC();
+ ScreenEffects(BladeRunnerEngine *vm, int size);
+ ~ScreenEffects();
void readVqa(Common::SeekableReadStream *stream);
void getColor(Color256 *outColor, uint16 x, uint16 y, uint16 z);
@@ -63,6 +64,7 @@ public:
//TODO
//bool isAffectingArea(int x, int y, int width, int height, int unk);
};
+
} // End of namespace BladeRunner
#endif
diff --git a/engines/bladerunner/script/ai.cpp b/engines/bladerunner/script/ai.cpp
index c695886a61..ade27e417f 100644
--- a/engines/bladerunner/script/ai.cpp
+++ b/engines/bladerunner/script/ai.cpp
@@ -41,6 +41,7 @@ AIScripts::AIScripts(BladeRunnerEngine *vm, int actorsCount) : _vm(vm), _inScrip
_AIScripts[kActorRunciter] = new AIScriptRunciter(_vm);
_AIScripts[kActorOfficerLeary] = new AIScriptOfficerLeary(_vm);
_AIScripts[kActorLeon] = new AIScriptLeon(_vm);
+ _AIScripts[kActorMaggie] = new AIScriptMaggie(_vm);
}
AIScripts::~AIScripts() {
@@ -100,6 +101,20 @@ void AIScripts::ReceivedClue(int actor, int clueId, int fromActorId) {
_inScriptCounter--;
}
+void AIScripts::ClickedByPlayer(int actor) {
+ assert(actor < _actorsCount);
+
+ if(_vm->_actors[actor]->inCombat()) {
+ return;
+ }
+
+ _inScriptCounter++;
+ if (_AIScripts[actor]) {
+ _AIScripts[actor]->ClickedByPlayer();
+ }
+ _inScriptCounter--;
+}
+
void AIScripts::EnteredScene(int actor, int setId) {
assert(actor < _actorsCount);
_inScriptCounter++;
diff --git a/engines/bladerunner/script/ai.h b/engines/bladerunner/script/ai.h
index c3fec411e9..9f2caa094b 100644
--- a/engines/bladerunner/script/ai.h
+++ b/engines/bladerunner/script/ai.h
@@ -152,6 +152,21 @@ DECLARE_SCRIPT(Leon)
float sub_446700(int actorId, float x, float y, float z);
END_SCRIPT
+DECLARE_SCRIPT(Maggie)
+ int var_45F3F0_animation_state;
+ int var_45F3F4_animation_frame;
+ int var_462B30;
+ int var_462B34;
+ int var_45F3F8;
+ int var_45F3FC;
+ int var_45F400;
+ int var_45F404;
+ int var_45F408;
+
+ int sub_44B260();
+ float sub_44B200(int actorId, float x, float y, float z);
+END_SCRIPT
+
#undef DECLARE_SCRIPT
#undef END_SCRIPT
@@ -171,6 +186,7 @@ public:
void TimerExpired(int actor, int timer);
void CompletedMovementTrack(int actor);
void ReceivedClue(int actor, int clueId, int fromActorId);
+ void ClickedByPlayer(int actor);
void EnteredScene(int actor, int setId);
void OtherAgentEnteredThisScene(int actor, int otherActorId);
void OtherAgentExitedThisScene(int actor, int otherActorId);
diff --git a/engines/bladerunner/script/ai/leon.cpp b/engines/bladerunner/script/ai/leon.cpp
index 63dc3d4782..45e1c7423d 100644
--- a/engines/bladerunner/script/ai/leon.cpp
+++ b/engines/bladerunner/script/ai/leon.cpp
@@ -93,7 +93,7 @@ void AIScriptLeon::ClickedByPlayer() {
void AIScriptLeon::EnteredScene(int sceneId) {}
void AIScriptLeon::OtherAgentEnteredThisScene(int otherActorId) {
- if (otherActorId == 0 && Actor_Query_Goal_Number(kActorLeon) == 7) {
+ if (otherActorId == kActorMcCoy && Actor_Query_Goal_Number(kActorLeon) == 7) {
AI_Countdown_Timer_Reset(kActorLeon, 0);
AI_Movement_Track_Flush(kActorLeon);
AI_Movement_Track_Append(kActorLeon, 353, 0);
@@ -104,7 +104,7 @@ void AIScriptLeon::OtherAgentEnteredThisScene(int otherActorId) {
}
void AIScriptLeon::OtherAgentExitedThisScene(int otherActorId) {
- if (otherActorId == 0 && Actor_Query_Which_Set_In(kActorLeon) == 33) {
+ if (otherActorId == kActorMcCoy && Actor_Query_Which_Set_In(kActorLeon) == 33) {
AI_Movement_Track_Flush(kActorLeon);
ADQ_Flush();
Actor_Set_Goal_Number(kActorLeon, 8);
@@ -115,7 +115,7 @@ void AIScriptLeon::OtherAgentExitedThisScene(int otherActorId) {
}
void AIScriptLeon::OtherAgentEnteredCombatMode(int otherActorId, int combatMode) {
- if (otherActorId == 0 && combatMode == 1 && Actor_Query_Goal_Number(kActorLeon) == 1) {
+ if (otherActorId == kActorMcCoy && combatMode == 1 && Actor_Query_Goal_Number(kActorLeon) == 1) {
Game_Flag_Set(539);
Player_Loses_Control();
Actor_Face_Actor(kActorMcCoy, kActorLeon, true);
@@ -448,7 +448,7 @@ void AIScriptLeon::FledCombat() {}
float AIScriptLeon::sub_446700(int actorId, float x, float y, float z) {
float actorX, actorY, actorZ;
Actor_Query_XYZ(actorId, &actorX, &actorY, &actorZ);
- return sqrtf((z - actorZ) * (z - actorZ) + (y - actorX) * (y - actorX) + (y - actorY) * (y - actorY));
+ return sqrtf((z - actorZ) * (z - actorZ) + (y - actorY) * (y - actorY) + (x - actorX) * (x - actorX));
}
} // End of namespace BladeRunner
diff --git a/engines/bladerunner/script/ai/maggie.cpp b/engines/bladerunner/script/ai/maggie.cpp
new file mode 100644
index 0000000000..150a2a3a0b
--- /dev/null
+++ b/engines/bladerunner/script/ai/maggie.cpp
@@ -0,0 +1,634 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * 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 source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "bladerunner/script/ai.h"
+#include "bladerunner/vector.h"
+
+namespace BladeRunner {
+
+void AIScriptMaggie::Initialize() {
+ var_45F3F0_animation_state = 0;
+ var_45F3F4_animation_frame = 0;
+ var_462B30 = 0;
+ var_45F3F8 = 0;
+ var_45F3FC = 0;
+ var_45F400 = 0;
+ var_45F404 = 0;
+ var_45F408 = 0;
+ Actor_Set_Goal_Number(kActorMaggie, 0);
+}
+
+bool AIScriptMaggie::Update() {
+ int goal = Actor_Query_Goal_Number(kActorMaggie);
+ if (Actor_Query_Which_Set_In(kActorMaggie) == 10 && Global_Variable_Query(1) == 4) {
+ Actor_Put_In_Set(kActorMaggie, 97);
+ Actor_Set_At_Waypoint(kActorMaggie, 39, 0);
+ }
+ if (goal == 414) {
+ Actor_Set_Goal_Number(kActorMaggie, 415);
+ } else if (goal == 413 && Actor_Query_Inch_Distance_From_Actor(kActorMcCoy, kActorMaggie) < 60) {
+ Actor_Set_Goal_Number(kActorMaggie, 415);
+ }
+ if (Global_Variable_Query(1) == 5) {
+ if (Actor_Query_Goal_Number(kActorMaggie) < 400) {
+ Actor_Set_Goal_Number(66, 400);
+ }
+ return true;
+ }
+ return false;
+}
+
+void AIScriptMaggie::TimerExpired(int timer) {
+ if (timer != 0) {
+ return;
+ }
+ int goal = Actor_Query_Goal_Number(kActorMaggie);
+ if (goal == 8) {
+ AI_Countdown_Timer_Reset(kActorMaggie, 0);
+ if (Random_Query(0, 4)) {
+ AI_Movement_Track_Flush(kActorMaggie);
+ AI_Movement_Track_Append(kActorMaggie, sub_44B260(), 0);
+ AI_Movement_Track_Repeat(kActorMaggie);
+ } else {
+ Actor_Change_Animation_Mode(kActorMaggie, 54);
+ }
+ return; //true
+ }
+ if (goal == 10) {
+ AI_Countdown_Timer_Reset(kActorMaggie, 0);
+ Actor_Change_Animation_Mode(kActorMaggie, 55);
+ return; //true
+ }
+ return; //false
+}
+
+void AIScriptMaggie::CompletedMovementTrack() {
+ int goal = Actor_Query_Goal_Number(kActorMaggie);
+ if (goal == 0 || goal > 9) {
+ if (goal == 413) {
+ Actor_Set_Goal_Number(kActorMaggie, 414);
+ return; //true
+ }
+ } else {
+ if (goal == 1) {
+ Actor_Set_Goal_Number(kActorMaggie, 7);
+ return; //true
+ }
+ if (goal == 8) {
+ Actor_Face_Actor(kActorMaggie, kActorMcCoy, true);
+ AI_Countdown_Timer_Reset(kActorMaggie, 0);
+ AI_Countdown_Timer_Start(kActorMaggie, 0, Random_Query(1, 5));
+ return; //true
+ }
+ if (goal == 9) {
+ Actor_Face_Actor(kActorMaggie, kActorMcCoy, true);
+ Actor_Change_Animation_Mode(kActorMaggie, 54);
+ return; //true
+ }
+ }
+ Actor_Set_Goal_Number(kActorMaggie, 8);
+ return; //true
+}
+
+void AIScriptMaggie::ReceivedClue(int clueId, int fromActorId) {
+}
+
+void AIScriptMaggie::ClickedByPlayer() {
+ if (!Game_Flag_Query(653) && Global_Variable_Query(1) == 5) {
+ if (Actor_Query_Goal_Number(kActorMaggie) == 413) {
+ Actor_Set_Targetable(kActorMaggie, true);
+ AI_Movement_Track_Flush(kActorMaggie);
+ Actor_Face_Actor(kActorMcCoy, kActorMaggie, true);
+ Actor_Says(kActorMcCoy, 2400, 52);
+ }
+ return; // true
+ }
+ if (var_45F3F0_animation_state == 1 || var_45F3F0_animation_state == 12 || var_45F3F0_animation_state == 16) {
+ return; // false
+ }
+
+ float mccoy_x, mccoy_y, mccoy_z;
+
+ Actor_Face_Actor(kActorMcCoy, kActorMaggie, true);
+ Actor_Query_XYZ(kActorMcCoy, &mccoy_x, &mccoy_y, &mccoy_z);
+ float distance = sub_44B200(kActorMaggie, mccoy_x, mccoy_y, mccoy_z);
+ if (distance > 60.0f) {
+ Actor_Says(0, 2430, 18);
+ Actor_Set_Goal_Number(kActorMaggie, 7);
+ return; // true
+ }
+
+ int v6 = Random_Query(0, 4);
+ if (v6 == 1) {
+ Actor_Says(kActorMcCoy, 2440, 18);
+ }
+ if (v6 == 0) {
+ Actor_Says(kActorMcCoy, 2435, 13);
+ }
+
+ int goal = Actor_Query_Goal_Number(kActorMaggie);
+ if (goal == 8) {
+ if (Random_Query(0, 1)) {
+ Actor_Face_Actor(kActorMaggie, kActorMcCoy, true);
+ Actor_Change_Animation_Mode(kActorMaggie, 57);
+ } else {
+ Actor_Face_Actor(kActorMaggie, kActorMcCoy, true);
+ Actor_Change_Animation_Mode(kActorMaggie, 56);
+ }
+ AI_Countdown_Timer_Reset(kActorMaggie, 0);
+ AI_Countdown_Timer_Start(kActorMaggie, 0, Random_Query(3, 9));
+ return; // true
+ }
+ if (goal == 10) {
+ Actor_Change_Animation_Mode(kActorMaggie, 0);
+ return; // true
+ }
+ if (goal == 11) {
+ Actor_Change_Animation_Mode(kActorMaggie, 54);
+ return; // true
+ }
+ Actor_Set_Goal_Number(kActorMaggie, 8);
+ return; // true
+}
+
+void AIScriptMaggie::EnteredScene(int sceneId) {
+}
+
+void AIScriptMaggie::OtherAgentEnteredThisScene(int otherActorId) {
+}
+
+void AIScriptMaggie::OtherAgentExitedThisScene(int otherActorId) {
+ if (otherActorId == kActorMcCoy && Actor_Query_Which_Set_In(kActorMaggie) == 10 && Global_Variable_Query(1) < 4) {
+ AI_Movement_Track_Flush(kActorMaggie);
+ Actor_Set_Goal_Number(kActorMaggie, 0);
+ }
+}
+
+void AIScriptMaggie::OtherAgentEnteredCombatMode(int otherActorId, int combatMode) {
+}
+
+void AIScriptMaggie::ShotAtAndMissed() {
+}
+
+void AIScriptMaggie::ShotAtAndHit() {
+ AI_Movement_Track_Flush(kActorMaggie);
+ Actor_Set_Goal_Number(kActorMaggie, 414);
+ Actor_Set_Targetable(kActorMaggie, false);
+}
+
+void AIScriptMaggie::Retired(int byActorId) {
+}
+
+int AIScriptMaggie::GetFriendlinessModifierIfGetsClue(int otherActorId, int clueId) {
+ return 0;
+}
+
+bool AIScriptMaggie::GoalChanged(int currentGoalNumber, int newGoalNumber) {
+ if (currentGoalNumber == 599) {
+ return true;
+ }
+ switch (newGoalNumber) {
+ case 11:
+ Actor_Change_Animation_Mode(kActorMaggie, 55);
+ var_45F3F0_animation_state = 9;
+ var_45F3F4_animation_frame = 0;
+ return true;
+ case 10:
+ Actor_Change_Animation_Mode(kActorMaggie, 54);
+ var_45F3F0_animation_state = 6;
+ var_45F3F4_animation_frame = 0;
+ AI_Countdown_Timer_Reset(kActorMaggie, 0);
+ AI_Countdown_Timer_Start(kActorMaggie, 0, Random_Query(2, 9));
+ return true;
+ case 9:
+ if (Random_Query(0, 2) <= 0) {
+ Actor_Face_Actor(kActorMaggie, kActorMcCoy, false);
+ Actor_Change_Animation_Mode(kActorMaggie, 54);
+ } else {
+ AI_Movement_Track_Flush(kActorMaggie);
+ if (Actor_Query_Which_Set_In(kActorMaggie) == 10) {
+ AI_Movement_Track_Append(kActorMaggie, sub_44B260(), 486);
+ }
+ AI_Movement_Track_Repeat(kActorMaggie);
+ }
+ return true;
+ case 8:
+ AI_Countdown_Timer_Reset(kActorMaggie, 0);
+ AI_Countdown_Timer_Start(kActorMaggie, 0, Random_Query(3, 9));
+ return true;
+ case 7:
+ AI_Countdown_Timer_Reset(kActorMaggie, 0);
+ AI_Movement_Track_Flush(kActorMaggie);
+ Loop_Actor_Walk_To_Actor(kActorMaggie, kActorMcCoy, 30, 0, false);
+ Actor_Face_Actor(kActorMaggie, kActorMcCoy, true);
+ Actor_Change_Animation_Mode(kActorMaggie, 56);
+ Actor_Set_Goal_Number(kActorMaggie, 8);
+ return true;
+ case 3:
+ Player_Loses_Control();
+ AI_Movement_Track_Flush(kActorMaggie);
+ Loop_Actor_Walk_To_Actor(kActorMaggie, kActorMcCoy, 48, 0, false);
+ Actor_Face_Actor(0, kActorMaggie, true);
+ Actor_Face_Actor(kActorMaggie, 0, false);
+ Actor_Says(kActorMcCoy, 2400, 52);
+ Actor_Set_Goal_Number(kActorMaggie, 8);
+ Player_Gains_Control();
+ return true;
+ case 1:
+ Actor_Put_In_Set(kActorMaggie, 10);
+ Actor_Set_At_Waypoint(kActorMaggie, sub_44B260(), 512);
+ AI_Movement_Track_Flush(kActorMaggie);
+ AI_Movement_Track_Append(kActorMaggie, 264, 0);
+ AI_Movement_Track_Repeat(kActorMaggie);
+ return true;
+ case 0:
+ Actor_Put_In_Set(kActorMaggie, 10);
+ Actor_Set_At_Waypoint(kActorMaggie, 265, 780);
+ return true;
+ case 415:
+ AI_Movement_Track_Flush(kActorMaggie);
+ Actor_Face_Actor(kActorMcCoy, kActorMaggie, true);
+ Sound_Play(494, 50, 0, 0, 100);
+ Actor_Set_Goal_Number(kActorMaggie, 599);
+ Actor_Change_Animation_Mode(kActorMaggie, 51);
+ if (Actor_Query_Inch_Distance_From_Actor(0, kActorMaggie) < 144) {
+ Player_Loses_Control();
+ Actor_Change_Animation_Mode(kActorMcCoy, 48);
+ Actor_Retired_Here(kActorMcCoy, 6, 6, 1, -1);
+ } else {
+ Delay(3000);
+ Scene_Exits_Disable();
+ Actor_Says(kActorMcCoy, 2235, 12);
+ if (Actor_Query_Is_In_Current_Set(kActorSteele)) {
+ Actor_Says(kActorSteele, 1530, 58);
+ Actor_Set_Goal_Number(kActorSteele, 431);
+ }
+ Delay(2000);
+ Actor_Says(kActorMcCoy, 2390, 13);
+ if (Actor_Query_Goal_Number(kActorSadik) == 411) {
+ Actor_Set_Goal_Number(kActorSadik, 412);
+ } else {
+ Actor_Set_Goal_Number(kActorClovis, 512);
+ }
+ }
+ break;
+ case 413:
+ if (Actor_Query_Is_In_Current_Set(kActorSteele)) {
+ Actor_Says(kActorSteele, 3270, 59);
+ }
+ AI_Movement_Track_Flush(kActorMaggie);
+ AI_Movement_Track_Append(kActorMaggie, 540, 0);
+ AI_Movement_Track_Repeat(kActorMaggie);
+ break;
+ case 412:
+ Scene_Exits_Disable();
+ Loop_Actor_Walk_To_XYZ(kActorMaggie, -734.0, 0.0, -432.0, 0, 0, false, 0);
+ Actor_Face_Actor(kActorMaggie, kActorMcCoy, true);
+ Actor_Change_Animation_Mode(kActorMaggie, 56);
+ Actor_Face_Actor(kActorMcCoy, kActorMaggie, true);
+ Actor_Says(kActorMcCoy, 2225, 3);
+ Actor_Set_Goal_Number(kActorMaggie, 413);
+ break;
+ case 411:
+ AI_Movement_Track_Flush(kActorMaggie);
+ Game_Flag_Set(461);
+ Actor_Put_In_Set(kActorMaggie, 9);
+ Actor_Set_At_XYZ(kActorMaggie, -672.0, 0.0, -428.0, 653);
+ Actor_Change_Animation_Mode(kActorMaggie, 0);
+ break;
+ case 400:
+ Actor_Set_Goal_Number(kActorMaggie, 410);
+ break;
+ }
+ return false;
+}
+
+bool AIScriptMaggie::UpdateAnimation(int *animation, int *frame) {
+ int goal;
+ switch (var_45F3F0_animation_state) {
+ case 16:
+ *animation = 871;
+ var_45F3F4_animation_frame = 0;
+ break;
+ case 15:
+ *animation = 874;
+ var_45F3F4_animation_frame = Slice_Animation_Query_Number_Of_Frames(874) - 1;
+ break;
+ case 14:
+ *animation = 874;
+ var_45F3F4_animation_frame++;
+ if (var_45F3F4_animation_frame >= Slice_Animation_Query_Number_Of_Frames(874) - 1) {
+ var_45F3F0_animation_state = 15;
+ var_45F3F4_animation_frame = Slice_Animation_Query_Number_Of_Frames(*animation) - 1;
+ Actor_Put_In_Set(kActorMaggie, 99);
+ Actor_Set_At_Waypoint(kActorMaggie, 41, 0);
+ }
+ break;
+ case 13:
+ *animation = 873;
+ var_45F3F4_animation_frame++;
+ if (var_45F3F4_animation_frame >= Slice_Animation_Query_Number_Of_Frames(873)) {
+ var_45F3F0_animation_state = 11;
+ var_45F3F4_animation_frame = 0;
+ *animation = 875;
+ Actor_Set_Goal_Number(kActorMaggie, 414);
+ }
+ break;
+ case 12:
+ *animation = 872;
+ var_45F3F4_animation_frame++;
+ if (var_45F3F4_animation_frame >= Slice_Animation_Query_Number_Of_Frames(872)) {
+ var_45F3F4_animation_frame = 0;
+ }
+ break;
+ case 11:
+ *animation = 875;
+ var_45F3F4_animation_frame++;
+ if (var_45F3F4_animation_frame >= Slice_Animation_Query_Number_Of_Frames(875)) {
+ var_45F3F4_animation_frame = 0;
+ }
+ break;
+ case 10:
+ *animation = 876;
+ var_45F3F4_animation_frame--;
+ if (var_45F3F4_animation_frame > 0) {
+ break;
+ }
+ var_45F3F0_animation_state = 6;
+ var_45F3F4_animation_frame = 0;
+ *animation = 867;
+ goal = Actor_Query_Goal_Number(66);
+ if (goal == 3) {
+ var_45F3F0_animation_state = 7;
+ var_45F3F4_animation_frame = 0;
+ *animation = 868;
+ } else if (goal == 7) {
+ Actor_Set_Goal_Number(kActorMaggie, 10);
+ Actor_Set_Goal_Number(kActorMaggie, 7);
+ } else {
+ Actor_Set_Goal_Number(kActorMaggie, 10);
+ }
+ break;
+ case 9:
+ *animation = 876;
+ var_45F3F4_animation_frame = Slice_Animation_Query_Number_Of_Frames(876) - 1;
+ break;
+ case 8:
+ *animation = 876;
+ var_45F3F4_animation_frame++;
+ if (var_45F3F4_animation_frame >= Slice_Animation_Query_Number_Of_Frames(876) - 1) {
+ var_45F3F0_animation_state = 9;
+ Actor_Set_Goal_Number(kActorMaggie, 11);
+ }
+ break;
+ case 7:
+ *animation = 868;
+ var_45F3F4_animation_frame++;
+ if (var_45F3F4_animation_frame >= Slice_Animation_Query_Number_Of_Frames(868)) {
+ *animation = 864;
+ var_45F3F0_animation_state = 0;
+ var_45F3F4_animation_frame = 0;
+ if (Actor_Query_Goal_Number(kActorMaggie) == 10) {
+ Actor_Set_Goal_Number(kActorMaggie, 8);
+ } else if (Actor_Query_Goal_Number(kActorMaggie) == 7) {
+ Actor_Set_Goal_Number(kActorMaggie, 12);
+ Actor_Set_Goal_Number(kActorMaggie, 7);
+ }
+ }
+ break;
+ case 6:
+ *animation = 867;
+ var_45F3F4_animation_frame++;
+ if (var_45F3F4_animation_frame >= Slice_Animation_Query_Number_Of_Frames(867)) {
+ var_45F3F4_animation_frame = 0;
+ }
+ break;
+ case 5:
+ *animation = 866;
+ var_45F3F4_animation_frame++;
+ if (var_45F3F4_animation_frame >= Slice_Animation_Query_Number_Of_Frames(866)) {
+ var_45F3F0_animation_state = 6;
+ var_45F3F4_animation_frame = 0;
+ *animation = 867;
+ if (Actor_Query_Goal_Number(kActorMaggie) == 9) {
+ Actor_Set_Goal_Number(kActorMaggie, 10);
+ }
+ }
+ break;
+ case 4:
+ *animation = 865;
+ var_45F3F4_animation_frame++;
+ if (var_45F3F4_animation_frame >= Slice_Animation_Query_Number_Of_Frames(865)) {
+ var_45F3F4_animation_frame = 0;
+ var_45F3F8--;
+ if (var_45F3F8 <= 0) {
+ Actor_Change_Animation_Mode(kActorMaggie, 0);
+ *animation = 864;
+ }
+ }
+ break;
+ case 3:
+ *animation = 870;
+ if (var_45F3F4_animation_frame == 1) {
+ Sound_Play(Random_Query(263, 264), 50, 0, 0, 50);
+ }
+ var_45F3F4_animation_frame++;
+ if (var_45F3F4_animation_frame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
+ var_45F3FC--;
+ if (var_45F3FC <= 0 ) {
+ Actor_Change_Animation_Mode(kActorMaggie, 0);
+ *animation = 864;
+ var_45F3F0_animation_state = 0;
+ }
+ var_45F3F4_animation_frame = 0;
+ }
+ break;
+ case 2:
+ *animation = 869;
+ var_45F3F4_animation_frame++;
+ if (var_45F3F4_animation_frame >= Slice_Animation_Query_Number_Of_Frames(869)) {
+ Actor_Change_Animation_Mode(kActorMaggie, 0);
+ *animation = 864;
+ var_45F3F0_animation_state = 0;
+ var_45F3F4_animation_frame = 0;
+ }
+ break;
+ case 1:
+ *animation = 863;
+ var_45F3F4_animation_frame++;
+ if (var_45F3F4_animation_frame >= Slice_Animation_Query_Number_Of_Frames(863)) {
+ var_45F3F4_animation_frame = 0;
+ }
+ break;
+ case 0:
+ *animation = 864;
+ var_45F3F4_animation_frame++;
+ if (var_45F3F4_animation_frame >= Slice_Animation_Query_Number_Of_Frames(864)) {
+ var_45F3F4_animation_frame = 0;
+ }
+ break;
+ }
+ *frame = var_45F3F4_animation_frame;
+ return true;
+}
+
+bool AIScriptMaggie::ChangeAnimationMode(int mode) {
+ if (mode == 1) {
+ if (Game_Flag_Query(461)) {
+ var_45F3F0_animation_state = 12;
+ var_45F3F4_animation_frame = 0;
+ } else {
+ var_45F3F0_animation_state = 1;
+ var_45F3F4_animation_frame = 0;
+ }
+ return true;
+ }
+ if (mode == 0) {
+ if (Game_Flag_Query(461)) {
+ var_45F3F0_animation_state = 11;
+ var_45F3F4_animation_frame = 0;
+ } else {
+ switch (var_45F3F0_animation_state) {
+ case 8:
+ case 9:
+ var_45F3F0_animation_state = 10;
+ break;
+ case 6:
+ var_45F3F0_animation_state = 7;
+ var_45F3F4_animation_frame = 0;
+ break;
+ case 5:
+ var_45F3F0_animation_state = 7;
+ var_45F3F4_animation_frame = 0;
+ break;
+ case 2:
+ case 7:
+ case 10:
+ break;
+ default:
+ var_45F3F0_animation_state = 0;
+ var_45F3F4_animation_frame = 0;
+ break;
+ }
+ }
+ return true;
+ }
+
+ switch (mode) {
+ case 88:
+ var_45F3F0_animation_state = 16;
+ var_45F3F4_animation_frame = 0;
+ break;
+ case 57:
+ if (var_45F3F0_animation_state != 4) {
+ var_45F3F4_animation_frame = 0;
+ var_45F3F0_animation_state = 4;
+ }
+ var_45F3F8 = Random_Query(2, 6);
+ Sound_Play(276, 50, 0, 0, 50);
+ break;
+ case 56:
+ if (var_45F3F0_animation_state != 3) {
+ var_45F3F4_animation_frame = 0;
+ var_45F3F0_animation_state = 3;
+ }
+ var_45F3FC = Random_Query(2, 6);
+ break;
+ case 55:
+ if (var_45F3F0_animation_state == 6) {
+ var_45F3F0_animation_state = 8;
+ var_45F3F4_animation_frame = 0;
+ }
+ break;
+ case 54:
+ if ((unsigned int)var_45F3F0_animation_state <= 9) {
+ if (var_45F3F0_animation_state) {
+ if (var_45F3F0_animation_state == 9) {
+ var_45F3F0_animation_state = 10;
+ var_45F3F4_animation_frame = 0;
+ }
+ } else {
+ var_45F3F0_animation_state = 5;
+ var_45F3F4_animation_frame = 0;
+ }
+ }
+ break;
+ case 52:
+ if (Game_Flag_Query(461)) {
+ var_45F3F0_animation_state = 13;
+ var_45F3F4_animation_frame = 0;
+ } else {
+ var_45F3F0_animation_state = 2;
+ var_45F3F4_animation_frame = 0;
+ }
+ break;
+ case 51:
+ var_45F3F0_animation_state = 14;
+ var_45F3F4_animation_frame = 0;
+ Sound_Play(272, 50, 0, 0, 50);
+ break;
+ }
+ return true;
+}
+
+void AIScriptMaggie::QueryAnimationState(int *animationState, int *animationFrame, int *a3, int *a4) {
+ *animationState = var_45F3F0_animation_state;
+ *animationFrame = var_45F3F4_animation_frame;
+ *a3 = var_462B30;
+ *a4 = var_462B34;
+}
+
+void AIScriptMaggie::SetAnimationState(int animationState, int animationFrame, int a3, int a4) {
+ var_45F3F0_animation_state = animationState;
+ var_45F3F4_animation_frame = animationFrame;
+ var_462B30 = a3;
+ var_462B34 = a4;
+}
+
+bool AIScriptMaggie::ReachedMovementTrackWaypoint(int waypointId) {
+ return true;
+}
+
+void AIScriptMaggie::FledCombat() {
+}
+
+int AIScriptMaggie::sub_44B260() {
+ int random = Random_Query(0, 3);
+ if (random == 0) {
+ return 264;
+ }
+ if (random == 1) {
+ return 265;
+ }
+ if (random == 2) {
+ return 266;
+ }
+ return 267;
+}
+
+float AIScriptMaggie::sub_44B200(int actorId, float x, float y, float z) {
+ float actorX, actorY, actorZ;
+ Actor_Query_XYZ(actorId, &actorX, &actorY, &actorZ);
+ return sqrtf((z - actorZ) * (z - actorZ) + (y - actorY) * (y - actorY) + (x - actorX) * (x - actorX));
+}
+
+} // End of namespace BladeRunner
diff --git a/engines/bladerunner/script/ai/mccoy.cpp b/engines/bladerunner/script/ai/mccoy.cpp
index bda6b093e6..fb670af304 100644
--- a/engines/bladerunner/script/ai/mccoy.cpp
+++ b/engines/bladerunner/script/ai/mccoy.cpp
@@ -431,7 +431,7 @@ bool AIScriptMcCoy::GoalChanged(int currentGoalNumber, int newGoalNumber) {
if (Game_Flag_Query(666)) {
Chapter_Enter(5, 53, 53);
} else {
- Game_Flag_Set(34);
+ Game_Flag_Set(kFlagMA06ToMA02);
Chapter_Enter(5, 10, 49);
}
return true;
@@ -1684,7 +1684,7 @@ void AIScriptMcCoy::sub_4054F0() {
if ((z < 220.0f) && (-210.0f < x) && (-70.0f > x)) {
Game_Flag_Set(682);
Scene_Loop_Set_Default(3);
- Scene_Loop_Start_Special(2, 2, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 2, true);
Actor_Set_Goal_Number(kActorMcCoy, 390);
Actor_Query_XYZ(kActorFreeSlotA, &x, &y, &z);
if (-200.0 < x && -62.0f > x) {
diff --git a/engines/bladerunner/script/ai/officer_leary.cpp b/engines/bladerunner/script/ai/officer_leary.cpp
index e55a9563e2..9b85a4cdf8 100644
--- a/engines/bladerunner/script/ai/officer_leary.cpp
+++ b/engines/bladerunner/script/ai/officer_leary.cpp
@@ -46,7 +46,7 @@ bool AIScriptOfficerLeary::Update() {
AI_Movement_Track_Flush(kActorOfficerLeary);
Actor_Set_Goal_Number(kActorOfficerLeary, 400);
} else if (!Game_Flag_Query(182) && Game_Flag_Query(147) == 1 && Game_Flag_Query(163) == 1 && Player_Query_Current_Scene() != 78 && Global_Variable_Query(1) < 3) {
- Game_Flag_Set(186);
+ Game_Flag_Set(kFlagRC01PoliceDone);
Actor_Set_Goal_Number(kActorOfficerLeary, 3);
} else if (Actor_Query_Goal_Number(kActorOfficerLeary) != 1 && Actor_Query_Goal_Number(kActorOfficerLeary) != 2 && Game_Flag_Query(199) == 1) {
Game_Flag_Reset(199);
diff --git a/engines/bladerunner/script/ai/runciter.cpp b/engines/bladerunner/script/ai/runciter.cpp
index d34b4a8a01..0c66876efb 100644
--- a/engines/bladerunner/script/ai/runciter.cpp
+++ b/engines/bladerunner/script/ai/runciter.cpp
@@ -37,7 +37,7 @@ void AIScriptRunciter::Initialize() {
}
bool AIScriptRunciter::Update() {
- if (Actor_Query_Goal_Number(kActorRunciter) == 0 && Game_Flag_Query(186)) {
+ if (Actor_Query_Goal_Number(kActorRunciter) == 0 && Game_Flag_Query(kFlagRC01PoliceDone)) {
Actor_Set_Goal_Number(kActorRunciter, 2);
}
if (Global_Variable_Query(1) == 4 && Actor_Query_Goal_Number(kActorRunciter) < 300) {
diff --git a/engines/bladerunner/script/scene.h b/engines/bladerunner/script/scene.h
index 0d4f574caa..b65f5f19b2 100644
--- a/engines/bladerunner/script/scene.h
+++ b/engines/bladerunner/script/scene.h
@@ -276,8 +276,8 @@ DECLARE_SCRIPT(MA04)
void sub_402F2C();
void sub_4032A0();
void sub_4034D8();
- void sub_403864();
- void sub_403DA8();
+ void turnOnTV();
+ void sleep();
END_SCRIPT
DECLARE_SCRIPT(MA05)
@@ -285,8 +285,8 @@ DECLARE_SCRIPT(MA05)
END_SCRIPT
DECLARE_SCRIPT(MA06)
- bool sub_4012C0();
- void sub_4014E4();
+ bool isElevatorOnDifferentFloor();
+ void activateElevator();
END_SCRIPT
DECLARE_SCRIPT(MA07)
@@ -410,7 +410,7 @@ END_SCRIPT
DECLARE_SCRIPT(RC01)
void sub_403850();
- void sub_4037AC();
+ void walkToCenter();
END_SCRIPT
DECLARE_SCRIPT(RC02)
diff --git a/engines/bladerunner/script/scene/bb02.cpp b/engines/bladerunner/script/scene/bb02.cpp
index 6022444d7e..d238617a33 100644
--- a/engines/bladerunner/script/scene/bb02.cpp
+++ b/engines/bladerunner/script/scene/bb02.cpp
@@ -100,12 +100,12 @@ bool SceneScriptBB02::ClickedOnExit(int exitId) {
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -12.0f, -415.06f, -27.0f, 0, 1, false, 0)) {
Player_Loses_Control();
if (!Game_Flag_Query(493)) {
- Scene_Loop_Start_Special(2, 0, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 0, true);
}
Game_Flag_Set(332);
Game_Flag_Reset(493);
Set_Enter(1, 5);
- Scene_Loop_Start_Special(1, 3, 0);
+ Scene_Loop_Start_Special(1, 3, false);
}
return true;
}
diff --git a/engines/bladerunner/script/scene/ct02.cpp b/engines/bladerunner/script/scene/ct02.cpp
index 95e1a6a832..47293d5b2a 100644
--- a/engines/bladerunner/script/scene/ct02.cpp
+++ b/engines/bladerunner/script/scene/ct02.cpp
@@ -152,7 +152,7 @@ void SceneScriptCT02::sub_401ACC() {
Actor_Set_Goal_Number(kActorZuben, 8);
Game_Flag_Set(293);
Scene_Loop_Set_Default(3);
- Scene_Loop_Start_Special(2, 2, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 2, true);
}
break;
case 280:
@@ -165,7 +165,7 @@ void SceneScriptCT02::sub_401ACC() {
Actor_Set_Goal_Number(kActorZuben, 8);
Game_Flag_Set(293);
Scene_Loop_Set_Default(3);
- Scene_Loop_Start_Special(2, 2, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 2, true);
}
break;
case 290:
@@ -181,7 +181,7 @@ void SceneScriptCT02::sub_401ACC() {
Actor_Set_Goal_Number(kActorZuben, 8);
Game_Flag_Set(293);
Scene_Loop_Set_Default(3);
- Scene_Loop_Start_Special(2, 2, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 2, true);
}
break;
case 300:
@@ -192,7 +192,7 @@ void SceneScriptCT02::sub_401ACC() {
Actor_Set_Goal_Number(kActorZuben, 8);
Game_Flag_Set(293);
Scene_Loop_Set_Default(3);
- Scene_Loop_Start_Special(2, 2, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 2, true);
}
break;
}
diff --git a/engines/bladerunner/script/scene/dr04.cpp b/engines/bladerunner/script/scene/dr04.cpp
index f11c462db6..b0e6e3bcb7 100644
--- a/engines/bladerunner/script/scene/dr04.cpp
+++ b/engines/bladerunner/script/scene/dr04.cpp
@@ -184,7 +184,7 @@ void SceneScriptDR04::SceneFrameAdvanced(int frame) {
Game_Flag_Reset(515);
Game_Flag_Reset(271);
Scene_Loop_Set_Default(1);
- Scene_Loop_Start_Special(2, 6, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 6, true);
Music_Stop(4);
Actor_Set_Goal_Number(kActorMoraji, 99);
} else {
@@ -192,7 +192,7 @@ void SceneScriptDR04::SceneFrameAdvanced(int frame) {
Game_Flag_Reset(271);
Game_Flag_Set(272);
Scene_Loop_Set_Default(1);
- Scene_Loop_Start_Special(2, 6, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 6, true);
Item_Remove_From_World(78);
}
switch (frame) {
diff --git a/engines/bladerunner/script/scene/hc03.cpp b/engines/bladerunner/script/scene/hc03.cpp
index 81007ce8b6..02e88bb3fa 100644
--- a/engines/bladerunner/script/scene/hc03.cpp
+++ b/engines/bladerunner/script/scene/hc03.cpp
@@ -100,7 +100,7 @@ bool SceneScriptHC03::ClickedOnItem(int itemId, bool a2) {
if (itemId == 121) {
if (a2) {
Scene_Loop_Set_Default(3);
- Scene_Loop_Start_Special(2, 2, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 2, true);
Game_Flag_Set(403);
Item_Remove_From_World(121);
Unobstacle_Object("GPscisGate", true);
@@ -146,7 +146,7 @@ bool SceneScriptHC03::ClickedOnExit(int exitId) {
Set_Enter(75, 87);
} else {
Scene_Loop_Set_Default(6);
- Scene_Loop_Start_Special(2, 5, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 5, true);
Game_Flag_Set(388);
}
}
diff --git a/engines/bladerunner/script/scene/hf04.cpp b/engines/bladerunner/script/scene/hf04.cpp
index 7389810a6a..aaa3e8f25e 100644
--- a/engines/bladerunner/script/scene/hf04.cpp
+++ b/engines/bladerunner/script/scene/hf04.cpp
@@ -108,14 +108,14 @@ void SceneScriptHF04::SceneFrameAdvanced(int frame) {
if (Game_Flag_Query(585)) {
Game_Flag_Reset(585);
Scene_Loop_Set_Default(3);
- Scene_Loop_Start_Special(2, 2, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 2, true);
//return true;
return;
}
if (Game_Flag_Query(586)) {
Game_Flag_Reset(586);
Scene_Loop_Set_Default(0);
- Scene_Loop_Start_Special(2, 5, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 5, true);
//return true;
return;
}
diff --git a/engines/bladerunner/script/scene/hf05.cpp b/engines/bladerunner/script/scene/hf05.cpp
index b451b76ba2..8106f71242 100644
--- a/engines/bladerunner/script/scene/hf05.cpp
+++ b/engines/bladerunner/script/scene/hf05.cpp
@@ -92,7 +92,7 @@ bool SceneScriptHF05::ClickedOn3DObject(const char *objectName, bool a2) {
Actor_Face_Heading(kActorMcCoy, 0, false);
Actor_Change_Animation_Mode(kActorMcCoy, 23);
Scene_Loop_Set_Default(5);
- Scene_Loop_Start_Special(2, 4, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 4, true);
if (sub_4048C0()) {
if (sub_4048C0() == 3) {
Actor_Face_Heading(kActorDektora, 0, false);
diff --git a/engines/bladerunner/script/scene/hf06.cpp b/engines/bladerunner/script/scene/hf06.cpp
index 926967a2df..cd5651af0f 100644
--- a/engines/bladerunner/script/scene/hf06.cpp
+++ b/engines/bladerunner/script/scene/hf06.cpp
@@ -263,7 +263,7 @@ void SceneScriptHF06::sub_401EF4() {
Actor_Change_Animation_Mode(kActorSteele, 6);
Delay(500);
Scene_Loop_Set_Default(3);
- Scene_Loop_Start_Special(2, 2, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 2, true);
Sound_Play(562, 50, 0, 0, 50);
Game_Flag_Set(559);
Scene_Exits_Disable();
diff --git a/engines/bladerunner/script/scene/kp03.cpp b/engines/bladerunner/script/scene/kp03.cpp
index 59766c0553..4071fd6a15 100644
--- a/engines/bladerunner/script/scene/kp03.cpp
+++ b/engines/bladerunner/script/scene/kp03.cpp
@@ -69,7 +69,7 @@ bool SceneScriptKP03::ClickedOn3DObject(const char *objectName, bool a2) {
if (Object_Query_Click("BRACK MID", objectName) && !Game_Flag_Query(422)) {
if (a2) {
Scene_Loop_Set_Default(5);
- Scene_Loop_Start_Special(2, 4, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 4, true);
Actor_Change_Animation_Mode(kActorMcCoy, 39);
Actor_Retired_Here(kActorMcCoy, 72, 18, 1, -1);
Game_Flag_Set(422);
@@ -90,7 +90,7 @@ bool SceneScriptKP03::ClickedOn3DObject(const char *objectName, bool a2) {
Game_Flag_Set(484);
Game_Flag_Reset(421);
Scene_Loop_Set_Default(7);
- Scene_Loop_Start_Special(2, 0, 0);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 0, false);
Actor_Voice_Over(1110, kActorVoiceOver);
Actor_Voice_Over(1120, kActorVoiceOver);
} else {
@@ -178,7 +178,7 @@ void SceneScriptKP03::SceneFrameAdvanced(int frame) {
}
if (v1 != -1) {
Scene_Loop_Set_Default(5);
- Scene_Loop_Start_Special(2, 4, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 4, true);
Game_Flag_Set(422);
Game_Flag_Reset(421);
Unclickable_Object("BRACK MID");
@@ -244,7 +244,7 @@ void SceneScriptKP03::sub_401E54() {
Game_Flag_Set(484);
Game_Flag_Reset(421);
Scene_Loop_Set_Default(7);
- Scene_Loop_Start_Special(2, 7, 0);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 7, false);
Actor_Set_Goal_Number(kActorSteele, 413);
Actor_Says(kActorMcCoy, 2195, 14);
Ambient_Sounds_Play_Sound(151, 40, -60, -60, 0);
diff --git a/engines/bladerunner/script/scene/ma01.cpp b/engines/bladerunner/script/scene/ma01.cpp
index 55fe935d74..f4963143e5 100644
--- a/engines/bladerunner/script/scene/ma01.cpp
+++ b/engines/bladerunner/script/scene/ma01.cpp
@@ -26,14 +26,14 @@ namespace BladeRunner {
void SceneScriptMA01::InitializeScene() {
Setup_Scene_Information(381.0f, 0.0f, 54.0f, 992);
- if (Game_Flag_Query(250)) {
+ if (Game_Flag_Query(kFlagMA01Locked)) {
Setup_Scene_Information(381.0f, 0.0f, 54.0f, 992);
}
- if (Game_Flag_Query(38)) {
+ if (Game_Flag_Query(kFlagMA06toMA01)) {
Setup_Scene_Information(1446.0f, 0.0f, -725.0f, 660);
}
Scene_Exit_Add_2D_Exit(0, 328, 132, 426, 190, 0);
- if (Game_Flag_Query(250)) {
+ if (Game_Flag_Query(kFlagMA01Locked)) {
Scene_Exit_Add_2D_Exit(1, 234, 240, 398, 328, 2);
}
Ambient_Sounds_Add_Looping_Sound(101, 90, 0, 1);
@@ -44,13 +44,13 @@ void SceneScriptMA01::InitializeScene() {
Ambient_Sounds_Add_Sound(375, 10, 70, 50, 100, 0, 0, -101, -101, 0, 0);
Ambient_Sounds_Add_Sound(376, 10, 70, 50, 100, 0, 0, -101, -101, 0, 0);
Ambient_Sounds_Add_Sound(377, 10, 70, 50, 100, 0, 0, -101, -101, 0, 0);
- if (Game_Flag_Query(38)) {
+ if (Game_Flag_Query(kFlagMA06toMA01)) {
Scene_Loop_Set_Default(1);
- Game_Flag_Reset(38);
+ Game_Flag_Reset(kFlagMA06toMA01);
} else {
Actor_Set_Invisible(kActorMcCoy, true);
Game_Flag_Set(273);
- Scene_Loop_Start_Special(0, 0, 0);
+ Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 0, false);
Scene_Loop_Set_Default(1);
}
if (Game_Flag_Query(409)) {
@@ -95,9 +95,9 @@ bool SceneScriptMA01::ClickedOnExit(int exitId) {
Scene_Exits_Disable();
}
} else if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 1446.0f, 0.0f, -725.0f, 12, 1, false, 0)) {
- Ambient_Sounds_Remove_All_Non_Looping_Sounds(1);
+ Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
- Game_Flag_Set(37);
+ Game_Flag_Set(kFlagMA01toMA06);
Set_Enter(52, 52);
}
return true;
@@ -114,71 +114,71 @@ bool SceneScriptMA01::ClickedOnExit(int exitId) {
Game_Flag_Reset(177);
Game_Flag_Reset(258);
Game_Flag_Reset(178);
- int spinnerDest = Spinner_Interface_Choose_Dest(3, 0);
+ int spinnerDest = Spinner_Interface_Choose_Dest(3, false);
switch (spinnerDest) {
- case 0:
+ case kSpinnerDestinationPoliceStation:
Game_Flag_Set(178);
- Game_Flag_Reset(250);
+ Game_Flag_Reset(kFlagMA01Locked);
Game_Flag_Set(251);
Set_Enter(61, 65);
- Scene_Loop_Start_Special(1, 4, 1);
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 4, true);
break;
- case 2:
+ case kSpinnerDestinationRuncitersAnimals:
Game_Flag_Set(182);
- Game_Flag_Reset(250);
+ Game_Flag_Reset(kFlagMA01Locked);
Game_Flag_Set(249);
Set_Enter(69, 78);
- Scene_Loop_Start_Special(1, 4, 1);
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 4, true);
break;
- case 3:
+ case kSpinnerDestinationChinatown:
Game_Flag_Set(176);
- Game_Flag_Reset(250);
+ Game_Flag_Reset(kFlagMA01Locked);
Game_Flag_Set(248);
Set_Enter(4, 13);
- Scene_Loop_Start_Special(1, 4, 1);
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 4, true);
break;
- case 5:
+ case kSpinnerDestinationTyrellBuilding:
Game_Flag_Set(261);
- Game_Flag_Reset(250);
+ Game_Flag_Reset(kFlagMA01Locked);
Game_Flag_Set(307);
Set_Enter(17, 82);
- Scene_Loop_Start_Special(1, 4, 1);
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 4, true);
break;
- case 4:
+ case kSpinnerDestinationAnimoidRow:
Game_Flag_Set(180);
- Game_Flag_Reset(250);
+ Game_Flag_Reset(kFlagMA01Locked);
Game_Flag_Set(252);
Set_Enter(0, 0);
- Scene_Loop_Start_Special(1, 4, 1);
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 4, true);
break;
- case 6:
+ case kSpinnerDestinationDNARow:
Game_Flag_Set(177);
- Game_Flag_Reset(250);
+ Game_Flag_Reset(kFlagMA01Locked);
Game_Flag_Set(253);
Set_Enter(7, 25);
- Scene_Loop_Start_Special(1, 4, 1);
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 4, true);
break;
- case 7:
+ case kSpinnerDestinationBradburyBuilding:
Game_Flag_Set(258);
- Game_Flag_Reset(250);
+ Game_Flag_Reset(kFlagMA01Locked);
Game_Flag_Set(254);
Set_Enter(20, 2);
- Scene_Loop_Start_Special(1, 4, 1);
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 4, true);
break;
- case 8:
+ case kSpinnerDestinationNightclubRow:
Game_Flag_Set(181);
- Game_Flag_Reset(250);
+ Game_Flag_Reset(kFlagMA01Locked);
Game_Flag_Set(255);
Set_Enter(54, 54);
- Scene_Loop_Start_Special(1, 4, 1);
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 4, true);
break;
- case 9:
+ case kSpinnerDestinationHysteriaHall:
Game_Flag_Set(257);
- Game_Flag_Reset(250);
+ Game_Flag_Reset(kFlagMA01Locked);
Game_Flag_Set(256);
Set_Enter(37, 34);
- Scene_Loop_Start_Special(1, 4, 1);
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 4, true);
break;
default:
Actor_Set_Invisible(kActorMcCoy, false);
diff --git a/engines/bladerunner/script/scene/ma02.cpp b/engines/bladerunner/script/scene/ma02.cpp
index 65f88b85eb..add20cbcdf 100644
--- a/engines/bladerunner/script/scene/ma02.cpp
+++ b/engines/bladerunner/script/scene/ma02.cpp
@@ -25,7 +25,7 @@
namespace BladeRunner {
void SceneScriptMA02::InitializeScene() {
- if (Game_Flag_Query(36)) {
+ if (Game_Flag_Query(kFlagMA04ToMA02)) {
Setup_Scene_Information(-172.0f, -144.13f, 6.27f, 500);
} else {
Setup_Scene_Information(23.19f, -144.12f, 378.27f, 750);
@@ -92,7 +92,7 @@ bool SceneScriptMA02::ClickedOn3DObject(const char *objectName, bool a2) {
Actor_Voice_Over(1180, kActorVoiceOver);
Actor_Voice_Over(1190, kActorVoiceOver);
Actor_Voice_Over(1200, kActorVoiceOver);
- Actor_Clue_Acquire(kActorMcCoy, kClueCrystalsCigarette, 1, -1);
+ Actor_Clue_Acquire(kActorMcCoy, kClueCrystalsCigarette, true, -1);
} else {
Actor_Says(kActorMcCoy, 8526, 0);
}
@@ -102,7 +102,7 @@ bool SceneScriptMA02::ClickedOn3DObject(const char *objectName, bool a2) {
}
bool SceneScriptMA02::ClickedOnActor(int actorId) {
- if (actorId == 66 && Actor_Query_Goal_Number(kActorMaggie) == 599) {
+ if (actorId == kActorMaggie && Actor_Query_Goal_Number(kActorMaggie) == 599) {
if (!Loop_Actor_Walk_To_Actor(kActorMcCoy, kActorMaggie, 30, 1, false)) {
Actor_Face_Actor(kActorMcCoy, kActorMaggie, true);
Actor_Voice_Over(1140, kActorVoiceOver);
@@ -119,14 +119,14 @@ bool SceneScriptMA02::ClickedOnExit(int exitId) {
if (exitId == 0) {
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 23.19f, -144.12f, 378.27f, 0, 1, false, 0)) {
Music_Stop(10);
- Game_Flag_Set(33);
+ Game_Flag_Set(kFlagMA02toMA06);
Set_Enter(52, 52);
}
return true;
}
if (exitId == 1) {
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -168.0f, -144.13f, 10.27f, 0, 1, false, 0)) {
- Game_Flag_Set(35);
+ Game_Flag_Set(kFlagMA02ToMA04);
Set_Enter(50, 50);
}
return true;
@@ -145,10 +145,10 @@ void SceneScriptMA02::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
}
void SceneScriptMA02::PlayerWalkedIn() {
- if (Game_Flag_Query(34)) {
+ if (Game_Flag_Query(kFlagMA06ToMA02)) {
sub_402044();
}
- if (Game_Flag_Query(36)) {
+ if (Game_Flag_Query(kFlagMA04ToMA02)) {
Loop_Actor_Walk_To_XYZ(kActorMcCoy, -148.12f, -144.13f, 34.27f, 0, 1, false, 0);
}
if (Global_Variable_Query(1) == 4 && !Game_Flag_Query(655)) {
@@ -156,7 +156,7 @@ void SceneScriptMA02::PlayerWalkedIn() {
Game_Flag_Set(655);
sub_401E4C();
Loop_Actor_Walk_To_XYZ(kActorMcCoy, 23.19f, -144.12f, 378.27f, 0, 0, false, 0);
- Game_Flag_Set(33);
+ Game_Flag_Set(kFlagMA02toMA06);
Set_Enter(52, 52);
// return true;
return;
@@ -171,7 +171,7 @@ void SceneScriptMA02::PlayerWalkedIn() {
Game_Flag_Set(654);
Autosave_Game(3);
}
- if (Global_Variable_Query(1) < 4 && !Game_Flag_Query(36) && Actor_Query_Goal_Number(kActorMaggie) != 2) {
+ if (Global_Variable_Query(1) < 4 && !Game_Flag_Query(kFlagMA04ToMA02) && Actor_Query_Goal_Number(kActorMaggie) != 2) {
Actor_Set_Goal_Number(kActorMaggie, 1);
if (!Game_Flag_Query(60)) {
Game_Flag_Set(60);
@@ -187,14 +187,14 @@ void SceneScriptMA02::PlayerWalkedIn() {
}
}
}
- Game_Flag_Reset(36);
- Game_Flag_Reset(34);
+ Game_Flag_Reset(kFlagMA04ToMA02);
+ Game_Flag_Reset(kFlagMA06ToMA02);
//return false;
return;
}
void SceneScriptMA02::PlayerWalkedOut() {
- Ambient_Sounds_Remove_All_Non_Looping_Sounds(1);
+ Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
}
@@ -225,41 +225,24 @@ bool SceneScriptMA02::sub_401F7C() {
}
void SceneScriptMA02::sub_402044() {
- // int v0;
- // int v1;
- // int v3[7];
-
- // v0 = 0;
-
int i = 0;
int arr[7];
if (Global_Variable_Query(1) < 4 && Game_Flag_Query(45)) {
- // v0 = 1;
- // v3[0] = 0;
arr[i++] = 0;
}
-
- // v1 = v0 + 1;
- // v3[v0] = 1;
arr[i++] = 1;
if (Global_Variable_Query(1) >= 3) {
- // v3[v1] = 2;
- // v1 = v0 + 2;
arr[i++] = 2;
}
if (Global_Variable_Query(1) >= 2 && Global_Variable_Query(1) <= 4) {
- // v3[v1++] = 3;
arr[i++] = 3;
}
if (Game_Flag_Query(171) && Game_Flag_Query(170)) {
- // v3[v1++] = 4;
arr[i++] = 4;
}
- //if (v1 <= 0) {
if (i == 0) {
Global_Variable_Set(52, -1);
} else {
- // Global_Variable_Set(52, v3[Random_Query(0, v1 - 1)]);
Global_Variable_Set(52, arr[Random_Query(0, i - 1)]);
}
}
diff --git a/engines/bladerunner/script/scene/ma04.cpp b/engines/bladerunner/script/scene/ma04.cpp
index b0b6735d17..a7725f95e3 100644
--- a/engines/bladerunner/script/scene/ma04.cpp
+++ b/engines/bladerunner/script/scene/ma04.cpp
@@ -25,16 +25,16 @@
namespace BladeRunner {
void SceneScriptMA04::InitializeScene() {
- if (Game_Flag_Query(63)) {
+ if (Game_Flag_Query(kFlagMA05toMA04)) {
Setup_Scene_Information(-7199.0f, 953.97f, 1579.0f, 502);
if (Global_Variable_Query(1) != 2 && Global_Variable_Query(1) != 3) {
- Scene_Loop_Start_Special(0, 0, 0);
+ Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 0, false);
}
} else if (Game_Flag_Query(35)) {
Setup_Scene_Information(-7099.0f, 954.0f, 1866.0f, 502);
} else if (Game_Flag_Query(647)) {
Setup_Scene_Information(-7107.0f, 954.0f, 1742.0f, 502);
- Scene_Loop_Start_Special(0, 4, 0);
+ Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 4, false);
} else {
Setup_Scene_Information(-7143.0f, 954.0f, 1868.0f, 733);
}
@@ -80,7 +80,7 @@ bool SceneScriptMA04::MouseClick(int x, int y) {
bool SceneScriptMA04::ClickedOn3DObject(const char *objectName, bool a2) {
if (Object_Query_Click("BED-SHEETS", objectName)) {
- sub_403DA8();
+ sleep();
return false;
}
if (Object_Query_Click("BED-TV-1", objectName) || Object_Query_Click("BED-TV-2", objectName)) {
@@ -89,7 +89,7 @@ bool SceneScriptMA04::ClickedOn3DObject(const char *objectName, bool a2) {
Unclickable_Object("BED-TV-1");
Unclickable_Object("BED-TV-2");
Sound_Play(132, 100, 0, 0, 50);
- sub_403864();
+ turnOnTV();
return false;
}
return true;
@@ -108,7 +108,7 @@ bool SceneScriptMA04::ClickedOnItem(int itemId, bool a2) {
bool SceneScriptMA04::ClickedOnExit(int exitId) {
if (exitId == 0) {
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -7099.0f, 954.0f, 1866.0f, 0, 1, false, 0)) {
- Game_Flag_Set(36);
+ Game_Flag_Set(kFlagMA04ToMA02);
Set_Enter(10, 49);
}
return true;
@@ -121,7 +121,7 @@ bool SceneScriptMA04::ClickedOnExit(int exitId) {
Overlay_Remove("MA04OVER");
}
Loop_Actor_Walk_To_XYZ(kActorMcCoy, -7199.0f, 955.0f, 1675.0f, 0, 0, false, 1);
- Game_Flag_Set(62);
+ Game_Flag_Set(kFlagMA04toMA05);
if (Global_Variable_Query(1) != 2 && Global_Variable_Query(1) != 3) {
Async_Actor_Walk_To_XYZ(kActorMcCoy, -7199.0f, 956.17f, 1568.0f, 0, false);
}
@@ -145,7 +145,7 @@ bool SceneScriptMA04::ClickedOn2DRegion(int region) {
return false;
}
if (region == 1) {
- sub_403DA8();
+ sleep();
return true;
}
if (region == 0) {
@@ -243,7 +243,7 @@ void SceneScriptMA04::PlayerWalkedIn() {
Loop_Actor_Walk_To_XYZ(kActorMcCoy, -7143.0f, 954.0f, 1868.0f, 0, 1, false, 0);
}
Game_Flag_Reset(35);
- Game_Flag_Reset(63);
+ Game_Flag_Reset(kFlagMA05toMA04);
Game_Flag_Reset(647);
if (Game_Flag_Query(61)) {
if (Global_Variable_Query(1) == 2 && !Actor_Clue_Query(kActorMcCoy, kCluePhoneCallGuzza)) {
@@ -265,9 +265,9 @@ void SceneScriptMA04::PlayerWalkedIn() {
Actor_Says(kActorGuzza, 60, 3);
Actor_Says(kActorGuzza, 70, 3);
Sound_Play(123, 100, 0, 0, 50);
- Actor_Clue_Acquire(kActorMcCoy, kCluePhoneCallGuzza, 1, kActorGuzza);
- Spinner_Set_Selectable_Destination_Flag(5, 1);
- Game_Flag_Set(186);
+ Actor_Clue_Acquire(kActorMcCoy, kCluePhoneCallGuzza, false, kActorGuzza);
+ Spinner_Set_Selectable_Destination_Flag(kSpinnerDestinationTyrellBuilding, true);
+ Game_Flag_Set(kFlagRC01PoliceDone);
if (!Game_Flag_Query(163)) {
Game_Flag_Set(163);
Item_Remove_From_World(66);
@@ -295,10 +295,10 @@ void SceneScriptMA04::PlayerWalkedIn() {
}
void SceneScriptMA04::PlayerWalkedOut() {
- Ambient_Sounds_Remove_All_Non_Looping_Sounds(1);
+ Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
if (Game_Flag_Query(678)) {
- Ambient_Sounds_Remove_All_Non_Looping_Sounds(1);
+ Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
Outtake_Play(1, 0, -1);
Game_Flag_Reset(678);
@@ -368,7 +368,7 @@ void SceneScriptMA04::sub_4028A8() {
Actor_Says(kActorMcCoy, 2525, 15);
Actor_Says(kActorDektora, 420, 3);
Sound_Play(123, 100, 0, 0, 50);
- Actor_Clue_Acquire(kActorMcCoy, kCluePhoneCallDektora1, 1, -1);
+ Actor_Clue_Acquire(kActorMcCoy, kCluePhoneCallDektora1, true, -1);
} else {
Actor_Says_With_Pause(kActorMcCoy, 2505, 0.5f, 19);
Actor_Says(kActorDektora, 430, 3);
@@ -382,7 +382,7 @@ void SceneScriptMA04::sub_4028A8() {
Actor_Says(kActorDektora, 490, 3);
Sound_Play(123, 100, 0, 0, 50);
Actor_Says(kActorMcCoy, 2540, 15);
- Actor_Clue_Acquire(kActorMcCoy, kCluePhoneCallDektora2, 1, -1);
+ Actor_Clue_Acquire(kActorMcCoy, kCluePhoneCallDektora2, true, -1);
}
}
@@ -403,7 +403,7 @@ void SceneScriptMA04::sub_402F2C() {
if (!Game_Flag_Query(378)) {
Actor_Says(kActorLucy, 640, 3);
}
- Actor_Clue_Acquire(kActorMcCoy, kCluePhoneCallLucy2, 1, -1);
+ Actor_Clue_Acquire(kActorMcCoy, kCluePhoneCallLucy2, true, -1);
} else {
Actor_Says(kActorLucy, 590, 3);
Actor_Says(kActorMcCoy, 2565, 12);
@@ -416,7 +416,7 @@ void SceneScriptMA04::sub_402F2C() {
if (!Game_Flag_Query(378)) {
Actor_Says(kActorLucy, 640, 3);
}
- Actor_Clue_Acquire(kActorMcCoy, kCluePhoneCallLucy1, 1, -1);
+ Actor_Clue_Acquire(kActorMcCoy, kCluePhoneCallLucy1, true, -1);
}
Sound_Play(123, 100, 0, 0, 50);
}
@@ -439,7 +439,7 @@ void SceneScriptMA04::sub_4032A0() {
Actor_Says(kActorSteele, 810, 3);
Actor_Says(kActorSteele, 820, 3);
Sound_Play(123, 100, 0, 0, 50);
- Actor_Clue_Acquire(kActorMcCoy, kCluePhoneCallCrystal, 1, -1);
+ Actor_Clue_Acquire(kActorMcCoy, kCluePhoneCallCrystal, true, -1);
}
void SceneScriptMA04::sub_4034D8() {
@@ -471,10 +471,10 @@ void SceneScriptMA04::sub_4034D8() {
Actor_Says(kActorClovis, 530, 3);
Actor_Says(kActorClovis, 540, 3);
Sound_Play(123, 100, 0, 0, 50);
- Actor_Clue_Acquire(kActorMcCoy, kCluePhoneCallClovis, 1, -1);
+ Actor_Clue_Acquire(kActorMcCoy, kCluePhoneCallClovis, true, -1);
}
-void SceneScriptMA04::sub_403864() {
+void SceneScriptMA04::turnOnTV() {
Overlay_Play("MA04OVR2", 0, 1, 0, 0);
switch (Global_Variable_Query(52)) {
case 4:
@@ -533,7 +533,7 @@ void SceneScriptMA04::sub_403864() {
}
}
-void SceneScriptMA04::sub_403DA8() {
+void SceneScriptMA04::sleep() {
if (!Loop_Actor_Walk_To_Scene_Object(kActorMcCoy, "BED-SHEETS", 12, true, false)) {
Actor_Says(kActorMcCoy, 8530, 12);
Music_Stop(4);
@@ -558,7 +558,7 @@ void SceneScriptMA04::sub_403DA8() {
} else {
Set_Enter(10, 50);
}
- Scene_Loop_Start_Special(1, 3, 0);
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 3, false);
}
}
diff --git a/engines/bladerunner/script/scene/ma05.cpp b/engines/bladerunner/script/scene/ma05.cpp
index fabe053bd4..51ae26a7b4 100644
--- a/engines/bladerunner/script/scene/ma05.cpp
+++ b/engines/bladerunner/script/scene/ma05.cpp
@@ -47,7 +47,7 @@ void SceneScriptMA05::InitializeScene() {
Ambient_Sounds_Add_Sound(403, 3, 3, 32, 32, 100, 100, -101, -101, 0, 0);
}
if (Global_Variable_Query(1) != 2 && Global_Variable_Query(1) != 3) {
- Scene_Loop_Start_Special(0, 0, 0);
+ Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 0, false);
}
Scene_Loop_Set_Default(1);
}
@@ -78,8 +78,8 @@ bool SceneScriptMA05::ClickedOnExit(int exitId) {
if (exitId == 0) {
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -7199.0f, 956.17f, 1579.0f, 0, 0, false, 0)) {
Loop_Actor_Walk_To_XYZ(kActorMcCoy, -7199.0f, 956.17f, 1579.0f, 0, 0, false, 0);
- Game_Flag_Set(63);
- Ambient_Sounds_Remove_All_Non_Looping_Sounds(1);
+ Game_Flag_Set(kFlagMA05toMA04);
+ Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
Async_Actor_Walk_To_XYZ(kActorMcCoy, -7199.0f, 953.97f, 1685.0f, 0, false);
Set_Enter(50, 50);
@@ -97,7 +97,7 @@ void SceneScriptMA05::SceneFrameAdvanced(int frame) {
if (frame == 20) {
Sound_Play(102, 70, -100, 100, 50);
}
- //return true;
+ //return true;
}
void SceneScriptMA05::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bool currentSet) {
@@ -107,7 +107,7 @@ void SceneScriptMA05::PlayerWalkedIn() {
Music_Play(2, 52, 0, 2, -1, 0, 0);
if ((Random_Query(0, 4) == 1 || (Game_Flag_Query(146) == 1 && !Game_Flag_Query(61))) && Global_Variable_Query(1) == 1) {
Scene_Loop_Set_Default(1);
- Scene_Loop_Start_Special(2, 3, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 3, true);
Sound_Play(69, 100, 0, 0, 50);
}
if (Game_Flag_Query(146) && !Game_Flag_Query(61)) {
diff --git a/engines/bladerunner/script/scene/ma06.cpp b/engines/bladerunner/script/scene/ma06.cpp
index 42845ecd8f..e545e291b3 100644
--- a/engines/bladerunner/script/scene/ma06.cpp
+++ b/engines/bladerunner/script/scene/ma06.cpp
@@ -28,7 +28,7 @@ void SceneScriptMA06::InitializeScene() {
Setup_Scene_Information(40.0f, 1.0f, -20.0f, 400);
Ambient_Sounds_Add_Looping_Sound(210, 50, 0, 1);
Ambient_Sounds_Add_Looping_Sound(408, 33, 0, 1);
- Scene_Loop_Start_Special(0, 0, 0);
+ Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 0, false);
Scene_Loop_Set_Default(1);
Sound_Play(209, 100, 50, 50, 100);
}
@@ -73,28 +73,29 @@ void SceneScriptMA06::PlayerWalkedIn() {
Loop_Actor_Walk_To_XYZ(kActorMcCoy, 40.0f, 1.35f, 0.0f, 0, 0, false, 0);
Actor_Face_Object(kActorMcCoy, "panel", true);
Delay(500);
- sub_4014E4();
- if (sub_4012C0()) {
+ activateElevator();
+ if (isElevatorOnDifferentFloor()) {
Sound_Play(114, 25, 0, 0, 50);
Delay(4000);
}
- Game_Flag_Reset(37);
- Game_Flag_Reset(33);
- Game_Flag_Reset(57);
- if (Game_Flag_Query(38)) {
+ Game_Flag_Reset(kFlagMA01toMA06);
+ Game_Flag_Reset(kFlagMA02toMA06);
+ Game_Flag_Reset(kFlagMA07toMA06);
+
+ if (Game_Flag_Query(kFlagMA06toMA01)) {
Set_Enter(49, 48);
- } else if (Game_Flag_Query(34)) {
+ } else if (Game_Flag_Query(kFlagMA06ToMA02)) {
Set_Enter(10, 49);
- } else {
+ } else { // kFlagMA06ToMA07
Set_Enter(53, 53);
}
- Scene_Loop_Start_Special(1, 3, 1);
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 3, true);
Sound_Play(208, 100, 50, 50, 50);
//return true;
}
void SceneScriptMA06::PlayerWalkedOut() {
- Ambient_Sounds_Remove_All_Non_Looping_Sounds(1);
+ Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
Player_Gains_Control();
}
@@ -102,34 +103,36 @@ void SceneScriptMA06::PlayerWalkedOut() {
void SceneScriptMA06::DialogueQueueFlushed(int a1) {
}
-bool SceneScriptMA06::sub_4012C0() {
- return (Game_Flag_Query(37) && !Game_Flag_Query(38)) || (Game_Flag_Query(33) && !Game_Flag_Query(34)) || (Game_Flag_Query(57) && !Game_Flag_Query(58));
+bool SceneScriptMA06::isElevatorOnDifferentFloor() {
+ return (Game_Flag_Query(kFlagMA01toMA06) && !Game_Flag_Query(kFlagMA06toMA01))
+ || (Game_Flag_Query(kFlagMA02toMA06) && !Game_Flag_Query(kFlagMA06ToMA02))
+ || (Game_Flag_Query(kFlagMA07toMA06) && !Game_Flag_Query(kFlagMA06toMA07));
}
-void SceneScriptMA06::sub_4014E4() {
- Game_Flag_Reset(38);
- Game_Flag_Reset(34);
- Game_Flag_Reset(58);
+void SceneScriptMA06::activateElevator() {
+ Game_Flag_Reset(kFlagMA06toMA01);
+ Game_Flag_Reset(kFlagMA06ToMA02);
+ Game_Flag_Reset(kFlagMA06toMA07);
while (true) {
- if (Game_Flag_Query(34)) {
+ if (Game_Flag_Query(kFlagMA06ToMA02)) {
break;
}
- if (Game_Flag_Query(38)) {
+ if (Game_Flag_Query(kFlagMA06toMA01)) {
break;
}
- if (Game_Flag_Query(58)) {
+ if (Game_Flag_Query(kFlagMA06toMA07)) {
break;
}
Actor_Says(kActorAnsweringMachine, 80, 3);
Player_Gains_Control();
- int v1 = Elevator_Activate(1);
+ int floor = Elevator_Activate(1);
Player_Loses_Control();
- Scene_Loop_Start_Special(2, 1, 1);
- if (v1 > 1) {
- Game_Flag_Set(58);
- } else if (v1 == 1) {
- if (Game_Flag_Query(250)) {
- Game_Flag_Set(38);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 1, true);
+ if (floor > 1) {
+ Game_Flag_Set(kFlagMA06toMA07);
+ } else if (floor == 1) {
+ if (Game_Flag_Query(kFlagMA01Locked)) {
+ Game_Flag_Set(kFlagMA06toMA01);
} else {
Sound_Play(412, 100, 0, 0, 50);
Delay(500);
@@ -144,7 +147,7 @@ void SceneScriptMA06::sub_4014E4() {
Delay(500);
Actor_Says(kActorMcCoy, 8527, 3);
} else {
- Game_Flag_Set(34);
+ Game_Flag_Set(kFlagMA06ToMA02);
Actor_Says(kActorAnsweringMachine, 90, 3);
}
}
diff --git a/engines/bladerunner/script/scene/ma07.cpp b/engines/bladerunner/script/scene/ma07.cpp
index 59d1593012..aa87a37721 100644
--- a/engines/bladerunner/script/scene/ma07.cpp
+++ b/engines/bladerunner/script/scene/ma07.cpp
@@ -76,9 +76,9 @@ bool SceneScriptMA07::ClickedOnExit(int exitId) {
if (Global_Variable_Query(1) == 4 && Game_Flag_Query(671)) {
Actor_Set_Goal_Number(kActorMcCoy, 400);
} else {
- Ambient_Sounds_Remove_All_Non_Looping_Sounds(1);
+ Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
- Game_Flag_Set(57);
+ Game_Flag_Set(kFlagMA07toMA06);
Set_Enter(52, 52);
}
}
@@ -86,7 +86,7 @@ bool SceneScriptMA07::ClickedOnExit(int exitId) {
}
if (exitId == 1) {
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -400.0f, -162.8f, 185.08f, 0, 1, false, 0)) {
- Ambient_Sounds_Remove_All_Non_Looping_Sounds(1);
+ Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
Game_Flag_Set(672);
Game_Flag_Reset(179);
@@ -143,7 +143,7 @@ void SceneScriptMA07::PlayerWalkedIn() {
Actor_Voice_Over(1400, kActorVoiceOver);
Delay(1000);
Game_Flag_Reset(666);
- Game_Flag_Set(34);
+ Game_Flag_Set(kFlagMA06ToMA02);
Set_Enter(10, 49);
}
//return false;
diff --git a/engines/bladerunner/script/scene/nr08.cpp b/engines/bladerunner/script/scene/nr08.cpp
index 15d5be7451..70b8542173 100644
--- a/engines/bladerunner/script/scene/nr08.cpp
+++ b/engines/bladerunner/script/scene/nr08.cpp
@@ -150,7 +150,7 @@ void SceneScriptNR08::SceneFrameAdvanced(int frame) {
Game_Flag_Set(636);
Scene_Exits_Disable();
Scene_Loop_Set_Default(1);
- Scene_Loop_Start_Special(2, 3, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 3, true);
}
if (frame == 95) {
Actor_Put_In_Set(kActorDektora, 91);
diff --git a/engines/bladerunner/script/scene/nr10.cpp b/engines/bladerunner/script/scene/nr10.cpp
index 77f3cab3f6..8c07ac47a1 100644
--- a/engines/bladerunner/script/scene/nr10.cpp
+++ b/engines/bladerunner/script/scene/nr10.cpp
@@ -71,7 +71,7 @@ bool SceneScriptNR10::ClickedOn3DObject(const char *objectName, bool a2) {
Ambient_Sounds_Remove_Looping_Sound(452, true);
Sound_Play(453, 52, 0, 0, 50);
Scene_Loop_Set_Default(0);
- Scene_Loop_Start_Special(2, 0, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 0, true);
Un_Combat_Target_Object("BOX18");
Scene_Exits_Enable();
return true;
diff --git a/engines/bladerunner/script/scene/nr11.cpp b/engines/bladerunner/script/scene/nr11.cpp
index c194f5a17a..8c282d3387 100644
--- a/engines/bladerunner/script/scene/nr11.cpp
+++ b/engines/bladerunner/script/scene/nr11.cpp
@@ -122,7 +122,7 @@ bool SceneScriptNR11::ClickedOn3DObject(const char *objectName, bool a2) {
}
Actor_Set_Goal_Number(kActorMcCoy, 230);
Scene_Loop_Set_Default(3);
- Scene_Loop_Start_Special(2, 2, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 2, true);
} else if (Actor_Query_Goal_Number(kActorDektora) == 250) {
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 24.0f, 0.33f, 0.0f, 0, 1, false, 0)) {
Actor_Face_XYZ(kActorMcCoy, -180.0f, 0.0f, -170.0f, true);
@@ -260,7 +260,7 @@ void SceneScriptNR11::SceneFrameAdvanced(int frame) {
}
Actor_Set_Goal_Number(kActorMcCoy, 230);
Scene_Loop_Set_Default(3);
- Scene_Loop_Start_Special(2, 2, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 2, true);
Game_Flag_Reset(635);
} else {
if (frame < 61 || frame > 120) {
diff --git a/engines/bladerunner/script/scene/ps05.cpp b/engines/bladerunner/script/scene/ps05.cpp
index 656550e864..32eb5d5b46 100644
--- a/engines/bladerunner/script/scene/ps05.cpp
+++ b/engines/bladerunner/script/scene/ps05.cpp
@@ -162,31 +162,26 @@ void SceneScriptPS05::DialogueQueueFlushed(int a1) {
}
void SceneScriptPS05::sub_401B34() {
- int v0;
- int v1;
- int v3[7];
-
- v0 = 0;
+ int i = 0;
+ int arr[7];
if (Global_Variable_Query(1) < 4 && Game_Flag_Query(45)) {
- v0 = 1;
- v3[0] = 0;
+ arr[i++] = 0;
}
- v1 = v0 + 1;
- v3[v0] = 1;
+ arr[i++] = 1;
if (Global_Variable_Query(1) >= 3) {
- v3[v1] = 2;
- v1 = v0 + 2;
+ arr[i++] = 2;
}
if (Global_Variable_Query(1) >= 2 && Global_Variable_Query(1) <= 4) {
- v3[v1++] = 3;
+ arr[i++] = 3;
}
if (Game_Flag_Query(171) && Game_Flag_Query(170)) {
- v3[v1++] = 4;
+ arr[i++] = 4;
}
- if (v1 <= 0) {
+ if (i == 0) {
Global_Variable_Set(52, -1);
- } else {
- Global_Variable_Set(52, v3[Random_Query(0, v1 - 1)]);
+ }
+ else {
+ Global_Variable_Set(52, arr[Random_Query(0, i - 1)]);
}
}
diff --git a/engines/bladerunner/script/scene/rc01.cpp b/engines/bladerunner/script/scene/rc01.cpp
index 642f4c7bb0..8a5b728c86 100644
--- a/engines/bladerunner/script/scene/rc01.cpp
+++ b/engines/bladerunner/script/scene/rc01.cpp
@@ -27,11 +27,11 @@ namespace BladeRunner {
void SceneScriptRC01::InitializeScene() {
#if _DEBUG
//TODO: not part of game, remove
- //Game_Flag_Set(24); // force skip intro
+ //Game_Flag_Set(kFlagIntroPlayed); // force skip intro
#endif
- if (!Game_Flag_Query(24)) {
- Ambient_Sounds_Remove_All_Non_Looping_Sounds(1);
+ if (!Game_Flag_Query(kFlagIntroPlayed)) {
+ Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
Outtake_Play(28, 1, -1); // WSTLGO_E.VQA
Outtake_Play(41, 1, -1); // BRLOGO_E.VQA
@@ -52,14 +52,14 @@ void SceneScriptRC01::InitializeScene() {
if (Global_Variable_Query(1) > 1 && Game_Flag_Query(710)) {
Scene_Exit_Add_2D_Exit(2, 0, 0, 10, 479, 3);
}
- if (!Game_Flag_Query(186)) {
+ if (!Game_Flag_Query(kFlagRC01PoliceDone)) {
Scene_2D_Region_Add(0, 0, 294, 296, 479);
}
- Ambient_Sounds_Remove_All_Non_Looping_Sounds(0);
+ Ambient_Sounds_Remove_All_Non_Looping_Sounds(false);
Ambient_Sounds_Add_Looping_Sound(54, 30, 0, 1); // CTRAIN1.AUD
- if (!Game_Flag_Query(186)) {
+ if (!Game_Flag_Query(kFlagRC01PoliceDone)) {
Ambient_Sounds_Add_Sound(181, 5, 70, 12, 12, -100, 100, -101, -101, 0, 0); // 67_0470R.AUD
Ambient_Sounds_Add_Sound(182, 5, 70, 12, 12, -100, 100, -101, -101, 0, 0); // 67_0480R.AUD
Ambient_Sounds_Add_Sound(183, 5, 70, 12, 12, -100, 100, -101, -101, 0, 0); // 67_0500R.AUD
@@ -83,9 +83,9 @@ void SceneScriptRC01::InitializeScene() {
Ambient_Sounds_Add_Sound(67, 10, 50, 30, 50, -100, 100, -101, -101, 0, 0); // SPIN2A.AUD
Ambient_Sounds_Add_Sound(87, 20, 80, 20, 40, -100, 100, -101, -101, 0, 0); // SIREN2.AUD
- if (Game_Flag_Query(186)) {
+ if (Game_Flag_Query(kFlagRC01PoliceDone)) {
if (!Game_Flag_Query(9) && !Game_Flag_Query(114)) {
- Scene_Loop_Start_Special(0, 5, 0);
+ Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 5, false);
}
if (Game_Flag_Query(249)) {
Scene_Loop_Set_Default(6);
@@ -94,7 +94,7 @@ void SceneScriptRC01::InitializeScene() {
}
} else {
if (!Game_Flag_Query(9) && !Game_Flag_Query(114)) {
- Scene_Loop_Start_Special(0, 0, 0);
+ Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 0, false);
}
Scene_Loop_Set_Default(1);
}
@@ -148,7 +148,7 @@ void SceneScriptRC01::SceneLoaded() {
Unclickable_Object("DOORWAY01");
Unobstacle_Object("DOORWAY01", true);
- if (Game_Flag_Query(186)) {
+ if (Game_Flag_Query(kFlagRC01PoliceDone)) {
Unclickable_Object("70_1");
Unclickable_Object("70_2");
Unclickable_Object("70_3");
@@ -169,7 +169,7 @@ void SceneScriptRC01::SceneLoaded() {
Unobstacle_Object("BARICADE05", true);
}
- if (!Game_Flag_Query(186)) {
+ if (!Game_Flag_Query(kFlagRC01PoliceDone)) {
Preload(13);
Preload(14);
Preload(19);
@@ -181,7 +181,7 @@ void SceneScriptRC01::SceneLoaded() {
Item_Add_To_World(66, 938, 69, -148.60f, -0.30f, 225.15f, 256, 24, 24, false, true, false, true);
}
- if (!Game_Flag_Query(24)) {
+ if (!Game_Flag_Query(kFlagIntroPlayed)) {
ADQ_Flush();
Actor_Voice_Over(1830, kActorVoiceOver);
Actor_Voice_Over(1850, kActorVoiceOver);
@@ -190,7 +190,7 @@ void SceneScriptRC01::SceneLoaded() {
I_Sez("MG: Is David Leary a self-respecting human or is he powered by rechargeable");
I_Sez("batteries?\n");
}
- Game_Flag_Set(24);
+ Game_Flag_Set(kFlagIntroPlayed);
}
}
@@ -343,7 +343,7 @@ bool SceneScriptRC01::ClickedOnItem(int itemId, bool a2) {
}
-void SceneScriptRC01::sub_4037AC() {
+void SceneScriptRC01::walkToCenter() {
Player_Loses_Control();
Game_Flag_Set(182);
Actor_Set_Immunity_To_Obstacles(kActorMcCoy, true);
@@ -378,7 +378,7 @@ bool SceneScriptRC01::ClickedOnExit(int exitId) {
}
if (exitId == 1) {
if (Game_Flag_Query(486)) {
- Spinner_Set_Selectable_Destination_Flag(6, 1);
+ Spinner_Set_Selectable_Destination_Flag(kSpinnerDestinationDNARow, true);
}
I_Sez("MG: Leaving already? The fun is just beginning!");
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -151.98f, -0.3f, 318.15f, 0, 1, false, 0)) {
@@ -400,115 +400,115 @@ bool SceneScriptRC01::ClickedOnExit(int exitId) {
Game_Flag_Reset(179);
Game_Flag_Reset(178);
int spinnerDest;
- if (Game_Flag_Query(186)) {
- spinnerDest = Spinner_Interface_Choose_Dest(8, 1);
+ if (Game_Flag_Query(kFlagRC01PoliceDone)) {
+ spinnerDest = Spinner_Interface_Choose_Dest(kSpinnerDestinationNightclubRow, true);
} else {
- spinnerDest = Spinner_Interface_Choose_Dest(3, 1);
+ spinnerDest = Spinner_Interface_Choose_Dest(kSpinnerDestinationChinatown, true);
}
- if (spinnerDest) {
- switch (spinnerDest) {
- case 1:
- Game_Flag_Set(179);
- Game_Flag_Reset(249);
- Game_Flag_Set(250);
- Set_Enter(49, 48);
- if (Game_Flag_Query(186)) {
- Scene_Loop_Start_Special(1, 9, 1);
- } else {
- Scene_Loop_Start_Special(1, 4, 1);
- }
- break;
- case 3:
- Game_Flag_Set(176);
- Game_Flag_Reset(249);
- Game_Flag_Set(248);
- Set_Enter(4, 13);
- if (Game_Flag_Query(186)) {
- Scene_Loop_Start_Special(1, 9, 1);
- } else {
- Scene_Loop_Start_Special(1, 4, 1);
- }
- break;
- case 5:
- Game_Flag_Set(261);
- Game_Flag_Reset(249);
- Game_Flag_Set(307);
- Set_Enter(17, 82);
- if (Game_Flag_Query(186)) {
- Scene_Loop_Start_Special(1, 9, 1);
- } else {
- Scene_Loop_Start_Special(1, 4, 1);
- }
- break;
- case 4:
- Game_Flag_Set(180);
- Game_Flag_Reset(249);
- Game_Flag_Set(252);
- Set_Enter(0, 0);
- if (Game_Flag_Query(186)) {
- Scene_Loop_Start_Special(1, 9, 1);
- } else {
- Scene_Loop_Start_Special(1, 4, 1);
- }
- break;
- case 6:
- Game_Flag_Set(177);
- Game_Flag_Reset(249);
- Game_Flag_Set(253);
- Set_Enter(7, 25);
- if (Game_Flag_Query(186)) {
- Scene_Loop_Start_Special(1, 9, 1);
- } else {
- Scene_Loop_Start_Special(1, 4, 1);
- }
- break;
- case 7:
- Game_Flag_Set(258);
- Game_Flag_Reset(249);
- Game_Flag_Set(254);
- Set_Enter(20, 2);
- if (Game_Flag_Query(186)) {
- Scene_Loop_Start_Special(1, 9, 1);
- } else {
- Scene_Loop_Start_Special(1, 4, 1);
- }
- break;
- case 8:
- Game_Flag_Set(181);
- Game_Flag_Reset(249);
- Game_Flag_Set(255);
- Set_Enter(54, 54);
- if (Game_Flag_Query(186)) {
- Scene_Loop_Start_Special(1, 9, 1);
- } else {
- Scene_Loop_Start_Special(1, 4, 1);
- }
- break;
- case 9:
- Game_Flag_Set(257);
- Game_Flag_Reset(249);
- Game_Flag_Set(256);
- Set_Enter(37, 34);
- if (Game_Flag_Query(186)) {
- Scene_Loop_Start_Special(1, 9, 1);
- } else {
- Scene_Loop_Start_Special(1, 4, 1);
- }
- break;
- default:
- sub_4037AC();
- break;
- }
- } else {
+
+ switch (spinnerDest) {
+ case kSpinnerDestinationPoliceStation:
Game_Flag_Set(178);
Game_Flag_Reset(249);
Game_Flag_Set(251);
Set_Enter(61, 65);
- if (Game_Flag_Query(186)) {
- Scene_Loop_Start_Special(1, 9, 1);
+ if (Game_Flag_Query(kFlagRC01PoliceDone)) {
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 9, true);
+ } else {
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 4, true);
+ }
+ break;
+ case kSpinnerDestinationMcCoysApartment:
+ Game_Flag_Set(179);
+ Game_Flag_Reset(249);
+ Game_Flag_Set(250);
+ Set_Enter(49, 48);
+ if (Game_Flag_Query(kFlagRC01PoliceDone)) {
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 9, true);
+ } else {
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 4, true);
+ }
+ break;
+ case kSpinnerDestinationChinatown:
+ Game_Flag_Set(176);
+ Game_Flag_Reset(249);
+ Game_Flag_Set(248);
+ Set_Enter(4, 13);
+ if (Game_Flag_Query(kFlagRC01PoliceDone)) {
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 9, true);
+ } else {
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 4, true);
+ }
+ break;
+ case kSpinnerDestinationTyrellBuilding:
+ Game_Flag_Set(261);
+ Game_Flag_Reset(249);
+ Game_Flag_Set(307);
+ Set_Enter(17, 82);
+ if (Game_Flag_Query(kFlagRC01PoliceDone)) {
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 9, true);
+ } else {
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 4, true);
+ }
+ break;
+ case kSpinnerDestinationAnimoidRow:
+ Game_Flag_Set(180);
+ Game_Flag_Reset(249);
+ Game_Flag_Set(252);
+ Set_Enter(0, 0);
+ if (Game_Flag_Query(kFlagRC01PoliceDone)) {
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 9, true);
+ } else {
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 4, true);
+ }
+ break;
+ case kSpinnerDestinationDNARow:
+ Game_Flag_Set(177);
+ Game_Flag_Reset(249);
+ Game_Flag_Set(253);
+ Set_Enter(7, 25);
+ if (Game_Flag_Query(kFlagRC01PoliceDone)) {
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 9, true);
+ } else {
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 4, true);
+ }
+ break;
+ case kSpinnerDestinationBradburyBuilding:
+ Game_Flag_Set(258);
+ Game_Flag_Reset(249);
+ Game_Flag_Set(254);
+ Set_Enter(20, 2);
+ if (Game_Flag_Query(kFlagRC01PoliceDone)) {
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 9, true);
+ } else {
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 4, true);
+ }
+ break;
+ case kSpinnerDestinationNightclubRow:
+ Game_Flag_Set(181);
+ Game_Flag_Reset(249);
+ Game_Flag_Set(255);
+ Set_Enter(54, 54);
+ if (Game_Flag_Query(kFlagRC01PoliceDone)) {
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 9, true);
+ } else {
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 4, true);
+ }
+ break;
+ case kSpinnerDestinationHysteriaHall:
+ Game_Flag_Set(257);
+ Game_Flag_Reset(249);
+ Game_Flag_Set(256);
+ Set_Enter(37, 34);
+ if (Game_Flag_Query(kFlagRC01PoliceDone)) {
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 9, true);
} else {
- Scene_Loop_Start_Special(1, 4, 1);
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 4, true);
}
+ break;
+ default:
+ walkToCenter();
+ break;
}
}
return true;
@@ -526,7 +526,7 @@ bool SceneScriptRC01::ClickedOnExit(int exitId) {
}
void SceneScriptRC01::sub_403850() {
- if (!Game_Flag_Query(186) && !Loop_Actor_Walk_To_Scene_Object(kActorMcCoy, "BARICADE03", 36, true, false)) {
+ if (!Game_Flag_Query(kFlagRC01PoliceDone) && !Loop_Actor_Walk_To_Scene_Object(kActorMcCoy, "BARICADE03", 36, true, false)) {
Actor_Set_Goal_Number(kActorOfficerLeary, 0);
Actor_Face_Object(kActorMcCoy, "BARICADE03", true);
Loop_Actor_Walk_To_Actor(kActorOfficerLeary, kActorMcCoy, 36, 1, false);
@@ -575,7 +575,7 @@ void SceneScriptRC01::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
void SceneScriptRC01::PlayerWalkedIn() {
if (Game_Flag_Query(249) && !Game_Flag_Query(9) && !Game_Flag_Query(114)) {
- sub_4037AC();
+ walkToCenter();
}
if (Game_Flag_Query(114)) {
@@ -603,10 +603,10 @@ void SceneScriptRC01::PlayerWalkedIn() {
}
void SceneScriptRC01::PlayerWalkedOut() {
- Ambient_Sounds_Remove_All_Non_Looping_Sounds(1);
+ Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
if (!Game_Flag_Query(8) && !Game_Flag_Query(115) && Global_Variable_Query(1)) {
- Ambient_Sounds_Remove_All_Non_Looping_Sounds(1);
+ Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
Outtake_Play(31, 1, -1);
}
diff --git a/engines/bladerunner/script/scene/tb07.cpp b/engines/bladerunner/script/scene/tb07.cpp
index d296e90467..efd4fba197 100644
--- a/engines/bladerunner/script/scene/tb07.cpp
+++ b/engines/bladerunner/script/scene/tb07.cpp
@@ -254,7 +254,7 @@ void SceneScriptTB07::sub_401B0C() {
Actor_Set_At_XYZ(kActorTyrell, 68.0f, 12.0f, 288.0f, 0);
Actor_Change_Animation_Mode(kActorTyrell, 0);
Scene_Loop_Set_Default(3);
- Scene_Loop_Start_Special(2, 2, 0);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 2, false);
Actor_Start_Speech_Sample(kActorTyrell, 0);
Loop_Actor_Walk_To_XYZ(kActorTyrell, 44.0f, 12.0f, 176.0f, 0, 0, false, 0);
Actor_Face_Actor(kActorTyrell, kActorMcCoy, true);
diff --git a/engines/bladerunner/script/scene/ug01.cpp b/engines/bladerunner/script/scene/ug01.cpp
index 96e3cf1533..91d0d63467 100644
--- a/engines/bladerunner/script/scene/ug01.cpp
+++ b/engines/bladerunner/script/scene/ug01.cpp
@@ -80,7 +80,7 @@ bool SceneScriptUG01::ClickedOn3DObject(const char *objectName, bool a2) {
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -9.0f, -50.13f, -148.0f, 0, 1, false, 0) && !Game_Flag_Query(324)) {
Actor_Says(kActorMcCoy, 8525, 13);
Scene_Loop_Set_Default(3);
- Scene_Loop_Start_Special(2, 2, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 2, true);
Game_Flag_Set(324);
} else {
Actor_Says(kActorMcCoy, 8525, 13);
diff --git a/engines/bladerunner/script/scene/ug10.cpp b/engines/bladerunner/script/scene/ug10.cpp
index dfb616471f..1f07c6d828 100644
--- a/engines/bladerunner/script/scene/ug10.cpp
+++ b/engines/bladerunner/script/scene/ug10.cpp
@@ -74,7 +74,7 @@ void SceneScriptUG10::SceneLoaded() {
Obstacle_Object("SLUICEGATE_LEVER", true);
if (Global_Variable_Query(1) == 4 && !Game_Flag_Query(474) && Game_Flag_Query(172) && !Game_Flag_Query(693)) {
Scene_Loop_Set_Default(1);
- Scene_Loop_Start_Special(2, 6, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 6, true);
Game_Flag_Set(693);
//return true;
}
@@ -158,13 +158,13 @@ bool SceneScriptUG10::ClickedOn2DRegion(int region) {
} else if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 4.98f, 0.38f, 83.15f, 0, 1, false, 0)) {
if (Game_Flag_Query(474)) {
Scene_Loop_Set_Default(1);
- Scene_Loop_Start_Special(2, 0, 0);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 0, false);
Game_Flag_Reset(474);
Obstacle_Object("BOX01 BRIDGE", true);
Player_Loses_Control();
} else {
Scene_Loop_Set_Default(4);
- Scene_Loop_Start_Special(2, 3, 0);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 3, false);
Game_Flag_Set(474);
Unobstacle_Object("BOX01 BRIDGE", true);
Player_Loses_Control();
diff --git a/engines/bladerunner/script/scene/ug13.cpp b/engines/bladerunner/script/scene/ug13.cpp
index 0188782316..f380f07ace 100644
--- a/engines/bladerunner/script/scene/ug13.cpp
+++ b/engines/bladerunner/script/scene/ug13.cpp
@@ -87,13 +87,13 @@ bool SceneScriptUG13::ClickedOn3DObject(const char *objectName, bool a2) {
Actor_Face_Object(kActorMcCoy, "BOLLARD", true);
if (Game_Flag_Query(431)) {
Scene_Loop_Set_Default(1);
- Scene_Loop_Start_Special(2, 0, 0);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 0, false);
Game_Flag_Reset(431);
Game_Flag_Set(436);
return true;
} else {
Scene_Loop_Set_Default(4);
- Scene_Loop_Start_Special(2, 3, 0);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 3, false);
Game_Flag_Set(431);
Scene_Exit_Remove(0);
return true;
diff --git a/engines/bladerunner/script/scene/ug15.cpp b/engines/bladerunner/script/scene/ug15.cpp
index b866561367..6d0ae376e5 100644
--- a/engines/bladerunner/script/scene/ug15.cpp
+++ b/engines/bladerunner/script/scene/ug15.cpp
@@ -168,7 +168,7 @@ void SceneScriptUG15::SceneFrameAdvanced(int frame) {
Game_Flag_Set(724);
Game_Flag_Set(682);
Scene_Loop_Set_Default(3);
- Scene_Loop_Start_Special(2, 2, 1);
+ Scene_Loop_Start_Special(kSceneLoopMode2, 2, true);
Actor_Set_Goal_Number(kActorMcCoy, 390);
Actor_Query_XYZ(kActorFreeSlotA, &x, &y, &z);
if (-200.0f < x && -62.0f > x) {
diff --git a/engines/bladerunner/script/script.cpp b/engines/bladerunner/script/script.cpp
index 25d78e4991..aa3e23da52 100644
--- a/engines/bladerunner/script/script.cpp
+++ b/engines/bladerunner/script/script.cpp
@@ -38,6 +38,7 @@
#include "bladerunner/items.h"
#include "bladerunner/item_pickup.h"
#include "bladerunner/movement_track.h"
+#include "bladerunner/music.h"
#include "bladerunner/overlays.h"
#include "bladerunner/regions.h"
#include "bladerunner/set.h"
@@ -423,12 +424,14 @@ int ScriptBase::Actor_Query_Animation_Mode(int actorId) {
bool ScriptBase::Loop_Actor_Walk_To_Actor(int actorId, int otherActorId, int distance, int a4, bool run) {
_vm->gameWaitForActive();
- if (actorId == _vm->_walkingActorId) {
+ if (_vm->_walkingActorId == actorId) {
run = true;
}
_vm->_playerActorIdle = false;
bool isRunning;
+
bool result = _vm->_actors[actorId]->loopWalkToActor(otherActorId, distance, a4, run, true, &isRunning);
+
if (_vm->_playerActorIdle) {
result = true;
_vm->_playerActorIdle = false;
@@ -436,8 +439,8 @@ bool ScriptBase::Loop_Actor_Walk_To_Actor(int actorId, int otherActorId, int dis
if (isRunning == 1) {
_vm->_walkingActorId = actorId;
}
- Global_Variable_Set(37, actorId);
- Global_Variable_Set(38, isRunning);
+ Global_Variable_Set(kVariableWalkLoopActor, actorId);
+ Global_Variable_Set(kVariableWalkLoopRun, isRunning);
return result;
}
@@ -449,7 +452,9 @@ bool ScriptBase::Loop_Actor_Walk_To_Item(int actorId, int itemId, int a3, int a4
}
_vm->_playerActorIdle = false;
bool isRunning;
+
bool result = _vm->_actors[actorId]->loopWalkToItem(itemId, a3, a4, run, true, &isRunning);
+
if (_vm->_playerActorIdle == 1) {
result = true;
_vm->_playerActorIdle = false;
@@ -457,8 +462,8 @@ bool ScriptBase::Loop_Actor_Walk_To_Item(int actorId, int itemId, int a3, int a4
if (isRunning == 1) {
_vm->_walkingActorId = actorId;
}
- Global_Variable_Set(37, actorId);
- Global_Variable_Set(38, isRunning);
+ Global_Variable_Set(kVariableWalkLoopActor, actorId);
+ Global_Variable_Set(kVariableWalkLoopRun, isRunning);
return result;
}
@@ -470,7 +475,9 @@ bool ScriptBase::Loop_Actor_Walk_To_Scene_Object(int actorId, const char *object
}
_vm->_playerActorIdle = false;
bool isRunning;
+
bool result = _vm->_actors[actorId]->loopWalkToSceneObject(objectName, destinationOffset, a4, run, true, &isRunning);
+
if (_vm->_playerActorIdle) {
result = true;
_vm->_playerActorIdle = false;
@@ -478,52 +485,79 @@ bool ScriptBase::Loop_Actor_Walk_To_Scene_Object(int actorId, const char *object
if (isRunning == 1) {
_vm->_walkingActorId = actorId;
}
- Global_Variable_Set(37, actorId);
- Global_Variable_Set(38, isRunning);
+ Global_Variable_Set(kVariableWalkLoopActor, actorId);
+ Global_Variable_Set(kVariableWalkLoopRun, isRunning);
return result;
}
bool ScriptBase::Loop_Actor_Walk_To_Waypoint(int actorId, int waypointId, int destinationOffset, int a4, bool run) {
- //TODO
- warning("Loop_Actor_Walk_To_Waypoint(%d, %d, %d, %d, %d)", actorId, waypointId, destinationOffset, a4, run);
- return false;
+ _vm->gameWaitForActive();
+
+ if (_vm->_walkingActorId == actorId) {
+ run = true;
+ }
+ _vm->_playerActorIdle = false;
+ bool isRunning;
+
+ bool result = _vm->_actors[actorId]->loopWalkToWaypoint(waypointId, destinationOffset, a4, run, true, &isRunning);
+
+ if (_vm->_playerActorIdle) {
+ result = true;
+ _vm->_playerActorIdle = false;
+ }
+ if (isRunning == 1) {
+ _vm->_walkingActorId = actorId;
+ }
+ Global_Variable_Set(kVariableWalkLoopActor, actorId);
+ Global_Variable_Set(kVariableWalkLoopRun, isRunning);
+ return result;
}
bool ScriptBase::Loop_Actor_Walk_To_XYZ(int actorId, float x, float y, float z, int destinationOffset, int a5, bool run, int a7) {
_vm->gameWaitForActive();
- if(_vm->_walkingActorId == actorId) {
- if(a7) {
+ if (_vm->_walkingActorId == actorId) {
+ if (a7) {
_vm->_walkingActorId = -1;
} else {
run = true;
}
}
- //TODO:
- //PlayerActorIdle = 0;
+ _vm->_playerActorIdle = false;
bool isRunning;
+
bool result = _vm->_actors[actorId]->loopWalkToXYZ(Vector3(x, y, z), destinationOffset, a5, run, true, &isRunning);
-// if (PlayerActorIdle == 1) {
-// result = 1;
-// PlayerActorIdle = 0;
-// }
- if(isRunning) {
+ if (_vm->_playerActorIdle) {
+ result = true;
+ _vm->_playerActorIdle = false;
+ }
+ if (isRunning) {
_vm->_walkingActorId = actorId;
}
- Global_Variable_Set(37, actorId);
- Global_Variable_Set(38, isRunning);
+ Global_Variable_Set(kVariableWalkLoopActor, actorId);
+ Global_Variable_Set(kVariableWalkLoopRun, isRunning);
return result;
}
void ScriptBase::Async_Actor_Walk_To_Waypoint(int actorId, int waypointId, int destinationOffset, int run) {
- //TODO
- warning("Async_Actor_Walk_To_Waypoint(%d, %d, %d, %d)", actorId, waypointId, destinationOffset, run);
+ _vm->gameWaitForActive();
+
+ if (_vm->_walkingActorId == actorId) {
+ run = true;
+ }
+
+ _vm->_actors[actorId]->asyncWalkToWaypoint(waypointId, destinationOffset, run, true);
}
void ScriptBase::Async_Actor_Walk_To_XYZ(int actorId, float x, float y, float z, int destinationOffset, bool run) {
- //TODO
- warning("Async_Actor_Walk_To_XYZ(%d, %f, %f, %f, %d, %d)", actorId, x, y, z, destinationOffset, run);
+ _vm->gameWaitForActive();
+
+ if (_vm->_walkingActorId == actorId) {
+ run = true;
+ }
+
+ _vm->_actors[actorId]->asyncWalkToXYZ(Vector3(x, y, z), destinationOffset, run, true);
}
void ScriptBase::Actor_Force_Stop_Walking(int actorId) {
@@ -796,30 +830,25 @@ void ScriptBase::Footstep_Sound_Override_Off() {
_vm->_scene->_set->resetFoodstepSoundOverride();
}
-bool ScriptBase::Music_Play(int a1, int a2, int a3, int a4, int a5, int a6, int a7) {
- //TODO
- warning("Music_Play(%d, %d, %d, %d, %d, %d, %d)", a1, a2, a3, a4, a5, a6, a7);
- return false;
+bool ScriptBase::Music_Play(int musicId, int volume, int pan, int timeFadeIn, int timePlay, int loop, int timeFadeOut) {
+ const char *musicName = _vm->_gameInfo->getMusicTrack(musicId);
+ return _vm->_music->play(musicName, volume, pan, timeFadeIn, timePlay, loop, timeFadeOut);
}
-void ScriptBase::Music_Adjust(int a1, int a2, int a3) {
- //TODO
- warning("Music_Adjust(%d, %d, %d)", a1, a2, a3);
+void ScriptBase::Music_Adjust(int volume, int pan, int delay) {
+ _vm->_music->adjust(volume, pan, delay);
}
-void ScriptBase::Music_Stop(int a1) {
- //TODO
- warning("Music_Stop(%d)", a1);
+void ScriptBase::Music_Stop(int delay) {
+ _vm->_music->stop(delay);
}
bool ScriptBase::Music_Is_Playing() {
- //TODO
- warning("Music_Is_Playing()");
- return false;
+ return _vm->_music->isPlaying();
}
-void ScriptBase::Overlay_Play(const char *overlay, int a2, int a3, int a4, int a5) {
- _vm->_overlays->play(overlay, a2, a3, a4, a5);
+void ScriptBase::Overlay_Play(const char *overlay, int loopId, int loopForever, int startNow, int a5) {
+ _vm->_overlays->play(overlay, loopId, loopForever, startNow, a5);
}
void ScriptBase::Overlay_Remove(const char *overlay) {
@@ -908,7 +937,7 @@ bool ScriptBase::Dialogue_Menu_Clear_List() {
}
bool ScriptBase::Dialogue_Menu_Add_To_List(int answer) {
- _vm->_dialogueMenu->addToList(answer, 0, 5, 5, 5);
+ _vm->_dialogueMenu->addToList(answer, false, 5, 5, 5);
return false;
}
diff --git a/engines/bladerunner/script/script.h b/engines/bladerunner/script/script.h
index c282bccd1d..48bda147d6 100644
--- a/engines/bladerunner/script/script.h
+++ b/engines/bladerunner/script/script.h
@@ -429,6 +429,34 @@ enum SpinnerDestinations {
kSpinnerDestinationHysteriaHall = 9
};
+enum Flags {
+ kFlagIntroPlayed = 24,
+ kFlagMA02toMA06 = 33,
+ kFlagMA06ToMA02 = 34,
+ kFlagMA02ToMA04 = 35,
+ kFlagMA04ToMA02 = 36,
+ kFlagMA01toMA06 = 37,
+ kFlagMA06toMA01 = 38,
+ kFlagMA07toMA06 = 57,
+ kFlagMA06toMA07 = 58,
+ kFlagMA04toMA05 = 62,
+ kFlagMA05toMA04 = 63,
+ kFlagRC01PoliceDone = 186,
+ kFlagMA01Locked = 250
+};
+
+enum Variables {
+ kVariableWalkLoopActor = 37,
+ kVariableWalkLoopRun = 38
+};
+
+enum Outtakes {
+ kOuttakeIntro = 0,
+ kOuttakeWestwood = 28,
+ kOuttakeDescent = 33,
+ kOuttakeBladeRunner = 41
+};
+
class BladeRunnerEngine;
class ScriptBase {
@@ -561,11 +589,11 @@ protected:
void Footstep_Sounds_Set(int index, int value);
void Footstep_Sound_Override_On(int footstepSoundOverride);
void Footstep_Sound_Override_Off();
- bool Music_Play(int a1, int a2, int a3, int a4, int a5, int a6, int a7);
- void Music_Adjust(int a1, int a2, int a3);
- void Music_Stop(int a1);
+ bool Music_Play(int musicId, int volume, int pan, int timeFadeIn, int timePlay, int loop, int timeFadeOut);
+ void Music_Adjust(int volume, int pan, int delay);
+ void Music_Stop(int delay);
bool Music_Is_Playing();
- void Overlay_Play(const char *overlay, int a2, int a3, int a4, int a5);
+ void Overlay_Play(const char *overlay, int loopId, int loopForever, int startNow, int a5);
void Overlay_Remove(const char *overlay);
void Scene_Loop_Set_Default(int loopId);
void Scene_Loop_Start_Special(int sceneLoopMode, int loopId, bool immediately);
diff --git a/engines/bladerunner/settings.cpp b/engines/bladerunner/settings.cpp
index 81def7ea93..7db1192c89 100644
--- a/engines/bladerunner/settings.cpp
+++ b/engines/bladerunner/settings.cpp
@@ -22,8 +22,10 @@
#include "bladerunner/settings.h"
+#include "bladerunner/ambient_sounds.h"
#include "bladerunner/bladerunner.h"
#include "bladerunner/chapters.h"
+#include "bladerunner/music.h"
#include "bladerunner/scene.h"
#include "common/debug.h"
@@ -54,10 +56,9 @@ bool Settings::openNewScene() {
assert(_newScene != -1);
if (_startingGame) {
- // Stop ambient audio and music
-// ambient::removeAllNonLoopingSounds(Ambient, 1);
-// ambient::removeAllLoopingSounds(Ambient, 1);
-// music::stop(Music, 2);
+ _vm->_ambientSounds->removeAllNonLoopingSounds(true);
+ _vm->_ambientSounds->removeAllLoopingSounds(1);
+ _vm->_music->stop(2);
}
int currentSet = _vm->_scene->getSetId();
diff --git a/engines/bladerunner/slice_renderer.cpp b/engines/bladerunner/slice_renderer.cpp
index 34c910742c..0bbd201ee0 100644
--- a/engines/bladerunner/slice_renderer.cpp
+++ b/engines/bladerunner/slice_renderer.cpp
@@ -22,9 +22,9 @@
#include "bladerunner/slice_renderer.h"
-#include "bladerunner/aesc.h"
#include "bladerunner/bladerunner.h"
#include "bladerunner/lights.h"
+#include "bladerunner/screen_effects.h"
#include "bladerunner/set_effects.h"
#include "bladerunner/slice_animations.h"
@@ -47,8 +47,8 @@ SliceRenderer::SliceRenderer(BladeRunnerEngine *vm) {
SliceRenderer::~SliceRenderer() {
}
-void SliceRenderer::setAESC(AESC *aesc) {
- _aesc = aesc;
+void SliceRenderer::setScreenEffects(ScreenEffects *screenEffects) {
+ _screenEffects = screenEffects;
}
void SliceRenderer::setView(const View &view) {
@@ -531,7 +531,7 @@ void SliceRenderer::drawSlice(int slice, bool advanced, uint16 *frameLinePtr, ui
int color555 = palette.color555[p[2]];
if (advanced) {
Color256 aescColor = { 0, 0, 0 };
- _aesc->getColor(&aescColor, vertexX, y, vertexZ);
+ _screenEffects->getColor(&aescColor, vertexX, y, vertexZ);
Color256 color = palette.color[p[2]];
color.r = ((int)(_setEffectColor.r + _lightsColor.r * color.r) >> 16) + aescColor.r;
diff --git a/engines/bladerunner/slice_renderer.h b/engines/bladerunner/slice_renderer.h
index fbdcdf3617..aeca8c6c2d 100644
--- a/engines/bladerunner/slice_renderer.h
+++ b/engines/bladerunner/slice_renderer.h
@@ -38,7 +38,7 @@ class MemoryReadStream;
namespace BladeRunner {
-class AESC;
+class ScreenEffects;
class BladeRunnerEngine;
class Lights;
class SetEffects;
@@ -52,7 +52,7 @@ class SliceRenderer {
float _facing;
float _scale;
- AESC *_aesc;
+ ScreenEffects *_screenEffects;
View _view;
Lights *_lights;
SetEffects *_setEffects;
@@ -95,7 +95,7 @@ public:
SliceRenderer(BladeRunnerEngine *vm);
~SliceRenderer();
- void setAESC(AESC *aesc);
+ void setScreenEffects(ScreenEffects *aesc);
void setView(const View &view);
void setLights(Lights *lights);
void setSetEffects(SetEffects *setEffects);
diff --git a/engines/bladerunner/vqa_decoder.cpp b/engines/bladerunner/vqa_decoder.cpp
index 53751afcd6..832e95aa2b 100644
--- a/engines/bladerunner/vqa_decoder.cpp
+++ b/engines/bladerunner/vqa_decoder.cpp
@@ -22,11 +22,11 @@
#include "bladerunner/vqa_decoder.h"
-#include "bladerunner/aesc.h"
#include "bladerunner/bladerunner.h"
#include "bladerunner/decompress_lcw.h"
#include "bladerunner/decompress_lzo.h"
#include "bladerunner/lights.h"
+#include "bladerunner/screen_effects.h"
#include "bladerunner/view.h"
#include "bladerunner/zbuffer.h"
@@ -211,8 +211,8 @@ void VQADecoder::decodeView(View *view) {
_videoTrack->decodeView(view);
}
-void VQADecoder::decodeAESC(AESC *aesc) {
- _videoTrack->decodeAESC(aesc);
+void VQADecoder::decodeScreenEffects(ScreenEffects *screenEffects) {
+ _videoTrack->decodeScreenEffects(screenEffects);
}
void VQADecoder::decodeLights(Lights *lights) {
@@ -598,7 +598,7 @@ VQADecoder::VQAVideoTrack::VQAVideoTrack(VQADecoder *vqaDecoder, Graphics::Surfa
_zbufChunk = new uint8[roundup(_maxZBUFChunkSize)];
_viewData = nullptr;
- _aescData = nullptr;
+ _screenEffectsData = nullptr;
_lightsData = nullptr;
}
@@ -608,7 +608,7 @@ VQADecoder::VQAVideoTrack::~VQAVideoTrack() {
delete[] _vpointer;
delete[] _viewData;
- delete[] _aescData;
+ delete[] _screenEffectsData;
delete[] _lightsData;
}
@@ -735,27 +735,27 @@ void VQADecoder::VQAVideoTrack::decodeView(View *view) {
}
bool VQADecoder::VQAVideoTrack::readAESC(Common::SeekableReadStream *s, uint32 size) {
- if (_aescData) {
- delete[] _aescData;
+ if (_screenEffectsData) {
+ delete[] _screenEffectsData;
}
- _aescDataSize = roundup(size);
- _aescData = new uint8[_aescDataSize];
- s->read(_aescData, _aescDataSize);
+ _screenEffectsDataSize = roundup(size);
+ _screenEffectsData = new uint8[_screenEffectsDataSize];
+ s->read(_screenEffectsData, _screenEffectsDataSize);
return true;
}
-void VQADecoder::VQAVideoTrack::decodeAESC(AESC *aesc) {
- if (!aesc || !_aescData) {
+void VQADecoder::VQAVideoTrack::decodeScreenEffects(ScreenEffects *aesc) {
+ if (!aesc || !_screenEffectsData) {
return;
}
- Common::MemoryReadStream s(_aescData, _aescDataSize);
+ Common::MemoryReadStream s(_screenEffectsData, _screenEffectsDataSize);
aesc->readVqa(&s);
- delete[] _aescData;
- _aescData = nullptr;
+ delete[] _screenEffectsData;
+ _screenEffectsData = nullptr;
}
bool VQADecoder::VQAVideoTrack::readLITE(Common::SeekableReadStream *s, uint32 size) {
diff --git a/engines/bladerunner/vqa_decoder.h b/engines/bladerunner/vqa_decoder.h
index 4e070647a6..34a8ee3efc 100644
--- a/engines/bladerunner/vqa_decoder.h
+++ b/engines/bladerunner/vqa_decoder.h
@@ -35,11 +35,11 @@
#include "graphics/surface.h"
#include "video/video_decoder.h"
-#include "aesc.h"
namespace BladeRunner {
class Lights;
+class ScreenEffects;
class View;
class ZBuffer;
@@ -65,7 +65,7 @@ public:
void decodeZBuffer(ZBuffer *zbuffer);
Audio::SeekableAudioStream *decodeAudioFrame();
void decodeView(View *view);
- void decodeAESC(AESC *aesc);
+ void decodeScreenEffects(ScreenEffects *aesc);
void decodeLights(Lights *lights);
uint16 numFrames() const { return _header.numFrames; }
@@ -183,7 +183,7 @@ private:
void decodeVideoFrame(bool forceDraw);
void decodeZBuffer(ZBuffer *zbuffer);
void decodeView(View *view);
- void decodeAESC(AESC *aesc);
+ void decodeScreenEffects(ScreenEffects *aesc);
void decodeLights(Lights *lights);
bool readVQFR(Common::SeekableReadStream *s, uint32 size, uint readFlags);
@@ -231,8 +231,8 @@ private:
uint32 _viewDataSize;
uint8 *_lightsData;
uint32 _lightsDataSize;
- uint8 *_aescData;
- uint32 _aescDataSize;
+ uint8 *_screenEffectsData;
+ uint32 _screenEffectsDataSize;
void VPTRWriteBlock(uint16 *frame, unsigned int dstBlock, unsigned int srcBlock, int count, bool alpha = false);
bool decodeFrame(uint16 *frame);
diff --git a/engines/bladerunner/vqa_player.cpp b/engines/bladerunner/vqa_player.cpp
index 51766d6e28..7e820b7db2 100644
--- a/engines/bladerunner/vqa_player.cpp
+++ b/engines/bladerunner/vqa_player.cpp
@@ -155,8 +155,8 @@ void VQAPlayer::updateView(View *view) {
_decoder.decodeView(view);
}
-void VQAPlayer::updateAESC(AESC *aesc) {
- _decoder.decodeAESC(aesc);
+void VQAPlayer::updateScreenEffects(ScreenEffects *screenEffects) {
+ _decoder.decodeScreenEffects(screenEffects);
}
void VQAPlayer::updateLights(Lights *lights) {
diff --git a/engines/bladerunner/vqa_player.h b/engines/bladerunner/vqa_player.h
index 1be47bd87e..3a929ef592 100644
--- a/engines/bladerunner/vqa_player.h
+++ b/engines/bladerunner/vqa_player.h
@@ -106,7 +106,7 @@ public:
int update(bool forceDraw = false);
void updateZBuffer(ZBuffer *zbuffer);
void updateView(View *view);
- void updateAESC(AESC *aesc);
+ void updateScreenEffects(ScreenEffects *screenEffects);
void updateLights(Lights *lights);
bool setBeginAndEndFrame(int begin, int end, int repeatsCount, int loopSetMode, void(*callback)(void *, int, int), void *callbackData);
diff --git a/engines/cge/detection.cpp b/engines/cge/detection.cpp
index 0df1e8711e..482591bf50 100644
--- a/engines/cge/detection.cpp
+++ b/engines/cge/detection.cpp
@@ -159,13 +159,14 @@ const ADGameDescription *CGEMetaEngine::fallbackDetect(const FileMap &allFiles,
if (!game)
return nullptr;
- SearchMan.clear();
- SearchMan.addDirectory(fslist.begin()->getParent().getPath(), fslist.begin()->getParent());
+ SearchMan.addDirectory("CGEMetaEngine::fallbackDetect", fslist.begin()->getParent());
ResourceManager *resman;
resman = new ResourceManager();
bool result = resman->exist("CGE.SAY");
delete resman;
+ SearchMan.remove("CGEMetaEngine::fallbackDetect");
+
if (!result)
return nullptr;
diff --git a/engines/cge2/detection.cpp b/engines/cge2/detection.cpp
index 5a4f286d5b..d05dfffedc 100644
--- a/engines/cge2/detection.cpp
+++ b/engines/cge2/detection.cpp
@@ -157,13 +157,14 @@ const ADGameDescription *CGE2MetaEngine::fallbackDetect(const FileMap &allFiles,
if (!game)
return 0;
- SearchMan.clear();
- SearchMan.addDirectory(fslist.begin()->getParent().getPath(), fslist.begin()->getParent());
+ SearchMan.addDirectory("CGE2MetaEngine::fallbackDetect", fslist.begin()->getParent());
ResourceManager *resman;
resman = new ResourceManager();
bool result = resman->exist("CGE.SAY");
delete resman;
+ SearchMan.remove("CGE2MetaEngine::fallbackDetect");
+
if (!result)
return 0;
diff --git a/engines/director/archive.cpp b/engines/director/archive.cpp
index 09be707129..31b421566c 100644
--- a/engines/director/archive.cpp
+++ b/engines/director/archive.cpp
@@ -420,7 +420,10 @@ bool RIFXArchive::openStream(Common::SeekableReadStream *stream, uint32 startOff
// or the children of
else if (tag == MKTAG('S', 'T', 'X', 'T') ||
tag == MKTAG('B', 'I', 'T', 'D') ||
- tag == MKTAG('D', 'I', 'B', ' '))
+ tag == MKTAG('D', 'I', 'B', ' ') ||
+ tag == MKTAG('R', 'T', 'E', '0') ||
+ tag == MKTAG('R', 'T', 'E', '1') ||
+ tag == MKTAG('R', 'T', 'E', '2'))
_types[tag][i] = res;
}
diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index 0ee5a8f15c..564460b640 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -173,8 +173,30 @@ TextCast::TextCast(Common::ReadStreamEndian &stream, uint16 version) {
fontSize = stream.readUint16();
textSlant = 0;
} else {
+ fontId = 1;
+ fontSize = 12;
+
+ stream.readUint32();
+ stream.readUint32();
+ stream.readUint32();
+ stream.readUint32();
+ uint16 skip = stream.readUint16();
+ for (int i = 0; i < skip; i++)
+ stream.readUint32();
+
+ stream.readUint32();
+ stream.readUint32();
+ stream.readUint32();
+ stream.readUint32();
+ stream.readUint32();
+ stream.readUint32();
+
initialRect = Score::readRect(stream);
boundingRect = Score::readRect(stream);
+
+ stream.readUint32();
+ stream.readUint16();
+ stream.readUint16();
}
modified = 0;
@@ -193,6 +215,14 @@ void TextCast::importStxt(const Stxt *stxt) {
_ftext = stxt->_ftext;
}
+void TextCast::importRTE(byte* text) {
+ //assert(rteList.size() == 3);
+ //child0 is probably font data.
+ //child1 is the raw text.
+ _ftext = Common::String((char*)text);
+ //child2 is positional?
+}
+
ShapeCast::ShapeCast(Common::ReadStreamEndian &stream, uint16 version) {
if (version < 4) {
/*byte flags = */ stream.readByte();
diff --git a/engines/director/cast.h b/engines/director/cast.h
index 7df9d94a59..bc020722a4 100644
--- a/engines/director/cast.h
+++ b/engines/director/cast.h
@@ -45,7 +45,8 @@ enum CastType {
kCastShape = 8,
kCastMovie = 9,
kCastDigitalVideo = 10,
- kCastLingoScript = 11
+ kCastLingoScript = 11,
+ kCastRTE = 12
};
class Cast {
@@ -142,6 +143,7 @@ public:
Common::String _ftext;
void importStxt(const Stxt *stxt);
+ void importRTE(byte* text);
CachedMacText *cachedMacText;
};
diff --git a/engines/director/detection.cpp b/engines/director/detection.cpp
index dd10b6c044..a3f9b7c2f5 100644
--- a/engines/director/detection.cpp
+++ b/engines/director/detection.cpp
@@ -165,26 +165,20 @@ const ADGameDescription *DirectorMetaEngine::fallbackDetect(const FileMap &allFi
if (!fileName.hasSuffix(".exe"))
continue;
- SearchMan.clear();
- SearchMan.addDirectory(file->getParent().getName(), file->getParent());
-
- Common::SeekableReadStream *stream = SearchMan.createReadStreamForMember(file->getName());
-
- if (!stream)
+ Common::File f;
+ if (!f.open(*file))
continue;
- stream->seek(-4, SEEK_END);
+ f.seek(-4, SEEK_END);
- uint32 offset = stream->readUint32LE();
+ uint32 offset = f.readUint32LE();
- if (stream->eos() || offset == 0 || offset >= (uint32)(stream->size() - 4)) {
- delete stream;
+ if (f.eos() || offset == 0 || offset >= (uint32)(f.size() - 4))
continue;
- }
- stream->seek(offset);
+ f.seek(offset);
- uint32 tag = stream->readUint32LE();
+ uint32 tag = f.readUint32LE();
switch (tag) {
case MKTAG('3', '9', 'J', 'P'):
@@ -200,41 +194,31 @@ const ADGameDescription *DirectorMetaEngine::fallbackDetect(const FileMap &allFi
// Prior to version 4, there was no tag here. So we'll use a bit of a
// heuristic to detect. The first field is the entry count, of which
// there should only be one.
- if ((tag & 0xFFFF) != 1) {
- delete stream;
+ if ((tag & 0xFFFF) != 1)
continue;
- }
- stream->skip(3);
+ f.skip(3);
- uint32 mmmSize = stream->readUint32LE();
+ uint32 mmmSize = f.readUint32LE();
- if (stream->eos() || mmmSize == 0) {
- delete stream;
+ if (f.eos() || mmmSize == 0)
continue;
- }
- byte fileNameSize = stream->readByte();
+ byte fileNameSize = f.readByte();
- if (stream->eos()) {
- delete stream;
+ if (f.eos())
continue;
- }
- stream->skip(fileNameSize);
- byte directoryNameSize = stream->readByte();
+ f.skip(fileNameSize);
+ byte directoryNameSize = f.readByte();
- if (stream->eos()) {
- delete stream;
+ if (f.eos())
continue;
- }
- stream->skip(directoryNameSize);
+ f.skip(directoryNameSize);
- if (stream->pos() != stream->size() - 4) {
- delete stream;
+ if (f.pos() != f.size() - 4)
continue;
- }
// Assume v3 at this point (for now at least)
desc->version = 3;
diff --git a/engines/director/frame.cpp b/engines/director/frame.cpp
index cecc46dc65..1b3b59e1ef 100644
--- a/engines/director/frame.cpp
+++ b/engines/director/frame.cpp
@@ -171,6 +171,10 @@ void Frame::readChannels(Common::ReadStreamEndian *stream) {
stream->read(unk, 16);
_actionId = stream->readUint16();
stream->read(unk, 5);
+ } else {
+ stream->read(unk, 16);
+ stream->read(unk, 16);
+ stream->read(unk, 10);
}
@@ -193,34 +197,51 @@ void Frame::readChannels(Common::ReadStreamEndian *stream) {
for (int i = 0; i < CHANNEL_COUNT; i++) {
Sprite &sprite = *_sprites[i + 1];
- sprite._scriptId = stream->readByte();
- sprite._spriteType = stream->readByte();
- sprite._enabled = sprite._spriteType != 0;
- sprite._x2 = stream->readUint16();
+ if (_vm->getVersion() <= 4) {
+ sprite._scriptId = stream->readByte();
+ sprite._spriteType = stream->readByte();
+ sprite._enabled = sprite._spriteType != 0;
+ sprite._x2 = stream->readUint16();
- sprite._flags = stream->readUint16();
- sprite._ink = static_cast<InkType>(sprite._flags & 0x3f);
+ sprite._flags = stream->readUint16();
+ sprite._ink = static_cast<InkType>(sprite._flags & 0x3f);
- if (sprite._flags & 0x40)
- sprite._trails = 1;
- else
- sprite._trails = 0;
+ if (sprite._flags & 0x40)
+ sprite._trails = 1;
+ else
+ sprite._trails = 0;
- sprite._lineSize = (sprite._flags >> 8) & 0x03;
+ sprite._lineSize = (sprite._flags >> 8) & 0x03;
- sprite._castId = stream->readUint16();
- sprite._startPoint.y = stream->readUint16();
- sprite._startPoint.x = stream->readUint16();
- sprite._height = stream->readUint16();
- sprite._width = stream->readUint16();
+ sprite._castId = stream->readUint16();
+ sprite._startPoint.y = stream->readUint16();
+ sprite._startPoint.x = stream->readUint16();
+ sprite._height = stream->readUint16();
+ sprite._width = stream->readUint16();
- if (_vm->getPlatform() == Common::kPlatformMacintosh && _vm->getVersion() >= 4) {
- sprite._scriptId = stream->readUint16();
- sprite._flags2 = stream->readByte(); // 0x40 editable, 0x80 moveable
- sprite._unk2 = stream->readByte();
+ if (_vm->getPlatform() == Common::kPlatformMacintosh && _vm->getVersion() >= 4) {
+ sprite._scriptId = stream->readUint16();
+ sprite._flags2 = stream->readByte(); // 0x40 editable, 0x80 moveable
+ sprite._unk2 = stream->readByte();
- if (_vm->getVersion() >= 5)
- sprite._unk3 = stream->readUint32();
+ if (_vm->getVersion() >= 5)
+ sprite._unk3 = stream->readUint32();
+ }
+ } else {
+ stream->readUint16();
+ sprite._scriptId = stream->readByte();
+ sprite._spriteType = stream->readByte();
+ sprite._enabled = sprite._spriteType != 0;
+ sprite._castId = stream->readUint16();
+ stream->readUint32();
+ sprite._flags = stream->readUint16();
+ sprite._startPoint.y = stream->readUint16();
+ sprite._startPoint.x = stream->readUint16();
+ sprite._height = stream->readUint16();
+ sprite._width = stream->readUint16();
+ stream->readUint16();
+ stream->readUint16();
+
}
if (sprite._castId) {
@@ -585,7 +606,7 @@ void Frame::renderSprites(Graphics::ManagedSurface &surface, bool renderTrail) {
// I don't like this implementation 100% as the 'cast' above might not actually hit a member and be null?
if (castType == kCastShape) {
renderShape(surface, i);
- } else if (castType == kCastText) {
+ } else if (castType == kCastText || castType == kCastRTE) {
renderText(surface, i, NULL);
} else if (castType == kCastButton) {
renderButton(surface, i);
diff --git a/engines/director/resource.cpp b/engines/director/resource.cpp
index 5e1d79cf24..e748583146 100644
--- a/engines/director/resource.cpp
+++ b/engines/director/resource.cpp
@@ -77,25 +77,31 @@ void DirectorEngine::loadEXE(const Common::String movie) {
_lingo->processEvent(kEventStart);
- exeStream->seek(-4, SEEK_END);
- exeStream->seek(exeStream->readUint32LE());
-
- switch (getVersion()) {
- case 2:
- case 3:
- loadEXEv3(exeStream);
- break;
- case 4:
- loadEXEv4(exeStream);
- break;
- case 5:
- loadEXEv5(exeStream);
- break;
- case 7:
- loadEXEv7(exeStream);
- break;
- default:
- error("Unhandled Windows EXE version %d", getVersion());
+ uint32 initialTag = exeStream->readUint32LE();
+ if (initialTag == MKTAG('R', 'I', 'F', 'X')) {
+ // we've encountered a movie saved from Director, not a projector.
+ loadEXERIFX(exeStream, 0);
+ } else {
+ exeStream->seek(-4, SEEK_END);
+ exeStream->seek(exeStream->readUint32LE());
+
+ switch (getVersion()) {
+ case 2:
+ case 3:
+ loadEXEv3(exeStream);
+ break;
+ case 4:
+ loadEXEv4(exeStream);
+ break;
+ case 5:
+ loadEXEv5(exeStream);
+ break;
+ case 7:
+ loadEXEv7(exeStream);
+ break;
+ default:
+ error("Unhandled Windows EXE version %d", getVersion());
+ }
}
}
@@ -169,8 +175,10 @@ void DirectorEngine::loadEXEv4(Common::SeekableReadStream *stream) {
}
void DirectorEngine::loadEXEv5(Common::SeekableReadStream *stream) {
- if (stream->readUint32LE() != MKTAG('P', 'J', '9', '5'))
- error("Invalid projector tag found in v5 EXE");
+ uint32 ver = stream->readUint32LE();
+
+ if (ver != MKTAG('P', 'J', '9', '5'))
+ error("Invalid projector tag found in v5 EXE [%s]", tag2str(ver));
uint32 rifxOffset = stream->readUint32LE();
stream->readUint32LE(); // unknown
@@ -248,13 +256,13 @@ void DirectorEngine::loadSharedCastsFrom(Common::String filename) {
_sharedSound = new Common::HashMap<int, Common::SeekableSubReadStreamEndian *>;
_sharedBMP = new Common::HashMap<int, Common::SeekableSubReadStreamEndian *>;
- _sharedScore = new Score(this);
if (!shardcst->openFile(filename)) {
warning("No shared cast %s", filename.c_str());
return;
}
+ _sharedScore = new Score(this);
_sharedScore->setArchive(shardcst);
if (shardcst->hasResource(MKTAG('F', 'O', 'N', 'D'), -1)) {
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 64a44793a7..350fccb176 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -321,6 +321,8 @@ void Score::loadPalette(Common::SeekableSubReadStreamEndian &stream) {
void Score::loadFrames(Common::SeekableSubReadStreamEndian &stream) {
debugC(1, kDebugLoading, "****** Loading frames");
+ //stream.hexdump(stream.size());
+
uint32 size = stream.readUint32();
size -= 4;
@@ -337,25 +339,35 @@ void Score::loadFrames(Common::SeekableSubReadStreamEndian &stream) {
// Unknown, some bytes - constant (refer to contuinity).
} else if (_vm->getVersion() > 4) {
//what data is up the top of D5 VWSC?
- stream.readUint32();
- stream.readUint32();
- uint32 blockSize = stream.readUint32() - 1;
- stream.readUint32();
- stream.readUint32();
- stream.readUint32();
- stream.readUint32();
- for (uint32 skip = 0; skip < blockSize * 4; skip++)
- stream.readByte();
-
- //header number two... this is our actual score entry point.
uint32 unk1 = stream.readUint32();
uint32 unk2 = stream.readUint32();
- stream.readUint32();
- uint16 unk3 = stream.readUint16();
- uint16 unk4 = stream.readUint16();
- uint16 unk5 = stream.readUint16();
- uint16 unk6 = stream.readUint16();
+ uint16 unk3, unk4, unk5, unk6;
+
+ if (unk2 > 0) {
+ uint32 blockSize = stream.readUint32() - 1;
+ stream.readUint32();
+ stream.readUint32();
+ stream.readUint32();
+ stream.readUint32();
+ for (uint32 skip = 0; skip < blockSize * 4; skip++)
+ stream.readByte();
+
+ //header number two... this is our actual score entry point.
+ unk1 = stream.readUint32();
+ unk2 = stream.readUint32();
+ stream.readUint32();
+ unk3 = stream.readUint16();
+ unk4 = stream.readUint16();
+ unk5 = stream.readUint16();
+ unk6 = stream.readUint16();
+ } else {
+ unk3 = stream.readUint16();
+ unk4 = stream.readUint16();
+ unk5 = stream.readUint16();
+ unk6 = stream.readUint16();
+ size -= 16;
+ }
warning("STUB: Score::loadFrames. unk1: %x unk2: %x unk3: %x unk4: %x unk5: %x unk6: %x", unk1, unk2, unk3, unk4, unk5, unk6);
}
@@ -482,13 +494,13 @@ void Score::setSpriteCasts() {
for (uint16 j = 0; j < _frames[i]->_sprites.size(); j++) {
uint16 castId = _frames[i]->_sprites[j]->_castId;
- if (_vm->getSharedScore()->_loadedBitmaps->contains(castId)) {
+ if (_vm->getSharedScore() != nullptr && _vm->getSharedScore()->_loadedBitmaps->contains(castId)) {
_frames[i]->_sprites[j]->_bitmapCast = _vm->getSharedScore()->_loadedBitmaps->getVal(castId);
} else if (_loadedBitmaps->contains(castId)) {
_frames[i]->_sprites[j]->_bitmapCast = _loadedBitmaps->getVal(castId);
}
- if (_vm->getSharedScore()->_loadedButtons->contains(castId)) {
+ if (_vm->getSharedScore() != nullptr && _vm->getSharedScore()->_loadedButtons->contains(castId)) {
_frames[i]->_sprites[j]->_buttonCast = _vm->getSharedScore()->_loadedButtons->getVal(castId);
if (_frames[i]->_sprites[j]->_buttonCast->children.size() == 1) {
_frames[i]->_sprites[j]->_textCast =
@@ -503,13 +515,13 @@ void Score::setSpriteCasts() {
//if (_loadedScripts->contains(castId))
// _frames[i]->_sprites[j]->_bitmapCast = _loadedBitmaps->getVal(castId);
- if (_vm->getSharedScore()->_loadedText->contains(castId)) {
+ if (_vm->getSharedScore() != nullptr && _vm->getSharedScore()->_loadedText->contains(castId)) {
_frames[i]->_sprites[j]->_textCast = _vm->getSharedScore()->_loadedText->getVal(castId);
} else if (_loadedText->contains(castId)) {
_frames[i]->_sprites[j]->_textCast = _loadedText->getVal(castId);
}
- if (_vm->getSharedScore()->_loadedShapes->contains(castId)) {
+ if (_vm->getSharedScore() != nullptr && _vm->getSharedScore()->_loadedShapes->contains(castId)) {
_frames[i]->_sprites[j]->_shapeCast = _vm->getSharedScore()->_loadedShapes->getVal(castId);
} else if (_loadedShapes->contains(castId)) {
_frames[i]->_sprites[j]->_shapeCast = _loadedShapes->getVal(castId);
@@ -608,6 +620,22 @@ void Score::loadCastData(Common::SeekableSubReadStreamEndian &stream, uint16 id,
_loadedScripts->setVal(id, new ScriptCast(castStream, _vm->getVersion()));
_castTypes[id] = kCastLingoScript;
break;
+ case kCastRTE:
+ //TODO: Actually load RTEs correctly, don't just make fake STXT.
+ _castTypes[id] = kCastRTE;
+ _loadedText->setVal(id, new TextCast(castStream, _vm->getVersion()));
+ for (uint child = 0; child < res->children.size(); child++) {
+ _loadedText->getVal(id)->children.push_back(res->children[child]);
+ if (child == 1) {
+ Common::SeekableReadStream *rte1 = _movieArchive->getResource(res->children[child].tag, res->children[child].index);
+ byte *buffer = new byte[rte1->size() + 2];
+ rte1->read(buffer, rte1->size());
+ buffer[rte1->size()] = '\n';
+ buffer[rte1->size() + 1] = '\0';
+ _loadedText->getVal(id)->importRTE(buffer);
+ }
+ }
+ break;
default:
warning("Score::loadCastData(): Unhandled cast type: %d [%s]", castType, tag2str(castType));
// also don't try and read the strings... we don't know what this item is.
diff --git a/engines/dm/eventman.cpp b/engines/dm/eventman.cpp
index 622a7d5e1f..3859fc90b2 100644
--- a/engines/dm/eventman.cpp
+++ b/engines/dm/eventman.cpp
@@ -782,7 +782,7 @@ void EventManager::processCommandQueue() {
delete _vm->_saveThumbnail;
_vm->_saveThumbnail = nullptr;
} else if (!_vm->_saveThumbnail) {
- _vm->_saveThumbnail = new Common::MemoryWriteStreamDynamic();
+ _vm->_saveThumbnail = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::YES);
Graphics::saveThumbnail(*_vm->_saveThumbnail);
}
diff --git a/engines/fullpipe/statesaver.cpp b/engines/fullpipe/statesaver.cpp
index 7fb56f0479..5eb08fe213 100644
--- a/engines/fullpipe/statesaver.cpp
+++ b/engines/fullpipe/statesaver.cpp
@@ -55,7 +55,7 @@ bool GameLoader::writeSavegame(Scene *sc, const char *fname) {
header.updateCounter = _updateCounter;
header.unkField = 1;
- Common::MemoryWriteStreamDynamic stream;
+ Common::MemoryWriteStreamDynamic stream(DisposeAfterUse::YES);
MfcArchive *archive = new MfcArchive(&stream);
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index 2bfe7300df..9606273b4c 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -211,7 +211,7 @@ void GnapEngine::runMenu() {
_menuDone = false;
delete _tempThumbnail;
- _tempThumbnail = new Common::MemoryWriteStreamDynamic;
+ _tempThumbnail = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::YES);
Graphics::saveThumbnail(*_tempThumbnail);
createMenuSprite();
diff --git a/engines/made/sound.cpp b/engines/made/sound.cpp
index 62559efa84..ccc85a3ef5 100644
--- a/engines/made/sound.cpp
+++ b/engines/made/sound.cpp
@@ -249,9 +249,6 @@ void decompressSound(byte *source, byte *dest, uint16 chunkSize, uint16 chunkCou
// soundBuffer.
soundBuffer[workChunkSize] = soundBuffer[workChunkSize - 1];
- for (i = 0; i < chunkSize; i++)
- soundBuffer[i] = 0;
-
if (deltaType == 1) {
for (i = 0; i < chunkSize - 1; i += 2) {
l = i / 2;
diff --git a/engines/mohawk/riven_card.cpp b/engines/mohawk/riven_card.cpp
index feea22a663..7a5cd617a6 100644
--- a/engines/mohawk/riven_card.cpp
+++ b/engines/mohawk/riven_card.cpp
@@ -54,7 +54,7 @@ RivenCard::~RivenCard() {
delete _hotspots[i];
}
- _vm->_gfx->clearWaterEffects();
+ _vm->_gfx->clearWaterEffect();
_vm->_gfx->clearFliesEffect();
_vm->_video->closeVideos();
}
diff --git a/engines/mohawk/riven_graphics.cpp b/engines/mohawk/riven_graphics.cpp
index b9d82fbd39..c80e9e5899 100644
--- a/engines/mohawk/riven_graphics.cpp
+++ b/engines/mohawk/riven_graphics.cpp
@@ -329,6 +329,7 @@ RivenGraphics::RivenGraphics(MohawkEngine_Riven* vm) : GraphicsManager(), _vm(vm
_transitionMode = kRivenTransitionModeFastest;
_transitionOffset = -1;
+ _waterEffect = nullptr;
_fliesEffect = nullptr;
}
@@ -384,93 +385,101 @@ void RivenGraphics::updateScreen() {
}
void RivenGraphics::scheduleWaterEffect(uint16 sfxeID) {
+ clearWaterEffect();
+
+ _waterEffect = new WaterEffect(_vm, sfxeID);
+}
+
+void RivenGraphics::clearWaterEffect() {
+ delete _waterEffect;
+ _waterEffect = nullptr;
+}
+
+WaterEffect::WaterEffect(MohawkEngine_Riven *vm, uint16 sfxeID) :
+ _vm(vm) {
Common::SeekableReadStream *sfxeStream = _vm->getResource(ID_SFXE, sfxeID);
if (sfxeStream->readUint16BE() != 'SL')
error ("Unknown sfxe tag");
// Read in header info
- SFXERecord sfxeRecord;
- sfxeRecord.frameCount = sfxeStream->readUint16BE();
+ uint16 frameCount = sfxeStream->readUint16BE();
uint32 offsetTablePosition = sfxeStream->readUint32BE();
- sfxeRecord.rect.left = sfxeStream->readUint16BE();
- sfxeRecord.rect.top = sfxeStream->readUint16BE();
- sfxeRecord.rect.right = sfxeStream->readUint16BE();
- sfxeRecord.rect.bottom = sfxeStream->readUint16BE();
- sfxeRecord.speed = sfxeStream->readUint16BE();
+ _rect.left = sfxeStream->readUint16BE();
+ _rect.top = sfxeStream->readUint16BE();
+ _rect.right = sfxeStream->readUint16BE();
+ _rect.bottom = sfxeStream->readUint16BE();
+ _speed = sfxeStream->readUint16BE();
// Skip the rest of the fields...
// Read in offsets
sfxeStream->seek(offsetTablePosition);
- uint32 *frameOffsets = new uint32[sfxeRecord.frameCount];
- for (uint16 i = 0; i < sfxeRecord.frameCount; i++)
+ Common::Array<uint32> frameOffsets;
+ frameOffsets.resize(frameCount);
+ for (uint16 i = 0; i < frameCount; i++)
frameOffsets[i] = sfxeStream->readUint32BE();
- sfxeStream->seek(frameOffsets[0]);
// Read in the scripts
- for (uint16 i = 0; i < sfxeRecord.frameCount; i++)
- sfxeRecord.frameScripts.push_back(sfxeStream->readStream((i == sfxeRecord.frameCount - 1) ? sfxeStream->size() - frameOffsets[i] : frameOffsets[i + 1] - frameOffsets[i]));
+ sfxeStream->seek(frameOffsets[0]);
+ for (uint16 i = 0; i < frameCount; i++) {
+ uint scriptLength = (i == frameCount - 1) ? sfxeStream->size() - frameOffsets[i] : frameOffsets[i + 1] - frameOffsets[i];
+ _frameScripts.push_back(sfxeStream->readStream(scriptLength));
+ }
// Set it to the first frame
- sfxeRecord.curFrame = 0;
- sfxeRecord.lastFrameTime = 0;
+ _curFrame = 0;
+ _lastFrameTime = 0;
- delete[] frameOffsets;
delete sfxeStream;
- _waterEffects.push_back(sfxeRecord);
}
-void RivenGraphics::clearWaterEffects() {
- _waterEffects.clear();
-}
-
-void RivenGraphics::runScheduledWaterEffects() {
- // Don't run the effect if it's disabled
- if (_vm->_vars["waterenabled"] == 0)
- return;
-
- Graphics::Surface *screen = NULL;
-
- for (uint16 i = 0; i < _waterEffects.size(); i++) {
- if (_vm->_system->getMillis() > _waterEffects[i].lastFrameTime + 1000 / _waterEffects[i].speed) {
- // Lock the screen!
- if (!screen)
- screen = _vm->_system->lockScreen();
-
- // Make sure the script is at the starting point
- Common::SeekableReadStream *script = _waterEffects[i].frameScripts[_waterEffects[i].curFrame];
- if (script->pos() != 0)
- script->seek(0);
-
- // Run script
- uint16 curRow = 0;
- for (uint16 op = script->readUint16BE(); op != 4; op = script->readUint16BE()) {
- if (op == 1) { // Increment Row
- curRow++;
- } else if (op == 3) { // Copy Pixels
- uint16 dstLeft = script->readUint16BE();
- uint16 srcLeft = script->readUint16BE();
- uint16 srcTop = script->readUint16BE();
- uint16 rowWidth = script->readUint16BE();
- memcpy ((byte *)screen->getBasePtr(dstLeft, curRow + _waterEffects[i].rect.top), (byte *)_mainScreen->getBasePtr(srcLeft, srcTop), rowWidth * _pixelFormat.bytesPerPixel);
- } else if (op != 4) { // End of Script
- error ("Unknown SFXE opcode %d", op);
- }
- }
+void WaterEffect::update() {
+ if (_vm->_system->getMillis() <= _lastFrameTime + 1000 / _speed) {
+ return; // Nothing to do yet
+ }
- // Increment frame
- _waterEffects[i].curFrame++;
- if (_waterEffects[i].curFrame == _waterEffects[i].frameCount)
- _waterEffects[i].curFrame = 0;
+ // Make sure the script is at the starting point
+ Common::SeekableReadStream *script = _frameScripts[_curFrame];
+ script->seek(0);
- // Set the new time
- _waterEffects[i].lastFrameTime = _vm->_system->getMillis();
+ Graphics::Surface *screen = _vm->_system->lockScreen();
+ Graphics::Surface *mainScreen = _vm->_gfx->getBackScreen();
+ assert(screen->format == mainScreen->format);
+
+ // Run script
+ uint16 curRow = 0;
+ for (uint16 op = script->readUint16BE(); op != 4; op = script->readUint16BE()) {
+ if (op == 1) { // Increment Row
+ curRow++;
+ } else if (op == 3) { // Copy Pixels
+ uint16 dstLeft = script->readUint16BE();
+ uint16 srcLeft = script->readUint16BE();
+ uint16 srcTop = script->readUint16BE();
+ uint16 rowWidth = script->readUint16BE();
+
+ byte *src = (byte *)mainScreen->getBasePtr(srcLeft, srcTop);
+ byte *dst = (byte *)screen->getBasePtr(dstLeft, curRow + _rect.top);
+
+ memcpy(dst, src, rowWidth * screen->format.bytesPerPixel);
+ } else if (op != 4) { // End of Script
+ error ("Unknown SFXE opcode %d", op);
}
}
- // Unlock the screen if it has been locked and return true to update the screen
- if (screen) {
- _vm->_system->unlockScreen();
+ _vm->_system->unlockScreen();
+
+ // Increment frame
+ _curFrame++;
+ if (_curFrame == _frameScripts.size())
+ _curFrame = 0;
+
+ // Set the new time
+ _lastFrameTime = _vm->_system->getMillis();
+}
+
+WaterEffect::~WaterEffect() {
+ for (uint i = 0; i < _frameScripts.size(); i++) {
+ delete _frameScripts[i];
}
}
@@ -731,7 +740,9 @@ Graphics::Surface *RivenGraphics::getEffectScreen() {
}
void RivenGraphics::updateEffects() {
- runScheduledWaterEffects();
+ if (_waterEffect && _vm->_vars["waterenabled"] != 0) {
+ _waterEffect->update();
+ }
if (_fliesEffect) {
_fliesEffect->update();
diff --git a/engines/mohawk/riven_graphics.h b/engines/mohawk/riven_graphics.h
index 62c48d1a9e..31ab84038c 100644
--- a/engines/mohawk/riven_graphics.h
+++ b/engines/mohawk/riven_graphics.h
@@ -29,6 +29,7 @@ namespace Mohawk {
class MohawkEngine_Riven;
class FliesEffect;
+class WaterEffect;
enum RivenTransition {
kRivenTransitionNone = -1,
@@ -75,7 +76,7 @@ public:
// Water Effect
void scheduleWaterEffect(uint16);
- void clearWaterEffects();
+ void clearWaterEffect();
// Flies Effect
void setFliesEffect(uint16 count, bool fireflies);
@@ -106,23 +107,8 @@ private:
bool _screenUpdateRunning;
bool _enableCardUpdateScript;
- // Water Effects
- struct SFXERecord {
- // Record values
- uint16 frameCount;
- Common::Rect rect;
- uint16 speed;
- Common::Array<Common::SeekableReadStream *> frameScripts;
-
- // Cur frame
- uint16 curFrame;
- uint32 lastFrameTime;
- };
- Common::Array<SFXERecord> _waterEffects;
-
- void runScheduledWaterEffects();
-
- // Flies Effect
+ // Effects
+ WaterEffect *_waterEffect;
FliesEffect *_fliesEffect;
// Transitions
@@ -147,6 +133,29 @@ private:
};
/**
+ * Move slightly the water portions of a view to simulate waves
+ */
+class WaterEffect {
+public:
+ WaterEffect(MohawkEngine_Riven *vm, uint16 sfxeID);
+ ~WaterEffect();
+
+ void update();
+
+private:
+ MohawkEngine_Riven *_vm;
+
+ // Record values
+ Common::Rect _rect;
+ uint16 _speed;
+ Common::Array<Common::SeekableReadStream *> _frameScripts;
+
+ // Cur frame
+ uint16 _curFrame;
+ uint32 _lastFrameTime;
+};
+
+/**
* The flies effect draws flies in the scene
*
* It can draw either regular flies or fireflies.
diff --git a/engines/mohawk/riven_saveload.cpp b/engines/mohawk/riven_saveload.cpp
index 808eff6aa9..7165166d8f 100644
--- a/engines/mohawk/riven_saveload.cpp
+++ b/engines/mohawk/riven_saveload.cpp
@@ -287,7 +287,7 @@ Common::Error RivenSaveLoad::loadGame(const int slot) {
}
Common::MemoryWriteStreamDynamic *RivenSaveLoad::genVERSSection() {
- Common::MemoryWriteStreamDynamic *stream = new Common::MemoryWriteStreamDynamic();
+ Common::MemoryWriteStreamDynamic *stream = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::YES);
if (_vm->getFeatures() & GF_DVD)
stream->writeUint32BE(kDVDSaveGameVersion);
else
@@ -296,7 +296,7 @@ Common::MemoryWriteStreamDynamic *RivenSaveLoad::genVERSSection() {
}
Common::MemoryWriteStreamDynamic *RivenSaveLoad::genVARSSection() {
- Common::MemoryWriteStreamDynamic *stream = new Common::MemoryWriteStreamDynamic();
+ Common::MemoryWriteStreamDynamic *stream = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::YES);
for (RivenVariableMap::const_iterator it = _vm->_vars.begin(); it != _vm->_vars.end(); it++) {
stream->writeUint32BE(1); // Reference counter
@@ -312,7 +312,7 @@ static int stringCompareToIgnoreCase(const Common::String &s1, const Common::Str
}
Common::MemoryWriteStreamDynamic *RivenSaveLoad::genNAMESection() {
- Common::MemoryWriteStreamDynamic *stream = new Common::MemoryWriteStreamDynamic();
+ Common::MemoryWriteStreamDynamic *stream = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::YES);
stream->writeUint16BE(_vm->_vars.size());
@@ -354,7 +354,7 @@ Common::MemoryWriteStreamDynamic *RivenSaveLoad::genNAMESection() {
}
Common::MemoryWriteStreamDynamic *RivenSaveLoad::genZIPSSection() {
- Common::MemoryWriteStreamDynamic *stream = new Common::MemoryWriteStreamDynamic();
+ Common::MemoryWriteStreamDynamic *stream = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::YES);
stream->writeUint16BE(_vm->_zipModeData.size());
@@ -368,7 +368,7 @@ Common::MemoryWriteStreamDynamic *RivenSaveLoad::genZIPSSection() {
}
Common::MemoryWriteStreamDynamic *RivenSaveLoad::genTHMBSection() const {
- Common::MemoryWriteStreamDynamic *stream = new Common::MemoryWriteStreamDynamic();
+ Common::MemoryWriteStreamDynamic *stream = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::YES);
Graphics::saveThumbnail(*stream);
@@ -376,7 +376,7 @@ Common::MemoryWriteStreamDynamic *RivenSaveLoad::genTHMBSection() const {
}
Common::MemoryWriteStreamDynamic *RivenSaveLoad::genMETASection(const Common::String &desc) const {
- Common::MemoryWriteStreamDynamic *stream = new Common::MemoryWriteStreamDynamic();
+ Common::MemoryWriteStreamDynamic *stream = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::YES);
Common::Serializer serializer = Common::Serializer(nullptr, stream);
TimeDate t;
diff --git a/engines/pegasus/ai/ai_area.cpp b/engines/pegasus/ai/ai_area.cpp
index c078d5e80e..58698e6c77 100644
--- a/engines/pegasus/ai/ai_area.cpp
+++ b/engines/pegasus/ai/ai_area.cpp
@@ -78,7 +78,7 @@ void AIArea::saveAIState() {
delete vm->_aiSaveStream;
- Common::MemoryWriteStreamDynamic out;
+ Common::MemoryWriteStreamDynamic out(DisposeAfterUse::NO);
writeAIRules(&out);
vm->_aiSaveStream = new Common::MemoryReadStream(out.getData(), out.size(), DisposeAfterUse::YES);
diff --git a/engines/pegasus/cursor.cpp b/engines/pegasus/cursor.cpp
index 6b7965d679..636b52051e 100644
--- a/engines/pegasus/cursor.cpp
+++ b/engines/pegasus/cursor.cpp
@@ -89,8 +89,6 @@ void Cursor::setCurrentFrameIndex(int32 index) {
} else {
CursorMan.replaceCursor(_info[index].surface->getPixels(), _info[index].surface->w, _info[index].surface->h, _info[index].hotspot.x, _info[index].hotspot.y, _info[index].surface->format.RGBToColor(0xFF, 0xFF, 0xFF), false, &_info[index].surface->format);
}
-
- ((PegasusEngine *)g_engine)->_gfx->markCursorAsDirty();
}
}
}
@@ -104,13 +102,11 @@ void Cursor::show() {
CursorMan.showMouse(true);
_cursorObscured = false;
- ((PegasusEngine *)g_engine)->_gfx->markCursorAsDirty();
}
void Cursor::hide() {
CursorMan.showMouse(false);
setCurrentFrameIndex(0);
- ((PegasusEngine *)g_engine)->_gfx->markCursorAsDirty();
}
void Cursor::hideUntilMoved() {
@@ -125,7 +121,6 @@ void Cursor::useIdleTime() {
_cursorLocation = g_system->getEventManager()->getMousePos();
if (_index != -1 && _cursorObscured)
show();
- ((PegasusEngine *)g_engine)->_gfx->markCursorAsDirty();
}
}
diff --git a/engines/pegasus/graphics.cpp b/engines/pegasus/graphics.cpp
index 634b0eb0cc..7748c266f5 100644
--- a/engines/pegasus/graphics.cpp
+++ b/engines/pegasus/graphics.cpp
@@ -44,7 +44,6 @@ GraphicsManager::GraphicsManager(PegasusEngine *vm) : _vm(vm) {
_frontLayer = kMaxAvailableOrder;
_firstDisplayElement = _lastDisplayElement = 0;
_workArea.create(640, 480, _vm->_system->getScreenFormat());
- _modifiedScreen = false;
_curSurface = &_workArea;
_erase = false;
_updatesEnabled = true;
@@ -152,8 +151,6 @@ void GraphicsManager::removeDisplayElement(DisplayElement *oldElement) {
}
void GraphicsManager::updateDisplay() {
- bool screenDirty = false;
-
if (!_dirtyRect.isEmpty()) {
// Fill the dirty area with black if erase mode is enabled
if (_erase)
@@ -167,29 +164,18 @@ void GraphicsManager::updateDisplay() {
// but it should work fine for now.
if (bounds.intersects(_dirtyRect) && runner->validToDraw(_backLayer, _frontLayer)) {
runner->draw(bounds);
- screenDirty = true;
}
}
// Copy only the dirty rect to the screen
- if (screenDirty)
- g_system->copyRectToScreen((byte *)_workArea.getBasePtr(_dirtyRect.left, _dirtyRect.top), _workArea.pitch, _dirtyRect.left, _dirtyRect.top, _dirtyRect.width(), _dirtyRect.height());
+ g_system->copyRectToScreen((byte *)_workArea.getBasePtr(_dirtyRect.left, _dirtyRect.top), _workArea.pitch, _dirtyRect.left, _dirtyRect.top, _dirtyRect.width(), _dirtyRect.height());
// Clear the dirty rect
_dirtyRect = Common::Rect();
}
- if (_updatesEnabled && (screenDirty || _modifiedScreen))
+ if (_updatesEnabled)
g_system->updateScreen();
-
- _modifiedScreen = false;
-}
-
-void GraphicsManager::clearScreen() {
- Graphics::Surface *screen = g_system->lockScreen();
- screen->fillRect(Common::Rect(0, 0, 640, 480), g_system->getScreenFormat().RGBToColor(0, 0, 0));
- g_system->unlockScreen();
- _modifiedScreen = true;
}
DisplayElement *GraphicsManager::findDisplayElement(const DisplayElementID id) {
@@ -214,10 +200,6 @@ void GraphicsManager::doFadeInSync(const TimeValue time, const TimeScale scale,
_updatesEnabled = true;
}
-void GraphicsManager::markCursorAsDirty() {
- _modifiedScreen = true;
-}
-
void GraphicsManager::newShakePoint(int32 index1, int32 index2, int32 maxRadius) {
int32 index3 = (index1 + index2) >> 1;
diff --git a/engines/pegasus/graphics.h b/engines/pegasus/graphics.h
index 7b48ea4598..9ae45c341d 100644
--- a/engines/pegasus/graphics.h
+++ b/engines/pegasus/graphics.h
@@ -57,7 +57,6 @@ public:
Graphics::Surface *getCurSurface() { return _curSurface; }
void setCurSurface(Graphics::Surface *surface) { _curSurface = surface; }
Graphics::Surface *getWorkArea() { return &_workArea; }
- void clearScreen();
DisplayElement *findDisplayElement(const DisplayElementID id);
void shakeTheWorld(TimeValue time, TimeScale scale);
void enableErase();
@@ -69,13 +68,10 @@ public:
void doFadeOutSync(const TimeValue = kOneSecondPerThirtyTicks, const TimeScale = kThirtyTicksPerSecond, bool isBlack = true);
void doFadeInSync(const TimeValue = kOneSecondPerThirtyTicks, const TimeScale = kThirtyTicksPerSecond, bool isBlack = true);
-protected:
- void markCursorAsDirty();
-
private:
PegasusEngine *_vm;
- bool _modifiedScreen, _erase;
+ bool _erase;
Common::Rect _dirtyRect;
DisplayOrder _backLayer, _frontLayer;
DisplayElement *_firstDisplayElement, *_lastDisplayElement;
diff --git a/engines/pegasus/input.cpp b/engines/pegasus/input.cpp
index f4834037d9..36a84dbd3c 100644
--- a/engines/pegasus/input.cpp
+++ b/engines/pegasus/input.cpp
@@ -26,6 +26,8 @@
#include "common/events.h"
#include "common/system.h"
+#include "gui/gui-manager.h"
+
#include "pegasus/cursor.h"
#include "pegasus/input.h"
#include "pegasus/pegasus.h"
@@ -148,6 +150,7 @@ void InputDeviceManager::getInput(Input &input, const InputBits filter) {
// Set the console to be requested or not
input.setConsoleRequested(_consoleRequested);
+ _consoleRequested = false;
// WORKAROUND: The original had this in currentBits, but then
// pressing alt would count as an event (and mess up someone
@@ -173,9 +176,14 @@ void InputDeviceManager::waitInput(const InputBits filter) {
}
bool InputDeviceManager::notifyEvent(const Common::Event &event) {
+ if (GUI::GuiManager::instance().isActive()) {
+ // For some reason, the engine hooks in the event system using an EventObserver.
+ // So we need to explicitly ignore events that happen while ScummVM's GUI is open.
+ return false;
+ }
+
// We're mapping from ScummVM events to pegasus events, which
// are based on pippin events.
- _consoleRequested = false;
switch (event.type) {
case Common::EVENT_KEYDOWN:
@@ -215,10 +223,18 @@ bool InputDeviceManager::notifyEvent(const Common::Event &event) {
}
void InputDeviceManager::pumpEvents() {
+ PegasusEngine *vm = ((PegasusEngine *)g_engine);
+
+ bool saveAllowed = vm->swapSaveAllowed(false);
+ bool openAllowed = vm->swapLoadAllowed(false);
+
// Just poll for events. notifyEvent() will pick up on them.
Common::Event event;
while (g_system->getEventManager()->pollEvent(event))
;
+
+ vm->swapSaveAllowed(saveAllowed);
+ vm->swapLoadAllowed(openAllowed);
}
int operator==(const Input &arg1, const Input &arg2) {
diff --git a/engines/pegasus/items/biochips/pegasuschip.cpp b/engines/pegasus/items/biochips/pegasuschip.cpp
index c74cc346ca..574316b5ca 100644
--- a/engines/pegasus/items/biochips/pegasuschip.cpp
+++ b/engines/pegasus/items/biochips/pegasuschip.cpp
@@ -49,6 +49,11 @@ void PegasusChip::select() {
setUpPegasusChip();
}
+void PegasusChip::takeSharedArea() {
+ BiochipItem::takeSharedArea();
+ setUpPegasusChip();
+}
+
void PegasusChip::setUpPegasusChip() {
switch (GameState.getCurrentNeighborhood()) {
case kCaldoriaID:
diff --git a/engines/pegasus/items/biochips/pegasuschip.h b/engines/pegasus/items/biochips/pegasuschip.h
index c4f1e6cd84..b81df94b39 100644
--- a/engines/pegasus/items/biochips/pegasuschip.h
+++ b/engines/pegasus/items/biochips/pegasuschip.h
@@ -38,6 +38,8 @@ public:
void select();
+ void takeSharedArea() override;
+
void setUpPegasusChip();
// Called to set up the Pegasus chip when the Pegasus chip is the current chip but does not
diff --git a/engines/pegasus/neighborhood/mars/mars.cpp b/engines/pegasus/neighborhood/mars/mars.cpp
index 432909596e..6e3795d250 100644
--- a/engines/pegasus/neighborhood/mars/mars.cpp
+++ b/engines/pegasus/neighborhood/mars/mars.cpp
@@ -2422,9 +2422,7 @@ void Mars::doCanyonChase() {
_vm->drawScaledFrame(frame, 0, 0);
}
- Common::Event event;
- while (g_system->getEventManager()->pollEvent(event))
- ;
+ InputDevice.pumpEvents();
g_system->delayMillis(10);
}
@@ -3055,9 +3053,7 @@ void Mars::transportToRobotShip() {
_vm->drawScaledFrame(frame, 0, 0);
}
- Common::Event event;
- while (g_system->getEventManager()->pollEvent(event))
- ;
+ InputDevice.pumpEvents();
g_system->delayMillis(10);
}
diff --git a/engines/pegasus/pegasus.cpp b/engines/pegasus/pegasus.cpp
index 1f77caa751..5f756449dd 100644
--- a/engines/pegasus/pegasus.cpp
+++ b/engines/pegasus/pegasus.cpp
@@ -98,6 +98,8 @@ PegasusEngine::PegasusEngine(OSystem *syst, const PegasusGameDescription *gamede
}
PegasusEngine::~PegasusEngine() {
+ throwAwayEverything();
+
delete _resFork;
delete _console;
delete _cursor;
@@ -939,8 +941,9 @@ void PegasusEngine::doGameMenuCommand(const GameMenuCommand command) {
} else {
_gfx->doFadeOutSync();
useMenu(0);
- _gfx->clearScreen();
+ _gfx->enableErase();
_gfx->updateDisplay();
+ _gfx->disableErase();
Video::VideoDecoder *video = new Video::QuickTimeDecoder();
if (!video->loadFile(_introDirectory + "/Closing.movie"))
@@ -1655,10 +1658,12 @@ void PegasusEngine::startNewGame() {
GameState.resetGameState();
GameState.setWalkthroughMode(isWalkthrough);
- // TODO: Enable erase
_gfx->doFadeOutSync();
useMenu(0);
+
+ _gfx->enableErase();
_gfx->updateDisplay();
+ _gfx->disableErase();
_gfx->enableUpdates();
createInterface();
diff --git a/engines/pegasus/transition.cpp b/engines/pegasus/transition.cpp
index b6b13be919..b22f51f96d 100644
--- a/engines/pegasus/transition.cpp
+++ b/engines/pegasus/transition.cpp
@@ -34,54 +34,52 @@ ScreenFader::ScreenFader() {
_isBlack = true;
// Initially, assume screens are on at full brightness.
Fader::setFaderValue(100);
- _screen = new Graphics::Surface();
}
ScreenFader::~ScreenFader() {
- _screen->free();
- delete _screen;
+ _screen.free();
}
void ScreenFader::doFadeOutSync(const TimeValue duration, const TimeValue scale, bool isBlack) {
_isBlack = isBlack;
- _screen->copyFrom(*g_system->lockScreen());
+ _screen.copyFrom(*g_system->lockScreen());
g_system->unlockScreen();
FaderMoveSpec spec;
spec.makeTwoKnotFaderSpec(scale, 0, getFaderValue(), duration, 0);
startFaderSync(spec);
- _screen->free();
+ _screen.free();
}
void ScreenFader::doFadeInSync(const TimeValue duration, const TimeValue scale, bool isBlack) {
_isBlack = isBlack;
- _screen->copyFrom(*g_system->lockScreen());
+ _screen.copyFrom(*g_system->lockScreen());
g_system->unlockScreen();
FaderMoveSpec spec;
spec.makeTwoKnotFaderSpec(scale, 0, getFaderValue(), duration, 100);
startFaderSync(spec);
- _screen->free();
+ _screen.free();
}
void ScreenFader::setFaderValue(const int32 value) {
if (value != getFaderValue()) {
Fader::setFaderValue(value);
- if (_screen->getPixels()) {
+ if (_screen.getPixels()) {
// The original game does a gamma fade here using the Mac API. In order to do
// that, it would require an immense amount of CPU processing. This does a
// linear fade instead, which looks fairly well, IMO.
Graphics::Surface *screen = g_system->lockScreen();
- for (uint y = 0; y < _screen->h; y++) {
- for (uint x = 0; x < _screen->w; x++) {
- if (_screen->format.bytesPerPixel == 2)
- WRITE_UINT16(screen->getBasePtr(x, y), fadePixel(READ_UINT16(_screen->getBasePtr(x, y)), value));
+ for (uint y = 0; y < _screen.h; y++) {
+ for (uint x = 0; x < _screen.w; x++) {
+ if (_screen.format.bytesPerPixel == 2)
+ WRITE_UINT16(screen->getBasePtr(x, y), fadePixel(READ_UINT16(_screen.getBasePtr(x, y)), value));
else
- WRITE_UINT32(screen->getBasePtr(x, y), fadePixel(READ_UINT32(_screen->getBasePtr(x, y)), value));
+ WRITE_UINT32(screen->getBasePtr(x, y), fadePixel(READ_UINT32(_screen.getBasePtr(x, y)), value));
}
}
@@ -97,7 +95,7 @@ static inline byte fadeComponent(byte comp, int32 percent) {
uint32 ScreenFader::fadePixel(uint32 color, int32 percent) const {
byte r, g, b;
- g_system->getScreenFormat().colorToRGB(color, r, g, b);
+ _screen.format.colorToRGB(color, r, g, b);
if (_isBlack) {
r = fadeComponent(r, percent);
@@ -109,7 +107,7 @@ uint32 ScreenFader::fadePixel(uint32 color, int32 percent) const {
b = 0xFF - fadeComponent(0xFF - b, percent);
}
- return g_system->getScreenFormat().RGBToColor(r, g, b);
+ return _screen.format.RGBToColor(r, g, b);
}
Transition::Transition(const DisplayElementID id) : FaderAnimation(id) {
diff --git a/engines/pegasus/transition.h b/engines/pegasus/transition.h
index e1f0822f1b..f8cdb3e365 100644
--- a/engines/pegasus/transition.h
+++ b/engines/pegasus/transition.h
@@ -47,7 +47,7 @@ public:
private:
bool _isBlack;
uint32 fadePixel(uint32 color, int32 percent) const;
- Graphics::Surface *_screen;
+ Graphics::Surface _screen;
};
// Transitions are faders that range over [0,1000], which makes their
diff --git a/engines/sci/console.cpp b/engines/sci/console.cpp
index 82661f044b..97a6164d53 100644
--- a/engines/sci/console.cpp
+++ b/engines/sci/console.cpp
@@ -53,9 +53,11 @@
#include "video/avi_decoder.h"
#include "sci/video/seq_decoder.h"
#ifdef ENABLE_SCI32
+#include "common/memstream.h"
#include "sci/graphics/frameout.h"
#include "sci/graphics/paint32.h"
#include "sci/graphics/palette32.h"
+#include "sci/sound/decoders/sol.h"
#include "video/coktel_decoder.h"
#endif
@@ -117,6 +119,7 @@ Console::Console(SciEngine *engine) : GUI::Debugger(),
registerCmd("alloc_list", WRAP_METHOD(Console, cmdAllocList));
registerCmd("hexgrep", WRAP_METHOD(Console, cmdHexgrep));
registerCmd("verify_scripts", WRAP_METHOD(Console, cmdVerifyScripts));
+ registerCmd("integrity_dump", WRAP_METHOD(Console, cmdResourceIntegrityDump));
// Game
registerCmd("save_game", WRAP_METHOD(Console, cmdSaveGame));
registerCmd("restore_game", WRAP_METHOD(Console, cmdRestoreGame));
@@ -172,6 +175,7 @@ Console::Console(SciEngine *engine) : GUI::Debugger(),
registerCmd("show_instruments", WRAP_METHOD(Console, cmdShowInstruments));
registerCmd("map_instrument", WRAP_METHOD(Console, cmdMapInstrument));
registerCmd("audio_list", WRAP_METHOD(Console, cmdAudioList));
+ registerCmd("audio_dump", WRAP_METHOD(Console, cmdAudioDump));
// Script
registerCmd("addresses", WRAP_METHOD(Console, cmdAddresses));
registerCmd("registers", WRAP_METHOD(Console, cmdRegisters));
@@ -373,6 +377,7 @@ bool Console::cmdHelp(int argc, const char **argv) {
debugPrintf(" alloc_list - Lists all allocated resources\n");
debugPrintf(" hexgrep - Searches some resources for a particular sequence of bytes, represented as hexadecimal numbers\n");
debugPrintf(" verify_scripts - Performs sanity checks on SCI1.1-SCI2.1 game scripts (e.g. if they're up to 64KB in total)\n");
+ debugPrintf(" integrity_dump - Dumps integrity data about resources in the current game to disk\n");
debugPrintf("\n");
debugPrintf("Game:\n");
debugPrintf(" save_game - Saves the current game state to the hard disk\n");
@@ -424,6 +429,7 @@ bool Console::cmdHelp(int argc, const char **argv) {
debugPrintf(" show_instruments - Shows the instruments of a specific song, or all songs\n");
debugPrintf(" map_instrument - Dynamically maps an MT-32 instrument to a GM instrument\n");
debugPrintf(" audio_list - Lists currently active digital audio samples (SCI2+)\n");
+ debugPrintf(" audio_dump - Dumps the requested audio resource as an uncompressed wave file (SCI2+)\n");
debugPrintf("\n");
debugPrintf("Script:\n");
debugPrintf(" addresses - Provides information on how to pass addresses\n");
@@ -919,6 +925,113 @@ bool Console::cmdList(int argc, const char **argv) {
return true;
}
+bool Console::cmdResourceIntegrityDump(int argc, const char **argv) {
+ if (argc < 2) {
+ debugPrintf("Dumps integrity data about resources in the current game to disk.\n");
+ debugPrintf("Usage: %s <filename> [<skip video file hashing>] [<skip video files altogether>]\n", argv[0]);
+ return true;
+ }
+
+ Common::DumpFile outFile;
+ if (!outFile.open(argv[1])) {
+ debugPrintf("Failed to open output file %s.\n", argv[1]);
+ return true;
+ }
+
+ const bool hashVideoFiles = argc < 3;
+ const bool videoFiles = argc < 4;
+
+ for (int i = 0; i < kResourceTypeInvalid; ++i) {
+ const ResourceType resType = (ResourceType)i;
+
+ // This will list video resources inside of resource bundles even if
+ // video files are skipped, but this seems fine since those files are
+ // small because they were intended to load into memory. (This happens
+ // with VMDs in GK2.)
+ Common::List<ResourceId> resources = _engine->getResMan()->listResources(resType);
+
+ const char *extension;
+ if (videoFiles) {
+ switch (resType) {
+ case kResourceTypeRobot:
+ case kResourceTypeVMD:
+ case kResourceTypeDuck:
+ case kResourceTypeClut: {
+ extension = getResourceTypeExtension(resType);
+ assert(*extension != '\0');
+
+ const Common::String filesGlob = Common::String::format("*.%s", extension).c_str();
+ Common::ArchiveMemberList files;
+ const int numMatches = SearchMan.listMatchingMembers(files, filesGlob);
+ if (numMatches > 0) {
+ Common::ArchiveMemberList::const_iterator it;
+ for (it = files.begin(); it != files.end(); ++it) {
+ const uint resNo = atoi((*it)->getName().c_str());
+ resources.push_back(ResourceId(resType, resNo));
+ }
+ }
+
+ break;
+ }
+ default:
+ extension = "";
+ }
+ }
+
+ if (resources.size()) {
+ Common::sort(resources.begin(), resources.end());
+ Common::List<ResourceId>::const_iterator it;
+ debugPrintf("%s: ", getResourceTypeName(resType));
+ for (it = resources.begin(); it != resources.end(); ++it) {
+ Common::String statusName;
+ if (resType == kResourceTypeAudio36 || resType == kResourceTypeSync36) {
+ statusName = it->toPatchNameBase36();
+ } else {
+ statusName = Common::String::format("%d", it->getNumber());
+ }
+
+ const Common::String resourceName = it->toString();
+
+ Resource *resource = _engine->getResMan()->findResource(*it, false);
+ if (resource) {
+ Common::MemoryReadStream stream = resource->toStream();
+ writeIntegrityDumpLine(statusName, resourceName, outFile, &stream, resource->size(), true);
+ } else if (videoFiles && *extension != '\0') {
+ const Common::String fileName = Common::String::format("%u.%s", it->getNumber(), extension);
+ Common::File file;
+ Common::ReadStream *stream = nullptr;
+ if (file.open(fileName)) {
+ stream = &file;
+ }
+ writeIntegrityDumpLine(statusName, resourceName, outFile, stream, file.size(), hashVideoFiles);
+ }
+ }
+
+ debugPrintf("\n");
+ }
+ }
+
+ const char *otherVideoFiles[] = { "avi", "seq" };
+ for (uint i = 0; i < ARRAYSIZE(otherVideoFiles); ++i) {
+ const char *extension = otherVideoFiles[i];
+
+ Common::ArchiveMemberList files;
+ if (SearchMan.listMatchingMembers(files, Common::String::format("*.%s", extension).c_str()) > 0) {
+ debugPrintf("%s: ", extension);
+ Common::sort(files.begin(), files.end(), Common::ArchiveMemberListComparator());
+ Common::ArchiveMemberList::const_iterator it;
+ for (it = files.begin(); it != files.end(); ++it) {
+ const Common::ArchiveMember &file = **it;
+ Common::ScopedPtr<Common::SeekableReadStream> stream(file.createReadStream());
+ writeIntegrityDumpLine(file.getName(), file.getName(), outFile, stream.get(), stream->size(), hashVideoFiles);
+ }
+ debugPrintf("\n");
+ }
+ }
+
+ return true;
+}
+
bool Console::cmdAllocList(int argc, const char **argv) {
ResourceManager *resMan = _engine->getResMan();
@@ -1343,6 +1456,142 @@ bool Console::cmdAudioList(int argc, const char **argv) {
return true;
}
+bool Console::cmdAudioDump(int argc, const char **argv) {
+#ifdef ENABLE_SCI32
+ if (argc != 2 && argc != 6) {
+ debugPrintf("Dumps the requested audio resource as an uncompressed wave file.\n");
+ debugPrintf("Usage (audio): %s <audio resource id>\n", argv[0]);
+ debugPrintf("Usage (audio36): %s <audio map id> <noun> <verb> <cond> <seq>\n", argv[0]);
+ return true;
+ }
+
+ ResourceId id;
+ if (argc == 2) {
+ id = ResourceId(kResourceTypeAudio, atoi(argv[1]));
+ } else {
+ id = ResourceId(kResourceTypeAudio36, atoi(argv[1]), atoi(argv[2]), atoi(argv[3]), atoi(argv[4]), atoi(argv[5]));
+ }
+
+ Resource *resource = _engine->_resMan->findResource(id, false);
+ if (!resource) {
+ debugPrintf("Not found.\n");
+ return true;
+ }
+
+ Common::MemoryReadStream stream = resource->toStream();
+
+ Common::DumpFile outFile;
+ const Common::String fileName = Common::String::format("%s.wav", id.toString().c_str());
+ if (!outFile.open(fileName)) {
+ debugPrintf("Could not open dump file %s.\n", fileName.c_str());
+ return true;
+ }
+
+ const bool isSol = detectSolAudio(stream);
+ const bool isWave = !isSol && detectWaveAudio(stream);
+ const bool isRaw = !isSol && !isWave;
+
+ if (isSol || isRaw) {
+ uint16 sampleRate = 11025;
+ int numChannels = 1;
+ int bytesPerSample = 1;
+ bool sourceIs8Bit = true;
+ uint32 compressedSize;
+ uint32 decompressedSize;
+
+ if (isSol) {
+ stream.seek(6, SEEK_SET);
+ sampleRate = stream.readUint16LE();
+ const byte flags = stream.readByte();
+ compressedSize = stream.readUint32LE();
+
+ // All AudioStreams must output 16-bit samples
+ bytesPerSample = 2;
+ decompressedSize = compressedSize * bytesPerSample;
+
+ if (flags & kCompressed) {
+ decompressedSize *= 2;
+ }
+ if (flags & k16Bit) {
+ sourceIs8Bit = false;
+ }
+ if (flags & kStereo) {
+ numChannels = 2;
+ }
+ } else {
+ decompressedSize = resource->size();
+ }
+
+ enum {
+ kWaveHeaderSize = 36
+ };
+
+ outFile.writeString("RIFF");
+ outFile.writeUint32LE(kWaveHeaderSize + decompressedSize);
+ outFile.writeString("WAVEfmt ");
+ outFile.writeUint32LE(16);
+ outFile.writeUint16LE(1);
+ outFile.writeUint16LE(numChannels);
+ outFile.writeUint32LE(sampleRate);
+ outFile.writeUint32LE(sampleRate * bytesPerSample * numChannels);
+ outFile.writeUint16LE(bytesPerSample * numChannels);
+ outFile.writeUint16LE(bytesPerSample * 8);
+ outFile.writeString("data");
+ outFile.writeUint32LE(decompressedSize);
+
+ if (isSol) {
+ stream.seek(0, SEEK_SET);
+ Common::ScopedPtr<Audio::SeekableAudioStream> audioStream(makeSOLStream(&stream, DisposeAfterUse::NO));
+
+ if (!audioStream) {
+ debugPrintf("Could not create SOL stream.\n");
+ return true;
+ }
+
+ byte buffer[4096];
+ const int samplesToRead = ARRAYSIZE(buffer) / 2;
+ uint bytesWritten = 0;
+ int samplesRead;
+ while ((samplesRead = audioStream->readBuffer((int16 *)buffer, samplesToRead))) {
+ uint bytesToWrite = samplesRead * bytesPerSample;
+ outFile.write(buffer, bytesToWrite);
+ bytesWritten += bytesToWrite;
+ }
+
+ if (bytesWritten != decompressedSize) {
+ debugPrintf("WARNING: Should have written %u bytes but wrote %u bytes!\n", decompressedSize, bytesWritten);
+ while (bytesWritten < decompressedSize) {
+ outFile.writeByte(0);
+ ++bytesWritten;
+ }
+ }
+
+ const char *bits;
+ if (sourceIs8Bit) {
+ bits = "upconverted 16";
+ } else {
+ bits = "16";
+ }
+
+ debugPrintf("%s-bit %uHz %d-channel SOL audio, %u -> %u bytes\n", bits, sampleRate, numChannels, compressedSize, decompressedSize);
+ } else {
+ outFile.write(resource->data(), resource->size());
+ debugPrintf("%d-bit %uHz %d-channel raw audio, %u bytes\n", bytesPerSample * 8, sampleRate, numChannels, decompressedSize);
+ }
+ } else if (isWave) {
+ outFile.write(resource->data(), resource->size());
+ debugPrintf("Raw wave file\n");
+ } else {
+ error("Impossible situation");
+ }
+
+ debugPrintf("Written to %s successfully.\n", fileName.c_str());
+#else
+ debugPrintf("SCI32 isn't included in this compiled executable\n");
+#endif
+ return true;
+}
+
bool Console::cmdSaveGame(int argc, const char **argv) {
if (argc != 2) {
debugPrintf("Saves the current game state to the hard disk\n");
@@ -2832,94 +3081,7 @@ bool Console::cmdViewReference(int argc, const char **argv) {
}
}
- int type_mask = g_sci->getKernel()->findRegType(reg);
- int filter;
- int found = 0;
-
- debugPrintf("%04x:%04x is of type 0x%x: ", PRINT_REG(reg), type_mask);
-
- if (reg.getSegment() == 0 && reg.getOffset() == 0) {
- debugPrintf("Null.\n");
- return true;
- }
-
- if (reg_end.getSegment() != reg.getSegment() && reg_end != NULL_REG) {
- debugPrintf("Ending segment different from starting segment. Assuming no bound on dump.\n");
- reg_end = NULL_REG;
- }
-
- for (filter = 1; filter < 0xf000; filter <<= 1) {
- int type = type_mask & filter;
-
- if (found && type) {
- debugPrintf("--- Alternatively, it could be a ");
- }
-
-
- switch (type) {
- case 0:
- break;
- case SIG_TYPE_LIST:
- printList(reg);
- break;
- case SIG_TYPE_NODE:
- debugPrintf("list node\n");
- printNode(reg);
- break;
- case SIG_TYPE_OBJECT:
- debugPrintf("object\n");
- printObject(reg);
- break;
- case SIG_TYPE_REFERENCE: {
- switch (_engine->_gamestate->_segMan->getSegmentType(reg.getSegment())) {
-#ifdef ENABLE_SCI32
- case SEG_TYPE_ARRAY: {
- printArray(reg);
- break;
- }
- case SEG_TYPE_BITMAP: {
- printBitmap(reg);
- break;
- }
-#endif
- default: {
- const SegmentRef block = _engine->_gamestate->_segMan->dereference(reg);
- uint16 size = block.maxSize;
-
- debugPrintf("raw data\n");
-
- if (reg_end.getSegment() != 0 && (size < reg_end.getOffset() - reg.getOffset())) {
- debugPrintf("Block end out of bounds (size %d). Resetting.\n", size);
- reg_end = NULL_REG;
- }
-
- if (reg_end.getSegment() != 0 && (size >= reg_end.getOffset() - reg.getOffset()))
- size = reg_end.getOffset() - reg.getOffset();
-
- if (reg_end.getSegment() != 0)
- debugPrintf("Block size less than or equal to %d\n", size);
-
- if (block.isRaw)
- Common::hexdump(block.raw, size, 16, 0);
- else
- hexDumpReg(block.reg, size / 2, 4, 0);
- }
- }
- break;
- }
- case SIG_TYPE_INTEGER:
- debugPrintf("arithmetic value\n %d (%04x)\n", (int16) reg.getOffset(), reg.getOffset());
- break;
- default:
- debugPrintf("unknown type %d.\n", type);
- }
-
- if (type) {
- debugPrintf("\n");
- found = 1;
- }
- }
-
+ printReference(reg, reg_end);
return true;
}
@@ -3043,9 +3205,9 @@ bool Console::cmdDumpReference(int argc, const char **argv) {
}
bool Console::cmdViewObject(int argc, const char **argv) {
- if (argc != 2) {
+ if (argc < 2) {
debugPrintf("Examines the object at the given address.\n");
- debugPrintf("Usage: %s <address>\n", argv[0]);
+ debugPrintf("Usage: %s <address> [<selector name> ...]\n", argv[0]);
debugPrintf("Check the \"addresses\" command on how to use addresses\n");
return true;
}
@@ -3058,8 +3220,45 @@ bool Console::cmdViewObject(int argc, const char **argv) {
return true;
}
- debugPrintf("Information on the object at the given address:\n");
- printObject(addr);
+ if (argc >= 3) {
+ for (int i = 2; i < argc; ++i) {
+ const Object *obj = _engine->_gamestate->_segMan->getObject(addr);
+ if (!obj) {
+ debugPrintf("%04x:%04x is not an object.\n", PRINT_REG(addr));
+ break;
+ }
+
+ const Selector selector = _engine->getKernel()->findSelector(argv[i]);
+ if (selector == -1) {
+ debugPrintf("Invalid selector '%s'.\n", argv[i]);
+ break;
+ }
+
+ const int index = obj->locateVarSelector(_engine->_gamestate->_segMan, selector);
+ if (index == -1) {
+ debugPrintf("Selector '%s' is not valid for object %04x:%04x.\n", argv[i], PRINT_REG(addr));
+ break;
+ }
+
+ const reg_t value = obj->getVariable(index);
+ if (i == argc - 1) {
+ if (value.isPointer()) {
+ printReference(value);
+ } else {
+ debugPrintf("%04x:%04x (%u)\n", PRINT_REG(value), value.toUint16());
+ }
+ } else if (!value.isPointer()) {
+ debugPrintf("Selector '%s' on object %04x:%04x is not a pointer to an object.\n", argv[i], PRINT_REG(addr));
+ debugPrintf("Value is %04x:%04x (%u).\n", PRINT_REG(value), value.toUint16());
+ break;
+ } else {
+ addr = value;
+ }
+ }
+ } else {
+ debugPrintf("Information on the object at the given address:\n");
+ printObject(addr);
+ }
return true;
}
@@ -3280,9 +3479,7 @@ bool Console::cmdTrace(int argc, const char **argv) {
bool Console::cmdStepOver(int argc, const char **argv) {
_debugState.seeking = kDebugSeekStepOver;
_debugState.seekLevel = _engine->_gamestate->_executionStack.size();
- _debugState.debugging = true;
-
- return cmdExit(0, 0);
+ return cmdTrace(argc, argv);
}
bool Console::cmdStepEvent(int argc, const char **argv) {
@@ -3401,7 +3598,6 @@ bool Console::cmdDisassemble(int argc, const char **argv) {
if (jumpTarget > farthestTarget)
farthestTarget = jumpTarget;
}
- // TODO: Use a true 32-bit reg_t for the position (addr)
addr = disassemble(_engine->_gamestate, make_reg32(addr.getSegment(), addr.getOffset()), obj, printBWTag, printBytecode);
if (addr.isNull() && prevAddr < farthestTarget)
addr = prevAddr + 1; // skip past the ret
@@ -4791,6 +4987,96 @@ int Console::printNode(reg_t addr) {
return 0;
}
+void Console::printReference(reg_t reg, reg_t reg_end) {
+ int type_mask = g_sci->getKernel()->findRegType(reg);
+ int filter;
+ int found = 0;
+
+ debugPrintf("%04x:%04x is of type 0x%x: ", PRINT_REG(reg), type_mask);
+
+ if (reg.getSegment() == 0 && reg.getOffset() == 0) {
+ debugPrintf("Null.\n");
+ return;
+ }
+
+ if (reg_end.getSegment() != reg.getSegment() && reg_end != NULL_REG) {
+ debugPrintf("Ending segment different from starting segment. Assuming no bound on dump.\n");
+ reg_end = NULL_REG;
+ }
+
+ for (filter = 1; filter < 0xf000; filter <<= 1) {
+ int type = type_mask & filter;
+
+ if (found && type) {
+ debugPrintf("--- Alternatively, it could be a ");
+ }
+
+
+ switch (type) {
+ case 0:
+ break;
+ case SIG_TYPE_LIST:
+ printList(reg);
+ break;
+ case SIG_TYPE_NODE:
+ debugPrintf("list node\n");
+ printNode(reg);
+ break;
+ case SIG_TYPE_OBJECT:
+ debugPrintf("object\n");
+ printObject(reg);
+ break;
+ case SIG_TYPE_REFERENCE: {
+ switch (_engine->_gamestate->_segMan->getSegmentType(reg.getSegment())) {
+#ifdef ENABLE_SCI32
+ case SEG_TYPE_ARRAY: {
+ printArray(reg);
+ break;
+ }
+ case SEG_TYPE_BITMAP: {
+ printBitmap(reg);
+ break;
+ }
+#endif
+ default: {
+ const SegmentRef block = _engine->_gamestate->_segMan->dereference(reg);
+ uint16 size = block.maxSize;
+
+ debugPrintf("raw data\n");
+
+ if (reg_end.getSegment() != 0 && (size < reg_end.getOffset() - reg.getOffset())) {
+ debugPrintf("Block end out of bounds (size %d). Resetting.\n", size);
+ reg_end = NULL_REG;
+ }
+
+ if (reg_end.getSegment() != 0 && (size >= reg_end.getOffset() - reg.getOffset()))
+ size = reg_end.getOffset() - reg.getOffset();
+
+ if (reg_end.getSegment() != 0)
+ debugPrintf("Block size less than or equal to %d\n", size);
+
+ if (block.isRaw)
+ Common::hexdump(block.raw, size, 16, 0);
+ else
+ hexDumpReg(block.reg, size / 2, 4, 0);
+ }
+ }
+ break;
+ }
+ case SIG_TYPE_INTEGER:
+ debugPrintf("arithmetic value\n %d (%04x)\n", (int16) reg.getOffset(), reg.getOffset());
+ break;
+ default:
+ debugPrintf("unknown type %d.\n", type);
+ }
+
+ if (type) {
+ debugPrintf("\n");
+ found = 1;
+ }
+ }
+}
+
#ifdef ENABLE_SCI32
void Console::printArray(reg_t reg) {
SegmentObj *mobj = _engine->_gamestate->_segMan->getSegment(reg.getSegment(), SEG_TYPE_ARRAY);
@@ -4868,6 +5154,25 @@ void Console::printBitmap(reg_t reg) {
#endif
+void Console::writeIntegrityDumpLine(const Common::String &statusName, const Common::String &resourceName, Common::WriteStream &out, Common::ReadStream *const data, const int size, const bool writeHash) {
+ debugPrintf("%s", statusName.c_str());
+
+ out.writeString(resourceName);
+ if (!data) {
+ out.writeString(" ERROR\n");
+ debugPrintf("[ERR] ");
+ } else {
+ out.writeString(Common::String::format(" %d ", size));
+ if (writeHash) {
+ out.writeString(Common::computeStreamMD5AsString(*data));
+ } else {
+ out.writeString("disabled");
+ }
+ out.writeString("\n");
+ debugPrintf("[OK] ");
+ }
+}
+
static void printChar(byte c) {
if (c < 32 || c >= 127)
c = '.';
diff --git a/engines/sci/console.h b/engines/sci/console.h
index 82a5f69db1..d5b80b695b 100644
--- a/engines/sci/console.h
+++ b/engines/sci/console.h
@@ -41,16 +41,10 @@ public:
Console(SciEngine *engine);
virtual ~Console();
-#ifdef ENABLE_SCI32
- void printArray(reg_t reg);
- void printBitmap(reg_t reg);
-#endif
-
private:
virtual void preEnter();
virtual void postEnter();
-private:
// General
bool cmdHelp(int argc, const char **argv);
// Kernel
@@ -77,6 +71,7 @@ private:
bool cmdResourceInfo(int argc, const char **argv);
bool cmdResourceTypes(int argc, const char **argv);
bool cmdList(int argc, const char **argv);
+ bool cmdResourceIntegrityDump(int argc, const char **argv);
bool cmdAllocList(int argc, const char **argv);
bool cmdHexgrep(int argc, const char **argv);
bool cmdVerifyScripts(int argc, const char **argv);
@@ -127,6 +122,7 @@ private:
bool cmdShowInstruments(int argc, const char **argv);
bool cmdMapInstrument(int argc, const char **argv);
bool cmdAudioList(int argc, const char **argv);
+ bool cmdAudioDump(int argc, const char **argv);
// Script
bool cmdAddresses(int argc, const char **argv);
bool cmdRegisters(int argc, const char **argv);
@@ -192,6 +188,13 @@ private:
void printKernelCallsFound(int kernelFuncNum, bool showFoundScripts);
void printBreakpoint(int index, const Breakpoint &bp);
+ void printReference(reg_t reg, reg_t reg_end = NULL_REG);
+#ifdef ENABLE_SCI32
+ void printArray(reg_t reg);
+ void printBitmap(reg_t reg);
+#endif
+
+ void writeIntegrityDumpLine(const Common::String &statusName, const Common::String &resourceName, Common::WriteStream &out, Common::ReadStream *const data, const int size, const bool writeHash);
SciEngine *_engine;
DebugState &_debugState;
diff --git a/engines/sci/detection.cpp b/engines/sci/detection.cpp
index 17a1ece3e1..aa7a63d224 100644
--- a/engines/sci/detection.cpp
+++ b/engines/sci/detection.cpp
@@ -499,6 +499,17 @@ static const ADExtraGuiOptionsMap optionsList[] = {
}
},
+ // Phantasmagoria 2 - content censoring option
+ {
+ GAMEOPTION_ENABLE_CENSORING,
+ {
+ _s("Enable content censoring"),
+ _s("Enable the game's built-in optional content censoring"),
+ "enable_censoring",
+ false
+ }
+ },
+
AD_EXTRA_GUI_OPTIONS_TERMINATOR
};
@@ -519,6 +530,7 @@ static ADGameDescription s_fallbackDesc = {
static char s_fallbackGameIdBuf[256];
static const char *directoryGlobs[] = {
+ "avi",
"english",
"french",
"german",
@@ -800,7 +812,7 @@ SaveStateList SciMetaEngine::listSaves(const char *target) const {
Common::InSaveFile *in = saveFileMan->openForLoading(*file);
if (in) {
SavegameMetadata meta;
- if (!get_savegame_metadata(in, &meta)) {
+ if (!get_savegame_metadata(in, meta)) {
// invalid
delete in;
continue;
@@ -849,7 +861,7 @@ SaveStateDescriptor SciMetaEngine::querySaveMetaInfos(const char *target, int sl
if (in) {
SavegameMetadata meta;
- if (!get_savegame_metadata(in, &meta)) {
+ if (!get_savegame_metadata(in, meta)) {
// invalid
delete in;
diff --git a/engines/sci/detection_tables.h b/engines/sci/detection_tables.h
index 3ee4459a5e..445f999dee 100644
--- a/engines/sci/detection_tables.h
+++ b/engines/sci/detection_tables.h
@@ -866,7 +866,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "b996fa1e57389a1e179a00a0049de1f4", 8110},
{"ressci.000", 0, "a19fc3604c6e5407abcf03d59ee87217", 168522221},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_GK2 },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_GK2 },
// Gabriel Knight 2 - English DOS (from jvprat)
// Executable scanning reports "2.100.002", VERSION file reports "1.1"
@@ -884,7 +884,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.006", 0, "ce9359037277b7d7976da185c2fa0aad", 2977},
{"ressci.006", 0, "8e44e03890205a7be12f45aaba9644b4", 60659424},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_GK2 },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_GK2 },
// Gabriel Knight 2 - French DOS (6-CDs Sierra Originals reedition)
// Executable scanning reports "2.100.002", VERSION file reports "1.0"
@@ -902,7 +902,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.006", 0, "11b2e722170b8c93fdaa5428e2c7676f", 3001},
{"ressci.006", 0, "4037d941aec39d2e654e20960429aefc", 60568486},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_GK2 },
+ Common::FR_FRA, Common::kPlatformDOS, ADGF_TESTING, GUIO_GK2 },
// Gabriel Knight 2 - German DOS/Windows (6-CDs original release, provided by m_kiewitz)
// Executable scanning reports "2.100.002", VERSION file reports "1.0"
@@ -920,7 +920,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.005", 0, "9fe7e86d66deabfeb10760990d2b1724", 2053},
{"resmap.006", 0, "c5323f49b7ee6a2c08c4852290e351c0", 2995},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_GK2 },
+ Common::DE_DEU, Common::kPlatformDOS, ADGF_TESTING, GUIO_GK2 },
// Gabriel Knight 2 - English Macintosh
// NOTE: This only contains disc 1 files (as well as the persistent file:
@@ -932,7 +932,16 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"Data4", 0, "8b843c62eb53136a855d6e0087e3cb0d", 5889553},
{"Data5", 0, "f9fcf9ab2eb13b2125c33a1cda03a093", 14349984},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformMacintosh, ADGF_MACRESFORK | ADGF_CD | ADGF_UNSTABLE, GUIO_GK2_MAC },
+ Common::EN_ANY, Common::kPlatformMacintosh, ADGF_MACRESFORK | ADGF_UNSTABLE, GUIO_GK2_MAC },
+
+ // Gabriel Knight 2 - PIRATED US English GOG.com version with German data
+ // From Trac#9744
+ {"gk2", "", {
+ {"resource.aud", 0, "3812e15c3a187f5b633bde3a4832b2cf", 167630831},
+ {"ressci.000", 0, "a19fc3604c6e5407abcf03d59ee87217", 169500205},
+ {"resmap.000", 0, "e6bab045e2b5eb205e150338e74d8641", 8092},
+ AD_LISTEND},
+ Common::DE_DEU, Common::kPlatformDOS, ADGF_PIRATED, GUIO_GK2 },
#undef GUIO_GK2_DEMO
#undef GUIO_GK2
@@ -1162,7 +1171,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"ressci.000", 0, "98a39ae535dd01714ac313f8ba925045", 7260363},
{"resmap.000", 0, "10267a1542a73d527e50f0340549088b", 4900},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_UNSTABLE, GUIO_HOYLE5 },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_UNSTABLE | ADGF_DROPPLATFORM, GUIO_HOYLE5 },
// Hoyle 5 (Hoyle Classic Games) - Windows
{"hoyle5", "", {
@@ -1170,7 +1179,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"ressci.000", 0, "55ae04012a73abc15b93debf60a7df71", 16909704},
{"resmap.000", 0, "daf64a91344a7934fe4374765267c2af", 5767},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_UNSTABLE, GUIO_HOYLE5 },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_UNSTABLE | ADGF_DROPPLATFORM, GUIO_HOYLE5 },
// Hoyle Bridge - Windows
{"hoyle5bridge", "", {
@@ -1178,7 +1187,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"ressci.000", 0, "b83cba09229d3003df9e0c864843f962", 16842499},
{"resmap.000", 0, "7b3e3030b0ad5f341053c18afce7d176", 5647},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_UNSTABLE, GUIO_HOYLE5 },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_UNSTABLE | ADGF_DROPPLATFORM, GUIO_HOYLE5 },
// Hoyle Children's Collection - Windows
{"hoyle5children", "", {
@@ -1186,7 +1195,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"ressci.000", 0, "fd1f7dbeebd4510cd37e171a72f2b6ad", 16824349},
{"resmap.000", 0, "b0fe1bcc69596e10fe5caa11d0b55b23", 5671},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_UNSTABLE, GUIO_HOYLE5 },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_UNSTABLE | ADGF_DROPPLATFORM, GUIO_HOYLE5 },
// Hoyle Solitaire (CD version) - Windows
{"hoyle5solitaire", "CD", {
@@ -1194,7 +1203,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"ressci.000", 0, "fa4eeb24b1fbf6f33739995360554485", 11628203},
{"resmap.000", 0, "3f63df73a49800f080775d2a9ad0e949", 3079},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_UNSTABLE, GUIO_HOYLE5 },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_UNSTABLE | ADGF_DROPPLATFORM, GUIO_HOYLE5 },
// Hoyle Solitaire (Hard Drive version) - Windows
{"hoyle5solitaire", "Hard Drive", {
@@ -1202,7 +1211,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"ressci.000", 0, "da180c67d54d4208c84a48fcd8709671", 8582335},
{"resmap.000", 0, "e2feb47ab16f9e22a9b6a8580d1da3f0", 3055},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_UNSTABLE, GUIO_HOYLE5 },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_UNSTABLE | ADGF_DROPPLATFORM, GUIO_HOYLE5 },
#undef GUIO_HOYLE5
@@ -1838,7 +1847,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "2be9ab94429c721af8e05c507e048a15", 18697},
{"resource.000", 0, "eb63ea3a2c2469dc2d777d351c626404", 203882535},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_KQ7 },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING, GUIO_KQ7 },
// King's Quest 7 - English Windows-interpreter-only (supplied by m_kiewitz)
// SCI interpreter version 2.100.002, VERSION file reports "1.51"
@@ -1847,7 +1856,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.000", 0, "eb63ea3a2c2469dc2d777d351c626404", 206626576},
{"resource.aud", 0, "c2a988a16053eb98c7b73a75139902a0", 217716879},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_KQ7 },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING, GUIO_KQ7 },
// King's Quest 7 - German Windows-interpreter-only (supplied by markcoolio in bug report #2727402)
// SCI interpreter version 2.100.002, VERSION file reports "1.51"
@@ -1857,7 +1866,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.000", 0, "eb63ea3a2c2469dc2d777d351c626404", 206626576},
{"resource.aud", 0, "3f17bcaf8a9ff6a6c2d4de1a2078fdcc", 258119621},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_KQ7 },
+ Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING, GUIO_KQ7 },
// King's Quest 7 - English Windows (from abevi)
// VERSION 1.65c
@@ -1865,7 +1874,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.000", 0, "4948e4e1506f1e1c4e1d47abfa06b7f8", 204385195},
{"resource.map", 0, "40ccafb2195301504eba2e4f4f2c7f3d", 18925},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_KQ7 },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING, GUIO_KQ7 },
// King's Quest 7 - German Windows (from blumentopferde in bug report Trac#9738)
// VERSION 1.65c
@@ -1874,7 +1883,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.000", 0, "4948e4e1506f1e1c4e1d47abfa06b7f8", 204385195},
{"resource.map", 0, "59d234e4fd61c1377f659c8479a513fb", 18925},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_KQ7 },
+ Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING, GUIO_KQ7 },
// King's Quest 7 - French Windows (from bgK)
// VERSION 1.65c
@@ -1883,23 +1892,39 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.000", 0, "4948e4e1506f1e1c4e1d47abfa06b7f8", 204385195},
{"resource.map", 0, "a134fc9138b0830d8197877c52ed7aaa", 18925},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_KQ7 },
+ Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING, GUIO_KQ7 },
// King's Quest 7 - English DOS (from FRG)
// SCI interpreter version 2.100.002, VERSION file reports "2.00b"
{"kq7", "", {
{"resource.map", 0, "8676b0fbbd7362989a029fe72fea14c6", 18709},
{"resource.000", 0, "51c1ead1163e19a2de8f121c39df7a76", 200764100},
+ // Having the same number of files in the detection entries is needed
+ // for the DOS version to have equal priority to the Windows version
+ // that is detected with additional files, and we might as well check
+ // for the DOS-specific files here too since there are at least some
+ // Windows-only releases of this game too
+ {"avi/91.rbt", 0, NULL, -1},
+ {"avi/911.rbt", 0, NULL, -1},
+ {"avi/912.rbt", 0, NULL, -1},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING | ADGF_CD, GUIO_KQ7 },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_KQ7 },
// King's Quest 7 - English Windows (from FRG)
// SCI interpreter version 2.100.002, VERSION file reports "2.00b"
{"kq7", "", {
{"resource.map", 0, "8676b0fbbd7362989a029fe72fea14c6", 18709},
{"resource.000", 0, "51c1ead1163e19a2de8f121c39df7a76", 200764100},
+ // We need to look for these AVIs before enabling the Windows version
+ // because GOG.com releases are missing them. Their contents do not
+ // matter (some users replace them with higher quality versions created
+ // from the rare 1.65c release, which should not cause a detection
+ // failure)
+ {"avi/e108x11.avi", 0, NULL, -1},
+ {"avi/e208x11.avi", 0, NULL, -1},
+ {"avi/int08x11.avi", 0, NULL, -1},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_KQ7 },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING, GUIO_KQ7 },
// King's Quest 7 - Italian DOS (from dego93 on bug report Trac#9739)
// VERSION file reports "2.00"
@@ -1908,7 +1933,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.000", 0, "51c1ead1163e19a2de8f121c39df7a76", 200764100},
{"resource.map", 0, "c174fb32f045112e210373a31681d97f", 18709},
AD_LISTEND},
- Common::IT_ITA, Common::kPlatformDOS, ADGF_TESTING | ADGF_CD, GUIO_KQ7 },
+ Common::IT_ITA, Common::kPlatformDOS, ADGF_TESTING, GUIO_KQ7 },
// King's Quest 7 - Italian Windows (from dego93 on bug report Trac#9739)
// VERSION file reports "2.00"
@@ -1917,7 +1942,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.000", 0, "51c1ead1163e19a2de8f121c39df7a76", 200764100},
{"resource.map", 0, "c174fb32f045112e210373a31681d97f", 18709},
AD_LISTEND},
- Common::IT_ITA, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_KQ7 },
+ Common::IT_ITA, Common::kPlatformWindows, ADGF_TESTING, GUIO_KQ7 },
// King's Quest 7 - Spanish DOS (from jvprat)
// Executable scanning reports "2.100.002", VERSION file reports "2.00"
@@ -1925,7 +1950,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "0b62693cbe87e3aaca3e8655a437f27f", 18709},
{"resource.000", 0, "51c1ead1163e19a2de8f121c39df7a76", 200764100},
AD_LISTEND},
- Common::ES_ESP, Common::kPlatformDOS, ADGF_TESTING | ADGF_CD, GUIO_KQ7 },
+ Common::ES_ESP, Common::kPlatformDOS, ADGF_TESTING, GUIO_KQ7 },
// King's Quest 7 - Spanish Windows (from jvprat)
// Executable scanning reports "2.100.002", VERSION file reports "2.00"
@@ -1933,7 +1958,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "0b62693cbe87e3aaca3e8655a437f27f", 18709},
{"resource.000", 0, "51c1ead1163e19a2de8f121c39df7a76", 200764100},
AD_LISTEND},
- Common::ES_ESP, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_KQ7 },
+ Common::ES_ESP, Common::kPlatformWindows, ADGF_TESTING, GUIO_KQ7 },
// King's Quest 7 - English DOS Non-Interactive Demo
// SCI interpreter version 2.100.002
@@ -1949,7 +1974,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "38e627a37a975aea40cc72b0518b0709", 18412},
{"resource.000", 0, "bad61d50aaa64298fa57a7c6ccd3bccf", 84020382},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_TESTING | ADGF_CD, GUIO_KQ7_DEMO },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_TESTING, GUIO_KQ7_DEMO },
#undef GUIO_KQ7_DEMO
#undef GUIO_KQ7
@@ -2667,7 +2692,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "0c0804434ea62278dd15032b1947426c", 8872},
{"resource.000", 0, "9a9f4870504444cda863dd14d077a680", 18520872},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_LSL6HIRES },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_LSL6HIRES },
// Larry 6 - German DOS CD - HIRES (provided by richiefs in bug report #2670691)
// SCI interpreter version 2.100.002
@@ -2675,7 +2700,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "badfdf446ffed569a310d2c63a249421", 8896},
{"resource.000", 0, "bd944d2b06614a5b39f1586906f0ee88", 18534274},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_LSL6HIRES },
+ Common::DE_DEU, Common::kPlatformDOS, ADGF_TESTING, GUIO_LSL6HIRES },
// Larry 6 - French DOS CD - HIRES (provided by richiefs in bug report #2670691)
// SCI interpreter version 2.100.002
@@ -2683,7 +2708,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "d184e9aa4f2d4b5670ddb3669db82cda", 8896},
{"resource.000", 0, "bd944d2b06614a5b39f1586906f0ee88", 18538987},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_LSL6HIRES },
+ Common::FR_FRA, Common::kPlatformDOS, ADGF_TESTING, GUIO_LSL6HIRES },
#undef GUIO_LSL6HIRES
@@ -2710,7 +2735,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "eae93e1b1d1ccc58b4691c371281c95d", 8188},
{"ressci.000", 0, "89353723488219e25589165d73ed663e", 66965678},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_LSL7 },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_LSL7 },
// Larry 7 - German DOS (from Tobis87)
// SCI interpreter version 3.000.000
@@ -2718,7 +2743,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "c11e6bfcfc2f2d05da47e5a7df3e9b1a", 8188},
{"ressci.000", 0, "a8c6817bb94f332ff498a71c8b47f893", 66971724},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_LSL7 },
+ Common::DE_DEU, Common::kPlatformDOS, ADGF_TESTING, GUIO_LSL7 },
// Larry 7 - French DOS (provided by richiefs in bug report #2670691)
// SCI interpreter version 3.000.000
@@ -2726,7 +2751,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "4407849fd52fe3efb0c30fba60cd5cd4", 8206},
{"ressci.000", 0, "dc37c3055fffbefb494ff22b145d377b", 66964472},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_LSL7 },
+ Common::FR_FRA, Common::kPlatformDOS, ADGF_TESTING, GUIO_LSL7 },
// Larry 7 - Italian DOS CD (from glorifindel)
// SCI interpreter version 3.000.000
@@ -2734,7 +2759,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "9852a97141f789413f29bf956052acdb", 8212},
{"ressci.000", 0, "440b9fed89590abb4e4386ed6f948ee2", 67140181},
AD_LISTEND},
- Common::IT_ITA, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_LSL7 },
+ Common::IT_ITA, Common::kPlatformDOS, ADGF_TESTING, GUIO_LSL7 },
// Larry 7 - Spanish DOS (from the Leisure Suit Larry Collection)
// Executable scanning reports "3.000.000", VERSION file reports "1.0s"
@@ -2742,7 +2767,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "8f3d603e1acc834a5d598b30cdfc93f3", 8188},
{"ressci.000", 0, "32792f9bc1bf3633a88b382bb3f6e40d", 67071418},
AD_LISTEND},
- Common::ES_ESP, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_LSL7 },
+ Common::ES_ESP, Common::kPlatformDOS, ADGF_TESTING, GUIO_LSL7 },
#undef GUIO_LSL7_DEMO
#undef GUIO_LSL7
@@ -2768,7 +2793,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "543124606352bfa5e07696ddf2a669be", 64},
{"resource.000", 0, "5d7714416b612463d750fb9c5690c859", 28952},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO | ADGF_UNSTABLE, GUIO_LIGHTHOUSE_DEMO },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO | ADGF_TESTING, GUIO_LIGHTHOUSE_DEMO },
// Lighthouse - English Windows Demo
// Executable scanning reports "3.000.000", VERSION file reports "1.00"
@@ -2776,7 +2801,15 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "3bdee7a16926975a4729f75cf6b80a92", 1525},
{"ressci.000", 0, "3c585827fa4a82f4c04a56a0bc52ccee", 11494351},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO | ADGF_UNSTABLE, GUIO_LIGHTHOUSE },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO | ADGF_TESTING, GUIO_LIGHTHOUSE_DEMO },
+
+ // Lighthouse - English Windows Glider Demo
+ // Executable scanning reports "3.000.000"
+ {"lighthouse", "Glider Demo", {
+ {"resmap.000", 0, "fca5bec5f778fc3f86d3176dc4ae6e54", 346},
+ {"ressci.000", 0, "896e81b6d70940c3b0696ef51cee51bc", 3300500},
+ AD_LISTEND},
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO | ADGF_TESTING, GUIO_LIGHTHOUSE_DEMO },
// Lighthouse - English DOS (from jvprat)
// Executable scanning reports "3.000.000", VERSION file reports "1.1"
@@ -2786,7 +2819,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.002", 0, "c68db5333f152fea6ca2dfc75cad8b34", 7573},
{"ressci.002", 0, "175468431a979b9f317c294ce3bc1430", 94628315},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO_LIGHTHOUSE },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO_LIGHTHOUSE },
// Lighthouse - Japanese DOS (from m_kiewitz)
// Executable scanning reports "3.000.000", VERSION file reports "1.0C"
@@ -2796,7 +2829,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.002", 0, "723fc742c623d8933e5753a264324cb0", 7657},
{"ressci.002", 0, "175468431a979b9f317c294ce3bc1430", 94627469},
AD_LISTEND},
- Common::JA_JPN, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO_LIGHTHOUSE },
+ Common::JA_JPN, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO_LIGHTHOUSE },
// Lighthouse - Spanish DOS (from jvprat)
// Executable scanning reports "3.000.000", VERSION file reports "1.1"
@@ -2806,7 +2839,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.002", 0, "e7dc85884a2417e2eff9de0c63dd65fa", 7630},
{"ressci.002", 0, "3c8d627c555b0e3e4f1d9955bc0f0df4", 94631127},
AD_LISTEND},
- Common::ES_ESP, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO_LIGHTHOUSE },
+ Common::ES_ESP, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO_LIGHTHOUSE },
// Lighthouse - French DOS (from bgK)
// Executable scanning reports "3.000.000", VERSION file reports "1.1"
@@ -2816,7 +2849,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.002", 0, "703e7ab04bd358e76bc098995d71f36a", 7642},
{"ressci.002", 0, "6635764dc258b2041ca9a387e5aaab25", 115212682},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO_LIGHTHOUSE },
+ Common::FR_FRA, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO_LIGHTHOUSE },
#undef GUIO_LIGHTHOUSE_DEMO
#undef GUIO_LIGHTHOUSE
@@ -2952,7 +2985,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "5159a1578c4306bfe070a3e4d8c2e1d3", 4741},
{"resource.000", 0, "1926925c95d82f0999590e93b02887c5", 15150768},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_CD | ADGF_TESTING, GUIO_MOTHERGOOSEHIRES },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_MOTHERGOOSEHIRES },
// Mixed-Up Mother Goose Deluxe - Multilingual Windows CD (EN/FR/DE/ES)
// Executable scanning reports "2.100.002"
@@ -2960,7 +2993,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "ef611af561898dcfea87846919ebf3eb", 4969},
{"ressci.000", 0, "227685bc59d90821978d330713e44a7a", 17205800},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_CD | ADGF_TESTING, GUIO_MOTHERGOOSEHIRES },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_MOTHERGOOSEHIRES },
#undef GUIO_MOTHERGOOSEHIRES
@@ -3005,7 +3038,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.007", 0, "aa8175cfc93242af6f5e65bdceaafc0d", 7972},
//{"ressci.007", 0, "3aae6559aa1df273bc542d5ac6330d75", 25859038},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_PHANTASMAGORIA },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_PHANTASMAGORIA },
// Phantasmagoria - English DOS (from jvprat)
// Executable scanning reports "2.100.002", VERSION file reports "1.100.000UK"
@@ -3025,7 +3058,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.007", 0, "afbd16ea77869a720afa1c5371de107d", 7972},
//{"ressci.007", 0, "3aae6559aa1df273bc542d5ac6330d75", 25859038},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_PHANTASMAGORIA },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_PHANTASMAGORIA },
// Phantasmagoria - German DOS/Windows
// Windows executable scanning reports "unknown" - "Sep 19 1995 09:39:48"
@@ -3048,7 +3081,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.007", 0, "06309b8043aecb85bd507b15d16cb544", 7984},
//{"ressci.007", 0, "3aae6559aa1df273bc542d5ac6330d75", 26898681},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_PHANTASMAGORIA },
+ Common::DE_DEU, Common::kPlatformDOS, ADGF_TESTING, GUIO_PHANTASMAGORIA },
// Phantasmagoria - French DOS
// Supplied by Kervala in bug #6574
@@ -3067,7 +3100,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"ressci.006", 0, "3aae6559aa1df273bc542d5ac6330d75", 85415107},
{"resmap.007", 0, "5633960bc106c39ca91d2d8fce18fd2d", 7984},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_PHANTASMAGORIA },
+ Common::FR_FRA, Common::kPlatformDOS, ADGF_TESTING, GUIO_PHANTASMAGORIA },
// Phantasmagoria - French DOS (supplied by enclume in bug report Trac#9910)
// VERSION file reports "1.100.000"
@@ -3086,7 +3119,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"ressci.006", 0, "3aae6559aa1df273bc542d5ac6330d75", 81076474},
{"resmap.007", 0, "3d15c24fe60e8f7171480bfaa2d566bc", 7984},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_PHANTASMAGORIA },
+ Common::FR_FRA, Common::kPlatformDOS, ADGF_TESTING, GUIO_PHANTASMAGORIA },
// Phantasmagoria - English DOS Demo
// Executable scanning reports "2.100.002"
@@ -3105,7 +3138,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"ressci.000", 0, "cd5967f9b9586e3380645961c0765be3", 116822037},
{"resmap.000", 0, "3cafc1c6a53945c1f3babbfd6380c64c", 16468},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_PHANTASMAGORIA },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_PHANTASMAGORIA },
// Phantasmagoria - English Macintosh
// NOTE: This only contains disc 1 files (as well as the two persistent files:
@@ -3121,20 +3154,31 @@ static const struct ADGameDescription SciGameDescriptions[] = {
// Data8-12 are empty
{"Data13", 0, "6d2c450fca19a69b5af74ed5b03c0a17", 14923328},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformMacintosh, ADGF_CD | ADGF_MACRESFORK | ADGF_UNSTABLE, GUIO_PHANTASMAGORIA_MAC },
+ Common::EN_ANY, Common::kPlatformMacintosh, ADGF_MACRESFORK | ADGF_UNSTABLE, GUIO_PHANTASMAGORIA_MAC },
#undef GUIO_PHANTASMAGORIA_DEMO
#undef GUIO_PHANTASMAGORIA
#undef GUIO_PHANTASMAGORIA_MAC
-#define GUIO_PHANTASMAGORIA2 GUIO8(GUIO_NOSUBTITLES, \
+#define GUIO_PHANTASMAGORIA2 GUIO9(GUIO_NOSUBTITLES, \
GUIO_LINKMUSICTOSFX, \
GUIO_LINKSPEECHTOSFX, \
GUIO_NOMIDI, \
GUIO_NOASPECT, \
GAMEOPTION_ORIGINAL_SAVELOAD, \
GAMEOPTION_ENABLE_BLACK_LINED_VIDEO, \
- GAMEOPTION_HQ_VIDEO)
+ GAMEOPTION_HQ_VIDEO, \
+ GAMEOPTION_ENABLE_CENSORING)
+// TODO: Learn which are the censored game editions and give them this GUIO
+// instead
+#define GUIO_PHANTASMAGORIA2_CENSORED GUIO8(GUIO_NOSUBTITLES, \
+ GUIO_LINKMUSICTOSFX, \
+ GUIO_LINKSPEECHTOSFX, \
+ GUIO_NOMIDI, \
+ GUIO_NOASPECT, \
+ GAMEOPTION_ORIGINAL_SAVELOAD, \
+ GAMEOPTION_ENABLE_BLACK_LINED_VIDEO, \
+ GAMEOPTION_HQ_VIDEO)
// Some versions of Phantasmagoria 2 were heavily censored.
// Censored versions (data files are currently unknown to us): UK, Australia, first English release in Germany
@@ -3158,7 +3202,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.005", 0, "8bd5ceeedcbe16dfe55d1b90dcd4be84", 1942},
{"ressci.005", 0, "05f9fe2bee749659acb3cd2c90252fc5", 67905112},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_CD | ADGF_TESTING, GUIO_PHANTASMAGORIA2 },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_PHANTASMAGORIA2 },
// Phantasmagoria 2 - English DOS (GOG version) (supplied by littleboy in patch #1360)
// Note: Fully uncensored, basically the US release, but ressci.* merged into ressci.000
@@ -3169,7 +3213,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"ressci.000", 0, "c54f26d9f43f908151263254b6d97053", 108134481},
{"resmap.000", 0, "de154a223a9ef4ea7358b76adc38ef5b", 2956},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_CD | ADGF_TESTING, GUIO_PHANTASMAGORIA2 },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_PHANTASMAGORIA2 },
// Phantasmagoria 2 - German DOS/Windows (supplied by AReim1982)
// Note: Fully uncensored, but one scene is missing probably because of a mastering error (Curtis + Therese meeting near water cooler)
@@ -3191,7 +3235,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.005", 0, "2fc48a4a5a73b726994f189da51a8b2a", 1954},
{"ressci.005", 0, "e94005890d22dd3b7f605a2a7c025803", 68232146},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformWindows, ADGF_CD | ADGF_TESTING, GUIO_PHANTASMAGORIA2 },
+ Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_PHANTASMAGORIA2 },
// Phantasmagoria 2 - French DOS/Windows (supplied by bgK)
// Windows executable scanning reports "3.000.000" - "Nov 09 1996 16:03:00"
@@ -3209,7 +3253,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.005", 0, "7811a1801660090725ceef799b62fc72", 1954},
{"ressci.005", 0, "b6f090a2c8fc955d17b8a47085b2f890", 68231525},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformWindows, ADGF_CD | ADGF_TESTING, GUIO_PHANTASMAGORIA2 },
+ Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_PHANTASMAGORIA2 },
// Phantasmagoria 2 - Japanese Windows (supplied by m_kiewitz)
// Features English voices w/ Japanese subtitles. Background images were also localized to Japanese.
@@ -3231,7 +3275,10 @@ static const struct ADGameDescription SciGameDescriptions[] = {
//{"resaud.002", 0, "3b4c5f92e5143fd3539b227e48ac2929", 8414502},
//{"ressfx.001", 0, "343a6ca9ddd614541b11b155de6368ac", 90268706},
AD_LISTEND},
- Common::JA_JPN, Common::kPlatformWindows, ADGF_CD | ADGF_TESTING, GUIO_PHANTASMAGORIA2 },
+ Common::JA_JPN, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_PHANTASMAGORIA2 },
+
+#undef GUIO_PHANTASMAGORIA2
+#undef GUIO_PHANTASMAGORIA2_CENSORED
#endif // ENABLE_SCI32
@@ -3548,7 +3595,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "1c2563fee189885e29d9348f37306d94", 12175},
{"ressci.000", 0, "b2e1826ca81ce2e7e764587f5a14eee9", 127149181},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO_PQSWAT },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO_PQSWAT },
// Police Quest: SWAT - English Windows (from the Police Quest Collection)
// Executable scanning reports "2.100.002", VERSION file reports "1.0c"
@@ -3563,7 +3610,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.004", 0, "4228038906f041623e65789500b22285", 6835},
{"ressci.004", 0, "b7e619e6ecf62fe65d5116a3a422e5f0", 46223872},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_CD | ADGF_UNSTABLE, GUIO_PQSWAT },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO_PQSWAT },
#undef GUIO_PQSWAT_DEMO
#undef GUIO_PQSWAT
@@ -3993,7 +4040,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.001", 0, "775304e9b2a545156be4d94209550094", 1393},
{"ressci.001", 0, "259437fd75fdf51e8207fda8c01fa4fd", 2334384},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_UNSTABLE, GUIO_RAMA_DEMO },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_UNSTABLE | ADGF_DROPPLATFORM, GUIO_RAMA_DEMO },
// RAMA - English Windows (from jvprat)
// Executable scanning reports "3.000.000", VERSION file reports "1.100.000"
@@ -4005,7 +4052,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.003", 0, "31ef4c0621711585d031f0ae81707251", 1636},
{"ressci.003", 0, "2a68edd064e5e4937b5e9c74b38f2082", 6860492},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_UNSTABLE, GUIO_RAMA },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_UNSTABLE | ADGF_DROPPLATFORM, GUIO_RAMA },
// RAMA - English Windows (from Quietust, in bug report #2850645)
{"rama", "", {
@@ -4016,7 +4063,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.003", 0, "48841e4b84ef1b98b48d43566fda9e13", 1636},
{"ressci.003", 0, "2a68edd064e5e4937b5e9c74b38f2082", 6870356},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_UNSTABLE, GUIO_RAMA },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_UNSTABLE | ADGF_DROPPLATFORM, GUIO_RAMA },
// RAMA - German Windows CD (from farmboy0, in pull request 397)
{"rama", "", {
@@ -4027,7 +4074,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.003", 0, "222096000bd83a1d56577114a452cccf", 1636},
{"ressci.003", 0, "2a68edd064e5e4937b5e9c74b38f2082", 6954219},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformWindows, ADGF_UNSTABLE, GUIO_RAMA },
+ Common::DE_DEU, Common::kPlatformWindows, ADGF_UNSTABLE | ADGF_DROPPLATFORM, GUIO_RAMA },
// RAMA - French Windows CD (from bgK)
// Executable scanning reports "3.000.000", VERSION file reports "1.000.000"
@@ -4039,7 +4086,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.003", 0, "fd2ce2312084e60b2cc5194a799873d0", 1636},
{"ressci.003", 0, "2a68edd064e5e4937b5e9c74b38f2082", 6379952},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformWindows, ADGF_UNSTABLE, GUIO_RAMA },
+ Common::FR_FRA, Common::kPlatformWindows, ADGF_UNSTABLE | ADGF_DROPPLATFORM, GUIO_RAMA },
// RAMA - Italian Windows CD (from glorifindel)
// SCI interpreter version 3.000.000 (a guess?)
@@ -4047,7 +4094,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"ressci.001", 0, "2a68edd064e5e4937b5e9c74b38f2082", 70611091},
{"resmap.001", 0, "70ba2ff04a2b7fb2c52420ba7fbd47c2", 8338},
AD_LISTEND},
- Common::IT_ITA, Common::kPlatformWindows, ADGF_UNSTABLE, GUIO_RAMA },
+ Common::IT_ITA, Common::kPlatformWindows, ADGF_UNSTABLE | ADGF_DROPPLATFORM, GUIO_RAMA },
#undef GUIO_RAMA_DEMO
#undef GUIO_RAMA
@@ -4071,21 +4118,21 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "f2ead37749ed8f6535a2445a7d05a0cc", 46525},
{"ressci.000", 0, "4294c6d7510935f2e0a52e302073c951", 262654836},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING, GUIO_SHIVERS },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_SHIVERS },
// Shivers - German Windows (from Tobis87)
{"shivers", "", {
{"resmap.000", 0, "f483d0a1f78334c18052e92785c3086e", 46537},
{"ressci.000", 0, "6751b144671e2deed919eb9d284b07eb", 262390692},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING, GUIO_SHIVERS },
+ Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_SHIVERS },
// Shivers - French Windows (from legluondunet in bug report Trac#9742)
{"shivers", "", {
{"resmap.000", 0, "73bee036dc8ece0d03f637eb340ea428", 46543},
{"ressci.000", 0, "8d45ebb1e5a13468d10e676b8dbce682", 262161072},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING, GUIO_SHIVERS },
+ Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_SHIVERS },
// Shivers - English Windows Non-interactive Demo
// Executable scanning reports "2.100.002"
@@ -4093,14 +4140,14 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "d9e0bc5eddefcbe47f528760085d8927", 1186},
{"ressci.000", 0, "3a93c6340b54e07e65d0e5583354d186", 10505469},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_TESTING, GUIO_SHIVERS },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_SHIVERS },
// Shivers - English Windows Interactive Demo (from bgK in bug report Trac#9745)
{"shivers", "Demo", {
{"resmap.000", 0, "58a20b0c839d31d56802ead6c8f953c4", 7069},
{"ressci.000", 0, "f9eb6338f658945feadd4d27e58bdb93", 37404155},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_TESTING, GUIO_SHIVERS },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_SHIVERS },
#undef GUIO_SHIVERS_DEMO
#undef GUIO_SHIVERS
@@ -4692,7 +4739,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "6dddfa3a8f3a3a513ec9dfdfae955005", 10528},
{"resource.000", 0, "c4259ab7355aead07773397b1052827d", 41150806},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_SQ6 },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_SQ6 },
// Space Quest 6 - English DOS/Win3.11 CD ver 1.11 (from FRG)
// SCI interpreter version 2.100.002 (just a guess)
@@ -4700,7 +4747,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "e0615d6e4e10e37ae42e6a2a95aaf145", 10528},
{"resource.000", 0, "c4259ab7355aead07773397b1052827d", 41150806},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_SQ6 },
+ Common::EN_ANY, Common::kPlatformDOS, ADGF_TESTING, GUIO_SQ6 },
// Space Quest 6 - French DOS/Win3.11 CD (from French magazine Joystick - September 1997)
// Executable scanning reports "2.100.002", VERSION file reports "1.0"
@@ -4708,7 +4755,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "3c831625931d5079b73ae8c275f52c95", 10534},
{"resource.000", 0, "4195ca940f759424f62b90e262cc1737", 40932397},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_SQ6 },
+ Common::FR_FRA, Common::kPlatformDOS, ADGF_TESTING, GUIO_SQ6 },
// Space Quest 6 - German DOS (from Tobis87, updated info from markcoolio in bug report #2723884)
// SCI interpreter version 2.100.002 (just a guess)
@@ -4716,7 +4763,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.map", 0, "664d797415484f85c90b1b45aedc7686", 10534},
{"resource.000", 0, "ba87ba91e5bdabb4169dd0df75777722", 40933685},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformDOS, ADGF_CD | ADGF_TESTING, GUIO_SQ6 },
+ Common::DE_DEU, Common::kPlatformDOS, ADGF_TESTING, GUIO_SQ6 },
// Space Quest 6 - English DOS/Win3.11 Interactive Demo (from FRG)
// SCI interpreter version 2.100.002 (just a guess)
@@ -4773,7 +4820,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "9a3e172cde9963d0a969f26469318cec", 3403},
{"ressci.000", 0, "db3e290481c35c3224e9602e71e4a1f1", 5073868},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_TESTING | ADGF_CD, GUIO_TORIN_DEMO },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN_DEMO },
// Torin's Passage - Multilingual EN/FR/DE w/ English audio Windows CD
// Also matches GOG.com English-only release
@@ -4787,21 +4834,21 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "bb3b0b22ff08df54fbe2d06263409be6", 9799},
{"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
{"torin", "", {
{"resmap.000", 0, "bb3b0b22ff08df54fbe2d06263409be6", 9799},
{"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
{"french/msg/0.msg", 0, "cbf314308636380a96f20a76f2a26ce5", 5857},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
+ Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
{"torin", "", {
{"resmap.000", 0, "bb3b0b22ff08df54fbe2d06263409be6", 9799},
{"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
{"german/msg/0.msg", 0, "374ce3a7e540e1f4917d132f74f356b8", 5993},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
+ Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
// from jvprat and m_kiewitz
{"torin", "", {
@@ -4809,7 +4856,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
{"spanish/msg/0.msg", 0, "3c468ee0a8595d64d93df68054b116d7", 5681},
AD_LISTEND},
- Common::ES_ESP, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
+ Common::ES_ESP, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
// from glorifindel
// TODO: Need to get ahold of italian/msg/0.msg from an Italian release
@@ -4818,7 +4865,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
// {"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
// // {"italian/msg/0.msg", 0, ?, ?},
// AD_LISTEND},
-// Common::IT_ITA, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
+// Common::IT_ITA, Common::kPlatformWindows, ADGF_TESTING, GUIO_TORIN },
// ---
@@ -4829,19 +4876,19 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "e55c3097329b3c53752301e01c6af2fb", 9787},
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56127540},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
{"torin", "", {
{"resmap.000", 0, "e55c3097329b3c53752301e01c6af2fb", 9787},
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56127540},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
+ Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
{"torin", "", {
{"resmap.000", 0, "e55c3097329b3c53752301e01c6af2fb", 9787},
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56127540},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
+ Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
// ---
@@ -4853,19 +4900,19 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resmap.000", 0, "66ed46e3e56f487e688d52f05b33d0ba", 9787},
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56126981},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
{"torin", "", {
{"resmap.000", 0, "66ed46e3e56f487e688d52f05b33d0ba", 9787},
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56126981},
AD_LISTEND},
- Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
+ Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
{"torin", "", {
{"resmap.000", 0, "66ed46e3e56f487e688d52f05b33d0ba", 9787},
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56126981},
AD_LISTEND},
- Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
+ Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
// ---
@@ -4877,7 +4924,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{ "ressci.000", 0, "e672da099fb1663b87c78abc6c8ba2a4", 130622695 },
{ "resmap.000", 0, "643859f8f2be8e7701611e29b3b65208", 9799 },
AD_LISTEND },
- Common::RU_RUS, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
+ Common::RU_RUS, Common::kPlatformWindows, ADGF_TESTING | ADGF_DROPPLATFORM, GUIO_TORIN },
// Torin's Passage - English Macintosh
{"torin", "", {
@@ -4889,7 +4936,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"Data6", 0, "b639487c83d1dae0e001e700f3631566", 7594881},
{"Data7", 0, "2afd9b5434102b89610916b904c3f73a", 7627374},
AD_LISTEND},
- Common::EN_ANY, Common::kPlatformMacintosh, ADGF_MACRESFORK | ADGF_UNSTABLE | ADGF_CD, GUIO_TORIN_MAC },
+ Common::EN_ANY, Common::kPlatformMacintosh, ADGF_MACRESFORK | ADGF_UNSTABLE, GUIO_TORIN_MAC },
#undef GUIO_TORIN_DEMO
#undef GUIO_TORIN
diff --git a/engines/sci/engine/features.cpp b/engines/sci/engine/features.cpp
index 03e8019753..c4e23b59aa 100644
--- a/engines/sci/engine/features.cpp
+++ b/engines/sci/engine/features.cpp
@@ -675,7 +675,6 @@ MoveCountType GameFeatures::detectMoveCountType() {
} else {
if (!autoDetectMoveCountType()) {
error("Move count autodetection failed");
- _moveCountType = kIncrementMoveCount; // Most games do this, so best guess
}
}
diff --git a/engines/sci/engine/file.cpp b/engines/sci/engine/file.cpp
index 7e218bc81c..7f737036d2 100644
--- a/engines/sci/engine/file.cpp
+++ b/engines/sci/engine/file.cpp
@@ -34,28 +34,7 @@
namespace Sci {
#ifdef ENABLE_SCI32
-/**
- * A MemoryWriteStreamDynamic with additional read functionality.
- * The read and write functions share a single stream position.
- */
-class MemoryDynamicRWStream : public Common::MemoryWriteStreamDynamic, public Common::SeekableReadStream {
-protected:
- bool _eos;
-public:
- MemoryDynamicRWStream(DisposeAfterUse::Flag disposeMemory = DisposeAfterUse::NO) : MemoryWriteStreamDynamic(disposeMemory), _eos(false) { }
-
- uint32 read(void *dataPtr, uint32 dataSize);
-
- bool eos() const { return _eos; }
- int32 pos() const { return _pos; }
- int32 size() const { return _size; }
- void clearErr() { _eos = false; Common::MemoryWriteStreamDynamic::clearErr(); }
- bool seek(int32 offs, int whence = SEEK_SET) { return Common::MemoryWriteStreamDynamic::seek(offs, whence); }
-
-};
-
-uint32 MemoryDynamicRWStream::read(void *dataPtr, uint32 dataSize)
-{
+uint32 MemoryDynamicRWStream::read(void *dataPtr, uint32 dataSize) {
// Read at most as many bytes as are still available...
if (dataSize > _size - _pos) {
dataSize = _size - _pos;
@@ -69,40 +48,18 @@ uint32 MemoryDynamicRWStream::read(void *dataPtr, uint32 dataSize)
return dataSize;
}
-/**
- * A MemoryDynamicRWStream intended to re-write a file.
- * It reads the contents of `inFile` in the constructor, and writes back
- * the changes to `fileName` in the destructor (and when calling commit() ).
- */
-class SaveFileRewriteStream : public MemoryDynamicRWStream {
-public:
- SaveFileRewriteStream(Common::String fileName,
- Common::SeekableReadStream *inFile,
- kFileOpenMode mode, bool compress);
- virtual ~SaveFileRewriteStream();
-
- virtual uint32 write(const void *dataPtr, uint32 dataSize) { _changed = true; return MemoryDynamicRWStream::write(dataPtr, dataSize); }
-
- void commit(); //< Save back to disk
-
-protected:
- Common::String _fileName;
- bool _compress;
- bool _changed;
-};
-
-SaveFileRewriteStream::SaveFileRewriteStream(Common::String fileName,
+SaveFileRewriteStream::SaveFileRewriteStream(const Common::String &fileName,
Common::SeekableReadStream *inFile,
kFileOpenMode mode,
- bool compress)
-: MemoryDynamicRWStream(DisposeAfterUse::YES),
- _fileName(fileName), _compress(compress)
-{
- const bool truncate = mode == _K_FILE_MODE_CREATE;
- const bool seekToEnd = mode == _K_FILE_MODE_OPEN_OR_CREATE;
+ bool compress) :
+ MemoryDynamicRWStream(DisposeAfterUse::YES),
+ _fileName(fileName),
+ _compress(compress) {
+ const bool truncate = (mode == kFileOpenModeCreate);
+ const bool seekToEnd = (mode == kFileOpenModeOpenOrCreate);
if (!truncate && inFile) {
- unsigned int s = inFile->size();
+ const uint s = inFile->size();
ensureCapacity(s);
inFile->read(_data, s);
if (seekToEnd) {
@@ -119,16 +76,14 @@ SaveFileRewriteStream::~SaveFileRewriteStream() {
}
void SaveFileRewriteStream::commit() {
- // Write contents of buffer back to file
-
- if (_changed) {
- Common::WriteStream *outFile = g_sci->getSaveFileManager()->openForSaving(_fileName, _compress);
- outFile->write(_data, _size);
- delete outFile;
- _changed = false;
+ if (!_changed) {
+ return;
}
-}
+ Common::ScopedPtr<Common::WriteStream> outFile(g_sci->getSaveFileManager()->openForSaving(_fileName, _compress));
+ outFile->write(_data, _size);
+ _changed = false;
+}
#endif
uint findFreeFileHandle(EngineState *s) {
@@ -217,8 +172,19 @@ reg_t file_open(EngineState *s, const Common::String &filename, kFileOpenMode mo
}
#ifdef ENABLE_SCI32
- if ((g_sci->getGameId() == GID_PHANTASMAGORIA && (filename == "phantsg.dir" || filename == "chase.dat" || filename == "tmp.dat")) ||
- (g_sci->getGameId() == GID_PQSWAT && filename == "swat.dat")) {
+ bool isRewritableFile;
+ switch (g_sci->getGameId()) {
+ case GID_PHANTASMAGORIA:
+ isRewritableFile = (filename == "phantsg.dir" || filename == "chase.dat" || filename == "tmp.dat");
+ break;
+ case GID_PQSWAT:
+ isRewritableFile = (filename == "swat.dat");
+ break;
+ default:
+ isRewritableFile = false;
+ }
+
+ if (isRewritableFile) {
debugC(kDebugLevelFile, " -> file_open opening %s for rewriting", wrappedName.c_str());
inFile = saveFileMan->openForLoading(wrappedName);
@@ -227,8 +193,8 @@ reg_t file_open(EngineState *s, const Common::String &filename, kFileOpenMode mo
if (!inFile)
inFile = SearchMan.createReadStreamForMember(englishName);
- if (mode == _K_FILE_MODE_OPEN_OR_FAIL && !inFile) {
- debugC(kDebugLevelFile, " -> file_open(_K_FILE_MODE_OPEN_OR_FAIL): failed to open file '%s'", englishName.c_str());
+ if (mode == kFileOpenModeOpenOrFail && !inFile) {
+ debugC(kDebugLevelFile, " -> file_open(kFileOpenModeOpenOrFail): failed to open file '%s'", englishName.c_str());
return SIGNAL_REG;
}
@@ -241,7 +207,7 @@ reg_t file_open(EngineState *s, const Common::String &filename, kFileOpenMode mo
outFile = stream;
} else
#endif
- if (mode == _K_FILE_MODE_OPEN_OR_FAIL) {
+ if (mode == kFileOpenModeOpenOrFail) {
// Try to open file, abort if not possible
inFile = saveFileMan->openForLoading(wrappedName);
// If no matching savestate exists: fall back to reading from a regular
@@ -250,19 +216,19 @@ reg_t file_open(EngineState *s, const Common::String &filename, kFileOpenMode mo
inFile = SearchMan.createReadStreamForMember(englishName);
if (!inFile)
- debugC(kDebugLevelFile, " -> file_open(_K_FILE_MODE_OPEN_OR_FAIL): failed to open file '%s'", englishName.c_str());
- } else if (mode == _K_FILE_MODE_CREATE) {
+ debugC(kDebugLevelFile, " -> file_open(kFileOpenModeOpenOrFail): failed to open file '%s'", englishName.c_str());
+ } else if (mode == kFileOpenModeCreate) {
// Create the file, destroying any content it might have had
outFile = saveFileMan->openForSaving(wrappedName, isCompressed);
if (!outFile)
- debugC(kDebugLevelFile, " -> file_open(_K_FILE_MODE_CREATE): failed to create file '%s'", englishName.c_str());
- } else if (mode == _K_FILE_MODE_OPEN_OR_CREATE) {
+ debugC(kDebugLevelFile, " -> file_open(kFileOpenModeCreate): failed to create file '%s'", englishName.c_str());
+ } else if (mode == kFileOpenModeOpenOrCreate) {
// Try to open file, create it if it doesn't exist
outFile = saveFileMan->openForSaving(wrappedName, isCompressed);
if (!outFile)
- debugC(kDebugLevelFile, " -> file_open(_K_FILE_MODE_CREATE): failed to create file '%s'", englishName.c_str());
+ debugC(kDebugLevelFile, " -> file_open(kFileOpenModeCreate): failed to create file '%s'", englishName.c_str());
- // QfG1 opens the character export file with _K_FILE_MODE_CREATE first,
+ // QfG1 opens the character export file with kFileOpenModeCreate first,
// closes it immediately and opens it again with this here. Perhaps
// other games use this for read access as well. I guess changing this
// whole code into using virtual files and writing them after close
@@ -287,7 +253,7 @@ reg_t file_open(EngineState *s, const Common::String &filename, kFileOpenMode mo
}
FileHandle *getFileFromHandle(EngineState *s, uint handle) {
- if ((handle == 0) || ((handle >= VIRTUALFILE_HANDLE_START) && (handle <= VIRTUALFILE_HANDLE_END))) {
+ if ((handle == 0) || ((handle >= kVirtualFileHandleStart) && (handle <= kVirtualFileHandleEnd))) {
error("Attempt to use invalid file handle (%d)", handle);
return 0;
}
@@ -333,38 +299,34 @@ static bool _savegame_sort_byDate(const SavegameDesc &l, const SavegameDesc &r)
return (l.time > r.time);
}
-bool fillSavegameDesc(const Common::String &filename, SavegameDesc *desc) {
+bool fillSavegameDesc(const Common::String &filename, SavegameDesc &desc) {
Common::SaveFileManager *saveFileMan = g_sci->getSaveFileManager();
- Common::SeekableReadStream *in;
- if ((in = saveFileMan->openForLoading(filename)) == nullptr) {
+ Common::ScopedPtr<Common::SeekableReadStream> in(saveFileMan->openForLoading(filename));
+ if (!in) {
return false;
}
SavegameMetadata meta;
- if (!get_savegame_metadata(in, &meta) || meta.name.empty()) {
- // invalid
- delete in;
+ if (!get_savegame_metadata(in.get(), meta) || meta.name.empty()) {
return false;
}
- delete in;
const int id = strtol(filename.end() - 3, NULL, 10);
- desc->id = id;
- desc->date = meta.saveDate;
+ desc.id = id;
// We need to fix date in here, because we save DDMMYYYY instead of
// YYYYMMDD, so sorting wouldn't work
- desc->date = ((desc->date & 0xFFFF) << 16) | ((desc->date & 0xFF0000) >> 8) | ((desc->date & 0xFF000000) >> 24);
- desc->time = meta.saveTime;
- desc->version = meta.version;
- desc->gameVersion = meta.gameVersion;
- desc->script0Size = meta.script0Size;
- desc->gameObjectOffset = meta.gameObjectOffset;
+ desc.date = ((meta.saveDate & 0xFFFF) << 16) | ((meta.saveDate & 0xFF0000) >> 8) | ((meta.saveDate & 0xFF000000) >> 24);
+ desc.time = meta.saveTime;
+ desc.version = meta.version;
+ desc.gameVersion = meta.gameVersion;
+ desc.script0Size = meta.script0Size;
+ desc.gameObjectOffset = meta.gameObjectOffset;
#ifdef ENABLE_SCI32
if (g_sci->getGameId() == GID_SHIVERS) {
- desc->lowScore = meta.lowScore;
- desc->highScore = meta.highScore;
+ desc.lowScore = meta.lowScore;
+ desc.highScore = meta.highScore;
} else if (g_sci->getGameId() == GID_MOTHERGOOSEHIRES) {
- desc->avatarId = meta.avatarId;
+ desc.avatarId = meta.avatarId;
}
#endif
@@ -372,10 +334,10 @@ bool fillSavegameDesc(const Common::String &filename, SavegameDesc *desc) {
meta.name.deleteLastChar();
// At least Phant2 requires use of strncpy, since it creates save game
- // names of exactly SCI_MAX_SAVENAME_LENGTH
- strncpy(desc->name, meta.name.c_str(), SCI_MAX_SAVENAME_LENGTH);
+ // names of exactly kMaxSaveNameLength
+ strncpy(desc.name, meta.name.c_str(), kMaxSaveNameLength);
- return desc;
+ return true;
}
// Create an array containing all found savedgames, sorted by creation date
@@ -394,8 +356,9 @@ void listSavegames(Common::Array<SavegameDesc> &saves) {
#endif
SavegameDesc desc;
- fillSavegameDesc(filename, &desc);
- saves.push_back(desc);
+ if (fillSavegameDesc(filename, desc)) {
+ saves.push_back(desc);
+ }
}
// Sort the list by creation date of the saves
@@ -411,6 +374,74 @@ int findSavegame(Common::Array<SavegameDesc> &saves, int16 savegameId) {
return -1;
}
+#ifdef ENABLE_SCI32
+Common::MemoryReadStream *makeCatalogue(const uint maxNumSaves, const uint gameNameSize, const Common::String &fileNamePattern, const bool ramaFormat) {
+ enum {
+ kGameIdSize = sizeof(int16),
+ kNumSavesSize = sizeof(int16),
+ kFreeSlotSize = sizeof(int16),
+ kTerminatorSize = kGameIdSize,
+ kTerminator = 0xFFFF
+ };
+
+ Common::Array<SavegameDesc> games;
+ listSavegames(games);
+
+ const uint numSaves = MIN(games.size(), maxNumSaves);
+ const uint fileNameSize = fileNamePattern.empty() ? 0 : 12;
+ const uint entrySize = kGameIdSize + fileNameSize + gameNameSize;
+ uint dataSize = numSaves * entrySize + kTerminatorSize;
+ if (ramaFormat) {
+ dataSize += kNumSavesSize + kFreeSlotSize * maxNumSaves;
+ }
+
+ byte *out = (byte *)malloc(dataSize);
+ const byte *const data = out;
+
+ Common::Array<bool> usedSlots;
+ if (ramaFormat) {
+ WRITE_LE_UINT16(out, numSaves);
+ out += kNumSavesSize;
+ usedSlots.resize(maxNumSaves);
+ }
+
+ for (uint i = 0; i < numSaves; ++i) {
+ const SavegameDesc &save = games[i];
+ const uint16 id = save.id - kSaveIdShift;
+ if (!ramaFormat) {
+ WRITE_LE_UINT16(out, id);
+ out += kGameIdSize;
+ }
+ if (fileNameSize) {
+ const Common::String fileName = Common::String::format(fileNamePattern.c_str(), id);
+ strncpy(reinterpret_cast<char *>(out), fileName.c_str(), fileNameSize);
+ out += fileNameSize;
+ }
+ // Game names can be up to exactly gameNameSize
+ strncpy(reinterpret_cast<char *>(out), save.name, gameNameSize);
+ out += gameNameSize;
+ if (ramaFormat) {
+ WRITE_LE_UINT16(out, id);
+ out += kGameIdSize;
+
+ assert(id >= 0 && id < maxNumSaves);
+ usedSlots[id] = true;
+ }
+ }
+
+ if (ramaFormat) {
+ // A table indicating which save game slots are occupied
+ for (uint i = 0; i < usedSlots.size(); ++i) {
+ WRITE_LE_UINT16(out, !usedSlots[i]);
+ out += kFreeSlotSize;
+ }
+ }
+
+ WRITE_LE_UINT16(out, kTerminator);
+
+ return new Common::MemoryReadStream(data, dataSize, DisposeAfterUse::YES);
+}
+#endif
FileHandle::FileHandle() : _in(0), _out(0) {
}
diff --git a/engines/sci/engine/file.h b/engines/sci/engine/file.h
index 1657dd3c7c..b94caa039f 100644
--- a/engines/sci/engine/file.h
+++ b/engines/sci/engine/file.h
@@ -23,20 +23,21 @@
#ifndef SCI_ENGINE_FILE_H
#define SCI_ENGINE_FILE_H
+#include "common/memstream.h"
#include "common/str-array.h"
#include "common/stream.h"
namespace Sci {
enum kFileOpenMode {
- _K_FILE_MODE_OPEN_OR_CREATE = 0,
- _K_FILE_MODE_OPEN_OR_FAIL = 1,
- _K_FILE_MODE_CREATE = 2
+ kFileOpenModeOpenOrCreate = 0,
+ kFileOpenModeOpenOrFail = 1,
+ kFileOpenModeCreate = 2
};
enum {
- SCI_MAX_SAVENAME_LENGTH = 36, ///< Maximum length of a savegame name (including optional terminator character).
- MAX_SAVEGAME_NR = 20 ///< Maximum number of savegames
+ kMaxSaveNameLength = 36, ///< Maximum length of a savegame name (including optional terminator character).
+ kMaxNumSaveGames = 20 ///< Maximum number of savegames
};
#ifdef ENABLE_SCI32
@@ -51,10 +52,12 @@ enum {
};
#endif
-#define VIRTUALFILE_HANDLE_START 32000
-#define VIRTUALFILE_HANDLE_SCI32SAVE 32100
-#define VIRTUALFILE_HANDLE_SCIAUDIO 32300
-#define VIRTUALFILE_HANDLE_END 32300
+enum {
+ kVirtualFileHandleStart = 32000,
+ kVirtualFileHandleSci32Save = 32100,
+ kVirtualFileHandleSciAudio = 32300,
+ kVirtualFileHandleEnd = 32300
+};
struct SavegameDesc {
int16 id;
@@ -62,7 +65,7 @@ struct SavegameDesc {
int date;
int time;
int version;
- char name[SCI_MAX_SAVENAME_LENGTH];
+ char name[kMaxSaveNameLength];
Common::String gameVersion;
uint32 script0Size;
uint32 gameObjectOffset;
@@ -112,7 +115,66 @@ private:
void addAsVirtualFiles(Common::String title, Common::String fileMask);
};
+#ifdef ENABLE_SCI32
+/**
+ * A MemoryWriteStreamDynamic with additional read functionality.
+ * The read and write functions share a single stream position.
+ */
+class MemoryDynamicRWStream : public Common::MemoryWriteStreamDynamic, public Common::SeekableReadStream {
+public:
+ MemoryDynamicRWStream(DisposeAfterUse::Flag disposeMemory = DisposeAfterUse::NO) : MemoryWriteStreamDynamic(disposeMemory), _eos(false) { }
+
+ uint32 read(void *dataPtr, uint32 dataSize);
+
+ bool eos() const { return _eos; }
+ int32 pos() const { return _pos; }
+ int32 size() const { return _size; }
+ void clearErr() { _eos = false; Common::MemoryWriteStreamDynamic::clearErr(); }
+ bool seek(int32 offs, int whence = SEEK_SET) { return Common::MemoryWriteStreamDynamic::seek(offs, whence); }
+
+protected:
+ bool _eos;
+};
+
+/**
+ * A MemoryDynamicRWStream intended to re-write a file.
+ * It reads the contents of `inFile` in the constructor, and writes back
+ * the changes to `fileName` in the destructor (and when calling commit() ).
+ */
+class SaveFileRewriteStream : public MemoryDynamicRWStream {
+public:
+ SaveFileRewriteStream(const Common::String &fileName,
+ Common::SeekableReadStream *inFile,
+ kFileOpenMode mode, bool compress);
+ virtual ~SaveFileRewriteStream();
+
+ virtual uint32 write(const void *dataPtr, uint32 dataSize) { _changed = true; return MemoryDynamicRWStream::write(dataPtr, dataSize); }
+
+ void commit(); //< Save back to disk
+
+protected:
+ Common::String _fileName;
+ bool _compress;
+ bool _changed;
+};
+
+#endif
+
uint findFreeFileHandle(EngineState *s);
+reg_t file_open(EngineState *s, const Common::String &filename, kFileOpenMode mode, bool unwrapFilename);
+FileHandle *getFileFromHandle(EngineState *s, uint handle);
+int fgets_wrapper(EngineState *s, char *dest, int maxsize, int handle);
+void listSavegames(Common::Array<SavegameDesc> &saves);
+int findSavegame(Common::Array<SavegameDesc> &saves, int16 savegameId);
+bool fillSavegameDesc(const Common::String &filename, SavegameDesc &desc);
+
+#ifdef ENABLE_SCI32
+/**
+ * Constructs an in-memory stream from the ScummVM save game list that is
+ * compatible with game scripts' game catalogue readers.
+ */
+Common::MemoryReadStream *makeCatalogue(const uint maxNumSaves, const uint gameNameSize, const Common::String &fileNamePattern, const bool ramaFormat);
+#endif
} // End of namespace Sci
diff --git a/engines/sci/engine/guest_additions.cpp b/engines/sci/engine/guest_additions.cpp
index 792605c4b9..06cf0c9f66 100644
--- a/engines/sci/engine/guest_additions.cpp
+++ b/engines/sci/engine/guest_additions.cpp
@@ -50,12 +50,6 @@ enum {
kMessageTypeSpeech = 2
};
-enum {
- kLSL6HiresUIVolumeMax = 13,
- kLSL6HiresSubtitleFlag = 105
-};
-
-
GuestAdditions::GuestAdditions(EngineState *state, GameFeatures *features, Kernel *kernel) :
_state(state),
_features(features),
@@ -189,6 +183,12 @@ bool GuestAdditions::kDoSoundMasterVolumeHook(const int volume) const {
}
#ifdef ENABLE_SCI32
+void GuestAdditions::sciEngineInitGameHook() {
+ if (g_sci->getGameId() == GID_PHANTASMAGORIA2 && Common::checkGameGUIOption(GAMEOPTION_ENABLE_CENSORING, ConfMan.get("guioptions"))) {
+ _state->variables[VAR_GLOBAL][kGlobalVarPhant2CensorshipFlag] = make_reg(0, ConfMan.getBool("enable_censoring"));
+ }
+}
+
void GuestAdditions::sendSelectorHook(const reg_t sendObj, Selector &selector, reg_t *argp) {
if (_features->getMessageTypeSyncStrategy() == kMessageTypeSyncStrategyLSL6Hires) {
syncMessageTypeToScummVMUsingLSL6HiresStrategy(sendObj, selector, argp);
@@ -243,7 +243,12 @@ void GuestAdditions::instantiateScriptHook(Script &script, const bool ignoreDela
// segment table to change (versus save games that are not patched),
// breaking persistent objects (like the control panel in SQ6) which
// require reg_ts created during game startup to always be the same
- patchGameSaveRestoreSCI32(script);
+
+ if (g_sci->getGameId() == GID_RAMA) {
+ patchGameSaveRestoreRama(script);
+ } else {
+ patchGameSaveRestoreSCI32(script);
+ }
}
}
@@ -263,15 +268,8 @@ bool GuestAdditions::kGetEventHook() const {
// cause loading to fail if the save game contains a saved Robot state,
// because the Robot will try to restore itself into a game plane which does
// not exist yet
- if (g_sci->getGameId() == GID_LIGHTHOUSE) {
- Common::List<ExecStack>::const_iterator it;
- for (it = _state->_executionStack.begin(); it != _state->_executionStack.end(); ++it) {
- const ExecStack &call = *it;
- const reg_t gameObject = g_sci->getGameObject();
- if (call.sendp == gameObject && call.debugSelector == SELECTOR(init)) {
- return false;
- }
- }
+ if (g_sci->getGameId() == GID_LIGHTHOUSE && _state->callInStack(g_sci->getGameObject(), SELECTOR(init))) {
+ return false;
}
#endif
@@ -399,25 +397,7 @@ static const byte SRDialogPatch[] = {
};
void GuestAdditions::patchGameSaveRestoreSCI32(Script &script) const {
- const ObjMap &objMap = script.getObjectMap();
- for (ObjMap::const_iterator it = objMap.begin(); it != objMap.end(); ++it) {
- const Object &obj = it->_value;
- if (strncmp(_segMan->getObjectName(obj.getPos()), "SRDialog", 8) != 0) {
- continue;
- }
-
- const uint16 methodCount = obj.getMethodCount();
- for (uint16 methodNr = 0; methodNr < methodCount; ++methodNr) {
- const uint16 selectorId = obj.getFuncSelector(methodNr);
- const Common::String methodName = _kernel->getSelectorName(selectorId);
- if (methodName == "doit") {
- const reg_t methodAddress = obj.getFunction(methodNr);
- byte *patchPtr = const_cast<byte *>(script.getBuf(methodAddress.getOffset()));
- memcpy(patchPtr, SRDialogPatch, sizeof(SRDialogPatch));
- break;
- }
- }
- }
+ patchSRDialogDoit(script, "SRDialog", SRDialogPatch, sizeof(SRDialogPatch));
}
static const byte SRTorinPatch[] = {
@@ -453,7 +433,7 @@ void GuestAdditions::patchGameSaveRestorePhant2(Script &script) const {
for (ObjMap::const_iterator it = objects.begin(); it != objects.end(); ++it) {
const Object &obj = it->_value;
- if (strncmp(_segMan->derefString(obj.getNameSelector()), "srGetGame", 9) != 0) {
+ if (strcmp(_segMan->derefString(obj.getNameSelector()), "srGetGame") != 0) {
continue;
}
@@ -468,6 +448,50 @@ void GuestAdditions::patchGameSaveRestorePhant2(Script &script) const {
}
}
+static const byte RamaSRDialogPatch[] = {
+ 0x78, // push1
+ 0x7c, // pushSelf
+ 0x43, kScummVMSaveLoadId, 0x02, 0x00, // callk kScummVMSaveLoad, 0
+ 0x48 // ret
+};
+
+static const int RamaSRDialogUint16Offsets[] = { 4 };
+
+void GuestAdditions::patchGameSaveRestoreRama(Script &script) const {
+ patchSRDialogDoit(script, "Save", RamaSRDialogPatch, sizeof(RamaSRDialogPatch), RamaSRDialogUint16Offsets, ARRAYSIZE(RamaSRDialogUint16Offsets));
+ patchSRDialogDoit(script, "Restore", RamaSRDialogPatch, sizeof(RamaSRDialogPatch), RamaSRDialogUint16Offsets, ARRAYSIZE(RamaSRDialogUint16Offsets));
+}
+
+void GuestAdditions::patchSRDialogDoit(Script &script, const char *const objectName, const byte *patchData, const int patchSize, const int *uint16Offsets, const uint numOffsets) const {
+ const ObjMap &objMap = script.getObjectMap();
+ for (ObjMap::const_iterator it = objMap.begin(); it != objMap.end(); ++it) {
+ const Object &obj = it->_value;
+ if (strcmp(_segMan->getObjectName(obj.getPos()), objectName) != 0) {
+ continue;
+ }
+
+ const uint16 methodCount = obj.getMethodCount();
+ for (uint16 methodNr = 0; methodNr < methodCount; ++methodNr) {
+ const uint16 selectorId = obj.getFuncSelector(methodNr);
+ const Common::String methodName = _kernel->getSelectorName(selectorId);
+ if (methodName == "doit") {
+ const reg_t methodAddress = obj.getFunction(methodNr);
+ byte *patchPtr = const_cast<byte *>(script.getBuf(methodAddress.getOffset()));
+ memcpy(patchPtr, patchData, patchSize);
+
+ if (g_sci->isBE()) {
+ for (uint i = 0; i < numOffsets; ++i) {
+ const int offset = uint16Offsets[i];
+ SWAP(patchPtr[offset], patchPtr[offset + 1]);
+ }
+ }
+
+ return;
+ }
+ }
+ }
+}
+
reg_t GuestAdditions::kScummVMSaveLoad(EngineState *s, int argc, reg_t *argv) const {
if (g_sci->getGameId() == GID_PHANTASMAGORIA2) {
return promptSaveRestorePhant2(s, argc, argv);
@@ -477,6 +501,10 @@ reg_t GuestAdditions::kScummVMSaveLoad(EngineState *s, int argc, reg_t *argv) co
return promptSaveRestoreTorin(s, argc, argv);
}
+ if (g_sci->getGameId() == GID_RAMA) {
+ return promptSaveRestoreRama(s, argc, argv);
+ }
+
return promptSaveRestoreDefault(s, argc, argv);
}
@@ -529,6 +557,92 @@ reg_t GuestAdditions::promptSaveRestorePhant2(EngineState *s, int argc, reg_t *a
return make_reg(0, saveNo);
}
+reg_t GuestAdditions::promptSaveRestoreRama(EngineState *s, int argc, reg_t *argv) const {
+ assert(argc == 1);
+ const bool isSave = (strcmp(_segMan->getObjectName(argv[0]), "Save") == 0);
+
+ const reg_t editor = _segMan->findObjectByName("editI");
+ reg_t outDescription = readSelector(_segMan, editor, SELECTOR(text));
+ if (!_segMan->isValidAddr(outDescription, SEG_TYPE_ARRAY)) {
+ _segMan->allocateArray(kArrayTypeString, 0, &outDescription);
+ writeSelector(_segMan, editor, SELECTOR(text), outDescription);
+ }
+
+ int saveNo = runSaveRestore(isSave, outDescription, s->_delayedRestoreGameId);
+ int saveIndex = -1;
+ if (saveNo != -1) {
+ // The save number returned by runSaveRestore is a SCI save number
+ // because normally SRDialogs return the save ID, but RAMA returns the
+ // save game's index in the save game list instead, so we need to
+ // convert back to the ScummVM save number here to find the correct
+ // index
+ saveNo += kSaveIdShift;
+
+ Common::Array<SavegameDesc> saves;
+ listSavegames(saves);
+ saveIndex = findSavegame(saves, saveNo);
+
+ if (isSave) {
+ bool resetCatalogFile = false;
+ const Common::String saveGameName = _segMan->getString(outDescription);
+
+ // The original game save/restore code returns index 0 when a game
+ // is created that does not already exist and then the scripts find
+ // the next hole and insert there, but the ScummVM GUI works
+ // differently and allows users to insert a game wherever they want,
+ // so we need to force the save game to exist in advance so RAMA's
+ // save code will successfully put it where we want it
+ if (saveIndex == -1) {
+ // We need to touch the save file just so it exists here, since
+ // otherwise the game will not let us save to the new save slot
+ // (it will try to come up with a brand new slot instead)
+ Common::OutSaveFile *out = g_sci->getSaveFileManager()->openForSaving(g_sci->getSavegameName(saveNo));
+ set_savegame_metadata(out, saveGameName, "");
+
+ // Make sure the save file is fully written before we try to
+ // re-retrieve the list of saves, since otherwise it may not
+ // show up in the list
+ delete out;
+
+ // We have to re-retrieve saves and find the index instead of
+ // assuming the newest save will be in index 0 because save game
+ // times are not guaranteed to be steady
+ saves.clear();
+ listSavegames(saves);
+ saveIndex = findSavegame(saves, saveNo);
+ if (saveIndex == -1) {
+ warning("Stub save not found when trying to save a new game to slot %d", saveNo);
+ } else {
+ // Kick the CatalogFile into believing that this new save
+ // game exists already, otherwise it the game will not
+ // actually save into the new save
+ resetCatalogFile = true;
+ }
+ } else if (strncmp(saveGameName.c_str(), saves[saveIndex].name, kMaxSaveNameLength) != 0) {
+ // The game doesn't let the save game name change for the same
+ // slot, but ScummVM's GUI does, so force the new name into the
+ // save file metadata if it has changed so it actually makes it
+ // into the save game
+ Common::ScopedPtr<Common::OutSaveFile> out(g_sci->getSaveFileManager()->openForSaving(g_sci->getSavegameName(saveNo)));
+ set_savegame_metadata(out.get(), saveGameName, "");
+ resetCatalogFile = true;
+ }
+
+ if (resetCatalogFile) {
+ const reg_t catalogFileId = _state->variables[VAR_GLOBAL][kGlobalVarRamaCatalogFile];
+ if (catalogFileId.isNull()) {
+ warning("Could not find CatalogFile when saving from launcher");
+ }
+ reg_t args[] = { NULL_REG };
+ invokeSelector(catalogFileId, SELECTOR(dispose));
+ invokeSelector(catalogFileId, SELECTOR(init), ARRAYSIZE(args), args);
+ }
+ }
+ }
+
+ return make_reg(0, saveIndex);
+}
+
int GuestAdditions::runSaveRestore(const bool isSave, reg_t outDescription, const int forcedSaveNo) const {
int saveNo;
Common::String descriptionString;
@@ -571,7 +685,7 @@ int GuestAdditions::runSaveRestore(const bool isSave, reg_t outDescription, cons
// number here to match what would come from the normal SCI save/restore
// dialog. There is additional special code for handling the autosave
// game inside of kRestoreGame32.
- --saveNo;
+ saveNo -= kSaveIdShift;
}
return saveNo;
@@ -631,6 +745,14 @@ bool GuestAdditions::restoreFromLauncher() const {
// which will automatically return the `_delayedRestoreGameId` instead
// of prompting the user for a save game
invokeSelector(g_sci->getGameObject(), SELECTOR(restore));
+
+ // The normal save game system resets _delayedRestoreGameId with a
+ // call to `EngineState::reset`, but RAMA uses a custom save game
+ // system which does not reset the engine, so we need to clear the
+ // ID here or the engine will just try to restore the game forever
+ if (g_sci->getGameId() == GID_RAMA) {
+ _state->_delayedRestoreGameId = -1;
+ }
}
_restoring = false;
@@ -906,7 +1028,7 @@ void GuestAdditions::syncAudioVolumeGlobalsFromScummVM() const {
}
case GID_PHANTASMAGORIA2: {
- const int16 masterVolume = (ConfMan.getInt("sfx_volume") + 1) * Audio32::kMaxVolume / Audio::Mixer::kMaxMixerVolume;
+ const int16 masterVolume = (ConfMan.getInt("sfx_volume") + 1) * kPhant2VolumeMax / Audio::Mixer::kMaxMixerVolume;
syncPhant2VolumeFromScummVM(masterVolume);
syncPhant2UI(masterVolume);
break;
@@ -1010,12 +1132,13 @@ void GuestAdditions::syncLSL6HiresVolumeFromScummVM(const int16 musicVolume) con
g_sci->_soundCmd->setMasterVolume(ConfMan.getBool("mute") ? 0 : (musicVolume * MUSIC_MASTERVOLUME_MAX / kLSL6HiresUIVolumeMax));
}
-void GuestAdditions::syncPhant2VolumeFromScummVM(const int16 musicVolume) const {
- _state->variables[VAR_GLOBAL][kGlobalVarPhant2MasterVolume] = make_reg(0, musicVolume);
+void GuestAdditions::syncPhant2VolumeFromScummVM(const int16 masterVolume) const {
+ _state->variables[VAR_GLOBAL][kGlobalVarPhant2MasterVolume] = make_reg(0, masterVolume);
+ _state->variables[VAR_GLOBAL][kGlobalVarPhant2SecondaryVolume] = make_reg(0, masterVolume);
const reg_t soundsId = _state->variables[VAR_GLOBAL][kGlobalVarSounds];
if (!soundsId.isNull()) {
- reg_t params[] = { make_reg(0, SELECTOR(setVol)), make_reg(0, musicVolume) };
+ reg_t params[] = { make_reg(0, SELECTOR(setVol)), make_reg(0, masterVolume) };
invokeSelector(soundsId, SELECTOR(eachElementDo), 2, params);
}
}
@@ -1074,8 +1197,10 @@ void GuestAdditions::syncAudioVolumeGlobalsToScummVM(const int index, const reg_
case GID_PHANTASMAGORIA2:
if (index == kGlobalVarPhant2MasterVolume) {
- const int16 masterVolume = value.toSint16() * Audio::Mixer::kMaxMixerVolume / Audio32::kMaxVolume;
+ const int16 masterVolume = value.toSint16() * Audio::Mixer::kMaxMixerVolume / kPhant2VolumeMax;
+ ConfMan.setInt("music_volume", masterVolume);
ConfMan.setInt("sfx_volume", masterVolume);
+ ConfMan.setInt("speech_volume", masterVolume);
}
break;
@@ -1239,18 +1364,18 @@ void GuestAdditions::syncPhant1UI(const int16 oldMusicVolume, const int16 musicV
}
}
-void GuestAdditions::syncPhant2UI(const int16 musicVolume) const {
- const reg_t musicVolumeScript = _segMan->findObjectByName("foo2");
+void GuestAdditions::syncPhant2UI(const int16 masterVolume) const {
+ const reg_t masterVolumeScript = _segMan->findObjectByName("foo2");
Common::Array<reg_t> scrollBars = _segMan->findObjectsByName("P2ScrollBar");
for (uint i = 0; i < scrollBars.size(); ++i) {
- if (readSelector(_segMan, scrollBars[i], SELECTOR(client)) == musicVolumeScript) {
+ if (readSelector(_segMan, scrollBars[i], SELECTOR(client)) == masterVolumeScript) {
// P2ScrollBar objects may exist without actually being on-screen;
// the easiest way to tell seems to be to look to see if it has
// non-null pointers to subviews. (The game will correctly set the
// position of the scrollbar when it first becomes visible, so this
// is fine.)
if (!readSelector(_segMan, scrollBars[i], SELECTOR(physicalBar)).isNull()) {
- reg_t params[] = { make_reg(0, musicVolume), make_reg(0, 1) };
+ reg_t params[] = { make_reg(0, masterVolume), make_reg(0, 1) };
invokeSelector(scrollBars[i], SELECTOR(move), 2, params);
break;
}
diff --git a/engines/sci/engine/guest_additions.h b/engines/sci/engine/guest_additions.h
index 36264b946b..a1043a8402 100644
--- a/engines/sci/engine/guest_additions.h
+++ b/engines/sci/engine/guest_additions.h
@@ -33,6 +33,21 @@ class Kernel;
class Script;
class SegManager;
+#ifdef ENABLE_SCI32
+enum {
+ // The in-game volumes for Phant2 use a volume range smaller than the
+ // actual master volume because movie volume needs to be controllable from
+ // the normal ScummVM launcher volume controls, but movie dialogue cannot be
+ // heard if the game audio is at the same level as movies. The game normally
+ // sets defaults so that the in-game volume is 85 and movies are 127, so we
+ // will just use 85 as the maximum volume.
+ kPhant2VolumeMax = 85,
+
+ kLSL6HiresUIVolumeMax = 13,
+ kLSL6HiresSubtitleFlag = 105
+};
+#endif
+
/**
* The GuestAdditions class hooks into the SCI virtual machine to provide
* enhanced interactions between the ScummVM GUI and the game engine. Currently,
@@ -109,6 +124,11 @@ public:
#ifdef ENABLE_SCI32
/**
+ * Guest additions hook for SciEngine::initGame.
+ */
+ void sciEngineInitGameHook();
+
+ /**
* Guest additions hook for send_selector.
*/
void sendSelectorHook(const reg_t sendObj, Selector &selector, reg_t *argp);
@@ -200,6 +220,17 @@ private:
void patchGameSaveRestorePhant2(Script &script) const;
/**
+ * Patches the ScummVM save/load dialogue into RAMA.
+ */
+ void patchGameSaveRestoreRama(Script &script) const;
+
+ /**
+ * Patches the `doit` method of an SRDialog object with the given name
+ * using the given patch data.
+ */
+ void patchSRDialogDoit(Script &script, const char *const objectName, const byte *patchData, const int patchSize, const int *uint16Offsets = nullptr, const uint numOffsets = 0) const;
+
+ /**
* Prompts for a save game and returns it to game scripts using default
* SRDialog game class semantics.
*/
@@ -218,6 +249,12 @@ private:
reg_t promptSaveRestorePhant2(EngineState *s, int argc, reg_t *argv) const;
/**
+ * Prompts for a save game and returns it to game scripts using RAMA's
+ * custom SRDialog class semantics.
+ */
+ reg_t promptSaveRestoreRama(EngineState *s, int argc, reg_t *argv) const;
+
+ /**
* Prompts the user to save or load a game.
*
* @param isSave If true, the prompt is for saving.
diff --git a/engines/sci/engine/kernel.h b/engines/sci/engine/kernel.h
index baa891650e..a712474983 100644
--- a/engines/sci/engine/kernel.h
+++ b/engines/sci/engine/kernel.h
@@ -508,7 +508,6 @@ reg_t kStringNew(EngineState *s, int argc, reg_t *argv);
reg_t kStringGetChar(EngineState *s, int argc, reg_t *argv);
reg_t kStringFree(EngineState *s, int argc, reg_t *argv);
reg_t kStringCompare(EngineState *s, int argc, reg_t *argv);
-reg_t kStringGetData(EngineState *s, int argc, reg_t *argv);
reg_t kStringLength(EngineState *s, int argc, reg_t *argv);
reg_t kStringFormat(EngineState *s, int argc, reg_t *argv);
reg_t kStringFormatAt(EngineState *s, int argc, reg_t *argv);
diff --git a/engines/sci/engine/kernel_tables.h b/engines/sci/engine/kernel_tables.h
index ac932199d3..884a499542 100644
--- a/engines/sci/engine/kernel_tables.h
+++ b/engines/sci/engine/kernel_tables.h
@@ -67,6 +67,7 @@ struct SciKernelMapSubEntry {
#define SIG_SINCE_SCI11 SCI_VERSION_1_1, SCI_VERSION_NONE
#define SIG_SCI2 SCI_VERSION_2, SCI_VERSION_2
#define SIG_SCI21EARLY SCI_VERSION_2_1_EARLY, SCI_VERSION_2_1_EARLY
+#define SIG_SCI21MID_LATE SCI_VERSION_2_1_MIDDLE, SCI_VERSION_2_1_LATE
#define SIG_THRU_SCI21EARLY SCI_VERSION_2, SCI_VERSION_2_1_EARLY
#define SIG_THRU_SCI21MID SCI_VERSION_2, SCI_VERSION_2_1_MIDDLE
#define SIG_SINCE_SCI21 SCI_VERSION_2_1_EARLY, SCI_VERSION_3
@@ -324,7 +325,8 @@ static const SciKernelMapSubEntry kFileIO_subops[] = {
{ SIG_SINCE_SCI21MID, 13, MAP_CALL(FileIOReadByte), "i", NULL },
{ SIG_SINCE_SCI21MID, 14, MAP_CALL(FileIOWriteByte), "ii", NULL },
{ SIG_SINCE_SCI21MID, 15, MAP_CALL(FileIOReadWord), "i", NULL },
- { SIG_SINCE_SCI21MID, 16, MAP_CALL(FileIOWriteWord), "ii", NULL },
+ { SIG_SCI21MID_LATE, 16, MAP_CALL(FileIOWriteWord), "ii", NULL },
+ { SIG_SCI3, 16, MAP_CALL(FileIOWriteWord), "i.", NULL },
{ SIG_SINCE_SCI21MID, 17, "FileIOCheckFreeSpace", kCheckFreeSpace, "i(r)", NULL },
{ SIG_SINCE_SCI21MID, 18, MAP_CALL(FileIOGetCWD), "r", NULL },
{ SIG_SINCE_SCI21MID, 19, MAP_CALL(FileIOIsValidDirectory), "[ro]", NULL },
@@ -516,12 +518,12 @@ static const SciKernelMapSubEntry kArray_subops[] = {
{ SIG_SCI32, 1, MAP_CALL(ArrayGetSize), "r", NULL },
{ SIG_SCI32, 2, MAP_CALL(ArrayGetElement), "ri", NULL },
{ SIG_SCI32, 3, MAP_CALL(ArraySetElements), "ri(.*)", kArraySetElements_workarounds },
- { SIG_SCI32, 4, MAP_CALL(ArrayFree), "[0r]", NULL },
+ { SIG_SCI32, 4, MAP_CALL(ArrayFree), "[r0]", NULL },
{ SIG_SCI32, 5, MAP_CALL(ArrayFill), "riii", kArrayFill_workarounds },
{ SIG_SCI32, 6, MAP_CALL(ArrayCopy), "ririi", NULL },
// there is no subop 7
{ SIG_SCI32, 8, MAP_CALL(ArrayDuplicate), "r", NULL },
- { SIG_SCI32, 9, MAP_CALL(ArrayGetData), "[or]", NULL },
+ { SIG_SCI32, 9, MAP_CALL(ArrayGetData), "[or0]", NULL },
{ SIG_SCI3, 10, MAP_CALL(ArrayByteCopy), "ririi", NULL },
SCI_SUBOPENTRY_TERMINATOR
};
@@ -533,34 +535,34 @@ static const SciKernelMapSubEntry kString_subops[] = {
// 3)
{ SIG_THRU_SCI21MID, 0, MAP_CALL(StringNew), "i(i)", NULL },
{ SIG_THRU_SCI21MID, 1, MAP_CALL(ArrayGetSize), "r", NULL },
- { SIG_THRU_SCI21MID, 2, MAP_CALL(StringGetChar), "ri", NULL },
+ { SIG_THRU_SCI21MID, 2, MAP_CALL(StringGetChar), "[r0]i", NULL },
{ SIG_THRU_SCI21MID, 3, MAP_CALL(ArraySetElements), "ri(i*)", kArraySetElements_workarounds },
- { SIG_THRU_SCI21MID, 4, MAP_CALL(StringFree), "[0r]", NULL },
+ { SIG_THRU_SCI21MID, 4, MAP_CALL(StringFree), "[r0]", NULL },
{ SIG_THRU_SCI21MID, 5, MAP_CALL(ArrayFill), "rii", kArrayFill_workarounds },
{ SIG_THRU_SCI21MID, 6, MAP_CALL(ArrayCopy), "ririi", NULL },
- { SIG_SCI32, 7, MAP_CALL(StringCompare), "rr(i)", NULL },
+ { SIG_SCI32, 7, MAP_CALL(StringCompare), "[r0][r0](i)", NULL },
{ SIG_THRU_SCI21MID, 8, MAP_CALL(ArrayDuplicate), "r", NULL },
- { SIG_THRU_SCI21MID, 9, MAP_CALL(StringGetData), "[0or]", NULL },
- { SIG_THRU_SCI21MID, 10, MAP_CALL(StringLength), "r", NULL },
- { SIG_THRU_SCI21MID, 11, MAP_CALL(StringFormat), "[ro](.*)", NULL },
- { SIG_THRU_SCI21MID, 12, MAP_CALL(StringFormatAt), "r[ro](.*)", NULL },
- { SIG_THRU_SCI21MID, 13, MAP_CALL(StringToInteger), "r", NULL },
- { SIG_THRU_SCI21MID, 14, MAP_CALL(StringTrim), "ri(i)", NULL },
- { SIG_THRU_SCI21MID, 15, MAP_CALL(StringToUpperCase), "r", NULL },
- { SIG_THRU_SCI21MID, 16, MAP_CALL(StringToLowerCase), "r", NULL },
- { SIG_THRU_SCI21MID, 17, MAP_CALL(StringReplaceSubstring), "rrrr", NULL },
- { SIG_THRU_SCI21MID, 18, MAP_CALL(StringReplaceSubstringEx), "rrrr", NULL },
-
- { SIG_SINCE_SCI21LATE, 8, MAP_CALL(StringLength), "r", NULL },
- { SIG_SINCE_SCI21LATE, 9, MAP_CALL(StringFormat), "[ro](.*)", NULL },
- { SIG_SINCE_SCI21LATE,10, MAP_CALL(StringFormatAt), "r[ro](.*)", NULL },
- { SIG_SINCE_SCI21LATE,11, MAP_CALL(StringToInteger), "r", NULL },
- { SIG_SINCE_SCI21LATE,12, MAP_CALL(StringTrim), "ri(i)", NULL },
- { SIG_SINCE_SCI21LATE,13, MAP_CALL(StringToUpperCase), "r", NULL },
- { SIG_SINCE_SCI21LATE,14, MAP_CALL(StringToLowerCase), "r", NULL },
- { SIG_SINCE_SCI21LATE,15, MAP_CALL(StringReplaceSubstring), "rrrr", NULL },
- { SIG_SINCE_SCI21LATE,16, MAP_CALL(StringReplaceSubstringEx), "rrrr", NULL },
+ { SIG_THRU_SCI21MID, 9, MAP_CALL(ArrayGetData), "[or0]", NULL },
+ { SIG_THRU_SCI21MID, 10, MAP_CALL(StringLength), "[r0]", NULL },
+ { SIG_THRU_SCI21MID, 11, MAP_CALL(StringFormat), "[or0](.*)", NULL },
+ { SIG_THRU_SCI21MID, 12, MAP_CALL(StringFormatAt), "r[or0](.*)", NULL },
+ { SIG_THRU_SCI21MID, 13, MAP_CALL(StringToInteger), "[r0]", NULL },
+ { SIG_THRU_SCI21MID, 14, MAP_CALL(StringTrim), "[r0]i(i)", NULL },
+ { SIG_THRU_SCI21MID, 15, MAP_CALL(StringToUpperCase), "[r0]", NULL },
+ { SIG_THRU_SCI21MID, 16, MAP_CALL(StringToLowerCase), "[r0]", NULL },
+ { SIG_THRU_SCI21MID, 17, MAP_CALL(StringReplaceSubstring), "[r0][r0][r0][r0]", NULL },
+ { SIG_THRU_SCI21MID, 18, MAP_CALL(StringReplaceSubstringEx), "[r0][r0][r0][r0]", NULL },
+
+ { SIG_SINCE_SCI21LATE, 8, MAP_CALL(StringLength), "[r0]", NULL },
+ { SIG_SINCE_SCI21LATE, 9, MAP_CALL(StringFormat), "[or0](.*)", NULL },
+ { SIG_SINCE_SCI21LATE,10, MAP_CALL(StringFormatAt), "[r0][or0](.*)", NULL },
+ { SIG_SINCE_SCI21LATE,11, MAP_CALL(StringToInteger), "[r0]", NULL },
+ { SIG_SINCE_SCI21LATE,12, MAP_CALL(StringTrim), "[r0]i(i)", NULL },
+ { SIG_SINCE_SCI21LATE,13, MAP_CALL(StringToUpperCase), "[r0]", NULL },
+ { SIG_SINCE_SCI21LATE,14, MAP_CALL(StringToLowerCase), "[r0]", NULL },
+ { SIG_SINCE_SCI21LATE,15, MAP_CALL(StringReplaceSubstring), "[r0][r0][r0][r0]", NULL },
+ { SIG_SINCE_SCI21LATE,16, MAP_CALL(StringReplaceSubstringEx), "[r0][r0][r0][r0]", NULL },
SCI_SUBOPENTRY_TERMINATOR
};
diff --git a/engines/sci/engine/kfile.cpp b/engines/sci/engine/kfile.cpp
index eb6cacbe19..db7bbce640 100644
--- a/engines/sci/engine/kfile.cpp
+++ b/engines/sci/engine/kfile.cpp
@@ -41,6 +41,7 @@
#include "sci/sound/audio.h"
#include "sci/console.h"
#ifdef ENABLE_SCI32
+#include "graphics/thumbnail.h"
#include "sci/engine/guest_additions.h"
#include "sci/engine/message.h"
#include "sci/resource.h"
@@ -48,13 +49,6 @@
namespace Sci {
-extern reg_t file_open(EngineState *s, const Common::String &filename, kFileOpenMode mode, bool unwrapFilename);
-extern FileHandle *getFileFromHandle(EngineState *s, uint handle);
-extern int fgets_wrapper(EngineState *s, char *dest, int maxsize, int handle);
-extern void listSavegames(Common::Array<SavegameDesc> &saves);
-extern int findSavegame(Common::Array<SavegameDesc> &saves, int16 savegameId);
-extern bool fillSavegameDesc(const Common::String &filename, SavegameDesc *desc);
-
/**
* Writes the cwd to the supplied address and returns the address in acc.
*/
@@ -269,6 +263,34 @@ static bool saveCatalogueExists(const Common::String &name) {
return exists;
}
+
+static Common::String getRamaSaveName(EngineState *s, const uint saveNo) {
+ const reg_t catalogId = s->variables[VAR_GLOBAL][kGlobalVarRamaCatalogFile];
+ if (catalogId.isNull()) {
+ error("Could not find CatalogFile object to retrieve save game name");
+ }
+
+ const List *list = s->_segMan->lookupList(readSelector(s->_segMan, catalogId, SELECTOR(elements)));
+ if (!list) {
+ error("Could not read CatalogFile object list");
+ }
+
+ Node *node = s->_segMan->lookupNode(list->first);
+ while (node) {
+ const reg_t entryId = node->value;
+ if (readSelectorValue(s->_segMan, entryId, SELECTOR(fileNumber)) == saveNo) {
+ reg_t description = readSelector(s->_segMan, entryId, SELECTOR(description));
+ if (s->_segMan->isObject(description)) {
+ description = readSelector(s->_segMan, description, SELECTOR(data));
+ }
+ return s->_segMan->getString(description);
+ }
+
+ node = s->_segMan->lookupNode(node->succ);
+ }
+
+ error("Could not find a save name for save %u", saveNo);
+}
#endif
reg_t kFileIO(EngineState *s, int argc, reg_t *argv) {
@@ -319,11 +341,11 @@ reg_t kFileIOOpen(EngineState *s, int argc, reg_t *argv) {
if (g_sci->getGameId() == GID_SHIVERS && name.hasSuffix(".SG")) {
// Shivers stores the name and score of save games in separate %d.SG
// files, which are used by the save/load screen
- if (mode == _K_FILE_MODE_OPEN_OR_CREATE || mode == _K_FILE_MODE_CREATE) {
+ if (mode == kFileOpenModeOpenOrCreate || mode == kFileOpenModeCreate) {
// Suppress creation of the SG file, since it is not necessary
debugC(kDebugLevelFile, "Not creating unused file %s", name.c_str());
return SIGNAL_REG;
- } else if (mode == _K_FILE_MODE_OPEN_OR_FAIL) {
+ } else if (mode == kFileOpenModeOpenOrFail) {
// Create a virtual file containing the save game description
// and current score progress, as the game scripts expect.
int saveNo;
@@ -331,7 +353,9 @@ reg_t kFileIOOpen(EngineState *s, int argc, reg_t *argv) {
saveNo += kSaveIdShift;
SavegameDesc save;
- fillSavegameDesc(g_sci->getSavegameName(saveNo), &save);
+ if (!fillSavegameDesc(g_sci->getSavegameName(saveNo), save)) {
+ return SIGNAL_REG;
+ }
Common::String score;
if (!save.highScore) {
@@ -340,9 +364,9 @@ reg_t kFileIOOpen(EngineState *s, int argc, reg_t *argv) {
score = Common::String::format("%u%03u", save.highScore, save.lowScore);
}
- const uint nameLength = Common::strnlen(save.name, SCI_MAX_SAVENAME_LENGTH);
+ const uint nameLength = Common::strnlen(save.name, kMaxSaveNameLength);
const uint size = nameLength + /* \r\n */ 2 + score.size();
- char *buffer = (char *)malloc(size);
+ byte *buffer = (byte *)malloc(size);
memcpy(buffer, save.name, nameLength);
buffer[nameLength] = '\r';
buffer[nameLength + 1] = '\n';
@@ -350,7 +374,7 @@ reg_t kFileIOOpen(EngineState *s, int argc, reg_t *argv) {
const uint handle = findFreeFileHandle(s);
- s->_fileHandles[handle]._in = new Common::MemoryReadStream((byte *)buffer, size, DisposeAfterUse::YES);
+ s->_fileHandles[handle]._in = new Common::MemoryReadStream(buffer, size, DisposeAfterUse::YES);
s->_fileHandles[handle]._out = nullptr;
s->_fileHandles[handle]._name = "";
@@ -359,11 +383,11 @@ reg_t kFileIOOpen(EngineState *s, int argc, reg_t *argv) {
} else if (g_sci->getGameId() == GID_MOTHERGOOSEHIRES && name.hasSuffix(".DTA")) {
// MGDX stores the name and avatar ID in separate %d.DTA files, which
// are used by the save/load screen
- if (mode == _K_FILE_MODE_OPEN_OR_CREATE || mode == _K_FILE_MODE_CREATE) {
+ if (mode == kFileOpenModeOpenOrCreate || mode == kFileOpenModeCreate) {
// Suppress creation of the DTA file, since it is not necessary
debugC(kDebugLevelFile, "Not creating unused file %s", name.c_str());
return SIGNAL_REG;
- } else if (mode == _K_FILE_MODE_OPEN_OR_FAIL) {
+ } else if (mode == kFileOpenModeOpenOrFail) {
// Create a virtual file containing the save game description
// and avatar ID, as the game scripts expect.
int saveNo;
@@ -380,10 +404,12 @@ reg_t kFileIOOpen(EngineState *s, int argc, reg_t *argv) {
saveNo += kSaveIdShift;
SavegameDesc save;
- fillSavegameDesc(g_sci->getSavegameName(saveNo), &save);
+ if (!fillSavegameDesc(g_sci->getSavegameName(saveNo), save)) {
+ return SIGNAL_REG;
+ }
const Common::String avatarId = Common::String::format("%02d", save.avatarId);
- const uint nameLength = Common::strnlen(save.name, SCI_MAX_SAVENAME_LENGTH);
+ const uint nameLength = Common::strnlen(save.name, kMaxSaveNameLength);
const uint size = nameLength + /* \r\n */ 2 + avatarId.size() + 1;
char *buffer = (char *)malloc(size);
memcpy(buffer, save.name, nameLength);
@@ -404,40 +430,7 @@ reg_t kFileIOOpen(EngineState *s, int argc, reg_t *argv) {
// catalogue, but since we do not create catalogues for most SCI32
// games, ignore the write
if (name == "temp.tmp") {
- return make_reg(0, VIRTUALFILE_HANDLE_SCI32SAVE);
- }
-
- // KQ7 tries to read out game information from catalogues directly
- // instead of using the standard kSaveGetFiles function
- if (name == "kq7cdsg.cat") {
- if (mode == _K_FILE_MODE_OPEN_OR_CREATE || mode == _K_FILE_MODE_CREATE) {
- // Suppress creation of the catalogue file, since it is not necessary
- debugC(kDebugLevelFile, "Not creating unused file %s", name.c_str());
- return SIGNAL_REG;
- } else if (mode == _K_FILE_MODE_OPEN_OR_FAIL) {
- Common::Array<SavegameDesc> saves;
- listSavegames(saves);
-
- const uint recordSize = sizeof(int16) + SCI_MAX_SAVENAME_LENGTH;
- const uint numSaves = MIN<uint>(saves.size(), 10);
- const uint size = numSaves * recordSize + /* terminator */ 2;
- byte *const buffer = (byte *)malloc(size);
-
- byte *out = buffer;
- for (uint i = 0; i < numSaves; ++i) {
- WRITE_UINT16(out, saves[i].id - kSaveIdShift);
- strncpy((char *)out + sizeof(int16), saves[i].name, SCI_MAX_SAVENAME_LENGTH);
- out += recordSize;
- }
- WRITE_UINT16(out, 0xFFFF);
-
- const uint handle = findFreeFileHandle(s);
- s->_fileHandles[handle]._in = new Common::MemoryReadStream(buffer, size, DisposeAfterUse::YES);
- s->_fileHandles[handle]._out = nullptr;
- s->_fileHandles[handle]._name = "";
-
- return make_reg(0, handle);
- }
+ return make_reg(0, kVirtualFileHandleSci32Save);
}
} else if (g_sci->getGameId() == GID_PQSWAT) {
// PQSWAT tries to create subdirectories for each game profile
@@ -446,19 +439,89 @@ reg_t kFileIOOpen(EngineState *s, int argc, reg_t *argv) {
*it = '_';
}
}
+ } else if (g_sci->getGameId() == GID_PHANTASMAGORIA2 && name == "RESDUK.PAT") {
+ // Ignore the censorship password file in lieu of our game option
+ return SIGNAL_REG;
+ } else if (g_sci->getGameId() == GID_RAMA) {
+ int saveNo = -1;
+ if (name == "autorama.sg") {
+ saveNo = kAutoSaveId;
+ } else if (sscanf(name.c_str(), "ramasg.%i", &saveNo) == 1) {
+ saveNo += kSaveIdShift;
+ }
+
+ if (saveNo != -1) {
+ Common::SaveFileManager *saveFileMan = g_sci->getSaveFileManager();
+ const Common::String fileName = g_sci->getSavegameName(saveNo);
+ Common::SeekableReadStream *in = nullptr;
+ Common::OutSaveFile *out = nullptr;
+ bool valid = false;
+
+ if (mode == kFileOpenModeOpenOrFail) {
+ in = saveFileMan->openForLoading(fileName);
+ if (in) {
+ SavegameMetadata meta;
+ if (get_savegame_metadata(in, meta)) {
+ Graphics::skipThumbnail(*in);
+ valid = true;
+ }
+ }
+ } else {
+ out = saveFileMan->openForSaving(fileName);
+ if (out) {
+ Common::String saveName;
+ if (saveNo != kAutoSaveId) {
+ saveName = getRamaSaveName(s, saveNo - kSaveIdShift);
+ }
+ Common::ScopedPtr<Common::SeekableReadStream> versionFile(SearchMan.createReadStreamForMember("VERSION"));
+ const Common::String gameVersion = versionFile->readLine();
+ set_savegame_metadata(out, saveName, gameVersion);
+ valid = true;
+ }
+ }
+
+ if (valid) {
+ uint handle = findFreeFileHandle(s);
+ s->_fileHandles[handle]._in = in;
+ s->_fileHandles[handle]._out = out;
+ s->_fileHandles[handle]._name = "-scummvm-save-";
+ return make_reg(0, handle);
+ }
+ }
}
// See kMakeSaveCatName
if (name == "fake.cat") {
- return make_reg(0, VIRTUALFILE_HANDLE_SCI32SAVE);
+ return make_reg(0, kVirtualFileHandleSci32Save);
}
if (isSaveCatalogue(name)) {
const bool exists = saveCatalogueExists(name);
if (exists) {
+ // KQ7 & RAMA read out game information from catalogues directly
+ // instead of using the standard kSaveGetFiles function
+ if (name == "kq7cdsg.cat" || name == "ramasg.cat") {
+ if (mode == kFileOpenModeOpenOrCreate || mode == kFileOpenModeCreate) {
+ // Suppress creation of the catalogue file, since it is not necessary
+ debugC(kDebugLevelFile, "Not creating unused file %s", name.c_str());
+ return SIGNAL_REG;
+ } else if (mode == kFileOpenModeOpenOrFail) {
+ const uint handle = findFreeFileHandle(s);
+
+ if (name == "kq7cdsg.cat") {
+ s->_fileHandles[handle]._in = makeCatalogue(10, kMaxSaveNameLength, "", false);
+ } else {
+ s->_fileHandles[handle]._in = makeCatalogue(100, 20, "ramasg.%d", true);
+ }
+ s->_fileHandles[handle]._out = nullptr;
+ s->_fileHandles[handle]._name = "";
+ return make_reg(0, handle);
+ }
+ }
+
// Dummy handle is used to represent the catalogue and ignore any
// direct game script writes
- return make_reg(0, VIRTUALFILE_HANDLE_SCI32SAVE);
+ return make_reg(0, kVirtualFileHandleSci32Save);
} else {
return SIGNAL_REG;
}
@@ -469,7 +532,7 @@ reg_t kFileIOOpen(EngineState *s, int argc, reg_t *argv) {
if (name.hasPrefix("sciAudio\\")) {
// fan-made sciAudio extension, don't create those files and instead return a virtual handle
- return make_reg(0, VIRTUALFILE_HANDLE_SCIAUDIO);
+ return make_reg(0, kVirtualFileHandleSciAudio);
}
// QFG import rooms get a virtual filelisting instead of an actual one
@@ -492,7 +555,7 @@ reg_t kFileIOClose(EngineState *s, int argc, reg_t *argv) {
uint16 handle = argv[0].toUint16();
- if (handle >= VIRTUALFILE_HANDLE_START) {
+ if (handle >= kVirtualFileHandleStart) {
// it's a virtual handle? ignore it
return getSciVersion() >= SCI_VERSION_2 ? TRUE_REG : SIGNAL_REG;
}
@@ -536,7 +599,7 @@ reg_t kFileIOWriteRaw(EngineState *s, int argc, reg_t *argv) {
uint16 size = argv[2].toUint16();
#ifdef ENABLE_SCI32
- if (handle == VIRTUALFILE_HANDLE_SCI32SAVE) {
+ if (handle == kVirtualFileHandleSci32Save) {
return make_reg(0, size);
}
#endif
@@ -670,7 +733,7 @@ reg_t kFileIOWriteString(EngineState *s, int argc, reg_t *argv) {
// We skip creating these files, and instead handle the calls
// directly. Since the sciAudio calls are only creating text files,
// this is probably the most straightforward place to handle them.
- if (handle == VIRTUALFILE_HANDLE_SCIAUDIO) {
+ if (handle == kVirtualFileHandleSciAudio) {
Common::List<ExecStack>::const_iterator iter = s->_executionStack.reverse_begin();
iter--; // sciAudio
iter--; // sciAudio child
@@ -753,10 +816,24 @@ reg_t kFileIOExists(EngineState *s, int argc, reg_t *argv) {
return saveCatalogueExists(name) ? TRUE_REG : NULL_REG;
}
- // LSL7 checks to see if the autosave save exists when deciding whether to
- // go to the main menu or not on startup
+ int findSaveNo = -1;
+
if (g_sci->getGameId() == GID_LSL7 && name == "autosvsg.000") {
- return g_sci->getSaveFileManager()->listSavefiles(g_sci->getSavegameName(0)).empty() ? NULL_REG : TRUE_REG;
+ // LSL7 checks to see if the autosave save exists when deciding whether
+ // to go to the main menu or not on startup
+ findSaveNo = kAutoSaveId;
+ } else if (g_sci->getGameId() == GID_RAMA) {
+ // RAMA checks to see if save game files exist before showing them in
+ // the native save/load dialogue
+ if (name == "autorama.sg") {
+ findSaveNo = kAutoSaveId;
+ } else if (sscanf(name.c_str(), "ramasg.%i", &findSaveNo) == 1) {
+ findSaveNo += kSaveIdShift;
+ }
+ }
+
+ if (findSaveNo != -1) {
+ return g_sci->getSaveFileManager()->listSavefiles(g_sci->getSavegameName(findSaveNo)).empty() ? NULL_REG : TRUE_REG;
}
#endif
@@ -859,24 +936,48 @@ reg_t kFileIOWriteByte(EngineState *s, int argc, reg_t *argv) {
}
reg_t kFileIOReadWord(EngineState *s, int argc, reg_t *argv) {
- FileHandle *f = getFileFromHandle(s, argv[0].toUint16());
+ const uint16 handle = argv[0].toUint16();
+ FileHandle *f = getFileFromHandle(s, handle);
if (!f)
- return NULL_REG;
- return make_reg(0, f->_in->readUint16LE());
+ return s->r_acc;
+
+ reg_t value;
+ if (s->_fileHandles[handle]._name == "-scummvm-save-") {
+ value._segment = f->_in->readUint16LE();
+ value._offset = f->_in->readUint16LE();
+ } else {
+ value = make_reg(0, f->_in->readUint16LE());
+ }
+
+ if (f->_in->err()) {
+ return s->r_acc;
+ }
+
+ return value;
}
reg_t kFileIOWriteWord(EngineState *s, int argc, reg_t *argv) {
- uint16 handle = argv[0].toUint16();
+ const uint16 handle = argv[0].toUint16();
-#ifdef ENABLE_SCI32
- if (handle == VIRTUALFILE_HANDLE_SCI32SAVE) {
+ if (handle == kVirtualFileHandleSci32Save) {
return s->r_acc;
}
-#endif
FileHandle *f = getFileFromHandle(s, handle);
- if (f)
+ if (!f) {
+ return s->r_acc;
+ }
+
+ if (s->_fileHandles[handle]._name == "-scummvm-save-") {
+ f->_out->writeUint16LE(argv[1]._segment);
+ f->_out->writeUint16LE(argv[1]._offset);
+ } else {
+ if (argv[1].isPointer()) {
+ error("Attempt to write non-number %04x:%04x", PRINT_REG(argv[1]));
+ }
f->_out->writeUint16LE(argv[1].toUint16());
+ }
+
return s->r_acc;
}
@@ -1171,7 +1272,7 @@ reg_t kGetSaveFiles(EngineState *s, int argc, reg_t *argv) {
Common::Array<SavegameDesc> saves;
listSavegames(saves);
- uint totalSaves = MIN<uint>(saves.size(), MAX_SAVEGAME_NR);
+ uint totalSaves = MIN<uint>(saves.size(), kMaxNumSaveGames);
Common::String game_id = s->_segMan->getString(argv[0]);
@@ -1184,14 +1285,14 @@ reg_t kGetSaveFiles(EngineState *s, int argc, reg_t *argv) {
totalSaves = 0;
}
- const uint bufSize = (totalSaves * SCI_MAX_SAVENAME_LENGTH) + 1;
+ const uint bufSize = (totalSaves * kMaxSaveNameLength) + 1;
char *saveNames = new char[bufSize];
char *saveNamePtr = saveNames;
for (uint i = 0; i < totalSaves; i++) {
*slot++ = make_reg(0, saves[i].id + SAVEGAMEID_OFFICIALRANGE_START); // Store the virtual savegame ID (see above)
strcpy(saveNamePtr, saves[i].name);
- saveNamePtr += SCI_MAX_SAVENAME_LENGTH;
+ saveNamePtr += kMaxSaveNameLength;
}
*saveNamePtr = 0; // Terminate list
@@ -1224,19 +1325,19 @@ reg_t kSaveGame32(EngineState *s, int argc, reg_t *argv) {
saveNo += kSaveIdShift;
}
- if (g_sci->getGameId() == GID_LIGHTHOUSE && gameName == "rst") {
+ if (g_sci->getGameId() == GID_PHANTASMAGORIA2 && s->callInStack(g_sci->getGameObject(), SELECTOR(bookMark))) {
+ saveNo = kAutoSaveId;
+ } else if (g_sci->getGameId() == GID_LIGHTHOUSE && gameName == "rst") {
saveNo = kNewGameId;
- }
-
- // Auto-save system used by QFG4
- if (g_sci->getGameId() == GID_QFG4) {
+ } else if (g_sci->getGameId() == GID_QFG4) {
+ // Auto-save system used by QFG4
reg_t autoSaveNameId;
SciArray &autoSaveName = *s->_segMan->allocateArray(kArrayTypeString, 0, &autoSaveNameId);
MessageTuple autoSaveNameTuple(0, 0, 16, 1);
s->_msgState->getMessage(0, autoSaveNameTuple, autoSaveNameId);
if (saveDescription == autoSaveName.toString()) {
- saveNo = 0;
+ saveNo = kAutoSaveId;
}
s->_segMan->freeArray(autoSaveNameId);
@@ -1318,7 +1419,7 @@ reg_t kCheckSaveGame32(EngineState *s, int argc, reg_t *argv) {
}
SavegameDesc save;
- if (!fillSavegameDesc(g_sci->getSavegameName(saveNo), &save)) {
+ if (!fillSavegameDesc(g_sci->getSavegameName(saveNo), save)) {
return NULL_REG;
}
@@ -1366,19 +1467,19 @@ reg_t kGetSaveFiles32(EngineState *s, int argc, reg_t *argv) {
// Normally SSCI limits to 20 games per directory, but ScummVM allows more
// than that with games that use the standard save-load dialogue
- descriptions.resize(SCI_MAX_SAVENAME_LENGTH * saves.size() + 1, true);
+ descriptions.resize(kMaxSaveNameLength * saves.size() + 1, true);
saveIds.resize(saves.size() + 1, true);
for (uint i = 0; i < saves.size(); ++i) {
const SavegameDesc &save = saves[i];
- char *target = &descriptions.charAt(SCI_MAX_SAVENAME_LENGTH * i);
+ char *target = &descriptions.charAt(kMaxSaveNameLength * i);
// At least Phant2 requires use of strncpy, since it creates save game
- // names of exactly SCI_MAX_SAVENAME_LENGTH
- strncpy(target, save.name, SCI_MAX_SAVENAME_LENGTH);
+ // names of exactly kMaxSaveNameLength
+ strncpy(target, save.name, kMaxSaveNameLength);
saveIds.setFromInt16(i, save.id - kSaveIdShift);
}
- descriptions.charAt(SCI_MAX_SAVENAME_LENGTH * saves.size()) = '\0';
+ descriptions.charAt(kMaxSaveNameLength * saves.size()) = '\0';
saveIds.setFromInt16(saves.size(), 0);
return make_reg(0, saves.size());
diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp
index 9bfeb9ab01..e5336b37bc 100644
--- a/engines/sci/engine/kgraphics.cpp
+++ b/engines/sci/engine/kgraphics.cpp
@@ -397,13 +397,13 @@ reg_t kTextSize(EngineState *s, int argc, reg_t *argv) {
reg_t kWait(EngineState *s, int argc, reg_t *argv) {
int sleep_time = argv[0].toUint16();
- s->wait(sleep_time);
+ const int delta = s->wait(sleep_time);
if (g_sci->_guestAdditions->kWaitHook()) {
return NULL_REG;
}
- return s->r_acc;
+ return make_reg(0, delta);
}
reg_t kCoordPri(EngineState *s, int argc, reg_t *argv) {
@@ -932,7 +932,7 @@ void _k_GenericDrawControl(EngineState *s, reg_t controlObject, bool hilite) {
}
}
- debugC(kDebugLevelGraphics, "drawing list control %04x:%04x to %d,%d, diff %d", PRINT_REG(controlObject), x, y, SCI_MAX_SAVENAME_LENGTH);
+ debugC(kDebugLevelGraphics, "drawing list control %04x:%04x to %d,%d", PRINT_REG(controlObject), x, y);
g_sci->_gfxControls16->kernelDrawList(rect, controlObject, maxChars, listCount, listStrings, fontId, style, upperPos, cursorPos, isAlias, hilite);
delete[] listStrings;
return;
diff --git a/engines/sci/engine/klists.cpp b/engines/sci/engine/klists.cpp
index 2f66e51a6e..2ca5a65fc0 100644
--- a/engines/sci/engine/klists.cpp
+++ b/engines/sci/engine/klists.cpp
@@ -859,19 +859,19 @@ reg_t kArrayFill(EngineState *s, int argc, reg_t *argv) {
reg_t kArrayCopy(EngineState *s, int argc, reg_t *argv) {
SciArray &target = *s->_segMan->lookupArray(argv[0]);
const uint16 targetIndex = argv[1].toUint16();
+ const uint16 sourceIndex = argv[3].toUint16();
+ const int16 count = argv[4].toSint16();
- SciArray source;
- // String copies may be made from static script data
if (!s->_segMan->isArray(argv[2])) {
+ // String copies may be made from static script data
+ SciArray source;
source.setType(kArrayTypeString);
source.fromString(s->_segMan->getString(argv[2]));
+ target.copy(source, sourceIndex, targetIndex, count);
} else {
- source = *s->_segMan->lookupArray(argv[2]);
+ target.copy(*s->_segMan->lookupArray(argv[2]), sourceIndex, targetIndex, count);
}
- const uint16 sourceIndex = argv[3].toUint16();
- const uint16 count = argv[4].toUint16();
- target.copy(source, sourceIndex, targetIndex, count);
return argv[0];
}
diff --git a/engines/sci/engine/kmisc.cpp b/engines/sci/engine/kmisc.cpp
index 6c5dcd16a9..62dc2b22ef 100644
--- a/engines/sci/engine/kmisc.cpp
+++ b/engines/sci/engine/kmisc.cpp
@@ -435,6 +435,10 @@ reg_t kGetConfig(EngineState *s, int argc, reg_t *argv) {
// Likely modelled after the Windows 3.1 function GetPrivateProfileInt:
// http://msdn.microsoft.com/en-us/library/windows/desktop/ms724345%28v=vs.85%29.aspx
reg_t kGetSierraProfileInt(EngineState *s, int argc, reg_t *argv) {
+ if (g_sci->getPlatform() != Common::kPlatformWindows) {
+ return s->r_acc;
+ }
+
Common::String category = s->_segMan->getString(argv[0]); // always "config"
category.toLowercase();
Common::String setting = s->_segMan->getString(argv[1]);
@@ -648,7 +652,11 @@ reg_t kPlatform32(EngineState *s, int argc, reg_t *argv) {
error("Unknown platform %d", g_sci->getPlatform());
}
case kGetColorDepth:
- return make_reg(0, /* 256 color */ 2);
+ if (g_sci->getGameId() == GID_PHANTASMAGORIA2) {
+ return make_reg(0, /* 16-bit color */ 3);
+ } else {
+ return make_reg(0, /* 256 color */ 2);
+ }
case kGetCDSpeed:
// The value `4` comes from Rama DOS resource.cfg installed in DOSBox,
// and seems to correspond to the highest expected CD speed value
diff --git a/engines/sci/engine/kscripts.cpp b/engines/sci/engine/kscripts.cpp
index 5a330237e9..8fd05a7dc9 100644
--- a/engines/sci/engine/kscripts.cpp
+++ b/engines/sci/engine/kscripts.cpp
@@ -158,7 +158,7 @@ reg_t kResCheck(EngineState *s, int argc, reg_t *argv) {
// GK2 stores some VMDs inside of resource volumes, but usually videos are
// streamed from the filesystem.
if (res == nullptr) {
- const char *format = nullptr;
+ const char *format;
switch (restype) {
case kResourceTypeRobot:
format = "%u.rbt";
diff --git a/engines/sci/engine/kstring.cpp b/engines/sci/engine/kstring.cpp
index 3c6a0424f8..cbe481d343 100644
--- a/engines/sci/engine/kstring.cpp
+++ b/engines/sci/engine/kstring.cpp
@@ -682,14 +682,6 @@ reg_t kStringCompare(EngineState *s, int argc, reg_t *argv) {
return make_reg(0, (result > 0) - (result < 0));
}
-reg_t kStringGetData(EngineState *s, int argc, reg_t *argv) {
- if (s->_segMan->isObject(argv[0])) {
- return readSelector(s->_segMan, argv[0], SELECTOR(data));
- }
-
- return argv[0];
-}
-
reg_t kStringLength(EngineState *s, int argc, reg_t *argv) {
return make_reg(0, s->_segMan->getString(argv[0]).size());
}
@@ -803,26 +795,30 @@ Common::String format(const Common::String &source, int argc, const reg_t *argv)
}
reg_t kStringFormat(EngineState *s, int argc, reg_t *argv) {
- reg_t stringHandle;
- SciArray &target = *s->_segMan->allocateArray(kArrayTypeString, 0, &stringHandle);
- reg_t source = argv[0];
- // Str objects may be passed in place of direct references to string data
- if (s->_segMan->isObject(argv[0])) {
- source = readSelector(s->_segMan, argv[0], SELECTOR(data));
- }
- target.fromString(format(s->_segMan->getString(source), argc - 1, argv + 1));
- return stringHandle;
+ Common::Array<reg_t> args;
+ args.resize(argc + 1);
+ args[0] = NULL_REG;
+ Common::copy(argv, argv + argc, &args[1]);
+ return kStringFormatAt(s, args.size(), &args[0]);
}
reg_t kStringFormatAt(EngineState *s, int argc, reg_t *argv) {
- SciArray &target = *s->_segMan->lookupArray(argv[0]);
+ reg_t stringHandle;
+ SciArray *target;
+ if (argv[0].isNull()) {
+ target = s->_segMan->allocateArray(kArrayTypeString, 0, &stringHandle);
+ } else {
+ target = s->_segMan->lookupArray(argv[0]);
+ stringHandle = argv[0];
+ }
+
reg_t source = argv[1];
// Str objects may be passed in place of direct references to string data
if (s->_segMan->isObject(argv[1])) {
source = readSelector(s->_segMan, argv[1], SELECTOR(data));
}
- target.fromString(format(s->_segMan->getString(source), argc - 2, argv + 2));
- return argv[0];
+ target->fromString(format(s->_segMan->getString(source), argc - 2, argv + 2));
+ return stringHandle;
}
reg_t kStringToInteger(EngineState *s, int argc, reg_t *argv) {
diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp
index 4ff27ba6d8..b0fa31a1bb 100644
--- a/engines/sci/engine/savegame.cpp
+++ b/engines/sci/engine/savegame.cpp
@@ -49,6 +49,8 @@
#include "sci/sound/music.h"
#ifdef ENABLE_SCI32
+#include "common/config-manager.h"
+#include "common/gui_options.h"
#include "sci/engine/guest_additions.h"
#include "sci/graphics/cursor32.h"
#include "sci/graphics/frameout.h"
@@ -1182,30 +1184,8 @@ void SegManager::reconstructClones() {
bool gamestate_save(EngineState *s, Common::WriteStream *fh, const Common::String &savename, const Common::String &version) {
- TimeDate curTime;
- g_system->getTimeAndDate(curTime);
-
- SavegameMetadata meta;
- meta.version = CURRENT_SAVEGAME_VERSION;
- meta.name = savename;
- meta.gameVersion = version;
- meta.saveDate = ((curTime.tm_mday & 0xFF) << 24) | (((curTime.tm_mon + 1) & 0xFF) << 16) | ((curTime.tm_year + 1900) & 0xFFFF);
- meta.saveTime = ((curTime.tm_hour & 0xFF) << 16) | (((curTime.tm_min) & 0xFF) << 8) | ((curTime.tm_sec) & 0xFF);
-
- Resource *script0 = g_sci->getResMan()->findResource(ResourceId(kResourceTypeScript, 0), false);
- meta.script0Size = script0->size();
- meta.gameObjectOffset = g_sci->getGameObject().getOffset();
-
- // Checking here again
-// TODO: This breaks Torin autosave, is there actually any reason for it?
-// if (s->executionStackBase) {
-// warning("Cannot save from below kernel function");
-// return false;
-// }
-
- Common::Serializer ser(0, fh);
- sync_SavegameMetadata(ser, meta);
- Graphics::saveThumbnail(*fh);
+ Common::Serializer ser(nullptr, fh);
+ set_savegame_metadata(ser, fh, savename, version);
s->saveLoadWithSerializer(ser); // FIXME: Error handling?
if (g_sci->_gfxPorts)
g_sci->_gfxPorts->saveLoadWithSerializer(ser);
@@ -1282,6 +1262,13 @@ void gamestate_afterRestoreFixUp(EngineState *s, int savegameId) {
// It gets disabled in the game's death screen.
g_sci->_gfxMenu->kernelSetAttribute(2, 1, SCI_MENU_ATTRIBUTE_ENABLED, TRUE_REG); // Game -> Save Game
break;
+#ifdef ENABLE_SCI32
+ case GID_PHANTASMAGORIA2:
+ if (Common::checkGameGUIOption(GAMEOPTION_ENABLE_CENSORING, ConfMan.get("guioptions"))) {
+ s->variables[VAR_GLOBAL][kGlobalVarPhant2CensorshipFlag] = make_reg(0, ConfMan.getBool("enable_censoring"));
+ }
+ break;
+#endif
default:
break;
}
@@ -1386,22 +1373,46 @@ void gamestate_restore(EngineState *s, Common::SeekableReadStream *fh) {
s->gameIsRestarting = GAMEISRESTARTING_RESTORE;
}
-bool get_savegame_metadata(Common::SeekableReadStream *stream, SavegameMetadata *meta) {
+void set_savegame_metadata(Common::Serializer &ser, Common::WriteStream *fh, const Common::String &savename, const Common::String &version) {
+ TimeDate curTime;
+ g_system->getTimeAndDate(curTime);
+
+ SavegameMetadata meta;
+ meta.version = CURRENT_SAVEGAME_VERSION;
+ meta.name = savename;
+ meta.gameVersion = version;
+ meta.saveDate = ((curTime.tm_mday & 0xFF) << 24) | (((curTime.tm_mon + 1) & 0xFF) << 16) | ((curTime.tm_year + 1900) & 0xFFFF);
+ meta.saveTime = ((curTime.tm_hour & 0xFF) << 16) | (((curTime.tm_min) & 0xFF) << 8) | ((curTime.tm_sec) & 0xFF);
+
+ Resource *script0 = g_sci->getResMan()->findResource(ResourceId(kResourceTypeScript, 0), false);
+ assert(script0);
+ meta.script0Size = script0->size();
+ meta.gameObjectOffset = g_sci->getGameObject().getOffset();
+
+ sync_SavegameMetadata(ser, meta);
+ Graphics::saveThumbnail(*fh);
+}
+
+void set_savegame_metadata(Common::WriteStream *fh, const Common::String &savename, const Common::String &version) {
+ Common::Serializer ser(nullptr, fh);
+ set_savegame_metadata(ser, fh, savename, version);
+}
+
+bool get_savegame_metadata(Common::SeekableReadStream *stream, SavegameMetadata &meta) {
assert(stream);
- assert(meta);
- Common::Serializer ser(stream, 0);
- sync_SavegameMetadata(ser, *meta);
+ Common::Serializer ser(stream, nullptr);
+ sync_SavegameMetadata(ser, meta);
if (stream->eos())
return false;
- if ((meta->version < MINIMUM_SAVEGAME_VERSION) ||
- (meta->version > CURRENT_SAVEGAME_VERSION)) {
- if (meta->version < MINIMUM_SAVEGAME_VERSION)
+ if ((meta.version < MINIMUM_SAVEGAME_VERSION) ||
+ (meta.version > CURRENT_SAVEGAME_VERSION)) {
+ if (meta.version < MINIMUM_SAVEGAME_VERSION)
warning("Old savegame version detected- can't load");
else
- warning("Savegame version is %d- maximum supported is %0d", meta->version, CURRENT_SAVEGAME_VERSION);
+ warning("Savegame version is %d- maximum supported is %0d", meta.version, CURRENT_SAVEGAME_VERSION);
return false;
}
diff --git a/engines/sci/engine/savegame.h b/engines/sci/engine/savegame.h
index 29930241b1..ac79a76aff 100644
--- a/engines/sci/engine/savegame.h
+++ b/engines/sci/engine/savegame.h
@@ -118,8 +118,13 @@ void gamestate_restore(EngineState *s, Common::SeekableReadStream *save);
/**
* Read the header from a savegame.
*/
-bool get_savegame_metadata(Common::SeekableReadStream* stream, SavegameMetadata* meta);
+bool get_savegame_metadata(Common::SeekableReadStream *stream, SavegameMetadata &meta);
+/**
+ * Write the header to a savegame.
+ */
+void set_savegame_metadata(Common::Serializer &ser, Common::WriteStream *fh, const Common::String &savename, const Common::String &version);
+void set_savegame_metadata(Common::WriteStream *fh, const Common::String &savename, const Common::String &version);
} // End of namespace Sci
diff --git a/engines/sci/engine/script.cpp b/engines/sci/engine/script.cpp
index a0243defa8..c1da3f25e0 100644
--- a/engines/sci/engine/script.cpp
+++ b/engines/sci/engine/script.cpp
@@ -698,9 +698,9 @@ int Script::relocateOffsetSci3(uint32 offset) const {
}
#endif
-bool Script::relocateLocal(SegmentId segment, int location) {
+bool Script::relocateLocal(SegmentId segment, int location, uint32 offset) {
if (_localsBlock)
- return relocateBlock(_localsBlock->_locals, _localsOffset, segment, location, getHeapOffset());
+ return relocateBlock(_localsBlock->_locals, _localsOffset, segment, location, offset);
else
return false;
}
@@ -804,7 +804,7 @@ void Script::relocateSci0Sci21(const SegmentId segmentId) {
// We only relocate locals and objects here, and ignore relocation of
// code blocks. In SCI1.1 and newer versions, only locals and objects
// are relocated.
- if (!relocateLocal(segmentId, pos)) {
+ if (!relocateLocal(segmentId, pos, getHeapOffset())) {
// Not a local? It's probably an object or code block. If it's an
// object, relocate it.
const ObjMap::iterator end = _objects.end();
@@ -817,19 +817,23 @@ void Script::relocateSci0Sci21(const SegmentId segmentId) {
#ifdef ENABLE_SCI32
void Script::relocateSci3(const SegmentId segmentId) {
- SciSpan<const byte> relocStart = _buf->subspan(_buf->getUint32SEAt(8));
+ SciSpan<const byte> relocEntry = _buf->subspan(_buf->getUint32SEAt(8));
const uint relocCount = _buf->getUint16SEAt(18);
- ObjMap::iterator it;
- for (it = _objects.begin(); it != _objects.end(); ++it) {
- SciSpan<const byte> seeker = relocStart;
- for (uint i = 0; i < relocCount; ++i) {
- it->_value.relocateSci3(segmentId,
- seeker.getUint32SEAt(0),
- seeker.getUint32SEAt(4),
- _script.size());
- seeker += 10;
+ for (uint i = 0; i < relocCount; ++i) {
+ const uint location = relocEntry.getUint32SEAt(0);
+ const uint offset = relocEntry.getUint32SEAt(4);
+
+ if (!relocateLocal(segmentId, location, offset)) {
+ const ObjMap::iterator end = _objects.end();
+ for (ObjMap::iterator it = _objects.begin(); it != end; ++it) {
+ if (it->_value.relocateSci3(segmentId, location, offset, _script.size())) {
+ break;
+ }
+ }
}
+
+ relocEntry += 10;
}
}
#endif
@@ -973,7 +977,7 @@ void Script::initializeLocals(SegManager *segMan) {
const SciSpan<const byte> base = _buf->subspan(getLocalsOffset());
for (uint16 i = 0; i < getLocalsCount(); i++)
- locals->_locals[i] = make_reg(0, base.getUint16SEAt(i * 2));
+ locals->_locals[i] = make_reg(0, base.getUint16SEAt(i * sizeof(uint16)));
} else {
// In SCI0 early, locals are set at run time, thus zero them all here
for (uint16 i = 0; i < getLocalsCount(); i++)
diff --git a/engines/sci/engine/script.h b/engines/sci/engine/script.h
index 1befef1c8a..f4afca7681 100644
--- a/engines/sci/engine/script.h
+++ b/engines/sci/engine/script.h
@@ -318,7 +318,7 @@ private:
void relocateSci3(const SegmentId segmentId);
#endif
- bool relocateLocal(SegmentId segment, int location);
+ bool relocateLocal(SegmentId segment, int location, uint32 offset);
#ifdef ENABLE_SCI32
/**
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index 338c57fa70..78b51c11f0 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -26,6 +26,9 @@
#include "sci/engine/state.h"
#include "sci/engine/features.h"
#include "sci/engine/script_patches.h"
+#ifdef ENABLE_SCI32
+#include "sci/engine/guest_additions.h"
+#endif
#include "common/util.h"
@@ -93,11 +96,9 @@ static const char *const selectorNameTable[] = {
"setMotion", // system selector
"overlay", // system selector
"setPri", // system selector - for setting priority
- "deskSarg", // Gabriel Knight
"localize", // Freddy Pharkas
"put", // Police Quest 1 VGA
"say", // Quest For Glory 1 VGA
- "contains", // Quest For Glory 2
"solvePuzzle", // Quest For Glory 3
"timesShownID", // Space Quest 1 VGA
"startText", // King's Quest 6 CD / Laura Bow 2 CD for audio+text support
@@ -111,13 +112,36 @@ static const char *const selectorNameTable[] = {
"scrollSelections", // GK2
"posn", // SCI2 benchmarking script
"detailLevel", // GK2 benchmarking
- "view", // RAMA benchmarking
+ "view", // RAMA benchmarking, GK1
+ "fade", // Shivers
+ "play", // Shivers
+ "handleEvent", // Shivers
"test", // Torin
- "get", // Torin
+ "get", // Torin, GK1
+ "has", // GK1
"set", // Torin
"clear", // Torin
"masterVolume", // SCI2 master volume reset
"data", // Phant2
+ "format", // Phant2
+ "setSize", // Phant2
+ "setCel", // Phant2, GK1
+ "iconV", // Phant2
+ "update", // Phant2
+ "xOff", // Phant2
+ "setCycle", // GK1
+ "fore", // KQ7
+ "back", // KQ7
+ "font", // KQ7
+ "setScale", // LSL6hires
+ "setScaler", // LSL6hires
+ "readWord", // LSL7, Phant1, Torin
+ "flag", // PQ4
+ "select", // PQ4
+ "handle", // RAMA
+ "saveFilePtr", // RAMA
+ "priority", // RAMA
+ "plane", // RAMA
#endif
NULL
};
@@ -137,11 +161,9 @@ enum ScriptPatcherSelectors {
SELECTOR_setMotion,
SELECTOR_overlay,
SELECTOR_setPri,
- SELECTOR_deskSarg,
SELECTOR_localize,
SELECTOR_put,
SELECTOR_say,
- SELECTOR_contains,
SELECTOR_solvePuzzle,
SELECTOR_timesShownID,
SELECTOR_startText,
@@ -157,12 +179,35 @@ enum ScriptPatcherSelectors {
SELECTOR_posn,
SELECTOR_detailLevel,
SELECTOR_view,
+ SELECTOR_fade,
+ SELECTOR_play,
+ SELECTOR_handleEvent,
SELECTOR_test,
SELECTOR_get,
+ SELECTOR_has,
SELECTOR_set,
SELECTOR_clear,
SELECTOR_masterVolume,
- SELECTOR_data
+ SELECTOR_data,
+ SELECTOR_format,
+ SELECTOR_setSize,
+ SELECTOR_setCel,
+ SELECTOR_iconV,
+ SELECTOR_update,
+ SELECTOR_xOff,
+ SELECTOR_setCycle,
+ SELECTOR_fore,
+ SELECTOR_back,
+ SELECTOR_font,
+ SELECTOR_setScale,
+ SELECTOR_setScaler,
+ SELECTOR_readWord,
+ SELECTOR_flag,
+ SELECTOR_select,
+ SELECTOR_handle,
+ SELECTOR_saveFilePtr,
+ SELECTOR_priority,
+ SELECTOR_plane
#endif
};
@@ -863,341 +908,288 @@ static const SciScriptPatcherEntry hoyle5Signatures[] = {
#pragma mark -
#pragma mark Gabriel Knight 1
-// ===========================================================================
-// daySixBeignet::changeState (4) is called when the cop goes out and sets cycles to 220.
-// this is not enough time to get to the door, so we patch that to 23 seconds
+// `daySixBeignet::changeState(4)` is called when the cop goes outside. It sets
+// cycles to 220. This is a CPU-speed dependent value and not usually enough
+// time to get to the door, so patch it to 22 seconds.
// Applies to at least: English PC-CD, German PC-CD, English Mac
-// Responsible method: daySixBeignet::changeState(4), script 230
-static const uint16 gk1SignatureDay6PoliceBeignet1[] = {
- 0x35, 0x04, // ldi 04
- 0x1a, // eq?
- 0x30, SIG_ADDTOOFFSET(+2), // bnt [next state check]
- 0x38, SIG_SELECTOR16(dispose), // pushi dispose
- 0x76, // push0
- 0x72, SIG_ADDTOOFFSET(+2), // lofsa deskSarg
- 0x4a, SIG_UINT16(0x0004), // send 04
+static const uint16 gk1Day6PoliceBeignetSignature1[] = {
+ 0x35, 0x04, // ldi 4
+ 0x1a, // eq?
+ 0x30, SIG_ADDTOOFFSET(+2), // bnt [next state check]
+ 0x38, SIG_SELECTOR16(dispose), // pushi dispose
+ 0x76, // push0
+ 0x72, SIG_ADDTOOFFSET(+2), // lofsa deskSarg
+ 0x4a, SIG_UINT16(0x04), // send 4
SIG_MAGICDWORD,
- 0x34, SIG_UINT16(0x00dc), // ldi 220
- 0x65, SIG_ADDTOOFFSET(+1), // aTop cycles (1a for PC, 1c for Mac)
- 0x32, // jmp [end]
+ 0x34, SIG_UINT16(0xdc), // ldi 220
+ 0x65, SIG_ADDTOOFFSET(+1), // aTop cycles ($1a for PC, $1c for Mac)
+ 0x32, // jmp [end]
SIG_END
};
-static const uint16 gk1PatchDay6PoliceBeignet1[] = {
+static const uint16 gk1Day6PoliceBeignetPatch1[] = {
PATCH_ADDTOOFFSET(+16),
- 0x34, PATCH_UINT16(0x0017), // ldi 23
- 0x65, PATCH_GETORIGINALBYTEADJUST(+20, +2), // aTop seconds (1c for PC, 1e for Mac)
+ 0x34, PATCH_UINT16(0x16), // ldi 22
+ 0x65, PATCH_GETORIGINALBYTEADJUST(+20, +2), // aTop seconds ($1c for PC, $1e for Mac)
PATCH_END
};
-// sInGateWithPermission::changeState (0) is called, when the player walks through the swinging door.
-// When it's day 6 and the desk sergeant is outside for the beignet, this state will also set
-// daySixBeignet::cycles to basically reset the overall timer, which is 200.
-// This is not enough time to get to the door, so we patch that to 20 seconds
+// `sInGateWithPermission::changeState(0)` is called whenever the player walks
+// through the swinging door. On day 6, when the cop is outside for the beignet,
+// this action will also reset the puzzle timer so the player has 200 cycles to
+// get through the area before the cop returns. This is a CPU-speed dependent
+// value and not usually enough time to get to the door, so patch it to 20
+// seconds instead.
// Applies to at least: English PC-CD, German PC-CD, English Mac
-// Responsible method: sInGateWithPermission::changeState(0), script 230
-// Fixes bug: #9805
-static const uint16 gk1SignatureDay6PoliceBeignet2[] = {
- 0x72, SIG_ADDTOOFFSET(+2), // lofsa daySixBeignet
- 0x1a, // eq?
- 0x31, 0x0d, // bnt [skip set cycles]
- 0x38, SIG_SELECTOR16(cycles), // pushi (cycles)
- 0x78, // push1
+static const uint16 gk1Day6PoliceBeignetSignature2[] = {
+ 0x72, SIG_ADDTOOFFSET(+2), // lofsa daySixBeignet
+ 0x1a, // eq?
+ 0x31, 0x0d, // bnt [skip set cycles]
+ 0x38, SIG_SELECTOR16(cycles), // pushi (cycles)
+ 0x78, // push1
SIG_MAGICDWORD,
- 0x38, SIG_UINT16(200), // pushi 200d
- 0x72, // lofsa
+ 0x38, SIG_UINT16(0xc8), // pushi 200
+ 0x72, // lofsa
SIG_END
};
-static const uint16 gk1PatchDay6PoliceBeignet2[] = {
+static const uint16 gk1Day6PoliceBeignetPatch2[] = {
PATCH_ADDTOOFFSET(+6),
- 0x38, PATCH_SELECTOR16(seconds), // pushi (seconds)
- 0x78, // push1
- 0x38, PATCH_UINT16(20), // pushi 20
+ 0x38, PATCH_SELECTOR16(seconds), // pushi (seconds)
+ 0x78, // push1
+ 0x38, PATCH_UINT16(0x14), // pushi 20
PATCH_END
};
-// sargSleeping::changeState (8) is called when the cop falls asleep and sets cycles to 220.
-// this is not enough time to get to the door, so we patch it to 42 seconds
+// `sargSleeping::changeState(8)` is called when the cop falls asleep and sets
+// the puzzle timer to 220 cycles. This is CPU-speed dependent and not usually
+// enough time to get to the door, so patch it to 22 seconds instead.
// Applies to at least: English PC-CD, German PC-CD, English Mac
-// Responsible method: sargSleeping::changeState
-static const uint16 gk1SignatureDay6PoliceSleep[] = {
- 0x35, 0x08, // ldi 08
- 0x1a, // eq?
- 0x31, SIG_ADDTOOFFSET(+1), // bnt [next state check]
+static const uint16 gk1Day6PoliceSleepSignature[] = {
+ 0x35, 0x08, // ldi 8
+ 0x1a, // eq?
+ 0x31, SIG_ADDTOOFFSET(+1), // bnt [next state check]
SIG_MAGICDWORD,
- 0x34, SIG_UINT16(0x00dc), // ldi 220
- 0x65, SIG_ADDTOOFFSET(+1), // aTop cycles (1a for PC, 1c for Mac)
- 0x32, // jmp [end]
+ 0x34, SIG_UINT16(0xdc), // ldi 220
+ 0x65, SIG_ADDTOOFFSET(+1), // aTop cycles ($1a for PC, $1c for Mac)
+ 0x32, // jmp [end]
SIG_END
};
-static const uint16 gk1PatchDay6PoliceSleep[] = {
+static const uint16 gk1Day6PoliceSleepPatch[] = {
PATCH_ADDTOOFFSET(+5),
- 0x34, PATCH_UINT16(0x002a), // ldi 42
+ 0x34, PATCH_UINT16(0x16), // ldi 22
0x65, PATCH_GETORIGINALBYTEADJUST(+9, +2), // aTop seconds (1c for PC, 1e for Mac)
PATCH_END
};
-// At the start of day 5, there is like always some dialogue with Grace.
-//
-// The dialogue script code about the drum book + veve newspaper clip is a bit broken.
-//
-// In case the player already has the veve, but is supposed to get the drum book, then the drum book
-// dialogue is repeated twice and the veve newspaper dialogue is also repeated (although it was played on day 4
-// in such case already).
-//
-// Drum book dialogue is called twice.
-// Once via GetTheVeve::changeState(0) and a second time via GetTheVeve::changeState(11).
-//
-// GetTheVeve::changeState(0) would also play the first line of the veve pattern newspaper and that's skipped,
-// when the player is supposed to get the drum book.
-// GetTheVeve::changeState(1) up to state 10 will do the dialogue about the veve newspaper.
-// At the start of state 1 though, the player will get the drum book in case he ask for research.
-// Right after that the scripts check, if the player has the drum book and then go the veve newspaper route.
+// At the start of day 5, when the player already has the veve but still needs
+// to get the drum book, the drum book dialogue with Grace is played twice in
+// a row, and then the veve dialogue gets played again even though it was
+// already played during day 4.
//
-// We fix this by skipping the drum book check in case the player just got the drum book.
-// The scripts will then skip to state 12, skipping over the second drum book dialogue call.
+// The duplicate drum book dialogue happens because it is triggered once in
+// `GetTheVeve::changeState(0)` and then again in `GetTheVeve::changeState(11)`.
+// The re-run of the veve dialogue happens because the game gives the player
+// the drum book in `GetTheVeVe::changeState(1)`, then *after* doing so, checks
+// if the player has the drum book and runs the veve dialogue if so.
//
-// More notes: The veve newspaper item is inventory 9. The drum book is inventory 14.
-// The flag for veve research is 36, the flag for drum research is 73.
+// We fix both of these issues by skipping the has-drum-book check if the player
+// just got the drum book in 'GetTheVeve::changeState(1)'.
+// Doing this causes the game to jump from state 1 to state 12, which bypasses
+// the duplicate drum book dialogue in state 11, as well as the veve dialogue
+// trigger in the has-drum-book check.
//
-// This bug of course also occurs, when using the original interpreter.
+// More notes: The veve newspaper item is inventory 9. The drum book is
+// inventory 14. The flag for veve research is 36, the flag for drum
+// research is 73.
//
-// Special thanks, credits and kudos to sluicebox on IRC, who did a ton of research on this and even found this game bug originally.
+// Special thanks, credits and kudos to sluicebox on IRC, who did a ton of
+// research on this and even found this game bug originally.
//
// Applies to at least: English PC-CD, German PC-CD
-// Responsible method: getTheVeve::changeState(1) - script 212
-static const uint16 gk1SignatureDay5DrumBookDialogue[] = {
+static const uint16 gk1Day5DrumBookDialogueSignature[] = {
0x31, 0x0b, // bnt [skip giving player drum book code]
- 0x38, SIG_UINT16(0x0200), // pushi 0200h
+ 0x38, SIG_SELECTOR16(get), // pushi $200 (get)
0x78, // push1
SIG_MAGICDWORD,
- 0x39, 0x0e, // pushi 0Eh
+ 0x39, 0x0e, // pushi $e
0x81, 0x00, // lag global[0]
- 0x4a, 0x06, 0x00, // send 06 - GKEgo::get(0Eh)
+ 0x4a, SIG_UINT16(0x06), // send 6 - GKEgo::get($e)
// end of giving player drum book code
- 0x38, SIG_UINT16(0x0202), // pushi 0202h
+ 0x38, SIG_SELECTOR16(has), // pushi $202 (has)
0x78, // push1
- 0x39, 0x0e, // pushi 0Eh
+ 0x39, 0x0e, // pushi $e
0x81, 0x00, // lag global[0]
- 0x4a, 0x06, 0x00, // send 06 - GKEgo::has(0Eh)
+ 0x4a, SIG_UINT16(0x06), // send 6 - GKEgo::has($e)
0x18, // not
- 0x30, SIG_UINT16(0x0025), // bnt [veve newspaper code]
+ 0x30, SIG_UINT16(0x25), // bnt [veve newspaper code]
SIG_END
};
-static const uint16 gk1PatchDay5DrumBookDialogue[] = {
+static const uint16 gk1Day5DrumBookDialoguePatch[] = {
0x31, 0x0d, // bnt [skip giving player drum book code] adjusted
PATCH_ADDTOOFFSET(+11), // skip give player drum book original code
0x33, 0x0D, // jmp [over the check inventory for drum book code]
// check inventory for drum book
- 0x38, SIG_UINT16(0x0202), // pushi 0202h
+ 0x38, PATCH_SELECTOR16(has), // pushi $202 (has)
0x78, // push1
- 0x39, 0x0e, // pushi 0Eh
+ 0x39, 0x0e, // pushi $e
0x81, 0x00, // lag global[0]
- 0x4a, 0x06, 0x00, // send 06 - GKEgo::has(0Eh)
+ 0x4a, PATCH_UINT16(0x06), // send 6 - GKEgo::has($e)
0x2f, 0x23, // bt [veve newspaper code] (adjusted, saves 2 bytes)
PATCH_END
};
-// startOfDay5::changeState (20h) - when gabriel goes to the phone the script will hang
+// When Gabriel goes to the phone, the script softlocks at
+// `startOfDay5::changeState(32)`.
// Applies to at least: English PC-CD, German PC-CD, English Mac
-// Responsible method: startOfDay5::changeState
-static const uint16 gk1SignatureDay5PhoneFreeze[] = {
- 0x4a,
- SIG_MAGICDWORD, SIG_UINT16(0x000c), // send 0c
- 0x35, 0x03, // ldi 03
- 0x65, SIG_ADDTOOFFSET(+1), // aTop cycles
- 0x32, SIG_ADDTOOFFSET(+2), // jmp [end]
- 0x3c, // dup
- 0x35, 0x21, // ldi 21
+static const uint16 gk1Day5PhoneFreezeSignature[] = {
+ 0x4a, // send ...
+ SIG_MAGICDWORD, SIG_UINT16(0x0c), // ... $c
+ 0x35, 0x03, // ldi 3
+ 0x65, SIG_ADDTOOFFSET(+1), // aTop cycles
+ 0x32, SIG_ADDTOOFFSET(+2), // jmp [end]
+ 0x3c, // dup
+ 0x35, 0x21, // ldi $21
SIG_END
};
-static const uint16 gk1PatchDay5PhoneFreeze[] = {
- PATCH_ADDTOOFFSET(+3),
- 0x35, 0x06, // ldi 01
+static const uint16 gk1Day5PhoneFreezePatch[] = {
+ PATCH_ADDTOOFFSET(+3), // send $c
+ 0x35, 0x06, // ldi 1
0x65, PATCH_GETORIGINALBYTEADJUST(+6, +6), // aTop ticks
PATCH_END
};
-// Floppy version: Interrogation::dispose() compares an object reference
-// (stored in the view selector) with a number, leading to a crash (this kind
-// of comparison was not used in SCI32). The view selector is used to store
-// both a view number (in some cases), and a view reference (in other cases).
-// In the floppy version, the checks are in the wrong order, so there is a
-// comparison between a number an an object. In the CD version, the checks are
-// in the correct order, thus the comparison is correct, thus we use the code
-// from the CD version in the floppy one.
+// When Gabriel is grabbing a vine 'vineSwing::changeState(1)',
+// him saying "I can't believe I'm doing this..." is cut off.
+// We change it so the scripts wait for the audio.
+// This is not supposed to be applied to the Floppy version.
+//
+// Applies to at lesat: English PC-CD, German PC-CD, Spanish PC-CD
+static const uint16 gk1Day9VineSwingSignature[] = {
+ 0x38, SIG_UINT16(4), // pushi $4
+ 0x51, 0x17, // class CT
+ 0x36, // push
+ 0x39, 0x0b, // pushi $b
+ 0x78, // push1
+ 0x7c, // pushSelf
+ 0x81, 0x00, // lag global[$0]
+ 0x4a, SIG_UINT16(0x20), // send $20
+ 0x38, SIG_SELECTOR16(setMotion), // pushi setMotion
+ 0x78, // push1
+ 0x76, // push0
+ 0x72, SIG_UINT16(0x0412), // lofsa guard1
+ 0x4a, SIG_UINT16(0x06), // send $6
+ 0x38, SIG_SELECTOR16(say), // pushi say
+ 0x38, SIG_UINT16(0x04), // pushi $4
+ SIG_MAGICDWORD,
+ 0x39, 0x07, // pushi $7
+ 0x39, 0x08, // pushi $8
+ 0x39, 0x10, // pushi $10
+ 0x78, // push1
+ 0x81, 0x5b, // lsg global[$5b]
+ 0x4a, SIG_UINT16(0x000c), // send $c
+ SIG_END
+};
+
+static const uint16 gk1Day9VineSwingPatch[] = {
+ 0x38, SIG_UINT16(3), // pushi $3
+ 0x51, 0x17, // class CT
+ 0x36, // push
+ 0x39, 0x0b, // pushi $b
+ 0x78, // push1
+ 0x81, 0x00, // lag global[$0]
+ 0x4a, SIG_UINT16(0x1e), // send $20
+ 0x38, SIG_SELECTOR16(setMotion), // pushi setMotion
+ 0x78, // push1
+ 0x76, // push0
+ 0x72, SIG_UINT16(0x0412), // lofsa guard1
+ 0x4a, SIG_UINT16(0x06), // send $6
+ 0x38, SIG_SELECTOR16(say), // pushi say
+ 0x38, SIG_UINT16(0x05), // pushi $5
+ 0x39, 0x07, // pushi $7
+ 0x39, 0x08, // pushi $8
+ 0x39, 0x10, // pushi $10
+ 0x78, // push1
+ 0x7c, // pushSelf
+ 0x81, 0x5b, // lsg global[$5b]
+ 0x4a, SIG_UINT16(0x000e), // send $c
+ PATCH_END
+};
+
+
+// In GK1, the `view` selector is used to store view numbers in some cases and
+// object references to Views in other cases. `Interrogation::dispose` compares
+// an object stored in the `view` selector with a number (which is not valid)
+// because its checks are in the wrong order. The check order was fixed in the
+// CD version, so just do what the CD version does.
// Applies to at least: English Floppy
-// Responsible method: Interrogation::dispose
-// TODO: Check, if English Mac is affected too and if this patch applies
-static const uint16 gk1SignatureInterrogationBug[] = {
+// TODO: Check if English Mac is affected too and if this patch applies
+static const uint16 gk1InterrogationBugSignature[] = {
SIG_MAGICDWORD,
- 0x65, 0x4c, // aTop 4c
- 0x67, 0x50, // pTos 50
- 0x34, SIG_UINT16(0x2710), // ldi 2710
+ 0x65, 0x4c, // aTop $4c
+ 0x67, 0x50, // pTos $50
+ 0x34, SIG_UINT16(0x2710), // ldi $2710
0x1e, // gt?
- 0x31, 0x08, // bnt 08 [05a0]
- 0x67, 0x50, // pTos 50
- 0x34, SIG_UINT16(0x2710), // ldi 2710
+ 0x31, 0x08, // bnt 8 [05a0]
+ 0x67, 0x50, // pTos $50
+ 0x34, SIG_UINT16(0x2710), // ldi $2710
0x04, // sub
- 0x65, 0x50, // aTop 50
- 0x63, 0x50, // pToa 50
- 0x31, 0x15, // bnt 15 [05b9]
- 0x39, 0x0e, // pushi 0e
+ 0x65, 0x50, // aTop $50
+ 0x63, 0x50, // pToa $50
+ 0x31, 0x15, // bnt $15 [05b9]
+ 0x39, SIG_SELECTOR8(view), // pushi $e (view)
0x76, // push0
- 0x4a, SIG_UINT16(0x0004), // send 0004
- 0xa5, 0x00, // sat 00
+ 0x4a, SIG_UINT16(0x04), // send 4
+ 0xa5, 0x00, // sat 0
0x38, SIG_SELECTOR16(dispose), // pushi dispose
0x76, // push0
- 0x63, 0x50, // pToa 50
- 0x4a, SIG_UINT16(0x0004), // send 0004
- 0x85, 0x00, // lat 00
- 0x65, 0x50, // aTop 50
+ 0x63, 0x50, // pToa $50
+ 0x4a, SIG_UINT16(0x04), // send 4
+ 0x85, 0x00, // lat 0
+ 0x65, 0x50, // aTop $50
SIG_END
};
-static const uint16 gk1PatchInterrogationBug[] = {
- 0x65, 0x4c, // aTop 4c
- 0x63, 0x50, // pToa 50
- 0x31, 0x15, // bnt 15 [05b9]
- 0x39, 0x0e, // pushi 0e
+static const uint16 gk1InterrogationBugPatch[] = {
+ 0x65, 0x4c, // aTop $4c
+ 0x63, 0x50, // pToa $50
+ 0x31, 0x15, // bnt $15 [05b9]
+ 0x39, PATCH_SELECTOR8(view), // pushi $e (view)
0x76, // push0
- 0x4a, 0x04, 0x00, // send 0004
+ 0x4a, PATCH_UINT16(0x04), // send 4
0xa5, 0x00, // sat 00
0x38, PATCH_SELECTOR16(dispose), // pushi dispose
0x76, // push0
- 0x63, 0x50, // pToa 50
- 0x4a, 0x04, 0x00, // send 0004
- 0x85, 0x00, // lat 00
- 0x65, 0x50, // aTop 50
- 0x67, 0x50, // pTos 50
- 0x34, PATCH_UINT16(0x2710), // ldi 2710
+ 0x63, 0x50, // pToa $50
+ 0x4a, PATCH_UINT16(0x04), // send 4
+ 0x85, 0x00, // lat 0
+ 0x65, 0x50, // aTop $50
+ 0x67, 0x50, // pTos $50
+ 0x34, PATCH_UINT16(0x2710), // ldi $2710
0x1e, // gt?
- 0x31, 0x08, // bnt 08 [05b9]
- 0x67, 0x50, // pTos 50
- 0x34, PATCH_UINT16(0x2710), // ldi 2710
+ 0x31, 0x08, // bnt 8 [05b9]
+ 0x67, 0x50, // pTos $50
+ 0x34, PATCH_UINT16(0x2710), // ldi $2710
0x04, // sub
- 0x65, 0x50, // aTop 50
- PATCH_END
-};
-
-// On day 10 nearly at the end of the game, Gabriel Knight dresses up and right after that
-// someone will be at the door. Gabriel turns around to see what's going on.
-//
-// In ScummVM Gabriel turning around plays endlessly. This is caused by the loop of Gabriel
-// being kept at 1, but view + cel were changed accordingly. The view used - which is view 859 -
-// does not have a loop 1. kNumCels is called on that, BUT kNumCels in SSCI is broken in that
-// regard. It checks for loop > count and not loop >= count and will return basically random data
-// in case loop == count.
-//
-// In SSCI this simply worked by accident. kNumCels returned 0x53 in this case, but later script code
-// fixed that up somehow, so it worked out in the end.
-//
-// The setup for this is done in SDJEnters::changeState(0). The cycler will never reach the goal
-// because the goal will be cel -1, so it loops endlessly.
-//
-// We fix this by adding a setLoop(0).
-//
-// Applies to at least: English PC-CD, German PC-CD
-// Responsible method: sDJEnters::changeState
-static const uint16 gk1SignatureDay10GabrielDressUp[] = {
- 0x87, 0x01, // lap param[1]
- 0x65, 0x14, // aTop state
- 0x36, // push
- 0x3c, // dup
- 0x35, 0x00, // ldi 0
- 0x1a, // eq?
- 0x30, SIG_UINT16(0x006f), // bnt [next state 1]
- SIG_ADDTOOFFSET(+84),
- 0x39, 0x0e, // pushi 0Eh (view)
- 0x78, // push1
- SIG_MAGICDWORD,
- 0x38, SIG_UINT16(0x035B), // pushi 035Bh (859d)
- 0x38, SIG_UINT16(0x0141), // pushi 0141h (setCel)
- 0x78, // push1
- 0x76, // push0
- 0x38, SIG_UINT16(0x00E9), // pushi 00E9h (setCycle)
- 0x7a, // push2
- 0x51, 0x18, // class End
- 0x36, // push
- 0x7c, // pushSelf
- 0x81, 0x00, // lag global[0]
- 0x4a, 0x14, 0x00, // send 14h
- // GKEgo::view(859)
- // GKEgo::setCel(0)
- // GKEgo::setCycle(End, sDJEnters)
- 0x32, SIG_UINT16(0x0233), // jmp [ret]
- // next state
- 0x3c, // dup
- 0x35, 0x01, // ldi 01
- 0x1a, // eq?
- 0x31, 0x07, // bnt [next state 2]
- 0x35, 0x02, // ldi 02
- 0x65, 0x1a, // aTop cycles
- 0x32, SIG_UINT16(0x0226), // jmp [ret]
- // next state
- 0x3c, // dup
- 0x35, 0x02, // ldi 02
- 0x1a, // eq?
- 0x31, 0x2a, // bnt [next state 3]
- 0x78, // push1
- SIG_ADDTOOFFSET(+34),
- // part of state 2 code, delays for 1 cycle
- 0x35, 0x01, // ldi 1
- 0x65, 0x1a, // aTop cycles
- SIG_END
-};
-
-static const uint16 gk1PatchDay10GabrielDressUp[] = {
- PATCH_ADDTOOFFSET(+9),
- 0x30, SIG_UINT16(0x0073), // bnt [next state 1] - offset adjusted
- SIG_ADDTOOFFSET(+84 + 11),
- // added by us: setting loop to 0 (5 bytes needed)
- 0x38, SIG_UINT16(0x00FB), // pushi 00FBh (setLoop)
- 0x78, // push1
- 0x76, // push0
- // original code, but offset changed
- 0x38, SIG_UINT16(0x00E9), // pushi 00E9h (setCycle)
- 0x7a, // push2
- 0x51, 0x18, // class End
- 0x36, // push
- 0x7c, // pushSelf
- 0x81, 0x00, // lag global[0]
- 0x4a, 0x1a, 0x00, // send 1Ah - adjusted
- // GKEgo::view(859)
- // GKEgo::setCel(0)
- // GKEgo::setLoop(0) <-- new, by us
- // GKEgo::setCycle(End, sDJEnters)
- // end of original code
- 0x3a, // toss
- 0x48, // ret (saves 1 byte)
- // state 1 code
- 0x3c, // dup
- 0x34, SIG_UINT16(0x0001), // ldi 0001 (waste 1 byte)
- 0x1a, // eq?
- 0x31, 2, // bnt [next state 2]
- 0x33, 41, // jmp to state 2 delay code
- SIG_ADDTOOFFSET(+41),
- // wait 2 cycles instead of only 1
- 0x35, 0x02, // ldi 2
+ 0x65, 0x50, // aTop $50
PATCH_END
};
// script, description, signature patch
static const SciScriptPatcherEntry gk1Signatures[] = {
- { true, 51, "interrogation bug", 1, gk1SignatureInterrogationBug, gk1PatchInterrogationBug },
- { true, 212, "day 5 drum book dialogue error", 1, gk1SignatureDay5DrumBookDialogue, gk1PatchDay5DrumBookDialogue },
- { true, 212, "day 5 phone freeze", 1, gk1SignatureDay5PhoneFreeze, gk1PatchDay5PhoneFreeze },
- { true, 230, "day 6 police beignet timer issue 1/2", 1, gk1SignatureDay6PoliceBeignet1, gk1PatchDay6PoliceBeignet1 },
- { true, 230, "day 6 police beignet timer issue 2/2", 1, gk1SignatureDay6PoliceBeignet2, gk1PatchDay6PoliceBeignet2 },
- { true, 230, "day 6 police sleep timer issue", 1, gk1SignatureDay6PoliceSleep, gk1PatchDay6PoliceSleep },
- { true, 808, "day 10 gabriel dress up infinite turning", 1, gk1SignatureDay10GabrielDressUp, gk1PatchDay10GabrielDressUp },
+ { true, 51, "fix interrogation bug", 1, gk1InterrogationBugSignature, gk1InterrogationBugPatch },
+ { true, 212, "fix day 5 drum book dialogue error", 1, gk1Day5DrumBookDialogueSignature, gk1Day5DrumBookDialoguePatch },
+ { true, 212, "fix day 5 phone softlock", 1, gk1Day5PhoneFreezeSignature, gk1Day5PhoneFreezePatch },
+ { true, 230, "fix day 6 police beignet timer issue (1/2)", 1, gk1Day6PoliceBeignetSignature1, gk1Day6PoliceBeignetPatch1 },
+ { true, 230, "fix day 6 police beignet timer issue (2/2)", 1, gk1Day6PoliceBeignetSignature2, gk1Day6PoliceBeignetPatch2 },
+ { true, 230, "fix day 6 police sleep timer issue", 1, gk1Day6PoliceSleepSignature, gk1Day6PoliceSleepPatch },
+ { true, 710, "fix day 9 vine swing speech playing", 1, gk1Day9VineSwingSignature, gk1Day9VineSwingPatch },
{ true, 64908, "disable video benchmarking", 1, sci2BenchmarkSignature, sci2BenchmarkPatch },
- { true, 64990, "increase number of save games", 1, sci2NumSavesSignature1, sci2NumSavesPatch1 },
- { true, 64990, "increase number of save games", 1, sci2NumSavesSignature2, sci2NumSavesPatch2 },
+ { true, 64990, "increase number of save games (1/2)", 1, sci2NumSavesSignature1, sci2NumSavesPatch1 },
+ { true, 64990, "increase number of save games (2/2)", 1, sci2NumSavesSignature2, sci2NumSavesPatch2 },
{ true, 64990, "disable change directory button", 1, sci2ChangeDirSignature, sci2ChangeDirPatch },
SCI_SIGNATUREENTRY_TERMINATOR
};
@@ -1208,10 +1200,9 @@ static const SciScriptPatcherEntry gk1Signatures[] = {
// The down scroll button in GK2 jumps up a pixel on mousedown because there is
// a send to scrollSelections using an immediate value 1, which means to scroll
// up by 1 pixel. This patch fixes the send to scrollSelections by passing the
-// button's delta instead of 1.
+// button's delta instead of 1 in 'ScrollButton::track'.
//
// Applies to at least: English CD 1.00, English Steam 1.01
-// Responsible method: ScrollButton::track
static const uint16 gk2InvScrollSignature[] = {
0x7e, SIG_ADDTOOFFSET(2), // line whatever
SIG_MAGICDWORD,
@@ -1219,7 +1210,7 @@ static const uint16 gk2InvScrollSignature[] = {
0x78, // push1
0x78, // push1
0x63, 0x98, // pToa $98
- 0x4a, SIG_UINT16(0x06), // send $6
+ 0x4a, SIG_UINT16(0x06), // send 6
SIG_END
};
@@ -1228,13 +1219,13 @@ static const uint16 gk2InvScrollPatch[] = {
0x78, // push1
0x67, 0x9a, // pTos $9a (delta)
0x63, 0x98, // pToa $98
- 0x4a, PATCH_UINT16(0x06), // send $6
+ 0x4a, PATCH_UINT16(0x06), // send 6
0x18, 0x18, // waste bytes
PATCH_END
};
-// The init code that runs when GK2 starts up unconditionally resets the
-// music volume to 63, but the game should always use the volume stored in
+// The init code 'GK2::init' that runs when GK2 starts up unconditionally resets
+// the music volume to 63, but the game should always use the volume stored in
// ScummVM.
// Applies to at least: English 1.00 CD
static const uint16 gk2VolumeResetSignature[] = {
@@ -1249,8 +1240,9 @@ static const uint16 gk2VolumeResetPatch[] = {
PATCH_END
};
-// GK2 has custom video benchmarking code that needs to be disabled; see
-// sci2BenchmarkSignature
+// GK2 has custom video benchmarking code that needs to be disabled in a subroutine
+// which is called from 'GK2::init'; see sci2BenchmarkSignature
+// TODO: Patch is not applied to localized versions and needs to get adjusted
static const uint16 gk2BenchmarkSignature[] = {
0x7e, SIG_ADDTOOFFSET(+2), // line
0x38, SIG_SELECTOR16(new), // pushi new
@@ -1260,7 +1252,7 @@ static const uint16 gk2BenchmarkSignature[] = {
0xa5, 0x00, // sat 0
0x7e, SIG_ADDTOOFFSET(+2), // line
0x7e, SIG_ADDTOOFFSET(+2), // line
- 0x39, 0x0e, // pushi $e
+ 0x39, SIG_SELECTOR8(view), // pushi $e (view)
SIG_MAGICDWORD,
0x78, // push1
0x38, SIG_UINT16(0xfdd4), // pushi 64980
@@ -1282,9 +1274,9 @@ static const uint16 gk2BenchmarkPatch[] = {
static const SciScriptPatcherEntry gk2Signatures[] = {
{ true, 0, "disable volume reset on startup", 1, gk2VolumeResetSignature, gk2VolumeResetPatch },
{ true, 0, "disable video benchmarking", 1, gk2BenchmarkSignature, gk2BenchmarkPatch },
- { true, 23, "inventory starts scroll down in the wrong direction", 1, gk2InvScrollSignature, gk2InvScrollPatch },
- { true, 64990, "increase number of save games", 1, sci2NumSavesSignature1, sci2NumSavesPatch1 },
- { true, 64990, "increase number of save games", 1, sci2NumSavesSignature2, sci2NumSavesPatch2 },
+ { true, 23, "fix inventory scroll start direction", 1, gk2InvScrollSignature, gk2InvScrollPatch },
+ { true, 64990, "increase number of save games (1/2)", 1, sci2NumSavesSignature1, sci2NumSavesPatch1 },
+ { true, 64990, "increase number of save games (2/2)", 1, sci2NumSavesSignature2, sci2NumSavesPatch2 },
{ true, 64990, "disable change directory button", 1, sci2ChangeDirSignature, sci2ChangeDirPatch },
SCI_SIGNATUREENTRY_TERMINATOR
};
@@ -2079,167 +2071,150 @@ static const SciScriptPatcherEntry kq6Signatures[] = {
#pragma mark -
#pragma mark Kings Quest 7
-// ===========================================================================
-
-// King's Quest 7 has really weird subtitles. It seems as if the subtitles were
-// not fully finished.
+// KQ7's subtitles were left unfinished in the shipped game, so there are
+// several problems when enabling them from the ScummVM launcher:
//
-// Method kqMessager::findTalker in script 0 tries to figure out, which class to use for
-// displaying subtitles. It uses the "talker" data of the given message to do that.
-// Strangely this "talker" data seems to be quite broken.
-// For example chapter 2 starts with a cutscene.
-// Troll king: "Welcome, most beautiful of princesses!" - talker 6
-// Which is followed by the princess going
-// "Hmm?" - which is set to talker 99, normally the princess is talker 7.
+// 1. `kqMessager::findTalker` tries to determine which class to use for
+// displaying subtitles using the talker number of each message, but the
+// talker data is often bogus (e.g. princess messages normally use talker 7,
+// but talker 99 (which is for the narrator) is used for her messages at the
+// start of chapter 2), so it can't be used.
+// 2. Some display classes render subtitles at the top or middle of the game
+// area, blocking the view of what is on the screen.
+// 3. In some areas, the colors of the subtitles are changed arbitrarily (e.g.
+// pink/purple at the start of chapter 2).
//
-// Talker 99 is seen as unknown and thus treated as "narrator", which makes
-// the scripts put the text at the top of the game screen and even use a
-// different font.
+// To work around these problems, we always use KQTalker, force the text area to
+// the bottom of the game area, and force it to always use black & white, which
+// are guaranteed to not be changed by game scripts.
//
-// In other cases, when the player character thinks to himself talker 99
-// is also used. In such situations it may make somewhat sense to do so,
-// but putting the text at the top of the screen is also irritating to the player.
-// It's really weird.
-//
-// The scripts also put the regular text in the middle of the screen, blocking
-// animations.
-//
-// And for certain rooms, the subtitle box may use another color
-// like for example pink/purple at the start of chapter 5.
-//
-// We fix all of that (hopefully - lots of testing is required).
-// We put the text at the bottom of the play screen.
-// We also make the scripts use the regular KQTalker instead of KQNarrator.
-// And we also make the subtitle box use color 255, which is fixed white.
+// We make 2 changes to KQNarrator::init and one to Narrator::say.
//
// Applies to at least: PC CD 1.4 English, 1.51 English, 1.51 German, 2.00 English
-// Patched method: KQNarrator::init (script 31)
-static const uint16 kq7SignatureSubtitleFix1[] = {
+static const uint16 kq7SubtitleFixSignature1[] = {
SIG_MAGICDWORD,
- 0x39, 0x25, // pushi 25h (fore)
- 0x78, // push1
- 0x39, 0x06, // pushi 06 - sets back to 6
- 0x39, 0x26, // pushi 26 (back)
- 0x78, // push1
- 0x78, // push1 - sets back to 1
- 0x39, 0x2a, // pushi 2Ah (font)
- 0x78, // push1
- 0x89, 0x16, // lsg global[16h] - sets font to global[16h]
- 0x7a, // push2 (y)
- 0x78, // push1
- 0x76, // push0 - sets y to 0
- 0x54, SIG_UINT16(0x0018), // self 18h
+ 0x39, SIG_SELECTOR8(fore), // pushi $25 (fore)
+ 0x78, // push1
+ 0x39, 0x06, // pushi 6 - sets fore to 6
+ 0x39, SIG_SELECTOR8(back), // pushi $26 (back)
+ 0x78, // push1
+ 0x78, // push1 - sets back to 1
+ 0x39, SIG_SELECTOR8(font), // pushi $2a (font)
+ 0x78, // push1
+ 0x89, 0x16, // lsg global[$16] - sets font to global[$16]
+ 0x7a, // push2 (y)
+ 0x78, // push1
+ 0x76, // push0 - sets y to 0
+ 0x54, SIG_UINT16(0x18), // self $18
SIG_END
};
-static const uint16 kq7PatchSubtitleFix1[] = {
- 0x33, 0x12, // jmp [skip special init code]
+static const uint16 kq7SubtitleFixPatch1[] = {
+ 0x33, 0x12, // jmp [skip special init code]
PATCH_END
};
// Applies to at least: PC CD 1.51 English, 1.51 German, 2.00 English
-// Patched method: Narrator::init (script 64928)
-static const uint16 kq7SignatureSubtitleFix2[] = {
+static const uint16 kq7SubtitleFixSignature2[] = {
SIG_MAGICDWORD,
- 0x89, 0x5a, // lsg global[5a]
- 0x35, 0x02, // ldi 02
+ 0x89, 0x5a, // lsg global[$5a]
+ 0x35, 0x02, // ldi 2
0x12, // and
0x31, 0x1e, // bnt [skip audio volume code]
- 0x38, SIG_ADDTOOFFSET(+2), // pushi masterVolume (0212h for 2.00, 0219h for 1.51)
+ 0x38, SIG_SELECTOR16(masterVolume), // pushi masterVolume (0212h for 2.00, 0219h for 1.51)
0x76, // push0
0x81, 0x01, // lag global[1]
- 0x4a, 0x04, 0x00, // send 04
+ 0x4a, SIG_UINT16(0x04), // send 4
0x65, 0x32, // aTop curVolume
- 0x38, SIG_ADDTOOFFSET(+2), // pushi masterVolume (0212h for 2.00, 0219h for 1.51)
+ 0x38, SIG_SELECTOR16(masterVolume), // pushi masterVolume (0212h for 2.00, 0219h for 1.51)
0x78, // push1
0x67, 0x32, // pTos curVolume
- 0x35, 0x02, // ldi 02
+ 0x35, 0x02, // ldi 2
0x06, // mul
0x36, // push
- 0x35, 0x03, // ldi 03
+ 0x35, 0x03, // ldi 3
0x08, // div
0x36, // push
0x81, 0x01, // lag global[1]
- 0x4a, 0x06, 0x00, // send 06
+ 0x4a, SIG_UINT16(0x06), // send 6
// end of volume code
- 0x35, 0x01, // ldi 01
+ 0x35, 0x01, // ldi 1
0x65, 0x28, // aTop initialized
SIG_END
};
-static const uint16 kq7PatchSubtitleFix2[] = {
- PATCH_ADDTOOFFSET(+5), // skip to bnt
- 0x31, 0x1b, // bnt [skip audio volume code]
- PATCH_ADDTOOFFSET(+15), // right after "aTop curVolume / pushi masterVolume / push1"
- 0x7a, // push2
- 0x06, // mul (saves 3 bytes in total)
- 0x36, // push
- 0x35, 0x03, // ldi 03
- 0x08, // div
- 0x36, // push
- 0x81, 0x01, // lag global[1]
- 0x4a, 0x06, 0x00, // send 06
+static const uint16 kq7SubtitleFixPatch2[] = {
+ PATCH_ADDTOOFFSET(+5), // skip to bnt
+ 0x31, 0x1b, // bnt [skip audio volume code]
+ PATCH_ADDTOOFFSET(+15), // right after "aTop curVolume / pushi masterVolume / push1"
+ 0x7a, // push2
+ 0x06, // mul (saves 3 bytes in total)
+ 0x36, // push
+ 0x35, 0x03, // ldi 3
+ 0x08, // div
+ 0x36, // push
+ 0x81, 0x01, // lag global[1]
+ 0x4a, PATCH_UINT16(0x06), // send 6
// end of volume code
- 0x35, 118, // ldi 118d
- 0x65, 0x16, // aTop y
- 0x78, // push1 (saves 1 byte)
- 0x69, 0x28, // sTop initialized
+ 0x35, 0x76, // ldi 118
+ 0x65, 0x16, // aTop y
+ 0x78, // push1 (saves 1 byte)
+ 0x69, 0x28, // sTop initialized
PATCH_END
};
// Applies to at least: PC CD 1.51 English, 1.51 German, 2.00 English
-// Patched method: Narrator::say (script 64928)
-static const uint16 kq7SignatureSubtitleFix3[] = {
+static const uint16 kq7SubtitleFixSignature3[] = {
SIG_MAGICDWORD,
- 0x63, 0x28, // pToa initialized
- 0x18, // not
- 0x31, 0x07, // bnt [skip init code]
- 0x38, SIG_ADDTOOFFSET(+2), // pushi init (008Eh for 2.00, 0093h for 1.51)
- 0x76, // push0
- 0x54, SIG_UINT16(0x0004), // self 04
+ 0x63, 0x28, // pToa initialized
+ 0x18, // not
+ 0x31, 0x07, // bnt [skip init code]
+ 0x38, SIG_SELECTOR16(init), // pushi init ($8e for 2.00, $93 for 1.51)
+ 0x76, // push0
+ 0x54, SIG_UINT16(0x04), // self 4
// end of init code
- 0x8f, 0x00, // lsp param[0]
- 0x35, 0x01, // ldi 01
- 0x1e, // gt?
- 0x31, 0x08, // bnt [set acc to 0]
- 0x87, 0x02, // lap param[2]
- 0x31, 0x04, // bnt [set acc to 0]
- 0x87, 0x02, // lap param[2]
- 0x33, 0x02, // jmp [over set acc to 0 code]
- 0x35, 0x00, // ldi 00
- 0x65, 0x18, // aTop caller
- SIG_END
-};
-
-static const uint16 kq7PatchSubtitleFix3[] = {
- PATCH_ADDTOOFFSET(+2), // skip over "pToa initialized code"
- 0x2f, 0x0c, // bt [skip init code] - saved 1 byte
+ 0x8f, 0x00, // lsp param[0]
+ 0x35, 0x01, // ldi 1
+ 0x1e, // gt?
+ 0x31, 0x08, // bnt [set acc to 0]
+ 0x87, 0x02, // lap param[2]
+ 0x31, 0x04, // bnt [set acc to 0]
+ 0x87, 0x02, // lap param[2]
+ 0x33, 0x02, // jmp [over set acc to 0 code]
+ 0x35, 0x00, // ldi 00
+ 0x65, 0x18, // aTop caller
+ SIG_END
+};
+
+static const uint16 kq7SubtitleFixPatch3[] = {
+ PATCH_ADDTOOFFSET(+2), // skip over "pToa initialized code"
+ 0x2f, 0x0c, // bt [skip init code] - saved 1 byte
0x38,
- PATCH_GETORIGINALUINT16(+6), // pushi (init)
- 0x76, // push0
- 0x54, PATCH_UINT16(0x0004), // self 04
+ PATCH_GETORIGINALUINT16(+6), // pushi (init)
+ 0x76, // push0
+ 0x54, PATCH_UINT16(0x04), // self 4
// additionally set background color here (5 bytes)
- 0x34, PATCH_UINT16(255), // pushi 255d
- 0x65, 0x2e, // aTop back
+ 0x34, PATCH_UINT16(0xFF), // pushi 255
+ 0x65, 0x2e, // aTop back
// end of init code
- 0x8f, 0x00, // lsp param[0]
- 0x35, 0x01, // ldi 01 - this may get optimized to get another byte
- 0x1e, // gt?
- 0x31, 0x04, // bnt [set acc to 0]
- 0x87, 0x02, // lap param[2]
- 0x2f, 0x02, // bt [over set acc to 0 code]
+ 0x8f, 0x00, // lsp param[0]
+ 0x35, 0x01, // ldi 1 - this may get optimized to get another byte
+ 0x1e, // gt?
+ 0x31, 0x04, // bnt [set acc to 0]
+ 0x87, 0x02, // lap param[2]
+ 0x2f, 0x02, // bt [over set acc to 0 code]
PATCH_END
};
-// KQ7 has custom video benchmarking code that needs to be disabled; see
-// sci2BenchmarkSignature
+// KQ7 has custom video benchmarking code that needs to be disabled in a subroutine
+// that is called by KQ7CD::init; see sci2BenchmarkSignature
static const uint16 kq7BenchmarkSignature[] = {
0x38, SIG_SELECTOR16(new), // pushi new
0x76, // push0
0x51, SIG_ADDTOOFFSET(+1), // class Actor
0x4a, SIG_UINT16(0x04), // send 4
0xa5, 0x00, // sat 0
- 0x39, 0x0e, // pushi $e
+ 0x39, SIG_SELECTOR8(view), // pushi $e (view)
SIG_MAGICDWORD,
0x78, // push1
0x38, SIG_UINT16(0xfdd4), // pushi 64980
@@ -2254,9 +2229,9 @@ static const uint16 kq7BenchmarkPatch[] = {
// When attempting to use an inventory item on an object that does not interact
// with that item, the game temporarily displays an X cursor, but does this by
-// spinning for 90000 cycles, which make the duration dependent on CPU speed,
-// maxes out the CPU for no reason, and keeps the engine from polling for events
-// (which may make the window appear nonresponsive to the OS)
+// spinning for 90000 cycles inside 'KQ7CD::pragmaFail', which make the duration
+// dependent on CPU speed, maxes out the CPU for no reason, and keeps the engine
+// from polling for events (which may make the window appear nonresponsive to the OS)
// Applies to at least: KQ7 English 2.00b
static const uint16 kq7PragmaFailSpinSignature[] = {
0x35, 0x00, // ldi 0
@@ -2280,9 +2255,9 @@ static const uint16 kq7PragmaFailSpinPatch[] = {
static const SciScriptPatcherEntry kq7Signatures[] = {
{ true, 0, "disable video benchmarking", 1, kq7BenchmarkSignature, kq7BenchmarkPatch },
{ true, 0, "remove hardcoded spinloop", 1, kq7PragmaFailSpinSignature, kq7PragmaFailSpinPatch },
- { true, 31, "subtitle fix 1/3", 1, kq7SignatureSubtitleFix1, kq7PatchSubtitleFix1 },
- { true, 64928, "subtitle fix 2/3", 1, kq7SignatureSubtitleFix2, kq7PatchSubtitleFix2 },
- { true, 64928, "subtitle fix 3/3", 1, kq7SignatureSubtitleFix3, kq7PatchSubtitleFix3 },
+ { true, 31, "enable subtitles (1/3)", 1, kq7SubtitleFixSignature1, kq7SubtitleFixPatch1 },
+ { true, 64928, "enable subtitles (2/3)", 1, kq7SubtitleFixSignature2, kq7SubtitleFixPatch2 },
+ { true, 64928, "enable subtitles (3/3)", 1, kq7SubtitleFixSignature3, kq7SubtitleFixPatch3 },
SCI_SIGNATUREENTRY_TERMINATOR
};
@@ -2310,8 +2285,8 @@ static const uint16 lighthouseFlagResetPatch[] = {
// script, description, signature patch
static const SciScriptPatcherEntry lighthouseSignatures[] = {
{ true, 5, "fix bad globals clear after credits", 1, lighthouseFlagResetSignature, lighthouseFlagResetPatch },
- { true, 64990, "increase number of save games", 1, sci2NumSavesSignature1, sci2NumSavesPatch1 },
- { true, 64990, "increase number of save games", 1, sci2NumSavesSignature2, sci2NumSavesPatch2 },
+ { true, 64990, "increase number of save games (1/2)", 1, sci2NumSavesSignature1, sci2NumSavesPatch1 },
+ { true, 64990, "increase number of save games (2/2)", 1, sci2NumSavesSignature2, sci2NumSavesPatch2 },
{ true, 64990, "disable change directory button", 1, sci2ChangeDirSignature, sci2ChangeDirPatch },
SCI_SIGNATUREENTRY_TERMINATOR
};
@@ -2627,16 +2602,16 @@ static const SciScriptPatcherEntry larry6Signatures[] = {
// In SSCI this did not do much because the first argument happened to be
// smaller than the y-position of `ego`, but in ScummVM the first argument is
// larger and so a debug message "y value less than vanishingY" is displayed.
-static const uint16 larry6HiresSignatureSetScale[] = {
+static const uint16 larry6HiresSetScaleSignature[] = {
SIG_MAGICDWORD,
- 0x38, SIG_UINT16(0x14b), // pushi 014b (setScale)
- 0x38, SIG_UINT16(0x05), // pushi 0005
- 0x51, 0x2c, // class 2c (Scaler)
+ 0x38, SIG_SELECTOR16(setScale), // pushi $14b (setScale)
+ 0x38, SIG_UINT16(0x05), // pushi 5
+ 0x51, 0x2c, // class 2c (Scaler)
SIG_END
};
-static const uint16 larry6HiresPatchSetScale[] = {
- 0x38, SIG_UINT16(0x14f), // pushi 014f (setScaler)
+static const uint16 larry6HiresSetScalePatch[] = {
+ 0x38, PATCH_SELECTOR16(setScaler), // pushi $14f (setScaler)
PATCH_END
};
@@ -2644,14 +2619,14 @@ static const uint16 larry6HiresPatchSetScale[] = {
// master music volume to 12 (and the volume dial to 11), but the game should
// always use the volume stored in ScummVM.
// Applies to at least: English CD
-static const uint16 larry6HiresSignatureVolumeReset[] = {
+static const uint16 larry6HiresVolumeResetSignature[] = {
SIG_MAGICDWORD,
0x35, 0x0b, // ldi $0b
0xa1, 0xc2, // sag $c2
SIG_END
};
-static const uint16 larry6HiresPatchVolumeReset[] = {
+static const uint16 larry6HiresVolumeResetPatch[] = {
0x32, PATCH_UINT16(1), // jmp 1 [past volume change]
PATCH_END
};
@@ -2659,11 +2634,11 @@ static const uint16 larry6HiresPatchVolumeReset[] = {
// script, description, signature patch
static const SciScriptPatcherEntry larry6HiresSignatures[] = {
{ true, 71, "disable volume reset on startup (1/2)", 1, sci2VolumeResetSignature, sci2VolumeResetPatch },
- { true, 71, "disable volume reset on startup (2/2)", 1, larry6HiresSignatureVolumeReset, larry6HiresPatchVolumeReset },
- { true, 270, "fix incorrect setScale call", 1, larry6HiresSignatureSetScale, larry6HiresPatchSetScale },
+ { true, 71, "disable volume reset on startup (2/2)", 1, larry6HiresVolumeResetSignature, larry6HiresVolumeResetPatch },
+ { true, 270, "fix incorrect setScale call", 1, larry6HiresSetScaleSignature, larry6HiresSetScalePatch },
{ true, 64908, "disable video benchmarking", 1, sci2BenchmarkSignature, sci2BenchmarkPatch },
- { true, 64990, "increase number of save games", 1, sci2NumSavesSignature1, sci2NumSavesPatch1 },
- { true, 64990, "increase number of save games", 1, sci2NumSavesSignature2, sci2NumSavesPatch2 },
+ { true, 64990, "increase number of save games (1/2)", 1, sci2NumSavesSignature1, sci2NumSavesPatch1 },
+ { true, 64990, "increase number of save games (2/2)", 1, sci2NumSavesSignature2, sci2NumSavesPatch2 },
{ true, 64990, "disable change directory button", 1, sci2ChangeDirSignature, sci2ChangeDirPatch },
SCI_SIGNATUREENTRY_TERMINATOR
};
@@ -2701,16 +2676,16 @@ static const uint16 larry7VolumeResetPatch1[] = {
// Applies to at least: English CD
static const uint16 larry7VolumeResetSignature2[] = {
SIG_MAGICDWORD,
- 0x38, SIG_UINT16(0x19d), // pushi readWord
- 0x76, // push0
- SIG_ADDTOOFFSET(6), // advance file stream
- 0xa1, 0xe3, // sag $e3 (music volume)
- SIG_ADDTOOFFSET(3), // line whatever
- SIG_ADDTOOFFSET(10), // advance file stream
- 0xa1, 0xe4, // sag $e4 (sfx volume)
- SIG_ADDTOOFFSET(3), // line whatever
- SIG_ADDTOOFFSET(10), // advance file stream
- 0xa1, 0xe5, // sag $e5 (speech volume)
+ 0x38, SIG_SELECTOR16(readWord), // pushi readWord
+ 0x76, // push0
+ SIG_ADDTOOFFSET(6), // advance file stream
+ 0xa1, 0xe3, // sag $e3 (music volume)
+ SIG_ADDTOOFFSET(3), // line whatever
+ SIG_ADDTOOFFSET(10), // advance file stream
+ 0xa1, 0xe4, // sag $e4 (sfx volume)
+ SIG_ADDTOOFFSET(3), // line whatever
+ SIG_ADDTOOFFSET(10), // advance file stream
+ 0xa1, 0xe5, // sag $e5 (speech volume)
SIG_END
};
@@ -2726,66 +2701,56 @@ static const uint16 larry7VolumeResetPatch2[] = {
PATCH_END
};
-// ===========================================================================
-// In room 540 of Leisure Suit Larry 7, Larry will use 4 items on a so called cheese maker.
-// A short cutscene will then play.
-// During that cutscene on state 6, an animation will get triggered via a special
-// cycler ("End", but from script 64041), that is capable of doing ::cues on specific cels.
-// The code of the state is broken and pushes the object itself as the 2nd cel to cue on.
-// This parameter gets later changed to last cel by CycleCueList::init.
-// Right now, we do not handle comparisons between references to objects and regular values like
-// SSCI, so this will need to get fixed too. But this script bug should also get fixed, because
-// otherwise it works just by accident.
+// In room 540 of Leisure Suit Larry 7, when using the cheese maker,
+// `soMakeCheese::changeState(6)` incorrectly pushes `self` as the end cel
+// instead of a cel number to the End cycler. In SSCI, this bad argument would
+// get corrected down to the final cel in the loop by `CycleCueList::init`, but
+// because ScummVM currently always sorts numbers higher than objects, the
+// comparison fails and the cel number is not corrected, so the cycler never
+// calls back and the game softlocks.
+// Here, we fix the call so a proper cel number is given for the second argument
+// instead of a bogus object pointer.
//
// Applies to at least: English PC-CD, German PC-CD
-// Responsible method: soMakeCheese::changeState(6) in script 540
-static const uint16 larry7SignatureMakeCheese[] = {
- 0x38, SIG_UINT16(4), // pushi 04
- 0x51, 0xc4, // class End
- 0x36, // push
+static const uint16 larry7MakeCheeseCyclerSignature[] = {
+ 0x38, SIG_UINT16(0x04), // pushi 4
+ 0x51, 0xc4, // class End
+ 0x36, // push
SIG_MAGICDWORD,
- 0x7c, // pushSelf
- 0x39, 0x04, // pushi 04
- 0x7c, // pushSelf
+ 0x7c, // pushSelf
+ 0x39, 0x04, // pushi 4
+ 0x7c, // pushSelf
SIG_END
};
-static const uint16 larry7PatchMakeCheese[] = {
- 0x39, 0x04, // pushi 04 - save 1 byte
- 0x51, 0xc4, // class End
- 0x36,
- 0x7c, // pushSelf
- 0x39, 0x04, // pushi 04
- 0x39, 0x10, // pushi 10h (last cel of view 54007, loop 0)
+static const uint16 larry7MakeCheeseCyclerPatch[] = {
+ 0x39, 0x04, // pushi 4 - save 1 byte
+ 0x51, 0xc4, // class End
+ 0x36, // push
+ 0x7c, // pushSelf
+ 0x39, 0x04, // pushi 4
+ 0x39, 0x10, // pushi $10 (last cel of view 54007, loop 0)
PATCH_END
};
-// ===========================================================================
-// During the same cheese maker cutscene as mentioned before, there is also
-// a little priority issue, which also happens in the original interpreter.
-// While Larry is pouring liquid into the cheese maker, he appears shortly right
-// in front of the guillotine instead of behind it.
-// This is caused by soMakeCheese::changeState(2) setting priority of ego to 500.
-// It is needed to change priority a bit, otherwise Larry would also appear behind the cheese
-// maker and that wouldn't make sense, but the cheese maker has a priority of only 373.
-//
-// This of course also happens, when using the original interpreter.
-//
-// We change this to set priority to 374, which works fine.
-//
+// During the cheese maker cutscene, `soMakeCheese::changeState(2)` sets the
+// priority of ego to 500 to draw him over the cheese maker, but this is also
+// above the guillotine (view 54000, cel 7, priority 400), so ego gets
+// incorrectly drawn on top of the guillotine as well. The cheese maker has a
+// priority of 373, so use priority 374 instead of 500.
// Applies to at least: English PC-CD, German PC-CD
// Responsible method: soMakeCheese::changeState(2) in script 540
-static const uint16 larry7SignatureMakeCheesePriority[] = {
+static const uint16 larry7MakeCheesePrioritySignature[] = {
0x38, SIG_SELECTOR16(setPri), // pushi (setPri)
SIG_MAGICDWORD,
0x78, // push1
- 0x38, SIG_UINT16(500), // pushi 1F4h (500d)
+ 0x38, SIG_UINT16(500), // pushi $1f4
SIG_END
};
-static const uint16 larry7PatchMakeCheesePriority[] = {
- PATCH_ADDTOOFFSET(+4),
- 0x38, PATCH_UINT16(374), // pushi 176h (374d)
+static const uint16 larry7MakeCheesePriorityPatch[] = {
+ PATCH_ADDTOOFFSET(+4), // pushi setPri, push1
+ 0x38, PATCH_UINT16(374), // pushi $176
PATCH_END
};
@@ -2811,10 +2776,10 @@ static const uint16 larry7MessageTypeResetPatch[] = {
// script, description, signature patch
static const SciScriptPatcherEntry larry7Signatures[] = {
{ true, 0, "disable message type reset on startup", 1, larry7MessageTypeResetSignature, larry7MessageTypeResetPatch },
- { true, 540, "fix make cheese cutscene (cycler)", 1, larry7SignatureMakeCheese, larry7PatchMakeCheese },
- { true, 540, "fix make cheese cutscene (priority)", 1, larry7SignatureMakeCheesePriority, larry7PatchMakeCheesePriority },
- { true, 64000, "disable volume reset on startup 1/2", 1, larry7VolumeResetSignature1, larry7VolumeResetPatch1 },
- { true, 64000, "disable volume reset on startup 2/2", 1, larry7VolumeResetSignature2, larry7VolumeResetPatch2 },
+ { true, 540, "fix make cheese cutscene (cycler)", 1, larry7MakeCheeseCyclerSignature, larry7MakeCheeseCyclerPatch },
+ { true, 540, "fix make cheese cutscene (priority)", 1, larry7MakeCheesePrioritySignature, larry7MakeCheesePriorityPatch },
+ { true, 64000, "disable volume reset on startup (1/2)", 1, larry7VolumeResetSignature1, larry7VolumeResetPatch1 },
+ { true, 64000, "disable volume reset on startup (2/2)", 1, larry7VolumeResetSignature2, larry7VolumeResetPatch2 },
{ true, 64866, "increase number of save games", 1, torinLarry7NumSavesSignature, torinLarry7NumSavesPatch },
SCI_SIGNATUREENTRY_TERMINATOR
};
@@ -3618,8 +3583,8 @@ static const SciScriptPatcherEntry mothergoose256Signatures[] = {
//
// Applies to at least: English CD from King's Quest Collection
// Responsible method: sShowLogo::changeState
-static const uint16 mothergooseHiresSignatureLogo[] = {
- 0x38, SIG_UINT16(0x8e), // pushi $8e
+static const uint16 mothergooseHiresLogoSignature[] = {
+ 0x38, SIG_SELECTOR16(init), // pushi $8e (init)
SIG_MAGICDWORD,
0x76, // push0
0x72, SIG_UINT16(0x82), // lofsa logo[82]
@@ -3627,11 +3592,8 @@ static const uint16 mothergooseHiresSignatureLogo[] = {
SIG_END
};
-static const uint16 mothergooseHiresPatchLogo[] = {
- 0x18, 0x18, 0x18, // waste bytes
- 0x18, // waste bytes
- 0x18, 0x18, 0x18, // waste bytes
- 0x18, 0x18, 0x18, // waste bytes
+static const uint16 mothergooseHiresLogoPatch[] = {
+ 0x33, 0x08, // jmp [past bad logo init]
PATCH_END
};
@@ -3642,7 +3604,7 @@ static const uint16 mothergooseHiresPatchLogo[] = {
//
// Applies to at least: English CD from King's Quest Collection
// Responsible method: rhymeScript::changeState
-static const uint16 mothergooseHiresSignatureHorse[] = {
+static const uint16 mothergooseHiresHorseSignature[] = {
SIG_MAGICDWORD,
0x39, SIG_SELECTOR8(setPri), // pushi $4a (setPri)
0x78, // push1
@@ -3650,9 +3612,9 @@ static const uint16 mothergooseHiresSignatureHorse[] = {
SIG_END
};
-static const uint16 mothergooseHiresPatchHorse[] = {
- PATCH_ADDTOOFFSET(3),
- 0x38, PATCH_UINT16(0x59),
+static const uint16 mothergooseHiresHorsePatch[] = {
+ PATCH_ADDTOOFFSET(3), // pushi setPri, push1
+ 0x38, PATCH_UINT16(0x59), // pushi $59
PATCH_END
};
@@ -3660,8 +3622,8 @@ static const uint16 mothergooseHiresPatchHorse[] = {
static const SciScriptPatcherEntry mothergooseHiresSignatures[] = {
{ true, 0, "disable volume reset on startup (1/2)", 2, sci2VolumeResetSignature, sci2VolumeResetPatch },
{ true, 90, "disable volume reset on startup (2/2)", 1, sci2VolumeResetSignature, sci2VolumeResetPatch },
- { true, 108, "bad logo rendering", 1, mothergooseHiresSignatureLogo, mothergooseHiresPatchLogo },
- { true, 318, "bad horse z-index", 1, mothergooseHiresSignatureHorse, mothergooseHiresPatchHorse },
+ { true, 108, "fix bad logo rendering", 1, mothergooseHiresLogoSignature, mothergooseHiresLogoPatch },
+ { true, 318, "fix bad horse z-index", 1, mothergooseHiresHorseSignature, mothergooseHiresHorsePatch },
SCI_SIGNATUREENTRY_TERMINATOR
};
@@ -3672,30 +3634,30 @@ static const SciScriptPatcherEntry mothergooseHiresSignatures[] = {
// game volumes through the launcher, so stop the game from overwriting the
// ScummVM volumes with volumes from save games.
// Applies to at least: English CD
-static const uint16 phant1SignatureSavedVolume[] = {
- 0x7a, // push2
- 0x39, 0x08, // pushi 8
- 0x38, SIG_UINT16(0x20b), // push $20b (readWord)
- 0x76, // push0
- 0x72, SIG_UINT16(0x13c), // lofsa $13c (PREF.DAT)
- 0x4a, SIG_UINT16(0x04), // send 4
+static const uint16 phant1SavedVolumeSignature[] = {
+ 0x7a, // push2
+ 0x39, 0x08, // pushi 8
+ 0x38, SIG_SELECTOR16(readWord), // push $20b (readWord)
+ 0x76, // push0
+ 0x72, SIG_UINT16(0x13c), // lofsa $13c (PREF.DAT)
+ 0x4a, SIG_UINT16(0x04), // send 4
SIG_MAGICDWORD,
- 0xa1, 0xbc, // sag $bc
- 0x36, // push
- 0x43, 0x76, SIG_UINT16(0x04), // callk DoAudio[76], 4
- 0x7a, // push2
- 0x76, // push0
- 0x38, SIG_UINT16(0x20b), // push $20b (readWord)
- 0x76, // push0
- 0x72, SIG_UINT16(0x13c), // lofsa $13c (PREF.DAT)
- 0x4a, SIG_UINT16(0x04), // send 4
- 0xa1, 0xbb, // sag $bb
- 0x36, // push
- 0x43, 0x75, SIG_UINT16(0x04), // callk DoSound[75], 4
+ 0xa1, 0xbc, // sag $bc
+ 0x36, // push
+ 0x43, 0x76, SIG_UINT16(0x04), // callk DoAudio[76], 4
+ 0x7a, // push2
+ 0x76, // push0
+ 0x38, SIG_SELECTOR16(readWord), // push $20b (readWord)
+ 0x76, // push0
+ 0x72, SIG_UINT16(0x13c), // lofsa $13c (PREF.DAT)
+ 0x4a, SIG_UINT16(0x04), // send 4
+ 0xa1, 0xbb, // sag $bb
+ 0x36, // push
+ 0x43, 0x75, SIG_UINT16(0x04), // callk DoSound[75], 4
SIG_END
};
-static const uint16 phant1PatchSavedVolume[] = {
+static const uint16 phant1SavedVolumePatch[] = {
0x32, PATCH_UINT16(36), // jmp [to prefFile::close]
PATCH_END
};
@@ -3719,7 +3681,7 @@ static const uint16 phant1RatSignature[] = {
SIG_MAGICDWORD,
0x78, // push1
0x39, 0x1a, // pushi $1a
- 0x45, 0x03, SIG_UINT16(0x02), // callb 03, 0002
+ 0x45, 0x03, SIG_UINT16(0x02), // callb 3, 2
0x18, // not
0x31, 0x18, // bnt $18
SIG_END
@@ -3732,9 +3694,9 @@ static const uint16 phant1RatPatch[] = {
// script, description, signature patch
static const SciScriptPatcherEntry phantasmagoriaSignatures[] = {
- { true, 901, "invalid array construction", 1, sci21IntArraySignature, sci21IntArrayPatch },
+ { true, 901, "fix invalid array construction", 1, sci21IntArraySignature, sci21IntArrayPatch },
+ { true, 1111, "ignore audio settings from save game", 1, phant1SavedVolumeSignature, phant1SavedVolumePatch },
{ true, 20200, "fix broken rat init in sEnterFromAlcove", 1, phant1RatSignature, phant1RatPatch },
- { true, 1111, "ignore audio settings from save game", 1, phant1SignatureSavedVolume, phant1PatchSavedVolume },
{ true, 64908, "disable video benchmarking", 1, sci2BenchmarkSignature, sci2BenchmarkPatch },
SCI_SIGNATUREENTRY_TERMINATOR
};
@@ -3742,6 +3704,28 @@ static const SciScriptPatcherEntry phantasmagoriaSignatures[] = {
#pragma mark -
#pragma mark Phantasmagoria 2
+// The game uses a spin loop when navigating to and from Curtis's computer in
+// the office, and when entering passwords, which causes the mouse to appear
+// unresponsive. Replace the spin loop with a call to ScummVM kWait.
+// Applies to at least: US English
+// Responsible method: Script 3000 localproc 2ee4, script 63019 localproc 4f04
+static const uint16 phant2WaitParam1Signature[] = {
+ SIG_MAGICDWORD,
+ 0x35, 0x00, // ldi 0
+ 0xa5, 0x00, // sat 0
+ 0x8d, 0x00, // lst 0
+ 0x87, 0x01, // lap 1
+ SIG_END
+};
+
+static const uint16 phant2WaitParam1Patch[] = {
+ 0x78, // push1
+ 0x8f, 0x01, // lsp param[1]
+ 0x43, kScummVMWaitId, PATCH_UINT16(0x02), // callk Wait, 2
+ 0x48, // ret
+ PATCH_END
+};
+
// The interface bars at the top and bottom of the screen fade in and out when
// hovered over. This fade is performed by a script loop that calls kFrameOut
// directly and uses global 227 as the fade delta for each frame. Global 227
@@ -3785,28 +3769,6 @@ static const uint16 phant2Wait4FadePatch[] = {
PATCH_END
};
-// The game uses a spin loop when navigating to and from Curtis's computer in
-// the office, which causes the mouse to appear unresponsive. Replace the spin
-// loop with a call to ScummVM kWait.
-// Applies to at least: US English
-// Responsible method: localproc 4f04
-static const uint16 phant2CompSlideDoorsSignature[] = {
- SIG_MAGICDWORD,
- 0x35, 0x00, // ldi 0
- 0xa5, 0x00, // sat 0
- 0x8d, 0x00, // lst 0
- 0x87, 0x01, // lap 1
- SIG_END
-};
-
-static const uint16 phant2CompSlideDoorsPatch[] = {
- 0x78, // push1
- 0x8f, 0x01, // lsp param[1]
- 0x43, kScummVMWaitId, PATCH_UINT16(0x02), // callk Wait, 2
- 0x48, // ret
- PATCH_END
-};
-
// When reading the VERSION file, Phant2 sends a Str object instead of a
// reference to a string (kernel signature violation), and flips the file handle
// and size arguments, so the version file data never actually makes it into the
@@ -3877,9 +3839,63 @@ static const uint16 phant2RatboyPatch[] = {
PATCH_END
};
+// Phant2 has separate in-game volume controls for handling movie volume and
+// in-game volume (misleading labelled "music volume"), but really needs the
+// in-game volume to always be significantly lower than the movie volume in
+// order for dialogue in movies to be consistently audible, so patch the in-game
+// volume slider to limit it to our maximum.
+// Applies to at least: US English
+static const uint16 phant2AudioVolumeSignature[] = {
+ SIG_MAGICDWORD,
+ 0x39, 0x7f, // pushi 127 (clientMax value)
+ 0x39, 0x14, // pushi 20 (clientPageSize value)
+ SIG_ADDTOOFFSET(+10), // skip other init arguments
+ 0x51, 0x5e, // class P2ScrollBar
+ SIG_ADDTOOFFSET(+3), // skip send
+ 0xa3, 0x06, // sal 6 (identifies correct slider)
+ SIG_END
+};
+
+static const uint16 phant2AudioVolumePatch[] = {
+ 0x39, kPhant2VolumeMax, // pushi (our custom volume max)
+ 0x39, 0x14 * kPhant2VolumeMax / 127, // pushi (ratio of original value)
+ PATCH_END
+};
+
+// When censorship is disabled the game sticks <PROTECTED> at the end of every
+// save game name, and when it is enabled it pads the save game name with a
+// bunch of spaces. This is annoying and not helpful, so just disable all of
+// this nonsense.
+// Applies to at least: US English
+static const uint16 phant2SaveNameSignature1[] = {
+ SIG_MAGICDWORD,
+ 0x57, 0x4b, SIG_UINT16(0x06), // super SREdit, 6
+ 0x63, // pToa (plane)
+ SIG_END
+};
+
+static const uint16 phant2SaveNamePatch1[] = {
+ PATCH_ADDTOOFFSET(+4), // super SREdit, 6
+ 0x48, // ret
+ PATCH_END
+};
+
+static const uint16 phant2SaveNameSignature2[] = {
+ SIG_MAGICDWORD,
+ 0xa5, 0x00, // sat 0
+ 0x39, SIG_SELECTOR8(format), // pushi format
+ SIG_END
+};
+
+static const uint16 phant2SaveNamePatch2[] = {
+ PATCH_ADDTOOFFSET(+2), // sat 0
+ 0x33, 0x68, // jmp [past name mangling]
+ PATCH_END
+};
+
// Phant2-specific version of sci2NumSavesSignature1/2
// Applies to at least: English CD
-static const uint16 phant2NumSavesSignature[] = {
+static const uint16 phant2NumSavesSignature1[] = {
SIG_MAGICDWORD,
0x8d, 0x01, // lst 1
0x35, 0x14, // ldi 20
@@ -3887,20 +3903,231 @@ static const uint16 phant2NumSavesSignature[] = {
SIG_END
};
-static const uint16 phant2NumSavesPatch[] = {
+static const uint16 phant2NumSavesPatch1[] = {
PATCH_ADDTOOFFSET(+2), // lst 1
0x35, 0x63, // ldi 99
PATCH_END
};
-// script, description, signature patch
+static const uint16 phant2NumSavesSignature2[] = {
+ SIG_MAGICDWORD,
+ 0x8d, 0x00, // lst 0
+ 0x35, 0x14, // ldi 20
+ 0x22, // lt?
+ SIG_END
+};
+
+static const uint16 phant2NumSavesPatch2[] = {
+ PATCH_ADDTOOFFSET(+2), // lst 0
+ 0x35, 0x63, // ldi 99
+ PATCH_END
+};
+
+// The game script responsible for handling document scrolling in the computer
+// interface uses a spin loop to wait for 10 ticks every time the document
+// scrolls. This makes scrolling janky and makes the mouse appear
+// non-responsive. Eliminating the delay entirely makes scrolling with the arrow
+// buttons a little too quick; a delay of 3 ticks is an OK middle-ground between
+// allowing mostly fluid motion with mouse dragging and reasonably paced
+// scrolling holding down the arrows. Preferably, ScrollbarArrow::handleEvent or
+// ScrollbarArrow::action would only send cues once every N ticks whilst being
+// held down, but unfortunately the game was not programmed to do this.
+// Applies to at least: US English
+static const uint16 phant2SlowScrollSignature[] = {
+ SIG_MAGICDWORD,
+ 0x35, 0x0a, // ldi 10
+ 0x22, // lt?
+ 0x31, 0x17, // bnt [end of loop]
+ 0x76, // push0
+ 0x43, 0x79, SIG_UINT16(0), // callk GetTime, 0
+ SIG_END
+};
+
+static const uint16 phant2SlowScrollPatch[] = {
+ 0x78, // push1
+ 0x39, 0x03, // pushi 3
+ 0x43, kScummVMWaitId, PATCH_UINT16(0x02), // callk Wait, 2
+ 0x33, 0x13, // jmp [end of loop]
+ PATCH_END
+};
+
+// WynNetDoco::open calls setSize before it calls posn, but the values set by
+// posn are used by setSize, so the left/top coordinates of the text and note
+// fields is wrong for the first render of a document or email. (Incidentally,
+// these fields are the now-seen rect fields, and the game is doing a very bad
+// thing by touching these manually and then relying on the values instead of
+// asking the kernel.) This is most noticeable during chapters 1 and 3 when the
+// computer is displaying scary messages, since every time the scary message is
+// rendered the text fields re-render at the top-left corner of the screen.
+// Applies to at least: US English
+static const uint16 phant2BadPositionSignature[] = {
+ SIG_MAGICDWORD,
+ 0x39, SIG_SELECTOR8(setSize), // pushi setSize
+ 0x76, // push0
+ 0x39, SIG_SELECTOR8(init), // pushi init
+ 0x78, // pushi 1
+ 0x89, 0x03, // lsg 3
+ 0x39, SIG_SELECTOR8(posn), // pushi posn
+ 0x7a, // push2
+ 0x66, SIG_ADDTOOFFSET(+2), // pTos (x position)
+ 0x66, SIG_ADDTOOFFSET(+2), // pTos (y position)
+ SIG_END
+};
+
+static const uint16 phant2BadPositionPatch[] = {
+ 0x39, PATCH_SELECTOR8(posn), // pushi posn
+ 0x7a, // push2
+ 0x66, PATCH_GETORIGINALUINT16(12), // pTos (x position)
+ 0x66, PATCH_GETORIGINALUINT16(15), // pTos (y position)
+ 0x39, PATCH_SELECTOR8(setSize), // pushi setSize
+ 0x76, // push0
+ 0x39, PATCH_SELECTOR8(init), // pushi init
+ 0x78, // pushi 1
+ 0x89, 0x03, // lsg 3
+ PATCH_END
+};
+
+// WynDocuStore::refresh resets the cel of the open folder and document icons,
+// so they don't end up being rendered as closed folder/document icons, but it
+// forgets to actually update the icon's View with the kernel, so they render
+// as closed for the first render after a refresh anyway. This is most
+// noticeable during chapters 1 and 3 when the computer is displaying scary
+// messages, since every time the scary message is rendered the icons re-render
+// as closed.
+// Applies to at least: US English
+static const uint16 phant2BadIconSignature[] = {
+ SIG_MAGICDWORD,
+ 0x38, SIG_SELECTOR16(setCel), // pushi setCel
+ 0x78, // push1
+ 0x78, // push1
+ 0x38, SIG_SELECTOR16(iconV), // pushi iconV
+ 0x76, // push0
+ 0x62, SIG_ADDTOOFFSET(+2), // pToa curFolder/curDoco
+ 0x4a, SIG_UINT16(0x04), // send 4
+ 0x4a, SIG_UINT16(0x06), // send 6
+ SIG_END
+};
+
+static const uint16 phant2BadIconPatch[] = {
+ PATCH_ADDTOOFFSET(+5), // pushi setCel, push1, push1
+ 0x38, PATCH_SELECTOR16(update), // pushi update
+ 0x76, // push0
+ 0x4a, PATCH_UINT16(0x0a), // send 10
+ 0x33, 0x04, // jmp [past unused bytes]
+ PATCH_END
+};
+
+// The left and right arrows move inventory items a pixel more than each
+// inventory item is wide, which causes the inventory to creep to the left by
+// one pixel per scrolled item.
+// Applies to at least: US English
+static const uint16 phant2InvLeftDeltaSignature[] = {
+ SIG_MAGICDWORD,
+ SIG_UINT16(0x42), // delta
+ SIG_UINT16(0x19), // moveDelay
+ SIG_END
+};
+
+static const uint16 phant2InvLeftDeltaPatch[] = {
+ PATCH_UINT16(0x41), // delta
+ PATCH_END
+};
+
+static const uint16 phant2InvRightDeltaSignature[] = {
+ SIG_MAGICDWORD,
+ SIG_UINT16(0xffbe), // delta
+ SIG_UINT16(0x19), // moveDelay
+ SIG_END
+};
+
+static const uint16 phant2InvRightDeltaPatch[] = {
+ PATCH_UINT16(0xffbf), // delta
+ PATCH_END
+};
+
+// The first inventory item is put too far to the right, which causes wide items
+// to get cut off on the right side of the inventory.
+// Applies to at least: US English
+static const uint16 phant2InvOffsetSignature[] = {
+ SIG_MAGICDWORD,
+ 0x35, 0x26, // ldi 38
+ 0x64, SIG_SELECTOR16(xOff), // aTop xOff
+ SIG_END
+};
+
+static const uint16 phant2InvOffsetPatch[] = {
+ 0x35, 0x1d, // ldi 29
+ PATCH_END
+};
+
+// The text placement of "File" and "Note" content inside DocuStore File
+// Retrieval System makes some letters especially "g" overlap the
+// corresponding box. Set by 'WynNetDoco::open'.
+// We fix this by changing the position of those 2 inside the heap of
+// subclass 'WynNetDoco' slightly.
+// Applies to at least: English CD, Japanese CD, German CD
+static const uint16 phant2DocuStoreFileNotePlacementSignature[] = {
+ SIG_MAGICDWORD,
+ SIG_UINT16(0x0046), // nameX
+ SIG_UINT16(0x000a), // nameY
+ SIG_ADDTOOFFSET(+10), // skip over nameMsg*
+ SIG_UINT16(0x0046), // noteX
+ SIG_UINT16(0x001e), // noteY
+ SIG_END
+};
+
+static const uint16 phant2DocuStoreFileNotePlacementPatch[] = {
+ PATCH_ADDTOOFFSET(+2),
+ PATCH_UINT16(0x0006), // new nameY
+ PATCH_ADDTOOFFSET(+12),
+ PATCH_UINT16(0x001b), // new noteY
+ PATCH_END
+};
+
+// The text placement of "From" and "Subject" content inside DocuStore.
+// We fix this by changing the position inside the heap of subclass
+// 'WynNetEmail' slightly.
+// For this one, we also fix the horizontal placement.
+static const uint16 phant2DocuStoreEmailPlacementSignature[] = {
+ SIG_MAGICDWORD,
+ SIG_UINT16(0x0049), // nameX
+ SIG_UINT16(0x0008), // nameY
+ SIG_ADDTOOFFSET(+10), // skip over nameMsg*
+ SIG_UINT16(0x0049), // noteX
+ SIG_UINT16(0x001c), // noteY
+ SIG_END
+};
+
+static const uint16 phant2DocuStoreEmailPlacementPatch[] = {
+ PATCH_UINT16(0x0050), // new nameX
+ PATCH_UINT16(0x0006), // new nameY
+ SIG_ADDTOOFFSET(+10),
+ PATCH_UINT16(0x0050), // new noteX
+ PATCH_UINT16(0x001b), // new noteY
+ PATCH_END
+};
+
+// script, description, signature patch
static const SciScriptPatcherEntry phantasmagoria2Signatures[] = {
- { true, 0, "slow interface fades", 3, phant2SlowIFadeSignature, phant2SlowIFadePatch },
- { true, 0, "bad arguments to get game version", 1, phant2GetVersionSignature, phant2GetVersionPatch },
- { true, 4081, "non-responsive mouse after ratboy puzzle", 1, phant2RatboySignature, phant2RatboyPatch },
- { true, 63016, "non-responsive mouse during music fades", 1, phant2Wait4FadeSignature, phant2Wait4FadePatch },
- { true, 63019, "non-responsive mouse during computer load", 1, phant2CompSlideDoorsSignature, phant2CompSlideDoorsPatch },
- { true, 64990, "increase number of save games", 1, phant2NumSavesSignature, phant2NumSavesPatch },
+ { true, 0, "speed up interface fades", 3, phant2SlowIFadeSignature, phant2SlowIFadePatch },
+ { true, 0, "fix bad arguments to get game version", 1, phant2GetVersionSignature, phant2GetVersionPatch },
+ { true, 3000, "replace spin loop in alien password window", 1, phant2WaitParam1Signature, phant2WaitParam1Patch },
+ { true, 4081, "replace spin loop after ratboy puzzle", 1, phant2RatboySignature, phant2RatboyPatch },
+ { true, 63001, "fix inventory left scroll delta", 1, phant2InvLeftDeltaSignature, phant2InvLeftDeltaPatch },
+ { true, 63001, "fix inventory right scroll delta", 1, phant2InvRightDeltaSignature, phant2InvRightDeltaPatch },
+ { true, 63001, "fix inventory wrong initial offset", 1, phant2InvOffsetSignature, phant2InvOffsetPatch },
+ { true, 63004, "limit in-game audio volume", 1, phant2AudioVolumeSignature, phant2AudioVolumePatch },
+ { true, 63016, "replace spin loop during music fades", 1, phant2Wait4FadeSignature, phant2Wait4FadePatch },
+ { true, 63019, "replace spin loop during computer load", 1, phant2WaitParam1Signature, phant2WaitParam1Patch },
+ { true, 63019, "replace spin loop during computer scrolling", 1, phant2SlowScrollSignature, phant2SlowScrollPatch },
+ { true, 63019, "fix bad doc/email name & memo positioning", 2, phant2BadPositionSignature, phant2BadPositionPatch },
+ { true, 63019, "fix bad folder/doc icon refresh", 2, phant2BadIconSignature, phant2BadIconPatch },
+ { true, 63019, "fix file and note content placement", 1, phant2DocuStoreFileNotePlacementSignature, phant2DocuStoreFileNotePlacementPatch },
+ { true, 63019, "fix email content placement", 1, phant2DocuStoreEmailPlacementSignature, phant2DocuStoreEmailPlacementPatch },
+ { true, 64990, "remove save game name mangling (1/2)", 1, phant2SaveNameSignature1, phant2SaveNamePatch1 },
+ { true, 64990, "increase number of save games (1/2)", 1, phant2NumSavesSignature1, phant2NumSavesPatch1 },
+ { true, 64990, "increase number of save games (2/2)", 2, phant2NumSavesSignature2, phant2NumSavesPatch2 },
+ { true, 64994, "remove save game name mangling (2/2)", 1, phant2SaveNameSignature2, phant2SaveNamePatch2 },
SCI_SIGNATUREENTRY_TERMINATOR
};
@@ -4122,42 +4349,115 @@ static const SciScriptPatcherEntry pq3Signatures[] = {
#pragma mark -
#pragma mark Police Quest 4
-// In Police Quest 4 inside the Bitty Kitty show (room 315), the player has to first talk with a young woman, show her the police badge, then
-// show her the red shoe. She will tell the player that may "Barbie" knows more.
-// After leaving and entering later (not detailed here), Barbie will be available.
-// Now the player needs to show her the police badge as well and then it goes a bit weird.
-//
-// The player can show her the red shoe immediately, which will work dialog-wise, but points won't be awarded and the corresponding flag will also not get set.
-// Internally the game checks if some regular talking dialog (for Barbie) has been accessed before awarding the points and setting the flags.
-// When the player does not recognize this, the player may get stuck and it will look as if a game breaking glitch has happened.
-//
-// Showing the red shoe to the young woman AND showing it to Barbie is all done using the same script.
-// It works via shoeShoe::changeState.
-//
-// The code in there of state 0 checks first who is currently inside the room using stripper::noun.
-// Afterwards for the young woman it checks local 3 if it's zero or not zero.
-// Local 3 is set, when the player has shown the police badge to the person, that is currently inside the room.
-//
-// For Barbie strangely global 9Ah is checked instead, which then causes those issues.
-//
-// We change the Barbie code to also check local 3, which seems to work out.
-// We can't simply remove the check, otherwise the flag will get set even when the player
-// hasn't shown the badge, which will cause Barbie to not answer the question and the player
-// won't be able to show her the shoe a second time.
-//
-// This of course also happened, when using the original interpreter.
-//
+// Add support for simultaneous speech & subtitles to the in-game UI.
+// The original game code has code paths for lo-res mode but only creates the
+// buttons in hi-res mode, so the lo-res code paths are removed to gain more
+// space for the patch.
+// Applies to: English CD
+// Responsible method: iconText::init, iconText::select
+static const uint16 pq4CdSpeechAndSubtitlesSignature[] = {
+ // iconText::init
+ 0x76, // push0
+ 0x43, 0x22, SIG_UINT16(0x00), // callk IsHiRes
+ 0x18, // not
+ 0x31, 0x05, // bnt [skip next 2 opcodes, when hires]
+ SIG_MAGICDWORD,
+ 0x34, SIG_UINT16(0x2661), // ldi 9825
+ 0x65, 0x78, // aTop mainView
+ 0x89, 0x5a, // lsg global[$5a]
+ 0x35, 0x01, // ldi 1
+ 0x12, // and
+ 0x30, SIG_UINT16(0x1b), // bnt [when in speech mode]
+ 0x76, // push0
+ 0x43, 0x22, SIG_UINT16(0x00), // callk IsHiRes
+ SIG_ADDTOOFFSET(+45), // skip over the remaining code
+ 0x38, SIG_SELECTOR16(init), // pushi $93 (init)
+ 0x76, // push0
+ 0x59, 0x01, // &rest 01
+ 0x57, 0x8f, SIG_UINT16(0x04), // super GCItem
+ 0x48, // ret
+
+ // iconText::select
+ 0x38, SIG_SELECTOR16(select), // pushi $1c4 (select)
+ 0x76, // push0
+ 0x59, 0x01, // &rest 01
+ 0x57, 0x8f, SIG_UINT16(0x04), // super GCItem, 4
+ 0x89, 0x5a, // lsg global[$5a]
+ 0x35, 0x02, // ldi 2
+ 0x12, // and
+ 0x30, SIG_UINT16(0x1f), // bnt [jump to currently-in-text-mode code]
+ SIG_ADDTOOFFSET(+67), // skip over the rest
+ 0x48, // ret
+ SIG_END
+};
+
+static const uint16 pq4CdSpeechAndSubtitlesPatch[] = {
+ // iconText::init
+ 0x76, // push0
+ 0x41, 0x02, PATCH_UINT16(0x00), // call [our new subroutine which sets view+loop+cel], 0
+ 0x33, 0x40, // jmp [to original init, super GCItem call]
+ // new code for setting view+loop+cel
+ 0x34, PATCH_UINT16(0x2aeb), // ldi 10987
+ 0x65, 0x78, // aTop mainView - always set this view, because it's used by 2 states
+ 0x89, 0x5a, // lsg global[$5a]
+ 0x35, 0x03, // ldi 3
+ 0x1a, // eq?
+ 0x31, 0x04, // bnt [skip over follow up code]
+ // speech+subtitles mode
+ 0x78, // push1
+ 0x69, 0x7a, // sTop mainLoop
+ 0x48, // ret
+ 0x89, 0x5a, // lsg global[$5a]
+ 0x35, 0x01, // ldi 1
+ 0x12, // and
+ 0x31, 0x04, // bnt [skip over follow up code]
+ // subtitles mode
+ 0x76, // push0
+ 0x69, 0x7a, // sTop mainLoop
+ 0x48, // ret
+ // speech mode
+ 0x34, PATCH_UINT16(0x2ae6), // ldi 10982
+ 0x65, 0x78, // aTop mainView
+ 0x35, 0x0f, // ldi 15
+ 0x65, 0x7a, // aTop mainLoop
+ 0x48, // ret
+ PATCH_ADDTOOFFSET(+38), // skip to iconText::select
+
+ // iconText::select
+ PATCH_ADDTOOFFSET(+10), // skip over the super code
+ 0xc1, 0x5a, // +ag $5a
+ 0xa1, 0x5a, // sag $5a
+ 0x36, // push
+ 0x35, 0x04, // ldi 4
+ 0x28, // uge?
+ 0x31, 0x03, // bnt [skip over follow up code]
+ 0x78, // push1
+ 0xa9, 0x5a, // ssg $5a
+ 0x76, // push0
+ 0x41, 0x99, PATCH_UINT16(0x00), // call [our new subroutine which sets view+loop+cel, effectively -103], 0
+ 0x33, 0x2f, // jmp [to end of original select, show call]
+ PATCH_END
+};
+
+// When showing the red shoe to Barbie after showing the police badge but before
+// exhausting the normal dialogue tree, the game plays the expected dialogue but
+// fails to award points or set an internal flag indicating this interaction has
+// occurred (which is needed to progress in the game). This is because the game
+// checks global $9a (dialogue progress flag) instead of local 3 (badge shown
+// flag) when interacting with Barbie. The game uses the same
+// `shoeShoe::changeState(0)` method for showing the shoe to the young woman at the
+// bar earlier in the game, and checks local 3 then, so just check local 3 in
+// both cases to prevent the game from appearing to be in an unwinnable state
+// just because the player interacted in the "wrong" order.
// Applies to at least: English floppy, German floppy, English CD
-// Responsible method: showShoe::changeState(0) - script 315
-// Fixes bug: #9849
static const uint16 pq4BittyKittyShowBarieRedShoeSignature[] = {
// stripper::noun check is for checking, if police badge was shown
SIG_MAGICDWORD,
- 0x89, 0x9a, // lsg global[9Ah]
- 0x35, 0x02, // ldi 02
+ 0x89, 0x9a, // lsg global[$9a]
+ 0x35, 0x02, // ldi 2
0x1e, // gt?
0x30, SIG_UINT16(0x0028), // bnt [skip 2 points code]
- 0x39, 0x61, // pushi 61h (flag)
+ 0x39, SIG_SELECTOR8(flag), // pushi $61 (flag)
SIG_END
};
@@ -4168,22 +4468,18 @@ static const uint16 pq4BittyKittyShowBarbieRedShoePatch[] = {
PATCH_END
};
-// In Police Quest 4 scripts for room 390 (city hall) use ticks instead of seconds.
-// Ticks are not behaving the same as seconds. Ticks will also go down within game menus including inventory.
-// When getting attacked, the player has almost no time to draw the gun - and even when the player has the gun
-// equipped in advance, afterwards the attacker needs to get cuffed. Which means selecting the cuffs inside
-// the inventory.
-// It's not obvious that this sequence doesn't stop time while inside game menus, which is why the player
-// may think it's a bug when the player is literally instantly attacked and killed after returning from inventory.
-//
-// Another action-sequence right before that uses ::seconds (woman, who attacks ego with a knife).
-//
-// That's why we change all occurrences of ::ticks to ::seconds and also adjust the values accordingly.
-//
-// This is not a perfect solution. The game system will decrease ::seconds by 1 after entering+exiting the game menu,
-// that's why I raised some of the timers for 1 or 2 seconds. A better solution would be to make it so game system
-// won't decrease ticks/seconds after returning from the game menu. That could of course break things, but should be investigated.
-//
+// In PQ4, scripts for the city hall action sequences use `ticks`. These
+// continue to count down even during inventory interaction, so if the user is
+// unable to find the correct inventory item quickly enough for the sequence,
+// the game will immediately end with a "game over" once they close the
+// inventory and the main game loop resumes. This can seem like a game bug, so
+// we change these sequences to use `seconds`, which only tick down by 1 when
+// the game returns to the main loop and the wall time has changed, even if many
+// seconds have actually elapsed. However, since `seconds` uses absolute
+// hardware clock time with a granularity of 1 second, "one" second can actually
+// be less than one second if the timer is set in between hardware clock
+// seconds, so the values are increased slightly from their equivalent tick
+// values to compensate for this.
// Applies to at least: English Floppy, German floppy
// Responsible method: metzAttack::changeState(2) - 120 ticks (player needs to draw gun)
// stickScr::changeState(0) - 180 ticks (player needs to tell enemy to drop gun)
@@ -4191,100 +4487,103 @@ static const uint16 pq4BittyKittyShowBarbieRedShoePatch[] = {
// turnMetz::changeState(5) - 600/420 ticks (player needs to cuff Metz)
// all in script 390
//
-// The code for the CD version was changed quite a bit, the selector for ticks also changed from 0x10 (so opcode-wise it's 0x20) to 0x11 (opcode-wise 0x22),
-// so additional signatures/patches will need to be added for CD version.
-//
-// metzAttack::changeState(2)
+// TODO: The object structure changed in PQ4CD so ticks moved from 0x20 to 0x22.
+// Additional signatures/patches will need to be added for CD version.
static const uint16 pq4FloppyCityHallDrawGunTimerSignature[] = {
SIG_MAGICDWORD,
- 0x4a, SIG_UINT16(0x0008), // send 08
- 0x32, // jmp [ret]
- SIG_ADDTOOFFSET(+8), // skip over some code
- 0x35, 0x78, // pushi 0078h (120)
- 0x65, 0x20, // aTop ticks
+ 0x4a, SIG_UINT16(0x08), // send 8
+ 0x32, // jmp [ret]
+ SIG_ADDTOOFFSET(+8), // skip over some code
+ 0x35, 0x78, // pushi $78 (120)
+ 0x65, 0x20, // aTop ticks
SIG_END
};
+
static const uint16 pq4FloppyCityHallDrawGunTimerPatch[] = {
- PATCH_ADDTOOFFSET(12),
- 0x35, 0x05, // pushi 4
- 0x65, 0x1c, // aTop seconds - raise time from 2 seconds to 4 seconds
+ PATCH_ADDTOOFFSET(+12), // send 8, jmp, skip over some code
+ 0x35, 0x05, // pushi 4 (120t/2s -> 4s)
+ 0x65, 0x1c, // aTop seconds
PATCH_END
};
-// stickScr::changeState(0)
+
static const uint16 pq4FloppyCityHallTellEnemyDropWeaponTimerSignature[] = {
SIG_MAGICDWORD,
- 0x34, SIG_UINT16(180), // pushi 00B4h (180)
- 0x65, 0x20, // aTop ticks
- 0x32, SIG_UINT16(0x005e), // jmp to ret
+ 0x34, SIG_UINT16(0xb4), // pushi $b4 (180)
+ 0x65, 0x20, // aTop ticks
+ 0x32, SIG_UINT16(0x5e), // jmp to ret
SIG_END
};
+
static const uint16 pq4FloppyCityHallTellEnemyDropWeaponTimerPatch[] = {
- 0x34, PATCH_UINT16(5), // pushi 5
- 0x65, 0x1c, // aTop seconds - raise time from 3 seconds to 5 seconds
+ 0x34, PATCH_UINT16(0x05), // pushi 5 (180t/3s -> 5s)
+ 0x65, 0x1c, // aTop seconds
PATCH_END
};
-// dropStick::changeState(5)
+
static const uint16 pq4FloppyCityHallTellEnemyTurnAroundTimerSignature[] = {
SIG_MAGICDWORD,
- 0x4a, SIG_UINT16(0x0004), // send 04
- 0x35, 0x78, // pushi 0078h (120)
- 0x65, 0x20, // aTop ticks
+ 0x4a, SIG_UINT16(0x04), // send 4
+ 0x35, 0x78, // pushi $78 (120)
+ 0x65, 0x20, // aTop ticks
SIG_END
};
+
static const uint16 pq4FloppyCityHallTellEnemyTurnAroundTimerPatch[] = {
- PATCH_ADDTOOFFSET(+3),
- 0x35, 0x03, // pushi 3
- 0x65, 0x1c, // aTop seconds - raise time from 2 seconds to 3 seconds
+ PATCH_ADDTOOFFSET(+3), // send 4
+ 0x35, 0x03, // pushi 3 (120t/2s -> 3s)
+ 0x65, 0x1c, // aTop seconds
PATCH_END
};
-// turnMetz::changeState(5)
+
static const uint16 pq4FloppyCityHallCuffEnemyTimerSignature[] = {
SIG_MAGICDWORD,
- 0x34, SIG_UINT16(600), // pushi 258h (600)
- 0x65, 0x20, // aTop ticks
+ 0x34, SIG_UINT16(0x258), // pushi $258 (600)
+ 0x65, 0x20, // aTop ticks
SIG_ADDTOOFFSET(+3),
- 0x34, SIG_UINT16(420), // pushi 1A4h (420)
- 0x65, 0x20, // aTop ticks
+ 0x34, SIG_UINT16(0x1a4), // pushi $1a4 (420)
+ 0x65, 0x20, // aTop ticks
SIG_END
};
+
static const uint16 pq4FloppyCityHallCuffEnemyTimerPatch[] = {
- 0x34, PATCH_UINT16(10), // pushi 10
- 0x65, 0x1c, // aTop seconds - time is 10 seconds
+ 0x34, PATCH_UINT16(0x0a), // pushi 10 (600t/10s)
+ 0x65, 0x1c, // aTop seconds
PATCH_ADDTOOFFSET(+3),
- 0x34, SIG_UINT16(7), // pushi 7
- 0x65, 0x1c, // aTop seconds - time is 7 seconds
+ 0x34, SIG_UINT16(0x07), // pushi 7 (420t/7s)
+ 0x65, 0x1c, // aTop seconds
PATCH_END
};
-// Right at the end in room 755, the last action sequence is also using ticks instead of seconds.
-// For details, read the description of city hall action sequence issues right above this.
-//
+// The end game action sequence also uses ticks instead of seconds. See the
+// description of city hall action sequence issues for more information.
// Applies to at least: English Floppy, German floppy, English CD
-// Responsible method: comeInLast::changeState(11) - 300 ticks (player needs to use item) - in script 755
+// Responsible method: comeInLast::changeState(11)
static const uint16 pq4LastActionHeroTimerSignature[] = {
SIG_MAGICDWORD,
- 0x34, SIG_UINT16(300), // pushi 012Ch (300)
- 0x65, SIG_ADDTOOFFSET(+1), // aTop ticks (20h for floppy, 22h for CD)
+ 0x34, SIG_UINT16(0x12c), // pushi $12c (300)
+ 0x65, SIG_ADDTOOFFSET(+1), // aTop ticks ($20 for floppy, $22 for CD)
SIG_END
};
+
static const uint16 pq4LastActionHeroTimerPatch[] = {
- 0x34, PATCH_UINT16(5), // pushi 5
- 0x65, PATCH_GETORIGINALBYTEADJUST(4, -4), // aTop seconds - 5 seconds
+ 0x34, PATCH_UINT16(0x05), // pushi 5 (300t/5s)
+ 0x65, PATCH_GETORIGINALBYTEADJUST(4, -4), // aTop seconds
PATCH_END
};
// script, description, signature patch
static const SciScriptPatcherEntry pq4Signatures[] = {
- { true, 315, "show barbie the red shoe points fix", 1, pq4BittyKittyShowBarieRedShoeSignature, pq4BittyKittyShowBarbieRedShoePatch },
- { true, 390, "floppy: city hall: draw gun timer", 1, pq4FloppyCityHallDrawGunTimerSignature, pq4FloppyCityHallDrawGunTimerPatch },
- { true, 390, "floppy: city hall: tell enemy drop weapon timer", 1, pq4FloppyCityHallTellEnemyDropWeaponTimerSignature, pq4FloppyCityHallTellEnemyDropWeaponTimerPatch },
- { true, 390, "floppy: city hall: tell enemy turn around timer", 1, pq4FloppyCityHallTellEnemyTurnAroundTimerSignature, pq4FloppyCityHallTellEnemyTurnAroundTimerPatch },
- { true, 390, "floppy: city hall: cuff enemy timer", 1, pq4FloppyCityHallCuffEnemyTimerSignature, pq4FloppyCityHallCuffEnemyTimerPatch },
- { true, 755, "last action sequence timer", 1, pq4LastActionHeroTimerSignature, pq4LastActionHeroTimerPatch },
- { true, 64918, "Str::strip fix for floppy version", 1, sci2BrokenStrStripSignature, sci2BrokenStrStripPatch },
+ { true, 9, "add speech+subtitles to in-game UI", 1, pq4CdSpeechAndSubtitlesSignature, pq4CdSpeechAndSubtitlesPatch },
+ { true, 315, "fix missing points showing barbie the red shoe", 1, pq4BittyKittyShowBarieRedShoeSignature, pq4BittyKittyShowBarbieRedShoePatch },
+ { true, 390, "change floppy city hall use gun timer", 1, pq4FloppyCityHallDrawGunTimerSignature, pq4FloppyCityHallDrawGunTimerPatch },
+ { true, 390, "change floppy city hall say 'drop weapon' timer", 1, pq4FloppyCityHallTellEnemyDropWeaponTimerSignature, pq4FloppyCityHallTellEnemyDropWeaponTimerPatch },
+ { true, 390, "change floppy city hall say 'turn around' timer", 1, pq4FloppyCityHallTellEnemyTurnAroundTimerSignature, pq4FloppyCityHallTellEnemyTurnAroundTimerPatch },
+ { true, 390, "change floppy city hall use handcuffs timer", 1, pq4FloppyCityHallCuffEnemyTimerSignature, pq4FloppyCityHallCuffEnemyTimerPatch },
+ { true, 755, "change last action sequence timer", 1, pq4LastActionHeroTimerSignature, pq4LastActionHeroTimerPatch },
{ true, 64908, "disable video benchmarking", 1, sci2BenchmarkSignature, sci2BenchmarkPatch },
- { true, 64990, "increase number of save games", 1, sci2NumSavesSignature1, sci2NumSavesPatch1 },
- { true, 64990, "increase number of save games", 1, sci2NumSavesSignature2, sci2NumSavesPatch2 },
+ { true, 64918, "fix Str::strip in floppy version", 1, sci2BrokenStrStripSignature, sci2BrokenStrStripPatch },
+ { true, 64990, "increase number of save games (1/2)", 1, sci2NumSavesSignature1, sci2NumSavesPatch1 },
+ { true, 64990, "increase number of save games (2/2)", 1, sci2NumSavesSignature2, sci2NumSavesPatch2 },
{ true, 64990, "disable change directory button", 1, sci2ChangeDirSignature, sci2ChangeDirPatch },
SCI_SIGNATUREENTRY_TERMINATOR
};
@@ -4296,7 +4595,7 @@ static const SciScriptPatcherEntry pq4Signatures[] = {
// master sound volume to 127, but the game should always use the volume stored
// in ScummVM.
// Applies to at least: English CD
-static const uint16 pqSwatSignatureVolumeReset1[] = {
+static const uint16 pqSwatVolumeResetSignature[] = {
SIG_MAGICDWORD,
0x38, SIG_SELECTOR16(masterVolume), // pushi masterVolume
0x78, // push1
@@ -4305,14 +4604,14 @@ static const uint16 pqSwatSignatureVolumeReset1[] = {
SIG_END
};
-static const uint16 pqSwatPatchVolumeReset1[] = {
+static const uint16 pqSwatVolumeResetPatch[] = {
0x32, PATCH_UINT16(6), // jmp 6 [past volume reset]
PATCH_END
};
// script, description, signature patch
static const SciScriptPatcherEntry pqSwatSignatures[] = {
- { true, 0, "disable volume reset on startup (1/2)", 1, pqSwatSignatureVolumeReset1, pqSwatPatchVolumeReset1 },
+ { true, 0, "disable volume reset on startup (1/2)", 1, pqSwatVolumeResetSignature, pqSwatVolumeResetPatch },
{ true, 1, "disable volume reset on startup (2/2)", 1, sci2VolumeResetSignature, sci2VolumeResetPatch },
SCI_SIGNATUREENTRY_TERMINATOR
};
@@ -5289,9 +5588,9 @@ static const SciScriptPatcherEntry qfg3Signatures[] = {
#pragma mark -
#pragma mark Quest for Glory 4
-// The trap init code incorrectly creates an int array for string data.
+// The 'Trap::init' code incorrectly creates an int array for string data.
// Applies to at least: English CD
-static const uint16 qfg4SignatureTrapArrayType[] = {
+static const uint16 qfg4TrapArrayTypeSignature[] = {
0x38, SIG_SELECTOR16(new), // pushi new
0x78, // push1
0x38, SIG_UINT16(0x80), // pushi $80 (128)
@@ -5301,22 +5600,23 @@ static const uint16 qfg4SignatureTrapArrayType[] = {
SIG_END
};
-static const uint16 qfg4PatchTrapArrayType[] = {
+static const uint16 qfg4TrapArrayTypePatch[] = {
PATCH_ADDTOOFFSET(+4), // pushi $92 (new), push1
0x38, PATCH_UINT16(0x100), // pushi $100 (256)
0x51, 0x0d, // class $d (ByteArray)
PATCH_END
};
-// QFG4 has custom video benchmarking code that needs to be disabled; see
-// sci2BenchmarkSignature
+// QFG4 has custom video benchmarking code inside a subroutine, which is called
+// by 'glryInit::init', that needs to be disabled; see sci2BenchmarkSignature
+// Applies to at least: English CD, German Floppy
static const uint16 qfg4BenchmarkSignature[] = {
0x38, SIG_SELECTOR16(new), // pushi new
0x76, // push0
0x51, SIG_ADDTOOFFSET(+1), // class View
0x4a, SIG_UINT16(0x04), // send 4
0xa5, 0x00, // sat 0
- 0x39, 0x0e, // pushi $e
+ 0x39, SIG_SELECTOR8(view), // pushi $e (view)
SIG_MAGICDWORD,
0x78, // push1
0x38, SIG_UINT16(0x270f), // push $270f (9999)
@@ -5334,9 +5634,9 @@ static const uint16 qfg4BenchmarkPatch[] = {
static const SciScriptPatcherEntry qfg4Signatures[] = {
{ true, 1, "disable volume reset on startup", 1, sci2VolumeResetSignature, sci2VolumeResetPatch },
{ true, 1, "disable video benchmarking", 1, qfg4BenchmarkSignature, qfg4BenchmarkPatch },
- { true, 83, "fix incorrect array type", 1, qfg4SignatureTrapArrayType, qfg4PatchTrapArrayType },
- { true, 64990, "increase number of save games", 1, sci2NumSavesSignature1, sci2NumSavesPatch1 },
- { true, 64990, "increase number of save games", 1, sci2NumSavesSignature2, sci2NumSavesPatch2 },
+ { true, 83, "fix incorrect array type", 1, qfg4TrapArrayTypeSignature, qfg4TrapArrayTypePatch },
+ { true, 64990, "increase number of save games (1/2)", 1, sci2NumSavesSignature1, sci2NumSavesPatch1 },
+ { true, 64990, "increase number of save games (2/2)", 1, sci2NumSavesSignature2, sci2NumSavesPatch2 },
{ true, 64990, "disable change directory button", 1, sci2ChangeDirSignature, sci2ChangeDirPatch },
SCI_SIGNATUREENTRY_TERMINATOR
};
@@ -5921,14 +6221,88 @@ static const uint16 ramaBenchmarkSignature[] = {
};
static const uint16 ramaBenchmarkPatch[] = {
- 0x34, PATCH_UINT16(10000), // ldi 10000
- 0x48, // ret
+ 0x34, PATCH_UINT16(0x2710), // ldi 10000
+ 0x48, // ret
+ PATCH_END
+};
+
+// RAMA initialises the font system with an incorrect text resolution (it uses
+// the resolution from Phant1) which causes text to be scaled incorrectly.
+static const uint16 ramaTextResolutionSignature[] = {
+ 0x39, 0x03, // pushi 3
+ 0x78, // push1
+ SIG_MAGICDWORD,
+ 0x38, SIG_UINT16(0x276), // pushi 630
+ 0x38, SIG_UINT16(0x1c2), // pushi 450
+ 0x43, 0x49, SIG_UINT16(0x06), // callk Font, 6
+ SIG_END
+};
+
+static const uint16 ramaTextResolutionPatch[] = {
+ PATCH_ADDTOOFFSET(+3), // pushi 3, push1
+ 0x38, PATCH_UINT16(0x280), // pushi 640
+ 0x38, PATCH_UINT16(0x1e0), // pushi 480
+ PATCH_END
+};
+
+// RAMA uses a custom save game format that game scripts read and write
+// manually. The save game format serialises object references, which in the
+// original engine could be done just by writing int16s (since object references
+// were just 16-bit indexes), but in ScummVM we have to write the full 32-bit
+// reg_t. We hijack kFileIOReadWord/kFileIOWriteWord to do this for us, but we
+// need the game to agree to use those kFileIO calls instead of doing raw reads
+// and creating its own numbers, as it tries to do here in
+// `SaveManager::readWord`.
+static const uint16 ramaSerializeRegTSignature1[] = {
+ SIG_MAGICDWORD,
+ 0x38, SIG_SELECTOR16(newWith), // pushi $10b (newWith)
+ 0x7a, // push2
+ 0x7a, // push2
+ 0x72, SIG_UINT16(0x00), // lofsa ""
+ 0x36, // push
+ 0x51, 0x0f, // class Str
+ SIG_END
+};
+
+static const uint16 ramaSerializeRegTPatch1[] = {
+ 0x38, PATCH_SELECTOR16(readWord), // pushi readWord
+ 0x76, // push0
+ 0x62, PATCH_SELECTOR16(saveFilePtr), // pToa saveFilePtr
+ 0x4a, PATCH_UINT16(0x04), // send 4
+ 0x48, // ret
+ PATCH_END
+};
+
+// When opening a datacube on the pocket computer, `DocReader::init` will try
+// to perform arithmetic on a pointer to `thighComputer::plane` and then use the
+// resulting value as the priority for the DocReader. This happened to work in
+// SSCI because the plane pointer would just be a high numeric value, but
+// ScummVM needs an actual number, not a pointer.
+// Applies to at least: US English
+static const uint16 ramaDocReaderInitSignature[] = {
+ 0x39, SIG_SELECTOR8(priority), // pushi $1a (priority)
+ 0x78, // push1
+ 0x39, SIG_SELECTOR8(plane), // pushi $19 (plane)
+ 0x76, // push0
+ 0x7a, // push2
+ SIG_MAGICDWORD,
+ 0x39, 0x2c, // pushi 44
+ 0x76, // push0
+ 0x43, 0x02, SIG_UINT16(0x04), // callk ScriptID, 4
+ SIG_END
+};
+
+static const uint16 ramaDocReaderInitPatch[] = {
+ PATCH_ADDTOOFFSET(+3), // pushi priority, push1
+ 0x39, PATCH_SELECTOR8(priority), // pushi priority
PATCH_END
};
-// script, description, signature patch
static const SciScriptPatcherEntry ramaSignatures[] = {
- { true, 64908, "disable video benchmarking", 1, ramaBenchmarkSignature, ramaBenchmarkPatch },
+ { true, 0, "fix bad text resolution", 1, ramaTextResolutionSignature, ramaTextResolutionPatch },
+ { true, 55, "fix bad DocReader::init priority calculation", 1, ramaDocReaderInitSignature, ramaDocReaderInitPatch },
+ { true, 85, "fix SaveManager to use normal readWord calls", 1, ramaSerializeRegTSignature1, ramaSerializeRegTPatch1 },
+ { true, 64908, "disable video benchmarking", 1, ramaBenchmarkSignature, ramaBenchmarkPatch },
SCI_SIGNATUREENTRY_TERMINATOR
};
@@ -5937,36 +6311,60 @@ static const SciScriptPatcherEntry ramaSignatures[] = {
// In room 35170, there is a CCTV control station with a joystick that must be
// clicked and dragged to pan the camera. In order to enable dragging, on
-// mousedown, the vJoystick::handleEvent method calls vJoystick::doVerb(1),
+// mousedown, the `vJoystick::handleEvent` method calls `vJoystick::doVerb(1)`,
// which enables the drag functionality of the joystick. However,
-// vJoystick::handleEvent then makes a super call to ShiversProp::handleEvent,
-// which calls vJoystick::doVerb(). This second call, which fails to pass an
-// argument, causes an uninitialized read off the stack for the first parameter.
-// In SSCI, this happens to work because the uninitialized value on the stack
-// happens to be 1. Disabling the super call avoids the bad doVerb call without
-// any apparent ill effect.
+// `vJoystick::handleEvent` then makes a super call to
+// `ShiversProp::handleEvent`, which calls `vJoystick::doVerb()`. This second
+// call, which fails to pass an argument, causes an uninitialized read off the
+// stack for the first parameter. In SSCI, this happens to work because the
+// uninitialized value on the stack happens to be 1. Disabling the super call
+// avoids the bad doVerb call without any apparent ill effect.
// The same problem exists when trying to drag the volume & brightness sliders
// in the main menu. These controls are also fixed by this patch.
-static const uint16 shiversSignatureSuperCall[] = {
+// Applies to at least: US English
+static const uint16 shiversEventSuperCallSignature[] = {
SIG_MAGICDWORD,
- 0x38, SIG_UINT16(0xa5), // pushi handleEvent
- 0x78, // push1
- 0x8f, 0x01, // lsp 1
- 0x59, 0x02, // &rest 2
- 0x57, 0x7f, SIG_UINT16(6), // super ShiversProp[7f], 6
+ 0x38, SIG_SELECTOR16(handleEvent), // pushi handleEvent
+ 0x78, // push1
+ 0x8f, 0x01, // lsp 1
+ 0x59, 0x02, // &rest 2
+ 0x57, 0x7f, SIG_UINT16(0x06), // super ShiversProp[7f], 6
SIG_END
};
-static const uint16 shiversPatchSuperCall[] = {
- 0x48, // ret
+static const uint16 shiversEventSuperCallPatch[] = {
+ 0x48, // ret
PATCH_END
};
-// script, description, signature patch
+// When the Ixupi is present in the Gods and Items intro room, the game tries to
+// play a sound using the play selector, but its arguments are only appropriate
+// for the fade selector.
+// If the badly constructed sound object from this call ends up receiving a
+// signal at any time in the future, the game will try to send to a number and
+// crash (because the third argument to play is supposed to be a client object,
+// but here it is a number instead). Other rooms make this same call with the
+// correct fade selector, so fix the selector here to match.
+// Applies to at least: English CD
+static const uint16 shiversGodsIxupiPlaySoundSignature[] = {
+ SIG_MAGICDWORD,
+ 0x39, SIG_SELECTOR8(play), // pushi $33
+ 0x38, SIG_UINT16(0x06), // pushi 6
+ SIG_END
+};
+
+static const uint16 shiversGodsIxupiPlaySoundPatch[] = {
+ 0x38, PATCH_SELECTOR16(fade), // pushi $f3
+ 0x39, 0x06, // pushi 6
+ PATCH_END
+};
+
+// script, description, signature patch
static const SciScriptPatcherEntry shiversSignatures[] = {
- { true, 35170, "fix CCTV joystick interaction", 1, shiversSignatureSuperCall, shiversPatchSuperCall },
- { true, 990, "fix volume & brightness sliders", 2, shiversSignatureSuperCall, shiversPatchSuperCall },
- { true, 64908, "disable video benchmarking", 1, sci2BenchmarkSignature, sci2BenchmarkPatch },
+ { true, 990, "fix volume & brightness sliders", 2, shiversEventSuperCallSignature, shiversEventSuperCallPatch },
+ { true, 23090, "fix bad Ixupi sound call", 1, shiversGodsIxupiPlaySoundSignature, shiversGodsIxupiPlaySoundPatch },
+ { true, 35170, "fix CCTV joystick interaction", 1, shiversEventSuperCallSignature, shiversEventSuperCallPatch },
+ { true, 64908, "disable video benchmarking", 1, sci2BenchmarkSignature, sci2BenchmarkPatch },
SCI_SIGNATUREENTRY_TERMINATOR
};
@@ -5979,13 +6377,13 @@ static const SciScriptPatcherEntry shiversSignatures[] = {
// CPU-dependent in ScummVM).
static const uint16 sq6SlowTransitionSignature1[] = {
SIG_MAGICDWORD,
- 0x38, SIG_UINT16(0x578), // pushi $0578
+ 0x38, SIG_UINT16(0x578), // pushi $578
0x51, 0x33, // class Styler
SIG_END
};
static const uint16 sq6SlowTransitionPatch1[] = {
- 0x38, SIG_UINT16(500), // pushi 500
+ 0x38, SIG_UINT16(0x1f4), // pushi 500
PATCH_END
};
@@ -6001,7 +6399,7 @@ static const uint16 sq6SlowTransitionSignature2[] = {
};
static const uint16 sq6SlowTransitionPatch2[] = {
- 0x38, SIG_UINT16(30), // pushi 30
+ 0x38, SIG_UINT16(0x1e), // pushi 30
PATCH_END
};
@@ -6020,15 +6418,15 @@ static const uint16 sq6BenchmarkSignature[] = {
// script, description, signature patch
static const SciScriptPatcherEntry sq6Signatures[] = {
{ true, 0, "fix slow transitions", 1, sq6SlowTransitionSignature2, sq6SlowTransitionPatch2 },
- { true, 15, "invalid array construction", 1, sci21IntArraySignature, sci21IntArrayPatch },
- { true, 22, "invalid array construction", 1, sci21IntArraySignature, sci21IntArrayPatch },
+ { true, 15, "fix invalid array construction", 1, sci21IntArraySignature, sci21IntArrayPatch },
+ { true, 22, "fix invalid array construction", 1, sci21IntArraySignature, sci21IntArrayPatch },
{ true, 410, "fix slow transitions", 1, sq6SlowTransitionSignature2, sq6SlowTransitionPatch2 },
- { true, 460, "invalid array construction", 1, sci21IntArraySignature, sci21IntArrayPatch },
+ { true, 460, "fix invalid array construction", 1, sci21IntArraySignature, sci21IntArrayPatch },
{ true, 500, "fix slow transitions", 1, sq6SlowTransitionSignature1, sq6SlowTransitionPatch1 },
- { true, 510, "invalid array construction", 1, sci21IntArraySignature, sci21IntArrayPatch },
+ { true, 510, "fix invalid array construction", 1, sci21IntArraySignature, sci21IntArrayPatch },
{ true, 64908, "disable video benchmarking", 1, sq6BenchmarkSignature, sci2BenchmarkPatch },
- { true, 64990, "increase number of save games", 1, sci2NumSavesSignature1, sci2NumSavesPatch1 },
- { true, 64990, "increase number of save games", 1, sci2NumSavesSignature2, sci2NumSavesPatch2 },
+ { true, 64990, "increase number of save games (1/2)", 1, sci2NumSavesSignature1, sci2NumSavesPatch1 },
+ { true, 64990, "increase number of save games (2/2)", 1, sci2NumSavesSignature2, sci2NumSavesPatch2 },
{ true, 64990, "disable change directory button", 1, sci2ChangeDirSignature, sci2ChangeDirPatch },
SCI_SIGNATUREENTRY_TERMINATOR
};
@@ -6036,7 +6434,7 @@ static const SciScriptPatcherEntry sq6Signatures[] = {
#pragma mark -
#pragma mark Torins Passage
-// The init code that runs when Torin starts up unconditionally resets the
+// A subroutine that gets called by 'Torin::init' unconditionally resets the
// audio volumes to defaults, but the game should always use the volume stored
// in ScummVM. This patch is basically identical to the patch for LSL7, except
// that they left line numbers in the LSL7 scripts and changed the music volume.
@@ -6057,21 +6455,21 @@ static const uint16 torinVolumeResetPatch1[] = {
PATCH_END
};
-// The init code that runs when Torin starts up unconditionally resets the
+// A subroutine that gets called by 'Torin::init' unconditionally resets the
// audio volumes to values stored in torin.prf, but the game should always use
// the volume stored in ScummVM. This patch is basically identical to the patch
// for LSL7, except that they left line numbers in the LSL7 scripts.
// Applies to at least: English CD
static const uint16 torinVolumeResetSignature2[] = {
SIG_MAGICDWORD,
- 0x38, SIG_UINT16(0x20b), // pushi $020b
- 0x76, // push0
- SIG_ADDTOOFFSET(6), // advance file stream
- 0xa1, 0xe3, // sag $e3 (music volume)
- SIG_ADDTOOFFSET(10), // advance file stream
- 0xa1, 0xe4, // sag $e4 (sfx volume)
- SIG_ADDTOOFFSET(10), // advance file stream
- 0xa1, 0xe5, // sag $e5 (speech volume)
+ 0x38, SIG_SELECTOR16(readWord), // pushi $020b (readWord)
+ 0x76, // push0
+ SIG_ADDTOOFFSET(6), // advance file stream
+ 0xa1, 0xe3, // sag $e3 (music volume)
+ SIG_ADDTOOFFSET(10), // advance file stream
+ 0xa1, 0xe4, // sag $e4 (sfx volume)
+ SIG_ADDTOOFFSET(10), // advance file stream
+ 0xa1, 0xe5, // sag $e5 (speech volume)
SIG_END
};
@@ -6091,14 +6489,17 @@ static const uint16 torinVolumeResetPatch2[] = {
// tries to worm Boogle to the left side of the cave, the game will hang because
// Boogle is on the wrong side of the navigable area barrier and cannot move
// through it to continue the cutscene. This patch fixes the fast-forward code
-// in the seraglio so that Boogle's in-the-bag flag is set when fast forwarding.
-// Applies to at least: English CD
+// 'soBoogleBackUp::ff' in the seraglio so that Boogle's in-the-bag flag is set
+// when fast forwarding.
+// Applies to at least: English CD, Spanish CD
static const uint16 torinSeraglioBoogleFlagSignature[] = {
0x35, 0x00, // ldi 0
SIG_MAGICDWORD,
0xa3, 0x00, // sal 0
0x38, SIG_SELECTOR16(test), // pushi test
SIG_ADDTOOFFSET(0x5a), // all the rest of the method
+ // CHECKME: Spanish version seems to have a total of 0x5d bytes from this point to the ret
+ // FIXME: Check for end of method (e.g. ret) and add different signatures in case localized versions are different
SIG_END
};
@@ -6287,8 +6688,8 @@ static const uint16 torinPointSoft20700HeapPatch[] = {
static const SciScriptPatcherEntry torinSignatures[] = {
{ true, 20600, "fix wrong boogle bag flag on fast-forward", 1, torinSeraglioBoogleFlagSignature, torinSeraglioBoogleFlagPatch },
{ true, 20700, "fix bad heap in PointSoft release", 1, torinPointSoft20700HeapSignature, torinPointSoft20700HeapPatch },
- { true, 64000, "disable volume reset on startup 1/2", 1, torinVolumeResetSignature1, torinVolumeResetPatch1 },
- { true, 64000, "disable volume reset on startup 2/2", 1, torinVolumeResetSignature2, torinVolumeResetPatch2 },
+ { true, 64000, "disable volume reset on startup (1/2)", 1, torinVolumeResetSignature1, torinVolumeResetPatch1 },
+ { true, 64000, "disable volume reset on startup (2/2)", 1, torinVolumeResetSignature2, torinVolumeResetPatch2 },
{ true, 64866, "increase number of save games", 1, torinLarry7NumSavesSignature, torinLarry7NumSavesPatch },
SCI_SIGNATUREENTRY_TERMINATOR
};
diff --git a/engines/sci/engine/segment.h b/engines/sci/engine/segment.h
index 8eca6713b3..d6e2dd3c24 100644
--- a/engines/sci/engine/segment.h
+++ b/engines/sci/engine/segment.h
@@ -436,7 +436,7 @@ public:
_size(0),
_data(nullptr) {}
- SciArray(const SciArray &array) : Common::Serializable() {
+ SciArray(const SciArray &array) {
_type = array._type;
_size = array._size;
_elementSize = array._elementSize;
@@ -505,10 +505,14 @@ public:
}
/**
- * Returns the size of the array, in bytes.
+ * Returns the maximum number of bytes that can be stored in the array.
*/
uint16 byteSize() const {
- return _size * _elementSize;
+ uint16 size = _size;
+ if (_type == kArrayTypeID || _type == kArrayTypeInt16) {
+ size *= sizeof(uint16);
+ }
+ return size;
}
/**
@@ -527,14 +531,6 @@ public:
}
/**
- * Shrinks a string array to its optimal size.
- */
- void snug() {
- assert(_type == kArrayTypeString || _type == kArrayTypeByte);
- resize(Common::strnlen((char *)_data, _size) + 1, true);
- }
-
- /**
* Returns a pointer to the array's raw data storage.
*/
void *getRawData() { return _data; }
@@ -765,12 +761,12 @@ public:
* Copies values from the source array. Both arrays will be grown if needed
* to prevent out-of-bounds reads/writes.
*/
- void copy(SciArray &source, const uint16 sourceIndex, const uint16 targetIndex, uint16 count) {
- if (count == 65535 /* -1 */) {
+ void copy(SciArray &source, const uint16 sourceIndex, const uint16 targetIndex, int16 count) {
+ if (count == -1) {
count = source.size() - sourceIndex;
}
- if (!count) {
+ if (count < 1) {
return;
}
@@ -892,7 +888,7 @@ public:
break;
}
- return Common::String::format("type %s; %u entries; %u bytes", type, size(), byteSize());
+ return Common::String::format("type %s; %u entries", type, size());
}
protected:
@@ -976,7 +972,7 @@ public:
inline SciBitmap() : _data(nullptr), _dataSize(0), _gc(true) {}
- inline SciBitmap(const SciBitmap &other) : Common::Serializable() {
+ inline SciBitmap(const SciBitmap &other) {
_dataSize = other._dataSize;
_data = (byte *)malloc(other._dataSize);
memcpy(_data, other._data, other._dataSize);
diff --git a/engines/sci/engine/selector.cpp b/engines/sci/engine/selector.cpp
index 971802affb..1feb80844c 100644
--- a/engines/sci/engine/selector.cpp
+++ b/engines/sci/engine/selector.cpp
@@ -226,6 +226,10 @@ void Kernel::mapSelectors() {
FIND_SELECTOR(scratch);
FIND_SELECTOR(num);
FIND_SELECTOR(reallyRestore);
+ FIND_SELECTOR(bookMark);
+ FIND_SELECTOR(fileNumber);
+ FIND_SELECTOR(description);
+ FIND_SELECTOR(dispose);
#endif
}
diff --git a/engines/sci/engine/selector.h b/engines/sci/engine/selector.h
index e2afa74c7a..1603ca94f3 100644
--- a/engines/sci/engine/selector.h
+++ b/engines/sci/engine/selector.h
@@ -183,6 +183,10 @@ struct SelectorCache {
Selector scratch; // for Phant2 save/load patching
Selector num; // for Phant2 restore from launcher
Selector reallyRestore; // for Phant2 restore from launcher
+ Selector bookMark; // for Phant2 auto-save
+ Selector fileNumber; // for RAMA save/load
+ Selector description; // for RAMA save/load
+ Selector dispose; // for RAMA save/load save from launcher
#endif
};
diff --git a/engines/sci/engine/state.cpp b/engines/sci/engine/state.cpp
index 7e7be9923c..343a9496b3 100644
--- a/engines/sci/engine/state.cpp
+++ b/engines/sci/engine/state.cpp
@@ -136,13 +136,14 @@ void EngineState::speedThrottler(uint32 neededSleep) {
}
}
-void EngineState::wait(int16 ticks) {
+int EngineState::wait(int16 ticks) {
uint32 time = g_system->getMillis();
- r_acc = make_reg(0, ((long)time - (long)lastWaitTime) * 60 / 1000);
+ const int tickDelta = ((long)time - (long)lastWaitTime) * 60 / 1000;
lastWaitTime = time;
ticks *= g_debug_sleeptime_factor;
g_sci->sleep(ticks * 1000 / 60);
+ return tickDelta;
}
void EngineState::initGlobals() {
@@ -423,4 +424,16 @@ SciCallOrigin EngineState::getCurrentCallOrigin() const {
return reply;
}
+bool EngineState::callInStack(const reg_t object, const Selector selector) const {
+ Common::List<ExecStack>::const_iterator it;
+ for (it = _executionStack.begin(); it != _executionStack.end(); ++it) {
+ const ExecStack &call = *it;
+ if (call.sendp == object && call.debugSelector == selector) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
} // End of namespace Sci
diff --git a/engines/sci/engine/state.h b/engines/sci/engine/state.h
index 57839ab04e..21c9a1fe9a 100644
--- a/engines/sci/engine/state.h
+++ b/engines/sci/engine/state.h
@@ -126,7 +126,7 @@ public:
uint32 _screenUpdateTime; /**< The last time the game updated the screen */
void speedThrottler(uint32 neededSleep);
- void wait(int16 ticks);
+ int wait(int16 ticks);
#ifdef ENABLE_SCI32
uint32 _eventCounter; /**< total times kGetEvent was invoked since the last call to kFrameOut */
@@ -224,6 +224,11 @@ public:
* Finds and returns the origin of the current call.
*/
SciCallOrigin getCurrentCallOrigin() const;
+
+ /**
+ * Determines whether the given object method is in the current stack.
+ */
+ bool callInStack(const reg_t object, const Selector selector) const;
};
} // End of namespace Sci
diff --git a/engines/sci/engine/vm.cpp b/engines/sci/engine/vm.cpp
index b169e0ec11..785f92bf4a 100644
--- a/engines/sci/engine/vm.cpp
+++ b/engines/sci/engine/vm.cpp
@@ -1056,6 +1056,14 @@ void run_vm(EngineState *s) {
if (!r_temp.isPointer())
error("[VM]: Invalid superclass in object");
else {
+ // SCI3 sets r_acc to whatever was in EAX at the start of a
+ // send. In the case of a super call this is the object ID of
+ // the superclass, as determined by the interpreter, rather than
+ // by the game scripts
+ if (getSciVersion() == SCI_VERSION_3) {
+ s->r_acc = r_temp;
+ }
+
s_temp = s->xs->sp;
s->xs->sp -= ((opparams[1] >> 1) + s->r_rest); // Adjust stack
diff --git a/engines/sci/engine/vm.h b/engines/sci/engine/vm.h
index a8ac7b180f..83550f8aa6 100644
--- a/engines/sci/engine/vm.h
+++ b/engines/sci/engine/vm.h
@@ -149,17 +149,20 @@ enum GlobalVar {
kGlobalVarNewRoomNo = 13,
kGlobalVarScore = 15,
kGlobalVarGK2MusicVolume = 76, // 0 to 127
- kGlobalVarFastCast = 84, // SCI16
- kGlobalVarMessageType = 90,
- kGlobalVarTextSpeed = 94, // SCI32; 0 is fastest, 8 is slowest
+ kGlobalVarPhant2SecondaryVolume = 76, // 0 to 127
+ kGlobalVarFastCast = 84, // SCI16
+ kGlobalVarMessageType = 90,
+ kGlobalVarTextSpeed = 94, // SCI32; 0 is fastest, 8 is slowest
kGlobalVarGK1Music1 = 102, // 0 to 127
kGlobalVarGK1Music2 = 103, // 0 to 127
+ kGlobalVarRamaCatalogFile = 130,
kGlobalVarLSL6HiresGameFlags = 137,
kGlobalVarGK1NarratorMode = 166, // 0 for text, 1 for speech
kGlobalVarPhant1MusicVolume = 187, // 0 to 15
kGlobalVarPhant1DACVolume = 188, // 0 to 127
kGlobalVarLSL6HiresMusicVolume = 194, // 0 to 13
kGlobalVarGK1DAC1 = 207, // 0 to 127
+ kGlobalVarPhant2CensorshipFlag = 207,
kGlobalVarGK1DAC2 = 208, // 0 to 127
kGlobalVarLSL6HiresRestoreTextWindow = 210,
kGlobalVarGK1DAC3 = 211, // 0 to 127
diff --git a/engines/sci/graphics/celobj32.cpp b/engines/sci/graphics/celobj32.cpp
index 687ecd64f3..a49690a703 100644
--- a/engines/sci/graphics/celobj32.cpp
+++ b/engines/sci/graphics/celobj32.cpp
@@ -1003,9 +1003,6 @@ CelObjView::CelObjView(const GuiResourceId viewId, const int16 loopNo, const int
_height = celHeader.getUint16SEAt(2);
assert(_width <= kCelScalerTableSize && _height <= kCelScalerTableSize);
_origin.x = _width / 2 - celHeader.getInt16SEAt(4);
- if (g_sci->_features->usesAlternateSelectors() && _mirrorX) {
- _origin.x = _width - _origin.x - 1;
- }
_origin.y = _height - celHeader.getInt16SEAt(6) - 1;
_skipColor = celHeader[8];
_compressionType = (CelCompressionType)celHeader[9];
diff --git a/engines/sci/graphics/controls32.cpp b/engines/sci/graphics/controls32.cpp
index 7080c108b3..77dfdc20bb 100644
--- a/engines/sci/graphics/controls32.cpp
+++ b/engines/sci/graphics/controls32.cpp
@@ -128,7 +128,7 @@ reg_t GfxControls32::kernelEditText(const reg_t controlObject) {
Plane *plane = new Plane(editorPlaneRect, kPlanePicTransparent);
plane->changePic();
- g_sci->_gfxFrameout->addPlane(*plane);
+ g_sci->_gfxFrameout->addPlane(plane);
CelInfo32 celInfo;
celInfo.type = kCelTypeMem;
diff --git a/engines/sci/graphics/cursor32.cpp b/engines/sci/graphics/cursor32.cpp
index b374e9d512..6eb708531f 100644
--- a/engines/sci/graphics/cursor32.cpp
+++ b/engines/sci/graphics/cursor32.cpp
@@ -35,7 +35,6 @@ GfxCursor32::GfxCursor32() :
_hideCount(0),
_position(0, 0),
_writeToVMAP(false) {
- CursorMan.showMouse(false);
}
void GfxCursor32::init(const Buffer &vmap) {
@@ -46,7 +45,6 @@ void GfxCursor32::init(const Buffer &vmap) {
}
GfxCursor32::~GfxCursor32() {
- CursorMan.showMouse(true);
free(_cursor.data);
free(_cursorBack.data);
free(_drawBuff1.data);
@@ -342,8 +340,9 @@ void GfxCursor32::setPosition(const Common::Point &position) {
newPosition.x = (position.x * Ratio(screenWidth, scriptWidth)).toInt();
newPosition.y = (position.y * Ratio(screenHeight, scriptHeight)).toInt();
- g_system->warpMouse(newPosition.x, newPosition.y);
- deviceMoved(newPosition);
+ if (!deviceMoved(newPosition)) {
+ g_system->warpMouse(newPosition.x, newPosition.y);
+ }
}
void GfxCursor32::gonnaPaint(Common::Rect paintRect) {
@@ -376,7 +375,7 @@ void GfxCursor32::donePainting() {
}
}
-void GfxCursor32::deviceMoved(Common::Point &position) {
+bool GfxCursor32::deviceMoved(Common::Point &position) {
bool restricted = false;
if (position.x < _restrictedArea.left) {
@@ -404,6 +403,8 @@ void GfxCursor32::deviceMoved(Common::Point &position) {
_position = position;
move();
}
+
+ return restricted;
}
void GfxCursor32::move() {
diff --git a/engines/sci/graphics/cursor32.h b/engines/sci/graphics/cursor32.h
index 00a8b9baa4..5872744aec 100644
--- a/engines/sci/graphics/cursor32.h
+++ b/engines/sci/graphics/cursor32.h
@@ -46,7 +46,7 @@ public:
/**
* Called when the hardware mouse moves.
*/
- void deviceMoved(Common::Point &position);
+ bool deviceMoved(Common::Point &position);
/**
* Called by GfxFrameout once for each show
diff --git a/engines/sci/graphics/frameout.cpp b/engines/sci/graphics/frameout.cpp
index 9a7bfc804a..d3e08bf1c1 100644
--- a/engines/sci/graphics/frameout.cpp
+++ b/engines/sci/graphics/frameout.cpp
@@ -275,7 +275,7 @@ void GfxFrameout::kernelAddPlane(const reg_t object) {
updatePlane(*plane);
} else {
plane = new Plane(object);
- addPlane(*plane);
+ addPlane(plane);
}
}
@@ -351,17 +351,17 @@ int16 GfxFrameout::kernelGetHighPlanePri() {
return _planes.getTopSciPlanePriority();
}
-void GfxFrameout::addPlane(Plane &plane) {
- if (_planes.findByObject(plane._object) == nullptr) {
- plane.clipScreenRect(_screenRect);
- _planes.add(&plane);
- } else {
- plane._deleted = 0;
- if (plane._created == 0) {
- plane._moved = g_sci->_gfxFrameout->getScreenCount();
- }
- _planes.sort();
+void GfxFrameout::addPlane(Plane *plane) {
+ // In SSCI, if a plane with the same object ID already existed, this call
+ // would cancel deletion and update an already-existing plane, but callers
+ // expect the passed plane object to become memory-managed by GfxFrameout,
+ // so doing what SSCI did would end up leaking the Plane objects
+ if (_planes.findByObject(plane->_object) != nullptr) {
+ error("Plane %04x:%04x already exists", PRINT_REG(plane->_object));
}
+
+ plane->clipScreenRect(_screenRect);
+ _planes.add(plane);
}
void GfxFrameout::updatePlane(Plane &plane) {
diff --git a/engines/sci/graphics/frameout.h b/engines/sci/graphics/frameout.h
index ddaa17ca3d..cd48c78fdd 100644
--- a/engines/sci/graphics/frameout.h
+++ b/engines/sci/graphics/frameout.h
@@ -120,15 +120,13 @@ private:
public:
/**
- * Creates and adds a new plane to the plane list, or
- * cancels deletion and updates an already-existing
- * plane if a plane matching the given plane VM object
- * already exists within the current plane list.
+ * Creates and adds a new plane to the plane list. Ownership of the passed
+ * object is transferred to GfxFrameout.
*
* @note This method is on Screen in SCI engine, but it
* is only ever called on `GraphicsMgr.screen`.
*/
- void addPlane(Plane &plane);
+ void addPlane(Plane *plane);
/**
* Deletes a plane within the current plane list.
diff --git a/engines/sci/graphics/helpers.h b/engines/sci/graphics/helpers.h
index 52699c6242..38da280701 100644
--- a/engines/sci/graphics/helpers.h
+++ b/engines/sci/graphics/helpers.h
@@ -52,10 +52,6 @@ typedef int16 TextAlignment;
#define PORTS_FIRSTWINDOWID 2
#define PORTS_FIRSTSCRIPTWINDOWID 3
-#ifdef ENABLE_SCI32
-#define PRINT_RECT(x) (x).left,(x).top,(x).right,(x).bottom
-#endif
-
struct Port {
uint16 id;
int16 top, left;
diff --git a/engines/sci/graphics/screen_item32.cpp b/engines/sci/graphics/screen_item32.cpp
index cac643edf9..8e4f713eb6 100644
--- a/engines/sci/graphics/screen_item32.cpp
+++ b/engines/sci/graphics/screen_item32.cpp
@@ -361,7 +361,7 @@ void ScreenItem::calcRects(const Plane &plane) {
const Ratio scriptToScreenX = Ratio(screenWidth, scriptWidth);
const Ratio scriptToScreenY = Ratio(screenHeight, scriptHeight);
- if (/* TODO: dword_C6288 */ false && _celInfo.type == kCelTypePic) {
+ if (/* TODO: dword_C6288 */ (false) && _celInfo.type == kCelTypePic) {
_scaledPosition.x = _position.x;
_scaledPosition.y = _position.y;
} else {
diff --git a/engines/sci/graphics/video32.cpp b/engines/sci/graphics/video32.cpp
index c9c48eb9fd..91e48612d8 100644
--- a/engines/sci/graphics/video32.cpp
+++ b/engines/sci/graphics/video32.cpp
@@ -408,7 +408,22 @@ AVIPlayer::IOStatus AVIPlayer::init(const bool doublePixels) {
_drawRect.setHeight(height);
if (!startHQVideo() && _decoder->getPixelFormat().bytesPerPixel != 1) {
- g_sci->_gfxFrameout->setPixelFormat(_decoder->getPixelFormat());
+ const Common::List<Graphics::PixelFormat> outFormats = g_system->getSupportedFormats();
+ Graphics::PixelFormat inFormat = _decoder->getPixelFormat();
+ Graphics::PixelFormat bestFormat = outFormats.front();
+ Common::List<Graphics::PixelFormat>::const_iterator it;
+ for (it = outFormats.begin(); it != outFormats.end(); ++it) {
+ if (*it == inFormat) {
+ bestFormat = inFormat;
+ break;
+ }
+ }
+
+ if (bestFormat.bytesPerPixel != 2 && bestFormat.bytesPerPixel != 4) {
+ error("Failed to find any valid output pixel format");
+ }
+
+ g_sci->_gfxFrameout->setPixelFormat(bestFormat);
}
return kIOSuccess;
@@ -681,7 +696,7 @@ VMDPlayer::EventFlags VMDPlayer::playUntilEvent(const EventFlags flags, const ui
if (!_blackoutRect.isEmpty() && _planeIsOwned) {
_blackoutPlane = new Plane(_blackoutRect);
- g_sci->_gfxFrameout->addPlane(*_blackoutPlane);
+ g_sci->_gfxFrameout->addPlane(_blackoutPlane);
}
if (shouldUseCompositing()) {
@@ -882,7 +897,7 @@ void VMDPlayer::initComposited() {
if (_priority) {
_plane->_priority = _priority;
}
- g_sci->_gfxFrameout->addPlane(*_plane);
+ g_sci->_gfxFrameout->addPlane(_plane);
_screenItem = new ScreenItem(_plane->_object, vmdCelInfo, Common::Point(), vmdScaleInfo);
} else {
_screenItem = new ScreenItem(_plane->_object, vmdCelInfo, Common::Point(_drawRect.left, _drawRect.top), vmdScaleInfo);
@@ -1025,7 +1040,7 @@ void DuckPlayer::open(const GuiResourceId resourceId, const int displayMode, con
if (_doFrameOut) {
_plane = new Plane(_drawRect, kPlanePicColored);
- g_sci->_gfxFrameout->addPlane(*_plane);
+ g_sci->_gfxFrameout->addPlane(_plane);
g_sci->_gfxFrameout->frameOut(true);
}
diff --git a/engines/sci/graphics/view.cpp b/engines/sci/graphics/view.cpp
index 788b473a0f..ed849cff96 100644
--- a/engines/sci/graphics/view.cpp
+++ b/engines/sci/graphics/view.cpp
@@ -46,51 +46,51 @@ static const byte EGAmappingStraight[SCI_VIEW_EGAMAPPING_SIZE] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
};
-static const byte ViewInject_LauraBow2_Dual[] = {
+static const byte ViewInject_LauraBow2_Both[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x37,0x37,0x37,0x37,0x00,0x00,0x37,0x37,0x00,0x00,0x37,0x37,0x00,0x00,0x00,0x37,0x37,0x37,0x00,0x00,0x37,0x37,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x08,0x08,0x08,0x08,0x37,0x00,0x37,0x08,0x32,0x00,0x37,0x08,0x32,0x00,0x37,0x08,0x08,0x08,0x37,0x00,0x37,0x08,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x08,0x33,0x32,0x37,0x08,0x00,0x37,0x08,0x32,0x00,0x37,0x08,0x32,0x37,0x08,0x32,0x32,0x33,0x08,0x32,0x37,0x08,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x08,0x32,0x00,0x37,0x08,0x32,0x37,0x08,0x32,0x00,0x37,0x08,0x32,0x37,0x08,0x33,0x37,0x37,0x08,0x32,0x37,0x08,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x08,0x32,0x00,0x37,0x08,0x32,0x37,0x08,0x32,0x00,0x37,0x08,0x32,0x37,0x08,0x08,0x08,0x08,0x08,0x32,0x37,0x08,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x08,0x32,0x00,0x37,0x08,0x32,0x37,0x08,0x32,0x00,0x37,0x08,0x32,0x37,0x08,0x32,0x32,0x33,0x08,0x32,0x37,0x08,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x08,0x33,0x37,0x37,0x08,0x32,0x37,0x08,0x33,0x37,0x37,0x08,0x32,0x37,0x08,0x32,0x00,0x37,0x08,0x32,0x37,0x08,0x33,0x37,0x37,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x08,0x08,0x08,0x08,0x32,0x00,0x00,0x37,0x08,0x08,0x08,0x32,0x00,0x37,0x08,0x32,0x00,0x37,0x08,0x32,0x37,0x08,0x08,0x08,0x08,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x32,0x32,0x32,0x00,0x00,0x00,0x00,0x32,0x32,0x32,0x00,0x00,0x00,0x32,0x32,0x00,0x00,0x32,0x32,0x00,0x32,0x32,0x32,0x32,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x37,0x37,0x37,0x37,0x00,0x00,0x00,0x37,0x37,0x37,0x37,0x00,0x00,0x37,0x37,0x37,0x37,0x37,0x37,0x00,0x37,0x37,0x00,0x00,0x37,0x37,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x08,0x08,0x08,0x08,0x37,0x00,0x37,0x37,0x08,0x08,0x08,0x32,0x00,0x37,0x08,0x08,0x08,0x08,0x08,0x32,0x37,0x08,0x32,0x00,0x37,0x08,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x08,0x32,0x32,0x00,0x08,0x32,0x37,0x08,0x32,0x32,0x00,0x08,0x32,0x00,0x00,0x32,0x08,0x32,0x32,0x32,0x37,0x08,0x32,0x00,0x37,0x08,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x08,0x32,0x00,0x37,0x08,0x32,0x37,0x08,0x32,0x00,0x37,0x08,0x32,0x00,0x00,0x37,0x08,0x32,0x00,0x00,0x37,0x08,0x00,0x37,0x37,0x08,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x08,0x32,0x08,0x08,0x32,0x00,0x37,0x08,0x32,0x00,0x37,0x08,0x32,0x00,0x00,0x37,0x08,0x32,0x00,0x00,0x37,0x08,0x08,0x08,0x08,0x08,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x08,0x32,0x32,0x00,0x08,0x32,0x37,0x08,0x32,0x00,0x37,0x08,0x32,0x00,0x00,0x37,0x08,0x32,0x00,0x00,0x37,0x08,0x32,0x32,0x37,0x08,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x08,0x00,0x37,0x37,0x08,0x32,0x37,0x08,0x00,0x37,0x37,0x08,0x32,0x00,0x00,0x37,0x08,0x32,0x00,0x00,0x37,0x08,0x32,0x00,0x37,0x08,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x08,0x08,0x08,0x08,0x32,0x00,0x00,0x37,0x08,0x08,0x08,0x32,0x00,0x00,0x00,0x37,0x08,0x32,0x00,0x00,0x37,0x08,0x32,0x00,0x37,0x08,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x32,0x32,0x32,0x00,0x00,0x00,0x00,0x32,0x32,0x32,0x00,0x00,0x00,0x00,0x00,0x32,0x32,0x00,0x00,0x00,0x32,0x32,0x00,0x00,0x32,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
-static const byte ViewInject_KingsQuest6_Dual1[] = {
+static const byte ViewInject_KingsQuest6_Both1[] = {
0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x13,
0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x13,0x11,
0x16,0x17,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,
- 0x16,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x17,0x16,0x16,0x16,0x16,0x13,0x13,0x17,0x16,0x13,0x13,0x17,0x16,0x13,0x13,0x13,0x17,0x16,0x16,0x13,0x13,0x17,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,
- 0x16,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x16,0x10,0x10,0x10,0x10,0x16,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x10,0x10,0x16,0x13,0x16,0x10,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,
- 0x16,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x16,0x10,0x11,0x11,0x16,0x10,0x11,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x16,0x10,0x11,0x11,0x13,0x10,0x11,0x16,0x10,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,
- 0x16,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x16,0x10,0x13,0x16,0x16,0x10,0x11,0x16,0x10,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,
- 0x16,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x16,0x10,0x10,0x10,0x10,0x10,0x11,0x16,0x10,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,
- 0x16,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x16,0x10,0x11,0x11,0x13,0x10,0x11,0x16,0x10,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,
- 0x16,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x16,0x10,0x13,0x16,0x16,0x10,0x11,0x16,0x10,0x13,0x16,0x16,0x10,0x11,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x16,0x10,0x13,0x16,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,
- 0x16,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x16,0x10,0x10,0x10,0x10,0x11,0x11,0x13,0x16,0x10,0x10,0x10,0x11,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x13,0x10,0x10,0x10,0x10,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,
- 0x16,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x13,0x13,0x13,0x11,0x11,0x11,0x13,0x13,0x13,0x11,0x11,0x13,0x13,0x11,0x11,0x13,0x11,0x11,0x11,0x11,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,
+ 0x16,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x17,0x16,0x16,0x16,0x16,0x13,0x13,0x13,0x17,0x16,0x16,0x16,0x13,0x13,0x17,0x16,0x16,0x16,0x16,0x16,0x13,0x17,0x16,0x13,0x13,0x17,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,
+ 0x16,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x16,0x10,0x10,0x10,0x10,0x16,0x13,0x16,0x16,0x10,0x10,0x10,0x11,0x13,0x16,0x10,0x10,0x10,0x10,0x10,0x11,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,
+ 0x16,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x16,0x10,0x11,0x11,0x13,0x10,0x11,0x16,0x10,0x11,0x11,0x13,0x10,0x11,0x13,0x13,0x11,0x10,0x11,0x11,0x11,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,
+ 0x16,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x13,0x13,0x16,0x10,0x11,0x13,0x13,0x16,0x10,0x13,0x16,0x16,0x10,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,
+ 0x16,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x16,0x10,0x11,0x10,0x10,0x11,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x13,0x13,0x16,0x10,0x11,0x13,0x13,0x16,0x10,0x10,0x10,0x10,0x10,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,
+ 0x16,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x16,0x10,0x11,0x11,0x13,0x10,0x11,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x13,0x13,0x16,0x10,0x11,0x13,0x13,0x16,0x10,0x11,0x11,0x13,0x10,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,
+ 0x16,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x16,0x10,0x13,0x16,0x16,0x10,0x11,0x16,0x10,0x13,0x16,0x16,0x10,0x11,0x13,0x13,0x16,0x10,0x11,0x13,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,
+ 0x16,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x16,0x10,0x10,0x10,0x10,0x11,0x13,0x13,0x16,0x10,0x10,0x10,0x11,0x13,0x13,0x13,0x16,0x10,0x11,0x13,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,
+ 0x16,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,0x11,0x11,0x13,0x13,0x13,0x13,0x11,0x11,0x11,0x13,0x13,0x13,0x13,0x13,0x11,0x11,0x13,0x13,0x13,0x11,0x11,0x13,0x13,0x11,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,
0x16,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,
0x16,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x13,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11
};
-static const byte ViewInject_KingsQuest6_Dual2[] = {
+static const byte ViewInject_KingsQuest6_Both2[] = {
0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
0x10,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x10,
0x10,0x13,0x16,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x10,0x10,
- 0x10,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x16,0x13,0x13,0x13,0x13,0x11,0x11,0x16,0x13,0x11,0x11,0x16,0x13,0x11,0x11,0x11,0x16,0x13,0x13,0x11,0x11,0x16,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,
- 0x10,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x13,0x16,0x16,0x16,0x16,0x13,0x11,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x13,0x16,0x16,0x16,0x13,0x11,0x13,0x16,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,
- 0x10,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x13,0x16,0x10,0x10,0x13,0x16,0x10,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x13,0x16,0x10,0x10,0x11,0x16,0x10,0x13,0x16,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,
- 0x10,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x13,0x16,0x11,0x13,0x13,0x16,0x10,0x13,0x16,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,
- 0x10,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x13,0x16,0x16,0x16,0x16,0x16,0x10,0x13,0x16,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,
- 0x10,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x13,0x16,0x10,0x10,0x11,0x16,0x10,0x13,0x16,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,
- 0x10,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x13,0x16,0x11,0x13,0x13,0x16,0x10,0x13,0x16,0x11,0x13,0x13,0x16,0x10,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x13,0x16,0x11,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,
- 0x10,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x13,0x16,0x16,0x16,0x16,0x10,0x10,0x11,0x13,0x16,0x16,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x16,0x16,0x16,0x16,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,
- 0x10,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x10,0x10,0x10,0x11,0x11,0x11,0x10,0x10,0x11,0x11,0x10,0x10,0x11,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,
+ 0x10,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x16,0x13,0x13,0x13,0x13,0x11,0x11,0x11,0x16,0x13,0x13,0x13,0x11,0x11,0x16,0x13,0x13,0x13,0x13,0x13,0x11,0x16,0x13,0x11,0x11,0x16,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,
+ 0x10,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x13,0x16,0x16,0x16,0x16,0x13,0x11,0x13,0x13,0x16,0x16,0x16,0x13,0x11,0x13,0x16,0x16,0x16,0x16,0x16,0x10,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,
+ 0x10,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x13,0x16,0x10,0x10,0x11,0x16,0x10,0x13,0x16,0x11,0x10,0x13,0x16,0x10,0x11,0x11,0x10,0x16,0x10,0x10,0x10,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,
+ 0x10,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x11,0x13,0x16,0x10,0x11,0x11,0x13,0x16,0x11,0x13,0x13,0x16,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,
+ 0x10,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x13,0x16,0x10,0x16,0x16,0x10,0x10,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x11,0x13,0x16,0x10,0x11,0x11,0x13,0x16,0x16,0x16,0x16,0x16,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,
+ 0x10,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x13,0x16,0x10,0x10,0x11,0x16,0x10,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x11,0x13,0x16,0x10,0x11,0x11,0x13,0x16,0x10,0x10,0x11,0x16,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,
+ 0x10,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x13,0x16,0x11,0x13,0x13,0x16,0x10,0x13,0x16,0x11,0x13,0x13,0x16,0x10,0x11,0x11,0x13,0x16,0x10,0x11,0x11,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,
+ 0x10,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x13,0x16,0x16,0x16,0x16,0x10,0x11,0x11,0x13,0x16,0x16,0x16,0x10,0x11,0x11,0x11,0x13,0x16,0x10,0x11,0x11,0x13,0x16,0x10,0x11,0x13,0x16,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,
+ 0x10,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x11,0x11,0x11,0x10,0x10,0x11,0x11,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,
0x10,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,
0x10,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10
@@ -335,13 +335,13 @@ void GfxView::initData(GuiResourceId resourceId) {
}
// Inject our own views
- // Currently only used for Dual mode (speech + text) for games, that do not have a "dual" icon already
+ // Currently only used for Dual mode (speech + text) for games, that do not have a "BOTH" icon already
// Which is Laura Bow 2 + King's Quest 6
switch (g_sci->getGameId()) {
case GID_LAURABOW2:
// View 995, Loop 13, Cel 0 = "TEXT"
// View 995, Loop 13, Cel 1 = "SPEECH"
- // View 995, Loop 13, Cel 2 = "DUAL" (<- our injected view)
+ // View 995, Loop 13, Cel 2 = "BOTH" (<- our injected view)
if (g_sci->isCD() && resourceId == 995) {
// security checks
if (_loop.size() >= 14 &&
@@ -353,7 +353,7 @@ void GfxView::initData(GuiResourceId resourceId) {
// Duplicate cel 0 to cel 2
_loop[13].cel[2] = _loop[13].cel[0];
// use our data (which is uncompressed bitmap data)
- _loop[13].cel[2].rawBitmap->allocateFromSpan(SciSpan<const byte>(ViewInject_LauraBow2_Dual, sizeof(ViewInject_LauraBow2_Dual)));
+ _loop[13].cel[2].rawBitmap->allocateFromSpan(SciSpan<const byte>(ViewInject_LauraBow2_Both, sizeof(ViewInject_LauraBow2_Both)));
}
}
break;
@@ -362,8 +362,8 @@ void GfxView::initData(GuiResourceId resourceId) {
// View 947, Loop 8, Cel 1 = "SPEECH" (pressed)
// View 947, Loop 9, Cel 0 = "TEXT" (not pressed)
// View 947, Loop 9, Cel 1 = "TEXT" (pressed)
- // View 947, Loop 12, Cel 0 = "DUAL" (not pressed) (<- our injected view)
- // View 947, Loop 12, Cel 1 = "DUAL" (pressed) (<- our injected view)
+ // View 947, Loop 12, Cel 0 = "BOTH" (not pressed) (<- our injected view)
+ // View 947, Loop 12, Cel 1 = "BOTH" (pressed) (<- our injected view)
if (g_sci->isCD() && resourceId == 947) {
// security checks
if (_loop.size() == 12 &&
@@ -376,8 +376,8 @@ void GfxView::initData(GuiResourceId resourceId) {
// copy loop 8 to loop 12
_loop[12] = _loop[8];
// use our data (which is uncompressed bitmap data)
- _loop[12].cel[0].rawBitmap->allocateFromSpan(SciSpan<const byte>(ViewInject_KingsQuest6_Dual1, sizeof(ViewInject_KingsQuest6_Dual1)));
- _loop[12].cel[1].rawBitmap->allocateFromSpan(SciSpan<const byte>(ViewInject_KingsQuest6_Dual2, sizeof(ViewInject_KingsQuest6_Dual2)));
+ _loop[12].cel[0].rawBitmap->allocateFromSpan(SciSpan<const byte>(ViewInject_KingsQuest6_Both1, sizeof(ViewInject_KingsQuest6_Both1)));
+ _loop[12].cel[1].rawBitmap->allocateFromSpan(SciSpan<const byte>(ViewInject_KingsQuest6_Both2, sizeof(ViewInject_KingsQuest6_Both2)));
}
}
break;
diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp
index ee0f38934d..8d2723153d 100644
--- a/engines/sci/resource.cpp
+++ b/engines/sci/resource.cpp
@@ -141,12 +141,19 @@ static const char *const s_resourceTypeSuffixes[] = {
};
const char *getResourceTypeName(ResourceType restype) {
- if (restype != kResourceTypeInvalid)
+ if (restype < ARRAYSIZE(s_resourceTypeNames))
return s_resourceTypeNames[restype];
else
return "invalid";
}
+const char *getResourceTypeExtension(ResourceType restype) {
+ if (restype < ARRAYSIZE(s_resourceTypeSuffixes))
+ return s_resourceTypeSuffixes[restype];
+ else
+ return "";
+}
+
static const ResourceType s_resTypeMapSci0[] = {
kResourceTypeView, kResourceTypePic, kResourceTypeScript, kResourceTypeText, // 0x00-0x03
kResourceTypeSound, kResourceTypeMemory, kResourceTypeVocab, kResourceTypeFont, // 0x04-0x07
@@ -1919,7 +1926,11 @@ int ResourceManager::readResourceMapSCI1(ResourceSource *map) {
volumeName = "RESAUD.001";
}
} else if (resId.getNumber() == 65535) {
- volumeName = Common::String::format("RESSFX.%03d", mapVolumeNr);
+ if (g_sci->getGameId() == GID_RAMA && Common::File::exists("RESOURCE.SFX")) {
+ volumeName = "RESOURCE.SFX";
+ } else {
+ volumeName = Common::String::format("RESSFX.%03d", mapVolumeNr);
+ }
} else {
volumeName = Common::String::format("RESAUD.%03d", mapVolumeNr);
}
@@ -2608,9 +2619,6 @@ void ResourceManager::detectSciVersion() {
}
error("Failed to accurately determine SCI version");
- // No parser, we assume SCI_VERSION_01.
- s_sciVersion = SCI_VERSION_01;
- return;
}
// New decompressors. It's either SCI_VERSION_1_EGA_ONLY or SCI_VERSION_1_EARLY.
diff --git a/engines/sci/resource.h b/engines/sci/resource.h
index 830fe997e6..9fc9708e74 100644
--- a/engines/sci/resource.h
+++ b/engines/sci/resource.h
@@ -129,6 +129,7 @@ enum ResourceType {
};
const char *getResourceTypeName(ResourceType restype);
+const char *getResourceTypeExtension(ResourceType restype);
enum ResVersion {
kResVersionUnknown,
@@ -197,7 +198,11 @@ public:
Common::String toPatchNameBase36() const {
Common::String output;
- output += (getType() == kResourceTypeAudio36) ? '@' : '#'; // Identifier
+ if (getSciVersion() >= SCI_VERSION_2) {
+ output += (getType() == kResourceTypeAudio36) ? 'A' : 'S'; // Identifier
+ } else {
+ output += (getType() == kResourceTypeAudio36) ? '@' : '#'; // Identifier
+ }
output += intToBase36(getNumber(), 3); // Map
output += intToBase36(getTuple() >> 24, 2); // Noun
output += intToBase36((getTuple() >> 16) & 0xff, 2); // Verb
diff --git a/engines/sci/resource_audio.cpp b/engines/sci/resource_audio.cpp
index 39d742ac95..b1d2a91a59 100644
--- a/engines/sci/resource_audio.cpp
+++ b/engines/sci/resource_audio.cpp
@@ -339,13 +339,19 @@ int ResourceManager::readAudioMapSCI11(IntMapResourceSource *map) {
SciSpan<const byte>::const_iterator ptr = mapRes->cbegin();
- // Heuristic to detect entry size
uint32 entrySize = 0;
- for (int i = mapRes->size() - 1; i >= 0; --i) {
- if (ptr[i] == 0xff)
- entrySize++;
- else
- break;
+ if (_volVersion >= kResVersionSci2) {
+ // The heuristic size detection is incompatible with at least Torin RU,
+ // which is fine because it is not needed for SCI32
+ entrySize = 11;
+ } else {
+ // Heuristic to detect entry size
+ for (int i = mapRes->size() - 1; i >= 0; --i) {
+ if (ptr[i] == 0xff)
+ entrySize++;
+ else
+ break;
+ }
}
if (map->_mapNumber == 65535) {
@@ -419,20 +425,34 @@ int ResourceManager::readAudioMapSCI11(IntMapResourceSource *map) {
disposeVolumeFileStream(stream, src);
} else {
- bool isEarly = (entrySize != 11);
+ // EQ1CD & SQ4CD are "early" games; KQ6CD and all SCI32 are "late" games
+ const bool isEarly = (entrySize != 11);
if (!isEarly) {
offset = ptr.getUint32LE();
ptr += 4;
}
+ enum {
+ kRaveFlag = 0x40,
+ kSyncFlag = 0x80,
+ kEndOfMapFlag = 0xFF
+ };
+
while (ptr != mapRes->cend()) {
uint32 n = ptr.getUint32BE();
uint32 syncSize = 0;
ptr += 4;
- if (n == 0xffffffff)
+ // Checking the entire tuple breaks Torin RU and is not how SSCI
+ // works
+ if ((n & kEndOfMapFlag) == kEndOfMapFlag) {
+ const uint32 bytesLeft = mapRes->cend() - ptr;
+ if (bytesLeft >= entrySize) {
+ warning("End of %s reached, but %u entries remain", mapResId.toString().c_str(), bytesLeft / entrySize);
+ }
break;
+ }
if (isEarly) {
offset = ptr.getUint32LE();
@@ -442,7 +462,7 @@ int ResourceManager::readAudioMapSCI11(IntMapResourceSource *map) {
ptr += 3;
}
- if (isEarly || (n & 0x80)) {
+ if (isEarly || (n & kSyncFlag)) {
syncSize = ptr.getUint16LE();
ptr += 2;
@@ -455,7 +475,7 @@ int ResourceManager::readAudioMapSCI11(IntMapResourceSource *map) {
// Checking for this 0x40 flag breaks at least Laura Bow 2 CD 1.1
// map 448
- if (g_sci->getGameId() == GID_KQ6 && (n & 0x40)) {
+ if (g_sci->getGameId() == GID_KQ6 && (n & kRaveFlag)) {
// This seems to define the size of raw lipsync data (at least
// in KQ6 CD Windows).
uint32 kq6HiresSyncSize = ptr.getUint16LE();
diff --git a/engines/sci/sci.cpp b/engines/sci/sci.cpp
index f5e327c619..6ed7411020 100644
--- a/engines/sci/sci.cpp
+++ b/engines/sci/sci.cpp
@@ -569,6 +569,10 @@ bool SciEngine::initGame() {
// Load game language into printLang property of game object
setSciLanguage();
+#ifdef ENABLE_SCI32
+ _guestAdditions->sciEngineInitGameHook();
+#endif
+
return true;
}
diff --git a/engines/sci/sci.h b/engines/sci/sci.h
index ff3b515dcc..faa153221a 100644
--- a/engines/sci/sci.h
+++ b/engines/sci/sci.h
@@ -57,6 +57,7 @@ namespace Sci {
#define GAMEOPTION_HIGH_RESOLUTION_GRAPHICS GUIO_GAMEOPTIONS8
#define GAMEOPTION_ENABLE_BLACK_LINED_VIDEO GUIO_GAMEOPTIONS9
#define GAMEOPTION_HQ_VIDEO GUIO_GAMEOPTIONS10
+#define GAMEOPTION_ENABLE_CENSORING GUIO_GAMEOPTIONS11
struct EngineState;
class Vocabulary;
diff --git a/engines/sci/sound/audio32.cpp b/engines/sci/sound/audio32.cpp
index c3f9eb4098..2f30f7dd79 100644
--- a/engines/sci/sound/audio32.cpp
+++ b/engines/sci/sound/audio32.cpp
@@ -46,6 +46,46 @@
namespace Sci {
+bool detectSolAudio(Common::SeekableReadStream &stream) {
+ const size_t initialPosition = stream.pos();
+
+ byte header[6];
+ if (stream.read(header, sizeof(header)) != sizeof(header)) {
+ stream.seek(initialPosition);
+ return false;
+ }
+
+ stream.seek(initialPosition);
+
+ if ((header[0] & 0x7f) != kResourceTypeAudio || READ_BE_UINT32(header + 2) != MKTAG('S', 'O', 'L', 0)) {
+ return false;
+ }
+
+ return true;
+}
+
+bool detectWaveAudio(Common::SeekableReadStream &stream) {
+ const size_t initialPosition = stream.pos();
+
+ byte blockHeader[8];
+ if (stream.read(blockHeader, sizeof(blockHeader)) != sizeof(blockHeader)) {
+ stream.seek(initialPosition);
+ return false;
+ }
+
+ stream.seek(initialPosition);
+ const uint32 headerType = READ_BE_UINT32(blockHeader);
+
+ if (headerType != MKTAG('R', 'I', 'F', 'F')) {
+ return false;
+ }
+
+ return true;
+}
+
+#pragma mark -
+#pragma mark MutableLoopAudioStream
+
class MutableLoopAudioStream : public Audio::AudioStream {
public:
MutableLoopAudioStream(Audio::RewindableAudioStream *stream, const bool loop_, const DisposeAfterUse::Flag dispose = DisposeAfterUse::YES) :
@@ -63,6 +103,7 @@ public:
samplesRead = _stream->readBuffer(buffer, numSamples);
totalSamplesRead += samplesRead;
numSamples -= samplesRead;
+ buffer += samplesRead;
} while (samplesRead > 0 && _loop && numSamples > 0);
return totalSamplesRead;
}
@@ -104,43 +145,6 @@ private:
bool _loop;
};
-bool detectSolAudio(Common::SeekableReadStream &stream) {
- const size_t initialPosition = stream.pos();
-
- byte header[6];
- if (stream.read(header, sizeof(header)) != sizeof(header)) {
- stream.seek(initialPosition);
- return false;
- }
-
- stream.seek(initialPosition);
-
- if ((header[0] & 0x7f) != kResourceTypeAudio || READ_BE_UINT32(header + 2) != MKTAG('S', 'O', 'L', 0)) {
- return false;
- }
-
- return true;
-}
-
-bool detectWaveAudio(Common::SeekableReadStream &stream) {
- const size_t initialPosition = stream.pos();
-
- byte blockHeader[8];
- if (stream.read(blockHeader, sizeof(blockHeader)) != sizeof(blockHeader)) {
- stream.seek(initialPosition);
- return false;
- }
-
- stream.seek(initialPosition);
- const uint32 headerType = READ_BE_UINT32(blockHeader);
-
- if (headerType != MKTAG('R', 'I', 'F', 'F')) {
- return false;
- }
-
- return true;
-}
-
#pragma mark -
Audio32::Audio32(ResourceManager *resMan) :
@@ -359,6 +363,17 @@ int Audio32::readBuffer(Audio::st_sample_t *const buffer, const int numSamples)
} else if (volume > 84 && volume < kMaxVolume) {
volume = 63;
}
+ } else if (getSciVersion() == SCI_VERSION_3 && volume != kMaxVolume) {
+ // In SCI3, granularity of the non-maximum volumes is 1/32
+ volume &= ~4;
+
+ // NOTE: In the SSCI DOS interpreter, non-maximum volumes are
+ // divided by 8 which puts them in a range of [0, 16). That
+ // reduced volume range gets passed into a volume function which
+ // expects values [0, 32). So, effectively, all non-maximum
+ // volumes are half-volume in DOS in SCI3. In Windows, volumes
+ // [120, 124) are the same as 127 due to a programming bug.
+ // We do not emulate either of these incorrect behaviors.
}
leftVolume = rightVolume = volume * Audio::Mixer::kMaxChannelVolume / kMaxVolume;
diff --git a/engines/sci/sound/audio32.h b/engines/sci/sound/audio32.h
index a994113e32..8b8ec2a6b5 100644
--- a/engines/sci/sound/audio32.h
+++ b/engines/sci/sound/audio32.h
@@ -35,6 +35,9 @@
namespace Sci {
class Console;
+bool detectSolAudio(Common::SeekableReadStream &stream);
+bool detectWaveAudio(Common::SeekableReadStream &stream);
+
#pragma mark AudioChannel
/**
@@ -130,6 +133,8 @@ struct AudioChannel {
int pan;
};
+#pragma mark -
+
/**
* Special audio channel indexes used to select a channel
* for digital audio playback.
diff --git a/engines/sci/sound/drivers/midi.cpp b/engines/sci/sound/drivers/midi.cpp
index 6821b2219f..3f6149daf9 100644
--- a/engines/sci/sound/drivers/midi.cpp
+++ b/engines/sci/sound/drivers/midi.cpp
@@ -134,6 +134,12 @@ public:
kMaxSysExSize = 264
};
+ enum Mt32Type {
+ kMt32TypeNone,
+ kMt32TypeReal,
+ kMt32TypeEmulated
+ };
+
MidiPlayer_Midi(SciVersion version);
virtual ~MidiPlayer_Midi();
@@ -191,7 +197,7 @@ private:
keyShift(0), volAdjust(0), pan(0x40), hold(0), volume(0x7f) { }
};
- bool _isMt32;
+ Mt32Type _mt32Type;
bool _useMT32Track;
bool _hasReverb;
bool _playSwitch;
@@ -214,12 +220,17 @@ private:
byte _sysExBuf[kMaxSysExSize];
};
-MidiPlayer_Midi::MidiPlayer_Midi(SciVersion version) : MidiPlayer(version), _playSwitch(true), _masterVolume(15), _isMt32(false), _hasReverb(false), _useMT32Track(true) {
+MidiPlayer_Midi::MidiPlayer_Midi(SciVersion version) : MidiPlayer(version), _playSwitch(true), _masterVolume(15), _mt32Type(kMt32TypeNone), _hasReverb(false), _useMT32Track(true) {
MidiDriver::DeviceHandle dev = MidiDriver::detectDevice(MDT_MIDI);
_driver = MidiDriver::createMidi(dev);
- if (MidiDriver::getMusicType(dev) == MT_MT32 || ConfMan.getBool("native_mt32"))
- _isMt32 = true;
+ if (MidiDriver::getMusicType(dev) == MT_MT32 || ConfMan.getBool("native_mt32")) {
+ if (MidiDriver::getDeviceString(dev, MidiDriver::kDriverId) == "mt32") {
+ _mt32Type = kMt32TypeEmulated;
+ } else {
+ _mt32Type = kMt32TypeReal;
+ }
+ }
_sysExBuf[0] = 0x41;
_sysExBuf[1] = 0x10;
@@ -439,13 +450,13 @@ void MidiPlayer_Midi::send(uint32 b) {
// We return 1 for mt32, because if we remap channels to 0 for mt32, those won't get played at all
// NOTE: SSCI uses channels 1 through 8 for General MIDI as well, in the drivers I checked
int MidiPlayer_Midi::getFirstChannel() const {
- if (_isMt32)
+ if (_mt32Type != kMt32TypeNone)
return 1;
return 0;
}
int MidiPlayer_Midi::getLastChannel() const {
- if (_isMt32)
+ if (_mt32Type != kMt32TypeNone)
return 8;
return 15;
}
@@ -998,8 +1009,10 @@ void MidiPlayer_Midi::resetMt32() {
Common::MemoryReadStream s((const byte *)"\x01\x00", 2);
sendMt32SysEx(0x7f0000, s, 2, true);
- // This seems to require a longer delay than usual
- g_system->delayMillis(150);
+ if (_mt32Type != kMt32TypeEmulated) {
+ // This seems to require a longer delay than usual
+ g_sci->sleep(150);
+ }
}
int MidiPlayer_Midi::open(ResourceManager *resMan) {
@@ -1038,7 +1051,7 @@ int MidiPlayer_Midi::open(ResourceManager *resMan) {
}
}
- if (_isMt32) {
+ if (_mt32Type != kMt32TypeNone) {
// MT-32
resetMt32();
@@ -1145,7 +1158,7 @@ int MidiPlayer_Midi::open(ResourceManager *resMan) {
}
void MidiPlayer_Midi::close() {
- if (_isMt32) {
+ if (_mt32Type != kMt32TypeNone) {
// Send goodbye message
sendMt32SysEx(0x200000, SciSpan<const byte>(_goodbyeMsg, 20), true);
}
@@ -1156,15 +1169,17 @@ void MidiPlayer_Midi::close() {
void MidiPlayer_Midi::sysEx(const byte *msg, uint16 length) {
_driver->sysEx(msg, length);
- // Wait the time it takes to send the SysEx data
- uint32 delay = (length + 2) * 1000 / 3125;
+ if (_mt32Type != kMt32TypeEmulated) {
+ // Wait the time it takes to send the SysEx data
+ uint32 delay = (length + 2) * 1000 / 3125;
- // Plus an additional delay for the MT-32 rev00
- if (_isMt32)
- delay += 40;
+ // Plus an additional delay for the MT-32 rev00
+ if (_mt32Type == kMt32TypeReal)
+ delay += 40;
- g_system->updateScreen();
- g_sci->sleep(delay);
+ g_system->updateScreen();
+ g_sci->sleep(delay);
+ }
}
byte MidiPlayer_Midi::getPlayId() const {
@@ -1173,7 +1188,7 @@ byte MidiPlayer_Midi::getPlayId() const {
case SCI_VERSION_0_LATE:
return 0x01;
default:
- if (_isMt32)
+ if (_mt32Type != kMt32TypeNone)
return 0x0c;
else
return _useMT32Track ? 0x0c : 0x07;
diff --git a/engines/sci/sound/soundcmd.cpp b/engines/sci/sound/soundcmd.cpp
index 280015f222..57e7516b49 100644
--- a/engines/sci/sound/soundcmd.cpp
+++ b/engines/sci/sound/soundcmd.cpp
@@ -678,6 +678,7 @@ reg_t SoundCommandParser::kDoSoundStopAll(EngineState *s, int argc, reg_t *argv)
// this doesn't make sense, so i disable it for now
return s->r_acc;
+#if 0
Common::StackLock(_music->_mutex);
const MusicList::iterator end = _music->getPlayListEnd();
@@ -693,6 +694,7 @@ reg_t SoundCommandParser::kDoSoundStopAll(EngineState *s, int argc, reg_t *argv)
_music->soundStop(*i);
}
return s->r_acc;
+#endif
}
reg_t SoundCommandParser::kDoSoundSetVolume(EngineState *s, int argc, reg_t *argv) {
diff --git a/engines/sci/video/robot_decoder.cpp b/engines/sci/video/robot_decoder.cpp
index c0b5ee5e5c..7eaa5cff38 100644
--- a/engines/sci/video/robot_decoder.cpp
+++ b/engines/sci/video/robot_decoder.cpp
@@ -1509,7 +1509,7 @@ uint32 RobotDecoder::createCel5(const byte *rawVideoData, const int16 screenItem
assert(bitmap.getHunkPaletteOffset() == (uint32)bitmap.getWidth() * bitmap.getHeight() + SciBitmap::getBitmapHeaderSize());
bitmap.setOrigin(origin);
- byte *targetBuffer = nullptr;
+ byte *targetBuffer;
if (_verticalScaleFactor == 100) {
// direct copy to bitmap
targetBuffer = bitmap.getPixels();
diff --git a/engines/scumm/saveload.cpp b/engines/scumm/saveload.cpp
index 0ab36d1a96..06d564648b 100644
--- a/engines/scumm/saveload.cpp
+++ b/engines/scumm/saveload.cpp
@@ -228,7 +228,7 @@ void ScummEngine_v4::prepareSavegame() {
_savePreparedSavegame = NULL;
// store headerless savegame in a compressed memory stream
- memStream = new Common::MemoryWriteStreamDynamic();
+ memStream = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::NO);
writeStream = Common::wrapCompressedWriteStream(memStream);
if (saveState(writeStream, false)) {
// we have to finalize the compression-stream first, otherwise the internal
diff --git a/engines/sludge/detection.cpp b/engines/sludge/detection.cpp
index de5897b66c..cdb67fae79 100644
--- a/engines/sludge/detection.cpp
+++ b/engines/sludge/detection.cpp
@@ -122,26 +122,22 @@ const ADGameDescription *SludgeMetaEngine::fallbackDetect(const FileMap &allFile
if (!(fileName.hasSuffix(".slg") || fileName == "gamedata"))
continue;
- SearchMan.clear();
- SearchMan.addDirectory(file->getParent().getName(), file->getParent());
-
- Common::SeekableReadStream *stream = SearchMan.createReadStreamForMember(file->getName());
-
- if (!stream)
+ Common::File f;
+ if (!f.open(*file))
continue;
bool headerBad = false;
- if (stream->readByte() != 'S')
+ if (f.readByte() != 'S')
headerBad = true;
- if (stream->readByte() != 'L')
+ if (f.readByte() != 'L')
headerBad = true;
- if (stream->readByte() != 'U')
+ if (f.readByte() != 'U')
headerBad = true;
- if (stream->readByte() != 'D')
+ if (f.readByte() != 'D')
headerBad = true;
- if (stream->readByte() != 'G')
+ if (f.readByte() != 'G')
headerBad = true;
- if (stream->readByte() != 'E')
+ if (f.readByte() != 'E')
headerBad = true;
if (headerBad) {
continue;
diff --git a/engines/sludge/sound.cpp b/engines/sludge/sound.cpp
index 25caa0b9de..8f8284f1da 100644
--- a/engines/sludge/sound.cpp
+++ b/engines/sludge/sound.cpp
@@ -28,7 +28,7 @@
#include "audio/audiostream.h"
#include "audio/decoders/wave.h"
#include "audio/decoders/vorbis.h"
-#include "audio/mods/protracker.h"
+#include "audio/mods/mod_xm_s3m.h"
#include "sludge/allfiles.h"
#include "sludge/newfatal.h"
@@ -85,9 +85,9 @@ bool SoundManager::initSoundStuff() {
}
for (int a = 0; a < MAX_MODS; ++a) {
- _soundCache[a].fileLoaded = -1;
- _soundCache[a].looping = false;
- _soundCache[a].inSoundList = false;
+ _modCache[a].fileLoaded = -1;
+ _modCache[a].looping = false;
+ _modCache[a].inSoundList = false;
}
return _soundOK = true;
@@ -113,7 +113,7 @@ void SoundManager::setMusicVolume(int a, int v) {
if (g_sludge->_mixer->isSoundHandleActive(_modCache[a].handle)) {
_modCache[a].vol = v;
- g_sludge->_mixer->setChannelVolume(_modCache[a].handle, _modLoudness * v / 256);
+ g_sludge->_mixer->setChannelVolume(_modCache[a].handle, _modLoudness * v);
}
}
@@ -155,8 +155,10 @@ void SoundManager::stopMOD(int i) {
if (!_soundOK)
return;
- if (g_sludge->_mixer->isSoundHandleActive(_modCache[i].handle)) {
- g_sludge->_mixer->stopHandle(_modCache[i].handle);
+ if (_modCache[i].fileLoaded >= 0) {
+ if (g_sludge->_mixer->isSoundHandleActive(_modCache[i].handle)) {
+ g_sludge->_mixer->stopHandle(_modCache[i].handle);
+ }
}
_modCache[i].fileLoaded = -1;
}
@@ -177,11 +179,12 @@ void SoundManager::freeSound(int a) {
return;
_silenceIKillYou = true;
-
- if (g_sludge->_mixer->isSoundHandleActive(_soundCache[a].handle)) {
- g_sludge->_mixer->stopHandle(_soundCache[a].handle);
- if (_soundCache[a].inSoundList)
- handleSoundLists();
+ if (_soundCache[a].fileLoaded >= 0) {
+ if (g_sludge->_mixer->isSoundHandleActive(_soundCache[a].handle)) {
+ g_sludge->_mixer->stopHandle(_soundCache[a].handle);
+ if (_soundCache[a].inSoundList)
+ handleSoundLists();
+ }
}
_soundCache[a].inSoundList = false;
@@ -204,7 +207,6 @@ void SoundManager::huntKillFreeSound(int filenum) {
* Loading and playing:
*/
bool SoundManager::playMOD(int f, int a, int fromTrack) {
-#if 0
if (!_soundOK)
return true;
stopMOD(a);
@@ -221,18 +223,37 @@ bool SoundManager::playMOD(int f, int a, int fromTrack) {
// make audio stream
Common::SeekableReadStream *readStream = g_sludge->_resMan->getData();
Common::SeekableReadStream *memImage = readStream->readStream(length);
- if (memImage->size() != (int)length || readStream->err())
- debug("Sound reading failed");
- Audio::AudioStream *stream = Audio::makeProtrackerStream(memImage);
- if (!stream)
- return false;
+// debug output
+#if 0
+ Common::DumpFile *dump = new Common::DumpFile();
+ Common::String name = Common::String::format("mod_sound_%i", f);
+ dump->open(name);
+ byte *soundData = new byte[length];
+ memImage->read(soundData, length);
+ dump->write(soundData, length);
+ dump->finalize();
+ delete []soundData;
+ delete dump;
+ memImage->seek(0, SEEK_SET);
+#endif
- // play sound
- g_sludge->_mixer->playStream(Audio::Mixer::kSFXSoundType, &_modCache[a].handle,
- stream, -1, Audio::Mixer::kMaxChannelVolume);
+ if (memImage->size() != (int)length || readStream->err()) {
+ return fatal("Sound reading failed");
+ }
+ Audio::AudioStream *stream = Audio::makeModXmS3mStream(memImage, DisposeAfterUse::NO);
-#endif
+ if (stream) {
+ // play sound
+ _modCache[a].fileLoaded = f;
+ _modCache[a].vol = _defVol;
+ g_sludge->_mixer->playStream(Audio::Mixer::kMusicSoundType, &_modCache[a].handle, stream, -1, _modCache[a].vol);
+ } else {
+ _modCache[a].fileLoaded = -1;
+ }
+
+ g_sludge->_resMan->finishAccess();
+ setResourceForFatal(-1);
return true;
}
@@ -242,27 +263,16 @@ bool SoundManager::stillPlayingSound(int ch) {
if (_soundCache[ch].fileLoaded != -1)
if (g_sludge->_mixer->isSoundHandleActive(_soundCache[ch].handle))
return true;
-
return false;
}
bool SoundManager::forceRemoveSound() {
for (int a = 0; a < MAX_SAMPLES; a++) {
- if (_soundCache[a].fileLoaded != -1 && !stillPlayingSound(a)) {
-// soundWarning ("Deleting silent sound", a);
- freeSound(a);
- return 1;
- }
- }
-
- for (int a = 0; a < MAX_SAMPLES; a++) {
if (_soundCache[a].fileLoaded != -1) {
-// soundWarning ("Deleting playing sound", a);
freeSound(a);
return 1;
}
}
-// soundWarning ("Cache is empty!", 0);
return 0;
}
@@ -570,7 +580,8 @@ int initMovieSound(int f, ALenum format, int audioChannels, ALuint samplerate,
#endif
uint SoundManager::getSoundSource(int index) {
- return 0; /*soundCache[index].playingOnSource;*/ //TODO:false value
+ warning("getSoundSource, Unimplemented");
+ return 0; /*soundCache[index].playingOnSource;*/
}
} // End of namespace Sludge
diff --git a/engines/sword1/control.cpp b/engines/sword1/control.cpp
index fbc3f6af4a..0c53430ba3 100644
--- a/engines/sword1/control.cpp
+++ b/engines/sword1/control.cpp
@@ -303,7 +303,7 @@ static int volToBalance(int volL, int volR) {
uint8 Control::runPanel() {
// Make a thumbnail of the screen before displaying the menu in case we want to save
// the game from the menu.
- _tempThumbnail = new Common::MemoryWriteStreamDynamic;
+ _tempThumbnail = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::YES);
Graphics::saveThumbnail(*_tempThumbnail);
_panelShown = true;
diff --git a/engines/sword25/gfx/screenshot.cpp b/engines/sword25/gfx/screenshot.cpp
index eeaece97f2..c86a2fe1d5 100644
--- a/engines/sword25/gfx/screenshot.cpp
+++ b/engines/sword25/gfx/screenshot.cpp
@@ -113,11 +113,11 @@ Common::SeekableReadStream *Screenshot::createThumbnail(Graphics::Surface *data)
}
// Create a PNG representation of the thumbnail data
- Common::MemoryWriteStreamDynamic *stream = new Common::MemoryWriteStreamDynamic();
- saveToFile(&thumbnail, stream);
+ Common::MemoryWriteStreamDynamic stream(DisposeAfterUse::NO);
+ saveToFile(&thumbnail, &stream);
// Output a MemoryReadStream that encompasses the written data
- Common::SeekableReadStream *result = new Common::MemoryReadStream(stream->getData(), stream->size(),
+ Common::SeekableReadStream *result = new Common::MemoryReadStream(stream.getData(), stream.size(),
DisposeAfterUse::YES);
return result;
}
diff --git a/engines/sword25/script/luascript.cpp b/engines/sword25/script/luascript.cpp
index 3aca6676ac..1a83fc9c82 100644
--- a/engines/sword25/script/luascript.cpp
+++ b/engines/sword25/script/luascript.cpp
@@ -395,7 +395,7 @@ bool LuaScriptEngine::persist(OutputPersistenceBlock &writer) {
lua_getglobal(_state, "_G");
// Lua persists and stores the data in a WriteStream
- Common::MemoryWriteStreamDynamic writeStream;
+ Common::MemoryWriteStreamDynamic writeStream(DisposeAfterUse::YES);
Lua::persistLua(_state, &writeStream);
// Persistenzdaten in den Writer schreiben.
diff --git a/engines/titanic/carry/arm.cpp b/engines/titanic/carry/arm.cpp
index 23b0710c30..0d31296818 100644
--- a/engines/titanic/carry/arm.cpp
+++ b/engines/titanic/carry/arm.cpp
@@ -22,6 +22,7 @@
#include "titanic/carry/arm.h"
#include "titanic/messages/messages.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -150,7 +151,7 @@ bool CArm::MaitreDHappyMsg(CMaitreDHappyMsg *msg) {
CGameObject *petItem;
if (find(getName(), &petItem, FIND_PET)) {
if (!_armUnlocked)
- playSound("z#47.wav");
+ playSound(TRANSLATE("z#47.wav", "z#578.wav"));
if (_heldItemName == "Key" || _heldItemName == "AuditoryCentre") {
CGameObject *heldItem = dynamic_cast<CGameObject *>(getFirstChild());
if (heldItem) {
diff --git a/engines/titanic/carry/brain.cpp b/engines/titanic/carry/brain.cpp
index 73970c404c..b5fe1dfffa 100644
--- a/engines/titanic/carry/brain.cpp
+++ b/engines/titanic/carry/brain.cpp
@@ -22,6 +22,7 @@
#include "titanic/carry/brain.h"
#include "titanic/game/brain_slot.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -70,7 +71,7 @@ bool CBrain::UseWithOtherMsg(CUseWithOtherMsg *msg) {
petMoveToHiddenRoom();
CAddHeadPieceMsg headpieceMsg(getName());
headpieceMsg.execute(msg->_other);
- playSound("z#116.wav");
+ playSound(TRANSLATE("z#116.wav", "z#647.wav"));
setPosition(Point(0, 0));
setVisible(false);
_pieceAdded = true;
diff --git a/engines/titanic/carry/bridge_piece.cpp b/engines/titanic/carry/bridge_piece.cpp
index f90f7cbd4d..12f6688fec 100644
--- a/engines/titanic/carry/bridge_piece.cpp
+++ b/engines/titanic/carry/bridge_piece.cpp
@@ -22,6 +22,7 @@
#include "titanic/carry/bridge_piece.h"
#include "titanic/game/ship_setting.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -60,7 +61,7 @@ bool CBridgePiece::UseWithOtherMsg(CUseWithOtherMsg *msg) {
return true;
} else {
setVisible(false);
- playSound("z#54.wav");
+ playSound(TRANSLATE("z#54.wav", "z#585.wav"));
setPosition(shipSetting->_pos1);
shipSetting->_itemName = getName();
petMoveToHiddenRoom();
diff --git a/engines/titanic/carry/carry_parrot.cpp b/engines/titanic/carry/carry_parrot.cpp
index c8747262b5..11e2880a17 100644
--- a/engines/titanic/carry/carry_parrot.cpp
+++ b/engines/titanic/carry/carry_parrot.cpp
@@ -27,6 +27,7 @@
#include "titanic/npcs/parrot.h"
#include "titanic/npcs/succubus.h"
#include "titanic/pet_control/pet_control.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -121,7 +122,7 @@ bool CCarryParrot::MouseDragEndMsg(CMouseDragEndMsg *msg) {
setVisible(false);
_canTake = false;
CParrot::_state = PARROT_ESCAPED;
- playSound("z#475.wav");
+ playSound(TRANSLATE("z#475.wav", "z#212.wav"));
stopSoundChannel(true);
moveUnder(findRoom());
@@ -136,7 +137,7 @@ bool CCarryParrot::MouseDragEndMsg(CMouseDragEndMsg *msg) {
} else {
setVisible(false);
_canTake = false;
- playSound("z#475.wav");
+ playSound(TRANSLATE("z#475.wav", "z#212.wav"));
stopSoundChannel(true);
moveUnder(findRoom());
}
@@ -170,7 +171,7 @@ bool CCarryParrot::PassOnDragStartMsg(CPassOnDragStartMsg *msg) {
_canTake = false;
CProximity prox(Audio::Mixer::kSpeechSoundType);
- playSound("z#475.wav", prox);
+ playSound(TRANSLATE("z#475.wav", "z#212.wav"), prox);
moveUnder(findRoom());
CParrot::_state = PARROT_ESCAPED;
@@ -205,7 +206,7 @@ bool CCarryParrot::ActMsg(CActMsg *msg) {
_canTake = false;
if (CParrot::_state == PARROT_4) {
- playSound("z#475.wav");
+ playSound(TRANSLATE("z#475.wav", "z#212.wav"));
if (!_feathersFlag) {
CCarry *feathers = dynamic_cast<CCarry *>(getRoot()->findByName("Feathers"));
diff --git a/engines/titanic/carry/eye.cpp b/engines/titanic/carry/eye.cpp
index 9bad0e480c..3a61cd5ab1 100644
--- a/engines/titanic/carry/eye.cpp
+++ b/engines/titanic/carry/eye.cpp
@@ -26,7 +26,7 @@
#include "titanic/game/television.h"
#include "titanic/game/transport/lift.h"
#include "titanic/pet_control/pet_control.h"
-
+#include "titanic/translation.h"
namespace Titanic {
@@ -108,7 +108,7 @@ bool CEye::ActMsg(CActMsg *msg) {
if (msg->_action == "BellbotGetLight") {
setVisible(true);
petAddToInventory();
- playSound("z#47.wav");
+ playSound(TRANSLATE("z#47.wav", "z#578.wav"));
CActMsg actMsg("Eye Removed");
actMsg.execute("1stClassState", CLight::_type,
diff --git a/engines/titanic/carry/photograph.cpp b/engines/titanic/carry/photograph.cpp
index cdf46488f0..a1af91e127 100644
--- a/engines/titanic/carry/photograph.cpp
+++ b/engines/titanic/carry/photograph.cpp
@@ -23,6 +23,7 @@
#include "titanic/carry/photograph.h"
#include "titanic/core/dont_save_file_item.h"
#include "titanic/core/room_item.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -63,7 +64,7 @@ bool CPhotograph::MouseDragEndMsg(CMouseDragEndMsg *msg) {
if (target && target->isEquals("NavigationComputer")) {
moveUnder(getDontSave());
makeDirty();
- playSound("a#46.wav");
+ playSound(TRANSLATE("a#46.wav", "a#39.wav"));
starFn(STAR_SET_REFERENCE);
showMouse();
return true;
diff --git a/engines/titanic/continue_save_dialog.cpp b/engines/titanic/continue_save_dialog.cpp
index 3b447135bd..6de267e9fe 100644
--- a/engines/titanic/continue_save_dialog.cpp
+++ b/engines/titanic/continue_save_dialog.cpp
@@ -78,6 +78,9 @@ int CContinueSaveDialog::show() {
// Event loop waiting for selection
while (!g_vm->shouldQuit() && _selectedSlot == -999) {
g_vm->_events->pollEventsAndWait();
+
+ if (g_vm->_loadSaveSlot != -1)
+ _selectedSlot = g_vm->_loadSaveSlot;
}
if (g_vm->shouldQuit())
_selectedSlot = -2;
diff --git a/engines/titanic/core/game_object.cpp b/engines/titanic/core/game_object.cpp
index 55dbbad7f0..d52fa27669 100644
--- a/engines/titanic/core/game_object.cpp
+++ b/engines/titanic/core/game_object.cpp
@@ -97,6 +97,7 @@ void CGameObject::save(SimpleFile *file, int indent) {
i != rangeList->end(); ++i) {
CMovieRangeInfo *rangeInfo = new CMovieRangeInfo(*i);
rangeInfo->_initialFrame = (i == rangeList->begin()) ? getMovieFrame() : -1;
+ _movieRangeInfoList.push_back(rangeInfo);
}
}
}
@@ -867,7 +868,7 @@ void CGameObject::stopAnimTimer(int id) {
void CGameObject::gotoView(const CString &viewName, const CString &clipName) {
CViewItem *newView = parseView(viewName);
CGameManager *gameManager = getGameManager();
- CViewItem *oldView = gameManager ? gameManager->getView() : newView;
+ CViewItem *oldView = gameManager->getView();
if (!oldView || !newView)
return;
@@ -1357,14 +1358,14 @@ void CGameObject::setToggleColor(byte r, byte g, byte b) {
_toggleB = b;
}
-void CGameObject::movieSetAudioTiming(bool flag) {
+void CGameObject::movieSetPlaying(bool flag) {
if (!_surface && !_resource.empty()) {
loadResource(_resource);
_resource.clear();
}
if (_surface && _surface->_movie)
- _surface->_movie->_hasAudioTiming = flag;
+ _surface->_movie->setPlaying(flag);
}
void CGameObject::movieEvent(int frameNumber) {
diff --git a/engines/titanic/core/game_object.h b/engines/titanic/core/game_object.h
index f79c9e1d1e..b592806977 100644
--- a/engines/titanic/core/game_object.h
+++ b/engines/titanic/core/game_object.h
@@ -653,9 +653,9 @@ public:
void stopMovie();
/**
- * Overrides whether the object's movie has audio timing
+ * Overrides whether the object's movie is playing or paused
*/
- void movieSetAudioTiming(bool flag);
+ void movieSetPlaying(bool flag);
/**
* Get the current movie frame
diff --git a/engines/titanic/core/project_item.cpp b/engines/titanic/core/project_item.cpp
index 92faebcaeb..b2bd5cd92b 100644
--- a/engines/titanic/core/project_item.cpp
+++ b/engines/titanic/core/project_item.cpp
@@ -173,6 +173,7 @@ void CProjectItem::loadGame(int slotId) {
// Clear any existing project contents and call preload code
preLoad();
clear();
+ g_vm->_loadSaveSlot = -1;
// Open either an existing savegame slot or the new game template
if (slotId >= 0) {
@@ -189,7 +190,11 @@ void CProjectItem::loadGame(int slotId) {
// Load the savegame header in
TitanicSavegameHeader header;
readSavegameHeader(&file, header);
- delete header._thumbnail;
+ if (header._thumbnail) {
+ header._thumbnail->free();
+ delete header._thumbnail;
+ }
+
g_vm->_events->setTotalPlayTicks(header._totalFrames);
// Load the contents in
diff --git a/engines/titanic/debugger.cpp b/engines/titanic/debugger.cpp
index a42c51cbd9..7438a0053b 100644
--- a/engines/titanic/debugger.cpp
+++ b/engines/titanic/debugger.cpp
@@ -321,7 +321,7 @@ bool Debugger::cmdMovie(int argc, const char **argv) {
tester->playMovie(MOVIE_STOP_PREVIOUS);
} else {
uint startFrame = strToInt(argv[2]);
- uint endFrame = strToInt(argv[2]);
+ uint endFrame = (argc == 3) ? startFrame : strToInt(argv[3]);
tester->playMovie(startFrame, endFrame, MOVIE_STOP_PREVIOUS);
}
diff --git a/engines/titanic/game/announce.cpp b/engines/titanic/game/announce.cpp
index 6e43b9c22f..19a5477dcb 100644
--- a/engines/titanic/game/announce.cpp
+++ b/engines/titanic/game/announce.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/announce.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -59,13 +60,13 @@ bool CAnnounce::TimerMsg(CTimerMsg *msg) {
if (msg->_actionVal == 1) {
CString numStr = "0";
- CString waveNames1[18] = {
+ const char *const WAVE_NAMES1_EN[18] = {
"z#181.wav", "z#211.wav", "z#203.wav", "z#202.wav", "z#201.wav",
"z#200.wav", "z#199.wav", "z#198.wav", "z#197.wav", "z#196.wav",
"z#210.wav", "z#209.wav", "z#208.wav", "z#207.wav", "z#206.wav",
"z#205.wav", "z#204.wav", "z#145.wav"
};
- CString waveNames2[30] = {
+ const char *const WAVE_NAMES2_EN[30] = {
"z#154.wav", "z#153.wav", "z#152.wav", "z#151.wav", "z#150.wav",
"z#149.wav", "z#148.wav", "z#169.wav", "z#171.wav", "z#178.wav",
"z#176.wav", "z#177.wav", "z#165.wav", "z#170.wav", "z#180.wav",
@@ -73,6 +74,21 @@ bool CAnnounce::TimerMsg(CTimerMsg *msg) {
"z#161.wav", "z#179.wav", "z#163.wav", "z#164.wav", "z#162.wav",
"z#159.wav", "z#175.wav", "z#166.wav", "z#174.wav", "z#157.wav"
};
+ const char *const WAVE_NAMES1_DE[18] = {
+ "z#712.wav", "z#741.wav", "z#733.wav", "z#732.wav", "z#731.wav",
+ "z#730.wav", "z#729.wav", "z#728.wav", "z#727.wav", "z#726.wav",
+ "z#740.wav", "z#739.wav", "z#738.wav", "z#737.wav", "z#736.wav",
+ "z#735.wav", "z#734.wav", "z#701.wav"
+ };
+ const char *const WAVE_NAMES2_DE[31] = {
+ "z#711.wav", "z#710.wav", "z#709.wav", "z#708.wav", "z#707.wav",
+ "z#706.wav", "z#705.wav", "z#704.wav", "z#688.wav", "z#690.wav",
+ "z#697.wav", "z#695.wav", "z#696.wav", "z#684.wav", "z#689.wav",
+ "z#699.wav", "z#675.wav", "z#691.wav", "z#692.wav", "z#679.wav",
+ "z#677.wav", "z#680.wav", "z#698.wav", "z#682.wav", "z#683.wav",
+ "z#681.wav", "z#678.wav", "z#694.wav", "z#685.wav", "z#693.wav",
+ "z#676.wav"
+ };
CProximity prox;
prox._soundType = Audio::Mixer::kSpeechSoundType;
@@ -81,21 +97,21 @@ bool CAnnounce::TimerMsg(CTimerMsg *msg) {
switch (randVal) {
case 0:
case 1:
- _soundHandle = playSound("z#189.wav", prox);
+ _soundHandle = playSound(TRANSLATE("z#189.wav", "z#719.wav"), prox);
if (_nameIndex < 18) {
- queueSound(waveNames1[_nameIndex], _soundHandle, 100, 0, false,
- Audio::Mixer::kSpeechSoundType);
+ queueSound(TRANSLATE(WAVE_NAMES1_EN[_nameIndex], WAVE_NAMES1_DE[_nameIndex]),
+ _soundHandle, 100, 0, false, Audio::Mixer::kSpeechSoundType);
++_nameIndex;
} else {
- queueSound(waveNames1[getRandomNumber(17)], _soundHandle,
- 100, 0, false, Audio::Mixer::kSpeechSoundType);
+ queueSound(TRANSLATE(WAVE_NAMES1_EN[getRandomNumber(17)], WAVE_NAMES1_DE[getRandomNumber(17)]),
+ _soundHandle, 100, 0, false, Audio::Mixer::kSpeechSoundType);
}
break;
case 2:
- _soundHandle = playSound("z#189.wav", prox);
- queueSound(waveNames2[getRandomNumber(29)], _soundHandle,
- 100, 0, false, Audio::Mixer::kSpeechSoundType);
+ _soundHandle = playSound(TRANSLATE("z#189.wav", "z#719.wav"), prox);
+ queueSound(TRANSLATE(WAVE_NAMES2_EN[getRandomNumber(29)], WAVE_NAMES2_DE[getRandomNumber(30)]),
+ _soundHandle, 100, 0, false, Audio::Mixer::kSpeechSoundType);
break;
default:
diff --git a/engines/titanic/game/bar_bell.cpp b/engines/titanic/game/bar_bell.cpp
index 5f17dffda1..448a7d2919 100644
--- a/engines/titanic/game/bar_bell.cpp
+++ b/engines/titanic/game/bar_bell.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/bar_bell.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -68,23 +69,23 @@ bool CBarBell::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
case 0:
case 1:
case 5:
- playSound("c#54.wav", _volume, _soundVal3);
+ playSound(TRANSLATE("c#54.wav", "c#38.wav"), _volume, _soundVal3);
break;
case 2:
- playSound("c#52.wav", _volume, _soundVal3);
+ playSound(TRANSLATE("c#52.wav", "c#36.wav"), _volume, _soundVal3);
break;
case 3:
- playSound("c#53.wav", _volume, _soundVal3);
+ playSound(TRANSLATE("c#53.wav", "c#37.wav"), _volume, _soundVal3);
break;
case 4:
- playSound("c#55.wav", _volume, _soundVal3);
+ playSound(TRANSLATE("c#55.wav", "c#39.wav"), _volume, _soundVal3);
break;
default:
- playSound("c#51.wav", _volume, _soundVal3);
+ playSound(TRANSLATE("c#51.wav", "c#35.wav"), _volume, _soundVal3);
break;
}
} else if (_fieldBC >= 5) {
@@ -93,7 +94,7 @@ bool CBarBell::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
actMsg.execute("Barbot");
}
- playSound("c#51.wav", _volume, _soundVal3);
+ playSound(TRANSLATE("c#51.wav", "c#35.wav"), _volume, _soundVal3);
} else {
if (_fieldBC == 3) {
CActMsg actMsg("BellRing1");
@@ -103,7 +104,7 @@ bool CBarBell::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
actMsg.execute("Barbot");
}
- playSound("c#54.wav", _volume, _soundVal3);
+ playSound(TRANSLATE("c#54.wav", "c#38.wav"), _volume, _soundVal3);
}
return true;
diff --git a/engines/titanic/game/bomb.cpp b/engines/titanic/game/bomb.cpp
index a443327218..ddb0b6d625 100644
--- a/engines/titanic/game/bomb.cpp
+++ b/engines/titanic/game/bomb.cpp
@@ -22,6 +22,7 @@
#include "titanic/game/bomb.h"
#include "titanic/game/code_wheel.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -39,17 +40,17 @@ END_MESSAGE_MAP()
const int CORRECT_WHEELS = 23;
-static const char *const HUNDREDS_WAVS[] = {
+static const char *const HUNDREDS_WAVS_EN[] = {
"", "z#353.wav", "z#339.wav", "z#325.wav", "z#311.wav", "z#297.wav",
"z#283.wav", "z#269.wav", "z#255.wav", "z#241.wav"
};
-static const char *const HUNDREDS_AND_WAVS[] = {
+static const char *const HUNDREDS_AND_WAVS_EN[] = {
"", "z#352.wav", "z#338.wav", "z#324.wav", "z#310.wav", "z#296.wav",
"z#281.wav", "z#268.wav", "z#254.wav", "z#240.wav"
};
-static const char *const COUNTDOWN_WAVS[100] = {
+static const char *const COUNTDOWN_WAVS_EN[100] = {
"bombcountdown_c0.wav", "z#355.wav", "z#341.wav", "z#327.wav", "z#313.wav",
"z#299.wav", "z#285.wav", "z#271.wav", "z#257.wav", "z#243.wav",
"z#354.wav", "z#350.wav", "z#349.wav", "z#348.wav", "z#347.wav",
@@ -72,6 +73,37 @@ static const char *const COUNTDOWN_WAVS[100] = {
"z#234.wav", "z#233.wav", "z#232.wav", "z#231.wav", "z#230.wav",
};
+const char *const HUNDREDS_WAVS_DE[10] = {
+ "z#56.wav", "z#54.wav", "z#53.wav", "z#52.wav", "z#51.wav",
+ "z#50.wav", "z#49.wav", "z#48.wav", "z#47.wav", "z#55.wav"
+};
+
+const char *const ONE_TO_NINETEEN_WAVS_DE[19] = {
+ "z#15.wav", "z#97.wav", "z#95.wav", "z#86.wav", "z#84.wav",
+ "z#82.wav", "z#80.wav", "z#78.wav", "z#76.wav", "z#74.wav",
+ "z#73.wav", "z#72.wav", "z#71.wav", "z#70.wav", "z#69.wav",
+ "z#68.wav", "z#67.wav", "z#66.wav", "z#65.wav"
+};
+
+const char *const TENS_WAVS_DE[9] = {
+ "z#98.wav", "z#96.wav", "z#92.wav", "z#85.wav", "z#83.wav",
+ "z#81.wav", "z#79.wav", "z#77.wav", "z#75.wav"
+};
+
+const char *const DIGITS_WAVS_DE[9] = {
+ "z#74.wav", "z#64.wav", "z#63.wav", "z#62.wav", "z#61.wav",
+ "z#60.wav", "z#59.wav", "z#58.wav", "z#57.wav"
+};
+
+const char *const WAVES_970_DE[30] = {
+ "z#46.wav", "z#45.wav", "z#44.wav", "z#43.wav", "z#42.wav",
+ "z#41.wav", "z#40.wav", "z#39.wav", "z#38.wav", "z#37.wav",
+ "z#36.wav", "z#35.wav", "z#34.wav", "z#33.wav", "z#32.wav",
+ "z#31.wav", "z#30.wav", "z#29.wav", "z#28.wav", "z#27.wav",
+ "z#26.wav", "z#25.wav", "z#24.wav", "z#23.wav", "z#22.wav",
+ "z#21.wav", "z#20.wav", "z#19.wav", "z#18.wav", "z#17.wav"
+};
+
CBomb::CBomb() : CBackground() {
_active = false;
_numCorrectWheels = 0;
@@ -139,22 +171,22 @@ bool CBomb::StatusChangeMsg(CStatusChangeMsg *msg) {
CString name;
switch (val) {
case 25:
- name = "z#372.wav";
+ name = TRANSLATE("z#372.wav", "z#115.wav");
break;
case 26:
- name = "z#371.wav";
+ name = TRANSLATE("z#371.wav", "z#114.wav");
break;
case 27:
- name = "z#370.wav";
+ name = TRANSLATE("z#370.wav", "z#113.wav");
break;
case 28:
- name = "z#369.wav";
+ name = TRANSLATE("z#369.wav", "z#112.wav");
break;
case 29:
- name = "z#368.wav";
+ name = TRANSLATE("z#368.wav", "z#111.wav");
break;
default:
- name = "z#366.wav";
+ name = TRANSLATE("z#366.wav", "z#109.wav");
break;
}
@@ -170,7 +202,7 @@ bool CBomb::EnterViewMsg(CEnterViewMsg *msg) {
}
bool CBomb::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
- playSound("z#62.wav");
+ playSound(TRANSLATE("z#62.wav", "z#593.wav"));
if (_active) {
stopSound(_soundHandle);
@@ -181,22 +213,22 @@ bool CBomb::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
CString name;
switch (_tappedCtr) {
case 18:
- name = "z#380.wav";
+ name = TRANSLATE("z#380.wav", "z#122.wav");
break;
case 19:
- name = "z#379.wav";
+ name = TRANSLATE("z#379.wav", "z#121.wav");
break;
case 20:
- name = "z#377.wav";
+ name = TRANSLATE("z#377.wav", "z#119.wav");
break;
case 21:
- name = "z#376.wav";
+ name = TRANSLATE("z#376.wav", "z#118.wav");
break;
case 22:
- name = "z#375.wav";
+ name = TRANSLATE("z#375.wav", "z#117.wav");
break;
default:
- name = "z#374.wav";
+ name = TRANSLATE("z#374.wav", "z#.wav");
break;
}
@@ -204,7 +236,7 @@ bool CBomb::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
_countdown = 999;
}
} else {
- _soundHandle = playSound("z#389.wav", _volume);
+ _soundHandle = playSound(TRANSLATE("z#389.wav", "z#131.wav"), _volume);
_active = true;
CActMsg actMsg("Arm Bomb");
actMsg.execute("EndExplodeShip");
@@ -223,7 +255,7 @@ bool CBomb::EnterRoomMsg(CEnterRoomMsg *msg) {
bool CBomb::ActMsg(CActMsg *msg) {
if (msg->_action == "Hit") {
- playSound("z#63.wav");
+ playSound(TRANSLATE("z#63.wav", "z#594.wav"));
stopSound(_soundHandle);
if (_hammerCtr < 17)
@@ -232,28 +264,28 @@ bool CBomb::ActMsg(CActMsg *msg) {
CString name;
switch (_hammerCtr) {
case 10:
- name = "z#388.wav";
+ name = TRANSLATE("z#388.wav", "z#130.wav");
break;
case 11:
- name = "z#387.wav";
+ name = TRANSLATE("z#387.wav", "z#129.wav");
break;
case 12:
- name = "z#386.wav";
+ name = TRANSLATE("z#386.wav", "z#128.wav");
break;
case 13:
- name = "z#385.wav";
+ name = TRANSLATE("z#385.wav", "z#127.wav");
break;
case 14:
- name = "z#384.wav";
+ name = TRANSLATE("z#384.wav", "z#126.wav");
break;
case 15:
- name = "z#383.wav";
+ name = TRANSLATE("z#383.wav", "z#125.wav");
break;
case 16:
- name = "z#382.wav";
+ name = TRANSLATE("z#382.wav", "z#124.wav");
break;
default:
- name = "z#381.wav";
+ name = TRANSLATE("z#381.wav", "z#123.wav");
break;
}
@@ -267,7 +299,7 @@ bool CBomb::ActMsg(CActMsg *msg) {
bool CBomb::TurnOn(CTurnOn *msg) {
if (!_active) {
CProximity prox(Audio::Mixer::kSpeechSoundType, _volume);
- _soundHandle = playSound("z#389.wav", prox);
+ _soundHandle = playSound(TRANSLATE("z#389.wav", "z#131.wav"), prox);
_active = true;
// WORKAROUND: Only reset the code wheels back to 'O' value
@@ -297,7 +329,7 @@ bool CBomb::TimerMsg(CTimerMsg *msg) {
if (msg->_action == "Disarmed") {
CProximity prox(Audio::Mixer::kSpeechSoundType, _volume);
stopSound(_soundHandle);
- playSound("z#364.wav", prox);
+ playSound(TRANSLATE("z#364.wav", "z#107.wav"), prox);
CActMsg actMsg1("Disarm Bomb");
actMsg1.execute("EndExplodeShip");
@@ -311,66 +343,123 @@ bool CBomb::TimerMsg(CTimerMsg *msg) {
unlockMouse();
}
- if (compareRoomNameTo("Titania")) {
- if (msg->_actionVal == 1 && getRandomNumber(9) == 0) {
- if (!_active)
- return true;
+ if (!compareRoomNameTo("Titania")) {
+ // In rooms other than the bomb room
+ if (_active) {
+ --_countdown;
+ addTimer(6000);
- CParrotSpeakMsg speakMsg("Bomb", "BombCountdown");
- speakMsg.execute("PerchedParrot");
+ if (_countdown < 11)
+ _countdown = getRandomNumber(900) + 50;
}
- if (_active) {
- if (!isSoundActive(_soundHandle)) {
- if (msg->_actionVal == 0) {
- addTimer(1, 1000, 0);
- } else {
- _soundHandle = 0;
- int hundreds = _countdown / 100;
- int remainder = _countdown % 100;
+ return true;
+ }
- if (_countdown >= 100) {
- // Play "x hundred and" or just "x hundred"
- CProximity prox(Audio::Mixer::kSpeechSoundType, _volume);
- CString hName = remainder ? HUNDREDS_AND_WAVS[hundreds] : HUNDREDS_WAVS[hundreds];
- _soundHandle = playSound(hName, prox);
- }
+ if (msg->_actionVal == 1 && getRandomNumber(9) == 0) {
+ if (!_active)
+ return true;
- CString ctrName = COUNTDOWN_WAVS[remainder];
- if (_countdown == 10) {
- ctrName = "z#229.wav";
- _countdown = 998;
- }
+ CParrotSpeakMsg speakMsg("Bomb", "BombCountdown");
+ speakMsg.execute("PerchedParrot");
+ }
+
+ // Don't execute if the bomb isn't actually active
+ if (!_active)
+ return true;
- // Play the sub-hundred portion of the countdown amount
- if (_soundHandle > 0) {
- _soundHandle = queueSound(ctrName, _soundHandle, _volume, 0, false, Audio::Mixer::kSpeechSoundType);
- } else {
+ if (isSoundActive(_soundHandle)) {
+ // Bomb speech currently active, so schedule the method
+ // to re-trigger after 100ms to check if speech is finished
+ addTimer(0, 100, 0);
+ return true;
+ }
+
+ if (msg->_actionVal == 0) {
+ addTimer(1, 1000, 0);
+ } else {
+ _soundHandle = 0;
+ int hundreds = _countdown / 100;
+ int remainder = _countdown % 100;
+
+ if (g_language == Common::DE_DEU) {
+ if (_countdown <= 10) {
+ // Reset countdown back to 1000
+ CProximity prox(Audio::Mixer::kSpeechSoundType, _volume);
+ _soundHandle = playSound("z#14.wav", prox);
+ _countdown = 999;
+ } else {
+ if (_countdown >= 970) {
+ // Sounds for numbers 970 to 999
+ CProximity prox(Audio::Mixer::kSpeechSoundType, _volume);
+ _soundHandle = playSound(WAVES_970_DE[_countdown - 970], prox);
+ } else {
+ if (hundreds >= 1) {
CProximity prox(Audio::Mixer::kSpeechSoundType, _volume);
- _soundHandle = playSound(ctrName, prox);
+ _soundHandle = playSound(HUNDREDS_WAVS_DE[hundreds - 1], prox);
}
- // Reduce countdown and schedule another timer
- --_countdown;
- addTimer(0, 1000, 0);
+ if (remainder >= 20) {
+ int tens = remainder / 10;
+ int digit = remainder % 10;
+
+ // Tens
+ const char *tensStr = TENS_WAVS_DE[tens - 1];
+ if (_soundHandle) {
+ _soundHandle = queueSound(tensStr, _soundHandle,
+ _volume, 0, false, Audio::Mixer::kSpeechSoundType);
+ } else {
+ CProximity prox(Audio::Mixer::kSpeechSoundType, _volume);
+ _soundHandle = playSound(tensStr, prox);
+ }
+
+ // Digit
+ if (digit != 0) {
+ const char *digitStr = DIGITS_WAVS_DE[digit - 1];
+ _soundHandle = queueSound(digitStr, _soundHandle,
+ _volume, 0, false, Audio::Mixer::kSpeechSoundType);
+ }
+ } else if (remainder != 0) {
+ // One to nineteen
+ const char *name = ONE_TO_NINETEEN_WAVS_DE[remainder - 1];
+ if (_soundHandle) {
+ _soundHandle = queueSound(name, _soundHandle,
+ _volume, 0, false, Audio::Mixer::kSpeechSoundType);
+ } else {
+ CProximity prox(Audio::Mixer::kSpeechSoundType, _volume);
+ _soundHandle = playSound(name, prox);
+ }
+ }
}
+ }
+ } else {
+ if (_countdown >= 100) {
+ // Play "x hundred and" or just "x hundred"
+ CProximity prox(Audio::Mixer::kSpeechSoundType, _volume);
+ CString hName = remainder ? HUNDREDS_AND_WAVS_EN[hundreds] : HUNDREDS_WAVS_EN[hundreds];
+ _soundHandle = playSound(hName, prox);
+ }
+
+ CString ctrName = COUNTDOWN_WAVS_EN[remainder];
+ if (_countdown == 10) {
+ ctrName = "z#229.wav";
+ _countdown = 998;
+ }
+
+ // Play the sub-hundred portion of the countdown amount
+ if (_soundHandle > 0) {
+ _soundHandle = queueSound(ctrName, _soundHandle, _volume, 0, false, Audio::Mixer::kSpeechSoundType);
} else {
- // Bomb speech currently active, so schedule the method
- // to re-trigger after 100ms to check if speech is finished
- addTimer(0, 100, 0);
+ CProximity prox(Audio::Mixer::kSpeechSoundType, _volume);
+ _soundHandle = playSound(ctrName, prox);
}
}
- } else {
- // In rooms other than the bomb room
- if (_active) {
- --_countdown;
- addTimer(6000);
- if (_countdown < 11)
- _countdown = getRandomNumber(900) + 50;
- }
+ // Reduce countdown and schedule another timer
+ --_countdown;
+ addTimer(0, 1000, 0);
}
-
+
return true;
}
diff --git a/engines/titanic/game/bowl_unlocker.cpp b/engines/titanic/game/bowl_unlocker.cpp
index 06d70256c5..43e5d8a12d 100644
--- a/engines/titanic/game/bowl_unlocker.cpp
+++ b/engines/titanic/game/bowl_unlocker.cpp
@@ -22,6 +22,7 @@
#include "titanic/game/bowl_unlocker.h"
#include "titanic/core/room_item.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -60,7 +61,7 @@ bool CBowlUnlocker::MovieEndMsg(CMovieEndMsg *msg) {
CNutPuzzleMsg puzzleMsg("BowlUnlocked");
puzzleMsg.execute(getRoom(), nullptr, MSGFLAG_SCAN);
- playSound("z#47.wav");
+ playSound(TRANSLATE("z#47.wav", "z#578.wav"));
return true;
}
diff --git a/engines/titanic/game/bridge_view.cpp b/engines/titanic/game/bridge_view.cpp
index 14361b4e8c..608724c16c 100644
--- a/engines/titanic/game/bridge_view.cpp
+++ b/engines/titanic/game/bridge_view.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/bridge_view.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -78,7 +79,7 @@ bool CBridgeView::ActMsg(CActMsg *msg) {
CChangeMusicMsg musicMsg;
musicMsg._flags = 1;
musicMsg.execute("BridgeAutoMusicPlayer");
- playSound("a#42.wav");
+ playSound(TRANSLATE("a#42.wav", "a#35.wav"));
playMovie(MOVIE_NOTIFY_OBJECT);
}
}
diff --git a/engines/titanic/game/broken_pellerator.cpp b/engines/titanic/game/broken_pellerator.cpp
index 5de728481b..809cfb309e 100644
--- a/engines/titanic/game/broken_pellerator.cpp
+++ b/engines/titanic/game/broken_pellerator.cpp
@@ -142,9 +142,11 @@ bool CBrokenPellerator::MovieEndMsg(CMovieEndMsg *msg) {
switch (_closeAction) {
case 1:
changeView(_exitLeftView);
+ _closeAction = CLOSE_NONE;
break;
case 2:
changeView(_exitRightView);
+ _closeAction = CLOSE_NONE;
break;
default:
break;
diff --git a/engines/titanic/game/captains_wheel.cpp b/engines/titanic/game/captains_wheel.cpp
index eafb478d0e..7beb29c072 100644
--- a/engines/titanic/game/captains_wheel.cpp
+++ b/engines/titanic/game/captains_wheel.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/captains_wheel.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -99,6 +100,7 @@ bool CCaptainsWheel::ActMsg(CActMsg *msg) {
}
} else if (msg->_action == "Go") {
if (_stopEnabled) {
+ _goEnabled = false;
incTransitions();
_stopEnabled = false;
_actionNum = 1;
@@ -118,7 +120,7 @@ bool CCaptainsWheel::ActMsg(CActMsg *msg) {
playMovie(162, 168, MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH);
}
} else if (msg->_action == "SetDestin") {
- playSound("a#44.wav");
+ playSound(TRANSLATE("a#44.wav", "a#37.wav"));
CSetVolumeMsg volumeMsg;
volumeMsg._volume = 25;
volumeMsg.execute("EngineSounds");
diff --git a/engines/titanic/game/cdrom_tray.cpp b/engines/titanic/game/cdrom_tray.cpp
index d6aa32c702..f9daf17d00 100644
--- a/engines/titanic/game/cdrom_tray.cpp
+++ b/engines/titanic/game/cdrom_tray.cpp
@@ -23,6 +23,7 @@
#include "titanic/core/room_item.h"
#include "titanic/game/cdrom_tray.h"
#include "titanic/messages/messages.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -59,7 +60,7 @@ bool CCDROMTray::ActMsg(CActMsg *msg) {
if (_insertedCD == "None") {
// No CD in tray
playMovie(55, 65, 0);
- playSound("a#35.wav", 50, 0, 0);
+ playSound(TRANSLATE("a#35.wav", "a#30.wav"), 50, 0, 0);
_isOpened = false;
} else {
// Ejecting tray with CD
@@ -75,29 +76,29 @@ bool CCDROMTray::ActMsg(CActMsg *msg) {
} else if (_insertedCD == "None") {
// Opening tray with no CD
playMovie(44, 54, 0);
- playSound("a#34.wav", 50, 0, 0);
+ playSound(TRANSLATE("a#34.wav", "a#29.wav"), 50, 0, 0);
_isOpened = true;
} else if (_insertedCD == "newCD1" || _insertedCD == "newCD2") {
// Opening tray with standard CD
playMovie(22, 32, 0);
- playSound("a#34.wav", 50, 0, 0);
+ playSound(TRANSLATE("a#34.wav", "a#29.wav"), 50, 0, 0);
_isOpened = true;
} else if (_insertedCD == "newSTCD") {
// Opening tray with Starship Titanic CD
playMovie(0, 10, 0);
- playSound("a#34.wav", 50, 0, 0);
+ playSound(TRANSLATE("a#34.wav", "a#29.wav"), 50, 0, 0);
_isOpened = true;
}
} else if (_isOpened) {
if (msg->_action == "newCD1" || msg->_action == "newCD2") {
// Standard CD dropped on CDROM Tray
playMovie(33, 43, MOVIE_NOTIFY_OBJECT);
- playSound("a#35.wav", 50, 0, 0);
+ playSound(TRANSLATE("a#35.wav", "a#30.wav"), 50, 0, 0);
} else if (msg->_action == "newSTCD") {
// Starship Titanic CD dropped on CDROM Tray
disableMouse();
playMovie(11, 21, MOVIE_NOTIFY_OBJECT);
- playSound("a#35.wav", 50, 0, 0);
+ playSound(TRANSLATE("a#35.wav", "a#30.wav"), 50, 0, 0);
} else {
return true;
}
diff --git a/engines/titanic/game/cell_point_button.cpp b/engines/titanic/game/cell_point_button.cpp
index 2afcf39f48..75b8772d19 100644
--- a/engines/titanic/game/cell_point_button.cpp
+++ b/engines/titanic/game/cell_point_button.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/cell_point_button.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -89,7 +90,7 @@ bool CCellPointButton::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
playMovie(0);
_regionNum = _regionNum ? 0 : 1;
- playSound("z#425.wav");
+ playSound(TRANSLATE("z#425.wav", "z#170.wav"));
talkSetDialRegion(_npcName, _dialNum, _regionNum);
return true;
diff --git a/engines/titanic/game/chev_code.cpp b/engines/titanic/game/chev_code.cpp
index 119d82efc0..6c27b1fd83 100644
--- a/engines/titanic/game/chev_code.cpp
+++ b/engines/titanic/game/chev_code.cpp
@@ -132,7 +132,7 @@ bool CChevCode::GetChevFloorNum(CGetChevFloorNum *msg) {
break;
}
- msg->_floorNum = (val1 >= 10) ? 0 : val1 * 10;
+ msg->_floorNum = (val1 >= 10) ? 0 : val2 * 10 + val1;
return true;
}
diff --git a/engines/titanic/game/chicken_dispensor.cpp b/engines/titanic/game/chicken_dispensor.cpp
index 692c364918..8d16289647 100644
--- a/engines/titanic/game/chicken_dispensor.cpp
+++ b/engines/titanic/game/chicken_dispensor.cpp
@@ -24,6 +24,7 @@
#include "titanic/carry/chicken.h"
#include "titanic/core/project_item.h"
#include "titanic/pet_control/pet_control.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -90,7 +91,7 @@ bool CChickenDispensor::StatusChangeMsg(CStatusChangeMsg *msg) {
if (_disabled) {
playMovie(0, 12, MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH);
- playSound("z#400.wav");
+ playSound(TRANSLATE("z#400.wav", "z#145.wav"));
} else {
playMovie(12, 16, MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH);
}
@@ -109,7 +110,7 @@ bool CChickenDispensor::MovieEndMsg(CMovieEndMsg *msg) {
if (movieFrame == 16) {
// Dispensed a chicken
_cursorId = CURSOR_HAND;
- playSound("b#50.wav", 50);
+ playSound(TRANSLATE("b#50.wav", "b#30.wav"), 50);
CActMsg actMsg("Dispense Chicken");
actMsg.execute("Chicken");
@@ -156,7 +157,7 @@ bool CChickenDispensor::LeaveViewMsg(CLeaveViewMsg *msg) {
}
bool CChickenDispensor::EnterViewMsg(CEnterViewMsg *msg) {
- playSound("b#51.wav");
+ playSound(TRANSLATE("b#51.wav", "b#31.wav"));
_dispensed = false;
_cursorId = CURSOR_ARROW;
return true;
diff --git a/engines/titanic/game/code_wheel.cpp b/engines/titanic/game/code_wheel.cpp
index 1df99ae749..441c481dfe 100644
--- a/engines/titanic/game/code_wheel.cpp
+++ b/engines/titanic/game/code_wheel.cpp
@@ -22,6 +22,8 @@
#include "titanic/game/code_wheel.h"
#include "titanic/titanic.h"
+#include "titanic/translation.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -91,7 +93,7 @@ bool CodeWheel::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
_value = (_value <= 0) ? 14 : _value - 1;
}
- playSound("z#59.wav");
+ playSound(TRANSLATE("z#59.wav", "z#590.wav"));
return true;
}
diff --git a/engines/titanic/game/computer.cpp b/engines/titanic/game/computer.cpp
index 9aa5db252c..a9ff1ce9c0 100644
--- a/engines/titanic/game/computer.cpp
+++ b/engines/titanic/game/computer.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/computer.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -46,7 +47,7 @@ void CComputer::load(SimpleFile *file) {
bool CComputer::ActMsg(CActMsg *msg) {
if (_state) {
- playSound("a#35.wav");
+ playSound(TRANSLATE("a#35.wav", "a#30.wav"));
playMovie(32, 42, 0);
if (msg->_action == "CD1")
@@ -66,11 +67,11 @@ bool CComputer::ActMsg(CActMsg *msg) {
bool CComputer::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
if (_currentCD == "None") {
if (_state) {
- playSound("a#35.wav");
+ playSound(TRANSLATE("a#35.wav", "a#30.wav"));
playMovie(11, 21, 0);
_state = 0;
} else {
- playSound("a#34.wav");
+ playSound(TRANSLATE("a#34.wav", "a#29.wav"));
playMovie(0, 10, 0);
_state = 1;
}
@@ -81,7 +82,7 @@ bool CComputer::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
actMsg.execute(_currentCD);
_currentCD = "None";
} else {
- playSound("a#34.wav");
+ playSound(TRANSLATE("a#34.wav", "a#29.wav"));
playMovie(21, 31, 0);
_state = 1;
}
@@ -92,10 +93,10 @@ bool CComputer::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
bool CComputer::MovieEndMsg(CMovieEndMsg *msg) {
if (msg->_endFrame == 90) {
- playSound("a#32.wav");
- playSound("a#33.wav");
- playSound("a#31.wav");
- playSound("a#0.wav");
+ playSound(TRANSLATE("a#32.wav", "a#27.wav"));
+ playSound(TRANSLATE("a#33.wav", "a#28.wav"));
+ playSound(TRANSLATE("a#31.wav", "a#26.wav"));
+ playSound(TRANSLATE("a#0.wav", "a#52.wav"));
gotoView("Home.Node 4.E", "_TRACK,3,e-cu,4,E");
}
diff --git a/engines/titanic/game/computer_screen.cpp b/engines/titanic/game/computer_screen.cpp
index 179063d1b0..dee469af1c 100644
--- a/engines/titanic/game/computer_screen.cpp
+++ b/engines/titanic/game/computer_screen.cpp
@@ -22,7 +22,7 @@
#include "titanic/game/computer_screen.h"
#include "titanic/messages/messages.h"
-#include "titanic/titanic.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -59,7 +59,7 @@ bool CComputerScreen::ActMsg(CActMsg *msg) {
}
bool CComputerScreen::MovieEndMsg(CMovieEndMsg *msg) {
- playSound("z#47.wav");
+ playSound(TRANSLATE("z#47.wav", "z#578.wav"));
addTimer(0, 3000, 0);
for (int idx = 0; idx < 10; ++idx)
@@ -90,57 +90,57 @@ bool CComputerScreen::TimerMsg(CTimerMsg *msg) {
switch (msg->_actionVal) {
case 0:
- if (!g_vm->isGerman()) {
- loadSound("a#32.wav");
- loadSound("a#31.wav");
- loadSound("a#33.wav");
- loadSound("a#30.wav");
- loadSound("a#29.wav");
- playSound("a#25.wav");
- } else {
+ if (g_language == Common::DE_DEU) {
loadSound("a#27.wav");
loadSound("a#26.wav");
loadSound("a#28.wav");
loadSound("a#25.wav");
loadSound("a#24.wav");
playSound("a#20.wav");
+ } else {
+ loadSound("a#32.wav");
+ loadSound("a#31.wav");
+ loadSound("a#33.wav");
+ loadSound("a#30.wav");
+ loadSound("a#29.wav");
+ playSound("a#25.wav");
}
addTimer(1, 2000, 0);
break;
case 1:
playMovie(23, 26, MOVIE_STOP_PREVIOUS);
- playSound(SOUND("a#32.wav", "a#27.wav"));
- playSound(SOUND("a#31.wav", "a#26.wav"));
+ playSound(TRANSLATE("a#32.wav", "a#27.wav"));
+ playSound(TRANSLATE("a#31.wav", "a#26.wav"));
addTimer(2, 2000, 0);
break;
case 2: {
CChangeMusicMsg musicMsg(CString(), 1);
musicMsg.execute("HomeMusicPlayer");
- playSound(SOUND("a#33.wav", "a#28.wav"));
- playSound(SOUND("a#31.wav", "a#26.wav"));
+ playSound(TRANSLATE("a#33.wav", "a#28.wav"));
+ playSound(TRANSLATE("a#31.wav", "a#26.wav"));
changeView("Home.Node 4.E", "");
playClip(51, 150);
- playSound(SOUND("a#31.wav", "a#26.wav"));
+ playSound(TRANSLATE("a#31.wav", "a#26.wav"));
playClip(151, 200);
- handle = playSound(SOUND("a#27.wav", "a#22.wav"));
+ handle = playSound(TRANSLATE("a#27.wav", "a#22.wav"));
playClip(200, 306);
- playSound(SOUND("a#30.wav", "a#25.wav"));
+ playSound(TRANSLATE("a#30.wav", "a#25.wav"));
stopSound(handle, 0);
playClip(306, 338);
- handle = playSound(SOUND("a#28.wav", "a#23.wav"));
+ handle = playSound(TRANSLATE("a#28.wav", "a#23.wav"));
playClip(338, 392);
- playSound(SOUND("a#29.wav", "a#24.wav"));
+ playSound(TRANSLATE("a#29.wav", "a#24.wav"));
stopSound(handle);
- handle = playSound(SOUND("y#662.wav", "y#0.wav"));
+ handle = playSound(TRANSLATE("y#662.wav", "y#0.wav"));
setSoundVolume(handle, 10, 2);
playClip(392, 450);
startTalking("Doorbot", 0x3611A);
- sleep(8000);
+ sleep(TRANSLATE(8000, 7000));
playClip(450, 492);
startTalking("Doorbot", 0x36121);
diff --git a/engines/titanic/game/credits.cpp b/engines/titanic/game/credits.cpp
index 8333343cde..ddb44f127c 100644
--- a/engines/titanic/game/credits.cpp
+++ b/engines/titanic/game/credits.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/credits.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -58,13 +59,13 @@ bool CCredits::SignalObject(CSignalObject *msg) {
bool CCredits::TimerMsg(CTimerMsg *msg) {
stopGlobalSound(true, -1);
setVisible(true);
- loadSound("a#16.wav");
- loadSound("a#24.wav");
+ loadSound(TRANSLATE("a#16.wav", "a#11.wav"));
+ loadSound(TRANSLATE("a#24.wav", "a#19.wav"));
if (playCutscene(0, 18)) {
- playGlobalSound("a#16.wav", VOL_NORMAL, false, false, 0);
+ playGlobalSound(TRANSLATE("a#16.wav", "a#11.wav"), VOL_NORMAL, false, false, 0);
if (playCutscene(19, 642)) {
- playSound("a#24.wav");
+ playSound(TRANSLATE("a#24.wav", "a#19.wav"));
playCutscene(643, 750);
}
}
diff --git a/engines/titanic/game/credits_button.cpp b/engines/titanic/game/credits_button.cpp
index ee8f7bb329..2296a4e1e8 100644
--- a/engines/titanic/game/credits_button.cpp
+++ b/engines/titanic/game/credits_button.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/credits_button.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -50,7 +51,7 @@ bool CCreditsButton::MouseButtonUpMsg(CMouseButtonUpMsg *msg) {
bool CCreditsButton::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
if (_fieldE0) {
- playSound("a#20.wav");
+ playSound(TRANSLATE("a#20.wav", "a#15.wav"));
CSignalObject signalMsg;
signalMsg._numValue = 1;
signalMsg.execute("CreditsPlayer");
diff --git a/engines/titanic/game/desk_click_responder.cpp b/engines/titanic/game/desk_click_responder.cpp
index 0650b3a1f5..efdf13fa92 100644
--- a/engines/titanic/game/desk_click_responder.cpp
+++ b/engines/titanic/game/desk_click_responder.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/desk_click_responder.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -52,7 +53,7 @@ bool CDeskClickResponder::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
uint ticks = getTicksCount();
if (!_ticks || ticks > (_ticks + 4000)) {
- playSound("a#22.wav");
+ playSound(TRANSLATE("a#22.wav", "a#17.wav"));
_ticks = ticks;
}
diff --git a/engines/titanic/game/end_credit_text.cpp b/engines/titanic/game/end_credit_text.cpp
index 9af13133d6..8809799a27 100644
--- a/engines/titanic/game/end_credit_text.cpp
+++ b/engines/titanic/game/end_credit_text.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/end_credit_text.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -43,7 +44,7 @@ void CEndCreditText::load(SimpleFile *file) {
}
bool CEndCreditText::ActMsg(CActMsg *msg) {
- playGlobalSound("z#41.wav", VOL_NORMAL, false, false, 0);
+ playGlobalSound(TRANSLATE("z#41.wav", "z#573.wav"), VOL_NORMAL, false, false, 0);
createCredits();
_flag = true;
return true;
diff --git a/engines/titanic/game/end_credits.cpp b/engines/titanic/game/end_credits.cpp
index 77abfb006e..4ea54a3b76 100644
--- a/engines/titanic/game/end_credits.cpp
+++ b/engines/titanic/game/end_credits.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/end_credits.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -47,8 +48,8 @@ bool CEndCredits::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
stopGlobalSound(true, -1);
_flag = false;
} else {
- loadSound("z#41.wav");
- playGlobalSound("z#41.wav", VOL_NORMAL, false, false, 0);
+ loadSound(TRANSLATE("z#41.wav", "z#573.wav"));
+ playGlobalSound(TRANSLATE("z#41.wav", "z#573.wav"), VOL_NORMAL, false, false, 0);
_flag = true;
}
diff --git a/engines/titanic/game/end_explode_ship.cpp b/engines/titanic/game/end_explode_ship.cpp
index 2de9192319..5f90604fd7 100644
--- a/engines/titanic/game/end_explode_ship.cpp
+++ b/engines/titanic/game/end_explode_ship.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/end_explode_ship.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -53,9 +54,9 @@ bool CEndExplodeShip::ActMsg(CActMsg *msg) {
} else if (msg->_action == "Disarm Bomb") {
_isExploding = false;
} else if (msg->_action == "TakeOff") {
- loadSound("a#31.wav");
- loadSound("a#14.wav");
- playGlobalSound("a#13.wav", VOL_NORMAL, true, true, 0);
+ loadSound(TRANSLATE("a#31.wav", "a#26.wav"));
+ loadSound(TRANSLATE("a#14.wav", "a#7.wav"));
+ playGlobalSound(TRANSLATE("a#13.wav", "a#6.wav"), VOL_NORMAL, true, true, 0);
addTimer(1, 10212, 0);
}
@@ -86,7 +87,7 @@ bool CEndExplodeShip::TimerMsg(CTimerMsg *msg) {
bool CEndExplodeShip::MovieEndMsg(CMovieEndMsg *msg) {
if (msg->_endFrame == 550) {
- playSound("z#399.wav");
+ playSound(TRANSLATE("z#399.wav", "a#10.wav"));
startAnimTimer("Boom", 4200, 0);
} else {
addTimer(3, 8000, 0);
@@ -97,9 +98,9 @@ bool CEndExplodeShip::MovieEndMsg(CMovieEndMsg *msg) {
bool CEndExplodeShip::MovieFrameMsg(CMovieFrameMsg *msg) {
if (msg->_frameNumber == 58)
- playSound("a#31.wav", 70);
+ playSound(TRANSLATE("a#31.wav", "a#26.wav"), 70);
else if (msg->_frameNumber == 551)
- playSound("a#14.wav");
+ playSound(TRANSLATE("a#14.wav", "a#7.wav"));
return true;
}
diff --git a/engines/titanic/game/end_sequence_control.cpp b/engines/titanic/game/end_sequence_control.cpp
index 52151f353e..e8bc04aa85 100644
--- a/engines/titanic/game/end_sequence_control.cpp
+++ b/engines/titanic/game/end_sequence_control.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/end_sequence_control.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -71,13 +72,13 @@ bool CEndSequenceControl::EnterRoomMsg(CEnterRoomMsg *msg) {
petHide();
disableMouse();
addTimer(1, 1000, 0);
- playGlobalSound("a#15.wav", VOL_NORMAL, true, true, 0, Audio::Mixer::kSpeechSoundType);
+ playGlobalSound(TRANSLATE("a#15.wav", "a#8.wav"), VOL_NORMAL, true, true, 0, Audio::Mixer::kSpeechSoundType);
return true;
}
bool CEndSequenceControl::EnterViewMsg(CEnterViewMsg *msg) {
- movieSetAudioTiming(true);
playMovie(MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH);
+ movieSetPlaying(true);
return true;
}
diff --git a/engines/titanic/game/fan_control.cpp b/engines/titanic/game/fan_control.cpp
index fc99bd8b36..689f66e3d6 100644
--- a/engines/titanic/game/fan_control.cpp
+++ b/engines/titanic/game/fan_control.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/fan_control.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -74,7 +75,7 @@ bool CFanControl::ActMsg(CActMsg *msg) {
bool CFanControl::StatusChangeMsg(CStatusChangeMsg *msg) {
if (!_starlingsDying) {
- playSound("z#42.wav");
+ playSound(TRANSLATE("z#42.wav", "z#743.wav"));
if (_enabled) {
switch (msg->_newStatus) {
case 1:
diff --git a/engines/titanic/game/fan_noises.cpp b/engines/titanic/game/fan_noises.cpp
index 7ddf919eca..1a5a46ac02 100644
--- a/engines/titanic/game/fan_noises.cpp
+++ b/engines/titanic/game/fan_noises.cpp
@@ -22,6 +22,7 @@
#include "titanic/game/fan_noises.h"
#include "titanic/core/room_item.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -75,12 +76,12 @@ bool CFanNoises::EnterRoomMsg(CEnterRoomMsg *msg) {
switch (_state) {
case 1:
- _soundHandle = playSound("b#60.wav", 0, _soundBalance, true);
+ _soundHandle = playSound(TRANSLATE("b#60.wav", "b#40.wav"), 0, _soundBalance, true);
setSoundVolume(_soundHandle, _soundPercent, _soundSeconds);
_startFlag = true;
break;
case 2:
- _soundHandle = playSound("b#58.wav", 0, _soundBalance, true);
+ _soundHandle = playSound(TRANSLATE("b#58.wav", "b#38.wav"), 0, _soundBalance, true);
setSoundVolume(_soundHandle, _soundPercent, _soundSeconds);
_startFlag = true;
break;
@@ -122,7 +123,7 @@ bool CFanNoises::StatusChangeMsg(CStatusChangeMsg *msg) {
switch (oldState) {
case 1:
case 2:
- playSound("b#59.wav", _soundPercent, _soundBalance);
+ playSound(TRANSLATE("b#59.wav", "b#39.wav"), _soundPercent, _soundBalance);
break;
default:
break;
@@ -140,7 +141,7 @@ bool CFanNoises::StatusChangeMsg(CStatusChangeMsg *msg) {
switch (oldState) {
case 0:
case 2:
- _soundHandle = playSound("b#60.wav", _soundPercent, _soundBalance, true);
+ _soundHandle = playSound(TRANSLATE("b#60.wav", "b#40.wav"), _soundPercent, _soundBalance, true);
_startFlag = true;
break;
default:
@@ -157,7 +158,7 @@ bool CFanNoises::StatusChangeMsg(CStatusChangeMsg *msg) {
}
if (oldState == 1) {
- _soundHandle = playSound("b#58.wav", _soundPercent, _soundBalance, true);
+ _soundHandle = playSound(TRANSLATE("b#58.wav", "b#38.wav"), _soundPercent, _soundBalance, true);
_startFlag = true;
}
break;
@@ -186,13 +187,13 @@ bool CFanNoises::LoadSuccessMsg(CLoadSuccessMsg *msg) {
switch (_state) {
case 1:
- playSound("b#60.wav", 0, _soundBalance, true);
+ playSound(TRANSLATE("b#60.wav", "b#40.wav"), 0, _soundBalance, true);
setSoundVolume(_soundHandle, _soundPercent, _soundSeconds);
_startFlag = true;
break;
case 2:
- playSound("b#58.wav", 0, _soundBalance, true);
+ playSound(TRANSLATE("b#58.wav", "b#38.wav"), 0, _soundBalance, true);
setSoundVolume(_soundHandle, _soundPercent, _soundSeconds);
_startFlag = true;
break;
diff --git a/engines/titanic/game/glass_smasher.cpp b/engines/titanic/game/glass_smasher.cpp
index 7de034c2ee..240c9cd9f2 100644
--- a/engines/titanic/game/glass_smasher.cpp
+++ b/engines/titanic/game/glass_smasher.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/glass_smasher.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -41,7 +42,7 @@ void CGlassSmasher::load(SimpleFile *file) {
bool CGlassSmasher::StatusChangeMsg(CStatusChangeMsg *msg) {
setVisible(true);
- playSound("b#40.wav");
+ playSound(TRANSLATE("b#40.wav", "b#19.wav"));
playMovie(MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH);
return true;
}
diff --git a/engines/titanic/game/gondolier/gondolier_mixer.cpp b/engines/titanic/game/gondolier/gondolier_mixer.cpp
index e71562f9d4..da0e7223b1 100644
--- a/engines/titanic/game/gondolier/gondolier_mixer.cpp
+++ b/engines/titanic/game/gondolier/gondolier_mixer.cpp
@@ -22,6 +22,7 @@
#include "titanic/game/gondolier/gondolier_mixer.h"
#include "titanic/core/room_item.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -173,7 +174,7 @@ bool CGondolierMixer::SignalObject(CSignalObject *msg) {
CVisibleMsg visibleMsg;
visibleMsg.execute("Mouth");
- playSound("z#47.wav");
+ playSound(TRANSLATE("z#47.wav", "z#578.wav"));
} else {
CSetVolumeMsg volumeMsg(_volume1, 2);
volumeMsg.execute(this);
diff --git a/engines/titanic/game/hammer_dispensor_button.cpp b/engines/titanic/game/hammer_dispensor_button.cpp
index 661a92eb17..275ef204b2 100644
--- a/engines/titanic/game/hammer_dispensor_button.cpp
+++ b/engines/titanic/game/hammer_dispensor_button.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/hammer_dispensor_button.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -68,7 +69,7 @@ bool CHammerDispensorButton::PuzzleSolvedMsg(CPuzzleSolvedMsg *msg) {
}
bool CHammerDispensorButton::MouseButtonUpMsg(CMouseButtonUpMsg *msg) {
- playSound("z#93.wav");
+ playSound(TRANSLATE("z#93.wav", "z#624.wav"));
petDisplayMessage(1, POKE_WITH_LONG_STICK);
return true;
}
@@ -97,7 +98,7 @@ bool CHammerDispensorButton::FrameMsg(CFrameMsg *msg) {
if (!_open) {
if (flag) {
- playSound("z#93.wav");
+ playSound(TRANSLATE("z#93.wav", "z#624.wav"));
if (++_hitCounter == 5) {
if (!_hammerTaken) {
CActMsg actMsg(_msgAction);
diff --git a/engines/titanic/game/head_smash_lever.cpp b/engines/titanic/game/head_smash_lever.cpp
index dabed26478..87f48c5d6c 100644
--- a/engines/titanic/game/head_smash_lever.cpp
+++ b/engines/titanic/game/head_smash_lever.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/head_smash_lever.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -55,14 +56,14 @@ void CHeadSmashLever::load(SimpleFile *file) {
bool CHeadSmashLever::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
if (_enabled) {
playMovie(0, 14, 0);
- playSound("z#54.wav");
- int soundHandle = playSound("z#45.wav");
- queueSound("z#49.wav", soundHandle);
+ playSound(TRANSLATE("z#54.wav", "z#585.wav"));
+ int soundHandle = playSound(TRANSLATE("z#45.wav", "z#576.wav"));
+ queueSound(TRANSLATE("z#49.wav", "z#580.wav"), soundHandle);
_ticks = getTicksCount();
_fieldE4 = true;
} else {
playMovie(0);
- playSound("z#56.wav");
+ playSound(TRANSLATE("z#56.wav", "z#587.wav"));
}
return true;
@@ -84,7 +85,7 @@ bool CHeadSmashLever::FrameMsg(CFrameMsg *msg) {
CActMsg actMsg2("PlayToEnd");
actMsg2.execute("SmashingStatue");
- playSound("b#16.wav");
+ playSound(TRANSLATE("b#16.wav", "b#100.wav"));
_fieldE4 = false;
}
diff --git a/engines/titanic/game/light.cpp b/engines/titanic/game/light.cpp
index 30fc53463f..cd2d9f3f39 100644
--- a/engines/titanic/game/light.cpp
+++ b/engines/titanic/game/light.cpp
@@ -23,6 +23,7 @@
#include "titanic/game/light.h"
#include "titanic/game/television.h"
#include "titanic/pet_control/pet_control.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -109,10 +110,10 @@ bool CLight::StatusChangeMsg(CStatusChangeMsg *msg) {
if (_eyePresent && isYourStateroom) {
petDisplayMessage(1, LIGHT_IS_LOOSE);
- playSound("z#144.wav", 70);
+ playSound(TRANSLATE("z#144.wav", "z#700.wav"), 70);
} else {
petDisplayMessage(1, LUMI_GLOW_LIGHTS);
- playSound("z#62.wav", 70);
+ playSound(TRANSLATE("z#62.wav", "z#593.wav"), 70);
}
return true;
@@ -124,10 +125,10 @@ bool CLight::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
if (_eyePresent && isYourStateroom) {
petDisplayMessage(1, LIGHT_IS_LOOSE);
- playSound("z#144.wav", 70);
+ playSound(TRANSLATE("z#144.wav", "z#700.wav"), 70);
} else {
petDisplayMessage(1, LUMI_GLOW_LIGHTS);
- playSound("z#62.wav", 70);
+ playSound(TRANSLATE("z#62.wav", "z#593.wav"), 70);
}
return true;
diff --git a/engines/titanic/game/long_stick_dispenser.cpp b/engines/titanic/game/long_stick_dispenser.cpp
index c340cae75b..50d46e4ae0 100644
--- a/engines/titanic/game/long_stick_dispenser.cpp
+++ b/engines/titanic/game/long_stick_dispenser.cpp
@@ -23,6 +23,7 @@
#include "titanic/game/long_stick_dispenser.h"
#include "titanic/core/project_item.h"
#include "titanic/titanic.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -62,7 +63,7 @@ bool CLongStickDispenser::PuzzleSolvedMsg(CPuzzleSolvedMsg *msg) {
_fieldC0 = 1;
loadFrame(19);
} else if (_fieldC0 != 1) {
- playSound(g_vm->isGerman() ? "z#594.wav" : "z#63.wav");
+ playSound(TRANSLATE("z#63.wav", "z#594.wav"));
petDisplayMessage(1, GLASS_IS_UNBREAKABLE);
}
@@ -89,7 +90,7 @@ bool CLongStickDispenser::EnterRoomMsg(CEnterRoomMsg *msg) {
bool CLongStickDispenser::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
if (!_fieldC0) {
- playSound("z#62.wav");
+ playSound(TRANSLATE("z#62.wav", "z#593.wav"));
switch (_fieldBC) {
case 0:
diff --git a/engines/titanic/game/maitred/maitred_body.cpp b/engines/titanic/game/maitred/maitred_body.cpp
index 4cb12aac8f..4f8ca301c0 100644
--- a/engines/titanic/game/maitred/maitred_body.cpp
+++ b/engines/titanic/game/maitred/maitred_body.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/maitred/maitred_body.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -66,7 +67,7 @@ bool CMaitreDBody::ActMsg(CActMsg *msg) {
if (msg->_action == "LoseArm") {
_armed = false;
loadFrame(262);
- playSound("c#75.wav");
+ playSound(TRANSLATE("c#75.wav", "c#57.wav"));
}
return true;
diff --git a/engines/titanic/game/missiveomat.cpp b/engines/titanic/game/missiveomat.cpp
index c2f181d529..e60f695e88 100644
--- a/engines/titanic/game/missiveomat.cpp
+++ b/engines/titanic/game/missiveomat.cpp
@@ -24,6 +24,7 @@
#include "titanic/core/room_item.h"
#include "titanic/support/files_manager.h"
#include "titanic/titanic.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -90,7 +91,7 @@ bool CMissiveOMat::KeyCharMsg(CKeyCharMsg *msg) {
if (!msg->_key)
return true;
- playSound("z#228.wav");
+ playSound(TRANSLATE("z#228.wav", "z#134.wav"));
editMsg._mode = EDIT_KEYPRESS;
editMsg._param = msg->_key;
editMsg.execute(loginControl);
@@ -120,7 +121,7 @@ bool CMissiveOMat::KeyCharMsg(CKeyCharMsg *msg) {
if (!msg->_key)
return true;
- playSound("z#228.wav");
+ playSound(TRANSLATE("z#228.wav", "z#134.wav"));
editMsg._mode = EDIT_KEYPRESS;
editMsg._param = msg->_key;
editMsg.execute(loginControl);
diff --git a/engines/titanic/game/nav_helmet.cpp b/engines/titanic/game/nav_helmet.cpp
index 8002eebcb5..ba3be2b644 100644
--- a/engines/titanic/game/nav_helmet.cpp
+++ b/engines/titanic/game/nav_helmet.cpp
@@ -22,6 +22,8 @@
#include "titanic/game/nav_helmet.h"
#include "titanic/pet_control/pet_control.h"
+#include "titanic/star_control/star_control.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -37,26 +39,26 @@ END_MESSAGE_MAP()
void CNavHelmet::save(SimpleFile *file, int indent) {
file->writeNumberLine(1, indent);
- file->writeNumberLine(_flag, indent);
+ file->writeNumberLine(_helmetOn, indent);
CGameObject::save(file, indent);
}
void CNavHelmet::load(SimpleFile *file) {
file->readNumber();
- _flag = file->readNumber();
+ _helmetOn = file->readNumber();
CGameObject::load(file);
}
bool CNavHelmet::MovieEndMsg(CMovieEndMsg *msg) {
- if (_flag) {
+ CPetControl *pet = getPetControl();
+ assert(pet);
+
+ if (_helmetOn && pet->isAreaUnlocked()) {
setVisible(false);
- CPetControl *pet = getPetControl();
- if (pet) {
- pet->setArea(PET_STARFIELD);
- petDisplayMessage(1, ADJUST_VIEWING_APPARATUS);
- pet->incAreaLocks();
- }
+ pet->setArea(PET_STARFIELD);
+ petDisplayMessage(1, ADJUST_VIEWING_APPARATUS);
+ pet->incAreaLocks();
starFn(STAR_SHOW);
starFn(STAR_12);
@@ -67,6 +69,7 @@ bool CNavHelmet::MovieEndMsg(CMovieEndMsg *msg) {
bool CNavHelmet::EnterViewMsg(CEnterViewMsg *msg) {
petSetRemoteTarget();
+ loadFrame(120);
return true;
}
@@ -78,13 +81,13 @@ bool CNavHelmet::LeaveViewMsg(CLeaveViewMsg *msg) {
bool CNavHelmet::PETHelmetOnOffMsg(CPETHelmetOnOffMsg *msg) {
CPetControl *pet = getPetControl();
- if (_flag) {
- _flag = false;
+ if (_helmetOn) {
+ _helmetOn = false;
setVisible(true);
starFn(STAR_HIDE);
playMovie(61, 120, MOVIE_NOTIFY_OBJECT);
- playSound("a#47.wav");
- playSound("a#48.wav");
+ playSound(TRANSLATE("a#47.wav", "a#40.wav"));
+ playSound(TRANSLATE("a#48.wav", "a#41.wav"));
if (pet) {
pet->decAreaLocks();
@@ -94,31 +97,47 @@ bool CNavHelmet::PETHelmetOnOffMsg(CPETHelmetOnOffMsg *msg) {
decTransitions();
} else {
incTransitions();
- _flag = true;
+ _helmetOn = true;
setVisible(true);
playMovie(0, 60, MOVIE_NOTIFY_OBJECT);
- playSound("a#48.wav");
- playSound("a#47.wav");
+ playSound(TRANSLATE("a#48.wav", "a#41.wav"));
+ playSound(TRANSLATE("a#47.wav", "a#40.wav"));
}
return true;
}
bool CNavHelmet::PETPhotoOnOffMsg(CPETPhotoOnOffMsg *msg) {
- if (_flag)
+ if (_helmetOn)
starFn(STAR_TOGGLE_MODE);
return true;
}
bool CNavHelmet::PETStarFieldLockMsg(CPETStarFieldLockMsg *msg) {
- if (_flag) {
- if (msg->_value) {
- playSound("a#6.wav");
- starFn(LOCK_STAR);
- } else {
- playSound("a#5.wav");
- starFn(UNLOCK_STAR);
+ if (_helmetOn) {
+ CPetControl *pet = getPetControl();
+ CStarControl *starControl = nullptr;
+ bool isStarFieldMode = false;
+
+ if (pet)
+ starControl = pet->getStarControl();
+
+ if (starControl)
+ isStarFieldMode = starControl->isStarFieldMode();
+
+ if (isStarFieldMode) {
+ // locking and unlocking only in starfield
+ // It already does this without the conditional
+ // but now it will also not play the sounds in
+ // photoview
+ if (msg->_value) {
+ playSound(TRANSLATE("a#6.wav", "a#58.wav"));
+ starFn(LOCK_STAR);
+ } else {
+ playSound(TRANSLATE("a#5.wav", "a#57.wav"));
+ starFn(UNLOCK_STAR);
+ }
}
}
diff --git a/engines/titanic/game/nav_helmet.h b/engines/titanic/game/nav_helmet.h
index c408d05c97..6e30c4b9c1 100644
--- a/engines/titanic/game/nav_helmet.h
+++ b/engines/titanic/game/nav_helmet.h
@@ -38,10 +38,10 @@ class CNavHelmet : public CGameObject {
bool PETStarFieldLockMsg(CPETStarFieldLockMsg *msg);
bool PETSetStarDestinationMsg(CPETSetStarDestinationMsg *msg);
private:
- bool _flag;
+ bool _helmetOn;
public:
CLASSDEF;
- CNavHelmet() : CGameObject(), _flag(false) {}
+ CNavHelmet() : CGameObject(), _helmetOn(false) {}
/**
* 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 d00c7b372e..be17d536b0 100644
--- a/engines/titanic/game/nose_holder.cpp
+++ b/engines/titanic/game/nose_holder.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/nose_holder.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -54,7 +55,7 @@ bool CNoseHolder::ActMsg(CActMsg *msg) {
if (msg->_action == "Sneeze" && !_itemName.empty() && _dropEnabled) {
CProximity prox;
prox._positioningMode = POSMODE_VECTOR;
- playSound("z#35.wav", prox);
+ playSound(TRANSLATE("z#35.wav", "z#567.wav"), prox);
if (getView() == findView()) {
setVisible(true);
diff --git a/engines/titanic/game/parrot/parrot_nut_bowl_actor.cpp b/engines/titanic/game/parrot/parrot_nut_bowl_actor.cpp
index 56c096eec1..440c874536 100644
--- a/engines/titanic/game/parrot/parrot_nut_bowl_actor.cpp
+++ b/engines/titanic/game/parrot/parrot_nut_bowl_actor.cpp
@@ -22,6 +22,7 @@
#include "titanic/game/parrot/parrot_nut_bowl_actor.h"
#include "titanic/core/room_item.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -70,7 +71,7 @@ bool CParrotNutBowlActor::BowlStateChangeMsg(CBowlStateChangeMsg *msg) {
if (!_puzzleDone) {
CReplaceBowlAndNutsMsg replaceMsg;
replaceMsg.execute(findRoom(), nullptr, MSGFLAG_SCAN);
- playSound("z#47.wav");
+ playSound(TRANSLATE("z#47.wav", "z#578.wav"));
}
_puzzleDone = true;
diff --git a/engines/titanic/game/parrot/parrot_nut_eater.cpp b/engines/titanic/game/parrot/parrot_nut_eater.cpp
index c8d944632f..4e0476d77a 100644
--- a/engines/titanic/game/parrot/parrot_nut_eater.cpp
+++ b/engines/titanic/game/parrot/parrot_nut_eater.cpp
@@ -22,6 +22,7 @@
#include "titanic/game/parrot/parrot_nut_eater.h"
#include "titanic/core/room_item.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -55,7 +56,7 @@ bool CParrotNutEater::MovieEndMsg(CMovieEndMsg *msg) {
CNutPuzzleMsg nutMsg("NutsGone");
nutMsg.execute(getRoom(), nullptr, MSGFLAG_SCAN);
- playSound("z#47.wav");
+ playSound(TRANSLATE("z#47.wav", "z#578.wav"));
return true;
}
@@ -70,7 +71,7 @@ bool CParrotNutEater::NutPuzzleMsg(CNutPuzzleMsg *msg) {
playMovie(MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH);
movieEvent(68);
movieEvent(132);
- playSound("z#215.wav");
+ playSound(TRANSLATE("z#215.wav", "z#6.wav"));
CTrueTalkTriggerActionMsg triggerMsg;
triggerMsg._param1 = triggerMsg._param2 = 0;
@@ -85,10 +86,10 @@ bool CParrotNutEater::MovieFrameMsg(CMovieFrameMsg *msg) {
switch (msg->_frameNumber) {
case 68:
- playSound("z#214.wav", prox);
+ playSound(TRANSLATE("z#214.wav", "z#5.wav"), prox);
break;
case 132:
- playSound("z#216.wav", prox);
+ playSound(TRANSLATE("z#216.wav", "z#7.wav"), prox);
break;
default:
break;
diff --git a/engines/titanic/game/pet/pet_sounds.cpp b/engines/titanic/game/pet/pet_sounds.cpp
index b2c9902cc8..74aaedafbe 100644
--- a/engines/titanic/game/pet/pet_sounds.cpp
+++ b/engines/titanic/game/pet/pet_sounds.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/pet/pet_sounds.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -43,11 +44,11 @@ void CPETSounds::load(SimpleFile *file) {
bool CPETSounds::PETPlaySoundMsg(CPETPlaySoundMsg *msg) {
if (msg->_soundNum == 1) {
- playSound("z#65.wav");
+ playSound(TRANSLATE("z#65.wav", "z#596.wav"));
} else if (msg->_soundNum == 2 && stateGetParrotMet()) {
uint ticks = getTicksCount();
if (!_ticks || ticks > (_ticks + 12000)) {
- playSound("z#36.wav");
+ playSound(TRANSLATE("z#36.wav", "z#568.wav"));
_ticks = ticks;
}
}
diff --git a/engines/titanic/game/record_phonograph_button.cpp b/engines/titanic/game/record_phonograph_button.cpp
index 1bd2060193..a52183906b 100644
--- a/engines/titanic/game/record_phonograph_button.cpp
+++ b/engines/titanic/game/record_phonograph_button.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/record_phonograph_button.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -46,7 +47,7 @@ bool CRecordPhonographButton::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
recordMsg.execute(getParent());
if (recordMsg._canRecord) {
- playSound("z#58.wav");
+ playSound(TRANSLATE("z#58.wav", "z#589.wav"));
loadFrame(1);
_active = true;
}
@@ -56,7 +57,7 @@ bool CRecordPhonographButton::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
bool CRecordPhonographButton::PhonographStopMsg(CPhonographStopMsg *msg) {
if (_active) {
- playSound("z#57.wav");
+ playSound(TRANSLATE("z#57.wav", "z#588.wav"));
loadFrame(0);
_active = false;
}
diff --git a/engines/titanic/game/replacement_ear.cpp b/engines/titanic/game/replacement_ear.cpp
index d1274e92db..fff209202b 100644
--- a/engines/titanic/game/replacement_ear.cpp
+++ b/engines/titanic/game/replacement_ear.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/replacement_ear.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -41,7 +42,7 @@ void CReplacementEar::load(SimpleFile *file) {
bool CReplacementEar::VisibleMsg(CVisibleMsg *msg) {
setVisible(true);
playMovie(MOVIE_WAIT_FOR_FINISH);
- playSound("z#64.wav");
+ playSound(TRANSLATE("z#64.wav", "z#595.wav"));
return true;
}
diff --git a/engines/titanic/game/sauce_dispensor.cpp b/engines/titanic/game/sauce_dispensor.cpp
index 7b395e5b11..993a577fd7 100644
--- a/engines/titanic/game/sauce_dispensor.cpp
+++ b/engines/titanic/game/sauce_dispensor.cpp
@@ -23,6 +23,7 @@
#include "titanic/game/sauce_dispensor.h"
#include "titanic/carry/chicken.h"
#include "titanic/carry/glass.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -73,7 +74,7 @@ bool CSauceDispensor::Use(CUse *msg) {
CChicken *chicken = static_cast<CChicken *>(msg->_item);
_field104 = true;
if (_starlingsDead) {
- playSound("b#15.wav", 50);
+ playSound(TRANSLATE("b#15.wav", "z#562.wav"), 50);
if (chicken->_condiment != "None") {
petDisplayMessage(1, FOODSTUFF_ALREADY_GARNISHED);
@@ -96,7 +97,7 @@ bool CSauceDispensor::Use(CUse *msg) {
CMovieEndMsg endMsg(0, 0);
endMsg.execute(this);
- playSound("z#120.wav");
+ playSound(TRANSLATE("z#120.wav", "z#651.wav"));
petDisplayMessage(1, DISPENSOR_IS_EMPTY);
} else if (msg->_item->isEquals("BeerGlass")) {
diff --git a/engines/titanic/game/search_point.cpp b/engines/titanic/game/search_point.cpp
index bbe923267a..da5c4e5d55 100644
--- a/engines/titanic/game/search_point.cpp
+++ b/engines/titanic/game/search_point.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/search_point.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -47,7 +48,7 @@ bool CSearchPoint::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
child->petAddToInventory();
CVisibleMsg visibleMsg(true);
visibleMsg.execute(child->getName());
- playSound("z#47.wav");
+ playSound(TRANSLATE("z#47.wav", "z#578.wav"));
}
if (--_value == 0)
diff --git a/engines/titanic/game/seasonal_adjustment.cpp b/engines/titanic/game/seasonal_adjustment.cpp
index 7a729c9d90..f9f834eed4 100644
--- a/engines/titanic/game/seasonal_adjustment.cpp
+++ b/engines/titanic/game/seasonal_adjustment.cpp
@@ -22,6 +22,7 @@
#include "titanic/game/seasonal_adjustment.h"
#include "titanic/core/project_item.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -79,7 +80,7 @@ bool CSeasonalAdjustment::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
}
bool CSeasonalAdjustment::MouseButtonUpMsg(CMouseButtonUpMsg *msg) {
- playSound("z#42.wav");
+ playSound(TRANSLATE("z#42.wav", "z#743.wav"));
if (!_enabled) {
petDisplayMessage(1, SEASONAL_SWITCH_NOT_WORKING);
} else if (!_switching) {
diff --git a/engines/titanic/game/sgt/armchair.cpp b/engines/titanic/game/sgt/armchair.cpp
index 6c0e7fe0ca..e9348f4484 100644
--- a/engines/titanic/game/sgt/armchair.cpp
+++ b/engines/titanic/game/sgt/armchair.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/sgt/armchair.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -56,7 +57,7 @@ bool CArmchair::TurnOn(CTurnOn *msg) {
}
playMovie(_startFrame, _endFrame, MOVIE_WAIT_FOR_FINISH);
- playSound("b#0.wav");
+ playSound(TRANSLATE("b#0.wav", "b#85.wav"));
_statics->_armchair = "Open";
_isClosed = false;
}
@@ -71,7 +72,7 @@ bool CArmchair::TurnOff(CTurnOff *msg) {
_endFrame = 21;
_isClosed = true;
playMovie(11, 21, MOVIE_WAIT_FOR_FINISH | MOVIE_NOTIFY_OBJECT);
- playSound("b#0.wav");
+ playSound(TRANSLATE("b#0.wav", "b#85.wav"));
}
return true;
diff --git a/engines/titanic/game/sgt/basin.cpp b/engines/titanic/game/sgt/basin.cpp
index fe3216e002..2aef5bdc9d 100644
--- a/engines/titanic/game/sgt/basin.cpp
+++ b/engines/titanic/game/sgt/basin.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/sgt/basin.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -49,7 +50,7 @@ bool CBasin::TurnOn(CTurnOn *msg) {
_startFrame = 0;
_endFrame = 6;
playMovie(0, 6, MOVIE_WAIT_FOR_FINISH);
- playSound("b#13.wav");
+ playSound(TRANSLATE("b#13.wav", "b#98.wav"));
}
return true;
@@ -62,7 +63,7 @@ bool CBasin::TurnOff(CTurnOff *msg) {
_startFrame = 8;
_endFrame = 14;
playMovie(8, 14, MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH);
- playSound("b#13.wav");
+ playSound(TRANSLATE("b#13.wav", "b#98.wav"));
}
return true;
diff --git a/engines/titanic/game/sgt/bedfoot.cpp b/engines/titanic/game/sgt/bedfoot.cpp
index 8f90e0f100..0cd4eec4a3 100644
--- a/engines/titanic/game/sgt/bedfoot.cpp
+++ b/engines/titanic/game/sgt/bedfoot.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/sgt/bedfoot.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -46,11 +47,11 @@ bool CBedfoot::TurnOn(CTurnOn *msg) {
if (_statics->_washstand == "Open") {
_endFrame = 13;
_statics->_bedfoot = "Open";
- playSound("b#7.wav");
+ playSound(TRANSLATE("b#7.wav", "b#92.wav"));
} else {
_endFrame = 17;
_statics->_bedfoot = "NotOnWashstand";
- playSound("b#4.wav");
+ playSound(TRANSLATE("b#4.wav", "b#89.wav"));
}
playMovie(_startFrame, _endFrame, MOVIE_WAIT_FOR_FINISH);
@@ -95,7 +96,7 @@ bool CBedfoot::TurnOff(CTurnOff *msg) {
}
playMovie(_startFrame, _endFrame, MOVIE_WAIT_FOR_FINISH);
- playSound("b#7.wav");
+ playSound(TRANSLATE("b#7.wav", "b#92.wav"));
} else if (_statics->_bedfoot == "NotOnWashstand" && _statics->_bedhead == "ClosedWrong") {
_isClosed = true;
@@ -110,14 +111,14 @@ bool CBedfoot::TurnOff(CTurnOff *msg) {
}
playMovie(_startFrame, _endFrame, MOVIE_WAIT_FOR_FINISH);
- playSound("b#7.wav");
+ playSound(TRANSLATE("b#7.wav", "b#92.wav"));
} else if (_statics->_bedfoot == "RestingUTV" && _statics->_tv == "Closed") {
_statics->_bedfoot = "Closed";
_startFrame = 25;
_endFrame = 30;
playMovie(25, 30, MOVIE_WAIT_FOR_FINISH);
- playSound("b#7.wav");
+ playSound(TRANSLATE("b#7.wav", "b#92.wav"));
}
if (_statics->_bedfoot == "Closed")
diff --git a/engines/titanic/game/sgt/bedhead.cpp b/engines/titanic/game/sgt/bedhead.cpp
index 7775ad38dc..b94c2cc46b 100644
--- a/engines/titanic/game/sgt/bedhead.cpp
+++ b/engines/titanic/game/sgt/bedhead.cpp
@@ -23,6 +23,7 @@
#include "titanic/game/sgt/bedhead.h"
#include "titanic/support/files_manager.h"
#include "titanic/titanic.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -112,7 +113,7 @@ bool CBedhead::TurnOn(CTurnOn *msg) {
_statics->_bedhead = entry._name4;
playMovie(entry._startFrame, entry._endFrame, MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH);
- playSound("b#6.wav");
+ playSound(TRANSLATE("b#6.wav", "b#91.wav"));
_isClosed = false;
}
}
diff --git a/engines/titanic/game/sgt/chest_of_drawers.cpp b/engines/titanic/game/sgt/chest_of_drawers.cpp
index 648308fc8f..c9664d21ea 100644
--- a/engines/titanic/game/sgt/chest_of_drawers.cpp
+++ b/engines/titanic/game/sgt/chest_of_drawers.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/sgt/chest_of_drawers.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -47,7 +48,7 @@ bool CChestOfDrawers::TurnOn(CTurnOn *msg) {
_startFrame = 1;
_endFrame = 14;
playMovie(1, 14, MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH);
- playSound("b#11.wav");
+ playSound(TRANSLATE("b#11.wav", "b#96.wav"));
}
return true;
@@ -55,7 +56,7 @@ bool CChestOfDrawers::TurnOn(CTurnOn *msg) {
bool CChestOfDrawers::TurnOff(CTurnOff *msg) {
if (_statics->_chestOfDrawers == "Open" && _statics->_drawer == "Closed") {
- CVisibleMsg visibleMsg;
+ CVisibleMsg visibleMsg(false);
visibleMsg.execute("Drawer");
_statics->_chestOfDrawers = "Closed";
_isClosed = true;
@@ -63,7 +64,7 @@ bool CChestOfDrawers::TurnOff(CTurnOff *msg) {
_startFrame = 14;
_endFrame = 27;
playMovie(14, 27, MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH);
- playSound("b#11.wav");
+ playSound(TRANSLATE("b#11.wav", "b#96.wav"));
}
return true;
diff --git a/engines/titanic/game/sgt/desk.cpp b/engines/titanic/game/sgt/desk.cpp
index 1aea9a8ab3..3bc76e703c 100644
--- a/engines/titanic/game/sgt/desk.cpp
+++ b/engines/titanic/game/sgt/desk.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/sgt/desk.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -48,7 +49,7 @@ bool CDesk::TurnOn(CTurnOn *msg) {
_startFrame = 1;
_endFrame = 26;
playMovie(1, 26, MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH);
- playSound("b#12.wav");
+ playSound(TRANSLATE("b#12.wav", "b#97.wav"));
}
return true;
@@ -65,7 +66,7 @@ bool CDesk::TurnOff(CTurnOff *msg) {
_startFrame = 26;
_endFrame = 51;
playMovie(26, 51, MOVIE_WAIT_FOR_FINISH);
- playSound("b#9.wav");
+ playSound(TRANSLATE("b#9.wav", "b#94.wav"));
}
return true;
diff --git a/engines/titanic/game/sgt/deskchair.cpp b/engines/titanic/game/sgt/deskchair.cpp
index 23b6ad64d7..c1363a4e03 100644
--- a/engines/titanic/game/sgt/deskchair.cpp
+++ b/engines/titanic/game/sgt/deskchair.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/sgt/deskchair.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -49,7 +50,7 @@ bool CDeskchair::TurnOn(CTurnOn *msg) {
_startFrame = 0;
_endFrame = 16;
playMovie(0, 16, MOVIE_WAIT_FOR_FINISH);
- playSound("b#8.wav");
+ playSound(TRANSLATE("b#8.wav", "b#93.wav"));
}
return true;
@@ -62,7 +63,7 @@ bool CDeskchair::TurnOff(CTurnOff *msg) {
_startFrame = 16;
_endFrame = 32;
playMovie(16, 32, MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH);
- playSound("b#2.wav");
+ playSound(TRANSLATE("b#2.wav", "b#87.wav"));
}
return true;
diff --git a/engines/titanic/game/sgt/drawer.cpp b/engines/titanic/game/sgt/drawer.cpp
index 7288bbdc61..9c7736a72f 100644
--- a/engines/titanic/game/sgt/drawer.cpp
+++ b/engines/titanic/game/sgt/drawer.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/sgt/drawer.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -54,7 +55,7 @@ bool CDrawer::TurnOn(CTurnOn *msg) {
setVisible(true);
_statics->_drawer = "Open";
playMovie(_startFrame, _endFrame, MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH);
- playSound("b#10.wav");
+ playSound(TRANSLATE("b#10.wav", "b#95.wav"));
}
return true;
@@ -67,7 +68,7 @@ bool CDrawer::TurnOff(CTurnOff *msg) {
_endFrame = 100;
_isClosed = true;
playMovie(_startFrame, _endFrame, MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH);
- playSound("b#10.wav");
+ playSound(TRANSLATE("b#10.wav", "b#95.wav"));
}
return true;
diff --git a/engines/titanic/game/sgt/sgt_state_room.cpp b/engines/titanic/game/sgt/sgt_state_room.cpp
index 3ddfcfef5f..ca6acaef16 100644
--- a/engines/titanic/game/sgt/sgt_state_room.cpp
+++ b/engines/titanic/game/sgt/sgt_state_room.cpp
@@ -22,6 +22,7 @@
#include "titanic/game/sgt/sgt_state_room.h"
#include "titanic/pet_control/pet_control.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -141,7 +142,7 @@ bool CSGTStateRoom::EnterRoomMsg(CEnterRoomMsg *msg) {
if (roomFlags == assignedRoom && getPassengerClass() == 3
&& _statics->_announcementFlag) {
// Congratulations, you may have won an upgrade
- playSound("b#21.wav");
+ playSound(TRANSLATE("b#21.wav", "b#2.wav"));
_statics->_announcementFlag = false;
}
diff --git a/engines/titanic/game/sgt/toilet.cpp b/engines/titanic/game/sgt/toilet.cpp
index 0f796c2b9d..a4541bf377 100644
--- a/engines/titanic/game/sgt/toilet.cpp
+++ b/engines/titanic/game/sgt/toilet.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/sgt/toilet.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -51,7 +52,7 @@ bool CToilet::TurnOn(CTurnOn *msg) {
_startFrame = 0;
_endFrame = 11;
playMovie(0, 11, MOVIE_WAIT_FOR_FINISH);
- playSound("b#1.wav");
+ playSound(TRANSLATE("b#1.wav", "b#86.wav"));
}
return true;
@@ -64,8 +65,8 @@ bool CToilet::TurnOff(CTurnOff *msg) {
_isClosed = true;
_startFrame = 11;
_endFrame = 18;
- playMovie(11, 18, MOVIE_WAIT_FOR_FINISH);
- playSound("b#1.wav");
+ playMovie(11, 18, MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH);
+ playSound(TRANSLATE("b#1.wav", "b#86.wav"));
}
return true;
diff --git a/engines/titanic/game/sgt/washstand.cpp b/engines/titanic/game/sgt/washstand.cpp
index 217e36c1e9..a087969dba 100644
--- a/engines/titanic/game/sgt/washstand.cpp
+++ b/engines/titanic/game/sgt/washstand.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/sgt/washstand.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -48,7 +49,7 @@ bool CWashstand::TurnOn(CTurnOn *msg) {
_startFrame = 0;
_endFrame = 14;
playMovie(0, 14, MOVIE_WAIT_FOR_FINISH);
- playSound("b#14.wav");
+ playSound(TRANSLATE("b#14.wav", "b#99.wav"));
}
return true;
@@ -62,7 +63,7 @@ bool CWashstand::TurnOff(CTurnOff *msg) {
_startFrame = 14;
_endFrame = 28;
playMovie(14, 28, MOVIE_WAIT_FOR_FINISH | MOVIE_NOTIFY_OBJECT);
- playSound("b#14.wav");
+ playSound(TRANSLATE("b#14.wav", "b#99.wav"));
}
return true;
diff --git a/engines/titanic/game/speech_dispensor.cpp b/engines/titanic/game/speech_dispensor.cpp
index 7f5580abb5..460cf0fdc1 100644
--- a/engines/titanic/game/speech_dispensor.cpp
+++ b/engines/titanic/game/speech_dispensor.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/speech_dispensor.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -85,7 +86,7 @@ bool CSpeechDispensor::FrameMsg(CFrameMsg *msg) {
switch (_state) {
case 0:
- playSound("z#93.wav");
+ playSound(TRANSLATE("z#93.wav", "z#624.wav"));
if (_seasonNum == SEASON_WINTER) {
petDisplayMessage(1, FROZEN_TO_BRANCH);
_hitCounter = 0;
@@ -120,7 +121,7 @@ bool CSpeechDispensor::FrameMsg(CFrameMsg *msg) {
bool CSpeechDispensor::MouseButtonUpMsg(CMouseButtonUpMsg *msg) {
if (!_speechFallen) {
- playSound("z#93.wav");
+ playSound(TRANSLATE("z#93.wav", "z#624.wav"));
if (_failureType) {
petDisplayMessage(1, OUT_OF_REACH);
} else {
diff --git a/engines/titanic/game/stop_phonograph_button.cpp b/engines/titanic/game/stop_phonograph_button.cpp
index 75e0ca9337..fb3451238c 100644
--- a/engines/titanic/game/stop_phonograph_button.cpp
+++ b/engines/titanic/game/stop_phonograph_button.cpp
@@ -26,6 +26,7 @@ namespace Titanic {
BEGIN_MESSAGE_MAP(CStopPhonographButton, CBackground)
ON_MESSAGE(MouseButtonDownMsg)
+ ON_MESSAGE(TimerMsg)
END_MESSAGE_MAP()
void CStopPhonographButton::save(SimpleFile *file, int indent) {
@@ -44,7 +45,7 @@ bool CStopPhonographButton::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
if (!queryMsg._value) {
playMovie(0, 1, 0);
- playMovie(1, 0, 0);
+ addTimer(200);
CPhonographStopMsg stopMsg;
stopMsg.execute(getParent());
@@ -53,4 +54,9 @@ bool CStopPhonographButton::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
return true;
}
+bool CStopPhonographButton::TimerMsg(CTimerMsg *msg) {
+ playMovie(1, 0, 0);
+ return true;
+}
+
} // End of namespace Titanic
diff --git a/engines/titanic/game/stop_phonograph_button.h b/engines/titanic/game/stop_phonograph_button.h
index d416c4f8fe..07a19cc103 100644
--- a/engines/titanic/game/stop_phonograph_button.h
+++ b/engines/titanic/game/stop_phonograph_button.h
@@ -30,6 +30,7 @@ namespace Titanic {
class CStopPhonographButton : public CBackground {
DECLARE_MESSAGE_MAP;
bool MouseButtonDownMsg(CMouseButtonDownMsg *msg);
+ bool TimerMsg(CTimerMsg *msg);
public:
CLASSDEF;
diff --git a/engines/titanic/game/sub_glass.cpp b/engines/titanic/game/sub_glass.cpp
index 48cc84815a..ced6f662e9 100644
--- a/engines/titanic/game/sub_glass.cpp
+++ b/engines/titanic/game/sub_glass.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/sub_glass.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -67,7 +68,7 @@ bool CSUBGlass::MouseButtonUpMsg(CMouseButtonUpMsg *msg) {
if (!_fieldBC && _startFrame >= 0) {
_fieldBC = true;
playMovie(_startFrame, _endFrame, MOVIE_NOTIFY_OBJECT);
- playSound("z#30.wav");
+ playSound(TRANSLATE("z#30.wav", "z#561.wav"));
}
return true;
@@ -89,7 +90,7 @@ bool CSUBGlass::SignalObject(CSignalObject *msg) {
if (_signalStartFrame >= 0) {
playMovie(_signalStartFrame, _signalEndFrame, MOVIE_WAIT_FOR_FINISH);
- playSound("z#30.wav");
+ playSound(TRANSLATE("z#30.wav", "z#561.wav"));
_fieldBC = false;
}
}
diff --git a/engines/titanic/game/sweet_bowl.cpp b/engines/titanic/game/sweet_bowl.cpp
index a1d0dc2b01..81d93939d5 100644
--- a/engines/titanic/game/sweet_bowl.cpp
+++ b/engines/titanic/game/sweet_bowl.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/sweet_bowl.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -47,8 +48,8 @@ bool CSweetBowl::MovieEndMsg(CMovieEndMsg *msg) {
bool CSweetBowl::EnterViewMsg(CEnterViewMsg *msg) {
setVisible(false);
- loadSound("b#43.wav");
- loadSound("b#42.wav");
+ loadSound(TRANSLATE("b#43.wav", "b#26.wav"));
+ loadSound(TRANSLATE("b#42.wav", "b#25.wav"));
return true;
}
@@ -56,7 +57,9 @@ bool CSweetBowl::ActMsg(CActMsg *msg) {
if (msg->_action == "Jiggle") {
setVisible(true);
playMovie(MOVIE_WAIT_FOR_FINISH | MOVIE_NOTIFY_OBJECT);
- playSound(getRandomNumber(1) == 1 ? "b#42.wav" : "b#43.wav");
+ playSound(getRandomNumber(1) == 1 ?
+ TRANSLATE("b#42.wav", "b#25.wav") :
+ TRANSLATE("b#43.wav", "b#26.wav"));
}
petDisplayMessage(isEquals("BowlNutsRustler") ?
diff --git a/engines/titanic/game/television.cpp b/engines/titanic/game/television.cpp
index 7c1e33cce4..be5d1ae40e 100644
--- a/engines/titanic/game/television.cpp
+++ b/engines/titanic/game/television.cpp
@@ -26,6 +26,7 @@
#include "titanic/debugger.h"
#include "titanic/game/get_lift_eye2.h"
#include "titanic/pet_control/pet_control.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -245,8 +246,8 @@ bool CTelevision::MovieEndMsg(CMovieEndMsg *msg) {
// You may be a winner
CProximity prox1, prox2;
prox1._soundType = prox2._soundType = Audio::Mixer::kSpeechSoundType;
- playSound("z#47.wav", prox1);
- _soundHandle = playSound("b#20.wav", prox2);
+ playSound(TRANSLATE("z#47.wav", "z#578.wav"), prox1);
+ _soundHandle = playSound(TRANSLATE("b#20.wav", "b#1.wav"), prox2);
// Get the room flags for the SGT floor we're on
CPetControl *pet = getPetControl();
diff --git a/engines/titanic/game/throw_tv_down_well.cpp b/engines/titanic/game/throw_tv_down_well.cpp
index 680fc7e29f..ba01b32620 100644
--- a/engines/titanic/game/throw_tv_down_well.cpp
+++ b/engines/titanic/game/throw_tv_down_well.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/throw_tv_down_well.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -68,7 +69,7 @@ bool CThrowTVDownWell::EnterViewMsg(CEnterViewMsg *msg) {
bool CThrowTVDownWell::MovieEndMsg(CMovieEndMsg *msg) {
sleep(2000);
changeView("ParrotLobby.Node 11.N");
- playSound("z#471.wav");
+ playSound(TRANSLATE("z#471.wav", "z#208.wav"));
addTimer(2, 7000, 0);
return true;
}
@@ -77,19 +78,19 @@ bool CThrowTVDownWell::TimerMsg(CTimerMsg *msg) {
if (msg->_actionVal == 1) {
changeView("ParrotLobby.Node 10.N");
} else if (msg->_actionVal == 2) {
- playSound("z#468.wav", 50);
+ playSound(TRANSLATE("z#468.wav", "z#205.wav"), 50);
sleep(1500);
changeView(_viewName);
_viewName = "NULL";
unlockMouse();
- playSound("z#47.wav");
+ playSound(TRANSLATE("z#47.wav", "z#578.wav"));
}
return true;
}
bool CThrowTVDownWell::MovieFrameMsg(CMovieFrameMsg *msg) {
- playSound("z#470.wav");
+ playSound(TRANSLATE("z#470.wav", "z#207.wav"));
return true;
}
diff --git a/engines/titanic/game/transport/lift.cpp b/engines/titanic/game/transport/lift.cpp
index 2dfede3d63..568e5becaf 100644
--- a/engines/titanic/game/transport/lift.cpp
+++ b/engines/titanic/game/transport/lift.cpp
@@ -24,6 +24,7 @@
#include "titanic/debugger.h"
#include "titanic/moves/multi_move.h"
#include "titanic/pet_control/pet_control.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -100,8 +101,7 @@ bool CLift::StatusChangeMsg(CStatusChangeMsg *msg) {
354, 349, 344, 339, 334, 329, 324, 319, 299
};
- if (pet)
- pet->setRoomsFloorNum(floorNum);
+ pet->setRoomsFloorNum(floorNum);
if (pet->getRoomsElevatorNum() == 2 || pet->getRoomsElevatorNum() == 4) {
if (floorNum > 27)
floorNum = 27;
@@ -242,9 +242,9 @@ bool CLift::EnterRoomMsg(CEnterRoomMsg *msg) {
CPetControl *pet = getPetControl();
int floorNum = pet->getRoomsFloorNum();
int elevNum = pet->getRoomsElevatorNum();
- loadSound("z#520.wav");
- loadSound("z#519.wav");
- loadSound("z#518.wav");
+ loadSound(TRANSLATE("z#520.wav", "z#259.wav"));
+ loadSound(TRANSLATE("z#519.wav", "z#258.wav"));
+ loadSound(TRANSLATE("z#518.wav", "z#257.wav"));
if (elevNum == 4 && _hasHead && !_hasCorrectHead) {
CVisibleMsg visibleMsg;
@@ -252,17 +252,17 @@ bool CLift::EnterRoomMsg(CEnterRoomMsg *msg) {
}
if (floorNum < 20) {
- playGlobalSound("z#520.wav", VOL_QUIET, true, true, 0);
- playGlobalSound("z#519.wav", VOL_MUTE, false, true, 1);
- playGlobalSound("z#518.wav", VOL_MUTE, false, true, 2);
+ playGlobalSound(TRANSLATE("z#520.wav", "z#259.wav"), VOL_QUIET, true, true, 0);
+ playGlobalSound(TRANSLATE("z#519.wav", "z#258.wav"), VOL_MUTE, false, true, 1);
+ playGlobalSound(TRANSLATE("z#518.wav", "z#257.wav"), VOL_MUTE, false, true, 2);
} else if (floorNum < 28) {
- playGlobalSound("z#520.wav", VOL_MUTE, false, true, 0);
- playGlobalSound("z#519.wav", VOL_QUIET, true, true, 1);
- playGlobalSound("z#518.wav", VOL_MUTE, false, true, 2);
+ playGlobalSound(TRANSLATE("z#520.wav", "z#259.wav"), VOL_MUTE, false, true, 0);
+ playGlobalSound(TRANSLATE("z#519.wav", "z#258.wav"), VOL_QUIET, true, true, 1);
+ playGlobalSound(TRANSLATE("z#518.wav", "z#257.wav"), VOL_MUTE, false, true, 2);
} else {
- playGlobalSound("z#520.wav", VOL_MUTE, false, true, 0);
- playGlobalSound("z#519.wav", VOL_MUTE, false, true, 1);
- playGlobalSound("z#518.wav", VOL_QUIET, true, true, 2);
+ playGlobalSound(TRANSLATE("z#520.wav", "z#259.wav"), VOL_MUTE, false, true, 0);
+ playGlobalSound(TRANSLATE("z#519.wav", "z#258.wav"), VOL_MUTE, false, true, 1);
+ playGlobalSound(TRANSLATE("z#518.wav", "z#257.wav"), VOL_QUIET, true, true, 2);
}
}
diff --git a/engines/titanic/game/transport/pellerator.cpp b/engines/titanic/game/transport/pellerator.cpp
index 4ef5314592..9958226c6b 100644
--- a/engines/titanic/game/transport/pellerator.cpp
+++ b/engines/titanic/game/transport/pellerator.cpp
@@ -22,15 +22,22 @@
#include "titanic/game/transport/pellerator.h"
#include "titanic/core/room_item.h"
+#include "titanic/translation.h"
namespace Titanic {
-static const char *const WAVE_NAMES[10] = {
+static const char *const WAVE_NAMES_EN[10] = {
"z#465.wav", "z#456.wav", "z#455.wav", "z#453.wav",
"z#452.wav", "NoStandingInFunnyWays", "z#450.wav",
"z#449.wav", "z#435.wav", "z#434.wav"
};
+static const char *const WAVE_NAMES_DE[10] = {
+ "z#202.wav", "z#193.wav", "z#192.wav", "z#190.wav",
+ "z#189.wav", "NoStandingInFunnyWays", "z#187.wav",
+ "z#186.wav", "z#180.wav", "z#179.wav"
+};
+
BEGIN_MESSAGE_MAP(CPellerator, CTransport)
ON_MESSAGE(StatusChangeMsg)
ON_MESSAGE(EnterRoomMsg)
@@ -62,7 +69,7 @@ void CPellerator::load(SimpleFile *file) {
bool CPellerator::StatusChangeMsg(CStatusChangeMsg *msg) {
setVisible(true);
- playGlobalSound("z#74.wav", VOL_QUIET, true, true, 0);
+ playGlobalSound(TRANSLATE("z#74.wav", "z#605.wav"), VOL_QUIET, true, true, 0);
int classNum = getPassengerClass();
int newDest = msg->_newStatus;
@@ -288,8 +295,11 @@ bool CPellerator::StatusChangeMsg(CStatusChangeMsg *msg) {
bool CPellerator::EnterRoomMsg(CEnterRoomMsg *msg) {
if (isEquals("PelleratorObject")) {
+ if (g_language == Common::DE_DEU)
+ _soundHandle = queueSound("z#200.wav", _soundHandle);
+
for (int idx = 0; idx < 10; ++idx)
- loadSound(WAVE_NAMES[idx]);
+ loadSound(TRANSLATE(WAVE_NAMES_EN[idx], WAVE_NAMES_DE[idx]));
addTimer(10000);
}
@@ -332,22 +342,22 @@ bool CPellerator::MovieEndMsg(CMovieEndMsg *msg) {
switch (_destination) {
case 0:
- _soundHandle = queueSound("z#429.wav", _soundHandle);
+ _soundHandle = queueSound(TRANSLATE("z#429.wav", "z#174.wav"), _soundHandle);
break;
case 1:
- _soundHandle = queueSound("z#430.wav", _soundHandle);
+ _soundHandle = queueSound(TRANSLATE("z#430.wav", "z#175.wav"), _soundHandle);
break;
case 2:
- _soundHandle = queueSound("z#431.wav", _soundHandle);
+ _soundHandle = queueSound(TRANSLATE("z#431.wav", "z#176.wav"), _soundHandle);
break;
case 4:
- _soundHandle = queueSound("z#428.wav", _soundHandle);
+ _soundHandle = queueSound(TRANSLATE("z#428.wav", "z#173.wav"), _soundHandle);
break;
case 5:
- _soundHandle = queueSound("z#433.wav", _soundHandle);
+ _soundHandle = queueSound(TRANSLATE("z#433.wav", "z#178.wav"), _soundHandle);
break;
case 6:
- _soundHandle = queueSound("z#432.wav", _soundHandle);
+ _soundHandle = queueSound(TRANSLATE("z#432.wav", "z#177.wav"), _soundHandle);
break;
default:
break;
@@ -358,7 +368,8 @@ bool CPellerator::MovieEndMsg(CMovieEndMsg *msg) {
bool CPellerator::TimerMsg(CTimerMsg *msg) {
if (compareRoomNameTo("Pellerator")) {
- _soundHandle = queueSound(WAVE_NAMES[getRandomNumber(9)], _soundHandle);
+ _soundHandle = queueSound(TRANSLATE(WAVE_NAMES_EN[getRandomNumber(9)],
+ WAVE_NAMES_DE[getRandomNumber(9)]), _soundHandle);
addTimer(20000 + getRandomNumber(10000));
}
diff --git a/engines/titanic/game/transport/service_elevator.cpp b/engines/titanic/game/transport/service_elevator.cpp
index dbd4e5d74f..1e76c63e01 100644
--- a/engines/titanic/game/transport/service_elevator.cpp
+++ b/engines/titanic/game/transport/service_elevator.cpp
@@ -23,6 +23,7 @@
#include "titanic/game/transport/service_elevator.h"
#include "titanic/core/room_item.h"
#include "titanic/npcs/doorbot.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -107,7 +108,7 @@ bool CServiceElevator::ServiceElevatorMsg(CServiceElevatorMsg *msg) {
if (!_string1.empty()) {
if (_string1 == "DeepSpace") {
disableMouse();
- _soundHandle1 = playSound("z#413.wav", 50);
+ _soundHandle1 = playSound(TRANSLATE("z#413.wav", "z#157.wav"), 50);
_timerId = addTimer(1, 1000, 500);
} else {
changeView(_string1);
@@ -119,9 +120,9 @@ bool CServiceElevator::ServiceElevatorMsg(CServiceElevatorMsg *msg) {
// Reaching destination floor
_fieldF8 = false;
_fieldDC = _v3;
- loadSound("z#423.wav");
+ loadSound(TRANSLATE("z#423.wav", "z#168.wav"));
stopSound(_soundHandle2);
- _soundHandle2 = playSound("z#423.wav", 80);
+ _soundHandle2 = playSound(TRANSLATE("z#423.wav", "z#168.wav"), 80);
switch (_fieldDC) {
case 0:
@@ -132,12 +133,12 @@ bool CServiceElevator::ServiceElevatorMsg(CServiceElevatorMsg *msg) {
case 1:
_string1 = _v2 ? "BilgeRoomWith.Node 2.N" : "BilgeRoom.Node 1.N";
- queueSound("z#421.wav", _soundHandle2, 50);
+ queueSound(TRANSLATE("z#421.wav", "z#165.wav"), _soundHandle2, 50);
break;
case 2:
_string1 = _v1 ? "MoonEmbLobby.Node 1.NE" : "EmbLobby.Node 1.NE";
- queueSound("z#411.wav", _soundHandle2, 50);
+ queueSound(TRANSLATE("z#411.wav", "z#155.wav"), _soundHandle2, 50);
break;
default:
@@ -169,7 +170,7 @@ bool CServiceElevator::TimerMsg(CTimerMsg *msg) {
_fieldF8 = true;
CServiceElevatorFloorChangeMsg changeMsg(_fieldDC, _v3);
changeMsg.execute(getRoom(), nullptr, MSGFLAG_SCAN);
- _soundHandle2 = playSound("z#424.wav");
+ _soundHandle2 = playSound(TRANSLATE("z#424.wav", "z#169.wav"));
if (doorbot) {
CActMsg actMsg("DoorbotPlayerPressedTopButton");
@@ -209,21 +210,21 @@ bool CServiceElevator::ServiceElevatorFloorRequestMsg(CServiceElevatorFloorReque
CDoorbot *doorbot = dynamic_cast<CDoorbot *>(findRoom()->findByName("Doorbot"));
if (doorbot && _v3 == 0) {
- _soundHandle1 = playSound("z#415.wav", 50);
+ _soundHandle1 = playSound(TRANSLATE("z#415.wav", "z#159.wav"), 50);
_timerId = addTimer(1, 1000, 500);
} else if (doorbot && _v3 == 1) {
- _soundHandle1 = playSound("z#417.wav", 50);
+ _soundHandle1 = playSound(TRANSLATE("z#417.wav", "z#161.wav"), 50);
_timerId = addTimer(1, 1000, 500);
} else if (_fieldDC == _v3) {
switch (_v3) {
case 0:
- _soundHandle1 = playSound("z#415.wav", 50);
+ _soundHandle1 = playSound(TRANSLATE("z#415.wav", "z#159.wav"), 50);
break;
case 1:
- _soundHandle1 = playSound("z#420.wav", 50);
+ _soundHandle1 = playSound(TRANSLATE("z#420.wav", "z#164.wav"), 50);
break;
case 2:
- _soundHandle1 = playSound("z#410.wav", 50);
+ _soundHandle1 = playSound(TRANSLATE("z#410.wav", "z#154.wav"), 50);
break;
default:
break;
@@ -233,13 +234,14 @@ bool CServiceElevator::ServiceElevatorFloorRequestMsg(CServiceElevatorFloorReque
} else {
switch (_v3) {
case 0:
- _soundHandle1 = playSound("z#414.wav", 50);
+ _soundHandle1 = playSound(TRANSLATE("z#414.wav", "z#158.wav"), 50);
break;
case 1:
- _soundHandle1 = playSound(_fieldDC ? "z#419.wav" : "z#418.wav", 50);
+ _soundHandle1 = playSound(_fieldDC ? TRANSLATE("z#419.wav", "z#163.wav")
+ : TRANSLATE("z#418.wav", "z#162.wav"), 50);
break;
case 2:
- _soundHandle1 = playSound("z#409.wav", 50);
+ _soundHandle1 = playSound(TRANSLATE("z#409.wav", "z#153.wav"), 50);
break;
default:
break;
diff --git a/engines/titanic/game/up_lighter.cpp b/engines/titanic/game/up_lighter.cpp
index b19d899603..115cd097f6 100644
--- a/engines/titanic/game/up_lighter.cpp
+++ b/engines/titanic/game/up_lighter.cpp
@@ -23,6 +23,7 @@
#include "titanic/game/up_lighter.h"
#include "titanic/core/project_item.h"
#include "titanic/npcs/parrot.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -62,7 +63,7 @@ void CUpLighter::load(SimpleFile *file) {
bool CUpLighter::MovieEndMsg(CMovieEndMsg *msg) {
if (_hosePumping) {
- playSound("z#47.wav");
+ playSound(TRANSLATE("z#47.wav", "z#578.wav"));
_noseDispensed = true;
CVisibleMsg visibleMsg(true);
diff --git a/engines/titanic/game/useless_lever.cpp b/engines/titanic/game/useless_lever.cpp
index 82d8983710..74b6371c06 100644
--- a/engines/titanic/game/useless_lever.cpp
+++ b/engines/titanic/game/useless_lever.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/game/useless_lever.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -42,11 +43,11 @@ void CUselessLever::load(SimpleFile *file) {
bool CUselessLever::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
if (_fieldE0) {
playMovie(15, 30, 0);
- playSound("z#56.wav");
+ playSound(TRANSLATE("z#56.wav", "z#587.wav"));
_fieldE0 = false;
} else {
playMovie(0, 14, 0);
- playSound("z#56.wav");
+ playSound(TRANSLATE("z#56.wav", "z#587.wav"));
_fieldE0 = true;
}
diff --git a/engines/titanic/game_manager.cpp b/engines/titanic/game_manager.cpp
index e5f46bc7b7..e3365be108 100644
--- a/engines/titanic/game_manager.cpp
+++ b/engines/titanic/game_manager.cpp
@@ -256,6 +256,7 @@ void CGameManager::updateMovies() {
}
eventsList.remove(movieEvent);
+ delete movieEvent;
}
repeatFlag = true;
diff --git a/engines/titanic/gfx/music_slider_pitch.cpp b/engines/titanic/gfx/music_slider_pitch.cpp
index 49d53f7724..48dee03d0c 100644
--- a/engines/titanic/gfx/music_slider_pitch.cpp
+++ b/engines/titanic/gfx/music_slider_pitch.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/gfx/music_slider_pitch.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -48,7 +49,7 @@ bool CMusicSliderPitch::MusicSettingChangedMsg(CMusicSettingChangedMsg *msg) {
loadFrame(3 - _controlVal);
playSound("z#54.wav", 50);
} else {
- playSound("z#46.wav");
+ playSound(TRANSLATE("z#46.wav", "z#577.wav"));
}
return true;
diff --git a/engines/titanic/gfx/music_slider_speed.cpp b/engines/titanic/gfx/music_slider_speed.cpp
index bc0490677f..50f98cc63f 100644
--- a/engines/titanic/gfx/music_slider_speed.cpp
+++ b/engines/titanic/gfx/music_slider_speed.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/gfx/music_slider_speed.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -46,9 +47,9 @@ bool CMusicSliderSpeed::MusicSettingChangedMsg(CMusicSettingChangedMsg *msg) {
_controlVal = 0;
loadFrame(3 - _controlVal);
- playSound("z#54.wav", 50);
+ playSound(TRANSLATE("z#54.wav", "z#585.wav"), 50);
} else {
- playSound("z#46.wav");
+ playSound(TRANSLATE("z#46.wav", "z#577.wav"));
}
return true;
diff --git a/engines/titanic/gfx/music_switch_inversion.cpp b/engines/titanic/gfx/music_switch_inversion.cpp
index b6aa1be3e3..9f554683d2 100644
--- a/engines/titanic/gfx/music_switch_inversion.cpp
+++ b/engines/titanic/gfx/music_switch_inversion.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/gfx/music_switch_inversion.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -46,9 +47,9 @@ bool CMusicSwitchInversion::MusicSettingChangedMsg(CMusicSettingChangedMsg *msg)
_controlVal = 0;
loadFrame(_controlVal);
- playSound("z#59.wav", 50);
+ playSound(TRANSLATE("z#59.wav", "z#590.wav"), 50);
} else {
- playSound("z#46.wav");
+ playSound(TRANSLATE("z#46.wav", "z#577.wav"));
}
return true;
diff --git a/engines/titanic/gfx/music_switch_reverse.cpp b/engines/titanic/gfx/music_switch_reverse.cpp
index 674119d571..56d4f1329b 100644
--- a/engines/titanic/gfx/music_switch_reverse.cpp
+++ b/engines/titanic/gfx/music_switch_reverse.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/gfx/music_switch_reverse.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -46,9 +47,9 @@ bool CMusicSwitchReverse::MusicSettingChangedMsg(CMusicSettingChangedMsg *msg) {
_controlVal = 0;
loadFrame(_controlVal);
- playSound("z#59.wav", 50);
+ playSound(TRANSLATE("z#59.wav", "z#590.wav"), 50);
} else {
- playSound("z#46.wav");
+ playSound(TRANSLATE("z#46.wav", "z#577.wav"));
}
return true;
diff --git a/engines/titanic/gfx/music_voice_mute.cpp b/engines/titanic/gfx/music_voice_mute.cpp
index 034cb4f6a6..075cd678fc 100644
--- a/engines/titanic/gfx/music_voice_mute.cpp
+++ b/engines/titanic/gfx/music_voice_mute.cpp
@@ -22,6 +22,7 @@
#include "titanic/gfx/music_voice_mute.h"
#include "titanic/sound/music_room.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -38,7 +39,7 @@ bool CMusicVoiceMute::MusicSettingChangedMsg(CMusicSettingChangedMsg *msg) {
CMusicRoom *musicRoom = getMusicRoom();
musicRoom->setMuteControl(_controlArea, _controlVal == 1 ? 1 : 0);
loadFrame(1 - _controlVal);
- playSound("z#55.wav", 50);
+ playSound(TRANSLATE("z#55.wav", "z#586.wav"), 50);
return true;
}
diff --git a/engines/titanic/main_game_window.cpp b/engines/titanic/main_game_window.cpp
index 2d98c813a6..2b026f9fae 100644
--- a/engines/titanic/main_game_window.cpp
+++ b/engines/titanic/main_game_window.cpp
@@ -49,6 +49,8 @@ CMainGameWindow::CMainGameWindow(TitanicEngine *vm): _vm(vm),
}
CMainGameWindow::~CMainGameWindow() {
+ delete _gameView;
+ delete _gameManager;
delete _project;
}
@@ -65,7 +67,14 @@ void CMainGameWindow::applicationStarting() {
SCREEN_WIDTH / 2 - image.w / 2,
SCREEN_HEIGHT / 2 - image.h / 2
));
- _vm->_events->sleep(5000);
+
+ // Delay for 5 seconds
+ const int NUM_STEPS = 20;
+ for (int idx = 0; idx < NUM_STEPS; ++idx) {
+ _vm->_events->sleep(5000 / NUM_STEPS);
+ if (_vm->_loadSaveSlot >= 0)
+ break;
+ }
}
// Set up the game project, and get game slot
@@ -112,6 +121,10 @@ bool CMainGameWindow::isLoadingFromLauncher() const {
}
int CMainGameWindow::selectSavegame() {
+ // If a savegame was selected from GMM during the startup, return it
+ if (g_vm->_loadSaveSlot != -1)
+ return g_vm->_loadSaveSlot;
+
// If the user selected a savegame from the launcher, return it
if (ConfMan.hasKey("save_slot"))
return ConfMan.getInt("save_slot");
diff --git a/engines/titanic/messages/bilge_dispensor_event.cpp b/engines/titanic/messages/bilge_dispensor_event.cpp
index c0bb289a00..f88ecbd2dc 100644
--- a/engines/titanic/messages/bilge_dispensor_event.cpp
+++ b/engines/titanic/messages/bilge_dispensor_event.cpp
@@ -23,6 +23,7 @@
#include "titanic/messages/bilge_dispensor_event.h"
#include "titanic/events.h"
#include "titanic/titanic.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -66,7 +67,7 @@ bool CBilgeDispensorEvent::FrameMsg(CFrameMsg *msg) {
if (getRandomNumber(2) == 0) {
int volume = 20 + getRandomNumber(30);
int balance = getRandomNumber(20) - 10;
- _soundHandle = playSound("b#18.wav", volume, balance);
+ _soundHandle = playSound(TRANSLATE("b#18.wav", "b#102.wav"), volume, balance);
} else {
_ticksDelayEnd = ticks + 1000;
}
diff --git a/engines/titanic/moves/enter_sec_class_state.cpp b/engines/titanic/moves/enter_sec_class_state.cpp
index b7209f83d8..1cb607b09e 100644
--- a/engines/titanic/moves/enter_sec_class_state.cpp
+++ b/engines/titanic/moves/enter_sec_class_state.cpp
@@ -22,6 +22,7 @@
#include "titanic/moves/enter_sec_class_state.h"
#include "titanic/pet_control/pet_control.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -49,7 +50,7 @@ void CEnterSecClassState::load(SimpleFile *file) {
bool CEnterSecClassState::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
if (getPassengerClass() > 2) {
- playSound("b#105.wav");
+ playSound(TRANSLATE("b#105.wav", "b#84.wav"));
petDisplayMessage(1, CLASS_NOT_PERMITTED_IN_AREA);
} else if (!compareRoomNameTo("SecClassLittleLift") || _mode == 2) {
CActMsg actMsg(getFullViewName().deleteRight(2) + ".S");
@@ -65,20 +66,20 @@ bool CEnterSecClassState::StatusChangeMsg(CStatusChangeMsg *msg) {
if (msg->_newStatus == _mode || (_mode == 2 && msg->_newStatus == 3)) {
if (_mode == 2) {
- _soundHandle = queueSound("b#36.wav", _soundHandle);
+ _soundHandle = queueSound(TRANSLATE("b#36.wav", "b#15.wav"), _soundHandle);
} else {
- _soundHandle = queueSound("b#31.wav", _soundHandle);
+ _soundHandle = queueSound(TRANSLATE("b#31.wav", "b#10.wav"), _soundHandle);
}
if (msg->_newStatus == 3)
msg->_newStatus = 2;
} else {
changeView("SecClassLittleLift.Node 1.N");
if (msg->_newStatus == 1) {
- _soundHandle = queueSound("b#32.wav", _soundHandle);
+ _soundHandle = queueSound(TRANSLATE("b#32.wav", "b#11.wav"), _soundHandle);
} else if (msg->_newStatus == 2) {
- _soundHandle = queueSound("b#25.wav", _soundHandle);
+ _soundHandle = queueSound(TRANSLATE("b#25.wav", "b#4.wav"), _soundHandle);
} else if (msg->_newStatus == 3) {
- _soundHandle = queueSound("b#33.wav", _soundHandle);
+ _soundHandle = queueSound(TRANSLATE("b#33.wav", "b#12.wav"), _soundHandle);
msg->_newStatus = 2;
}
}
diff --git a/engines/titanic/moves/exit_bridge.cpp b/engines/titanic/moves/exit_bridge.cpp
index 6b69b88004..973670abc9 100644
--- a/engines/titanic/moves/exit_bridge.cpp
+++ b/engines/titanic/moves/exit_bridge.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/moves/exit_bridge.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -48,7 +49,7 @@ void CExitBridge::load(SimpleFile *file) {
bool CExitBridge::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
if (getGameManager()) {
changeView(_destination);
- playSound("a#53.wav");
+ playSound(TRANSLATE("a#53.wav", "a#46.wav"));
changeView(_viewName);
}
diff --git a/engines/titanic/moves/exit_pellerator.cpp b/engines/titanic/moves/exit_pellerator.cpp
index 3d1438a942..045c0e52bb 100644
--- a/engines/titanic/moves/exit_pellerator.cpp
+++ b/engines/titanic/moves/exit_pellerator.cpp
@@ -22,6 +22,7 @@
#include "titanic/moves/exit_pellerator.h"
#include "titanic/game/transport/pellerator.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -66,13 +67,13 @@ bool CExitPellerator::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
if (_statics->_v2 != 2) {
switch (getRandomNumber(2)) {
case 0:
- CPellerator::_soundHandle = queueSound("z#457.wav", CPellerator::_soundHandle);
+ CPellerator::_soundHandle = queueSound(TRANSLATE("z#457.wav", "z#194.wav"), CPellerator::_soundHandle);
break;
case 1:
- CPellerator::_soundHandle = queueSound("z#458.wav", CPellerator::_soundHandle);
+ CPellerator::_soundHandle = queueSound(TRANSLATE("z#458.wav", "z#195.wav"), CPellerator::_soundHandle);
break;
default:
- CPellerator::_soundHandle = queueSound("z#464.wav", CPellerator::_soundHandle);
+ CPellerator::_soundHandle = queueSound(TRANSLATE("z#464.wav", "z#201.wav"), CPellerator::_soundHandle);
break;
}
}
@@ -95,20 +96,20 @@ bool CExitPellerator::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
break;
default:
petDisplayMessage(2, EXIT_FROM_OTHER_SIDE);
- CPellerator::_soundHandle = queueSound("z#438.wav", CPellerator::_soundHandle);
+ CPellerator::_soundHandle = queueSound(TRANSLATE("z#438.wav", "z#183.wav"), CPellerator::_soundHandle);
}
} else if (name == "ExitPellerator2") {
if (_statics->_v2 == 2) {
switch (getRandomNumber(2)) {
case 0:
- CPellerator::_soundHandle = queueSound("z#457.wav", CPellerator::_soundHandle);
+ CPellerator::_soundHandle = queueSound(TRANSLATE("z#457.wav", "z#194.wav"), CPellerator::_soundHandle);
break;
case 1:
- CPellerator::_soundHandle = queueSound("z#458.wav", CPellerator::_soundHandle);
+ CPellerator::_soundHandle = queueSound(TRANSLATE("z#458.wav", "z#195.wav"), CPellerator::_soundHandle);
break;
default:
- CPellerator::_soundHandle = queueSound("z#464.wav", CPellerator::_soundHandle);
+ CPellerator::_soundHandle = queueSound(TRANSLATE("z#464.wav", "z#201.wav"), CPellerator::_soundHandle);
break;
}
}
@@ -117,7 +118,7 @@ bool CExitPellerator::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
changeView("Bar.Node 1.N");
} else {
petDisplayMessage(2, EXIT_FROM_OTHER_SIDE);
- CPellerator::_soundHandle = queueSound("z#438.wav", CPellerator::_soundHandle);
+ CPellerator::_soundHandle = queueSound(TRANSLATE("z#438.wav", "z#183.wav"), CPellerator::_soundHandle);
}
}
diff --git a/engines/titanic/moves/restricted_move.cpp b/engines/titanic/moves/restricted_move.cpp
index 52ff280437..279380a93c 100644
--- a/engines/titanic/moves/restricted_move.cpp
+++ b/engines/titanic/moves/restricted_move.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/moves/restricted_move.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -54,11 +55,12 @@ bool CRestrictedMove::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
} else if (classNum != UNCHECKED) {
petDisplayMessage(1, CLASS_NOT_ALLOWED_AT_DEST);
} else if (compareRoomNameTo("EmbLobby")) {
- playSound("a#17.wav");
+ if (g_language != Common::DE_DEU)
+ playSound("a#17.wav");
petDisplayMessage(1, CHECK_IN_AT_RECEPTION);
} else if (compareViewNameTo("Titania.Node 1.S")) {
CProximity prox(Audio::Mixer::kSpeechSoundType);
- playSound("z#226.wav", prox);
+ playSound(TRANSLATE("z#226.wav", "z#132.wav"), prox);
changeView(_destination);
}
diff --git a/engines/titanic/npcs/barbot.cpp b/engines/titanic/npcs/barbot.cpp
index 2ba150a38c..029861fa49 100644
--- a/engines/titanic/npcs/barbot.cpp
+++ b/engines/titanic/npcs/barbot.cpp
@@ -23,6 +23,7 @@
#include "titanic/npcs/barbot.h"
#include "titanic/support/files_manager.h"
#include "titanic/titanic.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -243,7 +244,7 @@ bool CBarbot::ActMsg(CActMsg *msg) {
_field160 = 1;
_addedTV = true;
- playSound("c#5.wav", _volume);
+ playSound(TRANSLATE("c#5.wav", "c#65.wav"), _volume);
playRange(_frames[35], MOVIE_NOTIFY_OBJECT);
movieEvent();
playRange(_frames[34]);
@@ -415,12 +416,12 @@ bool CBarbot::MovieEndMsg(CMovieEndMsg *msg) {
if (msg->_endFrame == _frames[57]._endFrame) {
startTalking(this, 250575);
- playSound("c#10.wav", _volume);
+ playSound(TRANSLATE("c#10.wav", "c#70.wav"), _volume);
return true;
}
if (msg->_endFrame == _frames[55]._endFrame) {
- playSound("c#10.wav", _volume);
+ playSound(TRANSLATE("c#10.wav", "c#70.wav"), _volume);
return true;
}
@@ -476,22 +477,22 @@ bool CBarbot::MovieEndMsg(CMovieEndMsg *msg) {
}
if (msg->_endFrame == _frames[38]._endFrame || msg->_endFrame == _frames[23]._endFrame) {
- playSound("c#3.wav", _volume);
+ playSound(TRANSLATE("c#3.wav", "c#63.wav"), _volume);
} else if (msg->_endFrame == _frames[36]._endFrame) {
- playSound("c#6.wav", _volume);
+ playSound(TRANSLATE("c#6.wav", "c#66.wav"), _volume);
} else if (msg->_endFrame == _frames[35]._endFrame) {
- playSound("c#8.wav", _volume);
+ playSound(TRANSLATE("c#8.wav", "c#68.wav"), _volume);
} else if (msg->_endFrame == _frames[33]._endFrame) {
- playSound("c#4.wav", _volume);
+ playSound(TRANSLATE("c#4.wav", "c#64.wav"), _volume);
} else if (msg->_endFrame == _frames[32]._endFrame) {
startTalking(this, 145);
- playSound("c#9.wav", _volume);
+ playSound(TRANSLATE("c#9.wav", "c#69.wav"), _volume);
} else if (msg->_endFrame == _frames[47]._endFrame) {
- playSound("c#9.wav", _volume);
+ playSound(TRANSLATE("c#9.wav", "c#69.wav"), _volume);
_addedVodka = true;
_drunkFlag = true;
} else if (msg->_endFrame == _frames[30]._endFrame) {
- playSound("c#4.wav", 60);
+ playSound(TRANSLATE("c#4.wav", "c#64.wav"), 60);
} else if (msg->_endFrame == _frames[29]._endFrame) {
if (!_fieldC4) {
performAction(true, nullptr);
@@ -700,7 +701,7 @@ bool CBarbot::LoadSuccessMsg(CLoadSuccessMsg *msg) {
bool CBarbot::MovieFrameMsg(CMovieFrameMsg *msg) {
if (msg->_frameNumber == _frames[29]._startFrame) {
- playSound("c#2.wav", _volume);
+ playSound(TRANSLATE("c#2.wav", "c#62.wav"), _volume);
} else if (msg->_frameNumber == _frames[55]._startFrame
|| msg->_frameNumber == _frames[32]._startFrame) {
diff --git a/engines/titanic/npcs/bellbot.cpp b/engines/titanic/npcs/bellbot.cpp
index c6c6a9e3a6..80c1121a2e 100644
--- a/engines/titanic/npcs/bellbot.cpp
+++ b/engines/titanic/npcs/bellbot.cpp
@@ -23,8 +23,9 @@
#include "titanic/npcs/bellbot.h"
#include "titanic/carry/carry.h"
#include "titanic/core/room_item.h"
-#include "titanic/game_manager.h"
#include "titanic/pet_control/pet_control.h"
+#include "titanic/game_manager.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -66,26 +67,31 @@ bool CBellBot::OnSummonBotMsg(COnSummonBotMsg *msg) {
if (msg->_value == 1) {
_npcFlags |= NPCFLAG_MOVE_LOOP;
} else {
- static const char *const ROOM_WAVES[8][2] = {
- { "EmbLobby", "z#193.wav" },
- { "PromenadeDeck", "z#191.wav" },
- { "Arboretum", "z#195.wav" },
- { "Frozen Arboretum", "z#195.wav" },
- { "Bar", "z#194.wav" },
- { "MusicRoom", "z#192.wav" },
- { "MusicRoomLobby", "z#192.wav" },
- { "1stClassRestaurant", "z#190.wav" }
+ struct RoomWave {
+ const char *_room;
+ const char *_enSound;
+ const char *_deSound;
+ };
+ static const RoomWave ROOM_WAVES[8] = {
+ { "EmbLobby", "z#193.wav", "z#723.wav" },
+ { "PromenadeDeck", "z#191.wav", "z#721.wav" },
+ { "Arboretum", "z#195.wav", "z#725.wav" },
+ { "Frozen Arboretum", "z#195.wav", "z#725.wav" },
+ { "Bar", "z#194.wav", "z#724.wav" },
+ { "MusicRoom", "z#192.wav", "z#722.wav" },
+ { "MusicRoomLobby", "z#192.wav", "z#722.wav" },
+ { "1stClassRestaurant", "z#190.wav", "z#720.wav" }
};
int idx;
for (idx = 0; idx < 8; ++idx) {
- if (compareRoomNameTo(ROOM_WAVES[idx][0])) {
- playSound(ROOM_WAVES[idx][1]);
+ if (compareRoomNameTo(ROOM_WAVES[idx]._room)) {
+ playSound(TRANSLATE(ROOM_WAVES[idx]._enSound, ROOM_WAVES[idx]._deSound));
break;
}
}
if (idx == 8)
- playSound("z#147.wav");
+ playSound(TRANSLATE("z#147.wav", "z#703.wav"));
sleep(2000);
_npcFlags &= ~NPCFLAG_MOVE_LOOP;
@@ -103,7 +109,8 @@ bool CBellBot::EnterViewMsg(CEnterViewMsg *msg) {
// WORKAROUND: Calling bot in front of doors and then going through them
// can leave it in the view. Detect this and properly remove him when
// the player returns to that view
- if (msg->_newView == getParent() && getPetControl()->canSummonBot("BellBot"))
+ if (!hasActiveMovie() && msg->_newView == getParent()
+ && getPetControl()->canSummonBot("BellBot"))
petMoveToHiddenRoom();
return true;
@@ -284,8 +291,10 @@ bool CBellBot::TrueTalkGetStateValueMsg(CTrueTalkGetStateValueMsg *msg) {
bool CBellBot::TrueTalkNotifySpeechEndedMsg(CTrueTalkNotifySpeechEndedMsg *msg) {
CTrueTalkNPC::TrueTalkNotifySpeechEndedMsg(msg);
- if (msg->_dialogueId == 20991)
+ if (msg->_dialogueId == TRANSLATE(20991, 20997)) {
petDismissBot("DoorBot");
+ getGameManager()->unlockInputHandler();
+ }
return true;
}
diff --git a/engines/titanic/npcs/bilge_succubus.cpp b/engines/titanic/npcs/bilge_succubus.cpp
index 312f067bd4..827e39fb4b 100644
--- a/engines/titanic/npcs/bilge_succubus.cpp
+++ b/engines/titanic/npcs/bilge_succubus.cpp
@@ -24,6 +24,7 @@
#include "titanic/carry/chicken.h"
#include "titanic/core/view_item.h"
#include "titanic/pet_control/pet_control.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -80,7 +81,7 @@ bool CBilgeSuccUBus::PETReceiveMsg(CPETReceiveMsg *msg) {
if (_afterReceiveStartFrame >= 0)
playMovie(_afterReceiveStartFrame, _afterReceiveEndFrame, MOVIE_WAIT_FOR_FINISH);
- playSound("z#28.wav", 70);
+ playSound(TRANSLATE("z#28.wav", "z#559.wav"), 70);
} else if (!_isOn) {
petDisplayMessage(2, SUCCUBUS_IS_IN_STANDBY);
return false;
@@ -184,10 +185,10 @@ bool CBilgeSuccUBus::MovieEndMsg(CMovieEndMsg *msg) {
if (msg->_endFrame == _trayOutEndFrame) {
if (_offStartFrame >= 0)
- playSound("z#27.wav");
+ playSound(TRANSLATE("z#27.wav", "z#558.wav"));
} else if (msg->_endFrame == _offEndFrame) {
if (_endingStartFrame >= 0)
- playSound("z#30.wav");
+ playSound(TRANSLATE("z#30.wav", "z#561.wav"));
} else {
if (msg->_endFrame == _onEndFrame && pet) {
if (_motherBlocked) {
@@ -212,11 +213,11 @@ bool CBilgeSuccUBus::MovieEndMsg(CMovieEndMsg *msg) {
switch (_sendAction) {
case SA_EATEN:
stopSound(_soundHandle, 1);
- _soundHandle = playSound("z#3.wav", 1);
+ _soundHandle = playSound(TRANSLATE("z#3.wav", "z#539.wav"), 1);
break;
case SA_BILGE_FEATHERS:
stopSound(_soundHandle);
- _soundHandle = playSound("z#12.wav");
+ _soundHandle = playSound(TRANSLATE("z#12.wav", "z#532.wav"));
break;
case SA_BILGE_SENT:
if (_isChicken) {
@@ -250,8 +251,8 @@ bool CBilgeSuccUBus::MovieEndMsg(CMovieEndMsg *msg) {
}
} else if (msg->_endFrame == _sneezing1EndFrame) {
- playSound("z#25.wav", 70);
- playSound("z#24.wav", 70);
+ playSound(TRANSLATE("z#25.wav", "z#556.wav"), 70);
+ playSound(TRANSLATE("z#24.wav", "z#555.wav"), 70);
} else if (msg->_endFrame == _sneezing2EndFrame) {
changeView("BilgeRoomWith.Node 1.N", "");
@@ -337,7 +338,7 @@ bool CBilgeSuccUBus::SubAcceptCCarryMsg(CSubAcceptCCarryMsg *msg) {
petContainerRemove(item);
pet->phonographAction("");
item->setVisible(false);
- playSound("z#23.wav");
+ playSound(TRANSLATE("z#23.wav", "z#554.wav"));
CChicken *chicken = dynamic_cast<CChicken *>(item);
bool chickenFlag = chicken ? chicken->_condiment == "None" : false;
@@ -399,7 +400,7 @@ bool CBilgeSuccUBus::LeaveViewMsg(CLeaveViewMsg *msg) {
if (_isOn) {
_isOn = false;
if (_offStartFrame >= 0)
- playSound("z#27.wav");
+ playSound(TRANSLATE("z#27.wav", "z#558.wav"));
}
performAction(true);
@@ -422,7 +423,7 @@ bool CBilgeSuccUBus::TurnOn(CTurnOn *msg) {
if (pet) {
if (_onStartFrame >= 0) {
playMovie(_onStartFrame, _onEndFrame, MOVIE_NOTIFY_OBJECT);
- playSound("z#26.wav");
+ playSound(TRANSLATE("z#26.wav", "z#557.wav"));
}
if (mailExists(pet->getRoomFlags()) && _okStartFrame >= 0)
diff --git a/engines/titanic/npcs/deskbot.cpp b/engines/titanic/npcs/deskbot.cpp
index 27bea6f9a0..aa9ec7e6cd 100644
--- a/engines/titanic/npcs/deskbot.cpp
+++ b/engines/titanic/npcs/deskbot.cpp
@@ -22,6 +22,8 @@
#include "titanic/npcs/deskbot.h"
#include "titanic/pet_control/pet_control.h"
+#include "titanic/game_manager.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -84,7 +86,7 @@ bool CDeskbot::TurnOn(CTurnOn *msg) {
playClip("BellRinging");
playClip("Opening", MOVIE_NOTIFY_OBJECT);
- playSound("b#69.wav");
+ playSound(TRANSLATE("b#69.wav", "b#47.wav"));
petSetArea(PET_CONVERSATION);
_npcFlags |= NPCFLAG_MOVE_START;
@@ -118,7 +120,7 @@ bool CDeskbot::MovieEndMsg(CMovieEndMsg *msg) {
petSetArea(PET_ROOMS);
decTransitions();
unlockMouse();
- playSound("z#47.wav");
+ playSound(TRANSLATE("z#47.wav", "z#578.wav"));
_classNum = NO_CLASS;
}
@@ -133,6 +135,7 @@ bool CDeskbot::MovieEndMsg(CMovieEndMsg *msg) {
CTurnOn turnOn;
turnOn.execute("EmbBellbotTrigger");
unlockMouse();
+ getGameManager()->lockInputHandler();
changeView("EmbLobby.Node 4.N", "");
} else if (_npcFlags & NPCFLAG_MOVE_LEFT) {
CTurnOn turnOn;
@@ -257,16 +260,31 @@ bool CDeskbot::TrueTalkNotifySpeechStartedMsg(CTrueTalkNotifySpeechStartedMsg *m
return true;
CTrueTalkNPC::TrueTalkNotifySpeechStartedMsg(msg);
- switch (msg->_dialogueId) {
- case 41684:
- case 41686:
- case 41787:
- case 41788:
- case 41789:
- lockMouse();
- break;
- default:
- break;
+
+ if (g_language == Common::DE_DEU) {
+ switch (msg->_dialogueId) {
+ case 41701:
+ case 41703:
+ case 41804:
+ case 41805:
+ case 41806:
+ lockMouse();
+ break;
+ default:
+ break;
+ }
+ } else {
+ switch (msg->_dialogueId) {
+ case 41684:
+ case 41686:
+ case 41787:
+ case 41788:
+ case 41789:
+ lockMouse();
+ break;
+ default:
+ break;
+ }
}
return true;
@@ -278,23 +296,43 @@ bool CDeskbot::TrueTalkNotifySpeechEndedMsg(CTrueTalkNotifySpeechEndedMsg *msg)
CTurnOff turnOff;
CTrueTalkNPC::TrueTalkNotifySpeechEndedMsg(msg);
+
+ if (g_language == Common::DE_DEU) {
+ switch (msg->_dialogueId) {
+ case 41701:
+ case 41804:
+ case 41805:
+ case 41806:
+ _npcFlags |= NPCFLAG_MOVE_FINISH;
+ turnOff.execute(this);
+ break;
- switch (msg->_dialogueId) {
- case 41684:
- case 41787:
- case 41788:
- case 41789:
- _npcFlags |= NPCFLAG_MOVE_FINISH;
- turnOff.execute(this);
- break;
+ case 41703:
+ _npcFlags |= NPCFLAG_MOVE_LEFT;
+ turnOff.execute(this);
+ break;
- case 41686:
- _npcFlags |= NPCFLAG_MOVE_LEFT;
- turnOff.execute(this);
- break;
+ default:
+ break;
+ }
+ } else {
+ switch (msg->_dialogueId) {
+ case 41684:
+ case 41787:
+ case 41788:
+ case 41789:
+ _npcFlags |= NPCFLAG_MOVE_FINISH;
+ turnOff.execute(this);
+ break;
- default:
- break;
+ case 41686:
+ _npcFlags |= NPCFLAG_MOVE_LEFT;
+ turnOff.execute(this);
+ break;
+
+ default:
+ break;
+ }
}
return true;
diff --git a/engines/titanic/npcs/doorbot.cpp b/engines/titanic/npcs/doorbot.cpp
index 8ee1e3220c..5512468099 100644
--- a/engines/titanic/npcs/doorbot.cpp
+++ b/engines/titanic/npcs/doorbot.cpp
@@ -24,6 +24,7 @@
#include "titanic/core/room_item.h"
#include "titanic/debugger.h"
#include "titanic/pet_control/pet_control.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -162,27 +163,32 @@ bool CDoorbot::MovieEndMsg(CMovieEndMsg *msg) {
}
bool CDoorbot::OnSummonBotMsg(COnSummonBotMsg *msg) {
- const char *const ROOM_WAVES[8][2] = {
- { "EmbLobby", "z#186.wav" },
- { "PromenadeDeck", "z#184.wav" },
- { "Arboretum", "z#188.wav" },
- { "Frozen Arboretum", "z#188.wav" },
- { "Bar", "z#187.wav" },
- { "MusicRoom", "z#185.wav" },
- { "MusicRoomLobby", "z#185.wav" },
- { "1stClassRestaurant", "z#183.wav" },
+ struct RoomWave {
+ const char *_room;
+ const char *_enSound;
+ const char *_deSound;
+ };
+ const RoomWave ROOM_WAVES[8] = {
+ { "EmbLobby", "z#186.wav", "z#716.wav" },
+ { "PromenadeDeck", "z#184.wav", "z#714.wav" },
+ { "Arboretum", "z#188.wav", "z#718.wav" },
+ { "Frozen Arboretum", "z#188.wav", "z#718.wav" },
+ { "Bar", "z#187.wav", "z#717.wav" },
+ { "MusicRoom", "z#185.wav", "z#715.wav" },
+ { "MusicRoomLobby", "z#185.wav", "z#715.wav" },
+ { "1stClassRestaurant", "z#183.wav", "z#713.wav" },
};
if (msg->_value != -1) {
int idx;
for (idx = 0; idx < 8; ++idx) {
- if (compareRoomNameTo(ROOM_WAVES[idx][0])) {
- playSound(ROOM_WAVES[idx][1]);
+ if (compareRoomNameTo(ROOM_WAVES[idx]._room)) {
+ playSound(TRANSLATE(ROOM_WAVES[idx]._enSound, ROOM_WAVES[idx]._deSound));
break;
}
}
if (idx == 8)
- playSound("z#146.wav");
+ playSound(TRANSLATE("z#146.wav", "z#702.wav"));
sleep(2000);
}
@@ -424,27 +430,27 @@ bool CDoorbot::TrueTalkNotifySpeechEndedMsg(CTrueTalkNotifySpeechEndedMsg *msg)
if (_npcFlags & NPCFLAG_DOORBOT_INTRO) {
// Initial speech by Doorbot in
- switch (msg->_dialogueId) {
- case 10552:
+ switch (msg->_dialogueId - TRANSLATE(10552, 10563)) {
+ case 0:
playClip("SE Try Buttons", MOVIE_NOTIFY_OBJECT);
_introMovieNum = 9;
break;
- case 10553:
+ case 1:
enableMouse();
break;
- case 10557:
+ case 5:
playClip("SE Move To Right", MOVIE_NOTIFY_OBJECT);
_introMovieNum = 11;
break;
- case 10559:
+ case 7:
stopAnimTimer(_timerId);
_timerId = addTimer(0, 2500, 0);
break;
- case 10560:
+ case 8:
petShow();
petSetArea(PET_CONVERSATION);
petIncAreaLocks();
@@ -452,31 +458,31 @@ bool CDoorbot::TrueTalkNotifySpeechEndedMsg(CTrueTalkNotifySpeechEndedMsg *msg)
_timerId = addTimer(1, 1000, 0);
break;
- case 10561:
+ case 9:
enableMouse();
_introMovieNum = 1;
stopAnimTimer(_timerId);
_timerId = addTimer(2, 10000, 0);
break;
- case 10562:
+ case 10:
if (_introMovieNum == 1) {
stopAnimTimer(_timerId);
_timerId = addTimer(2, getRandomNumber(5000) + 5000, 0);
}
break;
- case 10563:
- case 10564:
+ case 11:
+ case 12:
disableMouse();
startTalking(this, 221480);
break;
- case 10565:
+ case 13:
startTalking(this, 221481);
break;
- case 10566:
+ case 14:
stopAnimTimer(_timerId);
_timerId = 0;
if (_field110 == 2) {
@@ -487,7 +493,7 @@ bool CDoorbot::TrueTalkNotifySpeechEndedMsg(CTrueTalkNotifySpeechEndedMsg *msg)
}
break;
- case 10567: {
+ case 15: {
CActMsg actMsg("BecomeGettable");
actMsg.execute("Photograph");
enableMouse();
@@ -496,26 +502,26 @@ bool CDoorbot::TrueTalkNotifySpeechEndedMsg(CTrueTalkNotifySpeechEndedMsg *msg)
break;
}
- case 10568:
+ case 16:
// Start moving cursor to photograph
mouseDisableControl();
mouseSetPosition(Point(600, 250), 2500);
_timerId = addTimer(6, 2500, 0);
break;
- case 10569:
+ case 17:
if (_field110 != 2) {
stopAnimTimer(_timerId);
_timerId = addTimer(5, 3000, 0);
}
break;
- case 10570:
+ case 18:
mouseSetPosition(Point(200, 430), 2500);
_timerId = addTimer(7, 3000, 0);
break;
- case 10571:
+ case 19:
playClip("Cloak On", MOVIE_NOTIFY_OBJECT);
_introMovieNum = 6;
break;
diff --git a/engines/titanic/npcs/parrot.cpp b/engines/titanic/npcs/parrot.cpp
index dd033abbae..ba07d1d15c 100644
--- a/engines/titanic/npcs/parrot.cpp
+++ b/engines/titanic/npcs/parrot.cpp
@@ -25,6 +25,7 @@
#include "titanic/carry/carry.h"
#include "titanic/carry/chicken.h"
#include "titanic/game_manager.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -45,6 +46,7 @@ BEGIN_MESSAGE_MAP(CParrot, CTrueTalkNPC)
ON_MESSAGE(PreEnterViewMsg)
ON_MESSAGE(PanningAwayFromParrotMsg)
ON_MESSAGE(LeaveRoomMsg)
+ ON_MESSAGE(TrueTalkNotifySpeechStartedMsg)
ON_MESSAGE(TrueTalkNotifySpeechEndedMsg)
END_MESSAGE_MAP()
@@ -385,7 +387,7 @@ bool CParrot::ParrotSpeakMsg(CParrotSpeakMsg *msg) {
if ((getTicksCount() - _lastSpeakTime) < 20000 || _speechCounter)
return true;
- playSound("z#475.wav", 50);
+ playSound(TRANSLATE("z#475.wav", "z#212.wav"), 50);
if (msg->_target == "Bomb") {
startTalking("PerchedParrot", 280236);
@@ -547,6 +549,9 @@ bool CParrot::FrameMsg(CFrameMsg *msg) {
| NPCFLAG_MOVE_FINISH | NPCFLAG_MOVE_LEFT | NPCFLAG_MOVE_RIGHT | NPCFLAG_MOVE_END);
return true;
}
+
+ // WORKAROUND: Prevent panning away from stalling if Parrot was moving
+ _npcFlags &= ~NPCFLAG_MOVING;
} else {
if (dragObject)
chickenFlag = dragObject && dragObject->isEquals("Chicken");
@@ -726,6 +731,15 @@ bool CParrot::LeaveRoomMsg(CLeaveRoomMsg *msg) {
return true;
}
+bool CParrot::TrueTalkNotifySpeechStartedMsg(CTrueTalkNotifySpeechStartedMsg *msg) {
+ // WORKAROUND: Fix parrot freezing up if you drag the chicken whilst
+ // he's still returning to the center from a prior chicken drag
+ if (_npcFlags & (NPCFLAG_MOVE_LEFT | NPCFLAG_MOVE_RIGHT))
+ _npcFlags &= ~(NPCFLAG_MOVING | NPCFLAG_MOVE_LEFT | NPCFLAG_MOVE_RIGHT);
+
+ return CTrueTalkNPC::TrueTalkNotifySpeechStartedMsg(msg);
+}
+
bool CParrot::TrueTalkNotifySpeechEndedMsg(CTrueTalkNotifySpeechEndedMsg *msg) {
if (msg->_dialogueId == 80022) {
// WORKAROUND: End of parrot speech after having fixed Titania
diff --git a/engines/titanic/npcs/parrot.h b/engines/titanic/npcs/parrot.h
index 6fc4d6a182..ee275158e6 100644
--- a/engines/titanic/npcs/parrot.h
+++ b/engines/titanic/npcs/parrot.h
@@ -51,6 +51,7 @@ class CParrot : public CTrueTalkNPC {
bool PreEnterViewMsg(CPreEnterViewMsg *msg);
bool PanningAwayFromParrotMsg(CPanningAwayFromParrotMsg *msg);
bool LeaveRoomMsg(CLeaveRoomMsg *msg);
+ bool TrueTalkNotifySpeechStartedMsg(CTrueTalkNotifySpeechStartedMsg *msg);
bool TrueTalkNotifySpeechEndedMsg(CTrueTalkNotifySpeechEndedMsg *msg);
public:
static bool _eatingChicken;
diff --git a/engines/titanic/npcs/parrot_succubus.cpp b/engines/titanic/npcs/parrot_succubus.cpp
index 964b91b106..64611e89b3 100644
--- a/engines/titanic/npcs/parrot_succubus.cpp
+++ b/engines/titanic/npcs/parrot_succubus.cpp
@@ -23,6 +23,7 @@
#include "titanic/npcs/parrot_succubus.h"
#include "titanic/pet_control/pet_control.h"
#include "titanic/carry/hose.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -79,7 +80,7 @@ bool CParrotSuccUBus::HoseConnectedMsg(CHoseConnectedMsg *msg) {
_isOn = false;
} else {
playMovie(_onStartFrame, _onEndFrame, 0);
- playSound("z#26.wav");
+ playSound(TRANSLATE("z#26.wav", "z#557.wav"));
}
playMovie(_hoseStartFrame, _hoseEndFrame, MOVIE_NOTIFY_OBJECT);
@@ -117,7 +118,7 @@ bool CParrotSuccUBus::EnterViewMsg(CEnterViewMsg *msg) {
bool CParrotSuccUBus::MovieEndMsg(CMovieEndMsg *msg) {
if (msg->_endFrame == _hoseEndFrame) {
playMovie(_pumpingStartFrame, _pumpingEndFrame, MOVIE_REPEAT);
- _pumpingSound = playSound("z#472.wav");
+ _pumpingSound = playSound(TRANSLATE("z#472.wav", "z#209.wav"));
return true;
} else {
return CSuccUBus::MovieEndMsg(msg);
@@ -139,7 +140,7 @@ bool CParrotSuccUBus::LeaveNodeMsg(CLeaveNodeMsg *msg) {
if (_hoseConnected) {
getHiddenObject(_pumpingTarget);
if (CHose::_statics->_actionTarget.empty()) {
- playSound("z#51.wav");
+ playSound(TRANSLATE("z#51.wav", "z#582.wav"));
CHoseConnectedMsg hoseMsg;
hoseMsg._connected = false;
hoseMsg.execute(this);
diff --git a/engines/titanic/npcs/succubus.cpp b/engines/titanic/npcs/succubus.cpp
index 6eeccd345a..b8fddf2079 100644
--- a/engines/titanic/npcs/succubus.cpp
+++ b/engines/titanic/npcs/succubus.cpp
@@ -25,6 +25,7 @@
#include "titanic/carry/chicken.h"
#include "titanic/core/view_item.h"
#include "titanic/pet_control/pet_control.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -289,7 +290,7 @@ bool CSuccUBus::SubAcceptCCarryMsg(CSubAcceptCCarryMsg *msg) {
item->setVisible(false);
if (_startFrame1 >= 0) {
- playSound("z#23.wav");
+ playSound(TRANSLATE("z#23.wav", "z#554.wav"));
playMovie(_startFrame1, _endFrame1, 0);
}
@@ -366,7 +367,7 @@ bool CSuccUBus::LeaveViewMsg(CLeaveViewMsg *msg) {
if (_isOn) {
_isOn = false;
if (_offStartFrame >= 0)
- playSound("z#27.wav", 100);
+ playSound(TRANSLATE("z#27.wav", "z#558.wav"), 100);
if (_signalFlag)
setVisible(false);
@@ -535,7 +536,7 @@ bool CSuccUBus::MovieEndMsg(CMovieEndMsg *msg) {
if (msg->_endFrame == _offEndFrame) {
if (_endingStartFrame >= 0)
- playSound("z#30.wav", 100);
+ playSound(TRANSLATE("z#30.wav", "z#561.wav"), 100);
if (_signalFlag) {
_signalFlag = false;
@@ -680,12 +681,12 @@ bool CSuccUBus::TurnOn(CTurnOn *msg) {
if (pet) {
if (!_signalFlag && _initialStartFrame >= 0) {
playMovie(_initialStartFrame, _initialEndFrame, 0);
- playSound("z#30.wav", 100);
+ playSound(TRANSLATE("z#30.wav", "z#561.wav"), 100);
}
if (_onStartFrame >= 0) {
playMovie(_onStartFrame, _onEndFrame, MOVIE_NOTIFY_OBJECT);
- playSound("z#26.wav", 100);
+ playSound(TRANSLATE("z#26.wav", "z#557.wav"), 100);
}
uint petRoomFlags = pet->getRoomFlags();
@@ -712,7 +713,7 @@ bool CSuccUBus::TurnOff(CTurnOff *msg) {
}
if (_offStartFrame >= 0) {
- playSound("z#27.wav", 100);
+ playSound(TRANSLATE("z#27.wav", "z#558.wav"), 100);
playMovie(_offStartFrame, _offEndFrame, MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH);
}
@@ -753,7 +754,7 @@ bool CSuccUBus::SUBTransition(CSUBTransition *msg) {
bool CSuccUBus::SetChevRoomBits(CSetChevRoomBits *msg) {
if (_isOn) {
_destRoomFlags = msg->_roomFlags;
- playSound("z#98.wav", 100);
+ playSound(TRANSLATE("z#98.wav", "z#629.wav"), 100);
}
return true;
diff --git a/engines/titanic/npcs/titania.cpp b/engines/titanic/npcs/titania.cpp
index d3e3395fc8..bfc0ba1bfd 100644
--- a/engines/titanic/npcs/titania.cpp
+++ b/engines/titanic/npcs/titania.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/npcs/titania.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -146,7 +147,7 @@ bool CTitania::ActMsg(CActMsg *msg) {
if (msg->_action == "SleepTitania") {
setVisible(true);
playCutscene(52, 104);
- playSound("z#47.wav", 100);
+ playSound(TRANSLATE("z#47.wav", "z#578.wav"), 100);
changeView("Titania.Node 7.S", "");
// Re-enable control, and reset bomb's volume back to normal 60%
@@ -178,7 +179,7 @@ bool CTitania::ActMsg(CActMsg *msg) {
&& _mouth && _visionCentre && _speechCentre
&& _olfactoryCentre && _auditoryCentre) {
CProximity prox(Audio::Mixer::kSpeechSoundType);
- playSound("z#47.wav", prox);
+ playSound(TRANSLATE("z#47.wav", "z#578.wav"), prox);
CActMsg actMsg("Woken");
actMsg.execute("MouthSlot");
diff --git a/engines/titanic/pet_control/pet_control.cpp b/engines/titanic/pet_control/pet_control.cpp
index cfd209f763..b3291623c3 100644
--- a/engines/titanic/pet_control/pet_control.cpp
+++ b/engines/titanic/pet_control/pet_control.cpp
@@ -182,6 +182,7 @@ void CPetControl::enterNode(CNodeItem *node) {
void CPetControl::enterRoom(CRoomItem *room) {
_rooms.enterRoom(room);
_remote.enterRoom(room);
+ _inventory.enterRoom(room);
}
void CPetControl::resetRemoteTarget() {
@@ -562,6 +563,10 @@ bool CPetControl::checkNode(const CString &name) {
return nameLower.contains(str);
}
+void CPetControl::syncSoundSettings() {
+ _realLife.syncSoundSettings();
+}
+
void CPetControl::playSound(int soundNum) {
CTreeItem *player = getHiddenObject("PETSoundPlayer");
if (player) {
diff --git a/engines/titanic/pet_control/pet_control.h b/engines/titanic/pet_control/pet_control.h
index 35556e08d2..6408c8a29b 100644
--- a/engines/titanic/pet_control/pet_control.h
+++ b/engines/titanic/pet_control/pet_control.h
@@ -297,6 +297,11 @@ public:
bool checkNode(const CString &name);
/**
+ * Handles updates to the sound levels
+ */
+ void syncSoundSettings();
+
+ /**
* Play a sound
*/
void playSound(int soundNum);
diff --git a/engines/titanic/pet_control/pet_gfx_element.h b/engines/titanic/pet_control/pet_gfx_element.h
index 91d9b9ccb2..3d2a06db97 100644
--- a/engines/titanic/pet_control/pet_gfx_element.h
+++ b/engines/titanic/pet_control/pet_gfx_element.h
@@ -67,6 +67,12 @@ public:
* Get the game object associated with this item
*/
virtual CGameObject *getObject() const;
+
+ /**
+ * Gets the explicit bounds set for the graphic element,
+ * ignoring any associated sub-object bounds
+ */
+ const Rect &getRawBounds() const { return _bounds; }
};
} // End of namespace Titanic
diff --git a/engines/titanic/pet_control/pet_glyphs.h b/engines/titanic/pet_control/pet_glyphs.h
index 6229d17994..8f335f882b 100644
--- a/engines/titanic/pet_control/pet_glyphs.h
+++ b/engines/titanic/pet_control/pet_glyphs.h
@@ -476,6 +476,11 @@ public:
bool isGlyphHighlighted(const CPetGlyph *glyph) const;
/**
+ * Returns the highlighted index, if any
+ */
+ int getHighlightIndex() const { return _highlightIndex; }
+
+ /**
* Get the top-left position of the currently highlighted glyph
*/
Point getHighlightedGlyphPos() const;
diff --git a/engines/titanic/pet_control/pet_inventory.cpp b/engines/titanic/pet_control/pet_inventory.cpp
index b2f530c5fa..0f9f253cb0 100644
--- a/engines/titanic/pet_control/pet_inventory.cpp
+++ b/engines/titanic/pet_control/pet_inventory.cpp
@@ -71,6 +71,14 @@ void CPetInventory::changed(int changeType) {
}
}
+void CPetInventory::enterRoom(CRoomItem *room) {
+ int index = _items.getHighlightIndex();
+ if (index != -1) {
+ _items.resetHighlight();
+ _items.highlight(index);
+ }
+}
+
bool CPetInventory::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
return _items.MouseButtonDownMsg(msg->_mousePos);
}
diff --git a/engines/titanic/pet_control/pet_inventory.h b/engines/titanic/pet_control/pet_inventory.h
index dc85b31420..32f5eb4b12 100644
--- a/engines/titanic/pet_control/pet_inventory.h
+++ b/engines/titanic/pet_control/pet_inventory.h
@@ -86,6 +86,11 @@ public:
virtual void changed(int changeType);
/**
+ * Called when a new room is entered
+ */
+ virtual void enterRoom(CRoomItem *room);
+
+ /**
* Following are handlers for the various messages that the PET can
* pass onto the currently active section/area
*/
diff --git a/engines/titanic/pet_control/pet_real_life.cpp b/engines/titanic/pet_control/pet_real_life.cpp
index 57d81c739e..ff87a2fab4 100644
--- a/engines/titanic/pet_control/pet_real_life.cpp
+++ b/engines/titanic/pet_control/pet_real_life.cpp
@@ -123,6 +123,12 @@ void CPetRealLife::addButton(CPetGlyph *glyph) {
}
}
-
+void CPetRealLife::syncSoundSettings() {
+ for (CPetGlyphs::iterator i = _glyphs.begin(); i != _glyphs.end(); ++i) {
+ CPetSound *sound = dynamic_cast<CPetSound *>(*i);
+ if (sound)
+ sound->setSliders();
+ }
+}
} // 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 294f9a3f9f..965b4eab2a 100644
--- a/engines/titanic/pet_control/pet_real_life.h
+++ b/engines/titanic/pet_control/pet_real_life.h
@@ -126,6 +126,10 @@ public:
*/
virtual CTextControl *getText() { return &_text; }
+ /**
+ * Handles updates to the sound levels
+ */
+ void syncSoundSettings();
};
} // End of namespace Titanic
diff --git a/engines/titanic/pet_control/pet_slider.cpp b/engines/titanic/pet_control/pet_slider.cpp
index eb07012f43..9fb173871f 100644
--- a/engines/titanic/pet_control/pet_slider.cpp
+++ b/engines/titanic/pet_control/pet_slider.cpp
@@ -89,7 +89,7 @@ double CPetSlider::getOffsetPixels() const {
if (minVal == maxVal)
return 0.0;
- return _sliderOffset / (maxVal - minVal);
+ return (double)_sliderOffset / (maxVal - minVal);
}
void CPetSlider::setSliderOffset(double offset) {
diff --git a/engines/titanic/pet_control/pet_sound.cpp b/engines/titanic/pet_control/pet_sound.cpp
index 085ee649b2..c2c9110b03 100644
--- a/engines/titanic/pet_control/pet_sound.cpp
+++ b/engines/titanic/pet_control/pet_sound.cpp
@@ -24,10 +24,12 @@
#include "titanic/pet_control/pet_control.h"
#include "titanic/pet_control/pet_real_life.h"
#include "titanic/game_manager.h"
+#include "titanic/titanic.h"
+#include "common/config-manager.h"
namespace Titanic {
-CPetSound::CPetSound() : CPetGlyph(), _draggingSlider(nullptr), _draggingSliderNum(0) {
+CPetSound::CPetSound() : CPetGlyph(), _draggingSlider(nullptr), _draggingSliderNum(MASTER_SLIDER) {
}
bool CPetSound::setup(CPetControl *petControl, CPetGlyphs *owner) {
@@ -109,6 +111,62 @@ bool CPetSound::reset() {
return false;
}
+void CPetSound::setSliders() {
+ // Get the mute settings
+ bool muteAll = ConfMan.hasKey("mute") ? ConfMan.getBool("mute") : false;
+ bool musicMute = muteAll || (ConfMan.hasKey("music_mute") && ConfMan.getBool("music_mute"));
+ bool sfxMute = muteAll || (ConfMan.hasKey("sfx_mute") && ConfMan.getBool("sfx_mute"));
+ bool speechMute = muteAll || (ConfMan.hasKey("speech_mute") && ConfMan.getBool("speech_mute"));
+
+ // Get the volume levels
+ uint musicVol = musicMute ? 0 : MIN(255, ConfMan.getInt("music_volume"));
+ uint parrotVol = sfxMute ? 0 : MIN(255, ConfMan.getInt("sfx_volume"));
+ uint speechVol = speechMute ? 0 : MIN(255, ConfMan.getInt("speech_volume"));
+ uint masterVol = MAX(musicVol, MAX(parrotVol, speechVol));
+
+ const double FACTOR = 1.0 / 255.0;
+ _masterVolume.setSliderOffset(masterVol * FACTOR);
+ _musicVolume.setSliderOffset(musicVol * FACTOR);
+ _parrotVolume.setSliderOffset(parrotVol * FACTOR);
+ _speechVolume.setSliderOffset(speechVol * FACTOR);
+}
+
+void CPetSound::sliderChanged(double offset, SliderType sliderNum) {
+ uint newVol = (uint)(offset * 255.0);
+
+ switch (sliderNum) {
+ case MASTER_SLIDER:
+ ConfMan.setBool("music_mute", false);
+ ConfMan.setBool("sfx_mute", false);
+ ConfMan.setBool("sfx_mute", false);
+ ConfMan.setInt("music_volume", newVol);
+ ConfMan.setInt("sfx_volume", newVol);
+ ConfMan.setInt("speech_volume", newVol);
+
+ _musicVolume.setSliderOffset(newVol * 0.01);
+ _parrotVolume.setSliderOffset(newVol * 0.01);
+ _speechVolume.setSliderOffset(newVol * 0.01);
+ break;
+ case MUSIC_SLIDER:
+ ConfMan.setBool("music_mute", false);
+ ConfMan.setInt("music_volume", newVol);
+ break;
+ case PARROT_SLIDER:
+ ConfMan.setBool("sfx_mute", false);
+ ConfMan.setInt("sfx_volume", newVol);
+ break;
+ case SPEECH_SLIDER:
+ ConfMan.setBool("speech_mute", false);
+ ConfMan.setInt("speech_volume", newVol);
+ break;
+ default:
+ return;
+ }
+
+ ConfMan.setBool("mute", false);
+ g_vm->syncSoundSettings();
+}
+
void CPetSound::draw2(CScreenManager *screenManager) {
_element.draw(screenManager);
@@ -142,7 +200,7 @@ bool CPetSound::MouseButtonDownMsg(const Point &pt) {
rectRight.translate(567, 378);
CPetSlider *sliders[4] = { &_masterVolume, &_musicVolume, &_parrotVolume, &_speechVolume };
- for (int idx = 0; idx < 4; ++idx) {
+ for (int idx = MASTER_SLIDER; idx <= SPEECH_SLIDER; ++idx) {
CPetSlider *slider = sliders[idx];
bool isLeft = rectLeft.contains(pt);
bool isRight = rectRight.contains(pt);
@@ -157,7 +215,7 @@ bool CPetSound::MouseButtonDownMsg(const Point &pt) {
}
if (isLeft || isRight) {
- sliderChanged(offset, idx);
+ sliderChanged(offset, (SliderType)idx);
return true;
}
@@ -169,56 +227,26 @@ bool CPetSound::MouseButtonDownMsg(const Point &pt) {
return false;
}
-void CPetSound::sliderChanged(double offset, int sliderNum) {
- CPetControl *pet = getPetControl();
- if (!pet)
- return;
-
- CGameManager *gameManager = pet->getGameManager();
- if (!gameManager)
- return;
-
- QSoundManager &soundManager = gameManager->_sound._soundManager;
- double percent = offset * 100.0;
-
- switch (sliderNum) {
- case 0:
- soundManager.setMasterPercent(percent);
- break;
- case 1:
- soundManager.setMusicPercent(percent);
- break;
- case 2:
- soundManager.setParrotPercent(percent);
- break;
- case 3:
- soundManager.setSpeechPercent(percent);
- break;
- default:
- break;
- }
-}
-
bool CPetSound::MouseDragStartMsg(CMouseDragStartMsg *msg) {
- if (_musicVolume.resetThumbFocus()) {
- _draggingSlider = &_musicVolume;
+ if (_masterVolume.resetThumbFocus()) {
+ _draggingSlider = &_masterVolume;
getOwner()->startDragging(this, msg);
- _draggingSliderNum = 0;
+ _draggingSliderNum = MASTER_SLIDER;
return true;
- } else if (_masterVolume.resetThumbFocus()) {
- _draggingSlider = &_masterVolume;
+ } else if (_musicVolume.resetThumbFocus()) {
+ _draggingSlider = &_musicVolume;
getOwner()->startDragging(this, msg);
- _draggingSliderNum = 1;
+ _draggingSliderNum = MUSIC_SLIDER;
return true;
} else if (_parrotVolume.resetThumbFocus()) {
_draggingSlider = &_parrotVolume;
getOwner()->startDragging(this, msg);
- _draggingSliderNum = 2;
+ _draggingSliderNum = PARROT_SLIDER;
return true;
} else if (_speechVolume.resetThumbFocus()) {
_draggingSlider = &_speechVolume;
getOwner()->startDragging(this, msg);
- _draggingSliderNum = 3;
+ _draggingSliderNum = SPEECH_SLIDER;
return true;
}
@@ -244,6 +272,9 @@ bool CPetSound::MouseDragEndMsg(CMouseDragEndMsg *msg) {
if (!_draggingSlider)
return false;
+ // Flush the changed settings
+ ConfMan.flushToDisk();
+
bool result = _draggingSlider->MouseDragEndMsg(msg->_mousePos);
getOwner()->endDragging();
@@ -251,20 +282,20 @@ bool CPetSound::MouseDragEndMsg(CMouseDragEndMsg *msg) {
}
bool CPetSound::MouseButtonUpMsg(const Point &pt) {
- int sliderNum = 0;
+ SliderType sliderNum = MASTER_SLIDER;
CPetSlider *slider = nullptr;
- if (_musicVolume.MouseButtonUpMsg(pt)) {
- sliderNum = 0;
- slider = &_musicVolume;
- } else if (_masterVolume.MouseButtonUpMsg(pt)) {
- sliderNum = 1;
+ if (_masterVolume.MouseButtonUpMsg(pt)) {
+ sliderNum = MASTER_SLIDER;
slider = &_masterVolume;
+ } else if (_musicVolume.MouseButtonUpMsg(pt)) {
+ sliderNum = MUSIC_SLIDER;
+ slider = &_musicVolume;
} else if (_parrotVolume.MouseButtonUpMsg(pt)) {
- sliderNum = 2;
+ sliderNum = PARROT_SLIDER;
slider = &_parrotVolume;
} else if (_speechVolume.MouseButtonUpMsg(pt)) {
- sliderNum = 3;
+ sliderNum = SPEECH_SLIDER;
slider = &_speechVolume;
} else {
return false;
diff --git a/engines/titanic/pet_control/pet_sound.h b/engines/titanic/pet_control/pet_sound.h
index e4fd21006a..54e2fc12e7 100644
--- a/engines/titanic/pet_control/pet_sound.h
+++ b/engines/titanic/pet_control/pet_sound.h
@@ -33,6 +33,9 @@ namespace Titanic {
class CPetRealLife;
class CPetSound : public CPetGlyph {
+ enum SliderType {
+ MASTER_SLIDER = 0, MUSIC_SLIDER = 1, PARROT_SLIDER = 2, SPEECH_SLIDER = 3
+ };
private:
CPetGfxElement _element;
CPetSoundSlider _masterVolume;
@@ -44,12 +47,12 @@ private:
CTextControl _textParrotVolume;
CTextControl _textSpeechVolume;
CPetSlider *_draggingSlider;
- int _draggingSliderNum;
+ SliderType _draggingSliderNum;
private:
/**
* Called when a slider has changed
*/
- void sliderChanged(double offset, int sliderNum);
+ void sliderChanged(double offset, SliderType sliderNum);
public:
CPetSound();
@@ -94,9 +97,21 @@ public:
virtual bool MouseButtonUpMsg(const Point &pt);
/**
+ * Highlight any currently highlighted element
+ */
+ virtual void highlightCurrent(const Point &pt) {
+ setSliders();
+ }
+
+ /**
* Returns the tooltip text for when the glyph is selected
*/
virtual void getTooltip(CTextControl *text);
+
+ /**
+ * Sets the positions of the volume sliders
+ */
+ void setSliders();
};
} // End of namespace Titanic
diff --git a/engines/titanic/pet_control/pet_starfield.cpp b/engines/titanic/pet_control/pet_starfield.cpp
index bbe892464f..7476c6eda2 100644
--- a/engines/titanic/pet_control/pet_starfield.cpp
+++ b/engines/titanic/pet_control/pet_starfield.cpp
@@ -94,7 +94,7 @@ bool CPetStarfield::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
_petControl->displayMessage(SUPPLY_GALACTIC_REFERENCE);
}
} else if (!_btnSetDest.MouseButtonDownMsg(msg->_mousePos)) {
- return elementsMouseDown(msg);
+ return markersMouseDown(msg);
}
return true;
@@ -216,33 +216,36 @@ void CPetStarfield::makePetDirty() {
_petControl->makeDirty();
}
-bool CPetStarfield::elementsMouseDown(CMouseButtonDownMsg *msg) {
- if (elementMouseButton(0, msg, _leds[0].getBounds()))
+bool CPetStarfield::markersMouseDown(CMouseButtonDownMsg *msg) {
+ if (markerMouseDown(0, msg, _leds[0].getRawBounds()))
return true;
- if (elementMouseButton(1, msg, _leds[2].getBounds()))
+ if (markerMouseDown(1, msg, _leds[2].getRawBounds()))
return true;
- if (elementMouseButton(2, msg, _leds[4].getBounds()))
+ if (markerMouseDown(2, msg, _leds[4].getRawBounds()))
return true;
return false;
}
-bool CPetStarfield::elementMouseButton(int index, CMouseButtonDownMsg *msg, const Rect &rect) {
+bool CPetStarfield::markerMouseDown(int index, CMouseButtonDownMsg *msg, const Rect &rect) {
if (!rect.contains(msg->_mousePos))
return false;
switch (_markerStates[index]) {
- case 1:
+ case MS_FLICKERING:
+ // Marker is flickering, so lock it in
if (_petControl->_remoteTarget) {
CPETStarFieldLockMsg lockMsg(1);
lockMsg.execute(_petControl->_remoteTarget);
}
break;
- case 2:
- if (index < 2 && _markerStates[index] >= 2) {
+ case MS_HIGHLIGHTED:
+ // Marker is locked in. If the most recently locked marker
+ // is clicked on, allow it to be unlocked
+ if (index == 2 || _markerStates[index + 1] != MS_HIGHLIGHTED) {
if (_petControl->_remoteTarget) {
- CPETStarFieldLockMsg lockMsg(1);
+ CPETStarFieldLockMsg lockMsg(0);
lockMsg.execute(_petControl->_remoteTarget);
}
}
diff --git a/engines/titanic/pet_control/pet_starfield.h b/engines/titanic/pet_control/pet_starfield.h
index deefae74c6..a0aa1c762a 100644
--- a/engines/titanic/pet_control/pet_starfield.h
+++ b/engines/titanic/pet_control/pet_starfield.h
@@ -56,11 +56,14 @@ private:
void drawButton(MarkerState state, int index, CScreenManager *screenManager);
/**
- * Mouse down handling for Nav elements
+ * Handles clicking on any of the three locked star LED markers
*/
- bool elementsMouseDown(CMouseButtonDownMsg *msg);
+ bool markersMouseDown(CMouseButtonDownMsg *msg);
- bool elementMouseButton(int index, CMouseButtonDownMsg *msg, const Rect &rect);
+ /**
+ * Handles clicking on a specific locked star LED marker
+ */
+ bool markerMouseDown(int index, CMouseButtonDownMsg *msg, const Rect &rect);
public:
CPetStarfield();
diff --git a/engines/titanic/sound/audio_buffer.cpp b/engines/titanic/sound/audio_buffer.cpp
index 636f4a5107..0e1abc4213 100644
--- a/engines/titanic/sound/audio_buffer.cpp
+++ b/engines/titanic/sound/audio_buffer.cpp
@@ -26,45 +26,45 @@
namespace Titanic {
CAudioBuffer::CAudioBuffer(int maxSize) : _finished(false) {
- _data.resize(maxSize);
reset();
}
void CAudioBuffer::reset() {
- _frontP = _backP = &_data[0];
+ _data.clear();
}
void CAudioBuffer::push(int16 value) {
- assert(!full());
- compact();
-
- *_backP++ = value;
+ enterCriticalSection();
+ _data.push(value);
+ leaveCriticalSection();
}
-void CAudioBuffer::push(int16 *values, int count) {
- compact();
- assert(freeSize() >= count);
+void CAudioBuffer::push(const int16 *values, int count) {
+ enterCriticalSection();
+
+ for (; count > 0; --count, ++values)
+ _data.push(*values);
- Common::copy(values, values + count, _backP);
- _backP += count;
+ leaveCriticalSection();
}
int16 CAudioBuffer::pop() {
- assert(!empty());
- return *_frontP++;
-}
+ enterCriticalSection();
+ int16 value = _data.pop();
+ leaveCriticalSection();
-void CAudioBuffer::compact() {
- if (_frontP != &_data[0]) {
- Common::copy(_frontP, _backP, &_data[0]);
- _backP -= _frontP - &_data[0];
- _frontP = &_data[0];
- }
+ return value;
}
-int CAudioBuffer::freeSize() {
- compact();
- return &_data[0] + _data.size() - _backP;
+int CAudioBuffer::read(int16 *values, int count) {
+ enterCriticalSection();
+
+ int bytesRead = 0;
+ for (; count > 0 && !_data.empty(); --count, ++bytesRead)
+ *values++ = _data.pop();
+
+ leaveCriticalSection();
+ return bytesRead;
}
void CAudioBuffer::enterCriticalSection() {
diff --git a/engines/titanic/sound/audio_buffer.h b/engines/titanic/sound/audio_buffer.h
index 8d27667e93..c775c5bb35 100644
--- a/engines/titanic/sound/audio_buffer.h
+++ b/engines/titanic/sound/audio_buffer.h
@@ -23,22 +23,27 @@
#ifndef TITANIC_AUDIO_BUFFER_H
#define TITANIC_AUDIO_BUFFER_H
-#include "common/array.h"
+#include "titanic/support/fixed_queue.h"
#include "common/mutex.h"
namespace Titanic {
+#define AUDIO_SAMPLING_RATE 22050
+
class CAudioBuffer {
private:
Common::Mutex _mutex;
- Common::Array<int16> _data;
- int16 *_frontP, *_backP;
+ FixedQueue<int16, AUDIO_SAMPLING_RATE * 4> _data;
+private:
+ /**
+ * Enters a critical section
+ */
+ void enterCriticalSection();
/**
- * Reclaims any space at the start of the array resulting from
- * having read values off the font
+ * Leave a critical section
*/
- void compact();
+ void leaveCriticalSection();
public:
bool _finished;
public:
@@ -57,17 +62,17 @@ public:
/**
* Returns the number of 16-bit entries in the buffer
*/
- int size() const { return _backP - _frontP; }
+ int size() const { return _data.size(); }
/**
- * Returns true if the buffer is full
+ * Returns the number of entries free in the buffer
*/
- bool full() const { return (_backP - _frontP) == (int)_data.size(); }
+ int freeSize() const { return _data.freeSize(); }
/**
- * Returns the number of entries free in the buffer
+ * Returns true if the buffer is full
*/
- int freeSize();
+ bool full() const { return _data.full(); }
/**
* Adds a value to the buffer
@@ -77,7 +82,7 @@ public:
/**
* Adds a value to the buffer
*/
- void push(int16 *values, int count);
+ void push(const int16 *values, int count);
/**
* Removes a value from the buffer
@@ -85,14 +90,9 @@ public:
int16 pop();
/**
- * Enters a critical section
+ * Reads out a specified number of samples
*/
- void enterCriticalSection();
-
- /**
- * Leave a critical section
- */
- void leaveCriticalSection();
+ int read(int16 *values, int count);
};
} // End of namespace Titanic
diff --git a/engines/titanic/sound/music_room_handler.cpp b/engines/titanic/sound/music_room_handler.cpp
index dbbe4e4ca8..5c1cd6012d 100644
--- a/engines/titanic/sound/music_room_handler.cpp
+++ b/engines/titanic/sound/music_room_handler.cpp
@@ -202,8 +202,6 @@ bool CMusicRoomHandler::update() {
}
void CMusicRoomHandler::updateAudio() {
- _audioBuffer->enterCriticalSection();
-
int size = _audioBuffer->freeSize();
int count;
int16 *ptr;
@@ -220,9 +218,9 @@ void CMusicRoomHandler::updateAudio() {
// Iterate through each of the four instruments and do an additive
// read that will merge their data onto the output buffer
for (count = size, ptr = audioData; count > 0; ) {
- int amount = musicWave->read(ptr, count);
+ int amount = musicWave->read(ptr, count * 2);
if (amount > 0) {
- count -= amount;
+ count -= amount / sizeof(uint16);
ptr += amount / sizeof(uint16);
} else if (!pollInstrument(instrument)) {
--_instrumentsActive;
@@ -234,8 +232,6 @@ void CMusicRoomHandler::updateAudio() {
_audioBuffer->push(audioData, size);
delete[] audioData;
}
-
- _audioBuffer->leaveCriticalSection();
}
void CMusicRoomHandler::updateInstruments() {
diff --git a/engines/titanic/sound/music_room_instrument.cpp b/engines/titanic/sound/music_room_instrument.cpp
index b92329850b..15ac2cd192 100644
--- a/engines/titanic/sound/music_room_instrument.cpp
+++ b/engines/titanic/sound/music_room_instrument.cpp
@@ -115,7 +115,7 @@ void CMusicRoomInstrument::start() {
case MV_BELLS:
_gameObjects[0]->loadFrame(0);
- _gameObjects[0]->movieSetAudioTiming(true);
+ _gameObjects[0]->movieSetPlaying(true);
break;
case MV_SNAKE:
@@ -210,8 +210,8 @@ void CMusicRoomInstrument::update(int val) {
case MV_BELLS:
switch (val) {
case 60:
- _gameObjects[0]->movieSetAudioTiming(true);
_gameObjects[0]->playMovie(0, 512, MOVIE_STOP_PREVIOUS);
+ _gameObjects[0]->movieSetPlaying(true);
_animTime = 0.6;
break;
diff --git a/engines/titanic/sound/qmixer.cpp b/engines/titanic/sound/qmixer.cpp
index a3c06da2f8..a1091a9763 100644
--- a/engines/titanic/sound/qmixer.cpp
+++ b/engines/titanic/sound/qmixer.cpp
@@ -29,6 +29,10 @@ namespace Titanic {
QMixer::QMixer(Audio::Mixer *mixer) : _mixer(mixer) {
}
+QMixer::~QMixer() {
+ _channels.clear();
+}
+
bool QMixer::qsWaveMixInitEx(const QMIXCONFIG &config) {
assert(_channels.empty());
assert(config.iChannels > 0 && config.iChannels < 256);
@@ -237,6 +241,11 @@ void QMixer::qsWaveMixPump() {
/*------------------------------------------------------------------------*/
+QMixer::ChannelEntry::~ChannelEntry() {
+ for (Common::List<SoundEntry>::iterator i = _sounds.begin(); i != _sounds.end(); ++i)
+ delete (*i)._waveFile;
+}
+
byte QMixer::ChannelEntry::getRawVolume() const {
// Emperically decided adjustment divisor for distances
const double ADJUSTMENT_FACTOR = 5.0;
diff --git a/engines/titanic/sound/qmixer.h b/engines/titanic/sound/qmixer.h
index 17ca441e83..c6d7fcd520 100644
--- a/engines/titanic/sound/qmixer.h
+++ b/engines/titanic/sound/qmixer.h
@@ -204,6 +204,7 @@ class QMixer {
ChannelEntry() : _volume(0), _panRate(0), _volumeChangeStart(0),
_volumeChangeEnd(0), _volumeStart(0), _volumeEnd(0),
_distance(0.0), _resetDistance(true) {}
+ ~ChannelEntry();
/**
* Calculates the raw volume level to pass to ScummVM playStream, taking
@@ -217,7 +218,7 @@ protected:
Audio::Mixer *_mixer;
public:
QMixer(Audio::Mixer *mixer);
- virtual ~QMixer() {}
+ virtual ~QMixer();
/**
* Initializes the mixer
diff --git a/engines/titanic/sound/seasonal_music_player.cpp b/engines/titanic/sound/seasonal_music_player.cpp
index 40bf7096f2..637a0020ba 100644
--- a/engines/titanic/sound/seasonal_music_player.cpp
+++ b/engines/titanic/sound/seasonal_music_player.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/sound/seasonal_music_player.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -119,14 +120,14 @@ bool CSeasonalMusicPlayer::ChangeMusicMsg(CChangeMusicMsg *msg) {
if (!_isRepeated && msg->_flags == 2) {
_isRepeated = true;
- loadSound("c#64.wav");
- loadSound("c#63.wav");
- loadSound("c#65.wav");
- loadSound("c#62.wav");
- playGlobalSound("c#64.wav", _springMode, _isSpring, true, 0);
- playGlobalSound("c#63.wav", _summerMode, _isSummer, true, 1);
- playGlobalSound("c#65.wav", _autumnMode, _isAutumn, true, 2);
- playGlobalSound("c#62.wav", _winterMode, _isWinter, true, 3);
+ loadSound(TRANSLATE("c#64.wav", "c#47.wav"));
+ loadSound(TRANSLATE("c#63.wav", "c#46.wav"));
+ loadSound(TRANSLATE("c#65.wav", "c#48.wav"));
+ loadSound(TRANSLATE("c#62.wav", "c#47.wav"));
+ playGlobalSound(TRANSLATE("c#64.wav", "c#47.wav"), _springMode, _isSpring, true, 0);
+ playGlobalSound(TRANSLATE("c#63.wav", "c#46.wav"), _summerMode, _isSummer, true, 1);
+ playGlobalSound(TRANSLATE("c#65.wav", "c#48.wav"), _autumnMode, _isAutumn, true, 2);
+ playGlobalSound(TRANSLATE("c#62.wav", "c#47.wav"), _winterMode, _isWinter, true, 3);
}
return true;
diff --git a/engines/titanic/sound/sound.cpp b/engines/titanic/sound/sound.cpp
index fb8cc299df..befe1a8e09 100644
--- a/engines/titanic/sound/sound.cpp
+++ b/engines/titanic/sound/sound.cpp
@@ -210,8 +210,10 @@ int CSound::playSpeech(CDialogueFile *dialogueFile, int speechId, CProximity &pr
return -1;
prox._soundDuration = waveFile->getDurationTicks();
- activateSound(waveFile, prox._disposeAfterUse);
+ if (prox._soundType != Audio::Mixer::kPlainSoundType)
+ waveFile->_soundType = prox._soundType;
+ activateSound(waveFile, prox._disposeAfterUse);
return _soundManager.playSound(*waveFile, prox);
}
diff --git a/engines/titanic/sound/sound_manager.cpp b/engines/titanic/sound/sound_manager.cpp
index a4d838ce2f..677ae0b7f3 100644
--- a/engines/titanic/sound/sound_manager.cpp
+++ b/engines/titanic/sound/sound_manager.cpp
@@ -26,7 +26,6 @@
namespace Titanic {
-const uint SAMPLING_RATE = 22050;
const uint LATENCY = 100;
const uint CHANNELS_COUNT = 16;
@@ -110,7 +109,7 @@ QSoundManager::QSoundManager(Audio::Mixer *mixer) : CSoundManager(), QMixer(mixe
Common::fill(&_channelsVolume[0], &_channelsVolume[16], 0);
Common::fill(&_channelsMode[0], &_channelsMode[16], 0);
- qsWaveMixInitEx(QMIXCONFIG(SAMPLING_RATE, CHANNELS_COUNT, LATENCY));
+ qsWaveMixInitEx(QMIXCONFIG(AUDIO_SAMPLING_RATE, CHANNELS_COUNT, LATENCY));
qsWaveMixActivate(true);
qsWaveMixOpenChannel(0, QMIX_OPENALL);
}
diff --git a/engines/titanic/sound/sound_manager.h b/engines/titanic/sound/sound_manager.h
index 59a514ca3d..e07c62ddec 100644
--- a/engines/titanic/sound/sound_manager.h
+++ b/engines/titanic/sound/sound_manager.h
@@ -42,11 +42,13 @@ enum VolumeMode {
*/
class CSoundManager {
protected:
+ uint _handleCtr;
+ // Old volume levels, deprecated in favor of setting the volumes
+ // directly in the ScummVM mixer
double _musicPercent;
double _speechPercent;
double _masterPercent;
double _parrotPercent;
- uint _handleCtr;
public:
CSoundManager();
virtual ~CSoundManager() {}
diff --git a/engines/titanic/sound/titania_speech.cpp b/engines/titanic/sound/titania_speech.cpp
index bd41845712..30446fd992 100644
--- a/engines/titanic/sound/titania_speech.cpp
+++ b/engines/titanic/sound/titania_speech.cpp
@@ -21,6 +21,7 @@
*/
#include "titanic/sound/titania_speech.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -57,15 +58,15 @@ bool CTitaniaSpeech::ActMsg(CActMsg *msg) {
CProximity prox(Audio::Mixer::kSpeechSoundType);
switch (_actionNum) {
case 1:
- movieSetAudioTiming(true);
- loadSound("a#12.wav");
+ loadSound(TRANSLATE("a#12.wav", "a#0.wav"));
sleep(1000);
playMovie(0, 187, MOVIE_WAIT_FOR_FINISH | MOVIE_NOTIFY_OBJECT);
+ movieSetPlaying(true);
movieEvent(0);
break;
case 2:
- loadSound("a#11.wav");
+ loadSound(TRANSLATE("a#11.wav", "a#4.wav"));
addTimer(0);
startAnimTimer("Para2", 300);
addTimer(6000);
@@ -78,25 +79,25 @@ bool CTitaniaSpeech::ActMsg(CActMsg *msg) {
case 3:
visibleMsg._visible = false;
visibleMsg.execute("TitaniaStillControl");
- loadSound("a#10.wav");
+ loadSound(TRANSLATE("a#10.wav", "a#2.wav"));
playMovie(585, 706, MOVIE_WAIT_FOR_FINISH | MOVIE_NOTIFY_OBJECT);
- playSound("a#10.wav", prox);
+ playSound(TRANSLATE("a#10.wav", "a#2.wav"), prox);
break;
case 4:
visibleMsg._visible = false;
visibleMsg.execute("TitaniaStillControl");
- loadSound("a#9.wav");
+ loadSound(TRANSLATE("a#9.wav", "a#3.wav"));
playMovie(707, 905, MOVIE_WAIT_FOR_FINISH | MOVIE_NOTIFY_OBJECT);
- playSound("a#9.wav", prox);
+ playSound(TRANSLATE("a#9.wav", "a#3.wav"), prox);
break;
case 5:
visibleMsg._visible = false;
visibleMsg.execute("TitaniaStillControl");
- loadSound("a#8.wav");
+ loadSound(TRANSLATE("a#8.wav", "a#1.wav"));
playMovie(906, 938, MOVIE_WAIT_FOR_FINISH | MOVIE_NOTIFY_OBJECT);
- playSound("a#8.wav", prox);
+ playSound(TRANSLATE("a#8.wav", "a#1.wav"), prox);
break;
default:
@@ -125,7 +126,7 @@ bool CTitaniaSpeech::MovieFrameMsg(CMovieFrameMsg *msg) {
int frame = getMovieFrame();
if (frame == 0) {
CProximity prox(Audio::Mixer::kSpeechSoundType);
- playSound("a#12.wav", prox);
+ playSound(TRANSLATE("a#12.wav", "a#0.wav"), prox);
}
return true;
@@ -142,7 +143,7 @@ bool CTitaniaSpeech::TimerMsg(CTimerMsg *msg) {
actMsg.execute(this);
} else if (msg->_action == "Para2") {
CProximity prox(Audio::Mixer::kSpeechSoundType);
- playSound("a#11.wav", prox);
+ playSound(TRANSLATE("a#11.wav", "a#4.wav"), prox);
} else {
frameMsg._frameNumber = _backgroundFrame++;
frameMsg.execute("TitaniaStillControl");
diff --git a/engines/titanic/sound/wave_file.cpp b/engines/titanic/sound/wave_file.cpp
index c1aab42a7f..ba895088ad 100644
--- a/engines/titanic/sound/wave_file.cpp
+++ b/engines/titanic/sound/wave_file.cpp
@@ -48,14 +48,7 @@ public:
};
int AudioBufferStream::readBuffer(int16 *buffer, const int numSamples) {
- _audioBuffer->enterCriticalSection();
- int samplesToRead = MIN((const int)numSamples, (const int)_audioBuffer->size());
-
- for (int idx = 0; idx < samplesToRead; ++idx)
- *buffer++ = _audioBuffer->pop();
-
- _audioBuffer->leaveCriticalSection();
- return samplesToRead;
+ return _audioBuffer->read(buffer, numSamples);
}
bool AudioBufferStream::endOfData() const {
@@ -188,7 +181,7 @@ const int16 *CWaveFile::lock() {
switch (_loadMode) {
case LOADMODE_SCUMMVM:
// Sanity checking that only raw 16-bit LE 22Khz waves can be locked
- assert(_waveData && _rate == 22050);
+ assert(_waveData && _rate == AUDIO_SAMPLING_RATE);
assert(_flags == (Audio::FLAG_LITTLE_ENDIAN | Audio::FLAG_16BITS));
assert(_wavType == kWaveFormatPCM);
diff --git a/engines/titanic/star_control/camera_auto_mover.cpp b/engines/titanic/star_control/camera_auto_mover.cpp
index fcd1e9e0ee..71f7de85b2 100644
--- a/engines/titanic/star_control/camera_auto_mover.cpp
+++ b/engines/titanic/star_control/camera_auto_mover.cpp
@@ -41,27 +41,7 @@ CCameraAutoMover::CCameraAutoMover() : _srcPos(0.0, 1000000.0, 0.0) {
_transitionPercentInc = 0.0;
}
-// TODO: same as setPath also orientations are not used
-void CCameraAutoMover::setPath2(const FVector &oldPos, const FVector &newPos,
- const FMatrix &oldOrientation, const FMatrix &newOrientation) {
- _srcPos = oldPos;
- _destPos = newPos;
- _posDelta = _destPos - _srcPos;
-
- float temp = 0.0;
- _posDelta.normalize(temp); // Do the normalization, put the scale amount in temp
- _distance = temp;
- _active = false;
- _field34 = false;
- _transitionPercent = 1.0;
- _field40 = -1;
- _field44 = -1;
- _field48 = -1;
- _field4C = 0;
-}
-
-// TODO: same as proc2 also orientations are not used
-void CCameraAutoMover::setOrientations(const FMatrix &srcOrient, const FMatrix &destOrient) {
+void CCameraAutoMover::clear() {
_srcPos.clear();
_destPos.clear();
_transitionPercent = 1.0;
@@ -70,18 +50,14 @@ void CCameraAutoMover::setOrientations(const FMatrix &srcOrient, const FMatrix &
_field34 = false;
}
-// TODO: same as setPath2 also orientations are not used
-void CCameraAutoMover::setPath(const FVector &srcV, const FVector &destV, const FMatrix &orientation) {
+void CCameraAutoMover::setPath(const FVector &srcV, const FVector &destV) {
_srcPos = srcV;
_destPos = destV;
_posDelta = _destPos - _srcPos;
float temp = 0.0;
- if (!_posDelta.normalize(temp)) {
- // Do the normalization, put the scale amount in temp,
- // but if it is unsuccessful, crash
- assert(temp);
- }
+ _posDelta.normalize(temp); // normalization won't happen if _posDelta is zero vector
+ // and that is okay
_distance = temp;
_active = false;
diff --git a/engines/titanic/star_control/camera_auto_mover.h b/engines/titanic/star_control/camera_auto_mover.h
index 25384632fa..db57627e33 100644
--- a/engines/titanic/star_control/camera_auto_mover.h
+++ b/engines/titanic/star_control/camera_auto_mover.h
@@ -32,7 +32,8 @@ namespace Titanic {
class CErrorCode;
class FMatrix;
const int nMoverTransitions = 32; // The number of vector transitions when doing a mover change is fixed
-enum MoverState {NOT_ACTIVE=0,MOVING=1,DONE_MOVING=2};
+enum MoverState { NOT_ACTIVE = 0, MOVING = 1, DONE_MOVING = 2 };
+
/**
* Base class for automatic movement of the starview camera
*/
@@ -59,14 +60,15 @@ public:
CCameraAutoMover();
virtual ~CCameraAutoMover() {}
- virtual void setPath2(const FVector &oldPos, const FVector &newPos,
- const FMatrix &oldOrientation, const FMatrix &newOrientation);
-
/**
* Clear src and dest orientation and set some default values for other fields
*/
- virtual void setOrientations(const FMatrix &srcOrient, const FMatrix &destOrient);
- virtual void setPath(const FVector &srcV, const FVector &destV, const FMatrix &orientation);
+ void clear();
+
+ /**
+ * Setup a transition to from one position to another
+ */
+ void setPath(const FVector &srcV, const FVector &destV);
/**
* Applys speeds to the mover. More than one application is usually done for several transitions
diff --git a/engines/titanic/star_control/fpose.cpp b/engines/titanic/star_control/fpose.cpp
index 6795622a93..f3ba1b17d0 100644
--- a/engines/titanic/star_control/fpose.cpp
+++ b/engines/titanic/star_control/fpose.cpp
@@ -223,7 +223,7 @@ FPose FPose::compose(const FMatrix &m) {
am._row2 = m._row2;
am._row3 = m._row3;
- fposeProd(*this,am,dm);
+ fposeProd(*this, am, dm);
return dm;
}
diff --git a/engines/titanic/star_control/fvector.cpp b/engines/titanic/star_control/fvector.cpp
index aeee2e877b..46094dbdfc 100644
--- a/engines/titanic/star_control/fvector.cpp
+++ b/engines/titanic/star_control/fvector.cpp
@@ -117,14 +117,14 @@ FPose FVector::getFrameTransform(const FVector &v) {
FVector vector1 = getAnglesAsVect();
matrix1.setRotationMatrix(X_AXIS, vector1._y * Rad2Deg);
matrix2.setRotationMatrix(Y_AXIS, vector1._z * Rad2Deg);
- fposeProd(matrix1,matrix2,matrix3);
+ fposeProd(matrix1, matrix2, matrix3);
matrix4 = matrix3.inverseTransform();
vector1 = v.getAnglesAsVect();
matrix1.setRotationMatrix(X_AXIS, vector1._y * Rad2Deg);
matrix2.setRotationMatrix(Y_AXIS, vector1._z * Rad2Deg);
- fposeProd(matrix1,matrix2,matrix3);
- fposeProd(matrix4,matrix3,matrix1);
+ fposeProd(matrix1, matrix2, matrix3);
+ fposeProd(matrix4, matrix3, matrix1);
return matrix1;
}
@@ -135,7 +135,7 @@ FPose FVector::formRotXY() const {
m1.setRotationMatrix(X_AXIS, v1._y * Rad2Deg);
m2.setRotationMatrix(Y_AXIS, v1._z * Rad2Deg);
FPose m3;
- fposeProd(m1,m2,m3);
+ fposeProd(m1, m2, m3);
return m3;
}
diff --git a/engines/titanic/star_control/marked_auto_mover.cpp b/engines/titanic/star_control/marked_auto_mover.cpp
index 0787c48de3..ae987aa8fc 100644
--- a/engines/titanic/star_control/marked_auto_mover.cpp
+++ b/engines/titanic/star_control/marked_auto_mover.cpp
@@ -26,9 +26,9 @@
namespace Titanic {
-void CMarkedAutoMover::setPath2(const FVector &oldPos, const FVector &newPos,
+void CMarkedAutoMover::setPathOrients(const FVector &oldPos, const FVector &newPos,
const FMatrix &oldOrientation, const FMatrix &newOrientation) {
- CCameraAutoMover::setPath2(oldPos, newPos, oldOrientation, newOrientation);
+ CCameraAutoMover::setPath(oldPos, newPos);
double distance = _distance;
_active = true;
diff --git a/engines/titanic/star_control/marked_auto_mover.h b/engines/titanic/star_control/marked_auto_mover.h
index 856df99c03..ca7fbf3b7f 100644
--- a/engines/titanic/star_control/marked_auto_mover.h
+++ b/engines/titanic/star_control/marked_auto_mover.h
@@ -41,7 +41,7 @@ private:
public:
virtual ~CMarkedAutoMover() {}
- virtual void setPath2(const FVector &oldPos, const FVector &newPos,
+ void setPathOrients(const FVector &oldPos, const FVector &newPos,
const FMatrix &oldOrientation, const FMatrix &newOrientation);
/**
diff --git a/engines/titanic/star_control/marked_camera_mover.cpp b/engines/titanic/star_control/marked_camera_mover.cpp
index ff9c055abb..df6edbec5f 100644
--- a/engines/titanic/star_control/marked_camera_mover.cpp
+++ b/engines/titanic/star_control/marked_camera_mover.cpp
@@ -32,13 +32,12 @@ CMarkedCameraMover::CMarkedCameraMover(const CNavigationInfo *src) :
CCameraMover(src) {
}
-
void CMarkedCameraMover::transitionBetweenPosOrients(const FVector &oldPos, const FVector &newPos,
const FMatrix &oldOrientation, const FMatrix &newOrientation) {
if (isLocked())
decLockCount();
- _autoMover.setPath2(oldPos, newPos, oldOrientation, newOrientation);
+ _autoMover.setPathOrients(oldPos, newPos, oldOrientation, newOrientation);
incLockCount();
}
diff --git a/engines/titanic/star_control/star_camera.cpp b/engines/titanic/star_control/star_camera.cpp
index cab29a99f4..4a5515f419 100644
--- a/engines/titanic/star_control/star_camera.cpp
+++ b/engines/titanic/star_control/star_camera.cpp
@@ -41,7 +41,7 @@ FMatrix *CStarCamera::_newOrientation;
CStarCamera::CStarCamera(const CNavigationInfo *data) :
_starLockState(ZERO_LOCKED), _mover(nullptr), _isMoved(false), _isInLockingProcess(false) {
- setupHandler(data);
+ setMoverType(data);
}
CStarCamera::CStarCamera(CViewport *src) :
@@ -69,7 +69,7 @@ bool CStarCamera::isNotInLockingProcess() {
}
CStarCamera::~CStarCamera() {
- deleteHandler();
+ removeMover();
}
void CStarCamera::proc2(const CViewport *src) {
@@ -246,7 +246,7 @@ FVector CStarCamera::proc30(int index, const FVector &v) {
}
FVector CStarCamera::proc31(int index, const FVector &v) {
- return _viewport.getRelativePosCentering2(index, v);
+ return _viewport.getRelativePosCenteringRaw(index, v);
}
void CStarCamera::setViewportAngle(const FPoint &angles) {
@@ -255,8 +255,6 @@ void CStarCamera::setViewportAngle(const FPoint &angles) {
if (isLocked())
return;
- _isInLockingProcess = false;
-
switch(_starLockState) {
case ZERO_LOCKED: {
FPose subX(X_AXIS, angles._y);
@@ -329,11 +327,11 @@ void CStarCamera::setViewportAngle(const FPoint &angles) {
diffV = tempV1;
m1 = diffV.formRotXY();
FPose m11;
- fposeProd(m1,subX,m11);
+ fposeProd(m1, subX, m11);
subX = m11.inverseTransform();
FPose m12;
- fposeProd(subX,subY,m12);
+ fposeProd(subX, subY, m12);
FMatrix m3 = _viewport.getOrientation();
tempV2 = _viewport._position;
@@ -391,7 +389,8 @@ void CStarCamera::setViewportAngle(const FPoint &angles) {
break;
}
- // TODO: should three stars locked do anything in this function? Error?
+ // All three stars are locked on in this case so the camera does not move
+ // in response to the users mouse movements
case THREE_LOCKED:
break;
}
@@ -403,12 +402,12 @@ bool CStarCamera::addLockedStar(const FVector v) {
CNavigationInfo data;
_mover->copyTo(&data);
- deleteHandler();
+ removeMover();
FVector &row = _lockedStarsPos[(int)_starLockState];
_starLockState = StarLockState((int)_starLockState + 1);
row = v;
- setupHandler(&data);
+ setMoverType(&data);
return true;
}
@@ -418,10 +417,10 @@ bool CStarCamera::removeLockedStar() {
CNavigationInfo data;
_mover->copyTo(&data);
- deleteHandler();
+ removeMover();
_starLockState = StarLockState((int)_starLockState - 1);
- setupHandler(&data);
+ setMoverType(&data);
return true;
}
@@ -437,7 +436,7 @@ void CStarCamera::save(SimpleFile *file, int indent) {
_viewport.save(file, indent);
}
-bool CStarCamera::setupHandler(const CNavigationInfo *src) {
+bool CStarCamera::setMoverType(const CNavigationInfo *src) {
CCameraMover *mover = nullptr;
switch (_starLockState) {
@@ -456,7 +455,7 @@ bool CStarCamera::setupHandler(const CNavigationInfo *src) {
}
if (mover) {
- assert(!_mover);
+ assert(!_mover); // removeMover() is usually called before this function so _mover is null
_mover = mover;
return true;
} else {
@@ -464,10 +463,11 @@ bool CStarCamera::setupHandler(const CNavigationInfo *src) {
}
}
-void CStarCamera::deleteHandler() {
+void CStarCamera::removeMover() {
if (_mover) {
delete _mover;
_mover = nullptr;
+ _isInLockingProcess = false;
}
}
@@ -505,7 +505,9 @@ bool CStarCamera::lockMarker1(FVector v1, FVector firstStarPosition, FVector v3)
FMatrix matrix = _viewport.getOrientation();
const FVector &pos = _viewport._position;
- _mover->transitionBetweenOrientations(v3, tempV, pos, matrix); // TODO: pos does not get used in this function
+ _mover->transitionBetweenOrientations(v3, tempV, pos, matrix); // TODO: pos does not get used in this function,
+ // i.e., _mover has CUnmarkedCameraMover handle which means
+ // CUnmarkedCameraMover::transitionBetweenOrientations gets called
CStarVector *sv = new CStarVector(this, firstStarPosition);
_mover->setVector(sv);
@@ -523,7 +525,7 @@ bool CStarCamera::lockMarker2(CViewport *viewport, const FVector &secondStarPosi
FVector starDelta = secondStarPosition - firstStarPosition;
FPose m10 = starDelta.formRotXY();
FPose m11;
- fposeProd(m10,m3,m11);
+ fposeProd(m10, m3, m11);
m10 = m11.inverseTransform();
@@ -570,7 +572,7 @@ bool CStarCamera::lockMarker2(CViewport *viewport, const FVector &secondStarPosi
FVector x1(viewPosition2);
FVector x2(m3._row1);
// Find the angle of rotation for m4._row1 that gives the minimum distance to viewPosition
- float minDegree = calcAngleForMinDist(x1,x2,minDistance);
+ float minDegree = calcAngleForMinDist(x1, x2, minDistance);
m3.rotVectAxisY((double)minDegree);
FPose m13;
@@ -613,7 +615,7 @@ bool CStarCamera::lockMarker3(CViewport *viewport, const FVector &thirdStarPosit
FMatrix newOr = viewport->getOrientation();
FMatrix oldOr = _viewport.getOrientation();
FVector newPos = viewport->_position;
- FVector oldPos = _viewport._position;
+ //FVector oldPos = _viewport._position;
// WORKAROUND: set old position to new position (1st argument), this prevents
// locking issues when locking the 3rd star. Fixes #9961.
diff --git a/engines/titanic/star_control/star_camera.h b/engines/titanic/star_control/star_camera.h
index 3ffb74950a..f2d27212fe 100644
--- a/engines/titanic/star_control/star_camera.h
+++ b/engines/titanic/star_control/star_camera.h
@@ -47,20 +47,22 @@ private:
private:
StarLockState _starLockState;
FMatrix _lockedStarsPos; // Each row represents the location of a locked star
- CCameraMover *_mover;
+ CCameraMover *_mover; // A marked or unmarked camera mover, contains an automover
CViewport _viewport;
- bool _isMoved; // TODO: determine if this is being used
+ bool _isMoved; // Used in CPetStarfield to determine if a star destination can be set
bool _isInLockingProcess; // The mover/view is homing in on a new star
private:
/**
- * Set up a handler
+ * Set Mover type to be unmarked or marked camera mover based on
+ * the number of stars currently locked (_starLockState)
+ * The CNavigationInfo data is used to initialize the mover
*/
- bool setupHandler(const CNavigationInfo *src);
+ bool setMoverType(const CNavigationInfo *src);
/**
- * Deletes any previous handler
+ * Deletes the previous mover handle
*/
- void deleteHandler();
+ void removeMover();
/**
* Return whether the handler is locked
diff --git a/engines/titanic/star_control/star_control.cpp b/engines/titanic/star_control/star_control.cpp
index cc414305eb..8464262b31 100644
--- a/engines/titanic/star_control/star_control.cpp
+++ b/engines/titanic/star_control/star_control.cpp
@@ -145,6 +145,18 @@ void CStarControl::newFrame() {
}
}
+bool CStarControl::isStarFieldMode() {
+ if (!_petControl)
+ _petControl = getPetControl();
+
+ if (_petControl) {
+
+ if (_starField.getMode() == MODE_STARFIELD)
+ return true;
+ }
+ return false;
+}
+
void CStarControl::doAction(StarControlAction action) {
if (!_enabled)
return;
diff --git a/engines/titanic/star_control/star_control.h b/engines/titanic/star_control/star_control.h
index e4072d7d62..7efd3869c1 100644
--- a/engines/titanic/star_control/star_control.h
+++ b/engines/titanic/star_control/star_control.h
@@ -70,6 +70,11 @@ public:
virtual void draw(CScreenManager *screenManager);
/**
+ * _starField is currently showing the starfield
+ */
+ bool isStarFieldMode();
+
+ /**
* Does an action in the star control
*/
void doAction(StarControlAction action);
diff --git a/engines/titanic/star_control/star_points1.cpp b/engines/titanic/star_control/star_points1.cpp
index d8a0bdc405..0328743a98 100644
--- a/engines/titanic/star_control/star_points1.cpp
+++ b/engines/titanic/star_control/star_points1.cpp
@@ -56,6 +56,7 @@ bool CStarPoints1::initialize() {
entry._z = sin(v2) * 3000000.0;
}
+ delete stream;
return true;
}
diff --git a/engines/titanic/star_control/star_points2.cpp b/engines/titanic/star_control/star_points2.cpp
index 23cef4ce4c..aa5444f16b 100644
--- a/engines/titanic/star_control/star_points2.cpp
+++ b/engines/titanic/star_control/star_points2.cpp
@@ -61,6 +61,7 @@ bool CStarPoints2::initialize() {
}
}
+ delete stream;
return true;
}
diff --git a/engines/titanic/star_control/unmarked_auto_mover.cpp b/engines/titanic/star_control/unmarked_auto_mover.cpp
index c84fbbab00..b8cd042e9c 100644
--- a/engines/titanic/star_control/unmarked_auto_mover.cpp
+++ b/engines/titanic/star_control/unmarked_auto_mover.cpp
@@ -28,7 +28,7 @@
namespace Titanic {
void CUnmarkedAutoMover::setOrientations(const FMatrix &srcOrient, const FMatrix &destOrient) {
- CCameraAutoMover::setOrientations(srcOrient, destOrient);
+ CCameraAutoMover::clear();
_orientationChanger.load(srcOrient, destOrient);
_transitionPercentInc = 0.1;
_transitionPercent = 0.0;
@@ -36,8 +36,8 @@ void CUnmarkedAutoMover::setOrientations(const FMatrix &srcOrient, const FMatrix
_active = true;
}
-void CUnmarkedAutoMover::setPath(const FVector &srcV, const FVector &destV, const FMatrix &orientation) {
- CCameraAutoMover::setPath(srcV, destV, orientation);
+void CUnmarkedAutoMover::setPathOrient(const FVector &srcV, const FVector &destV, const FMatrix &orientation) {
+ CCameraAutoMover::setPath(srcV, destV);
if (_distance > 8000.0) {
_active = true;
diff --git a/engines/titanic/star_control/unmarked_auto_mover.h b/engines/titanic/star_control/unmarked_auto_mover.h
index b7fb4e3c66..41c13311e0 100644
--- a/engines/titanic/star_control/unmarked_auto_mover.h
+++ b/engines/titanic/star_control/unmarked_auto_mover.h
@@ -37,9 +37,9 @@ public:
virtual void setOrientations(const FMatrix &srcOrient, const FMatrix &destOrient);
/**
- * Sets the path to animate movement between
+ * Sets the path and starting and ending orientations to animate movement between
*/
- virtual void setPath(const FVector &srcV, const FVector &destV, const FMatrix &orientation);
+ void setPathOrient(const FVector &srcV, const FVector &destV, const FMatrix &orientation);
virtual MoverState move(CErrorCode &errorCode, FVector &pos, FMatrix &orientation);
};
diff --git a/engines/titanic/star_control/unmarked_camera_mover.cpp b/engines/titanic/star_control/unmarked_camera_mover.cpp
index 200d549ce1..c879dc25e8 100644
--- a/engines/titanic/star_control/unmarked_camera_mover.cpp
+++ b/engines/titanic/star_control/unmarked_camera_mover.cpp
@@ -41,7 +41,7 @@ void CUnmarkedCameraMover::moveTo(const FVector &srcV, const FVector &destV, con
debugC(DEBUG_BASIC, kDebugStarfield, "Starfield move %s to %s", srcV.toString().c_str(),
destV.toString().c_str());
- _autoMover.setPath(srcV, destV, orientation);
+ _autoMover.setPathOrient(srcV, destV, orientation);
}
// TODO: v3 is unused
diff --git a/engines/titanic/star_control/viewport.cpp b/engines/titanic/star_control/viewport.cpp
index d277f4a2c5..e368dfa317 100644
--- a/engines/titanic/star_control/viewport.cpp
+++ b/engines/titanic/star_control/viewport.cpp
@@ -260,8 +260,8 @@ FVector CViewport::getRelativePosCentering(int index, const FVector &src) {
return dest;
}
-// TODO: Identical to getRelativePosCentering, was this meant to be different?
-FVector CViewport::getRelativePosCentering2(int index, const FVector &src) {
+// Similar to getRelativePosCentering, but uses the raw/transpose version of Pose
+FVector CViewport::getRelativePosCenteringRaw(int index, const FVector &src) {
FVector dest;
FPose pose = getRawPose();
FVector tv = src.matProdRowVect(pose);
diff --git a/engines/titanic/star_control/viewport.h b/engines/titanic/star_control/viewport.h
index d5c35b6317..082d063233 100644
--- a/engines/titanic/star_control/viewport.h
+++ b/engines/titanic/star_control/viewport.h
@@ -125,7 +125,7 @@ public:
FPose getRawPose();
FVector getRelativePosNoCentering(int index, const FVector &src);
FVector getRelativePosCentering(int index, const FVector &src);
- FVector getRelativePosCentering2(int index, const FVector &src);
+ FVector getRelativePosCenteringRaw(int index, const FVector &src);
/**
* All arguments are return values
diff --git a/engines/titanic/support/avi_surface.cpp b/engines/titanic/support/avi_surface.cpp
index bddbb9808e..4b60921e31 100644
--- a/engines/titanic/support/avi_surface.cpp
+++ b/engines/titanic/support/avi_surface.cpp
@@ -44,7 +44,7 @@ AVISurface::AVISurface(const CResourceKey &key) : _movieName(key.getString()) {
_videoSurface = nullptr;
_streamCount = 0;
_movieFrameSurface[0] = _movieFrameSurface[1] = nullptr;
- _framePixels = nullptr;
+ _framePixels = false;
_priorFrameTime = 0;
// Reset current frame. We need to keep track of frames separately from the decoder,
@@ -55,8 +55,15 @@ AVISurface::AVISurface(const CResourceKey &key) : _movieName(key.getString()) {
// Create a decoder
_decoder = new AVIDecoder();
- if (!_decoder->loadFile(_movieName))
+
+ // Load the video into it
+ if (_movieName == "y222.avi") {
+ // The y222.avi is the bells animation for the music room.
+ // It needs on the fly fixing for the video header
+ _decoder->loadStream(new y222());
+ } else if (!_decoder->loadFile(_movieName)) {
error("Could not open video - %s", key.getString().c_str());
+ }
_streamCount = _decoder->getTransparencyTrack() ? 2 : 1;
@@ -68,7 +75,6 @@ AVISurface::AVISurface(const CResourceKey &key) : _movieName(key.getString()) {
AVISurface::~AVISurface() {
if (_videoSurface)
_videoSurface->_flipVertically = false;
- delete _framePixels;
delete _movieFrameSurface[0];
delete _movieFrameSurface[1];
delete _decoder;
@@ -285,8 +291,7 @@ void AVISurface::setupDecompressor() {
}
if (!flag) {
- _framePixels = new Graphics::ManagedSurface(_decoder->getWidth(), _decoder->getHeight(),
- _decoder->getVideoTrack(0).getPixelFormat());
+ _framePixels = true;
} else if (idx == 0) {
// The original developers used a vertical flipped playback to indicate
// an incompatibility between source video and dest surface bit-depths,
@@ -486,6 +491,12 @@ bool AVISurface::playCutscene(const Rect &r, uint startFrame, uint endFrame) {
if (_currentFrame != ((int)startFrame - 1) || startFrame == 0) {
// Start video playback at the desired starting frame
+ if (startFrame > 0) {
+ // Give a chance for a key frame just prior to the start frame
+ // to be loaded first
+ setFrame(startFrame - 1);
+ }
+
setFrame(startFrame);
startAtFrame(startFrame);
_currentFrame = startFrame;
@@ -532,4 +543,28 @@ uint AVISurface::getBitDepth() const {
return _decoder->getVideoTrack(0).getBitCount();
}
+/*------------------------------------------------------------------------*/
+
+y222::y222() {
+ _innerStream = new File();
+ _innerStream->open("y222.avi");
+}
+
+y222::~y222() {
+ delete _innerStream;
+}
+
+uint32 y222::read(void *dataPtr, uint32 dataSize) {
+ int32 currPos = pos();
+ uint32 bytesRead = _innerStream->read(dataPtr, dataSize);
+
+ if (currPos <= 48 && (currPos + bytesRead) >= 52) {
+ byte *framesP = (byte *)dataPtr + (48 - currPos);
+ if (READ_LE_UINT32(framesP) == 1)
+ WRITE_LE_UINT32(framesP, 1085);
+ }
+
+ return bytesRead;
+}
+
} // End of namespace Titanic
diff --git a/engines/titanic/support/avi_surface.h b/engines/titanic/support/avi_surface.h
index cb2e562d54..3ee8c38c5c 100644
--- a/engines/titanic/support/avi_surface.h
+++ b/engines/titanic/support/avi_surface.h
@@ -23,6 +23,7 @@
#ifndef TITANIC_AVI_SURFACE_H
#define TITANIC_AVI_SURFACE_H
+#include "common/stream.h"
#include "video/avi_decoder.h"
#include "graphics/managed_surface.h"
#include "titanic/core/resource_key.h"
@@ -41,6 +42,37 @@ enum MovieFlag {
MOVIE_WAIT_FOR_FINISH = 0x10 // Let finish before playing next movie for object
};
+/**
+ * This implements a special read stream for the y222.avi video
+ * that fixes that totalFrames field of the header from it's
+ * incorrect value of 1 to a correct 1085.
+ */
+class y222 : virtual public Common::SeekableReadStream {
+private:
+ File *_innerStream;
+public:
+ y222();
+ virtual ~y222();
+
+ virtual uint32 read(void *dataPtr, uint32 dataSize);
+ virtual bool eos() const { return _innerStream->eos(); }
+ virtual int32 pos() const { return _innerStream->pos(); }
+ virtual int32 size() const { return _innerStream->size(); }
+ virtual bool seek(int32 offset, int whence = SEEK_SET) {
+ return _innerStream->seek(offset, whence);
+ }
+ virtual bool skip(uint32 offset) {
+ return _innerStream->skip(offset);
+ }
+ virtual char *readLine(char *s, size_t bufSize) {
+ return _innerStream->readLine(s, bufSize);
+ }
+ virtual Common::String readLine() {
+ return _innerStream->readLine();
+ }
+};
+
+
class AVIDecoder : public Video::AVIDecoder {
public:
AVIDecoder() {}
@@ -72,7 +104,7 @@ private:
CMovieRangeInfoList _movieRangeInfo;
int _streamCount;
Graphics::ManagedSurface *_movieFrameSurface[2];
- Graphics::ManagedSurface *_framePixels;
+ bool _framePixels;
double _frameRate;
int _currentFrame, _priorFrame;
uint32 _priorFrameTime;
@@ -152,6 +184,13 @@ public:
}
/**
+ * Sets whether the video is playing (versus paused)
+ */
+ virtual void setPlaying(bool playingFlag) {
+ _decoder->pauseVideo(!playingFlag);
+ }
+
+ /**
* Handle any movie events relevent for the frame
*/
virtual bool handleEvents(CMovieEventList &events);
diff --git a/engines/titanic/support/direct_draw.cpp b/engines/titanic/support/direct_draw.cpp
index 71a90ad00d..9559480a3b 100644
--- a/engines/titanic/support/direct_draw.cpp
+++ b/engines/titanic/support/direct_draw.cpp
@@ -64,6 +64,8 @@ DirectDrawManager::DirectDrawManager(TitanicEngine *vm, bool windowed) {
void DirectDrawManager::initVideo(int width, int height, int bpp, int numBackSurfaces) {
debugC(DEBUG_BASIC, kDebugGraphics, "Initialising video surfaces");
+ assert(numBackSurfaces == 0);
+
_directDraw._width = width;
_directDraw._numBackSurfaces = numBackSurfaces;
_directDraw._height = height;
@@ -81,10 +83,9 @@ void DirectDrawManager::initFullScreen() {
_directDraw.setDisplayMode(_directDraw._width, _directDraw._height,
_directDraw._bpp, 0);
+ // Set up the main surface to point to the screen
_mainSurface = new DirectDrawSurface();
_mainSurface->create(g_vm->_screen);
- _backSurfaces[0] = new DirectDrawSurface();
- _backSurfaces[0]->create(_directDraw._width, _directDraw._height, 32);
}
DirectDrawSurface *DirectDrawManager::createSurface(int w, int h, int bpp, int surfaceNum) {
diff --git a/engines/titanic/support/exe_resources.cpp b/engines/titanic/support/exe_resources.cpp
index 2b2c9c7635..b216ea5c26 100644
--- a/engines/titanic/support/exe_resources.cpp
+++ b/engines/titanic/support/exe_resources.cpp
@@ -27,12 +27,12 @@
namespace Titanic {
CExeResources::CExeResources() : _owner(nullptr), _field4(0), _field8(0),
- _fieldC(0), _field10(0), _field14(0), _field18(0) {
+ _fieldC(0), _field10(0), _field14(0), _vocabMode(VOCAB_MODE_NONE) {
}
-void CExeResources::reset(CScriptHandler *owner, int val1, int val2) {
+void CExeResources::reset(CScriptHandler *owner, int val1, VocabMode vocabMode) {
_owner = owner;
- _field18 = val2;
+ _vocabMode = vocabMode;
}
} // End of namespace Titanic
diff --git a/engines/titanic/support/exe_resources.h b/engines/titanic/support/exe_resources.h
index 993c34db97..382df39984 100644
--- a/engines/titanic/support/exe_resources.h
+++ b/engines/titanic/support/exe_resources.h
@@ -29,6 +29,8 @@ class CScriptHandler;
enum FileHandle { HANDLE_STDIN = 0, HANDLE_STDOUT = 1, HANDLE_STDERR = 2 };
+enum VocabMode { VOCAB_MODE_NONE = 0, VOCAB_MODE_EN = 3, VOCAB_MODE_DE = 5 };
+
class CExeResources {
public:
CScriptHandler *_owner;
@@ -37,14 +39,21 @@ public:
int _fieldC;
int _field10;
int _field14;
- int _field18;
+ VocabMode _vocabMode;
public:
CExeResources();
- void reset(CScriptHandler *owner, int val1, int val2);
+ void reset(CScriptHandler *owner, int val1, VocabMode vocabMode);
+
+ /**
+ * Tests whether the vocab mode equals the passed mode
+ */
+ bool isVocabMode(int mode) const { return _vocabMode == mode; }
- bool is18Equals(int val) const { return _field18 == val; }
- int get18() const { return _field18; }
+ /**
+ * Returns the vocab mode
+ */
+ VocabMode getVocabMode() const { return _vocabMode; }
};
} // End of namespace Titanic
diff --git a/engines/titanic/support/fixed_queue.h b/engines/titanic/support/fixed_queue.h
new file mode 100644
index 0000000000..dbcbeb669c
--- /dev/null
+++ b/engines/titanic/support/fixed_queue.h
@@ -0,0 +1,143 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * 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 source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef TITANIC_FIXED_QUEUE_H
+#define TITANIC_FIXED_QUEUE_H
+
+#include "common/scummsys.h"
+#include "common/array.h"
+
+namespace Titanic {
+
+/**
+ * Extremly simple fixed size queue class.
+ */
+template<class T, uint MAX_SIZE = 10>
+class FixedQueue {
+ typedef uint size_type;
+protected:
+ Common::Array<T> _data;
+ size_type _topIndex;
+public:
+ FixedQueue<T, MAX_SIZE>() : _topIndex(0) {
+ _data.reserve(MAX_SIZE);
+ }
+
+ /**
+ * Returns the size of the queue in use
+ */
+ size_type size() const { return _data.size() - _topIndex; }
+
+ /**
+ * Returns the amount of free remaining space in the queue
+ */
+ size_type freeSize() const { return MAX_SIZE - size(); }
+
+ /**
+ * Returns true if the queue is empty
+ */
+ bool empty() const {
+ return size() == 0;
+ }
+
+ /**
+ * Returns true if the queue is full
+ */
+ bool full() const {
+ return freeSize() == 0;
+ }
+
+ /**
+ * Clears the queue
+ */
+ void clear() {
+ _data.clear();
+ _topIndex = 0;
+ }
+
+ /**
+ * If the tail of the queue in use has reached the end of the internal
+ * array, pushes all pending data back to the start of the array
+ */
+ void compact() {
+ if (_data.size() == MAX_SIZE && _topIndex > 0) {
+ if (_topIndex < MAX_SIZE)
+ Common::copy(&_data[_topIndex], &_data[0] + MAX_SIZE, &_data[0]);
+ _data.resize(size());
+ _topIndex = 0;
+ }
+ }
+
+ /**
+ * Adds a value to the end of the queue
+ */
+ void push(const T &v) {
+ assert(size() < MAX_SIZE);
+ compact();
+ _data.push_back(v);
+ }
+
+ /**
+ * Returns the top value on the queue
+ */
+ const T &top() const {
+ assert(size() > 0);
+ return _data[_topIndex];
+ }
+
+ /**
+ * Returns the top value on the queue
+ */
+ T &top() {
+ assert(size() > 0);
+ return _data[_topIndex];
+ }
+
+ /**
+ * Pops the top value off the queue
+ */
+ T pop() {
+ T tmp = top();
+ ++_topIndex;
+ return tmp;
+ }
+
+ /**
+ * Returns values from within the queue without popping them
+ */
+ T &operator[](size_type i) {
+ assert(i < size());
+ return _data[_topIndex + i];
+ }
+
+ /**
+ * Returns values from within the queue without popping them
+ */
+ const T &operator[](size_type i) const {
+ assert(i < size());
+ return _data[_topIndex + i];
+ }
+};
+
+} // End of namespace Titanic
+
+#endif
diff --git a/engines/titanic/support/movie.cpp b/engines/titanic/support/movie.cpp
index 56e7b7e6f2..8c130ddb6f 100644
--- a/engines/titanic/support/movie.cpp
+++ b/engines/titanic/support/movie.cpp
@@ -40,8 +40,7 @@ namespace Titanic {
CMovieList *CMovie::_playingMovies;
CVideoSurface *CMovie::_movieSurface;
-CMovie::CMovie() : ListItem(), _handled(false), _hasVideoFrame(false),
- _hasAudioTiming(false) {
+CMovie::CMovie() : ListItem(), _handled(false), _hasVideoFrame(false) {
}
CMovie::~CMovie() {
@@ -200,6 +199,10 @@ void OSMovie::setFrameRate(double rate) {
_aviSurface.setFrameRate(rate);
}
+void OSMovie::setPlaying(bool playingFlag) {
+ _aviSurface.setPlaying(playingFlag);
+}
+
Graphics::ManagedSurface *OSMovie::duplicateTransparency() const {
return _aviSurface.duplicateTransparency();
}
diff --git a/engines/titanic/support/movie.h b/engines/titanic/support/movie.h
index cedf7c4d20..36a76654e4 100644
--- a/engines/titanic/support/movie.h
+++ b/engines/titanic/support/movie.h
@@ -50,7 +50,6 @@ protected:
public:
bool _handled;
bool _hasVideoFrame;
- bool _hasAudioTiming;
public:
static CMovieList *_playingMovies;
static CVideoSurface *_movieSurface;
@@ -139,6 +138,11 @@ public:
virtual void setFrameRate(double rate) = 0;
/**
+ * Sets whether the video is playing (versus paused)
+ */
+ virtual void setPlaying(bool playingFlag) = 0;
+
+ /**
* Creates a duplicate of the transparency surface
*/
virtual Graphics::ManagedSurface *duplicateTransparency() const = 0;
@@ -247,6 +251,11 @@ public:
virtual void setFrameRate(double rate);
/**
+ * Sets whether the video is playing (versus paused)
+ */
+ virtual void setPlaying(bool playingFlag);
+
+ /**
* Creates a duplicate of the transparency surface
*/
virtual Graphics::ManagedSurface *duplicateTransparency() const;
diff --git a/engines/titanic/titanic.cpp b/engines/titanic/titanic.cpp
index 67bdf82fa0..e0e4a07ce6 100644
--- a/engines/titanic/titanic.cpp
+++ b/engines/titanic/titanic.cpp
@@ -56,10 +56,12 @@
namespace Titanic {
TitanicEngine *g_vm;
+Common::Language g_language;
TitanicEngine::TitanicEngine(OSystem *syst, const TitanicGameDescription *gameDesc)
: _gameDescription(gameDesc), Engine(syst), _randomSource("Titanic") {
g_vm = this;
+ g_language = getLanguage();
_debugger = nullptr;
_events = nullptr;
_filesManager = nullptr;
@@ -69,6 +71,7 @@ TitanicEngine::TitanicEngine(OSystem *syst, const TitanicGameDescription *gameDe
_scriptHandler = nullptr;
_script = nullptr;
CMusicRoom::_musicHandler = nullptr;
+ _loadSaveSlot = -1;
// Set up debug channels
DebugMan.addDebugChannel(kDebugCore, "core", "Core engine debug level");
@@ -119,6 +122,8 @@ bool TitanicEngine::initialize() {
setItemNames();
setRoomNames();
+ syncSoundSettings();
+
_window->applicationStarting();
return true;
}
@@ -186,12 +191,16 @@ void TitanicEngine::setRoomNames() {
bool TitanicEngine::canLoadGameStateCurrently() {
CGameManager *gameManager = _window->_gameManager;
CScreenManager *screenMan = CScreenManager::_screenManagerPtr;
+
+ if (!gameManager)
+ // Allow loading from copyright screen and continue dialogs
+ return true;
if (!_window->_inputAllowed)
return false;
if (screenMan && screenMan->_inputHandler->isLocked())
return false;
- if (!gameManager || !gameManager->isntTransitioning())
+ if (!gameManager->isntTransitioning())
return false;
CProjectItem *project = gameManager->_project;
@@ -218,7 +227,11 @@ bool TitanicEngine::canSaveGameStateCurrently() {
}
Common::Error TitanicEngine::loadGameState(int slot) {
- _window->_project->loadGame(slot);
+ CGameManager *gameManager = _window->_gameManager;
+ if (!gameManager)
+ _loadSaveSlot = slot;
+ else
+ _window->_project->loadGame(slot);
return Common::kNoError;
}
@@ -258,6 +271,17 @@ CString TitanicEngine::getSavegameName(int slot) {
return CString();
}
+void TitanicEngine::syncSoundSettings() {
+ Engine::syncSoundSettings();
+
+ if (_window->_project) {
+ CPetControl *pet = _window->_project->getPetControl();
+ if (pet) {
+ pet->syncSoundSettings();
+ }
+ }
+}
+
void TitanicEngine::GUIError(const char *msg, ...) {
char buffer[STRINGBUFLEN];
va_list va;
diff --git a/engines/titanic/titanic.h b/engines/titanic/titanic.h
index c49a13747f..5efefe41bd 100644
--- a/engines/titanic/titanic.h
+++ b/engines/titanic/titanic.h
@@ -63,8 +63,6 @@ namespace Titanic {
#define MAX_SAVES 99
-#define SOUND(enName, deName) (g_vm->isGerman() ? deName : enName)
-
// If enabled, fixes an original bug where dispensed chickens weren't
// meant to be hot unless the Yellow fuse was left in the Fusebox.
// This is being left disabled for now, since most walkthroughs for
@@ -105,7 +103,6 @@ private:
void setRoomNames();
protected:
const TitanicGameDescription *_gameDescription;
- int _loadSaveSlot;
// Engine APIs
virtual void initializePath(const Common::FSNode &gamePath);
@@ -130,6 +127,7 @@ public:
StringArray _roomNames;
Strings _strings;
CString _stateRoomExitView;
+ int _loadSaveSlot;
public:
TitanicEngine(OSystem *syst, const TitanicGameDescription *gameDesc);
virtual ~TitanicEngine();
@@ -156,6 +154,11 @@ public:
virtual Common::Error saveGameState(int slot, const Common::String &desc);
/**
+ * Handles updates to the sound levels
+ */
+ virtual void syncSoundSettings();
+
+ /**
* Gets the game features
*/
uint32 getFeatures() const;
diff --git a/engines/titanic/translation.h b/engines/titanic/translation.h
new file mode 100644
index 0000000000..c34e557208
--- /dev/null
+++ b/engines/titanic/translation.h
@@ -0,0 +1,36 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * 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 source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef TITANIC_TRANSLATION_H
+#define TITANIC_TRANSLATION_H
+
+#include "common/language.h"
+
+namespace Titanic {
+
+#define TRANSLATE(enVal, deVal) (g_language == Common::DE_DEU ? deVal : enVal)
+
+extern Common::Language g_language;
+
+} // End of namespace Titanic
+
+#endif /* TITANIC_TRANSLATION_H */
diff --git a/engines/titanic/true_talk/barbot_script.cpp b/engines/titanic/true_talk/barbot_script.cpp
index be1c73b1e9..430330a35a 100644
--- a/engines/titanic/true_talk/barbot_script.cpp
+++ b/engines/titanic/true_talk/barbot_script.cpp
@@ -24,22 +24,34 @@
#include "titanic/true_talk/barbot_script.h"
#include "titanic/true_talk/true_talk_manager.h"
#include "titanic/titanic.h"
+#include "titanic/translation.h"
namespace Titanic {
-static const int STATE_ARRAY[7] = {
- 0xCAB0, 0xCAB2, 0xCAB3, 0xCAB4, 0xCAB5, 0xCAB6, 0xCAB7
+static const int STATE_ARRAY_EN[7] = {
+ 51888, 51890, 51891, 51892, 51893, 51894, 51895
+};
+static const int STATE_ARRAY_DE[7] = {
+ 51903, 51905, 51906, 51907, 51908, 51909, 51910
};
-static const uint ARRAY1[] = {
+static const uint ARRAY1_EN[23] = {
0, 50033, 50044, 50045, 50046, 50047, 50048, 50049,
50050, 50051, 50034, 50035, 50036, 50037, 50038, 50039,
50040, 50041, 50042, 50043, 50411, 0
};
+static const uint ARRAY1_DE[23] = {
+ 0, 50033, 50044, 50045, 50046, 50047, 50048, 50049, 50050,
+ 50051, 50034, 50035, 50036, 50037, 50038, 50039, 50040,
+ 50041, 50042, 50043, 50421, 0, 0
+};
-static const uint ARRAY2[] = {
+static const uint ARRAY2_EN[10] = {
51899, 51900, 51901, 51902, 51903, 51904, 51905, 51906, 51907, 0
};
+static const uint ARRAY2_DE[10] = {
+ 51914, 51915, 51916, 51917, 51918, 51919, 51920, 51921, 51922, 0
+};
BarbotScript::BarbotScript(int val1, const char *charClass, int v2,
const char *charName, int v3, int val2, int v4, int v5, int v6, int v7) :
@@ -74,9 +86,9 @@ int BarbotScript::chooseResponse(const TTroomScript *roomScript, const TTsentenc
if (tag == MKTAG('D', 'N', 'A', '1') || tag == MKTAG('H', 'H', 'G', 'Q') ||
tag == MKTAG('A', 'N', 'S', 'W') || tag == MKTAG('S', 'U', 'M', 'S')) {
if (_state < 7) {
- addResponse(STATE_ARRAY[_state++]);
+ addResponse(TRANSLATE(STATE_ARRAY_EN[_state++], STATE_ARRAY_DE[_state++]));
} else {
- selectResponse(51896);
+ selectResponse(TRANSLATE(51896, 51911));
setState(1);
_state = 0;
}
@@ -142,7 +154,11 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent
if (isState9()) {
if (sentence->localWord("visioncenter") || sentence->localWord("brain") ||
sentence->contains("vision") || sentence->contains("visual") ||
- sentence->contains("brain") || sentence->contains("crystal")) {
+ sentence->contains("brain") || sentence->contains("crystal") ||
+ sentence->contains("gesichtsmodul") || sentence->contains("sehmodul") ||
+ sentence->contains("gesichtszentrum") || sentence->contains("hirn") ||
+ sentence->contains("hirnstueck")
+ ) {
if (CTrueTalkManager::getStateValue(2)) {
addResponse(getDialogueId(251003));
applyResponse();
@@ -151,40 +167,40 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent
}
}
- if (sentence->contains("goldfish")) {
+ if (sentence->contains("goldfish") || sentence->contains("goldfisch")) {
addResponse(getDialogueId(250184));
applyResponse();
return 2;
}
- dialogueId = ARRAY1[getRandomNumber(20)];
- if (!ARRAY2[_arrIndex])
+ dialogueId = TRANSLATE(ARRAY1_EN[getRandomNumber(20)], ARRAY1_DE[getRandomNumber(20)]);
+ if (!TRANSLATE(ARRAY2_EN[_arrIndex], ARRAY2_DE[_arrIndex]))
_arrIndex = 0;
if (_arrIndex) {
- dialogueId = ARRAY2[_arrIndex++];
+ dialogueId = TRANSLATE(ARRAY2_EN[_arrIndex++], ARRAY2_DE[_arrIndex++]);
} else if (getRandomNumber(100) > 35) {
- dialogueId = ARRAY2[0];
+ dialogueId = TRANSLATE(ARRAY2_EN[0], ARRAY2_DE[0]);
_arrIndex = 1;
} else if (getRandomNumber(100) > 60) {
switch (sentence->_category) {
case 2:
- dialogueId = 51914;
+ dialogueId = TRANSLATE(51914, 51929);
break;
case 3:
- dialogueId = 51911;
+ dialogueId = TRANSLATE(51911, 51926);
break;
case 4:
- dialogueId = 51913;
+ dialogueId = TRANSLATE(51913, 51928);
break;
case 5:
- dialogueId = 51912;
+ dialogueId = TRANSLATE(51912, 51927);
break;
case 6:
- dialogueId = 51915;
+ dialogueId = TRANSLATE(51915, 51930);
break;
case 7:
- dialogueId = 51909;
+ dialogueId = TRANSLATE(51909, 51924);
break;
default:
break;
@@ -215,56 +231,60 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent
if (!val34) {
goto done;
- } else if (val34 > 50357) {
+ } else if (val34 > TRANSLATE(50357, 50366)) {
goto done;
- } else if (val34 == 50357) {
- return applySentenceIds(50358, -1);
+ } else if (val34 == TRANSLATE(50357, 50366)) {
+ return applySentenceIds(TRANSLATE(50358, 50367), -1);
}
switch (val34) {
case 1:
if (flag)
- return applySentenceIds(51898, 2);
+ return applySentenceIds(TRANSLATE(51898, 51913), 2);
if (flag2)
- return applySentenceIds(51897);
+ return applySentenceIds(TRANSLATE(51897, 51912));
break;
case 2:
if (flag)
- return applySentenceIds(51897);
+ return applySentenceIds(TRANSLATE(51897, 51912));
break;
case 3:
- if (sentence->localWord("useless") || sentence->contains("useless"))
- return applySentenceIds(50824);
+ if (sentence->localWord("useless") || sentence->contains("useless") ||
+ sentence->contains("hoffnungsloser fall"))
+ return applySentenceIds(TRANSLATE(50824, 50837));
break;
case 4:
if (flag)
- return applySentenceIds(getRandomBit() ? 50512 : 51642);
+ return applySentenceIds(getRandomBit() ?
+ TRANSLATE(50512, 50522) : TRANSLATE(51642, 51657));
else if (flag2)
- return applySentenceIds(getRandomBit() ? 50511 : 51643);
+ return applySentenceIds(getRandomBit() ?
+ TRANSLATE(50511, 50521) : TRANSLATE(51643, 51658));
break;
case 5:
if (flag)
- return applySentenceIds(50829, 6);
+ return applySentenceIds(TRANSLATE(50829, 50842), 6);
if (flag2)
- return applySentenceIds(50828);
+ return applySentenceIds(TRANSLATE(50828, 50841));
break;
case 6:
if (flag)
- return applySentenceIds(50831);
+ return applySentenceIds(TRANSLATE(50831, 50844));
if (flag2)
- return applySentenceIds(50830);
+ return applySentenceIds(TRANSLATE(50830, 50843));
break;
case 7:
- if (flag2 || sentence->contains("never"))
- return applySentenceIds(51553);
- if (flag || sentence->contains("nicest"))
- return applySentenceIds(51554);
+ if (flag2 || sentence->contains("never") || sentence->contains("niemals") ||
+ sentence->contains("nie"))
+ return applySentenceIds(TRANSLATE(51553, 51568));
+ if (flag || sentence->contains("nicest") || sentence->contains("schoenste"))
+ return applySentenceIds(TRANSLATE(51554, 51569));
break;
case 8:
if (flag)
- return applySentenceIds(50961);
+ return applySentenceIds(TRANSLATE(50961, 50974));
if (flag2)
- return applySentenceIds(50960);
+ return applySentenceIds(TRANSLATE(50960, 50973));
break;
case 9:
if (flag)
@@ -299,7 +319,7 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent
return applySentenceIds(getDialogueId(250946));
break;
case 15:
- if (flag || sentence->contains("or")) {
+ if (flag || sentence->contains("or") || sentence->contains("oder")) {
return applySentenceIds(getDialogueId(250526), 16);
} else {
if (g_vm->_trueTalkManager->_quotesTree.search(
@@ -311,9 +331,9 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent
break;
case 17:
if (flag) {
- return applySentenceIds(50382);
+ return applySentenceIds(TRANSLATE(50382, 50391));
} else if (flag2) {
- return applySentenceIds(51423);
+ return applySentenceIds(TRANSLATE(51423, 51438));
}
// Intentional fall-through
@@ -327,15 +347,15 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent
return applySentenceIds(getDialogueId(250565), 20);
case 20:
if (flag)
- return applySentenceIds(50307);
+ return applySentenceIds(TRANSLATE(50307, 50315));
if (flag2)
- return applySentenceIds(50306);
+ return applySentenceIds(TRANSLATE(50306, 50314));
break;
case 21:
if (flag)
- return applySentenceIds(50359);
+ return applySentenceIds(TRANSLATE(50359, 50368));
if (flag2)
- return applySentenceIds(50357);
+ return applySentenceIds(TRANSLATE(50357, 50366));
break;
case 23:
if (val2C == 6 || val2C == 10)
@@ -344,7 +364,10 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent
case 24:
if (sentence->contains("do not know")
|| sentence->contains("no idea")
- || sentence->contains("a clue")) {
+ || sentence->contains("a clue")
+ || sentence->contains("keine ahnung")
+ || sentence->contains("weiss nicht")
+ || sentence->contains("keinen schimmer")) {
return applySentenceIds(getDialogueId(250553));
} else {
return applySentenceIds(getDialogueId(250552));
@@ -354,7 +377,7 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent
if (flag || val2C == 10)
applySentenceIds(getDialogueId(251899), 26);
else if (flag2)
- return applySentenceIds(50215);
+ return applySentenceIds(TRANSLATE(50215, 50223));
break;
case 26:
if (g_vm->_trueTalkManager->_quotesTree.search(
@@ -387,7 +410,7 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent
return applySentenceIds(getDialogueId(250642));
break;
case 33:
- return applySentenceIds(50763);
+ return applySentenceIds(TRANSLATE(50763, 50776));
case 34:
if (flag)
return applySentenceIds(getDialogueId(251622));
@@ -400,15 +423,15 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent
break;
case 36:
if (flag)
- return applySentenceIds(50335);
+ return applySentenceIds(TRANSLATE(50335, 50344));
if (flag2)
- return applySentenceIds(50334);
+ return applySentenceIds(TRANSLATE(50334, 50343));
break;
case 37:
if (flag)
- return applySentenceIds(50217);
+ return applySentenceIds(TRANSLATE(50217, 50225));
if (flag2)
- return applySentenceIds(50153);
+ return applySentenceIds(TRANSLATE(50153, 50157));
break;
case 38:
return applySentenceIds(getDialogueId(250637));
@@ -426,9 +449,9 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent
break;
case 43:
if (flag)
- return applySentenceIds(50416, -1);
+ return applySentenceIds(TRANSLATE(50416, 50426), -1);
if (flag2)
- return applySentenceIds(50415, -1);
+ return applySentenceIds(TRANSLATE(50415, 50425), -1);
break;
case 44:
if (flag)
@@ -443,91 +466,99 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent
if (sentence->localWord("summer")
|| sentence->contains("summer")
|| sentence->localWord("autumn")
- || sentence->contains("autumn")) {
- return applySentenceIds(50743);
+ || sentence->contains("autumn")
+ || sentence->contains("herbst")) {
+ return applySentenceIds(TRANSLATE(50743, 50755));
} else if (sentence->localWord("winter") || sentence->contains("winter")) {
- return applySentenceIds(50696);
+ return applySentenceIds(TRANSLATE(50696, 50708));
} else {
- return applySentenceIds(50225);
+ return applySentenceIds(TRANSLATE(50225, 50233));
}
break;
case 46:
if (val2C == 7 || val2C == 10)
- return applySentenceIds(50698);
+ return applySentenceIds(TRANSLATE(50698, 50710));
break;
case 47:
if (flag || flag2 || val2C == 6)
- return applySentenceIds(50717);
+ return applySentenceIds(TRANSLATE(50717, 50729));
break;
case 48:
if (flag)
- return applySentenceIds(50710);
+ return applySentenceIds(TRANSLATE(50710, 50722));
if (flag2)
- return applySentenceIds(50225);
+ return applySentenceIds(TRANSLATE(50225, 50233));
break;
case 49:
- if (sentence->localWord("scraliontis") || sentence->contains("scraliontis"))
- return applySentenceIds(50711);
+ if (sentence->localWord("scraliontis") || sentence->contains("scraliontis") ||
+ sentence->contains("skraliontis"))
+ return applySentenceIds(TRANSLATE(50711, 50723));
if (sentence->localWord("brobostigon") || sentence->contains("brobostigon"))
- return applySentenceIds(50712);
+ return applySentenceIds(TRANSLATE(50712, 50724));
break;
case 50:
- return applySentenceIds(50713);
+ return applySentenceIds(TRANSLATE(50713, 50725));
case 51:
if (flag)
- return applySentenceIds(50715);
+ return applySentenceIds(TRANSLATE(50715, 50727));
if (flag2)
- return applySentenceIds(50714);
+ return applySentenceIds(TRANSLATE(50714, 50726));
break;
case 52:
if (sentence->localWord("note") || sentence->contains("note"))
- return applySentenceIds(50716);
- return applySentenceIds(50210);
+ return applySentenceIds(TRANSLATE(50716, 50728));
+ return applySentenceIds(TRANSLATE(50210, 50218));
case 53:
- return applySentenceIds(50210);
+ return applySentenceIds(TRANSLATE(50210, 50218));
case 54:
if (getDialRegion(0) != 0) {
- if (val2C == 12)
- return applySentenceIds(50174);
+ if (val2C)
+ return applySentenceIds(TRANSLATE(50174, 50178));
else
- return applySentenceIds(50300);
+ return applySentenceIds(TRANSLATE(50300, 50308));
} else if (val2C == 7 || val2C == 10) {
- return applySentenceIds(50871);
+ return applySentenceIds(TRANSLATE(50871, 50884));
}
break;
case 55:
if (flag)
- return applySentenceIds(50302);
+ return applySentenceIds(TRANSLATE(50302, 50310));
if (flag2)
- return applySentenceIds(50301);
+ return applySentenceIds(TRANSLATE(50301, 50309));
break;
case 56:
if (flag)
- return applySentenceIds(50304);
+ return applySentenceIds(TRANSLATE(50304, 50312));
if (flag2)
- return applySentenceIds(50303);
+ return applySentenceIds(TRANSLATE(50303, 50311));
break;
case 57:
if (sentence->localWord("mustard")
|| sentence->contains("mustard")
|| sentence->localWord("tomato")
- || sentence->contains("tomato"))
- return applySentenceIds(50320);
+ || sentence->contains("tomato")
+ || sentence->contains("senf")
+ || sentence->contains("tomate"))
+ return applySentenceIds(TRANSLATE(50320, 50329));
if (sentence->localWord("sauce")
|| sentence->localWord("puree")
|| sentence->contains("sauce")
|| sentence->contains("puree")
|| sentence->contains("bird")
- || sentence->contains("starling")) {
- applySentenceIds(50321);
+ || sentence->contains("starling")
+ || sentence->contains("sosse")
+ || sentence->contains("pueree")
+ || sentence->contains("vogel")
+ || sentence->contains("staren")) {
+ applySentenceIds(TRANSLATE(50321, 50330));
CTrueTalkManager::triggerAction(30, 0);
return 2;
}
- return applySentenceIds(50320);
+ return applySentenceIds(TRANSLATE(50320, 50329));
case 58:
if (val2C == 6 || val2C == 10)
- return applySentenceIds(50880);
+ return applySentenceIds(TRANSLATE(50880, 50893));
break;
case 59:
if (flag) {
@@ -581,7 +612,7 @@ int BarbotScript::process(const TTroomScript *roomScript, const TTsentence *sent
return applySentenceIds(getDialogueId(250631));
break;
case 65:
- if (sentence->localWord("now") || sentence->localWord("soonh"))
+ if (sentence->localWord("now") || sentence->localWord("soon"))
return applySentenceIds(getDialogueId(250424));
return applySentenceIds(getDialogueId(250506));
case 66:
@@ -623,7 +654,7 @@ done:
updateCurrentDial(true);
- if (sentence->contains("goldfish")) {
+ if (sentence->contains("goldfish") || sentence->contains("goldfisch")) {
addResponse(250184);
} else if ((sentence->localWord("puree") || sentence->localWord("pureed"))
&& sentence->localWord("parrot")) {
diff --git a/engines/titanic/true_talk/bellbot_script.cpp b/engines/titanic/true_talk/bellbot_script.cpp
index 7496bd5fc1..84d5c59713 100644
--- a/engines/titanic/true_talk/bellbot_script.cpp
+++ b/engines/titanic/true_talk/bellbot_script.cpp
@@ -26,6 +26,7 @@
#include "titanic/pet_control/pet_control.h"
#include "titanic/core/node_item.h"
#include "titanic/titanic.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -41,6 +42,10 @@ static const RoomDialogueId ROOM_DIALOGUE_IDS[] = {
{ 0, 0 }
};
+static const uint PRERESPONSE_IDS_DE[] = {
+ 0
+};
+
BellbotScript::BellbotScript(int val1, const char *charClass, int v2,
const char *charName, int v3, int val2) :
TTnpcScript(val1, charClass, v2, charName, v3, val2, -1, -1, -1, 0),
@@ -89,75 +94,78 @@ int BellbotScript::process(const TTroomScript *roomScript, const TTsentence *sen
if (getValue(1) <= 2)
updateCurrentDial(1);
- // Handle room specific sentences
- switch (roomScript->_scriptId) {
- case 101:
- if (getValue(2) == 1) {
- result = processEntries(&_sentences[11], 0, roomScript, sentence);
- }
- break;
+ if (g_language != Common::DE_DEU) {
+ // Handle room specific sentences
+ switch (roomScript->_scriptId) {
+ case 101:
+ if (getValue(2) == 1) {
+ result = processEntries(&_sentences[11], 0, roomScript, sentence);
+ }
+ break;
- case 107:
- result = processEntries(&_sentences[5], 0, roomScript, sentence);
- break;
+ case 107:
+ result = processEntries(&_sentences[5], 0, roomScript, sentence);
+ break;
- case 108:
- result = processEntries(&_sentences[7], 0, roomScript, sentence);
- break;
+ case 108:
+ result = processEntries(&_sentences[7], 0, roomScript, sentence);
+ break;
- case 109:
- result = processEntries(&_sentences[13], 0, roomScript, sentence);
- break;
+ case 109:
+ result = processEntries(&_sentences[13], 0, roomScript, sentence);
+ break;
- case 110:
- result = processEntries(&_sentences[16], 0, roomScript, sentence);
- break;
+ case 110:
+ result = processEntries(&_sentences[16], 0, roomScript, sentence);
+ break;
- case 111:
- result = processEntries(&_sentences[10], 0, roomScript, sentence);
- break;
+ case 111:
+ result = processEntries(&_sentences[10], 0, roomScript, sentence);
+ break;
- case 112:
- result = processEntries(&_sentences[15], 0, roomScript, sentence);
- break;
+ case 112:
+ result = processEntries(&_sentences[15], 0, roomScript, sentence);
+ break;
- case 113:
- result = processEntries(&_sentences[9], 0, roomScript, sentence);
- break;
+ case 113:
+ result = processEntries(&_sentences[9], 0, roomScript, sentence);
+ break;
- case 114:
- result = processEntries(&_sentences[18], 0, roomScript, sentence);
- break;
+ case 114:
+ result = processEntries(&_sentences[18], 0, roomScript, sentence);
+ break;
- case 115:
- result = processEntries(&_sentences[12], 0, roomScript, sentence);
- break;
+ case 115:
+ result = processEntries(&_sentences[12], 0, roomScript, sentence);
+ break;
- case 116:
- result = processEntries(&_sentences[8], 0, roomScript, sentence);
- break;
+ case 116:
+ result = processEntries(&_sentences[8], 0, roomScript, sentence);
+ break;
- case 117:
- result = processEntries(&_sentences[6], 0, roomScript, sentence);
- break;
+ case 117:
+ result = processEntries(&_sentences[6], 0, roomScript, sentence);
+ break;
- case 123:
- result = processEntries(&_sentences[17], 0, roomScript, sentence);
- break;
+ case 123:
+ result = processEntries(&_sentences[17], 0, roomScript, sentence);
+ break;
- case 125:
- result = processEntries(&_sentences[14], 0, roomScript, sentence);
- break;
+ case 125:
+ result = processEntries(&_sentences[14], 0, roomScript, sentence);
+ break;
- case 131:
- if (getValue(26) == 0) {
- result = processEntries(&_sentences[getValue(6) ? 5 : 4], 0, roomScript, sentence);
+ case 131:
+ if (getValue(26) == 0) {
+ result = processEntries(&_sentences[getValue(6) ? 5 : 4], 0, roomScript, sentence);
+ }
+ break;
}
- break;
+
+ if (result == 2)
+ return 2;
}
- if (result == 2)
- return 2;
if (sentence->contains("pretend you summoned yourself") ||
sentence->contains("pretend you just summoned yourself")) {
if (scriptChanged(roomScript, 157) == 2)
@@ -193,20 +201,38 @@ int BellbotScript::process(const TTroomScript *roomScript, const TTsentence *sen
}
if (sentence->contains("what should i do here")
- || sentence->contains("what do i do here")
- || sentence->contains("what shall i do in here")
- || sentence->contains("what shall i do in this room")
- || sentence->contains("what should i do in this room")
- || sentence->contains("what am i supposed to do in here")
- || sentence->contains("what should i do in here")
- || sentence->contains("what do i do in this room")) {
+ || sentence->contains("what do i do here")
+ || sentence->contains("what shall i do in here")
+ || sentence->contains("what shall i do in this room")
+ || sentence->contains("what should i do in this room")
+ || sentence->contains("what am i supposed to do in here")
+ || sentence->contains("what should i do in here")
+ || sentence->contains("what do i do in this room")
+ || sentence->localWord("doidohere")
+ || sentence->contains("was soll ich denn hier tun")
+ || sentence->contains("was soll ich hier tun")
+ || sentence->contains("was gibt es hier zu tun")
+ || sentence->contains("was kann man denn hier machen")
+ || sentence->contains("was kann man denn hier tun")
+ || sentence->contains("was soll ich hier drin tun")
+ || sentence->contains("was soll ich hier")
+ || sentence->contains("wohin soll ich jetzt")
+ || sentence->contains("was ist das hier fuer ein raum")
+ || sentence->contains("was ist denn hier zu tun")
+ || sentence->contains("was kann man hier machen")
+ || sentence->contains("was soll ich jetzt machen")
+ || sentence->contains("was kommt jetzt")
+ || sentence->contains("was kommt nun")
+ || sentence->contains("wozu bin ich eigentlich hier")
+ || sentence->contains("wozu bin ich denn hier")) {
if (addRoomDescription(roomScript)) {
applyResponse();
return 2;
}
}
- if (sentence->contains("help")
+ if (sentence->localWord("help")
+ || (g_language == Common::DE_DEU && sentence->contains("help"))
|| sentence->contains("what now")
|| sentence->contains("what next")
|| sentence->contains("give me a hint")
@@ -216,7 +242,20 @@ int BellbotScript::process(const TTroomScript *roomScript, const TTsentence *sen
|| sentence->contains("what shall i do")
|| sentence->contains("what would you do")
|| sentence->contains("what should i do")
- || sentence->contains("what do i do")) {
+ || sentence->contains("what do i do")
+ || sentence->contains("was nun")
+ || sentence->contains("so und was kommt jetzt")
+ || sentence->contains("und jetzt")
+ || sentence->contains("einen hinweis")
+ || sentence->contains("einen tip")
+ || sentence->contains("ich bin verzweifelt")
+ || sentence->contains("bin ich auf der richtigen spur")
+ || sentence->contains("was soll ich jetzt anfangen")
+ || sentence->contains("wozu raetst du mir")
+ || sentence->contains("was muss ich jetzt")
+ || sentence->contains("was wuerdest du an meiner stelle")
+ || sentence->contains("was soll ich als naechstes tun")
+ || sentence->contains("was soll ich hier")) {
if (getDialRegion(0) == 1) {
randomResponse4(roomScript, getValue(1));
applyResponse();
@@ -241,35 +280,48 @@ int BellbotScript::process(const TTroomScript *roomScript, const TTsentence *sen
if (processEntries(&_entries, _entryCount, roomScript, sentence) == 2)
return 2;
- if ((sentence->_category == 4 && sentence->localWord("am") && sentence->localWord("i"))
- || (sentence->localWord("are") && sentence->localWord("we"))
- || (sentence->_category == 3 && sentence->localWord("room")
- && sentence->localWord("we") && sentence->localWord("in"))
- || (sentence->_category == 3 && sentence->localWord("rom")
- && sentence->localWord("is") && sentence->localWord("this"))
- ) {
- uint id = getRangeValue(getRoomDialogueId(roomScript));
- addResponse(getDialogueId(id ? id : 201384));
- applyResponse();
- return 2;
- }
+ if (g_language != Common::DE_DEU) {
+ if ((sentence->_category == 4 && sentence->localWord("am") && sentence->localWord("i"))
+ || (sentence->localWord("are") && sentence->localWord("we"))
+ || (sentence->_category == 3 && sentence->localWord("room")
+ && sentence->localWord("we") && sentence->localWord("in"))
+ || (sentence->_category == 3 && sentence->localWord("rom")
+ && sentence->localWord("is") && sentence->localWord("this"))
+ ) {
+ uint id = getRangeValue(getRoomDialogueId(roomScript));
+ addResponse(getDialogueId(id ? id : 201384));
+ applyResponse();
+ return 2;
+ }
- if (getValue(1) >= 3) {
- result = processEntries(&_sentences[1], 0, roomScript, sentence);
- } else if (getValue(1) == 2) {
- result = processEntries(&_sentences[2], 0, roomScript, sentence);
- } else if (getValue(1) == 1) {
- result = processEntries(&_sentences[3], 0, roomScript, sentence);
+ if (getValue(1) >= 3) {
+ result = processEntries(&_sentences[1], 0, roomScript, sentence);
+ } else if (getValue(1) == 2) {
+ result = processEntries(&_sentences[2], 0, roomScript, sentence);
+ } else if (getValue(1) == 1) {
+ result = processEntries(&_sentences[3], 0, roomScript, sentence);
- if (sentence->contains("shrinkbot")) {
+ if (sentence->contains("shrinkbot")) {
+ addResponse(getDialogueId(200583));
+ applyResponse();
+ return 2;
+ }
+ }
+ if (result == 2)
+ return 2;
+ } else {
+ if (getValue(1) == 1 && (sentence->localWord("shrinkbot") ||
+ sentence->contains("psychobot"))) {
addResponse(getDialogueId(200583));
applyResponse();
return 2;
}
}
- if (sentence->localWord("television") || sentence->localWord("tv")
- || sentence->localWord("crush") || sentence->localWord("crushed")) {
+ if ((g_language != Common::DE_DEU || getValue(40) == 0) &&
+ (sentence->localWord("television") || sentence->localWord("tv")
+ || sentence->localWord("crush") || sentence->localWord("crushed")
+ || sentence->localWord("crushedtv"))) {
if (roomScript->_scriptId == 111 || getRandomBit()) {
addResponse(getDialogueId(getRandomBit() ? 200912 : 200913));
} else {
@@ -287,7 +339,8 @@ int BellbotScript::process(const TTroomScript *roomScript, const TTsentence *sen
return 2;
}
- if (sentence->contains("my") && (sentence->contains("where can i find")
+ if ((sentence->contains("my") || sentence->contains("mein"))
+ && (sentence->contains("where can i find")
|| sentence->contains("where is")
|| sentence->contains("wheres")
|| sentence->contains("help me find")
@@ -296,13 +349,26 @@ int BellbotScript::process(const TTroomScript *roomScript, const TTsentence *sen
|| sentence->contains("id like")
|| sentence->contains("i would like")
|| sentence->contains("have you seen")
+ || sentence->contains("gibt es hier")
+ || sentence->contains("wo finde ich")
+ || sentence->contains("sind hier")
+ || sentence->contains("habt ihr")
+ || sentence->contains("gibt es")
+ || sentence->contains("wo sind")
+ || sentence->contains("wo ist")
+ || sentence->contains("wie komme ich")
+ || sentence->contains("wie erreicht man")
+ || sentence->contains("hast du")
+ || sentence->contains("ich moechte")
+ || sentence->contains("gib mir")
+ || sentence->contains("haettest du vielleicht")
+ || sentence->contains("ich haette gern")
)) {
addResponse(getDialogueId(200799));
applyResponse();
return 2;
}
- setupSentences();
uint tagId = g_vm->_trueTalkManager->_quotes.find(sentence->_normalizedLine);
if (tagId && chooseResponse(roomScript, sentence, tagId) == 2)
return 2;
@@ -640,104 +706,183 @@ int BellbotScript::updateState(uint oldId, uint newId, int index) {
}
int BellbotScript::preResponse(uint id) {
+ if (g_language == Common::DE_DEU && getDialRegion(0) == 0
+ && getRandomNumber(100) > 80)
+ return 251250;
+
int newId = _preResponses.find(id);
- if (newId == 202277) {
- applyResponse();
- CTrueTalkManager::triggerAction(1, 0);
- }
- if (newId == 200769) {
- applyResponse();
- CTrueTalkManager::triggerAction(18, 0);
- }
+ if (g_language != Common::DE_DEU) {
+ if (newId == 202277) {
+ applyResponse();
+ CTrueTalkManager::triggerAction(1, 0);
+ }
+ if (newId == 200769) {
+ applyResponse();
+ CTrueTalkManager::triggerAction(18, 0);
+ }
- if (id == 21790)
- CTrueTalkManager::triggerAction(13, 0);
+ if (id == 21790)
+ CTrueTalkManager::triggerAction(13, 0);
+ }
return newId;
}
int BellbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScript *roomScript, const TTsentence *sentence) {
- switch (val1) {
- case 1:
- addResponse(getDialogueId(*srcIdP));
- applyResponse();
- return 2;
-
- case 2:
- addResponse(getDialogueId(*srcIdP));
- addResponse(getDialogueId(getRandomNumber(2) == 1 ? 200192 : 200157));
- addResponse(getDialogueId(200176));
- applyResponse();
- return 2;
+ if (g_language == Common::EN_ANY) {
+ switch (val1) {
+ case 1:
+ addResponse(getDialogueId(*srcIdP));
+ applyResponse();
+ return 2;
- case 21:
- if (CTrueTalkManager::getStateValue(7) == 0) {
- selectResponse(21372);
+ case 2:
+ addResponse(getDialogueId(*srcIdP));
+ addResponse(getDialogueId(getRandomNumber(2) == 1 ? 200192 : 200157));
+ addResponse(getDialogueId(200176));
applyResponse();
return 2;
- }
- if (!sentence->localWord("broken") && !sentence->contains("broken") &&
+ case 21:
+ if (CTrueTalkManager::getStateValue(7) == 0) {
+ selectResponse(21372);
+ applyResponse();
+ return 2;
+ }
+
+ if (!sentence->localWord("broken") && !sentence->contains("broken") &&
CTrueTalkManager::_currentNPC) {
- CNodeItem *node = CTrueTalkManager::_currentNPC->getNode();
- if (node) {
- CString nodeName = node->getName();
- if (nodeName.containsIgnoreCase("5") || nodeName.containsIgnoreCase("6")
+ CNodeItem *node = CTrueTalkManager::_currentNPC->getNode();
+ if (node) {
+ CString nodeName = node->getName();
+ if (nodeName.containsIgnoreCase("5") || nodeName.containsIgnoreCase("6")
|| nodeName.containsIgnoreCase("7")) {
- CTrueTalkManager::triggerAction(29, 2);
- selectResponse(201571);
- applyResponse();
- return 2;
+ CTrueTalkManager::triggerAction(29, 2);
+ selectResponse(201571);
+ applyResponse();
+ return 2;
+ }
}
}
- }
- CTrueTalkManager::triggerAction(29, 1);
- selectResponse(201771);
- applyResponse();
- return 2;
+ CTrueTalkManager::triggerAction(29, 1);
+ selectResponse(201771);
+ applyResponse();
+ return 2;
- case 22:
- if (CTrueTalkManager::getStateValue(7) == 0) {
- selectResponse(21372);
+ case 22:
+ if (CTrueTalkManager::getStateValue(7) == 0) {
+ selectResponse(21372);
+ applyResponse();
+ return 2;
+ }
+
+ if (!sentence->localWord("broken") && !sentence->contains("broken") &&
+ CTrueTalkManager::_currentNPC) {
+ CNodeItem *node = CTrueTalkManager::_currentNPC->getNode();
+ if (node) {
+ CString nodeName = node->getName();
+ if (nodeName.containsIgnoreCase("5") || nodeName.containsIgnoreCase("6")
+ || nodeName.containsIgnoreCase("7")) {
+ CTrueTalkManager::triggerAction(29, 2);
+ selectResponse(201571);
+ applyResponse();
+ return 2;
+ }
+ }
+ }
+
+ CTrueTalkManager::triggerAction(29, 1);
+ selectResponse(201771);
applyResponse();
return 2;
+
+ case 23:
+ case 24:
+ if (CTrueTalkManager::getStateValue(7) == 0) {
+ selectResponse(21372);
+ applyResponse();
+ return 2;
+ }
+
+ CTrueTalkManager::triggerAction(29, val1 == 23 ? 3 : 4);
+ break;
+
+ default:
+ break;
}
+ } else {
+ switch (val1) {
+ case 5001:
+ case 5021:
+ return 0;
+
+ case 5002:
+ addResponse(getDialogueId(*srcIdP));
+ addResponse(getDialogueId(200000));
+ applyResponse();
+ return 2;
- if (!sentence->localWord("broken") && !sentence->contains("broken") &&
- CTrueTalkManager::_currentNPC) {
- CNodeItem *node = CTrueTalkManager::_currentNPC->getNode();
- if (node) {
- CString nodeName = node->getName();
- if (nodeName.containsIgnoreCase("5") || nodeName.containsIgnoreCase("6")
- || nodeName.containsIgnoreCase("7")) {
+ case 5003:
+ addResponse(getDialogueId(*srcIdP));
+ return 2;
+
+ case 5022:
+ case 5023:
+ if (CTrueTalkManager::getStateValue(7)) {
+ bool flag = true;
+
+ if (!sentence->localWord("broken") && !sentence->contains("kaputt") &&
+ !sentence->contains("im eimer") && !sentence->contains("funktioniert nicht") &&
+ CTrueTalkManager::_currentNPC) {
+ CNodeItem *node = CTrueTalkManager::_currentNPC->getNode();
+ if (node) {
+ CString nodeName = node->getName();
+ if (nodeName.contains("5") || nodeName.contains("6") || nodeName.contains("7"))
+ flag = false;
+ }
+ }
+
+ if (flag) {
+ CTrueTalkManager::triggerAction(29, 1);
+ selectResponse(201771);
+ }
+ else {
CTrueTalkManager::triggerAction(29, 2);
- selectResponse(201571);
- applyResponse();
- return 2;
+ selectResponse(201554);
}
}
- }
+ else {
+ selectResponse(21378);
+ }
- CTrueTalkManager::triggerAction(29, 1);
- selectResponse(201771);
- applyResponse();
- return 2;
+ applyResponse();
+ return 2;
- case 23:
- case 24:
- if (CTrueTalkManager::getStateValue(7) == 0) {
- selectResponse(21372);
+ case 5024:
+ if (CTrueTalkManager::getStateValue(7)) {
+ CTrueTalkManager::triggerAction(29, 3);
+ return 0;
+ }
+
+ selectResponse(21378);
applyResponse();
return 2;
- }
- CTrueTalkManager::triggerAction(29, val1 == 23 ? 3 : 4);
- break;
+ case 5025:
+ if (CTrueTalkManager::getStateValue(7)) {
+ CTrueTalkManager::triggerAction(29, 4);
+ return 0;
+ }
- default:
- break;
+ selectResponse(21378);
+ applyResponse();
+ return 2;
+
+ default:
+ return TTnpcScript::doSentenceEntry(val1, srcIdP, roomScript, sentence);
+ }
}
return 0;
@@ -974,14 +1119,15 @@ int BellbotScript::preprocess(const TTroomScript *roomScript, const TTsentence *
break;
case 21:
- if (sentence->contains("hiker") || sentence->contains("hug")) {
+ if (sentence->localWord("hiker") && (sentence->contains("hug") ||
+ sentence->contains("anhalter"))) {
addResponse(getDialogueId(200379));
applyFlag = true;
}
break;
case 22:
- if (sentence->localWord("get") || sentence->localWord("it")) {
+ if (sentence->localWord("get") && sentence->localWord("it")) {
addResponse(getDialogueId(200474));
applyFlag = true;
}
@@ -1037,9 +1183,9 @@ int BellbotScript::preprocess(const TTroomScript *roomScript, const TTsentence *
break;
case 30:
- if ((sentence->localWord("did") || sentence->localWord("not"))
- || (sentence->localWord("would") || sentence->localWord("not"))
- || (sentence->localWord("could") || sentence->localWord("not"))
+ if ((sentence->localWord("did") && sentence->localWord("not"))
+ || (sentence->localWord("would") && sentence->localWord("not"))
+ || (sentence->localWord("could") && sentence->localWord("not"))
|| sentence->localWord("tried")) {
addResponse(getDialogueId(200416));
applyFlag = true;
@@ -1200,8 +1346,8 @@ case44:
break;
case 51:
- if (sentence->localWord("no") || sentence->localWord("it")
- || sentence->localWord("is") || sentence->localWord("not")
+ if ((sentence->localWord("no") && sentence->localWord("it")
+ && sentence->localWord("is") && sentence->localWord("not"))
|| sentence->contains("yeah right")) {
addResponse(getDialogueId(200636));
applyFlag = true;
@@ -1307,7 +1453,7 @@ stateFlag = false;
break;
case 64:
- if (sentence->localWord("rowboat")) {
+ if (sentence->localWord("rowbot")) {
addResponse(getDialogueId(200052));
applyFlag = true;
}
@@ -1338,9 +1484,9 @@ stateFlag = false;
break;
case 68:
- if ((sentence->localWord("i") && sentence->localWord("care"))
- || sentence->localWord("do")
- || sentence->localWord("me")) {
+ if ((sentence->localWord("i") && (sentence->localWord("care") ||
+ sentence->localWord("do")))
+ || sentence->localWord("me")) {
addResponse(getDialogueId(201006));
applyFlag = true;
}
@@ -1381,10 +1527,13 @@ stateFlag = false;
break;
case 73:
- if (sentence->localWord("mood") && (charId() == 7 || charId() == 5)) {
- addResponse(getDialogueId(201021));
- applyFlag = true;
- stateFlag = false;
+ if (sentence->localWord("mood") || sentence->contains("stimmung") ||
+ sentence->contains("laune") || sentence->contains("verfassung")) {
+ if (charId() == 7 || charId() == 5) {
+ addResponse(getDialogueId(201021));
+ applyFlag = true;
+ stateFlag = false;
+ }
}
break;
@@ -1553,7 +1702,8 @@ stateFlag = false;
break;
case 88:
- if (sentence->_category == 6 || sentence->contains("upside down")) {
+ if (sentence->_category == 6 ||
+ (g_language != Common::DE_DEU && sentence->contains("upside down"))) {
addResponse(getDialogueId(202142));
applyFlag = true;
}
@@ -1834,7 +1984,7 @@ bool BellbotScript::addRoomDescription(const TTroomScript *roomScript) {
switch (roomScript->_scriptId) {
case 101:
- addResponse(getDialogueId(getValue(2) == 1 ? 20185 : 201832));
+ addResponse(getDialogueId(getValue(2) == 1 ? 201835 : 201832));
break;
case 107:
if (_room107First) {
@@ -1905,5 +2055,4 @@ bool BellbotScript::addRoomDescription(const TTroomScript *roomScript) {
return true;
}
-
} // End of namespace Titanic
diff --git a/engines/titanic/true_talk/deskbot_script.cpp b/engines/titanic/true_talk/deskbot_script.cpp
index d44cedf636..128868c84e 100644
--- a/engines/titanic/true_talk/deskbot_script.cpp
+++ b/engines/titanic/true_talk/deskbot_script.cpp
@@ -24,6 +24,7 @@
#include "titanic/true_talk/deskbot_script.h"
#include "titanic/true_talk/true_talk_manager.h"
#include "titanic/titanic.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -85,7 +86,16 @@ int DeskbotScript::process(const TTroomScript *roomScript, const TTsentence *sen
|| sentence->localWord("winning") || sentence->contains("winning")
|| sentence->localWord("winner") || sentence->contains("winner")
|| sentence->contains("35279") || sentence->contains("3 5 2 7 9")
- ) {
+ || (g_language == Common::DE_DEU && (
+ sentence->contains("preisaus") ||
+ sentence->contains("tombola") ||
+ sentence->contains("lotterie") ||
+ sentence->contains("gewonnen") ||
+ sentence->contains("glueck") ||
+ sentence->contains("das goldene los") ||
+ sentence->contains("sechs richtige")
+ ))
+ ) {
addResponse(getDialogueId(41773));
applyResponse();
return 2;
@@ -93,7 +103,8 @@ int DeskbotScript::process(const TTroomScript *roomScript, const TTsentence *sen
addResponse(getDialogueId(41771));
applyResponse();
return 2;
- } else if (sentence->localWord("upgrade") || sentence->contains("upgrade")) {
+ } else if (sentence->localWord("upgrade") || sentence->contains("upgrade")
+ || sentence->localWord("secondclass")) {
if (CTrueTalkManager::_currentNPC) {
CGameObject *obj;
if (CTrueTalkManager::_currentNPC->find("Magazine", &obj, FIND_PET)) {
@@ -353,10 +364,15 @@ exit:
int DeskbotScript::preResponse(uint id) {
int newId = 0;
- if (getValue(1) >= 3 && (id == 41176 || id == 41738 || id == 41413 || id == 41740))
+ if (getValue(1) >= 3 && (
+ id == (uint)TRANSLATE(41176, 41190) ||
+ id == (uint)TRANSLATE(41738, 41429) ||
+ id == (uint)TRANSLATE(41413, 41755) ||
+ id == (uint)TRANSLATE(41740, 41757)
+ )) {
newId = 241601;
-
- if (id == 42114)
+ }
+ if (id == (uint)TRANSLATE(42114, 42132))
CTrueTalkManager::triggerAction(20, 0);
return newId;
@@ -372,6 +388,9 @@ uint DeskbotScript::getDialsBitset() const {
int DeskbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScript *roomScript, const TTsentence *sentence) {
uint id;
+ if (g_language == Common::DE_DEU && val1 != 4501)
+ return TTnpcScript::doSentenceEntry(val1, srcIdP, roomScript, sentence);
+
switch (val1) {
case 1:
id = *srcIdP;
@@ -618,9 +637,8 @@ int DeskbotScript::preprocess(const TTroomScript *roomScript, const TTsentence *
case 8:
if (isDial1Low() && getValue(1) == 4) {
- if (sentence->_category == 12 || sentence->_category == 13
- || sentence->contains("do not")) {
-
+ if (sentence->_category == 12 || sentence->_category == 13 ||
+ (g_language != Common::DE_DEU && sentence->contains("do not"))) {
addResponse(getDialogueId(240447));
setDialRegion(0, 0);
setDialRegion(1, 0);
@@ -669,7 +687,7 @@ int DeskbotScript::preprocess(const TTroomScript *roomScript, const TTsentence *
case 11:
if (isDial0Medium() && isDial1Medium()
&& searchQuotes(roomScript, sentence)) {
- addResponse(getDialogueId(240403));
+ addResponse(getDialogueId(240406));
applyFlag = true;
stateFlag = false;
}
@@ -1123,12 +1141,18 @@ int DeskbotScript::preprocess(const TTroomScript *roomScript, const TTsentence *
if (sentence->_category == 11 || sentence->_category == 13) {
// Player said they have a reservation
addResponse(getDialogueId(241262));
- } else if (sentence->_category == 12 || sentence->contains("do not")) {
+ } else if (sentence->_category == 12 ||
+ (g_language != Common::DE_DEU && sentence->contains("do not"))) {
// Player said they don't have a reservation
setDialRegion(0, 0);
setDialRegion(1, 0);
addResponse(getDialogueId(241268));
addAskBreakfast();
+ } else if (sentence->contains("skip")) {
+ // WORKAROUND: Added 'skip' to allow skipping entire checkin
+ addAssignedRoom();
+ setState(0);
+ CTrueTalkManager::setFlags(CURRENT_STATE, 0);
} else {
// Player didn't say yes or no
addResponse(getDialogueId(240745));
@@ -1195,18 +1219,23 @@ int DeskbotScript::preprocess(const TTroomScript *roomScript, const TTsentence *
applyFlag = true;
stateFlag = false;
} else if (sentence->contains("continental")
+ || sentence->contains("kontinent")
|| sentence->contains("full")
|| sentence->contains("porky")
|| sentence->contains("the 1")
|| sentence->contains("the 2")
|| sentence->contains("former")
- || sentence->contains("latter")) {
+ || sentence->contains("latter")
+ || sentence->contains("speck")
+ || sentence->contains("wurst")
+ || sentence->contains("englisch")
+ ) {
addResponse(getDialogueId(241717));
addResponse(getDialogueId(241709));
applyFlag = true;
stateFlag = false;
} else {
- if (sentence2C(sentence))
+ if (getRandomNumber(100) < 80 && sentence2C(sentence))
addResponse(getDialogueId(241707));
addResponse(getDialogueId(241719));
applyFlag = true;
@@ -1221,7 +1250,10 @@ int DeskbotScript::preprocess(const TTroomScript *roomScript, const TTsentence *
|| sentence->contains("blerontin 1") || sentence->contains("the 1")
|| sentence->contains("the 2") || sentence->contains("the 3")
|| sentence->contains("the 4") || sentence->contains("all of them")
- || sentence->contains("the lot")) {
+ || sentence->contains("the lot") || sentence->contains("buegelhorn")
+ || sentence->contains("bugelhorn") || sentence->contains("trompete")
+ || sentence->contains("saxophon") || sentence->contains("popanz")
+ ) {
addResponse(getDialogueId(241710));
addResponse(getDialogueId(241713));
} else {
@@ -1236,7 +1268,8 @@ int DeskbotScript::preprocess(const TTroomScript *roomScript, const TTsentence *
break;
case 86:
- if (sentence->_category == 12 || sentence->_category == 11 || sentence->contains("view")) {
+ if (sentence->_category == 12 || sentence->_category == 11
+ || sentence->contains(TRANSLATE("view", "aussicht"))) {
addResponse(getDialogueId(241714));
addResponse(getDialogueId(241699));
} else {
@@ -1261,7 +1294,8 @@ int DeskbotScript::preprocess(const TTroomScript *roomScript, const TTsentence *
|| sentence->contains("balcony") || sentence->contains("neither")
|| sentence->contains("the 1") || sentence->contains("the 2")
|| sentence->contains("former") || sentence->contains("latter")
- || sentence->contains("either")) {
+ || sentence->contains("either") || sentence->contains("suedlage")
+ || sentence->contains("balkon")) {
addResponse(getDialogueId(241700));
addResponse(getDialogueId(241687));
} else {
@@ -1277,16 +1311,16 @@ int DeskbotScript::preprocess(const TTroomScript *roomScript, const TTsentence *
break;
case 88:
- if (sentence->contains("imperial") || sentence->contains("the 1")) {
+ if (sentence->contains("imperial") || sentence->contains(TRANSLATE("the 1", "fuerstlich"))) {
addResponse(getDialogueId(241700));
addResponse(getDialogueId(241739));
- } else if (sentence->contains("royal") || sentence->contains("the 2")) {
+ } else if (sentence->contains("royal") || sentence->contains(TRANSLATE("the 2", "majest"))) {
addResponse(getDialogueId(241690));
- } else if (sentence->contains("despotic") || sentence->contains("the last")
- || sentence->contains("latter")) {
+ } else if (sentence->contains("despotic") || sentence->contains("despot")
+ || sentence->contains("the last") || sentence->contains("latter")) {
addResponse(getDialogueId(241688));
} else if (sentence->contains("president") || sentence->contains("presidential")
- || sentence->contains("the 3")) {
+ || sentence->contains("the 3") || sentence->contains("praesident")) {
addResponse(getDialogueId(241689));
addResponse(getDialogueId(241739));
} else {
@@ -1307,7 +1341,8 @@ int DeskbotScript::preprocess(const TTroomScript *roomScript, const TTsentence *
|| sentence->contains("princess") || sentence->contains("small")
|| sentence->contains("the 1") || sentence->contains("the 2")
|| sentence->contains("the 3") || sentence->contains("the 4")
- || sentence->contains("big") || sentence->contains("large")) {
+ || sentence->contains("big") || sentence->contains("large")
+ || sentence->contains("prinz") || sentence->contains("gross")) {
addResponse(getDialogueId(241700));
addResponse(getDialogueId(241739));
} else {
@@ -1325,7 +1360,9 @@ int DeskbotScript::preprocess(const TTroomScript *roomScript, const TTsentence *
if (sentence->contains("constitutional") || sentence->contains("const")
|| sentence->contains("absolute") || sentence->contains("small")
|| sentence->contains("the 1") || sentence->contains("the 2")
- || sentence->contains("big") || sentence->contains("large")) {
+ || sentence->contains("big") || sentence->contains("large")
+ || sentence->contains("verfassung") || sentence->contains("absolut")
+ || sentence->contains("gross")) {
addResponse(getDialogueId(241700));
addResponse(getDialogueId(241739));
} else {
@@ -1344,7 +1381,9 @@ int DeskbotScript::preprocess(const TTroomScript *roomScript, const TTsentence *
|| sentence->contains("small") || sentence->contains("the 1")
|| sentence->contains("the 2") || sentence->contains("big")
|| sentence->contains("large") || sentence->contains("former")
- || sentence->contains("latter")) {
+ || sentence->contains("latter")
+ || sentence->contains("aufgekl") || sentence->contains("diktator")
+ || sentence->contains("gross")) {
addResponse(getDialogueId(241700));
addResponse(getDialogueId(241739));
} else {
@@ -1398,7 +1437,9 @@ int DeskbotScript::preprocess(const TTroomScript *roomScript, const TTsentence *
|| sentence->contains("suite") || sentence->contains("next door")
|| sentence->contains("the 1") || sentence->contains("the 2")
|| sentence->contains("former") || sentence->contains("latter")
- || sentence->contains("same room")) {
+ || sentence->contains("same room") || sentence->contains("ohne")
+ || sentence->contains("mit") || sentence->contains("die gleiche kabine")
+ || sentence->contains("dieselbe kabine")) {
addAssignedRoom();
setState(0);
CTrueTalkManager::setFlags(CURRENT_STATE, 0);
diff --git a/engines/titanic/true_talk/deskbot_script.h b/engines/titanic/true_talk/deskbot_script.h
index ffb6b1063c..941136d45e 100644
--- a/engines/titanic/true_talk/deskbot_script.h
+++ b/engines/titanic/true_talk/deskbot_script.h
@@ -30,11 +30,6 @@ namespace Titanic {
class DeskbotScript : public TTnpcScript {
private:
- static int _oldId;
- TTupdateStateArray _states;
- TTsentenceEntries _entries2;
- TTsentenceEntries _entries3;
-private:
/**
* Setup sentence data
*/
@@ -43,11 +38,6 @@ private:
/**
* Adds dialogue for the player's assigned room
*/
- uint addAssignedRoomDialogue();
-
- /**
- * Adds dialogue for the player's assigned room
- */
uint addAssignedRoomDialogue2();
/**
@@ -66,11 +56,6 @@ private:
void setCurrentState(uint newId, uint index);
/**
- * Does preprocessing for the sentence
- */
- int preprocess(const TTroomScript *roomScript, const TTsentence *sentence);
-
- /**
* Scans the quotes tree
*/
int searchQuotes(const TTroomScript *roomScript, const TTsentence *sentence);
@@ -89,6 +74,21 @@ private:
* Adds a dialogue description for the player's assigned room
*/
void addAssignedRoom();
+protected:
+ static int _oldId;
+ TTupdateStateArray _states;
+ TTsentenceEntries _entries2;
+ TTsentenceEntries _entries3;
+protected:
+ /**
+ * Does preprocessing for the sentence
+ */
+ int preprocess(const TTroomScript *roomScript, const TTsentence *sentence);
+
+ /**
+ * Adds dialogue for the player's assigned room
+ */
+ uint addAssignedRoomDialogue();
public:
DeskbotScript(int val1, const char *charClass, int v2,
const char *charName, int v3, int val2);
diff --git a/engines/titanic/true_talk/doorbot_script.cpp b/engines/titanic/true_talk/doorbot_script.cpp
index 0323e3d021..9493af6fe2 100644
--- a/engines/titanic/true_talk/doorbot_script.cpp
+++ b/engines/titanic/true_talk/doorbot_script.cpp
@@ -24,15 +24,19 @@
#include "titanic/true_talk/doorbot_script.h"
#include "titanic/true_talk/tt_room_script.h"
#include "titanic/true_talk/true_talk_manager.h"
+#include "titanic/translation.h"
#include "titanic/titanic.h"
namespace Titanic {
-static const int STATE_ARRAY[9] = {
- 0x2E2A, 0x2E2B, 0x2E2C, 0x2E2D, 0x2E2E, 0x2E2F, 0x2E30, 0x2E31, 0x2E32
+static const int STATE_ARRAY_EN[9] = {
+ 11818, 11819, 11820, 11821, 11822, 11823, 11824, 11825, 11826
+};
+static const int STATE_ARRAY_DE[9] = {
+ 11831, 11832, 11833, 11834, 11835, 11836, 11837, 11838, 11839
};
-static const RoomDialogueId ROOM_DIALOGUES1[] = {
+static const RoomDialogueId ROOM_DIALOGUES1_EN[] = {
{ 100, 10523 }, { 101, 10499 }, { 107, 10516 }, { 108, 10500 },
{ 109, 10490 }, { 110, 10504 }, { 111, 10506 }, { 112, 10498 },
{ 113, 10502 }, { 114, 10507 }, { 115, 10497 }, { 116, 10508 },
@@ -41,12 +45,28 @@ static const RoomDialogueId ROOM_DIALOGUES1[] = {
{ 128, 10495 }, { 129, 10496 }, { 130, 10491 }, { 131, 10493 },
{ 132, 10492 }, { 0, 0 }
};
-static const RoomDialogueId ROOM_DIALOGUES2[] = {
+static const RoomDialogueId ROOM_DIALOGUES1_DE[] = {
+ { 101, 10375 }, { 107, 10379 }, { 108, 10378 }, { 109, 10364 },
+ { 110, 10377 }, { 111, 10383 }, { 112, 10374 }, { 113, 10376 },
+ { 114, 10384 }, { 115, 10373 }, { 116, 10385 }, { 117, 10380 },
+ { 118, 10380 }, { 122, 10392 }, { 123, 10390 }, { 124, 10386 },
+ { 125, 10387 }, { 126, 10389 }, { 127, 10388 }, { 128, 10371 },
+ { 129, 10372 }, { 130, 10366 }, { 131, 10368 }, { 132, 10367 },
+ { 0, 0 }
+};
+
+static const RoomDialogueId ROOM_DIALOGUES2_EN[] = {
{ 102, 221981 }, { 110, 221948 }, { 111, 221968 }, { 107, 222000 },
{ 101, 221935 }, { 112, 221924 }, { 113, 221942 }, { 116, 221977 },
{ 124, 221987 }, { 125, 221984 }, { 127, 221991 }, { 128, 221916 },
{ 129, 221919 }, { 131, 221912 }, { 132, 221908 }, { 0, 0 }
};
+static const RoomDialogueId ROOM_DIALOGUES2_DE[] = {
+ { 102, 221981 }, { 110, 221948 }, { 111, 221968 }, { 107, 222000 },
+ { 101, 221935 }, { 112, 221924 }, { 113, 221942 }, { 116, 221977 },
+ { 124, 221987 }, { 125, 221984 }, { 127, 221991 }, { 128, 221916 },
+ { 129, 221919 }, { 131, 221912 }, { 132, 221909 }, { 0, 0 }
+};
DoorbotScript::DoorbotScript(int val1, const char *charClass, int v2,
const char *charName, int v3, int val2, int v4, int v5, int v6, int v7) :
@@ -60,6 +80,11 @@ DoorbotScript::DoorbotScript(int val1, const char *charClass, int v2,
_states.load("States/Doorbot");
}
+DoorbotScript::~DoorbotScript() {
+ for (int idx = 0; idx < 11; ++idx)
+ _sentences[idx].clear();
+}
+
void DoorbotScript::setupSentences() {
for (int idx = 35; idx < 40; ++idx)
CTrueTalkManager::setFlags(idx, 0);
@@ -85,10 +110,10 @@ int DoorbotScript::chooseResponse(const TTroomScript *roomScript, const TTsenten
tag == MKTAG('A', 'N', 'S', 'W') || tag == MKTAG('S', 'U', 'M', 'S')) {
if (_stateIndex > 9)
_stateIndex = 0;
- addResponse(STATE_ARRAY[_stateIndex]);
+ addResponse(TRANSLATE(STATE_ARRAY_EN[_stateIndex], STATE_ARRAY_DE[_stateIndex]));
applyResponse();
- if (STATE_ARRAY[_stateIndex] == 11826)
+ if (_stateIndex == 8)
setState(1);
++_stateIndex;
return 2;
@@ -196,7 +221,8 @@ int DoorbotScript::process(const TTroomScript *roomScript, const TTsentence *sen
return setResponse(getDialogueId(220113));
}
- if (sentence->_category == 6 && sentence->contains("why not")) {
+ if (sentence->_category == 6 && (sentence->contains("why not") ||
+ sentence->contains("warum nicht"))) {
return setResponse(11871, 8);
}
@@ -209,53 +235,55 @@ int DoorbotScript::process(const TTroomScript *roomScript, const TTsentence *sen
switch (currState) {
case 1:
if (flag1)
- return setResponse(11828, 2);
+ return setResponse(TRANSLATE(11828, 11841), 2);
if (flag2)
- return setResponse(11827, 0);
+ return setResponse(TRANSLATE(11827, 11840), 0);
break;
case 2:
if (flag1)
- return setResponse(11827, 0);
+ return setResponse(TRANSLATE(11827, 11840), 0);
break;
case 3:
if (sentMode == 3)
- return setResponse(10406, 0);
+ return setResponse(TRANSLATE(10406, 10417), 0);
break;
case 4:
if (flag1)
- return setResponse(11332, 0);
+ return setResponse(TRANSLATE(11332, 11345), 0);
if (flag2)
- return setResponse(11331, 0);
+ return setResponse(TRANSLATE(11331, 11344), 0);
break;
case 5:
- return setResponse(11868, 0);
+ if (g_language == Common::EN_ANY)
+ return setResponse(11868, 0);
+ break;
case 6:
- return setResponse(11872, 0);
+ return setResponse(TRANSLATE(11872, 11885), 7);
case 7:
- return setResponse(11869, 0);
+ return setResponse(TRANSLATE(11869, 11882), 0);
case 8:
- return setResponse(11870, 0);
+ return setResponse(TRANSLATE(11870, 11883), 0);
case 12:
if (flag1)
- return setResponse(11894, 13);
+ return setResponse(TRANSLATE(11894, 11907), 13);
if (flag2)
- return setResponse(11893, 13);
+ return setResponse(TRANSLATE(11893, 11906), 13);
break;
case 13:
- return setResponse(11895, 12);
+ return setResponse(TRANSLATE(11895, 11908), 12);
case 15:
if (sentMode == 3 || sentMode == 6)
- return setResponse(10257, 0);
+ return setResponse(TRANSLATE(10257, 10260), 0);
break;
case 16: {
@@ -301,47 +329,47 @@ int DoorbotScript::process(const TTroomScript *roomScript, const TTsentence *sen
case 21:
if (flag2)
- return setResponse(10935, 0);
+ return setResponse(TRANSLATE(10935, 10947), 0);
break;
case 22:
if (flag1) {
if (getRandomBit()) {
- return setResponse(11211, 23);
+ return setResponse(TRANSLATE(11211, 11223), 23);
} else {
- return setResponse(10127, 0);
+ return setResponse(TRANSLATE(10127, 10128), 0);
}
}
if (flag2)
- return setResponse(10136, 0);
+ return setResponse(TRANSLATE(10136, 10137), 0);
break;
case 23:
- return setResponse(10212, 0);
+ return setResponse(TRANSLATE(10212, 10213), 0);
case 24:
if (flag1)
- return setResponse(11151, 0);
+ return setResponse(TRANSLATE(11151, 11163), 0);
if (flag2)
- return setResponse(11150, 0);
+ return setResponse(TRANSLATE(11150, 11162), 0);
break;
case 25:
case 26:
if (flag2) {
if (getRandomBit()) {
- return setResponse(11211, 23);
+ return setResponse(TRANSLATE(11211, 11223), 23);
} else {
- return setResponse(10127, 0);
+ return setResponse(TRANSLATE(10127, 10128), 0);
}
}
if (flag1)
- return setResponse(10136, 0);
+ return setResponse(TRANSLATE(10136, 10137), 0);
break;
case 27:
if (flag1 || sentence->localWord("did") || sentence->contains("did"))
- return setResponse(221175, 28);
+ return setResponse(getDialogueId(221175), 28);
break;
case 28:
@@ -359,17 +387,20 @@ int DoorbotScript::process(const TTroomScript *roomScript, const TTsentence *sen
case 31:
if (sentMode == 3 || sentMode == 10)
- return setResponse(10350, 0);
+ return setResponse(TRANSLATE(10350, 10353), 0);
break;
case 32:
- return setResponse(10110, 0);
+ return setResponse(TRANSLATE(10110, 10111), 0);
case 33:
if (sentence->contains("sieve") || sentence->contains("colander")
|| sentence->contains("vegetable") || sentence->contains("ground")
|| sentence->contains("earth") || sentence->contains("garden")
- || sentence->contains("cheese") || sentence->contains("strainer")) {
+ || sentence->contains("cheese") || sentence->contains("strainer")
+ || sentence->contains("sieb") || sentence->contains("emmenthaler")
+ || sentence->contains("gemuese") || sentence->contains("kaese")
+ || sentence->contains("erde") || sentence->contains("garten")) {
return setResponse(getDialogueId(221375), 0);
} else if (getRandomNumber(100) > 30) {
return setResponse(getDialogueId(221376), 33);
@@ -380,67 +411,74 @@ int DoorbotScript::process(const TTroomScript *roomScript, const TTsentence *sen
case 34:
if (sentence->localWord("bellbot"))
- return setResponse(10094, 0);
- if (sentence->localWord("bellbot"))
- return setResponse(10349, 0);
- if (sentence->localWord("deskbot") || sentence->localWord("titania"))
- return setResponse(10148, 0);
- if (sentence->localWord("barbot") || sentence->localWord("rowbot")
- || sentence->localWord("liftbot") || sentence->localWord("maitredbot"))
- return setResponse(10147, 0);
+ return setResponse(TRANSLATE(10094, 10095), 0);
+ if (sentence->localWord("doorbot"))
+ return setResponse(TRANSLATE(10349, 10352), 0);
+
+ if (g_language == Common::EN_ANY) {
+ if (sentence->localWord("deskbot") || sentence->localWord("titania"))
+ return setResponse(10148, 0);
+ if (sentence->localWord("barbot") || sentence->localWord("rowbot")
+ || sentence->localWord("liftbot") || sentence->localWord("maitredbot"))
+ return setResponse(10147, 0);
+ }
break;
case 35:
- return setResponse(10811, 36);
+ return setResponse(TRANSLATE(10811, 10822), 36);
case 36:
if (flag1)
- return setResponse(10813, 37);
+ return setResponse(TRANSLATE(10813, 10824), 37);
if (flag2)
- return setResponse(10812, 37);
+ return setResponse(TRANSLATE(10812, 10823), 37);
break;
case 37:
if (flag1)
- return setResponse(10815, 37);
+ return setResponse(TRANSLATE(10815, 10826), 37);
if (flag2)
- return setResponse(10814, 37);
+ return setResponse(TRANSLATE(10814, 10825), 37);
break;
case 38:
- return setResponse(10848, 39);
+ if (g_language == Common::EN_ANY)
+ return setResponse(10848, 39);
case 39:
- return setResponse(10823, 40);
+ if (g_language == Common::EN_ANY)
+ return setResponse(10823, 40);
case 40:
- return setResponse(10832, 41);
+ return setResponse(TRANSLATE(10832, 10843), 41);
case 41:
- addResponse(10833);
- return setResponse(10835, 0);
+ addResponse(TRANSLATE(10833, 10844));
+ return setResponse(TRANSLATE(10835, 10846), 0);
case 42:
if (sentence->localWord("please"))
- return setResponse(10840, 43);
- return setResponse(10844, 0);
+ return setResponse(TRANSLATE(10840, 10851), 43);
+ return setResponse(TRANSLATE(10844, 10855), 0);
case 43:
case 45:
- return setResponse(10844, 0);
+ return setResponse(TRANSLATE(10844, 10855), 0);
case 44:
if (sentence->localWord("thanks"))
- return setResponse(10843, 45);
- return setResponse(10844, 0);
+ return setResponse(TRANSLATE(10843, 10854), 45);
+ return setResponse(TRANSLATE(10844, 10855), 0);
case 46:
if (flag1)
return setResponse(getDialogueId(222251), 0);
- if (flag2)
+ if (g_language == Common::EN_ANY && flag2)
return setResponse(10713, 0);
break;
+ default:
+ break;
}
}
@@ -451,39 +489,48 @@ int DoorbotScript::process(const TTroomScript *roomScript, const TTsentence *sen
return setResponse(getDialogueId(221043), 0);
int result = 0;
- switch (roomScript->_scriptId) {
- case 100:
- case 101:
- case 102:
- case 107:
- case 110:
- case 111:
- case 124:
- case 129:
- case 131:
- case 132:
- result = processEntries(&_sentences[roomScript->_scriptId], 0, roomScript, sentence);
- break;
- default:
- break;
+ if (g_language == Common::EN_ANY) {
+ switch (roomScript->_scriptId) {
+ case 100:
+ case 101:
+ case 102:
+ case 107:
+ case 110:
+ case 111:
+ case 124:
+ case 129:
+ case 131:
+ case 132:
+ result = processEntries(&_sentences[roomScript->_scriptId], 0, roomScript, sentence);
+ break;
+ default:
+ break;
+ }
+
+ if (result == 2)
+ return 2;
}
- if (result == 2)
- return 2;
if (processEntries(&_entries, _entryCount, roomScript, sentence) == 2
|| processEntries(_defaultEntries, 0, roomScript, sentence) == 2
|| defaultProcess(roomScript, sentence))
return 2;
+ if (g_language == Common::DE_DEU && sentence->contains("42")) {
+ selectResponse(11831);
+ applyResponse();
+ return 2;
+ }
+
switch (sentence->_category) {
case 11:
if (getRandomNumber(100) > 90)
- return setResponse(10839, 42);
- return setResponse(222415, 0);
+ return setResponse(TRANSLATE(10839, 10850), 42);
+ return setResponse(getDialogueId(222415), 0);
case 12:
if (getRandomNumber(100) > 90)
- return setResponse(10841, 44);
+ return setResponse(TRANSLATE(10841, 10852), 44);
return setResponse(getDialogueId(222416), 0);
case 13:
@@ -546,10 +593,10 @@ ScriptChangedResult DoorbotScript::scriptChanged(const TTroomScript *roomScript,
CTrueTalkManager::setFlags(39, 0);
}
- if (id >= 220000 && id <= 222418) {
+ if (id >= 220000 && id <= (uint)TRANSLATE(222418, 222430)) {
addResponse(getDialogueId(id));
applyResponse();
- } else if (id >= 10000 && id <= 11986) {
+ } else if (id >= 10000 && id <= (uint)TRANSLATE(11986, 11999)) {
addResponse(id);
applyResponse();
}
@@ -690,10 +737,12 @@ int DoorbotScript::updateState(uint oldId, uint newId, int index) {
default:
break;
}
- } else if (newId >= 220883) {
+ }
+ else if (newId >= 220883) {
CTrueTalkManager::setFlags(38, 1);
CTrueTalkManager::triggerAction(28, 0);
- } else if (newId >= 220076) {
+ }
+ else if (newId >= 220076) {
switch (newId) {
case 220078:
case 220080:
@@ -709,11 +758,13 @@ int DoorbotScript::updateState(uint oldId, uint newId, int index) {
}
CTrueTalkManager::setFlags(39, 1);
- } else if (newId == 220075) {
+ }
+ else if (newId == 220075) {
if (flag39)
return getRangeValue(221381);
CTrueTalkManager::setFlags(39, 1);
- } else if (newId == 220038) {
+ }
+ else if (newId == 220038) {
return 220038;
}
@@ -739,7 +790,7 @@ int DoorbotScript::updateState(uint oldId, uint newId, int index) {
int DoorbotScript::preResponse(uint id) {
uint newId = 0;
if (getDialRegion(0) != 1 && getRandomNumber(100) > 60) {
- addResponse(11195);
+ addResponse(TRANSLATE(11195, 11207));
newId = 222193;
}
@@ -759,6 +810,15 @@ uint DoorbotScript::getDialsBitset() const {
int DoorbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScript *roomScript, const TTsentence *sentence) {
int id2, id = 0;
+ if (g_language == Common::DE_DEU) {
+ if (val1 == 4010 || (val1 >= 4012 && val1 <= 4015)) {
+ return TTnpcScript::doSentenceEntry(val1, srcIdP, roomScript, sentence);
+ }
+
+ if (val1 >= 4009 && val1 <= 4030)
+ val1 -= 4000;
+ }
+
switch (val1) {
case 2:
if (getValue(1) != 1)
@@ -781,7 +841,8 @@ int DoorbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScri
return 1;
break;
case 9:
- if (sentence->localWord("my") || sentence->contains("my"))
+ if (sentence->localWord("my") || sentence->contains("my")
+ || sentence->contains("mein"))
return true;
id2 = getRoomDialogueId1(roomScript);
if (id2) {
@@ -880,12 +941,20 @@ int DoorbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScri
CTrueTalkManager::triggerAction(29, 4);
break;
case 26:
- if (!sentence->localWord("my") && !sentence->contains("my"))
- return 1;
+ if (!sentence->localWord("my")) {
+ if (g_language == Common::EN_ANY && !sentence->contains("my"))
+ return 1;
+ if (g_language == Common::DE_DEU && !sentence->contains("mein"))
+ return 1;
+ }
break;
case 27:
- if (!sentence->localWord("earth") && !sentence->contains("earth"))
- return 1;
+ if (!sentence->localWord("earth")) {
+ if (g_language == Common::EN_ANY && !sentence->contains("earth"))
+ return 1;
+ if (g_language == Common::EN_ANY && !sentence->contains("erde"))
+ return 1;
+ }
break;
case 28:
id2 = getRoomDialogueId2(roomScript);
@@ -896,31 +965,36 @@ int DoorbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScri
}
break;
case 29:
- if (sentence->localWord("another") || sentence->localWord("more") ||
- sentence->localWord("additional") || sentence->contains("another") ||
- sentence->contains("more") || sentence->contains("additional")) {
+ if (sentence->localWord("another") || sentence->localWord("more")
+ || sentence->localWord("additional") || sentence->contains("another")
+ || sentence->contains("more") || sentence->contains("additional")
+ || sentence->contains("noch ein") || sentence->contains("einen anderen")
+ || sentence->contains("ein anderes") || sentence->contains("eine andere")
+ || sentence->contains("zusaetzliche")) {
addResponse(getDialogueId(220058));
applyResponse();
return 2;
}
break;
case 30:
- if (!sentence->localWord("because") && !sentence->contains("because"))
+ if (!sentence->localWord("because") && !sentence->contains("because")
+ && !(g_language == Common::DE_DEU && sentence->contains("well")))
return 1;
break;
- case 0x200:
+
+ case 512:
if (getValue(4) != 1)
id = 221157;
break;
- case 0x201:
+ case 513:
if (getValue(4) != 2)
id = 221157;
break;
- case 0x202:
+ case 514:
if (getValue(4) != 3)
id = 221157;
break;
- case 0x203:
+ case 515:
if (getValue(4) != 0)
id = 221157;
break;
@@ -994,7 +1068,8 @@ int DoorbotScript::setResponse(int dialogueId, int v34) {
}
int DoorbotScript::getRoomDialogueId1(const TTroomScript *roomScript) {
- for (const RoomDialogueId *r = ROOM_DIALOGUES1; r->_roomNum; ++r) {
+ const RoomDialogueId *r = TRANSLATE(ROOM_DIALOGUES1_EN, ROOM_DIALOGUES1_DE);
+ for (; r->_roomNum; ++r) {
if (r->_roomNum == roomScript->_scriptId)
return getDialogueId(r->_dialogueId);
}
@@ -1003,7 +1078,8 @@ int DoorbotScript::getRoomDialogueId1(const TTroomScript *roomScript) {
}
int DoorbotScript::getRoomDialogueId2(const TTroomScript *roomScript) {
- for (const RoomDialogueId *r = ROOM_DIALOGUES2; r->_roomNum; ++r) {
+ const RoomDialogueId *r = TRANSLATE(ROOM_DIALOGUES2_EN, ROOM_DIALOGUES2_DE);
+ for (; r->_roomNum; ++r) {
if (r->_roomNum == roomScript->_scriptId)
return getDialogueId(r->_dialogueId);
}
diff --git a/engines/titanic/true_talk/doorbot_script.h b/engines/titanic/true_talk/doorbot_script.h
index 78ebcbfd68..536e9d42ca 100644
--- a/engines/titanic/true_talk/doorbot_script.h
+++ b/engines/titanic/true_talk/doorbot_script.h
@@ -58,6 +58,7 @@ private:
public:
DoorbotScript(int val1, const char *charClass, int v2,
const char *charName, int v3, int val2, int v4, int v5, int v6, int v7);
+ virtual ~DoorbotScript();
/**
* Chooses and adds a conversation response based on a specified tag Id.
diff --git a/engines/titanic/true_talk/liftbot_script.cpp b/engines/titanic/true_talk/liftbot_script.cpp
index 5f0f6fbb66..757b640c76 100644
--- a/engines/titanic/true_talk/liftbot_script.cpp
+++ b/engines/titanic/true_talk/liftbot_script.cpp
@@ -24,13 +24,17 @@
#include "titanic/true_talk/liftbot_script.h"
#include "titanic/true_talk/true_talk_manager.h"
#include "titanic/titanic.h"
+#include "titanic/translation.h"
namespace Titanic {
int LiftbotScript::_stateIndex;
-static const int STATE_ARRAY[7] = {
- 0x78BE, 0x78C0, 0x78C1, 0x78C2, 0x78C3, 0x78C4, 0x78C5
+static const int STATE_ARRAY_EN[7] = {
+ 30910, 30912, 30913, 30914, 30915, 30916, 30917
+};
+static const int STATE_ARRAY_DE[7] = {
+ 30919, 30921, 30922, 30923, 30924, 30925, 30926
};
LiftbotScript::LiftbotScript(int val1, const char *charClass, int v2,
@@ -63,21 +67,22 @@ int LiftbotScript::chooseResponse(const TTroomScript *roomScript, const TTsenten
case MKTAG('H', 'H', 'G', 'Q'):
case MKTAG('A', 'N', 'S', 'W'):
if (_stateIndex >= 7) {
- selectResponse(30918);
+ selectResponse(TRANSLATE(30918, 30927));
setState(2);
_stateIndex = 0;
} else {
- addResponse(STATE_ARRAY[_stateIndex++]);
+ addResponse(TRANSLATE(STATE_ARRAY_EN[_stateIndex++],
+ STATE_ARRAY_DE[_stateIndex++]));
}
applyResponse();
return 2;
case MKTAG('O', 'R', 'D', '8'):
- addResponse(30475);
- addResponse(30467);
- addResponse(30466);
- addResponse(30474);
+ addResponse(TRANSLATE(30475, 30484));
+ addResponse(TRANSLATE(30467, 30476));
+ addResponse(TRANSLATE(30466, 30475));
+ addResponse(TRANSLATE(30474, 30483));
applyResponse();
return SS_2;
@@ -103,22 +108,22 @@ int LiftbotScript::process(const TTroomScript *roomScript, const TTsentence *sen
switch (currState) {
case 2:
if (flag1)
- return addDialogueAndState(30920, 3);
+ return addDialogueAndState(TRANSLATE(30920, 30929), 3);
if (flag2)
- return addDialogueAndState(30919, 1);
+ return addDialogueAndState(TRANSLATE(30919, 30928), 1);
break;
case 3:
if (flag1)
- return addDialogueAndState(30919, 1);
+ return addDialogueAndState(TRANSLATE(30919, 30928), 1);
break;
case 4:
- return addDialogueAndState(210391, 1);
+ return addDialogueAndState(getDialogueId(210391), 1);
case 5:
if (sentence->contains("reborzo") || sentence->contains("is that"))
- return addDialogueAndState(30515, 1);
+ return addDialogueAndState(TRANSLATE(30515, 30524), 1);
break;
case 6:
@@ -184,7 +189,7 @@ ScriptChangedResult LiftbotScript::scriptChanged(const TTroomScript *roomScript,
break;
case 155:
- selectResponse(30446);
+ selectResponse(TRANSLATE(30446, 30455));
applyResponse();
break;
@@ -192,7 +197,7 @@ ScriptChangedResult LiftbotScript::scriptChanged(const TTroomScript *roomScript,
if (getCurrentFloor() == 1) {
addResponse(getDialogueId(210614));
} else {
- selectResponse(30270);
+ selectResponse(TRANSLATE(30270, 30272));
}
applyResponse();
break;
@@ -201,7 +206,7 @@ ScriptChangedResult LiftbotScript::scriptChanged(const TTroomScript *roomScript,
break;
}
- if (id >= 210000 && id <= 211001) {
+ if (id >= 210000 && id <= (uint)TRANSLATE(211001, 211003)) {
addResponse(getDialogueId(id));
applyResponse();
}
@@ -333,8 +338,13 @@ int LiftbotScript::updateState(uint oldId, uint newId, int index) {
}
int LiftbotScript::preResponse(uint id) {
- if (id == 30565 || id == 30566 || id == 30567 || id == 30568
- || id == 30569 || id == 30570 || id == 30571)
+ if (id == (uint)TRANSLATE(30565, 30574)
+ || id == (uint)TRANSLATE(30566, 30575)
+ || id == (uint)TRANSLATE(30567, 30576)
+ || id == (uint)TRANSLATE(30568, 30577)
+ || id == (uint)TRANSLATE(30569, 30578)
+ || id == (uint)TRANSLATE(30570, 30579)
+ || id == (uint)TRANSLATE(30571, 30580))
return 210901;
if (getDialRegion(0) == 0 && getRandomNumber(100) > 60)
@@ -355,7 +365,6 @@ uint LiftbotScript::getDialsBitset() const {
return bits;
}
-
int LiftbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScript *roomScript, const TTsentence *sentence) {
// Responses for each floor when asked "what floor are we on"
static const int FLOOR_RESPONSE_IDS[] = {
@@ -374,7 +383,9 @@ int LiftbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScri
getState();
int stateVal;
- switch (val1) {
+ int state = (g_language == Common::DE_DEU && val1 > 3000 && val1 < 3020)
+ ? val1 - 3000 : val1;
+ switch (state) {
case 1:
if (getValue(1) != 1)
return 1;
@@ -394,8 +405,9 @@ int LiftbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScri
if (sentence->localWord("big") || sentence->localWord("small")) {
addResponse(getDialogueId(210215));
applyResponse();
- } else if (sentence->localWord("my") || sentence->contains("my") ||
- sentence->contains("bedroom") || sentence->contains("state")) {
+ } else if (sentence->localWord("my") || sentence->contains("my")
+ || sentence->contains("bedroom") || sentence->contains("state")
+ || sentence->contains("mein") || sentence->contains("schlafzimmer")) {
addResponse1(CTrueTalkManager::getStateValue(4), true, 0);
} else {
selectResponse(210763);
@@ -434,9 +446,11 @@ int LiftbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScri
case 14:
// Which lift am I in
stateVal = getState6();
- if (sentence->contains("elevator") ||
- (!sentence->contains("lift") && getRandomNumber(100) > 60))
- stateVal += 4;
+ if (g_language == Common::EN_ANY) {
+ if (sentence->contains("elevator") ||
+ (!sentence->contains("lift") && getRandomNumber(100) > 60))
+ stateVal += 4;
+ }
selectResponse(LIFT_RESPONSE_IDS[stateVal]);
applyResponse();
return 2;
@@ -450,7 +464,9 @@ int LiftbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScri
applyResponse();
return 2;
case 16:
- if (sentence->contains("elevator") || sentence->contains("elavator"))
+ if (g_language == Common::DE_DEU)
+ addResponse(30589);
+ else if (sentence->contains("elevator") || sentence->contains("elavator"))
addResponse(30579);
else
addResponse(30580);
@@ -461,6 +477,7 @@ int LiftbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScri
return 1;
break;
default:
+
break;
}
@@ -510,11 +527,12 @@ int LiftbotScript::addResponse1(int index, bool flag, int id) {
return 1;
} else if (index == getCurrentFloor()) {
if (index == 1) {
- addResponse(30558 - (getRandomBit() ? 290 : 0));
+ addResponse(TRANSLATE(30558 - (getRandomBit() ? 290 : 0),
+ 30567 - (getRandomBit() ? 297 : 0)));
addResponse(getDialogueId(210589));
} else {
if (index == 39)
- addResponse(30346);
+ addResponse(TRANSLATE(30346, 30348));
addResponse(getDialogueId(210589));
}
@@ -539,9 +557,10 @@ int LiftbotScript::addResponse1(int index, bool flag, int id) {
if (flag) {
if (index == 1) {
- selectResponse(30558 - (getRandomBit() ? 290 : 0));
+ selectResponse(TRANSLATE(30558 - (getRandomBit() ? 290 : 0),
+ 30567 - (getRandomBit() ? 297 : 0)));
} else if (index == 39) {
- addResponse(30346);
+ addResponse(TRANSLATE(30346, 30348));
} else {
if (getRandomNumber(100) > 35 && index >= 2 && index <= 38) {
addResponse(getDialogueId(DIALOGUE_IDS[index - 2]));
@@ -638,7 +657,7 @@ int LiftbotScript::sentence1(const TTsentence *sentence) {
diff = -100;
}
- if (sentence->localWord("lobby"))
+ if (g_language == Common::EN_ANY && sentence->localWord("lobby"))
diff = (getValue(1) == 0 ? 1 : 0) - 99;
if (sentence->localWord("bottomofwell") || sentence->contains("bottom"))
diff = 39;
@@ -656,22 +675,25 @@ int LiftbotScript::sentence1(const TTsentence *sentence) {
}
if (sentence->_category == 4 || sentence->localWord("find")
- || sentence->contains("get to")) {
+ || sentence->contains("get to")
+ || sentence->contains("komme ich")
+ || sentence->contains("ich will zum")
+ || sentence->contains("ich will zur")
+ || sentence->contains("ich will ins")
+ || sentence->contains("ich will in")) {
if (getCurrentFloor() != diff) {
selectResponse(diff == 1 ? 210769 : 210764);
- applyResponse();
} else if (!newId) {
selectResponse(210764);
- applyResponse();
- } else if (newId >= 210715 && newId <= 210719) {
- selectResponse(newId);
- applyResponse();
- } else {
+ } else if (newId > 210715 && newId <= 210719) {
addResponse(getDialogueId(210720));
+ selectResponse(getDialogueId(newId));
selectResponse(210715);
- applyResponse();
+ } else {
+ selectResponse(newId);
}
+ applyResponse();
return 1;
}
diff --git a/engines/titanic/true_talk/maitred_script.cpp b/engines/titanic/true_talk/maitred_script.cpp
index 98a4b42e70..1033db29e0 100644
--- a/engines/titanic/true_talk/maitred_script.cpp
+++ b/engines/titanic/true_talk/maitred_script.cpp
@@ -23,6 +23,7 @@
#include "common/textconsole.h"
#include "titanic/true_talk/maitred_script.h"
#include "titanic/true_talk/true_talk_manager.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -81,9 +82,10 @@ int MaitreDScript::process(const TTroomScript *roomScript, const TTsentence *sen
stopFighting(false);
_answerCtr = 0;
- if (sentence->contains("restaurant at the end of the universe")
+ if (sentence->contains(TRANSLATE("restaurant at the end of the universe",
+ "restaurant am ende des universums"))
|| sentence->contains("milliway")
- || sentence->contains("big bang burger bar")) {
+ || sentence->contains(TRANSLATE("big bang burger bar", "frittenbude"))) {
addResponse(getDialogueId(260975));
applyResponse();
} else if (processEntries(&_entries, _entryCount, roomScript, sentence) == 2) {
@@ -111,7 +113,20 @@ int MaitreDScript::process(const TTroomScript *roomScript, const TTsentence *sen
if (++_answerCtr > 50 || sentence->localWord("stop") || sentence->localWord("enough")
|| sentence->contains("i give up") || sentence->contains("i give in")
- || sentence->contains("i surrender") || sentence->contains("i submit")) {
+ || sentence->contains("i surrender") || sentence->contains("i submit")
+ || sentence->contains("ich gebe auf")
+ || sentence->contains("ich ergebe mich")
+ || sentence->contains("ich kapituliere")
+ || sentence->contains("ich unterwerfe mich")
+ || sentence->contains("hoer auf")
+ || sentence->contains("lass")
+ || sentence->contains("schluss")
+ || sentence->contains("hoer sofort")
+ || sentence->contains("genug")
+ || sentence->contains("basta")
+ || sentence->contains("halt")
+ || sentence->contains("voll")
+ || sentence->contains("was soll")) {
_answerCtr = 0;
stopFighting(false);
addResponse(getDialogueId(260063));
@@ -123,17 +138,22 @@ int MaitreDScript::process(const TTroomScript *roomScript, const TTsentence *sen
addResponse(getDialogueId(260678));
} else if (sentence->contains("touche") || sentence->contains("toushe")) {
addResponse(getDialogueId(260098));
- } else if (sentence->contains("have at you")) {
+ } else if (sentence->contains("have at you") || sentence->contains("ausfall")) {
addResponse(getDialogueId(260047));
- } else if (sentence->contains("en garde") || sentence->contains("on guard")) {
+ } else if (sentence->contains("en garde") || sentence->contains("on guard")
+ || sentence->contains("attacke")) {
addResponse(getDialogueId(260008));
+ } else if (g_language == Common::DE_DEU && !sentence->contains("ich")
+ && (sentence->contains("surrender") || sentence->contains("gebe auf")
+ || sentence->contains("ergebe mich"))) {
+ addResponse(getDialogueId(260086));
} else if ((sentence->localWord("surrender") && !sentence->contains("i surrender"))
|| (sentence->contains("give up") && !sentence->contains("i give up"))
|| (sentence->contains("give in") && !sentence->contains("i give in"))
|| (sentence->contains("submit") && !sentence->contains("i submit"))) {
addResponse(getDialogueId(260086));
} else {
- addResponse(getDialogueId(260031));
+ addResponse(getDialogueId(260131));
}
applyResponse();
@@ -539,14 +559,14 @@ int MaitreDScript::updateState(uint oldId, uint newId, int index) {
}
if (!getValue(12)) {
- static const uint FLAG_IDS[] = {
+ static const uint FIGHTING_IDS[] = {
260080, 260066, 260067, 260062, 260050, 260087, 260090, 260171, 260173,
260184, 260193, 260202, 260205, 260220, 260221, 260223, 260231, 260232,
260365, 260373, 260374, 260387, 260421, 260622, 260695, 0
};
- for (uint idx = 0; FLAG_IDS[idx]; ++idx) {
- if (FLAG_IDS[idx] == newId) {
+ for (uint idx = 0; FIGHTING_IDS[idx]; ++idx) {
+ if (FIGHTING_IDS[idx] == newId) {
startFighting();
break;
}
@@ -916,7 +936,7 @@ int MaitreDScript::preprocess(const TTroomScript *roomScript, const TTsentence *
case 21:
case 22:
- if (sentence->contains("cooking")
+ if (sentence->contains(TRANSLATE("cooking", "kochen"))
|| (sentence->localWord("what") && sentence->localWord("mean"))) {
addResponse(getDialogueId(260238));
applyFlag = true;
diff --git a/engines/titanic/true_talk/script_handler.cpp b/engines/titanic/true_talk/script_handler.cpp
index f716a96130..0572cd4190 100644
--- a/engines/titanic/true_talk/script_handler.cpp
+++ b/engines/titanic/true_talk/script_handler.cpp
@@ -32,13 +32,13 @@ namespace Titanic {
/*------------------------------------------------------------------------*/
-CScriptHandler::CScriptHandler(CTitleEngine *owner, int val1, int val2) :
+CScriptHandler::CScriptHandler(CTitleEngine *owner, int val1, VocabMode vocabMode) :
_owner(owner), _script(owner->_script), _parser(this), _inputCtr(0), _concept1P(nullptr),
_concept2P(nullptr), _concept3P(nullptr), _concept4P(nullptr) {
g_vm->_scriptHandler = this;
g_vm->_script = _script;
- g_vm->_exeResources.reset(this, val1, val2);
- _vocab = new TTvocab(val2);
+ g_vm->_exeResources.reset(this, val1, vocabMode);
+ _vocab = new TTvocab(vocabMode);
}
CScriptHandler::~CScriptHandler() {
diff --git a/engines/titanic/true_talk/script_handler.h b/engines/titanic/true_talk/script_handler.h
index b8e62a586c..149532bd1b 100644
--- a/engines/titanic/true_talk/script_handler.h
+++ b/engines/titanic/true_talk/script_handler.h
@@ -50,7 +50,7 @@ public:
TTconcept *_concept3P;
TTconcept *_concept4P;
public:
- CScriptHandler(CTitleEngine *owner, int val1, int val2);
+ CScriptHandler(CTitleEngine *owner, int val1, VocabMode vocabMode);
~CScriptHandler();
/**
diff --git a/engines/titanic/true_talk/succubus_script.cpp b/engines/titanic/true_talk/succubus_script.cpp
index 94875840b3..34ae772e1c 100644
--- a/engines/titanic/true_talk/succubus_script.cpp
+++ b/engines/titanic/true_talk/succubus_script.cpp
@@ -24,6 +24,7 @@
#include "titanic/true_talk/succubus_script.h"
#include "titanic/true_talk/true_talk_manager.h"
#include "titanic/titanic.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -171,15 +172,28 @@ int SuccUBusScript::process(const TTroomScript *roomScript, const TTsentence *se
}
ScriptChangedResult SuccUBusScript::scriptChanged(const TTroomScript *roomScript, uint id) {
- if (id == 148)
- CTrueTalkManager::setFlags(3, 1);
- else if (id == 150)
- CTrueTalkManager::setFlags(2, 1);
+ if (g_language == Common::EN_ANY) {
+ if (id == 148)
+ CTrueTalkManager::setFlags(3, 1);
+ else if (id == 150)
+ CTrueTalkManager::setFlags(2, 1);
+ } else {
+ if (id == 70211 || id == 230013) {
+ addResponse(getDialogueId(230163));
+ applyResponse();
+ return SCR_2;
+ } else if (id < 70211) {
+ if (id == 148)
+ CTrueTalkManager::setFlags(3, 1);
+ else if (id == 150)
+ CTrueTalkManager::setFlags(2, 1);
+ }
+ }
if (id >= 230000 && id <= 230245) {
addResponse(getDialogueId(id));
applyResponse();
- } else if (id >= 70000 && id <= 70243) {
+ } else if (id >= 70000 && id <= (uint)TRANSLATE(70243, 70248)) {
addResponse(id);
applyResponse();
}
diff --git a/engines/titanic/true_talk/title_engine.cpp b/engines/titanic/true_talk/title_engine.cpp
index 23327014d6..f11bf1df29 100644
--- a/engines/titanic/true_talk/title_engine.cpp
+++ b/engines/titanic/true_talk/title_engine.cpp
@@ -23,6 +23,7 @@
#include "titanic/true_talk/title_engine.h"
#include "titanic/support/files_manager.h"
#include "titanic/titanic.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -34,9 +35,9 @@ CTitleEngine::~CTitleEngine() {
delete _scriptHandler;
}
-void CTitleEngine::setup(int val1, int val2) {
+void CTitleEngine::setup(int val1, VocabMode vocabMode) {
_script = new TTTitleScript();
- _scriptHandler = new CScriptHandler(this, val1, val2);
+ _scriptHandler = new CScriptHandler(this, val1, vocabMode);
}
/*------------------------------------------------------------------------*/
@@ -53,8 +54,8 @@ void STtitleEngine::reset() {
_indexes.clear();
}
-void STtitleEngine::setup(int val1, int val2) {
- CTitleEngine::setup(val1, 3);
+void STtitleEngine::setup(int val1, VocabMode vocabMode) {
+ CTitleEngine::setup(val1, TRANSLATE(VOCAB_MODE_EN, VOCAB_MODE_DE));
}
int STtitleEngine::setResponse(TTscriptBase *script, TTresponse *response) {
diff --git a/engines/titanic/true_talk/title_engine.h b/engines/titanic/true_talk/title_engine.h
index ca7a5dcd14..d9b21af423 100644
--- a/engines/titanic/true_talk/title_engine.h
+++ b/engines/titanic/true_talk/title_engine.h
@@ -51,7 +51,7 @@ public:
/**
* Setup the engine
*/
- virtual void setup(int val1, int val2 = 0);
+ virtual void setup(int val1, VocabMode vocabMode = VOCAB_MODE_NONE);
/**
* Sets a conversation reponse
@@ -80,7 +80,7 @@ public:
/**
* Setup the engine
*/
- virtual void setup(int val1, int val2 = 0);
+ virtual void setup(int val1, VocabMode vocabMode = VOCAB_MODE_NONE);
/**
* Sets a conversation reponse
diff --git a/engines/titanic/true_talk/true_talk_manager.cpp b/engines/titanic/true_talk/true_talk_manager.cpp
index e2e411559f..a7766e8d18 100644
--- a/engines/titanic/true_talk/true_talk_manager.cpp
+++ b/engines/titanic/true_talk/true_talk_manager.cpp
@@ -48,7 +48,7 @@ CTrueTalkNPC *CTrueTalkManager::_currentNPC;
CTrueTalkManager::CTrueTalkManager(CGameManager *owner) :
_gameManager(owner), _scripts(), _currentCharId(0),
_dialogueFile(nullptr), _dialogueId(0) {
- _titleEngine.setup(3, 3);
+ _titleEngine.setup(3, VOCAB_MODE_EN);
_quotes.load();
_quotesTree.load();
@@ -487,6 +487,7 @@ void CTrueTalkManager::playSpeech(TTtalker *talker, TTroomScript *roomScript, CV
// Setup proximities
CProximity p1, p2, p3;
if (isParrot) {
+ p1._soundType = Audio::Mixer::kSFXSoundType;
p1._channelMode = 3;
p2._channelMode = 5;
p3._channelMode = 4;
diff --git a/engines/titanic/true_talk/tt_npc_script.cpp b/engines/titanic/true_talk/tt_npc_script.cpp
index 2140f45203..c9d1beb353 100644
--- a/engines/titanic/true_talk/tt_npc_script.cpp
+++ b/engines/titanic/true_talk/tt_npc_script.cpp
@@ -29,6 +29,7 @@
#include "titanic/true_talk/tt_sentence.h"
#include "titanic/true_talk/true_talk_manager.h"
#include "titanic/titanic.h"
+#include "titanic/translation.h"
#include "common/algorithm.h"
#include "common/textconsole.h"
@@ -402,7 +403,135 @@ const TTscriptMapping *TTnpcScript::getMapping(int index) {
}
int TTnpcScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScript *roomScript, const TTsentence *sentence) {
- return 0;
+ if (g_language != Common::DE_DEU || !roomScript)
+ return 0;
+
+ switch (val1) {
+ case 516:
+ return getValue(1) == 1 ? 0 : 1;
+ case 517:
+ return getValue(1) == 2 ? 0 : 1;
+ case 518:
+ return getValue(1) == 3 ? 0 : 1;
+ case 519:
+ return getValue(1) != 1 ? 0 : 1;
+ case 520:
+ return getValue(1) != 2 ? 0 : 1;
+ case 521:
+ return getValue(1) != 3 ? 0 : 1;
+
+ case 522:
+ return roomScript->_scriptId == 101 ? 0 : 1;
+ case 523:
+ return roomScript->_scriptId == 106 ? 0 : 1;
+ case 524:
+ return roomScript->_scriptId == 107 ? 0 : 1;
+ case 525:
+ return roomScript->_scriptId == 108 ? 0 : 1;
+ case 526:
+ return roomScript->_scriptId == 109 ? 0 : 1;
+ case 527:
+ return roomScript->_scriptId == 110 ? 0 : 1;
+ case 528:
+ return roomScript->_scriptId == 111 ? 0 : 1;
+ case 529:
+ return roomScript->_scriptId == 112 ? 0 : 1;
+ case 530:
+ return roomScript->_scriptId == 113 ? 0 : 1;
+ case 531:
+ return roomScript->_scriptId == 114 ? 0 : 1;
+ case 532:
+ return roomScript->_scriptId == 115 ? 0 : 1;
+ case 533:
+ return roomScript->_scriptId == 116 ? 0 : 1;
+ case 534:
+ return roomScript->_scriptId == 117 ? 0 : 1;
+ case 535:
+ return roomScript->_scriptId == 118 ? 0 : 1;
+ case 536:
+ return roomScript->_scriptId == 120 ? 0 : 1;
+ case 537:
+ return roomScript->_scriptId == 121 ? 0 : 1;
+ case 538:
+ return roomScript->_scriptId == 122 ? 0 : 1;
+ case 539:
+ return roomScript->_scriptId == 123 ? 0 : 1;
+ case 540:
+ return roomScript->_scriptId == 124 ? 0 : 1;
+ case 541:
+ return roomScript->_scriptId == 125 ? 0 : 1;
+ case 542:
+ return roomScript->_scriptId == 126 ? 0 : 1;
+ case 543:
+ return roomScript->_scriptId == 127 ? 0 : 1;
+ case 544:
+ return roomScript->_scriptId == 128 ? 0 : 1;
+ case 545:
+ return roomScript->_scriptId == 129 ? 0 : 1;
+ case 546:
+ return roomScript->_scriptId == 130 ? 0 : 1;
+ case 547:
+ return roomScript->_scriptId == 131 ? 0 : 1;
+ case 548:
+ return roomScript->_scriptId == 132 ? 0 : 1;
+
+ case 549:
+ return roomScript->_scriptId != 101 ? 0 : 1;
+ case 550:
+ return roomScript->_scriptId != 106 ? 0 : 1;
+ case 551:
+ return roomScript->_scriptId != 107 ? 0 : 1;
+ case 552:
+ return roomScript->_scriptId != 108 ? 0 : 1;
+ case 553:
+ return roomScript->_scriptId != 109 ? 0 : 1;
+ case 554:
+ return roomScript->_scriptId != 110 ? 0 : 1;
+ case 555:
+ return roomScript->_scriptId != 111 ? 0 : 1;
+ case 556:
+ return roomScript->_scriptId != 112 ? 0 : 1;
+ case 557:
+ return roomScript->_scriptId != 113 ? 0 : 1;
+ case 558:
+ return roomScript->_scriptId != 114 ? 0 : 1;
+ case 559:
+ return roomScript->_scriptId != 115 ? 0 : 1;
+ case 560:
+ return roomScript->_scriptId != 116 ? 0 : 1;
+ case 561:
+ return roomScript->_scriptId != 117 ? 0 : 1;
+ case 562:
+ return roomScript->_scriptId != 118 ? 0 : 1;
+ case 563:
+ return roomScript->_scriptId != 120 ? 0 : 1;
+ case 564:
+ return roomScript->_scriptId != 121 ? 0 : 1;
+ case 565:
+ return roomScript->_scriptId != 122 ? 0 : 1;
+ case 566:
+ return roomScript->_scriptId != 123 ? 0 : 1;
+ case 567:
+ return roomScript->_scriptId != 124 ? 0 : 1;
+ case 568:
+ return roomScript->_scriptId != 125 ? 0 : 1;
+ case 569:
+ return roomScript->_scriptId != 126 ? 0 : 1;
+ case 570:
+ return roomScript->_scriptId != 127 ? 0 : 1;
+ case 571:
+ return roomScript->_scriptId != 128 ? 0 : 1;
+ case 572:
+ return roomScript->_scriptId != 129 ? 0 : 1;
+ case 573:
+ return roomScript->_scriptId != 130 ? 0 : 1;
+ case 574:
+ return roomScript->_scriptId != 131 ? 0 : 1;
+ case 575:
+ return roomScript->_scriptId != 132 ? 0 : 1;
+ default:
+ return 0;
+ }
}
void TTnpcScript::save(SimpleFile *file) {
diff --git a/engines/titanic/true_talk/tt_parser.cpp b/engines/titanic/true_talk/tt_parser.cpp
index 49f233888b..3481587b8d 100644
--- a/engines/titanic/true_talk/tt_parser.cpp
+++ b/engines/titanic/true_talk/tt_parser.cpp
@@ -401,7 +401,7 @@ int TTparser::replaceNumbers(TTstring &line, int startIndex) {
return index;
bool flag1 = false, flag2 = false, flag3 = false;
- int total = 0, factor = 0, endIndex = index;
+ int total = 0, factor = 0, endIndex;
do {
if (!(numEntry->_flags & NF_1)) {
diff --git a/engines/titanic/true_talk/tt_scripts.cpp b/engines/titanic/true_talk/tt_scripts.cpp
index b1f18771fe..bda6e672bd 100644
--- a/engines/titanic/true_talk/tt_scripts.cpp
+++ b/engines/titanic/true_talk/tt_scripts.cpp
@@ -30,6 +30,7 @@
#include "titanic/true_talk/maitred_script.h"
#include "titanic/true_talk/parrot_script.h"
#include "titanic/true_talk/succubus_script.h"
+#include "titanic/translation.h"
namespace Titanic {
@@ -63,14 +64,14 @@ TTscripts::TTscripts() {
addScript(new TTroomScript(scriptNum));
// Load npc scripts
- addScript(new DoorbotScript(104, "Doorbot", 0, "Fentible", 11, 1, -1, -1, -1, 0), 100);
+ addScript(new BarbotScript(100, "Barbot", 0, "Fortillian", 9, 1, -1, -1, -1, 0), 112);
addScript(new BellbotScript(101, "Bellbot", 0, "Krage", 8, 1), 110);
- addScript(new LiftbotScript(105, "LiftBot", 0, "Nobby", 11, 1, -1, -1, -1, 0), 103);
addScript(new DeskbotScript(103, "DeskBot", 0, "Marsinta", 11, 2), 110);
- addScript(new BarbotScript(100, "Barbot", 0, "Fortillian", 9, 1, -1, -1, -1, 0), 112);
+ addScript(new DoorbotScript(104, "Doorbot", 0, "Fentible", 11, 1, -1, -1, -1, 0), 100);
+ addScript(new LiftbotScript(105, "LiftBot", 0, "Nobby", 11, 1, -1, -1, -1, 0), 103);
addScript(new ParrotScript(107, "Parrot", 0, "The Parrot", 5, 1, -1, -1, -1, 0), 111);
- addScript(new MaitreDScript(112, "MaitreDBot", 0, "Dastrogaaar", 8, 1), 132);
addScript(new SuccUBusScript(111, "Succubus", 0, "Shorbert", 9, 1, -1, -1, -1, 0), 110);
+ addScript(new MaitreDScript(112, "MaitreDBot", 0, "Dastrogaaar", 8, 1), 132);
}
void TTscripts::addScript(TTnpcScript *script, int scriptId) {
diff --git a/engines/titanic/true_talk/tt_sentence.cpp b/engines/titanic/true_talk/tt_sentence.cpp
index 5a5bff7af8..b20f760f48 100644
--- a/engines/titanic/true_talk/tt_sentence.cpp
+++ b/engines/titanic/true_talk/tt_sentence.cpp
@@ -317,7 +317,7 @@ bool TTsentence::localWord(const char *str) const {
foundMatch = true;
}
- int val = g_vm->_exeResources.get18();
+ VocabMode mode = g_vm->_exeResources.getVocabMode();
bool result = false;
for (TTsentenceNode *nodeP = _nodesP; nodeP && !result;
@@ -327,9 +327,9 @@ bool TTsentence::localWord(const char *str) const {
continue;
const TTstring wordStr = nodeP->_wordP->_text;
- if (val == 3 && wordStr == str) {
+ if (mode == VOCAB_MODE_EN && wordStr == str) {
result = true;
- } else if (nodeP->_wordP->findSynByName(str, &syn, val)) {
+ } else if (nodeP->_wordP->findSynByName(str, &syn, mode)) {
result = true;
} else if (foundMatch) {
result = wordStr == "it" || wordStr == "that" || wordStr == "he"
diff --git a/engines/titanic/true_talk/tt_string.cpp b/engines/titanic/true_talk/tt_string.cpp
index 43910fc823..d7e4e86348 100644
--- a/engines/titanic/true_talk/tt_string.cpp
+++ b/engines/titanic/true_talk/tt_string.cpp
@@ -55,6 +55,10 @@ TTstring::~TTstring() {
}
void TTstring::operator=(const TTstring &str) {
+ if (&str == this)
+ // Trying to assign string to itself
+ return;
+
// Delete old string reference, if any
if (_data && --_data->_referenceCount == 0)
delete _data;
diff --git a/engines/titanic/true_talk/tt_string_node.cpp b/engines/titanic/true_talk/tt_string_node.cpp
index 60c506e8cd..16860cc93f 100644
--- a/engines/titanic/true_talk/tt_string_node.cpp
+++ b/engines/titanic/true_talk/tt_string_node.cpp
@@ -55,9 +55,9 @@ void TTstringNode::initialize(TTstringNode *oldNode) {
delete oldNode;
}
-TTstringNode *TTstringNode::findByName(const TTstring &str, int mode) {
+TTstringNode *TTstringNode::findByName(const TTstring &str, VocabMode mode) {
for (TTstringNode *nodeP = this; nodeP; nodeP = dynamic_cast<TTstringNode *>(nodeP->_nextP)) {
- if (nodeP->_mode == mode || (mode == 3 && nodeP->_mode < 3)) {
+ if (nodeP->_mode == mode || (mode == VOCAB_MODE_EN && nodeP->_mode < 3)) {
if (nodeP->_string == str)
return nodeP;
}
diff --git a/engines/titanic/true_talk/tt_string_node.h b/engines/titanic/true_talk/tt_string_node.h
index ced162b439..ee17cf1d38 100644
--- a/engines/titanic/true_talk/tt_string_node.h
+++ b/engines/titanic/true_talk/tt_string_node.h
@@ -51,7 +51,7 @@ public:
/**
* Find a string node in the linked chain by name
*/
- TTstringNode *findByName(const TTstring &str, int mode);
+ TTstringNode *findByName(const TTstring &str, VocabMode mode);
};
} // End of namespace Titanic
diff --git a/engines/titanic/true_talk/tt_vocab.cpp b/engines/titanic/true_talk/tt_vocab.cpp
index 20df6bd4bb..861d8f89a0 100644
--- a/engines/titanic/true_talk/tt_vocab.cpp
+++ b/engines/titanic/true_talk/tt_vocab.cpp
@@ -28,12 +28,13 @@
#include "titanic/true_talk/tt_picture.h"
#include "titanic/true_talk/tt_pronoun.h"
#include "titanic/titanic.h"
+#include "titanic/translation.h"
#include "common/file.h"
namespace Titanic {
-TTvocab::TTvocab(int val): _headP(nullptr), _tailP(nullptr),
- _word(nullptr), _vocabMode(val) {
+TTvocab::TTvocab(VocabMode vocabMode): _headP(nullptr), _tailP(nullptr),
+ _word(nullptr), _vocabMode(vocabMode) {
load("STVOCAB");
}
@@ -131,7 +132,8 @@ int TTvocab::load(const CString &name) {
}
void TTvocab::addWord(TTword *word) {
- TTword *existingWord = findWord(word->_text);
+ TTword *existingWord = g_language == Common::DE_DEU ? nullptr :
+ findWord(word->_text);
if (existingWord) {
if (word->_synP) {
@@ -160,7 +162,7 @@ TTword *TTvocab::findWord(const TTstring &str) {
TTword *word = _headP;
while (word && !flag) {
- if (_vocabMode != 3 || strcmp(word->c_str(), str)) {
+ if (_vocabMode != VOCAB_MODE_EN || strcmp(word->c_str(), str)) {
if (word->findSynByName(str, tempNode, _vocabMode))
flag = true;
else
@@ -203,7 +205,7 @@ TTword *TTvocab::getPrimeWord(TTstring &str, TTword **srcWord) const {
} else {
// Standard word
for (vocabP = _headP; vocabP; vocabP = vocabP->_nextP) {
- if (_vocabMode == 3 && !strcmp(str.c_str(), vocabP->c_str())) {
+ if (_vocabMode == VOCAB_MODE_EN && !strcmp(str.c_str(), vocabP->c_str())) {
newWord = vocabP->copy();
newWord->_nextP = nullptr;
newWord->setSyn(nullptr);
diff --git a/engines/titanic/true_talk/tt_vocab.h b/engines/titanic/true_talk/tt_vocab.h
index 614d1bbf02..7e5cc29bc5 100644
--- a/engines/titanic/true_talk/tt_vocab.h
+++ b/engines/titanic/true_talk/tt_vocab.h
@@ -23,6 +23,7 @@
#ifndef TITANIC_ST_VOCAB_H
#define TITANIC_ST_VOCAB_H
+#include "titanic/support/exe_resources.h"
#include "titanic/support/string.h"
#include "titanic/true_talk/tt_string.h"
#include "titanic/true_talk/tt_word.h"
@@ -34,7 +35,7 @@ private:
TTword *_headP;
TTword *_tailP;
TTword *_word;
- int _vocabMode;
+ VocabMode _vocabMode;
private:
/**
* Load the vocab data
@@ -77,7 +78,7 @@ private:
*/
TTword *getPrefixedWord(TTstring &str) const;
public:
- TTvocab(int val);
+ TTvocab(VocabMode vocabMode);
~TTvocab();
/**
diff --git a/engines/titanic/true_talk/tt_word.cpp b/engines/titanic/true_talk/tt_word.cpp
index 5ed3e5755f..c05b61e48c 100644
--- a/engines/titanic/true_talk/tt_word.cpp
+++ b/engines/titanic/true_talk/tt_word.cpp
@@ -163,14 +163,14 @@ uint TTword::readNumber(const char *str) {
}
bool TTword::testFileHandle(FileHandle file) const {
- if (g_vm->_exeResources.is18Equals(3))
+ if (g_vm->_exeResources.isVocabMode(VOCAB_MODE_EN))
return true;
// TODO: Figure out why original compares passed file handle against specific values
return true;
}
-bool TTword::findSynByName(const TTstring &str, TTsynonym *dest, int mode) const {
+bool TTword::findSynByName(const TTstring &str, TTsynonym *dest, VocabMode mode) const {
if (!_synP)
return false;
diff --git a/engines/titanic/true_talk/tt_word.h b/engines/titanic/true_talk/tt_word.h
index 7a42614f43..207c1c155b 100644
--- a/engines/titanic/true_talk/tt_word.h
+++ b/engines/titanic/true_talk/tt_word.h
@@ -23,6 +23,7 @@
#ifndef TITANIC_TT_WORD_H
#define TITANIC_TT_WORD_H
+#include "titanic/support/exe_resources.h"
#include "titanic/support/simple_file.h"
#include "titanic/true_talk/tt_string.h"
#include "titanic/true_talk/tt_synonym.h"
@@ -102,9 +103,10 @@ public:
* Finds a synonym in the word by name, if one exists
* @param str Name to search for
* @param dest Destination synonym instance to copy match into
+ * @param mode Specifies English or German vocab mode
* @returns Returns true if a match was found
*/
- bool findSynByName(const TTstring &str, TTsynonym *dest, int mode) const;
+ bool findSynByName(const TTstring &str, TTsynonym *dest, VocabMode mode) const;
const char *c_str() const { return _text.c_str(); }
operator const char *() const { return c_str(); }
diff --git a/engines/xeen/map.cpp b/engines/xeen/map.cpp
index f904344206..ccad967575 100644
--- a/engines/xeen/map.cpp
+++ b/engines/xeen/map.cpp
@@ -952,7 +952,7 @@ void Map::load(int mapId) {
break;
default:
_animationInfo.load("dark.dat");
- _monsterData.load("ddark.mon");
+ _monsterData.load("dark.mon");
_wallPicSprites.load("darkpic.dat");
break;
}
diff --git a/engines/xeen/saves.cpp b/engines/xeen/saves.cpp
index 4df4b3727c..f9a26b1d6b 100644
--- a/engines/xeen/saves.cpp
+++ b/engines/xeen/saves.cpp
@@ -30,17 +30,27 @@
namespace Xeen {
OutFile::OutFile(XeenEngine *vm, const Common::String filename) :
- _vm(vm), _filename(filename) {
+ _vm(vm),
+ _filename(filename),
+ _backingStream(DisposeAfterUse::YES) {
+}
+
+uint32 OutFile::write(const void *dataPtr, uint32 dataSize) {
+ return _backingStream.write(dataPtr, dataSize);
+}
+
+int32 OutFile::pos() const {
+ return _backingStream.pos();
}
void OutFile::finalize() {
uint16 id = BaseCCArchive::convertNameToId(_filename);
if (!_vm->_saves->_newData.contains(id))
- _vm->_saves->_newData[id] = Common::MemoryWriteStreamDynamic(DisposeAfterUse::YES);
+ _vm->_saves->_newData[id] = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::YES);
- Common::MemoryWriteStreamDynamic &out = _vm->_saves->_newData[id];
- out.write(getData(), size());
+ Common::MemoryWriteStreamDynamic *out = _vm->_saves->_newData[id];
+ out->write(_backingStream.getData(), _backingStream.size());
}
/*------------------------------------------------------------------------*/
@@ -54,6 +64,9 @@ SavesManager::SavesManager(XeenEngine *vm, Party &party) :
}
SavesManager::~SavesManager() {
+ for (Common::HashMap<uint16, Common::MemoryWriteStreamDynamic *>::iterator it = _newData.begin(); it != _newData.end(); it++) {
+ delete (*it)._value;
+ }
delete[] _data;
}
@@ -86,8 +99,8 @@ Common::SeekableReadStream *SavesManager::createReadStreamForMember(const Common
// save manager, then return that new resource
uint16 id = BaseCCArchive::convertNameToId(name);
if (_newData.contains(id)) {
- Common::MemoryWriteStreamDynamic stream = _newData[id];
- return new Common::MemoryReadStream(stream.getData(), stream.size());
+ Common::MemoryWriteStreamDynamic *stream = _newData[id];
+ return new Common::MemoryReadStream(stream->getData(), stream->size());
}
// Retrieve the resource from the loaded savefile
diff --git a/engines/xeen/saves.h b/engines/xeen/saves.h
index 2571c46600..9c161c838c 100644
--- a/engines/xeen/saves.h
+++ b/engines/xeen/saves.h
@@ -44,14 +44,19 @@ struct XeenSavegameHeader {
class XeenEngine;
class SavesManager;
-class OutFile : public Common::MemoryWriteStreamDynamic {
+class OutFile : public Common::WriteStream {
private:
XeenEngine *_vm;
Common::String _filename;
+ Common::MemoryWriteStreamDynamic _backingStream;
public:
OutFile(XeenEngine *vm, const Common::String filename);
void finalize();
+
+ uint32 write(const void *dataPtr, uint32 dataSize) override;
+
+ int32 pos() const override;
};
class SavesManager: public BaseCCArchive {
@@ -60,7 +65,7 @@ private:
XeenEngine *_vm;
Party &_party;
byte *_data;
- Common::HashMap<uint16, Common::MemoryWriteStreamDynamic > _newData;
+ Common::HashMap<uint16, Common::MemoryWriteStreamDynamic *> _newData;
void load(Common::SeekableReadStream *stream);
public:
diff --git a/engines/zvision/file/save_manager.cpp b/engines/zvision/file/save_manager.cpp
index 8a78e988b3..4259937a3b 100644
--- a/engines/zvision/file/save_manager.cpp
+++ b/engines/zvision/file/save_manager.cpp
@@ -273,11 +273,11 @@ Common::SeekableReadStream *SaveManager::getSlotFile(uint slot) {
void SaveManager::prepareSaveBuffer() {
delete _tempThumbnail;
- _tempThumbnail = new Common::MemoryWriteStreamDynamic;
+ _tempThumbnail = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::YES);
Graphics::saveThumbnail(*_tempThumbnail);
delete _tempSave;
- _tempSave = new Common::MemoryWriteStreamDynamic;
+ _tempSave = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::YES);
_engine->getScriptManager()->serialize(_tempSave);
}
diff --git a/graphics/fonts/bdf.cpp b/graphics/fonts/bdf.cpp
index 511ea5cde1..00e98316d6 100644
--- a/graphics/fonts/bdf.cpp
+++ b/graphics/fonts/bdf.cpp
@@ -275,9 +275,6 @@ byte *loadCharacter(Common::SeekableReadStream &stream, int &encoding, int &adva
return bitmap;
}
}
-
- delete[] bitmap;
- return 0;
}
void freeBitmaps(byte **bitmaps, int size) {
diff --git a/graphics/pixelformat.h b/graphics/pixelformat.h
index 7b966a8a15..6b22a14142 100644
--- a/graphics/pixelformat.h
+++ b/graphics/pixelformat.h
@@ -159,7 +159,15 @@ struct PixelFormat {
inline bool operator==(const PixelFormat &fmt) const {
// TODO: If aLoss==8, then the value of aShift is irrelevant, and should be ignored.
- return 0 == memcmp(this, &fmt, sizeof(PixelFormat));
+ return bytesPerPixel == fmt.bytesPerPixel &&
+ rLoss == fmt.rLoss &&
+ gLoss == fmt.gLoss &&
+ bLoss == fmt.bLoss &&
+ aLoss == fmt.aLoss &&
+ rShift == fmt.rShift &&
+ gShift == fmt.gShift &&
+ bShift == fmt.bShift &&
+ aShift == fmt.aShift;
}
inline bool operator!=(const PixelFormat &fmt) const {
diff --git a/gui/debugger.cpp b/gui/debugger.cpp
index 33afc9cd53..1de322ae93 100644
--- a/gui/debugger.cpp
+++ b/gui/debugger.cpp
@@ -110,6 +110,7 @@ int Debugger::debugPrintf(const char *format, ...) {
count = _debuggerDialog->vprintFormat(1, format, argptr);
#else
count = ::vprintf(format, argptr);
+ ::fflush(stdout);
#endif
va_end (argptr);
return count;
diff --git a/gui/module.mk b/gui/module.mk
index 5b32689a82..eb3ee88a9a 100644
--- a/gui/module.mk
+++ b/gui/module.mk
@@ -37,14 +37,6 @@ MODULE_OBJS := \
widgets/scrollcontainer.o \
widgets/tab.o
-# HACK: create_project's XCode generator relies on the following ifdef
-# structure to pick up the right browser implementations for iOS and Mac OS X.
-# Please keep it like this or XCode project generation will be broken.
-# FIXME: This only works because of a bug in how we handle ifdef statements in
-# create_project's module.mk parser. create_project will think that both
-# browser.o and browser_osx.o is built when both IPHONE and MACOSX is set.
-# When we do proper ifdef handling, only browser.o will be picked up, breaking
-# XCode generation.
ifdef IPHONE
MODULE_OBJS += \
browser.o
diff --git a/gui/options.cpp b/gui/options.cpp
index 3ff027620e..82eb252cf1 100644
--- a/gui/options.cpp
+++ b/gui/options.cpp
@@ -120,8 +120,6 @@ enum {
static const char *savePeriodLabels[] = { _s("Never"), _s("every 5 mins"), _s("every 10 mins"), _s("every 15 mins"), _s("every 30 mins"), 0 };
static const int savePeriodValues[] = { 0, 5 * 60, 10 * 60, 15 * 60, 30 * 60, -1 };
-static const char *outputRateLabels[] = { _s("<default>"), _s("8 kHz"), _s("11 kHz"), _s("22 kHz"), _s("44 kHz"), _s("48 kHz"), 0 };
-static const int outputRateValues[] = { 0, 8000, 11025, 22050, 44100, 48000, -1 };
// The keyboard mouse speed values range from 0 to 7 and correspond to speeds shown in the label
// "10" (value 3) is the default speed corresponding to the speed before introduction of this control
static const char *kbdMouseSpeedLabels[] = { "3", "5", "8", "10", "13", "15", "18", "20", 0 };
@@ -167,8 +165,6 @@ void OptionsDialog::init() {
_midiPopUpDesc = 0;
_oplPopUp = 0;
_oplPopUpDesc = 0;
- _outputRatePopUp = 0;
- _outputRatePopUpDesc = 0;
_enableMIDISettings = false;
_gmDevicePopUp = 0;
_gmDevicePopUpDesc = 0;
@@ -335,15 +331,6 @@ void OptionsDialog::build() {
_oplPopUp->setSelectedTag(id);
}
- if (_outputRatePopUp) {
- _outputRatePopUp->setSelected(1);
- int value = ConfMan.getInt("output_rate", _domain);
- for (int i = 0; outputRateLabels[i]; i++) {
- if (value == outputRateValues[i])
- _outputRatePopUp->setSelected(i);
- }
- }
-
if (_multiMidiCheckbox) {
if (!loadMusicDeviceSetting(_gmDevicePopUp, "gm_device"))
_gmDevicePopUp->setSelected(0);
@@ -641,17 +628,6 @@ void OptionsDialog::apply() {
}
}
- if (_outputRatePopUp) {
- if (_enableAudioSettings) {
- if (_outputRatePopUp->getSelectedTag() != 0)
- ConfMan.setInt("output_rate", _outputRatePopUp->getSelectedTag(), _domain);
- else
- ConfMan.removeKey("output_rate", _domain);
- } else {
- ConfMan.removeKey("output_rate", _domain);
- }
- }
-
// MIDI options
if (_multiMidiCheckbox) {
if (_enableMIDISettings) {
@@ -860,8 +836,6 @@ void OptionsDialog::setAudioSettingsState(bool enabled) {
_oplPopUpDesc->setEnabled(enabled);
_oplPopUp->setEnabled(enabled);
}
- _outputRatePopUpDesc->setEnabled(enabled);
- _outputRatePopUp->setEnabled(enabled);
}
void OptionsDialog::setMIDISettingsState(bool enabled) {
@@ -1096,14 +1070,6 @@ void OptionsDialog::addAudioControls(GuiObject *boss, const Common::String &pref
++ed;
}
- // Sample rate settings
- _outputRatePopUpDesc = new StaticTextWidget(boss, prefix + "auSampleRatePopupDesc", _("Output rate:"), _("Higher value specifies better sound quality but may be not supported by your soundcard"));
- _outputRatePopUp = new PopUpWidget(boss, prefix + "auSampleRatePopup", _("Higher value specifies better sound quality but may be not supported by your soundcard"));
-
- for (int i = 0; outputRateLabels[i]; i++) {
- _outputRatePopUp->appendEntry(_(outputRateLabels[i]), outputRateValues[i]);
- }
-
_enableAudioSettings = true;
}
diff --git a/gui/options.h b/gui/options.h
index ed07307f80..b1666c2fff 100644
--- a/gui/options.h
+++ b/gui/options.h
@@ -159,8 +159,6 @@ private:
PopUpWidget *_midiPopUp;
StaticTextWidget *_oplPopUpDesc;
PopUpWidget *_oplPopUp;
- StaticTextWidget *_outputRatePopUpDesc;
- PopUpWidget *_outputRatePopUp;
StaticTextWidget *_mt32DevicePopUpDesc;
PopUpWidget *_mt32DevicePopUp;
diff --git a/gui/themes/default.inc b/gui/themes/default.inc
index 23488a8cd0..fe48acd1a0 100644
--- a/gui/themes/default.inc
+++ b/gui/themes/default.inc
@@ -907,14 +907,6 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
"type='PopUp' "
"/>"
"</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
-"<widget name='auSampleRatePopupDesc' "
-"type='OptionsLabel' "
-"/>"
-"<widget name='auSampleRatePopup' "
-"type='PopUp' "
-"/>"
-"</layout>"
"<layout type='horizontal' padding='0,0,0,0' spacing='10'>"
"<widget name='subToggleDesc' "
"type='OptionsLabel' "
@@ -2496,14 +2488,6 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
"type='PopUp' "
"/>"
"</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
-"<widget name='auSampleRatePopupDesc' "
-"type='OptionsLabel' "
-"/>"
-"<widget name='auSampleRatePopup' "
-"type='PopUp' "
-"/>"
-"</layout>"
"<layout type='horizontal' padding='0,0,0,0' spacing='3' center='true'>"
"<widget name='subToggleDesc' "
"type='OptionsLabel' "
diff --git a/gui/themes/scummclassic.zip b/gui/themes/scummclassic.zip
index acb6d20a99..4f7e3ce68d 100644
--- a/gui/themes/scummclassic.zip
+++ b/gui/themes/scummclassic.zip
Binary files differ
diff --git a/gui/themes/scummclassic/classic_layout.stx b/gui/themes/scummclassic/classic_layout.stx
index 2bb07d914c..e3411dcb3e 100644
--- a/gui/themes/scummclassic/classic_layout.stx
+++ b/gui/themes/scummclassic/classic_layout.stx
@@ -335,14 +335,6 @@
type = 'PopUp'
/>
</layout>
- <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
- <widget name = 'auSampleRatePopupDesc'
- type = 'OptionsLabel'
- />
- <widget name = 'auSampleRatePopup'
- type = 'PopUp'
- />
- </layout>
<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10'>
<widget name = 'subToggleDesc'
type = 'OptionsLabel'
diff --git a/gui/themes/scummclassic/classic_layout_lowres.stx b/gui/themes/scummclassic/classic_layout_lowres.stx
index d0c3170d8e..4b710b8999 100644
--- a/gui/themes/scummclassic/classic_layout_lowres.stx
+++ b/gui/themes/scummclassic/classic_layout_lowres.stx
@@ -332,14 +332,6 @@
type = 'PopUp'
/>
</layout>
- <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
- <widget name = 'auSampleRatePopupDesc'
- type = 'OptionsLabel'
- />
- <widget name = 'auSampleRatePopup'
- type = 'PopUp'
- />
- </layout>
<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '3' center = 'true'>
<widget name = 'subToggleDesc'
type = 'OptionsLabel'
diff --git a/gui/themes/scummmodern.zip b/gui/themes/scummmodern.zip
index 055c82ad3c..fae746b72c 100644
--- a/gui/themes/scummmodern.zip
+++ b/gui/themes/scummmodern.zip
Binary files differ
diff --git a/gui/themes/scummmodern/scummmodern_layout.stx b/gui/themes/scummmodern/scummmodern_layout.stx
index 0a1c377aea..34b66e2274 100644
--- a/gui/themes/scummmodern/scummmodern_layout.stx
+++ b/gui/themes/scummmodern/scummmodern_layout.stx
@@ -349,14 +349,6 @@
type = 'PopUp'
/>
</layout>
- <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
- <widget name = 'auSampleRatePopupDesc'
- type = 'OptionsLabel'
- />
- <widget name = 'auSampleRatePopup'
- type = 'PopUp'
- />
- </layout>
<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10'>
<widget name = 'subToggleDesc'
type = 'OptionsLabel'
diff --git a/gui/themes/scummmodern/scummmodern_layout_lowres.stx b/gui/themes/scummmodern/scummmodern_layout_lowres.stx
index 3da8a6c6a3..506a97520e 100644
--- a/gui/themes/scummmodern/scummmodern_layout_lowres.stx
+++ b/gui/themes/scummmodern/scummmodern_layout_lowres.stx
@@ -330,14 +330,6 @@
type = 'PopUp'
/>
</layout>
- <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
- <widget name = 'auSampleRatePopupDesc'
- type = 'OptionsLabel'
- />
- <widget name = 'auSampleRatePopup'
- type = 'PopUp'
- />
- </layout>
<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '3' center = 'true'>
<widget name = 'subToggleDesc'
type = 'OptionsLabel'
diff --git a/gui/themes/translations.dat b/gui/themes/translations.dat
index 8ce44a4fce..edfc2cfc79 100644
--- a/gui/themes/translations.dat
+++ b/gui/themes/translations.dat
Binary files differ
diff --git a/image/codecs/bmp_raw.cpp b/image/codecs/bmp_raw.cpp
index 68d70f25f6..1a856f1306 100644
--- a/image/codecs/bmp_raw.cpp
+++ b/image/codecs/bmp_raw.cpp
@@ -30,6 +30,8 @@ namespace Image {
BitmapRawDecoder::BitmapRawDecoder(int width, int height, int bitsPerPixel) : Codec(),
_surface(0), _width(width), _height(height), _bitsPerPixel(bitsPerPixel) {
+ _surface = new Graphics::Surface();
+ _surface->create(_width, _height, getPixelFormat());
}
BitmapRawDecoder::~BitmapRawDecoder() {
@@ -42,9 +44,6 @@ BitmapRawDecoder::~BitmapRawDecoder() {
const Graphics::Surface *BitmapRawDecoder::decodeFrame(Common::SeekableReadStream &stream) {
Graphics::PixelFormat format = getPixelFormat();
- _surface = new Graphics::Surface();
- _surface->create(_width, _height, format);
-
int srcPitch = _width * (_bitsPerPixel >> 3);
int extraDataLength = (srcPitch % 4) ? 4 - (srcPitch % 4) : 0;
diff --git a/image/codecs/indeo/indeo.cpp b/image/codecs/indeo/indeo.cpp
index 34377537d7..4826137358 100644
--- a/image/codecs/indeo/indeo.cpp
+++ b/image/codecs/indeo/indeo.cpp
@@ -466,6 +466,9 @@ IVI45DecContext::IVI45DecContext() : _gb(nullptr), _frameNum(0), _frameType(0),
IndeoDecoderBase::IndeoDecoderBase(uint16 width, uint16 height, uint bitsPerPixel) : Codec() {
switch (bitsPerPixel) {
+ case 15:
+ _pixelFormat = Graphics::PixelFormat(2, 5, 5, 5, 0, 0, 5, 10, 0);
+ break;
case 16:
_pixelFormat = Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0);
break;
diff --git a/image/codecs/indeo3.cpp b/image/codecs/indeo3.cpp
index d862d5352b..7d3a121bcd 100644
--- a/image/codecs/indeo3.cpp
+++ b/image/codecs/indeo3.cpp
@@ -45,6 +45,9 @@ Indeo3Decoder::Indeo3Decoder(uint16 width, uint16 height, uint bitsPerPixel) : _
_iv_frame[1].the_buf = 0;
switch (bitsPerPixel) {
+ case 15:
+ _pixelFormat = Graphics::PixelFormat(2, 5, 5, 5, 0, 0, 5, 10, 0);
+ break;
case 16:
_pixelFormat = Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0);
break;
diff --git a/image/png.cpp b/image/png.cpp
index cfbcba5206..86d33b6952 100644
--- a/image/png.cpp
+++ b/image/png.cpp
@@ -122,11 +122,6 @@ bool PNGDecoder::loadStream(Common::SeekableReadStream &stream) {
png_destroy_read_struct(&pngPtr, NULL, NULL);
return false;
}
- png_infop endInfo = png_create_info_struct(pngPtr);
- if (!endInfo) {
- png_destroy_read_struct(&pngPtr, &infoPtr, NULL);
- return false;
- }
png_set_error_fn(pngPtr, NULL, pngError, pngWarning);
// TODO: The manual says errors should be handled via setjmp
@@ -239,7 +234,7 @@ bool PNGDecoder::loadStream(Common::SeekableReadStream &stream) {
png_read_end(pngPtr, NULL);
// Destroy libpng structures
- png_destroy_read_struct(&pngPtr, &infoPtr, &endInfo);
+ png_destroy_read_struct(&pngPtr, &infoPtr, NULL);
return true;
#else
@@ -287,11 +282,6 @@ bool writePNG(Common::WriteStream &out, const Graphics::Surface &input, const bo
png_destroy_write_struct(&pngPtr, NULL);
return false;
}
- png_infop endInfo = png_create_info_struct(pngPtr);
- if (!endInfo) {
- png_destroy_write_struct(&pngPtr, &infoPtr);
- return false;
- }
png_set_error_fn(pngPtr, NULL, pngError, pngWarning);
// TODO: The manual says errors should be handled via setjmp
diff --git a/po/be_BY.po b/po/be_BY.po
index 3ad2cd1421..0ee462e17b 100644
--- a/po/be_BY.po
+++ b/po/be_BY.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.8.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-09-04 04:39+0200\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\n"
"PO-Revision-Date: 2017-07-26 18:23+0000\n"
"Last-Translator: Ivan Lukyanov <lid-gr@tut.by>\n"
"Language-Team: Belarusian <https://translations.scummvm.org/projects/scummvm/"
@@ -59,7 +59,7 @@ 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -155,7 +155,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -241,9 +241,8 @@ msgstr ""
"¼ÞÒÐ ÓãÛìÝö. ·ÜÕÝÐ ÓíâÐÙ ÝÐÛÐÔë ÝÕ ßÕàÐâÒÞàëæì àãáÚãî ÒÕàáöî ÓãÛìÝö þ "
"ÑÕÛÐàãáÚãî"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<ßÐ ×ÜÐþçÐÝÝö>"
@@ -265,11 +264,11 @@ msgstr "¿ÛÐâäÞàÜÐ:"
msgid "Engine"
msgstr "ÀãåÐÒöçÞÚ"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "³àÐäöÚÐ"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "³àä"
@@ -282,7 +281,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "¿ÕàÐÚàëæì ÓÛÐÑÐÛìÝëï ÝÐÛÐÔë ÓàÐäöÚö"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "°þÔëñ"
@@ -295,11 +294,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "¿ÕàÐÚàëæì ÓÛÐÑÐÛìÝëï ÝÐÛÐÔë ÐþÔëñ"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "³ãçÝÐáæì"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "³ãçÝÐáæì"
@@ -313,7 +312,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "¿ÕàÐÚàëæì ÓÛÐÑÐÛìÝëï ÝÐÛÐÔë ÓãçÝÐáæö"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -326,7 +325,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "¿ÕàÐÚàëæì ÓÛÐÑÐÛìÝëï ÝÐÛÐÔë MIDI"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -339,11 +338,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "¿ÕàÐÚàëæì ÓÛÐÑÐÛìÝëï ÝÐÛÐÔë MT-32"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "ÈÛïåö"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "ÈÛïåö"
@@ -357,7 +356,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "ÈÛïå ÔÐ ÓãÛìÝö:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "´ÐÔ. èÛïå:"
@@ -366,44 +365,44 @@ msgstr "´ÐÔ. èÛïå:"
msgid "Specifies path to additional data used by the game"
msgstr "¿ÐÚÐ×ÒÐÕ èÛïå ÔÐ ÔÐÔÐâÚÞÒëå äÐÙÛÐþ, ÔÐÔ×ÕÝëå ÔÛï ÓãÛìÝö"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "´ÐÔ. èÛïå:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "·ÐåÐÒÐÝÝö ÓãÛìÝïþ:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "¿ÐÚÐ×ÒÐÕ èÛïå ÔÐ ×ÐåÐÒÐÝÝïþ ÓãÛìÝö"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
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:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "½Õ ×ÐÔÐÔ×ÕÝë"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "¿Ð ×ÜÐþçÐÝÝö"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "°ÑïàëæÕ SoundFont"
@@ -411,7 +410,7 @@ msgstr "°ÑïàëæÕ SoundFont"
msgid "Select additional game directory"
msgstr "°ÑïàëæÕ ÔÐÔÐâÚÞÒãî ÔëàíÚâÞàëî ÓãÛìÝö"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "°ÑïàëæÕ ÔëàíÚâÞàëî ÔÛï ×ÐåÐÒÐÝÝïþ"
@@ -504,7 +503,7 @@ msgstr "ÁöÝãáÞöÔÐ"
msgid "Triangle"
msgstr "ÂàÞåÚãâÝÐï"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "ÀÞ×ÝÐÕ"
@@ -597,7 +596,7 @@ msgstr "°ÑïàëæÕ Ô×ÕïÝÝÕ ÔÛï ßàë×ÝÐçíÝÝï"
msgid "~Q~uit"
msgstr "~²~ëåÐÔ"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "·ÐÒïàèëæì ScummVM"
@@ -605,7 +604,7 @@ msgstr "·ÐÒïàèëæì ScummVM"
msgid "A~b~out..."
msgstr "¿àÐ ß~à~ÐÓàÐÜã..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "¿àÐ ßàÐÓàÐÜã ScummVM"
@@ -682,7 +681,7 @@ msgstr "¿ÞèãÚ:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "·ÐÓàã×öæì ÓãÛìÝî:"
@@ -692,7 +691,7 @@ msgstr "·ÐÓàã×öæì ÓãÛìÝî:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "·ÐÓàã×öæì"
@@ -802,244 +801,212 @@ msgstr "ÚÞÖÝëï 15 åÒöÛöÝ"
msgid "every 30 mins"
msgstr "ÚÞÖÝëï 30 åÒöÛöÝ"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 Ú³æ"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 Ú³æ"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 Ú³æ"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 Ú³æ"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 Ú³æ"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "½Õ ×ÐÔÐÔ×ÕÝë"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "½Õ ÐâàëÜÐÛÐáï þÖëæì ×ÜÕÝë ÝÕÚÐâÞàëå ÓàÐäöçÝëå ÝÐÛÐÔ:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "ÒöÔíÐàíÖëÜ ÝÕ ÜÞÖÐ Ñëæì ×ÜÕÝÕÝë."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "àíÖëÜ ÚÐàíÚâëàÞþÚö áãÐÔÝÞáöÝ ÑÐÚÞþ ÝÕ ÜÞÖÐ Ñëæì ×ÜÕÝÕÝë"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "ßÞþÝÐíÚàÐÝÝë àíÖëÜ ÝÕ ÜÞÖÐ Ñëæì ×ÜÕÝÕÝë"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
msgid "the filtering setting could not be changed"
msgstr "àíÖëÜ äöÛìâàÐÒÐÝÝï ÝÕ ÜÞÖÐ Ñëæì ×ÜÕÝÕÝë"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr "¿ÐÚÐ×Ðæì ÚöàÐÒÝÝÕ íÚàÐÝÐÜ"
-#: gui/options.cpp:962
+#: gui/options.cpp:936
msgid "Touchpad mouse mode"
msgstr "ÀíÖëÜ âÐçßÐÔÐ"
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr "¿ÐÜïÝïæì ÜÕáæÐÜö ÚÝÞßÚö \"¼ÕÝî\" ö \"½Ð×ÐÔ\""
-#: gui/options.cpp:971
+#: gui/options.cpp:945
msgid "Pointer Speed:"
msgstr "ÅãâÚÐáæì ßÐÚÐ×ÐÛìÝöÚÐ:"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr "ºöàÐÒÐÝÝÕ åãâÚÐáæî ßÐÚÐ×ÐÛìÝöÚÐ Üëèë/ÔÖÞÙáæöÚÐ"
-#: gui/options.cpp:973
+#: gui/options.cpp:947
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "ÅãâÚÐáæì ßÐÚÐ×ÐÛìÝöÚÐ:"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr "¼ñàâÒÐï ×ÞÝÐ ÔÖÞÙáæöÚÐ:"
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr "¼ñàâÒÐï ×ÞÝÐ ÐÝÐÛÐÓÐÒÐÓÐ ÔÖÞÙáæöÚÐ"
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr "¼ñàâÒÐï ×ÞÝÐ ÔÖÞÙáæöÚÐ:"
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr "°ßÐàÐâÝë èíÙÔÐà:"
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr "ÀÞ×Ýëï ÐßÐàÐâÝëï èíÙÔÐàë ÔÐîæì àÞ×Ýëï Òö×ãÐÛìÝëï íäÕÚâë"
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr "°ßÐàÐâÝë èíÙÔÐà:"
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr "ÀÞ×Ýëï èíÙÔÐàë ÔÐîæì àÞ×Ýëï Òö×ãÐÛìÝëï íäÕÚâë"
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "³àÐä. àíÖëÜ:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "ÀíÖëÜ àÐáâàã:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "ÁßÕæëïÛìÝëï àíÖëÜë àíÝÔíàëÝÓã, ßÐÔâàëÜÞþÒÐÝëï ÝÕÚÐâÞàëÜö ÓãÛìÝïÜö"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "¿ÞþÝÐíÚàÐÝÝë àíÖëÜ"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Filter graphics"
msgstr "ÄöÛìâàÐÒÐÝÝÕ ÓàÐäöÚö"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr "²ëÚÐàëáâÞþÒÐæì ÛöÝÕÙÝãî äöÛìâàÐæëî ÔÛï ßÐÒÕÛöçíÝÝï ÐÔàÞ×ÝÕÝÝï"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "ºÐàíÚæëï áãÐÔÝÞáöÝ ÑÐÚÞþ"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "ºÐàíÚâÐÒÐæì áãÐÔÝÞáöÝë ÑÐÚÞþ ÔÛï ÓãÛìÝïþ × ÐÔàÞ×ÝÕÝÝÕÜ 320x200"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "ÃßÐÔÐÑÐÝÐï ßàëÛÐÔÐ:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "³ãÚÐÒÐï ßàëÛÐÔÐ:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr "·Ð×ÝÐçÐÕ þßÐÔÐÑÐÝãî ÓãÚÐÒãî ßàëÛÐÔã æö íÜãÛïâÐà ÓãÚÐÒÞÙ ÚÐàâë"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr "·Ð×ÝÐçÐÕ ÒëåÞÔÝãî ÓãÚÐÒãî ßàëÛÐÔã æö íÜãÛïâÐà ÓãÚÐÒÞÙ ÚÐàâë"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr "ÃßÐÔÐÑÐÝÐï:"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "³ãÚÐÒÐï ßàëÛÐÔÐ:"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "ÍÜãÛïâÐà AdLib:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "³ãÚÐÒÐï ÚÐàâÐ AdLib ÒëÚÐàëáâÞþÒÐÕææÐ ÜÝÞÓöÜö ÓãÛìÝïÜö"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr "ÇÐèçëÝï ÓãÚã:"
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"±ÞÛìèëï ×ÝÐçíÝÝö ×ÐÔÐîæì ÛÕßèãî ïÚÐáæì ÓãÚã, ÐÔÝÐÚ ïÝë ÜÞÓãæì ÝÕ "
-"ßÐÔâàëÜÛöÒÐææÐ ÒÐèÐÙ ÓãÚÐÒÞÙ ÚÐàâÐÙ"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "¿àëÛÐÔÐ GM:"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr "·Ð×ÝÐçÐÕ ÒëåÞÔÝãî ÓãÚÐÒãî ßàëÛÐÔã ÔÛï MIDI"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "½Õ ÒëÚÐàëáâÞþÒÐæì Üã×ëÚã ÔÛï General MIDI"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "²ëÚÐàëáâÞþÒÐæì ßÕàèãî ÔÐáâãßÝãî ßàëÛÐÔã"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr ""
"SoundFont'ë ßÐÔâàëÜÛöÒÐîææÐ ÝÕÚÐâÞàëÜö ÓãÚÐÒëÜö ÚÐàâÐÜö, FluidSynth Ôë "
"Timidity"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "·ÜÕèÐÝë àíÖëÜ AdLib/MIDI"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "²ëÚÐàëáâÞþÒÐæì ö MIDI, ö AdLib ÔÛï ÓÕÝÕàÐæëö ÓãÚã"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "Ã×ÜÐæÝÕÝÝÕ MIDI:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "½ÐÛ. MT-32:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr ""
"¿ÐÚÐ×ÒÐÕ ÓãÚÐÒãî ßàëÛÐÔã ßÐ ×ÜÐþçÐÝÝö ÔÛï ÒëÒÐÔã ÝÐ Roland MT-32/LAPC1/CM32l/"
"CM64"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "ÁÐßàÐþÔÝë Roland MT-32 (×ÐÑÐàÐÝöæì íÜãÛïæëî GM)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
@@ -1047,16 +1014,16 @@ msgstr ""
"°Ô×ÝÐçæÕ, ÚÐÛö þ ÒÐá ßÐÔÚÛîçÐÝÐ Roland-áãÜïèçÐÛìÝÐï ÓãÚÐÒÐï ßàëÛÐÔÐ ö Òë "
"ÖÐÔÐÕæÕ ïÕ ÒëÚÐàëáâÞþÒÐæì"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "ÁÐßàÐþÔÝë Roland MT-32 (ÑÕ× íÜãÛïæëö GM)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr "ÀíÖëÜ Roland GS (ÔÐ×ÒÞÛöæì ÜÐßöÝÓ MT-32)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
@@ -1064,273 +1031,273 @@ msgstr ""
"°Ô×ÝÐçæÕ, ÚÐÛö ÖÐÔÐÕæÕ ÔÐ×ÒÞÛöæì ÜÐßöÝÓ ÔÛï íÜãÛïæëö MT-32 ÝÐ ßàëÛÐÔ×Õ "
"Rolans GS"
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "½Õ ÒëÚÐàëáâÞþÒÐæì Üã×ëÚã ÔÛï MT-32"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "ÂíÚáâ ö ÐÓãçÚÐ:"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "°ÓãçÚÐ"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "ÁãÑâëâàë"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "°ÑÞÕ"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "ÅãâÚÐáæì âëâàÐþ:"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "ÂíÚáâ ö ÐÓãçÚÐ:"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "°Óãç"
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "狄"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "°ÑÞÕ"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "¿ÐÚÐ×ÒÐæì áãÑâëâàë ö ßàÐÙÓàÐÒÐæì ÓÐÒÞàÚã"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "ÅãâÚÐáæì âëâàÐþ:"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "³ãçÝ. Üã×ëÚö:"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "³ãçÝ. Üã×ëÚö:"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "²ëÚÛ. ãáñ"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "³ãçÝÐáæì SFX:"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "³ãçÝÐáæì áßÕæëïÛìÝëå ÓãÚÐÒëå íäÕÚâÐþ"
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "³ãçÝÐáæì SFX:"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "³ãçÝ. ÐÓãçÚö:"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "³ãçÝ. ÐÓãçÚö:"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr "ÈíÙÔÐà"
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
msgid "Control"
msgstr "ºöàÐÒÐÝÝÕ"
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr "½ÐÛÐÔë FluidSynth"
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "ÈÛïå ÔÐ âíÜ:"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "ÈÛïå ÔÐ âíÜ:"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr ""
"¿ÐÚÐ×ÒÐÕ èÛïå ÔÐ ÔÐÔÐâÚÞÒëå äÐÙÛÐþ ÔÐÔ×ÕÝëå, ÒëÚÐàëáâÞþÒÐÝëå ãáöÜö ÓãÛìÝïÜö "
"ÐÑÞ ScummVM"
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "ÈÛïå ÔÐ ßÛÐÓöÝÐþ:"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "ÈÛïå ÔÐ ßÛÐÓöÝÐþ:"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "ÀÞ×ÝÐÕ"
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "ÂíÜÐ:"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "¼ÐÛïÒÐÛÚÐ GUI:"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "°þâÐ×ÐåÐÒÐÝÝÕ:"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "°þâÐ×ÐåÐÒÐÝÝÕ:"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "ºÛÐÒöèë"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "¼ÞÒÐ GUI:"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "¼ÞÒÐ ÓàÐäöçÝÐÓÐ öÝâíàäÕÙáã ScummVM"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr "¿àÐÒïàÐæì ÐÑÝÐþÛÕÝÝö:"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr "ÏÚ çÐáâÐ ßàÐÒïàÐæì ÐÑÝÐþÛÕÝÝö ScummVM"
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr "¿àÐÒÕàëæì æïßÕà"
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr "²ÞÑÛÐÚÐ"
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr "²ÞÑÛÐÚÐ"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr "²ÞÑÛÐÚÐ:"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr "°ÚâëþÝÐÕ ÒÞÑÛÐçÝÐÕ áåÞÒöèçÐ"
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr "<ÝïÜÐ>"
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "ºÐàëáâÐç:"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr "¦Üï ÚÐàëáâÐçÐ þ ÓíâëÜ ÒÞÑÛÐÚã"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr "ºÐàëáâÐÝë ÐÑ'ñÜ:"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr "°Ñ'ñÜ, ×ÐÝïâë ×ÐåÐÒÐÝÝïÜö ÓãÛìÝïþ ScummVM ÝÐ ÓíâëÜ ÒÞÑÛÐÚã"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr "°ßÞèÝïï áöÝåàÐÝö×Ðæëï:"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr "ºÐÛö àÐÑöÛÐáï ÐßÞèÝïï áöÝåàÐÝö×Ðæëï × ÓíâëÜ ÒÞÑÛÐÚÐÜ"
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr "´ÐÛãçëæì"
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr "°ÔÚàëÒÐÕ ÔëïÛÞÓ ÔÛï ÝÐÛÐÔë ÔÐÛãçíÝÝï ÔÐ ÒÞÑÛÐÚÐ"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr "°ÑÝÐÒöæì"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr "°ÑÝÐþÛïÕ ÑïÓãçãî öÝäÐàÜÐæëî ßàÐ ÒÞÑÛÐÚÐ (öÜï ÚÐàëáâÐçÐ ö ÐÑ'ñÜ)"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Download"
msgstr "·ÐÓàã×öæì"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr "°ÔÚàëÒÐÕ ÜÕÝÕÔÖÐà ×ÐÓàã×ÐÚ"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr "·Ðßãáæöæì áÕàÒÕà"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr "·ÐßãáÚÐÕ ÛÐÚÐÛìÝë ÒíÑ-áÕàÒÕà"
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
msgid "Not running"
msgstr "½Õ ×ÐßãèçÐÝë"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
msgid "/root/ Path:"
msgstr "ºÐàÐÝñÒÐï ÔëàíÚâÞàëï:"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
msgid "Specifies which directory the Files Manager can access"
msgstr "¿ÐÚÐ×ÒÐÕ èÛïå ÔÐ ÔëàíÚâÞàëö, ÚãÔë ÑãÔ×Õ ÜÕæì ÔÞáâãß ¼ÕÝÕÔÖÐà äÐÙÛÐþ"
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "ºÞàÐÝì:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid "Server's port:"
msgstr "¿Þàâ áÕàÒÕàÐ:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
@@ -1338,27 +1305,27 @@ msgstr ""
"½ãÜÐà ßÞàâÐ, ÒëÚÐàëáâÞþÒÐÝë áÕàÒÕàÐÜ\n"
"ÃáâÐÛïÒÐÝÝÕ ÔÞáâãßã ßàÐæãÕ âÞÛìÚö × ßÞàâÐÜ ßÐ ×ÜÐþçÐÝÝö"
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr "ÃÖëæì"
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
msgid "Failed to change cloud storage!"
msgstr "½Õ ÐâàëÜÐÛÐáï ×ÜïÝöæì ÒÞÑÛÐÚÐ!"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr "ÃÖÞ ÐÚâëþÝÐ öÝèÐÕ ÒÞÑÛÐçÝÐÕ áåÞÒöèçÐ."
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
msgid "Theme does not support selected language!"
msgstr "ÂíÜÐ ÝÕ ßÐÔâàëÜÒÐÕ ÐÑàÐÝãî ÜÞÒã!"
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
msgid "Theme cannot be loaded!"
msgstr "½ÕÜÐÓçëÜÐ ×ÐÓàã×öæì âíÜã!"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
@@ -1366,48 +1333,48 @@ msgstr ""
"\n"
"½ÐÛÐÔë ÝÐ ÒÞÚÛÐÔæë \"ÀÞ×ÝÐÕ\" ÑãÔãæì ÐÔÝÞþÛÕÝë."
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr "½Õ ÜÐÓã ßöáÐæì ã ÐÑàÐÝãî ÔëàíÚâÞàëî. ºÐÛö ÛÐáÚÐ, Ð×ÝÐçæÕ öÝèãî."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "°ÑïàëæÕ ÔëàíÚâÞàëî ÔÛï âíÜ GUI"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "°ÑïàëæÕ ÔëàíÚâÞàëî × ÔÐÔÐâÚÞÒëÜö äÐÙÛÐÜö"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "°ÑïàëæÕ ÔëàíÚâÞàëî × ßÛÐÓöÝÐÜö"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
msgid "Select directory for Files Manager /root/"
msgstr "°ÑïàëæÕ ÔëàíÚâÞàëî ÔÛï ÚÞàÐÝï þ ¼ÕÝÕÔÖÐàë äÐÙÛÐþ"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr "%llu ÑÐÙâÐþ"
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr "<×ÐàÐ×>"
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
msgid "<never>"
msgstr "<ÝöÚÞÛö>"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
msgid "Stop server"
msgstr "ÁßëÝöæì áÕàÒÕà"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr "ÁßëÝïÕ ÛÐÚÐÛìÝë ÒíÑ-áÕàÒÕà"
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1873,9 +1840,9 @@ msgstr "³~Ð~ÛÞþÝÐÕ ÜÕÝî"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1894,9 +1861,10 @@ msgstr "·ÐåÐÒÐæì ÓãÛìÝî:"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1913,7 +1881,7 @@ msgstr ""
"ÛÐáÚÐ, ×ÒïàÝöæÕáï ÔÐ äÐÙÛÐ README ×Ð ÑÐ×ÐÒÐÙ öÝäÐàÜÐæëïÙ, Ð âÐÚáÐÜÐ "
"öÝáâàãÚæëïÜö ßàÐ âÞÕ, ïÚ ÐâàëÜÐæì ÔÐÛÕÙèãî ÔÐßÐÜÞÓã."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2250,7 +2218,7 @@ msgid "OpenGL"
msgstr "OpenGL"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "°ÚÞÝÝë àíÖëÜ"
@@ -2260,22 +2228,22 @@ msgid "Resolution: %dx%d"
msgstr "°ÔàÞ×ÝÕÝÝÕ: %dx%d"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "ºÐàíÚæëï áãÐÔÝÞáöÝ ÑÐÚÞþ ãÚÛîçÐÝÐ"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "ºÐàíÚæëï áãÐÔÝÞáöÝ ÑÐÚÞþ ÒëÚÛîçÐÝÐ"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
msgid "Filtering enabled"
msgstr "ÄöÛìâàÐæëï þÚÛîçÐÝÐ"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
msgid "Filtering disabled"
msgstr "ÄöÛìâàÐæëï ÒëÚÛîçÐÝÐï"
@@ -2290,7 +2258,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "±Õ× ßÐÒÕÛöçíÝÝï"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "°ÚâëþÝë ÓàÐäöçÝë äöÛìâà:"
@@ -2446,24 +2414,24 @@ msgstr "ÁïàíÔÝïï ßáâàëçÚÐ"
msgid "Right Click"
msgstr "¿àÐÒÐï ßáâàëçÚÐ"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "ÁåÐÒÐæì ScummVM"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "ÁåÐÒÐæì ÐáâÐâÝöï"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "¿ÐÚÐ×Ðæì ãáñ"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "°ÚÝÞ"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "·ÓÐàÝãæì"
@@ -2927,8 +2895,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2941,8 +2909,8 @@ msgstr "Ã×ÝÐÒöæì ÓãÛìÝî:"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3130,12 +3098,12 @@ msgid "Move Right"
msgstr "¦áæö ÝÐßàÐÒÐ"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr "¿ÐÒÐàÞâ ÝÐÛÕÒÐ"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr "¿ÐÒÐàÞâ ÝÐßàÐÒÐ"
@@ -3471,39 +3439,39 @@ msgstr ""
"\n"
"ºÐÛö ÛÐáÚÐ, ßÐÒÕÔÐÜöæÕ ßàÐ ÓíâÐ ÚÐÜÐÝÔ×Õ ScummVM."
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
msgid "Invalid file name for saving"
msgstr "½ïßàÐÒöÛìÝÐÕ öÜï äÐÙÛÐ ÔÛï ×Ðßöáã"
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr "ÃÒÕàå/¿ÐÒïÛ. ÜÐèâÐÑ/½ÐßÕàÐÔ/°ÔçëÝöæì Ô×ÒÕàë"
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr "ÃÝö×/¿ÐÜÕÝè. ÜÐèâÐÑ"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr "¿ÐÚÐ×Ðæì/áåÐÒÐæì öÝÒÕÝâÐà"
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr "¿ÐÚÐ×Ðæì/áåÐÒÐæì Ñöïçëß"
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr "´×ÕïÝÝÕ/²ëÑÐà"
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr "ÃÚÛîçëæì ßÐÚÐ× ÔÐÔ×ÕÝëå ã æíÝâàë íÚàÐÝÐ"
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr "¿ÐÚÐ×Ðæì/áåÐÒÐæì öÝäÐíÚàÐÝ"
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr "¿ÐÚÐ×Ðæì/áåÐÒÐæì ÜÕÝî ßÐþ×ë"
@@ -3602,7 +3570,16 @@ msgid ""
msgstr ""
"²ëÚÐàëáâÞþÒÐæì ÐÛìâíàÝÐâëþÝë ÝÐÑÞà áàíÑÝëå ÚãàáÞàÐþ ×ÐÜÕáâ ×ÒëçÐÙÝëå ×ÐÛÐâëå"
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+#, fuzzy
+msgid "Enable content censoring"
+msgstr "ÃÚÛîçëæì ßÛëÒãçëï ÚãàáÞàë"
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:837
msgid "(Autosave)"
msgstr "(°þâÐ×ÐåÐÒÐÝÝÕ)"
@@ -3622,23 +3599,23 @@ msgstr ""
"ºÐÛö ÛÐáÚÐ, áÚÐàëáâÐÙæÕáï öÝèÐÙ ßàÐÓàÐÜÐÙ ÔÛï ßàÐÓÛïÔã äÐÙÛÐ ÔÐßÐÜÞÓö "
"ÓãÛìÝö: %s"
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr "ÄÐàÜÐâ ×ÐåÐÒÐÝÐÙ ÓãÛìÝö áÐáâÐàíþ, ÝÕ ÜÐÓã ßàÐçëâÐæì ïÓÞ"
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr "²Õàáöï äÐÙÛÐ ×ÐåÐÒÐÝÝï %d, ÐÛÕ ÜÐÚáöÜÐÛìÝÐ ßÐÔâàëÜÒÐÕææÐ %0d"
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
msgstr ""
"³íâë äÐÙÛ ×ÐåÐÒÐÝÝï Ñëþ áâÒÞàÐÝë öÝèÐÙ ÒÕàáöïÙ ÓãÛìÝö, ÝÕ ÜÐÓã ßàÐçëâÐæì ïÓÞ"
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4664,6 +4641,31 @@ msgstr ""
"³íâë äÐÙÛ ×ÐåÐÒÐÝÐÙ ÓãÛìÝö ÜÐÕ ÒÕàáöî %u, ÐÛÕ àãåÐÒöçÞÚ ßÐÔâàëÜÒÐÕ ÒÕàáöö ÔÐ "
"%d. ²ÐÜ ßÐâàíÑÝÐ ÝÞÒÐï ÒÕàáöï ScummVM ÔÛï ÚÐàëáâÐÝÝï ÓíâëÜ äÐÙÛÐÜ."
+#~ msgid "8 kHz"
+#~ msgstr "8 Ú³æ"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 Ú³æ"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 Ú³æ"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 Ú³æ"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 Ú³æ"
+
+#~ msgid "Output rate:"
+#~ msgstr "ÇÐèçëÝï ÓãÚã:"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "±ÞÛìèëï ×ÝÐçíÝÝö ×ÐÔÐîæì ÛÕßèãî ïÚÐáæì ÓãÚã, ÐÔÝÐÚ ïÝë ÜÞÓãæì ÝÕ "
+#~ "ßÐÔâàëÜÛöÒÐææÐ ÒÐèÐÙ ÓãÚÐÒÞÙ ÚÐàâÐÙ"
+
#~ 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."
diff --git a/po/ca_ES.po b/po/ca_ES.po
index 72a4221fa9..d549212b95 100644
--- a/po/ca_ES.po
+++ b/po/ca_ES.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.6.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-09-04 04:39+0200\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\n"
"PO-Revision-Date: 2017-02-20 14:15+0000\n"
"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n"
"Language-Team: Catalan <https://translations.scummvm.org/projects/scummvm/"
@@ -58,7 +58,7 @@ msgstr "Amunt"
#: 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -155,7 +155,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -241,9 +241,8 @@ msgstr ""
"Idioma del joc. Això no convertirà la vostra versió Espanyola del joc a "
"Anglès"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<per defecte>"
@@ -265,11 +264,11 @@ msgstr "Platafor.:"
msgid "Engine"
msgstr "Motor"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "Gràfics"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "GFX"
@@ -282,7 +281,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "Canviar les opcions de gràfics"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "Àudio"
@@ -295,11 +294,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "Canviar les opcions d'àudio"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "Volum"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "Volum"
@@ -313,7 +312,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "Canviar les opcions de volum"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -326,7 +325,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "Canviar les opcions de MIDI"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -339,11 +338,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "Canviar les opcions de MT-32"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "Camins"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "Camins"
@@ -357,7 +356,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "Camí joc:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "Camí extra:"
@@ -366,44 +365,44 @@ msgstr "Camí extra:"
msgid "Specifies path to additional data used by the game"
msgstr "Especifica el camí de dades addicionals utilitzades pel joc"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "Camí extra:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "Camí de partides:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "Especifica on es desaran les partides"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
msgctxt "lowres"
msgid "Save Path:"
msgstr "Partides:"
#: gui/editgamedialog.cpp:301 gui/editgamedialog.cpp:398
-#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "Cap"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "Per defecte"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "Seleccioneu el fitxer SoundFont"
@@ -411,7 +410,7 @@ msgstr "Seleccioneu el fitxer SoundFont"
msgid "Select additional game directory"
msgstr "Seleccioneu el directori addicional del joc"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "Seleccioneu el directori de les partides desades"
@@ -502,7 +501,7 @@ msgstr "Sinus"
msgid "Triangle"
msgstr "Triangle"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "Misc"
@@ -597,7 +596,7 @@ msgstr "Sel·leccioneu una acció a assignar"
msgid "~Q~uit"
msgstr "~T~anca"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "Surt de ScummVM"
@@ -605,7 +604,7 @@ msgstr "Surt de ScummVM"
msgid "A~b~out..."
msgstr "~Q~uant a..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "Quant a ScummVM"
@@ -684,7 +683,7 @@ msgstr "Cerca:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "Carrega partida:"
@@ -694,7 +693,7 @@ msgstr "Carrega partida:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "Carrega"
@@ -804,246 +803,214 @@ msgstr "cada 15 minuts"
msgid "every 30 mins"
msgstr "cada 30 minuts"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 kHz"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 kHz"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 kHz"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 kHz"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 kHz"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "Cap"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "No s'han pogut aplicar alguns canvis de les opcions gràfiques:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "no s'ha pogut canviar el mode de vídeo."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "no s'ha pogut canviar l'ajust de la correcció d'aspecte"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "no s'ha pogut canviar l'ajust de pantalla completa"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
msgid "the filtering setting could not be changed"
msgstr "no s'han pogut canviar els ajustes de filtratge"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr ""
-#: gui/options.cpp:962
+#: gui/options.cpp:936
#, fuzzy
msgid "Touchpad mouse mode"
msgstr "Mode Touchpad desactivat."
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr ""
-#: gui/options.cpp:971
+#: gui/options.cpp:945
#, fuzzy
msgid "Pointer Speed:"
msgstr "Velocitat:"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr ""
-#: gui/options.cpp:973
+#: gui/options.cpp:947
#, fuzzy
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "Velocitat:"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr ""
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "Mode gràfic:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "Mode de pintat:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "Modes de tramat especials suportats per alguns jocs"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "Mode pantalla completa"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Filter graphics"
msgstr "Filtres de gràfics"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr ""
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "Correcció de la relació d'aspecte"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "Corregeix la relació d'aspecte per jocs de 320x200"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "Disp. preferit:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "Disp. de música:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr "Especifica el dispositiu de so o l'emulador de tarja de so preferit"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr "Especifica el dispositiu de so o l'emulador de tarja de so de sortida"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr "Disp. preferit:"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "Disp. de música:"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "Emulador AdLib:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "AdLib s'utilitza per la música de molts jocs"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr "Freq. sortida:"
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"Valors més alts especifiquen millor qualitat de so però pot ser que la "
-"vostra tarja de so no ho suporti"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "Dispositiu GM:"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr ""
"Especifica el dispositiu de so per defecte per a la sortida General MIDI"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "No utilitzis música General MIDI"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "Utilitza el primer dispositiu disponible"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "Fitxer SoundFont:"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr "Algunes targes de so, FluidSynth i Timidity suporten SoundFont"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "Mode combinat AdLib/MIDI"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "Utilitza MIDI i la generació de so AdLib alhora"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "Guany MIDI:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "Disposit. MT-32:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr ""
"Especifica el dispositiu de so per defecte per a la sortida de Roland MT-32/"
"LAPC1/CM32l/CM64"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "Roland MT-32 real (desactiva l'emulació GM)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
@@ -1051,366 +1018,366 @@ msgstr ""
"Marqueu si voleu utilitzar el vostre dispositiu hardware real de so "
"compatible amb Roland connectat al vostre ordinador"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "Roland MT-32 real (sense emulació GM)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr "Dispositiu Roland GS (activar conversió MT-32)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
msgstr ""
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "No utilitzis música de Roland MT-32"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "Text i Veus:"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "Veus"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "Subtítols"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "Ambdós"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "Velocitat de subt.:"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "Text i Veus:"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "Veus"
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "Subt"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "Ambdós"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "Mostra els subtítols i reprodueix la veu"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "Veloc. de subt.:"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "Volum de música:"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "Volum de música:"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "Silenciar tot"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "Volum d'efectes:"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "Volum dels sons d'efectes especials"
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "Volum d'efectes:"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "Volum de veus:"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "Volum de veus:"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr ""
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
#, fuzzy
msgid "Control"
msgstr "Controla el ratolí"
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr "Configuració de FluidSynth"
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "Camí dels temes:"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "Camí temes:"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr ""
"Especifica el camí de les dades addicionals utilitzades per tots els jocs o "
"pel ScummVM"
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "Camí dels connectors:"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "Camí de connectors:"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "Misc"
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "Tema:"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "Pintat GUI:"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "Desat automàtic:"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "Auto-desat:"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "Tecles"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "Idioma GUI:"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "Idioma de la interfície d'usuari de ScummVM"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr ""
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr ""
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr ""
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr ""
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr ""
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr ""
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr ""
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr ""
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "Nom d'usuari:"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr ""
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr ""
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr ""
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr ""
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr ""
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr ""
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr ""
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr ""
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr ""
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Download"
msgstr "Descarregar"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr ""
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr ""
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr ""
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
msgid "Not running"
msgstr "Aturat"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
msgid "/root/ Path:"
msgstr "Directori /arrel/:"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
msgid "Specifies which directory the Files Manager can access"
msgstr "Especifica els directoris accessibles per al gestor d'arxius"
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "Directori /arrel/:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid "Server's port:"
msgstr "Port del servidor:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
msgstr ""
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr ""
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
msgid "Failed to change cloud storage!"
msgstr "Fallada al canviar l'emmagatzematge en línia!"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr ""
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
#, fuzzy
msgid "Theme does not support selected language!"
msgstr "El connector de motor no suporta partides desades"
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
#, fuzzy
msgid "Theme cannot be loaded!"
msgstr "La partida NO s'ha desat"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
msgstr ""
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr ""
"No es pot escriure al directori seleccionat. Si us plau, escolliu-ne un "
"altre."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "Seleccioneu el directori dels temes"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "Seleccioneu el directori dels fitxers extra"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "Seleccioneu el directori dels connectors"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
msgid "Select directory for Files Manager /root/"
msgstr "Selecciona el directori /arrel/ per al gestor d'arxius"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr ""
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr ""
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
msgid "<never>"
msgstr "<mai>"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
msgid "Stop server"
msgstr "Aturar servidor"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr ""
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1868,9 +1835,9 @@ msgstr "~R~etorna al Llançador"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1889,9 +1856,10 @@ msgstr "Desa la partida:"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1907,7 +1875,7 @@ msgstr ""
"Aquest motor no ofereix ajuda dins el joc. Consulteu el fitxer README per a "
"la informació bàsica i les instruccions sobre com obtenir més assistència."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, fuzzy, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2237,7 +2205,7 @@ msgid "OpenGL"
msgstr "OpenGL"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "Mode de finestra"
@@ -2247,22 +2215,22 @@ msgid "Resolution: %dx%d"
msgstr ""
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "S'ha activat la correcció de la relació d'aspecte"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "S'ha desactivat la correcció de la relació d'aspecte"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
msgid "Filtering enabled"
msgstr "Filtratge activat"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
msgid "Filtering disabled"
msgstr "Filtratge desactivat"
@@ -2277,7 +2245,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "Normal (no escalat)"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "Filtre de gràfics actiu:"
@@ -2433,24 +2401,24 @@ msgstr "Clic central"
msgid "Right Click"
msgstr "Clic dret"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "Amaga ScummVM"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "Oculta els altres"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "Mostra-ho tot"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "Finestra"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "Minimitza"
@@ -2909,8 +2877,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2923,8 +2891,8 @@ msgstr "Recupera la partida:"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3117,12 +3085,12 @@ msgid "Move Right"
msgstr "Mou a la dreta"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr "Gira a l'esquerra"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr "Gira a la dreta"
@@ -3443,40 +3411,40 @@ msgstr ""
"\n"
"Informeu-ne a l'equip."
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
#, fuzzy
msgid "Invalid file name for saving"
msgstr "Nom de partida desada incorrecte"
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr "Amunt/Amplia el zoom/Mou endavant/Obre les portes"
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr "Avall/Allunya el zoom"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr "Mostra/Oculta la safata d'inventari"
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr "Mostra/Oculta la safata del Biochip"
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr "Acció/Selecció"
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr "Conmuta la visualització de dades central"
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr "Mostra/Oculta la pantalla d'informació"
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr "Mostra/Oculta el menú de pausa"
@@ -3575,7 +3543,16 @@ msgstr ""
"Utilitza el conjunt alternatiu de cursors platejats, en lloc dels normals "
"daurats"
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+#, fuzzy
+msgid "Enable content censoring"
+msgstr "Activa els cursors flotants"
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:837
#, fuzzy
msgid "(Autosave)"
msgstr "Desat automàtic:"
@@ -3594,22 +3571,22 @@ msgstr ""
msgid "Please use an external viewer to open the game's help file: %s"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
msgstr ""
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4632,6 +4609,31 @@ msgid ""
"%d. You will need an updated version of the engine to use this saved game."
msgstr ""
+#~ msgid "8 kHz"
+#~ msgstr "8 kHz"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 kHz"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 kHz"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 kHz"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 kHz"
+
+#~ msgid "Output rate:"
+#~ msgstr "Freq. sortida:"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "Valors més alts especifiquen millor qualitat de so però pot ser que la "
+#~ "vostra tarja de so no ho suporti"
+
#~ 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."
diff --git a/po/cs_CZ.po b/po/cs_CZ.po
index 2fd72e2322..372724970e 100644
--- a/po/cs_CZ.po
+++ b/po/cs_CZ.po
@@ -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: 2017-09-04 04:39+0200\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\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/"
@@ -60,7 +60,7 @@ msgstr "Jít nahoru"
#: 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -157,7 +157,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -241,9 +241,8 @@ msgid ""
"English"
msgstr "Jazyk hry. Toto z va¹í ©panìlské verze neudìlá Anglickou"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<výchozí>"
@@ -265,11 +264,11 @@ msgstr "Platforma:"
msgid "Engine"
msgstr "Jádro"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "Obraz"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "GFX"
@@ -282,7 +281,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "Potlaèit globální nastavení obrazu"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "Zvuk"
@@ -295,11 +294,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "Potlaèit globální nastavení zvuku"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "Hlasitost"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "Hlasitost"
@@ -313,7 +312,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "Potlaèit globální nastavení hlasitosti"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -326,7 +325,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "Potlaèit globální nastavení MIDI"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -339,11 +338,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "Potlaèit globální nastavení MT-32"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "Cesty"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "Cesty"
@@ -357,7 +356,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "Cesta Hry:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "Dodateèná Cesta:"
@@ -366,44 +365,44 @@ msgstr "Dodateèná Cesta:"
msgid "Specifies path to additional data used by the game"
msgstr "Stanoví cestu pro dodateèná data pou¾itá ve høe"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "Dodateèná Cesta:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "Cesta pro ulo¾ení:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "Stanovuje, kam jsou umístìny va¹e ulo¾ené hry"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
msgctxt "lowres"
msgid "Save Path:"
msgstr "Cesta pro ulo¾ení:"
#: gui/editgamedialog.cpp:301 gui/editgamedialog.cpp:398
-#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "®ádné"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "Výchozí"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "Vybrat SoundFont"
@@ -411,7 +410,7 @@ msgstr "Vybrat SoundFont"
msgid "Select additional game directory"
msgstr "Vyberte dodateèný adresáø hry"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "Vyberte adresáø pro ulo¾ené hry"
@@ -503,7 +502,7 @@ msgstr "Sinus"
msgid "Triangle"
msgstr "Trojúhelník"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "Rùzné"
@@ -598,7 +597,7 @@ msgstr "Zvolte èinnost k mapování"
msgid "~Q~uit"
msgstr "~U~konèit"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "Ukonèit ScummVM"
@@ -606,7 +605,7 @@ msgstr "Ukonèit ScummVM"
msgid "A~b~out..."
msgstr "~O~ Programu..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "O ScummVM"
@@ -683,7 +682,7 @@ msgstr "Hledat:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "Nahrát hru:"
@@ -693,7 +692,7 @@ msgstr "Nahrát hru:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "Nahrát"
@@ -801,247 +800,215 @@ msgstr "Ka¾dých 15 min"
msgid "every 30 mins"
msgstr "Ka¾dých 30 min"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 kHz"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 kHz"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 kHz"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 kHz"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 kHz"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "®ádné"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "Nelze pou¾ít nìkteré zmìny mo¾ností grafiky:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "re¾im obrazu nemohl být zmìnìn."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "nastavení pomìru stran nemohlo být zmìnìno"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "nastavení celé obrazovky nemohlo být zmìnìno"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
#, fuzzy
msgid "the filtering setting could not be changed"
msgstr "nastavení celé obrazovky nemohlo být zmìnìno"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr ""
-#: gui/options.cpp:962
+#: gui/options.cpp:936
#, fuzzy
msgid "Touchpad mouse mode"
msgstr "Touchpad re¾im vypnut."
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr ""
-#: gui/options.cpp:971
+#: gui/options.cpp:945
#, fuzzy
msgid "Pointer Speed:"
msgstr "Rychlost:"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr ""
-#: gui/options.cpp:973
+#: gui/options.cpp:947
#, fuzzy
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "Rychlost:"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr ""
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "Re¾im obrazu:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "Re¾im vykreslení:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "Speciální re¾imy chvìní podporované nìkterými hrami"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "Re¾im celé obrazovky"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
#, fuzzy
msgid "Filter graphics"
msgstr "Pou¾ít barevné grafiky"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr ""
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "Korekce pomìru stran"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "Korigovat pomìr stran pro hry 320x200"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "Prioritní Zaøízení:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "Hudební zaøízení:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr "Stanoví prioritní zvukové zaøízení nebo emulátor zvukové karty"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr "Stanoví výstupní zvukové zaøízení nebo emulátor zvukové karty"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr "Prioritní Zaø.:"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "Hudební zaøízení:"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "AdLib emulátor:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "AdLib se pou¾ívá pro hudbu v mnoha hrách"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr "Výstup. frekvence:"
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"Vy¹¹í hodnota zpùsobí lep¹í kvalitu zvuku, ale nemusí být podporována Va¹i "
-"zvukovou kartou"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "GM Zaøízení:"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr "Stanoví výchozí zvukové zaøízení pro výstup General MIDI"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "Nepou¾ívat hudbu General MIDI"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "Pou¾ít první dostupné zaøízení"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr ""
"SoundFont je podporován nìkterými zvukovými kartami, FluidSynth a Timidity"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "Smí¹ený re¾im AdLib/MIDI"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "Pou¾ít obì zvukové generace MIDI a AdLib"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "Zesílení MIDI:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "Zaøízení MT-32:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr ""
"Stanoví výchozí zvukové výstupní zaøízení pro Roland MT-32/LAPC1/CM32l/CM64"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "Opravdový Roland MT-32 (vypne GM emulaci)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
@@ -1049,16 +1016,16 @@ msgstr ""
"Za¹krtnìte, pokud chcete pou¾ít pravé hardwarové zaøízení kompatibilní s "
"Roland, pøipojené k va¹emu poèítaèi"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "Opravdový Roland MT-32 (¾ádná GM emulace)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr "Zaøízení Roland GS (zapne mapování MT-32)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
@@ -1066,275 +1033,275 @@ msgstr ""
"Za¹krtnìte, pokud chcete povolit záplaty mapování umo¾òující emulovat MT-32 "
"na zaøízení Roland GS"
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "Nepou¾ívat hudbu Roland MT-32"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "Text a Øeè:"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "Øeè"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "Titulky"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "Oba"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "Rychlost titulkù:"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "Text a Øeè:"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "Øeè"
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "Titl"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "Oba"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "Zobrazit titulky a pøehrávat øeè"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "Rychlost titulkù:"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "Hlasitost hudby:"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "Hlasitost hudby:"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "Ztlumit V¹e"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "Hlasitost zvukù:"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "Hlasitost speciálních zvukových efektù"
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "Hlasitost zvukù:"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "Hlasitost øeèi:"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "Hlasitost øeèi:"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr ""
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
#, fuzzy
msgid "Control"
msgstr "Ovládání My¹i"
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr "Nastavení FluidSynth"
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "Cesta ke Vzhledu:"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "Cesta ke Vzhledu:"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr "Stanoví cestu k dodateèným datùm pou¾ívaná v¹emi hrami nebo ScummVM"
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "Cesta k Pluginùm:"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "Cesta k Pluginùm:"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "Rùzné"
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "Vzhled:"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "GUI Vykreslovaè:"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "Autoukládání:"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "Autoukládání:"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "Klávesy"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "Jazyk GUI:"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "Jazyk GUI ScummVM"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr "Kontrola aktualizací:"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr "Jak èasto ScummVM kontroluje aktualizace"
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr "Zkontrolovat nyní"
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr "Cloud"
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr "Cloud"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr "Úlo¾i¹tì:"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr "Aktivní cloudové úlo¾i¹tì"
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr "<¾ádné>"
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "U¾ivatelské jméno:"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr "U¾ivatelská jména která toto úlo¾i¹tì vyu¾ívají"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr "Vyu¾itý prostor:"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr "Prostor vyu¾itý ulo¾enými hrami ScummVM v tomto úlo¾i¹ti"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr "Datum poslední synchronizace:"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr "Kdy byla provedena poslední synchronizace ulo¾ených her"
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr "Pøipojit"
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr ""
"Otevøít dialogové okno prùvodce pro pøipojení k va¹emu úètu cloudového "
"úlo¾i¹tì"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr "Obnovit"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr ""
"Obnovit souèasné údaje cloudového úlo¾i¹tì (u¾ivatelské jméno a vyu¾ití)"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Download"
msgstr "Stáhnout"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr "Otevøít dialogové okno správce stahovaní"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr "Spustit server"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr "Spustit místní internetový server"
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
msgid "Not running"
msgstr "Nespu¹tìno"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
msgid "/root/ Path:"
msgstr "Cesta /root/:"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
msgid "Specifies which directory the Files Manager can access"
msgstr "Urèuje do kterého adresáøe má Správce souborù pøístup"
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "Cesta /root/:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid "Server's port:"
msgstr "Port serveru:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
@@ -1342,76 +1309,76 @@ msgstr ""
"Který port server pou¾ívá\n"
"Pøihlá¹ení pomocí serveru není dostupné pøi pou¾ití nestandardního portu"
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr ""
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
msgid "Failed to change cloud storage!"
msgstr "Nelze zmìnit cloudové úlo¾i¹tì!"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr "Jiné cloudové úlo¾i¹tì ji¾ je aktivní."
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
#, fuzzy
msgid "Theme does not support selected language!"
msgstr "Zás. modul jádra nepodporuje ulo¾ené stavy"
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
#, fuzzy
msgid "Theme cannot be loaded!"
msgstr "Hra NEBYLA naètena"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
msgstr ""
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr "Do zvoleného adresáøe nelze zapisovat. Vyberte, prosím, jiný."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "Vyberte adresáø pro vhledy GUI"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "Vyberte adresáø pro dodateèné soubory"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "Vyberte adresáø pro zásuvné moduly"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
msgid "Select directory for Files Manager /root/"
msgstr "Vyberte adresáø pro koøen Správce souborù"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr "%llu bajtù"
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr "<právì nyní>"
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
msgid "<never>"
msgstr "<nikdy>"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
msgid "Stop server"
msgstr "Zastavit server"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr "Zastavit místní internetový server"
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1878,9 +1845,9 @@ msgstr "~N~ávrat do Spou¹tìèe"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1899,9 +1866,10 @@ msgstr "Ulo¾it hru:"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1918,7 +1886,7 @@ msgstr ""
"prohlédnìte si README pro základní informace a pro instrukce jak získat "
"dal¹í pomoc."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, fuzzy, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2253,7 +2221,7 @@ msgid "OpenGL"
msgstr "OpenGL"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "Re¾im do okna"
@@ -2263,23 +2231,23 @@ msgid "Resolution: %dx%d"
msgstr ""
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "Povolena korekce pomìru stran"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "Zakázána korekce pomìru stran"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
#, fuzzy
msgid "Filtering enabled"
msgstr "Kliknutí Povoleno"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
#, fuzzy
msgid "Filtering disabled"
msgstr "Kliknutí Zakázáno"
@@ -2295,7 +2263,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "Normální (bez zmìny velikosti)"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "Aktivní grafický filtr:"
@@ -2451,24 +2419,24 @@ msgstr "Kliknutí prostøedním tlaèítkem"
msgid "Right Click"
msgstr "Pravé kliknutí"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "Skrýt ScummVM"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "Skrýt Ostatní"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "Zobrazit V¹e"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "Okno"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "Minimalizovat"
@@ -2931,8 +2899,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2945,8 +2913,8 @@ msgstr "Obnovit hru:"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3138,12 +3106,12 @@ msgid "Move Right"
msgstr "Pøesunout se Doprava"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr "Otoèit se doleva"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr "Otoèit se doprava"
@@ -3470,40 +3438,40 @@ msgstr ""
"\n"
"Prosím nahlaste to týmu."
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
#, fuzzy
msgid "Invalid file name for saving"
msgstr "Zadejte název souboru pro ulo¾ení"
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr "Nahoru/Pøiblí¾it/Pohyb dopøedu/Otevøít dveøe"
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr "Dolù/Oddálení"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr "Zobrazit/Skrýt podnos inventáøe"
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr "Zobrazit/Skrýt podnos bioèipu"
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr "Èinnost/Vybrat"
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr "Pøepnout centrální datovou obrazovku"
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr "Zobrazit/Skrýto obrazovku informací"
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr "Zobrazit/Skrýt"
@@ -3595,7 +3563,16 @@ msgid ""
"Use the alternate set of silver cursors instead of the normal golden ones"
msgstr "Pou¾ít alternativní sadu støíbrných kurzorù místo standardních zlatých"
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+#, fuzzy
+msgid "Enable content censoring"
+msgstr "Povolit plovoucí kurzory"
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:837
#, fuzzy
msgid "(Autosave)"
msgstr "Autoukládání:"
@@ -3614,22 +3591,22 @@ msgstr ""
msgid "Please use an external viewer to open the game's help file: %s"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
msgstr ""
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4638,6 +4615,31 @@ msgid ""
"%d. You will need an updated version of the engine to use this saved game."
msgstr ""
+#~ msgid "8 kHz"
+#~ msgstr "8 kHz"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 kHz"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 kHz"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 kHz"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 kHz"
+
+#~ msgid "Output rate:"
+#~ msgstr "Výstup. frekvence:"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "Vy¹¹í hodnota zpùsobí lep¹í kvalitu zvuku, ale nemusí být podporována "
+#~ "Va¹i zvukovou kartou"
+
#~ 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."
diff --git a/po/da_DK.po b/po/da_DK.po
index e712d008c8..ea7ce86686 100644
--- a/po/da_DK.po
+++ b/po/da_DK.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.3.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-09-04 04:39+0200\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\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/"
@@ -58,7 +58,7 @@ msgstr "Gå op"
#: 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -152,7 +152,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -236,9 +236,8 @@ msgstr ""
"Spillets sprog. Dette vil ikke ændre din spanske version af spillet til "
"engelsk"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<standard>"
@@ -260,11 +259,11 @@ msgstr "Platform:"
msgid "Engine"
msgstr "Motor"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "Grafik"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "GFX"
@@ -277,7 +276,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "Overstyr globale grafik indstillinger"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "Lyd"
@@ -290,11 +289,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "Overstyr globale lyd indstillinger"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "Lydstyrke"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "Lydstyrke"
@@ -308,7 +307,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "Overstyr globale lydstyrke indstillinger"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -321,7 +320,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "Overstyr globale MIDI indstillinger"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -334,11 +333,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "Overstyr globale MT-32 indstillinger"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "Stier"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "Stier"
@@ -352,7 +351,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "Spil sti:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "Ekstra sti:"
@@ -361,44 +360,44 @@ msgstr "Ekstra sti:"
msgid "Specifies path to additional data used by the game"
msgstr "Angiver sti til ekstra data der bruges i spillet"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "Ekstra sti:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "Gemme sti:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "Angiver hvor dine gemmer bliver lagt"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
msgctxt "lowres"
msgid "Save Path:"
msgstr "Gemme sti:"
#: gui/editgamedialog.cpp:301 gui/editgamedialog.cpp:398
-#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "Ingen"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "Standard"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "Vælg SoundFont"
@@ -406,7 +405,7 @@ msgstr "Vælg SoundFont"
msgid "Select additional game directory"
msgstr "Vælg ekstra spil bibliotek"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "Vælg bibliotek til spil gemmer"
@@ -496,7 +495,7 @@ msgstr "Sinus"
msgid "Triangle"
msgstr "Triangulær"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "Andet"
@@ -591,7 +590,7 @@ msgstr "Vælg en handling at kortlægge"
msgid "~Q~uit"
msgstr "~A~fslut"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "Slut ScummVM"
@@ -599,7 +598,7 @@ msgstr "Slut ScummVM"
msgid "A~b~out..."
msgstr "~O~m..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "Om ScummVM"
@@ -676,7 +675,7 @@ msgstr "Søg:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "Indlæs spil:"
@@ -686,7 +685,7 @@ msgstr "Indlæs spil:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "Indlæs"
@@ -795,245 +794,213 @@ msgstr "hvert 15. minut"
msgid "every 30 mins"
msgstr "hvert 30. minut"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 kHz"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 kHz"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 kHz"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 kHz"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 kHz"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "Ingen"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "Anvendelse af ændringer for grafiske indstillinger fejlede:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "videotilstanden kunne ikke ændres."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "billedformat indstillingen ikke kunne ændres"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "fuld skærm indstillingen kunne ikke ændres"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
#, fuzzy
msgid "the filtering setting could not be changed"
msgstr "fuld skærm indstillingen kunne ikke ændres"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr ""
-#: gui/options.cpp:962
+#: gui/options.cpp:936
#, fuzzy
msgid "Touchpad mouse mode"
msgstr "Pegeplade tilstand deaktiveret."
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr ""
-#: gui/options.cpp:971
+#: gui/options.cpp:945
#, fuzzy
msgid "Pointer Speed:"
msgstr "Hastighed:"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr ""
-#: gui/options.cpp:973
+#: gui/options.cpp:947
#, fuzzy
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "Hastighed:"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr ""
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "Grafik tilstand:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "Rendere tilstand:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "Speciel farvereduceringstilstand understøttet a nogle spil"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "Fuldskærms tilstand"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
#, fuzzy
msgid "Filter graphics"
msgstr "Grafik"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr ""
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "Billedformat korrektion"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "Korrekt billedformat til 320x200 spil"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "Foretruk. enhed:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "Musik enhed:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr "Angiver foretukket lyd enhed eller lydkort emulator"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr "Angiver lyd udgangsenhed eller lydkorts emulator"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr "Foretruk. enh.:"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "Musik enhed:"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "AdLib emulator:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "AdLib bliver brugt til musik i mange spil"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr "Udgangsfrekvens:"
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"Højere værdi angiver bedre lyd kvalitet, men understøttes måske ikke af dit "
-"lydkort"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "GM enhed:"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr "Angiver standard lyd enhed for Generel MIDI-udgang"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "Brug ikke Generel MIDI musik"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "Brug første tilgængelig enhed"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr "SoundFont er understøttet af nogle lydkort, FluidSynth og Timidity"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "Blandet AdLib/MIDI tilstand"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "Brug både MIDI og AdLib lyd generering"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "MIDI lydstyrke:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "MT-32 enhed:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr "Angiver standard lyd enhed for Roland MT-32/LAPC1/CM32I/CM64 udgang"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "Ægte Roland MT-32 (undlad GM emulering)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
@@ -1041,16 +1008,16 @@ msgstr ""
"Kryds af hvis du vil bruge din rigtige hardware Roland-kompatible lyd enhed "
"tilsluttet til din computer"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "Ægte Roland MT-32 (ingen GM emulering)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr "Roland GS enhed (aktivér MT-32 tilknytninger)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
@@ -1058,357 +1025,357 @@ msgstr ""
"Kryds af hvis du vil aktivere patch tilknytninger, for at emulere en MT-32 "
"på en Roland GS enhed"
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "Brug ikke Roland MT-32 musik"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "Tekst og tale:"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "Tale"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "Undertekster"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "Begge"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "Tekst hastighed:"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "Tekst og tale:"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "Tale"
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "Tekst"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "Begge"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "Vis undertekster og afspil tale"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "Tekst hastighed:"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "Musik lydstyrke:"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "Musik lydstyrke:"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "Mute alle"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "SFX lydstyrke:"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "Lydstyrke for specielle lydeffekter"
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "SFX lydstyrke:"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "Tale lydstyrke:"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "Tale lydstyrke:"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr ""
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
#, fuzzy
msgid "Control"
msgstr "Kontrollér mus"
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr "FluidSynth indstillinger"
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "Tema sti:"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "Tema sti:"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr "Angiver sti til ekstra data brugt af alle spil eller ScummVM"
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "Plugin sti:"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "Plugin sti:"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "Andet"
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "Tema:"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "GUI renderer:"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "Auto gemme:"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "Auto gemme:"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "Taster"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "Sprog:"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "Sprog for brugerfladen i ScummVM"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr ""
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr ""
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr ""
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr ""
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr ""
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr ""
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr ""
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr ""
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "Bruger:"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr ""
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr ""
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr ""
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr ""
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr ""
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr ""
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr ""
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr ""
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr ""
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
#, fuzzy
msgid "Download"
msgstr "Ned"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr ""
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr ""
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr ""
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
#, fuzzy
msgid "Not running"
msgstr "Fejl ved kørsel af spil:"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
#, fuzzy
msgid "/root/ Path:"
msgstr "Ekstra sti:"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
#, fuzzy
msgid "Specifies which directory the Files Manager can access"
msgstr "Angiver hvor dine gemmer bliver lagt"
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
#, fuzzy
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "Ekstra sti:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
#, fuzzy
msgid "Server's port:"
msgstr "Server:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
msgstr ""
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr ""
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
#, fuzzy
msgid "Failed to change cloud storage!"
msgstr "Mislykkedes at gemme spil"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr ""
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
#, fuzzy
msgid "Theme does not support selected language!"
msgstr "Motor udvidelse understøtter ikke gemmetilstande"
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
#, fuzzy
msgid "Theme cannot be loaded!"
msgstr "Spillet blev IKKE indlæst"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
msgstr ""
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr "Der kan ikke skrives til det valgte bibliotek. Vælg venligst et andet."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "Vælg bibliotek for GUI temaer"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "Vælg bibliotek for ekstra filer"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "Vælg bibliotek for plugins"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
#, fuzzy
msgid "Select directory for Files Manager /root/"
msgstr "Vælg bibliotek for ekstra filer"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr ""
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr ""
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
#, fuzzy
msgid "<never>"
msgstr "Aldrig"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
#, fuzzy
msgid "Stop server"
msgstr "Server:"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr ""
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1870,9 +1837,9 @@ msgstr "~R~etur til oversigt"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1891,9 +1858,10 @@ msgstr "Gemmer:"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1910,7 +1878,7 @@ msgstr ""
"README for grundlæggende oplysninger, og for at få instruktioner om, hvordan "
"man får yderligere hjælp."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, fuzzy, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2244,7 +2212,7 @@ msgid "OpenGL"
msgstr "OpenGL"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "Vindue tilstand"
@@ -2254,23 +2222,23 @@ msgid "Resolution: %dx%d"
msgstr ""
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "Aktivér billedformat korrektion"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "Deaktivér billedformat korrektion"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
#, fuzzy
msgid "Filtering enabled"
msgstr "Klik aktiveret"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
#, fuzzy
msgid "Filtering disabled"
msgstr "Klik deaktiveret"
@@ -2286,7 +2254,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "Normal (ingen skalering)"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "Aktive grafik filtre:"
@@ -2442,24 +2410,24 @@ msgstr "Miderste klik"
msgid "Right Click"
msgstr "Højre klik"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "Skjul ScummVM"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "Skjul andre"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "Vis alle"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "Vindue"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "Minimer"
@@ -2922,8 +2890,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2936,8 +2904,8 @@ msgstr "Gendan spil:"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3129,12 +3097,12 @@ msgid "Move Right"
msgstr "Flyt til højre"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr "Drej til venstre"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr "Drej til højre"
@@ -3468,40 +3436,40 @@ msgstr ""
"\n"
"Venligst rapportér til holdet."
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
#, fuzzy
msgid "Invalid file name for saving"
msgstr "Indtast filnavn til at gemme"
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr "Op/Forstør/Flyt frem/Åben døre"
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr "Ned/Forminsk"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr "Vis/Skjul Oversigtsbakke"
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr "Vis/Skjul Biochip bakke"
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr "Handling/Vælg"
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr "Skift Center Data Display"
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr "Vis/Skjul Info skærm"
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr "Vis/Skjul Pause menu"
@@ -3596,7 +3564,16 @@ msgid ""
msgstr ""
"Brug det alternative sæt af sølv markører, i stedet for de normale gyldne"
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+#, fuzzy
+msgid "Enable content censoring"
+msgstr "Aktivér flydende markør"
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:837
#, fuzzy
msgid "(Autosave)"
msgstr "Auto gemme:"
@@ -3615,22 +3592,22 @@ msgstr ""
msgid "Please use an external viewer to open the game's help file: %s"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
msgstr ""
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4642,6 +4619,31 @@ msgid ""
"%d. You will need an updated version of the engine to use this saved game."
msgstr ""
+#~ msgid "8 kHz"
+#~ msgstr "8 kHz"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 kHz"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 kHz"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 kHz"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 kHz"
+
+#~ msgid "Output rate:"
+#~ msgstr "Udgangsfrekvens:"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "Højere værdi angiver bedre lyd kvalitet, men understøttes måske ikke af "
+#~ "dit lydkort"
+
#~ 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."
diff --git a/po/de_DE.po b/po/de_DE.po
index 4d5f6e5880..01c88280a2 100644
--- a/po/de_DE.po
+++ b/po/de_DE.po
@@ -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: 2017-09-04 04:39+0200\n"
-"PO-Revision-Date: 2017-08-11 09:46+0000\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\n"
+"PO-Revision-Date: 2017-09-11 18:50+0000\n"
"Last-Translator: Lothar Serra Mari <rootfather@scummvm.org>\n"
"Language-Team: German <https://translations.scummvm.org/projects/scummvm/"
"scummvm/de/>\n"
@@ -59,7 +59,7 @@ msgstr "Pfad hoch"
#: 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -158,7 +158,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -194,7 +194,7 @@ msgstr "%s %s / %s %s heruntergeladen"
#: gui/downloaddialog.cpp:258
#, c-format
msgid "Download speed: %s %s"
-msgstr "Geschwindigkeit: %s %s"
+msgstr "Download-Geschwindigkeit: %s %s"
#: gui/editgamedialog.cpp:132
msgid "Game"
@@ -216,7 +216,7 @@ msgstr ""
#: gui/editgamedialog.cpp:138
msgctxt "lowres"
msgid "ID:"
-msgstr "ID:"
+msgstr "Kennung:"
#: gui/editgamedialog.cpp:143 gui/editrecorddialog.cpp:59
msgid "Name:"
@@ -244,9 +244,8 @@ msgstr ""
"Sprache des Spiels. Diese Funktion wird eine spanische Version des Spiels "
"nicht in eine deutsche verwandeln"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<Standard>"
@@ -268,11 +267,11 @@ msgstr "Plattform:"
msgid "Engine"
msgstr "Engine"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "Grafik"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "GFX"
@@ -285,7 +284,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "Globale Grafik-Einstellungen übergehen"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "Audio"
@@ -298,11 +297,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "Globale Audio-Einstellungen übergehen"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "Lautstärke"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "Lautst."
@@ -316,7 +315,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "Globale Lautstärke-Einstellungen übergehen"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -329,7 +328,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "Globale MIDI-Einstellungen übergehen"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -342,11 +341,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "Globale MT-32-Einstellungen übergehen"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "Pfade"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "Pfade"
@@ -360,7 +359,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "Spielpfad:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "Extras:"
@@ -369,44 +368,44 @@ msgstr "Extras:"
msgid "Specifies path to additional data used by the game"
msgstr "Legt den Verzeichnispfad für zusätzliche Spieldateien fest"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "Extras:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "Spielstände:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "Legt fest, wo die Spielstände gespeichert werden"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
msgctxt "lowres"
msgid "Save Path:"
msgstr "Spielstände:"
#: gui/editgamedialog.cpp:301 gui/editgamedialog.cpp:398
-#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "Keiner"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "Standard"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "SoundFont auswählen"
@@ -414,7 +413,7 @@ msgstr "SoundFont auswählen"
msgid "Select additional game directory"
msgstr "Verzeichnis mit zusätzlichen Dateien auswählen"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "Verzeichnis für Spielstände auswählen"
@@ -507,7 +506,7 @@ msgstr "Sinus"
msgid "Triangle"
msgstr "Dreieck"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "Sonstiges"
@@ -602,7 +601,7 @@ msgstr "Eine Aktion zum Zuweisen auswählen"
msgid "~Q~uit"
msgstr "~B~eenden"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "ScummVM beenden"
@@ -610,7 +609,7 @@ msgstr "ScummVM beenden"
msgid "A~b~out..."
msgstr "Übe~r~..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "Über ScummVM"
@@ -689,7 +688,7 @@ msgstr "Suchen:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "Spiel laden:"
@@ -699,7 +698,7 @@ msgstr "Spiel laden:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "Laden"
@@ -810,246 +809,214 @@ msgstr "alle 15 Minuten"
msgid "every 30 mins"
msgstr "alle 30 Minuten"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 kHz"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 kHz"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 kHz"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 kHz"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 kHz"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "Kein SoundFont"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "Folgende Grafikoptionen konnten nicht geändert werden:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "Grafikmodus konnte nicht geändert werden."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "Die Einstellung für das Seitenverhältnis konnte nicht geändert werden"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "Vollbildeinstellung konnte nicht geändert werden"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
msgid "the filtering setting could not be changed"
msgstr "Die Filtereinstellung konnte nicht geändert werden"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr "Virtuelle Bedienelemente anzeigen"
-#: gui/options.cpp:962
+#: gui/options.cpp:936
msgid "Touchpad mouse mode"
msgstr "Touchpad-Mausmodus"
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr "Menü- und Zurück-Tasten vertauschen"
-#: gui/options.cpp:971
+#: gui/options.cpp:945
msgid "Pointer Speed:"
msgstr "Zeiger-Geschw.:"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr "Zeiger-Geschwindigkeit der Tastatur-/Joystick-Maus"
-#: gui/options.cpp:973
+#: gui/options.cpp:947
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "Zeiger-Geschw.:"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr "Joystick-Totzone:"
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr "Totzone des analogen Joysticks"
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr "Joystick-Totzone:"
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr "HW-Shader:"
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr ""
"Verschiedene Hardware-Shader erzeugen unterschiedliche visuelle Effekte"
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr "HW-Shader:"
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr "Verschiedene Shader erzeugen verschiedene Grafikeffekte"
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "Grafikmodus:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "Render-Modus:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "Spezielle Farbmischungsmethoden werden von manchen Spielen unterstützt"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "Vollbildmodus"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Filter graphics"
msgstr "Bilineare Filterung"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr "Verwende bilineare Filterung zur Grafik-Skalierung"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "Seitenverhältnis korrigieren"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "Seitenverhältnis für Spiele mit der Auflösung 320x200 korrigieren"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "Bevorzugtes Gerät:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "Musikgerät:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr ""
"Legt das bevorzugte Tonwiedergabe-Gerät oder den Soundkarten-Emulator fest"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr "Legt das Musikwiedergabe-Gerät oder den Soundkarten-Emulator fest"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr "Standard-Gerät:"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "Musikgerät:"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "AdLib-Emulator:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "AdLib wird für die Musik in vielen Spielen verwendet"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr "Ausgabefrequenz:"
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"Höhere Werte bewirken eine bessere Soundqualität, werden aber möglicherweise "
-"nicht von jeder Soundkarte unterstützt"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "GM-Gerät:"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr ""
"Legt das standardmäßige Musikwiedergabe-Gerät für General-MIDI-Ausgabe fest"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "Keine General-MIDI-Musik"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "Erstes verfügbares Gerät"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr ""
"SoundFont wird von einigen Soundkarten, FluidSynth und Timidity unterstützt"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "Gemischter AdLib/MIDI-Modus"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "Kombiniert MIDI-Musik mit AdLib-Soundeffekten"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "MIDI-Lautstärke:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "MT-32-Gerät:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr ""
"Legt das standardmäßige Tonwiedergabe-Gerät für die Ausgabe von Roland MT-32/"
"LAPC1/CM32l/CM64 fest"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "Echte Roland MT-32 (GM-Emulation deaktiviert)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
@@ -1057,16 +1024,16 @@ msgstr ""
"Wählen Sie dies aus, wenn Sie ein echtes Roland-kompatibles Soundgerät "
"verwenden"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "Echte Roland MT-32 (keine GM-Emulation)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr "Roland-GS-Gerät (MT-32-Zuweisungen aktivieren)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
@@ -1074,278 +1041,278 @@ msgstr ""
"Auswählen, wenn Sie ausbessernde Instrumentzuweisungen aktivieren möchten, "
"um MT-32 auf einem Roland-GS-Gerät zu emulieren"
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "Keine Roland-MT-32-Musik"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "Sprache und Text:"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "Sprache"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "Untertitel"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "Beides"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "Untertitel-Tempo:"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "Text u. Sprache:"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "Spr."
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "Text"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "S+T"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "Untertitel anzeigen und Sprachausgabe aktivieren"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "Text-Tempo:"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "Musiklautstärke:"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "Musiklautstärke:"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "Stumm"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "Effektlautstärke:"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "Lautstärke spezieller Geräusch-Effekte"
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "Effektlautst.:"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "Sprachlautstärke:"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "Sprachlautst.:"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr "Shader"
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
msgid "Control"
msgstr "Steuerung"
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr "FluidSynth-Einstellungen"
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "Themen:"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "Themen:"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr ""
"Legt das Verzeichnis für zusätzliche Spieldateien für alle Spiele in ScummVM "
"fest"
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "Plugins:"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "Plugins:"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "Andere"
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "Thema:"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "GUI-Renderer:"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "Autom. Speichern:"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "Autospeichern:"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "Tasten"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "Sprache:"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "Sprache der ScummVM-Oberfläche"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr "Updates suchen:"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr "Wie oft nach Aktualisierungen von ScummVM suchen?"
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr "Jetzt prüfen"
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr "Cloud"
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr "Cloud"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr "Cloud-Speicher:"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr "Aktiver Cloud-Speicher"
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr "<keiner>"
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "Benutzername:"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr "Benutzername, der von diesem Cloud-Speicher verwendet wird"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr "Belegter Speicher:"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr ""
"Von ScummVM-Spielständen beleger Speicherplatz auf diesem Cloud-Speicher"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr "Letzte Sync.:"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr "Zeitpunkt der letzten Spielstand-Synchronisierung"
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr "Verbinden"
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr ""
"Öffnet den Assistenten, der Sie durch die Einrichtung Ihres Cloud-Speichers "
"führt"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr "Aktualisieren"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr ""
"Aktualisiert die Informationen über diesen Cloud-Speicher (Benutzername und "
"Belegung)"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Download"
msgstr "Herunterladen"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr "Öffnet den Download-Manager"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr "Server starten"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr "Startet den lokalen Webserver"
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
msgid "Not running"
msgstr "Nicht gestartet"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
msgid "/root/ Path:"
msgstr "/root/-Pfad:"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
msgid "Specifies which directory the Files Manager can access"
msgstr "Legt fest, auf welches Verzeichnis der Dateimanager zugreifen darf"
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "/root/-Pfad:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid "Server's port:"
msgstr "Server-Port:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
@@ -1354,27 +1321,27 @@ msgstr ""
"Authentifizierung mit dem Server ist nicht verfügbar, wenn ein anderer Port "
"verwendet wird"
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr "Übernehmen"
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
msgid "Failed to change cloud storage!"
msgstr "Konnte den Cloud-Speicher nicht ändern!"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr "Ein anderer Cloud-Speicher arbeitet gerade."
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
msgid "Theme does not support selected language!"
msgstr "Das Theme unterstützt die gewählte Sprache nicht!"
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
msgid "Theme cannot be loaded!"
msgstr "Theme konnte nicht geladen werden!"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
@@ -1382,51 +1349,51 @@ msgstr ""
"\n"
"Verschiedene Einstellungen werden wiederhergestellt."
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr ""
"In das gewählte Verzeichnis kann nicht geschrieben werden. Bitte ein anderes "
"auswählen."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "Verzeichnis für Oberflächen-Themen"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "Verzeichnis für zusätzliche Dateien auswählen"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "Verzeichnis für Erweiterungen auswählen"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
msgid "Select directory for Files Manager /root/"
msgstr ""
"Wählen Sie das Verzeichnis aus, welches als Stammverzeichnis ('root') dient"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr "%llu Bytes"
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr "<gerade eben>"
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
msgid "<never>"
msgstr "<nie>"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
msgid "Stop server"
msgstr "Server anhalten"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr "Lokalen Webserver anhalten"
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1897,9 +1864,9 @@ msgstr "Zur Spiele~l~iste"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1918,9 +1885,10 @@ msgstr "Speichern:"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1936,7 +1904,7 @@ msgstr ""
"Leider bietet diese Engine keine Spielhilfe. Bitte lesen Sie die Liesmich-"
"Datei für grundlegende Informationen und Anweisungen zu weiterer Hilfe."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2274,7 +2242,7 @@ msgid "OpenGL"
msgstr "OpenGL"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "Fenstermodus"
@@ -2284,22 +2252,22 @@ msgid "Resolution: %dx%d"
msgstr "Auflösung: %dx%d"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "Seitenverhältniskorrektur an"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "Seitenverhältniskorrektur aus"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
msgid "Filtering enabled"
msgstr "Bilineare Filterung aktiviert"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
msgid "Filtering disabled"
msgstr "Bilineare Filterung deaktiviert"
@@ -2314,7 +2282,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "Normal ohn.Skalieren"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "Aktiver Grafikfilter:"
@@ -2470,24 +2438,24 @@ msgstr "Mittelklick"
msgid "Right Click"
msgstr "Rechtsklick"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "ScummVM ausblenden"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "Andere ausblenden"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "Alle einblenden"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "Fenster"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "Minimieren"
@@ -2954,8 +2922,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2968,8 +2936,8 @@ msgstr "Spiel laden:"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3156,12 +3124,12 @@ msgid "Move Right"
msgstr "Nach rechts gehen"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr "Nach links drehen"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr "Nach rechts drehen"
@@ -3504,39 +3472,39 @@ msgstr ""
"\n"
"Bitte berichten Sie dies dem Team auf Englisch."
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
msgid "Invalid file name for saving"
msgstr "Dateiname zum Speichern eingeben"
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr "Hoch/Hineinzoomen/Nach vorn/Türen öffnen"
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr "Runter/Hinauszoomen"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr "Inventarleiste anzeigen/verbergen"
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr "Biochip-Leiste anzeigen/verbergen"
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr "Aktion/Auswählen"
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr "Mittige Datenanzeige wechseln"
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr "Info-Bildschirm anzeigen/verbergen"
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr "Pause-Menü anzeigen/verbergen"
@@ -3633,7 +3601,15 @@ msgstr ""
"Verwendet alternativen Satz silberner Mauszeiger anstatt der normalen "
"goldenen"
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+msgid "Enable content censoring"
+msgstr "Zensur aktivieren"
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr "Aktiviere die im Spiel eingebaute optionale Zensur des Inhalts"
+
+#: engines/sci/detection.cpp:837
msgid "(Autosave)"
msgstr "(Automatisches Speichern)"
@@ -3659,16 +3635,16 @@ msgstr ""
"Bitte verwenden Sie einen externen Betrachter, um die Hilfedatei des Spiels "
"zu öffnen: %s"
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr "Das Format dieses Spielstands ist veraltet; laden nicht möglich"
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr "Spielstand-Version ist %d, höchste unterstützte Version ist %0d"
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
@@ -3676,7 +3652,7 @@ msgstr ""
"Dieser Spielstand wurde mit einer anderen Version des Spiels erstellt; laden "
"nicht möglich"
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4729,6 +4705,31 @@ msgstr ""
"Spielstände bis zu Version %d. Sie benötigen eine aktualisierte Version der "
"Engine, um diesen Spielstand zu verwenden."
+#~ msgid "8 kHz"
+#~ msgstr "8 kHz"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 kHz"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 kHz"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 kHz"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 kHz"
+
+#~ msgid "Output rate:"
+#~ msgstr "Ausgabefrequenz:"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "Höhere Werte bewirken eine bessere Soundqualität, werden aber "
+#~ "möglicherweise nicht von jeder Soundkarte unterstützt"
+
# Nicht übersetzen, da diese Nachricht nur für nicht-lateinische Sprachen relevant ist.
#~ msgid ""
#~ "The theme you selected does not support your current language. If you "
diff --git a/po/el.po b/po/el.po
index 15cb311b56..e502d97499 100644
--- a/po/el.po
+++ b/po/el.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.10.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-09-04 04:39+0200\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\n"
"PO-Revision-Date: 2017-04-28 11:12+0000\n"
"Last-Translator: Arius <alidop@pathfinder.gr>\n"
"Language-Team: Greek <https://translations.scummvm.org/projects/scummvm/"
@@ -57,7 +57,7 @@ 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -154,7 +154,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -241,9 +241,8 @@ msgstr ""
"Ãëþóóá ôïõ ðáé÷íéäéïý. Áõôü äå èá ìåôáôñÝøåé ôçí ÉóðáíéêÞ Ýêäïóç ôïõ "
"ðáé÷íéäéïý óáò óå ÁããëéêÞ"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<ðñïêáèïñéóìÝíç>"
@@ -265,11 +264,11 @@ msgstr "Ðëáôöüñìá:"
msgid "Engine"
msgstr "Ìç÷áíÞ"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "ÃñáöéêÜ"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "Ãñáö."
@@ -282,7 +281,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "ÐáñÜêáìøç ñõèì, ãñáöéêþí"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "¹÷ïò"
@@ -295,11 +294,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "ÐáñÜêáìøç ñõèì. Þ÷ïõ"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "¸íôáóç"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "¸íôáóç"
@@ -313,7 +312,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "ÐáñÜêáìøç ñõèì. Ýíôáóçò"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -326,7 +325,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "ÐáñÜêáìøç ñõèì. MIDI"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -339,11 +338,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "ÐáñÜêáìøç ñõèì. MT-32"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "ÖÜêåëïé"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "ÖÜêåëïé"
@@ -357,7 +356,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "ÖÜêåëïò Ðáé÷íéäéïý:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "ÖÜêåëïò ¸îôñá:"
@@ -367,44 +366,44 @@ msgid "Specifies path to additional data used by the game"
msgstr ""
"Êáèïñßæåé äéáäñïìÞ ãéá ðñüóèåôá äåäïìÝíá ðïõ ÷ñçóéìïðïéïýíôáé áðü ôï ðáé÷íßäé"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "ÖÜêåëïò ¸îôñá:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "ÖÜêåëïò ÁðïèÞêåõóçò:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "Êáèïñßæåé ôçí ôïðïèåóßá ôùí áðïèçêåõìÝíùí ðáé÷íéäéþí óáò"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
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:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "ÊáíÝíá"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "ÐñïêáèïñéóìÝíï"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "ÅðéëÝîôå SoundFont"
@@ -412,7 +411,7 @@ msgstr "ÅðéëÝîôå SoundFont"
msgid "Select additional game directory"
msgstr "ÅðéëÝîôå ðñüóèåôï öÜêåëï ðáé÷íéäéïý"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "ÅðéëÝîôå öÜêåëï ãéá áðïèçêåõìÝíá ðáé÷íßäéá"
@@ -507,7 +506,7 @@ msgstr "Çìßôïíï"
msgid "Triangle"
msgstr "Ôñßãùíï"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "ÄéÜöïñá"
@@ -603,7 +602,7 @@ msgstr "ÅðéëÝîôå ìéá åíÝñãåéá ãéá áíôéóôïß÷éóç"
msgid "~Q~uit"
msgstr "¸~î~ïäïò"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "¸îïäïò áðü ôï ScummVM"
@@ -611,7 +610,7 @@ msgstr "¸îïäïò áðü ôï ScummVM"
msgid "A~b~out..."
msgstr "~Ð~åñß..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "Ðåñß ôïõ ScummVM"
@@ -690,7 +689,7 @@ msgstr "ÁíáæÞôçóç:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "Öüñôùóç ðáé÷íéäéïý:"
@@ -700,7 +699,7 @@ msgstr "Öüñôùóç ðáé÷íéäéïý:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "Öüñôùóç"
@@ -817,245 +816,213 @@ msgstr "êÜèå 15 ëåðôÜ"
msgid "every 30 mins"
msgstr "êÜèå 30 ëåðôÜ"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 kHz"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 kHz"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 kHz"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 kHz"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 kHz"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "ÊáíÝíá"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "Äåí Þôáí äõíáôÞ ç åöáñìïãÞ ïñéóìÝíùí áëëáãþí óôéò åðéëïãÝò ãñáöéêþí:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "äåí Þôáí äõíáôÞ ç áëëáãÞ ôçò ëåéôïõñãßáò âßíôåï."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "äåí Þôáí äõíáôÞ ç áëëáãÞ ôçò äéüñèùóçò áíáëïãßáò äéáóôÜóåùí"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "äåí Þôáí äõíáôÞ ç áëëáãÞ ôçò ñýèìéóçò ðëÞñïõò ïèüíçò"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
msgid "the filtering setting could not be changed"
msgstr "äåí Þôáí äõíáôÞ ç áëëáãÞ ôçò ñýèìéóçò öéëôñáñßóìáôïò"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr "ÅìöÜíéóç ôùí óôïé÷åßùí ÷åéñéóìïý óôçí ïèüíç"
-#: gui/options.cpp:962
+#: gui/options.cpp:936
msgid "Touchpad mouse mode"
msgstr "Touchpad óå ëåéôïõñãßá ðïíôéêéïý"
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr "ÅíáëëáãÞ ôùí êïõìðéþí Ìåíïý êáé Ðßóù"
-#: gui/options.cpp:971
+#: gui/options.cpp:945
msgid "Pointer Speed:"
msgstr "Ôá÷ýôçôá äåßêôç:"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr "Ôá÷ýôçôá ÷åéñéóìïý ôïõ äåßêôç ðïíôéêéïý ìå ðëçêôñïëüãéï/÷åéñéóôÞñéï"
-#: gui/options.cpp:973
+#: gui/options.cpp:947
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "Ôá÷ýôçôá äåßêôç:"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr "Ðåñéï÷Þ áäñÜíåéáò ÷åéñéóôÞñéïõ:"
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr "Ðåñéï÷Þ áäñÜíåéáò áíáëïãéêïý ÷åéñéóôÞñéïõ"
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr "Ðåñéï÷Þ áäñÜíåéáò ÷åéñéóôÞñéïõ:"
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "Ëåéôïõñãßá ãñáöéêþí:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "Ëåéôïõñãßá áðüäïóçò:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr ""
"ÅéäéêÝò ëåéôïõñãßåò ÷ñùìáôéêÞò áíôéðáñÜèåóçò ïé ïðïßåò õðïóôçñßæïíôáé áðü "
"ïñéóìÝíá ðáé÷íßäéá"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "Ëåéôïõñãßá ðëÞñïõò ïèüíçò"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Filter graphics"
msgstr "Ößëôñï ãñáöéêþí"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr "×ñÞóç ãñáììéêïý öéëôñáñßóìáôïò ãéá ôçí êëéìÜêùóç ãñáöéêþí"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "Äéüñèùóç áíáëïãßáò äéáóôÜóåùí"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "Äéüñèùóç áíáëïãßáò äéáóôÜóåùí ãéá ðáé÷íßäéá 320x200"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "Ðñïôéìþìåíç óõóêåõÞ:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "ÓõóêåõÞ ÌïõóéêÞò:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr "Êáèïñßæåé ôçí ðñïôéìþìåíç óõóêåõÞ åîüäïõ Þ÷ïõ Þ åîïìïéùôÞ êÜñôáò Þ÷ïõ"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr "Êáèïñßæåé ôç óõóêåõÞ åîüäïõ Þ÷ïõ Þ åîïìïéùôÞ êÜñôáò Þ÷ïõ"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr "Ðñïôéì. Óõóê.:"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "Óõóê. Ìïõó.:"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "ÅîïìïéùôÞò Adlib:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "Ç Adlib ÷ñçóéìïðïéåßôáé ãéá ìïõóéêÞ óå ðïëëÜ ðáé÷íßäéá"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr "Ñõèìüò åîüäïõ:"
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"Õøçëüôåñç ôéìÞ êáèïñßæåé êáëýôåñç ðïéüôçôá Þ÷ïõ, áëëÜ ìðïñåß íá ìçí "
-"õðïóôçñßæåôáé áðü ôçí êÜñôá Þ÷ïõ óáò"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "ÓõóêåõÞ GM:"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr "Êáèïñßæåé ðñïåðéëåãìÝíç óõóêåõÞ Þ÷ïõ ãéá ôçí Ýîïäï General MIDI"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "Ìç ÷ñÞóç ìïõóéêÞò General MIDI"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "×ñÞóç ðñþôçò äéáèÝóéìçò óõóêåõÞò"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr ""
"Ôï SoundFont õðïóôçñßæåôáé áðü ìåñéêÝò êÜñôåò Þ÷ïõ, ôï FluidSynth êáé ôï "
"Timidity"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "ÌéêôÞ ëåéôïõñãßá Adlib/MIDI"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "×ñÞóç MIDI êáé Adlib ãéá äçìéïõñãßá Þ÷ïõ"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "Áýîçóç MIDI:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "ÓõóêåõÞ MT-32:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr ""
"Êáèïñßæåé ðñïåðéëåãìÝíç óõóêåõÞ Þ÷ïõ ãéá Ýîïäï Roland MT-32/LAPC1/CM32l/CM64"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "ÐñáãìáôéêÞ Roland MT-32 (áðåíåñãïðïßçóç åîïìïéùôÞ GM)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
@@ -1063,16 +1030,16 @@ msgstr ""
"ÅðéëÝîôå áí èÝëåôå íá ÷ñçóéìïðïéÞóåôå óõóêåõÞ Þ÷ïõ óõìâáôÞ ìå Roland, ç "
"ïðïßá åßíáé óõíäåäåìÝíç óôïí õðïëïãéóôÞ óáò"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "ÐñáãìáôéêÞ Roland MT-32 (÷ùñßò åîïìïßùóç GM)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr "ÓõóêåõÞ Roland GS (åíåñãïðïßçóç áíôéóôïé÷ßóåùí MT-32)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
@@ -1080,280 +1047,280 @@ msgstr ""
"ÅðéëÝîôå áí èÝëåôå íá åíåñãïðïéÞóåôå äéïñèùìÝíåò áíôéóôïé÷ßóåéò ãéá íá "
"åîïìïéþóåôå ìéá MT-32 óå óõóêåõÞ Roland GS"
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "Ìç ÷ñÞóç ìïõóéêÞò Roland MT-32"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "Êåßìåíï êáé Ïìéëßá:"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "Ïìéëßá"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "Õðüôéôëïé"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "Êáé ôá äõï"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "Ôá÷ýôçôá õðïôßôëùí:"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "Êåßìåíï êáé Ïìéëßá:"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "Ïìéëßá"
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "Õðüô."
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "Êáé ôá äõï"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "ÐñïâïëÞ õðïôßôëùí êáé áíáðáñáãùãÞ öùíÞò"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "Ôá÷ýôçôá õðüô.:"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "¸íôáóç ìïõóéêÞò:"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "¸íôáóç ìïõóéêÞò:"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "Óßãáóç ¼ëùí"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "¸íôáóç åöÝ:"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "¸íôáóç åéäéêþí áêïõóôéêþí åöÝ"
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "¸íôáóç åöÝ:"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "¸íôáóç ïìéëßáò:"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "¸íôáóç ïìéëßáò:"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr ""
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
msgid "Control"
msgstr "×åéñéóìüò"
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr "Ñõèìßóåéò FluidSynth"
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "ÖÜêåëïò ÈÝìáôïò:"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "ÖÜêåëïò ÈÝìáôïò:"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr ""
"Êáèïñßæåé ôç äéáäñïìÞ ãéá ðñüóèåôá äåäïìÝíá ðïõ ÷ñçóéìïðïéïýíôáé áðü üëá ôá "
"ðáé÷íßäéá Þ ôï ScummVM"
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "ÄéáäñïìÞ Ðñüóèåôùí:"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "Äéáäñ. Ðñüóè.:"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "ËïéðÜ"
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "ÈÝìá:"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "Áðåéêüíéóç GUI:"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "Áõôüìáôç áðïèÞêåõóç:"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "Áõôüì. áðïè.:"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "ÐëÞêôñá"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "Ãëþóóá GUI:"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "Ãëþóóá ôïõ ScummVM GUI"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr "¸ëåã÷ïò áíáâáèìßóåùí:"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr "Óõ÷íüôçôá åëÝã÷ïõ åíçìåñþóåùí ôïõ ScummVM"
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr "ÅëÝãîôå ôþñá"
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr "Óýííåöï"
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr "Óýííåöï"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr "ÁðïèÞêåõóç:"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr "ÅíåñãÞ áðïèÞêåõóç óýííåöïõ"
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr "<êáìßá>"
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "¼íïìá ÷ñÞóôç:"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr "Ôï üíïìá ÷ñÞóôç ðïõ ÷ñçóéìïðïéåßôáé áðü áõôÞ ôçí áðïèÞêç"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr "×ñçóéìïðïéçìÝíïò ÷þñïò:"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr ""
"×þñïò ðïõ ÷ñçóéìïðïéåßôáé áðü ôá áðïèçêåõìÝíá ðáé÷íßäéá ôïõ ScummVM óå áõôÞ "
"ôçí áðïèÞêç"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr "Ôåëåõôáßá þñá óõã÷ñïíéóìïý:"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr ""
"Ðüôå ðñáãìáôïðïéÞèçêå ï ôåëåõôáßïò óõã÷ñïíéóìüò áðïèçêåõìÝíùí ðáé÷íéäéþí"
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr "Óýíäåóç"
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr ""
"Áíïßîôå ôï äéÜëïãï ïäçãïý ãéá íá óõíäÝóåôå ôï ëïãáñéáóìü ôïý óýííåöïõ "
"áðïèÞêåõóÞò óáò"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr "ÁíáíÝùóç"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr ""
"ÁíáíÝùóç ðëçñïöïñéþí ôñÝ÷ïíôïò ÷þñïõ áðïèÞêåõóçò óôï óýííåöï (üíïìá ÷ñÞóôç "
"êáé ÷ñÞóç)"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Download"
msgstr "Ìåôáöüñôùóç"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr "¶íïéãìá äéáëüãïõ äéá÷åßñéóçò ìåôáöïñôþóåùí"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr "ÅêôÝëåóç äéáêïìéóôÞ"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr "ÅêôÝëåóç ôïðéêïý äéáêïìéóôÞ web"
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
msgid "Not running"
msgstr "Äåí åêôåëåßôáé"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
msgid "/root/ Path:"
msgstr "/root/ ÄéáäñïìÞ:"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
msgid "Specifies which directory the Files Manager can access"
msgstr "Êáèïñßæåé ôï öÜêåëï óôïí ïðïßï Ý÷åé ðñüóâáóç ï File Manager"
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "/root/ ÄéáäñïìÞ:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid "Server's port:"
msgstr "Èýñá åîõðçñåôçôÞ:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
@@ -1361,27 +1328,27 @@ msgstr ""
"ÐïéÜ èýñá ÷ñçóéìïðïéåßôáé áðü ôï äéáêïìéóôÞ\n"
"Äåí åßíáé äéáèÝóéìç ç ðéóôïðïßçóç ìå ôï äéáêïìéóôÞ óå ìç-ðñïåðéëåãìÝíç èýñá"
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr "ÅöáñìïãÞ"
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
msgid "Failed to change cloud storage!"
msgstr "Áäõíáìßá áëëáãÞò áðïèÞêåõóçò óýííåöïõ!"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr "Ìéá Üëëç áðïèÞêåõóç óýííåöïõ åßíáé Þäç åíåñãÞ."
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
msgid "Theme does not support selected language!"
msgstr "Ôï èÝìá äåí õðïóôçñßæåé ôçí åðéëåãìÝíç ãëþóóá!"
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
msgid "Theme cannot be loaded!"
msgstr "Ôï èÝìá äåí öïñôþèçêå!"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
@@ -1389,50 +1356,50 @@ msgstr ""
"\n"
"Ïé ëïéðÝò ñõèìßóåéò èá åðáíáöåñèïýí óôéò áñ÷éêÝò ôïõò ôéìÝò."
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr ""
"Äåí Þôáí äõíáôÞ ç åããñáöÞ óôïí åðéëåãìÝíï öÜêåëï. Ðáñáêáëþ åðéëÝîôå êÜðïéïí "
"Üëëï."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "ÅðéëÝîôå öÜêåëï ãéá èÝìáôá GUI"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "ÅðéëÝîôå öÜêåëï ãéá Ýîôñá áñ÷åßá"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "ÅðéëÝîôå öÜêåëï ãéá ðñüóèåôá"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
msgid "Select directory for Files Manager /root/"
msgstr "ÅðéëÝîôå öÜêåëï ãéá ôï /root/ ôïõ Äéá÷åéñéóôÞ Áñ÷åßùí"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr "%llu bytes"
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr "<Üìåóá>"
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
msgid "<never>"
msgstr "<ðïôÝ>"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
msgid "Stop server"
msgstr "ÄéáêïðÞ åîõðçñåôçôÞ"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr "ÄéáêïðÞ ôïðéêïý åîõðçñåôçôÞ web"
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1904,9 +1871,9 @@ msgstr "Åðéó~ô~ñ. óôïí ÏäçãçôÞ"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1925,9 +1892,10 @@ msgstr "ÁðïèÞêåõóç ðáé÷íéäéïý:"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1945,7 +1913,7 @@ msgstr ""
"ðëçñïöïñßåò, êáèþò êáé ãéá ïäçãßåò ó÷åôéêÜ ìå ôï ðþò íá ëÜâåôå ðåñáéôÝñù "
"âïÞèåéá."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2282,7 +2250,7 @@ msgid "OpenGL"
msgstr "OpenGL"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "Ëåéôïõñãßá ðáñáèýñïõ"
@@ -2292,22 +2260,22 @@ msgid "Resolution: %dx%d"
msgstr "ÁíÜëõóç: %dx%d"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "ÅíåñãïðïéçìÝíç äéüñèùóç áíáëïãßáò äéáóôÜóåùí"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "ÁðåíåñãïðïéçìÝíç äéüñèùóç áíáëïãßáò äéáóôÜóåùí"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
msgid "Filtering enabled"
msgstr "Åíåñãïðïßçóç öéëôñáñßóìáôïò"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
msgid "Filtering disabled"
msgstr "Áðåíåñãïðïßçóç öéëôñáñßóìáôïò"
@@ -2322,7 +2290,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "Êáíïíéêü (÷ùñßò êëéìÜêùóç)"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "Åíåñãü ößëôñï ãñáöéêþí:"
@@ -2478,24 +2446,24 @@ msgstr "Ìåóáßï Click"
msgid "Right Click"
msgstr "Äåîß Click"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "Áðüêñõøç ScummVM"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "Áðüêñõøç ¶ëëùí"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "ÐñïâïëÞ üëùí"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "ÐáñÜèõñï"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "Åëá÷éóôïðïßçóç"
@@ -2962,8 +2930,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2976,8 +2944,8 @@ msgstr "ÅðáíáöïñÜ ðáé÷íéäéïý:"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3164,12 +3132,12 @@ msgid "Move Right"
msgstr "Ðñï÷þñçóå ÄåîéÜ"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr "Óôñßøå ÁñéóôåñÜ"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr "Óôñßøå ÄåîéÜ"
@@ -3514,39 +3482,39 @@ msgstr ""
"\n"
"Ðáñáêáëïýìå áíáöÝñåôå óôçí ïìÜäá."
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
msgid "Invalid file name for saving"
msgstr "ÅóöáëìÝíï üíïìá áñ÷åßïõ ãéá áðïèÞêåõóç"
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr "ÐÜíù/ÌåãÝèõíóç/Ìåôáêßíçóç Åìðñüò/¶íïéãìá Èõñþí"
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr "ÊÜôù/Óìßêñõíóç"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr "ÅìöÜíéóç/Áðüêñõøç Äßóêïõ ÁíôéêåéìÝíùí"
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr "ÅìöÜíéóç/Áðüêñõøç Äßóêïõ Biochip"
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr "ÅíÝñãåéá/ÅðéëïãÞ"
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr "ÅíáëëáãÞ ÊåíôñéêÞò Ðáñïõóßáóçò ÄåäïìÝíùí"
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr "ÐñïâïëÞ/Áðüêñõøç Ïèüíçò Ðëçñïöïñéþí"
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr "ÐñïâïëÞ/Áðüêñõøç Ìåíïý Ðáýóçò"
@@ -3644,7 +3612,16 @@ msgid ""
msgstr ""
"×ñÞóç ôùí åíáëëáêôéêþí áóçìÝíéùí äñïìÝùí áíôß ôùí ðñïêáèïñéóìÝíùí ÷ñõóþí"
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+#, fuzzy
+msgid "Enable content censoring"
+msgstr "Åíåñãïðïßçóç äñïìÝùí êáôåýèõíóçò"
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:837
msgid "(Autosave)"
msgstr "(Áõôüìáôç áðïèÞêåõóç)"
@@ -3662,22 +3639,22 @@ msgstr ""
msgid "Please use an external viewer to open the game's help file: %s"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
msgstr ""
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4702,6 +4679,31 @@ msgstr ""
"õðïóôçñßæåé ìüíï ìÝ÷ñé ôçí Ýêäïóç%d. Èá ÷ñåéáóôåßôå ìéá åíçìåñùìÝíç Ýêäïóç "
"ôçò ìç÷áíÞò ãéá íá ÷ñçóéìïðïéÞóåôå áõôü ôï áðïèçêåõìÝíï ðáé÷íßäé."
+#~ msgid "8 kHz"
+#~ msgstr "8 kHz"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 kHz"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 kHz"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 kHz"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 kHz"
+
+#~ msgid "Output rate:"
+#~ msgstr "Ñõèìüò åîüäïõ:"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "Õøçëüôåñç ôéìÞ êáèïñßæåé êáëýôåñç ðïéüôçôá Þ÷ïõ, áëëÜ ìðïñåß íá ìçí "
+#~ "õðïóôçñßæåôáé áðü ôçí êÜñôá Þ÷ïõ óáò"
+
#~ 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."
diff --git a/po/es_ES.po b/po/es_ES.po
index cef61c08f5..d4ad2b8716 100644
--- a/po/es_ES.po
+++ b/po/es_ES.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.4.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-09-04 04:39+0200\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\n"
"PO-Revision-Date: 2017-04-23 05:59+0000\n"
"Last-Translator: Santiago Sanchez <sanchez.santiago.j@gmail.com>\n"
"Language-Team: Spanish <https://translations.scummvm.org/projects/scummvm/"
@@ -58,7 +58,7 @@ msgstr "Arriba"
#: 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -155,7 +155,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -241,9 +241,8 @@ msgstr ""
"Idioma del juego. No sirve para pasar al inglés la versión española de un "
"juego"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<por defecto>"
@@ -265,11 +264,11 @@ msgstr "Plat.:"
msgid "Engine"
msgstr "Motor"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "Gráficos"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "Gráf."
@@ -282,7 +281,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "Opciones gráficas específicas"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "Sonido"
@@ -295,11 +294,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "Opciones de sonido específicas"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "Volumen"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "Volumen"
@@ -313,7 +312,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "Opciones de volumen específicas"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -326,7 +325,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "Opciones de MIDI específicas"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -339,11 +338,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "Opciones de MT-32 específicas"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "Rutas"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "Rutas"
@@ -357,7 +356,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "Juego:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "Adicional:"
@@ -366,44 +365,44 @@ msgstr "Adicional:"
msgid "Specifies path to additional data used by the game"
msgstr "Especifica un directorio para datos adicionales del juego"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "Adicional:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "Partidas:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "Especifica dónde guardar tus partidas"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
msgctxt "lowres"
msgid "Save Path:"
msgstr "Partidas:"
#: gui/editgamedialog.cpp:301 gui/editgamedialog.cpp:398
-#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "Ninguna"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "Por defecto"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "Selecciona un SoundFont"
@@ -411,7 +410,7 @@ msgstr "Selecciona un SoundFont"
msgid "Select additional game directory"
msgstr "Selecciona el directorio adicional"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "Selecciona el directorio para partidas guardadas"
@@ -503,7 +502,7 @@ msgstr "Seno"
msgid "Triangle"
msgstr "Triángulo"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "Otras"
@@ -598,7 +597,7 @@ msgstr "Elige una acción para asociarla"
msgid "~Q~uit"
msgstr "~S~alir"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "Salir de ScummVM"
@@ -606,7 +605,7 @@ msgstr "Salir de ScummVM"
msgid "A~b~out..."
msgstr "Acerca ~d~e..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "Acerca de ScummVM"
@@ -683,7 +682,7 @@ msgstr "Buscar:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "Cargar juego:"
@@ -693,7 +692,7 @@ msgstr "Cargar juego:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "Cargar"
@@ -806,250 +805,218 @@ msgstr "cada 15 minutos"
msgid "every 30 mins"
msgstr "cada 30 minutos"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 kHz"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 kHz"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 kHz"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 kHz"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 kHz"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "Ninguno"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "Fallo al aplicar algunos cambios en las opciones gráficas:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "no se ha podido cambiar el modo de vídeo."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "no se ha podido cambiar el ajuste de corrección de aspecto"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "no se ha podido cambiar el ajuste a pantalla completa"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
msgid "the filtering setting could not be changed"
msgstr "no se han podido cambiar los ajustes de filtrado"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr "Mostrar controles en pantalla"
-#: gui/options.cpp:962
+#: gui/options.cpp:936
#, fuzzy
msgid "Touchpad mouse mode"
msgstr "Modo Touchpad desactivado."
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr "Intercambiar botones Menu y Volver"
-#: gui/options.cpp:971
+#: gui/options.cpp:945
msgid "Pointer Speed:"
msgstr "Velocidad del puntero:"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr ""
-#: gui/options.cpp:973
+#: gui/options.cpp:947
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "Velocidad del puntero:"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr ""
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr "Hardware Shaders diferentes, otorgan efectos visuales diferentes"
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr "HW Shader:"
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "Modo gráfico:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "Renderizado:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "Modos especiales de difuminado compatibles con algunos juegos"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "Pantalla completa"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Filter graphics"
msgstr "Filtros de gráficos"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr "Usar filtrado lineal para escalar gráficos"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "Corrección de la relación de aspecto"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "Corregir relación de aspecto en juegos de 320x200"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "Disp. preferido:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "Disp. de música:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr ""
"Especifica el dispositivo de sonido o emulador de tarjeta de sonido "
"prefierido"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr ""
"Especifica el dispositivo de sonido o emulador de tarjeta de sonido de salida"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr "Disp. preferido:"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "Disp. de música:"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "Emul. AdLib:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "AdLib es usado para la música en muchos juegos"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr "Frec. de salida:"
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"Los valores más altos ofrecen mayor calidad, pero puede que la tarjeta de "
-"sonido no lo soporte"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "Dispositivo GM:"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr ""
"Especifique el dispositivo de salidapor defecto para la salida de General "
"MIDI"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "No usar música General MIDI"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "Utilizar el primer dispositivo disponible"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr ""
"SoundFont es compatible con algunas tarjetas de sonido, con FluidSynth y con "
"Timidity"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "Modo AdLib/MIDI"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "Usar tanto MIDI como AdLib en la generación de sonido"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "Ganancia MIDI:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "Disp. MT-32:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr ""
"Especifica el dispositivo de sonido para la salida Roland MT-32/LAPC1/CM32l/"
"CM64 por defecto"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "Roland MT-32 auténtica (desactivar emulación GM)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
@@ -1057,16 +1024,16 @@ msgstr ""
"Marcar si se quiere usar un dispositivo de sonido real conectado al "
"ordenador y compatible con Roland"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "Roland MT-32 real (sin emulación GM)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr "Dispositivo Roland GS (activar conversión MT-32)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
@@ -1074,275 +1041,275 @@ msgstr ""
"Marca esta opción si quieres activar la conversión para emular una MT-32 en "
"un dispositivo Roland GS"
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "No usar música Roland MT-32"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "Texto y voces:"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "Voces"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "Subtítulos"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "Ambos"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "Vel. de subtítulos:"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "Texto y voces:"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "Voz"
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "Subt"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "V&S"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "Reproducir voces y subtítulos"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "Vel. de subt.:"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "Música:"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "Música:"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "Silenciar"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "Efectos:"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "Volumen de los efectos de sonido"
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "Efectos:"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "Voces:"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "Voces:"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr "Shader"
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
#, fuzzy
msgid "Control"
msgstr "Control del ratón"
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr "Opciones de FluidSynth"
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "Temas:"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "Temas:"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr "Especifica el directorio adicional usado por los juegos y ScummVM"
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "Plugins:"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "Plugins:"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "Otras"
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "Tema:"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "Interfaz:"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "Autoguardado:"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "Autoguardado:"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "Teclas"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "Idioma:"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "Idioma de la interfaz de ScummVM"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr "Buscar actualizaciones:"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr "Frecuencia con la que se buscan actualizaciones"
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr "Buscar ahora"
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr "Nube"
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr "Nube"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr "Almacenamiento:"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr "Almacenamiento activo"
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr "<ninguno>"
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "Usuario:"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr "Nombre de usuario utilizado para este almacenamiento"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr "Espacio utilizado:"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr "Espacio utilizado para las partidas guardadas en este almacenamiento"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr "Última sincronización:"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr "Cuándo se ha producido la última sincronización de partidas guardadas"
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr "Conectar"
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr ""
"Abrir el asistente de configuración para habilitar el almacenamiento en línea"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr "Refrescar"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr ""
"Refrescar la información del almacenamiento en línea (nombre de usuario y "
"espacio)"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Download"
msgstr "Descargar"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr "Abrir el gestor de descargas"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr "Habilitar servidor"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr "Habilitar el servidor local"
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
msgid "Not running"
msgstr "Detenido"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
msgid "/root/ Path:"
msgstr "Directorio /raíz/:"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
msgid "Specifies which directory the Files Manager can access"
msgstr "Especifica los directorios accesibles para el gestor de archivos"
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "/raíz/:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid "Server's port:"
msgstr "Puerto del servidor:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
@@ -1350,28 +1317,28 @@ msgstr ""
"Puerto utilizado por el servidor\n"
"La autentificación solo es posible con el puerto predeterminado"
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr "Aplicar"
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
msgid "Failed to change cloud storage!"
msgstr "¡Fallo al cambiar el almacenamiento en línea!"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr "Ya se ha habilitado otro almacenamiento en línea."
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
msgid "Theme does not support selected language!"
msgstr "¡El Tema no soporta el lenguaje seleccionado!"
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
#, fuzzy
msgid "Theme cannot be loaded!"
msgstr "La partida no se ha cargado"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
@@ -1379,48 +1346,48 @@ msgstr ""
"\n"
"La configuración por defecto será restaurada."
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr "No se puede escribir en el directorio elegido. Selecciona otro."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "Selecciona el directorio de temas"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "Selecciona el directorio adicional"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "Selecciona el directorio de plugins"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
msgid "Select directory for Files Manager /root/"
msgstr "Selecciona el directorio /raíz/ para el gestor de archivos"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr "%llu bytes"
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr "<ahora>"
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
msgid "<never>"
msgstr "<nunca>"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
msgid "Stop server"
msgstr "Detener servidor"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr "Detener el servidor local"
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1886,9 +1853,9 @@ msgstr "~V~olver al lanzador"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1907,9 +1874,10 @@ msgstr "Guardar partida:"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1926,7 +1894,7 @@ msgstr ""
"archivo README para encontrar información básica e instrucciones para "
"obtener más ayuda."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2260,7 +2228,7 @@ msgid "OpenGL"
msgstr "OpenGL"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "Modo ventana"
@@ -2270,22 +2238,22 @@ msgid "Resolution: %dx%d"
msgstr "Resolución: %dx%d"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "Activar la corrección de aspecto"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "Desactivar la corrección de aspecto"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
msgid "Filtering enabled"
msgstr "Filtrado activado"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
msgid "Filtering disabled"
msgstr "Filtrado desactivado"
@@ -2300,7 +2268,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "Normal"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "Filtro de gráficos activo:"
@@ -2456,24 +2424,24 @@ msgstr "Clic central"
msgid "Right Click"
msgstr "Clic derecho"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "Ocultar ScummVM"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "Ocultar otros"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "Mostrar todo"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "Ventana"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "Minimizar"
@@ -2936,8 +2904,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2950,8 +2918,8 @@ msgstr "Cargar partida:"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3137,12 +3105,12 @@ msgid "Move Right"
msgstr "Mover a la derecha"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr "Girar a la izquierda"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr "Girar a la derecha"
@@ -3479,39 +3447,39 @@ msgstr ""
"\n"
"Por favor, contacta con el equipo."
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
msgid "Invalid file name for saving"
msgstr "Nombre del archivo de partida inválido"
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr "Arriba/Aumentar zoom/Avanzar/Abrir puertas"
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr "Abajo/Reducir zoom"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr "Mostrar/Ocultar inventario"
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr "Mostrar/Ocultar biochip"
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr "Acción/Seleccionar"
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr "Activar/Desactivar pantalla de datos"
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr "Mostrar/Ocultar pantalla de información"
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr "Mostrar/Ocultar menú de pausa"
@@ -3608,7 +3576,16 @@ msgstr ""
"Usar el set alternativo de colores plateados en lugar de los dorados, usados "
"normalmente"
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+#, fuzzy
+msgid "Enable content censoring"
+msgstr "Activar cursores flotantes"
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:837
msgid "(Autosave)"
msgstr "(Autoguardado)"
@@ -3626,22 +3603,22 @@ msgstr ""
msgid "Please use an external viewer to open the game's help file: %s"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
msgstr ""
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4665,6 +4642,31 @@ msgstr ""
"versión %d. Será necesaria una versión atualizada del motor para poder "
"usarla."
+#~ msgid "8 kHz"
+#~ msgstr "8 kHz"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 kHz"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 kHz"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 kHz"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 kHz"
+
+#~ msgid "Output rate:"
+#~ msgstr "Frec. de salida:"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "Los valores más altos ofrecen mayor calidad, pero puede que la tarjeta de "
+#~ "sonido no lo soporte"
+
#~ 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."
diff --git a/po/eu.po b/po/eu.po
index 0cd8d299bf..b01a5f35a1 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.5.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-09-04 04:39+0200\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\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/"
@@ -58,7 +58,7 @@ msgstr "Joan gora"
#: 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -152,7 +152,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -235,9 +235,8 @@ msgid ""
msgstr ""
"Jokoaren hizkuntza. Honek ez du zure ingelesezko bertsioa frantsesera pasako"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<lehenetsia>"
@@ -259,11 +258,11 @@ msgstr "Plataforma:"
msgid "Engine"
msgstr "Motorea"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "Grafikoak"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "GFX"
@@ -276,7 +275,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "Ezarpen grafiko globalak baliogabetu"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "Soinua"
@@ -289,11 +288,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "Soinu ezarpen globalak baliogabetu"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "Bolumena"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "Bolumena"
@@ -307,7 +306,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "Bolumen ezarpen globalak baliogabetu"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -320,7 +319,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "MIDI ezarpen globalak baliogabetu"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -333,11 +332,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "MT-32 ezarpen globalak baliogabetu"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "Bide-izenak"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "Bideak"
@@ -351,7 +350,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "Jokoa:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "Gehigarriak:"
@@ -360,44 +359,44 @@ msgstr "Gehigarriak:"
msgid "Specifies path to additional data used by the game"
msgstr "Jokoak erabiltzen duen datu gehigarrien bide-izena"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "Gehigarria:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "Partida gordeak:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "Zure gordetako partidak non gordeko diren zehazten du"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
msgctxt "lowres"
msgid "Save Path:"
msgstr "Partida gordeak:"
#: gui/editgamedialog.cpp:301 gui/editgamedialog.cpp:398
-#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "Bat ere ez"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "Lehenetsia"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "SoundFont-a aukeratu"
@@ -405,7 +404,7 @@ msgstr "SoundFont-a aukeratu"
msgid "Select additional game directory"
msgstr "Direktorio gehigarria aukeratu"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "Partida gordeen direktorioa aukeratu"
@@ -495,7 +494,7 @@ msgstr "Sinua"
msgid "Triangle"
msgstr "Triangelua"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "Beste"
@@ -588,7 +587,7 @@ msgstr "Aukeratu esleituko den ekintza"
msgid "~Q~uit"
msgstr "~I~rten"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "Irten ScummVM-tik"
@@ -596,7 +595,7 @@ msgstr "Irten ScummVM-tik"
msgid "A~b~out..."
msgstr "Ho~n~i buruz..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "ScummVM-i buruz"
@@ -673,7 +672,7 @@ msgstr "Bilatu:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "Jokoa kargatu:"
@@ -683,7 +682,7 @@ msgstr "Jokoa kargatu:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "Kargatu"
@@ -795,249 +794,217 @@ msgstr "15 minuturo"
msgid "every 30 mins"
msgstr "30 minuturo"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 kHz"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 kHz"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 kHz"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 kHz"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 kHz"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "Bat ere ez"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "Ezin izan da grafikoen aukeretako batzuk aplikatu:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "ezin izan da bideo-modua aldatu."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "formatu-ratioaren ezarpena ezin izan da aldatu"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "ezin izan da pantaila-osoaren ezarpena aldatu"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
#, fuzzy
msgid "the filtering setting could not be changed"
msgstr "ezin izan da pantaila-osoaren ezarpena aldatu"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr ""
-#: gui/options.cpp:962
+#: gui/options.cpp:936
#, fuzzy
msgid "Touchpad mouse mode"
msgstr "Touchpad modua desgaituta."
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr ""
-#: gui/options.cpp:971
+#: gui/options.cpp:945
#, fuzzy
msgid "Pointer Speed:"
msgstr "Abiadura:"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr ""
-#: gui/options.cpp:973
+#: gui/options.cpp:947
#, fuzzy
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "Abiadura:"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr ""
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "Modu grafikoa:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "Renderizazioa:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "Joko batzuk onarturiko lausotze-modu bereziak"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "Pantaila osoa"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
#, fuzzy
msgid "Filter graphics"
msgstr "Grafikoak"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr ""
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "Formatu-ratioaren zuzenketa"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "320x200 jokoentzako formatu-ratioa zuzendu"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "Gogoko gailua:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "Musika gailua:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr "Gogoko soinu txartel edo emuladorea zein den ezartzen du"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr "Irteerako soinu txartel edo emuladorea ezartzen du"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr "Gail. gogokoa:"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "Musika gailua:"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "AdLib emuladorea:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "AdLib musikarako hainbat jokotan erabiltzen da"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr "Irteera maizt.:"
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"Balio altuagoek soinu kalitate hobea ezartzen dute, baina baliteke zure "
-"soinu-txartela bateragarria ez izatea"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "GM gailua:"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr "Defektuzko soinu txartela ezartzen du General MIDI irteerarako"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "Ez erabili General MIDI musika"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "Erabilgarri dagoen lehen gailua erabili"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr ""
"Zenbait soinu txartel bateragarriak dira SoundFont-ekin, FluidSynth eta "
"Timidity besteak beste"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "AdLib/MIDI modua"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "Soinua sortzerakoan MIDI eta AdLib erabili"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "MIDI irabazia:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "MT-32 gailua:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr ""
"Roland MT-32/LAPC1/CM32l/CM64 irteerarako defektuzko soinu txartela ezartzen "
"du"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "Benetako Roland MT-32 (GM emulazio gabe)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
@@ -1045,16 +1012,16 @@ msgstr ""
"Markatu ordenagailura konektaturiko Roland-ekin bateragarria den soinu-"
"gailua erabiltzeko"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "Benetako Roland MT-32 (GM emulazio gabe)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr "Roland GS Gailua (gaitu MT-32 bihurketak)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
@@ -1062,358 +1029,358 @@ msgstr ""
"Markatu Roland GS gailu batean MT-32 bat emulatzea ahalbidetzen "
"dutenbihurketak gaitzeko"
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "Ez erabili Roland MT-32 musika"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "Testu eta ahotsa:"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "Ahotsa"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "Azpitituluak"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "Biak"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "Azpitit. abiadura:"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "Testu eta ahotsa:"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "Ahots."
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "Azp."
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "Biak"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "Ahotsak erreproduzitu eta azpitituluak erakutsi"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "Azpit. abiadura:"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "Musika:"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "Musika:"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "Mututu dena"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "Efektuak:"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "Soinu efektu berezien bolumena"
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "Efektuak:"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "Ahotsak:"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "Ahotsak:"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr ""
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
#, fuzzy
msgid "Control"
msgstr "Saguaren kontrola"
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr "FluidSynth Ezarpenak"
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "Gaiak:"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "Gaiak:"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr ""
"Joko guztiek edo ScummVM-k darabilten datu gehigarrien bide-izena ezartzen du"
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "Pluginak:"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "Pluginak:"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "Beste"
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "Gaia:"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "Interfazea:"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "Autogordetzea:"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "Autogordetzea:"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "Teklak"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "Hizkuntza:"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "ScummVM interfazearen hizkuntza"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr ""
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr ""
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr ""
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr ""
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr ""
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr ""
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr ""
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr ""
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "Erabiltzaile-izena:"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr ""
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr ""
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr ""
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr ""
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr ""
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr ""
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr ""
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr ""
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr ""
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
#, fuzzy
msgid "Download"
msgstr "Behera"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr ""
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr ""
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr ""
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
#, fuzzy
msgid "Not running"
msgstr "Jokoa exekutatzean errorea:"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
#, fuzzy
msgid "/root/ Path:"
msgstr "Gehigarriak:"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
#, fuzzy
msgid "Specifies which directory the Files Manager can access"
msgstr "Zure gordetako partidak non gordeko diren zehazten du"
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
#, fuzzy
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "Gehigarriak:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
#, fuzzy
msgid "Server's port:"
msgstr "Zerbitzaria:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
msgstr ""
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr ""
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
#, fuzzy
msgid "Failed to change cloud storage!"
msgstr "Ezin izan da jokoa gorde"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr ""
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
#, fuzzy
msgid "Theme does not support selected language!"
msgstr "Motore-pluginak ez ditu gordetako partidak onartzen"
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
#, fuzzy
msgid "Theme cannot be loaded!"
msgstr "Jokoa EZ da kargatu"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
msgstr ""
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr "Aukeraturiko direktorioan ezin da idatzi. Mesedez, aukeratu beste bat."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "Gaien direktorioa aukeratu"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "Fitxategi gehigarrien direktorioa aukeratu"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "Pluginen direktorioa aukeratu"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
#, fuzzy
msgid "Select directory for Files Manager /root/"
msgstr "Fitxategi gehigarrien direktorioa aukeratu"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr ""
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr ""
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
#, fuzzy
msgid "<never>"
msgstr "Inoiz ez"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
#, fuzzy
msgid "Stop server"
msgstr "Zerbitzaria:"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr ""
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1874,9 +1841,9 @@ msgstr "It~z~uli abiarazlera"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1895,9 +1862,10 @@ msgstr "Gorde jokoa:"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1913,7 +1881,7 @@ msgstr ""
"Barkatu, motore honek ez du joko barruan laguntzarik eskaintzen. Jo ezazu "
"README-ra oinarrizko informaziorako eta laguntza gehiago nola jaso jakiteko."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, fuzzy, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2247,7 +2215,7 @@ msgid "OpenGL"
msgstr "OpenGL"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "Leiho modua"
@@ -2257,23 +2225,23 @@ msgid "Resolution: %dx%d"
msgstr ""
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "Formatu-ratio zuzenketa gaituta"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "Formatu-ratio zuzenketa desgaituta"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
#, fuzzy
msgid "Filtering enabled"
msgstr "Klikatzea gaituta"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
#, fuzzy
msgid "Filtering disabled"
msgstr "Klikatzea desgaituta"
@@ -2289,7 +2257,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "Normala"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "Filtro grafiko aktiboa:"
@@ -2445,24 +2413,24 @@ msgstr "Erdiko klika"
msgid "Right Click"
msgstr "Eskuin-klika"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "ScummVM ezkutatu"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "Besteak ezkutatu"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "Denak erakutsi"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "Leihoa"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "Minimizatu"
@@ -2926,8 +2894,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2940,8 +2908,8 @@ msgstr "Jokoa kargatu:"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3133,12 +3101,12 @@ msgid "Move Right"
msgstr "Eskuinera irristatu"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr "Ezkerrera biratu"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr "Eskuinera biratu"
@@ -3471,40 +3439,40 @@ msgstr ""
"\n"
"Mesedez, eman abisua taldeari."
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
#, fuzzy
msgid "Invalid file name for saving"
msgstr "Sartu gordetzeko fitxategi-izena"
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr "Gora/Zoom-a hurbildu/Mugitu aurrera/Ireki ateak"
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr "Behera/Zoom-a urrundu"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr "Erakutsi/Ezkutatu inbentorioaren erretilua"
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr "Erakutsi/Ezkutatu Biochip erretilua"
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr "Ekintza/Aukeratu"
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr "Erakutsi/Ezkutatu Datu Zentroa"
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr "Erakutsi/Ezkutatu informazio pantaila"
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr "Erakutsi/Ezkutatu pausa menua"
@@ -3601,7 +3569,16 @@ msgstr ""
"Erabili zilar kolorezko kurtsore multzo alternatiboa, urre-koloreko "
"kursorenormalak erabili beharrean"
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+#, fuzzy
+msgid "Enable content censoring"
+msgstr "Gaitu kurtsore flotatzaileak"
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:837
#, fuzzy
msgid "(Autosave)"
msgstr "Autogordetzea:"
@@ -3620,22 +3597,22 @@ msgstr ""
msgid "Please use an external viewer to open the game's help file: %s"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
msgstr ""
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4648,6 +4625,31 @@ msgid ""
"%d. You will need an updated version of the engine to use this saved game."
msgstr ""
+#~ msgid "8 kHz"
+#~ msgstr "8 kHz"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 kHz"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 kHz"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 kHz"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 kHz"
+
+#~ msgid "Output rate:"
+#~ msgstr "Irteera maizt.:"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "Balio altuagoek soinu kalitate hobea ezartzen dute, baina baliteke zure "
+#~ "soinu-txartela bateragarria ez izatea"
+
#~ 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."
diff --git a/po/fi_FI.po b/po/fi_FI.po
index ab3eebd461..5944d0dbfd 100644
--- a/po/fi_FI.po
+++ b/po/fi_FI.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.6.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-09-04 04:39+0200\n"
-"PO-Revision-Date: 2017-08-06 19:02+0000\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\n"
+"PO-Revision-Date: 2017-09-09 13:38+0000\n"
"Last-Translator: Timo Mikkolainen <tmikkola@gmail.com>\n"
"Language-Team: Finnish <https://translations.scummvm.org/projects/scummvm/"
"scummvm/fi/>\n"
@@ -58,7 +58,7 @@ msgstr "Siirry ylös"
#: 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -154,7 +154,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -240,9 +240,8 @@ msgstr ""
"Pelin kieli. Tämä ei muuta esimerkiksi espanjankielistä versiota pelistä "
"englanninkieliseksi"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<oletus>"
@@ -264,11 +263,11 @@ msgstr "Alusta:"
msgid "Engine"
msgstr "Pelimoottori"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "Grafiikka"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "GFX"
@@ -281,7 +280,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "Ohita globaalit grafiikka-asetukset"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "Ääni"
@@ -294,11 +293,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "Ohita globaalit ääniasetukset"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "Voimakkuus"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "Voimakkuus"
@@ -312,7 +311,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "Ohita globaalit äänenvoimakkuusasetukset"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -325,7 +324,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "Ohita globaalit MIDI-asetukset"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -338,11 +337,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "Ohita globaalit MT-32 asetukset"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "Polut"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "Polut"
@@ -356,7 +355,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "Pelin polku:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "Lisäkansio:"
@@ -365,44 +364,44 @@ msgstr "Lisäkansio:"
msgid "Specifies path to additional data used by the game"
msgstr "Määrittää polun lisätiedostoihin joita peli mahdollisesti käyttää"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "Lisäkansio:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "Tallennuskansio:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "Määrittää polun pelitallennuksille"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
msgctxt "lowres"
msgid "Save Path:"
msgstr "Tallennuskansio:"
#: gui/editgamedialog.cpp:301 gui/editgamedialog.cpp:398
-#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "Ei määritelty"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "Oletus"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "Valitse SoundFont"
@@ -410,7 +409,7 @@ msgstr "Valitse SoundFont"
msgid "Select additional game directory"
msgstr "Valitse lisähakemisto pelille"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "Valitse hakemisto pelitallennuksille"
@@ -502,7 +501,7 @@ msgstr "Sini"
msgid "Triangle"
msgstr "Kolmio"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "Muut"
@@ -595,7 +594,7 @@ msgstr "Valitse toiminto"
msgid "~Q~uit"
msgstr "~L~opeta"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "Lopeta ScummVM"
@@ -603,7 +602,7 @@ msgstr "Lopeta ScummVM"
msgid "A~b~out..."
msgstr "~T~ietoa..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "Tietoa ScummVM:stä"
@@ -680,7 +679,7 @@ msgstr "Etsi:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "Lataa peli:"
@@ -690,7 +689,7 @@ msgstr "Lataa peli:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "Lataa"
@@ -802,243 +801,211 @@ msgstr "15 minuutin välein"
msgid "every 30 mins"
msgstr "30 minuutin välein"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 kHz"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 kHz"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 kHz"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 kHz"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 kHz"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "Ei käytössä"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "Joitain grafiikka-asetuksia ei saatu asetettua:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "videotilaa ei voitu vaihtaa."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "kuvasuhdekorjausasetusta ei voitu muuttaa"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "kokoruututilaa ei voitu muuttaa"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
msgid "the filtering setting could not be changed"
msgstr "Suodatusasetusta ei voitu muuttaa"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr "Virtuaalikontrollit"
-#: gui/options.cpp:962
+#: gui/options.cpp:936
msgid "Touchpad mouse mode"
msgstr "Touchpad hiiritila"
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr "Vaihda Menu ja Takaisin nappien paikkaa"
-#: gui/options.cpp:971
+#: gui/options.cpp:945
msgid "Pointer Speed:"
msgstr "Osoittimen Nopeus:"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr "Näppäimistö/joystick hiiriosoittimen nopeus"
-#: gui/options.cpp:973
+#: gui/options.cpp:947
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "Osoittimen Nopeus:"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr "Joystickin Kuollut Alue:"
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr "Analogisen joystickin kuollut alue"
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr "Joystickin Kuollut Alue:"
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr "Laitteistosävytin:"
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr "Laitteistosävyttimet tuottavat erilaisia visuaalisia efektejä"
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr "Laitteistosävytin:"
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr "Laitteistosävyttimet tuottavat erilaisia visuaalisia efektejä"
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "Grafiikkatila:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "Renderöintitila:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "Erityiset dithering asetukset joita jotkut pelit tukevat"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "Kokoruututila"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Filter graphics"
msgstr "Suodata grafiikka"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr "Käytä bilineaarista suodatinta grafiikan skaalauksessa"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "Kuvasuhteen korjaus"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "Korjaa kuvasuhde 320x200 peleille"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "Ensisijainen laite:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "Musiikkilaite:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr ""
"Määrittää äänilaitteen tai äänikorttiemulaattorin jota ensisijaisesti tulisi "
"käyttää"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr "Määrittää äänikortin tai äänikorttia emuloivan ohjelmiston"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr "Ensisijainen:"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "Musiikkilaite:"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "AdLib emulaattori:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "AdLibiä käytetään monien pelien musiikeissa"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr "Taajuus:"
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"Isommat taajuudet merkitsevät parempaa äänenlaatua, mutta äänikorttisi ei "
-"ehkä tue niitä"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "GM laite:"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr "Määrittää oletuksena käytettävän äänilaitteen General MIDIlle"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "Älä käytä General MIDIä musiikissa"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "Käytä ensimmäistä laitetta"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr ""
"Jotkut äänikortit tukevat äänifonttia (SoundFont), FluidSynth ja Timidity"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "Yhdistetty AdLib/MIDI tila"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "Käytä sekä MIDIä että Adlibiä äänentuotantoon"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "MIDIn äänilisäys:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "MT-32 laite:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr "Määrittää oletusäänilaitteen Roland MT-32/LAPC1/CM32l/CM64:n käyttöön"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "Aito Roland MT-32 (ei GM emulointia)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
@@ -1046,16 +1013,16 @@ msgstr ""
"Valitse jos haluat käyttää aitoa Roland-yhteensopivaa laittetta joka on "
"kytketty tietokoneeseesi"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "Aito Roland MT-32 (ei GM emulointia)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr "Roland GS Laite (aktivoi MT-32 mappaukset)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
@@ -1063,273 +1030,273 @@ msgstr ""
"Valitse jos haluat käyttää patch mappingia MT-32:n emulointiin Roland GS "
"laitteella"
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "Älä käytä Roland MT-32 musiikkia"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "Tekstitys ja puhe:"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "Puhe"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "Tekstitys"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "Molemmat"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "Tekstityksen nopeus:"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "Tekstitys ja puhe:"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "Puhe"
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "Tekstit"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "Molemmat"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "Näytä tekstitys ja käytä puhetta"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "Tekstityksen nopeus:"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "Musiikki:"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "Musiikki:"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "Vaimenna"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "Ääniefektit:"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "Erikoisefektit"
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "Ääniefektit:"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "Puhe:"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "Puhe:"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr "Sävytin"
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
msgid "Control"
msgstr "Kontrollit"
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr "FluidSynth asetukset"
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "Teemojen polku:"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "Teemojen polku:"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr ""
"Määrittää polun, jossa on lisätiedostoja joita ScummVM tai kaikki pelit "
"käyttävät"
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "Pluginien sijainti:"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "Pluginien sijainti:"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "Muut"
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "Teema:"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "GUI renderöijä:"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "Autom. tallennus:"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "Autom. tallennus:"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "Näppäimet"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "ScummVM:n kieli:"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "ScummVM käyttöliittymän kieli"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr "Päivitystarkistus:"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr "Kuinka usein tarkistetaan onko ScummVM:ään päivityksiä"
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr "Tarkista nyt"
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr "Pilvi"
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr "Pilvi"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr "Tallennustila:"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr "Aktiivinen pilvitallennus"
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr "<tyhjä>"
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "Käyttäjänimi:"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr "Tallennustilan käyttäjänimi"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr "Käytetty tila:"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr "ScummVM:n pelitallennusten käyttämä tila tallennustilassa"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr "Viimeisin synkronointi:"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr "Milloin pelitallennukset viimeksi synkronoitiin tähän tallennustilaan"
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr "Yhdistä"
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr "Avaa velhodialogi pilvitilan tiliin kirjautumiseen"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr "Päivitä"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr "Päivitä tämänhetkiset pilvitilan tiedot (käyttäjänimi ja käyttöaste)"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Download"
msgstr "Lataa"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr "Avaa lataustenhallintadialogi"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr "Käynnistä palvelin"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr "Käynnistä paikallinen webpalvelin"
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
msgid "Not running"
msgstr "Ei käynnissä"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
msgid "/root/ Path:"
msgstr "/root/-polku:"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
msgid "Specifies which directory the Files Manager can access"
msgstr "Määrittää hakemiston johon tiedostonhallinnalla on pääsy"
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "/root/-polku:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid "Server's port:"
msgstr "Palvelimen portti:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
@@ -1337,27 +1304,27 @@ msgstr ""
"Palvelimen käyttämä portti\n"
"Autentikaatio palvelimella on mahdollista vain vakioportilla"
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr "Käytä"
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
msgid "Failed to change cloud storage!"
msgstr "Pilvitallennustilan vaihtaminen epäonnistui!"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr "Toinen pilvitila on jo aktiivinen."
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
msgid "Theme does not support selected language!"
msgstr "Teema ei tue valittua kieltä!"
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
msgid "Theme cannot be loaded!"
msgstr "Teemaa ei pystytä lataamaan!"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
@@ -1365,48 +1332,48 @@ msgstr ""
"\n"
"Muut asetukset palautetaan."
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr "Valittuun hakemistoon ei voi kirjoittaa. Valitse toinen hakemisto."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "Valitse hakemisto käyttöliittymän teemoille"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "Valitse hakemisto lisätiedostoille"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "Valitse hakemisto plugineille"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
msgid "Select directory for Files Manager /root/"
msgstr "Valitse /root/ hakemisto tiedostonhallinnalle"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr "%llu tavua"
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr "<nyt>"
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
msgid "<never>"
msgstr "<ei koskaan>"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
msgid "Stop server"
msgstr "Pysäytä palvelin"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr "Pysäytä paikallinen webpalvelin"
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1872,9 +1839,9 @@ msgstr "Palaa p~e~livalitsimeen"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1893,9 +1860,10 @@ msgstr "Tallenna peli:"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1911,7 +1879,7 @@ msgstr ""
"Tämä pelimoottori ei toistaiseksi tue pelin sisäistä ohjetta. Avaa LUEMINUT "
"tiedosto saadaksesi lisätietoa."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2243,7 +2211,7 @@ msgid "OpenGL"
msgstr "OpenGL"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "Ikkunoitu tila"
@@ -2253,22 +2221,22 @@ msgid "Resolution: %dx%d"
msgstr "Resoluutio: %dx%d"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "Kuvasuhteen korjaus päällä"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "Kuvasuhteen korjaus pois päältä"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
msgid "Filtering enabled"
msgstr "Suodatus päällä"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
msgid "Filtering disabled"
msgstr "Suodatus pois päältä"
@@ -2283,7 +2251,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "Normaali (ei skaalausta)"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "Valittu grafiikkasuodatin:"
@@ -2441,24 +2409,24 @@ msgstr "Keskiklikkaus"
msgid "Right Click"
msgstr "Oikea klikkaus"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "Piilota ScummVM"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "Piilota muut"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "Näytä kaikki"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "Ikkuna"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "Minimoi"
@@ -2921,8 +2889,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2935,8 +2903,8 @@ msgstr "Lataa pelitallenne:"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3121,12 +3089,12 @@ msgid "Move Right"
msgstr "Liiku oikealle"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr "Käänny vasemmalle"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr "Käänny oikealle"
@@ -3456,39 +3424,39 @@ msgstr ""
"ikkunaan. Pyydämme että ilmoittaisit\n"
"niistä ScummVM:n kehittäjille."
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
msgid "Invalid file name for saving"
msgstr "Viallinen tiedostonnimi tallennukselle"
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr "Ylös/Zoomi Sisään/Liiku Eteen/Avaa Ovia"
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr "Alas/Zoomaa ylös"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr "Näytä/Piilota Inventorio"
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr "Näytä/Piilota Biochip"
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr "Toiminto/Valitse"
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr "Aktivoi Keskidatanäyttö"
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr "Näytä/Piilota Infonäyttö"
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr "Näytä/Piilota Pausevalikko"
@@ -3581,7 +3549,15 @@ msgid ""
"Use the alternate set of silver cursors instead of the normal golden ones"
msgstr "Käytä vaihtoehtoisia hopeisia kursoreita normaalien kultaisten sijaan"
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+msgid "Enable content censoring"
+msgstr "Sisällön sensurointi"
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr "Pelin sisäänrakennettu valinnainen sisällön sensurointi"
+
+#: engines/sci/detection.cpp:837
msgid "(Autosave)"
msgstr "(Autom. tallennus)"
@@ -3604,24 +3580,24 @@ msgstr ""
msgid "Please use an external viewer to open the game's help file: %s"
msgstr "Käytä ulkoista ohjelmaa pelin ohjetiedoston avaamiseen: %s"
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr ""
"Tämän pelitallenteen formaatti on vanhentunut, sitä ei pystytä lataamaan"
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr "Pelitallenteen versio on %d, suurin tuettu versio on %0d"
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
msgstr ""
"Tämä pelitallenne on luotu eri peliversiolla, sitä ei pystytä lataamaan"
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4662,6 +4638,31 @@ msgstr ""
"vain versioon %d asti. Tarvitset päivitetyn version tästä pelimoottorista "
"käyttääksesi tätä pelitallennusta."
+#~ msgid "8 kHz"
+#~ msgstr "8 kHz"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 kHz"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 kHz"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 kHz"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 kHz"
+
+#~ msgid "Output rate:"
+#~ msgstr "Taajuus:"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "Isommat taajuudet merkitsevät parempaa äänenlaatua, mutta äänikorttisi ei "
+#~ "ehkä tue niitä"
+
#~ 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."
diff --git a/po/fr_FR.po b/po/fr_FR.po
index 8f4525b17b..319ec39b25 100644
--- a/po/fr_FR.po
+++ b/po/fr_FR.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.8.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-09-04 04:39+0200\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\n"
"PO-Revision-Date: 2017-07-03 10:14+0000\n"
"Last-Translator: Thierry Crozat <criezy@scummvm.org>\n"
"Language-Team: French <https://translations.scummvm.org/projects/scummvm/"
@@ -58,7 +58,7 @@ msgstr "Remonter"
#: 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -155,7 +155,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -241,9 +241,8 @@ msgstr ""
"Langue du jeu. Cela ne traduira pas en anglais par magie votre version "
"espagnole du jeu."
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<défaut>"
@@ -265,11 +264,11 @@ msgstr "Système :"
msgid "Engine"
msgstr "Moteur"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "Graphique"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "GFX"
@@ -282,7 +281,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "Réglages spécifiques à ce jeu"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "Audio"
@@ -295,11 +294,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "Réglages spécifiques à ce jeu"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "Volume"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "Volume"
@@ -313,7 +312,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "Réglages spécifiques à ce jeu"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -326,7 +325,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "Réglages spécifiques à ce jeu"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -339,11 +338,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "Réglages spécifiques à ce jeu"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "Chemins"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "Chemins"
@@ -357,7 +356,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "Chemin du Jeu :"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "Extra :"
@@ -367,44 +366,44 @@ msgid "Specifies path to additional data used by the game"
msgstr ""
"Définie un chemin vers des données supplémentaires utilisées par le jeu"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "Extra :"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "Sauvegardes :"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "Définit l'emplacement où les fichiers de sauvegarde sont créés"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
msgctxt "lowres"
msgid "Save Path:"
msgstr "Sauvegardes :"
#: gui/editgamedialog.cpp:301 gui/editgamedialog.cpp:398
-#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "Aucun"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "Défaut"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "Choisir une banque de sons"
@@ -412,7 +411,7 @@ msgstr "Choisir une banque de sons"
msgid "Select additional game directory"
msgstr "Sélectionner un répertoire supplémentaire"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "Sélectionner le répertoire pour les sauvegardes"
@@ -505,7 +504,7 @@ msgstr "Sinus"
msgid "Triangle"
msgstr "Triangle"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "Divers"
@@ -600,7 +599,7 @@ msgstr "Sélectionnez une action à affecter"
msgid "~Q~uit"
msgstr "~Q~uitter"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "Quitter ScummVM"
@@ -608,7 +607,7 @@ msgstr "Quitter ScummVM"
msgid "A~b~out..."
msgstr "À ~P~ropos..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "À propos de ScummVM"
@@ -686,7 +685,7 @@ msgstr "Filtre :"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "Charger le jeu :"
@@ -696,7 +695,7 @@ msgstr "Charger le jeu :"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "Charger"
@@ -808,249 +807,217 @@ msgstr "Toutes les 15 mins"
msgid "every 30 mins"
msgstr "Toutes les 30 mins"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 kHz"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 kHz"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 kHz"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 kHz"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 kHz"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "Aucune"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "Certaines options graphiques n'ont pu être changées :"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "le mode vidéo n'a pu être changé."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "la correction de rapport d'aspect n'a pu être changée"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "le mode plein écran n'a pu être changé"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
msgid "the filtering setting could not be changed"
msgstr "le mode de filtrage n'a pu être changé"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr "Afficher les contrôles sur l'écran"
-#: gui/options.cpp:962
+#: gui/options.cpp:936
msgid "Touchpad mouse mode"
msgstr "Souris en mode Touchpad"
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr "Inverser les boutons Menu et Retour"
-#: gui/options.cpp:971
+#: gui/options.cpp:945
msgid "Pointer Speed:"
msgstr "Vitesse du pointeur :"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr ""
"Vitesse du pointeur de souris pour les contrôles par clavier ou joystick"
-#: gui/options.cpp:973
+#: gui/options.cpp:947
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "Vitesse du pointeur :"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr "Zone inactive du joystick :"
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr "Zone inactive du joystick analogique"
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr "Zone inactive du joystick :"
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr "Shader :"
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr "Les divers shaders matériels créent des effets visuels différents"
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr "Shader :"
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr "Divers shaders créent des effets visuels différents"
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "Mode graphique :"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "Mode de rendu :"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "Mode spécial de tramage supporté par certains jeux"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "Plein écran"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Filter graphics"
msgstr "Filtrer les graphiques"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr ""
"Utiliser une interpolation bi-linéaire lors du changement d'échelle des "
"graphiques"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "Correction du rapport d'aspect"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "Corrige le rapport d'aspect pour les jeux en 320x200"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "Sortie Préférée :"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "Sortie Audio :"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr ""
"Spécifie le périphérique de sortie audio ou l'émulateur de carte audio "
"préféré"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr "Spécifie le périphérique de sortie audio ou l'émulateur de carte audio"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr "Sortie Préférée :"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "Sortie Audio :"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "Émulateur AdLib :"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "AdLib est utilisé pour la musique dans de nombreux jeux"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr "Fréquence :"
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"Une valeur plus élevée donne une meilleure qualité audio mais peut ne pas "
-"être supportée par votre carte son"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "Sortie GM :"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr "Spécifie le périphérique audio par défaut pour la sortie General MIDI"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "Ne pas utiliser la musique General MIDI"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "Utiliser le premier périphérique disponible"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "Banque de sons :"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr ""
"La banque de sons (SoundFont) est utilisée par certaines cartes audio, "
"FluidSynth et Timidity"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont :"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "Mode mixte AdLib/MIDI"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "Utiliser à la fois MIDI et AdLib"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "Gain MIDI :"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "Sortie MT-32 :"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr ""
"Spécifie le périphérique audio par défaut pour la sortie Roland MT-32/LAPC1/"
"CM32l/CM64"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "Roland MT-32 exacte (désactive l'émulation GM)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
@@ -1058,16 +1025,16 @@ msgstr ""
"Vérifie si vous voulez utiliser un périphérique audio compatible Roland "
"connecté à l'ordinateur"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "Roland MT-32 exacte (pas d'ému GM)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr "Roland GS (active le mappage MT-32)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
@@ -1075,275 +1042,275 @@ msgstr ""
"Utilisez cette option si vous voulez activez le mappage à la volée pour une "
"émulation MT-32 sur un appareil Roland GS."
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "Ne pas utiliser la musique Roland MT-32"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "Dialogue :"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "Voix"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "Sous-titres"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "Les deux"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "Vitesse des ST :"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "Dialogue :"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "Voix"
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "Subs"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "V&S"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "Affiche les sous-titres et joue les dialogues audio"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "Vitesse des ST :"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "Volume Musique :"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "Musique :"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "Silence"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "Volume Bruitage :"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "Volume des effets spéciaux sonores"
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "Bruitage :"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "Volume Dialogues :"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "Dialogues :"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr "Shader"
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
msgid "Control"
msgstr "Contrôles"
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr "Paramètres FluidSynth"
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "Thèmes :"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "Thèmes :"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr ""
"Spécifie un chemin vers des données supplémentaires utilisées par tous les "
"jeux ou ScummVM"
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "Plugins :"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "Plugins :"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "Divers"
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "Thème :"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "Interface :"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "Sauvegarde auto :"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "Sauvegarde :"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "Touches"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "Langue :"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "Langue de l'interface graphique de ScummVM"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr "Vérif. mises à jour :"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr "Fréquence des vérifications"
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr "Maintenant"
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr "Nuage"
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr "Nuage"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr "Stockage :"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr "Service de stockage actif"
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr "<aucun>"
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "Nom d'utilisateur :"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr "Nom d'utilisateur pour ce service"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr "Espace utilisé :"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr "Espace utilisé par les sauvegardes de ScummVM sur ce stockage"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr "Synchronisé :"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr "Quand la dernière synchronisation des sauvegardes a eu lieu"
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr "Se connecter"
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr "Ouvre l'assistant de connexion au compte de stockage en ligne"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr "Rafraîchir"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr ""
"Rafraîchir les informations (nom d'utilisateur et espace utilisé) pour le "
"service de stockage actif"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Download"
msgstr "Télécharger"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr "Ouvrir le gestionnaire de téléchargement"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr "Démarrer serveur"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr "Démarre le serveur web local"
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
msgid "Not running"
msgstr "Arrêté"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
msgid "/root/ Path:"
msgstr "Chemin /racine/ :"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
msgid "Specifies which directory the Files Manager can access"
msgstr "Indique le répertoire auquel le gestionnaire de fichier peut accéder"
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "/racine/ :"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid "Server's port:"
msgstr "Port :"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
@@ -1351,27 +1318,27 @@ msgstr ""
"Port utilisé par le serveur\n"
"Authentification avec le serveur n'est disponible qu'avec le port par défaut"
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr "Appliquer"
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
msgid "Failed to change cloud storage!"
msgstr "Echec du changement de service de stockage !"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr "Un autre service de stockage est déjà actif."
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
msgid "Theme does not support selected language!"
msgstr "Cette langue ne peut pas être utilisée avec le thème actuel !"
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
msgid "Theme cannot be loaded!"
msgstr "Erreur au chargement du thème !"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
@@ -1379,50 +1346,50 @@ msgstr ""
"\n"
"Les réglages Divers vont être restaurés à leurs valeurs précédentes."
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr ""
"Le répertoire sélectionné est verrouillé en écriture. Sélectionnez un autre "
"répertoire."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "Sélectionner le répertoire des thèmes d'interface"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "Sélectionner le répertoire pour les fichiers supplémentaires"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "Sélectionner le répertoire des plugins"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
msgid "Select directory for Files Manager /root/"
msgstr "Indique le répertoire pour la /racine/ du Gestionnaire de Fichiers"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr "%llu octets"
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr "<maintenant>"
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
msgid "<never>"
msgstr "<jamais>"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
msgid "Stop server"
msgstr "Arrêter serveur"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr "Arrêter le serveur"
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1892,9 +1859,9 @@ msgstr "Retour au ~L~anceur"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1913,9 +1880,10 @@ msgstr "Sauvegarde :"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1932,7 +1900,7 @@ msgstr ""
"fichier README pour les informations de base et les instructions pour "
"obtenir de l'aide supplémentaire."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2266,7 +2234,7 @@ msgid "OpenGL"
msgstr "OpenGL"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "Mode Fenêtre"
@@ -2276,22 +2244,22 @@ msgid "Resolution: %dx%d"
msgstr "Résolution : %dx%d"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "Activer la correction du rapport d'aspect"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "Désactiver la correction du rapport d'aspect"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
msgid "Filtering enabled"
msgstr "Filtrage Activé"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
msgid "Filtering disabled"
msgstr "Filtrage Désactivé"
@@ -2306,7 +2274,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "Normal"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "Mode graphique actif :"
@@ -2462,24 +2430,24 @@ msgstr "Clic Milieu"
msgid "Right Click"
msgstr "Clic Droit"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "Masquer ScummVM"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "Masquer les autres"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "Tout afficher"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "Fenêtre"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "Placer dans le Dock"
@@ -2946,8 +2914,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2960,8 +2928,8 @@ msgstr "Charger le jeu :"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3148,12 +3116,12 @@ msgid "Move Right"
msgstr "Aller vers la Droite"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr "Tourner vers la Gauche"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr "Tourner vers la Droite"
@@ -3486,39 +3454,39 @@ msgstr ""
"ScummVM a affiché des messages d'avertissements dans votre fenêtre de "
"console et ne peut pas garantir que tous les fichiers ont été convertis."
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
msgid "Invalid file name for saving"
msgstr "Nom de fichier invalide pour la sauvegarde"
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr "Haut/Zoom/Avancer/Ouvrir Portes"
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr "Bas/Dézoom"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr "Montrer/Cacher l'Inventaire"
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr "Montrer/Cacher le Biochip"
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr "Action/Sélection"
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr "Basculer l'Affichage Central"
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr "Montrer/Cacher l'Écran d'Info"
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr "Montrer/Cacher le Menu de Pause"
@@ -3617,7 +3585,16 @@ msgid ""
"Use the alternate set of silver cursors instead of the normal golden ones"
msgstr "Utiliser les curseurs argentés au lieu des curseurs normaux dorés"
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+#, fuzzy
+msgid "Enable content censoring"
+msgstr "Activer les curseurs flottants"
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:837
msgid "(Autosave)"
msgstr "(Sauvegarde automatique)"
@@ -3643,20 +3620,20 @@ msgstr ""
"Veuillez utiliser une application externe pour ouvrir le fichier d'Aide du "
"jeu : %s"
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr ""
"Le format de ce fichier de sauvegarde est obsolète. Le fichier ne peut être "
"chargé."
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr ""
"La version du fichier de sauvegarde est %d, mais la version maximum "
"supportée est %0d"
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
@@ -3664,7 +3641,7 @@ msgstr ""
"Cette sauvegarde a été créé par une version différente du jeu et ne peut "
"être chargée"
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4722,6 +4699,31 @@ msgstr ""
"les versions %d ou inférieures. Vous devez utiliser une version plus récente "
"de ScummVM pour pouvoir charger cette sauvegarde."
+#~ msgid "8 kHz"
+#~ msgstr "8 kHz"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 kHz"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 kHz"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 kHz"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 kHz"
+
+#~ msgid "Output rate:"
+#~ msgstr "Fréquence :"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "Une valeur plus élevée donne une meilleure qualité audio mais peut ne pas "
+#~ "être supportée par votre carte son"
+
#~ 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."
diff --git a/po/gl_ES.po b/po/gl_ES.po
index 9e73bcc6e8..34151c4393 100644
--- a/po/gl_ES.po
+++ b/po/gl_ES.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.8.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-09-04 04:39+0200\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\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/"
@@ -58,7 +58,7 @@ msgstr "Arriba"
#: 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -155,7 +155,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -239,9 +239,8 @@ msgid ""
"English"
msgstr "Idioma do xogo. Non converterá a versión galega do xogo en inglesa"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<por defecto>"
@@ -263,11 +262,11 @@ msgstr "Plataforma:"
msgid "Engine"
msgstr "Motor"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "Gráficos"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "Efectos gráficos"
@@ -280,7 +279,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "Anular a configuración dos gráficos"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "Son"
@@ -293,11 +292,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "Anular a configuración do son"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "Volume"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "Volume"
@@ -311,7 +310,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "Anular a configuración do volume"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -324,7 +323,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "Anular a configuración de MIDI"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -337,11 +336,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "Anular a configuración de MT-32"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "Camiños"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "Camiños"
@@ -355,7 +354,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "Camiño do xogo:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "Camiño adicional:"
@@ -364,44 +363,44 @@ msgstr "Camiño adicional:"
msgid "Specifies path to additional data used by the game"
msgstr "Especifica o camiño dos datos adicionais usados no xogo"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "Camiño adicional:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "Camiño de gardado:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "Especifica o lugar dos ficheiros de gardado"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
msgctxt "lowres"
msgid "Save Path:"
msgstr "Camiño de gardado:"
#: gui/editgamedialog.cpp:301 gui/editgamedialog.cpp:398
-#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "Ningún"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "Predefinido"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "Seleccionar SoundFont"
@@ -409,7 +408,7 @@ msgstr "Seleccionar SoundFont"
msgid "Select additional game directory"
msgstr "Selecciona un directorio con datos adicionais"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "Selecciona un directorio para ficheiros de gardado"
@@ -502,7 +501,7 @@ msgstr "Seno"
msgid "Triangle"
msgstr "Triángulo"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "Misc."
@@ -598,7 +597,7 @@ msgstr "Elixe unha acción para asignala"
msgid "~Q~uit"
msgstr "~S~aír"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "Saír de ScummVM"
@@ -606,7 +605,7 @@ msgstr "Saír de ScummVM"
msgid "A~b~out..."
msgstr "Ace~r~ca de..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "Acerca de ScummVM"
@@ -683,7 +682,7 @@ msgstr "Buscar:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "Cargar partida:"
@@ -693,7 +692,7 @@ msgstr "Cargar partida:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "Cargar"
@@ -801,263 +800,231 @@ msgstr "cada 15 min"
msgid "every 30 mins"
msgstr "cada 30 min"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 kHz"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 kHz"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 kHz"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 kHz"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 kHz"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "Ningunha"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "Erro ao aplicar os cambios na configuración dos gráficos:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "non se puido cambiar o modo de vídeo."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "non se puido cambiar a proporción."
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "non se puido cambiar a configuración de pantalla completa."
-#: gui/options.cpp:557
+#: gui/options.cpp:544
msgid "the filtering setting could not be changed"
msgstr "non se puido cambiar a configuración de filtrado."
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr ""
-#: gui/options.cpp:962
+#: gui/options.cpp:936
#, fuzzy
msgid "Touchpad mouse mode"
msgstr "Modo Panel táctil desactivado."
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr ""
-#: gui/options.cpp:971
+#: gui/options.cpp:945
#, fuzzy
msgid "Pointer Speed:"
msgstr "Velocidade:"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr ""
-#: gui/options.cpp:973
+#: gui/options.cpp:947
#, fuzzy
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "Velocidade:"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr ""
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "Gráficos:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "Procesamento:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "Modos de interpolación de cores compatibles con algúns xogos"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "Pantalla completa"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Filter graphics"
msgstr "Filtrar gráficos"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr "Empregar filtrado linear ao escalar gráficos"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "Corrección de proporción"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "Corrixir a proporción para os xogos en 320x200"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "Dispositivo preferido:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "Dispositivo de música:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr "Especifica o dispositivo ou emulador de tarxeta de son preferido"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr "Especifica o dispositivo ou emulador de tarxeta de son de saída"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr "Disp. preferido:"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "Disp. música:"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "Emulador de AdLib:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "Moitos xogos empregan AdLib para a música"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr "Taxa de saída:"
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"A maior valor, maior calidade do son, mais talvez non sexa compatible coa "
-"tarxeta"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "Dispositivo de GM:"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr ""
"Especifica o dispositivo de son por defecto para a saída de General MIDI"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "Non empregar música en General MIDI"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "Empregar o primeiro dispositivo dispoñible"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr ""
"SoundFont é compatible con algunhas tarxetas de son, FluidSynth e Timidity"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "Modo AdLib/MIDI mixto"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "Empregar xeración de son MIDI e máis AdLib"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "Ganancia de MIDI:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "Dispositivo de MT-32:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr ""
"Especifica o dispositivo por defecto para a saída de Roland MT-32/LAPC1/"
"CM32l/CM64"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "Roland MT-32 verdadeiro (sen emulación de GM)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
msgstr ""
"Marcar para empregar o hardware compatible con Roland conectado ao sistema"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "Roland MT-32 (sen emulación de GM)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr "Dispositivo Roland GS (activar atribución MT-32)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
@@ -1065,279 +1032,279 @@ msgstr ""
"Marcar para activar a atribución de parches e emular MT-32 nun dispositivo "
"Roland GS"
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "Non empregar música en Roland MT-32"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "Texto e voz:"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "Voz"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "Subtítulos"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "Ambos"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "Velocidade dos subtítulos:"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "Texto e voz:"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "Voz"
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "Subs"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "Ambos"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "Mostrar os subtítulos e reproducir as voces"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "Velocidade subs:"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "Volume de música:"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "Volume música:"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "Silenciar todo"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "Volume de efectos:"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "Volume dos efectos de son"
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "Volume efectos:"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "Volume de voz:"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "Volume voz:"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr ""
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
#, fuzzy
msgid "Control"
msgstr "Rato"
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr "Configuración de FluidSynth"
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "Camiño do tema:"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "Camiño tema:"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr ""
"Especificar o camiño dos datos adicionais de todos os xogos ou de ScummVM"
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "Camiño dos complementos:"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "Camiño complementos:"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "Misc."
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "Tema:"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "Procesamento da interfaz:"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "Autogardado:"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "Autogardado:"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "Teclas"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "Idioma de interfaz:"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "Idioma da interfaz de ScummVM"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr "Comprobación de actualizacións:"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr "Frecuencia de comprobación das actualizacións de ScummVM"
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr "Comprobar agora"
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr "Nube"
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr "Nube"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr "Almacenamento:"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr "Almacenamento na nube activo"
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr "<ningún>"
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "Nome de usuario:"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr "Nome de usuario empregado por este almacenamento"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr "Espazo empregado:"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr ""
"Espazo empregado polas partidas gardadas de ScummVM neste almacenamento."
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr "Última sincronización:"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr ""
"O momento da última sincronización das partidas gardadas neste almacenamento."
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr "Conectar"
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr ""
"Abre o diálogo do asistente para conectar coa túa conta de almacenamento na "
"nube."
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr "Actualizar"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr ""
"Actualiza a información do almacenamento na nube actual (nome de usuario e "
"espazo empregado)."
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Download"
msgstr "Descargar"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr "Abre o diálogo do xestor de descargas."
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr "Executar servidor"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr "Executar servidor web local"
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
msgid "Not running"
msgstr "Non se está a executar"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
msgid "/root/ Path:"
msgstr "Camiño de /root/:"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
msgid "Specifies which directory the Files Manager can access"
msgstr "Especifica o directorio de acceso do xestor de ficheiros."
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "Camiño de /root/:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid "Server's port:"
msgstr "Porto do servidor:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
@@ -1345,76 +1312,76 @@ msgstr ""
"O porto empregado polo servidor.\n"
"Autenticación non dispoñible con portos non predeterminados."
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr "Aplicar"
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
msgid "Failed to change cloud storage!"
msgstr "Erro ao cambiar o almacenamento na nube!"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr "Xa está activo outro almacenamento na nube."
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
#, fuzzy
msgid "Theme does not support selected language!"
msgstr "O complemento do motor non é compatible cos ficheiros de gardado"
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
#, fuzzy
msgid "Theme cannot be loaded!"
msgstr "Non se puido cargar a partida"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
msgstr ""
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr "Non é posible escribir no directorio elixido. Selecciona outro."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "Seleccionar directorio para temas de interfaz"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "Seleccionar directorio para ficheiros adicionais"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "Seleccionar directorio para complementos"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
msgid "Select directory for Files Manager /root/"
msgstr "Seleccionar directorio para /root/ de xestor de ficheiros"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr "%llu bytes"
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr "<agora mesmo>"
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
msgid "<never>"
msgstr "<nunca>"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
msgid "Stop server"
msgstr "Deter servidor"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr "Deter servidor web local"
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1882,9 +1849,9 @@ msgstr "~V~olver ao Iniciador"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1903,9 +1870,10 @@ msgstr "Gardar partida:"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1922,7 +1890,7 @@ msgstr ""
"para obter información básica e máis instrucións para acadar asistencia "
"adicional."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, fuzzy, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2256,7 +2224,7 @@ msgid "OpenGL"
msgstr "OpenGL"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "Modo en ventá"
@@ -2266,22 +2234,22 @@ msgid "Resolution: %dx%d"
msgstr "Resolución: %dx%d"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "Corrección de proporción activada"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "Corrección de proporción desactivada"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
msgid "Filtering enabled"
msgstr "Filtrado activado"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
msgid "Filtering disabled"
msgstr "Filtrado desactivado"
@@ -2296,7 +2264,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "Normal (sen escala)"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "Filtro de gráficos activo:"
@@ -2452,24 +2420,24 @@ msgstr "Botón central"
msgid "Right Click"
msgstr "Botón secundario"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "Ocultar ScummVM"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "Ocultar outros"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "Mostrar todo"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "Ventá"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "Minimizar"
@@ -2931,8 +2899,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2945,8 +2913,8 @@ msgstr "Restaurar xogo:"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3136,12 +3104,12 @@ msgid "Move Right"
msgstr "Mover á dereita"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr "Xirar á esquerda"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr "Xirar á dereita"
@@ -3481,40 +3449,40 @@ msgstr ""
"\n"
"Contacta co equipo de ScummVM."
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
#, fuzzy
msgid "Invalid file name for saving"
msgstr "Introducir nome de ficheiro para gardar"
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr "Arriba/Ampliar/Avanzar/Abrir portas"
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr "Abaixo/Reducir"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr "Mostrar/Ocultar bandexa de inventario"
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr "Mostrar/Ocultar bandexa de biochip"
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr "Acción/Seleccionar"
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr "Activar/Desactivar pantalla de datos"
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr "Mostrar/Ocultar pantalla de información"
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr "Mostrar/Ocultar menú de pausa"
@@ -3612,7 +3580,16 @@ msgstr ""
"Emprega o xogo de cursores prateados alternativo, no canto dos dourados "
"normais."
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+#, fuzzy
+msgid "Enable content censoring"
+msgstr "Activa os cursores flotantes."
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:837
#, fuzzy
msgid "(Autosave)"
msgstr "Autogardado:"
@@ -3631,22 +3608,22 @@ msgstr ""
msgid "Please use an external viewer to open the game's help file: %s"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
msgstr ""
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4669,6 +4646,31 @@ msgstr ""
"compatíbel até a versión %d. Cómpre descargar unha versión actualizada do "
"motor para empregar estes datos gardados."
+#~ msgid "8 kHz"
+#~ msgstr "8 kHz"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 kHz"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 kHz"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 kHz"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 kHz"
+
+#~ msgid "Output rate:"
+#~ msgstr "Taxa de saída:"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "A maior valor, maior calidade do son, mais talvez non sexa compatible coa "
+#~ "tarxeta"
+
#~ 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."
diff --git a/po/hu_HU.po b/po/hu_HU.po
index 96e7b43925..9c4e917f69 100644
--- a/po/hu_HU.po
+++ b/po/hu_HU.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.3.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-09-04 04:39+0200\n"
-"PO-Revision-Date: 2017-08-07 06:37+0000\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\n"
+"PO-Revision-Date: 2017-09-09 02:29+0000\n"
"Last-Translator: George Kormendi <grubycza@hotmail.com>\n"
"Language-Team: Hungarian <https://translations.scummvm.org/projects/scummvm/"
"scummvm/hu/>\n"
@@ -58,7 +58,7 @@ msgstr "Feljebb"
#: 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -155,7 +155,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -239,9 +239,8 @@ msgid ""
msgstr ""
"A játék nyelve. Ne állítsd át a pl. Spanyol nyelvû játékodat Angol nyelvre"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<alapértelmezett>"
@@ -263,11 +262,11 @@ msgstr "Platform:"
msgid "Engine"
msgstr "Motor"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "Grafika"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "GFX"
@@ -280,7 +279,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "Globális grafikai beállítások felülbírálása"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "Audió"
@@ -293,11 +292,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "Globális audió beállítások felülbírálása"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "Hangerõ"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "Hangerõ"
@@ -311,7 +310,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "Globális hangerõbeállítások felülbírálása"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -324,7 +323,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "Globális MIDI beállítások felülbírálása"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -337,11 +336,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "Globális MT-32 beállítások felülbírálása"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "Mappák"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "Mappák"
@@ -355,7 +354,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "Játék Mappa:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "Extra Mappa:"
@@ -364,44 +363,44 @@ msgstr "Extra Mappa:"
msgid "Specifies path to additional data used by the game"
msgstr "Mappa kiválasztás a játékok kiegészítõ fájljaihoz"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "Extra Mappa:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "Mentés Mappa:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "Játékmentések helyének meghatározása"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
msgctxt "lowres"
msgid "Save Path:"
msgstr "Mentés Mappa:"
#: gui/editgamedialog.cpp:301 gui/editgamedialog.cpp:398
-#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "Nincs"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "Alapértelmezett"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "SoundFont kiválasztás"
@@ -409,7 +408,7 @@ msgstr "SoundFont kiválasztás"
msgid "Select additional game directory"
msgstr "Válassz mappát a játék kiegészítõkhöz"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "Válaszz játékmentéseknek mappát"
@@ -501,7 +500,7 @@ msgstr "Színusz"
msgid "Triangle"
msgstr "Háromszög"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "Vegyes"
@@ -595,7 +594,7 @@ msgstr "Válassz mûveletet a kiosztáshoz"
msgid "~Q~uit"
msgstr "Kilépés"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "ScummVM bezárása"
@@ -603,7 +602,7 @@ msgstr "ScummVM bezárása"
msgid "A~b~out..."
msgstr "Névjegy..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "ScummVM névjegy"
@@ -680,7 +679,7 @@ msgstr "Keresés:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "Játék betöltése:"
@@ -690,7 +689,7 @@ msgstr "Játék betöltése:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "Betöltés"
@@ -799,240 +798,209 @@ msgstr "15 percenként"
msgid "every 30 mins"
msgstr "30 percenként"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 kHz"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 kHz"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 kHz"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 kHz"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 kHz"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "Nincs"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "Néhány grafikus opció változtatása sikertelen:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "a videómód nem változott."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "a képméretarány beállítások nem változtak"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "a teljesképernyõs beállítás nem változott"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
msgid "the filtering setting could not be changed"
msgstr "a szûrési beállítást nem lehet megváltoztatni"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr "Irányítás a képernyõn megjelenítése"
-#: gui/options.cpp:962
+#: gui/options.cpp:936
msgid "Touchpad mouse mode"
msgstr "Touchpad egér mód"
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr "Menü és Vissza gombok cseréje"
-#: gui/options.cpp:971
+#: gui/options.cpp:945
msgid "Pointer Speed:"
msgstr "Mutató Sebesség:"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr "Billentyûzet/joystick egérmutató vezérlés sebessége"
-#: gui/options.cpp:973
+#: gui/options.cpp:947
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "Mutató Sebesség:"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr "Joy Holtzóna:"
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr "Analóg joystick Holtzóna"
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr "Joy Holtzóna:"
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr "HW Árnyaló:"
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr "Különbözõ hardver árnyalók különbözõ vizuális effekteket adnak"
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr "HW Árnyaló:"
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr "Különbözõ hardver árnyalók különbözõ vizuális effekteket adnak"
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "Grafikus mód:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "Kirajzolás mód:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "Néhány játék támogatja a speciális árnyalási módokat"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "Teljesképernyõs mód"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Filter graphics"
msgstr "Grafika szûrése"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr "Lineáris szûrés használata a grafika átméretezésénél"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "Képméretarány korrekció"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "Helyes oldalarány a 320x200 játékokhoz"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "Elsõdleges eszköz:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "Zene eszköz:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr "Elsõdleges hangeszköz vagy hang emulátor beállítások"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr "Hangeszköz vagy hangkártya emulátor beállítások"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr "Elsõdleges eszk.:"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "Zene eszköz:"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "AdLib emulátor:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "AdLib meghajtót sok játék használja zenéhez"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr "Kimeneti ráta:"
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"Nagyobb értékek jobb hangminõséget adnak, de nem minden hangkártya támogatja"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "GM Eszköz:"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr "Alapértelmezett hangeszköz General MIDI kimenethez"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "Ne használj General MIDI zenét"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "Elsõ elérhetõ eszköz használata"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr ""
"Néhány hangkárya, FluidSynth és Timidyti támogatja a SoundFont betöltését"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "Vegyes AdLib/MIDI mód"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "MIDI és AdLib hanggenerátorok használata"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "MIDI erõsítés:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "MT-32 Eszköz:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr "Roland MT-32/LAPC1/CM32l/CM64 alapértelmezett hangeszközök beállítása"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "Roland MT-32 Hardver (GM emuláció tiltva)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
@@ -1040,16 +1008,16 @@ msgstr ""
"Jelöld be, ha hardveres Roland-Kompatibilis hangeszköz van csatlakoztatva a "
"gépedhez és használni akarod"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "Roland MT-32 Hardver (GM emuláció nincs)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr "Roland GS eszköz (MT-32 mapping engedélyezés)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
@@ -1057,272 +1025,272 @@ msgstr ""
"Ellenõrzés ha engedélyezni akarod az emulált MT-32 Folt leképezést a Roland "
"GS eszközön"
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "Ne használj Roland MT-32 zenét"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "Szöveg és beszéd:"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "Csak beszéd"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "Csak felirat"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "Mind"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "Felirat sebesség:"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "Felirat és beszéd:"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "Besz"
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "Text"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "Mind"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "Hang és feliratok megjelenítése"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "Felirat sebesség:"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "Zene hangerõ:"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "Zene hangerõ:"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "Összes némítása"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "SFX hangerõ:"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "Speciális hangeffektusok hangereje"
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "SFX hangerõ:"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "Beszéd hangerõ:"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "Beszéd hangerõ:"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr "Árnyaló"
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
msgid "Control"
msgstr "Irányitás"
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr "FluidSynth Beállítása"
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "Téma Mappa:"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "Téma Mappa:"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr "Minden jéték és ScummVM kiegészítõ fájljainak mappája"
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "Plugin Mappa:"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "Plugin Mappa:"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "Vegyes"
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "Téma:"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "GUI Renderelõ:"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "Automentés:"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "Automentés:"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "Billentyûk"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "GUI nyelve:"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "A ScummVM GUI nyelve"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr "Frissítés ellenõrzés:"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr "Milyen gyakran ellenõrizze a ScummVM frissítéseket"
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr "Ellenõrzés most"
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr "Felhõ"
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr "Felhõ"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr "Tároló:"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr "Aktív felhõ tároló"
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr "<nincs>"
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "Felhasználó:"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr "Felhasználónév ehhez a tárolóhoz"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr "Használt hely:"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr "ScummVM mentésekhez használt hely ezen a tárolón"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr "Utolsó szinkron:"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr "Amikor az utolsó mentés szinkronizálás történt ezen a tárolón"
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr "Csatlakozás"
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr "Csatlakozás varázsló párbeszédablak megnyitása a felhõtároló fiókodhoz"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr "Frissítés"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr ""
"Jelenlegi felhõtároló információk frissítése (felhasználónév és használat)"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Download"
msgstr "Letöltés"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr "Letöltéskezelõ párbeszédablak megnyitása"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr "Szerver futtatás"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr "Helyi webszerver futtatása"
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
msgid "Not running"
msgstr "Nem fut"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
msgid "/root/ Path:"
msgstr "/gyökér/ Útvonal:"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
msgid "Specifies which directory the Files Manager can access"
msgstr "Meghatározza, hogy melyik könyvtárhoz férhet hozzá a Fájlkezelõ"
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "/gyökér/ Útvonal:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid "Server's port:"
msgstr "Szerver portja:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
@@ -1330,27 +1298,27 @@ msgstr ""
"Melyik portot használja a szerver\n"
"Szerver engedély nem elérhetõ nem alapértelmezett porttal"
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr "Alkalmaz"
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
msgid "Failed to change cloud storage!"
msgstr "Felhõtároló csere nem sikerült!"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr "Egy másik felhõtároló már aktív."
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
msgid "Theme does not support selected language!"
msgstr "A téma nem támogatja a választott nyelvet!"
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
msgid "Theme cannot be loaded!"
msgstr "A témát nem lehet betölteni!"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
@@ -1358,48 +1326,48 @@ msgstr ""
"\n"
"A különbözõ beállítások visszaállítva."
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr "A kiválasztott mappába nem lehet írni, válassz egy másikat."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "GUI téma mappa kiválasztása"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "Mappa választás az extra fájloknak"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "Plugin mappa kiválasztása"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
msgid "Select directory for Files Manager /root/"
msgstr "Válassz mappát a Fájlkezelõnek /gyökér/"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr "%llu byte"
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr "<épp most>"
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
msgid "<never>"
msgstr "<soha>"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
msgid "Stop server"
msgstr "Szerver leállítás"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr "Helyi webszerver leállítása"
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1865,9 +1833,9 @@ msgstr "Visszatérés az indítóba"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1886,9 +1854,10 @@ msgstr "Játék mentése:"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1904,7 +1873,7 @@ msgstr ""
"Sajnálom, a motor jelenleg nem tartalmaz játék közbeni súgót. Olvassd el a "
"README-t az alap információkról, és hogy hogyan segíthetsz a késõbbiekben."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2237,7 +2206,7 @@ msgid "OpenGL"
msgstr "OpenGL"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "Ablakos mód"
@@ -2247,22 +2216,22 @@ msgid "Resolution: %dx%d"
msgstr "Felbontás: %dx%d"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "Méretarány korrekció engedélyezve"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "Méretarány korrekció letiltva"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
msgid "Filtering enabled"
msgstr "Szûrés engedélyezve"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
msgid "Filtering disabled"
msgstr "Szûrés letiltva"
@@ -2277,7 +2246,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "Normál (nincs átméretezés)"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "Aktív grafikus szûrõk:"
@@ -2433,24 +2402,24 @@ msgstr "Középsõ katt"
msgid "Right Click"
msgstr "Jobb katt"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "ScummVM elrejtése"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "Többi elrejtése"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "Mutasd mind"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "Ablak"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "Kis méret"
@@ -2910,8 +2879,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2924,8 +2893,8 @@ msgstr "Játékmenet visszaállítása:"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3111,12 +3080,12 @@ msgid "Move Right"
msgstr "Mozgás jobbra"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr "Balra fordul"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr "Jobbra fordul"
@@ -3448,39 +3417,39 @@ msgstr ""
"\n"
"Légyszíves jelentsd a csapatnak."
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
msgid "Invalid file name for saving"
msgstr "Érvénytelen fájlnév a mentéshez"
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr "Fel/Nagyítás/Elõre mozgás/Ajtónyitás"
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr "Le/Zoom Ki"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr "Tárgylista tálca Képre/Elrejt"
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr "Biochip tálca Képre/Elrejt"
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr "Akció/Választ"
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr "Adatképernyõ kapcsoló"
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr "Infóképernyõ Képre/Elrejt"
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr "Szünet menü Képre/Elrejt"
@@ -3572,7 +3541,15 @@ msgid ""
"Use the alternate set of silver cursors instead of the normal golden ones"
msgstr "Használd az alternatív ezüst kurzorokat, a normál arany helyett"
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+msgid "Enable content censoring"
+msgstr "Tartalmi cenzúra engedélyezése"
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr "Engedélyezze a játék beépített opcionális tartalmi cenzúrázását"
+
+#: engines/sci/detection.cpp:837
msgid "(Autosave)"
msgstr "(Automentés)"
@@ -3596,16 +3573,16 @@ msgid "Please use an external viewer to open the game's help file: %s"
msgstr ""
"A játék súgófájljának megnyitásához külsõ megjelenítõt kell használnia: %s"
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr "A mentett játék formátuma elavult, nem lehet betölteni"
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr "A mentés verziója %d, a maximálisan támogatott %0d"
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
@@ -3613,7 +3590,7 @@ msgstr ""
"Ez a mentett játék a játék másik verziójával jött létre, és nem lehet "
"betölteni"
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4654,6 +4631,31 @@ msgstr ""
"támogat. Szükséged van a motor frissített verziójára, hogy használd a "
"mentett játékállást."
+#~ msgid "8 kHz"
+#~ msgstr "8 kHz"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 kHz"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 kHz"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 kHz"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 kHz"
+
+#~ msgid "Output rate:"
+#~ msgstr "Kimeneti ráta:"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "Nagyobb értékek jobb hangminõséget adnak, de nem minden hangkártya "
+#~ "támogatja"
+
#~ 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."
diff --git a/po/it_IT.po b/po/it_IT.po
index e4f5b02817..899ee41821 100644
--- a/po/it_IT.po
+++ b/po/it_IT.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.3.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-09-04 04:39+0200\n"
-"PO-Revision-Date: 2017-08-07 08:34+0000\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\n"
+"PO-Revision-Date: 2017-09-09 07:41+0000\n"
"Last-Translator: Paolo Bossi <pbossi86@gmail.com>\n"
"Language-Team: Italian <https://translations.scummvm.org/projects/scummvm/"
"scummvm/it/>\n"
@@ -58,7 +58,7 @@ msgstr "Su"
#: 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -155,7 +155,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -240,9 +240,8 @@ msgid ""
msgstr ""
"Lingua del gioco. Un gioco inglese non potrà risultare tradotto in italiano"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<predefinito>"
@@ -264,11 +263,11 @@ msgstr "Piattaf.:"
msgid "Engine"
msgstr "Motore"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "Grafica"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "Grafica"
@@ -281,7 +280,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "Ignora le impostazioni grafiche globali"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "Audio"
@@ -294,11 +293,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "Ignora le impostazioni audio globali"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "Volume"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "Volume"
@@ -312,7 +311,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "Ignora le impostazioni globali di volume"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -325,7 +324,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "Ignora le impostazioni MIDI globali"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -338,11 +337,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "Ignora le impostazioni MT-32 globali"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "Percorsi"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "Perc"
@@ -356,7 +355,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "Perc. gioco:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "Percorso extra:"
@@ -365,44 +364,44 @@ msgstr "Percorso extra:"
msgid "Specifies path to additional data used by the game"
msgstr "Specifica il percorso di ulteriori dati usati dal gioco"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "Perc. extra:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "Salvataggi:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "Specifica dove archiviare i salvataggi"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
msgctxt "lowres"
msgid "Save Path:"
msgstr "Salvataggi:"
#: gui/editgamedialog.cpp:301 gui/editgamedialog.cpp:398
-#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "Nessuno"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "Predefinito"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "Seleziona SoundFont"
@@ -410,7 +409,7 @@ msgstr "Seleziona SoundFont"
msgid "Select additional game directory"
msgstr "Seleziona la cartella di gioco aggiuntiva"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "Seleziona la cartella dei salvataggi"
@@ -503,7 +502,7 @@ msgstr "Seno"
msgid "Triangle"
msgstr "Triangolo"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "Varie"
@@ -599,7 +598,7 @@ msgstr "Scegli un'azione da mappare"
msgid "~Q~uit"
msgstr "C~h~iudi"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "Esci da ScummVM"
@@ -607,7 +606,7 @@ msgstr "Esci da ScummVM"
msgid "A~b~out..."
msgstr "~I~nfo..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "Informazioni su ScummVM"
@@ -684,7 +683,7 @@ msgstr "Cerca:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "Carica gioco:"
@@ -694,7 +693,7 @@ msgstr "Carica gioco:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "Carica"
@@ -807,244 +806,212 @@ msgstr "ogni 15 minuti"
msgid "every 30 mins"
msgstr "ogni 30 minuti"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 kHz"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 kHz"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 kHz"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 kHz"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 kHz"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "Nessuno"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "Impossibile applicare alcuni dei cambiamenti nelle opzioni grafiche:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "impossibile modificare la modalità video."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "impossibile modificare l'impostazione proporzioni"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "Impossibile modificare l'impostazione schermo intero"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
msgid "the filtering setting could not be changed"
msgstr "Impossibile modificare le impostazioni del filtro video"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr "Controlli in sovraimpressione"
-#: gui/options.cpp:962
+#: gui/options.cpp:936
msgid "Touchpad mouse mode"
msgstr "Mouse in modalità Touchpad"
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr "Inverti i tasti Menu e Indietro"
-#: gui/options.cpp:971
+#: gui/options.cpp:945
msgid "Pointer Speed:"
msgstr "Velocità Puntatore:"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr "Velocità puntatore (se controllato con joystick o tastiera)"
-#: gui/options.cpp:973
+#: gui/options.cpp:947
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "Velocità del puntatore:"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr "Deadzone Joystick:"
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr "Deadzone (zona inerte) per joystick analogici"
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr "Deadzone Joy:"
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr "Shader Hardware:"
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr "Shader differenti danno effetti visivi differenti"
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr "HW Shader:"
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr "Shader diversi danno diversi effetti grafici"
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "Modalità grafica:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "Resa grafica:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "Modalità di resa grafica speciali supportate da alcuni giochi"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "Modalità a schermo intero"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Filter graphics"
msgstr "Applica filtro grafico"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr "Usa filtro bilineare per lo scaling della grafica"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "Correzione proporzioni"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "Correggere il rapporto d'aspetto dei giochi con risoluzione a 320x200"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "Disp. preferito:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "Dispositivo audio:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr ""
"Specifica il dispositivo audio o l'emulatore della scheda audio preferiti"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr ""
"Specifica il dispositivo di output audio o l'emulatore della scheda audio"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr "Disp. preferito:"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "Disposit. audio:"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "Emulatore AdLib:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "AdLib è utilizzato per la musica in molti giochi"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr "Frequenza:"
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"Valori più alti restituiscono un suono di maggior qualità, ma potrebbero non "
-"essere supportati dalla tua scheda audio"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "Dispositivo GM:"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr "Specifica il dispositivo audio predefinito per l'output General MIDI"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "Non utilizzare la musica General MIDI"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "Utilizza il primo dispositivo disponibile"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr "SoundFont è supportato da alcune schede audio, FluidSynth e Timidity"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "Modalità mista AdLib/MIDI"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "Utilizza generazione di suono sia MIDI che AdLib"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "Guadagno MIDI:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "Disposit. MT-32:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr ""
"Specifica il dispositivo audio predefinito per l'output Roland MT-32/LAPC1/"
"CM32l/CM64"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "Roland MT-32 effettivo (disattiva emulazione GM)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
@@ -1052,16 +1019,16 @@ msgstr ""
"Seleziona se vuoi usare il dispositivo hardware audio compatibile con Roland "
"che è connesso al tuo computer"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "Roland MT-32 effettivo (disat.emul.GM)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr "Dispositivo Roland GS (attiva mappature MT-32)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
@@ -1069,274 +1036,274 @@ msgstr ""
"Seleziona se vuoi attivare le mappature per emulare un MT-32 su un "
"dispositivo Roland GS"
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "Non utilizzare la musica Roland MT-32"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "Testo e voci:"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "Voci"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "Sottotitoli"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "Entrambi"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "Velocità testo:"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "Testo e voci:"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "Voci"
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "Sub"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "Entr."
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "Mostra i sottotitoli e attiva le voci"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "Velocità testo:"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "Volume musica:"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "Volume musica:"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "Disattiva audio"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "Volume effetti:"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "Volume degli effetti sonori"
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "Volume effetti:"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "Volume voci:"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "Volume voci:"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr "Shader"
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
msgid "Control"
msgstr "Controllo"
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr "Impostazioni FluidSynth"
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "Percorso temi:"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "Perc. temi:"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr "Specifica il percorso di ulteriori dati usati dai giochi o da ScummVM"
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "Percorso plugin:"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "Perc. plugin:"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "Varie"
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "Tema:"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "Renderer GUI:"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "Autosalva:"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "Salvataggio automatico:"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "Tasti"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "Lingua GUI:"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "Lingua dell'interfaccia grafica di ScummVM"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr "Controllo aggiornamenti:"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr "Frequenza delle verifiche disponibilità aggiornamenti"
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr "Controlla ora"
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr "Cloud"
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr "Cloud"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr "Servizio cloud:"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr "Servizio di archiviazione cloud attivo"
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr "<nessuno>"
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "Nome utente:"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr "Nome utilizzato per questo spazio di archiviazione"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr "Spazio su disco utilizzato:"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr "Spazio utilizzato dai salvataggi di ScummVM su questo archivio Cloud"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr "Ultima sincronizzazione:"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr ""
"Ultima sincronizzazione dei salvataggi in questo spazio di archiviazione"
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr "Connetti"
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr "Apri assistente di connessione all'account di archiviazione su Cloud"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr "Aggiorna"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr ""
"Aggiorna le informazioni del servizio di archiviazione su Cloud (nome utente "
"e spazio utilizzato)"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Download"
msgstr "Scarica"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr "Apri finestra di gestione dei download"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr "Avvia server"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr "Avvia webserver locale"
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
msgid "Not running"
msgstr "Non avviato"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
msgid "/root/ Path:"
msgstr "Percorso base:"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
msgid "Specifies which directory the Files Manager can access"
msgstr "Specifica quali cartelle sono accessibili dal File Manager"
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "Percorso base:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid "Server's port:"
msgstr "Porta del Server:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
@@ -1344,27 +1311,27 @@ msgstr ""
"Porta utillizzata dal server\n"
"L'autenticazione non è disponibile tramite una porta personalizzata"
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr "Applica"
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
msgid "Failed to change cloud storage!"
msgstr "Impossibile cambiare dispositivo di archiviazione Cloud!"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr "Un altro servizio di archiviazione cloud è già attivo."
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
msgid "Theme does not support selected language!"
msgstr "Questo tema non supporta la lingua selezionata!"
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
msgid "Theme cannot be loaded!"
msgstr "Errore nel caricamento del tema grafico!"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
@@ -1372,48 +1339,48 @@ msgstr ""
"\n"
"Le impostazioni della categoria Varie saranno riportati ai valori precedenti."
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr "La cartella scelta è in sola lettura. Si prega di sceglierne un'altra."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "Seleziona la cartella dei temi dell'interfaccia"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "Seleziona la cartella dei file aggiuntivi"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "Seleziona la cartella dei plugin"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
msgid "Select directory for Files Manager /root/"
msgstr "Seleziona la cartella di partenza del File Manager"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr "%lIu bytes"
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr "<adesso>"
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
msgid "<never>"
msgstr "<mai>"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
msgid "Stop server"
msgstr "Arresta server"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr "Arresta webserver locale"
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1885,9 +1852,9 @@ msgstr "~V~ai a elenco giochi"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1906,9 +1873,10 @@ msgstr "Salva gioco:"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1925,7 +1893,7 @@ msgstr ""
"gioco. Si prega di consultare il file README per le informazioni di base e "
"per le istruzioni su come ottenere ulteriore assistenza."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2260,7 +2228,7 @@ msgid "OpenGL"
msgstr "OpenGL"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "Modalità finestra"
@@ -2270,22 +2238,22 @@ msgid "Resolution: %dx%d"
msgstr "Risoluzione: %dx%d"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "Correzione proporzioni attivata"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "Correzione proporzioni disattivata"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
msgid "Filtering enabled"
msgstr "Filtro video attivato"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
msgid "Filtering disabled"
msgstr "Filtro disattivato"
@@ -2300,7 +2268,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "Normale (no ridim.)"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "Filtro grafico attivo:"
@@ -2456,24 +2424,24 @@ msgstr "Clic centrale"
msgid "Right Click"
msgstr "Clic destro"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "Nascondi ScummVM"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "Nascondi altre"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "Mostra tutte"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "Finestra"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "Contrai"
@@ -2937,8 +2905,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2951,8 +2919,8 @@ msgstr "Ripristina partita:"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3139,12 +3107,12 @@ msgid "Move Right"
msgstr "Vai a destra"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr "Gira a sinistra"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr "Gira a destra"
@@ -3477,39 +3445,39 @@ msgstr ""
"\n"
"Per favore, contatta il team."
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
msgid "Invalid file name for saving"
msgstr "Nome salvataggio non valido"
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr "Su / Zoom + / Avanza / Apri porte"
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr "Giù / Zoom -"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr "Mostra/nascondi pannello inventario"
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr "Mostra/nascondi pannello Biochip"
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr "Azione/Seleziona"
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr "Mostra/nascondi schermo centrale dati"
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr "Mostra/nascondi schermana info"
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr "Mostra/nascondi menu pausa"
@@ -3605,7 +3573,15 @@ msgid ""
msgstr ""
"Usa il set alternativo di cursori d'argento al posto di quelli normali d'oro"
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+msgid "Enable content censoring"
+msgstr "Attiva censura del contenuto"
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr "Attiva la censura dei contenuti incorporata nel gioco"
+
+#: engines/sci/detection.cpp:837
msgid "(Autosave)"
msgstr "(Autosalvataggio)"
@@ -3631,17 +3607,17 @@ msgstr ""
"Si prega di usare un programma di visualizzazione esterno per aprire il file "
"di aiuto:%s"
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr "Il formato di questo salvataggio è obsoleto, impossibile caricarlo"
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr ""
"La versione del salvataggio è %d, la versione più recente supportata è %0d"
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
@@ -3649,7 +3625,7 @@ msgstr ""
"Questo salvataggio è stato creato con una versione diversa del gioco, "
"impossibile caricarlo"
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4707,6 +4683,31 @@ msgstr ""
"versione %d o inferiori. Procurati una motore aggiornato per usare questo "
"salvataggio."
+#~ msgid "8 kHz"
+#~ msgstr "8 kHz"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 kHz"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 kHz"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 kHz"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 kHz"
+
+#~ msgid "Output rate:"
+#~ msgstr "Frequenza:"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "Valori più alti restituiscono un suono di maggior qualità, ma potrebbero "
+#~ "non essere supportati dalla tua scheda audio"
+
#~ 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."
diff --git a/po/nb_NO.po b/po/nb_NO.po
index 65888b6aca..5d4ceeb5b1 100644
--- a/po/nb_NO.po
+++ b/po/nb_NO.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.3.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-09-04 04:39+0200\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\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/"
@@ -59,7 +59,7 @@ msgstr "Oppover"
#: 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -156,7 +156,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -242,9 +242,8 @@ msgstr ""
"Spillets språk. Dette vil ikke gjøre din spanske spillversjon om til engelsk "
"versjon"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<standard>"
@@ -266,11 +265,11 @@ msgstr "Plattform:"
msgid "Engine"
msgstr "Motor"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "Grafikk"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "GFX"
@@ -283,7 +282,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "Overstyr globale grafikkinstillinger"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "Lyd"
@@ -296,11 +295,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "Overstyr globale lydinstillinger"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "Volum"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "Volum"
@@ -314,7 +313,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "Overstyr globale voluminstillinger"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -327,7 +326,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "Overstyr globale MIDI-instillinger"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -340,11 +339,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "Overstyr globale MT-32-instillinger"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "Sti"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "Sti"
@@ -358,7 +357,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "Spillsti:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "Ekstrasti:"
@@ -367,44 +366,44 @@ msgstr "Ekstrasti:"
msgid "Specifies path to additional data used by the game"
msgstr "Bestemmer sti til ytterligere data brukt av spillet"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "Ekstrasti:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "Lagringssti:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "Bestemmer sti til lagrede spill"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
msgctxt "lowres"
msgid "Save Path:"
msgstr "Lagringssti:"
#: gui/editgamedialog.cpp:301 gui/editgamedialog.cpp:398
-#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "Ingen"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "Standard"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "Velg SoundFont"
@@ -412,7 +411,7 @@ msgstr "Velg SoundFont"
msgid "Select additional game directory"
msgstr "Velg mappe med ytterligere data"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "Velg mappe for lagrede spill"
@@ -504,7 +503,7 @@ msgstr "Sinus"
msgid "Triangle"
msgstr "Trekant"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "Diverse"
@@ -598,7 +597,7 @@ msgstr "Velg en handling for kobling"
msgid "~Q~uit"
msgstr "~A~vslutt"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "Avslutt ScummVM"
@@ -606,7 +605,7 @@ msgstr "Avslutt ScummVM"
msgid "A~b~out..."
msgstr "~O~m..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "Om ScummVM"
@@ -683,7 +682,7 @@ msgstr "Søk:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "Åpne spill:"
@@ -693,7 +692,7 @@ msgstr "Åpne spill:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "Åpne"
@@ -804,243 +803,211 @@ msgstr "hvert 15. min"
msgid "every 30 mins"
msgstr "hvert 30. min"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 kHz"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 kHz"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 kHz"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 kHz"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 kHz"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "Ingen"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "Klarte ikke å aktivere enkelte av endringene i grafikkinstillinger:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "videomodusen kunne ikke endres."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "aspektrate-innstillingen kunne ikke endres"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "fullskjermsinnstillingen kunne ikke endres"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
msgid "the filtering setting could not be changed"
msgstr "filterinnstillingen kunne ikke endres"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr ""
-#: gui/options.cpp:962
+#: gui/options.cpp:936
#, fuzzy
msgid "Touchpad mouse mode"
msgstr "Touchpad-modus deaktivert."
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr ""
-#: gui/options.cpp:971
+#: gui/options.cpp:945
#, fuzzy
msgid "Pointer Speed:"
msgstr "Hastighet:"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr ""
-#: gui/options.cpp:973
+#: gui/options.cpp:947
#, fuzzy
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "Hastighet:"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr ""
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "Grafikkmodus:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "Tegnemodus:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "Spesiel dithering-modus støttet av enkelte spill"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "Fullskjermsmodus"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Filter graphics"
msgstr "Filtrer grafikk"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr ""
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "Aspekt-rate korrigering"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "Korriger aspekt-rate for 320x200-spill"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "Foretrukket enhet:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "Musikkenhet:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr "Velger foretrukket lydenhet eller lydkort-emulator"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr "Velger ut-lydenhet eller lydkortemulator"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr "Foretrukket enh.:"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "Musikkenhet:"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "AdLib-emulator:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "AdLib brukes til musikk i mange spill"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr "Utrate:"
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"Høyere verdier gir bedre lydkvalitet, men støttes kanskje ikke av ditt "
-"lydkort"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "GM-enhet:"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr "Velger standard lydenhet for General MIDI-utdata"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "Ikke bruk General MIDI-musikk"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "Bruk første tilgjengelige enhet"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr "SoundFont støttes ikke av enkelte lydkort, FluidSynth og Timidity"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "Mikset AdLib/MIDI-modus"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "Bruk både MIDI- og AdLib- lydgenerering"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "MIDI gain:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "MT-32 Enhet:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr "Velger standard lydenhet for Roland MT-32/LAPC1/CM32I/CM64-avspilling"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "Ekte Roland MT-32 (deaktiver GM-emulering)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
@@ -1048,16 +1015,16 @@ msgstr ""
"Velg hvis du har et ekte Roland-kompatible lydkort tilkoblet maskinen, og "
"vil bruke dette"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "Ekte Roland MT-32 (deaktiver GM-emulering)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr "Roland GS Modus (aktiver MT32-mapping)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
@@ -1065,272 +1032,272 @@ msgstr ""
"Aktiver hvis du vil slå på patch mappinger for å emulere en MT-32 eller "
"Roland GS enhet"
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "Ikke bruk Roland MT-32-musikk"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "Tekst og Tale:"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "Tale"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "Undertekster"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "Begge"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "Teksthastighet:"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "Tekst og Tale:"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "Tale"
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "Tekst"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "Begge"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "Vis undertekster, og spill av tale"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "Underteksthastighet:"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "Musikkvolum:"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "Musikkvolum:"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "Demp alle"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "Lydeffektvolum:"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "Volum for spesielle lydeffekter"
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "Lydeffektvolum:"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "Talevolum:"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "Talevolum:"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr ""
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
#, fuzzy
msgid "Control"
msgstr "Styr Mus"
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr "FluidSynth-instillinger"
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "Temasti:"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "Temasti:"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr "Velger sti for ytterligere data brukt av alle spill eller ScummVM"
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "Pluginsti:"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "Pluginsti:"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "Div"
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "Tema:"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "GUI-tegner:"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "Autolagre:"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "Autolagre:"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "Taster"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "GUI-språk:"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "Språk i ScummVM-GUIet"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr "Oppdateringssjekk:"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr "Hvor ofte det skal sjekkes for ScummVM-oppdateringer"
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr "Sjekk nå"
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr "Sky"
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr "Sky"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr "Lagring:"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr "Aktiv skylagring"
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr "<ingen>"
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "Brukernavn:"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr "Brukernavn for denne lagringsmåten"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr "Brukt plass:"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr "Plass brukt av ScummVM's lagrede spill på denne lagringsmåten"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr "Forrige synctidspunkt:"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr "Når forrige sync av lagrede spill til denne lagringsmåten skjedde"
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr "Koble til"
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr "Åpne veiviserdialog for å koble til skylagringen din"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr "Oppfrisk"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr "Oppfrisk gjeldende skylagringsinformasjon (brukernavn og bruk)"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Download"
msgstr "Last ned"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr "Åpne nedlastingsbehandlerdialog"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr "Kjør server"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr "Kjør lokal webserver"
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
msgid "Not running"
msgstr "Kjører ikke"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
msgid "/root/ Path:"
msgstr "/root/ Sti:"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
msgid "Specifies which directory the Files Manager can access"
msgstr "Angi mappe som filbehandleren skal ha tilgang til"
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "/root/ Sti:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid "Server's port:"
msgstr "Serverport:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
@@ -1338,76 +1305,76 @@ msgstr ""
"Hvilken port som brukes av serveren\n"
"Autentisering med server støttes ikke med ikke-standard port"
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr ""
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
msgid "Failed to change cloud storage!"
msgstr "Klarte ikke å kontakte skylagring!"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr "En annen skylagring er allerede aktiv."
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
#, fuzzy
msgid "Theme does not support selected language!"
msgstr "Spillmotor-plugin støtter ikke lagrede spill"
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
#, fuzzy
msgid "Theme cannot be loaded!"
msgstr "Spillet ble IKKE lastet"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
msgstr ""
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr "Den valgte mappen kan ikke skrives til. Vennligst velg en annen."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "Velg mappe for GUI-temaer"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "Velg mappe for ytterligere filer"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "Velg mappe for plugins"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
msgid "Select directory for Files Manager /root/"
msgstr "Velg mappe for filbehandler /root/"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr "%llu bytes"
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr "<med en gang>"
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
msgid "<never>"
msgstr "<aldri>"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
msgid "Stop server"
msgstr "Stopp server"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr "Stopp lokal webserver"
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1871,9 +1838,9 @@ msgstr "~T~ilbake til oppstarter"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1892,9 +1859,10 @@ msgstr "Lagret spill:"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1911,7 +1879,7 @@ msgstr ""
"Vennligst se i README-filen for grunnleggende informasjon, og for "
"instruksjoner om hvordan du kan få ytterligere hjelp."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, fuzzy, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2245,7 +2213,7 @@ msgid "OpenGL"
msgstr "OpenGL"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "Vindusmodus"
@@ -2255,22 +2223,22 @@ msgid "Resolution: %dx%d"
msgstr "Oppløsning: %dx%d"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "Aspekt-rate korrigering aktivert"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "Aspekt-rate korrigering deaktivert"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
msgid "Filtering enabled"
msgstr "Filtrering aktivert"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
msgid "Filtering disabled"
msgstr "Filtrering deaktivert"
@@ -2285,7 +2253,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "Normal (ingen skalering)"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "Aktivt grafikkfilter:"
@@ -2441,24 +2409,24 @@ msgstr "Midtklikk"
msgid "Right Click"
msgstr "Høyreklikk"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "Skjul ScummVM"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "Skjul andre"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "Vis alle"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "Vindu"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "Minimer"
@@ -2917,8 +2885,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2931,8 +2899,8 @@ msgstr "Gjennopprett spill:"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3124,12 +3092,12 @@ msgid "Move Right"
msgstr "Skli mot Høyre"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr "Svin til Venstre"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr "Sving til Høyre"
@@ -3458,40 +3426,40 @@ msgstr ""
"\n"
"Vennligst rapporter dette til teamet."
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
#, fuzzy
msgid "Invalid file name for saving"
msgstr "Skriv inn filnavn for lagring"
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr "Opp/Zoom Inn/Beveg Forover/Åpne Dører"
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr "Ned/Zoom Ut"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr "VIs/Skjul Inventoryskuff"
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr "Vis/Skjul Biochipskuff"
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr "Handling/Velg"
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr "Vis/Skjul Infoskjerm"
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr "Vis/Skjul Pausemeny"
@@ -3583,7 +3551,16 @@ msgid ""
msgstr ""
"Bruk det alternative settet med sølvmuspekere, istedenfor de normale gylne."
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+#, fuzzy
+msgid "Enable content censoring"
+msgstr "Aktiver flytende muspekere"
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:837
#, fuzzy
msgid "(Autosave)"
msgstr "Autolagre:"
@@ -3602,22 +3579,22 @@ msgstr ""
msgid "Please use an external viewer to open the game's help file: %s"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
msgstr ""
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4627,6 +4604,31 @@ msgid ""
"%d. You will need an updated version of the engine to use this saved game."
msgstr ""
+#~ msgid "8 kHz"
+#~ msgstr "8 kHz"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 kHz"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 kHz"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 kHz"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 kHz"
+
+#~ msgid "Output rate:"
+#~ msgstr "Utrate:"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "Høyere verdier gir bedre lydkvalitet, men støttes kanskje ikke av ditt "
+#~ "lydkort"
+
#~ 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."
diff --git a/po/nl_NL.po b/po/nl_NL.po
index 49c52e824e..0a61924431 100644
--- a/po/nl_NL.po
+++ b/po/nl_NL.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.9.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-09-04 04:39+0200\n"
-"PO-Revision-Date: 2017-08-06 17:29+0000\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\n"
+"PO-Revision-Date: 2017-09-11 06:41+0000\n"
"Last-Translator: Ben Castricum <github@bencastricum.nl>\n"
"Language-Team: Dutch <https://translations.scummvm.org/projects/scummvm/"
"scummvm/nl/>\n"
@@ -59,7 +59,7 @@ msgstr "Ga omhoog"
#: 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -154,7 +154,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -239,9 +239,8 @@ msgid ""
msgstr ""
"De taal van het spel. Dit verandert een Engels spel niet naar een Nederlandse"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<standaard>"
@@ -263,11 +262,11 @@ msgstr "Platform:"
msgid "Engine"
msgstr "Engine"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "Beeld"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "GFX"
@@ -280,7 +279,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "Negeer algemene grafische instellingen"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "Geluid"
@@ -293,11 +292,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "Negeer algemene audio instellingen"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "Volume"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "Volume"
@@ -311,7 +310,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "Negeer algemene volume instellingen"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -324,7 +323,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "Negeer algemene MIDI instellingen"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -337,11 +336,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "Negeer algemene MT-32 instellingen"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "Paden"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "Paden"
@@ -355,7 +354,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "Spel Pad:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "Extra Pad:"
@@ -364,44 +363,44 @@ msgstr "Extra Pad:"
msgid "Specifies path to additional data used by the game"
msgstr "Specificeer pad naar additionele data voor het spel"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "Extra Pad:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "Bewaar Pad:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "Bepaalt waar opgeslagen spellen worden bewaard"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
msgctxt "lowres"
msgid "Save Path:"
msgstr "Bewaar Pad:"
#: gui/editgamedialog.cpp:301 gui/editgamedialog.cpp:398
-#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "Geen"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "Standaard"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "Selecteer SoundFont"
@@ -409,7 +408,7 @@ msgstr "Selecteer SoundFont"
msgid "Select additional game directory"
msgstr "Selecteer additionele speldatamap"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "Selecteer map voor opgeslagen spellen"
@@ -502,7 +501,7 @@ msgstr "Sinus"
msgid "Triangle"
msgstr "Driehoek"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "Overig"
@@ -597,7 +596,7 @@ msgstr "Selecteer een actie om te koppelen"
msgid "~Q~uit"
msgstr "~S~toppen"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "Hiermee verlaat u ScummVM"
@@ -605,7 +604,7 @@ msgstr "Hiermee verlaat u ScummVM"
msgid "A~b~out..."
msgstr "O~v~er..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "Over ScummVM"
@@ -682,7 +681,7 @@ msgstr "Zoeken:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "Laad spel:"
@@ -692,7 +691,7 @@ msgstr "Laad spel:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "Laden"
@@ -806,243 +805,211 @@ msgstr "elke 15 minuten"
msgid "every 30 mins"
msgstr "elke 30 minuten"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 kHz"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 kHz"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 kHz"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 kHz"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 kHz"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "Geen"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "Sommige grafische opties konden niet worden toegepast:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "de videomodus kon niet veranderd worden."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "de pixelverhoudinginstelling kon niet veranderd worden"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "de volledig-scherminstelling kon niet veranderd worden"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
msgid "the filtering setting could not be changed"
msgstr "de filterinstelling kon niet veranderd worden"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr "Toon scherm-besturing"
-#: gui/options.cpp:962
+#: gui/options.cpp:936
msgid "Touchpad mouse mode"
msgstr "Touchpadmodus"
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr "Knoppen Menu en Terug omwisselen"
-#: gui/options.cpp:971
+#: gui/options.cpp:945
msgid "Pointer Speed:"
msgstr "Aanwijzer Snelheid:"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr "Snelheid voor toetsenbord/joystick muis aanwijzer besturing"
-#: gui/options.cpp:973
+#: gui/options.cpp:947
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "Aanwijzer Snelheid:"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr "Joy Deadzone:"
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr "Analoge Joystick Deadzone"
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr "Joy Deadzone:"
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr "HW Shader:"
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr "Verschillende hardware shaders geven verschillende visuele effecten"
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr "HW Shader:"
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr "Verschillende shaders geven verschillende visuele effecten"
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "Grafische modus:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "Render modus:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "Speciale ditheringmodi die door sommige games ondersteund worden"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "Volledig-scherm modus"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Filter graphics"
msgstr "Filter afbeeldingen"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr "Gebruik lineair filteren tijdens het schalen van afbeeldingen"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "Pixelverhoudingcorrectie"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "Corrigeer de pixelverhouding voor 320x200 spellen"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "Voorkeursapparaat:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "Muziekapparaat:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr "Specificeert het voorkeurs geluidsapparaat of geluidskaartemulator"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr "Specificeert geluidsapparaat of geluidskaartemulator"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr "Voorkeursapparaat:"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "Muziekapparaat:"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "AdLib emulator:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "AdLib word in vele spelen voor muziek gebruikt"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr "Output snelheid:"
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"Hogere waarden geven betere geluidskwaliteit maar worden mogelijk niet "
-"ondersteund door uw geluidskaart"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "GM Apparaat:"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr "Specificeert het standaard geluidsapparaat voor General MIDI"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "Geen General MIDI muziek gebruiken"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "Gebruik eerst beschikbare apparaat"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr ""
"SoundFont wordt ondersteund door FluidSynth, Timidity en sommige "
"geluidskaarten"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "Gemengde AdLib/MIDI modus"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "Gebruik zowel MIDI als AdLib geluid"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "MIDI versterking:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "MT-32 Apparaat:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr ""
"Specificeert het standaard geluidsapparaat voor Roland MT-32/LAPC1/CM32l/CM64"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "Waarheidsgetrouwe Roland MT-32 (GM emulatie uitschakelen)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
@@ -1050,16 +1017,16 @@ msgstr ""
"Selecteer als u een hardware Roland-compatible geluidsapparaat gekoppeld aan "
"uw computer wilt gebruiken"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "Echte Roland MT-32 (geen GM emulatie)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr "Roland GS Device (met MT-32 mappings)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
@@ -1067,273 +1034,273 @@ msgstr ""
"Selecteer dit als u patchmappings wilt om een MT-32 op een Roland GS "
"apparaat te emuleren"
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "Geen Roland MT-32 muziek gebruiken"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "Spraak en/of tekst:"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "Spraak"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "Tekst"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "Beide"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "Snelheid tekst:"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "Spraak en/of text:"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "Sprk"
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "Text"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "Beide"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "Toon tekst en speel spraak af"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "Snelheid text:"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "Muziek volume:"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "Muziek volume:"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "Alles Dempen"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "SFX volume:"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "Volume voor speciale geluidseffecten"
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "SFX volume:"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "Spraak volume:"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "Spraak volume:"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr "Shader"
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
msgid "Control"
msgstr "Besturing"
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr "FluidSynth Instellingen"
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "Thema Pad:"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "Thema Pad:"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr ""
"Specificeert het pad for aanvullende data voor ScummVM zelf of de spellen"
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "Plugins Pad:"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "Plugins Pad:"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "Overig"
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "Thema:"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "GUI Renderer:"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "Auto opslaan:"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "Auto opslaan:"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "Toetsen"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "GUI Taal:"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "Taal van de ScummVM GUI"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr "Update controle:"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr "Hoe vaak checken op ScummVM updates"
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr "Controleer nu"
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr "Cloud"
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr "Cloud"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr "Opslag:"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr "Actieve cloud opslag"
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr "<geen>"
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "Gebruikersnaam:"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr "Gebruikersnaam gebruikt voor deze opslag"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr "Gebruikte ruimte:"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr "Ruimte in gebruik door ScummVM's opgeslagen spellen op deze opslag"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr "Laatste synchronisatie:"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr "Wanneer de laatste synchronisatie voor deze opslag is geweest"
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr "Verbinden"
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr ""
"Open de Wizard dialoogvenster voor verbinden met uw cloud opslag account"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr "Ververs"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr "Ververs de huidige opslag informatie (gebruikersnaam en gebruik)"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Download"
msgstr "Download"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr "Open downloads manager dialoogvenster"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr "Start server"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr "Draai lokale webserver"
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
msgid "Not running"
msgstr "Draait niet"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
msgid "/root/ Path:"
msgstr "/root/ Pad:"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
msgid "Specifies which directory the Files Manager can access"
msgstr "Bepaalt welke map de Bestanden Manager gebruiken mag"
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "/root/ Pad:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid "Server's port:"
msgstr "Serverport:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
@@ -1341,27 +1308,27 @@ msgstr ""
"Welke port is gebruikt voor de server\n"
"Auth met server is niet beschikbaar met een niet standaard port"
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr "Toepassen"
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
msgid "Failed to change cloud storage!"
msgstr "Veranderen van cloud opslag mislukt!"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr "Er is al een andere cloud opslag actief."
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
msgid "Theme does not support selected language!"
msgstr "Thema biedt geen ondersteuning voor geselecteerde taal!"
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
msgid "Theme cannot be loaded!"
msgstr "Thema kan niet worden geladen!"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
@@ -1369,49 +1336,49 @@ msgstr ""
"\n"
"Misc instellingen worden teruggezet."
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr ""
"Er kan niet worden geschreven in de gekozen map. Selecteer a.u.b. een andere."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "Selecteer map voor GUI themas"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "Selecteer map voor extra bestanden"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "Selecteer map voor plugins"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
msgid "Select directory for Files Manager /root/"
msgstr "Selecteer map voor Bestanden Manager /root/"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr "%llu bytes"
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr "<nu>"
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
msgid "<never>"
msgstr "<nooit>"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
msgid "Stop server"
msgstr "Stop server"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr "Stop lokale webserver"
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1875,9 +1842,9 @@ msgstr "S~t~artmenu"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1896,9 +1863,10 @@ msgstr "Spel opslaan:"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1915,7 +1883,7 @@ msgstr ""
"README voor basisinformatie, en voor instructies voor het verkrijgen van "
"verdere assistentie."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2252,7 +2220,7 @@ msgid "OpenGL"
msgstr "OpenGL"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "Venstermodus"
@@ -2262,22 +2230,22 @@ msgid "Resolution: %dx%d"
msgstr "Resolutie: %dx%d"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "Pixelverhoudingcorrectie ingeschakeld"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "Pixelverhoudingcorrectie uitgeschakeld"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
msgid "Filtering enabled"
msgstr "Filteren aangezet"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
msgid "Filtering disabled"
msgstr "Filteren uitgeschakeld"
@@ -2292,7 +2260,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "Normaal (niet schalen)"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "Actieve grafische filter:"
@@ -2448,24 +2416,24 @@ msgstr "Middelste Klik"
msgid "Right Click"
msgstr "Rechter klik"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "Verberg ScummVM"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "Verberg Anderen"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "Toon Alles"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "Venster"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "Minimaliseer"
@@ -2932,8 +2900,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2946,8 +2914,8 @@ msgstr "Laad opgeslagen spel:"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3134,12 +3102,12 @@ msgid "Move Right"
msgstr "Verplaats naar rechts"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr "Draai Linksom"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr "Draai Rechtsom"
@@ -3473,39 +3441,39 @@ msgstr ""
"\n"
"Meld dit a.u.b. bij de ontwikkelaars."
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
msgid "Invalid file name for saving"
msgstr "Geef bestandsnaam voor bewaren"
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr "Omhoog/Zoom In/Ga Vooruit/Open Deuren"
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr "Naar beneden/Uitzoomen"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr "Toon/Verberg Inventaris Blad"
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr "Toon/Verberg Bioschip Blad"
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr "Actie/Selecteer"
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr "Aan-/Uitzetten centreren van Datascherm"
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr "Toon/Verberg Infoscherm"
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr "Toon/Verberg Pauze-Menu"
@@ -3604,7 +3572,15 @@ msgstr ""
"Gebruik de alternative set van zilveren cursors in plaats van de normale "
"gouden"
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+msgid "Enable content censoring"
+msgstr "Censureren content inschakelen"
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr "Inschakelen van het in het spel gebouwde optionele inhoud censuur"
+
+#: engines/sci/detection.cpp:837
msgid "(Autosave)"
msgstr "(Automatisch opslaan)"
@@ -3630,17 +3606,17 @@ msgstr ""
"Gebruik a.u.b. een externe viewer om het help-bestand van het spel te "
"openen: %s"
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr ""
"Het formaat van dit opgeslagen spel is verouderd, het laden is niet mogelijk"
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr "Opgeslagen spel heeft versie %d, maximaal ondersteunde is %0d"
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
@@ -3648,7 +3624,7 @@ msgstr ""
"Dit opgeslagen spel is gemaakt met een andere versie van het spel, het laden "
"is niet mogelijk"
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4691,6 +4667,31 @@ msgstr ""
"tot versie %d. U heeft een nieuwere versie van deze engine nodig om dit "
"opgeslagen te gebruiken."
+#~ msgid "8 kHz"
+#~ msgstr "8 kHz"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 kHz"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 kHz"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 kHz"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 kHz"
+
+#~ msgid "Output rate:"
+#~ msgstr "Output snelheid:"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "Hogere waarden geven betere geluidskwaliteit maar worden mogelijk niet "
+#~ "ondersteund door uw geluidskaart"
+
#~ 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."
diff --git a/po/nn_NO.po b/po/nn_NO.po
index 9e0bb4fb8d..51d634c863 100644
--- a/po/nn_NO.po
+++ b/po/nn_NO.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.3.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-09-04 04:39+0200\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\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/"
@@ -59,7 +59,7 @@ msgstr "Oppover"
#: 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -153,7 +153,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -237,9 +237,8 @@ msgstr ""
"Spelets språk. Dette vil ikkje gjere den spanske versjonen av spelet til ein "
"engelsk versjon"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<standard>"
@@ -261,11 +260,11 @@ msgstr "Plattform:"
msgid "Engine"
msgstr "Motor"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "Grafikk"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "GFX"
@@ -278,7 +277,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "Overstyr globale grafikkinstillingar"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "Lyd"
@@ -291,11 +290,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "Overstyr globale lydinstillingar"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "Volum"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "Volum"
@@ -309,7 +308,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "Overstyr globale voluminstillingar"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -322,7 +321,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "Overstyr globale MIDI-instillingar"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -335,11 +334,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "Overstyr globale MT-32-instillingar"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "Stiar"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "Stiar"
@@ -353,7 +352,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "Spelsti:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "Ekstrasti:"
@@ -362,44 +361,44 @@ msgstr "Ekstrasti:"
msgid "Specifies path to additional data used by the game"
msgstr "Veljer sti til tilleggsdata nytta av spelet"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "Ekstrasti:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "Lagringssti:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "Veljer kor lagra spel vert lagra"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
msgctxt "lowres"
msgid "Save Path:"
msgstr "Lagringssti:"
#: gui/editgamedialog.cpp:301 gui/editgamedialog.cpp:398
-#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "Ingen"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "Standard"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "Vel SoundFont"
@@ -407,7 +406,7 @@ msgstr "Vel SoundFont"
msgid "Select additional game directory"
msgstr "Vel mappe med tileggsdata for spelet"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "Vel mappe for lagra spel"
@@ -497,7 +496,7 @@ msgstr "Sinus"
msgid "Triangle"
msgstr "Triangel"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "Diverse"
@@ -591,7 +590,7 @@ msgstr "Vel ei handling for kopling"
msgid "~Q~uit"
msgstr "~A~vslutt"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "Avslutt ScummVM"
@@ -599,7 +598,7 @@ msgstr "Avslutt ScummVM"
msgid "A~b~out..."
msgstr "~O~m..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "Om ScummVM"
@@ -676,7 +675,7 @@ msgstr "Søk:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "Åpne spel:"
@@ -686,7 +685,7 @@ msgstr "Åpne spel:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "Åpne"
@@ -795,245 +794,213 @@ msgstr "kvart 15. min"
msgid "every 30 mins"
msgstr "kvart 30. min"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 kHz"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 kHz"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 kHz"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 kHz"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 kHz"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "Ingen"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "Klarte ikkje å aktivere nokre av grafikkvalendringane:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "Kunne ikkje endre videomodus."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "aspektrate-innstillinga kunne ikkje endrast"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "Fullskjerminstillinga kunne ikkje endrast"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
#, fuzzy
msgid "the filtering setting could not be changed"
msgstr "Fullskjerminstillinga kunne ikkje endrast"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr ""
-#: gui/options.cpp:962
+#: gui/options.cpp:936
#, fuzzy
msgid "Touchpad mouse mode"
msgstr "Touchpadmodus avslått."
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr ""
-#: gui/options.cpp:971
+#: gui/options.cpp:945
#, fuzzy
msgid "Pointer Speed:"
msgstr "Hastighet:"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr ""
-#: gui/options.cpp:973
+#: gui/options.cpp:947
#, fuzzy
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "Hastighet:"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr ""
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "Grafikkmodus:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "Teiknemodus:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "Spesielle dithering-modus som støttast av nokre spel"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "Fullskjermsmodus"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
#, fuzzy
msgid "Filter graphics"
msgstr "Grafikk"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr ""
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "Aspekt-korrigering"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "Rett opp aspekt for 320x200 spel"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "Føretrukken eining:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "Musikkeining:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr ""
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr ""
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr ""
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "Musikkeining:"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "AdLib emulator:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "AdLib nyttast til musikk i mange spel"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr ""
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"Høgare verdier gir betre lydkvalitet, men støttast kanskje ikkje av "
-"lydkortet ditt"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "GM Eining:"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr "Veljer standard lydeining for General MIDI avspeling"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "Ikkje nytt General MIDI musikk"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "Nytt første tilgjengelege eining"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr "SoundFont støttast av enkelte lydkort, FluidSynth og Timidity"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "Blanda AdLib/MIDI-modus"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "Nytt båe MIDI og AdLib lydskaping"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "MIDI gain:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "MT-32 Eining:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr "Veljer standard lydeining for Roland MT-32/LAPC1/CM32l/CM64 avspeling"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "Ekte Roland MT-32 (deaktiver GM-emulering)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
@@ -1041,371 +1008,371 @@ msgstr ""
"Vel om du vil nytte din Roland-kompatible lydeining som du har tilkopla "
"datamaskina di"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "Ekte Roland MT-32 (ingen GS-emulering)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr ""
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
msgstr ""
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "Ikkje nytt Roland MT-32 musikk"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "Tekst og Tale:"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "Tale"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "Teksting"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "Begge"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "Undertekstfart:"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "Tekst og Tale:"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "Tale"
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "Tekst"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "Båe"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "Vis teksting og spel av tale"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "Undertekstfart:"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "Musikkvolum:"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "Musikkvolum:"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "Demp alle"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "Lydeffektvolum:"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "Spesiallydeffekt volum"
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "Lydeffektvolum:"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "Talevolum:"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "Talevolum:"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr ""
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
msgid "Control"
msgstr ""
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr "FluidSynth instillingar"
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "Temasti:"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "Temasti:"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr ""
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "Pluginsti:"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "Pluginsti:"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "Div"
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "Tema:"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "GUI-teiknar:"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "Autolagre:"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "Autolagre:"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "Tastar"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "GUI-språk:"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "Språk i ScummVM-GUIet"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr ""
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr ""
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr ""
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr ""
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr ""
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr ""
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr ""
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr ""
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "Brukarnamn:"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr ""
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr ""
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr ""
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr ""
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr ""
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr ""
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr ""
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr ""
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr ""
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
#, fuzzy
msgid "Download"
msgstr "Ned"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr ""
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr ""
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr ""
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
#, fuzzy
msgid "Not running"
msgstr "Feil under køyring av spel:"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
#, fuzzy
msgid "/root/ Path:"
msgstr "Ekstrasti:"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
#, fuzzy
msgid "Specifies which directory the Files Manager can access"
msgstr "Veljer kor lagra spel vert lagra"
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
#, fuzzy
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "Ekstrasti:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
#, fuzzy
msgid "Server's port:"
msgstr "Teinar:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
msgstr ""
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr ""
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
#, fuzzy
msgid "Failed to change cloud storage!"
msgstr "Klarte ikkje lagre spel"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr ""
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
#, fuzzy
msgid "Theme does not support selected language!"
msgstr "Spelmotor-plugin støttar ikkje lagra tilstandar."
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
#, fuzzy
msgid "Theme cannot be loaded!"
msgstr "Spelet vart IKKJE lasta"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
msgstr ""
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr "Den velde mappa kan ikkje skrivast til. Vennlegst vel ein annan."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "Vel ei mappe for GUI-tema"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "Vel ei mappe for ekstra filer"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "Vel ei mappe for plugins"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
#, fuzzy
msgid "Select directory for Files Manager /root/"
msgstr "Vel ei mappe for ekstra filer"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr ""
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr ""
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
#, fuzzy
msgid "<never>"
msgstr "Aldri"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
#, fuzzy
msgid "Stop server"
msgstr "Teinar:"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr ""
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1867,9 +1834,9 @@ msgstr "Tilbake til Oppsta~r~tar"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1888,9 +1855,10 @@ msgstr "Lagra spel:"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1907,7 +1875,7 @@ msgstr ""
"Vennlegst se i README-fila for grunnlegjande informasjon, og for "
"instruksjonar om korleis du kan få ytterlegare hjelp."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, fuzzy, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2238,7 +2206,7 @@ msgid "OpenGL"
msgstr "OpenGL"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "Vindusmodus"
@@ -2248,23 +2216,23 @@ msgid "Resolution: %dx%d"
msgstr ""
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "Aspekt-korrigering aktivert"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "Aspekt-korrigering ikkje aktivert"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
#, fuzzy
msgid "Filtering enabled"
msgstr "Klikking aktivert"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
#, fuzzy
msgid "Filtering disabled"
msgstr "Klikking Deaktivert"
@@ -2280,7 +2248,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "Normal (ikkje skaler)"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "Aktivt grafikkfilter:"
@@ -2436,24 +2404,24 @@ msgstr "Midtklikk"
msgid "Right Click"
msgstr "Høgreklikk"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "Skjul ScummVM"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "Skjul Andre"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "Syn alle"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "Vindu"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "Minimer"
@@ -2912,8 +2880,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2926,8 +2894,8 @@ msgstr "Gjenopprett spel:"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3110,12 +3078,12 @@ msgid "Move Right"
msgstr "Skli til Høyre"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr "Snu til Venstre"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr "Snu til Høyre"
@@ -3423,40 +3391,40 @@ msgid ""
"Please report to the team."
msgstr ""
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
#, fuzzy
msgid "Invalid file name for saving"
msgstr "Skriv inn filnamn for lagring"
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr "Ned/Zoom Ut"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr "Handling/Vel"
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr "Skjul/Vis infoskjerm"
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr "Skjul/Vis pausemeny"
@@ -3548,7 +3516,16 @@ msgid ""
"Use the alternate set of silver cursors instead of the normal golden ones"
msgstr "Nytt det alternative settet med sølvpeikarar, istaden for dei gylne"
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+#, fuzzy
+msgid "Enable content censoring"
+msgstr "Slå på flytande peikarar"
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:837
#, fuzzy
msgid "(Autosave)"
msgstr "Autolagre:"
@@ -3567,22 +3544,22 @@ msgstr ""
msgid "Please use an external viewer to open the game's help file: %s"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
msgstr ""
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4591,6 +4568,28 @@ msgid ""
"%d. You will need an updated version of the engine to use this saved game."
msgstr ""
+#~ msgid "8 kHz"
+#~ msgstr "8 kHz"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 kHz"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 kHz"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 kHz"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 kHz"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "Høgare verdier gir betre lydkvalitet, men støttast kanskje ikkje av "
+#~ "lydkortet ditt"
+
#~ 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."
diff --git a/po/pl_PL.po b/po/pl_PL.po
index 0a6cc40890..cb7881c588 100644
--- a/po/pl_PL.po
+++ b/po/pl_PL.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.3.0\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-09-04 04:39+0200\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\n"
"PO-Revision-Date: 2017-01-25 12:49+0000\n"
"Last-Translator: Rafa³ Rzepecki <divided.mind@gmail.com>\n"
"Language-Team: Polish <https://translations.scummvm.org/projects/scummvm/"
@@ -63,7 +63,7 @@ msgstr "W górê"
#: 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -160,7 +160,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -244,9 +244,8 @@ msgid ""
"English"
msgstr "Jêzyk gry. Nie zmieni to hiszpañskiej wersji gry w angielsk±"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<domy¶lne>"
@@ -268,11 +267,11 @@ msgstr "Platforma:"
msgid "Engine"
msgstr "Silnik"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "Grafika"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "Grafika"
@@ -285,7 +284,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "U¿yj w³asnych ustawieñ grafiki"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "D¼wiêk"
@@ -298,11 +297,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "U¿yj w³asnych ustawieñ d¼wiêku"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "G³o¶no¶æ"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "G³o¶no¶æ"
@@ -316,7 +315,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "U¿yj w³asnych ustawieñ g³o¶no¶ci"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -329,7 +328,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "U¿yj w³asnych ustawieñ MIDI"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -342,11 +341,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "U¿yj w³asnych ustawieñ MT-32"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "¦cie¿ki"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "¦cie¿ki"
@@ -360,7 +359,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "¦cie¿ka gry:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "¦c. dodatków:"
@@ -369,44 +368,44 @@ msgstr "¦c. dodatków:"
msgid "Specifies path to additional data used by the game"
msgstr "Okre¶la ¶cie¿kê dodatkowych danych gry"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "¦c. dodatków:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "¦cie¿ka zapisów:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "Okre¶la gdzie zapisywaæ stan gry"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
msgctxt "lowres"
msgid "Save Path:"
msgstr "¦cie¿ka zapisów:"
#: gui/editgamedialog.cpp:301 gui/editgamedialog.cpp:398
-#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "Brak"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "Domy¶lnie"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "Wybierz SoundFont"
@@ -414,7 +413,7 @@ msgstr "Wybierz SoundFont"
msgid "Select additional game directory"
msgstr "Wybierz dodatkowy katalog gry"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "Wybierz katalog dla zapisów"
@@ -506,7 +505,7 @@ msgstr "Sinus"
msgid "Triangle"
msgstr "Trójk±t"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "Ró¿ne"
@@ -600,7 +599,7 @@ msgstr "Wybierz akcjê do przypisania"
msgid "~Q~uit"
msgstr "~Z~akoñcz"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "Zakoñcz ScummVM"
@@ -608,7 +607,7 @@ msgstr "Zakoñcz ScummVM"
msgid "A~b~out..."
msgstr "I~n~formacje..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "Ksi±¿ka ScummVM"
@@ -685,7 +684,7 @@ msgstr "Szukaj:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "Wczytaj grê:"
@@ -695,7 +694,7 @@ msgstr "Wczytaj grê:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "Wczytaj"
@@ -802,246 +801,214 @@ msgstr "co 15 min"
msgid "every 30 mins"
msgstr "co 30 min"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 kHz"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 kHz"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 kHz"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 kHz"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 kHz"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "Brak"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "Nie uda³o siê zastosowaæ czê¶ci zmian opcji grafiki:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "nie uda³o siê zmieniæ trybu wideo."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "nie uda³o siê zmieniæ formatu obrazu"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "nie uda³o siê zmieniæ trybu pe³noekranowego"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
msgid "the filtering setting could not be changed"
msgstr "nie uda³o siê zmieniæ trybu filtrowania"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr ""
-#: gui/options.cpp:962
+#: gui/options.cpp:936
#, fuzzy
msgid "Touchpad mouse mode"
msgstr "Tryb touchpada wy³±czony."
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr ""
-#: gui/options.cpp:971
+#: gui/options.cpp:945
#, fuzzy
msgid "Pointer Speed:"
msgstr "Szybko¶æ:"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr ""
-#: gui/options.cpp:973
+#: gui/options.cpp:947
#, fuzzy
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "Szybko¶æ:"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr ""
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "Tryb grafiki:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "Renderer:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "Specjalne tryby ditheringu wspierane przez niektóre gry"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "Pe³ny ekran"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Filter graphics"
msgstr "Filtrowanie obrazu"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr "U¿ywa filtrowania dwuliniowego przy skalowaniu obrazu"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "Korekcja formatu obrazu"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "Korekcja formatu obrazu dla gier 320x200"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "Pref. urz±dzenie:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "Urz. muzyczne:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr "Okre¶la preferowane urz±dzenie d¼wiêkowe lub emulator karty d¼wiêkowej"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr "Okre¶la wyj¶ciowe urz±dzenie d¼wiêkowe lub emulator karty d¼wiêkowej"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr "Pref. urz±dzenie:"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "Urz. muzyczne:"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "Emulator AdLib:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "AdLib jest u¿ywany do muzyki w wielu grach"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr "Czêst. wyj.:"
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"Wy¿sze warto¶ci daj± lepsz± jako¶æ d¼wiêku, ale mog± byæ nieobs³ugiwane "
-"przez twoj± kartê d¼wiêkow±"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "Urz±dzenie GM:"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr "Okre¶la domy¶lne urz±dzenie d¼wiêkowe dla wyj¶cia General MIDI"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "Nie u¿ywaj muzyki General MIDI"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "U¿yj pierwszego dostêpnego urz±dzenia"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr ""
"SoundFont jest wspierany przez niektóre karty d¼wiêkowe, FluidSynth i "
"Timidity"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "Tryb miksowanego AdLib/MIDI"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "U¿ywaj obu generatorów d¼wiêku, MIDI i AdLib, jednocze¶nie"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "Wzm. MIDI:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "Urz±dzenie MT-32:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr ""
"Okre¶la domy¶lne urz±dzenie d¼wiêku dla wyj¶cia Roland MT-32/LAPC1/CM32l/CM64"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "Prawdziwy Roland MT-32 (wy³±cz emulacjê GM)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
@@ -1049,16 +1016,16 @@ msgstr ""
"Zaznacz, je¶li chcesz u¿ywaæ swojej prawdziwej karty kompatybilnej z Roland "
"pod³±czonej do twojego komputera"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "Prawdziwy Roland MT-32 (brak emulacji GM)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr "Roland w trybie GS (w³±cz mapowanie MT-32)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
@@ -1066,274 +1033,274 @@ msgstr ""
"Zaznacz, je¶li chcesz w³±czyæ ³atki mapowania pozwalaj±ce na emulacjê MT-32 "
"na urz±dzeniu Roland GS"
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "Nie u¿ywaj muzyki Roland MT-32"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "Tekst i mowa:"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "Mowa"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "Napisy"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "Oba"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "Prêd. napisów:"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "Tekst i mowa:"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "Mowa"
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "Napisy"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "Oba"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "Wy¶wietlaj napisy i odtwarzaj mowê"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "Prêd. napisów:"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "G³o¶no¶æ muzyki:"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "G³o¶no¶æ muzyki:"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "Wycisz"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "G³. efekt. d¼w.:"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "G³o¶no¶æ efektów d¼w."
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "G³. efekt. d¼w.:"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "G³o¶no¶æ mowy:"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "G³o¶no¶æ mowy:"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr ""
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
#, fuzzy
msgid "Control"
msgstr "Steruj myszk±"
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr "Ustawienia FluidSynth"
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "¦cie¿ka stylu:"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "¦cie¿ka stylu:"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr "Okre¶la ¶cie¿kê dla dodatkowych danych dla wszystkich gier lub ScummVM"
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "¦cie¿ka wtyczek:"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "¦cie¿ka wtyczek:"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "Ró¿ne"
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "Styl:"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "Renderer interf.:"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "Autozapis:"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "Autozapis:"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "Klawisze"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "Jêzyk interfejsu:"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "Jêzyk interfejsu ScummVM"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr "Sprawd¼ aktualizacje:"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr "Czêstotliwo¶æ automatycznego wyszukiwania aktualizacji ScummVM"
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr "Sprawd¼ teraz"
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr "Chmura"
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr "Chmura"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr "Dostawca:"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr "Wybrany dostawca przechowywania w chmurze"
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr "<brak>"
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "Nazwa u¿ytkownika:"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr "Nazwa u¿ytkownika w tej us³udze"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr "U¿ywane miejsce:"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr "Ilo¶æ miejsca zajmowana przez gry zapisane przez ScummVM w tej us³udze"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr "Ostatnia synchronizacja:"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr "Czas ostatniej synchronizacji zapisanych stanów gry z t± us³ug±"
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr "Po³±cz"
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr "Otwórz asystenta po³±czenia z us³ug± przechowywania danych w chmurze"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr "Od¶wie¿"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr ""
"Od¶wie¿ informacje o us³udze przechowywania (nazwê u¿ytkownika i zajmowane "
"miejsce)"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Download"
msgstr "Pobierz"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr "Otwiera okno dialogowe zarz±dzania pobieraniem"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr "Uruchom serwer"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr "Uruchamia lokalny serwer WWW"
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
msgid "Not running"
msgstr "Nie uruchomiono"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
msgid "/root/ Path:"
msgstr "¦cie¿ka bazowa:"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
msgid "Specifies which directory the Files Manager can access"
msgstr "Okre¶la ¶cie¿kê g³ówn± dla mened¿era plików"
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "G³ówna /:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid "Server's port:"
msgstr "Port:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
@@ -1341,76 +1308,76 @@ msgstr ""
"Okre¶la port u¿ywany do komunikacji z serwerem.\n"
"(Uwierzytelnianie jest dostêpne jedynie na domy¶lnym porcie.)"
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr "Zastosuj"
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
msgid "Failed to change cloud storage!"
msgstr "Nie uda³o siê zmieniæ dostawcy przechowywania!"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr "Inna us³uga przechowywania jest ju¿ aktywna."
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
#, fuzzy
msgid "Theme does not support selected language!"
msgstr "Silnik nie wspiera zapisu stanu gry"
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
#, fuzzy
msgid "Theme cannot be loaded!"
msgstr "NIE wczytano gry"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
msgstr ""
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr "Ten katalog jest zabezpieczony przed zapisem. Wybierz inny."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "Wybierz katalog dla stylów GUI"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "Wybierz katalog dla dodatkowych plików"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "Wybierz katalog dla wtyczek"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
msgid "Select directory for Files Manager /root/"
msgstr "Wybierz g³ówny katalog dla mened¿era plików"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr "%llu B"
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr "<teraz>"
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
msgid "<never>"
msgstr "<nigdy>"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
msgid "Stop server"
msgstr "Zatrzymaj serwer"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr "Zatrzymuje lokalny serwer WWW"
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1877,9 +1844,9 @@ msgstr "~P~owrót do launchera"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1898,9 +1865,10 @@ msgstr "Zapis:"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1917,7 +1885,7 @@ msgstr ""
"uzyskaæ podstawowe informacje oraz dowiedzieæ jak szukaæ dalszej pomocy, "
"sprawd¼ plik README."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, fuzzy, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2247,7 +2215,7 @@ msgid "OpenGL"
msgstr "OpenGL"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "Okno"
@@ -2257,23 +2225,23 @@ msgid "Resolution: %dx%d"
msgstr ""
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "W³±czono korekcjê formatu obrazu"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "Wy³±czono korekcjê formatu obrazu"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
#, fuzzy
msgid "Filtering enabled"
msgstr "Klikanie w³±czone"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
#, fuzzy
msgid "Filtering disabled"
msgstr "Klikanie wy³±czone"
@@ -2289,7 +2257,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "Zwyk³y (bez skalowania)"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "Aktywny filtr graficzny:"
@@ -2445,24 +2413,24 @@ msgstr "¦rodkowy przycisk"
msgid "Right Click"
msgstr "Klikniêcie PPM"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "Ukryj ScummVM"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "Ukryj pozosta³e"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "Poka¿ wszystkie"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "Okno"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "Miniaturka"
@@ -2922,8 +2890,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2936,8 +2904,8 @@ msgstr "Wznów grê:"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3128,12 +3096,12 @@ msgid "Move Right"
msgstr "¦lizg w prawo"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr "Obrót w lewo"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr "Obrót w prawo"
@@ -3462,40 +3430,40 @@ msgstr ""
"\n"
"Prosimy o zg³oszenie tego zespo³owi."
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
#, fuzzy
msgid "Invalid file name for saving"
msgstr "Podaj nazwê pliku do zapisania"
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr "Góra/Przybli¿/Ruch naprzód/Otwórz drzwi"
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr "Dó³/Oddal"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr "Poka¿/schowaj przedmioty"
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr "Poka¿/schowaj biochipy"
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr "Akcja/Wybór"
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr "W³±cz/wy³±cz widok danych"
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr "Poka¿/schowaj ekran informacji"
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr "Poka¿/schowaj menu pauzy"
@@ -3591,7 +3559,16 @@ msgid ""
msgstr ""
"U¿yj alternatywnego zestawu srebrnych kursorów zamiast zwyk³ych z³otych"
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+#, fuzzy
+msgid "Enable content censoring"
+msgstr "W³±cz p³ywaj±ce kursory"
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:837
#, fuzzy
msgid "(Autosave)"
msgstr "Autozapis:"
@@ -3610,22 +3587,22 @@ msgstr ""
msgid "Please use an external viewer to open the game's help file: %s"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
msgstr ""
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4640,6 +4617,31 @@ msgid ""
"%d. You will need an updated version of the engine to use this saved game."
msgstr ""
+#~ msgid "8 kHz"
+#~ msgstr "8 kHz"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 kHz"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 kHz"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 kHz"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 kHz"
+
+#~ msgid "Output rate:"
+#~ msgstr "Czêst. wyj.:"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "Wy¿sze warto¶ci daj± lepsz± jako¶æ d¼wiêku, ale mog± byæ nieobs³ugiwane "
+#~ "przez twoj± kartê d¼wiêkow±"
+
#~ 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."
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 2525e51971..6f2c39b42d 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.3.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-09-04 04:39+0200\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\n"
"PO-Revision-Date: 2017-03-03 22:26+0000\n"
"Last-Translator: rafaelmessias <rmmartins@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://translations.scummvm.org/"
@@ -61,7 +61,7 @@ msgstr "Acima"
#: 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -157,7 +157,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -241,9 +241,8 @@ msgid ""
"English"
msgstr "Idioma do jogo. Isto não irá passar seu jogo Inglês para Português"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<padrão>"
@@ -265,11 +264,11 @@ msgstr "Sistema:"
msgid "Engine"
msgstr "Engine"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "Gráficos"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "GFX"
@@ -282,7 +281,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "Sobrepor configuração global de gráficos"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "Áudio"
@@ -295,11 +294,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "Sobrepor configuração global de áudio"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "Volume"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "Volume"
@@ -313,7 +312,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "Sobrepor configuração global de volume"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -326,7 +325,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "Sobrepor configuração global de MIDI"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -339,11 +338,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "Sobrepor configuração global de MT-32"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "Pastas"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "Pastas"
@@ -357,7 +356,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "Pasta do Jogo:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "Pasta de Extras:"
@@ -366,44 +365,44 @@ msgstr "Pasta de Extras:"
msgid "Specifies path to additional data used by the game"
msgstr "Especifique a pasta para dados utilizados no jogo"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "Pasta de Extras:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "Pasta para Salvar:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "Especifique onde guardar seus jogos salvos"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
msgctxt "lowres"
msgid "Save Path:"
msgstr "Pasta para Salvar:"
#: gui/editgamedialog.cpp:301 gui/editgamedialog.cpp:398
-#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "Nenhum(a)"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "Padrão"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "Selecione o SoundFont"
@@ -411,7 +410,7 @@ msgstr "Selecione o SoundFont"
msgid "Select additional game directory"
msgstr "Selecione a pasta adicional do jogo"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "Selecione a pasta para os jogos salvos"
@@ -505,7 +504,7 @@ msgstr ""
msgid "Triangle"
msgstr ""
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "Outros"
@@ -600,7 +599,7 @@ msgstr "Selecione uma ação para mapear"
msgid "~Q~uit"
msgstr "~S~air"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "Sair do ScummVM"
@@ -608,7 +607,7 @@ msgstr "Sair do ScummVM"
msgid "A~b~out..."
msgstr "So~b~re..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "Sobre o ScumnmVM"
@@ -686,7 +685,7 @@ msgstr "Pesquisar:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "Carregar jogo:"
@@ -696,7 +695,7 @@ msgstr "Carregar jogo:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "Carregar"
@@ -813,247 +812,215 @@ msgstr "a cada 15 mins"
msgid "every 30 mins"
msgstr "a cada 30 mins"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 kHz"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 kHz"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 kHz"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 kHz"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 kHz"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "Nenhum(a)"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "Falha ao aplicar algumas mudanças nas opções de gráfico:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "o modo de vídeo não pôde ser alterado."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "a configuração de proporção não pôde ser mudada"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "a configuração de tela cheia não pôde ser mudada"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
#, fuzzy
msgid "the filtering setting could not be changed"
msgstr "a configuração de tela cheia não pôde ser mudada"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr ""
-#: gui/options.cpp:962
+#: gui/options.cpp:936
#, fuzzy
msgid "Touchpad mouse mode"
msgstr "Modo Touchpad desligado."
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr ""
-#: gui/options.cpp:971
+#: gui/options.cpp:945
#, fuzzy
msgid "Pointer Speed:"
msgstr "Voz"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr ""
-#: gui/options.cpp:973
+#: gui/options.cpp:947
#, fuzzy
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "Voz"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr ""
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "Modo gráfico:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "Renderização:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "Modos especiais de dithering suportados por alguns jogos"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "Modo Tela Cheia"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
#, fuzzy
msgid "Filter graphics"
msgstr "Gráficos"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr ""
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "Correção de proporção"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "Correção de proporção para jogos 320x200"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "Dispositivo pref.:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "Disp. de música:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr "Especifica o dispositivo de som preferido ou emulador de placa de som"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr "Especifica o dispositivo de saída de som ou emulador de placa de som"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr "Dispositivo pref.:"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "Dispositivo de música:"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "Emulador AdLib:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "AdLib é utilizado para música em vários jogos"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr "Taxa de saída:"
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"Maior valor especifica melhor qualidade de som, mas pode não ser suportado "
-"por sua placa de som"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "Dispositivo GM:"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr "Especifique o dispositivo de som padrão para a saída General MIDI"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "Não usar música General MIDI"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "Usar o primeiro dispositivo disponível"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr "SoundFont é suportado por algumas placas de som, FluidSynth e Timidity"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "Mixar AdLib/MIDI"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "Usar MIDI e AdLib juntos na geração de som"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "Ganho MIDI:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "Dispositivo MT-32:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr ""
"Especifique o dispositivo de som padrão para a saída Roland MT-32/LAPC1/"
"CM32l/CM64"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "Roland MT-32 real (desligar emulação GM)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
@@ -1061,375 +1028,375 @@ msgstr ""
"Verifique se você quer usar o seu dispositivo de hardware de som compatível "
"com Roland"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "Roland MT-32 real (sem emulação GM)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
#, fuzzy
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr "Roland MT-32 real (desligar emulação GM)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
msgstr ""
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "Não usar música Roland MT-32"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "Texto e Voz:"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "Voz"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "Legendas"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "Ambos"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "Rapidez legendas:"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "Texto e Voz:"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "Voz"
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "Legs"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "Ambos"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "Mostrar legenda e vozes (dublagem)"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "Velocidade das legendas:"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "Volume da Música:"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "Volume da Música:"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "Mudo"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "Volume dos Sons:"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "Volume dos efeitos sonoros especiais"
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "Volume dos Sons:"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "Volume da Voz:"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "Volume da Voz:"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr ""
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
#, fuzzy
msgid "Control"
msgstr "Controle do Mouse"
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr ""
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "Pasta do Tema:"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "Pasta do Tema:"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr ""
"Especifica a pasta para os dados adicionais usados por todos os jogos ou "
"ScummVM"
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "Pasta de Plugins:"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "Pasta de Plugins:"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "Outros"
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "Tema:"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "Renderizador GUI:"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "Auto-Salvar:"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "Auto-Salvar:"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "Teclas"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "Idioma do GUI:"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "Linguagem do ScummVM GUI"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr ""
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr ""
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr ""
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr ""
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr ""
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr ""
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr ""
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr ""
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "Nome de usuário:"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr ""
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr ""
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr ""
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr ""
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr ""
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr ""
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr ""
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr ""
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr ""
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
#, fuzzy
msgid "Download"
msgstr "Baixo"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr ""
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr ""
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr ""
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
#, fuzzy
msgid "Not running"
msgstr "Erro ao executar o jogo:"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
#, fuzzy
msgid "/root/ Path:"
msgstr "Pasta de Extras"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
#, fuzzy
msgid "Specifies which directory the Files Manager can access"
msgstr "Especifique onde guardar seus jogos salvos"
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
#, fuzzy
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "Pasta de Extras"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
#, fuzzy
msgid "Server's port:"
msgstr "Servidor:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
msgstr ""
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr ""
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
#, fuzzy
msgid "Failed to change cloud storage!"
msgstr "Falha ao salvar o jogo"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr ""
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
#, fuzzy
msgid "Theme does not support selected language!"
msgstr "O programa atual não suporta salvar o progresso do jogo"
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
#, fuzzy
msgid "Theme cannot be loaded!"
msgstr "O jogo NÃO foi carregado"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
msgstr ""
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr "O diretório escolhido não pode ser usado. Por favor, selecione outro."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "Selecione a pasta para os temas da Interface de Uso Gráfico"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "Selecione a pasta para os arquivos extras"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "Selecione a pasta para os plugins"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
#, fuzzy
msgid "Select directory for Files Manager /root/"
msgstr "Selecione a pasta para os arquivos extras"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr ""
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr ""
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
#, fuzzy
msgid "<never>"
msgstr "Nunca"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
#, fuzzy
msgid "Stop server"
msgstr "Servidor:"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr ""
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1904,9 +1871,9 @@ msgstr "~V~oltar ao menu"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1925,9 +1892,10 @@ msgstr "Salvar jogo:"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1944,7 +1912,7 @@ msgstr ""
"Por favor, consulte o README para obter informações básicas, e para obter "
"instruções sobre como obter assistência adicional."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, fuzzy, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2285,7 +2253,7 @@ msgid "OpenGL"
msgstr "Abrir"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "Modo janela"
@@ -2295,23 +2263,23 @@ msgid "Resolution: %dx%d"
msgstr ""
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "Correção de proporção habilitada"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "Correção de proporção desabilitada"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
#, fuzzy
msgid "Filtering enabled"
msgstr "Clicando Habilitado"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
#, fuzzy
msgid "Filtering disabled"
msgstr "Clicando Desabilitado"
@@ -2327,7 +2295,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "Normal (sem escala)"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "Ativa os filtros gráficos:"
@@ -2485,24 +2453,24 @@ msgstr "Item do meio na esquerda"
msgid "Right Click"
msgstr "Clique com o botão direito"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "Ocultar ScummVM"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "Ocultar Outros"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "Mostrar Tudo"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "Janela"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "Minimizar"
@@ -2959,8 +2927,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2973,8 +2941,8 @@ msgstr "Restaurar jogo:"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3176,13 +3144,13 @@ msgid "Move Right"
msgstr "Direita"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
#, fuzzy
msgid "Turn Left"
msgstr "Desligar"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
#, fuzzy
msgid "Turn Right"
msgstr "Cursor para a direita"
@@ -3508,40 +3476,40 @@ msgstr ""
"\n"
"Por favor, reporte para a equipe."
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
msgid "Invalid file name for saving"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
#, fuzzy
msgid "Down/Zoom Out"
msgstr "Zoom para cima"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr ""
@@ -3632,7 +3600,15 @@ msgid ""
"Use the alternate set of silver cursors instead of the normal golden ones"
msgstr ""
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+msgid "Enable content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:837
#, fuzzy
msgid "(Autosave)"
msgstr "Auto-Salvar:"
@@ -3651,22 +3627,22 @@ msgstr ""
msgid "Please use an external viewer to open the game's help file: %s"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
msgstr ""
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4682,6 +4658,31 @@ msgid ""
"%d. You will need an updated version of the engine to use this saved game."
msgstr ""
+#~ msgid "8 kHz"
+#~ msgstr "8 kHz"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 kHz"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 kHz"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 kHz"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 kHz"
+
+#~ msgid "Output rate:"
+#~ msgstr "Taxa de saída:"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "Maior valor especifica melhor qualidade de som, mas pode não ser "
+#~ "suportado por sua placa de som"
+
#~ 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."
diff --git a/po/pt_PT.po b/po/pt_PT.po
index 928524f8fc..c95e2b9c89 100644
--- a/po/pt_PT.po
+++ b/po/pt_PT.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.10.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-09-04 04:39+0200\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\n"
"PO-Revision-Date: 2017-01-30 14:50+0000\n"
"Last-Translator: Vitor Santos <vitorhgsantos90@gmail.com>\n"
"Language-Team: Portuguese (Portugal) <https://translations.scummvm.org/"
@@ -58,7 +58,7 @@ msgstr "Acima"
#: 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -155,7 +155,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -241,9 +241,8 @@ msgstr ""
"Idioma do jogo. Esta opção não muda a sua versão do jogo de Português para "
"Inglês"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<padrão>"
@@ -265,11 +264,11 @@ msgstr "Plataforma:"
msgid "Engine"
msgstr "Recursos"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "Gráficos"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "GFX"
@@ -282,7 +281,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "Substituir configurações gerais de gráficos"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "Áudio"
@@ -295,11 +294,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "Substituir configurações gerais de áudio"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "Volume"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "Volume"
@@ -313,7 +312,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "Substituir configurações gerais de volume"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -326,7 +325,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "Substituir configurações gerais de MIDI"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -339,11 +338,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "Substituir configurações gerais de MT-32"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "Caminhos"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "Caminhos"
@@ -357,7 +356,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "Caminho do Jogo:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "Caminho de Extras:"
@@ -366,44 +365,44 @@ msgstr "Caminho de Extras:"
msgid "Specifies path to additional data used by the game"
msgstr "Especifica o caminho para dados adicionais usados pelo jogo"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "Caminho de Extras:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "Caminho para Salvar:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "Especifica onde os jogos salvos são colocados"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
msgctxt "lowres"
msgid "Save Path:"
msgstr "Caminho para Salvar:"
#: gui/editgamedialog.cpp:301 gui/editgamedialog.cpp:398
-#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "Nenhum"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "Padrão"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "Seleccione o SoundFont"
@@ -411,7 +410,7 @@ msgstr "Seleccione o SoundFont"
msgid "Select additional game directory"
msgstr "Seleccione uma directoria adicional para o jogo"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "Seleccione uma directoria para salvar o jogo"
@@ -506,7 +505,7 @@ msgstr "Seno"
msgid "Triangle"
msgstr "Triângulo"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "Vários"
@@ -601,7 +600,7 @@ msgstr "Escolha uma acção para definir"
msgid "~Q~uit"
msgstr "~S~air"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "Sair do ScummVM"
@@ -609,7 +608,7 @@ msgstr "Sair do ScummVM"
msgid "A~b~out..."
msgstr "So~b~re..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "Sobre o ScumnmVM"
@@ -687,7 +686,7 @@ msgstr "Pesquisar:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "Carregar jogo:"
@@ -697,7 +696,7 @@ msgstr "Carregar jogo:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "Carregar"
@@ -814,599 +813,569 @@ msgstr "a cada 15 mins"
msgid "every 30 mins"
msgstr "a cada 30 mins"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 kHz"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 kHz"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 kHz"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 kHz"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 kHz"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "Nenhuma"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "Falha ao aplicar algumas mudanças nas opções de gráficos:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "o modo de vídeo não pôde ser alterado."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "a taxa de proporção não pôde ser alterada"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "a configuração de ecrã inteiro não pôde ser alterada"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
msgid "the filtering setting could not be changed"
msgstr "a configuração de filtragem não pôde ser alterada"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr ""
-#: gui/options.cpp:962
+#: gui/options.cpp:936
msgid "Touchpad mouse mode"
msgstr ""
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr ""
-#: gui/options.cpp:971
+#: gui/options.cpp:945
#, fuzzy
msgid "Pointer Speed:"
msgstr "Velocidade:"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr ""
-#: gui/options.cpp:973
+#: gui/options.cpp:947
#, fuzzy
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "Velocidade:"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr ""
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "Modelo de gráficos:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "Renderização:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "Modos especiais de pontilhado suportados por alguns jogos"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "Modo de ecrã inteiro"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Filter graphics"
msgstr "Filtros gráficos"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr "Usar filtragem linear quando dimensionar gráficos"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "Correção da taxa de proporção"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "Corrigir taxa de proporção em jogos de 320x200"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "Dispositivo Preferido:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "Dispositivo de Música:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr "Especifica dispositivo sonoro ou emulador de placa sonora preferida"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr ""
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr ""
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr ""
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "Emulador AdLib:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "AdLib é usado para música em vários jogos"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr ""
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr ""
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr ""
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr ""
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr ""
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr ""
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr ""
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr ""
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr ""
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr ""
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr ""
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr ""
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr ""
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr ""
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
msgstr ""
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr ""
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr ""
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
msgstr ""
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr ""
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr ""
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr ""
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr ""
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr ""
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr ""
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr ""
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr ""
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr ""
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr ""
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr ""
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr ""
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr ""
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr ""
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr ""
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr ""
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr ""
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr ""
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr ""
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr ""
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr ""
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
msgid "Control"
msgstr ""
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr ""
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr ""
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr ""
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr ""
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr ""
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr ""
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr ""
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr ""
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr ""
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr ""
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr ""
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr ""
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr ""
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr ""
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr ""
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr ""
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr ""
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr ""
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr ""
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr ""
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr ""
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr ""
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr ""
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr ""
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr ""
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr ""
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr ""
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr ""
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr ""
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr ""
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr ""
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr ""
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Download"
msgstr ""
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr ""
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr ""
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr ""
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
msgid "Not running"
msgstr ""
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
msgid "/root/ Path:"
msgstr ""
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
msgid "Specifies which directory the Files Manager can access"
msgstr ""
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
msgctxt "lowres"
msgid "/root/ Path:"
msgstr ""
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid "Server's port:"
msgstr ""
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
msgstr ""
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr ""
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
msgid "Failed to change cloud storage!"
msgstr ""
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr ""
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
#, fuzzy
msgid "Theme does not support selected language!"
msgstr "Este jogo não permite carregar jogos a partir do menu principal."
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
msgid "Theme cannot be loaded!"
msgstr ""
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
msgstr ""
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr ""
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr ""
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr ""
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr ""
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
msgid "Select directory for Files Manager /root/"
msgstr ""
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr ""
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr ""
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
msgid "<never>"
msgstr ""
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
msgid "Stop server"
msgstr ""
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr ""
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1861,9 +1830,9 @@ msgstr ""
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1882,9 +1851,10 @@ msgstr ""
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1898,7 +1868,7 @@ msgid ""
"further assistance."
msgstr ""
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2203,7 +2173,7 @@ msgid "OpenGL"
msgstr ""
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr ""
@@ -2213,22 +2183,22 @@ msgid "Resolution: %dx%d"
msgstr ""
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr ""
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr ""
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
msgid "Filtering enabled"
msgstr ""
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
msgid "Filtering disabled"
msgstr ""
@@ -2243,7 +2213,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr ""
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr ""
@@ -2399,24 +2369,24 @@ msgstr ""
msgid "Right Click"
msgstr ""
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr ""
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr ""
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr ""
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr ""
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr ""
@@ -2866,8 +2836,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2880,8 +2850,8 @@ msgstr ""
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3052,12 +3022,12 @@ msgid "Move Right"
msgstr ""
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr ""
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr ""
@@ -3346,39 +3316,39 @@ msgid ""
"Please report to the team."
msgstr ""
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
msgid "Invalid file name for saving"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr ""
@@ -3467,7 +3437,15 @@ msgid ""
"Use the alternate set of silver cursors instead of the normal golden ones"
msgstr ""
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+msgid "Enable content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:837
msgid "(Autosave)"
msgstr ""
@@ -3485,22 +3463,22 @@ msgstr ""
msgid "Please use an external viewer to open the game's help file: %s"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
msgstr ""
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4476,6 +4454,21 @@ msgid ""
"%d. You will need an updated version of the engine to use this saved game."
msgstr ""
+#~ msgid "8 kHz"
+#~ msgstr "8 kHz"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 kHz"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 kHz"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 kHz"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 kHz"
+
#, fuzzy
#~ msgctxt "lowres"
#~ msgid "Mouse Speed:"
diff --git a/po/ru_RU.po b/po/ru_RU.po
index 3b7063d630..4ebb6d36c7 100644
--- a/po/ru_RU.po
+++ b/po/ru_RU.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.8.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-09-04 04:39+0200\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\n"
"PO-Revision-Date: 2017-06-20 15:35+0000\n"
"Last-Translator: Ivan Lukyanov <lid-gr@tut.by>\n"
"Language-Team: Russian <https://translations.scummvm.org/projects/scummvm/"
@@ -59,7 +59,7 @@ 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -156,7 +156,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -241,9 +241,8 @@ msgid ""
msgstr ""
"Ï×ëÚ ØÓàë. ¸×ÜÕÝÕÝØÕ íâÞÙ ÝÐáâàÞÙÚØ ÝÕ ßàÕÒàÐâØâ ØÓàã ÝÐ ÐÝÓÛØÙáÚÞÜ Ò àãááÚãî"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<ßÞ ãÜÞÛçÐÝØî>"
@@ -265,11 +264,11 @@ msgstr "¿ÛÐâäÞàÜÐ:"
msgid "Engine"
msgstr "´ÒØÖÞÚ"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "³àÐäØÚÐ"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "³àä"
@@ -282,7 +281,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "¿ÕàÕÚàëâì ÓÛÞÑÐÛìÝëÕ ãáâÐÝÞÒÚØ ÓàÐäØÚØ"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "°ãÔØÞ"
@@ -295,11 +294,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "¿ÕàÕÚàëâì ÓÛÞÑÐÛìÝëÕ ãáâÐÝÞÒÚØ ÐãÔØÞ"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "³àÞÜÚÞáâì"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "³àÞÜÚ"
@@ -313,7 +312,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "¿ÕàÕÚàëâì ÓÛÞÑÐÛìÝëÕ ãáâÐÝÞÒÚØ ÓàÞÜÚÞáâØ"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -326,7 +325,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "¿ÕàÕÚàëâì ÓÛÞÑÐÛìÝëÕ ãáâÐÝÞÒÚØ MIDI"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -339,11 +338,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "¿ÕàÕÚàëâì ÓÛÞÑÐÛìÝëÕ ãáâÐÝÞÒÚØ MT-32"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "¿ãâØ"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "¿ãâØ"
@@ -357,7 +356,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "³ÔÕ ØÓàÐ:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "´Þß. ßãâì:"
@@ -366,44 +365,44 @@ msgstr "´Þß. ßãâì:"
msgid "Specifies path to additional data used by the game"
msgstr "ÃÚÐ×ëÒÐÕâ ßãâì Ú ÔÞßÞÛÝØâÕÛìÝëÜ äÐÙÛÐÜ ÔÐÝÝëå ÔÛï ØÓàë"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "´Þß. ßãâì:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "ÁÞåàÐÝÕÝØï ØÓà:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "ÃÚÐ×ëÒÐÕâ ßãâì Ú áÞåàÐÝÕÝØïÜ ØÓàë"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
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:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "½Õ ×ÐÔÐÝ"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "¿Þ ãÜÞÛçÐÝØî"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "²ëÑÕàØâÕ SoundFont"
@@ -411,7 +410,7 @@ msgstr "²ëÑÕàØâÕ SoundFont"
msgid "Select additional game directory"
msgstr "²ëÑÕàØâÕ ÔÞßÞÛÝØâÕÛìÝãî ÔØàÕÚâÞàØî ØÓàë"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "²ëÑÕàØâÕ ÔØàÕÚâÞàØî ÔÛï áÞåàÐÝÕÝØÙ"
@@ -504,7 +503,7 @@ msgstr "ÁØÝãáÞØÔÐ"
msgid "Triangle"
msgstr "ÂàÕãÓÞÛìÝÐï"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "ÀÐ×ÝÞÕ"
@@ -599,7 +598,7 @@ msgstr "²ëÑÕàØâÕ ÔÕÙáâÒØÕ ÔÛï ÝÐ×ÝÐçÕÝØï"
msgid "~Q~uit"
msgstr "~²~ëåÞÔ"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "·ÐÒÕàèØâì ScummVM"
@@ -607,7 +606,7 @@ msgstr "·ÐÒÕàèØâì ScummVM"
msgid "A~b~out..."
msgstr "¾ ß~à~ÞÓàÐÜÜÕ..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "¾ ßàÞÓàÐÜÜÕ ScummVM"
@@ -684,7 +683,7 @@ msgstr "¿ÞØáÚ:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "·ÐÓàã×Øâì ØÓàã:"
@@ -694,7 +693,7 @@ msgstr "·ÐÓàã×Øâì ØÓàã:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "·ÐÓàã×Øâì"
@@ -804,245 +803,213 @@ msgstr "ÚÐÖÔëÕ 15 ÜØÝãâ"
msgid "every 30 mins"
msgstr "ÚÐÖÔëÕ 30 ÜØÝãâ"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 Ú³æ"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 Ú³æ"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 Ú³æ"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 Ú³æ"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 Ú³æ"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "½Õ ×ÐÔÐÝ"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "½Õ ãÔÐÛÞáì ßàØÜÕÝØâì Ø×ÜÕÝÕÝØï ÝÕÚÞâÞàëå ÓàÐäØçÕáÚØå ÝÐáâàÞÕÚ:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "ÒØÔÕÞàÕÖØÜ ÝÕ ÜÞÖÕâ Ñëâì Ø×ÜÕÝñÝ."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "àÕÖØÜ ÚÞààÕÚâØàÞÒÚØ áÞÞâÝÞèÕÝØï áâÞàÞÝ ÝÕ ÜÞÖÕâ Ñëâì Ø×ÜÕÝñÝ"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "ßÞÛÝÞíÚàÐÝÝëÙ àÕÖØÜ ÝÕ ÜÞÖÕâ Ñëâì Ø×ÜÕÝñÝ"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
msgid "the filtering setting could not be changed"
msgstr "àÕÖØÜ äØÛìâàÐæØØ ÝÕ ÜÞÖÕâ Ñëâì Ø×ÜÕÝñÝ"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr "¿ÞÚÐ×Ðâì ãßàÐÒÛÕÝØÕ íÚàÐÝÞÜ"
-#: gui/options.cpp:962
+#: gui/options.cpp:936
msgid "Touchpad mouse mode"
msgstr "ÀÕÖØÜ âÐçßÐÔÐ"
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr "¿ÞÜÕÝïâì ÜÕáâÐÜØ ÚÝÞßÚØ ¼ÕÝî Ø ½Ð×ÐÔ"
-#: gui/options.cpp:971
+#: gui/options.cpp:945
msgid "Pointer Speed:"
msgstr "ÁÚÞàÞáâì ãÚÐ×ÐâÕÛï:"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr "ÁÚÞàÞáâì ÔÛï ÚÛÐÒØè íÜãÛïæØØ ÜëèØ ÝÐ ÚÛÐÒØÐâãàÕ/ÔÖÞÙáâØÚÕ"
-#: gui/options.cpp:973
+#: gui/options.cpp:947
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "ÁÚÞàÞáâì ãÚÐ×ÐâÕÛï:"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr "¼ñàâÒÐï ×ÞÝÐ ÔÖÞÙáâØÚÐ:"
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr "¼ñàâÒÐï ×ÞÝÐ ÐÝÐÛÞÓÞÒÞÓÞ ÔÖÞÙáâØÚÐ"
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr "¼ñàâÒÐï ×ÞÝÐ ÔÖÞÙáâØÚÐ:"
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr "°ßßÐàÐâÝëÙ èÕÙÔÕà:"
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr "ÀÐ×ÛØçÝëÕ ÐßßÐàÐâÝëÕ èÕÙÔÕàë ÔÐîâ àÐ×ÛØçÝëÕ ÒØ×ãÐÛìÝëÕ íääÕÚâë"
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr "°ßßÐàÐâÝëÙ èÕÙÔÕà:"
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr "ÀÐ×ÛØçÝëÕ èÕÙÔÕàë ÔÐîâ àÐ×ÛØçÝëÕ ÒØ×ãÐÛìÝëÕ íääÕÚâë"
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "³àÐä. àÕÖØÜ:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "ÀÕÖØÜ àÐáâàÐ:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "ÁßÕæØÐÛìÝëÕ àÕÖØÜë àÕÝÔÕàØÝÓÐ, ßÞÔÔÕàÖØÒÐÕÜëÕ ÝÕÚÞâÞàëÜØ ØÓàÐÜØ"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "¿ÞÛÝÞíÚàÐÝÝëÙ àÕÖØÜ"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Filter graphics"
msgstr "ÄØÛìâàÞÒÐÝØÕ ÓàÐäØÚØ"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr "¸áßÞÛì×ÞÒÐâì ÛØÝÕÙÝãî äØÛìâàÐæØî ÔÛï ãÒÕÛØçÕÝØï àÐ×àÕèÕÝØï"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "ºÞààÕÚæØï áÞÞâÝÞèÕÝØï áâÞàÞÝ"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "ºÞààÕÚâØàÞÒÐâì áÞÞâÝÞèÕÝØÕ áâÞàÞÝ ÔÛï ØÓà á àÐ×àÕèÕÝØÕÜ 320x200"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "¿àÕÔßÞçØâÐÕÜÞÕ:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "·ÒãÚÞÒÞÕ ãáâ-ÒÞ:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr ""
"ÃÚÐ×ëÒÐÕâ ßàÕÔßÞçØâÐÕÜÞÕ ×ÒãÚÞÒÞÕ ãáâàÞÙáâÒÞ ØÛØ íÜãÛïâÞà ×ÒãÚÞÒÞÙ ÚÐàâë"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr "ÃÚÐ×ëÒÐÕâ ÒëåÞÔÝÞÕ ×ÒãÚÞÒÞÕ ãáâàÞÙáâÒÞ ØÛØ íÜãÛïâÞà ×ÒãÚÞÒÞÙ ÚÐàâë"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr "¿àÕÔßÞçØâÐÕÜÞÕ:"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "·ÒãÚÞÒÞÕ ãáâ-ÒÞ:"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "ÍÜãÛïâÞà AdLib:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "·ÒãÚÞÒÐï ÚÐàâÐ AdLib ØáßÞÛì×ãÕâáï ÜÝÞÓØÜØ ØÓàÐÜØ"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr "ÇÐáâÞâÐ ×ÒãÚÐ:"
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"±¾ÛìèØÕ ×ÝÐçÕÝØï ×ÐÔÐîâ ÛãçèÕÕ ÚÐçÕáâÒÞ ×ÒãÚÐ, ÞÔÝÐÚÞ ÞÝØ ÜÞÓãâ ÝÕ "
-"ßÞÔÔÕàÖØÒÐâìáï ÒÐèÕÙ ×ÒãÚÞÒÞÙ ÚÐàâÞÙ"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "ÃáâàÞÙáâÒÞ GM:"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr "ÃÚÐ×ëÒÐÕâ ÒëåÞÔÝÞÕ ×ÒãÚÞÒÞÕ ãáâàÞÙáâÒÞ ÔÛï MIDI"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "½Õ ØáßÞÛì×ÞÒÐâì Üã×ëÚã ÔÛï General MIDI"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "¸áßÞÛì×ÞÒÐâì ßÕàÒÞÕ ÔÞáâãßÝÞÕ ãáâàÞÙáâÒÞ"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr ""
"SoundFont'ë ßÞÔÔÕàÖØÒÐîâáï ÝÕÚÞâÞàëÜØ ×ÒãÚÞÒëÜØ ÚÐàâÐÜØ, FluidSynth Ø "
"Timidity"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "ÁÜÕèÐÝÝëÙ àÕÖØÜ AdLib/MIDI"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "¸áßÞÛì×ÞÒÐâì Ø MIDI, Ø AdLib ÔÛï ÓÕÝÕàÐæØØ ×ÒãÚÐ"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "ÃáØÛÕÝØÕ MIDI:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "Ãáâà. MT-32:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr ""
"ÃÚÐ×ëÒÐÕâ ×ÒãÚÞÒÞÕ ãáâàÞÙáâÒÞ ßÞ ãÜÞÛçÐÝØî ÔÛï ÒëÒÞÔÐ ÝÐ Roland MT-32/LAPC1/"
"CM32l/CM64"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "½ÐáâÞïéØÙ Roland MT-32 (×ÐßàÕâØâì íÜãÛïæØî GM)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
@@ -1050,16 +1017,16 @@ msgstr ""
"¾âÜÕâìâÕ, ÕáÛØ ã ÒÐá ßÞÔÚÛîçÕÝÞ Roland-áÞÒÜÕáâØÜÞÕ ×ÒãÚÞÒÞÕ ãáâàÞÙáâÒÞ Ø Òë "
"åÞâØâÕ ÕÓÞ ØáßÞÛì×ÞÒÐâì"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "½ÐáâÞïéØÙ Roland MT-32 (ÑÕ× íÜãÛïæØØ GM)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr "ÃáâàÞÙáâÒÞ Roland GS (àÐ×àÕèØâì ÜÐßßØÝÓ MT-32)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
@@ -1067,273 +1034,273 @@ msgstr ""
"¾âÜÕâìâÕ, ÕáÛØ åÞâØâÕ àÐ×àÕèØâì ÜÐßßØÝÓ ÔÛï íÜãÛïæØØ MT-32 ÝÐ ãáâàÞÙáâÒÕ "
"Roland GS"
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "½Õ ØáßÞÛì×ÞÒÐâì Üã×ëÚã ÔÛï MT-32"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "ÂÕÚáâ Ø Þ×ÒãçÚÐ:"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "¾×ÒãçÚÐ"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "ÁãÑâØâàë"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "¾ÑÐ"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "ÁÚÞàÞáâì âØâàÞÒ:"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "ÂÕÚáâ Ø Þ×ÒãçÚÐ:"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "¾×Ò"
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "狄"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "¾ÑÐ"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "¿ÞÚÐ×ëÒÐâì áãÑâØâàë Ø ÒÞáßàÞØ×ÒÞÔØâì àÕçì"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "ÁÚÞàÞáâì âØâàÞÒ:"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "³àÞÜÚ. Üã×ëÚØ:"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "³àÞÜÚ. Üã×ëÚØ:"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "²ëÚÛ. Òáñ"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "³àÞÜÚÞáâì SFX:"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "³àÞÜÚÞáâì áßÕæØÐÛìÝëå ×ÒãÚÞÒëå íääÕÚâÞÒ"
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "³àÞÜÚ. SFX:"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "³àÞÜÚ. Þ×ÒãçÚØ:"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "³àÞÜÚ. Þ×ÒãçÚØ:"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr "ÈÕÙÔÕà"
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
msgid "Control"
msgstr "ÃßàÐÒÛÕÝØÕ"
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr "½ÐáâàÞÙÚØ FluidSynth"
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "¿ãâì Ú âÕÜÐÜ:"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "³ÔÕ âÕÜë:"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr ""
"ÃÚÐ×ëÒÐÕâ ßãâì Ú ÔÞßÞÛÝØâÕÛìÝëÜ äÐÙÛÐÜ ÔÐÝÝëå, ØáßÞÛì×ãÕÜëå ÒáÕÜØ ØÓàÐÜØ "
"ÛØÑÞ ScummVM"
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "¿ãâì Ú ßÛÐÓØÝÐÜ:"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "¿ãâì Ú ßÛÐÓØÝÐÜ:"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "ÀÐ×ÝÞÕ"
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "ÂÕÜÐ:"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "ÀØáÞÒÐÛÚÐ GUI:"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "°ÒâÞáÞåàÐÝÕÝØÕ:"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "°ÒâÞáÞåà.:"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "ºÛÐÒØèØ"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "Ï×ëÚ GUI:"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "Ï×ëÚ ÓàÐäØçÕáÚÞÓÞ ØÝâÕàäÕÙáÐ ScummVM"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr "¿àÞÒÕàïâì ÞÑÝÞÒÛÕÝØï:"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr "ºÐÚ çÐáâÞ ßàÞÒÕàïâì ÞÑÝÞÒÛÕÝØï ScummVM"
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr "¿àÞÒÕàØâì áÕÙçÐá"
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr "¾ÑÛÐÚÞ"
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr "¾ÑÛÐÚÞ"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr "¾ÑÛÐÚÞ:"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr "°ÚâØÒÝÞÕ ÞÑÛÐçÝÞÕ åàÐÝØÛØéÕ"
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr "<ÝÕâ>"
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "¿ÞÛì×ÞÒÐâÕÛì:"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr "¸Üï ßÞÛì×ÞÒÐâÕÛï Ò íâÞÜ ÞÑÛÐÚÕ"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr "¸áßÞÛì×ãÕÜëÙ ÞÑêñÜ:"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr "¾ÑêñÜ, ×ÐÝØÜÐÕÜëÙ áÞåàÐÝÕÝØïÜØ ØÓà ScummVM ÝÐ íâÞÜ ÞÑÛÐÚÕ"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr "¿ÞáÛÕÔÝïï áØÝåàÞÝØ×ÐæØï:"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr "ºÞÓÔÐ ßàÞØ×ÒÞÔØÛÐáì ßÞáÛÕÔÝïï áØÝåàÞÝØ×ÐæØï á íâØÜ ÞÑÛÐÚÞÜ"
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr "¿ÞÔÚÛîçØâì"
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr "¾âÚàëÒÐÕâ ÔØÐÛÞÓ ÔÛï ãáâÐÝÞÒÚØ ßÞÔÚÛîçÕÝØï Ú ÞÑÛÐÚã"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr "¾ÑÝÞÒØâì"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr "¾ÑÝÞÒÛïÕâ âÕÚãéãî ØÝäÞàÜÐæØî ÞÑ ÞÑÛÐÚÕ (ØÜï ßÞÛì×ÞÒÐâÕÛï Ø ÞÑêñÜ)"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Download"
msgstr "·ÐÓàã×Øâì"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr "¾âÚàëÒÐÕâ ÜÕÝÕÔÖÕà ×ÐÓàã×ÞÚ"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr "·ÐßãáâØâì áÕàÒÕà"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr "·ÐßãáÚÐÕâ ÛÞÚÐÛìÝëÙ ÒÕÑ-áÕàÒÕà"
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
msgid "Not running"
msgstr "½Õ ×ÐßãéÕÝ"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
msgid "/root/ Path:"
msgstr "ºÞàÝÕÒÐï ÔØàÕÚâÞàØï:"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
msgid "Specifies which directory the Files Manager can access"
msgstr "ÃÚÐ×ëÒÐÕâ ßãâì Ú ÔØàÕÚâÞàØØ, ÚãÔÐ ÑãÔÕâ ØÜÕâì ÔÞáâãß ¼ÕÝÕÔÖÕà äÐÙÛÞÒ"
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "ºÞàÕÝì:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid "Server's port:"
msgstr "¿Þàâ áÕàÒÕàÐ:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
@@ -1341,27 +1308,27 @@ msgstr ""
"½ÞÜÕà ßÞàâÐ, ØáßÞÛì×ãÕÜëÙ áÕàÒÕàÞÜ\n"
"ÃáâÐÝÞÒÛÕÝØÕ ÔÞáâãßÐ àÐÑÞâÐÕâ âÞÛìÚÞ á ßÞàâÞÜ ßÞ ãÜÞÛçÐÝØî"
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr "¿àØÜÕÝØâì"
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
msgid "Failed to change cloud storage!"
msgstr "½Õ ãÔÐÛÞáì áÜÕÝØâì ÞÑÛÐÚÞ!"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr "ÃÖÕ ÐÚâØÒÝÞ ÔàãÓÞÕ ÞÑÛÐçÝÞÕ åàÐÝØÛØéÕ."
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
msgid "Theme does not support selected language!"
msgstr "ÂÕÜÐ ÝÕ ßÞÔÔÕàÖØÒÐÕâ ÒëÑàÐÝÝëÙ ï×ëÚ!"
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
msgid "Theme cannot be loaded!"
msgstr "½ÕÒÞ×ÜÞÖÝÞ ×ÐÓàã×Øâì âÕÜã!"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
@@ -1369,48 +1336,48 @@ msgstr ""
"\n"
"½ÐáâàÞÙÚØ ÝÐ ×ÐÚÛÐÔÚÕ ÀÐ×ÝÞÕ ÑãÔãâ ÒÞááâÐÝÞÒÛÕÝë."
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr "½Õ ÜÞÓã ßØáÐâì Ò ÒëÑàÐÝÝãî ÔØàÕÚâÞàØî. ¿ÞÖÐÛãÙáâÐ, ãÚÐÖØâÕ ÔàãÓãî."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "²ëÑÕàØâÕ ÔØàÕÚâÞàØî ÔÛï âÕÜ GUI"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "²ëÑÕàØâÕ ÔØàÕÚâÞàØî á ÔÞßÞÛÝØâÕÛìÝëÜØ äÐÙÛÐÜØ"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "²ëÑÕàØâÕ ÔØàÕÚâÞàØî á ßÛÐÓØÝÐÜØ"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
msgid "Select directory for Files Manager /root/"
msgstr "²ëÑÕàØâÕ ÔØàÕÚâÞàØî ÔÛï ÚÞàÝï Ò ¼ÕÝÕÔÖÕàÕ äÐÙÛÞÒ"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr "%llu ÑÐÙâ"
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr "<áÕÙçÐá>"
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
msgid "<never>"
msgstr "<ÝØÚÞÓÔÐ>"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
msgid "Stop server"
msgstr "¾áâÐÝÞÒØâì áÕàÒÕà"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr "¾áâÐÝÐÒÛØÒÐÕâ ÛÞÚÐÛìÝëÙ ÒÕÑ-áÕàÒÕà"
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1876,9 +1843,9 @@ msgstr "~²~ ÓÛÐÒÝÞÕ ÜÕÝî"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1897,9 +1864,10 @@ msgstr "ÁÞåàÐÝØâì ØÓàã:"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1916,7 +1884,7 @@ msgstr ""
"¿ÞÖÐÛãÙáâÐ, ÞÑàÐâØâÕáì Ò äÐÙÛ README ×Ð ÑÐ×ÞÒÞÙ ØÝäÞàÜÐæØÕÙ, Ð âÐÚÖÕ "
"ØÝáâàãÚæØïÜØ Þ âÞÜ, ÚÐÚ ßÞÛãçØâì ÔÐÛìÝÕÙèãî ßÞÜÞéì."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2253,7 +2221,7 @@ msgid "OpenGL"
msgstr "OpenGL"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "¾ÚÞÝÝëÙ àÕÖØÜ"
@@ -2263,22 +2231,22 @@ msgid "Resolution: %dx%d"
msgstr "ÀÐ×àÕèÕÝØÕ: %dx%d"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "ºÞààÕÚæØï áÞÞâÝÞèÕÝØï áâÞàÞÝ ÒÚÛîçÕÝÐ"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "ºÞààÕÚæØï áÞÞâÝÞèÕÝØï áâÞàÞÝ ÒëÚÛîçÕÝÐ"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
msgid "Filtering enabled"
msgstr "ÄØÛìâàÐæØï ÒÚÛîçÕÝÐ"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
msgid "Filtering disabled"
msgstr "ÄØÛìàÐæØï ÒëÚÛîçÕÝÐ"
@@ -2293,7 +2261,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "±Õ× ãÒÕÛØçÕÝØï"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "°ÚâØÒÝëÙ ÓàÐäØçÕáÚØÙ äØÛìâà:"
@@ -2449,24 +2417,24 @@ msgstr "ÁàÕÔÝØÙ éÕÛçÞÚ"
msgid "Right Click"
msgstr "¿àÐÒëÙ éÕÛçÞÚ"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "ÁÚàëâì ScummVM"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "ÁÚàëâì ÞáâÐÛìÝëÕ"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "¿ÞÚÐ×Ðâì ÒáÕ"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "¾ÚÝÞ"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "ÁÒÕàÝãâì"
@@ -2927,8 +2895,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2941,8 +2909,8 @@ msgstr "²ÞááâÐÝÞÒØâì ØÓàã:"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3129,12 +3097,12 @@ msgid "Move Right"
msgstr "¸ÔâØ ÒßàÐÒÞ"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr "¿ÞÒÞàÞâ ÝÐÛÕÒÞ"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr "¿ÞÒÞàÞâ ÝÐßàÐÒÞ"
@@ -3471,39 +3439,39 @@ msgstr ""
"\n"
"¿ÞÖÐÛãÙáâÐ, áÞÞÑéØâÕ ÞÑ íâÞÜ ÚÞÜÐÝÔÕ ScummVM."
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
msgid "Invalid file name for saving"
msgstr "½ÕÒÕàÝÞÕ ØÜï äÐÙÛÐ ÔÛï ×ÐßØáØ"
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr "²ÒÕàå/ÃÒÕÛ. ÜÐáèâÐÑ/²ßÕàñÔ/¾âÚàëâì ÔÒÕàØ"
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr "²ÝØ×/ÃÜÕÝìè. ÜÐáèâÐÑ"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr "¿ÞÚÐ×Ðâì/ÁßàïâÐâì ØÝÒÕÝâÐàì"
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr "¿ÞÚÐ×Ðâì/ÁßàïâÐâì ÑØÞçØß"
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr "´ÕÙáâÒØÕ/²ëÑÞà"
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr "²ÚÛîçØâì ßÞÚÐ× ÔÐÝÝëå Ò æÕÝâàÕ íÚàÐÝÐ"
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr "¿ÞÚÐ×Ðâì/ÁßàïâÐâì ØÝäÞíÚàÐÝ"
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr "¿ÞÚÐ×Ðâì/ÁßàïâÐâì ÜÕÝî ßÐã×ë"
@@ -3603,7 +3571,16 @@ msgid ""
msgstr ""
"¸áßÞÛì×ÞÒÐâì ÐÛìâÕàÝÐâØÒÝëÙ ÝÐÑÞà áÕàÕÑàïÝëå ÚãàáÞàÞÒ ÒÜÕáâÞ ÞÑëçÝëå ×ÞÛÞâëå"
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+#, fuzzy
+msgid "Enable content censoring"
+msgstr "²ÚÛîçØâì ßÛÐÒÐîéØÕ ÚãàáÞàë"
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:837
msgid "(Autosave)"
msgstr "(°ÒâÞáÞåàÐÝÕÝØÕ)"
@@ -3623,17 +3600,17 @@ msgstr ""
"¿ÞÖÐÛãÙáâÐ, ÒÞáßÞÛì×ãÙâÕáì ÔàãÓÞÙ ßàÞÓàÐÜÜÞÙ ÔÛï ßàÞáÜÞâàÐ äÐÙÛÐ ßÞÜÞéØ "
"ØÓàë: %s"
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
#, fuzzy
msgid "The format of this saved game is obsolete, unable to load it"
msgstr "ÄÞàÜÐâ äÐÙÛÐ áÞåàÐÝñÝÝÞÙ ØÓàë ãáâÐàÕÛ, ÝÕ ÜÞÓã ×ÐÓàã×Øâì ÕÓÞ"
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, fuzzy, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr "²ÕàáØï äÐÙÛÐ áÞåàÐÝÕÝØï: %d, ÝÞ ÜÐÚáØÜÐÛìÝÐï ßÞÔÔÕàÖØÒÐÕÜÐï: %0d"
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
#, fuzzy
msgid ""
"This saved game was created with a different version of the game, unable to "
@@ -3641,7 +3618,7 @@ msgid ""
msgstr ""
"ÍâÞâ äÐÙÛ áÞåàÐÝÕÝØï ÑëÛ áÞ×ÔÐÝ ÔàãÓÞÙ ÒÕàáØÕÙ ØÓàë, ÝÕ ÜÞÓã ×ÐÓàã×Øâì ÕÓÞ"
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
#, fuzzy
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
@@ -4673,6 +4650,31 @@ msgstr ""
"ÒÕàáØØ ÝÕ ÒëèÕ %d. ´Ûï ØáßÞÛì×ÞÒÐÝØï íâÞÓÞ äÐÙÛÐ ÝÕÞÑåÞÔØÜÐ áÒÕÖÐï ÒÕàáØï "
"ÔÒØÖÚÐ."
+#~ msgid "8 kHz"
+#~ msgstr "8 Ú³æ"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 Ú³æ"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 Ú³æ"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 Ú³æ"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 Ú³æ"
+
+#~ msgid "Output rate:"
+#~ msgstr "ÇÐáâÞâÐ ×ÒãÚÐ:"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "±¾ÛìèØÕ ×ÝÐçÕÝØï ×ÐÔÐîâ ÛãçèÕÕ ÚÐçÕáâÒÞ ×ÒãÚÐ, ÞÔÝÐÚÞ ÞÝØ ÜÞÓãâ ÝÕ "
+#~ "ßÞÔÔÕàÖØÒÐâìáï ÒÐèÕÙ ×ÒãÚÞÒÞÙ ÚÐàâÞÙ"
+
#~ 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."
diff --git a/po/scummvm.pot b/po/scummvm.pot
index 7c1f7e328f..36da2316cc 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: 2017-09-04 04:39+0200\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\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"
@@ -55,7 +55,7 @@ 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -148,7 +148,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -228,9 +228,8 @@ msgid ""
"English"
msgstr ""
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr ""
@@ -252,11 +251,11 @@ msgstr ""
msgid "Engine"
msgstr ""
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr ""
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr ""
@@ -269,7 +268,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr ""
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr ""
@@ -282,11 +281,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr ""
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr ""
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr ""
@@ -300,7 +299,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr ""
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr ""
@@ -313,7 +312,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr ""
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr ""
@@ -326,11 +325,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr ""
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr ""
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr ""
@@ -344,7 +343,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr ""
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr ""
@@ -353,44 +352,44 @@ msgstr ""
msgid "Specifies path to additional data used by the game"
msgstr ""
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr ""
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr ""
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr ""
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
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:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr ""
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr ""
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr ""
@@ -398,7 +397,7 @@ msgstr ""
msgid "Select additional game directory"
msgstr ""
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr ""
@@ -488,7 +487,7 @@ msgstr ""
msgid "Triangle"
msgstr ""
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr ""
@@ -581,7 +580,7 @@ msgstr ""
msgid "~Q~uit"
msgstr ""
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr ""
@@ -589,7 +588,7 @@ msgstr ""
msgid "A~b~out..."
msgstr ""
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr ""
@@ -666,7 +665,7 @@ msgstr ""
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr ""
@@ -676,7 +675,7 @@ msgstr ""
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr ""
@@ -782,596 +781,566 @@ msgstr ""
msgid "every 30 mins"
msgstr ""
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr ""
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr ""
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr ""
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr ""
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr ""
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr ""
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr ""
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr ""
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr ""
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr ""
-#: gui/options.cpp:557
+#: gui/options.cpp:544
msgid "the filtering setting could not be changed"
msgstr ""
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr ""
-#: gui/options.cpp:962
+#: gui/options.cpp:936
msgid "Touchpad mouse mode"
msgstr ""
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr ""
-#: gui/options.cpp:971
+#: gui/options.cpp:945
msgid "Pointer Speed:"
msgstr ""
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr ""
-#: gui/options.cpp:973
+#: gui/options.cpp:947
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr ""
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr ""
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr ""
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr ""
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr ""
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr ""
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Filter graphics"
msgstr ""
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr ""
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr ""
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr ""
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr ""
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr ""
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr ""
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr ""
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr ""
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr ""
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr ""
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr ""
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr ""
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr ""
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr ""
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr ""
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr ""
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr ""
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr ""
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr ""
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr ""
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr ""
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr ""
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr ""
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr ""
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr ""
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
msgstr ""
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr ""
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr ""
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
msgstr ""
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr ""
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr ""
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr ""
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr ""
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr ""
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr ""
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr ""
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr ""
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr ""
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr ""
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr ""
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr ""
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr ""
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr ""
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr ""
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr ""
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr ""
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr ""
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr ""
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr ""
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr ""
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
msgid "Control"
msgstr ""
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr ""
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr ""
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr ""
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr ""
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr ""
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr ""
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr ""
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr ""
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr ""
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr ""
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr ""
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr ""
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr ""
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr ""
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr ""
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr ""
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr ""
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr ""
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr ""
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr ""
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr ""
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr ""
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr ""
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr ""
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr ""
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr ""
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr ""
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr ""
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr ""
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr ""
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr ""
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr ""
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Download"
msgstr ""
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr ""
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr ""
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr ""
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
msgid "Not running"
msgstr ""
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
msgid "/root/ Path:"
msgstr ""
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
msgid "Specifies which directory the Files Manager can access"
msgstr ""
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
msgctxt "lowres"
msgid "/root/ Path:"
msgstr ""
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid "Server's port:"
msgstr ""
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
msgstr ""
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr ""
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
msgid "Failed to change cloud storage!"
msgstr ""
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr ""
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
msgid "Theme does not support selected language!"
msgstr ""
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
msgid "Theme cannot be loaded!"
msgstr ""
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
msgstr ""
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr ""
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr ""
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr ""
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr ""
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
msgid "Select directory for Files Manager /root/"
msgstr ""
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr ""
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr ""
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
msgid "<never>"
msgstr ""
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
msgid "Stop server"
msgstr ""
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr ""
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1826,9 +1795,9 @@ msgstr ""
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1847,9 +1816,10 @@ msgstr ""
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1863,7 +1833,7 @@ msgid ""
"further assistance."
msgstr ""
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2168,7 +2138,7 @@ msgid "OpenGL"
msgstr ""
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr ""
@@ -2178,22 +2148,22 @@ msgid "Resolution: %dx%d"
msgstr ""
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr ""
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr ""
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
msgid "Filtering enabled"
msgstr ""
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
msgid "Filtering disabled"
msgstr ""
@@ -2208,7 +2178,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr ""
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr ""
@@ -2364,24 +2334,24 @@ msgstr ""
msgid "Right Click"
msgstr ""
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr ""
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr ""
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr ""
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr ""
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr ""
@@ -2831,8 +2801,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2845,8 +2815,8 @@ msgstr ""
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3017,12 +2987,12 @@ msgid "Move Right"
msgstr ""
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr ""
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr ""
@@ -3311,39 +3281,39 @@ msgid ""
"Please report to the team."
msgstr ""
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
msgid "Invalid file name for saving"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr ""
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr ""
@@ -3431,7 +3401,15 @@ msgid ""
"Use the alternate set of silver cursors instead of the normal golden ones"
msgstr ""
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+msgid "Enable content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:837
msgid "(Autosave)"
msgstr ""
@@ -3449,22 +3427,22 @@ msgstr ""
msgid "Please use an external viewer to open the game's help file: %s"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
msgstr ""
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
diff --git a/po/sv_SE.po b/po/sv_SE.po
index b34a55264b..730822d2b7 100644
--- a/po/sv_SE.po
+++ b/po/sv_SE.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.5.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-09-04 04:39+0200\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\n"
"PO-Revision-Date: 2017-01-06 09:18+0000\n"
"Last-Translator: Petter Sjölund <ignalina@mac.com>\n"
"Language-Team: Swedish <https://translations.scummvm.org/projects/scummvm/"
@@ -59,7 +59,7 @@ msgstr "Uppåt"
#: 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -156,7 +156,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -242,9 +242,8 @@ msgstr ""
"Spelets språk. Den här inställningen omvandlar inte din spanska spelversion "
"till en engelsk"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<standard>"
@@ -266,11 +265,11 @@ msgstr "Plattform:"
msgid "Engine"
msgstr "Motor"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "Grafik"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "GFX"
@@ -283,7 +282,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "Överskrid globala grafikinställningar"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "Ljud"
@@ -296,11 +295,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "Överskrid globala ljudinställningar"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "Volym"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "Volym"
@@ -314,7 +313,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "Överskrid globala volyminställningar"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -327,7 +326,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "Överskrid globala MIDI-inställningar"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -340,11 +339,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "Överskrid globala MT-32 inställningar"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "Sökvägar"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "Sökvägar"
@@ -358,7 +357,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "Sökv. spel:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "Sökv. extra:"
@@ -367,44 +366,44 @@ msgstr "Sökv. extra:"
msgid "Specifies path to additional data used by the game"
msgstr "Bestämmer sökvägen till ytterligare data som spelet använder"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "Sökv. extra:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "Sökv. sparat:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "Bestämmer var dina spardata lagras"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
msgctxt "lowres"
msgid "Save Path:"
msgstr "Sökv. sparat:"
#: gui/editgamedialog.cpp:301 gui/editgamedialog.cpp:398
-#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "Ingen"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "Standard"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "Välj SoundFont"
@@ -412,7 +411,7 @@ msgstr "Välj SoundFont"
msgid "Select additional game directory"
msgstr "Välj en ytterligare spelkatalog"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "Välj katalog för spardata"
@@ -504,7 +503,7 @@ msgstr "Sinus"
msgid "Triangle"
msgstr "Triangel"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "Diverse"
@@ -600,7 +599,7 @@ msgstr "Välj en handling att ställa in"
msgid "~Q~uit"
msgstr "~A~vsluta"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "Avsluta ScummVM"
@@ -608,7 +607,7 @@ msgstr "Avsluta ScummVM"
msgid "A~b~out..."
msgstr "O~m~..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "Om ScummVM"
@@ -685,7 +684,7 @@ msgstr "Sök:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "Ladda spel:"
@@ -695,7 +694,7 @@ msgstr "Ladda spel:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "Ladda"
@@ -805,244 +804,212 @@ msgstr "var 15:e minut"
msgid "every 30 mins"
msgstr "var 30:e minut"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 kHz"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 kHz"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 kHz"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 kHz"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 kHz"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "Ingen"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "Kunde inte verkställa några av grafikinställningarna:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "videoläget kunde inte ändras."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "inställningen för bildförhållandet kunde inte ändras"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "fullskärmsinställningen kunde inte ändras"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
msgid "the filtering setting could not be changed"
msgstr "filterinställningen kunde inte ändras"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr ""
-#: gui/options.cpp:962
+#: gui/options.cpp:936
#, fuzzy
msgid "Touchpad mouse mode"
msgstr "Touchpad-läge inaktiverat."
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr ""
-#: gui/options.cpp:971
+#: gui/options.cpp:945
#, fuzzy
msgid "Pointer Speed:"
msgstr "Hastighet:"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr ""
-#: gui/options.cpp:973
+#: gui/options.cpp:947
#, fuzzy
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "Hastighet:"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr ""
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "Grafikläge:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "Renderingsläge:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "Speciella gitterlägen stödda av vissa spel"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "Fullskärmsläge"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Filter graphics"
msgstr "Filtrera grafik"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr "Använd linjärt filter för att förstora bilden"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "Korrektion av bildförhållande"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "Korrigera bildförhållandet för 320 x 200-spel"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "Föredragen enhet:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "Musikenhet:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr "Bestämmer din föredragna emulator för ljudenhet eller ljudkort"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr "Bestämmer emulator för ljudenhet eller ljudkort"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr "Föredr. enhet:"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "Musikenhet:"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "AdLib-emulator:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "AdLib används för musik i många spel"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr "Ljudfrekvens:"
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"Ett högre värde betecknar bättre ljudkvalitet men stöds kanske inte av ditt "
-"ljudkort"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "GM-enhet:"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr "Bestämmer standardenheten för General MIDI-uppspelning"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "Använd inte General MIDI-musik"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "Använd första tillgängliga enhet"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr "SoundFont stöds endast av vissa ljudkort, FluidSynth och Timidity"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "Blandat AdLib/MIDI-läge"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "Använd både MIDI och AdLib för ljudgeneration"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "MIDI gain:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "MT-32 enhet:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr ""
"Bestämmer standardenheten för Roland MT-32/LAPC1/CM32I/CM64-uppspelning"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "Äkta Roland MT-32 (inaktivera GM-emulation)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
@@ -1050,16 +1017,16 @@ msgstr ""
"Aktivera om du vill använda din verkliga Roland-kompatibla och dator-"
"anslutna ljudenhet"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "Äkta Roland MT-32 (ingen GM-emulation)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr "Roland GS-enhet (aktivera MT-32 mappings)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
@@ -1067,274 +1034,274 @@ msgstr ""
"Aktivera om du vill använda patch mapping för att emulera en MT-32 på en "
"Roland GS-enhet"
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "Använd inte Roland MT-32 musik"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "Undertext och tal:"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "Tal"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "Undertexter"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "Båda"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "Texthastighet:"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "Text och tal:"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "Tal"
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "Text"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "Båda"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "Visa undertexter och spela upp tal"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "Texthastighet:"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "Musikvolym:"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "Musikvolym:"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "Ljud av"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "SFX-volym:"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "Volym för specialeffekter"
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "SFX-volym:"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "Talvolym:"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "Talvolym:"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr ""
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
#, fuzzy
msgid "Control"
msgstr "Kontrollera musen"
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr "FluidSynth inställningar"
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "Sökv. tema:"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "Sökv. tema:"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr ""
"Bestämmer sökväg till andra data som används av alla spel eller ScummVM"
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "Sökv. tillägg:"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "Sökv. tillägg:"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "Diverse"
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "Tema:"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "GUI-rendering:"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "Autospara:"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "Autospara:"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "Tangenter"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "GUI-språk:"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "Språk för ScummVM:s användargränssnitt"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr "Uppdateringskoll:"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr "Hur ofta ScummVM kollar efter uppdateringar"
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr "Kolla nu"
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr "Moln"
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr "Moln"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr "Lager:"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr "Aktivera molnlagring"
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr "<ingen>"
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "Anv. namn:"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr "Användarnamn som används av detta lager"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr "Utnyttjat utrymme:"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr "Utrymme som används av ScummVM:s sparade data på det här lagret"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr "Senast synkad:"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr "När sparade data synkades senast för det här lagret"
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr "Anslut"
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr "Öppna anslutningsguiden för att ansluta ditt molnlagerkonto"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr "Uppdatera"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr ""
"Uppdaterar informationen om aktuellt molnlager (användarnamn och användning)"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Download"
msgstr "Nedladdning"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr "Öppna fönstret för nedladdningshantering"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr "Starta server"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr "Starta lokal webbserver"
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
msgid "Not running"
msgstr "Ej aktiv"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
msgid "/root/ Path:"
msgstr "/root/-sökväg:"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
msgid "Specifies which directory the Files Manager can access"
msgstr "Bestämmer vilken katalog filhanteraren har åtkomst till"
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "/root/-sökväg:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid "Server's port:"
msgstr "Serverport:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
@@ -1342,77 +1309,77 @@ msgstr ""
"Vilken port används av servern\n"
"Serverautorisering är endast tillgänglig med standardporten"
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr "Verkställ"
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
msgid "Failed to change cloud storage!"
msgstr "Kunde inte ändra molnlager!"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr "Ett annat molnlager är redan aktivt."
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
#, fuzzy
msgid "Theme does not support selected language!"
msgstr "Aktuell plugin kan inte spara spel"
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
#, fuzzy
msgid "Theme cannot be loaded!"
msgstr "Spelet laddades EJ"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
msgstr ""
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr ""
"Det går inte att skriva till den valda katalogen. Var god välj en annan."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "Välj katalog för GUI-teman"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "Välj katalog för extra filer"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "Välj katalog för tillägg"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
msgid "Select directory for Files Manager /root/"
msgstr "Välj katalog för filhanterarens /root/"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr "%llu bytes"
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr "<nu direkt>"
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
msgid "<never>"
msgstr "<aldrig>"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
msgid "Stop server"
msgstr "Stoppa server"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr "Stoppa lokal webbserver"
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1880,9 +1847,9 @@ msgstr "Åte~r~vänd till launcher"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1901,9 +1868,10 @@ msgstr "Spara spelet:"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1920,7 +1888,7 @@ msgstr ""
"hänvisa till README-filen för information och instruktioner för att få "
"ytterligare assistens."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2252,7 +2220,7 @@ msgid "OpenGL"
msgstr "OpenGL"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "Fönsterläge"
@@ -2262,22 +2230,22 @@ msgid "Resolution: %dx%d"
msgstr "Upplösning: %dx%d"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "Korrektion av bildförhållande på"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "Korrektion av bildförhållande av"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
msgid "Filtering enabled"
msgstr "Filtrering aktiverat"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
msgid "Filtering disabled"
msgstr "Filtrering är inaktiverat"
@@ -2292,7 +2260,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "Normalt (ingen skalning)"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "Aktivt grafikfilter:"
@@ -2448,24 +2416,24 @@ msgstr "Mittenklick"
msgid "Right Click"
msgstr "Högerklick"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "Göm ScummVM"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "Göm övriga"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "Visa alla"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "Fönster"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "Minimera"
@@ -2929,8 +2897,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2943,8 +2911,8 @@ msgstr "Ladda sparfil:"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3134,12 +3102,12 @@ msgid "Move Right"
msgstr "Flytta till höger"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr "Sväng vänster"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr "Sväng höger"
@@ -3477,39 +3445,39 @@ msgstr ""
"\n"
"Var god rapportera till teamet."
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
msgid "Invalid file name for saving"
msgstr "Ogiltigt namn på sparfilen"
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr "Upp/Zooma in/Gå framåt/Öppna dörrar"
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr "Ned/Zooma ut"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr "Visa/dölj inventarium"
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr "Visa/dölj biochip"
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr "Handling/Välj"
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr "Aktivera centrerad dataskärm"
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr "Visa/dölj informationsskärm"
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr "Visa/dölj pausmeny"
@@ -3601,7 +3569,16 @@ msgid ""
"Use the alternate set of silver cursors instead of the normal golden ones"
msgstr "Använd muspekare i silver istället för de vanliga guldfärgade"
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+#, fuzzy
+msgid "Enable content censoring"
+msgstr "Aktivera flytande pekare"
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:837
#, fuzzy
msgid "(Autosave)"
msgstr "Autospara:"
@@ -3620,22 +3597,22 @@ msgstr ""
msgid "Please use an external viewer to open the game's help file: %s"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
msgstr ""
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4650,6 +4627,31 @@ msgstr ""
"till version %d. Det krävs en uppdaterad version av spelmotorn för att "
"använda den här sparfilen."
+#~ msgid "8 kHz"
+#~ msgstr "8 kHz"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 kHz"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 kHz"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 kHz"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 kHz"
+
+#~ msgid "Output rate:"
+#~ msgstr "Ljudfrekvens:"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "Ett högre värde betecknar bättre ljudkvalitet men stöds kanske inte av "
+#~ "ditt ljudkort"
+
#~ 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."
diff --git a/po/uk_UA.po b/po/uk_UA.po
index 28cedfdb5c..af8c194737 100644
--- a/po/uk_UA.po
+++ b/po/uk_UA.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.9.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-09-04 04:39+0200\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\n"
"PO-Revision-Date: 2017-06-14 14:55+0000\n"
"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n"
"Language-Team: Ukrainian <https://translations.scummvm.org/projects/scummvm/"
@@ -60,7 +60,7 @@ 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -157,7 +157,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -243,9 +243,8 @@ msgstr ""
"¼ÞÒÐ ÓàØ. ·ÜöÝÐ æìÞÓÞ ÝÐÛÐèâãÒÐÝÝï ÝÕ ßÕàÕâÒÞàØâì Óàã ÐÝÓÛöÙáìÚÞî ÝÐ "
"ãÚàÐ÷ÝáìÚã"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<×Ð ãÜÞÒçÐÝÝïÜ>"
@@ -267,11 +266,11 @@ msgstr "¿ÛÐâäÞàÜÐ:"
msgid "Engine"
msgstr "´ÒØÖÞÚ"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "³àÐäöÚÐ"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "³àä"
@@ -284,7 +283,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "¿ÕàÕÚàØâØ ÓÛÞÑÐÛìÝö ÝÐÛÐèâãÒÐÝÝï ÓàÐäöÚØ"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "°ãÔöÞ"
@@ -297,11 +296,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "¿ÕàÕÚàØâØ ÓÛÞÑÐÛìÝö ÝÐÛÐèâãÒÐÝÝï ÐãÔöÞ"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "³ãçÝöáâì"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "³ãçÝ"
@@ -315,7 +314,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "¿ÕàÕÚàØâØ ÓÛÞÑÐÛìÝö ÝÐÛÐèâãÒÐÝÝï ÓãçÝÞáâö"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -328,7 +327,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "¿ÕàÕÚàØâØ ÓÛÞÑÐÛìÝö ÝÐÛÐèâãÒÐÝÝï MIDI"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -341,11 +340,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "¿ÕàÕÚàØâØ ÓÛÞÑÐÛìÝö ÝÐÛÐèâãÒÐÝÝï MT-32"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "ÈÛïåØ"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "ÈÛïåØ"
@@ -359,7 +358,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "ÈÛïå ÔÞ ÓàØ:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "´ÞÔÐâÚ. èÛïå:"
@@ -368,44 +367,44 @@ msgstr "´ÞÔÐâÚ. èÛïå:"
msgid "Specifies path to additional data used by the game"
msgstr "²ÚÐ×ãô èÛïå ÔÞ ÔÞÔÐâÚÞÒØå äÐÙÛöÒ ÔÐÝØå ÔÛï ÓàØ"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "´ÞÔ. èÛïå:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "ÈÛïå ×ÑÕà.:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "²ÚÐ×ãô èÛïå ÔÞ ×ÑÕàÕÖÕÝØå öÓÞà"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
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:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "½Õ ×ÐÒÔÐÝÞ"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "·Ð ãÜÞÒçÐÝÝïÜ"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "²ØÑÕàöâì SoundFont"
@@ -413,7 +412,7 @@ msgstr "²ØÑÕàöâì SoundFont"
msgid "Select additional game directory"
msgstr "²ØÑÕàöâì ÔÞÔÐâÚÞÒã ßÐßÚã ÓàØ"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "²ØÑÕàöâì ßÐßÚã ÔÛï ×ÑÕàÕÖÕÝØå öÓÞà"
@@ -506,7 +505,7 @@ msgstr "ÁØÝãáÞ÷ÔÐ"
msgid "Triangle"
msgstr "ÂàØÚãâÝØÚ"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "Àö×ÝÕ"
@@ -601,7 +600,7 @@ msgstr "²ØÑÕàöâì Ôöî ÔÛï ßàØ×ÝÐçÕÝÝï"
msgid "~Q~uit"
msgstr "~²~ØåöÔ"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "²ØåöÔ ×ö ScummVM"
@@ -609,7 +608,7 @@ msgstr "²ØåöÔ ×ö ScummVM"
msgid "A~b~out..."
msgstr "¿àÞ ß~à~ÞÓàÐÜã..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "¿àÞ ScummVM"
@@ -686,7 +685,7 @@ msgstr "¿ÞèãÚ:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "·ÐÒÐÝâÐÖØâØ Óàã:"
@@ -696,7 +695,7 @@ msgstr "·ÐÒÐÝâÐÖØâØ Óàã:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "·ÐÒÐÝâÐÖØâØ"
@@ -804,243 +803,211 @@ msgstr "ÚÞÖÝö 15 åÒ"
msgid "every 30 mins"
msgstr "ÚÞÖÝö 30 åÒ"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 Ú³æ"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 Ú³æ"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 Ú³æ"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 Ú³æ"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 Ú³æ"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "½Õ ×ÐÔÐÝØÙ"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "½Õ ÒÔÐÛÞáï ×ÐáâÞáãÒÐâØ ÔÕïÚö ×ö ×ÜöÝ ÓàÐäöçÝØå ÝÐÛÐèâãÒÐÝì:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "ÝÕ ÒÔÐÛÞáï ×ÜöÝØâØ ÓàÐäöçÝØÙ àÕÖØÜ."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "ÝÕ ÒÔÐÛÞáï ×ÜöÝØâØ àÕÖØÜ ÚÞàÕÚæö÷ áßöÒÒöÔÝÞèÕÝÝï áâÞàöÝ"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "ÝÕ ÒÔÐÛÞáï ×ÜöÝØâØ àÕÖØÜ ßÞÒÝÞÓÞ ÕÚàÐÝã"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
msgid "the filtering setting could not be changed"
msgstr "ÝÕ ÒÔÐÛÞáï ×ÜöÝØâØ àÕÖØÜ äöÛìâàãÒÐÝÝï"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr "¿ÞÚÐ×ãÒÐâØ ÕÚàÐÝÝÕ ÚÕàãÒÐÝÝï"
-#: gui/options.cpp:962
+#: gui/options.cpp:936
msgid "Touchpad mouse mode"
msgstr "ÀÕÖØÜ âÐçßÐÔã"
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr "¿ÞÜöÝïâØ ÜöáæïÜØ ÚÝÞßÚØ ¼ÕÝî ö ½Ð×ÐÔ"
-#: gui/options.cpp:971
+#: gui/options.cpp:945
msgid "Pointer Speed:"
msgstr "ÈÒØÔÚöáâì ÒÚÐ×öÒÝØÚÐ:"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr "ÃßàÐÒÛöÝÝï èÒØÔÚöáâî ÒÚÐ×öÒÝØÚÐ ÜØèö/ÔÖÞÙáâØÚÐ"
-#: gui/options.cpp:973
+#: gui/options.cpp:947
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "ÈÒØÔÚöáâì ÒÚÐ×öÒÝØÚÐ:"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr "¼ÕàâÒÐ ×ÞÝÐ ÔÖÞÙáâØÚÐ:"
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr "¼ÕàâÒÐ ×ÞÝÐ ÐÝÐÛÞÓÞÒÞÓÞ ÔÖÞÙáâØÚÐ"
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr "¼ÕàâÒÐ ×ÞÝÐ ÔÖÞÙáâØÚÐ:"
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr "°ßÐàÐâÝØÙ èÕÙÔÕà:"
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr "Àö×Ýö ÐßÐàÐâÝö èÕÙÔÕàØ ÔÐîâì àö×Ýö Òö×ãÐÛìÝö ÕäÕÚâØ"
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr "°ßÐàÐâÝØÙ èÕÙÔÕà:"
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr "Àö×Ýö èÕÙÔÕàØ ÔÐîâì àö×Ýö Òö×ãÐÛìÝö ÕäÕÚâØ"
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "³àÐäöçÝ. àÕÖØÜ:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "ÀÕÖØÜ àÐáâàãÒ.:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "ÁßÕæöÐÛìÝö àÕÖØÜØ àÐáâàãÒÐÝÝï, ïÚö ßöÔâàØÜãîâì ÔÕïÚö öÓàØ"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "¿ÞÒÝÞÕÚàÐÝÝØÙ àÕÖØÜ"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Filter graphics"
msgstr "ÄöÛìâàãÒÐÝÝï ÓàÐäöÚØ"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr "²ØÚÞàØáâÞÒãÒÐâØ ÛöÝöÙÝã äöÛìâàÐæöî ÔÛï ×ÑöÛìèÕÝÝï ÓàÐäöÚØ"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "ºÞàÕÚæöï áßöÒÒöÔÝÞèÕÝÝï áâÞàöÝ"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "ºÞàØÓãÒÐâØ áßöÒÒöÔÝÞèÕÝÝï áâÞàöÝ ÔÛï öÓÞà × ÓàÐäöÚÞî 320x200"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "ÃßÞÔÞÑÐÝØÙ ßàØáâàöÙ:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "¼ã×Øç. ßàØáâàöÙ:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr "²ÚÐ×ãô ãßÞÔÞÑÐÝØÙ ×ÒãÚÞÒØÙ ßàØáâàöÙ ÐÑÞ ÕÜãÛïâÞà ×ÒãÚÞÒÞ÷ ÚÐàâØ"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr "²ÚÐ×ãô ÒØåöÔÝØÙ ×ÒãÚÞÒØÙ ßàØáâàöÙ ÐÑÞ ÕÜãÛïâÞà ×ÒãÚÞÒÞ÷ ÚÐàâØ"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr "ÃßÞÔÞÑ. ßàØáâàöÙ:"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "¼ã×ØçÝØÙ ßàØáâàöÙ:"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "µÜãÛïâÞà AdLib:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "·ÒãÚÞÒÐ ÚÐàâÐ AdLib ÒØÚÞàØáâÞÒãôâìáï ÑÐÓÐâìÜÐ öÓàÐÜØ ÔÛï Üã×ØÚØ"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr "²ØåöÔÝÐ çÐáâÞâÐ:"
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"²ÕÛØÚö ×ÝÐçÕÝÝï ÝÐÔÐîâì ÚàÐéã ïÚöáâì ×ÒãÚã, ßàÞâÕ ÒÞÝØ ÜÞÖãâì ÝÕ "
-"ßöÔâàØÜãÒÐâØáï ÒÐèÞî ×ÒãÚÞÒÞî ÚÐàâÞî"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "¿àØáâàöÙ GM:"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr "²ÚÐ×ãô ÒØåöÔÝØÙ ×ÒãÚÞÒØÙ ßàØáâàöÙ ÔÛï General MIDI"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "½Õ ÒØÚÞàØáâÞÒãÒÐâØ Üã×ØÚã General MIDI"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "²ØÚÞàØáâÞÒãÒÐâØ ßÕàèØÙ ÝÐïÒÝØÙ ßàØáâàöÙ"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr ""
"SoundFont ßöÔâàØÜãôâìáï ÔÕïÚØÜØ ×ÒãÚÞÒØÜØ ÚÐàâÐÜØ, FluidSynth âÐ Timidity"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "·ÜöèÐÝØÙ àÕÖØÜ AdLib/MIDI"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "²ØÚÞàØáâÞÒãÒÐâØ ö MIDI ö AdLib ÔÛï ÓÕÝÕàÐæö÷ ×ÒãÚã"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "¿ÞáØÛÕÝÝï MIDI:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "¿àØáâàöÙ MT-32:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr ""
"²ÚÐ×ãô ×ÒãÚÞÒØÙ ßàØáâàöÙ ×Ð ×ÐÜÞÒçÕÝÝïÜ ÔÛï ÒØÒÞÔã ÝÐ Roland MT-32/LAPC1/"
"CM32l/CM64"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "ÁßàÐÒÖÝöÙ Roland MT-32 (ÒØÜÚÝãâØ ÕÜãÛïæØî GM)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
@@ -1048,16 +1015,16 @@ msgstr ""
"²öÔÜöâìâÕ, ïÚéÞ ã ÒÐá ßöÔÚÛîçÕÝÞ Roland-áãÜöáÝØÙ ×ÒãÚÞÒØÙ ßàØáâàöÙ ö ÒØ "
"åÞçÕâÕ ÙÞÓÞ ÒØÚÞàØáâÞÒãÒÐâØ"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "ÁßàÐÒÖÝöÙ Roland MT-32 (ÒØÜÚÝãâØ ÕÜãÛïæØî GM)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr "ÀÕÖØÜ Roland GS (ÒÒöÜÚÝãâØ ÜÐßÛÕÝÝï MT-32)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
@@ -1065,276 +1032,276 @@ msgstr ""
"²öÔÜöâìâÕ, ïÚéÞ åÞçÕâÕ ÒÚÛîçØâØ ÛÐâÚØ ÔÛï öÝáâàãÜÕÝâöÒ ÔÛï ÕÜãÛïæö÷ MT-32 ÝÐ "
"Roland"
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "½Õ ÒØÚÞàØáâÞÒãÒÐâØ Üã×ØÚã ÔÛï Roland MT-32"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "ÂÕÚáâ ö Þ×ÒãçÚÐ:"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "¾×ÒãçÚÐ"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "ÁãÑâØâàØ"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "²áÕ"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "ÈÒØÔ. áãÑâØâàöÒ:"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "ÂÕÚáâ ö Þ×ÒãçÚÐ:"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "¾×Ò"
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "狄"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "²áÕ"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "¿ÞÚÐ×ãÒÐâØ áãÑâØâàØ ö ÒöÔâÒÞàîÒÐâØ ÜÞÒã"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "ÈÒØÔ. áãÑâØâàöÒ:"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "³ãçÝöáâì Üã×ØÚØ:"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "³ãçÝöáâì Üã×ØÚØ:"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "²ØÜÚÝãâØ ÒáÕ"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "³ãçÝöáâì ÕäÕÚâöÒ:"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "³ãçÝöáâì áßÕæöÐÛìÝØå ×ÒãÚÞÒØå ÕäÕÚâöÒ"
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "³ãçÝ. ÕäÕÚâöÒ:"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "³ãçÝöáâì Þ×ÒãçÚØ:"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "³ãçÝ. Þ×ÒãçÚØ:"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr "ÈÕÙÔÕà"
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
msgid "Control"
msgstr "ºÕàãÒÐÝÝï"
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr "½ÐÛÐèâãÒÐÝÝï FluidSynth"
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "ÈÛïå ÔÞ âÕÜ:"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "ÈÛïå ÔÞ âÕÜ:"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr ""
"²ÚÐ×ãô èÛïå ÔÞ ÔÞÔÐâÚÞÒØå äÐÙÛöÒ ÔÐÝØå, ïÚö ÒØÚÞàØáâÞÒãîâìáï ãáöÜÐ öÓàÐÜØ "
"ÐÑÞ ScummVM"
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "ÈÛïå ÔÞ ÒâãÛÚöÒ:"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "ÈÛïå ÔÞ ÒâãÛÚöÒ:"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "Àö×ÝÕ"
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "ÂÕÜÐ:"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "ÀÐáâÕà. GUI:"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "°ÒâÞ×ÑÕàÕÖÕÝÝï:"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "°ÒâÞ×ÑÕàÕÖ.:"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "ºÛÐÒöèö"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "¼ÞÒÐ öÝâÕàä.:"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "¼ÞÒÐ ÓàÐäöçÝÞÓÞ öÝâÕàäÕÙáã ScummVM"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr "¿ÕàÕÒöàïâØ ÞÝÞÒÛÕÝÝï:"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr "ÏÚ çÐáâÞ ßÕàÕÒöàïâØ ÞÝÞÒÛÕÝÝï ScummVM"
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr "¿ÕàÕÒöàØâØ ×ÐàÐ×"
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr "ÅÜÐàÐ"
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr "ÅÜÐàÐ"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr "ÁÕàÕÔÞÒØéÕ:"
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr "°ÚâØÒÝÕ åÜÐàÝÕ áÕàÕÔÞÒØéÕ"
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr "<ÝÕÜÐô>"
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "ºÞàØáâãÒÐç:"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr "ºÞàØáâãÒÐç ÔÛï æìÞÓÞ áÕàÕÔÞÒØéÐ"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr "²ØÚÞàØáâÐÝØÙ ÞÑ'ôÜ:"
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr ""
"¾Ñ'ôÜ, ÒØÚÞàØáâÐÝØÙ ÔÛï ×ÑÕàÕÖÕÝØå áâÐÝöÒ öÓÞà ScummVM ÝÐ æìÞÜã áÕàÕÔÞÒØéö"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr "¾áâÐÝÝï áØÝåàÞÝØ×Ðæöï:"
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr "ÇÐá, ÚÞÛØ ÑãÛÞ ×àÞÑÛÕÝÞ ÞáâÐÝÝî áØÝåàÞÝØ×Ðæöî × æØÜ áÕàÕÔÞÒØéÕÜ"
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr "·ÐÛãçØâØáì"
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr ""
"ÀÞ×ßÞçÐâØ ÚàÞÚØ ÔÛï ×ÐÛãçÕÝÝï ÔÞ ÒÐèÞÓÞ ÞÑÛöÚÞÒÞÓÞ ×ÐáÞÑã ÝÐ åÜÐàÝÞÜã "
"áÕàÕÔÞÒØéö"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr "¿ÞÝÞÒØâØ"
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr "¿ÞÝÞÒØâØ ßÞâÞçÝö ÔÐÝö åÜÐàÝÞÓÞ áÕàÕÔÞÒØéÐ (öÜ'ï ÚÞàØáâãÒÐçÐ âÐ ÞÑ'ôÜ)"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Download"
msgstr "·ÐÒÐÝâÐÖØâØ"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr "²öÔÚàØâØ ÚÕàãÒÐÝÝï ×ÐÒÐÝâÐÖÕÝÝïÜØ"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr "·ÐßãáâØâØ áÕàÒÕà"
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr "·ÐßãáÚÐô ÛÞÚÐÛìÝØÙ ÒÕÑ-áÕàÒÕà"
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
msgid "Not running"
msgstr "²ØÜÚÝÕÝÞ"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
msgid "/root/ Path:"
msgstr "ÈÛïå /root/:"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
msgid "Specifies which directory the Files Manager can access"
msgstr "²ÚÐ×ãô èÛïå, ÔÞ ïÚÞÓÞ ÜÞÖÝÐ ÜÐâØ ÔÞáâãß çÕàÕ× ºÕàãÒÐÝÝï äÐÙÛÐÜØ"
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "ºÞàöÝÝØÙ èÛïå:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid "Server's port:"
msgstr "¿Þàâ áÕàÒÕàÐ:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
@@ -1342,27 +1309,27 @@ msgstr ""
"¿Þàâ, ïÚØÙ ÑãÔÕ ÒØÚÞàØáâÐÝÞ áÕàÒÕàÞÜ\n"
"°ãâÕÝâØäöÚÐæØï × áÕàÒÕàÞÜ ÝÕÜÞÖÛØÒÐ ÔÛï ßÞàâöÒ, öÝèØå ÒöÔ ×ÐÜÞÒçãÒÐÝÞÓÞ"
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr "·ÐáâÞáãÒÐâØ"
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
msgid "Failed to change cloud storage!"
msgstr "½Õ ÒÔÐÛÞáï ×ÜöÝØâØ åÜÐàÝÕ áÕàÕÔÞÒØéÕ!"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr "¦ÝèÕ åÜÐàÝÕ áÕàÕÔÞÒØéÕ ÒÖÕ ÐÚâØÒÝÕ."
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
msgid "Theme does not support selected language!"
msgstr "ÂÕÜÐ ÝÕ ßöÔâàØÜãô ÞÑàÐÝÞ÷ ÜÞÒØ!"
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
msgid "Theme cannot be loaded!"
msgstr "ÂÕÜã ÝÕ ÑãÛÞ ×ÐÒÐÝâÐÖÕÝÞ!"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
@@ -1370,48 +1337,48 @@ msgstr ""
"\n"
"Àö×Ýö ÝÐÛÐèâãÒÐÝÝï ÑãÔÕ ßÞÝÞÒÛÕÝÞ."
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr "½Õ ÜÞÖã ßØáÐâØ ã ÒØÑàÐÝã ßÐßÚã. ±ãÔì ÛÐáÚÐ, ÒÚÐÖöâì öÝèã."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "²ØÑÕàöâì ßÐßÚã ÔÛï âÕÜ GUI"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "²ØÑÕàöâì ßÐßÚã × ÔÞÔÐâÚÞÒØÜØ äÐÙÛÐÜØ"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "²ØÑÕàöâì ßÐßÚã ×ö ÒâãÛÚÐÜØ"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
msgid "Select directory for Files Manager /root/"
msgstr "²ØÑÕàöâì ßÐßÚã /root/ ÔÛï ºÕàãÒÐÝÝï äÐÙÛÐÜØ"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr "%llu ÑÐÙâ"
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr "<×ÐàÐ×>"
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
msgid "<never>"
msgstr "<ÝöÚÞÛØ>"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
msgid "Stop server"
msgstr "²ØÜÚÝãâØ áÕàÒÕà"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr "²ØÜÚÝãâØ ÛÞÚÐÛìÝØÙ ÒÕÑ-áÕàÒÕà"
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1877,9 +1844,9 @@ msgstr "~¿~ÞÒÕà.Ò ÓÞÛÞÒÝÕ ÜÕÝî"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1898,9 +1865,10 @@ msgstr "·ÑÕàÕÓâØ Óàã:"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1917,7 +1885,7 @@ msgstr ""
"README ÔÛï ÞáÝÞÒÝÞ÷ öÝäÞàÜÐæö÷, Ð âÐÚÞÖ öÝáâàãÚæöÙ, ïÚ ÞâàØÜÐâØ ßÞÔÐÛìèã "
"ÔÞßÞÜÞÓã."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2251,7 +2219,7 @@ msgid "OpenGL"
msgstr "OpenGL"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "²öÚÞÝÝØÙ àÕÖØÜ"
@@ -2261,22 +2229,22 @@ msgid "Resolution: %dx%d"
msgstr "ÀÞ×ÓÐÛãÖÕÝÝï %dx%d"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "ºÞàÕÚæöî áßöÒÒöÔÝÞèÕÝÝï áâÞàöÝ ãÒöÜÚÝÕÝÞ"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "ºÞàÕÚæöî áßöÒÒöÔÝÞèÕÝÝï áâÞàöÝ ÒØÜÚÝÕÝÞ"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
msgid "Filtering enabled"
msgstr "ÄöÛìâàãÒÐÝÝï ãÒöÜÚÝÕÝÞ"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
msgid "Filtering disabled"
msgstr "ÄöÛìâàãÒÐÝÝï ÒØÜÚÝÕÝÞ"
@@ -2291,7 +2259,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "±Õ× ×ÑöÛìèÕÝÝï"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "¿ÞâÞçÝØÙ ÓàÐäöçÝØÙ äöÛìâà:"
@@ -2447,24 +2415,24 @@ msgstr "ÁÕàÕÔÝöÙ ÚÛöÚ"
msgid "Right Click"
msgstr "¿àÐÒØÙ ÚÛöÚ"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "ÁåÞÒÐâØ ScummVM"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "ÁåÞÒÐâØ ¦Ýèö"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "¿ÞÚÐ×ÐâØ ²áÕ"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "²öÚÝÞ"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "¼öÝöÜö×ãÒÐâØ"
@@ -2928,8 +2896,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2942,8 +2910,8 @@ msgstr "²öÔÝÞÒØâØ Óàã:"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3129,12 +3097,12 @@ msgid "Move Right"
msgstr "ÀãåÐâØáì ÝÐßàÐÒÞ"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr "¿ÞÒÕàÝãâØáï ÝÐÛöÒÞ"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr "¿ÞÒÕàÝãâØáï ÝÐßàÐÒÞ"
@@ -3468,39 +3436,39 @@ msgstr ""
"\n"
"±ãÔì ÛÐáÚÐ, ßÞÒöÔÞÜâÕ ßàÞ æÕ ÚÞÜÐÝÔö."
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
msgid "Invalid file name for saving"
msgstr "½ÕßàÐÒØÛìÝÕ öÜ'ï äÐÙÛã ÔÛï ×ÐßØáã"
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr "´ÞÓÞàØ/·ÜÕÝèØâØ ÜÐáèâÐÑ/²ßÕàÕÔ/²öÔçØÝØâØ ÔÒÕàö"
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr "´ÞÝØ×ã/·ÑöÛ. ÜÐáèâÐÑ"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr "¿ÞÚÐ×ÐâØ/ÁåÞÒÐâØ öÝÒÕÝâÐà"
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr "¿ÞÚÐ×ÐâØ/ÁåÞÒÐâØ ÑöÞçöß"
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr "´öï/²ØÑöà"
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr "¿ÕàÕÜÚÝãâØ ßÞÚÐ×ãÒÐÝÝï ÔÐÝØå Ò æÕÝâàö ÕÚàÐÝã"
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr "¿ÞÚÐ×ÐâØ/ÁåÞÒÐâØ öÝäÞÕÚàÐÝ"
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr "¿ÞÚÐ×ãÒÐâØ/ÁåÞÒÐâØ ÜÕÝî ßÐã×Ø"
@@ -3594,7 +3562,16 @@ msgstr ""
"²ØÚÞàØáâÞÒãÒÐâØ ÐÛìâÕàÝÐâØÒÝØÙ ÝÐÑöà áàöÑÝØå ÚãàáÞàöÒ, ×ÐÜöáâì ×ÒØçÐÙÝØå "
"×ÞÛÞâØå"
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+#, fuzzy
+msgid "Enable content censoring"
+msgstr "ÃÒöÜÚÝãâØ ßÛÐÒÐîçö ÚãàáÞàØ"
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:837
msgid "(Autosave)"
msgstr "(°ÒâÞ×ÑÕàÕÖÕÝÝï)"
@@ -3619,16 +3596,16 @@ msgstr ""
"±ãÔì-ÛÐáÚÐ, ÒØÚÞàØáâÞÒãÙâÕ öÝèã ßàÞÓàÐÜã ÔÛï ßÕàÕÓÛïÔÐÝÝï äÐÙÛã ÔÞßÞÜÞÓØ "
"öÓàØ: %s"
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr "ÄÞàÜÐâ æìÞÓÞ äÐÙÛã ×ÑÕàÕÖÕÝÞ÷ ÓàØ ×ÐáâÐàöÛØÙ, ÝÕ ÜÞÖã ÙÞÓÞ ßàÞçØâÐâØ"
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr "²Õàáöï äÐÙÛã ×ÑÕàÕÖÕÝÝï %d, ÐÛÕ ÜÐÚáØÜÐÛìÝÞ ßöÔàâØÜãôâìáï %0d"
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
@@ -3636,7 +3613,7 @@ msgstr ""
"ÆÕÙ äÐÙÛ ×ö ×ÑÕàÕÖÕÝÞî ÓàÞî ÑãÛÞ áâÒÞàÕÝÞ ã öÝèöÙ ÒÕàáö÷ ÓàØ, ÝÕ ÜÞÖã ÙÞÓÞ "
"ßàÞçØâÐâØ"
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4653,6 +4630,31 @@ msgstr ""
"ÒÕàáöî ÔÞ %d. ²ÐÜ ßÞâàöÑÝÐ ßÞÝÞÒÛÕÝÐ ÒÕàáöï ScummVM ÔÛï ×ÐÒÐÝâÐÖÕÝÝï æìÞÓÞ "
"äÐÙÛã."
+#~ msgid "8 kHz"
+#~ msgstr "8 Ú³æ"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 Ú³æ"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 Ú³æ"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 Ú³æ"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 Ú³æ"
+
+#~ msgid "Output rate:"
+#~ msgstr "²ØåöÔÝÐ çÐáâÞâÐ:"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "²ÕÛØÚö ×ÝÐçÕÝÝï ÝÐÔÐîâì ÚàÐéã ïÚöáâì ×ÒãÚã, ßàÞâÕ ÒÞÝØ ÜÞÖãâì ÝÕ "
+#~ "ßöÔâàØÜãÒÐâØáï ÒÐèÞî ×ÒãÚÞÒÞî ÚÐàâÞî"
+
#~ 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."
diff --git a/po/zh-Latn_CN.po b/po/zh-Latn_CN.po
index bc013e3fd1..5c93012c1a 100644
--- a/po/zh-Latn_CN.po
+++ b/po/zh-Latn_CN.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.9.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n"
-"POT-Creation-Date: 2017-09-04 04:39+0200\n"
+"POT-Creation-Date: 2017-09-24 04:40+0200\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/"
@@ -58,7 +58,7 @@ msgstr "ShangYiJi"
#: 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:1714 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69
+#: gui/options.cpp:1680 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:719 gui/saveload-dialog.cpp:1113
@@ -152,7 +152,7 @@ msgstr ""
#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293
#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:525
-#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1716
+#: gui/launcher.cpp:529 gui/massadd.cpp:92 gui/options.cpp:1682
#: gui/saveload-dialog.cpp:1114 engines/engine.cpp:477 engines/engine.cpp:488
#: backends/platform/wii/options.cpp:47
#: backends/platform/wince/CELauncherDialog.cpp:54
@@ -235,9 +235,8 @@ msgid ""
msgstr ""
"Youxi de Yuyan. CiXiang buhui jiang Yige XibanyaYu Banben Zhuancheng Yingwen"
-#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:123
-#: gui/options.cpp:1023 gui/options.cpp:1036 gui/options.cpp:1609
-#: audio/null.cpp:41
+#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:997
+#: gui/options.cpp:1010 gui/options.cpp:1575 audio/null.cpp:41
msgid "<default>"
msgstr "<Moren>"
@@ -259,11 +258,11 @@ msgstr "Pingtai:"
msgid "Engine"
msgstr "Yinqing"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "Graphics"
msgstr "Tuxiang"
-#: gui/editgamedialog.cpp:184 gui/options.cpp:1379 gui/options.cpp:1464
+#: gui/editgamedialog.cpp:184 gui/options.cpp:1345 gui/options.cpp:1430
msgid "GFX"
msgstr "GFX"
@@ -276,7 +275,7 @@ msgctxt "lowres"
msgid "Override global graphic settings"
msgstr "Fugai Quanju Tuxiang Shezhi"
-#: gui/editgamedialog.cpp:196 gui/options.cpp:1491
+#: gui/editgamedialog.cpp:196 gui/options.cpp:1457
msgid "Audio"
msgstr "Yinpin"
@@ -289,11 +288,11 @@ msgctxt "lowres"
msgid "Override global audio settings"
msgstr "Fugai QUanju Yinpin Shezhi"
-#: gui/editgamedialog.cpp:210 gui/options.cpp:1496
+#: gui/editgamedialog.cpp:210 gui/options.cpp:1462
msgid "Volume"
msgstr "Yinliang"
-#: gui/editgamedialog.cpp:212 gui/options.cpp:1498
+#: gui/editgamedialog.cpp:212 gui/options.cpp:1464
msgctxt "lowres"
msgid "Volume"
msgstr "YinLiang"
@@ -307,7 +306,7 @@ msgctxt "lowres"
msgid "Override global volume settings"
msgstr "Fugai Quanju YinLiang Shezhi"
-#: gui/editgamedialog.cpp:226 gui/options.cpp:1506
+#: gui/editgamedialog.cpp:226 gui/options.cpp:1472
msgid "MIDI"
msgstr "MIDI"
@@ -320,7 +319,7 @@ msgctxt "lowres"
msgid "Override global MIDI settings"
msgstr "Fugai Quanju MIDI Shezhi"
-#: gui/editgamedialog.cpp:241 gui/options.cpp:1516
+#: gui/editgamedialog.cpp:241 gui/options.cpp:1482
msgid "MT-32"
msgstr "MT-32"
@@ -333,11 +332,11 @@ msgctxt "lowres"
msgid "Override global MT-32 settings"
msgstr "Fugai Quanju MT-32 Shezhi"
-#: gui/editgamedialog.cpp:255 gui/options.cpp:1523
+#: gui/editgamedialog.cpp:255 gui/options.cpp:1489
msgid "Paths"
msgstr "Lujing"
-#: gui/editgamedialog.cpp:257 gui/options.cpp:1525
+#: gui/editgamedialog.cpp:257 gui/options.cpp:1491
msgctxt "lowres"
msgid "Paths"
msgstr "Lujing"
@@ -351,7 +350,7 @@ msgctxt "lowres"
msgid "Game Path:"
msgstr "Youxi Lujing:"
-#: gui/editgamedialog.cpp:271 gui/options.cpp:1549
+#: gui/editgamedialog.cpp:271 gui/options.cpp:1515
msgid "Extra Path:"
msgstr "Qita Lujing:"
@@ -360,44 +359,44 @@ msgstr "Qita Lujing:"
msgid "Specifies path to additional data used by the game"
msgstr "Zhiding Youxi Suoyong de Shuju de Cunfang Lujing"
-#: gui/editgamedialog.cpp:273 gui/options.cpp:1551
+#: gui/editgamedialog.cpp:273 gui/options.cpp:1517
msgctxt "lowres"
msgid "Extra Path:"
msgstr "Qita Lujing:"
-#: gui/editgamedialog.cpp:280 gui/options.cpp:1533
+#: gui/editgamedialog.cpp:280 gui/options.cpp:1499
msgid "Save Path:"
msgstr "Baocun Lujing:"
#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282
-#: gui/editgamedialog.cpp:283 gui/options.cpp:1533 gui/options.cpp:1535
-#: gui/options.cpp:1536
+#: gui/editgamedialog.cpp:283 gui/options.cpp:1499 gui/options.cpp:1501
+#: gui/options.cpp:1502
msgid "Specifies where your saved games are put"
msgstr "Zhiding Nin Jiang Youxi Baocun Zai le Nali"
-#: gui/editgamedialog.cpp:282 gui/options.cpp:1535
+#: gui/editgamedialog.cpp:282 gui/options.cpp:1501
msgctxt "lowres"
msgid "Save Path:"
msgstr "Baocun Lujing:"
#: gui/editgamedialog.cpp:301 gui/editgamedialog.cpp:398
-#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1544
-#: gui/options.cpp:1552 gui/options.cpp:1561 gui/options.cpp:1741
-#: gui/options.cpp:1747 gui/options.cpp:1755 gui/options.cpp:1778
-#: gui/options.cpp:1811 gui/options.cpp:1817 gui/options.cpp:1824
-#: gui/options.cpp:1832 gui/options.cpp:2027 gui/options.cpp:2030
-#: gui/options.cpp:2037 gui/options.cpp:2047
+#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1510
+#: gui/options.cpp:1518 gui/options.cpp:1527 gui/options.cpp:1707
+#: gui/options.cpp:1713 gui/options.cpp:1721 gui/options.cpp:1744
+#: gui/options.cpp:1777 gui/options.cpp:1783 gui/options.cpp:1790
+#: gui/options.cpp:1798 gui/options.cpp:1993 gui/options.cpp:1996
+#: gui/options.cpp:2003 gui/options.cpp:2013
msgctxt "path"
msgid "None"
msgstr "Wu"
#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404
-#: gui/editgamedialog.cpp:522 gui/options.cpp:1735 gui/options.cpp:1805
-#: gui/options.cpp:2033 backends/platform/wii/options.cpp:56
+#: gui/editgamedialog.cpp:522 gui/options.cpp:1701 gui/options.cpp:1771
+#: gui/options.cpp:1999 backends/platform/wii/options.cpp:56
msgid "Default"
msgstr "Moren"
-#: gui/editgamedialog.cpp:450 gui/options.cpp:2041
+#: gui/editgamedialog.cpp:450 gui/options.cpp:2007
msgid "Select SoundFont"
msgstr "Xuanze SoundFont"
@@ -405,7 +404,7 @@ msgstr "Xuanze SoundFont"
msgid "Select additional game directory"
msgstr "Xuanze Qita Youxi Mulu"
-#: gui/editgamedialog.cpp:502 gui/options.cpp:1964
+#: gui/editgamedialog.cpp:502 gui/options.cpp:1930
msgid "Select directory for saved games"
msgstr "Xuanze Youxi Baocun Mulu"
@@ -495,7 +494,7 @@ msgstr "Zhengxian"
msgid "Triangle"
msgstr "Sanjiaoxing"
-#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1569
+#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1535
msgid "Misc"
msgstr "Zaxiang"
@@ -588,7 +587,7 @@ msgstr "Xuanze yao Yingshe de Xingwei"
msgid "~Q~uit"
msgstr "~Q~Tuichu"
-#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106
+#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:112
msgid "Quit ScummVM"
msgstr "Tuichu ScummVM"
@@ -596,7 +595,7 @@ msgstr "Tuichu ScummVM"
msgid "A~b~out..."
msgstr "~b~Guanyu..."
-#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80
+#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:86
msgid "About ScummVM"
msgstr "Guanyu ScummVM"
@@ -673,7 +672,7 @@ msgstr "Sousuo:"
#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214
#: engines/mohawk/dialogs.cpp:105 engines/mohawk/riven.cpp:511
-#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601
+#: engines/pegasus/pegasus.cpp:355 engines/tsage/scenes.cpp:601
#: engines/wage/saveload.cpp:748
msgid "Load game:"
msgstr "Jiazai Youxi:"
@@ -683,7 +682,7 @@ msgstr "Jiazai Youxi:"
#: backends/platform/wince/CEActionsSmartphone.cpp:231
#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:105
#: engines/mohawk/riven.cpp:511 engines/parallaction/saveload.cpp:194
-#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185
+#: engines/pegasus/pegasus.cpp:355 engines/scumm/dialogs.cpp:185
#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748
msgid "Load"
msgstr "Jiazai"
@@ -791,247 +790,215 @@ msgstr "Mei 15 Fenzhong"
msgid "every 30 mins"
msgstr "Mei 30 Fenzhong"
-#: gui/options.cpp:123
-msgid "8 kHz"
-msgstr "8 kHz"
-
-#: gui/options.cpp:123
-msgid "11 kHz"
-msgstr "11 kHz"
-
-#: gui/options.cpp:123
-msgid "22 kHz"
-msgstr "22 kHz"
-
-#: gui/options.cpp:123
-msgid "44 kHz"
-msgstr "44 kHz"
-
-#: gui/options.cpp:123
-msgid "48 kHz"
-msgstr "48 kHz"
-
-#: gui/options.cpp:356 gui/options.cpp:664 gui/options.cpp:802
-#: gui/options.cpp:879 gui/options.cpp:1148
+#: gui/options.cpp:343 gui/options.cpp:640 gui/options.cpp:778
+#: gui/options.cpp:853 gui/options.cpp:1114
msgctxt "soundfont"
msgid "None"
msgstr "Wu"
-#: gui/options.cpp:527
+#: gui/options.cpp:514
msgid "Failed to apply some of the graphic options changes:"
msgstr "Tuxing Xuanxiang Genggai Shibai:"
-#: gui/options.cpp:539
+#: gui/options.cpp:526
msgid "the video mode could not be changed."
msgstr "Shipin Moshi Wufa Genggai."
-#: gui/options.cpp:545
+#: gui/options.cpp:532
msgid "the aspect ratio setting could not be changed"
msgstr "Bili Xuanxiang Wufa Genggai"
-#: gui/options.cpp:551
+#: gui/options.cpp:538
msgid "the fullscreen setting could not be changed"
msgstr "Quanping Shezhi Wufa Genggai"
-#: gui/options.cpp:557
+#: gui/options.cpp:544
#, fuzzy
msgid "the filtering setting could not be changed"
msgstr "Quanping Shezhi Wufa Genggai"
-#: gui/options.cpp:958
+#: gui/options.cpp:932
msgid "Show On-screen control"
msgstr ""
-#: gui/options.cpp:962
+#: gui/options.cpp:936
#, fuzzy
msgid "Touchpad mouse mode"
msgstr "Jinyong Chumoban Moshi."
-#: gui/options.cpp:966
+#: gui/options.cpp:940
msgid "Swap Menu and Back buttons"
msgstr ""
-#: gui/options.cpp:971
+#: gui/options.cpp:945
#, fuzzy
msgid "Pointer Speed:"
msgstr "Sudu:"
-#: gui/options.cpp:971 gui/options.cpp:973 gui/options.cpp:974
+#: gui/options.cpp:945 gui/options.cpp:947 gui/options.cpp:948
msgid "Speed for keyboard/joystick mouse pointer control"
msgstr ""
-#: gui/options.cpp:973
+#: gui/options.cpp:947
#, fuzzy
msgctxt "lowres"
msgid "Pointer Speed:"
msgstr "Sudu:"
-#: gui/options.cpp:984
+#: gui/options.cpp:958
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:984 gui/options.cpp:986 gui/options.cpp:987
+#: gui/options.cpp:958 gui/options.cpp:960 gui/options.cpp:961
msgid "Analog joystick Deadzone"
msgstr ""
-#: gui/options.cpp:986
+#: gui/options.cpp:960
msgctxt "lowres"
msgid "Joy Deadzone:"
msgstr ""
-#: gui/options.cpp:1000
+#: gui/options.cpp:974
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1000 gui/options.cpp:1002
+#: gui/options.cpp:974 gui/options.cpp:976
msgid "Different hardware shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1002
+#: gui/options.cpp:976
msgctxt "lowres"
msgid "HW Shader:"
msgstr ""
-#: gui/options.cpp:1003
+#: gui/options.cpp:977
msgid "Different shaders give different visual effects"
msgstr ""
-#: gui/options.cpp:1020
+#: gui/options.cpp:994
msgid "Graphics mode:"
msgstr "Tuxing Moshi:"
-#: gui/options.cpp:1034
+#: gui/options.cpp:1008
msgid "Render mode:"
msgstr "Xuanran Moshi:"
-#: gui/options.cpp:1034 gui/options.cpp:1035
+#: gui/options.cpp:1008 gui/options.cpp:1009
msgid "Special dithering modes supported by some games"
msgstr "Youxi Zhichi Teshu de Doudong Moshi"
-#: gui/options.cpp:1046 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2573
+#: gui/options.cpp:1020 backends/graphics/openglsdl/openglsdl-graphics.cpp:624
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2624
msgid "Fullscreen mode"
msgstr "Quanping Moshi"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
#, fuzzy
msgid "Filter graphics"
msgstr "Tuxiang"
-#: gui/options.cpp:1049
+#: gui/options.cpp:1023
msgid "Use linear filtering when scaling graphics"
msgstr ""
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Aspect ratio correction"
msgstr "Bili Jiaozheng"
-#: gui/options.cpp:1052
+#: gui/options.cpp:1026
msgid "Correct aspect ratio for 320x200 games"
msgstr "320x200 Youxi Bili Jiaozheng"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Preferred Device:"
msgstr "Youxian Shebei:"
-#: gui/options.cpp:1060
+#: gui/options.cpp:1034
msgid "Music Device:"
msgstr "Yinyue Shebei:"
-#: gui/options.cpp:1060 gui/options.cpp:1062
+#: gui/options.cpp:1034 gui/options.cpp:1036
msgid "Specifies preferred sound device or sound card emulator"
msgstr "Zhiding Youxian Shengyin Shebei huo Shengka Moniqi"
-#: gui/options.cpp:1060 gui/options.cpp:1062 gui/options.cpp:1063
+#: gui/options.cpp:1034 gui/options.cpp:1036 gui/options.cpp:1037
msgid "Specifies output sound device or sound card emulator"
msgstr "Zhiding Shuchu Shengyin Shebei huo Shengka Moniqi"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Preferred Dev.:"
msgstr "Youxian Shebei:"
-#: gui/options.cpp:1062
+#: gui/options.cpp:1036
msgctxt "lowres"
msgid "Music Device:"
msgstr "Yinyue Shebei:"
-#: gui/options.cpp:1089
+#: gui/options.cpp:1063
msgid "AdLib emulator:"
msgstr "AdLib Moniqi:"
-#: gui/options.cpp:1089 gui/options.cpp:1090
+#: gui/options.cpp:1063 gui/options.cpp:1064
msgid "AdLib is used for music in many games"
msgstr "AdLib bei Henduo Youxi Yonglai Bofang Yinyue"
-#: gui/options.cpp:1100
-msgid "Output rate:"
-msgstr "Shuchu Malv:"
-
-#: gui/options.cpp:1100 gui/options.cpp:1101
-msgid ""
-"Higher value specifies better sound quality but may be not supported by your "
-"soundcard"
-msgstr ""
-"Genggao de Shuxing Hui Tisheng Yinyue Zhiliang dan Youkeneng Nin de Shengka "
-"Buzhichi"
-
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "GM Device:"
msgstr "GM Shebei:"
-#: gui/options.cpp:1111
+#: gui/options.cpp:1077
msgid "Specifies default sound device for General MIDI output"
msgstr "Zhiding Tongyong MIDI Shuchu Moren Shengyin Shebei"
-#: gui/options.cpp:1122
+#: gui/options.cpp:1088
msgid "Don't use General MIDI music"
msgstr "Buyao Shiyong Tongyong MIDI Yinyue"
-#: gui/options.cpp:1133 gui/options.cpp:1195
+#: gui/options.cpp:1099 gui/options.cpp:1161
msgid "Use first available device"
msgstr "Shiyong Diyige keyong de Shebei"
-#: gui/options.cpp:1145
+#: gui/options.cpp:1111
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1145 gui/options.cpp:1147 gui/options.cpp:1148
+#: gui/options.cpp:1111 gui/options.cpp:1113 gui/options.cpp:1114
msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity"
msgstr "Yixie Shengka Zhichi SoundFont, Biru FluidSynth He Timidity"
-#: gui/options.cpp:1147
+#: gui/options.cpp:1113
msgctxt "lowres"
msgid "SoundFont:"
msgstr "SoundFont:"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Mixed AdLib/MIDI mode"
msgstr "Hunhe AdLib/MIDI Moshi"
-#: gui/options.cpp:1153
+#: gui/options.cpp:1119
msgid "Use both MIDI and AdLib sound generation"
msgstr "TongShi Shiyong MIDI He AdLib Shengyin Shengcheng"
-#: gui/options.cpp:1156
+#: gui/options.cpp:1122
msgid "MIDI gain:"
msgstr "MIDI gain:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "MT-32 Device:"
msgstr "MT-32 Shebei:"
-#: gui/options.cpp:1166
+#: gui/options.cpp:1132
msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output"
msgstr ""
"QIng Zhiding Yongyu Roland MT-32/LAPC1/CM32I/CM64 Shuchu de Moren Shengyin "
"Shebei"
-#: gui/options.cpp:1171
+#: gui/options.cpp:1137
msgid "True Roland MT-32 (disable GM emulation)"
msgstr "Zhen Roland MT-32 (Jinyong GM Moni)"
-#: gui/options.cpp:1171 gui/options.cpp:1173
+#: gui/options.cpp:1137 gui/options.cpp:1139
msgid ""
"Check if you want to use your real hardware Roland-compatible sound device "
"connected to your computer"
@@ -1039,16 +1006,16 @@ msgstr ""
"Jiancha Shifou Nin Xiang Shiyong Lianjie Dao Jisuanji de Zhenshi de Yingjian "
"Roland Jianrong Shengyin Shebei"
-#: gui/options.cpp:1173
+#: gui/options.cpp:1139
msgctxt "lowres"
msgid "True Roland MT-32 (no GM emulation)"
msgstr "Zhen Roland MT-32 Shebei (Wu GM Moni)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid "Roland GS Device (enable MT-32 mappings)"
msgstr "Roland GS Shebei (Qiyong MT-32 Yingshe)"
-#: gui/options.cpp:1176
+#: gui/options.cpp:1142
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
@@ -1056,357 +1023,357 @@ msgstr ""
"Jiancha Shifou Nin Xiang Qiyong patch Yingshe Lai Zai Roland GS Shebei "
"Shangmian Moni MT-32"
-#: gui/options.cpp:1185
+#: gui/options.cpp:1151
msgid "Don't use Roland MT-32 music"
msgstr "Buyao Shiyong Roland MT-32 Yinyue"
-#: gui/options.cpp:1212
+#: gui/options.cpp:1178
msgid "Text and Speech:"
msgstr "Wenzi he Yuyin:"
-#: gui/options.cpp:1216 gui/options.cpp:1226
+#: gui/options.cpp:1182 gui/options.cpp:1192
msgid "Speech"
msgstr "Yuyin"
-#: gui/options.cpp:1217 gui/options.cpp:1227
+#: gui/options.cpp:1183 gui/options.cpp:1193
msgid "Subtitles"
msgstr "Zimu"
-#: gui/options.cpp:1218
+#: gui/options.cpp:1184
msgid "Both"
msgstr "Liangzhe"
-#: gui/options.cpp:1220
+#: gui/options.cpp:1186
msgid "Subtitle speed:"
msgstr "Zimu Sudu:"
-#: gui/options.cpp:1222
+#: gui/options.cpp:1188
msgctxt "lowres"
msgid "Text and Speech:"
msgstr "Wenben he Yuyin:"
-#: gui/options.cpp:1226
+#: gui/options.cpp:1192
msgid "Spch"
msgstr "Zimu"
-#: gui/options.cpp:1227
+#: gui/options.cpp:1193
msgid "Subs"
msgstr "Yuyin"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgctxt "lowres"
msgid "Both"
msgstr "Dou"
-#: gui/options.cpp:1228
+#: gui/options.cpp:1194
msgid "Show subtitles and play speech"
msgstr "Xianshi Zimu Bing Bofang Yuyin"
-#: gui/options.cpp:1230
+#: gui/options.cpp:1196
msgctxt "lowres"
msgid "Subtitle speed:"
msgstr "Zimu Sudu:"
-#: gui/options.cpp:1246
+#: gui/options.cpp:1212
msgid "Music volume:"
msgstr "Yinyue Yinliang:"
-#: gui/options.cpp:1248
+#: gui/options.cpp:1214
msgctxt "lowres"
msgid "Music volume:"
msgstr "Yinyue Yinliang:"
-#: gui/options.cpp:1255
+#: gui/options.cpp:1221
msgid "Mute All"
msgstr "Quanbu Jinyin"
-#: gui/options.cpp:1258
+#: gui/options.cpp:1224
msgid "SFX volume:"
msgstr "Yinxiao Yinliang:"
-#: gui/options.cpp:1258 gui/options.cpp:1260 gui/options.cpp:1261
+#: gui/options.cpp:1224 gui/options.cpp:1226 gui/options.cpp:1227
msgid "Special sound effects volume"
msgstr "Texiao Yinliang"
-#: gui/options.cpp:1260
+#: gui/options.cpp:1226
msgctxt "lowres"
msgid "SFX volume:"
msgstr "Yinxiao Yinliang:"
-#: gui/options.cpp:1268
+#: gui/options.cpp:1234
msgid "Speech volume:"
msgstr "Yuyin Yinliang:"
-#: gui/options.cpp:1270
+#: gui/options.cpp:1236
msgctxt "lowres"
msgid "Speech volume:"
msgstr "Yuyin Yinliang:"
-#: gui/options.cpp:1472
+#: gui/options.cpp:1438
msgid "Shader"
msgstr ""
-#: gui/options.cpp:1484
+#: gui/options.cpp:1450
#, fuzzy
msgid "Control"
msgstr "Kongzhi Shubiao"
-#: gui/options.cpp:1510
+#: gui/options.cpp:1476
msgid "FluidSynth Settings"
msgstr "FluidSynth Xuanxiang"
-#: gui/options.cpp:1541
+#: gui/options.cpp:1507
msgid "Theme Path:"
msgstr "Zhuti Lujing:"
-#: gui/options.cpp:1543
+#: gui/options.cpp:1509
msgctxt "lowres"
msgid "Theme Path:"
msgstr "Zhuti Lujing:"
-#: gui/options.cpp:1549 gui/options.cpp:1551 gui/options.cpp:1552
+#: gui/options.cpp:1515 gui/options.cpp:1517 gui/options.cpp:1518
msgid "Specifies path to additional data used by all games or ScummVM"
msgstr "Zhiding Suoyou Youxi huo ScummVM de Shuju Lujing"
-#: gui/options.cpp:1558
+#: gui/options.cpp:1524
msgid "Plugins Path:"
msgstr "Chajian Lujing:"
-#: gui/options.cpp:1560
+#: gui/options.cpp:1526
msgctxt "lowres"
msgid "Plugins Path:"
msgstr "Chajian Lujing:"
-#: gui/options.cpp:1571
+#: gui/options.cpp:1537
msgctxt "lowres"
msgid "Misc"
msgstr "Zaxiang"
-#: gui/options.cpp:1573
+#: gui/options.cpp:1539
msgid "Theme:"
msgstr "Zhuti:"
-#: gui/options.cpp:1577
+#: gui/options.cpp:1543
msgid "GUI Renderer:"
msgstr "Jiemian Xuanran:"
-#: gui/options.cpp:1589
+#: gui/options.cpp:1555
msgid "Autosave:"
msgstr "Zidong Baocun:"
-#: gui/options.cpp:1591
+#: gui/options.cpp:1557
msgctxt "lowres"
msgid "Autosave:"
msgstr "Zidong Baocun:"
-#: gui/options.cpp:1599
+#: gui/options.cpp:1565
msgid "Keys"
msgstr "Guanjianzi"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "GUI Language:"
msgstr "Jiemian Yuyan:"
-#: gui/options.cpp:1606
+#: gui/options.cpp:1572
msgid "Language of ScummVM GUI"
msgstr "ScummVM Jiemian Yuyan"
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "Update check:"
msgstr ""
-#: gui/options.cpp:1634
+#: gui/options.cpp:1600
msgid "How often to check ScummVM updates"
msgstr ""
-#: gui/options.cpp:1646
+#: gui/options.cpp:1612
msgid "Check now"
msgstr ""
-#: gui/options.cpp:1654
+#: gui/options.cpp:1620
msgid "Cloud"
msgstr ""
-#: gui/options.cpp:1656
+#: gui/options.cpp:1622
msgctxt "lowres"
msgid "Cloud"
msgstr ""
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Storage:"
msgstr ""
-#: gui/options.cpp:1661
+#: gui/options.cpp:1627
msgid "Active cloud storage"
msgstr ""
-#: gui/options.cpp:1668 gui/options.cpp:2244
+#: gui/options.cpp:1634 gui/options.cpp:2210
msgid "<none>"
msgstr ""
-#: gui/options.cpp:1672 backends/platform/wii/options.cpp:114
+#: gui/options.cpp:1638 backends/platform/wii/options.cpp:114
msgid "Username:"
msgstr "Yonghuming:"
-#: gui/options.cpp:1672
+#: gui/options.cpp:1638
msgid "Username used by this storage"
msgstr ""
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Used space:"
msgstr ""
-#: gui/options.cpp:1675
+#: gui/options.cpp:1641
msgid "Space used by ScummVM's saved games on this storage"
msgstr ""
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "Last sync time:"
msgstr ""
-#: gui/options.cpp:1678
+#: gui/options.cpp:1644
msgid "When the last saved games sync for this storage occured"
msgstr ""
-#: gui/options.cpp:1681 gui/storagewizarddialog.cpp:71
+#: gui/options.cpp:1647 gui/storagewizarddialog.cpp:71
msgid "Connect"
msgstr ""
-#: gui/options.cpp:1681
+#: gui/options.cpp:1647
msgid "Open wizard dialog to connect your cloud storage account"
msgstr ""
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh"
msgstr ""
-#: gui/options.cpp:1682
+#: gui/options.cpp:1648
msgid "Refresh current cloud storage information (username and usage)"
msgstr ""
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
#, fuzzy
msgid "Download"
msgstr "Xia"
-#: gui/options.cpp:1683
+#: gui/options.cpp:1649
msgid "Open downloads manager dialog"
msgstr ""
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run server"
msgstr ""
-#: gui/options.cpp:1685
+#: gui/options.cpp:1651
msgid "Run local webserver"
msgstr ""
-#: gui/options.cpp:1686 gui/options.cpp:2354
+#: gui/options.cpp:1652 gui/options.cpp:2320
#, fuzzy
msgid "Not running"
msgstr "Youxi Yunxing Cuowu:"
-#: gui/options.cpp:1690
+#: gui/options.cpp:1656
#, fuzzy
msgid "/root/ Path:"
msgstr "Qita Lujing:"
-#: gui/options.cpp:1690 gui/options.cpp:1692 gui/options.cpp:1693
+#: gui/options.cpp:1656 gui/options.cpp:1658 gui/options.cpp:1659
#, fuzzy
msgid "Specifies which directory the Files Manager can access"
msgstr "Zhiding Nin Jiang Youxi Baocun Zai le Nali"
-#: gui/options.cpp:1692
+#: gui/options.cpp:1658
#, fuzzy
msgctxt "lowres"
msgid "/root/ Path:"
msgstr "Qita Lujing:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
#, fuzzy
msgid "Server's port:"
msgstr "Fuwuqi:"
-#: gui/options.cpp:1702
+#: gui/options.cpp:1668
msgid ""
"Which port is used by the server\n"
"Auth with server is not available with non-default port"
msgstr ""
-#: gui/options.cpp:1715
+#: gui/options.cpp:1681
msgid "Apply"
msgstr ""
-#: gui/options.cpp:1858
+#: gui/options.cpp:1824
#, fuzzy
msgid "Failed to change cloud storage!"
msgstr "Wufa baocun Youxi"
-#: gui/options.cpp:1861
+#: gui/options.cpp:1827
msgid "Another cloud storage is already active."
msgstr ""
-#: gui/options.cpp:1929
+#: gui/options.cpp:1895
#, fuzzy
msgid "Theme does not support selected language!"
msgstr "Yingqing Chajian Buzhichi Baocun Zhuangtai"
-#: gui/options.cpp:1932
+#: gui/options.cpp:1898
#, fuzzy
msgid "Theme cannot be loaded!"
msgstr "Youxi Meiyou Jiazai"
-#: gui/options.cpp:1935
+#: gui/options.cpp:1901
msgid ""
"\n"
"Misc settings will be restored."
msgstr ""
-#: gui/options.cpp:1971
+#: gui/options.cpp:1937
msgid "The chosen directory cannot be written to. Please select another one."
msgstr "Zhiding de Mulu Buneng Xieru. Qing Xuanze Qita de Mulu."
-#: gui/options.cpp:1980
+#: gui/options.cpp:1946
msgid "Select directory for GUI themes"
msgstr "Xuanze Jiemian Zhuti de Mulu"
-#: gui/options.cpp:1990
+#: gui/options.cpp:1956
msgid "Select directory for extra files"
msgstr "Xuanze QIta Wenjian Mulu"
-#: gui/options.cpp:2001
+#: gui/options.cpp:1967
msgid "Select directory for plugins"
msgstr "Xuanze Chajian Mulu"
-#: gui/options.cpp:2013
+#: gui/options.cpp:1979
#, fuzzy
msgid "Select directory for Files Manager /root/"
msgstr "Xuanze QIta Wenjian Mulu"
-#: gui/options.cpp:2251
+#: gui/options.cpp:2217
#, c-format
msgid "%llu bytes"
msgstr ""
-#: gui/options.cpp:2259
+#: gui/options.cpp:2225
msgid "<right now>"
msgstr ""
-#: gui/options.cpp:2261
+#: gui/options.cpp:2227
#, fuzzy
msgid "<never>"
msgstr "Yongbu"
-#: gui/options.cpp:2345
+#: gui/options.cpp:2311
#, fuzzy
msgid "Stop server"
msgstr "Fuwuqi:"
-#: gui/options.cpp:2346
+#: gui/options.cpp:2312
msgid "Stop local webserver"
msgstr ""
-#: gui/options.cpp:2437
+#: gui/options.cpp:2403
msgid ""
"Request failed.\n"
"Check your Internet connection."
@@ -1867,9 +1834,9 @@ msgstr "~R~Fanhui Qidongqi"
#: engines/drascula/saveload.cpp:384 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:106
-#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:542 engines/sci/engine/kfile.cpp:941
-#: engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:656
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1888,9 +1855,10 @@ msgstr "Baocun Youxi:"
#: 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:106 engines/neverhood/menumodule.cpp:880
-#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377
-#: engines/sci/engine/guest_additions.cpp:543 engines/sci/engine/kfile.cpp:941
-#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250
+#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:379
+#: engines/sci/engine/guest_additions.cpp:657
+#: engines/sci/engine/kfile.cpp:1042 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
@@ -1906,7 +1874,7 @@ msgstr ""
"Duibuqi, Ci Yinqing Buzhichi Youxi Nei Bangzhu. Qing Chayue README Lai Huoqu "
"Jiben Xinxi Yiji Ruhe Huode Gengduo Bangzhu."
-#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393
+#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:395
#, fuzzy, c-format
msgid ""
"Failed to save game (%s)! Please consult the README for basic information, "
@@ -2240,7 +2208,7 @@ msgid "OpenGL"
msgstr "OpenGL"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:626
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2575
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2626
msgid "Windowed mode"
msgstr "Chuangkou Moshi"
@@ -2250,23 +2218,23 @@ msgid "Resolution: %dx%d"
msgstr ""
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:761
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2452
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2503
msgid "Enabled aspect ratio correction"
msgstr "Qiyong Bili Jiaozheng"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:763
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2458
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2509
msgid "Disabled aspect ratio correction"
msgstr "Jinyong Bili Jiaozheng"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:783
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2476
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2527
#, fuzzy
msgid "Filtering enabled"
msgstr "Qidong Dianji"
#: backends/graphics/openglsdl/openglsdl-graphics.cpp:785
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2478
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2529
#, fuzzy
msgid "Filtering disabled"
msgstr "Jinyong Dianji"
@@ -2282,7 +2250,7 @@ msgctxt "lowres"
msgid "Normal (no scaling)"
msgstr "Putong"
-#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2531
+#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2582
msgid "Active graphics filter:"
msgstr "Huodong de Tuxing Guolvqi:"
@@ -2438,24 +2406,24 @@ msgstr "Zhongjian Danji"
msgid "Right Click"
msgstr "Youjian Danji"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:88
+#: backends/platform/sdl/macosx/appmenu_osx.mm:94
msgid "Hide ScummVM"
msgstr "Yincang ScummVM"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:93
+#: backends/platform/sdl/macosx/appmenu_osx.mm:99
msgid "Hide Others"
msgstr "Yincang QIta"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:98
+#: backends/platform/sdl/macosx/appmenu_osx.mm:104
msgid "Show All"
msgstr "Xianshi Quanbu"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:120
-#: backends/platform/sdl/macosx/appmenu_osx.mm:131
+#: backends/platform/sdl/macosx/appmenu_osx.mm:126
+#: backends/platform/sdl/macosx/appmenu_osx.mm:137
msgid "Window"
msgstr "Chuangkou"
-#: backends/platform/sdl/macosx/appmenu_osx.mm:125
+#: backends/platform/sdl/macosx/appmenu_osx.mm:131
msgid "Minimize"
msgstr "Zuixiaohua"
@@ -2913,8 +2881,8 @@ msgstr ""
#: 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/guest_additions.cpp:545
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:659
+#: engines/sci/engine/kfile.cpp:1161 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:"
@@ -2927,8 +2895,8 @@ msgstr "Huifu Youxi:"
#: 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/guest_additions.cpp:546
-#: engines/sci/engine/kfile.cpp:1060 engines/sherlock/scalpel/scalpel.cpp:1263
+#: engines/sci/engine/guest_additions.cpp:660
+#: engines/sci/engine/kfile.cpp:1161 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"
@@ -3120,12 +3088,12 @@ msgid "Move Right"
msgstr "Xiangyou Huadong"
#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485
-#: engines/pegasus/pegasus.cpp:2509
+#: engines/pegasus/pegasus.cpp:2514
msgid "Turn Left"
msgstr "Zuozhuan"
#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486
-#: engines/pegasus/pegasus.cpp:2510
+#: engines/pegasus/pegasus.cpp:2515
msgid "Turn Right"
msgstr "Youzhuan"
@@ -3454,40 +3422,40 @@ msgstr ""
"\n"
"QIng Jiang Qingkuang Baogao Gei Tuandui."
-#: engines/pegasus/pegasus.cpp:714
+#: engines/pegasus/pegasus.cpp:716
#, fuzzy
msgid "Invalid file name for saving"
msgstr "Shuru Baocun de Wenjianming"
-#: engines/pegasus/pegasus.cpp:2507
+#: engines/pegasus/pegasus.cpp:2512
msgid "Up/Zoom In/Move Forward/Open Doors"
msgstr "Xiangshang/fangda/Qianjin/Kaimen"
-#: engines/pegasus/pegasus.cpp:2508
+#: engines/pegasus/pegasus.cpp:2513
msgid "Down/Zoom Out"
msgstr "Xiangxia/Suoxiao"
-#: engines/pegasus/pegasus.cpp:2511
+#: engines/pegasus/pegasus.cpp:2516
msgid "Display/Hide Inventory Tray"
msgstr "Xianshi/Yincang Wupinlan"
-#: engines/pegasus/pegasus.cpp:2512
+#: engines/pegasus/pegasus.cpp:2517
msgid "Display/Hide Biochip Tray"
msgstr "Xianshi/Yincang Biochip Lan"
-#: engines/pegasus/pegasus.cpp:2513
+#: engines/pegasus/pegasus.cpp:2518
msgid "Action/Select"
msgstr "Dongzuo/Xuanze"
-#: engines/pegasus/pegasus.cpp:2514
+#: engines/pegasus/pegasus.cpp:2519
msgid "Toggle Center Data Display"
msgstr "Qiehuan Shuju Zhongxin Xianshi"
-#: engines/pegasus/pegasus.cpp:2515
+#: engines/pegasus/pegasus.cpp:2520
msgid "Display/Hide Info Screen"
msgstr "Xianshi/Yincang Xinxi Pingmu"
-#: engines/pegasus/pegasus.cpp:2516
+#: engines/pegasus/pegasus.cpp:2521
msgid "Display/Hide Pause Menu"
msgstr "Xianshi/Yincang Zanting Caidan"
@@ -3578,7 +3546,16 @@ msgid ""
"Use the alternate set of silver cursors instead of the normal golden ones"
msgstr "Shiyong Qita Yinse Guangbiao"
-#: engines/sci/detection.cpp:825
+#: engines/sci/detection.cpp:506
+#, fuzzy
+msgid "Enable content censoring"
+msgstr "Qiyong Xuanfu Guangbiao"
+
+#: engines/sci/detection.cpp:507
+msgid "Enable the game's built-in optional content censoring"
+msgstr ""
+
+#: engines/sci/detection.cpp:837
#, fuzzy
msgid "(Autosave)"
msgstr "Zidong Baocun:"
@@ -3597,22 +3574,22 @@ msgstr ""
msgid "Please use an external viewer to open the game's help file: %s"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1305
+#: engines/sci/engine/savegame.cpp:1292
msgid "The format of this saved game is obsolete, unable to load it"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1307
+#: engines/sci/engine/savegame.cpp:1294
#, c-format
msgid "Savegame version is %d, maximum supported is %0d"
msgstr ""
-#: engines/sci/engine/savegame.cpp:1318
+#: engines/sci/engine/savegame.cpp:1305
msgid ""
"This saved game was created with a different version of the game, unable to "
"load it"
msgstr ""
-#: engines/sci/resource.cpp:813
+#: engines/sci/resource.cpp:820
msgid ""
"Missing or corrupt game resources have been detected. Some game features may "
"not work properly. Please check the console for more information, and verify "
@@ -4616,6 +4593,31 @@ msgid ""
"%d. You will need an updated version of the engine to use this saved game."
msgstr ""
+#~ msgid "8 kHz"
+#~ msgstr "8 kHz"
+
+#~ msgid "11 kHz"
+#~ msgstr "11 kHz"
+
+#~ msgid "22 kHz"
+#~ msgstr "22 kHz"
+
+#~ msgid "44 kHz"
+#~ msgstr "44 kHz"
+
+#~ msgid "48 kHz"
+#~ msgstr "48 kHz"
+
+#~ msgid "Output rate:"
+#~ msgstr "Shuchu Malv:"
+
+#~ msgid ""
+#~ "Higher value specifies better sound quality but may be not supported by "
+#~ "your soundcard"
+#~ msgstr ""
+#~ "Genggao de Shuxing Hui Tisheng Yinyue Zhiliang dan Youkeneng Nin de "
+#~ "Shengka Buzhichi"
+
#~ 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."
diff --git a/video/avi_decoder.cpp b/video/avi_decoder.cpp
index ea10b95f5a..7d182935c1 100644
--- a/video/avi_decoder.cpp
+++ b/video/avi_decoder.cpp
@@ -132,7 +132,7 @@ bool AVIDecoder::isSeekable() const {
const Graphics::Surface *AVIDecoder::decodeNextFrame() {
AVIVideoTrack *track = nullptr;
bool isReversed = false;
- int frameNum;
+ int frameNum = 0;
// Check whether the video is playing in revese
for (int idx = _videoTracks.size() - 1; idx >= 0; --idx) {
@@ -155,6 +155,7 @@ const Graphics::Surface *AVIDecoder::decodeNextFrame() {
for (int idx = _videoTracks.size() - 1; idx >= 0; --idx) {
track = static_cast<AVIVideoTrack *>(_videoTracks[idx].track);
track->setCurFrame(frameNum - 1);
+ findNextVideoTrack();
}
}
@@ -1020,7 +1021,7 @@ bool AVIDecoder::AVIVideoTrack::setReverse(bool reverse) {
bool AVIDecoder::AVIVideoTrack::endOfTrack() const {
if (_reversed)
- return _curFrame < 0;
+ return _curFrame < -1;
return _curFrame >= (getFrameCount() - 1);
}
diff --git a/video/bink_decoder.cpp b/video/bink_decoder.cpp
index 8cbde8c849..7f2bedfbf4 100644
--- a/video/bink_decoder.cpp
+++ b/video/bink_decoder.cpp
@@ -1111,6 +1111,7 @@ void BinkDecoder::BinkVideoTrack::readDCTCoeffs(VideoFrame &video, int16 *block,
case 0:
coefList[listPos] = ccoef + 4;
modeList[listPos] = 1;
+ // fall through
case 2:
if (mode == 2) {
coefList[listPos] = 0;
@@ -1218,6 +1219,7 @@ void BinkDecoder::BinkVideoTrack::readResidue(VideoFrame &video, int16 *block, i
case 0:
coefList[listPos] = ccoef + 4;
modeList[listPos] = 1;
+ // fall through
case 2:
if (mode == 2) {
coefList[listPos] = 0;
diff --git a/video/qt_decoder.cpp b/video/qt_decoder.cpp
index f2acbb1282..70f0ae43da 100644
--- a/video/qt_decoder.cpp
+++ b/video/qt_decoder.cpp
@@ -507,7 +507,7 @@ bool QuickTimeDecoder::VideoTrackHandler::setReverse(bool reverse) {
_reversed = reverse;
if (_reversed) {
- if (_parent->editCount != 1) {
+ if (_parent->editList.size() != 1) {
// TODO: Myst's holo.mov needs this :(
warning("Can only set reverse without edits");
return false;
@@ -517,7 +517,7 @@ bool QuickTimeDecoder::VideoTrackHandler::setReverse(bool reverse) {
// If we're at the end of the video, go to the penultimate edit.
// The current frame is set to one beyond the last frame here;
// one "past" the currently displayed frame.
- _curEdit = _parent->editCount - 1;
+ _curEdit = _parent->editList.size() - 1;
_curFrame = _parent->frameCount;
_nextFrameStartTime = _parent->editList[_curEdit].trackDuration + _parent->editList[_curEdit].timeOffset;
} else if (_durationOverride >= 0) {
@@ -769,7 +769,7 @@ uint32 QuickTimeDecoder::VideoTrackHandler::getCurEditTrackDuration() const {
}
bool QuickTimeDecoder::VideoTrackHandler::atLastEdit() const {
- return _curEdit == _parent->editCount;
+ return _curEdit == _parent->editList.size();
}
bool QuickTimeDecoder::VideoTrackHandler::endOfCurEdit() const {