Cleaned up the (S)VGA render code of excess CRTC checks.
This commit is contained in:
@@ -460,7 +460,7 @@ svga_recalctimings(svga_t *svga)
|
||||
|
||||
svga->hdisp_time = svga->hdisp;
|
||||
svga->render = svga_render_blank;
|
||||
if (!svga->scrblank && svga->attr_palette_enable) {
|
||||
if (!svga->scrblank && (svga->crtc[0x17] & 0x80) && svga->attr_palette_enable) {
|
||||
if (!(svga->gdcreg[6] & 1) && !(svga->attrregs[0x10] & 1)) { /*Text mode*/
|
||||
if (svga->seqregs[1] & 8) /*40 column*/ {
|
||||
svga->render = svga_render_text_40;
|
||||
@@ -658,6 +658,7 @@ svga_poll(void *p)
|
||||
uint32_t x, blink_delay;
|
||||
int wx, wy;
|
||||
int ret, old_ma;
|
||||
int old_vc;
|
||||
|
||||
if (!vga_on && ibm8514_enabled && ibm8514_on) {
|
||||
ibm8514_poll(&svga->dev8514, svga);
|
||||
@@ -786,6 +787,7 @@ svga_poll(void *p)
|
||||
return;
|
||||
|
||||
svga->vc++;
|
||||
old_vc = svga->vc;
|
||||
svga->vc &= 2047;
|
||||
|
||||
if (svga->vc == svga->split) {
|
||||
|
||||
@@ -136,7 +136,6 @@ svga_render_text_40(svga_t *svga)
|
||||
|
||||
drawcursor = ((svga->ma == svga->ca) && svga->con && svga->cursoron);
|
||||
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
if (svga->force_old_addr) {
|
||||
chr = svga->vram[(svga->ma << 1) & svga->vram_display_mask];
|
||||
attr = svga->vram[((svga->ma << 1) + 1) & svga->vram_display_mask];
|
||||
@@ -144,8 +143,6 @@ svga_render_text_40(svga_t *svga)
|
||||
chr = svga->vram[addr];
|
||||
attr = svga->vram[addr+1];
|
||||
}
|
||||
} else
|
||||
chr = attr = 0;
|
||||
|
||||
if (attr & 8) charaddr = svga->charsetb + (chr * 128);
|
||||
else charaddr = svga->charseta + (chr * 128);
|
||||
@@ -212,7 +209,6 @@ svga_render_text_80(svga_t *svga)
|
||||
|
||||
drawcursor = ((svga->ma == svga->ca) && svga->con && svga->cursoron);
|
||||
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
if (svga->force_old_addr) {
|
||||
chr = svga->vram[(svga->ma << 1) & svga->vram_display_mask];
|
||||
attr = svga->vram[((svga->ma << 1) + 1) & svga->vram_display_mask];
|
||||
@@ -220,8 +216,6 @@ svga_render_text_80(svga_t *svga)
|
||||
chr = svga->vram[addr];
|
||||
attr = svga->vram[addr+1];
|
||||
}
|
||||
} else
|
||||
chr = attr = 0;
|
||||
|
||||
if (attr & 8) charaddr = svga->charsetb + (chr * 128);
|
||||
else charaddr = svga->charseta + (chr * 128);
|
||||
@@ -286,10 +280,7 @@ svga_render_text_80_ksc5601(svga_t *svga)
|
||||
drawcursor = ((svga->ma == svga->ca) && svga->con && svga->cursoron);
|
||||
chr = svga->vram[addr];
|
||||
nextchr = svga->vram[addr + 8];
|
||||
if (svga->crtc[0x17] & 0x80)
|
||||
attr = svga->vram[addr + 1];
|
||||
else
|
||||
attr = 0;
|
||||
|
||||
if (drawcursor) {
|
||||
bg = svga->pallook[svga->egapal[attr & 15]];
|
||||
@@ -433,7 +424,6 @@ svga_render_2bpp_lowres(svga_t *svga)
|
||||
else
|
||||
svga->ma += 4;
|
||||
svga->ma &= svga->vram_mask;
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
p[0] = p[1] = svga->pallook[svga->egapal[(dat[0] >> 6) & 3]];
|
||||
p[2] = p[3] = svga->pallook[svga->egapal[(dat[0] >> 4) & 3]];
|
||||
p[4] = p[5] = svga->pallook[svga->egapal[(dat[0] >> 2) & 3]];
|
||||
@@ -442,8 +432,6 @@ svga_render_2bpp_lowres(svga_t *svga)
|
||||
p[10] = p[11] = svga->pallook[svga->egapal[(dat[1] >> 4) & 3]];
|
||||
p[12] = p[13] = svga->pallook[svga->egapal[(dat[1] >> 2) & 3]];
|
||||
p[14] = p[15] = svga->pallook[svga->egapal[dat[1] & 3]];
|
||||
} else
|
||||
memset(p, 0x00, 16 * sizeof(uint32_t));
|
||||
p += 16;
|
||||
}
|
||||
}
|
||||
@@ -469,7 +457,6 @@ svga_render_2bpp_lowres(svga_t *svga)
|
||||
|
||||
svga->ma &= svga->vram_mask;
|
||||
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
p[0] = p[1] = svga->pallook[svga->egapal[(dat[0] >> 6) & 3]];
|
||||
p[2] = p[3] = svga->pallook[svga->egapal[(dat[0] >> 4) & 3]];
|
||||
p[4] = p[5] = svga->pallook[svga->egapal[(dat[0] >> 2) & 3]];
|
||||
@@ -478,8 +465,6 @@ svga_render_2bpp_lowres(svga_t *svga)
|
||||
p[10] = p[11] = svga->pallook[svga->egapal[(dat[1] >> 4) & 3]];
|
||||
p[12] = p[13] = svga->pallook[svga->egapal[(dat[1] >> 2) & 3]];
|
||||
p[14] = p[15] = svga->pallook[svga->egapal[dat[1] & 3]];
|
||||
} else
|
||||
memset(p, 0x00, 16 * sizeof(uint32_t));
|
||||
|
||||
p += 16;
|
||||
}
|
||||
@@ -537,7 +522,6 @@ svga_render_2bpp_highres(svga_t *svga)
|
||||
else
|
||||
svga->ma += 4;
|
||||
svga->ma &= svga->vram_mask;
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
p[0] = svga->pallook[svga->egapal[(dat[0] >> 6) & 3]];
|
||||
p[1] = svga->pallook[svga->egapal[(dat[0] >> 4) & 3]];
|
||||
p[2] = svga->pallook[svga->egapal[(dat[0] >> 2) & 3]];
|
||||
@@ -546,8 +530,6 @@ svga_render_2bpp_highres(svga_t *svga)
|
||||
p[5] = svga->pallook[svga->egapal[(dat[1] >> 4) & 3]];
|
||||
p[6] = svga->pallook[svga->egapal[(dat[1] >> 2) & 3]];
|
||||
p[7] = svga->pallook[svga->egapal[dat[1] & 3]];
|
||||
} else
|
||||
memset(p, 0x00, 8 * sizeof(uint32_t));
|
||||
p += 8;
|
||||
}
|
||||
}
|
||||
@@ -573,7 +555,6 @@ svga_render_2bpp_highres(svga_t *svga)
|
||||
|
||||
svga->ma &= svga->vram_mask;
|
||||
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
p[0] = svga->pallook[svga->egapal[(dat[0] >> 6) & 3]];
|
||||
p[1] = svga->pallook[svga->egapal[(dat[0] >> 4) & 3]];
|
||||
p[2] = svga->pallook[svga->egapal[(dat[0] >> 2) & 3]];
|
||||
@@ -582,8 +563,6 @@ svga_render_2bpp_highres(svga_t *svga)
|
||||
p[5] = svga->pallook[svga->egapal[(dat[1] >> 4) & 3]];
|
||||
p[6] = svga->pallook[svga->egapal[(dat[1] >> 2) & 3]];
|
||||
p[7] = svga->pallook[svga->egapal[dat[1] & 3]];
|
||||
} else
|
||||
memset(p, 0x00, 8 * sizeof(uint32_t));
|
||||
|
||||
p += 8;
|
||||
}
|
||||
@@ -629,7 +608,6 @@ svga_render_2bpp_headland_highres(svga_t *svga)
|
||||
svga->ma += 4;
|
||||
svga->ma &= svga->vram_mask;
|
||||
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat = edatlookup[edat[0] >> 6][edat[1] >> 6] | (edatlookup[edat[2] >> 6][edat[3] >> 6] << 2);
|
||||
p[0] = svga->pallook[svga->egapal[(dat >> 4) & svga->plane_mask]];
|
||||
p[1] = svga->pallook[svga->egapal[dat & svga->plane_mask]];
|
||||
@@ -642,8 +620,6 @@ svga_render_2bpp_headland_highres(svga_t *svga)
|
||||
dat = edatlookup[edat[0] & 3][edat[1] & 3] | (edatlookup[edat[2] & 3][edat[3] & 3] << 2);
|
||||
p[6] = svga->pallook[svga->egapal[(dat >> 4) & svga->plane_mask]];
|
||||
p[7] = svga->pallook[svga->egapal[dat & svga->plane_mask]];
|
||||
} else
|
||||
memset(p, 0x00, 8 * sizeof(uint32_t));
|
||||
|
||||
p += 8;
|
||||
}
|
||||
@@ -704,7 +680,6 @@ svga_render_4bpp_lowres(svga_t *svga)
|
||||
}
|
||||
svga->ma &= svga->vram_mask;
|
||||
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat = edatlookup[edat[0] >> 6][edat[1] >> 6] | (edatlookup[edat[2] >> 6][edat[3] >> 6] << 2);
|
||||
p[0] = p[1] = svga->pallook[svga->egapal[(dat >> 4) & svga->plane_mask]];
|
||||
p[2] = p[3] = svga->pallook[svga->egapal[dat & svga->plane_mask]];
|
||||
@@ -717,8 +692,6 @@ svga_render_4bpp_lowres(svga_t *svga)
|
||||
dat = edatlookup[edat[0] & 3][edat[1] & 3] | (edatlookup[edat[2] & 3][edat[3] & 3] << 2);
|
||||
p[12] = p[13] = svga->pallook[svga->egapal[(dat >> 4) & svga->plane_mask]];
|
||||
p[14] = p[15] = svga->pallook[svga->egapal[dat & svga->plane_mask]];
|
||||
} else
|
||||
memset(p, 0x00, 16 * sizeof(uint32_t));
|
||||
|
||||
p += 16;
|
||||
}
|
||||
@@ -749,7 +722,6 @@ svga_render_4bpp_lowres(svga_t *svga)
|
||||
}
|
||||
svga->ma &= svga->vram_mask;
|
||||
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat = edatlookup[edat[0] >> 6][edat[1] >> 6] | (edatlookup[edat[2] >> 6][edat[3] >> 6] << 2);
|
||||
p[0] = p[1] = svga->pallook[svga->egapal[(dat >> 4) & svga->plane_mask]];
|
||||
p[2] = p[3] = svga->pallook[svga->egapal[dat & svga->plane_mask]];
|
||||
@@ -762,8 +734,6 @@ svga_render_4bpp_lowres(svga_t *svga)
|
||||
dat = edatlookup[edat[0] & 3][edat[1] & 3] | (edatlookup[edat[2] & 3][edat[3] & 3] << 2);
|
||||
p[12] = p[13] = svga->pallook[svga->egapal[(dat >> 4) & svga->plane_mask]];
|
||||
p[14] = p[15] = svga->pallook[svga->egapal[dat & svga->plane_mask]];
|
||||
} else
|
||||
memset(p, 0x00, 16 * sizeof(uint32_t));
|
||||
|
||||
p += 16;
|
||||
}
|
||||
@@ -829,7 +799,6 @@ svga_render_4bpp_highres(svga_t *svga)
|
||||
}
|
||||
svga->ma &= svga->vram_mask;
|
||||
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat = edatlookup[edat[0] >> 6][edat[1] >> 6] | (edatlookup[edat[2] >> 6][edat[3] >> 6] << 2);
|
||||
p[0] = svga->pallook[svga->egapal[(dat >> 4) & svga->plane_mask]];
|
||||
p[1] = svga->pallook[svga->egapal[dat & svga->plane_mask]];
|
||||
@@ -842,8 +811,6 @@ svga_render_4bpp_highres(svga_t *svga)
|
||||
dat = edatlookup[edat[0] & 3][edat[1] & 3] | (edatlookup[edat[2] & 3][edat[3] & 3] << 2);
|
||||
p[6] = svga->pallook[svga->egapal[(dat >> 4) & svga->plane_mask]];
|
||||
p[7] = svga->pallook[svga->egapal[dat & svga->plane_mask]];
|
||||
} else
|
||||
memset(p, 0x00, 8 * sizeof(uint32_t));
|
||||
|
||||
p += 8;
|
||||
}
|
||||
@@ -874,7 +841,6 @@ svga_render_4bpp_highres(svga_t *svga)
|
||||
}
|
||||
svga->ma &= svga->vram_mask;
|
||||
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat = edatlookup[edat[0] >> 6][edat[1] >> 6] | (edatlookup[edat[2] >> 6][edat[3] >> 6] << 2);
|
||||
p[0] = svga->pallook[svga->egapal[(dat >> 4) & svga->plane_mask]];
|
||||
p[1] = svga->pallook[svga->egapal[dat & svga->plane_mask]];
|
||||
@@ -887,8 +853,6 @@ svga_render_4bpp_highres(svga_t *svga)
|
||||
dat = edatlookup[edat[0] & 3][edat[1] & 3] | (edatlookup[edat[2] & 3][edat[3] & 3] << 2);
|
||||
p[6] = svga->pallook[svga->egapal[(dat >> 4) & svga->plane_mask]];
|
||||
p[7] = svga->pallook[svga->egapal[dat & svga->plane_mask]];
|
||||
} else
|
||||
memset(p, 0x00, 8 * sizeof(uint32_t));
|
||||
|
||||
p += 8;
|
||||
}
|
||||
@@ -1071,7 +1035,6 @@ svga_render_8bpp_tseng_lowres(svga_t *svga)
|
||||
svga->lastline_draw = svga->displine;
|
||||
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x += 8) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat = *(uint32_t *)(&svga->vram[svga->ma & svga->vram_display_mask]);
|
||||
if (svga->attrregs[0x10] & 0x80)
|
||||
dat = (dat & ~0xf0) | ((svga->attrregs[0x14] & 0x0f) << 4);
|
||||
@@ -1088,8 +1051,6 @@ svga_render_8bpp_tseng_lowres(svga_t *svga)
|
||||
if (svga->attrregs[0x10] & 0x80)
|
||||
dat = (dat & ~0xf0) | ((svga->attrregs[0x14] & 0x0f) << 4);
|
||||
p[6] = p[7] = svga->map8[dat & 0xff];
|
||||
} else
|
||||
memset(p, 0x00, 8 * sizeof(uint32_t));
|
||||
|
||||
svga->ma += 4;
|
||||
p += 8;
|
||||
@@ -1117,7 +1078,6 @@ svga_render_8bpp_tseng_highres(svga_t *svga)
|
||||
svga->lastline_draw = svga->displine;
|
||||
|
||||
for (x = 0; x <= (svga->hdisp/* + svga->scrollcache*/); x += 8) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat = *(uint32_t *)(&svga->vram[svga->ma & svga->vram_display_mask]);
|
||||
if (svga->attrregs[0x10] & 0x80)
|
||||
dat = (dat & ~0xf0) | ((svga->attrregs[0x14] & 0x0f) << 4);
|
||||
@@ -1151,8 +1111,6 @@ svga_render_8bpp_tseng_highres(svga_t *svga)
|
||||
if (svga->attrregs[0x10] & 0x80)
|
||||
dat = (dat & ~0xf0) | ((svga->attrregs[0x14] & 0x0f) << 4);
|
||||
p[7] = svga->map8[dat & 0xff];
|
||||
} else
|
||||
memset(p, 0x00, 8 * sizeof(uint32_t));
|
||||
|
||||
svga->ma += 8;
|
||||
p += 8;
|
||||
@@ -1181,7 +1139,6 @@ svga_render_15bpp_lowres(svga_t *svga)
|
||||
svga->firstline_draw = svga->displine;
|
||||
svga->lastline_draw = svga->displine;
|
||||
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x += 4) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat = *(uint32_t *)(&svga->vram[(svga->ma + (x << 1)) & svga->vram_display_mask]);
|
||||
|
||||
@@ -1192,8 +1149,6 @@ svga_render_15bpp_lowres(svga_t *svga)
|
||||
|
||||
p[(x << 1) + 4] = p[(x << 1) + 5] = video_15to32[dat & 0xffff];
|
||||
p[(x << 1) + 6] = p[(x << 1) + 7] = video_15to32[dat >> 16];
|
||||
} else
|
||||
memset(&(p[(x << 1)]), 0x00, 8 * sizeof(uint32_t));
|
||||
}
|
||||
svga->ma += x << 1;
|
||||
svga->ma &= svga->vram_display_mask;
|
||||
@@ -1210,7 +1165,6 @@ svga_render_15bpp_lowres(svga_t *svga)
|
||||
|
||||
if (!svga->remap_required) {
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x += 4) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat = *(uint32_t *)(&svga->vram[(svga->ma + (x << 1)) & svga->vram_display_mask]);
|
||||
|
||||
*p++ = video_15to32[dat & 0xffff];
|
||||
@@ -1220,20 +1174,15 @@ svga_render_15bpp_lowres(svga_t *svga)
|
||||
|
||||
*p++ = video_15to32[dat & 0xffff];
|
||||
*p++ = video_15to32[dat >> 16];
|
||||
} else
|
||||
memset(&(p[(x << 1)]), 0x00, 8 * sizeof(uint32_t));
|
||||
}
|
||||
svga->ma += x << 1;
|
||||
} else {
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x += 2) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
addr = svga->remap_func(svga, svga->ma);
|
||||
dat = *(uint32_t *)(&svga->vram[addr & svga->vram_display_mask]);
|
||||
|
||||
*p++ = video_15to32[dat & 0xffff];
|
||||
*p++ = video_15to32[dat >> 16];
|
||||
} else
|
||||
memset(&(p[x]), 0x00, 2 * sizeof(uint32_t));
|
||||
svga->ma += 4;
|
||||
}
|
||||
}
|
||||
@@ -1263,7 +1212,6 @@ svga_render_15bpp_highres(svga_t *svga)
|
||||
svga->lastline_draw = svga->displine;
|
||||
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x += 8) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat = *(uint32_t *)(&svga->vram[(svga->ma + (x << 1)) & svga->vram_display_mask]);
|
||||
p[x] = video_15to32[dat & 0xffff];
|
||||
p[x + 1] = video_15to32[dat >> 16];
|
||||
@@ -1279,8 +1227,6 @@ svga_render_15bpp_highres(svga_t *svga)
|
||||
dat = *(uint32_t *)(&svga->vram[(svga->ma + (x << 1) + 12) & svga->vram_display_mask]);
|
||||
p[x + 6] = video_15to32[dat & 0xffff];
|
||||
p[x + 7] = video_15to32[dat >> 16];
|
||||
} else
|
||||
memset(&(p[x]), 0x00, 8 * sizeof(uint32_t));
|
||||
}
|
||||
svga->ma += x << 1;
|
||||
svga->ma &= svga->vram_display_mask;
|
||||
@@ -1297,7 +1243,6 @@ svga_render_15bpp_highres(svga_t *svga)
|
||||
|
||||
if (!svga->remap_required) {
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x += 8) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat = *(uint32_t *)(&svga->vram[(svga->ma + (x << 1)) & svga->vram_display_mask]);
|
||||
*p++ = video_15to32[dat & 0xffff];
|
||||
*p++ = video_15to32[dat >> 16];
|
||||
@@ -1313,20 +1258,15 @@ svga_render_15bpp_highres(svga_t *svga)
|
||||
dat = *(uint32_t *)(&svga->vram[(svga->ma + (x << 1) + 12) & svga->vram_display_mask]);
|
||||
*p++ = video_15to32[dat & 0xffff];
|
||||
*p++ = video_15to32[dat >> 16];
|
||||
} else
|
||||
memset(&(p[x]), 0x00, 8 * sizeof(uint32_t));
|
||||
}
|
||||
svga->ma += x << 1;
|
||||
} else {
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x += 2) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
addr = svga->remap_func(svga, svga->ma);
|
||||
dat = *(uint32_t *)(&svga->vram[addr & svga->vram_display_mask]);
|
||||
|
||||
*p++ = video_15to32[dat & 0xffff];
|
||||
*p++ = video_15to32[dat >> 16];
|
||||
} else
|
||||
memset(&(p[x]), 0x00, 2 * sizeof(uint32_t));
|
||||
svga->ma += 4;
|
||||
}
|
||||
}
|
||||
@@ -1354,7 +1294,6 @@ svga_render_15bpp_mix_lowres(svga_t *svga)
|
||||
svga->lastline_draw = svga->displine;
|
||||
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x += 4) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat = *(uint32_t *)(&svga->vram[(svga->ma + (x << 1)) & svga->vram_display_mask]);
|
||||
p[(x << 1)] = p[(x << 1) + 1] = (dat & 0x00008000) ? svga->pallook[dat & 0xff] : video_15to32[dat & 0xffff];
|
||||
|
||||
@@ -1366,8 +1305,6 @@ svga_render_15bpp_mix_lowres(svga_t *svga)
|
||||
|
||||
dat >>= 16;
|
||||
p[(x << 1) + 6] = p[(x << 1) + 7] = (dat & 0x00008000) ? svga->pallook[dat & 0xff] : video_15to32[dat & 0xffff];
|
||||
} else
|
||||
memset(&(p[(x << 1)]), 0x00, 8 * sizeof(uint32_t));
|
||||
}
|
||||
svga->ma += x << 1;
|
||||
svga->ma &= svga->vram_display_mask;
|
||||
@@ -1393,7 +1330,6 @@ svga_render_15bpp_mix_highres(svga_t *svga)
|
||||
svga->lastline_draw = svga->displine;
|
||||
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x += 8) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat = *(uint32_t *)(&svga->vram[(svga->ma + (x << 1)) & svga->vram_display_mask]);
|
||||
p[x] = (dat & 0x00008000) ? svga->pallook[dat & 0xff] : video_15to32[dat & 0xffff];
|
||||
dat >>= 16;
|
||||
@@ -1413,8 +1349,6 @@ svga_render_15bpp_mix_highres(svga_t *svga)
|
||||
p[x + 6] = (dat & 0x00008000) ? svga->pallook[dat & 0xff] : video_15to32[dat & 0xffff];
|
||||
dat >>= 16;
|
||||
p[x + 7] = (dat & 0x00008000) ? svga->pallook[dat & 0xff] : video_15to32[dat & 0xffff];
|
||||
} else
|
||||
memset(&(p[x]), 0x00, 8 * sizeof(uint32_t));
|
||||
}
|
||||
svga->ma += x << 1;
|
||||
svga->ma &= svga->vram_display_mask;
|
||||
@@ -1442,7 +1376,6 @@ svga_render_16bpp_lowres(svga_t *svga)
|
||||
svga->lastline_draw = svga->displine;
|
||||
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x += 4) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat = *(uint32_t *)(&svga->vram[(svga->ma + (x << 1)) & svga->vram_display_mask]);
|
||||
p[(x << 1)] = p[(x << 1) + 1] = video_16to32[dat & 0xffff];
|
||||
p[(x << 1) + 2] = p[(x << 1) + 3] = video_16to32[dat >> 16];
|
||||
@@ -1450,8 +1383,6 @@ svga_render_16bpp_lowres(svga_t *svga)
|
||||
dat = *(uint32_t *)(&svga->vram[(svga->ma + (x << 1) + 4) & svga->vram_display_mask]);
|
||||
p[(x << 1) + 4] = p[(x << 1) + 5] = video_16to32[dat & 0xffff];
|
||||
p[(x << 1) + 6] = p[(x << 1) + 7] = video_16to32[dat >> 16];
|
||||
} else
|
||||
memset(&(p[(x << 1)]), 0x00, 8 * sizeof(uint32_t));
|
||||
}
|
||||
svga->ma += x << 1;
|
||||
svga->ma &= svga->vram_display_mask;
|
||||
@@ -1468,7 +1399,6 @@ svga_render_16bpp_lowres(svga_t *svga)
|
||||
|
||||
if (!svga->remap_required) {
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x += 4) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat = *(uint32_t *)(&svga->vram[(svga->ma + (x << 1)) & svga->vram_display_mask]);
|
||||
|
||||
*p++ = video_16to32[dat & 0xffff];
|
||||
@@ -1478,20 +1408,15 @@ svga_render_16bpp_lowres(svga_t *svga)
|
||||
|
||||
*p++ = video_16to32[dat & 0xffff];
|
||||
*p++ = video_16to32[dat >> 16];
|
||||
} else
|
||||
memset(&(p[(x << 1)]), 0x00, 8 * sizeof(uint32_t));
|
||||
}
|
||||
svga->ma += x << 1;
|
||||
} else {
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x += 2) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
addr = svga->remap_func(svga, svga->ma);
|
||||
dat = *(uint32_t *)(&svga->vram[addr & svga->vram_display_mask]);
|
||||
|
||||
*p++ = video_16to32[dat & 0xffff];
|
||||
*p++ = video_16to32[dat >> 16];
|
||||
} else
|
||||
memset(&(p[x]), 0x00, 2 * sizeof(uint32_t));
|
||||
}
|
||||
svga->ma += 4;
|
||||
}
|
||||
@@ -1521,7 +1446,6 @@ svga_render_16bpp_highres(svga_t *svga)
|
||||
svga->lastline_draw = svga->displine;
|
||||
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x += 8) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
uint32_t dat = *(uint32_t *)(&svga->vram[(svga->ma + (x << 1)) & svga->vram_display_mask]);
|
||||
p[x] = video_16to32[dat & 0xffff];
|
||||
p[x + 1] = video_16to32[dat >> 16];
|
||||
@@ -1537,8 +1461,6 @@ svga_render_16bpp_highres(svga_t *svga)
|
||||
dat = *(uint32_t *)(&svga->vram[(svga->ma + (x << 1) + 12) & svga->vram_display_mask]);
|
||||
p[x + 6] = video_16to32[dat & 0xffff];
|
||||
p[x + 7] = video_16to32[dat >> 16];
|
||||
} else
|
||||
memset(&(p[x]), 0x00, 8 * sizeof(uint32_t));
|
||||
}
|
||||
svga->ma += x << 1;
|
||||
svga->ma &= svga->vram_display_mask;
|
||||
@@ -1555,7 +1477,6 @@ svga_render_16bpp_highres(svga_t *svga)
|
||||
|
||||
if (!svga->remap_required) {
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x += 8) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat = *(uint32_t *)(&svga->vram[(svga->ma + (x << 1)) & svga->vram_display_mask]);
|
||||
*p++ = video_16to32[dat & 0xffff];
|
||||
*p++ = video_16to32[dat >> 16];
|
||||
@@ -1571,20 +1492,15 @@ svga_render_16bpp_highres(svga_t *svga)
|
||||
dat = *(uint32_t *)(&svga->vram[(svga->ma + (x << 1) + 12) & svga->vram_display_mask]);
|
||||
*p++ = video_16to32[dat & 0xffff];
|
||||
*p++ = video_16to32[dat >> 16];
|
||||
} else
|
||||
memset(&(p[x]), 0x00, 8 * sizeof(uint32_t));
|
||||
}
|
||||
svga->ma += x << 1;
|
||||
} else {
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x += 2) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
addr = svga->remap_func(svga, svga->ma);
|
||||
dat = *(uint32_t *)(&svga->vram[addr & svga->vram_display_mask]);
|
||||
|
||||
*p++ = video_16to32[dat & 0xffff];
|
||||
*p++ = video_16to32[dat >> 16];
|
||||
} else
|
||||
memset(&(p[x]), 0x00, 2 * sizeof(uint32_t));
|
||||
|
||||
svga->ma += 4;
|
||||
}
|
||||
@@ -1617,10 +1533,7 @@ svga_render_24bpp_lowres(svga_t *svga)
|
||||
svga->lastline_draw = svga->displine;
|
||||
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x++) {
|
||||
if (svga->crtc[0x17] & 0x80)
|
||||
fg = svga->vram[svga->ma] | (svga->vram[svga->ma + 1] << 8) | (svga->vram[svga->ma + 2] << 16);
|
||||
else
|
||||
fg = 0x00000000;
|
||||
svga->ma += 3;
|
||||
svga->ma &= svga->vram_display_mask;
|
||||
buffer32->line[svga->displine + svga->y_add][(x << 1) + svga->x_add] =
|
||||
@@ -1639,12 +1552,9 @@ svga_render_24bpp_lowres(svga_t *svga)
|
||||
|
||||
if (!svga->remap_required) {
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x++) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat0 = *(uint32_t *)(&svga->vram[svga->ma & svga->vram_display_mask]);
|
||||
dat1 = *(uint32_t *)(&svga->vram[(svga->ma + 4) & svga->vram_display_mask]);
|
||||
dat2 = *(uint32_t *)(&svga->vram[(svga->ma + 8) & svga->vram_display_mask]);
|
||||
} else
|
||||
dat0 = dat1 = dat2 = 0x00000000;
|
||||
|
||||
p[0] = p[1] = dat0 & 0xffffff;
|
||||
p[2] = p[3] = (dat0 >> 24) | ((dat1 & 0xffff) << 8);
|
||||
@@ -1655,15 +1565,12 @@ svga_render_24bpp_lowres(svga_t *svga)
|
||||
}
|
||||
} else {
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x += 4) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
addr = svga->remap_func(svga, svga->ma);
|
||||
dat0 = *(uint32_t *)(&svga->vram[addr & svga->vram_display_mask]);
|
||||
addr = svga->remap_func(svga, svga->ma + 4);
|
||||
dat1 = *(uint32_t *)(&svga->vram[addr & svga->vram_display_mask]);
|
||||
addr = svga->remap_func(svga, svga->ma + 8);
|
||||
dat2 = *(uint32_t *)(&svga->vram[addr & svga->vram_display_mask]);
|
||||
} else
|
||||
dat0 = dat1 = dat2 = 0x00000000;
|
||||
|
||||
p[0] = p[1] = dat0 & 0xffffff;
|
||||
p[2] = p[3] = (dat0 >> 24) | ((dat1 & 0xffff) << 8);
|
||||
@@ -1700,7 +1607,6 @@ svga_render_24bpp_highres(svga_t *svga)
|
||||
svga->lastline_draw = svga->displine;
|
||||
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x += 4) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat = *(uint32_t *)(&svga->vram[svga->ma & svga->vram_display_mask]);
|
||||
p[x] = dat & 0xffffff;
|
||||
|
||||
@@ -1712,8 +1618,6 @@ svga_render_24bpp_highres(svga_t *svga)
|
||||
|
||||
dat = *(uint32_t *)(&svga->vram[(svga->ma + 9) & svga->vram_display_mask]);
|
||||
p[x + 3] = dat & 0xffffff;
|
||||
} else
|
||||
memset(&(p[x]), 0x0, 4 * sizeof(uint32_t));
|
||||
|
||||
svga->ma += 12;
|
||||
}
|
||||
@@ -1731,7 +1635,6 @@ svga_render_24bpp_highres(svga_t *svga)
|
||||
|
||||
if (!svga->remap_required) {
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x += 4) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat0 = *(uint32_t *)(&svga->vram[svga->ma & svga->vram_display_mask]);
|
||||
dat1 = *(uint32_t *)(&svga->vram[(svga->ma + 4) & svga->vram_display_mask]);
|
||||
dat2 = *(uint32_t *)(&svga->vram[(svga->ma + 8) & svga->vram_display_mask]);
|
||||
@@ -1740,14 +1643,11 @@ svga_render_24bpp_highres(svga_t *svga)
|
||||
*p++ = (dat0 >> 24) | ((dat1 & 0xffff) << 8);
|
||||
*p++ = (dat1 >> 16) | ((dat2 & 0xff) << 16);
|
||||
*p++ = dat2 >> 8;
|
||||
} else
|
||||
memset(&(p[x]), 0x0, 4 * sizeof(uint32_t));
|
||||
|
||||
svga->ma += 12;
|
||||
}
|
||||
} else {
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x += 4) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
addr = svga->remap_func(svga, svga->ma);
|
||||
dat0 = *(uint32_t *)(&svga->vram[addr & svga->vram_display_mask]);
|
||||
addr = svga->remap_func(svga, svga->ma + 4);
|
||||
@@ -1759,8 +1659,6 @@ svga_render_24bpp_highres(svga_t *svga)
|
||||
*p++ = (dat0 >> 24) | ((dat1 & 0xffff) << 8);
|
||||
*p++ = (dat1 >> 16) | ((dat2 & 0xff) << 16);
|
||||
*p++ = dat2 >> 8;
|
||||
} else
|
||||
memset(&(p[x]), 0x0, 4 * sizeof(uint32_t));
|
||||
|
||||
svga->ma += 12;
|
||||
}
|
||||
@@ -1789,10 +1687,7 @@ svga_render_32bpp_lowres(svga_t *svga)
|
||||
svga->lastline_draw = svga->displine;
|
||||
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x++) {
|
||||
if (svga->crtc[0x17] & 0x80)
|
||||
dat = svga->vram[svga->ma] | (svga->vram[svga->ma + 1] << 8) | (svga->vram[svga->ma + 2] << 16);
|
||||
else
|
||||
dat = 0x00000000;
|
||||
svga->ma += 4;
|
||||
svga->ma &= svga->vram_display_mask;
|
||||
buffer32->line[svga->displine + svga->y_add][(x << 1) + svga->x_add] =
|
||||
@@ -1811,21 +1706,15 @@ svga_render_32bpp_lowres(svga_t *svga)
|
||||
|
||||
if (!svga->remap_required) {
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x++) {
|
||||
if (svga->crtc[0x17] & 0x80)
|
||||
dat = *(uint32_t *)(&svga->vram[(svga->ma + (x << 2)) & svga->vram_display_mask]);
|
||||
else
|
||||
dat = 0x00000000;
|
||||
*p++ = dat & 0xffffff;
|
||||
*p++ = dat & 0xffffff;
|
||||
}
|
||||
svga->ma += (x * 4);
|
||||
} else {
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x++) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
addr = svga->remap_func(svga, svga->ma);
|
||||
dat = *(uint32_t *)(&svga->vram[addr & svga->vram_display_mask]);
|
||||
} else
|
||||
dat = 0x00000000;
|
||||
*p++ = dat & 0xffffff;
|
||||
*p++ = dat & 0xffffff;
|
||||
svga->ma += 4;
|
||||
@@ -1857,10 +1746,7 @@ svga_render_32bpp_highres(svga_t *svga)
|
||||
svga->lastline_draw = svga->displine;
|
||||
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x++) {
|
||||
if (svga->crtc[0x17] & 0x80)
|
||||
dat = *(uint32_t *)(&svga->vram[(svga->ma + (x << 2)) & svga->vram_display_mask]);
|
||||
else
|
||||
dat = 0x00000000;
|
||||
p[x] = dat & 0xffffff;
|
||||
}
|
||||
svga->ma += 4;
|
||||
@@ -1878,21 +1764,15 @@ svga_render_32bpp_highres(svga_t *svga)
|
||||
|
||||
if (!svga->remap_required) {
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x++) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat = *(uint32_t *)(&svga->vram[(svga->ma + (x << 2)) & svga->vram_display_mask]);
|
||||
*p++ = dat & 0xffffff;
|
||||
} else
|
||||
memset(&(p[x]), 0x0, 1 * sizeof(uint32_t));
|
||||
}
|
||||
svga->ma += (x * 4);
|
||||
} else {
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x++) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
addr = svga->remap_func(svga, svga->ma);
|
||||
dat = *(uint32_t *)(&svga->vram[addr & svga->vram_display_mask]);
|
||||
*p++ = dat & 0xffffff;
|
||||
} else
|
||||
memset(&(p[x]), 0x0, 1 * sizeof(uint32_t));
|
||||
|
||||
svga->ma += 4;
|
||||
}
|
||||
@@ -1925,21 +1805,15 @@ svga_render_ABGR8888_highres(svga_t *svga)
|
||||
|
||||
if (!svga->remap_required) {
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x++) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat = *(uint32_t *)(&svga->vram[(svga->ma + (x << 2)) & svga->vram_display_mask]);
|
||||
*p++ = ((dat & 0xff0000) >> 16) | (dat & 0x00ff00) | ((dat & 0x0000ff) << 16);
|
||||
} else
|
||||
memset(&(p[x]), 0x0, 1 * sizeof(uint32_t));
|
||||
}
|
||||
svga->ma += x*4;
|
||||
} else {
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x++) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
addr = svga->remap_func(svga, svga->ma);
|
||||
dat = *(uint32_t *)(&svga->vram[addr & svga->vram_display_mask]);
|
||||
*p++ = ((dat & 0xff0000) >> 16) | (dat & 0x00ff00) | ((dat & 0x0000ff) << 16);
|
||||
} else
|
||||
memset(&(p[x]), 0x0, 1 * sizeof(uint32_t));
|
||||
|
||||
svga->ma += 4;
|
||||
}
|
||||
@@ -1971,21 +1845,15 @@ svga_render_RGBA8888_highres(svga_t *svga)
|
||||
|
||||
if (!svga->remap_required) {
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x++) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
dat = *(uint32_t *)(&svga->vram[(svga->ma + (x << 2)) & svga->vram_display_mask]);
|
||||
*p++ = dat >> 8;
|
||||
} else
|
||||
memset(&(p[x]), 0x0, 1 * sizeof(uint32_t));
|
||||
}
|
||||
svga->ma += (x * 4);
|
||||
} else {
|
||||
for (x = 0; x <= (svga->hdisp + svga->scrollcache); x++) {
|
||||
if (svga->crtc[0x17] & 0x80) {
|
||||
addr = svga->remap_func(svga, svga->ma);
|
||||
dat = *(uint32_t *)(&svga->vram[addr & svga->vram_display_mask]);
|
||||
*p++ = dat >> 8;
|
||||
} else
|
||||
memset(&(p[x]), 0x0, 1 * sizeof(uint32_t));
|
||||
|
||||
svga->ma += 4;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user