From 5cf242d305d6b542931259a2a62b646ed78f7f7a Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sat, 28 Mar 2015 16:14:56 +0200 Subject: [PATCH] 3100b14 --- cfgfile.cpp | 112 ++++++++++++++++++++++++++++------ include/options.h | 9 ++- od-win32/resources/resource.h | 10 ++- od-win32/resources/winuae.rc | 43 +++++++------ od-win32/win32.cpp | 5 ++ od-win32/win32.h | 4 +- od-win32/winuaechangelog.txt | 68 +++++++++++++++++++++ 7 files changed, 212 insertions(+), 39 deletions(-) diff --git a/cfgfile.cpp b/cfgfile.cpp index 12d392d6..0fbcb8d5 100644 --- a/cfgfile.cpp +++ b/cfgfile.cpp @@ -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; diff --git a/include/options.h b/include/options.h index ff7993c8..306ca0f1 100644 --- a/include/options.h +++ b/include/options.h @@ -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]; diff --git a/od-win32/resources/resource.h b/od-win32/resources/resource.h index 630e0c1f..f425f378 100644 --- a/od-win32/resources/resource.h +++ b/od-win32/resources/resource.h @@ -396,6 +396,8 @@ #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 @@ -673,6 +675,7 @@ #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 @@ -763,6 +766,7 @@ #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 @@ -791,8 +795,10 @@ #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 @@ -1222,7 +1228,9 @@ #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 @@ -1277,7 +1285,7 @@ #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 diff --git a/od-win32/resources/winuae.rc b/od-win32/resources/winuae.rc index 2f1d6fe0..8a18220c 100644 --- a/od-win32/resources/winuae.rc +++ b/od-win32/resources/winuae.rc @@ -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 diff --git a/od-win32/win32.cpp b/od-win32/win32.cpp index da5247fb..0161bae9 100644 --- a/od-win32/win32.cpp +++ b/od-win32/win32.cpp @@ -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")); diff --git a/od-win32/win32.h b/od-win32/win32.h index a7ec090a..c703ffdc 100644 --- a/od-win32/win32.h +++ b/od-win32/win32.h @@ -20,12 +20,12 @@ #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") diff --git a/od-win32/winuaechangelog.txt b/od-win32/winuaechangelog.txt index 7ccbaea1..6c690e81 100644 --- a/od-win32/winuaechangelog.txt +++ b/od-win32/winuaechangelog.txt @@ -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 -- 2.47.3