From 35703af0703051410269a59d76dae6ea9365d47f Mon Sep 17 00:00:00 2001 From: cam900 Date: Sun, 1 Apr 2018 00:40:48 +0900 Subject: 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 --- src/mame/drivers/djboy.cpp | 283 +++++++++++++++++---------------------------- src/mame/includes/djboy.h | 77 ++++++------ 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 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 m_maincpu; - required_device m_cpu1; - required_device m_cpu2; + required_device m_mastercpu; + required_device m_slavecpu; + required_device m_soundcpu; required_device m_beast; required_device m_pandora; required_device m_gfxdecode; required_device m_palette; required_device m_soundlatch; + required_device m_slavelatch; + required_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); }; -- cgit v1.2.3