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.
shadPS4 is a PlayStation 4 emulator for Windows, Linux, and macOS, written in C++20. It emulates the PS4's AMD GCN GPU via a custom shader recompiler that translates GCN instructions to SPIR-V, and implements high-level emulation (HLE) of PS4 system libraries (kernel, libc, networking, audio, video, input, etc.). The architecture is monolithic with modular subsystems: a Vulkan renderer with texture/buffer caches, a shader recompiler with IR optimization passes, a file system abstraction supporting host files and ZArchive, and an ImGui-based debug UI. While many library functions are stubbed or partially implemented, the core GPU and CPU emulation is functional enough to run several commercial games. The codebase demonstrates strong engineering practices with reusable common utilities (bitfields, slot containers, thread-safe queues) and a well-structured shader compilation pipeline. It is a hybrid project, combining software application development with significant reverse-engineering and data analysis of PS4 firmware and GPU architecture.
Nostalgist.js is a TypeScript library that provides a simplified API for running retro console emulators in web browsers using RetroArch compiled via Emscripten. It handles the complex setup of Emscripten modules, virtual file systems, and RetroArch configuration, allowing developers to launch games with minimal code. The library supports a wide range of consoles (NES, SNES, Game Boy, etc.) with sensible defaults for loading cores and ROMs from CDNs, while also allowing custom resolvers. It includes features like save/load states, SRAM management, screenshot capture, and programmatic input control. The codebase is well-structured with strong TypeScript types, comprehensive tests (integration and e2e), and a clean class hierarchy. Notable highlights include a flexible file resolution system that handles various input formats (URLs, Blobs, ArrayBuffers, etc.) and a clever patching mechanism for importing Emscripten modules as ES modules.
bsnes is a multi-platform Super Nintendo / Super Famicom emulator with an integrated Game Boy core (SameBoy) used for Super Game Boy support and also buildable as a standalone or libretro core. The desktop frontend in target-bsnes loads ROMs, applies BPS/IPS patches, manages save states and rewind, records movies, provides cheat search/editing, maps input, and applies video shaders. The emulation layer in bsnes/sfc is extensive: cycle-accurate CPU/PPU/DSP/SMP, a high-performance alternate PPU, and a broad collection of coprocessor emulations (SA-1, SuperFX, CX4, DSP-1/2/4, SPC7110, SDD1, MSU1, and others). ROM identification is heuristic and normalized into manifests, after which CPU, coprocessor, and PPU threads are synchronized to produce frames, with audio/video/input isolated behind the ruby driver layer.
macintosh.js is a desktop application that emulates a 1991 Macintosh Quadra running Mac OS 8 using Electron and a WebAssembly port of the Basilisk II emulator. The architecture consists of three main components: the Electron main process handling application lifecycle and system IPC, the renderer process managing the UI and user input via canvas, and a WebWorker running the emulator core. Communication between threads uses SharedArrayBuffers and Atomics for synchronized access to video, audio, input, and ethernet data. The application provides virtual disk storage through a host folder mapping and basic ethernet networking via UDP broadcast for local AppleTalk communication.
UTM is a full-featured virtual machine host for iOS and macOS, built on top of QEMU and Apple's Virtualization.framework. It allows users to run operating systems such as Windows, Linux, and macOS on Apple devices. The application provides a SwiftUI-based interface for creating, configuring, and managing virtual machines, with support for both emulation (QEMU) and native hypervisor (Apple Virtualization) backends. Key features include SPICE-based display and input, USB device passthrough, shared directories, clipboard synchronization, remote access via a custom TLS-secured protocol, and AppleScript automation. The architecture is modular, with separate layers for configuration models (Codable structs), platform-specific UI (iOS/macOS/visionOS), services (VM lifecycle, SPICE I/O, logging), and a remote server/client component. The build system is complex, involving cross-compilation of patched QEMU, SPICE, and dozens of other libraries via shell scripts, and the project supports multiple product variants (standard, SE with threaded interpreter, remote-only).
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.
RetroAssembly is a full-stack web application for self-hosting a personal retro game collection and playing it directly in the browser via emulation. It provides a complete library management system for ROMs, save states, favorites, and launch history, with a rich UI built on React 19, Radix UI, and Tailwind CSS 4. The backend uses Hono with Drizzle ORM and SQLite (Node.js) or Cloudflare D1 (Workers), with file storage abstracted for local filesystem or Cloudflare R2. Emulation is powered by Nostalgist.js using libretro cores, supporting dozens of platforms with per-platform core options, BIOS validation, shaders, rewind, and auto-save. The app features multi-user accounts with shared library mode, keyboard/gamepad navigation via spatial navigation, a virtual gamepad for touch devices, internationalization with 12 languages, and a Docker-first deployment model. The architecture is dual-runtime (Node.js or Cloudflare Workers), with a Vite-based build system and pnpm workspaces. While the codebase is well-structured and demonstrates strong engineering patterns, it carries medium technical drift due to pinned CDN commit hashes, patched third-party packages for SSR compatibility, and the complexity of maintaining dual runtimes.
Unicorn Engine is a lightweight, multi-architecture CPU emulation framework derived from QEMU. It provides a pure C API with bindings for Python, Go, Java, Rust, Ruby, .NET, Haskell, Pascal, Zig, and VB6. The engine supports ARM, ARM64, M68K, MIPS, PowerPC, RISC-V, S390X, SPARC, TriCore, and x86 (16/32/64-bit). It is used primarily for security research, reverse engineering, fuzzing, and dynamic analysis of binary code. The architecture is a library with a central C API that exposes memory mapping, register access, hooks (code, block, memory, interrupt, instruction, syscall, TLB), and context save/restore. The core emulation logic is based on QEMU's TCG (Tiny Code Generator) for dynamic binary translation, with a custom glib compatibility layer to eliminate external dependencies. The repository includes extensive regression tests, fuzz targets, and sample programs for each architecture and binding. While the engine is actively maintained and widely used, it carries technical debt from its QEMU fork (based on QEMU 5.0.1) and auto-generated binding constants that may drift from the C API.
melonDS is a Nintendo DS and DSi emulator implemented in C++ with a Qt/SDL frontend. The core provides cycle-accurate emulation of the ARM9/ARM7 CPUs (with both an interpreter and JIT backends for x86_64 and AArch64), 2D/3D GPU (software and OpenGL), SPU, DMA, cartridge slot (retail, homebrew, R4), DSi-specific hardware (AES, NAND, camera, I2C, DSP), Wi-Fi with libslirp user-mode networking, and GDB remote debugging. The architecture separates platform-independent emulation logic from OS-specific frontend and audio/video output via a well-defined Platform abstraction. The codebase is large and includes vendored third-party libraries (libslirp, Teakra DSP, FatFs, tiny-AES-C, xxhash, blip-buf, toml11) and borrowed components from Dolphin and DuckStation projects. Reusable patterns include a consistent savestate serialization scheme, FIFO templates, efficient bitfield utilities, and a register cache for JIT compilation. Maintenance is active with regular commits and CI across Windows, macOS, Linux, and BSD, though some areas (DSi emulation, netplay) have TODOs and commented-out code indicating ongoing development.
fakesnow is a Python library that provides a local, in-memory fake implementation of the Snowflake database connector. It uses DuckDB as the underlying SQL engine and sqlglot to transpile Snowflake SQL dialect into DuckDB-compatible queries. The library monkey-patches `snowflake.connector.connect` and `snowflake.connector.pandas_tools.write_pandas`, enabling developers to run Snowflake-dependent code entirely locally without a real Snowflake account. It also includes an optional HTTP server that mimics Snowflake's REST API, allowing non-Python clients (JDBC, Go, .NET) to connect. The project is primarily a test double and development tool, with a strong emphasis on behavior equivalence to real Snowflake. It supports a wide range of Snowflake SQL features, including DDL, DML, COPY INTO, MERGE, semi-structured data (JSON), sequences, stages, file formats, and session variables. The codebase is well-structured with a modular transform pipeline, extensive tests, and CI/CD pipelines for release. However, some features are partially implemented or marked as not yet supported, and the project is tightly coupled to evolving dependencies (DuckDB, sqlglot) which may cause drift.
vivisect is a comprehensive reverse engineering framework providing static analysis, dynamic debugging, emulation, and symbolic execution capabilities. It consists of several core packages: `envi` (multi-architecture disassemblers, emulators, memory abstraction), `vivisect` (workspace-based static analysis with analysis passes, import emulation, symbolic execution engine), `vtrace` (cross-platform debugging with ptrace/GDB stub support), `vdb` (debugger CLI and Qt GUI), `vstruct` (declarative binary structure parsing for formats like PE, ELF, Mach-O, minidump), `visgraph` (graph layout for control flow and call graphs), and `cobra` (custom RPC framework for remote collaboration). The system can parse and analyze PE, ELF, Mach-O, and other formats; perform function detection, control-flow recovery, switch-case identification, pointer analysis, and symbolic path exploration. It includes a full-featured debugger with breakpoints, watchpoints, and process control, and offers a Qt GUI for interactive reverse engineering. The architecture is modular but tightly integrated; many components are reusable in isolation. The codebase shows signs of long-term evolution with some Python 2/3 drift, deprecated API usage, and incomplete migration to PyQt6, but remains actively maintained with recent commits and a substantial test suite.
Xenia is a research-grade emulator for the Xbox 360, written in C++ with a focus on accuracy and performance. It translates PowerPC (PPC) guest code into x64 machine code via a custom JIT compiler (HIR → x64 backend) and emulates the Xenos GPU using D3D12 and Vulkan backends, including shader translation from Xbox ucode to HLSL/SPIR-V. The system also emulates kernel subsystems (XAM, Xboxkrnl), audio (XMA decoding via XAudio2/SDL), input (XInput, keyboard, SDL), and the virtual file system (STFS containers, disc images, host paths). The architecture is modular with clear subsystem boundaries (base, cpu, gpu, apu, hid, kernel, vfs, ui), each with platform-specific implementations for Windows, Linux, and Android. Key entry points include the main emulator window (xenia_main.cc), the CPU processor (processor.h), the GPU graphics system (graphics_system.h), and the kernel state manager (kernel_state.h). The emulator is primarily a desktop application but includes Android support and several standalone tools for shader compilation, GPU trace analysis, and API scanning.
EKA2L1 is a Symbian OS emulator written in C++17, targeting the EKA2 (and EKA1) kernel used by Nokia S60 smartphones and N-Gage devices. It provides full system emulation including ARM CPU (with multiple backends: dyncom interpreter, 12l1r JIT, and optional Dynarmic), memory management (flexible and multiple address-space models), kernel reimplementation (processes, threads, IPC, timers, libraries), file system, and a wide range of Symbian services (window server, audio, Bluetooth, SMS, camera, DRM, etc.). The emulator supports multiple frontends: a Qt desktop application, an Android app (Java/JNI), and an iOS app (SwiftUI). It also includes a Lua scripting API for runtime debugging and game-specific patches, a GDB stub for remote debugging, and a set of guest-side DLL patches that redirect Symbian hardware calls to the emulator. The codebase is large and complex, with many services partially implemented or stubbed. It is actively maintained but development is part-time, and some platform-specific backends (e.g., iOS, Android) may lag behind the Qt frontend.
This repository provides an automated system for setting up a VirtualBox VM running Ubuntu 7.10 that hosts the Open Genera 2.0 Lisp machine environment. It uses veewee to create a base box, Vagrant to manage the VM lifecycle, and shell scripts to install required packages, configure network services (NFS, inetd), set up the Lisp machine software, and launch a VNC server for user interaction. The system is intentionally designed to use an old Ubuntu version due to specific X11 requirements of the Lisp machine emulator. The architecture follows a standard provisioning workflow: dependency verification → base box creation → VM provisioning → application-specific configuration. Key entry points include the Makefile (orchestrating the overall process), Vagrantfile (defining VM properties), and provision.sh (handling the majority of setup tasks). The system demonstrates good practices in idempotent operations, dependency checking with helpful error messages, and clean separation of concerns. While highly specialized for this particular legacy software environment, the repository contains several well-executed patterns that could be adapted elsewhere: the VNC startup script shows proper technique for configuring X resources, remapping keys, and launching applications in a VNC session; the provisioning script demonstrates idempotent setup patterns; and the Makefile provides a reusable model for dependency verification and step-by-step orchestration of complex setup procedures.
PinMAME is a specialized fork of MAME 0.76 that emulates the hardware found in solid-state pinball machines. It supports over 2700 ROM sets from Williams, Bally, Stern, Gottlieb, Data East, and other manufacturers. The emulator is delivered in multiple forms: a standalone command-line executable (Unix/Windows), a Windows GUI (PinMAME32), a COM DLL (VPinMAME) for integration with Visual Pinball and other simulators, a lightweight library (libpinmame) for embedding in other applications, and hardware control interfaces (LISY, P-ROC) for driving real pinball machines. The codebase includes CPU emulators (Z80, 6809, 6502, i86, TMS9900, ARM7, etc.), sound chip emulators (YM2151, YM3812, SAA1099, TMS5220, etc.), and pinball-specific subsystems (WPC, System 11, Pinball 2000). It also features a remote debugger with an embedded HTTP server and SSE event streaming, an alternative sound system (altsound) for custom audio, and a cheat engine. The architecture is monolithic with platform-specific frontends, heavily reliant on the MAME core framework. While functional and actively maintained, the codebase shows its age with legacy platform drivers, vendored external libraries, and tight coupling between components.
This repository is a web-based application that serves as a museum and emulator for Chinese-developed retro games. It provides browser-based emulation for various platforms including NES/Famicom clones, Sega Genesis, Super A'can, and numerous handheld consoles (Gamate, SuperVision, Mega Duck, GameKing, etc.). The application consists of HTML/CSS/JavaScript files that load game data from JSON files and run appropriate emulator cores (JSNES for NES, Emularity/JSMESS for other systems) to allow users to play games directly in the browser. The architecture is client-side only, with responsive design for mobile and desktop access, featuring game browsing interfaces with search and pagination functionality.
This repository implements a RuneScape game server emulator (build #435, October 2006) in TypeScript/Node.js. It provides a full multiplayer game world with player management, NPCs, skills (mining, woodcutting, smithing, firemaking, runecrafting, crafting, fletching, prayer, etc.), quests (Cook's Assistant, Witch's Potion, Goblin Diplomacy tutorial), combat, banking, shops, and item interactions. The server uses a tick-based game loop (600ms ticks) and supports multiple server roles (game, login, update) that can run standalone or together via a gateway server. The architecture is modular: a core engine provides an action pipeline for handling player events (object interaction, item use, commands, etc.), a task scheduler for delayed/tick-synced actions, a plugin system for content (skills, quests, NPCs, items), and a world manager with chunk-based map, collision detection, and pathfinding (A*). Networking uses custom packet handling with ISAAC cipher encryption. Configuration is data-driven: items, NPCs, shops, spawns, skill guides, and music regions are loaded from JSON/YAML files at startup. The system also integrates with the @runejs/filestore library to decode the game cache. Key entry points include src/server/runner.ts (launches servers), src/server/game/game-server.ts (sets up world and gateway), src/engine/action/action-pipeline.ts (central event dispatcher), and src/engine/plugins/loader.ts (auto-loads plugins from dist/plugins/). The codebase is actively developed but shows signs of technical debt: many TODO references to issue #417 (replacing setInterval with tick-synced code), deprecated patterns (actionsCancelled Subject), incomplete features (Construction skill stubbed, Prayer/Magic partly implemented), and inconsistent plugin module formats. Despite these issues, the core patterns (task system, action pipeline, plugin system) are well-designed and demonstrate non-obvious craftsmanship.
Android Debug Database is an Android library that provides a web-based interface for debugging databases and shared preferences in Android applications. When included in an app's debug build, it starts a lightweight HTTP server that serves a web UI allowing developers to inspect databases, run SQL queries, edit data directly, and manage shared preferences. The architecture consists of a core library (debug-db-base) that handles server logic and database interactions, with optional modules for encrypted database support (debug-db-encrypt) and sample applications demonstrating usage. The system uses a client-server model where the server runs inside the Android app and the client is a standard web browser connecting via HTTP to localhost. Key features include support for SQLite databases, Room databases (including inMemory), SharedPreferences, and SQLCipher-encrypted databases, with a responsive web interface built using Bootstrap, jQuery, and DataTables.
The Chromecast Device Emulator is a Node.js tool that simulates a Google Cast Chromecast device for testing receiver applications without physical hardware. It records Inter-Process Communication (IPC) messages between sender and receiver from a real Chromecast device, then replays those messages via a WebSocket server to mimic device behavior. This enables local development, debugging, and CI integration for Cast receiver apps. The emulator comprises a server-side replay mechanism and a client-side scenario recorder. The server (`src/index.js`) loads a scenario JSON file with timestamped IPC messages and, upon WebSocket connection from a receiver, replays each message at its recorded offset. The client recorder (`src/receiver-utils/scenario-recorder.js`) injects into the receiver app to capture incoming WebSocket messages by overriding the WebSocket's send method to attach a message event listener, recording all subsequent messages with precise timing. Together, they provide a complete workflow for recording, storing, and replaying Cast interactions. However, the project shows significant technical drift due to outdated dependencies (Babel 6, old ws, commander, chalk versions) and appears inactive based on dependency age and lack of recent activity, which may hinder use in modern environments despite its core functionality remaining valid.