aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/ds/arm9/source/cdaudio.cpp
diff options
context:
space:
mode:
authorRobin Watts2007-12-24 18:32:18 +0000
committerRobin Watts2007-12-24 18:32:18 +0000
commit22dca84d30fdbb6b9c2bcd8accdbb6595f89e12d (patch)
tree4da9464839309d67aa36a1569f517193d27b26dc /backends/platform/ds/arm9/source/cdaudio.cpp
parentbe737e074dfd82a00e8cdcbc69f53fe4614e63c2 (diff)
downloadscummvm-rg350-22dca84d30fdbb6b9c2bcd8accdbb6595f89e12d.tar.gz
scummvm-rg350-22dca84d30fdbb6b9c2bcd8accdbb6595f89e12d.tar.bz2
scummvm-rg350-22dca84d30fdbb6b9c2bcd8accdbb6595f89e12d.zip
ARM version of central ADPCM decoding block for NDS. Define ARM_ADPCM to
enable. Apparently may not be required as this isn't speed critical - but I've written it now, so seems a shame to lose it. svn-id: r29980
Diffstat (limited to 'backends/platform/ds/arm9/source/cdaudio.cpp')
-rw-r--r--backends/platform/ds/arm9/source/cdaudio.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/backends/platform/ds/arm9/source/cdaudio.cpp b/backends/platform/ds/arm9/source/cdaudio.cpp
index 2b285e782a..9569a820f2 100644
--- a/backends/platform/ds/arm9/source/cdaudio.cpp
+++ b/backends/platform/ds/arm9/source/cdaudio.cpp
@@ -244,6 +244,11 @@ void update() {
playNextBlock();
}
+#ifdef ARM_ADPCM
+extern "C" void ARM_adcpm(int *block, int len, int stepTableIndex,
+ int firstSample, s16 *decompressionBuffer);
+#endif
+
void decompressBlock() {
int block[2048];
bool loop = false;
@@ -294,7 +299,13 @@ void decompressBlock() {
return;
}
}
-
+
+#ifdef ARM_ADPCM
+ ARM_adpcm(block, waveHeader.fmtExtra,
+ blockHeader.stepTableIndex,
+ blockHeader.firstSample,
+ decompressionBuffer);
+#else
// First sample is in header
decompressionBuffer[0] = blockHeader.firstSample;
@@ -387,6 +398,7 @@ void decompressBlock() {
}
+#endif
}
void playNextBlock() {