I downloaded the wine5 source and built it locally (the WoW64 version) For whatever reason, this locally built wine5 is able to run the patch and the game (unlike the winehq-stable 5.0 package which caused it to segfault). Still no music though
I generated a log with the following debug flags:
Code: Select all
WINEDEBUG=+winmm,+mci,+module,+loaddll,+seh,+tid wine ffstart.exe 2>&1 | tee ~/wine5_ff.log
Looking at the mci messages in particular:
Code: Select all
:~/.wine/dosdevices/d:$ grep mci ~/wine5_ff.log
0031:trace:mci:mciSendCommandA (00000000, MCI_OPEN, 00002002, 0032fe0c)
0031:trace:mci:mciSendCommandW (00000000, MCI_OPEN, 00002002, 027ba2b4)
0031:trace:mci:MCI_Open (00002002, 027BA2B4)
0031:trace:mci:MCI_Open devType=L"cdaudio" !
0031:trace:mci:MCI_LoadMciDriver wDevID=0001
0031:trace:module:load_dll looking for L"mcicda.dll" in L"C:\\users\\mkaushik\\Temp;C:\\windows\\system32;C:\\windows\\system;C:\\windows;.;C:\\windows\\system32;C:\\windows;C:\\windows\\system32\\wbem;C:\\windows\\system32\\WindowsPowershell\\v1.0"
0031:trace:module:get_load_order looking for L"C:\\windows\\system32\\mcicda.dll"
0031:trace:module:get_load_order got hardcoded default for L"mcicda.dll"
0031:trace:module:load_dll L"\\??\\C:\\windows\\system32\\mcicda.dll" is a fake Wine dll
0031:trace:module:load_builtin_dll Trying built-in L"mcicda.dll"
0031:trace:module:load_so_dll loading L"\\??\\C:\\windows\\system32\\mcicda.dll" from so lib "/usr/local/bin/../lib/wine/mcicda.dll.so"
0031:trace:module:load_builtin_callback loaded mcicda.dll 0x27bda10 0x7d4c0000
0031:trace:loaddll:load_so_dll Loaded L"C:\\windows\\system32\\mcicda.dll" at 0x7d4c0000: builtin
0031:trace:module:load_dll Loaded module L"\\??\\C:\\windows\\system32\\mcicda.dll" at 0x7d4c0000
0031:trace:module:process_attach (L"mcicda.dll",(nil)) - START
0031:trace:module:MODULE_InitDLL (0x7d4c0000 L"mcicda.dll",PROCESS_ATTACH,(nil)) - CALL
0031:trace:module:process_attach (L"mcicda.dll",(nil)) - END
0031:trace:module:load_dll looking for L"mcicda.dll" in L"C:\\users\\mkaushik\\Temp;C:\\windows\\system32;C:\\windows\\system;C:\\windows;.;C:\\windows\\system32;C:\\windows;C:\\windows\\system32\\wbem;C:\\windows\\system32\\WindowsPowershell\\v1.0"
0031:trace:module:load_dll Found L"C:\\windows\\system32\\mcicda.dll" for L"mcicda.dll" at 0x7d4c0000, count=2
0031:trace:mci:mciSetDriverData (0001, 027bd9b0)
0031:trace:mci:MCI_LoadMciDriver Loaded driver 027BD988 (L"CDAUDIO"), type is 516, cmdTable=0000ffff
0031:trace:mci:MCI_LoadMciDriver mcidev=1, uDevTyp=0204 wDeviceID=0001 !
0031:trace:mci:mciGetDriverData (0001)
0031:trace:mci:MCI_Open wDevID=0001 wDeviceID=1 dwRet=0
0031:trace:mci:mciSendCommandW => 00000000
0031:trace:mci:mciSendCommandA (00000001, MCI_STATUS, 00000102, 0032fdfc)
0031:trace:mci:mciSendCommandW (00000001, MCI_STATUS, 00000102, 0032fdfc)
0031:trace:mci:mciGetDriverData (0001)
0031:trace:mci:mciSendCommandW => 00000000
0031:trace:mci:mciSendCommandA (00000001, MCI_STATUS, 00000112, 0032fde8)
0031:trace:mci:mciSendCommandW (00000001, MCI_STATUS, 00000112, 0032fde8)
0031:trace:mci:mciGetDriverData (0001)
0031:trace:mci:mciSendCommandW => 00000000
0031:trace:mci:mciSendCommandA (00000001, MCI_CLOSE, 00000002, 0032fdf8)
0031:trace:mci:mciSendCommandW (00000001, MCI_CLOSE, 00000002, 0032fdf8)
0031:trace:mci:MCI_Close (0001, 00000002, 0032FDF8)
0031:trace:mci:mciGetDriverData (0001)
0031:trace:mci:mciGetDriverData (0001)
0031:trace:mci:mciGetDriverData (0001)
0031:trace:mci:mciSetDriverData (0001, 00000000)
0031:trace:mci:mciGetDriverData (ffffffff)
0031:warn:mci:mciGetDriverData Bad uDeviceID
0031:trace:module:LdrUnloadDll (L"mcicda.dll") - START
0031:trace:module:MODULE_DecRefCount (L"mcicda.dll") ldr.LoadCount: 1
0031:trace:module:LdrUnloadDll (L"mcicda.dll") - START
0031:trace:module:MODULE_DecRefCount (L"mcicda.dll") ldr.LoadCount: 0
0031:trace:module:MODULE_InitDLL (0x7d4c0000 L"mcicda.dll",PROCESS_DETACH,(nil)) - CALL
0031:trace:module:free_modref unloading L"C:\\windows\\system32\\mcicda.dll"
0031:trace:mci:mciSendCommandW => 00000000
0031:trace:mci:mciSendCommandA (00000001, MCI_STOP, 00000002, 0032f540)
0031:trace:mci:mciSendCommandW (00000001, MCI_STOP, 00000002, 0032f540)
0031:trace:mci:mciSendCommandW => 00000101
0031:trace:mci:mciSendCommandA (00000001, MCI_CLOSE, 00000002, 0032f540)
0031:trace:mci:mciSendCommandW (00000001, MCI_CLOSE, 00000002, 0032f540)
0031:trace:mci:MCI_Close (0001, 00000002, 0032F540)
0031:trace:mci:mciSendCommandW => 00000101
0031:trace:mci:mciSendCommandA (00000001, MCI_STOP, 00000002, 0032fe44)
0031:trace:mci:mciSendCommandW (00000001, MCI_STOP, 00000002, 0032fe44)
0031:trace:mci:mciSendCommandW => 00000101
0031:trace:mci:mciSendCommandA (00000001, MCI_CLOSE, 00000002, 0032fe44)
0031:trace:mci:mciSendCommandW (00000001, MCI_CLOSE, 00000002, 0032fe44)
0031:trace:mci:MCI_Close (0001, 00000002, 0032FE44)
0031:trace:mci:mciSendCommandW => 00000101
So the game just opens the device, queries the status and probably doesn't like what it receives, then closes the device
I'll try building winmm.dll.so with debug information and then maybe gdb can show me the contents of the status it's sending.
The full log is attached.