summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/acorn_vidc.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/acorn_vidc.h')
-rw-r--r--src/devices/machine/acorn_vidc.h34
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)