summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/sunplus_gcm394_video.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/sunplus_gcm394_video.h')
-rw-r--r--src/devices/machine/sunplus_gcm394_video.h40
1 files changed, 33 insertions, 7 deletions
diff --git a/src/devices/machine/sunplus_gcm394_video.h b/src/devices/machine/sunplus_gcm394_video.h
index a2a54a1b388..72193ecc74f 100644
--- a/src/devices/machine/sunplus_gcm394_video.h
+++ b/src/devices/machine/sunplus_gcm394_video.h
@@ -25,8 +25,14 @@ public:
auto space_read_callback() { return m_space_read_cb.bind(); }
+ void write_tmap_scroll(int tmap, uint16_t* regs, int offset, uint16_t data);
+ void write_tmap_extrascroll(int tmap, uint16_t* regs, int offset, uint16_t data);
+
void write_tmap_regs(int tmap, uint16_t* regs, int offset, uint16_t data);
+ void set_paldisplaybank_high(int pal_displaybank_high) { m_pal_displaybank_high = pal_displaybank_high; }
+ void set_alt_tile_addressing(int alt_tile_addressing) { m_alt_tile_addressing = alt_tile_addressing; }
+
DECLARE_READ16_MEMBER(tmap0_regs_r);
DECLARE_WRITE16_MEMBER(tmap0_regs_w);
DECLARE_READ16_MEMBER(tmap0_tilebase_lsb_r);
@@ -41,11 +47,17 @@ public:
DECLARE_WRITE16_MEMBER(tmap1_tilebase_lsb_w);
DECLARE_WRITE16_MEMBER(tmap1_tilebase_msb_w);
- DECLARE_WRITE16_MEMBER(unk_vid1_regs_w);
+ DECLARE_READ16_MEMBER(tmap2_regs_r);
+ DECLARE_WRITE16_MEMBER(tmap2_regs_w);
+ DECLARE_READ16_MEMBER(unk_vid1_gfxbase_lsb_r);
+ DECLARE_READ16_MEMBER(unk_vid1_gfxbase_msb_r);
DECLARE_WRITE16_MEMBER(unk_vid1_gfxbase_lsb_w);
DECLARE_WRITE16_MEMBER(unk_vid1_gfxbase_msb_w);
- DECLARE_WRITE16_MEMBER(unk_vid2_regs_w);
+ DECLARE_READ16_MEMBER(tmap3_regs_r);
+ DECLARE_WRITE16_MEMBER(tmap3_regs_w);
+ DECLARE_READ16_MEMBER(unk_vid2_gfxbase_lsb_r);
+ DECLARE_READ16_MEMBER(unk_vid2_gfxbase_msb_r);
DECLARE_WRITE16_MEMBER(unk_vid2_gfxbase_lsb_w);
DECLARE_WRITE16_MEMBER(unk_vid2_gfxbase_msb_w);
@@ -66,8 +78,8 @@ public:
DECLARE_READ16_MEMBER(video_703a_palettebank_r);
DECLARE_WRITE16_MEMBER(video_703a_palettebank_w);
- DECLARE_READ16_MEMBER(video_7062_r);
- DECLARE_WRITE16_MEMBER(video_7062_w);
+ DECLARE_READ16_MEMBER(videoirq_source_enable_r);
+ DECLARE_WRITE16_MEMBER(videoirq_source_enable_w);
DECLARE_READ16_MEMBER(video_7063_videoirq_source_r);
DECLARE_WRITE16_MEMBER(video_7063_videoirq_source_ack_w);
@@ -154,7 +166,7 @@ protected:
template<blend_enable_t Blend, rowscroll_enable_t RowScroll, flipx_t FlipX>
void draw(const rectangle &cliprect, uint32_t line, uint32_t xoff, uint32_t yoff, uint32_t bitmap_addr, uint32_t tile, int32_t h, int32_t w, uint8_t bpp, uint32_t yflipmask, uint32_t palette_offset, int addressing_mode);
- void draw_page(const rectangle &cliprect, uint32_t scanline, int priority, uint32_t bitmap_addr, uint16_t *regs);
+ void draw_page(const rectangle &cliprect, uint32_t scanline, int priority, uint32_t bitmap_addr, uint16_t *regs, uint16_t *scroll);
void draw_sprites(const rectangle& cliprect, uint32_t scanline, int priority);
void draw_sprite(const rectangle& cliprect, uint32_t scanline, int priority, uint32_t base_addr);
@@ -181,8 +193,19 @@ protected:
// video 70xx
- uint16_t m_tmap0_regs[0x6];
- uint16_t m_tmap1_regs[0x6];
+ uint16_t m_tmap0_regs[0x4];
+ uint16_t m_tmap1_regs[0x4];
+
+ uint16_t m_tmap2_regs[0x4];
+ uint16_t m_tmap3_regs[0x4];
+
+
+ uint16_t m_tmap0_scroll[0x2];
+ uint16_t m_tmap1_scroll[0x2];
+
+ uint16_t m_tmap2_scroll[0x4];
+ uint16_t m_tmap3_scroll[0x4];
+
uint16_t m_707f;
uint16_t m_703a_palettebank;
@@ -228,6 +251,9 @@ protected:
void decodegfx(const char* tag);
int m_global_y_mask;
+
+ int m_pal_displaybank_high;
+ int m_alt_tile_addressing;
};
class gcm394_video_device : public gcm394_base_video_device