]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
3100b14
authorToni Wilen <twilen@winuae.net>
Sat, 28 Mar 2015 14:14:56 +0000 (16:14 +0200)
committerToni Wilen <twilen@winuae.net>
Sat, 28 Mar 2015 14:14:56 +0000 (16:14 +0200)
cfgfile.cpp
include/options.h
od-win32/resources/resource.h
od-win32/resources/winuae.rc
od-win32/win32.cpp
od-win32/win32.h
od-win32/winuaechangelog.txt

index 12d392d64a2d42bf575d5e79682bc9a835033535..0fbcb8d5b1b253905371667537a434fefb688a31 100644 (file)
@@ -147,7 +147,7 @@ static const TCHAR *interpolmode[] = { _T("none"), _T("anti"), _T("sinc"), _T("r
 static const TCHAR *collmode[] = { _T("none"), _T("sprites"), _T("playfields"), _T("full"), 0 };
 static const TCHAR *compmode[] = { _T("direct"), _T("indirect"), _T("indirectKS"), _T("afterPic"), 0 };
 static const TCHAR *flushmode[] = { _T("soft"), _T("hard"), 0 };
-static const TCHAR *kbleds[] = { _T("none"), _T("POWER"), _T("DF0"), _T("DF1"), _T("DF2"), _T("DF3"), _T("HD"), _T("CD"), 0 };
+static const TCHAR *kbleds[] = { _T("none"), _T("POWER"), _T("DF0"), _T("DF1"), _T("DF2"), _T("DF3"), _T("HD"), _T("CD"), _T("DFx"), 0 };
 static const TCHAR *onscreenleds[] = { _T("false"), _T("true"), _T("rtg"), _T("both"), 0 };
 static const TCHAR *soundfiltermode1[] = { _T("off"), _T("emulated"), _T("on"), 0 };
 static const TCHAR *soundfiltermode2[] = { _T("standard"), _T("enhanced"), 0 };
@@ -180,7 +180,8 @@ static const TCHAR *maxhoriz[] = { _T("lores"), _T("hires"), _T("superhires"), 0
 static const TCHAR *maxvert[] = { _T("nointerlace"), _T("interlace"), 0 };
 static const TCHAR *abspointers[] = { _T("none"), _T("mousehack"), _T("tablet"), 0 };
 static const TCHAR *magiccursors[] = { _T("both"), _T("native"), _T("host"), 0 };
-static const TCHAR *autoscale[] = { _T("none"), _T("auto"), _T("standard"), _T("max"), _T("scale"), _T("resize"), _T("center"), _T("manual"), _T("integer"), _T("integer_auto"), 0 };
+static const TCHAR *autoscale[] = { _T("none"), _T("auto"), _T("standard"), _T("max"), _T("scale"), _T("resize"), _T("center"), _T("manual"),
+       _T("integer"), _T("half-integer"), _T("integer_auto"), _T("half-integer_auto"), 0 };
 static const TCHAR *autoscale_rtg[] = { _T("resize"), _T("scale"), _T("center"), _T("integer"), 0 };
 static const TCHAR *joyportmodes[] = { _T(""), _T("mouse"), _T("mousenowheel"), _T("djoy"), _T("gamepad"), _T("ajoy"), _T("cdtvjoy"), _T("cd32joy"), _T("lightpen"), 0 };
 static const TCHAR *joyaf[] = { _T("none"), _T("normal"), _T("toggle"), _T("always"), 0 };
@@ -1010,7 +1011,7 @@ static void cfgfile_write_board_rom(struct zfile *f, struct multipath *mp, struc
                                _stprintf(buf, _T("%s%s_rom"), name, i ? _T("_ext") : _T(""));
                                cfgfile_dwrite_str (f, buf, br->roms[i].romident);
                        }
-                       if (br->roms[i].autoboot_disabled || ert->subtypes) {
+                       if (br->roms[i].autoboot_disabled || ert->subtypes || ert->id_jumper) {
                                TCHAR buf2[256], *p;
                                buf2[0] = 0;
                                p = buf2;
@@ -1029,7 +1030,24 @@ static void cfgfile_write_board_rom(struct zfile *f, struct multipath *mp, struc
                                                _tcscat(buf2, _T(","));
                                        _tcscat(buf2, _T("autoboot_disabled=true"));
                                }
-                               cfgfile_dwrite_str (f, buf, buf2);
+                               if (ert->id_jumper) {
+                                       TCHAR tmp[256];
+                                       _stprintf(tmp, _T("id=%d"), br->roms[i].device_id);
+                                       if (buf2[0])
+                                               _tcscat(buf2, _T(","));
+                                       _tcscat(buf2, tmp);
+                               }
+                               if (br->roms[i].device_settings && ert->settings) {
+                                       for (int i = 0; ert->settings[i].name; i++) {
+                                               if (br->roms[i].device_settings & (1 << i)) {
+                                                       if (buf2[0])
+                                                               _tcscat(buf2, _T(","));
+                                                       _tcscat(buf2, ert->settings[i].configname);
+                                               }
+                                       }
+                               }
+                               if (buf2[0])
+                                       cfgfile_dwrite_str (f, buf, buf2);
                        }
 
                        if (br->roms[i].board_ram_size) {
@@ -1123,6 +1141,7 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type)
        cfgfile_write_bool (f, _T("kickshifter"), p->kickshifter);
        cfgfile_write_bool (f, _T("ks_write_enabled"), p->rom_readwrite);
 
+       cfgfile_write (f, _T("floppy_volume"), _T("%d"), p->dfxclickvolume_disk[0]);
        p->nr_floppies = 4;
        for (i = 0; i < 4; i++) {
                _stprintf (tmp, _T("floppy%d"), i);
@@ -1137,6 +1156,12 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type)
                        _stprintf (tmp, _T("floppy%dsoundext"), i);
                        cfgfile_dwrite (f, tmp, p->floppyslots[i].dfxclickexternal);
                }
+               if (p->floppyslots[i].dfxclick) {
+                       _stprintf (tmp, _T("floppy%dsoundvolume_disk"), i);
+                       cfgfile_write (f, tmp, _T("%d"), p->dfxclickvolume_disk[i]);
+                       _stprintf (tmp, _T("floppy%dsoundvolume_empty"), i);
+                       cfgfile_write (f, tmp, _T("%d"), p->dfxclickvolume_empty[i]);
+               }
                if (p->floppyslots[i].dfxtype < 0 && p->nr_floppies > i)
                        p->nr_floppies = i;
        }
@@ -1182,7 +1207,6 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type)
        cfgfile_write (f, _T("nr_floppies"), _T("%d"), p->nr_floppies);
        cfgfile_dwrite_bool (f, _T("floppy_write_protect"), p->floppy_read_only);
        cfgfile_write (f, _T("floppy_speed"), _T("%d"), p->floppy_speed);
-       cfgfile_write (f, _T("floppy_volume"), _T("%d"), p->dfxclickvolume);
        cfgfile_dwrite (f, _T("floppy_channel_mask"), _T("0x%x"), p->dfxclickchannelmask);
        cfgfile_write (f, _T("cd_speed"), _T("%d"), p->cd_speed);
        cfgfile_write_bool (f, _T("parallel_on_demand"), p->parallel_demand);
@@ -1606,14 +1630,16 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type)
        if (p->cpuboard_type) {
                const struct cpuboardtype *cbt = &cpuboards[p->cpuboard_type];
                const struct cpuboardsubtype *cbst = &cbt->subtypes[p->cpuboard_subtype];
-               const struct cpuboardsettings *cbs = cbst->settings;
+               const struct expansionboardsettings *cbs = cbst->settings;
                cfgfile_dwrite_str(f, _T("cpuboard_type"), cbst->configname);
                if (cbs && p->cpuboard_settings) {
                        tmp[0] = 0;
                        for (int i = 0; cbs[i].name; i++) {
-                               if (tmp[0])
-                                       _tcscat(tmp, _T(","));
-                               _tcscat(tmp, cbs[i].configname);
+                               if (p->cpuboard_settings & (1 << i)) {
+                                       if (tmp[0])
+                                               _tcscat(tmp, _T(","));
+                                       _tcscat(tmp, cbs[i].configname);
+                               }
                        }
                        cfgfile_dwrite_str(f, _T("cpuboard_settings"), tmp);
                }
@@ -2070,26 +2096,45 @@ static int getintval2 (TCHAR **p, int *result, int delim, bool last)
        return 1;
 }
 
-static bool cfgfile_option_find(TCHAR *s, const TCHAR *option)
+static TCHAR *cfgfile_option_find_it(TCHAR *s, const TCHAR *option, bool checkequals)
 {
        TCHAR buf[MAX_DPATH];
        if (!s)
-               return false;
+               return NULL;
        _tcscpy(buf, s);
        _tcscat(buf, _T(","));
        TCHAR *p = buf;
        for (;;) {
                TCHAR *tmpp = _tcschr (p, ',');
+               TCHAR *tmpp2 = NULL;
                if (tmpp == NULL)
-                       return false;
+                       return NULL;
                *tmpp++ = 0;
+               if (checkequals) {
+                       tmpp2 = _tcschr(p, '=');
+                       if (!tmpp2)
+                               return NULL;
+                       *tmpp2++ = 0;
+               }
                if (!strcasecmp(p, option)) {
-                       return true;
+                       if (checkequals)
+                               return tmpp2;
+                       return p;
                }
                p = tmpp;
        }
 }
 
+static bool cfgfile_option_find(TCHAR *s, const TCHAR *option)
+{
+       return cfgfile_option_find_it(s, option, false) != NULL;
+}
+
+static TCHAR *cfgfile_option_get(TCHAR *s, const TCHAR *option)
+{
+       return cfgfile_option_find_it(s, option, true);
+}
+
 static int cfgfile_option_select(TCHAR *s, const TCHAR *option, const TCHAR *select)
 {
        TCHAR buf[MAX_DPATH];
@@ -2137,6 +2182,8 @@ static int cfgfile_option_bool(TCHAR *s, const TCHAR *option)
                if (tmpp2)
                        *tmpp2++ = 0;
                if (!strcasecmp(p, option)) {
+                       if (!tmpp2)
+                               return 0;
                        TCHAR *tmpp3 = _tcschr (tmpp2, ',');
                        if (tmpp3)
                                *tmpp3 = 0;
@@ -2356,8 +2403,15 @@ static int cfgfile_parse_host (struct uae_prefs *p, TCHAR *option, TCHAR *value)
                || cfgfile_intval (option, value, _T("floppy1sound"), &p->floppyslots[1].dfxclick, 1)
                || cfgfile_intval (option, value, _T("floppy2sound"), &p->floppyslots[2].dfxclick, 1)
                || cfgfile_intval (option, value, _T("floppy3sound"), &p->floppyslots[3].dfxclick, 1)
-               || cfgfile_intval (option, value, _T("floppy_channel_mask"), &p->dfxclickchannelmask, 1)
-               || cfgfile_intval (option, value, _T("floppy_volume"), &p->dfxclickvolume, 1))
+               || cfgfile_intval (option, value, _T("floppy0soundvolume_disk"), &p->dfxclickvolume_disk[0], 1)
+               || cfgfile_intval (option, value, _T("floppy1soundvolume_disk"), &p->dfxclickvolume_disk[1], 1)
+               || cfgfile_intval (option, value, _T("floppy2soundvolume_disk"), &p->dfxclickvolume_disk[2], 1)
+               || cfgfile_intval (option, value, _T("floppy3soundvolume_disk"), &p->dfxclickvolume_disk[3], 1)
+               || cfgfile_intval (option, value, _T("floppy0soundvolume_empty"), &p->dfxclickvolume_empty[0], 1)
+               || cfgfile_intval (option, value, _T("floppy1soundvolume_empty"), &p->dfxclickvolume_empty[1], 1)
+               || cfgfile_intval (option, value, _T("floppy2soundvolume_empty"), &p->dfxclickvolume_empty[2], 1)
+               || cfgfile_intval (option, value, _T("floppy3soundvolume_empty"), &p->dfxclickvolume_empty[3], 1)
+               || cfgfile_intval (option, value, _T("floppy_channel_mask"), &p->dfxclickchannelmask, 1))
                return 1;
 
        if (cfgfile_path (option, value, _T("floppy0soundext"), p->floppyslots[0].dfxclickexternal, sizeof p->floppyslots[0].dfxclickexternal / sizeof (TCHAR))
@@ -2459,6 +2513,14 @@ static int cfgfile_parse_host (struct uae_prefs *p, TCHAR *option, TCHAR *value)
        }
 #endif
 
+       if (cfgfile_intval (option, value, _T("floppy_volume"), &v, 1)) {
+               for (int i = 0; i < 4; i++) {
+                       p->dfxclickvolume_disk[i] = v;
+                       p->dfxclickvolume_empty[i] = v;
+               }
+               return 1;
+       }
+
        if (_tcscmp (option, _T("gfx_width_windowed")) == 0) {
                if (!_tcscmp (value, _T("native"))) {
                        p->gfx_size_win.width = 0;
@@ -3941,6 +4003,19 @@ static bool cfgfile_read_board_rom(struct uae_prefs *p, const TCHAR *option, con
                                if (cfgfile_option_bool(buf2, _T("autoboot_disabled")) == 1) {
                                        brc->roms[idx].autoboot_disabled = true;
                                }
+                               if (ert->settings) {
+                                       for (int k = 0; ert->settings[k].name; k++) {
+                                               if (cfgfile_option_find(buf2, ert->settings[k].configname)) {
+                                                       brc->roms[idx].device_settings |= 1 << k;
+                                               }
+                                       }
+                               }
+                               if (ert->id_jumper) {
+                                       TCHAR *p = cfgfile_option_get(buf2, _T("id"));
+                                       if (p) {
+                                               brc->roms[idx].device_id = _tstol(p);
+                                       }
+                               }
                                if (ert->subtypes) {
                                        const struct expansionsubromtype *srt = ert->subtypes;
                                        TCHAR tmp[MAX_DPATH], *p;
@@ -4173,7 +4248,7 @@ static int cfgfile_parse_hardware (struct uae_prefs *p, const TCHAR *option, TCH
                p->cpuboard_settings = 0;
                const struct cpuboardsubtype *cbst = &cpuboards[p->cpuboard_type].subtypes[p->cpuboard_subtype];
                if (cbst->settings) {
-                       const struct cpuboardsettings *cbs = cbst->settings;
+                       const struct expansionboardsettings *cbs = cbst->settings;
                        for(i = 0; cbs[i].name; i++) {
                                if (cfgfile_option_find(tmpbuf, cbs[i].configname)) {
                                        p->cpuboard_settings |= 1 << i;
@@ -5976,7 +6051,10 @@ void default_prefs (struct uae_prefs *p, int type)
        p->floppy_write_length = 0;
        p->floppy_random_bits_min = 1;
        p->floppy_random_bits_max = 3;
-       p->dfxclickvolume = 33;
+       p->dfxclickvolume_disk[0] = 33;
+       p->dfxclickvolume_disk[1] = 33;
+       p->dfxclickvolume_empty[0] = 33;
+       p->dfxclickvolume_empty[1] = 33;
        p->dfxclickchannelmask = 0xffff;
        p->cd_speed = 100;
 
index ff7993c82112e310cbca1b5de1292b8c864495a1..306ca0f1dcc28b80f3ccea3055820ab9def17f33 100644 (file)
@@ -202,7 +202,9 @@ enum { CP_GENERIC = 1, CP_CDTV, CP_CDTVCR, CP_CD32, CP_A500, CP_A500P, CP_A600,
 #define AUTOSCALE_CENTER 6
 #define AUTOSCALE_MANUAL 7 // use gfx_xcenter_pos and gfx_ycenter_pos
 #define AUTOSCALE_INTEGER 8
-#define AUTOSCALE_INTEGER_AUTOSCALE 9
+#define AUTOSCALE_HALF_INTEGER 9
+#define AUTOSCALE_INTEGER_AUTOSCALE 10
+#define AUTOSCALE_HALF_INTEGER_AUTOSCALE 11
 
 #define MONITOREMU_NONE 0
 #define MONITOREMU_AUTO 1
@@ -290,6 +292,8 @@ struct romconfig
        TCHAR romident[256];
        uae_u32 board_ram_size;
        bool autoboot_disabled;
+       int device_id;
+       int device_settings;
        int subtype;
        void *unitdata;
 };
@@ -584,7 +588,8 @@ struct uae_prefs {
        struct floppyslot floppyslots[4];
        bool floppy_read_only;
        TCHAR dfxlist[MAX_SPARE_DRIVES][MAX_DPATH];
-       int dfxclickvolume;
+       int dfxclickvolume_disk[4];
+       int dfxclickvolume_empty[4];
        int dfxclickchannelmask;
 
        TCHAR luafiles[MAX_LUA_STATES][MAX_DPATH];
index 630e0c1f6096a9ab2672e559941d63dbae4fa9a5..f425f378553f089989d78ddcc7745a2ed5e072d8 100644 (file)
 #define IDS_DISPLAY_ATTRIBUTES          403
 #define IDS_NUMSG_NO_PPC                404
 #define IDS_NUMSG_UAEBOOTROM_PCC        405
+#define IDS_AUTOSCALE_HALF_INTEGER      406
+#define IDS_AUTOSCALE_HALF_INTEGER_AUTOSCALE 407
 #define IDS_QS_MODELS                   1000
 #define IDS_QS_MODEL_A500               1001
 #define IDS_QS_MODEL_A500P              1002
 #define IDC_CONFIGLIST                  1404
 #define IDC_SCSIROMSELECTNUM            1404
 #define IDC_EDITNAME                    1405
+#define IDC_SCSIROMID                   1405
 #define IDC_EDITDESCRIPTION             1406
 #define IDC_QUICKSAVE                   1408
 #define IDC_QUICKLOAD                   1409
 #define IDC_SER_SHARED                  1553
 #define IDC_GUI_RESIZE                  1553
 #define IDC_SER_CTSRTS                  1554
+#define IDC_GUI_FULLSCREEN              1554
 #define IDC_SER_DIRECT                  1555
 #define IDC_PSPRINTER                   1556
 #define IDC_PSPRINTERDETECT             1557
 #define IDC_CS_CACHE_TEXT               1582
 #define IDC_SOUNDVOLUMEEXT2             1582
 #define IDC_CS_CACHE_TEXT2              1583
+#define IDC_SOUNDDRIVEVOLUMEX           1583
 #define IDC_COLLISIONS                  1584
 #define IDC_JITENABLE                   1584
+#define IDC_SOUNDDRIVEVOLUMEX2          1584
 #define IDC_DISASSEMBLY                 1585
 #define IDC_MMUENABLE                   1585
 #define IDC_COLLISION0                  1589
 #define IDC_FILTER_NATIVERTG            1839
 #define IDC_P96MEM                      1840
 #define IDC_DA_SLIDER                   1841
+#define IDC_EXPANSION_SETTING1          1841
 #define IDC_CPUBOARD_TYPE               1842
+#define IDC_EXPANSION_SETTING2          1842
 #define IDC_CPUBOARDMEM                 1843
 #define IDC_Z3MAPPING                   1844
 #define IDC_CPUBOARD_SUBTYPE            1845
 #define _APS_3D_CONTROLS                     1
 #define _APS_NEXT_RESOURCE_VALUE        398
 #define _APS_NEXT_COMMAND_VALUE         40050
-#define _APS_NEXT_CONTROL_VALUE         1841
+#define _APS_NEXT_CONTROL_VALUE         1842
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif
index 2f1d6fe05f1a337ab580d2c6e1b54eb144ba9fde..8a18220c62586b4765c180d0863c67662281529f 100644 (file)
@@ -109,10 +109,14 @@ BEGIN
     LTEXT           "Accelerator board ROM file:",IDC_STATIC,12,273,170,15,SS_CENTERIMAGE
     COMBOBOX        IDC_CPUBOARDROMFILE,12,289,171,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON      "...",IDC_CPUBOARDROMCHOOSER,187,288,10,15
-    CONTROL         "Autoboot disabled",IDC_SCSIROMFILEAUTOBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,216,84,12
+    CONTROL         "Autoboot disabled",IDC_SCSIROMFILEAUTOBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,216,99,12
     COMBOBOX        IDC_SCSIROMSUBSELECT,202,253,171,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
     COMBOBOX        IDC_SCSIROMSELECTNUM,175,235,22,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
     GROUPBOX        "Miscellaneous",IDC_STATIC,0,96,395,106
+    COMBOBOX        IDC_SCSIROMID,356,217,29,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Controller ID:",IDC_STATIC,294,216,57,15,SS_CENTERIMAGE
+    CONTROL         "-",IDC_EXPANSION_SETTING1,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,11,256,77,10
+    CONTROL         "-",IDC_EXPANSION_SETTING2,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,116,256,77,10
 END
 
 IDD_DISPLAY DIALOGEX 0, 0, 396, 298
@@ -367,7 +371,7 @@ BEGIN
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,301,201,11
 END
 
-IDD_SOUND DIALOGEX 0, 0, 396, 288
+IDD_SOUND DIALOGEX 0, 0, 396, 306
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
@@ -401,18 +405,20 @@ BEGIN
     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,213,278,73
-    CONTROL         "",IDC_SOUNDDRIVEVOLUME,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,20,229,107,19
+    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,144,231,48,12,ES_CENTER | ES_READONLY
     COMBOBOX        IDC_SOUNDDRIVE,205,231,66,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_SOUNDDRIVESELECT,18,257,253,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "Drivers",IDC_STATIC,285,213,109,73
-    CONTROL         "DirectSound",IDC_SOUND_DS,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,292,227,98,10
-    CONTROL         "WASAPI",IDC_SOUND_WASAPI,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,292,240,98,10
-    CONTROL         "OpenAL",IDC_SOUND_OPENAL,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,292,253,98,10
-    CONTROL         "PortAudio",IDC_SOUND_PORTAUDIO,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,292,266,98,10
+    COMBOBOX        IDC_SOUNDDRIVESELECT,18,281,253,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         "Include CD and FMV audio",IDC_SOUND_CDPAULAMIX,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,13,108,108,10
     COMBOBOX        IDC_SOUNDVOLUMESELECT,147,65,64,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "",IDC_SOUNDDRIVEVOLUMEX,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,20,254,107,19
+    EDITTEXT        IDC_SOUNDDRIVEVOLUMEX2,144,258,48,12,ES_CENTER | ES_READONLY
 END
 
 IDD_LOADSAVE DIALOGEX 0, 0, 396, 318
@@ -559,13 +565,12 @@ BEGIN
     CTEXT           "DirectDraw:",IDC_STATIC,272,106,117,10,SS_CENTERIMAGE
     COMBOBOX        IDC_DD_SURFACETYPE,287,119,87,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
     GROUPBOX        "GUI",IDC_STATIC,266,144,128,93
-    CTEXT           "Language:",IDC_STATIC,271,154,117,10,SS_CENTERIMAGE
-    COMBOBOX        IDC_LANGUAGE,273,168,114,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "GUI Font...",IDC_GUI_FONT,272,185,54,14
-    PUSHBUTTON      "List Font...",IDC_GUI_LISTFONT,333,185,54,14
-    PUSHBUTTON      "Set default",IDC_GUI_DEFAULT,272,204,54,14
-    COMBOBOX        IDC_GUI_SIZE,333,205,54,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "Resizeable GUI",IDC_GUI_RESIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,273,222,114,11
+    COMBOBOX        IDC_LANGUAGE,273,157,114,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "GUI Font...",IDC_GUI_FONT,272,174,54,14
+    PUSHBUTTON      "List Font...",IDC_GUI_LISTFONT,333,174,54,14
+    PUSHBUTTON      "Set default",IDC_GUI_DEFAULT,272,193,54,14
+    COMBOBOX        IDC_GUI_SIZE,333,194,54,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "Resizeable GUI",IDC_GUI_RESIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,273,211,114,11
     GROUPBOX        "State Files",IDC_STATIC,1,242,393,38
     EDITTEXT        IDC_STATENAME,8,257,231,13,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
     CONTROL         "",IDC_STATECLEAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,244,261,9,10
@@ -576,6 +581,7 @@ BEGIN
     COMBOBOX        IDC_KBLED2,97,295,64,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     COMBOBOX        IDC_KBLED3,184,295,64,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     CONTROL         "USB mode",IDC_KBLED_USB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,296,64,11
+    CONTROL         "Fullscreen GUI",IDC_GUI_FULLSCREEN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,273,224,114,11
 END
 
 IDD_HARDFILE DIALOGEX 0, 0, 397, 279
@@ -1411,6 +1417,7 @@ BEGIN
 
     IDD_SOUND, DIALOG
     BEGIN
+        BOTTOMMARGIN, 288
     END
 
     IDD_LOADSAVE, DIALOG
@@ -1960,6 +1967,8 @@ BEGIN
     IDS_NUMSG_NO_PPC        "PPC CPU was started but PPC CPU emulation core plugin was not found. Download available from http://www.winuae.net/"
     IDS_NUMSG_UAEBOOTROM_PCC 
                             "PPC native OS booted with UAE boot ROM active. UAE expansions are not hardware emulated and are not PPC compatible. (UAE HD controller, uaescsi.device, uaeserial, bsdsocket and so on..)"
+    IDS_AUTOSCALE_HALF_INTEGER "Half-integer scaling"
+    IDS_AUTOSCALE_HALF_INTEGER_AUTOSCALE "Auto Half-integer scaling"
 END
 
 #endif    // English resources
index da5247fb2d8e0fd61c4a956010d36dcea4b57d4b..0161bae986c73882ca453d908e1261ac9ea3a779 100644 (file)
@@ -6306,6 +6306,11 @@ HMODULE uae_dlopen_plugin(const TCHAR *name)
        HMODULE h;
        TCHAR path[MAX_DPATH];
 #ifdef WIN64
+       _tcscpy(path, name);
+       _tcscat(path, _T("_x64.dll"));
+       h = WIN32_LoadLibrary(path);
+       if (h)
+               return h;
        _tcscpy(path, _T("qemu\\"));
        _tcscat(path, name);
        _tcscat(path, _T("_x64.dll"));
index a7ec090af4ac3af9646acd7071361254bae57fdb..c703ffdc9ac51039aec7e1b4389a1389a8e4e45c 100644 (file)
 #define LANG_DLL_FULL_VERSION_MATCH 1
 
 #if WINUAEPUBLICBETA
-#define WINUAEBETA _T("13")
+#define WINUAEBETA _T("14")
 #else
 #define WINUAEBETA _T("")
 #endif
 
-#define WINUAEDATE MAKEBD(2015, 3, 21)
+#define WINUAEDATE MAKEBD(2015, 3, 28)
 
 //#define WINUAEEXTRA _T("AmiKit Preview")
 //#define WINUAEEXTRA _T("Amiga Forever Edition")
index 7ccbaea1f411d557bdd1fa1c3f18e74303e0318b..6c690e8173f72aed6157e109470bc4c460aefc02 100644 (file)
@@ -1,4 +1,72 @@
 
+Beta 14:
+
+- Show selected accelerator board and HD controller name(s) in log lines.
+- GVP Series I and II HD controllers can now be active at the same time.
+- Added SCSI controller ID selection (only AdSCSI and A4091 supported so far)
+- Mark HD controllers with * if it is enabled, becomes [x] if more than 1 controller is active.
+- Fixed referencing to already freed SCSI/IDE HD controller context structure after reset/restart (b12)
+- Added SupraDrive AMAB3, AMAB4 and AMAB5 ROMs.
+- NCR539x based SCSI controllers always accessed unit 0.
+- Added emulation of edge case when SPRxPOS or SPRxCTL vertical position is updated at the last available dma slot
+  at the end of scanline. Next line's vertical comparison will match just before this position, in other words, if
+  old value would match in next line and new value does not anymore, comparison match still happens. Fixes
+  Arc Ed / United Forces missing sprite scroller.
+- Added half-integer scaling option. (*0.5, *1.0, *1.5 and so on)
+- New Velvet prototype difference found: both CIAs generate level 2 interrupt. Now Velvet tries to boot from
+  disk, reads and executes boot block code if disk has correct bootblock which is different than release AmigaOS
+  bootblock. MFM level format seems to be identical. Unfortunately, at least so far, no original Velvet floppy
+  disks have been found and for some reason real hardware refuses to read any disks.
+- If -seriallog is enabled, console log window also listens for key codes and sends them to emulated serial
+  port. Very basic console emulator, enables quick use of Velvet ROM built-in serial debugger.
+- Added "Any floppy drive" option to keyboard led configuration.
+- Floppy sound volume control is not global anymore. Empty and disk in drive states also have separate volume
+  settings. (Upper volume slider = drive empty, lower slider = disk in drive)
+- Added fullscreen GUI option to misc panel. Opens GUI in max size, possibly useful with low resolution devices
+  and/or small Windows tablets.
+- Z3 autoconfig in "UAE" mode didn't work correctly with hardware RTG boards (b4)
+
+Beta 13:
+
+- Mainboard SCSI controllers didn't initialize correctly (A3000/A4000T/CDTV) (b12)
+- "Do not force full display reset.." update made it worse, should be better now (b12)
+- I finally bothered to carefully re-examine AR3 freezer behavior, emulation updated, should now match real
+  hardware, previously unsupported features like autofire work.
+- If copper DMA is switched off mid-instruction, allow instruction to finish. Fixes AR2 weird copper
+  list detection code.
+- Added RDB mode HD geometry GUI support. (RDB mode geometry option = what IDE Identify Device and SCSI
+  MODE SENSE Format Parameters/Rigid Disk Geometry returns). Very old controllers may require custom geometry.
+- Added HD/CF IDE harddrive GUI option. Currently only difference is in IDE Identify Device word 0 identifier.
+  (Cause for infamous hdtoolbox "Unit is not a disk (Type 7)" error)
+- Added GUI IDE and SCSI version selection to hardfile panel. IDE has ATA-1, ATA-2+ (old default, returns ATA-6
+  to allow LBA48 support and more) and ATA-2+ Strict which drops ATA-1 feature that become optional in ATA-2,
+  triggering A600/A1200/A4000 IDE driver bug that causes infamous "max transfer bug". (No, it isn't drive bug)
+  SCSI has SCSI-1 and SCSI-2 options. Currently only real difference is INQUIRY version number, some old
+  software (like original A590/A2091 install disk) require SCSI-1 version.
+- Added Archos ADD-500 emulation.
+- Added AdSCSI Advantage 2000 emulation.
+- Internal enforcer emulation hit can break to debugger, enable/disable with 'fen' debugger command.
+- SCSI Read Defect Data command: return empty defect header instead of Defect List Not Found error.
+  (ADD-500 driver gets confused if Read Defect Data command does not return any data)
+- WD33C93 SCSI devices didn't support multiple units (b12)
+- Added hack that fixes max overscan scrolling in demo Seven Seas / Andromeda. (Demo has workaround for chipset
+  bug that causes right edge to have a vertical gap if BPLCON1 is larger than zero. Hack is currently needed
+  because glitch happens when hpos=0 and emulation is not designed to handle bitplane changes that cross virtual
+  scanlines). Glitch was not emulated until few versions ago, demo worked only accidentally previously.
+- Added Windows 10 TP bug workaround, for some reason dialog window is visible before WM_INITDIALOG message
+  (documentation specifically says it won't be visible until after WM_INITDIALOG) and also dialog is set
+  as not visible. Fixes quickly appearing and disappering empty WinUAE GUI panel each time GUI is opened.
+
+AdSCSI Advantage 2000:
+- 5380 based fake DMA.
+- First 5380 based driver that uses chip's arbitrate bit instead of assuming AdSCSI is the only initiator.
+- 1.6 ROM added. (Anyone have later? At least 1.9 exists)
+- RDB parser is not fully compatible, does not load all filesystems (for example PFS3).
+
+Archos ADD-500:
+- Yet another 5380 based fake DMA SCSI controller.
+- v1.21 ROM added.
+
 Beta 12:
 
 - Do not force full display reset when switching to/from programmed mode and autoresolution is active