From 137bd8de882a156d4edbf0de7c62b7477e572497 Mon Sep 17 00:00:00 2001 From: Angelo Salese Date: Sun, 22 Aug 2010 13:55:57 +0000 Subject: [PATCH] Fix for VBLANK irq, now Erotictac works like current MAME driver (not worth) --- src/mame/machine/archimds.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/mame/machine/archimds.c b/src/mame/machine/archimds.c index f5851f34735..95884b8047a 100644 --- a/src/mame/machine/archimds.c +++ b/src/mame/machine/archimds.c @@ -116,7 +116,7 @@ static TIMER_CALLBACK( vidc_video_tick ) address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM); static UINT8 *vram = memory_region(machine,"vram"); - vram[vidc_vidcur] = (space->read_byte(vidc_vidstart+vidc_vidcur)); + vram[vidc_vidcur] = (space->read_byte(vidc_vidstart+vidc_vidcur+vidc_vidinit)); vidc_vidcur++; @@ -467,6 +467,9 @@ static WRITE32_HANDLER( ioc_ctrl_w ) if(data & 0x80) //force an IRQ archimedes_request_irq_a(space->machine,ARCHIMEDES_IRQA_FORCE); + if(data & 0x08) //set up the VBLANK timer + timer_adjust_oneshot(vbl_timer, space->machine->primary_screen->time_until_pos(vidc_regs[0xb4]), 0); + break; case FIQ_MASK: @@ -828,27 +831,27 @@ WRITE32_HANDLER(archimedes_memc_w) switch ((data >> 17) & 7) { case 0: /* video init */ - logerror("MEMC: VIDINIT %08x\n",data); vidc_vidinit = ((data>>2)&0x7fff)*16; + //logerror("MEMC: VIDINIT %08x\n",vidc_vidinit); break; case 1: /* video start */ - logerror("MEMC: VIDSTART %08x\n",data); vidc_vidstart = 0x2000000 | (((data>>2)&0x7fff)*16); + //logerror("MEMC: VIDSTART %08x\n",vidc_vidstart); break; case 2: /* video end */ - logerror("MEMC: VIDEND %08x\n",data); vidc_vidend = 0x2000000 | (((data>>2)&0x7fff)*16); + //logerror("MEMC: VIDEND %08x\n",vidc_vidend); break; case 4: /* sound start */ - logerror("MEMC: VIDSNDSTART %08x\n",data); + //logerror("MEMC: VIDSNDSTART %08x\n",data); vidc_sndstart = 0x2000000 | ((data>>2)&0x7fff)*16; break; case 5: /* sound end */ - logerror("MEMC: VIDSNDEND %08x\n",data); + //logerror("MEMC: VIDSNDEND %08x\n",data); vidc_sndend = 0x2000000 | ((data>>2)&0x7fff)*16; break;