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

Chris Apers chrilith at users.sourceforge.net
Fri Dec 10 07:13:01 CET 2004


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

Modified Files:
	music.cpp 
Log Message:
Reading from memory card is too slow

Index: music.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword1/music.cpp,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -d -r1.32 -r1.33
--- music.cpp	9 Dec 2004 16:33:54 -0000	1.32
+++ music.cpp	10 Dec 2004 15:11:53 -0000	1.33
@@ -63,12 +63,34 @@
 
 int WaveAudioStream::readBuffer(int16 *buffer, const int numSamples) {
 	int samples = ((int)_samplesLeft < numSamples) ? (int)_samplesLeft : numSamples;
+
+#ifdef __PALM_OS__
+	int cnt = samples;
+	int size = (_bitsPerSample == 16 ? samples * 2 : samples);
+	void *sound = malloc(size);
+	
+	_sourceFile->read(sound, size);
+
+	if (_bitsPerSample == 16) {
+		int16 *src = (int16 *)sound;
+		while(cnt--)
+			*buffer++ = (int16)READ_LE_UINT16(src++);
+
+	} else {
+		int8 *src = (int8 *)sound;
+		while(cnt--)
+			*buffer++ = (int16)*src++ << 8;
+	}
+
+	free(sound);
+#else
 	if (_bitsPerSample == 16)
 		for (int cnt = 0; cnt < samples; cnt++)
 			*buffer++ = (int16)_sourceFile->readUint16LE();
 	else
 		for (int cnt = 0; cnt < samples; cnt++)
 			*buffer++ = (int16)_sourceFile->readByte() << 8;
+#endif
 	_samplesLeft -= samples;
 	return samples;
 }





More information about the Scummvm-git-logs mailing list