diff options
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 @@ -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. @@ -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 ¬e = 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 Binary files differindex acb6d20a99..4f7e3ce68d 100644 --- a/gui/themes/scummclassic.zip +++ b/gui/themes/scummclassic.zip 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 Binary files differindex 055c82ad3c..fae746b72c 100644 --- a/gui/themes/scummmodern.zip +++ b/gui/themes/scummmodern.zip 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 Binary files differindex 8ce44a4fce..edfc2cfc79 100644 --- a/gui/themes/translations.dat +++ b/gui/themes/translations.dat 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 " @@ -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." @@ -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 { |