FNA-XNA / FAudio

FAudio - Accuracy-focused XAudio reimplementation for open platforms
https://fna-xna.github.io/
Other
536 stars 72 forks source link

Implement FAPOFX #40

Open flibitijibibo opened 5 years ago

flibitijibibo commented 5 years ago

I just finished stubbing in the four effects provided by XAPOFX:

https://github.com/FNA-XNA/FAudio/commit/12a918bc86e135b064d043366a19fabd7869c0d1

This will improve compatibility with games that depend on it, but note that I have NOT implemented the XAPOFX DLLs. I've found that the X3DAudio DLL has given us more than enough trouble to warrant putting that off deliberately until we have something that can actively go out for use in something like Proton, so for this we'll do that after everything else is written.

Here's the checklist:

Here's the MSDN documentation for XAPOFX.

flibitijibibo commented 5 years ago

If you need the CLSIDs for XAPOFX, you can find them here (sorry Johan!):

https://github.com/ValveSoftware/wine/blob/proton_3.7/include/xapofx.h

GloriousEggroll commented 5 years ago

Heya, just wanted to add on to this, these DLLs are needed for quite a few games including some that have already been whitelisted by steam (Wolfenstein: TNO/TOB). I went to test the WMA PR in warframe, and came across it wanting xapofx1_5. I then removed the xapofx dlls from being set as native, and came across this:

3.652 Sys [Info]: S0009:err:ole:COMPOBJ_DllList_Add couldn't load in-process dll L"C:\\windows\\system32\\xaudio2_7.dll"
p0009:err:ole:CoGetClassObject no class object {5a508685-a254-4fba-9b82-9a24b00306af} could be created for context 0x1

which upon further searching, lead me to this old bug report which had been fixed by a stub:

https://bugs.winehq.org/show_bug.cgi?id=26808

obviously you know a "lot of games" need these, not trying to beat a dead horse. I'm just mentioning in particular because some of those games are whitelisted on steam play.

flibitijibibo commented 5 years ago

Much like X3DAudio I’m recommending the DXSDK version of XAPOFX for now - they should be compatible with FAudio and its COM wrapper. Implement the effects first, then we can talk about the DLL.

flibitijibibo commented 5 years ago

As of this commit the DLL should be a one-line function:

https://github.com/FNA-XNA/FAudio/commit/a3d804da8fdec5b3bc7a5b58ed6111539fdb20af

Still not making it until the rest is finished but it helps make the last step really quick.

flibitijibibo commented 5 years ago

While looking at the Wine built-in path again I ended up implementing the source, which should work as a native DLL. No project files though, so this is solely to fix up the built-ins:

https://github.com/FNA-XNA/FAudio/commit/260dd901481509a9d13082e6d9fc77f4765e8c87

flibitijibibo commented 5 years ago

Ended up adding XAPOFX for Warframe as well...

https://github.com/FNA-XNA/FAudio/commit/7035cc5833ce2fac5be795d2010ff885499160cf

So it's just the Visual Studio projects that's left. Thankfully nobody but me and XNA4 people have VS2010 anymore, so surely this won't get done before the actual code...?!