Changes

Jump to navigation Jump to search

Emulators on Linux

23,012 bytes removed, 22:56, 17 June 2022
m
Changed to a list page rather than a guide, wip
'''Distro-agnostic packages''' are application portability solutions in Linux. There are thousands of different distributions of Linux, and many of these use different package systems to manage application installation. Some popular ones are .deb format used by Debian, Ubuntu and its variants, and there is also RPM format used by [[Emulation on Fedora|Fedora]], RedHat, and many others.Packages of the game console and computer emulators exist for popular Linux distros, usually available from the official software repositories of the distribution, but they are usually very old compared to the upstream versions. In addition, these packages are typically made only for one single version of the distribution, and due to dependency problems, these can not be used in other distros.There are at least three new package formats that are aiming to bring application portability to the Linux ecosystem. Packages using these formats are quite huge in file size due to bundling all dependencies in it, but they can run in any popular Linux distros. ==Flatpak==Flatpak (formerly xdg-app) is a distro-agnostic application framework. It is a decentralized system and has no central package repository. Instead, the user must manually add the repository's URL to the system before packages can be installed, like in [[Emulation on Ubuntu|Ubuntu's PPA]]. [https://flathub.org/ Flathub], probably the biggest Flatpak repository, has several emulators. To install emulators from Flathub, add the location of Flathub repository to your system: <code>$ flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo</code> List of available application package names can be obtained by the following command: <code>$ flatpak remote-ls flathub</code> Use the following command to install the emulator from Flathub: <code>$ flatpak install flathub ''Package Name''</code> Available emulators and its package name is listed below.{| class="wikitable" width="100%"|-! scope="col"|Emulator/Project! scope="col"|Package Name|-|[[RetroArch]]<ref group=N>[https://www.libretro.com/index.php/retroarch-with-flatpak/ Official Flatpak Announcement of RetroArch]</ref>|[https://flathub.org/apps/details/org.libretro.RetroArch org.libretro.RetroArch]|-|[[RPCS3]]|[https://flathub.org/apps/details/net.rpcs3.RPCS3 net.rpcs3.RPCS3]|-|[[DuckStation]]|[https://flathub.org/apps/details/org.duckstation.DuckStation org.duckstation.DuckStation]|-|[[m64p]]|[https://flathub.org/apps/details/io.github.m64p.m64p io.github.m64p.m64p]|-|[[Yuzu]]|[https://flathub.org/apps/details/org.yuzu_emu.yuzu org.yuzu_emu.yuzu]|-|[[melonDS]]|[https://flathub.org/apps/details/net.kuribo64.melonDS net.kuribo64.melonDS]|-|[[Dolphin]]|[https://flathub.org/apps/details/org.DolphinEmu.dolphin-emu org.DolphinEmu.dolphin-emu]|-|[[DOSBox]]|[https://flathub.org/apps/details/com.dosbox.DOSBox com.dosbox.DOSBox]|-|FS-UAE|[https://flathub.org/apps/details/net.fsuae.FS-UAE net.fsuae.FS-UAE]|-|[[mGBA]]|[https://flathub.org/apps/details/io.mgba.mGBA io.mgba.mGBA]|-|[[Nestopia]]|[https://flathub.org/apps/details/ca._0ldsk00l.Nestopia ca._0ldsk00l.Nestopia]|-|[[PCSX2]]|[https://flathub.org/apps/details/net.pcsx2.PCSX2 net.pcsx2.PCSX2]|-|[[Citra]]|[https://flathub.org/apps/details/org.citra_emu.citra flatpak.citra-emu.org]|-|[[PPSSPP]]|[https://flathub.org/apps/details/org.ppsspp.PPSSPP org.ppsspp.PPSSPP]|-|[[Snes9x]]|[https://flathub.org/apps/details/com.snes9x.Snes9x com.snes9x.Snes9x]|-|[[VICE]]|[https://flathub.org/apps/details/net.sf.VICE net.sf.VICE]|-|[[FUSE]]|[https://flathub.org/apps/details/net.sf.fuse_emulator net.sf.fuse_emulator]|-|[[ScummVM]]|[https://flathub.org/apps/details/org.scummvm.ScummVM org.scummvm.ScummVM]|-|[[bsnes]]|[https://flathub.org/apps/details/dev.bsnes.bsnes dev.bsnes.bsnes]|}<references group=N /> ==Snappy==Snappy, also called 'snaps' or just 'snap', is a distro-agnostic application framework made by Canonical, the Ubuntu devs. Unlike other formats, it is a centralized system and has the official repository to download the packages from.List of all packages can be viewed from [https://snapcraft.io/store Snapcraft] (Apps are listed by categories). Snappy has the following emulators:*[https://snapcraft.io/retroarch RetroArch] ([https://www.libretro.com/index.php/retroarch-snap-packages-now-available/ Official Announcement])*[[Hatari]] [https://snapcraft.io/hatari-emulator]*[[DOSBox]] [https://snapcraft.io/dosbox-jz]*FS-UAE [https://snapcraft.io/fsuae]*Atari 8-bit [https://snapcraft.io/atari800-jz] (Atari800)*[[VICE]] [https://snapcraft.io/vice-jz]*[[ScummVM]] [https://snapcraft.io/scummvm]*Virtual Jaguar GCC/Qt portable Jaguar [https://snapcraft.io/virtualjaguar-jz]*[[MAME]] [https://snapcraft.io/mame]*[[Citra]] [https://snapcraft.io/search?q=Citra]*[[Yuzu]] [https://snapcraft.io/yuzu]*[[Dolphin]] [https://snapcraft.io/dolphin-emulator]*[[RPCS3]] [https://snapcraft.io/rpcs3-emu]*[[PPSSPP]] [https://snapcraft.io/ppsspp-emu] ==AppImage==AppImage is a package format that allows software distribution without a superuser permission. Unlike the other two, AppImage does not have a system to find, download, install and uninstall the packages. Instead, it works like Microsoft Windows .exe files with no DLL requirements.The user must give the 'executable' permission to the AppImage package (chmod +x ./appname.AppImage) but this is the only requirement. Unfortunately, emulator adaption is quite poor compared to the other two systems. [[RPCS3]] and [[yuzu]] are the most notable emulators to officially adopt this format. List of AppImage packages can be found in [https://appimage.github.io/apps/ AppImageHub]. Emulators available in AppImage: * [[RPCS3]]* [[Yuzu]]* [https://github.com/probonopd/qemu-ppc QEMU PowerPC AppImage] (A PowerPC emulator)* [[RetroArch]] [http://buildbot.libretro.com/stable/1.9.10/linux/x86_64/]* [[PCSX2]] [https://github.com/ferion11/PCSX2_Appimage]* [[Dolphin]] [https://www.appimagehub.com/p/1567651]* [[MGBA]] [https://www.appimagehub.com/p/1567223]* [[Gambatte]] [https://www.appimagehub.com/p/1566704]* [[DuckStation]] [https://www.appimagehub.com/p/1460142]* [[Project64]] [https://www.appimagehub.com/p/1411238]* [[PPSSPP]] [https://www.appimagehub.com/p/1411234]* [[DeSmuME]] [https://www.appimagehub.com/p/1411229] =Emulators on Linux distribution===THE GNU/LINUX GUIDE OF EMULATION: Ubuntu edition==:<small>'''''Important!''' Like the title says, this guide covers Ubuntu and its derivatives. While you may have lesser or equal success with distributions that use APT (Ubuntu's packaging tool), where there could be relevant information in your case, this guide is not to be used for distributions that use Pacman or YUM. We can't guarantee that repositories here will work with Debian and Ubuntu-based Puppy (like Tahr), but we're not saying it's not possible. Give it a try, and it could work if you know what you're doing. However, distributions like Arch and Fedora use ''completely'' different packaging tools, and <u>thus are obviously guaranteed not to work.</u> Don't give up, though; you can find the same emulators for your distribution somewhere else, either in their official or user-curated repos or by compiling them from source.''</small> ===Info for new friends===Possibly the biggest difference between Windows and Ubuntu (and perhaps, GNU/Linux in general) is the way that programs are handled. On Windows, getting software requires the developer to package an installer (or a portable build for flash drives and the like) that you have to get from their website. They may also have to bundle dependencies (like the Visual C++ Runtime) or link you to their location if a license prevents that. If your software is closer to open-source, this is very different; either they have a repository that holds their own packages, someone has set one up for them, or they integrate their packages in the defaults (although this is very rare). These "repositories" can be thought of like app stores. You use a package manager (either graphically or terminally) to search for programs in the repositories, from which you can install, update and uninstall them. It's really cool. Your Linux distribution comes with repositories already configured so you can get a lot of the main programs immediately, but there are risks with the emulators in particular; repositories aren't focused on having every emulator, and in many cases when they do, they don't have newer versions. This isn't necessarily their fault though; especially with bigger distributions, repositories can be stuffed with ''loads'' of software that gets constant updates, so to get them tested and updated takes quite a bit of time. Rather than using the defaults, we'll add more repositories made by users or developers themselves that contain the latest versions of these emulators. Once these repositories are added, you will be able to install the emulators like with any other program and update them with the rest of your machine. While this can seem exciting, keep in mind that some emulators aren't available on repositories, and many good ones aren't on Linux at all, so you may need to use different methods to get them. But don't worry; this will be explained later. ===Adding new repositories===:<small>''Note: If you ever rely on a tutorial that says to type <code>apt-get</code>, you can use <code>apt</code> instead. There generally isn't a difference.''</small>:<small>''Another note: Pay attention to where <code>sudo</code> is used. That's the equivalent to running a Windows program as an administrator. If you're ever suspicious about any command you're told to type, you can type <code>man (command)</code> <sup>short for manual</sup> and it will tell you what that program does. E.g. <code>man apt</code> will tell you what apt does. To quit the documentation, just press q.''</small>====Terminal====To add a new repository from the terminal, just type in this command: sudo add-apt-repository ppa:user/ppa-name...where the <code>ppa:user/ppa-name</code> are the ones you'll find in the table for the repository you want to add. After you add all the repos you want, you'll run the next command to tell apt to refresh the list: sudo apt updateOnce that's done you will have all the packages from those repos available to install.====Graphical====To add a new repository from the GUI, install synaptic (or make sure it's installed) by typing in this command from the terminal: sudo apt install synaptic This program will be a lot of help. Once you have it installed you can choose to organize packages by source and see all the repos you already have available. Select Settings > Repositories, and from the new window, select Other Software > Add...  deb <nowiki>http://ppa.launchpad.net/</nowiki><u>ppa:user/ppa-name</u>/ubuntu <u>xenial</u> main Where instead of <u>xenial</u> for 16.04, you type <u>trusty</u> for 14.04, <u>bionic</u> for 18.04, <u>focal</u> for 20.04, <u>hirsute</u> for 21.04, and <u>impish</u> for 21.10. You can then see what emulators you have with each repos, and can now install the ones you want. ===Repositories list===The "Type" column categorizes repositories by update frequency. Software in the Testing branches usually get updates as often as possible (even daily), while software in the Stable branches are only as recent as the versions are, and usually get updates between a few months. There are also several Abandoned PPAs which can be used only on older Ubuntu releases. If the desired emulator isn't found here, you can find more repositories by searching around for "(emulator) launchpad ppa". Check that they have packages for your Ubuntu version (they usually go by the version's name), as some PPAs can be abandoned. {| class="wikitable mw-collapsible sortable" width="100%"! Emulator/Project! ppa:user/ppa-name! Type! Latest Emulator Version! Supported Ubuntu Versions! ARM<ref group=N>These repositories have packages compiled for ARM architectures, and could work with HP Hardfloat, odroid, Raspberry Pi 2, etc.</ref>|-|rowspan="2"|[[RetroArch]]<br/>(libretro)|[https://launchpad.net/~libretro/+archive/ubuntu/testing ppa:libretro/testing]|Testing|1.9.10|18.04,20.04,21.04,21.10<ref group=N name=version>Core availability may vary between Ubuntu versions.</ref>|{{✓}}|-|[https://launchpad.net/~libretro/+archive/ubuntu/stable ppa:libretro/stable]|Stable|1.9.10|18.04,20.04,21.04,21.10<ref group=N name=version />|{{✓}}|-|[[VisualBoy Advance#VBA-M|VBA-M]]|[https://launchpad.net/~sergio-br2/+archive/ubuntu/vbam-trunk ppa:sergio-br2/vbam-trunk]|Stable|2.0.1-r202107030448-c08bb6bd-22|16.04,18.04|{{✗}}|-|rowspan="2"|[[PCSX2]]|[https://launchpad.net/~gregory-hainaut/+archive/ubuntu/pcsx2.official.ppa ppa:gregory-hainaut/pcsx2.official.ppa]|Stable|1.4.0|14.04,15.04,15.10,16.04,16.10,17.04,18.04|{{✗}}|-|[https://launchpad.net/~pcsx2-team/+archive/ubuntu/pcsx2-daily ppa:pcsx2-team/pcsx2-daily]|Testing|1.7.0~git202109251832+202109252351|20.04,21.04,21.10|{{✗}}|-|rowspan="2"|[[MAME]]|[https://launchpad.net/~c.falco/+archive/ubuntu/mame ppa:c.falco/mame]|Stable|0.235|18.04,20.04,21.04|{{✓}}|-|[https://launchpad.net/~c.falco/+archive/ubuntu/alpha ppa:c.falco/alpha]<ref group=N>Some MAME builds may also appear in [https://launchpad.net/~c.falco/+archive/ubuntu/trashbin ppa:c.falco/trashbin].</ref>|Testing|0.235|21.10|{{✓}}|-|[[Dolphin]]|[https://launchpad.net/~dolphin-emu/+archive/ubuntu/ppa ppa:dolphin-emu/ppa]|Stable/Testing|5.0+git-r202109240858-753a1595bf-33|16.04,18.04|{{✓|text=arm64}}|-|[[PCSX-Reloaded]]|[https://launchpad.net/~rebuntu16/+archive/ubuntu/pcsx-reloaded-svn+unofficial ppa:rebuntu16/pcsx-reloaded-svn+unofficial]|Abandoned|1.9.94+git2017.02.28-16.13-1~ppa|16.04,16.10,17.04<ref group=N name=bionic>This package is in the official repository for Ubuntu 18.04 and newer.</ref>|{{✗}}|-|[[PPSSPP]]|[https://launchpad.net/~xuzhen666/+archive/ubuntu/ppsspp ppa:xuzhen666/ppsspp]|Stable|1.11-1|18.04,20.04,20.10,21.04|{{✓}}|-|[[ScummVM]]|[https://www.scummvm.org/downloads/ Official Site (.deb)]<ref group=N>ScummVM's website provides raw Debian packages (.deb) which can be installed with tools like gdebi.</ref>|Stable|2.2.0|18,04,19.10,20.04<ref group=N name=hirsute>This package is in the official repository for Ubuntu 21.04 and newer.</ref>|{{✗}}|-|[[higan]]|[https://launchpad.net/~hda-me/+archive/ubuntu/higan ppa:hda-me/higan]|Abandoned|106|16.04<ref group=N name=bionic />|{{✗}}|-|rowspan="2"|FS-UAE|[https://launchpad.net/~fengestad/+archive/ubuntu/stable ppa:fengestad/stable]|Stable|3.0.5|14.04,16.04,17.10,18.04,20.04,20.10<ref group=N name=hirsute />|{{✗}}|-|[https://launchpad.net/~fengestad/+archive/ubuntu/devel ppa:fengestad/devel]|Testing|3.1.0|14.04,16.04,17.10,18.04|{{✗}}|-|[[DeSmuME]]|rowspan="5"|[https://launchpad.net/~random-stuff/+archive/ubuntu/ppa ppa:random-stuff/ppa]|Abandoned|0.9.11+r1~4|12.04,14.04,15.04,15.10,16.04<ref group=N name=broken_desmume>Packages for 16.10 and newer are listed but broken.</ref><ref group=N name=bionic />|{{✓}}|-|[[Mupen64Plus]]|Abandoned|2.5-7+r630~7|14.04,15.04,15.10,16.04<ref group=N name=yakkety>This package is in the official repository for Ubuntu 16.10 and newer.</ref>|{{✓}}|-|PokeMini|Abandoned|0.60-r8~4|14.04,15.04,15.10,16.04,16.10,17.04,17.10|{{✓}}|-|[[Gambatte]]|Abandoned|0.5.0-r577-b575~5|12.04,14.04,15.04,15.10,16.04,16.10,17.04,17.10|{{✓}}|-|[[Snes9x]]|Stable|1.54.1-r201805250105-98d3d27-3|17.10,18.04<ref group=N name=broken_snes9x>Packages for 14.04 and 16.04 are listed but broken.</ref>|{{✓}}|-|[[BlastEm]]|rowspan="17"|[https://launchpad.net/~samoilov-lex/+archive/ubuntu/retrogames ppa:samoilov-lex/retrogames]<ref group=N name=warning_retrogames>This PPA contains unofficial builds of RetroArch, Dolphin, PPSSPP, PCSX2, FS-UAE and more, thus may cause conflict with other PPAs if you are on Ubuntu 18.04 or below. (This is less likely a problem on 20.04 or newer because other PPAs have abandoned support for newer Ubuntu versions.) After installing a desired emulator from this PPA, it is recommended to remove this PPA from the system's repository list by executing "sudo add-apt-repository --remove ppa:samoilov-lex/retrogames" in the command line.</ref>|Stable|0.6.0|16.04,18.04,20.04|{{✓}}|-|[[Citra]]|Testing|1:0.1~git20210618-1~retrogames|20.04|{{✗}}|-|[[Dolphin]]|Testing|5.0.14344-1~retrogames|20.04|{{✗}}|-|[[Hatari]]|Stable|2.2.1|16.04,18.04|{{✓}}|-|[[Mednafen]]|Stable|1.29.0|20.04|{{✓WIP}}|-|[[melonDS]]|Stable|0.9.2-2~retrogames|20.04|{{✓}}|-|[[mGBA]]|Stable|0.9.1-1~retrogames|20.04|{{✗}}|-|[[PCem]]|Stable|17|20.04|{{✗}}|-|[[PCSX2]]|Stable|1.6.0|20.04|{{✗}}|-|PCSX2 Unstable|Testing|1.7.1~git20210618.044034-1~retrogames|20.04|{{✗}}|-|[[reicast]]|Stable|1:20.04-2~retrogames|20.04|{{✗}}|-|[[Stella]]|Stable|5.1.1|16.04,18.04|{{✓}}|-|[[Snes9x]]|Stable|1:1.60-2~retrogames|20.04|{{✗}}|-|[[yuzu]]|Testing|1:0.0.0~git20200819-1~retrogames|20.04|{{✗}}|-|[[Vita3K]]|Stable|0.1.0~git20180527.1-3~retrogames|18.04|{{✗}}|-|[[puNES]]|Stable|0.106-1~retrogames|20.04|{{✗}}|-|[[Yabause]]|Stable|0.9.15-1~retrogames|18.04|{{✗}}|-|[[FCEUX]]<br/>[[ZSNES]]<br /><small>Other older emulators not listed</small>|Official Ubuntu repos|Varies<ref group=N>Only updated once per Ubuntu version.</ref>|Varies|Varies|{{~}}|}<references group=N /> ===Distro-independent packages on Ubuntu==={{main|Distro-agnostic emulator packages for Linux}} There are also distribution-independent emulator packages in [[Distro-agnostic_emulator_packages_for_Linux#Snappy|Snappy]], [[Distro-agnostic_emulator_packages_for_Linux#Flatpak|Flatpak]] or [[Distro-agnostic_emulator_packages_for_Linux#AppImage|AppImage]] formats which can be used instead of Ubuntu PPA. These packages are especially useful for users of Ubuntu 20.04 or newer because most PPAs are abandoned. Snappy packages are currently the default method of installing software in Ubuntu, encouraged by Canonical - developers of Ubuntu. Installing snaps is very simple, just open Ubuntu Software app and find your desired emulator from there, confirming installation with your user (or root user) password. No additional configuration is required to install snaps. ==THE GNU/LINUX GUIDE OF EMULATION: Fedora edition=====From repositories===Fedora has a very strict software policy, allowing only [[Licensing#Free_and_open-source_software|free software]] emulators, which don't rely on copyrighted BIOS files to work. There's quite a few emulators and even [[RetroArch]] with some open source cores, but you won't find any non-commercial or closed-source emulators in there. However, more of them are hosted at RPMFusion's repositories. To install RPMFusion's software repositories, use the following command as root: <nowiki>sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm</nowiki> The second RPM is where you get proper video drivers for older AMD cards. Install "akmod-catalyst" (current AMD cards use the official "AMDGPU" driver built into kernel, so everything should work OOTB). NVIDIA users should instead follow [https://rpmfusion.org/Howto/NVIDIA this guide]. The following emulators can be found from the RPMFusion repositories (note that not all packages are fully up-to-date):{| class="wikitable"|-! scope="col"|Console! scope="col"|Emulator|-|[[Nintendo Entertainment System emulators|NES]]|[[Nestopia]]|-|[[Super Nintendo emulators|SNES]]|[[higan|bsnes]], [[Snes9x]], [[ZSNES]]|-|[[Game Boy/Game Boy Color emulators|Game Boy/Color]]/[[Game Boy Advance emulators|Advance]]|[[VisualBoy Advance#VBA-M|VBA-M]]|-|[[Nintendo DS emulators|Nintendo DS]]|[[DeSmuME]]|-|[[GameCube emulators|GameCube]] and [[Wii emulators|Wii]]|[[Dolphin]]|}Can't find your emulator in RPMfusion? Want an up to date version git version instead of dolphin stable? First, check [https://copr.fedorainfracloud.org/ Fedora's COPR repositories]. For example, for Dolphin, https://copr.fedorainfracloud.org/coprs/victoroliveira/dolphin-emu-git/.Still can't find a precompiled version? We get to compile them ourselves! ===Compiling emulators===This could be considered a generic guide for all GNU/Linux distributions, but we will be using Fedora as our base for this tutorial. First, in order to successfully compile software, libraries are required. You can generally find a list of dependencies with the emulator's source, but often those are listed for Ubuntu. So instead, enjoy this blanket list of programs and libraries to install: # Compiler Stuff #dnf install clang clang-analyzer cmake ecj gcc-c++ scons # Assorted Libraries #dnf install libx86 nasm # Development Headers #dnf install alsa-lib-devel bluez-libs-devel cppunit-devel curl-devel enet-devel flac-devel freealut-devel glew-devel glib-devel glibc-devel.x86_64 glibc-devel.i686 glibmm24-devel gtest-devel gtkglextmm-devel gtk+-devel hidapi-devel jack-audio-connection-kit-devel jansson-devel kernel-devel libao-devel libevdev-devel libglademm24-devel libogg-devel libtheora-devel libudev-devel libusb-devel libuuid-devel libv4l-devel libvorbis-devel lilv-devel lua-devel lzo-devel mbedtls-devel miniupnpc-devel openal-soft-devel portaudio-devel pulseaudio-libs-devel python-qt5-devel qjson-devel qt-devel qt5-qtbase-devel qt5-qtx11extras-devel qtwebkit-devel ruby-devel SDL* SFML-devel SOIL-devel soundtouch-devel speex-devel speexdsp-devel tinyxml-develThe reference text for the above list can be found [http://www.flibitijibibo.com/fedora/Fedora.txt here.] If you want automated emulator compiling, a Mupen64Plus build/update/install package exists [http://www.flibitijibibo.com/fedora/flibitMupen64Plus.tar.gz here], just run the script for the function you require. It is highly recommended that you read the scripts/readmes before running these so you understand what is going on. As for compiling the emulators themselves, you're better off looking at the emulator's website/forum for specific tutorials. Emulator developers like to use a lot of different environments, from basic Makefiles to CMake to SCons to who knows what. The library list above and the automated scripts should help you get started if you're entirely unfamiliar with compiling, though. If you still want help, feel free to ask in Emulation General. ==Links==* [https://doc.ubuntu-fr.org/emulation French guide] on Ubuntu.org* [https://fedoraproject.org/ Fedora website] [[Category:FAQs]][[Category:Emulators by operating system]]
2,527
edits

Navigation menu