[Scummvm-cvs-logs] CVS: scummvm/simon debug.cpp,1.40,1.41 debug.h,1.17,1.18 items.cpp,1.128,1.129 res.cpp,1.35,1.36 simon.cpp,1.516,1.517 simon.h,1.146,1.147 vga.cpp,1.136,1.137

kirben kirben at users.sourceforge.net
Sun Oct 9 02:04:38 CEST 2005


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

Modified Files:
	debug.cpp debug.h items.cpp res.cpp simon.cpp simon.h vga.cpp 
Log Message:

Add more stubs for FF.
Disable scale images in FF for now.


Index: debug.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/debug.cpp,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -d -r1.40 -r1.41
--- debug.cpp	16 Aug 2005 17:15:37 -0000	1.40
+++ debug.cpp	9 Oct 2005 09:03:37 -0000	1.41
@@ -47,7 +47,7 @@
 		st = s = simon1dos_opcode_name_table[opcode];
 	}
 	if (s == NULL) {
-		error("INVALID OPCODE %d", opcode);
+		//error("INVALID OPCODE %d", opcode);
 		return NULL;
 	}
 	while (*st != '|')
@@ -186,10 +186,12 @@
 			return;
 		}
 
-		if (!(_game & GF_SIMON2)) {
-			strn = str = simon1_video_opcode_name_table[opcode];
-		} else {
+		if (_game == GAME_FEEBLEFILES) {
+			strn = str = feeblefiles_video_opcode_name_table[opcode];
+		} else if (_game & GF_SIMON2) {
 			strn = str = simon2_video_opcode_name_table[opcode];
+		} else {
+			strn = str = simon1_video_opcode_name_table[opcode];
 		}
 
 		while (*strn != '|')

Index: debug.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/debug.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- debug.h	1 Jan 2005 16:09:19 -0000	1.17
+++ debug.h	9 Oct 2005 09:03:37 -0000	1.18
@@ -985,11 +985,11 @@
 const char *const simon1_video_opcode_name_table[] = {
 	/* 0 */
 	"x|RET",
-	"ddd|DUMMY_1",
+	"ddd|FADEOUT",
 	"d|CALL",
 	"ddddd|NEW_SPRITE",
 	/* 4 */
-	"ddd|DUMMY_4",
+	"ddd|FADEIN",
 	"vd|SKIP_IF_NEQ",
 	"d|SKIP_IFN_SIB_WITH_A",
 	"d|SKIP_IF_SIB_WITH_A",
@@ -1057,22 +1057,22 @@
 	"|DUMMY_56",
 	"|DUMMY_57",
 	"|UNK_58",
-	"|SKIP_IF_NO_SPEECH",
+	"|SKIP_IF_SPEECH_ENDED",
 	/* 60 */
 	"d|KILL_SPRITE",
 	"ddd|INIT_SPRITE",
-	"|PALETTE_THING",
-	"|PALETTE_THING_2",
+	"|FASTFADEOUT",
+	"|FASTFADEIN",
 };
 
 const char *const simon2_video_opcode_name_table[] = {
 	/* 0 */
 	"x|RET",
-	"ddd|DUMMY_1",
+	"ddd|FADEOUT",
 	"d|CALL",
 	"ddddd|NEW_SPRITE",
 	/* 4 */
-	"ddd|DUMMY_4",
+	"ddd|FADEIN",
 	"vd|SKIP_IF_NEQ",
 	"d|SKIP_IFN_SIB_WITH_A",
 	"d|SKIP_IF_SIB_WITH_A",
@@ -1144,10 +1144,10 @@
 	/* 60 */
 	"dd|KILL_SPRITE",
 	"ddd|INIT_SPRITE",
-	"|PALETTE_THING",
-	"|PALETTE_THING_2",
+	"|FASTFADEOUT",
+	"|FASTFADEIN",
 	/* 64 */
-	"|SKIP_IF_NO_SPEECH",
+	"|SKIP_IF_SPEECH_ENDED",
 	"|PALETTE_THING_3",
 	"|SKIP_IF_NZ",
 	"|SKIP_IF_GE",
@@ -1158,8 +1158,115 @@
 	"|CHECK_MUSIC_QUEUE",
 	/* 72 */
 	"dd|PLAY_TRACK_2",
-	"bb|SET_OP189_FLAG",
-	"bb|CLEAR_OP189_FLAG",
+	"bb|SET_MARK",
+	"bb|CLEAR_MARK",
+};
+
+const char *const feeblefiles_video_opcode_name_table[] = {
+	/* 0 */
+	"x|RET",
+	"ddd|FADEOUT",
+	"d|CALL",
+	"ddddd|NEW_SPRITE",
+	/* 4 */
+	"ddd|FADEIN",
+	"vd|SKIP_IF_NEQ",
+	"d|SKIP_IFN_SIB_WITH_A",
+	"d|SKIP_IF_SIB_WITH_A",
+	/* 8 */
+	"dd|SKIP_IF_PARENT_IS",
+	"dd|SKIP_IF_UNK3_IS",
+	"ddddb|DRAW",
+	"|CLEAR_PATHFIND_ARRAY",
+	/* 12 */
+	"b|DELAY",
+	"d|SET_SPRITE_OFFSET_X",
+	"d|SET_SPRITE_OFFSET_Y",
+	"d|IDENT_WAKEUP",
+	/* 16 */
+	"d|IDENT_SLEEP",
+	"dq|SET_PATHFIND_ITEM",
+	"i|JUMP_REL",
+	"|CHAIN_TO",
+	/* 20 */
+	"dd|SET_CODE_WORD",
+	"i|JUMP_IF_CODE_WORD",
+	"dd|SET_SPRITE_PALETTE",
+	"d|SET_SPRITE_PRIORITY",
+	/* 24 */
+	"diid|SET_SPRITE_XY",
+	"x|HALT_SPRITE",
+	"ddddd|SET_WINDOW",
+	"|RESET",
+	/* 28 */
+	"dddd|DUMMY_28",
+	"|STOP_ALL_SOUNDS",
+	"d|SET_BASE_DELAY",
+	"d|SET_PALETTE_MODE",
+	/* 32 */
+	"vv|COPY_VAR",
+	"|FORCE_UNLOCK",
+	"|FORCE_LOCK",
+	"dd|VC35",
+	/* 36 */
+	"dd|SAVELOAD_THING",
+	"v|SET_SPRITE_OFFSET_Y",
+	"v|SKIP_IF_VAR_ZERO",
+	"vd|SET_VAR",
+	/* 40 */
+	"vd|ADD_VAR",
+	"vd|SUB_VAR",
+	"vd|DELAY_IF_NOT_EQ",
+	"d|SKIP_IF_BIT_CLEAR",
+	/* 44 */
+	"d|SKIP_IF_BIT_SET",
+	"v|SET_SPRITE_X",
+	"v|SET_SPRITE_Y",
+	"vv|ADD_VAR_F",
+	/* 48 */
+	"|VC_48",
+	"d|SET_BIT",
+	"d|CLEAR_BIT",
+	"d|CLEAR_HITAREA_BIT_0x40",
+	/* 52 */
+	"ddd|PLAY_SOUND",
+	"ddd|PLAY_SOUND_WITH_ANIM",
+	"ddd|DUMMY_54",
+	"ddd|OFFSET_HIT_AREA",
+	/* 56 */
+	"i|SLEEP_EX",
+	"|DUMMY_57",
+	"|UNK_58",
+	"ddd|KILL_MULTI_SPRITE",
+	/* 60 */
+	"dd|KILL_SPRITE",
+	"ddd|INIT_SPRITE",
+	"|FASTFADEOUT",
+	"|FASTFADEIN",
+	/* 64 */
+	"|SKIP_IF_SPEECH_ENDED",
+	"|PALETTE_THING_3",
+	"|SKIP_IF_NZ",
+	"|SKIP_IF_GE",
+	/* 68 */
+	"|SKIP_IF_LE",
+	"dd|PLAY_TRACK",
+	"dd|QUEUE_MUSIC",
+	"|CHECK_MUSIC_QUEUE",
+	/* 72 */
+	"dd|PLAY_TRACK_2",
+	"bb|SET_MARK",
+	"bb|CLEAR_MARK",
+	"dd|SETSCALE",
+	"ddd|SETSCALEXOFFS",
+	"ddd|SETSCALEYOFFS",
+	"|PATHUNK1",
+	"|PATHUNK1",
+	"ddd|SETOVERLAPIMAGE",
+	"dd|SETRANDOM",
+	"d|PATHUNK3",
+	"ddd|PLAYSOUNDLOOP",
+	"|STOPSOUNDLOOP",
 };
 
 } // End of namespace Simon

Index: items.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/items.cpp,v
retrieving revision 1.128
retrieving revision 1.129
diff -u -d -r1.128 -r1.129
--- items.cpp	8 Oct 2005 09:59:36 -0000	1.128
+++ items.cpp	9 Oct 2005 09:03:37 -0000	1.129
@@ -757,9 +757,14 @@
 			break;
 
 		case 135:{									/* quit if user presses y */
-				_system->setFeatureState(OSystem::kFeatureVirtualKeyboard, true);
-				o_quit_if_user_presses_y();
-				_system->setFeatureState(OSystem::kFeatureVirtualKeyboard, false);
+				if (_game == GAME_FEEBLEFILES) {
+					// Switch CD
+					debug(1, "Switch to CD number %d", readVariable(97));
+				} else {
+					_system->setFeatureState(OSystem::kFeatureVirtualKeyboard, true);
+					o_quit_if_user_presses_y();
+					_system->setFeatureState(OSystem::kFeatureVirtualKeyboard, false);
+				}
 			}
 			break;
 
@@ -1006,16 +1011,26 @@
 			break;
 
 		case 182:{									/* read vgares 328 */
-				if (_game & GF_SIMON2)
+				if (_game == GAME_FEEBLEFILES) {
+					// Load Smacker filename
+					debug(1,"Load Smacker: %s", getStringPtrByID(getNextStringID()));
+				} else if (_game & GF_SIMON2) {
 					goto invalid_opcode;
-				o_read_vgares_328();
+				} else {
+					o_read_vgares_328();
+				}
 			}
 			break;
 
 		case 183:{									/* read vgares 23 */
-				if (_game & GF_SIMON2)
+				if (_game == GAME_FEEBLEFILES) {
+					// Play Smacker
+					debug(1, "Play Smacker");
+				} else if (_game & GF_SIMON2) {
 					goto invalid_opcode;
-				o_read_vgares_23();
+				} else {
+					o_read_vgares_23();
+				}
 			}
 			break;
 

Index: res.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/res.cpp,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -d -r1.35 -r1.36
--- res.cpp	6 Oct 2005 14:34:24 -0000	1.35
+++ res.cpp	9 Oct 2005 09:03:37 -0000	1.36
@@ -27,7 +27,6 @@
 
 namespace Simon {
 
-// Script opcodes to load into memory
 static const char *const opcode_arg_table_simon1win[256] = {
 	" ", "I ", "I ", "I ", "I ", "I ", "I ", "II ", "II ", "II ", "II ", "B ", "B ", "BN ", "BN ",
 	"BN ", "BN ", "BB ", "BB ", "BB ", "BB ", "II ", "II ", "N ", "I ", "I ", "I ", "IN ", "IB ",
@@ -262,7 +261,7 @@
 
 		child->string_id = (uint16)in->readUint32BE();
 	} else {
-		error("readItemChildren: invalid mode");
+		error("readItemChildren: invalid type %d", type);
 	}
 }
 

Index: simon.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/simon.cpp,v
retrieving revision 1.516
retrieving revision 1.517
diff -u -d -r1.516 -r1.517
--- simon.cpp	7 Oct 2005 07:36:09 -0000	1.516
+++ simon.cpp	9 Oct 2005 09:03:37 -0000	1.517
@@ -264,12 +264,12 @@
 };
 
 static const GameSpecificSettings feeblefiles_settings = {
-	"",	                                // gme_filename
-	"",                                     // wav_filename
-	"",                                     // voc_filename
-	"",                                     // mp3_filename
-	"",                                     // vorbis_filename
-	"",					// flac_filename
+	"",		                        // gme_filename
+	"VOICES.WAV",                           // wav_filename
+	"VOICES.VOC",                           // voc_filename
+	"VOICES.MP3",                           // mp3_filename
+	"VOICES.OGG",                           // vorbis_filename
+	"VOICES.FLA",                           // flac_filename
 	"",                                     // voc_effects_filename
 	"",                                     // mp3_effects_filename
 	"",                                     // vorbis_effects_filename
@@ -362,7 +362,15 @@
 	}
 
 	VGA_DELAY_BASE = 1;
-	if (_game & GF_SIMON2) {
+	if (_game == GAME_FEEBLEFILES) {
+		NUM_VIDEO_OP_CODES = 85;
+#ifndef __PALM_OS__
+		VGA_MEM_SIZE = 2000000;
+#else
+		VGA_MEM_SIZE = gVars->memory[kMemSimon2Games];
+#endif
+		TABLES_MEM_SIZE = 100000;
+	} else if (_game & GF_SIMON2) {
 		TABLE_INDEX_BASE = 1580 / 4;
 		TEXT_INDEX_BASE = 1500 / 4;
 		NUM_VIDEO_OP_CODES = 75;
@@ -525,10 +533,13 @@
 	_scriptUnk1 = 0;
 	_vgaVar6 = 0;
 	_scrollX = 0;
+	_scrollY = 0;
 	_scrollXMax = 0;
+	_scrollYMax = 0;
 	_scrollCount = 0;
 	_scrollFlag = 0;
 	_scrollHeight = 0;
+	_scrollWidth = 0;
 	_scrollImage = 0;
 	_vgaVar8 = 0;
 

Index: simon.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/simon.h,v
retrieving revision 1.146
retrieving revision 1.147
diff -u -d -r1.146 -r1.147
--- simon.h	8 Oct 2005 09:59:36 -0000	1.146
+++ simon.h	9 Oct 2005 09:03:37 -0000	1.147
@@ -211,7 +211,9 @@
 	bool _vgaVar9;
 	int16 _scriptUnk1;
 	bool _vgaVar6;
-	int _scrollX, _scrollXMax, _scrollCount, _scrollFlag, _scrollHeight;
+	int _scrollX, _scrollXMax, _scrollHeight;
+	int _scrollY, _scrollYMax, _scrollWidth;
+	int _scrollCount, _scrollFlag;
 	const byte *_scrollImage;
 	byte _vgaVar8;
 
@@ -690,6 +692,16 @@
 	void vc72_play_track_2();
 	void vc73_setMark();
 	void vc74_clearMark();
+	void vc75_setScale();
+	void vc76_setScaleXOffs();
+	void vc77_setScaleYOffs();
+	void vc78_pathUnk1();
+	void vc79_pathUnk2();
+	void vc80_setOverlayImage();
+	void vc81_setRandom();
+	void vc82_pathUnk3();
+	void vc83_playSoundLoop();
+	void vc84_stopSoundLoop();
 
 protected:
 	void delete_vga_timer(VgaTimerEntry * vte);

Index: vga.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/vga.cpp,v
retrieving revision 1.136
retrieving revision 1.137
diff -u -d -r1.136 -r1.137
--- vga.cpp	7 Oct 2005 07:36:09 -0000	1.136
+++ vga.cpp	9 Oct 2005 09:03:37 -0000	1.137
@@ -108,6 +108,16 @@
 	&SimonEngine::vc72_play_track_2,
 	&SimonEngine::vc73_setMark,
 	&SimonEngine::vc74_clearMark,
+	&SimonEngine::vc75_setScale,
+	&SimonEngine::vc76_setScaleXOffs,
+	&SimonEngine::vc77_setScaleYOffs,
+	&SimonEngine::vc78_pathUnk1,
+	&SimonEngine::vc79_pathUnk2,
+	&SimonEngine::vc80_setOverlayImage,
+	&SimonEngine::vc81_setRandom,
+	&SimonEngine::vc82_pathUnk3,
+	&SimonEngine::vc83_playSoundLoop,
+	&SimonEngine::vc84_stopSoundLoop,
 };
 
 // Script parser
@@ -186,7 +196,24 @@
 		4, 2, 2
 	};
 
-	if (_game & GF_SIMON2) {
+	static const byte opcode_param_len_feeblefiles[] = {
+		0, 6, 2, 12, 6, 4, 2, 2,
+		4, 4, 9, 0, 1, 2, 2, 2,
+		2, 0, 2, 0, 4, 2, 4, 2,
+		7, 0, 10, 0, 8, 0, 2, 2,
+		4, 0, 0, 4, 4, 2, 2, 4,
+		4, 4, 4, 2, 2, 2, 2, 4,
+		0, 2, 2, 2, 6, 6, 6, 6,
+		2, 0, 6, 6, 4, 6, 0, 0,
+		0, 0, 4, 4, 4, 4, 4, 0,
+		4, 2, 2, 4, 6, 6, 0, 0,
+		6, 4, 2, 6, 0
+	};
+
+	if (_game == GAME_FEEBLEFILES) {
+		uint opcode = vc_read_next_byte();
+		_vcPtr += opcode_param_len_feeblefiles[opcode];
+	} else if (_game & GF_SIMON2) {
 		uint opcode = vc_read_next_byte();
 		_vcPtr += opcode_param_len_simon2[opcode];
 	} else {
@@ -637,7 +664,7 @@
 	height = p2[5];
 	flags = p2[4];
 
-	debug(1, "Width %d Height %d Flags 0x%x\n", width, height, flags);
+	debug(1, "Width %d Height %d Flags 0x%x", width, height, flags);
 
 	if (height == 0 || width == 0)
 		return;
@@ -646,6 +673,10 @@
 		dump_single_bitmap(_vgaCurFileId, state.image, state.depack_src, width * 16, height,
 											 state.palette);
 
+	// TODO::Add support for image scaling
+	if (flags & 0x40)
+		return;
+
 	if (flags & 0x80 && !(state.flags & 0x10)) {
 		if (state.flags & 1) {
 			state.flags &= ~1;
@@ -669,7 +700,7 @@
 
 		_scrollX = state.x;
 
-		vc_write_var(0xfb, _scrollX);
+		vc_write_var(251, _scrollX);
 
 		dst = dx_lock_attached();
 		src = state.depack_src + _scrollX * 4;
@@ -1513,7 +1544,11 @@
 void SimonEngine::vc52_playSound() {
 	uint16 sound_id = vc_read_next_word();
 
-	if (_game & GF_SIMON2) {
+	if (_game == GAME_FEEBLEFILES) {
+		uint16 pan = vc_read_next_word();
+		uint16 vol = vc_read_next_word();
+		debug(0, "STUB: vc52_playSound: snd %d pan %d vol %d", sound_id, pan, vol);
+	} else if (_game & GF_SIMON2) {
 		if (sound_id >= 0x8000) {
 			sound_id = -sound_id;
 			_sound->playAmbient(sound_id);
@@ -1528,8 +1563,11 @@
 }
 
 void SimonEngine::vc53_no_op() {
-	/* unused */
-	_vcPtr += 4;
+	// Start sound effect, panning it with the animation
+	int snd = vc_read_next_word();
+	int xoffs = vc_read_next_word();
+	int vol = vc_read_next_word();
+	debug(0, "STUB: vc53_no_op: snd %d xoffs %d vol %d", snd, xoffs, vol);
 }
 
 void SimonEngine::vc54_no_op() {
@@ -1887,4 +1925,74 @@
 	_marks &= ~(1 << vc_read_next_byte());
 }
 
+void SimonEngine::vc75_setScale() {
+	// Set scale
+	int baseY = vc_read_next_word();
+	int scale = vc_read_next_word();
+	debug(0, "STUB: vc75_setScale: baseY %d scale %d", baseY, scale);
+}
+
+void SimonEngine::vc76_setScaleXOffs() {
+	// Scale X related
+	int image = vc_read_next_word();
+	int xoffs = vc_read_next_word();
+	int var = vc_read_next_word();
+	debug(0, "STUB: vc76_setScaleXOffs: image %d xoffs %d flag %d", image, xoffs, var);
+}
+
+void SimonEngine::vc77_setScaleYOffs() {
+	// Scale Y related
+	int image = vc_read_next_word();
+	int yoffs = vc_read_next_word();
+	int var = vc_read_next_word();
+	debug(0, "STUB: vc77_setScaleYOffs: image %d yoffs %d flag %d", image, yoffs, var);
+}
+
+void SimonEngine::vc78_pathUnk1() {
+	// Pathfinder related
+	debug(0, "STUB: vc78_pathUnk1");
+}
+
+void SimonEngine::vc79_pathUnk2() {
+	// Pathfinder related
+	debug(0, "STUB: vc79_pathUnk2");
+}
+
+void SimonEngine::vc80_setOverlayImage() {
+	VgaSprite *vsp = find_cur_sprite();
+
+	vsp->image = vc_read_var_or_word();
+
+	vsp->x += vc_read_next_word();
+	vsp->y += vc_read_next_word();
+	vsp->flags = 0x10;
+
+	_vgaSpriteChanged++;
+}
+
+void SimonEngine::vc81_setRandom() {
+	uint var = vc_read_next_word();
+	uint value = vc_read_next_word();
+	writeVariable(var, _rnd.getRandomNumber(value - 1));
+}
+
+void SimonEngine::vc82_pathUnk3() {
+	// Set var to path position
+	int var = vc_read_next_word();
+	debug(0, "STUB: vc82_pathUnk3: var %d", var);
+}
+
+void SimonEngine::vc83_playSoundLoop() {
+	// Start looping sound effect
+	int snd = vc_read_next_word();
+	int vol = vc_read_next_word();
+	int pan = vc_read_next_word();
+	debug(0, "STUB: vc83_playSoundLoop: snd %d vol %d pan %d", snd, vol, pan);
+}
+
+void SimonEngine::vc84_stopSoundLoop() {
+	// Stop looping sound effect
+	debug(0, "STUB: vc84_stopSoundLoop");
+}
+
 } // End of namespace Simon





More information about the Scummvm-git-logs mailing list