]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
GUI scaling update.
authorToni Wilen <twilen@winuae.net>
Sun, 27 Oct 2019 12:01:29 +0000 (14:01 +0200)
committerToni Wilen <twilen@winuae.net>
Sun, 27 Oct 2019 12:01:29 +0000 (14:01 +0200)
od-win32/debug_win32.cpp
od-win32/resources/resource.h
od-win32/resources/winuae.rc
od-win32/win32.cpp
od-win32/win32.h
od-win32/win32gfx.cpp
od-win32/win32gui.cpp
od-win32/win32gui.h
od-win32/win32gui_extra.cpp

index 0af3d5bbbdac9ff7ecb0d66999c4090b98fce438..aa8d0cc7ce54e5919bfda5abbb0d913876cfb2ab 100644 (file)
@@ -2057,9 +2057,9 @@ int open_debug_window(void)
        dbgaccel = LoadAccelerators(hUIDLL ? hUIDLL : hInst, MAKEINTRESOURCE (IDR_DBGACCEL));
        nr = getresource(IDD_DEBUGGER);
        if (nr) {
-               hDbgWnd = CreateDialogIndirect (nr->inst, nr->resource, NULL, DebuggerProc);
-               freescaleresource(nr);
+               hDbgWnd = CreateDialogIndirect (nr->inst, nr->sourceresource, NULL, DebuggerProc);
        }
+       freescaleresource(nr);
        debuggerinitializing = FALSE;
        if (!hDbgWnd)
                return 0;
index 63c8f85d21f66ceea4031f7c279ccaa46ea74e25..61f18420f4fe8838d57d6e8db8a8863dc5edfaac 100644 (file)
 #define IDC_GUI_FONT                    1288
 #define IDC_GUI_DEFAULT                 1289
 #define IDC_INFO1                       1289
-#define IDC_GUI_LISTFONT                1290
 #define IDC_INFO2                       1290
 #define IDC_INFO3                       1291
 #define IDC_GUI_LVDEFAULT               1291
index 248fe87668bcbced55672ff824619a9390025691..add39b21617f3fc98819c6170c0420e6f626cd15 100644 (file)
@@ -1,13 +1,14 @@
 // Microsoft Visual C++ generated resource script.
 //
-#include "winres.h"
+#pragma code_page(65001)
+
 #include "resource.h"
+#include "winres.h"
 /////////////////////////////////////////////////////////////////////////////
 // English (United Kingdom) resources
 
 #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG)
 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK
-#pragma code_page(1252)
 
 /////////////////////////////////////////////////////////////////////////////
 //
@@ -102,163 +103,163 @@ END
 // Dialog
 //
 
-IDD_BOARDS DIALOGEX 0, 0, 396, 259
+IDD_BOARDS DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 EXSTYLE WS_EX_CONTEXTHELP
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    CONTROL         "",IDC_BOARDLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,2,18,390,220
-    CONTROL         "Custom board order",IDC_AUTOCONFIGCUSTOMSORT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,2,242,99,12
-    PUSHBUTTON      "Move up",IDC_BOARDS_UP,114,241,78,14
-    PUSHBUTTON      "Move down",IDC_BOARDS_DOWN,203,241,78,14
+    CONTROL         "",IDC_BOARDLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,2,36,390,220
+    CONTROL         "Custom board order",IDC_AUTOCONFIGCUSTOMSORT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,2,260,99,12
+    PUSHBUTTON      "Move up",IDC_BOARDS_UP,114,259,78,14
+    PUSHBUTTON      "Move down",IDC_BOARDS_DOWN,203,259,78,14
 END
 
-IDD_KICKSTART DIALOGEX 0, 0, 396, 305
+IDD_KICKSTART DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 EXSTYLE WS_EX_CONTEXTHELP
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    GROUPBOX        "System ROM Settings",IDC_STATIC,1,0,394,89
-    LTEXT           "Main ROM file:",IDC_ROMTEXT,14,13,263,10
-    COMBOBOX        IDC_ROMFILE,12,25,361,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "...",IDC_KICKCHOOSER,376,25,10,15
-    LTEXT           "Extended ROM file:",IDC_ROMFILE2TEXT,14,42,263,10
-    COMBOBOX        IDC_ROMFILE2,12,54,361,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "...",IDC_ROMCHOOSER2,376,55,10,15
+    GROUPBOX        "System ROM Settings",IDC_STATIC,1,5,394,89
+    LTEXT           "Main ROM file:",IDC_ROMTEXT,14,18,263,10
+    COMBOBOX        IDC_ROMFILE,12,30,361,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "...",IDC_KICKCHOOSER,376,30,10,15
+    LTEXT           "Extended ROM file:",IDC_ROMFILE2TEXT,14,47,263,10
+    COMBOBOX        IDC_ROMFILE2,12,59,361,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "...",IDC_ROMCHOOSER2,376,60,10,15
     CONTROL         "MapROM emulation [] Creates a BlizKick-compatible memory area.",IDC_MAPROM,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,87,72,104,12
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,87,77,104,12
     CONTROL         "ShapeShifter support [] Patches the system ROM for ShapeShifter compatibility.",IDC_KICKSHIFTER,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,195,72,106,13
-    GROUPBOX        "Miscellaneous",IDC_STATIC,0,157,395,109
-    LTEXT           "Cartridge ROM file:",IDC_FLASHTEXT2,12,172,265,10
-    COMBOBOX        IDC_CARTFILE,12,185,361,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "...",IDC_CARTCHOOSER,376,185,10,15
-    LTEXT           "Flash RAM or A2286/A2386SX BIOS CMOS RAM file:",IDC_FLASHTEXT,12,202,265,10
-    EDITTEXT        IDC_FLASHFILE,12,214,361,12,ES_AUTOHSCROLL
-    PUSHBUTTON      "...",IDC_FLASHCHOOSER,376,213,10,15
-    LTEXT           "Real Time Clock file",IDC_STATIC,12,228,313,15,SS_CENTERIMAGE
-    EDITTEXT        IDC_RTCFILE,12,244,361,12,ES_AUTOHSCROLL
-    PUSHBUTTON      "...",IDC_RTCCHOOSER,376,243,10,15
-    GROUPBOX        "Advanced UAE expansion board/Boot ROM Settings",IDC_STATIC,0,269,395,36
-    COMBOBOX        IDC_UAEBOARD_TYPE,96,284,155,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Board type:",IDC_STATIC,20,282,67,15,SS_CENTERIMAGE
-    RTEXT           "Address range",IDC_STATIC,158,110,54,15,SS_CENTERIMAGE
-    EDITTEXT        IDC_ROM_ADDRESS,219,110,79,13,ES_AUTOHSCROLL
-    EDITTEXT        IDC_ROM_ADDRESS2,306,110,79,13,ES_AUTOHSCROLL
-    COMBOBOX        IDC_CUSTOMROMSELECT,12,110,135,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "Advanced Custom ROM Settings",IDC_STATIC,0,93,394,59
-    EDITTEXT        IDC_CUSTOMROMFILE,12,130,361,12,ES_AUTOHSCROLL
-    PUSHBUTTON      "...",IDC_CUSTOMROMCHOOSER,376,127,10,15
-END
-
-IDD_DISPLAY DIALOGEX 0, 0, 396, 311
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,195,77,106,13
+    GROUPBOX        "Miscellaneous",IDC_STATIC,0,162,395,109
+    LTEXT           "Cartridge ROM file:",IDC_FLASHTEXT2,12,177,265,10
+    COMBOBOX        IDC_CARTFILE,12,190,361,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "...",IDC_CARTCHOOSER,376,190,10,15
+    LTEXT           "Flash RAM or A2286/A2386SX BIOS CMOS RAM file:",IDC_FLASHTEXT,12,207,265,10
+    EDITTEXT        IDC_FLASHFILE,12,219,361,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "...",IDC_FLASHCHOOSER,376,218,10,15
+    LTEXT           "Real Time Clock file",IDC_STATIC,12,233,313,15,SS_CENTERIMAGE
+    EDITTEXT        IDC_RTCFILE,12,249,361,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "...",IDC_RTCCHOOSER,376,248,10,15
+    GROUPBOX        "Advanced UAE expansion board/Boot ROM Settings",IDC_STATIC,0,274,395,36
+    COMBOBOX        IDC_UAEBOARD_TYPE,96,289,155,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Board type:",IDC_STATIC,20,287,67,15,SS_CENTERIMAGE
+    RTEXT           "Address range",IDC_STATIC,158,115,54,15,SS_CENTERIMAGE
+    EDITTEXT        IDC_ROM_ADDRESS,219,115,79,13,ES_AUTOHSCROLL
+    EDITTEXT        IDC_ROM_ADDRESS2,306,115,79,13,ES_AUTOHSCROLL
+    COMBOBOX        IDC_CUSTOMROMSELECT,12,115,135,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Advanced Custom ROM Settings",IDC_STATIC,0,98,394,59
+    EDITTEXT        IDC_CUSTOMROMFILE,12,135,361,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "...",IDC_CUSTOMROMCHOOSER,376,132,10,15
+END
+
+IDD_DISPLAY DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    GROUPBOX        "Screen",IDC_SCREENRESTEXT,1,0,393,81,BS_LEFT
-    COMBOBOX        IDC_DISPLAYSELECT,10,13,375,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Fullscreen:",IDC_STATIC,3,31,51,15,SS_CENTERIMAGE
-    COMBOBOX        IDC_RESOLUTION,59,31,76,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_RESOLUTIONDEPTH,144,31,62,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_REFRESHRATE,288,32,97,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Windowed:",IDC_STATIC,2,48,51,15,SS_CENTERIMAGE
-    EDITTEXT        IDC_XSIZE,59,50,43,12,ES_NUMBER
-    EDITTEXT        IDC_YSIZE,110,50,43,12,ES_NUMBER
-    COMBOBOX        IDC_DISPLAY_BUFFERCNT,288,50,97,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "Settings",IDC_SETTINGSTEXT,1,86,283,183
-    RTEXT           "Native:",IDC_STATIC,18,98,32,15,SS_CENTERIMAGE
-    COMBOBOX        IDC_SCREENMODE_NATIVE,54,98,71,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_SCREENMODE_NATIVE2,131,98,108,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "RTG:",IDC_STATIC,19,115,31,15,SS_CENTERIMAGE
-    COMBOBOX        IDC_SCREENMODE_RTG,54,118,71,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_SCREENMODE_RTG2,131,118,107,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Screen",IDC_SCREENRESTEXT,1,4,393,81,BS_LEFT
+    COMBOBOX        IDC_DISPLAYSELECT,10,17,375,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Fullscreen:",IDC_STATIC,3,35,51,15,SS_CENTERIMAGE
+    COMBOBOX        IDC_RESOLUTION,59,35,76,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_RESOLUTIONDEPTH,144,35,62,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_REFRESHRATE,288,36,97,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Windowed:",IDC_STATIC,2,52,51,15,SS_CENTERIMAGE
+    EDITTEXT        IDC_XSIZE,59,54,43,12,ES_NUMBER
+    EDITTEXT        IDC_YSIZE,110,54,43,12,ES_NUMBER
+    COMBOBOX        IDC_DISPLAY_BUFFERCNT,288,54,97,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Settings",IDC_SETTINGSTEXT,1,90,283,183
+    RTEXT           "Native:",IDC_STATIC,18,102,32,15,SS_CENTERIMAGE
+    COMBOBOX        IDC_SCREENMODE_NATIVE,54,102,71,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_SCREENMODE_NATIVE2,131,102,108,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "RTG:",IDC_STATIC,19,119,31,15,SS_CENTERIMAGE
+    COMBOBOX        IDC_SCREENMODE_RTG,54,122,71,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_SCREENMODE_RTG2,131,122,107,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
     CONTROL         "Blacker than black [] Borderblanked black is blacker than display area black.",IDC_BLACKER_THAN_BLACK,
-                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,11,140,139,10
+                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,11,144,139,10
     CONTROL         "Filtered low resolution [] When scaling hires to lores or superhires to hires, show average color of pixel instead of dropping every other pixel.",IDC_LORES_SMOOTHED,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,155,140,123,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,155,144,123,10
     CONTROL         "Remove interlace artifacts [] Emulates interlace mode internally as progressive, removing all interlace artifacts. Not compatible with all software.",IDC_FLICKERFIXER,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,154,139,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,158,139,10
     CONTROL         "VGA mode resolution autoswitch [] Automatically selects between hires and superhires in programmed display modes, keeping correct aspect ratio.",IDC_AUTORESOLUTIONVGA,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,155,154,124,10
-    CONTROL         "Monochrome video out",IDC_GRAYSCALE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,167,139,10
-    RTEXT           "Resolution:",IDC_STATIC,24,192,110,8,SS_CENTERIMAGE
-    COMBOBOX        IDC_LORES,142,191,127,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Resolution autoswitch:",IDC_STATIC,92,212,110,8,SS_CENTERIMAGE
-    COMBOBOX        IDC_AUTORESOLUTIONSELECT,210,211,59,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Refresh:",IDC_REFRESHTEXT,11,231,57,8
-    CONTROL         "Slider1",IDC_FRAMERATE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,71,226,99,20
-    COMBOBOX        IDC_RATE2BOX,210,231,60,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "FPS adj.:",IDC_REFRESH2TEXT,9,252,61,8
-    CONTROL         "",IDC_FRAMERATE2,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,71,247,99,20
-    EDITTEXT        IDC_RATE2TEXT,210,251,46,12,ES_AUTOHSCROLL
-    CONTROL         "",IDC_RATE2ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,261,252,8,10
-    COMBOBOX        IDC_DA_MODE,15,276,71,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "",IDC_DA_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,96,272,96,20
-    EDITTEXT        IDC_DA_TEXT,205,276,56,12,ES_AUTOHSCROLL | ES_READONLY
-    PUSHBUTTON      "Reset to defaults",IDC_DA_RESET,156,294,106,14
-    GROUPBOX        "Centering",IDC_STATIC,289,86,105,46
-    CONTROL         "Horizontal",IDC_XCENTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,300,100,90,10
-    CONTROL         "Vertical",IDC_YCENTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,300,116,90,10
-    GROUPBOX        "Line mode",IDC_STATIC,290,134,104,81
-    CONTROL         "Single",IDC_LM_NORMAL,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_GROUP | WS_TABSTOP,299,148,90,10
-    CONTROL         "Double",IDC_LM_DOUBLED,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,299,161,90,10
-    CONTROL         "Scanlines",IDC_LM_SCANLINES,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,299,174,90,10
-    CONTROL         "Double, fields",IDC_LM_PDOUBLED2,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,299,187,90,10
-    CONTROL         "Double, fields+",IDC_LM_PDOUBLED3,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,299,200,90,10
-    GROUPBOX        "Interlaced line mode",IDC_STATIC,290,222,104,70
-    CONTROL         "Single",IDC_LM_INORMAL,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_GROUP | WS_TABSTOP,299,238,90,10
-    CONTROL         "Double, frames",IDC_LM_IDOUBLED,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,299,251,90,10
-    CONTROL         "Double, fields",IDC_LM_IDOUBLED2,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,299,264,90,10
-    CONTROL         "Double, fields+",IDC_LM_IDOUBLED3,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,299,277,90,10
-    CONTROL         "VRR monitor. Do not tick!",IDC_DISPLAY_VARSYNC,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,58,67,112,10
-    COMBOBOX        IDC_SCREENMODE_NATIVE3,246,98,31,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "Window resize",IDC_DISPLAY_RESIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,161,51,92,10
-END
-
-IDD_MEMORY DIALOGEX 0, 0, 396, 266
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,155,158,124,10
+    CONTROL         "Monochrome video out",IDC_GRAYSCALE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,171,139,10
+    RTEXT           "Resolution:",IDC_STATIC,24,196,110,8,SS_CENTERIMAGE
+    COMBOBOX        IDC_LORES,142,195,127,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Resolution autoswitch:",IDC_STATIC,92,216,110,8,SS_CENTERIMAGE
+    COMBOBOX        IDC_AUTORESOLUTIONSELECT,210,215,59,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Refresh:",IDC_REFRESHTEXT,11,235,57,8
+    CONTROL         "Slider1",IDC_FRAMERATE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,71,230,99,20
+    COMBOBOX        IDC_RATE2BOX,210,235,60,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "FPS adj.:",IDC_REFRESH2TEXT,9,256,61,8
+    CONTROL         "",IDC_FRAMERATE2,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,71,251,99,20
+    EDITTEXT        IDC_RATE2TEXT,210,255,46,12,ES_AUTOHSCROLL
+    CONTROL         "",IDC_RATE2ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,261,256,8,10
+    COMBOBOX        IDC_DA_MODE,15,280,71,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "",IDC_DA_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,96,276,96,20
+    EDITTEXT        IDC_DA_TEXT,205,280,56,12,ES_AUTOHSCROLL | ES_READONLY
+    PUSHBUTTON      "Reset to defaults",IDC_DA_RESET,156,298,106,14
+    GROUPBOX        "Centering",IDC_STATIC,289,90,105,46
+    CONTROL         "Horizontal",IDC_XCENTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,300,104,90,10
+    CONTROL         "Vertical",IDC_YCENTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,300,120,90,10
+    GROUPBOX        "Line mode",IDC_STATIC,290,138,104,81
+    CONTROL         "Single",IDC_LM_NORMAL,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_GROUP | WS_TABSTOP,299,152,90,10
+    CONTROL         "Double",IDC_LM_DOUBLED,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,299,165,90,10
+    CONTROL         "Scanlines",IDC_LM_SCANLINES,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,299,178,90,10
+    CONTROL         "Double, fields",IDC_LM_PDOUBLED2,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,299,191,90,10
+    CONTROL         "Double, fields+",IDC_LM_PDOUBLED3,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,299,204,90,10
+    GROUPBOX        "Interlaced line mode",IDC_STATIC,290,226,104,70
+    CONTROL         "Single",IDC_LM_INORMAL,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_GROUP | WS_TABSTOP,299,242,90,10
+    CONTROL         "Double, frames",IDC_LM_IDOUBLED,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,299,255,90,10
+    CONTROL         "Double, fields",IDC_LM_IDOUBLED2,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,299,268,90,10
+    CONTROL         "Double, fields+",IDC_LM_IDOUBLED3,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,299,281,90,10
+    CONTROL         "VRR monitor. Do not tick!",IDC_DISPLAY_VARSYNC,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,58,71,112,10
+    COMBOBOX        IDC_SCREENMODE_NATIVE3,246,102,31,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "Window resize",IDC_DISPLAY_RESIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,161,55,92,10
+END
+
+IDD_MEMORY DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 EXSTYLE WS_EX_CONTEXTHELP
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    GROUPBOX        "Memory Settings",IDC_STATIC,1,7,393,117
-    RTEXT           "Chip:",IDC_STATIC,7,25,60,15,SS_CENTERIMAGE
-    CONTROL         "Slider1",IDC_CHIPMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,68,22,60,20
-    EDITTEXT        IDC_CHIPRAM,135,25,40,12,ES_CENTER | ES_READONLY
-    RTEXT           "Z2 Fast:",IDC_STATIC,8,49,60,15,SS_CENTERIMAGE
-    CONTROL         "Slider1",IDC_FASTMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,68,47,60,20
-    EDITTEXT        IDC_FASTRAM,135,53,40,12,ES_CENTER | ES_READONLY
-    RTEXT           "Slow:",IDC_STATIC,179,25,66,15,SS_CENTERIMAGE
-    CONTROL         "Slider1",IDC_SLOWMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,248,22,60,20
-    EDITTEXT        IDC_SLOWRAM,311,25,40,12,ES_CENTER | ES_READONLY
-    RTEXT           "Z3 Fast:",IDC_STATIC,179,49,66,15,SS_CENTERIMAGE
-    CONTROL         "Slider1",IDC_Z3FASTMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,248,47,60,20
-    EDITTEXT        IDC_Z3FASTRAM,311,50,40,12,ES_CENTER | ES_READONLY
-    RTEXT           "32-bit Chip:",IDC_STATIC,180,74,66,15,SS_CENTERIMAGE
-    CONTROL         "",IDC_Z3CHIPMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,248,71,60,20
-    EDITTEXT        IDC_Z3CHIPRAM,311,76,40,12,ES_CENTER | ES_READONLY
-    EDITTEXT        IDC_MAX32RAM,14,99,366,12,ES_CENTER | ES_READONLY
-    GROUPBOX        "Advanced Memory Settings",IDC_STATIC,1,128,393,137
-    COMBOBOX        IDC_MEMORYSELECT,14,151,228,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "",IDC_MEMORYMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,253,145,68,20
-    EDITTEXT        IDC_MEMORYRAM,328,148,40,12,ES_CENTER | ES_READONLY
-    RTEXT           "Manufacturer",IDC_STATIC,12,175,57,15,SS_CENTERIMAGE
-    EDITTEXT        IDC_AUTOCONFIG_MANUFACTURER,78,175,45,13,ES_AUTOHSCROLL
-    RTEXT           "Product",IDC_STATIC,133,175,55,15,SS_CENTERIMAGE
-    EDITTEXT        IDC_AUTOCONFIG_PRODUCT,196,175,45,13,ES_AUTOHSCROLL
-    RTEXT           "Autoconfig data",IDC_STATIC,11,195,57,15,SS_CENTERIMAGE
-    EDITTEXT        IDC_AUTOCONFIG_DATA,78,194,164,13,ES_AUTOHSCROLL
-    CONTROL         "Edit Autoconfig data",IDC_FASTMEMAUTOCONFIGUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,261,177,103,8
-    CONTROL         "Manual configuration",IDC_FASTMEMNOAUTOCONFIG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,261,195,103,8
-    RTEXT           "Memory board",IDC_STATIC,15,216,53,15,SS_CENTERIMAGE
-    COMBOBOX        IDC_MEMORYBOARDSELECT,77,216,165,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    LTEXT           "Z3 mapping mode:",IDC_STATIC,263,215,115,15,SS_CENTERIMAGE
-    RTEXT           "Address range",IDC_STATIC,10,237,57,15,SS_CENTERIMAGE
-    EDITTEXT        IDC_RAM_ADDRESS,77,237,79,13,ES_AUTOHSCROLL
-    EDITTEXT        IDC_RAM_ADDRESS2,164,237,79,13,ES_AUTOHSCROLL
-    COMBOBOX        IDC_Z3MAPPING,262,237,117,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-END
-
-IDD_CPU DIALOGEX 0, 0, 396, 317
+    GROUPBOX        "Memory Settings",IDC_STATIC,1,26,393,117
+    RTEXT           "Chip:",IDC_STATIC,7,44,60,15,SS_CENTERIMAGE
+    CONTROL         "Slider1",IDC_CHIPMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,68,41,60,20
+    EDITTEXT        IDC_CHIPRAM,135,44,40,12,ES_CENTER | ES_READONLY
+    RTEXT           "Z2 Fast:",IDC_STATIC,8,68,60,15,SS_CENTERIMAGE
+    CONTROL         "Slider1",IDC_FASTMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,68,66,60,20
+    EDITTEXT        IDC_FASTRAM,135,72,40,12,ES_CENTER | ES_READONLY
+    RTEXT           "Slow:",IDC_STATIC,179,44,66,15,SS_CENTERIMAGE
+    CONTROL         "Slider1",IDC_SLOWMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,248,41,60,20
+    EDITTEXT        IDC_SLOWRAM,311,44,40,12,ES_CENTER | ES_READONLY
+    RTEXT           "Z3 Fast:",IDC_STATIC,179,68,66,15,SS_CENTERIMAGE
+    CONTROL         "Slider1",IDC_Z3FASTMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,248,66,60,20
+    EDITTEXT        IDC_Z3FASTRAM,311,69,40,12,ES_CENTER | ES_READONLY
+    RTEXT           "32-bit Chip:",IDC_STATIC,180,93,66,15,SS_CENTERIMAGE
+    CONTROL         "",IDC_Z3CHIPMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,248,90,60,20
+    EDITTEXT        IDC_Z3CHIPRAM,311,95,40,12,ES_CENTER | ES_READONLY
+    EDITTEXT        IDC_MAX32RAM,14,118,366,12,ES_CENTER | ES_READONLY
+    GROUPBOX        "Advanced Memory Settings",IDC_STATIC,1,147,393,137
+    COMBOBOX        IDC_MEMORYSELECT,14,170,228,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "",IDC_MEMORYMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,253,164,68,20
+    EDITTEXT        IDC_MEMORYRAM,328,167,40,12,ES_CENTER | ES_READONLY
+    RTEXT           "Manufacturer",IDC_STATIC,12,194,57,15,SS_CENTERIMAGE
+    EDITTEXT        IDC_AUTOCONFIG_MANUFACTURER,78,194,45,13,ES_AUTOHSCROLL
+    RTEXT           "Product",IDC_STATIC,133,194,55,15,SS_CENTERIMAGE
+    EDITTEXT        IDC_AUTOCONFIG_PRODUCT,196,194,45,13,ES_AUTOHSCROLL
+    RTEXT           "Autoconfig data",IDC_STATIC,11,214,57,15,SS_CENTERIMAGE
+    EDITTEXT        IDC_AUTOCONFIG_DATA,78,213,164,13,ES_AUTOHSCROLL
+    CONTROL         "Edit Autoconfig data",IDC_FASTMEMAUTOCONFIGUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,261,196,103,8
+    CONTROL         "Manual configuration",IDC_FASTMEMNOAUTOCONFIG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,261,214,103,8
+    RTEXT           "Memory board",IDC_STATIC,15,235,53,15,SS_CENTERIMAGE
+    COMBOBOX        IDC_MEMORYBOARDSELECT,77,235,165,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    LTEXT           "Z3 mapping mode:",IDC_STATIC,263,234,115,15,SS_CENTERIMAGE
+    RTEXT           "Address range",IDC_STATIC,10,256,57,15,SS_CENTERIMAGE
+    EDITTEXT        IDC_RAM_ADDRESS,77,256,79,13,ES_AUTOHSCROLL
+    EDITTEXT        IDC_RAM_ADDRESS2,164,256,79,13,ES_AUTOHSCROLL
+    COMBOBOX        IDC_Z3MAPPING,262,256,117,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+END
+
+IDD_CPU DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
@@ -329,61 +330,61 @@ BEGIN
     CONTROL         "Catch unexpected exceptions",IDC_JITCRASH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,143,300,115,11
 END
 
-IDD_FLOPPY DIALOGEX 0, 0, 396, 261
+IDD_FLOPPY DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
-    GROUPBOX        "Floppy Drives",IDC_SETTINGSTEXT3,1,0,393,163
-    CONTROL         "DF0:",IDC_DF0ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,7,14,34,15
-    PUSHBUTTON      "Delete save image",IDC_SAVEIMAGE0,69,13,78,15,NOT WS_VISIBLE
-    COMBOBOX        IDC_DF0TYPE,152,14,65,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Write-protected",IDC_STATIC,221,17,74,10,SS_CENTERIMAGE
-    CONTROL         "",IDC_DF0WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,300,13,10,15
-    PUSHBUTTON      "?",IDC_INFO0,323,12,17,15
-    PUSHBUTTON      "Eject",IDC_EJECT0,345,12,30,15
-    PUSHBUTTON      "...",IDC_DF0,379,12,10,15
-    COMBOBOX        IDC_DF0TEXT,6,31,384,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "DF1:",IDC_DF1ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,7,51,34,15
-    PUSHBUTTON      "Delete save image",IDC_SAVEIMAGE1,69,49,78,15,NOT WS_VISIBLE
-    COMBOBOX        IDC_DF1TYPE,152,51,65,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Write-protected",IDC_STATIC,221,53,74,10,SS_CENTERIMAGE
-    CONTROL         "",IDC_DF1WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,300,50,10,15
-    PUSHBUTTON      "?",IDC_INFO1,323,49,17,15
-    PUSHBUTTON      "Eject",IDC_EJECT1,345,49,30,15
-    PUSHBUTTON      "...",IDC_DF1,379,49,10,15
-    COMBOBOX        IDC_DF1TEXT,6,68,383,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "DF2:",IDC_DF2ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,7,87,34,15
-    PUSHBUTTON      "Delete save image",IDC_SAVEIMAGE2,69,85,78,15,NOT WS_VISIBLE
-    COMBOBOX        IDC_DF2TYPE,152,87,65,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Write-protected",IDC_STATIC,222,88,73,10,SS_CENTERIMAGE
-    CONTROL         "",IDC_DF2WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,300,86,9,15
-    PUSHBUTTON      "?",IDC_INFO2,323,85,17,15
-    PUSHBUTTON      "Eject",IDC_EJECT2,345,85,30,15
-    PUSHBUTTON      "...",IDC_DF2,379,85,10,15
-    COMBOBOX        IDC_DF2TEXT,6,104,384,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "DF3:",IDC_DF3ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,7,123,34,15
-    PUSHBUTTON      "Delete save image",IDC_SAVEIMAGE3,69,121,78,15,NOT WS_VISIBLE
-    COMBOBOX        IDC_DF3TYPE,152,123,65,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Write-protected",IDC_STATIC,222,125,73,10,SS_CENTERIMAGE
-    CONTROL         "",IDC_DF3WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,300,123,9,15
-    PUSHBUTTON      "?",IDC_INFO3,323,122,17,15
-    PUSHBUTTON      "Eject",IDC_EJECT3,345,121,30,15
-    PUSHBUTTON      "...",IDC_DF3,379,121,10,15
-    COMBOBOX        IDC_DF3TEXT,6,140,383,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "Floppy Drive Emulation Speed",IDC_SETTINGSTEXT2,1,170,393,35
-    CONTROL         "",IDC_FLOPPYSPD,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,71,180,116,20
-    EDITTEXT        IDC_FLOPPYSPDTEXT,222,183,101,12,ES_CENTER | ES_READONLY
-    GROUPBOX        "New Floppy Disk Image",IDC_SETTINGSTEXT,1,211,393,49
-    COMBOBOX        IDC_FLOPPYTYPE,58,225,64,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "Create Standard Disk [] Creates a standard 880 or 1760 KB ADF disk image.",IDC_CREATE,130,224,97,15
-    PUSHBUTTON      "Create Custom Disk [] Creates a low level (MFM) ADF disk image (about 2MB). Useful for programs that use non-standard disk formats (for example some save disks or DOS-formatted floppies)",IDC_CREATE_RAW,235,224,101,15
-    RTEXT           "Disk label:",IDC_STATIC,60,244,58,10,SS_CENTERIMAGE
-    EDITTEXT        IDC_CREATE_NAME,130,243,97,13,ES_AUTOHSCROLL
-    CONTROL         "Bootblock",IDC_FLOPPY_BOOTABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,235,242,59,15
-    CONTROL         "FFS",IDC_FLOPPY_FFS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,300,242,34,15
-END
-
-IDD_HARDDISK DIALOGEX 0, 0, 396, 318
+    GROUPBOX        "Floppy Drives",IDC_SETTINGSTEXT3,1,23,393,163
+    CONTROL         "DF0:",IDC_DF0ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,7,37,34,15
+    PUSHBUTTON      "Delete save image",IDC_SAVEIMAGE0,69,36,78,15,NOT WS_VISIBLE
+    COMBOBOX        IDC_DF0TYPE,152,37,65,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Write-protected",IDC_STATIC,221,40,74,10,SS_CENTERIMAGE
+    CONTROL         "",IDC_DF0WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,300,36,10,15
+    PUSHBUTTON      "?",IDC_INFO0,323,35,17,15
+    PUSHBUTTON      "Eject",IDC_EJECT0,345,35,30,15
+    PUSHBUTTON      "...",IDC_DF0,379,35,10,15
+    COMBOBOX        IDC_DF0TEXT,6,54,384,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "DF1:",IDC_DF1ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,7,74,34,15
+    PUSHBUTTON      "Delete save image",IDC_SAVEIMAGE1,69,72,78,15,NOT WS_VISIBLE
+    COMBOBOX        IDC_DF1TYPE,152,74,65,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Write-protected",IDC_STATIC,221,76,74,10,SS_CENTERIMAGE
+    CONTROL         "",IDC_DF1WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,300,73,10,15
+    PUSHBUTTON      "?",IDC_INFO1,323,72,17,15
+    PUSHBUTTON      "Eject",IDC_EJECT1,345,72,30,15
+    PUSHBUTTON      "...",IDC_DF1,379,72,10,15
+    COMBOBOX        IDC_DF1TEXT,6,91,383,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "DF2:",IDC_DF2ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,7,110,34,15
+    PUSHBUTTON      "Delete save image",IDC_SAVEIMAGE2,69,108,78,15,NOT WS_VISIBLE
+    COMBOBOX        IDC_DF2TYPE,152,110,65,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Write-protected",IDC_STATIC,222,111,73,10,SS_CENTERIMAGE
+    CONTROL         "",IDC_DF2WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,300,109,9,15
+    PUSHBUTTON      "?",IDC_INFO2,323,108,17,15
+    PUSHBUTTON      "Eject",IDC_EJECT2,345,108,30,15
+    PUSHBUTTON      "...",IDC_DF2,379,108,10,15
+    COMBOBOX        IDC_DF2TEXT,6,127,384,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "DF3:",IDC_DF3ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,7,146,34,15
+    PUSHBUTTON      "Delete save image",IDC_SAVEIMAGE3,69,144,78,15,NOT WS_VISIBLE
+    COMBOBOX        IDC_DF3TYPE,152,146,65,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Write-protected",IDC_STATIC,222,148,73,10,SS_CENTERIMAGE
+    CONTROL         "",IDC_DF3WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,300,146,9,15
+    PUSHBUTTON      "?",IDC_INFO3,323,145,17,15
+    PUSHBUTTON      "Eject",IDC_EJECT3,345,144,30,15
+    PUSHBUTTON      "...",IDC_DF3,379,144,10,15
+    COMBOBOX        IDC_DF3TEXT,6,163,383,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Floppy Drive Emulation Speed",IDC_SETTINGSTEXT2,1,193,393,35
+    CONTROL         "",IDC_FLOPPYSPD,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,71,203,116,20
+    EDITTEXT        IDC_FLOPPYSPDTEXT,222,206,101,12,ES_CENTER | ES_READONLY
+    GROUPBOX        "New Floppy Disk Image",IDC_SETTINGSTEXT,1,234,393,49
+    COMBOBOX        IDC_FLOPPYTYPE,58,248,64,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "Create Standard Disk [] Creates a standard 880 or 1760 KB ADF disk image.",IDC_CREATE,130,247,97,15
+    PUSHBUTTON      "Create Custom Disk [] Creates a low level (MFM) ADF disk image (about 2MB). Useful for programs that use non-standard disk formats (for example some save disks or DOS-formatted floppies)",IDC_CREATE_RAW,235,247,101,15
+    RTEXT           "Disk label:",IDC_STATIC,60,267,58,10,SS_CENTERIMAGE
+    EDITTEXT        IDC_CREATE_NAME,130,266,97,13,ES_AUTOHSCROLL
+    CONTROL         "Bootblock",IDC_FLOPPY_BOOTABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,235,265,59,15
+    CONTROL         "FFS",IDC_FLOPPY_FFS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,300,265,34,15
+END
+
+IDD_HARDDISK DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 EXSTYLE WS_EX_CONTEXTHELP
 FONT 8, "MS Sans Serif", 0, 0, 0x1
@@ -418,69 +419,69 @@ BEGIN
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,301,201,11
 END
 
-IDD_SOUND DIALOGEX 0, 0, 396, 306
+IDD_SOUND DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    COMBOBOX        IDC_SOUNDCARDLIST,1,1,393,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "Sound Emulation",IDC_SOUNDSETTINGS,1,19,132,112
-    CONTROL         "Disabled",IDC_SOUND0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,13,35,108,10
-    CONTROL         "Disabled, but emulated",IDC_SOUND1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,49,107,10
-    CONTROL         "Enabled",IDC_SOUND2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,63,108,10
-    CONTROL         "Automatic switching",IDC_SOUND_AUTO,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,13,81,108,10
-    CONTROL         "Include CD and FMV audio",IDC_SOUND_CDPAULAMIX,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,13,94,108,10
-    GROUPBOX        "Volume",IDC_STATIC,139,19,255,69
-    RTEXT           "Master",IDC_STATIC,160,38,51,10,SS_CENTERIMAGE
-    CONTROL         "",IDC_SOUNDVOLUME,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,215,32,105,20
-    EDITTEXT        IDC_SOUNDVOLUME2,337,35,48,12,ES_CENTER | ES_READONLY
-    COMBOBOX        IDC_SOUNDVOLUMESELECT,147,65,64,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "",IDC_SOUNDVOLUMEEXT,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,215,61,105,20
-    EDITTEXT        IDC_SOUNDVOLUMEEXT2,337,64,48,12,ES_CENTER | ES_READONLY
-    GROUPBOX        "Sound Buffer Size",IDC_STATIC,140,90,254,42
-    CONTROL         "Slider1",IDC_SOUNDBUFFERRAM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,207,106,105,20
-    EDITTEXT        IDC_SOUNDBUFFERMEM,329,109,48,12,ES_CENTER | ES_READONLY
-    GROUPBOX        "Settings",IDC_SOUNDINTERPOLATION2,1,136,393,72
-    LTEXT           "Channel mode:",IDC_SOUNDSTEREOTXT,22,148,128,8,SS_CENTERIMAGE
-    COMBOBOX        IDC_SOUNDSTEREO,24,158,135,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    LTEXT           "Stereo separation:",IDC_SOUNDSTEREOSEPTXT,180,148,84,8,SS_CENTERIMAGE
-    COMBOBOX        IDC_SOUNDSTEREOSEP,181,158,74,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    LTEXT           "Interpolation:",IDC_SOUNDINTERPOLATIONTXT,279,148,98,8,SS_CENTERIMAGE
-    COMBOBOX        IDC_SOUNDINTERPOLATION,279,158,96,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    LTEXT           "Frequency:",IDC_SOUNDFREQTXT,22,176,58,8,SS_CENTERIMAGE
-    COMBOBOX        IDC_SOUNDFREQ,24,186,55,75,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
-    LTEXT           "Swap channels:",IDC_SOUNDSWAPTXT,85,176,81,8,SS_CENTERIMAGE
-    COMBOBOX        IDC_SOUNDSWAP,86,186,74,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    LTEXT           "Stereo delay:",IDC_SOUNDSTEREOMIXTXT,180,176,83,8,SS_CENTERIMAGE
-    COMBOBOX        IDC_SOUNDSTEREOMIX,181,186,74,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    LTEXT           "Audio filter:",IDC_SOUNDFILTERTXT,279,176,98,8,SS_CENTERIMAGE
-    COMBOBOX        IDC_SOUNDFILTER,279,186,96,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "Floppy Drive Sound Emulation",IDC_STATIC,1,209,278,91
-    CONTROL         "",IDC_SOUNDDRIVEVOLUME,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,20,227,107,19
-    EDITTEXT        IDC_SOUNDDRIVEVOLUME2,145,231,48,12,ES_CENTER | ES_READONLY
-    LTEXT           "Empty drive",IDC_STATIC,205,231,60,15,SS_CENTERIMAGE
-    CONTROL         "",IDC_SOUNDDRIVEVOLUMEX,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,20,254,107,19
-    EDITTEXT        IDC_SOUNDDRIVEVOLUMEX2,145,258,48,12,ES_CENTER | ES_READONLY
-    LTEXT           "Disk in drive",IDC_STATIC,205,258,60,15,SS_CENTERIMAGE
-    COMBOBOX        IDC_SOUNDDRIVESELECT,18,281,175,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_SOUNDDRIVE,205,281,66,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "Drivers",IDC_STATIC,285,213,109,87
-    CONTROL         "DirectSound",IDC_SOUND_DS,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,292,234,98,10
-    CONTROL         "WASAPI",IDC_SOUND_WASAPI,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,292,248,98,10
-    CONTROL         "OpenAL",IDC_SOUND_OPENAL,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,292,262,98,10
-    CONTROL         "PortAudio",IDC_SOUND_PORTAUDIO,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,292,276,98,10
-    CONTROL         "Volume Counter mode",IDC_SOUND_VOLCNT,"Button",BS_AUTOCHECKBOX | BS_LEFT | NOT WS_VISIBLE | WS_GROUP | WS_TABSTOP,13,114,108,10
-END
-
-IDD_LOADSAVE DIALOGEX 0, 0, 396, 318
+    COMBOBOX        IDC_SOUNDCARDLIST,1,10,393,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Sound Emulation",IDC_SOUNDSETTINGS,1,28,132,112
+    CONTROL         "Disabled",IDC_SOUND0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,13,44,108,10
+    CONTROL         "Disabled, but emulated",IDC_SOUND1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,58,107,10
+    CONTROL         "Enabled",IDC_SOUND2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,72,108,10
+    CONTROL         "Automatic switching",IDC_SOUND_AUTO,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,13,90,108,10
+    CONTROL         "Include CD and FMV audio",IDC_SOUND_CDPAULAMIX,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,13,103,108,10
+    GROUPBOX        "Volume",IDC_STATIC,139,28,255,69
+    RTEXT           "Master",IDC_STATIC,160,47,51,10,SS_CENTERIMAGE
+    CONTROL         "",IDC_SOUNDVOLUME,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,215,41,105,20
+    EDITTEXT        IDC_SOUNDVOLUME2,337,44,48,12,ES_CENTER | ES_READONLY
+    COMBOBOX        IDC_SOUNDVOLUMESELECT,147,74,64,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "",IDC_SOUNDVOLUMEEXT,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,215,70,105,20
+    EDITTEXT        IDC_SOUNDVOLUMEEXT2,337,73,48,12,ES_CENTER | ES_READONLY
+    GROUPBOX        "Sound Buffer Size",IDC_STATIC,140,99,254,42
+    CONTROL         "Slider1",IDC_SOUNDBUFFERRAM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,207,115,105,20
+    EDITTEXT        IDC_SOUNDBUFFERMEM,329,118,48,12,ES_CENTER | ES_READONLY
+    GROUPBOX        "Settings",IDC_SOUNDINTERPOLATION2,1,145,393,72
+    LTEXT           "Channel mode:",IDC_SOUNDSTEREOTXT,22,157,128,8,SS_CENTERIMAGE
+    COMBOBOX        IDC_SOUNDSTEREO,24,167,135,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    LTEXT           "Stereo separation:",IDC_SOUNDSTEREOSEPTXT,180,157,84,8,SS_CENTERIMAGE
+    COMBOBOX        IDC_SOUNDSTEREOSEP,181,167,74,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    LTEXT           "Interpolation:",IDC_SOUNDINTERPOLATIONTXT,279,157,98,8,SS_CENTERIMAGE
+    COMBOBOX        IDC_SOUNDINTERPOLATION,279,167,96,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    LTEXT           "Frequency:",IDC_SOUNDFREQTXT,22,185,58,8,SS_CENTERIMAGE
+    COMBOBOX        IDC_SOUNDFREQ,24,195,55,75,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+    LTEXT           "Swap channels:",IDC_SOUNDSWAPTXT,85,185,81,8,SS_CENTERIMAGE
+    COMBOBOX        IDC_SOUNDSWAP,86,195,74,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    LTEXT           "Stereo delay:",IDC_SOUNDSTEREOMIXTXT,180,185,83,8,SS_CENTERIMAGE
+    COMBOBOX        IDC_SOUNDSTEREOMIX,181,195,74,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    LTEXT           "Audio filter:",IDC_SOUNDFILTERTXT,279,185,98,8,SS_CENTERIMAGE
+    COMBOBOX        IDC_SOUNDFILTER,279,195,96,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Floppy Drive Sound Emulation",IDC_STATIC,1,218,278,91
+    CONTROL         "",IDC_SOUNDDRIVEVOLUME,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,20,236,107,19
+    EDITTEXT        IDC_SOUNDDRIVEVOLUME2,145,240,48,12,ES_CENTER | ES_READONLY
+    LTEXT           "Empty drive",IDC_STATIC,205,240,60,15,SS_CENTERIMAGE
+    CONTROL         "",IDC_SOUNDDRIVEVOLUMEX,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,20,263,107,19
+    EDITTEXT        IDC_SOUNDDRIVEVOLUMEX2,145,267,48,12,ES_CENTER | ES_READONLY
+    LTEXT           "Disk in drive",IDC_STATIC,205,267,60,15,SS_CENTERIMAGE
+    COMBOBOX        IDC_SOUNDDRIVESELECT,18,290,175,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_SOUNDDRIVE,205,290,66,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Drivers",IDC_STATIC,285,222,109,87
+    CONTROL         "DirectSound",IDC_SOUND_DS,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,292,243,98,10
+    CONTROL         "WASAPI",IDC_SOUND_WASAPI,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,292,257,98,10
+    CONTROL         "OpenAL",IDC_SOUND_OPENAL,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,292,271,98,10
+    CONTROL         "PortAudio",IDC_SOUND_PORTAUDIO,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,292,285,98,10
+    CONTROL         "Volume Counter mode",IDC_SOUND_VOLCNT,"Button",BS_AUTOCHECKBOX | BS_LEFT | NOT WS_VISIBLE | WS_GROUP | WS_TABSTOP,13,123,108,10
+END
+
+IDD_LOADSAVE DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    CONTROL         "",IDC_CONFIGTREE,"SysTreeView32",TVS_HASLINES | TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS | TVS_TRACKSELECT | WS_BORDER | WS_HSCROLL | WS_TABSTOP,1,2,393,236,WS_EX_CLIENTEDGE
+    CONTROL         "",IDC_CONFIGTREE,"SysTreeView32",TVS_HASLINES | TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS | TVS_TRACKSELECT | WS_BORDER | WS_HSCROLL | WS_TABSTOP,1,2,393,236
     RTEXT           "Search:",IDC_STATIC,7,245,44,8,SS_CENTERIMAGE
     EDITTEXT        IDC_CONFIGSEARCH,55,243,90,13,ES_AUTOHSCROLL
     PUSHBUTTON      "X",IDC_CONFIGSEARCHCLEAR,149,243,15,14
     RTEXT           "Filter:",IDC_STATIC,172,245,39,8,SS_CENTERIMAGE
-    COMBOBOX        IDC_CONFIGFOLDER,216,243,177,150,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_CONFIGFOLDER,216,243,178,150,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     RTEXT           "Name:",IDC_STATIC,4,265,47,8,SS_CENTERIMAGE
     COMBOBOX        IDC_EDITNAME,55,264,175,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
     EDITTEXT        IDC_EDITPATH,236,263,49,15,ES_AUTOHSCROLL | WS_DISABLED
@@ -493,78 +494,78 @@ BEGIN
     PUSHBUTTON      "Save",IDC_QUICKSAVE,65,301,60,15
     PUSHBUTTON      "Load From...",IDC_LOAD,162,301,60,15
     PUSHBUTTON      "Save As...",IDC_SAVE,226,301,60,15
-    PUSHBUTTON      "Delete",IDC_DELETE,335,301,60,15
+    PUSHBUTTON      "Delete",IDC_DELETE,335,301,59,15
 END
 
-IDD_IOPORTS DIALOGEX 0, 0, 396, 295
+IDD_IOPORTS DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    GROUPBOX        "Parallel Port",IDC_STATIC,1,1,393,131
-    RTEXT           "Printer:",IDC_STATIC,6,16,57,15,SS_CENTERIMAGE
-    COMBOBOX        IDC_PRINTERLIST,67,17,317,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Type:",IDC_STATIC,7,38,57,15,SS_CENTERIMAGE
-    COMBOBOX        IDC_PRINTERTYPELIST,67,39,317,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "Flush print job",IDC_FLUSHPRINTER,147,58,75,12
-    RTEXT           "Autoflush [] Time in seconds after a pending print job is automatically flushed.",IDC_PRINTERAUTOFLUSHTXT,236,56,110,15,SS_NOTIFY | SS_CENTERIMAGE
-    EDITTEXT        IDC_PRINTERAUTOFLUSH,351,58,33,12,ES_NUMBER
-    RTEXT           "Ghostscript extra parameters:",IDC_STATIC,8,74,136,15,SS_CENTERIMAGE
-    EDITTEXT        IDC_PS_PARAMS,148,75,236,12,ES_AUTOHSCROLL
-    RTEXT           "Sampler:",IDC_STATIC,6,94,57,15,SS_CENTERIMAGE
-    COMBOBOX        IDC_SAMPLERLIST,67,95,317,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "Stereo sampler",IDC_SAMPLER_STEREO,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,68,114,149,12
-    GROUPBOX        "Serial Port",IDC_STATIC,1,137,393,51
-    COMBOBOX        IDC_SERIAL,67,150,317,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "Shared",IDC_SER_SHARED,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,32,171,66,12
-    CONTROL         "RTS/CTS",IDC_SER_CTSRTS,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,107,171,66,12
+    GROUPBOX        "Parallel Port",IDC_STATIC,1,9,393,131
+    RTEXT           "Printer:",IDC_STATIC,6,24,57,15,SS_CENTERIMAGE
+    COMBOBOX        IDC_PRINTERLIST,67,25,317,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Type:",IDC_STATIC,7,46,57,15,SS_CENTERIMAGE
+    COMBOBOX        IDC_PRINTERTYPELIST,67,47,317,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "Flush print job",IDC_FLUSHPRINTER,147,66,75,12
+    RTEXT           "Autoflush [] Time in seconds after a pending print job is automatically flushed.",IDC_PRINTERAUTOFLUSHTXT,236,64,110,15,SS_NOTIFY | SS_CENTERIMAGE
+    EDITTEXT        IDC_PRINTERAUTOFLUSH,351,66,33,12,ES_NUMBER
+    RTEXT           "Ghostscript extra parameters:",IDC_STATIC,8,82,136,15,SS_CENTERIMAGE
+    EDITTEXT        IDC_PS_PARAMS,148,83,236,12,ES_AUTOHSCROLL
+    RTEXT           "Sampler:",IDC_STATIC,6,102,57,15,SS_CENTERIMAGE
+    COMBOBOX        IDC_SAMPLERLIST,67,103,317,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "Stereo sampler",IDC_SAMPLER_STEREO,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,68,122,149,12
+    GROUPBOX        "Serial Port",IDC_STATIC,1,145,393,51
+    COMBOBOX        IDC_SERIAL,67,158,317,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "Shared",IDC_SER_SHARED,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,32,179,66,12
+    CONTROL         "RTS/CTS",IDC_SER_CTSRTS,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,107,179,66,12
     CONTROL         "Direct []Use when emulating serial-link games on two PCs running WinUAE",IDC_SER_DIRECT,
-                    "Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,182,171,83,12
-    CONTROL         "uaeserial.device",IDC_UAESERIAL,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,274,171,108,12
-    GROUPBOX        "MIDI",IDC_STATIC,1,191,393,54,BS_LEFT
-    RTEXT           "Out:",IDC_MIDI,22,202,32,15,SS_CENTERIMAGE
-    COMBOBOX        IDC_MIDIOUTLIST,58,204,145,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "In:",IDC_MIDI2,204,201,31,15,SS_CENTERIMAGE
-    COMBOBOX        IDC_MIDIINLIST,239,203,145,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "Route MIDI In to MIDI Out",IDC_MIDIROUTER,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,41,227,170,12
-    GROUPBOX        "Protection Dongle",IDC_STATIC,1,252,393,41,BS_LEFT
-    COMBOBOX        IDC_DONGLELIST,58,270,232,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-END
-
-IDD_GAMEPORTS DIALOGEX 0, 0, 396, 288
+                    "Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,182,179,83,12
+    CONTROL         "uaeserial.device",IDC_UAESERIAL,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,274,179,108,12
+    GROUPBOX        "MIDI",IDC_STATIC,1,199,393,54,BS_LEFT
+    RTEXT           "Out:",IDC_MIDI,22,210,32,15,SS_CENTERIMAGE
+    COMBOBOX        IDC_MIDIOUTLIST,58,212,145,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "In:",IDC_MIDI2,204,209,31,15,SS_CENTERIMAGE
+    COMBOBOX        IDC_MIDIINLIST,239,211,145,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "Route MIDI In to MIDI Out",IDC_MIDIROUTER,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,41,235,170,12
+    GROUPBOX        "Protection Dongle",IDC_STATIC,1,260,393,41,BS_LEFT
+    COMBOBOX        IDC_DONGLELIST,58,278,232,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+END
+
+IDD_GAMEPORTS DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    GROUPBOX        "Mouse and Joystick settings",IDC_STATIC,1,3,393,211
-    RTEXT           "Port 1:",IDC_STATIC,4,18,37,15,SS_CENTERIMAGE
-    COMBOBOX        IDC_PORT0_JOYS,45,19,342,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_PORT0_AF,45,37,86,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_PORT0_JOYSMODE,136,38,106,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "Remap / Test [] Remap or test Port 1 configurarion.",IDC_PORT0_REMAP,310,37,78,14
-    RTEXT           "Port 2:",IDC_STATIC,6,56,35,15,SS_CENTERIMAGE
-    COMBOBOX        IDC_PORT1_JOYS,45,57,342,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_PORT1_AF,45,74,86,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_PORT1_JOYSMODE,136,74,106,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "Remap / Test [] Remap or test Port 2 configuration.",IDC_PORT1_REMAP,310,74,78,14
-    PUSHBUTTON      "Swap ports [] Swap ports 1 and 2.",IDC_SWAP,45,100,78,14
+    GROUPBOX        "Mouse and Joystick settings",IDC_STATIC,1,15,393,211
+    RTEXT           "Port 1:",IDC_STATIC,4,30,37,15,SS_CENTERIMAGE
+    COMBOBOX        IDC_PORT0_JOYS,45,31,342,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_PORT0_AF,45,49,86,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_PORT0_JOYSMODE,136,50,106,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "Remap / Test [] Remap or test Port 1 configurarion.",IDC_PORT0_REMAP,310,49,78,14
+    RTEXT           "Port 2:",IDC_STATIC,6,68,35,15,SS_CENTERIMAGE
+    COMBOBOX        IDC_PORT1_JOYS,45,69,342,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_PORT1_AF,45,86,86,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_PORT1_JOYSMODE,136,86,106,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "Remap / Test [] Remap or test Port 2 configuration.",IDC_PORT1_REMAP,310,86,78,14
+    PUSHBUTTON      "Swap ports [] Swap ports 1 and 2.",IDC_SWAP,45,112,78,14
     CONTROL         "Mouse/Joystick autoswitching [] Press button to automatically insert inactive input device in to joystick/mouse port",IDC_PORT_AUTOSWITCH,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,136,102,172,11
-    LTEXT           "Emulated parallel port joystick adapter",IDC_STATIC,10,124,179,15,SS_CENTERIMAGE
-    COMBOBOX        IDC_PORT2_JOYS,45,142,342,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "Remap / Test [] Remap or test Parallel port joystick port 1 configurarion.",IDC_PORT2_REMAP,310,159,78,14
-    COMBOBOX        IDC_PORT3_JOYS,45,178,342,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "Remap / Test [] Remap or test Parallel port joystick port 2 configurarion.",IDC_PORT3_REMAP,310,194,78,14
-    GROUPBOX        "Mouse extra settings",IDC_STATIC,1,219,393,68
-    RTEXT           "Mouse speed:",IDC_STATIC,13,237,70,10,SS_CENTERIMAGE
-    EDITTEXT        IDC_INPUTSPEEDM,97,237,25,13,ES_NUMBER
-    CONTROL         "Install virtual mouse driver",IDC_PORT_TABLET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,255,116,11
-    RTEXT           "Mouse untrap mode:",IDC_STATIC,143,237,110,10,SS_CENTERIMAGE
-    COMBOBOX        IDC_MOUSE_UNTRAPMODE,268,234,119,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Magic Mouse cursor mode:",IDC_STATIC,143,253,110,10,SS_CENTERIMAGE
-    COMBOBOX        IDC_PORT_TABLET_CURSOR,268,251,119,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,136,114,172,11
+    LTEXT           "Emulated parallel port joystick adapter",IDC_STATIC,10,136,179,15,SS_CENTERIMAGE
+    COMBOBOX        IDC_PORT2_JOYS,45,154,342,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "Remap / Test [] Remap or test Parallel port joystick port 1 configurarion.",IDC_PORT2_REMAP,310,171,78,14
+    COMBOBOX        IDC_PORT3_JOYS,45,190,342,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "Remap / Test [] Remap or test Parallel port joystick port 2 configurarion.",IDC_PORT3_REMAP,310,206,78,14
+    GROUPBOX        "Mouse extra settings",IDC_STATIC,1,231,393,68
+    RTEXT           "Mouse speed:",IDC_STATIC,13,249,70,10,SS_CENTERIMAGE
+    EDITTEXT        IDC_INPUTSPEEDM,97,249,25,13,ES_NUMBER
+    CONTROL         "Install virtual mouse driver",IDC_PORT_TABLET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,267,116,11
+    RTEXT           "Mouse untrap mode:",IDC_STATIC,143,249,110,10,SS_CENTERIMAGE
+    COMBOBOX        IDC_MOUSE_UNTRAPMODE,268,246,119,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Magic Mouse cursor mode:",IDC_STATIC,143,265,110,10,SS_CENTERIMAGE
+    COMBOBOX        IDC_PORT_TABLET_CURSOR,268,263,119,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     CONTROL         "Tablet.library emulation",IDC_PORT_TABLET_LIBRARY,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,271,117,11
-    RTEXT           "Tablet mode:",IDC_STATIC,184,271,70,10,SS_CENTERIMAGE
-    COMBOBOX        IDC_PORT_TABLET_MODE,268,268,119,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,283,117,11
+    RTEXT           "Tablet mode:",IDC_STATIC,184,283,70,10,SS_CENTERIMAGE
+    COMBOBOX        IDC_PORT_TABLET_MODE,268,280,119,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
 END
 
 IDD_CONTRIBUTORS DIALOGEX 0, 0, 530, 345
@@ -586,23 +587,23 @@ BEGIN
     CONTROL         "",IDC_ERRORLOGMESSAGE,"RICHEDIT",TCS_HOTTRACK | TCS_VERTICAL | TCS_RAGGEDRIGHT | TCS_OWNERDRAWFIXED | TCS_MULTISELECT | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP,4,5,521,309
 END
 
-IDD_ABOUT DIALOGEX 0, 0, 345, 258
+IDD_ABOUT DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
-    CONTROL         "",IDC_RICHEDIT1,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,65,10,210,35
-    CONTROL         "",IDC_RICHEDIT2,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,1,58,343,28
-    PUSHBUTTON      "Contributors",IDC_CONTRIBUTORS,132,100,80,15
-    CONTROL         "",IDC_AMIGAHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,116,168,112,24
-    CONTROL         "",IDC_WINUAEHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,231,168,112,24
-    CONTROL         "",IDC_CAPS,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,174,196,112,24
-    CONTROL         "",IDC_ABIME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,60,196,112,24
-    CONTROL         "",IDC_CLOANTOHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,2,168,112,24
-    CONTROL         "",IDC_AMIGASYS,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,2,225,112,24
-    CONTROL         "",IDC_AMIKIT,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,231,225,112,24
+    CONTROL         "",IDC_RICHEDIT1,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,65,36,210,35
+    CONTROL         "",IDC_RICHEDIT2,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,1,84,343,28
+    PUSHBUTTON      "Contributors",IDC_CONTRIBUTORS,132,126,80,15
+    CONTROL         "",IDC_AMIGAHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,116,194,112,24
+    CONTROL         "",IDC_WINUAEHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,231,194,112,24
+    CONTROL         "",IDC_CAPS,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,174,222,112,24
+    CONTROL         "",IDC_ABIME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,60,222,112,24
+    CONTROL         "",IDC_CLOANTOHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,2,194,112,24
+    CONTROL         "",IDC_AMIGASYS,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,2,251,112,24
+    CONTROL         "",IDC_AMIKIT,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,231,251,112,24
 END
 
-IDD_MISC1 DIALOGEX 0, 0, 396, 318
+IDD_MISC1 DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
@@ -618,7 +619,6 @@ BEGIN
     GROUPBOX        "GUI",IDC_STATIC,266,125,128,112
     COMBOBOX        IDC_LANGUAGE,273,138,114,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON      "GUI Font...",IDC_GUI_FONT,272,155,54,14
-    PUSHBUTTON      "List Font...",IDC_GUI_LISTFONT,333,155,54,14
     PUSHBUTTON      "Set default",IDC_GUI_DEFAULT,272,174,54,14
     COMBOBOX        IDC_GUI_SIZE,333,175,54,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     CONTROL         "Resizeable GUI",IDC_GUI_RESIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,273,209,114,11
@@ -636,7 +636,7 @@ BEGIN
     PUSHBUTTON      "Reset list customizations",IDC_GUI_LVDEFAULT,272,192,115,14
 END
 
-IDD_HARDFILE DIALOGEX 0, 0, 397, 290
+IDD_HARDFILE DIALOGEX 0, 0, 397, 292
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS_CENTERMOUSE | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 EXSTYLE WS_EX_ACCEPTFILES
 CAPTION "Hardfile Settings"
@@ -733,62 +733,62 @@ BEGIN
     PUSHBUTTON      "Cancel",IDCANCEL,201,102,48,15
 END
 
-IDD_CHIPSET DIALOGEX 0, 0, 396, 287
+IDD_CHIPSET DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
-    GROUPBOX        "Chipset",IDC_STATIC,1,0,212,136
+    GROUPBOX        "Chipset",IDC_STATIC,1,20,212,136
     CONTROL         "OCS [] Original chipset. A1000 and most A500s.",IDC_OCS,
-                    "Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,12,15,88,10
+                    "Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,12,35,88,10
     CONTROL         "ECS Agnus [] Enhanced chipset (ECS Agnus chip only). CDTV and later A500 and A2000 hardware revisions.",IDC_ECS_AGNUS,
-                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,12,31,88,10
+                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,12,51,88,10
     CONTROL         "Full ECS [] Full ECS chipset (ECS Agnus and ECS Denise chips). A500+, A600 and A3000.",IDC_ECS,
-                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,12,47,88,10
+                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,12,67,88,10
     CONTROL         "AGA [] Advanced Graphics Architecture chipset. A1200, A4000 and CD32.",IDC_AGA,
-                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,114,15,86,10
+                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,114,35,86,10
     CONTROL         "ECS Denise [] Enhanced chipset (ECS Denise chip only). Normally paired with ECS Agnus.",IDC_ECS_DENISE,
-                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,114,31,86,10
+                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,114,51,86,10
     CONTROL         "NTSC [] North American and Japanese display standard, 60Hz refresh rate. Other countries use PAL (50Hz. display refresh rate)",IDC_NTSC,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,114,47,86,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,114,67,86,10
     CONTROL         "Cycle-exact (Full) [] The most compatible A500/A1200 emulation mode.",IDC_CYCLEEXACT,
-                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,12,68,194,10
+                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,12,88,194,10
     CONTROL         "Cycle-exact (DMA/Memory accesses)",IDC_CYCLEEXACTMEMORY,
-                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,12,81,194,10
-    RTEXT           "Chipset Extra:",IDC_STATIC,38,108,71,15,SS_CENTERIMAGE
-    COMBOBOX        IDC_CS_EXT,116,109,88,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "Options",IDC_STATIC,221,0,173,137
-    CONTROL         "Keyboard connected",IDC_KEYBOARD_CONNECTED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,234,15,150,10
+                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,12,101,194,10
+    RTEXT           "Chipset Extra:",IDC_STATIC,38,128,71,15,SS_CENTERIMAGE
+    COMBOBOX        IDC_CS_EXT,116,129,88,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Options",IDC_STATIC,221,20,173,137
+    CONTROL         "Keyboard connected",IDC_KEYBOARD_CONNECTED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,234,35,150,10
     CONTROL         "Immediate Blitter [] Faster but less compatible blitter emulation.",IDC_BLITIMM,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,234,42,150,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,234,62,150,10
     CONTROL         "Wait for Blitter [] Compatibility hack for programs that don't wait for the blitter correctly, causing graphics corruption if CPU is too fast.",IDC_BLITWAIT,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,234,55,150,10
-    LTEXT           "Monitor:",IDC_STATIC,240,119,68,15,SS_CENTERIMAGE,WS_EX_RIGHT
-    COMBOBOX        IDC_MONITOREMU,237,103,147,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "Collision Level",IDC_STATIC,1,141,393,48
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,234,75,150,10
+    LTEXT           "Monitor:",IDC_STATIC,240,139,68,15,SS_CENTERIMAGE,WS_EX_RIGHT
+    COMBOBOX        IDC_MONITOREMU,237,123,147,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Collision Level",IDC_STATIC,1,161,393,48
     CONTROL         "None [] Collision hardware emulation disabled.",IDC_COLLISION0,
-                    "Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,47,157,101,10
+                    "Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,47,177,101,10
     CONTROL         "Sprites only [] Emulate only sprite vs. sprite collisions.",IDC_COLLISION1,
-                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,47,172,101,10
+                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,47,192,101,10
     CONTROL         "Sprites and Sprites vs. Playfield [] Recommended collision emulation level.",IDC_COLLISION2,
-                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,182,157,181,10
+                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,182,177,181,10
     CONTROL         "Full [] 100% collision hardware emulation. Only very few games need this option. Slowest.",IDC_COLLISION3,
-                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,182,172,181,10
-    GROUPBOX        "Genlock",IDC_STATIC,0,195,393,85
+                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,182,192,181,10
+    GROUPBOX        "Genlock",IDC_STATIC,0,215,393,85
     CONTROL         "Genlock connected [] Allow boot sequence to detect genlock.",IDC_GENLOCK,
-                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,13,211,109,10
-    COMBOBOX        IDC_GENLOCKMODE,129,209,192,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_GENLOCKMIX,330,209,54,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,13,231,109,10
+    COMBOBOX        IDC_GENLOCKMODE,129,229,192,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_GENLOCKMIX,330,229,54,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     CONTROL         "Include alpha channel in screenshots and video captures.",IDC_GENLOCK_ALPHA,
-                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,13,227,214,10
-    COMBOBOX        IDC_GENLOCKFILE,12,258,356,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "...",IDC_GENLOCKFILESELECT,375,257,10,15
-    CONTROL         "Keep aspect ratio",IDC_GENLOCK_KEEP_ASPECT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,13,242,214,10
-    COMBOBOX        IDC_MONITOREMU_MON,319,121,65,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    LTEXT           "Video port display hardware:",IDC_STATIC,241,85,117,15,SS_CENTERIMAGE
-    CONTROL         "Subpixel display emulation",IDC_SUBPIXEL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,234,28,150,10
+                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,13,247,214,10
+    COMBOBOX        IDC_GENLOCKFILE,12,278,356,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "...",IDC_GENLOCKFILESELECT,375,277,10,15
+    CONTROL         "Keep aspect ratio",IDC_GENLOCK_KEEP_ASPECT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,13,262,214,10
+    COMBOBOX        IDC_MONITOREMU_MON,319,141,65,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    LTEXT           "Video port display hardware:",IDC_STATIC,241,105,117,15,SS_CENTERIMAGE
+    CONTROL         "Subpixel display emulation",IDC_SUBPIXEL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,234,48,150,10
 END
 
-IDD_CHIPSET2 DIALOGEX 0, 0, 396, 317
+IDD_CHIPSET2 DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
@@ -848,44 +848,44 @@ BEGIN
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,185,125,12
 END
 
-IDD_AVIOUTPUT DIALOGEX 0, 0, 396, 260
+IDD_AVIOUTPUT DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    GROUPBOX        "Output Properties",IDC_STATIC,1,0,393,123
-    EDITTEXT        IDC_AVIOUTPUT_FILETEXT,15,15,342,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_CLIENTEDGE
-    PUSHBUTTON      "...",IDC_AVIOUTPUT_FILE,362,15,23,12
-    CONTROL         "Audio",IDC_AVIOUTPUT_AUDIO,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | BS_FLAT | WS_TABSTOP,15,34,66,14
-    CONTROL         "",IDC_AVIOUTPUT_AUDIO_STATIC,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,88,35,298,13
-    CONTROL         "Video",IDC_AVIOUTPUT_VIDEO,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | BS_FLAT | WS_TABSTOP,15,52,66,14
-    CONTROL         "",IDC_AVIOUTPUT_VIDEO_STATIC,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,87,53,298,13
+    GROUPBOX        "Output Properties",IDC_STATIC,1,29,393,123
+    EDITTEXT        IDC_AVIOUTPUT_FILETEXT,15,44,342,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_CLIENTEDGE
+    PUSHBUTTON      "...",IDC_AVIOUTPUT_FILE,362,44,23,12
+    CONTROL         "Audio",IDC_AVIOUTPUT_AUDIO,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | BS_FLAT | WS_TABSTOP,15,63,66,14
+    CONTROL         "",IDC_AVIOUTPUT_AUDIO_STATIC,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,88,64,298,13
+    CONTROL         "Video",IDC_AVIOUTPUT_VIDEO,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | BS_FLAT | WS_TABSTOP,15,81,66,14
+    CONTROL         "",IDC_AVIOUTPUT_VIDEO_STATIC,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,87,82,298,13
     CONTROL         "Disable frame rate limit",IDC_AVIOUTPUT_FRAMELIMITER,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,72,176,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,101,176,10
     CONTROL         "Capture before filtering",IDC_AVIOUTPUT_ORIGINALSIZE,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,210,72,171,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,210,101,171,10
     CONTROL         "Disable sound output",IDC_AVIOUTPUT_NOSOUNDOUTPUT,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,85,176,10
-    CONTROL         "Disable sound sync",IDC_AVIOUTPUT_NOSOUNDSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,210,85,171,10
-    CONTROL         "AVI output enabled",IDC_AVIOUTPUT_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,15,100,144,14
-    GROUPBOX        "Ripper",IDC_STATIC,1,126,393,53
-    PUSHBUTTON      "Save screenshot",IDC_SCREENSHOT,28,140,87,14
-    PUSHBUTTON      "Pro Wizard 1.62",IDC_PROWIZARD,162,140,87,14,WS_DISABLED
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,114,176,10
+    CONTROL         "Disable sound sync",IDC_AVIOUTPUT_NOSOUNDSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,210,114,171,10
+    CONTROL         "AVI output enabled",IDC_AVIOUTPUT_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,15,129,144,14
+    GROUPBOX        "Ripper",IDC_STATIC,1,155,393,53
+    PUSHBUTTON      "Save screenshot",IDC_SCREENSHOT,28,169,87,14
+    PUSHBUTTON      "Pro Wizard 1.62",IDC_PROWIZARD,162,169,87,14,WS_DISABLED
     CONTROL         "Take screenshot before filtering",IDC_SCREENSHOT_ORIGINALSIZE,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,163,144,10
-    CONTROL         "Sample ripper",IDC_SAMPLERIPPER_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,280,140,87,14
-    GROUPBOX        "Re-recorder",IDC_STATIC,1,182,393,70
-    CONTROL         "Play recording",IDC_STATEREC_PLAY,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,53,194,87,14
-    CONTROL         "Re-recording enabled",IDC_STATEREC_RECORD,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,214,194,118,14
-    CONTROL         "Automatic replay",IDC_STATEREC_AUTOPLAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,217,129,10
-    PUSHBUTTON      "Save recording",IDC_STATEREC_SAVE,214,212,118,14
-    RTEXT           "Recording rate (seconds):",IDC_STATIC,15,235,121,10,SS_CENTERIMAGE | WS_TABSTOP
-    COMBOBOX        IDC_STATEREC_RATE,141,233,38,65,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Recording buffers:",IDC_STATIC,195,235,91,10,SS_CENTERIMAGE | WS_TABSTOP
-    COMBOBOX        IDC_STATEREC_BUFFERSIZE,291,233,38,65,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "Autoclip screenshot",IDC_SCREENSHOT_CLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,161,163,144,10
-END
-
-IDD_INPUT DIALOGEX 0, 0, 396, 318
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,192,144,10
+    CONTROL         "Sample ripper",IDC_SAMPLERIPPER_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,280,169,87,14
+    GROUPBOX        "Re-recorder",IDC_STATIC,1,211,393,70
+    CONTROL         "Play recording",IDC_STATEREC_PLAY,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,53,223,87,14
+    CONTROL         "Re-recording enabled",IDC_STATEREC_RECORD,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,214,223,118,14
+    CONTROL         "Automatic replay",IDC_STATEREC_AUTOPLAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,246,129,10
+    PUSHBUTTON      "Save recording",IDC_STATEREC_SAVE,214,241,118,14
+    RTEXT           "Recording rate (seconds):",IDC_STATIC,15,264,121,10,SS_CENTERIMAGE | WS_TABSTOP
+    COMBOBOX        IDC_STATEREC_RATE,141,262,38,65,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Recording buffers:",IDC_STATIC,195,264,91,10,SS_CENTERIMAGE | WS_TABSTOP
+    COMBOBOX        IDC_STATEREC_BUFFERSIZE,291,262,38,65,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "Autoclip screenshot",IDC_SCREENSHOT_CLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,161,192,144,10
+END
+
+IDD_INPUT DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
@@ -911,51 +911,51 @@ BEGIN
     PUSHBUTTON      "Swap 1<>2",IDC_INPUTSWAP,324,303,70,14
 END
 
-IDD_FILTER DIALOGEX 0, 0, 396, 295
+IDD_FILTER DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    GROUPBOX        "Filter Settings",-1,1,1,393,160
-    COMBOBOX        IDC_FILTERMODE,9,31,153,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_FILTERSTACK,167,31,27,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_FILTERFILTERH,199,31,29,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_FILTEROVERLAYTYPE,9,52,119,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_FILTEROVERLAY,134,52,129,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_FILTER_NATIVERTG,268,12,120,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "Reset to defaults",IDC_FILTERDEFAULT,268,31,121,14
-    COMBOBOX        IDC_FILTERAUTOSCALE,268,52,88,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_FILTERINTEGER,361,52,27,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Horiz. size:",-1,7,79,81,10,SS_CENTERIMAGE
-    COMBOBOX        IDC_FILTERHZMULT,92,78,35,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Vert. size:",-1,7,100,81,10,SS_CENTERIMAGE
-    COMBOBOX        IDC_FILTERVZMULT,92,99,35,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Horiz. position:",-1,5,121,81,10,SS_CENTERIMAGE
-    RTEXT           "Vert. position:",-1,5,141,81,10,SS_CENTERIMAGE
-    CONTROL         "Slider1",IDC_FILTERHZ,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,147,72,152,19
-    EDITTEXT        IDC_FILTERHZV,316,74,42,12,ES_CENTER | ES_READONLY
-    CONTROL         "Slider1",IDC_FILTERVZ,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,147,93,152,19
-    EDITTEXT        IDC_FILTERVZV,316,95,42,12,ES_CENTER | ES_READONLY
-    CONTROL         "Slider1",IDC_FILTERHO,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,147,114,151,19
-    EDITTEXT        IDC_FILTERHOV,316,116,42,12,ES_CENTER | ES_READONLY
-    CONTROL         "Slider1",IDC_FILTERVO,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,147,135,151,19
-    EDITTEXT        IDC_FILTERVOV,316,137,42,12,ES_CENTER | ES_READONLY
-    GROUPBOX        "Aspect Ratio Correction",-1,1,165,144,89
-    COMBOBOX        IDC_FILTERASPECT,14,182,99,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Filter Settings",-1,1,9,393,160
+    COMBOBOX        IDC_FILTERMODE,9,39,153,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_FILTERSTACK,167,39,27,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_FILTERFILTERH,199,39,29,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_FILTEROVERLAYTYPE,9,60,119,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_FILTEROVERLAY,134,60,129,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_FILTER_NATIVERTG,268,20,120,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "Reset to defaults",IDC_FILTERDEFAULT,268,39,121,14
+    COMBOBOX        IDC_FILTERAUTOSCALE,268,60,88,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_FILTERINTEGER,361,60,27,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Horiz. size:",-1,7,87,81,10,SS_CENTERIMAGE
+    COMBOBOX        IDC_FILTERHZMULT,92,86,35,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Vert. size:",-1,7,108,81,10,SS_CENTERIMAGE
+    COMBOBOX        IDC_FILTERVZMULT,92,107,35,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Horiz. position:",-1,5,129,81,10,SS_CENTERIMAGE
+    RTEXT           "Vert. position:",-1,5,149,81,10,SS_CENTERIMAGE
+    CONTROL         "Slider1",IDC_FILTERHZ,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,147,80,152,19
+    EDITTEXT        IDC_FILTERHZV,316,82,42,12,ES_CENTER | ES_READONLY
+    CONTROL         "Slider1",IDC_FILTERVZ,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,147,101,152,19
+    EDITTEXT        IDC_FILTERVZV,316,103,42,12,ES_CENTER | ES_READONLY
+    CONTROL         "Slider1",IDC_FILTERHO,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,147,122,151,19
+    EDITTEXT        IDC_FILTERHOV,316,124,42,12,ES_CENTER | ES_READONLY
+    CONTROL         "Slider1",IDC_FILTERVO,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,147,143,151,19
+    EDITTEXT        IDC_FILTERVOV,316,145,42,12,ES_CENTER | ES_READONLY
+    GROUPBOX        "Aspect Ratio Correction",-1,1,173,144,89
+    COMBOBOX        IDC_FILTERASPECT,14,190,99,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
     CONTROL         "Keep autoscale aspect",IDC_FILTERKEEPAUTOSCALEASPECT,
-                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,14,202,126,11
-    CONTROL         "Keep aspect ratio",IDC_FILTERKEEPASPECT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,14,217,126,11
-    COMBOBOX        IDC_FILTERASPECT2,14,233,99,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "Extra Settings",-1,154,165,240,89
-    COMBOBOX        IDC_FILTERXTRA,177,185,138,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_FILTERSLR,327,185,41,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "Slider1",IDC_FILTERXL,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,179,208,141,19
-    EDITTEXT        IDC_FILTERXLV,327,210,41,12,ES_CENTER | ES_READONLY
-    GROUPBOX        "Presets",-1,1,258,393,36
-    COMBOBOX        IDC_FILTERPRESETS,13,273,183,150,CBS_DROPDOWN | CBS_SORT | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "Load",IDC_FILTERPRESETLOAD,205,272,55,14
-    PUSHBUTTON      "Save",IDC_FILTERPRESETSAVE,265,272,55,14
-    PUSHBUTTON      "Delete",IDC_FILTERPRESETDELETE,325,272,55,14
-    COMBOBOX        IDC_FILTERFILTERV,233,31,29,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,14,210,126,11
+    CONTROL         "Keep aspect ratio",IDC_FILTERKEEPASPECT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,14,225,126,11
+    COMBOBOX        IDC_FILTERASPECT2,14,241,99,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Extra Settings",-1,154,173,240,89
+    COMBOBOX        IDC_FILTERXTRA,177,193,138,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_FILTERSLR,327,193,41,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "Slider1",IDC_FILTERXL,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,179,216,141,19
+    EDITTEXT        IDC_FILTERXLV,327,218,41,12,ES_CENTER | ES_READONLY
+    GROUPBOX        "Presets",-1,1,266,393,36
+    COMBOBOX        IDC_FILTERPRESETS,13,281,183,150,CBS_DROPDOWN | CBS_SORT | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "Load",IDC_FILTERPRESETLOAD,205,280,55,14
+    PUSHBUTTON      "Save",IDC_FILTERPRESETSAVE,265,280,55,14
+    PUSHBUTTON      "Delete",IDC_FILTERPRESETDELETE,325,280,55,14
+    COMBOBOX        IDC_FILTERFILTERV,233,39,29,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
 END
 
 IDD_HARDDRIVE DIALOGEX 0, 0, 397, 219
@@ -994,35 +994,35 @@ BEGIN
     EDITTEXT        IDC_HDFINFO3,7,173,217,12,ES_CENTER | ES_READONLY
 END
 
-IDD_MISC2 DIALOGEX 0, 0, 396, 278
+IDD_MISC2 DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    GROUPBOX        "When Active",IDC_STATIC,1,7,125,105
-    CTEXT           "Run at priority:",IDC_ACTIVE_PRI,10,18,108,10,SS_CENTERIMAGE | WS_TABSTOP
-    COMBOBOX        IDC_ACTIVE_PRIORITY,10,33,108,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    CTEXT           "Mouse uncaptured:",IDC_STATIC,10,50,101,15,SS_CENTERIMAGE
-    CONTROL         "Pause emulation",IDC_ACTIVE_PAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,67,109,10
-    CONTROL         "Disable sound",IDC_ACTIVE_NOSOUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,81,109,10
-    GROUPBOX        "When Inactive",IDC_STATIC,133,7,126,105
-    CTEXT           "Run at priority:",IDC_INACTIVE_PRI,144,18,107,10,SS_CENTERIMAGE | WS_TABSTOP
-    COMBOBOX        IDC_INACTIVE_PRIORITY,144,33,108,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "Pause emulation",IDC_INACTIVE_PAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,143,67,109,10
-    CONTROL         "Disable sound",IDC_INACTIVE_NOSOUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,143,81,109,10
-    CONTROL         "Disable game controllers",IDC_INACTIVE_NOJOY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,143,95,109,10
-    GROUPBOX        "When Minimized",IDC_STATIC,269,7,125,105
-    CTEXT           "Run at priority:",IDC_MINIMIZED_PRI,278,19,109,10,SS_CENTERIMAGE | WS_TABSTOP
-    COMBOBOX        IDC_MINIMIZED_PRIORITY,278,33,108,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "Pause emulation",IDC_MINIMIZED_PAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,280,67,108,10
-    CONTROL         "Disable sound",IDC_MINIMIZED_NOSOUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,280,81,108,10
-    CONTROL         "Disable game controllers",IDC_MINIMIZED_NOJOY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,280,95,107,10
-    GROUPBOX        "File Extension Associations",IDC_STATIC,0,120,260,155
-    CONTROL         "",IDC_ASSOCIATELIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,9,137,238,108
-    PUSHBUTTON      "Associate all",IDC_ASSOCIATE_ON,36,253,85,14
-    PUSHBUTTON      "Deassociate all",IDC_ASSOCIATE_OFF,125,253,85,14
-END
-
-IDD_DISK DIALOGEX 0, 0, 396, 318
+    GROUPBOX        "When Active",IDC_STATIC,1,24,125,105
+    CTEXT           "Run at priority:",IDC_ACTIVE_PRI,10,35,108,10,SS_CENTERIMAGE | WS_TABSTOP
+    COMBOBOX        IDC_ACTIVE_PRIORITY,10,50,108,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    CTEXT           "Mouse uncaptured:",IDC_STATIC,10,67,101,15,SS_CENTERIMAGE
+    CONTROL         "Pause emulation",IDC_ACTIVE_PAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,84,109,10
+    CONTROL         "Disable sound",IDC_ACTIVE_NOSOUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,98,109,10
+    GROUPBOX        "When Inactive",IDC_STATIC,133,24,126,105
+    CTEXT           "Run at priority:",IDC_INACTIVE_PRI,144,35,107,10,SS_CENTERIMAGE | WS_TABSTOP
+    COMBOBOX        IDC_INACTIVE_PRIORITY,144,50,108,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "Pause emulation",IDC_INACTIVE_PAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,143,84,109,10
+    CONTROL         "Disable sound",IDC_INACTIVE_NOSOUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,143,98,109,10
+    CONTROL         "Disable game controllers",IDC_INACTIVE_NOJOY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,143,112,109,10
+    GROUPBOX        "When Minimized",IDC_STATIC,269,24,125,105
+    CTEXT           "Run at priority:",IDC_MINIMIZED_PRI,278,36,109,10,SS_CENTERIMAGE | WS_TABSTOP
+    COMBOBOX        IDC_MINIMIZED_PRIORITY,278,50,108,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "Pause emulation",IDC_MINIMIZED_PAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,280,84,108,10
+    CONTROL         "Disable sound",IDC_MINIMIZED_NOSOUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,280,98,108,10
+    CONTROL         "Disable game controllers",IDC_MINIMIZED_NOJOY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,280,112,107,10
+    GROUPBOX        "File Extension Associations",IDC_STATIC,0,137,260,155
+    CONTROL         "",IDC_ASSOCIATELIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,9,154,238,108
+    PUSHBUTTON      "Associate all",IDC_ASSOCIATE_ON,36,270,85,14
+    PUSHBUTTON      "Deassociate all",IDC_ASSOCIATE_OFF,125,270,85,14
+END
+
+IDD_DISK DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_SETFOREGROUND | DS_3DLOOK | DS_CONTROL | DS_CENTER | DS_CENTERMOUSE | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
@@ -1051,89 +1051,89 @@ BEGIN
     CONTROL         "",IDC_PANELTREE,"SysTreeView32",TVS_HASLINES | TVS_SHOWSELALWAYS | TVS_TRACKSELECT | TVS_NOHSCROLL | WS_BORDER | WS_TABSTOP,3,5,110,321,WS_EX_CLIENTEDGE
 END
 
-IDD_PATHS DIALOGEX 0, 0, 396, 303
+IDD_PATHS DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    LTEXT           "System ROMs:",IDC_PATHS_ROML,3,2,138,8,SS_CENTERIMAGE
-    EDITTEXT        IDC_PATHS_ROM,3,13,377,15,ES_AUTOHSCROLL
-    PUSHBUTTON      "...",IDC_PATHS_ROMS,384,13,11,15
-    CONTROL         "Scan subfolders",IDC_PATHS_RECURSIVEROMS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,1,197,11
-    LTEXT           "Configuration files:",IDC_PATHS_CONFIGL,3,32,134,8,SS_CENTERIMAGE
-    EDITTEXT        IDC_PATHS_CONFIG,3,44,377,15,ES_AUTOHSCROLL
-    PUSHBUTTON      "...",IDC_PATHS_CONFIGS,384,43,11,15
-    CONTROL         "Cache Configuration files",IDC_PATHS_CONFIGCACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,31,99,11
-    LTEXT           "Screenshots:",IDC_PATHS_SCREENSHOTL,3,62,143,8,SS_CENTERIMAGE
-    EDITTEXT        IDC_PATHS_SCREENSHOT,3,73,377,15,ES_AUTOHSCROLL
-    PUSHBUTTON      "...",IDC_PATHS_SCREENSHOTS,384,72,11,15
-    LTEXT           "State files:",IDC_PATHS_STATEFILEL,3,91,129,8,SS_CENTERIMAGE
-    EDITTEXT        IDC_PATHS_SAVESTATE,3,102,377,15,ES_AUTOHSCROLL
-    PUSHBUTTON      "...",IDC_PATHS_SAVESTATES,384,101,11,15
-    LTEXT           "Videos:",IDC_PATHS_AVIOUTPUTL,3,120,130,8,SS_CENTERIMAGE
-    EDITTEXT        IDC_PATHS_AVIOUTPUT,3,131,377,15,ES_AUTOHSCROLL
-    PUSHBUTTON      "...",IDC_PATHS_AVIOUTPUTS,384,130,11,15
-    LTEXT           "Saveimages:",IDC_PATHS_SAVEIMAGEL,3,149,129,8,SS_CENTERIMAGE
-    EDITTEXT        IDC_PATHS_SAVEIMAGE,3,161,377,15,ES_AUTOHSCROLL
-    PUSHBUTTON      "...",IDC_PATHS_SAVEIMAGES,384,160,11,15
+    LTEXT           "System ROMs:",IDC_PATHS_ROML,3,8,138,8,SS_CENTERIMAGE
+    EDITTEXT        IDC_PATHS_ROM,3,19,377,15,ES_AUTOHSCROLL
+    PUSHBUTTON      "...",IDC_PATHS_ROMS,384,19,11,15
+    CONTROL         "Scan subfolders",IDC_PATHS_RECURSIVEROMS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,7,197,11
+    LTEXT           "Configuration files:",IDC_PATHS_CONFIGL,3,38,134,8,SS_CENTERIMAGE
+    EDITTEXT        IDC_PATHS_CONFIG,3,50,377,15,ES_AUTOHSCROLL
+    PUSHBUTTON      "...",IDC_PATHS_CONFIGS,384,49,11,15
+    CONTROL         "Cache Configuration files",IDC_PATHS_CONFIGCACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,37,99,11
+    LTEXT           "Screenshots:",IDC_PATHS_SCREENSHOTL,3,68,143,8,SS_CENTERIMAGE
+    EDITTEXT        IDC_PATHS_SCREENSHOT,3,79,377,15,ES_AUTOHSCROLL
+    PUSHBUTTON      "...",IDC_PATHS_SCREENSHOTS,384,78,11,15
+    LTEXT           "State files:",IDC_PATHS_STATEFILEL,3,97,129,8,SS_CENTERIMAGE
+    EDITTEXT        IDC_PATHS_SAVESTATE,3,108,377,15,ES_AUTOHSCROLL
+    PUSHBUTTON      "...",IDC_PATHS_SAVESTATES,384,107,11,15
+    LTEXT           "Videos:",IDC_PATHS_AVIOUTPUTL,3,126,130,8,SS_CENTERIMAGE
+    EDITTEXT        IDC_PATHS_AVIOUTPUT,3,137,377,15,ES_AUTOHSCROLL
+    PUSHBUTTON      "...",IDC_PATHS_AVIOUTPUTS,384,136,11,15
+    LTEXT           "Saveimages:",IDC_PATHS_SAVEIMAGEL,3,155,129,8,SS_CENTERIMAGE
+    EDITTEXT        IDC_PATHS_SAVEIMAGE,3,167,377,15,ES_AUTOHSCROLL
+    PUSHBUTTON      "...",IDC_PATHS_SAVEIMAGES,384,166,11,15
     CONTROL         "Use original image's path",IDC_PATHS_SAVEIMAGEORIGINALPATH,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,148,197,11
-    LTEXT           "Rips:",IDC_PATHS_RIPSL,3,179,131,8,SS_CENTERIMAGE
-    EDITTEXT        IDC_PATHS_RIP,3,190,377,15,ES_AUTOHSCROLL
-    PUSHBUTTON      "...",IDC_PATHS_RIPS,383,189,11,15
-    PUSHBUTTON      "Reset to defaults",IDC_PATHS_DEFAULT,2,212,92,14
-    PUSHBUTTON      "Rescan ROMs",IDC_ROM_RESCAN,2,229,92,14
-    COMBOBOX        IDC_PATHS_DEFAULTTYPE,99,213,163,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "Clear disk history",IDC_RESETDISKHISTORY,99,229,92,14
-    CONTROL         "Use relative paths",IDC_PATHS_RELATIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,199,231,94,11
-    PUSHBUTTON      "Clear registry",IDC_RESETREGISTRY,302,212,92,14
-    CONTROL         "Portable mode",IDC_REGISTRYMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,303,231,82,11
-    GROUPBOX        "Debug logging",IDC_STATIC,1,248,393,53
-    COMBOBOX        IDC_LOGSELECT,7,263,137,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "Enable full logging",IDC_LOGENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,151,264,93,12
-    CONTROL         "Log window",IDC_LOGENABLE2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,254,264,68,12
-    PUSHBUTTON      "Save All [] Create zip file that includes both logs and config file.",IDC_LOGSAVE,337,264,51,14
-    PUSHBUTTON      "Open [] Open selected file.",IDC_LOGOPEN,337,280,51,14
-    EDITTEXT        IDC_LOGPATH,7,281,324,13,ES_READONLY
-    CONTROL         "Cache Boxart files",IDC_PATHS_ARTCACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,31,125,11
-END
-
-IDD_QUICKSTART DIALOGEX 0, 0, 396, 262
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,154,197,11
+    LTEXT           "Rips:",IDC_PATHS_RIPSL,3,185,131,8,SS_CENTERIMAGE
+    EDITTEXT        IDC_PATHS_RIP,3,196,377,15,ES_AUTOHSCROLL
+    PUSHBUTTON      "...",IDC_PATHS_RIPS,383,195,11,15
+    PUSHBUTTON      "Reset to defaults",IDC_PATHS_DEFAULT,2,218,92,14
+    PUSHBUTTON      "Rescan ROMs",IDC_ROM_RESCAN,2,235,92,14
+    COMBOBOX        IDC_PATHS_DEFAULTTYPE,99,219,163,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "Clear disk history",IDC_RESETDISKHISTORY,99,235,92,14
+    CONTROL         "Use relative paths",IDC_PATHS_RELATIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,199,237,94,11
+    PUSHBUTTON      "Clear registry",IDC_RESETREGISTRY,302,218,92,14
+    CONTROL         "Portable mode",IDC_REGISTRYMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,303,237,82,11
+    GROUPBOX        "Debug logging",IDC_STATIC,1,254,393,53
+    COMBOBOX        IDC_LOGSELECT,7,269,137,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "Enable full logging",IDC_LOGENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,151,270,93,12
+    CONTROL         "Log window",IDC_LOGENABLE2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,254,270,68,12
+    PUSHBUTTON      "Save All [] Create zip file that includes both logs and config file.",IDC_LOGSAVE,337,270,51,14
+    PUSHBUTTON      "Open [] Open selected file.",IDC_LOGOPEN,337,286,51,14
+    EDITTEXT        IDC_LOGPATH,7,287,324,13,ES_READONLY
+    CONTROL         "Cache Boxart files",IDC_PATHS_ARTCACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,37,125,11
+END
+
+IDD_QUICKSTART DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    GROUPBOX        "Emulated Hardware",IDC_QUICKSTART_CONFIG,1,0,393,54
-    RTEXT           "Model:",IDC_STATIC,5,14,68,10,SS_CENTERIMAGE
-    COMBOBOX        IDC_QUICKSTART_MODEL,77,12,263,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Emulated Hardware",IDC_QUICKSTART_CONFIG,1,25,393,54
+    RTEXT           "Model:",IDC_STATIC,5,39,68,10,SS_CENTERIMAGE
+    COMBOBOX        IDC_QUICKSTART_MODEL,77,37,263,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     CONTROL         "NTSC [] North American and Japanese display standard, 60Hz refresh rate. Other countries use PAL (50Hz. display refresh rate)",IDC_NTSC,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,347,14,35,12
-    RTEXT           "Configuration:",IDC_STATIC,5,33,68,10,SS_CENTERIMAGE
-    COMBOBOX        IDC_QUICKSTART_CONFIGURATION,77,31,310,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "Compatibility vs Required CPU Power ",IDC_QUICKSTART_COMPA,1,58,393,36
-    RTEXT           "Best compatibility",IDC_STATIC,20,73,98,10,SS_CENTERIMAGE
-    CONTROL         "",IDC_QUICKSTART_COMPATIBILITY,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,145,68,115,21
-    LTEXT           "Low compatibility",IDC_STATIC,279,74,92,10,SS_CENTERIMAGE
-    GROUPBOX        "Host Configuration",IDC_QUICKSTART_HOST,1,98,393,35
-    RTEXT           "Configuration:",IDC_STATIC,5,111,68,10,SS_CENTERIMAGE
-    COMBOBOX        IDC_QUICKSTART_HOSTCONFIG,77,109,310,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "Emulated Drives",IDC_QUICKSTART_DF,1,138,393,93
-    CONTROL         "Floppy drive DF0:",IDC_DF0QENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,151,77,15
-    PUSHBUTTON      "Select image file",IDC_DF0QQ,93,151,98,15
-    RTEXT           "Write-protected",IDC_DF0WPTEXTQ,196,154,69,10,SS_CENTERIMAGE
-    CONTROL         "",IDC_DF0WPQ,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,270,152,10,15
-    PUSHBUTTON      "?",IDC_INFO0Q,334,151,19,15
-    PUSHBUTTON      "Eject",IDC_EJECT0Q,358,151,30,15
-    COMBOBOX        IDC_DF0TEXTQ,9,170,379,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "Floppy drive DF1:",IDC_DF1QENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,189,77,15
-    PUSHBUTTON      "Select image file",IDC_DF1QQ,93,189,98,15
-    RTEXT           "Write-protected",IDC_DF1WPTEXTQ,195,192,69,10,SS_CENTERIMAGE
-    COMBOBOX        IDC_CD0Q_TYPE,199,190,74,50,CBS_DROPDOWNLIST | NOT WS_VISIBLE | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "",IDC_DF1WPQ,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,270,188,10,15
-    PUSHBUTTON      "?",IDC_INFO1Q,334,189,19,15
-    PUSHBUTTON      "Eject",IDC_EJECT1Q,358,189,30,15
-    COMBOBOX        IDC_DF1TEXTQ,9,207,379,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "Set configuration",IDC_QUICKSTART_SETCONFIG,9,241,88,15,NOT WS_VISIBLE
-    GROUPBOX        "Mode",IDC_STATIC,250,233,144,28,BS_LEFT
-    CONTROL         "Start in Quickstart mode",IDC_QUICKSTARTMODE,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,259,244,131,12
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,347,39,35,12
+    RTEXT           "Configuration:",IDC_STATIC,5,58,68,10,SS_CENTERIMAGE
+    COMBOBOX        IDC_QUICKSTART_CONFIGURATION,77,56,310,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Compatibility vs Required CPU Power ",IDC_QUICKSTART_COMPA,1,83,393,36
+    RTEXT           "Best compatibility",IDC_STATIC,20,98,98,10,SS_CENTERIMAGE
+    CONTROL         "",IDC_QUICKSTART_COMPATIBILITY,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,145,93,115,21
+    LTEXT           "Low compatibility",IDC_STATIC,279,99,92,10,SS_CENTERIMAGE
+    GROUPBOX        "Host Configuration",IDC_QUICKSTART_HOST,1,123,393,35
+    RTEXT           "Configuration:",IDC_STATIC,5,136,68,10,SS_CENTERIMAGE
+    COMBOBOX        IDC_QUICKSTART_HOSTCONFIG,77,134,310,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Emulated Drives",IDC_QUICKSTART_DF,1,163,393,93
+    CONTROL         "Floppy drive DF0:",IDC_DF0QENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,176,77,15
+    PUSHBUTTON      "Select image file",IDC_DF0QQ,93,176,98,15
+    RTEXT           "Write-protected",IDC_DF0WPTEXTQ,196,179,69,10,SS_CENTERIMAGE
+    CONTROL         "",IDC_DF0WPQ,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,270,177,10,15
+    PUSHBUTTON      "?",IDC_INFO0Q,334,176,19,15
+    PUSHBUTTON      "Eject",IDC_EJECT0Q,358,176,30,15
+    COMBOBOX        IDC_DF0TEXTQ,9,195,379,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "Floppy drive DF1:",IDC_DF1QENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,214,77,15
+    PUSHBUTTON      "Select image file",IDC_DF1QQ,93,214,98,15
+    RTEXT           "Write-protected",IDC_DF1WPTEXTQ,195,217,69,10,SS_CENTERIMAGE
+    COMBOBOX        IDC_CD0Q_TYPE,199,215,74,50,CBS_DROPDOWNLIST | NOT WS_VISIBLE | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "",IDC_DF1WPQ,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,270,213,10,15
+    PUSHBUTTON      "?",IDC_INFO1Q,334,214,19,15
+    PUSHBUTTON      "Eject",IDC_EJECT1Q,358,214,30,15
+    COMBOBOX        IDC_DF1TEXTQ,9,232,379,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "Set configuration",IDC_QUICKSTART_SETCONFIG,9,266,88,15,NOT WS_VISIBLE
+    GROUPBOX        "Mode",IDC_STATIC,250,258,144,28,BS_LEFT
+    CONTROL         "Start in Quickstart mode",IDC_QUICKSTARTMODE,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,259,269,131,12
 END
 
 IDD_FRONTEND DIALOGEX 0, 0, 420, 242
@@ -1169,7 +1169,7 @@ IDD_DEBUGGER DIALOGEX 0, 0, 454, 368
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
 EXSTYLE WS_EX_CONTROLPARENT
 CAPTION "WinUAE Debugger"
-FONT 8, "Courier New", 0, 0, 0x0
+FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
     LISTBOX         IDC_DBG_DREG,1,1,52,66,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT
     LISTBOX         IDC_DBG_AREG,54,1,52,66,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT
@@ -1211,42 +1211,42 @@ BEGIN
     CTEXT           "Enter address",IDC_DBG_ADDRINPUTTXT,20,1,100,10,SS_CENTERIMAGE | WS_TABSTOP
 END
 
-IDD_EXPANSION DIALOGEX 0, 0, 396, 208
+IDD_EXPANSION DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    GROUPBOX        "RTG Graphics Card",IDC_STATIC,1,0,393,198
-    COMBOBOX        IDC_RTG_Z2Z3,26,29,215,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_RTG_NUM,248,29,37,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "VRAM size: [] Graphics card memory. Required for RTG (Picasso96) emulation.",IDC_GFXCARDTEXT,2,50,76,10,SS_NOTIFY | SS_CENTERIMAGE
-    CONTROL         "",IDC_P96MEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,88,46,103,20
-    EDITTEXT        IDC_P96RAM,201,49,40,12,ES_CENTER | ES_READONLY
+    GROUPBOX        "RTG Graphics Card",IDC_STATIC,1,48,393,198
+    COMBOBOX        IDC_RTG_Z2Z3,26,77,215,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_RTG_NUM,248,77,37,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "VRAM size: [] Graphics card memory. Required for RTG (Picasso96) emulation.",IDC_GFXCARDTEXT,2,98,76,10,SS_NOTIFY | SS_CENTERIMAGE
+    CONTROL         "",IDC_P96MEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,88,94,103,20
+    EDITTEXT        IDC_P96RAM,201,97,40,12,ES_CENTER | ES_READONLY
     CONTROL         "Match host and RTG color depth if possible",IDC_RTG_MATCH_DEPTH,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,69,177,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,117,177,10
     CONTROL         "Scale if smaller than display size setting",IDC_RTG_SCALE,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,82,175,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,130,175,10
     CONTROL         "Always scale in windowed mode",IDC_RTG_SCALE_ALLOW,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,95,170,10
-    CONTROL         "Always center",IDC_RTG_CENTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,108,169,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,143,170,10
+    CONTROL         "Always center",IDC_RTG_CENTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,156,169,10
     CONTROL         "Hardware vertical blank interrupt",IDC_RTG_VBINTERRUPT,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,121,157,10
-    CONTROL         "Hardware sprite emulation",IDC_RTG_HWSPRITE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,207,121,148,10
-    CTEXT           "Color modes:",IDC_STATIC,295,33,83,10,SS_CENTERIMAGE
-    COMBOBOX        IDC_RTG_8BIT,296,48,82,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_RTG_16BIT,296,65,82,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_RTG_24BIT,296,83,82,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_RTG_32BIT,296,100,82,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_RTG_DISPLAYSELECT,11,140,371,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    CTEXT           "Refresh rate:",IDC_STATIC,30,164,83,10,SS_CENTERIMAGE
-    COMBOBOX        IDC_RTG_VBLANKRATE,29,179,84,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    CTEXT           "Buffer mode:",IDC_STATIC,154,164,83,10,SS_CENTERIMAGE
-    COMBOBOX        IDC_RTG_BUFFERCNT,153,179,84,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    CTEXT           "Aspect ratio:",IDC_STATIC,282,164,83,10,SS_CENTERIMAGE
-    COMBOBOX        IDC_RTG_SCALE_ASPECTRATIO,282,179,84,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "Multithreaded",IDC_RTG_THREAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,207,108,83,10
-    LTEXT           "Board:",IDC_STATIC,29,14,61,10
-    COMBOBOX        IDC_MONITOREMU_MON,175,13,65,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    LTEXT           "Monitor:",IDC_STATIC,105,14,65,10,0,WS_EX_RIGHT
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,169,157,10
+    CONTROL         "Hardware sprite emulation",IDC_RTG_HWSPRITE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,207,169,148,10
+    CTEXT           "Color modes:",IDC_STATIC,295,81,83,10,SS_CENTERIMAGE
+    COMBOBOX        IDC_RTG_8BIT,296,96,82,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_RTG_16BIT,296,113,82,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_RTG_24BIT,296,131,82,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_RTG_32BIT,296,148,82,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_RTG_DISPLAYSELECT,11,188,371,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    CTEXT           "Refresh rate:",IDC_STATIC,30,212,83,10,SS_CENTERIMAGE
+    COMBOBOX        IDC_RTG_VBLANKRATE,29,227,84,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    CTEXT           "Buffer mode:",IDC_STATIC,154,212,83,10,SS_CENTERIMAGE
+    COMBOBOX        IDC_RTG_BUFFERCNT,153,227,84,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    CTEXT           "Aspect ratio:",IDC_STATIC,282,212,83,10,SS_CENTERIMAGE
+    COMBOBOX        IDC_RTG_SCALE_ASPECTRATIO,282,227,84,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "Multithreaded",IDC_RTG_THREAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,207,156,83,10
+    LTEXT           "Board:",IDC_STATIC,29,62,61,10
+    COMBOBOX        IDC_MONITOREMU_MON,175,61,65,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    LTEXT           "Monitor:",IDC_STATIC,105,62,65,10,0,WS_EX_RIGHT
 END
 
 IDD_INPUTMAP DIALOGEX 0, 0, 421, 341
@@ -1332,45 +1332,45 @@ BEGIN
     EDITTEXT        IDC_DISKINFOBOX,5,4,481,292,ES_MULTILINE | ES_READONLY | WS_VSCROLL
 END
 
-IDD_EXPANSION2 DIALOGEX 0, 0, 396, 248
+IDD_EXPANSION2 DIALOGEX 0, 0, 396, 316
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    GROUPBOX        "Expansion Board Settings",IDC_STATIC,1,6,394,88
-    COMBOBOX        IDC_SCSIROMSELECTCAT,12,23,157,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_SCSIROMSELECT,12,42,157,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_SCSIROMSUBSELECT,12,59,157,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_EXPANSIONBOARDITEMSELECTOR,12,76,157,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_SCSIROMSELECTNUM,175,42,22,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Controller ID:",IDC_STATIC,241,23,110,15,SS_CENTERIMAGE
-    COMBOBOX        IDC_SCSIROMID,356,24,29,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "...",IDC_SCSIROMCHOOSER,376,42,10,15
-    CONTROL         "Autoboot disabled",IDC_SCSIROMFILEAUTOBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,62,94,12
-    CONTROL         "",IDC_EXPANSIONBOARDCHECKBOX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,76,99,12
-    EDITTEXT        IDC_EXPANSIONBOARDSTRINGBOX,202,76,172,14,ES_AUTOHSCROLL
-    COMBOBOX        IDC_EXPANSIONBOARDSELECTOR,202,76,171,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_SCSIROMFILE,202,42,171,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "Accelerator Board Settings",IDC_STATIC,1,97,394,91
-    COMBOBOX        IDC_CPUBOARD_TYPE,13,118,117,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_CPUBOARD_SUBTYPE,13,137,117,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_ACCELERATORBOARDITEMSELECTOR,12,169,157,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_ACCELERATORBOARDSELECTOR,202,169,171,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Accelerator board memory:",IDC_STATIC,155,145,104,15,SS_CENTERIMAGE
-    LTEXT           "Accelerator board ROM file:",IDC_STATIC,203,105,170,15,SS_CENTERIMAGE
-    COMBOBOX        IDC_CPUBOARDROMFILE,202,120,169,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "...",IDC_CPUBOARDROMCHOOSER,376,119,10,15
-    CONTROL         "",IDC_CPUBOARDMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,269,143,68,20
-    EDITTEXT        IDC_CPUBOARDRAM,343,147,40,12,ES_CENTER | ES_READONLY
-    CONTROL         "",IDC_ACCELERATORBOARDCHECKBOX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,170,99,12
-    GROUPBOX        "Miscellaneous Expansions",IDC_STATIC,1,192,394,51
+    GROUPBOX        "Expansion Board Settings",IDC_STATIC,1,42,394,88
+    COMBOBOX        IDC_SCSIROMSELECTCAT,12,59,157,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_SCSIROMSELECT,12,78,157,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_SCSIROMSUBSELECT,12,95,157,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_EXPANSIONBOARDITEMSELECTOR,12,112,157,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_SCSIROMSELECTNUM,175,78,22,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Controller ID:",IDC_STATIC,241,59,110,15,SS_CENTERIMAGE
+    COMBOBOX        IDC_SCSIROMID,356,60,29,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "...",IDC_SCSIROMCHOOSER,376,78,10,15
+    CONTROL         "Autoboot disabled",IDC_SCSIROMFILEAUTOBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,98,94,12
+    CONTROL         "",IDC_EXPANSIONBOARDCHECKBOX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,112,99,12
+    EDITTEXT        IDC_EXPANSIONBOARDSTRINGBOX,202,112,172,14,ES_AUTOHSCROLL
+    COMBOBOX        IDC_EXPANSIONBOARDSELECTOR,202,112,171,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_SCSIROMFILE,202,78,171,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Accelerator Board Settings",IDC_STATIC,1,133,394,91
+    COMBOBOX        IDC_CPUBOARD_TYPE,13,154,117,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_CPUBOARD_SUBTYPE,13,173,117,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_ACCELERATORBOARDITEMSELECTOR,12,205,157,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_ACCELERATORBOARDSELECTOR,202,205,171,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Accelerator board memory:",IDC_STATIC,155,181,104,15,SS_CENTERIMAGE
+    LTEXT           "Accelerator board ROM file:",IDC_STATIC,203,141,170,15,SS_CENTERIMAGE
+    COMBOBOX        IDC_CPUBOARDROMFILE,202,156,169,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "...",IDC_CPUBOARDROMCHOOSER,376,155,10,15
+    CONTROL         "",IDC_CPUBOARDMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,269,179,68,20
+    EDITTEXT        IDC_CPUBOARDRAM,343,183,40,12,ES_CENTER | ES_READONLY
+    CONTROL         "",IDC_ACCELERATORBOARDCHECKBOX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,206,99,12
+    GROUPBOX        "Miscellaneous Expansions",IDC_STATIC,1,228,394,51
     CONTROL         "bsdsocket.library [] bsdsocket network library emulation.",IDC_SOCKETS,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,207,179,11
-    CONTROL         "uaescsi.device",IDC_SCSIDEVICE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,223,180,11
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,243,179,11
+    CONTROL         "uaescsi.device",IDC_SCSIDEVICE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,259,180,11
     CONTROL         "uaenet.device [] Sana 2 compatible network device emulation.",IDC_SANA2,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,193,207,187,11
-    CONTROL         "CD32 Full Motion Video cartridge",IDC_CS_CD32FMV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,193,223,193,11
-    CONTROL         "Enabled",IDC_SCSIROMSELECTED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,43,99,12
-    CONTROL         "PCMCIA inserted",IDC_SCSIROMFILEPCMCIA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,301,62,84,12
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,193,243,187,11
+    CONTROL         "CD32 Full Motion Video cartridge",IDC_CS_CD32FMV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,193,259,193,11
+    CONTROL         "Enabled",IDC_SCSIROMSELECTED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,79,99,12
+    CONTROL         "PCMCIA inserted",IDC_SCSIROMFILEPCMCIA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,301,98,84,12
 END
 
 IDD_CHSQUERY DIALOGEX 0, 0, 396, 85
@@ -1415,7 +1415,7 @@ BEGIN
             VALUE "FileDescription", "WinUAE"
             VALUE "FileVersion", "4.3.0.0"
             VALUE "InternalName", "WinUAE"
-            VALUE "LegalCopyright", "© 1996-2019 under the GNU Public License (GPL)"
+            VALUE "LegalCopyright", "© 1996-2019 under the GNU Public License (GPL)"
             VALUE "OriginalFilename", "WinUAE.exe"
             VALUE "ProductName", "WinUAE"
             VALUE "ProductVersion", "4.3.0.0"
@@ -1836,7 +1836,7 @@ BEGIN
     IDS_SELECTFILESYSROOT   "Please select the root directory of the file system..."
     IDS_DEFAULTMIDIOUT      "Default MIDI-Out Device"
     IDS_CONTRIBUTORS1       "Bernd Schmidt - The Grand-Master\nSam Jordan - Custom-chip, floppy-DMA, etc.\nMathias Ortmann - Original WinUAE Main Guy, BSD Socket support\nBrian King - Picasso96 Support, Integrated GUI for WinUAE, previous WinUAE Main Guy\nToni Wilen - Core updates, WinUAE Main Guy\nGustavo Goedert/Peter Remmers/Michael Sontheimer/Tomi Hakala/Tim Gunn/Nemo Pohle - DOS Port Stuff\nSamuel Devulder/Olaf Barthel/Sam Jordan - Amiga Ports\nKrister Bergman - XFree86 and OS/2 Port\nA. Blanchard/Ernesto Corvi - MacOS Port\nChristian Bauer - BeOS Port\nIan Stephenson - NextStep Port\nPeter Teichmann - Acorn/RiscOS Port\nStefan Reinauer - ZorroII/III AutoConfig, Serial Support\nChristian Schmitt/Chris Hames - Serial Support\nHerman ten Brugge - 68020/68881 Emulation Code\nTauno Taipaleenmaki - Various UAE-Control/UAE-Library Support\nBrett Eden/Tim Gunn/Paolo Besser/Nemo Pohle - Various Docs and Web-Sites\nGeorg Veichtlbauer - Help File coordinator, German GUI\nFulvio Leonardi - Italian translator for WinUAE\n"
-    IDS_CONTRIBUTORS2       "Arnljot Arntsen, Bill Panagouleas, Cloanto, Zak Jennings - Hardware support\nSpecial thanks to Alexander Kneer and Tobias Abt (The Picasso96 Team)\nSteven Weiser  - Postscript printing emulation idea and testing.\nPéter Tóth /Balázs Rátkai/Iván Herczeg/András Arató - Hungarian translation.\nKarsten Bock, Gavin Fance, Dirk Trowe and Christian Schindler - Freezer cartridge hardware support.\nMikko Nieminen - Demo compatibility testing.\nArabuusimiehet - [This information is on a need-to-know basis]"
+    IDS_CONTRIBUTORS2       "Arnljot Arntsen, Bill Panagouleas, Cloanto, Zak Jennings - Hardware support\nSpecial thanks to Alexander Kneer and Tobias Abt (The Picasso96 Team)\nSteven Weiser  - Postscript printing emulation idea and testing.\nPéter Tóth /Balázs Rátkai/Iván Herczeg/András Arató - Hungarian translation.\nKarsten Bock, Gavin Fance, Dirk Trowe and Christian Schindler - Freezer cartridge hardware support.\nMikko Nieminen - Demo compatibility testing.\nArabuusimiehet - [This information is on a need-to-know basis]"
     IDS_INVALIDPRTPORT      "The printer you have in this configuration is not valid on this machine.\n"
     IDS_RESTOREUSS          "Restore a WinUAE snapshot file"
     IDS_USS                 "WinUAE snapshot files"
index ee3f76f94917023b90c3f3d1063d334b5c29ded1..9c5d966f1e26bd66ec0a6ec0b1b310ed6f5dd64d 100644 (file)
@@ -40,6 +40,7 @@
 #include <WtsApi32.h>
 #include <Avrt.h>
 #include <Cfgmgr32.h>
+#include <shellscalingapi.h>
 
 #include "resource.h"
 
@@ -234,6 +235,40 @@ static GETTOUCHINPUTINFO pGetTouchInputInfo;
 static CLOSETOUCHINPUTHANDLE pCloseTouchInputHandle;
 #endif
 
+int getdpiformonitor(HMONITOR mon)
+{
+       if (mon) {
+               static HMODULE shcore;
+               if (!shcore)
+                       shcore = LoadLibrary(_T("Shcore.dll"));
+               if (shcore) {
+                       typedef HRESULT(CALLBACK *GETDPIFORMONITOR)(HMONITOR, MONITOR_DPI_TYPE, UINT *, UINT *);
+                       GETDPIFORMONITOR pGetDpiForMonitor = (GETDPIFORMONITOR)GetProcAddress(shcore, "GetDpiForMonitor");
+                       if (pGetDpiForMonitor) {
+                               UINT x, y;
+                               if (SUCCEEDED(pGetDpiForMonitor(mon, MDT_EFFECTIVE_DPI, &x, &y)))
+                                       return y;
+                       }
+               }
+       }
+       HDC hdc = GetDC(NULL);
+       int dpi = GetDeviceCaps(hdc, LOGPIXELSX);
+       ReleaseDC(NULL, hdc);
+       return dpi;
+}
+
+int getdpiforwindow(HWND hwnd)
+{
+       typedef UINT(CALLBACK *GETDPIFORWINDOW)(HWND);
+       GETDPIFORWINDOW pGetDpiForWindow = (GETDPIFORWINDOW)GetProcAddress(userdll, "GetDpiForWindow");
+       if (pGetDpiForWindow)
+               return pGetDpiForWindow(hwnd);
+       HDC hdc = GetDC(NULL);
+       int dpi = GetDeviceCaps(hdc, LOGPIXELSY);
+       ReleaseDC(NULL, hdc);
+       return dpi;
+}
+
 static ULONG ActualTimerResolution;
 
 int target_sleep_nanos(int nanos)
index d984708d03c2eb0905d122a0f714b82b9deb2315..9e7f815fc122ff6ff73ede16218db9f8ec221c8e 100644 (file)
@@ -75,6 +75,8 @@ extern void minimizewindow(int monid);
 extern uae_u32 OSDEP_minimize_uae(void);
 extern void updatemouseclip(struct AmigaMonitor*);
 extern void updatewinrect(struct AmigaMonitor*, bool);
+int getdpiformonitor(HMONITOR mon);
+int getdpiforwindow(HWND hwnd);
 
 extern bool resumepaused (int priority);
 extern bool setpaused (int priority);
index 9083907639fa3ffbd4699e9a5c5c71a888de12ab..403382af01ee126af7f77dd251bcd57b5253fb58 100644 (file)
@@ -21,7 +21,6 @@
 #include <dwmapi.h>
 #include <D3dkmthk.h>
 #include <process.h>
-#include <shellscalingapi.h>
 
 #include "sysdeps.h"
 
@@ -2224,40 +2223,6 @@ static void reopen_gfx(struct AmigaMonitor *mon)
        render_screen(mon->monitor_id, 1, true);
 }
 
-static int getdpiformonitor(HMONITOR mon)
-{
-       if (mon) {
-               static HMODULE shcore;
-               if (!shcore)
-                       shcore = LoadLibrary(_T("Shcore.dll"));
-               if (shcore) {
-                       typedef HRESULT(CALLBACK * GETDPIFORMONITOR)(HMONITOR, MONITOR_DPI_TYPE, UINT*, UINT*);
-                       GETDPIFORMONITOR pGetDpiForMonitor = (GETDPIFORMONITOR)GetProcAddress(userdll, "GetDpiForMonitor");
-                       if (pGetDpiForMonitor) {
-                               UINT x, y;
-                               if (SUCCEEDED(pGetDpiForMonitor(mon, MDT_EFFECTIVE_DPI, &x, &y)))
-                                       return y;
-                       }
-               }
-       }
-       HDC hdc = GetDC(NULL);
-       int dpi = GetDeviceCaps(hdc, LOGPIXELSX);
-       ReleaseDC(NULL, hdc);
-       return dpi;
-}
-
-static int getdpiforwindow(HWND hwnd)
-{
-       typedef UINT (CALLBACK *GETDPIFORWINDOW)(HWND);
-       GETDPIFORWINDOW pGetDpiForWindow = (GETDPIFORWINDOW)GetProcAddress(userdll, "GetDpiForWindow");
-       if (pGetDpiForWindow)
-               return pGetDpiForWindow(hwnd);
-       HDC hdc = GetDC(NULL);
-       int dpi = GetDeviceCaps(hdc, LOGPIXELSY);
-       ReleaseDC(NULL, hdc);
-       return dpi;
-}
-
 static int getstatuswindowheight(int monid, HWND hwnd)
 {
        if (monid > 0)
index e8be66ba01cb39251255c44a17c57a084fa3a3fe..17d8c98b03915141e8682fb4016def19e7d8717c 100644 (file)
@@ -130,6 +130,8 @@ static int currentpage = -1;
 static int qs_request_reset;
 static int qs_override;
 int gui_active, gui_left;
+static struct newresource *panelresource;
+int dialog_inhibit;
 
 #undef HtmlHelp
 #ifndef HH_DISPLAY_TOPIC
@@ -378,6 +380,9 @@ static void commonproc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
 static int stringboxdialogactive;
 static INT_PTR CALLBACK StringBoxDialogProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
 {
+       if (dialog_inhibit)
+               return 0;
+
        switch(msg)
        {
        case WM_DESTROY:
@@ -1702,6 +1707,9 @@ static bool infoboxdialogstate;
 static HWND infoboxhwnd;
 static INT_PTR CALLBACK InfoBoxDialogProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
 {
+       if (dialog_inhibit)
+               return 0;
+
        switch(msg)
        {
        case WM_DESTROY:
@@ -5645,6 +5653,9 @@ static INT_PTR CALLBACK InfoSettingsProc (HWND hDlg, UINT msg, WPARAM wParam, LP
 {
        static int recursive = 0;
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg)
        {
        case WM_INITDIALOG:
@@ -6197,6 +6208,9 @@ static INT_PTR CALLBACK LoadSaveDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPA
        static int recursive;
        static struct ConfigStruct *config;
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg)
        {
        case WM_INITDIALOG:
@@ -6325,6 +6339,9 @@ static INT_PTR CALLBACK ErrorLogProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM
        CHARFORMAT CharFormat;
        TCHAR *err;
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg) {
        case WM_COMMAND:
                if (wParam == IDOK) {
@@ -6360,6 +6377,9 @@ static INT_PTR CALLBACK ContributorsProc (HWND hDlg, UINT msg, WPARAM wParam, LP
        TCHAR szContributors2[MAX_CONTRIBUTORS_LENGTH];
        TCHAR szContributors[MAX_CONTRIBUTORS_LENGTH * 2];
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg) {
        case WM_COMMAND:
                if (wParam == ID_OK) {
@@ -6751,6 +6771,9 @@ static INT_PTR CALLBACK PathsDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM
        int val, selpath = 0;
        TCHAR tmp[MAX_DPATH];
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg)
        {
        case WM_INITDIALOG:
@@ -7314,6 +7337,9 @@ static INT_PTR CALLBACK QuickstartDlgProc (HWND hDlg, UINT msg, WPARAM wParam, L
        static int doinit;
        LRESULT val;
 
+       if (dialog_inhibit)
+               return 0;
+
        switch(msg)
        {
        case WM_INITDIALOG:
@@ -7532,6 +7558,9 @@ static void init_aboutdlg (HWND hDlg)
 
 static INT_PTR CALLBACK AboutDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
 {
+       if (dialog_inhibit)
+               return 0;
+
        switch( msg )
        {
        case WM_INITDIALOG:
@@ -8541,6 +8570,9 @@ static INT_PTR CALLBACK DisplayDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPAR
 {
        static int recursive = 0;
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg)
        {
        case WM_INITDIALOG:
@@ -8759,6 +8791,9 @@ static INT_PTR CALLBACK ChipsetDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPAR
        static int recursive = 0;
        TCHAR buffer[MAX_DPATH], tmp[MAX_DPATH];
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg) {
        case WM_INITDIALOG:
        {
@@ -9145,6 +9180,9 @@ static INT_PTR CALLBACK ChipsetDlgProc2 (HWND hDlg, UINT msg, WPARAM wParam, LPA
        static int recursive = 0;
        TCHAR tmp[MAX_DPATH];
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg) {
        case WM_INITDIALOG:
        {
@@ -10508,6 +10546,9 @@ static INT_PTR CALLBACK Expansion2DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LP
        TCHAR tmp[MAX_DPATH];
        static int recursive = 0;
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg)
        {
                case WM_INITDIALOG:
@@ -10902,6 +10943,9 @@ static INT_PTR CALLBACK ExpansionDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LP
        static int recursive = 0;
        static int enumerated;
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg)
        {
        case WM_INITDIALOG:
@@ -11194,6 +11238,9 @@ static INT_PTR CALLBACK BoardsDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM
        static int recursive = 0;
        static int selected = -1;
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg)
        {
                case WM_INITDIALOG:
@@ -11321,6 +11368,9 @@ static INT_PTR CALLBACK MemoryDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARA
        static int recursive = 0;
        int v;
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg)
        {
        case WM_INITDIALOG:
@@ -11689,6 +11739,9 @@ static INT_PTR CALLBACK KickstartDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LP
        static int recursive;
        TCHAR tmp[MAX_DPATH];
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg)
        {
        case WM_INITDIALOG:
@@ -12135,15 +12188,15 @@ static void getstoredguisize(void)
        if (full_property_sheet || isfullscreen () == 0) {
                regqueryint (NULL, _T("GUISizeX"), &gui_width);
                regqueryint (NULL, _T("GUISizeY"), &gui_height);
-               scaleresource_init (gui_fullscreen ? _T("GFS") : _T(""), gui_fullscreen);
+               scaleresource_init(gui_fullscreen ? _T("GFS") : _T(""), gui_fullscreen);
        } else if (isfullscreen () < 0) {
                regqueryint (NULL, _T("GUISizeFWX"), &gui_width);
                regqueryint (NULL, _T("GUISizeFWY"), &gui_height);
-               scaleresource_init (gui_fullscreen ? _T("FW_GFS") : _T("FW"), gui_fullscreen);
+               scaleresource_init(gui_fullscreen ? _T("FW_GFS") : _T("FW"), gui_fullscreen);
        } else if (isfullscreen () > 0) {
                regqueryint (NULL, _T("GUISizeFSX"), &gui_width);
                regqueryint (NULL, _T("GUISizeFSY"), &gui_height);
-               scaleresource_init (gui_fullscreen ? _T("FS_GFS") : _T("FS"), gui_fullscreen);
+               scaleresource_init(gui_fullscreen ? _T("FS_GFS") : _T("FS"), gui_fullscreen);
        }
 }
 
@@ -12312,7 +12365,7 @@ static INT_PTR MiscDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
                        ResetListViews();
                        break;
                case IDC_GUI_DEFAULT:
-                       scaleresource_setdefaults ();
+                       scaleresource_setdefaults(hDlg);
                        v = SendDlgItemMessage (hDlg, IDC_GUI_SIZE, CB_GETCURSEL, 0, 0L);
                        if (v != CB_ERR) {
                                if (v == 0) {
@@ -12323,6 +12376,9 @@ static INT_PTR MiscDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
                                }
                                gui_width = (int)(GUI_INTERNAL_WIDTH * v / 100);
                                gui_height = (int)(GUI_INTERNAL_HEIGHT * v / 100);
+                               int dpi = getdpiforwindow(hDlg);
+                               gui_width = MulDiv(gui_width, dpi, 96);
+                               gui_height = MulDiv(gui_height, dpi, 96);
                                if (gui_width < MIN_GUI_INTERNAL_WIDTH || gui_height < MIN_GUI_INTERNAL_HEIGHT) {
                                        gui_width = MIN_GUI_INTERNAL_WIDTH;
                                        gui_height = MIN_GUI_INTERNAL_HEIGHT;
@@ -12334,9 +12390,6 @@ static INT_PTR MiscDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
                case IDC_GUI_FONT:
                        misc_gui_font (hDlg, 0);
                        break;
-               case IDC_GUI_LISTFONT:
-                       misc_gui_font (hDlg, 1);
-                       break;
                case IDC_GUI_RESIZE:
                        gui_resize_enabled = ischecked (hDlg, IDC_GUI_RESIZE);
                        gui_fullscreen = -1;
@@ -12782,6 +12835,9 @@ static INT_PTR CALLBACK CPUDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM l
        static int recursive = 0;
        int idx;
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg) {
        case WM_INITDIALOG:
                recursive++;
@@ -13309,6 +13365,9 @@ static INT_PTR CALLBACK SoundDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM
        int numdevs;
        int card, i;
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg) {
        case WM_INITDIALOG:
                {
@@ -13564,6 +13623,9 @@ static INT_PTR CALLBACK VolumeSettingsProc (HWND hDlg, UINT msg, WPARAM wParam,
 {
        static int recursive = 0;
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg) {
        case WM_INITDIALOG:
                {
@@ -14141,6 +14203,9 @@ static INT_PTR CALLBACK TapeDriveSettingsProc (HWND hDlg, UINT msg, WPARAM wPara
        int posn, readonly;
        TCHAR tmp[MAX_DPATH];
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg) {
 
        case WM_INITDIALOG:
@@ -14248,6 +14313,9 @@ static INT_PTR CALLBACK CDDriveSettingsProc (HWND hDlg, UINT msg, WPARAM wParam,
        static int recursive = 0;
        int posn;
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg) {
 
        case WM_INITDIALOG:
@@ -14343,6 +14411,9 @@ static INT_PTR CALLBACK HardfileSettingsProc (HWND hDlg, UINT msg, WPARAM wParam
        int v;
        int *p;
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg) {
        case WM_DROPFILES:
                dragdrop (hDlg, (HDROP)wParam, &changed_prefs, -2);
@@ -14615,6 +14686,9 @@ static INT_PTR CALLBACK HarddriveSettingsProc (HWND hDlg, UINT msg, WPARAM wPara
        LRESULT posn;
        static int oposn;
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg) {
        case WM_INITDIALOG:
                {
@@ -15157,6 +15231,9 @@ static void harddiskdlg_volume_notify (HWND hDlg, NM_LISTVIEW *nmlistview)
 /* harddisk parent view */
 static INT_PTR CALLBACK HarddiskDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
 {
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg) {
        case WM_INITDIALOG:
                clicked_entry = 0;
@@ -15782,6 +15859,9 @@ static INT_PTR CALLBACK FloppyDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARA
        static TCHAR diskname[40] = { _T("") };
        static int dropopen;
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg)
        {
        case WM_INITDIALOG:
@@ -16120,6 +16200,9 @@ static INT_PTR CALLBACK SwapperDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPAR
        static int entry;
        TCHAR tmp[MAX_DPATH];
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg)
        {
        case WM_INITDIALOG:
@@ -16942,6 +17025,9 @@ static INT_PTR CALLBACK GamePortsDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LP
        static int first;
        int temp, i;
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg)
        {
        case WM_INITDIALOG:
@@ -17125,6 +17211,9 @@ static INT_PTR CALLBACK IOPortsDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPAR
 {
        static int recursive = 0;
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg)
        {
        case WM_INITDIALOG:
@@ -18116,6 +18205,8 @@ static INT_PTR CALLBACK RemapSpecialsProc(HWND hDlg, UINT msg, WPARAM wParam, LP
        static int recursive = 0;
        HWND list = GetDlgItem(hDlg, IDC_LISTDIALOG_LIST);
 
+       if (dialog_inhibit)
+               return 0;
 
        switch (msg)
        {
@@ -18203,6 +18294,9 @@ static void input_remapspecials(HWND hDlg)
 
 static INT_PTR CALLBACK InputMapDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
 {
+       if (dialog_inhibit)
+               return 0;
+
        static int recursive;
        HWND h = GetDlgItem (hDlg, IDC_INPUTMAPLIST);
        TCHAR tmp[256];
@@ -18508,6 +18602,9 @@ static void qualifierlistview (HWND list)
 
 static INT_PTR CALLBACK QualifierProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
 {
+       if (dialog_inhibit)
+               return 0;
+
        static int recursive = 0;
        HWND list = GetDlgItem (hDlg, IDC_LISTDIALOG_LIST);
 
@@ -18702,6 +18799,9 @@ static INT_PTR CALLBACK InputDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM
        int items = 0, entry = 0;
        static int recursive;
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg)
        {
        case WM_INITDIALOG:
@@ -19580,6 +19680,9 @@ static INT_PTR CALLBACK hw3dDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM
        int i;
        static int filteroverlaypos = -1;
        static bool firstinit;
+       
+       if (dialog_inhibit)
+               return 0;
 
        switch (msg)
        {
@@ -19991,6 +20094,9 @@ static INT_PTR CALLBACK AVIOutputDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LP
        static int recursive = 0;
        TCHAR tmp[1000];
 
+       if (dialog_inhibit)
+               return 0;
+
        switch(msg)
        {
        case WM_INITDIALOG:
@@ -20467,7 +20573,6 @@ static HWND updatePanel (int id, UINT action)
        static HWND hwndTT;
        static bool first = true;
        int fullpanel;
-       struct newresource *tres;
 
        SaveListView(panelDlg, false);
        listview_id = 0;
@@ -20475,6 +20580,8 @@ static HWND updatePanel (int id, UINT action)
        if (!hDlg)
                return NULL;
 
+       SetWindowRedraw(hDlg, FALSE);
+
        if (first) {
                first = false;
                getguisize (hDlg, &gui_width, &gui_height);
@@ -20529,14 +20636,17 @@ static HWND updatePanel (int id, UINT action)
        }
 
        fullpanel = ppage[id].fullpanel;
-       tres = scaleresource (ppage[id].nres, &maindctx, hDlg, -1, 0, 0, id + 1);
-       panelDlg = CreateDialogIndirectParam (tres->inst, tres->resource, hDlg, ppage[id].dlgproc, id);
+       struct newresource *res = ppage[id].nres;
+       scaleresource (res, &maindctx, hDlg, -1, 0, 0, id + 1);
+       res->parent = panelresource;
+       panelresource->child = res;
+       panelDlg = x_CreateDialogIndirectParam(res->inst, res->resource, hDlg, ppage[id].dlgproc, id, res);
 
        //SetWindowRedraw(hDlg, FALSE);
 
-       rescaleresource(tres, &maindctx, hDlg, panelDlg);
+       rescaleresource(panelresource, false);
 
-       freescaleresource(tres);
+       freescaleresource(res);
 
        ShowWindow (GetDlgItem (hDlg, IDC_PANEL_FRAME), SW_HIDE);
        ShowWindow (GetDlgItem (hDlg, IDC_PANEL_FRAME_OUTER), !fullpanel ? SW_SHOW : SW_HIDE);
@@ -20571,6 +20681,9 @@ static HWND updatePanel (int id, UINT action)
                setfocus (panelDlg, ppage[id].focusid);
        }
 
+       SetWindowRedraw(hDlg, TRUE);
+       RedrawWindow(panelDlg, NULL, NULL, RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN);
+
        return panelDlg;
 }
 
@@ -20729,6 +20842,33 @@ static bool dodialogmousemove(void)
        return true;
 }
 
+void getguipos(int *xp, int *yp)
+{
+       int x = 10, y = 10;
+       if (gui_fullscreen) {
+               x = gui_fullscreen_rect.left;
+               y = gui_fullscreen_rect.top;
+       } else {
+               if (isfullscreen() == 0) {
+                       regqueryint(NULL, _T("GUIPosX"), &x);
+                       regqueryint(NULL, _T("GUIPosY"), &y);
+               } else if (isfullscreen() < 0) {
+                       regqueryint(NULL, _T("GUIPosFWX"), &x);
+                       regqueryint(NULL, _T("GUIPosFWY"), &y);
+               } else if (isfullscreen() > 0) {
+                       regqueryint(NULL, _T("GUIPosFSX"), &x);
+                       regqueryint(NULL, _T("GUIPosFSY"), &y);
+                       if (dodialogmousemove()) {
+                               struct MultiDisplay *mdc = getdisplay(&currprefs, 0);
+                               x = mdc->rect.left;
+                               y = mdc->rect.top;
+                       }
+               }
+       }
+       *xp = x;
+       *yp = y;
+}
+
 static void centerWindow (HWND hDlg)
 {
        RECT rc, rcDlg, rcOwner;
@@ -20740,25 +20880,7 @@ static void centerWindow (HWND hDlg)
        if (owner == NULL)
                owner = GetDesktopWindow ();
 
-       if (gui_fullscreen) {
-               x = gui_fullscreen_rect.left;
-               y = gui_fullscreen_rect.top;
-       } else {
-               if (isfullscreen () == 0) {
-                       regqueryint (NULL, _T("GUIPosX"), &x);
-                       regqueryint (NULL, _T("GUIPosY"), &y);
-               } else if (isfullscreen () < 0) {
-                       regqueryint (NULL, _T("GUIPosFWX"), &x);
-                       regqueryint (NULL, _T("GUIPosFWY"), &y);
-               } else if (isfullscreen () > 0) {
-                       regqueryint (NULL, _T("GUIPosFSX"), &x);
-                       regqueryint (NULL, _T("GUIPosFSY"), &y);
-                       if (dodialogmousemove ()) {
-                               x = mdc->rect.left;
-                               y = mdc->rect.top;
-                       }
-               }
-       }
+       getguipos(&x, &y);
        pt1.x = x + 100;
        pt1.y = y + (GetSystemMetrics (SM_CYMENU) + GetSystemMetrics (SM_CYBORDER)) / 2;
        pt2.x = x + gui_width - 100;
@@ -21114,14 +21236,18 @@ static INT_PTR CALLBACK DialogProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM l
        static int recursive = 0;
        static int oldwidth, oldheight;
 
+       if (dialog_inhibit)
+               return 0;
+
        switch (msg)
        {
        case  WM_DPICHANGED:
        {
-               if (!gui_size_changed && hGUIWnd) {
+               if (gui_size_changed <= 1 && hGUIWnd) {
                        int dx = LOWORD(wParam);
                        int dy = HIWORD(wParam);
                        RECT *const r = (RECT*)lParam;
+                       gui_size_changed = 0;
                        previous_dpix = dx;
                        previous_dpiy = dy;
                        gui_width = (r->right - r->left);
@@ -21376,8 +21502,8 @@ struct newresource *getresource (int tmpl)
        if (!newres)
                return NULL;
        memcpy ((void*)newres, resdata, size);
-       nr->resource = newres;
-       nr->size = size;
+       nr->sourceresource = newres;
+       nr->sourcesize = size;
        nr->tmpl = tmpl;
        nr->inst = inst;
        return nr;
@@ -21385,17 +21511,15 @@ struct newresource *getresource (int tmpl)
 
 INT_PTR CustomDialogBox (int templ, HWND hDlg, DLGPROC proc)
 {
-       struct newresource *res, *r;
+       struct newresource *res;
        struct dlgcontext dctx;
        INT_PTR h = -1;
 
        res = getresource (templ);
        if (!res)
                return h;
-       r = scaleresource (res, &dctx, hDlg, -1, 0, 0, -1);
-       if (r) {
-               h = DialogBoxIndirect (r->inst, r->resource, hDlg, proc);
-               freescaleresource (r);
+       if (scaleresource (res, &dctx, hDlg, -1, 0, 0, -1)) {
+               h = DialogBoxIndirect (res->inst, res->resource, hDlg, proc);
        }
        customDlgType = 0;
        customDlg = NULL;
@@ -21405,17 +21529,15 @@ INT_PTR CustomDialogBox (int templ, HWND hDlg, DLGPROC proc)
 
 HWND CustomCreateDialog (int templ, HWND hDlg, DLGPROC proc)
 {
-       struct newresource *res, *r;
+       struct newresource *res;
        struct dlgcontext dctx;
        HWND h = NULL;
 
        res = getresource (templ);
        if (!res)
                return h;
-       r = scaleresource (res, &dctx, hDlg, -1, 0, 0, -1);
-       if (r) {
-               h = CreateDialogIndirect (r->inst, r->resource, hDlg, proc);
-               freescaleresource (r);
+       if (scaleresource (res, &dctx, hDlg, -1, 0, 0, -1)) {
+               h = x_CreateDialogIndirectParam(res->inst, res->resource, hDlg, proc, NULL, res);
        }
        freescaleresource (res);
        return h;
@@ -21549,8 +21671,6 @@ static int GetSettings (int all_options, HWND hwnd)
        int psresult;
        HWND dhwnd;
        int first = 0;
-       static struct newresource *panelresource;
-       struct newresource *tres = NULL;
        bool closed = false;
 
        gui_active++;
@@ -21633,14 +21753,14 @@ static int GetSettings (int all_options, HWND hwnd)
                }
                gui_size_changed = 0;
                if (!regexists) {
-                       scaleresource_setdefaults ();
+                       scaleresource_setdefaults(hwnd);
                        fmultx = 0;
                        write_log (_T("GUI default size\n"));
                        regsetint (NULL, _T("GUIResize"), 0);
                        regsetint (NULL, _T("GUIFullscreen"), 0);
                } else {
                        if (gui_width < MIN_GUI_INTERNAL_WIDTH || gui_width > 4096 || gui_height < MIN_GUI_INTERNAL_HEIGHT || gui_height > 4096) {
-                               scaleresource_setdefaults ();
+                               scaleresource_setdefaults(hwnd);
                                setdefaultguisize ();
                                fmultx = 0;
                                write_log (_T("GUI size reset\n"));
@@ -21720,17 +21840,17 @@ static int GetSettings (int all_options, HWND hwnd)
 
                panelresource->width = gui_width;
                panelresource->height = gui_height;
-               freescaleresource(tres);
-               tres = scaleresource (panelresource, &maindctx, hwnd, gui_resize_enabled && gui_resize_allowed, gui_fullscreen, workprefs.win32_gui_alwaysontop || workprefs.win32_main_alwaysontop ? WS_EX_TOPMOST : 0, 0);
+               freescaleresource(panelresource);
+               scaleresource (panelresource, &maindctx, hwnd, gui_resize_enabled && gui_resize_allowed, gui_fullscreen, workprefs.win32_gui_alwaysontop || workprefs.win32_main_alwaysontop ? WS_EX_TOPMOST : 0, 0);
                HWND phwnd = hwnd;
                if (isfullscreen() == 0)
                        phwnd = 0;
                if (isfullscreen() > 0 && currprefs.gfx_api > 1)
                        phwnd = 0;
-               dhwnd = CreateDialogIndirect(tres->inst, tres->resource, phwnd, DialogProc);
+               dhwnd = x_CreateDialogIndirectParam(panelresource->inst, panelresource->resource, phwnd, DialogProc, NULL, panelresource);
                dialog_rect.top = dialog_rect.left = 0;
-               dialog_rect.right = tres->width;
-               dialog_rect.bottom = tres->height;
+               dialog_rect.right = panelresource->width;
+               dialog_rect.bottom = panelresource->height;
                psresult = 0;
                if (dhwnd != NULL) {
                        int dw = GetSystemMetrics(SM_CXSCREEN);
@@ -21743,7 +21863,7 @@ static int GetSettings (int all_options, HWND hwnd)
                        write_log (_T("Got GUI size = %dx%d\n"), w, h);
                        if (w < 100 || h < 100 || (w > 8192 && w > dw + 500) || (h > 8192 && h > dh + 500)) {
                                write_log (_T("GUI size (%dx%d) out of range!\n"), w, h);
-                               scaleresource_setdefaults ();
+                               scaleresource_setdefaults(hwnd);
                                setdefaultguisize ();
                                SendMessage (dhwnd, WM_COMMAND, IDCANCEL, 0);
                                fmultx = fmulty = 0;
@@ -21821,7 +21941,7 @@ static int GetSettings (int all_options, HWND hwnd)
                                        regsetint(NULL, _T("GUIFullscreen"), gui_fullscreen > 0 ? 1 : 0);
                                        if (gui_size_changed < 10) {
                                                scaleresource_setsize(gui_width, gui_height, 0);
-                                               rescaleresource(tres, &maindctx, dhwnd, panelDlg);
+                                               rescaleresource(panelresource, true);
                                                gui_size_changed = 0;
                                                reset_box_art_window();
                                        } else {
@@ -21847,12 +21967,11 @@ static int GetSettings (int all_options, HWND hwnd)
                                abort ();
                        }
                        setdefaultguisize ();
-                       scaleresource_setdefaults ();
+                       scaleresource_setdefaults(hwnd);
                        gui_size_changed = 10;
                }
 gui_exit:
-               freescaleresource(tres);
-               tres = NULL;
+               freescaleresource(panelresource);
                if (!gui_size_changed)
                        break;
                quit_program = 0;
index 03365dc263f921f87d51333bedefcc59be11c5b4..7e277f33ca6df740002592a8d6e7a987c02b3607 100644 (file)
@@ -34,17 +34,69 @@ struct dlgcontext
        int dlgstorecnt;
 };
 
+/* Dialog info structure */
+typedef struct
+{
+       HWND      hwndFocus;   /* Current control with focus */
+       HFONT     hUserFont;   /* Dialog font */
+       HMENU     hMenu;       /* Dialog menu */
+       UINT      xBaseUnit;   /* Dialog units (depends on the font) */
+       UINT      yBaseUnit;
+       INT       idResult;    /* EndDialog() result / default pushbutton ID */
+       UINT      flags;       /* EndDialog() called for this dialog */
+} DIALOGINFO;
+
+/* Dialog template */
+typedef struct
+{
+       DWORD      style;
+       DWORD      exStyle;
+       DWORD      helpId;
+       WORD       nbItems;
+       short      x;
+       short      y;
+       short      cx;
+       short      cy;
+       LPCWSTR    menuName;
+       LPCWSTR    className;
+       LPCWSTR    caption;
+       WORD       pointSize;
+       WORD       weight;
+       BOOL       italic;
+       LPCWSTR    faceName;
+       BOOL       dialogEx;
+} DLG_TEMPLATE;
+
+struct newreswnd
+{
+       HWND hwnd;
+       uae_s16 x, y, w, h;
+};
+
 struct newresource
 {
-    LPCDLGTEMPLATEW resource;
-    HINSTANCE inst;
+       HINSTANCE inst;
+       LPCDLGTEMPLATEW sourceresource;
+       int sourcesize;
+       
+       LPCDLGTEMPLATEW resource;
     int size;
     int tmpl;
-    int width, height;
-       int listviews_id[MAX_GUIIDPARAMS];
+    int x, y, width, height;
        int setparam_id[MAX_GUIIDPARAMS];
+       struct newreswnd hwnds[MAX_DLGID];
+       int hwndcnt;
        int listviewcnt;
        int setparamcnt;
+       DIALOGINFO dinfo;
+       DLG_TEMPLATE dtmpl;
+       DLGPROC dlgproc;
+       LPARAM param;
+       HWND hwnd;
+       struct newresource *parent, *child;
+       int unitx, unity;
+       bool fontchanged;
+       int fontsize;
 };
 
 #define MIN_GUI_INTERNAL_WIDTH 512
@@ -55,19 +107,23 @@ struct newresource
 #define GUI_INTERNAL_FONT 8
 
 extern struct uae_prefs workprefs;
+extern int dialog_inhibit;
 
-extern struct newresource* scaleresource(struct newresource*, struct dlgcontext *dctx, HWND, int, int, DWORD, int);
-extern void rescaleresource(struct newresource*, struct dlgcontext*, HWND, HWND);
+HWND x_CreateDialogIndirectParam(HINSTANCE hInstance, LPCDLGTEMPLATE lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM lParamInit, struct newresource*);
+void getguipos(int *xp, int *yp);
+extern int scaleresource(struct newresource*, struct dlgcontext *dctx, HWND, int, int, DWORD, int);
+extern void rescaleresource(struct newresource*, bool);
 extern void freescaleresource (struct newresource*);
 extern void scaleresource_setsize (int w, int h, int fs);
 extern HWND CustomCreateDialog (int templ, HWND hDlg, DLGPROC proc);
 extern INT_PTR CustomDialogBox (int templ, HWND hDlg, DLGPROC proc);
 extern struct newresource *getresource (int tmpl);
-extern void scaleresource_init (const TCHAR*, int);
+extern void scaleresource_init(const TCHAR*, int);
 extern int scaleresource_choosefont (HWND hDlg, int fonttype);
-extern void scaleresource_setdefaults (void);
+extern void scaleresource_setdefaults(HWND);
 extern void scalaresource_listview_font_info(int*);
 extern int getscaledfontsize(int size);
+extern void scaleresource_modification(HWND);
 extern bool show_box_art(const TCHAR*, const TCHAR*);
 extern void move_box_art_window(void);
 extern void close_box_art_window(void);
index 39d928308b8b75bdc6a22a2b69abc36fc745d449..74eb5cc7f60faa3e57fc932ccd5ed7af39ebdc9c 100644 (file)
@@ -1,8 +1,10 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <windows.h>
+#include <windowsx.h>
 #include <commctrl.h>
 #include <Dwmapi.h>
+#include <shellscalingapi.h>
 
 #include "sysconfig.h"
 #include "sysdeps.h"
@@ -16,7 +18,7 @@
 #include "zfile.h"
 
 #define MAX_GUI_FONTS 2
-#define DEFAULT_FONTSIZE  8
+#define DEFAULT_FONTSIZE 8
 
 static float multx, multy;
 static int scaleresource_width, scaleresource_height;
@@ -31,7 +33,6 @@ static int fontstyle_list = 0;
 static int fontweight_gui = FW_REGULAR;
 static int fontweight_list = FW_REGULAR;
 
-static HFONT listviewfont;
 static TEXTMETRIC listview_tm;
 static const TCHAR *fontprefix;
 
@@ -86,6 +87,666 @@ static const wchar_t wfont_old[] = _T("MS Sans Serif");
 static const TCHAR font_vista[] = _T("Segoe UI");
 static const TCHAR font_xp[] = _T("Tahoma");
 
+#define WNDS_DIALOGWINDOW 0X00010000
+#define CW_USEDEFAULT16 ((short)0x8000)
+
+/* Dialog control information */
+typedef struct
+{
+       DWORD      style;
+       DWORD      exStyle;
+       DWORD      helpId;
+       short      x;
+       short      y;
+       short      cx;
+       short      cy;
+       UINT       id;
+       LPCWSTR    className;
+       LPCWSTR    windowName;
+       BOOL       windowNameFree; // ReactOS
+       LPCVOID    data;
+} DLG_CONTROL_INFO;
+
+
+/* MACROS/DEFINITIONS ********************************************************/
+
+#define DF_END  0x0001
+#define DF_DIALOGACTIVE 0x4000 // ReactOS
+#define GETDLGINFO(res) DIALOG_get_info(res, FALSE)
+#define GET_WORD(ptr)  (*(WORD *)(ptr))
+#define GET_DWORD(ptr) (*(DWORD *)(ptr))
+#define GET_LONG(ptr) (*(const LONG *)(ptr))
+#define DLG_ISANSI 2
+
+/***********************************************************************
+*               DIALOG_get_info
+*
+* Get the DIALOGINFO structure of a window, allocating it if needed
+* and 'create' is TRUE.
+*
+* ReactOS
+*/
+static DIALOGINFO *DIALOG_get_info(struct newresource *res, BOOL create)
+{
+       DIALOGINFO *dlgInfo;
+
+       dlgInfo = (DIALOGINFO *)&res->dinfo;
+       dlgInfo->idResult = IDOK;
+       return dlgInfo;
+}
+static LONG GdiGetCharDimensions(HDC hdc, LPTEXTMETRICW lptm, LONG *height)
+{
+       SIZE sz;
+       TEXTMETRICW tm;
+       static const WCHAR alphabet[] =
+       {
+               'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
+               'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
+               'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 0
+       };
+
+       if (!GetTextMetricsW(hdc, &tm)) return 0;
+
+       if (!GetTextExtentPointW(hdc, alphabet, 52, &sz)) return 0;
+
+       if (lptm) *lptm = tm;
+       if (height) *height = tm.tmHeight;
+
+       return (sz.cx / 26 + 1) / 2;
+}
+
+/***********************************************************************
+ *           DIALOG_GetControl32
+ *
+ * Return the class and text of the control pointed to by ptr,
+ * fill the header structure and return a pointer to the next control.
+ */
+static const WORD *DIALOG_GetControl32(const WORD *p, DLG_CONTROL_INFO *info,
+       BOOL dialogEx)
+{
+       if (dialogEx)
+       {
+               info->helpId = GET_DWORD(p); p += 2;
+               info->exStyle = GET_DWORD(p); p += 2;
+               info->style = GET_DWORD(p); p += 2;
+       } else
+       {
+               info->helpId = 0;
+               info->style = GET_DWORD(p); p += 2;
+               info->exStyle = GET_DWORD(p); p += 2;
+       }
+       info->x = GET_WORD(p); p++;
+       info->y = GET_WORD(p); p++;
+       info->cx = GET_WORD(p); p++;
+       info->cy = GET_WORD(p); p++;
+
+       if (dialogEx)
+       {
+               /* id is 4 bytes for DIALOGEX */
+               info->id = GET_LONG(p);
+               p += 2;
+       } else
+       {
+               info->id = GET_WORD(p);
+               p++;
+       }
+
+       if (GET_WORD(p) == 0xffff)
+       {
+               static const WCHAR class_names[6][10] =
+               {
+                       { 'B', 'u', 't', 't', 'o', 'n', },             /* 0x80 */
+                       { 'E', 'd', 'i', 't', },                     /* 0x81 */
+                       { 'S', 't', 'a', 't', 'i', 'c', },             /* 0x82 */
+                       { 'L', 'i', 's', 't', 'B', 'o', 'x', },         /* 0x83 */
+                       { 'S', 'c', 'r', 'o', 'l', 'l', 'B', 'a', 'r', }, /* 0x84 */
+                       { 'C', 'o', 'm', 'b', 'o', 'B', 'o', 'x', }      /* 0x85 */
+               };
+               WORD id = GET_WORD(p + 1);
+               /* Windows treats dialog control class ids 0-5 same way as 0x80-0x85 */
+               if ((id >= 0x80) && (id <= 0x85)) id -= 0x80;
+               if (id <= 5)
+               {
+                       info->className = class_names[id];
+               } else
+               {
+                       info->className = NULL;
+                       /* FIXME: load other classes here? */
+                       write_log(_T("Unknown built-in class id %04x\n"), id);
+               }
+               p += 2;
+       } else
+       {
+               info->className = (LPCWSTR)p;
+               p += _tcslen(info->className) + 1;
+       }
+
+       if (GET_WORD(p) == 0xffff)  /* Is it an integer id? */
+       {
+               //// ReactOS Rev 6478
+               info->windowName = (LPCWSTR)HeapAlloc(GetProcessHeap(), 0, sizeof(L"#65535"));
+               if (info->windowName != NULL)
+               {
+                       wsprintf((LPWSTR)info->windowName, L"#%u", GET_WORD(p + 1));
+                       info->windowNameFree = TRUE;
+               } else
+               {
+                       info->windowNameFree = FALSE;
+               }
+               p += 2;
+       } else
+       {
+               info->windowName = (LPCWSTR)p;
+               info->windowNameFree = FALSE;
+               p += _tcslen(info->windowName) + 1;
+       }
+#if 0
+       write_log(_T("    %s %s %ld, %d, %d, %d, %d, %08x, %08x, %08x\n"),
+               info->className, info->windowName,
+               info->id, info->x, info->y, info->cx, info->cy,
+               info->style, info->exStyle, info->helpId);
+#endif
+       if (GET_WORD(p))
+       {
+               info->data = p;
+               p += GET_WORD(p) / sizeof(WORD);
+       } else info->data = NULL;
+       p++;
+
+       /* Next control is on dword boundary */
+       return (const WORD *)(((UINT_PTR)p + 3) & ~3);
+}
+
+
+static BOOL DIALOG_CreateControls32(HWND hwnd, LPCSTR tmpl, const DLG_TEMPLATE *dlgTemplate,
+       HINSTANCE hInst, struct newresource *res)
+{
+       DIALOGINFO *dlgInfo;
+       DLG_CONTROL_INFO info;
+       HWND hwndCtrl, hwndDefButton = 0;
+       INT items = dlgTemplate->nbItems;
+
+       if (!(dlgInfo = GETDLGINFO(res)))
+               return FALSE;
+
+       while (items--)
+       {
+               tmpl = (LPCSTR)DIALOG_GetControl32((const WORD *)tmpl, &info, dlgTemplate->dialogEx);
+               info.style &= ~WS_POPUP;
+               info.style |= WS_CHILD;
+
+               if (info.style & WS_BORDER)
+               {
+                       info.style &= ~WS_BORDER;
+                       info.exStyle |= WS_EX_CLIENTEDGE;
+               }
+
+               int x = MulDiv(info.x, dlgInfo->xBaseUnit, 4);
+               int y = MulDiv(info.y, dlgInfo->yBaseUnit, 8);
+               int w = MulDiv(info.cx, dlgInfo->xBaseUnit, 4);
+               int h = MulDiv(info.cy, dlgInfo->yBaseUnit, 8);
+
+               hwndCtrl = CreateWindowEx(info.exStyle | WS_EX_NOPARENTNOTIFY,
+                       info.className, info.windowName,
+                       info.style | WS_CHILD,
+                       x, y, w, h,
+                       hwnd, (HMENU)(ULONG_PTR)info.id,
+                       hInst, (LPVOID)info.data);
+
+               if (info.windowNameFree)
+               {
+                       HeapFree(GetProcessHeap(), 0, (LPVOID)info.windowName);
+               }
+
+               if (!hwndCtrl)
+               {
+                       write_log(_T("control %s %s creation failed\n"), info.className, info.windowName);
+                       if (dlgTemplate->style & DS_NOFAILCREATE)
+                               continue;
+                       return FALSE;
+               }
+
+               struct newreswnd *nrw = &res->hwnds[res->hwndcnt++];
+               nrw->hwnd = hwndCtrl;
+               nrw->x = x;
+               nrw->y = y;
+               nrw->w = w;
+               nrw->h = h;
+
+               /* Send initialisation messages to the control */
+               if (dlgInfo->hUserFont) SendMessage(hwndCtrl, WM_SETFONT,
+                       (WPARAM)dlgInfo->hUserFont, 0);
+               if (SendMessage(hwndCtrl, WM_GETDLGCODE, 0, 0) & DLGC_DEFPUSHBUTTON)
+               {
+                       /* If there's already a default push-button, set it back */
+                       /* to normal and use this one instead. */
+                       if (hwndDefButton)
+                               SendMessage(hwndDefButton, BM_SETSTYLE, BS_PUSHBUTTON, FALSE);
+                       hwndDefButton = hwndCtrl;
+                       dlgInfo->idResult = GetWindowLongPtrA(hwndCtrl, GWLP_ID);
+               }
+       }
+       return TRUE;
+}
+
+/***********************************************************************
+*           DIALOG_ParseTemplate32
+*
+* Fill a DLG_TEMPLATE structure from the dialog template, and return
+* a pointer to the first control.
+*/
+static LPCSTR DIALOG_ParseTemplate32(LPCSTR tmpl, DLG_TEMPLATE *result)
+{
+       const WORD *p = (const WORD *)tmpl;
+       WORD signature;
+       WORD dlgver;
+
+       dlgver = GET_WORD(p); p++;
+       signature = GET_WORD(p); p++;
+
+       if (dlgver == 1 && signature == 0xffff)  /* DIALOGEX resource */
+       {
+               result->dialogEx = TRUE;
+               result->helpId = GET_DWORD(p); p += 2;
+               result->exStyle = GET_DWORD(p); p += 2;
+               result->style = GET_DWORD(p); p += 2;
+       } else
+       {
+               result->style = GET_DWORD(p - 2);
+               result->dialogEx = FALSE;
+               result->helpId = 0;
+               result->exStyle = GET_DWORD(p); p += 2;
+       }
+       result->nbItems = GET_WORD(p); p++;
+       result->x = GET_WORD(p); p++;
+       result->y = GET_WORD(p); p++;
+       result->cx = GET_WORD(p); p++;
+       result->cy = GET_WORD(p); p++;
+
+       /* Get the menu name */
+
+       switch (GET_WORD(p))
+       {
+       case 0x0000:
+               result->menuName = NULL;
+               p++;
+               break;
+       case 0xffff:
+               result->menuName = (LPCWSTR)(UINT_PTR)GET_WORD(p + 1);
+               p += 2;
+               break;
+       default:
+               result->menuName = (LPCWSTR)p;
+               p += _tcslen(result->menuName) + 1;
+               break;
+       }
+
+       /* Get the class name */
+
+       switch (GET_WORD(p))
+       {
+       case 0x0000:
+               result->className = WC_DIALOG;
+               p++;
+               break;
+       case 0xffff:
+               result->className = (LPCWSTR)(UINT_PTR)GET_WORD(p + 1);
+               p += 2;
+               break;
+       default:
+               result->className = (LPCWSTR)p;
+               p += _tcslen(result->className) + 1;
+               break;
+       }
+
+       /* Get the window caption */
+
+       result->caption = (LPCWSTR)p;
+       p += _tcslen(result->caption) + 1;
+
+       /* Get the font name */
+
+       result->pointSize = 0;
+       result->faceName = NULL;
+       result->weight = FW_DONTCARE;
+       result->italic = FALSE;
+
+       if (result->style & DS_SETFONT)
+       {
+               result->pointSize = GET_WORD(p);
+               p++;
+
+               /* If pointSize is 0x7fff, it means that we need to use the font
+                * in NONCLIENTMETRICSW.lfMessageFont, and NOT read the weight,
+                * italic, and facename from the dialog template.
+                */
+               if (result->pointSize == 0x7fff)
+               {
+                       /* We could call SystemParametersInfo here, but then we'd have
+                        * to convert from pixel size to point size (which can be
+                        * imprecise).
+                        */
+               } else
+               {
+                       if (result->dialogEx)
+                       {
+                               result->weight = GET_WORD(p); p++;
+                               result->italic = LOBYTE(GET_WORD(p)); p++;
+                       }
+                       result->faceName = (LPCWSTR)p;
+                       p += _tcslen(result->faceName) + 1;
+               }
+       }
+
+       /* First control is on dword boundary */
+       return (LPCSTR)((((UINT_PTR)p) + 3) & ~3);
+}
+
+static int createcontrols(HWND hwnd, struct newresource *res)
+{
+       LPCVOID dlgTemplate = DIALOG_ParseTemplate32((LPCSTR)res->resource, &res->dtmpl);
+       DLG_TEMPLATE *tmpl = &res->dtmpl;
+
+       if (DIALOG_CreateControls32(hwnd, (LPCSTR)dlgTemplate, &res->dtmpl, res->inst, res))
+       {
+               /* Send initialisation messages and set focus */
+
+               if (res->dlgproc)
+               {
+                       HWND focus = GetNextDlgTabItem(hwnd, 0, FALSE);
+                       if (!focus)
+                               focus = GetNextDlgGroupItem(hwnd, 0, FALSE);
+                       if (SendMessage(hwnd, WM_INITDIALOG, (WPARAM)focus, res->param) && IsWindow(hwnd) &&
+                               ((~tmpl->style & DS_CONTROL) || (tmpl->style & WS_VISIBLE)))
+                       {
+                               /* By returning TRUE, app has requested a default focus assignment.
+                                * WM_INITDIALOG may have changed the tab order, so find the first
+                                * tabstop control again. */
+                               focus = GetNextDlgTabItem(hwnd, 0, FALSE);
+                               if (!focus)
+                                       focus = GetNextDlgGroupItem(hwnd, 0, FALSE);
+                               if (focus)
+                               {
+                                       if (SendMessage(focus, WM_GETDLGCODE, 0, 0) & DLGC_HASSETSEL)
+                                               SendMessage(focus, EM_SETSEL, 0, MAXLONG);
+                                       SetFocus(focus);
+                               } else
+                               {
+                                       if (!(tmpl->style & WS_CHILD))
+                                               SetFocus(hwnd);
+                               }
+                       }
+                       //// ReactOS see 43396, Fixes setting focus on Open and Close dialogs to the FileName edit control in OpenOffice.
+                       //// This now breaks test_SaveRestoreFocus.
+                                               //DEFDLG_SaveFocus( hwnd );
+                       ////
+               }
+               //// ReactOS Rev 30613 & 30644
+               if (!(GetWindowLongPtrW(hwnd, GWL_STYLE) & WS_CHILD))
+                       SendMessage(hwnd, WM_CHANGEUISTATE, MAKEWPARAM(UIS_INITIALIZE, 0), 0);
+               ////
+               if (tmpl->style & WS_VISIBLE && !(GetWindowLongPtrW(hwnd, GWL_STYLE) & WS_VISIBLE))
+               {
+                       ShowWindow(hwnd, SW_SHOWNORMAL);   /* SW_SHOW doesn't always work */
+                       UpdateWindow(hwnd);
+               }
+               return 1;
+       }
+       return 0;
+}
+
+
+/***********************************************************************
+ *           DIALOG_CreateIndirect
+ *       Creates a dialog box window
+ *
+ *       modal = TRUE if we are called from a modal dialog box.
+ *       (it's more compatible to do it here, as under Windows the owner
+ *       is never disabled if the dialog fails because of an invalid template)
+ */
+static HWND DIALOG_CreateIndirect(HINSTANCE hInst, LPCVOID dlgTemplate,
+       HWND owner, DLGPROC dlgProc, LPARAM param,
+       HWND *modal_owner, struct newresource *res)
+{
+       HWND hwnd;
+       RECT rect;
+       POINT pos;
+       SIZE size;
+       DLG_TEMPLATE *tmpl = &res->dtmpl;
+       DIALOGINFO *dlgInfo = NULL;
+       DWORD units = GetDialogBaseUnits();
+       HWND disabled_owner = NULL;
+       HMENU hMenu = 0;
+       HFONT hUserFont = 0;
+       UINT flags = 0;
+       UINT xBaseUnit = LOWORD(units);
+       UINT yBaseUnit = HIWORD(units);
+       int fontpixels = 8;
+
+       /* Parse dialog template */
+
+       if (!dlgTemplate)
+               return 0;
+       dlgTemplate = DIALOG_ParseTemplate32((LPCSTR)dlgTemplate, tmpl);
+
+       res->dlgproc = dlgProc;
+       res->param = param;
+
+       /* Load menu */
+
+       if (tmpl->menuName)
+               hMenu = LoadMenu(hInst, tmpl->menuName);
+
+       /* Create custom font if needed */
+
+       if (tmpl->style & DS_SETFONT)
+       {
+               HDC dc = GetDC(0);
+
+               if (tmpl->pointSize == 0x7fff)
+               {
+                       /* We get the message font from the non-client metrics */
+                       NONCLIENTMETRICSW ncMetrics;
+
+                       ncMetrics.cbSize = sizeof(NONCLIENTMETRICSW);
+                       if (SystemParametersInfo(SPI_GETNONCLIENTMETRICS,
+                               sizeof(NONCLIENTMETRICSW), &ncMetrics, 0))
+                       {
+                               hUserFont = CreateFontIndirect(&ncMetrics.lfMessageFont);
+                       }
+               } else
+               {
+                       int xx, yy;
+                       if (res->parent) {
+                               xx = res->parent->x + res->parent->width / 2;
+                               yy = res->parent->y + res->parent->height / 2;
+                       } else {
+                               getguipos(&xx, &yy);
+                               xx += 128;
+                               yy += 128;
+                       }
+                       POINT pt;
+                       pt.x = xx;
+                       pt.y = yy;
+                       HMONITOR m = MonitorFromPoint(pt, MONITOR_DEFAULTTOPRIMARY);
+                       int dpi = getdpiformonitor(m);
+                       /* We convert the size to pixels and then make it -ve.  This works
+                        * for both +ve and -ve template.pointSize */
+                       fontpixels = MulDiv(tmpl->pointSize, dpi, 72);
+                       hUserFont = CreateFont(-fontpixels, 0, 0, 0, tmpl->weight,
+                               tmpl->italic, FALSE, FALSE, DEFAULT_CHARSET, 0, 0,
+                               PROOF_QUALITY, FF_DONTCARE,
+                               tmpl->faceName);
+                       res->fontsize = fontpixels;
+               }
+
+               if (hUserFont)
+               {
+                       SIZE charSize;
+                       HFONT hOldFont = (HFONT)SelectObject(dc, hUserFont);
+                       charSize.cx = GdiGetCharDimensions(dc, NULL, &charSize.cy);
+                       if (charSize.cx)
+                       {
+                               xBaseUnit = charSize.cx;
+                               yBaseUnit = charSize.cy;
+                       }
+                       SelectObject(dc, hOldFont);
+               }
+               ReleaseDC(0, dc);
+       }
+
+       /* Create dialog main window */
+
+       SetRect(&rect, 0, 0, MulDiv(tmpl->cx, xBaseUnit, 4), MulDiv(tmpl->cy, yBaseUnit, 8));
+       if (tmpl->style & DS_CONTROL)
+               tmpl->style &= ~(WS_CAPTION | WS_SYSMENU);
+       tmpl->style |= DS_3DLOOK;
+       if (tmpl->style & DS_MODALFRAME)
+               tmpl->exStyle |= WS_EX_DLGMODALFRAME;
+       if ((tmpl->style & DS_CONTROL) || !(tmpl->style & WS_CHILD))
+               tmpl->exStyle |= WS_EX_CONTROLPARENT;
+       AdjustWindowRectEx(&rect, tmpl->style, (hMenu != 0), tmpl->exStyle);
+       pos.x = rect.left;
+       pos.y = rect.top;
+       size.cx = rect.right - rect.left;
+       size.cy = rect.bottom - rect.top;
+
+       if (!res->parent) {
+               size.cx = res->width;
+               size.cy = res->height;
+       }
+
+       if (tmpl->x == CW_USEDEFAULT16)
+       {
+               pos.x = pos.y = CW_USEDEFAULT;
+       }
+       else
+       {
+               HMONITOR monitor = 0;
+               MONITORINFO mon_info;
+
+               mon_info.cbSize = sizeof(mon_info);
+               if (tmpl->style & DS_CENTER)
+               {
+                       monitor = MonitorFromWindow(owner ? owner : GetActiveWindow(), MONITOR_DEFAULTTOPRIMARY);
+                       GetMonitorInfoW(monitor, &mon_info);
+                       pos.x = (mon_info.rcWork.left + mon_info.rcWork.right - size.cx) / 2;
+                       pos.y = (mon_info.rcWork.top + mon_info.rcWork.bottom - size.cy) / 2;
+               }
+               else if (tmpl->style & DS_CENTERMOUSE)
+               {
+                       GetCursorPos(&pos);
+                       monitor = MonitorFromPoint(pos, MONITOR_DEFAULTTOPRIMARY);
+                       GetMonitorInfoW(monitor, &mon_info);
+               }
+               else
+               {
+                       pos.x += MulDiv(tmpl->x, xBaseUnit, 4);
+                       pos.y += MulDiv(tmpl->y, yBaseUnit, 8);
+                       //
+                       // REACTOS : Need an owner to be passed!!!
+                       //
+                       if (!(tmpl->style & (WS_CHILD | DS_ABSALIGN)) && owner)
+                               ClientToScreen(owner, &pos);
+               }
+       }
+
+       res->unitx = MulDiv(8, xBaseUnit, 4);
+       res->unity = MulDiv(8, yBaseUnit, 8);
+
+       if (!res->parent) {
+               int xx, yy;
+               getguipos(&xx, &yy);
+               pos.x += xx;
+               pos.y += yy;
+       }
+
+       res->width = size.cx;
+       res->height = size.cy;
+       res->x = pos.x;
+       res->y = pos.y;
+
+       hwnd = CreateWindowEx(tmpl->exStyle, tmpl->className, tmpl->caption,
+               tmpl->style & ~WS_VISIBLE, pos.x, pos.y, size.cx, size.cy,
+               owner, hMenu, hInst, NULL);
+
+       res->hwnd = hwnd;
+
+       if (!hwnd)
+       {
+               if (hUserFont)
+                       DeleteObject(hUserFont);
+               if (hMenu)
+                       DestroyMenu(hMenu);
+               if (disabled_owner)
+                       EnableWindow(disabled_owner, TRUE);
+               return 0;
+       }
+
+       if (res->parent) {
+               struct newreswnd *nrh = &res->parent->hwnds[res->parent->hwndcnt++];
+               nrh->hwnd = hwnd;
+               nrh->x = pos.x;
+               nrh->y = pos.y;
+               nrh->w = size.cx;
+               nrh->h = size.cy;
+       }
+
+       /* moved this from the top of the method to here as DIALOGINFO structure
+       will be valid only after WM_CREATE message has been handled in DefDlgProc
+       All the members of the structure get filled here using temp variables */
+       dlgInfo = DIALOG_get_info(res, TRUE);
+       // ReactOS
+       if (dlgInfo == NULL)
+       {
+               if (hUserFont)
+                       DeleteObject(hUserFont);
+               if (hMenu)
+                       DestroyMenu(hMenu);
+               if (disabled_owner)
+                       EnableWindow(disabled_owner, TRUE);
+               return 0;
+       }
+       //
+       dlgInfo->hwndFocus = 0;
+       dlgInfo->hUserFont = hUserFont;
+       dlgInfo->hMenu = hMenu;
+       dlgInfo->xBaseUnit = xBaseUnit;
+       dlgInfo->yBaseUnit = yBaseUnit;
+       dlgInfo->flags = flags;
+
+       if (tmpl->helpId)
+               SetWindowContextHelpId(hwnd, tmpl->helpId);
+
+       SetWindowLongPtrW(hwnd, DWLP_DLGPROC, (ULONG_PTR)dlgProc);
+
+       if (dlgProc && dlgInfo->hUserFont)
+               SendMessage(hwnd, WM_SETFONT, (WPARAM)dlgInfo->hUserFont, 0);
+
+       /* Create controls */
+       if (createcontrols(hwnd, res))
+               return hwnd;
+
+       if (disabled_owner) EnableWindow(disabled_owner, TRUE);
+       if (IsWindow(hwnd))
+       {
+               DestroyWindow(hwnd);
+       }
+       return 0;
+}
+
+HWND x_CreateDialogIndirectParam(
+       HINSTANCE hInstance,
+       LPCDLGTEMPLATE lpTemplate,
+       HWND hWndParent,
+       DLGPROC lpDialogFunc,
+       LPARAM lParamInit,
+       struct newresource *res)
+{
+       return DIALOG_CreateIndirect(hInstance, lpTemplate, hWndParent, lpDialogFunc, lParamInit, NULL, res);
+}
+
+
 static int align (double f)
 {
        int v = (int)(f + 0.5);
@@ -101,7 +762,6 @@ static int mmy (int v)
        return align ((v * multy) / 100.0 + 0.5);
 }
 
-
 static BYTE *skiptextone (BYTE *s)
 {
        s -= sizeof (WCHAR);
@@ -144,159 +804,69 @@ static void modifytemplatefont (DLGTEMPLATEEX *d, DLGTEMPLATEEX_END *d2)
 }
 }
 
-static void modifyitem (struct newresource *nr, DLGTEMPLATEEX *d, DLGTEMPLATEEX_END *d2, DLGITEMTEMPLATEEX *dt, int id)
+static void scalechildwindows(struct newresource *nr)
 {
-       int wc = 0;
-
-       if (dt->windowClass[0] == 0xffff)
-               wc = dt->windowClass[1];
+       if (!nr)
+               return;
 
-       if (wc == 0x0085) {// combo box
-               if (nr->setparamcnt < MAX_GUIIDPARAMS) {
-                       nr->setparam_id[nr->setparamcnt] = dt->id;
-                       nr->setparamcnt++;
-               }
+       if (nr->fontchanged) {
+               SendMessage(nr->hwnd, WM_SETFONT, (WPARAM)nr->dinfo.hUserFont, 0);
        }
 
-       if (dt->windowClass[0] != 0xffff) {
-               if (!_tcsicmp (dt->windowClass, WC_LISTVIEWW) || !_tcsicmp (dt->windowClass, WC_TREEVIEWW)) {
-                       if (nr->listviewcnt < MAX_GUIIDPARAMS) {
-                               nr->listviews_id[nr->listviewcnt] = dt->id;
-                               nr->listviewcnt++;
-                       }
-               }
-       }
+       for (int i = 0; i < nr->hwndcnt; i++) {
+               struct newreswnd *nw = &nr->hwnds[i];
 
-}
+               int x = nw->x;
+               x *= multx;
+               x /= 100;
 
-struct rescalestruct
-{
-       HWND main, sub;
-       int dlgid;
-       struct newresource *nr;
-       struct dlgcontext *dctx;
-};
+               int y = nw->y;
+               y *= multy;
+               y /= 100;
 
-static struct dlgstore dstore_main[MAX_DLGID];
-static int dlgstorecnt_main;
+               int w = nw->w;
+               w *= multx;
+               w /= 100;
 
-static BOOL CALLBACK rescaleproc(HWND hwnd, LPARAM lp)
-{
-       RECT rs;
-       struct rescalestruct *rss = (struct rescalestruct *)lp;
-       struct newresource *nr = rss->nr;
-       struct dlgcontext *dctx = rss->dctx;
-       HWND parent = GetParent(hwnd);
-
-       // if not parent of sub panel or main panel: skip because for example
-       // combo boxes have child windows that should not be moved or resized.
-       if (parent != rss->main && parent != rss->sub)
-               return TRUE;
-
-       GetClientRect(hwnd, &rs);
-       MapWindowPoints(hwnd, parent, (LPPOINT)&rs, 2);
-
-       int wc = 0;
-       bool found = false;
-       if (parent == rss->main) {
-               for (int i = 0; i < dlgstorecnt_main; i++) {
-                       struct dlgstore *dsptr = &dstore_main[i];
-                       if (dsptr->h == hwnd) {
-                               rs = dsptr->r;
-                               found = true;
-                               break;
-                       }
-               }
-               if (!found) {
-                       struct dlgstore *dsptr = &dstore_main[dlgstorecnt_main++];
-                       dsptr->h = hwnd;
-                       dsptr->r = rs;
+               int h = nw->h;
+               h *= multy;
+               h /= 100;
+
+               if (nr->fontchanged) {
+                       SendMessage(nw->hwnd, WM_SETFONT, (WPARAM)nr->dinfo.hUserFont, 0);
                }
-       } else {
-               for (int i = 0; i < dctx->dlgstorecnt; i++) {
-                       struct dlgstore *dsptr = &dctx->dstore[i];
-                       if (dsptr->h == hwnd) {
-                               rs = dsptr->r;
-                               found = true;
-                               break;
-                       }
+               bool disable = false;
+               if (!IsWindowEnabled(nw->hwnd)) {
+                       EnableWindow(nw->hwnd, TRUE);
+                       disable = true;
                }
-               if (!found) {
-                       struct dlgstore *dsptr = &dctx->dstore[dctx->dlgstorecnt++];
-                       dsptr->h = hwnd;
-                       dsptr->r = rs;
+               SetFocus(nw->hwnd);
+               SetWindowPos(nw->hwnd, HWND_TOP, x, y, w, h, SWP_NOACTIVATE | SWP_NOREDRAW | SWP_NOZORDER | SWP_NOOWNERZORDER | SWP_NOCOPYBITS | SWP_DEFERERASE);
+               if (disable) {
+                       EnableWindow(nw->hwnd, FALSE);
                }
        }
 
-       int x = rs.left;
-       x *= multx;
-       x /= 100;
-
-       int y = rs.top;
-       y *= multy;
-       y /= 100;
-
-       int xe = rs.right;
-       xe *= multx;
-       xe += 99;
-       xe /= 100;
-
-       int ye = rs.bottom;
-       if (wc != 0x85) {
-               ye *= multy;
-               ye += 99;
-               ye /= 100;
-       } else {
-               ye = y + (rs.bottom - rs.top);
-       }
-
-       SetWindowPos(hwnd, HWND_TOP, x, y, xe - x, ye - y, SWP_NOACTIVATE | SWP_NOREDRAW | SWP_NOZORDER | SWP_NOOWNERZORDER | SWP_NOCOPYBITS | SWP_DEFERERASE);
-
-       return TRUE;
-}
-
-static void openfont(bool force)
-{
-       HDC hdc;
-       int size;
-       int lm = 72;
-
-       if (listviewfont && !force)
-               return;
-       if (listviewfont)
-               DeleteObject(listviewfont);
-
-       hdc = GetDC(NULL);
-
-       if (!dpi_aware_v2) {
-               lm = GetDeviceCaps(hdc, LOGPIXELSY);
+       HWND hwnd = nr->hwnd;
+       HWND focus = GetNextDlgTabItem(hwnd, 0, FALSE);
+       if (!focus)
+               focus = GetNextDlgGroupItem(hwnd, 0, FALSE);
+       if (focus)
+       {
+               if (SendMessage(focus, WM_GETDLGCODE, 0, 0) & DLGC_HASSETSEL)
+                       SendMessage(focus, EM_SETSEL, 0, MAXLONG);
+               SetFocus(focus);
+       } else
+       {
+               if (!(nr->dtmpl.style & WS_CHILD))
+                       SetFocus(hwnd);
        }
-
-       size = -MulDiv(fontsize_list, lm, 72);
-       listviewfont = CreateFont(size, 0, 0, 0, fontweight_list, (fontstyle_list & ITALIC_FONTTYPE) != 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, fontname_list);
-       HGDIOBJ o = SelectObject(hdc, listviewfont);
-       memset(&listview_tm, 0, sizeof listview_tm);
-       listview_tm.tmAveCharWidth = 8;
-       GetTextMetrics(hdc, &listview_tm);
-       SelectObject(hdc, o);
-
-       ReleaseDC(NULL, hdc);
 }
 
 static void scaleresource_setfont(struct newresource *nr, HWND hDlg)
 {
-       if (nr->listviewcnt) {
-               if (!listviewfont) {
-                       openfont(false);
-                       if (!listviewfont)
-                               return;
-               }
-               for (int i = 0; i < nr->listviewcnt; i++) {
-                       HWND hwnd = GetDlgItem(hDlg, nr->listviews_id[i]);
-                       if (hwnd)
-                               SendMessage(hwnd, WM_SETFONT, WPARAM(listviewfont), FALSE);
-               }
-       }
+       if (!nr)
+               return;
        if (os_vista) {
                for (int i = 0; i < nr->setparamcnt; i++) {
                        HWND hwnd = GetDlgItem(hDlg, nr->setparam_id[i]);
@@ -309,75 +879,88 @@ static void scaleresource_setfont(struct newresource *nr, HWND hDlg)
        }
 }
 
-void rescaleresource(struct newresource *nr, struct dlgcontext *dctx, HWND hwnd, HWND subhwnd)
+void rescaleresource(struct newresource *nr, bool full)
 {
-       struct rescalestruct rss;
-
-       scaleresource_setfont(nr, subhwnd);
-       scaleresource_setfont(nr, hwnd);
+       if (full) {
+               SetWindowRedraw(nr->hwnd, FALSE);
+       }
 
        TITLEBARINFO tbi = { 0 };
        tbi.cbSize = sizeof(TITLEBARINFO);
-       GetTitleBarInfo(hwnd, &tbi);
+       GetTitleBarInfo(nr->hwnd, &tbi);
 
        int height = tbi.rcTitleBar.bottom - tbi.rcTitleBar.top;
 
-       RECT rw;
-       GetWindowRect(hwnd, &rw);
-
-       if (scaleresource_reset) {
-               RECT ru = { 0, 0, 8, 8 };
-               MapDialogRect(hwnd, &ru);
-               dux = ru.right;
-               duy = ru.bottom;
-               scaleresource_reset = 0;
-       }
-
        WINDOWINFO pwi = { 0 };
        pwi.cbSize = sizeof(WINDOWINFO);
-       GetWindowInfo(hwnd, &pwi);
+       GetWindowInfo(nr->hwnd, &pwi);
 
-       SetWindowPos(hwnd, NULL, 0, 0, scaleresource_width, scaleresource_height, SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOZORDER | SWP_NOREDRAW | SWP_NOCOPYBITS | SWP_DEFERERASE);
-       
        float neww = scaleresource_width - pwi.cxWindowBorders * 2;
-       float oldw = (530.0 * dux) / 8.0;
+       float oldw = (530.0 * nr->unitx) / 8.0;
        multx = neww * 100.0 / oldw;
 
        float newh = scaleresource_height - height - pwi.cyWindowBorders * 2;
-       float oldh = (345.0 * duy) / 8.0;
+       float oldh = (345.0 * nr->unity) / 8.0;
        multy = newh * 100.0 / oldh;
 
-       rss.main = hwnd;
-       rss.sub = subhwnd;
-       rss.nr = nr;
-       rss.dctx = dctx;
-       EnumChildWindows(hwnd, rescaleproc, (LPARAM)&rss);
+       HMONITOR m = MonitorFromWindow(nr->hwnd, MONITOR_DEFAULTTOPRIMARY);
+       int dpi = getdpiformonitor(m);
+       DLG_TEMPLATE *tmpl = &nr->dtmpl;
+       int pixels = MulDiv(tmpl->pointSize, dpi, 72);
+       if (pixels != nr->fontsize) {
+               nr->fontchanged = true;
+               if (nr->dinfo.hUserFont)
+                       DeleteObject(nr->dinfo.hUserFont);
+               nr->dinfo.hUserFont = CreateFont(-pixels, 0, 0, 0, tmpl->weight,
+                       tmpl->italic, FALSE, FALSE, DEFAULT_CHARSET, 0, 0,
+                       PROOF_QUALITY, FF_DONTCARE, tmpl->faceName);
+       }
 
-       RECT rf, rpf;
-       HWND pf = GetDlgItem(hwnd, IDC_PANEL_FRAME);
-       GetClientRect(subhwnd, &rpf);
-       GetClientRect(pf, &rf);
-       MapWindowPoints(pf, hwnd, (LPPOINT)& rf, 1);
-       SetWindowPos(subhwnd, HWND_TOP, rf.left, rf.top + (rf.bottom - rpf.bottom) / 2, 0, 0, SWP_NOSIZE | SWP_NOOWNERZORDER);
+       dialog_inhibit = 1;
+       scalechildwindows(nr);
+       if (nr->child) {
+               if (nr->fontchanged) {
+                       if (nr->child->dinfo.hUserFont)
+                               DeleteObject(nr->child->dinfo.hUserFont);
+                       nr->child->dinfo.hUserFont = CreateFont(-pixels, 0, 0, 0, tmpl->weight,
+                               tmpl->italic, FALSE, FALSE, DEFAULT_CHARSET, 0, 0,
+                               PROOF_QUALITY, FF_DONTCARE, tmpl->faceName);
+               }
+               scalechildwindows(nr->child);
+
+               RECT rf, rpf;
+               HWND pf = GetDlgItem(nr->hwnd, IDC_PANEL_FRAME);
+               GetClientRect(nr->child->hwnd, &rpf);
+               GetClientRect(pf, &rf);
+               MapWindowPoints(pf, nr->hwnd, (LPPOINT)&rf, 1);
+               SetWindowPos(nr->child->hwnd, HWND_TOP, rf.left + (rf.right - rpf.right) / 2, rf.top + (rf.bottom - rpf.bottom) / 2, 0, 0, SWP_NOSIZE | SWP_NOOWNERZORDER);
+
+               SendMessage(nr->child->hwnd, WM_NEXTDLGCTL, (WPARAM)nr->child->hwnds[0].hwnd, TRUE);
+
+               GetWindowRect(pf, &rf);
+               InvalidateRect(nr->hwnd, &rf, TRUE);
+       }
 
-       RedrawWindow(hwnd, NULL, NULL, RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN);
+       nr->fontsize = pixels;
+       nr->fontchanged = false;
+       dialog_inhibit = 0;
+
+       if (full) {
+               SetWindowRedraw(nr->hwnd, TRUE);
+               RedrawWindow(nr->hwnd, NULL, NULL, RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN);
+       }
 }
 
 void scaleresource_setsize(int w, int h, int fullscreen)
 {
        if (w < 0 || h < 0) {
-               scaleresource_reset = 1;
-               for (int i = 0; i < dlgstorecnt_main; i++) {
-                       dstore_main[i].h = NULL;
-               }
-               dlgstorecnt_main = 0;
                return;
        }
        scaleresource_width = w;
        scaleresource_height = h;
 }
 
-static struct newresource *scaleresource2 (struct newresource *res, HWND parent, int resize, int fullscreen, DWORD exstyle, int dlgid)
+static int scaleresource2 (struct newresource *res, HWND parent, int resize, int fullscreen, DWORD exstyle, int dlgid)
 {
        static int main_width, main_height;
 
@@ -385,30 +968,24 @@ static struct newresource *scaleresource2 (struct newresource *res, HWND parent,
        DLGTEMPLATEEX_END *d2, *s2;
        DLGITEMTEMPLATEEX *dt;
        BYTE *p, *p2, *ps, *ps2;
-       struct newresource *ns;
 
        res->listviewcnt = 0;
        res->setparamcnt = 0;
+       res->hwndcnt = 0;
 
-       d = (DLGTEMPLATEEX*)res->resource;
-       d2 = (DLGTEMPLATEEX_END*)res->resource;
+       s = (DLGTEMPLATEEX*)res->sourceresource;
 
-       if (d->dlgVer != 1 || d->signature != 0xffff)
+       if (s->dlgVer != 1 || s->signature != 0xffff)
                return 0;
-       if (!(d->style & (DS_SETFONT | DS_SHELLFONT)))
+       if (!(s->style & (DS_SETFONT | DS_SHELLFONT)))
                return 0;
 
-       ns = xcalloc (struct newresource, 1);
-       if (!ns)
-               return 0;
-       ns->inst = res->inst;
-       ns->size = res->size;
-       ns->tmpl = res->tmpl;
-       ns->resource = (LPCDLGTEMPLATEW)xmalloc (uae_u8, ns->size + 32);
-       memcpy ((void*)ns->resource, res->resource, ns->size);
+       res->size = res->sourcesize + 32;
+       res->resource = (LPCDLGTEMPLATEW)xmalloc (uae_u8, res->size);
+       memcpy ((void*)res->resource, res->sourceresource, res->sourcesize);
 
-       d = (DLGTEMPLATEEX*)ns->resource;
-       s = (DLGTEMPLATEEX*)res->resource;
+       d = (DLGTEMPLATEEX*)res->resource;
+       s = (DLGTEMPLATEEX*)res->sourceresource;
 
        int width = d->cx;
        int height = d->cy;
@@ -428,13 +1005,13 @@ static struct newresource *scaleresource2 (struct newresource *res, HWND parent,
        }
        d->exStyle |= exstyle;
 
-       d2 = (DLGTEMPLATEEX_END*)ns->resource;
+       d2 = (DLGTEMPLATEEX_END*)res->resource;
        p = (BYTE*)d + sizeof (DLGTEMPLATEEX);
        p = skiptext (p);
        p = skiptext (p);
        p = skiptext (p);
 
-       s2 = (DLGTEMPLATEEX_END*)res->resource;
+       s2 = (DLGTEMPLATEEX_END*)res->sourceresource;
        ps = (BYTE*)s2 + sizeof (DLGTEMPLATEEX);
        ps = skiptext (ps);
        ps = skiptext (ps);
@@ -458,12 +1035,12 @@ static struct newresource *scaleresource2 (struct newresource *res, HWND parent,
        p = skiptextone (p);
        p = todword (p);
 
-       memcpy (p, ps2, ns->size - (ps2 - (BYTE*)res->resource));
+       int remain = ps2 - (BYTE*)res->sourceresource;
+       memcpy (p, ps2, res->sourcesize - remain);
 
        int id2 = 0;
        for (int i = 0; i < d->cDlgItems; i++) {
                dt = (DLGITEMTEMPLATEEX*)p;
-               modifyitem(res, d, d2, dt, ns->tmpl);
                p += sizeof (DLGITEMTEMPLATEEX);
                p = skiptextone (p);
                p = skiptext (p);
@@ -471,13 +1048,10 @@ static struct newresource *scaleresource2 (struct newresource *res, HWND parent,
                p += sizeof (WORD);
                p = todword (p);
        }
-
-       ns->width = width;
-       ns->height = height;
-       return ns;
+       return 1;
 }
 
-struct newresource *scaleresource (struct newresource *res, struct dlgcontext *dctx, HWND parent, int resize, int fullscreen, DWORD exstyle, int dlgid)
+int scaleresource (struct newresource *res, struct dlgcontext *dctx, HWND parent, int resize, int fullscreen, DWORD exstyle, int dlgid)
 {
        dctx->dlgstorecnt = 0;
        return scaleresource2(res, parent, resize, fullscreen, exstyle, dlgid);
@@ -485,10 +1059,11 @@ struct newresource *scaleresource (struct newresource *res, struct dlgcontext *d
 
 void freescaleresource (struct newresource *ns)
 {
-       if (!ns)
+       if (!ns->resource)
                return;
        xfree ((void*)ns->resource);
-       xfree (ns);
+       ns->resource = NULL;
+       ns->size = 0;
 }
 
 int getscaledfontsize(int size)
@@ -567,11 +1142,11 @@ static void regqueryfont (UAEREG *reg, const TCHAR *prefix, const TCHAR *name, T
        fontweight = _tstoi (p3);
 
        if (fontsize == 0)
-               fontsize = 8;
+               fontsize = DEFAULT_FONTSIZE;
        if (fontsize < 5)
                fontsize = 5;
-       if (fontsize > 20)
-               fontsize = 20;
+       if (fontsize > 30)
+               fontsize = 30;
        *pfontsize = fontsize;
 
        *pfontstyle = fontstyle;
@@ -579,7 +1154,7 @@ static void regqueryfont (UAEREG *reg, const TCHAR *prefix, const TCHAR *name, T
        *pfontweight = fontweight;
 }
 
-void scaleresource_setdefaults (void)
+void scaleresource_setdefaults(HWND hwnd)
 {
        setdeffont ();
        for (int i = 0; i < MAX_GUI_FONTS; i++) {
@@ -587,54 +1162,28 @@ void scaleresource_setdefaults (void)
                _stprintf (tmp, _T("%s%s"), fontreg[i], fontprefix);
                regdelete (NULL, tmp);
        }
-       openfont (true);
 }
 
-void scaleresource_init (const TCHAR *prefix, int fullscreen)
+void scaleresource_modification(HWND hwnd)
+{
+}
+
+void scaleresource_init(const TCHAR *prefix, int fullscreen)
 {
        if (os_vista)
                font_vista_ok = 1;
 
        fontprefix = prefix;
 
-       setdeffont ();
+       setdeffont();
 
        regqueryfont (NULL, fontprefix, fontreg[0], fontname_gui, &fontsize_gui, &fontstyle_gui, &fontweight_gui);
        regqueryfont (NULL, fontprefix, fontreg[1], fontname_list, &fontsize_list, &fontstyle_list, &fontweight_list);
 
        //write_log (_T("GUI font %s:%d:%d:%d\n"), fontname_gui, fontsize_gui, fontstyle_gui, fontweight_gui);
        //write_log (_T("List font %s:%d:%d:%d\n"), fontname_list, fontsize_list, fontstyle_list, fontweight_list);
-
-       openfont (true);
 }
 
-#if 0
-static void sizefont (HWND hDlg, const TCHAR *name, int size, int style, int weight, int *width, int *height)
-{
-       /* ARGH!!! */
-
-       HDC hdc = GetDC (hDlg);
-       size = -MulDiv (size, lpy, 72);
-       HFONT font = CreateFont (size, 0, 0, 0, weight,
-               (style & ITALIC_FONTTYPE) != 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, name);
-       if (!font) {
-               *width = 8;
-               *height = 8;
-       } else {
-               HFONT hFontOld = (HFONT)SelectObject (hdc, font);
-               TEXTMETRIC tm;
-               SIZE fsize;
-               GetTextMetrics (hdc, &tm);
-               GetTextExtentPoint32 (hdc, _T("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"), 52, &fsize);
-               *width = (fsize.cx / 26 + 1) / 2;
-               *height = tm.tmHeight;
-               SelectObject (hdc, hFontOld);
-               DeleteObject (font);
-       }
-       ReleaseDC (hDlg, hdc);
-}
-#endif
-
 int scaleresource_choosefont (HWND hDlg, int fonttype)
 {
        CHOOSEFONT cf = { 0 };
@@ -658,14 +1207,12 @@ int scaleresource_choosefont (HWND hDlg, int fonttype)
        cf.lpLogFont = &lf;
        cf.nFontType = REGULAR_FONTTYPE;
 
-       if (!dpi_aware_v2) {
-               HDC hdc = GetDC(NULL);
-               lm = GetDeviceCaps(hdc, LOGPIXELSY);
-               ReleaseDC(NULL, hdc);
-       }
+       HDC hdc = GetDC(NULL);
+       lm = GetDeviceCaps(hdc, LOGPIXELSY);
+       ReleaseDC(NULL, hdc);
 
        _tcscpy (lf.lfFaceName, fontname[fonttype]);
-       lf.lfHeight = -MulDiv (*fontsize[fonttype], lm, 72);
+       lf.lfHeight = -MulDiv(*fontsize[fonttype], lm, 72);
        lf.lfWeight = *fontweight[fonttype];
        lf.lfItalic = (*fontstyle[fonttype] & ITALIC_FONTTYPE) != 0;
 
@@ -683,8 +1230,6 @@ int scaleresource_choosefont (HWND hDlg, int fonttype)
 
        regsetfont (NULL, fontprefix, fontreg[fonttype], fontname[fonttype], *fontsize[fonttype], *fontstyle[fonttype], *fontweight[fonttype]);
 
-       openfont (true);
-
        return 1;
 }
 
@@ -738,8 +1283,6 @@ extern int gui_fullscreen;
 
 void getextendedframebounds(HWND hwnd, RECT *r)
 {
-       r->left = r->right = 0;
-       r->top = r->bottom = 0;
        if (!pDwmGetWindowAttribute && !dwmapihandle && os_vista) {
                dwmapihandle = LoadLibrary(_T("dwmapi.dll"));
                if (dwmapihandle)