? Soutenez le projet ! ?
Votre soutien alimente le développement de la fonctionnalité dd7to9
pour permettre aux anciens jeux de fonctionner correctement sur les plateformes actuelles. Qu'il s'agisse d'un coup de pouce ponctuel via PayPal ou d'un support mensuel continu sur Patreon, votre contribution garantit des améliorations continues et un engagement envers la croissance du projet. Veuillez noter que votre soutien est inestimable, mais il n'influencera pas la priorisation d'un jeu spécifique. Rejoignez-nous dans ce voyage !
Assistance via PayPal | Patréon
DxWrapper
Introduction
DxWrapper est un fichier .dll conçu pour envelopper des fichiers DirectX afin de résoudre les problèmes de compatibilité dans les jeux plus anciens. Ce projet vise principalement à résoudre les problèmes liés à l'exécution de jeux sous Windows 10/11, en déposant simplement les fichiers .dll et .ini dans le dossier du jeu. Son objectif secondaire est de proposer un outil unique regroupant plusieurs projets en un seul.
Caractéristiques
DxWrapper possède de nombreuses fonctionnalités, notamment :
- Intégration de DDrawCompat
- Configuration des options DDrawCompat pour améliorer la compatibilité
- Conversion de DirectDraw 1-6 en DirectDraw 7
- Conversion de Direct3D 1-6 en Direct3D 7
- Conversion de DirectDraw 1-7 (ddraw.dll) en Direct3D 9 (d3d9.dll) à l'aide de Dd7to9
- Conversion de Direct3D 1-7 (ddraw.dll) en Direct3D 9 (d3d9.dll) à l'aide de Dd7to9
- Conversion de Direct3D 8 (d3d8.dll) en Direct3D 9 (d3d9.dll) à l'aide de d3d8to9
- Conversion de DirectInput 1-7 (dinput.dll) en DirectInput 8 (dinput8.dll) à l'aide de dinputto8
- Inclut LegacyD3DResolutionHack pour supprimer la limite de résolution artificielle de Direct3D 1-7, ce qui permet aux jeux DirectDraw de jouer en résolution 4K
- Ajustement des appels de fonction Microsoft DirectSound à l'aide de DSoundCtrl
- Peut entraîner l'exécution des jeux DirectDraw 1-7, Direct3D 8 et Direct3D 9 en mode fenêtré
- Peut limiter la fréquence d'images des jeux utilisant ou convertis en Direct3D 9
- Peut activer ou désactiver la synchronisation verticale sur les jeux utilisant ou convertis en Direct3D 9
- Peut définir GraphicsHybridAdapter pour Direct3D 9 sur des ordinateurs portables équipés de plusieurs cartes graphiques
- Peut activer Direct3D9On12 pour Direct3D 9
- Peut définir le traitement des sommets et les modes de cache pour corriger les performances dans certains jeux Direct3D 9
- Peut supprimer les lignes de balayage des jeux DirectDraw 1-7
- Peut désactiver MaximizedWindowedMode (optimisations plein écran) pour les jeux Direct3D 8 et 9
- Peut désactiver la mise à l'échelle haute DPI pour résoudre les problèmes avec certains jeux
- Peut désactiver Microsoft Game Explorer (GameUX) pour empêcher rundll32.exe haute CPU
- Peut désactiver les pops et clics audio provoqués par les jeux coupant l'audio pendant la lecture du son
- Chargeur ASI pour charger des bibliothèques personnalisées avec l'extension de fichier .asi dans les processus de jeu à l'aide d'Ultimate ASI Loader
- Prend en charge le chargement en tant que plug-in ASI
- Ajout du support AntiAliasing dans les jeux Direct3D 8 ou 9 même si le jeu ne le prend pas en charge
- Prise en charge de la mémoire Hot Patch (mettre à jour la mémoire du jeu au moment de l'exécution, peut être utilisée pour supprimer les vérifications de CD/DVD ou résoudre les graphiques ou autres problèmes)
- Définir l'affinité d'un seul processeur (certains jeux ont des problèmes avec les processeurs multicœurs)
- Possibilité de définir les 12 options du kit d'outils de compatibilité des applications pour DXPrimaryEmulation à l'aide de l'API SetAppCompatData
- Réglez la fenêtre de jeu en plein écran (certains jeux ont des problèmes de plein écran)
- Gestion des exceptions ou des plantages dans le jeu
- Charger des fichiers .dll personnalisés dans les jeux
- Exécuter des processus personnalisés au démarrage du jeu
Liste de compatibilité pour les jeux sous Windows 10/11
Jusqu'à présent, j'ai testé cela avec des centaines de jeux (dont beaucoup ne fonctionnent pas correctement) pour les faire fonctionner sous Windows 10/11. La plupart des jeux fonctionneront, mais certains auront encore des problèmes. Consultez le wiki des jeux compatibles et le wiki des jeux pris en charge par Dd7to9 pour une liste.
Installation
- Téléchargez la dernière version binaire à partir de la page Release du référentiel et décompressez-la dans un dossier.
- Déterminez quel fichier stub .dll est nécessaire pour le jeu. Cela dépend de nombreux facteurs qui seront expliqués sur la page créée ultérieurement. Les DLL de stub courantes à utiliser sont
ddraw.dll
, d3d8.dll
, d3d9.dll
, dsound.dll
ou winmm.dll
. Il vous suffit de choisir un fichier stub pour charger dxwrapper dans le jeu. - Copiez ce fichier .dll du dossier « Stub » ainsi que les fichiers
dxwrapper.dll
et dxwrapper.ini
dans le répertoire d'installation du jeu, à côté du fichier exécutable principal. Pour certains jeux, l'exécutable principal se trouve dans un sous-répertoire (comme « Bin », « Exe » ou « App »), les fichiers devront donc être copiés dans ce répertoire. L'écrasement des fichiers de jeu existants n'est pas recommandé. - Ouvrez le fichier
dxwrapper.ini
dans un éditeur de texte et activez les paramètres nécessaires au jeu.
N'essayez pas d'écraser un fichier .dll dans un répertoire système Windows car il n'est actuellement pas pris en charge et ne fonctionnera pas.
Désinstallation
Supprimez les fichiers DxWrapper .dll et .ini du répertoire du jeu. Vous pouvez également supprimer le fichier journal, s'il existe.
Configuration
Pour configurer DxWrapper, modifiez le fichier .ini et activez les paramètres souhaités. Consultez le wiki de configuration pour plus de détails.
Exemple de fichier de configuration : dxwrapper.ini.
Liste de toutes les options de configuration : allsettings.ini
Enregistrement
Le fichier journal sera créé dans le même dossier où se trouve l'exécutable du jeu. Il sera nommé « dxwrapper » avec le nom de l'exécutable du jeu ajouté. Donc, si vous exécutez le fichier game.exe
, le fichier journal s'appellera dxwrapper-game.log
.
DLL prises en charge
DxWrapper peut envelopper les DLL suivantes :
- 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
Licence
Copyright (C) 2024 Élisée Riedlinger
Ce logiciel est fourni « tel quel », sans aucune garantie expresse ou implicite. En aucun cas, le ou les auteurs ne pourront être tenus responsables des dommages résultant de l'utilisation de ce logiciel. L'autorisation est accordée à toute personne d'utiliser ce logiciel à quelque fin que ce soit, y compris pour des applications commerciales, ainsi que de le modifier et de le redistribuer librement, sous réserve des restrictions suivantes :
- L'origine de ce logiciel ne doit pas être déformée ; vous ne devez pas prétendre que vous avez écrit le logiciel original. Si vous utilisez ce logiciel dans un produit, une mention dans la documentation du produit serait appréciée mais n'est pas obligatoire.
- Les versions sources modifiées doivent être clairement marquées comme telles et ne doivent pas être présentées à tort comme étant le logiciel original.
- Cet avis ne peut pas être supprimé ou modifié de toute distribution source.
Crédits
DxWrapper utilise le code de plusieurs autres projets. Donc, pour donner du crédit là où il est dû, vous trouverez ci-dessous une liste des emplacements d'où le code source a été extrait :
- AppCompatData : utilisation des commentaires de blitzbasic.com pour créer la fonctionnalité permettant de configurer les paramètres DirectDraw AppCompatData.
- Ddwrapper d'Aqrit : inclut le code pour lire le fichier de configuration ini.
- cnc-ddraw : inclut du code pour créer un contexte de périphérique de surface émulé.
- d3d8to9 : inclut le code complet de Direct3D 8 à Direct3D 9.
- D3DParseUnknownCommand : inclut le code pour DirectDraw D3DParseUnknownCommand à partir du code source trouvé dans ReactOS.
- DDrawCompat : inclut le DDrawCompat complet v0.2.0b, v0.2.1 et v0.3.2 et pour le hooking API.
- doom3.gpl : inclut le code pour obtenir de la mémoire vidéo.
- diablo-ddrawwrapper : inclut du code pour convertir ddraw en Direct3D.
- DSoundCtrl : inclut le code complet de DirectSoundControl.
- DxWnd : inclut le code de DxWnd pour le chargement du proxy (init.cpp) et la gestion des exceptions.
- GetComputerManufacturer : inclut le code de rohitab.com pour obtenir le fournisseur et le modèle de l'ordinateur.
- GetFileVersionInfo : inclut le code de stackoverflow.com pour obtenir la version d'un fichier PE.
- GetPPID : inclut le code extrait du projet mattn GitHub pour obtenir le PID du processus parent.
- LegacyD3DResolutionHack : inclut le code de LegacyD3DResolutionHack pour supprimer la limite de résolution artificielle de Direct3D 7 et versions antérieures.
- MemoryModule : inclut le code pour charger les bibliothèques à partir de la mémoire.
- OllyDbg : inclut le code complet cmdlist.c et disasm.c (disasm.dll) utilisé pour la gestion des exceptions.
- PixelShaderPalette : inclut le code de ddraw-cnc pour un PixelShader utilisé pour afficher correctement les surfaces de la palette DirectDraw.
- SilentPatchFarCry : inclut le code de SilentPatchFarCry pour mettre en cache le plan de découpage dans Direct3D 9.
- Ultimate ASI Loader : inclut le code pour charger les plugins ASI.
- WineD3D d3d8.dll : inclut les fonctions ValidatePixelShader et ValidateVertexShader.
Développement
DxWrapper est écrit principalement en C++ à l'aide de Microsoft Visual Studio 2022.
Le projet nécessite à la fois le SDK et le WDK de Windows 10 (les versions du SDK et du WDK correspondantes doivent être installées). La version exacte requise peut être consultée dans les propriétés du projet dans Visual Studio.
Lien GitHub : https://github.com/elishacloud/dxwrapper
Merci d'être passé !