diff options
| author | Chris Apers | 2004-12-10 15:11:53 +0000 | 
|---|---|---|
| committer | Chris Apers | 2004-12-10 15:11:53 +0000 | 
| commit | 981d5fb1a203bbd18dce91b6ab2f174a3b1af8c5 (patch) | |
| tree | 56d919467c973dd5b19816924f9717dabd469fab | |
| parent | e1458ca1ff6ddb20c0a4fe5fac296ffd91fef7a1 (diff) | |
| download | scummvm-rg350-981d5fb1a203bbd18dce91b6ab2f174a3b1af8c5.tar.gz scummvm-rg350-981d5fb1a203bbd18dce91b6ab2f174a3b1af8c5.tar.bz2 scummvm-rg350-981d5fb1a203bbd18dce91b6ab2f174a3b1af8c5.zip  | |
Reading from memory card is too slow
svn-id: r16012
| -rw-r--r-- | sword1/music.cpp | 22 | 
1 files changed, 22 insertions, 0 deletions
diff --git a/sword1/music.cpp b/sword1/music.cpp index d24203bc2f..d1112e4cac 100644 --- a/sword1/music.cpp +++ b/sword1/music.cpp @@ -63,12 +63,34 @@ WaveAudioStream::~WaveAudioStream(void) {  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;  }  | 
