diff options
author | Paweł Kołodziejski | 2003-03-18 20:32:01 +0000 |
---|---|---|
committer | Paweł Kołodziejski | 2003-03-18 20:32:01 +0000 |
commit | 4cdfd9c2beae3de73a9ee19ae1db8609b8667e6c (patch) | |
tree | 00ef5f9e723f1daec68ea06006678481c8edb8a3 /scumm/script_v6.cpp | |
parent | 52bf93a8aa055f54eb155a7f205cbfc805e51dbf (diff) | |
download | scummvm-rg350-4cdfd9c2beae3de73a9ee19ae1db8609b8667e6c.tar.gz scummvm-rg350-4cdfd9c2beae3de73a9ee19ae1db8609b8667e6c.tar.bz2 scummvm-rg350-4cdfd9c2beae3de73a9ee19ae1db8609b8667e6c.zip |
added script opcode for dig minigame
svn-id: r6834
Diffstat (limited to 'scumm/script_v6.cpp')
-rw-r--r-- | scumm/script_v6.cpp | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/scumm/script_v6.cpp b/scumm/script_v6.cpp index 23440e47c9..009415172c 100644 --- a/scumm/script_v6.cpp +++ b/scumm/script_v6.cpp @@ -323,7 +323,7 @@ void Scumm_v6::setupOpcodes() { OPCODE(o6_invalid), /* E0 */ OPCODE(o6_unknownE0), - OPCODE(o6_invalid), + OPCODE(o6_unknownE1), OPCODE(o6_localizeArray), OPCODE(o6_pickVarRandom), /* E4 */ @@ -2922,6 +2922,39 @@ void Scumm_v6::o6_getDateTime() { _vars[VAR_TIMEDATE_SECOND] = t->tm_sec; } +void Scumm_v6::o6_unknownE1() { + // this opcode check ground area in minigame in the dig + int x = pop(); + int y = pop(); + + if (x > _realWidth - 1) { + push(-1); + return; + } + if (x < 0) { + push(-1); + return; + } + + if (y < 0) { + push(-1); + return; + } + + VirtScreen *vs = findVirtScreen(y); + + if (vs == NULL) { + push(-1); + return; + } + + // FIXME: something is wrong, it take wrong position or wrong buffer check + int offset = (y - vs->topline) * _realWidth + x + vs->tdirty[0]; + + byte area = *(getResourceAddress(rtBuffer, vs->number + 1) + offset); + push(area); +} + void Scumm_v6::o6_unknownE0() { int a = fetchScriptByte(); warning("o6_unknownEO(%d) stub", a); |