{"id":16186937,"url":"https://github.com/robloach/raylib-libretro","last_synced_at":"2026-06-11T02:01:28.416Z","repository":{"id":37992817,"uuid":"255165205","full_name":"RobLoach/raylib-libretro","owner":"RobLoach","description":"libretro frontend using raylib :space_invader:","archived":false,"fork":false,"pushed_at":"2026-06-05T23:09:05.000Z","size":26530,"stargazers_count":37,"open_issues_count":22,"forks_count":9,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-06-05T23:12:05.458Z","etag":null,"topics":["libretro","raylib"],"latest_commit_sha":null,"homepage":"https://robloach.github.io/raylib-libretro/?game=https://raw.githubusercontent.com/retrobrews/snes-games/refs/heads/master/saf.smc","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RobLoach.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-04-12T20:33:15.000Z","updated_at":"2026-06-05T23:04:22.000Z","dependencies_parsed_at":"2025-06-14T19:38:08.111Z","dependency_job_id":"99dbef20-b792-49f9-8e33-e398cd896aa1","html_url":"https://github.com/RobLoach/raylib-libretro","commit_stats":null,"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/RobLoach/raylib-libretro","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobLoach%2Fraylib-libretro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobLoach%2Fraylib-libretro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobLoach%2Fraylib-libretro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobLoach%2Fraylib-libretro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RobLoach","download_url":"https://codeload.github.com/RobLoach/raylib-libretro/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobLoach%2Fraylib-libretro/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34178819,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["libretro","raylib"],"created_at":"2024-10-10T07:19:53.218Z","updated_at":"2026-06-11T02:01:28.411Z","avatar_url":"https://github.com/RobLoach.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# raylib-libretro :space_invader: [![Tests](https://github.com/RobLoach/raylib-libretro/workflows/Tests/badge.svg)](https://github.com/RobLoach/raylib-libretro/actions)\n\n[libretro](https://www.libretro.com/) frontend to play emulators for Windows, Mac, Linux, and the Web with [raylib](https://www.raylib.com). The [raylib-libretro.h](include/raylib-libretro.h) allows integrating any raylib application with the libretro API. *Still in early development.*\n\n![Screenshot of raylib-libretro](docs/screenshot.png)\n\n## Features\n\n- Multi-System Emulator for NES, SNES, GB, GBA, SMS/GG, PlayStation\n- Shipped Cores: fceumm, snes9x, mgba, genesis_plus_gx, prboom, pcsx_rearmed\n- Gamepad, Keyboard, On-Screen Controls\n- Audio\n- Fast Forward, Slow Motion, Rewind\n- Save Slots and SRAM\n- Shaders\n- Menu Themes\n- Core Options\n- Zip File Support\n\n## Cores\n\n| System | Core | Extensions |\n| --- | --- | --- |\n| Nintendo Entertainment System (NES)** | `fceumm` | `.fds`, `.nes`, `.unf`, `.unif` |\n| Super Nintendo (SNES) | `snes9x` | `.smc`, `.sfc`, `.swc`, `.fig`, `.bs`, `.st` |\n| Game Boy / Color / Advance | `mgba` | `.gba`, `.gb`, `.gbc`, `.sgb` |\n| Sega Genesis / Mega Drive / Master System / Game Gear | `genesis_plus_gx` | `.bin`, `.gen`, `.smd`, `.md`, `.cue`, `.iso`, `.chd`, `.m3u`, `.sms`, `.gg`, `.sg` |\n| PC Engine / TurboGrafx-16 | `mednafen_pce_fast` | `.pce`, `.cue`, `.ccd`, `.chd`, `.toc`, `.m3u` |\n| WonderSwan / WonderSwan Color | `mednafen_wswan` | `.ws`, `.wsc`, `.pc2` |\n| Doom (PrBoom Engine) | `prboom` | `.wad`, `.iwad`, `.pwad`, `.lmp`, `.m3u` |\n| PlayStation | `pcsx_rearmed` | `.bin`, `.cue`, `.img`, `.mdf`, `.pbp`, `.toc`, `.cbn`, `.m3u`, `.ccd`, `.chd`, `.iso` |\n\n## Usage\n\n``` sh\nraylib-libretro [-L \u003ccore\u003e] [game]\n```\n\n- `[game]` can be a loose ROM file or a `.zip` archive\n- `-L \u003ccore\u003e` is optional — path to the libretro core (`.so`/`.dll`/`.dylib`)\n\n### Example\n```\nraylib-libretro -L ~/.config/retroarch/cores/fceumm_libretro.so smb.nes\nraylib-libretro -L ~/.config/retroarch/cores/fceumm_libretro.so smb.zip\nraylib-libretro smb.nes\n```\n\n## Compile\n\n[CMake](https://cmake.org) is used to build raylib-libretro...\n\n``` sh\ngit clone http://github.com/robloach/raylib-libretro.git\ncd raylib-libretro\ngit submodule update --init\nmkdir build\ncd build\ncmake ..\nmake\n```\n\n### Mac OSX\n\n- Make sure you have you have `cmake/xcode-cli-tools` installed\n- Run the above compile instructions\n- After installing RetroArch and some cores, you should be able to run the below:\n    ```bash\n    bin/raylib-libretro -L ~/Library/Application\\ Support/RetroArch/cores/fceumm_libretro.dylib ~/Desktop/smb.nes\n    ```\n\n## API Usage\n\n```c\nInitLibretro(\"fceumm.so\");\nLoadLibretroGame(\"mario.nes\");\nwhile (!WindowShouldClose()) {\n    UpdateLibretro();\n    BeginDrawing();\n        ClearBackground(BLACK);\n        DrawLibretro();\n    EndDrawing();\n}\nCloseLibretro();\n```\n\n## API Reference\n\nSee the full [API documentation](docs/API.md) for integration details, CMake setup, and function descriptions.\n\n### Quick Reference\n\n``` c\nbool InitLibretro(const char* core);\nbool LoadLibretroGame(const char* gameFile);\nbool IsLibretroReady();\nbool IsLibretroGameReady();\nvoid UpdateLibretro();\nbool LibretroShouldClose();\nvoid DrawLibretro();\nvoid DrawLibretroTint(Color tint);\nvoid DrawLibretroEx(Vector2 position, float rotation, float scale, Color tint);\nvoid DrawLibretroV(Vector2 position, Color tint);\nvoid DrawLibretroTexture(int posX, int posY, Color tint);\nvoid DrawLibretroPro(Rectangle destRec, Color tint);\nconst char* GetLibretroName();\nconst char* GetLibretroVersion();\nunsigned GetLibretroWidth();\nunsigned GetLibretroHeight();\nunsigned GetLibretroRotation();\ndouble GetLibretroFPS();\nfloat GetLibretroAspectRatio();\nTexture2D GetLibretroTexture();\nbool IsLibretroGameRequired();\nvoid ResetLibretro();\nvoid UnloadLibretroGame();\nvoid CloseLibretro();\nvoid SetLibretroVolume(float volume);\nfloat GetLibretroVolume();\nbool SetLibretroCoreOption(const char* key, const char* value);\nconst char* GetLibretroCoreOption(const char* key);\nvoid* GetLibretroSerializedData(unsigned int* size);\nbool SetLibretroSerializedData(void* data, unsigned int size);\nvoid SetLibretroMessage(const char* msg, float duration);\nbool DrawLibretroMessage();\nconst char* GetLibretroDirectory(int directory);\n```\n\n## Development\n\nUpdate the dependencies through git submodules...\n```sh\ngit submodule update --recursive --remote --init --force\n```\n\nUse clang-format to apply coding standards...\n```c\nclang-format -i *.h\n```\n\nBuild for web with emscripten...\n```sh\nmkdir build\ncd build\nemcmake cmake .. -DPLATFORM=Web -DCMAKE_BUILD_TYPE=Release\nemmake make\n```\n\nTo build the Doxygen documentation...\n```sh\ndoxygen .Doxyfile\n```\n\n## Contributors\n\n- [Konsumer](https://github.com/konsumer)\n- [MikeDX](https://github.com/MikeDX) and [libretro-raylib](https://github.com/MikeDX/libretro-raylib)\n\n## License\n\n[zlib/libpng](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobloach%2Fraylib-libretro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobloach%2Fraylib-libretro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobloach%2Fraylib-libretro/lists"}