[Scummvm-cvs-logs] CVS: scummvm/simon game.cpp,1.3,1.4 intern.h,1.45,1.46 items.cpp,1.137,1.138 simon.cpp,1.537,1.538 vga.cpp,1.150,1.151

kirben kirben at users.sourceforge.net
Sat Nov 12 00:05:04 CET 2005


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

Modified Files:
	game.cpp intern.h items.cpp simon.cpp vga.cpp 
Log Message:

Add some details for ru versions.
Add some details for FF.


Index: game.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/game.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- game.cpp	12 Nov 2005 06:44:03 -0000	1.3
+++ game.cpp	12 Nov 2005 08:04:10 -0000	1.4
@@ -71,6 +71,11 @@
 	{ GID_SIMON1DOS,       "2af9affc5981eec44b90d4c556145cb8", "stripped.txt", false},
 	{ GID_SIMON1DOS,       "d198a80de2c59e4a0cd24b98814849e8", "tbllist", false},
 
+	{ GID_SIMON1DOS_RU,    "605fb866e03ec1c41b10c6a518ddfa49", "gamepc", false },
+	{ GID_SIMON1DOS_RU,    "22107c24dfb31b66ac503c28a6e20b19", "icon.dat", false},
+	{ GID_SIMON1DOS_RU,    "2af9affc5981eec44b90d4c556145cb8", "stripped.txt", false},
+	{ GID_SIMON1DOS_RU,    "d198a80de2c59e4a0cd24b98814849e8", "tbllist", false},
+
 	{ GID_SIMON1DEMO,      "2be4a21bc76e2fdc071867c130651439", "gdemo", false },
 	{ GID_SIMON1DEMO,      "55af3b4d93972bc58bfee38a86b76c3f", "icon.dat", false},
 	{ GID_SIMON1DEMO,      "33a2e329b97b2a349858d6a093159eb7", "stripped.txt", false},
@@ -130,6 +135,12 @@
 	{ GID_SIMON2DOS,       "00000000000000000000000000000000", "stripped.txt", false},
 	{ GID_SIMON2DOS,       "00000000000000000000000000000000", "tbllist", false},
 
+	{ GID_SIMON2DOS_RU,    "00000000000000000000000000000000", "game32", false },
+	{ GID_SIMON2DOS_RU,    "00000000000000000000000000000000", "icon.dat", false},
+	{ GID_SIMON2DOS_RU,    "00000000000000000000000000000000", "simon2.gme", false},
+	{ GID_SIMON2DOS_RU,    "00000000000000000000000000000000", "stripped.txt", false},
+	{ GID_SIMON2DOS_RU,    "00000000000000000000000000000000", "tbllist", false},
+
 	{ GID_SIMON2DEMO,      "3794c15887539b8578bacab694ccf08a", "gsptr30", false },
 	{ GID_SIMON2DEMO,      "72096a62d36e6034ea9fecc13b2dbdab", "icon.dat", false},
 	{ GID_SIMON2DEMO,      "f8c9e6df1e55923a749e115ba74210c4", "simon2.gme", false},
@@ -183,6 +194,12 @@
 	{ GID_SIMON2WIN_DE,    "00000000000000000000000000000000", "simon2.gme", false },
 	{ GID_SIMON2WIN_DE,    "00000000000000000000000000000000", "stripped.txt", false},
 	{ GID_SIMON2WIN_DE,    "00000000000000000000000000000000", "tbllist", false},
+
+	{ GID_FEEBLEFILES_2CD, "629762ea9ca9ee9ff85f4774d219f5c7", "game22", false },
+	{ GID_FEEBLEFILES_2CD, "0bbfee8e69739111eb36b0d138da8ddf", "tbllist", false},
+
+	{ GID_FEEBLEFILES_4CD, "a8746407a5b20a7da0da0a14c380af1c", "game22", false },
+	{ GID_FEEBLEFILES_4CD, "0bbfee8e69739111eb36b0d138da8ddf", "tbllist", false},
 };
 
 // Simon the Sorcerer 1
@@ -240,6 +257,12 @@
 	{"tbllist", GAME_TBLFILE},
 };
 
+// The Feeble Files
+static GameFileDescription FEEBLEFILES_GameFiles[] = {
+	{"game22", GAME_BASEFILE},
+	{"tbllist", GAME_TBLFILE},
+};
+
 static GameDescription gameDescriptions[] = {
 	// Simon the Sorcerer 1 - English Acorn CD Demo
 	{
@@ -306,6 +329,19 @@
 		Common::kPlatformPC,
 	},
 
+	// Simon the Sorcerer 1 - Russian DOS Floppy (Infocom)
+	{
+		"simon1",
+		GType_SIMON1,
+		GID_SIMON1DOS_RU,
+		"Simon the Sorcerer 1 (Ru DOS Floppy)",
+		ARRAYSIZE(SIMON1DOS_GameFiles),
+		SIMON1DOS_GameFiles,
+		GF_OLD_BUNDLE,
+		Common::RU_RUS,
+		Common::kPlatformPC,
+	},
+
 	// Simon the Sorcerer 1 - English DOS CD
 	{
 		"simon1",
@@ -539,6 +575,32 @@
 		Common::DE_DEU,
 		Common::kPlatformWindows,
 	},
+
+	// The Feeble Files - English 2CD
+	{
+		"feeble",
+		GType_FF,
+		GID_FEEBLEFILES_2CD,
+		"The Feeble Files",
+		ARRAYSIZE(FEEBLEFILES_GameFiles),
+		FEEBLEFILES_GameFiles,
+		GF_OLD_BUNDLE | GF_TALKIE,
+		Common::EN_USA,
+		Common::kPlatformPC,
+	},
+
+	// The Feeble Files - English 4CD
+	{
+		"feeble",
+		GType_FF,
+		GID_FEEBLEFILES_4CD,
+		"The Feeble Files",
+		ARRAYSIZE(FEEBLEFILES_GameFiles),
+		FEEBLEFILES_GameFiles,
+		GF_OLD_BUNDLE | GF_TALKIE,
+		Common::EN_USA,
+		Common::kPlatformPC,
+	},
 };
 
 bool SimonEngine::initGame(void) {

Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/intern.h,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -d -r1.45 -r1.46
--- intern.h	12 Nov 2005 06:44:03 -0000	1.45
+++ intern.h	12 Nov 2005 08:04:10 -0000	1.46
@@ -163,6 +163,7 @@
 
 enum GameIds {
 	GID_SIMON1DOS,
+	GID_SIMON1DOS_RU,
 	GID_SIMON1DEMO,
 	GID_SIMON1AMIGA,
 	GID_SIMON1CD32,
@@ -178,6 +179,7 @@
 	GID_SIMON1WIN_DE,
 
 	GID_SIMON2DOS,
+	GID_SIMON2DOS_RU,
 	GID_SIMON2DEMO,
 	GID_SIMON2TALKIE,
 	GID_SIMON2TALKIE_DE,
@@ -188,7 +190,8 @@
 	GID_SIMON2WIN,
 	GID_SIMON2WIN_DE,
 
-	GAME_FEEBLEFILES
+	GID_FEEBLEFILES_2CD,
+	GID_FEEBLEFILES_4CD
 };
 
 #endif

Index: items.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/items.cpp,v
retrieving revision 1.137
retrieving revision 1.138
diff -u -d -r1.137 -r1.138
--- items.cpp	12 Nov 2005 06:01:24 -0000	1.137
+++ items.cpp	12 Nov 2005 08:04:10 -0000	1.138
@@ -527,12 +527,12 @@
 
 		case 98:{									/* start vga */
 				uint vga_res, vgaSpriteId, windowNum, x, y, palette;
-				if (getGameType() == GType_SIMON2) {
-					vga_res = getVarOrWord();
+				if (getGameType() == GType_SIMON1) {
 					vgaSpriteId = getVarOrWord();
+					vga_res = vgaSpriteId / 100;
 				} else {
+					vga_res = getVarOrWord();
 					vgaSpriteId = getVarOrWord();
-					vga_res = vgaSpriteId / 100;
 				}
 				windowNum = getVarOrByte();
 				x = getVarOrWord();

Index: simon.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/simon.cpp,v
retrieving revision 1.537
retrieving revision 1.538
diff -u -d -r1.537 -r1.538
--- simon.cpp	12 Nov 2005 06:44:03 -0000	1.537
+++ simon.cpp	12 Nov 2005 08:04:10 -0000	1.538
@@ -557,7 +557,7 @@
 	else if (ConfMan.getBool("native_mt32") || (_midiDriver == MD_MT32))
 		driver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE);
 
-	midi.mapMT32toGM (!(getGameType() == GType_SIMON2) && !(ConfMan.getBool("native_mt32") || (_midiDriver == MD_MT32)));
+	midi.mapMT32toGM (getGameType() == GType_SIMON1 && !(ConfMan.getBool("native_mt32") || (_midiDriver == MD_MT32)));
 
 	midi.set_driver(driver);
 	int ret = midi.open();
@@ -573,7 +573,7 @@
 	if ((getGameType() == GType_SIMON2) && ConfMan.hasKey("speech_mute") && ConfMan.getBool("speech_mute") == 1)
 		_speech = 0;
 
-	if ((!(getGameType() == GType_SIMON2) && _language > 1) || ((getGameType() == GType_SIMON2) && _language == 20)) {
+	if ((getGameType() == GType_SIMON1 && _language > 1) || ((getGameType() == GType_SIMON2) && _language == 20)) {
 		if (ConfMan.hasKey("subtitles") && ConfMan.getBool("subtitles") == 0)
 			_subtitles = 0;
 	} else
@@ -1746,7 +1746,7 @@
 
 	fcs_ptr = _windowArray[fcs_index & 7];
 
-	if (!(getGameType() == GType_SIMON2)) {
+	if (getGameType() == GType_SIMON1) {
 		width_div_3 = fcs_ptr->width / 3;
 		height_div_3 = fcs_ptr->height / 3;
 	} else {
@@ -1775,7 +1775,7 @@
 		num_sibs_with_flag = 0;
 		while (item_ptr && width_div_3 > num_sibs_with_flag) {
 			if ((unk2 == 0 || item_ptr->classFlags & unk2) && has_item_childflag_0x10(item_ptr))
-				if (!(getGameType() == GType_SIMON2)) {
+				if (getGameType() == GType_SIMON1) {
 					num_sibs_with_flag++;
 				} else {
 					num_sibs_with_flag += 20;
@@ -1799,7 +1799,7 @@
 		if ((unk2 == 0 || item_ptr->classFlags & unk2) && has_item_childflag_0x10(item_ptr)) {
 			if (item_again == false) {
 				fcs_ptr->fcs_data->e[k].item = item_ptr;
-				if (!(getGameType() == GType_SIMON2)) {
+				if (getGameType() == GType_SIMON1) {
 					draw_icon_c(fcs_ptr, item_get_icon_number(item_ptr), x_pos * 3, y_pos);
 					fcs_ptr->fcs_data->e[k].hit_area =
 						setup_icon_hit_area(fcs_ptr, x_pos * 3, y_pos,
@@ -1814,12 +1814,12 @@
 				fcs_ptr->fcs_data->e[k].item = NULL;
 				j = 1;
 			}
-			x_pos += (getGameType() == GType_SIMON2) ? 20 : 1;
+			x_pos += (getGameType() == GType_SIMON1) ? 1 : 20;
 
 			if (x_pos >= width_div_3) {
 				x_pos = 0;
 
-				y_pos += (getGameType() == GType_SIMON2) ? 20 : 1;
+				y_pos += (getGameType() == GType_SIMON1) ? 1 : 20;
 				if (y_pos >= height_div_3)
 					item_again = true;
 			}
@@ -1846,7 +1846,7 @@
 
 	ha = findEmptyHitArea();
 	_scrollUpHitArea = ha - _hitAreas;
-	if (!(getGameType() == GType_SIMON2)) {
+	if (getGameType() == GType_SIMON1) {
 		ha->x = 308;
 		ha->y = 149;
 		ha->width = 12;
@@ -1871,7 +1871,7 @@
 	ha = findEmptyHitArea();
 	_scrollDownHitArea = ha - _hitAreas;
 
-	if (!(getGameType() == GType_SIMON2)) {
+	if (getGameType() == GType_SIMON1) {
 		ha->x = 308;
 		ha->y = 176;
 		ha->width = 12;
@@ -2091,7 +2091,7 @@
 void SimonEngine::hitarea_stuff_helper() {
 	time_t cur_time;
 
-	if (!(getGameType() == GType_SIMON2)) {
+	if (getGameType() == GType_SIMON1) {
 		uint subr_id = _variableArray[254];
 		if (subr_id != 0) {
 			Subroutine *sub = getSubroutineByID(subr_id);
@@ -2413,7 +2413,7 @@
 
 	if (vga_res_id == 0) {
 
-		if (!(getGameType() == GType_SIMON2)) {
+		if (getGameType() == GType_SIMON1) {
 			_unkPalFlag = true;
 		} else {
 			_dxUse3Or4ForLock = true;
@@ -2481,16 +2481,7 @@
 	_vcPtr = vc_ptr_org;
 
 
-	if (getGameType() == GType_SIMON2) {
-		if (!_dxUse3Or4ForLock) {
-			num_lines = _windowNum == 4 ? 134 : 200;
-			_vgaVar8 = num_lines;
-			dx_copy_from_attached_to_2(0, 0, _screenWidth, num_lines);
-			dx_copy_from_attached_to_3(num_lines);
-			_syncFlag2 = 1;
-		}
-		_dxUse3Or4ForLock = false;
-	} else {
+	if (getGameType() == GType_SIMON1) {
 		// Allow one section of Simon the Sorcerer 1 introduction to be displayed
 		// in lower half of screen
 		if (_subroutine == 2923 || _subroutine == 2926)
@@ -2503,11 +2494,20 @@
 
 		_syncFlag2 = 1;
 		_timer5 = 0;
+	} else {
+		if (!_dxUse3Or4ForLock) {
+			num_lines = _windowNum == 4 ? 134 : 200;
+			_vgaVar8 = num_lines;
+			dx_copy_from_attached_to_2(0, 0, _screenWidth, num_lines);
+			dx_copy_from_attached_to_3(num_lines);
+			_syncFlag2 = 1;
+		}
+		_dxUse3Or4ForLock = false;
 	}
 
 	_lockWord &= ~0x20;
 
-	if (!(getGameType() == GType_SIMON2)) {
+	if (getGameType() == GType_SIMON1) {
 		if (_unkPalFlag) {
 			_unkPalFlag = false;
 			while (_paletteColorCount != 0) {
@@ -2628,7 +2628,7 @@
 	// caused several glitches in this scene.
 	// We work around the problem by correcting the code_ptr for sprite
 	// 200 in this scene, if it is wrong.
-	if (!(getGameType() == GType_SIMON2) && (_language == 2) &&
+	if (getGameType() == GType_SIMON1 && _language == 2 &&
 		(code_ptr - _vgaBufferPointers[cur_file].vgaFile1 == 4) && (cur_sprite == 200) && (cur_file == 2))
 		code_ptr += 0x66;
 
@@ -3057,7 +3057,7 @@
 
 	if (fcs->fcs_data->downArrow != -1) {
 		delete_hitarea_by_index(fcs->fcs_data->downArrow);
-		if (!(getGameType() == GType_SIMON2))
+		if (getGameType() == GType_SIMON1)
 			fcs_unk_5(fcs, fcs_index);
 	}
 
@@ -3101,7 +3101,7 @@
 void SimonEngine::copy_img_from_3_to_2(FillOrCopyStruct *fcs) {
 	_lockWord |= 0x8000;
 
-	if (!(getGameType() == GType_SIMON2)) {
+	if (getGameType() == GType_SIMON1) {
 		dx_copy_rgn_from_3_to_2(fcs->y + fcs->height * 8 + ((fcs == _windowArray[2]) ? 1 : 0), (fcs->x + fcs->width) * 8, fcs->y, fcs->x * 8);
 	} else {
 		if (_vgaVar6 && _windowArray[2] == fcs) {
@@ -3137,11 +3137,11 @@
 VgaSprite *SimonEngine::find_cur_sprite() {
 	VgaSprite *vsp = _vgaSprites;
 	while (vsp->id) {
-		if (getGameType() == GType_SIMON2) {
-			if (vsp->id == _vgaCurSpriteId && vsp->fileId == _vgaCurFileId)
+		if (getGameType() == GType_SIMON1) {
+			if (vsp->id == _vgaCurSpriteId)
 				break;
 		} else {
-			if (vsp->id == _vgaCurSpriteId)
+			if (vsp->id == _vgaCurSpriteId && vsp->fileId == _vgaCurFileId)
 				break;
 		}
 		vsp++;
@@ -3152,11 +3152,11 @@
 bool SimonEngine::isSpriteLoaded(uint16 id, uint16 fileId) {
 	VgaSprite *vsp = _vgaSprites;
 	while (vsp->id) {
-		if (getGameType() == GType_SIMON2) {
-			if (vsp->id == id && vsp->fileId == fileId)
+		if (getGameType() == GType_SIMON1) {
+			if (vsp->id == id)
 				return true;
 		} else {
-			if (vsp->id == id)
+			if (vsp->id == id && vsp->fileId == fileId)
 				return true;
 		}
 		vsp++;
@@ -3170,28 +3170,28 @@
 		_exitCutscene = true;
 		break;
 	case 59: // F1
-		if (getGameType() == GType_SIMON2) {
-			vc_write_var(5, 50);
-		} else {
+		if (getGameType() == GType_SIMON1) {
 			vc_write_var(5, 40);
+		} else {
+			vc_write_var(5, 50);
 		}
-			vc_write_var(86, 0);
+		vc_write_var(86, 0);
 		break;
 	case 60: // F2
-		if (getGameType() == GType_SIMON2) {
-			vc_write_var(5, 75);
-		} else {
+		if (getGameType() == GType_SIMON1) {
 			vc_write_var(5, 60);
+		} else {
+			vc_write_var(5, 75);
 		}
-			vc_write_var(86, 1);
+		vc_write_var(86, 1);
 		break;
 	case 61: // F3
-		if (getGameType() == GType_SIMON2) {
-			vc_write_var(5, 125);
-		} else {
+		if (getGameType() == GType_SIMON1) {
 			vc_write_var(5, 100);
+		} else {
+			vc_write_var(5, 125);
 		}
-			vc_write_var(86, 2);
+		vc_write_var(86, 2);
 		break;
 	case 63: // F5
 		if (getGameType() == GType_SIMON2)
@@ -3509,10 +3509,10 @@
 	}
 	*(convertedString2 - 1) = '\0';
 
-	if (getGameType() == GType_SIMON2)
-		o_kill_sprite_simon2(2, vgaSpriteId);
-	else
+	if (getGameType() == GType_SIMON1)
 		o_kill_sprite_simon1(vgaSpriteId + 199);
+	else
+		o_kill_sprite_simon2(2, vgaSpriteId);
 
 	color = color * 3 + 192;
 	if (getPlatform() == Common::kPlatformAmiga)
@@ -3528,10 +3528,10 @@
 	if (y < 2)
 		y = 2;
 
-	if (getGameType() == GType_SIMON2)
-		loadSprite(b, 2, vgaSpriteId, x, y, 12);
-	else
+	if (getGameType() == GType_SIMON1)
 		loadSprite(b, 2, vgaSpriteId + 199, x, y, 12);
+	else
+		loadSprite(b, 2, vgaSpriteId, x, y, 12);
 }
 
 // Thanks to Stuart Caie for providing the original
@@ -3875,7 +3875,7 @@
 	memcpy(_sdl_buf_attached, _sdl_buf, _screenWidth * _screenHeight);
 
 	if (_paletteColorCount != 0) {
-		if (!(getGameType() == GType_SIMON2) && _usePaletteDelay) {
+		if (getGameType() == GType_SIMON1 && _usePaletteDelay) {
 			delay(100);
 			_usePaletteDelay = false;
 		}
@@ -4003,7 +4003,7 @@
 
 	if (getFeatures() & GF_TALKIE) {
 		// English and German versions of Simon the Sorcerer 1 don't have full subtitles
-		if (!(getGameType() == GType_SIMON2) && _language < 2)
+		if (getGameType() == GType_SIMON1 && _language < 2)
 			_subtitles = false;
 	} else {
 		_subtitles = true;

Index: vga.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/vga.cpp,v
retrieving revision 1.150
retrieving revision 1.151
diff -u -d -r1.150 -r1.151
--- vga.cpp	12 Nov 2005 06:01:24 -0000	1.150
+++ vga.cpp	12 Nov 2005 08:04:10 -0000	1.151
@@ -320,17 +320,17 @@
 
 	windowNum = vc_read_next_word();		/* 0 */
 
-	if (getGameType() == GType_SIMON2) {
-		fileId = vc_read_next_word();		/* 0 */
+	if (getGameType() == GType_SIMON1) {
 		vgaSpriteId = vc_read_next_word();	/* 2 */
+		fileId = vgaSpriteId / 100;
 	} else {
+		fileId = vc_read_next_word();		/* 0 */
 		vgaSpriteId = vc_read_next_word();	/* 2 */
-		fileId = vgaSpriteId / 100;
 	}
 
 	x = vc_read_next_word();			/* 4 */
 	y = vc_read_next_word();			/* 6 */
-	palette = vc_read_next_word();		/* 8 */
+	palette = vc_read_next_word();			/* 8 */
 
 	/* 2nd param ignored with simon1 */
 	if (isSpriteLoaded(vgaSpriteId, fileId))
@@ -1199,10 +1199,10 @@
 void SimonEngine::vc21_endRepeat() {
 	int16 a = vc_read_next_word();
 	const byte *tmp = _vcPtr + a;
-	if (getGameType() == GType_SIMON2)
-		tmp += 3;
-	else
+	if (getGameType() == GType_SIMON1)
 		tmp += 4;
+	else
+		tmp += 3;
 
 	uint16 val = READ_LE_UINT16(tmp);
 	if (val != 0) {
@@ -1644,16 +1644,17 @@
 }
 
 void SimonEngine::vc56_delay() {
-	if (getGameType() == GType_SIMON2) {
-		uint num = vc_read_var_or_word() * _frameRate;
+	uint num = vc_read_var_or_word() * _frameRate;
 
-		add_vga_timer(num + VGA_DELAY_BASE, _vcPtr, _vgaCurSpriteId, _vgaCurFileId);
-		_vcPtr = (byte *)&_vc_get_out_of_code;
-	}
+	add_vga_timer(num + VGA_DELAY_BASE, _vcPtr, _vgaCurSpriteId, _vgaCurFileId);
+	_vcPtr = (byte *)&_vc_get_out_of_code;
 }
 
 void SimonEngine::vc59() {
-	if (getGameType() == GType_SIMON2) {
+	if (getGameType() == GType_SIMON1) {
+		if (!_sound->isVoiceActive())
+			vc_skip_next_instruction();
+	} else {
 		uint file = vc_read_next_word();
 		uint start = vc_read_next_word();
 		uint end = vc_read_next_word() + 1;
@@ -1661,9 +1662,6 @@
 		do {
 			vc_kill_sprite(file, start);
 		} while (++start != end);
-	} else {
-		if (!_sound->isVoiceActive())
-			vc_skip_next_instruction();
 	}
 }
 
@@ -1739,10 +1737,10 @@
 void SimonEngine::vc60_killSprite() {
 	uint file;
 
-	if (getGameType() == GType_SIMON2) {
-		file = vc_read_next_word();
-	} else {
+	if (getGameType() == GType_SIMON1) {
 		file = _vgaCurFileId;
+	} else {
+		file = vc_read_next_word();
 	}
 	uint sprite = vc_read_next_word();
 	vc_kill_sprite(file, sprite);





More information about the Scummvm-git-logs mailing list