aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2009-09-17 13:20:58 +0000
committerMax Horn2009-09-17 13:20:58 +0000
commitd861f5c854fb47e7f0a15a70738ab24f04c8036c (patch)
treeea4e153a31a0090b50c895de7ac7c1631ce70e06
parentcd394fce761ee9580e4df9ffc761826e688cda4f (diff)
downloadscummvm-rg350-d861f5c854fb47e7f0a15a70738ab24f04c8036c.tar.gz
scummvm-rg350-d861f5c854fb47e7f0a15a70738ab24f04c8036c.tar.bz2
scummvm-rg350-d861f5c854fb47e7f0a15a70738ab24f04c8036c.zip
SCI: cleanup
svn-id: r44150
-rw-r--r--engines/sci/engine/kernel.h12
-rw-r--r--engines/sci/engine/vm.cpp36
2 files changed, 17 insertions, 31 deletions
diff --git a/engines/sci/engine/kernel.h b/engines/sci/engine/kernel.h
index 3ae8d97e50..f088492b0c 100644
--- a/engines/sci/engine/kernel.h
+++ b/engines/sci/engine/kernel.h
@@ -274,18 +274,6 @@ Common::Rect set_base(EngineState *s, reg_t object);
*/
extern Common::Rect get_nsrect(EngineState *s, reg_t object, byte clip);
-/**
- * Removes all views in anticipation of a new window or text
- */
-void _k_dyn_view_list_prepare_change(EngineState *s);
-
-/**
- * Redraws all views after a new window or text was added
- */
-void _k_dyn_view_list_accept_change(EngineState *s);
-
-
-
/******************** Misc functions ********************/
diff --git a/engines/sci/engine/vm.cpp b/engines/sci/engine/vm.cpp
index bc0c441869..c507d4ec14 100644
--- a/engines/sci/engine/vm.cpp
+++ b/engines/sci/engine/vm.cpp
@@ -285,7 +285,7 @@ ExecStack *send_selector(EngineState *s, reg_t send_obj, reg_t work_obj, StackPt
Breakpoint *bp;
char method_name [256];
- sprintf(method_name, "%s::%s", s->segMan->getObjectName(send_obj), ((SciEngine*)g_engine)->getKernel()->getSelectorName(selector).c_str());
+ sprintf(method_name, "%s::%s", s->segMan->getObjectName(send_obj), ((SciEngine *)g_engine)->getKernel()->getSelectorName(selector).c_str());
bp = s->bp_list;
while (bp) {
@@ -909,36 +909,33 @@ void run_vm(EngineState *s, int restoring) {
break;
}
- case 0x21: // callk
+ case 0x21: { // callk
gc_countdown(s);
scriptState.xs->sp -= (opparams[1] >> 1) + 1;
- {
- bool oldScriptHeader = (s->segMan->sciVersion() == SCI_VERSION_0_EARLY);
- if (!oldScriptHeader) {
- scriptState.xs->sp -= scriptState.restAdjust;
- s->restAdjust = 0; // We just used up the scriptState.restAdjust, remember?
- }
+ bool oldScriptHeader = (s->segMan->sciVersion() == SCI_VERSION_0_EARLY);
+ if (!oldScriptHeader) {
+ scriptState.xs->sp -= scriptState.restAdjust;
+ s->restAdjust = 0; // We just used up the scriptState.restAdjust, remember?
}
- if (opparams[0] >= (int)((SciEngine*)g_engine)->getKernel()->_kernelFuncs.size()) {
+ Kernel *kernel = ((SciEngine *)g_engine)->getKernel();
+
+ if (opparams[0] >= (int)kernel->_kernelFuncs.size()) {
error("Invalid kernel function 0x%x requested", opparams[0]);
} else {
+ const KernelFuncWithSignature &kfun = kernel->_kernelFuncs[opparams[0]];
int argc = ASSERT_ARITHMETIC(scriptState.xs->sp[0]);
- bool oldScriptHeader = (s->segMan->sciVersion() == SCI_VERSION_0_EARLY);
if (!oldScriptHeader)
argc += scriptState.restAdjust;
- if (((SciEngine*)g_engine)->getKernel()->_kernelFuncs[opparams[0]].signature
- && !kernel_matches_signature(s->segMan,
- ((SciEngine*)g_engine)->getKernel()->_kernelFuncs[opparams[0]].signature, argc,
- scriptState.xs->sp + 1)) {
+ if (kfun.signature
+ && !kernel_matches_signature(s->segMan, kfun.signature, argc, scriptState.xs->sp + 1)) {
error("[VM] Invalid arguments to kernel call %x", opparams[0]);
} else {
- s->r_acc = ((SciEngine*)g_engine)->getKernel()->_kernelFuncs[opparams[0]].fun(s, opparams[0],
- argc, scriptState.xs->sp + 1);
+ s->r_acc = kfun.fun(s, opparams[0], argc, scriptState.xs->sp + 1);
}
// Call kernel function
@@ -952,6 +949,7 @@ void run_vm(EngineState *s, int restoring) {
scriptState.restAdjust = s->restAdjust;
}
break;
+ }
case 0x22: // callb
temp = ((opparams[1] >> 1) + scriptState.restAdjust + 1);
@@ -1862,7 +1860,7 @@ static EngineState *_game_run(EngineState *&s, int restoring) {
script_init_engine(s);
game_init(s);
sfx_reset_player();
- _init_stack_base_with_selector(s, ((SciEngine*)g_engine)->getKernel()->_selectorMap.play);
+ _init_stack_base_with_selector(s, ((SciEngine *)g_engine)->getKernel()->_selectorMap.play);
send_selector(s, s->game_obj, s->game_obj, s->stack_base, 2, s->stack_base);
@@ -1881,7 +1879,7 @@ static EngineState *_game_run(EngineState *&s, int restoring) {
debugC(2, kDebugLevelVM, "Restarting with replay()\n");
s->_executionStack.clear(); // Restart with replay
- _init_stack_base_with_selector(s, ((SciEngine*)g_engine)->getKernel()->_selectorMap.replay);
+ _init_stack_base_with_selector(s, ((SciEngine *)g_engine)->getKernel()->_selectorMap.replay);
send_selector(s, s->game_obj, s->game_obj, s->stack_base, 2, s->stack_base);
}
@@ -1900,7 +1898,7 @@ int game_run(EngineState **_s) {
EngineState *s = *_s;
debugC(2, kDebugLevelVM, "Calling %s::play()\n", s->_gameName.c_str());
- _init_stack_base_with_selector(s, ((SciEngine*)g_engine)->getKernel()->_selectorMap.play); // Call the play selector
+ _init_stack_base_with_selector(s, ((SciEngine *)g_engine)->getKernel()->_selectorMap.play); // Call the play selector
// Now: Register the first element on the execution stack-
if (!send_selector(s, s->game_obj, s->game_obj, s->stack_base, 2, s->stack_base)) {