mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
k007121: no need for is_flakatck param,
labyrunr: correct sprite layer priority bit
This commit is contained in:
parent
f23b72a46d
commit
3feda58639
@ -242,7 +242,7 @@ uint32_t flkatck_state::screen_update(screen_device &screen, bitmap_ind16 &bitma
|
||||
|
||||
// draw the graphics
|
||||
m_k007121_tilemap[0]->draw(screen, bitmap, clip[0], 0, 0);
|
||||
m_k007121->sprites_draw(bitmap, cliprect, &m_spriteram[sprite_buffer], 0, 40, 0, screen.priority(), (uint32_t)-1, true);
|
||||
m_k007121->sprites_draw(bitmap, cliprect, &m_spriteram[sprite_buffer], 0, 40, 0, screen.priority(), (uint32_t)-1);
|
||||
m_k007121_tilemap[1]->draw(screen, bitmap, clip[1], 0, 0);
|
||||
return 0;
|
||||
}
|
||||
|
@ -261,8 +261,8 @@ uint32_t hcastle_state::screen_update(screen_device &screen, bitmap_ind16 &bitma
|
||||
m_tilemap[0]->set_scrolly(0, ctrl_1_2);
|
||||
m_tilemap[0]->set_scrollx(0, ((ctrl_1_1 << 8) + ctrl_1_0));
|
||||
|
||||
// Sprite priority
|
||||
// if (ctrl_1_3 & 0x20)
|
||||
// Sprite priority
|
||||
//if (ctrl_1_3 & 0x20)
|
||||
if ((m_gfx_bank & 0x04) == 0)
|
||||
{
|
||||
m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 0);
|
||||
|
@ -210,8 +210,8 @@ void k007121_device::ctrl_w(offs_t offset, uint8_t data)
|
||||
*
|
||||
*/
|
||||
|
||||
void k007121_device::sprites_draw( bitmap_ind16 &bitmap, const rectangle &cliprect,
|
||||
const uint8_t *source, int base_color, int global_x_offset, int bank_base, bitmap_ind8 &priority_bitmap, uint32_t pri_mask, bool is_flakatck )
|
||||
void k007121_device::sprites_draw(bitmap_ind16 &bitmap, const rectangle &cliprect,
|
||||
const uint8_t *source, int base_color, int global_x_offset, int bank_base, bitmap_ind8 &priority_bitmap, uint32_t pri_mask)
|
||||
{
|
||||
// TODO: sprite limit is supposed to be per-line! (check MT #00185)
|
||||
int num = 0x40;
|
||||
@ -249,8 +249,7 @@ void k007121_device::sprites_draw( bitmap_ind16 &bitmap, const rectangle &clipre
|
||||
number += (sprite_bank >> 2) & 3;
|
||||
|
||||
// Flak Attack doesn't use a lookup PROM, it maps the color code directly to a palette entry
|
||||
// TODO: check if it's true or callback-ize this one and remove the per-game hack.
|
||||
if (is_flakatck)
|
||||
if (palette().indirect_entries() == 0)
|
||||
transparent_mask = 1 << 0;
|
||||
else
|
||||
transparent_mask = palette().transpen_mask(*gfx(0), color, 0);
|
||||
|
@ -22,9 +22,9 @@ public:
|
||||
uint8_t ctrlram_r(offs_t offset);
|
||||
void ctrl_w(offs_t offset, uint8_t data);
|
||||
|
||||
/* shall we move source in the interface? */
|
||||
/* also notice that now we directly pass *gfx[chip] instead of **gfx !! */
|
||||
void sprites_draw( bitmap_ind16 &bitmap, const rectangle &cliprect, const uint8_t *source, int base_color, int global_x_offset, int bank_base, bitmap_ind8 &priority_bitmap, uint32_t pri_mask, bool is_flakatck = false );
|
||||
// shall we move source in the interface?
|
||||
// also notice that now we directly pass *gfx[chip] instead of **gfx !!
|
||||
void sprites_draw(bitmap_ind16 &bitmap, const rectangle &cliprect, const uint8_t *source, int base_color, int global_x_offset, int bank_base, bitmap_ind8 &priority_bitmap, uint32_t pri_mask);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
|
@ -217,7 +217,7 @@ uint32_t labyrunr_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
|
||||
}
|
||||
|
||||
m_layer[0]->draw(screen, bitmap, finalclip0, TILEMAP_DRAW_OPAQUE | TILEMAP_DRAW_CATEGORY(0), 0);
|
||||
m_k007121->sprites_draw(bitmap, cliprect, m_spriteram, (m_k007121->ctrlram_r(6) & 0x30) * 2, 40, 0, screen.priority(), (m_k007121->ctrlram_r(3) & 0x40) >> 5);
|
||||
m_k007121->sprites_draw(bitmap, cliprect, m_spriteram, (m_k007121->ctrlram_r(6) & 0x30) * 2, 40, 0, screen.priority(), (m_k007121->ctrlram_r(3) & 0x20) >> 4);
|
||||
m_layer[0]->draw(screen, bitmap, finalclip0, TILEMAP_DRAW_OPAQUE | TILEMAP_DRAW_CATEGORY(1), 0);
|
||||
// we ignore the transparency because layer1 is drawn only at the top of the screen also covering sprites
|
||||
m_layer[1]->draw(screen, bitmap, finalclip1, TILEMAP_DRAW_OPAQUE, 0);
|
||||
@ -283,7 +283,7 @@ uint32_t labyrunr_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
|
||||
if (use_clip3[0])
|
||||
m_layer[0]->draw(screen, bitmap, finalclip3, TILEMAP_DRAW_CATEGORY(0), 0);
|
||||
|
||||
m_k007121->sprites_draw(bitmap, cliprect, m_spriteram, (m_k007121->ctrlram_r(6) & 0x30) * 2, 40, 0, screen.priority(), (m_k007121->ctrlram_r(3) & 0x40) >> 5);
|
||||
m_k007121->sprites_draw(bitmap, cliprect, m_spriteram, (m_k007121->ctrlram_r(6) & 0x30) * 2, 40, 0, screen.priority(), (m_k007121->ctrlram_r(3) & 0x20) >> 4);
|
||||
|
||||
m_layer[0]->draw(screen, bitmap, finalclip0, TILEMAP_DRAW_CATEGORY(1), 0);
|
||||
if (use_clip3[0])
|
||||
@ -316,7 +316,7 @@ void labyrunr_state::bankswitch_w(uint8_t data)
|
||||
if (data & 0xe0) logerror("bankswitch %02x", data);
|
||||
|
||||
// bits 0-2 = bank number
|
||||
m_mainbank->set_entry(data & 0x07); // shall we check if data & 7 > #banks?
|
||||
m_mainbank->set_entry(data & 0x07); // shall we check if data & 7 > #banks?
|
||||
|
||||
// bits 3 and 4 are coin counters
|
||||
machine().bookkeeping().coin_counter_w(0, data & 0x08);
|
||||
@ -417,6 +417,7 @@ static GFXDECODE_START( gfx_labyrunr )
|
||||
GFXDECODE_ENTRY( "gfx", 0, gfx_8x8x4_packed_msb, 0, 8*16 )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Machine Driver
|
||||
@ -489,14 +490,14 @@ ROM_START( tricktrp )
|
||||
ROM_LOAD( "771e03", 0x18000, 0x10000, CRC(d0d68036) SHA1(8589ee07e229259341a4cc22bc64de8f06536472) )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx", 0 )
|
||||
ROM_LOAD16_BYTE( "771e01a", 0x00001, 0x10000, CRC(103ffa0d) SHA1(1949c49ca3b243e4cfb5fb19ecd3a1e1492cfddd) ) // tiles + sprites
|
||||
ROM_LOAD16_BYTE( "771e01a", 0x00001, 0x10000, CRC(103ffa0d) SHA1(1949c49ca3b243e4cfb5fb19ecd3a1e1492cfddd) ) // tiles + sprites
|
||||
ROM_LOAD16_BYTE( "771e01c", 0x00000, 0x10000, CRC(cfec5be9) SHA1(2b6a32e2608a70c47d1ec9b4de38b5c3a0898cde) )
|
||||
ROM_LOAD16_BYTE( "771d01b", 0x20001, 0x10000, CRC(07f2a71c) SHA1(63c79e75e71539e69d4d9d35e629a6021124f6d0) )
|
||||
ROM_LOAD16_BYTE( "771d01d", 0x20000, 0x10000, CRC(f6810a49) SHA1(b40e9f0d0919188a05c1990347da8dc8ff12d65a) )
|
||||
|
||||
ROM_REGION( 0x0100, "proms", 0 )
|
||||
ROM_LOAD( "771d02.08d", 0x0000, 0x0100, CRC(3d34bb5a) SHA1(3f3c845f1197457244e7c7e4f9b2a03c278613e4) ) // sprite lookup table
|
||||
// there is no char lookup table
|
||||
ROM_LOAD( "771d02.08d", 0x0000, 0x0100, CRC(3d34bb5a) SHA1(3f3c845f1197457244e7c7e4f9b2a03c278613e4) ) // sprite lookup table
|
||||
// there is no char lookup table
|
||||
ROM_END
|
||||
|
||||
ROM_START( labyrunr )
|
||||
@ -506,11 +507,11 @@ ROM_START( labyrunr )
|
||||
ROM_LOAD( "771j03.08f", 0x18000, 0x10000, CRC(12b49044) SHA1(e9b22fb093cfb746a9767e94ef5deef98bed5b7a) )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx", 0 )
|
||||
ROM_LOAD16_WORD_SWAP( "771d01.14a", 0x00000, 0x40000, CRC(15c8f5f9) SHA1(e4235e1315d0331f3ce5047834a68764ed43aa4b) ) // tiles + sprites
|
||||
ROM_LOAD16_WORD_SWAP( "771d01.14a", 0x00000, 0x40000, CRC(15c8f5f9) SHA1(e4235e1315d0331f3ce5047834a68764ed43aa4b) ) // tiles + sprites
|
||||
|
||||
ROM_REGION( 0x0100, "proms", 0 )
|
||||
ROM_LOAD( "771d02.08d", 0x0000, 0x0100, CRC(3d34bb5a) SHA1(3f3c845f1197457244e7c7e4f9b2a03c278613e4) ) // sprite lookup table
|
||||
// there is no char lookup table
|
||||
ROM_LOAD( "771d02.08d", 0x0000, 0x0100, CRC(3d34bb5a) SHA1(3f3c845f1197457244e7c7e4f9b2a03c278613e4) ) // sprite lookup table
|
||||
// there is no char lookup table
|
||||
ROM_END
|
||||
|
||||
ROM_START( labyrunrk )
|
||||
@ -520,14 +521,14 @@ ROM_START( labyrunrk )
|
||||
ROM_LOAD( "771k03.8f", 0x18000, 0x10000, CRC(48d732ae) SHA1(8bc7917397f32cf5f995b3763ae921725e27de05) )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx", 0 )
|
||||
ROM_LOAD16_BYTE( "771d01a.13a", 0x00001, 0x10000, CRC(0cd1ed1a) SHA1(eac6c106de28acc54535ae1fb99f778c1ed4013e) ) // tiles + sprites
|
||||
ROM_LOAD16_BYTE( "771d01a.13a", 0x00001, 0x10000, CRC(0cd1ed1a) SHA1(eac6c106de28acc54535ae1fb99f778c1ed4013e) ) // tiles + sprites
|
||||
ROM_LOAD16_BYTE( "771d01c.13a", 0x00000, 0x10000, CRC(d75521fe) SHA1(72f0c4d9511bc70d77415f50be93293026305bd5) )
|
||||
ROM_LOAD16_BYTE( "771d01b", 0x20001, 0x10000, CRC(07f2a71c) SHA1(63c79e75e71539e69d4d9d35e629a6021124f6d0) )
|
||||
ROM_LOAD16_BYTE( "771d01d", 0x20000, 0x10000, CRC(f6810a49) SHA1(b40e9f0d0919188a05c1990347da8dc8ff12d65a) )
|
||||
|
||||
ROM_REGION( 0x0100, "proms", 0 )
|
||||
ROM_LOAD( "771d02.08d", 0x0000, 0x0100, CRC(3d34bb5a) SHA1(3f3c845f1197457244e7c7e4f9b2a03c278613e4) ) // sprite lookup table
|
||||
// there is no char lookup table
|
||||
ROM_LOAD( "771d02.08d", 0x0000, 0x0100, CRC(3d34bb5a) SHA1(3f3c845f1197457244e7c7e4f9b2a03c278613e4) ) // sprite lookup table
|
||||
// there is no char lookup table
|
||||
ROM_END
|
||||
|
||||
ROM_START( labyrunrf )
|
||||
@ -537,14 +538,14 @@ ROM_START( labyrunrf )
|
||||
ROM_LOAD( "771k03.8f", 0x18000, 0x10000, CRC(6c073295) SHA1(67be17ad0c3bfd5ff8cd6ed31b217e438733ed1c) )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx", 0 )
|
||||
ROM_LOAD16_BYTE( "771d01a.13a", 0x00001, 0x10000, CRC(0cd1ed1a) SHA1(eac6c106de28acc54535ae1fb99f778c1ed4013e) ) // tiles + sprites
|
||||
ROM_LOAD16_BYTE( "771d01a.13a", 0x00001, 0x10000, CRC(0cd1ed1a) SHA1(eac6c106de28acc54535ae1fb99f778c1ed4013e) ) // tiles + sprites
|
||||
ROM_LOAD16_BYTE( "771d01c.13a", 0x00000, 0x10000, CRC(d75521fe) SHA1(72f0c4d9511bc70d77415f50be93293026305bd5) )
|
||||
ROM_LOAD16_BYTE( "771d01b", 0x20001, 0x10000, CRC(07f2a71c) SHA1(63c79e75e71539e69d4d9d35e629a6021124f6d0) )
|
||||
ROM_LOAD16_BYTE( "771d01d", 0x20000, 0x10000, CRC(f6810a49) SHA1(b40e9f0d0919188a05c1990347da8dc8ff12d65a) )
|
||||
|
||||
ROM_REGION( 0x0100, "proms", 0 )
|
||||
ROM_LOAD( "771d02.08d", 0x0000, 0x0100, CRC(3d34bb5a) SHA1(3f3c845f1197457244e7c7e4f9b2a03c278613e4) ) // sprite lookup table
|
||||
// there is no char lookup table
|
||||
ROM_LOAD( "771d02.08d", 0x0000, 0x0100, CRC(3d34bb5a) SHA1(3f3c845f1197457244e7c7e4f9b2a03c278613e4) ) // sprite lookup table
|
||||
// there is no char lookup table
|
||||
ROM_END
|
||||
|
||||
} // anonymous namespace
|
||||
|
Loading…
Reference in New Issue
Block a user