mirror of
https://github.com/holub/mame
synced 2025-06-07 13:23:50 +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>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="aquales" supported="no">
|
<software name="aquales" supported="yes">
|
||||||
<description>Aquales</description>
|
<description>Aquales</description>
|
||||||
<year>1991</year>
|
<year>1991</year>
|
||||||
<publisher>エグザクト (Exact)</publisher>
|
<publisher>エグザクト (Exact)</publisher>
|
||||||
<notes><![CDATA[
|
<notes><![CDATA[
|
||||||
Doesn't autoboot with both disks in, requires a fake data disk swap from user
|
If autoboot doesn't work, delete nvram
|
||||||
Opening hangs at first line
|
|
||||||
During gameplay, weapon menu has random horizontal lines
|
|
||||||
]]></notes>
|
]]></notes>
|
||||||
<info name="alt_title" value="アクアレス" />
|
<info name="alt_title" value="アクアレス" />
|
||||||
<info name="release" value="19910912" />
|
<info name="release" value="19910912" />
|
||||||
|
@ -186,7 +186,6 @@ void x68k_crtc_device::refresh_mode()
|
|||||||
logerror("Invalid mode %d", m_reg[20] & 0x1f); [[fallthrough]];
|
logerror("Invalid mode %d", m_reg[20] & 0x1f); [[fallthrough]];
|
||||||
case 1:
|
case 1:
|
||||||
case 5:
|
case 5:
|
||||||
case 0x11:
|
|
||||||
div = 4;
|
div = 4;
|
||||||
break;
|
break;
|
||||||
case 0x16:
|
case 0x16:
|
||||||
@ -195,6 +194,7 @@ void x68k_crtc_device::refresh_mode()
|
|||||||
case 0x10:
|
case 0x10:
|
||||||
div = 6;
|
div = 6;
|
||||||
break;
|
break;
|
||||||
|
case 0x11: // aquales intro requires /3 for 0x11, TODO: figure out what wanted /4
|
||||||
case 0x15:
|
case 0x15:
|
||||||
div = 3;
|
div = 3;
|
||||||
break;
|
break;
|
||||||
|
@ -215,7 +215,7 @@ bool x68k_state::draw_gfx_scanline( bitmap_ind16 &bitmap, rectangle cliprect, ui
|
|||||||
uint16_t xscr,yscr;
|
uint16_t xscr,yscr;
|
||||||
uint16_t colour = 0;
|
uint16_t colour = 0;
|
||||||
int shift;
|
int shift;
|
||||||
bool blend, ret = false;
|
bool blend, ret = (m_video.reg[2] & 0x1a00) == 0x1a00;
|
||||||
uint16_t *pal = (uint16_t *)m_gfxpalette->basemem().base();
|
uint16_t *pal = (uint16_t *)m_gfxpalette->basemem().base();
|
||||||
int divisor = 1;
|
int divisor = 1;
|
||||||
if(m_crtc->gfx_double_scan())
|
if(m_crtc->gfx_double_scan())
|
||||||
@ -262,6 +262,7 @@ bool x68k_state::draw_gfx_scanline( bitmap_ind16 &bitmap, rectangle cliprect, ui
|
|||||||
loc++;
|
loc++;
|
||||||
loc &= 0x3ff;
|
loc &= 0x3ff;
|
||||||
}
|
}
|
||||||
|
ret = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // else 512x512 "real" screen size
|
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;
|
lineoffset = (((scanline - m_crtc->vbegin() / divisor) + yscr) & 0x1ff) * 512;
|
||||||
loc = xscr & 0x1ff;
|
loc = xscr & 0x1ff;
|
||||||
shift = 4;
|
shift = 4;
|
||||||
if((m_video.reg[2] & 0x1a00) == 0x1a00)
|
|
||||||
ret = true;
|
|
||||||
for(pixel=m_crtc->hbegin();pixel<=m_crtc->hend();pixel++)
|
for(pixel=m_crtc->hbegin();pixel<=m_crtc->hend();pixel++)
|
||||||
{
|
{
|
||||||
colour = ((m_gvram[lineoffset + loc] >> page*shift) & 0x000f);
|
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;
|
lineoffset1 = (((scanline - m_crtc->vbegin() / divisor) + yscr1) & 0x1ff) * 512;
|
||||||
loc1 = xscr1 & 0x1ff;
|
loc1 = xscr1 & 0x1ff;
|
||||||
shift = 4;
|
shift = 4;
|
||||||
if((m_video.reg[2] & 0x1a00) == 0x1a00)
|
|
||||||
ret = true;
|
|
||||||
for(pixel=m_crtc->hbegin();pixel<=m_crtc->hend();pixel++)
|
for(pixel=m_crtc->hbegin();pixel<=m_crtc->hend();pixel++)
|
||||||
{
|
{
|
||||||
colour = ((m_gvram[lineoffset0 + loc0] >> page*shift) & 0x000f);
|
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++;
|
||||||
loc &= 0x1ff;
|
loc &= 0x1ff;
|
||||||
}
|
}
|
||||||
|
ret = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -765,7 +763,7 @@ uint32_t x68k_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
|
|||||||
pcgprio = currprio;
|
pcgprio = currprio;
|
||||||
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;
|
gfxprio = currprio;
|
||||||
currprio++;
|
currprio++;
|
||||||
|
Loading…
Reference in New Issue
Block a user