aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorFilippos Karapetis2012-04-19 01:03:09 -0700
committerFilippos Karapetis2012-04-19 01:03:09 -0700
commit0a51667e424df073a56810f7f0c225dd922e5142 (patch)
tree98018e9491ce1b36a7a0fe5fd20f4526da715c9c /engines
parent6544a05bf83ceea3dbde9bfa2bfdd1e8f001d25d (diff)
parent8d274f5006cd55f9cb635172c715fdff1bcd0063 (diff)
downloadscummvm-rg350-0a51667e424df073a56810f7f0c225dd922e5142.tar.gz
scummvm-rg350-0a51667e424df073a56810f7f0c225dd922e5142.tar.bz2
scummvm-rg350-0a51667e424df073a56810f7f0c225dd922e5142.zip
Merge pull request #229 from criezy/dreamweb-fr
Support for Dreamweb fr/es
Diffstat (limited to 'engines')
-rw-r--r--engines/dreamweb/dreamweb.cpp58
-rw-r--r--engines/dreamweb/dreamweb.h1
-rw-r--r--engines/dreamweb/stubs.cpp8
3 files changed, 63 insertions, 4 deletions
diff --git a/engines/dreamweb/dreamweb.cpp b/engines/dreamweb/dreamweb.cpp
index a846579e46..2e9c7bb2b8 100644
--- a/engines/dreamweb/dreamweb.cpp
+++ b/engines/dreamweb/dreamweb.cpp
@@ -63,6 +63,20 @@ DreamWebEngine::DreamWebEngine(OSystem *syst, const DreamWebGameDescription *gam
_channel1 = 0;
_datafilePrefix = "DREAMWEB.";
+ // ES and FR CD release use a different data file prefix
+ if (isCD()) {
+ switch(getLanguage()) {
+ case Common::ES_ESP:
+ _datafilePrefix = "DREAMWSP.";
+ break;
+ case Common::FR_FRA:
+ _datafilePrefix = "DREAMWFR.";
+ break;
+ default:
+ // Nothing to do
+ break;
+ }
+ }
_openChangeSize = kInventx+(4*kItempicsize);
_quitRequested = false;
@@ -526,10 +540,54 @@ uint8 DreamWebEngine::modifyChar(uint8 c) const {
default:
return c;
}
+ case Common::FR_FRA:
+ switch(c) {
+ case 133:
+ return 'Z' + 1;
+ case 130:
+ return 'Z' + 2;
+ case 138:
+ return 'Z' + 3;
+ case 136:
+ return 'Z' + 4;
+ case 140:
+ return 'Z' + 5;
+ case 135:
+ return 'Z' + 6;
+ case 149:
+ return ',' - 1;
+ case 131:
+ return ',' - 2;
+ case 141:
+ return ',' - 3;
+ case 139:
+ return ',' - 4;
+ case 151:
+ return 'A' - 1;
+ case 147:
+ return 'A' - 3;
+ case 150:
+ return 'A' - 4;
+ default:
+ return c;
+ }
default:
return c;
}
}
+
+Common::String DreamWebEngine::modifyFileName(const char *name) {
+ Common::String fileName(name);
+
+ // Sanity check
+ if (!fileName.hasPrefix("DREAMWEB."))
+ return fileName;
+
+ // Make sure we use the correct file name as it differs depending on the game variant
+ fileName = _datafilePrefix;
+ fileName += name + 9;
+ return fileName;
+}
bool DreamWebEngine::hasSpeech() {
return isCD() && _hasSpeech;
diff --git a/engines/dreamweb/dreamweb.h b/engines/dreamweb/dreamweb.h
index 13a27449dc..4065e5a860 100644
--- a/engines/dreamweb/dreamweb.h
+++ b/engines/dreamweb/dreamweb.h
@@ -149,6 +149,7 @@ public:
Common::Language getLanguage() const;
uint8 modifyChar(uint8 c) const;
+ Common::String modifyFileName(const char *);
void stopSound(uint8 channel);
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 8226982db7..5a53b82510 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -2090,8 +2090,8 @@ void DreamWebEngine::getRidOfAll() {
void DreamWebEngine::loadRoomData(const Room &room, bool skipDat) {
processEvents();
Common::File file;
- if (!file.open(room.name))
- error("cannot open file %s", room.name);
+ if (!file.open(modifyFileName(room.name)))
+ error("cannot open file %s", modifyFileName(room.name).c_str());
FileHeader header;
file.read((uint8 *)&header, sizeof(FileHeader));
@@ -2176,8 +2176,8 @@ void DreamWebEngine::restoreReels() {
processEvents();
Common::File file;
- if (!file.open(room.name))
- error("cannot open file %s", room.name);
+ if (!file.open(modifyFileName(room.name)))
+ error("cannot open file %s", modifyFileName(room.name).c_str());
FileHeader header;
file.read((uint8 *)&header, sizeof(FileHeader));