diff options
| author | 2009-06-14 22:34:08 +0000 | |
|---|---|---|
| committer | 2009-06-14 22:34:08 +0000 | |
| commit | da911147a004022b2d2cff85f43df91dabc22309 (patch) | |
| tree | dd5c633e38075750186096d3df0137bacd606e1f | |
| parent | 27a024d949e041254ebf6e6970dd3044dbcb8126 (diff) | |
Better irq fix and added basic sound (not yet 100% accurate?)
| -rw-r--r-- | src/mame/drivers/liberate.c | 12 | ||||
| -rw-r--r-- | src/mame/video/liberate.c | 20 |
2 files changed, 27 insertions, 5 deletions
diff --git a/src/mame/drivers/liberate.c b/src/mame/drivers/liberate.c index aaf1c40d5de..589f7f7ea41 100644 --- a/src/mame/drivers/liberate.c +++ b/src/mame/drivers/liberate.c @@ -34,6 +34,7 @@ UINT8 *prosoccr_charram; WRITE8_HANDLER( deco16_io_w ); WRITE8_HANDLER( prosoccr_io_w ); +WRITE8_HANDLER( prosport_io_w ); WRITE8_HANDLER( prosport_paletteram_w ); WRITE8_HANDLER( liberate_videoram_w ); WRITE8_HANDLER( liberate_colorram_w ); @@ -228,7 +229,7 @@ static ADDRESS_MAP_START( prosport_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(liberate_colorram_w) AM_BASE(&colorram) AM_RANGE(0x3400, 0x37ff) AM_RAM_WRITE(liberate_videoram_w) AM_BASE(&videoram) AM_RANGE(0x3800, 0x3fff) AM_SHARE(1) AM_RAM - AM_RANGE(0x8000, 0x800f) AM_WRITE(deco16_io_w) + AM_RANGE(0x8000, 0x800f) AM_WRITE(prosport_io_w) AM_RANGE(0x8000, 0x800f) AM_ROMBANK(1) AM_RANGE(0x4000, 0xffff) AM_ROM ADDRESS_MAP_END @@ -708,12 +709,13 @@ static INTERRUPT_GEN( deco16_interrupt ) } } - +#if 0 static INTERRUPT_GEN( prosport_interrupt ) { /* ??? */ - cpu_set_input_line(device, DECO16_IRQ_LINE, HOLD_LINE); + cpu_set_input_line(device, DECO16_IRQ_LINE, ASSERT_LINE); } +#endif /************************************* * @@ -806,9 +808,9 @@ static MACHINE_DRIVER_START( prosport ) MDRV_CPU_ADD("maincpu", DECO16, 2000000) MDRV_CPU_PROGRAM_MAP(prosport_map) MDRV_CPU_IO_MAP(deco16_io_map) - MDRV_CPU_VBLANK_INT("screen", prosport_interrupt) + MDRV_CPU_VBLANK_INT("screen", deco16_interrupt) - MDRV_CPU_ADD("audiocpu", M6502, 1500000) + MDRV_CPU_ADD("audiocpu", M6502, 1500000/2) MDRV_CPU_PROGRAM_MAP(liberate_sound_map) MDRV_CPU_PERIODIC_INT(nmi_line_pulse,16*60) /* ??? */ diff --git a/src/mame/video/liberate.c b/src/mame/video/liberate.c index 97eb9179fec..f55a21e0657 100644 --- a/src/mame/video/liberate.c +++ b/src/mame/video/liberate.c @@ -142,6 +142,26 @@ WRITE8_HANDLER( prosoccr_io_w ) } } +/* completely different i/o...*/ +WRITE8_HANDLER( prosport_io_w ) +{ + deco16_io_ram[offset] = data; + + switch (offset) + { + case 0: + background_disable = ~data & 0x80; + break; + case 2: /* Sound */ + soundlatch_w(space, 0, data); + cputag_set_input_line(space->machine, "audiocpu", M6502_IRQ_LINE, HOLD_LINE); + break; + case 4: /* Irq ack */ + cputag_set_input_line(space->machine, "maincpu", DECO16_IRQ_LINE, CLEAR_LINE); + break; + } +} + WRITE8_HANDLER( liberate_videoram_w ) { videoram[offset] = data; |
