diff options
| author | Strangerke | 2012-03-21 08:32:36 +0100 | 
|---|---|---|
| committer | Strangerke | 2012-04-06 08:23:36 +0200 | 
| commit | 76f7858096a607b2de97572c89e8fc84c1a05efb (patch) | |
| tree | b15a01576314768254da36ab37703112b41a40e7 | |
| parent | d09561e0c48486a6fcf68febd514e6c2dd63ce92 (diff) | |
| download | scummvm-rg350-76f7858096a607b2de97572c89e8fc84c1a05efb.tar.gz scummvm-rg350-76f7858096a607b2de97572c89e8fc84c1a05efb.tar.bz2 scummvm-rg350-76f7858096a607b2de97572c89e8fc84c1a05efb.zip | |
MORTEVIELLE: More renaming
| -rw-r--r-- | engines/mortevielle/actions.cpp | 12 | ||||
| -rw-r--r-- | engines/mortevielle/asm.cpp | 52 | ||||
| -rw-r--r-- | engines/mortevielle/asm.h | 36 | ||||
| -rw-r--r-- | engines/mortevielle/dialogs.cpp | 6 | ||||
| -rw-r--r-- | engines/mortevielle/keyboard.cpp | 3 | ||||
| -rw-r--r-- | engines/mortevielle/menu.cpp | 8 | ||||
| -rw-r--r-- | engines/mortevielle/module.mk | 1 | ||||
| -rw-r--r-- | engines/mortevielle/mor.cpp | 109 | ||||
| -rw-r--r-- | engines/mortevielle/mor.h | 5 | ||||
| -rw-r--r-- | engines/mortevielle/mortevielle.cpp | 228 | ||||
| -rw-r--r-- | engines/mortevielle/mortevielle.h | 13 | ||||
| -rw-r--r-- | engines/mortevielle/mouse.cpp | 14 | ||||
| -rw-r--r-- | engines/mortevielle/mouse.h | 6 | ||||
| -rw-r--r-- | engines/mortevielle/outtext.cpp | 120 | ||||
| -rw-r--r-- | engines/mortevielle/outtext.h | 1 | ||||
| -rw-r--r-- | engines/mortevielle/ovd1.cpp | 16 | ||||
| -rw-r--r-- | engines/mortevielle/saveload.cpp | 4 | ||||
| -rw-r--r-- | engines/mortevielle/speech.cpp | 2 | ||||
| -rw-r--r-- | engines/mortevielle/var_mor.cpp | 3 | ||||
| -rw-r--r-- | engines/mortevielle/var_mor.h | 9 | 
20 files changed, 285 insertions, 363 deletions
| diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index a4255fd598..9479ad5445 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -209,7 +209,7 @@ void MortevielleEngine::fctTake() {  				_obpart = false;  				affrep();  			} else { -				g_tabdon[acha + ((g_mchai - 1) * 10) + g_cs - 1] = 0; +				g_tabdon[kAcha + ((g_mchai - 1) * 10) + g_cs - 1] = 0;  				tsuiv();  				++g_dobj;  				if (g_dobj > 6) { @@ -699,7 +699,7 @@ void MortevielleEngine::fctPlace() {  					// Do you want to enter the hidden passage?  					int answer = Alert::show(getEngineString(S_YES_NO), 1);  					if (answer == 1) { -						Common::String alertTxt = deline(582); +						Common::String alertTxt = g_vm->getString(582);  						Alert::show(alertTxt, 1);  						bool enterPassageFl = KnowledgeCheck::show(); @@ -722,11 +722,11 @@ void MortevielleEngine::fctPlace() {  							_menu.setDestinationMenuText(SECRET_PASSAGE);  						} else {  							_menu.setDestinationMenuText(g_s._currPlace); -							writepal(14); +							setPal(14);  							dessin(0);  							aniof(1, 2);  							aniof(1, 1); -							alertTxt = deline(577); +							alertTxt = g_vm->getString(577);  							Alert::show(alertTxt, 1);  							aniof(2, 1);  							g_crep = 166; @@ -1368,7 +1368,7 @@ void MortevielleEngine::fctDiscuss() {  	for (int ix = 1; ix <= 46; ++ix)  		te[ix] = false;  	for (int ix = 1; ix <= 45; ++ix) { -		lib[ix] = deline(ix + kQuestionStringIndex); +		lib[ix] = g_vm->getString(ix + kQuestionStringIndex);  		for (i = lib[ix].size(); i <= 40; ++i)  			lib[ix] = lib[ix] + ' ';  	} @@ -1403,7 +1403,7 @@ void MortevielleEngine::fctDiscuss() {  			_mouse.moveMouse(f, tou);  			CHECK_QUIT; -			_mouse.getMousePos_(x, y, c); +			_mouse.getMousePosition(x, y, c);  			x *= (3 - g_res);  			if (x > 319)  				cx = 41; diff --git a/engines/mortevielle/asm.cpp b/engines/mortevielle/asm.cpp deleted file mode 100644 index 2d057a38f9..0000000000 --- a/engines/mortevielle/asm.cpp +++ /dev/null @@ -1,52 +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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#include "common/scummsys.h" - -namespace Mortevielle { - -/** - * Decodes a number of 64 byte blocks - * @param pStart	Start of data - * @param count		Number of 64 byte blocks - */ -void zzuul(byte *pStart, int count) { -	while (count-- > 0) { -		for (int idx = 0; idx < 64; ++pStart, ++idx) { -			uint16 v = ((*pStart - 0x80) << 1) + 0x80; - -			if (v & 0x8000) -				*pStart = 0; -			else if (v & 0xff00) -				*pStart = 0xff; -			else  -				*pStart = (byte)v; -		} -	} -} - -} // End of namespace Mortevielle diff --git a/engines/mortevielle/asm.h b/engines/mortevielle/asm.h deleted file mode 100644 index 11793b3d46..0000000000 --- a/engines/mortevielle/asm.h +++ /dev/null @@ -1,36 +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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#ifndef MORTEVIELLE_ASM_H -#define MORTEVIELLE_ASM_H - -namespace Mortevielle { - -extern void zzuul(byte *pStart, int count); - -} // End of namespace Mortevielle -#endif diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 68d2852100..c20b99e12e 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -291,7 +291,7 @@ bool KnowledgeCheck::show() {  	int rep;  	int firstOption, lastOption;  	char key; -	rectangle coor[kMaxRect]; +	Rect coor[kMaxRect];  	Common::String choiceArray[15];  	int currChoice, prevChoice; @@ -307,7 +307,7 @@ bool KnowledgeCheck::show() {  		else  			dialogHeight = 23;  		g_vm->_screenSurface.fillRect(15, Common::Rect(0, 14, 630, dialogHeight)); -		Common::String tmpStr = deline(textIndexArr[indx]); +		Common::String tmpStr = g_vm->getString(textIndexArr[indx]);  		displayStr(tmpStr, 20, 15, 100, 2, 0);  		if (indx != 9) { @@ -322,7 +322,7 @@ bool KnowledgeCheck::show() {  		prevChoice = 1;  		for (int j = firstOption; j <= lastOption; ++j, ++prevChoice) { -			tmpStr = deline(j); +			tmpStr = g_vm->getString(j);  			if ((int) tmpStr.size() > maxLength)  				maxLength = tmpStr.size();  			displayStr(tmpStr, 100, optionPosY, 100, 1, 0); diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index 71ab0c1e99..2ce96bcede 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -28,7 +28,6 @@  #include "mortevielle/mortevielle.h"  #include "mortevielle/keyboard.h"  #include "mortevielle/var_mor.h" -#include "mortevielle/asm.h"  namespace Mortevielle { @@ -47,7 +46,7 @@ int testou() {  		break;  	case '\26' :  		if ((g_vm->_c_zzz == 1) || (g_vm->_c_zzz == 2)) { -			zzuul(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); +			g_vm->decodeNumber(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64);  			++g_vm->_c_zzz;  			return 61; diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 6cf09be3c8..0ba0cb5e51 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -97,7 +97,7 @@ void Menu::setDestinationMenuText(int roomId) {  	int destinationId = 0;  	for (; (destinationId < 7) && (g_vm->_v_lieu[destinationId][roomId]); ++destinationId) { -		nomp = deline(g_vm->_v_lieu[destinationId][roomId] + kMenuPlaceStringIndex); +		nomp = g_vm->getString(g_vm->_v_lieu[destinationId][roomId] + kMenuPlaceStringIndex);  		while (nomp.size() < 20)  			nomp += ' ';  		setText(_moveMenu[destinationId + 1], nomp); @@ -518,18 +518,18 @@ void Menu::initMenu() {  		_moveStringArray[i] = "*                       ";  	i = 1;  	do { -		_actionStringArray[i] = deline(i + kMenuActionStringIndex); +		_actionStringArray[i] = g_vm->getString(i + kMenuActionStringIndex);  		while (_actionStringArray[i].size() < 10)  			_actionStringArray[i] += ' ';  		if (i < 9) {  			if (i < 6) { -				_selfStringArray[i] = deline(i + kMenuSelfStringIndex); +				_selfStringArray[i] = g_vm->getString(i + kMenuSelfStringIndex);  				while (_selfStringArray[i].size() < 10)  					_selfStringArray[i] += ' ';  			} -			_discussStringArray[i] = deline(i + kMenuSayStringIndex) + ' '; +			_discussStringArray[i] = g_vm->getString(i + kMenuSayStringIndex) + ' ';  		}  		++i;  	} while (i != 22); diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk index 07631ea264..563da9f535 100644 --- a/engines/mortevielle/module.mk +++ b/engines/mortevielle/module.mk @@ -2,7 +2,6 @@ MODULE := engines/mortevielle  MODULE_OBJS := \  	actions.o \ -	asm.o \  	detection.o \  	dialogs.o \  	graphics.o \ diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 4ba68c3778..77a23d31fe 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -44,16 +44,7 @@  namespace Mortevielle { -/* NIVEAU 15 */ -void copcha() { -	int i = acha; -	do { -		g_tabdon[i] = g_tabdon[i + 390]; -		++i; -	} while (i != acha + 390); -} - -void outbloc(int n, pattern p, nhom *pal) { +void outbloc(int n, Pattern p, nhom *pal) {  	int ad = n * 404 + 0xd700;  	WRITE_LE_UINT16(&g_mem[0x6000 * 16 + ad], p._tax); @@ -65,34 +56,6 @@ void outbloc(int n, pattern p, nhom *pal) {  	}  } -void writepal(int n) { -	switch (g_vm->_currGraphicalDevice) { -	case MODE_TANDY: -	case MODE_EGA: -	case MODE_AMSTRAD1512: -		for (int i = 1; i <= 16; ++i) { -			g_mem[(0x7000 * 16) + (2 * i)] = g_tabpal[n][i].x; -			g_mem[(0x7000 * 16) + (2 * i) + 1] = g_tabpal[n][i].y; -		} -		break; -	case MODE_CGA: { -		nhom pal[16]; -		for (int i = 0; i < 16; ++i) { -			pal[i] = g_palcga[n]._a[i]; -		} - -		if (n < 89) -			palette(g_palcga[n]._p); -		 -		for (int i = 0; i <= 15; ++i) -			outbloc(i, g_tpt[pal[i]._id], pal); -		} -		break; -	default: -		break; -	} -} -  void pictout(int seg, int dep, int x, int y) {  	GfxSurface surface; @@ -199,7 +162,7 @@ void modif(int &nu) {  void dessine(int ad, int x, int y) {  	g_vm->_mouse.hideMouse(); -	writepal(g_numpal); +	g_vm->setPal(g_numpal);  	pictout(ad, 0, x, y);  	g_vm->_mouse.showMouse();  } @@ -209,7 +172,7 @@ void dessine(int ad, int x, int y) {   * @remarks	Originally called 'dessine_rouleau'   */  void drawRightFrame() { -	writepal(89); +	g_vm->setPal(89);  	if (g_vm->_currGraphicalDevice == MODE_HERCULES) {  		g_mem[0x7000 * 16 + 14] = 15;  	} @@ -228,7 +191,7 @@ void text1(int x, int y, int nb, int m) {  		co = 10;  	else  		co = 6; -	Common::String tmpStr = deline(m); +	Common::String tmpStr = g_vm->getString(m);  	if ((y == 182) && ((int) tmpStr.size() * co > nb * 6))  		y = 176;  	displayStr(tmpStr, x, y, nb, 20, g_vm->_textColor); @@ -291,7 +254,7 @@ void modobj(int m) {  	Common::String strp = Common::String(' ');  	if (m != 500) -		strp = deline(m - 501 + kInventoryStringIndex); +		strp = g_vm->getString(m - 501 + kInventoryStringIndex);  	g_vm->_menu.setText(g_vm->_menu._inventoryMenu[8], strp);  	g_vm->_menu.disableMenuItem(g_vm->_menu._inventoryMenu[8]); @@ -299,7 +262,7 @@ void modobj(int m) {  void repon(int f, int m) {  	if ((m > 499) && (m < 563)) { -		Common::String tmpStr = deline(m - 501 + kInventoryStringIndex); +		Common::String tmpStr = g_vm->getString(m - 501 + kInventoryStringIndex);  		if ((int) tmpStr.size() > ((58 + (g_res - 1) * 37) << 1))  			g_vm->_largestClearScreen = true; @@ -335,7 +298,7 @@ void repon(int f, int m) {  			else  				i = 5; -			Common::String tmpStr = deline(m); +			Common::String tmpStr = g_vm->getString(m);  			displayStr(tmpStr, 80, 40, 60, 25, i);  			if (m == 180) @@ -494,54 +457,6 @@ void phaz(int &rand, int &p, int cf) {  	rand = g_vm->getRandomNumber(1, 100);  } -/** - * Engine function - When restarting the game, reset the main variables used by the engine - * @remarks	Originally called 'inzon' - */ -void resetVariables() { -	copcha(); - -	g_s._alreadyEnteredManor = false; -	g_s._selectedObjectId = 0; -	g_s._cellarObjectId = 0; -	g_s._atticBallHoleObjectId = 0; -	g_s._atticRodHoleObjectId = 0; -	g_s._wellObjectId = 0; -	g_s._secretPassageObjectId = 0; -	g_s._purpleRoomObjectId = 136; -	g_s._cryptObjectId = 141; -	g_s._faithScore = g_vm->getRandomNumber(4, 10); -	g_s._currPlace = MANOR_FRONT; - -	for (int i = 2; i <= 6; ++i) -		g_s._sjer[i] = chr(0); - -	g_s._sjer[1] = chr(113); -	g_s._fullHour = chr(20); - -	for (int i = 1; i <= 10; ++i) -		g_s._pourc[i] = ' '; - -	for (int i = 1; i <= 6; ++i) -		g_s._teauto[i] = '*'; - -	for (int i = 7; i <= 9; ++i) -		g_s._teauto[i] = ' '; - -	for (int i = 10; i <= 28; ++i) -		g_s._teauto[i] = '*'; - -	for (int i = 29; i <= 42; ++i) -		g_s._teauto[i] = ' '; - -	g_s._teauto[33] = '*'; - -	for (int i = 1; i <= 8; ++i) -		g_nbrep[i] = 0; - -	init_nbrepm(); -} -  int t11(int roomId) {  	int retVal = 0;  	int p, rand; @@ -876,7 +791,7 @@ void tkey1(bool d) {  	while (g_vm->keyPressed())  		g_key = testou();  	do { -		g_vm->_mouse.getMousePos_(x, y, c); +		g_vm->_mouse.getMousePosition(x, y, c);  		g_vm->keyPressed();  	} while (c != 0); @@ -885,7 +800,7 @@ void tkey1(bool d) {  		if (d)  			tinke();  		quest = g_vm->keyPressed(); -		g_vm->_mouse.getMousePos_(x, y, c); +		g_vm->_mouse.getMousePosition(x, y, c);  		CHECK_QUIT;  	} while (!(quest || (c != 0) || (d && g_vm->_anyone)));  	if (quest) @@ -967,7 +882,7 @@ void modinv() {  		if (g_s._sjer[i] != chr(0)) {  			++cy;  			r = (ord(g_s._sjer[i]) + 400); -			nomp = deline(r - 501 + kInventoryStringIndex); +			nomp = g_vm->getString(r - 501 + kInventoryStringIndex);  			g_vm->_menu.setText(g_vm->_menu._inventoryMenu[cy], nomp);  			g_vm->_menu.enableMenuItem(g_vm->_menu._inventoryMenu[i]);  		} @@ -992,7 +907,7 @@ void premtet() {  /* NIVEAU 5 */  void ajchai() { -	int cy = acha + ((g_mchai - 1) * 10) - 1; +	int cy = kAcha + ((g_mchai - 1) * 10) - 1;  	int cx = 0;  	do {  		++cx; @@ -1077,7 +992,7 @@ void tsuiv() {  	int tbcl;  	int cl; -	int cy = acha + ((g_mchai - 1) * 10) - 1; +	int cy = kAcha + ((g_mchai - 1) * 10) - 1;  	int cx = 0;  	do {  		++cx; diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index d3defc1b04..ebf9537992 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -42,9 +42,7 @@ static const int _actionMenu[12] = { OPCODE_NONE,  		OPCODE_PLACE, OPCODE_OPEN,   OPCODE_LEAVE  }; -extern void copcha(); -extern void outbloc(int n, pattern p, nhom *pal); -extern void writepal(int n); +extern void outbloc(int n, Pattern p, nhom *pal);  extern void pictout(int seg, int dep, int x, int y);  extern void sauvecr(int y, int dy);  extern void charecr(int y, int dy); @@ -76,7 +74,6 @@ extern void becfren(int roomId);  /* NIVEAU 10 */  extern void init_nbrepm();  extern void phaz(int &rand, int &p, int cf); -extern void resetVariables();  extern int t11(int roomId);  extern void cavegre();  extern void writetp(Common::String s, int t); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 9b7ade1967..cd375970b7 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -30,7 +30,6 @@  #include "graphics/pixelformat.h"  #include "mortevielle/mortevielle.h"  #include "mortevielle/dialogs.h" -#include "mortevielle/asm.h"  #include "mortevielle/keyboard.h"  #include "mortevielle/menu.h"  #include "mortevielle/mor.h" @@ -43,6 +42,31 @@  namespace Mortevielle { +const byte tabdr[32] = { +	32, 101, 115,  97, 114, 105, 110, +	117, 116, 111, 108,  13, 100,  99, +	112, 109,  46, 118, 130,  39, 102, +	98,  44, 113, 104, 103,  33,  76, +	85, 106,  30,  31 +}; + + +const byte tab30[32] = { +	69,  67,  74, 138, 133, 120,  77, 122, +	121,  68,  65,  63,  73,  80,  83,  82, +	156,  45,  58,  79,  49,  86,  78,  84, +	71,  81,  64,  66, 135,  34, 136,  91 +}; + + + +const byte tab31[32]= { +	93,  47,  48,  53,  50,  70, 124,  75, +	72, 147, 140, 150, 151,  57,  56,  51, +	107, 139,  55,  89, 131,  37,  54,  88, +	119,   0,   0,   0,   0,   0,   0,   0 +}; +  MortevielleEngine *g_vm;  MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc): @@ -164,7 +188,7 @@ Common::ErrorCode MortevielleEngine::initialise() {  		return result;  	// Load some error messages (was previously in chartex()) -	_hintPctMessage = deline(580);  // You should have noticed %d hints +	_hintPctMessage = getString(580);  // You should have noticed %d hints  	// Set default EGA palette  	_paletteManager.setDefaultPalette(); @@ -177,7 +201,7 @@ Common::ErrorCode MortevielleEngine::initialise() {  	charpal();  	loadCFIPH();  	loadCFIEC(); -	zzuul(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); +	decodeNumber(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64);  	_c_zzz = 1;  	init_nbrepm();  	initMouse(); @@ -541,7 +565,7 @@ void MortevielleEngine::mainGame() {  		loadCFIEC();  	for (g_crep = 1; g_crep <= _c_zzz; ++g_crep)  -		zzuul(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); +		decodeNumber(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64);  	loadBRUIT5();  	_menu.initMenu(); @@ -1684,7 +1708,7 @@ void MortevielleEngine::startDialog(int16 rep) {  	assert(rep >= 0);  	_mouse.hideMouse(); -	Common::String dialogStr = deline(rep + kDialogStringIndex); +	Common::String dialogStr = getString(rep + kDialogStringIndex);  	displayStr(dialogStr, 230, 4, 65, 24, 5);  	f3f8::draw(); @@ -1853,7 +1877,7 @@ void MortevielleEngine::gameLoaded() {  	g_iouv = 0;  	g_dobj = 0;  	affrep(); -	_hintPctMessage = deline(580); +	_hintPctMessage = getString(580);  	_okdes = false;  	_endGame = true; @@ -2101,4 +2125,196 @@ void MortevielleEngine::showMoveMenuAlert() {  	Alert::show(getEngineString(S_USE_DEP_MENU), 1);  } +/** + * Decodes a number of 64 byte blocks + * @param pStart	Start of data + * @param count		Number of 64 byte blocks + * @remarks	Originally called 'zzuul' + */ +void MortevielleEngine::decodeNumber(byte *pStart, int count) { +	while (count-- > 0) { +		for (int idx = 0; idx < 64; ++pStart, ++idx) { +			uint16 v = ((*pStart - 0x80) << 1) + 0x80; + +			if (v & 0x8000) +				*pStart = 0; +			else if (v & 0xff00) +				*pStart = 0xff; +			else  +				*pStart = (byte)v; +		} +	} +} + +void MortevielleEngine::cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { +	uint16 oct, ocd; + +	/* 5-8 */ +	oct = g_t_mot[idx]; +	oct = ((uint16)(oct << (16 - pt))) >> (16 - pt); +	if (pt < 6) { +		++idx; +		oct = oct << (5 - pt); +		pt += 11; +		oct = oct | ((uint)g_t_mot[idx] >> pt); +	} else { +		pt -= 5; +		oct = (uint)oct >> pt; +	} + +	switch (oct) { +	case 11: +		c = '$'; +		the_end = true; +		break; +	case 30: +	case 31: +		ocd = g_t_mot[idx]; +		ocd = (uint16)(ocd << (16 - pt)) >> (16 - pt); +		if (pt < 6) { +			++idx; +			ocd = ocd << (5 - pt); +			pt += 11; +			ocd = ocd | ((uint)g_t_mot[idx] >> pt); +		} else { +			pt -= 5; +			ocd = (uint)ocd >> pt; +		} + +		if (oct == 30) +			c = chr(tab30[ocd]); +		else +			c = chr(tab31[ocd]); + +		if (c == '\0') { +			the_end = true; +			c = '#'; +		} +		break; +	default: +		c = chr(tabdr[oct]); +		break; +	} +} + +/** + * Decode and extract the line with the given Id + * @remarks	Originally called 'deline' + */ +Common::String MortevielleEngine::getString(int num) { +	Common::String wrkStr = ""; + +	if (num < 0) { +		warning("deline: num < 0! Skipping"); +	} else if (!g_vm->_txxFileFl) { +		wrkStr = g_vm->getGameString(num); +	} else { +		int i = g_t_rec[num]._hintId; +		byte k = g_t_rec[num]._point; +		int length = 0; +		bool endFl = false; +		char let; +		do { +			cinq_huit(let, i, k, endFl); +			if (length < 254) +				wrkStr += let; +			++length; +		} while (!endFl); +	} + +	if (wrkStr.lastChar() == '$') +		// Remove trailing '$' +		wrkStr.deleteLastChar(); + +	return wrkStr; +} + +void MortevielleEngine::copcha() { +	int i = kAcha; +	do { +		g_tabdon[i] = g_tabdon[i + 390]; +		++i; +	} while (i != kAcha + 390); +} + +/** + * Engine function - When restarting the game, reset the main variables used by the engine + * @remarks	Originally called 'inzon' + */ +void MortevielleEngine::resetVariables() { +	copcha(); + +	g_s._alreadyEnteredManor = false; +	g_s._selectedObjectId = 0; +	g_s._cellarObjectId = 0; +	g_s._atticBallHoleObjectId = 0; +	g_s._atticRodHoleObjectId = 0; +	g_s._wellObjectId = 0; +	g_s._secretPassageObjectId = 0; +	g_s._purpleRoomObjectId = 136; +	g_s._cryptObjectId = 141; +	g_s._faithScore = g_vm->getRandomNumber(4, 10); +	g_s._currPlace = MANOR_FRONT; + +	for (int i = 2; i <= 6; ++i) +		g_s._sjer[i] = chr(0); + +	g_s._sjer[1] = chr(113); +	g_s._fullHour = chr(20); + +	for (int i = 1; i <= 10; ++i) +		g_s._pourc[i] = ' '; + +	for (int i = 1; i <= 6; ++i) +		g_s._teauto[i] = '*'; + +	for (int i = 7; i <= 9; ++i) +		g_s._teauto[i] = ' '; + +	for (int i = 10; i <= 28; ++i) +		g_s._teauto[i] = '*'; + +	for (int i = 29; i <= 42; ++i) +		g_s._teauto[i] = ' '; + +	g_s._teauto[33] = '*'; + +	for (int i = 1; i <= 8; ++i) +		g_nbrep[i] = 0; + +	init_nbrepm(); +} + +/** + * Engine function - Set the palette + * @remarks	Originally called 'writepal' + */ +void MortevielleEngine::setPal(int n) { +	switch (g_vm->_currGraphicalDevice) { +	case MODE_TANDY: +	case MODE_EGA: +	case MODE_AMSTRAD1512: +		for (int i = 1; i <= 16; ++i) { +			g_mem[(0x7000 * 16) + (2 * i)] = _stdPal[n][i].x; +			g_mem[(0x7000 * 16) + (2 * i) + 1] = _stdPal[n][i].y; +		} +		break; +	case MODE_CGA: { +		nhom pal[16]; +		for (int i = 0; i < 16; ++i) { +			pal[i] = g_vm->_cgaPal[n]._a[i]; +		} + +		if (n < 89) +			palette(g_vm->_cgaPal[n]._p); +		 +		for (int i = 0; i <= 15; ++i) +			outbloc(i, _patternArr[pal[i]._id], pal); +		} +		break; +	default: +		break; +	} +} +  } // End of namespace Mortevielle diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index c2fd857536..0bc6b09a87 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -80,10 +80,10 @@ enum DataType {  #define MORT_DAT "mort.dat"  #define GAME_FRAME_DELAY (1000 / 50) +const int kAcha = 492;  const int asoul = 154;  const int aouvr = 282;  const int achai = 387; -const int acha = 492;  const int arcf = 1272;  const int arep = 1314;  const int amzon = 1650; @@ -112,6 +112,8 @@ private:  	void mainGame();  	void playGame();  	void handleAction(); +	void cinq_huit(char &c, int &idx, byte &pt, bool &the_end); +	void copcha();  public:  	Common::String _hintPctMessage;  	Common::Point _prevPos; @@ -156,10 +158,10 @@ public:  	int _minute;  	float _addfix; - +	Common::Point _stdPal[91][17]; +	t_pcga _cgaPal[91];  	int _c_zzz;  	int ptr_word; -  	byte _v_lieu[7][25];  	ScreenSurface _screenSurface; @@ -302,6 +304,11 @@ public:  	void clearScreenType10();  	int getRandomNumber(int minval, int maxval);  	void showMoveMenuAlert(); +	void decodeNumber(byte *pStart, int count); +	Common::String getString(int num); +	void resetVariables(); + +	void setPal(int n);  }; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index a898f22bbe..301072391e 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -227,7 +227,7 @@ void MouseHandler::showMouse() {   * Set mouse position   * @remarks	Originally called 'pos_mouse'   */ -void MouseHandler::setMousePos(Common::Point newPos) { +void MouseHandler::setMousePosition(Common::Point newPos) {  	if (newPos.x > 314 * g_res)  		newPos.x = 314 * g_res;  	else if (newPos.x < 0) @@ -247,7 +247,7 @@ void MouseHandler::setMousePos(Common::Point newPos) {   * Get mouse poisition   * @remarks	Originally called 'read_pos_mouse'   */ -void MouseHandler::getMousePos_(int &x, int &y, int &c) { +void MouseHandler::getMousePosition(int &x, int &y, int &c) {  	x = g_vm->getMousePos().x;  	y = g_vm->getMousePos().y;  	c = g_vm->getMouseClick() ? 1 : 0; @@ -276,7 +276,7 @@ void MouseHandler::moveMouse(bool &funct, char &key) {  		CHECK_QUIT;  		in1 = g_vm->getChar(); -		getMousePos_(cx, cy, cd); +		getMousePosition(cx, cy, cd);  		switch (toupper(in1)) {  		case '4':  			cx -= 8; @@ -407,19 +407,19 @@ void MouseHandler::moveMouse(bool &funct, char &key) {  			break;  		} -		setMousePos(Common::Point(cx, cy)); +		setMousePosition(Common::Point(cx, cy));  		p_key = g_vm->keyPressed();  	}  }  /** - * Engine function : Is mouse in a given rect? + * Mouse function : Is mouse in a given rect?   * @remarks	Originally called 'dans_rect'   */ -bool MouseHandler::isMouseIn(rectangle r) { +bool MouseHandler::isMouseIn(Rect r) {  	int x, y, c; -	getMousePos_(x, y, c); +	getMousePosition(x, y, c);  	if ((x > r._x1) && (x < r._x2) && (y > r._y1) && (y < r._y2))  		return true; diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h index 76a9991f44..0bf46d926d 100644 --- a/engines/mortevielle/mouse.h +++ b/engines/mortevielle/mouse.h @@ -43,10 +43,10 @@ public:  	void initMouse();  	void hideMouse();  	void showMouse(); -	void setMousePos(Common::Point newPos); -	void getMousePos_(int &x, int &y, int &c); +	void setMousePosition(Common::Point newPos); +	void getMousePosition(int &x, int &y, int &c);  	void moveMouse(bool &funct, char &key); -	bool isMouseIn(rectangle r); +	bool isMouseIn(Rect r);  };  } // End of namespace Mortevielle diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index a941f79aa1..12c16f91b1 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -36,126 +36,8 @@  namespace Mortevielle { -Common::String delig; -const byte tabdr[32] = { -	32, 101, 115,  97, 114, 105, 110, -	117, 116, 111, 108,  13, 100,  99, -	112, 109,  46, 118, 130,  39, 102, -	98,  44, 113, 104, 103,  33,  76, -	85, 106,  30,  31 -}; - - -const byte tab30[32] = { -	69,  67,  74, 138, 133, 120,  77, 122, -	121,  68,  65,  63,  73,  80,  83,  82, -	156,  45,  58,  79,  49,  86,  78,  84, -	71,  81,  64,  66, 135,  34, 136,  91 -}; - - - -const byte tab31[32]= { -	93,  47,  48,  53,  50,  70, 124,  75, -	72, 147, 140, 150, 151,  57,  56,  51, -	107, 139,  55,  89, 131,  37,  54,  88, -	119,   0,   0,   0,   0,   0,   0,   0 -}; - -Common::String deline(int num);  typedef unsigned char uchar; -static void cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { -/* -	const uchar rap[32] = {  -		(uchar)',', (uchar)':', (uchar)'@', (uchar)'!', (uchar)'?', (uchar)'-', (uchar)'\207', -		(uchar)'\240', (uchar)'\205', (uchar)'\203', (uchar)'\202', (uchar)'\212', (uchar)'\210', (uchar)'/', -		(uchar)'\213', (uchar)'\214', (uchar)'\242', (uchar)'\047', (uchar)'\223', (uchar)'"', (uchar)'\227', -		(uchar)'\226', (uchar)'0', (uchar)'1', (uchar)'2', (uchar)'3', (uchar)'4', (uchar)'5', -		(uchar)'6', (uchar)'7', (uchar)'8', (uchar)'9' -	}; -*/ -	uint16 oct, ocd; - -	/* 5-8 */ -	oct = g_t_mot[idx]; -	oct = ((uint16)(oct << (16 - pt))) >> (16 - pt); -	if (pt < 6) { -		++idx; -		oct = oct << (5 - pt); -		pt += 11; -		oct = oct | ((uint)g_t_mot[idx] >> pt); -	} else { -		pt -= 5; -		oct = (uint)oct >> pt; -	} - -	switch (oct) { -	case 11: -		c = '$'; -		the_end = true; -		break; -	case 30: -	case 31: -		ocd = g_t_mot[idx]; -		ocd = (uint16)(ocd << (16 - pt)) >> (16 - pt); -		if (pt < 6) { -			++idx; -			ocd = ocd << (5 - pt); -			pt += 11; -			ocd = ocd | ((uint)g_t_mot[idx] >> pt); -		} else { -			pt -= 5; -			ocd = (uint)ocd >> pt; -		} - -		if (oct == 30) -			c = chr(tab30[ocd]); -		else -			c = chr(tab31[ocd]); - -		if (c == '\0') { -			the_end = true; -			c = '#'; -		} -		break; -	default: -		c = chr(tabdr[oct]); -		break; -	} -}              /* 5-8 */ - -/** - * Decode and extract the line with the given Id - */ -Common::String deline(int num) { -	Common::String wrkStr = ""; - -	if (num < 0) { -		warning("deline: num < 0! Skipping"); -	} else if (!g_vm->_txxFileFl) { -		wrkStr = g_vm->getGameString(num); -	} else { -		int i = g_t_rec[num]._hintId; -		byte k = g_t_rec[num]._point; -		int length = 0; -		bool endFl = false; -		char let; -		do { -			cinq_huit(let, i, k, endFl); -			if (length < 254) -				wrkStr += let; -			++length; -		} while (!endFl); -	} - -	if (wrkStr.lastChar() == '$') -		// Remove trailing '$' -		wrkStr.deleteLastChar(); - -	return wrkStr; -} -  static int l_motsuiv(int p, const char *ch, int &tab) {  	int c = p; @@ -429,7 +311,7 @@ void taffich() {  		}  	}  	g_numpal = npal; -	writepal(npal); +	g_vm->setPal(npal);  	if ((b < 15) || (b == 16) || (b == 17) || (b == 24) || (b == 26) || (b == 50)) {  		lgt = 0; diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index cd109ffea5..d27ca3edc9 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -35,7 +35,6 @@ namespace Mortevielle {  const int kAdrAni = 0x7314; -extern Common::String deline(int num);  extern void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ);  extern void chardes(Common::String filename, int32 passe, int long_);  extern void charani(Common::String filename, int32 skipSize, int length); diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 0a93a84516..178ef434ae 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -54,8 +54,8 @@ void charpal() {  		error("Missing file - plxx.mor");  	for (int i = 0; i <= 90; ++i) {  		for (int j = 1; j <= 16; ++j) { -			g_tabpal[i][j].x = f.readByte(); -			g_tabpal[i][j].y = f.readByte(); +			g_vm->_stdPal[i][j].x = f.readByte(); +			g_vm->_stdPal[i][j].y = f.readByte();  		}  	}  	f.close(); @@ -64,9 +64,9 @@ void charpal() {  		error("Missing file - cxx.mor");  	for (int j = 0; j <= 90; ++j) { -		g_palcga[j]._p = f.readByte(); +		g_vm->_cgaPal[j]._p = f.readByte();  		for (int i = 0; i <= 15; ++i) { -			nhom &with = g_palcga[j]._a[i]; +			nhom &with = g_vm->_cgaPal[j]._a[i];  			b = f.readByte();  			with._id = (uint)b >> 4; @@ -75,13 +75,13 @@ void charpal() {  		}  	} -	g_palcga[10]._a[9] = g_palcga[10]._a[5]; +	g_vm->_cgaPal[10]._a[9] = g_vm->_cgaPal[10]._a[5];  	for (int j = 0; j <= 14; ++j) { -		g_tpt[j]._tax = f.readByte(); -		g_tpt[j]._tay = f.readByte(); +		_patternArr[j]._tax = f.readByte(); +		_patternArr[j]._tay = f.readByte();  		for (int i = 1; i <= 20; ++i)  			for (int k = 1; k <= 20; ++k) -				g_tpt[j]._des[i][k] = f.readByte(); +				_patternArr[j]._des[i][k] = f.readByte();  	}  	f.close();  } diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 9458da38bc..7ddd8b707c 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -109,7 +109,7 @@ void SavegameManager::loadSavegame(int n) {  	g_s = g_s1;  	for (int i = 0; i <= 389; ++i) -		g_tabdon[i + acha] = g_bufcha[i]; +		g_tabdon[i + kAcha] = g_bufcha[i];  	// Close the stream  	delete stream;	 @@ -142,7 +142,7 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) {  	g_vm->hourToChar();  	for (i = 0; i <= 389; ++i) -		g_bufcha[i] = g_tabdon[i + acha]; +		g_bufcha[i] = g_tabdon[i + kAcha];  	g_s1 = g_s;  	if (g_s1._currPlace == 26)  		g_s1._currPlace = 15; diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index ba7ef62195..69a0c331da 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -564,7 +564,7 @@ void SpeechManager::startSpeech(int rep, int ht, int typ) {  			g_t_cph[i] = savph[i];  			g_mlec = _typlec;  		} -	writepal(g_numpal); +	g_vm->setPal(g_numpal);  }  } // End of namespace Mortevielle diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 392e8a21c4..b3999b7c6f 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -117,9 +117,8 @@ int g_tay_tchar;  Hint g_t_rec[maxtd + 1];  int g_l[108];  int g_tbi[256]; -Common::Point g_tabpal[91][17];  t_pcga g_palcga[91]; -pattern g_tpt[15]; +Pattern _patternArr[15];  byte g_adcfiec[(4088 * 16) + (311 * 0x80)]; diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index a91e6d921b..b6897522b9 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -140,17 +140,16 @@ struct SpeechQueue {  	int _rep;  }; -struct rectangle { +struct Rect {  	int _x1, _x2, _y1, _y2;  	bool _enabled;  }; -struct pattern { +struct Pattern {  	byte _tay, _tax;  	byte _des[kMaxPatt + 1][kMaxPatt + 1];  }; -  struct nhom {  	byte _id;     /* number between 0 and 32 */  	byte _hom[4]; @@ -227,9 +226,7 @@ extern int g_tay_tchar;  extern Hint g_t_rec[maxtd + 1];  extern int g_l[108];  extern int g_tbi[256]; -extern Common::Point g_tabpal[91][17]; -extern t_pcga g_palcga[91]; -extern pattern g_tpt[15]; +extern Pattern _patternArr[15];  extern byte g_adcfiec[822 * 128]; | 
