From 658a3e51f979c47c0ff166d4b03d49b2b0f47d56 Mon Sep 17 00:00:00 2001 From: Aaron Giles Date: Wed, 27 May 2009 05:13:21 +0000 Subject: [PATCH] Pole Position fixes. Also added mirrors to Pole Position memory maps. --- src/mame/drivers/polepos.c | 52 ++++++++++++++++++++----------------- src/mame/layout/polepos.lay | 4 +-- 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/src/mame/drivers/polepos.c b/src/mame/drivers/polepos.c index 85f9d8eda9a..f3a2c4b00ba 100644 --- a/src/mame/drivers/polepos.c +++ b/src/mame/drivers/polepos.c @@ -409,23 +409,23 @@ static MACHINE_RESET( polepos ) static ADDRESS_MAP_START( z80_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size) /* Battery Backup */ + AM_RANGE(0x3000, 0x37ff) AM_MIRROR(0x0800) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size) /* Battery Backup */ AM_RANGE(0x4000, 0x47ff) AM_READWRITE(polepos_sprite_r, polepos_sprite_w) /* Motion Object */ AM_RANGE(0x4800, 0x4bff) AM_READWRITE(polepos_road_r, polepos_road_w) /* Road Memory */ AM_RANGE(0x4c00, 0x4fff) AM_READWRITE(polepos_alpha_r, polepos_alpha_w) /* Alphanumeric (char ram) */ AM_RANGE(0x5000, 0x57ff) AM_READWRITE(polepos_view_r, polepos_view_w) /* Background Memory */ - AM_RANGE(0x8000, 0x83ff) AM_READ(SMH_RAM) /* Sound Memory */ - AM_RANGE(0x8000, 0x83bf) AM_WRITE(SMH_RAM) /* Sound Memory */ - AM_RANGE(0x83c0, 0x83ff) AM_DEVWRITE("namco", polepos_sound_w) AM_BASE(&polepos_soundregs)/* Sound data */ + AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x0c00) AM_READ(SMH_RAM) /* Sound Memory */ + AM_RANGE(0x8000, 0x83bf) AM_MIRROR(0x0c00) AM_WRITE(SMH_RAM) /* Sound Memory */ + AM_RANGE(0x83c0, 0x83ff) AM_MIRROR(0x0c00) AM_DEVWRITE("namco", polepos_sound_w) AM_BASE(&polepos_soundregs)/* Sound data */ - AM_RANGE(0x9000, 0x90ff) AM_DEVREADWRITE("06xx", namco_06xx_data_r, namco_06xx_data_w) - AM_RANGE(0x9100, 0x9100) AM_DEVREADWRITE("06xx", namco_06xx_ctrl_r, namco_06xx_ctrl_w) - AM_RANGE(0xa000, 0xa000) AM_READ(polepos_ready_r) /* READY */ - AM_RANGE(0xa000, 0xa007) AM_WRITE(polepos_latch_w) /* misc latches */ - AM_RANGE(0xa100, 0xa100) AM_WRITE(watchdog_reset_w) /* Watchdog */ - AM_RANGE(0xa200, 0xa200) AM_WRITE(polepos_engine_sound_lsb_w) /* Car Sound ( Lower Nibble ) */ - AM_RANGE(0xa300, 0xa300) AM_WRITE(polepos_engine_sound_msb_w) /* Car Sound ( Upper Nibble ) */ + AM_RANGE(0x9000, 0x9000) AM_MIRROR(0x0eff) AM_DEVREADWRITE("06xx", namco_06xx_data_r, namco_06xx_data_w) + AM_RANGE(0x9100, 0x9100) AM_MIRROR(0x0eff) AM_DEVREADWRITE("06xx", namco_06xx_ctrl_r, namco_06xx_ctrl_w) + AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x0cff) AM_READ(polepos_ready_r) /* READY */ + AM_RANGE(0xa000, 0xa007) AM_MIRROR(0x0cf8) AM_WRITE(polepos_latch_w) /* misc latches */ + AM_RANGE(0xa100, 0xa100) AM_MIRROR(0x0cff) AM_WRITE(watchdog_reset_w) /* Watchdog */ + AM_RANGE(0xa200, 0xa200) AM_MIRROR(0x0cff) AM_WRITE(polepos_engine_sound_lsb_w) /* Car Sound ( Lower Nibble ) */ + AM_RANGE(0xa300, 0xa300) AM_MIRROR(0x0cff) AM_WRITE(polepos_engine_sound_msb_w) /* Car Sound ( Upper Nibble ) */ ADDRESS_MAP_END static ADDRESS_MAP_START( z80_io, ADDRESS_SPACE_IO, 8 ) @@ -437,13 +437,13 @@ ADDRESS_MAP_END /* the same memory map is used by both Z8002 CPUs; all RAM areas are shared */ static ADDRESS_MAP_START( z8002_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x6000, 0x6003) AM_WRITE(polepos_z8002_nvi_enable_w) /* NVI enable - *NOT* shared by the two CPUs */ + AM_RANGE(0x6000, 0x6001) AM_MIRROR(0x1ffe) AM_WRITE(polepos_z8002_nvi_enable_w) /* NVI enable - *NOT* shared by the two CPUs */ AM_RANGE(0x8000, 0x8fff) AM_READWRITE(polepos_sprite16_r, polepos_sprite16_w) AM_BASE(&polepos_sprite16_memory) /* Motion Object */ AM_RANGE(0x9000, 0x97ff) AM_READWRITE(polepos_road16_r, polepos_road16_w) AM_BASE(&polepos_road16_memory) /* Road Memory */ AM_RANGE(0x9800, 0x9fff) AM_READWRITE(polepos_alpha16_r, polepos_alpha16_w) AM_BASE(&polepos_alpha16_memory) /* Alphanumeric (char ram) */ AM_RANGE(0xa000, 0xafff) AM_READWRITE(polepos_view16_r, polepos_view16_w) AM_BASE(&polepos_view16_memory) /* Background memory */ - AM_RANGE(0xc000, 0xc001) AM_WRITE(polepos_view16_hscroll_w) /* Background horz scroll position */ - AM_RANGE(0xc100, 0xc101) AM_WRITE(polepos_road16_vscroll_w) /* Road vertical position */ + AM_RANGE(0xc000, 0xc001) AM_MIRROR(0x38fe) AM_WRITE(polepos_view16_hscroll_w) /* Background horz scroll position */ + AM_RANGE(0xc100, 0xc101) AM_MIRROR(0x38fe) AM_WRITE(polepos_road16_vscroll_w) /* Road vertical position */ ADDRESS_MAP_END @@ -536,15 +536,17 @@ INPUT_PORTS_END static INPUT_PORTS_START( poleposa ) - PORT_START("IN0") + PORT_START("IN0L") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Gear Change") PORT_CODE(KEYCODE_SPACE) POLEPOS_TOGGLE /* Gear */ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM(auto_start_r, NULL) // start 1, program controlled PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_SERVICE( 0x80, IP_ACTIVE_LOW ) + + PORT_START("IN0H") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_SERVICE( 0x08, IP_ACTIVE_LOW ) PORT_START("DSWA") PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Coin_A ) ) @@ -698,15 +700,17 @@ INPUT_PORTS_END static INPUT_PORTS_START( polepos2 ) - PORT_START("IN0") + PORT_START("IN0L") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Gear Change") PORT_CODE(KEYCODE_SPACE) POLEPOS_TOGGLE /* Gear */ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM(auto_start_r, NULL) // start 1, program controlled PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_SERVICE( 0x80, IP_ACTIVE_LOW ) + + PORT_START("IN0H") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_SERVICE( 0x08, IP_ACTIVE_LOW ) PORT_START("DSWA") PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Coin_A ) ) diff --git a/src/mame/layout/polepos.lay b/src/mame/layout/polepos.lay index 3d8b0d9e543..80031c34cb6 100644 --- a/src/mame/layout/polepos.lay +++ b/src/mame/layout/polepos.lay @@ -51,7 +51,7 @@ - + @@ -60,7 +60,7 @@ - +