diff options
| -rw-r--r-- | engines/made/scriptfuncs_lgop2.cpp | 497 | ||||
| -rw-r--r-- | engines/made/scriptfuncs_mhne.cpp | 498 | ||||
| -rw-r--r-- | engines/made/scriptfuncs_rtz.cpp | 875 | 
3 files changed, 0 insertions, 1870 deletions
| diff --git a/engines/made/scriptfuncs_lgop2.cpp b/engines/made/scriptfuncs_lgop2.cpp deleted file mode 100644 index d90e6546d7..0000000000 --- a/engines/made/scriptfuncs_lgop2.cpp +++ /dev/null @@ -1,497 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - * - */ - -#include "common/endian.h" -#include "common/util.h" -#include "common/events.h" - -#include "graphics/cursorman.h" - -#include "made/made.h" -#include "made/resource.h" -#include "made/database.h" -#include "made/screen.h" -#include "made/script.h" -#include "made/pmvplayer.h" -#include "made/scriptfuncs.h" -#include "made/music.h" - -namespace Made { - -/* ScriptFunctionsLgop2 */ - -typedef Common::Functor2Mem<int16, int16*, int16, ScriptFunctionsLgop2> ExternalFuncLgop2; -#define External(x) \ -	_externalFuncs.push_back(new ExternalFuncLgop2(this, &ScriptFunctionsLgop2::x));  \ -	_externalFuncNames.push_back(#x); -void ScriptFunctionsLgop2::setupExternalsTable() { - -	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 - -int16 ScriptFunctionsLgop2::o1_SYSTEM(int16 argc, int16 *argv) { -	// This opcode is empty. -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_INITGRAF(int16 argc, int16 *argv) { -	// This opcode is empty. -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_RESTOREGRAF(int16 argc, int16 *argv) { -	// This opcode is empty. -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_DRAWPIC(int16 argc, int16 *argv) { -	return _vm->_screen->drawPic(argv[4], argv[3], argv[2], argv[1], argv[0]); -} - -int16 ScriptFunctionsLgop2::o1_CLS(int16 argc, int16 *argv) { - 	_vm->_screen->clearScreen(); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_SHOWPAGE(int16 argc, int16 *argv) { -	_vm->_mixer->stopHandle(_audioStreamHandle); -	_vm->_screen->show(); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_EVENT(int16 argc, int16 *argv) { - -	Common::Event event; -	Common::EventManager *eventMan = g_system->getEventManager(); - -	int16 eventNum = 0; - -	if (eventMan->pollEvent(event)) { -		switch (event.type) { - -		case Common::EVENT_MOUSEMOVE: -			_vm->_eventMouseX = event.mouse.x; -			_vm->_eventMouseY = event.mouse.y; -			break; -			 -		case Common::EVENT_LBUTTONDOWN: -			eventNum = 1; -			break; - -		/* -		case Common::EVENT_LBUTTONUP: -			eventNum = 2; // TODO: Is this correct? -			break; -		*/ - -		case Common::EVENT_RBUTTONDOWN: -			eventNum = 3; -			break; - -		/* -		case Common::EVENT_RBUTTONUP: -			eventNum = 4; // TODO: Is this correct? -			break; -		*/ - -		case Common::EVENT_KEYDOWN: -			_vm->_eventKey = event.kbd.ascii; -			// For unknown reasons, the game accepts ASCII code -			// 9 as backspace -			if (_vm->_eventKey == Common::KEYCODE_BACKSPACE) -				_vm->_eventKey = 9; -			eventNum = 5; -			break; - -		case Common::EVENT_QUIT: -			_vm->_quit = true; -			break; - -		default: -			break; - -		} -	} - -	_vm->_system->updateScreen(); - -	return eventNum; -} - -int16 ScriptFunctionsLgop2::o1_EVENTX(int16 argc, int16 *argv) { -	return _vm->_eventMouseX; -} - -int16 ScriptFunctionsLgop2::o1_EVENTY(int16 argc, int16 *argv) { -	return _vm->_eventMouseY; -} - -int16 ScriptFunctionsLgop2::o1_EVENTKEY(int16 argc, int16 *argv) { -	return _vm->_eventKey; -} - -int16 ScriptFunctionsLgop2::o1_VISUALFX(int16 argc, int16 *argv) { -	_vm->_screen->setVisualEffectNum(argv[0]); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_PLAYSND(int16 argc, int16 *argv) { -	int soundNum = argv[0]; -	bool loop = false; - -	if (argc > 1) { -		soundNum = argv[1]; -		loop = (argv[0] == 1); -	} - -	if (soundNum > 0) { -		if (!_vm->_mixer->isSoundHandleActive(_audioStreamHandle)) { -			_vm->_mixer->playInputStream(Audio::Mixer::kPlainSoundType, &_audioStreamHandle,  -										 _vm->_res->getSound(soundNum)->getAudioStream(_vm->_soundRate, loop)); -		} -	} - -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_PLAYMUS(int16 argc, int16 *argv) { -	/* -	 -	Disabled for now since MIDI player doesn't support all commands -	which results in strange behavior. -	 -	int16 musicNum = argv[0]; -	if (musicNum > 0) { -		_xmidiRes = _vm->_res->getXmidi(musicNum); -		_vm->_music->playXMIDI(_xmidiRes); -	} -	*/ -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_STOPMUS(int16 argc, int16 *argv) { -	if (_vm->_music->isPlaying()) { -		_vm->_music->stop(); -		_vm->_res->freeResource(_xmidiRes); -	} -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_ISMUS(int16 argc, int16 *argv) { -	if (_vm->_music->isPlaying()) -		return 1; -	else -		return 0; -} - -int16 ScriptFunctionsLgop2::o1_TEXTPOS(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_TEXTPOS"); -	// This seems to be some kind of low-level opcode. -	// The original engine calls int 10h to set the VGA cursor position. -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_FLASH(int16 argc, int16 *argv) { -	_vm->_screen->flash(argv[0]); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_PLAYNOTE(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_PLAYNOTE"); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_STOPNOTE(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_STOPNOTE"); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_PLAYTELE(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_PLAYTELE"); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_STOPTELE(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_STOPTELE"); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_HIDECURS(int16 argc, int16 *argv) { -	_vm->_system->showMouse(false); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_SHOWCURS(int16 argc, int16 *argv) { -	_vm->_system->showMouse(true); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_MUSICBEAT(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_MUSICBEAT"); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_SCREENLOCK(int16 argc, int16 *argv) { -	_vm->_screen->setScreenLock(argv[0] != 0); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_ADDSPRITE(int16 argc, int16 *argv) { -	return argv[2]; -} - -int16 ScriptFunctionsLgop2::o1_FREEANIM(int16 argc, int16 *argv) { -	_vm->_screen->clearChannels(); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_DRAWSPRITE(int16 argc, int16 *argv) { -	int16 channel = _vm->_screen->drawSprite(argv[2], argv[1], argv[0]); -	_vm->_screen->setChannelUseMask(channel); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_ERASESPRITES(int16 argc, int16 *argv) { -	_vm->_screen->clearChannels(); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_UPDATESPRITES(int16 argc, int16 *argv) { -	_vm->_screen->updateSprites(); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_GETTIMER(int16 argc, int16 *argv) { -	return _vm->getTimer(argv[0]); -} - -int16 ScriptFunctionsLgop2::o1_SETTIMER(int16 argc, int16 *argv) { -	_vm->setTimer(argv[1], argv[0]); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_RESETTIMER(int16 argc, int16 *argv) { -	_vm->resetTimer(argv[0]); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_ALLOCTIMER(int16 argc, int16 *argv) { -	return _vm->allocTimer(); -} - -int16 ScriptFunctionsLgop2::o1_FREETIMER(int16 argc, int16 *argv) { -	_vm->freeTimer(argv[0]); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_PALETTELOCK(int16 argc, int16 *argv) { -	_vm->_screen->setPaletteLock(argv[0] != 0); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_FONT(int16 argc, int16 *argv) { -	_vm->_screen->setFont(argv[0]); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_DRAWTEXT(int16 argc, int16 *argv) { - -	const char *text = _vm->_dat->getString(argv[argc - 1]); -	 -	char finalText[1024]; -	switch (argc) { -	case 1: -		snprintf(finalText, 1024, "%s", text); -		break; -	case 2: -		snprintf(finalText, 1024, text, argv[0]); -		break; -	case 3: -		snprintf(finalText, 1024, text, argv[1], argv[0]); -		break; -	case 4: -		snprintf(finalText, 1024, text, argv[2], argv[1], argv[0]); -		break; -	case 5: -		snprintf(finalText, 1024, text, argv[3], argv[2], argv[1], argv[0]); -		break; -	default: -		finalText[0] = '\0'; -		break; -	} -	 -	_vm->_screen->printText(finalText); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_HOMETEXT(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_HOMETEXT"); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_TEXTRECT(int16 argc, int16 *argv) { -	int16 x1 = CLIP<int16>(argv[4], 1, 318); -	int16 y1 = CLIP<int16>(argv[3], 1, 198); -	int16 x2 = CLIP<int16>(argv[2], 1, 318); -	int16 y2 = CLIP<int16>(argv[1], 1, 198); -	//int16 textValue = argv[0]; -	// TODO: textValue -	_vm->_screen->setTextRect(Common::Rect(x1, y1, x2, y2)); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_TEXTXY(int16 argc, int16 *argv) { -	int16 x = CLIP<int16>(argv[1], 1, 318); -	int16 y = CLIP<int16>(argv[0], 1, 198); -	_vm->_screen->setTextXY(x, y); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_DROPSHADOW(int16 argc, int16 *argv) { -	// if the drop shadow color is -1, then text drop shadow is disabled -	// when font drop shadow is enabled, outline is disabled -	_vm->_screen->setDropShadowColor(argv[0]); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_TEXTCOLOR(int16 argc, int16 *argv) { -	_vm->_screen->setTextColor(argv[0]); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_OUTLINE(int16 argc, int16 *argv) { -	// if the outline color is -1, then text outline is disabled -	// when font outline is enabled, drop shadow is disabled -	_vm->_screen->setOutlineColor(argv[0]); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_LOADCURSOR(int16 argc, int16 *argv) { -	PictureResource *flex = _vm->_res->getPicture(argv[2]); -	if (!flex) -		return 0; - -	Graphics::Surface *surf = flex->getPicture(); -	CursorMan.replaceCursor((const byte *)surf->pixels, surf->w, surf->h, argv[1], argv[0], 0); -	CursorMan.showMouse(true); -	_vm->_res->freeResource(flex); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_SETGROUND(int16 argc, int16 *argv) { -	_vm->_screen->setGround(argv[0]); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_RESTEXT(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_RESTEXT"); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_ADDMASK(int16 argc, int16 *argv) { -	_vm->_screen->drawMask(argv[2], argv[1], argv[0]); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_SETMASK(int16 argc, int16 *argv) { -	_vm->_screen->setMask(argv[0]); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_ISSND(int16 argc, int16 *argv) { -	if (_vm->_mixer->isSoundHandleActive(_audioStreamHandle)) -		return 1; -	else -		return 0; -} - -int16 ScriptFunctionsLgop2::o1_STOPSND(int16 argc, int16 *argv) { -	_vm->_mixer->stopHandle(_audioStreamHandle); -	return 0; -} - -int16 ScriptFunctionsLgop2::o1_PLAYVOICE(int16 argc, int16 *argv) { -	if (argv[0] > 0) { -		_vm->_mixer->stopHandle(_audioStreamHandle); -		_vm->_mixer->playInputStream(Audio::Mixer::kPlainSoundType, &_audioStreamHandle, -			_vm->_res->getSound(argv[0])->getAudioStream(_vm->_soundRate, false)); -	} -	return 0; -} - -} // End of namespace Made diff --git a/engines/made/scriptfuncs_mhne.cpp b/engines/made/scriptfuncs_mhne.cpp deleted file mode 100644 index 95a857bf73..0000000000 --- a/engines/made/scriptfuncs_mhne.cpp +++ /dev/null @@ -1,498 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - * - */ - -#include "common/endian.h" -#include "common/util.h" -#include "common/events.h" - -#include "graphics/cursorman.h" - -#include "made/made.h" -#include "made/resource.h" -#include "made/database.h" -#include "made/screen.h" -#include "made/script.h" -#include "made/pmvplayer.h" -#include "made/scriptfuncs.h" -#include "made/music.h" - -namespace Made { - -/* ScriptFunctionsMhne */ - -typedef Common::Functor2Mem<int16, int16*, int16, ScriptFunctionsMhne> ExternalFuncMhne; -#define External(x) \ -	_externalFuncs.push_back(new ExternalFuncMhne(this, &ScriptFunctionsMhne::x));  \ -	_externalFuncNames.push_back(#x); -void ScriptFunctionsMhne::setupExternalsTable() { - -	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 - -int16 ScriptFunctionsMhne::o1_SYSTEM(int16 argc, int16 *argv) { -	// This opcode is empty. -	return 0; -} - -int16 ScriptFunctionsMhne::o1_INITGRAF(int16 argc, int16 *argv) { -	// This opcode is empty. -	return 0; -} - -int16 ScriptFunctionsMhne::o1_RESTOREGRAF(int16 argc, int16 *argv) { -	// This opcode is empty. -	return 0; -} - -int16 ScriptFunctionsMhne::o1_DRAWPIC(int16 argc, int16 *argv) { -	return _vm->_screen->drawPic(argv[4], argv[3], argv[2], argv[1], argv[0]); -} - -int16 ScriptFunctionsMhne::o1_CLS(int16 argc, int16 *argv) { - 	_vm->_screen->clearScreen(); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_SHOWPAGE(int16 argc, int16 *argv) { -	_vm->_screen->show(); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_EVENT(int16 argc, int16 *argv) { - -	Common::Event event; -	Common::EventManager *eventMan = g_system->getEventManager(); - -	int16 eventNum = 0; - -	if (eventMan->pollEvent(event)) { -		switch (event.type) { - -		case Common::EVENT_MOUSEMOVE: -			_vm->_eventMouseX = event.mouse.x; -			_vm->_eventMouseY = event.mouse.y; -			break; -			 -		case Common::EVENT_LBUTTONDOWN: -			eventNum = 1; -			break; - -		/* -		case Common::EVENT_LBUTTONUP: -			eventNum = 2; // TODO: Is this correct? -			break; -		*/ - -		case Common::EVENT_RBUTTONDOWN: -			eventNum = 3; -			break; - -		/* -		case Common::EVENT_RBUTTONUP: -			eventNum = 4; // TODO: Is this correct? -			break; -		*/ - -		case Common::EVENT_KEYDOWN: -			_vm->_eventKey = event.kbd.ascii; -			// For unknown reasons, the game accepts ASCII code -			// 9 as backspace -			if (_vm->_eventKey == Common::KEYCODE_BACKSPACE) -				_vm->_eventKey = 9; -			eventNum = 5; -			break; - -		case Common::EVENT_QUIT: -			_vm->_quit = true; -			break; - -		default: -			break; - -		} -	} - -	_vm->_system->updateScreen(); - -	return eventNum; -} - -int16 ScriptFunctionsMhne::o1_EVENTX(int16 argc, int16 *argv) { -	return _vm->_eventMouseX; -} - -int16 ScriptFunctionsMhne::o1_EVENTY(int16 argc, int16 *argv) { -	return _vm->_eventMouseY; -} - -int16 ScriptFunctionsMhne::o1_EVENTKEY(int16 argc, int16 *argv) { -	return _vm->_eventKey; -} - -int16 ScriptFunctionsMhne::o1_VISUALFX(int16 argc, int16 *argv) { -	_vm->_screen->setVisualEffectNum(argv[0]); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_PLAYSND(int16 argc, int16 *argv) { -	int soundNum = argv[0]; -	bool loop = false; - -	if (argc > 1) { -		soundNum = argv[1]; -		loop = (argv[0] == 1); -	} - -	if (soundNum > 0) { -		if (!_vm->_mixer->isSoundHandleActive(_audioStreamHandle)) { -			_vm->_mixer->playInputStream(Audio::Mixer::kPlainSoundType, &_audioStreamHandle,  -										 _vm->_res->getSound(soundNum)->getAudioStream(_vm->_soundRate, loop)); -		} -	} - -	return 0; -} - -int16 ScriptFunctionsMhne::o1_PLAYMUS(int16 argc, int16 *argv) { -	int16 musicNum = argv[0]; -	if (musicNum > 0) { -		_xmidiRes = _vm->_res->getXmidi(musicNum); -		_vm->_music->playXMIDI(_xmidiRes); -	} -	return 0; -} - -int16 ScriptFunctionsMhne::o1_STOPMUS(int16 argc, int16 *argv) { -	if (_vm->_music->isPlaying()) { -		_vm->_music->stop(); -		_vm->_res->freeResource(_xmidiRes); -	} -	return 0; -} - -int16 ScriptFunctionsMhne::o1_ISMUS(int16 argc, int16 *argv) { -	if (_vm->_music->isPlaying()) -		return 1; -	else -		return 0; -} - -int16 ScriptFunctionsMhne::o1_TEXTPOS(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_TEXTPOS"); -	// This seems to be some kind of low-level opcode. -	// The original engine calls int 10h to set the VGA cursor position. -	return 0; -} - -int16 ScriptFunctionsMhne::o1_FLASH(int16 argc, int16 *argv) { -	_vm->_screen->flash(argv[0]); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_PLAYNOTE(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_PLAYNOTE"); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_STOPNOTE(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_STOPNOTE"); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_PLAYTELE(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_PLAYTELE"); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_STOPTELE(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_STOPTELE"); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_HIDECURS(int16 argc, int16 *argv) { -	_vm->_system->showMouse(false); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_SHOWCURS(int16 argc, int16 *argv) { -	_vm->_system->showMouse(true); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_MUSICBEAT(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_MUSICBEAT"); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_SCREENLOCK(int16 argc, int16 *argv) { -	_vm->_screen->setScreenLock(argv[0] != 0); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_ADDSPRITE(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_ADDSPRITE"); -	//_vm->_screen->drawSprite(argv[2], argv[1], argv[0]); -	return argv[2]; -} - -int16 ScriptFunctionsMhne::o1_FREEANIM(int16 argc, int16 *argv) { -	_vm->_screen->clearChannels(); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_DRAWSPRITE(int16 argc, int16 *argv) { -	return _vm->_screen->drawSprite(argv[2], argv[1], argv[0]); -} - -int16 ScriptFunctionsMhne::o1_ERASESPRITES(int16 argc, int16 *argv) { -	_vm->_screen->clearChannels(); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_UPDATESPRITES(int16 argc, int16 *argv) { -	_vm->_screen->updateSprites(); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_GETTIMER(int16 argc, int16 *argv) { -	return _vm->getTimer(argv[0]); -} - -int16 ScriptFunctionsMhne::o1_SETTIMER(int16 argc, int16 *argv) { -	_vm->setTimer(argv[1], argv[0]); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_RESETTIMER(int16 argc, int16 *argv) { -	_vm->resetTimer(argv[0]); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_ALLOCTIMER(int16 argc, int16 *argv) { -	int16 timerNum = _vm->allocTimer(); -	return timerNum; -} - -int16 ScriptFunctionsMhne::o1_FREETIMER(int16 argc, int16 *argv) { -	_vm->freeTimer(argv[0]); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_PALETTELOCK(int16 argc, int16 *argv) { -	_vm->_screen->setPaletteLock(argv[0] != 0); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_FONT(int16 argc, int16 *argv) { -	_vm->_screen->setFont(argv[0]); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_DRAWTEXT(int16 argc, int16 *argv) { -	Object *obj = _vm->_dat->getObject(argv[argc - 1]); -	const char *text = obj->getString(); -	_vm->_screen->printText(text); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_HOMETEXT(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_HOMETEXT"); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_TEXTRECT(int16 argc, int16 *argv) { -	int16 x1 = CLIP<int16>(argv[4], 1, 318); -	int16 y1 = CLIP<int16>(argv[3], 1, 198); -	int16 x2 = CLIP<int16>(argv[2], 1, 318); -	int16 y2 = CLIP<int16>(argv[1], 1, 198); -	//int16 textValue = argv[0]; -	// TODO: textValue -	_vm->_screen->setTextRect(Common::Rect(x1, y1, x2, y2)); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_TEXTXY(int16 argc, int16 *argv) { -	int16 x = CLIP<int16>(argv[1], 1, 318); -	int16 y = CLIP<int16>(argv[0], 1, 198); -	_vm->_screen->setTextXY(x, y); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_DROPSHADOW(int16 argc, int16 *argv) { -	// if the drop shadow color is -1, then text drop shadow is disabled -	// when font drop shadow is enabled, outline is disabled -	_vm->_screen->setDropShadowColor(argv[0]); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_TEXTCOLOR(int16 argc, int16 *argv) { -	_vm->_screen->setTextColor(argv[0]); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_OUTLINE(int16 argc, int16 *argv) { -	// if the outline color is -1, then text outline is disabled -	// when font outline is enabled, drop shadow is disabled -	_vm->_screen->setOutlineColor(argv[0]); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_LOADCURSOR(int16 argc, int16 *argv) { -	PictureResource *flex = _vm->_res->getPicture(argv[2]); -	Graphics::Surface *surf = flex->getPicture(); -	CursorMan.replaceCursor((const byte *)surf->pixels, surf->w, surf->h, argv[1], argv[0], 0); -	CursorMan.showMouse(true); -	_vm->_res->freeResource(flex); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_SETGROUND(int16 argc, int16 *argv) { -	_vm->_screen->setGround(argv[0]); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_RESTEXT(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_RESTEXT"); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_ADDMASK(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_ADDMASK"); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_SETMASK(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_SETMASK"); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_ISSND(int16 argc, int16 *argv) { -	if (_vm->_mixer->isSoundHandleActive(_audioStreamHandle)) -		return 1; -	else -		return 0; -} - -int16 ScriptFunctionsMhne::o1_STOPSND(int16 argc, int16 *argv) { -	_vm->_mixer->stopHandle(_audioStreamHandle); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_PLAYVOICE(int16 argc, int16 *argv) { -	if (argv[0] > 0) { -		_vm->_mixer->stopHandle(_audioStreamHandle); -		_vm->_mixer->playInputStream(Audio::Mixer::kPlainSoundType, &_audioStreamHandle, -			_vm->_res->getSound(argv[0])->getAudioStream(_vm->_soundRate, false)); -	} -	return 0; -} - -int16 ScriptFunctionsMhne::o1_CDPLAY(int16 argc, int16 *argv) { -	// This one is called loads of times, so it has been commented out to reduce spam -	//warning("Unimplemented opcode: o1_CDPLAY"); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_STOPCD(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_STOPCD"); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_CDSTATUS(int16 argc, int16 *argv) { -	// This one is called loads of times, so it has been commented out to reduce spam -	//warning("Unimplemented opcode: o1_CDSTATUS"); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_CDTIME(int16 argc, int16 *argv) { -	// This one is called loads of times, so it has been commented out to reduce spam -	//warning("Unimplemented opcode: o1_CDTIME"); -	return 0; -} - -int16 ScriptFunctionsMhne::o1_CDPLAYSEG(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_CDPLAYSEG"); -	return 0; -} - -} // End of namespace Made diff --git a/engines/made/scriptfuncs_rtz.cpp b/engines/made/scriptfuncs_rtz.cpp deleted file mode 100644 index 3536dc3c76..0000000000 --- a/engines/made/scriptfuncs_rtz.cpp +++ /dev/null @@ -1,875 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - * - */ - -#include "common/endian.h" -#include "common/util.h" -#include "common/events.h" - -#include "graphics/cursorman.h" - -#include "made/made.h" -#include "made/resource.h" -#include "made/database.h" -#include "made/screen.h" -#include "made/script.h" -#include "made/pmvplayer.h" -#include "made/scriptfuncs.h" -#include "made/music.h" - -namespace Made { - -/* ScriptFunctionsRtz */ - -typedef Common::Functor2Mem<int16, int16*, int16, ScriptFunctionsRtz> ExternalFuncRtz; -#define External(x) \ -	_externalFuncs.push_back(new ExternalFuncRtz(this, &ScriptFunctionsRtz::x));  \ -	_externalFuncNames.push_back(#x); -void ScriptFunctionsRtz::setupExternalsTable() { - -	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 - -int16 ScriptFunctionsRtz::o1_SYSTEM(int16 argc, int16 *argv) { -	// This opcode is empty. -	return 0; -} - -int16 ScriptFunctionsRtz::o1_INITGRAF(int16 argc, int16 *argv) { -	// This opcode is empty. -	return 0; -} - -int16 ScriptFunctionsRtz::o1_RESTOREGRAF(int16 argc, int16 *argv) { -	// This opcode is empty. -	return 0; -} - -int16 ScriptFunctionsRtz::o1_DRAWPIC(int16 argc, int16 *argv) { -	return _vm->_screen->drawPic(argv[4], argv[3], argv[2], argv[1], argv[0]); -} - -int16 ScriptFunctionsRtz::o1_CLS(int16 argc, int16 *argv) { - 	_vm->_screen->clearScreen(); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_SHOWPAGE(int16 argc, int16 *argv) { -	_vm->_screen->show(); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_EVENT(int16 argc, int16 *argv) { - -	Common::Event event; -	Common::EventManager *eventMan = g_system->getEventManager(); - -	int16 eventNum = 0; - -	if (eventMan->pollEvent(event)) { -		switch (event.type) { - -		case Common::EVENT_MOUSEMOVE: -			_vm->_eventMouseX = event.mouse.x; -			_vm->_eventMouseY = event.mouse.y; -			break; -			 -		case Common::EVENT_LBUTTONDOWN: -			eventNum = 1; -			break; - -		/* -		case Common::EVENT_LBUTTONUP: -			eventNum = 2; // TODO: Is this correct? -			break; -		*/ - -		case Common::EVENT_RBUTTONDOWN: -			eventNum = 3; -			break; - -		/* -		case Common::EVENT_RBUTTONUP: -			eventNum = 4; // TODO: Is this correct? -			break; -		*/ - -		case Common::EVENT_KEYDOWN: -			_vm->_eventKey = event.kbd.ascii; -			// For unknown reasons, the game accepts ASCII code -			// 9 as backspace -			if (_vm->_eventKey == Common::KEYCODE_BACKSPACE) -				_vm->_eventKey = 9; -			eventNum = 5; -			break; - -		case Common::EVENT_QUIT: -			_vm->_quit = true; -			break; - -		default: -			break; - -		} -	} - -	_vm->_system->updateScreen(); - -	return eventNum; -} - -int16 ScriptFunctionsRtz::o1_EVENTX(int16 argc, int16 *argv) { -	return _vm->_eventMouseX; -} - -int16 ScriptFunctionsRtz::o1_EVENTY(int16 argc, int16 *argv) { -	return _vm->_eventMouseY; -} - -int16 ScriptFunctionsRtz::o1_EVENTKEY(int16 argc, int16 *argv) { -	return _vm->_eventKey; -} - -int16 ScriptFunctionsRtz::o1_VISUALFX(int16 argc, int16 *argv) { -	_vm->_screen->setVisualEffectNum(argv[0]); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_PLAYSND(int16 argc, int16 *argv) { -	int soundNum = argv[0]; -	bool loop = false; - -	if (argc > 1) { -		soundNum = argv[1]; -		loop = (argv[0] == 1); -	} - -	if (soundNum > 0) { -		if (!_vm->_mixer->isSoundHandleActive(_audioStreamHandle)) { -			_vm->_mixer->playInputStream(Audio::Mixer::kPlainSoundType, &_audioStreamHandle,  -										 _vm->_res->getSound(soundNum)->getAudioStream(_vm->_soundRate, loop)); -		} -	} - -	return 0; -} - -int16 ScriptFunctionsRtz::o1_PLAYMUS(int16 argc, int16 *argv) { -	int16 musicNum = argv[0]; -	if (musicNum > 0) { -		_xmidiRes = _vm->_res->getXmidi(musicNum); -		if (_xmidiRes) -			_vm->_music->playXMIDI(_xmidiRes); -	} -	return 0; -} - -int16 ScriptFunctionsRtz::o1_STOPMUS(int16 argc, int16 *argv) { -	if (_vm->_music->isPlaying() && _xmidiRes) { -		_vm->_music->stop(); -		_vm->_res->freeResource(_xmidiRes); -		_xmidiRes = NULL; -	} -	return 0; -} - -int16 ScriptFunctionsRtz::o1_ISMUS(int16 argc, int16 *argv) { -	if (_vm->_music->isPlaying()) -		return 1; -	else -		return 0; -} - -int16 ScriptFunctionsRtz::o1_TEXTPOS(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_TEXTPOS"); -	// This seems to be some kind of low-level opcode. -	// The original engine calls int 10h to set the VGA cursor position. -	return 0; -} - -int16 ScriptFunctionsRtz::o1_FLASH(int16 argc, int16 *argv) { -	_vm->_screen->flash(argv[0]); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_PLAYNOTE(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_PLAYNOTE"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_STOPNOTE(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_STOPNOTE"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_PLAYTELE(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_PLAYTELE"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_STOPTELE(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_STOPTELE"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_HIDECURS(int16 argc, int16 *argv) { -	_vm->_system->showMouse(false); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_SHOWCURS(int16 argc, int16 *argv) { -	_vm->_system->showMouse(true); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_MUSICBEAT(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_MUSICBEAT"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_SCREENLOCK(int16 argc, int16 *argv) { -	_vm->_screen->setScreenLock(argv[0] != 0); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_ADDSPRITE(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_ADDSPRITE"); -	//_vm->_screen->drawSprite(argv[2], argv[1], argv[0]); -	return 0;//argv[2]; -} - -int16 ScriptFunctionsRtz::o1_FREEANIM(int16 argc, int16 *argv) { -	_vm->_screen->clearChannels(); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_DRAWSPRITE(int16 argc, int16 *argv) { -	return _vm->_screen->drawSprite(argv[2], argv[1], argv[0]); -} - -int16 ScriptFunctionsRtz::o1_ERASESPRITES(int16 argc, int16 *argv) { -	_vm->_screen->clearChannels(); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_UPDATESPRITES(int16 argc, int16 *argv) { -	_vm->_screen->updateSprites(); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_GETTIMER(int16 argc, int16 *argv) { -	return _vm->getTimer(argv[0]); -} - -int16 ScriptFunctionsRtz::o1_SETTIMER(int16 argc, int16 *argv) { -	_vm->setTimer(argv[1], argv[0]); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_RESETTIMER(int16 argc, int16 *argv) { -	_vm->resetTimer(argv[0]); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_ALLOCTIMER(int16 argc, int16 *argv) { -	int16 timerNum = _vm->allocTimer(); -	return timerNum; -} - -int16 ScriptFunctionsRtz::o1_FREETIMER(int16 argc, int16 *argv) { -	_vm->freeTimer(argv[0]); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_PALETTELOCK(int16 argc, int16 *argv) { -	_vm->_screen->setPaletteLock(argv[0] != 0); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_FONT(int16 argc, int16 *argv) { -	_vm->_screen->setFont(argv[0]); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_DRAWTEXT(int16 argc, int16 *argv) { -	// TODO: Needs vsprintf to get the correct text -	Object *obj = _vm->_dat->getObject(argv[argc - 1]); -	const char *text = obj->getString(); -	_vm->_screen->printText(text); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_HOMETEXT(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_HOMETEXT"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_TEXTRECT(int16 argc, int16 *argv) { -	int16 x1 = CLIP<int16>(argv[4], 1, 318); -	int16 y1 = CLIP<int16>(argv[3], 1, 198); -	int16 x2 = CLIP<int16>(argv[2], 1, 318); -	int16 y2 = CLIP<int16>(argv[1], 1, 198); -	//int16 textValue = argv[0]; -	// TODO: textValue -	_vm->_screen->setTextRect(Common::Rect(x1, y1, x2, y2)); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_TEXTXY(int16 argc, int16 *argv) { -	int16 x = CLIP<int16>(argv[1], 1, 318); -	int16 y = CLIP<int16>(argv[0], 1, 198); -	_vm->_screen->setTextXY(x, y); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_DROPSHADOW(int16 argc, int16 *argv) { -	// if the drop shadow color is -1, then text drop shadow is disabled -	// when font drop shadow is enabled, outline is disabled -	_vm->_screen->setDropShadowColor(argv[0]); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_TEXTCOLOR(int16 argc, int16 *argv) { -	_vm->_screen->setTextColor(argv[0]); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_OUTLINE(int16 argc, int16 *argv) { -	// if the outline color is -1, then text outline is disabled -	// when font outline is enabled, drop shadow is disabled -	_vm->_screen->setOutlineColor(argv[0]); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_LOADCURSOR(int16 argc, int16 *argv) { -	PictureResource *flex = _vm->_res->getPicture(argv[2]); -	Graphics::Surface *surf = flex->getPicture(); -	CursorMan.replaceCursor((const byte *)surf->pixels, surf->w, surf->h, argv[1], argv[0], 0); -	CursorMan.showMouse(true); -	_vm->_res->freeResource(flex); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_SETGROUND(int16 argc, int16 *argv) { -	_vm->_screen->setGround(argv[0]); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_RESTEXT(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_RESTEXT"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_CLIPAREA(int16 argc, int16 *argv) { -	_vm->_screen->setClipArea(argv[3], argv[2], argv[1], argv[0]); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_SETCLIP(int16 argc, int16 *argv) { -	_vm->_screen->setClip(argv[0]); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_ISSND(int16 argc, int16 *argv) { -	if (_vm->_mixer->isSoundHandleActive(_audioStreamHandle)) -		return 1; -	else -		return 0; -} - -int16 ScriptFunctionsRtz::o1_STOPSND(int16 argc, int16 *argv) { -	_vm->_mixer->stopHandle(_audioStreamHandle); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_PLAYVOICE(int16 argc, int16 *argv) { -	if (argv[0] > 0) { -		_vm->_mixer->stopHandle(_audioStreamHandle); -		_vm->_mixer->playInputStream(Audio::Mixer::kPlainSoundType, &_audioStreamHandle, -			_vm->_res->getSound(argv[0])->getAudioStream(_vm->_soundRate, false)); -	} -	return 0; -} - -int16 ScriptFunctionsRtz::o1_CDPLAY(int16 argc, int16 *argv) { -	// This one is called loads of times, so it has been commented out to reduce spam -	//warning("Unimplemented opcode: o1_CDPLAY"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_STOPCD(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_STOPCD"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_CDSTATUS(int16 argc, int16 *argv) { -	// This one is called loads of times, so it has been commented out to reduce spam -	//warning("Unimplemented opcode: o1_CDSTATUS"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_CDTIME(int16 argc, int16 *argv) { -	// This one is called loads of times, so it has been commented out to reduce spam -	//warning("Unimplemented opcode: o1_CDTIME"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_CDPLAYSEG(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_CDPLAYSEG"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_PRINTF(int16 argc, int16 *argv) { -	Object *obj = _vm->_dat->getObject(argv[argc - 1]); -	const char *text = obj->getString(); -	debug(4, "--> text = %s", text); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_MONOCLS(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_MONOCLS"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_SNDENERGY(int16 argc, int16 *argv) { -	// This is called while in-game voices are played -	// Not sure what it's used for -	// -> It's used to animate mouths when NPCs are talking -	// FIXME: This is a workaround for the "sound energy" problem -	// At least the characters move their lips when talking now -	return _vm->_rnd->getRandomNumber(5); -} - -int16 ScriptFunctionsRtz::o1_CLEARTEXT(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_CLEARTEXT"); -	return 1; -} - -int16 ScriptFunctionsRtz::o1_ANIMTEXT(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_ANIMTEXT"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_TEXTWIDTH(int16 argc, int16 *argv) { -	int16 width = 0; -	if (argv[1] > 0) { -		Object *obj = _vm->_dat->getObject(argv[1]); -		const char *text = obj->getString(); -		width = _vm->_screen->getTextWidth(argv[0], text); -	} -	return width; -} - -int16 ScriptFunctionsRtz::o1_PLAYMOVIE(int16 argc, int16 *argv) { -	const char *movieName = _vm->_dat->getObject(argv[1])->getString(); -	_vm->_system->showMouse(false); -	_vm->_pmvPlayer->play(movieName); -	_vm->_system->showMouse(true); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_LOADSND(int16 argc, int16 *argv) { -	SoundResource *sound = _vm->_res->getSound(argv[0]); -	if (sound) { -		_vm->_res->freeResource(sound); -		return 1; -	} -	return 0; -} - -int16 ScriptFunctionsRtz::o1_LOADMUS(int16 argc, int16 *argv) { -	GenericResource *xmidi = _vm->_res->getXmidi(argv[0]); -	if (xmidi) { -		_vm->_res->freeResource(xmidi); -		return 1; -	} -	return 0; -} - -int16 ScriptFunctionsRtz::o1_LOADPIC(int16 argc, int16 *argv) { -	PictureResource *flex = _vm->_res->getPicture(argv[0]); -	if (flex) { -		_vm->_res->freeResource(flex); -		return 1; -	} -	return 0; -} - -int16 ScriptFunctionsRtz::o1_MUSICVOL(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_MUSICVOL"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_RESTARTEVENTS(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_RESTARTEVENTS"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_PLACESPRITE(int16 argc, int16 *argv) { -	return _vm->_screen->placeSprite(argv[3], argv[2], argv[1], argv[0]); -} - -int16 ScriptFunctionsRtz::o1_PLACETEXT(int16 argc, int16 *argv) { -	return _vm->_screen->placeText(argv[6], argv[5], argv[4], argv[3], argv[2], argv[1], argv[0]); -} - -int16 ScriptFunctionsRtz::o1_DELETECHANNEL(int16 argc, int16 *argv) { -	_vm->_screen->deleteChannel(argv[0]); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_CHANNELTYPE(int16 argc, int16 *argv) { -	return _vm->_screen->getChannelType(argv[0]); -} - -int16 ScriptFunctionsRtz::o1_SETSTATE(int16 argc, int16 *argv) { -	_vm->_screen->setChannelState(argv[1], argv[0]); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_SETLOCATION(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_SETLOCATION"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_SETCONTENT(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_SETCONTENT"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_EXCLUDEAREA(int16 argc, int16 *argv) { -	_vm->_screen->setExcludeArea(argv[3], argv[2], argv[1], argv[0]); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_SETEXCLUDE(int16 argc, int16 *argv) { -	_vm->_screen->setExclude(argv[0]); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_GETSTATE(int16 argc, int16 *argv) { -	return _vm->_screen->getChannelState(argv[0]); -} - -int16 ScriptFunctionsRtz::o1_PLACEANIM(int16 argc, int16 *argv) { -	return _vm->_screen->placeAnim(argv[4], argv[3], argv[2], argv[1], argv[0]); -} - -int16 ScriptFunctionsRtz::o1_SETFRAME(int16 argc, int16 *argv) { -	_vm->_screen->setAnimFrame(argv[1], argv[0]); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_GETFRAME(int16 argc, int16 *argv) { -	return _vm->_screen->getAnimFrame(argv[0]); -} - -int16 ScriptFunctionsRtz::o1_GETFRAMECOUNT(int16 argc, int16 *argv) { -	int16 frameCount = 0; -	AnimationResource *anim = _vm->_res->getAnimation(argv[0]); -	if (anim) { -		frameCount = anim->getCount(); -		_vm->_res->freeResource(anim); -	} -	return frameCount; -} - -int16 ScriptFunctionsRtz::o1_PICWIDTH(int16 argc, int16 *argv) { -	int16 width = 0; -	PictureResource *flex = _vm->_res->getPicture(argv[0]); -	if (flex) { -		width = flex->getPicture()->w; -		_vm->_res->freeResource(flex); -	} -	return width; -} - -int16 ScriptFunctionsRtz::o1_PICHEIGHT(int16 argc, int16 *argv) { -	int16 height = 0; -	PictureResource *flex = _vm->_res->getPicture(argv[0]); -	if (flex) { -		height = flex->getPicture()->h; -		_vm->_res->freeResource(flex); -	} -	return height; -} - -int16 ScriptFunctionsRtz::o1_SOUNDRATE(int16 argc, int16 *argv) { -	_vm->_soundRate = argv[0]; -	return 1; -} - -int16 ScriptFunctionsRtz::o1_DRAWANIMPIC(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_DRAWANIMPIC"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_LOADANIM(int16 argc, int16 *argv) { -	AnimationResource *anim = _vm->_res->getAnimation(argv[0]); -	if (anim) { -		_vm->_res->freeResource(anim); -		return 1; -	} -	return 0; -} - -int16 ScriptFunctionsRtz::o1_READTEXT(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_READTEXT"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_READMENU(int16 argc, int16 *argv) { -	int16 objectIndex = argv[2]; -	int16 menuIndex = argv[1]; -	int16 textIndex = argv[0]; -	int16 length = 0; -	MenuResource *menu = _vm->_res->getMenu(menuIndex); -	if (menu) { -		const char *text = menu->getString(textIndex); -		debug(4, "objectIndex = %04X; text = %s\n", objectIndex, text); -		Object *obj = _vm->_dat->getObject(objectIndex); -		obj->setString(text); -		_vm->_res->freeResource(menu); -		if (text) -			length = strlen(text); -	} -	return length; -} - -int16 ScriptFunctionsRtz::o1_DRAWMENU(int16 argc, int16 *argv) { -	int16 menuIndex = argv[1]; -	int16 textIndex = argv[0]; -	MenuResource *menu = _vm->_res->getMenu(menuIndex); -	if (menu) { -		const char *text = menu->getString(textIndex); -		if (text) -			_vm->_screen->printText(text); -		_vm->_res->freeResource(menu); -	} -	return 0; -} - -int16 ScriptFunctionsRtz::o1_MENUCOUNT(int16 argc, int16 *argv) { -	int16 menuIndex = argv[0]; -	int16 count = 0; -	MenuResource *menu = _vm->_res->getMenu(menuIndex); -	if (menu) { -		count = menu->getCount(); -		_vm->_res->freeResource(menu); -	} -	return count; -} - -int16 ScriptFunctionsRtz::o1_SAVEGAME(int16 argc, int16 *argv) { -	 -	int16 saveNum = argv[2]; -	int16 descObjectIndex = argv[1]; -	int16 version = argv[0]; -	 -	if (saveNum > 999) -		return 6; - -	Object *obj = _vm->_dat->getObject(descObjectIndex); -	const char *description = obj->getString(); - -	Common::String filename = _vm->getSavegameFilename(saveNum); - -	return _vm->_dat->savegame(filename.c_str(), description, version); -	 -} - -int16 ScriptFunctionsRtz::o1_LOADGAME(int16 argc, int16 *argv) { - -	int16 saveNum = argv[1]; -	int16 version = argv[0]; - -	if (saveNum > 999) -		return 1; - -	Common::String filename = _vm->getSavegameFilename(saveNum); - -	return _vm->_dat->loadgame(filename.c_str(), version); -	 -} - -int16 ScriptFunctionsRtz::o1_GAMENAME(int16 argc, int16 *argv) { -	 -	int16 descObjectIndex = argv[2]; -	int16 saveNum = argv[1]; -	/*int16 version = argv[0];*/ -	Common::String description; - -	if (saveNum > 999) -		return 1; - -	Common::String filename = _vm->getSavegameFilename(saveNum); - -	Object *obj = _vm->_dat->getObject(descObjectIndex); - -	if (_vm->_dat->getSavegameDescription(filename.c_str(), description)) { -		obj->setString(description.c_str()); -		return 0; -	} else { -		obj->setString(""); -		return 1; -	} - -} - -int16 ScriptFunctionsRtz::o1_SHAKESCREEN(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_SHAKESCREEN"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_PLACEMENU(int16 argc, int16 *argv) { -	warning("Unimplemented opcode: o1_PLACEMENU"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_SETVOLUME(int16 argc, int16 *argv) { -	_vm->_mixer->setVolumeForSoundType(Audio::Mixer::kSFXSoundType, argv[0] * 25); -	_vm->_mixer->setVolumeForSoundType(Audio::Mixer::kSpeechSoundType, argv[0] * 25); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_WHATSYNTH(int16 argc, int16 *argv) { -	// 0 = Default -	// 1 = PCSPKR -	// 2 = SBFM/ADLIB -	// 3 = ADLIBG -	// 4 = MT32MPU -	warning("Unimplemented opcode: o1_WHATSYNTH"); -	return 0; -} - -int16 ScriptFunctionsRtz::o1_SLOWSYSTEM(int16 argc, int16 *argv) { -	//warning("Unimplemented opcode: o1_SLOWSYSTEM"); -	// NOTE: In the original engine this value is set via a command-line parameter -	// I don't think it's needed here -	// One could maybe think about returning 1 here on actually slower systems. -	return 0; -} - -} // End of namespace Made | 
