Palette device fixes (nw)

- Enforce dependencies in various Konami, Sega & Seta GFX devices
- Disable palette uniqueness check in divideo
This commit is contained in:
AJR 2017-04-06 18:00:43 -04:00
parent 0eebf8c69c
commit cb68159154
9 changed files with 26 additions and 3 deletions

View File

@ -137,9 +137,9 @@ void device_video_interface::interface_pre_start()
// resolve the palette for the sake of register_screen_bitmap
m_screen->resolve_palette();
// no other palette may be specified
if (m_screen->has_palette() && palintf != &m_screen->palette())
throw emu_fatalerror("Device '%s' cannot control screen '%s' with palette '%s'", m_screen_tag, device().tag(), m_screen->palette().device().tag());
// no other palette may be specified (FIXME: breaks meritm.cpp)
if (0 && m_screen->has_palette() && palintf != &m_screen->palette())
throw emu_fatalerror("Device '%s' cannot control screen '%s' with palette '%s'", device().tag(), m_screen_tag, m_screen->palette().device().tag());
}
}
}

View File

@ -37,6 +37,9 @@ k001604_device::k001604_device(const machine_config &mconfig, const char *tag, d
void k001604_device::device_start()
{
if (!palette().device().started())
throw device_missing_dependencies();
static const gfx_layout k001604_char_layout_layer_8x8 =
{
8, 8,

View File

@ -33,6 +33,9 @@ k037122_device::k037122_device(const machine_config &mconfig, const char *tag, d
void k037122_device::device_start()
{
if (!palette().device().started())
throw device_missing_dependencies();
static const gfx_layout k037122_char_layout =
{
8, 8,

View File

@ -150,6 +150,9 @@ void k051316_device::set_bpp(device_t &device, int bpp)
void k051316_device::device_start()
{
if (!palette().device().started())
throw device_missing_dependencies();
decode_gfx();
gfx(0)->set_colors(palette().entries() / gfx(0)->depth());

View File

@ -184,6 +184,8 @@ void k051960_device::device_start()
// make sure our screen is started
if (!m_screen->started())
throw device_missing_dependencies();
if (!palette().device().started())
throw device_missing_dependencies();
// allocate scanline timer and start at first scanline
m_scanline_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(k051960_device::scanline_callback), this));

View File

@ -118,6 +118,9 @@ void k05324x_device::set_bpp(device_t &device, int bpp)
void k05324x_device::device_start()
{
if (!palette().device().started())
throw device_missing_dependencies();
/* decode the graphics */
decode_gfx();
gfx(0)->set_colors(palette().entries() / gfx(0)->depth());

View File

@ -333,6 +333,9 @@ void k056832_device::finalize_init()
void k056832_device::device_start()
{
if (!palette().device().started())
throw device_missing_dependencies();
memset(m_regs, 0x00, sizeof(m_regs) );
memset(m_regsb, 0x00, sizeof(m_regsb) );

View File

@ -77,6 +77,9 @@ TILE_GET_INFO_MEMBER(segas24_tile::tile_info_1w)
void segas24_tile::device_start()
{
if (!palette().device().started())
throw device_missing_dependencies();
char_ram = std::make_unique<uint16_t[]>(0x80000/2);
tile_ram = std::make_unique<uint16_t[]>(0x10000/2);

View File

@ -52,6 +52,9 @@ static const gfx_layout layout_16x8x8_2 =
void st0020_device::device_start()
{
if (!palette().device().started())
throw device_missing_dependencies();
memory_region* rgn = memregion(tag());
if (rgn)