mirror of
https://github.com/holub/mame
synced 2025-05-04 21:43:05 +03:00
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
This commit is contained in:
parent
a36110f707
commit
35703af070
@ -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)
|
||||
WRITE8_MEMBER(djboy_state::soundcpu_bankswitch_w)
|
||||
{
|
||||
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)
|
||||
{
|
||||
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();
|
||||
uint8_t *MASTER = memregion("mastercpu")->base();
|
||||
uint8_t *SLAVE = memregion("slavecpu")->base();
|
||||
uint8_t *SOUND = memregion("soundcpu")->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 */
|
||||
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
|
||||
|
||||
|
@ -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);
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user