elishacloud / dxwrapper

Fixes compatibility issues with older games running on Windows 10/11 by wrapping DirectX dlls. Also allows loading custom libraries with the file extension .asi into game processes.
zlib License
1.15k stars 82 forks source link

Understanding direct 3d 7?? #257

Closed astroskyoffical closed 1 month ago

astroskyoffical commented 4 months ago

Hello there! I'm attempting to bring life back to the game. X-com enforcer! When playing I can choose 3dfx. Direct3d and software! From my research the game apparently uses direct 3d7 but for some odd reason there is zero dll in the games system fold only this odd dll called. Drdrv.dll. This doesn't really tell much of anything I can do to get this working. Iv been using your dxwrapper in attempts at converting this game to a usable direct x version so I can then translate it to vulkan! I believe it's working just using the direct draw.dll but the speed is not there

My goal is to minimize the translation layers where I can and I'm running this on Android with a emulator called winulator that lets me run wine on my phone. My best total attempt as been using nglide to convert to direct x. Then use direct x to vulkan. On my winulator container. So far this produced the best fps speeds I've seen! I get at least 60 fps to 80! Really good! However this produced horrible audio crackling. But your dxwrapper makes the audio good! But your performance is not there! Am I missing something?

I'm using less translations with your wrapper by simply using direct 3d to. DXVK. Yet the speed is not there compared to nglide -direct x- dxvk which is basically 3 layers right?

Please give me some advice or understanding. I'm so close to making this game an amazing experience in a mobile phone and iv never felt happier but untill I can get better audio it's quite a chore.

elishacloud commented 4 months ago

From my research the game apparently uses direct 3d7 but for some odd reason there is zero dll in the games system fold only this odd dll called. Drdrv.dll.

This is normal. The game will load the Windows System32/SysWOW64 copy of the ddraw.dll/d3dim700.dll.

Note: If your copy of Windows is missing these dlls then you need to install them, see here.

Iv been using your dxwrapper in attempts at converting this game to a usable direct x version so I can then translate it to vulkan!

What options are you using in dxwrapper? Also, can you send me the log file?

astroskyoffical commented 4 months ago

From my research the game apparently uses direct 3d7 but for some odd reason there is zero dll in the games system fold only this odd dll called. Drdrv.dll.

This is normal. The game will load the Windows System32/SysWOW64 copy of the ddraw.dll/d3dim700.dll.

Note: If your copy of Windows is missing these dlls then you need to install them, see here.

Iv been using your dxwrapper in attempts at converting this game to a usable direct x version so I can then translate it to vulkan!

What options are you using in dxwrapper? Also, can you send me the log file?

hi thanks for getting back to me, my use is not exactly standard as im using this on android so theres a bit of overhead already for this. as for the settings I believe I selected d3d7to9 something like that. that seems a very obvious way of making this work. but its hard to tell if its doing anything honestly. where would the log file be located?

elishacloud commented 4 months ago

The log is in the game folder, the same folder that you place the dxwrapper files in. It should be called dxwrapper with the name of the game file and .log. So if the game executable is called Game.exe then the log file should be called dxwrapper-game.log.

astroskyoffical commented 4 months ago

ok here's my process starting from scratch. I install GOG x-com enforcer. I grab the dxwrapper I also put the configure stuff in there too where I can edit the INI file before starting the game. im running DXVK 2.2 which tends to just work for most games.

btw I use DX WRAPPER.dll and DX WRAPPER.INI and for the stub I choose. DDRAW.dll. idk if I need any other dlls for this. do I? all this is contained within the exe location for the game considering the game uses direct 3d 7 which is basically DDRAW. I think this is the right setup? im a bit clueless as you can tell. my settings before booting the game is DIRECT3D. it has software and 3dfx as an option too.

elishacloud commented 4 months ago

Yes, that sounds like the right setup. You are adding dxwrapper.dll, dxwrapper.ini and the stub ddraw.dll.

What settings are you configuring in the dxwrapper.ini? Also, can you see the log file?

astroskyoffical commented 4 months ago

here you GO! the only thing I enabled was direct3d7 to 9. its def working as the overlay reports the right DXVK. however speed is not the greatest just yet!
dxwrapper-xcom.log

elishacloud commented 4 months ago

From the log file I can tell it is using Direct3D7. Right now the support is still weak from Direct3D7 to Direct3D9. The speed issue is probably related to lack of mipmap support. Without mipmap support the texture will be much larger and can slow down the performance.

Have you tried dgVoodoo2?

astroskyoffical commented 4 months ago

From the log file I can tell it is using Direct3D7. Right now the support is still weak from Direct3D7 to Direct3D9. The speed issue is probably related to lack of mipmap support. Without mipmap support the texture will be much larger and can slow down the performance.

Have you tried dgVoodoo2?

id like to try DGVOODOO2 but my attempt at getting to work fail everytime. idk if you can help me with that but im assuming I must transfer all files in the MS x86 into the same location as the exe. then transfer the GLIDE files x86 in the same location as the exe. then configure file and program. ensure im using dxvk 2.2. then change the settings in the program to use 3dfx instead of direct3d? hope im making sense

astroskyoffical commented 4 months ago

From the log file I can tell it is using Direct3D7. Right now the support is still weak from Direct3D7 to Direct3D9. The speed issue is probably related to lack of mipmap support. Without mipmap support the texture will be much larger and can slow down the performance.

Have you tried dgVoodoo2? Screenshot_20240212-191730_Winlator

so here's the error I get trying to get DGVOODOO2 to run as I said above

astroskyoffical commented 4 months ago

I tested this on windows and it works perfectly on a very slow laptop, I understand that im using WINE to do this but yeah same config different outcome

astroskyoffical commented 4 months ago

Hey you mentioned mipmap. On one of my emulators there was mention of new mipmap support for the wow64 based mobox. Would this be the solution?

On Mon, Feb 12, 2024, 6:32 PM Elisha Riedlinger @.***> wrote:

From the log file I can tell it is using Direct3D7. Right now the support is still weak from Direct3D7 to Direct3D9. The speed issue is probably related to lack of mipmap support. Without mipmap support the texture will be much larger and can slow down the performance.

Have you tried dgVoodoo2?

— Reply to this email directly, view it on GitHub https://github.com/elishacloud/dxwrapper/issues/257#issuecomment-1939872553, or unsubscribe https://github.com/notifications/unsubscribe-auth/AYGGIIYTF7VIWQKA53CKUALYTKYB7AVCNFSM6AAAAABDFBXAEGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMZZHA3TENJVGM . You are receiving this because you authored the thread.Message ID: @.***>

elishacloud commented 4 months ago

if you can help me with that but im assuming I must transfer all files in the MS x86 into the same location as the exe.

You should just need the DDraw.dll and the D3DImm.dll files from the MS\x86 folder of dgVoodoo2. You don't want (or need) to use any other files from dgVoodoo2.

so here's the error I get trying to get DGVOODOO2 to run as I said above

Sounds like a bug in dgVoodoo2.

I tested this on windows and it works perfectly on a very slow laptop,

Are you saying that dxwrapper works perfectly on your laptop with this game but not running on your Android with the emulator?

Hey you mentioned mipmap. On one of my emulators there was mention of new mipmap support for the wow64 based mobox. Would this be the solution?

No, that won't help in this case. dxwrapper just ignores mipmap and so it will never be used when using dxwrapper.

elishacloud commented 1 month ago

Closing issue.