aboutsummaryrefslogtreecommitdiff
path: root/engines/agos/script_pp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/agos/script_pp.cpp')
-rw-r--r--engines/agos/script_pp.cpp23
1 files changed, 18 insertions, 5 deletions
diff --git a/engines/agos/script_pp.cpp b/engines/agos/script_pp.cpp
index fd8ef9b859..a7bda53e48 100644
--- a/engines/agos/script_pp.cpp
+++ b/engines/agos/script_pp.cpp
@@ -72,8 +72,8 @@ void AGOSEngine_PuzzlePack::setupOpcodes() {
OPCODE(o_state),
/* 28 */
OPCODE(o_oflag),
- OPCODE(opp_iconifyWindow),
OPCODE(o_invalid),
+ OPCODE(opp_iconifyWindow),
OPCODE(o_destroy),
/* 32 */
OPCODE(opp_restoreOopsPosition),
@@ -238,7 +238,7 @@ void AGOSEngine_PuzzlePack::setupOpcodes() {
/* 160 */
OPCODE(oe2_ink),
OPCODE(off_screenTextBox),
- OPCODE(os1_screenTextMsg),
+ OPCODE(opp_playTune),
OPCODE(o_invalid),
/* 164 */
OPCODE(oe2_getDollar2),
@@ -297,7 +297,7 @@ void AGOSEngine_PuzzlePack::executeOpcode(int opcode) {
void AGOSEngine_PuzzlePack::opp_iconifyWindow() {
// 30
- getNextItemPtr();
+ getNextWord();
if (_clockStopped != 0)
_gameTime += time(NULL) - _clockStopped;
_clockStopped = 0;
@@ -308,7 +308,7 @@ void AGOSEngine_PuzzlePack::opp_restoreOopsPosition() {
// 32: restore oops position
uint i;
- getNextItemPtr();
+ getNextWord();
if (_oopsValid) {
for (i = 0; i < _numVars; i++) {
@@ -328,7 +328,7 @@ void AGOSEngine_PuzzlePack::opp_restoreOopsPosition() {
void AGOSEngine_PuzzlePack::opp_loadMouseImage() {
// 38: load mouse image
- getNextItemPtr();
+ getNextWord();
getVarOrByte();
loadMouseImage();
}
@@ -405,6 +405,19 @@ void AGOSEngine_PuzzlePack::opp_loadUserGame() {
loadGame(genSaveName(1));
}
+void AGOSEngine_PuzzlePack::opp_playTune() {
+ // 162: play tune
+ getVarOrByte();
+ getVarOrByte();
+ getNextWord();
+
+ uint16 music = (uint16)getVarOrWord();
+ if (music != _lastMusicPlayed) {
+ _lastMusicPlayed = music;
+ playSpeech(music, 1);
+ }
+}
+
void AGOSEngine_PuzzlePack::opp_saveOopsPosition() {
// 173: save oops position
if (!isVgaQueueEmpty()) {