diff options
Diffstat (limited to 'src/mame/video/dassault.cpp')
-rw-r--r-- | src/mame/video/dassault.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/mame/video/dassault.cpp b/src/mame/video/dassault.cpp index 79be65a70ed..208a87870ab 100644 --- a/src/mame/video/dassault.cpp +++ b/src/mame/video/dassault.cpp @@ -23,8 +23,10 @@ void dassault_state::video_start() { + m_priority = 0; m_sprgen1->alloc_sprite_bitmap(); m_sprgen2->alloc_sprite_bitmap(); + save_item(NAME(m_priority)); } void dassault_state::mixdassaultlayer(bitmap_rgb32 &bitmap, bitmap_ind16* sprite_bitmap, const rectangle &cliprect, uint16_t pri, uint16_t primask, uint16_t penbase, uint8_t alpha) @@ -54,7 +56,12 @@ void dassault_state::mixdassaultlayer(bitmap_rgb32 &bitmap, bitmap_ind16* sprite if (alpha!=0xff) { - if (pix&0x600) + if (pix&0x400) // TODO, Additive/Subtractive Blending? + { + uint32_t base = dstline[x]; + dstline[x] = alpha_blend_r32(base, paldata[pen+penbase], alpha); + } + else if (pix&0x200) { uint32_t base = dstline[x]; dstline[x] = alpha_blend_r32(base, paldata[pen+penbase], alpha); @@ -78,7 +85,7 @@ uint32_t dassault_state::screen_update_dassault(screen_device &screen, bitmap_rg { address_space &space = machine().dummy_space(); uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff); - uint16_t priority = m_decocomn->priority_r(); + uint16_t priority = m_priority; m_sprgen2->draw_sprites(bitmap, cliprect, m_spriteram2->buffer(), 0x400, false); m_sprgen1->draw_sprites(bitmap, cliprect, m_spriteram->buffer(), 0x400, false); |