My journey into daily driving Linux is going rather well. Decided I’m gonna give myself a bit of a small challenge (or not, this might be easy).

I want to get a couple old games to work. I’ve had to do some tinkering or installed unofficial patches on these games probably since the Vista days. So I know they require some work to run on modern systems. But can’t find info on how to do it on Linux. I don’t want to do a «throw shit at the wall and see what sticks» and end up breaking something in my OS. I’m on Nobara KDE.

Installed in the EA App through Lutris:

  • C&C Red Alert 2 and Tiberian sun (Black menus, game runs otherwise)
  • Medal of Honor Allied Assault (Crash on startup)

Anyone wanna teach a Linux noob some tips and tricks to make this work? Or a way to install these .exe patch files and go the «windows» route? (Can this be done safely through Wine?)

  • BananaTrifleViolin@lemmy.world
    link
    fedilink
    English
    arrow-up
    27
    ·
    edit-2
    2 days ago

    I’ve played around with this. I find lutris is good for most games but sometimes you may need to do it yourself using Wine or Proton

    I managed to get a game called Discworld Noir working - its almost impossible to get running in Windows itself but in wine it took relatively little effort.

    The key for getting old windows 98 games running for example is to create a dedicated own Wine prefix (basically its own virtual environment) and install the needed windows packages into it. I’m using wine but you can also use the gaming focused and optimised Proton in a similar fashion.

    For my method you need Wine and Winetricks. Winetricks gives you lots of easy to use tools to configure a wine prefix to your needs.

    I followed this guide to create a win98 like environment: https://www.myabandonware.com/howto/wine (I appreciate the sire itself may be objectional to some but the guide itself is OK). The author doesnt quite understand wine so take some of the comments with a pinch of salt.

    I’ll summarise here.

    1. Create a wine prefix using the command below. The guide I linked creates a prefix into the default folder .wine, but I’d create something named like Win98. The .wine folder is too generic for making dedicated environments and may already exist. You can have as many prefixes as you want in different folders. Also the command below sets it as Win32 but this is redundant on the bleeding edge version of Wine; win64 will be fine if you’re on the latest version (lots of gaming distros like Nobara) use the bleeding edge, just change Win32 to Win64 if you get an error about wow64 :

    WINEARCH=win32 WINEPREFIX=~/Gaming/Win98 winecfg

    The command basically tells Wine to run winecfg in the prefix; as the prefix doesnt exist wine first creates the prefix folders for you then launches the generic winecfg tool.

    1. Winecfg will open. You can set the scaling for the prefix using the graphics tab if its too small (4k screen for example). Set the DPI to around 200 for 4k works well. This useful scales everything including games in a window if you use tools like dxwnd (mentioned later).

    2. Close wincfg and now use Winetricks in the prefix using the terminal;

    WINEARCH=win32 WINEPREFIX=~/Gaming/Win98 winetricks

    This command ensures its using your specific prefix. If you run winetricks from your linux menu it will run on the default prefix for the system, which may be the lutris one or more likely another random default one. You can select a prefix inside winetricks but it can be annoying each time you launch it. Using the terminal to specify the prefix prevents any errors and is just easier imo.

    1. Select the option “select the default wineprefix” in the menu. It will stick with prefix you specified in the terminal.

    2. In winetricks its a good idea to first install the basic windows fonts so old games and installers work properly. Select “install a font” and then select Core Fonts and Tahoma then click OK. Winetricks will download and install the fonts. It will throw up a dialogue box every so often warning you that wine will be unavailable - its very annoying but not an error, it a bizarre design decision with winetricks. Just click OK/continue each time it comes up. Once it finally finishes the fonts are installed and youre back in the winetricks menu. You may also get wow64 warning boxes if youre on a gaming distro/bleeding edge wine- also annoying but not an error.

    3. Next we want to install some old windows DLLs and packages. The ones listed by the website work well for me for old games. You want:

    • d3dx9_3
    • dotnet40
    • dotnet452
    • vb6run
    • vcrun6sp6

    You may need slightly different packages for your games.

    Again you’ll get lots of warning messages and popups. Just click through and agree to any old windows licenses. Allow the packages to install to their default locations - they’re installing into the prefix in a folder “drive_c” which is your fake windows drive.

    1. Once its done you have a functioning Windows prefix which is optimised as if it was 1998.

    2. For my game - Discworld Noir - I then had to install the game into the prefix. I used winecfg to mount my CD drive into the prefix and ran the installer off the CD. You can launch winecfg from winetricks and also launch Explorer - this shows you the folders inside your prefix. Running both let’s you change settings and also browse your virtual windows machine, including launching setup files from the CD. Note winecfg doesnt auto update if things change in the host linux system (like yoy mount a new drive). Close and reopen winecfg to see changes - can be important if youre swapping CDs for an install. To be clear the system changes do auto apply to wine, you just can’t see them live update in winecfg.

    You can also mount ISOs using linux and winecfg will pick them up as CD drives, or also use Winetricks to launch Windows installer files directly. You can also use the terminal to launch the setup files directly.

    WINEARCH=win32 WINEPREFIX=~/Gaming/Win98 wine /path/to/setup.exe

    The game will install into the prefix as long as you run the setup file in the prefix.

    1. Next, because my game has issues with being fullscreen in Windows I downloaded a windows program called dxwnd - https://sourceforge.net/projects/dxwnd/ This is a great tool for older games even on windows - it runs the game in emulated full screen which can solve a lot of unintended errors. It also has lots of config options for games that can help with tinkering.

    Unzip the file into your prefixes fake drive C folder. For my example i put it in: ~/Gaming/Win98/drive_c/dxwnd/

    Then using winetricks or the terminal, I launch dxwnd. Dxwnd contains loads of template configs for old games in its “export” folder. For my game I import the “discworld noir” config and then right click OK the new entry and select “modify”. I then point dxwnd to the location of the game exe (in my case I also needed to download a modified exe file for the game made to work on more modern systems - it also patches some other game errors so is still needednin my win98 fake machine).

    I also then change the game resolution to 800*600 in dxwnd because for my game that is the source of crashes which the default config gets wrong.

    Then thats it - I launch the game from the dxwnd launcher and a window 800*600 appears with the game in it. The great thing about dxwnd is that window gets scaled according to the DPI I set in winecfg so its nice and big on my 4k screen.

    This is an example - your games may need different config options. Or you could get them running in Steam using proton - just add a “non steam game” find the exe in the lutris wine prefix (lutris/proton both create their own Wine prefixes) and add it.

    There is also a tool called protontricks that is very similar to winetricks and allows ypu to modify the proton prefixes into the same way as winetricks for my game.

    Protondb.com provides lots of information on popular and modern games, including peoples tips on how to modify the prefix or settings to use on launch to get games working.

    It can seem intimidating but essentially wine and proton are doing the same thing: they create a windows environment with config files in a folder in your linux home folder. Lutris automates a lot of this installing the DLLs etc it needs for a game. But when lutris fails to work you can tinker with the lutris prefix using winecfg and Winetricks (launch them from within lutris), or create your own like I did.

    I like to create my own prefix for probelmatic games as my lutris set up is now quite complex and has many games installed. So if there is one game with unique needs and tinkering it is useful to be able to create a dedicated prefix - then you dont break your other games if you break the prefix.

    Hope that helps. Its honestly not as hard as it can seem and I have managed to get games working on linux that are nigh imposaible to get working on Windows now.

    Also I havent even touched on Dosbox/dosbox-x which can run loads of dos games and even run Win98 itself. And of course you can also use KVM/Qemu or VirtualBox to make Windows virtual machines as another route. Generally though so far ive managed to get my windows games working on Wine.

    And of course on top of all that you have emulation tools like Emulation Station, or EmuDeck, and loads of emulators. I use ScummVM for my old adventure games, and fs-uae for old Amiga games. You can do a lot with linux!

  • HouseWolf@lemm.ee
    link
    fedilink
    English
    arrow-up
    7
    ·
    2 days ago

    Heavily depends on the game and how the patches are installed.

    If the patch comes as an exe, on Lutris next to the Play button you’ll find a wine glass icon with a menu next to it, you can use ‘Run EXE inside Wine prefix’ to run the patch installer and I’ve had it work most of the time. Sometimes you’ll need a .NET dependency which you can install through Winetricks using the same menu.

    A lot of patches for older games require DLL files which you have to manually declare in Wine, One again in that Wine glass menu you’ll fine ‘Wine Configuration’ and in the Libraries tab of that, you declare what DLLs you need to “override”.

    I don’t play either of those games you mentioned but I mainly play and mod older games these days and had pretty good luck running 95% of them through Lutris. You just sometimes have to find workarounds.

  • PonyOfWar@pawb.social
    link
    fedilink
    English
    arrow-up
    7
    ·
    2 days ago

    ProtonDB is generally quite helpful to find tweaks and fixes for games to run on Linux.

    I haven’t used Lutris, but through Steam/Proton, installing a patch is basically as simple as changing the executable path from the game .exe to the patch .exe and then changing it back after the patch was installed.

  • rowinxavier@lemmy.world
    link
    fedilink
    English
    arrow-up
    3
    ·
    2 days ago

    Yes, this can be done through WINE.

    Depending on your method of install for WINE you will use different specific buttons and so on, but the idea is the same. Take the patch .exe file and run it inside the same WINE prefix as the game is installed in. This can usually be done by opening Lutris and selecting the game, then clicking not in Run but on the WINE icon near it. That allows you to select the .exe file and run it in the same WINE prefix as your existing game install. From there the patch should be able to find the game at C:\Path\to\game and make the required changes.

    Hope that works out for you

    • Parptarf@lemm.eeOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      2 days ago

      This worked for TibSun. Thanks!

      Got the cncnet patch installed. Now to check if the patch actually fix the black menu issue.

      Edit: Didn’t fix the issue for that game. But I now know how to uninstall patches using .exe files!

      • rowinxavier@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 day ago

        Nice, good to hear it worked out mostly. As for the black menu issue, consider looking at using various different libraries. For example, some games need the actual Windows .DLL files depending in exactly how they use them. The substitutes in WINE are just that, substitutes, so they have very slightly different behaviour in some cases. For GUI libraries if you get something wrong it is easy to have problems like a black menu box from something loading out of order, returning too fast or slow, or just being formatted differently. The native libraries can be used and that can sometimes solve the issue.

        • Parptarf@lemm.eeOP
          link
          fedilink
          English
          arrow-up
          1
          ·
          edit-2
          1 day ago

          I’ll look into this too. I’ve had this issue with TibSun for years but the unofficial patch from cncnet usually fixed it.

          A lot of the stuff I come across in Linux makes more sense than in Windows honestly. It’s just completely different and that makes it hard when you’re used to messing with .exe files, .dll files and regedits.