]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
GUI updates.
authorToni Wilen <twilen@winuae.net>
Thu, 27 Jul 2017 18:02:31 +0000 (21:02 +0300)
committerToni Wilen <twilen@winuae.net>
Thu, 27 Jul 2017 18:02:31 +0000 (21:02 +0300)
od-win32/hardfile_win32.cpp
od-win32/resources/resource.h
od-win32/resources/winuae.rc
od-win32/win32.cpp
od-win32/win32gui.cpp
od-win32/win32gui.h

index 5c37a7a150aa4aec1c46405a790e2a8f0a536a12..4011838b2139640f31c3719a6462ed8feed7a893 100644 (file)
@@ -932,7 +932,6 @@ static INT_PTR CALLBACK StringBoxDialogProc (HWND hDlg, UINT msg, WPARAM wParam,
                DestroyWindow (hDlg);
                return TRUE;
        case WM_INITDIALOG:
-               geometry_file[0] = 0;
                ShowWindow(GetDlgItem (hDlg, IDC_SAVEBOOTBLOCK), SW_SHOW);
                SetWindowText(hDlg, _T("Harddrive information"));
                return TRUE;
@@ -940,7 +939,7 @@ static INT_PTR CALLBACK StringBoxDialogProc (HWND hDlg, UINT msg, WPARAM wParam,
                switch (LOWORD (wParam))
                {
                case IDC_SAVEBOOTBLOCK:
-                       if (DiskSelection(hDlg, 0, 24, &workprefs, geometry_file)) {
+                       if (DiskSelection(hDlg, 0, 24, &workprefs, geometry_file, NULL)) {
                                ini_save(hdini, geometry_file);
                        }
                        break;
@@ -970,7 +969,7 @@ void hd_get_meta(HWND hDlg, int idx, TCHAR *geometryfile)
        struct ini_data *ini = NULL;
 
        geometryfile[0] = 0;
-       text = xcalloc(TCHAR, 10000);
+       text = xcalloc(TCHAR, 100000);
 
        HANDLE h = CreateFile(udi->device_path, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE,
                NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
@@ -986,7 +985,7 @@ void hd_get_meta(HWND hDlg, int idx, TCHAR *geometryfile)
        inq[0] = 0xff;
 
        if (udi->BusType == BusTypeAta || udi->BusType == BusTypeSata) {
-               if (!_tcscmp(udi->vendor_id, _T("ATA     "))) {
+               if (!_tcscmp(udi->vendor_id, _T("ATA"))) {
                        satl = true;
                }
        }
@@ -1049,6 +1048,31 @@ void hd_get_meta(HWND hDlg, int idx, TCHAR *geometryfile)
        }
 
 doout:
+
+       geometry_file[0] = 0;
+       if (udi->vendor_id[0]) {
+               _tcscat(geometry_file, udi->vendor_id);
+       }
+       if (udi->product_id[0]) {
+               if (geometry_file[0] && geometry_file[_tcslen(geometry_file) - 1] != ' ')
+                       _tcscat(geometry_file, _T(" "));
+               _tcscat(geometry_file, udi->product_id);
+       }
+       if (udi->product_rev[0]) {
+               if (geometry_file[0] && geometry_file[_tcslen(geometry_file) - 1] != ' ')
+                       _tcscat(geometry_file, _T(" "));
+               _tcscat(geometry_file, udi->product_rev);
+       }
+       if (udi->product_serial[0]) {
+               if (geometry_file[0] && geometry_file[_tcslen(geometry_file) - 1] != ' ')
+                       _tcscat(geometry_file, _T(" "));
+               _tcscat(geometry_file, udi->product_serial);
+       }
+       if (udi->size)
+               _stprintf(geometry_file + _tcslen(geometry_file), _T(" %llX"), udi->size);
+       if (geometry_file[0])
+               _tcscat(geometry_file, _T(".geo"));
+
        stringboxdialogactive = 1;
        hdini = ini;
        HWND hwnd = CustomCreateDialog (IDD_DISKINFO, hDlg, StringBoxDialogProc);
@@ -2809,7 +2833,7 @@ int harddrive_to_hdf (HWND hDlg, struct uae_prefs *p, int idx)
                goto err;
        size = uae_drives[idx].size;
        path[0] = 0;
-       DiskSelection (hDlg, IDC_PATH_NAME, 3, p, 0);
+       DiskSelection (hDlg, IDC_PATH_NAME, 3, p, NULL, NULL);
        GetDlgItemText (hDlg, IDC_PATH_NAME, path, MAX_DPATH);
        if (*path == 0)
                goto err;
index a5f879bfc567cf1b417e329696d0a86becd85bed..93b7d521ec03cffbe44b3cfbc4a6c0d9fe2cd657 100644 (file)
 #define IDS_WINUAETITLE_PAUSED          412
 #define IDS_MOUSE_UNTRAP_MODE           413
 #define IDS_TABLET_MODE                 414
+#define IDC_HARDDRIVE_ID                415
 #define IDS_QS_MODELS                   1000
 #define IDS_QS_MODEL_A500               1001
 #define IDS_QS_MODEL_A500P              1002
 #define IDC_SPEED_x86                   1233
 #define IDC_44KHZ                       1234
 #define IDC_48KHZ                       1235
+#define IDC_FPU4                        1235
 #define IDC_SOUNDSIZE                   1236
 #define IDC_FREQUENCY                   1237
 #define IDC_SOUND0                      1238
 #define IDC_JITENABLE                   1584
 #define IDC_SOUNDDRIVEVOLUMEX2          1584
 #define IDC_DISASSEMBLY                 1585
-#define IDC_MMUENABLE                   1585
+#define IDC_MMUENABLEOFF                1586
+#define IDC_MMUENABLEEC                 1587
+#define IDC_MMUENABLE                   1588
 #define IDC_COLLISION0                  1589
 #define IDC_COLLISION1                  1590
 #define IDC_AUDIOSYNC                   1590
 #define IDC_RAM_ADDRESS2                1853
 #define IDC_GENLOCKFILE                 1853
 #define IDC_GENLOCKFILESELECT           1854
+#define IDC_PATH_GEOMETRY               1855
+#define IDC_PATH_GEOMETRY_SELECTOR      1856
 #define ID__FLOPPYDRIVES                40004
 #define ID_FLOPPYDRIVES_DF0             40005
 #define ID_ST_CONFIGURATION             40010
 #define _APS_3D_CONTROLS                     1
 #define _APS_NEXT_RESOURCE_VALUE        407
 #define _APS_NEXT_COMMAND_VALUE         40050
-#define _APS_NEXT_CONTROL_VALUE         1855
+#define _APS_NEXT_CONTROL_VALUE         1857
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif
index d1d5439ac50b02b98f008dc432edea913f480a5e..0c6e998306c47f718421678d122ef1f912afb606 100644 (file)
@@ -252,31 +252,34 @@ IDD_CPU DIALOGEX 0, 0, 396, 317
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
-    GROUPBOX        "CPU",IDC_STATIC,1,1,129,184,BS_LEFT
+    GROUPBOX        "CPU",IDC_STATIC,1,1,129,152,BS_LEFT
     CONTROL         "68000",IDC_CPU0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,8,19,63,10
     CONTROL         "68010",IDC_CPU1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,32,63,10
     CONTROL         "68020",IDC_CPU2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,45,63,10
     CONTROL         "68030",IDC_CPU3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,58,63,10
     CONTROL         "68040",IDC_CPU4,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,71,63,10
     CONTROL         "68060",IDC_CPU5,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,84,63,10
-    CONTROL         "24-bit addressing",IDC_COMPATIBLE24,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,107,119,12
+    CONTROL         "24-bit addressing",IDC_COMPATIBLE24,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,99,119,12
     CONTROL         "More compatible [] 68000: emulate prefetch. 68020+: emulate prefetch partially. More compatible but slower.",IDC_COMPATIBLE,
-                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,121,118,11
+                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,112,118,11
     CONTROL         "JIT [] Enable just-in-time CPU emulator. Significantly increases the speed of the CPU emulation. Requires 68020 or higher CPU.",IDC_JITENABLE,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,134,120,11
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,124,120,11
+    CONTROL         "None",IDC_MMUENABLEOFF,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,8,166,87,10
+    CONTROL         "EC [] 68EC030, 68EC040 and 68EC060 Transparent Translation Register emulation. Not compatible with JIT.",IDC_MMUENABLEEC,
+                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,179,120,11
     CONTROL         "MMU [] 68030, 68040 and 68060 MMU emulation. Not compatible with JIT.",IDC_MMUENABLE,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,147,120,11
+                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,193,120,11
     CONTROL         "Unimplemented CPU emu [] Emulate 68060 unimplemented integer instructions",IDC_CPU_UNIMPLEMENTED,
-                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,160,118,10
-    GROUPBOX        "FPU",IDC_STATIC,1,188,129,128,BS_LEFT
-    CONTROL         "None",IDC_FPU0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,8,204,87,10
-    CONTROL         "68881",IDC_FPU1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,217,87,10
-    CONTROL         "68882",IDC_FPU2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,230,87,10
-    CONTROL         "CPU internal",IDC_FPU3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,243,93,10
+                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,136,118,10
+    GROUPBOX        "FPU",IDC_STATIC,1,212,129,103,BS_LEFT
+    CONTROL         "None",IDC_FPU0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,8,223,87,10
+    CONTROL         "68881",IDC_FPU1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,236,87,10
+    CONTROL         "68882",IDC_FPU2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,249,87,10
+    CONTROL         "CPU internal",IDC_FPU3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,262,93,10
     CONTROL         "More compatible [] More compatible but slower FPU emulation.",IDC_COMPATIBLE_FPU,
-                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,259,117,10
+                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,276,117,10
     CONTROL         "Unimplemented FPU emu [] Emulate FPU unimplemented instructions",IDC_FPU_UNIMPLEMENTED,
-                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,272,116,10
+                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,289,116,10
     GROUPBOX        "CPU Emulation Speed",IDC_STATIC,136,1,258,97
     CONTROL         "Fastest possible",IDC_CS_HOST,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_GROUP | WS_TABSTOP,143,19,195,10
     CONTROL         "Approximate A500/A1200 or cycle-exact",IDC_CS_68000,
@@ -309,7 +312,8 @@ BEGIN
     CONTROL         "Direct",IDC_TRUST0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,143,299,72,10
     CONTROL         "Indirect",IDC_TRUST1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,221,299,72,10
     CONTROL         "No flags",IDC_NOFLAGS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,299,299,68,11
-    CONTROL         "Softfloat FPU emulation",IDC_FPU_SOFTFLOAT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,285,115,10
+    CONTROL         "Softfloat FPU emulation",IDC_FPU_SOFTFLOAT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,302,115,10
+    GROUPBOX        "MMU",IDC_STATIC,2,154,129,56,BS_LEFT
 END
 
 IDD_FLOPPY DIALOGEX 0, 0, 396, 261
@@ -617,56 +621,59 @@ BEGIN
     CONTROL         "USB mode",IDC_KBLED_USB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,296,64,11
 END
 
-IDD_HARDFILE DIALOGEX 0, 0, 397, 279
+IDD_HARDFILE DIALOGEX 0, 0, 397, 290
 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"
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
-    GROUPBOX        "Settings",IDC_STATIC,2,2,392,183
+    GROUPBOX        "Settings",IDC_STATIC,2,2,392,196
     RTEXT           "Path:",IDC_HARDFILE_DIR_TEXT,10,18,37,10
     COMBOBOX        IDC_PATH_NAME,52,15,325,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON      "...",IDC_SELECTOR,380,14,11,15
-    RTEXT           "FileSys:",IDC_HARDFILE_FILESYS_TEXT,13,38,34,10
-    COMBOBOX        IDC_PATH_FILESYS,51,35,325,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "...",IDC_FILESYS_SELECTOR,380,34,11,15
-    RTEXT           "Device:",IDC_HARDFILE_DEVICE_TEXT,16,58,31,10
-    EDITTEXT        IDC_HARDFILE_DEVICE,52,55,89,15,ES_AUTOHSCROLL
-    RTEXT           "Boot priority:",IDC_HARDFILE_BOOTPRI_TEXT,150,57,83,10
-    EDITTEXT        IDC_HARDFILE_BOOTPRI,238,55,44,15
-    CONTROL         "Manual geometry",IDC_HDF_PHYSGEOMETRY,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,299,56,87,10
-    CONTROL         "Read/write",IDC_HDF_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,52,75,67,10
-    CONTROL         "Do not mount",IDC_HDF_DONOTMOUNT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,52,89,67,10
-    CONTROL         "Bootable",IDC_HDF_AUTOBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,152,75,78,10
-    CONTROL         "Global filesystem",IDC_HDF_ADDFSRES,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,152,89,82,10
-    RTEXT           "Surfaces:",IDC_SURFACES_TEXT,298,76,45,10
-    EDITTEXT        IDC_HEADS,347,73,40,15,ES_NUMBER
-    RTEXT           "Sectors:",IDC_SECTORS_TEXT,298,95,45,10
-    EDITTEXT        IDC_SECTORS,347,92,40,15,ES_NUMBER
-    RTEXT           "Reserved:",IDC_RESERVED_TEXT,297,113,46,10
-    EDITTEXT        IDC_RESERVED,347,111,40,15,ES_NUMBER
-    RTEXT           "Block size:",IDC_BLOCKSIZE_TEXT,299,132,45,10
-    EDITTEXT        IDC_BLOCKSIZE,347,130,40,15,ES_NUMBER
-    LTEXT           "HD Controller:",IDC_STATIC,10,113,54,10,SS_CENTERIMAGE
-    PUSHBUTTON      "Full drive/RDB mode",IDC_HDF_RDB,83,109,127,14
-    COMBOBOX        IDC_HDF_FEATURE_LEVEL,214,109,75,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_HDF_CONTROLLER,6,131,152,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_HDF_CONTROLLER_UNIT,163,131,63,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_HDF_CONTROLLER_TYPE,231,131,58,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    EDITTEXT        IDC_HDFINFO,5,150,385,12,ES_CENTER | ES_READONLY
-    EDITTEXT        IDC_HDFINFO2,5,166,385,12,ES_CENTER | ES_READONLY
-    GROUPBOX        "New hard disk image file",IDC_STATIC,2,190,392,62
-    PUSHBUTTON      "Create",IDC_HF_CREATE,58,206,80,14
-    COMBOBOX        IDC_HF_TYPE,58,230,80,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    EDITTEXT        IDC_HF_SIZE,154,206,61,15
-    LTEXT           "MB",IDC_STATIC,220,209,53,10,SS_CENTERIMAGE
-    EDITTEXT        IDC_HF_DOSTYPE,154,229,61,15
-    LTEXT           "DOS type",IDC_STATIC,222,231,51,10,SS_CENTERIMAGE
-    CONTROL         "Sparse file",IDC_HF_SPARSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,280,215,87,10
-    CONTROL         "Dynamic HDF",IDC_HF_DYNAMIC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,280,227,87,10
-    PUSHBUTTON      "OK",IDOK,147,258,50,14
-    PUSHBUTTON      "Cancel",IDCANCEL,203,258,50,14
-    RTEXT           "Cylinders:",IDC_CYLINDERS_TEXT,300,113,43,10,NOT WS_VISIBLE
+    RTEXT           "FileSys:",IDC_HARDFILE_FILESYS_TEXT,13,52,34,10
+    COMBOBOX        IDC_PATH_FILESYS,51,49,325,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "...",IDC_FILESYS_SELECTOR,380,48,11,15
+    RTEXT           "Device:",IDC_HARDFILE_DEVICE_TEXT,16,71,31,10
+    EDITTEXT        IDC_HARDFILE_DEVICE,52,69,89,15,ES_AUTOHSCROLL
+    RTEXT           "Boot priority:",IDC_HARDFILE_BOOTPRI_TEXT,150,71,83,10
+    EDITTEXT        IDC_HARDFILE_BOOTPRI,238,69,44,15
+    CONTROL         "Manual geometry",IDC_HDF_PHYSGEOMETRY,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,299,70,87,10
+    CONTROL         "Read/write",IDC_HDF_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,52,89,67,10
+    CONTROL         "Do not mount",IDC_HDF_DONOTMOUNT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,52,103,67,10
+    CONTROL         "Bootable",IDC_HDF_AUTOBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,152,89,78,10
+    CONTROL         "Global filesystem",IDC_HDF_ADDFSRES,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,152,103,82,10
+    RTEXT           "Surfaces:",IDC_SURFACES_TEXT,298,90,45,10
+    EDITTEXT        IDC_HEADS,347,87,40,15,ES_NUMBER
+    RTEXT           "Sectors:",IDC_SECTORS_TEXT,298,109,45,10
+    EDITTEXT        IDC_SECTORS,347,106,40,15,ES_NUMBER
+    RTEXT           "Reserved:",IDC_RESERVED_TEXT,297,128,46,10
+    EDITTEXT        IDC_RESERVED,347,125,40,15,ES_NUMBER
+    RTEXT           "Block size:",IDC_BLOCKSIZE_TEXT,299,147,45,10
+    EDITTEXT        IDC_BLOCKSIZE,347,144,40,15,ES_NUMBER
+    LTEXT           "HD Controller:",IDC_STATIC,10,127,54,10,SS_CENTERIMAGE
+    PUSHBUTTON      "Full drive/RDB mode",IDC_HDF_RDB,83,123,127,14
+    COMBOBOX        IDC_HDF_FEATURE_LEVEL,214,123,75,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_HDF_CONTROLLER,6,145,152,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_HDF_CONTROLLER_UNIT,163,145,63,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_HDF_CONTROLLER_TYPE,231,145,58,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    EDITTEXT        IDC_HDFINFO,5,164,385,12,ES_CENTER | ES_READONLY
+    EDITTEXT        IDC_HDFINFO2,5,180,385,12,ES_CENTER | ES_READONLY
+    GROUPBOX        "New hard disk image file",IDC_STATIC,2,203,392,62
+    PUSHBUTTON      "Create",IDC_HF_CREATE,58,219,80,14
+    COMBOBOX        IDC_HF_TYPE,58,243,80,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    EDITTEXT        IDC_HF_SIZE,154,219,61,15
+    LTEXT           "MB",IDC_STATIC,220,222,53,10,SS_CENTERIMAGE
+    EDITTEXT        IDC_HF_DOSTYPE,154,242,61,15
+    LTEXT           "DOS type",IDC_STATIC,220,244,51,10,SS_CENTERIMAGE
+    CONTROL         "Sparse file",IDC_HF_SPARSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,280,228,87,10
+    CONTROL         "Dynamic HDF",IDC_HF_DYNAMIC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,280,240,87,10
+    PUSHBUTTON      "OK",IDOK,147,271,50,14
+    PUSHBUTTON      "Cancel",IDCANCEL,203,271,50,14
+    RTEXT           "Cylinders:",IDC_CYLINDERS_TEXT,300,128,43,10,NOT WS_VISIBLE
+    COMBOBOX        IDC_PATH_GEOMETRY,52,32,325,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "...",IDC_PATH_GEOMETRY_SELECTOR,380,31,11,15
+    RTEXT           "Geometry:",IDC_STATIC,6,34,41,10
 END
 
 IDD_FILESYS DIALOGEX 15, 25, 396, 111
@@ -920,25 +927,38 @@ BEGIN
     PUSHBUTTON      "Delete",IDC_FILTERPRESETDELETE,325,272,55,14
 END
 
-IDD_HARDDRIVE DIALOGEX 0, 0, 397, 136
+IDD_HARDDRIVE DIALOGEX 0, 0, 397, 219
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS_CENTERMOUSE | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 CAPTION "Harddrive Settings"
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
-    LTEXT           "Hard drive:",IDC_STATIC,7,11,80,10
+    RTEXT           "Hard drive:",IDC_STATIC,7,11,38,10
     COMBOBOX        IDC_HARDDRIVE,49,9,339,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    EDITTEXT        IDC_HDFINFO,5,29,385,12,ES_CENTER | ES_READONLY
-    EDITTEXT        IDC_HDFINFO2,5,46,385,12,ES_CENTER | ES_READONLY
-    DEFPUSHBUTTON   "Create hard disk image file",IDC_HARDDRIVE_IMAGE,5,67,158,14
-    EDITTEXT        IDC_PATH_NAME,178,67,41,15,ES_AUTOHSCROLL | NOT WS_VISIBLE
-    CONTROL         "Read/write",IDC_HDF_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,315,71,60,10
-    COMBOBOX        IDC_HDF_CONTROLLER_UNIT,65,90,97,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_HDF_CONTROLLER_TYPE,178,90,97,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_HDF_FEATURE_LEVEL,291,90,97,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_HDF_CONTROLLER,8,113,218,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    DEFPUSHBUTTON   "Add hard drive",IDOK,236,113,73,14
-    PUSHBUTTON      "Cancel",IDCANCEL,316,113,73,14
-    CONTROL         "Lock",IDC_HDF_LOCK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,243,71,61,10
+    EDITTEXT        IDC_HDFINFO,5,51,385,12,ES_CENTER | ES_READONLY
+    EDITTEXT        IDC_HDFINFO2,5,68,385,12,ES_CENTER | ES_READONLY
+    DEFPUSHBUTTON   "Read Identity",IDC_HARDDRIVE_ID,113,152,111,14,WS_DISABLED
+    EDITTEXT        IDC_PATH_NAME,17,190,41,15,ES_AUTOHSCROLL | NOT WS_VISIBLE
+    CONTROL         "Read/write",IDC_HDF_RW,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,171,90,56,10
+    COMBOBOX        IDC_HDF_CONTROLLER_UNIT,7,111,97,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_DISABLED | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_HDF_CONTROLLER_TYPE,113,111,110,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_DISABLED | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_HDF_FEATURE_LEVEL,7,152,97,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_DISABLED | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_HDF_CONTROLLER,7,132,216,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_DISABLED | WS_VSCROLL | WS_TABSTOP
+    DEFPUSHBUTTON   "Add hard drive",IDOK,237,195,73,14,WS_DISABLED
+    PUSHBUTTON      "Cancel",IDCANCEL,316,195,73,14
+    CONTROL         "Lock",IDC_HDF_LOCK,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,233,90,55,10
+    DEFPUSHBUTTON   "Create hard disk image file",IDC_HARDDRIVE_IMAGE,5,88,158,14,WS_DISABLED
+    CONTROL         "Manual geometry",IDC_HDF_PHYSGEOMETRY,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,299,90,87,10
+    EDITTEXT        IDC_HEADS,347,109,40,15,ES_NUMBER | WS_DISABLED
+    EDITTEXT        IDC_SECTORS,347,128,40,15,ES_NUMBER | WS_DISABLED
+    EDITTEXT        IDC_RESERVED,347,147,40,15,ES_NUMBER | WS_DISABLED
+    EDITTEXT        IDC_BLOCKSIZE,347,166,40,15,ES_NUMBER | WS_DISABLED
+    RTEXT           "Surfaces:",IDC_SURFACES_TEXT,298,112,45,10
+    RTEXT           "Sectors:",IDC_SECTORS_TEXT,298,131,45,10
+    RTEXT           "Block size:",IDC_BLOCKSIZE_TEXT,299,168,45,10
+    RTEXT           "Cylinders:",IDC_CYLINDERS_TEXT,300,150,43,10
+    COMBOBOX        IDC_PATH_GEOMETRY,49,29,325,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "...",IDC_PATH_GEOMETRY_SELECTOR,377,28,11,15,WS_DISABLED
+    RTEXT           "Geometry:",IDC_STATIC,3,31,41,10
 END
 
 IDD_MISC2 DIALOGEX 0, 0, 396, 278
@@ -1270,7 +1290,7 @@ CAPTION "Disk image information"
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
     DEFPUSHBUTTON   "OK",IDOK,220,303,50,14
-    PUSHBUTTON      "Save bootblock",IDC_SAVEBOOTBLOCK,397,303,89,14,NOT WS_VISIBLE
+    PUSHBUTTON      "Save",IDC_SAVEBOOTBLOCK,397,303,89,14,NOT WS_VISIBLE
     EDITTEXT        IDC_DISKINFOBOX,5,4,481,292,ES_MULTILINE | ES_READONLY | WS_VSCROLL
 END
 
@@ -1320,8 +1340,8 @@ END
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,5,0,0
- PRODUCTVERSION 3,5,0,0
+ FILEVERSION 3,5,1,0
+ PRODUCTVERSION 3,5,1,0
  FILEFLAGSMASK 0x3fL
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -1337,12 +1357,12 @@ BEGIN
         BLOCK "040904b0"
         BEGIN
             VALUE "FileDescription", "WinUAE"
-            VALUE "FileVersion", "3.5.0.0"
+            VALUE "FileVersion", "3.5.1.0"
             VALUE "InternalName", "WinUAE"
             VALUE "LegalCopyright", "© 1996-2017 under the GNU Public License (GPL)"
             VALUE "OriginalFilename", "WinUAE.exe"
             VALUE "ProductName", "WinUAE"
-            VALUE "ProductVersion", "3.5.0.0"
+            VALUE "ProductVersion", "3.5.1.0"
         END
     END
     BLOCK "VarFileInfo"
@@ -1573,6 +1593,7 @@ BEGIN
     IDD_HARDDRIVE, DIALOG
     BEGIN
         RIGHTMARGIN, 396
+        BOTTOMMARGIN, 195
     END
 
     IDD_MISC2, DIALOG
@@ -1889,7 +1910,7 @@ BEGIN
                             "you selected an RTG (Picasso96) display with unsupported color depth."
     IDS_FLOPPYTYPE35DD      "3.5"" DD"
     IDS_FLOPPYTYPE35HD      "3.5"" HD"
-    IDS_FLOPPYTYPE525SD     "5.25"" SD"
+    IDS_FLOPPYTYPE525SD     "5.25"" (40)"
     IDS_FLOPPYTYPEDISABLED  "Disabled"
     IDS_STMENUNOFLOPPY      "No floppy disk inserted"
     IDS_TREEVIEW_HARDWARE   "Hardware"
index 0fb4eafae8f7b25fd684a6f7ad99f19d1bfc9ae6..34d44beaf7c57c9ff2a40709d12d4955cbe14099 100644 (file)
@@ -2023,7 +2023,7 @@ static LRESULT CALLBACK AmigaWindowProc (HWND hWnd, UINT message, WPARAM wParam,
                                                        if (nm->code == NM_RCLICK) {
                                                                disk_eject (num);
                                                        } else if (changed_prefs.floppyslots[num].dfxtype >= 0) {
-                                                               DiskSelection (hWnd, IDC_DF0 + num, 0, &changed_prefs, 0);
+                                                               DiskSelection (hWnd, IDC_DF0 + num, 0, &changed_prefs, NULL, NULL);
                                                                disk_insert (num, changed_prefs.floppyslots[num].df);
                                                        }
                                                } else if (num == 5) {
@@ -2505,7 +2505,7 @@ static LRESULT CALLBACK HiddenWindowProc (HWND hWnd, UINT message, WPARAM wParam
                        changed_prefs.cdslots[0].inuse = false;
                        break;
                case ID_ST_CD0:
-                       DiskSelection (isfullscreen() > 0 ? NULL : hWnd, IDC_CD_SELECT, 17, &changed_prefs, 0);
+                       DiskSelection (isfullscreen() > 0 ? NULL : hWnd, IDC_CD_SELECT, 17, &changed_prefs, NULL, NULL);
                        break;
 
                case ID_ST_EJECTALL:
@@ -2515,19 +2515,19 @@ static LRESULT CALLBACK HiddenWindowProc (HWND hWnd, UINT message, WPARAM wParam
                        disk_eject (3);
                        break;
                case ID_ST_DF0:
-                       DiskSelection (isfullscreen() > 0 ? NULL : hWnd, IDC_DF0, 0, &changed_prefs, 0);
+                       DiskSelection (isfullscreen() > 0 ? NULL : hWnd, IDC_DF0, 0, &changed_prefs, NULL, NULL);
                        disk_insert (0, changed_prefs.floppyslots[0].df);
                        break;
                case ID_ST_DF1:
-                       DiskSelection (isfullscreen() > 0 ? NULL : hWnd, IDC_DF1, 0, &changed_prefs, 0);
+                       DiskSelection (isfullscreen() > 0 ? NULL : hWnd, IDC_DF1, 0, &changed_prefs, NULL, NULL);
                        disk_insert (1, changed_prefs.floppyslots[0].df);
                        break;
                case ID_ST_DF2:
-                       DiskSelection (isfullscreen() > 0 ? NULL : hWnd, IDC_DF2, 0, &changed_prefs, 0);
+                       DiskSelection (isfullscreen() > 0 ? NULL : hWnd, IDC_DF2, 0, &changed_prefs, NULL, NULL);
                        disk_insert (2, changed_prefs.floppyslots[0].df);
                        break;
                case ID_ST_DF3:
-                       DiskSelection (isfullscreen() > 0 ? NULL : hWnd, IDC_DF3, 0, &changed_prefs, 0);
+                       DiskSelection (isfullscreen() > 0 ? NULL : hWnd, IDC_DF3, 0, &changed_prefs, NULL, NULL);
                        disk_insert (3, changed_prefs.floppyslots[0].df);
                        break;
 
index fff9c94248b17cbf262ef41f179f4f03de430843..8c80493b1e3a86186240cb9e612f6cfcd2183abd 100644 (file)
@@ -2250,12 +2250,12 @@ void gui_display (int shortcut)
                        savestate_state = 0;
                }
        } else if (shortcut >= 0 && shortcut < 4) {
-               DiskSelection (hAmigaWnd, IDC_DF0 + shortcut, 0, &changed_prefs, 0);
+               DiskSelection (hAmigaWnd, IDC_DF0 + shortcut, 0, &changed_prefs, NULL, NULL);
        } else if (shortcut == 5) {
-               if (DiskSelection (hAmigaWnd, IDC_DOSAVESTATE, 9, &changed_prefs, 0))
+               if (DiskSelection (hAmigaWnd, IDC_DOSAVESTATE, 9, &changed_prefs, NULL, NULL))
                        save_state (savestate_fname, _T("Description!"));
        } else if (shortcut == 4) {
-               if (DiskSelection (hAmigaWnd, IDC_DOLOADSTATE, 10, &changed_prefs, 0))
+               if (DiskSelection (hAmigaWnd, IDC_DOLOADSTATE, 10, &changed_prefs, NULL, NULL))
                        savestate_state = STATE_DORESTORE;
        }
        manual_painting_needed--; /* So that WM_PAINT doesn't need to use custom refreshing */
@@ -2603,7 +2603,7 @@ static void setdpath (const TCHAR *name, const TCHAR *path)
 // fags = 23 for hdf geometry (load)
 // fags = 24 for hdf geometry (save)
 
-int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs, TCHAR *path_out, int *multi)
+int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs, TCHAR *infilename, TCHAR *path_out, int *multi)
 {
        static int previousfilter[20];
        TCHAR filtername[MAX_DPATH] = _T("");
@@ -2715,6 +2715,8 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs
                        break;
                }
        }
+       if (infilename)
+               _tcscpy(full_path, infilename);
 
        szFilter[0] = 0;
        szFilter[1] = 0;
@@ -3118,14 +3120,14 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs
        }
        return result;
 }
-int DiskSelection (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs, TCHAR *path_out)
+int DiskSelection (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs, TCHAR *file_in, TCHAR *path_out)
 {
-       return DiskSelection_2 (hDlg, wParam, flag, prefs, path_out, NULL);
+       return DiskSelection_2 (hDlg, wParam, flag, prefs, file_in, path_out, NULL);
 }
 int MultiDiskSelection (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs, TCHAR *path_out)
 {
        int multi = 0;
-       return DiskSelection_2 (hDlg, wParam, flag, prefs, path_out, &multi);
+       return DiskSelection_2 (hDlg, wParam, flag, prefs, NULL, path_out, &multi);
 }
 static int loopmulti (const TCHAR *s, TCHAR *out)
 {
@@ -3172,7 +3174,7 @@ static BOOL CreateHardFile (HWND hDlg, uae_s64 hfsize, const TCHAR *dostype, TCH
                dynamic = 1;
                sparse = 0;
        }
-       if (!DiskSelection (hDlg, IDC_PATH_NAME, 3, &workprefs, newpath))
+       if (!DiskSelection (hDlg, IDC_PATH_NAME, 3, &workprefs, NULL, newpath))
                return FALSE;
        GetDlgItemText (hDlg, IDC_PATH_NAME, init_path, MAX_DPATH);
        if (*init_path && hfsize) {
@@ -3843,13 +3845,13 @@ static TCHAR *HandleConfiguration (HWND hDlg, int flag, struct ConfigStruct *con
        switch (flag)
        {
        case CONFIG_SAVE_FULL:
-               ok = DiskSelection(hDlg, IDC_SAVE, 5, &workprefs, newpath);
+               ok = DiskSelection(hDlg, IDC_SAVE, 5, &workprefs, NULL, newpath);
                GetDlgItemText (hDlg, IDC_EDITNAME, name, MAX_DPATH);
                _tcscpy (config_filename, name);
                break;
 
        case CONFIG_LOAD_FULL:
-               if ((ok = DiskSelection(hDlg, IDC_LOAD, 4, &workprefs, newpath))) {
+               if ((ok = DiskSelection(hDlg, IDC_LOAD, 4, &workprefs, NULL, newpath))) {
                        EnableWindow(GetDlgItem (hDlg, IDC_VIEWINFO), workprefs.info[0]);
                        GetDlgItemText (hDlg, IDC_EDITNAME, name, MAX_DPATH);
                        _tcscpy (config_filename, name);
@@ -5048,7 +5050,7 @@ static INT_PTR CALLBACK InfoSettingsProc (HWND hDlg, UINT msg, WPARAM wParam, LP
                switch(wParam)
                {
                case IDC_SELECTOR:
-                       DiskSelection (hDlg, IDC_PATH_NAME, 8, &workprefs, 0);
+                       DiskSelection (hDlg, IDC_PATH_NAME, 8, &workprefs, NULL, NULL);
                        break;
                case IDOK:
                        EndDialog (hDlg, 1);
@@ -8010,7 +8012,7 @@ static INT_PTR CALLBACK ChipsetDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPAR
                        {
                                TCHAR path[MAX_DPATH];
                                path[0] = 0;
-                               DiskSelection(hDlg, IDC_GENLOCKFILESELECT, workprefs.genlock_image == 3 ? 20 : 21, &workprefs, path);
+                               DiskSelection(hDlg, IDC_GENLOCKFILESELECT, workprefs.genlock_image == 3 ? 20 : 21, &workprefs, NULL, path);
                                break;
                        }
                }
@@ -9566,11 +9568,11 @@ static void expansion2filebuttons(HWND hDlg, WPARAM wParam, TCHAR *path)
        switch (LOWORD(wParam))
        {
                case IDC_SCSIROMCHOOSER:
-               DiskSelection(hDlg, IDC_SCSIROMFILE, 6, &workprefs, path);
+               DiskSelection(hDlg, IDC_SCSIROMFILE, 6, &workprefs, NULL, path);
                values_to_expansion2dlg(hDlg, 1);
                break;
                case IDC_CPUBOARDROMCHOOSER:
-               DiskSelection(hDlg, IDC_CPUBOARDROMFILE, 6, &workprefs, path);
+               DiskSelection(hDlg, IDC_CPUBOARDROMFILE, 6, &workprefs, NULL, path);
                values_to_expansion2dlg(hDlg, 2);
                break;
        }
@@ -10656,23 +10658,23 @@ static void kickstartfilebuttons (HWND hDlg, WPARAM wParam, TCHAR *path)
        switch (LOWORD(wParam))
        {
        case IDC_KICKCHOOSER:
-               DiskSelection(hDlg, IDC_ROMFILE, 6, &workprefs, path);
+               DiskSelection(hDlg, IDC_ROMFILE, 6, &workprefs, NULL, path);
                values_to_kickstartdlg (hDlg);
                break;
        case IDC_ROMCHOOSER2:
-               DiskSelection(hDlg, IDC_ROMFILE2, 6, &workprefs, path);
+               DiskSelection(hDlg, IDC_ROMFILE2, 6, &workprefs, NULL, path);
                values_to_kickstartdlg (hDlg);
                break;
        case IDC_FLASHCHOOSER:
-               DiskSelection(hDlg, IDC_FLASHFILE, 11, &workprefs, path);
+               DiskSelection(hDlg, IDC_FLASHFILE, 11, &workprefs, NULL, path);
                values_to_kickstartdlg (hDlg);
                break;
        case IDC_RTCCHOOSER:
-               DiskSelection(hDlg, IDC_RTCFILE, 19, &workprefs, path);
+               DiskSelection(hDlg, IDC_RTCFILE, 19, &workprefs, NULL, path);
                values_to_kickstartdlg (hDlg);
                break;
        case IDC_CARTCHOOSER:
-               DiskSelection(hDlg, IDC_CARTFILE, 6, &workprefs, path);
+               DiskSelection(hDlg, IDC_CARTFILE, 6, &workprefs, NULL, path);
                values_to_kickstartdlg (hDlg);
                break;
        }
@@ -11135,7 +11137,7 @@ static INT_PTR MiscDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
                                TCHAR path[MAX_DPATH];
                                _tcscpy (path, s);
                                xfree (s);
-                               if (DiskSelection(hDlg, wParam, 9, &workprefs, path))
+                               if (DiskSelection(hDlg, wParam, 9, &workprefs, NULL, path))
                                        save_state (savestate_fname, _T("Description!"));
                        }
                } else if (GetDlgCtrlID((HWND)wParam) == IDC_DOLOADSTATE) {
@@ -11144,7 +11146,7 @@ static INT_PTR MiscDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
                                TCHAR path[MAX_DPATH];
                                _tcscpy (path, s);
                                xfree (s);
-                               if (DiskSelection(hDlg, wParam, 10, &workprefs, path))
+                               if (DiskSelection(hDlg, wParam, 10, &workprefs, NULL, path))
                                        savestate_state = STATE_DORESTORE;
                        }
                }
@@ -11308,14 +11310,14 @@ static INT_PTR MiscDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
                        break;
                case IDC_DOSAVESTATE:
                        workprefs.statefile[0] = 0;
-                       if (DiskSelection(hDlg, wParam, 9, &workprefs, 0)) {
+                       if (DiskSelection(hDlg, wParam, 9, &workprefs, NULL, NULL)) {
                                save_state (savestate_fname, _T("Description!"));
                                _tcscpy (workprefs.statefile, savestate_fname);
                        }
                        setstatefilename (hDlg);
                        break;
                case IDC_DOLOADSTATE:
-                       if (DiskSelection(hDlg, wParam, 10, &workprefs, 0))
+                       if (DiskSelection(hDlg, wParam, 10, &workprefs, NULL, NULL))
                                savestate_state = STATE_DORESTORE;
                        _tcscpy (workprefs.statefile, savestate_fname);
                        setstatefilename (hDlg);
@@ -12424,7 +12426,7 @@ static void volumeselectfile (HWND hDlg, int setout)
                int out = sizeof directory_path / sizeof (TCHAR);
                regquerystr (NULL, _T("FilesystemFilePath"), directory_path, &out);
        }
-       if (DiskSelection (hDlg, 0, 14, &workprefs, directory_path)) {
+       if (DiskSelection (hDlg, 0, 14, &workprefs, NULL, directory_path)) {
                TCHAR *s = filesys_createvolname (NULL, directory_path, NULL, _T("Harddrive"));
                SetDlgItemText (hDlg, IDC_PATH_NAME, directory_path);
                SetDlgItemText (hDlg, IDC_VOLUME_NAME, s);
@@ -12596,6 +12598,8 @@ static void sethardfilegeo(HWND hDlg)
                setchecked(hDlg, IDC_HDF_PHYSGEOMETRY, TRUE);
                ew (hDlg, IDC_HDF_PHYSGEOMETRY, FALSE);
                get_hd_geometry(&current_hfdlg.ci);
+       } else {
+               ew (hDlg, IDC_HDF_PHYSGEOMETRY, TRUE);
        }
 }
 
@@ -12861,8 +12865,8 @@ static void sethfdostype (HWND hDlg, int idx)
 
 static void updatehdfinfo (HWND hDlg, bool force, bool defaults)
 {
-       static uae_u64 bsize;
-       static uae_u8 id[512];
+       uae_u8 id[512] = { 0 };
+       uae_u64 bsize;
        uae_u32 blocks, cyls, i;
        TCHAR tmp[200], tmp2[200];
        TCHAR idtmp[17];
@@ -12954,7 +12958,9 @@ static void updatehdfinfo (HWND hDlg, bool force, bool defaults)
                                blocks, (int)(bsize / current_hfdlg.ci.blocksize),
                                (double)blocks * 1.0 * current_hfdlg.ci.blocksize / (1024.0 * 1024.0),
                                (double)bsize / (1024.0 * 1024.0));
-                       if (cyls > 65535) {
+                       if (cyls * heads * secs > bsize / current_hfdlg.ci.blocksize) {
+                               _tcscat (tmp2, _T(" [Geometry larger than drive!]"));
+                       } else if (cyls > 65535) {
                                _tcscat (tmp2, _T(" [Too many cyls]"));
                        }
                }
@@ -12968,7 +12974,7 @@ static void updatehdfinfo (HWND hDlg, bool force, bool defaults)
 static void hardfileselecthdf (HWND hDlg, TCHAR *newpath, bool ask, bool newhd)
 {
        if (ask) {
-               DiskSelection (hDlg, IDC_PATH_NAME, 2, &workprefs, newpath);
+               DiskSelection (hDlg, IDC_PATH_NAME, 2, &workprefs, NULL, newpath);
                GetDlgItemText (hDlg, IDC_PATH_NAME, current_hfdlg.ci.rootdir, sizeof current_hfdlg.ci.rootdir / sizeof (TCHAR));
                DISK_history_add(current_hfdlg.ci.rootdir, -1, HISTORY_HDF, 1);
        }
@@ -13076,7 +13082,7 @@ static INT_PTR CALLBACK TapeDriveSettingsProc (HWND hDlg, UINT msg, WPARAM wPara
                        SetDlgItemText(hDlg, IDC_PATH_NAME, current_tapedlg.ci.rootdir);
                        break;
                case IDC_TAPE_SELECT_FILE:
-                       DiskSelection (hDlg, IDC_PATH_NAME, 18, &workprefs, NULL);
+                       DiskSelection (hDlg, IDC_PATH_NAME, 18, &workprefs, NULL, NULL);
                        GetDlgItemText (hDlg, IDC_PATH_NAME, current_tapedlg.ci.rootdir, sizeof current_tapedlg.ci.rootdir / sizeof (TCHAR));
                        DISK_history_add(current_tapedlg.ci.rootdir, -1, HISTORY_TAPE, 1);
                        fullpath (current_tapedlg.ci.rootdir, sizeof current_tapedlg.ci.rootdir / sizeof (TCHAR));
@@ -13264,7 +13270,7 @@ static INT_PTR CALLBACK HardfileSettingsProc (HWND hDlg, UINT msg, WPARAM wParam
                                TCHAR path[MAX_DPATH];
                                _tcscpy (path, s);
                                xfree (s);
-                               DiskSelection (hDlg, IDC_PATH_FILESYS, 12, &workprefs, path);
+                               DiskSelection (hDlg, IDC_PATH_FILESYS, 12, &workprefs, NULL, path);
                        }
                } else if (GetDlgCtrlID ((HWND)wParam) == IDC_HF_CREATE) {
                        TCHAR *s = favoritepopup (hDlg);
@@ -13281,6 +13287,14 @@ static INT_PTR CALLBACK HardfileSettingsProc (HWND hDlg, UINT msg, WPARAM wParam
 
                if (HIWORD (wParam) == CBN_SELCHANGE || HIWORD (wParam) == CBN_KILLFOCUS)  {
                        switch (LOWORD (wParam)) {
+                       case IDC_PATH_GEOMETRY:
+                               getcomboboxtext(hDlg, IDC_PATH_GEOMETRY, current_hfdlg.ci.geometry, sizeof  current_hfdlg.ci.geometry / sizeof(TCHAR));
+                               if (HIWORD (wParam) == CBN_KILLFOCUS) {
+                                       addhistorymenu(hDlg, current_hfdlg.ci.geometry, IDC_PATH_GEOMETRY, HISTORY_GEO, false);
+                                       sethardfile(hDlg);
+                                       updatehdfinfo (hDlg, true, false);
+                               }
+                               break;
                        case IDC_PATH_NAME:
                                if (getcomboboxtext(hDlg, IDC_PATH_NAME, tmp, sizeof tmp / sizeof(TCHAR))) {
                                        if (_tcscmp (tmp, current_hfdlg.ci.rootdir)) {
@@ -13302,7 +13316,8 @@ static INT_PTR CALLBACK HardfileSettingsProc (HWND hDlg, UINT msg, WPARAM wParam
                recursive++;
 
                if (HIWORD(wParam) == CBN_SELCHANGE || HIWORD(wParam) == CBN_KILLFOCUS) {
-                       switch (LOWORD(wParam)) {
+                       switch (LOWORD(wParam))
+                       {
                        case IDC_HDF_CONTROLLER:
                                posn = gui_get_string_cursor(hdmenutable, hDlg, IDC_HDF_CONTROLLER);
                                if (posn != CB_ERR) {
@@ -13345,13 +13360,6 @@ static INT_PTR CALLBACK HardfileSettingsProc (HWND hDlg, UINT msg, WPARAM wParam
                                }
                                break;
                        }
-                       case IDC_PATH_GEOMETRY:
-                               getcomboboxtext(hDlg, IDC_PATH_GEOMETRY, current_hfdlg.ci.geometry, sizeof  current_hfdlg.ci.geometry / sizeof(TCHAR));
-                               if (HIWORD (wParam) == CBN_KILLFOCUS) {
-                                       addhistorymenu(hDlg, current_hfdlg.ci.geometry, IDC_PATH_GEOMETRY, HISTORY_GEO, false);
-                                       sethardfile(hDlg);
-                               }
-                               break;
                }
 
                switch (LOWORD (wParam)) {
@@ -13383,7 +13391,7 @@ static INT_PTR CALLBACK HardfileSettingsProc (HWND hDlg, UINT msg, WPARAM wParam
                        }
                        break;
                case IDC_FILESYS_SELECTOR:
-                       DiskSelection (hDlg, IDC_PATH_FILESYS, 12, &workprefs, 0);
+                       DiskSelection (hDlg, IDC_PATH_FILESYS, 12, &workprefs, NULL, NULL);
                        getcomboboxtext(hDlg, IDC_PATH_FILESYS, current_hfdlg.ci.filesys, sizeof  current_hfdlg.ci.filesys / sizeof(TCHAR));
                        DISK_history_add(current_hfdlg.ci.filesys, -1, HISTORY_FS, 1);
                        break;
@@ -13428,10 +13436,11 @@ static INT_PTR CALLBACK HardfileSettingsProc (HWND hDlg, UINT msg, WPARAM wParam
                        sethardfile (hDlg);
                        break;
                case IDC_PATH_GEOMETRY_SELECTOR:
-                       DiskSelection (hDlg, IDC_PATH_GEOMETRY, 23, &workprefs, 0);
-                       getcomboboxtext(hDlg, IDC_PATH_GEOMETRY, current_hfdlg.ci.geometry, sizeof  current_hfdlg.ci.geometry / sizeof(TCHAR));
-                       DISK_history_add(current_hfdlg.ci.geometry, -1, HISTORY_GEO, 1);
-                       sethardfile(hDlg);
+                       if (DiskSelection (hDlg, IDC_PATH_GEOMETRY, 23, &workprefs, NULL, current_hfdlg.ci.geometry)) {
+                               DISK_history_add(current_hfdlg.ci.geometry, -1, HISTORY_GEO, 1);
+                               sethardfile(hDlg);
+                               updatehdfinfo (hDlg, true, false);
+                       }
                        break;
                case IDC_SECTORS:
                        p = ischecked(hDlg, IDC_HDF_PHYSGEOMETRY) ? &current_hfdlg.ci.psecs : &current_hfdlg.ci.sectors;
@@ -13670,11 +13679,12 @@ static INT_PTR CALLBACK HarddriveSettingsProc (HWND hDlg, UINT msg, WPARAM wPara
                                }
                        break;
                        case IDC_PATH_GEOMETRY_SELECTOR:
-                               DiskSelection (hDlg, IDC_PATH_GEOMETRY, 23, &workprefs, 0);
-                               getcomboboxtext(hDlg, IDC_PATH_GEOMETRY, current_hfdlg.ci.geometry, sizeof  current_hfdlg.ci.geometry / sizeof(TCHAR));
-                               DISK_history_add(current_hfdlg.ci.geometry, -1, HISTORY_GEO, 1);
-                               setharddrive(hDlg);
-                               updatehdfinfo (hDlg, true, false);
+                               if (DiskSelection (hDlg, IDC_PATH_GEOMETRY, 23, &workprefs, NULL, current_hfdlg.ci.geometry)) {
+                                       getcomboboxtext(hDlg, IDC_PATH_GEOMETRY, current_hfdlg.ci.geometry, sizeof  current_hfdlg.ci.geometry / sizeof(TCHAR));
+                                       DISK_history_add(current_hfdlg.ci.geometry, -1, HISTORY_GEO, 1);
+                                       setharddrive(hDlg);
+                                       updatehdfinfo (hDlg, true, false);
+                               }
                                break;
                        case IDC_SECTORS:
                                p = &current_hfdlg.ci.psecs;
@@ -13881,7 +13891,7 @@ static int harddiskdlg_button (HWND hDlg, WPARAM wParam)
        int button = LOWORD (wParam);
        switch (button) {
        case IDC_CD_SELECT:
-               DiskSelection (hDlg, wParam, 17, &workprefs, NULL);
+               DiskSelection (hDlg, wParam, 17, &workprefs, NULL, NULL);
                quickstart_cdtype = 1;
                workprefs.cdslots[0].inuse = true;
                addcdtype (hDlg, IDC_CD_TYPE);
@@ -14320,10 +14330,30 @@ static void addcdtype (HWND hDlg, int id)
        SendDlgItemMessage (hDlg, id, CB_SETCURSEL, cdtype, 0);
 }
 
+static int fromdfxtype(int dfx)
+{
+       if (dfx == 6)
+               dfx = 3;
+       else if (dfx >= 3)
+               dfx++;
+       dfx++;
+       return dfx;
+}
+
+static int todfxtype(int val)
+{
+       val--;
+       if (val == 3)
+               val = 6;
+       else if (val > 3)
+               val--;
+       return val;
+}
+
 static void addfloppytype (HWND hDlg, int n)
 {
        int state, chk;
-       int nn = workprefs.floppyslots[n].dfxtype + 1;
+       int nn = fromdfxtype(workprefs.floppyslots[n].dfxtype);
        int showcd = 0;
        TCHAR *text;
 
@@ -14405,11 +14435,11 @@ static void addfloppytype (HWND hDlg, int n)
                CheckDlgButton (hDlg, f_enable, state ? BST_CHECKED : BST_UNCHECKED);
                TCHAR tmp[10];
                tmp[0] = 0;
-               if (n < 2 || nn - 1 < DRV_PC_ONLY_40) {
+               if (n < 2 || ((nn - 1 != 5) && (nn  - 1 != 6))) {
                        if (!showcd || n != 1)
                                _stprintf(tmp, _T("DF%d:"), n);
                } else {
-                       int t = nn - 1 == DRV_PC_ONLY_40 ? 40 : 80;
+                       int t = nn - 1 == 5 ? 40 : 80;
                        _stprintf(tmp, _T("%c: (%d)"), n == 2 ? 'A' : 'B', t);
                }
                if (tmp[0])
@@ -14433,8 +14463,8 @@ static void getfloppytype (HWND hDlg, int n)
        int f_type = floppybuttons[n][3];
        LRESULT val = SendDlgItemMessage (hDlg, f_type, CB_GETCURSEL, 0, 0L);
 
-       if (val != CB_ERR && workprefs.floppyslots[n].dfxtype != val - 1) {
-               workprefs.floppyslots[n].dfxtype = (int)val - 1;
+       if (val != CB_ERR && workprefs.floppyslots[n].dfxtype != todfxtype(val)) {
+               workprefs.floppyslots[n].dfxtype = todfxtype(val);
                addfloppytype (hDlg, n);
        }
 }
@@ -14494,7 +14524,7 @@ static int getfloppybox (HWND hDlg, int f_text, TCHAR *out, int maxlen, int type
 bool gui_ask_disk(int drv, TCHAR *name)
 {
        _tcscpy(changed_prefs.floppyslots[drv].df, name);
-       DiskSelection (hAmigaWnd, IDC_DF0 + drv, 22, &changed_prefs, 0);
+       DiskSelection (hAmigaWnd, IDC_DF0 + drv, 22, &changed_prefs, NULL, NULL);
        _tcscpy(name, changed_prefs.floppyslots[drv].df);
        return true;
 }
@@ -14647,6 +14677,7 @@ static INT_PTR CALLBACK FloppyDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARA
                                SendDlgItemMessage (hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)ft35dd);
                                SendDlgItemMessage (hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)ft35hd);
                                SendDlgItemMessage (hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)ft525sd);
+                               SendDlgItemMessage (hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)_T("5.25\" (80)"));
                                SendDlgItemMessage (hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)ft35ddescom);
                                if (i >= 2) {
                                        SendDlgItemMessage(hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)_T("PC Bridge (40)"));
@@ -14835,11 +14866,11 @@ static INT_PTR CALLBACK FloppyDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARA
                        deletesaveimage (hDlg, 3);
                        break;
                case IDC_CREATE:
-                       DiskSelection (hDlg, wParam, 1, &workprefs, 0);
+                       DiskSelection (hDlg, wParam, 1, &workprefs, NULL, NULL);
                        addfloppyhistory (hDlg);
                        break;
                case IDC_CREATE_RAW:
-                       DiskSelection (hDlg, wParam, 1, &workprefs, 0);
+                       DiskSelection (hDlg, wParam, 1, &workprefs, NULL, NULL);
                        addfloppyhistory (hDlg);
                        break;
                }
@@ -18869,7 +18900,7 @@ static INT_PTR CALLBACK AVIOutputDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LP
                        break;
                case IDC_STATEREC_SAVE:
                        if (input_record > INPREC_RECORD_NORMAL) {
-                               if (DiskSelection (hDlg, wParam, 16, &workprefs, NULL)) {
+                               if (DiskSelection (hDlg, wParam, 16, &workprefs, NULL, NULL)) {
                                        TCHAR tmp[MAX_DPATH];
                                        _tcscpy (tmp, workprefs.inprecfile);
                                        _tcscat (tmp, _T(".uss"));
@@ -18901,7 +18932,7 @@ static INT_PTR CALLBACK AVIOutputDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LP
                                inprec_close (true);
                        } else {
                                inprec_close (true);
-                               if (DiskSelection (hDlg, wParam, 15, &workprefs, NULL)) {
+                               if (DiskSelection (hDlg, wParam, 15, &workprefs, NULL, NULL)) {
                                        input_play = INPREC_PLAY_NORMAL;
                                        _tcscpy (currprefs.inprecfile, workprefs.inprecfile);
                                        set_special (SPCFLAG_MODE_CHANGE);
index d0339e9fae69b2fe0112c8ce31b607d7e33f590f..ae6f374c1747c6138d56f45ad8b87ef87ea79783 100644 (file)
@@ -10,7 +10,7 @@
 #define CONFIG_DELETE 4
 
 void WIN32GUI_LoadUIString (DWORD id, TCHAR *string, DWORD dwStringLen);
-extern int DiskSelection (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs, TCHAR *);
+extern int DiskSelection (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs, TCHAR *, TCHAR *);
 void InitializeListView (HWND hDlg);
 extern void pre_gui_message (const TCHAR*,...);
 extern void gui_message_id (int id);