Removed excess CRTC masking from several graphics cards;

Reverted two dynarec files to their PCem versions - fixes Sensible Soccer.
This commit is contained in:
OBattler
2018-02-03 03:19:12 +01:00
parent ccb5fdf563
commit 2707de9925
10 changed files with 20 additions and 36 deletions

View File

@@ -146,7 +146,7 @@ static uint32_t ropFSTs(uint8_t opcode, uint32_t fetchdat, uint32_t op_32, uint3
static uint32_t ropFSTd(uint8_t opcode, uint32_t fetchdat, uint32_t op_32, uint32_t op_pc, codeblock_t *block)
{
x86seg *target_seg;
int host_reg1 = 0, host_reg2 = 0;
int host_reg1, host_reg2;
FP_ENTER();
op_pc--;
@@ -556,7 +556,7 @@ static uint32_t ropFISTPl(uint8_t opcode, uint32_t fetchdat, uint32_t op_32, uin
static uint32_t ropFISTPq(uint8_t opcode, uint32_t fetchdat, uint32_t op_32, uint32_t op_pc, codeblock_t *block)
{
x86seg *target_seg;
int host_reg1 = 0, host_reg2 = 0;
int host_reg1, host_reg2;
FP_ENTER();
op_pc--;
@@ -621,12 +621,10 @@ static uint32_t ropFCHS(uint8_t opcode, uint32_t fetchdat, uint32_t op_32, uint3
#define opFLDimm(name, v) \
static uint32_t ropFLD ## name(uint8_t opcode, uint32_t fetchdat, uint32_t op_32, uint32_t op_pc, codeblock_t *block) \
{ \
uint64_t *q; \
static double fp_imm = v; \
\
FP_ENTER(); \
q = (uint64_t *)&fp_imm; \
FP_LOAD_IMM_Q(*q); \
FP_LOAD_IMM_Q(*(uint64_t *)&fp_imm); \
\
return op_pc; \
}

View File

@@ -1,6 +1,6 @@
static uint32_t ropMOVQ_q_mm(uint8_t opcode, uint32_t fetchdat, uint32_t op_32, uint32_t op_pc, codeblock_t *block)
{
int host_reg1 = 0, host_reg2 = 0;
int host_reg1, host_reg2;
MMX_ENTER();

View File

@@ -586,7 +586,7 @@ int opcode_0f_modrm[256] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*80*/
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*90*/
0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, /*a0*/
0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, /*a0*/
1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, /*b0*/
1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /*c0*/

View File

@@ -8,13 +8,13 @@
*
* ATI 18800 emulation (VGA Edge-16)
*
* Version: @(#)vid_ati18800.c 1.0.3 2017/11/04
* Version: @(#)vid_ati18800.c 1.0.4 2018/02/03
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
*
* Copyright 2008-2017 Sarah Walker.
* Copyright 2016,2017 Miran Grca.
* Copyright 2008-2018 Sarah Walker.
* Copyright 2016-2018 Miran Grca.
*/
#include <stdio.h>
#include <stdint.h>
@@ -89,8 +89,6 @@ static void ati18800_out(uint16_t addr, uint8_t val, void *p)
svga->crtcreg = val & 0x3f;
return;
case 0x3D5:
if (svga->crtcreg <= 0x18)
val &= mask_crtc[svga->crtcreg];
if ((svga->crtcreg < 7) && (svga->crtc[0x11] & 0x80) && !(ati18800->regs[0xb4] & 0x80))
return;
if ((svga->crtcreg == 7) && (svga->crtc[0x11] & 0x80) && !(ati18800->regs[0xb4] & 0x80))

View File

@@ -8,13 +8,13 @@
*
* ATI 28800 emulation (VGA Charger)
*
* Version: @(#)vid_ati28800.c 1.0.4 2017/11/04
* Version: @(#)vid_ati28800.c 1.0.5 2018/02/03
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
*
* Copyright 2008-2017 Sarah Walker.
* Copyright 2016,2017 Miran Grca.
* Copyright 2008-2018 Sarah Walker.
* Copyright 2016-2018 Miran Grca.
*/
#include <stdio.h>
#include <stdint.h>
@@ -107,8 +107,6 @@ static void ati28800_out(uint16_t addr, uint8_t val, void *p)
svga->crtcreg = val & 0x3f;
return;
case 0x3D5:
if (svga->crtcreg <= 0x18)
val &= mask_crtc[svga->crtcreg];
if ((svga->crtcreg < 7) && (svga->crtc[0x11] & 0x80))
return;
if ((svga->crtcreg == 7) && (svga->crtc[0x11] & 0x80))

View File

@@ -8,13 +8,13 @@
*
* Oak OTI067/077 emulation.
*
* Version: @(#)vid_oti067.c 1.0.3 2017/11/04
* Version: @(#)vid_oti067.c 1.0.4 2018/02/03
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
*
* Copyright 2008-2017 Sarah Walker.
* Copyright 2016,2017 Miran Grca.
* Copyright 2008-2018 Sarah Walker.
* Copyright 2016-2018 Miran Grca.
*/
#include <stdio.h>
#include <stdint.h>
@@ -68,8 +68,6 @@ oti_out(uint16_t addr, uint8_t val, void *p)
return;
case 0x3D5:
if (svga->crtcreg <= 0x18)
val &= mask_crtc[svga->crtcreg];
if ((svga->crtcreg < 7) && (svga->crtc[0x11] & 0x80))
return;
if ((svga->crtcreg == 7) && (svga->crtc[0x11] & 0x80))

View File

@@ -10,7 +10,7 @@
* PC2086, PC3086 use PVGA1A
* MegaPC uses W90C11A
*
* Version: @(#)vid_paradise.c 1.0.4 2018/01/31
* Version: @(#)vid_paradise.c 1.0.5 2018/02/03
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -130,8 +130,6 @@ void paradise_out(uint16_t addr, uint8_t val, void *p)
svga->crtcreg = val & 0x3f;
return;
case 0x3D5:
if (svga->crtcreg <= 0x18)
val &= mask_crtc[svga->crtcreg];
if ((svga->crtcreg < 7) && (svga->crtc[0x11] & 0x80))
return;
if ((svga->crtcreg == 7) && (svga->crtc[0x11] & 0x80))

View File

@@ -11,7 +11,7 @@
* This is intended to be used by another SVGA driver,
* and not as a card in it's own right.
*
* Version: @(#)vid_svga.c 1.0.18 2018/02/01
* Version: @(#)vid_svga.c 1.0.19 2018/02/03
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -50,8 +50,6 @@ extern uint8_t edatlookup[4][4];
uint8_t svga_rotate[8][256];
uint8_t mask_crtc[0x19] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0x7F, 0xEF, 0xFF};
/*Primary SVGA device. As multiple video cards are not yet supported this is the
only SVGA device.*/
static svga_t *svga_pri;

View File

@@ -8,7 +8,7 @@
*
* Generic SVGA handling.
*
* Version: @(#)vid_svga.h 1.0.4 2018/01/25
* Version: @(#)vid_svga.h 1.0.5 2018/02/03
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -190,8 +190,6 @@ void svga_set_override(svga_t *svga, int val);
#define RAMDAC_8BIT 1
void svga_set_ramdac_type(svga_t *svga, int type);
extern uint8_t mask_crtc[0x19];
void svga_close(svga_t *svga);
uint32_t svga_mask_addr(uint32_t addr, svga_t *svga);

View File

@@ -8,13 +8,13 @@
*
* IBM VGA emulation.
*
* Version: @(#)vid_vga.c 1.0.2 2017/11/04
* Version: @(#)vid_vga.c 1.0.3 2018/02/03
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
*
* Copyright 2008-2017 Sarah Walker.
* Copyright 2016,2017 Miran Grca.
* Copyright 2008-2018 Sarah Walker.
* Copyright 2016-2018 Miran Grca.
*/
#include <stdio.h>
#include <stdint.h>
@@ -53,8 +53,6 @@ void vga_out(uint16_t addr, uint8_t val, void *p)
svga->crtcreg = val & 0x1f;
return;
case 0x3D5:
if (svga->crtcreg <= 0x18)
val &= mask_crtc[svga->crtcreg];
if ((svga->crtcreg < 7) && (svga->crtc[0x11] & 0x80))
return;
if ((svga->crtcreg == 7) && (svga->crtc[0x11] & 0x80))