Fixes to Trio64 read mask handling. Fixes some graphics issues in OS/2 Warp.
This commit is contained in:
parent
38fa1cbfd1
commit
138430ad8f
1 changed files with 8 additions and 1 deletions
|
|
@ -1514,7 +1514,8 @@ uint8_t s3_accel_read(uint32_t addr, void *p)
|
||||||
#define READ_SRC(addr, dat) if (s3->bpp == 0) dat = svga->vram[ (addr) & s3->vram_mask]; \
|
#define READ_SRC(addr, dat) if (s3->bpp == 0) dat = svga->vram[ (addr) & s3->vram_mask]; \
|
||||||
else if (s3->bpp == 1) dat = vram_w[(addr) & (s3->vram_mask >> 1)]; \
|
else if (s3->bpp == 1) dat = vram_w[(addr) & (s3->vram_mask >> 1)]; \
|
||||||
else dat = vram_l[(addr) & (s3->vram_mask >> 2)]; \
|
else dat = vram_l[(addr) & (s3->vram_mask >> 2)]; \
|
||||||
dat &= s3->accel.rd_mask;
|
if (vram_mask) \
|
||||||
|
dat = ((dat & rd_mask) == rd_mask);
|
||||||
|
|
||||||
#define READ_DST(addr, dat) if (s3->bpp == 0) dat = svga->vram[ (addr) & s3->vram_mask]; \
|
#define READ_DST(addr, dat) if (s3->bpp == 0) dat = svga->vram[ (addr) & s3->vram_mask]; \
|
||||||
else if (s3->bpp == 1) dat = vram_w[(addr) & (s3->vram_mask >> 1)]; \
|
else if (s3->bpp == 1) dat = vram_w[(addr) & (s3->vram_mask >> 1)]; \
|
||||||
|
|
@ -1576,6 +1577,7 @@ void s3_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat
|
||||||
uint32_t *vram_l = (uint32_t *)svga->vram;
|
uint32_t *vram_l = (uint32_t *)svga->vram;
|
||||||
uint32_t compare = s3->accel.color_cmp;
|
uint32_t compare = s3->accel.color_cmp;
|
||||||
int compare_mode = (s3->accel.multifunc[0xe] >> 7) & 3;
|
int compare_mode = (s3->accel.multifunc[0xe] >> 7) & 3;
|
||||||
|
uint32_t rd_mask = s3->accel.rd_mask;
|
||||||
|
|
||||||
s3->force_busy = 1;
|
s3->force_busy = 1;
|
||||||
//return;
|
//return;
|
||||||
|
|
@ -1602,6 +1604,11 @@ void s3_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat
|
||||||
if (s3->bpp == 1) count >>= 1;
|
if (s3->bpp == 1) count >>= 1;
|
||||||
if (s3->bpp == 3) count >>= 2;
|
if (s3->bpp == 3) count >>= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (s3->bpp == 0)
|
||||||
|
rd_mask &= 0xff;
|
||||||
|
else if (s3->bpp == 1)
|
||||||
|
rd_mask &= 0xffff;
|
||||||
|
|
||||||
switch (s3->accel.cmd & 0x600)
|
switch (s3->accel.cmd & 0x600)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue