From: Toni Wilen Date: Sat, 2 Dec 2017 16:47:32 +0000 (+0200) Subject: 3600b9 X-Git-Tag: 3600~52 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=c81a3c40cbad3333f9426f50bcd7e37ca6731ed3;p=francis%2Fwinuae.git 3600b9 --- diff --git a/cfgfile.cpp b/cfgfile.cpp index efd838b6..6eca0601 100644 --- a/cfgfile.cpp +++ b/cfgfile.cpp @@ -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) diff --git a/disk.cpp b/disk.cpp index 5632b7b1..2f98cad7 100644 --- 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); } } diff --git a/include/debug.h b/include/debug.h index ebdff0dc..4d526362 100644 --- a/include/debug.h +++ b/include/debug.h @@ -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; diff --git a/include/options.h b/include/options.h index 074f938b..0ce9199b 100644 --- a/include/options.h +++ b/include/options.h @@ -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); diff --git a/od-win32/resources/resource.h b/od-win32/resources/resource.h index 91313f86..316da603 100644 --- a/od-win32/resources/resource.h +++ b/od-win32/resources/resource.h @@ -1129,7 +1129,9 @@ #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 @@ -1196,6 +1198,7 @@ #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 diff --git a/od-win32/resources/winuae.rc b/od-win32/resources/winuae.rc index c0c37595..8da3ed5a 100644 --- a/od-win32/resources/winuae.rc +++ b/od-win32/resources/winuae.rc @@ -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 diff --git a/od-win32/rp.cpp b/od-win32/rp.cpp index 36106e6d..9566d81e 100644 --- a/od-win32/rp.cpp +++ b/od-win32/rp.cpp @@ -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; } diff --git a/od-win32/win32.cpp b/od-win32/win32.cpp index 3b83624b..d5240837 100644 --- a/od-win32/win32.cpp +++ b/od-win32/win32.cpp @@ -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 diff --git a/od-win32/win32.h b/od-win32/win32.h index 0a2305d9..784d708b 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("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; diff --git a/od-win32/win32gui.cpp b/od-win32/win32gui.cpp index 621cb7de..1119cb1b 100644 --- a/od-win32/win32gui.cpp +++ b/od-win32/win32gui.cpp @@ -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; diff --git a/od-win32/win32gui.h b/od-win32/win32gui.h index ef92810d..85cab43a 100644 --- a/od-win32/win32gui.h +++ b/od-win32/win32gui.h @@ -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 diff --git a/od-win32/win32gui_extra.cpp b/od-win32/win32gui_extra.cpp index e2b0f52d..f547bea9 100644 --- a/od-win32/win32gui_extra.cpp +++ b/od-win32/win32gui_extra.cpp @@ -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 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 + +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; +} diff --git a/od-win32/winuae_msvc15/winuae_msvc.vcxproj b/od-win32/winuae_msvc15/winuae_msvc.vcxproj index c670ef0b..2cd7ff14 100644 --- a/od-win32/winuae_msvc15/winuae_msvc.vcxproj +++ b/od-win32/winuae_msvc15/winuae_msvc.vcxproj @@ -357,18 +357,20 @@ 0x0409 - 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) + 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) $(OutDir)$(TargetName)$(TargetExt) true %(AdditionalLibraryDirectories);$(SolutionDir)\..\lib\ %(AdditionalManifestDependencies) %(IgnoreSpecificDefaultLibraries) - d3dx9_43.dll;openal32.dll;portaudio_x86.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;wininet.dll;ddraw.dll;Iphlpapi.dll;%(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) true .\Release/winuae.pdb Windows - 2621440 - 2621440 + + + + true true true @@ -436,7 +438,7 @@ 0x0409 - 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) + 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) $(OutDir)$(TargetName)$(TargetExt) true %(AdditionalLibraryDirectories);$(SolutionDir)\..\lib\ @@ -446,8 +448,10 @@ true .\Test/winuae.pdb Windows - 2621440 - 2621440 + + + + true true true @@ -514,7 +518,7 @@ 0x0409 - 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) + 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) NotSet $(OutDir)$(TargetName)$(TargetExt) true @@ -524,8 +528,10 @@ true $(Platform)\$(Configuration)\winuae.pdb Windows - 0 - 0 + + + + true true @@ -598,8 +604,10 @@ true $(Platform)\$(Configuration)\winuae.pdb Windows - 0 - 0 + + + + true true @@ -662,18 +670,20 @@ 0x0409 - 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) + 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) $(OutDir)$(TargetName)$(TargetExt) true %(AdditionalLibraryDirectories);$(SolutionDir)\..\lib\ %(AdditionalManifestDependencies) %(IgnoreSpecificDefaultLibraries) - d3dx9_43.dll;openal32.dll;portaudio_x86.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;wininet.dll;ddraw.dll;Iphlpapi.dll;%(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) true .\FullRelease/winuae.pdb Windows - 2621440 - 2621440 + + + + true true true @@ -740,18 +750,20 @@ 0x0409 - 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) + 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) NotSet $(OutDir)$(TargetName)$(TargetExt) true %(AdditionalLibraryDirectories);$(SolutionDir)\..\lib\ %(IgnoreSpecificDefaultLibraries);MSVCRT - d3dx9_43.dll;openal32.dll;portaudio_x64.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;%(DelayLoadDLLs) + d3dx9_43.dll;openal32.dll;portaudio_x64.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;gdiplus.dll;%(DelayLoadDLLs) true .\x64\FullRelease/winuae.pdb Windows - 0 - 0 + + + + true true UseLinkTimeCodeGeneration @@ -761,6 +773,7 @@ MachineX64 0x10000000 /ignore:4099 %(AdditionalOptions) + true ..\resources\winuae64.exe.manifest;%(AdditionalManifestFiles) diff --git a/od-win32/winuaechangelog.txt b/od-win32/winuaechangelog.txt index 4aa329c8..84bac535 100644 --- a/od-win32/winuaechangelog.txt +++ b/od-win32/winuaechangelog.txt @@ -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. Note that in 64-bit version RTG VRAM must be inside of reserved natmem space. (Outside = error message and return back to GUI) +Beta 9: + +- Added workaround that disables RTG HW sprite if enabled in D3D11 mode. (HW sprite is not yet supported in D3D11) +- Fixed D3D11 position calculation bug that for example caused full window RTG to be partially off-screen. +- 16-bit color depth is now supported in D3D11 mode. +- D3D11 to D3D9 fall back didn't work correctly, it tried D3D11 twice and then selected DirectDraw. +- READ CD-DA (MSF) really works now. +- KS 1.2 autoboot didn't work without extra reset if UAE autoconfig board wasn't first board in autoconfig chain. +- Fixed AdIDE emulation, AdIDE data line "scrambling" got broken in b1. +- Added untested ATAPI tape drive support. +- Selecting index.tape directly (instead of selecting directory where it is located) will also mount the tape in directory mode. +- Tape emulation ignored new index file if tape was first written, rewound and read in same session. +- Tape emulation accuracy improvements. +- Added Toshiba Gary to Advanced chipset, if ticked, 0xe80000 to 0xf7ffff has chip ram access speed. +- Added ROM is slow (Toshiba Gary without transistor fix), KS ROM space also has chip ram access speed. +- 68030 data cache emulation didn't work correctly if write was cached and address was odd. (Bug found by Hatari developers) +- 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. +- IDE FORMAT TRACK fixed, it needs to transfer single block of data (and then toss it away). Fixes Gigatron Arriba installer. +- Emulated Gigatron Arriba IDE controller. ROM dump not available. +- 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!) + Beta 8: - 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. diff --git a/uaeexe.cpp b/uaeexe.cpp index 8a179d91..58542085 100644 --- a/uaeexe.cpp +++ b/uaeexe.cpp @@ -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); diff --git a/uaelib.cpp b/uaelib.cpp index 0907692d..43aac13a 100644 --- a/uaelib.cpp +++ b/uaelib.cpp @@ -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);