diff options
Diffstat (limited to 'engines/lastexpress/data')
-rw-r--r-- | engines/lastexpress/data/animation.cpp | 3 | ||||
-rw-r--r-- | engines/lastexpress/data/archive.h | 3 | ||||
-rw-r--r-- | engines/lastexpress/data/background.cpp | 1 | ||||
-rw-r--r-- | engines/lastexpress/data/font.cpp | 2 | ||||
-rw-r--r-- | engines/lastexpress/data/font.h | 2 | ||||
-rw-r--r-- | engines/lastexpress/data/scene.cpp | 1 | ||||
-rw-r--r-- | engines/lastexpress/data/scene.h | 6 | ||||
-rw-r--r-- | engines/lastexpress/data/sequence.cpp | 1 | ||||
-rw-r--r-- | engines/lastexpress/data/sequence.h | 2 | ||||
-rw-r--r-- | engines/lastexpress/data/snd.cpp | 40 | ||||
-rw-r--r-- | engines/lastexpress/data/snd.h | 4 | ||||
-rw-r--r-- | engines/lastexpress/data/subtitle.cpp | 2 |
12 files changed, 63 insertions, 4 deletions
diff --git a/engines/lastexpress/data/animation.cpp b/engines/lastexpress/data/animation.cpp index 11e4b4d290..2bf9bd4999 100644 --- a/engines/lastexpress/data/animation.cpp +++ b/engines/lastexpress/data/animation.cpp @@ -35,7 +35,10 @@ #include "common/events.h" #include "common/rational.h" +#include "common/rect.h" #include "common/stream.h" +#include "common/system.h" +#include "common/textconsole.h" #include "engines/engine.h" diff --git a/engines/lastexpress/data/archive.h b/engines/lastexpress/data/archive.h index 3860245bc5..17b1d661fa 100644 --- a/engines/lastexpress/data/archive.h +++ b/engines/lastexpress/data/archive.h @@ -39,6 +39,9 @@ */ #include "common/archive.h" +#include "common/hash-str.h" +#include "common/hashmap.h" +#include "common/str.h" namespace LastExpress { diff --git a/engines/lastexpress/data/background.cpp b/engines/lastexpress/data/background.cpp index 8b0d338f64..e8236bca86 100644 --- a/engines/lastexpress/data/background.cpp +++ b/engines/lastexpress/data/background.cpp @@ -31,6 +31,7 @@ #include "lastexpress/debug.h" +#include "common/rect.h" #include "common/stream.h" namespace LastExpress { diff --git a/engines/lastexpress/data/font.cpp b/engines/lastexpress/data/font.cpp index 99239606ab..d9acbb8382 100644 --- a/engines/lastexpress/data/font.cpp +++ b/engines/lastexpress/data/font.cpp @@ -25,8 +25,10 @@ #include "lastexpress/data/font.h" +#include "common/rect.h" #include "common/stream.h" #include "common/system.h" +#include "common/textconsole.h" namespace LastExpress { diff --git a/engines/lastexpress/data/font.h b/engines/lastexpress/data/font.h index d49db35ba5..7bcf03ed7d 100644 --- a/engines/lastexpress/data/font.h +++ b/engines/lastexpress/data/font.h @@ -39,10 +39,12 @@ byte {x} - Unknown data (probably just garbage) */ +#include "common/str.h" #include "graphics/surface.h" namespace Common { class SeekableReadStream; +struct Rect; } namespace LastExpress { diff --git a/engines/lastexpress/data/scene.cpp b/engines/lastexpress/data/scene.cpp index 5a943982c4..e893d641a5 100644 --- a/engines/lastexpress/data/scene.cpp +++ b/engines/lastexpress/data/scene.cpp @@ -31,6 +31,7 @@ #include "lastexpress/lastexpress.h" #include "lastexpress/resource.h" +#include "common/textconsole.h" #include "common/stream.h" namespace LastExpress { diff --git a/engines/lastexpress/data/scene.h b/engines/lastexpress/data/scene.h index 7fc9425f28..9ec1899402 100644 --- a/engines/lastexpress/data/scene.h +++ b/engines/lastexpress/data/scene.h @@ -72,9 +72,15 @@ #include "lastexpress/shared.h" #include "common/array.h" +#include "common/rect.h" namespace Common { class SeekableReadStream; +class String; +} + +namespace Graphics { +struct Surface; } namespace LastExpress { diff --git a/engines/lastexpress/data/sequence.cpp b/engines/lastexpress/data/sequence.cpp index fe694187a4..b986a33d5c 100644 --- a/engines/lastexpress/data/sequence.cpp +++ b/engines/lastexpress/data/sequence.cpp @@ -30,6 +30,7 @@ #include "lastexpress/debug.h" #include "common/stream.h" +#include "common/textconsole.h" namespace LastExpress { diff --git a/engines/lastexpress/data/sequence.h b/engines/lastexpress/data/sequence.h index 7ad0a57254..cd16f26ab2 100644 --- a/engines/lastexpress/data/sequence.h +++ b/engines/lastexpress/data/sequence.h @@ -77,6 +77,8 @@ #include "lastexpress/shared.h" #include "common/array.h" +#include "common/rect.h" +#include "common/str.h" namespace Common { class SeekableReadStream; diff --git a/engines/lastexpress/data/snd.cpp b/engines/lastexpress/data/snd.cpp index bd2320726a..a50fa7be08 100644 --- a/engines/lastexpress/data/snd.cpp +++ b/engines/lastexpress/data/snd.cpp @@ -30,12 +30,48 @@ #include "lastexpress/debug.h" -#include "audio/decoders/adpcm.h" +#include "audio/decoders/adpcm_intern.h" #include "audio/audiostream.h" +#include "common/debug.h" #include "common/memstream.h" +#include "common/system.h" +#include "common/textconsole.h" namespace LastExpress { +// Last Express ADPCM is similar to MS IMA mono, but inverts its nibbles +// and does not have the 4 byte per channel requirement + +class LastExpress_ADPCMStream : public Audio::Ima_ADPCMStream { +public: + LastExpress_ADPCMStream(Common::SeekableReadStream *stream, DisposeAfterUse::Flag disposeAfterUse, uint32 size, uint32 blockSize) : + Audio::Ima_ADPCMStream(stream, disposeAfterUse, size, 44100, 1, blockSize) {} + + int readBuffer(int16 *buffer, const int numSamples) { + int samples = 0; + + assert(numSamples % 2 == 0); + + while (samples < numSamples && !_stream->eos() && _stream->pos() < _endpos) { + if (_blockPos[0] == _blockAlign) { + // read block header + _status.ima_ch[0].last = _stream->readSint16LE(); + _status.ima_ch[0].stepIndex = _stream->readSint16LE(); + _blockPos[0] = 4; + } + + for (; samples < numSamples && _blockPos[0] < _blockAlign && !_stream->eos() && _stream->pos() < _endpos; samples += 2) { + byte data = _stream->readByte(); + _blockPos[0]++; + buffer[samples] = decodeIMA((data >> 4) & 0x0f); + buffer[samples + 1] = decodeIMA(data & 0x0f); + } + } + + return samples; + } +}; + ////////////////////////////////////////////////////////////////////////// // Sound ////////////////////////////////////////////////////////////////////////// @@ -60,7 +96,7 @@ void SimpleSound::loadHeader(Common::SeekableReadStream *in) { } Audio::AudioStream *SimpleSound::makeDecoder(Common::SeekableReadStream *in, uint32 size) const { - return Audio::makeADPCMStream(in, DisposeAfterUse::YES, size, Audio::kADPCMMSImaLastExpress, 44100, 1, _blockSize); + return new LastExpress_ADPCMStream(in, DisposeAfterUse::YES, size, _blockSize); } void SimpleSound::play(Audio::AudioStream *as) { diff --git a/engines/lastexpress/data/snd.h b/engines/lastexpress/data/snd.h index 2d28404f42..61d1c0951a 100644 --- a/engines/lastexpress/data/snd.h +++ b/engines/lastexpress/data/snd.h @@ -42,8 +42,8 @@ #include "audio/mixer.h" namespace Audio { - class AudioStream; - class QueuingAudioStream; +class AudioStream; +class QueuingAudioStream; } namespace Common { diff --git a/engines/lastexpress/data/subtitle.cpp b/engines/lastexpress/data/subtitle.cpp index 953edd1d1a..2bc5d3c5ad 100644 --- a/engines/lastexpress/data/subtitle.cpp +++ b/engines/lastexpress/data/subtitle.cpp @@ -33,7 +33,9 @@ #include "lastexpress/debug.h" #include "common/debug.h" +#include "common/rect.h" #include "common/stream.h" +#include "common/textconsole.h" namespace LastExpress { |