# Retroarch

RetroArch é software de front-end grátis, de código aberto e multiplataforma para emuladores, motores de jogos, video games, multimídia e outros. Ele é a implementação de referência da libretro API, projetado para ser rápido, leve, portátil, e sem dependências extras. É licenciado sob a GNU GPLv3.
O RetroArch roda programas convertidos em bibliotecas dinâmicas chamadas de "libretro cores", usando várias interfaces de usuário desde linha de comando, algumas interfaces gráficas (GUI) voltadas para gamepads (sendo a mais famosa uma chamada XMB, um clone da Sony's XMB), várias entradas, drivers de áudio e vídeo, e outros recursos como filtros de áudio, shaders, cheats, etc.
Ele foi portado para muitas plataformas. Pode rodar em vários sistemas operacionais de PC (Windows, Linux, macOS), consoles (Playstation, Xbox, Wii, etc.), consoles prtáteis (PS Vita, Nintendo 3DS, Switch, etc.), em smarthphones (Android, iOS, etc.), computadores single-board (Raspberry Pi, ODROID, etc.) e até mesmo em navegadores web usando o compilador Emscripten.

## História

Formalmente conhecido como SSNES, inicialmente baseado no libsnes, predecessor do libretro do programador de pseudônimo byuu, ele começou a ser desenvolvido em 2010 com Hans-Kristian "themaister" Arntzen enviando a primeira adaptação no GitHub. Ele foi idealizado como um substituto à interface baseada em Qt do bsnes mas começou a suportar mais "cores" de emulação. Em 21 de Abril de 2012, o SSNES foi renomeado para RetroArch para refletir sua mudança de direção.
A versão 1.0.0.0 do RetroArch foi lançada em 11 de Janeiro de 2014 e na época estava disponível para 7 plataformas diferentes.
Em 16 de Fevereiro de 2016, o RetroArch se tornou uma das primeiras aplicações a implementar o suporte à API gráfica Vulkan, fazendo-o no mesmo dia do lançamento oficial da API.
Em 27 de Novembro de 2016, a Libretro Team anunciou que, ao lado do Lakka (Sistema operacional do RetroArch baseado na LibreELEC), o RetroArch estaria no Patreon para recompensar desenvolvedores que consertassem certos bugs e para cobrir os custos para servidores de matchmaking.
Em Dezembro de 2016, a GoGames - uma comanhia contratada pela desenvolvedora de jogos Sega - se aproximou dos desenvolvedores do Retroarch com a intenção de usar o software no projeto SEGA Forever mas ultimamente a cooperação não resultou em frutos por conta de discordâncias de licenciamento.
A Libretro Team lançou o RetroArch na Steam gratuitamente, integrando os recursos do Steamworks à plataforma em Julho de 2019. Foi o maior lançamento de um título dedicado à emulação na plataforma.
Em Agosto de 2020 alguém se passando por um membro da equipe teve acesso ao servidor buildbot e à conta do GitHub da Libretro, vandalizando o servidor.

## Recursos

Seus principais recursos incluem:
* Suporte avançado para Shaders de GPU - Um pipeline de pós-processamento de shaders multipassagem que permite o uso de algoritmos eficientes de escalonamento de imagens, emulação de monitores CRT e outros efeitos;
* Controle dinâmico de taxa para sincronizar vídeo e áudio enquanto suaviza imperfeições de timing;
* Gravação com FFmpeg - Suporte para gravação sem perdas de vídeo usando a libavcodec;
* Uma camada de abstração para gamepads chamada Retropad;
* Configuração automatica de gamepads;
* Jogo em rede Peer-to-peer que usa um rollback similar ao GGPO;
* Plugins de áudio como equalizador, reverb e outros;
* Recursos avançados de salvamento;
* Rebobinar uma partida quadro por quadro;
* Sobreposição de botões para telas touchscreen;
* Miniaturas de arte dos jogos;
* Playlists categorizadas automaticamente ao escanear diretórios por jogos;
* Multiplas interfaces como: CLI, XMB (para gamepads), GLUI (para telas touch), RGUI e Oznone (disponível em todos);
* Escaneador de ROMS - Constrói listas comparando os hashs de arquivos de um diretório com os hash de um banco de dados de boas cópias dos jogos;
* Banco de dados de "cores", jogos, cheats, etc.
* Suporte para OpenGL e Vulkan;
* Recompensas - Integração com o serviço RetroAchievements para desbloquear troféis e distintivos.

## Sistemas Suportados

O RetroArch pode rodar qualquer libretro core. Enquanto ele está disponível para várias plataformas, a disponibilidade de um core específico pode variar.
Abaixo está uma tabela de quais sistemas estão disponíveis no Retroarch e em qual projeto o core foi baseado:
| Sistema | Baseado em |
| 3DO | 4DO |
| Arcade | MAME MESS FB Neo FBA |
| Amstrad CPC | Caprice32 CrocoDS |
| Atari 2600 | Stella |
| Atari 5200 | Atari800 |
| Atari 7800 | ProSystem |
| Atari Jaguar | Virtual Jaguar |
| Atari Lynx | Mednafen Handy |
| Atari Falcon | Hatari |
| ColecoVision | blueMSX |
| Commodore 64 | VICE |
| Dreamcast | Redream Flycast |
| Famicom Disk System | Nestopia higan |
| Game Boy / Color | Emux Gambatte SameBoy TGB Dual higan |
| Game Boy Advance | Mednafen gpSP Meteor mGBA VisualBoyAdvance |
| GameCube | Dolphin |
| Game Gear | Genesis Plus GX |
| MSX | fMSX blueMSX |
| Neo Geo Pocket / Color | Mednafen |
| NEC PC-98 | Neko Project II |
| Nintendo 64 | Muppen64Plus |
| Nintendo Entertainment System | higan Emux FCEUmm Nestopia QuickNES mesen |
| Nintendo DS | DeSmuMe melonDs |
| Nintendo 3DS | Citra |
| Odyssey² | O2EM |
| PC-Fx | Mednafen |
| 32X | Picodrive |
| Mega CD/Sega Cd | Genesis Plus GX |
| Mega Drive/Genesis | Genesis Plus GX |
| Master System | PicoDrive Genesis Plus GX |
| Playstation Portable | PPSSPP |
| PlayStation | Mednafen PCSX ReARMed DuckStation |
| PlayStation 2 | Play! |
| Pokémon Mini | PokeMini |
| Sega Saturn | uoYabause Mednafen |
| Super NES | Bsnes higan Snes9x mesen-s |
| Thomson computers | Theodore |
| TurboGrafx-16 / superGrafx | Mednafen |
| TurboGrafx-CD | Mednafen |
| Vectrex | VecXGL |
| Virtual Boy | Mednafen |
| Wii | Dolphin |
| WonderSwan | Mednafen |
| ZX Specrtum | Fuse |
| ZX81 | EightyOne |
Abaixo uma lista de coisas que não se encaixam na lista acima, como jogos individuais e bibliotecas.
| Bomberman | Mr. Boom |
| Cave Story | NXEngine |
| CHIP-8 | Emux |
| Doom | PrBoom |
| FFmpeg | FFmpeg |
| Quake 1 | TyrQuake |
| Tomb Raider | OpenLara |

## Recepção

O RetroArch foi elogiado pelo número de sistemas e jogos que pode rodar em uma única interface.
Foi criticado pela dificulade de se configurar, por conta do grande número de opções disponíveis para o usuário, e ao mesmo tempo foi elogiado pelos recursos mais avançados que possui.
No Android, ele foi elogiado pelo fato das sobreposições serem customizáveis e pela compatibilidade com vários dispositivos USB e Bluetooth e também por não ter anúncios.
Tyler Loch, escritor do Ars Technica, disse que a 'Compensação de lag de entrada' é "a maior melhoria para a experiência que a comunidade de jogos retrô já viu".