---
layout: post
title: "86Box v4.0"
description: "Release for August 2023."
authors: ["richardg867"]
image: "/assets/images/v4.0/hero.png"
---

{% include imageheading.html url="/assets/images/v4.0/hero.png" separator=" " %}

This is the August 2023 update to 86Box, bringing many improvements, bugfixes (especially for non-Windows users) and some new hardware.

It's certainly been a while since [our last update]({% post_url 2022-11-26-86box-v3-11 %}). Needless to say, despite the bumpy ride to this release, **we're still alive** and working on making 86Box great. We have some **exciting new features** currently being worked on for future updates, and from now on, we'll be sharing work-in-progress builds of new features with our [**Patreon supporters**](https://www.patreon.com/86box), with no impact to our regular release schedule; the first WIP build is already available to supporters, so go check it out.

---

## Main features

### Input

There have been many fixes to **keyboard and mouse input**. Mouse emulation was overhauled to **massively improve responsiveness**. The AT and PS/2 keyboard controller emulation was also reworked to hopefully eliminate the longstanding issue of keyboard and mouse **input suddenly stopping**, as well as other issues with PS/2 keyboards and mice on some machines.

Keyboard input on Linux and macOS hosts is now significantly improved, fixing issues with missing or mismatched keys particularly on **international keyboards**, as well as key holding. Absolute mouse input on X11 Linux hosts, which is used when running 86Box through a **virtual machine or VNC**, was also fixed.

### ATI Mach8/32

The [**Mach8 and Mach32**](https://en.wikipedia.org/wiki/ATI_Mach_series) were clones of the **IBM 8514/A** video accelerator which helped ATI gain market momentum in the early 1990s. 86Box now provides the first ever **functional emulation** of these cards. The Mach32 in particular was a popular card, available in [five different bus variants](https://www.os2museum.com/wp/children-of-the-bus-wars/ "OS/2 Museum: Children of the Bus Wars") (of which we currently emulate ISA, MCA, VLB and PCI) as well as integrated to many motherboards, and had wide operating system support.

### Network

[**VDE**](https://github.com/virtualsquare/vde-2) virtual networking is now supported for connecting 86Box machines and even other emulators to each other on Linux and macOS hosts. While Windows is notably not supported by VDE, we're working on a solution, so stay tuned. The [86Box documentation](https://86box.readthedocs.io/en/v4.0/hardware/network.html#vde) has a full setup guide for creating a VDE network.

A nasty emulator crash when **PCap** fails to initialize was fixed, and the **SLiRP** library was updated to its full version on Windows and macOS hosts for potential performance improvements.

---

## Changelog

### Emulator

* Added **PipeWire support** for audio on Linux hosts
* Added **pure Wayland support** for Linux hosts
* Fixed **broken Linux AppImages** for x86 32-bit, ARM32 and ARM64 architectures
* Fixed **sound output issues** on some Linux hosts due to mismatching audio libraries
* Fixed incorrect **key holding behavior** on Linux and macOS hosts
* Fixed key mapping on Linux and macOS hosts with **international keyboards**
* Fixed **Keyboard requires capture** option not allowing keyboard capture if no mouse is enabled
* Fixed **Shift+F10** temporarily blocking keyboard input
* Fixed **absolute mouse input** on X11 Linux hosts
* Fixed **4th and 5th mouse buttons** on Windows hosts
* Fixed inconsistent **mouse sensitivity** with a scaled window or full screen mode
* Fixed Direct3D 9 renderer scaling on **HiDPI monitors**
* Fixed **Vulkan support** on Linux hosts
* Fixed keyboard input through the **secondary monitor window** on Windows hosts
* Fixed crash when exiting with a **secondary monitor window** open
* Fixed **secondary monitor** freezing after changing renderers

### User interface

* Added **soft power button** for ACPI-capable machines
* Added host architecture and dynamic recompiler information to the **About window**
* Added translations: **Catalan** by [OBattler](https://github.com/OBattler), <span class="emoji">🇸🇰</span> **Slovak** by [OBattler](https://github.com/OBattler) and [**daviunic**](https://github.com/daviunic)
* Fixed default file extension for new **floppy, MO and ZIP images** on macOS hosts
* Fixed **full screen keyboard shortcuts** leading to stuck keys or not working at all
* Fixed changes to **video card settings** being discarded after changing machines
* Fixed new **raw disk images** not using the exact specified CHS geometry
* Fixed text editing incorrectly enabled on **hard disk and removable drive tables** (not that it did anything)
* Fixed **CD-ROM mute** option not showing its current state
* Fixed status bar icons still showing activity with **Update status bar icons** turned off
* Fixed **MCA device list** missing leading zeros on device IDs
* Fixed missing **AppImage icon** on more Linux desktop environments
* Changed default hard disk image type to **dynamic VHD**
* Changed **macOS app icon** to conform to Apple standards
* Updated translations: **Chinese (Taiwan)**, **Ukrainian**

### Machines

* Re-added **Compaq Deskpro 386** with proper chipset emulation
* Added **IBM PS/2 Model 70 Type 4** 486 machine (with forced Softfloat FPU due to strict BIOS tests)
* Added **Gemlight GMB-P54SPS** Socket 5 motherboard
* Added **Packard Bell PB810** Socket 7 motherboard
* Added **Toshiba Infinia 7200** Socket 7 motherboard
* Added **ECS P6BAT-A+** Slot 1 and Socket 370 motherboard
* Added real time clock to the **Vendex HeadStart Turbo 888-XT**
* Added AGP support to the **QDI EXCELLENT II**
* Added PS/2 mouse support to the **Epson Action PC 2600** and **TriGem 486G**
* Added on-board S3 ViRGE/DX video to the **Intel TC430HX**
* Added on-board ATI Mach32 video to the **IBM PS/ValuePoint P60**
* Fixed **Acer A1G** crashing the emulator on 64-bit builds
* Fixed **Acer V35N** hanging during POST
* Fixed **PC Chips M729** BIOS misbehaving and not retaining CMOS settings
* Fixed **ASUS P5A** instability in DOS
* Fixed **IBM PC 330 (type 6573)** BIOS misbehavior and missing on-board devices
* Fixed keyboard layout issues on the **ECS Elite UM8810PAIO** and **Samsung SPC7700P-LW**
* Fixed incorrect memory detection on the **Phoenix XT clone** and **Tandy 1000** machines
* Fixed OS/2 crashing the emulator on the **IBM PS/2 Model 80**
* Fixed PS/2 mouse not being detected on the **Samsung SPC-4216P**
* Fixed game port joysticks on the **IBM PCjr**
* Fixed PCI device IRQs on **ALi M1489** machines and the **ECS P6BAP**
* Fixed CD-ROM boot on the **AMI Apollo**
* Fixed discrete video card support on the **TriGem 486G**
* Fixed **Olivetti M19** font corruption
* Fixed **Amstrad PC20(0)** font corruption in MDA mode
* Fixed incorrect keyboard layout on **Amstrad** machines
* Fixed incorrect on-board devices on the **ASUS PCI/I-486SP3**
* Fixed incorrect PCI slot layout on the **ASUS P2B-LS**
* Fixed **ASUS P5A** and **Gigabyte GA-5AX** hanging or rebooting on ACPI shutdown
* Fixed **DataExpert EXP8551** and **PC Partner MB500N** filed on the wrong category (now Socket 7 Single Voltage)
* Fixed incorrect Planar IDs on the **IBM PS/2 Model 55SX** and **60**
* Changed **IBM PCjr** memory size selection to a minimum of 64 KB with 64 KB increments
* Increased maximum RAM on the **Gigabyte GA-586IP** to 256 MB

### Hardware

* **Core**
  * Added **Softfloat FPU** option for higher floating point accuracy at the cost of performance
  * Added **PIT mode** option for higher Programmable Interval Timer accuracy at the cost of performance
  * Added **Celeron Covington** CPU for when you feel like having no L2 cache
  * Added **Page Global Enable** CPU feature to the Pentium II and its derivatives
  * Improved performance of some **MMX workloads** on x86 hosts
  * Reworked **PCI slot assignment** system - Windows may redetect installed cards!
  * Fixed PCI functionality on Windows 95 with the **430NX** and other early PCI chipsets
  * Fixed certain machines crashing the emulator when set to **16 MB RAM** or higher
  * Fixed **OpenStep** text corruption and font sizing issues due to missing **FXTRACT** FPU instruction
  * Fixed graphical glitching on 3D games with the **Pentium II Deschutes** and **Celeron Mendocino** due to broken **FXSAVE and FXRSTOR** FPU instructions
  * Fixed **NetWare 6** failing to boot on the Pentium II and its derivatives
  * Fixed interrupt controller emulation inaccuracies mostly affecting MCA **IBM PS/2** machines
  * Fixed a small MMU mapping inaccuracy on **32-bit ALU instructions**
  * Fixed undocumented 8088 and PIT quirks abused by the **Area 5150** demo (we're working on making it work!)
* **Display**
  * Added **ATI Mach8** ISA and **Mach32** ISA/MCA/VLB/PCI video cards
  * Added **INMOS XGA** ISA video card
  * Added 8 MB video RAM option to the **Number 9 9FX 771** (S3 Vision968) card
  * Fixed **IBM XGA** crashing the emulator if the primary video card is not VGA
  * Fixed **IBM XGA** BIOS loading issues resulting in POST failures (again)
  * Fixed QBasic hanging on exit on **EGA** cards
  * Fixed text corruption with **S3** cards on XFree86
  * Fixed **S3 ViRGE/GX** family displaying a black screen on XFree86
  * Fixed cursor glitching with Miro and SPEA **S3 Vision968** cards on Windows 95
  * Fixed cursor glitching with **Tseng ET4000/W32** cards on some Windows versions
  * Fixed graphics corruption with **ATI Mach64** cards on some video modes and Windows versions
  * Fixed **Hercules** text mode missing the rightmost column
  * Fixed **Hercules Plus** graphics corruption in RAM font mode
  * Fixed **Hercules Plus** and **InColor** screen wrapping glitch
  * Fixed font selection and color palette on the **Compaq Portable** gas plasma display
  * Fixed graphics corruption on **EGA** monochrome modes
  * Fixed specific graphics corruption issues on the **IBM 8514/A** and **XGA**
  * Fixed small emulation inaccuracies on **CGA**, **EGA** and **Cirrus Logic** cards
  * Fixed **Voodoo Banshee/3** screen wrapping glitch in 2048x1536 mode
  * Fixed **DDC monitor size** data to prevent Xorg from defaulting to 2048x1536 or other high resolutions
  * Fixed incorrect video RAM detection on **S3 Vision864**, **Vision964**, **Trident TGUI9400** and **TGUI9440** cards
  * Fixed **Reply Video Adapter** (Cirrus Logic GD5426) MCA card ignoring the configured video RAM amount
  * Fixed BIOS error on **Cirrus Logic MCA** cards
  * Fixed incorrect detection of the **Compaq EGA**
  * Fixed **IBM 8514/A** and **XGA** incorrectly selectable alongside incompatible VGA cards
  * Changed **200-line CGA** mode to no longer double to 400 lines
* **Input**
  * Reworked **AT-PS/2 keyboard controller emulation** to fix random loss of input
  * Increased **mouse polling rate** to improve responsiveness
  * Added Command + Forward Delete shortcut for the **Insert key** on macOS hosts
  * Fixed **serial mouse detection** on some Linux distributions
  * Fixed 3-button mode on the **Logitech serial mouse**
  * Fixed **PS/2 mouse** on SCO UNIX
  * Fixed **4-axis 4-button joystick** on Windows hosts
  * Fixed **vJoy driver** crashing the emulator when configured as a joystick
* **Sound**
  * Added support for **up to 4 sound cards** per machine
  * Fixed **FluidSynth** not working on Linux and macOS hosts (for real this time)
  * Fixed incorrect default settings for **FluidSynth**
  * Fixed **AdLib Gold** hanging the emulated machine
  * Fixed **Ensoniq AudioPCI** audio distortion on some games
  * Fixed **MPU-401 intelligent mode** freezing some games
  * Fixed **Windows Sound System** crashing the emulator if OPL functionality is disabled
  * Fixed VIAFMTSR software OPL3 emulation on **VIA on-board sound**
  * Fixed **AcerMagic S20** and **miroSOUND PCM10** sound cards not being detected by some tools
  * Fixed incorrect default IRQ (now 5) on the **AcerMagic S20** and **miroSOUND PCM10**
  * Fixed MIDI input corrupting large SysEx messages on the **MPU-401** and compatible sound cards
  * Fixed **Ensoniq AudioPCI** incorrectly identifying as ES1373 instead of ES1371
  * Fixed **VIA on-board sound** impacting emulation performance when supported by the machine's chipset but not used
  * Moved **Innovation SSI-2001**, **CMS / Game Blaster** and **Gravis Ultrasound** to the new multiple sound card selector
  * Changed **Ensoniq AudioPCI** codec selection to reflect actual ES1371 cards
  * Updated **FluidSynth** library on Windows hosts to no longer require an external DLL
  * Updated ymfm library to fix a small **OPL4** inaccuracy
* **Network**
  * Added [**VDE**](https://github.com/virtualsquare/vde-2) virtual networking support for Linux and macOS hosts
  * Added **Null Driver** option to connect the network card to an empty network, replacing the **None** option
  * Fixed **PCap** crashing the emulator upon failing to initialize
  * Fixed NetWare packet corruption on **NE2000 cards**
  * Fixed **Western Digital WD8003E/A** MCA cards not working when configured for IRQ 4 or 15
  * Updated **SLiRP** library on Windows and macOS hosts
* **Ports**
  * Added **serial port passthrough** to real ports and named pipes
  * Fixed **PostScript printer** not working on macOS hosts (for real this time)
  * Fixed serial ports not working on later **ALi chipsets**
  * Updated the ESC/P printer's **FreeType** library on Windows hosts to no longer require an external DLL
* **Storage**
  * Added ATAPI and SCSI **CD-ROM drive model selection** with more options
  * Added **Monster FDC** floppy drive controller card
  * Added generic **tertiary and quaternary** floppy drive controller cards
  * Added **Western Digital WDXT-GEN** ISA MFM controller card
  * Added **XTIDE BIOS variant** specifically for NEC V20/V30 CPUs
  * Fixed **Adaptec AHA-154x** and **BusLogic** SCSI controllers crashing the emulator on FreeBSD
  * Fixed slow detection of **empty IDE channels** on Linux
  * Fixed **XTA** controllers not working properly
  * Fixed **XTIDE BIOS** error on NEC V20/V30 CPUs
  * Fixed **mounted folders** discarding invalid characters used by some DOS application CDs
  * Fixed **ATAPI CD-ROM** not working on Solaris 2
  * Fixed **BusLogic** and **Rancho RT1000B** SCSI controllers not working with specific versions of their DOS drivers
  * Fixed **Tekram DC-390** SCSI controller not resetting devices attached to it
  * Fixed **SCSI CD audio** issues on OS/2 and on NCR ISA SCSI controllers
  * Fixed SCSI ID assignment on the **IBM PS/2 SCSI Adapter**
  * Fixed dynamic and differential **VHD images** re-creating as fixed images if deleted
  * Fixed **VHD images** with more than 63 (IDE) or 99 (SCSI) sectors per track not being loaded correctly
  * Fixed emulator crash with `hdd_image_load()` message when loading **differential VHD images** made on different timezones
  * Fixed **mounted folders** remaining locked on macOS hosts after the CD-ROM is ejected
  * Fixed **cassette** incorrectly available on machines without cassette support
* **Other**
  * Fixed **ISA RTC cards** not being detected by some software
  * Fixed **ISA RTC cards** reporting an incorrect year in some cases
  * Fixed **ISABugger** incorrectly available on machines without ISA

### Known issues

* Some applications which heavily depend on specific **8088 CPU behavior** may not work properly
* The **Ensoniq AudioPCI** no longer works with the 2001 Creative WDM driver (`SBPCI_WebDrvsV5_12_01.exe`); [this driver is designed for ES1373/CT5880 cards only, has identical BSOD issues on a real ES1371, and only works in VMware and previous versions of 86Box due to emulation inaccuracies](https://messaroundery.net/2023/09/19/ensoniq-es1371-driver-bug "Ensoniq AudioPCI ES1371 and the driver bug nobody found")
* **Serial port passthrough** is not complete and may require reconfiguration in a future version
* **Serial port passthrough** may randomly stall the emulated machine if the other end is not connected
* The **ATI Mach8** and **Mach32** may not render some very specific video modes correctly
