NES emulator for Apple platforms. A SwiftUI app for iOS, macOS, and tvOS renders the emulator output through Metal, while the emulation itself lives in reusable Swift packages so the core runs anywhere Swift does.
xemu— the app: a game collection with artwork and metadata from a bundled OpenVGDB database, ROM import from files or over the network through an embedded Vapor upload server, Metal rendering, audio output, game controller support, haptics, and save data management.xemu-lib— theXemuLibpackage:XemuNES: the NES core — MOS 6502 CPU with unofficial opcodes, PPU, APU, and the NROM, MMC1, UNROM, CNROM, AXROM, CPROM, and GxROM mappers.XemuAsm: 6502 assembler and disassembler.XemuDebugger: breakpoints and register introspection for debuggable systems.XemuCore: theEmulatorprotocol — load a program, step a frame, read the frame, audio, and save buffers.XemuFoundation: shared utilities.
xemu-cli— a libedit-based interactive debugger for macOS built onXemuDebugger.
The app builds through Xcode: open xemu.xcodeproj. The packages build with
Swift Package Manager:
cd xemu-lib
swift build
swift testLinting and formatting run through mise:
mise run lint
mise run format