Convert Figma logo to code with AI

OpenEmu logoOpenEmu

🕹 Retro video game emulation for macOS

16,645
1,283
16,645
386

Top Related Projects

11,633

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.

13,959

Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.

13,304

PCSX2 - The Playstation 2 Emulator

12,458

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.

2,416

BizHawk is a multi-system emulator written in C#. BizHawk provides nice features for casual gamers such as full screen, and joypad support in addition to full rerecording and debugging tools for all system cores.

Quick Overview

OpenEmu is an open-source, multi-system game emulator for macOS. It provides a sleek, user-friendly interface for organizing and playing various retro video games across multiple platforms, including NES, SNES, Game Boy, and more.

Pros

  • Unified interface for multiple emulators
  • Easy-to-use library management system
  • Attractive, macOS-native design
  • Support for a wide range of gaming platforms

Cons

  • Limited to macOS only
  • Potential legal concerns with ROM usage
  • Some less common systems may have limited support
  • Requires users to provide their own game ROMs

Getting Started

  1. Download the latest version of OpenEmu from the official website: https://openemu.org/
  2. Install OpenEmu by dragging the application to your Applications folder
  3. Launch OpenEmu and follow the initial setup wizard
  4. Add ROMs to your library by dragging and dropping them into the OpenEmu window
  5. Select a game from your library and click "Play" to start gaming

Note: Ensure you have the legal right to use any ROMs you add to OpenEmu. The project does not provide or endorse the use of copyrighted game files without permission.

Competitor Comparisons

11,633

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.

Pros of RetroArch

  • Cross-platform support (Windows, macOS, Linux, mobile, consoles)
  • Extensive customization options and shaders
  • Larger library of supported emulators (cores)

Cons of RetroArch

  • Steeper learning curve and more complex interface
  • Less polished user experience on macOS

Code Comparison

RetroArch (C):

static void retroarch_main_init(void)
{
   struct rarch_main_wrap *args = NULL;
   frontend_driver_init_first();
   args = (struct rarch_main_wrap*)calloc(1, sizeof(*args));
   rarch_main_init(args);
}

OpenEmu (Objective-C):

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [self setUpHIDSupport];
    [self setUpGameCores];
    [self loadDatabase];
    [self setupPreferencesWindow];
}

RetroArch uses a C-based architecture with a focus on cross-platform compatibility, while OpenEmu is built specifically for macOS using Objective-C, resulting in a more native look and feel for Apple users.

13,959

Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.

Pros of Dolphin

  • Cross-platform support (Windows, macOS, Linux, Android)
  • Emulates both GameCube and Wii consoles
  • Advanced features like netplay, HD texture packs, and save states

Cons of Dolphin

  • Steeper learning curve for configuration and optimization
  • Requires more powerful hardware for optimal performance
  • Limited support for other console emulators

Code Comparison

Dolphin (C++):

void Pad::GetState(u16* pad_state, u32 pad_num)
{
  const GCPadStatus* pad = Pad::GetStatus(pad_num);
  if (!pad)
    return;

  *pad_state |= ((u16)pad->button & PAD_BUTTON_A) ? PAD_BUTTON_A : 0;
}

OpenEmu (Objective-C):

- (void)setupEmulation
{
    [self.gameCoreHelper setupEmulationWithCompletionHandler:^(NSError *error) {
        if (error == nil)
            [self.gameController startEmulation];
        else
            [self presentError:error];
    }];
}

The code snippets show different approaches to handling emulation-related tasks. Dolphin's C++ code focuses on low-level input handling, while OpenEmu's Objective-C code demonstrates a higher-level setup process with error handling.

13,304

PCSX2 - The Playstation 2 Emulator

Pros of PCSX2

  • Specialized for PlayStation 2 emulation, offering deeper compatibility and optimization
  • Supports a wider range of enhancement features like texture filtering and widescreen hacks
  • More active development with frequent updates and bug fixes

Cons of PCSX2

  • Limited to PlayStation 2 emulation only
  • More complex setup process and configuration options
  • Less user-friendly interface, especially for beginners

Code Comparison

PCSX2 (C++):

void GSState::Flush(u32 frame)
{
    // ... (omitted for brevity)
    m_perfmon.Put(GSPerfMon::Flush);
    Sync(frame);
    // ... (omitted for brevity)
}

OpenEmu (Objective-C):

- (void)setupEmulation
{
    [self stopEmulation];
    [self.document setupGameCoreManagerUsingSystemPlugin:self.systemPlugin];
    [self.document.gameCoreManager setupEmulationWithCompletionHandler:^{
        // ... (omitted for brevity)
    }];
}

The code snippets show different approaches to emulation management. PCSX2 focuses on low-level operations like flushing and synchronization, while OpenEmu abstracts these details behind a higher-level API for managing multiple emulation cores.

12,458

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.

Pros of PPSSPP

  • Cross-platform support for multiple operating systems and devices
  • Focuses specifically on PSP emulation, offering advanced features for that platform
  • Active development with frequent updates and improvements

Cons of PPSSPP

  • Limited to PSP emulation only, unlike OpenEmu's multi-system support
  • May require more technical knowledge to set up and configure optimally
  • Less user-friendly interface compared to OpenEmu's polished design

Code Comparison

PPSSPP (C++):

void PSPMixer::Mix(short *stereoout, int numSamples) {
    memset(stereoout, 0, numSamples * 2 * sizeof(short));
    for (int i = 0; i < MAX_CHANNELS; i++) {
        if (channels[i].sampleAddress != 0) {
            MixChannel(i, stereoout, numSamples);
        }
    }
}

OpenEmu (Objective-C):

- (void)startEmulation
{
    if([self isEmulationRunning]) return;
    [self setupEmulation];
    [gameCore startEmulation];
    [self setIsEmulationRunning:YES];
    [self updateControls];
}

The code snippets show different approaches to audio mixing and emulation control, reflecting the specialized focus of PPSSPP on PSP emulation and OpenEmu's more generalized multi-system approach.

2,416

BizHawk is a multi-system emulator written in C#. BizHawk provides nice features for casual gamers such as full screen, and joypad support in addition to full rerecording and debugging tools for all system cores.

Pros of BizHawk

  • More extensive tool set for TAS (Tool-Assisted Speedrun) creation
  • Supports a wider range of platforms, including Nintendo 64 and PlayStation
  • Offers advanced features like Lua scripting for automation and analysis

Cons of BizHawk

  • Less user-friendly interface, steeper learning curve
  • Primarily focused on Windows, with limited support for other operating systems
  • Larger file size and potentially higher system requirements

Code Comparison

OpenEmu (Objective-C):

- (void)loadROM:(NSString *)path
{
    [self.gameCore loadFileAtPath:path];
    [self startEmulation];
}

BizHawk (C#):

public void LoadRom(string path)
{
    Global.Game = Rom.Load(path);
    Global.Emulator = new Emulator(Global.Game);
    Global.Emulator.Start();
}

Both examples show basic ROM loading functionality, but BizHawk's implementation is more modular and object-oriented, reflecting its more complex architecture designed for TAS creation and analysis.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

OpenEmu

alt text

OpenEmu is an open-source project whose purpose is to bring macOS game emulation into the realm of first-class citizenship. The project leverages modern macOS technologies, such as Cocoa, Metal, Core Animation, and other third-party libraries. One third-party library example is Sparkle, which is used for auto-updating. OpenEmu uses a modular architecture, allowing for game-engine plugins, allowing OpenEmu to support a host of different emulation engines and back ends while retaining the familiar macOS native front end.

Currently, OpenEmu can load the following game engines as plugins:

Minimum Requirements

macOS Mojave 10.14.4

Building the default branch requires Xcode 14.3 and macOS Ventura.