[Scummvm-cvs-logs] SF.net SVN: scummvm:[40059] scummvm/trunk/engines/gob

strangerke at users.sourceforge.net strangerke at users.sourceforge.net
Tue Apr 21 23:44:37 CEST 2009


Revision: 40059
          http://scummvm.svn.sourceforge.net/scummvm/?rev=40059&view=rev
Author:   strangerke
Date:     2009-04-21 21:44:37 +0000 (Tue, 21 Apr 2009)

Log Message:
-----------
Patch #2725859 : Added some MD5 to the gob engine, modified the way the first STK and TOT is declared, added inter and draw skeleton for Fascination

Modified Paths:
--------------
    scummvm/trunk/engines/gob/dataio.cpp
    scummvm/trunk/engines/gob/detection.cpp
    scummvm/trunk/engines/gob/draw.h
    scummvm/trunk/engines/gob/game.cpp
    scummvm/trunk/engines/gob/game_v1.cpp
    scummvm/trunk/engines/gob/gob.cpp
    scummvm/trunk/engines/gob/gob.h
    scummvm/trunk/engines/gob/init.cpp
    scummvm/trunk/engines/gob/init.h
    scummvm/trunk/engines/gob/init_v2.cpp
    scummvm/trunk/engines/gob/inter.cpp
    scummvm/trunk/engines/gob/inter.h
    scummvm/trunk/engines/gob/inter_v1.cpp
    scummvm/trunk/engines/gob/module.mk

Added Paths:
-----------
    scummvm/trunk/engines/gob/draw_fascin.cpp
    scummvm/trunk/engines/gob/inter_fascin.cpp

Modified: scummvm/trunk/engines/gob/dataio.cpp
===================================================================
--- scummvm/trunk/engines/gob/dataio.cpp	2009-04-21 21:37:03 UTC (rev 40058)
+++ scummvm/trunk/engines/gob/dataio.cpp	2009-04-21 21:44:37 UTC (rev 40059)
@@ -370,6 +370,7 @@
 	ChunkDesc *dataDesc;
 	char path[128];
 	int16 file;
+	char *fakeTotPtr; 
 
 	strncpy0(path, src, 127);
 	if (!strchr(path, '.')) {
@@ -409,6 +410,13 @@
 		Util::replaceChar(dataDesc[i].chunkName, (char) 0x8E, 'O');
 		Util::replaceChar(dataDesc[i].chunkName, (char) 0x91, 'C');
 		Util::replaceChar(dataDesc[i].chunkName, (char) 0x92, 'T');
+
+		// Geisha use 0ot files, which are compressed TOT files without the packed byte set.
+		fakeTotPtr = strstr(dataDesc[i].chunkName, "0OT");
+		if (fakeTotPtr != 0) {
+			strncpy(fakeTotPtr, "TOT", 3);
+			dataDesc[i].packed = 1;
+		}
 	}
 
 	for (int i = 0; i < _numDataChunks[file]; i++)

Modified: scummvm/trunk/engines/gob/detection.cpp
===================================================================
--- scummvm/trunk/engines/gob/detection.cpp	2009-04-21 21:37:03 UTC (rev 40058)
+++ scummvm/trunk/engines/gob/detection.cpp	2009-04-21 21:44:37 UTC (rev 40059)
@@ -35,6 +35,7 @@
 
 	GameType gameType;
 	int32 features;
+	const char *startStkBase;
 	const char *startTotBase;
 };
 
@@ -59,6 +60,11 @@
 	{"woodruff", "The Bizarre Adventures of Woodruff and the Schnibble"},
 	{"dynasty", "The Last Dynasty"},
 	{"urban", "Urban Runner"},
+	{"archibald", "Playtoon 1 - Uncle Archibald"},
+	{"spirou", "Playtoon 2 - Spirou"},
+	{"fascination", "Fascination"},
+	{"geisha", "Geisha"},
+	{"adibou4", "Adibou v4"},
 	{0, 0}
 };
 
@@ -82,7 +88,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesEGA,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -95,7 +102,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesEGA,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by Theruler76 in bug report #1201233
 		{
@@ -108,7 +116,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by raziel_ in bug report #1891864
 		{
@@ -121,7 +130,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // CD 1.000 version.
 		{
@@ -134,7 +144,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{ // CD 1.000 version.
 		{
@@ -147,7 +158,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{ // CD 1.000 version.
 		{
@@ -160,7 +172,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{ // CD 1.000 version.
 		{
@@ -173,7 +186,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{ // CD 1.000 version.
 		{
@@ -186,7 +200,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{ // CD 1.02 version. Multilingual
 		{
@@ -199,7 +214,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{ // CD 1.02 version. Multilingual
 		{
@@ -212,7 +228,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{ // CD 1.02 version. Multilingual
 		{
@@ -225,7 +242,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{ // CD 1.02 version. Multilingual
 		{
@@ -238,7 +256,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{ // CD 1.02 version. Multilingual
 		{
@@ -251,7 +270,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -264,7 +284,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -277,7 +298,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -290,7 +312,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by raina in the forums
 		{
@@ -303,7 +326,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by paul66 in bug report #1652352
 		{
@@ -316,7 +340,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by paul66 in bug report #1652352
 		{
@@ -329,7 +354,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by paul66 in bug report #1652352
 		{
@@ -342,7 +368,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by paul66 in bug report #1652352
 		{
@@ -355,7 +382,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by paul66 in bug report #1652352
 		{
@@ -368,8 +396,27 @@
 		},
 		kGameTypeGob1,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
+	{
+		{
+			"gob1",
+			"",
+			{
+				{"intro.stk", 0, "f5f028ee39c456fa51fa63b606583918", 313472},
+				{"musmac1.mid", 0, "4f66903b33df8a20edd4c748809c0b56", 8161},
+				{NULL, 0, NULL, 0}
+			},
+			FR_FRA,
+			kPlatformWindows,
+			ADGF_NO_FLAGS
+		},
+		kGameTypeGob1,
+		kFeaturesAdlib,
+		0,
+		0
+	},
 	{ // Supplied by fac76 in bug report #1883808
 		{
 			"gob2",
@@ -381,7 +428,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -394,7 +442,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by goodoldgeorg in bug report #2602057
 		{
@@ -407,7 +456,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by bgk in bug report #1706861
 		{
@@ -420,7 +470,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by fac76 in bug report #1673397
 		{
@@ -437,7 +488,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by koalet in bug report #2478585
 		{
@@ -454,7 +506,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -467,7 +520,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -480,7 +534,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by raziel_ in bug report #1891867
 		{
@@ -493,7 +548,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -506,7 +562,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by blackwhiteeagle in bug report #1605235
 		{
@@ -519,7 +576,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -532,7 +590,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by goodoldgeorg in bug report #2602017
 		{
@@ -545,7 +604,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -558,7 +618,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by arcepi in bug report #1659884
 		{
@@ -571,7 +632,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -584,7 +646,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -597,7 +660,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -610,7 +674,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -623,7 +688,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -636,7 +702,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -649,7 +716,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -662,7 +730,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
-		"usa"
+		0,
+		"usa.tot"
 	},
 	{
 		{
@@ -675,7 +744,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -688,7 +758,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by polluks in bug report #1895126
 		{
@@ -701,8 +772,27 @@
 		},
 		kGameTypeGob2,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
+	{
+		{
+			"gob2",
+			"",
+			{
+				{"intro.stk", 0, "285d7340f98ebad65d465585da12910b", 837286},
+				{"musmac1.mid", 0, "834e55205b710d0af5f14a6f2320dd8e", 8661},
+				{NULL, 0, NULL, 0}
+			},
+			FR_FRA,
+			kPlatformWindows,
+			ADGF_NO_FLAGS
+		},
+		kGameTypeGob2,
+		kFeaturesAdlib,
+		0,
+		0
+	},
 	{ // Supplied by vampir_raziel in bug report #1658373
 		{
 			"ween",
@@ -718,7 +808,8 @@
 		},
 		kGameTypeWeen,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by vampir_raziel in bug report #1658373
 		{
@@ -731,7 +822,8 @@
 		},
 		kGameTypeWeen,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by vampir_raziel in bug report #1658373
 		{
@@ -744,7 +836,8 @@
 		},
 		kGameTypeWeen,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by vampir_raziel in bug report #1658373
 		{
@@ -757,7 +850,8 @@
 		},
 		kGameTypeWeen,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by goodoldgeorg in bug report #2563539 
 		{
@@ -774,7 +868,8 @@
 		},
 		kGameTypeWeen,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by pwigren in bug report #1764174
 		{
@@ -791,7 +886,8 @@
 		},
 		kGameTypeWeen,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -804,7 +900,8 @@
 		},
 		kGameTypeWeen,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -817,7 +914,8 @@
 		},
 		kGameTypeWeen,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -830,7 +928,8 @@
 		},
 		kGameTypeWeen,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by cybot_tmin in bug report #1667743
 		{
@@ -843,7 +942,8 @@
 		},
 		kGameTypeWeen,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -856,7 +956,8 @@
 		},
 		kGameTypeWeen,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by cartman_ on #scummvm
 		{
@@ -869,7 +970,8 @@
 		},
 		kGameTypeWeen,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by glorfindel in bugreport #1722142
 		{
@@ -882,7 +984,8 @@
 		},
 		kGameTypeWeen,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -895,7 +998,8 @@
 		},
 		kGameTypeWeen,
 		kFeaturesAdlib,
-		"show"
+		0,
+		"show.tot"
 	},
 	{
 		{
@@ -908,7 +1012,8 @@
 		},
 		kGameTypeWeen,
 		kFeaturesAdlib,
-		"show"
+		0,
+		"show.tot"
 	},
 	{
 		{
@@ -921,7 +1026,8 @@
 		},
 		kGameTypeBargon,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by Trekky in the forums
 		{
@@ -934,7 +1040,8 @@
 		},
 		kGameTypeBargon,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by cesardark in bug #1681649
 		{
@@ -947,7 +1054,8 @@
 		},
 		kGameTypeBargon,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by paul66 in bug #1692667
 		{
@@ -960,7 +1068,8 @@
 		},
 		kGameTypeBargon,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by pwigren in bugreport #1764174
 		{
@@ -973,7 +1082,8 @@
 		},
 		kGameTypeBargon,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by kizkoool in bugreport #2089734
 		{
@@ -986,7 +1096,8 @@
 		},
 		kGameTypeBargon,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by glorfindel in bugreport #1722142
 		{
@@ -999,7 +1110,8 @@
 		},
 		kGameTypeBargon,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1012,7 +1124,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib | kFeaturesEGA,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1029,7 +1142,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1042,7 +1156,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1055,7 +1170,8 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by Arshlan in the forums
 		{
@@ -1068,7 +1184,8 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by cartman_ on #scummvm
 		{
@@ -1081,7 +1198,8 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by goodoldgeorg in bug report #2105220
 		{
@@ -1094,7 +1212,8 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by koalet in bug report #2479034
 		{
@@ -1111,7 +1230,8 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1124,7 +1244,8 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1137,7 +1258,8 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1150,7 +1272,8 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1163,7 +1286,8 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1176,7 +1300,8 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1189,7 +1314,8 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by SiRoCs in bug report #2093672
 		{
@@ -1202,7 +1328,8 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by SiRoCs in bug report #2093672
 		{
@@ -1215,7 +1342,8 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by SiRoCs in bug report #2093672
 		{
@@ -1228,7 +1356,8 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by SiRoCs in bug report #2093672
 		{
@@ -1241,7 +1370,8 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by SiRoCs in bug report #2093672
 		{
@@ -1254,7 +1384,8 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by SiRoCs in bug report #2093672
 		{
@@ -1267,10 +1398,138 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
+			"fascination",
+			"CD Version (Censored)",
+			AD_ENTRY1s("disk0.stk", "9c61e9c22077f72921f07153e37ccf01", 545952),
+			UNK_LANG,
+			kPlatformPC,
+			ADGF_NO_FLAGS,
+		},
+		kGameTypeFascination,
+		kFeaturesCD,
+		"disk0.stk",
+		0
+	},
+	{
+		{
+			"fascination",
+			"VGA 3 disks edition",
+			AD_ENTRY1s("disk0.stk", "a50a8495e1b2d67699fb562cb98fc3e2", 1064387),
+			UNK_LANG,
+			kPlatformPC,
+			ADGF_NO_FLAGS,
+		},
+		kGameTypeFascination,
+		kFeaturesNone,
+		"disk0.stk",
+		0
+	},
+	//Provided by Sanguine
+	{
+		{
+			"fascination",
+			"VGA 3 disks edition",
+			AD_ENTRY1s("disk0.stk", "c14330d052fe4da5a441ac9d81bc5891", 1061955),
+			UNK_LANG,
+			kPlatformPC,
+			ADGF_NO_FLAGS,
+		},
+		kGameTypeFascination,
+		kFeaturesNone,
+		"disk0.stk",
+		0
+	},
+	{
+		{
+			"fascination",
+			"VGA",
+			AD_ENTRY1s("disk0.stk", "e8ab4f200a2304849f462dc901705599", 183337),
+			UNK_LANG,
+			kPlatformPC,
+			ADGF_NO_FLAGS,
+		},
+		kGameTypeFascination,
+		kFeaturesNone,
+		"disk0.stk",
+		0
+	},
+	{
+		{
+			"fascination",
+			"",
+			AD_ENTRY1s("disk0.stk", "68b1c01564f774c0b640075fbad1b695", 189968),
+			DE_DEU,
+			kPlatformAmiga,
+			ADGF_NO_FLAGS,
+		},
+		kGameTypeFascination,
+		kFeaturesNone,
+		"disk0.stk",
+		0
+	},	
+	{
+		{
+			"fascination",
+			"",
+			AD_ENTRY1s("disk0.stk", "7062117e9c5adfb6bfb2dac3ff74df9e", 189951),
+			EN_ANY,
+			kPlatformAmiga,
+			ADGF_NO_FLAGS,
+		},
+		kGameTypeFascination,
+		kFeaturesNone,
+		"disk0.stk",
+		0
+	},	
+	{
+		{
+			"fascination",
+			"",
+			AD_ENTRY1s("disk0.stk", "55c154e5a3e8e98afebdcff4b522e1eb", 190005),
+			FR_FRA,
+			kPlatformAmiga,
+			ADGF_NO_FLAGS,
+		},
+		kGameTypeFascination,
+		kFeaturesNone,
+		"disk0.stk",
+		0
+	},	
+	{
+		{
+			"fascination",
+			"",
+			AD_ENTRY1s("disk0.stk", "7691827fff35df7799f14cfd6be178ad", 189931),
+			IT_ITA,
+			kPlatformAmiga,
+			ADGF_NO_FLAGS,
+		},
+		kGameTypeFascination,
+		kFeaturesNone,
+		"disk0.stk",
+		0
+	},	
+	{
+		{
+			"geisha",
+			"",
+			AD_ENTRY1s("disk1.stk", "6eebbb98ad90cd3c44549fc2ab30f632", 212153),
+			UNK_LANG,
+			kPlatformPC,
+			ADGF_NO_FLAGS,
+		},
+		kGameTypeGeisha,
+		kFeaturesNone,
+		"disk1.stk",
+		"intro.tot"
+	},
+	{
+		{
 			"lostintime",
 			"Demo",
 			AD_ENTRY1("demo.stk", "c06f8cc20eb239d4c71f225ce3093edf"),
@@ -1280,7 +1539,8 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesAdlib,
-		"demo"
+		"demo.stk",
+		"demo.tot"
 	},
 	{
 		{
@@ -1293,7 +1553,8 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesAdlib,
-		"demo"
+		"demo.stk",
+		"demo.tot"
 	},
 	{
 		{
@@ -1306,7 +1567,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by raziel_ in bug report #1891869
 		{
@@ -1319,7 +1581,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by fac76 in bug report #1742716
 		{
@@ -1336,7 +1599,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1349,7 +1613,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by paul66 in bug report #1652352
 		{
@@ -1362,7 +1627,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1375,7 +1641,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by Paranoimia on #scummvm
 		{
@@ -1388,7 +1655,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1401,7 +1669,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1414,7 +1683,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by SiRoCs in bug report #2098621
 		{
@@ -1427,7 +1697,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1440,7 +1711,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesNone,
-		"menu"
+		0,
+		"menu.tot"
 	},
 	{
 		{
@@ -1453,7 +1725,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesNone,
-		"menu"
+		0,
+		"menu.tot"
 	},
 	{
 		{
@@ -1466,7 +1739,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by paul66 and noizert in bug reports #1652352 and #1691230
 		{
@@ -1479,7 +1753,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by paul66 and noizert in bug reports #1652352 and #1691230
 		{
@@ -1492,7 +1767,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by paul66 and noizert in bug reports #1652352 and #1691230
 		{
@@ -1505,7 +1781,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by paul66 and noizert in bug reports #1652352 and #1691230
 		{
@@ -1518,7 +1795,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by paul66 and noizert in bug reports #1652352 and #1691230
 		{
@@ -1531,7 +1809,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1544,7 +1823,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1557,7 +1837,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1570,7 +1851,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1583,10 +1865,29 @@
 		},
 		kGameTypeGob3,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
+			"gob3",
+			"",
+			{
+				{"intro.stk", 0, "edd7403e5dc2a14459d2665a4c17714d", 209534},
+				{"musmac1.mid", 0, "948c546cad3a9de5bff3fe4107c82bf1", 6404},
+				{NULL, 0, NULL, 0}
+			},
+			FR_FRA,
+			kPlatformWindows,
+			ADGF_NO_FLAGS
+		},
+		kGameTypeGob3,
+		kFeaturesAdlib,
+		0,
+		0
+	},
+	{
+		{
 			"inca2",
 			"",
 			AD_ENTRY1s("intro.stk", "47c3b452767c4f49ea7b109143e77c30", 916828),
@@ -1596,7 +1897,8 @@
 		},
 		kGameTypeInca2,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1609,7 +1911,8 @@
 		},
 		kGameTypeInca2,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1622,7 +1925,8 @@
 		},
 		kGameTypeInca2,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1635,7 +1939,8 @@
 		},
 		kGameTypeInca2,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1648,7 +1953,8 @@
 		},
 		kGameTypeInca2,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1661,7 +1967,8 @@
 		},
 		kGameTypeInca2,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1674,7 +1981,8 @@
 		},
 		kGameTypeInca2,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1687,7 +1995,8 @@
 		},
 		kGameTypeInca2,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1700,7 +2009,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1713,7 +2023,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1726,7 +2037,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1739,7 +2051,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1752,7 +2065,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1765,7 +2079,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1778,7 +2093,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1791,7 +2107,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1804,7 +2121,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1817,7 +2135,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -1830,7 +2149,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by jvprat on #scummvm
 		{
@@ -1843,7 +2163,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by jvprat on #scummvm
 		{
@@ -1856,7 +2177,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by jvprat on #scummvm
 		{
@@ -1869,7 +2191,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by jvprat on #scummvm
 		{
@@ -1882,7 +2205,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by jvprat on #scummvm
 		{
@@ -1895,7 +2219,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by Hkz on #scummvm
 		{
@@ -1908,7 +2233,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by Hkz on #scummvm
 		{
@@ -1921,7 +2247,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by Hkz on #scummvm
 		{
@@ -1934,7 +2261,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by DjDiabolik in bug report #1971294
 		{
@@ -1947,7 +2275,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by DjDiabolik in bug report #1971294
 		{
@@ -1960,7 +2289,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by DjDiabolik in bug report #1971294
 		{
@@ -1973,7 +2303,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by DjDiabolik in bug report #1971294
 		{
@@ -1986,7 +2317,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by DjDiabolik in bug report #1971294
 		{
@@ -1999,7 +2331,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{ // Supplied by goodoldgeorg in bug report #2098838
 		{
@@ -2012,7 +2345,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -2025,7 +2359,8 @@
 		},
 		kGameTypeDynasty,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -2038,7 +2373,8 @@
 		},
 		kGameTypeDynasty,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -2051,7 +2387,8 @@
 		},
 		kGameTypeDynasty,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -2064,10 +2401,25 @@
 		},
 		kGameTypeDynasty,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
+			"dynasty",
+			"Demo",
+			AD_ENTRY1s("lda1.stk", "0e56a899357cbc0bf503260fd2dd634e", 15032774),
+			UNK_LANG,
+			kPlatformWindows,
+			ADGF_DEMO
+		},
+		kGameTypeDynasty,
+		kFeatures640,
+		"lda1.stk",
+		0
+	},
+	{
+		{
 			"urban",
 			"",
 			AD_ENTRY1s("intro.stk", "3ab2c542bd9216ae5d02cc6f45701ae1", 1252436),
@@ -2077,8 +2429,37 @@
 		},
 		kGameTypeUrban,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
+	{
+		{
+			"spirou",
+			"",
+			AD_ENTRY1s("intro2.stk", "5e214cec5041d6a4a810feba8ddaaa92",247576),
+			UNK_LANG,
+			kPlatformPC,
+			ADGF_NO_FLAGS
+		},
+		kGameTypeSpirou,
+		kFeatures640,
+		"intro2.stk",
+		0
+	},
+	{
+		{
+			"archibald",
+			"",
+			AD_ENTRY1s("intro2.stk", "9aa412f5b8a1ee1761cb7b26e97fbd56",247094),
+			UNK_LANG,
+			kPlatformWindows,
+			ADGF_NO_FLAGS
+		},
+		kGameTypeArchibald,
+		kFeatures640,
+		"intro2.stk",
+		0
+	},
 	{ // Supplied by gamin in the forums
 		{
 			"urban",
@@ -2090,8 +2471,23 @@
 		},
 		kGameTypeUrban,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
+	{
+		{
+			"adibou4",
+			"",
+			AD_ENTRY1s("intro.stk", "a3c35d19b2d28ea261d96321d208cb5a", 6021466),
+			FR_FRA,
+			kPlatformPC,
+			ADGF_NO_FLAGS
+		},
+		kGameTypeAdibou4,
+		kFeatures640,
+		0,
+		0
+	},
 	{ AD_TABLE_END_MARKER, kGameTypeNone, kFeaturesNone, NULL }
 };
 
@@ -2107,7 +2503,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -2120,7 +2517,8 @@
 		},
 		kGameTypeGob1,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -2133,7 +2531,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -2146,7 +2545,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -2159,7 +2559,8 @@
 		},
 		kGameTypeGob2,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -2172,7 +2573,8 @@
 		},
 		kGameTypeBargon,
 		kFeaturesNone,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -2185,7 +2587,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -2198,7 +2601,8 @@
 		},
 		kGameTypeGob3,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -2211,7 +2615,8 @@
 		},
 		kGameTypeWoodruff,
 		kFeatures640,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -2224,7 +2629,8 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -2237,7 +2643,8 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesAdlib,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -2250,7 +2657,8 @@
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
-		"intro"
+		0,
+		0
 	},
 	{
 		{
@@ -2263,8 +2671,51 @@
 		},
 		kGameTypeUrban,
 		kFeaturesCD,
-		"intro"
-	}
+		0,
+		0
+	},
+	{
+		{
+			"fascination",
+			"unknown",
+			AD_ENTRY1(0, 0),
+			UNK_LANG,
+			kPlatformPC,
+			ADGF_NO_FLAGS
+		},
+		kGameTypeFascination,
+		kFeaturesNone,
+		"disk0.stk",
+		0
+	},
+	{
+		{
+			"geisha",
+			"unknown",
+			AD_ENTRY1(0, 0),
+			UNK_LANG,
+			kPlatformPC,
+			ADGF_NO_FLAGS
+		},
+		kGameTypeGeisha,
+		kFeaturesNone,
+		"disk1.stk",
+		"intro.tot"
+	},
+	{
+		{
+			"adibou4",
+			"",
+			AD_ENTRY1(0, 0),
+			UNK_LANG,
+			kPlatformPC,
+			ADGF_NO_FLAGS
+		},
+		kGameTypeAdibou4,
+		kFeatures640,
+		"adif41.stk",
+		0
+	},
 };
 
 static const ADFileBasedFallback fileBased[] = {
@@ -2282,6 +2733,9 @@
 	{ &fallbackDescs[10], { "intro.stk", "commun1.itk", "musmac1.mid", 0 } },
 	{ &fallbackDescs[11], { "intro.stk", "commun1.itk", "lost.lic", 0 } },
 	{ &fallbackDescs[12], { "intro.stk", "cd1.itk", "objet1.itk", 0 } },
+	{ &fallbackDescs[13], { "disk0.stk", "disk1.stk", "disk2.stk", "disk3.stk", 0 } },
+	{ &fallbackDescs[14], { "disk1.stk", "disk2.stk", "disk3.stk", 0 } },
+	{ &fallbackDescs[15], { "adif41.stk", "adim41.stk", 0 } },
 	{ 0, { 0 } }
 };
 
@@ -2350,22 +2804,21 @@
 void GobEngine::initGame(const GOBGameDescription *gd) {
 	if (gd->startTotBase == 0) {
 		_startTot = new char[10];
-		_startTot0 = new char[11];
 		strcpy(_startTot, "intro.tot");
-		strcpy(_startTot0, "intro0.tot");
 	} else {
-		_startTot = new char[strlen(gd->startTotBase) + 5];
-		_startTot0 = new char[strlen(gd->startTotBase) + 6];
+		_startTot = new char[strlen(gd->startTotBase) + 1];
 		strcpy(_startTot, gd->startTotBase);
-		strcpy(_startTot0, gd->startTotBase);
-		strcat(_startTot, ".tot");
-		strcat(_startTot0, "0.tot");
 	}
-
+	if (gd->startStkBase == 0) {
+		_startStk = new char[10];
+		strcpy(_startStk, "intro.stk");
+	} else {
+		_startStk = new char[strlen(gd->startStkBase) + 1];
+		strcpy(_startStk, gd->startStkBase);
+	}
 	_gameType = gd->gameType;
 	_features = gd->features;
 	_language = gd->desc.language;
 	_platform = gd->desc.platform;
 }
-
 } // End of namespace Gob

Modified: scummvm/trunk/engines/gob/draw.h
===================================================================
--- scummvm/trunk/engines/gob/draw.h	2009-04-21 21:37:03 UTC (rev 40058)
+++ scummvm/trunk/engines/gob/draw.h	2009-04-21 21:44:37 UTC (rev 40059)
@@ -211,6 +211,14 @@
 	virtual ~Draw_Bargon() {}
 };
 
+class Draw_Fascin: public Draw_v2 {
+public:
+	virtual void initScreen();
+
+	Draw_Fascin(GobEngine *vm);
+	virtual ~Draw_Fascin() {}
+};
+
 // Draw operations
 
 #define DRAW_BLITSURF	0

Added: scummvm/trunk/engines/gob/draw_fascin.cpp
===================================================================
--- scummvm/trunk/engines/gob/draw_fascin.cpp	                        (rev 0)
+++ scummvm/trunk/engines/gob/draw_fascin.cpp	2009-04-21 21:44:37 UTC (rev 40059)
@@ -0,0 +1,44 @@
+/* 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.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#include "gob/gob.h"
+#include "gob/draw.h"
+#include "gob/global.h"
+#include "gob/video.h"
+
+namespace Gob {
+
+Draw_Fascin::Draw_Fascin(GobEngine *vm) : Draw_v2(vm) {
+}
+
+void Draw_Fascin::initScreen(void) {
+	_vm->_global->_videoMode = 0x14;
+	_vm->_video->_surfWidth = 640;
+	_vm->_video->initPrimary(_vm->_global->_videoMode);
+
+	Draw_v2::initScreen();
+}
+
+} // End of namespace Gob


Property changes on: scummvm/trunk/engines/gob/draw_fascin.cpp
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + Date Rev Author URL Id
Added: svn:eol-style
   + native

Modified: scummvm/trunk/engines/gob/game.cpp
===================================================================
--- scummvm/trunk/engines/gob/game.cpp	2009-04-21 21:37:03 UTC (rev 40058)
+++ scummvm/trunk/engines/gob/game.cpp	2009-04-21 21:44:37 UTC (rev 40059)
@@ -557,6 +557,9 @@
 		_vm->_inter->_variables = 0;
 
 	strncpy0(_curTotFile, newTotFile, 9);
+//	if (_vm->getGameType() == kGameTypeGeisha)
+//		strcat(_curTotFile, ".0OT");
+//	else
 	strcat(_curTotFile, ".TOT");
 
 	if (_vm->_inter->_terminate != 0)

Modified: scummvm/trunk/engines/gob/game_v1.cpp
===================================================================
--- scummvm/trunk/engines/gob/game_v1.cpp	2009-04-21 21:37:03 UTC (rev 40058)
+++ scummvm/trunk/engines/gob/game_v1.cpp	2009-04-21 21:44:37 UTC (rev 40059)
@@ -71,7 +71,8 @@
 				_vm->_draw->_fontToSprite[i].height = -1;
 			}
 
-			if (_vm->getPlatform() == Common::kPlatformMacintosh)
+			if ((_vm->getPlatform() == Common::kPlatformMacintosh)||
+				  (_vm->getPlatform() == Common::kPlatformWindows))
 				_vm->_sound->adlibStop();
 			else
 				_vm->_sound->cdStop();

Modified: scummvm/trunk/engines/gob/gob.cpp
===================================================================
--- scummvm/trunk/engines/gob/gob.cpp	2009-04-21 21:37:03 UTC (rev 40058)
+++ scummvm/trunk/engines/gob/gob.cpp	2009-04-21 21:44:37 UTC (rev 40059)
@@ -106,8 +106,8 @@
 	// Stop all mixer streams (except for the permanent ones).
 	_vm->_mixer->stopAll();
 
+	delete[] _startStk;
 	delete[] _startTot;
-	delete[] _startTot0;
 }
 
 const char *GobEngine::getLangDesc(int16 language) const {
@@ -249,7 +249,7 @@
 	}
 	_global->_languageWanted = _global->_language;
 
-	_init->initGame(0);
+	_init->initGame();
 
 	return Common::kNoError;
 }
@@ -285,136 +285,154 @@
 	_sound = new Sound(this);
 
 	switch (_gameType) {
-		case kGameTypeGob1:
-			_init = new Init_v1(this);
-			_video = new Video_v1(this);
-			_inter = new Inter_v1(this);
-			_parse = new Parse_v1(this);
-			_mult = new Mult_v1(this);
-			_draw = new Draw_v1(this);
-			_game = new Game_v1(this);
-			_map = new Map_v1(this);
-			_goblin = new Goblin_v1(this);
-			_scenery = new Scenery_v1(this);
-			break;
+	case kGameTypeGeisha:
+	case kGameTypeGob1:
+		_init = new Init_v1(this);
+		_video = new Video_v1(this);
+		_inter = new Inter_v1(this);
+		_parse = new Parse_v1(this);
+		_mult = new Mult_v1(this);
+		_draw = new Draw_v1(this);
+		_game = new Game_v1(this);
+		_map = new Map_v1(this);
+		_goblin = new Goblin_v1(this);
+		_scenery = new Scenery_v1(this);
+		break;
 
-		case kGameTypeGob2:
-			_init = new Init_v2(this);
-			_video = new Video_v2(this);
-			_inter = new Inter_v2(this);
-			_parse = new Parse_v2(this);
-			_mult = new Mult_v2(this);
-			_draw = new Draw_v2(this);
-			_game = new Game_v2(this);
-			_map = new Map_v2(this);
-			_goblin = new Goblin_v2(this);
-			_scenery = new Scenery_v2(this);
-			_saveLoad = new SaveLoad_v2(this, _targetName.c_str());
-			break;
+	case kGameTypeFascination:
+		_init = new Init_v2(this);
+		_video = new Video_v2(this);
+		_inter = new Inter_Fascination(this);
+		_parse = new Parse_v1(this);
+		_mult = new Mult_v2(this);
+		_draw = new Draw_v2(this);
+		_game = new Game_v2(this);
+		_map = new Map_v2(this);
+		_goblin = new Goblin_v2(this);
+		_scenery = new Scenery_v2(this);
+		_saveLoad = new SaveLoad_v2(this, _targetName.c_str());
+		break;
 
-		case kGameTypeBargon:
-			_init = new Init_v2(this);
-			_video = new Video_v2(this);
-			_inter = new Inter_Bargon(this);
-			_parse = new Parse_v2(this);
-			_mult = new Mult_v2(this);
-			_draw = new Draw_Bargon(this);
-			_game = new Game_v2(this);
-			_map = new Map_v2(this);
-			_goblin = new Goblin_v2(this);
-			_scenery = new Scenery_v2(this);
-			_saveLoad = new SaveLoad_v2(this, _targetName.c_str());
-			break;
+	case kGameTypeGob2:
+		_init = new Init_v2(this);
+		_video = new Video_v2(this);
+		_inter = new Inter_v2(this);
+		_parse = new Parse_v2(this);
+		_mult = new Mult_v2(this);
+		_draw = new Draw_v2(this);
+		_game = new Game_v2(this);
+		_map = new Map_v2(this);
+		_goblin = new Goblin_v2(this);
+		_scenery = new Scenery_v2(this);
+		_saveLoad = new SaveLoad_v2(this, _targetName.c_str());
+		break;
 
-		case kGameTypeWeen:
-			_init = new Init_v2(this);
-			_video = new Video_v2(this);
-			_inter = new Inter_v2(this);
-			_parse = new Parse_v2(this);
-			_mult = new Mult_v2(this);
-			_draw = new Draw_v2(this);
-			_game = new Game_v2(this);
-			_map = new Map_v2(this);
-			_goblin = new Goblin_v2(this);
-			_scenery = new Scenery_v2(this);
-			_saveLoad = new SaveLoad_v2(this, _targetName.c_str());
-			break;
+	case kGameTypeBargon:
+		_init = new Init_v2(this);
+		_video = new Video_v2(this);
+		_inter = new Inter_Bargon(this);
+		_parse = new Parse_v2(this);
+		_mult = new Mult_v2(this);
+		_draw = new Draw_Bargon(this);
+		_game = new Game_v2(this);
+		_map = new Map_v2(this);
+		_goblin = new Goblin_v2(this);
+		_scenery = new Scenery_v2(this);
+		_saveLoad = new SaveLoad_v2(this, _targetName.c_str());
+		break;
 
-		case kGameTypeGob3:
-		case kGameTypeInca2:
-			_init = new Init_v3(this);
-			_video = new Video_v2(this);
-			_inter = new Inter_v3(this);
-			_parse = new Parse_v2(this);
-			_mult = new Mult_v2(this);
-			_draw = new Draw_v2(this);
-			_game = new Game_v2(this);
-			_map = new Map_v2(this);
-			_goblin = new Goblin_v3(this);
-			_scenery = new Scenery_v2(this);
-			_saveLoad = new SaveLoad_v3(this, _targetName.c_str());
-			break;
+	case kGameTypeWeen:
+		_init = new Init_v2(this);
+		_video = new Video_v2(this);
+		_inter = new Inter_v2(this);
+		_parse = new Parse_v2(this);
+		_mult = new Mult_v2(this);
+		_draw = new Draw_v2(this);
+		_game = new Game_v2(this);
+		_map = new Map_v2(this);
+		_goblin = new Goblin_v2(this);
+		_scenery = new Scenery_v2(this);
+		_saveLoad = new SaveLoad_v2(this, _targetName.c_str());
+		break;
 
-		case kGameTypeLostInTime:
-			_init = new Init_v3(this);
-			_video = new Video_v2(this);
-			_inter = new Inter_v3(this);
-			_parse = new Parse_v2(this);
-			_mult = new Mult_v2(this);
-			_draw = new Draw_v2(this);
-			_game = new Game_v2(this);
-			_map = new Map_v2(this);
-			_goblin = new Goblin_v3(this);
-			_scenery = new Scenery_v2(this);
-			_saveLoad = new SaveLoad_v3(this, _targetName.c_str(), 4768, 0, 50);
-			break;
+	case kGameTypeGob3:
+	case kGameTypeInca2:
+		_init = new Init_v3(this);
+		_video = new Video_v2(this);
+		_inter = new Inter_v3(this);
+		_parse = new Parse_v2(this);
+		_mult = new Mult_v2(this);
+		_draw = new Draw_v2(this);
+		_game = new Game_v2(this);
+		_map = new Map_v2(this);
+		_goblin = new Goblin_v3(this);
+		_scenery = new Scenery_v2(this);
+		_saveLoad = new SaveLoad_v3(this, _targetName.c_str());
+		break;
 
-		case kGameTypeWoodruff:
-			_init = new Init_v3(this);
-			_video = new Video_v2(this);
-			_inter = new Inter_v4(this);
-			_parse = new Parse_v2(this);
-			_mult = new Mult_v2(this);
-			_draw = new Draw_v2(this);
-			_game = new Game_v2(this);
-			_map = new Map_v4(this);
-			_goblin = new Goblin_v4(this);
-			_scenery = new Scenery_v2(this);
-			_saveLoad = new SaveLoad_v4(this, _targetName.c_str());
-			break;
+	case kGameTypeLostInTime:
+		_init = new Init_v3(this);
+		_video = new Video_v2(this);
+		_inter = new Inter_v3(this);
+		_parse = new Parse_v2(this);
+		_mult = new Mult_v2(this);
+		_draw = new Draw_v2(this);
+		_game = new Game_v2(this);
+		_map = new Map_v2(this);
+		_goblin = new Goblin_v3(this);
+		_scenery = new Scenery_v2(this);
+		_saveLoad = new SaveLoad_v3(this, _targetName.c_str(), 4768, 0, 50);
+		break;
 
-		case kGameTypeDynasty:
-			_init = new Init_v3(this);
-			_video = new Video_v2(this);
-			_inter = new Inter_v5(this);
-			_parse = new Parse_v2(this);
-			_mult = new Mult_v2(this);
-			_draw = new Draw_v2(this);
-			_game = new Game_v2(this);
-			_map = new Map_v4(this);
-			_goblin = new Goblin_v4(this);
-			_scenery = new Scenery_v2(this);
-			_saveLoad = new SaveLoad_v4(this, _targetName.c_str());
-			break;
+	case kGameTypeWoodruff:
+		_init = new Init_v3(this);
+		_video = new Video_v2(this);
+		_inter = new Inter_v4(this);
+		_parse = new Parse_v2(this);
+		_mult = new Mult_v2(this);
+		_draw = new Draw_v2(this);
+		_game = new Game_v2(this);
+		_map = new Map_v4(this);
+		_goblin = new Goblin_v4(this);
+		_scenery = new Scenery_v2(this);
+		_saveLoad = new SaveLoad_v4(this, _targetName.c_str());
+		break;
 
-		case kGameTypeUrban:
-			_init = new Init_v3(this);
-			_video = new Video_v6(this);
-			_inter = new Inter_v6(this);
-			_parse = new Parse_v2(this);
-			_mult = new Mult_v2(this);
-			_draw = new Draw_v2(this);
-			_game = new Game_v6(this);
-			_map = new Map_v4(this);
-			_goblin = new Goblin_v4(this);
-			_scenery = new Scenery_v2(this);
-			_saveLoad = new SaveLoad_v6(this, _targetName.c_str());
-			break;
+	case kGameTypeDynasty:
+		_init = new Init_v3(this);
+		_video = new Video_v2(this);
+		_inter = new Inter_v5(this);
+		_parse = new Parse_v2(this);
+		_mult = new Mult_v2(this);
+		_draw = new Draw_v2(this);
+		_game = new Game_v2(this);
+		_map = new Map_v4(this);
+		_goblin = new Goblin_v4(this);
+		_scenery = new Scenery_v2(this);
+		_saveLoad = new SaveLoad_v4(this, _targetName.c_str());
+		break;
 
-		default:
-			deinitGameParts();
-			return false;
-			break;
+	case kGameTypeArchibald:
+	case kGameTypeSpirou:
+	case kGameTypeAdibou4:
+	case kGameTypeUrban:
+		_init = new Init_v3(this);
+		_video = new Video_v6(this);
+		_inter = new Inter_v6(this);
+		_parse = new Parse_v2(this);
+		_mult = new Mult_v2(this);
+		_draw = new Draw_v2(this);
+		_game = new Game_v6(this);
+		_map = new Map_v4(this);
+		_goblin = new Goblin_v4(this);
+		_scenery = new Scenery_v2(this);
+		_saveLoad = new SaveLoad_v6(this, _targetName.c_str());
+		break;
+
+	default:
+		deinitGameParts();
+		return false;
+		break;
 	}
 
 	if (is640()) {

Modified: scummvm/trunk/engines/gob/gob.h
===================================================================
--- scummvm/trunk/engines/gob/gob.h	2009-04-21 21:37:03 UTC (rev 40058)
+++ scummvm/trunk/engines/gob/gob.h	2009-04-21 21:44:37 UTC (rev 40059)
@@ -95,7 +95,12 @@
 	kGameTypeLostInTime,
 	kGameTypeInca2,
 	kGameTypeDynasty,
-	kGameTypeUrban
+	kGameTypeUrban,
+	kGameTypeArchibald,
+	kGameTypeSpirou,
+	kGameTypeFascination,
+	kGameTypeGeisha,
+	kGameTypeAdibou4
 };
 
 enum Features {
@@ -208,8 +213,8 @@
 	uint16 _height;
 	uint8 _mode;
 
+	char *_startStk;
 	char *_startTot;
-	char *_startTot0;
 	bool _copyProtection;
 	bool _noMusic;
 

Modified: scummvm/trunk/engines/gob/init.cpp
===================================================================
--- scummvm/trunk/engines/gob/init.cpp	2009-04-21 21:37:03 UTC (rev 40058)
+++ scummvm/trunk/engines/gob/init.cpp	2009-04-21 21:44:37 UTC (rev 40059)
@@ -55,7 +55,7 @@
 	_vm->_dataIO->closeDataFile();
 }
 
-void Init::initGame(const char *totName) {
+void Init::initGame() {
 	int16 handle2;
 	int16 handle;
 	int16 imdHandle;
@@ -66,19 +66,10 @@
 
 	initVideo();
 
-	// The Lost In Time demo uses different file prefix
-	if (_vm->getGameType() == kGameTypeLostInTime) {
-		handle2 = _vm->_dataIO->openData("demo.stk");
-		if (handle2 >= 0) {
-			_vm->_dataIO->closeData(handle2);
-			_vm->_dataIO->openDataFile("demo.stk");
-		}
-	}
-
-	handle2 = _vm->_dataIO->openData("intro.stk");
+	handle2 = _vm->_dataIO->openData(_vm->_startStk);
 	if (handle2 >= 0) {
 		_vm->_dataIO->closeData(handle2);
-		_vm->_dataIO->openDataFile("intro.stk");
+		_vm->_dataIO->openDataFile(_vm->_startStk);
 	}
 
 	_vm->_util->initInput();
@@ -142,12 +133,7 @@
 		delete[] infBuf;
 	}
 
-	if (totName) {
-		strncpy0(buffer, totName, 15);
-		strcat(buffer, ".tot");
-	} else
-		strncpy0(buffer, _vm->_startTot, 19);
-
+	strcpy(buffer, _vm->_startTot);
 	handle = _vm->_dataIO->openData(buffer);
 
 	if (handle >= 0) {

Modified: scummvm/trunk/engines/gob/init.h
===================================================================
--- scummvm/trunk/engines/gob/init.h	2009-04-21 21:37:03 UTC (rev 40058)
+++ scummvm/trunk/engines/gob/init.h	2009-04-21 21:44:37 UTC (rev 40059)
@@ -32,7 +32,7 @@
 
 class Init {
 public:
-	void initGame(const char *totFile);
+	void initGame();
 
 	virtual void initVideo() = 0;
 

Modified: scummvm/trunk/engines/gob/init_v2.cpp
===================================================================
--- scummvm/trunk/engines/gob/init_v2.cpp	2009-04-21 21:37:03 UTC (rev 40058)
+++ scummvm/trunk/engines/gob/init_v2.cpp	2009-04-21 21:44:37 UTC (rev 40059)
@@ -51,7 +51,8 @@
 	_vm->_global->_colorCount = 16;
 	if (!_vm->isEGA() &&
 	   ((_vm->getPlatform() == Common::kPlatformPC) ||
-	     (_vm->getPlatform() == Common::kPlatformMacintosh)) &&
+	     (_vm->getPlatform() == Common::kPlatformMacintosh) ||
+	     (_vm->getPlatform() == Common::kPlatformWindows)) &&
 	    ((_vm->_global->_videoMode == 0x13) ||
 	     (_vm->_global->_videoMode == 0x14)))
 		_vm->_global->_colorCount = 256;

Modified: scummvm/trunk/engines/gob/inter.cpp
===================================================================
--- scummvm/trunk/engines/gob/inter.cpp	2009-04-21 21:37:03 UTC (rev 40058)
+++ scummvm/trunk/engines/gob/inter.cpp	2009-04-21 21:44:37 UTC (rev 40059)
@@ -231,10 +231,12 @@
 			break;
 
 		// WORKAROUND:
-		// The EGA and Mac versions of gob1 doesn't add a delay after showing
-		// images between levels. We manually add it here.
+		// The EGA, Mac and Windows versions of gob1 doesn't add a delay after
+		// showing images between levels. We manually add it here.
 		if ((_vm->getGameType() == kGameTypeGob1) &&
-		   (_vm->isEGA() || (_vm->getPlatform() == Common::kPlatformMacintosh))) {
+		   (  _vm->isEGA() || 
+		     (_vm->getPlatform() == Common::kPlatformMacintosh) ||
+		     (_vm->getPlatform() == Common::kPlatformWindows))) {
 
 			int addr = _vm->_global->_inter_execPtr-_vm->_game->_totFileData;
 

Modified: scummvm/trunk/engines/gob/inter.h
===================================================================
--- scummvm/trunk/engines/gob/inter.h	2009-04-21 21:37:03 UTC (rev 40058)
+++ scummvm/trunk/engines/gob/inter.h	2009-04-21 21:44:37 UTC (rev 40059)
@@ -451,6 +451,58 @@
 	void oBargon_intro9(OpGobParams &params);
 };
 
+class Inter_Fascination : public Inter_v2 {
+public:
+	Inter_Fascination(GobEngine *vm);
+	virtual ~Inter_Fascination() {}
+
+protected:
+	typedef void (Inter_Fascination::*OpcodeDrawProcFascination)();
+	typedef bool (Inter_Fascination::*OpcodeFuncProcFascination)(OpFuncParams &);
+	typedef void (Inter_Fascination::*OpcodeGoblinProcFascination)(OpGobParams &);
+	struct OpcodeDrawEntryFascination {
+		OpcodeDrawProcFascination proc;
+		const char *desc;
+	};
+	struct OpcodeFuncEntryFascination {
+		OpcodeFuncProcFascination proc;
+		const char *desc;
+	};
+	struct OpcodeGoblinEntryFascination {
+		OpcodeGoblinProcFascination proc;
+		const char *desc;
+	};
+	const OpcodeDrawEntryFascination *_opcodesDrawFascination;
+	const OpcodeFuncEntryFascination *_opcodesFuncFascination;
+	const OpcodeGoblinEntryFascination *_opcodesGoblinFascination;
+	static const int _goblinFuncLookUp[][2];
+
+	virtual void setupOpcodes();
+	virtual void executeDrawOpcode(byte i);
+	virtual bool executeFuncOpcode(byte i, byte j, OpFuncParams &params);
+	virtual void executeGoblinOpcode(int i, OpGobParams &params);
+	virtual const char *getOpcodeDrawDesc(byte i);
+	virtual const char *getOpcodeFuncDesc(byte i, byte j);
+	virtual const char *getOpcodeGoblinDesc(int i);
+
+	void oFascin_playProtracker(OpGobParams &params);
+
+	void oFascin_geUnknown2(OpGobParams &params);
+	void oFascin_geUnknown3(OpGobParams &params);
+	void oFascin_geUnknown4(OpGobParams &params);
+	void oFascin_geUnknown5(OpGobParams &params);
+	void oFascin_geUnknown6(OpGobParams &params);
+	void oFascin_geUnknown10(OpGobParams &params);
+	bool oFascin_feUnknown4(OpFuncParams &params);
+	void oFascin_cdUnknown3();
+	void oFascin_cdUnknown4();
+	void oFascin_cdUnknown5();
+	void oFascin_cdUnknown6();
+	void oFascin_cdUnknown10();
+	void oFascin_cdUnknown11();
+
+};
+
 class Inter_v3 : public Inter_v2 {
 public:
 	Inter_v3(GobEngine *vm);

Added: scummvm/trunk/engines/gob/inter_fascin.cpp
===================================================================
--- scummvm/trunk/engines/gob/inter_fascin.cpp	                        (rev 0)
+++ scummvm/trunk/engines/gob/inter_fascin.cpp	2009-04-21 21:44:37 UTC (rev 40059)
@@ -0,0 +1,804 @@
+/* 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.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#include "common/endian.h"
+
+#include "gob/gob.h"
+#include "gob/inter.h"
+#include "gob/global.h"
+#include "gob/util.h"
+#include "gob/dataio.h"
+#include "gob/draw.h"
+#include "gob/parse.h"
+#include "gob/game.h"
+#include "gob/palanim.h"
+#include "gob/video.h"
+#include "gob/videoplayer.h"
+#include "gob/sound/sound.h"
+
+namespace Gob {
+
+#define OPCODE(x) _OPCODE(Inter_Fascination, x)
+
+const int Inter_Fascination::_goblinFuncLookUp[][2] = {
+	{1, 0},
+	{2, 1},
+	{3, 2},
+	{4, 3},
+	{5, 4},
+	{6, 5},
+	{7, 6},
+	{8, 7},
+	{9, 8},
+	{10, 9},
+	{11, 10},
+	{12, 11},
+	{13, 12},
+	{14, 13},
+	{15, 14},
+	{16, 15},
+	{21, 16},
+	{22, 17},
+	{23, 18},
+	{24, 19},
+	{25, 20},
+	{26, 21},
+	{27, 22},
+	{28, 23},
+	{29, 24},
+	{30, 25},
+	{32, 26},
+	{33, 27},
+	{34, 28},
+	{35, 29},
+	{36, 30},
+	{37, 31},
+	{40, 32},
+	{41, 33},
+	{42, 34},
+	{43, 35},
+	{44, 36},
+	{50, 37},
+	{52, 38},
+	{53, 39},
+	{100, 40}, 
+	{152, 41}, 
+	{200, 42}, 
+	{201, 43}, 
+	{202, 44}, 
+	{203, 45}, 
+	{204, 46}, 
+	{250, 47}, 
+	{251, 48}, 
+	{252, 49}, 
+	{500, 50}, 
+	{502, 51}, 
+	{503, 52}, 
+	{600, 53}, 
+	{601, 54}, 
+	{602, 55}, 
+	{603, 56}, 
+	{604, 57}, 
+	{605, 58},
+	{1000, 59}, 
+	{1001, 60}, 
+	{1002, 61}, 
+	{1003, 62}, 
+	{1004, 63}, 
+	{1005, 64}, 
+	{1006, 65}, 
+	{1008, 66}, 
+	{1009, 67}, 
+	{1010, 68}, 
+	{1011, 69}, 
+	{1015, 70},
+	{2005, 71}
+};
+
+Inter_Fascination::Inter_Fascination(GobEngine *vm) : Inter_v2(vm) {
+	setupOpcodes();
+}
+
+void Inter_Fascination::setupOpcodes() {
+	static const OpcodeDrawEntryFascination opcodesDraw[256] = {
+		/* 00 */
+		OPCODE(o1_loadMult),
+		OPCODE(o2_playMult),
+		OPCODE(o1_freeMultKeys),
+		OPCODE(oFascin_cdUnknown3),
+		/* 04 */
+		OPCODE(oFascin_cdUnknown4),
+		OPCODE(oFascin_cdUnknown5),
+		OPCODE(oFascin_cdUnknown6),
+		OPCODE(o1_initCursor),
+		/* 08 */
+		OPCODE(o1_initCursorAnim),
+		OPCODE(o1_clearCursorAnim),
+		OPCODE(oFascin_cdUnknown10),
+		OPCODE(oFascin_cdUnknown11),
+		/* 0C */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 10 */
+		OPCODE(o1_loadAnim),
+		OPCODE(o1_freeAnim),
+		OPCODE(o1_updateAnim),
+		OPCODE(o2_multSub),
+		/* 14 */
+		OPCODE(o2_initMult),
+		OPCODE(o1_freeMult),
+		OPCODE(o1_animate),
+		OPCODE(o2_loadMultObject),
+		/* 18 */
+		OPCODE(o1_getAnimLayerInfo),
+		OPCODE(o1_getObjAnimSize),
+		OPCODE(o1_loadStatic),
+		OPCODE(o1_freeStatic),
+		/* 1C */
+		OPCODE(o2_renderStatic),
+		OPCODE(o2_loadCurLayer),
+		{NULL, ""},
+		{NULL, ""},
+		/* 20 */
+		OPCODE(o2_playCDTrack),
+		OPCODE(o2_waitCDTrackEnd),
+		OPCODE(o2_stopCD),
+		OPCODE(o2_readLIC),
+		/* 24 */
+		OPCODE(o2_freeLIC),
+		OPCODE(o2_getCDTrackPos),
+		{NULL, ""},
+		{NULL, ""},
+		/* 28 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 2C */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 30 */
+		OPCODE(o2_loadFontToSprite),
+		OPCODE(o1_freeFontToSprite),
+		{NULL, ""},
+		{NULL, ""},
+		/* 34 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 38 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 3C */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 40 */
+		OPCODE(o2_totSub),
+		OPCODE(o2_switchTotSub),
+		OPCODE(o2_pushVars),
+		OPCODE(o2_popVars),
+		/* 44 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 48 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 4C */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 50 */
+		{NULL, ""},//OPCODE(o2_loadMapObjects),
+		{NULL, ""},//OPCODE(o2_freeGoblins),
+		{NULL, ""},//OPCODE(o2_moveGoblin),
+		{NULL, ""},//OPCODE(o2_writeGoblinPos),
+		/* 54 */
+		{NULL, ""},//OPCODE(o2_stopGoblin),
+		{NULL, ""},//OPCODE(o2_setGoblinState),
+		{NULL, ""},//OPCODE(o2_placeGoblin),
+		{NULL, ""},
+		/* 58 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 5C */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 60 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 64 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 68 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 6C */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 70 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 74 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 78 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 7C */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 80 */
+		{NULL, ""},//OPCODE(o2_initScreen),
+		{NULL, ""},//OPCODE(o2_scroll),
+		{NULL, ""},//OPCODE(o2_setScrollOffset),
+		{NULL, ""},//OPCODE(o2_playImd),
+		/* 84 */
+		{NULL, ""},//OPCODE(o2_getImdInfo),
+		{NULL, ""},//OPCODE(o2_openItk),
+		{NULL, ""},//OPCODE(o2_closeItk),
+		{NULL, ""},//OPCODE(o2_setImdFrontSurf),
+		/* 88 */
+		{NULL, ""},//OPCODE(o2_resetImdFrontSurf),
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 8C */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 90 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 94 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 98 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 9C */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* A0 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* A4 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* A8 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* AC */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* B0 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* B4 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* B8 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* BC */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* C0 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* C4 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* C8 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* CC */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* D0 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* D4 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* D8 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* DC */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* E0 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* E4 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* E8 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* EC */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* F0 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* F4 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* F8 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* FC */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""}
+	};
+
+	static const OpcodeFuncEntryFascination opcodesFunc[80] = {
+		/* 00 */
+		OPCODE(o1_callSub),
+		OPCODE(o1_callSub),
+		OPCODE(o1_printTotText),
+		OPCODE(o1_loadCursor),
+		/* 04 */
+		{NULL, ""},
+		OPCODE(o1_switch),
+		OPCODE(o1_repeatUntil),
+		OPCODE(o1_whileDo),
+		/* 08 */
+		OPCODE(o1_if),
+		OPCODE(o2_evaluateStore),
+		OPCODE(o1_loadSpriteToPos),
+		{NULL, ""},
+		/* 0C */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 10 */
+		{NULL, ""},
+		OPCODE(o2_printText),
+		OPCODE(o1_loadTot),
+		OPCODE(o1_palLoad),
+		/* 14 */
+		OPCODE(o1_keyFunc),
+		OPCODE(o1_capturePush),
+		OPCODE(o1_capturePop),
+		OPCODE(o2_animPalInit),
+		/* 18 */
+		OPCODE(o2_addCollision),
+		OPCODE(o2_freeCollision),
+		{NULL, ""},
+		{NULL, ""},
+		/* 1C */
+		{NULL, ""},
+		{NULL, ""},
+		OPCODE(o1_drawOperations),
+		OPCODE(o1_setcmdCount),
+		/* 20 */
+		OPCODE(o1_return),
+		OPCODE(o1_renewTimeInVars),
+		OPCODE(o1_speakerOn),
+		OPCODE(o1_speakerOff),
+		/* 24 */
+		OPCODE(o1_putPixel),
+		OPCODE(o2_goblinFunc),
+		OPCODE(o1_createSprite),
+		OPCODE(o1_freeSprite),
+		/* 28 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 2C */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 30 */
+		OPCODE(o1_returnTo),
+		OPCODE(o1_loadSpriteContent),
+		OPCODE(o1_copySprite),
+		OPCODE(o1_fillRect),
+		/* 34 */
+		OPCODE(o1_drawLine),
+		OPCODE(o1_strToLong),
+		OPCODE(o1_invalidate),
+		OPCODE(o1_setBackDelta),
+		/* 38 */
+		OPCODE(o1_playSound),
+		OPCODE(o2_stopSound),
+		OPCODE(o2_loadSound),
+		OPCODE(o1_freeSoundSlot),
+		/* 3C */
+		OPCODE(o1_waitEndPlay),
+		{NULL, " "},//OPCODE(o1_playComposition),
+		OPCODE(o2_getFreeMem),
+		OPCODE(o2_checkData),
+		/* 40 */
+		{NULL, ""},
+		OPCODE(o1_prepareStr),
+		OPCODE(o1_insertStr),
+		OPCODE(o1_cutStr),
+		/* 44 */
+		OPCODE(o1_strstr),
+		OPCODE(o1_istrlen),
+		OPCODE(o1_setMousePos),
+		OPCODE(o1_setFrameRate),
+		/* 48 */
+		OPCODE(o1_animatePalette),
+		OPCODE(o1_animateCursor),
+		OPCODE(o1_blitCursor),
+		OPCODE(o1_loadFont),
+		/* 4C */
+		OPCODE(o1_freeFont),
+		OPCODE(o2_readData),
+		OPCODE(o2_writeData),
+		OPCODE(o1_manageDataFile),
+	};
+
+	static const OpcodeGoblinEntryFascination opcodesGoblin[71] = {
+		/* 00 */
+		{NULL, ""},//OPCODE(o2_loadInfogramesIns),
+		{NULL, ""},//OPCODE(o2_startInfogrames),
+		OPCODE(oFascin_geUnknown2),//OPCODE(o2_stopInfogrames),
+		OPCODE(oFascin_geUnknown3), // OPCODE(o2_startInfogrames),
+		/* 04 */
+		OPCODE(oFascin_geUnknown4),
+		OPCODE(oFascin_geUnknown5),//OPCODE(o2_playProtracker), //OPCODE(o2_geUnknown5),
+		OPCODE(oFascin_geUnknown6),//OPCODE(o2_stopProtracker), //OPCODE(o2_geUnknown6),
+		{NULL, ""},
+		/* 08 */
+		{NULL, ""},
+		OPCODE(oFascin_geUnknown10), // OPCODE(o2_playInfogrames),
+		{NULL, ""},
+		{NULL, ""},
+		/* 0C */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 10 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 14 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 18 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 1C */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 20 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 24 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""}, //OPCODE(o2_handleGoblins),
+		/* 28 */
+		{NULL, ""}, //OPCODE(o2_playProtracker),
+		{NULL, ""}, //OPCODE(o2_stopProtracker),
+		{NULL, ""},
+		{NULL, ""},
+		/* 2C */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 30 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 34 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 38 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 3C */
+		OPCODE(oFascin_playProtracker),//{NULL, ""},
+		OPCODE(o2_stopProtracker),//{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 40 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+		/* 44 */
+		{NULL, ""},
+		{NULL, ""},
+		{NULL, ""},
+	};
+
+	_opcodesDrawFascination = opcodesDraw;
+	_opcodesFuncFascination = opcodesFunc;
+	_opcodesGoblinFascination = opcodesGoblin;	
+}
+
+void Inter_Fascination::executeDrawOpcode(byte i) {
+	debugC(1, kDebugDrawOp, "opcodeDraw %d [0x%X] (%s)",
+			i, i, getOpcodeDrawDesc(i));
+
+	OpcodeDrawProcFascination op = _opcodesDrawFascination[i].proc;
+
+	if (op == NULL)
+		warning("Not yet implemented Fascination opcodeDraw: %d", i);
+	else
+		(this->*op) ();
+}
+
+void Inter_Fascination::oFascin_geUnknown2(OpGobParams &params) {
+	warning("Fascination Unknown GE Function 2\n");
+}
+
+void Inter_Fascination::oFascin_geUnknown3(OpGobParams &params) {
+	warning("Fascination Unknown GE Function 3\n");
+}
+
+void Inter_Fascination::oFascin_geUnknown4(OpGobParams &params) {
+	warning("Fascination Unknown GE Function 4\n");
+}
+
+void Inter_Fascination::oFascin_geUnknown5(OpGobParams &params) {
+	warning("Fascination Unknown GE Function 5\n");
+}
+
+void Inter_Fascination::oFascin_geUnknown6(OpGobParams &params) {
+	warning("Fascination Unknown GE Function 6\n");
+}
+
+void Inter_Fascination::oFascin_geUnknown10(OpGobParams &params) {
+	warning("Fascination Unknown GE Function 10\n");
+}
+
+bool Inter_Fascination::oFascin_feUnknown4(OpFuncParams &params) {
+	warning("Fascination Unknown FE Function 4\n");
+	return true;
+}
+
+void Inter_Fascination::oFascin_cdUnknown3() {
+	uint16 resVar, resVar2;
+	int16 retVal1, retVal2, retVal3, retVal4, retVal5, retVal6, retVal7;
+
+	warning("Fascination Unknown CD Function 3 (sub_EDBB)\n");
+
+	resVar = (uint16) load16();
+	resVar2 = (uint16) load16();
+	retVal1 = _vm->_parse->parseVarIndex();
+	retVal2 = _vm->_parse->parseVarIndex();
+	retVal3 = _vm->_parse->parseVarIndex();
+	retVal4 = _vm->_parse->parseVarIndex();
+	retVal5 = _vm->_parse->parseVarIndex();
+	retVal6 = _vm->_parse->parseVarIndex();
+	retVal7 = _vm->_parse->parseVarIndex();
+	warning ("Input word_25196-%d word_25194-%d\n",resVar, resVar2);
+	warning ("Fetched variables word_25198-%d word_2519A-%d word_2519C-%d word_2519E-%d word_251A0-%d word_251A2-%d word_251A4-%d\n", retVal1, retVal2, retVal3, retVal4, retVal5, retVal6, retVal7);
+}
+
+void Inter_Fascination::oFascin_cdUnknown4() {
+	warning("Fascination Unknown CD Function 4 (sub_EE04)\n");
+}
+
+void Inter_Fascination::oFascin_cdUnknown5() {
+	warning("Fascination Unknown CD Function 5 (sub_EE29)\n");
+}
+
+void Inter_Fascination::oFascin_cdUnknown6() {
+	int16 retVal1,expr;
+	warning("Fascination Unknown CD Function 6 (sub_EE46)\n");
+	evalExpr(&expr);
+	retVal1 = _vm->_parse->parseVarIndex();
+	warning ("evalExpr : %d Variable index %d\n",expr, retVal1);
+}
+
+void Inter_Fascination::oFascin_cdUnknown10() {
+	int16 expr;
+	warning("Fascination Unknown CD Function 10 (loc_66E0)\n");	
+	evalExpr(&expr);
+    printf("_draw_renderFlags <- %d\n",expr);
+	_vm->_draw->_renderFlags = expr;
+}
+
+void Inter_Fascination::oFascin_cdUnknown11() {
+	int16 expr;
+	warning("Fascination Unknown CD Function 11 (loc_66E6)\n");	
+	evalExpr(&expr);
+    printf("Word_23906 <- %d\n",expr);
+}
+
+bool Inter_Fascination::executeFuncOpcode(byte i, byte j, OpFuncParams &params) {
+	debugC(1, kDebugFuncOp, "opcodeFunc %d.%d [0x%X.0x%X] (%s)",
+			i, j, i, j, getOpcodeFuncDesc(i, j));
+
+	if ((i > 4) || (j > 16)) {
+		warning("Invalid opcodeFunc: %d.%d", i, j);
+		return false;
+	}
+
+	OpcodeFuncProcFascination op = _opcodesFuncFascination[i*16 + j].proc;
+
+	if (op == NULL)
+		warning("unimplemented opcodeFunc: %d.%d", i, j);
+	else
+		return (this->*op) (params);
+
+	return false;
+}
+
+void Inter_Fascination::executeGoblinOpcode(int i, OpGobParams &params) {
+	debugC(1, kDebugGobOp, "opcodeGoblin %d [0x%X] (%s)",
+			i, i, getOpcodeGoblinDesc(i));
+
+	OpcodeGoblinProcFascination op = NULL;
+
+	for (int j = 0; j < ARRAYSIZE(_goblinFuncLookUp); j++)
+		if (_goblinFuncLookUp[j][0] == i) {
+			op = _opcodesGoblinFascination[_goblinFuncLookUp[j][1]].proc;
+			break;
+		}
+
+	if (op == NULL) {
+		int16 val;
+
+		_vm->_global->_inter_execPtr -= 2;
+		val = load16();
+		_vm->_global->_inter_execPtr += val << 1;
+		warning("unimplemented opcodeGob: %d", i);
+	} else
+		(this->*op) (params);
+}
+
+const char *Inter_Fascination::getOpcodeDrawDesc(byte i) {
+	return _opcodesDrawFascination[i].desc;
+}
+
+const char *Inter_Fascination::getOpcodeFuncDesc(byte i, byte j) {
+	if ((i > 4) || (j > 15))
+		return "";
+
+	return _opcodesFuncFascination[i*16 + j].desc;
+}
+
+const char *Inter_Fascination::getOpcodeGoblinDesc(int i) {
+	for (int j = 0; j < ARRAYSIZE(_goblinFuncLookUp); j++)
+		if (_goblinFuncLookUp[j][0] == i)
+			return _opcodesGoblinFascination[_goblinFuncLookUp[j][1]].desc;
+	warning("Error in getOpcodeGoblinDesc %d\n",i);	
+	return "";
+}
+
+void Inter_Fascination::oFascin_playProtracker(OpGobParams &params) {
+	_vm->_sound->protrackerPlay("mod.extasy");
+}
+
+} // End of namespace Gob


Property changes on: scummvm/trunk/engines/gob/inter_fascin.cpp
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + Date Rev Author URL Id
Added: svn:eol-style
   + native

Modified: scummvm/trunk/engines/gob/inter_v1.cpp
===================================================================
--- scummvm/trunk/engines/gob/inter_v1.cpp	2009-04-21 21:37:03 UTC (rev 40058)
+++ scummvm/trunk/engines/gob/inter_v1.cpp	2009-04-21 21:44:37 UTC (rev 40059)
@@ -1142,7 +1142,7 @@
 	}
 	// Skipping the copy protection screen in Gobliins 2
 	if (!_vm->_copyProtection && (_vm->getGameType() == kGameTypeGob2) && (offset == 1746)
-			&& !scumm_stricmp(_vm->_game->_curTotFile, _vm->_startTot0)) {
+			&& !scumm_stricmp(_vm->_game->_curTotFile, "intro0.tot")) {
 		debugC(2, kDebugGameFlow, "Skipping copy protection screen");
 		return false;
 	}
@@ -1436,7 +1436,11 @@
 		buf[size] = 0;
 	}
 
+//	if (_vm->getGameType() == kGameTypeGeisha)
+//		strcat(buf, ".0ot");
+//	else
 	strcat(buf, ".tot");
+
 	if (_terminate != 2)
 		_terminate = 1;
 	strcpy(_vm->_game->_totToLoad, buf);

Modified: scummvm/trunk/engines/gob/module.mk
===================================================================
--- scummvm/trunk/engines/gob/module.mk	2009-04-21 21:37:03 UTC (rev 40058)
+++ scummvm/trunk/engines/gob/module.mk	2009-04-21 21:44:37 UTC (rev 40059)
@@ -7,6 +7,7 @@
 	draw_v1.o \
 	draw_v2.o \
 	draw_bargon.o \
+	draw_fascin.o \
 	driver_vga.o \
 	game.o \
 	game_v1.o \
@@ -30,6 +31,7 @@
 	inter_v1.o \
 	inter_v2.o \
 	inter_bargon.o \
+	inter_fascin.o \
 	inter_v3.o \
 	inter_v4.o \
 	inter_v5.o \


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