? Unterstützen Sie das Projekt! ?
Ihre Unterstützung treibt die Entwicklung der dd7to9
Funktionalität voran, damit ältere Spiele reibungslos auf aktuellen Plattformen laufen. Ganz gleich, ob es sich um einen einmaligen Boost über PayPal oder eine fortlaufende monatliche Unterstützung auf Patreon handelt, Ihr Beitrag sorgt für kontinuierliche Verbesserungen und Engagement für das Wachstum des Projekts. Bitte beachten Sie, dass Ihre Unterstützung von unschätzbarem Wert ist, aber keinen Einfluss auf die Priorisierung bestimmter Spiele hat. Begleiten Sie uns auf dieser Reise!
Support über PayPal | Patreon
DxWrapper
Einführung
DxWrapper ist eine DLL-Datei zum Umschließen von DirectX-Dateien, um Kompatibilitätsprobleme in älteren Spielen zu beheben. Dieses Projekt zielt in erster Linie darauf ab, Probleme beim Ausführen von Spielen unter Windows 10/11 zu beheben, indem einfach DLL- und INI-Dateien im Spieleordner abgelegt werden. Sein sekundärer Zweck besteht darin, ein einziges Tool anzubieten, das mehrere Projekte in einem vereint.
Merkmale
DxWrapper bietet viele Funktionen, darunter:
- Integration von DDrawCompat
- Konfigurieren von DDrawCompat-Optionen zur Verbesserung der Kompatibilität
- Konvertierung von DirectDraw 1-6 zu DirectDraw 7
- Konvertierung von Direct3D 1-6 zu Direct3D 7
- Konvertierung von DirectDraw 1-7 (ddraw.dll) nach Direct3D 9 (d3d9.dll) mit Dd7to9
- Konvertierung von Direct3D 1-7 (ddraw.dll) nach Direct3D 9 (d3d9.dll) mit Dd7to9
- Konvertierung von Direct3D 8 (d3d8.dll) nach Direct3D 9 (d3d9.dll) mit d3d8to9
- Konvertierung von DirectInput 1-7 (dinput.dll) in DirectInput 8 (dinput8.dll) mit dinputto8
- Enthält LegacyD3DResolutionHack, um die künstliche Auflösungsbeschränkung von Direct3D 1–7 zu entfernen, wodurch DirectDraw-Spiele mit 4K-Auflösung abgespielt werden können
- Optimierung von Microsoft DirectSound-Funktionsaufrufen mit DSoundCtrl
- Kann dazu führen, dass DirectDraw 1-7-, Direct3D 8- und Direct3D 9-Spiele im Fenstermodus ausgeführt werden
- Kann die Bildrate von Spielen begrenzen, die Direct3D 9 verwenden oder darauf konvertiert werden
- Kann die vertikale Synchronisierung für Spiele aktivieren oder deaktivieren, die Direct3D 9 verwenden oder in Direct3D 9 konvertiert wurden
- Kann GraphicsHybridAdapter für Direct3D 9 auf Laptops mit mehreren Grafikkarten festlegen
- Kann Direct3D9On12 für Direct3D 9 aktivieren
- Kann Vertex-Verarbeitung und Cache-Modi festlegen, um die Leistung in einigen Direct3D 9-Spielen zu verbessern
- Kann Scanlines aus DirectDraw 1-7-Spielen entfernen
- Kann MaximizedWindowedMode (Vollbildoptimierungen) für Direct3D 8- und 9-Spiele deaktivieren
- Kann die hohe DPI-Skalierung deaktivieren, um Probleme mit einigen Spielen zu beheben
- Kann Microsoft Game Explorer (GameUX) deaktivieren, um eine hohe CPU-Auslastung von rundll32.exe zu verhindern
- Kann Audio-Pops und Klicks deaktivieren, die dadurch verursacht werden, dass Spiele den Ton abschneiden, während der Ton abgespielt wird
- ASI-Loader zum Laden benutzerdefinierter Bibliotheken mit der Dateierweiterung .asi in Spielprozesse mit Ultimate ASI Loader
- Unterstützt das Laden als ASI-Plug-in
- Hinzufügen von AntiAliasing-Unterstützung zu Direct3D 8- oder 9-Spielen, auch wenn das Spiel dies nicht unterstützt
- Hot-Patch-Speicherunterstützung (Aktualisierung des Spielspeichers zur Laufzeit, kann zum Entfernen von CD/DVD-Prüfungen oder zum Beheben von Grafik- oder anderen Störungen verwendet werden)
- Legen Sie die Affinität zu einer einzelnen CPU fest (einige Spiele haben Probleme mit Multi-Core-CPUs)
- Möglichkeit, alle 12 Application Compatibility Toolkit-Optionen für DXPrimaryEmulation mithilfe der SetAppCompatData-API festzulegen
- Stellen Sie das Spielfenster auf Vollbild ein (einige Spiele haben Probleme mit dem Vollbildmodus)
- Umgang mit Ausnahmen oder Abstürzen im Spiel
- Laden Sie benutzerdefinierte DLL-Dateien in Spiele
- Führen Sie beim Spielstart benutzerdefinierte Prozesse aus
Kompatibilitätsliste für Spiele unter Windows 10/11
Bisher habe ich dies mit Hunderten von Spielen (von denen viele sonst nicht richtig funktionieren) getestet, um sie unter Windows 10/11 zum Laufen zu bringen. Die meisten Spiele funktionieren, aber bei einigen treten immer noch Probleme auf. Eine Liste finden Sie im Wiki zu kompatiblen Spielen und im Wiki zu unterstützten Dd7to9-Spielen.
Installation
- Laden Sie die neueste Binärversion von der Release-Seite des Repositorys herunter und entpacken Sie sie in einen Ordner.
- Bestimmen Sie, welche Stub-DLL-Datei für das Spiel benötigt wird. Dies hängt von vielen Faktoren ab, die auf der später erstellten Seite erläutert werden. Häufig zu verwendende Stub-DLLs sind
ddraw.dll
, d3d8.dll
, d3d9.dll
, dsound.dll
oder winmm.dll
. Sie müssen nur eine Stub-Datei auswählen, um dxwrapper in das Spiel zu laden. - Kopieren Sie diese DLL-Datei aus dem Ordner „Stub“ sowie die Dateien
dxwrapper.dll
und dxwrapper.ini
in das Installationsverzeichnis des Spiels neben der ausführbaren Hauptdatei. Bei einigen Spielen befindet sich die ausführbare Hauptdatei in einem Unterverzeichnis (wie „Bin“, „Exe“ oder „App“), daher müssen die Dateien in dieses Verzeichnis kopiert werden. Das Überschreiben vorhandener Spieldateien wird nicht empfohlen. - Öffnen Sie die Datei
dxwrapper.ini
in einem Texteditor und aktivieren Sie die für das Spiel erforderlichen Einstellungen.
Versuchen Sie nicht, eine DLL in einem Windows-Systemverzeichnis zu überschreiben, da dies derzeit nicht unterstützt wird und nicht funktioniert.
Deinstallation
Löschen Sie die DxWrapper-DLL- und INI-Dateien aus dem Spielverzeichnis. Sie können die Protokolldatei auch löschen, sofern vorhanden.
Konfiguration
Um DxWrapper zu konfigurieren, bearbeiten Sie die .ini-Datei und aktivieren Sie die gewünschten Einstellungen. Weitere Informationen finden Sie im Konfigurations-Wiki.
Beispielkonfigurationsdatei: dxwrapper.ini.
Liste aller Konfigurationsoptionen: allsettings.ini
Protokollierung
Die Protokolldatei wird in demselben Ordner erstellt, in dem sich die ausführbare Datei des Spiels befindet. Es wird „dxwrapper“ genannt und der Name der ausführbaren Spieldatei wird daran angehängt. Wenn Sie also die Datei game.exe
ausführen, heißt die Protokolldatei dxwrapper-game.log
.
Unterstützte DLLs
DxWrapper kann die folgenden DLLs umschließen:
- bcrypt.dll
- cryptbase.dll
- cryptsp.dll
- d2d1.dll
- d3d8.dll
- d3d9.dll
- dciman32.dll
- ddraw.dll
- dinput.dll
- dinput8.dll
- dplayx.dll
- dsound.dll
- dwmapi.dll
- msacm32.dll
- msvfw32.dll
- version.dll
- wininet.dll
- winmm.dll
- winmmbase.dll
- winspool.drv
- wsock32.dll
Lizenz
Copyright (C) 2024 Elisha Riedlinger
Diese Software wird „wie besehen“ ohne jegliche ausdrückliche oder stillschweigende Garantie bereitgestellt. In keinem Fall haften die Autoren für Schäden, die durch die Verwendung dieser Software entstehen. Es wird jedem gestattet, diese Software für beliebige Zwecke, einschließlich kommerzieller Anwendungen, zu nutzen und sie zu verändern und frei weiterzuverbreiten, vorbehaltlich der folgenden Einschränkungen:
- Der Ursprung dieser Software darf nicht falsch dargestellt werden; Sie dürfen nicht behaupten, dass Sie die Originalsoftware geschrieben haben. Wenn Sie diese Software in einem Produkt verwenden, wäre eine Quellenangabe in der Produktdokumentation wünschenswert, aber nicht erforderlich.
- Geänderte Quellversionen müssen deutlich als solche gekennzeichnet sein und dürfen nicht fälschlicherweise als Originalsoftware dargestellt werden.
- Dieser Hinweis darf aus keiner Quelldistribution entfernt oder verändert werden.
Credits
DxWrapper verwendet Code aus mehreren anderen Projekten. Um die Anerkennung zu würdigen, finden Sie unten eine Liste der Orte, von denen der Quellcode stammt:
- AppCompatData: Kommentare von blitzbasic.com wurden verwendet, um die Funktion zum Konfigurieren der DirectDraw AppCompatData-Einstellungen zu erstellen.
- Aqrits ddwrapper: Enthält Code zum Lesen der INI-Konfigurationsdatei.
- cnc-ddraw: Enthält Code zum Erstellen eines emulierten Oberflächengerätekontexts.
- d3d8to9: Enthält den vollständigen Code von Direct3D 8 bis Direct3D 9.
- D3DParseUnknownCommand: Enthält Code für DirectDraw D3DParseUnknownCommand aus dem in ReactOS gefundenen Quellcode.
- DDrawCompat: Enthält den vollständigen DDrawCompat v0.2.0b, v0.2.1 und v0.3.2 sowie für API-Hooking.
- doom3.gpl: Enthält Code zum Abrufen von Videospeicher.
- diablo-ddrawwrapper: Enthält Code zum Konvertieren von ddraw in Direct3D.
- DSoundCtrl: Enthält den vollständigen DirectSoundControl-Code.
- DxWnd: Enthält Code von DxWnd für das Laden des Proxys (init.cpp) und die Ausnahmebehandlung.
- GetComputerManufacturer: Enthält Code von rohitab.com, um den Computerhersteller und das Computermodell abzurufen.
- GetFileVersionInfo: Enthält Code von stackoverflow.com zum Abrufen der Version einer PE-Datei.
- GetPPID: Enthält Code aus dem mattn-GitHub-Projekt, um die PID des übergeordneten Prozesses abzurufen.
- LegacyD3DResolutionHack: Enthält Code von LegacyD3DResolutionHack, um die künstliche Auflösungsbeschränkung von Direct3D 7 und niedriger zu entfernen.
- MemoryModule: Enthält Code zum Laden von Bibliotheken aus dem Speicher.
- OllyDbg: Enthält den vollständigen Code cmdlist.c und disasm.c (disasm.dll), der für die Ausnahmebehandlung verwendet wird.
- PixelShaderPalette: Enthält Code von ddraw-cnc für einen PixelShader, der verwendet wird, um die Oberflächen der DirectDraw-Palette ordnungsgemäß anzuzeigen.
- SilentPatchFarCry: Enthält Code von SilentPatchFarCry zum Zwischenspeichern der Clipebene in Direct3D 9.
- Ultimate ASI Loader: Enthält Code zum Laden von ASI-Plugins.
- WineD3D d3d8.dll: Enthält die Funktionen ValidatePixelShader und ValidateVertexShader.
Entwicklung
DxWrapper ist größtenteils in C++ unter Verwendung von Microsoft Visual Studio 2022 geschrieben.
Das Projekt erfordert sowohl das Windows 10 SDK als auch das WDK (es müssen entsprechende SDK- und WDK-Versionen installiert sein). Die genaue benötigte Version ist in den Projekteigenschaften in Visual Studio ersichtlich.
GitHub-Link: https://github.com/elishacloud/dxwrapper
Vielen Dank für Ihren Besuch!