# RetroArch

RetroArch è un front-end libero e multipiattaforma per emulatori, motori grafici, videogiochi, lettori multimediali e altre applicazioni.
È l'implementazione di riferimento dell'API libretro, progettata per essere veloce, leggera, portabile e senza dipendenze. È distribuito con licenza GNU GPLv3.

## Storia

Precedentemente conosciuto come SSNES, inizialmente fu basato sul predecessore di libretro, ovvero libsnes, creato dal programmatore "byuu" (pseudonimo). Il suo sviluppo è iniziato nel 2010 con Hans-Kristian 'themaister' Arntzen come autore della prima versione caricata su GitHub. Esso era inteso come un sostituto dell'interfaccia di bnes, basata su Qt, ma è cresciuto fino a supportare più "core" di emulazione. Il 21 aprile 2012, SSNES è stato ufficialmente ribattezzato in RetroArch per riflettere questo cambio di direzione.
La versione 1.0.0.0 di RetroArch è stata pubblicata l'11 gennaio 2014 e all'epoca era disponibile su 7 piattaforme distinte.
Il 16 febbraio 2016, RetroArch è diventata una delle prime applicazioni in assoluto a implementare il supporto per l'API grafica Vulkan, aggiunto lo stesso giorno del rilascio ufficiale dell'API.
Il 27 novembre 2016, il team Libretro ha annunciato che, insieme a Lakka (il sistema operativo di RetroArch basato su LibreELEC), RetroArch sarebbe arrivato su Patreon, una piattaforma di crowdfunding, per poter fornire premi agli sviluppatori che avrebbero corretto bug del software e per coprire i costi dei server di matchmaking.
Nel dicembre 2016, GoGames - in accordo con Sega, società di sviluppo e publisher di videogiochi - ha contattato gli sviluppatori di RetroArch con l'intenzione di utilizzare il loro software nel loro progetto SEGA Forever, ma alla fine la collaborazione non si è concretizzata a causa di disaccordi sulle licenze.
Nell'aprile 2018 è stata aggiunta la compensazione del ritardo di input.
Il team di Libretro ha pianificato di distribuire RetroArch su Steam come download gratuito, integrando le funzionalità di Steamworks nella piattaforma a luglio del 2019. Sarà il primo titolo dedicato all'emulazione, con una certa rilevanza, ad essere distribuito sulla piattaforma.
Nell'agosto 2020, qualcuno che si spacciava per un membro fidato del team ha avuto accesso al server del buildbot e all'account GitHub dell'organizzazione libretro, causando atti di vandalismo e la cancellazione dei dati del server.
Nel novembre 2020, RetroArch, in combinazione al core libretro PCSX2, ha permesso a Xbox Series X e Series S di emulare la PlayStation 2, cosa che la PlayStation 5 di Sony non poteva fare in quel momento.
Il 14 Settembre 2021 RetroArch è stato rilasciato su Steam.

## Caratteristiche

Esegue programmi convertiti in librerie dinamiche chiamate libretro core, utilizzando diverse interfacce utente come l'interfaccia della riga di comando, alcune interfacce utente grafiche (GUI) ottimizzate per i gamepad (la più famosa è chiamata XMB, un clone di XMB di Sony), diversi tipi di input, driver audio e video, oltre ad altre funzionalità sofisticate come controllo dinamico della velocità, filtri audio, shader multi-pass, netplay, riavvolgimento del gameplay, trucchi, salvataggio delle partite.
Le caratteristiche principali includono:
* Supporto di shader GPU avanzati: una pipeline di shader multi-pass di post-elaborazione per consentire un utilizzo efficiente degli algoritmi di ridimensionamento delle immagini, emulazione di CRT complessi, artefatti video NTSC e altri effetti;
* Controllo dinamico della velocità per sincronizzare video e audio attenuando le eventuali imperfezioni;
* Registrazione FFmpeg - Supporto integrato per la registrazione di video senza perdita di dati utilizzando libavcodec di FFmpeg;
* Livello di astrazione del gamepad chiamato Retropad;
* Configurazione automatica del gamepad: nessun input necessario da parte dell'utente dopo aver collegato i gamepad;
* Netplay peer-to-peer che utilizza una tecnica di rollback simile quella utilizzata da GGPO;
* Plugin audio DSP come equalizzazione, riverbero e altri effetti;
* Funzionalità avanzate di salvataggio: caricamento automatico del salvataggio, disabilitazione della sovrascrittura SRAM, ecc.;
* Riavvolgimento del gioco fotogramma per fotogramma;
* Sovrapposizioni di pulsanti per dispositivi touchscreen come smartphone;
* Miniature delle confezioni originali dei giochi;
* Opzioni diminuire il ritardo dell'input e dell'audio;
* Interfacce multiple tra le quali: CLI, XMB (ottimizzata per i gamepad), GLUI/MaterialUI (ottimizzate per dispositivi touch), RGUI e Ozone (disponibili ovunque);
* Scanner delle ROM di gioco - Creazione automatica di playlist confrontando gli hash dei file contenuti in una directory con quelli di copie di giochi validi conosciuti, contenuti nell'apposito database;
* Database Libretro di core, giochi, cheat, ecc.;
* Supporto per OpenGL e Vulkan API;
* Monitoraggio dei Trofei - L'integrazione con il servizio RetroAchievements per sbloccare trofei e distintivi.

## Piattaforme supportate

RetroArch è stato portato su molte piattaforme. Può funzionare su diversi sistemi operativi per PC (Windows, macOS, Linux), console domestiche (PlayStation 3, Xbox 360, Wii U, ecc.), console portatili (PlayStation Vita, Nintendo 3DS, ecc.), su smartphone (Android, iOS, ecc.), computer a scheda singola (Raspberry Pi, ODROID, ecc.) e persino su browser web utilizzando il compilatore Emscripten.

## Sistemi emulati

RetroArch può eseguire qualsiasi core di libretro. Sebbene RetroArch sia disponibile per molte piattaforme, la disponibilità di un core specifico varia in base alla piattaforma.
Di seguito è riportata una tabella non esaustiva di quali sistemi sono disponibili per RetroArch e su quale progetto si basa il core:
| Sistema | Basato su |
| 3DO | 4DO |
| Amstrad CPC | Caprice32 CrocoDS |
| Arcade | FinalBurn Alpha FinalBurn Neo MAME MESS |
| Atari 2600 | Stella |
| Atari 5200 | Atari800 |
| Atari 7800 | ProSystem |
| Atari Falcon | Hatari |
| Atari Jaguar | Virtual Jaguar |
| Atari Lynx | Handy Mednafen |
| Bandai WonderSwan | Mednafen |
| ColecoVision | blueMSX |
| Commodore 64 | VICE |
| Commodore 128 | VICE |
| Commodore Amiga | PUAE |
| DOS | DOSBox |
| NEC PC-8000/PC-8800 series | QUASI88 |
| NEC PC-98 | Neko Project II |
| NEC PC-FX | Mednafen |
| NEC TurboGrafx-16 / SuperGrafx | Mednafen |
| NEC TurboGrafx-CD | Mednafen |
| Nintendo 3DS | Citra |
| Nintendo 64 | Mupen64Plus |
| Nintendo DS | DeSmuME melonDS |
| Nintendo Entertainment System | Emux FCEUmm higan Mesen Nestopia UE QuickNES |
| Nintendo Famicom Disk System | higan Nestopia |
| Nintendo Game Boy / Color | Emux Gambatte higan SameBoy TGB Dual |
| Nintendo Game Boy Advance | gpSP mGBA Mednafen Meteor VisualBoyAdvance |
| Nintendo GameCube | Dolphin |
| Nintendo Pokémon Mini | PokeMini |
| NIntendo Virtual Boy | Mednafen |
| Nintendo Wii | Dolphin |
| Magnavox Odyssey² | O2EM |
| Mattel Intellivison | FreeIntv |
| Microsoft MSX | blueMSX fMSX |
| Palm OS | Mu |
| Sega 32X | PicoDrive |
| Sega Dreamcast | Flycast (sostituisce Reicast) Redream |
| Sega Game Gear | Genesis Plus GX |
| Sega Master System | Genesis Plus GX PicoDrive |
| Sega Mega CD/Sega CD | Genesis Plus GX |
| Sega Mega Drive/Genesis | BlastEm Genesis Plus GX |
| Sega Saturn | Mednafen uoYabause |
| Sinclair ZX81 | EightyOne |
| Sinclair ZX Spectrum | Fuse |
| Sony PlayStation | DuckStation Mednafen PCSX ReARMed |
| Sony PlayStation 2 | PCSX2 Play! |
| Sony PlayStation Portable | PPSSPP |
| SNK Neo Geo Pocket / Color | Mednafen RACE |
| Super NES | bsnes higan Mesen-S Snes9x |
| Thomson computers | Theodore |
| Vectrex | VecXGL |

## Portings supportati

Retroarch offre il supporto anche a portings di giochi recenti e non, come ad esempio:
| Bomberman | Mr. Boom |
| Cave Story | NXEngine |
| CHIP-8 | Emux |
| Doom | PrBoom |
| Flashback | REminiscence |
| FFmpeg | FFmpeg |
| Out Run | CannonBall |
| PICO-8 | Retro-8 |
| Quake 1 | TyrQuake |
| RPG Maker 2000/2003 | EasyRPG |
| Tomb Raider | OpenLara |

## Critica

RetroArch è stato elogiato per il numero di sistemi e giochi ai quali si può giocare con un'unica interfaccia.
È stato criticato per quanto sia difficile da configurare, a causa dell'ampio numero di opzioni disponibili per l'utente, e allo stesso tempo è stato elogiato per le funzionalità più avanzate che possiede.
Su Android, è stato elogiato per il fatto che gli overlay possono essere personalizzati, per l'espandibilità dei core libretro che supporta, per la sua compatibilità con diverse periferiche controller USB e Bluetooth, oltre al fatto che l'app è gratuita e non ha pubblicità.
Tyler Loch, scrivendo per Ars Technica, ha affermato che la modalità 'Input Lag Compensation' di RetroArch è "probabilmente il più grande miglioramento dell'esperienza che la comunità dei giochi retrò abbia mai visto".