summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/sharp/x68k_v.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/sharp/x68k_v.cpp')
-rw-r--r--src/mame/sharp/x68k_v.cpp16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/mame/sharp/x68k_v.cpp b/src/mame/sharp/x68k_v.cpp
index 141c78c4506..aa1d52cdb5a 100644
--- a/src/mame/sharp/x68k_v.cpp
+++ b/src/mame/sharp/x68k_v.cpp
@@ -138,7 +138,7 @@ void x68k_state::spritereg_w(offs_t offset, uint16_t data, uint16_t mem_mask)
m_video.bg_hstart = (data - 4) * 8 + 1;
break;
case 0x407: // BG V-DISP (like CRTC reg 6)
- m_video.bg_vstart = data - 1;
+ m_video.bg_vstart = data;
break;
case 0x408: // BG H/V-Res
m_video.bg_hvres = data & 0x1f;
@@ -215,7 +215,7 @@ bool x68k_state::draw_gfx_scanline( bitmap_ind16 &bitmap, rectangle cliprect, ui
uint16_t xscr,yscr;
uint16_t colour = 0;
int shift;
- bool blend, ret = false;
+ bool blend, ret = (m_video.reg[2] & 0x1a00) == 0x1a00;
uint16_t *pal = (uint16_t *)m_gfxpalette->basemem().base();
int divisor = 1;
if(m_crtc->gfx_double_scan())
@@ -262,6 +262,7 @@ bool x68k_state::draw_gfx_scanline( bitmap_ind16 &bitmap, rectangle cliprect, ui
loc++;
loc &= 0x3ff;
}
+ ret = false;
}
}
else // else 512x512 "real" screen size
@@ -278,8 +279,6 @@ bool x68k_state::draw_gfx_scanline( bitmap_ind16 &bitmap, rectangle cliprect, ui
lineoffset = (((scanline - m_crtc->vbegin() / divisor) + yscr) & 0x1ff) * 512;
loc = xscr & 0x1ff;
shift = 4;
- if((m_video.reg[2] & 0x1a00) == 0x1a00)
- ret = true;
for(pixel=m_crtc->hbegin();pixel<=m_crtc->hend();pixel++)
{
colour = ((m_gvram[lineoffset + loc] >> page*shift) & 0x000f);
@@ -332,8 +331,6 @@ bool x68k_state::draw_gfx_scanline( bitmap_ind16 &bitmap, rectangle cliprect, ui
lineoffset1 = (((scanline - m_crtc->vbegin() / divisor) + yscr1) & 0x1ff) * 512;
loc1 = xscr1 & 0x1ff;
shift = 4;
- if((m_video.reg[2] & 0x1a00) == 0x1a00)
- ret = true;
for(pixel=m_crtc->hbegin();pixel<=m_crtc->hend();pixel++)
{
colour = ((m_gvram[lineoffset0 + loc0] >> page*shift) & 0x000f);
@@ -387,6 +384,7 @@ bool x68k_state::draw_gfx_scanline( bitmap_ind16 &bitmap, rectangle cliprect, ui
loc++;
loc &= 0x1ff;
}
+ ret = false;
break;
}
}
@@ -443,7 +441,7 @@ template <bool Blend> rgb_t x68k_state::get_gfx_pixel(int scanline, int pixel, b
if(colour || (m_video.gfx_pri == 2))
{
if(blend)
- return ((blendpix >> 1) & 0xff7f7f7f) + ((pal555(colour, 6, 11, 1) >> 1) & 0x7f7f7f);
+ return ((blendpix >> 1) & 0xff7f7f7f) + ((pal555(colour, 6, 11, 1) >> 2) & 0x3f3f3f);
else
return pal555(colour, 6, 11, 1);
}
@@ -461,7 +459,7 @@ template <bool Blend> rgb_t x68k_state::get_gfx_pixel(int scanline, int pixel, b
if((m_gfxpalette->pen(colour) & 0xffffff) || (m_video.gfx_pri == 2))
{
if(blend)
- return ((blendpix >> 1) & 0xff7f7f7f) + ((m_gfxpalette->pen(colour) >> 1) & 0x7f7f7f);
+ return ((blendpix >> 1) & 0xff7f7f7f) + ((m_gfxpalette->pen(colour) >> 2) & 0x3f3f3f);
else
return m_gfxpalette->pen(colour);
}
@@ -765,7 +763,7 @@ uint32_t x68k_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
pcgprio = currprio;
currprio++;
}
- if((m_video.gfx_pri == priority) && !m_crtc->gfx_layer_buffer())
+ if((m_video.gfx_pri == priority) && !m_crtc->gfx_layer_buffer() && (m_video.reg[2] & 0x1f))
{
gfxprio = currprio;
currprio++;