leland.cpp cleanups (#3519)

* leland.cpp : Cleanup duplicates, Add generic_latch_16_device for maincpu to soundcpu comms, Improve tags, Reduce runtime tag lookups, Make drawing function relate to cliprect

* leland.cpp : Fix compile

* leland.cpp : Fix compile(again)

* leland.cpp : Fix sound command

* leland.cpp : Fix error

* leland.cpp : Background is tilemap; Accurate this and reduce unnecessary things
This commit is contained in:
cam900 2018-05-17 12:59:46 +09:00 committed by Vas Crabb
parent 2da9fd50a6
commit f7b6bb6bbb
6 changed files with 290 additions and 378 deletions

View File

@ -126,7 +126,7 @@ WRITE_LINE_MEMBER(leland_80186_sound_device::i80186_tmr1_w)
{
if (m_ext_active && (m_ext_start < m_ext_stop))
{
m_dac4->write(m_ext_base[m_ext_start]);
m_dac[3]->write(m_ext_base[m_ext_start]);
m_ext_start++;
}
}
@ -172,6 +172,8 @@ MACHINE_CONFIG_START(leland_80186_sound_device::device_add_mconfig)
MCFG_PIT8253_OUT1_HANDLER(WRITELINE(*this, leland_80186_sound_device, pit1_1_w))
MCFG_PIT8253_CLK2(4000000)
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, leland_80186_sound_device, pit1_2_w))
MCFG_GENERIC_LATCH_16_ADD("soundlatch")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(redline_80186_sound_device::device_add_mconfig)
@ -222,6 +224,8 @@ MACHINE_CONFIG_START(redline_80186_sound_device::device_add_mconfig)
MCFG_PIT8253_OUT0_HANDLER(WRITELINE(*this, leland_80186_sound_device, pit1_2_w))
MCFG_PIT8253_CLK1(7000000)
MCFG_PIT8253_CLK2(7000000)
MCFG_GENERIC_LATCH_16_ADD("soundlatch")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(ataxx_80186_sound_device::device_add_mconfig)
@ -249,6 +253,8 @@ MACHINE_CONFIG_START(ataxx_80186_sound_device::device_add_mconfig)
MCFG_PIT8253_OUT1_HANDLER(WRITELINE(":audiocpu", i80186_cpu_device, drq1_w))
MCFG_PIT8253_CLK2(4000000)
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, leland_80186_sound_device, pit0_2_w))
MCFG_GENERIC_LATCH_16_ADD("soundlatch")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(wsf_80186_sound_device::device_add_mconfig)
@ -281,6 +287,8 @@ MACHINE_CONFIG_START(wsf_80186_sound_device::device_add_mconfig)
MCFG_PIT8253_OUT1_HANDLER(WRITELINE(":audiocpu", i80186_cpu_device, drq1_w))
MCFG_PIT8253_CLK2(4000000)
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, leland_80186_sound_device, pit0_2_w))
MCFG_GENERIC_LATCH_16_ADD("soundlatch")
MACHINE_CONFIG_END
@ -341,28 +349,13 @@ leland_80186_sound_device::leland_80186_sound_device(const machine_config &mconf
}
leland_80186_sound_device::leland_80186_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, type, tag, owner, clock),
m_dac1(*this, "dac1"),
m_dac2(*this, "dac2"),
m_dac3(*this, "dac3"),
m_dac4(*this, "dac4"),
m_dac5(*this, "dac5"),
m_dac6(*this, "dac6"),
m_dac7(*this, "dac7"),
m_dac8(*this, "dac8"),
m_dac9(*this, "dac9"),
m_dac1vol(*this, "dac1vol"),
m_dac2vol(*this, "dac2vol"),
m_dac3vol(*this, "dac3vol"),
m_dac4vol(*this, "dac4vol"),
m_dac5vol(*this, "dac5vol"),
m_dac6vol(*this, "dac6vol"),
m_dac7vol(*this, "dac7vol"),
m_dac8vol(*this, "dac8vol"),
m_pit0(*this, "pit0"),
m_pit1(*this, "pit1"),
m_pit2(*this, "pit2"),
m_ymsnd(*this, "ymsnd")
: device_t(mconfig, type, tag, owner, clock)
, m_soundlatch(*this, "soundlatch")
, m_dac(*this, "dac%u", 1U)
, m_dac9(*this, "dac9")
, m_dacvol(*this, "dac%uvol", 1U)
, m_pit(*this, "pit%u", 0U)
, m_ymsnd(*this, "ymsnd")
{
}
@ -471,16 +464,11 @@ WRITE8_MEMBER( leland_80186_sound_device::leland_80186_control_w )
*
*************************************/
void leland_80186_sound_device::command_lo_sync(void *ptr, int param)
{
if (LOG_COMM) logerror("%s:Write sound command latch lo = %02X\n", machine().describe_context(), param);
m_sound_command = (m_sound_command & 0xff00) | param;
}
WRITE8_MEMBER( leland_80186_sound_device::leland_80186_command_lo_w )
{
machine().scheduler().synchronize(timer_expired_delegate(FUNC(leland_80186_sound_device::command_lo_sync), this), data);
if (LOG_COMM) logerror("%s:Write sound command latch lo = %02X\n", machine().describe_context(), data);
m_sound_command = (m_sound_command & 0xff00) | data;
m_soundlatch->write(space, offset, m_sound_command);
}
@ -488,6 +476,7 @@ WRITE8_MEMBER( leland_80186_sound_device::leland_80186_command_hi_w )
{
if (LOG_COMM) logerror("%s:Write sound command latch hi = %02X\n", machine().describe_context(), data);
m_sound_command = (m_sound_command & 0x00ff) | (data << 8);
m_soundlatch->write(space, offset, m_sound_command);
}
@ -551,33 +540,7 @@ WRITE16_MEMBER( leland_80186_sound_device::dac_w )
/* handle value changes */
if (ACCESSING_BITS_0_7)
{
switch (dac)
{
case 0:
m_dac1->write(data & 0xff);
break;
case 1:
m_dac2->write(data & 0xff);
break;
case 2:
m_dac3->write(data & 0xff);
break;
case 3:
m_dac4->write(data & 0xff);
break;
case 4:
m_dac5->write(data & 0xff);
break;
case 5:
m_dac6->write(data & 0xff);
break;
case 6:
m_dac7->write(data & 0xff);
break;
case 7:
m_dac8->write(data & 0xff);
break;
}
m_dac[dac]->write(data & 0xff);
set_clock_line(dac, 0);
}
@ -585,33 +548,7 @@ WRITE16_MEMBER( leland_80186_sound_device::dac_w )
/* handle volume changes */
if (ACCESSING_BITS_8_15)
{
switch(dac)
{
case 0:
m_dac1vol->write(data >> 8);
break;
case 1:
m_dac2vol->write(data >> 8);
break;
case 2:
m_dac3vol->write(data >> 8);
break;
case 3:
m_dac4vol->write(data >> 8);
break;
case 4:
m_dac5vol->write(data >> 8);
break;
case 5:
m_dac6vol->write(data >> 8);
break;
case 6:
m_dac7vol->write(data >> 8);
break;
case 7:
m_dac8vol->write(data >> 8);
break;
}
m_dacvol[dac]->write(data >> 8);
}
}
@ -634,9 +571,9 @@ WRITE16_MEMBER( leland_80186_sound_device::ataxx_dac_control )
dac_w(space, offset, data, 0x00ff);
return;
case 0x03:
m_dac1vol->write((data & 7) << 5);
m_dac2vol->write(((data >> 3) & 7) << 5);
m_dac3vol->write(((data >> 6) & 3) << 6);
m_dacvol[0]->write((data & 7) << 5);
m_dacvol[1]->write(((data >> 3) & 7) << 5);
m_dacvol[2]->write(((data >> 6) & 3) << 6);
return;
case 0x21:
dac_w(space, 3, data, mem_mask);
@ -705,19 +642,19 @@ READ16_MEMBER( leland_80186_sound_device::peripheral_r )
return ((m_clock_active << 1) & 0x7e);
case 1:
if (LOG_COMM) logerror("%s:Read sound command latch = %02X\n", machine().describe_context(), m_sound_command);
return m_sound_command;
if (LOG_COMM) logerror("%s:Read sound command latch = %02X\n", machine().describe_context(), m_soundlatch->read(space, offset));
return m_soundlatch->read(space, offset);
case 2:
if (ACCESSING_BITS_0_7)
return m_pit0->read(space, offset & 3);
return m_pit[0]->read(space, offset & 3);
break;
case 3:
if (m_type <= TYPE_REDLINE)
{
if (ACCESSING_BITS_0_7)
return m_pit1->read(space, offset & 3);
return m_pit[1]->read(space, offset & 3);
}
else if (m_type == TYPE_WSF)
return m_ymsnd->read(space, offset);
@ -727,7 +664,7 @@ READ16_MEMBER( leland_80186_sound_device::peripheral_r )
if (m_type == TYPE_REDLINE)
{
if (ACCESSING_BITS_0_7)
return m_pit2->read(space, offset & 3);
return m_pit[2]->read(space, offset & 3);
}
else
logerror("%s:Unexpected peripheral read %d/%02X\n", machine().describe_context(), select, offset*2);
@ -755,14 +692,14 @@ WRITE16_MEMBER( leland_80186_sound_device::peripheral_w )
case 2:
if (ACCESSING_BITS_0_7)
m_pit0->write(space, offset & 3, data);
m_pit[0]->write(space, offset & 3, data);
break;
case 3:
if (m_type <= TYPE_REDLINE)
{
if (ACCESSING_BITS_0_7)
m_pit1->write(space, offset & 3, data);
m_pit[1]->write(space, offset & 3, data);
}
else if(m_type == TYPE_WSF)
m_ymsnd->write(space, offset, data);
@ -772,7 +709,7 @@ WRITE16_MEMBER( leland_80186_sound_device::peripheral_w )
if (m_type == TYPE_REDLINE)
{
if (ACCESSING_BITS_0_7)
m_pit2->write(space, offset & 3, data);
m_pit[2]->write(space, offset & 3, data);
}
else if (mem_mask == 0xffff)
{

View File

@ -11,6 +11,7 @@
#pragma once
#include "cpu/i86/i186.h"
#include "machine/gen_latch.h"
#include "machine/pit8253.h"
#include "sound/dac.h"
#include "sound/ym2151.h"
@ -55,26 +56,12 @@ protected:
TYPE_WSF
};
required_device<dac_byte_interface> m_dac1;
required_device<dac_byte_interface> m_dac2;
required_device<dac_byte_interface> m_dac3;
required_device<dac_byte_interface> m_dac4;
optional_device<dac_byte_interface> m_dac5;
optional_device<dac_byte_interface> m_dac6;
optional_device<dac_byte_interface> m_dac7;
optional_device<dac_byte_interface> m_dac8;
required_device<generic_latch_16_device> m_soundlatch;
optional_device_array<dac_byte_interface, 8> m_dac;
optional_device<dac_word_interface> m_dac9;
required_device<dac_byte_interface> m_dac1vol;
required_device<dac_byte_interface> m_dac2vol;
required_device<dac_byte_interface> m_dac3vol;
required_device<dac_byte_interface> m_dac4vol;
optional_device<dac_byte_interface> m_dac5vol;
optional_device<dac_byte_interface> m_dac6vol;
optional_device<dac_byte_interface> m_dac7vol;
optional_device<dac_byte_interface> m_dac8vol;
optional_device_array<dac_byte_interface, 8> m_dacvol;
private:
void command_lo_sync(void *ptr, int param);
void delayed_response_r(void *ptr, int param);
void set_clock_line(int which, int state) { m_clock_active = state ? (m_clock_active | (1<<which)) : (m_clock_active & ~(1<<which)); }
@ -91,9 +78,7 @@ private:
uint8_t m_ext_active;
uint8_t* m_ext_base;
required_device<pit8254_device> m_pit0;
optional_device<pit8254_device> m_pit1;
optional_device<pit8254_device> m_pit2;
optional_device_array<pit8254_device, 3> m_pit;
optional_device<ym2151_device> m_ymsnd;
};

View File

@ -85,8 +85,8 @@
void leland_state::master_map_program(address_map &map)
{
map(0x0000, 0x1fff).rom();
map(0x2000, 0x9fff).bankr("bank1");
map(0xa000, 0xdfff).bankr("bank2").w(this, FUNC(leland_state::leland_battery_ram_w)).share("battery");
map(0x2000, 0x9fff).bankr("masterbank_0");
map(0xa000, 0xdfff).bankr("masterbank_1").w(this, FUNC(leland_state::leland_battery_ram_w)).share("battery");
map(0xe000, 0xefff).ram().share("mainram");
map(0xf000, 0xf3ff).rw(this, FUNC(leland_state::leland_gated_paletteram_r), FUNC(leland_state::leland_gated_paletteram_w)).share("palette");
map(0xf800, 0xf801).w(this, FUNC(leland_state::leland_master_video_addr_w));
@ -112,8 +112,8 @@ void leland_state::master_redline_map_io(address_map &map)
void leland_state::master_map_program_2(address_map &map)
{
map(0x0000, 0x1fff).rom();
map(0x2000, 0x9fff).bankr("bank1");
map(0xa000, 0xdfff).bankr("bank2").w(this, FUNC(leland_state::ataxx_battery_ram_w)).share("battery");
map(0x2000, 0x9fff).bankr("masterbank_0");
map(0xa000, 0xdfff).bankr("masterbank_1").w(this, FUNC(leland_state::ataxx_battery_ram_w)).share("battery");
map(0xe000, 0xf7ff).ram().share("mainram");
map(0xf800, 0xffff).rw(this, FUNC(leland_state::ataxx_paletteram_and_misc_r), FUNC(leland_state::ataxx_paletteram_and_misc_w)).share("palette");
}
@ -142,7 +142,7 @@ void leland_state::master_map_io_2(address_map &map)
void leland_state::slave_small_map_program(address_map &map)
{
map(0x0000, 0x1fff).rom();
map(0x2000, 0xdfff).bankr("bank3");
map(0x2000, 0xdfff).bankr("slavebank");
map(0xe000, 0xefff).ram();
map(0xf800, 0xf801).w(this, FUNC(leland_state::leland_slave_video_addr_w));
map(0xf802, 0xf802).r(this, FUNC(leland_state::leland_raster_r));
@ -153,7 +153,7 @@ void leland_state::slave_small_map_program(address_map &map)
void leland_state::slave_large_map_program(address_map &map)
{
map(0x0000, 0x1fff).rom();
map(0x4000, 0xbfff).bankr("bank3");
map(0x4000, 0xbfff).bankr("slavebank");
map(0xc000, 0xc000).w(this, FUNC(leland_state::leland_slave_large_banksw_w));
map(0xe000, 0xefff).ram();
map(0xf800, 0xf801).w(this, FUNC(leland_state::leland_slave_video_addr_w));
@ -172,7 +172,7 @@ void leland_state::slave_map_io(address_map &map)
void leland_state::slave_map_program(address_map &map)
{
map(0x0000, 0x1fff).rom();
map(0x2000, 0x9fff).bankr("bank3");
map(0x2000, 0x9fff).bankr("slavebank");
map(0xa000, 0xdfff).rom();
map(0xe000, 0xefff).ram();
map(0xfffc, 0xfffd).w(this, FUNC(leland_state::leland_slave_video_addr_w));
@ -1156,12 +1156,12 @@ ROM_START( cerberus )
ROM_LOAD( "3-23u8", 0x0a000, 0x02000, CRC(dbabdbde) SHA1(906ff8f91eaf01f0435d7ac1291af62073568d2f) )
ROM_LOAD( "3-23u9", 0x0c000, 0x02000, CRC(eb992385) SHA1(0951d6fb5ff8508ef7184e9c26be6c20b85bad72) )
ROM_REGION( 0x06000, "gfx1", 0 )
ROM_REGION( 0x06000, "bg_gfx", 0 )
ROM_LOAD( "3-23u93", 0x00000, 0x02000, CRC(14a1a4b0) SHA1(aad63e368a09497188f8112d1ca0ac0d0366ac61) )
ROM_LOAD( "3-23u94", 0x02000, 0x02000, CRC(207a1709) SHA1(c7fbb80a83a5684b6b35750df68d51091e8747e4) )
ROM_LOAD( "3-23u95", 0x04000, 0x02000, CRC(e9c86267) SHA1(c7f3a4725824da1e2793160409821017bd0bd956) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_LOAD( "3-23u70", 0x02000, 0x2000, CRC(96499983) SHA1(202c9d74fe4bbce7b93fcbb6352c35eb480d8297) )
ROM_LOAD( "3-23_u92", 0x06000, 0x2000, CRC(497bb717) SHA1(748ac9f22d896b493cdf182ec9deb3e07e2ffb48) )
ROM_LOAD( "3-23u69", 0x0a000, 0x2000, CRC(ebd14d9e) SHA1(8eb061d43eb60eea01b122e0b4e937bfc00146cc) )
@ -1205,12 +1205,12 @@ ROM_START( mayhem )
ROM_LOAD( "13214.9", 0x1a000, 0x02000, CRC(96f3e8d9) SHA1(e0a663c3c9dc77f2ec10c71a9d227ec3ea765c6e) )
ROM_CONTINUE( 0x26000, 0x02000 )
ROM_REGION( 0x0c000, "gfx1", 0 )
ROM_REGION( 0x0c000, "bg_gfx", 0 )
ROM_LOAD( "13204.93", 0x00000, 0x04000, CRC(de183518) SHA1(080cd45c2c7d81b8edd5170aa6a587ae6e7e54fb) )
ROM_LOAD( "13205.94", 0x04000, 0x04000, CRC(c61f63ac) SHA1(c52fe331391720796556a7eab7d145fd1dacf6ed) )
ROM_LOAD( "13206.95", 0x08000, 0x04000, CRC(8e7bd2fd) SHA1(ccd97ef604be6d4479a8a91fccecb5d71a4d82af) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
/* U70 = Empty */
ROM_LOAD( "13203.92", 0x04000, 0x4000, CRC(121ed5bf) SHA1(691b09a3bad3d1fd13ec38a81a15436b8baba0a1) )
ROM_LOAD( "13201.69", 0x08000, 0x4000, CRC(90283e29) SHA1(36b71e2df455758b139a503968b80112a65c347a) )
@ -1252,12 +1252,12 @@ ROM_START( powrplay )
ROM_LOAD( "13317.008", 0x18000, 0x02000, CRC(a081a031) SHA1(c7eef2022bc623bb3399895e092d6cb56c50b5e3) )
ROM_CONTINUE( 0x24000, 0x02000 )
ROM_REGION( 0x06000, "gfx1", 0 )
ROM_REGION( 0x06000, "bg_gfx", 0 )
ROM_LOAD( "13302.093", 0x00000, 0x02000, CRC(9beaa403) SHA1(02af1fb98f61b3e7758524978deba094224c8a5d) )
ROM_LOAD( "13303.094", 0x02000, 0x02000, CRC(2bf711d0) SHA1(bf20177e1b07b12b4ef833072b313a2917d1b65e) )
ROM_LOAD( "13304.095", 0x04000, 0x02000, CRC(06b8675b) SHA1(8b25a473c03f8210f5d8542c0dc6643c499a0afa) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_LOAD( "13301.070", 0x00000, 0x2000, CRC(aa6d3b9d) SHA1(cb1f148495b029b73f5a32c5162dcc54c0387b4e) )
/* U92 = Empty */
/* U69 = Empty */
@ -1311,12 +1311,12 @@ ROM_START( wseries )
ROM_LOAD( "02-13422-00.u9", 0x1a000, 0x02000, CRC(222e8405) SHA1(a1cc700e06df43847b635858d21ff2e45d8e00ab) )
ROM_CONTINUE( 0x26000, 0x02000 )
ROM_REGION( 0x0c000, "gfx1", 0 )
ROM_REGION( 0x0c000, "bg_gfx", 0 )
ROM_LOAD( "02-13401-00.u93", 0x00000, 0x04000, CRC(4ea3e641) SHA1(7628fbf25b5e36d06818d2f9cdc66e2fb15cba4f) )
ROM_LOAD( "02-13402-00.u94", 0x04000, 0x04000, CRC(71a8a56c) SHA1(b793a9641dd5d4cd122fb8f5cf1eef5dc3fd475c) )
ROM_LOAD( "02-13403-00.u95", 0x08000, 0x04000, CRC(8077ae25) SHA1(15bb1f99e8aea67b9057ef5ef8570f33470a24a3) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
/* U70 = Empty */
ROM_LOAD( "02-13404-00.u92", 0x04000, 0x4000, CRC(22da40aa) SHA1(a0306f795f1300d9ab88356ab44117764f6f22a4) )
ROM_LOAD( "02-13405-00.u69", 0x08000, 0x4000, CRC(6f65b313) SHA1(2ae85686f679eaa8be15f0cd7d5af61af966c4bd) )
@ -1362,12 +1362,12 @@ ROM_START( wseries0 )
ROM_LOAD( "02-13422-00.u9", 0x1a000, 0x02000, CRC(222e8405) SHA1(a1cc700e06df43847b635858d21ff2e45d8e00ab) )
ROM_CONTINUE( 0x26000, 0x02000 )
ROM_REGION( 0x0c000, "gfx1", 0 )
ROM_REGION( 0x0c000, "bg_gfx", 0 )
ROM_LOAD( "02-13401-00.u93", 0x00000, 0x04000, CRC(4ea3e641) SHA1(7628fbf25b5e36d06818d2f9cdc66e2fb15cba4f) )
ROM_LOAD( "02-13402-00.u94", 0x04000, 0x04000, CRC(71a8a56c) SHA1(b793a9641dd5d4cd122fb8f5cf1eef5dc3fd475c) )
ROM_LOAD( "02-13403-00.u95", 0x08000, 0x04000, CRC(8077ae25) SHA1(15bb1f99e8aea67b9057ef5ef8570f33470a24a3) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
/* U70 = Empty */
ROM_LOAD( "02-13404-00.u92", 0x04000, 0x4000, CRC(22da40aa) SHA1(a0306f795f1300d9ab88356ab44117764f6f22a4) )
ROM_LOAD( "02-13405-00.u69", 0x08000, 0x4000, CRC(6f65b313) SHA1(2ae85686f679eaa8be15f0cd7d5af61af966c4bd) )
@ -1413,12 +1413,12 @@ ROM_START( alleymas )
ROM_LOAD( "009", 0x1a000, 0x02000, CRC(6d74274e) SHA1(10bb04243eabeb8178884b4e0691c5e1765a1dc4) )
ROM_CONTINUE( 0x26000, 0x02000 )
ROM_REGION( 0x06000, "gfx1", 0 )
ROM_REGION( 0x06000, "bg_gfx", 0 )
ROM_LOAD( "093", 0x00000, 0x02000, CRC(54456e6f) SHA1(be41711f57b5b9bd6651399f0df00c538ca1a3a5) )
ROM_LOAD( "094", 0x02000, 0x02000, CRC(edc240da) SHA1(a812ab0cccb20cd68e9dbe283d4aab92f540af24) )
ROM_LOAD( "095", 0x04000, 0x02000, CRC(19793ed0) SHA1(2a3cb81726977b29c88d47c90d6e15a7e287c836) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
/* U70 = Empty */
ROM_LOAD( "092", 0x04000, 0x2000, CRC(a020eab5) SHA1(2f4f51f0eff8a042bf23d5f3ff42166db56e7822) )
ROM_LOAD( "069", 0x08000, 0x2000, CRC(79abb979) SHA1(dfff8ea4d13dd0db2836e75b6b57f5f3ddac0201) )
@ -1464,12 +1464,12 @@ ROM_START( upyoural )
ROM_LOAD( "uya-u9.bin", 0x1a000, 0x02000, CRC(6d74274e) SHA1(10bb04243eabeb8178884b4e0691c5e1765a1dc4) )
ROM_CONTINUE( 0x26000, 0x02000 )
ROM_REGION( 0x0c000, "gfx1", 0 )
ROM_REGION( 0x0c000, "bg_gfx", 0 )
ROM_LOAD( "uya-u93.bin", 0x00000, 0x04000, CRC(e8addd70) SHA1(6fd6a09fbdbe866440c3205b103e4bede7e4b2d5) )
ROM_LOAD( "uya-u94.bin", 0x04000, 0x04000, CRC(3fd3be09) SHA1(abdafbf9472fe3320be1a3effd13407dadf66709) )
ROM_LOAD( "uya-u95.bin", 0x08000, 0x04000, CRC(37088dd1) SHA1(35e4a3b338baceae2e4b8ac6d95691af49ebc3c1) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
/* U70 = Empty */
ROM_LOAD( "uya-u92.bin", 0x04000, 0x2000, CRC(a020eab5) SHA1(2f4f51f0eff8a042bf23d5f3ff42166db56e7822) )
ROM_LOAD( "uya-u69.bin", 0x08000, 0x2000, CRC(79abb979) SHA1(dfff8ea4d13dd0db2836e75b6b57f5f3ddac0201) )
@ -1502,12 +1502,12 @@ ROM_START( dangerz )
ROM_LOAD( "13821.8", 0x18000, 0x02000, CRC(92f3e006) SHA1(134a2412ddc700473b70aec6331b1a65db3c7e29) )
ROM_CONTINUE( 0x24000, 0x02000 )
ROM_REGION( 0x0c000, "gfx1", 0 )
ROM_REGION( 0x0c000, "bg_gfx", 0 )
ROM_LOAD( "13801.93", 0x00000, 0x04000, CRC(f9ff55ec) SHA1(2eab55b3708def97f22a1f13d1faa0bfe19c18e9) )
ROM_LOAD( "13802.94", 0x04000, 0x04000, CRC(d4adbcbb) SHA1(dfd427d5a0db309cc7e056857c3b63a1b6e7769b) )
ROM_LOAD( "13803.95", 0x08000, 0x04000, CRC(9178ed76) SHA1(f05568eea53c38f46b16217e63b73194d3a3c500) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_LOAD( "13809.70", 0x00000, 0x4000, CRC(e44eb9f5) SHA1(f15e4262eb96989cbd13a4cbf0b4a0ab390005aa) )
ROM_LOAD( "13804.92", 0x04000, 0x4000, CRC(6c23f1a5) SHA1(0de32ba7b5796bfe37b142fb892beb223f27c381) )
ROM_LOAD( "13805.69", 0x08000, 0x4000, CRC(e9c9f38b) SHA1(6a03cf9ab4d06f05d4fb846f14eab22467c79661) )
@ -1566,12 +1566,12 @@ ROM_START( basebal2 )
ROM_LOAD( "03-14106-01.u9", 0x1a000, 0x02000, CRC(b9656baa) SHA1(41b25ee6127981b703859c07f730e94f5694faff) )
ROM_CONTINUE( 0x26000, 0x02000 )
ROM_REGION( 0x0c000, "gfx1", 0 )
ROM_REGION( 0x0c000, "bg_gfx", 0 )
ROM_LOAD( "03-14112-00.u93", 0x00000, 0x04000, CRC(8ccb1404) SHA1(28ef5a7da1b9edf7ecbba0fd473599df5d181602) )
ROM_LOAD( "03-14113-00.u94", 0x04000, 0x04000, CRC(9941a55b) SHA1(6917b70bb2a7a23c0517fde43e9375a7dbd64c18) )
ROM_LOAD( "03-14114-00.u95", 0x08000, 0x04000, CRC(b68baf47) SHA1(ea1d5efe696af56ef5b9161c00957b2a9c7ce372) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
/* U70 = Empty */
ROM_LOAD( "03-14111-01.u92", 0x04000, 0x4000, CRC(2508a9ad) SHA1(f0a56d1b8dbe57b16dc1b3d21980149bbdcd0068) )
ROM_LOAD( "03-14109-00.u69", 0x08000, 0x4000, CRC(b123a28e) SHA1(8d244db422aee9117e901e7d150cdefcbf96dd53) )
@ -1624,12 +1624,12 @@ ROM_START( dblplay )
ROM_LOAD( "15006-01.u09", 0x1a000, 0x02000, CRC(ab3aac49) SHA1(699a6a66e6b35f1b287ff1ab3a12365dbdc16041) )
ROM_CONTINUE( 0x26000, 0x02000 )
ROM_REGION( 0x0c000, "gfx1", 0 )
ROM_REGION( 0x0c000, "bg_gfx", 0 )
ROM_LOAD( "15015-01.u93", 0x00000, 0x04000, CRC(8ccb1404) SHA1(28ef5a7da1b9edf7ecbba0fd473599df5d181602) )
ROM_LOAD( "15016-01.u94", 0x04000, 0x04000, CRC(9941a55b) SHA1(6917b70bb2a7a23c0517fde43e9375a7dbd64c18) )
ROM_LOAD( "15017-01.u95", 0x08000, 0x04000, CRC(b68baf47) SHA1(ea1d5efe696af56ef5b9161c00957b2a9c7ce372) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
/* U70 = Empty */
ROM_LOAD( "15014-01.u92", 0x04000, 0x4000, CRC(2508a9ad) SHA1(f0a56d1b8dbe57b16dc1b3d21980149bbdcd0068) )
ROM_LOAD( "15009-01.u69", 0x08000, 0x4000, CRC(b123a28e) SHA1(8d244db422aee9117e901e7d150cdefcbf96dd53) )
@ -1690,12 +1690,12 @@ ROM_START( strkzone )
ROM_LOAD( "strkzone.u9", 0x1a000, 0x02000, CRC(ab3aac49) SHA1(699a6a66e6b35f1b287ff1ab3a12365dbdc16041) )
ROM_CONTINUE( 0x26000, 0x02000 )
ROM_REGION( 0x0c000, "gfx1", 0 )
ROM_REGION( 0x0c000, "bg_gfx", 0 )
ROM_LOAD( "strkzone.u93", 0x00000, 0x04000, CRC(8ccb1404) SHA1(28ef5a7da1b9edf7ecbba0fd473599df5d181602) )
ROM_LOAD( "strkzone.u94", 0x04000, 0x04000, CRC(9941a55b) SHA1(6917b70bb2a7a23c0517fde43e9375a7dbd64c18) )
ROM_LOAD( "strkzone.u95", 0x08000, 0x04000, CRC(b68baf47) SHA1(ea1d5efe696af56ef5b9161c00957b2a9c7ce372) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
/* U70 = Empty */
ROM_LOAD( "strkzone.u92", 0x04000, 0x4000, CRC(2508a9ad) SHA1(f0a56d1b8dbe57b16dc1b3d21980149bbdcd0068) )
ROM_LOAD( "strkzone.u69", 0x08000, 0x4000, CRC(b123a28e) SHA1(8d244db422aee9117e901e7d150cdefcbf96dd53) )
@ -1742,12 +1742,12 @@ ROM_START( redlin2p )
ROM_LOAD16_BYTE( "u17t", 0x0e0001, 0x10000, CRC(8d26f221) SHA1(cd5b1d88fec0ff1ab7af554a9fcffc43d33a12e7) )
ROM_LOAD16_BYTE( "u28t", 0x0e0000, 0x10000, CRC(7aa21b2c) SHA1(5fd9f49d4bb1dc28393b9df76dfa19e28677639b) )
ROM_REGION( 0x0c000, "gfx1", 0 )
ROM_REGION( 0x0c000, "bg_gfx", 0 )
ROM_LOAD( "02-13930-01.u93", 0x00000, 0x04000, CRC(0721f42e) SHA1(fe3d447316b1e6c7c1b6849319fad1aebe5e6aa1) )
ROM_LOAD( "02-13929-01.u94", 0x04000, 0x04000, CRC(1522e7b2) SHA1(540fc55013a22a5afb32a89b42ef9b11dbe36d97) )
ROM_LOAD( "02-13928-01.u95", 0x08000, 0x04000, CRC(c321b5d1) SHA1(d1524165e71fe200cab6fd6f6327da0e6efc6868) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_LOAD( "02-13920-01.u70", 0x00000, 0x4000, CRC(f343d34a) SHA1(161348e082afeb69862c3752f4dd536166edad21) )
ROM_LOAD( "02-13921-01.u92", 0x04000, 0x4000, CRC(c9ba8d41) SHA1(777a504e3ffe6c3da94f71eb1b14e05dc861db66) )
ROM_LOAD( "02-13922-01.u69", 0x08000, 0x4000, CRC(276cfba0) SHA1(4b252f21e2d1314801cf9329ed9383ff9158c382) )
@ -1802,12 +1802,12 @@ ROM_START( quarterb )
ROM_LOAD16_BYTE( "03-15220-02.u43t", 0x0e0001, 0x10000, CRC(48a8a018) SHA1(f50d66feeab32f1edc47f4b3f33e579c06fd979e) )
ROM_LOAD16_BYTE( "03-15223-02.u60t", 0x0e0000, 0x10000, CRC(6a299766) SHA1(4e5b1f930f668302496a314bbe8876a21012fb20) )
ROM_REGION( 0x0c000, "gfx1", 0 )
ROM_REGION( 0x0c000, "bg_gfx", 0 )
ROM_LOAD( "03-15215-01.u93", 0x00000, 0x04000, CRC(4fb678d7) SHA1(ca729ca8d2ba1e22a7b650ddfc330e85e294e48f) )
ROM_LOAD( "03-15216-01.u94", 0x04000, 0x04000, CRC(7b57a44c) SHA1(b28ecdc8b1579e677a58a4b5257d5d754783148f) )
ROM_LOAD( "03-15217-01.u95", 0x08000, 0x04000, CRC(29bc33fd) SHA1(e85d20b24144c5b0f6ffa6dc96f1abb35bce437a) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_LOAD( "03-15210-01.u70", 0x00000, 0x4000, CRC(a5aea20e) SHA1(c5b40bdb63cd29386f73e69b814c37eb43dadbac) )
ROM_LOAD( "03-15214-01.u92", 0x04000, 0x4000, CRC(36f261ca) SHA1(d42868c9ace5bec75b74268393755340ccafea59) )
ROM_LOAD( "03-15209-01.u69", 0x08000, 0x4000, CRC(0f5d74a4) SHA1(76bd78153a5f986ffdd0db606a1e2a0b895b4832) )
@ -1849,12 +1849,12 @@ ROM_START( quarterba )
ROM_LOAD16_BYTE( "03-15220-01.u43t", 0x0e0001, 0x10000, CRC(ccb6c8d7) SHA1(bafe1ba6259f396cfa91fc6d2ff7832199763f3e) )
ROM_LOAD16_BYTE( "03-15223-01.u60t", 0x0e0000, 0x10000, CRC(c0ee425d) SHA1(4edbd62b8bb7f814e7ffa3111e6fb1e8b6615ae8) )
ROM_REGION( 0x0c000, "gfx1", 0 )
ROM_REGION( 0x0c000, "bg_gfx", 0 )
ROM_LOAD( "03-15215-01.u93", 0x00000, 0x04000, CRC(4fb678d7) SHA1(ca729ca8d2ba1e22a7b650ddfc330e85e294e48f) )
ROM_LOAD( "03-15216-01.u94", 0x04000, 0x04000, CRC(7b57a44c) SHA1(b28ecdc8b1579e677a58a4b5257d5d754783148f) )
ROM_LOAD( "03-15217-01.u95", 0x08000, 0x04000, CRC(29bc33fd) SHA1(e85d20b24144c5b0f6ffa6dc96f1abb35bce437a) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_LOAD( "03-15210-01.u70", 0x00000, 0x4000, CRC(a5aea20e) SHA1(c5b40bdb63cd29386f73e69b814c37eb43dadbac) )
ROM_LOAD( "03-15214-01.u92", 0x04000, 0x4000, CRC(36f261ca) SHA1(d42868c9ace5bec75b74268393755340ccafea59) )
ROM_LOAD( "03-15209-01.u69", 0x08000, 0x4000, CRC(0f5d74a4) SHA1(76bd78153a5f986ffdd0db606a1e2a0b895b4832) )
@ -1904,12 +1904,12 @@ ROM_START( quarterbc )
ROM_LOAD16_BYTE( "03-15220-02.u43t", 0x0e0001, 0x10000, CRC(48a8a018) SHA1(f50d66feeab32f1edc47f4b3f33e579c06fd979e) )
ROM_LOAD16_BYTE( "03-15223-02.u60t", 0x0e0000, 0x10000, CRC(6a299766) SHA1(4e5b1f930f668302496a314bbe8876a21012fb20) )
ROM_REGION( 0x0c000, "gfx1", 0 )
ROM_REGION( 0x0c000, "bg_gfx", 0 )
ROM_LOAD( "03-15502-01.u93", 0x00000, 0x04000, CRC(5c2abd20) SHA1(a67457249d9c3bb18c4f572b5c2ebaa62b72bc0d) )
ROM_LOAD( "03-15503-01.u94", 0x04000, 0x04000, CRC(544a192c) SHA1(cc7dc0af60a5d578bc80591c6e0e1b9fcb940fd7) )
ROM_LOAD( "03-15504-01.u95", 0x08000, 0x04000, CRC(c8bb7ab4) SHA1(bef121653e61173896b9f5f4b80d4b5b38ec1ec6) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_LOAD( "03-15500-01.u70", 0x00000, 0x4000, CRC(1cf82a44) SHA1(e719e04ebacf5a959b577592884963da60722076) )
ROM_LOAD( "03-15501-01.u92", 0x04000, 0x4000, CRC(281be799) SHA1(ea3097d5ad5a7b1115c97865da4e81efca60ea32) )
ROM_LOAD( "03-15209-01.u69", 0x08000, 0x4000, CRC(0f5d74a4) SHA1(76bd78153a5f986ffdd0db606a1e2a0b895b4832) )
@ -1943,12 +1943,12 @@ ROM_START( viper )
ROM_LOAD16_BYTE( "15618-02.u43t", 0x0e0001, 0x10000, CRC(5562e0c3) SHA1(4c7b0cedc5adc4e24a1cd6010591205ddb16d554) )
ROM_LOAD16_BYTE( "15621-02.u60t", 0x0e0000, 0x10000, CRC(cb468f2b) SHA1(f37596c781b1d7c49d8f62d289c15a2ae0d752cc) )
ROM_REGION( 0x0c000, "gfx1", 0 )
ROM_REGION( 0x0c000, "bg_gfx", 0 )
ROM_LOAD( "15609-01.u93", 0x00000, 0x04000, CRC(08ad92e9) SHA1(6eaffd58f03db3a67871ce7390b01754842e2574) )
ROM_LOAD( "15610-01.u94", 0x04000, 0x04000, CRC(d4e56dfb) SHA1(0fc83847b8629534b15f9366f197c87e3c81c61a) )
ROM_LOAD( "15611-01.u95", 0x08000, 0x04000, CRC(3a2c46fb) SHA1(e96849447852a9922e72f7f1908c76fea3c603c4) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_LOAD( "15604-01.u70", 0x00000, 0x4000, CRC(7e3b0cce) SHA1(d9002df27e3de28d40a9cfb081512526987377b2) )
ROM_LOAD( "15608-01.u92", 0x04000, 0x4000, CRC(a9bde0ef) SHA1(84f55bc62fc49ae0232ada2ac192c5c8a2519703) )
ROM_LOAD( "15603-01.u69", 0x08000, 0x4000, CRC(aecc9516) SHA1(513ae810d62d5df29a96a567a7c024f12c6837d5) )
@ -1993,12 +1993,12 @@ John Elway's Team Quarterback, the label format is:
ROM_LOAD16_BYTE( "03-15625-01.u27t", 0x0e0001, 0x10000, CRC(ac442523) SHA1(d05dcc413eb39b0938890ef80ec7b636773bb1a3) )
ROM_LOAD16_BYTE( "03-15622-01.u15t", 0x0e0000, 0x10000, CRC(9e84509a) SHA1(4c3a3e5192ba6c38d8391eedf817350795bddb8f) )
ROM_REGION( 0x0c000, "gfx1", 0 )
ROM_REGION( 0x0c000, "bg_gfx", 0 )
ROM_LOAD( "03-15615-01.u93", 0x00000, 0x04000, CRC(a7ea6a87) SHA1(5cfd9ed6a5ffc8e86d18b7d8496761b9086b6368) )
ROM_LOAD( "03-15616-01.u94", 0x04000, 0x04000, CRC(4a9b3900) SHA1(00398cc5056c999673604e414c9c0338d83b13d4) )
ROM_LOAD( "03-15617-01.u95", 0x08000, 0x04000, CRC(2cd95edb) SHA1(939ff97562535b05f427186b085a74a8fe5a332a) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_LOAD( "03-15611-01.u70", 0x00000, 0x4000, CRC(bf2695fb) SHA1(58a6d1e9e83912f7567eabdf54278db85061c284) )
ROM_LOAD( "03-15614-01.u92", 0x04000, 0x4000, CRC(c93fd870) SHA1(1086334496a4d1900a2d697cbd2575a77df89d65) )
ROM_LOAD( "03-15610-01.u69", 0x08000, 0x4000, CRC(3e5b786f) SHA1(13d2ab7b6a1182933272b597718d3e715b547a10) )
@ -2035,12 +2035,12 @@ ROM_START( teamqb2 )
ROM_LOAD16_BYTE( "03-15625-01.u27t", 0x0e0001, 0x10000, CRC(ac442523) SHA1(d05dcc413eb39b0938890ef80ec7b636773bb1a3) )
ROM_LOAD16_BYTE( "03-15622-01.u15t", 0x0e0000, 0x10000, CRC(9e84509a) SHA1(4c3a3e5192ba6c38d8391eedf817350795bddb8f) )
ROM_REGION( 0x0c000, "gfx1", 0 )
ROM_REGION( 0x0c000, "bg_gfx", 0 )
ROM_LOAD( "03-15615-01.u93", 0x00000, 0x04000, CRC(a7ea6a87) SHA1(5cfd9ed6a5ffc8e86d18b7d8496761b9086b6368) )
ROM_LOAD( "03-15616-01.u94", 0x04000, 0x04000, CRC(4a9b3900) SHA1(00398cc5056c999673604e414c9c0338d83b13d4) )
ROM_LOAD( "03-15617-01.u95", 0x08000, 0x04000, CRC(2cd95edb) SHA1(939ff97562535b05f427186b085a74a8fe5a332a) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_LOAD( "03-15611-01.u70", 0x00000, 0x4000, CRC(bf2695fb) SHA1(58a6d1e9e83912f7567eabdf54278db85061c284) )
ROM_LOAD( "03-15614-01.u92", 0x04000, 0x4000, CRC(c93fd870) SHA1(1086334496a4d1900a2d697cbd2575a77df89d65) )
ROM_LOAD( "03-15610-01.u69", 0x08000, 0x4000, CRC(3e5b786f) SHA1(13d2ab7b6a1182933272b597718d3e715b547a10) )
@ -2078,12 +2078,12 @@ ROM_START( aafb )
ROM_LOAD16_BYTE( "02-24021-01.u27", 0x0e0001, 0x10000, CRC(94081899) SHA1(289eb2f494d1110d169552e8898296e4a47fcb1d) )
ROM_LOAD16_BYTE( "02-24018-01.u15", 0x0e0000, 0x10000, CRC(76eb6077) SHA1(255731c63f4a846bb01d4203a786eb34a4734e66) )
ROM_REGION( 0x0c000, "gfx1", 0 )
ROM_REGION( 0x0c000, "bg_gfx", 0 )
ROM_LOAD( "03-28008.u93", 0x00000, 0x04000, CRC(68f8addc) SHA1(a52c408e2e9022f96fb766065d7266deb0df2e5f) )
ROM_LOAD( "03-28009.u94", 0x04000, 0x04000, CRC(669791ac) SHA1(e8b7bdec313ea9d40f89f13499a31f0b125951a8) )
ROM_LOAD( "03-28010.u95", 0x08000, 0x04000, CRC(bd62aa8a) SHA1(c8a177a11ec94671bb3bd5883b40692495c049a2) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_LOAD( "03-28005.u70", 0x00000, 0x4000, CRC(5ca6f4e2) SHA1(76c86d432fac27d0b30f38e12d340b013baf0dd4) )
ROM_LOAD( "03-28007.u92", 0x04000, 0x4000, CRC(1d9e33c2) SHA1(0b05d1dc20eb9dd803056113265ac6a43291711b) )
ROM_LOAD( "03-28004.u69", 0x08000, 0x4000, CRC(d4b8a471) SHA1(a9940f749a756409da303c1ebbd2382f635e9a3f) )
@ -2128,12 +2128,12 @@ ROM_START( aafbb )
ROM_LOAD16_BYTE( "02-24021-01.u27", 0x0e0001, 0x10000, CRC(94081899) SHA1(289eb2f494d1110d169552e8898296e4a47fcb1d) )
ROM_LOAD16_BYTE( "02-24018-01.u15", 0x0e0000, 0x10000, CRC(76eb6077) SHA1(255731c63f4a846bb01d4203a786eb34a4734e66) )
ROM_REGION( 0x18000, "gfx1", 0 )
ROM_REGION( 0x18000, "bg_gfx", 0 )
ROM_LOAD( "02-24011-02.u93", 0x00000, 0x08000, CRC(71f4425b) SHA1(074c79d709bf9e927f538932ef05b13e5e649197) )
ROM_LOAD( "02-24012-02.u94", 0x08000, 0x08000, CRC(b2499547) SHA1(cf5979e56cc307133cbdbfdba448cdf3087eaf8c) )
ROM_LOAD( "02-24013-02.u95", 0x10000, 0x08000, CRC(0a604e0d) SHA1(08917c3e9fb408b8e128fe2e3617c8c17d964d66) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_LOAD( "02-24007-01.u70", 0x00000, 0x4000, CRC(40e46aa4) SHA1(e8a27c9007218906683eac29affdd748f64cc6e6) )
ROM_LOAD( "02-24010-01.u92", 0x04000, 0x4000, CRC(78705f42) SHA1(4b941df0690a8ce4e390b0488a7ce7e083f52ff3) )
ROM_LOAD( "02-24006-01.u69", 0x08000, 0x4000, CRC(6a576aa9) SHA1(8849929c66012de6d2d8c1b4faefe71f11133aac) )
@ -2170,12 +2170,12 @@ ROM_START( aafbc )
ROM_LOAD16_BYTE( "02-24021-01.u27", 0x0e0001, 0x10000, CRC(94081899) SHA1(289eb2f494d1110d169552e8898296e4a47fcb1d) )
ROM_LOAD16_BYTE( "02-24018-01.u15", 0x0e0000, 0x10000, CRC(76eb6077) SHA1(255731c63f4a846bb01d4203a786eb34a4734e66) )
ROM_REGION( 0x18000, "gfx1", 0 )
ROM_REGION( 0x18000, "bg_gfx", 0 )
ROM_LOAD( "02-24011-02.u93", 0x00000, 0x08000, CRC(71f4425b) SHA1(074c79d709bf9e927f538932ef05b13e5e649197) )
ROM_LOAD( "02-24012-02.u94", 0x08000, 0x08000, CRC(b2499547) SHA1(cf5979e56cc307133cbdbfdba448cdf3087eaf8c) )
ROM_LOAD( "02-24013-02.u95", 0x10000, 0x08000, CRC(0a604e0d) SHA1(08917c3e9fb408b8e128fe2e3617c8c17d964d66) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_LOAD( "02-24007-01.u70", 0x00000, 0x4000, CRC(40e46aa4) SHA1(e8a27c9007218906683eac29affdd748f64cc6e6) )
ROM_LOAD( "02-24010-01.u92", 0x04000, 0x4000, CRC(78705f42) SHA1(4b941df0690a8ce4e390b0488a7ce7e083f52ff3) )
ROM_LOAD( "02-24006-01.u69", 0x08000, 0x4000, CRC(6a576aa9) SHA1(8849929c66012de6d2d8c1b4faefe71f11133aac) )
@ -2212,12 +2212,12 @@ ROM_START( aafbd2p )
ROM_LOAD16_BYTE( "02-24021-01.u27", 0x0e0001, 0x10000, CRC(94081899) SHA1(289eb2f494d1110d169552e8898296e4a47fcb1d) )
ROM_LOAD16_BYTE( "02-24018-01.u15", 0x0e0000, 0x10000, CRC(76eb6077) SHA1(255731c63f4a846bb01d4203a786eb34a4734e66) )
ROM_REGION( 0x18000, "gfx1", 0 )
ROM_REGION( 0x18000, "bg_gfx", 0 )
ROM_LOAD( "02-24011-02.u93", 0x00000, 0x08000, CRC(71f4425b) SHA1(074c79d709bf9e927f538932ef05b13e5e649197) )
ROM_LOAD( "02-24012-02.u94", 0x08000, 0x08000, CRC(b2499547) SHA1(cf5979e56cc307133cbdbfdba448cdf3087eaf8c) )
ROM_LOAD( "02-24013-02.u95", 0x10000, 0x08000, CRC(0a604e0d) SHA1(08917c3e9fb408b8e128fe2e3617c8c17d964d66) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_LOAD( "02-24007-01.u70", 0x00000, 0x4000, CRC(40e46aa4) SHA1(e8a27c9007218906683eac29affdd748f64cc6e6) )
ROM_LOAD( "02-24010-01.u92", 0x04000, 0x4000, CRC(78705f42) SHA1(4b941df0690a8ce4e390b0488a7ce7e083f52ff3) )
ROM_LOAD( "02-24006-01.u69", 0x08000, 0x4000, CRC(6a576aa9) SHA1(8849929c66012de6d2d8c1b4faefe71f11133aac) )
@ -2262,12 +2262,12 @@ ROM_START( offroad )
ROM_LOAD16_BYTE( "03-22118-03.u27t", 0x0e0001, 0x10000, CRC(806ccf8b) SHA1(7335a85fc84d5c2f7537548c3856c9cd2f267609) )
ROM_LOAD16_BYTE( "03-22115-03.u15t", 0x0e0000, 0x10000, CRC(c8439a7a) SHA1(9a8bb1fca8d3414dcfd4839bc0c4289e4d810943) )
ROM_REGION( 0x18000, "gfx1", 0 )
ROM_REGION( 0x18000, "bg_gfx", 0 )
ROM_LOAD( "03-22105-01.u93", 0x00000, 0x08000, CRC(4426e367) SHA1(298203112d724feb9a75a7bfc34b3dbb4d7fffe7) )
ROM_LOAD( "03-22106-02.u94", 0x08000, 0x08000, CRC(687dc1fc) SHA1(876c72561d942ebc5f3a148d3d3efdceb39c9e2e) )
ROM_LOAD( "03-22107-02.u95", 0x10000, 0x08000, CRC(cee6ee5f) SHA1(3f1c6e8d9eb9de207cabca7c9d6d8d633bd69681) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
/* 70 = empty */
ROM_LOAD( "03-22104-01.u92", 0x04000, 0x4000, CRC(03e0497d) SHA1(bffd870251d51cce262961b77f1953f360f9607b) )
ROM_LOAD( "03-22102-01.u69", 0x08000, 0x4000, CRC(c3f2e443) SHA1(82f22dabc99b3aaa94acaa303735a155ac13e592) )
@ -2312,12 +2312,12 @@ ROM_START( offroad3 )
ROM_LOAD16_BYTE( "03-22118-03.u27t", 0x0e0001, 0x10000, CRC(806ccf8b) SHA1(7335a85fc84d5c2f7537548c3856c9cd2f267609) )
ROM_LOAD16_BYTE( "03-22115-03.u15t", 0x0e0000, 0x10000, CRC(c8439a7a) SHA1(9a8bb1fca8d3414dcfd4839bc0c4289e4d810943) )
ROM_REGION( 0x18000, "gfx1", 0 )
ROM_REGION( 0x18000, "bg_gfx", 0 )
ROM_LOAD( "03-22105-01.u93", 0x00000, 0x08000, CRC(4426e367) SHA1(298203112d724feb9a75a7bfc34b3dbb4d7fffe7) )
ROM_LOAD( "03-22106-02.u94", 0x08000, 0x08000, CRC(687dc1fc) SHA1(876c72561d942ebc5f3a148d3d3efdceb39c9e2e) )
ROM_LOAD( "03-22107-02.u95", 0x10000, 0x08000, CRC(cee6ee5f) SHA1(3f1c6e8d9eb9de207cabca7c9d6d8d633bd69681) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
/* 70 = empty */
ROM_LOAD( "03-22104-01.u92", 0x04000, 0x4000, CRC(03e0497d) SHA1(bffd870251d51cce262961b77f1953f360f9607b) )
ROM_LOAD( "03-22102-01.u69", 0x08000, 0x4000, CRC(c3f2e443) SHA1(82f22dabc99b3aaa94acaa303735a155ac13e592) )
@ -2364,12 +2364,12 @@ ROM_START( offroadt )
ROM_LOAD16_BYTE( "03-25023-01.u27t", 0x0e0001, 0x10000, CRC(b80c5f99) SHA1(6b0657db870fb4e14e20cbd955655d0990dd7bda) )
ROM_LOAD16_BYTE( "03-25020-01.u15t", 0x0e0000, 0x10000, CRC(2a1a1c3c) SHA1(990328240a2dba7264bb5add5ea8cae2752327d9) )
ROM_REGION( 0x18000, "gfx1", 0 )
ROM_REGION( 0x18000, "bg_gfx", 0 )
ROM_LOAD( "ortpu93b.bin", 0x00000, 0x08000, CRC(f0c1d8b0) SHA1(aa6e53b56474fa97b17b60ef1123a28442482b80) )
ROM_LOAD( "ortpu94b.bin", 0x08000, 0x08000, CRC(7460d8c0) SHA1(9e3560056da89108c58b320125deeed0e009d0a8) )
ROM_LOAD( "ortpu95b.bin", 0x10000, 0x08000, CRC(081ee7a8) SHA1(2b884a8ed4173b64f7890edf9a6954c62b5ba012) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
/* 70 = empty */
ROM_LOAD( "ortpu92b.bin", 0x04000, 0x4000, CRC(f9988e28) SHA1(250071f4a26782266303331ddbef5479cc241220) )
ROM_LOAD( "ortpu69b.bin", 0x08000, 0x4000, CRC(fe5f8d8f) SHA1(5e520da33f30a594c8f37e8e214d0d257ba5c801) )
@ -2422,12 +2422,12 @@ ROM_START( offroadt2p )
ROM_LOAD16_BYTE( "03-25023-01.u27t", 0x0e0001, 0x10000, CRC(b80c5f99) SHA1(6b0657db870fb4e14e20cbd955655d0990dd7bda) )
ROM_LOAD16_BYTE( "03-25020-01.u15t", 0x0e0000, 0x10000, CRC(2a1a1c3c) SHA1(990328240a2dba7264bb5add5ea8cae2752327d9) )
ROM_REGION( 0x18000, "gfx1", 0 )
ROM_REGION( 0x18000, "bg_gfx", 0 )
ROM_LOAD( "ortpu93b.bin", 0x00000, 0x08000, CRC(f0c1d8b0) SHA1(aa6e53b56474fa97b17b60ef1123a28442482b80) )
ROM_LOAD( "ortpu94b.bin", 0x08000, 0x08000, CRC(7460d8c0) SHA1(9e3560056da89108c58b320125deeed0e009d0a8) )
ROM_LOAD( "ortpu95b.bin", 0x10000, 0x08000, CRC(081ee7a8) SHA1(2b884a8ed4173b64f7890edf9a6954c62b5ba012) )
ROM_REGION( 0x20000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x20000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
/* 70 = empty */
ROM_LOAD( "ortpu92b.bin", 0x04000, 0x4000, CRC(f9988e28) SHA1(250071f4a26782266303331ddbef5479cc241220) )
ROM_LOAD( "ortpu69b.bin", 0x08000, 0x4000, CRC(fe5f8d8f) SHA1(5e520da33f30a594c8f37e8e214d0d257ba5c801) )
@ -2474,12 +2474,12 @@ ROM_START( pigout )
ROM_LOAD16_BYTE( "03-29027-01.u27t", 0x0e0001, 0x10000, CRC(37a8156e) SHA1(a0b44b1ba6701daaa26576c6c892fd97ec82d5e3) )
ROM_LOAD16_BYTE( "03-29024-01.u15t", 0x0e0000, 0x10000, CRC(1c60d58b) SHA1(93f83a231d06cd958d3539a528e6ee6c2d9904ed) )
ROM_REGION( 0x18000, "gfx1", 0 )
ROM_REGION( 0x18000, "bg_gfx", 0 )
ROM_LOAD( "03-29016-01.u93", 0x000000, 0x08000, CRC(f102a04d) SHA1(3ecc0ab34a5d6e760679dc5fd7d32dd439f797d5) )
ROM_LOAD( "03-29017-01.u94", 0x008000, 0x08000, CRC(ec63c015) SHA1(10010a17ffda468dbe2940fae6aae49c56e1ad78) )
ROM_LOAD( "03-29018-01.u95", 0x010000, 0x08000, CRC(ba6e797e) SHA1(135f905b7663026a99fd9aca8e0247a72bf43cdb) )
ROM_REGION( 0x40000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x40000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_LOAD( "03-29011-01.u70", 0x00000, 0x4000, CRC(7db4eaa1) SHA1(e1ec186a8359b3302071e87577092008065c39de) )
ROM_LOAD( "03-29015-01.u92", 0x04000, 0x4000, CRC(20fa57bb) SHA1(7e94698a25c5459991f0e99a50e5e98f392cda41) )
ROM_LOAD( "03-29010-01.u69", 0x08000, 0x4000, CRC(a16886f3) SHA1(48a0cbbea80cc38cd4d5594d3367282690724c59) )
@ -2539,12 +2539,12 @@ ROM_START( pigouta )
ROM_LOAD16_BYTE( "03-29027-01.u27t", 0x0e0001, 0x10000, CRC(37a8156e) SHA1(a0b44b1ba6701daaa26576c6c892fd97ec82d5e3) )
ROM_LOAD16_BYTE( "03-29024-01.u15t", 0x0e0000, 0x10000, CRC(1c60d58b) SHA1(93f83a231d06cd958d3539a528e6ee6c2d9904ed) )
ROM_REGION( 0x18000, "gfx1", 0 )
ROM_REGION( 0x18000, "bg_gfx", 0 )
ROM_LOAD( "03-29016-01.u93", 0x000000, 0x08000, CRC(f102a04d) SHA1(3ecc0ab34a5d6e760679dc5fd7d32dd439f797d5) )
ROM_LOAD( "03-29017-01.u94", 0x008000, 0x08000, CRC(ec63c015) SHA1(10010a17ffda468dbe2940fae6aae49c56e1ad78) )
ROM_LOAD( "03-29018-01.u95", 0x010000, 0x08000, CRC(ba6e797e) SHA1(135f905b7663026a99fd9aca8e0247a72bf43cdb) )
ROM_REGION( 0x40000, "user1", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_REGION( 0x40000, "bg_prom", 0 ) /* Ordering: 70/92/69/91/68/90/67/89 */
ROM_LOAD( "03-29011-01.u70", 0x00000, 0x4000, CRC(7db4eaa1) SHA1(e1ec186a8359b3302071e87577092008065c39de) )
ROM_LOAD( "03-29015-01.u92", 0x04000, 0x4000, CRC(20fa57bb) SHA1(7e94698a25c5459991f0e99a50e5e98f392cda41) )
ROM_LOAD( "03-29010-01.u69", 0x08000, 0x4000, CRC(a16886f3) SHA1(48a0cbbea80cc38cd4d5594d3367282690724c59) )
@ -2607,7 +2607,7 @@ ROM_START( ataxx )
ROM_LOAD16_BYTE( "e-302-31002-01.u2", 0x60000, 0x20000, CRC(ca06a394) SHA1(0858908bd150dd7354536e10b2a386b45f17ac9f) )
ROM_RELOAD( 0xc0000, 0x20000 )
ROM_REGION( 0xc0000, "gfx1", 0 )
ROM_REGION( 0xc0000, "bg_gfx", 0 )
ROM_LOAD( "e-302-31006-01.u98", 0x00000, 0x20000, CRC(59d0f2ae) SHA1(8da5dc006e192af98458227e79421b6a07ac1cdc) )
ROM_LOAD( "e-302-31007-01.u99", 0x20000, 0x20000, CRC(6ab7db25) SHA1(25c2fa23b99ac4bab5a9b851c2087de44512a5c2) )
ROM_LOAD( "e-302-31008-01.u100", 0x40000, 0x20000, CRC(2352849e) SHA1(f49394b6efb6a87d86516ec0a5ddd582f96f7e5d) )
@ -2615,7 +2615,7 @@ ROM_START( ataxx )
ROM_LOAD( "e-302-31010-01.u102", 0x80000, 0x20000, CRC(a951228c) SHA1(7ec5cf4d0aa3702be9236d155bea373a06c0be03) )
ROM_LOAD( "e-302-31011-01.u103", 0xa0000, 0x20000, CRC(ed326164) SHA1(8706192f525ece200587cee7e7beb4a1975bf63e) )
ROM_REGION( 0x00001, "user1", ROMREGION_ERASEFF ) /* X-ROM (data used by main processor) */
ROM_REGION( 0x40000, "xrom", ROMREGION_ERASEFF ) /* X-ROM (data used by main processor) */
/* Empty / not used */
ROM_REGION16_BE( 0x100, "eeprom", 0 )
@ -2640,7 +2640,7 @@ ROM_START( ataxxa )
ROM_LOAD16_BYTE( "e-302-31002-01.u2", 0x60000, 0x20000, CRC(ca06a394) SHA1(0858908bd150dd7354536e10b2a386b45f17ac9f) )
ROM_RELOAD( 0xc0000, 0x20000 )
ROM_REGION( 0xc0000, "gfx1", 0 )
ROM_REGION( 0xc0000, "bg_gfx", 0 )
ROM_LOAD( "e-302-31006-01.u98", 0x00000, 0x20000, CRC(59d0f2ae) SHA1(8da5dc006e192af98458227e79421b6a07ac1cdc) )
ROM_LOAD( "e-302-31007-01.u99", 0x20000, 0x20000, CRC(6ab7db25) SHA1(25c2fa23b99ac4bab5a9b851c2087de44512a5c2) )
ROM_LOAD( "e-302-31008-01.u100", 0x40000, 0x20000, CRC(2352849e) SHA1(f49394b6efb6a87d86516ec0a5ddd582f96f7e5d) )
@ -2648,7 +2648,7 @@ ROM_START( ataxxa )
ROM_LOAD( "e-302-31010-01.u102", 0x80000, 0x20000, CRC(a951228c) SHA1(7ec5cf4d0aa3702be9236d155bea373a06c0be03) )
ROM_LOAD( "e-302-31011-01.u103", 0xa0000, 0x20000, CRC(ed326164) SHA1(8706192f525ece200587cee7e7beb4a1975bf63e) )
ROM_REGION( 0x00001, "user1", ROMREGION_ERASEFF ) /* X-ROM (data used by main processor) */
ROM_REGION( 0x40000, "xrom", ROMREGION_ERASEFF ) /* X-ROM (data used by main processor) */
/* Empty / not used */
ROM_REGION16_BE( 0x100, "eeprom", 0 )
@ -2673,7 +2673,7 @@ ROM_START( ataxxe )
ROM_LOAD16_BYTE( "302-38002-01.u2", 0x60000, 0x20000, CRC(1b63b882) SHA1(cb04e641fc173f787a0f48c98f5198db265c26d8) )
ROM_RELOAD( 0xc0000, 0x20000 )
ROM_REGION( 0xc0000, "gfx1", 0 )
ROM_REGION( 0xc0000, "bg_gfx", 0 )
ROM_LOAD( "e-302-31006-01.u98", 0x00000, 0x20000, CRC(59d0f2ae) SHA1(8da5dc006e192af98458227e79421b6a07ac1cdc) )
ROM_LOAD( "e-302-31007-01.u99", 0x20000, 0x20000, CRC(6ab7db25) SHA1(25c2fa23b99ac4bab5a9b851c2087de44512a5c2) )
ROM_LOAD( "e-302-31008-01.u100", 0x40000, 0x20000, CRC(2352849e) SHA1(f49394b6efb6a87d86516ec0a5ddd582f96f7e5d) )
@ -2681,7 +2681,7 @@ ROM_START( ataxxe )
ROM_LOAD( "e-302-31010-01.u102", 0x80000, 0x20000, CRC(a951228c) SHA1(7ec5cf4d0aa3702be9236d155bea373a06c0be03) )
ROM_LOAD( "e-302-31011-01.u103", 0xa0000, 0x20000, CRC(ed326164) SHA1(8706192f525ece200587cee7e7beb4a1975bf63e) )
ROM_REGION( 0x00001, "user1", ROMREGION_ERASEFF ) /* X-ROM (data used by main processor) */
ROM_REGION( 0x40000, "xrom", ROMREGION_ERASEFF ) /* X-ROM (data used by main processor) */
/* Empty / not used */
ROM_REGION16_BE( 0x100, "eeprom", 0 )
@ -2706,7 +2706,7 @@ ROM_START( ataxxj )
ROM_LOAD16_BYTE( "302-38002-01.u2", 0x60000, 0x20000, CRC(1b63b882) SHA1(cb04e641fc173f787a0f48c98f5198db265c26d8) )
ROM_RELOAD( 0xc0000, 0x20000 )
ROM_REGION( 0xc0000, "gfx1", 0 )
ROM_REGION( 0xc0000, "bg_gfx", 0 )
ROM_LOAD( "e-302-31006-01.u98", 0x00000, 0x20000, CRC(59d0f2ae) SHA1(8da5dc006e192af98458227e79421b6a07ac1cdc) )
ROM_LOAD( "e-302-31007-01.u99", 0x20000, 0x20000, CRC(6ab7db25) SHA1(25c2fa23b99ac4bab5a9b851c2087de44512a5c2) )
ROM_LOAD( "e-302-31008-01.u100", 0x40000, 0x20000, CRC(2352849e) SHA1(f49394b6efb6a87d86516ec0a5ddd582f96f7e5d) )
@ -2714,7 +2714,7 @@ ROM_START( ataxxj )
ROM_LOAD( "e-302-31010-01.u102", 0x80000, 0x20000, CRC(a951228c) SHA1(7ec5cf4d0aa3702be9236d155bea373a06c0be03) )
ROM_LOAD( "e-302-31011-01.u103", 0xa0000, 0x20000, CRC(ed326164) SHA1(8706192f525ece200587cee7e7beb4a1975bf63e) )
ROM_REGION( 0x00001, "user1", ROMREGION_ERASEFF ) /* X-ROM (data used by main processor) */
ROM_REGION( 0x40000, "xrom", ROMREGION_ERASEFF ) /* X-ROM (data used by main processor) */
/* Empty / not used */
ROM_REGION16_BE( 0x100, "eeprom", 0 )
@ -2754,7 +2754,7 @@ ROM_START( wsf )
ROM_LOAD16_BYTE( "e-302-30019-01.u5", 0x60000, 0x20000, CRC(2881f73b) SHA1(414d974018fb4518c46b913184b07add69251724) )
ROM_RELOAD( 0xc0000, 0x20000 )
ROM_REGION( 0x60000, "gfx1", 0 )
ROM_REGION( 0x60000, "bg_gfx", 0 )
ROM_LOAD( "e-302-30011-02.145", 0x00000, 0x10000, CRC(6153569b) SHA1(b6a106c8b87a9a3f01eff3854d0c1f2c4a64fd94) )
ROM_LOAD( "e-302-30012-02.146", 0x10000, 0x10000, CRC(52d65e21) SHA1(25f63aa29dc7e7673043e1f43e357a5232a1be9e) )
ROM_LOAD( "e-302-30013-02.147", 0x20000, 0x10000, CRC(b3afda12) SHA1(52bf780c642f0092114aeb994e6571c034f198a0) )
@ -2762,7 +2762,7 @@ ROM_START( wsf )
ROM_LOAD( "e-302-30015-01.149", 0x40000, 0x10000, CRC(5d9064f2) SHA1(7a68a379aa6a6cd0518e8a4107b2e646f5700c2b) )
ROM_LOAD( "e-302-30016-01.150", 0x50000, 0x10000, CRC(d76389cd) SHA1(2b7e6cd662ffde177b110ad0ed2e42fe4ccf811f) )
ROM_REGION( 0x20000, "user1", 0 ) /* X-ROM (data used by main processor) */
ROM_REGION( 0x20000, "xrom", 0 ) /* X-ROM (data used by main processor) */
ROM_LOAD( "e-302-30009-01.u68", 0x00000, 0x10000, CRC(f2fbfc15) SHA1(712cfa7b11135b1f568f38cc478ef5a3330d0608) )
ROM_LOAD( "e-302-30010-01.u69", 0x10000, 0x10000, CRC(b4ed2d3b) SHA1(61c9d86b63cf000187a105c6eed967fecb2f3c1c) )
@ -2810,7 +2810,7 @@ ROM_START( indyheat )
ROM_LOAD16_BYTE( "e-302-33023-01.u5", 0x60000, 0x20000, CRC(198285d4) SHA1(8f6b3cba2bc729f2e0623578b13720ead91333e4) )
ROM_RELOAD( 0xc0000, 0x20000 )
ROM_REGION( 0xc0000, "gfx1", 0 )
ROM_REGION( 0xc0000, "bg_gfx", 0 )
ROM_LOAD( "e-302-33001-01.u145", 0x00000, 0x20000, CRC(612d4bf8) SHA1(035cc8723524e2c6aa79ffa7d7c1f6fb0a25cc51) )
ROM_LOAD( "e-302-33002-01.u146", 0x20000, 0x20000, CRC(77a725f6) SHA1(9bb521ed7202387bbf2670f9b1ae3cbe5064ae03) )
ROM_LOAD( "e-302-33003-01.u147", 0x40000, 0x20000, CRC(d6aac372) SHA1(49f5f5d6c2a82ea15905086a2f8e3ea061d37dfc) )
@ -2818,7 +2818,7 @@ ROM_START( indyheat )
ROM_LOAD( "e-302-33005-01.u149", 0x80000, 0x20000, CRC(29056791) SHA1(343452b883f139eb09da6b5f384aa680d3a2218c) )
ROM_LOAD( "e-302-33006-01.u150", 0xa0000, 0x20000, CRC(cb73dd6a) SHA1(60aabedbab409acaf8ba4f2366125290825971a4) )
ROM_REGION( 0x40000, "user1", 0 ) /* X-ROM (data used by main processor) */
ROM_REGION( 0x40000, "xrom", 0 ) /* X-ROM (data used by main processor) */
ROM_LOAD( "e-302-33015-01.u68", 0x00000, 0x10000, CRC(9e88efb3) SHA1(983bc22c9401b9d6c959dd211b6b7dfa1a6c14e2) )
ROM_CONTINUE( 0x20000, 0x10000 )
ROM_LOAD( "e-302-33016-01.u69", 0x10000, 0x10000, CRC(aa39fcb3) SHA1(0cb328d784cda3e0dff3a018f52f9b06bc5d46b8) )
@ -2859,7 +2859,7 @@ ROM_START( brutforc )
ROM_LOAD16_BYTE( "u5", 0x60000, 0x20000, CRC(cbdb914b) SHA1(813640fa291c1245d04a628ee62afc95d5c67a03) )
ROM_RELOAD( 0xc0000, 0x20000 )
ROM_REGION( 0x180000, "gfx1", 0 )
ROM_REGION( 0x180000, "bg_gfx", 0 )
ROM_LOAD( "u145", 0x000000, 0x40000, CRC(c3d20d24) SHA1(a75217b0d1887c64bf5570ff7a461c8cf47c5e85) )
ROM_LOAD( "u146", 0x040000, 0x40000, CRC(43e9dd87) SHA1(0694803a5b33c074858770c7e4cd884402c263f8) )
ROM_LOAD( "u147", 0x080000, 0x40000, CRC(fb855ce8) SHA1(839bca2d8e344d43fad8978b812c9246a89054a8) )
@ -2867,7 +2867,7 @@ ROM_START( brutforc )
ROM_LOAD( "u149", 0x100000, 0x40000, CRC(cf48401c) SHA1(70ba8f2d5f81795c26c2a552c29c913c5d3bd784) )
ROM_LOAD( "u150", 0x140000, 0x40000, CRC(ca9e1e33) SHA1(f9889042b536e1fb5521702bc807d5aa0e6a25d1) )
ROM_REGION( 0x40000, "user1", 0 ) /* X-ROM (data used by main processor) */
ROM_REGION( 0x40000, "xrom", 0 ) /* X-ROM (data used by main processor) */
ROM_LOAD( "u68", 0x00000, 0x10000, CRC(77c8de62) SHA1(ae15f84b7bf3d6705edf9f41d8de7b6ecab2bcf9) )
ROM_CONTINUE( 0x20000, 0x10000 )
ROM_LOAD( "u69", 0x10000, 0x10000, CRC(113aa6d5) SHA1(d032a04338e12135ba410afd71cf9538e99eb109) )
@ -2916,7 +2916,7 @@ ROM_START( asylum )
ROM_LOAD16_BYTE( "asy-65.5", 0x60000, 0x20000, CRC(5814b307) SHA1(6db97804d58941a5543424d8c4658cb3edab1e43) )
ROM_RELOAD( 0xc0000, 0x20000 )
ROM_REGION( 0x180000, "gfx1", 0 )
ROM_REGION( 0x180000, "bg_gfx", 0 )
ROM_LOAD( "asy-chr0.145", 0x000000, 0x40000, CRC(4dbcae49) SHA1(0aa54daa099d6590a41df4a24a27bf6463b3e116) )
ROM_LOAD( "asy-chr1.146", 0x040000, 0x40000, CRC(34e7762d) SHA1(2d63971effc237846481bed7d829fa924b4bea31) )
ROM_LOAD( "asy-chr2.147", 0x080000, 0x40000, CRC(f9b0d375) SHA1(305172d8cdf390d9566c2c6f32d8da44b165022a) )
@ -2924,7 +2924,7 @@ ROM_START( asylum )
ROM_LOAD( "asy-chr4.149", 0x100000, 0x40000, CRC(dbc2b155) SHA1(ba0d90b5a6acc53ecd02317cb82b630451e9d0e9) )
ROM_LOAD( "asy-chr5.150", 0x140000, 0x40000, CRC(9675e44f) SHA1(d2633d21fa9e798b8f96d96fdce5bb99a7dc5ba5) )
ROM_REGION( 0x40000, "user1", 0 ) /* X-ROM (data used by main processor) */
ROM_REGION( 0x40000, "xrom", 0 ) /* X-ROM (data used by main processor) */
ROM_LOAD( "asy-m4.68", 0x00000, 0x10000, CRC(77c8de62) SHA1(ae15f84b7bf3d6705edf9f41d8de7b6ecab2bcf9) )
ROM_CONTINUE( 0x20000, 0x10000 )
ROM_LOAD( "asy-m5.69", 0x10000, 0x10000, CRC(bfc50d6c) SHA1(3239242358e8336354a9bd35f75f9057f079b298) )
@ -2963,9 +2963,9 @@ void leland_state::init_cerberus()
{
/* master CPU bankswitching */
m_update_master_bank = &leland_state::cerberus_bankswitch;
membank("bank1")->set_base(memregion("master")->base() + 0x2000);
membank("bank2")->set_base(memregion("master")->base() + 0xa000);
membank("bank3")->set_base(memregion("slave")->base() + 0x2000);
m_master_bankslot[0]->set_base(memregion("master")->base() + 0x2000);
m_master_bankslot[1]->set_base(memregion("master")->base() + 0xa000);
m_slave_bankslot->set_base(memregion("slave")->base() + 0x2000);
/* set up the master CPU I/O ports */
init_master_ports(0x40, 0x80);

View File

@ -31,42 +31,56 @@ class leland_state : public driver_device
{
public:
leland_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_master(*this, "master"),
m_slave(*this, "slave"),
m_mainram(*this, "mainram"),
m_eeprom(*this, "eeprom"),
m_sound(*this, "custom"),
m_dac0(*this, "dac0"),
m_dac1(*this, "dac1"),
m_ay8910(*this, "ay8910"),
m_ay8912(*this, "ay8912"),
m_screen(*this, "screen"),
m_palette(*this, "palette") { }
: driver_device(mconfig, type, tag)
, m_master(*this, "master")
, m_slave(*this, "slave")
, m_mainram(*this, "mainram")
, m_battery_ram(*this, "battery")
, m_eeprom(*this, "eeprom")
, m_sound(*this, "custom")
, m_dac(*this, "dac%u", 0U)
, m_ay8910(*this, "ay8910")
, m_ay8912(*this, "ay8912")
, m_screen(*this, "screen")
, m_gfxdecode(*this, "gfxdecode")
, m_palette(*this, "palette")
, m_master_base(*this, "master")
, m_slave_base(*this, "slave")
, m_bg_gfxrom(*this, "bg_gfx")
, m_bg_prom(*this, "bg_prom")
, m_xrom_base(*this, "xrom")
, m_master_bankslot(*this, "masterbank_%u", 0U)
, m_slave_bankslot(*this, "slavebank")
{ }
required_device<cpu_device> m_master;
required_device<cpu_device> m_slave;
required_shared_ptr<uint8_t> m_mainram;
required_shared_ptr<uint8_t> m_battery_ram;
required_device<eeprom_serial_93cxx_device> m_eeprom;
optional_device<leland_80186_sound_device> m_sound;
optional_device<dac_byte_interface> m_dac0;
optional_device<dac_byte_interface> m_dac1;
optional_device_array<dac_byte_interface, 2> m_dac;
optional_device<ay8910_device> m_ay8910;
optional_device<ay8912_device> m_ay8912;
required_device<screen_device> m_screen;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_region_ptr<uint8_t> m_master_base;
required_region_ptr<uint8_t> m_slave_base;
required_region_ptr<uint8_t> m_bg_gfxrom;
optional_region_ptr<uint8_t> m_bg_prom;
optional_region_ptr<uint8_t> m_xrom_base;
required_memory_bank_array<2> m_master_bankslot;
required_memory_bank m_slave_bankslot;
uint8_t m_dac_control;
uint8_t *m_alleymas_kludge_mem;
std::unique_ptr<uint8_t[]> m_ataxx_qram;
uint8_t m_gfx_control;
uint8_t m_wcol_enable;
emu_timer *m_master_int_timer;
uint8_t *m_master_base;
uint8_t *m_slave_base;
uint8_t *m_xrom_base;
uint32_t m_master_length;
uint32_t m_slave_length;
int m_dangerz_x;
int m_dangerz_y;
uint8_t m_analog_result;
@ -85,7 +99,6 @@ public:
uint32_t m_xrom1_addr;
uint32_t m_xrom2_addr;
uint8_t m_battery_ram_enable;
uint8_t *m_battery_ram;
std::unique_ptr<uint8_t[]> m_extra_tram;
std::unique_ptr<uint8_t[]> m_video_ram;
struct vram_state_data m_vram_state[2];
@ -180,8 +193,13 @@ public:
DECLARE_VIDEO_START(leland2);
DECLARE_VIDEO_START(ataxx);
uint32_t screen_update_leland(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_ataxx(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
tilemap_t *m_tilemap;
TILEMAP_MAPPER_MEMBER(leland_scan);
TILE_GET_INFO_MEMBER(leland_get_tile_info);
TILEMAP_MAPPER_MEMBER(ataxx_scan);
TILE_GET_INFO_MEMBER(ataxx_get_tile_info);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(leland_master_interrupt);
TIMER_CALLBACK_MEMBER(leland_interrupt_callback);
TIMER_CALLBACK_MEMBER(ataxx_interrupt_callback);

View File

@ -317,9 +317,6 @@ WRITE8_MEMBER(leland_state::indyheat_analog_w)
MACHINE_START_MEMBER(leland_state,leland)
{
/* allocate extra stuff */
m_battery_ram = reinterpret_cast<uint8_t *>(memshare("battery")->ptr());
/* start scanline interrupts going */
m_master_int_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(leland_state::leland_interrupt_callback),this));
@ -367,22 +364,17 @@ MACHINE_RESET_MEMBER(leland_state,leland)
m_alternate_bank = 0;
/* initialize the master banks */
m_master_length = memregion("master")->bytes();
m_master_base = memregion("master")->base();
(this->*m_update_master_bank)();
/* initialize the slave banks */
m_slave_length = memregion("slave")->bytes();
m_slave_base = memregion("slave")->base();
if (m_slave_length > 0x10000)
membank("bank3")->set_base(&m_slave_base[0x10000]);
if (m_slave_base.length() > 0x10000)
m_slave_bankslot->set_base(&m_slave_base[0x10000]);
}
MACHINE_START_MEMBER(leland_state,ataxx)
{
/* set the odd data banks */
m_battery_ram = reinterpret_cast<uint8_t *>(memshare("battery")->ptr());
m_extra_tram = std::make_unique<uint8_t[]>(ATAXX_EXTRA_TRAM_SIZE);
/* start scanline interrupts going */
@ -405,7 +397,6 @@ MACHINE_RESET_MEMBER(leland_state,ataxx)
m_master_int_timer->adjust(m_screen->time_until_pos(8), 8);
/* initialize the XROM */
m_xrom_base = memregion("user1")->base();
m_xrom1_addr = 0;
m_xrom2_addr = 0;
@ -419,15 +410,11 @@ MACHINE_RESET_MEMBER(leland_state,ataxx)
m_master_bank = 0;
/* initialize the master banks */
m_master_length = memregion("master")->bytes();
m_master_base = memregion("master")->base();
ataxx_bankswitch();
/* initialize the slave banks */
m_slave_length = memregion("slave")->bytes();
m_slave_base = memregion("slave")->base();
if (m_slave_length > 0x10000)
membank("bank3")->set_base(&m_slave_base[0x10000]);
if (m_slave_base.length() > 0x10000)
m_slave_bankslot->set_base(&m_slave_base[0x10000]);
}
@ -511,10 +498,10 @@ void leland_state::mayhem_bankswitch()
m_battery_ram_enable = ((m_sound_port_bank & 0x24) == 0);
address = (!(m_sound_port_bank & 0x04)) ? &m_master_base[0x10000] : &m_master_base[0x1c000];
membank("bank1")->set_base(address);
m_master_bankslot[0]->set_base(address);
address = m_battery_ram_enable ? m_battery_ram : &address[0x8000];
membank("bank2")->set_base(address);
m_master_bankslot[1]->set_base(address);
}
@ -526,10 +513,10 @@ void leland_state::dangerz_bankswitch()
m_battery_ram_enable = ((m_top_board_bank & 0x80) != 0);
address = (!(m_alternate_bank & 1)) ? &m_master_base[0x02000] : &m_master_base[0x12000];
membank("bank1")->set_base(address);
m_master_bankslot[0]->set_base(address);
address = m_battery_ram_enable ? m_battery_ram : &address[0x8000];
membank("bank2")->set_base(address);
m_master_bankslot[1]->set_base(address);
}
@ -544,10 +531,10 @@ void leland_state::basebal2_bankswitch()
address = (!(m_sound_port_bank & 0x04)) ? &m_master_base[0x10000] : &m_master_base[0x1c000];
else
address = (!(m_top_board_bank & 0x40)) ? &m_master_base[0x28000] : &m_master_base[0x30000];
membank("bank1")->set_base(address);
m_master_bankslot[0]->set_base(address);
address = m_battery_ram_enable ? m_battery_ram : &address[0x8000];
membank("bank2")->set_base(address);
m_master_bankslot[1]->set_base(address);
}
@ -560,10 +547,10 @@ void leland_state::redline_bankswitch()
m_battery_ram_enable = ((m_alternate_bank & 3) == 1);
address = &m_master_base[bank_list[m_alternate_bank & 3]];
membank("bank1")->set_base(address);
m_master_bankslot[0]->set_base(address);
address = m_battery_ram_enable ? m_battery_ram : &m_master_base[0xa000];
membank("bank2")->set_base(address);
m_master_bankslot[1]->set_base(address);
}
@ -576,15 +563,15 @@ void leland_state::viper_bankswitch()
m_battery_ram_enable = ((m_alternate_bank & 0x04) != 0);
address = &m_master_base[bank_list[m_alternate_bank & 3]];
if (bank_list[m_alternate_bank & 3] >= m_master_length)
if (bank_list[m_alternate_bank & 3] >= m_master_base.length())
{
logerror("%s:Master bank %02X out of range!\n", machine().describe_context(), m_alternate_bank & 3);
address = &m_master_base[bank_list[0]];
}
membank("bank1")->set_base(address);
m_master_bankslot[0]->set_base(address);
address = m_battery_ram_enable ? m_battery_ram : &m_master_base[0xa000];
membank("bank2")->set_base(address);
m_master_bankslot[1]->set_base(address);
}
@ -597,15 +584,15 @@ void leland_state::offroad_bankswitch()
m_battery_ram_enable = ((m_alternate_bank & 7) == 1);
address = &m_master_base[bank_list[m_alternate_bank & 7]];
if (bank_list[m_alternate_bank & 7] >= m_master_length)
if (bank_list[m_alternate_bank & 7] >= m_master_base.length())
{
logerror("%s:Master bank %02X out of range!\n", machine().describe_context(), m_alternate_bank & 7);
address = &m_master_base[bank_list[0]];
}
membank("bank1")->set_base(address);
m_master_bankslot[0]->set_base(address);
address = m_battery_ram_enable ? m_battery_ram : &m_master_base[0xa000];
membank("bank2")->set_base(address);
m_master_bankslot[1]->set_base(address);
}
@ -622,12 +609,12 @@ void leland_state::ataxx_bankswitch()
m_battery_ram_enable = ((m_master_bank & 0x30) == 0x10);
address = &m_master_base[bank_list[m_master_bank & 15]];
if (bank_list[m_master_bank & 15] >= m_master_length)
if (bank_list[m_master_bank & 15] >= m_master_base.length())
{
logerror("%s:Master bank %02X out of range!\n", machine().describe_context(), m_master_bank & 15);
address = &m_master_base[bank_list[0]];
}
membank("bank1")->set_base(address);
m_master_bankslot[0]->set_base(address);
if (m_battery_ram_enable)
address = m_battery_ram;
@ -635,7 +622,7 @@ void leland_state::ataxx_bankswitch()
address = &m_ataxx_qram[(m_master_bank & 0xc0) << 8];
else
address = &m_master_base[0xa000];
membank("bank2")->set_base(address);
m_master_bankslot[1]->set_base(address);
m_wcol_enable = ((m_master_bank & 0x30) == 0x30);
}
@ -878,7 +865,10 @@ WRITE8_MEMBER(leland_state::ataxx_battery_ram_w)
m_battery_ram[offset] = data;
}
else if ((m_master_bank & 0x30) == 0x20)
m_ataxx_qram[((m_master_bank & 0xc0) << 8) + offset] = data;
{
m_ataxx_qram[((m_master_bank & 0xc0) << 8) | offset] = data;
m_tilemap->mark_tile_dirty(((m_master_bank & 0x80) << 8) | offset);
}
else
logerror("%04X:BatteryW@%04X (invalid!)\n", m_master->pc(), offset);
}
@ -1355,12 +1345,12 @@ WRITE8_MEMBER(leland_state::leland_slave_small_banksw_w)
{
int bankaddress = 0x10000 + 0xc000 * (data & 1);
if (bankaddress >= m_slave_length)
if (bankaddress >= m_slave_base.length())
{
logerror("%04X:Slave bank %02X out of range!", m_slave->pc(), data & 1);
bankaddress = 0x10000;
}
membank("bank3")->set_base(&m_slave_base[bankaddress]);
m_slave_bankslot->set_base(&m_slave_base[bankaddress]);
if (LOG_BANKSWITCHING_S) logerror("%04X:Slave bank = %02X (%05X)\n", m_slave->pc(), data & 1, bankaddress);
}
@ -1370,12 +1360,12 @@ WRITE8_MEMBER(leland_state::leland_slave_large_banksw_w)
{
int bankaddress = 0x10000 + 0x8000 * (data & 15);
if (bankaddress >= m_slave_length)
if (bankaddress >= m_slave_base.length())
{
logerror("%04X:Slave bank %02X out of range!", m_slave->pc(), data & 15);
bankaddress = 0x10000;
}
membank("bank3")->set_base(&m_slave_base[bankaddress]);
m_slave_bankslot->set_base(&m_slave_base[bankaddress]);
if (LOG_BANKSWITCHING_S) logerror("%04X:Slave bank = %02X (%05X)\n", m_slave->pc(), data & 15, bankaddress);
}
@ -1390,16 +1380,16 @@ WRITE8_MEMBER(leland_state::ataxx_slave_banksw_w)
else
{
bankaddress = 0x10000 * bank + 0x8000 * ((data >> 4) & 1);
if (m_slave_length > 0x100000)
if (m_slave_base.length() > 0x100000)
bankaddress += 0x100000 * ((data >> 5) & 1);
}
if (bankaddress >= m_slave_length)
if (bankaddress >= m_slave_base.length())
{
logerror("%04X:Slave bank %02X out of range!", m_slave->pc(), data & 0x3f);
bankaddress = 0x2000;
}
membank("bank3")->set_base(&m_slave_base[bankaddress]);
m_slave_bankslot->set_base(&m_slave_base[bankaddress]);
if (LOG_BANKSWITCHING_S) logerror("%04X:Slave bank = %02X (%05X)\n", m_slave->pc(), data, bankaddress);
}

View File

@ -14,16 +14,13 @@
/* constants */
#define VRAM_SIZE (0x10000)
#define QRAM_SIZE (0x10000)
#define VIDEO_WIDTH (320)
static constexpr int VRAM_SIZE = 0x10000;
static constexpr int QRAM_SIZE = 0x10000;
/* debugging */
#define LOG_COMM 0
/*************************************
*
* Scanline callback
@ -36,10 +33,10 @@ TIMER_CALLBACK_MEMBER(leland_state::scanline_callback)
/* update the DACs */
if (!(m_dac_control & 0x01))
m_dac0->write(m_video_ram[(m_last_scanline) * 256 + 160]);
m_dac[0]->write(m_video_ram[(m_last_scanline) * 256 + 160]);
if (!(m_dac_control & 0x02))
m_dac1->write(m_video_ram[(m_last_scanline) * 256 + 161]);
m_dac[1]->write(m_video_ram[(m_last_scanline) * 256 + 161]);
m_last_scanline = scanline;
@ -50,6 +47,46 @@ TIMER_CALLBACK_MEMBER(leland_state::scanline_callback)
}
/*************************************
*
* ROM-based tilemap
*
*************************************/
TILEMAP_MAPPER_MEMBER(leland_state::leland_scan)
{
/* logical (col,row) -> memory offset */
return (col & 0xff) | ((row & 0x1f) << 8) | ((row & 0xe0) << 9);
}
TILE_GET_INFO_MEMBER(leland_state::leland_get_tile_info)
{
int char_bank = ((m_gfxbank >> 4) & 0x03) << 10;
int prom_bank = ((m_gfxbank >> 3) & 0x01) << 13;
int tile = m_bg_prom[prom_bank | tile_index] | ((tile_index >> 7) & 0x300) | char_bank;
SET_TILE_INFO_MEMBER(0, tile, m_bg_prom[prom_bank | tile_index] >> 5, 0);
}
/*************************************
*
* RAM-based tilemap
*
*************************************/
TILEMAP_MAPPER_MEMBER(leland_state::ataxx_scan)
{
/* logical (col,row) -> memory offset */
return (col & 0xff) | ((row & 0x3f) << 8) | ((row & 0x40) << 9);
}
TILE_GET_INFO_MEMBER(leland_state::ataxx_get_tile_info)
{
uint16_t tile = m_ataxx_qram[tile_index] | ((m_ataxx_qram[0x4000 | tile_index] & 0x7f) << 8);
SET_TILE_INFO_MEMBER(0, tile, 0, 0);
}
/*************************************
*
* Start video hardware
@ -58,6 +95,9 @@ TIMER_CALLBACK_MEMBER(leland_state::scanline_callback)
VIDEO_START_MEMBER(leland_state,leland)
{
/* tilemap */
m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(leland_state::leland_get_tile_info),this), tilemap_mapper_delegate(FUNC(leland_state::leland_scan),this), 8, 8, 256, 256);
/* allocate memory */
m_video_ram = make_unique_clear<uint8_t[]>(VRAM_SIZE);
@ -80,6 +120,9 @@ VIDEO_START_MEMBER(leland_state,leland)
VIDEO_START_MEMBER(leland_state,ataxx)
{
/* tilemap */
m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(leland_state::ataxx_get_tile_info),this), tilemap_mapper_delegate(FUNC(leland_state::ataxx_scan),this), 8, 8, 256, 128);
/* first do the standard stuff */
m_video_ram = make_unique_clear<uint8_t[]>(VRAM_SIZE);
@ -98,7 +141,6 @@ VIDEO_START_MEMBER(leland_state,ataxx)
}
/*************************************
*
* Scrolling and banking
@ -142,11 +184,14 @@ WRITE8_MEMBER(leland_state::leland_gfx_port_w)
if (scanline > 0)
m_screen->update_partial(scanline - 1);
m_gfxbank = data;
if (m_gfxbank != data)
{
m_gfxbank = data;
m_tilemap->mark_all_dirty();
}
}
/*************************************
*
* Video address setting
@ -164,7 +209,6 @@ void leland_state::leland_video_addr_w(address_space &space, int offset, int dat
}
/*************************************
*
* Common video RAM read
@ -211,7 +255,6 @@ int leland_state::leland_vram_port_r(address_space &space, int offset, int num)
}
/*************************************
*
* Common video RAM write
@ -294,7 +337,6 @@ void leland_state::leland_vram_port_w(address_space &space, int offset, int data
}
/*************************************
*
* Master video RAM read/write
@ -330,7 +372,6 @@ READ8_MEMBER(leland_state::leland_mvram_port_r)
}
/*************************************
*
* Slave video RAM read/write
@ -355,7 +396,6 @@ READ8_MEMBER(leland_state::leland_svram_port_r)
}
/*************************************
*
* Ataxx master video RAM read/write
@ -376,7 +416,6 @@ WRITE8_MEMBER(leland_state::ataxx_svram_port_w)
}
/*************************************
*
* Ataxx slave video RAM read/write
@ -397,63 +436,40 @@ READ8_MEMBER(leland_state::ataxx_svram_port_r)
}
/*************************************
*
* ROM-based refresh routine
* Refresh routine
*
*************************************/
uint32_t leland_state::screen_update_leland(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
uint32_t leland_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
const uint8_t *bg_prom = memregion("user1")->base();
const uint8_t *bg_gfx = memregion("gfx1")->base();
offs_t bg_gfx_bank_page_size = memregion("gfx1")->bytes() / 3;
offs_t char_bank = (((m_gfxbank >> 4) & 0x03) * 0x2000) & (bg_gfx_bank_page_size - 1);
offs_t prom_bank = ((m_gfxbank >> 3) & 0x01) * 0x2000;
bitmap_ind16 &src = m_tilemap->pixmap();
int height_mask = m_tilemap->height()-1;
/* for each scanline in the visible region */
for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
{
uint8_t fg_data = 0;
uint16_t *dst = &bitmap.pix16(y);
uint8_t *fg_src = &m_video_ram[y << 8];
/* for each pixel on the scanline */
for (int x = 0; x < VIDEO_WIDTH; x++)
for (int x = cliprect.min_x; x <= cliprect.max_x; x++)
{
/* compute the effective scrolled pixel coordinates */
uint16_t sx = (x + m_xscroll) & 0x07ff;
uint16_t sy = (y + m_yscroll) & 0x07ff;
/* get the byte address this background pixel comes from */
offs_t bg_prom_offs = (sx >> 3) |
((sy << 5) & 0x01f00) |
prom_bank |
((sy << 6) & 0x1c000);
offs_t bg_gfx_offs = (sy & 0x07) |
(bg_prom[bg_prom_offs] << 3) |
((sy << 2) & 0x1800) |
char_bank;
uint16_t sy = (y + m_yscroll) & height_mask;
/* build the pen, background is d0-d5 */
pen_t pen = (((bg_gfx[bg_gfx_offs + (2 * bg_gfx_bank_page_size)] << (sx & 0x07)) & 0x80) >> 7) | /* d0 */
(((bg_gfx[bg_gfx_offs + (1 * bg_gfx_bank_page_size)] << (sx & 0x07)) & 0x80) >> 6) | /* d1 */
(((bg_gfx[bg_gfx_offs + (0 * bg_gfx_bank_page_size)] << (sx & 0x07)) & 0x80) >> 5) | /* d2 */
((bg_prom[bg_prom_offs] & 0xe0) >> 2); /* d3-d5 */
pen_t pen = src.pix16(sy,sx) & 0x3f;
/* foreground is d6-d9 */
if (x & 0x01)
pen = pen | ((fg_data & 0x0f) << 6);
pen = pen | ((fg_src[x >> 1] & 0x0f) << 6);
else
{
fg_data = *fg_src++;
pen = pen | ((fg_data & 0xf0) << 2);
}
pen = pen | ((fg_src[x >> 1] & 0xf0) << 2);
*dst++ = pen;
dst[x] = pen;
}
}
@ -461,79 +477,47 @@ uint32_t leland_state::screen_update_leland(screen_device &screen, bitmap_ind16
}
/*************************************
*
* RAM-based refresh routine
*
*************************************/
uint32_t leland_state::screen_update_ataxx(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
const uint8_t *bg_gfx = memregion("gfx1")->base();
offs_t bg_gfx_bank_page_size = memregion("gfx1")->bytes() / 6;
offs_t bg_gfx_offs_mask = bg_gfx_bank_page_size - 1;
/* for each scanline in the visible region */
for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
{
uint8_t fg_data = 0;
uint16_t *dst = &bitmap.pix16(y);
uint8_t *fg_src = &m_video_ram[y << 8];
/* for each pixel on the scanline */
for (int x = 0; x < VIDEO_WIDTH; x++)
{
/* compute the effective scrolled pixel coordinates */
uint16_t sx = (x + m_xscroll) & 0x07ff;
uint16_t sy = (y + m_yscroll) & 0x07ff;
/* get the byte address this background pixel comes from */
offs_t qram_offs = (sx >> 3) |
((sy << 5) & 0x3f00) |
((sy << 6) & 0x8000);
offs_t bg_gfx_offs = ((sy & 0x07) |
(m_ataxx_qram[qram_offs] << 3) |
((m_ataxx_qram[0x4000 | qram_offs] & 0x7f) << 11)) & bg_gfx_offs_mask;
/* build the pen, background is d0-d5 */
pen_t pen = (((bg_gfx[bg_gfx_offs + (0 * bg_gfx_bank_page_size)] << (sx & 0x07)) & 0x80) >> 7) | /* d0 */
(((bg_gfx[bg_gfx_offs + (1 * bg_gfx_bank_page_size)] << (sx & 0x07)) & 0x80) >> 6) | /* d1 */
(((bg_gfx[bg_gfx_offs + (2 * bg_gfx_bank_page_size)] << (sx & 0x07)) & 0x80) >> 5) | /* d2 */
(((bg_gfx[bg_gfx_offs + (3 * bg_gfx_bank_page_size)] << (sx & 0x07)) & 0x80) >> 4) | /* d3 */
(((bg_gfx[bg_gfx_offs + (4 * bg_gfx_bank_page_size)] << (sx & 0x07)) & 0x80) >> 3) | /* d4 */
(((bg_gfx[bg_gfx_offs + (5 * bg_gfx_bank_page_size)] << (sx & 0x07)) & 0x80) >> 2); /* d5 */
/* foreground is d6-d9 */
if (x & 0x01)
pen = pen | ((fg_data & 0x0f) << 6);
else
{
fg_data = *fg_src++;
pen = pen | ((fg_data & 0xf0) << 2);
}
*dst++ = pen;
}
}
return 0;
}
/*************************************
*
* Machine drivers
*
*************************************/
static const gfx_layout leland_layout =
{
8,8,
RGN_FRAC(1,3),
3,
{ RGN_FRAC(0,3), RGN_FRAC(1,3), RGN_FRAC(2,3) },
{ STEP8(0,1) },
{ STEP8(0,8) },
8*8
};
static const gfx_layout ataxx_layout =
{
8,8,
RGN_FRAC(1,6),
6,
{ RGN_FRAC(5,6), RGN_FRAC(4,6), RGN_FRAC(3,6), RGN_FRAC(2,6), RGN_FRAC(1,6), RGN_FRAC(0,6) },
{ STEP8(0,1) },
{ STEP8(0,8) },
8*8
};
static GFXDECODE_START( gfx_leland )
GFXDECODE_ENTRY( "bg_gfx", 0, leland_layout, 0, 8*16) // *16 is foreground
GFXDECODE_END
static GFXDECODE_START( gfx_ataxx )
GFXDECODE_ENTRY( "bg_gfx", 0, ataxx_layout, 0, 16) // 16 is foreground
GFXDECODE_END
MACHINE_CONFIG_START(leland_state::leland_video)
MCFG_VIDEO_START_OVERRIDE(leland_state,leland)
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_leland)
MCFG_PALETTE_ADD("palette", 1024)
MCFG_PALETTE_FORMAT(BBGGGRRR)
@ -542,7 +526,7 @@ MACHINE_CONFIG_START(leland_state::leland_video)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_UPDATE_DRIVER(leland_state, screen_update_leland)
MCFG_SCREEN_UPDATE_DRIVER(leland_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MACHINE_CONFIG_END
@ -550,9 +534,7 @@ MACHINE_CONFIG_START(leland_state::ataxx_video)
leland_video(config);
MCFG_VIDEO_START_OVERRIDE(leland_state,ataxx)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(leland_state, screen_update_ataxx)
MCFG_DEVICE_REPLACE("gfxdecode", GFXDECODE, "palette", gfx_ataxx)
MCFG_PALETTE_MODIFY("palette")
MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
MACHINE_CONFIG_END