Merge branch 'master' of https://github.com/86Box/86Box
This commit is contained in:
@@ -2511,6 +2511,16 @@ mystique_ctrl_write_l(uint32_t addr, uint32_t val, void *priv)
|
||||
//mystique->dma.pri_state = 0;
|
||||
wake_fifo_thread(mystique);
|
||||
}
|
||||
/* HACK: For DirectX 9.0b Direct3D testing on Windows 98 SE.
|
||||
|
||||
The 4.12.013 drivers give an out-of-bounds busmastering range when dxdiag enumerates Direct3D, with exactly 16384 bytes of difference.
|
||||
Don't attempt busmastering in such cases. This isn't ideal, but there are no more crashes faced in this case. */
|
||||
if ((mystique->dma.primend & DMA_ADDR_MASK) < (mystique->dma.primaddress & DMA_ADDR_MASK) && ((mystique->dma.primaddress & DMA_ADDR_MASK) - (mystique->dma.primend & DMA_ADDR_MASK)) == 0x4000)
|
||||
{
|
||||
mystique->dma.primaddress = mystique->dma.primend;
|
||||
mystique->endprdmasts_pending = 1;
|
||||
mystique->dma.state = DMA_STATE_IDLE;
|
||||
}
|
||||
thread_release_mutex(mystique->dma.lock);
|
||||
break;
|
||||
|
||||
|
@@ -620,7 +620,7 @@ svga_recalctimings(svga_t *svga)
|
||||
svga->ma_latch = ((svga->crtc[0xc] << 8) | svga->crtc[0xd]) + ((svga->crtc[8] & 0x60) >> 5);
|
||||
svga->ca_adj = 0;
|
||||
|
||||
svga->rowcount = svga->crtc[9] & 31;
|
||||
svga->rowcount = svga->crtc[9] & 0x1f;
|
||||
|
||||
svga->hdisp_time = svga->hdisp;
|
||||
svga->render = svga_render_blank;
|
||||
@@ -641,27 +641,26 @@ svga_recalctimings(svga_t *svga)
|
||||
svga->hdisp *= (svga->seqregs[1] & 8) ? 16 : 8;
|
||||
svga->hdisp_old = svga->hdisp;
|
||||
|
||||
if ((svga->bpp <= 8) || ((svga->gdcreg[5] & 0x60) == 0x00)) {
|
||||
if ((svga->bpp <= 8) || ((svga->gdcreg[5] & 0x60) <= 0x20)) {
|
||||
if ((svga->gdcreg[5] & 0x60) == 0x00) {
|
||||
if (svga->seqregs[1] & 8) /*Low res (320)*/
|
||||
svga->render = svga_render_4bpp_lowres;
|
||||
else
|
||||
svga->render = svga_render_4bpp_highres;
|
||||
} else if ((svga->gdcreg[5] & 0x60) == 0x20) {
|
||||
if (svga->seqregs[1] & 8) /*Low res (320)*/
|
||||
svga->render = svga_render_2bpp_lowres;
|
||||
else
|
||||
svga->render = svga_render_2bpp_highres;
|
||||
} else {
|
||||
svga->map8 = svga->pallook;
|
||||
if (svga->attrregs[0x10] & 0x40) /*Low res (320)*/
|
||||
if (svga->lowres) /*Low res (320)*/
|
||||
svga->render = svga_render_8bpp_lowres;
|
||||
else
|
||||
svga->render = svga_render_8bpp_highres;
|
||||
}
|
||||
} else {
|
||||
switch (svga->gdcreg[5] & 0x60) {
|
||||
case 0x20: /*4 colours*/
|
||||
if (svga->seqregs[1] & 8) /*Low res (320)*/
|
||||
svga->render = svga_render_2bpp_lowres;
|
||||
else
|
||||
svga->render = svga_render_2bpp_highres;
|
||||
break;
|
||||
case 0x40:
|
||||
case 0x60: /*256+ colours*/
|
||||
switch (svga->bpp) {
|
||||
|
Reference in New Issue
Block a user