PRINCE: some opcodes in script added

This commit is contained in:
Kamil Zbróg 2013-10-14 02:31:26 +01:00
parent 30ad6df5fc
commit e63b902def
7 changed files with 708 additions and 30 deletions

View File

@ -35,7 +35,7 @@ Font::Font() {
}
Font::~Font() {
delete _fontData;
delete [] _fontData;
}
bool Font::load(Common::SeekableReadStream &stream) {

View File

@ -25,7 +25,7 @@
#include "graphics/font.h"
namespace Graphics {
class Surface;
struct Surface;
}
namespace Common {

View File

@ -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;

View File

@ -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);

View File

@ -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();

View File

@ -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,
};
}

View File

@ -46,26 +46,322 @@ public:
private:
PrinceEngine *_vm;
Common::RandomSource _random;
Common::RandomSource _random;
byte *_code;
uint16 _codeSize;
uint16 _currentInstruction;
byte *_code;
uint16 _codeSize;
uint32 _currentInstruction;
uint16 _lastOpcode;
uint32 _lastInstruction;
// Stack
uint16 _stack[0x20];
uint8 _stacktop;
uint8 _savedStacktop;
// Stack
uint16 _stack[500];
uint8 _stacktop;
uint8 _savedStacktop;
// Helper functions
uint8 getCodeByte(uint16 address);
uint8 readScript8bits();
uint16 readScript16bits();
uint32 readScript32bits();
uint16 readScript8or16bits();
// 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[];
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
};
}