mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-13 05:00:59 +00:00
Get rid of the SO_WAIT_FOR_TURN hack for TheDig as the original interpreter didn't do anything special here. This will probably trigger some 'invalid actor' errors, but those are most likely caused by scripting mistakes... which should be worked around separately.
svn-id: r20958
This commit is contained in:
parent
9c80770411
commit
0f5ef6f5b1
@ -2231,21 +2231,8 @@ void ScummEngine_v6::o6_wait() {
|
||||
break;
|
||||
return;
|
||||
case 232: // SO_WAIT_FOR_TURN
|
||||
// FIXME: This opcode is really odd. It's used a lot in The Dig.
|
||||
// But sometimes it receives the actor ID as params, and sometimes an
|
||||
// angle. However in (almost?) all cases, just before calling it, _curActor
|
||||
// is set, so we can use it. I tried to add code that detects if an angle
|
||||
// is passed, and if so, wait till that angle is reached, but that leads to hangs.
|
||||
// It would be very good if somebody could disassmble the original code
|
||||
// for this opcode so that we could figure out what's really going on here.
|
||||
//
|
||||
// For now, if the value passed in is divisible by 45, assume it is an
|
||||
// angle, and use _curActor as the actor to wait for.
|
||||
offs = fetchScriptWordSigned();
|
||||
actnum = pop();
|
||||
if (actnum % 45 == 0) {
|
||||
actnum = _curActor;
|
||||
}
|
||||
a = derefActor(actnum, "o6_wait:232b");
|
||||
if (a->isInCurrentRoom() && a->_moving & MF_TURN)
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user