From: Toni Wilen Date: Sun, 23 Nov 2014 15:19:09 +0000 (+0200) Subject: 1M chip address jumper emulation. X-Git-Tag: 3000~9 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=4fad22f12885ff803de663d19687d9fa884e78e8;p=francis%2Fwinuae.git 1M chip address jumper emulation. --- diff --git a/cfgfile.cpp b/cfgfile.cpp index 1e3dd3fa..8953218c 100644 --- a/cfgfile.cpp +++ b/cfgfile.cpp @@ -1488,6 +1488,7 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type) cfgfile_dwrite_bool (f, _T("ics_agnus"), p->cs_dipagnus); cfgfile_dwrite_bool (f, _T("cia_todbug"), p->cs_ciatodbug); cfgfile_dwrite_bool (f, _T("z3_autoconfig"), p->cs_z3autoconfig); + cfgfile_dwrite_bool (f, _T("1mchipjumper"), p->cs_1mchipjumper); cfgfile_dwrite (f, _T("chipset_hacks"), _T("0x%x"), p->cs_hacks); cfgfile_dwrite_str (f, _T("z3mapping"), z3mapping[p->z3_mapping_mode]); @@ -3659,6 +3660,7 @@ static int cfgfile_parse_hardware (struct uae_prefs *p, const TCHAR *option, TCH || cfgfile_yesno (option, value, _T("denise_noehb"), &p->cs_denisenoehb) || cfgfile_yesno (option, value, _T("ics_agnus"), &p->cs_dipagnus) || cfgfile_yesno (option, value, _T("z3_autoconfig"), &p->cs_z3autoconfig) + || cfgfile_yesno (option, value, _T("1mchipjumper"), &p->cs_1mchipjumper) || cfgfile_yesno (option, value, _T("agnus_bltbusybug"), &p->cs_agnusbltbusybug) || cfgfile_yesno (option, value, _T("fastmem_autoconfig"), &p->fastmem_autoconfig) || cfgfile_yesno (option, value, _T("gfxcard_hardware_vblank"), &p->rtg_hardwareinterrupt) @@ -5737,6 +5739,7 @@ static void buildin_default_prefs (struct uae_prefs *p) p->cs_df0idhw = 1; p->cs_resetwarning = 0; p->cs_ciatodbug = false; + p->cs_1mchipjumper = false; _tcscpy (p->romextfile, _T("")); _tcscpy (p->romextfile2, _T("")); diff --git a/custom.cpp b/custom.cpp index 1d5c39cb..a9d8b142 100644 --- a/custom.cpp +++ b/custom.cpp @@ -9207,6 +9207,7 @@ uae_u8 *restore_custom_extra (uae_u8 *src) currprefs.cs_ksmirror_e0 = changed_prefs.cs_ksmirror_e0 = RBB; currprefs.cs_resetwarning = changed_prefs.cs_resetwarning = RBB; currprefs.cs_z3autoconfig = changed_prefs.cs_z3autoconfig = RBB; + currprefs.cs_1mchipjumper = changed_prefs.cs_1mchipjumper = RBB; return src; } @@ -9259,6 +9260,7 @@ uae_u8 *save_custom_extra (int *len, uae_u8 *dstptr) SB (currprefs.cs_ksmirror_e0 ? 1 : 0); SB (currprefs.cs_resetwarning ? 1 : 0); SB (currprefs.cs_z3autoconfig ? 1 : 0); + SB (currprefs.cs_1mchipjumper ? 1 : 0); *len = dst - dstbak; return dstbak; diff --git a/include/options.h b/include/options.h index cbd991a5..b16ed659 100644 --- a/include/options.h +++ b/include/options.h @@ -467,6 +467,7 @@ struct uae_prefs { bool cs_agnusbltbusybug; bool cs_ciatodbug; bool cs_z3autoconfig; + bool cs_1mchipjumper; int cs_hacks; struct boardromconfig a2091rom; diff --git a/main.cpp b/main.cpp index 227cd6f9..f1429aed 100644 --- a/main.cpp +++ b/main.cpp @@ -586,6 +586,9 @@ void fixup_prefs (struct uae_prefs *p) p->cs_ramseyrev = 0x0f; } } + if (p->chipmem_size >= 0x100000) + p->cs_1mchipjumper = true; + /* Can't fit genlock and A2024 or Graffiti at the same time, * also Graffiti uses genlock audio bit as an enable signal */ diff --git a/memory.cpp b/memory.cpp index b9475b37..1bba5ef0 100644 --- a/memory.cpp +++ b/memory.cpp @@ -2074,9 +2074,11 @@ void map_overlay (int chip) if ((currprefs.chipset_mask & CSMASK_ECS_AGNUS) && bogomem_bank.allocated == 0) { int start = chipmem_bank.allocated >> 16; if (chipmem_bank.allocated < 0x100000) { - int dummy = (0x100000 - chipmem_bank.allocated) >> 16; - map_banks (&chipmem_dummy_bank, start, dummy, 0); - map_banks (&chipmem_dummy_bank, start + 16, dummy, 0); + if (currprefs.cs_1mchipjumper) { + int dummy = (0x100000 - chipmem_bank.allocated) >> 16; + map_banks (&chipmem_dummy_bank, start, dummy, 0); + map_banks (&chipmem_dummy_bank, start + 16, dummy, 0); + } } else if (chipmem_bank.allocated < 0x200000 && chipmem_bank.allocated > 0x100000) { int dummy = (0x200000 - chipmem_bank.allocated) >> 16; map_banks (&chipmem_dummy_bank, start, dummy, 0); diff --git a/od-win32/resources/resource.h b/od-win32/resources/resource.h index 61e480d0..644b3ef1 100644 --- a/od-win32/resources/resource.h +++ b/od-win32/resources/resource.h @@ -1082,6 +1082,7 @@ #define IDC_DBG_MEMINPUT 1753 #define IDC_CS_Z3AUTOCONFIG 1753 #define IDC_DBG_MEMDOWN 1754 +#define IDC_CS_1MCHIPJUMPER 1754 #define IDC_DBG_MEMUP 1755 #define IDC_DBG_MEM 1756 #define IDC_DBG_DASM 1757 diff --git a/od-win32/resources/winuae.rc b/od-win32/resources/winuae.rc index c779102c..a3b1c729 100644 --- a/od-win32/resources/winuae.rc +++ b/od-win32/resources/winuae.rc @@ -696,22 +696,22 @@ BEGIN "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,182,147,181,10 END -IDD_CHIPSET2 DIALOGEX 0, 0, 396, 296 +IDD_CHIPSET2 DIALOGEX 0, 0, 396, 305 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD FONT 8, "MS Sans Serif", 0, 0, 0x0 BEGIN CONTROL "Compatible Settings",IDC_CS_COMPATIBLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,6,234,10 - GROUPBOX "Battery Backed Up Real Time Clock",IDC_STATIC,1,22,393,31 + GROUPBOX "Battery Backed Up Real Time Clock",IDC_STATIC,1,22,394,31 CONTROL "None",IDC_CS_RTC1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,15,36,57,10 CONTROL "MSM6242B",IDC_CS_RTC2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,90,36,77,10 CONTROL "RF5C01A",IDC_CS_RTC3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,171,36,67,10 CONTROL "A2000 MSM6242B",IDC_CS_RTC4,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,242,36,78,10 EDITTEXT IDC_CS_RTCADJUST,325,34,64,13,ES_AUTOHSCROLL - GROUPBOX "CIA-A TOD Clock Source",IDC_STATIC,1,56,393,29 + GROUPBOX "CIA-A TOD Clock Source",IDC_STATIC,1,56,394,29 CONTROL "Vertical Sync",IDC_CS_CIAA_TOD1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,41,68,86,10 CONTROL "Power Supply 50Hz",IDC_CS_CIAA_TOD2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,133,68,109,10 CONTROL "Power Supply 60Hz",IDC_CS_CIAA_TOD3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,249,68,116,10 - GROUPBOX "Chipset Features",IDC_STATIC,0,88,393,110 + GROUPBOX "Chipset Features",IDC_STATIC,0,88,395,123 CONTROL "CIA ROM Overlay",IDC_CS_CIAOVERLAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,102,104,11 CONTROL "CD32 CD",IDC_CS_CD32CD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,116,104,11 CONTROL "CDTV CD",IDC_CS_CDTVCD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,105,11 @@ -731,21 +731,22 @@ BEGIN CONTROL "PCMCIA",IDC_CS_PCMCIA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,156,125,11 CONTROL "C00000 is Fast RAM",IDC_CS_SLOWISFAST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,170,125,11 CONTROL "A1000 Agnus (8361/8367)",IDC_CS_DIPAGNUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,184,125,11 - GROUPBOX "Internal SCSI Hardware",IDC_STATIC,0,201,393,45 - CONTROL "A3000 WD33C93 SCSI",IDC_CS_DMAC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,34,216,121,11 - CONTROL "CDTV WD33C93 SCSI",IDC_CS_CDTVSCSI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,34,229,121,11 - CONTROL "A4000T NCR53C710 SCSI",IDC_CS_DMAC2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,171,216,125,11 - GROUPBOX "Chipset Revision",IDC_STATIC,1,249,393,46 - CONTROL "Ramsey revision:",IDC_CS_RAMSEY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,34,261,97,11 - CONTROL "Fat Gary revision:",IDC_CS_FATGARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,34,275,97,11 - EDITTEXT IDC_CS_RAMSEYREV,136,260,45,13,ES_AUTOHSCROLL - EDITTEXT IDC_CS_FATGARYREV,136,275,45,13,ES_AUTOHSCROLL - CONTROL "Agnus/Alice revision:",IDC_CS_AGNUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,261,107,11 - CONTROL "Denise/Lisa revision:",IDC_CS_DENISE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,275,107,11 - EDITTEXT IDC_CS_AGNUSREV,311,260,45,13,ES_AUTOHSCROLL - EDITTEXT IDC_CS_DENISEREV,311,275,45,13,ES_AUTOHSCROLL + GROUPBOX "Internal SCSI Hardware",IDC_STATIC,0,212,395,45 + CONTROL "A3000 WD33C93 SCSI",IDC_CS_DMAC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,34,227,121,11 + CONTROL "CDTV WD33C93 SCSI",IDC_CS_CDTVSCSI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,34,240,121,11 + CONTROL "A4000T NCR53C710 SCSI",IDC_CS_DMAC2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,171,227,125,11 + GROUPBOX "Chipset Revision",IDC_STATIC,1,259,393,46 + CONTROL "Ramsey revision:",IDC_CS_RAMSEY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,34,275,97,11 + CONTROL "Fat Gary revision:",IDC_CS_FATGARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,34,289,97,11 + EDITTEXT IDC_CS_RAMSEYREV,136,274,45,13,ES_AUTOHSCROLL + EDITTEXT IDC_CS_FATGARYREV,136,288,45,13,ES_AUTOHSCROLL + CONTROL "Agnus/Alice revision:",IDC_CS_AGNUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,275,107,11 + CONTROL "Denise/Lisa revision:",IDC_CS_DENISE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,289,107,11 + EDITTEXT IDC_CS_AGNUSREV,311,274,45,13,ES_AUTOHSCROLL + EDITTEXT IDC_CS_DENISEREV,311,289,45,13,ES_AUTOHSCROLL CONTROL "Z3 Autoconfig",IDC_CS_Z3AUTOCONFIG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,184,104,11 CONTROL "CDTV-CR",IDC_CS_CDTVCR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,143,123,11 + CONTROL "1M Chip / 0.5M+0.5M",IDC_CS_1MCHIPJUMPER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,197,104,11 END IDD_AVIOUTPUT DIALOGEX 0, 0, 396, 260 diff --git a/od-win32/win32gui.cpp b/od-win32/win32gui.cpp index c183e3f4..ea1058dd 100644 --- a/od-win32/win32gui.cpp +++ b/od-win32/win32gui.cpp @@ -7218,6 +7218,7 @@ static void values_to_chipsetdlg2 (HWND hDlg) CheckDlgButton (hDlg, IDC_CS_Z3AUTOCONFIG, workprefs.cs_z3autoconfig); CheckDlgButton (hDlg, IDC_CS_IDE1, workprefs.cs_ide > 0 && (workprefs.cs_ide & 1)); CheckDlgButton (hDlg, IDC_CS_IDE2, workprefs.cs_ide > 0 && (workprefs.cs_ide & 2)); + CheckDlgButton (hDlg, IDC_CS_1MCHIPJUMPER, workprefs.cs_1mchipjumper || workprefs.chipmem_size >= 0x100000); txt[0] = 0; _stprintf (txt, _T("%d"), workprefs.cs_rtc_adjust); SetDlgItemText(hDlg, IDC_CS_RTCADJUST, txt); @@ -7295,6 +7296,7 @@ static void values_from_chipsetdlg2 (HWND hDlg, UINT msg, WPARAM wParam, LPARAM : (ischecked (hDlg, IDC_CS_CIAA_TOD2) ? 1 : 2); workprefs.cs_rtc = ischecked (hDlg, IDC_CS_RTC1) ? 0 : ischecked (hDlg, IDC_CS_RTC2) ? 1 : ischecked (hDlg, IDC_CS_RTC3) ? 2 : 3; + workprefs.cs_1mchipjumper = ischecked (hDlg, IDC_CS_1MCHIPJUMPER); if (workprefs.cs_rtc) { txt[0] = 0; @@ -7376,6 +7378,7 @@ static void enable_for_chipsetdlg2 (HWND hDlg) ew (hDlg, IDC_CS_RTC3, e); ew (hDlg, IDC_CS_RTC4, e); ew (hDlg, IDC_CS_RTCADJUST, e); + ew (hDlg, IDC_CS_1MCHIPJUMPER, e && workprefs.chipmem_size < 0x100000); } static INT_PTR CALLBACK ChipsetDlgProc2 (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)