RetroArch - Libretro (videogame system emulator API)
SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
RetroArch - Libretro (videogame system emulator API)
I have recently been working on libretro core slackbuilds for use with RetroArch in Slackware to play old console emulators so I thought I'd share my slackbuilds here in case others are interested.
To navigate RetroArch, use the arrow keys, 'z' and 'x' to move down or up in the menu, 'Esc' to close it and 'F1' to get the RetroArch menu while playing a game.
To play any games compile one of the following cores, satisfy any bios requirements if needed in the RetroArch system directory (Its set in RetroArch) and then use:
If anyone has issues, please let me know and perhaps make an issue at the relevant github repo if its a problem with RetroArch or one of the libretro cores itself.
More information can be found at their site, wiki and github.
Cool, I didn't realize anyone else got there first, I think diversity of choice in slackbuilds is great! We also seem to be handling it differently. I didn't know about the built on ubuntu cores yet, they don't seem something I really want to cover anyways.
Heads up (to Orbea) that I just submitted a Vulkan SDK SlackBuild to SBo. Building RetroArch against it was specifically what I did to test it.
To get RetroArch to pick it up, my current procedure is check out the git repository, run fetch-submodules.sh from the source directory (it includes "git submodule" operations), then build it.
Thanks! I'm still not in the position to test it out unfortunately. Do you know if that would be the only dependency required for RetroArch with wulkan support? What gpu and driver have you tested it with? Does it work with mesa (intel or amd) in Slackware-14.2? Did you just test the RetroArch menu or did you try parallel-psx and parallel-n64 too? Sorry for all the questions, but I'd like to document it properly for SBo, but since I can't test it that makes it hard.
You may also want to see how it works with dolphin-emu.
To get RetroArch to pick it up, my current procedure is check out the git repository, run fetch-submodules.sh from the source directory (it includes "git submodule" operations), then build it.
Unfortunately we do not allow running git XXX inside SlackBuild script, so the whole operation must be done when creating the sources and host it somewhere or wait until RetroArch support vulkan natively.
Submodules are a pain, but it's still doable with SlackBuilds... it just takes more effort.
I have two examples of SlackBuilds that I had to do some finessing for submodules. glPortal is a relatively simple one with 4 submodules. But then there's redeclipse with 36 submodules. For that one, I created a separate submodules-list file that is referenced in the SlackBuild (should hopefully make it easier to update if they add more submodules). glPortal's submodules required renaming from the downloaded bits, so they had to be specified manually, but luckily redeclipse's were all the same name, so I was able to easily do a for loop to unpack them and move them to the right directory.
Thanks! I'm still not in the position to test it out unfortunately. Do you know if that would be the only dependency required for RetroArch with wulkan support? What gpu and driver have you tested it with? Does it work with mesa (intel or amd) in Slackware-14.2? Did you just test the RetroArch menu or did you try parallel-psx and parallel-n64 too? Sorry for all the questions, but I'd like to document it properly for SBo, but since I can't test it that makes it hard.
What did I test with so far?
NVidia GTK-970 with the 379.39 drivers. I'd tried the bsnes core and slang shaders with the Vulkan video driver on a previous run.
Unfortunately we do not allow running git XXX inside SlackBuild script, so the whole operation must be done when creating the sources and host it somewhere or wait until RetroArch support vulkan natively.
RetroArch itself no longer has any submodules, additionally the source for RetroArch at SBo should be entirely complete. The Vulkan support should also be out of the box and automatically detected with their configure script, the problem is that as a nouveau user I can not test it yet. If someone with driver and gpu support could please help out so it can be properly documented with my script I'd appreciate it (Patches welcome). Otherwise it will have to wait till I can afford more hardware...
Here is the very simple script I used to make the RetroArch source tarball since upstream hasn't stepped up to do it.
Code:
#!/bin/sh
# RetroArch packaging script
# Copyright 2016-2017 orbea
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PRGNAM=RetroArch
SRCNAM="$(printf %s $PRGNAM | tr '[:upper:]' '[:lower:]')"
REPO=libretro-super
BRANCH=master
TMP=${TMP:-/tmp}
set -eu
trap "rm -rf $TMP/$REPO" EXIT
mkdir -p "$TMP"
cd "$TMP"
rm -rf "$REPO"
git clone -b "$BRANCH" https://github.com/libretro/$REPO
cd "$REPO"
./libretro-fetch.sh "$SRCNAM"
cd "$SRCNAM"
COMMIT="$(git describe --abbrev=0 --tags)"
git checkout "$COMMIT"
VERSION="$(printf %s $COMMIT | tr -d v)"
find . -name ".git*" | xargs rm -rf
cd "$TMP/$REPO"
mv retroarch "$PRGNAM-$VERSION"
tar cf - "$PRGNAM-$VERSION" | xz -c9 - > "$TMP/$PRGNAM-$VERSION.tar.xz"
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.