From 77e9278dc7780da9a3667734140a6a09155e8863 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sat, 5 May 2018 18:58:36 +0300 Subject: [PATCH] 4000b8 --- include/xwin.h | 1 + jit/compemu_raw_x86.cpp | 2 +- main.cpp | 7 +------ od-win32/fpux64_80.asm | 12 ++++++------ od-win32/win32.cpp | 8 ++++++-- od-win32/win32.h | 4 ++-- od-win32/winuaechangelog.txt | 29 +++++++++++++++++++++++++++++ 7 files changed, 46 insertions(+), 17 deletions(-) diff --git a/include/xwin.h b/include/xwin.h index 02e73d1c..b03f0767 100644 --- a/include/xwin.h +++ b/include/xwin.h @@ -174,6 +174,7 @@ struct amigadisplay int framecnt; bool specialmonitoron; int inhibit_frame; + bool pending_render; struct vidbuf_description gfxvidinfo; }; diff --git a/jit/compemu_raw_x86.cpp b/jit/compemu_raw_x86.cpp index 9d44571b..8f918c8a 100644 --- a/jit/compemu_raw_x86.cpp +++ b/jit/compemu_raw_x86.cpp @@ -2978,7 +2978,7 @@ LENDFUNC(NONE,NONE,2,raw_fatan_rr,(FW d, FR s)) emit_byte(0xde); emit_byte(0xf9); /* fdivp (1+x)/(1-x) */ emit_byte(0xd9); - emit_byte(0xed); /* fldl2e logN(2) */ + emit_byte(0xed); /* fldln2 logN(2) */ emit_byte(0xd9); emit_byte(0xc9); /* fxch swap logN(2) with (1+x)/(1-x) */ emit_byte(0xd9); diff --git a/main.cpp b/main.cpp index 67cbfb9a..f8224b0a 100644 --- a/main.cpp +++ b/main.cpp @@ -175,12 +175,7 @@ void fixup_prefs_dimensions (struct uae_prefs *prefs) struct apmode *ap = &prefs->gfx_apmode[i]; ap->gfx_vflip = 0; ap->gfx_strobo = false; - if (ap->gfx_vsync < 0) { - // adaptive sync - ap->gfx_vsyncmode = 0; - ap->gfx_vflip = 1; - ap->gfx_strobo = prefs->lightboost_strobo; - } else if (ap->gfx_vsync > 0) { + if (ap->gfx_vsync) { if (ap->gfx_vsyncmode) { ap->gfx_backbuffers = 1; ap->gfx_strobo = false; diff --git a/od-win32/fpux64_80.asm b/od-win32/fpux64_80.asm index f2209341..254b0d1f 100644 --- a/od-win32/fpux64_80.asm +++ b/od-win32/fpux64_80.asm @@ -346,7 +346,7 @@ xfp_lognp1: ret -_xfp_asin: +xfp_asin: loadfp1 fmul st0,st0 fld1 @@ -358,7 +358,7 @@ _xfp_asin: storefp ret -_xfp_acos: +xfp_acos: loadfp1 fmul st0,st0 fld1 @@ -372,7 +372,7 @@ _xfp_acos: storefp ret -_xfp_atanh: +xfp_atanh: loadfp1 fld1 fadd st1,st0 @@ -389,7 +389,7 @@ _xfp_atanh: storefp ret -_xfp_sinh: +xfp_sinh: loadfp1 fldl2e fmul st0,st1 @@ -420,7 +420,7 @@ _xfp_sinh: storefp ret -_xfp_cosh: +xfp_cosh: loadfp1 fldl2e fmul st0,st1 @@ -451,7 +451,7 @@ _xfp_cosh: storefp ret -_xfp_tanh: +xfp_tanh: loadfp1 fldl2e fmul st0,st1 diff --git a/od-win32/win32.cpp b/od-win32/win32.cpp index 753b9d3f..ce28632c 100644 --- a/od-win32/win32.cpp +++ b/od-win32/win32.cpp @@ -126,6 +126,7 @@ int pissoff_value = 15000 * CYCLE_UNIT; unsigned int fpucontrol; int extraframewait, extraframewait2; int busywait; +static int noNtDelayExecution; extern FILE *debugfile; extern int console_logging; @@ -235,7 +236,7 @@ static ULONG ActualTimerResolution; int target_sleep_nanos(int nanos) { static bool init; - if (!init) { + if (!init && !noNtDelayExecution) { pNtDelayExecution = (NTDELAYEXECUTION)GetProcAddress(GetModuleHandle(_T("ntdll.dll")), "NtDelayExecution"); pZwSetTimerResolution = (ZWSETTIMERRESOLUTION)GetProcAddress(GetModuleHandle(_T("ntdll.dll")), "ZwSetTimerResolution"); if (pZwSetTimerResolution) { @@ -6294,7 +6295,10 @@ static int parseargs(const TCHAR *argx, const TCHAR *np, const TCHAR *np2) busywait = 1; return 1; } - + if (!_tcscmp(arg, _T("nontdelayexecution"))) { + noNtDelayExecution = 1; + return 1; + } if (!np) return 0; diff --git a/od-win32/win32.h b/od-win32/win32.h index 8dafd1ec..14fe9b69 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("7") +#define WINUAEBETA _T("8") #else #define WINUAEBETA _T("") #endif -#define WINUAEDATE MAKEBD(2018, 5, 1) +#define WINUAEDATE MAKEBD(2018, 5, 5) //#define WINUAEEXTRA _T("AmiKit Preview") //#define WINUAEEXTRA _T("Amiga Forever Edition") diff --git a/od-win32/winuaechangelog.txt b/od-win32/winuaechangelog.txt index a4533845..9ad1a749 100644 --- a/od-win32/winuaechangelog.txt +++ b/od-win32/winuaechangelog.txt @@ -1,4 +1,33 @@ + +Beta 8: + +- CL horizontal doubling used wrong width size, fixed buffer overflow (b7). +- CL horizontal doubling multiplier changed to 9/10. Old value missed 320*200 resolution. +- 64-bit host FPU FMOVECR constants that didn't fit in double were clamped to max when they should have been set to infinity. +- All logarithmic and trigonometric functions now use assembly code from existing JIT functions in new 80-bit host FPU mode. This should be feature complete now. +- Multithreaded RTG now only does color conversion/copy in separate thread, present() is done in main thread because of possible thread safety problems. +- Added quite pointless power led switches off/dims misc panel option. Affects OSD power led and D3D led overlay power led brightness. + +Beta 7: + +- Added debugger 'ex' command: 'e' command with extended data: last value written and PC of CPU or Copper when value was written. +- UAEGFX RTG 15/16/24-bit graphics corruption fixed (b1). +- If multimonitor mode and aviout/screenshot: capture/record from window that has focus. +- Added horizontal doubling to Cirrus Logic emulation, enabled if screen height * 0.75 >= width. Keeps aspect ratio if CGX doublescan graphics mode is configured. +- Native screen OSD was drawn twice in some multimonitor configurations, also could have caused crashes or some other weird behavior. + +Extended precision host FPU mode updates: + +- Some FPU instructions used wrong precision. +- Supports divbyzero, underflow, overflow and inexact2 status bits and exceptions. Only in non-JIT FPU mode. (and no software really cares) +- FCMP uses softfloat comparison code if more compatible is enabled (FCMP can't be directly mapped to host FPU), if not, it uses simple and quick test. (Difference: infinities, nans etc.. special cases only work in more compatible mode. No normal programs care, as usual) +- Uses softfloat routines for rarely used functions (most trigometric, fexpman, fscale etc). Previously: extended to double conversion -> c-library math function -> double to extended conversion. Which probably wasn't noticeably faster. + +I think this is good compromise between speed and accuracy, commonly used operations use native code (that native FPU supports directly, x86 FPU does not directly support all operations that 6888x supports), complex and rarely used operations use softfloat code. + +NOTE: Host FPU extended precision FPU emulation is now enabled by default and always overrides config file saved 64-bit mode. If something works strangely, load your config, change FPU mode to 64-bit/softfloat and try again: if it fixes the problem -> report the problem immediately. + Beta 6: - Added DCE Typhoon MK2 (A1200 accelerator). ROM is almost identical to E-Matrix 530/1230. Identical SCSI driver, slightly modified RAM detection code. -- 2.47.3