summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author cracyc <cracyc@users.noreply.github.com>2021-05-14 13:44:57 -0500
committer cracyc <cracyc@users.noreply.github.com>2021-05-14 13:44:57 -0500
commitc89891e4aa3746da8d3f325a6e4db5bd1468e1c8 (patch)
treed782040502e6353be56fba2e0850b97f32a83f04
parent57feb3faa14129ec1f210dd4f4516629e98e6289 (diff)
x68k: if raster irq is on same line, trigger it immediately
-rw-r--r--src/mame/video/x68k_crtc.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/mame/video/x68k_crtc.cpp b/src/mame/video/x68k_crtc.cpp
index a9b994d055c..28bd5f13389 100644
--- a/src/mame/video/x68k_crtc.cpp
+++ b/src/mame/video/x68k_crtc.cpp
@@ -5,7 +5,7 @@
#include "video/x68k_crtc.h"
#include "screen.h"
-//#define VERBOSE 0
+//#define VERBOSE 1
#include "logmacro.h"
// device type definitions
@@ -397,14 +397,15 @@ void x68k_crtc_device::crtc_w(offs_t offset, u16 data, u16 mem_mask)
case 9: // CRTC raster IRQ (GPIP6)
{
data = m_reg[9];
- attotime irq_time = screen().time_until_pos((data) / m_vmultiple,2);
-
- if (data != screen().vpos())
+ attotime irq_time = attotime::zero;
+ if ((data / m_vmultiple) != screen().vpos())
+ {
+ irq_time = screen().time_until_pos((data) / m_vmultiple,2);
m_rint_callback(1);
- if (irq_time.as_double() > 0)
- m_raster_irq_timer->adjust(irq_time, (data) / m_vmultiple);
+ }
+ m_raster_irq_timer->adjust(irq_time, (data) / m_vmultiple);
+ LOG("CRTC: Write to raster IRQ register - %i %i %f\n",data, screen().vpos(), irq_time.as_double());
}
- LOG("CRTC: Write to raster IRQ register - %i\n",data);
break;
case 20:
if (ACCESSING_BITS_0_7)