summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/vrender0.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/vrender0.h')
-rw-r--r--src/devices/machine/vrender0.h164
1 files changed, 70 insertions, 94 deletions
diff --git a/src/devices/machine/vrender0.h b/src/devices/machine/vrender0.h
index 3efb859938b..ca418101959 100644
--- a/src/devices/machine/vrender0.h
+++ b/src/devices/machine/vrender0.h
@@ -20,20 +20,6 @@
#include "diserial.h"
//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define IDLE_LOOP_SPEEDUP
-
-
-
-//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-
-
-//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -48,28 +34,28 @@ public:
// construction/destruction
vr0uart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- void regs_map(address_map &map);
+ void regs_map(address_map &map) ATTR_COLD;
void set_channel_num(int ch) { m_channel_num = ch; }
void set_parent(vrender0soc_device *parent) { m_parent = parent; }
protected:
// device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ virtual void device_start() override ATTR_COLD;
+ virtual void device_reset() override ATTR_COLD;
private:
- DECLARE_READ32_MEMBER( control_r );
- DECLARE_WRITE32_MEMBER( control_w );
- DECLARE_READ32_MEMBER( baud_rate_div_r );
- DECLARE_WRITE32_MEMBER( baud_rate_div_w );
- DECLARE_READ32_MEMBER( status_r );
- DECLARE_WRITE32_MEMBER( transmit_buffer_w );
- DECLARE_READ32_MEMBER( receive_buffer_r );
+ uint32_t control_r();
+ void control_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
+ uint32_t baud_rate_div_r();
+ void baud_rate_div_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
+ uint32_t status_r();
+ void transmit_buffer_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
+ uint32_t receive_buffer_r(offs_t offset, uint32_t mem_mask = ~0);
TIMER_CALLBACK_MEMBER( break_timer_cb );
- uint32_t m_ucon; // control
- uint32_t m_ubdr; // baud rate
- uint32_t m_ustat; // status
+ uint32_t m_ucon = 0; // control
+ uint32_t m_ubdr = 0; // baud rate
+ uint32_t m_ustat = 0; // status
util::fifo<uint8_t, 16> m_urxb_fifo; // receive FIFO
void update_serial_config();
@@ -95,26 +81,28 @@ public:
// construction/destruction
vrender0soc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- void regs_map(address_map &map);
- void audiovideo_map(address_map &map);
+ void regs_map(address_map &map) ATTR_COLD;
+ void audiovideo_map(address_map &map) ATTR_COLD;
+ void texture_map(address_map &map) ATTR_COLD;
+ void frame_map(address_map &map) ATTR_COLD;
template<class T> void set_host_cpu_tag(T &&tag) { m_host_cpu.set_tag(std::forward<T>(tag)); }
void set_external_vclk(const uint32_t vclk) { m_ext_vclk = vclk; }
void set_external_vclk(const XTAL vclk) { m_ext_vclk = vclk.value(); }
bool crt_is_blanked() { return ((m_crtcregs[0] & 0x0200) == 0x0200); }
bool crt_active_vblank_irq();
void IntReq( int num );
- int irq_callback();
+ uint8_t irq_callback();
bool irq_pending() { return m_intst; }
void write_line_tx(int port, uint8_t value);
template <int Port> auto tx_callback() { return write_tx[Port].bind(); }
- template <int Port> DECLARE_WRITE_LINE_MEMBER(rx_w) { m_uart[Port]->rx_w((uint8_t)state); }
+ template <int Port> void rx_w(int state) { m_uart[Port]->rx_w((uint8_t)state); }
protected:
// device-level overrides
//virtual void device_validity_check(validity_checker &valid) const override;
- virtual void device_add_mconfig(machine_config &config) override;
- virtual void device_start() override;
- virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override ATTR_COLD;
+ virtual void device_start() override ATTR_COLD;
+ virtual void device_reset() override ATTR_COLD;
private:
required_device <se3208_device> m_host_cpu;
@@ -122,84 +110,78 @@ private:
required_device <palette_device> m_palette;
required_device <vr0video_device> m_vr0vid;
required_device <vr0sound_device> m_vr0snd;
- required_device <speaker_device> m_lspeaker;
- required_device <speaker_device> m_rspeaker;
+ required_device <speaker_device> m_speaker;
required_device_array <vr0uart_device, 2> m_uart;
required_shared_ptr <uint32_t> m_crtcregs;
- uint16_t *m_textureram;
- uint16_t *m_frameram;
+ std::unique_ptr<uint16_t []> m_textureram;
+ std::unique_ptr<uint16_t []> m_frameram;
- address_space *m_host_space;
- uint32_t m_ext_vclk;
+ address_space *m_host_space = nullptr;
+ uint32_t m_ext_vclk = 0;
- devcb_write_line write_tx[2];
+ devcb_write_line::array<2> write_tx;
// INTC
- uint32_t m_inten;
- DECLARE_READ32_MEMBER(inten_r);
- DECLARE_WRITE32_MEMBER(inten_w);
+ uint32_t m_inten = 0;
+ uint32_t inten_r();
+ void inten_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
+
+ uint32_t intvec_r();
+ void intvec_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
- DECLARE_READ32_MEMBER(intvec_r);
- DECLARE_WRITE32_MEMBER(intvec_w);
+ uint8_t m_IntHigh = 0;
+ uint32_t m_intst = 0;
+ uint32_t intst_r();
+ void intst_w(uint32_t data);
- uint8_t m_IntHigh;
- uint32_t m_intst;
- DECLARE_READ32_MEMBER(intst_r);
- DECLARE_WRITE32_MEMBER(intst_w);
+ void soundirq_cb(int state);
// Timer
- template<int Which> DECLARE_WRITE32_MEMBER(tmcon_w);
- template<int Which> DECLARE_READ32_MEMBER(tmcon_r);
- template<int Which> DECLARE_WRITE16_MEMBER(tmcnt_w);
- template<int Which> DECLARE_READ16_MEMBER(tmcnt_r);
- TIMER_CALLBACK_MEMBER(Timercb);
-
- uint32_t m_timer_control[4];
- uint16_t m_timer_count[4];
- emu_timer *m_Timer[4];
+ template<int Which> void tmcon_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
+ template<int Which> uint32_t tmcon_r();
+ template<int Which> void tmcnt_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+ template<int Which> uint16_t tmcnt_r();
+ template<int Which> TIMER_CALLBACK_MEMBER(Timercb);
+
+ uint32_t m_timer_control[4] = { 0, 0, 0, 0 };
+ uint16_t m_timer_count[4] = { 0, 0, 0, 0 };
+ emu_timer *m_Timer[4] = { nullptr, nullptr, nullptr, nullptr };
void TimerStart(int which);
// DMAC
- template<int Which> DECLARE_READ32_MEMBER(dmac_r);
- template<int Which> DECLARE_WRITE32_MEMBER(dmac_w);
- template<int Which> DECLARE_READ32_MEMBER(dmatc_r);
- template<int Which> DECLARE_WRITE32_MEMBER(dmatc_w);
- template<int Which> DECLARE_READ32_MEMBER(dmasa_r);
- template<int Which> DECLARE_WRITE32_MEMBER(dmasa_w);
- template<int Which> DECLARE_READ32_MEMBER(dmada_r);
- template<int Which> DECLARE_WRITE32_MEMBER(dmada_w);
+ template<int Which> uint32_t dmac_r();
+ template<int Which> void dmac_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
+ template<int Which> uint32_t dmatc_r();
+ template<int Which> void dmatc_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
+ template<int Which> uint32_t dmasa_r();
+ template<int Which> void dmasa_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
+ template<int Which> uint32_t dmada_r();
+ template<int Which> void dmada_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
inline int dma_setup_hold(uint8_t setting, uint8_t bitmask);
struct {
- uint32_t src;
- uint32_t dst;
- uint32_t size;
- uint32_t ctrl;
+ uint32_t src = 0;
+ uint32_t dst = 0;
+ uint32_t size = 0;
+ uint32_t ctrl = 0;
}m_dma[2];
// CRTC
- DECLARE_READ32_MEMBER(crtc_r);
- DECLARE_WRITE32_MEMBER(crtc_w);
+ uint32_t crtc_r(offs_t offset);
+ void crtc_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
void crtc_update();
inline bool crt_is_interlaced();
// Misc
- DECLARE_READ32_MEMBER( sysid_r );
- DECLARE_READ32_MEMBER( cfgr_r );
+ uint32_t sysid_r();
+ uint32_t cfgr_r();
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- DECLARE_WRITE_LINE_MEMBER(screen_vblank);
-
- DECLARE_READ16_MEMBER( textureram_r );
- DECLARE_WRITE16_MEMBER( textureram_w );
- DECLARE_READ16_MEMBER( frameram_r );
- DECLARE_WRITE16_MEMBER( frameram_w );
-
- // Hacks
-#ifdef IDLE_LOOP_SPEEDUP
- uint8_t m_FlipCntRead;
- DECLARE_WRITE_LINE_MEMBER(idle_skip_resume_w);
- DECLARE_WRITE_LINE_MEMBER(idle_skip_speedup_w);
-#endif
+ void screen_vblank(int state);
+
+ uint16_t textureram_r(offs_t offset);
+ void textureram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+ uint16_t frameram_r(offs_t offset);
+ void frameram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
};
@@ -207,10 +189,4 @@ private:
DECLARE_DEVICE_TYPE(VRENDER0_SOC, vrender0soc_device)
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-
#endif // MAME_MACHINE_VRENDER0_H