? 프로젝트를 지원하세요! ?
귀하의 지원은 기존 게임이 현재 플랫폼에서 원활하게 실행될 수 있도록 dd7to9
기능 개발을 촉진합니다. PayPal을 통한 일회성 후원이든 Patreon의 지속적인 월별 지원이든 여러분의 기여는 프로젝트 성장에 대한 지속적인 개선과 헌신을 보장합니다. 귀하의 지원은 매우 중요하지만 특정 게임 우선순위에 영향을 미치지는 않습니다. 이 여정에 함께 해주세요!
PayPal을 통한 지원 | 패트리온
DxWrapper
소개
DxWrapper는 이전 게임의 호환성 문제를 해결하기 위해 DirectX 파일을 래핑하도록 설계된 .dll 파일입니다. 이 프로젝트는 Windows 10/11에서 게임을 실행할 때 발생하는 문제를 해결하는 것을 주로 목표로 합니다. .dll 및 .ini 파일을 게임 폴더에 넣기만 하면 됩니다. 두 번째 목적은 여러 프로젝트를 하나로 결합한 단일 도구를 제공하는 것입니다.
특징
DxWrapper에는 다음과 같은 많은 기능이 있습니다.
- DDrawCompat 통합
- 호환성 향상을 위해 DDrawCompat 옵션 구성
- DirectDraw 1-6을 DirectDraw 7로 변환
- Direct3D 1-6을 Direct3D 7로 변환
- Dd7to9를 사용하여 DirectDraw 1-7(ddraw.dll)을 Direct3D 9(d3d9.dll)로 변환
- Dd7to9를 사용하여 Direct3D 1-7(ddraw.dll)을 Direct3D 9(d3d9.dll)로 변환
- d3d8to9를 사용하여 Direct3D 8(d3d8.dll)을 Direct3D 9(d3d9.dll)로 변환
- dinputto8을 사용하여 DirectInput 1-7(dinput.dll)을 DirectInput 8(dinput8.dll)로 변환
- Direct3D 1-7에서 인위적인 해상도 제한을 제거하는 LegacyD3DResolutionHack이 포함되어 있어 DirectDraw 게임을 4K 해상도에서 재생할 수 있습니다.
- DSoundCtrl을 사용하여 Microsoft DirectSound 함수 호출 조정
- DirectDraw 1-7, Direct3D 8 및 Direct3D 9 게임이 창 모드에서 실행될 수 있습니다.
- Direct3D 9를 사용하거나 Direct3D 9로 변환한 게임의 프레임 속도를 제한할 수 있습니다.
- Direct3D 9를 사용하거나 Direct3D 9로 변환한 게임에서 수직 동기화를 활성화 또는 비활성화할 수 있습니다.
- 여러 그래픽 카드가 있는 노트북에서 Direct3D 9용 GraphicsHybridAdapter를 설정할 수 있습니다.
- Direct3D 9에 대해 Direct3D9On12를 활성화할 수 있습니다.
- 일부 Direct3D 9 게임의 성능을 수정하기 위해 정점 처리 및 캐시 모드를 설정할 수 있습니다.
- DirectDraw 1-7 게임에서 스캔라인을 제거할 수 있습니다.
- Direct3D 8 및 9 게임에 대해 MaximizedWindowedMode(전체 화면 최적화)를 비활성화할 수 있습니다.
- 일부 게임의 문제를 해결하기 위해 높은 DPI 스케일링을 비활성화할 수 있습니다.
- rundll32.exe의 높은 CPU를 방지하기 위해 Microsoft Game Explorer(GameUX)를 비활성화할 수 있습니다.
- 사운드가 재생되는 동안 게임에서 오디오를 클리핑하여 발생하는 오디오 팝 및 클릭을 비활성화할 수 있습니다.
- Ultimate ASI Loader를 사용하여 파일 확장자가 .asi인 사용자 정의 라이브러리를 게임 프로세스에 로드하는 ASI 로더
- ASI 플러그인으로 로드 지원
- 게임이 지원하지 않는 경우에도 Direct3D 8 또는 9 게임에 앤티앨리어싱 지원 추가
- 핫 패치 메모리 지원(런타임에 게임 메모리 업데이트, CD/DVD 검사 제거, 그래픽 또는 기타 결함 해결에 사용할 수 있음)
- 단일 CPU 선호도 설정(일부 게임은 멀티 코어 CPU에 문제가 있음)
- SetAppCompatData API를 사용하여 DXPrimaryEmulation에 대한 12가지 Application Compatibility Toolkit 옵션을 모두 설정하는 기능
- 게임 창을 전체 화면으로 설정(일부 게임에는 전체 화면 문제가 있음)
- 게임 내 예외 또는 충돌 처리
- 사용자 정의 .dll 파일을 게임에 로드
- 게임 시작 시 사용자 정의 프로세스 실행
Windows 10/11 게임 호환성 목록
지금까지 Windows 10/11에서 실행되도록 수백 개의 게임(그 중 다수는 올바르게 작동하지 않음)을 사용하여 이를 테스트했습니다. 대부분의 게임은 작동하지만 일부 게임에는 여전히 문제가 있습니다. 목록은 호환 게임 위키와 Dd7to9 지원 게임 위키를 확인하세요.
설치
- 저장소의 릴리스 페이지에서 최신 바이너리 릴리스를 다운로드하고 폴더에 압축을 풉니다.
- 게임에 필요한 스텁 .dll 파일을 결정합니다. 이는 나중에 생성되는 페이지에서 설명할 여러 요소에 따라 달라집니다. 사용할 일반적인 스텁 dll은
ddraw.dll
, d3d8.dll
, d3d9.dll
, dsound.dll
또는 winmm.dll
입니다. dxwrapper를 게임에 로드하려면 하나의 스텁 파일만 선택하면 됩니다. - 'Stub' 폴더에 있는 이 .dll 파일과
dxwrapper.dll
및 dxwrapper.ini
파일을 게임 설치 디렉터리의 기본 실행 파일 옆에 복사하세요. 일부 게임의 경우 기본 실행 파일이 하위 디렉터리(예: 'Bin', 'Exe' 또는 'App')에 있으므로 파일을 해당 디렉터리에 복사해야 합니다. 기존 게임 파일을 덮어쓰는 것은 권장되지 않습니다. - 텍스트 편집기에서
dxwrapper.ini
파일을 열고 게임에 필요한 설정을 활성화합니다.
Windows 시스템 디렉터리의 .dll은 현재 지원되지 않으며 작동하지 않으므로 덮어쓰려고 시도하지 마십시오.
제거
게임 디렉터리에서 DxWrapper .dll 및 .ini 파일을 삭제합니다. 로그 파일이 있으면 삭제할 수도 있습니다.
구성
DxWrapper를 구성하려면 .ini 파일을 편집하고 원하는 설정을 활성화하십시오. 자세한 내용은 구성 위키를 참조하세요.
샘플 구성 파일: dxwrapper.ini.
모든 구성 옵션 목록: allsettings.ini
벌채 반출
로그 파일은 게임 실행 파일이 있는 폴더에 생성됩니다. 게임 실행 파일 이름이 추가된 'dxwrapper'라는 이름이 지정됩니다. 따라서 game.exe
파일을 실행 중인 경우 로그 파일은 dxwrapper-game.log
라고 합니다.
지원되는 DLL
DxWrapper는 다음 dll을 래핑할 수 있습니다:
- 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
- 버전.dll
- wininet.dll
- winmm.dll
- winmmbase.dll
- Winspool.drv
- wsock32.dll
특허
저작권 (C) 2024 엘리샤 리들링거
이 소프트웨어는 명시적이거나 묵시적인 보증 없이 '있는 그대로' 제공됩니다. 어떤 경우에도 작성자는 이 소프트웨어의 사용으로 인해 발생하는 손해에 대해 책임을 지지 않습니다. 다음 제한 사항에 따라 누구나 이 소프트웨어를 상업용 응용 프로그램을 포함하여 어떤 목적으로든 사용하고 자유롭게 변경하고 재배포할 수 있는 권한이 부여됩니다.
- 이 소프트웨어의 출처를 허위로 표시해서는 안 됩니다. 귀하는 원본 소프트웨어를 작성했다고 주장해서는 안 됩니다. 제품에 이 소프트웨어를 사용하는 경우 제품 설명서에 해당 내용을 명시하면 좋지만 필수는 아닙니다.
- 변경된 소스 버전은 이를 명백히 표시해야 하며 원본 소프트웨어인 것처럼 잘못 표시되어서는 안 됩니다.
- 이 공지는 어떤 소스 배포에서도 제거되거나 변경될 수 없습니다.
크레딧
DxWrapper는 다른 여러 프로젝트의 코드를 사용합니다. 따라서 크레딧이 필요한 곳에 크레딧을 제공하기 위해 소스 코드를 가져온 위치 목록은 다음과 같습니다.
- AppCompatData: blitzbasic.com의 주석을 사용하여 DirectDraw AppCompatData 설정을 구성하는 기능을 구축했습니다.
- Aqrit의 ddwrapper: ini 구성 파일을 읽는 코드가 포함되어 있습니다.
- cnc-ddraw: 에뮬레이트된 표면 장치 컨텍스트를 생성하는 코드를 포함합니다.
- d3d8to9: 전체 Direct3D 8에서 Direct3D 9 코드를 포함합니다.
- D3DParseUnknownCommand: ReactOS에 있는 소스 코드의 DirectDraw D3DParseUnknownCommand에 대한 코드를 포함합니다.
- DDrawCompat: API 후킹을 위한 전체 DDrawCompat v0.2.0b, v0.2.1 및 v0.3.2를 포함합니다.
- doom3.gpl: 비디오 메모리를 가져오는 코드가 포함되어 있습니다.
- diablo-ddrawwrapper: ddraw를 Direct3D로 변환하기 위한 일부 코드가 포함되어 있습니다.
- DSoundCtrl: 전체 DirectSoundControl 코드를 포함합니다.
- DxWnd: 프록시 로딩(init.cpp) 및 예외 처리를 위한 DxWnd의 코드를 포함합니다.
- GetComputerManufacturer: 컴퓨터 공급업체 및 모델을 가져오는 rohitab.com의 코드를 포함합니다.
- GetFileVersionInfo : PE 파일 버전을 가져오기 위한 stackoverflow.com의 코드를 포함합니다.
- GetPPID: 상위 프로세스 PID를 가져오기 위해 mattn GitHub 프로젝트에서 가져온 코드를 포함합니다.
- LegacyD3DResolutionHack: Direct3D 7 이하에서 인위적인 해상도 제한을 제거하기 위해 LegacyD3DResolutionHack의 코드를 포함합니다.
- MemoryModule: 메모리에서 라이브러리를 로드하기 위한 코드가 포함되어 있습니다.
- OllyDbg: 예외 처리에 사용되는 전체 cmdlist.c 및 disasm.c(disasm.dll) 코드를 포함합니다.
- PixelShaderPalette: DirectDraw 팔레트 표면을 올바르게 보는 데 사용되는 PixelShader에 대한 ddraw-cnc의 코드를 포함합니다.
- SilentPatchFarCry: Direct3D 9에서 클립 평면을 캐시하는 SilentPatchFarCry의 코드를 포함합니다.
- Ultimate ASI Loader: ASI 플러그인을 로드하기 위한 코드가 포함되어 있습니다.
- WineD3D d3d8.dll: ValidatePixelShader 및 ValidateVertexShader 기능을 포함합니다.
개발
DxWrapper는 Microsoft Visual Studio 2022를 사용하여 대부분 C++로 작성되었습니다.
프로젝트에는 Windows 10 SDK와 WDK가 모두 필요합니다(일치하는 SDK 및 WDK 버전이 설치되어 있어야 함). 필요한 정확한 버전은 Visual Studio의 프로젝트 속성에서 확인할 수 있습니다.
GitHub 링크: https://github.com/elishacloud/dxwrapper
들러주셔서 감사합니다!