Removed dire cache 'emulation'

This commit is contained in:
SarahW 2016-12-13 20:59:23 +00:00
commit f311c9e17f
8 changed files with 30 additions and 108 deletions

View file

@ -57,10 +57,8 @@ void outl(uint16_t port, uint32_t val);
FILE *romfopen(char *fn, char *mode); FILE *romfopen(char *fn, char *mode);
extern int shadowbios,shadowbios_write; extern int shadowbios,shadowbios_write;
extern int cache;
extern int mem_size; extern int mem_size;
extern int readlnum,writelnum; extern int readlnum,writelnum;
extern int memwaitstate;
/*Processor*/ /*Processor*/

View file

@ -50,7 +50,6 @@ static unsigned char isram[0x10000];
static uint8_t ff_array[0x1000]; static uint8_t ff_array[0x1000];
int mem_size; int mem_size;
int cache=4;
uint32_t biosmask; uint32_t biosmask;
int readlnum=0,writelnum=0; int readlnum=0,writelnum=0;
int cachesize=256; int cachesize=256;
@ -887,13 +886,6 @@ void mmu_invalidate(uint32_t addr)
flushmmucache_cr3(); 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) void addreadlookup(uint32_t virt, uint32_t phys)
{ {
// return; // 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) if (readlookup[readlnext]!=0xFFFFFFFF)
{ {
readlookup2[readlookup[readlnext]] = -1; readlookup2[readlookup[readlnext]] = -1;
@ -955,18 +936,6 @@ void addwritelookup(uint32_t virt, uint32_t phys)
return; 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) if (writelookup[writelnext] != -1)
{ {
page_lookup[writelookup[writelnext]] = NULL; 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) void mem_invalidate_range(uint32_t start_addr, uint32_t end_addr)
{ {
start_addr &= ~PAGE_MASK_MASK; start_addr &= ~PAGE_MASK_MASK;
@ -1817,7 +1763,6 @@ void mem_init()
rom = malloc(0x20000); rom = malloc(0x20000);
readlookup2 = malloc(1024 * 1024 * sizeof(uintptr_t)); readlookup2 = malloc(1024 * 1024 * sizeof(uintptr_t));
writelookup2 = malloc(1024 * 1024 * sizeof(uintptr_t)); writelookup2 = malloc(1024 * 1024 * sizeof(uintptr_t));
cachelookup2 = malloc(1024 * 1024);
biosmask = 0xffff; biosmask = 0xffff;
pages = malloc((((mem_size + 384) * 1024) >> 12) * sizeof(page_t)); pages = malloc((((mem_size + 384) * 1024) >> 12) * sizeof(page_t));
page_lookup = malloc((1 << 20) * sizeof(page_t *)); page_lookup = malloc((1 << 20) * sizeof(page_t *));

View file

@ -34,8 +34,6 @@ extern uint8_t romext[32768];
extern int readlnum,writelnum; extern int readlnum,writelnum;
extern int memspeed[11]; extern int memspeed[11];
extern int nopageerrors; extern int nopageerrors;
extern int cache;
extern int memwaitstate;
void mem_mapping_add(mem_mapping_t *mapping, void mem_mapping_add(mem_mapping_t *mapping,
uint32_t base, uint32_t base,

View file

@ -178,7 +178,6 @@ void pc_reset()
{ {
cpu_set(); cpu_set();
resetx86(); resetx86();
mem_updatecache();
//timer_reset(); //timer_reset();
dma_reset(); dma_reset();
fdc_reset(); fdc_reset();
@ -528,7 +527,6 @@ void speedchanged()
setpitclock(models[model].cpu[cpu_manufacturer].cpus[cpu].rspeed); setpitclock(models[model].cpu[cpu_manufacturer].cpus[cpu].rspeed);
else else
setpitclock(14318184.0); setpitclock(14318184.0);
mem_updatecache();
nvr_recalc(); nvr_recalc();
} }
@ -614,7 +612,6 @@ void loadconfig(char *fn)
if (p) strcpy(iso_path, p); if (p) strcpy(iso_path, p);
else strcpy(iso_path, ""); else strcpy(iso_path, "");
cache = config_get_int(NULL, "cache", 3);
cga_comp = config_get_int(NULL, "cga_composite", 0); cga_comp = config_get_int(NULL, "cga_composite", 0);
vid_resize = config_get_int(NULL, "vid_resize", 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, "sndcard", sound_card_current);
config_set_int(NULL, "cpu_speed", cpuspeed); config_set_int(NULL, "cpu_speed", cpuspeed);
config_set_int(NULL, "has_fpu", hasfpu); config_set_int(NULL, "has_fpu", hasfpu);
config_set_int(NULL, "cache", cache);
config_set_int(NULL, "cga_composite", cga_comp); config_set_int(NULL, "cga_composite", cga_comp);
config_set_string(NULL, "disc_a", discfns[0]); config_set_string(NULL, "disc_a", discfns[0]);
config_set_string(NULL, "disc_b", discfns[1]); config_set_string(NULL, "disc_b", discfns[1]);

View file

@ -57,13 +57,13 @@ BEGIN
END END
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 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Configure PCem" CAPTION "Configure PCem"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "OK",IDOK,64,384,50,14, WS_TABSTOP DEFPUSHBUTTON "OK",IDOK,64,364,50,14, WS_TABSTOP
PUSHBUTTON "Cancel",IDCANCEL,128,384,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_COMBO1,62,16,157,120,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_COMBOVID,62,36,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 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 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 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_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,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,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, 156, 40, 14, WS_TABSTOP
PUSHBUTTON "Configure", IDC_CONFIGURESND, 224, 176, 40, 14, WS_TABSTOP EDITTEXT IDC_MEMTEXT, 62, 172, 36, 14, ES_AUTOHSCROLL | ES_NUMBER
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, 172, 12, 14
CONTROL "", IDC_MEMSPIN, UPDOWN_CLASS, UDS_ALIGNRIGHT | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_SETBUDDYINT, 98, 192, 12, 14 LTEXT "MB", IDC_TEXT_MB, 98, 172, 40, 10
LTEXT "MB", IDC_TEXT_MB, 98, 192, 40, 10 CONTROL "CMS / Game Blaster",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,272,118,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,288,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,304,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,320,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,336,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,352,118,10
CONTROL "Voodoo Graphics",IDC_CHECKVOODOO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,372,118,10 PUSHBUTTON "Configure", IDC_CONFIGUREVOODOO, 224, 352, 40, 14, WS_TABSTOP
PUSHBUTTON "Configure", IDC_CONFIGUREVOODOO, 224, 372, 40, 14, WS_TABSTOP
LTEXT "Machine :",IDC_STATIC,15,16,40,10 LTEXT "Machine :",IDC_STATIC,15,16,40,10
LTEXT "Video :",IDC_STATIC,15,36,34,10 LTEXT "Video :",IDC_STATIC,15,36,34,10
LTEXT "CPU type :",IDC_STATIC,15,56,34,10 LTEXT "CPU type :",IDC_STATIC,15,56,34,10
LTEXT "CPU :",IDC_STATIC,15,76,34,10 LTEXT "CPU :",IDC_STATIC,15,76,34,10
LTEXT "Waitstates :",IDC_STATIC,15,116,40,10 LTEXT "Waitstates :",IDC_STATIC,15,116,40,10
LTEXT "Cache :",IDC_STATIC,15,136,40,10 LTEXT "Video speed :",IDC_STATIC,15,136,40,10
LTEXT "Video speed :",IDC_STATIC,15,156,40,10 LTEXT "Soundcard :",IDC_STATIC,15,156,40,10
LTEXT "Soundcard :",IDC_STATIC,15,176,40,10 LTEXT "Memory :",IDC_STATIC,15,176,40,10
LTEXT "Memory :",IDC_STATIC,15,196,40,10 LTEXT "Drive A: :",IDC_STATIC,15,196,40,10
LTEXT "Drive A: :",IDC_STATIC,15,216,40,10 LTEXT "Drive B: :",IDC_STATIC,15,216,40,10
LTEXT "Drive B: :",IDC_STATIC,15,236,40,10 COMBOBOX IDC_COMBODRA,62,196,157,120,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_COMBODRA,62,216,157,120,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_COMBODRB,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,236,40,10
LTEXT "Joystick :",IDC_STATIC,15,256,40,10 COMBOBOX IDC_COMBOJOY,62,236,157,120,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_COMBOJOY,62,256,157,120,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP DEFPUSHBUTTON "Joystick 1...",IDC_JOY1,16,252,50,14, WS_TABSTOP
DEFPUSHBUTTON "Joystick 1...",IDC_JOY1,16,272,50,14, WS_TABSTOP PUSHBUTTON "Joystick 2...",IDC_JOY2,80,252,50,14, WS_TABSTOP
PUSHBUTTON "Joystick 2...",IDC_JOY2,80,272,50,14, WS_TABSTOP DEFPUSHBUTTON "Joystick 3...",IDC_JOY3,144,252,50,14, WS_TABSTOP
DEFPUSHBUTTON "Joystick 3...",IDC_JOY3,144,272,50,14, WS_TABSTOP PUSHBUTTON "Joystick 4...",IDC_JOY4,208,252,50,14, WS_TABSTOP
PUSHBUTTON "Joystick 4...",IDC_JOY4,208,272,50,14, WS_TABSTOP
END END
HdConfDlg DIALOGEX 0, 0, 210, 312+4*16 HdConfDlg DIALOGEX 0, 0, 210, 312+4*16

View file

@ -33,7 +33,6 @@
#define IDC_COMBO386 1005 #define IDC_COMBO386 1005
#define IDC_COMBO486 1006 #define IDC_COMBO486 1006
#define IDC_COMBOSND 1007 #define IDC_COMBOSND 1007
#define IDC_COMBOCHC 1008
#define IDC_COMBOCPUM 1060 #define IDC_COMBOCPUM 1060
#define IDC_COMBOSPD 1061 #define IDC_COMBOSPD 1061
#define IDC_COMBODRA 1062 #define IDC_COMBODRA 1062

View file

@ -155,14 +155,6 @@ static BOOL CALLBACK config_dlgproc(HWND hdlg, UINT message, WPARAM wParam, LPAR
EnableWindow(h, TRUE); EnableWindow(h, TRUE);
SendMessage(h, BM_SETCHECK, ((cpu_flags & CPU_SUPPORTS_DYNAREC) && cpu_use_dynarec) || (cpu_flags & CPU_REQUIRES_DYNAREC), 0); 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); h = GetDlgItem(hdlg, IDC_COMBOSPD);
SendMessage(h, CB_ADDSTRING, 0, (LPARAM)(LPCSTR)"8-bit"); SendMessage(h, CB_ADDSTRING, 0, (LPARAM)(LPCSTR)"8-bit");
SendMessage(h, CB_ADDSTRING, 0, (LPARAM)(LPCSTR)"Slow 16-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 = temp_cpu;
cpu_set(); cpu_set();
h = GetDlgItem(hdlg, IDC_COMBOCHC);
cache=SendMessage(h, CB_GETCURSEL, 0, 0);
mem_updatecache();
h = GetDlgItem(hdlg, IDC_COMBOWS); h = GetDlgItem(hdlg, IDC_COMBOWS);
cpu_waitstates = SendMessage(h, CB_GETCURSEL, 0, 0); cpu_waitstates = SendMessage(h, CB_GETCURSEL, 0, 0);
cpu_update_waitstates(); cpu_update_waitstates();

View file

@ -56,7 +56,7 @@ static BOOL CALLBACK status_dlgproc(HWND hdlg, UINT message, WPARAM wParam, LPAR
#endif*/ #endif*/
segareads, segareads,
segawrites, segawrites,
clockrate - (sreadlnum*memwaitstate) - (swritelnum*memwaitstate) - scycles_lost, clockrate - scycles_lost,
pit_timer0_freq(), pit_timer0_freq(),
((double)main_time * 100.0) / status_diff, ((double)main_time * 100.0) / status_diff,
((double)main_time * 100.0) / timer_freq ((double)main_time * 100.0) / timer_freq