It did not take so long, but I was waiting for some stuff to happen and now I can write this post.
What have I loaded my HTPC with? Well, the correct question now is, what did I replace my HTPC with.
I've experimented with the concept of the HTPC for some time and found that, while it's the most powerful device for media and gaming, it's also the clumsiest. You'll need a keyboard and mouse sooner or later, and Windows simply isn't tailored to navigation with a controller. The app Controller Companion, available on Steam for a couple bucks, greatly alleviates this problem, but it's still no console, not Android box, nor Kodi box. And things tend to go wrong on Windows quite often.
Then I saw that the Raspberry Pi foundation launched the Raspberry Pi 3 and, realizing that it now had become powerful enough to do what I wanted from it, I simply couldn't pass the deal and dumped the HTPC entirely. The Pi is effectively a very small HTPC at much lower cost.
Thus, this post will be about what I have loaded my Pi with!!!
My RPi3 can presently run emulators (the RPi3 is probably powerful enough to run N64 games but I haven't tested), stream media from my Emby Windows server, and stream games from the server using Moonlight. It's really a do-it-all little piece of hardware, and its UIs are fully controllable with an Xbox One controller.
The list of things I did:
1) The OS:
You'll want the latest RetroPie image. RetroPie is basically a Raspbian distro packaged with emulation-specific software, mainly RetroArch (which comes with the libretro cores) and EmulationStation (an emulation frontend). It can also run (and boot into) Kodi. Easy Kodi support was what drew me into RetroPie, though Recalbox and Lakka are viable alternatives if you want to emulate.
I've tried OSMC, OpenELEC and LibreELEC, but all three lack controller support for the Kodi UI. It was also a pain to configure my controllers in OSMC and, when xboxdrv decided to work, the D-Pad axis and some buttons were reversed. OSMC does have a Kodi plugin called Luna, though, which you can stream games with, but it's not as reliable as I'd want it to.
2) Kodi support:
The Kodi support in RetroPie is currently experimental, but when enabled via the RetroPie Setup script, it's added to the "Ports" submenu in EmulationStation and runs quite reliably. Anyone used to smooth navigation on Windows like me will miss the speed, as the Pi has some hiccups, especially when loading many images at once. The skin I use is Amber, which is very lightweight and looks pretty. It looks a bit similar to Aeon Nox, except the fonts are a lot easier on the eye. There are also color mods for it, if you don't like the standard Amber.
Don't expect to run heavy skins like Aeon MQ or Titan on a Pi (even the RPi3).
To stream my media library I use the Emby for Kodi addon, as I have set up an Emby server in my Windows 10 gaming machine. After configuring my shares I was able to get a clean experience. The OpenSubtitles.org plugin downloads missing subtitles in my language and points which of them are synced with my video file, a huge plus.
3) The Xbox One controller:
I control everything in RetroPie via my Xbox One controller, but its correct setup was not easy. The xpad driver for Linux does currently support Xbox One controllers, but, for some reason, it didn't work out of the box in my RetroPie.
The solution is in this link, by users afreeorange and ksj01. Basically, you'll have to download the latest version of the xpad driver, but there are some hurdles to overcome. xboxdrv recognizes the controller but doesn't seem to recognize any inputs. xpad will, however, work.
The ace in my configuration is definitely Moonlight. It was also the most difficult to configure because Moonlight is not native to RetroPie, which is bundled with the older Limelight streaming app. User Haris1977 posted a tutorial on Github on how to install moonlight-embedded on RetroPie and have it properly configured. I went ahead and, instead of making just one script to launch Moonlight, I made several, to acknowledge the most commonly used streaming options.
What moonlight-embedded will do is launch Steam Big Picture Mode in your server and stream the server's screen to the Pi's screen, so, although I didn't test it, it should be technically possible to stream all games you have on Steam to the Pi, even those that are not in the Nvidia GameStream's list on your server. This could open up many possibilities since you can possibly use Ice to add heavy emulators like Dolphin and PCSX2 to Steam on the server and stream the emulated games to the Pi. This way, the Pi has access to every system, although not in the main EmulationStation menu.
Moonlight only works if the host has an Nvidia GPU.
5) Some Linux knowledge:
It's been almost a week since I've been tinkering with the distros that I've tried and I could not recommend this enough: don't break Debian! It applies to every distro, really, but since Raspbian is the most popular distro on the Pi, it's especially relevant in this case. The "FrankenDebian" topic is of particular interest. It means you're adding things to Debian that are specific to other distros and will not necessarily run on Debian and could break your Debian-based system. One such example are PPAs, which are packages compiled and distributed for Ubuntu and may or may not run on Debian with the necessary packages, and could break Debian.
Resisting the temptation is difficult because Debian is built around the idea of supplying only absolutely stable packages, which for that reason could be outdated, but Linux's level of user control is both its blessing and its curse. Add enough crap to your system without knowing what you're doing and you could end up with a mess that only a complete reinstall will fix.
To interact with RetroPie's underpinnings, you can either quit EmulationStation (but not shutdown or reboot) or SSH into it. The easiest way to use SSH on Windows is via the Putty software. It can be fun to tinker with it, but for the average user there's not much that needs to be done via CLI that couldn't be done via the RetroPie Setup script, as the script, when started from the EmulationStation menu, is controller-friendly despite looking like an old DOS interface.