# libretro/retroarch

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/libretro-retroarch).**

13,238 stars · 2,127 forks · C · GPL-3.0

## Links

- GitHub: https://github.com/libretro/RetroArch
- Homepage: http://www.libretro.com
- awesome-repositories: https://awesome-repositories.com/repository/libretro-retroarch.md

## Topics

`c` `libretro` `retroarch`

## Description

RetroArch is a cross-platform emulation host and multi-system game emulator that serves as a frontend for the Libretro API. It coordinates video, audio, and user input to maintain the application state for various emulator cores, allowing it to run a wide variety of vintage gaming hardware and software engines.

The platform distinguishes itself through a low-latency emulation model that uses run-ahead processing to reduce input lag. It also features a real-time state tracking system that enables gameplay rewinding by saving periodic snapshots of the emulator memory state.

The environment includes comprehensive tools for retro game preservation, such as multi-pass visual shaders and the ability to switch screen resolutions to match original hardware timings. Additional capabilities cover gameplay video recording and a command-line interface for application management and automation.

## Tags

### Game Development

- [Retro Game Emulation](https://awesome-repositories.com/f/game-development/retro-game-emulation.md) — Loads and runs a wide variety of emulator cores for different vintage gaming hardware via a single interface.
- [Emulation State Management](https://awesome-repositories.com/f/game-development/emulation-state-management.md) — Provides tools for creating save states and rewinding game progress via memory-level state manipulation.
- [Retro Gaming Frameworks](https://awesome-repositories.com/f/game-development/retro-gaming-frameworks.md) — Maintains original timing, resolutions, and visual styles through a specialized framework for retro game preservation.

### Operating Systems & Systems Programming

- [Dynamic Library Loading](https://awesome-repositories.com/f/operating-systems-systems-programming/dynamic-library-loading.md) — Loads emulator cores as shared libraries at runtime to extend the application's hardware emulation capabilities. ([source](https://github.com/libretro/retroarch#readme))
- [Emulation API Frontends](https://awesome-repositories.com/f/operating-systems-systems-programming/emulation-api-frontends.md) — Provides a cross-platform interface that coordinates video, audio, and input for emulator cores using the Libretro API.
- [Emulation State Rewinding](https://awesome-repositories.com/f/operating-systems-systems-programming/emulation-state-rewinding.md) — Saves periodic snapshots of the emulator memory state to allow users to reverse gameplay progress.
- [Application State Rewinding](https://awesome-repositories.com/f/operating-systems-systems-programming/emulation-state-rewinding/application-state-rewinding.md) — Tracks game state in real-time to allow users to reverse progress and correct mistakes during active sessions. ([source](https://github.com/libretro/retroarch#readme))
- [Low-Latency Emulation Hosts](https://awesome-repositories.com/f/operating-systems-systems-programming/emulation-state-rewinding/low-latency-emulation-hosts.md) — Combines run-ahead processing and real-time state tracking to reduce input lag and enable gameplay rewinding.
- [Emulator Core Orchestrators](https://awesome-repositories.com/f/operating-systems-systems-programming/emulator-core-orchestrators.md) — Coordinates video, audio, and user input to maintain the application state for portable emulator cores. ([source](https://github.com/libretro/retroarch#readme))
- [Input Lag Reduction Systems](https://awesome-repositories.com/f/operating-systems-systems-programming/input-lag-reduction-systems.md) — Reduces input lag through run-ahead processing to match the responsiveness of original hardware.
- [Run-Ahead Processing](https://awesome-repositories.com/f/operating-systems-systems-programming/low-latency-input-streams/run-ahead-processing.md) — Implements run-ahead processing to remove perceived lag between user input and on-screen action. ([source](https://github.com/libretro/retroarch#readme))
- [Run-Ahead Input Processors](https://awesome-repositories.com/f/operating-systems-systems-programming/run-ahead-input-processors.md) — Predicts future frames by executing game logic in advance to eliminate perceived input latency.
- [Emulation Timing Synchronizers](https://awesome-repositories.com/f/operating-systems-systems-programming/emulation-timing-synchronizers.md) — Coordinates timing between audio and video output to ensure emulation speed matches original hardware specifications.
- [Host Driver Abstractions](https://awesome-repositories.com/f/operating-systems-systems-programming/host-driver-abstractions.md) — Provides a common abstraction layer to select low-level graphics drivers for cross-platform video output and shader rendering.

### Graphics & Multimedia

- [Shaders](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/shaders.md) — Renders multi-pass GPU shaders to enhance visual quality and recreate the look of vintage displays. ([source](https://github.com/libretro/retroarch#readme))
- [Hardware Timing Resolution Controllers](https://awesome-repositories.com/f/graphics-multimedia/hardware-timing-resolution-controllers.md) — Adjusts screen resolution and refresh rates to match the native output and timing of original hardware. ([source](https://github.com/libretro/retroarch#readme))

### Software Engineering & Architecture

- [Backend-Frontend Decoupling](https://awesome-repositories.com/f/software-engineering-architecture/backend-frontend-decoupling.md) — Decouples the user interface and system management from the underlying emulation engine via a strict API contract.

### Part of an Awesome List

- [Games and Emulation](https://awesome-repositories.com/f/awesome-lists/devtools/games-and-emulation.md) — Frontend for emulators and game engines.
