[Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.273,1.274 actor.h,1.56,1.57 akos.cpp,1.146,1.147 base-costume.cpp,2.16,2.17 base-costume.h,1.23,1.24 intern.h,2.206,2.207 resource.cpp,1.257,1.258 script_v6.cpp,1.392,1.393 script_v6he.cpp,2.101,2.102 script_v72he.cpp,2.33,2.34 sound.cpp,1.374,1.375

Travis Howell kirben at users.sourceforge.net
Sun Aug 29 04:28:03 CEST 2004


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6769/scumm

Modified Files:
	actor.cpp actor.h akos.cpp base-costume.cpp base-costume.h 
	intern.h resource.cpp script_v6.cpp script_v6he.cpp 
	script_v72he.cpp sound.cpp 
Log Message:

Add a few akos codes
Give unknown akos codes better names
Rename actor variable
Remove hack (Use multi-version flag instead)
Another sound correction for HE games.


Index: actor.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/actor.cpp,v
retrieving revision 1.273
retrieving revision 1.274
diff -u -d -r1.273 -r1.274
--- actor.cpp	28 Aug 2004 14:05:31 -0000	1.273
+++ actor.cpp	29 Aug 2004 11:27:15 -0000	1.274
@@ -57,7 +57,7 @@
 	walkbox = 0;
 	animProgress = 0;
 	skipLimb = false;
-	actorDrawVirScr = false;
+	drawToBackBuf = false;
 	memset(animVariable, 0, sizeof(animVariable));
 	memset(palette, 0, sizeof(palette));
 	memset(sound, 0, sizeof(sound));
@@ -129,6 +129,7 @@
 		talkStopFrame = 5;
 	}
 
+	talking = false;
 	walkScript = 0;
 	talkScript = 0;
 
@@ -1062,7 +1063,7 @@
 	
 	// If the actor is partially hidden, redraw it next frame.
 	// Only done for pre-AKOS, though.
-	if (bcr->drawCostume(_vm->virtscr[0], cost, actorDrawVirScr) & 1) {
+	if (bcr->drawCostume(_vm->virtscr[0], cost, drawToBackBuf) & 1) {
 		needRedraw = (_vm->_version <= 6);
 	}
 
@@ -1224,6 +1225,7 @@
 			if ((_version <= 7 && !_keepText) || (_version == 8 && VAR(VAR_HAVE_MSG)))
 				stopTalk();
 			setTalkingActor(a->number);
+			a->talking = true;
 			if (!_string[0].no_talk_anim) {
 				a->runActorTalkScript(a->talkStartFrame);
 				_useTalkAnims = true;
@@ -1287,6 +1289,7 @@
 		}
 		if (_version <= 7 && !(_features & GF_HUMONGOUS))
 			setTalkingActor(0xFF);
+		a->talking = false;
 	}
 	if (_version == 8 || _features & GF_HUMONGOUS)
 		setTalkingActor(0);
@@ -1828,7 +1831,7 @@
 		MKLINE(Actor, speedy, sleUint16, VER(8)),
 		MKLINE(Actor, cost.animCounter, sleUint16, VER(8)),
 		MKLINE(Actor, cost.soundCounter, sleByte, VER(8)),
-		MKLINE(Actor, actorDrawVirScr, sleByte, VER(32)),
+		MKLINE(Actor, drawToBackBuf, sleByte, VER(32)),
 		MKLINE(Actor, flip, sleByte, VER(32)),
 		MKLINE(Actor, skipLimb, sleByte, VER(32)),
 

Index: actor.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/actor.h,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -d -r1.56 -r1.57
--- actor.h	28 Jul 2004 11:56:14 -0000	1.56
+++ actor.h	29 Aug 2004 11:27:15 -0000	1.57
@@ -109,7 +109,8 @@
 	uint16 talkScript, walkScript;
 	bool ignoreTurns;
 	bool skipLimb;
-	bool actorDrawVirScr;
+	bool drawToBackBuf;
+	bool talking;
 	int8 layer;
 	uint16 sound[8];
 	CostumeData cost;

Index: akos.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/akos.cpp,v
retrieving revision 1.146
retrieving revision 1.147
diff -u -d -r1.146 -r1.147
--- akos.cpp	28 Aug 2004 15:09:54 -0000	1.146
+++ akos.cpp	29 Aug 2004 11:27:15 -0000	1.147
@@ -59,7 +59,7 @@
 	AKC_SetVar = 0xC010,
 	AKC_CmdQue3 = 0xC015,
 	AKC_ComplexChan = 0xC020,
-	AKC_Unk3 = 0xC021,
+	AKC_C021 = 0xC021,
 	AKC_ComplexChan2 = 0xC025,
 	AKC_Jump = 0xC030,
 	AKC_JumpIfSet = 0xC031,
@@ -88,7 +88,7 @@
 	AKC_Cmd3 = 0xC08B,
 	AKC_Ignore3 = 0xC08C,
 	AKC_Ignore2 = 0xC08D,
-	AKC_Unk1 = 0xC08E,
+	AKC_C08E = 0xC08E,
 	AKC_SkipStart = 0xC090,
 	AKC_SkipE = 0xC090,
 	AKC_SkipNE = 0xC091,
@@ -97,7 +97,10 @@
 	AKC_SkipG = 0xC094,
 	AKC_SkipGE = 0xC095,
 	AKC_ClearFlag = 0xC09F,
-	AKC_Unk4 = 0xC0A1,
+	AKC_C0A0 = 0xC0A0,
+	AKC_C0A1 = 0xC0A1,
+	AKC_C0A2 = 0xC0A2,
+	AKC_C0A3 = 0xC0A3,
 	AKC_EndSeq = 0xC0FF
 };
 
@@ -1137,6 +1140,7 @@
 			case AKC_StartAnim:
 			case AKC_StartVarAnim:
 			case AKC_CmdQue3:
+			case AKC_C0A3:
 				curpos += 3;
 				break;
 			case AKC_SoundStuff:
@@ -1170,7 +1174,9 @@
 			case AKC_Flip:
 			case AKC_Jump:
 			case AKC_StartAnimInActor:
-			case AKC_Unk4:
+			case AKC_C0A0:
+			case AKC_C0A1:
+			case AKC_C0A2:
 				curpos += 4;
 				break;
 			case AKC_ComplexChan2:
@@ -1184,7 +1190,7 @@
 					curpos += (aksq[curpos] & 0x80) ? 2 : 1;
 				}
 				break;
-			case AKC_Unk3:
+			case AKC_C021:
 				curpos += aksq[curpos + 2];
 				break;
 			default:
@@ -1309,9 +1315,9 @@
 		case AKC_Return:
 		case AKC_EndSeq:
 		case AKC_ComplexChan:
-		case AKC_Unk1:
+		case AKC_C08E:
 		case AKC_ComplexChan2:
-		case AKC_Unk3:
+		case AKC_C021:
 			break;
 
 		case AKC_Cmd3:
@@ -1329,10 +1335,24 @@
 			if (akos_compare(a->getAnimVar(GB(4)), GW(2), code - AKC_SkipStart) == 0)
 				flag_value = true;
 			continue;
-
-		case AKC_Unk4:
-			curpos = GUW(2);
-			break;
+		case AKC_C0A0:
+			//akos_queCommand(8, a, GB(2), 0);
+			continue;
+		case AKC_C0A1:
+			if (a->talking) {
+				curpos = GUW(2);
+				break;
+			}
+			continue;
+		case AKC_C0A2:
+			if (!a->talking) {
+				curpos = GUW(2);
+				break;
+			}
+			continue;
+		case AKC_C0A3:
+			//akos_queCommand(8, a, a->getAnimVar(GB(2), 0);
+			continue;
 		default:
 			if ((code & 0xC000) == 0xC000)
 				error("Undefined uSweat token %X", code);
@@ -1343,7 +1363,7 @@
 	int code2 = aksq[curpos];
 	if (code2 & 0x80)
 		code2 = (code2 << 8) | aksq[curpos + 1];
-	assert((code2 & 0xC000) != 0xC000 || code2 == AKC_ComplexChan || code2 == AKC_Return || code2 == AKC_EndSeq || code2 == AKC_Unk1 || code2 == AKC_ComplexChan2);
+	assert((code2 & 0xC000) != 0xC000 || code2 == AKC_ComplexChan || code2 == AKC_Return || code2 == AKC_EndSeq || code2 == AKC_C08E || code2 == AKC_ComplexChan2);
 
 	a->cost.curpos[chan] = curpos;
 

Index: base-costume.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/base-costume.cpp,v
retrieving revision 2.16
retrieving revision 2.17
diff -u -d -r2.16 -r2.17
--- base-costume.cpp	16 Aug 2004 04:37:58 -0000	2.16
+++ base-costume.cpp	29 Aug 2004 11:27:15 -0000	2.17
@@ -25,11 +25,11 @@
 
 namespace Scumm {
 
-byte BaseCostumeRenderer::drawCostume(const VirtScreen &vs, const CostumeData &cost, bool drawVirScr) {
+byte BaseCostumeRenderer::drawCostume(const VirtScreen &vs, const CostumeData &cost, bool drawToBackBuf) {
 	int i;
 	byte result = 0;
 
-	if (drawVirScr)
+	if (drawToBackBuf)
 		_outptr = vs.getBackPixels(0, 0);
 	else
 		_outptr = vs.getPixels(0, 0);

Index: base-costume.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/base-costume.h,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- base-costume.h	11 Aug 2004 04:46:41 -0000	1.23
+++ base-costume.h	29 Aug 2004 11:27:15 -0000	1.24
@@ -126,7 +126,7 @@
 	virtual void setCostume(int costume) = 0;
 
 
-	byte drawCostume(const VirtScreen &vs, const CostumeData &cost, bool actorDrawVirScr);
+	byte drawCostume(const VirtScreen &vs, const CostumeData &cost, bool drawToBackBuf);
 
 protected:
 

Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.206
retrieving revision 2.207
diff -u -d -r2.206 -r2.207
--- intern.h	28 Aug 2004 14:05:32 -0000	2.206
+++ intern.h	29 Aug 2004 11:27:15 -0000	2.207
@@ -715,6 +715,7 @@
 	void o72_readFile();
 	void o72_writeFile();
 	void o72_findAllObjects();
+	void o72_deleteFile();
 	void o72_getPixel();
 	void o72_pickVarRandom();
 	void o72_redimArray();

Index: resource.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/resource.cpp,v
retrieving revision 1.257
retrieving revision 1.258
diff -u -d -r1.257 -r1.258
--- resource.cpp	28 Aug 2004 09:19:52 -0000	1.257
+++ resource.cpp	29 Aug 2004 11:27:15 -0000	1.258
@@ -2240,9 +2240,6 @@
 
 void ScummEngine::readMAXS(int blockSize) {
 	debug(9, "readMAXS: MAXS has blocksize %d", blockSize);
-	// FIXME: trying to detect multiple targets probably a better way to do this
-	if (_heversion >= 70 && blockSize > 38 && _heversion < 72)
-			_heversion = 72;
 
 	if (_version == 8) {                    // CMI
 		_fileHandle.seek(50 + 50, SEEK_CUR);            // 176 - 8

Index: script_v6.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6.cpp,v
retrieving revision 1.392
retrieving revision 1.393
diff -u -d -r1.392 -r1.393
--- script_v6.cpp	28 Aug 2004 14:48:51 -0000	1.392
+++ script_v6.cpp	29 Aug 2004 11:27:15 -0000	1.393
@@ -2922,9 +2922,9 @@
 		a->scalex = state;
 		a->scaley = state;
 		a->putActor(x, y, _currentRoom);
-		a->actorDrawVirScr = true;
+		a->drawToBackBuf = true;
 		a->drawActorCostume();
-		a->actorDrawVirScr = false;
+		a->drawToBackBuf = false;
 		a->drawActorCostume();
 		return;
 	}

Index: script_v6he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6he.cpp,v
retrieving revision 2.101
retrieving revision 2.102
diff -u -d -r2.101 -r2.102
--- script_v6he.cpp	28 Aug 2004 14:05:32 -0000	2.101
+++ script_v6he.cpp	29 Aug 2004 11:27:16 -0000	2.102
@@ -693,10 +693,10 @@
 		{
 			int top_actor = a->top;
 			int bottom_actor = a->bottom;
-			a->actorDrawVirScr = true;
+			a->drawToBackBuf = true;
 			a->needRedraw = true;
 			a->drawActorCostume();
-			a->actorDrawVirScr = false;
+			a->drawToBackBuf = false;
 			a->needRedraw = true;
 			a->drawActorCostume();
 			a->needRedraw = false;
@@ -709,7 +709,7 @@
 		}
 		break;
 	case 219:
-		a->actorDrawVirScr = false;
+		a->drawToBackBuf = false;
 		a->needRedraw = true;
 		a->needBgReset = true;
 		break;

Index: script_v72he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v72he.cpp,v
retrieving revision 2.33
retrieving revision 2.34
diff -u -d -r2.33 -r2.34
--- script_v72he.cpp	29 Aug 2004 03:19:44 -0000	2.33
+++ script_v72he.cpp	29 Aug 2004 11:27:16 -0000	2.34
@@ -323,7 +323,7 @@
 		/* DC */
 		OPCODE(o72_writeFile),
 		OPCODE(o72_findAllObjects),
-		OPCODE(o6_deleteFile),
+		OPCODE(o72_deleteFile),
 		OPCODE(o6_rename),
 		/* E0 */
 		OPCODE(o6_soundOps),
@@ -1070,6 +1070,20 @@
 	push(readVar(0));
 }
 
+void ScummEngine_v72he::o72_deleteFile() {
+	int len, r;
+	byte filename[100];
+
+	copyScriptString(filename);
+
+	for (r = strlen((char*)filename); r != 0; r--) {
+		if (filename[r - 1] == '\\')
+			break;
+	}
+
+	debug(1, "stub o72_deleteFile(\"%s\")", filename + r);
+}
+
 void ScummEngine_v72he::o72_getPixel() {
 	byte area;
 	int x = pop();
@@ -1118,7 +1132,11 @@
 	num = readArray(value, 0, 0);
 
 	ArrayHeader *ah = (ArrayHeader *)getResourceAddress(rtString, num);
-	var_A = FROM_LE_32(ah->dim1end);
+	// FIXME
+	if (!ah)
+		var_A = 0;
+	else
+		var_A = FROM_LE_32(ah->dim1end);
 
 	if (var_A-1 <= num) {
 		int16 var_2 = readArray(value, 0, num - 1);

Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sound.cpp,v
retrieving revision 1.374
retrieving revision 1.375
diff -u -d -r1.374 -r1.375
--- sound.cpp	29 Aug 2004 01:24:17 -0000	1.374
+++ sound.cpp	29 Aug 2004 11:27:16 -0000	1.375
@@ -180,7 +180,7 @@
 
 		musicFile.seek(+40, SEEK_CUR);
 		if (musicFile.readUint32LE() == MKID('SGEN')) {
-			// TODO Work out skpi calcution
+			// TODO Work out skip calcution
 			//skip = (soundID - 8001) * 21;
 			musicFile.seek(+skip, SEEK_CUR);
 
@@ -191,8 +191,8 @@
 			// Rewind
 			musicFile.seek(-44, SEEK_CUR);
 
-			// Skip header junk
-			musicFile.seek(+20, SEEK_CUR);
+			// Skip SGHD header (16)
+			musicFile.seek(+16, SEEK_CUR);
 
 			// Skip to correct music header
 			if (soundID >= 8000)
@@ -201,8 +201,6 @@
 				skip = (soundID - 4001) * 25;
 			musicFile.seek(+skip, SEEK_CUR);
 
-			// Skip to offsets
-			musicFile.seek(+21, SEEK_CUR);
 		}
 
 





More information about the Scummvm-git-logs mailing list