From df948a6afb1b7510801e728bf5b1ac34a3115d68 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Fri, 7 Mar 2025 18:10:46 +0200 Subject: [PATCH] 6000b13 --- cfgfile.cpp | 6 +++--- od-win32/win32.h | 4 ++-- od-win32/winuaechangelog.txt | 15 ++++++++++++++- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/cfgfile.cpp b/cfgfile.cpp index 88cd9f50..fbb29851 100644 --- a/cfgfile.cpp +++ b/cfgfile.cpp @@ -6141,7 +6141,7 @@ static int cfgfile_parse_hardware (struct uae_prefs *p, const TCHAR *option, TCH return 1; } - if (cfgfile_readromboard(option, value, &p->romboards[0])) { + if (cfgfile_readromboard(option, value, p->romboards)) { return 1; } @@ -6151,7 +6151,7 @@ static int cfgfile_parse_hardware (struct uae_prefs *p, const TCHAR *option, TCH if (cfgfile_readramboard(option, value, _T("bogomem"), &p->bogomem)) { return 1; } - if (cfgfile_readramboard(option, value, _T("fastmem"), &p->fastmem[0])) { + if (cfgfile_readramboard(option, value, _T("fastmem"), p->fastmem)) { return 1; } if (cfgfile_readramboard(option, value, _T("mem25bit"), &p->mem25bit)) { @@ -6163,7 +6163,7 @@ static int cfgfile_parse_hardware (struct uae_prefs *p, const TCHAR *option, TCH if (cfgfile_readramboard(option, value, _T("mbresmem"), &p->mbresmem_high)) { return 1; } - if (cfgfile_readramboard(option, value, _T("z3mem"), &p->z3fastmem[0])) { + if (cfgfile_readramboard(option, value, _T("z3mem"), p->z3fastmem)) { return 1; } if (cfgfile_readramboard(option, value, _T("megachipmem"), &p->z3chipmem)) { diff --git a/od-win32/win32.h b/od-win32/win32.h index ef5e45c1..e798aff3 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("12") +#define WINUAEBETA _T("13") #else #define WINUAEBETA _T("") #endif -#define WINUAEDATE MAKEBD(2025, 3, 2) +#define WINUAEDATE MAKEBD(2025, 3, 7) //#define WINUAEEXTRA _T("AmiKit Preview") //#define WINUAEEXTRA _T("Amiga Forever Edition") diff --git a/od-win32/winuaechangelog.txt b/od-win32/winuaechangelog.txt index b0a04577..35e264e2 100644 --- a/od-win32/winuaechangelog.txt +++ b/od-win32/winuaechangelog.txt @@ -1,4 +1,18 @@ +Beta 13: + +Major performance improvement! Finally faster than older versions! + +- Denise side processing is now in separate thread (bitplane shifting, sprite shifting, bitplane/sprite planar to chunky, special modes, bitplane/sprite priorities, strobes/blanking, RGB out etc). Line-based Denise RGA buffering made this possible because it cleanly separates Agnus and Denise logic and Denise is almost fully "fire and forget". Only exception is CLXDAT collision register reads which needs to flush all queued lines (and isn't cycle-accurate yet anyway). AGA color reads don't cause problems because they are can be done in Agnus side emulation. Line queue is quite small (max ~10 lines), it won't cause any latency problems. Compatibility is not affected. (In previous UAE versions Agnus side processed whole frame, then Denise side did the rest which was not very optimal because temporary frame data needed huge RAM buffers) +- -nomt command line disables multithreaded Denise emulation. +- Previously always used temporary graphics buffering is only done if needed: display port adapter enabled (which also includes genlock in image mode, grayscale and CD32 FMV). This also increases performance. Only affects native chipset modes. When using display port adapter: complete chipset display frame is drawn to temporary RAM buffer, then display port adapter emulation merges it with any display port adapter graphics and writes the result to D3D texture. When this is bypassed, chipset graphics is directly drawn to D3D texture in single pass. +- Any enabled display port adapter (including genlock in image mode, grayscale or CD32 FMV) or enabled light pen disables non-CE border/bitplane optimizations. +- All software filters removed. Removal of always-enabled temporary graphics buffer makes software filter support annoying and they are obsolete anyway. +- b12 CE mode bitplane optimizations disabled (commented out), they are not needed anymore and they caused side-effects and glitches that are really difficult to fix completely without making optimizations useless. Non-CE mode optimizations are supported and will not be removed. +- Disable NTSC STRLONG strobe emulation if no STRLONG strobes have not been seen since last frame. Switching to NTSC and then back to PAL won't anymore cause slightly reduced performance (Accurate STRLONG emulation needs more complex line drawing code). NTSC still have right edge glitches on fast modes. +- Tiny blitter optimization. +- Adjusted non-fastest possible CPU mode frame waiting behavior (timing is different because now drawing is done after line has been emulated, in previous versions all lines were emulated first, then drawn in separate pass) + Beta 12: - Cycle-exact mode drawing optimizations partially implemented. @@ -13,7 +27,6 @@ Beta 12: Performance testing: first check that running program is using optimized code paths enough (xxx% in log is at least 30% or higher = not too much Denise related copper activity or sprites), then check CPU usage or max warp mode FPS using different optimization settings. - Beta 11: Some more fast (includes any non-memory cycle-exact mode) optimizations and most remaining missing features added. All normal screenmodes are now supported in fast modes, only remaining always-"slow" is lines with copper activity and sprites. Both probably will be supported in the future but they are not that important. Copper activity only if it does not cause any immediately visible effect on screen (for example color change inside hblank). Previous betas CPU feature restrictions removed. -- 2.47.3