diff options
Diffstat (limited to 'src/mess/includes/svision.h')
-rw-r--r-- | src/mess/includes/svision.h | 134 |
1 files changed, 3 insertions, 131 deletions
diff --git a/src/mess/includes/svision.h b/src/mess/includes/svision.h index 7f9e5bb18b5..21d5ab39795 100644 --- a/src/mess/includes/svision.h +++ b/src/mess/includes/svision.h @@ -8,6 +8,7 @@ #define SVISION_H_ #include "cpu/m6502/m65c02.h" +#include "audio/svis_snd.h" #include "bus/generic/slot.h" #include "bus/generic/carts.h" @@ -31,14 +32,13 @@ struct tvlink_t int palette_on; }; -class svision_sound_device; // defined below - class svision_state : public driver_device { public: svision_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), + m_sound(*this, "custom"), m_cart(*this, "cartslot"), m_reg(*this, "reg"), m_videoram(*this, "videoram"), @@ -46,7 +46,6 @@ public: m_joy2(*this, "JOY2"), m_palette(*this, "palette") { } - svision_sound_device *m_sound; int *m_dma_finished; svision_t m_svision; svision_pet_t m_pet; @@ -75,6 +74,7 @@ public: protected: required_device<cpu_device> m_maincpu; + required_device<svision_sound_device> m_sound; required_device<generic_slot_device> m_cart; required_shared_ptr<UINT8> m_reg; required_shared_ptr<UINT8> m_videoram; @@ -87,132 +87,4 @@ protected: memory_bank *m_bank2; }; - -/*----------- defined in drivers/svision.c -----------*/ - -void svision_irq( running_machine &machine ); - - -/*----------- defined in audio/svision.c -----------*/ - - -//************************************************************************** -// TYPE DEFINITIONS -//************************************************************************** - -enum SVISION_NOISE_Type -{ - SVISION_NOISE_Type7Bit, - SVISION_NOISE_Type14Bit -}; - -struct SVISION_NOISE -{ - SVISION_NOISE() : - on(0), - right(0), - left(0), - play(0), - type(SVISION_NOISE_Type7Bit), - state(0), - volume(0), - count(0), - step(0.0), - pos(0.0), - value(0) - { - memset(reg, 0, sizeof(UINT8)*3); - } - - UINT8 reg[3]; - int on, right, left, play; - SVISION_NOISE_Type type; - int state; - int volume; - int count; - double step, pos; - int value; // currently simple random function -}; - -struct SVISION_DMA -{ - SVISION_DMA() : - on(0), - right(0), - left(0), - ca14to16(0), - start(0), - size(0), - pos(0.0), - step(0.0), - finished(0) - { - memset(reg, 0, sizeof(UINT8)*5); - } - - UINT8 reg[5]; - int on, right, left; - int ca14to16; - int start,size; - double pos, step; - int finished; -}; - -struct SVISION_CHANNEL -{ - SVISION_CHANNEL() : - on(0), - waveform(0), - volume(0), - pos(0), - size(0), - count(0) - { - memset(reg, 0, sizeof(UINT8)*4); - } - - UINT8 reg[4]; - int on; - int waveform, volume; - int pos; - int size; - int count; -}; - - -// ======================> svision_sound_device - -class svision_sound_device : public device_t, - public device_sound_interface -{ -public: - svision_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - ~svision_sound_device() { } - -protected: - // device-level overrides - virtual void device_start(); - - // sound stream update overrides - virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples); - -public: - DECLARE_WRITE8_MEMBER( svision_sounddma_w ); - DECLARE_WRITE8_MEMBER( svision_noise_w ); - -public: - int *dma_finished(); - void sound_decrement(); - void soundport_w(int which, int offset, int data); - -private: - sound_stream *m_mixer_channel; - SVISION_DMA m_dma; - SVISION_NOISE m_noise; - SVISION_CHANNEL m_channel[2]; -}; - -extern const device_type SVISION; - - #endif /* SVISION_H_ */ |