diff options
author | Eugene Sandulenko | 2007-11-19 20:34:26 +0000 |
---|---|---|
committer | Eugene Sandulenko | 2007-11-19 20:34:26 +0000 |
commit | 8a145bbb53eb82e18a31b39dcb5eba522940fd6d (patch) | |
tree | 9f5da5f1db864f889411c9692daeb3fa68020c15 | |
parent | d86246308d31b898ca22462de3a68910b52e0eb1 (diff) | |
download | scummvm-rg350-8a145bbb53eb82e18a31b39dcb5eba522940fd6d.tar.gz scummvm-rg350-8a145bbb53eb82e18a31b39dcb5eba522940fd6d.tar.bz2 scummvm-rg350-8a145bbb53eb82e18a31b39dcb5eba522940fd6d.zip |
Hook PC Speaker to Troll's Tale. Though pitch and duration are wrong
svn-id: r29569
-rw-r--r-- | engines/agi/preagi.cpp | 11 | ||||
-rw-r--r-- | engines/agi/preagi.h | 7 | ||||
-rw-r--r-- | engines/agi/preagi_common.cpp | 5 | ||||
-rw-r--r-- | engines/agi/preagi_troll.cpp | 2 |
4 files changed, 21 insertions, 4 deletions
diff --git a/engines/agi/preagi.cpp b/engines/agi/preagi.cpp index 217134c525..413f9250d0 100644 --- a/engines/agi/preagi.cpp +++ b/engines/agi/preagi.cpp @@ -149,7 +149,7 @@ void PreAgiEngine::initialize() { } _gfx = new GfxMgr(this); - _sound = new SoundMgr(this, _mixer); + //_sound = new SoundMgr(this, _mixer); _picture = new PictureMgr(this, _gfx); //_sprites = new SpritesMgr(this, _gfx); @@ -171,7 +171,12 @@ void PreAgiEngine::initialize() { _game.lineMinPrint = 0; // hardcoded _gfx->initVideo(); - _sound->initSound(); + //_sound->initSound(); + + _speakerStream = new Audio::PCSpeaker(_mixer->getOutputRate()); + _mixer->playInputStream(Audio::Mixer::kSFXSoundType, &_speakerHandle, + _speakerStream, -1, 255, 0, false, true); + //_timer->installTimerProc(agiTimerFunctionLow, 10 * 1000, NULL); @@ -191,7 +196,7 @@ void PreAgiEngine::initialize() { } PreAgiEngine::~PreAgiEngine() { - + delete _speakerStream; } int PreAgiEngine::init() { diff --git a/engines/agi/preagi.h b/engines/agi/preagi.h index 39e61592ae..0644a185c0 100644 --- a/engines/agi/preagi.h +++ b/engines/agi/preagi.h @@ -29,6 +29,8 @@ #include "agi/agi.h" #include "agi/preagi_common.h" +#include "sound/softsynth/pcspk.h" + namespace Agi { class PreAgiEngine : public AgiBase { @@ -88,8 +90,13 @@ public: // Saved Games Common::SaveFileManager* getSaveFileMan() { return _saveFileMan; } + void playNote(int16 frequency, int32 length); + private: int _defaultColor; + + Audio::PCSpeaker *_speakerStream; + Audio::SoundHandle _speakerHandle; }; } // End of namespace Agi diff --git a/engines/agi/preagi_common.cpp b/engines/agi/preagi_common.cpp index 65e59892d6..a2eec53e95 100644 --- a/engines/agi/preagi_common.cpp +++ b/engines/agi/preagi_common.cpp @@ -190,4 +190,9 @@ int PreAgiEngine::getSelection(SelectionTypes type) { return 0; } +void PreAgiEngine::playNote(int16 frequency, int32 length) { + _speakerStream->play(Audio::PCSpeaker::kWaveFormSquare, frequency, length); + _vm->_system->delayMillis(duration); +} + } diff --git a/engines/agi/preagi_troll.cpp b/engines/agi/preagi_troll.cpp index f8fc581112..7f7b007e78 100644 --- a/engines/agi/preagi_troll.cpp +++ b/engines/agi/preagi_troll.cpp @@ -483,7 +483,7 @@ void Troll::playTune(int tune, int len) { duration = READ_LE_UINT16(_gameData + ptr); ptr += 2; - // playNote(freq, duration); + _vm->playNote(freq, duration); } } |