summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame
diff options
context:
space:
mode:
author cam900 <dbtlrchl@naver.com>2018-04-01 00:40:48 +0900
committer ajrhacker <ajrhacker@users.noreply.github.com>2018-03-31 11:40:48 -0400
commit35703af0703051410269a59d76dae6ea9365d47f (patch)
treee585d942e7e928840d27350ad0c5f37bd01c262b /src/mame
parenta36110f7071641d44093d223444e5698ba613532 (diff)
djboy.cpp : Fix tags, Minor cleanup, Add generic_latch_8_device for comms (#3383)
* djboy.cpp : Fix tags, Minor cleanup * djboy.cpp : Build fixes * djboy.cpp : Fix build * djboy.cpp : Add stereo sound output, Because PCB has stereo sound output connector and OKI is connected per each output (Set "Stereo Output" dip on for stereo sound) * djboy.cpp : Cleanup OKI ROM loading * djboy.cpp : Fix tags * Revert DIP, Because it's doesn't effect on software * djboy.cpp Cleanup gfxdecode * djboy.cpp : Fix sound output level * djboy.cpp : Minor cleanups
Diffstat (limited to 'src/mame')
-rw-r--r--src/mame/drivers/djboy.cpp283
-rw-r--r--src/mame/includes/djboy.h77
2 files changed, 150 insertions, 210 deletions
diff --git a/src/mame/drivers/djboy.cpp b/src/mame/drivers/djboy.cpp
index 181b9973841..7ee49e09381 100644
--- a/src/mame/drivers/djboy.cpp
+++ b/src/mame/drivers/djboy.cpp
@@ -151,37 +151,23 @@ Notes:
/* KANEKO BEAST state */
-WRITE8_MEMBER(djboy_state::beast_data_w)
-{
- m_data_to_beast = data;
- m_z80_to_beast_full = 1;
- m_beast_int0_l = 0;
- m_beast->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE);
-}
-
-READ8_MEMBER(djboy_state::beast_data_r)
-{
- m_beast_to_z80_full = 0;
- return m_data_to_z80;
-}
-
READ8_MEMBER(djboy_state::beast_status_r)
{
- return (!m_beast_to_z80_full << 2) | (m_z80_to_beast_full << 3);
+ return (m_slavelatch->pending_r() ? 0x0 : 0x4) | (m_beastlatch->pending_r() ? 0x8 : 0x0);
}
/******************************************************************************/
-WRITE8_MEMBER(djboy_state::trigger_nmi_on_cpu0)
+WRITE8_MEMBER(djboy_state::trigger_nmi_on_mastercpu)
{
- m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
+ m_mastercpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
-WRITE8_MEMBER(djboy_state::cpu0_bankswitch_w)
+WRITE8_MEMBER(djboy_state::mastercpu_bankswitch_w)
{
data ^= m_bankxor;
- membank("bank1")->set_entry(data);
- membank("bank4")->set_entry(0); /* unsure if/how this area is banked */
+ m_masterbank->set_entry(data);
+ m_masterbank_l->set_entry(0); /* unsure if/how this area is banked */
}
/******************************************************************************/
@@ -192,35 +178,12 @@ WRITE8_MEMBER(djboy_state::cpu0_bankswitch_w)
* ---x---- screen flip
* ----xxxx bank
*/
-WRITE8_MEMBER(djboy_state::cpu1_bankswitch_w)
+WRITE8_MEMBER(djboy_state::slavecpu_bankswitch_w)
{
m_videoreg = data;
- switch (data & 0xf)
- {
- /* bs65.5y */
- case 0x00:
- case 0x01:
- case 0x02:
- case 0x03:
- membank("bank2")->set_entry((data & 0xf));
- break;
-
- /* bs101.6w */
- case 0x08:
- case 0x09:
- case 0x0a:
- case 0x0b:
- case 0x0c:
- case 0x0d:
- case 0x0e:
- case 0x0f:
- membank("bank2")->set_entry((data & 0xf) - 4);
- break;
-
- default:
- break;
- }
+ if ((data & 0xc) != 4)
+ m_slavebank->set_entry((data & 0xf));
}
WRITE8_MEMBER(djboy_state::coin_count_w)
@@ -231,78 +194,72 @@ WRITE8_MEMBER(djboy_state::coin_count_w)
/******************************************************************************/
-WRITE8_MEMBER(djboy_state::trigger_nmi_on_sound_cpu2)
-{
- m_soundlatch->write(space, 0, data);
- m_cpu2->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
-} /* trigger_nmi_on_sound_cpu2 */
-
-WRITE8_MEMBER(djboy_state::cpu2_bankswitch_w)
+WRITE8_MEMBER(djboy_state::soundcpu_bankswitch_w)
{
- membank("bank3")->set_entry(data); // shall we check data<0x07?
+ m_soundbank->set_entry(data); // shall we check data<0x07?
}
/******************************************************************************/
-void djboy_state::cpu0_am(address_map &map)
+void djboy_state::mastercpu_am(address_map &map)
{
map(0x0000, 0x7fff).rom();
- map(0x8000, 0xafff).bankr("bank4");
+ map(0x8000, 0xafff).bankr("master_bank_l");
map(0xb000, 0xbfff).rw(m_pandora, FUNC(kaneko_pandora_device::spriteram_r), FUNC(kaneko_pandora_device::spriteram_w));
- map(0xc000, 0xdfff).bankr("bank1");
+ map(0xc000, 0xdfff).bankr("master_bank");
map(0xe000, 0xefff).ram().share("share1");
map(0xf000, 0xf7ff).ram();
map(0xf800, 0xffff).ram();
}
-void djboy_state::cpu0_port_am(address_map &map)
+void djboy_state::mastercpu_port_am(address_map &map)
{
map.global_mask(0xff);
- map(0x00, 0x00).w(this, FUNC(djboy_state::cpu0_bankswitch_w));
+ map(0x00, 0x00).w(this, FUNC(djboy_state::mastercpu_bankswitch_w));
}
/******************************************************************************/
-void djboy_state::cpu1_am(address_map &map)
+void djboy_state::slavecpu_am(address_map &map)
{
map(0x0000, 0x7fff).rom();
- map(0x8000, 0xbfff).bankr("bank2");
+ map(0x8000, 0xbfff).bankr("slave_bank");
map(0xc000, 0xcfff).ram().w(this, FUNC(djboy_state::djboy_videoram_w)).share("videoram");
map(0xd000, 0xd3ff).ram().w(this, FUNC(djboy_state::djboy_paletteram_w)).share("paletteram");
map(0xd400, 0xd8ff).ram();
map(0xe000, 0xffff).ram().share("share1");
}
-void djboy_state::cpu1_port_am(address_map &map)
+void djboy_state::slavecpu_port_am(address_map &map)
{
map.global_mask(0xff);
- map(0x00, 0x00).w(this, FUNC(djboy_state::cpu1_bankswitch_w));
- map(0x02, 0x02).w(this, FUNC(djboy_state::trigger_nmi_on_sound_cpu2));
- map(0x04, 0x04).rw(this, FUNC(djboy_state::beast_data_r), FUNC(djboy_state::beast_data_w));
+ map(0x00, 0x00).w(this, FUNC(djboy_state::slavecpu_bankswitch_w));
+ map(0x02, 0x02).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x04, 0x04).r(m_slavelatch, FUNC(generic_latch_8_device::read)).w(m_beastlatch, FUNC(generic_latch_8_device::write));
map(0x06, 0x06).w(this, FUNC(djboy_state::djboy_scrolly_w));
map(0x08, 0x08).w(this, FUNC(djboy_state::djboy_scrollx_w));
- map(0x0a, 0x0a).w(this, FUNC(djboy_state::trigger_nmi_on_cpu0));
+ map(0x0a, 0x0a).w(this, FUNC(djboy_state::trigger_nmi_on_mastercpu));
map(0x0c, 0x0c).r(this, FUNC(djboy_state::beast_status_r));
map(0x0e, 0x0e).w(this, FUNC(djboy_state::coin_count_w));
}
/******************************************************************************/
-void djboy_state::cpu2_am(address_map &map)
+void djboy_state::soundcpu_am(address_map &map)
{
map(0x0000, 0x7fff).rom();
- map(0x8000, 0xbfff).bankr("bank3");
+ map(0x8000, 0xbfff).bankr("sound_bank");
map(0xc000, 0xdfff).ram();
}
-void djboy_state::cpu2_port_am(address_map &map)
+void djboy_state::soundcpu_port_am(address_map &map)
{
map.global_mask(0xff);
- map(0x00, 0x00).w(this, FUNC(djboy_state::cpu2_bankswitch_w));
+ map(0x00, 0x00).w(this, FUNC(djboy_state::soundcpu_bankswitch_w));
map(0x02, 0x03).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
map(0x04, 0x04).r(m_soundlatch, FUNC(generic_latch_8_device::read));
- map(0x06, 0x06).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- map(0x07, 0x07).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x06, 0x06).rw("oki_l", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x07, 0x07).rw("oki_r", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
}
/******************************************************************************/
@@ -317,12 +274,11 @@ WRITE8_MEMBER(djboy_state::beast_p0_w)
{
if (!BIT(m_beast_p0, 1) && BIT(data, 1))
{
- m_beast_to_z80_full = 1;
- m_data_to_z80 = m_beast_p1;
+ m_slavelatch->write(space, 0, m_beast_p1);
}
if (BIT(data, 0) == 1)
- m_z80_to_beast_full = 0;
+ m_beastlatch->acknowledge_w(space, 0, data); // TODO : Acknowloge at here too?
m_beast_p0 = data;
}
@@ -330,7 +286,7 @@ WRITE8_MEMBER(djboy_state::beast_p0_w)
READ8_MEMBER(djboy_state::beast_p1_r)
{
if (BIT(m_beast_p0, 0) == 0)
- return m_data_to_beast;
+ return m_beastlatch->read(space, 0);
else
return 0; // ?
}
@@ -339,8 +295,7 @@ WRITE8_MEMBER(djboy_state::beast_p1_w)
{
if (data == 0xff)
{
- m_beast_int0_l = 1;
- m_beast->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
+ m_beastlatch->acknowledge_w(space, 0, data);
}
m_beast_p1 = data;
@@ -350,9 +305,9 @@ READ8_MEMBER(djboy_state::beast_p2_r)
{
switch ((m_beast_p0 >> 2) & 3)
{
- case 0: return ioport("IN1")->read();
- case 1: return ioport("IN2")->read();
- case 2: return ioport("IN0")->read();
+ case 0: return m_port_in[1]->read();
+ case 1: return m_port_in[2]->read();
+ case 2: return m_port_in[0]->read();
default: return 0xff;
}
}
@@ -365,8 +320,8 @@ WRITE8_MEMBER(djboy_state::beast_p2_w)
READ8_MEMBER(djboy_state::beast_p3_r)
{
uint8_t dsw = 0;
- uint8_t dsw1 = ~ioport("DSW1")->read();
- uint8_t dsw2 = ~ioport("DSW2")->read();
+ uint8_t dsw1 = ~m_port_dsw[0]->read();
+ uint8_t dsw2 = ~m_port_dsw[1]->read();
switch ((m_beast_p0 >> 5) & 3)
{
@@ -375,13 +330,13 @@ READ8_MEMBER(djboy_state::beast_p3_r)
case 2: dsw = (BIT(dsw2, 6) << 3) | (BIT(dsw2, 2) << 2) | (BIT(dsw1, 6) << 1) | BIT(dsw1, 2); break;
case 3: dsw = (BIT(dsw2, 7) << 3) | (BIT(dsw2, 3) << 2) | (BIT(dsw1, 7) << 1) | BIT(dsw1, 3); break;
}
- return (dsw << 4) | (m_beast_int0_l << 2) | (m_beast_to_z80_full << 3);
+ return (dsw << 4) | (m_beastlatch->pending_r() ? 0x0 : 0x4) | (m_slavelatch->pending_r() ? 0x8 : 0x0);
}
WRITE8_MEMBER(djboy_state::beast_p3_w)
{
m_beast_p3 = data;
- m_cpu1->set_input_line(INPUT_LINE_RESET, data & 2 ? CLEAR_LINE : ASSERT_LINE);
+ m_slavecpu->set_input_line(INPUT_LINE_RESET, data & 2 ? CLEAR_LINE : ASSERT_LINE);
}
/* Program/data maps are defined in the 8051 core */
@@ -473,16 +428,10 @@ static const gfx_layout tile_layout =
16,16,
RGN_FRAC(1,1),
4,
- { 0, 1, 2, 3 },
- {
- 0*4,1*4,2*4,3*4,4*4,5*4,6*4,7*4,
- 8*32+0*4,8*32+1*4,8*32+2*4,8*32+3*4,8*32+4*4,8*32+5*4,8*32+6*4,8*32+7*4
- },
- {
- 0*32,1*32,2*32,3*32,4*32,5*32,6*32,7*32,
- 16*32+0*32,16*32+1*32,16*32+2*32,16*32+3*32,16*32+4*32,16*32+5*32,16*32+6*32,16*32+7*32
- },
- 4*8*32
+ { STEP4(0,1) },
+ { STEP8(0,4), STEP8(4*8*8,4) },
+ { STEP8(0,4*8), STEP8(4*8*8*2,4*8) },
+ 16*16*4
};
static GFXDECODE_START( djboy )
@@ -498,37 +447,30 @@ TIMER_DEVICE_CALLBACK_MEMBER(djboy_state::djboy_scanline)
int scanline = param;
if(scanline == 240) // vblank-out irq
- m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xfd);
+ m_mastercpu->set_input_line_and_vector(0, HOLD_LINE, 0xfd);
/* Pandora "sprite end dma" irq? TODO: timing is clearly off, attract mode relies on this */
if(scanline == 64)
- m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xff);
+ m_mastercpu->set_input_line_and_vector(0, HOLD_LINE, 0xff);
}
void djboy_state::machine_start()
{
- uint8_t *MAIN = memregion("maincpu")->base();
- uint8_t *CPU1 = memregion("cpu1")->base();
- uint8_t *CPU2 = memregion("cpu2")->base();
-
- membank("bank1")->configure_entries(0, 4, &MAIN[0x00000], 0x2000);
- membank("bank1")->configure_entries(4, 28, &MAIN[0x10000], 0x2000);
- membank("bank2")->configure_entries(0, 2, &CPU1[0x00000], 0x4000);
- membank("bank2")->configure_entries(2, 10, &CPU1[0x10000], 0x4000);
- membank("bank3")->configure_entries(0, 3, &CPU2[0x00000], 0x4000);
- membank("bank3")->configure_entries(3, 5, &CPU2[0x10000], 0x4000);
- membank("bank4")->configure_entry(0, &MAIN[0x10000]); /* unsure if/how this area is banked */
+ uint8_t *MASTER = memregion("mastercpu")->base();
+ uint8_t *SLAVE = memregion("slavecpu")->base();
+ uint8_t *SOUND = memregion("soundcpu")->base();
+
+ m_masterbank->configure_entries(0, 32, &MASTER[0x00000], 0x2000);
+ m_slavebank->configure_entries(0, 4, &SLAVE[0x00000], 0x4000);
+ m_slavebank->configure_entries(8, 8, &SLAVE[0x10000], 0x4000);
+ m_soundbank->configure_entries(0, 8, &SOUND[0x00000], 0x4000);
+ m_masterbank_l->configure_entry(0, &MASTER[0x08000]); /* unsure if/how this area is banked */
save_item(NAME(m_videoreg));
save_item(NAME(m_scrollx));
save_item(NAME(m_scrolly));
/* Kaneko BEAST */
- save_item(NAME(m_data_to_beast));
- save_item(NAME(m_data_to_z80));
- save_item(NAME(m_beast_to_z80_full));
- save_item(NAME(m_z80_to_beast_full));
- save_item(NAME(m_beast_int0_l));
save_item(NAME(m_beast_p0));
save_item(NAME(m_beast_p1));
save_item(NAME(m_beast_p2));
@@ -540,27 +482,23 @@ void djboy_state::machine_reset()
m_videoreg = 0;
m_scrollx = 0;
m_scrolly = 0;
-
- m_beast_int0_l = 1;
- m_beast_to_z80_full = 0;
- m_z80_to_beast_full = 0;
}
MACHINE_CONFIG_START(djboy_state::djboy)
- MCFG_CPU_ADD("maincpu", Z80, 6000000)
- MCFG_CPU_PROGRAM_MAP(cpu0_am)
- MCFG_CPU_IO_MAP(cpu0_port_am)
+ MCFG_CPU_ADD("mastercpu", Z80, 6000000)
+ MCFG_CPU_PROGRAM_MAP(mastercpu_am)
+ MCFG_CPU_IO_MAP(mastercpu_port_am)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", djboy_state, djboy_scanline, "screen", 0, 1)
- MCFG_CPU_ADD("cpu1", Z80, 6000000)
- MCFG_CPU_PROGRAM_MAP(cpu1_am)
- MCFG_CPU_IO_MAP(cpu1_port_am)
+ MCFG_CPU_ADD("slavecpu", Z80, 6000000)
+ MCFG_CPU_PROGRAM_MAP(slavecpu_am)
+ MCFG_CPU_IO_MAP(slavecpu_port_am)
MCFG_CPU_VBLANK_INT_DRIVER("screen", djboy_state, irq0_line_hold)
- MCFG_CPU_ADD("cpu2", Z80, 6000000)
- MCFG_CPU_PROGRAM_MAP(cpu2_am)
- MCFG_CPU_IO_MAP(cpu2_port_am)
+ MCFG_CPU_ADD("soundcpu", Z80, 6000000)
+ MCFG_CPU_PROGRAM_MAP(soundcpu_am)
+ MCFG_CPU_IO_MAP(soundcpu_port_am)
MCFG_CPU_VBLANK_INT_DRIVER("screen", djboy_state, irq0_line_hold)
MCFG_CPU_ADD("beast", I80C51, 6000000)
@@ -574,7 +512,12 @@ MACHINE_CONFIG_START(djboy_state::djboy)
MCFG_MCS51_PORT_P3_OUT_CB(WRITE8(djboy_state, beast_p3_w))
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
+
+ MCFG_GENERIC_LATCH_8_ADD("slavelatch")
+ MCFG_GENERIC_LATCH_8_ADD("beastlatch")
+ MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("beast", INPUT_LINE_IRQ0))
+ MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE(true)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57.5)
@@ -591,35 +534,36 @@ MACHINE_CONFIG_START(djboy_state::djboy)
MCFG_DEVICE_ADD("pandora", KANEKO_PANDORA, 0)
MCFG_KANEKO_PANDORA_GFXDECODE("gfxdecode")
- MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
+ MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("soundcpu", INPUT_LINE_NMI))
MCFG_SOUND_ADD("ymsnd", YM2203, 3000000)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40)
- MCFG_OKIM6295_ADD("oki1", 12000000 / 8, PIN7_LOW)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+ MCFG_OKIM6295_ADD("oki_l", 12000000 / 8, PIN7_LOW)
+ MCFG_DEVICE_ROM("oki")
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
- MCFG_OKIM6295_ADD("oki2", 12000000 / 8, PIN7_LOW)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+ MCFG_OKIM6295_ADD("oki_r", 12000000 / 8, PIN7_LOW)
+ MCFG_DEVICE_ROM("oki")
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
MACHINE_CONFIG_END
ROM_START( djboy )
- ROM_REGION( 0x48000, "maincpu", 0 )
- ROM_LOAD( "bs64.4b", 0x00000, 0x08000, CRC(b77aacc7) SHA1(78100d4695738a702f13807526eb1bcac759cce3) )
- ROM_CONTINUE( 0x10000, 0x18000 )
- ROM_LOAD( "bs100.4d", 0x28000, 0x20000, CRC(081e8af8) SHA1(3589dab1cf31b109a40370b4db1f31785023e2ed) )
+ ROM_REGION( 0x40000, "mastercpu", 0 )
+ ROM_LOAD( "bs64.4b", 0x00000, 0x20000, CRC(b77aacc7) SHA1(78100d4695738a702f13807526eb1bcac759cce3) )
+ ROM_LOAD( "bs100.4d", 0x20000, 0x20000, CRC(081e8af8) SHA1(3589dab1cf31b109a40370b4db1f31785023e2ed) )
- ROM_REGION( 0x38000, "cpu1", 0 )
- ROM_LOAD( "bs65.5y", 0x00000, 0x08000, CRC(0f1456eb) SHA1(62ed48c0d71c1fabbb3f6ada60381f57f692cef8) )
- ROM_CONTINUE( 0x10000, 0x08000 )
- ROM_LOAD( "bs101.6w", 0x18000, 0x20000, CRC(a7c85577) SHA1(8296b96d5f69f6c730b7ed77fa8c93496b33529c) )
+ ROM_REGION( 0x30000, "slavecpu", 0 )
+ ROM_LOAD( "bs65.5y", 0x00000, 0x10000, CRC(0f1456eb) SHA1(62ed48c0d71c1fabbb3f6ada60381f57f692cef8) )
+ ROM_LOAD( "bs101.6w", 0x10000, 0x20000, CRC(a7c85577) SHA1(8296b96d5f69f6c730b7ed77fa8c93496b33529c) )
- ROM_REGION( 0x24000, "cpu2", 0 ) /* sound */
- ROM_LOAD( "bs200.8c", 0x00000, 0x0c000, CRC(f6c19e51) SHA1(82193f71122df07cce0a7f057a87b89eb2d587a1) )
- ROM_CONTINUE( 0x10000, 0x14000 )
+ ROM_REGION( 0x20000, "soundcpu", 0 ) /* sound */
+ ROM_LOAD( "bs200.8c", 0x00000, 0x20000, CRC(f6c19e51) SHA1(82193f71122df07cce0a7f057a87b89eb2d587a1) )
ROM_REGION( 0x1000, "beast", 0 ) /* MSM80C51F microcontroller */
ROM_LOAD( "beast.9s", 0x00000, 0x1000, CRC(ebe0f5f3) SHA1(6081343c9b4510c4c16b71f6340266a1f76170ac) ) /* Internal ROM image */
@@ -635,27 +579,21 @@ ROM_START( djboy )
ROM_LOAD( "bs004.1s", 0x000000, 0x80000, CRC(2f1392c3) SHA1(1bc3030b3612766a02133eef0b4d20013c0495a4) )
ROM_LOAD( "bs005.1u", 0x080000, 0x80000, CRC(46b400c4) SHA1(35f4823364bbff1fc935994498d462bbd3bc6044) )
- ROM_REGION( 0x40000, "oki1", 0 ) /* OKI-M6295 samples */
- ROM_LOAD( "bs203.5j", 0x000000, 0x40000, CRC(805341fb) SHA1(fb94e400e2283aaa806814d5a39d6196457dc822) )
-
- ROM_REGION( 0x40000, "oki2", 0 ) /* OKI-M6295 samples */
+ ROM_REGION( 0x40000, "oki", 0 ) /* OKI-M6295 samples */
ROM_LOAD( "bs203.5j", 0x000000, 0x40000, CRC(805341fb) SHA1(fb94e400e2283aaa806814d5a39d6196457dc822) )
ROM_END
ROM_START( djboya )
- ROM_REGION( 0x48000, "maincpu", 0 )
- ROM_LOAD( "bs19s.rom", 0x00000, 0x08000, CRC(17ce9f6c) SHA1(a0c1832b05dc46991e8949067ca0278f5498835f) )
- ROM_CONTINUE( 0x10000, 0x18000 )
- ROM_LOAD( "bs100.4d", 0x28000, 0x20000, CRC(081e8af8) SHA1(3589dab1cf31b109a40370b4db1f31785023e2ed) )
+ ROM_REGION( 0x40000, "mastercpu", 0 )
+ ROM_LOAD( "bs19s.rom", 0x00000, 0x20000, CRC(17ce9f6c) SHA1(a0c1832b05dc46991e8949067ca0278f5498835f) )
+ ROM_LOAD( "bs100.4d", 0x20000, 0x20000, CRC(081e8af8) SHA1(3589dab1cf31b109a40370b4db1f31785023e2ed) )
- ROM_REGION( 0x38000, "cpu1", 0 )
- ROM_LOAD( "bs15s.rom", 0x00000, 0x08000, CRC(e6f966b2) SHA1(f9df16035a8b09d87eb70315b216892e25d99b03) )
- ROM_CONTINUE( 0x10000, 0x08000 )
- ROM_LOAD( "bs101.6w", 0x18000, 0x20000, CRC(a7c85577) SHA1(8296b96d5f69f6c730b7ed77fa8c93496b33529c) )
+ ROM_REGION( 0x30000, "slavecpu", 0 )
+ ROM_LOAD( "bs15s.rom", 0x00000, 0x10000, CRC(e6f966b2) SHA1(f9df16035a8b09d87eb70315b216892e25d99b03) )
+ ROM_LOAD( "bs101.6w", 0x10000, 0x20000, CRC(a7c85577) SHA1(8296b96d5f69f6c730b7ed77fa8c93496b33529c) )
- ROM_REGION( 0x24000, "cpu2", 0 ) /* sound */
- ROM_LOAD( "bs200.8c", 0x00000, 0x0c000, CRC(f6c19e51) SHA1(82193f71122df07cce0a7f057a87b89eb2d587a1) )
- ROM_CONTINUE( 0x10000, 0x14000 )
+ ROM_REGION( 0x20000, "soundcpu", 0 ) /* sound */
+ ROM_LOAD( "bs200.8c", 0x00000, 0x20000, CRC(f6c19e51) SHA1(82193f71122df07cce0a7f057a87b89eb2d587a1) )
ROM_REGION( 0x1000, "beast", 0 ) /* MSM80C51F microcontroller */
ROM_LOAD( "beast.9s", 0x00000, 0x1000, CRC(ebe0f5f3) SHA1(6081343c9b4510c4c16b71f6340266a1f76170ac) ) /* Internal ROM image */
@@ -671,27 +609,21 @@ ROM_START( djboya )
ROM_LOAD( "bs004.1s", 0x000000, 0x80000, CRC(2f1392c3) SHA1(1bc3030b3612766a02133eef0b4d20013c0495a4) )
ROM_LOAD( "bs005.1u", 0x080000, 0x80000, CRC(46b400c4) SHA1(35f4823364bbff1fc935994498d462bbd3bc6044) )
- ROM_REGION( 0x40000, "oki1", 0 ) /* OKI-M6295 samples */
- ROM_LOAD( "bs203.5j", 0x000000, 0x40000, CRC(805341fb) SHA1(fb94e400e2283aaa806814d5a39d6196457dc822) )
-
- ROM_REGION( 0x40000, "oki2", 0 ) /* OKI-M6295 samples */
+ ROM_REGION( 0x40000, "oki", 0 ) /* OKI-M6295 samples */
ROM_LOAD( "bs203.5j", 0x000000, 0x40000, CRC(805341fb) SHA1(fb94e400e2283aaa806814d5a39d6196457dc822) )
ROM_END
ROM_START( djboyj )
- ROM_REGION( 0x48000, "maincpu", 0 )
- ROM_LOAD( "bs12.4b", 0x00000, 0x08000, CRC(0971523e) SHA1(f90cd02cedf8632f4b651de7ea75dc8c0e682f6e) )
- ROM_CONTINUE( 0x10000, 0x18000 )
- ROM_LOAD( "bs100.4d", 0x28000, 0x20000, CRC(081e8af8) SHA1(3589dab1cf31b109a40370b4db1f31785023e2ed) )
+ ROM_REGION( 0x40000, "mastercpu", 0 )
+ ROM_LOAD( "bs12.4b", 0x00000, 0x20000, CRC(0971523e) SHA1(f90cd02cedf8632f4b651de7ea75dc8c0e682f6e) )
+ ROM_LOAD( "bs100.4d", 0x20000, 0x20000, CRC(081e8af8) SHA1(3589dab1cf31b109a40370b4db1f31785023e2ed) )
- ROM_REGION( 0x38000, "cpu1", 0 )
- ROM_LOAD( "bs13.5y", 0x00000, 0x08000, CRC(5c3f2f96) SHA1(bb7ee028a2d8d3c76a78a29fba60bcc36e9399f5) )
- ROM_CONTINUE( 0x10000, 0x08000 )
- ROM_LOAD( "bs101.6w", 0x18000, 0x20000, CRC(a7c85577) SHA1(8296b96d5f69f6c730b7ed77fa8c93496b33529c) )
+ ROM_REGION( 0x30000, "slavecpu", 0 )
+ ROM_LOAD( "bs13.5y", 0x00000, 0x10000, CRC(5c3f2f96) SHA1(bb7ee028a2d8d3c76a78a29fba60bcc36e9399f5) )
+ ROM_LOAD( "bs101.6w", 0x10000, 0x20000, CRC(a7c85577) SHA1(8296b96d5f69f6c730b7ed77fa8c93496b33529c) )
- ROM_REGION( 0x24000, "cpu2", 0 ) /* sound */
- ROM_LOAD( "bs200.8c", 0x00000, 0x0c000, CRC(f6c19e51) SHA1(82193f71122df07cce0a7f057a87b89eb2d587a1) )
- ROM_CONTINUE( 0x10000, 0x14000 )
+ ROM_REGION( 0x20000, "soundcpu", 0 ) /* sound */
+ ROM_LOAD( "bs200.8c", 0x00000, 0x20000, CRC(f6c19e51) SHA1(82193f71122df07cce0a7f057a87b89eb2d587a1) )
ROM_REGION( 0x1000, "beast", 0 ) /* MSM80C51F microcontroller */
ROM_LOAD( "beast.9s", 0x00000, 0x1000, CRC(ebe0f5f3) SHA1(6081343c9b4510c4c16b71f6340266a1f76170ac) ) /* Internal ROM image */
@@ -707,10 +639,7 @@ ROM_START( djboyj )
ROM_LOAD( "bs004.1s", 0x000000, 0x80000, CRC(2f1392c3) SHA1(1bc3030b3612766a02133eef0b4d20013c0495a4) )
ROM_LOAD( "bs005.1u", 0x080000, 0x80000, CRC(46b400c4) SHA1(35f4823364bbff1fc935994498d462bbd3bc6044) )
- ROM_REGION( 0x40000, "oki1", 0 ) /* OKI-M6295 samples */
- ROM_LOAD( "bs-204.5j", 0x000000, 0x40000, CRC(510244f0) SHA1(afb502d46d268ad9cd209ae1da72c50e4e785626) )
-
- ROM_REGION( 0x40000, "oki2", 0 ) /* OKI-M6295 samples */
+ ROM_REGION( 0x40000, "oki", 0 ) /* OKI-M6295 samples */
ROM_LOAD( "bs-204.5j", 0x000000, 0x40000, CRC(510244f0) SHA1(afb502d46d268ad9cd209ae1da72c50e4e785626) )
ROM_END
diff --git a/src/mame/includes/djboy.h b/src/mame/includes/djboy.h
index ad61893d613..c61cce140a6 100644
--- a/src/mame/includes/djboy.h
+++ b/src/mame/includes/djboy.h
@@ -16,18 +16,27 @@ class djboy_state : public driver_device
{
public:
djboy_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_videoram(*this, "videoram"),
- m_paletteram(*this, "paletteram"),
- m_maincpu(*this, "maincpu"),
- m_cpu1(*this, "cpu1"),
- m_cpu2(*this, "cpu2"),
- m_beast(*this, "beast"),
- m_pandora(*this, "pandora"),
- m_gfxdecode(*this, "gfxdecode"),
- m_palette(*this, "palette"),
- m_soundlatch(*this, "soundlatch")
- { }
+ : driver_device(mconfig, type, tag)
+ , m_videoram(*this, "videoram")
+ , m_paletteram(*this, "paletteram")
+ , m_masterbank(*this, "master_bank")
+ , m_slavebank(*this, "slave_bank")
+ , m_soundbank(*this, "sound_bank")
+ , m_masterbank_l(*this, "master_bank_l")
+ , m_port_in(*this, "IN%u", 0)
+ , m_port_dsw(*this, "DSW%u", 1)
+ , m_mastercpu(*this, "mastercpu")
+ , m_slavecpu(*this, "slavecpu")
+ , m_soundcpu(*this, "soundcpu")
+ , m_beast(*this, "beast")
+ , m_pandora(*this, "pandora")
+ , m_gfxdecode(*this, "gfxdecode")
+ , m_palette(*this, "palette")
+ , m_soundlatch(*this, "soundlatch")
+ , m_slavelatch(*this, "slavelatch")
+ , m_beastlatch(*this, "beastlatch")
+ {
+ }
/* memory pointers */
required_shared_ptr<uint8_t> m_videoram;
@@ -35,6 +44,14 @@ public:
/* ROM banking */
uint8_t m_bankxor;
+
+ required_memory_bank m_masterbank;
+ required_memory_bank m_slavebank;
+ required_memory_bank m_soundbank;
+ required_memory_bank m_masterbank_l;
+
+ required_ioport_array<3> m_port_in;
+ required_ioport_array<2> m_port_dsw;
/* video-related */
tilemap_t *m_background;
@@ -43,35 +60,29 @@ public:
uint8_t m_scrolly;
/* Kaneko BEAST state */
- uint8_t m_data_to_beast;
- uint8_t m_data_to_z80;
- uint8_t m_beast_to_z80_full;
- uint8_t m_z80_to_beast_full;
- uint8_t m_beast_int0_l;
uint8_t m_beast_p0;
uint8_t m_beast_p1;
uint8_t m_beast_p2;
uint8_t m_beast_p3;
/* devices */
- required_device<cpu_device> m_maincpu;
- required_device<cpu_device> m_cpu1;
- required_device<cpu_device> m_cpu2;
+ required_device<cpu_device> m_mastercpu;
+ required_device<cpu_device> m_slavecpu;
+ required_device<cpu_device> m_soundcpu;
required_device<cpu_device> m_beast;
required_device<kaneko_pandora_device> m_pandora;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
+ required_device<generic_latch_8_device> m_slavelatch;
+ required_device<generic_latch_8_device> m_beastlatch;
- DECLARE_WRITE8_MEMBER(beast_data_w);
- DECLARE_READ8_MEMBER(beast_data_r);
DECLARE_READ8_MEMBER(beast_status_r);
- DECLARE_WRITE8_MEMBER(trigger_nmi_on_cpu0);
- DECLARE_WRITE8_MEMBER(cpu0_bankswitch_w);
- DECLARE_WRITE8_MEMBER(cpu1_bankswitch_w);
+ DECLARE_WRITE8_MEMBER(trigger_nmi_on_mastercpu);
+ DECLARE_WRITE8_MEMBER(mastercpu_bankswitch_w);
+ DECLARE_WRITE8_MEMBER(slavecpu_bankswitch_w);
DECLARE_WRITE8_MEMBER(coin_count_w);
- DECLARE_WRITE8_MEMBER(trigger_nmi_on_sound_cpu2);
- DECLARE_WRITE8_MEMBER(cpu2_bankswitch_w);
+ DECLARE_WRITE8_MEMBER(soundcpu_bankswitch_w);
DECLARE_READ8_MEMBER(beast_p0_r);
DECLARE_WRITE8_MEMBER(beast_p0_w);
DECLARE_READ8_MEMBER(beast_p1_r);
@@ -94,10 +105,10 @@ public:
DECLARE_WRITE_LINE_MEMBER(screen_vblank_djboy);
TIMER_DEVICE_CALLBACK_MEMBER(djboy_scanline);
void djboy(machine_config &config);
- void cpu0_am(address_map &map);
- void cpu0_port_am(address_map &map);
- void cpu1_am(address_map &map);
- void cpu1_port_am(address_map &map);
- void cpu2_am(address_map &map);
- void cpu2_port_am(address_map &map);
+ void mastercpu_am(address_map &map);
+ void mastercpu_port_am(address_map &map);
+ void slavecpu_am(address_map &map);
+ void slavecpu_port_am(address_map &map);
+ void soundcpu_am(address_map &map);
+ void soundcpu_port_am(address_map &map);
};