aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schickel2005-11-27 10:02:23 +0000
committerJohannes Schickel2005-11-27 10:02:23 +0000
commitee69f9317d14915816943b3d803a09def2605872 (patch)
treeb901dd5099f499e871c3b5450c33e4358988af26
parentceb9116ab29b8c3d0a5f7825b7a46bf13793910c (diff)
downloadscummvm-rg350-ee69f9317d14915816943b3d803a09def2605872.tar.gz
scummvm-rg350-ee69f9317d14915816943b3d803a09def2605872.tar.bz2
scummvm-rg350-ee69f9317d14915816943b3d803a09def2605872.zip
Added voices for cd version in the game.
Also increased RESFILE_VERSION for the new kyra.dat for the cd version. svn-id: r19717
-rw-r--r--kyra/kyra.cpp30
-rw-r--r--kyra/script_v1.cpp16
-rw-r--r--kyra/staticres.cpp2
3 files changed, 40 insertions, 8 deletions
diff --git a/kyra/kyra.cpp b/kyra/kyra.cpp
index 66348df80d..2110dcf7f0 100644
--- a/kyra/kyra.cpp
+++ b/kyra/kyra.cpp
@@ -344,6 +344,8 @@ int KyraEngine::init(GameDetector &detector) {
_marbleVaseItem = -1;
_mouseState = _itemInHand = -1;
_handleInput = false;
+
+ _currentRoom = 0xFFFF;
return 0;
}
@@ -1186,18 +1188,36 @@ void KyraEngine::enterNewScene(int sceneId, int facing, int unk1, int unk2, int
assert(sceneId < _roomTableSize);
Room *currentRoom = &_roomTable[sceneId];
-
+
+ if (_currentRoom != 0xFFFF && (_features & GF_TALKIE)) {
+ char file[32];
+ assert(_currentRoom < _roomTableSize);
+ int tableId = _roomTable[_currentRoom].nameIndex;
+ assert(tableId < _roomFilenameTableSize);
+ strcpy(file, _roomFilenameTable[tableId]);
+ strcat(file, ".VRM");
+ _res->unloadPakFile(file);
+ }
+
+ _currentRoom = sceneId;
+
assert(_currentCharacter->sceneId < _roomTableSize);
int tableId = _roomTable[_currentCharacter->sceneId].nameIndex;
assert(tableId < _roomFilenameTableSize);
- char datFileNameBuffer[32];
- strcpy(datFileNameBuffer, _roomFilenameTable[tableId]);
- strcat(datFileNameBuffer, ".DAT");
- _sprites->loadDAT(datFileNameBuffer, _sceneExits);
+ char fileNameBuffer[32];
+ strcpy(fileNameBuffer, _roomFilenameTable[tableId]);
+ strcat(fileNameBuffer, ".DAT");
+ _sprites->loadDAT(fileNameBuffer, _sceneExits);
_sprites->setupSceneAnims();
_scriptInterpreter->unloadScript(_scriptClickData);
loadSceneMSC();
+ if ((_features & GF_TALKIE)) {
+ strcpy(fileNameBuffer, _roomFilenameTable[tableId]);
+ strcat(fileNameBuffer, ".VRM");
+ _res->loadPakFile(fileNameBuffer);
+ }
+
_walkBlockNorth = currentRoom->northExit;
_walkBlockEast = currentRoom->eastExit;
_walkBlockSouth = currentRoom->southExit;
diff --git a/kyra/script_v1.cpp b/kyra/script_v1.cpp
index 5b26cc5e1e..7d82bc3687 100644
--- a/kyra/script_v1.cpp
+++ b/kyra/script_v1.cpp
@@ -314,6 +314,12 @@ int KyraEngine::cmd_characterSays(ScriptState *script) {
if (_features & GF_TALKIE) {
debug(3, "cmd_characterSays(0x%X) (%d, '%s', %d, %d)", script, stackPos(0), stackPosString(1), stackPos(2), stackPos(3));
+ while (snd_voicePlaying()) {
+ _sprites->updateSceneAnims();
+ updateAllObjectShapes();
+ _system->delayMillis(10);
+ }
+ snd_playVoiceFile(stackPos(0));
characterSays(stackPosString(1), stackPos(2), stackPos(3));
} else {
debug(3, "cmd_characterSays(0x%X) ('%s', %d, %d)", script, stackPosString(0), stackPos(1), stackPos(2));
@@ -773,6 +779,12 @@ int KyraEngine::cmd_loadPageFromDisk(ScriptState *script) {
int KyraEngine::cmd_customPrintTalkString(ScriptState *script) {
if (_features & GF_TALKIE) {
debug(3, "cmd_customPrintTalkString(0x%X) ('%s', %d, %d, %d)", script, stackPosString(1), stackPos(2), stackPos(3), stackPos(4) & 0xFF);
+ while (snd_voicePlaying()) {
+ _sprites->updateSceneAnims();
+ updateAllObjectShapes();
+ _system->delayMillis(10);
+ }
+ snd_playVoiceFile(stackPos(0));
printTalkTextMessage(stackPosString(1), stackPos(2), stackPos(3), stackPos(4) & 0xFF, 0, 2);
} else {
debug(3, "cmd_customPrintTalkString(0x%X) ('%s', %d, %d, %d)", script, stackPosString(0), stackPos(1), stackPos(2), stackPos(3) & 0xFF);
@@ -1428,10 +1440,10 @@ int KyraEngine::cmd_setScaleDepthTableValue(ScriptState *script) {
int KyraEngine::cmd_message(ScriptState *script) {
if (_features & GF_TALKIE) {
- debug(9, "cmd_message(0x%X)", script);
+ debug(3, "cmd_message(0x%X) (%d, '%s', %d)", script, stackPos(0), stackPosString(1), stackPos(2));
drawSentenceCommand(stackPosString(1), stackPos(2));
} else {
- debug(9, "cmd_message(0x%X)", script);
+ debug(3, "cmd_message(0x%X) ('%s', %d)", script, stackPosString(0), stackPos(1));
drawSentenceCommand(stackPosString(0), stackPos(1));
}
diff --git a/kyra/staticres.cpp b/kyra/staticres.cpp
index 8c7e17faf9..f29b0e4ba1 100644
--- a/kyra/staticres.cpp
+++ b/kyra/staticres.cpp
@@ -26,7 +26,7 @@
namespace Kyra {
-#define RESFILE_VERSION 2
+#define RESFILE_VERSION 3
#define GAME_FLAGS (GF_FLOPPY | GF_TALKIE | GF_DEMO | GF_AUDIOCD)
#define LANGUAGE_FLAGS (GF_ENGLISH | GF_FRENCH | GF_GERMAN | GF_SPANISH | GF_LNGUNK)