mirror of
https://github.com/holub/mame
synced 2025-06-22 12:28:33 +03:00
ddragon.cpp Cleanups (#3482)
* ddragon.cpp : Minor cleanup, Fix bit manipulations, Add object finders instead runtime tag lookups, Add address_map_bank_device for darktowr_state bankswitching, Fix ADPCM ROM(Both MSM5205s hasn't share ROM space) * ddragon.cpp : Fix compile, Fix bit manipulation, Minor cleanup
This commit is contained in:
parent
30ab71db9a
commit
d6a53357a5
@ -132,7 +132,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(ddragon_state::ddragon_scanline)
|
||||
MACHINE_START_MEMBER(ddragon_state,ddragon)
|
||||
{
|
||||
/* configure banks */
|
||||
membank("bank1")->configure_entries(0, 8, memregion("maincpu")->base() + 0x10000, 0x4000);
|
||||
if (m_mainbank)
|
||||
m_mainbank->configure_entries(0, 8, memregion("maincpu")->base() + 0x10000, 0x4000);
|
||||
|
||||
/* register for save states */
|
||||
save_item(NAME(m_scrollx_hi));
|
||||
@ -152,7 +153,7 @@ MACHINE_RESET_MEMBER(ddragon_state,ddragon)
|
||||
m_ddragon_sub_port = 0;
|
||||
m_adpcm_pos[0] = m_adpcm_pos[1] = 0;
|
||||
m_adpcm_end[0] = m_adpcm_end[1] = 0;
|
||||
m_adpcm_idle[0] = m_adpcm_idle[1] = 1;
|
||||
m_adpcm_idle[0] = m_adpcm_idle[1] = true;
|
||||
m_adpcm_data[0] = m_adpcm_data[1] = -1;
|
||||
}
|
||||
|
||||
@ -181,7 +182,7 @@ WRITE8_MEMBER(ddragon_state::ddragon_bankswitch_w)
|
||||
|
||||
m_subcpu->set_input_line(INPUT_LINE_RESET, data & 0x08 ? CLEAR_LINE : ASSERT_LINE);
|
||||
m_subcpu->set_input_line(INPUT_LINE_HALT, data & 0x10 ? ASSERT_LINE : CLEAR_LINE);
|
||||
membank("bank1")->set_entry((data & 0xe0) >> 5);
|
||||
m_mainbank->set_entry((data & 0xe0) >> 5);
|
||||
}
|
||||
|
||||
|
||||
@ -193,7 +194,7 @@ WRITE8_MEMBER(toffy_state::toffy_bankswitch_w)
|
||||
// flip_screen_set(machine(), ~data & 0x04);
|
||||
|
||||
/* I don't know ... */
|
||||
membank("bank1")->set_entry((data & 0x20) >> 5);
|
||||
m_mainbank->set_entry((data & 0x20) >> 5);
|
||||
}
|
||||
|
||||
|
||||
@ -248,14 +249,7 @@ WRITE8_MEMBER(darktowr_state::darktowr_bankswitch_w)
|
||||
m_subcpu->set_input_line(INPUT_LINE_RESET, data & 0x08 ? CLEAR_LINE : ASSERT_LINE);
|
||||
m_subcpu->set_input_line(INPUT_LINE_HALT, data & 0x10 ? ASSERT_LINE : CLEAR_LINE);
|
||||
|
||||
int oldbank = membank("bank1")->entry();
|
||||
int newbank = (data & 0xe0) >> 5;
|
||||
|
||||
membank("bank1")->set_entry(newbank);
|
||||
if (newbank == 4 && oldbank != 4)
|
||||
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x4000, 0x7fff, read8_delegate(FUNC(darktowr_state::darktowr_mcu_bank_r),this), write8_delegate(FUNC(darktowr_state::darktowr_mcu_bank_w),this));
|
||||
else if (newbank != 4 && oldbank == 4)
|
||||
m_maincpu->space(AS_PROGRAM).install_readwrite_bank(0x4000, 0x7fff, "bank1");
|
||||
m_darktowr_bank->set_bank((data & 0xe0) >> 5);
|
||||
}
|
||||
|
||||
|
||||
@ -319,12 +313,6 @@ WRITE8_MEMBER(ddragon_state::ddragon2_sub_irq_w)
|
||||
}
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(ddragon_state::irq_handler)
|
||||
{
|
||||
m_soundcpu->set_input_line(m_ym_irq, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(ddragon_state::ddragonba_port_w)
|
||||
{
|
||||
if ((data & 0x8) == 0)
|
||||
@ -420,65 +408,62 @@ WRITE8_MEMBER(ddragon_state::ddragon_comram_w)
|
||||
WRITE8_MEMBER(ddragon_state::dd_adpcm_w)
|
||||
{
|
||||
int chip = offset & 1;
|
||||
msm5205_device *adpcm = chip ? m_adpcm2 : m_adpcm1;
|
||||
|
||||
switch (offset / 2)
|
||||
switch (offset >> 1)
|
||||
{
|
||||
case 3:
|
||||
m_adpcm_idle[chip] = 1;
|
||||
adpcm->reset_w(1);
|
||||
m_adpcm_idle[chip] = true;
|
||||
m_adpcm[chip]->reset_w(1);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
m_adpcm_pos[chip] = (data & 0x7f) * 0x200;
|
||||
m_adpcm_pos[chip] = (data & 0x7f) << 9;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
m_adpcm_end[chip] = (data & 0x7f) * 0x200;
|
||||
m_adpcm_end[chip] = (data & 0x7f) << 9;
|
||||
break;
|
||||
|
||||
case 0:
|
||||
m_adpcm_idle[chip] = 0;
|
||||
adpcm->reset_w(0);
|
||||
m_adpcm_idle[chip] = false;
|
||||
m_adpcm[chip]->reset_w(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ddragon_state::dd_adpcm_int( msm5205_device *device, int chip )
|
||||
void ddragon_state::dd_adpcm_int( int chip )
|
||||
{
|
||||
if (m_adpcm_pos[chip] >= m_adpcm_end[chip] || m_adpcm_pos[chip] >= 0x10000)
|
||||
if (m_adpcm_pos[chip] >= m_adpcm_end[chip] || m_adpcm_pos[chip] >= m_adpcm_rom[chip].length())
|
||||
{
|
||||
m_adpcm_idle[chip] = 1;
|
||||
device->reset_w(1);
|
||||
m_adpcm_idle[chip] = true;
|
||||
m_adpcm[chip]->reset_w(1);
|
||||
}
|
||||
else if (m_adpcm_data[chip] != -1)
|
||||
{
|
||||
device->write_data(m_adpcm_data[chip] & 0x0f);
|
||||
m_adpcm[chip]->write_data(m_adpcm_data[chip] & 0x0f);
|
||||
m_adpcm_data[chip] = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t *ROM = memregion("adpcm")->base() + 0x10000 * chip;
|
||||
|
||||
m_adpcm_data[chip] = ROM[m_adpcm_pos[chip]++];
|
||||
device->write_data(m_adpcm_data[chip] >> 4);
|
||||
m_adpcm_data[chip] = m_adpcm_rom[chip][m_adpcm_pos[chip]++];
|
||||
m_adpcm[chip]->write_data(m_adpcm_data[chip] >> 4);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(ddragon_state::dd_adpcm_int_1)
|
||||
{
|
||||
dd_adpcm_int(m_adpcm1, 0);
|
||||
dd_adpcm_int(0);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(ddragon_state::dd_adpcm_int_2)
|
||||
{
|
||||
dd_adpcm_int(m_adpcm2, 1);
|
||||
dd_adpcm_int(1);
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(ddragon_state::dd_adpcm_status_r)
|
||||
{
|
||||
return m_adpcm_idle[0] + (m_adpcm_idle[1] << 1);
|
||||
return (m_adpcm_idle[0] ? 1 : 0) | (m_adpcm_idle[1] ? 2 : 0);
|
||||
}
|
||||
|
||||
|
||||
@ -489,7 +474,7 @@ READ8_MEMBER(ddragon_state::dd_adpcm_status_r)
|
||||
*
|
||||
*************************************/
|
||||
|
||||
void ddragon_state::ddragon_map(address_map &map)
|
||||
void ddragon_state::ddragon_base_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x0fff).ram().share("rambase");
|
||||
map(0x1000, 0x11ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
|
||||
@ -503,14 +488,39 @@ void ddragon_state::ddragon_map(address_map &map)
|
||||
map(0x3802, 0x3802).portr("EXTRA");
|
||||
map(0x3803, 0x3803).portr("DSW0");
|
||||
map(0x3804, 0x3804).portr("DSW1");
|
||||
map(0x3808, 0x3808).w(FUNC(ddragon_state::ddragon_bankswitch_w));
|
||||
map(0x3809, 0x3809).writeonly().share("scrollx_lo");
|
||||
map(0x380a, 0x380a).writeonly().share("scrolly_lo");
|
||||
map(0x380b, 0x380f).rw(FUNC(ddragon_state::ddragon_interrupt_r), FUNC(ddragon_state::ddragon_interrupt_w));
|
||||
map(0x4000, 0x7fff).bankr("bank1");
|
||||
map(0x8000, 0xffff).rom();
|
||||
}
|
||||
|
||||
void ddragon_state::ddragon_map(address_map &map)
|
||||
{
|
||||
ddragon_base_map(map);
|
||||
map(0x3808, 0x3808).w(FUNC(ddragon_state::ddragon_bankswitch_w));
|
||||
map(0x4000, 0x7fff).bankr("mainbank");
|
||||
}
|
||||
|
||||
void toffy_state::toffy_map(address_map &map)
|
||||
{
|
||||
ddragon_base_map(map);
|
||||
map(0x3808, 0x3808).w(FUNC(toffy_state::toffy_bankswitch_w));
|
||||
map(0x4000, 0x7fff).bankr("mainbank");
|
||||
}
|
||||
|
||||
void darktowr_state::darktowr_map(address_map &map)
|
||||
{
|
||||
ddragon_base_map(map);
|
||||
map(0x3808, 0x3808).w(FUNC(darktowr_state::darktowr_bankswitch_w));
|
||||
map(0x4000, 0x7fff).m(m_darktowr_bank, FUNC(address_map_bank_device::amap8));
|
||||
}
|
||||
|
||||
void darktowr_state::darktowr_banked_map(address_map &map)
|
||||
{
|
||||
map(0x00000, 0x0ffff).rom().region("maincpu", 0x10000);
|
||||
map(0x10000, 0x13fff).rw(FUNC(darktowr_state::darktowr_mcu_bank_r), FUNC(darktowr_state::darktowr_mcu_bank_w));
|
||||
map(0x14000, 0x1ffff).rom().region("maincpu", 0x24000); // TODO : ROM? empty at most of darktowr_state games
|
||||
}
|
||||
|
||||
void ddragon_state::dd2_map(address_map &map)
|
||||
{
|
||||
@ -530,12 +540,11 @@ void ddragon_state::dd2_map(address_map &map)
|
||||
map(0x380b, 0x380f).rw(FUNC(ddragon_state::ddragon_interrupt_r), FUNC(ddragon_state::ddragon_interrupt_w));
|
||||
map(0x3c00, 0x3dff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
|
||||
map(0x3e00, 0x3fff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
|
||||
map(0x4000, 0x7fff).bankr("bank1");
|
||||
map(0x4000, 0x7fff).bankr("mainbank");
|
||||
map(0x8000, 0xffff).rom();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Sub CPU memory maps
|
||||
@ -550,7 +559,6 @@ void ddragon_state::sub_map(address_map &map)
|
||||
map(0xc000, 0xffff).rom();
|
||||
}
|
||||
|
||||
|
||||
void ddragon_state::ddragonba_sub_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x0fff).ram();
|
||||
@ -558,7 +566,6 @@ void ddragon_state::ddragonba_sub_map(address_map &map)
|
||||
map(0xc000, 0xffff).rom();
|
||||
}
|
||||
|
||||
|
||||
void ddragon_state::dd2_sub_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0xbfff).rom();
|
||||
@ -567,14 +574,12 @@ void ddragon_state::dd2_sub_map(address_map &map)
|
||||
map(0xe000, 0xe000).w(FUNC(ddragon_state::ddragon2_sub_irq_w));
|
||||
}
|
||||
|
||||
|
||||
void ddragon_state::ddragonba_sub_portmap(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x01ff).w(FUNC(ddragon_state::ddragonba_port_w));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Sound CPU memory maps
|
||||
@ -591,7 +596,6 @@ void ddragon_state::sound_map(address_map &map)
|
||||
map(0x8000, 0xffff).rom();
|
||||
}
|
||||
|
||||
|
||||
void ddragon_state::dd2_sound_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x7fff).rom();
|
||||
@ -602,7 +606,6 @@ void ddragon_state::dd2_sound_map(address_map &map)
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Input ports
|
||||
@ -912,9 +915,9 @@ static const gfx_layout char_layout =
|
||||
8,8,
|
||||
RGN_FRAC(1,1),
|
||||
4,
|
||||
{ 0, 2, 4, 6 },
|
||||
{ STEP4(0,2) },
|
||||
{ 1, 0, 8*8+1, 8*8+0, 16*8+1, 16*8+0, 24*8+1, 24*8+0 },
|
||||
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
|
||||
{ STEP8(0,8) },
|
||||
32*8
|
||||
};
|
||||
|
||||
@ -926,8 +929,7 @@ static const gfx_layout tile_layout =
|
||||
{ RGN_FRAC(1,2)+0, RGN_FRAC(1,2)+4, 0, 4 },
|
||||
{ 3, 2, 1, 0, 16*8+3, 16*8+2, 16*8+1, 16*8+0,
|
||||
32*8+3, 32*8+2, 32*8+1, 32*8+0, 48*8+3, 48*8+2, 48*8+1, 48*8+0 },
|
||||
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
|
||||
8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
|
||||
{ STEP16(0,8) },
|
||||
64*8
|
||||
};
|
||||
|
||||
@ -981,7 +983,7 @@ MACHINE_CONFIG_START(ddragon_state::ddragon)
|
||||
MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("soundcpu", M6809_IRQ_LINE))
|
||||
|
||||
MCFG_DEVICE_ADD("fmsnd", YM2151, SOUND_CLOCK)
|
||||
MCFG_YM2151_IRQ_HANDLER(WRITELINE(*this, ddragon_state, irq_handler))
|
||||
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", M6809_FIRQ_LINE))
|
||||
MCFG_SOUND_ROUTE(0, "mono", 0.60)
|
||||
MCFG_SOUND_ROUTE(1, "mono", 0.60)
|
||||
|
||||
@ -1053,7 +1055,7 @@ MACHINE_CONFIG_START(ddragon_state::ddragon6809)
|
||||
MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("soundcpu", M6809_IRQ_LINE))
|
||||
|
||||
MCFG_DEVICE_ADD("fmsnd", YM2151, SOUND_CLOCK)
|
||||
MCFG_YM2151_IRQ_HANDLER(WRITELINE(*this, ddragon_state,irq_handler))
|
||||
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", M6809_FIRQ_LINE))
|
||||
MCFG_SOUND_ROUTE(0, "mono", 0.60)
|
||||
MCFG_SOUND_ROUTE(1, "mono", 0.60)
|
||||
|
||||
@ -1106,7 +1108,7 @@ MACHINE_CONFIG_START(ddragon_state::ddragon2)
|
||||
MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("soundcpu", INPUT_LINE_NMI))
|
||||
|
||||
MCFG_DEVICE_ADD("fmsnd", YM2151, SOUND_CLOCK)
|
||||
MCFG_YM2151_IRQ_HANDLER(WRITELINE(*this, ddragon_state,irq_handler))
|
||||
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
|
||||
MCFG_SOUND_ROUTE(0, "mono", 0.60)
|
||||
MCFG_SOUND_ROUTE(1, "mono", 0.60)
|
||||
|
||||
@ -1119,9 +1121,19 @@ MACHINE_CONFIG_START(darktowr_state::darktowr)
|
||||
ddragon(config);
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(darktowr_map)
|
||||
|
||||
MCFG_DEVICE_ADD("mcu", M68705P3, XTAL(4'000'000))
|
||||
MCFG_M68705_PORTA_W_CB(WRITE8(*this, darktowr_state, mcu_port_a_w))
|
||||
|
||||
MCFG_DEVICE_ADD("darktowr_bank", ADDRESS_MAP_BANK, 0)
|
||||
MCFG_DEVICE_PROGRAM_MAP(darktowr_banked_map)
|
||||
MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_BIG)
|
||||
MCFG_ADDRESS_MAP_BANK_DATA_WIDTH(8)
|
||||
MCFG_ADDRESS_MAP_BANK_ADDR_WIDTH(17)
|
||||
MCFG_ADDRESS_MAP_BANK_STRIDE(0x4000)
|
||||
|
||||
/* video hardware */
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
@ -1130,6 +1142,9 @@ MACHINE_CONFIG_START(toffy_state::toffy)
|
||||
ddragon(config);
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(toffy_map)
|
||||
|
||||
MCFG_DEVICE_REMOVE("sub")
|
||||
|
||||
/* sound hardware */
|
||||
@ -1177,9 +1192,11 @@ ROM_START( ddragon )
|
||||
ROM_LOAD( "21j-i", 0x20000, 0x10000, CRC(5effb0a0) SHA1(1f21acb15dad824e831ed9a42b3fde096bb31141) )
|
||||
ROM_LOAD( "21j-j", 0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) )
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* adpcm samples */
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "21j-6", 0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
|
||||
ROM_LOAD( "21j-7", 0x10000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "21j-7", 0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
|
||||
|
||||
ROM_REGION( 0x0300, "proms", 0 )
|
||||
ROM_LOAD( "21j-k-0", 0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) ) /* unknown */
|
||||
@ -1218,9 +1235,11 @@ ROM_START( ddragonw )
|
||||
ROM_LOAD( "21j-i", 0x20000, 0x10000, CRC(5effb0a0) SHA1(1f21acb15dad824e831ed9a42b3fde096bb31141) )
|
||||
ROM_LOAD( "21j-j", 0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) )
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* adpcm samples */
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "21j-6", 0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
|
||||
ROM_LOAD( "21j-7", 0x10000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "21j-7", 0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
|
||||
|
||||
ROM_REGION( 0x0300, "proms", 0 )
|
||||
ROM_LOAD( "21j-k-0.101", 0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) ) /* layer priorities */
|
||||
@ -1259,9 +1278,11 @@ ROM_START( ddragonw1 )
|
||||
ROM_LOAD( "21j-i", 0x20000, 0x10000, CRC(5effb0a0) SHA1(1f21acb15dad824e831ed9a42b3fde096bb31141) )
|
||||
ROM_LOAD( "21j-j", 0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) )
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* adpcm samples */
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "21j-6", 0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
|
||||
ROM_LOAD( "21j-7", 0x10000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "21j-7", 0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
|
||||
|
||||
ROM_REGION( 0x0300, "proms", 0 )
|
||||
ROM_LOAD( "21j-k-0.101", 0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) ) /* layer priorities */
|
||||
@ -1300,9 +1321,11 @@ ROM_START( ddragonu )
|
||||
ROM_LOAD( "21j-i", 0x20000, 0x10000, CRC(5effb0a0) SHA1(1f21acb15dad824e831ed9a42b3fde096bb31141) )
|
||||
ROM_LOAD( "21j-j", 0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) )
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* adpcm samples */
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "21j-6", 0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
|
||||
ROM_LOAD( "21j-7", 0x10000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "21j-7", 0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
|
||||
|
||||
ROM_REGION( 0x0300, "proms", 0 )
|
||||
ROM_LOAD( "21j-k-0.101", 0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) ) /* layer priorities */
|
||||
@ -1341,9 +1364,11 @@ ROM_START( ddragonua )
|
||||
ROM_LOAD( "21j-i", 0x20000, 0x10000, CRC(5effb0a0) SHA1(1f21acb15dad824e831ed9a42b3fde096bb31141) )
|
||||
ROM_LOAD( "21j-j", 0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) )
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* adpcm samples */
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "21j-6", 0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
|
||||
ROM_LOAD( "21j-7", 0x10000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "21j-7", 0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
|
||||
|
||||
ROM_REGION( 0x0300, "proms", 0 )
|
||||
ROM_LOAD( "21j-k-0.101", 0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) ) /* layer priorities */
|
||||
@ -1383,9 +1408,11 @@ ROM_START( ddragonub )
|
||||
ROM_LOAD( "21j-i", 0x20000, 0x10000, CRC(5effb0a0) SHA1(1f21acb15dad824e831ed9a42b3fde096bb31141) )
|
||||
ROM_LOAD( "21j-j", 0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) )
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* adpcm samples */
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "21j-6", 0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
|
||||
ROM_LOAD( "21j-7", 0x10000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "21j-7", 0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
|
||||
|
||||
ROM_REGION( 0x0300, "proms", 0 )
|
||||
ROM_LOAD( "21j-k-0.101", 0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) ) /* layer priorities */
|
||||
@ -1425,9 +1452,11 @@ ROM_START( ddragonb ) /* Same program roms as the World set */
|
||||
ROM_LOAD( "21j-i", 0x20000, 0x10000, CRC(5effb0a0) SHA1(1f21acb15dad824e831ed9a42b3fde096bb31141) )
|
||||
ROM_LOAD( "21j-j", 0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) )
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* adpcm samples */
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "21j-6", 0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
|
||||
ROM_LOAD( "21j-7", 0x10000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "21j-7", 0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
|
||||
|
||||
ROM_REGION( 0x0300, "proms", 0 )
|
||||
ROM_LOAD( "21j-k-0.101", 0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) ) /* layer priorities */
|
||||
@ -1466,9 +1495,11 @@ ROM_START( ddragonba )
|
||||
ROM_LOAD( "21j-i", 0x20000, 0x10000, CRC(5effb0a0) SHA1(1f21acb15dad824e831ed9a42b3fde096bb31141) )
|
||||
ROM_LOAD( "21j-j", 0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) )
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* adpcm samples */
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "8.bin", 0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
|
||||
ROM_LOAD( "7.bin", 0x10000, 0x10000, CRC(f9311f72) SHA1(aa554ef020e04dc896e5495bcddc64e489d0ffff) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "7.bin", 0x00000, 0x10000, CRC(f9311f72) SHA1(aa554ef020e04dc896e5495bcddc64e489d0ffff) )
|
||||
|
||||
ROM_REGION( 0x0300, "proms", 0 )
|
||||
ROM_LOAD( "21j-k-0.101", 0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) ) /* layer priorities */
|
||||
@ -1507,9 +1538,11 @@ ROM_START( ddragonb2 )
|
||||
ROM_LOAD( "19.bin", 0x20000, 0x10000, CRC(22d65df2) SHA1(2f286a24ea7af438b39126a4ed0c515745981416) )
|
||||
ROM_LOAD( "20.bin", 0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) )
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* adpcm samples */
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "b2_1.bin", 0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
|
||||
ROM_LOAD( "2.bin", 0x10000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "2.bin", 0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
|
||||
|
||||
ROM_REGION( 0x0300, "proms", 0 )
|
||||
ROM_LOAD( "21j-k-0.101", 0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) ) /* layer priorities */
|
||||
@ -1566,9 +1599,11 @@ ROM_START( ddragon6809 )
|
||||
ROM_LOAD( "6809_11.bin", 0x20000, 0x10000, CRC(4171b70d) SHA1(dc300c9bca6481417e97ad03c973e47389f261c1) )
|
||||
ROM_LOAD( "6809_12.bin", 0x30000, 0x10000, CRC(5f6a6d6f) SHA1(7d546a226cda81c28e7ccfb4c5daebc65072198d) )
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* adpcm samples */
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "6809_14.bin", 0x00000, 0x08000, CRC(678f8657) SHA1(2652fdc6719d2c889ca87802f6e2cefae59fc2eb) )
|
||||
ROM_LOAD( "6809_15.bin", 0x10000, 0x08000, CRC(10f21dea) SHA1(739cf649f91490384297a81a2cc9855acb58a1c0) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "6809_15.bin", 0x00000, 0x08000, CRC(10f21dea) SHA1(739cf649f91490384297a81a2cc9855acb58a1c0) )
|
||||
ROM_END
|
||||
|
||||
/*
|
||||
@ -1637,9 +1672,11 @@ ROM_START( ddragon6809a )
|
||||
ROM_LOAD( "11.2b", 0x20000, 0x10000, CRC(4171b70d) SHA1(dc300c9bca6481417e97ad03c973e47389f261c1) )
|
||||
ROM_LOAD( "12.2a", 0x30000, 0x10000, CRC(5f6a6d6f) SHA1(7d546a226cda81c28e7ccfb4c5daebc65072198d) )
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* adpcm samples (yes these really are smaller than the original game..) */
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples (yes these really are smaller than the original game..) */
|
||||
ROM_LOAD( "14.7q", 0x00000, 0x08000, CRC(678f8657) SHA1(2652fdc6719d2c889ca87802f6e2cefae59fc2eb) )
|
||||
ROM_LOAD( "15.7o", 0x10000, 0x08000, CRC(10f21dea) SHA1(739cf649f91490384297a81a2cc9855acb58a1c0) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "15.7o", 0x00000, 0x08000, CRC(10f21dea) SHA1(739cf649f91490384297a81a2cc9855acb58a1c0) )
|
||||
|
||||
ROM_REGION( 0x20000, "user1", 0 ) /* PROMs */
|
||||
ROM_LOAD( "27s21.5o", 0x00000, 0x100, CRC(673f68c3) SHA1(9381453e8f868d80b6069264509a339e20e2b6b1) )
|
||||
@ -1844,9 +1881,11 @@ ROM_START( tstrike )
|
||||
ROM_LOAD( "tstrike.109", 0x20000, 0x10000, CRC(8c2cd0bb) SHA1(364a708484c7750f38162d463104216bbd555b86) )
|
||||
ROM_LOAD( "21j-j", 0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) ) /* from ddragon (108) */
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* adpcm samples */
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "tstrike.94", 0x00000, 0x10000, CRC(8a2c09fc) SHA1(f59a43c3fa814b169a51744f9604d36ae63c190f) ) /* first+second half identical */
|
||||
ROM_LOAD( "tstrike.95", 0x10000, 0x08000, CRC(1812eecb) SHA1(9b7d526f30a86682cdf088600b25ea5a56b112ef) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "tstrike.95", 0x00000, 0x08000, CRC(1812eecb) SHA1(9b7d526f30a86682cdf088600b25ea5a56b112ef) )
|
||||
|
||||
ROM_REGION( 0x0300, "proms", 0 )
|
||||
ROM_LOAD( "21j-k-0.101", 0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) ) /* layer priorities */
|
||||
@ -1888,9 +1927,11 @@ ROM_START( tstrikea )
|
||||
ROM_LOAD( "tstrike.109", 0x20000, 0x10000, CRC(8c2cd0bb) SHA1(364a708484c7750f38162d463104216bbd555b86) )
|
||||
ROM_LOAD( "21j-j", 0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) ) /* from ddragon (108) */
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* adpcm samples */
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "tstrike.94", 0x00000, 0x10000, CRC(8a2c09fc) SHA1(f59a43c3fa814b169a51744f9604d36ae63c190f) ) /* first+second half identical */
|
||||
ROM_LOAD( "tstrike.95", 0x10000, 0x08000, CRC(1812eecb) SHA1(9b7d526f30a86682cdf088600b25ea5a56b112ef) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "tstrike.95", 0x00000, 0x08000, CRC(1812eecb) SHA1(9b7d526f30a86682cdf088600b25ea5a56b112ef) )
|
||||
|
||||
ROM_REGION( 0x0300, "proms", 0 )
|
||||
ROM_LOAD( "21j-k-0.101", 0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) ) /* layer priorities */
|
||||
@ -1924,9 +1965,11 @@ ROM_START( ddungeon )
|
||||
ROM_LOAD( "dd78.78", 0x00000, 0x08000, CRC(3deacae9) SHA1(6663f054ed3eed50c5cacfa5d22d465dfb179964) )
|
||||
ROM_LOAD( "dd109.109", 0x10000, 0x08000, CRC(5a2f31eb) SHA1(1b85533443e148adb2a9c2c09c43cbf2c35c86bc) )
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* adpcm samples */
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "21j-6", 0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) ) /* at IC95 */
|
||||
ROM_LOAD( "21j-7", 0x10000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) ) /* at IC94 */
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "21j-7", 0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) ) /* at IC94 */
|
||||
|
||||
ROM_REGION( 0x0300, "proms", 0 )
|
||||
ROM_LOAD( "21j-k-0.101", 0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) ) /* layer priorities */
|
||||
@ -1963,9 +2006,11 @@ ROM_START( ddungeone )
|
||||
ROM_LOAD( "dd78.78", 0x00000, 0x08000, CRC(3deacae9) SHA1(6663f054ed3eed50c5cacfa5d22d465dfb179964) ) /* 6B on this board */
|
||||
ROM_LOAD( "dd109.109", 0x10000, 0x08000, CRC(5a2f31eb) SHA1(1b85533443e148adb2a9c2c09c43cbf2c35c86bc) ) /* 7C on this board */
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* adpcm samples */
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "21j-6", 0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
|
||||
ROM_LOAD( "21j-7", 0x10000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "21j-7", 0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
|
||||
|
||||
ROM_REGION( 0x0300, "proms", 0 )
|
||||
ROM_LOAD( "21j-k-0.101", 0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) ) /* layer priorities */
|
||||
@ -2008,9 +2053,11 @@ ROM_START( darktowr )
|
||||
ROM_LOAD( "dt.109", 0x20000, 0x10000, CRC(15bdcb62) SHA1(75382a3805dc333b196e119d28b5c3f320bd9f2a) )
|
||||
ROM_LOAD( "21j-j", 0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) ) /* from ddragon */
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* adpcm samples */
|
||||
ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "21j-6", 0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) ) /* from ddragon */
|
||||
ROM_LOAD( "21j-7", 0x10000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) ) /* from ddragon */
|
||||
|
||||
ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
|
||||
ROM_LOAD( "21j-7", 0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) ) /* from ddragon */
|
||||
|
||||
ROM_REGION( 0x0300, "proms", 0 )
|
||||
ROM_LOAD( "21j-k-0.101", 0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) ) /* layer priorities */
|
||||
@ -2090,7 +2137,6 @@ ROM_END
|
||||
void ddragon_state::init_ddragon()
|
||||
{
|
||||
m_sprite_irq = INPUT_LINE_NMI;
|
||||
m_ym_irq = M6809_FIRQ_LINE;
|
||||
m_technos_video_hw = 0;
|
||||
}
|
||||
|
||||
@ -2098,7 +2144,6 @@ void ddragon_state::init_ddragon()
|
||||
void ddragon_state::init_ddragon2()
|
||||
{
|
||||
m_sprite_irq = INPUT_LINE_NMI;
|
||||
m_ym_irq = 0;
|
||||
m_technos_video_hw = 2;
|
||||
}
|
||||
|
||||
@ -2108,18 +2153,14 @@ void darktowr_state::init_darktowr()
|
||||
save_item(NAME(m_mcu_port_a_out));
|
||||
|
||||
m_sprite_irq = INPUT_LINE_NMI;
|
||||
m_ym_irq = M6809_FIRQ_LINE;
|
||||
m_technos_video_hw = 0;
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0x3808, 0x3808, write8_delegate(FUNC(darktowr_state::darktowr_bankswitch_w), this));
|
||||
m_mcu_port_a_out = 0xff;
|
||||
}
|
||||
|
||||
|
||||
void toffy_state::init_toffy()
|
||||
{
|
||||
m_ym_irq = M6809_FIRQ_LINE;
|
||||
m_technos_video_hw = 0;
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0x3808, 0x3808, write8_delegate(FUNC(toffy_state::toffy_bankswitch_w), this));
|
||||
|
||||
/* the program rom has a simple bitswap encryption */
|
||||
uint8_t *rom = memregion("maincpu")->base();
|
||||
@ -2168,7 +2209,6 @@ void ddragon_state::init_ddragon6809()
|
||||
}
|
||||
|
||||
m_sprite_irq = INPUT_LINE_NMI;
|
||||
m_ym_irq = M6809_FIRQ_LINE;
|
||||
m_technos_video_hw = 0;
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,7 @@
|
||||
*************************************************************************/
|
||||
|
||||
#include "cpu/m6805/m68705.h"
|
||||
#include "machine/bankdev.h"
|
||||
#include "machine/gen_latch.h"
|
||||
#include "machine/timer.h"
|
||||
#include "sound/msm5205.h"
|
||||
@ -29,12 +30,13 @@ public:
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_soundcpu(*this, "soundcpu")
|
||||
, m_subcpu(*this, "sub")
|
||||
, m_adpcm1(*this, "adpcm1")
|
||||
, m_adpcm2(*this, "adpcm2")
|
||||
, m_adpcm(*this, "adpcm%u", 1U)
|
||||
, m_gfxdecode(*this, "gfxdecode")
|
||||
, m_screen(*this, "screen")
|
||||
, m_palette(*this, "palette")
|
||||
, m_soundlatch(*this, "soundlatch")
|
||||
, m_mainbank(*this, "mainbank")
|
||||
, m_adpcm_rom(*this, "adpcm%u", 1U)
|
||||
{
|
||||
}
|
||||
|
||||
@ -50,18 +52,17 @@ public:
|
||||
/* video-related */
|
||||
tilemap_t *m_fg_tilemap;
|
||||
tilemap_t *m_bg_tilemap;
|
||||
uint8_t m_technos_video_hw;
|
||||
uint8_t m_scrollx_hi;
|
||||
uint8_t m_scrolly_hi;
|
||||
uint8_t m_technos_video_hw;
|
||||
uint8_t m_scrollx_hi;
|
||||
uint8_t m_scrolly_hi;
|
||||
|
||||
/* misc */
|
||||
uint8_t m_ddragon_sub_port;
|
||||
uint8_t m_sprite_irq;
|
||||
uint8_t m_ym_irq;
|
||||
uint8_t m_adpcm_sound_irq;
|
||||
uint32_t m_adpcm_pos[2];
|
||||
uint32_t m_adpcm_end[2];
|
||||
uint8_t m_adpcm_idle[2];
|
||||
uint8_t m_ddragon_sub_port;
|
||||
uint8_t m_sprite_irq;
|
||||
uint8_t m_adpcm_sound_irq;
|
||||
uint32_t m_adpcm_pos[2];
|
||||
uint32_t m_adpcm_end[2];
|
||||
bool m_adpcm_idle[2];
|
||||
int m_adpcm_data[2];
|
||||
|
||||
/* for Sai Yu Gou Ma Roku */
|
||||
@ -79,17 +80,18 @@ public:
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_soundcpu;
|
||||
optional_device<cpu_device> m_subcpu;
|
||||
optional_device<msm5205_device> m_adpcm1;
|
||||
optional_device<msm5205_device> m_adpcm2;
|
||||
optional_device_array<msm5205_device, 2> m_adpcm;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<generic_latch_8_device> m_soundlatch;
|
||||
|
||||
optional_memory_bank m_mainbank;
|
||||
optional_region_ptr_array<uint8_t, 2> m_adpcm_rom;
|
||||
|
||||
int scanline_to_vcount(int scanline);
|
||||
void ddragon_interrupt_ack(address_space &space, offs_t offset, uint8_t data);
|
||||
void dd_adpcm_int(msm5205_device *device, int chip);
|
||||
void dd_adpcm_int(int chip);
|
||||
|
||||
/* video/ddragon.c */
|
||||
TILEMAP_MAPPER_MEMBER(background_scan);
|
||||
@ -105,7 +107,6 @@ public:
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(ddragon_scanline);
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER(irq_handler);
|
||||
DECLARE_WRITE8_MEMBER(ddragon_bgvideoram_w);
|
||||
DECLARE_WRITE8_MEMBER(ddragon_fgvideoram_w);
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(subcpu_bus_free);
|
||||
@ -136,6 +137,7 @@ public:
|
||||
void dd2_sound_map(address_map &map);
|
||||
void dd2_sub_map(address_map &map);
|
||||
void ddragon_map(address_map &map);
|
||||
void ddragon_base_map(address_map &map);
|
||||
void ddragonba_sub_map(address_map &map);
|
||||
void ddragonba_sub_portmap(address_map &map);
|
||||
void sound_map(address_map &map);
|
||||
@ -149,6 +151,7 @@ public:
|
||||
darktowr_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: ddragon_state(mconfig, type, tag)
|
||||
, m_mcu(*this, "mcu")
|
||||
, m_darktowr_bank(*this, "darktowr_bank")
|
||||
, m_mcu_port_a_out(0xff)
|
||||
{
|
||||
}
|
||||
@ -161,10 +164,13 @@ public:
|
||||
void init_darktowr();
|
||||
|
||||
void darktowr(machine_config &config);
|
||||
void darktowr_map(address_map &map);
|
||||
void darktowr_banked_map(address_map &map);
|
||||
protected:
|
||||
required_device<m68705p_device> m_mcu;
|
||||
optional_device<address_map_bank_device> m_darktowr_bank;
|
||||
|
||||
uint8_t m_mcu_port_a_out;;
|
||||
uint8_t m_mcu_port_a_out;
|
||||
};
|
||||
|
||||
|
||||
@ -180,4 +186,5 @@ public:
|
||||
|
||||
void init_toffy();
|
||||
void toffy(machine_config &config);
|
||||
void toffy_map(address_map &map);
|
||||
};
|
||||
|
@ -55,32 +55,35 @@ Sprite layout.
|
||||
TILEMAP_MAPPER_MEMBER(ddragon_state::background_scan)
|
||||
{
|
||||
/* logical (col,row) -> memory offset */
|
||||
return (col & 0x0f) + ((row & 0x0f) << 4) + ((col & 0x10) << 4) + ((row & 0x10) << 5);
|
||||
return (col & 0x0f) | ((row & 0x0f) << 4) | ((col & 0x10) << 4) | ((row & 0x10) << 5);
|
||||
}
|
||||
|
||||
TILE_GET_INFO_MEMBER(ddragon_state::get_bg_tile_info)
|
||||
{
|
||||
uint8_t attr = m_bgvideoram[2 * tile_index];
|
||||
tile_index <<= 1;
|
||||
uint8_t attr = m_bgvideoram[tile_index];
|
||||
SET_TILE_INFO_MEMBER(2,
|
||||
m_bgvideoram[2 * tile_index+1] + ((attr & 0x07) << 8),
|
||||
m_bgvideoram[tile_index | 1] | ((attr & 0x07) << 8),
|
||||
(attr >> 3) & 0x07,
|
||||
TILE_FLIPYX((attr & 0xc0) >> 6));
|
||||
}
|
||||
|
||||
TILE_GET_INFO_MEMBER(ddragon_state::get_fg_tile_info)
|
||||
{
|
||||
uint8_t attr = m_fgvideoram[2 * tile_index];
|
||||
tile_index <<= 1;
|
||||
uint8_t attr = m_fgvideoram[tile_index];
|
||||
SET_TILE_INFO_MEMBER(0,
|
||||
m_fgvideoram[2 * tile_index + 1] + ((attr & 0x07) << 8),
|
||||
m_fgvideoram[tile_index | 1] | ((attr & 0x07) << 8),
|
||||
attr >> 5,
|
||||
0);
|
||||
}
|
||||
|
||||
TILE_GET_INFO_MEMBER(ddragon_state::get_fg_16color_tile_info)
|
||||
{
|
||||
uint8_t attr = m_fgvideoram[2 * tile_index];
|
||||
tile_index <<= 1;
|
||||
uint8_t attr = m_fgvideoram[tile_index];
|
||||
SET_TILE_INFO_MEMBER(0,
|
||||
m_fgvideoram[2 * tile_index+1] + ((attr & 0x0f) << 8),
|
||||
m_fgvideoram[tile_index | 1] | ((attr & 0x0f) << 8),
|
||||
attr >> 4,
|
||||
0);
|
||||
}
|
||||
@ -114,13 +117,13 @@ VIDEO_START_MEMBER(ddragon_state,ddragon)
|
||||
WRITE8_MEMBER(ddragon_state::ddragon_bgvideoram_w)
|
||||
{
|
||||
m_bgvideoram[offset] = data;
|
||||
m_bg_tilemap->mark_tile_dirty(offset / 2);
|
||||
m_bg_tilemap->mark_tile_dirty(offset >> 1);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(ddragon_state::ddragon_fgvideoram_w)
|
||||
{
|
||||
m_fgvideoram[offset] = data;
|
||||
m_fg_tilemap->mark_tile_dirty(offset / 2);
|
||||
m_fg_tilemap->mark_tile_dirty(offset >> 1);
|
||||
}
|
||||
|
||||
|
||||
@ -145,8 +148,8 @@ void ddragon_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
|
||||
int attr = src[i + 1];
|
||||
if (attr & 0x80) /* visible */
|
||||
{
|
||||
int sx = 240 - src[i + 4] + ((attr & 2) << 7);
|
||||
int sy = 232 - src[i + 0] + ((attr & 1) << 8);
|
||||
int sx = 240 - (src[i + 4] | ((attr & 2) << 7));
|
||||
int sy = 232 - (src[i + 0] | ((attr & 1) << 8));
|
||||
int size = (attr & 0x30) >> 4;
|
||||
int flipx = attr & 8;
|
||||
int flipy = attr & 4;
|
||||
@ -158,7 +161,7 @@ void ddragon_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
|
||||
if (m_technos_video_hw == 2) /* Double Dragon 2 */
|
||||
{
|
||||
color = src[i + 2] >> 5;
|
||||
which = src[i + 3] + ((src[i + 2] & 0x1f) << 8);
|
||||
which = src[i + 3] | ((src[i + 2] & 0x1f) << 8);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -168,7 +171,7 @@ void ddragon_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
|
||||
if ((sy < -7) && (sy > -16)) sy += 256; /* fix sprite clip */
|
||||
}
|
||||
color = src[i + 2] >> 4;
|
||||
which = src[i + 3] + ((src[i + 2] & 0x0f) << 8);
|
||||
which = src[i + 3] | ((src[i + 2] & 0x0f) << 8);
|
||||
}
|
||||
|
||||
if (flip_screen())
|
||||
|
Loading…
Reference in New Issue
Block a user