This was alluded to in #1172, but directx9 was removed;
directmusic calls devenum, which fails for wine64:
Executing /opt/oldwow64/wine-4.9/bin/wine64 regsvr32 /S devenum.dll
------------------------------------------------------
Note: command /opt/oldwow64/wine-4.9/bin/wine64 regsvr32 /S devenum.dll returned status 3. Aborting.
We only have 32-bit devenum, we need a 64-bit one to support it.
Edit: not directplay
Thinking about this, is devenum even supposed to be part of the directmusic verb (same could be said for dsound and quartz)?
Native dmusic depends on native dsound, but it doesn't seem right that it depends on quartz. Is there any record of why this dependency is there?
Doesn't look like it; that code was last changed in 26ae152d476d27ab2bbdc3c730442aac1f54dab3, before that the last change was when winetricks was imported from Google Code/Winezeug.
i'm utterly uninformed about this problem area but quartz doesn't seem important as far as getting background music playing in final fantasy 8 is concerned
per https://github.com/ValveSoftware/Proton/issues/696:
$ vim `which winetricks` # comment out the quartz line in directmusic
$ WINEPREFIX=".../pfx" winetricks directmusic
$ WINEPREFIX=".../pfx" winetricks winecfg
$ # set dsound to builtin
$ # FF8 music works
I suspect quartz and devenum should be removed from directmusic. Builtin devenum should also be good enough for native quartz these days, which is why I didn't add it to the 'directshow' verb. Definitely native directmusic shouldn't rely on devenum directly.
It would still be nice to find a 64-bit devenum somewhere, though.
@austin987 Was there ever a definitive answer for this? Maybe Michael Stefaniuc could offer some insight? (I vaguely remember this being discussed on IRC already)
I found a 64-bit devenum.dll in the Windows Server 2003 x64/Windows XP Professional X64 Edition Service Pack 2 installer. Extract "WindowsServer2003.WindowsXP-KB914961-SP2-x64-ENU.exe", then extract the cab file located at "\amd64\devenum.dl_". Using it in my 64-bit wineprefix to install quartz worked just fine.
I've removed devenum/quartz from directmusic, so that part of this is fixed.
The x64 SP2 does indeed have 64-bit devenum.dll, but not a 32-bit one, so we'll end up with a version mismatch. I'm not sure how much that will matter in practice, debating putting it in with a warning (echo, not w_warn) to that effect:
# 32-bit:
austin@laptop ~ $ wine filever devenum.dll
--a-- W32i DLL ENU 6.5.1.902 shp 132,608 05-30-2003 devenum.dll
# 64-bit:
austin@laptop ~ $ wine filever devenum.dll
--a-- W32 DLL ENU 6.5.3790.3959 shp 87,552 04-07-2020 devenum.dll
Thoughts?
I'm fine with warning.
Haven't tried it with an application, but here's a branch if someone can test:
https://github.com/austin987/winetricks/tree/devenum
@austin987
Status Legend:
(OK):download completed.
Executing cd /tmp/winetricks/src
Executing cabextract -q -d /home/mannyf/.steam/steam/steamapps/compatdata/384110//dosdevices/c:/windows/temp -L -F amd64/devenum.dl_ /home/mannyf/.cache/winetricks/winxp64sp2/WindowsServer2003.WindowsXP-KB914961-SP2-x64-ENU.exe
warning: the 32/64-bit dlls have different versions (32: 6.5.1.902 64: 6.5.3790.3959), couldn't find matching, may cause issues
Executing cabextract -q -d /home/mannyf/.steam/steam/steamapps/compatdata/384110//dosdevices/c:/windows/system32 -L -F /home/mannyf/.steam/steam/steamapps/compatdata/384110//dosdevices/c:/windows/temp/amd64/devenum.dl_
cabextract: No cabinet files specified.
Try 'cabextract --help' for more information.
------------------------------------------------------
Note: command cabextract -q -d /home/mannyf/.steam/steam/steamapps/compatdata/384110//dosdevices/c:/windows/system32 -L -F /home/mannyf/.steam/steam/steamapps/compatdata/384110//dosdevices/c:/windows/temp/amd64/devenum.dl_ returned status 1. Aborting.
@soredake sorry about that, I just (force) pushed a fix, please try again.
@austin987 fine with plain wine, fails with proton:
```
โฏ WINETRICKS=$PWD/winetricks protontricks 384110 devenum
Using winetricks 20191224-next - sha256sum: 5c80e68db3ae1923e16712424ef905ce79da4dd61b285efd68668db257e00c36 with wine-5.0-517-g21888ad and WINEARCH=win64
Executing w_do_call devenum
Executing load_devenum
Using native override for following DLLs: devenum
Executing /home/mannyf/.cache/protontricks/proton/Proton 5.0/bin/wine regedit C:\windows\Temp\override-dll.reg
wineserver: using server-side synchronization.
Executing /home/mannyf/.cache/protontricks/proton/Proton 5.0/bin/wine64 regedit C:\windows\Temp\override-dll.reg
001a:fixme:plugplay:pdo_pnp_dispatch Unhandled function 00000017
001a:fixme:plugplay:pdo_pnp_dispatch Unhandled function 00000002
wineserver: using server-side synchronization.
001a:fixme:plugplay:pdo_pnp_dispatch Unhandled function 00000017
001a:fixme:plugplay:pdo_pnp_dispatch Unhandled function 00000002
002a:err:seh:setup_exception stack overflow 1568 bytes in thread 002a eip 000000007bcda30d esp 0000000000950ff0 stack 0x950000-0x951000-0xb50000
Executing cabextract -q -d /home/mannyf/.steam/steam/steamapps/compatdata/384110/pfx/dosdevices/c:/windows/temp -L -F amd64/devenum.dl_ /home/mannyf/.cache/winetricks/winxp64sp2/WindowsServer2003.WindowsXP-KB914961-SP2-x64-ENU.exe
load_devenum(): warning: the 32/64-bit dlls have different versions (32: 6.5.1.902 64: 6.5.3790.3959), couldn't find matching, may cause issues
Executing cabextract -q -d /home/mannyf/.steam/steam/steamapps/compatdata/384110/pfx/dosdevices/c:/windows/system32 -L /home/mannyf/.steam/steam/steamapps/compatdata/384110/pfx/dosdevices/c:/windows/temp/amd64/devenum.dl_
Executing /home/mannyf/.cache/protontricks/proton/Proton 5.0/bin/wine64 regsvr32 devenum.dll
wineserver: using server-side synchronization.
0027:err:seh:setup_exception stack overflow 1552 bytes in thread 0027 eip 000000007bc986b4 esp 0000000000131000 stack 0x130000-0x131000-0x330000
001a:fixme:plugplay:pdo_pnp_dispatch Unhandled function 00000017
````
but file is here:
โฏ ls -l /home/mannyf/.steam/steam/steamapps/compatdata/384110/pfx/dosdevices/c:/windows/syswow64/devenum.dll
-rw-r--r-- 1 mannyf mannyf 5.2K Apr 12 11:11 /home/mannyf/.steam/steam/steamapps/compatdata/384110/pfx/dosdevices/c:/windows/syswow64/devenum.dll
8374.470:0036:0037:err:ole:COMPOBJ_DllList_Add couldn't load in-process dll L"C:\\windows\\system32\\devenum.dll"
8374.471:0036:0037:err:ole:CoGetClassObject no class object {62be5d10-60eb-11d0-bd3b-00a0c911ce86} could be created for context 0x1
8375.753:0036:0037:err:ole:COMPOBJ_DllList_Add couldn't load in-process dll L"C:\\windows\\system32\\devenum.dll"
8375.753:0036:0037:err:ole:CoGetClassObject no class object {4315d437-5b8c-11d0-bd3b-00a0c911ce86} could be created for context 0x3