UniPCemu build 2023/01/03 14:55 is now live!

The latest build of UniPCemu is now released!

It has various CPU and hardware improvements, various hardware settings changed to become architecture-specific and the System Management Mode CPU mode added to it's emulation on some emulated architectures!


  • Implemented a configuration option to protect the BIOS boot ROM block.
  • Fixed BIOS flash ROM issues.
  • Optimized BIU memory read caching.
  • Implemented x86 SMM on Pentium, Pentium Pro and Pentium II processors.
  • Improved hidden IDTR/GDTR cache emulation to include access rights.
  • Improved x86 PAE loading and caching of the PDPT entries.
  • Improved PAE and PSE reserved bits faulting.
  • Improved CR4 PGE emulation to flush caches when needed.
  • Improved debug messages.
  • Improved ejected CD-tray to show an icon of an ejected CD-ROM disc tray.
  • Implemented i430fx/i440fx/i450gx STPCLK signal and CPU halting.
  • Made SMRAM compatible with 4 CPUs instead of just two CPUs.
  • Fully implemented i430fx/i440fx/i450gx SMI.
  • Improved ATAPI IRQ handling when finishing a command.
  • Implemented APIC SMI triggers.
  • Implemented serial control lines to immediately send control signals without timing when nothing is queued.
  • Improved APIC reads and writes to non-existing addresses to always be zeroed.
  • Implemented IO APIC SMI signal mapping.
  • Implemented i450gx 512K memory block to be properly unmapped if required to be unmapped.
  • Fixed APIC unmapped error status to work correctly again.
  • STPCLK blocks interrupts only.
  • Improved STPCLK to affect instruction boundaries only outside of SMM.
  • Improved NMI masking to be performed at the CPU itself.
  • Implemented STPCLK during NMI handling.
  • Improved interrupt masking during SMM, NMI and STPCLK assertion.
  • Ignore STPCLK for interrupt handling by (A)PIC during SMM and NMI handling.
  • Simplified memory address precalcs to not be using reserved memory.
  • Fixed maximum memory to be using the proper translated address.
  • Fixed Compaq mid memory block lowering.
  • Cleaned up MMU mapping code unused variables.
  • Improved the information row to allow dynamic content.
  • Fixed debugging row to display content correctly.
  • Fixed i430fx memory remapping.
  • Restored Compaq mid memory remapping.
  • Fixed ISA memory hole start address.
  • Fixed SMM to force a CPL of 0.
  • Implemented CR0 and CR4 register validation and shutdown when executing RSM.
  • Fixed SMM RSM shutdown detection when verifying CR0/CR4.
  • Improved directory autodetection support.
  • Made directory support more cross-platform.
  • Made path seperators proper on non-linux paths.
  • Made the Sound Blaster IRQ configurable as a architecture setting.
  • Split the GPU functionality into the GPU unit from the headers.
  • Fixed code to compile again with the new common settings support.
  • Fixed input settings  to be properly updated again.
  • Cleaned up 386 opcodes.
  • Cleaned up MMU variables.
  • Made the video card input to the 8042 setting a parameter to the initialization function.
  • Moved the CMOS loading and saving support to the BIOS.
  • Fixed missing CMOS function in the BIOS module.
  • Moved all architecture-specific hardware settings to be automatically loaded into and from the architecture-specific settings instead of global settings.
  • Fixed converting from the old settings file format to the new settings file format.
  • Fixed the settings version to be compatible with older versions again.
  • Fixed CMOS saving to properly leave the new transferred fields alone in the settings file.
  • Fixed missing comments needing to be moved to the CMOS fields.
  • Cleaned up settings loading code.
  • Renamed the video 'synchronization' setting field to become 'videocardsynchronization'.
  • Moved not common PS/2 keyboard data to the PS/2 keyboard module.
  • Fixed kp* key shift handling.
  • Implemented backing storage for all XT RTC registers.
  • Implemented the XT RTC status register.
  • Implemented the XT RTC counter/RAM reset writes.
  • Implemented the XT RTC "GO" command.
  • Implemented the XT RTC Alarm function in with limited compatibility.
  • Properly trigger OPL2 CSM note-off.
  • Fixed OPL2 CSM forcing a key on.
  • Made the 320us timer use further division of the 80us clock.
  • Implemented different XT RTC Synchronization modes. It can now not synchronize again, fully synchronize or synchronize to 100th or whole seconds.
  • Improved the OPL2 timer control register to behave better than it did before with timer status flags, clearing them in some cases.
  • Updated the common emulator framework to the latest commit.
  • Cleaned up CMOS time updating code.
  • Fixed scancode set 0 tilde key break scancode.
  • Updated SDL2 on Windows and Android to version 2.26.1

Common emulator framework:

  • Made UniPCemu always support a debug text surface for text rendering.
  • Fixed rendering of text surfaces when other modules aren't initialized yet.
  • Fixed invalid CPU speed display when the speed is undefined.
  • Moved the debug surface text layer to the common emulator framework.
  • Added a simplified overlapping detection support for precalculated values.
  • Improved video updates on static screens to be properly handled.
  • Count the SDL_RENDER_TARGETS_RESET fixed on the SDL2 2.24.2 and up and disable the bugfix.
  • Added a CD tray to the custom font.
  • Fixed the definition of the triangle UTF code point.
  • Improved the information row to allow dynamic content.
  • Cleaned up screen updates when using static screen resolutions.
  • Added a global define for the path seperator of the host.
  • Made path seperators proper on non-linux paths.
  • Split more functionality into the GPU structures.
  • Moved GPU framerate settings to be using a set function.
  • Made all input settings local to the input unit.
  • Properly initialize input settings.
  • Cleaned up GPU framerate to no longer require bios headers.
  • Fixed missing main function headers including.
  • Fixed storage detection.
  • Fixed GPU missing input header for input OSK support.
  • Fixed missing setting loading when not compiling UniPCemu.
  • Moved common storage and setting support to the emu_misc header.
  • Cleaned up unused log headers.
  • Don't make releasing last keys take the shift status into account.
  • Made the amount of usable input keys a global define.
  • Moved common keyboard data to the input module.
  • Removed the PS2 keyboard data module, as it isn't common.
  • Fixed PSP-style OSK keypad to use the correct kp key names and mapping for the divide, multiply, minus and plus keys.
  • Fixed PSP WiFi connection menu input delay code to compile again.


UniPCemu.apk 5 MB
Jan 03, 2023
UniPCemu.nro 8 MB
Jan 03, 2023
UniPCemu.vpk 1 MB
Jan 03, 2023
UniPCemu_PSP.zip 1 MB
Jan 03, 2023
UniPCemu_win32.zip 1 MB
Jan 03, 2023
UniPCemu_win32server.zip 1 MB
Jan 03, 2023
UniPCemu_win64.zip 1 MB
Jan 03, 2023
Jan 03, 2023

Get UniPCemu

Leave a comment

Log in with itch.io to leave a comment.