A big update this time:
The attachment x86EMU_20160417_1544.zip is no longer available
- Fixed various audio bugs.
- Optimized VGA.
- Added VGA synchronization modes: Full synchronization (fully based on the CPU, allowing cycle accuracy) or Old-style and New-style synchronization methods(depending on the Host CPU).
- Fixed keyboard input.
- Improved MIDI by lowering the volume(preventing overflow).
- Added a BIOS Settings menu option to dump VGA&CGA/MDA registers, fonts, VRAM and Color Lookup Tables(CLT) of the Attributes and DAC and timings(text file).
- Added VGA monochrome support ("MODE MONO" command), allowing it to support modes 7h(MDA text mode) and Fh(EGA B/W graphics mode).
- Improved BIOS Video Interrupt (without graphics card ROM installed) to better support the monochrome modes.
- Fixed VGA character set updating and selection.
- Implemented EGA/VGA Switch Sense dipswitches to properly detect the monitor(Monochrome VS Color monitor).
- Fixed screen captures.
- Fixed BIOS Settings menu.
- Added VGA with NMI, Pure VGA(VGA without NMI) modes.
- Added VGA with CGA and VGA with MDA hybrid modes(The adapter switches to CGA or MDA mode when the VGA Protection bit (protecting the CRTC registers) and the Display Enable(CGA/MDA Mode Control Register) are set). This will provide CGA and MDA compatibility modes, while starting out as a VGA. To return to VGA mode, disable the CGA/MDA Display Enable bit(This reenables the VGA CRTC registers), allowing the VGA to be used as normally with VGA timing and clocking.
- Added CGA/MDA ROM support using CGAROM.BIN and MDAROM.BIN files.
- Added full CGA and MDA(Pure CGA and Pure MDA modes) emulation, emulating full CGA and MDA graphics cards using the VGA codebase(It's essentially built on top of the VGA CRTC, but with CGA timings and clocks).
- Fixed PPI ports. They now properly allow the hardware to be detected as MDA/CGA/(EGA/)VGA.
- Using the debugger, the PSP Square key (Numpad 4 on PC) now skips the current REP instruction instead of refreshing the screen(which is no longer supported, as the graphics emulation is paused).
- Added CGA New-style and Old-style NTSC and RGB modes. This will effect the emulated CGA hardware and output (NTSC(Using NTSC Composite conversion from the latest PCEm-X commit(approved by Reenigne)) or RGB monitor).
- Fixed the window updating it's size too much.
- Make screen captures only when there's something to capture(not empty frames).
- Designated new RALT(Right alt/Alt Gr.) keyboard shortcuts to the emulator:
-- RALT-F10: Toggle emulator input(alternative method to the middle mouse button and both mouse buttons at once). Dosbox compatible.
-- RALT-F5: Screen capture.
-- RALT-F6: Start/stop recording audio
-- (RALT-F9: Emulator reserved key for diagnostics dumps when enabled, currently disabled)
- RALT emulator key combinations now no longer will be inputted into the emulated system.
- Loaded ROMs will now all use the .BIN extension. Option ROMs will now be named OPTROM.<number>.BIN and BIOS ROMS will now be named BIOSROM.U<number>.BIN .
- Fixed IBM PC 5160 (808X/8018X CPU) BIOS ROM memory mapping.
- Fixed floppy disk allowing up to 4 Sense Interrupts after reset. This is fully optional. Thus fixes booting and reading using both the Turbo XT BIOS v2.5 and original IBM PC XT BIOS first revision(Tested using the first revision only).
- Added CGA screen aspect mode ("Force 4:3" renamed as "Force 4:3(VGA)").
- Improved all hardware and CPU clocks to be more accurate, using clocks based upon divisions (to get exact 14MHz, 1.19MHz, CGA, MDA and VGA clocks).
- Made the forced display aspect modes (4:3 and CGA) force the display to be their resolution instead of being based on the maximum resolution and resolution provided by software.
- The debugger will now also debug HLT state(The time the CPU is in HLT state, waiting for external signals), providing debugging even when the CPU is in a (semi-)permanent HLT(unresponsive otherwise) state.
- Fixed DMA controller bugs.
- Fixed IBM PC XT keyboard compatibility.
- Added empty DMA DRAM Refresh channel(currently doesn't have any effect, except making the counter run).
- Applied the Keyboard to only auto-initiailize with a 286+ CPU(IBM PC AT).
- Added Floppy Disk Controller 82077A Version, Configure and Lock commands.
- Optimized the GPU renderer (increasing overall emulation performance greatly).
- Optimized CPU Prefetch Input Queue.
- Optimized DMA data transfers.
- Optimized Screen rescaling/resizing.
- Modified the BIOS Settings menu to always show all options, but ignore options chosen when not allowed to be changed(MIDI Player and Loading BIOS Defaults still hidden, since it's not a changable option, and they're unusable when the emulator is running).
The emulation is now accurate enough to even run 8088 MPH(a 2015 CGA demo) with almost full accuracy (except it's Kefrens Bars, which rely on cycle-accurate CPU timing, which isn't supported yet).
https://www.youtube.com/watch?v=VJhpp2Rp_eE