From 5a23d578465e63ae7a126be62abf6a93c6c7d3f5 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Fri, 26 Jun 2015 18:55:05 +0300 Subject: [PATCH] 3200b1 --- cfgfile.cpp | 32 +- cpuboard.cpp | 123 +- include/cpuboard.h | 48 +- include/filesys.h | 2 +- include/options.h | 14 +- include/rommgr.h | 5 +- ncr9x_scsi.cpp | 4 +- od-win32/resources/resource.h | 19 +- od-win32/resources/winuae.rc | 121 +- od-win32/win32.h | 4 +- od-win32/win32gfx.cpp | 2 + od-win32/win32gui.cpp | 2076 +++++++++-------- od-win32/winuae_msvc14/winuae_msvc.vcxproj | 6 +- .../winuae_msvc14/winuae_msvc.vcxproj.filters | 3 + pci.cpp | 5 +- rommgr.cpp | 11 +- 16 files changed, 1386 insertions(+), 1089 deletions(-) diff --git a/cfgfile.cpp b/cfgfile.cpp index 21c8a5ed..a5b3e8be 100644 --- a/cfgfile.cpp +++ b/cfgfile.cpp @@ -895,13 +895,17 @@ static void write_filesys_config (struct uae_prefs *p, struct zfile *f) } TCHAR *extras = NULL; if (ct >= HD_CONTROLLER_TYPE_SCSI_FIRST && ct <= HD_CONTROLLER_TYPE_SCSI_LAST) { - if (ci->unit_feature_level == 0) { + if (ci->unit_feature_level == HD_LEVEL_SCSI_1){ extras = _T("SCSI1"); + } else if (ci->unit_feature_level == HD_LEVEL_SASI) { + extras = _T("SASI"); + } else if (ci->unit_feature_level == HD_LEVEL_SASI_ENHANCED) { + extras = _T("SASIE"); } } else if (ct >= HD_CONTROLLER_TYPE_IDE_FIRST && ct <= HD_CONTROLLER_TYPE_IDE_LAST) { - if (ci->unit_feature_level == 0) { + if (ci->unit_feature_level == HD_LEVEL_ATA_1) { extras = _T("ATA1"); - } else if (ci->unit_feature_level == 2) { + } else if (ci->unit_feature_level == HD_LEVEL_ATA_2S) { extras = _T("ATA2+S"); } } @@ -1516,6 +1520,7 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type) cfgfile_write_bool (f, _T("genlock"), p->genlock); cfgfile_dwrite_str(f, _T("genlockmode"), genlockmodes[p->genlock_image]); cfgfile_dwrite_str(f, _T("genlock_image"), p->genlock_image_file); + cfgfile_dwrite(f, _T("genlock_mix"), _T("%d"), p->genlock_mix); cfgfile_dwrite_str(f, _T("monitoremu"), specialmonitors[p->monitoremu]); cfgfile_dwrite_bool (f, _T("show_leds"), !!(p->leds_on_screen & STATUSLINE_CHIPSET)); @@ -3740,15 +3745,19 @@ static int cfgfile_parse_newfilesys (struct uae_prefs *p, int nr, int type, TCHA uci.controller_media_type = 0; if (cfgfile_option_find(tmpp2, _T("SCSI2"))) - uci.unit_feature_level = 1; + uci.unit_feature_level = HD_LEVEL_SCSI_2; else if (cfgfile_option_find(tmpp2, _T("SCSI1"))) - uci.unit_feature_level = 0; + uci.unit_feature_level = HD_LEVEL_SCSI_1; + else if (cfgfile_option_find(tmpp2, _T("SASIE"))) + uci.unit_feature_level = HD_LEVEL_SASI_ENHANCED; + else if (cfgfile_option_find(tmpp2, _T("SASI"))) + uci.unit_feature_level = HD_LEVEL_SASI; else if (cfgfile_option_find(tmpp2, _T("ATA2+S"))) - uci.unit_feature_level = 2; + uci.unit_feature_level = HD_LEVEL_ATA_2S; else if (cfgfile_option_find(tmpp2, _T("ATA2+"))) - uci.unit_feature_level = 1; + uci.unit_feature_level = HD_LEVEL_ATA_2; else if (cfgfile_option_find(tmpp2, _T("ATA1"))) - uci.unit_feature_level = 0; + uci.unit_feature_level = HD_LEVEL_ATA_1; } } if (type == 2) { @@ -4219,7 +4228,8 @@ static int cfgfile_parse_hardware (struct uae_prefs *p, const TCHAR *option, TCH || cfgfile_intval (option, value, _T("parallel_autoflush"), &p->parallel_autoflush_time, 1) || cfgfile_intval (option, value, _T("uae_hide"), &p->uae_hide, 1) || cfgfile_intval (option, value, _T("cpu_frequency"), &p->cpu_frequency, 1) - || cfgfile_intval (option, value, _T("kickstart_ext_rom_file2addr"), &p->romextfile2addr, 1) + || cfgfile_intval(option, value, _T("kickstart_ext_rom_file2addr"), &p->romextfile2addr, 1) + || cfgfile_intval(option, value, _T("genlock_mix"), &p->genlock_mix, 1) || cfgfile_intval (option, value, _T("catweasel"), &p->catweasel, 1)) return 1; @@ -6050,6 +6060,7 @@ void default_prefs (struct uae_prefs *p, int type) p->chipset_mask = CSMASK_ECS_AGNUS; p->genlock = 0; p->genlock_image = 0; + p->genlock_mix = 0; p->ntscmode = 0; p->filesys_limit = 0; p->filesys_max_name = 107; @@ -6253,7 +6264,6 @@ static void buildin_default_prefs (struct uae_prefs *p) _tcscpy (p->romextfile, _T("")); _tcscpy (p->romextfile2, _T("")); set_device_rom(p, NULL, ROMTYPE_CPUBOARD, 0); - set_device_rom(p, NULL, ROMTYPE_CPUBOARDEXT, 0); p->prtname[0] = 0; p->sername[0] = 0; @@ -6611,7 +6621,7 @@ static int bip_a1200 (struct uae_prefs *p, int config, int compa, int romcheck) p->cpuboardmem1_size = 32 * 1024 * 1024; p->cpu_model = 68030; p->cs_rtc = 1; - roms_bliz[0] = 90; + roms_bliz[0] = 89; configure_rom(p, roms_bliz, romcheck); break; case 3: diff --git a/cpuboard.cpp b/cpuboard.cpp index 668a6bbf..f7e43f7e 100644 --- a/cpuboard.cpp +++ b/cpuboard.cpp @@ -150,7 +150,7 @@ static uae_u32 maprom_base; static int delayed_rom_protect; static int f0rom_size, earom_size; static uae_u8 io_reg[64]; -static void *flashrom; +static void *flashrom, *flashrom2; static struct zfile *flashrom_file; static int flash_unlocked; static int csmk2_flashaddressing; @@ -233,6 +233,11 @@ static bool mapromconfigured(void) return false; } +void cpuboard_set_flash_unlocked(bool unlocked) +{ + flash_unlocked = unlocked; +} + static bool is_blizzard(void) { return ISCPUBOARD(BOARD_BLIZZARD, BOARD_BLIZZARD_SUB_1230IV) || ISCPUBOARD(BOARD_BLIZZARD, BOARD_BLIZZARD_SUB_1260); @@ -525,35 +530,6 @@ static uae_u8 *REGPARAM2 blizzarde8_xlate(uaecptr addr) return NULL; } -static uae_u32 REGPARAM2 blizzardf0_lget(uaecptr addr) -{ -#ifdef JIT - special_mem |= S_READ; -#endif - uae_u32 *m; - - //write_log(_T("F0 LONGGET %08x\n"), addr); - - blizzardf0_slow(4); - - addr &= blizzardf0_bank.mask; - m = (uae_u32 *)(blizzardf0_bank.baseaddr + addr); - return do_get_mem_long(m); -} -static uae_u32 REGPARAM2 blizzardf0_wget(uaecptr addr) -{ -#ifdef JIT - special_mem |= S_READ; -#endif - uae_u16 *m, v; - - blizzardf0_slow(2); - - addr &= blizzardf0_bank.mask; - m = (uae_u16 *)(blizzardf0_bank.baseaddr + addr); - v = do_get_mem_word(m); - return v; -} static uae_u32 REGPARAM2 blizzardf0_bget(uaecptr addr) { #ifdef JIT @@ -575,26 +551,52 @@ static uae_u32 REGPARAM2 blizzardf0_bget(uaecptr addr) addr &= 65535; addr += 65536; return flash_read(flashrom, addr); + } else if (is_dkb_wildfire()) { + if (flash_unlocked) { + if (addr & 1) + return flash_read(flashrom2, addr); + else + return flash_read(flashrom, addr); + } } addr &= blizzardf0_bank.mask; v = blizzardf0_bank.baseaddr[addr]; return v; } - -static void REGPARAM2 blizzardf0_lput(uaecptr addr, uae_u32 b) +static uae_u32 REGPARAM2 blizzardf0_lget(uaecptr addr) { #ifdef JIT - special_mem |= S_WRITE; + special_mem |= S_READ; #endif + uae_u32 *m; + + //write_log(_T("F0 LONGGET %08x\n"), addr); + blizzardf0_slow(4); + + addr &= blizzardf0_bank.mask; + m = (uae_u32 *)(blizzardf0_bank.baseaddr + addr); + return do_get_mem_long(m); } -static void REGPARAM2 blizzardf0_wput(uaecptr addr, uae_u32 b) +static uae_u32 REGPARAM2 blizzardf0_wget(uaecptr addr) { #ifdef JIT - special_mem |= S_WRITE; + special_mem |= S_READ; #endif + uae_u16 *m, v; + blizzardf0_slow(2); + if (is_dkb_wildfire() && flash_unlocked) { + v = blizzardf0_bget(addr + 0) << 8; + v |= blizzardf0_bget(addr + 1); + } else { + addr &= blizzardf0_bank.mask; + m = (uae_u16 *)(blizzardf0_bank.baseaddr + addr); + v = do_get_mem_word(m); + } + return v; } + static void REGPARAM2 blizzardf0_bput(uaecptr addr, uae_u32 b) { #ifdef JIT @@ -616,6 +618,31 @@ static void REGPARAM2 blizzardf0_bput(uaecptr addr, uae_u32 b) addr &= 65535; addr += 65536; flash_write(flashrom, addr, b); + } else if (is_dkb_wildfire()) { + if (flash_unlocked) { + if (addr & 1) + flash_write(flashrom2, addr, b); + else + flash_write(flashrom, addr, b); + } + } +} +static void REGPARAM2 blizzardf0_lput(uaecptr addr, uae_u32 b) +{ +#ifdef JIT + special_mem |= S_WRITE; +#endif + blizzardf0_slow(4); +} +static void REGPARAM2 blizzardf0_wput(uaecptr addr, uae_u32 b) +{ +#ifdef JIT + special_mem |= S_WRITE; +#endif + blizzardf0_slow(2); + if (is_dkb_wildfire()) { + blizzardf0_bput(addr + 0, b >> 8); + blizzardf0_bput(addr + 1, b >> 0); } } @@ -1354,7 +1381,7 @@ void cpuboard_map(void) map_banks(&blizzardf0_bank, 0xf00000 >> 16, 131072 >> 16, 0); } if (is_dkb_wildfire()) { - map_banks(&blizzardf0_bank, 0xf00000 >> 16, 0x10000 >> 16, 0); + map_banks(&blizzardf0_bank, 0xf00000 >> 16, 0x80000 >> 16, 0); } if (is_dkb_12x0()) { if (cpuboard_size >= 4 * 1024 * 1024) { @@ -1397,6 +1424,8 @@ void cpuboard_reset(void) flash_free(flashrom); flashrom = NULL; + flash_free(flashrom2); + flashrom2 = NULL; zfile_fclose(flashrom_file); flashrom_file = NULL; } @@ -1408,6 +1437,8 @@ void cpuboard_cleanup(void) flash_free(flashrom); flashrom = NULL; + flash_free(flashrom2); + flashrom2 = NULL; zfile_fclose(flashrom_file); flashrom_file = NULL; @@ -1483,7 +1514,7 @@ void cpuboard_init(void) } else if (is_dkb_wildfire()) { blizzardf0_bank.start = 0x00f00000; - blizzardf0_bank.allocated = 131072; + blizzardf0_bank.allocated = 65536; blizzardf0_bank.mask = blizzardf0_bank.allocated - 1; mapped_malloc(&blizzardf0_bank); @@ -1985,7 +2016,7 @@ static void ew(uae_u8 *p, int addr, uae_u8 value) addrbank *cpuboard_autoconfig_init(struct romconfig *rc) { struct zfile *autoconfig_rom = NULL; - struct boardromconfig *brc, *brc2; + struct boardromconfig *brc; int roms[3], roms2[3]; bool autoconf = true; bool autoconf_stop = false; @@ -1997,9 +2028,8 @@ addrbank *cpuboard_autoconfig_init(struct romconfig *rc) boardname = cpuboards[currprefs.cpuboard_type].subtypes[currprefs.cpuboard_subtype].name; - int idx, idx2; + int idx; brc = get_device_rom(&currprefs, ROMTYPE_CPUBOARD, 0, &idx); - brc2 = get_device_rom(&currprefs, ROMTYPE_CPUBOARDEXT, 0, &idx2); if (brc) romname = brc->roms[idx].romfile; @@ -2049,6 +2079,7 @@ addrbank *cpuboard_autoconfig_init(struct romconfig *rc) case BOARD_DKB_SUB_12x0: return &expamem_null; case BOARD_DKB_SUB_WILDFIRE: + roms[0] = 143; break; } break; @@ -2189,6 +2220,8 @@ addrbank *cpuboard_autoconfig_init(struct romconfig *rc) if (is_dkb_wildfire()) { f0rom_size = 65536; zfile_fread(blizzardf0_bank.baseaddr, 1, f0rom_size, autoconfig_rom); + flashrom = flash_new(blizzardf0_bank.baseaddr + 0, 32768, 65536, 0x20, flashrom_file, FLASHROM_EVERY_OTHER_BYTE | FLASHROM_PARALLEL_EEPROM); + flashrom2 = flash_new(blizzardf0_bank.baseaddr + 1, 32768, 65536, 0x20, flashrom_file, FLASHROM_EVERY_OTHER_BYTE | FLASHROM_EVERY_OTHER_BYTE_ODD | FLASHROM_PARALLEL_EEPROM); autoconf = false; } else if (is_aca500()) { f0rom_size = 524288; @@ -2198,7 +2231,7 @@ addrbank *cpuboard_autoconfig_init(struct romconfig *rc) flashrom_file = autoconfig_rom; autoconfig_rom = NULL; } - flashrom = flash_new(blizzardf0_bank.baseaddr, f0rom_size, f0rom_size, 0xa4, flashrom_file); + flashrom = flash_new(blizzardf0_bank.baseaddr, f0rom_size, f0rom_size, 0xa4, flashrom_file, 0); } else if (is_a2630()) { f0rom_size = 131072; zfile_fread(blizzardf0_bank.baseaddr, 1, f0rom_size, autoconfig_rom); @@ -2255,7 +2288,7 @@ addrbank *cpuboard_autoconfig_init(struct romconfig *rc) flashrom_file = autoconfig_rom; autoconfig_rom = NULL; } - flashrom = flash_new(blizzardea_bank.baseaddr, earom_size, earom_size, 0x20, flashrom_file); + flashrom = flash_new(blizzardea_bank.baseaddr, earom_size, earom_size, 0x20, flashrom_file, 0); memcpy(blizzardf0_bank.baseaddr, blizzardea_bank.baseaddr + 65536, 65536); } else if (is_csmk2()) { earom_size = 131072; @@ -2265,7 +2298,7 @@ addrbank *cpuboard_autoconfig_init(struct romconfig *rc) flashrom_file = autoconfig_rom; autoconfig_rom = NULL; } - flashrom = flash_new(blizzardea_bank.baseaddr, earom_size, earom_size, 0x20, flashrom_file); + flashrom = flash_new(blizzardea_bank.baseaddr, earom_size, earom_size, 0x20, flashrom_file, 0); memcpy(blizzardf0_bank.baseaddr, blizzardea_bank.baseaddr + 65536, 65536); } else if (is_csmk3() || is_blizzardppc()) { uae_u8 flashtype; @@ -2292,7 +2325,7 @@ addrbank *cpuboard_autoconfig_init(struct romconfig *rc) autoconfig_rom = NULL; } fixserial(blizzardf0_bank.baseaddr, f0rom_size); - flashrom = flash_new(blizzardf0_bank.baseaddr, f0rom_size, f0rom_size, flashtype, flashrom_file); + flashrom = flash_new(blizzardf0_bank.baseaddr, f0rom_size, f0rom_size, flashtype, flashrom_file, 0); } else { // 1230 MK IV / 1240/60 f0rom_size = 65536; @@ -2308,6 +2341,8 @@ addrbank *cpuboard_autoconfig_init(struct romconfig *rc) zfile_fclose(autoconfig_rom); autoconfig_rom = NULL; if (roms2[0] != -1) { + int idx2; + struct boardromconfig *brc2 = get_device_rom(&currprefs, ROMTYPE_BLIZKIT4, 0, &idx2); if (brc2 && brc2->roms[idx2].romfile[0]) autoconfig_rom = board_rom_open(roms2, brc2->roms[idx2].romfile); if (autoconfig_rom) { diff --git a/include/cpuboard.h b/include/cpuboard.h index 17abe353..8d0c3f36 100644 --- a/include/cpuboard.h +++ b/include/cpuboard.h @@ -18,6 +18,7 @@ extern bool cpuboard_io_special(int addr, uae_u32 *val, int size, bool write); extern void cpuboard_overlay_override(void); extern void cpuboard_setboard(struct uae_prefs *p, int type, int subtype); extern uaecptr cpuboard_get_reset_pc(uaecptr *stack); +extern void cpuboard_set_flash_unlocked(bool unlocked); extern bool ppc_interrupt(int new_m68k_ipl); @@ -35,34 +36,43 @@ extern uae_u8 *REGPARAM3 cyberstorm_scsi_ram_xlate(uaecptr addr) REGPARAM; #define ISCPUBOARD(type,subtype) (cpuboards[currprefs.cpuboard_type].id == type && (type < 0 || currprefs.cpuboard_subtype == subtype)) -#define BOARD_BLIZZARD 1 +#define BOARD_ACT 1 +#define BOARD_ACT_SUB_APOLLO 0 + +#define BOARD_COMMODORE 2 +#define BOARD_COMMODORE_SUB_A26x0 0 + +#define BOARD_DKB 3 +#define BOARD_DKB_SUB_12x0 0 +#define BOARD_DKB_SUB_WILDFIRE 1 + +#define BOARD_GVP 4 +#define BOARD_GVP_SUB_A3001SI 0 +#define BOARD_GVP_SUB_A3001SII 1 +#define BOARD_GVP_SUB_A530 2 +#define BOARD_GVP_SUB_GFORCE030 3 +#define BOARD_GVP_SUB_TEKMAGIC 4 + +#define BOARD_KUPKE 5 + +#define BOARD_MACROSYSTEM 6 +#define BOARD_MACROSYSTEM_SUB_WARPENGINE_A4000 0 + +#define BOARD_BLIZZARD 7 #define BOARD_BLIZZARD_SUB_1230IV 0 #define BOARD_BLIZZARD_SUB_1260 1 #define BOARD_BLIZZARD_SUB_2060 2 #define BOARD_BLIZZARD_SUB_PPC 3 -#define BOARD_CYBERSTORM 2 + +#define BOARD_CYBERSTORM 8 #define BOARD_CYBERSTORM_SUB_MK1 0 #define BOARD_CYBERSTORM_SUB_MK2 1 #define BOARD_CYBERSTORM_SUB_MK3 2 #define BOARD_CYBERSTORM_SUB_PPC 3 -#define BOARD_MACROSYSTEM 3 -#define BOARD_MACROSYSTEM_SUB_WARPENGINE_A4000 0 -#define BOARD_COMMODORE 4 -#define BOARD_COMMODORE_SUB_A26x0 0 -#define BOARD_DKB 5 -#define BOARD_DKB_SUB_12x0 0 -#define BOARD_DKB_SUB_WILDFIRE 1 -#define BOARD_RCS 6 + +#define BOARD_RCS 9 #define BOARD_RCS_SUB_FUSIONFORTY 0 -#define BOARD_ACT 7 -#define BOARD_ACT_SUB_APOLLO 0 -#define BOARD_GVP 8 -#define BOARD_GVP_SUB_A3001SI 0 -#define BOARD_GVP_SUB_A3001SII 1 -#define BOARD_GVP_SUB_A530 2 -#define BOARD_GVP_SUB_GFORCE030 3 -#define BOARD_GVP_SUB_TEKMAGIC 4 -#define BOARD_KUPKE 9 + #define BOARD_IC 10 #define BOARD_IC_ACA500 0 diff --git a/include/filesys.h b/include/filesys.h index 401e8f41..5bad7bae 100644 --- a/include/filesys.h +++ b/include/filesys.h @@ -89,7 +89,7 @@ struct hd_hardfiledata { int ansi_version; }; -#define HD_CONTROLLER_EXPANSION_MAX 30 +#define HD_CONTROLLER_EXPANSION_MAX 50 #define HD_CONTROLLER_NEXT_UNIT 100 #define HD_CONTROLLER_TYPE_UAE 0 diff --git a/include/options.h b/include/options.h index 988765c3..a6d045b6 100644 --- a/include/options.h +++ b/include/options.h @@ -11,8 +11,8 @@ #define UAE_OPTIONS_H #define UAEMAJOR 3 -#define UAEMINOR 1 -#define UAESUBREV 1 +#define UAEMINOR 2 +#define UAESUBREV 0 typedef enum { KBD_LANG_US, KBD_LANG_DK, KBD_LANG_DE, KBD_LANG_SE, KBD_LANG_FR, KBD_LANG_IT, KBD_LANG_ES } KbdLang; @@ -134,6 +134,15 @@ struct wh { #define UAEDEV_CD 2 #define UAEDEV_TAPE 3 +#define HD_LEVEL_SCSI_1 0 +#define HD_LEVEL_SCSI_2 1 +#define HD_LEVEL_SASI 2 +#define HD_LEVEL_SASI_ENHANCED 3 + +#define HD_LEVEL_ATA_1 0 +#define HD_LEVEL_ATA_2 1 +#define HD_LEVEL_ATA_2S 2 + #define BOOTPRI_NOAUTOBOOT -128 #define BOOTPRI_NOAUTOMOUNT -129 #define ISAUTOBOOT(ci) ((ci)->bootpri > BOOTPRI_NOAUTOBOOT) @@ -427,6 +436,7 @@ struct uae_prefs { bool ntscmode; bool genlock; int genlock_image; + int genlock_mix; TCHAR genlock_image_file[MAX_DPATH]; int monitoremu; double chipset_refreshrate; diff --git a/include/rommgr.h b/include/rommgr.h index 362a2917..349f9d38 100644 --- a/include/rommgr.h +++ b/include/rommgr.h @@ -46,7 +46,7 @@ extern int decode_cloanto_rom_do (uae_u8 *mem, int size, int real_size); #define ROMTYPE_SCSI 0x00100000 #define ROMTYPE_A2091 0x00100001 #define ROMTYPE_A4091 0x00100002 -#define ROMTYPE_CPUBOARDEXT 0x00100003 +#define ROMTYPE_BLIZKIT4 0x00100003 #define ROMTYPE_FASTLANE 0x00100004 #define ROMTYPE_OKTAGON 0x00100005 #define ROMTYPE_GVPS1 0x00100006 @@ -77,6 +77,9 @@ extern int decode_cloanto_rom_do (uae_u8 *mem, int size, int real_size); #define ROMTYPE_GREX 0x0010001f #define ROMTYPE_PROMETHEUS 0x00100020 #define ROMTYPE_MEDIATOR 0x00100021 +#define ROMTYPE_TECMAR 0x00100022 +#define ROMTYPE_XEBEC 0x00100023 +#define ROMTYPE_MICROFORGE 0x00100024 #define ROMTYPE_NOT 0x00800000 #define ROMTYPE_QUAD 0x01000000 diff --git a/ncr9x_scsi.cpp b/ncr9x_scsi.cpp index 5d132c90..0db3bd36 100644 --- a/ncr9x_scsi.cpp +++ b/ncr9x_scsi.cpp @@ -761,7 +761,7 @@ static void ncr9x_io_bput(struct ncr9x_state *ncr, uaecptr addr, uae_u32 val) return; } } else if (ISCPUBOARD(BOARD_BLIZZARD, BOARD_BLIZZARD_SUB_1230IV) || ISCPUBOARD(BOARD_BLIZZARD, BOARD_BLIZZARD_SUB_1260)) { - if (!cfgfile_board_enabled(&currprefs, ROMTYPE_CPUBOARDEXT, 0)) + if (!cfgfile_board_enabled(&currprefs, ROMTYPE_BLIZKIT4, 0)) return; if (addr >= BLIZZARD_SCSI_KIT_DMA_OFFSET) { addr &= 0x18000; @@ -959,7 +959,7 @@ uae_u32 ncr9x_io_bget(struct ncr9x_state *ncr, uaecptr addr) return ncr->led; } } else if (ISCPUBOARD(BOARD_BLIZZARD, BOARD_BLIZZARD_SUB_1230IV) || ISCPUBOARD(BOARD_BLIZZARD, BOARD_BLIZZARD_SUB_1260)) { - if (!cfgfile_board_enabled(&currprefs, ROMTYPE_CPUBOARDEXT, 0)) + if (!cfgfile_board_enabled(&currprefs, ROMTYPE_BLIZKIT4, 0)) return 0; if (addr >= BLIZZARD_SCSI_KIT_DMA_OFFSET) return 0; diff --git a/od-win32/resources/resource.h b/od-win32/resources/resource.h index bca8fbcb..abcd3000 100644 --- a/od-win32/resources/resource.h +++ b/od-win32/resources/resource.h @@ -29,6 +29,7 @@ #define IDS_GAMEPORTS 21 #define IDS_EXPANSION 22 #define IDS_STRING23 23 +#define IDS_EXPANSION2 23 #define IDS_EXTTEXT 100 #define IDS_EXTACTUAL 101 #define IDS_SOUND 102 @@ -389,6 +390,7 @@ #define IDS_SELECT_MENU 396 #define IDS_SCSI_EMULATION 397 #define IDS_SLIRP 398 +#define IDD_EXPANSION2 398 #define IDS_SLIRP_INBOUND 399 #define IDS_FILTER_PAL_EXTRA 400 #define IDS_FILTER_3D_EXTRA 401 @@ -659,6 +661,7 @@ #define IDC_KEYCHOOSER 1393 #define IDC_SCSIROMSUBSELECT 1393 #define IDC_ROMFILE2 1394 +#define IDC_SCSIROMSELECTCAT 1394 #define IDC_ROMCHOOSER2 1395 #define IDC_FLASHCHOOSER 1396 #define IDC_FLASHFILE 1397 @@ -840,6 +843,7 @@ #define IDC_INPUTLIST 1611 #define IDC_CATWEASEL 1611 #define IDC_INPUTAMIGA 1612 +#define IDC_SCSIROMSELECTED 1612 #define IDC_AVIOUTPUT_VIDEO 1613 #define IDC_INPUTAUTOFIRE 1613 #define IDC_PORT_MOUSETRICK 1613 @@ -1043,6 +1047,7 @@ #define IDC_GENLOCKMODE 1714 #define IDC_CS_RAMSEYREV 1715 #define IDC_SOUND_WASAPI 1715 +#define IDC_GENLOCKMIX 1715 #define IDC_CS_KSMIRROR_E0 1716 #define IDC_STRINGBOXEDIT 1716 #define IDC_SOUND_OPENAL 1716 @@ -1193,9 +1198,7 @@ #define IDC_CD_SELECT 1807 #define IDC_FASTMEMAUTOCONFIG 1808 #define IDC_RTG_DISPLAYSELECT 1809 -#define IDC_CPUBOARD_SETTING1 1809 #define IDC_MISCLIST 1810 -#define IDC_CPUBOARD_SETTING2 1810 #define IDC_STATENAME 1811 #define IDC_SAMPLER_STEREO 1812 #define IDC_LISTDIALOG_LIST 1813 @@ -1232,12 +1235,16 @@ #define IDC_FILTER_NATIVERTG 1839 #define IDC_P96MEM 1840 #define IDC_DA_SLIDER 1841 -#define IDC_EXPANSION_SETTING1 1841 #define IDC_CPUBOARD_TYPE 1842 -#define IDC_EXPANSION_SETTING2 1842 #define IDC_CPUBOARDMEM 1843 #define IDC_Z3MAPPING 1844 #define IDC_CPUBOARD_SUBTYPE 1845 +#define IDC_EXPANSION_SETTING1 1846 +#define IDC_EXPANSION_SETTING2 1847 +#define IDC_EXPANSION_SETTING3 1848 +#define IDC_CPUBOARD_SETTING1 1849 +#define IDC_CPUBOARD_SETTING2 1850 +#define IDC_CPUBOARD_SETTING3 1851 #define ID__FLOPPYDRIVES 40004 #define ID_FLOPPYDRIVES_DF0 40005 #define ID_ST_CONFIGURATION 40010 @@ -1287,9 +1294,9 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NO_MFC 1 #define _APS_3D_CONTROLS 1 -#define _APS_NEXT_RESOURCE_VALUE 398 +#define _APS_NEXT_RESOURCE_VALUE 399 #define _APS_NEXT_COMMAND_VALUE 40050 -#define _APS_NEXT_CONTROL_VALUE 1842 +#define _APS_NEXT_CONTROL_VALUE 1848 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/od-win32/resources/winuae.rc b/od-win32/resources/winuae.rc index 39bcab67..7023684a 100644 --- a/od-win32/resources/winuae.rc +++ b/od-win32/resources/winuae.rc @@ -76,7 +76,7 @@ END // Dialog // -IDD_KICKSTART DIALOGEX 0, 0, 396, 304 +IDD_KICKSTART DIALOGEX 0, 0, 396, 204 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD EXSTYLE WS_EX_CONTEXTHELP FONT 8, "MS Sans Serif", 0, 0, 0x1 @@ -102,21 +102,6 @@ BEGIN LTEXT "Real Time Clock file",IDC_STATIC,12,167,313,15,SS_CENTERIMAGE EDITTEXT IDC_RTCFILE,12,183,361,12,ES_AUTOHSCROLL PUSHBUTTON "...",IDC_RTCCHOOSER,376,181,10,15 - GROUPBOX "Expansion ROM Settings",IDC_STATIC,1,206,394,66 - LTEXT "SCSI/IDE/Boot ROM file:",IDC_STATIC,12,219,170,15,SS_CENTERIMAGE - COMBOBOX IDC_SCSIROMSELECT,12,235,157,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_SCSIROMSELECTNUM,175,235,22,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - CONTROL "Autoboot disabled",IDC_SCSIROMFILEAUTOBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,216,99,12 - RTEXT "Controller ID:",IDC_STATIC,294,216,57,15,SS_CENTERIMAGE - COMBOBOX IDC_SCSIROMID,356,217,29,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_SCSIROMFILE,202,235,171,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "...",IDC_SCSIROMCHOOSER,376,235,10,15 - COMBOBOX IDC_SCSIROMSUBSELECT,202,253,171,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - LTEXT "Accelerator board ROM file:",IDC_STATIC,12,273,170,15,SS_CENTERIMAGE - COMBOBOX IDC_CPUBOARDROMFILE,12,289,171,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "...",IDC_CPUBOARDROMCHOOSER,187,288,10,15 - CONTROL "-",IDC_EXPANSION_SETTING1,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,11,256,77,10 - CONTROL "-",IDC_EXPANSION_SETTING2,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,116,256,77,10 END IDD_DISPLAY DIALOGEX 0, 0, 396, 298 @@ -179,7 +164,7 @@ BEGIN CONTROL "Double, fields+",IDC_LM_IDOUBLED3,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,299,277,90,10 END -IDD_MEMORY DIALOGEX 0, 0, 396, 304 +IDD_MEMORY DIALOGEX 0, 0, 396, 246 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD EXSTYLE WS_EX_CONTEXTHELP FONT 8, "MS Sans Serif", 0, 0, 0x1 @@ -201,7 +186,7 @@ BEGIN CONTROL "",IDC_Z3CHIPMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,248,71,60,20 EDITTEXT IDC_Z3CHIPRAM,311,76,40,12,ES_CENTER | ES_READONLY EDITTEXT IDC_MAX32RAM,14,99,366,12,ES_CENTER | ES_READONLY - GROUPBOX "Advanced Memory Settings",IDC_STATIC,0,133,393,164 + GROUPBOX "Advanced Memory Settings",IDC_STATIC,1,134,393,107 RTEXT "Motherboard Fast:",IDC_STATIC,116,149,129,10,SS_CENTERIMAGE CONTROL "",IDC_MBMEM1,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,251,145,68,20 EDITTEXT IDC_MBRAM1,326,148,40,12,ES_CENTER | ES_READONLY @@ -211,15 +196,8 @@ BEGIN RTEXT "Second Z2 Fast RAM board:",IDC_STATIC,129,194,116,15,SS_CENTERIMAGE CONTROL "",IDC_FASTMEM2,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,251,193,68,20 EDITTEXT IDC_FASTRAM2,326,196,40,12,ES_CENTER | ES_READONLY - RTEXT "Z3 mapping mode:",IDC_STATIC,149,220,93,15,SS_CENTERIMAGE + RTEXT "Z3 mapping mode:",IDC_STATIC,149,219,93,15,SS_CENTERIMAGE COMBOBOX IDC_Z3MAPPING,249,220,117,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - RTEXT "Accelerator board memory:",IDC_STATIC,138,250,104,15,SS_CENTERIMAGE - CONTROL "",IDC_CPUBOARDMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,251,246,68,20 - EDITTEXT IDC_CPUBOARDRAM,326,249,40,12,ES_CENTER | ES_READONLY - COMBOBOX IDC_CPUBOARD_TYPE,9,255,117,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_CPUBOARD_SUBTYPE,9,274,117,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "-",IDC_CPUBOARD_SETTING1,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,155,277,100,10 - CONTROL "-",IDC_CPUBOARD_SETTING2,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,261,277,100,10 CONTROL "Autoconfig Z2 Fast RAM",IDC_FASTMEMAUTOCONFIG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,194,120,10 END @@ -712,7 +690,8 @@ BEGIN CONTROL "Full [] 100% collision hardware emulation. Only very few games need this option. Slowest.",IDC_COLLISION3, "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,182,172,181,10 LTEXT "Genlock emulation mode",IDC_STATIC,237,59,117,15,SS_CENTERIMAGE - COMBOBOX IDC_GENLOCKMODE,237,77,147,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_GENLOCKMODE,237,77,103,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_GENLOCKMIX,346,77,38,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP END IDD_CHIPSET2 DIALOGEX 0, 0, 396, 305 @@ -1110,7 +1089,7 @@ BEGIN CTEXT "Enter address",IDC_DBG_ADDRINPUTTXT,20,1,100,10,SS_CENTERIMAGE | WS_TABSTOP END -IDD_EXPANSION DIALOGEX 0, 0, 396, 302 +IDD_EXPANSION DIALOGEX 0, 0, 396, 194 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD FONT 8, "MS Sans Serif", 0, 0, 0x1 BEGIN @@ -1141,24 +1120,6 @@ BEGIN COMBOBOX IDC_RTG_BUFFERCNT,153,162,84,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP CTEXT "Aspect ratio:",IDC_STATIC,282,149,83,10,SS_CENTERIMAGE COMBOBOX IDC_RTG_SCALE_ASPECTRATIO,282,162,84,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Miscellaneous Expansions",IDC_STATIC,1,197,172,100 - CONTROL "Catweasel Z2 emulation [] Catweasel MK2 Zorro II card emulation. Physical Windows compatible Catweasel card and drivers required.",IDC_CATWEASEL, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,216,147,11 - CONTROL "uaescsi.device",IDC_SCSIDEVICE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,229,147,11 - CONTROL "CD32 Full Motion Video cartridge",IDC_CS_CD32FMV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,242,151,11 - CONTROL "Toccata Z2 sound card emulation",IDC_CS_TOCCATA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,255,151,11 - CONTROL "Toccata Paula/CD audio mix",IDC_CS_TOCCATAMIXER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,267,151,11 - GROUPBOX "Network",IDC_STATIC,181,197,213,101 - CONTROL "bsdsocket.library [] bsdsocket network library emulation.",IDC_SOCKETS, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,215,187,11 - CONTROL "uaenet.device [] Sana 2 compatible network device emulation.",IDC_SANA2, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,228,187,11 - CONTROL "A2065 Z2 [] A2065 Ethernet Zorro II card emulation.",IDC_A2065, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,241,187,11 - COMBOBOX IDC_NETDEVICE,202,269,178,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "Include host SCSI devices",IDC_CS_SCSIMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,284,147,11 - CONTROL "Realtek 8029 PCI [] Realtek 8029 PCI NIC emulation",IDC_NE2000, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,255,187,11 END IDD_INPUTMAP DIALOGEX 0, 0, 421, 341 @@ -1243,6 +1204,56 @@ BEGIN EDITTEXT IDC_DISKINFOBOX,5,4,481,292,ES_MULTILINE | ES_READONLY | WS_VSCROLL END +IDD_EXPANSION2 DIALOGEX 0, 0, 396, 302 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + RTEXT "Accelerator board memory:",IDC_STATIC,155,144,104,15,SS_CENTERIMAGE + CONTROL "",IDC_CPUBOARDMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,269,141,68,20 + EDITTEXT IDC_CPUBOARDRAM,343,146,40,12,ES_CENTER | ES_READONLY + COMBOBOX IDC_CPUBOARD_TYPE,13,117,117,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_CPUBOARD_SUBTYPE,13,136,117,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "-",IDC_CPUBOARD_SETTING1,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,14,172,97,10 + CONTROL "-",IDC_CPUBOARD_SETTING2,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,121,172,100,10 + GROUPBOX "Expansion Board Settings",IDC_STATIC,1,6,394,88 + COMBOBOX IDC_SCSIROMSELECTNUM,175,42,22,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_SCSIROMSELECT,12,42,157,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + CONTROL "Autoboot disabled",IDC_SCSIROMFILEAUTOBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,62,99,12 + RTEXT "SCSI controller ID:",IDC_STATIC,241,23,110,15,SS_CENTERIMAGE + COMBOBOX IDC_SCSIROMID,356,24,29,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_SCSIROMFILE,202,42,171,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "...",IDC_SCSIROMCHOOSER,376,42,10,15 + COMBOBOX IDC_SCSIROMSUBSELECT,12,60,157,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + LTEXT "Accelerator board ROM file:",IDC_STATIC,203,104,170,15,SS_CENTERIMAGE + COMBOBOX IDC_CPUBOARDROMFILE,200,119,171,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "...",IDC_CPUBOARDROMCHOOSER,374,119,10,15 + CONTROL "-",IDC_EXPANSION_SETTING1,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,14,79,92,10 + CONTROL "-",IDC_EXPANSION_SETTING3,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,233,79,77,10 + GROUPBOX "Accelerator Board Settings",IDC_STATIC,1,96,394,97 + GROUPBOX "Miscellaneous Expansions",IDC_STATIC,1,199,172,100 + CONTROL "Catweasel Z2 emulation [] Catweasel MK2 Zorro II card emulation. Physical Windows compatible Catweasel card and drivers required.",IDC_CATWEASEL, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,218,147,11 + CONTROL "uaescsi.device",IDC_SCSIDEVICE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,231,147,11 + CONTROL "CD32 Full Motion Video cartridge",IDC_CS_CD32FMV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,244,151,11 + CONTROL "Toccata Z2 sound card emulation",IDC_CS_TOCCATA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,257,151,11 + CONTROL "Toccata Paula/CD audio mix",IDC_CS_TOCCATAMIXER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,269,151,11 + GROUPBOX "Network",IDC_STATIC,181,199,213,101 + CONTROL "bsdsocket.library [] bsdsocket network library emulation.",IDC_SOCKETS, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,217,187,11 + CONTROL "uaenet.device [] Sana 2 compatible network device emulation.",IDC_SANA2, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,230,187,11 + CONTROL "A2065 Z2 [] A2065 Ethernet Zorro II card emulation.",IDC_A2065, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,243,187,11 + COMBOBOX IDC_NETDEVICE,202,271,178,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "Include host SCSI devices",IDC_CS_SCSIMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,286,147,11 + CONTROL "Realtek 8029 PCI [] Realtek 8029 PCI NIC emulation",IDC_NE2000, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,257,187,11 + CONTROL "-",IDC_CPUBOARD_SETTING3,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,233,172,100,10 + CONTROL "-",IDC_EXPANSION_SETTING2,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,121,79,101,10 + CONTROL "Enabled",IDC_SCSIROMSELECTED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,43,99,12 + COMBOBOX IDC_SCSIROMSELECTCAT,12,23,157,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP +END + ///////////////////////////////////////////////////////////////////////////// // @@ -1250,8 +1261,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,1,1,0 - PRODUCTVERSION 3,1,1,0 + FILEVERSION 3,2,0,0 + PRODUCTVERSION 3,2,0,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -1267,12 +1278,12 @@ BEGIN BLOCK "040904b0" BEGIN VALUE "FileDescription", "WinUAE" - VALUE "FileVersion", "3.1.1.0" + VALUE "FileVersion", "3.2.0.0" VALUE "InternalName", "WinUAE" VALUE "LegalCopyright", "© 1996-2015 under the GNU Public License (GPL)" VALUE "OriginalFilename", "WinUAE.exe" VALUE "ProductName", "WinUAE" - VALUE "ProductVersion", "3.1.1.0" + VALUE "ProductVersion", "3.2.0.0" END END BLOCK "VarFileInfo" @@ -1406,7 +1417,6 @@ BEGIN IDD_MEMORY, DIALOG BEGIN - BOTTOMMARGIN, 301 END IDD_CPU, DIALOG @@ -1470,7 +1480,6 @@ BEGIN IDD_CHIPSET, DIALOG BEGIN - BOTTOMMARGIN, 169 END IDD_CHIPSET2, DIALOG @@ -1535,7 +1544,6 @@ BEGIN IDD_EXPANSION, DIALOG BEGIN - BOTTOMMARGIN, 289 END IDD_INPUTMAP, DIALOG @@ -1562,6 +1570,10 @@ BEGIN IDD_DISKINFO, DIALOG BEGIN END + + IDD_EXPANSION2, DIALOG + BEGIN + END END #endif // APSTUDIO_INVOKED @@ -1598,7 +1610,8 @@ BEGIN IDS_FRONTEND "Frontend" IDS_CHIPSET2 "Adv. Chipset" IDS_GAMEPORTS "Game ports" - IDS_EXPANSION "Expansions" + IDS_EXPANSION "RTG board" + IDS_EXPANSION2 "Expansions" END STRINGTABLE diff --git a/od-win32/win32.h b/od-win32/win32.h index a40ff575..00e420be 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("0") +#define WINUAEBETA _T("1") #else #define WINUAEBETA _T("") #endif -#define WINUAEDATE MAKEBD(2015, 6, 22) +#define WINUAEDATE MAKEBD(2015, 6, 26) //#define WINUAEEXTRA _T("AmiKit Preview") //#define WINUAEEXTRA _T("Amiga Forever Edition") diff --git a/od-win32/win32gfx.cpp b/od-win32/win32gfx.cpp index fbdb43d6..7913be29 100644 --- a/od-win32/win32gfx.cpp +++ b/od-win32/win32gfx.cpp @@ -1895,6 +1895,7 @@ int check_prefs_changed_gfx (void) c |= currprefs.monitoremu != changed_prefs.monitoremu ? (2 | 8) : 0; c |= currprefs.genlock_image != changed_prefs.genlock_image ? (2 | 8) : 0; c |= currprefs.genlock != changed_prefs.genlock ? (2 | 8) : 0; + c |= currprefs.genlock_mix != changed_prefs.genlock_mix ? (1 | 256) : 0; c |= currprefs.gfx_lores_mode != changed_prefs.gfx_lores_mode ? (2 | 8) : 0; c |= currprefs.gfx_scandoubler != changed_prefs.gfx_scandoubler ? (2 | 8) : 0; @@ -1977,6 +1978,7 @@ int check_prefs_changed_gfx (void) currprefs.monitoremu = changed_prefs.monitoremu; currprefs.genlock_image = changed_prefs.genlock_image; currprefs.genlock = changed_prefs.genlock; + currprefs.genlock_mix = changed_prefs.genlock_mix; currprefs.gfx_lores_mode = changed_prefs.gfx_lores_mode; currprefs.gfx_scandoubler = changed_prefs.gfx_scandoubler; diff --git a/od-win32/win32gui.cpp b/od-win32/win32gui.cpp index fab55ac2..28030133 100644 --- a/od-win32/win32gui.cpp +++ b/od-win32/win32gui.cpp @@ -181,6 +181,7 @@ static void addaspectratios (HWND hDlg, int id) static int scsiromselected = 0; static int scsiromselectednum = 0; +static int scsiromselectedcatnum = 0; #define Error(x) MessageBox (NULL, (x), _T("WinUAE Error"), MB_OK) @@ -218,7 +219,7 @@ static int C_PAGES; static int LOADSAVE_ID = -1, MEMORY_ID = -1, KICKSTART_ID = -1, CPU_ID = -1, DISPLAY_ID = -1, HW3D_ID = -1, CHIPSET_ID = -1, CHIPSET2_ID = -1, SOUND_ID = -1, FLOPPY_ID = -1, DISK_ID = -1, HARDDISK_ID = -1, IOPORTS_ID = -1, GAMEPORTS_ID = -1, INPUT_ID = -1, MISC1_ID = -1, MISC2_ID = -1, - AVIOUTPUT_ID = -1, PATHS_ID = -1, QUICKSTART_ID = -1, ABOUT_ID = -1, EXPANSION_ID = -1, FRONTEND_ID = -1; + AVIOUTPUT_ID = -1, PATHS_ID = -1, QUICKSTART_ID = -1, ABOUT_ID = -1, EXPANSION_ID = -1, EXPANSION2_ID = -1, FRONTEND_ID = -1; static const int INPUTMAP_ID = MAX_C_PAGES - 1; static HWND pages[MAX_C_PAGES]; #define MAX_IMAGETOOLTIPS 10 @@ -1711,6 +1712,7 @@ static void show_rom_list (void) 93, -1, -1, // Warp Engine 105, -1, -1, // TekMagic 112, -1, -1, // DKB 12x0 + 143, -1, -1, // DKB WildFire 113, -1, -1, // Fusion Forty 95, 101, -1, -1, // CS MK I 96, -1, -1, // CS MK II @@ -1757,7 +1759,7 @@ static void show_rom_list (void) _T("Blizzard 1230-IV\0Blizzard 1260\0") _T("Blizzard 1230-IV/SCSI\0Blizzard 1260/SCSI\0") _T("Blizzard 2060\0Warp Engine\0TekMagic 2040/2060\0") - _T("DKB 1230/1240\0Fusion Forty\0") + _T("DKB 1230/1240\0DKB WildFire\0Fusion Forty\0") _T("CyberStorm MK I\0CyberStorm MK II\0CyberStorm MK III\0") _T("Blizzard PPC\0CyberStorm PPC\0") @@ -6334,6 +6336,7 @@ static void enable_for_chipsetdlg (HWND hDlg) ew (hDlg, IDC_BLITWAIT, workprefs.immediate_blits ? FALSE : TRUE); ew (hDlg, IDC_CS_EXT, workprefs.cs_compatible ? TRUE : FALSE); ew(hDlg, IDC_GENLOCKMODE, workprefs.genlock ? TRUE : FALSE); + ew(hDlg, IDC_GENLOCKMIX, workprefs.genlock ? TRUE : FALSE); } static const int fakerefreshrates[] = { 50, 60, 100, 120, 0 }; @@ -7268,6 +7271,7 @@ static void values_to_chipsetdlg (HWND hDlg) SendDlgItemMessage (hDlg, IDC_CS_EXT, CB_SETCURSEL, workprefs.cs_compatible, 0); SendDlgItemMessage(hDlg, IDC_MONITOREMU, CB_SETCURSEL, workprefs.monitoremu, 0); SendDlgItemMessage(hDlg, IDC_GENLOCKMODE, CB_SETCURSEL, workprefs.genlock_image, 0); + SendDlgItemMessage(hDlg, IDC_GENLOCKMIX, CB_SETCURSEL, workprefs.genlock_mix / 25, 0); } static void values_from_chipsetdlg (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) @@ -7316,6 +7320,12 @@ static void values_from_chipsetdlg (HWND hDlg, UINT msg, WPARAM wParam, LPARAM l nn = SendDlgItemMessage(hDlg, IDC_GENLOCKMODE, CB_GETCURSEL, 0, 0); if (nn != CB_ERR) workprefs.genlock_image = nn; + nn = SendDlgItemMessage(hDlg, IDC_GENLOCKMIX, CB_GETCURSEL, 0, 0); + if (nn != CB_ERR) { + workprefs.genlock_mix = nn * 25; + if (workprefs.genlock_mix >= 250) + workprefs.genlock_mix = 255; + } } static INT_PTR CALLBACK ChipsetDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) @@ -7352,6 +7362,12 @@ static INT_PTR CALLBACK ChipsetDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPAR SendDlgItemMessage(hDlg, IDC_GENLOCKMODE, CB_ADDSTRING, 0, (LPARAM) _T("Noise")); SendDlgItemMessage(hDlg, IDC_GENLOCKMODE, CB_ADDSTRING, 0, (LPARAM) _T("Test card")); + SendDlgItemMessage(hDlg, IDC_GENLOCKMIX, CB_RESETCONTENT, 0, 0); + for (int i = 0; i <= 10; i++) { + _stprintf(buffer, _T("%d%%"), (10 - i) * 10); + SendDlgItemMessage(hDlg, IDC_GENLOCKMIX, CB_ADDSTRING, 0, (LPARAM)buffer); + } + SendDlgItemMessage (hDlg, IDC_MONITOREMU, CB_RESETCONTENT, 0, 0); SendDlgItemMessage (hDlg, IDC_MONITOREMU, CB_ADDSTRING, 0, (LPARAM)_T("-")); WIN32GUI_LoadUIString(IDS_AUTODETECT, buffer, sizeof buffer / sizeof (TCHAR)); @@ -7641,7 +7657,7 @@ static INT_PTR CALLBACK ChipsetDlgProc2 (HWND hDlg, UINT msg, WPARAM wParam, LPA return FALSE; } -static const int cpuboard_settings_id[] = { IDC_CPUBOARD_SETTING1, IDC_CPUBOARD_SETTING2, -1 }; +static const int cpuboard_settings_id[] = { IDC_CPUBOARD_SETTING1, IDC_CPUBOARD_SETTING2, IDC_CPUBOARD_SETTING3, -1 }; static void enable_for_memorydlg (HWND hDlg) { @@ -7675,13 +7691,6 @@ static void enable_for_memorydlg (HWND hDlg) ew (hDlg, IDC_MBMEM1, z3); ew (hDlg, IDC_MBRAM2, mbram2); ew (hDlg, IDC_MBMEM2, mbram2); - ew(hDlg, IDC_CPUBOARDMEM, workprefs.cpuboard_type > 0); - ew(hDlg, IDC_CPUBOARDRAM, workprefs.cpuboard_type > 0); - ew(hDlg, IDC_CPUBOARD_SUBTYPE, workprefs.cpuboard_type); - const struct expansionboardsettings *cbs = cpuboards[workprefs.cpuboard_type].subtypes[workprefs.cpuboard_subtype].settings; - for (int i = 0; cpuboard_settings_id[i] >= 0; i++) { - hide(hDlg, cpuboard_settings_id[i], !(workprefs.address_space_24 == false && cbs && cbs[i].name)); - } } extern uae_u32 natmem_size; @@ -7710,6 +7719,21 @@ static void setmax32bitram (HWND hDlg) static void setcpuboardmemsize(HWND hDlg) { + if (workprefs.cpuboardmem1_size > cpuboard_maxmemory(&workprefs)) + workprefs.cpuboardmem1_size = cpuboard_maxmemory(&workprefs); + + if (cpuboard_memorytype(&workprefs) == BOARD_MEMORY_Z2) { + workprefs.fastmem2_size = workprefs.cpuboardmem1_size; + } + if (cpuboard_memorytype(&workprefs) == BOARD_MEMORY_25BITMEM) { + workprefs.mem25bit_size = workprefs.cpuboardmem1_size; + } + if (workprefs.cpuboard_type == 0) + workprefs.mem25bit_size = 0; + + if (cpuboard_memorytype(&workprefs) == BOARD_MEMORY_HIGHMEM) + workprefs.mbresmem_high_size = workprefs.cpuboardmem1_size; + int maxmem = cpuboard_maxmemory(&workprefs); if (workprefs.cpuboardmem1_size > maxmem) { workprefs.cpuboardmem1_size = maxmem; @@ -7776,17 +7800,6 @@ static void values_to_memorydlg (HWND hDlg) SendDlgItemMessage (hDlg, IDC_CHIPMEM, TBM_SETPOS, TRUE, mem_size); SetDlgItemText (hDlg, IDC_CHIPRAM, memsize_names[msi_chip[mem_size]]); - if (workprefs.cpuboardmem1_size > cpuboard_maxmemory(&workprefs)) - workprefs.cpuboardmem1_size = cpuboard_maxmemory(&workprefs); - - if (cpuboard_memorytype(&workprefs) == BOARD_MEMORY_Z2) { - workprefs.fastmem2_size = workprefs.cpuboardmem1_size; - } - if (cpuboard_memorytype(&workprefs) == BOARD_MEMORY_25BITMEM) { - workprefs.mem25bit_size = workprefs.cpuboardmem1_size; - } - if (workprefs.cpuboard_type == 0) - workprefs.mem25bit_size = 0; mem_size = 0; switch (workprefs.fastmem_size) { @@ -7894,119 +7907,10 @@ static void values_to_memorydlg (HWND hDlg) mem_size = 8; else mem_size = 9; - int min_mem = MIN_P96_MEM; - int max_mem = MAX_P96_MEM_Z3; - if (!gfxboard_is_z3 (workprefs.rtgmem_type)) { - int v = workprefs.rtgmem_size; - max_mem = 0; - workprefs.rtgmem_size = 1024 * 1024; - while (getz2size (&workprefs) > 0) { - workprefs.rtgmem_size *= 2; - max_mem++; - } - if (workprefs.rtgmem_type >= GFXBOARD_HARDWARE && v > gfxboard_get_vram_max (workprefs.rtgmem_type)) - v = gfxboard_get_vram_max (workprefs.rtgmem_type); - if (workprefs.rtgmem_type >= GFXBOARD_HARDWARE && v < gfxboard_get_vram_min (workprefs.rtgmem_type)) - v = gfxboard_get_vram_min (workprefs.rtgmem_type); - workprefs.rtgmem_size = v; - if (workprefs.rtgmem_size > 8 * 1024 * 1024) - mem_size = 8 * 1024 * 1024; - while (getz2size (&workprefs) < 0 && workprefs.rtgmem_size > 0) - workprefs.rtgmem_size -= 1024 * 1024; - } else { - int v = workprefs.rtgmem_size; - if (workprefs.rtgmem_type >= GFXBOARD_HARDWARE && v > gfxboard_get_vram_max (workprefs.rtgmem_type)) - v = gfxboard_get_vram_max (workprefs.rtgmem_type); - if (workprefs.rtgmem_type >= GFXBOARD_HARDWARE && v < gfxboard_get_vram_min (workprefs.rtgmem_type)) - v = gfxboard_get_vram_min (workprefs.rtgmem_type); - workprefs.rtgmem_size = v; - } - if (workprefs.rtgmem_type >= GFXBOARD_HARDWARE) { - switch (gfxboard_get_vram_min (workprefs.rtgmem_type)) { - case 0x00100000: min_mem = 1; break; - case 0x00200000: min_mem = 2; break; - case 0x00400000: min_mem = 3; break; - } - switch (gfxboard_get_vram_max (workprefs.rtgmem_type)) { - case 0x00100000: max_mem = 1; break; - case 0x00200000: max_mem = 2; break; - case 0x00400000: max_mem = 3; break; - } - } - SendDlgItemMessage (hDlg, IDC_P96MEM, TBM_SETRANGE, TRUE, MAKELONG (min_mem, max_mem)); + SendDlgItemMessage (hDlg, IDC_Z3CHIPMEM, TBM_SETPOS, TRUE, mem_size); SetDlgItemText (hDlg, IDC_Z3CHIPRAM, memsize_names[msi_z3chip[mem_size]]); - mem_size = 0; - switch (workprefs.rtgmem_size) { - case 0x00000000: mem_size = 0; break; - case 0x00100000: mem_size = 1; break; - case 0x00200000: mem_size = 2; break; - case 0x00400000: mem_size = 3; break; - case 0x00800000: mem_size = 4; break; - case 0x01000000: mem_size = 5; break; - case 0x02000000: mem_size = 6; break; - case 0x04000000: mem_size = 7; break; - case 0x08000000: mem_size = 8; break; - case 0x10000000: mem_size = 9; break; - case 0x20000000: mem_size = 10; break; - case 0x40000000: mem_size = 11; break; - } - - SendDlgItemMessage (hDlg, IDC_P96MEM, TBM_SETPOS, TRUE, mem_size); - SetDlgItemText (hDlg, IDC_P96RAM, memsize_names[msi_gfx[mem_size]]); - SendDlgItemMessage (hDlg, IDC_RTG_Z2Z3, CB_SETCURSEL, workprefs.rtgmem_size == 0 ? 0 : workprefs.rtgmem_type + 1, 0); - SendDlgItemMessage (hDlg, IDC_RTG_8BIT, CB_SETCURSEL, (workprefs.picasso96_modeflags & RGBFF_CLUT) ? 1 : 0, 0); - SendDlgItemMessage (hDlg, IDC_RTG_16BIT, CB_SETCURSEL, - (manybits (workprefs.picasso96_modeflags, RGBFF_R5G6B5PC | RGBFF_R5G6B5PC | RGBFF_R5G6B5 | RGBFF_R5G5B5 | RGBFF_B5G6R5PC | RGBFF_B5G5R5PC)) ? 1 : - (workprefs.picasso96_modeflags & RGBFF_R5G6B5PC) ? 2 : - (workprefs.picasso96_modeflags & RGBFF_R5G5B5PC) ? 3 : - (workprefs.picasso96_modeflags & RGBFF_R5G6B5) ? 4 : - (workprefs.picasso96_modeflags & RGBFF_R5G5B5) ? 5 : - (workprefs.picasso96_modeflags & RGBFF_B5G6R5PC) ? 6 : - (workprefs.picasso96_modeflags & RGBFF_B5G5R5PC) ? 7 : 0, 0); - SendDlgItemMessage (hDlg, IDC_RTG_24BIT, CB_SETCURSEL, - (manybits (workprefs.picasso96_modeflags, RGBFF_R8G8B8 | RGBFF_B8G8R8)) ? 1 : - (workprefs.picasso96_modeflags & RGBFF_R8G8B8) ? 2 : - (workprefs.picasso96_modeflags & RGBFF_B8G8R8) ? 3 : 0, 0); - SendDlgItemMessage (hDlg, IDC_RTG_32BIT, CB_SETCURSEL, - (manybits (workprefs.picasso96_modeflags, RGBFF_A8R8G8B8 | RGBFF_A8B8G8R8 | RGBFF_R8G8B8A8 | RGBFF_B8G8R8A8)) ? 1 : - (workprefs.picasso96_modeflags & RGBFF_A8R8G8B8) ? 2 : - (workprefs.picasso96_modeflags & RGBFF_A8B8G8R8) ? 3 : - (workprefs.picasso96_modeflags & RGBFF_R8G8B8A8) ? 4 : - (workprefs.picasso96_modeflags & RGBFF_B8G8R8A8) ? 5 : 0, 0); - if (workprefs.win32_rtgvblankrate <= 0 || - workprefs.win32_rtgvblankrate == 50 || - workprefs.win32_rtgvblankrate == 60 || - workprefs.win32_rtgvblankrate == 70 || - workprefs.win32_rtgvblankrate == 75) { - SendDlgItemMessage (hDlg, IDC_RTG_VBLANKRATE, CB_SETCURSEL, - (workprefs.win32_rtgvblankrate == 0) ? 0 : - (workprefs.win32_rtgvblankrate == -1) ? 1 : - (workprefs.win32_rtgvblankrate == -2) ? 0 : - (workprefs.win32_rtgvblankrate == 50) ? 2 : - (workprefs.win32_rtgvblankrate == 60) ? 3 : - (workprefs.win32_rtgvblankrate == 70) ? 4 : - (workprefs.win32_rtgvblankrate == 75) ? 5 : 0, 0); - } else { - TCHAR tmp[10]; - _stprintf (tmp, _T("%d"), workprefs.win32_rtgvblankrate); - SendDlgItemMessage (hDlg, IDC_RTG_VBLANKRATE, WM_SETTEXT, 0, (LPARAM)tmp); - } - - - CheckDlgButton(hDlg, IDC_RTG_SCALE, workprefs.gf[1].gfx_filter_autoscale == RTG_MODE_SCALE); - CheckDlgButton(hDlg, IDC_RTG_CENTER, workprefs.gf[1].gfx_filter_autoscale == RTG_MODE_CENTER); - CheckDlgButton (hDlg, IDC_RTG_SCALE_ALLOW, workprefs.win32_rtgallowscaling); - CheckDlgButton (hDlg, IDC_RTG_MATCH_DEPTH, workprefs.win32_rtgmatchdepth); - CheckDlgButton (hDlg, IDC_RTG_VBINTERRUPT, workprefs.rtg_hardwareinterrupt); - CheckDlgButton (hDlg, IDC_RTG_HWSPRITE, workprefs.rtg_hardwaresprite); - - SendDlgItemMessage (hDlg, IDC_RTG_SCALE_ASPECTRATIO, CB_SETCURSEL, - (workprefs.win32_rtgscaleaspectratio == 0) ? 0 : - (workprefs.win32_rtgscaleaspectratio < 0) ? 1 : - getaspectratioindex (workprefs.win32_rtgscaleaspectratio) + 2, 0); - mem_size = 0; switch (workprefs.mbresmem_low_size) { case 0x00000000: mem_size = 0; break; @@ -8021,9 +7925,6 @@ static void values_to_memorydlg (HWND hDlg) SendDlgItemMessage (hDlg, IDC_MBMEM1, TBM_SETPOS, TRUE, mem_size); SetDlgItemText (hDlg, IDC_MBRAM1, memsize_names[msi_gfx[mem_size]]); - if (cpuboard_memorytype(&workprefs) == BOARD_MEMORY_HIGHMEM) - workprefs.mbresmem_high_size = workprefs.cpuboardmem1_size; - mem_size = 0; switch (workprefs.mbresmem_high_size) { case 0x00000000: mem_size = 0; break; @@ -8039,7 +7940,6 @@ static void values_to_memorydlg (HWND hDlg) SendDlgItemMessage (hDlg, IDC_MBMEM2, TBM_SETPOS, TRUE, mem_size); SetDlgItemText (hDlg, IDC_MBRAM2, memsize_names[msi_gfx[mem_size]]); - setcpuboardmemsize(hDlg); setmax32bitram (hDlg); } @@ -8098,6 +7998,82 @@ static void updatez3 (uae_u32 *size1p, uae_u32 *size2p) *size2p = s2; } +static void addromfiles(UAEREG *fkey, HWND hDlg, DWORD d, const TCHAR *path, int type1, int type2) +{ + int idx; + TCHAR tmp[MAX_DPATH]; + TCHAR tmp2[MAX_DPATH]; + TCHAR seltmp[MAX_DPATH]; + struct romdata *rdx = NULL; + + SendDlgItemMessage(hDlg, d, CB_RESETCONTENT, 0, 0); + SendDlgItemMessage(hDlg, d, CB_ADDSTRING, 0, (LPARAM) _T("")); + if (path) + rdx = scan_single_rom(path); + idx = 0; + seltmp[0] = 0; + for (; fkey;) { + int size = sizeof(tmp) / sizeof(TCHAR); + int size2 = sizeof(tmp2) / sizeof(TCHAR); + if (!regenumstr(fkey, idx, tmp, &size, tmp2, &size2)) + break; + if (_tcslen(tmp) == 7 || _tcslen(tmp) == 13) { + int group = 0; + int subitem = 0; + int idx2 = _tstol(tmp + 4); + if (_tcslen(tmp) == 13) { + group = _tstol(tmp + 8); + subitem = _tstol(tmp + 11); + } + if (idx2 >= 0) { + struct romdata *rd = getromdatabyidgroup(idx2, group, subitem); + for (int i = 0; i < 2; i++) { + int type = i ? type2 : type1; + if (type) { + if (rd && ((((rd->type & ROMTYPE_GROUP_MASK) & (type & ROMTYPE_GROUP_MASK)) && ((rd->type & ROMTYPE_SUB_MASK) == (type & ROMTYPE_SUB_MASK) || !(type & ROMTYPE_SUB_MASK))) || + (rd->type & type) == ROMTYPE_NONE || (rd->type & type) == ROMTYPE_NOT)) { + getromname(rd, tmp); + if (SendDlgItemMessage(hDlg, d, CB_FINDSTRING, (WPARAM) -1, (LPARAM) tmp) < 0) + SendDlgItemMessage(hDlg, d, CB_ADDSTRING, 0, (LPARAM) tmp); + if (rd == rdx) + _tcscpy(seltmp, tmp); + break; + } + } + } + } + } + idx++; + } + if (seltmp[0]) + SendDlgItemMessage(hDlg, d, CB_SELECTSTRING, (WPARAM) -1, (LPARAM) seltmp); + else + SetDlgItemText(hDlg, d, path); +} + +static void getromfile(HWND hDlg, DWORD d, TCHAR *path, int size) +{ + LRESULT val = SendDlgItemMessage(hDlg, d, CB_GETCURSEL, 0, 0L); + if (val == CB_ERR) { + SendDlgItemMessage(hDlg, d, WM_GETTEXT, (WPARAM) size, (LPARAM) path); + } + else { + TCHAR tmp1[MAX_DPATH]; + struct romdata *rd; + SendDlgItemMessage(hDlg, d, CB_GETLBTEXT, (WPARAM) val, (LPARAM) tmp1); + path[0] = 0; + rd = getromdatabyname(tmp1); + if (rd) { + struct romlist *rl = getromlistbyromdata(rd); + if (rd->configname) + _stprintf(path, _T(":%s"), rd->configname); + else if (rl) + _tcsncpy(path, rl->path, size); + } + } +} + + static struct netdriverdata *ndd[MAX_TOTAL_NET_DEVICES + 1]; static void expansion_net (HWND hDlg) @@ -8138,115 +8114,811 @@ static void expansion_net (HWND hDlg) SendDlgItemMessage (hDlg, IDC_NETDEVICE, CB_SETCURSEL, 0, 0); } -static void enable_for_expansiondlg (HWND hDlg) +static const int scsiromselectedmask[] = { EXPANSIONTYPE_SCSI, EXPANSIONTYPE_IDE, EXPANSIONTYPE_SASI, EXPANSIONTYPE_PCI_BRIDGE }; +static void init_expansion2(HWND hDlg) { - int z3 = true; - int cw, en; + static int first = -1; - en = !!full_property_sheet; - cw = catweasel_detect (); - ew (hDlg, IDC_CATWEASEL, cw && en); - ew (hDlg, IDC_SOCKETS, en); - ew (hDlg, IDC_SCSIDEVICE, en); - ew (hDlg, IDC_CATWEASEL, en); - ew (hDlg, IDC_NETDEVICE, en); - ew (hDlg, IDC_SANA2, en); - ew (hDlg, IDC_A2065, en); - ew (hDlg, IDC_NETDEVICE, en && (workprefs.a2065name[0] || workprefs.ne2000pciname[0])); + SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTCAT, CB_SETCURSEL, scsiromselectedcatnum, 0); - int rtg = workprefs.rtgmem_size && full_property_sheet && workprefs.rtgmem_type < GFXBOARD_HARDWARE; - int rtg2 = workprefs.rtgmem_size || workprefs.rtgmem_type >= GFXBOARD_HARDWARE; - int rtg3 = workprefs.rtgmem_size && workprefs.rtgmem_type < GFXBOARD_HARDWARE; - int rtg4 = workprefs.rtgmem_type < GFXBOARD_HARDWARE; + SendDlgItemMessage(hDlg, IDC_SCSIROMSELECT, CB_RESETCONTENT, 0, 0); + scsiromselect_table[0] = -1; + for (int i = 0; expansionroms[i].name; i++) { + TCHAR name[256]; + if (expansionroms[i].romtype & ROMTYPE_CPUBOARD) + continue; + if (!(expansionroms[i].deviceflags & scsiromselectedmask[scsiromselectedcatnum])) + continue; + if (scsiromselectedcatnum == 0 && (expansionroms[i].deviceflags & EXPANSIONTYPE_SASI)) + continue; + name[0] = 0; + int cnt = 0; + for (int j = 0; j < MAX_DUPLICATE_EXPANSION_BOARDS; j++) { + if (cfgfile_board_enabled(&workprefs, expansionroms[i].romtype, j)) { + cnt++; + } + } + if (cnt > 0) { + if (first < 0) + first = i; + } + if (cnt == 1) + _tcscat(name, _T("* ")); + else if (cnt > 1) + _stprintf(name + _tcslen(name), _T("[%d] "), cnt); + if (expansionroms[i].friendlymanufacturer) { + _tcscat(name, expansionroms[i].friendlymanufacturer); + _tcscat(name, _T(" ")); + } + _tcscat(name, expansionroms[i].friendlyname); + gui_add_string(scsiromselect_table, hDlg, IDC_SCSIROMSELECT, i, name); + } + SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTNUM, CB_RESETCONTENT, 0, 0); + for (int i = 0; i < MAX_DUPLICATE_EXPANSION_BOARDS; i++) { + TCHAR tmp[10]; + _stprintf(tmp, _T("%d"), i + 1); + SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTNUM, CB_ADDSTRING, 0, (LPARAM) tmp); + } - ew (hDlg, IDC_P96RAM, rtg2); - ew (hDlg, IDC_P96MEM, rtg2); - ew (hDlg, IDC_RTG_Z2Z3, z3); - ew (hDlg, IDC_RTG_8BIT, rtg); - ew (hDlg, IDC_RTG_16BIT, rtg); - ew (hDlg, IDC_RTG_24BIT, rtg); - ew (hDlg, IDC_RTG_32BIT, rtg); - ew (hDlg, IDC_RTG_MATCH_DEPTH, rtg3); - ew (hDlg, IDC_RTG_SCALE, rtg2); - ew (hDlg, IDC_RTG_CENTER, rtg2); - ew (hDlg, IDC_RTG_SCALE_ALLOW, rtg2); - ew (hDlg, IDC_RTG_SCALE_ASPECTRATIO, rtg2); - ew (hDlg, IDC_RTG_VBLANKRATE, rtg2); - ew (hDlg, IDC_RTG_BUFFERCNT, rtg2); - ew (hDlg, IDC_RTG_DISPLAYSELECT, rtg2); - ew (hDlg, IDC_RTG_VBINTERRUPT, rtg3); - if (!workprefs.gfx_api) { - workprefs.rtg_hardwaresprite = false; - CheckDlgButton (hDlg, IDC_RTG_HWSPRITE, FALSE); + if (scsiromselected <= 0) { + int found = -1; + for (int i = 0; expansionroms[i].name; i++) { + int romtype = expansionroms[i].romtype; + if (romtype & ROMTYPE_CPUBOARD) + continue; + if (!(expansionroms[i].deviceflags & scsiromselectedmask[scsiromselectedcatnum])) + continue; + if (scsiromselectedcatnum == 0 && (expansionroms[i].deviceflags & EXPANSIONTYPE_SASI)) + continue; + if (cfgfile_board_enabled(&workprefs, romtype, 0)) { + if (found == -1) + found = i; + else + found = -2; + } + } + if (scsiromselected < 0 && found < 0) + found = first; + if (found >= 0) { + scsiromselected = found; + } } - ew (hDlg, IDC_RTG_HWSPRITE, rtg3 && workprefs.gfx_api); - ShowWindow (GetDlgItem(hDlg, IDC_CS_SCSIMODE), SW_HIDE); - ew(hDlg, IDC_CS_CD32FMV, en); - ew(hDlg, IDC_CS_TOCCATA, en); - ew(hDlg, IDC_CS_TOCCATAMIXER, en && workprefs.sound_toccata); - ew (hDlg, IDC_CS_SCSIMODE, FALSE); -} -static void values_to_expansiondlg (HWND hDlg) -{ - int cw; + if (scsiromselected > 0) + gui_set_string_cursor(scsiromselect_table, hDlg, IDC_SCSIROMSELECT, scsiromselected); - CheckDlgButton (hDlg, IDC_SOCKETS, workprefs.socket_emu); - CheckDlgButton (hDlg, IDC_CATWEASEL, workprefs.catweasel); - CheckDlgButton (hDlg, IDC_SCSIDEVICE, workprefs.scsi == 1); - CheckDlgButton (hDlg, IDC_SANA2, workprefs.sana2); - CheckDlgButton(hDlg, IDC_A2065, workprefs.a2065name[0] ? 1 : 0); - CheckDlgButton(hDlg, IDC_NE2000, workprefs.ne2000pciname[0] ? 1 : 0); - CheckDlgButton(hDlg, IDC_CS_CD32FMV, workprefs.cs_cd32fmv); - CheckDlgButton(hDlg, IDC_CS_TOCCATA, workprefs.sound_toccata); - CheckDlgButton(hDlg, IDC_CS_TOCCATAMIXER, workprefs.sound_toccata_mixer); - CheckDlgButton(hDlg, IDC_CS_SCSIMODE, workprefs.scsi == 2); - SendDlgItemMessage (hDlg, IDC_RTG_BUFFERCNT, CB_SETCURSEL, workprefs.gfx_apmode[1].gfx_backbuffers == 0 ? 0 : workprefs.gfx_apmode[1].gfx_backbuffers - 1, 0); - cw = catweasel_detect (); - ew (hDlg, IDC_CATWEASEL, cw); - if (!cw && workprefs.catweasel < 100) - workprefs.catweasel = 0; + SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTNUM, CB_SETCURSEL, scsiromselectednum, 0); + + SendDlgItemMessage(hDlg, IDC_SCSIROMID, CB_RESETCONTENT, 0, 0); + for (int i = 0; i < 8; i++) { + TCHAR tmp[10]; + _stprintf(tmp, _T("%d"), i); + SendDlgItemMessage(hDlg, IDC_SCSIROMID, CB_ADDSTRING, 0, (LPARAM) tmp); + } } -static INT_PTR CALLBACK ExpansionDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - int v; - TCHAR tmp[100]; - static int recursive = 0; - static int enumerated; - switch (msg) - { - case WM_INITDIALOG: - pages[EXPANSION_ID] = hDlg; - currentpage = EXPANSION_ID; +static const int expansion_settings_id[] = { IDC_EXPANSION_SETTING1, IDC_EXPANSION_SETTING2, -IDC_EXPANSION_SETTING3, 1 }; - if (!enumerated) { - ethernet_enumerate (ndd, NULL); - for (int i = 0; ndd[i]; i++) { - struct netdriverdata *n = ndd[i]; - if (!n->active) - continue; - if (n->type == UAENET_SLIRP) { - WIN32GUI_LoadUIString (IDS_SLIRP, tmp, sizeof tmp / sizeof (TCHAR)); - n->desc = my_strdup(tmp); - } else if (n->type == UAENET_SLIRP_INBOUND) { - WIN32GUI_LoadUIString (IDS_SLIRP_INBOUND, tmp, sizeof tmp / sizeof (TCHAR)); - n->desc = my_strdup(tmp); - } - } - enumerated = 1; - } - expansion_net (hDlg); - init_displays_combo (hDlg, true); +static void values_to_expansion2dlg_sub(HWND hDlg) +{ + SendDlgItemMessage(hDlg, IDC_CPUBOARDROMSUBSELECT, CB_RESETCONTENT, 0, 0); + ew(hDlg, IDC_CPUBOARDROMSUBSELECT, false); - SendDlgItemMessage (hDlg, IDC_RTG_Z2Z3, CB_RESETCONTENT, 0, 0); - SendDlgItemMessage (hDlg, IDC_RTG_Z2Z3, CB_ADDSTRING, 0, (LPARAM)_T("-")); - SendDlgItemMessage (hDlg, IDC_RTG_Z2Z3, CB_ADDSTRING, 0, (LPARAM)_T("UAE Zorro II")); - SendDlgItemMessage (hDlg, IDC_RTG_Z2Z3, CB_ADDSTRING, 0, (LPARAM)_T("UAE Zorro III (*)")); - SendDlgItemMessage (hDlg, IDC_RTG_Z2Z3, CB_ADDSTRING, 0, (LPARAM)_T("Picasso II Zorro II")); - SendDlgItemMessage (hDlg, IDC_RTG_Z2Z3, CB_ADDSTRING, 0, (LPARAM)_T("Picasso II+ Zorro II")); - SendDlgItemMessage (hDlg, IDC_RTG_Z2Z3, CB_ADDSTRING, 0, (LPARAM)_T("Piccolo Zorro II")); + SendDlgItemMessage(hDlg, IDC_SCSIROMSUBSELECT, CB_RESETCONTENT, 0, 0); + const struct expansionromtype *er = &expansionroms[scsiromselected]; + const struct expansionsubromtype *srt = er->subtypes; + ew(hDlg, IDC_SCSIROMSUBSELECT, srt != NULL); + while (srt && srt->name) { + SendDlgItemMessage(hDlg, IDC_SCSIROMSUBSELECT, CB_ADDSTRING, 0, (LPARAM) srt->name); + srt++; + } + int index; + struct boardromconfig *brc = get_device_rom(&workprefs, expansionroms[scsiromselected].romtype, scsiromselectednum, &index); + if (brc) { + SendDlgItemMessage(hDlg, IDC_SCSIROMSUBSELECT, CB_SETCURSEL, brc->roms[index].subtype, 0); + SendDlgItemMessage(hDlg, IDC_SCSIROMID, CB_SETCURSEL, brc->roms[index].device_id, 0); + } + else if (srt) { + SendDlgItemMessage(hDlg, IDC_SCSIROMSUBSELECT, CB_SETCURSEL, 0, 0); + SendDlgItemMessage(hDlg, IDC_SCSIROMID, CB_SETCURSEL, 0, 0); + } + if (er->zorro < 2 || er->singleonly) { + scsiromselectednum = 0; + SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTNUM, CB_SETCURSEL, 0, 0); + } + ew(hDlg, IDC_SCSIROMSELECTNUM, er->zorro >= 2 && !er->singleonly); +} + +static void values_from_expansion2dlg(HWND hDlg) +{ + int index; + struct boardromconfig *brc; + TCHAR tmp[MAX_DPATH]; + bool changed = false; + + int checked = ischecked(hDlg, IDC_SCSIROMSELECTED); + getromfile(hDlg, IDC_SCSIROMFILE, tmp, MAX_DPATH / sizeof(TCHAR)); + if (tmp[0] || checked) { + const struct expansionromtype *ert = &expansionroms[scsiromselected]; + brc = get_device_rom_new(&workprefs, expansionroms[scsiromselected].romtype, scsiromselectednum, &index); + if (checked) { + if (!brc->roms[index].romfile[0]) + changed = true; + _tcscpy(brc->roms[index].romfile, _T(":ENABLED")); + } else { + changed = _tcscmp(tmp, brc->roms[index].romfile) != 0; + getromfile(hDlg, IDC_SCSIROMFILE, brc->roms[index].romfile, MAX_DPATH / sizeof(TCHAR)); + } + brc->roms[index].autoboot_disabled = ischecked(hDlg, IDC_SCSIROMFILEAUTOBOOT); + + int v = SendDlgItemMessage(hDlg, IDC_SCSIROMID, CB_GETCURSEL, 0, 0L); + if (v != CB_ERR) + brc->roms[index].device_id = v; + + const struct expansionboardsettings *cbs = ert->settings; + if (cbs) { + for (int i = 0; cbs[i].name; i++) { + int id = expansion_settings_id[i]; + if (id < 0) + break; + brc->roms[index].device_settings &= ~(1 << i); + if (ischecked(hDlg, id)) + brc->roms[index].device_settings |= 1 << i; + } + } + + v = SendDlgItemMessage(hDlg, IDC_SCSIROMSUBSELECT, CB_GETCURSEL, 0, 0L); + if (v != CB_ERR) + brc->roms[index].subtype = v; + + } else { + brc = get_device_rom(&workprefs, expansionroms[scsiromselected].romtype, scsiromselectednum, &index); + if (brc && brc->roms[index].romfile[0]) + changed = true; + clear_device_rom(&workprefs, expansionroms[scsiromselected].romtype, scsiromselectednum); + } + if (changed) { + init_expansion2(hDlg); + values_to_expansion2dlg_sub(hDlg); + } + + + getromfile(hDlg, IDC_CPUBOARDROMFILE, tmp, sizeof(brc->roms[index].romfile) / sizeof(TCHAR)); + if (tmp[0]) { + brc = get_device_rom_new(&workprefs, ROMTYPE_CPUBOARD, 0, &index); + getromfile(hDlg, IDC_CPUBOARDROMFILE, brc->roms[index].romfile, sizeof(brc->roms[index].romfile) / sizeof(TCHAR)); + } + else { + clear_device_rom(&workprefs, ROMTYPE_CPUBOARD, 0); + } +} + +static void values_to_expansion2_expansion_roms(HWND hDlg, UAEREG *fkey) +{ + int index; + bool keyallocated = false; + struct boardromconfig *brc; + + if (!fkey) { + fkey = regcreatetree(NULL, _T("DetectedROMs")); + keyallocated = true; + } + if (scsiromselected) { + const struct expansionromtype *ert = &expansionroms[scsiromselected]; + int romtype = ert->romtype; + int romtype_extra = ert->romtype_extra; + + brc = get_device_rom(&workprefs, romtype, scsiromselectednum, &index); + if (brc && ert->subtypes) { + const struct expansionsubromtype *esrt = &ert->subtypes[brc->roms[index].subtype]; + if (esrt->romtype) { + romtype = esrt->romtype; + romtype_extra = 0; + } + } + ew(hDlg, IDC_SCSIROMFILE, true); + ew(hDlg, IDC_SCSIROMCHOOSER, true); + if (romtype & ROMTYPE_NOT) { + hide(hDlg, IDC_SCSIROMCHOOSER, 1); + hide(hDlg, IDC_SCSIROMFILE, 1); + hide(hDlg, IDC_SCSIROMSELECTED, 0); + setchecked(hDlg, IDC_SCSIROMSELECTED, brc && brc->roms[index].romfile[0] != 0); + } else { + hide(hDlg, IDC_SCSIROMCHOOSER, 0); + hide(hDlg, IDC_SCSIROMFILE, 0); + hide(hDlg, IDC_SCSIROMSELECTED, 1); + setchecked(hDlg, IDC_SCSIROMSELECTED, false); + addromfiles(fkey, hDlg, IDC_SCSIROMFILE, brc ? brc->roms[index].romfile : NULL, romtype, romtype_extra); + setchecked(hDlg, IDC_SCSIROMFILEAUTOBOOT, brc && brc->roms[index].autoboot_disabled); + } + } else { + hide(hDlg, IDC_SCSIROMCHOOSER, 0); + hide(hDlg, IDC_SCSIROMFILE, 0); + hide(hDlg, IDC_SCSIROMSELECTED, 1); + setchecked(hDlg, IDC_SCSIROMSELECTED, false); + setchecked(hDlg, IDC_SCSIROMFILEAUTOBOOT, false); + SendDlgItemMessage(hDlg, IDC_SCSIROMFILE, CB_RESETCONTENT, 0, 0); + ew(hDlg, IDC_SCSIROMFILE, false); + ew(hDlg, IDC_SCSIROMCHOOSER, false); + } + if (keyallocated) + regclosetree(fkey); +} + +static void values_to_expansion2_expansion_settings(HWND hDlg) +{ + int index; + struct boardromconfig *brc; + const struct expansionromtype *ert = &expansionroms[scsiromselected]; + brc = get_device_rom(&workprefs, expansionroms[scsiromselected].romtype, scsiromselectednum, &index); + if (brc) { + if (brc->roms[index].romfile[0]) + ew(hDlg, IDC_SCSIROMFILEAUTOBOOT, ert->autoboot_jumper); + } + else { + if (brc) + brc->roms[index].autoboot_disabled = false; + ew(hDlg, IDC_SCSIROMFILEAUTOBOOT, FALSE); + setchecked(hDlg, IDC_SCSIROMFILEAUTOBOOT, false); + } + ew(hDlg, IDC_SCSIROMID, ert->id_jumper); + + const struct expansionboardsettings *cbs = ert->settings; + for (int i = 0; expansion_settings_id[i] >= 0; i++) { + hide(hDlg, expansion_settings_id[i], !(cbs && cbs[i].name)); + } + int i = 0; + if (cbs) { + for (i = 0; cbs[i].name; i++) { + int id = expansion_settings_id[i]; + if (id < 0) + break; + SetWindowText(GetDlgItem(hDlg, id), cbs[i].name); + setchecked(hDlg, id, (brc && (brc->roms[index].device_settings & (1 << i)))); + } + } + while (expansion_settings_id[i] >= 0) { + int id = expansion_settings_id[i]; + SetWindowText(GetDlgItem(hDlg, id), _T("-")); + i++; + } +} + +static void enable_for_expansion2dlg (HWND hDlg) +{ + int z3 = true; + int cw, en; + + en = !!full_property_sheet; + cw = catweasel_detect (); + ew (hDlg, IDC_CATWEASEL, cw && en); + ew (hDlg, IDC_SOCKETS, en); + ew (hDlg, IDC_SCSIDEVICE, en); + ew (hDlg, IDC_CATWEASEL, en); + ew (hDlg, IDC_NETDEVICE, en); + ew (hDlg, IDC_SANA2, en); + ew (hDlg, IDC_A2065, en); + ew (hDlg, IDC_NETDEVICE, en && (workprefs.a2065name[0] || workprefs.ne2000pciname[0])); + + ShowWindow (GetDlgItem(hDlg, IDC_CS_SCSIMODE), SW_HIDE); + ew(hDlg, IDC_CS_CD32FMV, en); + ew(hDlg, IDC_CS_TOCCATA, en); + ew(hDlg, IDC_CS_TOCCATAMIXER, en && workprefs.sound_toccata); + ew (hDlg, IDC_CS_SCSIMODE, FALSE); + + ew(hDlg, IDC_CPUBOARDROMFILE, workprefs.cpuboard_type != 0); + ew(hDlg, IDC_CPUBOARDROMCHOOSER, workprefs.cpuboard_type != 0); + ew(hDlg, IDC_CPUBOARDMEM, workprefs.cpuboard_type > 0); + ew(hDlg, IDC_CPUBOARDRAM, workprefs.cpuboard_type > 0); + ew(hDlg, IDC_CPUBOARD_SUBTYPE, workprefs.cpuboard_type); + const struct expansionboardsettings *cbs = cpuboards[workprefs.cpuboard_type].subtypes[workprefs.cpuboard_subtype].settings; + int i = 0; + if (cbs) { + while (cpuboard_settings_id[i] >= 0) { + if (!cbs[i].name) + break; + hide(hDlg, cpuboard_settings_id[i], 0); + i++; + } + } + while (cpuboard_settings_id[i] >= 0) { + hide(hDlg, cpuboard_settings_id[i], 1); + i++; + } +} + +static void values_to_expansion2dlg (HWND hDlg) +{ + int cw; + int index; + struct boardromconfig *brc; + + CheckDlgButton (hDlg, IDC_SOCKETS, workprefs.socket_emu); + CheckDlgButton (hDlg, IDC_CATWEASEL, workprefs.catweasel); + CheckDlgButton (hDlg, IDC_SCSIDEVICE, workprefs.scsi == 1); + CheckDlgButton (hDlg, IDC_SANA2, workprefs.sana2); + CheckDlgButton(hDlg, IDC_A2065, workprefs.a2065name[0] ? 1 : 0); + CheckDlgButton(hDlg, IDC_NE2000, workprefs.ne2000pciname[0] ? 1 : 0); + CheckDlgButton(hDlg, IDC_CS_CD32FMV, workprefs.cs_cd32fmv); + CheckDlgButton(hDlg, IDC_CS_TOCCATA, workprefs.sound_toccata); + CheckDlgButton(hDlg, IDC_CS_TOCCATAMIXER, workprefs.sound_toccata_mixer); + CheckDlgButton(hDlg, IDC_CS_SCSIMODE, workprefs.scsi == 2); + cw = catweasel_detect (); + ew (hDlg, IDC_CATWEASEL, cw); + if (!cw && workprefs.catweasel < 100) + workprefs.catweasel = 0; + + UAEREG *fkey = regcreatetree(NULL, _T("DetectedROMs")); + load_keyring(&workprefs, NULL); + + values_to_expansion2_expansion_roms(hDlg, fkey); + + values_to_expansion2_expansion_settings(hDlg); + + if (workprefs.cpuboard_type) { + const struct cpuboardsubtype *cst = &cpuboards[workprefs.cpuboard_type].subtypes[workprefs.cpuboard_subtype]; + brc = get_device_rom(&workprefs, ROMTYPE_CPUBOARD, 0, &index); + addromfiles(fkey, hDlg, IDC_CPUBOARDROMFILE, brc ? brc->roms[index].romfile : NULL, + cst->romtype, cst->romtype_extra); + } else { + SendDlgItemMessage(hDlg, IDC_CPUBOARDROMFILE, CB_RESETCONTENT, 0, 0); + } + + regclosetree(fkey); + + gui_set_string_cursor(scsiromselect_table, hDlg, IDC_SCSIROMSELECT, scsiromselected); + values_to_expansion2dlg_sub(hDlg); + + +} + +static void updatecpuboardsubtypes(HWND hDlg) +{ + SendDlgItemMessage(hDlg, IDC_CPUBOARD_SUBTYPE, CB_RESETCONTENT, 0, 0); + for (int i = 0; cpuboards[workprefs.cpuboard_type].subtypes[i].name; i++) { + SendDlgItemMessage(hDlg, IDC_CPUBOARD_SUBTYPE, CB_ADDSTRING, 0, (LPARAM) cpuboards[workprefs.cpuboard_type].subtypes[i].name); + } + const struct expansionboardsettings *cbs = cpuboards[workprefs.cpuboard_type].subtypes[workprefs.cpuboard_subtype].settings; + int i = 0; + if (cbs) { + for (i = 0; cbs[i].name; i++) { + int id = cpuboard_settings_id[i]; + if (id < 0) + break; + SetWindowText(GetDlgItem(hDlg, id), cbs[i].name); + } + } + while (cpuboard_settings_id[i] >= 0) { + int id = cpuboard_settings_id[i]; + SetWindowText(GetDlgItem(hDlg, id), _T("-")); + i++; + } +} + +static void expansion2filebuttons(HWND hDlg, WPARAM wParam, TCHAR *path) +{ + switch (LOWORD(wParam)) + { + case IDC_SCSIROMCHOOSER: + DiskSelection(hDlg, IDC_SCSIROMFILE, 6, &workprefs, path); + values_to_expansion2dlg(hDlg); + break; + case IDC_CPUBOARDROMCHOOSER: + DiskSelection(hDlg, IDC_CPUBOARDROMFILE, 6, &workprefs, path); + values_to_expansion2dlg(hDlg); + break; + } +} + + +static INT_PTR CALLBACK Expansion2DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + int v, val; + TCHAR tmp[100]; + static int recursive = 0; + static int enumerated; + + switch (msg) + { + case WM_INITDIALOG: + { + recursive++; + pages[EXPANSION2_ID] = hDlg; + currentpage = EXPANSION2_ID; + int ids[] = { IDC_SCSIROMFILE, IDC_CPUBOARDROMFILE, -1 }; + setmultiautocomplete(hDlg, ids); + if (!enumerated) { + ethernet_enumerate(ndd, NULL); + for (int i = 0; ndd[i]; i++) { + struct netdriverdata *n = ndd[i]; + if (!n->active) + continue; + if (n->type == UAENET_SLIRP) { + WIN32GUI_LoadUIString(IDS_SLIRP, tmp, sizeof tmp / sizeof(TCHAR)); + n->desc = my_strdup(tmp); + } + else if (n->type == UAENET_SLIRP_INBOUND) { + WIN32GUI_LoadUIString(IDS_SLIRP_INBOUND, tmp, sizeof tmp / sizeof(TCHAR)); + n->desc = my_strdup(tmp); + } + } + enumerated = 1; + } + SendDlgItemMessage(hDlg, IDC_CPUBOARD_TYPE, CB_RESETCONTENT, 0, 0); + for (int i = 0; cpuboards[i].name; i++) { + SendDlgItemMessage(hDlg, IDC_CPUBOARD_TYPE, CB_ADDSTRING, 0, (LPARAM) cpuboards[i].name); + } + + SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTCAT, CB_RESETCONTENT, 0, 0); + SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTCAT, CB_ADDSTRING, 0, (LPARAM) _T("SCSI Controllers")); + SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTCAT, CB_ADDSTRING, 0, (LPARAM) _T("IDE Controllers")); + SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTCAT, CB_ADDSTRING, 0, (LPARAM) _T("SASI Controllers")); + SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTCAT, CB_ADDSTRING, 0, (LPARAM) _T("PCI Bridges")); + hide(hDlg, IDC_SCSIROMSELECTED, 1); + expansion_net(hDlg); + init_expansion2(hDlg); + updatecpuboardsubtypes(hDlg); + setcpuboardmemsize(hDlg); + recursive--; + } + + case WM_USER: + recursive++; + values_to_expansion2dlg(hDlg); + enable_for_expansion2dlg(hDlg); + recursive--; + break; + + case WM_COMMAND: + { + if (recursive > 0) + break; + recursive++; + switch (LOWORD(wParam)) + { + case IDC_EXPANSION_SETTING1: + case IDC_EXPANSION_SETTING2: + case IDC_EXPANSION_SETTING3: + values_from_expansion2dlg(hDlg); + break; + case IDC_SCSIROMFILEAUTOBOOT: + values_from_expansion2dlg(hDlg); + break; + case IDC_SOCKETS: + workprefs.socket_emu = ischecked(hDlg, IDC_SOCKETS); + break; + case IDC_SCSIDEVICE: + workprefs.scsi = ischecked(hDlg, IDC_SCSIDEVICE); + enable_for_expansion2dlg(hDlg); + break; + case IDC_SANA2: + workprefs.sana2 = ischecked(hDlg, IDC_SANA2); + break; + case IDC_A2065: + if (ischecked(hDlg, IDC_A2065)) { + _tcscpy(workprefs.a2065name, _T("none")); + expansion_net(hDlg); + enable_for_expansion2dlg(hDlg); + } else { + if (!workprefs.ne2000pciname[0]) + ew(hDlg, IDC_NETDEVICE, FALSE); + workprefs.a2065name[0] = 0; + enable_for_expansion2dlg(hDlg); + } + break; + case IDC_NE2000: + if (ischecked(hDlg, IDC_NE2000)) { + _tcscpy(workprefs.ne2000pciname, _T("none")); + expansion_net(hDlg); + enable_for_expansion2dlg(hDlg); + } else { + if (!workprefs.a2065name[0]) + ew(hDlg, IDC_NETDEVICE, FALSE); + workprefs.ne2000pciname[0] = 0; + enable_for_expansion2dlg(hDlg); + } + break; + case IDC_CATWEASEL: + workprefs.catweasel = ischecked(hDlg, IDC_CATWEASEL) ? -1 : 0; + break; + case IDC_CS_CD32FMV: + workprefs.cs_cd32fmv = ischecked(hDlg, IDC_CS_CD32FMV) ? 1 : 0; + break; + case IDC_CS_TOCCATA: + workprefs.sound_toccata = ischecked(hDlg, IDC_CS_TOCCATA) ? 1 : 0; + if (!workprefs.sound_toccata) + workprefs.sound_toccata_mixer = false; + enable_for_expansion2dlg(hDlg); + break; + case IDC_CS_TOCCATAMIXER: + workprefs.sound_toccata_mixer = ischecked(hDlg, IDC_CS_TOCCATAMIXER) ? 1 : 0; + break; + case IDC_SCSIROMSELECTED: + values_from_expansion2dlg(hDlg); + break; + } + expansion2filebuttons(hDlg, wParam, NULL); + if (HIWORD(wParam) == CBN_SELENDOK || HIWORD(wParam) == CBN_KILLFOCUS || HIWORD(wParam) == CBN_EDITCHANGE) { + switch (LOWORD(wParam)) + { + case IDC_SCSIROMFILE: + case IDC_SCSIROMID: + case IDC_CPUBOARDROMFILE: + case IDC_CPUBOARDROMSUBSELECT: + values_from_expansion2dlg(hDlg); + values_to_expansion2_expansion_settings(hDlg); + break; + case IDC_SCSIROMSUBSELECT: + values_from_expansion2dlg(hDlg); + values_to_expansion2_expansion_roms(hDlg, NULL); + values_to_expansion2_expansion_settings(hDlg); + break; + case IDC_SCSIROMSELECTCAT: + val = SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTCAT, CB_GETCURSEL, 0, 0); + if (val != CB_ERR) { + scsiromselectedcatnum = val; + scsiromselected = 0; + init_expansion2(hDlg); + values_to_expansion2_expansion_roms(hDlg, NULL); + values_to_expansion2_expansion_settings(hDlg); + values_to_expansion2dlg_sub(hDlg); + } + break; + case IDC_SCSIROMSELECTNUM: + case IDC_SCSIROMSELECT: + val = SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTNUM, CB_GETCURSEL, 0, 0); + if (val != CB_ERR) + scsiromselectednum = val; + val = gui_get_string_cursor(scsiromselect_table, hDlg, IDC_SCSIROMSELECT); + if (val != CB_ERR) { + scsiromselected = val; + values_to_expansion2_expansion_roms(hDlg, NULL); + values_to_expansion2_expansion_settings(hDlg); + values_to_expansion2dlg_sub(hDlg); + } + break; + case IDC_CPUBOARD_TYPE: + v = SendDlgItemMessage(hDlg, IDC_CPUBOARD_TYPE, CB_GETCURSEL, 0, 0L); + if (v != CB_ERR && v != workprefs.cpuboard_type) { + workprefs.cpuboard_type = v; + workprefs.cpuboard_subtype = 0; + workprefs.cpuboard_settings = 0; + updatecpuboardsubtypes(hDlg); + if (is_ppc_cpu(&workprefs)) { + workprefs.ppc_mode = 2; + } else if (workprefs.ppc_mode == 2) { + workprefs.ppc_mode = 0; + } + built_in_cpuboard_prefs(&workprefs); + setcpuboardmemsize(hDlg); + enable_for_expansion2dlg(hDlg); + values_to_expansion2dlg(hDlg); + } + break; + case IDC_CPUBOARD_SUBTYPE: + v = SendDlgItemMessage(hDlg, IDC_CPUBOARD_SUBTYPE, CB_GETCURSEL, 0, 0L); + if (v != CB_ERR && v != workprefs.cpuboard_subtype) { + workprefs.cpuboard_subtype = v; + workprefs.cpuboard_settings = 0; + if (is_ppc_cpu(&workprefs)) { + workprefs.ppc_mode = 2; + } else if (workprefs.ppc_mode == 2) { + workprefs.ppc_mode = 0; + } + built_in_cpuboard_prefs(&workprefs); + setcpuboardmemsize(hDlg); + enable_for_expansion2dlg(hDlg); + values_to_expansion2dlg(hDlg); + } + break; + case IDC_NETDEVICE: + v = SendDlgItemMessage(hDlg, IDC_NETDEVICE, CB_GETCURSEL, 0, 0L); + if (v != CB_ERR) { + const TCHAR *s; + if (v == 0) { + s = _T("none"); + } + else if (ndd) { + v--; + s = ndd[v]->name; + } + if (ischecked(hDlg, IDC_A2065)) + _tcscpy(workprefs.a2065name, s); + if (ischecked(hDlg, IDC_NE2000)) + _tcscpy(workprefs.ne2000pciname, s); + } + break; + } + } + for (int i = 0; cpuboard_settings_id[i] >= 0; i++) { + workprefs.cpuboard_settings &= ~(1 << i); + if (ischecked(hDlg, cpuboard_settings_id[i])) + workprefs.cpuboard_settings |= 1 << i; + } + recursive--; + } + break; + case WM_HSCROLL: + workprefs.cpuboardmem1_size = memsizes[msi_cpuboard[SendMessage(GetDlgItem(hDlg, IDC_CPUBOARDMEM), TBM_GETPOS, 0, 0)]]; + setcpuboardmemsize(hDlg); + break; + } + return FALSE; +} + +static void enable_for_expansiondlg(HWND hDlg) +{ + int z3 = true; + int en; + + en = !!full_property_sheet; + + int rtg = workprefs.rtgmem_size && full_property_sheet && workprefs.rtgmem_type < GFXBOARD_HARDWARE; + int rtg2 = workprefs.rtgmem_size || workprefs.rtgmem_type >= GFXBOARD_HARDWARE; + int rtg3 = workprefs.rtgmem_size && workprefs.rtgmem_type < GFXBOARD_HARDWARE; + int rtg4 = workprefs.rtgmem_type < GFXBOARD_HARDWARE; + + ew(hDlg, IDC_P96RAM, rtg2); + ew(hDlg, IDC_P96MEM, rtg2); + ew(hDlg, IDC_RTG_Z2Z3, z3); + ew(hDlg, IDC_RTG_8BIT, rtg); + ew(hDlg, IDC_RTG_16BIT, rtg); + ew(hDlg, IDC_RTG_24BIT, rtg); + ew(hDlg, IDC_RTG_32BIT, rtg); + ew(hDlg, IDC_RTG_MATCH_DEPTH, rtg3); + ew(hDlg, IDC_RTG_SCALE, rtg2); + ew(hDlg, IDC_RTG_CENTER, rtg2); + ew(hDlg, IDC_RTG_SCALE_ALLOW, rtg2); + ew(hDlg, IDC_RTG_SCALE_ASPECTRATIO, rtg2); + ew(hDlg, IDC_RTG_VBLANKRATE, rtg2); + ew(hDlg, IDC_RTG_BUFFERCNT, rtg2); + ew(hDlg, IDC_RTG_DISPLAYSELECT, rtg2); + ew(hDlg, IDC_RTG_VBINTERRUPT, rtg3); + if (!workprefs.gfx_api) { + workprefs.rtg_hardwaresprite = false; + CheckDlgButton(hDlg, IDC_RTG_HWSPRITE, FALSE); + } + ew(hDlg, IDC_RTG_HWSPRITE, rtg3 && workprefs.gfx_api); +} + +static void values_to_expansiondlg(HWND hDlg) +{ + SendDlgItemMessage(hDlg, IDC_RTG_BUFFERCNT, CB_SETCURSEL, workprefs.gfx_apmode[1].gfx_backbuffers == 0 ? 0 : workprefs.gfx_apmode[1].gfx_backbuffers - 1, 0); + + int min_mem = MIN_P96_MEM; + int max_mem = MAX_P96_MEM_Z3; + if (!gfxboard_is_z3(workprefs.rtgmem_type)) { + int v = workprefs.rtgmem_size; + max_mem = 0; + workprefs.rtgmem_size = 1024 * 1024; + while (getz2size(&workprefs) > 0) { + workprefs.rtgmem_size *= 2; + max_mem++; + } + if (workprefs.rtgmem_type >= GFXBOARD_HARDWARE && v > gfxboard_get_vram_max(workprefs.rtgmem_type)) + v = gfxboard_get_vram_max(workprefs.rtgmem_type); + if (workprefs.rtgmem_type >= GFXBOARD_HARDWARE && v < gfxboard_get_vram_min(workprefs.rtgmem_type)) + v = gfxboard_get_vram_min(workprefs.rtgmem_type); + workprefs.rtgmem_size = v; +// if (workprefs.rtgmem_size > 8 * 1024 * 1024) +// mem_size = 8 * 1024 * 1024; + while (getz2size(&workprefs) < 0 && workprefs.rtgmem_size > 0) + workprefs.rtgmem_size -= 1024 * 1024; + } else { + int v = workprefs.rtgmem_size; + if (workprefs.rtgmem_type >= GFXBOARD_HARDWARE && v > gfxboard_get_vram_max(workprefs.rtgmem_type)) + v = gfxboard_get_vram_max(workprefs.rtgmem_type); + if (workprefs.rtgmem_type >= GFXBOARD_HARDWARE && v < gfxboard_get_vram_min(workprefs.rtgmem_type)) + v = gfxboard_get_vram_min(workprefs.rtgmem_type); + workprefs.rtgmem_size = v; + } + if (workprefs.rtgmem_type >= GFXBOARD_HARDWARE) { + switch (gfxboard_get_vram_min(workprefs.rtgmem_type)) { + case 0x00100000: min_mem = 1; break; + case 0x00200000: min_mem = 2; break; + case 0x00400000: min_mem = 3; break; + } + switch (gfxboard_get_vram_max(workprefs.rtgmem_type)) { + case 0x00100000: max_mem = 1; break; + case 0x00200000: max_mem = 2; break; + case 0x00400000: max_mem = 3; break; + } + } + SendDlgItemMessage(hDlg, IDC_P96MEM, TBM_SETRANGE, TRUE, MAKELONG(min_mem, max_mem)); + int mem_size = 0; + switch (workprefs.rtgmem_size) { + case 0x00000000: mem_size = 0; break; + case 0x00100000: mem_size = 1; break; + case 0x00200000: mem_size = 2; break; + case 0x00400000: mem_size = 3; break; + case 0x00800000: mem_size = 4; break; + case 0x01000000: mem_size = 5; break; + case 0x02000000: mem_size = 6; break; + case 0x04000000: mem_size = 7; break; + case 0x08000000: mem_size = 8; break; + case 0x10000000: mem_size = 9; break; + case 0x20000000: mem_size = 10; break; + case 0x40000000: mem_size = 11; break; + } + SendDlgItemMessage(hDlg, IDC_P96MEM, TBM_SETPOS, TRUE, mem_size); + SetDlgItemText(hDlg, IDC_P96RAM, memsize_names[msi_gfx[mem_size]]); + + SendDlgItemMessage(hDlg, IDC_RTG_Z2Z3, CB_SETCURSEL, workprefs.rtgmem_size == 0 ? 0 : workprefs.rtgmem_type + 1, 0); + SendDlgItemMessage(hDlg, IDC_RTG_8BIT, CB_SETCURSEL, (workprefs.picasso96_modeflags & RGBFF_CLUT) ? 1 : 0, 0); + SendDlgItemMessage(hDlg, IDC_RTG_16BIT, CB_SETCURSEL, + (manybits(workprefs.picasso96_modeflags, RGBFF_R5G6B5PC | RGBFF_R5G6B5PC | RGBFF_R5G6B5 | RGBFF_R5G5B5 | RGBFF_B5G6R5PC | RGBFF_B5G5R5PC)) ? 1 : + (workprefs.picasso96_modeflags & RGBFF_R5G6B5PC) ? 2 : + (workprefs.picasso96_modeflags & RGBFF_R5G5B5PC) ? 3 : + (workprefs.picasso96_modeflags & RGBFF_R5G6B5) ? 4 : + (workprefs.picasso96_modeflags & RGBFF_R5G5B5) ? 5 : + (workprefs.picasso96_modeflags & RGBFF_B5G6R5PC) ? 6 : + (workprefs.picasso96_modeflags & RGBFF_B5G5R5PC) ? 7 : 0, 0); + SendDlgItemMessage(hDlg, IDC_RTG_24BIT, CB_SETCURSEL, + (manybits(workprefs.picasso96_modeflags, RGBFF_R8G8B8 | RGBFF_B8G8R8)) ? 1 : + (workprefs.picasso96_modeflags & RGBFF_R8G8B8) ? 2 : + (workprefs.picasso96_modeflags & RGBFF_B8G8R8) ? 3 : 0, 0); + SendDlgItemMessage(hDlg, IDC_RTG_32BIT, CB_SETCURSEL, + (manybits(workprefs.picasso96_modeflags, RGBFF_A8R8G8B8 | RGBFF_A8B8G8R8 | RGBFF_R8G8B8A8 | RGBFF_B8G8R8A8)) ? 1 : + (workprefs.picasso96_modeflags & RGBFF_A8R8G8B8) ? 2 : + (workprefs.picasso96_modeflags & RGBFF_A8B8G8R8) ? 3 : + (workprefs.picasso96_modeflags & RGBFF_R8G8B8A8) ? 4 : + (workprefs.picasso96_modeflags & RGBFF_B8G8R8A8) ? 5 : 0, 0); + if (workprefs.win32_rtgvblankrate <= 0 || + workprefs.win32_rtgvblankrate == 50 || + workprefs.win32_rtgvblankrate == 60 || + workprefs.win32_rtgvblankrate == 70 || + workprefs.win32_rtgvblankrate == 75) { + SendDlgItemMessage(hDlg, IDC_RTG_VBLANKRATE, CB_SETCURSEL, + (workprefs.win32_rtgvblankrate == 0) ? 0 : + (workprefs.win32_rtgvblankrate == -1) ? 1 : + (workprefs.win32_rtgvblankrate == -2) ? 0 : + (workprefs.win32_rtgvblankrate == 50) ? 2 : + (workprefs.win32_rtgvblankrate == 60) ? 3 : + (workprefs.win32_rtgvblankrate == 70) ? 4 : + (workprefs.win32_rtgvblankrate == 75) ? 5 : 0, 0); + } else { + TCHAR tmp[10]; + _stprintf(tmp, _T("%d"), workprefs.win32_rtgvblankrate); + SendDlgItemMessage(hDlg, IDC_RTG_VBLANKRATE, WM_SETTEXT, 0, (LPARAM) tmp); + } + + + CheckDlgButton(hDlg, IDC_RTG_SCALE, workprefs.gf[1].gfx_filter_autoscale == RTG_MODE_SCALE); + CheckDlgButton(hDlg, IDC_RTG_CENTER, workprefs.gf[1].gfx_filter_autoscale == RTG_MODE_CENTER); + CheckDlgButton(hDlg, IDC_RTG_SCALE_ALLOW, workprefs.win32_rtgallowscaling); + CheckDlgButton(hDlg, IDC_RTG_MATCH_DEPTH, workprefs.win32_rtgmatchdepth); + CheckDlgButton(hDlg, IDC_RTG_VBINTERRUPT, workprefs.rtg_hardwareinterrupt); + CheckDlgButton(hDlg, IDC_RTG_HWSPRITE, workprefs.rtg_hardwaresprite); + + SendDlgItemMessage(hDlg, IDC_RTG_SCALE_ASPECTRATIO, CB_SETCURSEL, + (workprefs.win32_rtgscaleaspectratio == 0) ? 0 : + (workprefs.win32_rtgscaleaspectratio < 0) ? 1 : + getaspectratioindex(workprefs.win32_rtgscaleaspectratio) + 2, 0); +} + +static INT_PTR CALLBACK ExpansionDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + int v; + TCHAR tmp[100]; + static int recursive = 0; + static int enumerated; + + switch (msg) + { + case WM_INITDIALOG: + pages[EXPANSION_ID] = hDlg; + currentpage = EXPANSION_ID; + + init_displays_combo (hDlg, true); + + SendDlgItemMessage (hDlg, IDC_RTG_Z2Z3, CB_RESETCONTENT, 0, 0); + SendDlgItemMessage (hDlg, IDC_RTG_Z2Z3, CB_ADDSTRING, 0, (LPARAM)_T("-")); + SendDlgItemMessage (hDlg, IDC_RTG_Z2Z3, CB_ADDSTRING, 0, (LPARAM)_T("UAE Zorro II")); + SendDlgItemMessage (hDlg, IDC_RTG_Z2Z3, CB_ADDSTRING, 0, (LPARAM)_T("UAE Zorro III (*)")); + SendDlgItemMessage (hDlg, IDC_RTG_Z2Z3, CB_ADDSTRING, 0, (LPARAM)_T("Picasso II Zorro II")); + SendDlgItemMessage (hDlg, IDC_RTG_Z2Z3, CB_ADDSTRING, 0, (LPARAM)_T("Picasso II+ Zorro II")); + SendDlgItemMessage (hDlg, IDC_RTG_Z2Z3, CB_ADDSTRING, 0, (LPARAM)_T("Piccolo Zorro II")); SendDlgItemMessage (hDlg, IDC_RTG_Z2Z3, CB_ADDSTRING, 0, (LPARAM)_T("Piccolo Zorro III")); SendDlgItemMessage (hDlg, IDC_RTG_Z2Z3, CB_ADDSTRING, 0, (LPARAM)_T("Piccolo SD64 Zorro II")); SendDlgItemMessage (hDlg, IDC_RTG_Z2Z3, CB_ADDSTRING, 0, (LPARAM)_T("Piccolo SD64 Zorro III")); @@ -8294,617 +8966,253 @@ static INT_PTR CALLBACK ExpansionDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LP SendDlgItemMessage (hDlg, IDC_RTG_VBLANKRATE, CB_ADDSTRING, 0, (LPARAM)_T("60")); SendDlgItemMessage (hDlg, IDC_RTG_VBLANKRATE, CB_ADDSTRING, 0, (LPARAM)_T("70")); SendDlgItemMessage (hDlg, IDC_RTG_VBLANKRATE, CB_ADDSTRING, 0, (LPARAM)_T("75")); - SendDlgItemMessage(hDlg, IDC_RTG_BUFFERCNT, CB_RESETCONTENT, 0, 0); - WIN32GUI_LoadUIString(IDS_BUFFER_DOUBLE, tmp, sizeof tmp / sizeof (TCHAR)); - SendDlgItemMessage(hDlg, IDC_RTG_BUFFERCNT, CB_ADDSTRING, 0, (LPARAM)tmp); - WIN32GUI_LoadUIString(IDS_BUFFER_TRIPLE, tmp, sizeof tmp / sizeof (TCHAR)); - SendDlgItemMessage(hDlg, IDC_RTG_BUFFERCNT, CB_ADDSTRING, 0, (LPARAM)tmp); - - case WM_USER: - recursive++; - values_to_expansiondlg (hDlg); - enable_for_expansiondlg (hDlg); - values_to_memorydlg (hDlg); - enable_for_memorydlg (hDlg); - recursive--; - break; - - case WM_HSCROLL: - workprefs.rtgmem_size = memsizes[msi_gfx[SendMessage (GetDlgItem (hDlg, IDC_P96MEM), TBM_GETPOS, 0, 0)]]; - values_to_memorydlg (hDlg); - enable_for_memorydlg (hDlg); - break; - - case WM_COMMAND: - { - if (recursive > 0) - break; - recursive++; - switch (LOWORD (wParam)) - { - case IDC_RTG_MATCH_DEPTH: - workprefs.win32_rtgmatchdepth = ischecked (hDlg, IDC_RTG_MATCH_DEPTH); - break; - case IDC_RTG_SCALE: - workprefs.gf[1].gfx_filter_autoscale = ischecked(hDlg, IDC_RTG_SCALE) ? RTG_MODE_SCALE : 0; - setchecked (hDlg, IDC_RTG_CENTER, false); - break; - case IDC_RTG_CENTER: - workprefs.gf[1].gfx_filter_autoscale = ischecked(hDlg, IDC_RTG_CENTER) ? RTG_MODE_CENTER : 0; - setchecked (hDlg, IDC_RTG_SCALE, false); - break; - case IDC_RTG_SCALE_ALLOW: - workprefs.win32_rtgallowscaling = ischecked (hDlg, IDC_RTG_SCALE_ALLOW); - break; - case IDC_RTG_VBINTERRUPT: - workprefs.rtg_hardwareinterrupt = ischecked (hDlg, IDC_RTG_VBINTERRUPT); - break; - case IDC_RTG_HWSPRITE: - workprefs.rtg_hardwaresprite = ischecked (hDlg, IDC_RTG_HWSPRITE); - break; - case IDC_SOCKETS: - workprefs.socket_emu = ischecked (hDlg, IDC_SOCKETS); - break; - case IDC_SCSIDEVICE: - workprefs.scsi = ischecked (hDlg, IDC_SCSIDEVICE); - enable_for_expansiondlg (hDlg); - break; - case IDC_SANA2: - workprefs.sana2 = ischecked (hDlg, IDC_SANA2); - break; - case IDC_A2065: - if (ischecked(hDlg, IDC_A2065)) { - _tcscpy(workprefs.a2065name, _T("none")); - expansion_net(hDlg); - enable_for_expansiondlg(hDlg); - } else { - if (!workprefs.ne2000pciname[0]) - ew(hDlg, IDC_NETDEVICE, FALSE); - workprefs.a2065name[0] = 0; - enable_for_expansiondlg(hDlg); - } - break; - case IDC_NE2000: - if (ischecked(hDlg, IDC_NE2000)) { - _tcscpy(workprefs.ne2000pciname, _T("none")); - expansion_net(hDlg); - enable_for_expansiondlg(hDlg); - } else { - if (!workprefs.a2065name[0]) - ew(hDlg, IDC_NETDEVICE, FALSE); - workprefs.ne2000pciname[0] = 0; - enable_for_expansiondlg(hDlg); - } - break; - case IDC_CATWEASEL: - workprefs.catweasel = ischecked (hDlg, IDC_CATWEASEL) ? -1 : 0; - break; - case IDC_CS_CD32FMV: - workprefs.cs_cd32fmv = ischecked(hDlg, IDC_CS_CD32FMV) ? 1 : 0; - break; - case IDC_CS_TOCCATA: - workprefs.sound_toccata = ischecked(hDlg, IDC_CS_TOCCATA) ? 1 : 0; - if (!workprefs.sound_toccata) - workprefs.sound_toccata_mixer = false; - enable_for_expansiondlg(hDlg); - break; - case IDC_CS_TOCCATAMIXER: - workprefs.sound_toccata_mixer = ischecked(hDlg, IDC_CS_TOCCATAMIXER) ? 1 : 0; - break; - } - if (HIWORD (wParam) == CBN_SELENDOK || HIWORD (wParam) == CBN_KILLFOCUS || HIWORD (wParam) == CBN_EDITCHANGE) { - uae_u32 mask = workprefs.picasso96_modeflags; - switch (LOWORD (wParam)) - { - case IDC_RTG_DISPLAYSELECT: - get_displays_combo (hDlg, true); - break; - case IDC_RTG_BUFFERCNT: - v = SendDlgItemMessage (hDlg, IDC_RTG_BUFFERCNT, CB_GETCURSEL, 0, 0L); - if (v != CB_ERR) { - v++; - workprefs.gfx_apmode[1].gfx_backbuffers = v; - } - break; - case IDC_RTG_SCALE_ASPECTRATIO: - v = SendDlgItemMessage (hDlg, IDC_RTG_SCALE_ASPECTRATIO, CB_GETCURSEL, 0, 0L); - if (v != CB_ERR) { - if (v == 0) - workprefs.win32_rtgscaleaspectratio = 0; - else if (v == 1) - workprefs.win32_rtgscaleaspectratio = -1; - else if (v >= 2) - workprefs.win32_rtgscaleaspectratio = getaspectratio (v - 2); - } - break; - case IDC_RTG_Z2Z3: - v = SendDlgItemMessage (hDlg, IDC_RTG_Z2Z3, CB_GETCURSEL, 0, 0L); - if (v != CB_ERR) { - if (v == 0) { - workprefs.rtgmem_type = 1; - workprefs.rtgmem_size = 0; - } else { - workprefs.rtgmem_type = v - 1; - if (workprefs.rtgmem_size == 0) - workprefs.rtgmem_size = 4096 * 1024; - } - enable_for_expansiondlg (hDlg); - } - break; - case IDC_RTG_8BIT: - v = SendDlgItemMessage (hDlg, IDC_RTG_8BIT, CB_GETCURSEL, 0, 0L); - if (v != CB_ERR) { - mask &= ~RGBFF_CLUT; - if (v == 1) - mask |= RGBFF_CLUT; - } - break; - case IDC_RTG_16BIT: - v = SendDlgItemMessage (hDlg, IDC_RTG_16BIT, CB_GETCURSEL, 0, 0L); - if (v != CB_ERR) { - mask &= ~(RGBFF_R5G6B5PC | RGBFF_R5G5B5PC | RGBFF_R5G6B5 | RGBFF_R5G5B5 | RGBFF_B5G6R5PC | RGBFF_B5G5R5PC); - if (v == 1) - mask |= RGBFF_R5G6B5PC | RGBFF_R5G6B5PC | RGBFF_R5G5B5PC | RGBFF_R5G6B5 | RGBFF_R5G5B5 | RGBFF_B5G6R5PC | RGBFF_B5G5R5PC; - if (v == 2) - mask |= RGBFF_R5G6B5PC; - if (v == 3) - mask |= RGBFF_R5G5B5PC; - if (v == 4) - mask |= RGBFF_R5G6B5; - if (v == 5) - mask |= RGBFF_R5G5B5; - if (v == 6) - mask |= RGBFF_B5G6R5PC; - if (v == 7) - mask |= RGBFF_B5G5R5PC; - } - break; - case IDC_RTG_24BIT: - v = SendDlgItemMessage (hDlg, IDC_RTG_24BIT, CB_GETCURSEL, 0, 0L); - if (v != CB_ERR) { - mask &= ~(RGBFF_R8G8B8 | RGBFF_B8G8R8); - if (v == 1) - mask |= RGBFF_R8G8B8 | RGBFF_B8G8R8; - if (v == 2) - mask |= RGBFF_R8G8B8; - if (v == 3) - mask |= RGBFF_B8G8R8; - } - break; - case IDC_RTG_32BIT: - v = SendDlgItemMessage (hDlg, IDC_RTG_32BIT, CB_GETCURSEL, 0, 0L); - if (v != CB_ERR) { - mask &= ~(RGBFF_A8R8G8B8 | RGBFF_A8B8G8R8 | RGBFF_R8G8B8A8 | RGBFF_B8G8R8A8); - if (v == 1) - mask |= RGBFF_A8R8G8B8 | RGBFF_A8B8G8R8 | RGBFF_R8G8B8A8 | RGBFF_B8G8R8A8; - if (v == 2) - mask |= RGBFF_A8R8G8B8; - if (v == 3) - mask |= RGBFF_A8B8G8R8; - if (v == 4) - mask |= RGBFF_R8G8B8A8; - if (v == 5) - mask |= RGBFF_B8G8R8A8; - } - break; - case IDC_RTG_VBLANKRATE: - tmp[0] = 0; - v = SendDlgItemMessage (hDlg, IDC_RTG_VBLANKRATE, CB_GETCURSEL, 0, 0L); - if (v != CB_ERR) { - if (v == 0) { - workprefs.win32_rtgvblankrate = 0; - } else if (v == 1) { - workprefs.win32_rtgvblankrate = -1; - } else { - v = SendDlgItemMessage (hDlg, IDC_RTG_VBLANKRATE, CB_GETLBTEXT, (WPARAM)v, (LPARAM)tmp); - } - } else { - v = SendDlgItemMessage (hDlg, IDC_RTG_VBLANKRATE, WM_GETTEXT, (WPARAM)sizeof tmp / sizeof (TCHAR), (LPARAM)tmp); - } - if (tmp[0]) - workprefs.win32_rtgvblankrate = _tstol (tmp); - break; - case IDC_NETDEVICE: - v = SendDlgItemMessage (hDlg, IDC_NETDEVICE, CB_GETCURSEL, 0, 0L); - if (v != CB_ERR) { - const TCHAR *s; - if (v == 0) { - s = _T("none"); - } else if (ndd) { - v--; - s = ndd[v]->name; - } - if (ischecked(hDlg, IDC_A2065)) - _tcscpy(workprefs.a2065name, s); - if (ischecked(hDlg, IDC_NE2000)) - _tcscpy(workprefs.ne2000pciname, s); - } - break; - - } - workprefs.picasso96_modeflags = mask; - values_to_memorydlg (hDlg); - } - recursive--; - } - break; - } - return FALSE; -} - -static void updatecpuboardsubtypes(HWND hDlg) -{ - SendDlgItemMessage (hDlg, IDC_CPUBOARD_SUBTYPE, CB_RESETCONTENT, 0, 0); - for (int i = 0; cpuboards[workprefs.cpuboard_type].subtypes[i].name; i++) { - SendDlgItemMessage(hDlg, IDC_CPUBOARD_SUBTYPE, CB_ADDSTRING, 0, (LPARAM)cpuboards[workprefs.cpuboard_type].subtypes[i].name); - } - const struct expansionboardsettings *cbs = cpuboards[workprefs.cpuboard_type].subtypes[workprefs.cpuboard_subtype].settings; - int i = 0; - if (cbs) { - for (i = 0; cbs[i].name; i++) { - int id = cpuboard_settings_id[i]; - if (id < 0) - break; - SetWindowText (GetDlgItem(hDlg, id), cbs[i].name); - } - } - while (cpuboard_settings_id[i] >= 0) { - int id = cpuboard_settings_id[i]; - SetWindowText (GetDlgItem(hDlg, id), _T("-")); - i++; - } -} - -static INT_PTR CALLBACK MemoryDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - static int recursive = 0; - int v; - - switch (msg) - { - case WM_INITDIALOG: - recursive++; - pages[MEMORY_ID] = hDlg; - currentpage = MEMORY_ID; - SendDlgItemMessage (hDlg, IDC_CHIPMEM, TBM_SETRANGE, TRUE, MAKELONG (MIN_CHIP_MEM, MAX_CHIP_MEM)); - SendDlgItemMessage (hDlg, IDC_FASTMEM, TBM_SETRANGE, TRUE, MAKELONG (MIN_FAST_MEM, MAX_FAST_MEM)); - SendDlgItemMessage (hDlg, IDC_FASTMEM2, TBM_SETRANGE, TRUE, MAKELONG (MIN_FAST_MEM, MAX_FAST_MEM)); - SendDlgItemMessage (hDlg, IDC_SLOWMEM, TBM_SETRANGE, TRUE, MAKELONG (MIN_SLOW_MEM, MAX_SLOW_MEM)); - SendDlgItemMessage (hDlg, IDC_Z3FASTMEM, TBM_SETRANGE, TRUE, MAKELONG (MIN_Z3_MEM, MAX_Z3_MEM)); - SendDlgItemMessage (hDlg, IDC_Z3CHIPMEM, TBM_SETRANGE, TRUE, MAKELONG (MIN_Z3_MEM, MAX_Z3_CHIPMEM)); - SendDlgItemMessage (hDlg, IDC_MBMEM1, TBM_SETRANGE, TRUE, MAKELONG (MIN_MB_MEM, MAX_MBL_MEM)); - SendDlgItemMessage (hDlg, IDC_MBMEM2, TBM_SETRANGE, TRUE, MAKELONG (MIN_MB_MEM, MAX_MBH_MEM)); - CheckDlgButton(hDlg, IDC_FASTMEMAUTOCONFIG, workprefs.fastmem_autoconfig); - SendDlgItemMessage (hDlg, IDC_Z3MAPPING, CB_RESETCONTENT, 0, 0); - SendDlgItemMessage (hDlg, IDC_Z3MAPPING, CB_ADDSTRING, 0, (LPARAM)_T("Automatic (*)")); - SendDlgItemMessage(hDlg, IDC_Z3MAPPING, CB_ADDSTRING, 0, (LPARAM)_T("UAE")); - SendDlgItemMessage(hDlg, IDC_Z3MAPPING, CB_ADDSTRING, 0, (LPARAM)_T("Real")); - SendDlgItemMessage (hDlg, IDC_Z3MAPPING, CB_SETCURSEL, workprefs.z3_mapping_mode, 0); - SendDlgItemMessage (hDlg, IDC_CPUBOARD_TYPE, CB_RESETCONTENT, 0, 0); - for (int i = 0; cpuboards[i].name; i++) { - SendDlgItemMessage(hDlg, IDC_CPUBOARD_TYPE, CB_ADDSTRING, 0, (LPARAM)cpuboards[i].name); - } - updatecpuboardsubtypes(hDlg); - setcpuboardmemsize(hDlg); - recursive--; + SendDlgItemMessage(hDlg, IDC_RTG_BUFFERCNT, CB_RESETCONTENT, 0, 0); + WIN32GUI_LoadUIString(IDS_BUFFER_DOUBLE, tmp, sizeof tmp / sizeof (TCHAR)); + SendDlgItemMessage(hDlg, IDC_RTG_BUFFERCNT, CB_ADDSTRING, 0, (LPARAM)tmp); + WIN32GUI_LoadUIString(IDS_BUFFER_TRIPLE, tmp, sizeof tmp / sizeof (TCHAR)); + SendDlgItemMessage(hDlg, IDC_RTG_BUFFERCNT, CB_ADDSTRING, 0, (LPARAM)tmp); case WM_USER: recursive++; - fix_values_memorydlg (); - values_to_memorydlg (hDlg); - enable_for_memorydlg (hDlg); + values_to_expansiondlg (hDlg); + enable_for_expansiondlg (hDlg); recursive--; break; + case WM_HSCROLL: + workprefs.rtgmem_size = memsizes[msi_gfx[SendMessage (GetDlgItem (hDlg, IDC_P96MEM), TBM_GETPOS, 0, 0)]]; + values_to_expansiondlg(hDlg); + enable_for_expansiondlg(hDlg); + break; + case WM_COMMAND: - if (!recursive) { + { + if (recursive > 0) + break; recursive++; - if (HIWORD (wParam) == CBN_SELCHANGE || HIWORD (wParam) == CBN_KILLFOCUS) { + switch (LOWORD (wParam)) + { + case IDC_RTG_MATCH_DEPTH: + workprefs.win32_rtgmatchdepth = ischecked (hDlg, IDC_RTG_MATCH_DEPTH); + break; + case IDC_RTG_SCALE: + workprefs.gf[1].gfx_filter_autoscale = ischecked(hDlg, IDC_RTG_SCALE) ? RTG_MODE_SCALE : 0; + setchecked (hDlg, IDC_RTG_CENTER, false); + break; + case IDC_RTG_CENTER: + workprefs.gf[1].gfx_filter_autoscale = ischecked(hDlg, IDC_RTG_CENTER) ? RTG_MODE_CENTER : 0; + setchecked (hDlg, IDC_RTG_SCALE, false); + break; + case IDC_RTG_SCALE_ALLOW: + workprefs.win32_rtgallowscaling = ischecked (hDlg, IDC_RTG_SCALE_ALLOW); + break; + case IDC_RTG_VBINTERRUPT: + workprefs.rtg_hardwareinterrupt = ischecked (hDlg, IDC_RTG_VBINTERRUPT); + break; + case IDC_RTG_HWSPRITE: + workprefs.rtg_hardwaresprite = ischecked (hDlg, IDC_RTG_HWSPRITE); + break; + } + if (HIWORD (wParam) == CBN_SELENDOK || HIWORD (wParam) == CBN_KILLFOCUS || HIWORD (wParam) == CBN_EDITCHANGE) { + uae_u32 mask = workprefs.picasso96_modeflags; switch (LOWORD (wParam)) { - case IDC_Z3MAPPING: - v = SendDlgItemMessage (hDlg, IDC_Z3MAPPING, CB_GETCURSEL, 0, 0L); + case IDC_RTG_DISPLAYSELECT: + get_displays_combo (hDlg, true); + break; + case IDC_RTG_BUFFERCNT: + v = SendDlgItemMessage (hDlg, IDC_RTG_BUFFERCNT, CB_GETCURSEL, 0, 0L); if (v != CB_ERR) { - workprefs.z3_mapping_mode = v; + v++; + workprefs.gfx_apmode[1].gfx_backbuffers = v; } break; - case IDC_CPUBOARD_TYPE: - v = SendDlgItemMessage (hDlg, IDC_CPUBOARD_TYPE, CB_GETCURSEL, 0, 0L); - if (v != CB_ERR && v != workprefs.cpuboard_type) { - workprefs.cpuboard_type = v; - workprefs.cpuboard_subtype = 0; - workprefs.cpuboard_settings = 0; - updatecpuboardsubtypes(hDlg); - if (is_ppc_cpu(&workprefs)) { - workprefs.ppc_mode = 2; - } else if (workprefs.ppc_mode == 2) { - workprefs.ppc_mode = 0; - } - built_in_cpuboard_prefs(&workprefs); - setcpuboardmemsize(hDlg); - enable_for_memorydlg(hDlg); + case IDC_RTG_SCALE_ASPECTRATIO: + v = SendDlgItemMessage (hDlg, IDC_RTG_SCALE_ASPECTRATIO, CB_GETCURSEL, 0, 0L); + if (v != CB_ERR) { + if (v == 0) + workprefs.win32_rtgscaleaspectratio = 0; + else if (v == 1) + workprefs.win32_rtgscaleaspectratio = -1; + else if (v >= 2) + workprefs.win32_rtgscaleaspectratio = getaspectratio (v - 2); } break; - case IDC_CPUBOARD_SUBTYPE: - v = SendDlgItemMessage (hDlg, IDC_CPUBOARD_SUBTYPE, CB_GETCURSEL, 0, 0L); - if (v != CB_ERR && v != workprefs.cpuboard_subtype) { - workprefs.cpuboard_subtype = v; - workprefs.cpuboard_settings = 0; - if (is_ppc_cpu(&workprefs)) { - workprefs.ppc_mode = 2; - } else if (workprefs.ppc_mode == 2) { - workprefs.ppc_mode = 0; + case IDC_RTG_Z2Z3: + v = SendDlgItemMessage (hDlg, IDC_RTG_Z2Z3, CB_GETCURSEL, 0, 0L); + if (v != CB_ERR) { + if (v == 0) { + workprefs.rtgmem_type = 1; + workprefs.rtgmem_size = 0; + } else { + workprefs.rtgmem_type = v - 1; + if (workprefs.rtgmem_size == 0) + workprefs.rtgmem_size = 4096 * 1024; } - built_in_cpuboard_prefs(&workprefs); - setcpuboardmemsize(hDlg); - enable_for_memorydlg(hDlg); + enable_for_expansiondlg (hDlg); } break; - } - } - workprefs.fastmem_autoconfig = ischecked (hDlg, IDC_FASTMEMAUTOCONFIG); - for (int i = 0; cpuboard_settings_id[i] >= 0; i++) { - workprefs.cpuboard_settings &= ~(1 << i); - if (ischecked(hDlg, cpuboard_settings_id[i])) - workprefs.cpuboard_settings |= 1 << i; - } - recursive--; - } - break; - - case WM_HSCROLL: - workprefs.chipmem_size = memsizes[msi_chip[SendMessage (GetDlgItem (hDlg, IDC_CHIPMEM), TBM_GETPOS, 0, 0)]]; - workprefs.bogomem_size = memsizes[msi_bogo[SendMessage (GetDlgItem (hDlg, IDC_SLOWMEM), TBM_GETPOS, 0, 0)]]; - workprefs.fastmem_size = memsizes[msi_fast[SendMessage (GetDlgItem (hDlg, IDC_FASTMEM), TBM_GETPOS, 0, 0)]]; - workprefs.fastmem2_size = memsizes[msi_fast[SendMessage (GetDlgItem (hDlg, IDC_FASTMEM2), TBM_GETPOS, 0, 0)]]; - workprefs.z3fastmem_size = memsizes[msi_z3fast[SendMessage (GetDlgItem (hDlg, IDC_Z3FASTMEM), TBM_GETPOS, 0, 0)]]; - updatez3 (&workprefs.z3fastmem_size, &workprefs.z3fastmem2_size); - workprefs.z3chipmem_size = memsizes[msi_z3chip[SendMessage (GetDlgItem (hDlg, IDC_Z3CHIPMEM), TBM_GETPOS, 0, 0)]]; - workprefs.mbresmem_low_size = memsizes[msi_gfx[SendMessage (GetDlgItem (hDlg, IDC_MBMEM1), TBM_GETPOS, 0, 0)]]; - workprefs.mbresmem_high_size = memsizes[msi_gfx[SendMessage (GetDlgItem (hDlg, IDC_MBMEM2), TBM_GETPOS, 0, 0)]]; - workprefs.cpuboardmem1_size = memsizes[msi_cpuboard[SendMessage (GetDlgItem (hDlg, IDC_CPUBOARDMEM), TBM_GETPOS, 0, 0)]]; - fix_values_memorydlg (); - values_to_memorydlg (hDlg); - enable_for_memorydlg (hDlg); - break; - - } - return FALSE; -} - -static void addromfiles (UAEREG *fkey, HWND hDlg, DWORD d, const TCHAR *path, int type1, int type2) -{ - int idx; - TCHAR tmp[MAX_DPATH]; - TCHAR tmp2[MAX_DPATH]; - TCHAR seltmp[MAX_DPATH]; - struct romdata *rdx = NULL; - - SendDlgItemMessage(hDlg, d, CB_RESETCONTENT, 0, 0); - SendDlgItemMessage(hDlg, d, CB_ADDSTRING, 0, (LPARAM)_T("")); - if (path) - rdx = scan_single_rom (path); - idx = 0; - seltmp[0] = 0; - for (;fkey;) { - int size = sizeof (tmp) / sizeof (TCHAR); - int size2 = sizeof (tmp2) / sizeof (TCHAR); - if (!regenumstr (fkey, idx, tmp, &size, tmp2, &size2)) - break; - if (_tcslen (tmp) == 7 || _tcslen (tmp) == 13) { - int group = 0; - int subitem = 0; - int idx2 = _tstol (tmp + 4); - if (_tcslen (tmp) == 13) { - group = _tstol (tmp + 8); - subitem = _tstol (tmp + 11); - } - if (idx2 >= 0) { - struct romdata *rd = getromdatabyidgroup (idx2, group, subitem); - for (int i = 0; i < 2; i++) { - int type = i ? type2 : type1; - if (type) { - if (rd && ((((rd->type & ROMTYPE_GROUP_MASK) & (type & ROMTYPE_GROUP_MASK)) && ((rd->type & ROMTYPE_SUB_MASK) == (type & ROMTYPE_SUB_MASK) || !(type & ROMTYPE_SUB_MASK))) || - (rd->type & type) == ROMTYPE_NONE || (rd->type & type) == ROMTYPE_NOT)) { - getromname (rd, tmp); - if (SendDlgItemMessage (hDlg, d, CB_FINDSTRING, (WPARAM)-1, (LPARAM)tmp) < 0) - SendDlgItemMessage(hDlg, d, CB_ADDSTRING, 0, (LPARAM)tmp); - if (rd == rdx) - _tcscpy (seltmp, tmp); - break; - } + case IDC_RTG_8BIT: + v = SendDlgItemMessage (hDlg, IDC_RTG_8BIT, CB_GETCURSEL, 0, 0L); + if (v != CB_ERR) { + mask &= ~RGBFF_CLUT; + if (v == 1) + mask |= RGBFF_CLUT; + } + break; + case IDC_RTG_16BIT: + v = SendDlgItemMessage (hDlg, IDC_RTG_16BIT, CB_GETCURSEL, 0, 0L); + if (v != CB_ERR) { + mask &= ~(RGBFF_R5G6B5PC | RGBFF_R5G5B5PC | RGBFF_R5G6B5 | RGBFF_R5G5B5 | RGBFF_B5G6R5PC | RGBFF_B5G5R5PC); + if (v == 1) + mask |= RGBFF_R5G6B5PC | RGBFF_R5G6B5PC | RGBFF_R5G5B5PC | RGBFF_R5G6B5 | RGBFF_R5G5B5 | RGBFF_B5G6R5PC | RGBFF_B5G5R5PC; + if (v == 2) + mask |= RGBFF_R5G6B5PC; + if (v == 3) + mask |= RGBFF_R5G5B5PC; + if (v == 4) + mask |= RGBFF_R5G6B5; + if (v == 5) + mask |= RGBFF_R5G5B5; + if (v == 6) + mask |= RGBFF_B5G6R5PC; + if (v == 7) + mask |= RGBFF_B5G5R5PC; + } + break; + case IDC_RTG_24BIT: + v = SendDlgItemMessage (hDlg, IDC_RTG_24BIT, CB_GETCURSEL, 0, 0L); + if (v != CB_ERR) { + mask &= ~(RGBFF_R8G8B8 | RGBFF_B8G8R8); + if (v == 1) + mask |= RGBFF_R8G8B8 | RGBFF_B8G8R8; + if (v == 2) + mask |= RGBFF_R8G8B8; + if (v == 3) + mask |= RGBFF_B8G8R8; } - } - } - } - idx++; - } - if (seltmp[0]) - SendDlgItemMessage (hDlg, d, CB_SELECTSTRING, (WPARAM)-1, (LPARAM)seltmp); - else - SetDlgItemText(hDlg, d, path); -} - -static void getromfile (HWND hDlg, DWORD d, TCHAR *path, int size) -{ - LRESULT val = SendDlgItemMessage (hDlg, d, CB_GETCURSEL, 0, 0L); - if (val == CB_ERR) { - SendDlgItemMessage (hDlg, d, WM_GETTEXT, (WPARAM)size, (LPARAM)path); - } else { - TCHAR tmp1[MAX_DPATH]; - struct romdata *rd; - SendDlgItemMessage (hDlg, d, CB_GETLBTEXT, (WPARAM)val, (LPARAM)tmp1); - path[0] = 0; - rd = getromdatabyname (tmp1); - if (rd) { - struct romlist *rl = getromlistbyromdata(rd); - if (rd->configname) - _stprintf (path, _T(":%s"), rd->configname); - else if (rl) - _tcsncpy (path, rl->path, size); - } - } -} - -static const int expansion_settings_id[] = { IDC_EXPANSION_SETTING1, IDC_EXPANSION_SETTING2, -1 }; - -static void values_to_kickstartdlg_sub(HWND hDlg) -{ - SendDlgItemMessage(hDlg, IDC_CPUBOARDROMSUBSELECT, CB_RESETCONTENT, 0, 0); - ew(hDlg, IDC_CPUBOARDROMSUBSELECT, false); - - SendDlgItemMessage(hDlg, IDC_SCSIROMSUBSELECT, CB_RESETCONTENT, 0, 0); - const struct expansionromtype *er = &expansionroms[scsiromselected]; - const struct expansionsubromtype *srt = er->subtypes; - ew(hDlg, IDC_SCSIROMSUBSELECT, srt != NULL); - while (srt && srt->name) { - SendDlgItemMessage(hDlg, IDC_SCSIROMSUBSELECT, CB_ADDSTRING, 0, (LPARAM)srt->name); - srt++; - } - int index; - struct boardromconfig *brc = get_device_rom(&workprefs, expansionroms[scsiromselected].romtype, scsiromselectednum, &index); - if (brc) { - SendDlgItemMessage (hDlg, IDC_SCSIROMSUBSELECT, CB_SETCURSEL, brc->roms[index].subtype, 0); - SendDlgItemMessage (hDlg, IDC_SCSIROMID, CB_SETCURSEL, brc->roms[index].device_id, 0); - } else if (srt) { - SendDlgItemMessage (hDlg, IDC_SCSIROMSUBSELECT, CB_SETCURSEL, 0, 0); - SendDlgItemMessage (hDlg, IDC_SCSIROMID, CB_SETCURSEL, 0, 0); - } - if (er->zorro < 2 || er->singleonly) { - scsiromselectednum = 0; - SendDlgItemMessage (hDlg, IDC_SCSIROMSELECTNUM, CB_SETCURSEL, 0, 0); - } - ew(hDlg, IDC_SCSIROMSELECTNUM, er->zorro >= 2 && !er->singleonly); -} - -static void values_from_kickstartdlg (HWND hDlg) -{ - int index; - struct boardromconfig *brc; - TCHAR tmp[MAX_DPATH]; - - getromfile(hDlg, IDC_ROMFILE, workprefs.romfile, sizeof (workprefs.romfile) / sizeof (TCHAR)); - getromfile(hDlg, IDC_ROMFILE2, workprefs.romextfile, sizeof (workprefs.romextfile) / sizeof (TCHAR)); - getromfile(hDlg, IDC_CARTFILE, workprefs.cartfile, sizeof (workprefs.cartfile) / sizeof (TCHAR)); - - getromfile(hDlg, IDC_SCSIROMFILE, tmp, MAX_DPATH / sizeof (TCHAR)); - if (tmp[0]) { - const struct expansionromtype *ert = &expansionroms[scsiromselected]; - brc = get_device_rom_new(&workprefs, expansionroms[scsiromselected].romtype, scsiromselectednum, &index); - bool changed = _tcscmp(tmp, brc->roms[index].romfile) != 0; - getromfile(hDlg, IDC_SCSIROMFILE, brc->roms[index].romfile, MAX_DPATH / sizeof (TCHAR)); - brc->roms[index].autoboot_disabled = ischecked(hDlg, IDC_SCSIROMFILEAUTOBOOT); - - int v = SendDlgItemMessage (hDlg, IDC_SCSIROMID, CB_GETCURSEL, 0, 0L); - if (v != CB_ERR) - brc->roms[index].device_id = v; - - const struct expansionboardsettings *cbs = ert->settings; - if (cbs) { - for (int i = 0; cbs[i].name; i++) { - int id = expansion_settings_id[i]; - if (id < 0) break; - brc->roms[index].device_settings &= ~(1 << i); - if (ischecked(hDlg, id)) - brc->roms[index].device_settings |= 1 << i; + case IDC_RTG_32BIT: + v = SendDlgItemMessage (hDlg, IDC_RTG_32BIT, CB_GETCURSEL, 0, 0L); + if (v != CB_ERR) { + mask &= ~(RGBFF_A8R8G8B8 | RGBFF_A8B8G8R8 | RGBFF_R8G8B8A8 | RGBFF_B8G8R8A8); + if (v == 1) + mask |= RGBFF_A8R8G8B8 | RGBFF_A8B8G8R8 | RGBFF_R8G8B8A8 | RGBFF_B8G8R8A8; + if (v == 2) + mask |= RGBFF_A8R8G8B8; + if (v == 3) + mask |= RGBFF_A8B8G8R8; + if (v == 4) + mask |= RGBFF_R8G8B8A8; + if (v == 5) + mask |= RGBFF_B8G8R8A8; + } + break; + case IDC_RTG_VBLANKRATE: + tmp[0] = 0; + v = SendDlgItemMessage (hDlg, IDC_RTG_VBLANKRATE, CB_GETCURSEL, 0, 0L); + if (v != CB_ERR) { + if (v == 0) { + workprefs.win32_rtgvblankrate = 0; + } else if (v == 1) { + workprefs.win32_rtgvblankrate = -1; + } else { + v = SendDlgItemMessage (hDlg, IDC_RTG_VBLANKRATE, CB_GETLBTEXT, (WPARAM)v, (LPARAM)tmp); + } + } else { + v = SendDlgItemMessage (hDlg, IDC_RTG_VBLANKRATE, WM_GETTEXT, (WPARAM)sizeof tmp / sizeof (TCHAR), (LPARAM)tmp); + } + if (tmp[0]) + workprefs.win32_rtgvblankrate = _tstol (tmp); + break; + } + workprefs.picasso96_modeflags = mask; + values_to_expansiondlg (hDlg); } + recursive--; } - - v = SendDlgItemMessage (hDlg, IDC_SCSIROMSUBSELECT, CB_GETCURSEL, 0, 0L); - if (v != CB_ERR) - brc->roms[index].subtype = v; - - if (changed) - values_to_kickstartdlg_sub(hDlg); - } else { - brc = get_device_rom(&workprefs, expansionroms[scsiromselected].romtype, scsiromselectednum, &index); - clear_device_rom(&workprefs, expansionroms[scsiromselected].romtype, scsiromselectednum); - if (brc && brc->roms[index].romfile[0]) - values_to_kickstartdlg_sub(hDlg); - } - getromfile(hDlg, IDC_CPUBOARDROMFILE, tmp, sizeof(brc->roms[index].romfile) / sizeof(TCHAR)); - if (tmp[0]) { - brc = get_device_rom_new(&workprefs, ROMTYPE_CPUBOARD, 0, &index); - getromfile(hDlg, IDC_CPUBOARDROMFILE, brc->roms[index].romfile, sizeof(brc->roms[index].romfile) / sizeof(TCHAR)); - } else { - clear_device_rom(&workprefs, ROMTYPE_CPUBOARD, 0); + break; } + return FALSE; } -static void values_to_kickstartdlg_expansion_roms(HWND hDlg, UAEREG *fkey) +static INT_PTR CALLBACK MemoryDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) { - int index; - bool keyallocated = false; - struct boardromconfig *brc; + static int recursive = 0; + int v; - if (!fkey) { - fkey = regcreatetree(NULL, _T("DetectedROMs")); - keyallocated = true; - } - if (scsiromselected) { - const struct expansionromtype *ert = &expansionroms[scsiromselected]; - int romtype = ert->romtype; - int romtype_extra = ert->romtype_extra; + switch (msg) + { + case WM_INITDIALOG: + recursive++; + pages[MEMORY_ID] = hDlg; + currentpage = MEMORY_ID; + SendDlgItemMessage (hDlg, IDC_CHIPMEM, TBM_SETRANGE, TRUE, MAKELONG (MIN_CHIP_MEM, MAX_CHIP_MEM)); + SendDlgItemMessage (hDlg, IDC_FASTMEM, TBM_SETRANGE, TRUE, MAKELONG (MIN_FAST_MEM, MAX_FAST_MEM)); + SendDlgItemMessage (hDlg, IDC_FASTMEM2, TBM_SETRANGE, TRUE, MAKELONG (MIN_FAST_MEM, MAX_FAST_MEM)); + SendDlgItemMessage (hDlg, IDC_SLOWMEM, TBM_SETRANGE, TRUE, MAKELONG (MIN_SLOW_MEM, MAX_SLOW_MEM)); + SendDlgItemMessage (hDlg, IDC_Z3FASTMEM, TBM_SETRANGE, TRUE, MAKELONG (MIN_Z3_MEM, MAX_Z3_MEM)); + SendDlgItemMessage (hDlg, IDC_Z3CHIPMEM, TBM_SETRANGE, TRUE, MAKELONG (MIN_Z3_MEM, MAX_Z3_CHIPMEM)); + SendDlgItemMessage (hDlg, IDC_MBMEM1, TBM_SETRANGE, TRUE, MAKELONG (MIN_MB_MEM, MAX_MBL_MEM)); + SendDlgItemMessage (hDlg, IDC_MBMEM2, TBM_SETRANGE, TRUE, MAKELONG (MIN_MB_MEM, MAX_MBH_MEM)); + CheckDlgButton(hDlg, IDC_FASTMEMAUTOCONFIG, workprefs.fastmem_autoconfig); + SendDlgItemMessage (hDlg, IDC_Z3MAPPING, CB_RESETCONTENT, 0, 0); + SendDlgItemMessage (hDlg, IDC_Z3MAPPING, CB_ADDSTRING, 0, (LPARAM)_T("Automatic (*)")); + SendDlgItemMessage(hDlg, IDC_Z3MAPPING, CB_ADDSTRING, 0, (LPARAM)_T("UAE")); + SendDlgItemMessage(hDlg, IDC_Z3MAPPING, CB_ADDSTRING, 0, (LPARAM)_T("Real")); + SendDlgItemMessage (hDlg, IDC_Z3MAPPING, CB_SETCURSEL, workprefs.z3_mapping_mode, 0); + recursive--; - brc = get_device_rom(&workprefs, romtype, scsiromselectednum, &index); - if (brc && ert->subtypes) { - const struct expansionsubromtype *esrt = &ert->subtypes[brc->roms[index].subtype]; - if (esrt->romtype) { - romtype = esrt->romtype; - romtype_extra = 0; + case WM_USER: + recursive++; + fix_values_memorydlg (); + values_to_memorydlg (hDlg); + enable_for_memorydlg (hDlg); + recursive--; + break; + + case WM_COMMAND: + if (!recursive) { + recursive++; + if (HIWORD (wParam) == CBN_SELCHANGE || HIWORD (wParam) == CBN_KILLFOCUS) { + switch (LOWORD (wParam)) + { + case IDC_Z3MAPPING: + v = SendDlgItemMessage (hDlg, IDC_Z3MAPPING, CB_GETCURSEL, 0, 0L); + if (v != CB_ERR) { + workprefs.z3_mapping_mode = v; + } + break; + } } + workprefs.fastmem_autoconfig = ischecked (hDlg, IDC_FASTMEMAUTOCONFIG); + recursive--; } - addromfiles(fkey, hDlg, IDC_SCSIROMFILE, brc ? brc->roms[index].romfile : NULL, romtype, romtype_extra); - CheckDlgButton(hDlg, IDC_SCSIROMFILEAUTOBOOT, brc && brc->roms[index].autoboot_disabled); - } - if (keyallocated) - regclosetree(fkey); -} + break; -static void values_to_kickstartdlg_expansion_settings(HWND hDlg) -{ - int index; - struct boardromconfig *brc; - const struct expansionromtype *ert = &expansionroms[scsiromselected]; - brc = get_device_rom(&workprefs, expansionroms[scsiromselected].romtype, scsiromselectednum, &index); - if (brc) { - if (brc->roms[index].romfile[0]) - ew(hDlg, IDC_SCSIROMFILEAUTOBOOT, ert->autoboot_jumper); - } else { - if (brc) - brc->roms[index].autoboot_disabled = false; - ew(hDlg, IDC_SCSIROMFILEAUTOBOOT, FALSE); - setchecked(hDlg, IDC_SCSIROMFILEAUTOBOOT, false); - } - ew(hDlg, IDC_SCSIROMID, ert->id_jumper); + case WM_HSCROLL: + workprefs.chipmem_size = memsizes[msi_chip[SendMessage (GetDlgItem (hDlg, IDC_CHIPMEM), TBM_GETPOS, 0, 0)]]; + workprefs.bogomem_size = memsizes[msi_bogo[SendMessage (GetDlgItem (hDlg, IDC_SLOWMEM), TBM_GETPOS, 0, 0)]]; + workprefs.fastmem_size = memsizes[msi_fast[SendMessage (GetDlgItem (hDlg, IDC_FASTMEM), TBM_GETPOS, 0, 0)]]; + workprefs.fastmem2_size = memsizes[msi_fast[SendMessage (GetDlgItem (hDlg, IDC_FASTMEM2), TBM_GETPOS, 0, 0)]]; + workprefs.z3fastmem_size = memsizes[msi_z3fast[SendMessage (GetDlgItem (hDlg, IDC_Z3FASTMEM), TBM_GETPOS, 0, 0)]]; + updatez3 (&workprefs.z3fastmem_size, &workprefs.z3fastmem2_size); + workprefs.z3chipmem_size = memsizes[msi_z3chip[SendMessage (GetDlgItem (hDlg, IDC_Z3CHIPMEM), TBM_GETPOS, 0, 0)]]; + workprefs.mbresmem_low_size = memsizes[msi_gfx[SendMessage (GetDlgItem (hDlg, IDC_MBMEM1), TBM_GETPOS, 0, 0)]]; + workprefs.mbresmem_high_size = memsizes[msi_gfx[SendMessage (GetDlgItem (hDlg, IDC_MBMEM2), TBM_GETPOS, 0, 0)]]; + workprefs.cpuboardmem1_size = memsizes[msi_cpuboard[SendMessage (GetDlgItem (hDlg, IDC_CPUBOARDMEM), TBM_GETPOS, 0, 0)]]; + fix_values_memorydlg (); + values_to_memorydlg (hDlg); + enable_for_memorydlg (hDlg); + break; - const struct expansionboardsettings *cbs = ert->settings; - for (int i = 0; expansion_settings_id[i] >= 0; i++) { - hide(hDlg, expansion_settings_id[i], !(cbs && cbs[i].name)); - } - int i = 0; - if (cbs) { - for (i = 0; cbs[i].name; i++) { - int id = expansion_settings_id[i]; - if (id < 0) - break; - SetWindowText (GetDlgItem(hDlg, id), cbs[i].name); - setchecked(hDlg, id, (brc && (brc->roms[index].device_settings & (1 << i)))); - } - } - while (expansion_settings_id[i] >= 0) { - int id = expansion_settings_id[i]; - SetWindowText (GetDlgItem(hDlg, id), _T("-")); - i++; } + return FALSE; } static void values_to_kickstartdlg (HWND hDlg) { UAEREG *fkey; - int index; - struct boardromconfig *brc; fkey = regcreatetree (NULL, _T("DetectedROMs")); @@ -8917,31 +9225,23 @@ static void values_to_kickstartdlg (HWND hDlg) addromfiles (fkey, hDlg, IDC_CARTFILE, workprefs.cartfile, ROMTYPE_FREEZER | ROMTYPE_ARCADIAGAME | ROMTYPE_CD32CART, 0); - values_to_kickstartdlg_expansion_roms(hDlg, fkey); - values_to_kickstartdlg_expansion_settings(hDlg); - - if (workprefs.cpuboard_type) { - const struct cpuboardsubtype *cst = &cpuboards[workprefs.cpuboard_type].subtypes[workprefs.cpuboard_subtype]; - brc = get_device_rom(&workprefs, ROMTYPE_CPUBOARD, 0, &index); - addromfiles(fkey, hDlg, IDC_CPUBOARDROMFILE, brc ? brc->roms[index].romfile : NULL, - cst->romtype, cst->romtype_extra); - } else { - SendDlgItemMessage(hDlg, IDC_CPUBOARDROMFILE, CB_RESETCONTENT, 0, 0); - } - regclosetree(fkey); SetDlgItemText(hDlg, IDC_FLASHFILE, workprefs.flashfile); SetDlgItemText(hDlg, IDC_RTCFILE, workprefs.rtcfile); CheckDlgButton(hDlg, IDC_KICKSHIFTER, workprefs.kickshifter); CheckDlgButton(hDlg, IDC_MAPROM, workprefs.maprom); - gui_set_string_cursor(scsiromselect_table, hDlg, IDC_SCSIROMSELECT, scsiromselected); - values_to_kickstartdlg_sub(hDlg); +} + +static void values_from_kickstartdlg(HWND hDlg) +{ + getromfile(hDlg, IDC_ROMFILE, workprefs.romfile, sizeof(workprefs.romfile) / sizeof(TCHAR)); + getromfile(hDlg, IDC_ROMFILE2, workprefs.romextfile, sizeof(workprefs.romextfile) / sizeof(TCHAR)); + getromfile(hDlg, IDC_CARTFILE, workprefs.cartfile, sizeof(workprefs.cartfile) / sizeof(TCHAR)); } static void init_kickstart (HWND hDlg) { - static int first = -1; #if !defined(AUTOCONFIG) ew (hDlg, IDC_MAPROM), FALSE); #endif @@ -8958,69 +9258,6 @@ static void init_kickstart (HWND hDlg) ew (hDlg, IDC_CARTCHOOSER), FALSE); ew (hDlg, IDC_FLASHCHOOSER), FALSE); #endif - ew(hDlg, IDC_CPUBOARDROMFILE, workprefs.cpuboard_type != 0); - - SendDlgItemMessage(hDlg, IDC_SCSIROMSELECT, CB_RESETCONTENT, 0, 0); - scsiromselect_table[0] = -1; - for (int i = 0; expansionroms[i].name; i++) { - TCHAR name[256]; - if (expansionroms[i].romtype & ROMTYPE_CPUBOARD) - continue; - name[0] = 0; - int cnt = 0; - for (int j = 0; j < MAX_DUPLICATE_EXPANSION_BOARDS; j++) { - if (cfgfile_board_enabled(&workprefs, expansionroms[i].romtype, j)) { - cnt++; - } - } - if (cnt > 0) { - if (first < 0) - first = i; - } - if (cnt == 1) - _tcscat(name, _T("* ")); - else if (cnt > 1) - _stprintf(name + _tcslen(name), _T("[%d] "), cnt); - if (expansionroms[i].friendlymanufacturer) { - _tcscat(name, expansionroms[i].friendlymanufacturer); - _tcscat(name, _T(" ")); - } - _tcscat(name, expansionroms[i].friendlyname); - gui_add_string(scsiromselect_table, hDlg, IDC_SCSIROMSELECT, i, name); - } - SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTNUM, CB_RESETCONTENT, 0, 0); - for (int i = 0; i < MAX_DUPLICATE_EXPANSION_BOARDS; i++) { - TCHAR tmp[10]; - _stprintf(tmp, _T("%d"), i + 1); - SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTNUM, CB_ADDSTRING, 0, (LPARAM)tmp); - } - - int found = -1; - for (int i = 0; expansionroms[i].name; i++) { - int romtype = expansionroms[i].romtype; - if (romtype & ROMTYPE_CPUBOARD) - continue; - if (cfgfile_board_enabled(&workprefs, romtype, 0)) { - if (found == -1) - found = i; - else - found = -2; - } - } - if (scsiromselected < 0 && found < 0) - found = first; - if (found >= 0) { - scsiromselected = found; - gui_set_string_cursor(scsiromselect_table, hDlg, IDC_SCSIROMSELECT, scsiromselected); - } - SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTNUM, CB_SETCURSEL, scsiromselectednum, 0); - - SendDlgItemMessage(hDlg, IDC_SCSIROMID, CB_RESETCONTENT, 0, 0); - for (int i = 0; i < 8; i++) { - TCHAR tmp[10]; - _stprintf(tmp, _T("%d"), i); - SendDlgItemMessage(hDlg, IDC_SCSIROMID, CB_ADDSTRING, 0, (LPARAM)tmp); - } if (!regexiststree(NULL, _T("DetectedROMs"))) scan_roms (NULL, rp_isactive () ? 0 : 1); @@ -9052,14 +9289,6 @@ static void kickstartfilebuttons (HWND hDlg, WPARAM wParam, TCHAR *path) DiskSelection(hDlg, IDC_CARTFILE, 6, &workprefs, path); values_to_kickstartdlg (hDlg); break; - case IDC_SCSIROMCHOOSER: - DiskSelection(hDlg, IDC_SCSIROMFILE, 6, &workprefs, path); - values_to_kickstartdlg (hDlg); - break; - case IDC_CPUBOARDROMCHOOSER: - DiskSelection(hDlg, IDC_CPUBOARDROMFILE, 6, &workprefs, path); - values_to_kickstartdlg(hDlg); - break; } } @@ -9073,7 +9302,7 @@ static INT_PTR CALLBACK KickstartDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LP { case WM_INITDIALOG: { - int ids[] = { IDC_ROMFILE, IDC_ROMFILE2, IDC_CARTFILE, IDC_SCSIROMFILE, IDC_CPUBOARDROMFILE, -1 }; + int ids[] = { IDC_ROMFILE, IDC_ROMFILE2, IDC_CARTFILE, -1 }; pages[KICKSTART_ID] = hDlg; currentpage = KICKSTART_ID; init_kickstart (hDlg); @@ -9110,45 +9339,13 @@ static INT_PTR CALLBACK KickstartDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LP case IDC_ROMFILE: case IDC_ROMFILE2: case IDC_CARTFILE: - case IDC_SCSIROMFILE: - case IDC_SCSIROMID: - case IDC_CPUBOARDROMFILE: - case IDC_CPUBOARDROMSUBSELECT: values_from_kickstartdlg (hDlg); - values_to_kickstartdlg_expansion_settings(hDlg); - break; - case IDC_SCSIROMSUBSELECT: - values_from_kickstartdlg(hDlg); - values_to_kickstartdlg_expansion_roms(hDlg, NULL); - values_to_kickstartdlg_expansion_settings(hDlg); - break; - case IDC_SCSIROMSELECTNUM: - case IDC_SCSIROMSELECT: - val = SendDlgItemMessage (hDlg, IDC_SCSIROMSELECTNUM, CB_GETCURSEL, 0, 0); - if (val != CB_ERR) - scsiromselectednum = val; - val = gui_get_string_cursor(scsiromselect_table, hDlg, IDC_SCSIROMSELECT); - if (val != CB_ERR) { - scsiromselected = val; - values_to_kickstartdlg_expansion_roms(hDlg, NULL); - values_to_kickstartdlg_expansion_settings(hDlg); - values_to_kickstartdlg_sub(hDlg); - } break; } } kickstartfilebuttons (hDlg, wParam, NULL); switch (LOWORD (wParam)) { - case IDC_EXPANSION_SETTING1: - case IDC_EXPANSION_SETTING2: - values_from_kickstartdlg (hDlg); - break; - - case IDC_SCSIROMFILEAUTOBOOT: - values_from_kickstartdlg (hDlg); - break; - case IDC_FLASHFILE: GetWindowText (GetDlgItem (hDlg, IDC_FLASHFILE), tmp, sizeof (tmp) / sizeof (TCHAR)); _tcscpy (workprefs.flashfile, tmp); @@ -11005,16 +11202,18 @@ static void inithdcontroller (HWND hDlg, int ctype, int ctype_unit, int devtype) } ew(hDlg, IDC_HDF_CONTROLLER_UNIT, TRUE); } else if (ctype >= HD_CONTROLLER_TYPE_SCSI_FIRST && ctype <= HD_CONTROLLER_TYPE_SCSI_LAST) { + const struct expansionromtype *ert = get_unit_expansion_rom(ctype); SendDlgItemMessage (hDlg, IDC_HDF_CONTROLLER_UNIT, CB_ADDSTRING, 0, (LPARAM)_T("0")); SendDlgItemMessage (hDlg, IDC_HDF_CONTROLLER_UNIT, CB_ADDSTRING, 0, (LPARAM)_T("1")); - SendDlgItemMessage (hDlg, IDC_HDF_CONTROLLER_UNIT, CB_ADDSTRING, 0, (LPARAM)_T("2")); - SendDlgItemMessage (hDlg, IDC_HDF_CONTROLLER_UNIT, CB_ADDSTRING, 0, (LPARAM)_T("3")); - SendDlgItemMessage (hDlg, IDC_HDF_CONTROLLER_UNIT, CB_ADDSTRING, 0, (LPARAM)_T("4")); - SendDlgItemMessage (hDlg, IDC_HDF_CONTROLLER_UNIT, CB_ADDSTRING, 0, (LPARAM)_T("5")); - SendDlgItemMessage (hDlg, IDC_HDF_CONTROLLER_UNIT, CB_ADDSTRING, 0, (LPARAM)_T("6")); - const struct expansionromtype *ert = get_unit_expansion_rom(ctype); - if (devtype == UAEDEV_HDF && ert && !_tcscmp(ert->name, _T("a2091"))) - SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER_UNIT, CB_ADDSTRING, 0, (LPARAM)_T("XT")); + if (!ert || !(ert->deviceflags & EXPANSIONTYPE_SASI)) { + SendDlgItemMessage (hDlg, IDC_HDF_CONTROLLER_UNIT, CB_ADDSTRING, 0, (LPARAM)_T("2")); + SendDlgItemMessage (hDlg, IDC_HDF_CONTROLLER_UNIT, CB_ADDSTRING, 0, (LPARAM)_T("3")); + SendDlgItemMessage (hDlg, IDC_HDF_CONTROLLER_UNIT, CB_ADDSTRING, 0, (LPARAM)_T("4")); + SendDlgItemMessage (hDlg, IDC_HDF_CONTROLLER_UNIT, CB_ADDSTRING, 0, (LPARAM)_T("5")); + SendDlgItemMessage (hDlg, IDC_HDF_CONTROLLER_UNIT, CB_ADDSTRING, 0, (LPARAM)_T("6")); + if (devtype == UAEDEV_HDF && ert && !_tcscmp(ert->name, _T("a2091"))) + SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER_UNIT, CB_ADDSTRING, 0, (LPARAM)_T("XT")); + } ew(hDlg, IDC_HDF_CONTROLLER_UNIT, TRUE); } else { ew(hDlg, IDC_HDF_CONTROLLER_UNIT, FALSE); @@ -11031,7 +11230,8 @@ static void inithdcontroller (HWND hDlg, int ctype, int ctype_unit, int devtype) SendDlgItemMessage (hDlg, IDC_HDF_FEATURE_LEVEL, CB_ADDSTRING, 0, (LPARAM)_T("ATA-2+ Strict")); } else if (ctype >= HD_CONTROLLER_TYPE_SCSI_FIRST && ctype <= HD_CONTROLLER_TYPE_SCSI_LAST) { SendDlgItemMessage (hDlg, IDC_HDF_FEATURE_LEVEL, CB_ADDSTRING, 0, (LPARAM)_T("SCSI-1")); - SendDlgItemMessage (hDlg, IDC_HDF_FEATURE_LEVEL, CB_ADDSTRING, 0, (LPARAM)_T("SCSI-2")); + SendDlgItemMessage(hDlg, IDC_HDF_FEATURE_LEVEL, CB_ADDSTRING, 0, (LPARAM) _T("SCSI-2")); + SendDlgItemMessage(hDlg, IDC_HDF_FEATURE_LEVEL, CB_ADDSTRING, 0, (LPARAM) _T("SASI")); } } @@ -11129,8 +11329,8 @@ static void updatehdfinfo (HWND hDlg, bool force, bool defaults) } if (current_hfdlg.ci.controller_type >= HD_CONTROLLER_TYPE_IDE_FIRST && current_hfdlg.ci.controller_type <= HD_CONTROLLER_TYPE_IDE_LAST) { - if (!current_hfdlg.ci.unit_feature_level && bsize >= 4 * (uae_u64)0x40000000) - current_hfdlg.ci.unit_feature_level = 1; + if (current_hfdlg.ci.unit_feature_level == HD_LEVEL_ATA_1 && bsize >= 4 * (uae_u64)0x40000000) + current_hfdlg.ci.unit_feature_level = HD_LEVEL_ATA_2; } cyls = phys ? current_hfdlg.ci.pcyls : current_hfdlg.forcedcylinders; @@ -17267,7 +17467,8 @@ static void createTreeView (HWND hDlg) CN (MEMORY_ID, _T("ram")); CN (FLOPPY_ID, _T("floppy")); CN (HARDDISK_ID, _T("harddisk")); - CN (EXPANSION_ID, _T("expansion")); + CN(EXPANSION2_ID, _T("expansion2")); + CN(EXPANSION_ID, _T("expansion")); p2 = p = CreateFolderNode (TVhDlg, IDS_TREEVIEW_HOST, root, LOADSAVE_ID, CONFIG_TYPE_HOST, _T("configuration_host")); CN (DISPLAY_ID, _T("display")); @@ -18039,7 +18240,8 @@ static int GetSettings (int all_options, HWND hwnd) panelresource = getresource (IDD_PANEL); LOADSAVE_ID = init_page (IDD_LOADSAVE, IDI_FILE, IDS_LOADSAVE, LoadSaveDlgProc, NULL, _T("gui/configurations.htm"), IDC_CONFIGTREE); MEMORY_ID = init_page (IDD_MEMORY, IDI_MEMORY, IDS_MEMORY, MemoryDlgProc, NULL, _T("gui/ram.htm"), 0); - EXPANSION_ID = init_page (IDD_EXPANSION, IDI_EXPANSION, IDS_EXPANSION, ExpansionDlgProc, NULL, _T("gui/expansion.htm"), 0); + EXPANSION_ID = init_page(IDD_EXPANSION, IDI_EXPANSION, IDS_EXPANSION, ExpansionDlgProc, NULL, _T("gui/expansion.htm"), 0); + EXPANSION2_ID = init_page(IDD_EXPANSION2, IDI_EXPANSION, IDS_EXPANSION2, Expansion2DlgProc, NULL, _T("gui/expansion2.htm"), 0); KICKSTART_ID = init_page (IDD_KICKSTART, IDI_MEMORY, IDS_KICKSTART, KickstartDlgProc, NULL, _T("gui/rom.htm"), 0); CPU_ID = init_page (IDD_CPU, IDI_CPU, IDS_CPU, CPUDlgProc, NULL, _T("gui/cpu.htm"), 0); DISPLAY_ID = init_page (IDD_DISPLAY, IDI_DISPLAY, IDS_DISPLAY, DisplayDlgProc, NULL, _T("gui/display.htm"), 0); diff --git a/od-win32/winuae_msvc14/winuae_msvc.vcxproj b/od-win32/winuae_msvc14/winuae_msvc.vcxproj index ccc395e8..c0d52550 100644 --- a/od-win32/winuae_msvc14/winuae_msvc.vcxproj +++ b/od-win32/winuae_msvc14/winuae_msvc.vcxproj @@ -397,13 +397,13 @@ Neither false false - ..\..\include;..\..;..\;..\resources;..\osdep;..\sounddep;..\..\prowizard\include;..\..\slirp;..\..\ppc\pearpc;%(AdditionalIncludeDirectories) + ..\..\include;..\..;..\;..\resources;..\osdep;..\sounddep;..\..\prowizard\include;..\..\slirp;%(AdditionalIncludeDirectories) WINVER=0x0601;_WIN32_IE=0x0700;WIN32;UAE;WINUAE;%(PreprocessorDefinitions) true Sync - Default + EnableFastChecks MultiThreaded - false + true true StreamingSIMDExtensions2 Precise diff --git a/od-win32/winuae_msvc14/winuae_msvc.vcxproj.filters b/od-win32/winuae_msvc14/winuae_msvc.vcxproj.filters index 75e5cdc7..ea4cbcc4 100644 --- a/od-win32/winuae_msvc14/winuae_msvc.vcxproj.filters +++ b/od-win32/winuae_msvc14/winuae_msvc.vcxproj.filters @@ -56,6 +56,9 @@ {a238ed36-3d5f-4fd0-afd7-a34029119da7} + + {961c1680-65e6-445a-bf6e-82775255ef2d} + diff --git a/pci.cpp b/pci.cpp index fd4f95f1..839c1301 100644 --- a/pci.cpp +++ b/pci.cpp @@ -26,6 +26,7 @@ #include "newcpu.h" #include "uae.h" #include "rommgr.h" +#include "cpuboard.h" #include "qemuvga/qemuuaeglue.h" #include "qemuvga/queue.h" @@ -945,7 +946,9 @@ static void REGPARAM2 pci_bridge_bput(uaecptr addr, uae_u32 b) } if (pcib == bridges[PCI_BRIDGE_WILDFIRE]) { addr &= 15; - if (addr == 8) { + if (addr == 0) { + cpuboard_set_flash_unlocked((b & 4) != 0); + } else if (addr == 8) { pcib->config[2] = b; if (b & 1) { write_log(_T("Wildfire 68000 mode!\n")); diff --git a/rommgr.cpp b/rommgr.cpp index 6323f37e..f8c8546b 100644 --- a/rommgr.cpp +++ b/rommgr.cpp @@ -95,7 +95,7 @@ struct romdata *getromdatabypath (const TCHAR *path) return NULL; } -#define NEXT_ROM_ID 143 +#define NEXT_ROM_ID 144 static struct romheader romheaders[] = { { _T("Freezer Cartridges"), 1 }, @@ -336,7 +336,7 @@ static struct romdata roms[] = { 0xce270bc0, 0xe043c1aa,0x3bb06e06,0xd4dabff3,0x0a8c6317,0xabfef2bb }, ALTROMPN(92, 1, 1, 32768, ROMTYPE_ODD | ROMTYPE_8BIT, NULL, 0xa6023f20, 0xdfb048d6, 0xbdc03587, 0x241e8121, 0x26aba603, 0xd69b0238) ALTROMPN(92, 1, 2, 32768, ROMTYPE_EVEN | ROMTYPE_8BIT, NULL, 0x9635a9cd, 0x47578b27, 0xc4ba6e54, 0x891930dd, 0xcb4b6a45, 0x5d6b31b2) - { _T("Blizzard SCSI Kit IV"), 8, 5, 8, 5, _T("BSCSIIV\0"), 32768, 94, 0, 0, ROMTYPE_CPUBOARDEXT, 0, 0, NULL, + { _T("Blizzard SCSI Kit IV"), 8, 5, 8, 5, _T("BSCSIIV\0"), 32768, 94, 0, 0, ROMTYPE_BLIZKIT4, 0, 0, NULL, 0xf53a0fca, 0xefe17ca5,0x88c44a7f,0x0f8c62be,0x20f23278,0xcfe06727, NULL, _T("blizzard_scsi_kit_iv.rom") }, { _T("Fastlane"), 8, 5, 8, 5, _T("FASTLANE\0"), 20788, 102, 0, 0, ROMTYPE_FASTLANE, 0, 0, NULL, 0xe4f485a5, 0x20bf7de5,0x05e45d0a,0xc411cfd2,0x806d0fd8,0xe46276de, NULL, _T("fastlanez3.rom") }, @@ -369,7 +369,9 @@ static struct romdata roms[] = { { _T("GVP A3001 Series I"), 3, 3, 3, 3, _T("A3001SI\0"), 8192, 114, 0, 0, ROMTYPE_CB_A3001S1, 0, 0, NULL, 0xaaff7c65, 0x424cf3da,0xcc9da794,0x0ba74446,0x69dd1691,0x44ae87ee, NULL, NULL }, { _T("Kupke Golem 030"), 0, 0, 0, 0, _T("GOLEM030\0"), 8192, 126, 0, 0, ROMTYPE_CB_GOLEM030, 0, 0, NULL, - 0x05d473f4, 0x574ec567,0xcc67e06f,0x91dcecb9,0x8c204399,0x5fe2a09f, NULL, NULL }, + 0x05d473f4, 0x574ec567, 0xcc67e06f, 0x91dcecb9, 0x8c204399, 0x5fe2a09f, NULL, NULL }, + { _T("DKB WildFire"), 1, 1, 1, 1, _T("WILDFIRE\0"), 18352, 143, 0, 0, ROMTYPE_CB_DBK_WF, 0, 0, NULL, + 0xb2dae8c4, 0xcdfe2d96, 0xe44d4f8d, 0x3833a5e8, 0xb6c832fd, 0xc7b341a9, NULL, NULL }, { _T("Preferred Technologies Nexus"), 1, 0, 1, 0, _T("PTNEXUS\0"), 8192, 139, 0, 0, ROMTYPE_PTNEXUS, 0, 0, NULL, 0xf495879a, 0xa3bd0202, 0xe14aa5b6, 0x49d3ce88, 0x22975950, 0x6500dbc2, NULL, NULL }, @@ -728,7 +730,6 @@ static void addkey (uae_u8 *key, int size, const TCHAR *name) } keyring[i].key = key; keyring[i].size = size; - write_log (_T("ROM KEY '%s' %d bytes loaded\n"), name, size); } void addkeyfile (const TCHAR *path) @@ -1609,8 +1610,6 @@ int configure_rom (struct uae_prefs *p, const int *rom, int msg) _tcscpy (p->cartfile, path); if (rd->type & ROMTYPE_CPUBOARD) set_device_rom(p, path, ROMTYPE_CPUBOARD, 0); - if (rd->type & ROMTYPE_CPUBOARDEXT) - set_device_rom(p, path, ROMTYPE_CPUBOARDEXT, 0); return 1; } -- 2.47.3