aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/script_v2.cpp
diff options
context:
space:
mode:
authorFlorian Kagerer2008-03-17 01:34:24 +0000
committerFlorian Kagerer2008-03-17 01:34:24 +0000
commitb9339221e4f0b92976f80028c49fcfbc0845ec01 (patch)
treece4c9bc506c9787b241885bf10f1115ec128e4ce /engines/kyra/script_v2.cpp
parenteceee73424a3338f1eedcced1e2dbb4fb7f71849 (diff)
downloadscummvm-rg350-b9339221e4f0b92976f80028c49fcfbc0845ec01.tar.gz
scummvm-rg350-b9339221e4f0b92976f80028c49fcfbc0845ec01.tar.bz2
scummvm-rg350-b9339221e4f0b92976f80028c49fcfbc0845ec01.zip
- implement debugger commands: gamespeed and pass_codes
- implement opcode 151: meanWhileScene() - fix dragon flight scene: this is still totally messed up, but at least the screen doesn't stay blank any more svn-id: r31152
Diffstat (limited to 'engines/kyra/script_v2.cpp')
-rw-r--r--engines/kyra/script_v2.cpp31
1 files changed, 26 insertions, 5 deletions
diff --git a/engines/kyra/script_v2.cpp b/engines/kyra/script_v2.cpp
index fc1b9957fa..1ce600a94f 100644
--- a/engines/kyra/script_v2.cpp
+++ b/engines/kyra/script_v2.cpp
@@ -175,6 +175,27 @@ int KyraEngine_v2::o2_wsaClose(ScriptState *script) {
return 0;
}
+int KyraEngine_v2::o2_meanWhileScene(ScriptState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_meanWhileScene(%p) (%d)", (const void *)script, stackPos(0));
+ static const uint8 jpSubtitle[] = { 0x88, 0xEA, 0x95, 0xFB, 0x81, 0x45, 0x81, 0x45, 0x81, 0x45 };
+ const char *cpsfile = stackPosString(0);
+ const char *palfile = stackPosString(1);
+
+ _screen->loadBitmap(cpsfile, 3, 3, 0);
+ memcpy(_screen->getPalette(2), _screen->_currentPalette, 768);
+ _screen->loadPalette(palfile, _screen->getPalette(2));
+ _screen->fillRect(0, 0, 319, 199, 207);
+ _screen->setScreenPalette(_screen->getPalette(2));
+ _screen->copyRegion(0, 0, 0, 0, 320, 200, 2, 0);
+ if (!scumm_stricmp(cpsfile, "_MEANWIL.CPS") && _flags.lang == Common::JA_JPN) {
+ Screen::FontId o = _screen->setFont(Screen::FID_6_FNT);
+ _screen->printText((const char*)jpSubtitle, 140, 176, 255, 132);
+ _screen->setFont(o);
+ }
+ _screen->updateScreen();
+ return 0;
+}
+
int KyraEngine_v2::o2_displayWsaFrame(ScriptState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_displayWsaFrame(%p) (%d, %d, %d, %d, %d, %d, %d, %d, %d)", (const void *)script,
stackPos(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5), stackPos(6), stackPos(7), stackPos(8));
@@ -944,7 +965,7 @@ int KyraEngine_v2::o2_pressColorKey(ScriptState *script) {
_inputColorCode[0] = stackPos(0) & 0xff;
for (int i = 0; i < 7; i++) {
if (_presetColorCode[i] != _inputColorCode[6 - i])
- return 0;
+ return _dbgPass;
}
return 1;
}
@@ -1115,13 +1136,13 @@ int KyraEngine_v2::o2_getHiddenItemsEntry(ScriptState *script) {
int KyraEngine_v2::o2_mushroomEffect(ScriptState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_mushroomEffect(%p)", (const void *)script);
- memcpy(_screen->getPalette(1), _screen->_currentPalette, 768);
+ memcpy(_screen->getPalette(2), _screen->_currentPalette, 768);
for (int i = 1; i < 768; i += 3)
_screen->_currentPalette[i] = 0;
snd_playSoundEffect(106);
_screen->fadePalette(_screen->_currentPalette, 90, &_updateFunctor);
- memcpy(_screen->_currentPalette, _screen->getPalette(1), 768);
+ memcpy(_screen->_currentPalette, _screen->getPalette(2), 768);
for (int i = 0; i < 768; i += 3) {
_screen->_currentPalette[i] = _screen->_currentPalette[i + 1] = 0;
@@ -1132,7 +1153,7 @@ int KyraEngine_v2::o2_mushroomEffect(ScriptState *script) {
snd_playSoundEffect(106);
_screen->fadePalette(_screen->_currentPalette, 90, &_updateFunctor);
- memcpy(_screen->_currentPalette, _screen->getPalette(1), 768);
+ memcpy(_screen->_currentPalette, _screen->getPalette(2), 768);
_screen->fadePalette(_screen->_currentPalette, 30, &_updateFunctor);
return 0;
@@ -1555,7 +1576,7 @@ void KyraEngine_v2::setupOpcodeTable() {
Opcode(o2_getHiddenItemsEntry),
Opcode(o2_mushroomEffect),
Opcode(o2_wsaClose),
- OpcodeUnImpl(),
+ Opcode(o2_meanWhileScene),
// 0x98
Opcode(o2_customChat),
Opcode(o2_customChatFinish),