PC Builds

HTPC / Retro Gaming Build

By September 29, 2020October 13th, 2020No Comments

Introduction

Disclaimer- Amazon affiliate links are used in this article. For this site, I choose to not pesture my audience with annoying advertisements, and instead, only rely on affiliate links to support this hobby. By using the affiliate link, you will pay the same price on Amazon, as you would otherwise pay, however, a small percentage will be given to me..

So, after fighting to get multiple ps4 controllers to work with my modified wii-u, when playing gamecube games…. I determined I wanted a much simpler solution, as simple as picking up the controller, and hitting play on a game.

Currently, in my livingroom, I have three devices.

  1. Raspberry Pi 4
    1. This is used for retro-emulation. NES, SNES, Sega, PS1, GBC/GBA. It currently runs Lakka, which works great. The only downside- performance is not acceptable when playing N64. PS1 works most of the time.
  2. Roku
    1. Used for all TV / Media. Works great. No Compliants.
  3. Nintendo Wii-U
    1. I have soft-modded with haxchi. Allows me to play N64, GameCube, Wii, and Wii-U nearly perfectly. CAN play NES/SNES/Sega as well.
    2. Complaints- Controller support. A bit slow to get a game fired up.

What I hope to accomplish

I want a single, unified solution which allows me to play the following systems:

  1. NES
  2. SNES
  3. Sega Genesis
  4. Sega Dreamcast
  5. N64
  6. Gamecube
  7. Wii
  8. PS1
  9. PS2
  10. STEAM

Most of the above systems, can already be emulated without issues on my Pi with Lakka. However- For gamecube/wii/ps1/ps2, a bit more power is required.

For Steam- (playing modern games), even more power is required.

Ideally, I want to be able to turn on a controller, which will activate the system, and allow me to fully navigate the interface with a dual shock 4.

Wireless Bluetooth access is a must.

Compact size, is a MUST, since this device will reside in my livingroom, likely on the window-sill behind my TV.

Lastly, I don’t want to spend a small fortune, but, I do want some level of future-proofing.

Choosing hardware

Since, steam is on my list of requirements, I ruled out SOC hardware, such as raspberry pi. While an intel NUC could likely meet the requirement, I wanted a more expandable solution.

After much research, I decided on a HP z240.

HP Z240 SFF with i7-6700, 8GB DDR4 ram, 512GB NVMe M.2 ssd for 306$ shipped, via eBay.
i7-6700 with 8GB of ddr4 should easily exceed the hardware requirements.

While, the cost was a bit more then I initially planned- I determined the 4c/8t i7-6700 would provide a good level of performance for most use cases outside of AAA gaming. As well- it comes with a 512GB m.2 ssd out of the box, with 8gb of DDR4.

If you are intending on creating a retro/HTPC for yourself, and you don’t plan on playing games on steam, or anything newer then a PS1- you can get a suitable piece of hardware for slightly over 100$. If you are willing to wait and watch bids, I see options for as little as 20$.

Any of the below pieces of hardware would be more then adequate for retro emulation.

If you do not know how to use the search feature, here is a LINK for you.

This image describes alternative hardware available for as little as 110$ shipped via eBay.
Alternative hardware around 100$ via eBay

Next- since I want to be able to play most of my steam library, a GPU is almost a must.

Due to the power-supply limitations on the chosen hardware, a GPU without the requirement for external power was required.

Meet the GTX 1050ti, Low Profile. You can technically order one new from Amazon for only a couple bucks more then my eBay version. But, after a bit of research, this GPU was reasonably priced, and should provide a good boost to most games.

This image shows a GTX 1050 ti for 120$ shipped via eBay.
GTX 1050ti Low Profile GPU – 120$ via eBay

Lastly- since the chosen hardware did not support Bluetooth OR wifi out of the box, I needed a good wireless adapter, with GOOD linux compatibility. (Bad compatibility means a lot of time and effort would be spent trying to force the adaptor to work properly).

After researching a bit on reddit, I determined Intel ax200 based chipsets have amazing combability, and will grant me the capability for both 802.11ac Wi-Fi, as well as Bluetooth.

For 29$ shipped, I picked up this no-name adaptor, which uses a intel ax200 chip. It does include the required low-profile bracket, and antennas.

This is an image of a mini-pci wireless adaptor.
Intel ax200 802.11ac Wireless / Bluetooth Adaptor

Lastly, you will need a good method on how to control your HTPC system. I decided on using official Sony DualShock 4 Controllers. <- Affiliate Link.

I went with the dual shock 4, because it is usable for multiple systems, and multiple purposes. You can use it wirelessly via Bluetooth. You can using it hard-wired. I can use it with my Wii-U using Nintendont. It will connect to my normal gaming PC. It is fully supported on a Raspberry PI.

In short- it is wireless, very flexible, and highly supported.

Oh- and it has a built in trackpad and functions as a mouse. Huge win.

I picked up two. (Coop with the wife!)

Choosing an operating system

This was the challenging part.

While, I could easily go with Lakka, Recalbox, or Batocera… which are all purpose-built retro-gaming OS distributions…

I was afraid of trying to hack in support for steam, or other software. IF, my only requirement was for retro emulation, I would have likely stuck with Batocera, due to a pretty interface, on top of retroarch. BUT…. support for any piece of software, game, or even server software was desired…

Based on that, I narrowed my choices down to…

  1. Ubuntu – Based on debian
  2. Manjaro – Based on arch
  3. SteamOS – Based on debian

Ubuntu / SteamOS

Both of these have an outstanding upstream package repository, and extremely good support for most hardware.

However- Ubuntu can be quite a bloated installation.

SteamOS would have been a great option as well, however, its latest release was in July of 2019. Based on the lack of recent releases, I crossed this item off of the list.

Manjaro

Manjaro is based on arch. Its advantages over ubuntu, included less bloat installed by default…. and- a unique updates model.

Its update model is based on frequently rolling updates, with the option of being able to choose bleeding edge updates, days or weeks after they are released. Its kernel also stays extremely recent.

I did not know this before- but, apparently it has a very good package repository. As another plus- there are no PPAs!

There is also the “Arch User Repository” which would give the ability to install damn near anything I can think of.

In the end, I decided on Manjaro for the above reasons.

Choosing a desktop environment

For this particular use-case, my goal is for everything to be 100% controllable via a bluetooth dualshock 4 controller. I picked up a few of these, despite not having a PS4, because they are extremely compatible with just about everything.

They work flawlessly on my Lakka-based pi4. They work for gamecube mode on my Wii-u, using nintendont (not flawlessly, and corded mode only). They work on my regular PC…

And- they even have a built-in touchpad. The controller is very ergonomic to hold and use…. and overall- is extremely well designed. I am happy with the choice.

So- for the default desktop environment, I went with XFCE, to get a lightweight environment. However- my goal is to launch directly into Steam big-screen picture.

Part 2 – The Build

After all of the parts had arrived, it was time to put everything together.

Thankfully- both Dell and HP have ensured their SFF cases are easy to work with. Everything folds out for easy access.

This image shows the layout of the components inside of the small form factor PC. Very compact.
Here is the assembled product, including the wifi card, gtx 1050ti, and a NVMe ssd (midde-right under a heatsink)

Here is another view of the NVMe ssd.

Showing the NVMe ssd hidden away inside the chassis.
NVMe ssd with heatsink.

Case “closed up” You can also see the additional SSD I added for storing roms and other software… as well as the DVD+RW drive.

Showing how compact everything is when closed up.
Everything is a nice, compact, snug fit.

The ONLY major concern…

The only major concern I have had with this entire build… is the 200w power supply.

pply.

Now,

Many people would automatically think a 200w PSU would not work at all….

(65w tdp processor… 75w tdp GPU, 1x NVMe/m.2 SSD, 1x sata SSD, Intel ax200 wifi/bluetooth card…. and a DVD-RW)

Surprisingly, it actually works just fine.

To test the PSU as a limitation, I ran a 8 core CPU burn test and held the processor at 100% across all cores, for around 15 minutes, while running a 4k game in the background.

This test, while not scientific, was able to keep the CPU at 100%, while keeping the GPU loaded > 80%.

I can report- no issues at all were caused by insufficient power… However- I can also report, the stock cooling solution for the processor is barely adequate. The i7-6700 hovered around 94c… while within “spec”, this is extremely hot.

But- since this machine will hardly ever be utilizing anywhere near 100% of the 4c/8t processor, I left the stock cooling solution in place.

Part 3 – A bit of configuration

The quest to find a good desktop environment.

This was the hardest choice.. trying to determine how to best boot the system into a controller-only interface.

Retroarch

I started off using a custom xsession to have the system automatically log in to a retroarch-only session. This has the advantage of not loading a full desktop environment.

Overall- it worked great, without issues.

If you wanted to know the steps to accomplish this- open the spoiler below.

Manjaro/LightDM How to configure the PC to boot directly into Retroarch without a desktop environment

The easy way- If you are using the AUR- just install this package: https://aur.archlinux.org/packages/retroarch-session/

Otherwise- here are the manual steps.

Step 1. Create a XSession config & a script to launch retroarch.

[Desktop Entry]
Name=RetroArch
Comment=
Exec=/usr/bin/retroarch-session.sh
Type=Application
#!/bin/sh

/usr/bin/xset s off         # don't activate screensaver
/usr/bin/xset -dpms         # disable DPMS (Energy Star) features.
/usr/bin/xset s noblank     # don't blank the video device

LOG="/var/log/retroarch/retroarch.log"

touch "$LOG"
mv "$LOG" "$LOG.old"

/usr/bin/retroarch &> "$LOG"

# Will shutdown the system when you exit retroarch.
shutdown now

Next, we need to modify the LightDM configuration to auto-start as the specified user, using the specified session.

Step 2. Modify /etc/lightdm/lightdm.conf

Modify the configuration, and ensure these parts are at the bottom of the configuration element specified.

[Seat:*]
autologin-user=myuser # <-- put your specified user here.
autologin-session=retroarch # <-- will automatically log in using the retroarch session we created.

That should be all of the required steps to launch retroarch as a session skipping a normal "desktop"

Kodi

The downside of using retroarch, is the ability to launch external software… such as steam, or pcsx2 (for ps2 emulation that actually works….)

Since Kodi is very popular in the HTPC place, I wanted to try it.

I leveraged Advanced Emulator Launcher to take care of organizing and launching the different game systems.

Overall- it was a pretty nice piece of software…

But- I was not very happy with the interface of Kodi. While it is extremely customizable to however you want it to appear, I was having a few issues getting my dualshock 4 controller to properly control it. I gave up on this approach and removed it.

Steam

While I have had steam installed since setting up this PC, and originally had planned on using steam as the main launcher.. I held off on this until last.

Steam has a few advantages over Retroarch, in the sense it can launch external programs with ease.

For native-steam games, nothing at all is required for it to work. Steam automatically detects the dual shock 4 controllers, and works without issues in big picture mode.

For my emulated games, a solution is required to display them in steam.

Enter Steam ROM Manager.

This gem, allowed me to setup scrapers for all of my systems, download art work, and enter everything into my steam library with the proper launch arguments. It allows me to launch most of my systems via retroarch, using my normal configuration file and works perfectly.

For PS2, I was able to set it to automatically load/launch the games via PCSX2, which worked flawlessly.

Overall- this has been my favorite method.

The only issue I have been having, is getting steam to launch in its own “session”, without loading the full desktop environment. However, I have not noticed any performance penalties from having it auto-start in XFCE.

Anyways, I hope this article has been handy for somebody. Please leave your comments below if you have any.

Final verdict / Conclusion

I rate my current progress of this built a 8.5/10.

PROs:

  • Easily emulates NES/SNES/GBC/GBA/N64/PS1
    • My Pi-4 could do this as well! with the exception of N64.
  • Easily emulates PS2 / GameCube / Wii
    • My Pi couldn’t handle these. Nearly flawless emulation for most of the games using dolphin / pcsx2.
    • Can even use wii motes without issues.
  • Can also play most of my steam library.
    • Even GTA:V works just fine on this setup!
  • Since it is a PC, running Linux, it is extremely flexible to future needs as well.
  • The hardware is pretty much silent. You cannot hear it. Also- relatively low powered.
  • After setting up everything, its effortless for the wife to control this system using only a PS4 controller.

CONs:

  • It took a bit of knowledge to get everything setup the way I wanted. You could technically do this same build using windows without much impact if you wanted to make setup easier.
  • I had to use a USB bluetooth adaptor, due to a shortage of usb headers on the motherboard. HP’s bios wouldn’t let me repurpose the existing header to the front usb 2.0 ports… without halting the OS at boot.

Leave a Reply

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 82 other subscribers

%d bloggers like this: