summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/psychic5.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/psychic5.c')
-rw-r--r--src/mame/drivers/psychic5.c61
1 files changed, 58 insertions, 3 deletions
diff --git a/src/mame/drivers/psychic5.c b/src/mame/drivers/psychic5.c
index 1184564424d..4beb550e2a8 100644
--- a/src/mame/drivers/psychic5.c
+++ b/src/mame/drivers/psychic5.c
@@ -408,7 +408,7 @@ WRITE8_MEMBER(psychic5_state::bombsa_flipscreen_w)
static ADDRESS_MAP_START( psychic5_main_map, AS_PROGRAM, 8, psychic5_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank1")
- AM_RANGE(0xc000, 0xdfff) AM_READWRITE(psychic5_paged_ram_r, psychic5_paged_ram_w)
+ AM_RANGE(0xc000, 0xdfff) AM_DEVICE("vrambank", address_map_bank_device, amap8)
AM_RANGE(0xe000, 0xefff) AM_RAM
AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch_byte_w)
AM_RANGE(0xf001, 0xf001) AM_READNOP AM_WRITE(psychic5_coin_counter_w)
@@ -421,6 +421,28 @@ static ADDRESS_MAP_START( psychic5_main_map, AS_PROGRAM, 8, psychic5_state )
AM_RANGE(0xf800, 0xffff) AM_RAM
ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( psychic5_vrambank_map, AS_PROGRAM, 8, psychic5_state )
+ AM_RANGE(0x0000, 0x0fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
+ AM_RANGE(0x1000, 0x1fff) AM_RAM
+
+ AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SYSTEM")
+ AM_RANGE(0x2001, 0x2001) AM_READ_PORT("P1")
+ AM_RANGE(0x2002, 0x2002) AM_READ_PORT("P2")
+ AM_RANGE(0x2003, 0x2003) AM_READ_PORT("DSW1")
+ AM_RANGE(0x2004, 0x2004) AM_READ_PORT("DSW2")
+
+ AM_RANGE(0x2308, 0x230c) AM_RAM AM_SHARE("bg_control")
+
+ AM_RANGE(0x2400, 0x25ff) AM_RAM_WRITE(sprite_col_w) AM_SHARE("palette_ram_sp")
+ AM_RANGE(0x2800, 0x29ff) AM_RAM_WRITE(bg_col_w) AM_SHARE("palette_ram_bg")
+ AM_RANGE(0x2a00, 0x2bff) AM_RAM_WRITE(tx_col_w) AM_SHARE("palette_ram_tx")
+
+ AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram")
+
+ADDRESS_MAP_END
+
+
static ADDRESS_MAP_START( psychic5_sound_map, AS_PROGRAM, 8, psychic5_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xc000, 0xc7ff) AM_RAM
@@ -450,7 +472,7 @@ static ADDRESS_MAP_START( bombsa_main_map, AS_PROGRAM, 8, psychic5_state )
AM_RANGE(0xd200, 0xd7ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xd800, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xffff) AM_READWRITE(psychic5_paged_ram_r, bombsa_paged_ram_w)
+ AM_RANGE(0xe000, 0xffff) AM_DEVICE("vrambank", address_map_bank_device, amap8)
ADDRESS_MAP_END
static ADDRESS_MAP_START( bombsa_sound_map, AS_PROGRAM, 8, psychic5_state )
@@ -466,6 +488,25 @@ static ADDRESS_MAP_START( bombsa_soundport_map, AS_IO, 8, psychic5_state )
AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
ADDRESS_MAP_END
+static ADDRESS_MAP_START( bombsa_vrambank_map, AS_PROGRAM, 8, psychic5_state )
+ AM_RANGE(0x0000, 0x0fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
+ AM_RANGE(0x1000, 0x1fff) AM_RAM
+
+ AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SYSTEM")
+ AM_RANGE(0x2001, 0x2001) AM_READ_PORT("P1")
+ AM_RANGE(0x2002, 0x2002) AM_READ_PORT("P2")
+ AM_RANGE(0x2003, 0x2003) AM_READ_PORT("DSW1")
+ AM_RANGE(0x2004, 0x2004) AM_READ_PORT("DSW2")
+
+ AM_RANGE(0x2308, 0x230c) AM_RAM AM_SHARE("bg_control")
+
+ AM_RANGE(0x3000, 0x31ff) AM_RAM_WRITE(sprite_col_w) AM_SHARE("palette_ram_sp")
+ AM_RANGE(0x3200, 0x33ff) AM_RAM_WRITE(bg_col_w) AM_SHARE("palette_ram_bg")
+ AM_RANGE(0x3400, 0x35ff) AM_RAM_WRITE(tx_col_w) AM_SHARE("palette_ram_tx")
+
+ AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram")
+ADDRESS_MAP_END
+
static INPUT_PORTS_START( psychic5 )
PORT_START("SYSTEM") /* system control */
@@ -655,6 +696,13 @@ static MACHINE_CONFIG_START( psychic5, psychic5_state )
MCFG_CPU_PROGRAM_MAP(psychic5_main_map)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", psychic5_state, psychic5_scanline, "screen", 0, 1)
+ MCFG_DEVICE_ADD("vrambank", ADDRESS_MAP_BANK, 0)
+ MCFG_DEVICE_PROGRAM_MAP(psychic5_vrambank_map)
+ MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
+ MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8)
+ MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(14)
+ MCFG_ADDRESS_MAP_BANK_STRIDE(0x2000)
+
MCFG_CPU_ADD("audiocpu", Z80, XTAL_5MHz)
MCFG_CPU_PROGRAM_MAP(psychic5_sound_map)
MCFG_CPU_IO_MAP(psychic5_soundport_map)
@@ -700,6 +748,13 @@ static MACHINE_CONFIG_START( bombsa, psychic5_state )
MCFG_CPU_PROGRAM_MAP(bombsa_main_map)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", psychic5_state, psychic5_scanline, "screen", 0, 1)
+ MCFG_DEVICE_ADD("vrambank", ADDRESS_MAP_BANK, 0)
+ MCFG_DEVICE_PROGRAM_MAP(bombsa_vrambank_map)
+ MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
+ MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8)
+ MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(14)
+ MCFG_ADDRESS_MAP_BANK_STRIDE(0x2000)
+
MCFG_CPU_ADD("audiocpu", Z80, XTAL_5MHz )
MCFG_CPU_PROGRAM_MAP(bombsa_sound_map)
MCFG_CPU_IO_MAP(bombsa_soundport_map)
@@ -718,7 +773,7 @@ static MACHINE_CONFIG_START( bombsa, psychic5_state )
MCFG_PALETTE_ADD("palette", 768)
MCFG_VIDEO_START_OVERRIDE(psychic5_state,bombsa)
- MCFG_VIDEO_RESET_OVERRIDE(psychic5_state,bombsa)
+ MCFG_VIDEO_RESET_OVERRIDE(psychic5_state,psychic5)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")