summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/video/ym7101.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/video/ym7101.h')
-rw-r--r--src/devices/video/ym7101.h17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/devices/video/ym7101.h b/src/devices/video/ym7101.h
index 773b98e5631..9cd6b5c95dc 100644
--- a/src/devices/video/ym7101.h
+++ b/src/devices/video/ym7101.h
@@ -42,12 +42,15 @@ public:
if (machine().side_effects_disabled())
return;
- if (m_vint_pending)
+ // chukrck2 & d_titov2 cares about not ack-ing an irq that isn't enabled.
+ // fatalrew/killshow & sesame otherwise need this
+ // https://jsgroth.dev/blog/posts/emulator-bugs-fatal-rewind/
+ if (m_vint_pending && m_ie0)
{
m_vint_pending = 0;
m_vint_callback(0);
}
- else if (m_hint_pending)
+ else if (m_hint_pending && m_ie1)
{
m_hint_pending = 0;
m_hint_callback(0);
@@ -143,14 +146,17 @@ private:
void control_port_w(offs_t offset, u16 data, u16 mem_mask);
u16 hv_counter_r(offs_t offset, u16 mem_mask);
+ u16 get_hv_counter();
+
void vram_w(offs_t offset, u16 data, u16 mem_mask);
void cram_w(offs_t offset, u16 data, u16 mem_mask);
- bool m_ie1;
+ bool m_ie1; // HINT enable
bool m_vr; // 128 KiB VRAM mode (undocumented)
- bool m_de;
- bool m_ie0;
+ bool m_de; // display enable
+ bool m_ie0; // VINT enable
bool m_m1; // DMA enable
+ bool m_m3; // latch H/V counter
u32 m_hscroll_address;
u8 m_hsz, m_vsz;
u8 m_auto_increment;
@@ -171,6 +177,7 @@ private:
u8 m_hres_mode;
int m_vint_pending, m_hint_pending;
int m_vcounter; // irq4 counter
+ u16 m_hvcounter_latch;
bitmap_rgb32 m_bitmap;
bool render_line(int scanline);