aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Gray2003-02-17 10:14:43 +0000
committerJonathan Gray2003-02-17 10:14:43 +0000
commite909c6b86d681a1b7ce221cf2d84fca94b51751a (patch)
tree74bc61c589c76080cc2c826c0a249ad02f8cade8
parentecd84d8585f32a51981a54174ee38b182bcf0d1d (diff)
downloadscummvm-rg350-e909c6b86d681a1b7ce221cf2d84fca94b51751a.tar.gz
scummvm-rg350-e909c6b86d681a1b7ce221cf2d84fca94b51751a.tar.bz2
scummvm-rg350-e909c6b86d681a1b7ce221cf2d84fca94b51751a.zip
unstub stopTalking as the relevant function stopTalk() already exists in scummvm, add an attempt at findAllObjects that is hopefully not totally wrong, puttmoon now crashes on finding an AKOS block when it is expecting COST, some surgery may be required as all the AKOS stuff seems to be wrapped up in GF_AFTER_V7
svn-id: r6614
-rw-r--r--scumm/intern.h1
-rw-r--r--scumm/script_v6.cpp26
2 files changed, 25 insertions, 2 deletions
diff --git a/scumm/intern.h b/scumm/intern.h
index 94ea6ebdd5..6ab4b821ac 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -369,6 +369,7 @@ protected:
void o6_openFile();
void o6_closeFile();
void o6_deleteFile();
+ void o6_findAllObjects();
};
class Scumm_v7 : public Scumm_v6
diff --git a/scumm/script_v6.cpp b/scumm/script_v6.cpp
index b3ab94add2..372da5f4e2 100644
--- a/scumm/script_v6.cpp
+++ b/scumm/script_v6.cpp
@@ -319,7 +319,7 @@ void Scumm_v6::setupOpcodes()
OPCODE(o6_invalid),
/* DC */
OPCODE(o6_invalid),
- OPCODE(o6_invalid),
+ OPCODE(o6_findAllObjects),
OPCODE(o6_deleteFile),
OPCODE(o6_invalid),
/* E0 */
@@ -2902,7 +2902,7 @@ void Scumm_v6::o6_stampObject() {
}
void Scumm_v6::o6_stopTalking() {
- warning("o6_stopTalking: stub");
+ stopTalk();
}
void Scumm_v6::o6_openFile() {
@@ -2927,6 +2927,28 @@ void Scumm_v6::o6_deleteFile() {
_scriptPointer += len + 1;
}
+void Scumm_v6::o6_findAllObjects() {
+ // FIXME is this even remotely correct?
+ // see http://users.bigpond.net.au/tgray2/findallobjects.txt
+ // for asm
+ int a = pop();
+ int i = 1;
+
+ warning("stub o6_findAllObjects(%d)", a);
+ if (a != _currentRoom)
+ warning("o6_findAllObjects: current room is not %d", a);
+ writeVar(0, 0);
+ defineArray(0, 5, 0, _numLocalObjects);
+ defineArray(0, 0, 0, _numLocalObjects);
+
+ while(i < _numLocalObjects) {
+ writeArray(0, 0, i, _objs[i].obj_nr);
+ i++;
+ }
+
+ push(readVar(0));
+}
+
void Scumm_v6::decodeParseString(int m, int n)
{
byte b;