https://bugs.winehq.org/show_bug.cgi?id=23523
--- Comment #19 from Adam Bolte abolte@systemsaviour.com --- Tried the freeware version under a real Windows 10 64-bit installation, and got the same error. I also noticed the freeware version uses SecuROM, whereas the full Steam version does not (AFAICT). The license expiration error is not a Wine bug, but a program error specific to the freeware version of the benchmark.
However there is a work-around for Wine - you can install faketime (along with libfaketime:i386 and libfaketime:amd64 if on a 64-bit system).
$ faketime '2008-10-28 06:30:00' bash $ export WINEARCH=win32 $ export WINEPREFIX=coj $ winecfg # Create the prefix with the correct timestamps and unlink all the folders. $ cp callofjuarez_official_dx10_benchmark.zip coj/drive_c/ $ cd coj/drive_c $ unzip callofjuarez_official_dx10_benchmark.zip $ wine "Call Of Juarez Official DX10 Benchmark.exe"
In the same terminal run:
$ wine "C:\Program Files\Call of Juarez DX10 Benchmark\CoJ_DX10.exe" fixme:winediag:start_process Wine Staging 2.7 is a testing version containing experimental patches. fixme:winediag:start_process Please mention your exact version when filing bug reports on winehq.org. err:rpc:I_RpcGetBuffer no binding Xlib: extension "AMDGPU" missing on display ":0.0". Xlib: extension "AMDGPU" missing on display ":0.0". Xlib: extension "AMDGPU" missing on display ":0.0". Xlib: extension "AMDGPU" missing on display ":0.0". Xlib: extension "AMDGPU" missing on display ":0.0". fixme:file:K32EnumPageFilesA (0xd30050, 0x17699e4) stub fixme:file:K32EnumPageFilesA (0xd30050, 0x1734300) stub fixme:userenv:GetProfileType 0x1781f80 fixme:ntdll:NtQueryInformationProcess (process=0xffffffff) Unimplemented information class: ProcessDeviceMap abolte@dragon:/mnt/gaming/wineprefixes/digital_downloads/call_of_juarez-dx10-benchmark/drive_c/Program Files/Call of Juarez DX10 Benchmark$
In this example I used Wine-Staging 2.7, but it's the same with regular Wine last I checked.
Note that if you run the game without faketime, it will never work again without creating a new prefix and reinstalling. I think it's the same thing if the timestamp is set too far back. The game will detect the date is wrong and offer to connect to an NTP server online to fix it - and at best you'll be back to the license expiration message. So be careful.
But this is all very different from the benchmark in the full game. The full game benchmark successfully opens a pop-up allowing the selection of resolution, audio, fullscreen mode, shadowmap, shadows quality and anti-aliasing options. After that it will crash if d3dcompiler_43 is not set to native. If d3dcompiler_43 is set, the benchmark will show a black window (I opted to run the benchmark in windowed mode) and the terminal will suddenly print thousands of errors like:
fixme:d3d10:d3d10_shader_reflection_GetResourceBindingDesc iface 0x20ca70, index 72223, desc 0x8bf44c stub! fixme:d3d10:d3d10_shader_reflection_GetResourceBindingDesc iface 0x20ca70, index 72224, desc 0x8bf44c stub! fixme:d3d10:d3d10_shader_reflection_GetResourceBindingDesc iface 0x20ca70, index 72225, desc 0x8bf44c stub!
This is in contrast to the free version, where installing d3dcompiler_43 into the prefix for that version makes absolutely no difference to the console output. There are two separate bugs for two different versions of the same benchmark.