diff options
Diffstat (limited to 'src/mame/apple/rbv.h')
-rw-r--r-- | src/mame/apple/rbv.h | 47 |
1 files changed, 27 insertions, 20 deletions
diff --git a/src/mame/apple/rbv.h b/src/mame/apple/rbv.h index a843b89ad91..da303a3f211 100644 --- a/src/mame/apple/rbv.h +++ b/src/mame/apple/rbv.h @@ -6,23 +6,20 @@ #pragma once -#include "emupal.h" +#include "machine/pseudovia.h" + #include "screen.h" + // ======================> rbv_device -class rbv_device : public device_t +class rbv_device : public device_t, public device_palette_interface { public: // construction/destruction - rbv_device(const machine_config &mconfig, const char *tag, device_t *owner) - : rbv_device(mconfig, tag, owner, (uint32_t)0) - { - } - - rbv_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + rbv_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - void map(address_map &map); + void map(address_map &map) ATTR_COLD; void set_ram_info(u32 *ram, u32 size); @@ -33,28 +30,37 @@ public: void asc_irq_w(int state); protected: - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - virtual void device_add_mconfig(machine_config &config) override; - virtual ioport_constructor device_input_ports() const override; + // device_t implementation + virtual void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; + virtual void device_add_mconfig(machine_config &config) override ATTR_COLD; + virtual ioport_constructor device_input_ports() const override ATTR_COLD; + + // device_palette_interface implementation + u32 palette_entries() const noexcept override; private: devcb_write_line write_6015, write_irq; - required_ioport m_montype; + required_ioport m_io_montype; required_device<screen_device> m_screen; - required_device<palette_device> m_palette; + required_device<pseudovia_device> m_pseudovia; emu_timer *m_6015_timer; - u8 m_pseudovia_regs[256], m_pseudovia_ier, m_pseudovia_ifr; + + bool m_configured; + s32 m_hres, m_vres; + u8 m_montype; + bool m_monochrome; + u8 m_pal_address, m_pal_idx; u32 *m_ram_ptr; u32 m_ram_size; + u8 m_video_config; - uint8_t pseudovia_r(offs_t offset); - void pseudovia_w(offs_t offset, uint8_t data); - void pseudovia_recalc_irqs(); + u8 via2_video_config_r(); + void via2_video_config_w(u8 data); + void via2_irq_w(int state); TIMER_CALLBACK_MEMBER(mac_6015_tick); @@ -62,6 +68,7 @@ private: void dac_w(offs_t offset, u8 data); u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + template <bool Mono> u32 update_screen(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); }; // device type definition |