[Scummvm-cvs-logs] CVS: scummvm/scumm/insane insane.cpp,1.19.2.5,1.19.2.6 insane.h,1.12.2.1,1.12.2.2 insane_ben.cpp,1.10.2.1,1.10.2.2 insane_enemy.cpp,1.10,1.10.2.1 insane_iact.cpp,1.14,1.14.2.1 insane_scenes.cpp,1.14,1.14.2.1

Travis Howell kirben at users.sourceforge.net
Thu Aug 12 18:53:53 CEST 2004


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

Modified Files:
      Tag: branch-0-6-0
	insane.cpp insane.h insane_ben.cpp insane_enemy.cpp 
	insane_iact.cpp insane_scenes.cpp 
Log Message:

Back port:
V1 costume fixes
INSANE and smush support for PC FT demo


Index: insane.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/insane/insane.cpp,v
retrieving revision 1.19.2.5
retrieving revision 1.19.2.6
diff -u -d -r1.19.2.5 -r1.19.2.6
--- insane.cpp	26 Jun 2004 09:37:27 -0000	1.19.2.5
+++ insane.cpp	13 Aug 2004 01:52:06 -0000	1.19.2.6
@@ -40,7 +40,6 @@
 
 // TODO (in no particular order):
 // o Code review/cleanup
-// o DOS demo INSANE
 
 namespace Scumm {
 
@@ -51,13 +50,6 @@
 Insane::Insane(ScummEngine_v6 *scumm) {
 	_vm = scumm;
 	
-#ifndef FTDOSDEMO
-	if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC)) {
-		_insaneIsRunning = false;
-		return;
-	}
-#endif
-
 	initvars();
 
 	if (!((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC))) {
@@ -182,8 +174,14 @@
 	for (i = 0; i < 0x80; i++)
 		_iactBits[i] = 0;
 
-	init_enemyStruct(EN_ROTT1, EN_ROTT1, 0, 0, 160, 0, INV_MACE, 90, "wr2_rott.san", 
-					 26, 16, 17, 27, 11, 3);
+	if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC)) {
+		init_enemyStruct(EN_ROTT1, EN_ROTT1, 0, 0, 160, 0, INV_MACE, 63, "endcrshr.san", 
+						 25, 15, 16, 26, 11, 3);
+	} else {
+		init_enemyStruct(EN_ROTT1, EN_ROTT1, 0, 0, 160, 0, INV_MACE, 90, "wr2_rott.san", 
+						 26, 16, 17, 27, 11, 3);
+	}
+
 	init_enemyStruct(EN_ROTT2, EN_ROTT2, 1, 0, 250, 0, INV_2X4, 90, "wr2_rott.san", 
 					 28, 16, 17, 42, 11, 3);
 	init_enemyStruct(EN_ROTT3, EN_ROTT3, 2, 0, 120, 0, INV_HAND, 90, "wr2_rott.san", 
@@ -632,36 +630,47 @@
 }
 
 void Insane::readState(void) { // PATCH
-	_actor[0].inventory[INV_CHAIN] = readArray(50) != 0;
-	_actor[0].inventory[INV_CHAINSAW] = readArray(51) != 0;
-	_actor[0].inventory[INV_MACE] = readArray(52) != 0;
-	_actor[0].inventory[INV_2X4] = readArray(53) != 0;
-	_actor[0].inventory[INV_WRENCH] = readArray(54) != 0;
-	_actor[0].inventory[INV_DUST] = readArray(55) != 0;
-	_actor[0].inventory[INV_HAND] = 1;
-	_actor[0].inventory[INV_BOOT] = 1;
-
-	_smlayer_room = readArray(320);
-	_smlayer_room2 = readArray(321);
-	_posBrokenTruck = readArray(322);
-	_posVista = readArray(323);
-	_val57d = readArray(324);
-	_posCave = readArray(325);
-	_posBrokenCar = readArray(326);
-	_val54d = readArray(327);
-	_posFatherTorque = readArray(328);
-	_enemy[EN_TORQUE].occurences = readArray(337);
-	_enemy[EN_ROTT1].occurences = readArray(329);
-	_enemy[EN_ROTT2].occurences = readArray(330);
-	_enemy[EN_ROTT3].occurences = readArray(331);
-	_enemy[EN_VULTF1].occurences = readArray(332);
-	_enemy[EN_VULTM1].occurences = readArray(333);
-	_enemy[EN_VULTF2].occurences = readArray(334);
-	_enemy[EN_VULTM2].occurences = readArray(335);
-	_enemy[EN_CAVEFISH].occurences = readArray(336);
-	_enemy[EN_VULTM2].field_10 = readArray(340);
-	_enemy[EN_CAVEFISH].field_10 = readArray(56);
-	_enemy[EN_VULTF2].field_10 = readArray(339);
+	if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC)) {
+		_actor[0].inventory[INV_CHAIN] = 0;
+		_actor[0].inventory[INV_CHAINSAW] = 0;
+		_actor[0].inventory[INV_MACE] = 0;
+		_actor[0].inventory[INV_2X4] = 0;
+		_actor[0].inventory[INV_WRENCH] = 1;
+		_actor[0].inventory[INV_DUST] = 0;
+		_actor[0].inventory[INV_HAND] = 1;
+		_actor[0].inventory[INV_BOOT] = 0;
+		_smlayer_room2 = 13;
+	} else {
+		_actor[0].inventory[INV_CHAIN] = readArray(50) != 0;
+		_actor[0].inventory[INV_CHAINSAW] = readArray(51) != 0;
+		_actor[0].inventory[INV_MACE] = readArray(52) != 0;
+		_actor[0].inventory[INV_2X4] = readArray(53) != 0;
+		_actor[0].inventory[INV_WRENCH] = readArray(54) != 0;
+		_actor[0].inventory[INV_DUST] = readArray(55) != 0;
+		_actor[0].inventory[INV_HAND] = 1;
+		_actor[0].inventory[INV_BOOT] = 1;
+		_smlayer_room = readArray(320);
+		_smlayer_room2 = readArray(321);
+		_posBrokenTruck = readArray(322);
+		_posVista = readArray(323);
+		_val57d = readArray(324);
+		_posCave = readArray(325);
+		_posBrokenCar = readArray(326);
+		_val54d = readArray(327);
+		_posFatherTorque = readArray(328);
+		_enemy[EN_TORQUE].occurences = readArray(337);
+		_enemy[EN_ROTT1].occurences = readArray(329);
+		_enemy[EN_ROTT2].occurences = readArray(330);
+		_enemy[EN_ROTT3].occurences = readArray(331);
+		_enemy[EN_VULTF1].occurences = readArray(332);
+		_enemy[EN_VULTM1].occurences = readArray(333);
+		_enemy[EN_VULTF2].occurences = readArray(334);
+		_enemy[EN_VULTM2].occurences = readArray(335);
+		_enemy[EN_CAVEFISH].occurences = readArray(336);
+		_enemy[EN_VULTM2].field_10 = readArray(340);
+		_enemy[EN_CAVEFISH].field_10 = readArray(56);
+		_enemy[EN_VULTF2].field_10 = readArray(339);
+	}
 }
 
 void Insane::setupValues(void) {
@@ -800,8 +809,8 @@
 
 	debug(INSANE_DBG, "Insane::prepareScenePropScene(%d, %d, %d)", scenePropNum, arg_4, arg_8);
 
-	if (!loadScenePropSounds(idx))
-		return;
+	if (((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC)) || !loadScenePropSounds(idx))
+			return;
 
 	_actor[0].defunct = arg_4;
 	_actor[1].defunct = arg_8;
@@ -897,9 +906,15 @@
 }
 
 void Insane::reinitActors(void) {
-	smlayer_setActorCostume(0, 2, readArray(12));
-	smlayer_setActorCostume(0, 0, readArray(14));
-	smlayer_setActorCostume(0, 1, readArray(13));
+	if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC)) {
+		smlayer_setActorCostume(0, 2, readArray(11));
+		smlayer_setActorCostume(0, 0, readArray(13));
+		smlayer_setActorCostume(0, 1, readArray(12));
+	} else {
+		smlayer_setActorCostume(0, 2, readArray(12));
+		smlayer_setActorCostume(0, 0, readArray(14));
+		smlayer_setActorCostume(0, 1, readArray(13));
+	}
 	smlayer_setActorLayer(0, 1, 1);
 	smlayer_setActorLayer(0, 2, 5);
 	smlayer_setActorLayer(0, 0, 10);
@@ -1181,6 +1196,9 @@
 }
 
 void Insane::smlayer_setFluPalette(byte *pal, int shut_flag) {
+	if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC))
+		return;
+
 	//	  if (shut_flag)
 	//		// FIXME: shut colors and make picture appear smoothly
 	//		SmushPlayer::setPalette(pal);
@@ -1291,13 +1309,22 @@
 }
 
 void Insane::procSKIP(Chunk &b) {
-	_player->checkBlock(b, TYPE_SKIP, 4);
 	int16 par1, par2;
+	_player->_skipNext = false;
+
+	if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC)) {
+		_player->checkBlock(b, TYPE_SKIP, 2);
+		par1 = b.getWord();
+		if (isBitSet(par1))
+			_player->_skipNext = true;
+		return;
+	}
+
+	_player->checkBlock(b, TYPE_SKIP, 4);
 
 	par1 = b.getWord();
 	par2 = b.getWord();
 
-	_player->_skipNext = false;
 
 	if (!par2) {
 		if (isBitSet(par1))

Index: insane.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/insane/insane.h,v
retrieving revision 1.12.2.1
retrieving revision 1.12.2.2
diff -u -d -r1.12.2.1 -r1.12.2.2
--- insane.h	22 Apr 2004 12:27:22 -0000	1.12.2.1
+++ insane.h	13 Aug 2004 01:52:06 -0000	1.12.2.2
@@ -53,8 +53,6 @@
 
 #define INSANE_DBG 5
 
-#undef FTDOSDEMO
-
 class Insane {
  public:
 	Insane(ScummEngine_v6 *scumm);

Index: insane_ben.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/insane/insane_ben.cpp,v
retrieving revision 1.10.2.1
retrieving revision 1.10.2.2
diff -u -d -r1.10.2.1 -r1.10.2.2
--- insane_ben.cpp	23 Jun 2004 03:24:55 -0000	1.10.2.1
+++ insane_ben.cpp	13 Aug 2004 01:52:07 -0000	1.10.2.2
@@ -122,6 +122,12 @@
 int32 Insane::actionBen(void) {
 	int32 buttons, tmp;
 	bool doDamage = false;
+	int sound;
+
+	if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC))
+		sound = 59;
+	else
+		sound = 95;
 
 	if (_actor[0].enemyHandler != -1)
 		buttons = enemyHandler(_actor[0].enemyHandler, 0, 1, _actor[0].probability);
@@ -165,11 +171,11 @@
 				_val213d = 0;
 			}
 
-			if (!smlayer_isSoundRunning(95))
-				smlayer_startSfx(95);
+			if (!smlayer_isSoundRunning(sound))
+				smlayer_startSfx(sound);
 		} else {
-			if (smlayer_isSoundRunning(95))
-				smlayer_stopSound(95);
+			if (smlayer_isSoundRunning(sound))
+				smlayer_stopSound(sound);
 			
 			_val213d = 0;
 		}
@@ -568,10 +574,15 @@
 		if (_actor[0].act[2].frame == 2) {
 			if (_currEnemy != EN_CAVEFISH) {
 				tmp = calcEnemyDamage(1, 1);
-				if (tmp == 1)
-					smlayer_startSfx(60);
-				if (tmp == 1000)
-					smlayer_startSfx(62);
+				if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC)) {
+					if (tmp == 1)
+						smlayer_startSfx(50);
+				} else {
+					if (tmp == 1)
+						smlayer_startSfx(60);
+					if (tmp == 1000)
+						smlayer_startSfx(62);
+				}
 			} else {
 				if ((_actor[1].x - _actor[0].x <= weaponMaxRange(0)) &&
 					(_actor[1].x - _actor[0].x >= weaponMinRange(0)) &&
@@ -886,10 +897,17 @@
 				case INV_2X4:
 				case INV_BOOT:
 					tmp = calcEnemyDamage(1, 1);
-					if (tmp == 1)
-						smlayer_startSfx(67);
-					if (tmp == 1000)
-						smlayer_startSfx(68);
+					if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC)) {
+						if (tmp == 1)
+							smlayer_startSfx(52);
+						if (tmp == 1000)
+							smlayer_startSfx(56);
+					} else {
+						if (tmp == 1)
+							smlayer_startSfx(67);
+						if (tmp == 1000)
+							smlayer_startSfx(68);
+					}
 					break;
 				default:
 					if (calcEnemyDamage(1, 0))
@@ -1004,7 +1022,8 @@
 		smlayer_setActorFacing(0, 2, 19, 180);
 		_actor[0].act[2].state = 27;
 		_actor[0].act[2].tilt = calcTilt(_actor[0].tilt);
-		smlayer_startSfx(72);
+		if (!((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC)))
+			smlayer_startSfx(72);
 		break;
 	case 27:
 		smlayer_setActorLayer(0, 2, 4);
@@ -1046,10 +1065,17 @@
 				case INV_BOOT:
 				case INV_DUST:
 					tmp = calcEnemyDamage(1, 1);
-					if (tmp == 1)
-						smlayer_startSfx(70);
-					if (tmp == 1000)
-						smlayer_startSfx(71);
+					if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC)) {
+						if (tmp == 1)
+							smlayer_startSfx(58);
+						if (tmp == 1000)
+							smlayer_startSfx(56);
+					} else {
+						if (tmp == 1)
+							smlayer_startSfx(70);
+						if (tmp == 1000)
+							smlayer_startSfx(71);
+					}
 					break;
 				case INV_HAND:
 					if (!calcEnemyDamage(1, 0))
@@ -1158,7 +1184,10 @@
 	case 36:
 		smlayer_setActorLayer(0, 2, 5);
 		_actor[0].kicking = false;
-		smlayer_setActorCostume(0, 2, readArray(18));
+		if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC))
+			smlayer_setActorCostume(0, 2, readArray(17));
+		else
+			smlayer_setActorCostume(0, 2, readArray(18));
 		smlayer_setActorFacing(0, 2, 6, 180);
 		smlayer_startSfx(96);
 		switch (_currEnemy) {
@@ -1201,7 +1230,10 @@
 				case EN_ROTT1:
 				case EN_ROTT2:
 				case EN_ROTT3:
-					queueSceneSwitch(9, 0, "wr2_benr.san", 64, 0, 0, 0);
+					if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC))
+						queueSceneSwitch(9, 0, "bencrshe.san", 64, 0, 0, 0);
+					else
+						queueSceneSwitch(9, 0, "wr2_benr.san", 64, 0, 0, 0);
 					break;
 				case EN_VULTF1:
 				case EN_VULTM1:
@@ -1899,7 +1931,10 @@
 		_actor[0].act[2].state = 34;
 		break;
 	case INV_WRENCH:
-		smlayer_setActorCostume(0, 2, readArray(25));
+		if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC))
+			smlayer_setActorCostume(0, 2, readArray(24));
+		else
+			smlayer_setActorCostume(0, 2, readArray(25));
 		smlayer_setActorFacing(0, 2, 18, 180);
 		_actor[0].weaponClass = 0;
 		_actor[0].act[2].state = 34;
@@ -1907,7 +1942,10 @@
 	case INV_BOOT:
 	case INV_HAND:
 	case INV_DUST:
-		smlayer_setActorCostume(0, 2, readArray(12));
+		if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC))
+			smlayer_setActorCostume(0, 2, readArray(11));
+		else
+			smlayer_setActorCostume(0, 2, readArray(12));
 		_actor[0].weaponClass = 2;
 		_actor[0].act[2].state = 1;
 		break;
@@ -1955,6 +1993,11 @@
 void Insane::ouchSoundBen(void) {
 	_actor[0].act[3].state = 52;
 
+	if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC)) {
+		smlayer_startVoice(54);
+		return;
+	}
+
 	switch (_vm->_rnd.getRandomNumber(3)) {
 	case 0:
 		smlayer_startVoice(315);

Index: insane_enemy.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/insane/insane_enemy.cpp,v
retrieving revision 1.10
retrieving revision 1.10.2.1
diff -u -d -r1.10 -r1.10.2.1
--- insane_enemy.cpp	10 Feb 2004 04:15:36 -0000	1.10
+++ insane_enemy.cpp	13 Aug 2004 01:52:07 -0000	1.10.2.1
@@ -1265,6 +1265,11 @@
 
 	_actor[1].act[3].state = 52;
 
+	if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC)) {
+		smlayer_startVoice(55);
+		return;
+	}
+
 	switch (_currEnemy) {
 	case EN_VULTF1:
 		if (_actor[0].weapon == INV_DUST) {
@@ -1694,7 +1699,10 @@
 		_actor[1].weaponClass = 1;
 		if (_actor[1].act[2].frame >= 6) {
 			tmp = calcBenDamage(1, 1);
-			if (tmp == 1)
+			if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC)) {
+				if (tmp == 1)
+					smlayer_startSfx(50);
+			} else if (tmp == 1)
 				smlayer_startSfx(60);
 			if (tmp == 1000)
 				smlayer_startSfx(62);
@@ -1863,15 +1871,17 @@
 		smlayer_setActorFacing(1, 2, 19, 180);
 		_actor[1].act[2].state = 19;
 		_actor[1].act[2].tilt = calcTilt(_actor[1].tilt);
-		smlayer_startSfx(69);
-
-		if (!_actor[1].field_54) {
-			tmp = _vm->_rnd.getRandomNumber(4);
-			if (tmp == 1) {
-				smlayer_startSfx(213);
-			} else if (tmp == 3) {
-				smlayer_startSfx(215);
+		if (!((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC))) {
+			smlayer_startSfx(69);
+			if (!_actor[1].field_54) {
+				tmp = _vm->_rnd.getRandomNumber(4);
+				if (tmp == 1)
+					smlayer_startSfx(213);
+				else if (tmp == 3)
+					smlayer_startSfx(215);
 			}
+		} else {
+			smlayer_startSfx(53);
 		}
 		break;
 	case 19:
@@ -1925,10 +1935,17 @@
 			case INV_2X4:
 			case INV_BOOT:
 				tmp = calcBenDamage(1, 1);
-				if (tmp == 1)
-					smlayer_startSfx(67);
-				if (tmp == 1000)
-					smlayer_startSfx(68);
+				if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC)) {
+					if (tmp == 1)
+						smlayer_startSfx(52);
+					else if (tmp == 1000)
+						smlayer_startSfx(56);
+				} else {
+					if (tmp == 1)
+						smlayer_startSfx(67);
+					if (tmp == 1000)
+						smlayer_startSfx(68);
+				}
 				break;
 			default:
 				calcBenDamage(1, 0);
@@ -2036,7 +2053,10 @@
 		_actor[1].kicking = true;
 		if (_actor[1].act[2].frame >= 3) {
 			tmp = calcBenDamage(1, 1);
-			if (tmp == 1)
+			if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC)) {
+				if (tmp == 1)
+					smlayer_startSfx(57);
+			} else if (tmp == 1)
 				smlayer_startSfx(70);
 			if (tmp == 1000)
 				smlayer_startSfx(71);
@@ -2087,24 +2107,26 @@
 		smlayer_setActorCostume(1, 2, readArray(_enemy[_currEnemy].costumevar));
 		smlayer_setActorFacing(1, 2, 6, 180);
 		smlayer_setActorLayer(1, 2, 25);
-		smlayer_startSfx(96);
 		_actor[1].act[2].state = 37;
-		switch (_currEnemy) {
-		case EN_ROTT1:
-			smlayer_startVoice(212);
-			break;
-		case EN_ROTT2:
-			smlayer_startVoice(259);
-			break;
-		case EN_ROTT3:
-			smlayer_startVoice(232);
-			break;
-		case EN_VULTF1:
-			smlayer_startVoice(281);
-			break;
-		case EN_VULTF2:
-			smlayer_startVoice(276);
-			break;
+		if (!((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC))) {
+			smlayer_startSfx(96);
+			switch (_currEnemy) {
+			case EN_ROTT1:
+				smlayer_startVoice(212);
+				break;
+			case EN_ROTT2:
+				smlayer_startVoice(259);
+				break;
+			case EN_ROTT3:
+				smlayer_startVoice(232);
+				break;
+			case EN_VULTF1:
+				smlayer_startVoice(281);
+				break;
+			case EN_VULTF2:
+				smlayer_startVoice(276);
+				break;
+			}
 		}
 	case 37:
 		_actor[1].cursorX = 0;

Index: insane_iact.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/insane/insane_iact.cpp,v
retrieving revision 1.14
retrieving revision 1.14.2.1
diff -u -d -r1.14 -r1.14.2.1
--- insane_iact.cpp	10 Feb 2004 04:02:34 -0000	1.14
+++ insane_iact.cpp	13 Aug 2004 01:52:07 -0000	1.14.2.1
@@ -379,6 +379,9 @@
 					  int32 setupsan13, Chunk &b, int32 size, int32 flags) {
 	_player->checkBlock(b, TYPE_IACT, 8);
 
+	if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC))
+		return;
+
 	int16 par1, par2, par3, par4, par5;
 
 	par1 = b.getWord(); // edx

Index: insane_scenes.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/insane/insane_scenes.cpp,v
retrieving revision 1.14
retrieving revision 1.14.2.1
diff -u -d -r1.14 -r1.14.2.1
--- insane_scenes.cpp	9 Feb 2004 18:57:03 -0000	1.14
+++ insane_scenes.cpp	13 Aug 2004 01:52:07 -0000	1.14.2.1
@@ -34,11 +34,6 @@
 namespace Scumm {
 
 void Insane::runScene(int arraynum) {
-#ifndef FTDOSDEMO
-	if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC))
-		return;
-#endif
-
 	_insaneIsRunning = true;
 	_player = new SmushPlayer(_vm, _speed);
 	_player->insanity(true);
@@ -72,11 +67,17 @@
 		break;
 	case 2:
 		setupValues();
-		smlayer_setActorCostume(0, 2, readArray(11));
+		if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC))
+			smlayer_setActorCostume(0, 2, readArray(10));
+		else
+			smlayer_setActorCostume(0, 2, readArray(11));
 		smlayer_putActor(0, 2, _actor[0].x, _actor[0].y1 + 190, _smlayer_room2);
 
 		_mainRoadPos = readArray(2);
-		if (_mainRoadPos == _posBrokenTruck) {
+		if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC)) {
+			initScene(5);
+			startVideo("tovista.san", 1, 32, 12, 0);
+		} else if (_mainRoadPos == _posBrokenTruck) {
 			initScene(5);
 			startVideo("tovista2.san", 1, 32, 12, 0);
 		} else if (_mainRoadPos == _posBrokenCar) {
@@ -141,24 +142,26 @@
 
 	_insaneIsRunning = false;
 
-	writeArray(50, _actor[0].inventory[INV_CHAIN]);
-	writeArray(51, _actor[0].inventory[INV_CHAINSAW]);
-	writeArray(52, _actor[0].inventory[INV_MACE]);
-	writeArray(53, _actor[0].inventory[INV_2X4]);
-	writeArray(54, _actor[0].inventory[INV_WRENCH]);
-	writeArray(55, _actor[0].inventory[INV_DUST]);
-	writeArray(337, _enemy[EN_TORQUE].occurences);
-	writeArray(329, _enemy[EN_ROTT1].occurences);
-	writeArray(330, _enemy[EN_ROTT2].occurences);
-	writeArray(331, _enemy[EN_ROTT3].occurences);
-	writeArray(332, _enemy[EN_VULTF1].occurences);
-	writeArray(333, _enemy[EN_VULTM1].occurences);
-	writeArray(334, _enemy[EN_VULTF2].occurences);
-	writeArray(335, _enemy[EN_VULTM2].occurences);
-	writeArray(336, _enemy[EN_CAVEFISH].occurences);
-	writeArray(339, _enemy[EN_VULTF2].field_10);
-	writeArray(56, _enemy[EN_CAVEFISH].field_10);
-	writeArray(340, _enemy[EN_VULTM2].field_10);
+	if (!((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC))) {
+		writeArray(50, _actor[0].inventory[INV_CHAIN]);
+		writeArray(51, _actor[0].inventory[INV_CHAINSAW]);
+		writeArray(52, _actor[0].inventory[INV_MACE]);
+		writeArray(53, _actor[0].inventory[INV_2X4]);
+		writeArray(54, _actor[0].inventory[INV_WRENCH]);
+		writeArray(55, _actor[0].inventory[INV_DUST]);
+		writeArray(337, _enemy[EN_TORQUE].occurences);
+		writeArray(329, _enemy[EN_ROTT1].occurences);
+		writeArray(330, _enemy[EN_ROTT2].occurences);
+		writeArray(331, _enemy[EN_ROTT3].occurences);
+		writeArray(332, _enemy[EN_VULTF1].occurences);
+		writeArray(333, _enemy[EN_VULTM1].occurences);
+		writeArray(334, _enemy[EN_VULTF2].occurences);
+		writeArray(335, _enemy[EN_VULTM2].occurences);
+		writeArray(336, _enemy[EN_CAVEFISH].occurences);
+		writeArray(339, _enemy[EN_VULTF2].field_10);
+		writeArray(56, _enemy[EN_CAVEFISH].field_10);
+		writeArray(340, _enemy[EN_VULTM2].field_10);
+	}
 	// insane_unlock(); // FIXME
 	_vm->_sound->stopAllSounds(); // IMUSE_StopAllSounds();
 	if (_memoryAllocatedNotOK) {
@@ -239,13 +242,18 @@
 		_actor[1].defunct = 0;
 		_actor[1].scenePropSubIdx = 0;
 		_actor[1].field_54 = 0;
-		smlayer_stopSound(89);
-		smlayer_stopSound(90);
-		smlayer_stopSound(91);
-		smlayer_stopSound(92);
-		smlayer_stopSound(93);
-		smlayer_stopSound(95);
-		smlayer_stopSound(87);
+		if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC)) {
+			smlayer_stopSound(59);
+			smlayer_stopSound(63);
+		} else {
+			smlayer_stopSound(89);
+			smlayer_stopSound(90);
+			smlayer_stopSound(91);
+			smlayer_stopSound(92);
+			smlayer_stopSound(93);
+			smlayer_stopSound(95);
+			smlayer_stopSound(87);
+		}
 		break;
 	case 4:
 	case 5:
@@ -310,6 +318,9 @@
 
 // insane_loadSceneData1 & insane_loadSceneData2
 int Insane::loadSceneData(int scene, int flag, int phase) {
+	if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC))
+		return 1;
+
 	int retvalue = 1;
 
 	debug(INSANE_DBG, "Insane::loadSceneData(%d, %d, %d)", scene, flag, phase);
@@ -641,7 +652,10 @@
 	case 4:
 	case 5:
 	case 6:
-		smlayer_setActorCostume(0, 2, readArray(11));
+		if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC))
+			smlayer_setActorCostume(0, 2, readArray(10));
+		else
+			smlayer_setActorCostume(0, 2, readArray(11));
 		smlayer_putActor(0, 2, _actor[0].x, _actor[0].y1+190, _smlayer_room2);
 		setupValues();
 		return;
@@ -658,9 +672,15 @@
 
 	debug(INSANE_DBG, "setEnemyCostumes(%d)", _currEnemy);
 
-	smlayer_setActorCostume(0, 2, readArray(12));
-	smlayer_setActorCostume(0, 0, readArray(14));
-	smlayer_setActorCostume(0, 1, readArray(13));
+	if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC)) {
+		smlayer_setActorCostume(0, 2, readArray(11));
+		smlayer_setActorCostume(0, 0, readArray(13));
+		smlayer_setActorCostume(0, 1, readArray(12));
+	} else {
+		smlayer_setActorCostume(0, 2, readArray(12));
+		smlayer_setActorCostume(0, 0, readArray(14));
+		smlayer_setActorCostume(0, 1, readArray(13));
+	}
 	smlayer_setActorLayer(0, 1, 1);
 	smlayer_setActorLayer(0, 2, 5);
 	smlayer_setActorLayer(0, 0, 10);
@@ -1121,7 +1141,10 @@
 
 void Insane::postCase3(byte *renderBitmap, int32 codecparam, int32 setupsan12,
 					   int32 setupsan13, int32 curFrame, int32 maxFrame) {
-	turnBen(true);
+	if ((_vm->_features & GF_DEMO) && (_vm->_features & GF_PC))
+		turnBen(false);
+	else
+		turnBen(true);
 	
 	if (_actor[0].x >= 158 && _actor[0].x <= 168) {
 		if (!smlayer_isSoundRunning(86))





More information about the Scummvm-git-logs mailing list