mirror of
https://github.com/holub/mame
synced 2025-04-17 22:13:04 +03:00
x68k: fix blending, gfx layer disable vid mode divisor
x68k_flop: restore aquales to working
This commit is contained in:
parent
29615599ee
commit
00b2056e12
@ -1304,14 +1304,12 @@ Most info on release dates and Jpn titles come from the following (wonderful) re
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="aquales" supported="no">
|
||||
<software name="aquales" supported="yes">
|
||||
<description>Aquales</description>
|
||||
<year>1991</year>
|
||||
<publisher>エグザクト (Exact)</publisher>
|
||||
<notes><![CDATA[
|
||||
Doesn't autoboot with both disks in, requires a fake data disk swap from user
|
||||
Opening hangs at first line
|
||||
During gameplay, weapon menu has random horizontal lines
|
||||
If autoboot doesn't work, delete nvram
|
||||
]]></notes>
|
||||
<info name="alt_title" value="アクアレス" />
|
||||
<info name="release" value="19910912" />
|
||||
|
@ -186,7 +186,6 @@ void x68k_crtc_device::refresh_mode()
|
||||
logerror("Invalid mode %d", m_reg[20] & 0x1f); [[fallthrough]];
|
||||
case 1:
|
||||
case 5:
|
||||
case 0x11:
|
||||
div = 4;
|
||||
break;
|
||||
case 0x16:
|
||||
@ -195,6 +194,7 @@ void x68k_crtc_device::refresh_mode()
|
||||
case 0x10:
|
||||
div = 6;
|
||||
break;
|
||||
case 0x11: // aquales intro requires /3 for 0x11, TODO: figure out what wanted /4
|
||||
case 0x15:
|
||||
div = 3;
|
||||
break;
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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++;
|
||||
|
Loading…
Reference in New Issue
Block a user