summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Andrew Gardner <andrew-gardner@users.noreply.github.com>2008-05-11 21:07:19 +0000
committer Andrew Gardner <andrew-gardner@users.noreply.github.com>2008-05-11 21:07:19 +0000
commitb59bf0ccfb13c172228ba03e42fce8f239013dbb (patch)
treeae0db5958b7d0e9b582af3974060a8f3be754b35
parente68cfa644c134a9e239581cf9f929c25763f3024 (diff)
Memory map merge for drivers, tagteam,tail2nos, tankbatt, tankbust, taotaido, targeth, and taxidrvr.
-rw-r--r--src/mame/drivers/tagteam.c46
-rw-r--r--src/mame/drivers/tail2nos.c80
-rw-r--r--src/mame/drivers/tankbatt.c23
-rw-r--r--src/mame/drivers/tankbust.c85
-rw-r--r--src/mame/drivers/taotaido.c68
-rw-r--r--src/mame/drivers/targeth.c54
-rw-r--r--src/mame/drivers/taxidrvr.c94
7 files changed, 149 insertions, 301 deletions
diff --git a/src/mame/drivers/tagteam.c b/src/mame/drivers/tagteam.c
index 7727dd355c2..e35a9bbb7a8 100644
--- a/src/mame/drivers/tagteam.c
+++ b/src/mame/drivers/tagteam.c
@@ -51,50 +51,34 @@ static WRITE8_HANDLER( sound_command_w )
}
-static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM)
- AM_RANGE(0x2000, 0x2000) AM_READ(input_port_1_r) /* IN1 */
- AM_RANGE(0x2001, 0x2001) AM_READ(input_port_0_r) /* IN0 */
- AM_RANGE(0x2002, 0x2002) AM_READ(input_port_2_r) /* DSW2 */
+static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0x07ff) AM_RAM
+ AM_RANGE(0x2000, 0x2000) AM_READWRITE(input_port_1_r, tagteam_flipscreen_w)
+ AM_RANGE(0x2001, 0x2001) AM_READWRITE(input_port_0_r, tagteam_control_w)
+ AM_RANGE(0x2002, 0x2002) AM_READWRITE(input_port_2_r, sound_command_w)
AM_RANGE(0x2003, 0x2003) AM_READ(input_port_3_r) /* DSW1 */
- AM_RANGE(0x4000, 0x43ff) AM_READ(tagteam_mirrorvideoram_r)
- AM_RANGE(0x4400, 0x47ff) AM_READ(tagteam_mirrorcolorram_r)
- AM_RANGE(0x4800, 0x4fff) AM_READ(SMH_RAM)
- AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM)
- AM_RANGE(0x2000, 0x2000) AM_WRITE(tagteam_flipscreen_w)
- AM_RANGE(0x2001, 0x2001) AM_WRITE(tagteam_control_w)
- AM_RANGE(0x2002, 0x2002) AM_WRITE(sound_command_w)
// AM_RANGE(0x2003, 0x2003) AM_WRITE(SMH_NOP) /* Appears to increment when you're out of the ring */
- AM_RANGE(0x4000, 0x43ff) AM_WRITE(tagteam_mirrorvideoram_w)
- AM_RANGE(0x4400, 0x47ff) AM_WRITE(tagteam_mirrorcolorram_w)
+ AM_RANGE(0x4000, 0x43ff) AM_READWRITE(tagteam_mirrorvideoram_r, tagteam_mirrorvideoram_w)
+ AM_RANGE(0x4400, 0x47ff) AM_READWRITE(tagteam_mirrorcolorram_r, tagteam_mirrorcolorram_w)
+ AM_RANGE(0x4800, 0x4fff) AM_READ(SMH_RAM)
AM_RANGE(0x4800, 0x4bff) AM_WRITE(tagteam_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x4c00, 0x4fff) AM_WRITE(tagteam_colorram_w) AM_BASE(&colorram)
- AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
-ADDRESS_MAP_END
-
-
-static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x03ff) AM_READ(SMH_RAM)
- AM_RANGE(0x2007, 0x2007) AM_READ(soundlatch_r)
- AM_RANGE(0x4000, 0xffff) AM_READ(SMH_ROM)
+ AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
-static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x03ff) AM_WRITE(SMH_RAM)
+static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0x03ff) AM_RAM
AM_RANGE(0x2000, 0x2000) AM_WRITE(AY8910_write_port_0_w)
AM_RANGE(0x2001, 0x2001) AM_WRITE(AY8910_control_port_0_w)
AM_RANGE(0x2002, 0x2002) AM_WRITE(AY8910_write_port_1_w)
AM_RANGE(0x2003, 0x2003) AM_WRITE(AY8910_control_port_1_w)
AM_RANGE(0x2004, 0x2004) AM_WRITE(DAC_0_data_w)
AM_RANGE(0x2005, 0x2005) AM_WRITE(interrupt_enable_w)
+ AM_RANGE(0x2007, 0x2007) AM_READ(soundlatch_r)
+ AM_RANGE(0x4000, 0xffff) AM_READ(SMH_ROM)
ADDRESS_MAP_END
-
static INTERRUPT_GEN( tagteam_interrupt )
{
static int coin;
@@ -271,12 +255,12 @@ static MACHINE_DRIVER_START( tagteam )
/* basic machine hardware */
MDRV_CPU_ADD(M6502, 1500000) /* 1.5 MHz ?? */
- MDRV_CPU_PROGRAM_MAP(readmem,writemem)
+ MDRV_CPU_PROGRAM_MAP(main_map,0)
MDRV_CPU_VBLANK_INT("main", tagteam_interrupt)
MDRV_CPU_ADD(M6502, 975000)
/* audio CPU */ /* 975 kHz ?? */
- MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
+ MDRV_CPU_PROGRAM_MAP(sound_map,0)
MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,16) /* IRQs are triggered by the main CPU */
/* video hardware */
diff --git a/src/mame/drivers/tail2nos.c b/src/mame/drivers/tail2nos.c
index 6299a368bdb..0d5a67c9a21 100644
--- a/src/mame/drivers/tail2nos.c
+++ b/src/mame/drivers/tail2nos.c
@@ -68,71 +68,43 @@ static WRITE8_HANDLER( sound_bankswitch_w )
memory_set_bankptr(3,memory_region(REGION_CPU2) + 0x10000 + (data & 0x01) * 0x8000);
}
-
-
-static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 16 )
- AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
- AM_RANGE(0x200000, 0x27ffff) AM_READ(SMH_BANK1) /* extra ROM */
- AM_RANGE(0x2c0000, 0x2dffff) AM_READ(SMH_BANK2) /* extra ROM */
- AM_RANGE(0x400000, 0x41ffff) AM_READ(tail2nos_zoomdata_r)
- AM_RANGE(0x500000, 0x500fff) AM_READ(tail2nos_K051316_0_r)
- AM_RANGE(0xff8000, 0xffbfff) AM_READ(SMH_RAM) /* work RAM */
- AM_RANGE(0xffc000, 0xffc2ff) AM_READ(SMH_RAM) /* sprites */
- AM_RANGE(0xffc300, 0xffcfff) AM_READ(SMH_RAM)
- AM_RANGE(0xffd000, 0xffdfff) AM_READ(SMH_RAM)
- AM_RANGE(0xffe000, 0xffefff) AM_READ(SMH_RAM)
- AM_RANGE(0xfff000, 0xfff001) AM_READ(input_port_0_word_r)
- AM_RANGE(0xfff004, 0xfff005) AM_READ(input_port_1_word_r)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
- AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
- AM_RANGE(0x200000, 0x27ffff) AM_WRITE(SMH_ROM)
- AM_RANGE(0x2c0000, 0x2dffff) AM_WRITE(SMH_ROM)
- AM_RANGE(0x400000, 0x41ffff) AM_WRITE(tail2nos_zoomdata_w)
- AM_RANGE(0x500000, 0x500fff) AM_WRITE(tail2nos_K051316_0_w)
+static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
+ AM_RANGE(0x000000, 0x03ffff) AM_ROM
+ AM_RANGE(0x200000, 0x27ffff) AM_READWRITE(SMH_BANK1, SMH_ROM) /* extra ROM */
+ AM_RANGE(0x2c0000, 0x2dffff) AM_READWRITE(SMH_BANK2, SMH_ROM)
+ AM_RANGE(0x400000, 0x41ffff) AM_READWRITE(tail2nos_zoomdata_r, tail2nos_zoomdata_w)
+ AM_RANGE(0x500000, 0x500fff) AM_READWRITE(tail2nos_K051316_0_r, tail2nos_K051316_0_w)
AM_RANGE(0x510000, 0x51001f) AM_WRITE(tail2nos_K051316_ctrl_0_w)
- AM_RANGE(0xff8000, 0xffbfff) AM_WRITE(SMH_RAM) /* work RAM */
- AM_RANGE(0xffc000, 0xffc2ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
- AM_RANGE(0xffc300, 0xffcfff) AM_WRITE(SMH_RAM)
- AM_RANGE(0xffd000, 0xffdfff) AM_WRITE(tail2nos_bgvideoram_w) AM_BASE(&tail2nos_bgvideoram)
- AM_RANGE(0xffe000, 0xffefff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
- AM_RANGE(0xfff000, 0xfff001) AM_WRITE(tail2nos_gfxbank_w)
+ AM_RANGE(0xff8000, 0xffbfff) AM_RAM /* work RAM */
+ AM_RANGE(0xffc000, 0xffc2ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
+ AM_RANGE(0xffc300, 0xffcfff) AM_RAM
+ AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(tail2nos_bgvideoram_w) AM_BASE(&tail2nos_bgvideoram)
+ AM_RANGE(0xffe000, 0xffefff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
+ AM_RANGE(0xfff000, 0xfff001) AM_READWRITE(input_port_0_word_r, tail2nos_gfxbank_w)
+ AM_RANGE(0xfff004, 0xfff005) AM_READ(input_port_1_word_r)
AM_RANGE(0xfff008, 0xfff009) AM_WRITE(sound_command_w)
ADDRESS_MAP_END
-static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x77ff) AM_READ(SMH_ROM)
- AM_RANGE(0x7800, 0x7fff) AM_READ(SMH_RAM)
- AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK3)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x77ff) AM_WRITE(SMH_ROM)
- AM_RANGE(0x7800, 0x7fff) AM_WRITE(SMH_RAM)
- AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( sound_readport, ADDRESS_SPACE_IO, 8 )
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x07, 0x07) AM_READ(soundlatch_r)
-#if 0
- AM_RANGE(0x18, 0x18) AM_READ(YM2610_status_port_0_A_r)
- AM_RANGE(0x1a, 0x1a) AM_READ(YM2610_status_port_0_B_r)
-#endif
+static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0x77ff) AM_ROM
+ AM_RANGE(0x7800, 0x7fff) AM_RAM
+ AM_RANGE(0x8000, 0xffff) AM_READWRITE(SMH_BANK3, SMH_ROM)
ADDRESS_MAP_END
-static ADDRESS_MAP_START( sound_writeport, ADDRESS_SPACE_IO, 8 )
+static ADDRESS_MAP_START( sound_port_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x07, 0x07) AM_WRITE(SMH_NOP) /* clear pending command */
+ AM_RANGE(0x07, 0x07) AM_READWRITE(soundlatch_r, SMH_NOP) /* the write is a clear pending command */
AM_RANGE(0x08, 0x08) AM_WRITE(YM2608_control_port_0_A_w)
AM_RANGE(0x09, 0x09) AM_WRITE(YM2608_data_port_0_A_w)
AM_RANGE(0x0a, 0x0a) AM_WRITE(YM2608_control_port_0_B_w)
AM_RANGE(0x0b, 0x0b) AM_WRITE(YM2608_data_port_0_B_w)
+#if 0
+ AM_RANGE(0x18, 0x18) AM_READ(YM2610_status_port_0_A_r)
+ AM_RANGE(0x1a, 0x1a) AM_READ(YM2610_status_port_0_B_r)
+#endif
ADDRESS_MAP_END
-
static INPUT_PORTS_START( tail2nos )
PORT_START
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -270,13 +242,13 @@ static MACHINE_DRIVER_START( tail2nos )
/* basic machine hardware */
MDRV_CPU_ADD(M68000,XTAL_20MHz/2) /* verified on pcb */
- MDRV_CPU_PROGRAM_MAP(readmem,writemem)
+ MDRV_CPU_PROGRAM_MAP(main_map,0)
MDRV_CPU_VBLANK_INT("main", irq6_line_hold)
MDRV_CPU_ADD(Z80,XTAL_20MHz/4) /* verified on pcb */
/* audio CPU */
- MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
- MDRV_CPU_IO_MAP(sound_readport,sound_writeport)
+ MDRV_CPU_PROGRAM_MAP(sound_map,0)
+ MDRV_CPU_IO_MAP(sound_port_map,0)
/* IRQs are triggered by the YM2608 */
MDRV_MACHINE_RESET(tail2nos)
diff --git a/src/mame/drivers/tankbatt.c b/src/mame/drivers/tankbatt.c
index 2ec1d9266a5..51d31ed81cf 100644
--- a/src/mame/drivers/tankbatt.c
+++ b/src/mame/drivers/tankbatt.c
@@ -149,29 +149,26 @@ static WRITE8_HANDLER( tankbatt_sh_fire_w )
sample_start (0, 0, 0);
}
-static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
+static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x01ff) AM_READ(SMH_RAM)
- AM_RANGE(0x0c00, 0x0c07) AM_READ(tankbatt_in0_r)
- AM_RANGE(0x0c08, 0x0c0f) AM_READ(tankbatt_in1_r)
- AM_RANGE(0x0c18, 0x0c1f) AM_READ(tankbatt_dsw_r)
- AM_RANGE(0x0200, 0x0bff) AM_READ(SMH_RAM)
- AM_RANGE(0x6000, 0x7fff) AM_READ(SMH_ROM)
- AM_RANGE(0xf800, 0xffff) AM_READ(SMH_ROM) /* for the reset / interrupt vectors */
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0x000f) AM_WRITE(SMH_RAM) AM_BASE(&tankbatt_bulletsram) AM_SIZE(&tankbatt_bulletsram_size)
AM_RANGE(0x0010, 0x01ff) AM_WRITE(SMH_RAM)
AM_RANGE(0x0800, 0x0bff) AM_WRITE(tankbatt_videoram_w) AM_BASE(&videoram)
- AM_RANGE(0x0000, 0x000f) AM_WRITE(SMH_RAM) AM_BASE(&tankbatt_bulletsram) AM_SIZE(&tankbatt_bulletsram_size)
- AM_RANGE(0x0c18, 0x0c18) AM_WRITE(SMH_NOP) /* watchdog ?? */
+ AM_RANGE(0x0c00, 0x0c07) AM_READ(tankbatt_in0_r)
AM_RANGE(0x0c00, 0x0c01) AM_WRITE(tankbatt_led_w)
+ AM_RANGE(0x0c08, 0x0c0f) AM_READ(tankbatt_in1_r)
AM_RANGE(0x0c0a, 0x0c0a) AM_WRITE(tankbatt_interrupt_enable_w)
AM_RANGE(0x0c0b, 0x0c0b) AM_WRITE(tankbatt_sh_engine_w)
AM_RANGE(0x0c0c, 0x0c0c) AM_WRITE(tankbatt_sh_fire_w)
AM_RANGE(0x0c0d, 0x0c0d) AM_WRITE(tankbatt_sh_expl_w)
AM_RANGE(0x0c0f, 0x0c0f) AM_WRITE(tankbatt_demo_interrupt_enable_w)
+ AM_RANGE(0x0c18, 0x0c1f) AM_READ(tankbatt_dsw_r)
+ AM_RANGE(0x0c18, 0x0c18) AM_WRITE(SMH_NOP) /* watchdog ?? */
+ AM_RANGE(0x0200, 0x0bff) AM_READ(SMH_RAM)
AM_RANGE(0x0200, 0x07ff) AM_WRITE(SMH_RAM)
AM_RANGE(0x2000, 0x3fff) AM_WRITE(SMH_ROM)
+ AM_RANGE(0x6000, 0x7fff) AM_READ(SMH_ROM)
+ AM_RANGE(0xf800, 0xffff) AM_READ(SMH_ROM) /* for the reset / interrupt vectors */
ADDRESS_MAP_END
static INTERRUPT_GEN( tankbatt_interrupt )
@@ -279,7 +276,7 @@ static MACHINE_DRIVER_START( tankbatt )
/* basic machine hardware */
MDRV_CPU_ADD(M6502, 1000000) /* 1 MHz ???? */
- MDRV_CPU_PROGRAM_MAP(readmem,writemem)
+ MDRV_CPU_PROGRAM_MAP(main_map,0)
MDRV_CPU_VBLANK_INT("main", tankbatt_interrupt)
/* video hardware */
diff --git a/src/mame/drivers/tankbust.c b/src/mame/drivers/tankbust.c
index 566f64f93a8..2721d49e3f3 100644
--- a/src/mame/drivers/tankbust.c
+++ b/src/mame/drivers/tankbust.c
@@ -191,82 +191,47 @@ static READ8_HANDLER( some_changing_input )
return variable_data;
}
-static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)
- AM_RANGE(0x6000, 0x9fff) AM_READ(SMH_BANK1)
- AM_RANGE(0xa000, 0xbfff) AM_READ(SMH_BANK2)
-
- AM_RANGE(0xe000, 0xe007) AM_READ(debug_output_area_r)
-
- AM_RANGE(0xf000, 0xf7ff) AM_READ(SMH_RAM)
-
-//AM_RANGE(0xf800, 0xffff) AM_READ(read_from_unmapped_memory) /* a bug in game code ? */
-
- AM_RANGE(0xe800, 0xe800) AM_READ(input_port_0_r)
+static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0x5fff) AM_ROM
+ AM_RANGE(0x6000, 0x9fff) AM_READWRITE(SMH_BANK1, SMH_ROM)
+ AM_RANGE(0xa000, 0xbfff) AM_READWRITE(SMH_BANK2, SMH_ROM)
+ AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(tankbust_background_videoram_r, tankbust_background_videoram_w) AM_BASE(&videoram)
+ AM_RANGE(0xc800, 0xcfff) AM_READWRITE(tankbust_background_colorram_r, tankbust_background_colorram_w) AM_BASE(&colorram)
+ AM_RANGE(0xd000, 0xd7ff) AM_READWRITE(tankbust_txtram_r, tankbust_txtram_w) AM_BASE(&tankbust_txtram)
+ AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
+ AM_RANGE(0xe000, 0xe007) AM_READWRITE(debug_output_area_r, tankbust_e0xx_w)
+ AM_RANGE(0xe800, 0xe800) AM_READWRITE(input_port_0_r, tankbust_yscroll_w)
AM_RANGE(0xe801, 0xe801) AM_READ(input_port_1_r)
AM_RANGE(0xe802, 0xe802) AM_READ(input_port_2_r)
- AM_RANGE(0xe803, 0xe803) AM_READ(some_changing_input)/*unknown. Game expects this to change so this is not player input */
-
- AM_RANGE(0xc000, 0xc7ff) AM_READ(tankbust_background_videoram_r)
- AM_RANGE(0xc800, 0xcfff) AM_READ(tankbust_background_colorram_r)
- AM_RANGE(0xd000, 0xd7ff) AM_READ(tankbust_txtram_r)
- AM_RANGE(0xd800, 0xd8ff) AM_READ(SMH_RAM)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x5fff) AM_WRITE(SMH_ROM)
- AM_RANGE(0x6000, 0x9fff) AM_WRITE(SMH_ROM)
- AM_RANGE(0xa000, 0xbfff) AM_WRITE(SMH_ROM)
-
- AM_RANGE(0xf000, 0xf7ff) AM_WRITE(SMH_RAM)
-
- AM_RANGE(0xe000, 0xe007) AM_WRITE(tankbust_e0xx_w)
-
- AM_RANGE(0xe800, 0xe800) AM_WRITE(tankbust_yscroll_w)
AM_RANGE(0xe801, 0xe802) AM_WRITE(tankbust_xscroll_w)
- AM_RANGE(0xe803, 0xe803) AM_WRITE(tankbust_soundlatch_w)
+ AM_RANGE(0xe803, 0xe803) AM_READWRITE(some_changing_input, tankbust_soundlatch_w) /*unknown. Game expects this to change so this is not player input */
AM_RANGE(0xe804, 0xe804) AM_WRITE(SMH_NOP) /* watchdog ? ; written in long-lasting loops */
-
- AM_RANGE(0xc000, 0xc7ff) AM_WRITE(tankbust_background_videoram_w) AM_BASE(&videoram)
- AM_RANGE(0xc800, 0xcfff) AM_WRITE(tankbust_background_colorram_w) AM_BASE(&colorram)
- AM_RANGE(0xd000, 0xd7ff) AM_WRITE(tankbust_txtram_w) AM_BASE(&tankbust_txtram)
- AM_RANGE(0xd800, 0xd8ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
+ AM_RANGE(0xf000, 0xf7ff) AM_RAM
+ //AM_RANGE(0xf800, 0xffff) AM_READ(read_from_unmapped_memory) /* a bug in game code ? */
ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( readport2, ADDRESS_SPACE_IO, 8 )
+static ADDRESS_MAP_START( port_map_cpu2, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xc0, 0xc0) AM_READ(AY8910_read_port_0_r)
+ AM_RANGE(0x10, 0x10) AM_WRITE(AY8910_write_port_1_w)
AM_RANGE(0x30, 0x30) AM_READ(AY8910_read_port_1_r)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( writeport2, ADDRESS_SPACE_IO, 8 )
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xc0, 0xc0) AM_WRITE(AY8910_control_port_0_w)
- AM_RANGE(0x40, 0x40) AM_WRITE(AY8910_write_port_0_w)
AM_RANGE(0x30, 0x30) AM_WRITE(AY8910_control_port_1_w)
- AM_RANGE(0x10, 0x10) AM_WRITE(AY8910_write_port_1_w)
+ AM_RANGE(0x40, 0x40) AM_WRITE(AY8910_write_port_0_w)
+ AM_RANGE(0xc0, 0xc0) AM_READ(AY8910_read_port_0_r)
+ AM_RANGE(0xc0, 0xc0) AM_WRITE(AY8910_control_port_0_w)
ADDRESS_MAP_END
-static ADDRESS_MAP_START( readmem2, ADDRESS_SPACE_PROGRAM, 8 )
+static ADDRESS_MAP_START( map_cpu2, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM)
- AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( writemem2, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM)
- AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
-
AM_RANGE(0x2000, 0x3fff) AM_WRITE(SMH_NOP) /* garbage, written in initialization loop */
-//0x4000 and 0x4040-0x4045 seem to be used (referenced in the code)
+ //0x4000 and 0x4040-0x4045 seem to be used (referenced in the code)
AM_RANGE(0x4000, 0x7fff) AM_WRITE(SMH_NOP) /* garbage, written in initialization loop */
+ AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
+ AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
ADDRESS_MAP_END
-
-
-
static INPUT_PORTS_START( tankbust )
PORT_START /* IN0 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
@@ -372,12 +337,12 @@ static MACHINE_DRIVER_START( tankbust )
/* basic machine hardware */
MDRV_CPU_ADD(Z80, 4000000) /* 4 MHz ? */
- MDRV_CPU_PROGRAM_MAP( readmem, writemem )
+ MDRV_CPU_PROGRAM_MAP(main_map,0)
MDRV_CPU_VBLANK_INT("main", irq0_line_hold)
MDRV_CPU_ADD(Z80, 4000000) /* 3.072 MHz ? */
- MDRV_CPU_PROGRAM_MAP( readmem2, writemem2 )
- MDRV_CPU_IO_MAP( readport2, writeport2 )
+ MDRV_CPU_PROGRAM_MAP(map_cpu2,0)
+ MDRV_CPU_IO_MAP(port_map_cpu2,0)
MDRV_INTERLEAVE(100)
diff --git a/src/mame/drivers/taotaido.c b/src/mame/drivers/taotaido.c
index 020c7bc7d8b..96fd226c79b 100644
--- a/src/mame/drivers/taotaido.c
+++ b/src/mame/drivers/taotaido.c
@@ -98,15 +98,14 @@ static WRITE16_HANDLER( sound_command_w )
cpunum_set_input_line(machine, 1, INPUT_LINE_NMI, PULSE_LINE);
}
}
-static ADDRESS_MAP_START( taotaido_readmem, ADDRESS_SPACE_PROGRAM, 16 )
- AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
- AM_RANGE(0x800000, 0x803fff) AM_READ(SMH_RAM) // bg ram?
- AM_RANGE(0xa00000, 0xa01fff) AM_READ(SMH_RAM) // sprite ram
- AM_RANGE(0xc00000, 0xc0ffff) AM_READ(SMH_RAM) // sprite tile look up
- AM_RANGE(0xfe0000, 0xfeffff) AM_READ(SMH_RAM) // main ram
- AM_RANGE(0xffc000, 0xffcfff) AM_READ(SMH_RAM) // palette ram
- AM_RANGE(0xffe000, 0xffe3ff) AM_READ(SMH_RAM) // rowscroll / rowselect / scroll ram
-
+static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
+ AM_RANGE(0x000000, 0x0fffff) AM_ROM
+ AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(taotaido_bgvideoram_w) AM_BASE(&taotaido_bgram) // bg ram?
+ AM_RANGE(0xa00000, 0xa01fff) AM_RAM AM_BASE(&taotaido_spriteram) // sprite ram
+ AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_BASE(&taotaido_spriteram2) // sprite tile lookup ram
+ AM_RANGE(0xfe0000, 0xfeffff) AM_RAM // main ram
+ AM_RANGE(0xffc000, 0xffcfff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) // palette ram
+ AM_RANGE(0xffe000, 0xffe3ff) AM_RAM AM_BASE(&taotaido_scrollram) // rowscroll / rowselect / scroll ram
AM_RANGE(0xffff80, 0xffff81) AM_READ(input_port_0_word_r) // player 1 inputs
AM_RANGE(0xffff82, 0xffff83) AM_READ(input_port_1_word_r) // player 2 inputs
AM_RANGE(0xffff84, 0xffff85) AM_READ(input_port_2_word_r) // system inputs
@@ -119,24 +118,12 @@ static ADDRESS_MAP_START( taotaido_readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0xffffa0, 0xffffa1) AM_READ(input_port_7_word_r) // player 3 inputs (unused)
AM_RANGE(0xffffa2, 0xffffa3) AM_READ(input_port_8_word_r) // player 4 inputs (unused)
#endif
-
- AM_RANGE(0xffffe0, 0xffffe1) AM_READ(pending_command_r) // guess - seems to be needed for all the sounds to work
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( taotaido_writemem, ADDRESS_SPACE_PROGRAM, 16 )
- AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
- AM_RANGE(0x800000, 0x803fff) AM_WRITE(taotaido_bgvideoram_w) AM_BASE(&taotaido_bgram) // bg ram?
- AM_RANGE(0xa00000, 0xa01fff) AM_WRITE(SMH_RAM) AM_BASE(&taotaido_spriteram) // sprite ram
- AM_RANGE(0xc00000, 0xc0ffff) AM_WRITE(SMH_RAM) AM_BASE(&taotaido_spriteram2) // sprite tile lookup ram
- AM_RANGE(0xfe0000, 0xfeffff) AM_WRITE(SMH_RAM) // main ram
- AM_RANGE(0xffc000, 0xffcfff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) // palette ram
- AM_RANGE(0xffe000, 0xffe3ff) AM_WRITE(SMH_RAM) AM_BASE(&taotaido_scrollram) // rowscroll / rowselect / scroll ram
-
AM_RANGE(0xffff00, 0xffff0f) AM_WRITE(taotaido_tileregs_w)
AM_RANGE(0xffff10, 0xffff11) AM_WRITE(SMH_NOP) // unknown
AM_RANGE(0xffff20, 0xffff21) AM_WRITE(SMH_NOP) // unknown - flip screen related
AM_RANGE(0xffff40, 0xffff47) AM_WRITE(taotaido_sprite_character_bank_select_w)
AM_RANGE(0xffffc0, 0xffffc1) AM_WRITE(sound_command_w) // seems right
+ AM_RANGE(0xffffe0, 0xffffe1) AM_READ(pending_command_r) // guess - seems to be needed for all the sounds to work
ADDRESS_MAP_END
/* sound cpu - same as aerofgt */
@@ -154,37 +141,24 @@ static WRITE8_HANDLER( taotaido_sh_bankswitch_w )
memory_set_bankptr(1,rom + (data & 0x03) * 0x8000);
}
-static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x77ff) AM_READ(SMH_ROM)
- AM_RANGE(0x7800, 0x7fff) AM_READ(SMH_RAM)
- AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x77ff) AM_WRITE(SMH_ROM)
- AM_RANGE(0x7800, 0x7fff) AM_WRITE(SMH_RAM)
- AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
+static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0x77ff) AM_ROM
+ AM_RANGE(0x7800, 0x7fff) AM_RAM
+ AM_RANGE(0x8000, 0xffff) AM_READWRITE(SMH_BANK1, SMH_ROM)
ADDRESS_MAP_END
-static ADDRESS_MAP_START( taotaido_sound_readport, ADDRESS_SPACE_IO, 8 )
+static ADDRESS_MAP_START( sound_port_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(YM2610_status_port_0_A_r)
- AM_RANGE(0x02, 0x02) AM_READ(YM2610_status_port_0_B_r)
- AM_RANGE(0x0c, 0x0c) AM_READ(soundlatch_r)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( taotaido_sound_writeport, ADDRESS_SPACE_IO, 8 )
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(YM2610_control_port_0_A_w)
+ AM_RANGE(0x00, 0x00) AM_READWRITE(YM2610_status_port_0_A_r, YM2610_control_port_0_A_w)
AM_RANGE(0x01, 0x01) AM_WRITE(YM2610_data_port_0_A_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(YM2610_control_port_0_B_w)
+ AM_RANGE(0x02, 0x02) AM_READWRITE(YM2610_status_port_0_B_r, YM2610_control_port_0_B_w)
AM_RANGE(0x03, 0x03) AM_WRITE(YM2610_data_port_0_B_w)
AM_RANGE(0x04, 0x04) AM_WRITE(taotaido_sh_bankswitch_w)
AM_RANGE(0x08, 0x08) AM_WRITE(pending_command_clear_w)
+ AM_RANGE(0x0c, 0x0c) AM_READ(soundlatch_r)
ADDRESS_MAP_END
-
static INPUT_PORTS_START( taotaido )
PORT_START_TAG("IN0") /* Player 1 controls (0xffff81.b) */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
@@ -359,13 +333,13 @@ static const struct YM2610interface ym2610_interface =
static MACHINE_DRIVER_START( taotaido )
MDRV_CPU_ADD(M68000, 32000000/2)
- MDRV_CPU_PROGRAM_MAP(taotaido_readmem,taotaido_writemem)
+ MDRV_CPU_PROGRAM_MAP(main_map,0)
MDRV_CPU_VBLANK_INT("main", irq1_line_hold)
- MDRV_CPU_ADD(Z80,20000000/4) // ??
/* audio CPU */
- MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
- MDRV_CPU_IO_MAP(taotaido_sound_readport,taotaido_sound_writeport)
+ MDRV_CPU_ADD(Z80,20000000/4) // ??
+ MDRV_CPU_PROGRAM_MAP(sound_map,0)
+ MDRV_CPU_IO_MAP(sound_port_map,0)
/* IRQs are triggered by the YM2610 */
MDRV_GFXDECODE(taotaido)
diff --git a/src/mame/drivers/targeth.c b/src/mame/drivers/targeth.c
index 417f75e1798..79fc0669f28 100644
--- a/src/mame/drivers/targeth.c
+++ b/src/mame/drivers/targeth.c
@@ -54,24 +54,6 @@ static INTERRUPT_GEN(targeth_interrupt )
}
}
-
-static ADDRESS_MAP_START( targeth_readmem, ADDRESS_SPACE_PROGRAM, 16 )
- AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM) /* ROM */
- AM_RANGE(0x100000, 0x103fff) AM_READ(SMH_RAM) /* Video RAM */
- AM_RANGE(0x108000, 0x108001) AM_READ(input_port_0_word_r)/* Gun 1P X */
- AM_RANGE(0x108002, 0x108003) AM_READ(input_port_1_word_r)/* Gun 1P Y */
- AM_RANGE(0x108004, 0x108005) AM_READ(input_port_2_word_r)/* Gun 2P X */
- AM_RANGE(0x108006, 0x108007) AM_READ(input_port_3_word_r)/* Gun 2P Y */
- AM_RANGE(0x200000, 0x2007ff) AM_READ(SMH_RAM) /* Palette */
- AM_RANGE(0x440000, 0x440fff) AM_READ(SMH_RAM) /* Sprite RAM */
- AM_RANGE(0x700000, 0x700001) AM_READ(input_port_4_word_r)/* DIPSW #2 */
- AM_RANGE(0x700002, 0x700003) AM_READ(input_port_5_word_r)/* DIPSW #1 */
- AM_RANGE(0x700006, 0x700007) AM_READ(input_port_6_word_r)/* Coins, Start & Fire buttons */
- AM_RANGE(0x700008, 0x700009) AM_READ(input_port_7_word_r)/* Service & Guns Reload? */
- AM_RANGE(0x70000e, 0x70000f) AM_READ(OKIM6295_status_0_lsb_r)/* OKI6295 status register */
- AM_RANGE(0xfe0000, 0xfeffff) AM_READ(SMH_RAM) /* Work RAM (partially shared with DS5002FP) */
-ADDRESS_MAP_END
-
static WRITE16_HANDLER( OKIM6295_bankswitch_w )
{
UINT8 *RAM = memory_region(REGION_SOUND1);
@@ -86,21 +68,29 @@ static WRITE16_HANDLER( targeth_coin_counter_w )
coin_counter_w( (offset >> 3) & 0x01, data & 0x01);
}
-static ADDRESS_MAP_START( targeth_writemem, ADDRESS_SPACE_PROGRAM, 16 )
- AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM) /* ROM */
- AM_RANGE(0x100000, 0x103fff) AM_WRITE(targeth_vram_w) AM_BASE(&targeth_videoram) /* Video RAM */
- AM_RANGE(0x108000, 0x108007) AM_WRITE(SMH_RAM) AM_BASE(&targeth_vregs) /* Video Registers */
- AM_RANGE(0x10800c, 0x10800d) AM_WRITE(SMH_NOP) /* CLR Video INT */
- AM_RANGE(0x200000, 0x2007ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)/* Palette */
- AM_RANGE(0x440000, 0x440fff) AM_WRITE(SMH_RAM) AM_BASE(&targeth_spriteram) /* Sprite RAM */
- AM_RANGE(0x70000c, 0x70000d) AM_WRITE(OKIM6295_bankswitch_w) /* OKI6295 bankswitch */
- AM_RANGE(0x70000e, 0x70000f) AM_WRITE(OKIM6295_data_0_lsb_w) /* OKI6295 data register */
- AM_RANGE(0x70000a, 0x70001b) AM_WRITE(SMH_NOP) /* ??? Guns reload related? */
- AM_RANGE(0x70002a, 0x70003b) AM_WRITE(targeth_coin_counter_w) /* Coin counters */
- AM_RANGE(0xfe0000, 0xfeffff) AM_WRITE(SMH_RAM) /* Work RAM (partially shared with DS5002FP) */
+static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
+ AM_RANGE(0x000000, 0x0fffff) AM_ROM
+ AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(targeth_vram_w) AM_BASE(&targeth_videoram) /* Video RAM */
+ AM_RANGE(0x108000, 0x108007) AM_WRITE(SMH_RAM) AM_BASE(&targeth_vregs) /* Video Registers */
+ AM_RANGE(0x108000, 0x108001) AM_READ(input_port_0_word_r) /* Gun 1P X */
+ AM_RANGE(0x108002, 0x108003) AM_READ(input_port_1_word_r) /* Gun 1P Y */
+ AM_RANGE(0x108004, 0x108005) AM_READ(input_port_2_word_r) /* Gun 2P X */
+ AM_RANGE(0x108006, 0x108007) AM_READ(input_port_3_word_r) /* Gun 2P Y */
+ AM_RANGE(0x108000, 0x108007) AM_WRITE(SMH_RAM) AM_BASE(&targeth_vregs) /* Video Registers */
+ AM_RANGE(0x10800c, 0x10800d) AM_WRITE(SMH_NOP) /* CLR Video INT */
+ AM_RANGE(0x200000, 0x2007ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16) /* Palette */
+ AM_RANGE(0x440000, 0x440fff) AM_RAM AM_BASE(&targeth_spriteram) /* Sprite RAM */
+ AM_RANGE(0x700000, 0x700001) AM_READ(input_port_4_word_r) /* DIPSW #2 */
+ AM_RANGE(0x700002, 0x700003) AM_READ(input_port_5_word_r) /* DIPSW #1 */
+ AM_RANGE(0x700006, 0x700007) AM_READ(input_port_6_word_r) /* Coins, Start & Fire buttons */
+ AM_RANGE(0x700008, 0x700009) AM_READ(input_port_7_word_r) /* Service & Guns Reload? */
+ AM_RANGE(0x70000a, 0x70001b) AM_WRITE(SMH_NOP) /* ??? Guns reload related? */
+ AM_RANGE(0x70000c, 0x70000d) AM_WRITE(OKIM6295_bankswitch_w) /* OKI6295 bankswitch */
+ AM_RANGE(0x70000e, 0x70000f) AM_READWRITE(OKIM6295_status_0_lsb_r, OKIM6295_data_0_lsb_w) /* OKI6295 status register */
+ AM_RANGE(0x70002a, 0x70003b) AM_WRITE(targeth_coin_counter_w) /* Coin counters */
+ AM_RANGE(0xfe0000, 0xfeffff) AM_RAM /* Work RAM (partially shared with DS5002FP) */
ADDRESS_MAP_END
-
static INPUT_PORTS_START( targeth )
PORT_START /* Gun 1 X */
PORT_BIT( 0x01ff, 200, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.05, -0.028, 0) PORT_MINMAX( 0, 400 + 4) PORT_SENSITIVITY(100) PORT_KEYDELTA(20) PORT_PLAYER(1)
@@ -190,7 +180,7 @@ static MACHINE_DRIVER_START( targeth )
/* basic machine hardware */
MDRV_CPU_ADD(M68000,24000000/2) /* 12 MHz */
- MDRV_CPU_PROGRAM_MAP(targeth_readmem,targeth_writemem)
+ MDRV_CPU_PROGRAM_MAP(main_map,0)
MDRV_CPU_VBLANK_INT_HACK(targeth_interrupt,3)
/* video hardware */
diff --git a/src/mame/drivers/taxidrvr.c b/src/mame/drivers/taxidrvr.c
index d94e6c55e15..3463849dba6 100644
--- a/src/mame/drivers/taxidrvr.c
+++ b/src/mame/drivers/taxidrvr.c
@@ -138,50 +138,35 @@ static const ppi8255_interface ppi8255_intf[5] =
};
-static ADDRESS_MAP_START( readmem1, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
- AM_RANGE(0x8000, 0x8fff) AM_READ(SMH_RAM)
- AM_RANGE(0x9000, 0x9fff) AM_READ(SMH_RAM)
- AM_RANGE(0xa000, 0xafff) AM_READ(SMH_RAM)
- AM_RANGE(0xb000, 0xbfff) AM_READ(SMH_RAM)
- AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
- AM_RANGE(0xd800, 0xdfff) AM_READ(SMH_RAM)
- AM_RANGE(0xe000, 0xf3ff) AM_READ(SMH_RAM)
- AM_RANGE(0xf400, 0xf403) AM_DEVREAD(PPI8255, "ppi8255_0", ppi8255_r)
- AM_RANGE(0xf480, 0xf483) AM_DEVREAD(PPI8255, "ppi8255_2", ppi8255_r)
- AM_RANGE(0xf500, 0xf503) AM_DEVREAD(PPI8255, "ppi8255_3", ppi8255_r)
- AM_RANGE(0xf580, 0xf583) AM_DEVREAD(PPI8255, "ppi8255_4", ppi8255_r)
- AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( writemem1, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
- AM_RANGE(0x8000, 0x8fff) AM_WRITE(SMH_RAM) /* ??? */
- AM_RANGE(0x9000, 0x9fff) AM_WRITE(SMH_RAM) /* ??? */
- AM_RANGE(0xa000, 0xafff) AM_WRITE(SMH_RAM) /* ??? */
- AM_RANGE(0xb000, 0xbfff) AM_WRITE(SMH_RAM) /* ??? */
- AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM) AM_BASE(&taxidrvr_vram4) /* radar bitmap */
+static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0x8000, 0x8fff) AM_RAM /* ??? */
+ AM_RANGE(0x9000, 0x9fff) AM_RAM /* ??? */
+ AM_RANGE(0xa000, 0xafff) AM_RAM /* ??? */
+ AM_RANGE(0xb000, 0xbfff) AM_RAM /* ??? */
+ AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_BASE(&taxidrvr_vram4) /* radar bitmap */
AM_RANGE(0xc800, 0xcfff) AM_WRITE(SMH_RAM) AM_BASE(&taxidrvr_vram5) /* "sprite1" bitmap */
AM_RANGE(0xd000, 0xd7ff) AM_WRITE(SMH_RAM) AM_BASE(&taxidrvr_vram6) /* "sprite2" bitmap */
- AM_RANGE(0xd800, 0xdfff) AM_WRITE(SMH_RAM) AM_BASE(&taxidrvr_vram7) /* "sprite3" bitmap */
+ AM_RANGE(0xd800, 0xdfff) AM_RAM AM_BASE(&taxidrvr_vram7) /* "sprite3" bitmap */
+ AM_RANGE(0xe000, 0xf3ff) AM_READ(SMH_RAM)
AM_RANGE(0xe000, 0xe3ff) AM_WRITE(SMH_RAM) AM_BASE(&taxidrvr_vram1) /* car tilemap */
AM_RANGE(0xe400, 0xebff) AM_WRITE(SMH_RAM) AM_BASE(&taxidrvr_vram2) /* bg1 tilemap */
AM_RANGE(0xec00, 0xefff) AM_WRITE(SMH_RAM) AM_BASE(&taxidrvr_vram0) /* fg tilemap */
AM_RANGE(0xf000, 0xf3ff) AM_WRITE(SMH_RAM) AM_BASE(&taxidrvr_vram3) /* bg2 tilemap */
- AM_RANGE(0xf400, 0xf403) AM_DEVWRITE(PPI8255, "ppi8255_0", ppi8255_w)
- AM_RANGE(0xf480, 0xf483) AM_DEVWRITE(PPI8255, "ppi8255_2", ppi8255_w) /* "sprite1" placement */
- AM_RANGE(0xf500, 0xf503) AM_DEVWRITE(PPI8255, "ppi8255_3", ppi8255_w) /* "sprite2" placement */
- AM_RANGE(0xf580, 0xf583) AM_DEVWRITE(PPI8255, "ppi8255_4", ppi8255_w) /* "sprite3" placement */
-// AM_RANGE(0xf780, 0xf781) AM_WRITE(SMH_RAM) /* more scroll registers? */
+ AM_RANGE(0xf400, 0xf403) AM_DEVREADWRITE(PPI8255, "ppi8255_0", ppi8255_r, ppi8255_w)
+ AM_RANGE(0xf480, 0xf483) AM_DEVREADWRITE(PPI8255, "ppi8255_2", ppi8255_r, ppi8255_w) /* "sprite1" placement */
+ AM_RANGE(0xf500, 0xf503) AM_DEVREADWRITE(PPI8255, "ppi8255_3", ppi8255_r, ppi8255_w) /* "sprite2" placement */
+ AM_RANGE(0xf580, 0xf583) AM_DEVREADWRITE(PPI8255, "ppi8255_4", ppi8255_r, ppi8255_w) /* "sprite3" placement */
+ //AM_RANGE(0xf780, 0xf781) AM_WRITE(SMH_RAM) /* more scroll registers? */
AM_RANGE(0xf782, 0xf787) AM_WRITE(SMH_RAM) AM_BASE(&taxidrvr_scroll) /* bg scroll (three copies always identical) */
- AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM)
+ AM_RANGE(0xf800, 0xffff) AM_RAM
ADDRESS_MAP_END
-static ADDRESS_MAP_START( readmem2, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
- AM_RANGE(0x6000, 0x67ff) AM_READ(SMH_RAM)
- AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
- AM_RANGE(0xa000, 0xa003) AM_DEVREAD(PPI8255, "ppi8255_1", ppi8255_r)
+static ADDRESS_MAP_START( cpu2_map, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0x3fff) AM_ROM
+ AM_RANGE(0x6000, 0x67ff) AM_RAM
+ AM_RANGE(0x8000, 0x87ff) AM_RAM
+ AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE(PPI8255, "ppi8255_1", ppi8255_r, ppi8255_w)
AM_RANGE(0xe000, 0xe000) AM_READ(input_port_0_r)
AM_RANGE(0xe001, 0xe001) AM_READ(input_port_1_r)
AM_RANGE(0xe002, 0xe002) AM_READ(input_port_2_r)
@@ -189,40 +174,21 @@ static ADDRESS_MAP_START( readmem2, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xe004, 0xe004) AM_READ(input_port_4_r)
ADDRESS_MAP_END
-static ADDRESS_MAP_START( writemem2, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
- AM_RANGE(0x6000, 0x67ff) AM_WRITE(SMH_RAM)
- AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
- AM_RANGE(0xa000, 0xa003) AM_DEVWRITE(PPI8255, "ppi8255_1", ppi8255_w)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( readmem3, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM)
+static ADDRESS_MAP_START( cpu3_map, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x2000) AM_READ(SMH_NOP) /* irq ack? */
- AM_RANGE(0xfc00, 0xffff) AM_READ(SMH_RAM)
+ AM_RANGE(0xfc00, 0xffff) AM_RAM
ADDRESS_MAP_END
-static ADDRESS_MAP_START( writemem3, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM)
- AM_RANGE(0xfc00, 0xffff) AM_WRITE(SMH_RAM)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( readport3, ADDRESS_SPACE_IO, 8 )
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01, 0x01) AM_READ(AY8910_read_port_0_r)
- AM_RANGE(0x03, 0x03) AM_READ(AY8910_read_port_1_r)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( writeport3, ADDRESS_SPACE_IO, 8 )
+static ADDRESS_MAP_START( cpu3_port_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(AY8910_control_port_0_w)
- AM_RANGE(0x01, 0x01) AM_WRITE(AY8910_write_port_0_w)
+ AM_RANGE(0x01, 0x01) AM_READWRITE(AY8910_read_port_0_r, AY8910_write_port_0_w)
AM_RANGE(0x02, 0x02) AM_WRITE(AY8910_control_port_1_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(AY8910_write_port_1_w)
+ AM_RANGE(0x03, 0x03) AM_READWRITE(AY8910_read_port_1_r, AY8910_write_port_1_w)
ADDRESS_MAP_END
-
static INPUT_PORTS_START( taxidrvr )
PORT_START_TAG("DSW0")
PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Coin_A ) )
@@ -395,16 +361,16 @@ static MACHINE_DRIVER_START( taxidrvr )
/* basic machine hardware */
MDRV_CPU_ADD(Z80,4000000) /* 4 MHz ??? */
- MDRV_CPU_PROGRAM_MAP(readmem1,writemem1)
+ MDRV_CPU_PROGRAM_MAP(main_map,0)
MDRV_CPU_VBLANK_INT("main", irq0_line_hold)
MDRV_CPU_ADD(Z80,4000000) /* 4 MHz ??? */
- MDRV_CPU_PROGRAM_MAP(readmem2,writemem2)
+ MDRV_CPU_PROGRAM_MAP(cpu2_map,0)
MDRV_CPU_VBLANK_INT("main", irq0_line_hold) /* ??? */
MDRV_CPU_ADD(Z80,4000000) /* 4 MHz ??? */
- MDRV_CPU_PROGRAM_MAP(readmem3,writemem3)
- MDRV_CPU_IO_MAP(readport3,writeport3)
+ MDRV_CPU_PROGRAM_MAP(cpu3_map,0)
+ MDRV_CPU_IO_MAP(cpu3_port_map,0)
MDRV_CPU_VBLANK_INT("main", irq0_line_hold) /* ??? */
MDRV_INTERLEAVE(100) /* 100 CPU slices per frame - an high value to ensure proper */