From 485b70b2b004d2683e31920b8f33053b46fb811d Mon Sep 17 00:00:00 2001 From: Nicola Mettifogo Date: Mon, 15 Oct 2007 20:20:50 +0000 Subject: * Changed IFF/8SVX audio to use signed data (int8), and modified Parallaction accordingly. * Implemented proper beep in Parallaction for Amiga. svn-id: r29226 --- engines/parallaction/sound.cpp | 23 ++++++++++++++++------- engines/parallaction/sound.h | 2 +- 2 files changed, 17 insertions(+), 8 deletions(-) (limited to 'engines') diff --git a/engines/parallaction/sound.cpp b/engines/parallaction/sound.cpp index 872ed29b08..c6c108c111 100644 --- a/engines/parallaction/sound.cpp +++ b/engines/parallaction/sound.cpp @@ -318,20 +318,29 @@ AmigaSoundMan::~AmigaSoundMan() { stopSfx(3); } -static byte res_amigaBeep[] = { - 0, 20, 40, 60, 80, 60, 40, 20, 0, 236, 216, 196, 176, 196, 216, 236 +#define AMIGABEEP_SIZE 16 +#define NUM_REPEATS 60 + +static int8 res_amigaBeep[AMIGABEEP_SIZE] = { + 0, 20, 40, 60, 80, 60, 40, 20, 0, -20, -40, -60, -80, -60, -40, -20 }; + void AmigaSoundMan::loadChannelData(const char *filename, Channel *ch) { if (!scumm_stricmp("beep", filename)) { ch->header.oneShotHiSamples = 0; ch->header.repeatHiSamples = 0; ch->header.samplesPerHiCycle = 0; - ch->header.samplesPerSec = 12000; - ch->header.volume = 255; - ch->data = res_amigaBeep; - ch->dataSize = 16; - ch->dispose = false; + ch->header.samplesPerSec = 11934; + ch->header.volume = 160; + ch->data = new int8[AMIGABEEP_SIZE * NUM_REPEATS]; + int8* odata = ch->data; + for (uint i = 0; i < NUM_REPEATS; i++) { + memcpy(odata, res_amigaBeep, AMIGABEEP_SIZE); + odata += AMIGABEEP_SIZE; + } + ch->dataSize = AMIGABEEP_SIZE * NUM_REPEATS; + ch->dispose = true; return; } diff --git a/engines/parallaction/sound.h b/engines/parallaction/sound.h index c07fa9affc..9d6ea01485 100644 --- a/engines/parallaction/sound.h +++ b/engines/parallaction/sound.h @@ -89,7 +89,7 @@ class AmigaSoundMan : public SoundMan { struct Channel { Audio::Voice8Header header; - byte *data; + int8 *data; uint32 dataSize; bool dispose; Audio::SoundHandle handle; -- cgit v1.2.3