Sunday, July 31, 2016

What I have loaded my HTPC with, part 2

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 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.

4) Moonlight:

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.

Friday, July 1, 2016

What I have loaded my HTPC with, part 1

In the meantime between the last post back in March and today, I've been experimenting with different HTPC setups and I can say I've come up with a solution that serves me well, at least until I'm bitten by the modification bug once again.

Let me start with the fact that I use my HTPC primarily for gaming, with all the bonuses and complications that arise from it. Windows 10 is my primary OS.

So, why don't you have an Xbox One instead?, someone would ask. For a few reasons:

1) The Xbox One cannot, and probably will never be a streaming client to a gaming desktop. Microsoft needs to justify people investing in an Xbox instead of an HTPC. The reverse is possible, but I'm not interested in the reverse, especially when Microsoft is attempting to port its major Xbox One releases to the new UWP app standard introduced with Windows 10.

2) The PC has three major advantages over console: modding, graphic quality and backwards compatibility. On an OS as new as Windows 10, I can play even games from the DOS era without many issues. I also have the benefit of easy modification of the files to suit my needs as well as a level of graphic quality not possible in a console. Meanwhile, the three major console manufacturers are opening themselves to backwards compatibility, but at a price... A steep one, if I may. For example, the remaster of the Batman Arkham games planned to current gen consoles, "Return to Arkham", which will cost $49.99,
simply does not look as good as the max graphics on PC. These are games that can be had for cheap nowadays on Steam, but you cannot play them in either the Xbox One or the PS4 except for paying extra for a remaster that still doesn't look as great as the more accessible PC version. You can play Arkham Asylum on PC with an Xbox One (or even Xbox 360) controller as well as pretty acceptable WASD setup on keyboard.

3) Consequently, as I choose to game on the PC platform and my HTPC is not suited to high end gaming, I must use a streaming solution to have my games available in my living room at greater quality. Steam In-Home Streaming offers me just that, and, through a wired network connection, the latency is minimal. There are a few drawbacks to this approach, namely the dodgy compatibility with Nvidia's Dynamic Super Resolution feature, but I can easily play my FPS and RTS games on my desktop and move to the living room when I want to play fighting or third person sandbox games.

4) The Xbox One does not have a Kodi client available. At the moment, I believe Kodi to be a superior media center to its competitors, which are in no way badly written software, but Kodi does offer a level of customization that hasn't yet been attained by Emby Theater, for example. Perhaps this will change one day, but for now I find Kodi the superior alternative.

5) An HTPC setup allows me to emulate many different retro consoles, something not yet possible in current gen consoles such as the PS4.

In the next post I will show the software I use and give directions on possible setup alternatives. Stay tuned, and hopefully it won't take four months to return. :)

Tuesday, March 29, 2016

Games For Windows Live games on Windows 10 (Steam)

This is a very simple thing that's often overlooked and I didn't realize until I actually tried to fix it.

With Windows 10 release, GFWL was shut down, and, at least theoretically, all the games that previously used it became incompatible with 10. Note the theoretically here.

There's an easy fix in the case of Grand Theft Auto IV and its DLC Episodes From Liberty City: download the xliveless DLL file and unzip it to your main game's folder. But this doesn't work for all games, so I sought a different solution.

This is applicable to Steam only, but may work with physical copies as well. When you try to install a game on Windows 10 such as Fallout 3 GOTY and run it for the first time, Steam will install all the dependencies the game needs to run. In these games' case, GFWL is one of those dependencies. However, Steam will NOT automatically install GFWL on your PC. Instead, Windows 10 will block the install and show a notification that "this software is not compatible with Windows 10" or something like that.

When this happens:

1) Either click on this notification, or click on the notifications icon in the taskbar, then search for the notification telling you that the game is not compatible with Windows 10 and click on it.

2) An installer executable for GFWL will be downloaded to your PC. Run it, but do NOT make an account on GFWL, since the service doesn't exist anymore. An account is not needed.

3) After the install, try to run the game. It should run without the need for external fixes now.

Online functionality may be hampered, but it's up to Rockstar and Bethesda to update their games on Steam to not require GFWL anymore. This, however, allows you to log onto Rockstar Social Club via the GTAIV (and EFLC) launcher, something I wasn't able to do without GFWL installed on my PC.

Saturday, February 27, 2016

Easy importing of other browsers' favorites into Edge

Microsoft made a big deal about Edge, IE's replacement, upon Windows 10's release, but the fact is, 7 months later, Edge still lacks basic features you'd expect to be standard.

One of these is importing favorites from browsers other than IE. Edge simply cannot do that ATM.

Nevertheless, since Microsoft kept IE11 in Windows 10 for the sake of compatibility, this created a loophole you can use to import favorites from other browsers to Edge, albeit not directly.

If your browser supports exporting favorites as an HTML page, use that functionality. Then import the resulting file to IE11. Finally, open Edge and import your favorites from IE11 to Edge. Presto.

Tuesday, February 16, 2016

Kodi finally starts actively fighting against piracy

So, this happened.

For those who don't know what Kodi is, it's the old XBMC, which is an open source media center for various platforms. Originally running on jailbroken Xbox, they expanded to a wide range of platforms.

The fact Team Kodi is finally going to crack down on people selling "Kodi boxes" preloaded with illegal addons is good news, indeed. It adds more legitimacy to the whole project.

What I didn't expect to see was that, in the comments to that blog post, there are people openly supporting piracy! And implying that Kodi has massively benefitted from it and Team Kodi are hypocrites.

Get real, lads. There are many, many ways to use Kodi legally. If you have the money to spare and put in a little effort you can have a huge collection of media stashed in a NAS, plus a legal emulation source from the Internet Archive via the Internet Archive ROM Launcher, and on top of that you can integrate your loaned cable box from your cable provider into it with the appropriate backend and plugin. All legal.

Of course, you can't get an official Netflix plugin, because the MPAA are allergic to open source, but there are many ways to control Netflix on Windows with a very good setup, some of which integrated into Kodi itself. And there are also many legal plugins to different content providers.

No, Kodi doesn't require Genesis to be great. And Team Kodi's move against piracy is a great one.

Friday, February 12, 2016

Install Steam games to a different folder WITHOUT setting up another install location on your Steam account (Windows)

This is a small idea I had when using Steam In-Home Streaming which came from some previous experience with using different folders to store mods.

So, with IHS, one of the features Valve offers is to install games remotely. You click on "Install" on your laptop's screen and choose another machine to install your games in.

However, there's a catch: for some reason, Valve doesn't allow you to choose where in the host machine you'll install your games to, so Steam automatically installs them to "C:\Program Files (x86)\Steam\steamapps\". This is obviously frustrating.

You need not worry, though, for there's a quick solution for that. Make a junction!

A junction in Windows is one of three ways in which folders and even files can be related to each other. When you join one folder with another, the latter is the one that will hold all the data, while the former remains as a path. Both still exist independently, but the first forwards all the content to the latter, so that if you store a file in the former, it gets sent to the latter instead.

To create a junction, you can follow some easy steps:

1) Open the Windows' command prompt with administrator privileges.
2) Type mklink. It'll give you a list of parameters you can use with the command. mklink is the Windows command for symbolic links, which a junction is a type of.


/D - Creates a symbolic link. This can also work, but we won't use it due to something I'll explain later.
/H - Creates a true link.
/J - Creates a junction.


1) Navigate to your Steam client folder (if it's in "Program Files (x86)" you'll need administrative privileges to modify its content!).
2) Open the "steamapps" folder and copy all content inside it.
3) Create a folder where you want to store your Steam games, then paste all the content from "steamapps" you copied in the previous step. This new folder MUST exist before you create the junction!
4) Go back to the Steam folder and delete (yes, delete!) your steamapps folder.
5) Open the command prompt again (with administrative privileges if necessary). Now type the following:

mklink /J [path to Steam folder]\Steam\steamapps\ [new folder you created with the content from "steamapps" inside]

For example, if your Steam folder is in C:\Program Files (x86)\ and the folder you want to store your games in is D:\Steam\, the command will be:

mklink /J C:\Program Files (x86)\Steam\steamapps\ D:\Steam\

And done.

Now the junction with the path of C:\Program Files (x86)\Steam\steamapps\ will be treated as the regular "steamapps folder", but whenever you add content to it, it gets sent to D:\Steam\ instead. Since remote installation only allows you to install to the standard steamapps folder, this is a way to circumvent this limitation and allow you to remote install to a different folder in the host.

Please note that moving/renaming/deleting the junction does NOT alter the location it links to in any way. Your games will still be stored in the new folder the junction links to.

But... Why junction instead of symbolic link?

The reason is that, when you create a junction and access the joined folder (D:\Steam\ in our example) from a remote computer, it gets treated as a folder inside the host computer. On the other hand, if you had created a symbolic link, the folder would be treated as belonging to the remote computer itself.

Monday, February 8, 2016

Steam client browser vulnerabilities

Martin Brinkmann of GHacks did a great piece on the vulnerabilities of Steam's built-in browser.  I wasn't really aware of that.

I guess it's simply better to purchase games via the Steam website instead, with a safer browser such as Firefox or the official Chrome/Chromium builds. This also allows you more flexibility with the use of password managers such as KeePass and LastPass.

Tuesday, February 2, 2016

Warner's mishaps on PC, Netherrealm Edition

It's a bit ludicrous that, after Warner released botched PC ports of Batman: Arkham Knight and Mortal Kombat X, and going as far as removing Arkham Knight from stores while it was being patched and issuing an apology to the community, the (current) makers of Mortal Kombat, Netherrealm Studios, who are under the Warner Bros. umbrella nowadays, decided to pull further PC support from Mortal Kombat X.

Like they say... Fool me once, shame on you, fool me twice, shame on me. What incentive is there for PC gamers to buy any Warner Bros. published game anymore? I've got a legit version of MKX, what's there in store for us PC gaming customers when we know we're going to be treated as the bastard child of the gaming community despite being the bulk of it?

It's particularly infuriating because, back in the old days, Midway (the original creators of MK) made a point to be on every platform possible, and yes, this included the IBM PC. One of the four home ports of Mortal Kombat Trilogy was the PC, which was arguably the best one. Mr. Ed Boon seems to be in need of an urgent reality check and stop neglecting a share of the people who helped him become one of the greats of the gaming industry.

As for Warner, this is another PR disaster, a lesser one but dangerous nonetheless.

Monday, February 1, 2016

On amateur online content and copyrights (the Fine Brothers case)

This is something that I've been reflecting upon for a while and now we've had another instance of controversial monetization and attempt at IP registration, so I believe this post is appropriate.

Long story short: a group of YouTubers called "Fine Brothers" who specialized in "reaction videos" (videos in which you film yourself reacting to things you're reading/watching/playing/whatever) attempted to register the "reaction video" format under the "React" brand with the goal of franchising the brand to others. People got angry and there was a huge backlash against the Fine Brothers.

Dealing with money in this world is very dangerous. If you have something for free, whenever someone starts charging for it the relationship between content/service provider and customer/viewer simply isn't the same anymore. If you do it the wrong way you run a very high risk of being seen as a sellout, like the Fine Brothers here. A possible analogy would be to paid mods. Recently in the sim racing community there have been attempts of selling mods and this has sparked great controversy.

Generally speaking, the customer will be more welcoming of paying money when the payment is labeled as a donation and it's not enforced. The donor is effectively a benefactor, s/he does it because s/he wants to. Whenever these content providers go payware, the public's view on them changes almost overnight. Few are supportive, most aren't. We seem to have a sense of community online that we don't IRL, but we also sometimes take for granted the stuff we can get online for free and don't even drop a word of appreciation to the talented people who create it.

The Valve payware system, for example, was pretty bad, because it was obvious that Bethesda wanted to capitalize on the huge Skyrim modding community and wanted their slice of the pie, after all it's their game, if someone is charging for additional content, they are entitled a share of the profit, aren't they? It was a shameless attempt at earning easy money. The modder got a very small share, because of the risk: Valve, as publisher of the paid mod, runs a risk when they allow you to publish your payware content on their platform. The Steam shares could be a lot less draconian to content providers (a reason EA left Steam), but that's how it is.

Back to the Fine Brothers, I've found their attempt ludicrous because they didn't seem to understand under which conditions you can trademark something. A product can be trademarked only when it's one's own creation and it has a distinctive trait not possessed by anything else. For example, you can't really trademark the "reality show", but you can trademark Big Brother, MasterChef, Cake Boss, Survivor, The Voice, and so on. What did the Fine Brothers offer to the public that others didn't? You can find these sorts of videos everywhere. In fact, John Boyega's friend recently posted a video showing the Star Wars' actor's reaction to his appearance as Finn in a lightsaber-wielding scene during The Force Awakens' last trailer. A reaction video is less a "format" and more a "concept". What The Fine Brothers tried to do was akin to trademarking the Let's Play, the unboxing videos, the vlog, and, speaking in TV terms, the talk show, the soap opera, the TV series, and so on. And they've got a well-deserved backlash for that.

Monetization online can be a very dangerous path to tread, and we've seen here yet another chapter with terrible consequences. Above all, the Fine Brothers' reputation will be tarnished for a long time. And these controversies won't stop here.

Monday, January 25, 2016

RetroArch in a nutshell (Windows)

With home theater PCs and Android set-top boxes becoming ever more popular (not least because companies such as Valve seem to want to make you game in the living room), lots of people want to set up a device that can run emulators and their ROMs at decent speeds. Nowadays you have many, many alternatives for that, and one of them is the good old Windows PC, which can be the most powerful overall.

In their search, these people stumble upon RetroArch, a very nifty and powerful emulation program and IMO the best you could use. It's cross-platform and supports a lot of shaders that can make your retro games look pretty close to what they used to look like when displayed on old CRT TVs. However, RetroArch can be rather difficult to setup and many people have problems doing it.

This is a guide to RetroArch's command line so you can easily set it up to automatically load cores and run ROMs. It's focused on Windows but, with the needed changes to folder paths and extensions, it should work for Linux, Android and Mac as well.

First of all, RetroArch by itself is NOT an emulator, it's an application that can load a variety of cores to emulate different systems. These cores are the emulation part of RetroArch and what contains the emulation code. The emulator's source code is ported to the libretro API and later compiled for use in different systems. The RetroArch program could barely be called a front end, though it does include a user interface (RGUI) which you can use to sort all your configuration.

This guide assumes that you have already configured all your folders inside RetroArch. Now, for the command line part.

The main ones you'll use with every front end are:

-f or --fullscreen: Launches game in fullscreen.

-L or --libretro: Loads core. Example: nestopia_libretro.dll for NES.

-c or --config: Loads configuration file. Recommended to be a general config file (example: RetroArch.cfg)

--appendconfig: The real magic of RetroArch is allowing you to append special configs to a main one. You could use one for each console or each core, for example. These go after the main config and you can add as many as you want provided you separate them with a "," (comma) between them.

The path of each file is either absolute or relative, so if cores for example are stored in a subfolder of the folder that contains the RetroArch executable, say, "C:\RetroArch\cores", the path can be either "C:\RetroArch\cores" or just "cores", but if the cores are elsewhere the path must be absolute. Quotes aren't needed but are useful if you use folders with names that have spaces.

So... If you have the following setup:

1) RetroArch.exe installed in C:\RetroArch
2) Cores in C:\RetroArch\cores
3) You want to load the Nestopia core (nestopia_libretro.dll)
4) Main config file called RetroArch.cfg in C:\RetroArch
5) Secondary config called nes.cfg in C:\RetroArch\config

The command line to automatically load NES ROMs via RetroArch will be:

RetroArch.exe -f -L cores\nestopia_libretro.dll -c RetroArch.cfg --appendconfig config\nes.cfg (path to NES ROM)

Typing all this in the Command Prompt will make RetroArch run in a fullscreen, load the Nestopia core, apply both configs (RetroArch.cfg before NES.cfg) and load the ROM you want.

However, different front ends have different requirements. Since most of them scrape ROMs for metadata, they usually require wildcards such as %ROM% (Advanced Launcher for Kodi, Rom Collection Browser for Kodi, EmulationStation),  or %r (Ice for Steam). This will allow the front end to scrape the ROM and build the shortcut according to what it scraped.

That's basically it for the RetroArch command line. You can experiment with it and do many great things. The -s or --save parameter is particularly useful because it allows you to load different saves, otherwise it defaults to the save named after the ROM. You can use it to run different saves of Pokémon, for example, which have only one file per save. The patch parameters, --ips for example, can be used to automatically patch ROMs for that session only, without permanently modifying the ROM.

As of version 1.3, RetroArch has a variety of pretty GUIs to choose from besides the old RGUI, so you don't need to have a dedicated front end anymore. This, however, will require you to create shortcuts to automatically load the cores and run each game.

EDIT: Member "Borg-101" at Kodi forums pointed out a mistake in my config, you should not use backward slashes ( \ ) at the beginning of each path. Thanks a lot, buddy. :)