CD-ROM images are now working correctly again;

Fixed all the reported bugs regarding the Settings dialog;
MIDI out device is now no longer reset to 0 after hard reset;
Removed all vestiges of the old disk activity flash;
The configuration file is no longer saved when it shouldn't be;
Redone the status bar icon updating so it is only done in win.c;
Made sure all variables in ibm.h are extern;
A lot of other bugfixes;
Added Mouse Systems Mouse emulation (patch from TheCollector1995);
Added IBM PS/1 Model 2133 (486) emulation (patch from TheCollector1995);
Tweaked the CPU dynamic recompiler cycle periods - 486SX 33 and 486DX 33 now work;
Increased compatibility with configuration files from before the previous commit.
This commit is contained in:
OBattler
2017-05-29 01:18:32 +02:00
parent 84480b7347
commit fc2a293536
54 changed files with 740 additions and 372 deletions

View File

@@ -686,7 +686,6 @@ void ega_poll(void *p)
ega->video_bpp = (ega->gdcreg[5] & 0x20) ? 2 : 4;
}
readflash=0;
ega->firstline = 2000;
ega->lastline = 0;

View File

@@ -870,8 +870,6 @@ void svga_poll(void *p)
if (!svga->override)
svga_doblit(svga->firstline_draw, svga->lastline_draw + 1, wx, wy, svga);
readflash = 0;
svga->firstline = 2000;
svga->lastline = 0;

View File

@@ -43,10 +43,75 @@ int svga_display_line(svga_t *svga)
void svga_render_blank(svga_t *svga)
{
#if 0
int x, xx;
int y_add = (enable_overscan) ? 16 : 0;
int x_add = y_add >> 1;
int dl = svga_display_line(svga);
uint32_t *p;
if (svga->firstline_draw == 2000)
svga->firstline_draw = svga->displine;
svga->lastline_draw = svga->displine;
if (dl >= 2046)
{
return;
}
for (x = 0; x < svga->hdisp; x++)
{
switch (svga->seqregs[1] & 9)
{
case 0:
for (xx = 0; xx < 9; xx++)
{
p = ((uint32_t *)buffer32->line[dl]);
if (&(p[(x * 9) + xx + 32 + x_add]) != NULL)
{
p[(x * 9) + xx + 32 + x_add] = svga_color_transform(0);
}
}
break;
case 1:
for (xx = 0; xx < 8; xx++)
{
p = ((uint32_t *)buffer32->line[dl]);
if (&(p[(x * 8) + xx + 32 + x_add]) != NULL)
{
p[(x * 8) + xx + 32 + x_add] = svga_color_transform(0);
}
}
break;
case 8:
for (xx = 0; xx < 18; xx++)
{
p = ((uint32_t *)buffer32->line[dl]);
if (&(p[(x * 18) + xx + 32 + x_add]) != NULL)
{
p[(x * 18) + xx + 32 + x_add] = svga_color_transform(0);
}
}
break;
case 9:
for (xx = 0; xx < 16; xx++)
{
p = ((uint32_t *)buffer32->line[dl]);
if (&(p[(x * 16) + xx + 32 + x_add]) != NULL)
{
p[(x * 16) + xx + 32 + x_add] = svga_color_transform(0);
}
}
break;
}
}
#endif
int x, xx;
int y_add = (enable_overscan) ? 16 : 0;
int x_add = y_add >> 1;
if (svga->firstline_draw == 2000)
svga->firstline_draw = svga->displine;
@@ -57,16 +122,16 @@ void svga_render_blank(svga_t *svga)
switch (svga->seqregs[1] & 9)
{
case 0:
for (xx = 0; xx < 9; xx++) ((uint32_t *)buffer32->line[dl])[(x * 9) + xx + 32 + x_add] = svga_color_transform(0);
for (xx = 0; xx < 9; xx++) ((uint32_t *)buffer32->line[svga->displine + y_add])[(x * 9) + xx + 32 + x_add] = svga_color_transform(0);
break;
case 1:
for (xx = 0; xx < 8; xx++) ((uint32_t *)buffer32->line[dl])[(x * 8) + xx + 32 + x_add] = svga_color_transform(0);
for (xx = 0; xx < 8; xx++) ((uint32_t *)buffer32->line[svga->displine + y_add])[(x * 8) + xx + 32 + x_add] = svga_color_transform(0);
break;
case 8:
for (xx = 0; xx < 18; xx++) ((uint32_t *)buffer32->line[dl])[(x * 18) + xx + 32 + x_add] = svga_color_transform(0);
for (xx = 0; xx < 18; xx++) ((uint32_t *)buffer32->line[svga->displine + y_add])[(x * 18) + xx + 32 + x_add] = svga_color_transform(0);
break;
case 9:
for (xx = 0; xx < 16; xx++) ((uint32_t *)buffer32->line[dl])[(x * 16) + xx + 32 + x_add] = svga_color_transform(0);
for (xx = 0; xx < 16; xx++) ((uint32_t *)buffer32->line[svga->displine + y_add])[(x * 16) + xx + 32 + x_add] = svga_color_transform(0);
break;
}
}

View File

@@ -199,8 +199,8 @@ uint8_t edatlookup[4][4];
int enable_overscan;
int overscan_x, overscan_y;
int force_43;
int enable_flash;
/*Video timing settings -

View File

@@ -81,10 +81,9 @@ extern void (*video_blit_memtoscreen_8_func)(int x, int y, int w, int h);
/* Enable EGA/(S)VGA overscan border. */
extern int enable_overscan;
extern int overscan_x, overscan_y;
/* Forcibly stretch emulated video output to 4:3 or not. */
extern int force_43;
/* Enable disk activity flash. */
extern int enable_flash;
extern int video_timing_b, video_timing_w, video_timing_l;
extern int video_speed;