]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
3600b9
authorToni Wilen <twilen@winuae.net>
Sat, 2 Dec 2017 16:47:32 +0000 (18:47 +0200)
committerToni Wilen <twilen@winuae.net>
Sat, 2 Dec 2017 16:47:32 +0000 (18:47 +0200)
16 files changed:
cfgfile.cpp
disk.cpp
include/debug.h
include/options.h
od-win32/resources/resource.h
od-win32/resources/winuae.rc
od-win32/rp.cpp
od-win32/win32.cpp
od-win32/win32.h
od-win32/win32gui.cpp
od-win32/win32gui.h
od-win32/win32gui_extra.cpp
od-win32/winuae_msvc15/winuae_msvc.vcxproj
od-win32/winuaechangelog.txt
uaeexe.cpp
uaelib.cpp

index efd838b666b9b064a390c4cdf581fab76be0b8c6..6eca06015e3ab8cfca3d9e743ad7d25900c7ea76 100644 (file)
@@ -2158,6 +2158,8 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type)
        cfgfile_dwrite_bool(f, _T("z3_autoconfig"), p->cs_z3autoconfig);
        cfgfile_dwrite_bool(f, _T("1mchipjumper"), p->cs_1mchipjumper);
        cfgfile_dwrite_bool(f, _T("color_burst"), p->cs_color_burst);
+       cfgfile_dwrite_bool(f, _T("toshiba_gary"), p->cs_toshibagary);
+       cfgfile_dwrite_bool(f, _T("rom_is_slow"), p->cs_romisslow);
        cfgfile_dwrite_str(f, _T("unmapped_address_space"), unmapped[p->cs_unmapped_space]);
        cfgfile_dwrite (f, _T("chipset_hacks"), _T("0x%x"), p->cs_hacks);
 
@@ -3970,6 +3972,8 @@ struct uaedev_config_data *add_filesys_config (struct uae_prefs *p, int index, s
                } else if (ci->type == UAEDEV_TAPE) {
                        if (ci->controller_type == HD_CONTROLLER_TYPE_UAE)
                                break;
+                       if (ci->controller_type >= HD_CONTROLLER_TYPE_IDE_FIRST && ci->controller_type <= HD_CONTROLLER_TYPE_IDE_LAST)
+                               break;
                        if (ci->controller_type >= HD_CONTROLLER_TYPE_SCSI_FIRST && ci->controller_type <= HD_CONTROLLER_TYPE_SCSI_LAST)
                                break;
                } else {
@@ -5030,6 +5034,8 @@ static int cfgfile_parse_hardware (struct uae_prefs *p, const TCHAR *option, TCH
                || cfgfile_yesno(option, value, _T("ics_agnus"), &p->cs_dipagnus)
                || cfgfile_yesno(option, value, _T("z3_autoconfig"), &p->cs_z3autoconfig)
                || cfgfile_yesno(option, value, _T("color_burst"), &p->cs_color_burst)
+               || cfgfile_yesno(option, value, _T("toshiba_gary"), &p->cs_toshibagary)
+               || cfgfile_yesno(option, value, _T("rom_is_slow"), &p->cs_romisslow)
                || cfgfile_yesno(option, value, _T("1mchipjumper"), &p->cs_1mchipjumper)
                || cfgfile_yesno(option, value, _T("agnus_bltbusybug"), &p->cs_agnusbltbusybug)
                || cfgfile_yesno(option, value, _T("gfxcard_hardware_vblank"), &p->rtg_hardwareinterrupt)
@@ -6073,11 +6079,55 @@ static int cfgfile_load_2 (struct uae_prefs *p, const TCHAR *filename, bool real
                        if (real) {
                                cfgfile_parse_separated_line (p, line1b, line2b, askedtype);
                        } else {
+                               // metadata
                                cfgfile_string (line1b, line2b, _T("config_description"), p->description, sizeof p->description / sizeof (TCHAR));
                                cfgfile_path (line1b, line2b, _T("config_hardware_path"), p->config_hardware_path, sizeof p->config_hardware_path / sizeof (TCHAR));
                                cfgfile_path (line1b, line2b, _T("config_host_path"), p->config_host_path, sizeof p->config_host_path / sizeof(TCHAR));
                                cfgfile_path (line1b, line2b, _T("config_all_path"), p->config_all_path, sizeof p->config_all_path / sizeof(TCHAR));
                                cfgfile_string (line1b, line2b, _T("config_window_title"), p->config_window_title, sizeof p->config_window_title / sizeof (TCHAR));
+                               // boxart checks
+                               cfgfile_path(line1b, line2b, _T("floppy0"), p->floppyslots[0].df, sizeof p->floppyslots[0].df / sizeof(TCHAR));
+                               TCHAR tmp[MAX_DPATH];
+                               if (!p->mountitems && (cfgfile_string(line1b, line2b, _T("hardfile2"), tmp, sizeof tmp / sizeof(TCHAR)) || cfgfile_string(line1b, line2b, _T("filesystem2"), tmp, sizeof tmp / sizeof(TCHAR)))) {
+                                       const TCHAR *s = _tcschr(tmp, ':');
+                                       if (s) {
+                                               if (!_tcscmp(line1b, _T("filesystem2"))) {
+                                                       s++;
+                                                       s = _tcschr(s, ':');
+                                               }
+                                               if (s) {
+                                                       s++;
+                                                       bool quoted = false;
+                                                       if (s[0] == '"') {
+                                                               s++;
+                                                               quoted = true;
+                                                       }
+                                                       const TCHAR *se = _tcschr(s, quoted ? '"' : ',');
+                                                       if (se) {
+                                                               tmp[se - tmp] = 0;
+                                                               _tcscpy(p->mountconfig[0].ci.rootdir, s);
+                                                               cfgfile_adjust_path(p->mountconfig[0].ci.rootdir, MAX_DPATH, NULL);
+                                                               p->mountitems = 1;
+                                                       }
+                                               }
+                                       }
+                               }
+                               if (!p->cdslots[0].inuse && cfgfile_path(line1b, line2b, _T("cdimage0"), tmp, sizeof tmp / sizeof(TCHAR))) {
+                                       TCHAR *s = tmp;
+                                       if (s[0] == '"') {
+                                               s++;
+                                               const TCHAR *se = _tcschr(s, '"');
+                                               if (se)
+                                                       tmp[se - tmp] = 0;
+                                       } else {
+                                               const TCHAR *se = _tcschr(s, ',');
+                                               if (se)
+                                                       tmp[se - tmp] = 0;
+                                       }
+                                       cfgfile_adjust_path(s, MAX_DPATH, NULL);
+                                       _tcscpy(p->cdslots[0].name, s);
+                                       p->cdslots[0].inuse = 1;
+                               }
                        }
                }
        }
@@ -6182,25 +6232,82 @@ int cfgfile_save (struct uae_prefs *p, const TCHAR *filename, int type)
        return 1;
 }
 
-int cfgfile_get_description (const TCHAR *filename, TCHAR *description, TCHAR *hostlink, TCHAR *hardwarelink, int *type)
+struct uae_prefs *cfgfile_open(const TCHAR *filename, int *type)
+{
+       struct uae_prefs *p = xcalloc(struct uae_prefs, 1);
+       if (cfgfile_load_2(p, filename, false, type))
+               return p;
+       xfree(p);
+       return NULL;
+}
+
+void cfgfile_close(struct uae_prefs *p)
 {
-       int result = 0;
-       struct uae_prefs *p = xmalloc (struct uae_prefs, 1);
+       xfree(p);
+}
 
+int cfgfile_get_description (struct uae_prefs *p, const TCHAR *filename, TCHAR *description, TCHAR *hostlink, TCHAR *hardwarelink, int *type)
+{
+       bool alloc = false;
+
+       if (!p) {
+               p = xmalloc(struct uae_prefs, 1);
+               alloc = true;
+       }
        p->description[0] = 0;
        p->config_host_path[0] = 0;
        p->config_hardware_path[0] = 0;
-       if (cfgfile_load_2 (p, filename, 0, type)) {
-               result = 1;
-               if (description)
-                       _tcscpy (description, p->description);
-               if (hostlink)
-                       _tcscpy (hostlink, p->config_host_path);
-               if (hardwarelink)
-                       _tcscpy (hardwarelink, p->config_hardware_path);
+       if (!p) {
+               alloc = true;
+               p = cfgfile_open(filename, type);
        }
-       xfree (p);
-       return result;
+       if (!p)
+               return 0;
+       if (description)
+               _tcscpy (description, p->description);
+       if (hostlink)
+               _tcscpy (hostlink, p->config_host_path);
+       if (hardwarelink)
+               _tcscpy (hardwarelink, p->config_hardware_path);
+       if (alloc) {
+               cfgfile_close(p);
+       }
+       return 1;
+}
+
+bool cfgfile_detect_art_path(const TCHAR *path, TCHAR *outpath)
+{
+       TCHAR tmp[MAX_DPATH];
+       const TCHAR *p;
+       if (!path[0])
+               return false;
+       write_log(_T("Possible boxart path: '%s'\n"), path);
+       _tcscpy(tmp, path);
+       p = _tcsrchr(tmp, '\\');
+       if (!p)
+               p = _tcsrchr(tmp, '/');
+       if (!p)
+               return false;
+       tmp[p - tmp] = 0;
+       _tcscat(tmp, FSDB_DIR_SEPARATOR_S);
+       _tcscat(tmp, _T("___Title.png"));
+       if (!zfile_exists(tmp))
+               return false;
+       tmp[p - tmp + 1] = 0;
+       _tcscpy(outpath, tmp);
+       write_log(_T("Detected!\n"));
+       return true;
+}
+
+bool cfgfile_detect_art(struct uae_prefs *p, TCHAR *path)
+{
+       if (cfgfile_detect_art_path(p->floppyslots[0].df, path))
+               return true;
+       if (p->mountitems > 0 && cfgfile_detect_art_path(p->mountconfig[0].ci.rootdir, path))
+               return true;
+       if (p->cdslots[0].inuse && cfgfile_detect_art_path(p->cdslots[0].name, path))
+               return true;
+       return false;
 }
 
 int cfgfile_configuration_change (int v)
index 5632b7b1046f421ca0b9f457038d35f3c13d0b50..2f98cad7e8cf684349a5ae1c79b24b7f3f66255c 100644 (file)
--- a/disk.cpp
+++ b/disk.cpp
@@ -2972,27 +2972,34 @@ void DISK_select (uae_u8 data)
 
        if (disk_debug_logging > 2) {
                if (velvet) {
-                       write_log (_T(" %d%d "), (selected & 1) ? 0 : 1, (selected & 2) ? 0 : 1);
+                       write_log (_T(" %d%d"), (selected & 1) ? 0 : 1, (selected & 2) ? 0 : 1);
                        if ((prev_data & 0x08) != (data & 0x08))
-                               write_log (_T(" dsksel0 %d "), (data & 0x08) ? 0 : 1);
+                               write_log (_T(" dsksel0>%d"), (data & 0x08) ? 0 : 1);
                        if ((prev_data & 0x10) != (data & 0x10))
-                               write_log (_T(" dsksel1 %d "), (data & 0x10) ? 0 : 1);
+                               write_log (_T(" dsksel1>%d"), (data & 0x10) ? 0 : 1);
                        if ((prev_data & 0x20) != (data & 0x20))
-                               write_log (_T(" dskmotor0 %d "), (data & 0x20) ? 0 : 1);
+                               write_log (_T(" dskmotor0>%d"), (data & 0x20) ? 0 : 1);
                        if ((prev_data & 0x40) != (data & 0x40))
-                               write_log (_T(" dskmotor1 %d "), (data & 0x40) ? 0 : 1);
+                               write_log (_T(" dskmotor1>%d"), (data & 0x40) ? 0 : 1);
                        if ((prev_data & 0x02) != (data & 0x02))
-                               write_log (_T(" direct %d "), (data & 0x02) ? 1 : 0);
+                               write_log (_T(" direct>%d"), (data & 0x02) ? 1 : 0);
                        if ((prev_data & 0x04) != (data & 0x04))
-                               write_log (_T(" side %d "), (data & 0x04) ? 1 : 0);
+                               write_log (_T(" side>%d"), (data & 0x04) ? 1 : 0);
                } else {
-                       write_log (_T(" %d%d%d%d "), (selected & 1) ? 0 : 1, (selected & 2) ? 0 : 1, (selected & 4) ? 0 : 1, (selected & 8) ? 0 : 1);
+                       write_log (_T(" %d%d%d%d"), (selected & 1) ? 0 : 1, (selected & 2) ? 0 : 1, (selected & 4) ? 0 : 1, (selected & 8) ? 0 : 1);
+                       for (int i = 0; i < 4; i++) {
+                               int im = 1 << i;
+                               if ((selected & im) && !(prev_selected & im))
+                                       write_log(_T(" sel%d>0"), i);
+                               if (!(selected & im) && (prev_selected & im))
+                                       write_log(_T(" sel%d>1"), i);
+                       }
                        if ((prev_data & 0x80) != (data & 0x80))
-                               write_log (_T(" dskmotor %d "), (data & 0x80) ? 1 : 0);
+                               write_log (_T(" dskmotor>%d"), (data & 0x80) ? 1 : 0);
                        if ((prev_data & 0x02) != (data & 0x02))
-                               write_log (_T(" direct %d "), (data & 0x02) ? 1 : 0);
+                               write_log (_T(" direct>%d"), (data & 0x02) ? 1 : 0);
                        if ((prev_data & 0x04) != (data & 0x04))
-                               write_log (_T(" side %d "), (data & 0x04) ? 1 : 0);
+                               write_log (_T(" side>%d"), (data & 0x04) ? 1 : 0);
                }
        }
 
index ebdff0dc60338a60940a54f188cafc6d4081cc2d..4d526362529caafd47a0c924d7fbc2d9bba48741 100644 (file)
@@ -15,7 +15,7 @@
 #ifdef DEBUGGER
 
 #define        MAX_HIST 500
-#define MAX_LINEWIDTH 100
+#define MAX_LINEWIDTH 150
 
 extern int debugging;
 extern int memwatch_enabled;
index 074f938bdb9ab1a276d5b6da8ff2546e8764a666..0ce9199bf140b26bed60706d973daf775857efe3 100644 (file)
@@ -612,6 +612,8 @@ struct uae_prefs {
        bool cs_cia6526;
        bool cs_bytecustomwritebug;
        bool cs_color_burst;
+       bool cs_romisslow;
+       bool cs_toshibagary;
        int cs_unmapped_space;
        int cs_hacks;
 
@@ -871,12 +873,14 @@ extern void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type
 extern int target_get_display (const TCHAR*);
 extern const TCHAR *target_get_display_name (int, bool);
 
+extern struct uae_prefs *cfgfile_open(const TCHAR *filename, int *type);
+extern void cfgfile_close(struct uae_prefs *p);
 extern int cfgfile_load (struct uae_prefs *p, const TCHAR *filename, int *type, int ignorelink, int userconfig);
 extern int cfgfile_save (struct uae_prefs *p, const TCHAR *filename, int);
 extern void cfgfile_parse_line (struct uae_prefs *p, TCHAR *, int);
 extern void cfgfile_parse_lines (struct uae_prefs *p, const TCHAR *, int);
 extern int cfgfile_parse_option (struct uae_prefs *p, const TCHAR *option, TCHAR *value, int);
-extern int cfgfile_get_description (const TCHAR *filename, TCHAR *description, TCHAR *hostlink, TCHAR *hardwarelink, int *type);
+extern int cfgfile_get_description (struct uae_prefs *p, const TCHAR *filename, TCHAR *description, TCHAR *hostlink, TCHAR *hardwarelink, int *type);
 extern void cfgfile_show_usage (void);
 extern int cfgfile_searchconfig(const TCHAR *in, int index, TCHAR *out, int outsize);
 extern uae_u32 cfgfile_uaelib(TrapContext *ctx, int mode, uae_u32 name, uae_u32 dst, uae_u32 maxlen);
@@ -893,6 +897,7 @@ extern void fixup_prefs (struct uae_prefs *prefs, bool userconfig);
 extern void fixup_cpu (struct uae_prefs *prefs);
 extern void cfgfile_compatibility_romtype(struct uae_prefs *p);
 extern void cfgfile_compatibility_rtg(struct uae_prefs *p);
+extern bool cfgfile_detect_art(struct uae_prefs *p, TCHAR *path);
 
 extern void check_prefs_changed_custom (void);
 extern void check_prefs_changed_cpu (void);
index 91313f8613ad331005ce8c34ec9f044e26508c1f..316da60377a755955217fce6b2838622e28bdc85 100644 (file)
 #define IDC_CS_COMPOSITECOLOR           1756
 #define IDC_DBG_DASM                    1757
 #define IDC_DBG_MEMDOWNFAST             1758
+#define IDC_CS_TOSHIBAGARY              1758
 #define IDC_DBG_MEMTOPC                 1759
+#define IDC_CS_ROMISSLOW                1759
 #define IDC_DBG_MEMUPFAST               1760
 #define IDC_DA_RESET                    1761
 #define IDC_DBG_STATUS                  1762
 #define IDC_RTG_BUFFERCNT               1795
 #define IDC_PATHS_RECURSIVEROMS         1795
 #define IDC_RTG_VBINTERRUPT             1796
+#define IDC_PATHS_ARTCACHE              1796
 #define IDC_INPUTMAPLIST                1797
 #define IDC_RTG_HWSPRITE                1797
 #define IDC_PORT1_REMAP                 1798
index c0c3759518e5caa291e1c0af58d682702aa532f8..8da3ed5a4b6c915e0248805c3fc6149cb0b5d0ec 100644 (file)
@@ -382,7 +382,7 @@ BEGIN
     PUSHBUTTON      "Add &Hardfile...",IDC_NEW_HF,135,153,126,15
     PUSHBUTTON      "Add Ha&rd Drive...",IDC_NEW_HD,267,153,127,15
     PUSHBUTTON      "Add SCSI/IDE CD Drive",IDC_NEW_CD,1,172,128,15
-    PUSHBUTTON      "Add SCSI Tape Drive",IDC_NEW_TAPE,135,172,126,15
+    PUSHBUTTON      "Add SCSI/IDE Tape Drive",IDC_NEW_TAPE,135,172,126,15
     PUSHBUTTON      "&Properties",IDC_EDIT,267,172,60,15
     PUSHBUTTON      "Remove",IDC_REMOVE,334,172,60,15
     GROUPBOX        "Options",IDC_STATIC,1,189,393,66
@@ -764,7 +764,7 @@ BEGIN
     CONTROL         "Keep aspect ratio",IDC_GENLOCK_KEEP_ASPECT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,13,242,214,10
 END
 
-IDD_CHIPSET2 DIALOGEX 0, 0, 396, 305
+IDD_CHIPSET2 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
@@ -775,51 +775,53 @@ BEGIN
     CONTROL         "RF5C01A",IDC_CS_RTC3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,165,32,67,10
     CONTROL         "A2000 MSM6242B",IDC_CS_RTC4,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,240,32,78,10
     EDITTEXT        IDC_CS_RTCADJUST,325,30,64,13,ES_AUTOHSCROLL
-    GROUPBOX        "CIA-A TOD Clock Source",IDC_STATIC,1,52,394,29
-    CONTROL         "Vertical Sync",IDC_CS_CIAA_TOD1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,41,64,86,10
-    CONTROL         "Power Supply 50Hz",IDC_CS_CIAA_TOD2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,133,64,109,10
-    CONTROL         "Power Supply 60Hz",IDC_CS_CIAA_TOD3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,248,64,116,10
-    GROUPBOX        "Chipset Features",IDC_STATIC,0,84,395,137
-    CONTROL         "CIA ROM Overlay",IDC_CS_CIAOVERLAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,98,104,11
-    CONTROL         "CD32 CD",IDC_CS_CD32CD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,111,104,11
-    CONTROL         "CDTV CD",IDC_CS_CDTVCD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,124,105,11
-    CONTROL         "A600/A1200 IDE",IDC_CS_IDE1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,137,104,11
-    CONTROL         "ROM Mirror (E0)",IDC_CS_KSMIRROR_E0,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,150,104,11
-    CONTROL         "KB Reset Warning",IDC_CS_RESETWARNING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,163,104,11
-    CONTROL         "CIA TOD bug",IDC_CS_CIATODBUG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,176,104,11
-    CONTROL         "1M Chip / 0.5M+0.5M",IDC_CS_1MCHIPJUMPER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,189,104,11
-    CONTROL         "A1000 Boot RAM/ROM",IDC_CS_A1000RAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,98,121,11
-    CONTROL         "CD32 C2P",IDC_CS_CD32C2P,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,111,121,11
-    CONTROL         "CDTV SRAM",IDC_CS_CDTVRAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,124,121,11
-    CONTROL         "A4000/A4000T IDE",IDC_CS_IDE2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,137,121,11
-    CONTROL         "ROM Mirror (A8)",IDC_CS_KSMIRROR_A8,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,150,121,11
-    CONTROL         "No-EHB Denise",IDC_CS_NOEHB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,163,121,11
-    CONTROL         "Z3 Autoconfig",IDC_CS_Z3AUTOCONFIG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,176,104,11
+    GROUPBOX        "CIA-A TOD Clock Source",IDC_STATIC,1,52,394,27
+    CONTROL         "Vertical Sync",IDC_CS_CIAA_TOD1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,41,63,86,10
+    CONTROL         "Power Supply 50Hz",IDC_CS_CIAA_TOD2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,133,63,109,10
+    CONTROL         "Power Supply 60Hz",IDC_CS_CIAA_TOD3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,248,63,116,10
+    GROUPBOX        "Chipset Features",IDC_STATIC,0,82,395,148
+    CONTROL         "CIA ROM Overlay",IDC_CS_CIAOVERLAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,95,104,11
+    CONTROL         "CD32 CD",IDC_CS_CD32CD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,108,104,11
+    CONTROL         "CDTV CD",IDC_CS_CDTVCD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,121,105,11
+    CONTROL         "A600/A1200 IDE",IDC_CS_IDE1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,134,104,11
+    CONTROL         "ROM Mirror (E0)",IDC_CS_KSMIRROR_E0,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,147,104,11
+    CONTROL         "KB Reset Warning",IDC_CS_RESETWARNING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,160,104,11
+    CONTROL         "CIA TOD bug",IDC_CS_CIATODBUG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,173,104,11
+    CONTROL         "1M Chip / 0.5M+0.5M",IDC_CS_1MCHIPJUMPER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,186,104,11
+    CONTROL         "A1000 Boot RAM/ROM",IDC_CS_A1000RAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,95,121,11
+    CONTROL         "CD32 C2P",IDC_CS_CD32C2P,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,108,121,11
+    CONTROL         "CDTV SRAM",IDC_CS_CDTVRAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,121,121,11
+    CONTROL         "A4000/A4000T IDE",IDC_CS_IDE2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,134,121,11
+    CONTROL         "ROM Mirror (A8)",IDC_CS_KSMIRROR_A8,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,147,121,11
+    CONTROL         "No-EHB Denise",IDC_CS_NOEHB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,160,121,11
+    CONTROL         "Z3 Autoconfig",IDC_CS_Z3AUTOCONFIG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,173,104,11
     CONTROL         "Custom register byte write bug",IDC_CS_BYTECUSTOMWRITEBUG,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,189,130,11
-    CONTROL         "DF0: ID Hardware",IDC_CS_DF0IDHW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,98,125,11
-    CONTROL         "CD32 NVRAM",IDC_CS_CD32NVRAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,111,125,11
-    CONTROL         "CDTV SRAM Expansion",IDC_CS_CDTVRAMEXP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,124,125,11
-    CONTROL         "CDTV-CR",IDC_CS_CDTVCR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,137,123,11
-    CONTROL         "PCMCIA",IDC_CS_PCMCIA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,150,125,11
-    CONTROL         "C00000 is Fast RAM",IDC_CS_SLOWISFAST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,163,125,11
-    CONTROL         "A1000 Agnus (8361/8367)",IDC_CS_DIPAGNUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,176,125,11
-    CONTROL         "Composite color burst",IDC_CS_COMPOSITECOLOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,189,125,12
-    GROUPBOX        "Internal SCSI Hardware",IDC_STATIC,0,224,395,33
-    CONTROL         "A3000 WD33C93 SCSI",IDC_CS_DMAC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,239,108,11
-    CONTROL         "A4000T NCR53C710 SCSI",IDC_CS_DMAC2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,130,239,125,11
-    CONTROL         "CDTV WD33C93 SCSI",IDC_CS_CDTVSCSI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,263,239,121,11
-    GROUPBOX        "Chipset Revision",IDC_STATIC,1,259,393,46
-    CONTROL         "Ramsey revision:",IDC_CS_RAMSEY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,34,275,97,11
-    CONTROL         "Fat Gary revision:",IDC_CS_FATGARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,34,289,97,11
-    EDITTEXT        IDC_CS_RAMSEYREV,136,274,45,13,ES_AUTOHSCROLL
-    EDITTEXT        IDC_CS_FATGARYREV,136,288,45,13,ES_AUTOHSCROLL
-    CONTROL         "Agnus/Alice revision:",IDC_CS_AGNUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,275,107,11
-    CONTROL         "Denise/Lisa revision:",IDC_CS_DENISE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,289,107,11
-    EDITTEXT        IDC_CS_AGNUSREV,311,274,45,13,ES_AUTOHSCROLL
-    EDITTEXT        IDC_CS_DENISEREV,311,289,45,13,ES_AUTOHSCROLL
-    COMBOBOX        IDC_CS_UNMAPPED,126,202,113,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Unmapped address space:",IDC_STATIC,15,205,101,9
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,186,130,11
+    CONTROL         "DF0: ID Hardware",IDC_CS_DF0IDHW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,95,125,11
+    CONTROL         "CD32 NVRAM",IDC_CS_CD32NVRAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,108,125,11
+    CONTROL         "CDTV SRAM Expansion",IDC_CS_CDTVRAMEXP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,121,125,11
+    CONTROL         "CDTV-CR",IDC_CS_CDTVCR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,134,123,11
+    CONTROL         "PCMCIA",IDC_CS_PCMCIA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,147,125,11
+    CONTROL         "C00000 is Fast RAM",IDC_CS_SLOWISFAST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,160,125,11
+    CONTROL         "A1000 Agnus (8361/8367)",IDC_CS_DIPAGNUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,173,125,11
+    CONTROL         "Composite color burst",IDC_CS_COMPOSITECOLOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,186,125,12
+    GROUPBOX        "Internal SCSI Hardware",IDC_STATIC,0,232,395,30
+    CONTROL         "A3000 WD33C93 SCSI",IDC_CS_DMAC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,247,108,11
+    CONTROL         "A4000T NCR53C710 SCSI",IDC_CS_DMAC2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,130,247,125,11
+    CONTROL         "CDTV WD33C93 SCSI",IDC_CS_CDTVSCSI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,263,247,121,11
+    GROUPBOX        "Chipset Revision",IDC_STATIC,1,264,393,52
+    CONTROL         "Ramsey revision:",IDC_CS_RAMSEY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,34,285,97,11
+    CONTROL         "Fat Gary revision:",IDC_CS_FATGARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,34,299,97,11
+    EDITTEXT        IDC_CS_RAMSEYREV,136,284,45,13,ES_AUTOHSCROLL
+    EDITTEXT        IDC_CS_FATGARYREV,136,298,45,13,ES_AUTOHSCROLL
+    CONTROL         "Agnus/Alice revision:",IDC_CS_AGNUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,285,107,11
+    CONTROL         "Denise/Lisa revision:",IDC_CS_DENISE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,299,107,11
+    EDITTEXT        IDC_CS_AGNUSREV,311,284,45,13,ES_AUTOHSCROLL
+    EDITTEXT        IDC_CS_DENISEREV,311,298,45,13,ES_AUTOHSCROLL
+    COMBOBOX        IDC_CS_UNMAPPED,126,199,113,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Unmapped address space:",IDC_STATIC,15,202,101,9
+    CONTROL         "Toshiba Gary",IDC_CS_TOSHIBAGARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,200,125,12
+    CONTROL         "KS ROM has Chip RAM speed",IDC_CS_ROMISSLOW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,214,125,12
 END
 
 IDD_AVIOUTPUT DIALOGEX 0, 0, 396, 260
@@ -1026,29 +1028,29 @@ IDD_PATHS DIALOGEX 0, 0, 396, 303
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    LTEXT           "System ROMs:",IDC_PATHS_ROML,3,2,167,8,SS_CENTERIMAGE
+    LTEXT           "System ROMs:",IDC_PATHS_ROML,3,2,138,8,SS_CENTERIMAGE
     EDITTEXT        IDC_PATHS_ROM,3,13,377,15,ES_AUTOHSCROLL
     PUSHBUTTON      "...",IDC_PATHS_ROMS,384,13,11,15
-    CONTROL         "Scan subfolders",IDC_PATHS_RECURSIVEROMS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,177,1,197,11
-    LTEXT           "Configuration files:",IDC_PATHS_CONFIGL,3,32,164,8,SS_CENTERIMAGE
+    CONTROL         "Scan subfolders",IDC_PATHS_RECURSIVEROMS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,1,197,11
+    LTEXT           "Configuration files:",IDC_PATHS_CONFIGL,3,32,134,8,SS_CENTERIMAGE
     EDITTEXT        IDC_PATHS_CONFIG,3,44,377,15,ES_AUTOHSCROLL
     PUSHBUTTON      "...",IDC_PATHS_CONFIGS,384,43,11,15
-    CONTROL         "Cache Configuration files",IDC_PATHS_CONFIGCACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,177,31,197,11
-    LTEXT           "Screenshots:",IDC_PATHS_SCREENSHOTL,3,62,260,8,SS_CENTERIMAGE
+    CONTROL         "Cache Configuration files",IDC_PATHS_CONFIGCACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,31,99,11
+    LTEXT           "Screenshots:",IDC_PATHS_SCREENSHOTL,3,62,143,8,SS_CENTERIMAGE
     EDITTEXT        IDC_PATHS_SCREENSHOT,3,73,377,15,ES_AUTOHSCROLL
     PUSHBUTTON      "...",IDC_PATHS_SCREENSHOTS,384,72,11,15
-    LTEXT           "State files:",IDC_PATHS_STATEFILEL,3,91,260,8,SS_CENTERIMAGE
+    LTEXT           "State files:",IDC_PATHS_STATEFILEL,3,91,129,8,SS_CENTERIMAGE
     EDITTEXT        IDC_PATHS_SAVESTATE,3,102,377,15,ES_AUTOHSCROLL
     PUSHBUTTON      "...",IDC_PATHS_SAVESTATES,384,101,11,15
-    LTEXT           "Videos:",IDC_PATHS_AVIOUTPUTL,3,120,260,8,SS_CENTERIMAGE
+    LTEXT           "Videos:",IDC_PATHS_AVIOUTPUTL,3,120,130,8,SS_CENTERIMAGE
     EDITTEXT        IDC_PATHS_AVIOUTPUT,3,131,377,15,ES_AUTOHSCROLL
     PUSHBUTTON      "...",IDC_PATHS_AVIOUTPUTS,384,130,11,15
-    LTEXT           "Saveimages:",IDC_PATHS_SAVEIMAGEL,3,149,158,8,SS_CENTERIMAGE
+    LTEXT           "Saveimages:",IDC_PATHS_SAVEIMAGEL,3,149,129,8,SS_CENTERIMAGE
     EDITTEXT        IDC_PATHS_SAVEIMAGE,3,161,377,15,ES_AUTOHSCROLL
     PUSHBUTTON      "...",IDC_PATHS_SAVEIMAGES,384,160,11,15
     CONTROL         "Use original image's path",IDC_PATHS_SAVEIMAGEORIGINALPATH,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,177,148,197,11
-    LTEXT           "Rips:",IDC_PATHS_RIPSL,3,179,260,8,SS_CENTERIMAGE
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,148,197,11
+    LTEXT           "Rips:",IDC_PATHS_RIPSL,3,179,131,8,SS_CENTERIMAGE
     EDITTEXT        IDC_PATHS_RIP,3,190,377,15,ES_AUTOHSCROLL
     PUSHBUTTON      "...",IDC_PATHS_RIPS,383,189,11,15
     PUSHBUTTON      "Reset to defaults",IDC_PATHS_DEFAULT,2,212,92,14
@@ -1065,6 +1067,7 @@ BEGIN
     PUSHBUTTON      "Save All [] Create zip file that includes both logs and config file.",IDC_LOGSAVE,337,264,51,14
     PUSHBUTTON      "Open [] Open selected file.",IDC_LOGOPEN,337,280,51,14
     EDITTEXT        IDC_LOGPATH,7,281,324,13,ES_READONLY
+    CONTROL         "Cache Boxart files",IDC_PATHS_ARTCACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,30,125,11
 END
 
 IDD_QUICKSTART DIALOGEX 0, 0, 396, 262
index 36106e6dba8be735d71d1f36fa89107505bf9706..9566d81ee75932f26b1c080c22d921087c411b8d 100644 (file)
@@ -1807,7 +1807,7 @@ void rp_update_leds (int led, int onoff, int brightness, int write)
                if (ledstate == oldled[led])
                        return;
                oldled[led] = ledstate;
-               RPSendMessage (RP_IPC_TO_HOST_POWERLED, ledstate, 0, NULL, 0, &guestinfo, NULL);
+               RPPostMessagex(RP_IPC_TO_HOST_POWERLED, ledstate, 0, &guestinfo);
                break;
        case LED_DF0:
        case LED_DF1:
@@ -1818,7 +1818,7 @@ void rp_update_leds (int led, int onoff, int brightness, int write)
                if (ledstate == oldled[led])
                        return;
                oldled[led] = ledstate;
-               RPPostMessagex (RP_IPC_TO_HOST_DEVICEACTIVITY, MAKEWORD (RP_DEVICECATEGORY_FLOPPY, led - LED_DF0),
+               RPPostMessagex(RP_IPC_TO_HOST_DEVICEACTIVITY, MAKEWORD (RP_DEVICECATEGORY_FLOPPY, led - LED_DF0),
                        MAKELONG ((ledstate & 1) ? -1 : 0, (ledstate & 2) ? RP_DEVICEACTIVITY_WRITE : RP_DEVICEACTIVITY_READ) , &guestinfo);
                break;
        }
index 3b83624b3090353eaec218849ae6c8c19b5f6e90..d524083789b451a8cd215b1c3000c1270e2d28d2 100644 (file)
@@ -212,7 +212,7 @@ TCHAR bootlogpath[MAX_DPATH];
 TCHAR logpath[MAX_DPATH];
 bool winuaelog_temporary_enable;
 int af_path_2005;
-int quickstart = 1, configurationcache = 1, relativepaths = 0;
+int quickstart = 1, configurationcache = 1, relativepaths = 0, artcache = 0;
 int saveimageoriginalpath = 0;
 int recursiveromscan = 0;
 
@@ -5037,6 +5037,11 @@ static void WIN32_HandleRegistryStuff (void)
        else
                regsetint (NULL, _T("ConfigurationCache"), configurationcache);
 
+       if (regexists(NULL, _T("ArtCache")))
+               regqueryint(NULL, _T("ArtCache"), &artcache);
+       else
+               regsetint(NULL, _T("ArtCache"), artcache);
+
        if (regexists (NULL, _T("SaveImageOriginalPath")))
                regqueryint (NULL, _T("SaveImageOriginalPath"), &saveimageoriginalpath);
        else
index 0a2305d98eabb0dcfa25990a28c4757389abf6b8..784d708b7f8d1abe0b86453257b447fc1c223885 100644 (file)
 #define LANG_DLL_FULL_VERSION_MATCH 1
 
 #if WINUAEPUBLICBETA
-#define WINUAEBETA _T("8")
+#define WINUAEBETA _T("9")
 #else
 #define WINUAEBETA _T("")
 #endif
 
-#define WINUAEDATE MAKEBD(2017, 11, 19)
+#define WINUAEDATE MAKEBD(2017, 12, 2)
 
 //#define WINUAEEXTRA _T("AmiKit Preview")
 //#define WINUAEEXTRA _T("Amiga Forever Edition")
@@ -96,7 +96,7 @@ extern BOOL os_dwm_enabled;
 extern OSVERSIONINFO osVersion;
 extern int paraport_mask;
 extern int gui_active;
-extern int quickstart, configurationcache, saveimageoriginalpath, relativepaths, recursiveromscan;
+extern int quickstart, configurationcache, saveimageoriginalpath, relativepaths, artcache, recursiveromscan;
 
 extern HKEY hWinUAEKey;
 extern int screen_is_picasso;
index 621cb7dec82c4f6c89e4497ecda0a373420a7d00..1119cb1bf0bafeb19701b0d2a5ac9e5e9354dcf1 100644 (file)
@@ -2088,6 +2088,7 @@ struct ConfigStruct {
        TCHAR HostLink[MAX_DPATH];
        TCHAR HardwareLink[MAX_DPATH];
        TCHAR Description[CFG_DESCRIPTION_LENGTH];
+       TCHAR Artpath[MAX_DPATH];
        int Type, Directory;
        struct ConfigStruct *Parent, *Child;
        int host, hardware;
@@ -2138,7 +2139,7 @@ int target_cfgfile_load (struct uae_prefs *p, const TCHAR *filename, int type, i
                qs_override = 1;
        if (type < 0) {
                type = 0;
-               cfgfile_get_description (fname, NULL, NULL, NULL, &type);
+               cfgfile_get_description(NULL, fname, NULL, NULL, NULL, &type);
        }
        if (type == 0 || type == 1) {
                discard_prefs (p, 0);
@@ -2162,6 +2163,11 @@ int target_cfgfile_load (struct uae_prefs *p, const TCHAR *filename, int type, i
                return v;
        if (type > 0)
                return v;
+       if (cfgfile_detect_art(p, tmp1)) {
+               show_box_art(tmp1);
+       } else {
+               show_box_art(NULL);
+       }
        for (i = 1; i <= 2; i++) {
                if (type != i) {
                        size = sizeof (ct);
@@ -3341,6 +3347,16 @@ static void getconfigcache (TCHAR *dst, const TCHAR *path)
        _tcsncat (dst, _T("configuration.cache"), MAX_DPATH);
 }
 
+static void deleteconfigcache(void)
+{
+       TCHAR path[MAX_DPATH], path2[MAX_DPATH];
+       GetConfigPath(path, NULL, FALSE);
+       if (!path[0])
+               return;
+       getconfigcache(path2, path);
+       _wunlink(path2);
+}
+
 static TCHAR *fgetsx (TCHAR *dst, FILE *f)
 {
        TCHAR *s2;
@@ -3549,6 +3565,10 @@ static struct ConfigStruct *readconfigcache (const TCHAR *path)
                        fgetsx (buf, zcache);
                        lines--;
                        cs->Type = _tstol (buf);
+                       if (lines > 0) {
+                               fgetsx(cs->Artpath, zcache);
+                               lines--;
+                       }
                }
 
                setconfighosthard (cs);
@@ -3616,6 +3636,8 @@ static void writeconfigcacheentry (FILE *zcache, const TCHAR *relpath, struct Co
                _stprintf (path2, _T("%d"), cs->Type);
                fwrite (path2, _tcslen (path2), sizeof (TCHAR), zcache);
                fwrite (&lf, 1, sizeof (TCHAR), zcache);
+               fwrite(cs->Artpath, _tcslen(cs->Artpath), sizeof(TCHAR), zcache);
+               fwrite(&lf, 1, sizeof(TCHAR), zcache);
        }
 
        fwrite (el, _tcslen (el), sizeof (TCHAR), zcache);
@@ -3623,12 +3645,10 @@ static void writeconfigcacheentry (FILE *zcache, const TCHAR *relpath, struct Co
 
 static void writeconfigcacherec (FILE *zcache, const TCHAR *relpath, struct ConfigStruct *cs)
 {
-       int i;
-
        if (!cs->Directory)
                return;
        writeconfigcacheentry (zcache, relpath, cs);
-       for (i = 0; i < configstoresize; i++) {
+       for (int i = 0; i < configstoresize; i++) {
                struct ConfigStruct *cs2 = configstore[i];
                if (cs2->Parent == cs)
                        writeconfigcacherec (zcache, relpath, cs2);
@@ -3637,7 +3657,6 @@ static void writeconfigcacherec (FILE *zcache, const TCHAR *relpath, struct Conf
 
 static void writeconfigcache (const TCHAR *path)
 {
-       int i;
        TCHAR lf = 10;
        FILE *zcache;
        TCHAR cachepath[MAX_DPATH];
@@ -3661,15 +3680,15 @@ static void writeconfigcache (const TCHAR *path)
        fwrite (&lf, 1, sizeof (TCHAR), zcache);
        ul.HighPart = t.dwHighDateTime;
        ul.LowPart = t.dwLowDateTime;
-       _stprintf (path2, _T("3\n4\n7\n%I64u\n;\n"), ul.QuadPart);
+       _stprintf (path2, _T("3\n4\n8\n%I64u\n;\n"), ul.QuadPart);
        fwrite (path2, _tcslen (path2), sizeof (TCHAR), zcache);
        GetFullPathName (path, sizeof path2 / sizeof (TCHAR), path2, NULL);
-       for (i = 0; i < configstoresize; i++) {
+       for (int i = 0; i < configstoresize; i++) {
                struct ConfigStruct *cs = configstore[i];
                if (cs->Directory && cs->Parent == NULL)
                        writeconfigcacherec (zcache, path2, cs);
        }
-       for (i = 0; i < configstoresize; i++) {
+       for (int i = 0; i < configstoresize; i++) {
                struct ConfigStruct *cs = configstore[i];
                if (!cs->Directory)
                        writeconfigcacheentry (zcache, path2, cs);
@@ -3755,8 +3774,15 @@ static struct ConfigStruct *GetConfigs (struct ConfigStruct *configparent, int u
                                if (_tcslen (find_data.cFileName) > 4 && !strcasecmp (find_data.cFileName + _tcslen (find_data.cFileName) - 4, _T(".uae"))) {
                                        _tcscpy (path3, path);
                                        _tcsncat (path3, find_data.cFileName, MAX_DPATH);
-                                       if (cfgfile_get_description (path3, config->Description, config->HostLink, config->HardwareLink, &config->Type)) {
-                                               _tcscpy (config->Name, find_data.cFileName);
+                                       config->Artpath[0] = 0;
+                                       struct uae_prefs *p = cfgfile_open(path3, &config->Type);
+                                       if (p) {
+                                               cfgfile_get_description(p, NULL, config->Description, config->HostLink, config->HardwareLink, NULL);
+                                               _tcscpy(config->Name, find_data.cFileName);
+                                               if (artcache) {
+                                                       cfgfile_detect_art(p, config->Artpath);
+                                               }
+                                               cfgfile_close(p);
                                                ok = 1;
                                        }
                                }
@@ -5191,6 +5217,7 @@ static void InitializeConfig (HWND hDlg, struct ConfigStruct *config)
                }
        }
        SendDlgItemMessage (hDlg, IDC_CONFIGLINK, CB_SETCURSEL, idx2, 0);
+       show_box_art(config && config->Artpath[0] ? config->Artpath : NULL);
 }
 
 static void DeleteConfigTree (HWND hDlg)
@@ -5753,29 +5780,30 @@ static void rewritepaths(void)
 
 static void resetregistry (void)
 {
-       regdeletetree (NULL, _T("DetectedROMs"));
-       regdelete (NULL, _T("QuickStartMode"));
-       regdelete (NULL, _T("ConfigFile"));
-       regdelete (NULL, _T("ConfigFileHardware"));
-       regdelete (NULL, _T("ConfigFileHost"));
-       regdelete (NULL, _T("ConfigFileHardware_Auto"));
-       regdelete (NULL, _T("ConfigFileHost_Auto"));
-       regdelete (NULL, _T("ConfigurationPath"));
-       regdelete (NULL, _T("SaveimagePath"));
-       regdelete (NULL, _T("ScreenshotPath"));
-       regdelete (NULL, _T("StatefilePath"));
-       regdelete (NULL, _T("VideoPath"));
-       regdelete (NULL, _T("RipperPath"));
-       regdelete (NULL, _T("QuickStartModel"));
-       regdelete (NULL, _T("QuickStartConfiguration"));
-       regdelete (NULL, _T("QuickStartCompatibility"));
-       regdelete (NULL, _T("QuickStartHostConfig"));
-       regdelete (NULL, _T("RecursiveROMScan"));
-       regdelete (NULL, _T("ConfigurationCache"));
-       regdelete (NULL, _T("SaveImageOriginalPath"));
-       regdelete (NULL, _T("RelativePaths"));
-       regdelete (NULL, _T("DirectDraw_Secondary"));
-       regdelete (NULL, _T("ShownsupportedModes"));
+       regdeletetree(NULL, _T("DetectedROMs"));
+       regdelete(NULL, _T("QuickStartMode"));
+       regdelete(NULL, _T("ConfigFile"));
+       regdelete(NULL, _T("ConfigFileHardware"));
+       regdelete(NULL, _T("ConfigFileHost"));
+       regdelete(NULL, _T("ConfigFileHardware_Auto"));
+       regdelete(NULL, _T("ConfigFileHost_Auto"));
+       regdelete(NULL, _T("ConfigurationPath"));
+       regdelete(NULL, _T("SaveimagePath"));
+       regdelete(NULL, _T("ScreenshotPath"));
+       regdelete(NULL, _T("StatefilePath"));
+       regdelete(NULL, _T("VideoPath"));
+       regdelete(NULL, _T("RipperPath"));
+       regdelete(NULL, _T("QuickStartModel"));
+       regdelete(NULL, _T("QuickStartConfiguration"));
+       regdelete(NULL, _T("QuickStartCompatibility"));
+       regdelete(NULL, _T("QuickStartHostConfig"));
+       regdelete(NULL, _T("RecursiveROMScan"));
+       regdelete(NULL, _T("ConfigurationCache"));
+       regdelete(NULL, _T("ArtCache"));
+       regdelete(NULL, _T("SaveImageOriginalPath"));
+       regdelete(NULL, _T("RelativePaths"));
+       regdelete(NULL, _T("DirectDraw_Secondary"));
+       regdelete(NULL, _T("ShownsupportedModes"));
 }
 
 #include "zip.h"
@@ -5962,6 +5990,7 @@ static INT_PTR CALLBACK PathsDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM
                setac (hDlg, IDC_PATHS_RIP);
                CheckDlgButton(hDlg, IDC_PATHS_RECURSIVEROMS, recursiveromscan);
                CheckDlgButton(hDlg, IDC_PATHS_CONFIGCACHE, configurationcache);
+               CheckDlgButton(hDlg, IDC_PATHS_ARTCACHE, artcache);
                CheckDlgButton(hDlg, IDC_PATHS_SAVEIMAGEORIGINALPATH, saveimageoriginalpath);
                CheckDlgButton(hDlg, IDC_PATHS_RELATIVE, relativepaths);
                CheckDlgButton(hDlg, IDC_REGISTRYMODE, getregmode() != NULL);
@@ -6196,8 +6225,14 @@ static INT_PTR CALLBACK PathsDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM
                                regsetint (NULL, _T("RecursiveROMScan"), recursiveromscan);
                                break;
                        case IDC_PATHS_CONFIGCACHE:
-                               configurationcache = ischecked (hDlg, IDC_PATHS_CONFIGCACHE) ? 1 : 0;
-                               regsetint (NULL, _T("ConfigurationCache"), configurationcache);
+                               configurationcache = ischecked(hDlg, IDC_PATHS_CONFIGCACHE) ? 1 : 0;
+                               regsetint(NULL, _T("ConfigurationCache"), configurationcache);
+                               deleteconfigcache();
+                               break;
+                       case IDC_PATHS_ARTCACHE:
+                               artcache = ischecked(hDlg, IDC_PATHS_ARTCACHE) ? 1 : 0;
+                               regsetint(NULL, _T("ArtCache"), artcache);
+                               deleteconfigcache();
                                break;
                        case IDC_PATHS_SAVEIMAGEORIGINALPATH:
                                saveimageoriginalpath = ischecked (hDlg, IDC_PATHS_SAVEIMAGEORIGINALPATH) ? 1 : 0;
@@ -8103,6 +8138,8 @@ static void values_to_chipsetdlg2 (HWND hDlg)
        CheckDlgButton(hDlg, IDC_CS_1MCHIPJUMPER, workprefs.cs_1mchipjumper || workprefs.chipmem_size >= 0x100000);
        CheckDlgButton(hDlg, IDC_CS_BYTECUSTOMWRITEBUG, workprefs.cs_bytecustomwritebug);
        CheckDlgButton(hDlg, IDC_CS_COMPOSITECOLOR, workprefs.cs_color_burst);
+       CheckDlgButton(hDlg, IDC_CS_TOSHIBAGARY, workprefs.cs_toshibagary);
+       CheckDlgButton(hDlg, IDC_CS_ROMISSLOW, workprefs.cs_romisslow);
        SendDlgItemMessage(hDlg, IDC_CS_UNMAPPED, CB_SETCURSEL, workprefs.cs_unmapped_space, 0);
        txt[0] = 0;
        _stprintf (txt, _T("%d"), workprefs.cs_rtc_adjust);
@@ -8194,6 +8231,8 @@ static void values_from_chipsetdlg2 (HWND hDlg, UINT msg, WPARAM wParam, LPARAM
        workprefs.cs_1mchipjumper = ischecked(hDlg, IDC_CS_1MCHIPJUMPER);
        workprefs.cs_bytecustomwritebug = ischecked(hDlg, IDC_CS_BYTECUSTOMWRITEBUG);
        workprefs.cs_color_burst = ischecked(hDlg, IDC_CS_COMPOSITECOLOR);
+       workprefs.cs_toshibagary = ischecked(hDlg, IDC_CS_TOSHIBAGARY);
+       workprefs.cs_romisslow = ischecked(hDlg, IDC_CS_ROMISSLOW);
        LRESULT val = SendDlgItemMessage(hDlg, IDC_CS_UNMAPPED, CB_GETCURSEL, 0, 0L);
        if (val != CB_ERR)
                workprefs.cs_unmapped_space = val;
@@ -8283,6 +8322,8 @@ static void enable_for_chipsetdlg2 (HWND hDlg)
        ew(hDlg, IDC_CS_1MCHIPJUMPER, e && workprefs.chipmem_size < 0x100000);
        ew(hDlg, IDC_CS_BYTECUSTOMWRITEBUG, e);
        ew(hDlg, IDC_CS_COMPOSITECOLOR, e);
+       ew(hDlg, IDC_CS_TOSHIBAGARY, e);
+       ew(hDlg, IDC_CS_ROMISSLOW, e);
        ew(hDlg, IDC_CS_UNMAPPED, e);
 }
 
@@ -13082,13 +13123,11 @@ static INT_PTR CALLBACK TapeDriveSettingsProc (HWND hDlg, UINT msg, WPARAM wPara
 
        case WM_INITDIALOG:
                recursive++;
-               if (current_tapedlg.ci.controller_type < HD_CONTROLLER_TYPE_SCSI_AUTO)
-                       current_tapedlg.ci.controller_type = HD_CONTROLLER_TYPE_SCSI_AUTO;
                inithdcontroller(hDlg, current_tapedlg.ci.controller_type, current_tapedlg.ci.controller_type_unit, UAEDEV_TAPE, current_tapedlg.ci.rootdir[0] != 0);
                SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER_UNIT, CB_SETCURSEL, current_tapedlg.ci.controller_type != HD_CONTROLLER_TYPE_PCMCIA ? current_tapedlg.ci.controller_unit : current_tapedlg.ci.controller_type_unit, 0);
                setautocomplete (hDlg, IDC_PATH_NAME);
                addhistorymenu(hDlg, current_tapedlg.ci.rootdir, IDC_PATH_NAME, HISTORY_TAPE, false);
-               readonly = my_existsfile (current_tapedlg.ci.rootdir);
+               readonly = !tape_can_write(current_tapedlg.ci.rootdir);
                CheckDlgButton (hDlg, IDC_TAPE_RW, current_tapedlg.ci.readonly == 0 && !readonly);
                ew (hDlg, IDC_TAPE_RW, !readonly);
                recursive--;
@@ -13103,7 +13142,7 @@ static INT_PTR CALLBACK TapeDriveSettingsProc (HWND hDlg, UINT msg, WPARAM wPara
                                if (getcomboboxtext(hDlg, IDC_PATH_NAME, tmp, sizeof tmp / sizeof(TCHAR))) {
                                        if (_tcscmp (tmp, current_tapedlg.ci.rootdir)) {
                                                _tcscpy (current_tapedlg.ci.rootdir, tmp);
-                                               readonly = my_existsfile (current_tapedlg.ci.rootdir);
+                                               readonly = !tape_can_write(current_tapedlg.ci.rootdir);
                                                ew (hDlg, IDC_TAPE_RW, !readonly);
                                                if (readonly)
                                                        CheckDlgButton (hDlg, IDC_TAPE_RW, FALSE);
@@ -13146,7 +13185,7 @@ static INT_PTR CALLBACK TapeDriveSettingsProc (HWND hDlg, UINT msg, WPARAM wPara
                        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));
-                       readonly = my_existsfile (current_tapedlg.ci.rootdir);
+                       readonly = !tape_can_write(current_tapedlg.ci.rootdir);
                        ew (hDlg, IDC_TAPE_RW, !readonly);
                        if (readonly)
                                CheckDlgButton (hDlg, IDC_TAPE_RW, FALSE);
@@ -13166,7 +13205,7 @@ static INT_PTR CALLBACK TapeDriveSettingsProc (HWND hDlg, UINT msg, WPARAM wPara
                        }
                        _tcscpy (current_tapedlg.ci.rootdir, directory_path);
                        DISK_history_add(current_tapedlg.ci.rootdir, -1, HISTORY_TAPE, 1);
-                       readonly = my_existsfile (current_tapedlg.ci.rootdir);
+                       readonly = !tape_can_write(current_tapedlg.ci.rootdir);
                        ew (hDlg, IDC_TAPE_RW, !readonly);
                        if (readonly)
                                CheckDlgButton (hDlg, IDC_TAPE_RW, FALSE);
@@ -19336,8 +19375,8 @@ static void getguisize (HWND hDlg, int *width, int *height)
        RECT r;
 
        GetWindowRect (hDlg, &r);
-       *width = r.right - r.left;
-       *height = r.bottom - r.top;
+       *width = (r.right - r.left);
+       *height = (r.bottom - r.top);
 }
 
 static HWND updatePanel (int id, UINT action)
@@ -19414,7 +19453,7 @@ static HWND updatePanel (int id, UINT action)
        gui_height = r2c.bottom;
 
        fullpanel = ppage[id].fullpanel;
-       tres = scaleresource (ppage[id].nres, hDlg, -1, 0, 0);
+       tres = scaleresource (ppage[id].nres, hDlg, -1, 0, 0, false);
        panelDlg = CreateDialogIndirectParam (tres->inst, tres->resource, hDlg, ppage[id].dlgproc, id);
        freescaleresource(tres);
        
@@ -19992,8 +20031,8 @@ static INT_PTR CALLBACK DialogProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM l
                                RECT *r = (RECT*)lParam;
                                previous_dpix = dx;
                                previous_dpiy = dy;
-                               gui_width = r->right - r->left;
-                               gui_height = r->bottom - r->top;
+                               gui_width = (r->right - r->left);
+                               gui_height = (r->bottom - r->top);
                                gui_size_changed = 1;
                        }
                }
@@ -20232,7 +20271,7 @@ INT_PTR CustomDialogBox (int templ, HWND hDlg, DLGPROC proc)
        res = getresource (templ);
        if (!res)
                return h;
-       r = scaleresource (res, hDlg, -1, 0, 0);
+       r = scaleresource (res, hDlg, -1, 0, 0, false);
        if (r) {
                h = DialogBoxIndirect (r->inst, r->resource, hDlg, proc);
                freescaleresource (r);
@@ -20251,7 +20290,7 @@ HWND CustomCreateDialog (int templ, HWND hDlg, DLGPROC proc)
        res = getresource (templ);
        if (!res)
                return h;
-       r = scaleresource (res, hDlg, -1, 0, 0);
+       r = scaleresource (res, hDlg, -1, 0, 0, false);
        if (r) {
                h = CreateDialogIndirect (r->inst, r->resource, hDlg, proc);
                freescaleresource (r);
@@ -20538,7 +20577,7 @@ static int GetSettings (int all_options, HWND hwnd)
                        }
                }
 
-               tres = scaleresource (panelresource, hwnd, gui_resize_enabled, gui_fullscreen, workprefs.win32_gui_alwaysontop || workprefs.win32_main_alwaysontop ? WS_EX_TOPMOST : 0);
+               tres = scaleresource (panelresource, hwnd, gui_resize_enabled, gui_fullscreen, workprefs.win32_gui_alwaysontop || workprefs.win32_main_alwaysontop ? WS_EX_TOPMOST : 0, true);
                dhwnd = CreateDialogIndirect (tres->inst, tres->resource, isfullscreen () != 0 ? hwnd : NULL, DialogProc);
                dialog_rect.top = dialog_rect.left = 0;
                dialog_rect.right = tres->width;
index ef92810d5fd5d077d46820be0cf41a0f9e575495..85cab43af14181cb91bc4def84aa46ae28633cce 100644 (file)
@@ -33,7 +33,7 @@ struct newresource
 
 extern struct uae_prefs workprefs;
 
-extern struct newresource *scaleresource (struct newresource *res, HWND, int, int, DWORD);
+extern struct newresource *scaleresource (struct newresource *res, HWND, int, int, DWORD, bool);
 extern void freescaleresource (struct newresource*);
 extern void scaleresource_setmult (HWND hDlg, int w, int h, int fs);
 extern void scaleresource_getmult (int *mx, int *my);
@@ -48,4 +48,5 @@ extern void scaleresource_setfont (HWND hDlg);
 extern void scaleresource_getdpimult (double*, double*, int*, int*);
 extern void scalaresource_listview_font_info(int*);
 extern int getscaledfontsize(int size);
+extern bool show_box_art(const TCHAR*);
 #endif
index e2b0f52dc420d5b684d18001d29902f7f08d9dfe..f547bea9f066224c24fda5bf821a110ce11b1872 100644 (file)
@@ -11,6 +11,7 @@
 #include "win32.h"
 #include "win32gui.h"
 #include "xwin.h"
+#include "zfile.h"
 
 #define MAX_GUI_FONTS 2
 #define DEFAULT_FONTSIZE  8
@@ -36,6 +37,13 @@ static HFONT listviewfont;
 static TEXTMETRIC listview_tm;
 static const TCHAR *fontprefix;
 
+#define BASEMULT 1000
+static int baseunitx, baseunity;
+static RECT baserect, baseclientrect;
+static int baseborderwidth, baseborderheight;
+static int basewidth, baseheight;
+static int baseclientwidth, baseclientheight;
+
 #include <pshpack2.h>
 typedef struct {
        WORD dlgVer;
@@ -216,8 +224,10 @@ static INT_PTR CALLBACK DummyProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lP
 
 extern int full_property_sheet;
 
-static struct newresource *scaleresource2 (struct newresource *res, HWND parent, int resize, int fullscreen, DWORD exstyle)
+static struct newresource *scaleresource2 (struct newresource *res, HWND parent, int resize, int fullscreen, DWORD exstyle, bool main)
 {
+       static int main_width, main_height;
+
        DLGTEMPLATEEX *d, *s;
        DLGTEMPLATEEX_END *d2, *s2;
        DLGITEMTEMPLATEEX *dt;
@@ -314,9 +324,9 @@ static struct newresource *scaleresource2 (struct newresource *res, HWND parent,
        return ns;
 }
 
-struct newresource *scaleresource (struct newresource *res, HWND parent, int resize, int fullscreen, DWORD exstyle)
+struct newresource *scaleresource (struct newresource *res, HWND parent, int resize, int fullscreen, DWORD exstyle, bool main)
 {
-       return scaleresource2(res, parent, resize, fullscreen, exstyle);
+       return scaleresource2(res, parent, resize, fullscreen, exstyle, main);
 }
 
 void freescaleresource (struct newresource *ns)
@@ -462,13 +472,6 @@ void scaleresource_setdefaults (void)
        openfont (true);
 }
 
-#define BASEMULT 1000
-static int baseunitx, baseunity;
-static RECT baserect, baseclientrect;
-static int baseborderwidth, baseborderheight;
-static int basewidth, baseheight;
-static int baseclientwidth, baseclientheight;
-
 static INT_PTR CALLBACK TestProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
 {
        if (msg == WM_INITDIALOG) {
@@ -498,7 +501,7 @@ static void getbaseunits (int fullscreen)
                write_log (_T("getbaseunits fail!\n"));
                abort();
        }
-       nr2 = scaleresource2(nr, NULL, -1, 0, 0);
+       nr2 = scaleresource2(nr, NULL, -1, 0, 0, false);
        hwnd = CreateDialogIndirect (nr2->inst, nr2->resource, NULL, TestProc);
        if (hwnd) {
                DestroyWindow (hwnd);
@@ -685,7 +688,57 @@ int scaleresource_choosefont (HWND hDlg, int fonttype)
 
        openfont (true);
 
-
        return 1;
 }
 
+#include <gdiplus.h> 
+
+static bool boxart_inited;
+static ULONG_PTR gdiplusToken;
+
+static void boxart_init(void)
+{
+       Gdiplus::GdiplusStartupInput gdiplusStartupInput;
+       Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
+}
+
+static const TCHAR *boxartnames[] = {
+       _T("Boxart"),
+       _T("SShot"),
+       _T("Title"),
+       NULL
+};
+
+bool show_box_art(const TCHAR *path)
+{
+       TCHAR tmp1[MAX_DPATH];
+
+       if (!path || !artcache)
+               return false;
+       if (!boxart_inited) {
+               boxart_init();
+               boxart_inited = true;
+       }
+
+       write_log(_T("Box art path '%s'\n"), path);
+       for (int i = 0; boxartnames[i]; i++) {
+               _tcscpy(tmp1, path);
+               _tcscat(tmp1, _T("___"));
+               _tcscat(tmp1, boxartnames[i]);
+               _tcscat(tmp1, _T(".png"));
+
+               Gdiplus::Image *image = Gdiplus::Image::FromFile(tmp1);
+               // above returns out of memory if file does not exist!
+               if (image->GetLastStatus() != Gdiplus::Ok) {
+                       _tcscpy(tmp1 + _tcslen(tmp1) - 3, _T("jpg"));
+                       image = Gdiplus::Image::FromFile(tmp1);
+               }
+               if (image->GetLastStatus() == Gdiplus::Ok) {
+                       int w = image->GetWidth();
+                       int h = image->GetHeight();
+                       write_log(_T("Image '%s' loaded %d*%d\n"), tmp1, w, h);
+               }
+               delete image;
+       }
+       return true;
+}
index c670ef0be099d898d5e69b6278ae1b364e6dd8da..2cd7ff14b85b1de656e2adbc502d63e586d80857 100644 (file)
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>ws2_32.lib;ddraw.lib;dxguid.lib;winmm.lib;comctl32.lib;version.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;winio.lib;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;libpng16.lib;lglcd.lib;openal32.lib;portaudio_x86.lib;vfw32.lib;wtsapi32.lib;enet.lib;lzmalib.lib;prowizard.lib;libFLAC_static.lib;hid.lib;zlibstat.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>ws2_32.lib;ddraw.lib;dxguid.lib;winmm.lib;comctl32.lib;version.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;winio.lib;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;libpng16.lib;lglcd.lib;openal32.lib;portaudio_x86.lib;vfw32.lib;wtsapi32.lib;enet.lib;lzmalib.lib;prowizard.lib;libFLAC_static.lib;hid.lib;zlibstat.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);$(SolutionDir)\..\lib\</AdditionalLibraryDirectories>
       <AdditionalManifestDependencies>%(AdditionalManifestDependencies)</AdditionalManifestDependencies>
       <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
-      <DelayLoadDLLs>d3dx9_43.dll;openal32.dll;portaudio_x86.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;wininet.dll;ddraw.dll;Iphlpapi.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+      <DelayLoadDLLs>d3dx9_43.dll;openal32.dll;portaudio_x86.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;wininet.dll;ddraw.dll;Iphlpapi.dll;gdiplus.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>.\Release/winuae.pdb</ProgramDatabaseFile>
       <SubSystem>Windows</SubSystem>
-      <StackReserveSize>2621440</StackReserveSize>
-      <StackCommitSize>2621440</StackCommitSize>
+      <StackReserveSize>
+      </StackReserveSize>
+      <StackCommitSize>
+      </StackCommitSize>
       <LargeAddressAware>true</LargeAddressAware>
       <OptimizeReferences>true</OptimizeReferences>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>ws2_32.lib;ddraw.lib;dxguid.lib;winmm.lib;comctl32.lib;version.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;winio.lib;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;libpng16.lib;lglcd.lib;openal32.lib;portaudio_x86.lib;vfw32.lib;wtsapi32.lib;enet.lib;lzmalib.lib;prowizard.lib;libFLAC_static.lib;hid.lib;zlibstat.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>ws2_32.lib;ddraw.lib;dxguid.lib;winmm.lib;comctl32.lib;version.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;winio.lib;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;libpng16.lib;lglcd.lib;openal32.lib;portaudio_x86.lib;vfw32.lib;wtsapi32.lib;enet.lib;lzmalib.lib;prowizard.lib;libFLAC_static.lib;hid.lib;zlibstat.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);$(SolutionDir)\..\lib\</AdditionalLibraryDirectories>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>.\Test/winuae.pdb</ProgramDatabaseFile>
       <SubSystem>Windows</SubSystem>
-      <StackReserveSize>2621440</StackReserveSize>
-      <StackCommitSize>2621440</StackCommitSize>
+      <StackReserveSize>
+      </StackReserveSize>
+      <StackCommitSize>
+      </StackCommitSize>
       <LargeAddressAware>true</LargeAddressAware>
       <OptimizeReferences>true</OptimizeReferences>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>ws2_32.lib;ddraw.lib;dxguid.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;openal32.lib;libpng16.lib;lglcd.lib;wtsapi32.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>ws2_32.lib;ddraw.lib;dxguid.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;openal32.lib;libpng16.lib;lglcd.lib;wtsapi32.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <ShowProgress>NotSet</ShowProgress>
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>$(Platform)\$(Configuration)\winuae.pdb</ProgramDatabaseFile>
       <SubSystem>Windows</SubSystem>
-      <StackReserveSize>0</StackReserveSize>
-      <StackCommitSize>0</StackCommitSize>
+      <StackReserveSize>
+      </StackReserveSize>
+      <StackCommitSize>
+      </StackCommitSize>
       <OptimizeReferences>true</OptimizeReferences>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <LinkTimeCodeGeneration>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>$(Platform)\$(Configuration)\winuae.pdb</ProgramDatabaseFile>
       <SubSystem>Windows</SubSystem>
-      <StackReserveSize>0</StackReserveSize>
-      <StackCommitSize>0</StackCommitSize>
+      <StackReserveSize>
+      </StackReserveSize>
+      <StackCommitSize>
+      </StackCommitSize>
       <OptimizeReferences>true</OptimizeReferences>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <LinkTimeCodeGeneration>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>ws2_32.lib;ddraw.lib;dxguid.lib;winmm.lib;comctl32.lib;version.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;winio.lib;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;zlibstat.lib;libpng16.lib;lglcd.lib;openal32.lib;portaudio_x86.lib;vfw32.lib;wtsapi32.lib;enet.lib;prowizard.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>ws2_32.lib;ddraw.lib;dxguid.lib;winmm.lib;comctl32.lib;version.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;winio.lib;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;zlibstat.lib;libpng16.lib;lglcd.lib;openal32.lib;portaudio_x86.lib;vfw32.lib;wtsapi32.lib;enet.lib;prowizard.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);$(SolutionDir)\..\lib\</AdditionalLibraryDirectories>
       <AdditionalManifestDependencies>%(AdditionalManifestDependencies)</AdditionalManifestDependencies>
       <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
-      <DelayLoadDLLs>d3dx9_43.dll;openal32.dll;portaudio_x86.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;wininet.dll;ddraw.dll;Iphlpapi.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+      <DelayLoadDLLs>d3dx9_43.dll;openal32.dll;portaudio_x86.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;wininet.dll;ddraw.dll;Iphlpapi.dll;gdiplus.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>.\FullRelease/winuae.pdb</ProgramDatabaseFile>
       <SubSystem>Windows</SubSystem>
-      <StackReserveSize>2621440</StackReserveSize>
-      <StackCommitSize>2621440</StackCommitSize>
+      <StackReserveSize>
+      </StackReserveSize>
+      <StackCommitSize>
+      </StackCommitSize>
       <LargeAddressAware>true</LargeAddressAware>
       <OptimizeReferences>true</OptimizeReferences>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>ws2_32.lib;ddraw.lib;dxguid.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;openal32.lib;libpng16.lib;lglcd.lib;wtsapi32.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>ws2_32.lib;ddraw.lib;dxguid.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;openal32.lib;libpng16.lib;lglcd.lib;wtsapi32.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <ShowProgress>NotSet</ShowProgress>
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);$(SolutionDir)\..\lib\</AdditionalLibraryDirectories>
       <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries);MSVCRT</IgnoreSpecificDefaultLibraries>
-      <DelayLoadDLLs>d3dx9_43.dll;openal32.dll;portaudio_x64.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+      <DelayLoadDLLs>d3dx9_43.dll;openal32.dll;portaudio_x64.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;gdiplus.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>.\x64\FullRelease/winuae.pdb</ProgramDatabaseFile>
       <SubSystem>Windows</SubSystem>
-      <StackReserveSize>0</StackReserveSize>
-      <StackCommitSize>0</StackCommitSize>
+      <StackReserveSize>
+      </StackReserveSize>
+      <StackCommitSize>
+      </StackCommitSize>
       <OptimizeReferences>true</OptimizeReferences>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
       <TargetMachine>MachineX64</TargetMachine>
       <BaseAddress>0x10000000</BaseAddress>
       <AdditionalOptions>/ignore:4099 %(AdditionalOptions)</AdditionalOptions>
+      <LargeAddressAware>true</LargeAddressAware>
     </Link>
     <Manifest>
       <AdditionalManifestFiles>..\resources\winuae64.exe.manifest;%(AdditionalManifestFiles)</AdditionalManifestFiles>
index 4aa329c8dba5ca05622d735288dc00239abc7a8a..84bac535ebd160dc1c97e633f020b96dfa498462 100644 (file)
@@ -4,6 +4,27 @@ JIT Direct current rules are less complex now. It automatically switches off onl
   - RTG VRAM is outside of reserved natmem space. Workaround: Move RTG in earlier position using Hardware info GUI panel.\r
   Note that in 64-bit version RTG VRAM must be inside of reserved natmem space. (Outside = error message and return back to GUI)\r
 \r
+Beta 9:\r
+\r
+- Added workaround that disables RTG HW sprite if enabled in D3D11 mode. (HW sprite is not yet supported in D3D11)\r
+- Fixed D3D11 position calculation bug that for example caused full window RTG to be partially off-screen.\r
+- 16-bit color depth is now supported in D3D11 mode.\r
+- D3D11 to D3D9 fall back didn't work correctly, it tried D3D11 twice and then selected DirectDraw.\r
+- READ CD-DA (MSF) really works now.\r
+- KS 1.2 autoboot didn't work without extra reset if UAE autoconfig board wasn't first board in autoconfig chain.\r
+- Fixed AdIDE emulation, AdIDE data line "scrambling" got broken in b1.\r
+- Added untested ATAPI tape drive support.\r
+- Selecting index.tape directly (instead of selecting directory where it is located) will also mount the tape in directory mode.\r
+- Tape emulation ignored new index file if tape was first written, rewound and read in same session.\r
+- Tape emulation accuracy improvements.\r
+- Added Toshiba Gary to Advanced chipset, if ticked, 0xe80000 to 0xf7ffff has chip ram access speed.\r
+- Added ROM is slow (Toshiba Gary without transistor fix), KS ROM space also has chip ram access speed.\r
+- 68030 data cache emulation didn't work correctly if write was cached and address was odd. (Bug found by Hatari developers)\r
+- ECS Denise BPLCON2 ECS-only bits were masked unless AGA was selected, ECS-specific KILLEHB linetoscr was not implemented. Seven Seas/Andromeda now shows correctly corrupted palette if ECS Denise.\r
+- IDE FORMAT TRACK fixed, it needs to transfer single block of data (and then toss it away). Fixes Gigatron Arriba installer.\r
+- Emulated Gigatron Arriba IDE controller. ROM dump not available.\r
+- 64-bit only bad stack linker setting correctded, caused random crashes and caused file dialogs to crash if certain shell extensions were installed. (Thanks mutetus!)\r
+\r
 Beta 8:\r
 \r
 - Replaced b7 unmapped zero checkbox with a 3 option select menu. Different A2000/B2000 variants can have either pullup or pulldown resistors connected to CPU data lines.\r
index 8a179d914e31d141b234f3ad2af629dd7d84c9db..58542085feab6d81345d9fe7c126a18490873705 100644 (file)
@@ -28,7 +28,7 @@ void uaeexe_install (void)
 {
        uaecptr loop;
 
-       if (!uae_boot_rom_type)
+       if (!uae_boot_rom_type && !currprefs.uaeboard)
                return;
        loop = here ();
        org (UAEEXE_ORG);
index 0907692d982058c9f14c0ed53cf537e156f98f3f..43aac13aae026b410b0895932bc9bf65362ffb21 100644 (file)
@@ -462,16 +462,11 @@ static uae_u32 REGPARAM2 uaelib_demux (TrapContext *ctx)
 void emulib_install (void)
 {
        uaecptr a;
-       if (!uae_boot_rom_type)
+       if (!uae_boot_rom_type && !currprefs.uaeboard)
                return;
        a = here ();
        currprefs.mmkeyboard = 0;
        org (rtarea_base + 0xFF60);
-#if 0
-       dw (0x4eb9);
-       dw ((rtarea_base >> 16) | get_word (rtarea_base + 36));
-       dw (get_word (rtarea_base + 38) + 12);
-#endif
        calltrap (deftrapres (uaelib_demux, 0, _T("uaelib_demux")));
        dw (RTS);
        org (a);