crimfght.c: bankdev (nw)

This commit is contained in:
Alex W. Jackson 2015-08-14 12:14:52 -04:00
parent 43f506316f
commit 01f8532c81
5 changed files with 39 additions and 54 deletions

View File

@ -90,7 +90,7 @@ WRITE8_MEMBER(aliens_state::k052109_051960_w)
static ADDRESS_MAP_START( aliens_map, AS_PROGRAM, 8, aliens_state )
AM_RANGE(0x0000, 0x03ff) AM_DEVICE("bank0000", address_map_bank_device, amap8)
AM_RANGE(0x0400, 0x1fff) AM_RAM
AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1") /* banked ROM */
AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank") /* banked ROM */
AM_RANGE(0x5f80, 0x5f80) AM_READ_PORT("DSW3")
AM_RANGE(0x5f81, 0x5f81) AM_READ_PORT("P1")
AM_RANGE(0x5f82, 0x5f82) AM_READ_PORT("P2")
@ -179,8 +179,8 @@ WRITE8_MEMBER(aliens_state::volume_callback)
void aliens_state::machine_start()
{
membank("bank1")->configure_entries(0, 24, memregion("maincpu")->base(), 0x2000);
membank("bank1")->set_entry(0);
m_rombank->configure_entries(0, 24, memregion("maincpu")->base(), 0x2000);
m_rombank->set_entry(0);
}
void aliens_state::machine_reset()
@ -190,7 +190,7 @@ void aliens_state::machine_reset()
WRITE8_MEMBER( aliens_state::banking_callback )
{
membank("bank1")->set_entry(data & 0x1f);
m_rombank->set_entry(data & 0x1f);
}
static MACHINE_CONFIG_START( aliens, aliens_state )

View File

@ -85,7 +85,7 @@ WRITE8_MEMBER(crimfght_state::ym2151_ct_w)
}
static ADDRESS_MAP_START( crimfght_map, AS_PROGRAM, 8, crimfght_state )
AM_RANGE(0x0000, 0x03ff) AM_RAMBANK("bank1") /* banked RAM */
AM_RANGE(0x0000, 0x03ff) AM_DEVICE("bank0000", address_map_bank_device, amap8)
AM_RANGE(0x0400, 0x1fff) AM_RAM
AM_RANGE(0x3f80, 0x3f80) AM_READ_PORT("SYSTEM")
AM_RANGE(0x3f81, 0x3f81) AM_READ_PORT("P1")
@ -98,8 +98,13 @@ static ADDRESS_MAP_START( crimfght_map, AS_PROGRAM, 8, crimfght_state )
AM_RANGE(0x3f88, 0x3f88) AM_MIRROR(0x03) AM_READ(watchdog_reset_r) AM_WRITE(crimfght_coin_w) // 051550
AM_RANGE(0x3f8c, 0x3f8c) AM_MIRROR(0x03) AM_WRITE(sound_w)
AM_RANGE(0x2000, 0x5fff) AM_READWRITE(k052109_051960_r, k052109_051960_w) /* video RAM + sprite RAM */
AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank2") /* banked ROM */
AM_RANGE(0x8000, 0xffff) AM_ROM
AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("rombank") /* banked ROM */
AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x18000)
ADDRESS_MAP_END
static ADDRESS_MAP_START( bank0000_map, AS_PROGRAM, 8, crimfght_state )
AM_RANGE(0x0000, 0x03ff) AM_RAM
AM_RANGE(0x0400, 0x07ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
// full memory map derived from schematics
@ -250,26 +255,17 @@ WRITE8_MEMBER(crimfght_state::volume_callback)
void crimfght_state::machine_start()
{
UINT8 *ROM = memregion("maincpu")->base();
membank("bank2")->configure_entries(0, 12, &ROM[0x10000], 0x2000);
membank("bank2")->set_entry(0);
m_rombank->configure_entries(0, 16, memregion("maincpu")->base(), 0x2000);
m_rombank->set_entry(0);
}
WRITE8_MEMBER( crimfght_state::banking_callback )
{
membank("bank2")->set_entry(data & 0x0f);
m_rombank->set_entry(data & 0x0f);
/* bit 5 = select work RAM or palette */
m_woco = BIT(data, 5);
if (m_woco)
{
m_maincpu->space(AS_PROGRAM).install_read_bank(0x0000, 0x03ff, "bank3");
m_maincpu->space(AS_PROGRAM).install_write_handler(0x0000, 0x03ff, write8_delegate(FUNC(palette_device::write), m_palette.target()));
membank("bank3")->set_base(&m_paletteram[0]);
}
else
m_maincpu->space(AS_PROGRAM).install_readwrite_bank(0x0000, 0x03ff, "bank1"); /* RAM */
m_bank0000->set_bank(m_woco);
/* bit 6 = enable char ROM reading through the video RAM */
m_rmrd = BIT(data, 6);
@ -301,6 +297,13 @@ static MACHINE_CONFIG_START( crimfght, crimfght_state )
MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(crimfght_sound_map)
MCFG_DEVICE_ADD("bank0000", ADDRESS_MAP_BANK, 0)
MCFG_DEVICE_PROGRAM_MAP(bank0000_map)
MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_BIG)
MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8)
MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(11)
MCFG_ADDRESS_MAP_BANK_STRIDE(0x400)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.17) /* verified on pcb */
@ -345,9 +348,8 @@ MACHINE_CONFIG_END
***************************************************************************/
ROM_START( crimfght )
ROM_REGION( 0x28000, "maincpu", 0 ) /* code + banked roms */
ROM_LOAD( "821l02.f24", 0x10000, 0x18000, CRC(588e7da6) SHA1(285febb3bcca31f82b34af3695a59eafae01cd30) )
ROM_CONTINUE( 0x08000, 0x08000 )
ROM_REGION( 0x20000, "maincpu", 0 ) /* code + banked roms */
ROM_LOAD( "821l02.f24", 0x00000, 0x20000, CRC(588e7da6) SHA1(285febb3bcca31f82b34af3695a59eafae01cd30) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
ROM_LOAD( "821l01.h4", 0x0000, 0x8000, CRC(0faca89e) SHA1(21c9c6d736b398a29e8709e1187c5bf3cacdc99d) )
@ -368,9 +370,8 @@ ROM_START( crimfght )
ROM_END
ROM_START( crimfghtj )
ROM_REGION( 0x28000, "maincpu", 0 ) /* code + banked roms */
ROM_LOAD( "821p02.f24", 0x10000, 0x18000, CRC(f33fa2e1) SHA1(00fc9e8250fa51386f3af2fca0f137bec9e1c220) )
ROM_CONTINUE( 0x08000, 0x08000 )
ROM_REGION( 0x20000, "maincpu", 0 ) /* code + banked roms */
ROM_LOAD( "821p02.f24", 0x00000, 0x20000, CRC(f33fa2e1) SHA1(00fc9e8250fa51386f3af2fca0f137bec9e1c220) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
ROM_LOAD( "821l01.h4", 0x0000, 0x8000, CRC(0faca89e) SHA1(21c9c6d736b398a29e8709e1187c5bf3cacdc99d) )
@ -391,9 +392,8 @@ ROM_START( crimfghtj )
ROM_END
ROM_START( crimfght2 )
ROM_REGION( 0x28000, "maincpu", 0 ) /* code + banked roms */
ROM_LOAD( "821r02.f24", 0x10000, 0x18000, CRC(4ecdd923) SHA1(78e5260c4bb9b18d7818fb6300d7e1d3a577fb63) )
ROM_CONTINUE( 0x08000, 0x08000 )
ROM_REGION( 0x20000, "maincpu", 0 ) /* code + banked roms */
ROM_LOAD( "821r02.f24", 0x00000, 0x20000, CRC(4ecdd923) SHA1(78e5260c4bb9b18d7818fb6300d7e1d3a577fb63) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
ROM_LOAD( "821l01.h4", 0x0000, 0x8000, CRC(0faca89e) SHA1(21c9c6d736b398a29e8709e1187c5bf3cacdc99d) )

View File

@ -10,7 +10,6 @@
#include "sound/k007232.h"
#include "video/k052109.h"
#include "video/k051960.h"
#include "video/konami_helper.h"
class aliens_state : public driver_device
{
@ -22,7 +21,8 @@ public:
m_bank0000(*this, "bank0000"),
m_k007232(*this, "k007232"),
m_k052109(*this, "k052109"),
m_k051960(*this, "k051960") { }
m_k051960(*this, "k051960"),
m_rombank(*this, "rombank") { }
/* devices */
required_device<cpu_device> m_maincpu;
@ -31,6 +31,8 @@ public:
required_device<k007232_device> m_k007232;
required_device<k052109_device> m_k052109;
required_device<k051960_device> m_k051960;
required_memory_bank m_rombank;
DECLARE_WRITE8_MEMBER(aliens_coin_counter_w);
DECLARE_WRITE8_MEMBER(aliens_sh_irqtrigger_w);
DECLARE_READ8_MEMBER(k052109_051960_r);

View File

@ -5,11 +5,10 @@
Crime Fighters
*************************************************************************/
#include "cpu/m6809/konami.h"
#include "machine/bankdev.h"
#include "sound/k007232.h"
#include "video/k052109.h"
#include "video/k051960.h"
#include "video/konami_helper.h"
class crimfght_state : public driver_device
{
@ -18,21 +17,22 @@ public:
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_bank0000(*this, "bank0000"),
m_k007232(*this, "k007232"),
m_k052109(*this, "k052109"),
m_k051960(*this, "k051960"),
m_palette(*this, "palette") { }
/* memory pointers */
std::vector<UINT8> m_paletteram;
m_palette(*this, "palette"),
m_rombank(*this, "rombank") { }
/* devices */
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<address_map_bank_device> m_bank0000;
required_device<k007232_device> m_k007232;
required_device<k052109_device> m_k052109;
required_device<k051960_device> m_k051960;
required_device<palette_device> m_palette;
required_memory_bank m_rombank;
DECLARE_WRITE8_MEMBER(crimfght_coin_w);
DECLARE_WRITE8_MEMBER(sound_w);
@ -41,7 +41,6 @@ public:
DECLARE_READ8_MEMBER(datain_r);
DECLARE_WRITE8_MEMBER(ym2151_ct_w);
virtual void machine_start();
virtual void video_start();
UINT32 screen_update_crimfght(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(crimfght_interrupt);
DECLARE_WRITE8_MEMBER(volume_callback);

View File

@ -45,22 +45,6 @@ K051960_CB_MEMBER(crimfght_state::sprite_callback)
}
/***************************************************************************
Start the video hardware emulation.
***************************************************************************/
void crimfght_state::video_start()
{
m_paletteram.resize(0x400);
m_palette->basemem().set(m_paletteram, ENDIANNESS_BIG, 2);
save_item(NAME(m_paletteram));
}
/***************************************************************************
Display refresh