diff options
author | Michael Pavone <pavone@retrodev.com> | 2016-11-05 21:41:23 -0700 |
---|---|---|
committer | Michael Pavone <pavone@retrodev.com> | 2016-11-05 21:41:23 -0700 |
commit | f48ea913302343c313d271d77b7f0034265cb676 (patch) | |
tree | d8ef5e2e32cf23b014cb219ba6e4ff2d3507b569 | |
parent | 04bf2bb31d8c98f66b5f423fa28dc88a128fca12 (diff) |
Fix Jaguar video interrupt cycle calculation
-rw-r--r-- | jag_video.c | 2 | ||||
-rw-r--r-- | jaguar.c | 3 |
2 files changed, 3 insertions, 2 deletions
diff --git a/jag_video.c b/jag_video.c index bfb97bd..2532b02 100644 --- a/jag_video.c +++ b/jag_video.c @@ -189,7 +189,7 @@ enum { uint32_t jag_cycles_to_halfline(jag_video *context, uint32_t target) { - uint32_t cycles = context->regs[VID_HPERIOD] - (context->regs[VID_HCOUNT & 0x3FF]); + uint32_t cycles = context->regs[VID_HPERIOD] - (context->regs[VID_HCOUNT] & 0x3FF); uint32_t num_lines; if (context->regs[VID_VCOUNT] < target) { num_lines = target - 1 - context->regs[VID_VCOUNT]; @@ -145,9 +145,10 @@ void rom0_write_16(uint32_t address, jaguar_context *system, uint16_t value) system->memcon2 = value; break; case 0xE0: - printf("INT1 write: %X\n", value); system->cpu_int_control = value & 0x1F; system->video->cpu_int_pending &= ~(value >> 8); + printf("INT1 write: %X @ %d - int_pending: %X, int_control: %X\n", value, system->m68k->current_cycle, system->video->cpu_int_pending, system->cpu_int_control); + jag_update_m68k_int(system); //TODO: apply mask to int pending fields on other components once they are implemented break; case 0xE2: |