From ed65e89a897f66eadc53ce27eb5fe6b39d16a0eb Mon Sep 17 00:00:00 2001 From: Vincent Hamm Date: Fri, 19 Apr 2002 21:06:50 +0000 Subject: [PATCH] Refixed getActorY in indy3. Fixed class (dunno if the fix doesn't break something else. Fixed intro by slowing down music rate by 3. svn-id: r4018 --- script.cpp | 2 +- script_v1.cpp | 15 +++++---------- scumm.h | 1 + scummvm.cpp | 14 +++++++++++++- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/script.cpp b/script.cpp index cc0e27b0381..069d8ccb40e 100644 --- a/script.cpp +++ b/script.cpp @@ -272,7 +272,7 @@ void Scumm::executeScript() _opcode = fetchScriptByte(); _scriptPointerStart = _scriptPointer; vm.slot[_currentScript].didexec = 1; - debug(1, "Script %d: [%X] %s()", vm.slot[_currentScript].number, _opcode, _opcodes_lookup[_opcode]); + //debug(1, "Script %d: [%X] %s()", vm.slot[_currentScript].number, _opcode, _opcodes_lookup[_opcode]); op = getOpcode(_opcode); (this->*op) (); } diff --git a/script_v1.cpp b/script_v1.cpp index d223d33d5c6..3b15ce68567 100644 --- a/script_v1.cpp +++ b/script_v1.cpp @@ -827,21 +827,18 @@ void Scumm::o5_actorSetClass() _classData[act] = 0; if( _features & GF_SMALL_HEADER) - { - Actor *a; - a=derefActor(act); - a->forceClip=0; - } - continue; } + if(_gameId == GID_INDY3_256) + newClass--; + if (newClass & 0x80) putClass(act, newClass, 1); else @@ -1323,7 +1320,7 @@ void Scumm::o5_getActorY() actor = getVarOrDirectByte(0x80); else actor = getVarOrDirectWord(0x80); - setResult(actor); + setResult(getObjY(actor)); } void Scumm::o5_getAnimCounter() @@ -2247,6 +2244,7 @@ void Scumm::o5_startScript() void Scumm::o5_startSound() { + _vars[VAR_MUSIC_FLAG]=0; addSoundToQueue(getVarOrDirectByte(0x80)); } @@ -2505,9 +2503,6 @@ void Scumm::o5_wait() break; return; case 2: /* wait for message */ - if ((_currentRoom == 0) && (_gameId == GID_ZAK256)) // Bypass Zak256 script hang - return; - if (_vars[VAR_HAVE_MSG]) break; return; diff --git a/scumm.h b/scumm.h index b3a9463401e..0f9ddd1a788 100644 --- a/scumm.h +++ b/scumm.h @@ -958,6 +958,7 @@ public: uint16 _mouthSyncTimes[52]; uint _curSoundPos; int current_cd_sound; + int tempMusic; #ifdef COMPRESSED_SOUND_FILE diff --git a/scummvm.cpp b/scummvm.cpp index 107ce81b1f5..0014384a7fe 100644 --- a/scummvm.cpp +++ b/scummvm.cpp @@ -53,6 +53,8 @@ void Scumm::scummInit() int i; Actor *a; + tempMusic=0; + debug(9, "scummInit"); if (_features & GF_SMALL_HEADER) @@ -252,7 +254,17 @@ int Scumm::scummLoop(int delta) } } } else if (_features & GF_OLD256) - _vars[VAR_MUSIC_FLAG]++; // ENDERFIX + { + if(tempMusic == 3) + { + tempMusic = 0; + _vars[VAR_MUSIC_FLAG]++; + } + else + { + tempMusic ++; + } + } if (_saveLoadFlag) { if (_saveLoadFlag == 1) {