Cemu is a cross-platform Wii U emulator written in C/C++. It emulates the PowerPC-based Espresso CPU and Latte GPU via a dynamic recompiler (IML) and interpreter, and provides high-level emulation (HLE) of Wii U operating system libraries (coreinit, GX2, nn_*, etc.). The architecture is a monolithic desktop application with a wxWidgets GUI, multiple graphics backends (Vulkan, OpenGL, Metal), audio backends (Cubeb, XAudio2, DirectSound), and an abstract input layer supporting various controllers. The core emulation loop loads Wii U game images (WUD, WUX, WUHB), parses RPL modules, and translates PowerPC instructions into native code while rendering graphics via Vulkan/OpenGL/Metal. The codebase also includes a GDB stub for debugging, per-title game profiles, graphic packs for patches, and network service stubs (Miiverse, NIM). It is actively maintained with regular commits and vibrant community contributions.
UnleashedRecomp is a PC port of *Sonic Unleashed* (Xbox 360) achieved through static recompilation. It replaces the original console's kernel, GPU, audio, and input APIs with native implementations, then applies a large set of behavioral patches to the recompiled game code for modern PC features like high resolutions, high frame rates, ultrawide support, and configurable controls. The application includes a full installer that extracts and validates game files from an ISO or directory dump, a custom achievement system, mod loading compatible with existing mod managers, and an ImGui-based UI for settings, achievements, and the installation wizard. The architecture is monolithic but modular: the kernel layer (memory, threading, file I/O) is separated from the GPU backend (with dedicated render thread), audio system, input handling, and OS abstraction for Windows, Linux, and macOS. The project relies on proprietary recompiled code (UnleashedRecompLib) and the original game assets, which are not distributed. The codebase demonstrates high engineering craftsmanship in areas such as deterministic memory allocation, virtual file systems, configuration templates, and cross-platform build orchestration, though it contains hardcoded game-specific addresses and auto-generated data that limit extensibility to other titles.
This repository contains Pound, a Nintendo Switch emulator focused on emulating Switch 1 and 2 hardware. The emulator features a modular architecture with CPU emulation handled by the Ballistic ARM recompiler for performance, GPU emulation translating Switch graphics commands to host APIs (Vulkan, OpenGL, DirectX, Metal), and SDL-based cross-platform windowing, input, and audio systems. Dear ImGui integration provides debugging and configuration interfaces. The codebase demonstrates careful separation of concerns, with distinct subsystems for memory management, CPU state, platform abstraction, and hardware emulation. Notable engineering practices include the clean interface boundary with the Ballistic recompiler, memory allocation abstraction via a host allocator interface, and platform detection utilities. While the project shows active development and solid engineering, it faces typical emulator challenges including platform-specific maintenance burdens and dependency on external shader translation tools.
This repository implements a dual-console emulator targeting PlayStation 3 (RPCS3) and PlayStation 4 (RPCSX/Orbis). The codebase is a large C++ project with a modular architecture: kernel emulation layers for both consoles (syscalls, threads, memory management), CPU emulation (PPU/SPU for PS3, GCN for PS4), GPU emulation (RSX for PS3 with OpenGL/Vulkan backends, GCN shader compiler for PS4), audio backends (Cubeb, FAudio, ALSA), input handlers (DS3, DS4, XInput, PS Move, etc.), network emulation (RPCN, UPnP), and a custom overlay UI system. The project is under active development with frequent commits, though many PS3 firmware modules remain as stubs or placeholders. The architecture separates PS3 and PS4 emulation into distinct directories (`rpcs3/` and `rpcsx/`), sharing a common utility library (`rx/`) that provides synchronization primitives, memory management, and debugging tools. The GPU emulation is particularly sophisticated, featuring a custom shader intermediate representation (IR) for AMD GCN instructions with optimization passes and SPIR-V/GLSL backends. The codebase also includes a comprehensive serialization framework for savestates, a YAML-based configuration system, and a texture cache predictor for GPU performance. Key entry points include the main emulator executables (built from `rpcs3/` and `rpcsx/`), the kernel syscall handlers in `kernel/orbis/` and `kernel/cellos/`, the GPU renderers in `rpcs3/Emu/RSX/` and `rpcsx/gpu/`, and the PS3 firmware HLE modules in `ps3fw/`. External dependencies include Vulkan, OpenGL, FFmpeg, WolfSSL, SDL2, libusb, and several audio libraries. The project is primarily a software application for console emulation, with significant reverse-engineering and research components.