mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-15 14:18:37 +00:00
- The Manhole: New and Enhanced is now (partially) playable
- Implemented cmd_objectp - Changed how the script externals array is set up - Cleanup svn-id: r31895
This commit is contained in:
parent
397e04d0b1
commit
9df82055f0
@ -256,8 +256,9 @@ void GameDatabase::loadVersion2(Common::SeekableReadStream &sourceS) {
|
||||
|
||||
debug(2, "textOffs = %08X; textSize = %08X; objectCount = %d; varObjectCount = %d; gameStateSize = %d; objectsOffs = %08X; objectsSize = %d\n", textOffs, textSize, objectCount, varObjectCount, _gameStateSize, objectsOffs, objectsSize);
|
||||
|
||||
_gameState = new byte[_gameStateSize];
|
||||
_gameState = new byte[_gameStateSize + 2];
|
||||
memset(_gameState, 0, _gameStateSize);
|
||||
setVar(1, objectCount);
|
||||
|
||||
sourceS.seek(textOffs);
|
||||
_gameText = new char[textSize];
|
||||
@ -271,8 +272,8 @@ void GameDatabase::loadVersion2(Common::SeekableReadStream &sourceS) {
|
||||
for (uint32 i = 0; i < objectCount; i++) {
|
||||
Object *obj = new Object();
|
||||
int objSize = obj->loadVersion2(sourceS);
|
||||
objSize = objSize % 2;
|
||||
// objects are aligned on 2-byte-boundaries, skip unused bytes
|
||||
objSize = objSize % 2;
|
||||
sourceS.skip(objSize);
|
||||
_objects.push_back(obj);
|
||||
}
|
||||
|
@ -203,10 +203,10 @@ void ScriptInterpreter::runScript(int16 scriptObjectIndex) {
|
||||
while (!_terminated) {
|
||||
byte opcode = readByte();
|
||||
if (opcode >= 1 && opcode <= _commandsMax) {
|
||||
debug(4, "opcode = %s\n", _commands[opcode - 1].desc);
|
||||
debug(4, "[%04X:%04X] opcode = %s", _runningScriptObjectIndex, _codeIp - _codeBase, _commands[opcode - 1].desc);
|
||||
(this->*_commands[opcode - 1].proc)();
|
||||
} else {
|
||||
warning("ScriptInterpreter::runScript(%d) Unknown opcode %02X\n", _runningScriptObjectIndex, opcode);
|
||||
warning("ScriptInterpreter::runScript(%d) Unknown opcode %02X", _runningScriptObjectIndex, opcode);
|
||||
}
|
||||
}
|
||||
|
||||
@ -219,7 +219,7 @@ byte ScriptInterpreter::readByte() {
|
||||
int16 ScriptInterpreter::readInt16() {
|
||||
int16 temp = (int16)READ_LE_UINT16(_codeIp);
|
||||
_codeIp += 2;
|
||||
debug(4, "readInt16() value = %04X\n", temp);
|
||||
debug(4, "readInt16() value = %04X", temp);
|
||||
return temp;
|
||||
}
|
||||
|
||||
@ -330,14 +330,14 @@ void ScriptInterpreter::cmd_gt() {
|
||||
|
||||
void ScriptInterpreter::cmd_loadConstant() {
|
||||
int16 value = readInt16();
|
||||
debug(4, "value = %04X (%d)\n", value, value);
|
||||
debug(4, "value = %04X (%d)", value, value);
|
||||
_stack.setTop(value);
|
||||
}
|
||||
|
||||
void ScriptInterpreter::cmd_loadVariable() {
|
||||
int16 variable = readInt16();
|
||||
int16 value = _vm->_dat->getVar(variable);
|
||||
debug(4, "variable = %d; value = %d (%04X)\n", variable, value, value); fflush(stdout);
|
||||
debug(4, "variable = %d; value = %d (%04X)", variable, value, value);
|
||||
_stack.setTop(value);
|
||||
}
|
||||
|
||||
@ -345,7 +345,7 @@ void ScriptInterpreter::cmd_getObjectProperty() {
|
||||
int16 propertyId = _stack.pop();
|
||||
int16 objectIndex = _stack.top();
|
||||
int16 value = _vm->_dat->getObjectProperty(objectIndex, propertyId);
|
||||
debug(4, "value = %04X(%d)\n", value, value);
|
||||
debug(4, "value = %04X(%d)", value, value);
|
||||
_stack.setTop(value);
|
||||
}
|
||||
|
||||
@ -359,7 +359,7 @@ void ScriptInterpreter::cmd_setObjectProperty() {
|
||||
|
||||
void ScriptInterpreter::cmd_set() {
|
||||
int16 variable = readInt16();
|
||||
debug(4, "var(%d) = %04d (%d)\n", variable, _stack.top(), _stack.top());
|
||||
debug(4, "var(%d) = %04d (%d)", variable, _stack.top(), _stack.top());
|
||||
_vm->_dat->setVar(variable, _stack.top());
|
||||
}
|
||||
|
||||
@ -367,7 +367,7 @@ void ScriptInterpreter::cmd_print() {
|
||||
// TODO: This opcode was used for printing debug messages
|
||||
Object *obj = _vm->_dat->getObject(_stack.top());
|
||||
const char *text = obj->getString();
|
||||
debug(4, "%s", text); fflush(stdout);
|
||||
debug(4, "%s", text);
|
||||
_stack.setTop(0);
|
||||
}
|
||||
|
||||
@ -386,20 +386,20 @@ void ScriptInterpreter::cmd_vref() {
|
||||
int16 value = 0;
|
||||
int16 index = _stack.pop();
|
||||
int16 objectIndex = _stack.top();
|
||||
debug(4, "index = %d; objectIndex = %d\n", index, objectIndex); fflush(stdout);
|
||||
debug(4, "index = %d; objectIndex = %d", index, objectIndex);
|
||||
if (objectIndex > 0) {
|
||||
Object *obj = _vm->_dat->getObject(objectIndex);
|
||||
value = obj->getVectorItem(index);
|
||||
}
|
||||
_stack.setTop(value);
|
||||
debug(4, "--> value = %d\n", value); fflush(stdout);
|
||||
debug(4, "--> value = %d", value);
|
||||
}
|
||||
|
||||
void ScriptInterpreter::cmd_vset() {
|
||||
int16 value = _stack.pop();
|
||||
int16 index = _stack.pop();
|
||||
int16 objectIndex = _stack.top();
|
||||
debug(4, "index = %d; objectIndex = %d; value = %d\n", index, objectIndex, value); fflush(stdout);
|
||||
debug(4, "index = %d; objectIndex = %d; value = %d", index, objectIndex, value);
|
||||
if (objectIndex > 0) {
|
||||
Object *obj = _vm->_dat->getObject(objectIndex);
|
||||
obj->setVectorItem(index, value);
|
||||
@ -432,11 +432,11 @@ void ScriptInterpreter::cmd_return() {
|
||||
byte argc = _stack.pop();
|
||||
_stack.free(argc);
|
||||
_stack.setTop(funcResult);
|
||||
debug(4, "LEAVE: stackPtr = %d; _localStackPos = %d\n\n\n", _stack.getStackPos(), _localStackPos);
|
||||
debug(4, "LEAVE: stackPtr = %d; _localStackPos = %d\n", _stack.getStackPos(), _localStackPos);
|
||||
}
|
||||
|
||||
void ScriptInterpreter::cmd_call() {
|
||||
debug(4, "\n\n\nENTER: stackPtr = %d; _localStackPos = %d\n", _stack.getStackPos(), _localStackPos);
|
||||
debug(4, "\nENTER: stackPtr = %d; _localStackPos = %d", _stack.getStackPos(), _localStackPos);
|
||||
byte argc = readByte();
|
||||
_stack.push(argc);
|
||||
_stack.push(_codeIp - _codeBase);
|
||||
@ -444,7 +444,7 @@ void ScriptInterpreter::cmd_call() {
|
||||
_stack.push(kScriptStackLimit - _localStackPos);
|
||||
_localStackPos = _stack.getStackPos();
|
||||
_runningScriptObjectIndex = _stack.peek(_localStackPos + argc + 4);
|
||||
debug(4, "argc = %d; _runningScriptObjectIndex = %04X\n", argc, _runningScriptObjectIndex); fflush(stdout);
|
||||
debug(4, "argc = %d; _runningScriptObjectIndex = %04X", argc, _runningScriptObjectIndex);
|
||||
_codeBase = _vm->_dat->getObject(_runningScriptObjectIndex)->getData();
|
||||
_codeIp = _codeBase;
|
||||
}
|
||||
@ -480,31 +480,31 @@ void ScriptInterpreter::cmd_restore() {
|
||||
|
||||
void ScriptInterpreter::cmd_arg() {
|
||||
int16 argIndex = readByte();
|
||||
debug(4, "argIndex = %d; value = %04X (%d)\n", argIndex, _stack.peek(_localStackPos + 4 + argIndex), _stack.peek(_localStackPos + 4 + argIndex));
|
||||
debug(4, "argIndex = %d; value = %04X (%d)", argIndex, _stack.peek(_localStackPos + 4 + argIndex), _stack.peek(_localStackPos + 4 + argIndex));
|
||||
_stack.setTop(_stack.peek(_localStackPos + 4 + argIndex));
|
||||
}
|
||||
|
||||
void ScriptInterpreter::cmd_aset() {
|
||||
int16 argIndex = readByte();
|
||||
debug(4, "argIndex = %d; value = %d\n", argIndex, _stack.peek(_localStackPos + 4 + argIndex));
|
||||
debug(4, "argIndex = %d; value = %d", argIndex, _stack.peek(_localStackPos + 4 + argIndex));
|
||||
_stack.poke(_localStackPos + 4 + argIndex, _stack.top());
|
||||
}
|
||||
|
||||
void ScriptInterpreter::cmd_tmp() {
|
||||
int16 tempIndex = readByte();
|
||||
debug(4, "tempIndex = %d; value = %d\n", tempIndex, _stack.peek(_localStackPos - tempIndex - 1));
|
||||
debug(4, "tempIndex = %d; value = %d", tempIndex, _stack.peek(_localStackPos - tempIndex - 1));
|
||||
_stack.setTop(_stack.peek(_localStackPos - tempIndex - 1));
|
||||
}
|
||||
|
||||
void ScriptInterpreter::cmd_tset() {
|
||||
int16 tempIndex = readByte();
|
||||
debug(4, "tempIndex = %d; value = %d\n", tempIndex, _stack.top());
|
||||
debug(4, "tempIndex = %d; value = %d", tempIndex, _stack.top());
|
||||
_stack.poke(_localStackPos - tempIndex - 1, _stack.top());
|
||||
}
|
||||
|
||||
void ScriptInterpreter::cmd_tspace() {
|
||||
int16 tempCount = readByte();
|
||||
debug(4, "tempCount = %d\n", tempCount);
|
||||
debug(4, "tempCount = %d", tempCount);
|
||||
_stack.alloc(tempCount);
|
||||
}
|
||||
|
||||
@ -513,7 +513,11 @@ void ScriptInterpreter::cmd_class() {
|
||||
}
|
||||
|
||||
void ScriptInterpreter::cmd_objectp() {
|
||||
warning("Unimplemented command: cmd_objectp");
|
||||
Object *obj = _vm->_dat->getObject(_stack.top());
|
||||
if (obj->isObject())
|
||||
_stack.setTop(-1);
|
||||
else
|
||||
_stack.setTop(0);
|
||||
}
|
||||
|
||||
void ScriptInterpreter::cmd_vectorp() {
|
||||
@ -535,11 +539,11 @@ void ScriptInterpreter::cmd_randomize() {
|
||||
|
||||
void ScriptInterpreter::cmd_send() {
|
||||
|
||||
debug(4, "\n\n\nENTER: stackPtr = %d; _localStackPos = %d\n", _stack.getStackPos(), _localStackPos);
|
||||
debug(4, "\nENTER: stackPtr = %d; _localStackPos = %d", _stack.getStackPos(), _localStackPos);
|
||||
|
||||
byte argc = readByte();
|
||||
|
||||
debug(4, "argc = %d\n", argc);
|
||||
debug(4, "argc = %d", argc);
|
||||
|
||||
_stack.push(argc);
|
||||
_stack.push(_codeIp - _codeBase);
|
||||
@ -550,7 +554,7 @@ void ScriptInterpreter::cmd_send() {
|
||||
int16 propertyId = _stack.peek(_localStackPos + argc + 2);
|
||||
int16 objectIndex = _stack.peek(_localStackPos + argc + 4);
|
||||
|
||||
debug(4, "objectIndex = %d (%04X); propertyId = %d(%04X)\n", objectIndex, objectIndex, propertyId, propertyId); fflush(stdout);
|
||||
debug(4, "objectIndex = %d (%04X); propertyId = %d(%04X)", objectIndex, objectIndex, propertyId, propertyId);
|
||||
|
||||
if (objectIndex != 0) {
|
||||
objectIndex = _vm->_dat->getObject(objectIndex)->getClass();
|
||||
@ -558,7 +562,7 @@ void ScriptInterpreter::cmd_send() {
|
||||
objectIndex = _stack.peek(_localStackPos + argc + 3);
|
||||
}
|
||||
|
||||
debug(4, "--> objectIndex = %d(%04X)\n", objectIndex, objectIndex); fflush(stdout);
|
||||
debug(4, "--> objectIndex = %d(%04X)", objectIndex, objectIndex);
|
||||
|
||||
if (objectIndex != 0) {
|
||||
_runningScriptObjectIndex = _vm->_dat->getObjectProperty(objectIndex, propertyId);
|
||||
@ -583,13 +587,13 @@ void ScriptInterpreter::cmd_extend() {
|
||||
byte argc = readByte();
|
||||
int16 *argv = _stack.getStackPtr();
|
||||
|
||||
//debug(4, "func = %d (%s); argc = %d\n", func, extendFuncNames[func], argc);
|
||||
debug(4, "func = %d; argc = %d\n", func, argc);
|
||||
//debug(4, "func = %d (%s); argc = %d", func, extendFuncNames[func], argc);
|
||||
debug(4, "func = %d; argc = %d", func, argc);
|
||||
for (int i = 0; i < argc; i++)
|
||||
debug(4, "argv[%02d] = %04X (%d)\n", i, argv[i], argv[i]);
|
||||
debug(4, "argv[%02d] = %04X (%d)", i, argv[i], argv[i]);
|
||||
|
||||
int16 result = _functions->callFunction(func, argc, argv);
|
||||
debug(4, "result = %04X (%d)\n", result, result);
|
||||
debug(4, "result = %04X (%d)", result, result);
|
||||
|
||||
_stack.free(argc);
|
||||
|
||||
|
@ -40,12 +40,16 @@ typedef Common::Functor2<int16, int16*, int16> ExternalFunc;
|
||||
class ScriptFunctions {
|
||||
public:
|
||||
ScriptFunctions(MadeEngine *vm) : _vm(vm) {}
|
||||
virtual ~ScriptFunctions() {}
|
||||
virtual ~ScriptFunctions() {
|
||||
for (int i = 0; i < _externalFuncs.size(); ++i)
|
||||
delete _externalFuncs[i];
|
||||
}
|
||||
int16 callFunction(uint16 index, int16 argc, int16 *argv) {
|
||||
if (index >= _externalFuncs.size()) {
|
||||
// TODO: ERROR!
|
||||
return 0;
|
||||
}
|
||||
debug(4, "%s", _externalFuncNames[index]);
|
||||
return (*_externalFuncs[index])(argc, argv);
|
||||
}
|
||||
virtual void setupExternalsTable() = 0;
|
||||
@ -55,13 +59,13 @@ protected:
|
||||
Audio::SoundHandle _voiceStreamHandle;
|
||||
|
||||
Common::Array<const ExternalFunc*> _externalFuncs;
|
||||
Common::Array<const char *> _externalFuncNames;
|
||||
|
||||
};
|
||||
|
||||
class ScriptFunctionsLgop2 : public ScriptFunctions {
|
||||
public:
|
||||
ScriptFunctionsLgop2(MadeEngine *vm) : ScriptFunctions(vm) {}
|
||||
~ScriptFunctionsLgop2() {}
|
||||
void setupExternalsTable();
|
||||
protected:
|
||||
|
||||
@ -122,7 +126,6 @@ protected:
|
||||
class ScriptFunctionsRtz : public ScriptFunctions {
|
||||
public:
|
||||
ScriptFunctionsRtz(MadeEngine *vm) : ScriptFunctions(vm) {}
|
||||
~ScriptFunctionsRtz() {}
|
||||
void setupExternalsTable();
|
||||
protected:
|
||||
|
||||
@ -231,7 +234,6 @@ protected:
|
||||
class ScriptFunctionsMhne : public ScriptFunctions {
|
||||
public:
|
||||
ScriptFunctionsMhne(MadeEngine *vm) : ScriptFunctions(vm) {}
|
||||
~ScriptFunctionsMhne() {}
|
||||
void setupExternalsTable();
|
||||
protected:
|
||||
|
||||
|
@ -43,66 +43,64 @@ namespace Made {
|
||||
/* ScriptFunctionsLgop2 */
|
||||
|
||||
typedef Common::Functor2Mem<int16, int16*, int16, ScriptFunctionsLgop2> ExternalFuncLgop2;
|
||||
#define External(x) ExternalFuncLgop2(this, &ScriptFunctionsLgop2::x)
|
||||
#define External(x) \
|
||||
_externalFuncs.push_back(new ExternalFuncLgop2(this, &ScriptFunctionsLgop2::x)); \
|
||||
_externalFuncNames.push_back(#x);
|
||||
void ScriptFunctionsLgop2::setupExternalsTable() {
|
||||
static const ExternalFuncLgop2 externalsTable[] = {
|
||||
External(o1_SYSTEM),
|
||||
External(o1_INITGRAF),
|
||||
External(o1_RESTOREGRAF),
|
||||
External(o1_DRAWPIC),
|
||||
External(o1_CLS),
|
||||
External(o1_SHOWPAGE),
|
||||
External(o1_EVENT),
|
||||
External(o1_EVENTX),
|
||||
External(o1_EVENTY),
|
||||
External(o1_EVENTKEY),
|
||||
External(o1_VISUALFX),
|
||||
External(o1_PLAYSND),
|
||||
External(o1_PLAYMUS),
|
||||
External(o1_STOPMUS),
|
||||
External(o1_ISMUS),
|
||||
External(o1_TEXTPOS),
|
||||
External(o1_FLASH),
|
||||
External(o1_PLAYNOTE),
|
||||
External(o1_STOPNOTE),
|
||||
External(o1_PLAYTELE),
|
||||
External(o1_STOPTELE),
|
||||
External(o1_HIDECURS),
|
||||
External(o1_SHOWCURS),
|
||||
External(o1_MUSICBEAT),
|
||||
External(o1_SCREENLOCK),
|
||||
External(o1_ADDSPRITE),
|
||||
External(o1_FREEANIM),
|
||||
External(o1_DRAWSPRITE),
|
||||
External(o1_ERASESPRITES),
|
||||
External(o1_UPDATESPRITES),
|
||||
External(o1_GETTIMER),
|
||||
External(o1_SETTIMER),
|
||||
External(o1_RESETTIMER),
|
||||
External(o1_ALLOCTIMER),
|
||||
External(o1_FREETIMER),
|
||||
External(o1_PALETTELOCK),
|
||||
External(o1_FONT),
|
||||
External(o1_DRAWTEXT),
|
||||
External(o1_HOMETEXT),
|
||||
External(o1_TEXTRECT),
|
||||
External(o1_TEXTXY),
|
||||
External(o1_DROPSHADOW),
|
||||
External(o1_TEXTCOLOR),
|
||||
External(o1_OUTLINE),
|
||||
External(o1_LOADCURSOR),
|
||||
External(o1_SETGROUND),
|
||||
External(o1_RESTEXT),
|
||||
External(o1_ADDMASK),
|
||||
External(o1_SETMASK),
|
||||
External(o1_ISSND),
|
||||
External(o1_STOPSND),
|
||||
External(o1_PLAYVOICE)
|
||||
};
|
||||
|
||||
for (int i = 0; i < ARRAYSIZE(externalsTable); ++i)
|
||||
_externalFuncs.push_back(&externalsTable[i]);
|
||||
|
||||
External(o1_SYSTEM);
|
||||
External(o1_INITGRAF);
|
||||
External(o1_RESTOREGRAF);
|
||||
External(o1_DRAWPIC);
|
||||
External(o1_CLS);
|
||||
External(o1_SHOWPAGE);
|
||||
External(o1_EVENT);
|
||||
External(o1_EVENTX);
|
||||
External(o1_EVENTY);
|
||||
External(o1_EVENTKEY);
|
||||
External(o1_VISUALFX);
|
||||
External(o1_PLAYSND);
|
||||
External(o1_PLAYMUS);
|
||||
External(o1_STOPMUS);
|
||||
External(o1_ISMUS);
|
||||
External(o1_TEXTPOS);
|
||||
External(o1_FLASH);
|
||||
External(o1_PLAYNOTE);
|
||||
External(o1_STOPNOTE);
|
||||
External(o1_PLAYTELE);
|
||||
External(o1_STOPTELE);
|
||||
External(o1_HIDECURS);
|
||||
External(o1_SHOWCURS);
|
||||
External(o1_MUSICBEAT);
|
||||
External(o1_SCREENLOCK);
|
||||
External(o1_ADDSPRITE);
|
||||
External(o1_FREEANIM);
|
||||
External(o1_DRAWSPRITE);
|
||||
External(o1_ERASESPRITES);
|
||||
External(o1_UPDATESPRITES);
|
||||
External(o1_GETTIMER);
|
||||
External(o1_SETTIMER);
|
||||
External(o1_RESETTIMER);
|
||||
External(o1_ALLOCTIMER);
|
||||
External(o1_FREETIMER);
|
||||
External(o1_PALETTELOCK);
|
||||
External(o1_FONT);
|
||||
External(o1_DRAWTEXT);
|
||||
External(o1_HOMETEXT);
|
||||
External(o1_TEXTRECT);
|
||||
External(o1_TEXTXY);
|
||||
External(o1_DROPSHADOW);
|
||||
External(o1_TEXTCOLOR);
|
||||
External(o1_OUTLINE);
|
||||
External(o1_LOADCURSOR);
|
||||
External(o1_SETGROUND);
|
||||
External(o1_RESTEXT);
|
||||
External(o1_ADDMASK);
|
||||
External(o1_SETMASK);
|
||||
External(o1_ISSND);
|
||||
External(o1_STOPSND);
|
||||
External(o1_PLAYVOICE);
|
||||
|
||||
}
|
||||
#undef External
|
||||
|
||||
|
@ -43,70 +43,68 @@ namespace Made {
|
||||
/* ScriptFunctionsMhne */
|
||||
|
||||
typedef Common::Functor2Mem<int16, int16*, int16, ScriptFunctionsMhne> ExternalFuncMhne;
|
||||
#define External(x) ExternalFuncMhne(this, &ScriptFunctionsMhne::x)
|
||||
#define External(x) \
|
||||
_externalFuncs.push_back(new ExternalFuncMhne(this, &ScriptFunctionsMhne::x)); \
|
||||
_externalFuncNames.push_back(#x);
|
||||
void ScriptFunctionsMhne::setupExternalsTable() {
|
||||
static const ExternalFuncMhne externalsTable[] = {
|
||||
External(o1_SYSTEM),
|
||||
External(o1_INITGRAF),
|
||||
External(o1_RESTOREGRAF),
|
||||
External(o1_DRAWPIC),
|
||||
External(o1_CLS),
|
||||
External(o1_SHOWPAGE),
|
||||
External(o1_EVENT),
|
||||
External(o1_EVENTX),
|
||||
External(o1_EVENTY),
|
||||
External(o1_EVENTKEY),
|
||||
External(o1_VISUALFX),
|
||||
External(o1_PLAYSND),
|
||||
External(o1_PLAYMUS),
|
||||
External(o1_STOPMUS),
|
||||
External(o1_ISMUS),
|
||||
External(o1_TEXTPOS),
|
||||
External(o1_FLASH),
|
||||
External(o1_PLAYNOTE),
|
||||
External(o1_STOPNOTE),
|
||||
External(o1_PLAYTELE),
|
||||
External(o1_STOPTELE),
|
||||
External(o1_HIDECURS),
|
||||
External(o1_SHOWCURS),
|
||||
External(o1_MUSICBEAT),
|
||||
External(o1_SCREENLOCK),
|
||||
External(o1_ADDSPRITE),
|
||||
External(o1_FREEANIM),
|
||||
External(o1_DRAWSPRITE),
|
||||
External(o1_ERASESPRITES),
|
||||
External(o1_UPDATESPRITES),
|
||||
External(o1_GETTIMER),
|
||||
External(o1_SETTIMER),
|
||||
External(o1_RESETTIMER),
|
||||
External(o1_ALLOCTIMER),
|
||||
External(o1_FREETIMER),
|
||||
External(o1_PALETTELOCK),
|
||||
External(o1_FONT),
|
||||
External(o1_DRAWTEXT),
|
||||
External(o1_HOMETEXT),
|
||||
External(o1_TEXTRECT),
|
||||
External(o1_TEXTXY),
|
||||
External(o1_DROPSHADOW),
|
||||
External(o1_TEXTCOLOR),
|
||||
External(o1_OUTLINE),
|
||||
External(o1_LOADCURSOR),
|
||||
External(o1_SETGROUND),
|
||||
External(o1_RESTEXT),
|
||||
External(o1_ADDMASK),
|
||||
External(o1_SETMASK),
|
||||
External(o1_ISSND),
|
||||
External(o1_STOPSND),
|
||||
External(o1_PLAYVOICE),
|
||||
External(o1_CDPLAY),
|
||||
External(o1_STOPCD),
|
||||
External(o1_CDSTATUS),
|
||||
External(o1_CDTIME),
|
||||
External(o1_CDPLAYSEG),
|
||||
};
|
||||
|
||||
for (int i = 0; i < ARRAYSIZE(externalsTable); ++i)
|
||||
_externalFuncs.push_back(&externalsTable[i]);
|
||||
External(o1_SYSTEM);
|
||||
External(o1_INITGRAF);
|
||||
External(o1_RESTOREGRAF);
|
||||
External(o1_DRAWPIC);
|
||||
External(o1_CLS);
|
||||
External(o1_SHOWPAGE);
|
||||
External(o1_EVENT);
|
||||
External(o1_EVENTX);
|
||||
External(o1_EVENTY);
|
||||
External(o1_EVENTKEY);
|
||||
External(o1_VISUALFX);
|
||||
External(o1_PLAYSND);
|
||||
External(o1_PLAYMUS);
|
||||
External(o1_STOPMUS);
|
||||
External(o1_ISMUS);
|
||||
External(o1_TEXTPOS);
|
||||
External(o1_FLASH);
|
||||
External(o1_PLAYNOTE);
|
||||
External(o1_STOPNOTE);
|
||||
External(o1_PLAYTELE);
|
||||
External(o1_STOPTELE);
|
||||
External(o1_HIDECURS);
|
||||
External(o1_SHOWCURS);
|
||||
External(o1_MUSICBEAT);
|
||||
External(o1_SCREENLOCK);
|
||||
External(o1_ADDSPRITE);
|
||||
External(o1_FREEANIM);
|
||||
External(o1_DRAWSPRITE);
|
||||
External(o1_ERASESPRITES);
|
||||
External(o1_UPDATESPRITES);
|
||||
External(o1_GETTIMER);
|
||||
External(o1_SETTIMER);
|
||||
External(o1_RESETTIMER);
|
||||
External(o1_ALLOCTIMER);
|
||||
External(o1_FREETIMER);
|
||||
External(o1_PALETTELOCK);
|
||||
External(o1_FONT);
|
||||
External(o1_DRAWTEXT);
|
||||
External(o1_HOMETEXT);
|
||||
External(o1_TEXTRECT);
|
||||
External(o1_TEXTXY);
|
||||
External(o1_DROPSHADOW);
|
||||
External(o1_TEXTCOLOR);
|
||||
External(o1_OUTLINE);
|
||||
External(o1_LOADCURSOR);
|
||||
External(o1_SETGROUND);
|
||||
External(o1_RESTEXT);
|
||||
External(o1_ADDMASK);
|
||||
External(o1_SETMASK);
|
||||
External(o1_ISSND);
|
||||
External(o1_STOPSND);
|
||||
External(o1_PLAYVOICE);
|
||||
External(o1_CDPLAY);
|
||||
External(o1_STOPCD);
|
||||
External(o1_CDSTATUS);
|
||||
External(o1_CDTIME);
|
||||
External(o1_CDPLAYSEG);
|
||||
|
||||
}
|
||||
#undef External
|
||||
|
@ -43,113 +43,111 @@ namespace Made {
|
||||
/* ScriptFunctionsRtz */
|
||||
|
||||
typedef Common::Functor2Mem<int16, int16*, int16, ScriptFunctionsRtz> ExternalFuncRtz;
|
||||
#define External(x) ExternalFuncRtz(this, &ScriptFunctionsRtz::x)
|
||||
#define External(x) \
|
||||
_externalFuncs.push_back(new ExternalFuncRtz(this, &ScriptFunctionsRtz::x)); \
|
||||
_externalFuncNames.push_back(#x);
|
||||
void ScriptFunctionsRtz::setupExternalsTable() {
|
||||
static const ExternalFuncRtz externalsTable[] = {
|
||||
External(o1_SYSTEM),
|
||||
External(o1_INITGRAF),
|
||||
External(o1_RESTOREGRAF),
|
||||
External(o1_DRAWPIC),
|
||||
External(o1_CLS),
|
||||
External(o1_SHOWPAGE),
|
||||
External(o1_EVENT),
|
||||
External(o1_EVENTX),
|
||||
External(o1_EVENTY),
|
||||
External(o1_EVENTKEY),
|
||||
External(o1_VISUALFX),
|
||||
External(o1_PLAYSND),
|
||||
External(o1_PLAYMUS),
|
||||
External(o1_STOPMUS),
|
||||
External(o1_ISMUS),
|
||||
External(o1_TEXTPOS),
|
||||
External(o1_FLASH),
|
||||
External(o1_PLAYNOTE),
|
||||
External(o1_STOPNOTE),
|
||||
External(o1_PLAYTELE),
|
||||
External(o1_STOPTELE),
|
||||
External(o1_HIDECURS),
|
||||
External(o1_SHOWCURS),
|
||||
External(o1_MUSICBEAT),
|
||||
External(o1_SCREENLOCK),
|
||||
External(o1_ADDSPRITE),
|
||||
External(o1_FREEANIM),
|
||||
External(o1_DRAWSPRITE),
|
||||
External(o1_ERASESPRITES),
|
||||
External(o1_UPDATESPRITES),
|
||||
External(o1_GETTIMER),
|
||||
External(o1_SETTIMER),
|
||||
External(o1_RESETTIMER),
|
||||
External(o1_ALLOCTIMER),
|
||||
External(o1_FREETIMER),
|
||||
External(o1_PALETTELOCK),
|
||||
External(o1_FONT),
|
||||
External(o1_DRAWTEXT),
|
||||
External(o1_HOMETEXT),
|
||||
External(o1_TEXTRECT),
|
||||
External(o1_TEXTXY),
|
||||
External(o1_DROPSHADOW),
|
||||
External(o1_TEXTCOLOR),
|
||||
External(o1_OUTLINE),
|
||||
External(o1_LOADCURSOR),
|
||||
External(o1_SETGROUND),
|
||||
External(o1_RESTEXT),
|
||||
External(o1_CLIPAREA),
|
||||
External(o1_SETCLIP),
|
||||
External(o1_ISSND),
|
||||
External(o1_STOPSND),
|
||||
External(o1_PLAYVOICE),
|
||||
External(o1_CDPLAY),
|
||||
External(o1_STOPCD),
|
||||
External(o1_CDSTATUS),
|
||||
External(o1_CDTIME),
|
||||
External(o1_CDPLAYSEG),
|
||||
External(o1_PRINTF),
|
||||
External(o1_MONOCLS),
|
||||
External(o1_SNDENERGY),
|
||||
External(o1_CLEARTEXT),
|
||||
External(o1_ANIMTEXT),
|
||||
External(o1_TEXTWIDTH),
|
||||
External(o1_PLAYMOVIE),
|
||||
External(o1_LOADSND),
|
||||
External(o1_LOADMUS),
|
||||
External(o1_LOADPIC),
|
||||
External(o1_MUSICVOL),
|
||||
External(o1_RESTARTEVENTS),
|
||||
External(o1_PLACESPRITE),
|
||||
External(o1_PLACETEXT),
|
||||
External(o1_DELETECHANNEL),
|
||||
External(o1_CHANNELTYPE),
|
||||
External(o1_SETSTATE),
|
||||
External(o1_SETLOCATION),
|
||||
External(o1_SETCONTENT),
|
||||
External(o1_EXCLUDEAREA),
|
||||
External(o1_SETEXCLUDE),
|
||||
External(o1_GETSTATE),
|
||||
External(o1_PLACEANIM),
|
||||
External(o1_SETFRAME),
|
||||
External(o1_GETFRAME),
|
||||
External(o1_GETFRAMECOUNT),
|
||||
External(o1_PICWIDTH),
|
||||
External(o1_PICHEIGHT),
|
||||
External(o1_SOUNDRATE),
|
||||
External(o1_DRAWANIMPIC),
|
||||
External(o1_LOADANIM),
|
||||
External(o1_READTEXT),
|
||||
External(o1_READMENU),
|
||||
External(o1_DRAWMENU),
|
||||
External(o1_MENUCOUNT),
|
||||
External(o1_SAVEGAME),
|
||||
External(o1_LOADGAME),
|
||||
External(o1_GAMENAME),
|
||||
External(o1_SHAKESCREEN),
|
||||
External(o1_PLACEMENU),
|
||||
External(o1_SETVOLUME),
|
||||
External(o1_WHATSYNTH),
|
||||
External(o1_SLOWSYSTEM)
|
||||
};
|
||||
|
||||
for (int i = 0; i < ARRAYSIZE(externalsTable); ++i)
|
||||
_externalFuncs.push_back(&externalsTable[i]);
|
||||
External(o1_SYSTEM);
|
||||
External(o1_INITGRAF);
|
||||
External(o1_RESTOREGRAF);
|
||||
External(o1_DRAWPIC);
|
||||
External(o1_CLS);
|
||||
External(o1_SHOWPAGE);
|
||||
External(o1_EVENT);
|
||||
External(o1_EVENTX);
|
||||
External(o1_EVENTY);
|
||||
External(o1_EVENTKEY);
|
||||
External(o1_VISUALFX);
|
||||
External(o1_PLAYSND);
|
||||
External(o1_PLAYMUS);
|
||||
External(o1_STOPMUS);
|
||||
External(o1_ISMUS);
|
||||
External(o1_TEXTPOS);
|
||||
External(o1_FLASH);
|
||||
External(o1_PLAYNOTE);
|
||||
External(o1_STOPNOTE);
|
||||
External(o1_PLAYTELE);
|
||||
External(o1_STOPTELE);
|
||||
External(o1_HIDECURS);
|
||||
External(o1_SHOWCURS);
|
||||
External(o1_MUSICBEAT);
|
||||
External(o1_SCREENLOCK);
|
||||
External(o1_ADDSPRITE);
|
||||
External(o1_FREEANIM);
|
||||
External(o1_DRAWSPRITE);
|
||||
External(o1_ERASESPRITES);
|
||||
External(o1_UPDATESPRITES);
|
||||
External(o1_GETTIMER);
|
||||
External(o1_SETTIMER);
|
||||
External(o1_RESETTIMER);
|
||||
External(o1_ALLOCTIMER);
|
||||
External(o1_FREETIMER);
|
||||
External(o1_PALETTELOCK);
|
||||
External(o1_FONT);
|
||||
External(o1_DRAWTEXT);
|
||||
External(o1_HOMETEXT);
|
||||
External(o1_TEXTRECT);
|
||||
External(o1_TEXTXY);
|
||||
External(o1_DROPSHADOW);
|
||||
External(o1_TEXTCOLOR);
|
||||
External(o1_OUTLINE);
|
||||
External(o1_LOADCURSOR);
|
||||
External(o1_SETGROUND);
|
||||
External(o1_RESTEXT);
|
||||
External(o1_CLIPAREA);
|
||||
External(o1_SETCLIP);
|
||||
External(o1_ISSND);
|
||||
External(o1_STOPSND);
|
||||
External(o1_PLAYVOICE);
|
||||
External(o1_CDPLAY);
|
||||
External(o1_STOPCD);
|
||||
External(o1_CDSTATUS);
|
||||
External(o1_CDTIME);
|
||||
External(o1_CDPLAYSEG);
|
||||
External(o1_PRINTF);
|
||||
External(o1_MONOCLS);
|
||||
External(o1_SNDENERGY);
|
||||
External(o1_CLEARTEXT);
|
||||
External(o1_ANIMTEXT);
|
||||
External(o1_TEXTWIDTH);
|
||||
External(o1_PLAYMOVIE);
|
||||
External(o1_LOADSND);
|
||||
External(o1_LOADMUS);
|
||||
External(o1_LOADPIC);
|
||||
External(o1_MUSICVOL);
|
||||
External(o1_RESTARTEVENTS);
|
||||
External(o1_PLACESPRITE);
|
||||
External(o1_PLACETEXT);
|
||||
External(o1_DELETECHANNEL);
|
||||
External(o1_CHANNELTYPE);
|
||||
External(o1_SETSTATE);
|
||||
External(o1_SETLOCATION);
|
||||
External(o1_SETCONTENT);
|
||||
External(o1_EXCLUDEAREA);
|
||||
External(o1_SETEXCLUDE);
|
||||
External(o1_GETSTATE);
|
||||
External(o1_PLACEANIM);
|
||||
External(o1_SETFRAME);
|
||||
External(o1_GETFRAME);
|
||||
External(o1_GETFRAMECOUNT);
|
||||
External(o1_PICWIDTH);
|
||||
External(o1_PICHEIGHT);
|
||||
External(o1_SOUNDRATE);
|
||||
External(o1_DRAWANIMPIC);
|
||||
External(o1_LOADANIM);
|
||||
External(o1_READTEXT);
|
||||
External(o1_READMENU);
|
||||
External(o1_DRAWMENU);
|
||||
External(o1_MENUCOUNT);
|
||||
External(o1_SAVEGAME);
|
||||
External(o1_LOADGAME);
|
||||
External(o1_GAMENAME);
|
||||
External(o1_SHAKESCREEN);
|
||||
External(o1_PLACEMENU);
|
||||
External(o1_SETVOLUME);
|
||||
External(o1_WHATSYNTH);
|
||||
External(o1_SLOWSYSTEM);
|
||||
|
||||
}
|
||||
#undef External
|
||||
|
Loading…
Reference in New Issue
Block a user