Antworten
Benutzeravatar
Sharky009
Administrator
Administrator
Beiträge: 112
Registriert: 17.07.2019 17:37
Wohnort: Berlin
Simulationen: TPF 1 & 2, EEP 5 - 11
Hat gedankt: 28 times
Gedankt worden: 113 times
Kontaktdaten:

EEP 6.0 unter Linux

06.06.2026 21:38

EEP 6 unter Linux – So hat es funktioniert:

Nach ausgiebigem Testen und vielen Fehlversuchen ist es mir tatsächlich gelungen: EEP 6 läuft unter Linux – und zwar über den Lutris Launcher, der intern auf Proton setzt, welches seinerseits auf Wine basiert, um Windows-Anwendungen auszuführen.

Das MDI-Problem

Wine schleppt seit langer Zeit einen bekannten Bug mit sich, der MDI-Anwendungen (zu denen EEP 6 zählt) am sauberen Start hindert: Da Wine aber Open Source ist, schien ein eigener Fix zunächst machbar. Dass es dann doch deutlich komplexer werden würde, war mir zu diesem Zeitpunkt noch nicht klar.

DXVK-Kompatibilität

Ein weiteres Problem trat zutage: EEP arbeitete erwartungsgemäß nicht sauber mit dem DXVK-Backend zusammen. Auch hier waren gezielte Patches der entsprechenden DLLs nötig. Mit Unterstützung einer KI konnte ich diese Hürden letztlich vollständig überwinden – ohne diese Hilfe hätte ich dazu wohl wesentlich länger gebraucht oder es gar nicht geschafft. ;)

Das Ergebnis

Nach allen Patches läuft EEP auf einer leeren Anlage mit über 6.000 FPS. *SHOCK*
Zum Vergleich: Vorher unter Wine3D waren es gerade einmal 34 FPS.

──────────────────────────────────────

Fazit

Es braucht ein paar Workarounds, einige Patches und eine angepasste Wine-Konfiguration – aber es funktioniert. Zumindest im bisherigen Testumfang läuft alles stabil. Wie sich das Ganze auf längere Sicht verhält, bleibt abzuwarten. Ein entsprechendes yml stelle ich dann später noch mit ein. Dazu möchte ich aber ersteinmal sicher sein das alles Stabil ist. (hi)

Bildschirmfoto_20260606_211930.png
Bildschirmfoto_20260606_211930.png (2.13 MiB) 16638 mal betrachtet
Wer sich wundert und denkt, das ist doch Windows 7? Nein ist es nicht. Es ist ein Theme für KDE.
Mit freundlichen Grüßen
Sharky009 alias Pascal


Meine Homepage: https://www.sharky009.de
Hier finden sich alle Details zum verwendten PC und mehr

Simulationen: Transport Fever, Transport Fever 2, EEP 6(.1), EEP 7, Derail Valley
PC: AMD Ryzen 9 7900 @ 3.7GHz x 12; 128GB RAM; AMD Radeon RX 7900 XTX 24GB; Windows 11 Pro 64-bit
Notebook 1: Intel Core i7-4702MQ @ 2.2Ghz; 32GB RAM; Nvidia GeForce GT 750M 4GB; Windows 7 Ultimate 64-bit
Notebook 2: AMD Ryzen 9 5900HX @ 3.3Ghz x 8; 32GB RAM; AMD Radeon RX 6800M 12GB; Windows 11 Home 64-bit

Benutzeravatar
Sharky009
Administrator
Administrator
Beiträge: 112
Registriert: 17.07.2019 17:37
Wohnort: Berlin
Simulationen: TPF 1 & 2, EEP 5 - 11
Hat gedankt: 28 times
Gedankt worden: 113 times
Kontaktdaten:

Re: EEP 6.0 unter Linux

07.06.2026 12:22

Aktueller Stand: 3D Funktioniert jetzt auch mit DXVK nach einem Resize. Damit ist das ganze Fast final und braucht jetzt bald Tester.

Technische Details:
DXVK's D3D9DeviceEx::Reset() schlägt fehl weil:
EEP hält beim Reset D3DPOOL_DEFAULT-Texturen und GetBackBuffer-Surfaces am Leben. Das ignorierte Microsofts d3d9.dll und machte einfach weiter. DXVK mag das aber eigentlich nicht. Man kann es aber mit dem eintrag "d3d9.countLosableResources = False" in der dxvk.conf davon überzeugen das es ebenso wie das original, einfach sagt sch... drauf.
Bildschirmfoto_20260607_121949.png
Bildschirmfoto_20260607_121949.png (1.52 MiB) 16589 mal betrachtet
Mit freundlichen Grüßen
Sharky009 alias Pascal


Meine Homepage: https://www.sharky009.de
Hier finden sich alle Details zum verwendten PC und mehr

Simulationen: Transport Fever, Transport Fever 2, EEP 6(.1), EEP 7, Derail Valley
PC: AMD Ryzen 9 7900 @ 3.7GHz x 12; 128GB RAM; AMD Radeon RX 7900 XTX 24GB; Windows 11 Pro 64-bit
Notebook 1: Intel Core i7-4702MQ @ 2.2Ghz; 32GB RAM; Nvidia GeForce GT 750M 4GB; Windows 7 Ultimate 64-bit
Notebook 2: AMD Ryzen 9 5900HX @ 3.3Ghz x 8; 32GB RAM; AMD Radeon RX 6800M 12GB; Windows 11 Home 64-bit

Benutzeravatar
Sharky009
Administrator
Administrator
Beiträge: 112
Registriert: 17.07.2019 17:37
Wohnort: Berlin
Simulationen: TPF 1 & 2, EEP 5 - 11
Hat gedankt: 28 times
Gedankt worden: 113 times
Kontaktdaten:

Re: EEP 6.0 unter Linux

07.06.2026 17:37

Hier ein erster Prototyp zum testen unter Linux. Es wird GE-Proton10-34 und Lutris als Launcher in aktueller Version benötigt. Proton muss entweder manuell nach "~/.local/share/Steam/compatibilitytools.d/GE-Proton10-34" kopiert werden oder ist durch Steam (wenn installiert) eventuell schon da. Ein Download ist sonst auch hier möglich: https://github.com/gloriouseggroll/prot ... m/releases.

Fehler und sonstiges bitte gern melden. Eine Bebilderte Anleitung folgt wenn das ganze final ist. Dll Patches sind erstmal nicht nötig.

EEP 6.0 Version:

Code: Alles auswählen

name: Eisenbahn.exe Professional 6.0
slug: eep-6
game_slug: eep-6
version: "0.1"
runner: wine
script:
    game:
        exe: drive_c/Program Files (x86)/Trend/EEP6/EEP.exe
        prefix: $GAMEDIR

    files:
        - setup: N/A:Please select the EEP 6.0 setup.exe

    installer:
        # Wine bug #19505: MDI frame inserts a sysmenu at position 0, shifting all
        # menu indices. EEP uses hardcoded positions (GetSubMenu index 3/8) and
        # crashes when it finds the wrong submenu. Fix: NOP out the InsertMenuA
        # call in MDI_AugmentFrameMenu inside GE-Proton10-34's i386 user32.dll.
        #
        # To survive Steam updates the entire GE-Proton10-34 tree is copied to
        # ~/.local/share/lutris/runners/wine/GE-Proton10-34-mdi-patch (once).
        # Only that copy is patched; the Steam-managed original stays clean.
        # Patch is idempotent (byte pattern search) and creates a .bak backup.
        - execute:
              description: "Copying GE-Proton10-34 to GE-Proton10-34-mdi-patch and applying Wine MDI fix (bug #19505)..."
              command: >-
                  bash -c '
                  SRC="$HOME/.local/share/Steam/compatibilitytools.d/GE-Proton10-34";
                  DST="$HOME/.local/share/lutris/runners/wine/GE-Proton10-34-mdi-patch";
                  [ -d "$DST" ] || cp -a "$SRC" "$DST";
                  python3 -c "
                  import shutil,os
                  p=os.path.expanduser(\"~/.local/share/lutris/runners/wine/GE-Proton10-34-mdi-patch/files/lib/wine/i386-windows/user32.dll\")
                  d=bytearray(open(p,\"rb\").read())
                  i=d.find(bytes.fromhex(\"e8db40ffff83ec14\"))
                  if i>=0:
                      os.path.exists(p+\".bak\") or shutil.copy(p,p+\".bak\")
                      d[i:i+8]=bytes.fromhex(\"b801000000909090\")
                      open(p,\"wb\").write(d)
                  "
                  '

        # Install EEP 6.0 via setup executable
        - task:
              name: create_prefix

        - task:
              name: wineexec
              executable: $setup
              description: "Installing EEP 6.0..."

        # DirectShow / Media dependencies
        - task:
              name: winetricks
              app: d3dx9

        - task:
              name: winetricks
              app: quartz

        - task:
              name: winetricks
              app: amstream

        # VC++ runtimes: 2005, 2008 (MFC71/MSVCR71 bundled with EEP)
        - task:
              name: winetricks
              app: vcrun2005

        - task:
              name: winetricks
              app: vcrun2008

        # Disable Wine visual theme: prevents MDI child windows from rendering
        # with a semi-transparent background (desktop bleed-through).
        - task:
              name: set_regedit
              path: HKCU\Software\Microsoft\Windows\CurrentVersion\ThemeManager
              key: ThemeActive
              value: "0"
              type: REG_SZ

        # Write DXVK config: allowWindowedBackbuffer enables DXVK to present
        # into an MDI child HWND. maxFrameRate caps the frame rate.
        - write_file:
              file: $GAMEDIR/drive_c/Program Files (x86)/Trend/EEP6/dxvk.conf
              content: |
                  d3d9.allowWindowedBackbuffer = True
                  d3d9.maxFrameRate = 60
                  d3d9.countLosableResources = False

    system:
        env:
            WINEDLLOVERRIDES: "msvcr71,msvcp71=n"
            PROTON_USE_WINED3D: "0"
            DXVK_CONFIG_FILE: "$GAMEDIR/drive_c/Program Files (x86)/Trend/EEP6/dxvk.conf"
            GAMEID: "umu-eep6"
            UMU_STEAM_GAME_ID: "umu-eep6"

    wine:
        version: GE-Proton10-34-mdi-patch
        dxvk: true
        esync: true
        fsync: true
Mit freundlichen Grüßen
Sharky009 alias Pascal


Meine Homepage: https://www.sharky009.de
Hier finden sich alle Details zum verwendten PC und mehr

Simulationen: Transport Fever, Transport Fever 2, EEP 6(.1), EEP 7, Derail Valley
PC: AMD Ryzen 9 7900 @ 3.7GHz x 12; 128GB RAM; AMD Radeon RX 7900 XTX 24GB; Windows 11 Pro 64-bit
Notebook 1: Intel Core i7-4702MQ @ 2.2Ghz; 32GB RAM; Nvidia GeForce GT 750M 4GB; Windows 7 Ultimate 64-bit
Notebook 2: AMD Ryzen 9 5900HX @ 3.3Ghz x 8; 32GB RAM; AMD Radeon RX 6800M 12GB; Windows 11 Home 64-bit

Antworten