diff options
Diffstat (limited to 'src/devices/machine/acorn_vidc.h')
-rw-r--r-- | src/devices/machine/acorn_vidc.h | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/src/devices/machine/acorn_vidc.h b/src/devices/machine/acorn_vidc.h index 682e4d58a1c..436ee7a920b 100644 --- a/src/devices/machine/acorn_vidc.h +++ b/src/devices/machine/acorn_vidc.h @@ -34,7 +34,7 @@ class acorn_vidc10_device : public device_t, public: // I/O operations void write(offs_t offset, u32 data, u32 mem_mask = ~0); - DECLARE_READ_LINE_MEMBER( flyback_r ); + int flyback_r(); auto vblank() { return m_vblank_cb.bind(); } auto sound_drq() { return m_sound_drq_cb.bind(); } // MEMC comms @@ -46,22 +46,27 @@ public: void set_cursor_enable(bool state) { m_cursor_enable = state; } u32 get_cursor_size() { return (m_crtc_regs[CRTC_VCER] - m_crtc_regs[CRTC_VCSR]) * (32/4); } + virtual bool get_dac_mode() { return false; } + protected: acorn_vidc10_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int dac_type); // device-level overrides //virtual void device_validity_check(validity_checker &valid) const override; virtual void device_add_mconfig(machine_config &config) override; - virtual u32 palette_entries() const override; + virtual u32 palette_entries() const noexcept override; virtual void device_config_complete() override; virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual space_config_vector memory_space_config() const override; u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); virtual u32 get_pixel_clock(); + TIMER_CALLBACK_MEMBER(vblank_timer); + TIMER_CALLBACK_MEMBER(sound_drq_timer); + address_space_config m_space_config; + void regs_map(address_map &map); enum { @@ -69,10 +74,6 @@ protected: CRTC_VCR, CRTC_VSWR, CRTC_VBSR, CRTC_VDSR, CRTC_VDER, CRTC_VBER, CRTC_VCSR, CRTC_VCER }; u32 m_crtc_regs[16]; - enum { - TIMER_VIDEO = 1, - TIMER_SOUND = 2 - }; inline void screen_vblank_line_update(); inline void screen_dynamic_res_change(); @@ -81,7 +82,6 @@ protected: u16 m_pal_4bpp_base; u16 m_pal_cursor_base; u16 m_pal_border_base; - const double m_sound_internal_divider = 8.0; u8 m_bpp_mode, m_crtc_interlace; u8 m_sound_frequency_latch; @@ -90,9 +90,12 @@ protected: required_device_array<dac_16bit_r2r_twos_complement_device, 8> m_dac; int m_dac_type; -private: required_device<speaker_device> m_lspeaker; required_device<speaker_device> m_rspeaker; + + virtual void refresh_stereo_image(u8 channel); + const int m_sound_max_channels = 8; +private: devcb_write_line m_vblank_cb; devcb_write_line m_sound_drq_cb; @@ -124,9 +127,7 @@ private: bool m_sound_frequency_test_bit; u8 m_stereo_image[8]; const float m_sound_input_gain = 0.05f; - const int m_sound_max_channels = 8; int16_t m_ulaw_lookup[256]; - inline void refresh_stereo_image(u8 channel); }; class acorn_vidc1_device : public acorn_vidc10_device @@ -154,21 +155,18 @@ public: arm_vidc20_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); void write_dac32(u8 channel, u16 data); - bool get_dac_mode(); + virtual bool get_dac_mode() override; protected: virtual void device_add_mconfig(machine_config &config) override; void regs_map(address_map &map); - virtual u32 palette_entries() const override; + virtual u32 palette_entries() const noexcept override; virtual void device_start() override; virtual void device_reset() override; virtual void device_config_complete() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); virtual u32 get_pixel_clock() override; - const double m_sound_internal_divider = 1.0; - private: void vidc20_pal_data_display_w(offs_t offset, u32 data); void vidc20_pal_data_index_w(u32 data); @@ -186,6 +184,10 @@ private: u8 m_pixel_rate; u8 m_vco_r_modulo; u8 m_vco_v_modulo; + + required_device_array<dac_16bit_r2r_twos_complement_device, 2> m_dac32; + + virtual void refresh_stereo_image(u8 channel) override; }; DECLARE_DEVICE_TYPE(ARM_VIDC20, arm_vidc20_device) |