aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorKari Salminen2008-06-26 17:29:21 +0000
committerKari Salminen2008-06-26 17:29:21 +0000
commit971f27beb27cd853df7f20dbd21dc92e88b3f697 (patch)
tree17782dab2dfc723e094bf9f35e5c05524a2e0b8b /engines
parentfafda89d0c53a2ac9b0521c1e4549388f14ccea0 (diff)
downloadscummvm-rg350-971f27beb27cd853df7f20dbd21dc92e88b3f697.tar.gz
scummvm-rg350-971f27beb27cd853df7f20dbd21dc92e88b3f697.tar.bz2
scummvm-rg350-971f27beb27cd853df7f20dbd21dc92e88b3f697.zip
Fixed opcode:
- 0x83: o2_isSeqRunning (Should it be named o2_isSeqNotRunning?) -- Added previously missing test part -- Negated the result (It was backwards before!) svn-id: r32804
Diffstat (limited to 'engines')
-rw-r--r--engines/cine/script_os.cpp4
-rw-r--r--engines/cine/various.cpp9
-rw-r--r--engines/cine/various.h2
3 files changed, 10 insertions, 5 deletions
diff --git a/engines/cine/script_os.cpp b/engines/cine/script_os.cpp
index aeb5302c22..78b6c55564 100644
--- a/engines/cine/script_os.cpp
+++ b/engines/cine/script_os.cpp
@@ -462,11 +462,13 @@ int FWScript::o2_modifySeqListElement() {
return 0;
}
+/*! \todo Check whether this opcode's name is backwards (i.e. should it be o2_isSeqNotRunning?)
+ */
int FWScript::o2_isSeqRunning() {
byte a = getNextByte();
byte b = getNextByte();
- debugC(5, kCineDebugScript, "Line: %d: OP83(%d,%d) -> TODO", _line, a, b);
+ debugC(5, kCineDebugScript, "Line: %d: o2_isSeqRunning(%d,%d)", _line, a, b);
if (isSeqRunning(a, 0, b)) {
_compare = 1;
diff --git a/engines/cine/various.cpp b/engines/cine/various.cpp
index 640ca8a169..20d9edc5de 100644
--- a/engines/cine/various.cpp
+++ b/engines/cine/various.cpp
@@ -1586,16 +1586,19 @@ void removeSeq(uint16 param1, uint16 param2, uint16 param3) {
}
}
-uint16 isSeqRunning(uint16 param1, uint16 param2, uint16 param3) {
+bool isSeqRunning(uint16 param1, uint16 param2, uint16 param3) {
Common::List<SeqListElement>::iterator it;
for (it = seqList.begin(); it != seqList.end(); ++it) {
if (it->objIdx == param1 && it->var4 == param2 && it->varE == param3) {
- return 1;
+ // Just to be on the safe side there's a restriction of the
+ // addition's result to 16-bit arithmetic here like in the
+ // original. It's possible that it's not strictly needed.
+ return ((it->var14 + it->var16) & 0xFFFF) == 0;
}
}
- return 0;
+ return true;
}
void addSeqListElement(uint16 objIdx, int16 param1, int16 param2, int16 frame, int16 param4, int16 param5, int16 param6, int16 param7, int16 param8) {
diff --git a/engines/cine/various.h b/engines/cine/various.h
index c17138e487..d05447fb40 100644
--- a/engines/cine/various.h
+++ b/engines/cine/various.h
@@ -137,7 +137,7 @@ void addMessage(byte param1, int16 param2, int16 param3, int16 param4, int16 par
void removeMessages();
void removeSeq(uint16 param1, uint16 param2, uint16 param3);
-uint16 isSeqRunning(uint16 param1, uint16 param2, uint16 param3);
+bool isSeqRunning(uint16 param1, uint16 param2, uint16 param3);
void addSeqListElement(uint16 objIdx, int16 param1, int16 param2, int16 frame, int16 param4, int16 param5, int16 param6, int16 param7, int16 param8);
void modifySeqListElement(uint16 objIdx, int16 var4Test, int16 param1, int16 param2, int16 param3, int16 param4);
void processSeqList(void);