Reverted Direct3D to 2048x2048 buffer and suppressed the EGA/(S)VGA overscan, if enabled, in 2048x modes, fixes Direct3D freezes;

Improved the BusLogic incoming mailbox code;
The BusLogic callback is now three-phases and outgoing mailbox interrupts are emulated correctly;
Fixed the CD-ROM command READ DISC INFORMATION (0x51), fixes NetBSD crashing 86Box with segmentation fault when using the AHA-154x;
Added the CD-ROM command PAUSE/RESUME ALT (0xC2).
This commit is contained in:
OBattler
2017-01-24 01:03:23 +01:00
parent bd28cc5e57
commit bc5ac4a699
21 changed files with 308 additions and 278 deletions

View File

@@ -121,17 +121,25 @@ void updatewindowsize(int x, int y)
if (x < 160) x = 160;
if (y < 100) y = 100;
int temp_overscan_x = overscan_x;
int temp_overscan_y = overscan_y;
if (suppress_overscan)
{
temp_overscan_x = temp_overscan_y = 0;
}
winsizex=x; efwinsizey=y;
if (force_43)
{
/* Account for possible overscan. */
if (overscan_y == 16)
if (temp_overscan_y == 16)
{
/* CGA */
winsizey = ((int) (((double) (x - overscan_x) / 4.0) * 3.0)) + overscan_y;
winsizey = ((int) (((double) (x - temp_overscan_x) / 4.0) * 3.0)) + temp_overscan_y;
}
else if (overscan_y < 16)
else if (temp_overscan_y < 16)
{
/* MDA/Hercules */
winsizey = efwinsizey;
@@ -141,7 +149,7 @@ void updatewindowsize(int x, int y)
if (enable_overscan)
{
/* EGA/(S)VGA with overscan */
winsizey = ((int) (((double) (x - overscan_x) / 4.0) * 3.0)) + overscan_y;
winsizey = ((int) (((double) (x - temp_overscan_x) / 4.0) * 3.0)) + temp_overscan_y;
}
else
{