http://bugs.winehq.org/show_bug.cgi?id=34636
Bug #: 34636 Summary: In Win95/98 mode Earthworm Jim demo reports missing dispdib.dll Product: Wine Version: 1.7.3 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: trivial Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: winebugs140@gmail.com Classification: Unclassified
The message reads 'Bad or missing dispdib.dll - error 11'. It doesn't show up in WinXP mode, but you need to set Win95/98 mode to get sound working. The problem occurs on Windows Vista too if you use Win95 compatibility mode.
I don't get anything in the log. The demo unpacks files in DOS, but then you obtain a normal Windows app.
Tested with: Windows Vista (without Wine), GeForce 9600M GS--the program works fine here Ubuntu 13.04, GeForce 9600M GS (NVIDIA driver 313) Mac OS X 10.7.5, ATI HD 2600 Pro, Mac Driver/X11
http://bugs.winehq.org/show_bug.cgi?id=34636
WineBuG winebugs140@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download URL| |http://www.fileplanet.com/1 | |0675/download/Earthworm-Jim | |-Demo
https://bugs.winehq.org/show_bug.cgi?id=34636
--- Comment #1 from WineBuG winebugs140@gmail.com --- Some info about dispdib.dll:
https://github.com/joncampbell123/doslib/blob/master/devlog
https://bugs.winehq.org/show_bug.cgi?id=34636
Chris Wyatt wyattmeister@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |wyattmeister@gmail.com
--- Comment #2 from Chris Wyatt wyattmeister@gmail.com --- In the current version of WINE (6.3) you do not get this error; however the game crashes with a black screen if you try to run in Windows 95, 98 or ME mode.
https://bugs.winehq.org/show_bug.cgi?id=34636
--- Comment #3 from Chris Wyatt wyattmeister@gmail.com --- Never mind. It seems if you wait around for a couple of minutes (in Windows 95 mode), you do get the error about dispdib.dll, and then the game seems to start and run without any noticeable issues.
I should have been clearer that the game hangs rather than crashes.
https://bugs.winehq.org/show_bug.cgi?id=34636
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED URL|http://www.fileplanet.com/1 |https://web.archive.org/web |0675/download/Earthworm-Jim |/20210314095454/https://ima |-Demo |ge.dosgamesarchive.com/game | |s/ewjdemo.zip Resolution|--- |INVALID Summary|In Win95/98 mode Earthworm |Multiple games report 'Bad |Jim demo reports missing |or missing dispdib.dll' in |dispdib.dll |Win95/98 mode (Earthworm | |Jim, Pitfall: The Mayan | |Adventure) CC| |focht@gmx.net
--- Comment #4 from Anastasius Focht focht@gmx.net --- Hello folks,
adding stable download link via Internet Archive:
https://web.archive.org/web/20210314095454/https://image.dosgamesarchive.com...
https://archive.org/download/EWJ95/EWJ_95.zip
The Win9x-era game is 32-bit PE.
--- snip --- $ ls -l total 7924 -rw-rw-r--. 1 focht focht 31 Mar 12 1996 FILE_ID.DIZ -rw-rw-r--. 1 focht focht 3093394 Nov 1 1995 INIT.EW -rwxrwxr-x. 1 focht focht 11776 Nov 1 1995 KILLWORM.EXE -rw-rw-r--. 1 focht focht 601218 Nov 1 1995 LEVEL00.EW -rw-rw-r--. 1 focht focht 599469 Nov 1 1995 LEVEL03.EW -rw-rw-r--. 1 focht focht 579231 Nov 1 1995 LEVEL05.EW -rw-rw-r--. 1 focht focht 13816 Nov 1 1995 LEVEL24.EW -rw-rw-r--. 1 focht focht 630642 Nov 1 1995 LEVEL29.EW -rw-rw-r--. 1 focht focht 33564 Nov 1 1995 LEVEL30.EW -rw-rw-r--. 1 focht focht 3767 Jan 10 1996 README.WRI -rw-rw-r--. 1 focht focht 44432 Jan 10 1996 TECH.WRI -rw-rw-r--. 1 focht focht 116736 Nov 1 1995 WAIL32.DLL -rw-rw-r--. 1 focht focht 228864 Nov 1 1995 WORM0.FTS -rw-rw-r--. 1 focht focht 814962 Nov 1 1995 WORM0.HLP -rwxrwxr-x. 1 focht focht 1111040 Jan 6 1996 WORM.EXE -rwxrwxr-x. 1 focht focht 187392 Jan 6 1996 WORMLOAD.EXE -rw-rw-r--. 1 focht focht 15916 Nov 1 1995 WORMLOAD.WAV --- snip ---
--- snip --- $ file *.EXE KILLWORM.EXE: PE32 executable (GUI) Intel 80386, for MS Windows WORM.EXE: PE32 executable (GUI) Intel 80386, for MS Windows WORMLOAD.EXE: PE32 executable (GUI) Intel 80386, for MS Windows --- snip ---
--- snip --- $ WINEDEBUG=+seh,+relay,+loaddll wine ./WORM.EXE >>log.txt 2>&1 ... 0350:Call user32.MessageBoxA(00000000,00446b60 "Earthworm Jim should be played in 256 color mode for best performance.",00445cf0 "Earthworm Jim",00000000) ret=0040a997 ... 0350:Ret user32.MessageBoxA() retval=00000001 ret=0040a997 ... 0350:Call user32.CreateDialogParamA(00400000,000000c9,00000000,00403c52,00000000) ret=00402341 ... 0350:Ret user32.CreateDialogParamA() retval=00040080 ret=00402341 0350:Call user32.ShowWindow(00040080,00000001) ret=00402354 0350:Ret user32.ShowWindow() retval=00000001 ret=00402354 0350:Call KERNEL32.CreateFileA(0044b9a4 "init.ew",80000000,00000001,00000000,00000003,08000000,00000000) ret=004391c9 ... 0350:Ret KERNEL32.CreateFileA() retval=000000b0 ret=004391c9 0350:Call KERNEL32.ReadFile(000000b0,004454c4,00000004,0032fd40,00000000) ret=00439253 0350:Call ntdll.NtReadFile(000000b0,00000000,00000000,00000000,0032fbb8,004454c4,00000004,00000000,00000000) ret=7b012f72 0350:Ret ntdll.NtReadFile() retval=00000000 ret=7b012f72 0350:Ret KERNEL32.ReadFile() retval=00000001 ret=00439253 ... 0350:Call KERNEL32.ReadFile(000000b0,015dd848,00001b69,0032fd3c,00000000) ret=004392d4 0350:Call ntdll.NtReadFile(000000b0,00000000,00000000,00000000,0032fbb8,015dd848,00001b69,00000000,00000000) ret=7b012f72 0350:Ret ntdll.NtReadFile() retval=00000000 ret=7b012f72 0350:Ret KERNEL32.ReadFile() retval=00000001 ret=004392d4 0350:Call KERNEL32.GetSystemDirectoryA(0032fcf0,00000104) ret=00408b44 0350:Ret KERNEL32.GetSystemDirectoryA() retval=00000013 ret=00408b44 0350:Call KERNEL32.LoadModule(0032fcf0 "C:\windows\system32\DISPDIB.DLL",0032fcb8) ret=00408b6c ... 0350:Call ntdll.RtlCreateProcessParametersEx(0032f52c,0032f57c,0032f56c,00000000,0032f564,00000000,0032f55c,0032f554,00000000,0032f548,00000001) ret=7b0374b1 0350:Ret ntdll.RtlCreateProcessParametersEx() retval=00000000 ret=7b0374b1 ... 0350:Call ntdll.NtCreateUserProcess(0032f580,0032f584,001fffff,001fffff,0032f40c,0032f3f4,00000000,00000001,001a93f8,0032f498,0032f424) ret=7b03805c 0350:Ret ntdll.NtCreateUserProcess() retval=c0000131 ret=7b03805c ... 0350:Call ntdll.RtlInitUnicodeString(001a9438,001a6c28 L"C:\windows\system32\winevdm.exe --app-name "C:\windows\system32\dispdib.dll" C:\windows\system32\DISPDIB.DLL ") ret=7b038164 0350:Ret ntdll.RtlInitUnicodeString() retval=000000dc ret=7b038164 ... 0350:Call ntdll.NtCreateUserProcess(0032f580,0032f584,001fffff,001fffff,0032f3cc,0032f3b4,00000000,00000001,001a93f8,0032f458,0032f3e4) ret=7b03805c ... 0360:trace:loaddll:build_module Loaded L"C:\windows\system32\winevdm.exe" at 7E9A0000: builtin 0360:trace:loaddll:build_module Loaded L"C:\windows\system32\kernelbase.dll" at 7B000000: builtin 0360:trace:loaddll:build_module Loaded L"C:\windows\system32\kernel32.dll" at 7B600000: builtin 0350:Ret ntdll.NtCreateUserProcess() retval=00000000 ret=7b03805c ... 0360:trace:loaddll:MODULE_LoadModule16 Loaded module "krnl386.exe" : builtin ... 0360:trace:loaddll:MODULE_LoadModule16 Loaded module "dispdib.dll" : builtin ... 0360:Ret krnl386.exe16.LoadModule16() retval=000002af ret=7e9a8333 ... 0350:Ret KERNEL32.LoadModule() retval=00000021 ret=00408b6c ... 0350:Call user32.CreateWindowExA(00000000,0044cfbc "DisplayDibWindow",0044cfb8 "",80000000,00000000,00000000,00000a00,000005a0,0004007e,00000000,00400000,00000000) ret=00408bb6 ... 0350:Ret user32.CreateWindowExA() retval=00000000 ret=00408bb6 0350:Call user32.MessageBoxA(00000000,0032fcf0 "Bad or missing dispdib.dll - error 33",00445cf0 "Earthworm Jim",00000010) ret=00408c00 ... --- snip ---
Found another game with same error message:
https://web.archive.org/web/20201231220908/https://thisoldrecliner.neocities...
The error dialog is not critical and can be dismissed. The game is still playable.
The game specifically checks if it's being run under Win9x or WindowsNT based systems.
--- snip --- 00408AE0 | push ebp | 00408AE1 | mov ebp,esp | 00408AE3 | sub esp,14C | 00408AE9 | push ebx | 00408AEA | push esi | 00408AEB | push edi | 00408AEC | mov dword ptr ss:[ebp-13C],0 | 00408AF6 | mov dword ptr ss:[ebp-138],worm.44CFA4 | 00408B00 | mov dword ptr ss:[ebp-134],worm.44CFA0 | 00408B0A | mov dword ptr ss:[ebp-130],0 | 00408B14 | mov dword ptr ds:[44A084],0 | 00408B1E | cmp dword ptr ds:[447014],0 | IsWin9X? 00408B25 | jne worm.408B32 | 00408B2B | xor eax,eax | WindowsNT 00408B2D | jmp worm.408CF6 | 00408B32 | push 104 | Win9X 00408B37 | lea eax,dword ptr ss:[ebp-104] | 00408B3D | push eax | 00408B3E | call dword ptr ds:[&_GetSystemDirectoryA@8] | 00408B44 | push worm.44CFA8 | "\DISPDIB.DLL" 00408B49 | lea eax,dword ptr ss:[ebp-104] | 00408B4F | push eax | 00408B50 | call worm.43EEB4 | 00408B55 | add esp,8 | 00408B58 | lea eax,dword ptr ss:[ebp-13C] | 00408B5E | push eax | 00408B5F | lea eax,dword ptr ss:[ebp-104] | 00408B65 | push eax | 00408B66 | call dword ptr ds:[&_LoadModule@8] | 00408B6C | mov dword ptr ss:[ebp-4],eax | 00408B6F | cmp dword ptr ss:[ebp-4],20 | 00408B73 | jl worm.408BBB | 00408B79 | push 0 | 00408B7B | mov eax,dword ptr ds:[4474A0] | 00408B80 | push eax | 00408B81 | push 0 | 00408B83 | mov eax,dword ptr ds:[44A044] | 00408B88 | push eax | 00408B89 | push 1 | 00408B8B | call dword ptr ds:[&_GetSystemMetrics@4] | 00408B91 | push eax | 00408B92 | push 0 | 00408B94 | call dword ptr ds:[&_GetSystemMetrics@4] | 00408B9A | push eax | 00408B9B | push 0 | 00408B9D | push 0 | 00408B9F | push 80000000 | 00408BA4 | push worm.44CFB8 | 00408BA9 | push worm.44CFBC | "DisplayDibWindow" 00408BAE | push 0 | 00408BB0 | call dword ptr ds:[&_CreateWindowExA@48] | 00408BB6 | mov dword ptr ds:[44A048],eax | 00408BBB | cmp dword ptr ss:[ebp-4],20 | 00408BBF | jl worm.408BD2 | 00408BC5 | cmp dword ptr ds:[44A048],0 | 00408BCC | jne worm.408C11 | 00408BD2 | mov eax,dword ptr ss:[ebp-4] | 00408BD5 | push eax | 00408BD6 | push worm.446B20 | 00408BDB | lea eax,dword ptr ss:[ebp-104] | 00408BE1 | push eax | 00408BE2 | call worm.43EFC1 | 00408BE7 | add esp,C | 00408BEA | push 10 | 00408BEC | push worm.445CF0 | 00408BF1 | lea eax,dword ptr ss:[ebp-104] | 00408BF7 | push eax | 00408BF8 | push 0 | 00408BFA | call dword ptr ds:[&_MessageBoxA@16] | 00408C00 | mov dword ptr ds:[44A048],0 | 00408C0A | xor eax,eax | 00408C0C | jmp worm.408CF6 | 00408C11 | mov dword ptr ss:[ebp-12C],28 | 00408C1B | mov word ptr ss:[ebp-120],1 | 00408C24 | mov word ptr ss:[ebp-11E],8 | 00408C2D | mov dword ptr ss:[ebp-11C],0 | 00408C37 | mov dword ptr ss:[ebp-118],0 | 00408C41 | mov dword ptr ss:[ebp-114],0 | 00408C4B | mov dword ptr ss:[ebp-110],0 | 00408C55 | mov dword ptr ss:[ebp-10C],0 | 00408C5F | mov dword ptr ss:[ebp-108],0 | 00408C69 | mov dword ptr ss:[ebp-128],140 | 00408C73 | mov dword ptr ss:[ebp-124],C8 | 00408C7D | mov eax,dword ptr ds:[44A048] | 00408C82 | mov dword ptr ss:[ebp-14C],eax | 00408C88 | mov dword ptr ss:[ebp-148],400 | 00408C92 | lea eax,dword ptr ss:[ebp-12C] | 00408C98 | test eax,eax | 00408C9A | je worm.408CAF | 00408CA0 | mov dword ptr ss:[ebp-144],428 | 00408CAA | jmp worm.408CB9 | 00408CAF | mov dword ptr ss:[ebp-144],0 | 00408CB9 | lea eax,dword ptr ss:[ebp-12C] | 00408CBF | mov dword ptr ss:[ebp-140],eax | 00408CC5 | lea eax,dword ptr ss:[ebp-148] | 00408CCB | push eax | 00408CCC | push 0 | 00408CCE | push 4A | 00408CD0 | mov eax,dword ptr ss:[ebp-14C] | 00408CD6 | push eax | 00408CD7 | call dword ptr ds:[&_SendMessageA@16] | 00408CDD | jmp worm.408CE2 | 00408CE2 | mov dword ptr ds:[44A084],1 | 00408CEC | mov eax,1 | 00408CF1 | jmp worm.408CF6 | 00408CF6 | pop edi | 00408CF7 | pop esi | 00408CF8 | pop ebx | 00408CF9 | leave | 00408CFA | ret | --- snip ---
References to address 0x447014 ('IsWin9X' variable)
--- snip --- 00401010 cmp dword ptr ds:[447014],0 00401F52 mov dword ptr ds:[447014],1 00401F61 mov dword ptr ds:[447014],0 00401F6B cmp dword ptr ds:[447014],0 00408043 cmp dword ptr ds:[447014],0 00408071 cmp dword ptr ds:[447014],0 0040809D cmp dword ptr ds:[447014],0 0040810C cmp dword ptr ds:[447014],0 00408319 cmp dword ptr ds:[447014],0 00408393 cmp dword ptr ds:[447014],0 004083A7 cmp dword ptr ds:[447014],0 00408754 cmp dword ptr ds:[447014],0 00408A1A cmp dword ptr ds:[447014],0 00408B1E cmp dword ptr ds:[447014],0 00409394 cmp dword ptr ds:[447014],0 0040A253 cmp dword ptr ds:[447014],0 --- snip ---
OS version check:
--- snip --- 00401F24 | mov dword ptr ds:[447050],0 | 00401F2E | call dword ptr ds:[<&GetVersion>] | 00401F34 | cmp eax,80000000 | 00401F39 | jbe worm.401F61 | <= WindowsNT 00401F3F | call dword ptr ds:[<&GetVersion>] | 00401F45 | xor ecx,ecx | 00401F47 | mov cl,al | 00401F49 | cmp ecx,4 | 00401F4C | jl worm.401F61 | 00401F52 | mov dword ptr ds:[447014],1 | Win9X 00401F5C | jmp worm.401F6B | 00401F61 | mov dword ptr ds:[447014],0 | WindowsNT 00401F6B | cmp dword ptr ds:[447014],0 | 00401F72 | jne worm.401F9E | --- snip ---
@WineBuG
--- quote --- The problem occurs on Windows Vista too if you use Win95 compatibility mode. --- quote ---
If you use the "lie about OS version" appcompat feature on Windows this is by design/expected. See the disassembly above.
I don't see the point of this bug report. Wine behaves exactly the same as modern NT-based Windows versions. The fullscreen mode "hack" for win16 apps can't work by design here. It's not needed anyway.
$ sha1sum ewjdemo.zip 1c6afe11d8cfeae3f35e66d652487860ef909a98 ewjdemo.zip
$ du -sh ewjdemo.zip 3.4M ewjdemo.zip
$ wine --version wine-6.4
Regards
https://bugs.winehq.org/show_bug.cgi?id=34636
Gijs Vermeulen gijsvrm@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #5 from Gijs Vermeulen gijsvrm@gmail.com --- Closing INVALID.