https://bugs.winehq.org/show_bug.cgi?id=44489
Bug ID: 44489 Summary: Zwei: The Arges Adventure can't detect installed Indeo 5 codec Product: Wine Version: 3.1 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: msvfw32 Assignee: wine-bugs@winehq.org Reporter: kq3thih@mailnesia.com Distribution: Debian
Created attachment 60444 --> https://bugs.winehq.org/attachment.cgi?id=60444 +msvid,+relay log - 7.2M
The game uses Indeo 5 encoded videos. It attempts to detect if the codec is installed. If it fails then it disables video playback.
winetricks -q icodecs and it still fails to see the IV50 codec installed. From the attached +relay trace:
--- snip --- 002b:Call msvfw32.ICInfo(00000000,00000003,003359f4) ret=00bc2470 002b:trace:msvideo:ICInfo (0x00000000,0x00000003,0x3359f4) 002b:Call advapi32.RegOpenKeyExA(80000002,7d78a9ac "Software\Microsoft\Windows NT\CurrentVersion\Drivers32",00000000,00000001,00334f08) ret=7d7846af 002b:Ret advapi32.RegOpenKeyExA() retval=00000000 ret=7d7846af 002b:Call advapi32.RegEnumValueA(000000f0,00000000,00334f20,00334f0c,00000000,00334f14,00334f2a,00334f10) ret=7d78478f 002b:Ret advapi32.RegEnumValueA() retval=000000ea ret=7d78478f 002b:Call advapi32.RegEnumValueA(000000f0,00000001,00334f20,00334f0c,00000000,00334f14,00334f2a,00334f10) ret=7d78478f 002b:Ret advapi32.RegEnumValueA() retval=00000000 ret=7d78478f 002b:Call winmm.mmioStringToFOURCCA(00334f25 "iv31=ir32_32.dll",00000000) ret=7d7845c5 002b:Ret winmm.mmioStringToFOURCCA() retval=31337669 ret=7d7845c5 002b:Call advapi32.RegEnumValueA(000000f0,00000002,00334f20,00334f0c,00000000,00334f14,00334f2a,00334f10) ret=7d78478f 002b:Ret advapi32.RegEnumValueA() retval=00000000 ret=7d78478f 002b:Call winmm.mmioStringToFOURCCA(00334f25 "iv32=ir32_32.dll",00000000) ret=7d7845c5 002b:Ret winmm.mmioStringToFOURCCA() retval=32337669 ret=7d7845c5 002b:Call advapi32.RegEnumValueA(000000f0,00000003,00334f20,00334f0c,00000000,00334f14,00334f2a,00334f10) ret=7d78478f 002b:Ret advapi32.RegEnumValueA() retval=00000000 ret=7d78478f 002b:Call winmm.mmioStringToFOURCCA(00334f25 "iv41=ir41_32.ax",00000000) ret=7d7845c5 002b:Ret winmm.mmioStringToFOURCCA() retval=31347669 ret=7d7845c5 002b:Call advapi32.RegEnumValueA(000000f0,00000004,00334f20,00334f0c,00000000,00334f14,00334f2a,00334f10) ret=7d78478f 002b:Ret advapi32.RegEnumValueA() retval=00000000 ret=7d78478f 002b:Call winmm.mmioStringToFOURCCA(00334f25 "iv50=ir50_32.dll",00000000) ret=7d7845c5 002b:Ret winmm.mmioStringToFOURCCA() retval=30357669 ret=7d7845c5 002b:Call KERNEL32.MultiByteToWideChar(00000000,00000000,00334f2a "ir50_32.dll",ffffffff,00335b2c,00000080) ret=7d784620 002b:Ret KERNEL32.MultiByteToWideChar() retval=0000000c ret=7d784620 002b:Call advapi32.RegCloseKey(000000f0) ret=7d784924 002b:Ret advapi32.RegCloseKey() retval=00000000 ret=7d784924 002b:Ret msvfw32.ICInfo() retval=00000001 ret=00bc2470 002b:Call msvfw32.ICOpen(00000000,30357669,00000003) ret=00bc2400 002b:trace:msvideo:ICOpen (0x00000000,iv50,0x00000003) 002b:Call winmm.OpenDriver(00335524 L"",7d78bae4 L"drivers32",00335538) ret=7d786cb7 002b:Call advapi32.RegOpenKeyExW(80000002,7dfa27e0 L"Software\Microsoft\Windows NT\CurrentVersion",00000000,00000001,00335234) ret=7df86dc6 002b:Ret advapi32.RegOpenKeyExW() retval=00000000 ret=7df86dc6 002b:Call advapi32.RegOpenKeyExW(000000f0,7d78bae4 L"drivers32",00000000,00000001,00335238) ret=7df86e14 002b:Ret advapi32.RegOpenKeyExW() retval=00000000 ret=7df86e14 002b:Call advapi32.RegQueryValueExW(000000f4,00335524 L"",00000000,00000000,00335286,0033523c) ret=7df86ee7 002b:Ret advapi32.RegQueryValueExW() retval=00000002 ret=7df86ee7 002b:Call advapi32.RegCloseKey(000000f4) ret=7df86ef4 002b:Ret advapi32.RegCloseKey() retval=00000000 ret=7df86ef4 002b:Call advapi32.RegCloseKey(000000f0) ret=7df86efc 002b:Ret advapi32.RegCloseKey() retval=00000000 ret=7df86efc 002b:Call KERNEL32.GetPrivateProfileStringW(7d78bae4 L"drivers32",00335524 L"",00335232 L"",00335286,00000105,7dfa2774 L"SYSTEM.INI") ret=7df86df6 002b:Ret KERNEL32.GetPrivateProfileStringW() retval=00000000 ret=7df86df6 002b:Ret winmm.OpenDriver() retval=00000000 ret=7d786cb7 002b:Ret msvfw32.ICOpen() retval=00000000 ret=00bc2400 --- snip ---
Zwei is calling ICInfo() and ICOpen() with fccType set to 0x0. According to MSDN zero should match all compressor types. I'm not familiar with the code, but Wine does not appear to treat zero as special. Forcing fccType to 0x63646976 (vidc), which is correct for IV50, allows Wine to load the codec and the game to start the video if somewhat brokenly. Though that would be a different bug.