aboutsummaryrefslogtreecommitdiff
path: root/engines/access
diff options
context:
space:
mode:
authorStrangerke2014-08-10 17:49:44 +0200
committerStrangerke2014-08-10 17:50:28 +0200
commit00f7a3404db0598429f6c733a15d766675624b36 (patch)
tree2fe32a21097350a4a998c431eaf89d2ea1cfa29a /engines/access
parentcce0c2ff97878b2b0b8a87e25395c3ef98bc584e (diff)
downloadscummvm-rg350-00f7a3404db0598429f6c733a15d766675624b36.tar.gz
scummvm-rg350-00f7a3404db0598429f6c733a15d766675624b36.tar.bz2
scummvm-rg350-00f7a3404db0598429f6c733a15d766675624b36.zip
ACCESS: Implement 3 more opcodes
Diffstat (limited to 'engines/access')
-rw-r--r--engines/access/access.cpp1
-rw-r--r--engines/access/access.h1
-rw-r--r--engines/access/scripts.cpp29
-rw-r--r--engines/access/scripts.h6
4 files changed, 29 insertions, 8 deletions
diff --git a/engines/access/access.cpp b/engines/access/access.cpp
index d0bc1a8846..dc9bf527eb 100644
--- a/engines/access/access.cpp
+++ b/engines/access/access.cpp
@@ -44,6 +44,7 @@ AccessEngine::AccessEngine(OSystem *syst, const AccessGameDescription *gameDesc)
_sound = nullptr;
_destIn = nullptr;
+ _current = nullptr;
clearCellTable();
_pCount = 0;
_selectCommand = 0;
diff --git a/engines/access/access.h b/engines/access/access.h
index c93a1b32e5..0733ab4bef 100644
--- a/engines/access/access.h
+++ b/engines/access/access.h
@@ -115,6 +115,7 @@ public:
SoundManager *_sound;
ASurface *_destIn;
+ ASurface *_current;
ASurface _buffer1;
ASurface _buffer2;
byte *_objectsTable[100];
diff --git a/engines/access/scripts.cpp b/engines/access/scripts.cpp
index fe53c675c2..2a825212fd 100644
--- a/engines/access/scripts.cpp
+++ b/engines/access/scripts.cpp
@@ -90,11 +90,11 @@ void Scripts::executeCommand(int commandIndex) {
&Scripts::cmdSetInventory, &Scripts::cmdSetInventory, &Scripts::cmdCheckInventory,
&Scripts::CMDSETTEX, &Scripts::CMDNEWROOM, &Scripts::CMDCONVERSE,
&Scripts::CMDCHECKFRAME, &Scripts::cmdCheckAnim, &Scripts::CMDSND,
- &Scripts::CMDRETNEG, &Scripts::cmdRetPos, &Scripts::cmdCheckLoc,
+ &Scripts::cmdRetNeg, &Scripts::cmdRetPos, &Scripts::cmdCheckLoc,
&Scripts::cmdSetAnim, &Scripts::CMDDISPINV, &Scripts::CMDSETTIMER,
&Scripts::CMDSETTIMER, &Scripts::CMDCHECKTIMER, &Scripts::CMDSETTRAVEL,
&Scripts::CMDSETTRAVEL, &Scripts::CMDSETVID, &Scripts::CMDPLAYVID,
- &Scripts::CMDPLOTIMAGE, &Scripts::CMDSETDISPLAY, &Scripts::CMDSETBUFFER,
+ &Scripts::cmdPlotImage, &Scripts::cmdSetDisplay, &Scripts::CMDSETBUFFER,
&Scripts::CMDSETSCROLL, &Scripts::CMDSAVERECT, &Scripts::CMDSAVERECT,
&Scripts::CMDSETBUFVID, &Scripts::CMDPLAYBUFVID, &Scripts::cmeRemoveLast,
&Scripts::CMDSPECIAL, &Scripts::CMDSPECIAL, &Scripts::CMDSPECIAL,
@@ -233,7 +233,11 @@ void Scripts::cmdCheckAnim() {
}
void Scripts::CMDSND() { }
-void Scripts::CMDRETNEG() { }
+
+void Scripts::cmdRetNeg() {
+ _endFlag = true;
+ _returnCode = -1;
+}
void Scripts::cmdCheckLoc() {
int minX = _data->readUint16LE();
@@ -262,8 +266,23 @@ void Scripts::CMDCHECKTIMER() { }
void Scripts::CMDSETTRAVEL() { }
void Scripts::CMDSETVID() { }
void Scripts::CMDPLAYVID() { }
-void Scripts::CMDPLOTIMAGE() { }
-void Scripts::CMDSETDISPLAY() { }
+
+void Scripts::cmdPlotImage() {
+ _vm->_destIn = _vm->_current;
+
+ int destX = _data->readUint16LE();
+ int destY = _data->readUint16LE();
+ int objId = _data->readUint16LE();
+ int imgId = _data->readUint16LE();
+
+ _vm->_screen->plotImage(_vm->_objectsTable[objId], imgId, Common::Point(destX, destY));
+}
+
+void Scripts::cmdSetDisplay() {
+ _vm->_screen->setDisplayScan();
+ _vm->_current = _vm->_screen;
+}
+
void Scripts::CMDSETBUFFER() { }
void Scripts::CMDSETSCROLL() { }
void Scripts::CMDSAVERECT() { }
diff --git a/engines/access/scripts.h b/engines/access/scripts.h
index 79ae478cc9..0bdc746d78 100644
--- a/engines/access/scripts.h
+++ b/engines/access/scripts.h
@@ -69,7 +69,7 @@ protected:
void CMDCHECKFRAME();
void cmdCheckAnim();
void CMDSND();
- void CMDRETNEG();
+ void cmdRetNeg();
void cmdCheckLoc();
void cmdSetAnim();
void CMDDISPINV();
@@ -78,8 +78,8 @@ protected:
void CMDSETTRAVEL();
void CMDSETVID();
void CMDPLAYVID();
- void CMDPLOTIMAGE();
- void CMDSETDISPLAY();
+ void cmdPlotImage();
+ void cmdSetDisplay();
void CMDSETBUFFER();
void CMDSETSCROLL();
void CMDSAVERECT();