Monkey Island 2 Special Edition won't start

Questions about Wine on Linux
Locked
wolkenschieber
Newbie
Newbie
Posts: 2
Joined: Thu Dec 27, 2018 2:32 pm

Monkey Island 2 Special Edition won't start

Post by wolkenschieber »

I've got some nostalgia flash and bought Monkey Island 1 and 2 in the Special Edition from Gogs. Whereas the first part runs with wine, the second part only segfaults.

AppDB suggests installing following DLLs through winetricks: d3dx9, xact, vcrun2005 and vcrun2008. However upon starting Monkey2.exe, a black screen appears and as soon a key is pressed, the segfault is presented.
I'm running wine-4.0-rc3 on Arch Linux with kernel 4.19.2.

The console output is:

Code: Select all

$ wine Monkey2.exe   
001c:fixme:heap:RtlSetHeapInformation 0x240000 0 0x23e830 4 stub
001c:fixme:heap:RtlSetHeapInformation 0x640000 0 0x23e860 4 stub
0034:err:ntoskrnl:IoCreateDriver failed to insert driver L"\\Driver\\WineHID" in tree
0009:fixme:win:EnumDisplayDevicesW ((null),0,0x32d0a4,0x00000000), stub!
0009:fixme:d3dcompiler:compile_shader Unknown compilation target "__fx_2_0__"
wine: Unhandled page fault on read access to 0x00000000 at address 0x4d89d2 (thread 0009), starting debugger...
0019:fixme:service:QueryServiceConfig2W Level 6 not implemented
0019:fixme:service:QueryServiceConfig2W Level 6 not implemented
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
0022:fixme:service:QueryServiceConfig2W Level 6 not implemented
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
0022:fixme:service:QueryServiceConfig2W Level 6 not implemented
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x004d89d2).
003d:fixme:dbghelp:elf_search_auxv can't find symbol in module
Register dump:
 CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b
 EIP:004d89d2 ESP:0032d350 EBP:0032d3f0 EFLAGS:00010206(  R- --  I   - -P- )
 EAX:00000000 EBX:01a83610 ECX:0053ccbc EDX:0032d37c
 ESI:8876086c EDI:000003c6
Stack dump:
0x0032d350:  000003c6 8876086c 0032d3f0 01a83610
0x0032d360:  00701340 0032d394 100e0cd1 00160df0
0x0032d370:  01a83648 000003c6 00000000 00000000
0x0032d380:  00000000 00000000 00000000 01a8361c
0x0032d390:  0032d3d0 0032d3f0 004d895c 0032d3f0
0x0032d3a0:  000003c6 01a83610 004c1331 00000040
Backtrace:
=>0 0x004d89d2 EntryPoint+0xffffffff() in monkey2 (0x0032d3f0)
  1 0x004d86dc EntryPoint+0xffffffff() in monkey2 (0x0032d440)
  2 0x004d417a EntryPoint+0xffffffff() in monkey2 (0x0032d524)
0x004d89d2 EntryPoint+0xffffffff in monkey2: movl       0x0(%eax),%ecx
Modules:
Module  Address                 Debug info      Name (79 modules)
PE        330000-  346000       Deferred        xinput1_3
PE        400000-  5ee000       Export          monkey2
PE      10000000-101e5000       Deferred        d3dx9_42
PE      78480000-7850e000       Deferred        msvcp90
PE      78520000-785c3000       Deferred        msvcr90
ELF     78d3f000-7a800000       Deferred        libnvidia-glcore.so.415.25
ELF     7a800000-7a941000       Deferred        opengl32<elf>
  \-PE  7a820000-7a941000       \               opengl32
ELF     7b400000-7b7f0000       Deferred        kernel32<elf>
  \-PE  7b420000-7b7f0000       \               kernel32
ELF     7bc00000-7bd05000       Deferred        ntdll<elf>
  \-PE  7bc10000-7bd05000       \               ntdll
ELF     7c000000-7c005000       Deferred        <wine-loader>
ELF     7c2e6000-7c400000       Deferred        libglx_nvidia.so.0
ELF     7c47c000-7c4de000       Deferred        libgldispatch.so.0
ELF     7c4de000-7c501000       Deferred        libglx.so.0
ELF     7c501000-7c565000       Deferred        libgl.so.1
ELF     7cdff000-7ce04000       Deferred        libnvidia-tls.so.415.25
ELF     7ce04000-7ce0c000       Deferred        libxfixes.so.3
ELF     7ce0c000-7ce18000       Deferred        libxcursor.so.1
ELF     7ce18000-7ce2c000       Deferred        libxi.so.6
ELF     7ce2c000-7ce3b000       Deferred        libxrandr.so.2
ELF     7ce3b000-7ce49000       Deferred        libxrender.so.1
ELF     7ce49000-7ce50000       Deferred        libxxf86vm.so.1
ELF     7cf50000-7cf57000       Deferred        libxdmcp.so.6
ELF     7cf57000-7cf83000       Deferred        libxcb.so.1
ELF     7cf83000-7d0d0000       Deferred        libx11.so.6
ELF     7d116000-7d1a8000       Deferred        winex11<elf>
  \-PE  7d120000-7d1a8000       \               winex11
ELF     7d1a8000-7d1cd000       Deferred        imm32<elf>
  \-PE  7d1b0000-7d1cd000       \               imm32
ELF     7d251000-7d28d000       Deferred        libexpat.so.1
ELF     7d28d000-7d2d9000       Deferred        libfontconfig.so.1
ELF     7d2d9000-7d351000       Deferred        libpcre.so.1
ELF     7d351000-7d48b000       Deferred        libglib-2.0.so.0
ELF     7d4cf000-7d4d3000       Deferred        libxcomposite.so.1
ELF     7d4d3000-7d4dd000       Deferred        libuuid.so.1
ELF     7d4dd000-7d5d5000       Deferred        libharfbuzz.so.0
ELF     7d5d5000-7d5ef000       Deferred        libz.so.1
ELF     7d5ef000-7d62f000       Deferred        libpng16.so.16
ELF     7d62f000-7d641000       Deferred        libbz2.so.1.0
ELF     7d641000-7d711000       Deferred        libfreetype.so.6
ELF     7d711000-7d781000       Deferred        libncursesw.so.6
ELF     7d782000-7d787000       Deferred        libxinerama.so.1
ELF     7d787000-7d79c000       Deferred        libxext.so.6
ELF     7d7c7000-7d883000       Deferred        msvcrt<elf>
  \-PE  7d7e0000-7d883000       \               msvcrt
ELF     7d883000-7d9d5000       Deferred        wined3d<elf>
  \-PE  7d890000-7d9d5000       \               wined3d
ELF     7d9d5000-7da19000       Deferred        d3d9<elf>
  \-PE  7d9e0000-7da19000       \               d3d9
ELF     7da19000-7db78000       Deferred        ole32<elf>
  \-PE  7da30000-7db78000       \               ole32
ELF     7db78000-7dbeb000       Deferred        shlwapi<elf>
  \-PE  7db90000-7dbeb000       \               shlwapi
ELF     7dbeb000-7e5af000       Deferred        shell32<elf>
  \-PE  7dc00000-7e5af000       \               shell32
ELF     7e5af000-7e637000       Deferred        rpcrt4<elf>
  \-PE  7e5c0000-7e637000       \               rpcrt4
ELF     7e637000-7e767000       Deferred        gdi32<elf>
  \-PE  7e650000-7e767000       \               gdi32
ELF     7e767000-7e973000       Deferred        user32<elf>
  \-PE  7e780000-7e973000       \               user32
ELF     7e973000-7e9e3000       Deferred        setupapi<elf>
  \-PE  7e980000-7e9e3000       \               setupapi
ELF     7e9e3000-7ea5e000       Deferred        advapi32<elf>
  \-PE  7e9f0000-7ea5e000       \               advapi32
ELF     7eed8000-7eeed000       Deferred        libnss_files.so.2
ELF     7eeed000-7efba000       Deferred        libm.so.6
ELF     7efba000-7efbf000       Deferred        libxau.so.6
ELF     7efbf000-7efe5000       Deferred        shcore<elf>
  \-PE  7efd0000-7efe5000       \               shcore
ELF     7efe5000-7f000000       Deferred        version<elf>
  \-PE  7eff0000-7f000000       \               version
ELF     f7b39000-f7b3f000       Deferred        libdl.so.2
ELF     f7b85000-f7d62000       Deferred        libc.so.6
ELF     f7d62000-f7d83000       Deferred        libpthread.so.0
ELF     f7d83000-f7f3a000       Dwarf           libwine.so.1
ELF     f7f3c000-f7f66000       Deferred        ld-linux.so.2
Threads:
process  tid      prio (all id:s are in hex)
00000008 (D) C:\Games\Monkey Island 2 SE\Monkey2.exe
        0000003b    0
        0000003a    1
        00000039    0
        00000009    0 <==
0000000e services.exe
        0000003f    0
        0000003e    0
        00000031    0
        0000002c    0
        00000026    0
        00000020    0
        00000015    0
        00000010    0
        0000000f    0
00000011 mscorsvw.exe
        0000001a    0
        00000019    0
        00000018    0
        00000012    0
00000013 explorer.exe
        0000001f    0
        0000001e    0
        0000001d    0
        00000014    0
0000001b mscorsvw.exe
        00000023    0
        00000022    0
        00000021    0
        0000001c    0
00000024 winedevice.exe
        00000029    0
        00000028    0
        00000027    0
        00000025    0
0000002a plugplay.exe
        0000002e    0
        0000002d    0
        0000002b    0
0000002f winedevice.exe
        00000038    0
        00000037    0
        00000036    0
        00000035    0
        00000034    0
        00000033    0
        00000032    0
        00000030    0
System information:
    Wine build: wine-4.0-rc3
    Platform: i386 (WOW64)
    Version: Windows 7
    Host system: Linux
    Host version: 4.19.12-arch1-1-ARCH
Any hints where to go from here?
mogorva
Level 4
Level 4
Posts: 107
Joined: Fri Oct 16, 2009 10:27 am

Re: Monkey Island 2 Special Edition won't start

Post by mogorva »

The AppDB page of the game is outdated, the game needs only xact d3dx9_42 and d3dcompiler_42 in recent Wine (tested in 4.0-rc4). Obviously it is native d3dcompiler_42 what is missing.
Unfortunately for you, winetricks doesn't recognize the 'd3dcompiler_42' verb.

The easiest method would be to search for and download that dll from the Internet, but I strongly advise against downloading anything from untrusted sources.

If you have Windows installed you can copy d3dcompiler_42 into the game directory (make sure you copy the 32-bit version if your Windows is 64-bit).

-or-
you can extract the file from the game installer itself.
This is what I've done to obtain that dll. You will need:
  • the game installer from GOG.com (setup_monkey_island2_se_2.0.0.10.exe, md5sum: 20a0bc39dcf543856f0d463649c482c4)
  • cabextract and innoextract tools, both are available from the Archlinux repository.
Go to the location where the installer is placed, open a terminal and issue the command

Code: Select all

innoextract setup_monkey_island2_se_2.0.0.10.exe
There should be a /tmp directory containing several files, among others a directx_Jun2010_redist.exe. Issue the command

Code: Select all

cabextract directx_Jun2010_redist.exe
The 32-bit d3dcompiler_42.dll you need is in the CAB archive named 'Aug2009_D3DCompiler_42_x86.cab'

Code: Select all

cabextract Aug2009_D3DCompiler_42_x86.cab
You can simply copy D3DCompiler_42.dll (md5sum:b33b21db610116262d906305ce65c354) into the game directory and you should be all set.
wolkenschieber
Newbie
Newbie
Posts: 2
Joined: Thu Dec 27, 2018 2:32 pm

Re: Monkey Island 2 Special Edition won't start

Post by wolkenschieber »

mogorva wrote:The AppDB page of the game is outdated, the game needs only xact d3dx9_42 and d3dcompiler_42 in recent Wine (tested in 4.0-rc4). Obviously it is native d3dcompiler_42 what is missing.
I would have never read that from the logs.
mogorva wrote: you can extract the file from the game installer itself.
This is what I've done to obtain that dll. You will need:
  • the game installer from GOG.com (setup_monkey_island2_se_2.0.0.10.exe, md5sum: 20a0bc39dcf543856f0d463649c482c4)
  • cabextract and innoextract tools, both are available from the Archlinux repository.
Go to the location where the installer is placed, open a terminal and issue the command

Code: Select all

innoextract setup_monkey_island2_se_2.0.0.10.exe
There should be a /tmp directory containing several files, among others a directx_Jun2010_redist.exe. Issue the command

Code: Select all

cabextract directx_Jun2010_redist.exe
The 32-bit d3dcompiler_42.dll you need is in the CAB archive named 'Aug2009_D3DCompiler_42_x86.cab'

Code: Select all

cabextract Aug2009_D3DCompiler_42_x86.cab
You can simply copy D3DCompiler_42.dll (md5sum:b33b21db610116262d906305ce65c354) into the game directory and you should be all set.
That did the trick! Awesome! Big three headed monkey thanks to you!
User avatar
DarkShadow44
Level 8
Level 8
Posts: 1207
Joined: Tue Nov 22, 2016 5:39 pm

Re: Monkey Island 2 Special Edition won't start

Post by DarkShadow44 »

As a side note, usually native d3dcompiler_43 should also work - because wine's d3dcompiler_42 should call d3dcompiler_43.
Locked