Fix Jaguar video interrupt cycle calculation

This commit is contained in:
Michael Pavone committed 2016-11-05 21:41:23 -07:00
1 parent 04bf2bb31d
commit f48ea91330
2 files changed
+3 -2

No files matched your search

+1 -1
View File
@@ -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];
+2 -1
View File
@@ -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: