- 68000 based unexpanded (with optional Slow or Fast RAM expansion) configurations are now 100% cycle-accurate.
- Big thanks to ross for writing test programs that required perfect cycle accuracy. Lots of expected and unexpected hardware features found and implemented.
Featute updates that got delayed but will be implemented in 5.0
- OCS and ECS Denise mid screen resolution changes are not pixel perfect, correct chip model specific bit pattern is not emulated yet. AGA is pixel perfect.
- Not all blitter line draw width != 2 (invalid line draw configuration, normally not used) conditions are 100% accurate.
- Disk status/interrupt timing is not fully confirmed yet.
New hardware emulation features and update
- 68000 emulation is finally fully cycle accurate, last missing part, interrupt level change detection timing, is now cycle accurate.
- Custom chipset interrupt timing is now cycle accurate.
- CIA emulation is now fully cycle accurate. Timers were accurate previously but now also interrupt timing, TOD counting, CPU/E-clock sync, and more, including undocumented side-effects are cycle accurate.
- Serial port internal timing, interrupt timing, including SERDATR status bits are now cycle accurate (I used serial port interrupts as a timer in my cputester real 68000 interrupt timing tests)
- Audio interrupt timing is now cycle accurate (Was almost fully accurate previously).
- Blitter timing is now cycle accurate (previously startup behavior and interrupt timing was not fully accurate).
- Blitter line mode with invalid settings (for example width not 2, octant and line direction mismatch etc) is now almost accurately emulated. Some conditions are not fully correct.
- Copper is now cycle accurate, previously some special cases were not handled correctly.
- More undocumented chipset features implemented.
- A1000 Denise bug emulated: sprites end horizontally 1 lores pixel later than bitplane horizontal window end. Currently enabled when A1000 Agnus is selected.
- OCS/ECS vs AGA EHB on/off mid screen change different behavior emulated.
- Emulated chipset mode display is blanked if programmed mode is active but has invalid configuration (for example too short or too long sync pulses or missing syncs, genlock sync enabled without genlock, etc).
- Optional display mode change resync black screen delay.
- Programmed custom chipset modes again use also blanking timing to position the display in addition to vsync and hsync (Most real world SVGA monitors do the same).
- Max allowed programmed mode non-interlaced vertical line count is now 800 (increased from 592), special 700+ line programmed modes are possible and compatible with real SVGA monitors.
- Refresh cycles conflicting with bitplane DMA is now accurately emulated, including all display and audio related glitches it can cause.
- Optional Chip RAM and Slow RAM power up pattern emulation, enabled by default.
- Color palette is now filled with pseudo-random contents at power up (was all black previously).
- Monitor type selection. Composite sync or H/V sync. ECS Agnus/AGA programmed display modes can generate different C-Sync and H/V sync signals.
New other features and updates
- RTG (uaegfx) Picasso96 v3.0+ mixed mode screen draggging is enabled by default.
- RTG (uaegfx) blitter emulation now supports previously unsupported less common blitter operations.
- RTG (uaegfx and emulated boards) automatic integer scaling support.
- On the fly FloppyBridge drive change to normal or back now triggers automatic disk change condition.
- Harddrive panel Full drive/RDB mode is now normal checbox. Hopefully it is less confusing than button that didn’t look like a button.
- Larger default GUI size and slightly larger font if Windows desktop is large enough (at least 1600*1024).
- CD audio is now always mixed with Paula audio. Separate CD audio output support removed.
- Some American Laser Games didn’t have ROM descrambling support, also added missing ROM variants.
- Added American Laser Games Quickstart support.
- Added NVRAM path to Paths panel. Arcade/CD32/CDTV hardware NVRAM files default to this path.
- Keyboard reset change, reset state is kept until at least one key is released.
- CTRL+C in console log/debug window does not anymore close WinUAE. CTRL+C in newer Windows versions can be used as a Copy operation.
- Changed CTRL+F12 fullscreen/windowed switch: If already switched from full-window to window. Next CTRL+F12 will return back to full-window, not fullscreen.
- Optional interlace mode filter profile added.
- DirectDraw mode was replaced with GDI mode. GDI mode does not support exclusive fullscreen but supports basic scaling modes and uaegfx hardware cursor that DirectDraw mode did not support.
- Palette mode screenshot support. If enabled and screen has <= 256 colors, palette mode screenshot is created. It also attempts to preserve first 32 color entries if possible. RTC is automatically enabled if chipset extra= and system has fast ram, slow ram or chip ram expansion.
- Save MSM6242B RTC model control registers to RTC file if they are modified. Previously only RF5C01A (Used in big box Amigas) control registers (and NVRAM) was saved.
- If Quickstart ROM based Arcade hardware config (Arcadia or ALG) is selected, NVRAM file name is automatically set to ROM name. Genlock video file path is also set if ALG ROM is selected. Config files are not affected.
- ROM file list sorting changed, added grouping, sort by group priority first (KS ROMs, extended KS ROMs, freezer ROMs etc..), then alphabetically.
- Sometimes old graphics was temporarily visible in RTG modes if RTG had visible black borders (depends on scaling mode) and screen was switched and new screen had larger size/resolution.
- Added “Slow” flag to RAM panel. If set, selected memory bank has Chip RAM timing but is not Chip RAM capable. Advanced chipset panel “C00000 is Fast RAM” removed, it is not needed anymore.
4.9.x bugs fixed
- Sprite to playfield and playfield to playfield collisions were unreliable.
- RTG (uaegfx) overlay was not drawn. 32-bit Windows only.
- Magic mouse mode without virtual mouse driver installed: mouse position was incorrect in RTG modes and it also ignored scaling modes.
- If hardware emulated RTG board VRAM was immediately (no gap in address space) after any RAM/ROM region and JIT direct was enabled: first 4096 bytes (host CPU page size) of VRAM was not fully JIT direct compatible and any direct read or write to first 4096 bytes would not access VRAM correctly, causing unexpected graphics glitches.
- Quickstart panel floppy bootblock check used current track of drive (not track 0). Broken when FloppyBridge support was added.
- Hires resolution and hires BPLCON1 bit set (or shres and shres BPLCON1 bit): single pixel horizontal offset may have appeared in right side of screen. AGA and non-subpixel mode only.
- CD32/CDTV Quickstart mode “remembered” previous DF0: setting and didn’t disable it by default (even if Quickstart panel showed it as disabled).
- CD32/CDTV Quickstart panel DF0: was not possible to select/enable.
- Z2 RAM configuration was unreliable.
Older bugs fixed
- CHD CD image CD audio timing fix.
- Direct3D11 with custom shaders leaked memory.
- Directory filesystem softlinks fixed.
- 68060 without FPU or disabled FPU and executing FPU instruction that uses -(An) or (An)+ addressing mode: D7 was modified when exception stack frame was created.
- Reading from non-existing custom register always returned 0xFFFF instead of data that previous cycle’s possible DMA access transferred.
- Higher 68000/010 integer clock multipliers (4x+) in CE mode: chipset access timing was not accurate.
- Second 1M extended ROM bank is now internally split to two 512k banks. Non-aligned bank start and size caused problems in some configs.
- Hardware emulated RTG boards that have physically swapped red and blue output (Spectrum, Piccolo, Piccolo SD64) had wrong colors in 24/32-bit modes.
- Piccolo Z3 and Piccolo SD64 Z3 had wrong autoconfig board logical size (which crashed the driver).
- CD audio was not resumed if WinUAE was unminimized and minimize was configured to pause emulation.
Debugging related updates and fixes
- Ultra extreme overscan mode. Shows complete full raster including blanking regions. Horizontal and vertical blanking disabled. COLOR0 changes are always visible.
- DMA debugger shows CIA accesses (including cycles lost due to E-Clock sync) and Chip RAM RAS/CAS addressing values.
- DMA debugger shows CPU memory access type (instruction fetch or data access). Interrupt level and interrupt level change detection are included.
- DMA debugger shows CPU opcodes in basic form (“NOP”, “MOVE” etc), vertically. Which can look a bit weird…
- Added CPU STOP state information to DMA debugger (| = STOP idle cycle, + = STOP idle cycle and higher IPL detected = STOP ending soon)
- Visual DMA debugger shows conflicting cycles as blinking red pixels.
- Horizontal and vertical position are now included in debugger history output (H/HH)
- Added OR, AND and XOR operators to debugger calculator (|, &, ^).
- sp command parsed attached sprites incorrectly.
- It was not possible to enter debugger anymore if CPU was stuck in stopped state after entering and exiting the debugger once.
- Tracing STOP instruction now works differently, each single step executes one internal STOP “round”.
- Memwatch break point that crossed 64k “bank” didn’t map last 64k “bank” if it was only partially needed.
- Self modifying code (smc) debugger feature now clears detected modifications if 68020+ instruction cache is flushed.
- DMA debugger (both console and visual) better support for variable/toggling horizontal and vertical line counts.
Detailed change log in winuaechangelog.txt
WinUAE 4.9.0 (06.12.2021) released.
Major update: custom chipset emulation rewrite (biggest reason for far too long release cycle)
- Agnus/Alice internal DMA cycle processing and RGA bus pipelining (bitplanes, copper, blitter etc) accurately emulated.
- Programmed display mode support greatly improved, for example cycle accurate horizontal blanking (even if it is changed mid-screen), badly documented BEAMCON0 bit combinations accurately emulated, previously unknown undocumented features emulated and more.
- Blitter internal logic emulation updates, for example blitter register modifications when blitter is active are now accurately emulated, line mode with B channel enabled undocumented behavior emulated and more.
- Chipset edge-cases and chipset version specific undocumented behavior emulation improved, for example Copper waiting for Blitter chipset bug is accurately emulated (which causes visible glitches and was not emulated previously), borderblank glitch if horizontal window is opened early.
- Display emulation is now from hsync to hsync (not scanline to scanline) which enables accurate emulation of left (programmed modes or blanking modified) and right border (normally visible, position where horizontal position wraps around) edge cases without extra hacks, both bitplanes and sprites. Vertical is also from vsync to vsync, for example last visible line of display can be line 0 (or even larger if special programmed mode) which wasn’t fully emulated previously. Multiple DIWSTRT/STOP regions in single scanline supported, including start/stop horizontal wrap around.
- Bitplane DMA overrun condition is not a special case anymore, all overrun conditions are now fully supported, including bitplane wrap around. Overrun can be used to create special modes that are still fully PAL (or NTSC) compatible without usual restrictions (for example it is possible to have full overscan, horizontal scrolling in 64-bit fetch mode and still have most sprites available)
- Overscan+ and Extreme display size options. Can see everything in emulation that real chipset can output in PAL/NTSC compatible modes with adjusted blanking timing when using converters like OSSC. Also OCS Denise blanking bug on first and last line is now emulated and visible.
- Audio internal timing is now accurate, for example low audio period (lower than DMA can support) interrupt and sample reload timing is now cycle-accurate.
New emulated hardware
- CyberVision 64, CyberVision 64/3D and S3 Virge PCI emulation. (S3Trio and S3Virge chipset emulation from PCem)
- Voodoo 3 (8M VRAM) PCI emulation. (Voodoo 3 emulation from PCem)
- M.A.S.T. Fireball (SCSI HD controller)
- Hardital Synthesis (SCSI HD controller)
- A.L.F.2 (OMTI HD controller)
- Combitec HD 20 A/HD 40 A (OMTI HD controller)
- GVP G-Force040 (68040 accelerator)
- GVP A1230 Turbo+ Jaws (68030 accelerator)
- Prelude A1200 clockport expander support
- JIT update (Aranym) + shift instruction flag fix.
- x86 bridgeboard emulation updated to PCem v17 x86 core.
- Recent Picasso96 multimonitor support: usegfx Picasso96 DISPLAYCHAIN is now only forced if uaegfx monitor is monitor id=0 (shared with native chipset). Previously DISPLAYCHAIN was always forced.
- ALT+Space does not anymore open WinUAE window standard menu when input is captured.
- Saving config file: Confirm overwrite if existing file is read-only.
- Do not allow opposite joystick directions at the same time (some games crash..) if mapped using Game Ports panel. It is still allowed if configured using Input panel and it was mapped to left/right/up/down events (not horiz/vert).
- Debugger updates. Configurable disassembly format, DMA debugger DDFSTRT, DDFSTOP, horizontal window, vertical window, blanking markers, full 32-bit/64-bit bitplane/sprite pointer addresses, cycle conflict info, fi command accepts assembly syntax (for example “fi trap #0”).
- FloppyBridge support.
- Picasso96 v3.0+ uaegfx screen dragging and dual palette support.
- uaeserial.device CMD_WRITE with io_Length=-1, EOFMODE and Mark and Space parity support implemented.
- bsdsocket.library SBTC_GET_BYTES_RECEIVED, SBTC_GET_BYTES_SENT, SIOCIFADDR, SIOCIFFLAGS, SIOCIFBRDADDR, SIOCIFCONF, SIOCIFNETMASK, SIOCIFMETRIC and SIOCIFMTU support added.
- All Z2 DMA HD controllers are now 24-bit addressing capable by default (real world capability), checkbox option added to enable full 32-bit capability (emulation only).
- Added CD image select/eject keyboard shortcut. END+F5 = select CD image, END+SHIFT+F5 = eject CD. Statefile quick restore moved to END+F6
- Executable as a disk image mounting now supports FFS and HD disks. Uses DD+OFS if selected file fits (like previously), then DD+FFS, finally HD+FFS (if drive is HD).
- Amiga Bootblock Reader brainfile support (copy ABR package xml files to \plugins\ABR). Used when clicking “?” button in quickstart and disk panels.
- Multi monitor mode window positions are now stored to registry/ini.
- Experimental HDR mode. Supports brightness and contrast adjustment without immediate white clipping or black crush.
- Fixed HAM left border corruption if overscan HAM mode and bitplane horizontal start was earlier than current filter horizontal start.
- CDTV and CD32 CD audio playback statefile restore bugs fixed.
- A2410 emulation fixed.
- NPCap/WinPCap crash if more than 9 network devices was found.
- Fixed GDI handle leak. GUI panel change leaked 2 font handles.
- Floppy emulation rotation speed was slightly out of spec.
- bsdsocket recv/recvfrom() returning truncated data now matches Unix/Amiga behavior. Windows also returned error when data was truncated.
- OSD led font graphics is now generated from real Windows font and is high DPI aware.
- If game controller was plugged in after config was loaded and loaded config had game controller configured in game ports panel, game controller was correctly remembered but type and autofire mode was set to default values.
- 68040/68060 unimplemented FPU instruction emulation fixes, all 68060 FPSP test package tests pass now.
- Softfloat FMOD, FREM update. FSINCOS implemented, calculates both SIN and COS simultaneously, previously FSINCOS calculated SIN and COS separately.
- Add harddrive button tried to incorrectly guess logical geometry and didn’t enable full drive mode if drive didn’t already have RDB. Result was unusable drive.
- CDFS mounting used wrong character set translation functions, files with region specific characters failed to open depending on Windows regional settings.
- “Remove interlace artifacts” last line flickering workaround fix.
- Fixed empty formatted standard HD ADF creation.
- Many minor bugs fixed.
To do before 5.0. (Early 2022 – Summer 2022)
- 68000 interrupt sampling timing needs to be 100% accurate (My cputester + extra tester hardware should solve this). This is the last remaining non-100% accurate part of A500 emulation.
- Detect programmed modes that real world display can’t support. Blank emulated display when detected.
- 4.9 bug fixes.
- Possible optimizations.
- Replace PCem with 86Box?