otya128 / winevdm

16-bit Windows (Windows 1.x, 2.x, 3.0, 3.1, etc.) on 64-bit Windows
GNU General Public License v2.0
2.54k stars 149 forks source link

Civilization II v2.42 freezes #200

Open MouseProducedGames opened 5 years ago

MouseProducedGames commented 5 years ago

Civilization II v2.42 worked briefly; however, currently, it freezes after installing the game but before the option to install the Vimeo drivers. On launching the game, it freezes after opening the Civilization II window, but before opening the popup main menu (the one with new game, load game, load scenario, etc).

Tested with appveyor builds and with a build in Release mode using MSYS264:

https://www.msys2.org/

MouseProducedGames commented 5 years ago

This is probably not related to WineVDM, after all. After some testing using MSYS32, Windows is now refusing to admit that the Civilization II CD or install even exists - "The specified path does not exist."

cracyc commented 5 years ago

FWIW, I just tried civ2 and it seemed to work fine. I couldn't find which version it is though.

MouseProducedGames commented 5 years ago

Unfortunately, I still can't say the same - It crashes when opening the technology help screen, and upon researching a new tech.

Which MSYS source does the project use for binutils? Maybe it's a difference in build libraries?

cracyc commented 5 years ago

I've found it to fail to show anythingin the help window and sometimes crash if run directly from the cd. After setup, it works properly.

MouseProducedGames commented 5 years ago

I'm installing off of the CD and running from the install. ...Sorry, forgot to post the version. v2.42.

Hmm... I'm actually installing from a virtual CD backup of my physical CD. Could it be an interface problem between WineVDM and the virtual CD drive? I'm using the latest version of Daemon Tools Lite.

cracyc commented 5 years ago

I don't think so. I'm using the windows 10 builtin iso mount.

MouseProducedGames commented 5 years ago

Here's what I get in the otvdm window when I open the Civilopedia, or after clicking "Ok" upon gaining a technology:

CALL (0640fbd0): Selector is null.
=====dump all modules=====
Module Flags Name Flag
 3117   8021    SHELL       NE_FFLAGS_SINGLEDATA | NE_FFLAGS_BUILTIN | NE_FFLAGS_LIBMODULE
 2fc7   030a    getAB8      NE_FFLAGS_MULTIPLEDATA | NE_FFLAGS_FRAMEBUF | NE_FFLAGS_CONSOLE | NE_FFLAGS_GUI
 2d77   8309    CALLBACK    NE_FFLAGS_SINGLEDATA | NE_FFLAGS_FRAMEBUF | NE_FFLAGS_CONSOLE | NE_FFLAGS_GUI | NE_FFLAGS_LIBMODULE
 19f7   8021    WING        NE_FFLAGS_SINGLEDATA | NE_FFLAGS_BUILTIN | NE_FFLAGS_LIBMODULE
 1947   8309    ICONLIB     NE_FFLAGS_SINGLEDATA | NE_FFLAGS_FRAMEBUF | NE_FFLAGS_CONSOLE | NE_FFLAGS_GUI | NE_FFLAGS_LIBMODULE
 18bf   8021    WIN87EM     NE_FFLAGS_SINGLEDATA | NE_FFLAGS_BUILTIN | NE_FFLAGS_LIBMODULE
 18a7   8021    TOOLHELP    NE_FFLAGS_SINGLEDATA | NE_FFLAGS_BUILTIN | NE_FFLAGS_LIBMODULE
 188f   8021    COMMDLG     NE_FFLAGS_SINGLEDATA | NE_FFLAGS_BUILTIN | NE_FFLAGS_LIBMODULE
 185f   8309    SMEDSNET    NE_FFLAGS_SINGLEDATA | NE_FFLAGS_FRAMEBUF | NE_FFLAGS_CONSOLE | NE_FFLAGS_GUI | NE_FFLAGS_LIBMODULE
 1847   8021    AVIFILE     NE_FFLAGS_SINGLEDATA | NE_FFLAGS_BUILTIN | NE_FFLAGS_LIBMODULE
 182f   8021    MSVIDEO     NE_FFLAGS_SINGLEDATA | NE_FFLAGS_BUILTIN | NE_FFLAGS_LIBMODULE
 119f   030a    CIV2        NE_FFLAGS_MULTIPLEDATA | NE_FFLAGS_FRAMEBUF | NE_FFLAGS_CONSOLE | NE_FFLAGS_GUI
 1187   8021    SOUND       NE_FFLAGS_SINGLEDATA | NE_FFLAGS_BUILTIN | NE_FFLAGS_LIBMODULE
 116f   8021    MMSYSTEM    NE_FFLAGS_SINGLEDATA | NE_FFLAGS_BUILTIN | NE_FFLAGS_LIBMODULE
 1157   8021    MOUSE       NE_FFLAGS_SINGLEDATA | NE_FFLAGS_BUILTIN | NE_FFLAGS_LIBMODULE
 113f   8021    KEYBOARD    NE_FFLAGS_SINGLEDATA | NE_FFLAGS_BUILTIN | NE_FFLAGS_LIBMODULE
 1127   8021    DISPLAY     NE_FFLAGS_SINGLEDATA | NE_FFLAGS_BUILTIN | NE_FFLAGS_LIBMODULE
 110f   8021    USER        NE_FFLAGS_SINGLEDATA | NE_FFLAGS_BUILTIN | NE_FFLAGS_LIBMODULE
 10f7   8021    GDI         NE_FFLAGS_SINGLEDATA | NE_FFLAGS_BUILTIN | NE_FFLAGS_LIBMODULE
 10c7   8021    TIMER       NE_FFLAGS_SINGLEDATA | NE_FFLAGS_BUILTIN | NE_FFLAGS_LIBMODULE
 10af   8021    COMM        NE_FFLAGS_SINGLEDATA | NE_FFLAGS_BUILTIN | NE_FFLAGS_LIBMODULE
 1097   8021    SYSTEM      NE_FFLAGS_SINGLEDATA | NE_FFLAGS_BUILTIN | NE_FFLAGS_LIBMODULE
 1007   8021    KERNEL      NE_FFLAGS_SINGLEDATA | NE_FFLAGS_BUILTIN | NE_FFLAGS_LIBMODULE
=====dump all modules=====
11: vm86.dll!vm86_vectored_exception_handler+0x29 - 0xfb67210 c:\users\***\documents\github\winevdm\vm86\msdos.cpp(866)
10: ntdll.dll!RtlUnwind+0x1cf - 0x770339b0 (null)(0)
9: ntdll.dll!KiUserExceptionDispatcher+0x26 - 0x7703cd60 (null)(0)
=============================
8: vm86.dll!protected_mode_exception_handler+0x4d6 - 0xfb67c10 c:\users\***\documents\github\winevdm\vm86\msdos.cpp(1252)
7: vm86.dll!vm86main+0x53e - 0xfb68540 c:\users\***\documents\github\winevdm\vm86\msdos.cpp(1435)
6: vm86.dll!wine_call_to_16_regs_vm86+0x4d - 0xfb67850 c:\users\***\documents\github\winevdm\vm86\msdos.cpp(1036)
5: krnl386.exe16!K32WOWCallback16Ex+0x3c7 - 0xf8deea0 c:\users\***\documents\github\winevdm\krnl386\wowthunk.c(690)
4: krnl386.exe16!NE_StartTask+0x34f - 0xf8c4f70 c:\users\***\documents\github\winevdm\krnl386\ne_module.c(1509)
3: krnl386.exe16!task_start+0x182 - 0xf8d1870 c:\users\***\documents\github\winevdm\krnl386\task.c(605)
2: KERNEL32.DLL!BaseThreadInitThunk+0x24 - 0x766e8460 (null)(0)
1: ntdll.dll!RtlAreBitsSet+0x88 - 0x77034140 (null)(0)
0: ntdll.dll!RtlAreBitsSet+0x58 - 0x77034140 (null)(0)
========================
address=761418A2
access address=0FB70B4C
VM context
EAX:4000,ECX:000D,EDX:31E731EF,EBX:0000
ESP:7A1A,EBP:7AA4,ESI:10CD,EDI:FFFB
ES:31EF,CS:30FF,SS:310F,DS:310F,FS:0000,GS:0000
IP:E7A0, address:0FB7FC2D
EFLAGS:00003206

Interrupt 0D #GP (30FF:E79C) flags 3206 err 0000
call    far ptr  [4918h]
SlobHumar commented 1 year ago

Hello, I have the same problem, version 2.42, this is what I get when I launch game before main menu (1st error). Then I click 'continue' and get like 5 more errors like this. I have sound on splash screen before main menu and when consulting high council, but no other in-game sounds and game freezes after world wonder is built, while watching video. Someone managed to get it working properly?

version: 2161 SReg Load (03ab5cb4): Segment is not a data segment or readable code segment. =====dump all modules===== Module Flags Name Flag 2d0f 8309 ICONLIB SINGLEDATA | FRAMEBUF | CONSOLE | GUI | LIBMODULE 19f7 8021 WING SINGLEDATA | BUILTIN | LIBMODULE 1957 8309 ICONLIB SINGLEDATA | FRAMEBUF | CONSOLE | GUI | LIBMODULE 18d7 8021 WIN87EM SINGLEDATA | BUILTIN | LIBMODULE 18bf 8021 TOOLHELP SINGLEDATA | BUILTIN | LIBMODULE 18a7 8021 COMMDLG SINGLEDATA | BUILTIN | LIBMODULE 1877 8309 SMEDSNET SINGLEDATA | FRAMEBUF | CONSOLE | GUI | LIBMODULE 185f 8021 AVIFILE SINGLEDATA | BUILTIN | LIBMODULE 183f 8021 MSVIDEO SINGLEDATA | BUILTIN | LIBMODULE 11af 030a CIV2 MULTIPLEDATA | FRAMEBUF | CONSOLE | GUI 1197 8021 SOUND SINGLEDATA | BUILTIN | LIBMODULE 117f 8021 MMSYSTEM SINGLEDATA | BUILTIN | LIBMODULE 1167 8021 MOUSE SINGLEDATA | BUILTIN | LIBMODULE 114f 8021 KEYBOARD SINGLEDATA | BUILTIN | LIBMODULE 1137 8021 DISPLAY SINGLEDATA | BUILTIN | LIBMODULE 1117 8021 USER SINGLEDATA | BUILTIN | LIBMODULE 10f7 8021 GDI SINGLEDATA | BUILTIN | LIBMODULE 10cf 8021 TIMER SINGLEDATA | BUILTIN | LIBMODULE 10b7 8021 COMM SINGLEDATA | BUILTIN | LIBMODULE 109f 8021 SYSTEM SINGLEDATA | BUILTIN | LIBMODULE 1007 8021 KERNEL SINGLEDATA | BUILTIN | LIBMODULE =====dump all modules===== 008F0000-008F9000 otvdm.exe 774D0000-77674000 ntdll.dll 770F0000-771E0000 KERNEL32.DLL 771E0000-7741A000 KERNELBASE.dll 76720000-7679C000 ADVAPI32.dll 75FF0000-760AF000 msvcrt.dll 75EB0000-75F26000 sechost.dll 75F30000-75FEF000 RPCRT4.dll 75D90000-75EB0000 ucrtbase.dll 72AB0000-72AC5000 VCRUNTIME140.dll 74070000-740AA000 libwine.dll 6F6C0000-6F73B000 krnl386.exe16 76DC0000-76F5C000 USER32.dll 767A0000-767B8000 win32u.dll 767C0000-767E4000 GDI32.dll 761F0000-762D5000 gdi32full.dll 767F0000-7686B000 msvcp_win.dll 75720000-75CD6000 SHELL32.dll 75470000-754B5000 SHLWAPI.dll 721C0000-7223F000 DSOUND.dll 76870000-76AF0000 combase.dll 745F0000-74634000 powrprof.dll 72A70000-72A8D000 winmmbase.dll 73FB0000-74026000 WINSPOOL.DRV 76B50000-76BD7000 shcore.dll 74510000-7451D000 UMPDC.dll 761C0000-761E5000 IMM32.DLL 74DF0000-74E19000 ntmarta.dll 74060000-74068000 system.drv16 74050000-74058000 comm.drv16 74040000-74048000 timer.drv16 6F630000-6F6B7000 vm86.dll 75680000-75699000 imagehlp.dll 6F600000-6F622000 gdi.exe16 6F450000-6F5F9000 user.exe16 75350000-75358000 VERSION.dll 73B30000-73BA4000 UxTheme.dll 744F0000-74509000 MPR.dll 76CD0000-76DA4000 MSCTF.dll 77420000-774B6000 OLEAUT32.dll 754C0000-755A3000 ole32.dll 74DE0000-74DEF000 kernel.appcore.dll 75CE0000-75D3F000 bcryptPrimitives.dll 74030000-74039000 display.drv16 6F440000-6F448000 keyboard.drv16 6F430000-6F438000 mouse.drv16 747D0000-74DDD000 windows.storage.dll 747A0000-747C5000 Wldp.dll 74640000-74702000 PROPSYS.dll 6F410000-6F42A000 mmsystem.dll16 750A0000-750C8000 WINMM.dll 6F400000-6F409000 sound.drv16 6F3F0000-6F3FD000 msvideo.dll16 6F3C0000-6F3E2000 MSVFW32.dll 6F330000-6F3BD000 COMCTL32.dll 6F320000-6F32A000 avifile.dll16 6F300000-6F31B000 AVIFIL32.dll 6F2E0000-6F2F9000 MSACM32.dll 6F2C0000-6F2DB000 commdlg.dll16 76110000-761BF000 COMDLG32.dll 6F2B0000-6F2B9000 toolhelp.dll16 6F2A0000-6F2A8000 win87em.dll16 74E50000-74FD8000 dbghelp.dll 6F280000-6F295000 mcicda.dll 6F210000-6F27B000 MMDevAPI.DLL 72BC0000-72BE4000 DEVOBJ.dll 75640000-7567B000 cfgmgr32.dll 6F1D0000-6F20A000 wdmaud.drv 6F1C0000-6F1C7000 ksuser.dll 6F1B0000-6F1B8000 AVRT.dll 6F070000-6F1A6000 AUDIOSES.DLL 6F060000-6F06A000 msacm32.drv 6F050000-6F058000 midimap.dll 76C50000-76CCE000 clbcatq.dll 6F040000-6F048000 wing.dll16 737C0000-73854000 TextShaping.dll 73320000-733D9000 textinputframework.dll 730A0000-7331E000 CoreUIComponents.dll 73000000-7309B000 CoreMessaging.dll 756A0000-75703000 WS2_32.dll 72F20000-72FFB000 wintypes.dll 6F030000-6F037000 ir41_32.ax 1C400000-1C4D6000 ir41_32original.dll 20: vm86.dll!load_x87function+0x7141 - 0x6f67bb40 0x6f682c81 (null):0 19: ntdll.dll!LdrSetDllManifestProber+0xf8 - 0x7753cd80 0x7753ce78 (null):0 18: ntdll.dll!RtlUnwind+0x1cb - 0x77538f30 0x775390fb (null):0 17: ntdll.dll!KiUserExceptionDispatcher+0x26 - 0x77544f90 0x77544fb6 (null):0

16: vm86.dll!disassemble_debug+0x48e - 0x6f683610 0x6f683a9e (null):0 15: vm86.dll!disassemble_debug+0xd74 - 0x6f683610 0x6f684384 (null):0 14: vm86.dll!wine_call_to_16_regs_vm86+0x53 - 0x6f683300 0x6f683353 (null):0 13: krnl386.exe16!K32WOWCallback16Ex+0x454 - 0x6f70d450 0x6f70d8a4 (null):0 12: user.exe16!call_native_wndproc_context+0x332 - 0x6f460810 0x6f460b42 (null):0 11: user.exe16!call_native_wndproc_context+0x621c - 0x6f460810 0x6f466a2c (null):0 10: user.exe16!_wine_call_wndproc+0xa19 - 0x6f466a40 0x6f467459 (null):0 9: krnl386.exe16!RegFlushKey16+0x743 - 0x6f6f8ca0 0x6f6f93e3 (null):0 8: krnl386.exe16!vm_debug_get_entry_point+0x7fc - 0x6f6f9440 0x6f6f9c3c (null):0 7: vm86.dll!disassemble_debug+0x11b4 - 0x6f683610 0x6f6847c4 (null):0 6: vm86.dll!wine_call_to_16_regs_vm86+0x53 - 0x6f683300 0x6f683353 (null):0 5: krnl386.exe16!K32WOWCallback16Ex+0x454 - 0x6f70d450 0x6f70d8a4 (null):0 4: krnl386.exe16!LoadModule16+0x7a4 - 0x6f6f3a00 0x6f6f41a4 (null):0 3: krnl386.exe16!RestoreThunkLock+0xe7b - 0x6f6ff6d0 0x6f70054b (null):0 2: KERNEL32.DLL!BaseThreadInitThunk+0x19 - 0x771100b0 0x771100c9 (null):0 1: ntdll.dll!RtlGetAppContainerNamedObjectPath+0x11e - 0x77537a30 0x77537b4e (null):0 0: ntdll.dll!RtlGetAppContainerNamedObjectPath+0xee - 0x77537a30 0x77537b1e (null):0 cs:ip=1417:879c bp=8b90 args(1417,0000,1a3f,0000,2d87,0026,0026,0000,0000,0000) cs:ip=1417:7aa6 bp=8bc9 args(0035,0000,1a37,0000,0026,e224,0387,0000,0000,2d80) cs:ip=1407:71bb bp=8c45(call 1417:794d) args(0000,1a37,0035,03bd,0026,e224,0387,182f,0000,2d80) (callback)cs:ip=102f:0458 bp=8c7f cs:ip=1417:10e0 bp=8c9b(call 111f:5286) args(9b99,1ca2,1357,922e,1837,3a44,475c,4d41,5345,435c) cs:ip=13ef:1775 bp=8ca1(call 1417:10af) args(922e,1837,3a44,475c,4d41,5345,435c,5649,5c32,6976) cs:ip=1357:1ca2 bp=9b99(call 13ef:173f) args(0000,0b00,0b0b,1313,1b13,1b1b,2323,2b23,2b2b,3333) cs:ip=1287:0286 bp=a2ad(call 1357:1886) args(0060,5f30,0001,6f6d,2af8,0f91,1837,a2c9,45df,122f) cs:ip=122f:12da bp=a2c1(call 1287:00ee) args(1837,a2d1,13b3,1237,1837,a2dd,13f7,1237,5fd8,5f30) cs:ip=122f:45df bp=a2c9 args(1837,a2dd,13f7,1237,5fd8,5f30,1837,0001,00b7,120f) cs:ip=1237:13b3 bp=a2d1(call 122f:45d1) args(5fd8,5f30,1837,0001,00b7,120f,0001,0080,11f7,0000) cs:ip=1237:13f7 bp=a2dd(call 1237:13a4) args(0001,0080,11f7,0000,1836,0000,0458,102f,0000,0000) cs:ip=120f:00b7 bp=0001(call 1237:13b8) args(a310,0000,6384,a2ee,a2ee,030d,0000,8d3e,5284,1837) cs:ip=120f:0000 bp=0000 args(0000,a310,0000,6384,a2ee,a2ee,030d,0000,8d3e,5284)

address=7731D8A2 access address=6F68BBFC VM context EAX:7CA6,ECX:5CA8,EDX:60895CA7,EBX:0016 ESP:8B76,EBP:8B90,ESI:7CA6,EDI:0000 ES:2D87,CS:1417,SS:1837,DS:1837,FS:0000,GS:0000 IP:879C, address:6F69AC2D EFLAGS:00003297

Interrupt 0D #GP (1417:8798) flags 3297 err 5CA4 mov es,es:[bx+1Ah]

cracyc commented 1 year ago

There was a bug with civ2 fixed in https://github.com/otya128/winevdm/issues/1273, the build you have is from before that. Try the latest build from https://ci.appveyor.com/project/otya128/winevdm/builds/47224944/job/e3vfb6nx7dm6grkb/artifacts .

SlobHumar commented 1 year ago

Thank you for the reply, this time it's better, but still unplayable. I don't get those errors on splash screen any more To speed up process I entered cheat menu and built UN. Video plays fine, but just after it ends I get this error and after that game completely freezes. I can still access menus on top with cursor, but when I click on anything I get inside game message that says 'You must close the City Window before the game can proceed' even though no other window is open and that message gives 2 options. 1 - close city window and 2 - OK. When I click 'close city window nothing happens, but I get sound of moving troops and that window closes, and when I click 'OK' that window closes without a sound. Civ 2 error

edit - forgot to mention that after this error I can only exit game with task manager edit 2- exactly same error happens just before screen of newly discovered technology tries to open

cracyc commented 1 year ago

I can't repo this, building wonders seems fine. I don't have a get_info.rec file either but I do have a get_info.exe file which is part of the civilopedia. Is the game installed correctly? I found that if the game is run from the cd it'll hang similarly to how you describe when a civilopedia page is opened.

SlobHumar commented 1 year ago

Thank you for your help. I installed it again. I mounted Sid_Meier_s_Civilization_II_ENG.bin file (615.165.600 bytes) to virtual drive and run setup with otvdm-master-2436. Game installed properly, then I updated with patch to v2.42 and copied Kings and Video folders from virtual drive. When I put cd music plays without problems. I also have get_info.exe file in Pedia folder, but I get that error again. Every time I'm in game and try to open anything from Civilopedia, except 'About Civilization II', game gives the same error and freezes.

cracyc commented 1 year ago

Need a trace. See https://github.com/otya128/winevdm/issues/226#issuecomment-779702542 for instructions.

SlobHumar commented 1 year ago

trace.txt

cracyc commented 1 year ago

This trace is missing the error message.

SlobHumar commented 1 year ago

Maybe I'm doing something wrong - in cmd pasted set WINEDEBUG=+relay hit enter, then "D:\Games\CIV2\civ2.exe" 2> trace.txt and this is what I get cmd trace

edit - I also get this window Inactive

cracyc commented 1 year ago

Enter "cd D:\Games\CIV2\" first so the civ2 path is is current directory.

SlobHumar commented 1 year ago

Thank you for your patience, I seem to get exact trace result as before and same 'Inactive' window trace.txt Capture cmd

cracyc commented 1 year ago

Oops, I forgot you also need a "d:" to change the current drive,

SlobHumar commented 1 year ago

I can't upload it, around 160MB

edit - I repeated process. OK, when I hit enter after D:\Games\CIV2>D:\Games\CIV2\civ2.exe 2> trace.txt game starts and until that 'get info' error trace.txt size continues to grow, I waited several seconds more before I entered Civilopedia tab inside game, to get that error and now trace.txt is almost 250MB

cracyc commented 1 year ago

Try compressing it. It's all text and will compress very well.

SlobHumar commented 1 year ago

trace.zip

cracyc commented 1 year ago
2a40:Call KERNEL.74: OPENFILE(318776d4 "D:\\Downloaded Programs\\otvdm master\\otvdm-master-2436\\WINDOWS\\A3W_DATA\\GET_INFO.REC",318775dc,0022) ret=315f:22f1 ds=3187
2a40:Ret  KERNEL.74: OPENFILE() retval=0000ffff ret=315f:22f1 ds=3187

Winevdm needs to be either on a drive with short filenames enabled or in a path with all of the directories are 8.3 chars long. It's trying parse this path but fails because it expects dos compatibles filenames.

SlobHumar commented 1 year ago

Oh yes, that works perfect bro, thank you so much!!! It's way better than playing with dosbox.

edit - I just encountered another issue. First save goes OK, but when I try to save again after few moves it fives me this error Save failed

cracyc commented 1 year ago

Need another trace.

SlobHumar commented 1 year ago

https://file.io/7zp1W4rHDQjv Building city New tech found after city build Choosing new tech to research Capture

cracyc commented 1 year ago

Try https://github.com/otya128/winevdm/pull/1299 to see if it fixes the popup error. The trace was deleted so I still need one to look at the file save problem.

SlobHumar commented 1 year ago

I lose sound after several moves. No other issues for now, I will test more later. trace.zip mmsys

cracyc commented 1 year ago

This was an error in the patch where the file was being closed so mmioclose would fail. I updated the patch to not do that, if you try it the problem should be fixed.

SlobHumar commented 1 year ago

Thank you so much, that last version fixed it indeed and in the meantime I upgraded to 2.7.8l. I didn't want to post earlier, I tested for few hours and everything works great, fingers crossed :) . As I said before it's much better gameplay experience than with dosbox.

SlobHumar commented 1 year ago

Me again, please don't freak out lol. I don't have problem while playing, but I noticed this error, should I be concerned? Err handle

cracyc commented 1 year ago

It's probably a handle leak. It should only happen after running a long time and be fine if you restart the game. Fixing it would be nice but that error isn't enough info and a trace would probably be extremely large by the time it occurs.

SlobHumar commented 1 year ago

You are right, I was playing for more than 10 hours before it occurred, but it doesn't affect gameplay.