mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-08 03:47:32 +00:00
![Johannes Schickel](/assets/img/avatar_default.png)
This might cause nasty regressions, since it changes the way sounds are started. On the other hand it gets rid of the low level driver interface which was implemented before. And it should be a bit better secured against race conditions.
106 lines
3.0 KiB
C++
106 lines
3.0 KiB
C++
/* ScummVM - Graphic Adventure Engine
|
|
*
|
|
* ScummVM is the legal property of its developers, whose names
|
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
|
* file distributed with this source distribution.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
* LGPL License
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*
|
|
*/
|
|
|
|
#ifndef KYRA_SOUND_ADLIB_H
|
|
#define KYRA_SOUND_ADLIB_H
|
|
|
|
#include "kyra/sound.h"
|
|
|
|
#include "common/mutex.h"
|
|
|
|
namespace Kyra {
|
|
class AdLibDriver;
|
|
|
|
/**
|
|
* AdLib implementation of the sound output device.
|
|
*
|
|
* It uses a special sound file format special to
|
|
* Dune II, Kyrandia 1 and 2. While Dune II and
|
|
* Kyrandia 1 are using exact the same format, the
|
|
* one of Kyrandia 2 slightly differs.
|
|
*
|
|
* See AdLibDriver for more information.
|
|
* @see AdLibDriver
|
|
*/
|
|
class SoundAdLibPC : public Sound {
|
|
public:
|
|
SoundAdLibPC(KyraEngine_v1 *vm, Audio::Mixer *mixer);
|
|
~SoundAdLibPC();
|
|
|
|
virtual kType getMusicType() const { return kAdLib; }
|
|
|
|
virtual bool init();
|
|
virtual void process();
|
|
|
|
virtual void updateVolumeSettings();
|
|
|
|
virtual void loadSoundFile(uint file);
|
|
virtual void loadSoundFile(Common::String file);
|
|
|
|
virtual void playTrack(uint8 track);
|
|
virtual void haltTrack();
|
|
virtual bool isPlaying() const;
|
|
|
|
virtual void playSoundEffect(uint8 track);
|
|
|
|
virtual void beginFadeOut();
|
|
private:
|
|
void internalLoadFile(Common::String file);
|
|
|
|
void play(uint8 track);
|
|
|
|
AdLibDriver *_driver;
|
|
|
|
bool _v2;
|
|
uint8 _trackEntries[500];
|
|
uint8 *_soundDataPtr;
|
|
int _sfxPlayingSound;
|
|
|
|
Common::String _soundFileLoaded;
|
|
|
|
int _numSoundTriggers;
|
|
const int *_soundTriggers;
|
|
|
|
static const int _kyra1NumSoundTriggers;
|
|
static const int _kyra1SoundTriggers[];
|
|
};
|
|
|
|
} // End of namespace Kyra
|
|
|
|
#endif
|