From f311c9e17fbf6b0e0f6478c1c6f896b95858b02c Mon Sep 17 00:00:00 2001 From: SarahW Date: Tue, 13 Dec 2016 20:59:23 +0000 Subject: [PATCH] Removed dire cache 'emulation' --- src/ibm.h | 2 -- src/mem.c | 55 -------------------------------------------- src/mem.h | 2 -- src/pc.c | 4 ---- src/pc.rc | 60 +++++++++++++++++++++++------------------------- src/resources.h | 1 - src/win-config.c | 12 ---------- src/win-status.c | 2 +- 8 files changed, 30 insertions(+), 108 deletions(-) diff --git a/src/ibm.h b/src/ibm.h index 7d756f9..ae213fe 100644 --- a/src/ibm.h +++ b/src/ibm.h @@ -57,10 +57,8 @@ void outl(uint16_t port, uint32_t val); FILE *romfopen(char *fn, char *mode); extern int shadowbios,shadowbios_write; -extern int cache; extern int mem_size; extern int readlnum,writelnum; -extern int memwaitstate; /*Processor*/ diff --git a/src/mem.c b/src/mem.c index 74daaaa..7ba4b37 100644 --- a/src/mem.c +++ b/src/mem.c @@ -50,7 +50,6 @@ static unsigned char isram[0x10000]; static uint8_t ff_array[0x1000]; int mem_size; -int cache=4; uint32_t biosmask; int readlnum=0,writelnum=0; int cachesize=256; @@ -887,13 +886,6 @@ void mmu_invalidate(uint32_t addr) flushmmucache_cr3(); } -int memspeed[11]={256,320,384,512,640,768,1024,1152,1280,1536,1920}; -int memwaitstate; - -static int cachelookup[256]; -static uint8_t *cachelookup2; -static int cachelnext; - void addreadlookup(uint32_t virt, uint32_t phys) { // return; @@ -913,17 +905,6 @@ void addreadlookup(uint32_t virt, uint32_t phys) } - if (!cachelookup2[phys >> 12]) - { - readlnum++; - cycles-=memwaitstate; - if (cachelookup[cachelnext] != 0xffffffff) - cachelookup2[cachelookup[cachelnext]] = 0; - cachelookup[cachelnext] = phys >> 12; - cachelookup2[phys >> 12] = 1; - cachelnext = (cachelnext + 1) & (cachesize - 1); - } - if (readlookup[readlnext]!=0xFFFFFFFF) { readlookup2[readlookup[readlnext]] = -1; @@ -955,18 +936,6 @@ void addwritelookup(uint32_t virt, uint32_t phys) return; } - if (!cachelookup2[phys >> 12]) - { - writelnum++; - cycles-=memwaitstate; - if (cachelookup[cachelnext] != 0xffffffff) - cachelookup2[cachelookup[cachelnext]] = 0; - cachelookup[cachelnext] = phys >> 12; - cachelookup2[phys >> 12] = 1; - cachelnext = (cachelnext + 1) & (cachesize - 1); - } - - cycles-=memwaitstate; if (writelookup[writelnext] != -1) { page_lookup[writelookup[writelnext]] = NULL; @@ -1540,29 +1509,6 @@ void mem_write_nulll(uint32_t addr, uint32_t val, void *p) { } -void mem_updatecache() -{ - flushmmucache(); - if (!is386) - { - cachesize=256; - memwaitstate=0; - return; - } - if (cpu_16bitbus) - memwaitstate = 512 * cpu_multi; - else - memwaitstate = 384 * cpu_multi; //memspeed[cpuspeed]; - switch (cache) - { - case 0: cachesize=32; break; - case 1: cachesize=64; break; - case 2: cachesize=128; break; - case 3: cachesize=256; break; - case 4: cachesize=256; memwaitstate=0; break; - } -} - void mem_invalidate_range(uint32_t start_addr, uint32_t end_addr) { start_addr &= ~PAGE_MASK_MASK; @@ -1817,7 +1763,6 @@ void mem_init() rom = malloc(0x20000); readlookup2 = malloc(1024 * 1024 * sizeof(uintptr_t)); writelookup2 = malloc(1024 * 1024 * sizeof(uintptr_t)); - cachelookup2 = malloc(1024 * 1024); biosmask = 0xffff; pages = malloc((((mem_size + 384) * 1024) >> 12) * sizeof(page_t)); page_lookup = malloc((1 << 20) * sizeof(page_t *)); diff --git a/src/mem.h b/src/mem.h index c9cf6e6..e642185 100644 --- a/src/mem.h +++ b/src/mem.h @@ -34,8 +34,6 @@ extern uint8_t romext[32768]; extern int readlnum,writelnum; extern int memspeed[11]; extern int nopageerrors; -extern int cache; -extern int memwaitstate; void mem_mapping_add(mem_mapping_t *mapping, uint32_t base, diff --git a/src/pc.c b/src/pc.c index c8e7b84..581cd0f 100644 --- a/src/pc.c +++ b/src/pc.c @@ -178,7 +178,6 @@ void pc_reset() { cpu_set(); resetx86(); - mem_updatecache(); //timer_reset(); dma_reset(); fdc_reset(); @@ -528,7 +527,6 @@ void speedchanged() setpitclock(models[model].cpu[cpu_manufacturer].cpus[cpu].rspeed); else setpitclock(14318184.0); - mem_updatecache(); nvr_recalc(); } @@ -614,7 +612,6 @@ void loadconfig(char *fn) if (p) strcpy(iso_path, p); else strcpy(iso_path, ""); - cache = config_get_int(NULL, "cache", 3); cga_comp = config_get_int(NULL, "cga_composite", 0); vid_resize = config_get_int(NULL, "vid_resize", 0); @@ -708,7 +705,6 @@ void saveconfig() config_set_int(NULL, "sndcard", sound_card_current); config_set_int(NULL, "cpu_speed", cpuspeed); config_set_int(NULL, "has_fpu", hasfpu); - config_set_int(NULL, "cache", cache); config_set_int(NULL, "cga_composite", cga_comp); config_set_string(NULL, "disc_a", discfns[0]); config_set_string(NULL, "disc_b", discfns[1]); diff --git a/src/pc.rc b/src/pc.rc index 83ddf15..e5d5e1a 100644 --- a/src/pc.rc +++ b/src/pc.rc @@ -57,13 +57,13 @@ BEGIN END END -ConfigureDlg DIALOGEX 0, 0, 232+40, 408 +ConfigureDlg DIALOGEX 0, 0, 232+40, 388 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Configure PCem" FONT 8, "MS Sans Serif" BEGIN - DEFPUSHBUTTON "OK",IDOK,64,384,50,14, WS_TABSTOP - PUSHBUTTON "Cancel",IDCANCEL,128,384,50,14, WS_TABSTOP + DEFPUSHBUTTON "OK",IDOK,64,364,50,14, WS_TABSTOP + PUSHBUTTON "Cancel",IDCANCEL,128,364,50,14, WS_TABSTOP COMBOBOX IDC_COMBO1,62,16,157,120,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_COMBOVID,62,36,157,120,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "Configure", IDC_CONFIGUREVID, 224, 36, 40, 14, WS_TABSTOP @@ -71,39 +71,37 @@ BEGIN COMBOBOX IDC_COMBO3,62,76,157,120,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP CONTROL "Dynamic Recompiler",IDC_CHECKDYNAREC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,96,118,10 COMBOBOX IDC_COMBOWS, 62,116,157,120,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_COMBOCHC,62,136,157,120,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_COMBOSPD,62,156,157,120,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_COMBOSND,62,176,157,120,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Configure", IDC_CONFIGURESND, 224, 176, 40, 14, WS_TABSTOP - EDITTEXT IDC_MEMTEXT, 62, 192, 36, 14, ES_AUTOHSCROLL | ES_NUMBER - CONTROL "", IDC_MEMSPIN, UPDOWN_CLASS, UDS_ALIGNRIGHT | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_SETBUDDYINT, 98, 192, 12, 14 - LTEXT "MB", IDC_TEXT_MB, 98, 192, 40, 10 - CONTROL "CMS / Game Blaster",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,292,118,10 - CONTROL "Gravis Ultrasound",IDC_CHECKGUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,308,118,10 - CONTROL "Innovation SSI-2001",IDC_CHECKSSI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,324,118,10 - CONTROL "Composite CGA",IDC_CHECK4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,340,118,10 - CONTROL "Synchronise time to host clock",IDC_CHECKSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,356,118,10 - CONTROL "Voodoo Graphics",IDC_CHECKVOODOO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,372,118,10 - PUSHBUTTON "Configure", IDC_CONFIGUREVOODOO, 224, 372, 40, 14, WS_TABSTOP + COMBOBOX IDC_COMBOSPD,62,136,157,120,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_COMBOSND,62,156,157,120,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Configure", IDC_CONFIGURESND, 224, 156, 40, 14, WS_TABSTOP + EDITTEXT IDC_MEMTEXT, 62, 172, 36, 14, ES_AUTOHSCROLL | ES_NUMBER + CONTROL "", IDC_MEMSPIN, UPDOWN_CLASS, UDS_ALIGNRIGHT | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_SETBUDDYINT, 98, 172, 12, 14 + LTEXT "MB", IDC_TEXT_MB, 98, 172, 40, 10 + CONTROL "CMS / Game Blaster",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,272,118,10 + CONTROL "Gravis Ultrasound",IDC_CHECKGUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,288,118,10 + CONTROL "Innovation SSI-2001",IDC_CHECKSSI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,304,118,10 + CONTROL "Composite CGA",IDC_CHECK4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,320,118,10 + CONTROL "Synchronise time to host clock",IDC_CHECKSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,336,118,10 + CONTROL "Voodoo Graphics",IDC_CHECKVOODOO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,352,118,10 + PUSHBUTTON "Configure", IDC_CONFIGUREVOODOO, 224, 352, 40, 14, WS_TABSTOP LTEXT "Machine :",IDC_STATIC,15,16,40,10 LTEXT "Video :",IDC_STATIC,15,36,34,10 LTEXT "CPU type :",IDC_STATIC,15,56,34,10 LTEXT "CPU :",IDC_STATIC,15,76,34,10 LTEXT "Waitstates :",IDC_STATIC,15,116,40,10 - LTEXT "Cache :",IDC_STATIC,15,136,40,10 - LTEXT "Video speed :",IDC_STATIC,15,156,40,10 - LTEXT "Soundcard :",IDC_STATIC,15,176,40,10 - LTEXT "Memory :",IDC_STATIC,15,196,40,10 - LTEXT "Drive A: :",IDC_STATIC,15,216,40,10 - LTEXT "Drive B: :",IDC_STATIC,15,236,40,10 - COMBOBOX IDC_COMBODRA,62,216,157,120,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_COMBODRB,62,236,157,120,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - LTEXT "Joystick :",IDC_STATIC,15,256,40,10 - COMBOBOX IDC_COMBOJOY,62,256,157,120,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - DEFPUSHBUTTON "Joystick 1...",IDC_JOY1,16,272,50,14, WS_TABSTOP - PUSHBUTTON "Joystick 2...",IDC_JOY2,80,272,50,14, WS_TABSTOP - DEFPUSHBUTTON "Joystick 3...",IDC_JOY3,144,272,50,14, WS_TABSTOP - PUSHBUTTON "Joystick 4...",IDC_JOY4,208,272,50,14, WS_TABSTOP + LTEXT "Video speed :",IDC_STATIC,15,136,40,10 + LTEXT "Soundcard :",IDC_STATIC,15,156,40,10 + LTEXT "Memory :",IDC_STATIC,15,176,40,10 + LTEXT "Drive A: :",IDC_STATIC,15,196,40,10 + LTEXT "Drive B: :",IDC_STATIC,15,216,40,10 + COMBOBOX IDC_COMBODRA,62,196,157,120,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_COMBODRB,62,216,157,120,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + LTEXT "Joystick :",IDC_STATIC,15,236,40,10 + COMBOBOX IDC_COMBOJOY,62,236,157,120,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Joystick 1...",IDC_JOY1,16,252,50,14, WS_TABSTOP + PUSHBUTTON "Joystick 2...",IDC_JOY2,80,252,50,14, WS_TABSTOP + DEFPUSHBUTTON "Joystick 3...",IDC_JOY3,144,252,50,14, WS_TABSTOP + PUSHBUTTON "Joystick 4...",IDC_JOY4,208,252,50,14, WS_TABSTOP END HdConfDlg DIALOGEX 0, 0, 210, 312+4*16 diff --git a/src/resources.h b/src/resources.h index 717efd3..3ac4583 100644 --- a/src/resources.h +++ b/src/resources.h @@ -33,7 +33,6 @@ #define IDC_COMBO386 1005 #define IDC_COMBO486 1006 #define IDC_COMBOSND 1007 -#define IDC_COMBOCHC 1008 #define IDC_COMBOCPUM 1060 #define IDC_COMBOSPD 1061 #define IDC_COMBODRA 1062 diff --git a/src/win-config.c b/src/win-config.c index 90d610c..62105e9 100644 --- a/src/win-config.c +++ b/src/win-config.c @@ -155,14 +155,6 @@ static BOOL CALLBACK config_dlgproc(HWND hdlg, UINT message, WPARAM wParam, LPAR EnableWindow(h, TRUE); SendMessage(h, BM_SETCHECK, ((cpu_flags & CPU_SUPPORTS_DYNAREC) && cpu_use_dynarec) || (cpu_flags & CPU_REQUIRES_DYNAREC), 0); - h = GetDlgItem(hdlg, IDC_COMBOCHC); - SendMessage(h, CB_ADDSTRING, 0, (LPARAM)(LPCSTR)"A little"); - SendMessage(h, CB_ADDSTRING, 0, (LPARAM)(LPCSTR)"A bit"); - SendMessage(h, CB_ADDSTRING, 0, (LPARAM)(LPCSTR)"Some"); - SendMessage(h, CB_ADDSTRING, 0, (LPARAM)(LPCSTR)"A lot"); - SendMessage(h, CB_ADDSTRING, 0, (LPARAM)(LPCSTR)"Infinite"); - SendMessage(h, CB_SETCURSEL, cache, 0); - h = GetDlgItem(hdlg, IDC_COMBOSPD); SendMessage(h, CB_ADDSTRING, 0, (LPARAM)(LPCSTR)"8-bit"); SendMessage(h, CB_ADDSTRING, 0, (LPARAM)(LPCSTR)"Slow 16-bit"); @@ -363,10 +355,6 @@ static BOOL CALLBACK config_dlgproc(HWND hdlg, UINT message, WPARAM wParam, LPAR cpu = temp_cpu; cpu_set(); - h = GetDlgItem(hdlg, IDC_COMBOCHC); - cache=SendMessage(h, CB_GETCURSEL, 0, 0); - mem_updatecache(); - h = GetDlgItem(hdlg, IDC_COMBOWS); cpu_waitstates = SendMessage(h, CB_GETCURSEL, 0, 0); cpu_update_waitstates(); diff --git a/src/win-status.c b/src/win-status.c index d930bd2..5bbb911 100644 --- a/src/win-status.c +++ b/src/win-status.c @@ -56,7 +56,7 @@ static BOOL CALLBACK status_dlgproc(HWND hdlg, UINT message, WPARAM wParam, LPAR #endif*/ segareads, segawrites, - clockrate - (sreadlnum*memwaitstate) - (swritelnum*memwaitstate) - scycles_lost, + clockrate - scycles_lost, pit_timer0_freq(), ((double)main_time * 100.0) / status_diff, ((double)main_time * 100.0) / timer_freq