summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/elan_eu3a05vid.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/video/elan_eu3a05vid.h')
-rw-r--r--src/mame/video/elan_eu3a05vid.h52
1 files changed, 29 insertions, 23 deletions
diff --git a/src/mame/video/elan_eu3a05vid.h b/src/mame/video/elan_eu3a05vid.h
index 1580fa10840..00332fe63ad 100644
--- a/src/mame/video/elan_eu3a05vid.h
+++ b/src/mame/video/elan_eu3a05vid.h
@@ -8,7 +8,7 @@
#include "cpu/m6502/m6502.h"
#include "machine/bankdev.h"
-class elan_eu3a05vid_device : public elan_eu3a05commonvid_device
+class elan_eu3a05vid_device : public elan_eu3a05commonvid_device, public device_memory_interface
{
public:
elan_eu3a05vid_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -16,28 +16,7 @@ public:
template <typename T> void set_cpu(T &&tag) { m_cpu.set_tag(std::forward<T>(tag)); }
template <typename T> void set_addrbank(T &&tag) { m_bank.set_tag(std::forward<T>(tag)); }
- // VIDEO
- // tile bases
- DECLARE_WRITE8_MEMBER(tile_gfxbase_lo_w);
- DECLARE_WRITE8_MEMBER(tile_gfxbase_hi_w);
- DECLARE_READ8_MEMBER(tile_gfxbase_lo_r);
- DECLARE_READ8_MEMBER(tile_gfxbase_hi_r);
- // sprite tile bases
- DECLARE_WRITE8_MEMBER(sprite_gfxbase_lo_w);
- DECLARE_WRITE8_MEMBER(sprite_gfxbase_hi_w);
- DECLARE_READ8_MEMBER(sprite_gfxbase_lo_r);
- DECLARE_READ8_MEMBER(sprite_gfxbase_hi_r);
-
- DECLARE_READ8_MEMBER(elan_eu3a05_vidctrl_r);
- DECLARE_WRITE8_MEMBER(elan_eu3a05_vidctrl_w);
-
- DECLARE_READ8_MEMBER(tile_scroll_r);
- DECLARE_WRITE8_MEMBER(tile_scroll_w);
-
- DECLARE_READ8_MEMBER(splitpos_r);
- DECLARE_WRITE8_MEMBER(splitpos_w);
-
- uint16_t get_scroll(int which);
+ void map(address_map& map);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -45,10 +24,12 @@ protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
+ virtual space_config_vector memory_space_config() const override;
private:
required_device<m6502_device> m_cpu;
required_device<address_map_bank_device> m_bank;
+ const address_space_config m_space_config;
uint8_t m_vidctrl;
@@ -62,6 +43,8 @@ private:
uint8_t m_splitpos[2];
+ uint16_t get_scroll(int which);
+
bool get_tile_data(int base, int drawpri, int& tile, int &attr, int &unk2);
void draw_tilemaps(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int drawpri);
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -69,6 +52,29 @@ private:
uint8_t read_spriteram(int offset);
uint8_t read_vram(int offset);
+ // VIDEO
+ // tile bases
+ DECLARE_WRITE8_MEMBER(tile_gfxbase_lo_w);
+ DECLARE_WRITE8_MEMBER(tile_gfxbase_hi_w);
+ DECLARE_READ8_MEMBER(tile_gfxbase_lo_r);
+ DECLARE_READ8_MEMBER(tile_gfxbase_hi_r);
+ // sprite tile bases
+ DECLARE_WRITE8_MEMBER(sprite_gfxbase_lo_w);
+ DECLARE_WRITE8_MEMBER(sprite_gfxbase_hi_w);
+ DECLARE_READ8_MEMBER(sprite_gfxbase_lo_r);
+ DECLARE_READ8_MEMBER(sprite_gfxbase_hi_r);
+
+ DECLARE_READ8_MEMBER(elan_eu3a05_vidctrl_r);
+ DECLARE_WRITE8_MEMBER(elan_eu3a05_vidctrl_w);
+
+ DECLARE_READ8_MEMBER(tile_scroll_r);
+ DECLARE_WRITE8_MEMBER(tile_scroll_w);
+
+ DECLARE_READ8_MEMBER(splitpos_r);
+ DECLARE_WRITE8_MEMBER(splitpos_w);
+
+ DECLARE_READ8_MEMBER(read_unmapped);
+ DECLARE_WRITE8_MEMBER(write_unmapped);
};
DECLARE_DEVICE_TYPE(ELAN_EU3A05_VID, elan_eu3a05vid_device)