diff options
| -rw-r--r-- | engines/agos/agos.h | 1 | ||||
| -rw-r--r-- | engines/agos/detection_tables.h | 74 | ||||
| -rw-r--r-- | engines/agos/script_e1.cpp | 4 | ||||
| -rw-r--r-- | engines/agos/script_e2.cpp | 13 | ||||
| -rw-r--r-- | engines/agos/script_ww.cpp | 2 | 
5 files changed, 70 insertions, 24 deletions
diff --git a/engines/agos/agos.h b/engines/agos/agos.h index 32c399ff8e..5d4a300285 100644 --- a/engines/agos/agos.h +++ b/engines/agos/agos.h @@ -1313,6 +1313,7 @@ public:  	void oe2_moveDirn();  	void oe2_doClass();  	void oe2_pObj(); +	void oe2_loadGame();  	void oe2_drawItem();  	void oe2_doTable();  	void oe2_pauseGame(); diff --git a/engines/agos/detection_tables.h b/engines/agos/detection_tables.h index 9008445485..379b666939 100644 --- a/engines/agos/detection_tables.h +++ b/engines/agos/detection_tables.h @@ -56,7 +56,6 @@ static const AGOSGameDescription gameDescriptions[] = {  			{  	{ "gameamiga",		GAME_BASEFILE,	"7bdaff4a118d8035047cf9b1393b3fa0", -1},  	{ "icon.dat",		GAME_ICONFILE,	"2db931e84f1ca01f0816dddfae3f49e1", -1}, -	{ "start",		GAME_RESTFILE,	"c111be88c7f6d40e3f9b128939c1236d", -1},  	{ NULL, 0, NULL, 0}  			},  			Common::EN_ANY, @@ -69,6 +68,46 @@ static const AGOSGameDescription gameDescriptions[] = {  		GF_OLD_BUNDLE | GF_CRUNCHED | GF_PLANAR  	}, +	// Elvira 1 - French Amiga Floppy +	{ +		{ +			"elvira1", +			"Floppy", +			{ +	{ "gameamiga",		GAME_BASEFILE,	"ab1a0798f74e71cc58a06e7e0db6f8a7", -1}, +	{ "icon.dat",		GAME_ICONFILE,	"2db931e84f1ca01f0816dddfae3f49e1", -1}, +	{ NULL, 0, NULL, 0} +			}, +			Common::FR_FRA, +			Common::kPlatformAmiga, +			Common::ADGF_NO_FLAGS +		}, + +		GType_ELVIRA1, +		GID_ELVIRA1, +		GF_OLD_BUNDLE | GF_CRUNCHED | GF_PLANAR +	}, + +	// Elvira 1 - German Amiga Floppy +	{ +		{ +			"elvira1", +			"Floppy", +			{ +	{ "gameamiga",		GAME_BASEFILE,	"bde0334344c7b3a278ccc9a300f3085c", -1}, +	{ "icon.dat",		GAME_ICONFILE,	"2db931e84f1ca01f0816dddfae3f49e1", -1}, +	{ NULL, 0, NULL, 0} +			}, +			Common::DE_DEU, +			Common::kPlatformAmiga, +			Common::ADGF_NO_FLAGS +		}, + +		GType_ELVIRA1, +		GID_ELVIRA1, +		GF_OLD_BUNDLE | GF_CRUNCHED | GF_PLANAR +	}, +  	// Elvira 1 - English Atari ST Floppy Demo  	{  		{ @@ -100,7 +139,6 @@ static const AGOSGameDescription gameDescriptions[] = {  			{  	{ "gamest",		GAME_BASEFILE,	"8942859018fcfb2dbed13e83d974d1ab", -1},  	{ "icon.dat",		GAME_ICONFILE,	"2db931e84f1ca01f0816dddfae3f49e1", -1}, -	{ "start",		GAME_RESTFILE,	"cd711028e209c47b81d04141fff2587b", -1},  	{ "tbllist",		GAME_TBLFILE,	"5b6ff494bf7e24213758598ef4ac0a8b", -1},  	{ NULL, 0, NULL, 0}  			}, @@ -123,7 +161,6 @@ static const AGOSGameDescription gameDescriptions[] = {  			{  	{ "gamest",		GAME_BASEFILE,	"ce2100ba71284f55ac302847d7f94747", -1},  	{ "icon.dat",		GAME_ICONFILE,	"2db931e84f1ca01f0816dddfae3f49e1", -1}, -	{ "start",		GAME_RESTFILE,	"cd711028e209c47b81d04141fff2587b", -1},  	{ "tbllist",		GAME_TBLFILE,	"5b6ff494bf7e24213758598ef4ac0a8b", -1},  	{ NULL, 0, NULL, 0}  			}, @@ -146,7 +183,6 @@ static const AGOSGameDescription gameDescriptions[] = {  			{  	{ "gamepc",		GAME_BASEFILE,	"a49e132a1f18306dd5d1ec2fe435e178", -1},  	{ "icon.dat",		GAME_ICONFILE,	"fda48c9da7f3e72d0313e2f5f760fc45", -1}, -	{ "start",		GAME_RESTFILE,	"69fb4f12108b39ae659f108cad4d3efe", -1},  	{ "tbllist",		GAME_TBLFILE,	"319f6b227c7822a551f57d24e70f8149", -1},  	{ NULL, 0, NULL, 0}  			}, @@ -160,20 +196,19 @@ static const AGOSGameDescription gameDescriptions[] = {  		GF_OLD_BUNDLE  	}, -	// Elvira 1 - German DOS Floppy +	// Elvira 1 - French DOS Floppy  	{  		{  			"elvira1",  			"Floppy",  			{ -	{ "gamepc",		GAME_BASEFILE,	"d0b593143e21fc150c044819df2c0b98", -1}, +	{ "gamepc",		GAME_BASEFILE,	"9076d507d60cc454df662316438ec843", -1},  	{ "icon.dat",		GAME_ICONFILE,	"fda48c9da7f3e72d0313e2f5f760fc45", -1}, -	{ "start",		GAME_RESTFILE,	"69fb4f12108b39ae659f108cad4d3efe", -1},  	{ "tbllist",		GAME_TBLFILE,	"319f6b227c7822a551f57d24e70f8149", -1},  	{ NULL, 0, NULL, 0}  			}, -			Common::DE_DEU, +			Common::FR_FRA,  			Common::kPlatformPC,  			Common::ADGF_NO_FLAGS  		}, @@ -183,20 +218,19 @@ static const AGOSGameDescription gameDescriptions[] = {  		GF_OLD_BUNDLE  	}, -	// Elvira 1 - French DOS Floppy +	// Elvira 1 - German DOS Floppy  	{  		{  			"elvira1",  			"Floppy",  			{ -	{ "gamepc",		GAME_BASEFILE,	"9076d507d60cc454df662316438ec843", -1}, +	{ "gamepc",		GAME_BASEFILE,	"d0b593143e21fc150c044819df2c0b98", -1},  	{ "icon.dat",		GAME_ICONFILE,	"fda48c9da7f3e72d0313e2f5f760fc45", -1}, -	{ "start",		GAME_RESTFILE,	"69fb4f12108b39ae659f108cad4d3efe", -1},  	{ "tbllist",		GAME_TBLFILE,	"319f6b227c7822a551f57d24e70f8149", -1},  	{ NULL, 0, NULL, 0}  			}, -			Common::FR_FRA, +			Common::DE_DEU,  			Common::kPlatformPC,  			Common::ADGF_NO_FLAGS  		}, @@ -382,22 +416,22 @@ static const AGOSGameDescription gameDescriptions[] = {  		GF_OLD_BUNDLE  	}, -	// Elvira 2 - German DOS Floppy +	// Elvira 2 - French DOS Floppy  	{  		{  			"elvira2",  			"Floppy",  			{ -	{ "gamepc",		GAME_BASEFILE,	"d1979d2fbc5fb5276563578ca55cbcec", -1}, +	{ "gamepc",		GAME_BASEFILE,	"4bf28ab00f5324fd938e632595742382", -1},  	{ "icon.dat",		GAME_ICONFILE,	"83a7278bff55c82fbb3aef92981866c9", -1},  	{ "menus.dat",		GAME_MENUFILE,	"a2fdc88a77c8bdffec6b36cbeda4d955", -1}, -	{ "start",		GAME_RESTFILE,	"016107aced82d0cc5d758a9fba716270", -1}, +	{ "start",		GAME_RESTFILE,	"4d380a35ba941d03ee5084c71d20055b", -1},  	{ "stripped.txt",	GAME_STRFILE,	"c3a8f644551a27c8a2fec0f8070b46b7", -1},  	{ "tbllist",		GAME_TBLFILE,	"8252660df0edbdbc3e6377e155bbd0c5", -1},  	{ NULL, 0, NULL, 0}  			}, -			Common::DE_DEU, +			Common::FR_FRA,  			Common::kPlatformPC,  			Common::ADGF_NO_FLAGS  		}, @@ -407,22 +441,22 @@ static const AGOSGameDescription gameDescriptions[] = {  		GF_OLD_BUNDLE  	}, -	// Elvira 2 - French DOS Floppy +	// Elvira 2 - German DOS Floppy  	{  		{  			"elvira2",  			"Floppy",  			{ -	{ "gamepc",		GAME_BASEFILE,	"4bf28ab00f5324fd938e632595742382", -1}, +	{ "gamepc",		GAME_BASEFILE,	"d1979d2fbc5fb5276563578ca55cbcec", -1},  	{ "icon.dat",		GAME_ICONFILE,	"83a7278bff55c82fbb3aef92981866c9", -1},  	{ "menus.dat",		GAME_MENUFILE,	"a2fdc88a77c8bdffec6b36cbeda4d955", -1}, -	{ "start",		GAME_RESTFILE,	"4d380a35ba941d03ee5084c71d20055b", -1}, +	{ "start",		GAME_RESTFILE,	"016107aced82d0cc5d758a9fba716270", -1},  	{ "stripped.txt",	GAME_STRFILE,	"c3a8f644551a27c8a2fec0f8070b46b7", -1},  	{ "tbllist",		GAME_TBLFILE,	"8252660df0edbdbc3e6377e155bbd0c5", -1},  	{ NULL, 0, NULL, 0}  			}, -			Common::FR_FRA, +			Common::DE_DEU,  			Common::kPlatformPC,  			Common::ADGF_NO_FLAGS  		}, diff --git a/engines/agos/script_e1.cpp b/engines/agos/script_e1.cpp index be60a4b14a..9522901723 100644 --- a/engines/agos/script_e1.cpp +++ b/engines/agos/script_e1.cpp @@ -707,8 +707,8 @@ void AGOSEngine_Elvira1::oe1_loadGame() {  	uint16 stringId = getNextStringID();  	debug(0, "oe1_loadGame: stub (%s)", (const char *)getStringPtrByID(stringId)); -	if (!scumm_stricmp(getFileName(GAME_RESTFILE), (const char *)getStringPtrByID(stringId))) { -		loadGame(getFileName(GAME_RESTFILE), true); +	if (!scumm_stricmp("START", (const char *)getStringPtrByID(stringId))) { +		loadGame("START", true);  	} else {  		loadGame((const char *)getStringPtrByID(stringId));  	} diff --git a/engines/agos/script_e2.cpp b/engines/agos/script_e2.cpp index 13cb15a8b9..8251510fac 100644 --- a/engines/agos/script_e2.cpp +++ b/engines/agos/script_e2.cpp @@ -145,7 +145,7 @@ void AGOSEngine_Elvira2::setupOpcodes() {  		OPCODE(o_comment),  		/* 88 */  		OPCODE(o_invalid), -		OPCODE(oe1_loadGame), +		OPCODE(oe2_loadGame),  		OPCODE(o_getParent),  		OPCODE(o_getNext),  		/* 92 */ @@ -315,6 +315,17 @@ void AGOSEngine_Elvira2::oe2_pObj() {  		showMessageFormat("%s\n", (const char *)getStringPtrByID(subObject->objectFlagValue[0])); // Difference  } +void AGOSEngine_Elvira2::oe2_loadGame() { +	// 89: load game +	uint16 stringId = getNextStringID(); + +	if (!scumm_stricmp(getFileName(GAME_RESTFILE), (const char *)getStringPtrByID(stringId))) { +		loadGame(getFileName(GAME_RESTFILE), true); +	} else { +		loadGame((const char *)getStringPtrByID(stringId)); +	} +} +  void AGOSEngine_Elvira2::oe2_drawItem() {  	// 113: draw item  	Item *i = getNextItemPtr(); diff --git a/engines/agos/script_ww.cpp b/engines/agos/script_ww.cpp index 690a717acf..377b49ae3f 100644 --- a/engines/agos/script_ww.cpp +++ b/engines/agos/script_ww.cpp @@ -147,7 +147,7 @@ void AGOSEngine_Waxworks::setupOpcodes() {  		OPCODE(o_comment),  		/* 88 */  		OPCODE(o_invalid), -		OPCODE(oe1_loadGame), +		OPCODE(oe2_loadGame),  		OPCODE(o_getParent),  		OPCODE(o_getNext),  		/* 92 */  | 
