Difference between revisions of "Emulation on Ubuntu"

From Emulation General Wiki
Jump to navigation Jump to search
(Repositories List: Version Updates. Added Gens, notable for one of two emulators (the other is higan) that are still maintained on PlayDeb.)
(Repositories List: Replaced PPSSPP PPA; deleted Supermodel; 16.04 has EOLed so any PPAs don't support 18.04+ are now marked as Abandoned.)
(46 intermediate revisions by 31 users not shown)
Line 1: Line 1:
==THE GNU/LINUX GUIDE OF EMULATION: *buntu Edition==
+
==THE GNU/LINUX GUIDE OF EMULATION: Ubuntu Edition==
 +
__NOTOC__
 +
:<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 newfriends===
 
===Info for newfriends===
A big difference between Windows and GNU/Linux is that when you want to install a program on Linux you don't have to go to the site, download an installer and install it (except in some specific cases).
+
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).
  
There's something called repositories, which are like "app stores". You use a package manager to search for programs in the repositories, install them, update them and uninstall them.
+
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 their official repositories already configured so you can get programs for there, but they don't always have every good emulator, and most of the time if they have it it's an old version. So what we are going to do is add more repositories that have up-to-date 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 programs.
+
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.
  
All this is cool, but there will be some emulators that you won't find on repositories, so you'll have to use different methods to get them, but don't worry, I'll explain it later.
+
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.
===IMPORTANT!===
 
This guide is focused on *buntu distros like Ubuntu, Xubuntu, Kubuntu, Lubuntu, and other Ubuntu derivatives such as Linux Mint. Repositories shown here WILL NOT work on other distros (Debian, Arch, Fedora etc), but you can find the same emulators for your distro somewhere else, either in their own repos (either official or unofficial) or by compiling them.
 
  
===How to add the repositories===
+
===Adding new repositories===
To add this repos you will have to run the next command on a terminal:
+
:<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
 
  sudo add-apt-repository ppa:user/ppa-name
...where the ppa:user/ppa-name 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 have to run the next command to update the packages database:
+
...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-get update
+
  sudo apt update
 
Once that's done you will have all the packages from those repos available to install.
 
Once that's done you will have all the packages from those repos available to install.
===How to install, update and uninstall emulators after the repos are added===
+
====Graphical====
For this task I recommend you to install Synaptic. That 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 have available. See what emulators each of the repos you added has and install the emulators you want.
+
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===
 
===Repositories List===
The "Type" column describes how often the emulators are updated on these repositories. Testing repositories usually get updates quite often (some have daily updates) while Stable repositories usually get updates after a few months gap<!--, and Abandoned repositories are, well, abandoned-->.
+
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"
+
{| class="wikitable mw-collapsible sortable" width="100%"
 
|-
 
|-
! scope="col"|Emulators it has
+
! Emulator/Project
! scope="col"|ppa:user/ppa-name
+
! ppa:user/ppa-name
! scope="col"|Type
+
! Type
! scope="col"|Latest Emulator Version
+
! Latest Emulator Version
! scope="col"|Supported Ubuntu Versions
+
! Supported Ubuntu Versions
! scope="col"|ARM(<nowiki>*1</nowiki>)
+
! 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]]
+
|rowspan="2"|[[RetroArch]]<br/>(libretro)
 
|[https://launchpad.net/~libretro/+archive/ubuntu/testing ppa:libretro/testing]
 
|[https://launchpad.net/~libretro/+archive/ubuntu/testing ppa:libretro/testing]
 
|Testing
 
|Testing
|1.6.0
+
|1.9.10
|14.04,16.04,16.10,17.04<nowiki>(*2)</nowiki>
+
|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]
 
|[https://launchpad.net/~libretro/+archive/ubuntu/stable ppa:libretro/stable]
 
|Stable
 
|Stable
|1.6.0
+
|1.9.10
|14.04,16.04,16.10,17.04<nowiki>(*2)</nowiki>
+
|18.04,20.04,21.04,21.10<ref group=N name=version />
|✓
+
|{{}}
 
|-
 
|-
|[[VBA-M]]
+
|[[VisualBoy Advance#VBA-M|VBA-M]]
 
|[https://launchpad.net/~sergio-br2/+archive/ubuntu/vbam-trunk ppa:sergio-br2/vbam-trunk]
 
|[https://launchpad.net/~sergio-br2/+archive/ubuntu/vbam-trunk ppa:sergio-br2/vbam-trunk]
 
|Stable
 
|Stable
|2.0.0
+
|2.0.1-r202107030448-c08bb6bd-22
|14.04,16.04,16.10
+
|16.04,18.04
|✗
+
|{{}}
 
|-
 
|-
 
|rowspan="2"|[[PCSX2]]
 
|rowspan="2"|[[PCSX2]]
Line 55: Line 72:
 
|Stable
 
|Stable
 
|1.4.0
 
|1.4.0
|14.04,15.04,15.10,16.04,16.10,17.04
+
|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]
 
|[https://launchpad.net/~pcsx2-team/+archive/ubuntu/pcsx2-daily ppa:pcsx2-team/pcsx2-daily]
 
|Testing
 
|Testing
|1.5.0
+
|1.7.0~git202109251832+202109252351
|14.04,15.04,16.04,16.10,17.04,17.10
+
|20.04,21.04,21.10
|✗
+
|{{}}
 
|-
 
|-
 
|rowspan="2"|[[MAME]]
 
|rowspan="2"|[[MAME]]
 
|[https://launchpad.net/~c.falco/+archive/ubuntu/mame ppa:c.falco/mame]
 
|[https://launchpad.net/~c.falco/+archive/ubuntu/mame ppa:c.falco/mame]
 
|Stable
 
|Stable
|0.186
+
|0.235
|16.04,17.04
+
|18.04,20.04,21.04
|
+
|{{✓}}
 
|-
 
|-
|[https://launchpad.net/~c.falco/+archive/ubuntu/alpha ppa:c.falco/alpha]<nowiki>(*4)</nowiki>
+
|[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
 
|Testing
|0.186
+
|0.235
|16.04,16.10,17.04
+
|21.10
|
+
|{{✓}}
 
|-
 
|-
 
|[[Dolphin]]
 
|[[Dolphin]]
 
|[https://launchpad.net/~dolphin-emu/+archive/ubuntu/ppa ppa:dolphin-emu/ppa]
 
|[https://launchpad.net/~dolphin-emu/+archive/ubuntu/ppa ppa:dolphin-emu/ppa]
 
|Stable/Testing
 
|Stable/Testing
|5.0+git-r201706300204-ade319f-32
+
|5.0+git-r202109240858-753a1595bf-33
|16.04,16.10,17.04
+
|16.04,18.04
|✓(arm64)
+
|{{|text=arm64}}
 
|-
 
|-
 
|[[PCSX-Reloaded]]
 
|[[PCSX-Reloaded]]
 
|[https://launchpad.net/~rebuntu16/+archive/ubuntu/pcsx-reloaded-svn+unofficial ppa:rebuntu16/pcsx-reloaded-svn+unofficial]
 
|[https://launchpad.net/~rebuntu16/+archive/ubuntu/pcsx-reloaded-svn+unofficial ppa:rebuntu16/pcsx-reloaded-svn+unofficial]
|Stable/Testing
+
|Abandoned
 
|1.9.94+git2017.02.28-16.13-1~ppa
 
|1.9.94+git2017.02.28-16.13-1~ppa
|16.04,16.10,17.04
+
|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>
|✗
+
|{{✗}}
|-
 
|rowspan="2"|[[PPSSPP]]
 
|[https://launchpad.net/~ppsspp/+archive/ubuntu/testing ppa:ppsspp/testing]
 
|Testing
 
|1.4.1-r201706281354-3f8ccf4-72
 
|14.04,16.04,16.10,17.04
 
|
 
 
|-
 
|-
|[https://launchpad.net/~ppsspp/+archive/ubuntu/stable ppa:ppsspp/stable]
+
|[[PPSSPP]]
 +
|[https://launchpad.net/~xuzhen666/+archive/ubuntu/ppsspp ppa:xuzhen666/ppsspp]
 
|Stable
 
|Stable
|1.4.1-r201705240041-e776eff-72
+
|1.11-1
|14.04,16.04,16.10,17.04
+
|18.04,20.04,20.10,21.04
|✓
+
|{{}}
 
|-
 
|-
 
|[[ScummVM]]
 
|[[ScummVM]]
|[https://www.scummvm.org/downloads/ Official Site (.deb)](*5)
+
|[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
 
|Stable
|1.9.0
+
|2.2.0
|16,04,16.10<nowiki>(*6)</nowiki>
+
|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]]
 
|[[higan]]
|[http://www.playdeb.net/game/higan PlayDeb](*7)
+
|[https://launchpad.net/~hda-me/+archive/ubuntu/higan ppa:hda-me/higan]
|Stable
+
|Abandoned
|103
+
|106
|16.04,17.04
+
|16.04<ref group=N name=bionic />
|✗
+
|{{}}
 
|-
 
|-
|[[Gens]]
+
|rowspan="2"|FS-UAE
|[http://www.playdeb.net/game/Gens PlayDeb](*7)
+
|[https://launchpad.net/~fengestad/+archive/ubuntu/stable ppa:fengestad/stable]
 
|Stable
 
|Stable
|2.15.5
+
|3.0.5
|Any (12.04-17.04)
+
|14.04,16.04,17.10,18.04,20.04,20.10<ref group=N name=hirsute />
|✗
+
|{{}}
 
|-
 
|-
|[[Reicast]]
+
|[https://launchpad.net/~fengestad/+archive/ubuntu/devel ppa:fengestad/devel]
|[https://launchpad.net/~dmcoles/+archive/ubuntu/ppa ppa:dmcoles/ppa]
+
|Testing
|Stable
+
|3.1.0
|7~rc+b478~22
+
|14.04,16.04,17.10,18.04
|16.04,16.10,17.04
+
|{{}}
|✗
 
 
|-
 
|-
 
|[[DeSmuME]]
 
|[[DeSmuME]]
|rowspan="7"|[https://launchpad.net/~random-stuff/+archive/ubuntu/ppa ppa:random-stuff/ppa]
+
|rowspan="5"|[https://launchpad.net/~random-stuff/+archive/ubuntu/ppa ppa:random-stuff/ppa]
|Stable
+
|Abandoned
 
|0.9.11+r1~4
 
|0.9.11+r1~4
|12.04,14.04,15.04,15.10,16.04,16.10(*8)
+
|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]]
 
|[[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
 
|Testing
|2.5-7+r630~7
+
|1:0.1~git20210618-1~retrogames
|14.04,15.04,15.10,16.04(*9)
+
|20.04
|
+
|{{✗}}
 +
|-
 +
|[[Dolphin]]
 +
|Testing
 +
|5.0.14344-1~retrogames
 +
|20.04
 +
|{{✗}}
 
|-
 
|-
|[[PokeMini]]
+
|[[Hatari]]
 
|Stable
 
|Stable
|0.60
+
|2.2.1
|14.04,15.04,15.10,16.04,16.10,17.04
+
|16.04,18.04
|✓
+
|{{}}
 
|-
 
|-
|[[Gambatte]]
+
|[[Mednafen]]
 
|Stable
 
|Stable
|0.5.0 r577 (git)
+
|1.27.1
|12.04,14.04,15.04,15.10,16.04,16.10,17.04
+
|20.04
|✓
+
|{{}}
 
|-
 
|-
|[[Supermodel]]
+
|[[melonDS]]
 
|Stable
 
|Stable
|0.3a~WIP+r613~22
+
|0.9.2-2~retrogames
|14.04,16.04,16.10,17.04
+
|20.04
|✓
+
|{{}}
 
|-
 
|-
 
|[[mGBA]]
 
|[[mGBA]]
 +
|Stable
 +
|0.9.1-1~retrogames
 +
|20.04
 +
|{{✗}}
 +
|-
 +
|[[PCem]]
 +
|Stable
 +
|17
 +
|20.04
 +
|{{✗}}
 +
|-
 +
|[[PCSX2]]
 +
|Stable
 +
|1.6.0
 +
|20.04
 +
|{{✗}}
 +
|-
 +
|PCSX2 Unstable
 
|Testing
 
|Testing
|0.6 (git)
+
|1.7.1~git20210618.044034-1~retrogames
|14.04,16.04,16.10,17.04
+
|20.04
|✓
+
|{{✗}}
 +
|-
 +
|[[reicast]]
 +
|Stable
 +
|1:20.04-2~retrogames
 +
|20.04
 +
|{{✗}}
 +
|-
 +
|[[Stella]]
 +
|Stable
 +
|5.1.1
 +
|16.04,18.04
 +
|{{}}
 
|-
 
|-
 
|[[Snes9x]]
 
|[[Snes9x]]
 
|Stable
 
|Stable
|1.54.1-r201706280332-fe60472
+
|1:1.60-2~retrogames
|14.04,16.04,16.10,17.04
+
|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
 +
|{{✗}}
 
|-
 
|-
|[[Mednafen]], [[FCEUX]], [[ZSNES]],<br />old versions of other emulators
+
|[[FCEUX]]<br/>[[ZSNES]]<br /><small>Other older emulators not listed</small>
 
|Official Ubuntu repos
 
|Official Ubuntu repos
|(<nowiki>*3</nowiki>)
+
|Varies<ref group=N>Only updated once per Ubuntu version.</ref>
|Varies
 
 
|Varies
 
|Varies
 
|Varies
 
|Varies
 +
|{{~}}
 
|}
 
|}
 +
<references group=N />
  
<nowiki>*1</nowiki>:Repository with ARM support might work with HP Hardfloat, odroid, Raspberry Pi 2, etc.
+
===Distro-independent Packages on Ubuntu===
 +
{{main|Distro-agnostic emulator packages for Linux}}
  
<nowiki>*2</nowiki>:Core availability may vary between Ubuntu versions.
+
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.
  
<nowiki>*3</nowiki>:Only updated once per Ubuntu version.
+
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.
  
<nowiki>*4</nowiki>:Some MAME builds may also appear in [https://launchpad.net/~c.falco/+archive/ubuntu/trashbin ppa:c.falco/trashbin].
 
  
<nowiki>*5</nowiki>:ScummVM Official Site provides the raw Debian packages (.deb) which can be installed by using tools such as ''gdebi''.
+
== Links ==
 +
* [https://doc.ubuntu-fr.org/emulation French Guide] on Ubuntu.org
  
<nowiki>*6</nowiki>:Ubuntu 17.04 has ScummVM 1.9.0 in the official Ubuntu repository.
 
 
<nowiki>*7</nowiki>:PlayDeb is not a PPA and must use different commands to add their repository. See the [http://www.playdeb.net/updates#how_to_install how to install] section for more information.
 
 
<nowiki>*8</nowiki>:Ubuntu 17.04 has DeSmuME 0.9.11 in the official Ubuntu repository.
 
 
<nowiki>*9</nowiki>:Ubuntu 16.10 and newer have Mupen64Plus 2.5 in the official Ubuntu repository.
 
 
You can find more repositories by searching "emulatoryouwant launchpad ppa" without the quotes. Check that they have packages for your Ubuntu version (usually by its name, e.g. Trusty is 14.04, Xenial is 16.04, Yakkety is 16.10, Zesty is 17.04), as some PPAs can be abandoned.
 
 
[[Category:FAQs]]
 
[[Category:FAQs]]
 
== Links ==
 
* [https://doc.ubuntu-fr.org/emulation French Guide] on Ubuntu.org
 

Revision as of 07:01, 3 October 2021

THE GNU/LINUX GUIDE OF EMULATION: Ubuntu Edition

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 thus are obviously guaranteed not to work. 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.

Info for newfriends

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

Note: If you ever rely on a tutorial that says to type apt-get, you can use apt instead. There generally isn't a difference.
Another note: Pay attention to where sudo 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 man (command) short for manual and it will tell you what that program does. E.g. man apt will tell you what apt does. To quit the documentation, just press q.

Terminal

To add a new repository from the terminal, just type in this command:

sudo add-apt-repository ppa:user/ppa-name

...where the ppa:user/ppa-name 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 update

Once 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 http://ppa.launchpad.net/ppa:user/ppa-name/ubuntu xenial main

Where instead of xenial for 16.04, you type trusty for 14.04, bionic for 18.04, focal for 20.04, hirsute for 21.04, and impish 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.

Emulator/Project ppa:user/ppa-name Type Latest Emulator Version Supported Ubuntu Versions ARM[N 1]
RetroArch
(libretro)
ppa:libretro/testing Testing 1.9.10 18.04,20.04,21.04,21.10[N 2]
ppa:libretro/stable Stable 1.9.10 18.04,20.04,21.04,21.10[N 2]
VBA-M ppa:sergio-br2/vbam-trunk Stable 2.0.1-r202107030448-c08bb6bd-22 16.04,18.04
PCSX2 ppa:gregory-hainaut/pcsx2.official.ppa Stable 1.4.0 14.04,15.04,15.10,16.04,16.10,17.04,18.04
ppa:pcsx2-team/pcsx2-daily Testing 1.7.0~git202109251832+202109252351 20.04,21.04,21.10
MAME ppa:c.falco/mame Stable 0.235 18.04,20.04,21.04
ppa:c.falco/alpha[N 3] Testing 0.235 21.10
Dolphin ppa:dolphin-emu/ppa Stable/Testing 5.0+git-r202109240858-753a1595bf-33 16.04,18.04 arm64
PCSX-Reloaded ppa:rebuntu16/pcsx-reloaded-svn+unofficial Abandoned 1.9.94+git2017.02.28-16.13-1~ppa 16.04,16.10,17.04[N 4]
PPSSPP ppa:xuzhen666/ppsspp Stable 1.11-1 18.04,20.04,20.10,21.04
ScummVM Official Site (.deb)[N 5] Stable 2.2.0 18,04,19.10,20.04[N 6]
higan ppa:hda-me/higan Abandoned 106 16.04[N 4]
FS-UAE ppa:fengestad/stable Stable 3.0.5 14.04,16.04,17.10,18.04,20.04,20.10[N 6]
ppa:fengestad/devel Testing 3.1.0 14.04,16.04,17.10,18.04
DeSmuME ppa:random-stuff/ppa Abandoned 0.9.11+r1~4 12.04,14.04,15.04,15.10,16.04[N 7][N 4]
Mupen64Plus Abandoned 2.5-7+r630~7 14.04,15.04,15.10,16.04[N 8]
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[N 9]
BlastEm ppa:samoilov-lex/retrogames[N 10] 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.27.1 20.04
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
ZSNES
Other older emulators not listed
Official Ubuntu repos Varies[N 11] Varies Varies ~
  1. These repositories have packages compiled for ARM architectures, and could work with HP Hardfloat, odroid, Raspberry Pi 2, etc.
  2. 2.0 2.1 Core availability may vary between Ubuntu versions.
  3. Some MAME builds may also appear in ppa:c.falco/trashbin.
  4. 4.0 4.1 4.2 This package is in the official repository for Ubuntu 18.04 and newer.
  5. ScummVM's website provides raw Debian packages (.deb) which can be installed with tools like gdebi.
  6. 6.0 6.1 This package is in the official repository for Ubuntu 21.04 and newer.
  7. Packages for 16.10 and newer are listed but broken.
  8. This package is in the official repository for Ubuntu 16.10 and newer.
  9. Packages for 14.04 and 16.04 are listed but broken.
  10. 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.
  11. Only updated once per Ubuntu version.

Distro-independent Packages on Ubuntu

Main article: Distro-agnostic emulator packages for Linux

There are also distribution-independent emulator packages in Snappy, Flatpak or 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.


Links