SCI: kScummVMSleep is now available in SCI16

This commit is contained in:
sluicebox 2022-04-07 18:38:50 -04:00
parent 3e1ecd2ea4
commit 6abb9c6061
6 changed files with 32 additions and 47 deletions

View file

@ -100,25 +100,6 @@ reg_t kGameIsRestarting(EngineState *s, int argc, reg_t *argv) {
neededSleep = 60;
}
break;
case GID_KQ6: {
// KQ6 has talking inventory items that animate in the inventory window.
// This is done with unthrottled inner loops which we replace with
// calls to kGameIsRestarting so that the screen updates and responds
// to input. Since this can happen in any room, we detect if the caller
// is inventory script 907. See kq6PatchTalkingInventory.
if (s->_executionStack.size() >= 2) {
Common::List<ExecStack>::const_iterator iter = s->_executionStack.reverse_begin();
--iter; // skip this kernel call
if (iter->type == EXEC_STACK_TYPE_CALL) {
int callerScriptNumber = s->_segMan->getScript(iter->addr.pc.getSegment())->getScriptNumber();
if (callerScriptNumber == 907) {
s->_throttleTrigger = true;
neededSleep = 90; // talk animation interval
}
}
}
break;
}
case GID_SQ4:
// In SQ4 (floppy and CD) the sequel police appear way too quickly in
// the Skate-o-rama rooms, resulting in all sorts of timer issues, like
@ -937,8 +918,8 @@ reg_t kKawaDbugStr(EngineState *s, int argc, reg_t *argv)
reg_t kEmpty(EngineState *s, int argc, reg_t *argv) {
// Placeholder for empty kernel functions which are still called from the
// engine scripts (like the empty kSetSynonyms function in SCI1.1). This
// differs from dummy functions because it does nothing and never throws a
// warning when it is called.
// differs from dummy functions because it doesn't throw an error when it
// is called.
return s->r_acc;
}