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, PSP, Nintendo Switch and PS Vita! Play your old classic PC games on Android! It's a cycle-accurate x86 emulator (previously called x86EMU before the rename, This isn't based on the other cpu-emulator called x86emu (lower case)). It's a 8086(IBM PC) up to Pentium II (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, alternatively a i430fx Pentium or i440fx/i450gx Pentium Pro/Pentium II chipset with PS/2 mouse. A 85c496/7 chipset is also supported.) and seperate CMOS settings like the other architectures) emulator(with various, configurable hardware), with up to 80386 timings (80486SX and Pentium using 80386 timings or 1 cycle for newer/unknown timings/instructions, both having no floating point unit)).

In basic CPU's, all generations in between are supported (8086/8088, 80186/80188, 80286, 80386sx/dx, 80486, Pentium, Pentium Pro and Pentium II. All without FPU emulated, other than software FPU emulation support using drivers).

It can run many IBM PC XT games, and also various 286(*) up to Pentium II games. Support for ATAPI CD-ROM (using VIDE-CDD.SYS, OAKCDROM.SYS or compatible ATAPI drivers) also works. Many graphics cards and sound cards can be used (MIDI using a Soundfont renderer inside UniPCemu (recordable by UniPCemu's sound recording functionality) or passthrough(passthrough on Windows only, which is not recordable by the emulator's own recording functionality)), from PC speaker up to Sound Blaster 2.0 and from IBM Monochrome Display Adapter up to ET4000/W32 SVGA(up to 16M colors (in True Color mode) using it's SC15025 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 or PPP 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, unless PPP is used (still required if PPP is started in passive mode instead of active mode, due to PPP services needing to be instructed to start).
Authentication when using PPP when starting in passive mode using the initial text mode authentication can be omitted as long as authentication is performed using PPP (specifying the normal ppp protocol (not pppoe). Authentication is of course only required if credentials are specified in the server's settings). When using PPP, authentication using the initial text mode is optional. If text mode authentication is used (username/password being non-empty), PPP authentication is optional but must match when used.  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 packet server uses a seperate PACKETSERVER.INI configuration file to allow security by limiting login attempts by IP address of the calling program. IP addresses in the file can also be whitelisted.

The packet server allows multiple protocols(slip, pppoe(using an external PPPOE server) and etherslip(slip wrapping ethernet packets instead), as well as a normal PPP connection with IPv4(using the same IP allocation method as the SLIP protocol) and IPX protocols (mapping onto a raw ethernet connection using the Ethernet II IPX protocol))). The server is 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).

To use the server build, install a proper WinPcap or compatible product to get proper functionality working (4.1.3, Win10Pcap or npcap with winpcap compatiblity).

A basic getting started tutorial can be found on Youtube and on the manual (https://bitbucket.org/superfury/unipcemu/wiki/Getting%20started):


UniPCemu.apk 5 MB
UniPCemu.nro 8 MB
UniPCemu.vpk 1 MB
UniPCemu_PSP.zip 1 MB
UniPCemu_win32.zip 1 MB
UniPCemu_win32server.zip 1 MB
UniPCemu_win64.zip 1 MB
UniPCemu_win64server.zip 1 MB

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.

For the PS Vita version: install normally using the VPK file. Then add any files for it to the ux0:/data/Superfury/UniPCemu folder.

For the Switch version, copy the NRO file to SDCard:/switch/

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).

Development log

View all posts