[Scummvm-cvs-logs] SF.net SVN: scummvm: [21897] scummvm/trunk/engines/simon

kirben at users.sourceforge.net kirben at users.sourceforge.net
Fri Apr 14 18:10:03 CEST 2006


Revision: 21897
Author:   kirben
Date:     2006-04-14 18:09:04 -0700 (Fri, 14 Apr 2006)
ViewCVS:  http://svn.sourceforge.net/scummvm/?rev=21897&view=rev

Log Message:
-----------
Adjust video opcodes for second variable array

Modified Paths:
--------------
    scummvm/trunk/engines/simon/items.cpp
    scummvm/trunk/engines/simon/verb.cpp
    scummvm/trunk/engines/simon/vga.cpp
Modified: scummvm/trunk/engines/simon/items.cpp
===================================================================
--- scummvm/trunk/engines/simon/items.cpp	2006-04-15 00:24:20 UTC (rev 21896)
+++ scummvm/trunk/engines/simon/items.cpp	2006-04-15 01:09:04 UTC (rev 21897)
@@ -1837,7 +1837,7 @@
 
 void SimonEngine::o3_checkCD() {
 	// 135: switch CD
-	debug(1, "Switch to CD number %d", readVariable(97));
+	debug(0, "Switch to CD number %d", readVariable(97));
 }
 
 void SimonEngine::o3_screenTextBox() {
@@ -1910,7 +1910,7 @@
 
 void SimonEngine::o3_playSmack() {
 	// 183: play video
-	debug(1, "Play video");
+	debug(0, "Play video");
 }
 
 void SimonEngine::o3_centreScroll() {

Modified: scummvm/trunk/engines/simon/verb.cpp
===================================================================
--- scummvm/trunk/engines/simon/verb.cpp	2006-04-15 00:24:20 UTC (rev 21896)
+++ scummvm/trunk/engines/simon/verb.cpp	2006-04-15 01:09:04 UTC (rev 21897)
@@ -685,7 +685,7 @@
 	if (mode != 0 && mode != 3) {
 		_lastHitArea = best_ha;
 		_variableArray[1] = x;
-		_variableArray[2] = y;
+		_variableArray[2] = y - _scrollY;
 	}
 
 	if (best_ha->flags & kBFNoTouchName) {

Modified: scummvm/trunk/engines/simon/vga.cpp
===================================================================
--- scummvm/trunk/engines/simon/vga.cpp	2006-04-15 00:24:20 UTC (rev 21896)
+++ scummvm/trunk/engines/simon/vga.cpp	2006-04-15 01:09:04 UTC (rev 21897)
@@ -170,6 +170,22 @@
 	return *_vcPtr++;
 }
 
+uint SimonEngine::vcReadVar(uint var) {
+	assert(var < 255);
+	if (getGameType() == GType_FF && getBitFlag(82))
+		return (uint16)_variableArray2[var];
+	else
+		return (uint16)_variableArray[var];
+}
+
+void SimonEngine::vcWriteVar(uint var, int16 value) {
+	assert(var < 255);
+	if (getGameType() == GType_FF && getBitFlag(82))
+		_variableArray2[var] = value;
+	else
+		_variableArray[var] = value;
+}
+
 void SimonEngine::vcSkipNextInstruction() {
 	static const byte opcodeParamLenSimon1[] = {
 		0, 6, 2, 10, 6, 4, 2, 2,
@@ -1292,8 +1308,8 @@
 	_scrollYMax = 0;
 	_scrollImage = state->depack_src;
 	_scrollHeight = state->height;
-	if (_variableArray[34] < 0)
-		state->x = _variableArray[251];
+	if (vcReadVar(34) < 0)
+		state->x = vcReadVar(251);
 
 	_scrollX = state->x;
 
@@ -1324,8 +1340,8 @@
 	_scrollYMax = state->height - 480;
 	_scrollImage = state->depack_src;
 	_scrollWidth = state->width;
-	if (_variableArray[34] < 0)
-		state->y = _variableArray[250];
+	if (vcReadVar(34) < 0)
+		state->y = vcReadVar(250);
 
 	_scrollY = state->y;
 
@@ -1689,15 +1705,6 @@
 	_windowNum = vcReadNextWord();
 }
 
-uint SimonEngine::vcReadVar(uint var) {
-	assert(var < 255);
-	return (uint16)_variableArray[var];
-}
-
-void SimonEngine::vcWriteVar(uint var, int16 value) {
-	_variableArray[var] = value;
-}
-
 void SimonEngine::vc32_copyVar() {
 	uint16 a = vcReadVar(vcReadNextWord());
 	vcWriteVar(vcReadNextWord(), a);
@@ -1852,12 +1859,13 @@
 }
 
 void SimonEngine::vc48_setPathFinder() {
-	uint a = (uint16)_variableArray[12];
+	uint a = (uint16)vcReadVar(12);
 	const uint16 *p = _pathFindArray[a - 1];
 
 	if (getGameType() == GType_FF) {
 		VgaSprite *vsp = findCurSprite();
-		int16 x, x2, y, y1, y2, ydiff;
+		int16 x, y, ydiff;
+		int16 x1, y1, x2, y2;
 		uint pos = 0;
 
 		while (vsp->x >= readUint16Wrapper(p + 2)) {
@@ -1865,6 +1873,7 @@
 			pos++;
 		}
 
+		x1 = readUint16Wrapper(p);
 		y1 = readUint16Wrapper(p + 1);
 		x2 = readUint16Wrapper(p + 2);
 		y2 = readUint16Wrapper(p + 3);
@@ -1889,8 +1898,8 @@
 		vsp->y = y1;
 		checkScrollY(y1 - y, y1);
 
-		_variableArray[11] = readUint16Wrapper(p);
-		_variableArray[13] = pos;
+		vcWriteVar(11, x1);
+		vcWriteVar(13, pos);
 	} else {
 		uint b = (uint16)_variableArray[13];
 		p += b * 2 + 1;
@@ -2362,7 +2371,7 @@
 	int var = vcReadNextWord();
 
 	vsp->x += getScale(vsp->y, x);
-	_variableArray[var] = vsp->x;
+	vcWriteVar(var, vsp->x);
 
 	checkScrollX(x, vsp->x);
 
@@ -2377,7 +2386,7 @@
 	int var = vcReadNextWord();
 
 	vsp->y += getScale(vsp->y, y);
-	_variableArray[var] = vsp->y;
+	vcWriteVar(var, vsp->y);
 
 	if (y != 0) 
 		checkScrollY(y, vsp->y);
@@ -2388,18 +2397,18 @@
 void SimonEngine::vc78_computeXY() {
 	VgaSprite *vsp = findCurSprite();
 
-	uint a = (uint16)_variableArray[12];
-	uint b = (uint16)_variableArray[13];
+	uint a = (uint16)vcReadVar(12);
+	uint b = (uint16)vcReadVar(13);
 
 	const uint16 *p = _pathFindArray[a - 1];
 	p += b * 2;
 
 	uint16 posx = readUint16Wrapper(p);
-	_variableArray[15] = posx;
+	vcWriteVar(15, posx);
 	vsp->x = posx;
 
 	uint16 posy = readUint16Wrapper(p + 1);
-	_variableArray[16] = posy;
+	vcWriteVar(16, posy);
 	vsp->y = posy;
 
 	setBitFlag(85, false);
@@ -2409,17 +2418,17 @@
 }
 
 void SimonEngine::vc79_computePosNum() {
-	uint a = (uint16)_variableArray[12];
+	uint a = (uint16)vcReadVar(12);
 	const uint16 *p = _pathFindArray[a - 1];
 	uint pos = 0;
 
-	int16 y = _variableArray[16];
+	uint16 y = vcReadVar(16);
 	while(y > readUint16Wrapper(p + 1)) {
 		p += 2;
 		pos++;
 	}
 
-	_variableArray[13] = pos;
+	vcWriteVar(13, pos);
 }
 
 void SimonEngine::vc80_setOverlayImage() {


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.





More information about the Scummvm-git-logs mailing list