From 9d041cc0598212bb2ef95584f0213aa4d286e2a6 Mon Sep 17 00:00:00 2001 From: Travis Howell Date: Mon, 28 May 2007 11:22:53 +0000 Subject: Add sound effects code for Amiga and AtariST versions of Elvira 2. svn-id: r26989 --- engines/agos/res_snd.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'engines/agos/res_snd.cpp') diff --git a/engines/agos/res_snd.cpp b/engines/agos/res_snd.cpp index 41c3dce075..73eab46cbf 100644 --- a/engines/agos/res_snd.cpp +++ b/engines/agos/res_snd.cpp @@ -397,6 +397,38 @@ void AGOSEngine::loadSoundFile(const char* filename) { _sound->playSfxData(dst, 0, 0, 0); } +void AGOSEngine::loadSound(uint sound) { + byte *dst; + uint32 offs, size; + + if (_curSfxFile == NULL) + return; + + dst = _curSfxFile; + if (getGameType() == GType_WW) { + uint tmp = sound; + while (tmp--) + dst += READ_LE_UINT16(dst) + 4; + + size = READ_LE_UINT16(dst); + offs = 4; + } else if (getGameType() == GType_ELVIRA2) { + while (READ_BE_UINT32(dst + 4) != sound) + dst += 12; + + size = READ_BE_UINT32(dst); + offs = READ_BE_UINT32(dst + 8); + } else { + while (READ_BE_UINT16(dst + 6) != sound) + dst += 12; + + size = READ_BE_UINT16(dst + 2); + offs = READ_BE_UINT32(dst + 8); + } + + _sound->playRawData(dst + offs, sound, size); +} + void AGOSEngine::loadSound(uint sound, int pan, int vol, uint type) { byte *dst; -- cgit v1.2.3