[Bug 34636] Multiple games report 'Bad or missing dispdib.dll' in Win95/98 mode (Earthworm Jim, Pitfall: The Mayan Adventure)
WineHQ Bugzilla
wine-bugs at winehq.org
Sun Mar 14 06:04:07 CDT 2021
https://bugs.winehq.org/show_bug.cgi?id=34636
Anastasius Focht <focht at 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 at gmx.net
--- Comment #4 from Anastasius Focht <focht at gmx.net> ---
Hello folks,
adding stable download link via Internet Archive:
https://web.archive.org/web/20210314095454/https://image.dosgamesarchive.com/games/ewjdemo.zip
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.org/pitfall.html
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 at 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 at 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 at 4>] |
00408B91 | push eax |
00408B92 | push 0 |
00408B94 | call dword ptr ds:[<&_GetSystemMetrics at 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 at 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 at 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 at 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
--
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