Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.

Related tags

Game c retroarch libretro
Overview

Build Status Coverity Scan Build Status Crowdin

RetroArch

RetroArch is the reference frontend for the libretro API. Popular examples of implementations for this API includes video game system emulators and game engines as well as more generalized 3D programs. These programs are instantiated as dynamic libraries. We refer to these as "libretro cores".

XMB menu driver

rgui menu driver

glui menu driver

ozone menu driver

libretro

libretro is an API that exposes generic audio/video/input callbacks. A frontend for libretro (such as RetroArch) handles video output, audio output, input and application lifecycle. A libretro core written in portable C or C++ can run seamlessly on many platforms with very little to no porting effort.

While RetroArch is the reference frontend for libretro, several other projects have used the libretro interface to include support for emulators and/or game engines. libretro is completely open and free for anyone to use.

libretro API header

Binaries

Latest binaries are currently hosted on the buildbot.

Support

To reach developers, either make an issue here on GitHub, make a thread on the forum, chat on discord, or visit our IRC channel: #retroarch @ irc.freenode.org. You could create a post in Reddit with Technical Support flair.

Documentation

See our Documentation Center. On Unix, man-pages are provided. More developer-centric stuff is found here.

Related projects

Philosophy

RetroArch attempts to be small and lean while still having all the useful core features expected from an emulator. It is designed to be very portable and features a gamepad-centric and touchscreen UI. It also has a full-featured command-line interface.

In some areas, RetroArch goes beyond and emphasizes on not-so-common technical features such as multi-pass shader support, real-time rewind (Braid-style), video recording (using FFmpeg), run-ahead input latency removal, etc.

RetroArch also emphasizes being easy to integrate into various launcher frontends.

Platforms

RetroArch has been ported to the following platforms:

  • DOS
  • Windows
  • Linux
  • Emscripten (WebAssembly and JavaScript)
  • FreeBSD
  • NetBSD
  • OpenBSD
  • Haiku
  • Solaris
  • macOS (PPC, x86-32 and x86-64)
  • PlayStation 2
  • PlayStation 3
  • PlayStation Portable
  • PlayStation Vita
  • Original Microsoft Xbox
  • Microsoft Xbox 360 (Libxenon/XeXDK)
  • Nintendo GameCube
  • Nintendo Wii
  • Nintendo Wii U
  • Nintendo 3DS/2DS
  • Nintendo Switch
  • Nintendo NES/SNES Classic Edition
  • Raspberry Pi
  • Android
  • iOS
  • Blackberry

Dependencies (PC)

There are no true hard dependencies per se.

On Windows, RetroArch can run with only Win32 as dependency.

On Linux, there are no true dependencies. For optimal usage, the following dependencies come as recommended:

  • GL headers / Vulkan headers
  • X11 headers and libs, or EGL/KMS/GBM

OSX port of RetroArch requires latest versions of XCode to build.

RetroArch can utilize these libraries if enabled:

  • nvidia-cg-toolkit
  • libfreetype2 (TTF font rendering on screen)

RetroArch needs at least one of these audio driver libraries:

  • ALSA
  • OSS
  • RoarAudio
  • RSound
  • OpenAL
  • JACK
  • SDL
  • PulseAudio
  • XAudio2 (Win32, Xbox 360)
  • DirectSound (Win32, Xbox 1)
  • CoreAudio (OSX, iOS)

To run properly, RetroArch requires a libretro implementation present; however, as it's typically loaded dynamically, it's not required at build time.

Dependencies (Console ports, mobile)

Console ports have their own dependencies, but generally do not require anything other than what the respective SDKs provide.

Configuring

The default configuration is defined in config.def.h. It is not recommended to change this unless you know what you're doing. These can later be tweaked by using a config file. A sample configuration file is installed to /etc/retroarch.cfg. This is the system-wide config file.

RetroArch will on startup create a config file in $XDG\_CONFIG\_HOME/retroarch/retroarch.cfg if it does not exist. Users only need to configure a certain option if the desired value deviates from the value defined in config.def.h.

To configure joypads, use the built-in menu or the retroarch-joyconfig command-line tool.

Compiling and installing

Instructions for compiling and installing RetroArch can be found in the Libretro/RetroArch Documentation Center.

CRT 15Khz Resolution Switching

CRT SwitchRes will turn on, on the fly. However, you will need to restart RetroArch to disable it. With CRT SwitchRes enable RetroArch will start in 2560 x 480 @ 60.

If you are running Windows, before enabling the CRT SwitchRes options please make sure you have installed CRTEmudriver and installed some modelines. The minimum modelines for all games to switch correctly are:

  • 2560 x 192 @ 60.000000
  • 2560 x 200 @ 60.000000
  • 2560 x 240 @ 60.000000
  • 2560 x 224 @ 60.000000
  • 2560 x 237 @ 60.000000
  • 2560 x 256 @ 50.000000
  • 2560 x 254 @ 55.000000
  • 2560 x 448 @ 60.000000
  • 2560 x 480 @ 60.000000

Install these modelines replacing 2560 with your desired super resolution. The above resolutions are NTSC only so if you would be playing any PAL content please add PAL modelines:

  • 2560 x 192 @ 50.000000
  • 2560 x 200 @ 50.000000
  • 2560 x 240 @ 50.000000
  • 2560 x 224 @ 50.000000
  • 2560 x 288 @ 50.000000
  • 2560 x 237 @ 50.000000
  • 2560 x 254 @ 55.000000
  • 2560 x 448 @ 50.000000
  • 2560 x 480 @ 50.000000

Some games will require higher PAL resolutions which should also be installed:

  • 2560 x 512 @ 50.000000
  • 2560 x 576 @ 50.000000

Ideally install all these modelines and everything will work great.

Super Resolutions

The default super resolution is 2560. It is displayed just under the CRT switch option, which can be found in video settings. This can be changed within the retroarch.cfg. The only compatible resolutions are 1920, 2560 and 3840. Any other resolutions will be ignored and native switching will be activated.

Native Resolutions

If native resolutions are activated you will need a whole new set of modelines:

  • 256 x 240 @ 50.006977 SNESpal

  • 256 x 448 @ 50.006977 SNESpal

  • 512 x 224 @ 50.006977 SNESpal

  • 512 x 240 @ 50.006977 SNESpal

  • 512 x 448 @ 50.006977 SNESpal

  • 256 x 240 @ 60.098812 SNESntsc

  • 256 x 448 @ 60.098812 SNESntsc

  • 512 x 240 @ 60.098812 SNESntsc

  • 512 x 224 @ 60.098812 SNESntsc

  • 512 x 448 @ 60.098812 SNESntsc

  • 256 x 192 @ 59.922745 MDntsc

  • 256 x 224 @ 59.922745 MDntsc

  • 320 x 224 @ 59.922745 MDntsc

  • 320 x 240 @ 59.922745 MDntsc

  • 320 x 448 @ 59.922745 MDntsc

  • 320 x 480 @ 59.922745 MDntsc

  • 256 x 192 @ 49.701458 MDpal

  • 256 x 224 @ 49.701458 MDpal

  • 320 x 224 @ 49.701458 MDpal

  • 320 x 240 @ 49.701458 MDpal

  • 320 x 288 @ 49.701458 MDpal

  • 320 x 448 @ 49.701458 MDpal

  • 320 x 480 @ 49.701458 MDpal

  • 320 x 576 @ 49.701458 MDpal

  • 256 x 288 @ 49.701458 MSYSpal

  • 256 x 240 @ 60.098812 NESntsc

  • 256 x 240 @ 50.006977 NESpal

  • 640 x 237 @ 60.130001 N64ntsc

  • 640 x 240 @ 60.130001 N64ntsc

  • 640 x 480 @ 60.130001 N64ntsc

  • 640 x 288 @ 50.000000 N64pal

  • 640 x 480 @ 50.000000 N64pal

  • 640 x 576 @ 50.000000 N64pal

  • 256 x 252 @ 49.759998 PSXpal

  • 320 x 252 @ 49.759998 PSXpal

  • 384 x 252 @ 49.759998 PSXpal

  • 640 x 252 @ 49.759998 PSXpal

  • 640 x 540 @ 49.759998 PSXpal

  • 384 x 240 @ 59.941002 PSXntsc

  • 256 x 480 @ 59.941002 PSXntsc

  • 352 x 240 @ 59.820000 Saturn/SGFX_NTSCp

  • 704 x 240 @ 59.820000 SaturnNTSCp

  • 352 x 480 @ 59.820000 SaturnNTSCi

  • 704 x 480 @ 59.820000 SaturnNTSCi

  • 352 x 288 @ 49.701458 SaturnPALp

  • 704 x 288 @ 49.701458 SaturnPALp

  • 352 x 576 @ 49.701458 SaturnPALi

  • 704 x 576 @ 49.701458 SaturnPALi

  • 240 x 160 @ 59.730000 GBA

  • 320 x 200 @ 60.000000 Doom

// Arcade

  • 400 x 254 @ 54.706841 MK
  • 384 x 224 @ 59.637405 CPS1

These modelines are more accurate giving exact hz. However, some games may have unwanted results. This is due to mid-scanline resolution changes on the original hardware. For the best results super resolutions are the way to go.

CRT resolution switching & MAME

Some arcade resolutions can be very different from consumer CRTs. There is resolution detection to ensure MAME games will be displayed in the closest available resolution but drawn at their native resolution within this resolution. Meaning that the MAME game will look just like the original hardware.

MAME ROMs that run in a vertical aspect like DoDonPachi need to be rotated within MAME before resolution switching and aspect correction will work. Do this before enabling CRT SwitchRes so that RetroArch will run in your desktop resolution. Once you have rotated any games that may need it turn CRT SwitchRes on.

Socials

The links below belong to our official channels. Links other than this may have been created by fans, independent members or followers. We seriously recommend using our original resources.

Issues
  • [iOS] retroarch 1.1 -nightly- problems

    [iOS] retroarch 1.1 -nightly- problems

    cant change any settings in core funtions for mupen64 cant change anything in user settings modules folder (no cores) is empty in retroarch app (but download them separately nighly cores) gl shader folder is empty to after open retroarch my phone overheat.

    opened by brujo5 228
  • Niche issue when streaming RA using some shader presets

    Niche issue when streaming RA using some shader presets

    First and foremost consider this:

    • Only RetroArch bugs should be filed here. Not core bugs or game bugs
    • This is not a forum or a help section, this is strictly developer oriented

    This is probably exceptionally low priority and something i'll have to live with. Still - I wanted to make sure it was put out there. As of a few versions back, I am no longer able to stream RA properly, at least in the means I have for a long time now. Unfortunately I'm a serial updater, and ive had a good week off of playing, so i cant say exactly what or when caused the regression.

    The short of it is this.

    I have content directory shader presets set up. In this case, for beetle psx hw. I load a game from said playlist, config override kicks in and positions window properly/places within overlay, and shader preset kicks in which ties into the configured sizing present in the config.

    this has stopped working if I am streaming and if im using my go-to shader that I have set up (ctr guest dr venom.) I stream via steam BPM via steam link app and if I load retroarch and load any playlist which uses that shader, I get a black screen with audio. This also happens with several other higher end crt shaders.

    If i come back to my pc, the image is on the screen, but is without color. If i remove the shader preset, all is fine. If i load a basic shader such as Geom's as a preset, that works fine as well.

    One other oddity. If i load a game via command line/shortcut direct from steam, it works fine. ONLY if i load it via retroarch itself does it fail.

    Im not sure if something a few versions back changed the priority or order these things were drawn or loaded - but definitely puts a damper on my vastly preferred means of playing.

    at current my options are command line shortcuts/launching of any game i want to play that uses that shader. The removal of those shader presets entirely from ~30 playlists and go with something basic like geoms, and resize all my config files to accomodate. Or, play exclusively from my pc.

    This could very well stem elsewhere, however I did try several different gpu drivers just in case. Also tried removing curve to eliminate that as being a potential variable as i know royale fails when curve is added to the picture.

    The strange part is, if i remove the preset, and load it manually after the game is loaded - it works just fine as well. its purely giving me hell when loaded automatically via content directory preset.

    Expected behavior

    The game to display alongside overlay AND shader, instead of overlay + black screen + audio.

    Actual behavior

    See above.

    Steps to reproduce the bug

    1. Launch retroarch via (presumably) a steam link - or in my case the steam link app.
    2. Load a game from a playlist that uses crt-guest-dr-venom
    3. note everything loads, (can see overlay, audio is playing) the gameplay area is black.

    Bisect Results

    I cant say exactly, as ive been not playing (but updating) for the past week or so. But its very recent.

    Version/Commit

    You can find this information under Information/System Information

    • RetroArch: 1.78 9a36851beb

    Environment information

    Windows 10

    opened by klepp0906 121
  • [Feature request] GXM driver for hardware acceleration on PS Vita

    [Feature request] GXM driver for hardware acceleration on PS Vita

    As of today, RetroArch / Libretro on the PS Vita is using software rendering. This is preventing cores from using the full potential of the device in terms of, of course, 3D emulation, but hardware acceleration could also do wonders for 2D display.

    Examples of GXM code found here : https://github.com/xerpi/gxmfun A little bit more context here : https://www.reddit.com/r/vitahacks/comments/5pbdgo/having_fun_with_libgxm_psvitas_3d_graphics_api/

    opened by kwyxz 105
  • iOS port issues - remaining

    iOS port issues - remaining

    This will be used to track all remaining issues until we feel confident to do a release. Please add to this issue as we go along.

    • (tested with PCSX ReARMed and verified there is an issue) - There seem to be pretty big savestate conflict problems right now. If I have a savestate saved on slot 1 for Soul Blade and if I then try to load state 1 in Resident Evil 2, it will actually load Soul Blade (!!!).

    I have also noticed saved states overwriting themselves this way.

    Meancoot - try to use the RGUI savestate functions in combination with the Cocoa savestate slots and tell me if you see any problems of the sort occurring.

    NOTE: I am using real BIOS files. Put the required BIOS files into Documents/.RetroArch

    opened by inactive123 85
  • Video width and height are switched when a vertically-oriented game is loaded

    Video width and height are switched when a vertically-oriented game is loaded

    Description

    With vertically oriented games, Retroarch switches the emulator-provided width and height. For example, if the width/height is supposed to be 320x240, RA will switch this to 240x320. This only occurs with vertically oriented games. I tested this in both MAME and FBA using the Windows 64 bit version of RA.

    Expected behavior

    The game to be displayed using the correct resolution (width/height).

    Actual behavior

    The height and width is switched when a vertically oriented game is loaded.

    Steps to reproduce the bug

    1. load any vertically oriented game in either FBA or MAME using Windows 64 bit version of RA (example: DonPachi)
    2. under video settings, enable integer scale.
    3. set "custom aspect ratio width/height" to 1x.
    4. look at "custom aspect ratio width/height" to see that it says 240 for width and 320 for height. This is the reverse of what it should be; it should be 240 for height and 320 for width.

    Bisect Results

    I first noticed this a few days ago.

    Version/Commit

    You can find this information under Information/System Information

    • RetroArch: 1.7.6 Git version: 9750719074

    Environment information

    • OS: Windows 10
    • Compiler: NA

    image

    image

    opened by Patrickdroid 82
  • Vulkan video driver in fullscreen on GeForce Driver 387.92 causing black screen

    Vulkan video driver in fullscreen on GeForce Driver 387.92 causing black screen

    Description

    With the new nVidia GeForce 387.92 video driver, the RetroArch Vulkan video driver only displays a black screen when starting any emulator. This only occurs in fullscreen mode. If you run in Windowed mode or alt-tab out of RetroArch and back in, then you'll get an image again (unless you change a resolution setting in the emulator causing the video driver to initialize).

    nVidia's driver release notes say the following relating to the issue:

    Implemented improved behavior for full-screen Vulkan swapchains using VK_KHR_win32_surface.

    This optimization will cause more events that trigger an out-of-date swapchain, such as when entering or leaving full-screen mode (typically by pressing Alt+tab). Applications that do not properly respond to the VK_ERROR_OUT_OF_DATE_KHR return code may not function properly when these events occur. See the WSI Swapchain section of the Vulkan specification.

    Other users reporting the issue here: https://forums.libretro.com/t/vulkan-full-screen-broken-with-new-nvidia-drivers-387-92-win10/12691

    Expected behavior

    Video to be displayed normally.

    Actual behavior

    Screen goes black when starting any emulator

    Steps to reproduce the bug

    1. Install nVidia Geforce Driver 387.92
    2. Start any emulator in-game
    3. Experience the black screen
    4. Exit Fullscreen or simply alt-tab out and back in to get the image back

    Bisect Results

    Only occurs with 387.92 and up nVidia driver. Rolling back to 385.69 works fine.

    Version/Commit

    • RetroArch: 1.6.3 - 1.6.7

    Environment information

    • OS: Windows 10 64-bit 1703 (Creators Update)
    • HW: GeForce GTX 1070
    bounty 
    opened by WhiteZeroX 80
  • IOS9/Pangu: Instant Crash

    IOS9/Pangu: Instant Crash

    I'm running the Pangu jailbreak on IOS 9.0.2 and it seems no matter which version of Retroarch I get (or where I get it from), the problem is the same: The app installs fine, but when I tap it it loads for a split second and then returns me to my icons. I tap the home button and it's running in the background, switch to it, and I'm returned (once again) to my icons. I'm assuming it's a problem due to the new IOS + Jailbreak but I'm not entirely sure.

    This happened on 1.0.0.1 from the ZoDTTD repo, 1.0.0.2 from the buildbot page and both versions from the Kromite repo (http://kromite.github.io).

    I've heard a lot of ranting about date / time, but this had no effect on the outcome.

    bug: major 
    opened by ghost 80
  • Fetch translation from Crowdin

    Fetch translation from Crowdin

    Guidelines

    1. Rebase before opening a pull request
    2. If you are sending several unrelated fixes or features, use a branch and a separate pull request for each
    3. If possible try squashing everything in a single commit. This is particularly beneficial in the case of feature merges since it allows easy bisecting when a problem arises

    Description

    Fetch translation from Crowdin. Update python script to support UTF-8 better and fix some key mismatch.

    Related Issues

    Related Pull Requests

    Reviewers

    opened by guoyunhe 79
  • [Wii U] DSI Error on launching Roms with Retroarch 1.67

    [Wii U] DSI Error on launching Roms with Retroarch 1.67

    img_0368

    DSI error ocurring randomly when launching ROMs under 1.67.

    FBA mainline core seems to trigger it most often. Usually the first ROM will load ok, while subsequent ROMs may trigger the error.

    Setup: Wii U 5.5.1, CBHC, launching Retroarch from channel. Same setup working fine previously, tried fresh .cfg as well with same results.

    platform: wiiu 
    opened by retrob0t 78
  • Implementing WASAPI Audio driver in Windows

    Implementing WASAPI Audio driver in Windows

    Further to this thread on the libretro boards: http://libretro.com/forums/showthread.php?t=5206

    I'm inquiring about the possible implementation of a WASAPI audio driver for Windows builds of Retroarch. This kind of solution is very popular in both audio playback and production and it would provide the following benefits:

    • higher quality "bitperfect" audio, with the target application taking exclusive control of the audio, bypassing the Windows mixer stack and muting anything else;
    • extremely low-latency response.

    Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

    followup: enhancement 
    opened by Ryunam 77
  • Graceful switching between video drivers [$165]

    Graceful switching between video drivers [$165]

    First and foremost consider this:

    • Only RetroArch bugs should be filed here. Not core bugs or game bugs
    • This is not a forum or a help section, this is strictly developer oriented

    Description

    RetroArch currently behaves unpredictably and unstably when switching to cores that want a context other than what is currently active. This can happen because of video_driver settings being different in a core config override or because a core's core options are telling it to use a different renderer than is active (e.g., GL vs Vulkan)

    Expected behavior

    One would expect RetroArch to switch to the appropriate video_driver for the core, which the core can request, even if that means tearing the context down completely and rebuilding.

    Actual behavior

    GL->Vulkan with soft rendered core: Works, crashes when toggling the menu.

    #0  gl_raster_font_render_line (font=0xeb5a1f0, msg=<optimized out>,
        msg_len=<optimized out>, scale=1, color=0x45cebc0, pos_x=inf,
        pos_y=-nan(0x400000), text_align=0)
        at gfx/drivers_font/gl_raster_font.c:339
    #1  0x0000000000000000 in ?? ()
    Backtrace stopped: previous frame inner to this frame (corrupt stack?)
    

    GL->Vulkan with HW mednafen psx: Appears to work, loads correctly, the core loads and game loads too but I think it's just falling back to GL. Slang shaders don't work but CG shaders do

    GL->Vulkan with HW parallel: Crashes

    [Switching to thread 1 (Thread 5280.0xf4c)]
    #0  RDP::begin_frame () at mupen64plus-video-paraLLEl/rdp.cpp:131
    131     in mupen64plus-video-paraLLEl/rdp.cpp
    

    Vulkan->GL anything Crashes right away

    Thread 1 received signal SIGSEGV, Segmentation fault.
    [Switching to Thread 7256.0x32e8]
    vulkan_create_texture (vk=0x6c1d020, [email protected]=0x0, width=544,
        height=544, [email protected]=VK_FORMAT_R8_UNORM, initial=0x1346baa0,
        [email protected]=0x0, [email protected]=VULKAN_TEXTURE_STATIC)
        at gfx/common/vulkan_common.c:293
    293        VkDevice device                      = vk->context->device;
    (gdb) bt
    #0  vulkan_create_texture (vk=0x6c1d020, [email protected]=0x0, width=544,
        height=544, [email protected]=VK_FORMAT_R8_UNORM, initial=0x1346baa0,
        [email protected]=0x0, [email protected]=VULKAN_TEXTURE_STATIC)
        at gfx/common/vulkan_common.c:293
    #1  0x000000000050534d in vulkan_raster_font_init_font (data=0x6c1d020,
        font_path=0x45c8740 "userdata\\fonts\\font.ttf", font_size=32)
        at gfx/drivers_font/vulkan_raster_font.c:69
    #2  0x000000000044e002 in gl_font_init_first (font_size=<optimized out>,
        font_path=<optimized out>, video_data=<optimized out>,
        font_handle=<optimized out>, font_driver=<optimized out>)
        at gfx/font_driver.c:137
    #3  font_init_first (api=FONT_DRIVER_RENDER_VULKAN_API, font_size=32,
        font_path=0x45c8740 "userdata\\fonts\\font.ttf", video_data=0x6c1d020,
        font_handle=0x45c8688, font_driver=0x45c8680) at gfx/font_driver.c:282
    #4  font_driver_init_first (video_data=0x6c1d020,
        [email protected]=0x45c8740 "userdata\\fonts\\font.ttf",
        [email protected]=32, [email protected]=true,
        [email protected]=FONT_DRIVER_RENDER_VULKAN_API) at gfx/font_driver.c:381
    #5  0x000000000061edf4 in menu_display_vk_font_init_first (
        [email protected]=0x45c8738, video_data=<optimized out>,
        [email protected]=0x45c8740 "userdata\\fonts\\font.ttf",
        [email protected]=32)
        at menu/drivers_display/menu_display_vulkan.c:258
    #6  0x00000000004bb904 in menu_display_font_main_init (
        font=<synthetic pointer>) at menu/menu_display.c:225
    #7  menu_display_font (
        [email protected]=APPLICATION_SPECIAL_DIRECTORY_ASSETS_XMB_FONT,
        font_size=32) at menu/menu_display.c:215
    #8  0x0000000000487c19 in xmb_context_reset (data=0x12c005a0)
        at menu/drivers/xmb.c:3308
    #9  0x000000000048d09b in menu_driver_ctl (
        [email protected]=RARCH_MENU_CTL_CONTEXT_RESET, [email protected]=0x0)
        at menu/menu_driver.c:981
    #10 0x000000000042d4c8 in init_drivers (flags=<optimized out>) at driver.c:351
    #11 driver_ctl (state=<optimized out>, data=<optimized out>) at driver.c:466
    #12 0x000000000042d3f7 in driver_ctl (
        [email protected]=RARCH_DRIVER_CTL_INIT_ALL, [email protected]=0x0)
        at driver.c:472
    #13 0x0000000000405105 in retroarch_main_init (argc=0, argv=0x0,
        [email protected]=0x45cc280) at retroarch.c:1083
    #14 0x00000000004152f2 in content_load (info=0x45cd370)
        at tasks/task_content.c:280
    #15 task_load_content ([email protected]=0x45cd3f0,
        [email protected]=false,
        mode=CONTENT_MODE_LOAD_CONTENT_FROM_PLAYLIST_FROM_MENU)
        at tasks/task_content.c:902
    #16 0x00000000004161b9 in command_event_cmd_exec (
        mode=CONTENT_MODE_LOAD_CONTENT_FROM_PLAYLIST_FROM_MENU,
        data=0x12e8dad0 "D:\\PortableData\\GameData\\EmulatorData\\Games\\Console\\Super Nintendo Entertainment System\\Virtual Bart (USA).zip")
        at tasks/task_content.c:1016
    #17 task_push_content_load_default (
        [email protected]=0x45cd500 "D:\\PortableData\\GameData\\Emulators\\RetroArch\\libretro\\bsnes_balanced_libretro.dll",
        fullpath=0x12e8dad0 "D:\\PortableData\\GameData\\EmulatorData\\Games\\Console\\Super Nintendo Entertainment System\\Virtual Bart (USA).zip",
        [email protected]=0x45ce500,
        [email protected]=CORE_TYPE_PLAIN,
        [email protected]=CONTENT_MODE_LOAD_CONTENT_FROM_PLAYLIST_FROM_MENU,
        [email protected]=0x0, [email protected]=0x0)
        at tasks/task_content.c:1154
    #18 0x00000000004a67b8 in generic_action_ok_file_load (
        content_enum_idx=CONTENT_MODE_LOAD_CONTENT_FROM_PLAYLIST_FROM_MENU,
        action_type=CORE_TYPE_PLAIN, fullpath=<optimized out>,
        corepath=0x45cd500 "D:\\PortableData\\GameData\\Emulators\\RetroArch\\libretro\\bsnes_balanced_libretro.dll") at menu/cbs/menu_cbs_ok.c:867
    #19 action_ok_playlist_entry_collection (path=<optimized out>,
        label=<optimized out>, type=<optimized out>, idx=<optimized out>,
        entry_idx=0) at menu/cbs/menu_cbs_ok.c:1095
    #20 0x00000000004a072a in menu_entry_action ([email protected]=0x45cf620,
        i=<optimized out>, [email protected]=MENU_ACTION_OK)
        at menu/widgets/menu_entry.c:523
    #21 0x00000000004c7d4b in generic_menu_iterate (data=0x12bfc190,
        userdata=<optimized out>, action=MENU_ACTION_OK)
        at menu/drivers/menu_generic.c:233
    #22 0x000000000048de39 in menu_driver_ctl (
        [email protected]=RARCH_MENU_CTL_ITERATE, [email protected]=0x45cfc60)
        at menu/menu_driver.c:888
    #23 0x0000000000412779 in runloop_check_state (
        [email protected]=0x71fb040, [email protected]=1,
        [email protected]=0, sleep_ms=0x45cfde0) at runloop.c:888
    #24 0x0000000000412fa9 in runloop_iterate ([email protected]=0x45cfde0)
        at runloop.c:1203
    #25 0x00000000004016c0 in rarch_main (argc=<optimized out>,
        argv=<optimized out>, data=0x0) at frontend/frontend.c:130
    #26 0x00000000006691f8 in main_getcmdline ()
    #27 0x00000000004013f8 in __tmainCRTStartup ()
        at C:/repo/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/crt/crtexe.c:334
    #28 0x00000000004014eb in WinMainCRTStartup ()
        at C:/repo/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/crt/crtexe.c:184
    

    Steps to reproduce the bug

    1. Set video driver to "gl"
    2. Load and run a core that has no core override
    3. Enter menu
    4. Change "video driver" setting to "vulkan"
    5. Save core override from quick menu
    6. Close RA
    7. Run RA and check menu to verify "video driver" is set to "gl". If not, set to "gl" and close RA then run RA again
    8. Load and run the core you saved the core override for earlier
    9. Try to enter menu

    Bisect Results

    always

    Version/Commit

    You can find this information under Information/System Information

    all versions

    Environment information

    Any

    This issue combines the complaints and desired functionality from both: https://github.com/libretro/RetroArch/issues/3297 and https://github.com/libretro/RetroArch/issues/4588


    There is a $25 open bounty on this issue. Add to the bounty at Bountysource.

    bug: major followup: enhancement bounty 
    opened by hizzlekizzle 76
  • [Steam] Cloud Sync does not save configuration overrides

    [Steam] Cloud Sync does not save configuration overrides

    Description

    Steam Cloud Sync does not save the files config/*/*.cfg, only config/*/*.opt, resulting in core/content directory/game overrides no being saved.

    Expected behavior

    Steam Cloud Sync should save the overrides.

    Actual behavior

    Steam Cloud Sync does ont save the overrides.

    Steps to reproduce the bug

    1. Save a core/content directory/game override
    2. Exit RetroArch
    3. Wait for Steam Cloud Sync to save the changes
    4. Open RetroArch on another machine
    5. The overrides are not present

    Version/Commit

    You can find this information under Information/System Information

    • RetroArch: 1.10.3
    • Build Date: 2022-04-18
    • Git Version: 9b282aa742

    Environment information

    • OS: Arch Linux on one machine, Steam Deck on the other
    opened by Silejonu 0
  • Increase DEFAULT_MAX_PADS to 8 for ODROIDGO2, since that impacts the …

    Increase DEFAULT_MAX_PADS to 8 for ODROIDGO2, since that impacts the …

    Description

    Fixes USB gamepads on RG351[X} consoles.

    Increase DEFAULT_MAX_PADS to 8 for ODROIDGO2, since that impacts the RG351[X] consoles. The RG351[X] have a USB host controller and can have an arbitrary number of USB gamepads.

    Related Issues

    Resolves Issue #13281

    Reviewers

    @sergimes

    opened by aldebaran27 0
  • (Ozone+XMB) Savestate thumbnail fullscreen + dropdown

    (Ozone+XMB) Savestate thumbnail fullscreen + dropdown

    Description

    This mainly brings these changes to savestate thumbnails for both menu drivers:

    • Fullscreen toggling with "left" button
    • Show active thumbnail in slot dropdown/submenu

    But it also unifies when regular playlist thumbnails (boxart etc) are shown, since currently they are rather all over the place, and since they were closely related to the matters at hand.

    Best shown with a table in order of menu "clicks", checkmark being when boxart is shown:

    ||> Playlist| > QM non-running| > QM running| |---|:---:|:---:|:---:| |XMB now| :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | |Ozone now| :heavy_check_mark: | | |Both in this PR| :heavy_check_mark: | :heavy_check_mark: | |

    In a nutshell: Don't show playlist thumbnails in Quick Menu while the content is running, but do show when content is not running.

    retroarch_2022_06_30_15_10_22_528 retroarch_2022_06_30_15_10_36_343

    Other changes in Ozone:

    • Fixed image previews under "Load Content"
    • Decreased fullscreen thumbnail padding slightly

    And in XMB:

    • Changed fullscreen image border to "dark" instead of "legacy red" when using "Plain" menu theme

    Reviewers

    @jdgleaver @bslenul @Ryunam

    I tried to be thorough, but helping/testing hands are always appreciated!

    opened by sonninnos 8
  • Image Viewer doesnt work on later version of Retroarch on the Wii

    Image Viewer doesnt work on later version of Retroarch on the Wii

    First and foremost consider this:

    • Only RetroArch bugs should be filed here. Not core bugs or game bugs
    • This is not a forum or a help section, this is strictly developer oriented

    Description

    Image Viewer never seemed to work on Retroarch on the Wii, at all, despite working fine on the regular PC version.

    Expected behavior

    Images should display properly in full color

    Actual behavior

    On the old version of the Core, imageviewer_libretro_wii.dol which was 0.1, images just simply load in red tones, whereas on any other version of Retroarch post version 1.3.6 on the wii, the imageviewer doesnt seem to work no more, on the latest version of retroarchs, even after allowing the option to use the built-in media player, it does not open the images at all, it just crashes retroarch and either resets Retroarch or just sends you back to the Homebrew channel.

    I do occasionally create sprite art, and i only have a CRT with composite input, i don't have any budget to afford an expensive GPU with display port to do any tricks to output 240p on a CRT with Component input, and sadly my only GPU and transcoder seems to be of poor quality since it just output a very flickery 480i image, which makes it worthless in my opinion, to being able to connect my PC and display pixelart on my CRT using the regular version of Retroarch.

    Here's a quick sprite-work i had produce for the sake of an example (based on an image that was not mine and i take no credit for)

    https://files.catbox.moe/9h4y71.jpg

    The Nintendo Wii was the last console that could output 240p trough composite, which seemed to be my last choice, but so far, i got distraught, my budget is severely limited.

    I don't know if is it because i am using a Wii mini or what else, but i need your help, please correct the Image Viewer in case of it still being integrated into Retroarch Wii so it doesn't crash the entire app? the idea of being able to output native 240p sounds like a good deal for me, and could it be an amazing feat for aspiring pixel artists, specially those working at different sprite resolutions such as 320x224 or 384x224

    Please solve this issue as soon as possible.

    Steps to reproduce the bug

    1. Open Retroarch and on File Browsing enable the Option to use Built-In Media Player
    2. Open folder with desire image files (Jpeg, PNG, etc) and load file
    3. Retroarch just crashes.

    Bisect Results

    When loading PNG, JPEG and BMP images, it refuses to load them properly and just simply crashes.

    Version/Commit

    You can find this information under Information/System Information

    • RetroArch: Earlier version tested 1.3.6 - Newer version tested 1.10.3

    Environment information

    • OS: HomeBrew Channel on the Nintendo Wii
    • Compiler: [In case you are running local builds]
    opened by Pepipopo 0
  • Allow installing retroarch for current user only

    Allow installing retroarch for current user only

    First and foremost consider this:

    • Only RetroArch bugs should be filed here. Not core bugs or game bugs
    • This is not a forum or a help section, this is strictly developer oriented

    Description

    Originally reported here: https://github.com/microsoft/winget-pkgs/issues/64711

    Right now retroarch installer ignores parameters like this /CurrentUser /D=C:\Users\User\AppData\Local\retroarch that can allow winget/chocolatey to silently install retroarch as user, and current installer launcher with admin rights by default.

    Expected behavior

    Retroarch will use flags like this /CurrentUser /D=C:\Users\User\AppData\Local\retroarch and will not require admin rights to install by default.

    Actual behavior

    Retroarch launches as admin and ignores this flags.

    Steps to reproduce the bug

    1. Download installer.
    2. Launch it with .\RetroArch-Win64-setup.exe /CurrentUser /D=C:\Users\User\AppData\Local\retroarch
    3. UAC prompt, and path is still set to C:\RetroArch-Win64

    Bisect Results

    [Try to bisect and tell us when this started happening]

    Version/Commit

    You can find this information under Information/System Information

    • RetroArch: 1.10.3.0

    Environment information

    • OS: Windows 11
    • Compiler: [In case you are running local builds]
    opened by soredake 0
Releases(v1.10.3)
MIT Licensed Open Source version of Torque 2D game engine from GarageGames

We've moved! All torque engines have moved to a new organization, Torque Game Engines. Torque2D can be found at https://github.com/TorqueGameEngines/T

GarageGames 1.7k Jun 18, 2022
MIT Licensed Open Source version of Torque 3D from GarageGames

Torque 3D MIT Licensed Open Source version of Torque 3D from GarageGames More Information Homepage Torque 3D wiki Community forum GarageGames forum Ga

GarageGames 3.3k Jun 29, 2022
The Atomic Game Engine is a multi-platform 2D and 3D engine with a consistent API in C++, C#, JavaScript, and TypeScript

The Atomic Game Engine is a multi-platform 2D and 3D engine with a consistent API in C++, C#, JavaScript, and TypeScript

null 2.7k Jul 3, 2022
Open-source, cross-platform, C++ game engine for creating 2D/3D games.

GamePlay v3.0.0 GamePlay is an open-source, cross-platform, C++ game framework/engine for creating 2D/3D mobile and desktop games. Website Wiki API De

gameplay3d 3.7k Jun 28, 2022
KlayGE is a cross-platform open source game engine with plugin-based architecture.

KlayGE KlayGE is a cross-platform open source game engine with plugin-based architecture. It's started since 2003. The explicit goal of KlayGE is: to

Minmin Gong 1.7k Jun 22, 2022
A cross-platform 2D game engine

nCine nCine is a cross-platform 2D game engine. It is released under the MIT License, Copyright (c) 2011-2021 Angelo Theodorou. For additional informa

nCine 703 Jul 1, 2022
Powerful, mature open-source cross-platform game engine for Python and C++, developed by Disney and CMU

Panda3D Panda3D is a game engine, a framework for 3D rendering and game development for Python and C++ programs. Panda3D is open-source and free for a

Panda3D 3.4k Jul 2, 2022
Polycode is a cross-platform framework for creative code.

Polycode is a cross-platform framework for creative code. You can use it as a C++ API or as a standalone scripting language to get easy and simple acc

Ivan Safrin 2.4k Jun 25, 2022
A powerful free cross-platform RTS game engine

Spring RTS game engine README Spring (formerly TASpring) is an Open Source Real Time Strategy game engine. Visit our project homepage for help, sugges

Spring RTS 2.6k Jun 25, 2022
MAZE (My AmaZing Engine) - 🎮 Personal open-source cross-platform game engine

MAZE (My AmaZing Engine) is the self-written open-source cross-platform game engine in the active development stage. At the moment it is my main pet project, developed for the purpose of learning and preserving different game dev technologies.

Dmitriy Nosov 11 Jan 9, 2022
Cross-platform version of Heboris C7EX using a hardware-accelerated SDL 2.0 renderer

Heboris C7EX - unofficial version (YGS2K EX) This version contains the source code for Heboris C7EX. It requires a C compiler, SDL 2.0, SDL 2.0 mixer,

Brandon McGriff 9 May 27, 2022
TrenchBroom is a modern cross-platform level editor for Quake-engine based games.

TrenchBroom is a modern cross-platform level editor for Quake-engine based games.

TrenchBroom 1.2k Jul 1, 2022
CSEngine is a cross-platform 3D game engine.

CSEngine - Cross Platform C++ Game Engine CSEngine is a cross-platform 3D game engine. ?? As it is under development, it is not yet suitable for pract

ounols 45 Jun 27, 2022
Intrinsic is a Vulkan based cross-platform game and rendering engine

Intrinsic is a Vulkan based cross-platform game and rendering engine

Benjamin Wrensch 1k Jul 1, 2022
A cross-platform, top-down 2D space shooter written in C using only system libraries.

A cross-platform, top-down 2D space shooter written in C using only system libraries.

Tarek Sherif 1.3k Jun 25, 2022
Free, cross-platform 2D game engine powered by Haxe and OpenFL

flixel | addons | ui | demos | tools | templates | docs | haxeflixel.com Links Here are the most important links to get you started with HaxeFlixel: G

HaxeFlixel 1.6k Jun 28, 2022
One framework for creating powerful cross-platform games.

MonoGame One framework for creating powerful cross-platform games. The spiritual successor to XNA with thousands of titles shipped across desktop, mob

MonoGame 8.5k Jun 24, 2022
VERY simple cross-platform C++ analytics for games (using Google Analytics)

Tiniest Analytics is a very simple to use, cross-platform (tested on win/osx/linux/ios/android) and basically very tiny analytics system written in C++ (less than 100 lines of code), made specifically for games. It uses libcurl to post events to your Google Analytics account.

Mihai Gosa 95 Jan 31, 2022
Cross-platform library for gamepad input.

libgamepad Abstracts gamepad access through an easy to use, cross-platform API. What platforms does it support? Platform Toolchain Supported Windows M

Michael Williams 15 Oct 21, 2021