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
This commit is contained in:
Vincent Hamm 2002-04-19 21:06:50 +00:00
parent f442157a14
commit ed65e89a89
4 changed files with 20 additions and 12 deletions

View file

@ -272,7 +272,7 @@ void Scumm::executeScript()
_opcode = fetchScriptByte(); _opcode = fetchScriptByte();
_scriptPointerStart = _scriptPointer; _scriptPointerStart = _scriptPointer;
vm.slot[_currentScript].didexec = 1; 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); op = getOpcode(_opcode);
(this->*op) (); (this->*op) ();
} }

View file

@ -827,21 +827,18 @@ void Scumm::o5_actorSetClass()
_classData[act] = 0; _classData[act] = 0;
if( _features & GF_SMALL_HEADER) if( _features & GF_SMALL_HEADER)
{ {
Actor *a; Actor *a;
a=derefActor(act); a=derefActor(act);
a->forceClip=0; a->forceClip=0;
} }
continue; continue;
} }
if(_gameId == GID_INDY3_256)
newClass--;
if (newClass & 0x80) if (newClass & 0x80)
putClass(act, newClass, 1); putClass(act, newClass, 1);
else else
@ -1323,7 +1320,7 @@ void Scumm::o5_getActorY()
actor = getVarOrDirectByte(0x80); actor = getVarOrDirectByte(0x80);
else else
actor = getVarOrDirectWord(0x80); actor = getVarOrDirectWord(0x80);
setResult(actor); setResult(getObjY(actor));
} }
void Scumm::o5_getAnimCounter() void Scumm::o5_getAnimCounter()
@ -2247,6 +2244,7 @@ void Scumm::o5_startScript()
void Scumm::o5_startSound() void Scumm::o5_startSound()
{ {
_vars[VAR_MUSIC_FLAG]=0;
addSoundToQueue(getVarOrDirectByte(0x80)); addSoundToQueue(getVarOrDirectByte(0x80));
} }
@ -2505,9 +2503,6 @@ void Scumm::o5_wait()
break; break;
return; return;
case 2: /* wait for message */ case 2: /* wait for message */
if ((_currentRoom == 0) && (_gameId == GID_ZAK256)) // Bypass Zak256 script hang
return;
if (_vars[VAR_HAVE_MSG]) if (_vars[VAR_HAVE_MSG])
break; break;
return; return;

View file

@ -958,6 +958,7 @@ public:
uint16 _mouthSyncTimes[52]; uint16 _mouthSyncTimes[52];
uint _curSoundPos; uint _curSoundPos;
int current_cd_sound; int current_cd_sound;
int tempMusic;
#ifdef COMPRESSED_SOUND_FILE #ifdef COMPRESSED_SOUND_FILE

View file

@ -53,6 +53,8 @@ void Scumm::scummInit()
int i; int i;
Actor *a; Actor *a;
tempMusic=0;
debug(9, "scummInit"); debug(9, "scummInit");
if (_features & GF_SMALL_HEADER) if (_features & GF_SMALL_HEADER)
@ -252,7 +254,17 @@ int Scumm::scummLoop(int delta)
} }
} }
} else if (_features & GF_OLD256) } 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) {
if (_saveLoadFlag == 1) { if (_saveLoadFlag == 1) {