[Bug 36452] Age of Mythology: Extended Edition (Steam) fails to start

wine-bugs at winehq.org wine-bugs at winehq.org
Sun May 18 07:15:41 CDT 2014


http://bugs.winehq.org/show_bug.cgi?id=36452

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |DUPLICATE

--- Comment #16 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

I bought the game off Steam on a whim otherwise this ping-pong log approach is
just painful (and wastes my time in the end).

Starting off with Wine 1.7.19 and with your "launcher replacement" ...

--- snip ---
$ WINEDEBUG=+tid,+seh,+relay,+debugstr,+msgbox wine ./steam.exe -applaunch
266840 -no-dwrite -nominidumps -windowed -nobreakpad >>log.txt 2>&1
...
005a:Call KERNEL32.GetVersionExW(0033f544) ret=005928fb
005a:Ret  KERNEL32.GetVersionExW() retval=00000001 ret=005928fb
005a:Call KERNEL32.InterlockedExchange(00b74f8c,7b82179c) ret=009541db
005a:Ret  KERNEL32.InterlockedExchange() retval=00953349 ret=009541db
005a:Call KERNEL32.CreateSemaphoreW(00000000,00000001,00000001,00a66af0
L"Global\\BCoreSingleInstanceSemaphore") ret=005486c3
005a:Ret  KERNEL32.CreateSemaphoreW() retval=00000184 ret=005486c3
005a:Call KERNEL32.WaitForSingleObject(00000184,00000000) ret=005486da
005a:Ret  KERNEL32.WaitForSingleObject() retval=00000000 ret=005486da
005a:Call msvcr110.memset(0033e64c,00000000,00000800) ret=005d2dce
005a:Ret  msvcr110.memset() retval=0033e64c ret=005d2dce
005a:Call msvcr110.wcscpy_s(00b79fe0,0000fffe,02fe5fc0 L"19968") ret=0054baa8
005a:Ret  msvcr110.wcscpy_s() retval=00000000 ret=0054baa8
005a:Call msvcr110.memcpy(0033ee54,02fe5fc0,0000000a) ret=004ef388
005a:Ret  msvcr110.memcpy() retval=0033ee54 ret=004ef388
005a:Call msvcr110.wcscpy_s(00b79fe0,0000fffe,06e7e940 L"Initialization
Failed\n%s") ret=0054bb0f
005a:Ret  msvcr110.wcscpy_s() retval=00000000 ret=0054bb0f
005a:Call msvcr110.memcpy(031bd260,00b79fe0,00000030) ret=00523b83
005a:Ret  msvcr110.memcpy() retval=031bd260 ret=00523b83
005a:Call msvcr110.memcpy(031bd260,0033ef08,000000be) ret=00523b83
005a:Ret  msvcr110.memcpy() retval=031bd260 ret=00523b83
005a:Call KERNEL32.InterlockedExchange(00b75090,7ebfda48) ret=009541db
005a:Ret  KERNEL32.InterlockedExchange() retval=00952c91 ret=009541db
005a:Call user32.MessageBoxW(00000000,0033ef08 L"Initialization
Failed\nBCore::init() failed. This is likely due to failure of Windows OS
checks.",009ff56c L"Age of Mythology",00001010) ret=004685c2 
...
--- snip ---

Not seen in trace (but debugging): there is a check for OS info 'dwMajorVersion
< 6'.

After setting the prefix' WinVer to 'Windows Vista' it runs further.
Well, one could have known that.

Steam specs for the game: http://store.steampowered.com/app/266840/

--- snip ---
Minimum:

     OS: Windows Vista, 7, 8.1+
     ...
     Graphics: Direct X 10+ Capable GPU 
     DirectX: Version 10

Recommended:

     OS: Windows 7, 8.1+ 
     ...
     Graphics: Direct X 11+
     DirectX: Version 11 
--- snip ---

The original 'Launcher.exe' which got replaced by 'aomx.exe' references Vista+
registry APIs which is another indication of such requirement:

--- snip ---
   8. ImageImportDescriptor:
    OriginalFirstThunk:  0x00007910
    TimeDateStamp:       0x00000000  (GMT: Thu Jan 01 00:00:00 1970)
    ForwarderChain:      0x00000000
    Name:                0x000084F0  ("ADVAPI32.dll")
    FirstThunk:          0x00005000

    Ordinal/Hint API name
    ------------ ---------------------------------------
    0x02A2       "RegSetKeyValueA"
...
    0x026A       "RegDeleteKeyValueA"
...
--- snip ---

-> bug 32711 ("Multiple applications crash on unimplemented function
ADVAPI32.dll.RegSetKeyValueA/W (Vista+ API)(BSAopt, Microsoft OneDrive)")

The next problem:

--- snip ---
...
005c:Call KERNEL32.OutputDebugStringA(06da6c00 "Initializing D3D11 Graphics. 
Requested: 1920x1080x16") ret=00592f5c
005c:Ret  KERNEL32.OutputDebugStringA() retval=00000000 ret=00592f5c
005c:Call KERNEL32.OutputDebugStringA(009f459c "\n") ret=00592f63
005c:Ret  KERNEL32.OutputDebugStringA() retval=00000000 ret=00592f63
005c:Call
d3d11.D3D11CreateDevice(00000000,00000001,00000000,00000000,0033f5e0,00000003,00000007,07160218,07160234,0716021c)
ret=005bb669
005c:fixme:d3d11:D3D11CreateDevice stub: adapter (nil), driver_type
D3D_DRIVER_TYPE_HARDWARE, swrast (nil), flags 0, feature_levels 0x33f5e0,
levels 0x3, sdk_version 7, device 0x7160218, feature_level 0x7160234, context
0x716021c
005c:Ret  d3d11.D3D11CreateDevice() retval=8007000e ret=005bb669
005c:Call msvcr110.strcpy_s(0033f1e4,00000400,00a6a76c "Error - Can't create
Direct3D Object") ret=005997f7
005c:Ret  msvcr110.strcpy_s() retval=00000000 ret=005997f7
...
005c:Call KERNEL32.OutputDebugStringA(06da6c00 "Initializing D3D11 Graphics. 
Requested: 1920x1080x16") ret=00592f5c
005c:Ret  KERNEL32.OutputDebugStringA() retval=00000000 ret=00592f5c
005c:Call KERNEL32.OutputDebugStringA(009f459c "\n") ret=00592f63
005c:Ret  KERNEL32.OutputDebugStringA() retval=00000000 ret=00592f63
005c:Call
d3d11.D3D11CreateDevice(00000000,00000001,00000000,00000000,0033f5e0,00000003,00000007,07160218,07160234,0716021c)
ret=005bb669
005c:fixme:d3d11:D3D11CreateDevice stub: adapter (nil), driver_type
D3D_DRIVER_TYPE_HARDWARE, swrast (nil), flags 0, feature_levels 0x33f5e0,
levels 0x3, sdk_version 7, device 0x7160218, feature_level 0x7160234, context
0x716021c
005c:Ret  d3d11.D3D11CreateDevice() retval=8007000e ret=005bb669
...
005c:Call user32.MessageBoxW(00000000,0033ef08 L"Initialization
Failed\nDirect3D initialization failed. Frequent cause is an old or corrupted
driver.\n\nPlease check the log file for more information.",009ff56c L"Age of
Mythology",00001010) ret=004685c2 
--- snip ---

Well, that's bug 34008 

I found some interesting parameters through dumping/debugging:

--- snip ---
...
forceD3D9 - forces the game to run in a Direct3D 9 feature level. This requires
Direct3D 11 to be enabled
forceD3D10 - forces the game to run in a Direct3D 10 feature level. This
requires Direct3D 11 to be enabled
ignoreDDT - disables the loading of ddt textures.
D3Ddebug - enables the D3D11 debug layer. This flag can introduce a serious
performance impact.
enableTessellation - enables hardware unit tesselation in D3D11 feature levels
...
--- snip ---

Those can be added in 'startup/*.cfg' files which get read at game start.

Unfortunately even if you enable 'forceD3D9' (which will end up in
D3D_FEATURE_LEVEL / feature 9_x level) it will still call
d3d11.D3D11CreateDevice() entry point.
This is hard-coded and can't be bypassed.

---

There will be another problem later: the game is protected by Valve's CEG:

--- snip ---
-=[ ProtectionID v0.6.5.5 OCTOBER]=-
(c) 2003-2013 CDKiLLER & TippeX
Build 31/10/13-21:09:09
Ready...

Scanning ->
Z:\home\focht\wine-games\wineprefix-steam\wineprefix\drive_c\Program
Files\Steam\SteamApps\common\Age of Mythology\aomx.exe
File Type : 32-Bit Exe (Subsystem : Win GUI / 2), Size : 8625816 (0839E98h)
Byte(s)
-> File Appears to be Digitally Signed @ Offset 0839000h, size : 0E98h / 03736
byte(s)
[File Heuristics] -> Flag : 00000100000001001101000000000100 (0x0404D004)
[Entrypoint Section Entropy] : 6.56
[Debug Info]
Characteristics : 0x0 | TimeDateStamp : 0x536D18E2 | MajorVer : 0 / MinorVer :
0 -> (0.0)
Type : 2 -> CodeView | Size : 0x43 (67)
AddressOfRawData : 0x6C7510 | PointerToRawData : 0x6C6110
CvSig : 0x53445352 | SigGuid B5CAACEA-753D-4761-A3F63B79B926B484
Age : 0x1 | Pdb : D:\projects\AoM\src\rts3\FinalCEG\AoMX.pdb

[!] Steam api usage detected
[i] additional feature ; Valve CEG - Custom Executable Generation
[.] CEG Version : 1, 1, 0, 2100
[.] CEG Build GUID : FD1C45EF-0376-4524-B3A4-BBF65E7A1F1D
[.] CEG Build Machine : neilk
[!] Possible CD/DVD-Key or Serial Check -> CDKey
[CompilerDetect] -> Visual C/C++
- Scan Took : 0.815 Second(s) [00000032Fh tick(s)] [533 scan(s) done]

Scanning ->
Z:\home\focht\wine-games\wineprefix-steam\wineprefix\drive_c\Program
Files\Steam\SteamApps\common\Age of Mythology\Launcher.exe
File Type : 32-Bit Exe (Subsystem : Win GUI / 2), Size : 1664512 (0196600h)
Byte(s)
[File Heuristics] -> Flag : 00000100000001001101000000000000 (0x0404D000)
[Entrypoint Section Entropy] : 5.89
[Debug Info]
Characteristics : 0x0 | TimeDateStamp : 0x53698096 | MajorVer : 0 / MinorVer :
0 -> (0.0)
Type : 2 -> CodeView | Size : 0x3E (62)
AddressOfRawData : 0x6928 | PointerToRawData : 0x5728
CvSig : 0x53445352 | SigGuid 5F16F2FE-FE92-4808-9FF6253A92E31114
Age : 0x23 | Pdb : D:\Projects\aom_mainline\Launcher.pdb

[!] Steam api usage detected
[CompilerDetect] -> Visual C/C++
- Scan Took : 0.380 Second(s) [00000017Ch tick(s)] [533 scan(s) done]
--- snip ---

http://steamdb.info/app/266840/config/

--- snip ---
launch    

    0/config/oslist: windows
    0/description: Launch
    0/executable: Launcher.exe

cegpublickey   
30819D300D06092A864886F70D010101050003818B0030818702818100C20F95CD3007AC0E2BAA9C0AFF740B949792CDF46454F2272A28D8CCEC4829A2F625B22FD4A588E1975F74708123A9DCFA8F1B8D01E40760871899F3CABCF717F17F8A5574DD8533C139359F319AA5BBC9A1326B220FD8D9B40D8158831CA45B3A397A9AB71ABECF65B07031E356BA70F2B3A252701212E2481611B55941C8D5020111

checkguid    AoMX.exe
--- snip ---

-> bug 32515

Anyway, the main blocker currently is d3d11.D3D11CreateDevice() stub hence I'm
resolving this as dupe of bug 34008

$ wine --version
wine-1.7.19

Regards

*** This bug has been marked as a duplicate of bug 34008 ***

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list