diff options
author | Travis Howell | 2005-03-10 10:11:42 +0000 |
---|---|---|
committer | Travis Howell | 2005-03-10 10:11:42 +0000 |
commit | ab82349dd9548b04f5af8e046cff4135acd965ed (patch) | |
tree | 3ce2953017c9d250bf895e0e6fd43e135ab35418 /scumm | |
parent | f7770e3cfed15e9116c37c87280b9c484d27a4f3 (diff) | |
download | scummvm-rg350-ab82349dd9548b04f5af8e046cff4135acd965ed.tar.gz scummvm-rg350-ab82349dd9548b04f5af8e046cff4135acd965ed.tar.bz2 scummvm-rg350-ab82349dd9548b04f5af8e046cff4135acd965ed.zip |
Add HE100 opcode difference for spyfox
Update HE issues
svn-id: r17058
Diffstat (limited to 'scumm')
-rw-r--r-- | scumm/intern.h | 1 | ||||
-rw-r--r-- | scumm/script_v100he.cpp | 60 |
2 files changed, 60 insertions, 1 deletions
diff --git a/scumm/intern.h b/scumm/intern.h index c2018f315a..f6d63c4f61 100644 --- a/scumm/intern.h +++ b/scumm/intern.h @@ -1073,6 +1073,7 @@ protected: void o100_dim2dimArray(); void o100_redim2dimArray(); void o100_dimArray(); + void o100_unknownE0(); void o100_drawObject(); void o100_setSpriteGroupInfo(); void o100_resourceRoutines(); diff --git a/scumm/script_v100he.cpp b/scumm/script_v100he.cpp index f9143c32e4..d3019b2f2b 100644 --- a/scumm/script_v100he.cpp +++ b/scumm/script_v100he.cpp @@ -88,7 +88,7 @@ void ScummEngine_v100he::setupOpcodes() { /* 24 */ OPCODE(o72_drawWizImage), OPCODE(o80_drawWizPolygon), - OPCODE(o6_invalid), + OPCODE(o100_unknownE0), OPCODE(o100_drawObject), /* 28 */ OPCODE(o6_dup), @@ -812,6 +812,64 @@ void ScummEngine_v100he::o100_dimArray() { defineArray(fetchScriptWord(), data, 0, 0, 0, pop()); } +void ScummEngine_v100he::o100_unknownE0() { + // wizImage related + int b, c, d, num, x1, y1, type = 0; + + b = pop(); + num = pop(); + c = pop(); + d = pop(); + y1 = pop(); + x1 = pop(); + + byte subOp = fetchScriptByte(); + + switch (subOp) { + case 1: + { + Actor *a = derefActorSafe(num, "o100_unknownE0"); + int top_actor = a->top; + int bottom_actor = a->bottom; + a->drawToBackBuf = true; + a->needRedraw = true; + a->drawActorCostume(); + a->drawToBackBuf = false; + a->needRedraw = true; + a->drawActorCostume(); + a->needRedraw = false; + + if (a->top > top_actor) + a->top = top_actor; + if (a->bottom < bottom_actor) + a->bottom = bottom_actor; + + type = 2; + } + break; + case 20: + type = 1; + break; + case 40: + { + WizImage wi; + wi.flags = 0; + wi.y1 = y1; + wi.x1 = x1; + wi.resNum = num; + wi.state = 0; + displayWizImage(&wi); + + type = 3; + } + break; + default: + error("o100_unknownE0: default case %d", subOp); + } + + debug(1,"o100_unknownE0 stub: type %d (%d, num %d, %d, %d, y %d, x %d)", type, b, num, c, d, y1, x1); +} + void ScummEngine_v100he::o100_drawObject() { byte subOp = fetchScriptByte(); int state, y, x; |