Version changed to 1.07;

Added Intel Advanced/ZP;
Added Commodore PC 60 III;
Fixed Force 4:3 option when overscan is not enabled;
Added option to scale (0.5x, 1x, 1.5x, 2x) the video output;
Added ability to disable ATAPI DMA for CD-ROM drives;
Applied all mainline PCem commits;
Store network card in config file as name rather than number;
Fixed NVR storing for IBM PS/2 Models 2121 and 2121+ISA.
This commit is contained in:
OBattler
2017-03-14 00:38:25 +01:00
parent 9d33905d85
commit a57aa0ffcc
16 changed files with 223 additions and 40 deletions

View File

@@ -114,6 +114,11 @@ static int win_doresize = 0;
static int leave_fullscreen_flag = 0;
static int unscaled_size_x = 0;
static int unscaled_size_y = 0;
int scale = 0;
void updatewindowsize(int x, int y)
{
RECT r;
@@ -130,7 +135,7 @@ void updatewindowsize(int x, int y)
temp_overscan_x = temp_overscan_y = 0;
}
winsizex=x; efwinsizey=y;
unscaled_size_x=x; efwinsizey=y;
if (force_43)
{
@@ -138,30 +143,50 @@ void updatewindowsize(int x, int y)
if (temp_overscan_y == 16)
{
/* CGA */
winsizey = ((int) (((double) (x - temp_overscan_x) / 4.0) * 3.0)) + temp_overscan_y;
unscaled_size_y = ((int) (((double) (x - temp_overscan_x) / 4.0) * 3.0)) + temp_overscan_y;
}
else if (temp_overscan_y < 16)
{
/* MDA/Hercules */
winsizey = efwinsizey;
unscaled_size_y = ((int) (((double) (x) / 4.0) * 3.0));
}
else
{
if (enable_overscan)
{
/* EGA/(S)VGA with overscan */
winsizey = ((int) (((double) (x - temp_overscan_x) / 4.0) * 3.0)) + temp_overscan_y;
unscaled_size_y = ((int) (((double) (x - temp_overscan_x) / 4.0) * 3.0)) + temp_overscan_y;
}
else
{
/* EGA/(S)VGA without overscan */
winsizey = efwinsizey;
unscaled_size_y = ((int) (((double) (x) / 4.0) * 3.0));
}
}
}
else
{
winsizey = efwinsizey;
unscaled_size_y = efwinsizey;
}
switch(scale)
{
case 0:
winsizex = unscaled_size_x >> 1;
winsizey = unscaled_size_y >> 1;
break;
case 1:
winsizex = unscaled_size_x;
winsizey = unscaled_size_y;
break;
case 2:
winsizex = (unscaled_size_x * 3) >> 1;
winsizey = (unscaled_size_y * 3) >> 1;
break;
case 3:
winsizex = unscaled_size_x << 1;
winsizey = unscaled_size_y << 1;
break;
}
win_doresize = 1;
@@ -169,7 +194,7 @@ void updatewindowsize(int x, int y)
void uws_natural()
{
updatewindowsize(winsizex, efwinsizey);
updatewindowsize(unscaled_size_x, efwinsizey);
}
void releasemouse()
@@ -681,6 +706,9 @@ int WINAPI WinMain (HINSTANCE hThisInstance,
if (cdrom_drives[e].bus_type)
CheckMenuItem(menu, IDM_CDROM_1_SCSI + (e * 1000), MF_CHECKED);
if (cdrom_drives[e].atapi_dma)
CheckMenuItem(menu, IDM_CDROM_1_DMA + (e * 1000), MF_CHECKED);
if (!find_in_array(valid_ide_channels, cdrom_drives[e].ide_channel, 8, IDM_CDROM_1_C + (e * 1000)))
{
fatal("CD-ROM %i: Invalid IDE channel\n", e);
@@ -767,7 +795,8 @@ int WINAPI WinMain (HINSTANCE hThisInstance,
CheckMenuItem(menu, IDM_VID_FS_FULL + video_fullscreen_scale, MF_CHECKED);
CheckMenuItem(menu, IDM_VID_REMEMBER, window_remember ? MF_CHECKED : MF_UNCHECKED);
// set_display_switch_mode(SWITCH_BACKGROUND);
CheckMenuItem(menu, IDM_VID_SCALE_1X + scale, MF_CHECKED);
// pclog("Preparing ROM sets...\n");
d=romset;
for (c=0;c<ROM_MAX;c++)
@@ -1411,6 +1440,16 @@ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM
saveconfig();
break;
case IDM_VID_SCALE_1X:
case IDM_VID_SCALE_2X:
case IDM_VID_SCALE_3X:
case IDM_VID_SCALE_4X:
CheckMenuItem(hmenu, IDM_VID_SCALE_1X + scale, MF_UNCHECKED);
scale = LOWORD(wParam) - IDM_VID_SCALE_1X;
CheckMenuItem(hmenu, IDM_VID_SCALE_1X + scale, MF_CHECKED);
saveconfig();
break;
case IDM_USE_NUKEDOPL:
if (MessageBox(NULL,"This will reset 86Box!\nOkay to continue?","86Box",MB_OKCANCEL) != IDOK)
{
@@ -1566,6 +1605,24 @@ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM
pause = 0;
break;
case IDM_CDROM_1_DMA:
case IDM_CDROM_2_DMA:
case IDM_CDROM_3_DMA:
case IDM_CDROM_4_DMA:
cdrom_id = convert_cdrom_id(LOWORD(wParam) - IDM_CDROM_1_DMA);
if (MessageBox(NULL,"This will reset 86Box!\nOkay to continue?","86Box",MB_OKCANCEL) != IDOK)
{
break;
}
pause = 1;
Sleep(100);
cdrom_drives[cdrom_id].atapi_dma ^= 1;
CheckMenuItem(hmenu, IDM_CDROM_1_DMA + (cdrom_id * 1000), cdrom_drives[cdrom_id].atapi_dma ? MF_CHECKED : MF_UNCHECKED);
saveconfig();
resetpchard();
pause = 0;
break;
case IDM_CDROM_1_C ... IDM_CDROM_1_H:
case IDM_CDROM_2_C ... IDM_CDROM_2_H:
case IDM_CDROM_3_C ... IDM_CDROM_3_H: