Support us on Patreon to keep GamingOnLinux alive. This ensures all of our main content remains free for everyone with no article paywalls. Just good, fresh content! Alternatively, you can donate through PayPal, Liberapay or Buy us a Coffee. You can also buy games using our partner links for GOG and Humble Store.

How-to: upscale old games on Linux

By - | Views: 34,222

Any tool that makes it easier to play older Windows games on Linux deserves some praise, and none more so than Lutris in my book. But...have you tried running a really old game and found that it is hilariously minuscule on your fancy modern HiDPI monitor? Resolutions which are commonplace today were not even dreamed of back in the 1990's. Take a game like Space Cadet, the classic pinball game many of us spent an embarrassing amount of time with.


3D Pinball for Windows – Space Cadet

This game was originally bundled with Microsoft Plus! 95, a sort of enhancement pack for Windows 95. We're talking 1995 here, 25 years ago at the time of writing. Colloquially known as Space Cadet pinball, the actual title is 3D Pinball for Windows – Space Cadet and is essentially a single pinball table rewrite of the original game Full Tilt!, using mostly the original art.

Note: I will not include any links nor instructions how to obtain a copy of this game.

Running "Space Cadet pinball" in Lutris is as simple as adding the game, using any recent Wine version. I personally recommend using a separate Wine prefix for each game. There are any number of instruction videos available on this topic if you're unsure how to do that, but know that all the default settings are fine as-is in Lutris.

The game runs without fuss and looks something like this on a modern Linux PC. You may have to zoom in a bit to see it! Screenshot resolution is 3440x1440. 

What is this, a game for ants? Although Lutris has some tricks up its sleeve, virtual desktop does not help, and running the game in fullscreen doesn't make it any larger. Xephyr is a possible solution but since it also requires extra packages and is a more complex solution, I have something else in store for you.

 

Enter xpra

Very simplified description: xpra is a clever little thing that allows you to run an application in an X server inside another X server. It can do this locally or remotely, which may interest some of you, but we're only interested in upscaling a tiny window this time.

We'll use the excellent script run_scaled by kaueraal and install it systemwide for your current user. This way you can use this script for any other game as well. 

These instructions are specific to Debian, if you're using a Debian based distro like Ubuntu or derivatives thereof, you should be good to go. Others may have to adapt the instructions to their distro of choice. 
 

Instructions

  • sudo apt install xpra xvfb

Clone the run_scaled script with git, alternatively download it manually from the link above. Copy it to your preferred binary executable directory, in this example we're using the current user directory ~/.local/bin/ but if you prefer something else, simply modify this path. Just make sure it is listed in your $PATH environment variable.

  • git clone https://github.com/kaueraal/run_scaled.git
  • cd run_scaled/
  • cp run_scaled ~/.local/bin/

Open Lutris, select the game and choose Configure, System options tab, scroll down to Command prefix and input the script along with desired scaling factor. In the example image I used a factor of 3, you can use fractional scaling to fine tune it for your resolution. You can use values smaller than 1 as well.

  • run_scaled --scale=3

With that done: this is how it looks with 3x scaling on the same monitor. 

Much better. There's going to be a few drawbacks, as nothing is perfect. It can possibly reduce performance, introduce blurring and probably more but it's an option that does work. If other solutions for your old favourite classic didn't work, perhaps this will.

Article taken from GamingOnLinux.com.
Tags: HOWTO, Wine
29 Likes , Who?
We do often include affiliate links to earn us some pennies. We are currently affiliated with GOG and Humble Store. See more here.
About the author -
author picture
Using the powers of Debian for great justice.
See more from me
The comments on this article are closed.
37 comments
Page: «4/4
  Go to:

Dunc 13 Apr, 2020
Quoting: MayeulCSo you have a horizontal resolution at the very least
Not really. Those aren't pixels. Each subpixel in a digital display can only represent one particular brightness, but the phosphor dots in a CRT can display fine detail within themselves. Think of them as an array of tiny monochrome monitors, and it should make sense. In fact, although it wasn't common, some CRTs only had phosphor lines which ran the entire height of the screen.

To be fair, in extreme cases, the phosphors will limit colour resolution. But, importantly, not that of the overall image. Imagine an array of three monochrome CRTs, one red, one green, and one blue, side by side. There's no reason they couldn't display a perfectly good picture between them. The colour information would be all but completely lost - from a distance, you might be able to get an idea of the overall, average, colour across the entire image - but none of the the detail would. However, if you scaled up a single LED or OLED pixel in the same way, you'd just end up with three coloured lamps. All the detail would be lost.

Just to be clear, I'm not disagreeing with the idea that low persistence is one of the things that gives a CRT its distinctive “look”, but I'm not sure it's what makes them look better.
Mar2ck 19 Apr, 2020
I tried to use this tool to run games at a higher res then my monitor and scale it down and while it did work it's way too inefficient. Team Fortress 2 worked but my fps went from 1000 fps to 10 fps :D
jtreagan 10 Oct, 2020
Rather than a game, I'm running a financial management program (YNAB 4) that I used before I moved over to Linux. Since there isn't a Linux version of the app I'm running it under Lutris. Trouble is that the font in the app is now too small for me to read. (My eyes dont' work well with the small fonts everyone seems to prefer these days.) I had hoped this would allow me to scale up the window to get a bigger font display. Instead, the app simply won't start. I tried using different scale factors, but as long as there is something in the Command Prefix field, the app won't start. Too bad.
dpanter 11 Oct, 2020
Quoting: jtreaganas long as there is something in the Command Prefix field, the app won't start
Sorry to hear that. Do check the Lutris log for clues why it's not working, could be something simple like a missing library or Python problem. Many distros are moving away from Python2 so maybe you were caught in a borked transition to Python3.
Here's an example log from a successful start+exit of the game in the article.
x_wing 13 Oct, 2020
Quoting: jtreaganRather than a game, I'm running a financial management program (YNAB 4) that I used before I moved over to Linux. Since there isn't a Linux version of the app I'm running it under Lutris. Trouble is that the font in the app is now too small for me to read. (My eyes dont' work well with the small fonts everyone seems to prefer these days.) I had hoped this would allow me to scale up the window to get a bigger font display. Instead, the app simply won't start. I tried using different scale factors, but as long as there is something in the Command Prefix field, the app won't start. Too bad.

I think that you can change the font size from the winecfg dialog. Did you try that?


Last edited by x_wing on 13 October 2020 at 8:59 pm UTC
Has anyone made further progress with this "upscaling" method? I've tried it and it's terribly slow. I then tried to replace Xvfb with VirtualGL; which makes (Windows) games (via WINE) run at great speed/framerate. Except now, the keyboard input is apparently losing focus and I can't control the game.
dpanter 23 Apr
Quoting: RetroGamerCAit's terribly slow
Yes, this was never meant to be highly performant, that's why it's mainly useful for very old games or applications. Beside the other options listed in the comments, check out gamescope for a modern solution.
While you're here, please consider supporting GamingOnLinux on:

Patreon, Liberapay or PayPal Donation.

We have no adverts, no paywalls, no timed exclusive articles. Just good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
The comments on this article are closed.