1 // license:BSD-3-Clause 2 // copyright-holders:Aaron Giles 3 /*************************************************************************** 4 5 cclimber.h 6 7 Functions to emulate the cclimber audio boards 8 9 ***************************************************************************/ 10 #ifndef MAME_AUDIO_CCLIMBER_H 11 #define MAME_AUDIO_CCLIMBER_H 12 13 #pragma once 14 15 #include "sound/samples.h" 16 DECLARE_DEVICE_TYPE(CCLIMBER_AUDIO,cclimber_audio_device)17DECLARE_DEVICE_TYPE(CCLIMBER_AUDIO, cclimber_audio_device) 18 19 // ======================> cclimber_audio_device 20 21 class cclimber_audio_device : public device_t 22 { 23 public: 24 // construction/destruction 25 cclimber_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 26 27 void sample_trigger(int state); 28 void sample_trigger_w(uint8_t data); 29 void sample_rate_w(uint8_t data); 30 void sample_volume_w(uint8_t data); 31 32 protected: 33 // device level overrides 34 virtual void device_start() override; 35 virtual void device_add_mconfig(machine_config &config) override; 36 37 void play_sample(int start, int freq, int volume); 38 39 private: 40 std::unique_ptr<int16_t[]> m_sample_buf; // buffer to decode samples at run time 41 uint8_t m_sample_num; 42 uint32_t m_sample_freq; 43 uint8_t m_sample_volume; 44 required_device<samples_device> m_samples; 45 required_region_ptr<uint8_t> m_samples_region; 46 47 void sample_select_w(uint8_t data); 48 49 SAMPLES_START_CB_MEMBER( sh_start ); 50 }; 51 52 53 #endif // MAME_AUDIO_CCLIMBER_H 54