spacecom , darthvdr : fixed cocktail mode (nw)

This commit is contained in:
Robbbert 2012-12-10 10:51:20 +00:00
parent 1e85e1c45a
commit 10e73ffbdb
4 changed files with 53 additions and 7 deletions

View File

@ -1252,7 +1252,7 @@ WRITE8_MEMBER(_8080bw_state::shuttlei_sh_port_2_w)
WRITE8_MEMBER( _8080bw_state::darthvdr_00_w )
{
m_c8080bw_flip_screen = BIT(data, 0) & BIT(ioport(CABINET_PORT_TAG)->read(), 0);
m_invaders_flip_screen = BIT(data, 0) & BIT(ioport(CABINET_PORT_TAG)->read(), 0);
}
WRITE8_MEMBER( _8080bw_state::darthvdr_08_w )

View File

@ -688,7 +688,7 @@ static INPUT_PORTS_START( spacecom )
PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // unused?
PORT_START(CABINET_PORT_TAG) /* Dummy port for cocktail mode */
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
@ -707,6 +707,10 @@ MACHINE_CONFIG_DERIVED_CLASS( spacecom, invaders, _8080bw_state )
// assume there is no watchdog
MCFG_WATCHDOG_VBLANK_INIT(0)
MCFG_WATCHDOG_TIME_INIT(attotime::from_usec(0))
// video
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_spacecom)
MACHINE_CONFIG_END
DRIVER_INIT_MEMBER(_8080bw_state, spacecom)
@ -2271,6 +2275,10 @@ static MACHINE_CONFIG_DERIVED_CLASS( darthvdr, mw8080bw_root, _8080bw_state )
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_invaders)
MACHINE_CONFIG_END

View File

@ -113,6 +113,7 @@ public:
UINT32 screen_update_polaris(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
UINT32 screen_update_ballbomb(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
UINT32 screen_update_shuttlei(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
UINT32 screen_update_spacecom(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(polaris_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(claybust_gun_callback);

View File

@ -430,11 +430,8 @@ UINT32 _8080bw_state::screen_update_shuttlei(screen_device &screen, bitmap_rgb32
for (i = 0; i < 8; i++)
{
pen_t pen = (data & 0x80) ? RGB_WHITE : RGB_BLACK;
bitmap.pix32(y, x) = pen;
x = x + 1;
data = data << 1;
bitmap.pix32(y, x|i) = pens[BIT(data, 7)];
data <<= 1;
}
}
@ -466,3 +463,43 @@ UINT32 _8080bw_state::screen_update_sflush(screen_device &screen, bitmap_rgb32 &
return 0;
}
UINT32 _8080bw_state::screen_update_spacecom(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
pen_t pens[2] = { RGB_BLACK, RGB_WHITE };
offs_t offs;
UINT8 x,y,data;
for (offs = 0; offs < 0x1c00; offs++)
{
y = offs >> 5;
x = (offs << 3)+4; //((m_invaders_flip_screen) ? 8 : 4);
data = m_main_ram[offs+0x400];
if (m_invaders_flip_screen)
{
bitmap.pix32(y, x++) = pens[BIT(data, 7)];
bitmap.pix32(y, x++) = pens[BIT(data, 6)];
bitmap.pix32(y, x++) = pens[BIT(data, 5)];
bitmap.pix32(y, x++) = pens[BIT(data, 4)];
bitmap.pix32(y, x++) = pens[BIT(data, 3)];
bitmap.pix32(y, x++) = pens[BIT(data, 2)];
bitmap.pix32(y, x++) = pens[BIT(data, 1)];
bitmap.pix32(y, x++) = pens[BIT(data, 0)];
}
else
{
bitmap.pix32(y, x++) = pens[BIT(data, 0)];
bitmap.pix32(y, x++) = pens[BIT(data, 1)];
bitmap.pix32(y, x++) = pens[BIT(data, 2)];
bitmap.pix32(y, x++) = pens[BIT(data, 3)];
bitmap.pix32(y, x++) = pens[BIT(data, 4)];
bitmap.pix32(y, x++) = pens[BIT(data, 5)];
bitmap.pix32(y, x++) = pens[BIT(data, 6)];
bitmap.pix32(y, x++) = pens[BIT(data, 7)];
}
}
return 0;
}