cfgfile_write (f, "comp_flushmode=%s\n", flushmode[p->comp_hardflush]);
cfgfile_write (f, "compforcesettings=%s\n", p->compforcesettings ? "true" : "false");
cfgfile_write (f, "compfpu=%s\n", p->compfpu ? "true" : "false");
+ cfgfile_write (f, "fpu_strict=%s\n", p->fpu_strict ? "true" : "false");
cfgfile_write (f, "comp_midopt=%s\n", p->comp_midopt ? "true" : "false");
cfgfile_write (f, "comp_lowopt=%s\n", p->comp_lowopt ? "true" : "false");
cfgfile_write (f, "avoid_cmov=%s\n", p->avoid_cmov ? "true" : "false" );
|| cfgfile_yesno (option, value, "comp_oldsegv", &p->comp_oldsegv)
|| cfgfile_yesno (option, value, "compforcesettings", &p->compforcesettings)
|| cfgfile_yesno (option, value, "compfpu", &p->compfpu)
+ || cfgfile_yesno (option, value, "fpu_strict", &p->fpu_strict)
|| cfgfile_yesno (option, value, "comp_midopt", &p->comp_midopt)
|| cfgfile_yesno (option, value, "comp_lowopt", &p->comp_lowopt)
|| cfgfile_yesno (option, value, "scsi", &p->scsi))
p->comp_constjump = 1;
p->comp_oldsegv = 0;
p->compfpu = 1;
+ p->fpu_strict = 0;
p->compforcesettings = 0;
p->cachesize = 0;
p->avoid_cmov = 0;
CIA_update ();
ciaasdr = val;
if (ciaacra & 0x40) {
- if (!kback && (ciaacra & 0x41) == 0x41)
- ciaasdr_cnt = 8 * 2;
kback = 1;
} else {
ciaasdr_cnt = 0;
- if ((ciaacra & 0x41) == 0x41)
- ciaasdr_cnt = 8 * 2;
}
+ if ((ciaacra & 0x41) == 0x41 && ciaasdr_cnt == 0)
+ ciaasdr_cnt = 8 * 2;
CIA_calctimers ();
break;
case 13:
case 12:
CIA_update ();
ciabsdr = val;
- if ((ciabcra & 0x41) == 0x41)
- ciabsdr_cnt = 8 * 2;
if ((ciabcra & 0x40) == 0)
ciabsdr_cnt = 0;
+ if ((ciabcra & 0x41) == 0x41 && ciabsdr_cnt == 0)
+ ciabsdr_cnt = 8 * 2;
CIA_calctimers ();
break;
case 13:
/* because both operands should be SINGLE precision, too */
case 0x60: /* FSDIV */
fdiv_rr(dreg,sreg);
+ if (!currprefs.fpu_strict) /* faster, but less strict rounding */
+ break;
#if USE_X86_FPUCW
if ((regs.fpcr & 0xC0) == 0x40) /* if SINGLE precision */
break;
#endif
- fmovs_mr((uae_u32)temp_fp,dreg);
- fmovs_rm(dreg,(uae_u32)temp_fp);
+ fcuts_r(dreg);
break;
case 0x25: /* FREM */
frem1_rr(dreg,sreg);
/* because both operands should be SINGLE precision, too */
case 0x63: /* FSMUL */
fmul_rr(dreg,sreg);
+ if (!currprefs.fpu_strict) /* faster, but less strict rounding */
+ break;
#if USE_X86_FPUCW
if ((regs.fpcr & 0xC0) == 0x40) /* if SINGLE precision */
break;
#endif
- fmovs_mr((uae_u32)temp_fp,dreg);
- fmovs_rm(dreg,(uae_u32)temp_fp);
+ fcuts_r(dreg);
break;
case 0x28: /* FSUB */
fsub_rr(dreg,sreg);
fmov_rr(FP_RESULT,sreg);
return;
case 0x40: /* FSMOVE */
- if (prec == 1) {
+ if (prec == 1 || !currprefs.fpu_strict) {
if (sreg != dreg) /* no <EA> */
fmov_rr(dreg,sreg);
} else {
break;
case 0x41: /* FSSQRT */
fsqrt_rr(dreg,sreg);
+ if (!currprefs.fpu_strict) /* faster, but less strict rounding */
+ break;
#if USE_X86_FPUCW
if ((regs.fpcr & 0xC0) == 0x40) /* if SINGLE precision */
break;
#endif
- fmovs_mr((uae_u32)temp_fp,dreg);
- fmovs_rm(dreg,(uae_u32)temp_fp);
+ fcuts_r(dreg);
break;
case 0x44: /* FDMOVE */
- if (prec) {
+ if (prec || !currprefs.fpu_strict) {
if (sreg != dreg) /* no <EA> */
fmov_rr(dreg,sreg);
} else {
}
break;
case 0x45: /* FDSQRT */
+ if (!currprefs.fpu_strict) { /* faster, but less strict rounding */
+ fsqrt_rr(dreg,sreg);
+ break;
+ }
#if USE_X86_FPUCW
if (regs.fpcr & 0xC0) { /* if we don't have EXTENDED precision */
if ((regs.fpcr & 0xC0) == 0x80) /* if we have DOUBLE */
}
#endif /* in case of EXTENDED precision, just reduce the result to DOUBLE */
fsqrt_rr(dreg,sreg);
- fmov_mr((uae_u32)temp_fp,dreg);
- fmov_rm(dreg,(uae_u32)temp_fp);
+ fcut_r(dreg);
break;
case 0x58: /* FSABS */
fabs_rr(dreg,sreg);
- if (prec != 1) {
- fmovs_mr((uae_u32)temp_fp,dreg);
- fmovs_rm(dreg,(uae_u32)temp_fp);
- }
+ if (prec != 1 && currprefs.fpu_strict)
+ fcuts_r(dreg);
break;
case 0x5a: /* FSNEG */
fneg_rr(dreg,sreg);
- if (prec != 1) {
- fmovs_mr((uae_u32)temp_fp,dreg);
- fmovs_rm(dreg,(uae_u32)temp_fp);
- }
+ if (prec != 1 && currprefs.fpu_strict)
+ fcuts_r(dreg);
break;
case 0x5c: /* FDABS */
fabs_rr(dreg,sreg);
- if (!prec) {
- fmov_mr((uae_u32)temp_fp,dreg);
- fmov_rm(dreg,(uae_u32)temp_fp);
- }
+ if (!prec && currprefs.fpu_strict)
+ fcut_r(dreg);
break;
case 0x5e: /* FDNEG */
fneg_rr(dreg,sreg);
- if (!prec) {
- fmov_mr((uae_u32)temp_fp,dreg);
- fmov_rm(dreg,(uae_u32)temp_fp);
- }
+ if (!prec && currprefs.fpu_strict)
+ fcut_r(dreg);
break;
case 0x62: /* FSADD */
fadd_rr(dreg,sreg);
+ if (!currprefs.fpu_strict) /* faster, but less strict rounding */
+ break;
#if USE_X86_FPUCW
if ((regs.fpcr & 0xC0) == 0x40) /* if SINGLE precision */
break;
#endif
- fmovs_mr((uae_u32)temp_fp,dreg);
- fmovs_rm(dreg,(uae_u32)temp_fp);
+ fcuts_r(dreg);
break;
case 0x64: /* FDDIV */
+ if (!currprefs.fpu_strict) { /* faster, but less strict rounding */
+ fdiv_rr(dreg,sreg);
+ break;
+ }
#if USE_X86_FPUCW
if (regs.fpcr & 0xC0) { /* if we don't have EXTENDED precision */
if ((regs.fpcr & 0xC0) == 0x80) /* if we have DOUBLE */
}
#endif /* in case of EXTENDED precision, just reduce the result to DOUBLE */
fdiv_rr(dreg,sreg);
- fmov_mr((uae_u32)temp_fp,dreg);
- fmov_rm(dreg,(uae_u32)temp_fp);
+ fcut_r(dreg);
break;
case 0x66: /* FDADD */
+ if (!currprefs.fpu_strict) { /* faster, but less strict rounding */
+ fadd_rr(dreg,sreg);
+ break;
+ }
#if USE_X86_FPUCW
if (regs.fpcr & 0xC0) { /* if we don't have EXTENDED precision */
if ((regs.fpcr & 0xC0) == 0x80) /* if we have DOUBLE */
}
#endif /* in case of EXTENDED precision, just reduce the result to DOUBLE */
fadd_rr(dreg,sreg);
- fmov_mr((uae_u32)temp_fp,dreg);
- fmov_rm(dreg,(uae_u32)temp_fp);
+ fcut_r(dreg);
break;
case 0x67: /* FDMUL */
+ if (!currprefs.fpu_strict) { /* faster, but less strict rounding */
+ fmul_rr(dreg,sreg);
+ break;
+ }
#if USE_X86_FPUCW
if (regs.fpcr & 0xC0) { /* if we don't have EXTENDED precision */
if ((regs.fpcr & 0xC0) == 0x80) /* if we have DOUBLE */
}
#endif /* in case of EXTENDED precision, just reduce the result to DOUBLE */
fmul_rr(dreg,sreg);
- fmov_mr((uae_u32)temp_fp,dreg);
- fmov_rm(dreg,(uae_u32)temp_fp);
+ fcut_r(dreg);
break;
case 0x68: /* FSSUB */
fsub_rr(dreg,sreg);
+ if (!currprefs.fpu_strict) /* faster, but less strict rounding */
+ break;
#if USE_X86_FPUCW
if ((regs.fpcr & 0xC0) == 0x40) /* if SINGLE precision */
break;
#endif
- fmovs_mr((uae_u32)temp_fp,dreg);
- fmovs_rm(dreg,(uae_u32)temp_fp);
+ fcuts_r(dreg);
break;
case 0x6c: /* FDSUB */
+ if (!currprefs.fpu_strict) { /* faster, but less strict rounding */
+ fsub_rr(dreg,sreg);
+ break;
+ }
#if USE_X86_FPUCW
if (regs.fpcr & 0xC0) { /* if we don't have EXTENDED precision */
if ((regs.fpcr & 0xC0) == 0x80) /* if we have DOUBLE */
}
#endif /* in case of EXTENDED precision, just reduce the result to DOUBLE */
fsub_rr(dreg,sreg);
- fmov_mr((uae_u32)temp_fp,dreg);
- fmov_rm(dreg,(uae_u32)temp_fp);
+ fcut_r(dreg);
break;
default:
FAIL(1);
}
LENDFUNC(NONE,WRITE,2,raw_fmovs_mr,(MEMW m, FR r))
+LOWFUNC(NONE,NONE,1,raw_fcuts_r,(FRW r))
+{
+ make_tos(r); /* TOS = r */
+ emit_byte(0x83);
+ emit_byte(0xc4);
+ emit_byte(0xfc); /* add -4 to esp */
+ emit_byte(0xd9);
+ emit_byte(0x1c);
+ emit_byte(0x24); /* fstp store r as SINGLE to [esp] and pop */
+ emit_byte(0xd9);
+ emit_byte(0x04);
+ emit_byte(0x24); /* fld load r as SINGLE from [esp] */
+ emit_byte(0x83);
+ emit_byte(0xc4);
+ emit_byte(0x04); /* add +4 to esp */
+}
+LENDFUNC(NONE,NONE,1,raw_fcuts_r,(FRW r))
+
+LOWFUNC(NONE,NONE,1,raw_fcut_r,(FRW r))
+{
+ make_tos(r); /* TOS = r */
+ emit_byte(0x83);
+ emit_byte(0xc4);
+ emit_byte(0xf8); /* add -8 to esp */
+ emit_byte(0xdd);
+ emit_byte(0x1c);
+ emit_byte(0x24); /* fstp store r as DOUBLE to [esp] and pop */
+ emit_byte(0xdd);
+ emit_byte(0x04);
+ emit_byte(0x24); /* fld load r as DOUBLE from [esp] */
+ emit_byte(0x83);
+ emit_byte(0xc4);
+ emit_byte(0x08); /* add +8 to esp */
+}
+LENDFUNC(NONE,NONE,1,raw_fcut_r,(FRW r))
+
LOWFUNC(NONE,READ,2,raw_fmovl_ri,(FW r, IMMS i))
{
emit_byte(0x68);
}
MENDFUNC(2,fmovs_mr,(MEMW m, FR r))
+MIDFUNC(1,fcuts_r,(FRW r))
+{
+ r=f_rmw(r);
+ raw_fcuts_r(r);
+ f_unlock(r);
+}
+MENDFUNC(1,fcuts_r,(FRW r))
+
+MIDFUNC(1,fcut_r,(FRW r))
+{
+ r=f_rmw(r);
+ raw_fcut_r(r);
+ f_unlock(r);
+}
+MENDFUNC(1,fcut_r,(FRW r))
+
MIDFUNC(2,fmovl_ri,(FW r, IMMS i))
{
r=f_writereg(r);
decide_fetch (hpos);
/* fix for "bitplane dma fetch at the same time while updating BPLxPTL" */
/* fixes "3v Demo" by Cave and "New Year Demo" by Phoenix */
- if (is_bitplane_dma(hpos - 1) == num + 1)
+ if (is_bitplane_dma(hpos - 1) == num + 1 && num > 0)
delta = 2 << fetchmode;
bplpt[num] = (bplpt[num] & ~0xffff) | ((v + delta) & 0xfffe);
//write_log("%d:%d:BPL%dPTL %08.8X\n", hpos, vpos, num, v);
extern uae_u32 natmem_offset;
int flashscreen = 0;
-static int enforcer_installed = 0,enforcermode = 0;
+static int enforcer_installed = 0;
+int enforcermode = 0;
static int enforcer_hit = 0; /* set to 1 if displaying the hit */
#define ENFORCER_BUF_SIZE 4096
uae_u32 REGPARAM2 chipmem_lget2 (uaecptr addr)
{
- uae_u32 *m;
+ uae_u32 *m;
addr -= chipmem_start & chipmem_mask;
addr &= chipmem_mask;
if (ISILLEGAL(addr))
{
enforcer_display_hit("LONG READ from",(uae_u32)(regs.pc_p - NMEM_OFFSET),addr);
- if (enforcermode==1)
+ if (enforcermode & 1)
{
set_special (SPCFLAG_TRAP);
}
if (ISILLEGAL(addr))
{
enforcer_display_hit("WORD READ from",(uae_u32)(regs.pc_p - NMEM_OFFSET),addr);
- if (enforcermode==1)
+ if (enforcermode & 1)
{
set_special (SPCFLAG_TRAP);
}
if (ISILLEGAL(addr))
{
enforcer_display_hit("BYTE READ from",(uae_u32)(regs.pc_p - NMEM_OFFSET),addr);
- if (enforcermode==1)
+ if (enforcermode & 1)
{
set_special (SPCFLAG_TRAP);
}
if (ISILLEGAL(addr))
{
enforcer_display_hit("LONG WRITE to",(uae_u32)(regs.pc_p - NMEM_OFFSET),addr);
- if (enforcermode==1)
+ if (enforcermode & 1)
{
if ( addr!=0x100 ) set_special (SPCFLAG_TRAP);
}
if (ISILLEGAL(addr))
{
enforcer_display_hit("WORD WRITE to",(uae_u32)(regs.pc_p - NMEM_OFFSET),addr);
- if (enforcermode==1)
+ if (enforcermode & 1)
{
set_special (SPCFLAG_TRAP);
}
if (ISILLEGAL(addr))
{
enforcer_display_hit("BYTE WRITE to",(uae_u32)(regs.pc_p - NMEM_OFFSET),addr);
- if (enforcermode==1)
+ if (enforcermode & 1)
{
set_special (SPCFLAG_TRAP);
}
{
special_mem_r;
enforcer_display_hit("LONG READ from",(uae_u32)(regs.pc_p - NMEM_OFFSET), addr);
- if (enforcermode==1)
+ if (enforcermode & 1)
{
set_special (SPCFLAG_TRAP);
return 0;
}
#endif
enforcer_display_hit("WORD READ from",(uae_u32)(regs.pc_p - NMEM_OFFSET),addr);
- if (enforcermode==1)
+ if (enforcermode & 1)
{
set_special (SPCFLAG_TRAP);
return 0;
{
special_mem_r;
enforcer_display_hit("BYTE READ from",(uae_u32)(regs.pc_p - NMEM_OFFSET),addr);
- if (enforcermode==1)
+ if (enforcermode & 1)
{
set_special (SPCFLAG_TRAP);
return 0;
{
special_mem_w;
enforcer_display_hit("LONG WRITE to",(uae_u32)(regs.pc_p - NMEM_OFFSET),addr);
- if (enforcermode==1)
+ if (enforcermode & 1)
{
set_special (SPCFLAG_TRAP);
return;
{
special_mem_w;
enforcer_display_hit("WORD WRITE to",(uae_u32)(regs.pc_p - NMEM_OFFSET),addr);
- if (enforcermode==1)
+ if (enforcermode & 1)
{
set_special (SPCFLAG_TRAP);
return;
{
special_mem_w;
enforcer_display_hit("BYTE WRITE to",(uae_u32)(regs.pc_p - NMEM_OFFSET),addr);
- if (enforcermode==1)
+ if (enforcermode & 1)
{
set_special (SPCFLAG_TRAP);
return;
DECLARE(fmovi_mr(MEMW m, FR r));
DECLARE(fmovs_rm(FW r, MEMR m));
DECLARE(fmovs_mr(MEMW m, FR r));
+DECLARE(fcuts_r(FRW r));
+DECLARE(fcut_r(FRW r));
DECLARE(fmovl_ri(FW r, IMMS i));
DECLARE(fmovs_ri(FW r, IMM i));
DECLARE(fmov_ri(FW r, IMM i1, IMM i2));
int enforcer_enable(int);
int enforcer_disable(void);
+extern int enforcermode;
+
#endif
\ No newline at end of file
int compfpu;
int comp_midopt;
int comp_lowopt;
+ int fpu_strict;
int comp_hardflush;
int comp_constjump;
#include "arcadia.h"
int inputdevice_logging = 0;
+static int potgo_logging = 0;
#define DIR_LEFT 1
#define DIR_RIGHT 2
{
int i;
- //write_log ("W:%d: %04.4X %p\n", vpos, v, m68k_getpc());
+ if (potgo_logging)
+ write_log ("W:%d: %04.4X %p\n", vpos, v, m68k_getpc());
#ifdef DONGLE_DEBUG
if (notinrom ())
write_log ("POTGO %04.4X %s\n", v, debuginfo(0));
if (notinrom ())
write_log ("POTGOR %04.4X %s\n", v, debuginfo(0));
#endif
- //write_log("R:%d:%04.4X %d %p\n", vpos, v, cd32_shifter[1], m68k_getpc());
+ if (potgo_logging)
+ write_log("R:%d:%04.4X %d %p\n", vpos, v, cd32_shifter[1], m68k_getpc());
return v;
}
}
}
}
+ keysize = 0;
if (f) {
write_log("ROM.key loaded '%s'\n", tmp);
zfile_fseek (f, 0, SEEK_END);
write_log ("IDirect3DDevice9_DrawPrimitiveUP failed: %s\n", D3D_ErrorString (hr));
}
+/*
+ window_ = display window size
+ tin_ = internal window size
+ twidth/theight = texture size
+*/
+#if 0
static void calc (float *xp, float *yp, float *sxp, float *syp)
{
float x, y, sx, sy, tx, ty;
- double mx, my, fx, fy;
+ double mx, my, fx, fy, mmx, mmy;
+
+ mmx = 1;
+ mmy = 1;//2.0 * window_h / tin_h;
+
+ fx = tin_w / 2;
+ fy = tin_h / 2;
+
+ fx = (twidth * window_w / tin_w) / 2;
+ fy = (theight * window_h / tin_h) / 2;
+
+ tx = ((currprefs.gfx_filter_horiz_zoom_mult + currprefs.gfx_filter_horiz_zoom / 4) / 1000.0);
+ ty = ((currprefs.gfx_filter_vert_zoom_mult + currprefs.gfx_filter_vert_zoom / 4) / 1000.0);
+
+ *sxp = (fx + fx / tx) * mmx;
+ *syp = (fy + fy / ty) * mmy;
+ *xp = (fx - fx / tx) * mmx;
+ *yp = (fy - fy / ty) * mmy;
+
+ mx = (currprefs.gfx_filter_horiz_offset / 1000.0) * fx;
+ my = (currprefs.gfx_filter_vert_offset / 1000.0) * fy;
+
+ *xp += mx;
+ *sxp += mx;
+ *yp += my;
+ *syp += my;
+
+ return;
+
fx = (twidth * window_w / tin_w) / 2;
fy = (theight * window_h / tin_h) / 2;
*xp = x; *yp = y;
*sxp = sx; *syp = sy;
}
+#endif
+#if 1
+static void calc (float *xp, float *yp, float *sxp, float *syp)
+{
+ int xm, ym;
+ int fx, fy;
+ float x, y, sx, sy;
+
+ xm = currprefs.gfx_lores ? 2 : 1;
+ ym = currprefs.gfx_linedbl ? 1 : 2;
+ if (window_w >= 1024)
+ xm *= 2;
+ else if (window_w < 500)
+ xm /= 2;
+ if (window_h >= 960)
+ ym *= 2;
+ else if (window_h < 350)
+ ym /= 2;
+ fx = (tin_w * xm - window_w) / 2;
+ fy = (tin_h * ym - window_h) / 2;
+ x = (float)(window_w * currprefs.gfx_filter_horiz_offset / 1000.0);
+ y = (float)(window_h * currprefs.gfx_filter_vert_offset / 1000.0);
+ sx = x + (float)(twidth * window_w / tin_w) * ((currprefs.gfx_filter_horiz_zoom + 1000) / 1000.0);
+ sy = y + (float)(theight * window_h / tin_h) * ((currprefs.gfx_filter_vert_zoom + 1000) / 1000.0);
+ x -= fx; y -= fy;
+ sx += 2 * fx; sy += 2 * fy;
+ *xp = x; *yp = y;
+ *sxp = sx; *syp = sy;
+}
+#endif
void D3D_unlocktexture (void)
{
static int recycle (const char *name)
{
if (currprefs.win32_norecyclebin) {
- return DeleteFile(name) ? 0 : -1;
+ DWORD dirattr = GetFileAttributes (name);
+ if (dirattr != INVALID_FILE_ATTRIBUTES && (dirattr & FILE_ATTRIBUTE_DIRECTORY))
+ return RemoveDirectory (name) ? 0 : -1;
+ return DeleteFile(name) ? 0 : -1;
} else {
SHFILEOPSTRUCT fos;
/* name must be terminated by \0\0 */
{ DIK_HOME, INPUTEVENT_KEY_70 },
{ DIK_END, INPUTEVENT_KEY_71 },
- { DIK_SYSRQ, INPUTEVENT_KEY_6E },
+// { DIK_SYSRQ, INPUTEVENT_KEY_6E },
// { DIK_F12, INPUTEVENT_KEY_6F },
{ DIK_INSERT, INPUTEVENT_KEY_47 },
{ DIK_PRIOR, INPUTEVENT_KEY_48 },
static void OGL_dorender (int newtex)
{
uae_u8 *data = gfxvidinfo.bufmem;
- float x1, y1, x2, y2, tx, ty;
+ float x1, y1, x2, y2;
+ double fx, fy, xm, ym;
+
+#if 0
double mx, my, fx, fy, fx2, fy2, xm, ym;
+ float tx, ty;
xm = currprefs.gfx_lores ? 2 : 1;
ym = currprefs.gfx_linedbl ? 2 : 1;
x2 += tx + mx;
y2 += ty + my;
+#else
+
+ xm = currprefs.gfx_lores ? 2 : 1;
+ ym = currprefs.gfx_linedbl ? 1 : 2;
+ if (w_width >= 1024)
+ xm *= 2;
+ else if (w_width < 500)
+ xm /= 2;
+ if (w_height >= 960)
+ ym *= 2;
+ else if (w_height < 350)
+ ym /= 2;
+ fx = (t_width * xm - w_width) / 2;
+ fy = (t_height * ym - w_height) / 2;
+
+ x1 = (float)(w_width * currprefs.gfx_filter_horiz_offset / 1000.0);
+ y1 = (float)(w_height * currprefs.gfx_filter_vert_offset / 1000.0);
+ x2 = x1 + (float)((required_texture_size * w_width / t_width) * (currprefs.gfx_filter_horiz_zoom + 1000) / 1000.0);
+ y2 = y1 + (float)((required_texture_size * w_height / t_height) * (currprefs.gfx_filter_vert_zoom + 1000)/ 1000.0);
+ x1 -= fx; y1 -= fy;
+ x2 += 2 * fx; y2 += 2 * fy;
+
+#endif
+
#ifdef FSAA
glEnable (GL_MULTISAMPLE_ARB);
#endif
IDS_DISK "Disk swapper"
IDS_DISPLAY "Display"
IDS_HARDDISK "Hard drives"
- IDS_FLOPPY "Disk drives"
+ IDS_FLOPPY "Floppy drives"
IDS_ABOUT "About"
IDS_LOADSAVE "Configurations"
IDS_AVIOUTPUT "Output"
}
#endif
+ if (serper == 372) {
+ extern int enforcermode;
+ if (enforcermode & 2) {
+ write_log ("%c", dochar (w));
+ if (w == 266)
+ write_log("\n");
+ }
+ }
+
data_in_serdat = 1;
if (!data_in_sershift)
checksend (1);
{
}
-void logging_init( void )
+void logging_open(int bootlog, int append)
+{
+ char debugfilename[MAX_DPATH];
+
+ debugfilename[0] = 0;
+#ifndef SINGLEFILE
+ if (currprefs.win32_logfile)
+ sprintf (debugfilename, "%swinuaelog.txt", start_path_data);
+ if (bootlog)
+ sprintf (debugfilename, "%swinuaebootlog.txt", start_path_data);
+ if (debugfilename[0]) {
+ if (!debugfile)
+ debugfile = fopen (debugfilename, append ? "a" : "wt");
+ }
+#endif
+}
+
+void logging_init(void)
{
static int started;
static int first;
- char debugfilename[MAX_DPATH];
if (first > 1) {
write_log ("** RESTART **\n");
fclose (debugfile);
debugfile = 0;
}
-#ifndef SINGLEFILE
- if (currprefs.win32_logfile) {
- sprintf (debugfilename, "%swinuaelog.txt", start_path_data);
- if (!debugfile)
- debugfile = fopen (debugfilename, "wt");
- } else if (!first) {
- sprintf (debugfilename, "%swinuaebootlog.txt", start_path_data);
- if (!debugfile)
- debugfile = fopen (debugfilename, "wt");
- }
-#endif
+ logging_open(first ? 0 : 1, 0);
first++;
write_log ("%s (%s %d.%d %s%s%s)", VersionStr, os_winnt ? "NT" : "W9X/ME",
osVersion.dwMajorVersion, osVersion.dwMinorVersion, osVersion.szCSDVersion,
extern int manual_palette_refresh_needed;
extern int mouseactive, focus;
extern int ignore_messages_all;
-#define WINUAEBETA 1
-#define WINUAEBETASTR " Beta 6"
+#define WINUAEBETA 0
+#define WINUAEBETASTR " "
extern char start_path_exe[MAX_DPATH];
extern char start_path_data[MAX_DPATH];
extern struct winuae_lang langs[];
extern HMODULE language_load(WORD language);
+extern void logging_open(int,int);
+extern void logging_cleanup(void);
+
#endif
\ No newline at end of file
return 1;
}
+ if (currprefs.win32_norecyclebin != changed_prefs.win32_norecyclebin) {
+ currprefs.win32_norecyclebin = changed_prefs.win32_norecyclebin;
+ }
+
+ if (currprefs.win32_logfile != changed_prefs.win32_logfile) {
+ currprefs.win32_logfile = changed_prefs.win32_logfile;
+ if (currprefs.win32_logfile)
+ logging_open(0, 1);
+ else
+ logging_cleanup();
+ }
+
if (currprefs.leds_on_screen != changed_prefs.leds_on_screen ||
currprefs.keyboard_leds[0] != changed_prefs.keyboard_leds[0] ||
currprefs.keyboard_leds[1] != changed_prefs.keyboard_leds[1] ||
EnableWindow (GetDlgItem (hDlg, IDC_CTRLF11), TRUE);
EnableWindow (GetDlgItem (hDlg, IDC_SOCKETS), FALSE);
EnableWindow (GetDlgItem (hDlg, IDC_SHOWGUI), FALSE);
- EnableWindow (GetDlgItem (hDlg, IDC_CREATELOGFILE), FALSE);
- EnableWindow (GetDlgItem (hDlg, IDC_ILLEGAL), FALSE);
EnableWindow (GetDlgItem (hDlg, IDC_NOSPEED), TRUE);
EnableWindow (GetDlgItem (hDlg, IDC_NOSPEEDPAUSE), TRUE);
EnableWindow (GetDlgItem (hDlg, IDC_NOSOUND), TRUE);
EnableWindow (GetDlgItem(hDlg, IDC_SCSIDEVICE), FALSE);
EnableWindow (GetDlgItem(hDlg, IDC_SCSIMODE), TRUE);
#endif
- if (workprefs.win32_logfile)
- EnableWindow (GetDlgItem (hDlg, IDC_ILLEGAL), TRUE);
- else
- EnableWindow (GetDlgItem (hDlg, IDC_ILLEGAL), FALSE);
EnableWindow (GetDlgItem (hDlg, IDC_DOSAVESTATE), FALSE);
EnableWindow (GetDlgItem (hDlg, IDC_STATE_RATE), workprefs.statecapture ? TRUE : FALSE);
EnableWindow (GetDlgItem (hDlg, IDC_STATE_BUFFERSIZE), workprefs.statecapture ? TRUE : FALSE);
misc_getpri (hDlg, IDC_MINIMIZED_PRIORITY, &workprefs.win32_iconified_priority);
}
- switch( wParam )
+ switch(wParam)
{
case IDC_DOSAVESTATE:
if (DiskSelection(hDlg, wParam, 9, &workprefs, 0))
break;
case IDC_CREATELOGFILE:
workprefs.win32_logfile = IsDlgButtonChecked (hDlg, IDC_CREATELOGFILE);
- enable_for_miscdlg( hDlg );
+ enable_for_miscdlg(hDlg);
break;
case IDC_INACTIVE_NOSOUND:
if (!IsDlgButtonChecked (hDlg, IDC_INACTIVE_NOSOUND))
CheckDlgButton( hDlg, IDC_FILTERENABLE, v );
EnableWindow (GetDlgItem (hDlg, IDC_FILTERHZ), v);
EnableWindow (GetDlgItem (hDlg, IDC_FILTERVZ), v);
- EnableWindow (GetDlgItem (hDlg, IDC_FILTERHZMULT), v);
- EnableWindow (GetDlgItem (hDlg, IDC_FILTERVZMULT), v);
+ EnableWindow (GetDlgItem (hDlg, IDC_FILTERHZMULT), vv && !vv2);
+ EnableWindow (GetDlgItem (hDlg, IDC_FILTERVZMULT), vv && !vv2);
EnableWindow (GetDlgItem (hDlg, IDC_FILTERHO), v);
EnableWindow (GetDlgItem (hDlg, IDC_FILTERVO), v);
EnableWindow (GetDlgItem (hDlg, IDC_FILTERSLR), vv2);