- สนับสนุนโครงการ! -
การสนับสนุนของคุณช่วยกระตุ้นการพัฒนาฟังก์ชัน dd7to9
เพื่อให้เกมเก่าๆ ทำงานได้อย่างราบรื่นบนแพลตฟอร์มปัจจุบัน ไม่ว่าจะเป็นการสนับสนุนเพียงครั้งเดียวผ่าน PayPal หรือการสนับสนุนอย่างต่อเนื่องทุกเดือนบน Patreon การมีส่วนร่วมของคุณจะช่วยรับประกันการปรับปรุงอย่างต่อเนื่องและความมุ่งมั่นต่อการเติบโตของโปรเจ็กต์ โปรดทราบว่าการสนับสนุนของคุณมีค่ามาก แต่จะไม่ส่งผลต่อการจัดลำดับความสำคัญของเกมโดยเฉพาะ เข้าร่วมกับเราในการเดินทางครั้งนี้!
สนับสนุนผ่าน PayPal | แพทเรียน
DxWrapper
การแนะนำ
DxWrapper เป็นไฟล์ .dll ที่ออกแบบมาเพื่อรวมไฟล์ DirectX เพื่อแก้ไขปัญหาความเข้ากันได้ในเกมรุ่นเก่า โปรเจ็กต์นี้มีเป้าหมายหลักเพื่อแก้ไขปัญหาเกี่ยวกับการรันเกมบน Windows 10/11 โดยเพียงแค่วางไฟล์ .dll และ .ini ลงในโฟลเดอร์เกม วัตถุประสงค์รองคือการนำเสนอเครื่องมือเดียวที่รวมหลายโครงการไว้ในที่เดียว
คุณสมบัติ
DxWrapper มีคุณสมบัติมากมาย ได้แก่:
- บูรณาการของ DDrawCompat
- การกำหนดค่าตัวเลือก DDrawCompat เพื่อปรับปรุงความเข้ากันได้
- การแปลง DirectDraw 1-6 เป็น DirectDraw 7
- การแปลง Direct3D 1-6 เป็น Direct3D 7
- การแปลง DirectDraw 1-7 (ddraw.dll) เป็น Direct3D 9 (d3d9.dll) โดยใช้ Dd7to9
- การแปลง Direct3D 1-7 (ddraw.dll) เป็น Direct3D 9 (d3d9.dll) โดยใช้ Dd7to9
- การแปลง Direct3D 8 (d3d8.dll) เป็น Direct3D 9 (d3d9.dll) โดยใช้ d3d8to9
- การแปลง DirectInput 1-7 (dinput.dll) เป็น DirectInput 8 (dinput8.dll) โดยใช้ dinputto8
- รวม LegacyD3DResolutionHack เพื่อลบขีดจำกัดความละเอียดเทียมจาก Direct3D 1-7 ซึ่งอนุญาตให้เกม DirectDraw เล่นที่ความละเอียด 4K
- การปรับแต่งการเรียกฟังก์ชัน Microsoft DirectSound โดยใช้ DSoundCtrl
- อาจทำให้เกม DirectDraw 1-7, Direct3D 8 และ Direct3D 9 ทำงานในโหมดหน้าต่างได้
- สามารถจำกัดอัตราเฟรมของเกมที่ใช้หรือแปลงเป็น Direct3D 9 ได้
- สามารถเปิดหรือปิดการซิงค์แนวตั้งในเกมที่ใช้หรือแปลงเป็น Direct3D 9
- สามารถตั้งค่า GraphicsHybridAdapter สำหรับ Direct3D 9 บนแล็ปท็อปที่มีการ์ดกราฟิกหลายตัว
- สามารถเปิดใช้งาน Direct3D9On12 สำหรับ Direct3D 9 ได้
- สามารถตั้งค่าการประมวลผลจุดสุดยอดและโหมดแคชเพื่อแก้ไขประสิทธิภาพในเกม Direct3D 9 บางเกมได้
- สามารถลบ scanlines ออกจากเกม DirectDraw 1-7 ได้
- สามารถปิดการใช้งาน MaximizedWindowedMode (การเพิ่มประสิทธิภาพแบบเต็มหน้าจอ) สำหรับเกม Direct3D 8 และ 9
- สามารถปิดใช้งานการปรับขนาด DPI สูงเพื่อแก้ไขปัญหากับบางเกมได้
- สามารถปิดการใช้งาน Microsoft Game Explorer (GameUX) เพื่อป้องกัน CPU สูง rundll32.exe
- สามารถปิดเสียงป๊อปและการคลิกที่เกิดจากเกมตัดเสียงขณะเล่นเสียงได้
- ตัวโหลด ASI เพื่อโหลดไลบรารีแบบกำหนดเองที่มีนามสกุลไฟล์ .asi เข้าสู่กระบวนการเกมโดยใช้ Ultimate ASI Loader
- รองรับการโหลดเป็นปลั๊กอิน ASI
- การเพิ่มการรองรับ AntiAliasing ในเกม Direct3D 8 หรือ 9 แม้ว่าเกมจะไม่รองรับก็ตาม
- รองรับหน่วยความจำ Hot Patch (อัปเดตหน่วยความจำเกม ณ รันไทม์ สามารถใช้เพื่อลบการตรวจสอบ CD/DVD หรือแก้ไขกราฟิกหรือข้อบกพร่องอื่นๆ)
- ตั้งค่าความสัมพันธ์ของ CPU เดี่ยว (บางเกมมีปัญหากับ CPU แบบมัลติคอร์)
- ความสามารถในการตั้งค่าตัวเลือกชุดเครื่องมือความเข้ากันได้ของแอปพลิเคชันทั้ง 12 รายการสำหรับ DXPrimaryEmulation โดยใช้ SetAppCompatData API
- ตั้งค่าหน้าต่างเกมเป็นแบบเต็มหน้าจอ (บางเกมมีปัญหาแบบเต็มหน้าจอ)
- การจัดการข้อยกเว้นหรือข้อขัดข้องในเกม
- โหลดไฟล์ .dll ที่กำหนดเองลงในเกม
- เรียกใช้กระบวนการแบบกำหนดเองเมื่อเริ่มเกม
รายการความเข้ากันได้สำหรับเกมบน Windows 10/11
จนถึงตอนนี้ ฉันได้ทดสอบสิ่งนี้กับเกมหลายร้อยเกม (หลายเกมทำงานไม่ถูกต้อง) เพื่อให้เกมเหล่านั้นทำงานบน Windows 10/11 เกมส่วนใหญ่จะใช้งานได้ แต่บางเกมยังคงมีปัญหาอยู่ ตรวจสอบวิกิเกมที่เข้ากันได้และวิกิเกมที่รองรับ Dd7to9 เพื่อดูรายการ
การติดตั้ง
- ดาวน์โหลดไบนารีรีลีสล่าสุดจากหน้า Release ของที่เก็บและแตกไฟล์ลงในโฟลเดอร์
- พิจารณาว่าไฟล์ stub .dll ใดที่จำเป็นสำหรับเกม ขึ้นอยู่กับปัจจัยหลายประการซึ่งจะอธิบายไว้ในหน้าที่สร้างในภายหลัง stub dll ทั่วไปที่จะใช้คือ
ddraw.dll
, d3d8.dll
, d3d9.dll
, dsound.dll
หรือ winmm.dll
คุณจะต้องเลือกไฟล์ stub เพียงไฟล์เดียวเพื่อโหลด dxwrapper เข้าสู่เกม - คัดลอกไฟล์ .dll นี้จากโฟลเดอร์ 'Stub' รวมทั้งไฟล์
dxwrapper.dll
และ dxwrapper.ini
ลงในไดเร็กทอรีการติดตั้งของเกม ถัดจากไฟล์ปฏิบัติการหลัก สำหรับบางเกม ไฟล์ปฏิบัติการหลักจะอยู่ในไดเร็กทอรีย่อย (เช่น 'Bin', 'Exe' หรือ 'App') ดังนั้นไฟล์ต่างๆ จะต้องได้รับการคัดลอกลงในไดเร็กทอรีนั้น ไม่แนะนำให้เขียนทับไฟล์เกมที่มีอยู่ - เปิดไฟล์
dxwrapper.ini
ในโปรแกรมแก้ไขข้อความและเปิดใช้งานการตั้งค่าที่จำเป็นสำหรับเกม
อย่าพยายามเขียนทับ .dll ใดๆ ในไดเร็กทอรีระบบ Windows เนื่องจากขณะนี้ยังไม่รองรับและจะไม่ทำงาน
การถอนการติดตั้ง
ลบไฟล์ 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
- version.dll
- wininet.dll
- winmm.dll
- winmmbase.dll
- winspool.drv
- wsock32.dll
ใบอนุญาต
ลิขสิทธิ์ (C) 2024 เอลีชา รีดลิงเกอร์
ซอฟต์แวร์นี้มีให้ 'ตามที่เป็น' โดยไม่มีการรับประกันโดยชัดแจ้งหรือโดยนัย ไม่ว่าในกรณีใดผู้เขียนจะไม่รับผิดชอบต่อความเสียหายใด ๆ ที่เกิดขึ้นจากการใช้ซอฟต์แวร์นี้ อนุญาตให้ใครก็ตามใช้ซอฟต์แวร์นี้เพื่อวัตถุประสงค์ใดๆ รวมถึงแอปพลิเคชันเชิงพาณิชย์ และแก้ไขและแจกจ่ายต่อได้อย่างอิสระ ภายใต้ข้อจำกัดต่อไปนี้:
- ที่มาของซอฟต์แวร์นี้ต้องไม่บิดเบือนความจริง คุณต้องไม่อ้างว่าคุณเขียนซอฟต์แวร์ต้นฉบับ หากคุณใช้ซอฟต์แวร์นี้ในผลิตภัณฑ์ การรับทราบในเอกสารประกอบของผลิตภัณฑ์จะถือเป็นเรื่องดี แต่ก็ไม่จำเป็น
- เวอร์ชันของแหล่งที่มาที่เปลี่ยนแปลงจะต้องมีการทำเครื่องหมายอย่างชัดเจน และจะต้องไม่บิดเบือนความจริงว่าเป็นซอฟต์แวร์ต้นฉบับ
- ประกาศนี้ไม่สามารถลบหรือเปลี่ยนแปลงจากการแจกจ่ายแหล่งใด ๆ
เครดิต
DxWrapper ใช้โค้ดจากโปรเจ็กต์อื่นๆ อีกหลายโปรเจ็กต์ ดังนั้นเพื่อให้เครดิตเมื่อถึงกำหนดชำระ ด้านล่างนี้คือรายการตำแหน่งที่ซอร์สโค้ดถูกนำมาจาก:
- AppCompatData: ใช้ความคิดเห็นจาก blitzbasic.com เพื่อสร้างคุณสมบัติเพื่อกำหนดการตั้งค่า DirectDraw AppCompatData
- ddwrapper ของ Aqrit: รวมโค้ดเพื่ออ่านไฟล์กำหนดค่า ini
- cnc-ddraw: รวมโค้ดเพื่อสร้างบริบทอุปกรณ์พื้นผิวจำลอง
- d3d8to9: รวมโค้ด Direct3D 8 ถึง Direct3D 9 แบบเต็ม
- D3DParseUnknownCommand: รวมโค้ดสำหรับ DirectDraw D3DParseUnknownCommand จากซอร์สโค้ดที่พบใน ReactOS
- DDrawCompat: รวม DDrawCompat v0.2.0b, v0.2.1 และ v0.3.2 เต็มรูปแบบ และสำหรับการเชื่อมต่อกับ API
- doom3.gpl: รวมโค้ดเพื่อรับหน่วยความจำวิดีโอ
- diablo-ddrawwrapper: รวมโค้ดบางส่วนสำหรับการแปลง ddraw เป็น Direct3D
- DSoundCtrl: รวมโค้ด DirectSoundControl แบบเต็ม
- DxWnd: รวมโค้ดจาก DxWnd สำหรับการโหลดพร็อกซี (init.cpp) และการจัดการข้อยกเว้น
- GetComputerManufacturer: รวมโค้ดจาก rohitab.com เพื่อรับผู้จำหน่ายและรุ่นคอมพิวเตอร์
- GetFileVersionInfo : รวมโค้ดจาก stackoverflow.com เพื่อรับเวอร์ชันของไฟล์ PE
- GetPPID: รวมโค้ดที่นำมาจากโครงการ mattn GitHub เพื่อรับ PID กระบวนการหลัก
- LegacyD3DResolutionHack: รวมโค้ดจาก LegacyD3DResolutionHack เพื่อลบขีดจำกัดความละเอียดปลอมจาก Direct3D 7 และต่ำกว่า
- MemoryModule: รวมโค้ดสำหรับการโหลดไลบรารีจากหน่วยความจำ
- OllyDbg: รวมโค้ด cmdlist.c และ disasm.c (disasm.dll) แบบเต็มที่ใช้สำหรับการจัดการข้อยกเว้น
- PixelShaderPalette: รวมโค้ดจาก ddraw-cnc สำหรับ PixelShader ที่ใช้ในการดูพื้นผิวจานสี DirectDraw อย่างถูกต้อง
- SilentPatchFarCry: รวมโค้ดจาก SilentPatchFarCry เพื่อแคชคลิปเพลนใน Direct3D 9
- Ultimate ASI Loader: รวมโค้ดสำหรับโหลดปลั๊กอิน ASI
- WineD3D d3d8.dll: รวมฟังก์ชัน ValidatePixelShader และ ValidateVertexShader
การพัฒนา
DxWrapper ส่วนใหญ่เขียนด้วยภาษา C++ โดยใช้ Microsoft Visual Studio 2022
โปรเจ็กต์ต้องการทั้ง Windows 10 SDK และ WDK (จำเป็นต้องติดตั้ง SDK และ WDK เวอร์ชันที่ตรงกัน) สามารถดูเวอร์ชันที่ต้องการได้ในคุณสมบัติของโครงการใน Visual Studio
ลิงก์ GitHub: https://github.com/elishacloud/dxwrapper
ขอบคุณที่แวะมา!