Skip to main content

protonfixes

A module for applying fixes at runtime to unsupported games with Steam Proton without changing game installation files. The idea is to include seperate fixes that are only loaded when a game matching that ID is run. This should keep the individual game fixes from affecting any other games. Applying the fixes at runtime should also allow fixes to persist after game updates.

Current fixes include:

  • Final Fantasy IX
  • Oddworld: Abe's Oddysee
  • Forts

Installation

Requirements

If you want to be able to use fixes with winetricks it must be installed and be in your $PATH. Fixes that do not use winetricks will still work without winetricks being installed.

Install from PIP

# sudo pip install protonfixes

Install using setuptools

# sudo python setup.py install

Add to user_settings.py

In the steamapps/common/Proton* directory, add the following line to user_settings.py:

import protonfixes

If there is no user_settings.py file, make a copy of the user_settings.sample.py file.

Writing Game Fixes

Game fixes written in python and are named by the Steam game ID with the extension .py. For example, the file gamefixes/377840.py will be loaded when the game FINAL FANTASY IX is run. Here are some things to consider when writing fixes:

  • Only import libraries that are part of the Python standard library for portability.
  • Use docstrings and comment thoroughly. There will likely be people without python experience making game fixes and good commented examples will help
  • Do not use any hard-coded paths, Steam may not always be installed in the same location.
  • Check your gamefix with pylint. You can safely disable warning C0103, modules named by Steam ID will never conform to snake_case naming style.
  • Pull requests are welcome!

Example game fixes

377840.py - Changing the executable launched

import os
import sys


def main():
    """ Changes the proton argument from the launcher to the game
    """

    print('Applying FINAL FANTASY IX Game Fixes')

    # Fix crackling audio
    os.environ['PULSE_LATENCY_MSEC'] = '60'

    # Replace launcher with game exe in proton arguments
    for idx, env in enumerate(sys.argv):
        if 'FF9_Launcher' in env:
            sys.argv[idx] = env.replace('FF9_Launcher.exe', 'x64/FF9.exe')

410900.py - Running a winetricks verb

from protonfixes import util

def main():
    """ Uses winetricks to install the ole32 verb
    """

    print('Applying fixes for Forts')

    if not util.checkinstalled('ole32'):
        util.protontricks('ole32')

Metadata

Release files for protonfixes 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for protonfixes 1.0.2
File Size Uploaded
protonfixes-1.0.2.tar.gz 4.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for protonfixes 1.0.2
File Interpreter ABI Platform
protonfixes-1.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 12.3 kB

Release files / protonfixes-1.0.2.tar.gz

Download URL protonfixes-1.0.2.tar.gz
Size 4.5 kB
Tags Source
SHA-256 checksum
How to use checksums
dd8fc534b356988f1c39472353ddd41eaa0d18283eb8be437f80e6fad66cb41a
BLAKE2b-256 checksum
How to use checksums
449eb9c8f4560faef86801b840d9cb283597fca2438955831ee54fca2a820433
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.2 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0

Release files / protonfixes-1.0.2-py3-none-any.whl

Download URL protonfixes-1.0.2-py3-none-any.whl
Size 7.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
655b68e6cf2fac90365eb9dcd965bbf7bb179bcf62c13453f4f3acf3594952a8
BLAKE2b-256 checksum
How to use checksums
71b2722f5f8868897ffe86bcdd752b3bbd4a96c400d10a0916ec6aeec6724a05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.2 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0

Release history Release notifications | RSS feed

1.0.14

2 release files

1.0.12

2 release files

1.0.11

2 release files

1.0.10

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

This release

1.0.2 This release

2 release files

1.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page