diff options
author | Jonathan Gray | 2003-02-17 10:14:43 +0000 |
---|---|---|
committer | Jonathan Gray | 2003-02-17 10:14:43 +0000 |
commit | e909c6b86d681a1b7ce221cf2d84fca94b51751a (patch) | |
tree | 74bc61c589c76080cc2c826c0a249ad02f8cade8 | |
parent | ecd84d8585f32a51981a54174ee38b182bcf0d1d (diff) | |
download | scummvm-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.h | 1 | ||||
-rw-r--r-- | scumm/script_v6.cpp | 26 |
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; |