mirror of
https://github.com/holub/mame
synced 2025-10-05 08:41:31 +03:00
undrfire.cpp : Updates (#5001)
* undrfire.cpp : Updates Simplify handlers, Simplify gfxdecodes, Reduce duplicates, Runtime tag lookups, Fix spacings, Use shorter / correct type values * undrfire.cpp : Fix type
This commit is contained in:
parent
a2a0664c66
commit
78d3f9a810
@ -214,7 +214,7 @@ READ_LINE_MEMBER(undrfire_state::frame_counter_r)
|
||||
return m_frame_counter;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(undrfire_state::coin_word_w)
|
||||
void undrfire_state::coin_word_w(u8 data)
|
||||
{
|
||||
machine().bookkeeping().coin_lockout_w(0,~data & 0x01);
|
||||
machine().bookkeeping().coin_lockout_w(1,~data & 0x02);
|
||||
@ -223,28 +223,17 @@ WRITE8_MEMBER(undrfire_state::coin_word_w)
|
||||
}
|
||||
|
||||
|
||||
READ16_MEMBER(undrfire_state::shared_ram_r)
|
||||
u16 undrfire_state::shared_ram_r(offs_t offset)
|
||||
{
|
||||
if ((offset&1)==0) return (m_shared_ram[offset/2]&0xffff0000)>>16;
|
||||
return (m_shared_ram[offset/2]&0x0000ffff);
|
||||
return m_shared_ram[offset];
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(undrfire_state::shared_ram_w)
|
||||
void undrfire_state::shared_ram_w(offs_t offset, u16 data, u16 mem_mask)
|
||||
{
|
||||
if ((offset&1)==0) {
|
||||
if (ACCESSING_BITS_8_15)
|
||||
m_shared_ram[offset/2]=(m_shared_ram[offset/2]&0x00ffffff)|((data&0xff00)<<16);
|
||||
if (ACCESSING_BITS_0_7)
|
||||
m_shared_ram[offset/2]=(m_shared_ram[offset/2]&0xff00ffff)|((data&0x00ff)<<16);
|
||||
} else {
|
||||
if (ACCESSING_BITS_8_15)
|
||||
m_shared_ram[offset/2]=(m_shared_ram[offset/2]&0xffff00ff)|((data&0xff00)<< 0);
|
||||
if (ACCESSING_BITS_0_7)
|
||||
m_shared_ram[offset/2]=(m_shared_ram[offset/2]&0xffffff00)|((data&0x00ff)<< 0);
|
||||
}
|
||||
COMBINE_DATA(&m_shared_ram[offset]);
|
||||
}
|
||||
|
||||
READ32_MEMBER(undrfire_state::undrfire_lightgun_r)
|
||||
u32 undrfire_state::undrfire_lightgun_r(offs_t offset)
|
||||
{
|
||||
int x,y;
|
||||
|
||||
@ -256,18 +245,10 @@ READ32_MEMBER(undrfire_state::undrfire_lightgun_r)
|
||||
who knows if the real machine does. */
|
||||
|
||||
case 0x00: /* P1 */
|
||||
{
|
||||
x = ioport("GUNX1")->read() << 6;
|
||||
y = ioport("GUNY1")->read() << 6;
|
||||
|
||||
return ((x << 24) &0xff000000) | ((x << 8) &0xff0000)
|
||||
| ((y << 8) &0xff00) | ((y >> 8) &0xff) ;
|
||||
}
|
||||
|
||||
case 0x01: /* P2 */
|
||||
{
|
||||
x = ioport("GUNX2")->read() << 6;
|
||||
y = ioport("GUNY2")->read() << 6;
|
||||
x = m_in_gunx[offset & 1]->read() << 6;
|
||||
y = m_in_guny[offset & 1]->read() << 6;
|
||||
|
||||
return ((x << 24) &0xff000000) | ((x << 8) &0xff0000)
|
||||
| ((y << 8) &0xff00) | ((y >> 8) &0xff) ;
|
||||
@ -280,22 +261,20 @@ logerror("CPU #0 PC %06x: warning - read unmapped lightgun offset %06x\n",m_main
|
||||
}
|
||||
|
||||
|
||||
WRITE32_MEMBER(undrfire_state::rotate_control_w)/* only a guess that it's rotation */
|
||||
void undrfire_state::rotate_control_w(offs_t offset, u16 data)/* only a guess that it's rotation */
|
||||
{
|
||||
if (ACCESSING_BITS_0_15)
|
||||
if (offset & 1)
|
||||
{
|
||||
m_rotate_ctrl[m_port_sel] = data;
|
||||
return;
|
||||
}
|
||||
|
||||
if (ACCESSING_BITS_16_31)
|
||||
else
|
||||
{
|
||||
m_port_sel = (data &0x70000) >> 16;
|
||||
m_port_sel = data & 0x7;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
WRITE32_MEMBER(undrfire_state::motor_control_w)
|
||||
void undrfire_state::motor_control_w(u8 data)
|
||||
{
|
||||
/*
|
||||
Standard value poked is 0x00910200 (we ignore lsb and msb
|
||||
@ -310,30 +289,27 @@ WRITE32_MEMBER(undrfire_state::motor_control_w)
|
||||
........ x....... P2 gun vibration
|
||||
*/
|
||||
|
||||
if (ACCESSING_BITS_8_15)
|
||||
{
|
||||
output().set_value("P1_lamp_start", (data >> 12) & 1 ); //p1 start
|
||||
output().set_value("P2_lamp_start", (data >> 13) & 1 ); //p2 start
|
||||
output().set_value("P1_gun_recoil", (data >> 14) & 1 ); //p1 recoil
|
||||
output().set_value("P2_gun_recoil", (data >> 15) & 1 ); //p2 recoil
|
||||
}
|
||||
output().set_value("P1_lamp_start", BIT(data, 4)); //p1 start
|
||||
output().set_value("P2_lamp_start", BIT(data, 5)); //p2 start
|
||||
output().set_value("P1_gun_recoil", BIT(data, 6)); //p1 recoil
|
||||
output().set_value("P2_gun_recoil", BIT(data, 7)); //p2 recoil
|
||||
}
|
||||
|
||||
WRITE32_MEMBER(undrfire_state::cbombers_cpua_ctrl_w)
|
||||
void undrfire_state::cbombers_cpua_ctrl_w(u32 data)
|
||||
{
|
||||
/*
|
||||
........ ..xxxxxx Lamp 1-6 enables
|
||||
........ .x...... Vibration
|
||||
*/
|
||||
output().set_value("Lamp_1", data & 1 );
|
||||
output().set_value("Lamp_2", (data >> 1) & 1 );
|
||||
output().set_value("Lamp_3", (data >> 2) & 1 );
|
||||
output().set_value("Lamp_4", (data >> 3) & 1 );
|
||||
output().set_value("Lamp_5", (data >> 4) & 1 );
|
||||
output().set_value("Lamp_6", (data >> 5) & 1 );
|
||||
output().set_value("Wheel_vibration", (data >> 6) & 1 );
|
||||
output().set_value("Lamp_1", BIT(data, 0));
|
||||
output().set_value("Lamp_2", BIT(data, 1));
|
||||
output().set_value("Lamp_3", BIT(data, 2));
|
||||
output().set_value("Lamp_4", BIT(data, 3));
|
||||
output().set_value("Lamp_5", BIT(data, 4));
|
||||
output().set_value("Lamp_6", BIT(data, 5));
|
||||
output().set_value("Wheel_vibration", BIT(data, 6));
|
||||
|
||||
m_subcpu->set_input_line(INPUT_LINE_RESET, (data & 0x1000) ? CLEAR_LINE : ASSERT_LINE);
|
||||
m_subcpu->set_input_line(INPUT_LINE_RESET, BIT(data, 12) ? CLEAR_LINE : ASSERT_LINE);
|
||||
}
|
||||
|
||||
|
||||
@ -348,7 +324,7 @@ void undrfire_state::undrfire_map(address_map &map)
|
||||
map(0x300000, 0x303fff).ram().share("spriteram");
|
||||
// AM_RANGE(0x304000, 0x304003) AM_RAM // debugging - doesn't change ???
|
||||
// AM_RANGE(0x304400, 0x304403) AM_RAM // debugging - doesn't change ???
|
||||
map(0x400000, 0x400003).w(FUNC(undrfire_state::motor_control_w)); /* gun vibration */
|
||||
map(0x400002, 0x400002).w(FUNC(undrfire_state::motor_control_w)); /* gun vibration */
|
||||
map(0x500000, 0x500007).rw("tc0510nio", FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write));
|
||||
map(0x600000, 0x600007).noprw(); // space for ADC0809, not fitted on pcb
|
||||
map(0x700000, 0x7007ff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w));
|
||||
@ -380,7 +356,7 @@ void undrfire_state::cbombers_cpua_map(address_map &map)
|
||||
map(0xb00000, 0xb0000f).ram(); /* TC0360PRI */
|
||||
map(0xc00000, 0xc00007).ram(); /* LAN controller? */
|
||||
map(0xd00000, 0xd00003).w(FUNC(undrfire_state::rotate_control_w)); /* perhaps port based rotate control? */
|
||||
map(0xe00000, 0xe0ffff).ram().share("shared_ram");
|
||||
map(0xe00000, 0xe0ffff).rw(FUNC(undrfire_state::shared_ram_r), FUNC(undrfire_state::shared_ram_w));
|
||||
}
|
||||
|
||||
void undrfire_state::cbombers_cpub_map(address_map &map)
|
||||
@ -388,7 +364,7 @@ void undrfire_state::cbombers_cpub_map(address_map &map)
|
||||
map(0x000000, 0x03ffff).rom();
|
||||
map(0x400000, 0x40ffff).ram(); /* local ram */
|
||||
// map(0x600000, 0x60ffff).w(m_tc0480scp, FUNC(tc0480scp_device::ram_w)); /* Only written upon errors */
|
||||
map(0x800000, 0x80ffff).rw(FUNC(undrfire_state::shared_ram_r), FUNC(undrfire_state::shared_ram_w));
|
||||
map(0x800000, 0x80ffff).ram().share("shared_ram");
|
||||
// map(0xa00000, 0xa001ff).ram(); /* Extra road control?? */
|
||||
}
|
||||
|
||||
@ -513,13 +489,12 @@ INPUT_PORTS_END
|
||||
static const gfx_layout tile16x16_layout =
|
||||
{
|
||||
16,16, /* 16*16 sprites */
|
||||
RGN_FRAC(1,2),
|
||||
RGN_FRAC(1,5),
|
||||
5, /* 5 bits per pixel */
|
||||
{ RGN_FRAC(1,2), 0, 8, 16, 24 },
|
||||
{ 32, 33, 34, 35, 36, 37, 38, 39, 0, 1, 2, 3, 4, 5, 6, 7 },
|
||||
{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64,
|
||||
8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 },
|
||||
64*16 /* every sprite takes 128 consecutive bytes */
|
||||
{ RGN_FRAC(4,5), RGN_FRAC(3,5), RGN_FRAC(2,5), RGN_FRAC(1,5), RGN_FRAC(0,5) },
|
||||
{ STEP16(0,1) },
|
||||
{ STEP16(0,16) },
|
||||
16*16 /* every sprite takes 128 consecutive bytes */
|
||||
};
|
||||
|
||||
static const gfx_layout charlayout =
|
||||
@ -527,10 +502,10 @@ static const gfx_layout charlayout =
|
||||
16,16, /* 16*16 characters */
|
||||
RGN_FRAC(1,1),
|
||||
4, /* 4 bits per pixel */
|
||||
{ 0, 1, 2, 3 },
|
||||
{ 1*4, 0*4, 5*4, 4*4, 3*4, 2*4, 7*4, 6*4, 9*4, 8*4, 13*4, 12*4, 11*4, 10*4, 15*4, 14*4 },
|
||||
{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 },
|
||||
128*8 /* every sprite takes 128 consecutive bytes */
|
||||
{ STEP4(0,1) },
|
||||
{ STEP8(7*4,-4), STEP8(15*4,-4) },
|
||||
{ STEP16(0,16*4) },
|
||||
16*16*4 /* every sprite takes 128 consecutive bytes */
|
||||
};
|
||||
|
||||
static const gfx_layout scclayout =
|
||||
@ -538,9 +513,9 @@ static const gfx_layout scclayout =
|
||||
8,8, /* 8*8 characters */
|
||||
RGN_FRAC(1,2),
|
||||
6, /* 4 bits per pixel */
|
||||
{ RGN_FRAC(1,2), RGN_FRAC(1,2)+1, 0, 1, 2, 3 },
|
||||
{ 2*4, 3*4, 0*4, 1*4, 6*4, 7*4, 4*4, 5*4 },
|
||||
{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
|
||||
{ RGN_FRAC(1,2), RGN_FRAC(1,2)+1, STEP4(0,1) },
|
||||
{ STEP8(0,4) },
|
||||
{ STEP8(0,4*8) },
|
||||
32*8 /* every sprite takes 32 consecutive bytes */
|
||||
};
|
||||
|
||||
@ -695,23 +670,23 @@ ROM_START( undrfire )
|
||||
ROM_LOAD16_BYTE( "d67-21", 0x100001, 0x20000, CRC(8fc6046f) SHA1(28522ce5c5900f74d3faa86710256a7201b32500) )
|
||||
|
||||
ROM_REGION( 0x400000, "gfx1", 0 )
|
||||
ROM_LOAD16_BYTE( "d67-08", 0x000000, 0x200000, CRC(56730d44) SHA1(110872714b3c26a82473c7b80c120918b91b1b4b) ) /* SCR 16x16 tiles */
|
||||
ROM_LOAD16_BYTE( "d67-09", 0x000001, 0x200000, CRC(3c19f9e3) SHA1(7ba8475d37cbf8bf38029124afdf62c915c8668d) )
|
||||
ROM_LOAD32_WORD_SWAP( "d67-08", 0x000002, 0x200000, CRC(56730d44) SHA1(110872714b3c26a82473c7b80c120918b91b1b4b) ) /* SCR 16x16 tiles */
|
||||
ROM_LOAD32_WORD_SWAP( "d67-09", 0x000000, 0x200000, CRC(3c19f9e3) SHA1(7ba8475d37cbf8bf38029124afdf62c915c8668d) )
|
||||
|
||||
ROM_REGION( 0x1000000, "gfx2", 0 )
|
||||
ROM_LOAD32_BYTE( "d67-03", 0x000003, 0x200000, CRC(3b6e99a9) SHA1(1e0e66763ddfa18a2d291626b245633555092959) ) /* OBJ 16x16 tiles */
|
||||
ROM_LOAD32_BYTE( "d67-04", 0x000002, 0x200000, CRC(8f2934c9) SHA1(ead95b34eec3a6df27199edcbdd5595bc6555a50) )
|
||||
ROM_LOAD32_BYTE( "d67-05", 0x000001, 0x200000, CRC(e2e7dcf3) SHA1(185dbd0489931123a295139dc0a045ad239018fb) )
|
||||
ROM_LOAD32_BYTE( "d67-06", 0x000000, 0x200000, CRC(a2a63488) SHA1(a1ed140cc3757c3c05a0a822089c6efc83bf4805) )
|
||||
ROM_LOAD32_BYTE( "d67-07", 0x800000, 0x200000, CRC(189c0ee5) SHA1(de85b39dc67f31ef80800ff6ec9a391652eb12e4) )
|
||||
ROM_REGION( 0xa00000, "gfx2", 0 )
|
||||
ROM_LOAD16_WORD_SWAP( "d67-03", 0x000000, 0x200000, CRC(3b6e99a9) SHA1(1e0e66763ddfa18a2d291626b245633555092959) ) /* OBJ 16x16 tiles */
|
||||
ROM_LOAD16_WORD_SWAP( "d67-04", 0x200000, 0x200000, CRC(8f2934c9) SHA1(ead95b34eec3a6df27199edcbdd5595bc6555a50) )
|
||||
ROM_LOAD16_WORD_SWAP( "d67-05", 0x400000, 0x200000, CRC(e2e7dcf3) SHA1(185dbd0489931123a295139dc0a045ad239018fb) )
|
||||
ROM_LOAD16_WORD_SWAP( "d67-06", 0x600000, 0x200000, CRC(a2a63488) SHA1(a1ed140cc3757c3c05a0a822089c6efc83bf4805) )
|
||||
ROM_LOAD16_WORD_SWAP( "d67-07", 0x800000, 0x200000, CRC(189c0ee5) SHA1(de85b39dc67f31ef80800ff6ec9a391652eb12e4) )
|
||||
|
||||
ROM_REGION( 0x400000, "gfx3", 0 )
|
||||
ROM_LOAD16_BYTE( "d67-10", 0x000000, 0x100000, CRC(d79e6ce9) SHA1(8b38302971816d599cdaa3279cb6395441373c6f) ) /* PIV 8x8 tiles, 6bpp */
|
||||
ROM_LOAD16_BYTE( "d67-11", 0x000001, 0x100000, CRC(7a401bb3) SHA1(47257a6a4b37ec1ceb4e974b776ee3ea30db06fa) )
|
||||
ROM_LOAD16_BYTE( "d67-10", 0x000001, 0x100000, CRC(d79e6ce9) SHA1(8b38302971816d599cdaa3279cb6395441373c6f) ) /* PIV 8x8 tiles, 6bpp */
|
||||
ROM_LOAD16_BYTE( "d67-11", 0x000000, 0x100000, CRC(7a401bb3) SHA1(47257a6a4b37ec1ceb4e974b776ee3ea30db06fa) )
|
||||
ROM_LOAD ( "d67-12", 0x300000, 0x100000, CRC(67b16fec) SHA1(af0f9f50516331780ef6cfab1e12a23edf87daa7) )
|
||||
ROM_FILL ( 0x200000, 0x100000, 0x00 )
|
||||
|
||||
ROM_REGION16_LE( 0x80000, "user1", 0 )
|
||||
ROM_REGION16_LE( 0x80000, "spritemap", 0 )
|
||||
ROM_LOAD16_WORD( "d67-13", 0x00000, 0x80000, CRC(42e7690d) SHA1(5f00f3f814653733bf9a5cb010675799de02fa76) ) /* STY, spritemap */
|
||||
|
||||
ROM_REGION16_BE( 0x1000000, "ensoniq.0", ROMREGION_ERASE00 )
|
||||
@ -735,23 +710,23 @@ ROM_START( undrfireu )
|
||||
ROM_LOAD16_BYTE( "d67-21", 0x100001, 0x20000, CRC(8fc6046f) SHA1(28522ce5c5900f74d3faa86710256a7201b32500) )
|
||||
|
||||
ROM_REGION( 0x400000, "gfx1", 0 )
|
||||
ROM_LOAD16_BYTE( "d67-08", 0x000000, 0x200000, CRC(56730d44) SHA1(110872714b3c26a82473c7b80c120918b91b1b4b) ) /* SCR 16x16 tiles */
|
||||
ROM_LOAD16_BYTE( "d67-09", 0x000001, 0x200000, CRC(3c19f9e3) SHA1(7ba8475d37cbf8bf38029124afdf62c915c8668d) )
|
||||
ROM_LOAD32_WORD_SWAP( "d67-08", 0x000002, 0x200000, CRC(56730d44) SHA1(110872714b3c26a82473c7b80c120918b91b1b4b) ) /* SCR 16x16 tiles */
|
||||
ROM_LOAD32_WORD_SWAP( "d67-09", 0x000000, 0x200000, CRC(3c19f9e3) SHA1(7ba8475d37cbf8bf38029124afdf62c915c8668d) )
|
||||
|
||||
ROM_REGION( 0x1000000, "gfx2", 0 )
|
||||
ROM_LOAD32_BYTE( "d67-03", 0x000003, 0x200000, CRC(3b6e99a9) SHA1(1e0e66763ddfa18a2d291626b245633555092959) ) /* OBJ 16x16 tiles */
|
||||
ROM_LOAD32_BYTE( "d67-04", 0x000002, 0x200000, CRC(8f2934c9) SHA1(ead95b34eec3a6df27199edcbdd5595bc6555a50) )
|
||||
ROM_LOAD32_BYTE( "d67-05", 0x000001, 0x200000, CRC(e2e7dcf3) SHA1(185dbd0489931123a295139dc0a045ad239018fb) )
|
||||
ROM_LOAD32_BYTE( "d67-06", 0x000000, 0x200000, CRC(a2a63488) SHA1(a1ed140cc3757c3c05a0a822089c6efc83bf4805) )
|
||||
ROM_LOAD32_BYTE( "d67-07", 0x800000, 0x200000, CRC(189c0ee5) SHA1(de85b39dc67f31ef80800ff6ec9a391652eb12e4) )
|
||||
ROM_REGION( 0xa00000, "gfx2", 0 )
|
||||
ROM_LOAD16_WORD_SWAP( "d67-03", 0x000000, 0x200000, CRC(3b6e99a9) SHA1(1e0e66763ddfa18a2d291626b245633555092959) ) /* OBJ 16x16 tiles */
|
||||
ROM_LOAD16_WORD_SWAP( "d67-04", 0x200000, 0x200000, CRC(8f2934c9) SHA1(ead95b34eec3a6df27199edcbdd5595bc6555a50) )
|
||||
ROM_LOAD16_WORD_SWAP( "d67-05", 0x400000, 0x200000, CRC(e2e7dcf3) SHA1(185dbd0489931123a295139dc0a045ad239018fb) )
|
||||
ROM_LOAD16_WORD_SWAP( "d67-06", 0x600000, 0x200000, CRC(a2a63488) SHA1(a1ed140cc3757c3c05a0a822089c6efc83bf4805) )
|
||||
ROM_LOAD16_WORD_SWAP( "d67-07", 0x800000, 0x200000, CRC(189c0ee5) SHA1(de85b39dc67f31ef80800ff6ec9a391652eb12e4) )
|
||||
|
||||
ROM_REGION( 0x400000, "gfx3", 0 )
|
||||
ROM_LOAD16_BYTE( "d67-10", 0x000000, 0x100000, CRC(d79e6ce9) SHA1(8b38302971816d599cdaa3279cb6395441373c6f) ) /* PIV 8x8 tiles, 6bpp */
|
||||
ROM_LOAD16_BYTE( "d67-11", 0x000001, 0x100000, CRC(7a401bb3) SHA1(47257a6a4b37ec1ceb4e974b776ee3ea30db06fa) )
|
||||
ROM_LOAD16_BYTE( "d67-10", 0x000001, 0x100000, CRC(d79e6ce9) SHA1(8b38302971816d599cdaa3279cb6395441373c6f) ) /* PIV 8x8 tiles, 6bpp */
|
||||
ROM_LOAD16_BYTE( "d67-11", 0x000000, 0x100000, CRC(7a401bb3) SHA1(47257a6a4b37ec1ceb4e974b776ee3ea30db06fa) )
|
||||
ROM_LOAD ( "d67-12", 0x300000, 0x100000, CRC(67b16fec) SHA1(af0f9f50516331780ef6cfab1e12a23edf87daa7) )
|
||||
ROM_FILL ( 0x200000, 0x100000, 0x00 )
|
||||
|
||||
ROM_REGION16_LE( 0x80000, "user1", 0 )
|
||||
ROM_REGION16_LE( 0x80000, "spritemap", 0 )
|
||||
ROM_LOAD16_WORD( "d67-13", 0x00000, 0x80000, CRC(42e7690d) SHA1(5f00f3f814653733bf9a5cb010675799de02fa76) ) /* STY, spritemap */
|
||||
|
||||
ROM_REGION16_BE( 0x1000000, "ensoniq.0", ROMREGION_ERASE00 )
|
||||
@ -774,23 +749,23 @@ ROM_START( undrfirej )
|
||||
ROM_LOAD16_BYTE( "d67-21", 0x100001, 0x20000, CRC(8fc6046f) SHA1(28522ce5c5900f74d3faa86710256a7201b32500) )
|
||||
|
||||
ROM_REGION( 0x400000, "gfx1", 0 )
|
||||
ROM_LOAD16_BYTE( "d67-08", 0x000000, 0x200000, CRC(56730d44) SHA1(110872714b3c26a82473c7b80c120918b91b1b4b) ) /* SCR 16x16 tiles */
|
||||
ROM_LOAD16_BYTE( "d67-09", 0x000001, 0x200000, CRC(3c19f9e3) SHA1(7ba8475d37cbf8bf38029124afdf62c915c8668d) )
|
||||
ROM_LOAD32_WORD_SWAP( "d67-08", 0x000002, 0x200000, CRC(56730d44) SHA1(110872714b3c26a82473c7b80c120918b91b1b4b) ) /* SCR 16x16 tiles */
|
||||
ROM_LOAD32_WORD_SWAP( "d67-09", 0x000000, 0x200000, CRC(3c19f9e3) SHA1(7ba8475d37cbf8bf38029124afdf62c915c8668d) )
|
||||
|
||||
ROM_REGION( 0x1000000, "gfx2", 0 )
|
||||
ROM_LOAD32_BYTE( "d67-03", 0x000003, 0x200000, CRC(3b6e99a9) SHA1(1e0e66763ddfa18a2d291626b245633555092959) ) /* OBJ 16x16 tiles */
|
||||
ROM_LOAD32_BYTE( "d67-04", 0x000002, 0x200000, CRC(8f2934c9) SHA1(ead95b34eec3a6df27199edcbdd5595bc6555a50) )
|
||||
ROM_LOAD32_BYTE( "d67-05", 0x000001, 0x200000, CRC(e2e7dcf3) SHA1(185dbd0489931123a295139dc0a045ad239018fb) )
|
||||
ROM_LOAD32_BYTE( "d67-06", 0x000000, 0x200000, CRC(a2a63488) SHA1(a1ed140cc3757c3c05a0a822089c6efc83bf4805) )
|
||||
ROM_LOAD32_BYTE( "d67-07", 0x800000, 0x200000, CRC(189c0ee5) SHA1(de85b39dc67f31ef80800ff6ec9a391652eb12e4) )
|
||||
ROM_REGION( 0xa00000, "gfx2", 0 )
|
||||
ROM_LOAD16_WORD_SWAP( "d67-03", 0x000000, 0x200000, CRC(3b6e99a9) SHA1(1e0e66763ddfa18a2d291626b245633555092959) ) /* OBJ 16x16 tiles */
|
||||
ROM_LOAD16_WORD_SWAP( "d67-04", 0x200000, 0x200000, CRC(8f2934c9) SHA1(ead95b34eec3a6df27199edcbdd5595bc6555a50) )
|
||||
ROM_LOAD16_WORD_SWAP( "d67-05", 0x400000, 0x200000, CRC(e2e7dcf3) SHA1(185dbd0489931123a295139dc0a045ad239018fb) )
|
||||
ROM_LOAD16_WORD_SWAP( "d67-06", 0x600000, 0x200000, CRC(a2a63488) SHA1(a1ed140cc3757c3c05a0a822089c6efc83bf4805) )
|
||||
ROM_LOAD16_WORD_SWAP( "d67-07", 0x800000, 0x200000, CRC(189c0ee5) SHA1(de85b39dc67f31ef80800ff6ec9a391652eb12e4) )
|
||||
|
||||
ROM_REGION( 0x400000, "gfx3", 0 )
|
||||
ROM_LOAD16_BYTE( "d67-10", 0x000000, 0x100000, CRC(d79e6ce9) SHA1(8b38302971816d599cdaa3279cb6395441373c6f) ) /* PIV 8x8 tiles, 6bpp */
|
||||
ROM_LOAD16_BYTE( "d67-11", 0x000001, 0x100000, CRC(7a401bb3) SHA1(47257a6a4b37ec1ceb4e974b776ee3ea30db06fa) )
|
||||
ROM_LOAD16_BYTE( "d67-10", 0x000001, 0x100000, CRC(d79e6ce9) SHA1(8b38302971816d599cdaa3279cb6395441373c6f) ) /* PIV 8x8 tiles, 6bpp */
|
||||
ROM_LOAD16_BYTE( "d67-11", 0x000000, 0x100000, CRC(7a401bb3) SHA1(47257a6a4b37ec1ceb4e974b776ee3ea30db06fa) )
|
||||
ROM_LOAD ( "d67-12", 0x300000, 0x100000, CRC(67b16fec) SHA1(af0f9f50516331780ef6cfab1e12a23edf87daa7) )
|
||||
ROM_FILL ( 0x200000, 0x100000, 0x00 )
|
||||
|
||||
ROM_REGION16_LE( 0x80000, "user1", 0 )
|
||||
ROM_REGION16_LE( 0x80000, "spritemap", 0 )
|
||||
ROM_LOAD16_WORD( "d67-13", 0x00000, 0x80000, CRC(42e7690d) SHA1(5f00f3f814653733bf9a5cb010675799de02fa76) ) /* STY, spritemap */
|
||||
|
||||
ROM_REGION16_BE( 0x1000000, "ensoniq.0", ROMREGION_ERASE00 )
|
||||
@ -817,32 +792,32 @@ ROM_START( cbombers )
|
||||
ROM_LOAD16_BYTE( "d83_29.ic27", 0x00000, 0x20000, CRC(771b4080) SHA1(a47c3a6abc07a6a61b694d32baa0ad4c25045841) )
|
||||
|
||||
ROM_REGION( 0x400000, "gfx1", 0 )
|
||||
ROM_LOAD16_BYTE( "d83_04.ic8", 0x000000, 0x200000, CRC(79f36cce) SHA1(2c8dc4cd5c4aa335c1e45888f5947acf94fa628a) )
|
||||
ROM_LOAD16_BYTE( "d83_05.ic7", 0x000001, 0x200000, CRC(7787e495) SHA1(1758de5fdd1d12727368d08d7d4752c3756fc23e) )
|
||||
ROM_LOAD32_WORD_SWAP( "d83_04.ic8", 0x000002, 0x200000, CRC(79f36cce) SHA1(2c8dc4cd5c4aa335c1e45888f5947acf94fa628a) )
|
||||
ROM_LOAD32_WORD_SWAP( "d83_05.ic7", 0x000000, 0x200000, CRC(7787e495) SHA1(1758de5fdd1d12727368d08d7d4752c3756fc23e) )
|
||||
|
||||
ROM_REGION( 0x1800000, "gfx2", 0 )
|
||||
ROM_LOAD32_BYTE( "d83_06.ic28", 0x000003, 0x200000, CRC(4b71944e) SHA1(e8ed190280c7378fb4edcb192cef0d4d62582ad5) )
|
||||
ROM_LOAD32_BYTE( "d83_07.ic30", 0x000002, 0x200000, CRC(29861b61) SHA1(76562b0243c1bc38623c0ef9d20de7572a979e37) )
|
||||
ROM_LOAD32_BYTE( "d83_08.ic32", 0x000001, 0x200000, CRC(a0e81e01) SHA1(96ad8cfc849caaf85350cfc7cf23ad23635a3813) )
|
||||
ROM_LOAD32_BYTE( "d83_09.ic45", 0x000000, 0x200000, CRC(7e4dec50) SHA1(4d8c1be739d425d8ded07774094b775f35a915bf) )
|
||||
ROM_LOAD32_BYTE( "d83_11.ic41", 0x800003, 0x100000, CRC(a790e490) SHA1(9c57405ef2ef3368eb0958a3e43601110c1cc90d) )
|
||||
ROM_LOAD32_BYTE( "d83_12.ic29", 0x800002, 0x100000, CRC(2f237b0d) SHA1(2ecb947671d263a77510bfebda03f883b55b8df4) )
|
||||
ROM_LOAD32_BYTE( "d83_13.ic31", 0x800001, 0x100000, CRC(c2cceeb6) SHA1(3ec932655326caed13a40394bbf8e8baf836de2a) )
|
||||
ROM_LOAD32_BYTE( "d83_14.ic44", 0x800000, 0x100000, CRC(8b6f4f12) SHA1(6a28004d287f00627622376aa3d6704f2684a6f3) )
|
||||
ROM_LOAD32_BYTE( "d83_10.ic43", 0xc00000, 0x200000, CRC(36c440a0) SHA1(31685d3cdf4e39e1365df7e6a588c28f95d7e0a8) )
|
||||
ROM_LOAD32_BYTE( "d83_15.ic42", 0x1400000, 0x100000, CRC(1b71175e) SHA1(60ad38ce97fd7995ff2f29d6b1a3b873dc2f0eb3) )
|
||||
ROM_REGION( 0xf00000, "gfx2", 0 )
|
||||
ROM_LOAD16_WORD_SWAP( "d83_06.ic28", 0x000000, 0x200000, CRC(4b71944e) SHA1(e8ed190280c7378fb4edcb192cef0d4d62582ad5) )
|
||||
ROM_LOAD16_WORD_SWAP( "d83_07.ic30", 0x300000, 0x200000, CRC(29861b61) SHA1(76562b0243c1bc38623c0ef9d20de7572a979e37) )
|
||||
ROM_LOAD16_WORD_SWAP( "d83_08.ic32", 0x600000, 0x200000, CRC(a0e81e01) SHA1(96ad8cfc849caaf85350cfc7cf23ad23635a3813) )
|
||||
ROM_LOAD16_WORD_SWAP( "d83_09.ic45", 0x900000, 0x200000, CRC(7e4dec50) SHA1(4d8c1be739d425d8ded07774094b775f35a915bf) )
|
||||
ROM_LOAD16_WORD_SWAP( "d83_10.ic43", 0xc00000, 0x200000, CRC(36c440a0) SHA1(31685d3cdf4e39e1365df7e6a588c28f95d7e0a8) )
|
||||
ROM_LOAD16_WORD_SWAP( "d83_11.ic41", 0x200000, 0x100000, CRC(a790e490) SHA1(9c57405ef2ef3368eb0958a3e43601110c1cc90d) )
|
||||
ROM_LOAD16_WORD_SWAP( "d83_12.ic29", 0x500000, 0x100000, CRC(2f237b0d) SHA1(2ecb947671d263a77510bfebda03f883b55b8df4) )
|
||||
ROM_LOAD16_WORD_SWAP( "d83_13.ic31", 0x800000, 0x100000, CRC(c2cceeb6) SHA1(3ec932655326caed13a40394bbf8e8baf836de2a) )
|
||||
ROM_LOAD16_WORD_SWAP( "d83_14.ic44", 0xb00000, 0x100000, CRC(8b6f4f12) SHA1(6a28004d287f00627622376aa3d6704f2684a6f3) )
|
||||
ROM_LOAD16_WORD_SWAP( "d83_15.ic42", 0xe00000, 0x100000, CRC(1b71175e) SHA1(60ad38ce97fd7995ff2f29d6b1a3b873dc2f0eb3) )
|
||||
|
||||
ROM_REGION( 0x400000, "gfx3", 0 )
|
||||
ROM_LOAD16_BYTE( "d83_16.ic19", 0x000000, 0x100000, CRC(d364cf1e) SHA1(ee43f50edf50ec840acfb98b1314140ee9693839) )
|
||||
ROM_LOAD16_BYTE( "d83_17.ic5", 0x000001, 0x100000, CRC(0ffe737c) SHA1(5923a4edf9d0c8339f793840c2bdc691e2c651e6) )
|
||||
ROM_LOAD16_BYTE( "d83_16.ic19", 0x000001, 0x100000, CRC(d364cf1e) SHA1(ee43f50edf50ec840acfb98b1314140ee9693839) )
|
||||
ROM_LOAD16_BYTE( "d83_17.ic5", 0x000000, 0x100000, CRC(0ffe737c) SHA1(5923a4edf9d0c8339f793840c2bdc691e2c651e6) )
|
||||
ROM_LOAD ( "d83_18.ic6", 0x300000, 0x100000, CRC(87979155) SHA1(0ffafa970f9f9c98f8938104b97e63d2b5757804) )
|
||||
ROM_FILL ( 0x200000, 0x100000, 0x00 )
|
||||
|
||||
ROM_REGION16_LE( 0x80000, "user1", 0 )
|
||||
ROM_REGION16_LE( 0x80000, "spritemap", 0 )
|
||||
ROM_LOAD16_BYTE( "d83_31.ic10", 0x000001, 0x40000, CRC(85c37961) SHA1(15ea5c4904d910575e984e146c8941dff913d45f) )
|
||||
ROM_LOAD16_BYTE( "d83_32.ic11", 0x000000, 0x40000, CRC(b0db2559) SHA1(2bfae2dbe164b42e95d0a93fab82b7040c3fbc56) )
|
||||
|
||||
ROM_REGION( 0x40000, "user2", 0 )
|
||||
ROM_REGION( 0x40000, "spritemaphi", 0 )
|
||||
ROM_LOAD( "d83_30.ic9", 0x00000, 0x40000, CRC(eb86dc67) SHA1(31c7b6f30ff912fafed4b87ce8bf603ee17d1664) )
|
||||
|
||||
ROM_REGION16_BE( 0x1000000, "ensoniq.0" , ROMREGION_ERASE00 )
|
||||
@ -871,32 +846,32 @@ ROM_START( cbombersj )
|
||||
ROM_LOAD16_BYTE( "d83_29.ic27", 0x00000, 0x20000, CRC(771b4080) SHA1(a47c3a6abc07a6a61b694d32baa0ad4c25045841) )
|
||||
|
||||
ROM_REGION( 0x400000, "gfx1", 0 )
|
||||
ROM_LOAD16_BYTE( "d83_04.ic8", 0x000000, 0x200000, CRC(79f36cce) SHA1(2c8dc4cd5c4aa335c1e45888f5947acf94fa628a) )
|
||||
ROM_LOAD16_BYTE( "d83_05.ic7", 0x000001, 0x200000, CRC(7787e495) SHA1(1758de5fdd1d12727368d08d7d4752c3756fc23e) )
|
||||
ROM_LOAD32_WORD_SWAP( "d83_04.ic8", 0x000002, 0x200000, CRC(79f36cce) SHA1(2c8dc4cd5c4aa335c1e45888f5947acf94fa628a) )
|
||||
ROM_LOAD32_WORD_SWAP( "d83_05.ic7", 0x000000, 0x200000, CRC(7787e495) SHA1(1758de5fdd1d12727368d08d7d4752c3756fc23e) )
|
||||
|
||||
ROM_REGION( 0x1800000, "gfx2", 0 )
|
||||
ROM_LOAD32_BYTE( "d83_06.ic28", 0x000003, 0x200000, CRC(4b71944e) SHA1(e8ed190280c7378fb4edcb192cef0d4d62582ad5) )
|
||||
ROM_LOAD32_BYTE( "d83_07.ic30", 0x000002, 0x200000, CRC(29861b61) SHA1(76562b0243c1bc38623c0ef9d20de7572a979e37) )
|
||||
ROM_LOAD32_BYTE( "d83_08.ic32", 0x000001, 0x200000, CRC(a0e81e01) SHA1(96ad8cfc849caaf85350cfc7cf23ad23635a3813) )
|
||||
ROM_LOAD32_BYTE( "d83_09.ic45", 0x000000, 0x200000, CRC(7e4dec50) SHA1(4d8c1be739d425d8ded07774094b775f35a915bf) )
|
||||
ROM_LOAD32_BYTE( "d83_11.ic41", 0x800003, 0x100000, CRC(a790e490) SHA1(9c57405ef2ef3368eb0958a3e43601110c1cc90d) )
|
||||
ROM_LOAD32_BYTE( "d83_12.ic29", 0x800002, 0x100000, CRC(2f237b0d) SHA1(2ecb947671d263a77510bfebda03f883b55b8df4) )
|
||||
ROM_LOAD32_BYTE( "d83_13.ic31", 0x800001, 0x100000, CRC(c2cceeb6) SHA1(3ec932655326caed13a40394bbf8e8baf836de2a) )
|
||||
ROM_LOAD32_BYTE( "d83_14.ic44", 0x800000, 0x100000, CRC(8b6f4f12) SHA1(6a28004d287f00627622376aa3d6704f2684a6f3) )
|
||||
ROM_LOAD32_BYTE( "d83_10.ic43", 0xc00000, 0x200000, CRC(36c440a0) SHA1(31685d3cdf4e39e1365df7e6a588c28f95d7e0a8) )
|
||||
ROM_LOAD32_BYTE( "d83_15.ic42", 0x1400000, 0x100000, CRC(1b71175e) SHA1(60ad38ce97fd7995ff2f29d6b1a3b873dc2f0eb3) )
|
||||
ROM_REGION( 0xf00000, "gfx2", 0 )
|
||||
ROM_LOAD16_WORD_SWAP( "d83_06.ic28", 0x000000, 0x200000, CRC(4b71944e) SHA1(e8ed190280c7378fb4edcb192cef0d4d62582ad5) )
|
||||
ROM_LOAD16_WORD_SWAP( "d83_07.ic30", 0x300000, 0x200000, CRC(29861b61) SHA1(76562b0243c1bc38623c0ef9d20de7572a979e37) )
|
||||
ROM_LOAD16_WORD_SWAP( "d83_08.ic32", 0x600000, 0x200000, CRC(a0e81e01) SHA1(96ad8cfc849caaf85350cfc7cf23ad23635a3813) )
|
||||
ROM_LOAD16_WORD_SWAP( "d83_09.ic45", 0x900000, 0x200000, CRC(7e4dec50) SHA1(4d8c1be739d425d8ded07774094b775f35a915bf) )
|
||||
ROM_LOAD16_WORD_SWAP( "d83_10.ic43", 0xc00000, 0x200000, CRC(36c440a0) SHA1(31685d3cdf4e39e1365df7e6a588c28f95d7e0a8) )
|
||||
ROM_LOAD16_WORD_SWAP( "d83_11.ic41", 0x200000, 0x100000, CRC(a790e490) SHA1(9c57405ef2ef3368eb0958a3e43601110c1cc90d) )
|
||||
ROM_LOAD16_WORD_SWAP( "d83_12.ic29", 0x500000, 0x100000, CRC(2f237b0d) SHA1(2ecb947671d263a77510bfebda03f883b55b8df4) )
|
||||
ROM_LOAD16_WORD_SWAP( "d83_13.ic31", 0x800000, 0x100000, CRC(c2cceeb6) SHA1(3ec932655326caed13a40394bbf8e8baf836de2a) )
|
||||
ROM_LOAD16_WORD_SWAP( "d83_14.ic44", 0xb00000, 0x100000, CRC(8b6f4f12) SHA1(6a28004d287f00627622376aa3d6704f2684a6f3) )
|
||||
ROM_LOAD16_WORD_SWAP( "d83_15.ic42", 0xe00000, 0x100000, CRC(1b71175e) SHA1(60ad38ce97fd7995ff2f29d6b1a3b873dc2f0eb3) )
|
||||
|
||||
ROM_REGION( 0x400000, "gfx3", 0 )
|
||||
ROM_LOAD16_BYTE( "d83_16.ic19", 0x000000, 0x100000, CRC(d364cf1e) SHA1(ee43f50edf50ec840acfb98b1314140ee9693839) )
|
||||
ROM_LOAD16_BYTE( "d83_17.ic5", 0x000001, 0x100000, CRC(0ffe737c) SHA1(5923a4edf9d0c8339f793840c2bdc691e2c651e6) )
|
||||
ROM_LOAD16_BYTE( "d83_16.ic19", 0x000001, 0x100000, CRC(d364cf1e) SHA1(ee43f50edf50ec840acfb98b1314140ee9693839) )
|
||||
ROM_LOAD16_BYTE( "d83_17.ic5", 0x000000, 0x100000, CRC(0ffe737c) SHA1(5923a4edf9d0c8339f793840c2bdc691e2c651e6) )
|
||||
ROM_LOAD ( "d83_18.ic6", 0x300000, 0x100000, CRC(87979155) SHA1(0ffafa970f9f9c98f8938104b97e63d2b5757804) )
|
||||
ROM_FILL ( 0x200000, 0x100000, 0x00 )
|
||||
|
||||
ROM_REGION16_LE( 0x80000, "user1", 0 )
|
||||
ROM_REGION16_LE( 0x80000, "spritemap", 0 )
|
||||
ROM_LOAD16_BYTE( "d83_31.ic10", 0x000001, 0x40000, CRC(85c37961) SHA1(15ea5c4904d910575e984e146c8941dff913d45f) )
|
||||
ROM_LOAD16_BYTE( "d83_32.ic11", 0x000000, 0x40000, CRC(b0db2559) SHA1(2bfae2dbe164b42e95d0a93fab82b7040c3fbc56) )
|
||||
|
||||
ROM_REGION( 0x40000, "user2", 0 )
|
||||
ROM_REGION( 0x40000, "spritemaphi", 0 )
|
||||
ROM_LOAD( "d83_30.ic9", 0x00000, 0x40000, CRC(eb86dc67) SHA1(31c7b6f30ff912fafed4b87ce8bf603ee17d1664) )
|
||||
|
||||
ROM_REGION16_BE( 0x1000000, "ensoniq.0" , ROMREGION_ERASE00 )
|
||||
@ -927,65 +902,65 @@ ROM_START( cbombersp )
|
||||
ROM_LOAD16_BYTE( "5-h.bin", 0x00000, 0x20000, CRC(c6ec60e4) SHA1(554f19926e050ff2b8c56c30f174aca5a3fff845) )
|
||||
|
||||
ROM_REGION( 0x400000, "gfx1", 0 )
|
||||
ROM_LOAD32_BYTE( "scp0ll_ic7.bin", 0x000000, 0x80000, CRC(b1af439d) SHA1(a13fb4242808d1f3fc629988912c8186a99fb878) )
|
||||
ROM_LOAD32_BYTE( "scp0aa_2b04_ic35.bin", 0x000000, 0x80000, CRC(b8ec56bd) SHA1(00191fd4b2e315a5a18f2e690a45b6f6a6ebb3d2) )
|
||||
ROM_LOAD32_BYTE( "scp0hl_ic9.bin", 0x000001, 0x80000, CRC(5b6e413e) SHA1(7eaee158e985a20b5c228b476ee102f88311423a) )
|
||||
ROM_LOAD32_BYTE( "scp0lh_ic22.bin", 0x000002, 0x80000, CRC(d5109bca) SHA1(c4c5b8dbc1139718d2aa73413b1b206f9df10fed) )
|
||||
ROM_LOAD32_BYTE( "scp0aa_2b04_ic35.bin", 0x000003, 0x80000, CRC(b8ec56bd) SHA1(00191fd4b2e315a5a18f2e690a45b6f6a6ebb3d2) )
|
||||
ROM_LOAD32_BYTE( "scp1ll_ic8.bin", 0x200000, 0x80000, CRC(eaa5839a) SHA1(80c7bb1151253a23934b65110db973641f7a073e) )
|
||||
ROM_LOAD32_BYTE( "scp0ll_ic7.bin", 0x000003, 0x80000, CRC(b1af439d) SHA1(a13fb4242808d1f3fc629988912c8186a99fb878) )
|
||||
ROM_LOAD32_BYTE( "scp1hh_ic36.bin", 0x200000, 0x80000, CRC(24f545d8) SHA1(c5ae0e714ed4765f3416cb58bc9cfccfbf78081c) )
|
||||
ROM_LOAD32_BYTE( "scp1hl_ic24.bin", 0x200001, 0x80000, CRC(46d198ba) SHA1(d9c9ddb23ad8f2abbd0ab2322d31d929085f0591) )
|
||||
ROM_LOAD32_BYTE( "scp1lh_ic23.bin", 0x200002, 0x80000, CRC(7c9f0035) SHA1(a5632bd11426ba2cf0016847a3c08a2b90498271) )
|
||||
ROM_LOAD32_BYTE( "scp1hh_ic36.bin", 0x200003, 0x80000, CRC(24f545d8) SHA1(c5ae0e714ed4765f3416cb58bc9cfccfbf78081c) )
|
||||
ROM_LOAD32_BYTE( "scp1ll_ic8.bin", 0x200003, 0x80000, CRC(eaa5839a) SHA1(80c7bb1151253a23934b65110db973641f7a073e) )
|
||||
|
||||
ROM_REGION( 0x1800000, "gfx2", 0 )
|
||||
ROM_REGION( 0xf00000, "gfx2", 0 )
|
||||
// tiles 0x00000 - 0x07fff
|
||||
ROMX_LOAD( "obj0l_ic29.bin", 0x0000003, 0x80000, CRC(4b954950) SHA1(cafd9ba3128aa2e7dbde959a705aff8db6c311fa) , ROM_SKIP(7) ) // bp 1
|
||||
ROMX_LOAD( "obj16l_ic20.bin", 0x0000002, 0x80000, CRC(b53932c0) SHA1(94ea6ccc29bd7b7e94d7494aaf0cc19b67c4ce72) , ROM_SKIP(7) ) // bp 2
|
||||
ROMX_LOAD( "obj32l_ic51.bin", 0x0000001, 0x80000, CRC(f23f7253) SHA1(cbff5aee79d1b4990a35d5fc55e348aa81b2b5d3) , ROM_SKIP(7) ) // bp 3
|
||||
ROMX_LOAD( "obj48l_ic53.bin", 0x0000000, 0x80000, CRC(85bb6b75) SHA1(ccff9c331b54e3c3618d205ffd4b999fcf861e09) , ROM_SKIP(7) ) // bp 4
|
||||
ROMX_LOAD( "obj8l_ic4.bin", 0x0000007, 0x80000, CRC(d26140bb) SHA1(c882150c2914f23c5a27b43a228c62401cdb1a73) , ROM_SKIP(7) ) // bp 1
|
||||
ROMX_LOAD( "obj24l_ic50.bin", 0x0000006, 0x80000, CRC(27c76f27) SHA1(c3e96015abc042420632e489e202684c358a5f42) , ROM_SKIP(7) ) // bp 2
|
||||
ROMX_LOAD( "obj40l_ic52.bin", 0x0000005, 0x80000, CRC(09aaf6c5) SHA1(f2838fbf5ede241939562a65ecb908d882f267e2) , ROM_SKIP(7) ) // bp 3
|
||||
ROMX_LOAD( "obj56l_ic54.bin", 0x0000004, 0x80000, CRC(8b6bacdf) SHA1(fe22f700147f641339ef754b3e5896279b5c2800) , ROM_SKIP(7) ) // bp 4
|
||||
ROMX_LOAD( "obj64l_ic55.bin", 0x0c00000, 0x80000, CRC(18c976f1) SHA1(4fa53bbfaacd8ca9c7bec3aeff13481302aeefdc) , ROM_SKIP(7) ) // bp 5
|
||||
ROMX_LOAD( "obj72l_ic56.bin", 0x0c00004, 0x80000, CRC(6a1b5ebc) SHA1(632d19d73c8cf75e3c428f1870e75c07b6846be5) , ROM_SKIP(7) ) // bp 5
|
||||
ROM_LOAD16_BYTE( "obj0l_ic29.bin", 0x0000001, 0x80000, CRC(4b954950) SHA1(cafd9ba3128aa2e7dbde959a705aff8db6c311fa) ) // bp 1
|
||||
ROM_LOAD16_BYTE( "obj16l_ic20.bin", 0x0300001, 0x80000, CRC(b53932c0) SHA1(94ea6ccc29bd7b7e94d7494aaf0cc19b67c4ce72) ) // bp 2
|
||||
ROM_LOAD16_BYTE( "obj32l_ic51.bin", 0x0600001, 0x80000, CRC(f23f7253) SHA1(cbff5aee79d1b4990a35d5fc55e348aa81b2b5d3) ) // bp 3
|
||||
ROM_LOAD16_BYTE( "obj48l_ic53.bin", 0x0900001, 0x80000, CRC(85bb6b75) SHA1(ccff9c331b54e3c3618d205ffd4b999fcf861e09) ) // bp 4
|
||||
ROM_LOAD16_BYTE( "obj64l_ic55.bin", 0x0c00001, 0x80000, CRC(18c976f1) SHA1(4fa53bbfaacd8ca9c7bec3aeff13481302aeefdc) ) // bp 5
|
||||
ROM_LOAD16_BYTE( "obj8l_ic4.bin", 0x0000000, 0x80000, CRC(d26140bb) SHA1(c882150c2914f23c5a27b43a228c62401cdb1a73) ) // bp 1
|
||||
ROM_LOAD16_BYTE( "obj24l_ic50.bin", 0x0300000, 0x80000, CRC(27c76f27) SHA1(c3e96015abc042420632e489e202684c358a5f42) ) // bp 2
|
||||
ROM_LOAD16_BYTE( "obj40l_ic52.bin", 0x0600000, 0x80000, CRC(09aaf6c5) SHA1(f2838fbf5ede241939562a65ecb908d882f267e2) ) // bp 3
|
||||
ROM_LOAD16_BYTE( "obj56l_ic54.bin", 0x0900000, 0x80000, CRC(8b6bacdf) SHA1(fe22f700147f641339ef754b3e5896279b5c2800) ) // bp 4
|
||||
ROM_LOAD16_BYTE( "obj72l_ic56.bin", 0x0c00000, 0x80000, CRC(6a1b5ebc) SHA1(632d19d73c8cf75e3c428f1870e75c07b6846be5) ) // bp 5
|
||||
// tiles 0x08000 - 0x0ffff
|
||||
ROMX_LOAD( "obj0h_ic30.bin", 0x0400003, 0x80000, CRC(4c436ad2) SHA1(34fb6bb5aa7b131dda2d167a5dacc09090698dd1) , ROM_SKIP(7) ) // bp 1
|
||||
ROMX_LOAD( "obj16h_ic21.bin", 0x0400002, 0x80000, CRC(5406b71e) SHA1(5e10db4d9052b903987629aa1df34bd4380ad29b) , ROM_SKIP(7) ) // bp 2
|
||||
ROMX_LOAD( "ic65_4b57.bin", 0x0400001, 0x80000, CRC(6a1a8054) SHA1(20a001b1957fa67297959b86e20a0c2a417c2452) , ROM_SKIP(7) ) // bp 3
|
||||
ROMX_LOAD( "ic67_0956.bin", 0x0400000, 0x80000, CRC(abe445dd) SHA1(22ad1ace2ee80a2297e4a004b6f5cd52c7c9b187) , ROM_SKIP(7) ) // bp 4
|
||||
ROMX_LOAD( "obj8l_ic5.bin", 0x0400007, 0x80000, CRC(46b028eb) SHA1(02bb36108636695bc6db523991b34713599b2716) , ROM_SKIP(7) ) // bp 1
|
||||
ROMX_LOAD( "ic64_5aba.bin", 0x0400006, 0x80000, CRC(0912b766) SHA1(62a8c0f2341b7e1f7b7ba0e194eda39f502209e6) , ROM_SKIP(7) ) // bp 2
|
||||
ROMX_LOAD( "ic66_4ae9.bin", 0x0400005, 0x80000, CRC(77aafe1a) SHA1(35392526d5b6d974bff3bda316677fa0890b76a8) , ROM_SKIP(7) ) // bp 3
|
||||
ROMX_LOAD( "ic68_1429.bin", 0x0400004, 0x80000, CRC(2e5857e5) SHA1(04bdd2e7cc89b14c7d7d72de45a7cce74cbcf7bd) , ROM_SKIP(7) ) // bp 4
|
||||
ROMX_LOAD( "ic69_43b4.bin", 0x1000000, 0x80000, CRC(d08643be) SHA1(aacc324276c92b5786298b474ad6277fb802c470) , ROM_SKIP(7) ) // bp 5
|
||||
ROMX_LOAD( "ic70_4504.bin", 0x1000004, 0x80000, CRC(3cf5d9d7) SHA1(35cc8b403550fb9928003308139de05ceb7bd5bb) , ROM_SKIP(7) ) // bp 5
|
||||
ROM_LOAD16_BYTE( "obj0h_ic30.bin", 0x0100001, 0x80000, CRC(4c436ad2) SHA1(34fb6bb5aa7b131dda2d167a5dacc09090698dd1) ) // bp 1
|
||||
ROM_LOAD16_BYTE( "obj16h_ic21.bin", 0x0400001, 0x80000, CRC(5406b71e) SHA1(5e10db4d9052b903987629aa1df34bd4380ad29b) ) // bp 2
|
||||
ROM_LOAD16_BYTE( "ic65_4b57.bin", 0x0700001, 0x80000, CRC(6a1a8054) SHA1(20a001b1957fa67297959b86e20a0c2a417c2452) ) // bp 3
|
||||
ROM_LOAD16_BYTE( "ic67_0956.bin", 0x0a00001, 0x80000, CRC(abe445dd) SHA1(22ad1ace2ee80a2297e4a004b6f5cd52c7c9b187) ) // bp 4
|
||||
ROM_LOAD16_BYTE( "ic69_43b4.bin", 0x0d00001, 0x80000, CRC(d08643be) SHA1(aacc324276c92b5786298b474ad6277fb802c470) ) // bp 5
|
||||
ROM_LOAD16_BYTE( "obj8l_ic5.bin", 0x0100000, 0x80000, CRC(46b028eb) SHA1(02bb36108636695bc6db523991b34713599b2716) ) // bp 1
|
||||
ROM_LOAD16_BYTE( "ic64_5aba.bin", 0x0400000, 0x80000, CRC(0912b766) SHA1(62a8c0f2341b7e1f7b7ba0e194eda39f502209e6) ) // bp 2
|
||||
ROM_LOAD16_BYTE( "ic66_4ae9.bin", 0x0700000, 0x80000, CRC(77aafe1a) SHA1(35392526d5b6d974bff3bda316677fa0890b76a8) ) // bp 3
|
||||
ROM_LOAD16_BYTE( "ic68_1429.bin", 0x0a00000, 0x80000, CRC(2e5857e5) SHA1(04bdd2e7cc89b14c7d7d72de45a7cce74cbcf7bd) ) // bp 4
|
||||
ROM_LOAD16_BYTE( "ic70_4504.bin", 0x0d00000, 0x80000, CRC(3cf5d9d7) SHA1(35cc8b403550fb9928003308139de05ceb7bd5bb) ) // bp 5
|
||||
// tiles 0x10000 - 0x17fff
|
||||
ROMX_LOAD( "obj0l_ic31.bin", 0x0800003, 0x80000, CRC(9a20d601) SHA1(f3e561ed8687b65c6328c10d69c74615e693a83f) , ROM_SKIP(7) ) // bp 1
|
||||
ROMX_LOAD( "obj16l_ic33.bin", 0x0800002, 0x80000, CRC(ea9df360) SHA1(4b0b50679ae4438f117b631b76b02a5170cc292a) , ROM_SKIP(7) ) // bp 2
|
||||
ROMX_LOAD( "ic77_36ac.bin", 0x0800001, 0x80000, CRC(75628014) SHA1(62f8ba94be047e54c3577e6ecd68b3e613905a9f) , ROM_SKIP(7) ) // bp 3
|
||||
ROMX_LOAD( "ic79_ef40.bin", 0x0800000, 0x80000, CRC(6af34bbf) SHA1(7bd021fc041465abe8dc6ac1ada634ae7314fec9) , ROM_SKIP(7) ) // bp 4
|
||||
ROMX_LOAD( "obj8l_ic6.bin", 0x0800007, 0x80000, CRC(2037aad5) SHA1(0c837a39d92e99536bcd949c80fbdd4c37ad7e34) , ROM_SKIP(7) ) // bp 1
|
||||
ROMX_LOAD( "ic76_443a.bin", 0x0800006, 0x80000, CRC(e5820610) SHA1(0eefb098766187983d88017863ce3a3418807428) , ROM_SKIP(7) ) // bp 2
|
||||
ROMX_LOAD( "ic78_989c.bin", 0x0800005, 0x80000, CRC(23ec2896) SHA1(b5fcc88d2428ff9341690a0e0a1fc25e42684680) , ROM_SKIP(7) ) // bp 3
|
||||
ROMX_LOAD( "ic80_d511.bin", 0x0800004, 0x80000, CRC(37da5baf) SHA1(a78ac413de08a1ff70ab14561b75df633a9e5be8) , ROM_SKIP(7) ) // bp 4
|
||||
ROMX_LOAD( "ic81_e150.bin", 0x1400000, 0x80000, CRC(48dbc4fb) SHA1(acec207d05a8ea615f27216fbfd567cc630e5191) , ROM_SKIP(7) ) // bp 5
|
||||
ROMX_LOAD( "ic82_3d3d.bin", 0x1400004, 0x80000, CRC(3e62970e) SHA1(82970accb4ce29034e7b97b74c831ec0314c5a8f) , ROM_SKIP(7) ) // bp 5
|
||||
ROM_LOAD16_BYTE( "obj0l_ic31.bin", 0x0200001, 0x80000, CRC(9a20d601) SHA1(f3e561ed8687b65c6328c10d69c74615e693a83f) ) // bp 1
|
||||
ROM_LOAD16_BYTE( "obj16l_ic33.bin", 0x0500001, 0x80000, CRC(ea9df360) SHA1(4b0b50679ae4438f117b631b76b02a5170cc292a) ) // bp 2
|
||||
ROM_LOAD16_BYTE( "ic77_36ac.bin", 0x0800001, 0x80000, CRC(75628014) SHA1(62f8ba94be047e54c3577e6ecd68b3e613905a9f) ) // bp 3
|
||||
ROM_LOAD16_BYTE( "ic79_ef40.bin", 0x0b00001, 0x80000, CRC(6af34bbf) SHA1(7bd021fc041465abe8dc6ac1ada634ae7314fec9) ) // bp 4
|
||||
ROM_LOAD16_BYTE( "ic81_e150.bin", 0x0e00001, 0x80000, CRC(48dbc4fb) SHA1(acec207d05a8ea615f27216fbfd567cc630e5191) ) // bp 5
|
||||
ROM_LOAD16_BYTE( "obj8l_ic6.bin", 0x0200000, 0x80000, CRC(2037aad5) SHA1(0c837a39d92e99536bcd949c80fbdd4c37ad7e34) ) // bp 1
|
||||
ROM_LOAD16_BYTE( "ic76_443a.bin", 0x0500000, 0x80000, CRC(e5820610) SHA1(0eefb098766187983d88017863ce3a3418807428) ) // bp 2
|
||||
ROM_LOAD16_BYTE( "ic78_989c.bin", 0x0800000, 0x80000, CRC(23ec2896) SHA1(b5fcc88d2428ff9341690a0e0a1fc25e42684680) ) // bp 3
|
||||
ROM_LOAD16_BYTE( "ic80_d511.bin", 0x0b00000, 0x80000, CRC(37da5baf) SHA1(a78ac413de08a1ff70ab14561b75df633a9e5be8) ) // bp 4
|
||||
ROM_LOAD16_BYTE( "ic82_3d3d.bin", 0x0e00000, 0x80000, CRC(3e62970e) SHA1(82970accb4ce29034e7b97b74c831ec0314c5a8f) ) // bp 5
|
||||
|
||||
ROM_REGION( 0x400000, "gfx3", 0 )
|
||||
ROM_LOAD16_BYTE( "ic44_scc1.bin", 0x000001, 0x080000, CRC(868d0d3d) SHA1(29251d545548856296b5ae32a96f2eeef2418dc4) )
|
||||
ROM_LOAD16_BYTE( "ic43_scc4.bin", 0x000000, 0x080000, CRC(2f170ee4) SHA1(2b8f07186c9f7589e1af131b8c377443a29bd149) )
|
||||
ROM_LOAD16_BYTE( "ic44_scc1.bin", 0x000000, 0x080000, CRC(868d0d3d) SHA1(29251d545548856296b5ae32a96f2eeef2418dc4) )
|
||||
ROM_LOAD16_BYTE( "ic43_scc4.bin", 0x000001, 0x080000, CRC(2f170ee4) SHA1(2b8f07186c9f7589e1af131b8c377443a29bd149) )
|
||||
ROM_LOAD ( "ic45_5cc2.bin", 0x300000, 0x080000, CRC(7ae48d63) SHA1(2a8b291f0a683ed5b0c39d221737956b6fc72fa5) )
|
||||
ROM_FILL ( 0x200000, 0x080000, 0x00 )
|
||||
ROM_LOAD16_BYTE( "ic58_f357.bin", 0x100001, 0x080000, CRC(16486967) SHA1(c2fd6c9f21232656b52ab589ac61f94aa728524e) )
|
||||
ROM_LOAD16_BYTE( "ic57_1a62.bin", 0x100000, 0x080000, CRC(afd45e35) SHA1(6d7c0729c7d2b204473679b97923130e289f429d) )
|
||||
ROM_LOAD16_BYTE( "ic58_f357.bin", 0x100000, 0x080000, CRC(16486967) SHA1(c2fd6c9f21232656b52ab589ac61f94aa728524e) )
|
||||
ROM_LOAD16_BYTE( "ic57_1a62.bin", 0x100001, 0x080000, CRC(afd45e35) SHA1(6d7c0729c7d2b204473679b97923130e289f429d) )
|
||||
ROM_LOAD ( "ic59_7cce.bin", 0x380000, 0x080000, CRC(ee762199) SHA1(d56e96feeedba8b77f8f18cb380d2902ca3f1e50) )
|
||||
ROM_FILL ( 0x280000, 0x080000, 0x00 )
|
||||
|
||||
ROM_REGION16_LE( 0x80000, "user1", 0 )
|
||||
ROM_REGION16_LE( 0x80000, "spritemap", 0 )
|
||||
ROM_LOAD16_BYTE( "st8_ic2.bin", 0x000001, 0x40000, CRC(d74254d8) SHA1(f4a4f9d95f70edf74d937be067d6a9f68a955ea7) )
|
||||
ROM_LOAD16_BYTE( "st0_ic1.bin", 0x000000, 0x40000, CRC(c414c479) SHA1(e585502fcfa6ae2a36a66927ba2c49e49317f149) )
|
||||
|
||||
ROM_REGION( 0x40000, "user2", 0 )
|
||||
ROM_REGION( 0x40000, "spritemaphi", 0 )
|
||||
ROM_LOAD( "st16_ic3.bin", 0x00000, 0x40000, CRC(c4ff6b2f) SHA1(65795bcb3749cce9c291204cd64fafa529317e14) )
|
||||
|
||||
ROM_REGION16_BE( 0x1000000, "ensoniq.0" , ROMREGION_ERASE00 )
|
||||
@ -1008,60 +983,34 @@ ROM_START( cbombersp )
|
||||
ROM_END
|
||||
|
||||
|
||||
void undrfire_state::init_undrfire()
|
||||
void undrfire_state::driver_init()
|
||||
{
|
||||
uint8_t *gfx = memregion("gfx3")->base();
|
||||
int size = memregion("gfx3")->bytes();
|
||||
u8 *gfx = memregion("gfx3")->base();
|
||||
const u32 size = memregion("gfx3")->bytes();
|
||||
|
||||
/* make SCC tile GFX format suitable for gfxdecode */
|
||||
uint32_t offset = size / 2;
|
||||
for (uint32_t i = size / 2 + size / 4; i < size; i++)
|
||||
u32 offset = size / 2;
|
||||
for (u32 i = size / 2 + size / 4; i < size; i++)
|
||||
{
|
||||
/* Expand 2bits into 4bits format */
|
||||
int data = gfx[i];
|
||||
int d1 = (data>>0) & 3;
|
||||
int d2 = (data>>2) & 3;
|
||||
int d3 = (data>>4) & 3;
|
||||
int d4 = (data>>6) & 3;
|
||||
|
||||
gfx[offset] = (d1<<2) | (d2<<6);
|
||||
offset++;
|
||||
|
||||
gfx[offset] = (d3<<2) | (d4<<6);
|
||||
offset++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void undrfire_state::init_cbombers()
|
||||
{
|
||||
uint8_t *gfx = memregion("gfx3")->base();
|
||||
int size = memregion("gfx3")->bytes();
|
||||
|
||||
/* make SCC tile GFX format suitable for gfxdecode */
|
||||
uint32_t offset = size/2;
|
||||
for (uint32_t i = size/2+size/4; i<size; i++)
|
||||
{
|
||||
/* Expand 2bits into 4bits format */
|
||||
int data = gfx[i];
|
||||
int d1 = (data >> 0) & 3;
|
||||
int d2 = (data >> 2) & 3;
|
||||
int d3 = (data >> 4) & 3;
|
||||
int d4 = (data >> 6) & 3;
|
||||
|
||||
gfx[offset] = (d1 << 2) | (d2 << 6);
|
||||
offset++;
|
||||
const u8 data = gfx[i];
|
||||
const u8 d1 = (data >> 0) & 3;
|
||||
const u8 d2 = (data >> 2) & 3;
|
||||
const u8 d3 = (data >> 4) & 3;
|
||||
const u8 d4 = (data >> 6) & 3;
|
||||
|
||||
gfx[offset] = (d3 << 2) | (d4 << 6);
|
||||
offset++;
|
||||
|
||||
gfx[offset] = (d1 << 2) | (d2 << 6);
|
||||
offset++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
GAME( 1993, undrfire, 0, undrfire, undrfire, undrfire_state, init_undrfire, ROT0, "Taito Corporation Japan", "Under Fire (World)", 0 )
|
||||
GAME( 1993, undrfireu, undrfire, undrfire, undrfire, undrfire_state, init_undrfire, ROT0, "Taito America Corporation", "Under Fire (US)", 0 )
|
||||
GAME( 1993, undrfirej, undrfire, undrfire, undrfire, undrfire_state, init_undrfire, ROT0, "Taito Corporation", "Under Fire (Japan)", 0 )
|
||||
GAMEL(1994, cbombers, 0, cbombers, cbombers, undrfire_state, init_cbombers, ROT0, "Taito Corporation Japan", "Chase Bombers (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN, layout_cbombers )
|
||||
GAMEL(1994, cbombersj, cbombers, cbombers, cbombers, undrfire_state, init_cbombers, ROT0, "Taito Corporation", "Chase Bombers (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN, layout_cbombers )
|
||||
GAMEL(1994, cbombersp, cbombers, cbombers, cbombers, undrfire_state, init_cbombers, ROT0, "Taito Corporation", "Chase Bombers (Japan Prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN, layout_cbombers )
|
||||
GAME( 1993, undrfire, 0, undrfire, undrfire, undrfire_state, driver_init, ROT0, "Taito Corporation Japan", "Under Fire (World)", 0 )
|
||||
GAME( 1993, undrfireu, undrfire, undrfire, undrfire, undrfire_state, driver_init, ROT0, "Taito America Corporation", "Under Fire (US)", 0 )
|
||||
GAME( 1993, undrfirej, undrfire, undrfire, undrfire, undrfire_state, driver_init, ROT0, "Taito Corporation", "Under Fire (Japan)", 0 )
|
||||
GAMEL(1994, cbombers, 0, cbombers, cbombers, undrfire_state, driver_init, ROT0, "Taito Corporation Japan", "Chase Bombers (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN, layout_cbombers )
|
||||
GAMEL(1994, cbombersj, cbombers, cbombers, cbombers, undrfire_state, driver_init, ROT0, "Taito Corporation", "Chase Bombers (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN, layout_cbombers )
|
||||
GAMEL(1994, cbombersp, cbombers, cbombers, cbombers, undrfire_state, driver_init, ROT0, "Taito Corporation", "Chase Bombers (Japan Prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN, layout_cbombers )
|
||||
|
@ -24,14 +24,18 @@ public:
|
||||
m_shared_ram(*this, "shared_ram"),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_palette(*this, "palette")
|
||||
m_palette(*this, "palette"),
|
||||
m_spritemap(*this, "spritemap"),
|
||||
m_spritemaphi(*this, "spritemaphi"),
|
||||
m_in_gunx(*this, "GUNX%u", 1U),
|
||||
m_in_guny(*this, "GUNY%u", 1U),
|
||||
m_io_fake(*this, "FAKE")
|
||||
{ }
|
||||
|
||||
void undrfire(machine_config &config);
|
||||
void cbombers(machine_config &config);
|
||||
|
||||
void init_undrfire();
|
||||
void init_cbombers();
|
||||
void driver_init() override;
|
||||
|
||||
protected:
|
||||
enum
|
||||
@ -44,12 +48,12 @@ protected:
|
||||
private:
|
||||
struct uf_tempsprite
|
||||
{
|
||||
int gfx;
|
||||
int code,color;
|
||||
int flipx,flipy;
|
||||
u8 gfx;
|
||||
u32 code,color;
|
||||
bool flipx,flipy;
|
||||
int x,y;
|
||||
int zoomx,zoomy;
|
||||
int primask;
|
||||
u32 primask;
|
||||
};
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
@ -57,30 +61,37 @@ private:
|
||||
required_device<tc0100scn_device> m_tc0100scn;
|
||||
required_device<tc0480scp_device> m_tc0480scp;
|
||||
required_device<eeprom_serial_93cxx_device> m_eeprom;
|
||||
optional_shared_ptr<uint32_t> m_ram;
|
||||
optional_shared_ptr<uint32_t> m_shared_ram;
|
||||
uint16_t m_port_sel;
|
||||
optional_shared_ptr<u32> m_ram;
|
||||
optional_shared_ptr<u16> m_shared_ram;
|
||||
u16 m_port_sel;
|
||||
int m_frame_counter;
|
||||
std::unique_ptr<uf_tempsprite[]> m_spritelist;
|
||||
uint16_t m_rotate_ctrl[8];
|
||||
uint8_t m_dislayer[6];
|
||||
required_shared_ptr<uint32_t> m_spriteram;
|
||||
u16 m_rotate_ctrl[8];
|
||||
u8 m_dislayer[6];
|
||||
required_shared_ptr<u32> m_spriteram;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
DECLARE_WRITE8_MEMBER(coin_word_w);
|
||||
DECLARE_READ16_MEMBER(shared_ram_r);
|
||||
DECLARE_WRITE16_MEMBER(shared_ram_w);
|
||||
DECLARE_READ32_MEMBER(undrfire_lightgun_r);
|
||||
DECLARE_WRITE32_MEMBER(rotate_control_w);
|
||||
DECLARE_WRITE32_MEMBER(motor_control_w);
|
||||
DECLARE_WRITE32_MEMBER(cbombers_cpua_ctrl_w);
|
||||
required_region_ptr<u16> m_spritemap;
|
||||
optional_region_ptr<u8> m_spritemaphi;
|
||||
|
||||
optional_ioport_array<2> m_in_gunx;
|
||||
optional_ioport_array<2> m_in_guny;
|
||||
optional_ioport m_io_fake;
|
||||
|
||||
void coin_word_w(u8 data);
|
||||
u16 shared_ram_r(offs_t offset);
|
||||
void shared_ram_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
u32 undrfire_lightgun_r(offs_t offset);
|
||||
void rotate_control_w(offs_t offset, u16 data);
|
||||
void motor_control_w(u8 data);
|
||||
void cbombers_cpua_ctrl_w(u32 data);
|
||||
DECLARE_READ_LINE_MEMBER(frame_counter_r);
|
||||
uint32_t screen_update_undrfire(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
uint32_t screen_update_cbombers(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
u32 screen_update_undrfire(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
u32 screen_update_cbombers(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(undrfire_interrupt);
|
||||
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect,const int *primasks,int x_offs,int y_offs);
|
||||
void draw_sprites_cbombers(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect,const int *primasks,int x_offs,int y_offs);
|
||||
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect,const u32 *primasks,int x_offs,int y_offs);
|
||||
void draw_sprites_cbombers(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect,const u32 *primasks,int x_offs,int y_offs);
|
||||
|
||||
void cbombers_cpua_map(address_map &map);
|
||||
void cbombers_cpub_map(address_map &map);
|
||||
|
@ -10,11 +10,9 @@
|
||||
|
||||
void undrfire_state::video_start()
|
||||
{
|
||||
int i;
|
||||
|
||||
m_spritelist = std::make_unique<uf_tempsprite[]>(0x4000);
|
||||
|
||||
for (i = 0; i < 16384; i++) /* Fix later - some weird colours in places */
|
||||
for (int i = 0; i < 16384; i++) /* Fix later - some weird colours in places */
|
||||
m_palette->set_pen_color(i, rgb_t(0,0,0));
|
||||
}
|
||||
|
||||
@ -65,43 +63,36 @@ Heavy use is made of sprite zooming.
|
||||
|
||||
***************************************************************/
|
||||
|
||||
void undrfire_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect,const int *primasks,int x_offs,int y_offs)
|
||||
void undrfire_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect,const u32 *primasks,int x_offs,int y_offs)
|
||||
{
|
||||
uint32_t *spriteram32 = m_spriteram;
|
||||
uint16_t *spritemap = (uint16_t *)memregion("user1")->base();
|
||||
int offs, data, tilenum, color, flipx, flipy;
|
||||
int x, y, priority, dblsize, curx, cury;
|
||||
int sprites_flipscreen = 0;
|
||||
int zoomx, zoomy, zx, zy;
|
||||
int sprite_chunk,map_offset,code,j,k,px,py;
|
||||
int dimension,total_chunks,bad_chunks;
|
||||
|
||||
/* pdrawgfx() needs us to draw sprites front to back, so we have to build a list
|
||||
while processing sprite ram and then draw them all at the end */
|
||||
struct uf_tempsprite *sprite_ptr = m_spritelist.get();
|
||||
|
||||
for (offs = (m_spriteram.bytes()/4-4);offs >= 0;offs -= 4)
|
||||
for (int offs = (m_spriteram.bytes()/4 - 4); offs >= 0; offs -= 4)
|
||||
{
|
||||
data = spriteram32[offs+0];
|
||||
flipx = (data & 0x00800000) >> 23;
|
||||
zoomx = (data & 0x007f0000) >> 16;
|
||||
tilenum = (data & 0x00007fff);
|
||||
u32 data = m_spriteram[offs+0];
|
||||
int flipx = (data & 0x00800000) >> 23;
|
||||
int zoomx = (data & 0x007f0000) >> 16;
|
||||
const u32 tilenum = (data & 0x00007fff);
|
||||
|
||||
data = spriteram32[offs+2];
|
||||
priority = (data & 0x000c0000) >> 18;
|
||||
color = (data & 0x0003fc00) >> 10;
|
||||
x = (data & 0x000003ff);
|
||||
data = m_spriteram[offs+2];
|
||||
const int priority = (data & 0x000c0000) >> 18;
|
||||
int color = (data & 0x0003fc00) >> 10;
|
||||
int x = (data & 0x000003ff);
|
||||
|
||||
data = spriteram32[offs+3];
|
||||
dblsize = (data & 0x00040000) >> 18;
|
||||
flipy = (data & 0x00020000) >> 17;
|
||||
zoomy = (data & 0x0001fc00) >> 10;
|
||||
y = (data & 0x000003ff);
|
||||
data = m_spriteram[offs+3];
|
||||
const int dblsize = (data & 0x00040000) >> 18;
|
||||
int flipy = (data & 0x00020000) >> 17;
|
||||
int zoomy = (data & 0x0001fc00) >> 10;
|
||||
int y = (data & 0x000003ff);
|
||||
|
||||
color |= (0x100 + (priority << 6)); /* priority bits select color bank */
|
||||
color /= 2; /* as sprites are 5bpp */
|
||||
flipy = !flipy;
|
||||
y = (-y &0x3ff);
|
||||
y = (-y & 0x3ff);
|
||||
|
||||
if (!tilenum) continue;
|
||||
|
||||
@ -112,79 +103,77 @@ void undrfire_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,co
|
||||
y += y_offs;
|
||||
|
||||
/* treat coords as signed */
|
||||
if (x>0x340) x -= 0x400;
|
||||
if (y>0x340) y -= 0x400;
|
||||
if (x > 0x340) x -= 0x400;
|
||||
if (y > 0x340) y -= 0x400;
|
||||
|
||||
x -= x_offs;
|
||||
|
||||
bad_chunks = 0;
|
||||
dimension = ((dblsize*2) + 2); // 2 or 4
|
||||
total_chunks = ((dblsize*3) + 1) << 2; // 4 or 16
|
||||
map_offset = tilenum << 2;
|
||||
int bad_chunks = 0;
|
||||
const int dimension = ((dblsize*2) + 2); // 2 or 4
|
||||
const int total_chunks = ((dblsize*3) + 1) << 2; // 4 or 16
|
||||
const int map_offset = tilenum << 2;
|
||||
|
||||
for (int sprite_chunk = 0; sprite_chunk < total_chunks; sprite_chunk++)
|
||||
{
|
||||
for (sprite_chunk=0;sprite_chunk<total_chunks;sprite_chunk++)
|
||||
const int j = sprite_chunk / dimension; /* rows */
|
||||
const int k = sprite_chunk % dimension; /* chunks per row */
|
||||
|
||||
int px = k;
|
||||
int py = j;
|
||||
/* pick tiles back to front for x and y flips */
|
||||
if (flipx) px = dimension - 1 - k;
|
||||
if (flipy) py = dimension - 1 - j;
|
||||
|
||||
const u16 code = m_spritemap[map_offset + px + (py << (dblsize + 1))];
|
||||
|
||||
if (code == 0xffff)
|
||||
{
|
||||
j = sprite_chunk / dimension; /* rows */
|
||||
k = sprite_chunk % dimension; /* chunks per row */
|
||||
bad_chunks += 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
px = k;
|
||||
py = j;
|
||||
/* pick tiles back to front for x and y flips */
|
||||
if (flipx) px = dimension-1-k;
|
||||
if (flipy) py = dimension-1-j;
|
||||
int curx = x + ((k * zoomx) / dimension);
|
||||
int cury = y + ((j * zoomy) / dimension);
|
||||
|
||||
code = spritemap[map_offset + px + (py<<(dblsize+1))];
|
||||
const int zx = x + (((k + 1) * zoomx) / dimension) - curx;
|
||||
const int zy = y + (((j + 1) * zoomy) / dimension) - cury;
|
||||
|
||||
if (code==0xffff)
|
||||
{
|
||||
bad_chunks += 1;
|
||||
continue;
|
||||
}
|
||||
if (sprites_flipscreen)
|
||||
{
|
||||
/* -zx/y is there to fix zoomed sprite coords in screenflip.
|
||||
drawgfxzoom does not know to draw from flip-side of sprites when
|
||||
screen is flipped; so we must correct the coords ourselves. */
|
||||
|
||||
curx = x + ((k*zoomx)/dimension);
|
||||
cury = y + ((j*zoomy)/dimension);
|
||||
curx = 320 - curx - zx;
|
||||
cury = 256 - cury - zy;
|
||||
flipx = !flipx;
|
||||
flipy = !flipy;
|
||||
}
|
||||
|
||||
zx= x + (((k+1)*zoomx)/dimension) - curx;
|
||||
zy= y + (((j+1)*zoomy)/dimension) - cury;
|
||||
sprite_ptr->gfx = 0;
|
||||
sprite_ptr->code = code;
|
||||
sprite_ptr->color = color;
|
||||
sprite_ptr->flipx = !flipx;
|
||||
sprite_ptr->flipy = flipy;
|
||||
sprite_ptr->x = curx;
|
||||
sprite_ptr->y = cury;
|
||||
sprite_ptr->zoomx = zx << 12;
|
||||
sprite_ptr->zoomy = zy << 12;
|
||||
|
||||
if (sprites_flipscreen)
|
||||
{
|
||||
/* -zx/y is there to fix zoomed sprite coords in screenflip.
|
||||
drawgfxzoom does not know to draw from flip-side of sprites when
|
||||
screen is flipped; so we must correct the coords ourselves. */
|
||||
if (primasks)
|
||||
{
|
||||
sprite_ptr->primask = primasks[priority];
|
||||
|
||||
curx = 320 - curx - zx;
|
||||
cury = 256 - cury - zy;
|
||||
flipx = !flipx;
|
||||
flipy = !flipy;
|
||||
}
|
||||
|
||||
sprite_ptr->gfx = 0;
|
||||
sprite_ptr->code = code;
|
||||
sprite_ptr->color = color;
|
||||
sprite_ptr->flipx = !flipx;
|
||||
sprite_ptr->flipy = flipy;
|
||||
sprite_ptr->x = curx;
|
||||
sprite_ptr->y = cury;
|
||||
sprite_ptr->zoomx = zx << 12;
|
||||
sprite_ptr->zoomy = zy << 12;
|
||||
|
||||
if (primasks)
|
||||
{
|
||||
sprite_ptr->primask = primasks[priority];
|
||||
|
||||
sprite_ptr++;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_gfxdecode->gfx(sprite_ptr->gfx)->zoom_transpen(bitmap,cliprect,
|
||||
sprite_ptr->code,
|
||||
sprite_ptr->color,
|
||||
sprite_ptr->flipx,sprite_ptr->flipy,
|
||||
sprite_ptr->x,sprite_ptr->y,
|
||||
sprite_ptr->zoomx,sprite_ptr->zoomy,0);
|
||||
}
|
||||
sprite_ptr++;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_gfxdecode->gfx(sprite_ptr->gfx)->zoom_transpen(bitmap,cliprect,
|
||||
sprite_ptr->code,
|
||||
sprite_ptr->color,
|
||||
sprite_ptr->flipx,sprite_ptr->flipy,
|
||||
sprite_ptr->x,sprite_ptr->y,
|
||||
sprite_ptr->zoomx,sprite_ptr->zoomy,0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -208,40 +197,31 @@ logerror("Sprite number %04x had %02x invalid chunks\n",tilenum,bad_chunks);
|
||||
}
|
||||
|
||||
|
||||
void undrfire_state::draw_sprites_cbombers(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect,const int *primasks,int x_offs,int y_offs)
|
||||
void undrfire_state::draw_sprites_cbombers(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect,const u32 *primasks,int x_offs,int y_offs)
|
||||
{
|
||||
uint32_t *spriteram32 = m_spriteram;
|
||||
uint16_t *spritemap = (uint16_t *)memregion("user1")->base();
|
||||
uint8_t *spritemapHibit = (uint8_t *)memregion("user2")->base();
|
||||
|
||||
int offs, data, tilenum, color, flipx, flipy;
|
||||
int x, y, priority, dblsize, curx, cury;
|
||||
int sprites_flipscreen = 0;
|
||||
int zoomx, zoomy, zx, zy;
|
||||
int sprite_chunk,map_offset,code,j,k,px,py;
|
||||
int dimension,total_chunks;
|
||||
|
||||
/* pdrawgfx() needs us to draw sprites front to back, so we have to build a list
|
||||
while processing sprite ram and then draw them all at the end */
|
||||
struct uf_tempsprite *sprite_ptr = m_spritelist.get();
|
||||
|
||||
for (offs = (m_spriteram.bytes()/4-4);offs >= 0;offs -= 4)
|
||||
for (int offs = (m_spriteram.bytes()/4 - 4); offs >= 0; offs -= 4)
|
||||
{
|
||||
data = spriteram32[offs+0];
|
||||
flipx = (data & 0x00800000) >> 23;
|
||||
zoomx = (data & 0x007f0000) >> 16;
|
||||
tilenum = (data & 0x0000ffff);
|
||||
u32 data = m_spriteram[offs+0];
|
||||
int flipx = (data & 0x00800000) >> 23;
|
||||
int zoomx = (data & 0x007f0000) >> 16;
|
||||
const u32 tilenum = (data & 0x0000ffff);
|
||||
|
||||
data = spriteram32[offs+2];
|
||||
priority = (data & 0x000c0000) >> 18;
|
||||
color = (data & 0x0003fc00) >> 10;
|
||||
x = (data & 0x000003ff);
|
||||
data = m_spriteram[offs+2];
|
||||
const int priority = (data & 0x000c0000) >> 18;
|
||||
u16 color = (data & 0x0003fc00) >> 10;
|
||||
int x = (data & 0x000003ff);
|
||||
|
||||
data = spriteram32[offs+3];
|
||||
dblsize = (data & 0x00040000) >> 18;
|
||||
flipy = (data & 0x00020000) >> 17;
|
||||
zoomy = (data & 0x0001fc00) >> 10;
|
||||
y = (data & 0x000003ff);
|
||||
data = m_spriteram[offs+3];
|
||||
const int dblsize = (data & 0x00040000) >> 18;
|
||||
int flipy = (data & 0x00020000) >> 17;
|
||||
int zoomy = (data & 0x0001fc00) >> 10;
|
||||
int y = (data & 0x000003ff);
|
||||
|
||||
color |= (/*0x100 +*/ (priority << 6)); /* priority bits select color bank */
|
||||
|
||||
@ -256,36 +236,34 @@ void undrfire_state::draw_sprites_cbombers(screen_device &screen, bitmap_ind16 &
|
||||
y += y_offs;
|
||||
|
||||
/* treat coords as signed */
|
||||
if (x>0x340) x -= 0x400;
|
||||
if (y>0x340) y -= 0x400;
|
||||
if (x > 0x340) x -= 0x400;
|
||||
if (y > 0x340) y -= 0x400;
|
||||
|
||||
x -= x_offs;
|
||||
|
||||
dimension = ((dblsize*2) + 2); // 2 or 4
|
||||
total_chunks = ((dblsize*3) + 1) << 2; // 4 or 16
|
||||
map_offset = tilenum << 2;
|
||||
const int dimension = ((dblsize * 2) + 2); // 2 or 4
|
||||
const int total_chunks = ((dblsize * 3) + 1) << 2; // 4 or 16
|
||||
const int map_offset = tilenum << 2;
|
||||
|
||||
for (sprite_chunk = 0; sprite_chunk < total_chunks; sprite_chunk++)
|
||||
for (int sprite_chunk = 0; sprite_chunk < total_chunks; sprite_chunk++)
|
||||
{
|
||||
int map_addr;
|
||||
const int j = sprite_chunk / dimension; /* rows */
|
||||
const int k = sprite_chunk % dimension; /* chunks per row */
|
||||
|
||||
j = sprite_chunk / dimension; /* rows */
|
||||
k = sprite_chunk % dimension; /* chunks per row */
|
||||
|
||||
px = k;
|
||||
py = j;
|
||||
int px = k;
|
||||
int py = j;
|
||||
/* pick tiles back to front for x and y flips */
|
||||
if (flipx) px = dimension-1-k;
|
||||
if (flipy) py = dimension-1-j;
|
||||
if (flipx) px = dimension - 1 - k;
|
||||
if (flipy) py = dimension - 1 - j;
|
||||
|
||||
map_addr = map_offset + px + (py << (dblsize + 1));
|
||||
code = (spritemapHibit[map_addr] << 16) | spritemap[map_addr];
|
||||
const u32 map_addr = map_offset + px + (py << (dblsize + 1));
|
||||
const u32 code = (m_spritemaphi[map_addr] << 16) | m_spritemap[map_addr];
|
||||
|
||||
curx = x + ((k*zoomx)/dimension);
|
||||
cury = y + ((j*zoomy)/dimension);
|
||||
int curx = x + ((k * zoomx) / dimension);
|
||||
int cury = y + ((j * zoomy) / dimension);
|
||||
|
||||
zx= x + (((k+1)*zoomx)/dimension) - curx;
|
||||
zy= y + (((j+1)*zoomy)/dimension) - cury;
|
||||
const int zx = x + (((k + 1) * zoomx) / dimension) - curx;
|
||||
const int zy = y + (((j + 1) * zoomy) / dimension) - cury;
|
||||
|
||||
if (sprites_flipscreen)
|
||||
{
|
||||
@ -346,11 +324,11 @@ void undrfire_state::draw_sprites_cbombers(screen_device &screen, bitmap_ind16 &
|
||||
SCREEN REFRESH
|
||||
**************************************************************/
|
||||
|
||||
uint32_t undrfire_state::screen_update_undrfire(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
u32 undrfire_state::screen_update_undrfire(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
uint8_t layer[5];
|
||||
uint8_t scclayer[3];
|
||||
uint16_t priority;
|
||||
u8 layer[5];
|
||||
u8 scclayer[3];
|
||||
u16 priority;
|
||||
|
||||
#ifdef MAME_DEBUG
|
||||
if (machine().input().code_pressed_once (KEYCODE_X))
|
||||
@ -444,12 +422,12 @@ uint32_t undrfire_state::screen_update_undrfire(screen_device &screen, bitmap_in
|
||||
{
|
||||
if ((m_tc0480scp->pri_reg_r() & 0x3) == 3) /* on road levels kludge sprites up 1 priority */
|
||||
{
|
||||
static const int primasks[4] = {0xfff0, 0xff00, 0x0, 0x0};
|
||||
static const u32 primasks[4] = {0xfff0, 0xff00, 0x0, 0x0};
|
||||
draw_sprites(screen, bitmap, cliprect, primasks, 44, -574);
|
||||
}
|
||||
else
|
||||
{
|
||||
static const int primasks[4] = {0xfffc, 0xfff0, 0xff00, 0x0};
|
||||
static const u32 primasks[4] = {0xfffc, 0xfff0, 0xff00, 0x0};
|
||||
draw_sprites(screen, bitmap, cliprect, primasks, 44, -574);
|
||||
}
|
||||
}
|
||||
@ -464,7 +442,7 @@ uint32_t undrfire_state::screen_update_undrfire(screen_device &screen, bitmap_in
|
||||
/* See if we should draw artificial gun targets */
|
||||
/* (not yet implemented...) */
|
||||
|
||||
if (ioport("FAKE")->read() & 0x1) /* Fake DSW */
|
||||
if (m_io_fake->read() & 0x1) /* Fake DSW */
|
||||
{
|
||||
popmessage("Gunsights on");
|
||||
}
|
||||
@ -486,11 +464,11 @@ uint32_t undrfire_state::screen_update_undrfire(screen_device &screen, bitmap_in
|
||||
}
|
||||
|
||||
|
||||
uint32_t undrfire_state::screen_update_cbombers(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
u32 undrfire_state::screen_update_cbombers(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
uint8_t layer[5];
|
||||
uint8_t scclayer[3];
|
||||
uint16_t priority;
|
||||
u8 layer[5];
|
||||
u8 scclayer[3];
|
||||
u16 priority;
|
||||
|
||||
#ifdef MAME_DEBUG
|
||||
if (machine().input().code_pressed_once (KEYCODE_X))
|
||||
@ -585,12 +563,12 @@ uint32_t undrfire_state::screen_update_cbombers(screen_device &screen, bitmap_in
|
||||
{
|
||||
if ((m_tc0480scp->pri_reg_r() & 0x3) == 3) /* on road levels kludge sprites up 1 priority */
|
||||
{
|
||||
static const int primasks[4] = {0xfff0, 0xff00, 0x0, 0x0};
|
||||
static const u32 primasks[4] = {0xfff0, 0xff00, 0x0, 0x0};
|
||||
draw_sprites_cbombers(screen, bitmap, cliprect, primasks, 80, -208);
|
||||
}
|
||||
else
|
||||
{
|
||||
static const int primasks[4] = {0xfffc, 0xfff0, 0xff00, 0x0};
|
||||
static const u32 primasks[4] = {0xfffc, 0xfff0, 0xff00, 0x0};
|
||||
draw_sprites_cbombers(screen, bitmap, cliprect, primasks, 80, -208);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user