mirror of
https://github.com/holub/mame
synced 2025-06-07 21:33:45 +03:00
crimfght.c: bankdev (nw)
This commit is contained in:
parent
43f506316f
commit
01f8532c81
@ -90,7 +90,7 @@ WRITE8_MEMBER(aliens_state::k052109_051960_w)
|
|||||||
static ADDRESS_MAP_START( aliens_map, AS_PROGRAM, 8, aliens_state )
|
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(0x0000, 0x03ff) AM_DEVICE("bank0000", address_map_bank_device, amap8)
|
||||||
AM_RANGE(0x0400, 0x1fff) AM_RAM
|
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(0x5f80, 0x5f80) AM_READ_PORT("DSW3")
|
||||||
AM_RANGE(0x5f81, 0x5f81) AM_READ_PORT("P1")
|
AM_RANGE(0x5f81, 0x5f81) AM_READ_PORT("P1")
|
||||||
AM_RANGE(0x5f82, 0x5f82) AM_READ_PORT("P2")
|
AM_RANGE(0x5f82, 0x5f82) AM_READ_PORT("P2")
|
||||||
@ -179,8 +179,8 @@ WRITE8_MEMBER(aliens_state::volume_callback)
|
|||||||
|
|
||||||
void aliens_state::machine_start()
|
void aliens_state::machine_start()
|
||||||
{
|
{
|
||||||
membank("bank1")->configure_entries(0, 24, memregion("maincpu")->base(), 0x2000);
|
m_rombank->configure_entries(0, 24, memregion("maincpu")->base(), 0x2000);
|
||||||
membank("bank1")->set_entry(0);
|
m_rombank->set_entry(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void aliens_state::machine_reset()
|
void aliens_state::machine_reset()
|
||||||
@ -190,7 +190,7 @@ void aliens_state::machine_reset()
|
|||||||
|
|
||||||
WRITE8_MEMBER( aliens_state::banking_callback )
|
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 )
|
static MACHINE_CONFIG_START( aliens, aliens_state )
|
||||||
|
@ -85,7 +85,7 @@ WRITE8_MEMBER(crimfght_state::ym2151_ct_w)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static ADDRESS_MAP_START( crimfght_map, AS_PROGRAM, 8, crimfght_state )
|
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(0x0400, 0x1fff) AM_RAM
|
||||||
AM_RANGE(0x3f80, 0x3f80) AM_READ_PORT("SYSTEM")
|
AM_RANGE(0x3f80, 0x3f80) AM_READ_PORT("SYSTEM")
|
||||||
AM_RANGE(0x3f81, 0x3f81) AM_READ_PORT("P1")
|
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(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(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(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(0x6000, 0x7fff) AM_ROMBANK("rombank") /* banked ROM */
|
||||||
AM_RANGE(0x8000, 0xffff) AM_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
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
// full memory map derived from schematics
|
// full memory map derived from schematics
|
||||||
@ -250,26 +255,17 @@ WRITE8_MEMBER(crimfght_state::volume_callback)
|
|||||||
|
|
||||||
void crimfght_state::machine_start()
|
void crimfght_state::machine_start()
|
||||||
{
|
{
|
||||||
UINT8 *ROM = memregion("maincpu")->base();
|
m_rombank->configure_entries(0, 16, memregion("maincpu")->base(), 0x2000);
|
||||||
|
m_rombank->set_entry(0);
|
||||||
membank("bank2")->configure_entries(0, 12, &ROM[0x10000], 0x2000);
|
|
||||||
membank("bank2")->set_entry(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER( crimfght_state::banking_callback )
|
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 */
|
/* bit 5 = select work RAM or palette */
|
||||||
m_woco = BIT(data, 5);
|
m_woco = BIT(data, 5);
|
||||||
if (m_woco)
|
m_bank0000->set_bank(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 */
|
|
||||||
|
|
||||||
/* bit 6 = enable char ROM reading through the video RAM */
|
/* bit 6 = enable char ROM reading through the video RAM */
|
||||||
m_rmrd = BIT(data, 6);
|
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_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */
|
||||||
MCFG_CPU_PROGRAM_MAP(crimfght_sound_map)
|
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 */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
MCFG_SCREEN_REFRESH_RATE(59.17) /* verified on pcb */
|
MCFG_SCREEN_REFRESH_RATE(59.17) /* verified on pcb */
|
||||||
@ -345,9 +348,8 @@ MACHINE_CONFIG_END
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
ROM_START( crimfght )
|
ROM_START( crimfght )
|
||||||
ROM_REGION( 0x28000, "maincpu", 0 ) /* code + banked roms */
|
ROM_REGION( 0x20000, "maincpu", 0 ) /* code + banked roms */
|
||||||
ROM_LOAD( "821l02.f24", 0x10000, 0x18000, CRC(588e7da6) SHA1(285febb3bcca31f82b34af3695a59eafae01cd30) )
|
ROM_LOAD( "821l02.f24", 0x00000, 0x20000, CRC(588e7da6) SHA1(285febb3bcca31f82b34af3695a59eafae01cd30) )
|
||||||
ROM_CONTINUE( 0x08000, 0x08000 )
|
|
||||||
|
|
||||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
|
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
|
||||||
ROM_LOAD( "821l01.h4", 0x0000, 0x8000, CRC(0faca89e) SHA1(21c9c6d736b398a29e8709e1187c5bf3cacdc99d) )
|
ROM_LOAD( "821l01.h4", 0x0000, 0x8000, CRC(0faca89e) SHA1(21c9c6d736b398a29e8709e1187c5bf3cacdc99d) )
|
||||||
@ -368,9 +370,8 @@ ROM_START( crimfght )
|
|||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( crimfghtj )
|
ROM_START( crimfghtj )
|
||||||
ROM_REGION( 0x28000, "maincpu", 0 ) /* code + banked roms */
|
ROM_REGION( 0x20000, "maincpu", 0 ) /* code + banked roms */
|
||||||
ROM_LOAD( "821p02.f24", 0x10000, 0x18000, CRC(f33fa2e1) SHA1(00fc9e8250fa51386f3af2fca0f137bec9e1c220) )
|
ROM_LOAD( "821p02.f24", 0x00000, 0x20000, CRC(f33fa2e1) SHA1(00fc9e8250fa51386f3af2fca0f137bec9e1c220) )
|
||||||
ROM_CONTINUE( 0x08000, 0x08000 )
|
|
||||||
|
|
||||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
|
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
|
||||||
ROM_LOAD( "821l01.h4", 0x0000, 0x8000, CRC(0faca89e) SHA1(21c9c6d736b398a29e8709e1187c5bf3cacdc99d) )
|
ROM_LOAD( "821l01.h4", 0x0000, 0x8000, CRC(0faca89e) SHA1(21c9c6d736b398a29e8709e1187c5bf3cacdc99d) )
|
||||||
@ -391,9 +392,8 @@ ROM_START( crimfghtj )
|
|||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( crimfght2 )
|
ROM_START( crimfght2 )
|
||||||
ROM_REGION( 0x28000, "maincpu", 0 ) /* code + banked roms */
|
ROM_REGION( 0x20000, "maincpu", 0 ) /* code + banked roms */
|
||||||
ROM_LOAD( "821r02.f24", 0x10000, 0x18000, CRC(4ecdd923) SHA1(78e5260c4bb9b18d7818fb6300d7e1d3a577fb63) )
|
ROM_LOAD( "821r02.f24", 0x00000, 0x20000, CRC(4ecdd923) SHA1(78e5260c4bb9b18d7818fb6300d7e1d3a577fb63) )
|
||||||
ROM_CONTINUE( 0x08000, 0x08000 )
|
|
||||||
|
|
||||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
|
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
|
||||||
ROM_LOAD( "821l01.h4", 0x0000, 0x8000, CRC(0faca89e) SHA1(21c9c6d736b398a29e8709e1187c5bf3cacdc99d) )
|
ROM_LOAD( "821l01.h4", 0x0000, 0x8000, CRC(0faca89e) SHA1(21c9c6d736b398a29e8709e1187c5bf3cacdc99d) )
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
#include "sound/k007232.h"
|
#include "sound/k007232.h"
|
||||||
#include "video/k052109.h"
|
#include "video/k052109.h"
|
||||||
#include "video/k051960.h"
|
#include "video/k051960.h"
|
||||||
#include "video/konami_helper.h"
|
|
||||||
|
|
||||||
class aliens_state : public driver_device
|
class aliens_state : public driver_device
|
||||||
{
|
{
|
||||||
@ -22,7 +21,8 @@ public:
|
|||||||
m_bank0000(*this, "bank0000"),
|
m_bank0000(*this, "bank0000"),
|
||||||
m_k007232(*this, "k007232"),
|
m_k007232(*this, "k007232"),
|
||||||
m_k052109(*this, "k052109"),
|
m_k052109(*this, "k052109"),
|
||||||
m_k051960(*this, "k051960") { }
|
m_k051960(*this, "k051960"),
|
||||||
|
m_rombank(*this, "rombank") { }
|
||||||
|
|
||||||
/* devices */
|
/* devices */
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
@ -31,6 +31,8 @@ public:
|
|||||||
required_device<k007232_device> m_k007232;
|
required_device<k007232_device> m_k007232;
|
||||||
required_device<k052109_device> m_k052109;
|
required_device<k052109_device> m_k052109;
|
||||||
required_device<k051960_device> m_k051960;
|
required_device<k051960_device> m_k051960;
|
||||||
|
required_memory_bank m_rombank;
|
||||||
|
|
||||||
DECLARE_WRITE8_MEMBER(aliens_coin_counter_w);
|
DECLARE_WRITE8_MEMBER(aliens_coin_counter_w);
|
||||||
DECLARE_WRITE8_MEMBER(aliens_sh_irqtrigger_w);
|
DECLARE_WRITE8_MEMBER(aliens_sh_irqtrigger_w);
|
||||||
DECLARE_READ8_MEMBER(k052109_051960_r);
|
DECLARE_READ8_MEMBER(k052109_051960_r);
|
||||||
|
@ -5,11 +5,10 @@
|
|||||||
Crime Fighters
|
Crime Fighters
|
||||||
|
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
#include "cpu/m6809/konami.h"
|
#include "machine/bankdev.h"
|
||||||
#include "sound/k007232.h"
|
#include "sound/k007232.h"
|
||||||
#include "video/k052109.h"
|
#include "video/k052109.h"
|
||||||
#include "video/k051960.h"
|
#include "video/k051960.h"
|
||||||
#include "video/konami_helper.h"
|
|
||||||
|
|
||||||
class crimfght_state : public driver_device
|
class crimfght_state : public driver_device
|
||||||
{
|
{
|
||||||
@ -18,21 +17,22 @@ public:
|
|||||||
: driver_device(mconfig, type, tag),
|
: driver_device(mconfig, type, tag),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_audiocpu(*this, "audiocpu"),
|
m_audiocpu(*this, "audiocpu"),
|
||||||
|
m_bank0000(*this, "bank0000"),
|
||||||
m_k007232(*this, "k007232"),
|
m_k007232(*this, "k007232"),
|
||||||
m_k052109(*this, "k052109"),
|
m_k052109(*this, "k052109"),
|
||||||
m_k051960(*this, "k051960"),
|
m_k051960(*this, "k051960"),
|
||||||
m_palette(*this, "palette") { }
|
m_palette(*this, "palette"),
|
||||||
|
m_rombank(*this, "rombank") { }
|
||||||
/* memory pointers */
|
|
||||||
std::vector<UINT8> m_paletteram;
|
|
||||||
|
|
||||||
/* devices */
|
/* devices */
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
required_device<cpu_device> m_audiocpu;
|
required_device<cpu_device> m_audiocpu;
|
||||||
|
required_device<address_map_bank_device> m_bank0000;
|
||||||
required_device<k007232_device> m_k007232;
|
required_device<k007232_device> m_k007232;
|
||||||
required_device<k052109_device> m_k052109;
|
required_device<k052109_device> m_k052109;
|
||||||
required_device<k051960_device> m_k051960;
|
required_device<k051960_device> m_k051960;
|
||||||
required_device<palette_device> m_palette;
|
required_device<palette_device> m_palette;
|
||||||
|
required_memory_bank m_rombank;
|
||||||
|
|
||||||
DECLARE_WRITE8_MEMBER(crimfght_coin_w);
|
DECLARE_WRITE8_MEMBER(crimfght_coin_w);
|
||||||
DECLARE_WRITE8_MEMBER(sound_w);
|
DECLARE_WRITE8_MEMBER(sound_w);
|
||||||
@ -41,7 +41,6 @@ public:
|
|||||||
DECLARE_READ8_MEMBER(datain_r);
|
DECLARE_READ8_MEMBER(datain_r);
|
||||||
DECLARE_WRITE8_MEMBER(ym2151_ct_w);
|
DECLARE_WRITE8_MEMBER(ym2151_ct_w);
|
||||||
virtual void machine_start();
|
virtual void machine_start();
|
||||||
virtual void video_start();
|
|
||||||
UINT32 screen_update_crimfght(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
UINT32 screen_update_crimfght(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
INTERRUPT_GEN_MEMBER(crimfght_interrupt);
|
INTERRUPT_GEN_MEMBER(crimfght_interrupt);
|
||||||
DECLARE_WRITE8_MEMBER(volume_callback);
|
DECLARE_WRITE8_MEMBER(volume_callback);
|
||||||
|
@ -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
|
Display refresh
|
||||||
|
Loading…
Reference in New Issue
Block a user