diff options
Diffstat (limited to 'src/devices/machine/spg110.h')
-rw-r--r-- | src/devices/machine/spg110.h | 220 |
1 files changed, 0 insertions, 220 deletions
diff --git a/src/devices/machine/spg110.h b/src/devices/machine/spg110.h deleted file mode 100644 index 64464e1ba9d..00000000000 --- a/src/devices/machine/spg110.h +++ /dev/null @@ -1,220 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:David Haywood - -#ifndef MAME_MACHINE_SPG110_H -#define MAME_MACHINE_SPG110_H - -#pragma once - -//#include "spg2xx.h" -#include "cpu/unsp/unsp.h" -#include "emupal.h" -#include "spg2xx_io.h" - - -class spg110_device : public device_t, public device_memory_interface - -{ -public: - spg110_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); - spg110_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - template <typename T, typename U> - spg110_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&cpu_tag, U &&screen_tag) - : spg110_device(mconfig, tag, owner, clock) - { - m_cpu.set_tag(std::forward<T>(cpu_tag)); - m_screen.set_tag(std::forward<U>(screen_tag)); - } - - void map(address_map &map); - void map_video(address_map &map); - - double hue2rgb(double p, double q, double t); - uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - DECLARE_WRITE_LINE_MEMBER(vblank); - - auto porta_out() { return m_porta_out.bind(); } - auto portb_out() { return m_portb_out.bind(); } - auto portc_out() { return m_portc_out.bind(); } - auto porta_in() { return m_porta_in.bind(); } - auto portb_in() { return m_portb_in.bind(); } - auto portc_in() { return m_portc_in.bind(); } - - template <size_t Line> auto adc_in() { return m_adc_in[Line].bind(); } - - auto chip_select() { return m_chip_sel.bind(); } - -protected: - virtual void device_start() override; - virtual void device_reset() override; - - virtual void device_add_mconfig(machine_config &config) override; - - virtual space_config_vector memory_space_config() const override; - - address_space_config m_space_config; - -private: - enum - { - PAGE_ENABLE_MASK = 0x0008, - PAGE_WALLPAPER_MASK = 0x0004, - - PAGE_DEPTH_FLAG_MASK = 0x3000, - PAGE_DEPTH_FLAG_SHIFT = 12, - PAGE_TILE_HEIGHT_MASK = 0x00c0, - PAGE_TILE_HEIGHT_SHIFT = 6, - PAGE_TILE_WIDTH_MASK = 0x0030, - PAGE_TILE_WIDTH_SHIFT = 4, - - TILE_X_FLIP = 0x0004, - TILE_Y_FLIP = 0x0008 - }; - - enum flipx_t : bool - { - FlipXOff = false, - FlipXOn = true - }; - - required_device<unsp_device> m_cpu; - required_device<screen_device> m_screen; - required_device<palette_device> m_palette; - required_device<gfxdecode_device> m_gfxdecode; - required_shared_ptr<uint16_t> m_palram; - required_device<spg2xx_io_device> m_spg_io; - - //TIMER_CALLBACK_MEMBER(test_timer); - //emu_timer *m_test_timer; - - - DECLARE_WRITE16_MEMBER(spg110_201c_w); - DECLARE_WRITE16_MEMBER(spg110_2020_w); - - DECLARE_WRITE16_MEMBER(spg110_2028_w); - DECLARE_WRITE16_MEMBER(spg110_2029_w); - - DECLARE_READ16_MEMBER(spg110_2028_r); - DECLARE_READ16_MEMBER(spg110_2029_r); - - DECLARE_WRITE16_MEMBER(spg110_2031_w); - DECLARE_WRITE16_MEMBER(spg110_2032_w); - DECLARE_WRITE16_MEMBER(spg110_2033_w); - DECLARE_WRITE16_MEMBER(spg110_2034_w); - DECLARE_WRITE16_MEMBER(spg110_2035_w); - DECLARE_WRITE16_MEMBER(spg110_2036_w); - DECLARE_WRITE16_MEMBER(spg110_2037_w); - DECLARE_WRITE16_MEMBER(spg110_2039_w); - - DECLARE_WRITE16_MEMBER(spg110_203c_w); - DECLARE_WRITE16_MEMBER(spg110_203d_w); - - DECLARE_WRITE16_MEMBER(spg110_2042_w); - - DECLARE_WRITE16_MEMBER(spg110_2045_w); - - DECLARE_WRITE16_MEMBER(spg110_2050_w); - DECLARE_WRITE16_MEMBER(spg110_2051_w); - DECLARE_WRITE16_MEMBER(spg110_2052_w); - DECLARE_WRITE16_MEMBER(spg110_2053_w); - DECLARE_WRITE16_MEMBER(spg110_2054_w); - DECLARE_WRITE16_MEMBER(spg110_2055_w); - DECLARE_WRITE16_MEMBER(spg110_2056_w); - DECLARE_WRITE16_MEMBER(spg110_2057_w); - DECLARE_WRITE16_MEMBER(spg110_2058_w); - DECLARE_WRITE16_MEMBER(spg110_2059_w); - DECLARE_WRITE16_MEMBER(spg110_205a_w); - DECLARE_WRITE16_MEMBER(spg110_205b_w); - DECLARE_WRITE16_MEMBER(spg110_205c_w); - DECLARE_WRITE16_MEMBER(spg110_205d_w); - DECLARE_WRITE16_MEMBER(spg110_205e_w); - DECLARE_WRITE16_MEMBER(spg110_205f_w); - - - DECLARE_READ16_MEMBER(spg110_2037_r); - DECLARE_READ16_MEMBER(spg110_2042_r); - - DECLARE_WRITE16_MEMBER(dma_dst_w); - DECLARE_WRITE16_MEMBER(dma_unk_2061_w); - DECLARE_WRITE16_MEMBER(dma_len_trigger_w); - DECLARE_WRITE16_MEMBER(spg110_2063_w); - DECLARE_WRITE16_MEMBER(dma_dst_step_w); - DECLARE_WRITE16_MEMBER(dma_src_w); - DECLARE_WRITE16_MEMBER(dma_unk_2067_w); - DECLARE_WRITE16_MEMBER(dma_src_step_w); - - DECLARE_READ16_MEMBER(dma_len_status_r); - DECLARE_READ16_MEMBER(spg110_2063_r); - - DECLARE_WRITE16_MEMBER(spg110_3100_w); - - DECLARE_WRITE16_MEMBER(spg110_3101_w); - DECLARE_WRITE16_MEMBER(spg110_3102_w); - DECLARE_WRITE16_MEMBER(spg110_3104_w); - DECLARE_WRITE16_MEMBER(spg110_3105_w); - DECLARE_WRITE16_MEMBER(spg110_3106_w); - DECLARE_WRITE16_MEMBER(spg110_3107_w); - DECLARE_WRITE16_MEMBER(spg110_3108_w); - DECLARE_WRITE16_MEMBER(spg110_3109_w); - - DECLARE_WRITE16_MEMBER(spg110_310b_w); - DECLARE_WRITE16_MEMBER(spg110_310c_w); - DECLARE_WRITE16_MEMBER(spg110_310d_w); - - DECLARE_READ16_MEMBER(spg110_310f_r); - - DECLARE_READ16_MEMBER(tmap0_regs_r); - DECLARE_READ16_MEMBER(tmap1_regs_r); - DECLARE_WRITE16_MEMBER(tmap0_regs_w); - DECLARE_WRITE16_MEMBER(tmap1_regs_w); - - uint16_t tmap0_regs[0x6]; - uint16_t tmap1_regs[0x6]; - - uint16_t m_dma_src_step; - uint16_t m_dma_dst_step; - uint16_t m_dma_unk_2061; - uint16_t m_dma_unk_2067; - - uint16_t m_dma_dst; - uint16_t m_dma_src; - - uint16_t m_bg_scrollx; - uint16_t m_bg_scrolly; - uint16_t m_2036_scroll; - - void tilemap_write_regs(int which, uint16_t* regs, int regno, uint16_t data); - - template<flipx_t FlipX> - void blit(const rectangle &cliprect, uint32_t line, uint32_t xoff, uint32_t yoff, uint32_t attr, uint32_t ctrl, uint32_t bitmap_addr, uint16_t tile); - void blit_page(const rectangle &cliprect, uint32_t scanline, int depth, uint32_t bitmap_addr, uint16_t *regs); - uint32_t m_screenbuf[320 * 240]; - - devcb_write16 m_porta_out; - devcb_write16 m_portb_out; - devcb_write16 m_portc_out; - devcb_read16 m_porta_in; - devcb_read16 m_portb_in; - devcb_read16 m_portc_in; - - devcb_read16 m_adc_in[2]; - - devcb_write8 m_chip_sel; - - DECLARE_READ16_MEMBER(porta_r) { return m_porta_in(); }; - DECLARE_READ16_MEMBER(portb_r) { return m_portb_in(); }; - DECLARE_READ16_MEMBER(portc_r) { return m_portc_in(); }; - DECLARE_WRITE16_MEMBER(porta_w) { m_porta_out(offset, data, mem_mask); }; - DECLARE_WRITE16_MEMBER(portb_w) { m_portb_out(offset, data, mem_mask); }; - DECLARE_WRITE16_MEMBER(portc_w) { m_portc_out(offset, data, mem_mask); }; - template <size_t Line> DECLARE_READ16_MEMBER(adc_r) { return m_adc_in[Line](); }; - DECLARE_WRITE8_MEMBER(cs_w) { m_chip_sel(offset, data, mem_mask); }; - DECLARE_READ16_MEMBER(get_pal_r) { return 0; /*m_pal_flag;*/ }; - void configure_spg_io(spg2xx_io_device* io); - -}; - -DECLARE_DEVICE_TYPE(SPG110, spg110_device) - -#endif // MAME_MACHINE_SPG110_H |