Small but important video changes of the day (October 27th, 2024)

8514/A compatibles:
1. The mode switch (from VGA to 8514/A/ATI and vice-versa) has been fixed again (for the Nth time).
2. Removed a pattern hack used on DPCONFIG = 0x5211 on bitblt, now patterns work properly using the ATI Mach8 3.0 win3.1x drivers.
3. Clipping regs are more accurate for acceleration.

XGA 1-2:
A picky OS is a picky OS, fixes to the Win95 fonts (which uses the pattern sources) applied.
This commit is contained in:
TC1995
2024-10-27 23:36:11 +01:00
parent b0e8647753
commit 8a7e0ea547
4 changed files with 217 additions and 116 deletions

View File

@@ -498,6 +498,24 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len)
dev->accel.multifunc_cntl = val;
dev->accel.multifunc[dev->accel.multifunc_cntl >> 12] = dev->accel.multifunc_cntl & 0xfff;
dev->accel.cmd_back = !!(port == 0xfee8);
if ((dev->accel.multifunc_cntl >> 12) == 1) {
dev->accel.clip_top = dev->accel.multifunc[1] & 0x3ff;
if (dev->accel.multifunc[1] & 0x400)
dev->accel.clip_top |= ~0x3ff;
}
if ((dev->accel.multifunc_cntl >> 12) == 2) {
dev->accel.clip_left = dev->accel.multifunc[2] & 0x3ff;
if (dev->accel.multifunc[2] & 0x400)
dev->accel.clip_left |= ~0x3ff;
}
if ((dev->accel.multifunc_cntl >> 12) == 3)
dev->accel.clip_bottom = dev->accel.multifunc[3] & 0x7ff;
if ((dev->accel.multifunc_cntl >> 12) == 4)
dev->accel.clip_right = dev->accel.multifunc[4] & 0x7ff;
}
break;
@@ -914,10 +932,10 @@ ibm8514_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat
uint16_t old_dest_dat;
int frgd_mix;
int bkgd_mix;
int16_t clip_t = dev->accel.multifunc[1] & 0x7ff;
int16_t clip_l = dev->accel.multifunc[2] & 0x7ff;
uint16_t clip_b = dev->accel.multifunc[3] & 0x7ff;
uint16_t clip_r = dev->accel.multifunc[4] & 0x7ff;
int16_t clip_t = dev->accel.clip_top;
int16_t clip_l = dev->accel.clip_left;
uint16_t clip_b = dev->accel.clip_bottom;
uint16_t clip_r = dev->accel.clip_right;
int pixcntl = (dev->accel.multifunc[0x0a] >> 6) & 3;
uint16_t mix_mask = dev->bpp ? 0x8000 : 0x80;
uint16_t compare = dev->accel.color_cmp;