[Scummvm-cvs-logs] CVS: scummvm/scumm gfx.cpp,1.92,1.93 intern.h,2.16,2.17 module.mk,1.6,1.7 script.cpp,1.24,1.25 script_v5.cpp,1.6,1.7 script_v6.cpp,1.19,1.20 script_v8.cpp,2.34,2.35 scumm.h,1.102,1.103 sound.cpp,1.54,1.55 sound.h,1.20,1.21

Max Horn fingolfin at users.sourceforge.net
Wed Dec 25 06:47:02 CET 2002


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv5254

Modified Files:
	gfx.cpp intern.h module.mk script.cpp script_v5.cpp 
	script_v6.cpp script_v8.cpp scumm.h sound.cpp sound.h 
Log Message:
converted heaps of int16 to int for V8 compatibility; fixed defineArray for V8; added some work in o8_kludge2

Index: gfx.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/gfx.cpp,v
retrieving revision 1.92
retrieving revision 1.93
diff -u -d -r1.92 -r1.93

Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.16
retrieving revision 2.17
diff -u -d -r2.16 -r2.17
--- intern.h	25 Dec 2002 14:31:17 -0000	2.16
+++ intern.h	25 Dec 2002 14:46:38 -0000	2.17
@@ -46,7 +46,7 @@
 	virtual const char *getOpcodeDesc(int i);
 
 	void decodeParseString();
-	int getWordVararg(int16 *ptr);
+	int getWordVararg(int *ptr);
 	int getVarOrDirectWord(byte mask);
 	int getVarOrDirectByte(byte mask);
 
@@ -210,7 +210,7 @@
 	int popRoomAndObj(int *room);
 
 	void decodeParseString(int a, int b);
-	int getStackList(int16 *args, uint maxnum);
+	int getStackList(int *args, uint maxnum);
 
 	/* Version 6 script opcodes */
 	void o6_setBlastObjectWindow();

Index: module.mk
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/module.mk,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- module.mk	25 Dec 2002 13:51:01 -0000	1.6
+++ module.mk	25 Dec 2002 14:46:39 -0000	1.7
@@ -11,6 +11,7 @@
 	scumm/gfx.o \
 	scumm/imuse.o \
 	scumm/instrument.o \
+	scumm/nut_renderer.o \
 	scumm/object.o \
 	scumm/resource.o \
 	scumm/resource_v2.o \
@@ -25,8 +26,7 @@
 	scumm/sound.o \
 	scumm/string.o \
 	scumm/vars.o \
-	scumm/verbs.o \
-	scumm/nut_renderer.o
+	scumm/verbs.o
 
 SMUSH_OBJS = \
 	scumm/smush/blitter.o \

Index: script.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script.cpp,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- script.cpp	25 Dec 2002 13:51:01 -0000	1.24
+++ script.cpp	25 Dec 2002 14:46:39 -0000	1.25
@@ -35,7 +35,7 @@
 
 
 /* Start executing script 'script' with parameters 'a' and 'b' */
-void Scumm::runScript(int script, int a, int b, int16 *lvarptr)
+void Scumm::runScript(int script, int a, int b, int *lvarptr)
 {
 	byte *scriptPtr;
 	uint32 scriptOffs;
@@ -592,7 +592,7 @@
 
 void Scumm::runHook(int i)
 {
-	int16 tmp[16];
+	int tmp[16];
 	tmp[0] = i;
 	if (_vars[VAR_HOOK_SCRIPT]) {
 		runScript(_vars[VAR_HOOK_SCRIPT], 0, 0, tmp);
@@ -781,7 +781,7 @@
 
 void Scumm::runInputScript(int a, int cmd, int mode)
 {
-	int16 args[16];
+	int args[16];
 	memset(args, 0, sizeof(args));
 	args[0] = a;
 	args[1] = cmd;
@@ -805,7 +805,7 @@
 	}
 }
 
-void Scumm::runVerbCode(int object, int entry, int a, int b, int16 *vars)
+void Scumm::runVerbCode(int object, int entry, int a, int b, int *vars)
 {
 	uint32 obcd;
 	int slot, where, offs;
@@ -843,7 +843,7 @@
 	runScriptNested(slot);
 }
 
-void Scumm::initializeLocals(int slot, int16 *vars)
+void Scumm::initializeLocals(int slot, int *vars)
 {
 	int i;
 	if (!vars) {
@@ -897,7 +897,7 @@
 {
 	ScriptSlot *ss = &vm.slot[_currentScript];
 	uint32 *csptr;
-	int16 args[16];
+	int args[16];
 
 	memset(args, 0, sizeof(args));
 
@@ -919,7 +919,7 @@
 		runScript(_vars[VAR_CUTSCENE_END_SCRIPT], 0, 0, args);
 }
 
-void Scumm::cutscene(int16 *args)
+void Scumm::cutscene(int *args)
 {
 	int scr = _currentScript;
 	vm.slot[scr].cutsceneOverride++;
@@ -1016,21 +1016,30 @@
 
 	id = getArrayId();
 
-	if (array & 0x4000) {
-		_arrays[id] = (char)vm.slot[_currentScript].number;
-	}
-
-	if (array & 0x8000) {
-		error("Can't define bit variable as array pointer");
-	}
-
-	writeVar(array, id);
-
 	if (_features & GF_AFTER_V8) {
+		if (array & 0x40000000) {
+			_arrays[id] = (char)vm.slot[_currentScript].number;
+		}
+	
+		if (array & 0x80000000) {
+			error("Can't define bit variable as array pointer");
+		}
+
 		size = (type == 5) ? 32 : 8;
 	} else {
+		if (array & 0x4000) {
+			_arrays[id] = (char)vm.slot[_currentScript].number;
+		}
+	
+		if (array & 0x8000) {
+			error("Can't define bit variable as array pointer");
+		}
+
 		size = (type == 5) ? 16 : 8;
 	}
+
+	writeVar(array, id);
+
 	size *= dim2 + 1;
 	size *= dim1 + 1;
 	size >>= 3;

Index: script_v5.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v5.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- script_v5.cpp	25 Dec 2002 12:01:01 -0000	1.6
+++ script_v5.cpp	25 Dec 2002 14:46:39 -0000	1.7
@@ -466,7 +466,7 @@
 		case 15:										/* unk */
 			error("o5_actorset:unk not implemented");
 #if 0
-			int16 args[16] =
+			int args[16] =
 				{
 					0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
 					0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
@@ -583,7 +583,7 @@
 
 void Scumm_v5::o5_chainScript()
 {
-	int16 vars[16];
+	int vars[16];
 	int data;
 	int cur;
 
@@ -603,7 +603,7 @@
 void Scumm_v5::o5_cursorCommand()
 {
 	int i, j, k;
-	int16 table[16];
+	int table[16];
 	switch ((_opcode = fetchScriptByte()) & 0x1F) {
 	case 1:											/* cursor show */
 		_cursor.state = 1;
@@ -665,7 +665,7 @@
 
 void Scumm_v5::o5_cutscene()
 {
-	int16 args[16];
+	int args[16];
 	getWordVararg(args);
 	cutscene(args);
 }
@@ -2030,7 +2030,7 @@
 
 void Scumm_v5::o5_soundKludge()
 {
-	int16 items[15];
+	int items[15];
 	int i;
 
 	if (_features & GF_SMALL_HEADER) {	// Is WaitForSentence in SCUMM V3
@@ -2048,9 +2048,9 @@
 	for (i = 0; i < 15; i++)
 		items[i] = 0;
 
-	getWordVararg(items);
+	int num = getWordVararg(items);
 
-	_sound->soundKludge(items);
+	_sound->soundKludge(items, num);
 }
 
 void Scumm_v5::o5_startMusic()
@@ -2061,7 +2061,7 @@
 void Scumm_v5::o5_startObject()
 {
 	int obj, script;
-	int16 data[16];
+	int data[16];
 
 	obj = getVarOrDirectWord(0x80);
 	script = getVarOrDirectByte(0x40);
@@ -2073,7 +2073,7 @@
 void Scumm_v5::o5_startScript()
 {
 	int op, script;
-	int16 data[16];
+	int data[16];
 	int a, b;
 
 	op = _opcode;
@@ -2449,7 +2449,7 @@
 	}
 }
 
-int Scumm_v5::getWordVararg(int16 *ptr)
+int Scumm_v5::getWordVararg(int *ptr)
 {
 	int i;
 

Index: script_v6.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6.cpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- script_v6.cpp	25 Dec 2002 12:01:02 -0000	1.19
+++ script_v6.cpp	25 Dec 2002 14:46:39 -0000	1.20
@@ -410,7 +410,6 @@
 	if (ah->type == 4) {
 		return ah->data[base];
 	} else if (_features & GF_AFTER_V8) {
-		// FIXME - this is just a guess, might be wrong
 		return (int32)READ_LE_UINT32(ah->data + base * 4);
 	} else {
 		return (int16)READ_LE_UINT16(ah->data + base * 2);
@@ -436,7 +435,7 @@
 	}
 }
 
-int Scumm_v6::getStackList(int16 *args, uint maxnum)
+int Scumm_v6::getStackList(int *args, uint maxnum)
 {
 	uint num, i;
 
@@ -720,7 +719,7 @@
 
 void Scumm_v6::o6_startScriptEx()
 {
-	int16 args[16];
+	int args[16];
 	int script, flags;
 
 	getStackList(args, sizeof(args) / sizeof(args[0]));
@@ -731,7 +730,7 @@
 
 void Scumm_v6::o6_jumpToScript()
 {
-	int16 args[16];
+	int args[16];
 	int script, flags;
 
 	getStackList(args, sizeof(args) / sizeof(args[0]));
@@ -743,7 +742,7 @@
 
 void Scumm_v6::o6_startScript()
 {
-	int16 args[16];
+	int args[16];
 	int script;
 	getStackList(args, sizeof(args) / sizeof(args[0]));
 	script = pop();
@@ -752,7 +751,7 @@
 
 void Scumm_v6::o6_startObject()
 {
-	int16 args[16];
+	int args[16];
 	int script, entryp;
 	int flags;
 	getStackList(args, sizeof(args) / sizeof(args[0]));
@@ -794,7 +793,7 @@
 
 void Scumm_v6::o6_cutscene()
 {
-	int16 args[16];
+	int args[16];
 	getStackList(args, sizeof(args) / sizeof(args[0]));
 	cutscene(args);
 }
@@ -816,7 +815,7 @@
 void Scumm_v6::o6_cursorCommand()
 {
 	int a, i;
-	int16 args[16];
+	int args[16];
 
 	switch (fetchScriptByte()) {
 	case 0x90:
@@ -885,7 +884,7 @@
 
 void Scumm_v6::o6_ifClassOfIs()
 {
-	int16 args[16];
+	int args[16];
 	int num, obj, cls;
 	bool b;
 	int cond = 1;
@@ -904,7 +903,7 @@
 
 void Scumm_v6::o6_setClass()
 {
-	int16 args[16];
+	int args[16];
 	int num, obj, cls;
 
 	num = getStackList(args, sizeof(args) / sizeof(args[0]));
@@ -1355,7 +1354,7 @@
 
 void Scumm_v6::o6_setBoxFlags()
 {
-	int16 table[65];
+	int table[65];
 	int num, value;
 
 	value = pop();
@@ -1608,7 +1607,7 @@
 {
 	Actor *a;
 	int i, j, k;
-	int16 args[8];
+	int args[8];
 	byte b;
 
 	b = fetchScriptByte();
@@ -1907,7 +1906,7 @@
 
 void Scumm_v6::o6_pseudoRoom()
 {
-	int16 list[100];
+	int list[100];
 	int num, a, value;
 
 	num = getStackList(list, sizeof(list) / sizeof(list[0]));
@@ -1946,7 +1945,7 @@
 void Scumm_v6::o6_arrayOps()
 {
 	int a, b, c, d, num;
-	int16 list[128];
+	int list[128];
 
 	switch (fetchScriptByte()) {
 	case 205:
@@ -2140,15 +2139,15 @@
 
 void Scumm_v6::o6_soundKludge()
 {
-	int16 list[16];
-	getStackList(list, sizeof(list) / sizeof(list[0]));
+	int list[16];
+	int num = getStackList(list, sizeof(list) / sizeof(list[0]));
 
-	_sound->soundKludge(list);
+	_sound->soundKludge(list, num);
 }
 
 void Scumm_v6::o6_isAnyOf()
 {
-	int16 list[100];
+	int list[100];
 	int num;
 	int16 val;
 
@@ -2350,7 +2349,7 @@
 
 void Scumm_v6::o6_startObjectQuick()
 {
-	int16 args[16];
+	int args[16];
 	int script, entryp;
 	getStackList(args, sizeof(args) / sizeof(args[0]));
 	entryp = pop();
@@ -2360,7 +2359,7 @@
 
 void Scumm_v6::o6_startScriptQuick()
 {
-	int16 args[16];
+	int args[16];
 	int script;
 	getStackList(args, sizeof(args) / sizeof(args[0]));
 	script = pop();
@@ -2430,7 +2429,7 @@
 
 void Scumm_v6::o6_drawBlastObject()
 {
-	int16 args[16];
+	int args[16];
 	int a, b, c, d, e;
 
 	getStackList(args, sizeof(args) / sizeof(args[0]));
@@ -2459,7 +2458,7 @@
 
 void Scumm_v6::o6_miscOps()
 {
-	int16 args[30];
+	int args[30];
 	int i;
 	Actor *a;
 
@@ -2758,7 +2757,7 @@
 
 void Scumm_v6::o6_kernelFunction()
 {
-	int16 args[30];
+	int args[30];
 	int i;
 	Actor *a;
 
@@ -2858,7 +2857,7 @@
 
 void Scumm_v6::o6_pickOneOf()
 {
-	int16 args[100];
+	int args[100];
 	int i, num;
 
 	num = getStackList(args, sizeof(args) / sizeof(args[0]));
@@ -2870,7 +2869,7 @@
 
 void Scumm_v6::o6_pickOneOfDefault()
 {
-	int16 args[100];
+	int args[100];
 	int i, num, def;
 
 	def = pop();

Index: script_v8.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v8.cpp,v
retrieving revision 2.34
retrieving revision 2.35
diff -u -d -r2.34 -r2.35
--- script_v8.cpp	25 Dec 2002 14:31:17 -0000	2.34
+++ script_v8.cpp	25 Dec 2002 14:46:39 -0000	2.35
@@ -627,7 +627,7 @@
 	byte subOp = fetchScriptByte();
 	int array = fetchScriptWord();
 	int b, c, d, len;
-	int16 list[128];
+	int list[128];
 	
 	switch (subOp) {
 	case 0x14:		// SO_ASSIGN_STRING
@@ -706,7 +706,7 @@
 	// TODO
 	byte subOp = fetchScriptByte();
 	int a, i;
-	int16 args[16];
+	int args[16];
 	
 	switch (subOp) {
 	case 0xDC:		// SO_CURSOR_ON Turn cursor on
@@ -744,8 +744,6 @@
 			int idx = pop();
 			int room, obj;
 			obj = popRoomAndObj(&room);
-			// FIXME
-			printf("setCursorImg(%d, %d, %d)\n", obj, room, idx);
 			setCursorImg(obj, room, idx);
 		}
 		break;
@@ -1131,11 +1129,10 @@
 
 void Scumm_v8::o8_soundKludge()
 {
-	int16 args[16];
-	getStackList(args, sizeof(args) / sizeof(args[0]));
+	int args[16];
+	int num = getStackList(args, sizeof(args) / sizeof(args[0]));
 
-	// FIXME - is this right?
-	_sound->soundKludge(args);
+	_sound->soundKludge(args, num);
 }
 
 void Scumm_v8::o8_system()
@@ -1151,8 +1148,8 @@
 void Scumm_v8::o8_kludge()
 {
 	// TODO
-	int16 args[30];
-	getStackList(args, sizeof(args) / sizeof(args[0]));
+	int args[30];
+	int len = getStackList(args, sizeof(args) / sizeof(args[0]));
 
 	switch (args[0]) {
 	case 11:
@@ -1196,15 +1193,15 @@
 	case 34:
 	case 109:
 	default:
-		warning("o8_kludge: default case %d", args[0]);
+		warning("o8_kludge: default case (len = %d)", len);
 	}
 }
 
 void Scumm_v8::o8_kludge2()
 {
 	// TODO
-	int16 args[30];
-	getStackList(args, sizeof(args) / sizeof(args[0]));
+	int args[30];
+	int len = getStackList(args, sizeof(args) / sizeof(args[0]));
 
 	switch (args[0]) {
 	case 0xCE:		// getRGBSlot
@@ -1215,14 +1212,34 @@
 	case 0xDA:		// lipSyncWidth
 	case 0xDB:		// lipSyncHeight
 	case 0xDC:		// actorTalkAnimation
+		// FIXME - hack!
+		push(0);
+		break;
 	case 0xDD:		// getMasterSFXVol
+		push(_sound->_sound_volume_sfx / 2);
+		break;
 	case 0xDE:		// getMasterVoiceVol
+		push(_sound->_sound_volume_sfx / 2);
+		break;
 	case 0xDF:		// getMasterMusicVol
+		push(_sound->_sound_volume_music / 2);
+		break;
 	case 0xE0:		// readRegistryValue
+		{
+		printf("readRegistryValue(%d)\n", args[1]);
+		int array = args[1];
+		// FIXME - hack: for some reasons the wrong variable ID arrives here, compared to the
+		// scripts. Probably a wrong push/pop somewhere. For now override to correct value.
+		array = 658;
+		ArrayHeader *ah = (ArrayHeader *)getResourceAddress(rtString, readVar(array));
+		if (!strcmp((char *)ah->data, "Saveload Page"))
+			push(1);
+		else
+			push(0);
+		}
+		break;
 	default:
-		// FIXME - hack!
-		push(0);
-//		warning("o8_kludge2: default case %d", args[0]);
+		error("o8_kludge2: default case (len = %d)", len);
 	}
 
 }

Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.102
retrieving revision 1.103
diff -u -d -r1.102 -r1.103
--- scumm.h	25 Dec 2002 14:31:17 -0000	1.102
+++ scumm.h	25 Dec 2002 14:46:39 -0000	1.103
@@ -400,7 +400,8 @@
 	uint16 _mouseButStat;
 	byte _leftBtnPressed, _rightBtnPressed;
 
-	int16 _virtual_mouse_x, _virtual_mouse_y, _bootParam;
+	int16 _virtual_mouse_x, _virtual_mouse_y;
+	int _bootParam;
 	uint16 _debugMode, _soundCardType;
 
 	/* Not sure where this stuff goes */
@@ -464,15 +465,15 @@
 	uint16 _curExecScript;
 	byte **_lastCodePtr;
 	int _resultVarNumber, _scummStackPos;
-	int16 _localParamList[16],  _scummStack[150];
+	int _localParamList[16],  _scummStack[150];
 	
 	virtual void setupOpcodes() = 0;
 	virtual void executeOpcode(int i) = 0;
 	virtual const char *getOpcodeDesc(int i) = 0;
 
-	void initializeLocals(int slot, int16 *vars);
+	void initializeLocals(int slot, int *vars);
 	int	getScriptSlot();
-	void runScript(int script, int a, int b, int16 *lvarptr);
+	void runScript(int script, int a, int b, int *lvarptr);
 	void stopScriptNr(int script);
 	void runScriptNested(int script);
 	void executeScript();	
@@ -497,7 +498,7 @@
 	void freezeScripts(int scr);
 	void unfreezeScripts();
 	void runAllScripts();
-	void cutscene(int16 *args);
+	void cutscene(int *args);
 	void endCutscene();
 	void exitCutscene();
 	void runExitScript();
@@ -648,7 +649,7 @@
 	int getVerbEntrypoint(int obj, int entry);
 	int getVerbSlot(int id, int mode);
 	void killVerb(int slot);
-	void runVerbCode(int script, int entry, int a, int b, int16 *vars);
+	void runVerbCode(int script, int entry, int a, int b, int *vars);
 	void setVerbObject(uint room, uint object, uint verb);
 
 	/* Should be in Actor class */

Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sound.cpp,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -d -r1.54 -r1.55
--- sound.cpp	5 Dec 2002 21:45:55 -0000	1.54
+++ sound.cpp	25 Dec 2002 14:46:39 -0000	1.55
@@ -684,7 +684,7 @@
 	memset(_soundQue2, 0, sizeof(_soundQue2));
 }
 
-void Sound::soundKludge(int16 * list) {
+void Sound::soundKludge(int *list, int num) {
 	int16 *ptr;
 	int i;
 

Index: sound.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sound.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- sound.h	25 Dec 2002 00:36:04 -0000	1.20
+++ sound.h	25 Dec 2002 14:46:39 -0000	1.21
@@ -148,7 +148,7 @@
 	void stopSound(int a);
 	void stopAllSounds();
 	void clearSoundQue();
-	void soundKludge(int16 * list);
+	void soundKludge(int *list, int num);
 	void talkSound(uint32 a, uint32 b, int mode, int frame);
 	void setupSound();
 	void pauseSounds(bool pause);





More information about the Scummvm-git-logs mailing list