Reverted EGA emulation to be in line with mainline PCem except for the overscan, as there were some problems;

Added write port 3C1 to EGA and (S)VGA, fixed Microsoft Word 2.0 for DOS;
The RTL8029AS now correctly enables I/O port range when base address is changed via PCI registers with I/O access enabled;
Tentative fix for DirectDraw <-> Direct3D switching issues based on proposal from TheCollector1995;
Fixed 64-bit makefile;
Fixed LZF_C.C so it can compile for 64-bit Windows;
Applied all mainline PCem commits.
This commit is contained in:
OBattler
2017-02-14 23:46:50 +01:00
parent 07f1e37d26
commit 711f09e17b
11 changed files with 350 additions and 321 deletions

View File

@@ -160,13 +160,13 @@ typedef struct voodoo_params_t
uint32_t texBaseAddr[2], texBaseAddr1[2], texBaseAddr2[2], texBaseAddr38[2];
uint32_t tex_base[2][LOD_MAX+1];
uint32_t tex_base[2][LOD_MAX+2];
int tex_width[2];
int tex_w_mask[2][LOD_MAX+1];
int tex_w_nmask[2][LOD_MAX+1];
int tex_h_mask[2][LOD_MAX+1];
int tex_shift[2][LOD_MAX+1];
int tex_lod[2][LOD_MAX+1];
int tex_w_mask[2][LOD_MAX+2];
int tex_w_nmask[2][LOD_MAX+2];
int tex_h_mask[2][LOD_MAX+2];
int tex_shift[2][LOD_MAX+2];
int tex_lod[2][LOD_MAX+2];
int tex_entry[2];
int detail_max[2], detail_bias[2], detail_scale[2];
@@ -1122,7 +1122,7 @@ static void voodoo_recalc_tex(voodoo_t *voodoo, int tmu)
tex_lod++;
}
for (lod = 0; lod <= LOD_MAX; lod++)
for (lod = 0; lod <= LOD_MAX+1; lod++)
{
if (!width)
width = 1;
@@ -3649,9 +3649,9 @@ static void triangle_setup(voodoo_t *voodoo)
}
if (voodoo->sSetupMode & SETUPMODE_W1)
{
voodoo->params.tmu[1].startW = (int64_t)(voodoo->verts[va].sW0 * 4294967296.0f);
voodoo->params.tmu[1].dWdX = (int64_t)(((voodoo->verts[va].sW0 - voodoo->verts[vb].sW0) * dyBC - (voodoo->verts[vb].sW0 - voodoo->verts[vc].sW0) * dyAB) * 4294967296.0f);
voodoo->params.tmu[1].dWdY = (int64_t)(((voodoo->verts[vb].sW0 - voodoo->verts[vc].sW0) * dxAB - (voodoo->verts[va].sW0 - voodoo->verts[vb].sW0) * dxBC) * 4294967296.0f);
voodoo->params.tmu[1].startW = (int64_t)(voodoo->verts[va].sW1 * 4294967296.0f);
voodoo->params.tmu[1].dWdX = (int64_t)(((voodoo->verts[va].sW1 - voodoo->verts[vb].sW1) * dyBC - (voodoo->verts[vb].sW1 - voodoo->verts[vc].sW1) * dyAB) * 4294967296.0f);
voodoo->params.tmu[1].dWdY = (int64_t)(((voodoo->verts[vb].sW1 - voodoo->verts[vc].sW1) * dxAB - (voodoo->verts[va].sW1 - voodoo->verts[vb].sW1) * dxBC) * 4294967296.0f);
}
if (voodoo->sSetupMode & SETUPMODE_S1_T1)
{