From 7d5e308e2c0b62dfd3bf8506ac9456e181611643 Mon Sep 17 00:00:00 2001 From: Aaron Giles Date: Thu, 19 Mar 2009 05:58:04 +0000 Subject: [PATCH] From: Robert [mailto:pac0446@bigpond.net.au] Sent: Friday, March 13, 2009 4:26 AM To: Aaron Giles Subject: Submission for mame This change adds inputs for galaxia and astrowar. Galaxia is semi-playable. Note: After inserting a coin, it can take a few seconds to respond. - Robbbert --- src/mame/drivers/galaxia.c | 99 ++++++++++++++++++++++++++++---------- 1 file changed, 74 insertions(+), 25 deletions(-) diff --git a/src/mame/drivers/galaxia.c b/src/mame/drivers/galaxia.c index 32a82e56df2..ee553dd11c8 100644 --- a/src/mame/drivers/galaxia.c +++ b/src/mame/drivers/galaxia.c @@ -43,7 +43,7 @@ static VIDEO_START( galaxia ) /* configure the S2636 chips */ s2636_0 = s2636_config(galaxia_s2636_0_ram, height, width, 3, -27); s2636_1 = s2636_config(galaxia_s2636_1_ram, height, width, 3, -27); - s2636_2 = s2636_config(galaxia_s2636_1_ram, height, width, 3, -27); + s2636_2 = s2636_config(galaxia_s2636_2_ram, height, width, 3, -27); } static VIDEO_UPDATE( galaxia ) @@ -124,40 +124,86 @@ static ADDRESS_MAP_START( mem_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_READWRITE(galaxia_video_r, galaxia_video_w) AM_BASE(&galaxia_video) AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM AM_RANGE(0x2000, 0x33ff) AM_ROM + AM_RANGE(0x7214, 0x7214) AM_READ_PORT("IN0") ADDRESS_MAP_END - static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN0") + AM_RANGE(0x00, 0x00) AM_READ_PORT("IN7") + AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") + AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") + AM_RANGE(0x05, 0x05) AM_READ_PORT("IN5") + AM_RANGE(0x06, 0x06) AM_READ_PORT("IN6") + AM_RANGE(0xac, 0xac) AM_READ_PORT("IN3") +ADDRESS_MAP_END + + +static ADDRESS_MAP_START( astrowar_mem, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x13ff) AM_ROM + AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_RAM + AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_RAM AM_BASE(&galaxia_s2636_0_ram) + AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_RAM AM_BASE(&galaxia_s2636_1_ram) + AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_RAM AM_BASE(&galaxia_s2636_2_ram) + AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_READWRITE(galaxia_video_r, galaxia_video_w) AM_BASE(&galaxia_video) + AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM + AM_RANGE(0x2000, 0x33ff) AM_ROM +ADDRESS_MAP_END + +static ADDRESS_MAP_START( astrowar_io, ADDRESS_SPACE_IO, 8 ) + ADDRESS_MAP_GLOBAL_MASK(0xff) + AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") + AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") + AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") + AM_RANGE(0x06, 0x06) AM_READ_PORT("IN6") + AM_RANGE(0x07, 0x07) AM_READ_PORT("IN7") ADDRESS_MAP_END static INPUT_PORTS_START( galaxia ) PORT_START("IN0") - PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) + PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + + PORT_START("IN1") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN2") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_COCKTAIL + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY + PORT_DIPNAME( 0x80, 0x80, "Freeze" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0x43, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + + PORT_START("IN3") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN5") + PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN6") + PORT_DIPNAME( 0x07, 0x00, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x00, "A 1C_1C B 2C_1C" ) + PORT_DIPSETTING( 0x01, "A 1C_2C B 2C_1C" ) + PORT_DIPSETTING( 0x02, "A 1C_3C B 2C_1C" ) + PORT_DIPSETTING( 0x03, "A 1C_5C B 2C_1C" ) + PORT_DIPSETTING( 0x04, "A 1C_1C B 1C_1C" ) + PORT_DIPSETTING( 0x05, "A 1C_2C B 1C_1C" ) + PORT_DIPSETTING( 0x06, "A 1C_3C B 1C_1C" ) + PORT_DIPSETTING( 0x07, "A 1C_5C B 1C_1C" ) + PORT_DIPNAME( 0x08, 0x00, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x00, "3" ) + PORT_DIPSETTING( 0x08, "5" ) + PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + + PORT_START("IN7") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END static const gfx_layout tiles8x8x1_layout = @@ -220,6 +266,9 @@ MACHINE_DRIVER_END static MACHINE_DRIVER_START( astrowar ) MDRV_IMPORT_FROM( galaxia ) + MDRV_CPU_MODIFY("maincpu") + MDRV_CPU_PROGRAM_MAP(astrowar_mem, 0) + MDRV_CPU_IO_MAP(astrowar_io, 0) MDRV_GFXDECODE(astrowar) MACHINE_DRIVER_END