summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Angelo Salese <angelosa@users.noreply.github.com>2009-06-14 22:34:08 +0000
committer Angelo Salese <angelosa@users.noreply.github.com>2009-06-14 22:34:08 +0000
commitda911147a004022b2d2cff85f43df91dabc22309 (patch)
treedd5c633e38075750186096d3df0137bacd606e1f
parent27a024d949e041254ebf6e6970dd3044dbcb8126 (diff)
Better irq fix and added basic sound (not yet 100% accurate?)
-rw-r--r--src/mame/drivers/liberate.c12
-rw-r--r--src/mame/video/liberate.c20
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;