RetroArch: Difference between revisions

From NixOS Wiki
imported>Zaechus
m fix line number for github link and remove erroneous line about directly running games
Ibizaman (talk | contribs)
Add more info about mappings.
 
(One intermediate revision by one other user not shown)
Line 19: Line 19:
== Gotchas ==
== Gotchas ==


=== Graphics ===
Not all the graphics settings are in the same place. You'll want to look under the top-level Settings (in the left column under Main Menu) and also under <code>Main Menu -> Quick Menu -> Options</code>
Not all the graphics settings are in the same place. You'll want to look under the top-level Settings (in the left column under Main Menu) and also under <code>Main Menu -> Quick Menu -> Options</code>
=== Mapping ===
The following way to remap a controller or map a new controller is convoluted, but works and allows you to upstream your changes.
# Fork the [https://github.com/libretro/retroarch-joypad-autoconfig retroarch-joypad-autoconfig] project and clone it in a folder of your choosing.
# With Retroarch open, go to Settings > Directory and change Controller Profiles to point to the same folder. Note: Do not attempt to modify the directory in <code>retroarch.cfg</code> directly because it will be overwritten on startup.
# Now, saving the mapping will work but this will be ignored on next startup of Retroarch.
# After you are happy with the mapping, commit the changes in the folder where you cloned the retroarch-joypad-autoconfig project and push them to your fork.
# To use what you just pushed in your configuration right away, add the following overlay to your nix config by replacing the various fields with those corresponding to your fork:<syntaxhighlight lang="nix">
(final: prev: {
  retroarch-joypad-autoconfig = prev.retroarch-joypad-autoconfig.overrideAttrs {
    src = prev.fetchFromGitHub {
      owner = "ibizaman";
      repo = "retroarch-joypad-autoconfig";
      rev = "420a8fa4dc7b12f7c176fa0e704e9f987f6ceabd";
      hash = "sha256-yIvW9UTgc+/hhwx+93FgzrDBEBD35xFdBiVdJCKUYBc=";
    };
  };
})
</syntaxhighlight>
# After switching over to the new configuration and restarting Retroarch, you will see the mappings got updated.
# Now you can create a pull request from your fork to the retroarch-joypad-autoconfig project to upstream your changes.


== Bugs ==
== Bugs ==
Line 30: Line 53:


No icons show in the GUI, including the mouse cursor. You need to go to <code>Online Updater > Update Assets</code> to download the icons. You can navigate the GUI with only the keyboard. Press enter to open sections/pages, backspace to go back out, arrow keys to choose between options (left/right change some values).
No icons show in the GUI, including the mouse cursor. You need to go to <code>Online Updater > Update Assets</code> to download the icons. You can navigate the GUI with only the keyboard. Press enter to open sections/pages, backspace to go back out, arrow keys to choose between options (left/right change some values).
== Error Messages ==
=== Error save controller profile ===
This is because the location of the controller profile is in the nix store, making it read-only. To actually remap a controller, see the [[RetroArch#Mapping|Mapping]] section.
[[Category:Applications]]
[[Category:Gaming]]

Latest revision as of 05:12, 21 April 2024

You can install retroarch with some cores (actual emulators) by putting something like this in your /etc/nixos/configuration.nix:

environment.systemPackages = with pkgs; [
  (retroarch.override {
    cores = with libretro; [
      genesis-plus-gx
      snes9x
      beetle-psx-hw
    ];
  })
];

The cores are defined here:

https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/emulators/retroarch/cores.nix#L61

Gotchas

Graphics

Not all the graphics settings are in the same place. You'll want to look under the top-level Settings (in the left column under Main Menu) and also under Main Menu -> Quick Menu -> Options

Mapping

The following way to remap a controller or map a new controller is convoluted, but works and allows you to upstream your changes.

  1. Fork the retroarch-joypad-autoconfig project and clone it in a folder of your choosing.
  2. With Retroarch open, go to Settings > Directory and change Controller Profiles to point to the same folder. Note: Do not attempt to modify the directory in retroarch.cfg directly because it will be overwritten on startup.
  3. Now, saving the mapping will work but this will be ignored on next startup of Retroarch.
  4. After you are happy with the mapping, commit the changes in the folder where you cloned the retroarch-joypad-autoconfig project and push them to your fork.
  5. To use what you just pushed in your configuration right away, add the following overlay to your nix config by replacing the various fields with those corresponding to your fork:
    (final: prev: {
      retroarch-joypad-autoconfig = prev.retroarch-joypad-autoconfig.overrideAttrs {
        src = prev.fetchFromGitHub {
          owner = "ibizaman";
          repo = "retroarch-joypad-autoconfig";
          rev = "420a8fa4dc7b12f7c176fa0e704e9f987f6ceabd";
          hash = "sha256-yIvW9UTgc+/hhwx+93FgzrDBEBD35xFdBiVdJCKUYBc=";
        };
      };
    })
    
  6. After switching over to the new configuration and restarting Retroarch, you will see the mappings got updated.
  7. Now you can create a pull request from your fork to the retroarch-joypad-autoconfig project to upstream your changes.

Bugs

Input Reset

beetle-psx-hw input (by keyboard anyway) only works if you go to Settings -> Input -> Port 1 Controls -> Device Type and set it to PlayStation Controller every time you run the emulator.

Missing Icons

No icons show in the GUI, including the mouse cursor. You need to go to Online Updater > Update Assets to download the icons. You can navigate the GUI with only the keyboard. Press enter to open sections/pages, backspace to go back out, arrow keys to choose between options (left/right change some values).

Error Messages

Error save controller profile

This is because the location of the controller profile is in the nix store, making it read-only. To actually remap a controller, see the Mapping section.