aboutsummaryrefslogtreecommitdiff
path: root/sword1
diff options
context:
space:
mode:
authorChris Apers2004-12-10 15:11:53 +0000
committerChris Apers2004-12-10 15:11:53 +0000
commit981d5fb1a203bbd18dce91b6ab2f174a3b1af8c5 (patch)
tree56d919467c973dd5b19816924f9717dabd469fab /sword1
parente1458ca1ff6ddb20c0a4fe5fac296ffd91fef7a1 (diff)
downloadscummvm-rg350-981d5fb1a203bbd18dce91b6ab2f174a3b1af8c5.tar.gz
scummvm-rg350-981d5fb1a203bbd18dce91b6ab2f174a3b1af8c5.tar.bz2
scummvm-rg350-981d5fb1a203bbd18dce91b6ab2f174a3b1af8c5.zip
Reading from memory card is too slow
svn-id: r16012
Diffstat (limited to 'sword1')
-rw-r--r--sword1/music.cpp22
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;
}