aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/prince/font.cpp2
-rw-r--r--engines/prince/font.h2
-rw-r--r--engines/prince/mhwanh.cpp7
-rw-r--r--engines/prince/prince.cpp31
-rw-r--r--engines/prince/prince.h2
-rw-r--r--engines/prince/script.cpp366
-rw-r--r--engines/prince/script.h336
7 files changed, 712 insertions, 34 deletions
diff --git a/engines/prince/font.cpp b/engines/prince/font.cpp
index 8d812c4d15..e72d73e61a 100644
--- a/engines/prince/font.cpp
+++ b/engines/prince/font.cpp
@@ -35,7 +35,7 @@ Font::Font() {
}
Font::~Font() {
- delete _fontData;
+ delete [] _fontData;
}
bool Font::load(Common::SeekableReadStream &stream) {
diff --git a/engines/prince/font.h b/engines/prince/font.h
index 0bffcf601b..ceae67df85 100644
--- a/engines/prince/font.h
+++ b/engines/prince/font.h
@@ -25,7 +25,7 @@
#include "graphics/font.h"
namespace Graphics {
- class Surface;
+ struct Surface;
}
namespace Common {
diff --git a/engines/prince/mhwanh.cpp b/engines/prince/mhwanh.cpp
index 0847220a70..4240ed4097 100644
--- a/engines/prince/mhwanh.cpp
+++ b/engines/prince/mhwanh.cpp
@@ -29,7 +29,7 @@
namespace Prince {
MhwanhDecoder::MhwanhDecoder()
- : _surface(0), _palette(0), _paletteColorCount(0) {
+ : _surface(NULL), _palette(0), _paletteColorCount(0) {
}
MhwanhDecoder::~MhwanhDecoder() {
@@ -39,7 +39,7 @@ MhwanhDecoder::~MhwanhDecoder() {
void MhwanhDecoder::destroy() {
if (_surface) {
_surface->free();
- _surface = 0;
+ delete _surface; _surface = 0;
}
delete [] _palette; _palette = 0;
@@ -47,6 +47,7 @@ void MhwanhDecoder::destroy() {
}
bool MhwanhDecoder::loadStream(Common::SeekableReadStream &stream) {
+ destroy();
_paletteColorCount = 256;
stream.seek(0);
stream.skip(0x20);
@@ -61,7 +62,7 @@ bool MhwanhDecoder::loadStream(Common::SeekableReadStream &stream) {
_surface = new Graphics::Surface();
_surface->create(640, 480, Graphics::PixelFormat::createFormatCLUT8());
for (int h = 0; h < 480; ++h) {
- stream.read(_surface->getBasePtr(0, h - 1), 640);
+ stream.read(_surface->getBasePtr(0, h), 640);
}
return true;
diff --git a/engines/prince/prince.cpp b/engines/prince/prince.cpp
index 9cd7056a41..c82dfd6723 100644
--- a/engines/prince/prince.cpp
+++ b/engines/prince/prince.cpp
@@ -47,10 +47,12 @@
#include "prince/font.h"
#include "prince/mhwanh.h"
#include "prince/graphics.h"
+#include "prince/script.h"
namespace Prince {
-PrinceEngine::PrinceEngine(OSystem *syst, const PrinceGameDescription *gameDesc) : Engine(syst), _gameDescription(gameDesc) {
+PrinceEngine::PrinceEngine(OSystem *syst, const PrinceGameDescription *gameDesc) :
+ Engine(syst), _gameDescription(gameDesc), _graph(NULL), _script(NULL) {
_rnd = new Common::RandomSource("prince");
}
@@ -96,22 +98,33 @@ Common::Error PrinceEngine::run() {
_system->getPaletteManager()->setPalette(roomBmp.getPalette(), 0, 256);
//font1.drawString(_frontScreen, "Hello World", 10, 10, 640, 1);
-
- MhwanhDecoder walizkaBmp;
+ //
+ _graph->_roomBackground = roomBmp.getSurface();
+#if 1
+ MhwanhDecoder *walizkaBmp = new MhwanhDecoder();
if (walizka) {
debug("Loading walizka");
- if (walizkaBmp.loadStream(*walizka)) {
- _graph->_roomBackground = walizkaBmp.getSurface();
- _graph->setPalette(walizkaBmp.getPalette());
+ if (walizkaBmp->loadStream(*walizka)) {
+ _graph->_roomBackground = walizkaBmp->getSurface();
+ _graph->setPalette(walizkaBmp->getPalette());
}
}
-
+#endif
_graph->change();
+
+ Common::SeekableReadStream * skryptStream = SearchMan.createReadStreamForMember("skrypt.dat");
+ if (!skryptStream)
+ return Common::kPathNotFile;
+ _script = new Script(this);
+ _script->loadFromStream(*skryptStream);
+
+ delete skryptStream;
mainLoop();
+ delete room;
+ delete walizkaBmp;
}
- delete room;
return Common::kNoError;
}
@@ -145,6 +158,8 @@ void PrinceEngine::mainLoop() {
if (shouldQuit())
return;
+ _script->step();
+
_graph->update();
_system->delayMillis(40);
diff --git a/engines/prince/prince.h b/engines/prince/prince.h
index 0c79d36ca4..966cee982e 100644
--- a/engines/prince/prince.h
+++ b/engines/prince/prince.h
@@ -41,6 +41,7 @@ struct PrinceGameDescription;
class PrinceEngine;
class GraphicsMan;
+class Script;
class PrinceEngine : public Engine {
protected:
@@ -62,6 +63,7 @@ public:
private:
Common::RandomSource *_rnd;
GraphicsMan *_graph;
+ Script *_script;
void mainLoop();
diff --git a/engines/prince/script.cpp b/engines/prince/script.cpp
index da1dd4cf28..611b75152f 100644
--- a/engines/prince/script.cpp
+++ b/engines/prince/script.cpp
@@ -1,15 +1,19 @@
#include "prince/script.h"
+#include "common/debug.h"
#include "common/debug-channels.h"
#include "common/stream.h"
namespace Prince {
+static const uint16 NUM_OPCODES = 144;
+
Script::Script(PrinceEngine *vm) :
_code(NULL), _stacktop(0), _vm(vm), _random("GroovieScripts") {
}
Script::~Script() {
+ delete[] _code;
}
bool Script::loadFromStream(Common::SeekableReadStream &stream) {
@@ -21,12 +25,43 @@ bool Script::loadFromStream(Common::SeekableReadStream &stream) {
stream.read(_code, _codeSize);
// Initialize the script
- _currentInstruction = 0;
+ _currentInstruction = READ_LE_UINT32(_code + 4);
return true;
}
+void Script::debugScript(const char *s, ...) {
+ char buf[STRINGBUFLEN];
+ va_list va;
+
+ va_start(va, s);
+ vsnprintf(buf, STRINGBUFLEN, s, va);
+ va_end(va);
+
+ Common::String str = Common::String::format("@0x%04X: ", _lastInstruction);
+ str += Common::String::format("op 0x%02X: ", _lastOpcode);
+ debug("%s %s", str.c_str(), buf);
+}
+
void Script::step() {
+ _lastInstruction = _currentInstruction;
+ // Prepare the base debug string
+ Common::String dstr = Common::String::format("@0x%04X: ", _currentInstruction);
+
+ // Get the current opcode
+ _lastOpcode = readScript16bits();
+
+ dstr += Common::String::format("op 0x%02X: ", _lastOpcode);
+
+ if (_lastOpcode > NUM_OPCODES)
+ error("Trying to execute unknown opcode %s", dstr.c_str());
+
+
+ //debug("%s", _debugString.c_str());
+
+ // Execute the current opcode
+ OpcodeFunc op = _opcodes[_lastOpcode];
+ (this->*op)();
}
uint8 Script::getCodeByte(uint16 address) {
@@ -54,5 +89,334 @@ uint32 Script::readScript32bits() {
return lower | (upper << 16);
}
+void Script::O_WAITFOREVER() {
+ debugScript("O_WAITFOREVER");
+}
+void Script::O_BLACKPALETTE() {
+ debugScript("O_BLACKPALETTE");
+}
+void Script::O_SETUPPALETTE() {
+ debugScript("O_SETUPPALETTE");
+}
+void Script::O_INITROOM() {
+ uint16 roomId = readScript16bits();
+ debugScript("O_INITROOM %d", roomId);
+}
+void Script::O_SETSAMPLE() {}
+void Script::O_FREESAMPLE() {}
+void Script::O_PLAYSAMPLE() {}
+void Script::O_PUTOBJECT() {}
+void Script::O_REMOBJECT() {}
+void Script::O_SHOWANIM() {}
+void Script::O_CHECKANIMEND() {}
+void Script::O_FREEANIM() {}
+void Script::O_CHECKANIMFRAME() {}
+void Script::O_PUTBACKANIM() {}
+void Script::O_REMBACKANIM() {}
+void Script::O_CHECKBACKANIMFRAME() {}
+void Script::O_FREEALLSAMPLES() {}
+void Script::O_SETMUSIC() {}
+void Script::O_STOPMUSIC() {}
+void Script::O__WAIT() {}
+void Script::O_UPDATEOFF() {}
+void Script::O_UPDATEON() {}
+void Script::O_UPDATE () {}
+void Script::O_CLS() {}
+void Script::O__CALL() {
+ int32 address = readScript32bits();
+ _stack[_stacktop] = _currentInstruction;
+ _stacktop++;
+ _currentInstruction += address - 4;
+ debugScript("O__CALL 0x%04X", _currentInstruction);
+}
+void Script::O_RETURN() {
+ // Get the return address
+ if (_stacktop > 0) {
+ _stacktop--;
+ _currentInstruction = _stack[_stacktop];
+ } else {
+ error("Return: Stack is empty");
+ }
+}
+void Script::O_GO() {
+ uint32 opPC = readScript32bits();
+ debugScript("O_GO 0x%04X", opPC);
+ _currentInstruction += opPC - 4;
+}
+void Script::O_BACKANIMUPDATEOFF() {}
+void Script::O_BACKANIMUPDATEON() {}
+void Script::O_CHANGECURSOR() {
+ uint16 cursorId = readScript16bits();
+ debugScript("O_CHANGECURSOR %x", cursorId);
+}
+void Script::O_CHANGEANIMTYPE() {}
+void Script::O__SETFLAG() {
+ uint16 flagId = readScript16bits();
+ uint16 value = readScript16bits();
+ debugScript("O__SETFLAG 0x%04X %d", flagId, value);
+}
+void Script::O_COMPARE() {}
+void Script::O_JUMPZ() {}
+void Script::O_JUMPNZ() {}
+void Script::O_EXIT() {}
+void Script::O_ADDFLAG() {}
+void Script::O_TALKANIM() {}
+void Script::O_SUBFLAG() {}
+void Script::O_SETSTRING() {}
+void Script::O_ANDFLAG() {}
+void Script::O_GETMOBDATA() {}
+void Script::O_ORFLAG() {}
+void Script::O_SETMOBDATA() {}
+void Script::O_XORFLAG() {}
+void Script::O_GETMOBTEXT() {}
+void Script::O_MOVEHERO() {}
+void Script::O_WALKHERO() {}
+void Script::O_SETHERO() {}
+void Script::O_HEROOFF() {
+ uint16 heroId = readScript16bits();
+ debugScript("O_HEROOFF %d", heroId);
+}
+void Script::O_HEROON() {}
+void Script::O_CLSTEXT() {}
+void Script::O_CALLTABLE() {}
+void Script::O_CHANGEMOB() {}
+void Script::O_ADDINV() {}
+void Script::O_REMINV() {}
+void Script::O_REPINV() {}
+void Script::O_OBSOLETE_GETACTION() {}
+void Script::O_ADDWALKAREA() {}
+void Script::O_REMWALKAREA() {}
+void Script::O_RESTOREWALKAREA() {}
+void Script::O_WAITFRAME() {}
+void Script::O_SETFRAME() {}
+void Script::O_RUNACTION() {}
+void Script::O_COMPAREHI() {}
+void Script::O_COMPARELO() {}
+void Script::O_PRELOADSET() {}
+void Script::O_FREEPRELOAD() {}
+void Script::O_CHECKINV() {}
+void Script::O_TALKHERO() {}
+void Script::O_WAITTEXT() {}
+void Script::O_SETHEROANIM() {}
+void Script::O_WAITHEROANIM() {}
+void Script::O_GETHERODATA() {}
+void Script::O_GETMOUSEBUTTON() {}
+void Script::O_CHANGEFRAMES() {}
+void Script::O_CHANGEBACKFRAMES() {}
+void Script::O_GETBACKANIMDATA() {}
+void Script::O_GETANIMDATA() {}
+void Script::O_SETBGCODE() {}
+void Script::O_SETBACKFRAME() {}
+void Script::O_GETRND() {}
+void Script::O_TALKBACKANIM() {}
+void Script::O_LOADPATH() {}
+void Script::O_GETCHAR() {}
+void Script::O_SETDFLAG() {}
+void Script::O_CALLDFLAG() {}
+void Script::O_PRINTAT() {}
+void Script::O_ZOOMIN() {}
+void Script::O_ZOOMOUT() {}
+void Script::O_SETSTRINGOFFSET() {}
+void Script::O_GETOBJDATA() {}
+void Script::O_SETOBJDATA() {}
+void Script::O_SWAPOBJECTS() {}
+void Script::O_CHANGEHEROSET() {}
+void Script::O_ADDSTRING() {}
+void Script::O_SUBSTRING() {}
+void Script::O_INITDIALOG() {}
+void Script::O_ENABLEDIALOGOPT() {}
+void Script::O_DISABLEDIALOGOPT() {}
+void Script::O_SHOWDIALOGBOX() {}
+void Script::O_STOPSAMPLE() {}
+void Script::O_BACKANIMRANGE() {}
+void Script::O_CLEARPATH() {}
+void Script::O_SETPATH() {}
+void Script::O_GETHEROX() {}
+void Script::O_GETHEROY() {}
+void Script::O_GETHEROD() {}
+void Script::O_PUSHSTRING() {}
+void Script::O_POPSTRING() {}
+void Script::O_SETFGCODE() {}
+void Script::O_STOPHERO() {}
+void Script::O_ANIMUPDATEOFF() {}
+void Script::O_ANIMUPDATEON() {}
+void Script::O_FREECURSOR() {}
+void Script::O_ADDINVQUIET() {}
+void Script::O_RUNHERO() {}
+void Script::O_SETBACKANIMDATA() {}
+void Script::O_VIEWFLC() {}
+void Script::O_CHECKFLCFRAME() {}
+void Script::O_CHECKFLCEND() {}
+void Script::O_FREEFLC() {}
+void Script::O_TALKHEROSTOP() {}
+void Script::O_HEROCOLOR() {}
+void Script::O_GRABMAPA() {}
+void Script::O_ENABLENAK() {}
+void Script::O_DISABLENAK() {}
+void Script::O_GETMOBNAME() {}
+void Script::O_SWAPINVENTORY() {}
+void Script::O_CLEARINVENTORY() {}
+void Script::O_SKIPTEXT() {}
+void Script::O_SETVOICEH() {}
+void Script::O_SETVOICEA() {}
+void Script::O_SETVOICEB() {}
+void Script::O_SETVOICEC() {}
+void Script::O_VIEWFLCLOOP() {}
+void Script::O_FLCSPEED() {}
+void Script::O_OPENINVENTORY() {}
+void Script::O_KRZYWA() {}
+void Script::O_GETKRZYWA() {}
+void Script::O_GETMOB() {}
+void Script::O_INPUTLINE() {}
+void Script::O_SETVOICED() {}
+void Script::O_BREAK_POINT() {}
+
+Script::OpcodeFunc Script::_opcodes[NUM_OPCODES] = {
+ &Script::O_WAITFOREVER,
+ &Script::O_BLACKPALETTE,
+ &Script::O_SETUPPALETTE,
+ &Script::O_INITROOM,
+ &Script::O_SETSAMPLE,
+ &Script::O_FREESAMPLE,
+ &Script::O_PLAYSAMPLE,
+ &Script::O_PUTOBJECT,
+ &Script::O_REMOBJECT,
+ &Script::O_SHOWANIM,
+ &Script::O_CHECKANIMEND,
+ &Script::O_FREEANIM,
+ &Script::O_CHECKANIMFRAME,
+ &Script::O_PUTBACKANIM,
+ &Script::O_REMBACKANIM,
+ &Script::O_CHECKBACKANIMFRAME,
+ &Script::O_FREEALLSAMPLES,
+ &Script::O_SETMUSIC,
+ &Script::O_STOPMUSIC,
+ &Script::O__WAIT,
+ &Script::O_UPDATEOFF,
+ &Script::O_UPDATEON,
+ &Script::O_UPDATE ,
+ &Script::O_CLS,
+ &Script::O__CALL,
+ &Script::O_RETURN,
+ &Script::O_GO,
+ &Script::O_BACKANIMUPDATEOFF,
+ &Script::O_BACKANIMUPDATEON,
+ &Script::O_CHANGECURSOR,
+ &Script::O_CHANGEANIMTYPE,
+ &Script::O__SETFLAG,
+ &Script::O_COMPARE,
+ &Script::O_JUMPZ,
+ &Script::O_JUMPNZ,
+ &Script::O_EXIT,
+ &Script::O_ADDFLAG,
+ &Script::O_TALKANIM,
+ &Script::O_SUBFLAG,
+ &Script::O_SETSTRING,
+ &Script::O_ANDFLAG,
+ &Script::O_GETMOBDATA,
+ &Script::O_ORFLAG,
+ &Script::O_SETMOBDATA,
+ &Script::O_XORFLAG,
+ &Script::O_GETMOBTEXT,
+ &Script::O_MOVEHERO,
+ &Script::O_WALKHERO,
+ &Script::O_SETHERO,
+ &Script::O_HEROOFF,
+ &Script::O_HEROON,
+ &Script::O_CLSTEXT,
+ &Script::O_CALLTABLE,
+ &Script::O_CHANGEMOB,
+ &Script::O_ADDINV,
+ &Script::O_REMINV,
+ &Script::O_REPINV,
+ &Script::O_OBSOLETE_GETACTION,
+ &Script::O_ADDWALKAREA,
+ &Script::O_REMWALKAREA,
+ &Script::O_RESTOREWALKAREA,
+ &Script::O_WAITFRAME,
+ &Script::O_SETFRAME,
+ &Script::O_RUNACTION,
+ &Script::O_COMPAREHI,
+ &Script::O_COMPARELO,
+ &Script::O_PRELOADSET,
+ &Script::O_FREEPRELOAD,
+ &Script::O_CHECKINV,
+ &Script::O_TALKHERO,
+ &Script::O_WAITTEXT,
+ &Script::O_SETHEROANIM,
+ &Script::O_WAITHEROANIM,
+ &Script::O_GETHERODATA,
+ &Script::O_GETMOUSEBUTTON,
+ &Script::O_CHANGEFRAMES,
+ &Script::O_CHANGEBACKFRAMES,
+ &Script::O_GETBACKANIMDATA,
+ &Script::O_GETANIMDATA,
+ &Script::O_SETBGCODE,
+ &Script::O_SETBACKFRAME,
+ &Script::O_GETRND,
+ &Script::O_TALKBACKANIM,
+ &Script::O_LOADPATH,
+ &Script::O_GETCHAR,
+ &Script::O_SETDFLAG,
+ &Script::O_CALLDFLAG,
+ &Script::O_PRINTAT,
+ &Script::O_ZOOMIN,
+ &Script::O_ZOOMOUT,
+ &Script::O_SETSTRINGOFFSET,
+ &Script::O_GETOBJDATA,
+ &Script::O_SETOBJDATA,
+ &Script::O_SWAPOBJECTS,
+ &Script::O_CHANGEHEROSET,
+ &Script::O_ADDSTRING,
+ &Script::O_SUBSTRING,
+ &Script::O_INITDIALOG,
+ &Script::O_ENABLEDIALOGOPT,
+ &Script::O_DISABLEDIALOGOPT,
+ &Script::O_SHOWDIALOGBOX,
+ &Script::O_STOPSAMPLE,
+ &Script::O_BACKANIMRANGE,
+ &Script::O_CLEARPATH,
+ &Script::O_SETPATH,
+ &Script::O_GETHEROX,
+ &Script::O_GETHEROY,
+ &Script::O_GETHEROD,
+ &Script::O_PUSHSTRING,
+ &Script::O_POPSTRING,
+ &Script::O_SETFGCODE,
+ &Script::O_STOPHERO,
+ &Script::O_ANIMUPDATEOFF,
+ &Script::O_ANIMUPDATEON,
+ &Script::O_FREECURSOR,
+ &Script::O_ADDINVQUIET,
+ &Script::O_RUNHERO,
+ &Script::O_SETBACKANIMDATA,
+ &Script::O_VIEWFLC,
+ &Script::O_CHECKFLCFRAME,
+ &Script::O_CHECKFLCEND,
+ &Script::O_FREEFLC,
+ &Script::O_TALKHEROSTOP,
+ &Script::O_HEROCOLOR,
+ &Script::O_GRABMAPA,
+ &Script::O_ENABLENAK,
+ &Script::O_DISABLENAK,
+ &Script::O_GETMOBNAME,
+ &Script::O_SWAPINVENTORY,
+ &Script::O_CLEARINVENTORY,
+ &Script::O_SKIPTEXT,
+ &Script::O_SETVOICEH,
+ &Script::O_SETVOICEA,
+ &Script::O_SETVOICEB,
+ &Script::O_SETVOICEC,
+ &Script::O_VIEWFLCLOOP,
+ &Script::O_FLCSPEED,
+ &Script::O_OPENINVENTORY,
+ &Script::O_KRZYWA,
+ &Script::O_GETKRZYWA,
+ &Script::O_GETMOB,
+ &Script::O_INPUTLINE,
+ &Script::O_SETVOICED,
+ &Script::O_BREAK_POINT,
+};
+
}
diff --git a/engines/prince/script.h b/engines/prince/script.h
index 1365fb7ec5..93bac06433 100644
--- a/engines/prince/script.h
+++ b/engines/prince/script.h
@@ -46,26 +46,322 @@ public:
private:
PrinceEngine *_vm;
- Common::RandomSource _random;
-
- byte *_code;
- uint16 _codeSize;
- uint16 _currentInstruction;
-
- // Stack
- uint16 _stack[0x20];
- uint8 _stacktop;
- uint8 _savedStacktop;
-
- // Helper functions
- uint8 getCodeByte(uint16 address);
- uint8 readScript8bits();
- uint16 readScript16bits();
- uint32 readScript32bits();
- uint16 readScript8or16bits();
-
- typedef void (Script::*OpcodeFunc)();
- static OpcodeFunc _opcodes[];
+ Common::RandomSource _random;
+
+ byte *_code;
+ uint16 _codeSize;
+ uint32 _currentInstruction;
+ uint16 _lastOpcode;
+ uint32 _lastInstruction;
+
+ // Stack
+ uint16 _stack[500];
+ uint8 _stacktop;
+ uint8 _savedStacktop;
+
+ // Helper functions
+ uint8 getCodeByte(uint16 address);
+ uint8 readScript8bits();
+ uint16 readScript16bits();
+ uint32 readScript32bits();
+ uint16 readScript8or16bits();
+ void debugScript(const char *s, ...);
+
+ typedef void (Script::*OpcodeFunc)();
+ static OpcodeFunc _opcodes[];
+
+ void O_WAITFOREVER();
+ void O_BLACKPALETTE();
+ void O_SETUPPALETTE();
+ void O_INITROOM();
+ void O_SETSAMPLE();
+ void O_FREESAMPLE();
+ void O_PLAYSAMPLE();
+ void O_PUTOBJECT();
+ void O_REMOBJECT();
+ void O_SHOWANIM();
+ void O_CHECKANIMEND();
+ void O_FREEANIM();
+ void O_CHECKANIMFRAME();
+ void O_PUTBACKANIM();
+ void O_REMBACKANIM();
+ void O_CHECKBACKANIMFRAME();
+ void O_FREEALLSAMPLES();
+ void O_SETMUSIC();
+ void O_STOPMUSIC();
+ void O__WAIT();
+ void O_UPDATEOFF();
+ void O_UPDATEON();
+ void O_UPDATE ();
+ void O_CLS();
+ void O__CALL();
+ void O_RETURN();
+ void O_GO();
+ void O_BACKANIMUPDATEOFF();
+ void O_BACKANIMUPDATEON();
+ void O_CHANGECURSOR();
+ void O_CHANGEANIMTYPE();
+ void O__SETFLAG();
+ void O_COMPARE();
+ void O_JUMPZ();
+ void O_JUMPNZ();
+ void O_EXIT();
+ void O_ADDFLAG();
+ void O_TALKANIM();
+ void O_SUBFLAG();
+ void O_SETSTRING();
+ void O_ANDFLAG();
+ void O_GETMOBDATA();
+ void O_ORFLAG();
+ void O_SETMOBDATA();
+ void O_XORFLAG();
+ void O_GETMOBTEXT();
+ void O_MOVEHERO();
+ void O_WALKHERO();
+ void O_SETHERO();
+ void O_HEROOFF();
+ void O_HEROON();
+ void O_CLSTEXT();
+ void O_CALLTABLE();
+ void O_CHANGEMOB();
+ void O_ADDINV();
+ void O_REMINV();
+ void O_REPINV();
+ void O_OBSOLETE_GETACTION();
+ void O_ADDWALKAREA();
+ void O_REMWALKAREA();
+ void O_RESTOREWALKAREA();
+ void O_WAITFRAME();
+ void O_SETFRAME();
+ void O_RUNACTION();
+ void O_COMPAREHI();
+ void O_COMPARELO();
+ void O_PRELOADSET();
+ void O_FREEPRELOAD();
+ void O_CHECKINV();
+ void O_TALKHERO();
+ void O_WAITTEXT();
+ void O_SETHEROANIM();
+ void O_WAITHEROANIM();
+ void O_GETHERODATA();
+ void O_GETMOUSEBUTTON();
+ void O_CHANGEFRAMES();
+ void O_CHANGEBACKFRAMES();
+ void O_GETBACKANIMDATA();
+ void O_GETANIMDATA();
+ void O_SETBGCODE();
+ void O_SETBACKFRAME();
+ void O_GETRND();
+ void O_TALKBACKANIM();
+ void O_LOADPATH();
+ void O_GETCHAR();
+ void O_SETDFLAG();
+ void O_CALLDFLAG();
+ void O_PRINTAT();
+ void O_ZOOMIN();
+ void O_ZOOMOUT();
+ void O_SETSTRINGOFFSET();
+ void O_GETOBJDATA();
+ void O_SETOBJDATA();
+ void O_SWAPOBJECTS();
+ void O_CHANGEHEROSET();
+ void O_ADDSTRING();
+ void O_SUBSTRING();
+ void O_INITDIALOG();
+ void O_ENABLEDIALOGOPT();
+ void O_DISABLEDIALOGOPT();
+ void O_SHOWDIALOGBOX();
+ void O_STOPSAMPLE();
+ void O_BACKANIMRANGE();
+ void O_CLEARPATH();
+ void O_SETPATH();
+ void O_GETHEROX();
+ void O_GETHEROY();
+ void O_GETHEROD();
+ void O_PUSHSTRING();
+ void O_POPSTRING();
+ void O_SETFGCODE();
+ void O_STOPHERO();
+ void O_ANIMUPDATEOFF();
+ void O_ANIMUPDATEON();
+ void O_FREECURSOR();
+ void O_ADDINVQUIET();
+ void O_RUNHERO();
+ void O_SETBACKANIMDATA();
+ void O_VIEWFLC();
+ void O_CHECKFLCFRAME();
+ void O_CHECKFLCEND();
+ void O_FREEFLC();
+ void O_TALKHEROSTOP();
+ void O_HEROCOLOR();
+ void O_GRABMAPA();
+ void O_ENABLENAK();
+ void O_DISABLENAK();
+ void O_GETMOBNAME();
+ void O_SWAPINVENTORY();
+ void O_CLEARINVENTORY();
+ void O_SKIPTEXT();
+ void O_SETVOICEH();
+ void O_SETVOICEA();
+ void O_SETVOICEB();
+ void O_SETVOICEC();
+ void O_VIEWFLCLOOP();
+ void O_FLCSPEED();
+ void O_OPENINVENTORY();
+ void O_KRZYWA();
+ void O_GETKRZYWA();
+ void O_GETMOB();
+ void O_INPUTLINE();
+ void O_SETVOICED();
+ void O_BREAK_POINT();
+
+
+#if 0
+ O_WAITFOREVER ;00
+ O_BLACKPALETTE ;01
+ O_SETUPPALETTE ;02
+ O_INITROOM ;03
+ O_SETSAMPLE ;04
+ O_FREESAMPLE ;05
+ O_PLAYSAMPLE ;06
+ O_PUTOBJECT ;07
+ O_REMOBJECT ;08
+ O_SHOWANIM ;09
+ O_CHECKANIMEND ;10
+ O_FREEANIM ;11
+ O_CHECKANIMFRAME ;12
+ O_PUTBACKANIM ;13
+ O_REMBACKANIM ;14
+ O_CHECKBACKANIMFRAME ;15
+ O_FREEALLSAMPLES ;16
+ O_SETMUSIC ;17
+ O_STOPMUSIC ;18
+ O__WAIT ;19
+ O_UPDATEOFF ;20
+ O_UPDATEON ;21
+ O_UPDATE ;22
+ O_CLS ;23
+ O__CALL ;24
+ O_RETURN ;25
+ O_GO ;26
+ O_BACKANIMUPDATEOFF ;27
+ O_BACKANIMUPDATEON ;28
+ O_CHANGECURSOR ;29
+ O_CHANGEANIMTYPE ;30
+ O__SETFLAG ;31
+ O_COMPARE ;32
+ O_JUMPZ ;33
+ O_JUMPNZ ;34
+ O_EXIT ;35
+ O_ADDFLAG ;36
+ O_TALKANIM ;37
+ O_SUBFLAG ;38
+ O_SETSTRING ;39
+ O_ANDFLAG ;40
+ O_GETMOBDATA ;41
+ O_ORFLAG ;42
+ O_SETMOBDATA ;43
+ O_XORFLAG ;44
+ O_GETMOBTEXT ;45
+ O_MOVEHERO ;46
+ O_WALKHERO ;47
+ O_SETHERO ;48
+ O_HEROOFF ;49
+ O_HEROON ;50
+ O_CLSTEXT ;51
+ O_CALLTABLE ;52
+ O_CHANGEMOB ;53
+ O_ADDINV ;54
+ O_REMINV ;55
+ O_REPINV ;56
+ O_OBSOLETE_GETACTION ;57
+ O_ADDWALKAREA ;58
+ O_REMWALKAREA ;59
+ O_RESTOREWALKAREA ;60
+ O_WAITFRAME ;61
+ O_SETFRAME ;62
+ O_RUNACTION ;63
+ O_COMPAREHI ;64
+ O_COMPARELO ;65
+ O_PRELOADSET ;66
+ O_FREEPRELOAD ;67
+ O_CHECKINV ;68
+ O_TALKHERO ;69
+ O_WAITTEXT ;70
+ O_SETHEROANIM ;71
+ O_WAITHEROANIM ;72
+ O_GETHERODATA ;73
+ O_GETMOUSEBUTTON ;74
+ O_CHANGEFRAMES ;75
+ O_CHANGEBACKFRAMES ;76
+ O_GETBACKANIMDATA ;77
+ O_GETANIMDATA ;78
+ O_SETBGCODE ;79
+ O_SETBACKFRAME ;80
+ O_GETRND ;81
+ O_TALKBACKANIM ;82
+ O_LOADPATH ;83
+ O_GETCHAR ;84
+ O_SETDFLAG ;85
+ O_CALLDFLAG ;86
+ O_PRINTAT ;87
+ O_ZOOMIN ;88
+ O_ZOOMOUT ;89
+ O_SETSTRINGOFFSET ;90
+ O_GETOBJDATA ;91
+ O_SETOBJDATA ;92
+ O_SWAPOBJECTS ;93
+ O_CHANGEHEROSET ;94
+ O_ADDSTRING ;95
+ O_SUBSTRING ;96
+ O_INITDIALOG ;97
+ O_ENABLEDIALOGOPT ;98
+ O_DISABLEDIALOGOPT ;99
+ O_SHOWDIALOGBOX ;100
+ O_STOPSAMPLE ;101
+ O_BACKANIMRANGE ;102
+ O_CLEARPATH ;103
+ O_SETPATH ;104
+ O_GETHEROX ;105
+ O_GETHEROY ;106
+ O_GETHEROD ;107
+ O_PUSHSTRING ;108
+ O_POPSTRING ;109
+ O_SETFGCODE ;110
+ O_STOPHERO ;111
+ O_ANIMUPDATEOFF ;112
+ O_ANIMUPDATEON ;113
+ O_FREECURSOR ;114
+ O_ADDINVQUIET ;115
+ O_RUNHERO ;116
+ O_SETBACKANIMDATA ;117
+ O_VIEWFLC ;118
+ O_CHECKFLCFRAME ;119
+ O_CHECKFLCEND ;120
+ O_FREEFLC ;121
+ O_TALKHEROSTOP ;122
+ O_HEROCOLOR ;123
+ O_GRABMAPA ;124
+ O_ENABLENAK ;125
+ O_DISABLENAK ;126
+ O_GETMOBNAME ;127
+ O_SWAPINVENTORY ;128
+ O_CLEARINVENTORY ;129
+ O_SKIPTEXT ;130
+ O_SETVOICEH ;131
+ O_SETVOICEA ;132
+ O_SETVOICEB ;133
+ O_SETVOICEC ;134
+ O_VIEWFLCLOOP ;135
+ O_FLCSPEED ;136
+ O_OPENINVENTORY ;137
+ O_KRZYWA ;138
+ O_GETKRZYWA ;139
+ O_GETMOB ;140
+ O_INPUTLINE ;141
+ O_SETVOICED ;142
+ O_BREAK_POINT ;143
+#endif
};
}