[Scummvm-cvs-logs] CVS: scummvm/scumm/smush codec37.cpp,1.26,1.26.2.1 smush_player.cpp,1.111.2.1,1.111.2.2 smush_player.h,1.26,1.26.2.1

Travis Howell kirben at users.sourceforge.net
Thu Apr 22 05:29:10 CEST 2004


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

Modified Files:
      Tag: branch-0-6-0
	codec37.cpp smush_player.cpp smush_player.h 
Log Message:

Add some fixes from main branch:
special case for 384x242 smush resolution for ft pc demo, it use additional buffer
Fix bad array size (part of bug report #924685)


Index: codec37.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/smush/codec37.cpp,v
retrieving revision 1.26
retrieving revision 1.26.2.1
diff -u -d -r1.26 -r1.26.2.1
--- codec37.cpp	6 Jan 2004 12:45:31 -0000	1.26
+++ codec37.cpp	22 Apr 2004 12:27:22 -0000	1.26.2.1
@@ -464,7 +464,7 @@
 		memcpy(_deltaBufs[_curtable], src + 16, decoded_size);
 		break;
 	case 1:
-		error("codec37: missing opcode 1");
+		warning("codec37: missing opcode 1");
 		break;
 	case 2:
 		bompDecodeLine(_deltaBufs[_curtable], src + 16, decoded_size);

Index: smush_player.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/smush/smush_player.cpp,v
retrieving revision 1.111.2.1
retrieving revision 1.111.2.2
diff -u -d -r1.111.2.1 -r1.111.2.2
--- smush_player.cpp	29 Feb 2004 01:08:17 -0000	1.111.2.1
+++ smush_player.cpp	22 Apr 2004 12:27:22 -0000	1.111.2.2
@@ -224,7 +224,8 @@
 	_sf[4] = NULL;
 	_base = NULL;
 	_frameBuffer = NULL;
-	
+	_specialBuffer = NULL;
+
 	_skipNext = false;
 	_subtitles = ConfMan.getBool("subtitles");
 	_dst = NULL;
@@ -284,6 +285,11 @@
 		_base = NULL;
 	}
 	
+	if (_specialBuffer) {
+		free(_specialBuffer);
+		_specialBuffer = NULL;
+	}
+
 	_vm->_mixer->stopHandle(_IACTchannel);
 
 	_vm->_fullRedraw = true;
@@ -680,13 +686,14 @@
 	int width = b.getWord();
 	int height = b.getWord();
 
-	if ((height > _vm->_screenHeight) || (width > _vm->_screenWidth))
+	if ((height == 242) && (width == 384)) {
+		_dst = _specialBuffer = (byte *)malloc(242 * 384);
+	} else if ((height > _vm->_screenHeight) || (width > _vm->_screenWidth))
 		return;
-
 	// FT Insane uses smaller frames to draw overlays with moving objects
 	// Other .san files do have them as well but their purpose in unknown
 	// and often it causes memory overdraw. So just skip those frames
-	if (!_insanity && ((height != _vm->_screenHeight) || (width != _vm->_screenWidth)))
+	else if (!_insanity && ((height != _vm->_screenHeight) || (width != _vm->_screenWidth)))
 		return;
 
 	if (!_alreadyInit) {
@@ -695,8 +702,8 @@
 		_alreadyInit = true;
 	}
 
-	_width = _vm->_screenWidth;
-	_height = _vm->_screenHeight;
+	_width = width;
+	_height = height;
 	b.getWord();
 	b.getWord();
 

Index: smush_player.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/smush/smush_player.h,v
retrieving revision 1.26
retrieving revision 1.26.2.1
diff -u -d -r1.26 -r1.26.2.1
--- smush_player.h	9 Feb 2004 18:57:05 -0000	1.26
+++ smush_player.h	22 Apr 2004 12:27:22 -0000	1.26.2.1
@@ -49,6 +49,7 @@
 	Codec47Decoder _codec47;
 	FileChunk *_base;
 	byte *_frameBuffer;
+	byte *_specialBuffer;
 
 	bool _skipNext;
 	bool _subtitles;





More information about the Scummvm-git-logs mailing list