[Scummvm-cvs-logs] CVS: scummvm/simon simon.cpp,1.32,1.33

Travis Howell kirben at users.sourceforge.net
Mon Oct 28 00:47:12 CET 2002


Update of /cvsroot/scummvm/scummvm/simon
In directory usw-pr-cvs1:/tmp/cvs-serv17361/simon

Modified Files:
	simon.cpp 
Log Message:

Fixes for voc support in simon 1 dos talkie, part of patch #629555 


Index: simon.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/simon.cpp,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -d -r1.32 -r1.33
--- simon.cpp	26 Oct 2002 10:39:00 -0000	1.32
+++ simon.cpp	28 Oct 2002 08:46:35 -0000	1.33
@@ -4727,11 +4727,12 @@
 	uint16 datablock_offset;
 	uint16 version;
 	uint16 id;
-	uint8 blocktype;
 } GCC_PACK;
 
 struct VocBlockHeader {
-	uint8 tc;
+	uint8 blocktype;
+	uint8 size[3];
+	uint8 sr;
 	uint8 pack;
 } GCC_PACK;
 
@@ -4791,12 +4792,10 @@
 			return;
 		}
 
-		_voice_file->read(&size, 4);
-		size = size & 0xffffff;
-		_voice_file->seek(-1, SEEK_CUR);
 		_voice_file->read(&voc_block_hdr, sizeof(voc_block_hdr));
 
-		uint32 samples_per_sec = 1000000L / (256L - (long)voc_block_hdr.tc);
+		size = voc_block_hdr.size[0] + (voc_block_hdr.size[1] << 8) + (voc_block_hdr.size[2] << 16) - 2;
+		uint32 samples_per_sec = 1000000L / (256L - (long)voc_block_hdr.sr);
 
 		byte *buffer = (byte *)malloc(size);
 		_voice_file->read(buffer, size);
@@ -4824,14 +4823,10 @@
 				return;
 			}
 
-			_effects_file->read(&size, 4);
-			// FIXME - do we really want to read a block of 4 bytes, ignoring endian issues?
-			printf("FOO %08x / %d (please report this to Fingolfin)\n", size, size & 0xffffff);
-			size = size & 0xffffff;
-			_effects_file->seek(-1, SEEK_CUR);
 			_effects_file->read(&voc_block_hdr, sizeof(voc_block_hdr));
 
-			uint32 samples_per_sec = 1000000L / (256L - (long)voc_block_hdr.tc);
+			size = voc_block_hdr.size[0] + (voc_block_hdr.size[1] << 8) + (voc_block_hdr.size[2] << 16) - 2;
+			uint32 samples_per_sec = 1000000L / (256L - (long)voc_block_hdr.sr);
 
 			byte *buffer = (byte *)malloc(size);
 			_effects_file->read(buffer, size);





More information about the Scummvm-git-logs mailing list