mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
k052109: add function for marking tilemap dirty
This commit is contained in:
parent
b35397e8a9
commit
04bdcc4106
@ -127,10 +127,7 @@ K056832_CB_MEMBER(asterix_state::tile_callback)
|
||||
|
||||
uint32_t asterix_state::screen_update_asterix(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
static const int K053251_CI[4] = { k053251_device::CI0, k053251_device::CI2, k053251_device::CI3, k053251_device::CI4 };
|
||||
int layer[3];
|
||||
|
||||
/* Layer offsets are different if horizontally flipped */
|
||||
// layer offsets are different if horizontally flipped
|
||||
if (m_k056832->read_register(0x0) & 0x10)
|
||||
{
|
||||
m_k056832->set_layer_offs(0, 89 - 176, 0);
|
||||
@ -158,6 +155,9 @@ uint32_t asterix_state::screen_update_asterix(screen_device &screen, bitmap_ind1
|
||||
tilemaps_dirty = true;
|
||||
}
|
||||
|
||||
static const int K053251_CI[4] = { k053251_device::CI0, k053251_device::CI2, k053251_device::CI3, k053251_device::CI4 };
|
||||
m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1);
|
||||
|
||||
for (int plane = 0; plane < 4; plane++)
|
||||
{
|
||||
int prev_colorbase = m_layer_colorbase[plane];
|
||||
@ -170,13 +170,10 @@ uint32_t asterix_state::screen_update_asterix(screen_device &screen, bitmap_ind1
|
||||
if (tilemaps_dirty)
|
||||
m_k056832->mark_all_tilemaps_dirty();
|
||||
|
||||
m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1);
|
||||
|
||||
layer[0] = 0;
|
||||
// sort layers and draw
|
||||
int layer[3] = { 0, 1, 3 };
|
||||
m_layerpri[0] = m_k053251->get_priority(k053251_device::CI0);
|
||||
layer[1] = 1;
|
||||
m_layerpri[1] = m_k053251->get_priority(k053251_device::CI2);
|
||||
layer[2] = 3;
|
||||
m_layerpri[2] = m_k053251->get_priority(k053251_device::CI4);
|
||||
|
||||
konami_sortlayers3(layer, m_layerpri);
|
||||
|
@ -668,6 +668,12 @@ void k052109_device::tilemap_draw( screen_device &screen, bitmap_ind16 &bitmap,
|
||||
m_tilemap[tmap_num]->draw(screen, bitmap, cliprect, flags, priority);
|
||||
}
|
||||
|
||||
void k052109_device::mark_tilemap_dirty( uint8_t tmap_num )
|
||||
{
|
||||
assert(tmap_num <= 2);
|
||||
m_tilemap[tmap_num]->mark_all_dirty();
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
|
@ -51,6 +51,7 @@ public:
|
||||
int get_rmrd_line();
|
||||
void tilemap_update();
|
||||
void tilemap_draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int tmap_num, uint32_t flags, uint8_t priority);
|
||||
void mark_tilemap_dirty(uint8_t tmap_num);
|
||||
|
||||
void vblank_callback(screen_device &screen, bool state);
|
||||
|
||||
|
@ -129,22 +129,29 @@ K05324X_CB_MEMBER(parodius_state::sprite_callback)
|
||||
|
||||
uint32_t parodius_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
// update color info and refresh tilemaps
|
||||
static const int K053251_CI[3] = { k053251_device::CI2, k053251_device::CI4, k053251_device::CI3 };
|
||||
int bg_colorbase = m_k053251->get_palette_index(k053251_device::CI0);
|
||||
m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1);
|
||||
m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI2);
|
||||
m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI4);
|
||||
m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI3);
|
||||
m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1);
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
int prev_colorbase = m_layer_colorbase[i];
|
||||
m_layer_colorbase[i] = m_k053251->get_palette_index(K053251_CI[i]);
|
||||
|
||||
if (m_layer_colorbase[i] != prev_colorbase)
|
||||
m_k052109->mark_tilemap_dirty(i);
|
||||
}
|
||||
|
||||
m_k052109->tilemap_update();
|
||||
|
||||
// sort layers and draw
|
||||
int layer[3];
|
||||
|
||||
layer[0] = 0;
|
||||
m_layerpri[0] = m_k053251->get_priority(k053251_device::CI2);
|
||||
layer[1] = 1;
|
||||
m_layerpri[1] = m_k053251->get_priority(k053251_device::CI4);
|
||||
layer[2] = 2;
|
||||
m_layerpri[2] = m_k053251->get_priority(k053251_device::CI3);
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
layer[i] = i;
|
||||
m_layerpri[i] = m_k053251->get_priority(K053251_CI[i]);
|
||||
}
|
||||
|
||||
konami_sortlayers3(layer, m_layerpri);
|
||||
|
||||
|
@ -132,10 +132,11 @@ public:
|
||||
|
||||
void simpsons(machine_config &config);
|
||||
|
||||
private:
|
||||
protected:
|
||||
virtual void machine_start() override ATTR_COLD;
|
||||
virtual void machine_reset() override ATTR_COLD;
|
||||
|
||||
private:
|
||||
void bank0000_map(address_map &map) ATTR_COLD;
|
||||
void bank2000_map(address_map &map) ATTR_COLD;
|
||||
void main_map(address_map &map) ATTR_COLD;
|
||||
@ -280,22 +281,29 @@ void simpsons_state::video_bank_select( int bank )
|
||||
|
||||
uint32_t simpsons_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
int layer[3], bg_colorbase;
|
||||
|
||||
bg_colorbase = m_k053251->get_palette_index(k053251_device::CI0);
|
||||
// update color info and refresh tilemaps
|
||||
static const int K053251_CI[3] = { k053251_device::CI2, k053251_device::CI3, k053251_device::CI4 };
|
||||
int bg_colorbase = m_k053251->get_palette_index(k053251_device::CI0);
|
||||
m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1);
|
||||
m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI2);
|
||||
m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI3);
|
||||
m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI4);
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
int prev_colorbase = m_layer_colorbase[i];
|
||||
m_layer_colorbase[i] = m_k053251->get_palette_index(K053251_CI[i]);
|
||||
|
||||
if (m_layer_colorbase[i] != prev_colorbase)
|
||||
m_k052109->mark_tilemap_dirty(i);
|
||||
}
|
||||
|
||||
m_k052109->tilemap_update();
|
||||
|
||||
layer[0] = 0;
|
||||
m_layerpri[0] = m_k053251->get_priority(k053251_device::CI2);
|
||||
layer[1] = 1;
|
||||
m_layerpri[1] = m_k053251->get_priority(k053251_device::CI3);
|
||||
layer[2] = 2;
|
||||
m_layerpri[2] = m_k053251->get_priority(k053251_device::CI4);
|
||||
// sort layers and draw
|
||||
int layer[3];
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
layer[i] = i;
|
||||
m_layerpri[i] = m_k053251->get_priority(K053251_CI[i]);
|
||||
}
|
||||
|
||||
konami_sortlayers3(layer, m_layerpri);
|
||||
|
||||
|
@ -121,22 +121,29 @@ K05324X_CB_MEMBER(surpratk_state::sprite_callback)
|
||||
|
||||
uint32_t surpratk_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
// update color info and refresh tilemaps
|
||||
static const int K053251_CI[3] = { k053251_device::CI2, k053251_device::CI4, k053251_device::CI3 };
|
||||
int bg_colorbase = m_k053251->get_palette_index(k053251_device::CI0);
|
||||
m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1);
|
||||
m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI2);
|
||||
m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI4);
|
||||
m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI3);
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
int prev_colorbase = m_layer_colorbase[i];
|
||||
m_layer_colorbase[i] = m_k053251->get_palette_index(K053251_CI[i]);
|
||||
|
||||
if (m_layer_colorbase[i] != prev_colorbase)
|
||||
m_k052109->mark_tilemap_dirty(i);
|
||||
}
|
||||
|
||||
m_k052109->tilemap_update();
|
||||
|
||||
// sort layers and draw
|
||||
int layer[3];
|
||||
|
||||
layer[0] = 0;
|
||||
m_layerpri[0] = m_k053251->get_priority(k053251_device::CI2);
|
||||
layer[1] = 1;
|
||||
m_layerpri[1] = m_k053251->get_priority(k053251_device::CI4);
|
||||
layer[2] = 2;
|
||||
m_layerpri[2] = m_k053251->get_priority(k053251_device::CI3);
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
layer[i] = i;
|
||||
m_layerpri[i] = m_k053251->get_priority(K053251_CI[i]);
|
||||
}
|
||||
|
||||
konami_sortlayers3(layer, m_layerpri);
|
||||
|
||||
|
@ -312,7 +312,7 @@ K052109_CB_MEMBER(tmnt_state::cuebrick_tile_callback)
|
||||
if ((m_k052109->get_rmrd_line() == CLEAR_LINE) && (layer == 0))
|
||||
{
|
||||
*code |= ((*color & 0x01) << 8);
|
||||
*color = m_layer_colorbase[layer] + ((*color & 0x0e) >> 1);
|
||||
*color = m_layer_colorbase[layer] + ((*color & 0x0e) >> 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1012,19 +1012,27 @@ uint16_t prmrsocr_state::prmrsocr_rom_r(offs_t offset)
|
||||
|
||||
uint32_t tmnt2_state::screen_update_punkshot(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
// update color info and refresh tilemaps
|
||||
static const int K053251_CI[3] = { k053251_device::CI2, k053251_device::CI4, k053251_device::CI3 };
|
||||
m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1);
|
||||
m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI2);
|
||||
m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI4);
|
||||
m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI3);
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
int prev_colorbase = m_layer_colorbase[i];
|
||||
m_layer_colorbase[i] = m_k053251->get_palette_index(K053251_CI[i]);
|
||||
|
||||
if (m_layer_colorbase[i] != prev_colorbase)
|
||||
m_k052109->mark_tilemap_dirty(i);
|
||||
}
|
||||
|
||||
m_k052109->tilemap_update();
|
||||
|
||||
m_sorted_layer[0] = 0;
|
||||
m_layerpri[0] = m_k053251->get_priority(k053251_device::CI2);
|
||||
m_sorted_layer[1] = 1;
|
||||
m_layerpri[1] = m_k053251->get_priority(k053251_device::CI4);
|
||||
m_sorted_layer[2] = 2;
|
||||
m_layerpri[2] = m_k053251->get_priority(k053251_device::CI3);
|
||||
// sort layers and draw
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
m_sorted_layer[i] = i;
|
||||
m_layerpri[i] = m_k053251->get_priority(K053251_CI[i]);
|
||||
}
|
||||
|
||||
konami_sortlayers3(m_sorted_layer, m_layerpri);
|
||||
|
||||
@ -1040,22 +1048,28 @@ uint32_t tmnt2_state::screen_update_punkshot(screen_device &screen, bitmap_ind16
|
||||
|
||||
uint32_t tmnt2_state::screen_update_lgtnfght(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
int bg_colorbase;
|
||||
|
||||
bg_colorbase = m_k053251->get_palette_index(k053251_device::CI0);
|
||||
// update color info and refresh tilemaps
|
||||
static const int K053251_CI[3] = { k053251_device::CI2, k053251_device::CI4, k053251_device::CI3 };
|
||||
int bg_colorbase = m_k053251->get_palette_index(k053251_device::CI0);
|
||||
m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1);
|
||||
m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI2);
|
||||
m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI4);
|
||||
m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI3);
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
int prev_colorbase = m_layer_colorbase[i];
|
||||
m_layer_colorbase[i] = m_k053251->get_palette_index(K053251_CI[i]);
|
||||
|
||||
if (m_layer_colorbase[i] != prev_colorbase)
|
||||
m_k052109->mark_tilemap_dirty(i);
|
||||
}
|
||||
|
||||
m_k052109->tilemap_update();
|
||||
|
||||
m_sorted_layer[0] = 0;
|
||||
m_layerpri[0] = m_k053251->get_priority(k053251_device::CI2);
|
||||
m_sorted_layer[1] = 1;
|
||||
m_layerpri[1] = m_k053251->get_priority(k053251_device::CI4);
|
||||
m_sorted_layer[2] = 2;
|
||||
m_layerpri[2] = m_k053251->get_priority(k053251_device::CI3);
|
||||
// sort layers and draw
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
m_sorted_layer[i] = i;
|
||||
m_layerpri[i] = m_k053251->get_priority(K053251_CI[i]);
|
||||
}
|
||||
|
||||
konami_sortlayers3(m_sorted_layer, m_layerpri);
|
||||
|
||||
@ -1073,9 +1087,9 @@ uint32_t tmnt2_state::screen_update_lgtnfght(screen_device &screen, bitmap_ind16
|
||||
uint16_t glfgreat_state::glfgreat_ball_r()
|
||||
{
|
||||
#ifdef MAME_DEBUG
|
||||
popmessage("%04x", m_glfgreat_pixel);
|
||||
popmessage("%04x", m_glfgreat_pixel);
|
||||
#endif
|
||||
/* if out of the ROZ layer palette range, it's in the water - return 0 */
|
||||
// if out of the ROZ layer palette range, it's in the water - return 0
|
||||
if (m_glfgreat_pixel < 0x400 || m_glfgreat_pixel >= 0x500)
|
||||
return 0;
|
||||
else
|
||||
@ -1084,27 +1098,33 @@ popmessage("%04x", m_glfgreat_pixel);
|
||||
|
||||
uint32_t tmnt2_state::screen_update_glfgreat(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
int bg_colorbase;
|
||||
|
||||
bg_colorbase = m_k053251->get_palette_index(k053251_device::CI0);
|
||||
// update color info and refresh tilemaps
|
||||
static const int K053251_CI[3] = { k053251_device::CI2, k053251_device::CI3, k053251_device::CI4 };
|
||||
int bg_colorbase = m_k053251->get_palette_index(k053251_device::CI0);
|
||||
m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1);
|
||||
m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI2);
|
||||
m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI3) + 8; /* weird... */
|
||||
m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI4);
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
int prev_colorbase = m_layer_colorbase[i];
|
||||
m_layer_colorbase[i] = m_k053251->get_palette_index(K053251_CI[i]);
|
||||
if (i == 1) m_layer_colorbase[i] += 8; // weird
|
||||
|
||||
if (m_layer_colorbase[i] != prev_colorbase)
|
||||
m_k052109->mark_tilemap_dirty(i);
|
||||
}
|
||||
|
||||
m_k052109->tilemap_update();
|
||||
|
||||
m_sorted_layer[0] = 0;
|
||||
m_layerpri[0] = m_k053251->get_priority(k053251_device::CI2);
|
||||
m_sorted_layer[1] = 1;
|
||||
m_layerpri[1] = m_k053251->get_priority(k053251_device::CI3);
|
||||
m_sorted_layer[2] = 2;
|
||||
m_layerpri[2] = m_k053251->get_priority(k053251_device::CI4);
|
||||
// sort layers and draw
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
m_sorted_layer[i] = i;
|
||||
m_layerpri[i] = m_k053251->get_priority(K053251_CI[i]);
|
||||
}
|
||||
|
||||
konami_sortlayers3(m_sorted_layer, m_layerpri);
|
||||
|
||||
/* not sure about the 053936 priority, but it seems to work */
|
||||
|
||||
// not sure about the 053936 priority, but it seems to work
|
||||
screen.priority().fill(0, cliprect);
|
||||
bitmap.fill(16 * bg_colorbase, cliprect);
|
||||
m_k052109->tilemap_draw(screen, bitmap, cliprect, m_sorted_layer[0], 0, 1);
|
||||
@ -1189,22 +1209,28 @@ uint32_t tmnt2_state::screen_update_tmnt2(screen_device &screen, bitmap_ind16 &b
|
||||
|
||||
uint32_t tmnt2_state::screen_update_thndrx2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
int bg_colorbase;
|
||||
|
||||
bg_colorbase = m_k053251->get_palette_index(k053251_device::CI0);
|
||||
// update color info and refresh tilemaps
|
||||
static const int K053251_CI[3] = { k053251_device::CI2, k053251_device::CI4, k053251_device::CI3 };
|
||||
int bg_colorbase = m_k053251->get_palette_index(k053251_device::CI0);
|
||||
m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1);
|
||||
m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI2);
|
||||
m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI4);
|
||||
m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI3);
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
int prev_colorbase = m_layer_colorbase[i];
|
||||
m_layer_colorbase[i] = m_k053251->get_palette_index(K053251_CI[i]);
|
||||
|
||||
if (m_layer_colorbase[i] != prev_colorbase)
|
||||
m_k052109->mark_tilemap_dirty(i);
|
||||
}
|
||||
|
||||
m_k052109->tilemap_update();
|
||||
|
||||
m_sorted_layer[0] = 0;
|
||||
m_layerpri[0] = m_k053251->get_priority(k053251_device::CI2);
|
||||
m_sorted_layer[1] = 1;
|
||||
m_layerpri[1] = m_k053251->get_priority(k053251_device::CI4);
|
||||
m_sorted_layer[2] = 2;
|
||||
m_layerpri[2] = m_k053251->get_priority(k053251_device::CI3);
|
||||
// sort layers and draw
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
m_sorted_layer[i] = i;
|
||||
m_layerpri[i] = m_k053251->get_priority(K053251_CI[i]);
|
||||
}
|
||||
|
||||
konami_sortlayers3(m_sorted_layer, m_layerpri);
|
||||
|
||||
|
@ -239,21 +239,28 @@ K053246_CB_MEMBER(vendetta_state::sprite_callback)
|
||||
|
||||
uint32_t vendetta_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
int layer[3];
|
||||
|
||||
// update color info and refresh tilemaps
|
||||
static const int K053251_CI[3] = { k053251_device::CI2, k053251_device::CI3, k053251_device::CI4 };
|
||||
m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1);
|
||||
m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI2);
|
||||
m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI3);
|
||||
m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI4);
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
int prev_colorbase = m_layer_colorbase[i];
|
||||
m_layer_colorbase[i] = m_k053251->get_palette_index(K053251_CI[i]);
|
||||
|
||||
if (m_layer_colorbase[i] != prev_colorbase)
|
||||
m_k052109->mark_tilemap_dirty(i);
|
||||
}
|
||||
|
||||
m_k052109->tilemap_update();
|
||||
|
||||
layer[0] = 0;
|
||||
m_layerpri[0] = m_k053251->get_priority(k053251_device::CI2);
|
||||
layer[1] = 1;
|
||||
m_layerpri[1] = m_k053251->get_priority(k053251_device::CI3);
|
||||
layer[2] = 2;
|
||||
m_layerpri[2] = m_k053251->get_priority(k053251_device::CI4);
|
||||
// sort layers and draw
|
||||
int layer[3];
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
layer[i] = i;
|
||||
m_layerpri[i] = m_k053251->get_priority(K053251_CI[i]);
|
||||
}
|
||||
|
||||
konami_sortlayers3(layer, m_layerpri);
|
||||
|
||||
|
@ -228,22 +228,29 @@ void xmen6p_state::video_start()
|
||||
|
||||
uint32_t xmen_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
int const bg_colorbase = m_k053251->get_palette_index(k053251_device::CI4);
|
||||
// update color info and refresh tilemaps
|
||||
static const int K053251_CI[3] = { k053251_device::CI3, k053251_device::CI0, k053251_device::CI2 };
|
||||
const int bg_colorbase = m_k053251->get_palette_index(k053251_device::CI4);
|
||||
m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1);
|
||||
m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI3);
|
||||
m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI0);
|
||||
m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI2);
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
int prev_colorbase = m_layer_colorbase[i];
|
||||
m_layer_colorbase[i] = m_k053251->get_palette_index(K053251_CI[i]);
|
||||
|
||||
if (m_layer_colorbase[i] != prev_colorbase)
|
||||
m_k052109->mark_tilemap_dirty(i);
|
||||
}
|
||||
|
||||
m_k052109->tilemap_update();
|
||||
|
||||
// sort layers and draw
|
||||
int layer[3];
|
||||
|
||||
layer[0] = 0;
|
||||
m_layerpri[0] = m_k053251->get_priority(k053251_device::CI3);
|
||||
layer[1] = 1;
|
||||
m_layerpri[1] = m_k053251->get_priority(k053251_device::CI0);
|
||||
layer[2] = 2;
|
||||
m_layerpri[2] = m_k053251->get_priority(k053251_device::CI2);
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
layer[i] = i;
|
||||
m_layerpri[i] = m_k053251->get_priority(K053251_CI[i]);
|
||||
}
|
||||
|
||||
konami_sortlayers3(layer, m_layerpri);
|
||||
|
||||
@ -305,22 +312,29 @@ void xmen6p_state::screen_vblank(int state)
|
||||
m_k052109->write(offset, m_tilemap[index][offset] & 0x00ff);
|
||||
}
|
||||
|
||||
int const bg_colorbase = m_k053251->get_palette_index(k053251_device::CI4);
|
||||
// update color info and refresh tilemaps
|
||||
static const int K053251_CI[3] = { k053251_device::CI3, k053251_device::CI0, k053251_device::CI2 };
|
||||
const int bg_colorbase = m_k053251->get_palette_index(k053251_device::CI4);
|
||||
m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1);
|
||||
m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI3);
|
||||
m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI0);
|
||||
m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI2);
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
int prev_colorbase = m_layer_colorbase[i];
|
||||
m_layer_colorbase[i] = m_k053251->get_palette_index(K053251_CI[i]);
|
||||
|
||||
if (m_layer_colorbase[i] != prev_colorbase)
|
||||
m_k052109->mark_tilemap_dirty(i);
|
||||
}
|
||||
|
||||
m_k052109->tilemap_update();
|
||||
|
||||
// sort layers and draw
|
||||
int layer[3];
|
||||
|
||||
m_layerpri[0] = m_k053251->get_priority(k053251_device::CI3);
|
||||
layer[0] = 0;
|
||||
m_layerpri[1] = m_k053251->get_priority(k053251_device::CI0);
|
||||
layer[1] = 1;
|
||||
m_layerpri[2] = m_k053251->get_priority(k053251_device::CI2);
|
||||
layer[2] = 2;
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
layer[i] = i;
|
||||
m_layerpri[i] = m_k053251->get_priority(K053251_CI[i]);
|
||||
}
|
||||
|
||||
konami_sortlayers3(layer, m_layerpri);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user