summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/video/315_5313.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/video/315_5313.cpp')
-rw-r--r--src/devices/video/315_5313.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/devices/video/315_5313.cpp b/src/devices/video/315_5313.cpp
index 6c33332b23c..aeb9f6e8ddc 100644
--- a/src/devices/video/315_5313.cpp
+++ b/src/devices/video/315_5313.cpp
@@ -142,6 +142,16 @@
#define MEGADRIVE_REG17_DMATYPE ((m_regs[0x17]&0xc0)>>6)
#define MEGADRIVE_REG17_UNUSED ((m_regs[0x17]&0x3f)>>0)
+static constexpr uint8_t line_315_5313_mode4[8] = {
+ 26 /* VINT_HPOS */
+ , 26 /* VINT_FLAG_HPOS */
+ , 27 /* HINT_HPOS */
+ , 28 /* NMI_HPOS, not verified */
+ , 25 /* XSCROLL_HPOS */
+ , 28 /* VCOUNT_CHANGE_HPOS */
+ , 26 /* SPROVR_HPOS */
+ , 37 /* SPRCOL_BASEHPOS */
+ };
#define MAX_HPOSITION 480
@@ -149,7 +159,8 @@
DEFINE_DEVICE_TYPE(SEGA315_5313, sega315_5313_device, "sega315_5313", "Sega 315-5313 Megadrive VDP")
sega315_5313_device::sega315_5313_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sega315_5124_device(mconfig, SEGA315_5313, tag, owner, clock, SEGA315_5124_CRAM_SIZE, 0, true)
+ // mode 4 support, for SMS compatibility, is implemented in 315_5124.cpp
+ : sega315_5313_mode4_device(mconfig, SEGA315_5313, tag, owner, clock, SEGA315_5124_CRAM_SIZE, 0x00, 0x1f, 0, 0, line_315_5313_mode4)
, device_mixer_interface(mconfig, *this, 2)
, m_render_bitmap(nullptr)
, m_render_line(nullptr)
@@ -322,7 +333,7 @@ void sega315_5313_device::device_start()
m_space68k = &m_cpu68k->space();
- sega315_5124_device::device_start();
+ sega315_5313_mode4_device::device_start();
}
void sega315_5313_device::device_reset()
@@ -344,7 +355,7 @@ void sega315_5313_device::device_reset()
m_vblank_flag = 0;
m_total_scanlines = 262;
- sega315_5124_device::device_reset();
+ sega315_5313_mode4_device::device_reset();
}
void sega315_5313_device::device_reset_old()