diff options
author | Matthew Hoops | 2012-05-25 00:21:51 -0400 |
---|---|---|
committer | Matthew Hoops | 2012-05-25 00:35:38 -0400 |
commit | f1f6a82cd57fceb52afdd393f44a80c40f3c9a15 (patch) | |
tree | 06a04072df44bd5f337ff79b43684d8109a72f59 /engines/dreamweb | |
parent | b2506abccf6aa64da31b497b45fe0e1949530053 (diff) | |
parent | beef27fc10bb714fe37f2ee0c35cd143dc706829 (diff) | |
download | scummvm-rg350-f1f6a82cd57fceb52afdd393f44a80c40f3c9a15.tar.gz scummvm-rg350-f1f6a82cd57fceb52afdd393f44a80c40f3c9a15.tar.bz2 scummvm-rg350-f1f6a82cd57fceb52afdd393f44a80c40f3c9a15.zip |
Merge remote branch 'upstream/master' into pegasus
Diffstat (limited to 'engines/dreamweb')
-rw-r--r-- | engines/dreamweb/detection_tables.h | 60 | ||||
-rw-r--r-- | engines/dreamweb/dreamweb.cpp | 6 | ||||
-rw-r--r-- | engines/dreamweb/dreamweb.h | 1 | ||||
-rw-r--r-- | engines/dreamweb/monitor.cpp | 5 | ||||
-rw-r--r-- | engines/dreamweb/saveload.cpp | 5 | ||||
-rw-r--r-- | engines/dreamweb/sound.cpp | 13 |
6 files changed, 80 insertions, 10 deletions
diff --git a/engines/dreamweb/detection_tables.h b/engines/dreamweb/detection_tables.h index d54b2402c8..063aabbd89 100644 --- a/engines/dreamweb/detection_tables.h +++ b/engines/dreamweb/detection_tables.h @@ -41,6 +41,7 @@ static const DreamWebGameDescription gameDescriptions[] = { { {"dreamweb.r00", 0, "3b5c87717fc40cc5a5ae19c155662ee3", 152918}, {"dreamweb.r02", 0, "28458718167a040d7e988cf7d2298eae", 210466}, + {"dreamweb.exe", 0, "56b1d73aa56e964b45872ff552402341", 64985}, AD_LISTEND }, Common::EN_ANY, @@ -67,6 +68,27 @@ static const DreamWebGameDescription gameDescriptions[] = { }, }, + // UK-V (Early UK) CD Release - From bug #3526483 + // Note: r00 and r02 files are identical to international floppy release + // so was misidentified as floppy, resulting in disabled CD speech. + // Added executable to detection to avoid this. + { + { + "dreamweb", + "CD", + { + {"dreamweb.r00", 0, "3b5c87717fc40cc5a5ae19c155662ee3", 152918}, + {"dreamweb.r02", 0, "28458718167a040d7e988cf7d2298eae", 210466}, + {"dreamweb.exe", 0, "dd1c7793b151489e67b83cd1ecab51cd", -1}, + AD_LISTEND + }, + Common::EN_GRB, + Common::kPlatformPC, + ADGF_CD | ADGF_TESTING, + GUIO2(GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_BRIGHTPALETTE) + }, + }, + // US CD release { { @@ -79,7 +101,7 @@ static const DreamWebGameDescription gameDescriptions[] = { }, Common::EN_USA, Common::kPlatformPC, - ADGF_CD, + ADGF_CD | ADGF_TESTING, GUIO2(GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_BRIGHTPALETTE) }, }, @@ -101,6 +123,24 @@ static const DreamWebGameDescription gameDescriptions[] = { }, }, + // French CD release + // From bug #3524362 + { + { + "dreamweb", + "CD", + { + {"dreamwfr.r00", 0, "e354582a8564faf5c515df92f207e8d1", 154657}, + {"dreamwfr.r02", 0, "cb99f08d5aefd04184eac76927eced80", 200575}, + AD_LISTEND + }, + Common::FR_FRA, + Common::kPlatformPC, + ADGF_CD | ADGF_TESTING, + GUIO2(GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_BRIGHTPALETTE) + }, + }, + // German floppy release { { @@ -169,6 +209,24 @@ static const DreamWebGameDescription gameDescriptions[] = { }, }, + // Spanish CD release + // From bug #3524362 + { + { + "dreamweb", + "CD", + { + {"dreamwsp.r00", 0, "2df07174321de39c4f17c9ff654b268a", 153608}, + {"dreamwsp.r02", 0, "f97d435ad5da08fb1bcf6ea3dd6e0b9e", 199499}, + AD_LISTEND + }, + Common::ES_ESP, + Common::kPlatformPC, + ADGF_CD | ADGF_TESTING, + GUIO2(GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_BRIGHTPALETTE) + }, + }, + // Italian floppy release { { diff --git a/engines/dreamweb/dreamweb.cpp b/engines/dreamweb/dreamweb.cpp index 299dd74b53..11e8e3f8cc 100644 --- a/engines/dreamweb/dreamweb.cpp +++ b/engines/dreamweb/dreamweb.cpp @@ -63,14 +63,18 @@ DreamWebEngine::DreamWebEngine(OSystem *syst, const DreamWebGameDescription *gam _channel1 = 0; _datafilePrefix = "DREAMWEB."; + _speechDirName = "SPEECH"; // ES and FR CD release use a different data file prefix + // and speech directory naming. if (isCD()) { switch(getLanguage()) { case Common::ES_ESP: _datafilePrefix = "DREAMWSP."; + _speechDirName = "SPANISH"; break; case Common::FR_FRA: _datafilePrefix = "DREAMWFR."; + _speechDirName = "FRENCH"; break; default: // Nothing to do @@ -381,7 +385,7 @@ Common::Error DreamWebEngine::run() { ConfMan.registerDefault("originalsaveload", "false"); ConfMan.registerDefault("bright_palette", true); - _hasSpeech = Common::File::exists("speech/r01c0000.raw") && !ConfMan.getBool("speech_mute"); + _hasSpeech = Common::File::exists(_speechDirName + "/r01c0000.raw") && !ConfMan.getBool("speech_mute"); _brightPalette = ConfMan.getBool("bright_palette"); _timer->installTimerProc(vSyncInterrupt, 1000000 / 70, this, "dreamwebVSync"); diff --git a/engines/dreamweb/dreamweb.h b/engines/dreamweb/dreamweb.h index 4065e5a860..6744b53ebc 100644 --- a/engines/dreamweb/dreamweb.h +++ b/engines/dreamweb/dreamweb.h @@ -164,6 +164,7 @@ private: const DreamWebGameDescription *_gameDescription; Common::RandomSource _rnd; Common::String _datafilePrefix; + Common::String _speechDirName; uint _speed; bool _turbo; diff --git a/engines/dreamweb/monitor.cpp b/engines/dreamweb/monitor.cpp index 95aa400c3a..25435ae0e9 100644 --- a/engines/dreamweb/monitor.cpp +++ b/engines/dreamweb/monitor.cpp @@ -626,15 +626,12 @@ void DreamWebEngine::signOn() { _monAdX = prevX; _monAdY = prevY; - inputLine = (const char *)_inputLine; - inputLine.toUppercase(); - // The entered line has zeroes in-between each character uint32 len = strlen(monitorKeyEntries[foundIndex].password); bool found = true; for (uint32 i = 0; i < len; i++) { - if (monitorKeyEntries[foundIndex].password[i] != inputLine[i * 2]) { + if (monitorKeyEntries[foundIndex].password[i] != _inputLine[i * 2]) { found = false; break; } diff --git a/engines/dreamweb/saveload.cpp b/engines/dreamweb/saveload.cpp index 5d7f02c5cf..d30bf754de 100644 --- a/engines/dreamweb/saveload.cpp +++ b/engines/dreamweb/saveload.cpp @@ -839,8 +839,9 @@ void DreamWebEngine::showOpBox() { // This call displays half of the ops dialog in the CD version. It's not // in the floppy version, and if it's called, a stray red dot is shown in - // the game dialogs. - if (isCD()) + // the game dialogs. It is included in the early UK CD release, which had + // similar data files as the floppy release (bug #3528160). + if (isCD() && getLanguage() != Common::EN_GRB) showFrame(_saveGraphics, kOpsx, kOpsy + 55, 4, 0); } diff --git a/engines/dreamweb/sound.cpp b/engines/dreamweb/sound.cpp index b51527a8cd..b3d5db9e0d 100644 --- a/engines/dreamweb/sound.cpp +++ b/engines/dreamweb/sound.cpp @@ -55,6 +55,7 @@ void DreamWebEngine::volumeAdjust() { } void DreamWebEngine::playChannel0(uint8 index, uint8 repeat) { + debug(1, "playChannel0(index:%d, repeat:%d)", index, repeat); _channel0Playing = index; if (index >= 12) index -= 12; @@ -72,6 +73,7 @@ void DreamWebEngine::playChannel1(uint8 index) { } void DreamWebEngine::cancelCh0() { + debug(1, "cancelCh0()"); _channel0Repeat = 0; _channel0Playing = 255; stopSound(0); @@ -83,6 +85,7 @@ void DreamWebEngine::cancelCh1() { } void DreamWebEngine::loadRoomsSample() { + debug(1, "loadRoomsSample() _roomsSample:%d", _roomsSample); uint8 sample = _roomsSample; if (sample == 255 || _currentSample == sample) @@ -177,7 +180,7 @@ bool DreamWebEngine::loadSpeech(const Common::String &filename) { return false; Common::File file; - if (!file.open("speech/" + filename)) + if (!file.open(_speechDirName + "/" + filename)) return false; debug(1, "loadSpeech(%s)", filename.c_str()); @@ -190,6 +193,11 @@ bool DreamWebEngine::loadSpeech(const Common::String &filename) { } void DreamWebEngine::soundHandler() { + static uint8 volumeOld = 0, channel0Old = 0, channel0PlayingOld = 0; + if (_volume != volumeOld || _channel0 != channel0Old || _channel0Playing != channel0PlayingOld) + debug(1, "soundHandler() _volume: %d _channel0: %d _channel0Playing: %d", _volume, _channel0, _channel0Playing); + volumeOld = _volume, channel0Old = _channel0, channel0PlayingOld = _channel0Playing; + _subtitles = ConfMan.getBool("subtitles"); volumeAdjust(); @@ -230,6 +238,8 @@ void DreamWebEngine::soundHandler() { } } if (!_mixer->isSoundHandleActive(_channelHandle[0])) { + if (_channel0Playing != 255 && _channel0 != 0) + debug(1, "!_mixer->isSoundHandleActive _channelHandle[0] _channel0Playing:%d _channel0:%d", _channel0Playing, _channel0); _channel0Playing = 255; _channel0 = 0; } @@ -237,7 +247,6 @@ void DreamWebEngine::soundHandler() { _channel1Playing = 255; _channel1 = 0; } - } void DreamWebEngine::loadSounds(uint bank, const Common::String &suffix) { |