A downloadable emulator for Windows and Android

Ever wanted to play your old PC games on your device(mobile and modern PC)? Now you can, with more accuracy than ever!

The UniPCemu (Universal PC emulator) emulator, originally made to play games on the PSP, now built for Android, Windows and PSP! Play your old classic PC games on Android! It's a cycle-accurate x86 emulator (previously called x86emu). It's a 8086(IBM PC) up to Pentium (Compaq Deskpro 386, Compaq Deskpro 386 with PS/2 mouse(adds PS/2 mouse to the Compaq Deskpro 386 chipset, optional BIOS ROM replacement(loading it instead, or alternatively a i430fx Pentium chipset with PS/2 mouse) and seperate CMOS settings like the other architectures) emulator(with various, configurable hardware), with up to 80386 timings (80486 and Pentium using 80386 timings or 1 cycle for newer/unknown timings, both having no floating point unit)).

It can run many IBM PC XT games, and also various 286-Pentium* games. Support for ATAPI CD-ROM (using VIDE-CDD.SYS or OAKCDROM.SYS) also works. Many graphics cards and sound cards can be used (MIDI using a Soundfont emulator(recordable) or pasthrough(passthrough on Windows only, not recordable)), from PC speaker up to Sound Blaster 2.0 and from IBM Monochrome Display Adapter up to ET4000 SVGA(up to 64K colors using it's Sierra Hi-color DAC)!

EMS is available using the Lo-tech 2MB EMS board on the XT and various EMM emulation software(e.g. JEMM386, EMM386) on IBM AT and up.

Only XBox 360 controllers, PC mouse&keyboard, PSP(-style) input or touch screen input is supported. When using a different controller, use x360ce: https://github.com/x360ce/x360ce . Input is either mapped using PSP controls(Q/W/arrows/enter/backspace(and one key to the left on Qwerty keyboards), 2/4/6(also escape on android)/8(also carriage return on android) numpad and escape/space(space on Android only)) or Direct Input(see wiki controls page for more details: https://bitbucket.org/superfury/unipcemu/wiki/Controls ).

Windows builds come in two flavours: both the normal build and a server build. The server builds can be used to connect from another emulator using a TCP port to simulate a SLIP dial-up internet connection(e.g. Dosbox Windows 95 or Arachne web browser) with optional dial-up username and password. The protocol to enter(slip) is always required. A simple automatic script that can be used for connecting Windows 95(set up for a SLIP connection) can be found at https://bitbucket.org/superfury/unipcemu/raw/d056951ee021b2f1171764b5d1162249055... . The server builds disable the modem's ability of dialing out and receiving connections, replacing said functionality by the ISP server instead(allowing it to be dialed only, dial out/answer being disabled on the connected modem on the serial port to replace it's connection functionality). The server will run when the emulation is running normally, as a modified modem. Settings for said server (authentication and ethernet connection settings(required for using it's functionality)) can be done by editing the SETTINGS.INI file, within the modem section.

The SLIP server allows multiple protocols(slip, ppp(using an external PPPOE server) and etherslip(slip wrapping ethernet packets)). It's also multiuser (allowing a theoretical of 256 simultaneous client connections at the same time).

Please report issues and bugs at the bugtracker: https://bitbucket.org/superfury/unipcemu/issues?status=new&status=open

* Note on emulated systems: Due to cycle-accuracy being too inaccurate on the 80286 AT system, currently the BIOS for the default 6MHz 80286 (2nd revision motherboard) won't allow the BIOS to continue due to the clock not being accurate enough. The Compaq Deskpro 386 architecture can be used to run the games on a 80386 or newer instead. Or adjusting the speed of the emulated system to a compatible speed(although not cycle-accurate for games requiring it).

A note on Windows builds: UniPCemu can hang for a small time when activated on Windows, but eventually becomes responsive again. The exact cause is still unknown, but suspected to be the SDL2 backend (Since UniPCemu does nothing special as far as is currently known and should be receiving and handling events constantly).

Install instructions

A basic getting started tutorial can be found at the wiki(manual): https://bitbucket.org/superfury/unipcemu/wiki

There's also a getting started video (which can be found within the external links on itch.io and on the getting started tutorial on the manual.

For the PSP version: Extract into the folder "ms0:/PSP/GAME/UniPCemu". It's compatible with any PSP device to be able to run(both official firmware and non-official firmware). After that, follow the getting started tutorial to get it up and running.

A basic XT BIOS that can be used is the Generic Super PC/Turbo XT BIOS(http://www.phatcode.net/downloads.php?id=101). Copyrighted ROMs for AT and up need to be supplied by the user itself (80386 and up might run the SeaBIOS and it's VGA ROMs. CGA graphics and below usually don't require a seperate ROM (with IBM BIOSes and the Generic Super PC/Turbo XT BIOS) and run out-of-the-box.

Empty, unbootable(except for floppy disks, which contain a simple message after which it reboots when pressing a key) disk images can be createn from the Settings menu. Other disk images will need to be supplied by the user.

Configuration can be done using either the Settings menu or the configuration textfile(.ini textfile). The application folder on Android can be redirected to another path using a simple redirect.txt containing the path to use(one-line file contents is the path to redirect the files directory to), as long as it's on the same (android internal) memory card.

Important note: Android can close the app to preserve memory when backgrounded and running other apps, because the app can't free memory due to it needing memory to keep emulation state and can't save said state somewhere else. This isn't a bug.

Be sure to copy or backup the application's data folder(named com.unipcemu.app, usually located in the Android/data folder on the internal memory) if deleting the app(except when redirecting the folder using a redirect.txt file within it). Not doing so will cause all saved data that's used (and stored) there to be deleted permanently if uninstalling the app. It isn't backed up automatically! A safe way of handling this is to use a redirect.txt file containing the path on the same disk (the absolute path, in Linux syntax, e.g. ~/UniPCemu or /mnt/sdcard0/UniPCemu; This depends on your Android build and device manufacturer) of the folder that contains the files instead(on a different, device global internal memory folder).

If you're experiencing a black screen that stays black permanently (more than 10 seconds) when restoring the app to run on Android, try making it inactive for a few seconds (5 or so) and restore it again. This seems to be an unknown issue regarding reloading the video context, which for unknown reasons doesn't always go right when restoring the app when it's deactivated. This bug should have been fixed(please report if it still happens), but can still happen in another form (detecting a wrong display resolution when restoring the app window)

The PSP version can take a long time (over 30 seconds) to start up for the first time, due to it saving a new settings.ini file to the installation folder. The same thing applies when saving the settings from the configuration menu or quitting the app with changed CMOS settings. This isn't a bug, but just takes a long time due to the ini file processing being slow on the PSP memory stick (and perhaps the CPU as well). The loading time is reduced to around 29 seconds for subsequent starting of the emulator.


UniPCemu_PSP.zip 931 kB
UniPCemu_win64.zip 1 MB
UniPCemu_win64server.zip 1 MB
UniPCemu_win32.zip 1 MB
UniPCemu_win32server.zip 1 MB
UniPCemu.apk 4 MB

Development log

View all posts