# OpenEmu

OpenEmu is an open-source multi-system video game emulator designed for macOS. It provides a plugin interface to emulate numerous consoles' hardware, such as the Nintendo Entertainment System, Genesis, Game Boy, and many more. The architecture allows for other developers to add new cores to the base system without the need to account for specific macOS APIs.
Version 1.0 was released on December 23, 2013, after a lengthy beta testing period. Numerous incremental updates have been released since then, with plans to incorporate support for more consoles in future releases. Some of these in-development cores are available to download in an optional "experimental" cores build (released alongside the regular, "standard" version), containing support for arcade systems using MAME.

## History
### Beginnings

OpenEmu was first released on Wednesday, July 4th, 2007 as OpenNestopia, a Cocoa-port written by Josh Weinberg for then Mac OS X 10.4 Tiger of the NES/Famicom emulator Nestopia (written by Martin Freij). Weinberg and his friend, Ben Devacel, began searching for more developers to port other emulators to macOS, which led to the name change to OpenEmu in 2009, to better describe the multi-system emulator.

### 1.0

OpenEmu 1.0 released on Monday, December 23, 2013 with 12 "cores" emulating Nintendo, Sega, NEC, and SNK's home, tabletop, and handheld consoles from the 3rd through 7th video game console generations. OpenEmu 1.0 needed Mac OS X Lion (10.7.x) to run. A Wednesday, October 15, 2014 (296 days later) midstream update to the OpenEmu library (1.0.4) would introduce Stella, a core emulating the 2600, a 2nd generation console from Atari.

### 2.0

Introduced on Wednesday, Dec 23, 2015, (exactly two years after 1.0) OpenEmu 2.0 was released. OpenEmu 2.0 began requiring a minimum of OS X El Capitan 10.11, dropping support for Mac OS X Lion (10.7.x) through OS X Yosemite (10.10.x). OpenEmu 2.0 introduced 16 new cores along with hundreds of bug fixes and lesser features. The new cores added several 2nd generation cores, support for optical media-based-image games, additionally emulating systems from Sony, Mattel, Bandai, Magnavox, Milton-Bradley, and Coleco. Another midstream update, 2.0.6.1, released Tuesday, Dec 19, 2017 (727 days after 2.0) added support for Mednafen's Sega Saturn branch, with a suggested quad-core i7 CPU to emulate.

### 2.1 and 2.2

OpenEmu 2.1 (Friday, October 15, 2019, 675 days after version 2.0.6.1; "coincidentally," exactly 5 years after the 1.0.4 Stella update) was significant, not for any new cores, but for supporting Metal, Apple's visual API successor to OpenGL and OpenCl, giving OpenEmu significant gains in both performance and battery life.
OpenEmu 2.2 (Friday December 27, 2019, 63 days later) added support for a downstream, Metal-forked version of Dolphin's GameCube branch, building on 2.1's foundation. This brings OpenEmu's number of supported cores to 31.

## Limitations
### 32X Hybrid Games

As confirmed by the OpenEmu developers on their official subreddit, Sega 32X-CD hybrid games (versions of games that could use a 32X cartridge and Sega CD at once, such as Night Trap, Corpse Killer, and Fahrenheit) are not supported. Users are prompted with a "This game requires the Sega 32X attachment" error if attempted.

### GameCube Limitations

At present, GameCube emulation doesn't support Save States (due to continual updates breaking compatibility with saved states); users are encouraged to use in-game saves.
OpenEmu GameCube emulation also does not support the 22 multi-disc GameCube titles at present (despite the main Dolphin branch doing so).

## Features

OpenEmu features a backend that uses multiple game engines while maintaining the familiar, native macOS frontend UI. It also uses modern macOS technologies such as Cocoa and Quartz. A unique feature of OpenEmu is its ROM library, which allows one to import ROM files and view them in a gallery type setting, similar to iTunes. Game info and cover art can be automatically added from OpenEmu's databases.
OpenEmu includes the following features:
* High-quality Metal (formerly OpenGL) scaling, multithreaded playback, and other optimizations
* Real-time 3D effects and image processing
* Graphic filters to enhance display
* Full-screen support
* Ability to play multiple ROMs at once
* Ability to scan attached disks for ROMs
* Automatic downloading of game info and cover art
* Ability to use custom cover art
* Can play ROM hacks for multiple systems.
* A fully featured library, supporting multiple views, collections (categories), and game ratings
* Optional automatic organization of ROM files within the library folder
* Full save state support, including automatic save states
* Enhanced gamepad support for USB controllers and accessibility to Bluetooth (including DualShock 3 controllers, DualShock 4 controllers, Xbox 360 controllers and Xbox One controllers)
* Custom cores for custom systems (For systems like Wii)

## Compatibility

| Video game console | Core | OE Version | macOS compatibility | macOS compatibility |
| Video game console | Core | OE Version | 10.7–10.10 | 10.11–10.14 |
| Arcade (experimental version) | M.A.M.E | 2.0.8 | | |
| Atari 2600 | Stella | 1.0.4 | | |
| Atari 5200 | Atari800 | 2.0 | Does not appear | |
| Atari 7800 | ProSystem | 2.0 | Does not appear | |
| Atari Lynx | Mednafen | 2.0 | Does not appear | |
| ColecoVision | CrabEmu | 2.0 | Does not appear | |
| Famicom Disk System | Nestopia | 2.0 | Does not appear | |
| Game Boy / Color | Gambatte | 1.0 | | |
| Game Boy Advance | mGBA | 1.0 | | |
| GameCube** | Dolphin | 2.2 | Does not appear | |
| Game Gear | Genesis Plus GX | 1.0 | | |
| Intellivision | Bliss | 2.0 | Does not appear | |
| Neo Geo Pocket / Color | Mednafen | 1.0 | | |
| Nintendo 64 | Mupen64Plus | 2.0 | Does not appear | |
| Nintendo Entertainment System | FCEUX or Nestopia* | 1.0 | | |
| Nintendo DS | DeSmuME | 1.0 | | |
| Odyssey² / Videopac+ | O2EM | 2.0 | Does not appear | |
| PC-FX | Mednafen | 2.0 | Does not appear | |
| Sega 32X*** | PicoDrive | 1.0 | | |
| Sega CD / Mega-CD*** | Genesis Plus GX | 2.0 | Does not appear | |
| Sega Genesis / Mega Drive | Genesis Plus GX | 1.0 | | |
| Sega Master System / Mark III | Genesis Plus GX | 1.0 | | |
| Sega Saturn | Mednafen | 2.0.6/2.0.6.1 | Does not appear | |
| Sega SG-1000 | Genesis Plus GX | 2.0 | Does not appear | |
| Sony PlayStation | Mednafen | 2.0 | Does not appear | |
| Sony PlayStation Portable | PPSSPP | 2.0 | Does not appear | |
| Super Nintendo Entertainment System | higan or Snes9x* | 1.0 | | |
| TurboGrafx-16 / PC Engine / SuperGrafx | Mednafen | 1.0 | | |
| TurboGrafx-CD / PC Engine CD | Mednafen | 2.0 | Does not appear | |
| Vectrex | VecXGL | 2.0 | Does not appear | |
| Virtual Boy | Mednafen | 1.0 | | |
| WonderSwan / Color | Mednafen | 2.0 | Does not appear | |
* Default core plugin.
** Version 2.1 and lower must have custom system core.
*** Unable to play the six (6) known Sega 32X CD Titles.

## Reception

Upon its 1.0 release, OpenEmu was positively received, and subject to much online press coverage, praising the software's UI, features, and ease of use. In particular, it was praised by the gaming community for "[bringing] the idea of an emulator for a mainstream, general audience to reality".
As of August 16, 2018, OpenEmu has been downloaded over 10,000,000 times since its version 1.0 release, making it one of the most popular multi-system emulators on macOS.