aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Kiewitz2009-10-12 13:10:25 +0000
committerMartin Kiewitz2009-10-12 13:10:25 +0000
commit3599ac0b9b60bf05039aab4d6df2c84152ea66cb (patch)
tree2089b28338fc958cbff849020caa80f767de817a
parent03a24ccae0ca7c348fc2040871623a765b62b105 (diff)
downloadscummvm-rg350-3599ac0b9b60bf05039aab4d6df2c84152ea66cb.tar.gz
scummvm-rg350-3599ac0b9b60bf05039aab4d6df2c84152ea66cb.tar.bz2
scummvm-rg350-3599ac0b9b60bf05039aab4d6df2c84152ea66cb.zip
SCI: now allowing calling celWide and celHigh with only 2 parameters (done by eco quest 1 when entering menu)
svn-id: r44986
-rw-r--r--engines/sci/engine/kernel.cpp4
-rw-r--r--engines/sci/engine/kgraphics.cpp14
2 files changed, 8 insertions, 10 deletions
diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp
index 920ea66d5b..49e09c7cb6 100644
--- a/engines/sci/engine/kernel.cpp
+++ b/engines/sci/engine/kernel.cpp
@@ -199,8 +199,8 @@ SciKernelFunction kfunct_mappers[] = {
/*0c*/ DEFUN("SetNowSeen", kSetNowSeen, "oi*"), // The second parameter is ignored
/*0d*/ DEFUN("NumLoops", kNumLoops, "o"),
/*0e*/ DEFUN("NumCels", kNumCels, "o"),
- /*0f*/ DEFUN("CelWide", kCelWide, "iOiOi"),
- /*10*/ DEFUN("CelHigh", kCelHigh, "iOiOi"),
+ /*0f*/ DEFUN("CelWide", kCelWide, "iOi*"),
+ /*10*/ DEFUN("CelHigh", kCelHigh, "iOi*"),
/*11*/ DEFUN("DrawCel", kDrawCel, "iiiiii*"),
/*12*/ DEFUN("AddToPic", kAddToPic, "Il*"),
// FIXME: signature check removed (set to .*) as kNewWindow is different in Mac versions
diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp
index 318a6533eb..35fef54224 100644
--- a/engines/sci/engine/kgraphics.cpp
+++ b/engines/sci/engine/kgraphics.cpp
@@ -794,13 +794,12 @@ reg_t kIsItSkip(EngineState *s, int argc, reg_t *argv) {
reg_t kCelHigh(EngineState *s, int argc, reg_t *argv) {
int view = argv[0].toSint16();
int loop = argv[1].toSint16();
- int cel = argv[2].toSint16();
+ int cel = (argc > 3) ? argv[2].toSint16() : 0;
int height, width;
Common::Point offset;
- if (argc != 3) {
- warning("CelHigh called with %d parameters", argc);
- }
+ if (argc > 4)
+ error("celHigh called with more than 3 parameters");
gfxop_get_cel_parameters(s->gfx_state, view, loop, cel, &width, &height, &offset);
return make_reg(0, height);
@@ -809,13 +808,12 @@ reg_t kCelHigh(EngineState *s, int argc, reg_t *argv) {
reg_t kCelWide(EngineState *s, int argc, reg_t *argv) {
int view = argv[0].toSint16();
int loop = argv[1].toSint16();
- int cel = argv[2].toSint16();
+ int cel = (argc > 3) ? argv[2].toSint16() : 0;
int height, width;
Common::Point offset;
- if (argc != 3) {
- warning("CelHigh called with %d parameters", argc);
- }
+ if (argc > 4)
+ error("celWide called with more than 3 parameters");
gfxop_get_cel_parameters(s->gfx_state, view, loop, cel, &width, &height, &offset);
return make_reg(0, width);