The forum

Let's get Halo 2 running

An experimental thread

Author Replies
Howy Saturday 15 October 2011 at 19:45
HowyAnonymous

Ok, so, I've been working to get Halo 2 running through PlayOnLinux. My posts have obviously been rejected at Ubuntuforums and WineHQ, so I hope someone around here will be happy to help. ;-)
This is what I'm doing currently to make it work:
-Set Windows version to Vista.
-Enable a 1024x768 virtual desktop
-Install directx9 package
-Install gfwl package
-Installed dinput, just in case
-Install all msxml packages and register them with regsvr32.exe in command prompt (Otherwise they won't work)
-Install vcrun2005, just in case

Now, running this is done like so: Pop in disc, and run the Startup.exe file from within POL, no cmd prompt or loader. The disc is original without additional dll files.

These are the conditions:
-Wine is set to system, which is running 1.3.30.
-It's Ubuntu 11.10 64-bit
-AMD quad-core CPU 3Ghz
-6Gb RAM
-Radeon HD5750 512Mb

This pops up:
[POL_Wine] Message: Running wine- /mnt/Startup.exe
fixme:ole:CoInitializeSecurity ((nil),0,(nil),(nil),1,3,(nil),0,(nil)) - stub!
fixme:msxml:domdoc_get_parseError (0x13fb9c)->(0x33a560): creating a dummy parseError
fixme:msxml:parseError_get_line (0x13fc60)->(0x33a57c)
fixme:msxml:parseError_get_linepos (0x13fc60)->(0x33a580)
fixme:msxml:domdoc_get_parseError (0x13fc04)->(0x33a560): creating a dummy parseError
fixme:msxml:parseError_get_line (0x13fad8)->(0x33a57c)
fixme:msxml:parseError_get_linepos (0x13fad8)->(0x33a580)
fixme:ole:TLB_ReadTypeLib Header type magic 0x00905a4d not supported.
err:ole:TLB_ReadTypeLib Loading of typelib L"Z:\\\\mnt\\\\Startup.exe" failed with error 0
fixme:ole:TLB_ReadTypeLib Header type magic 0x00905a4d not supported.
err:ole:TLB_ReadTypeLib Loading of typelib L"Z:\\\\mnt\\\\Startup.exe" failed with error 0
fixme:ieframe:PersistStreamInit_InitNew (0x144610)
fixme:ieframe:OleObject_Advise (0x144610)->(0xa71f3c, 0xa71f94)
fixme:ieframe:ViewObject_SetAdvise (0x144610)->(1 00000000 0xa71f3c)
fixme:ieframe:ViewObject_Draw (0x144610)->(1 -1 (nil) (nil) (nil) 0x6a0 0xa71fac 0xa71fac (nil) 00000000)
fixme:urlmon:URLMoniker_BindToObject use running object table
fixme:iphlpapi:NotifyAddrChange (Handle 0x17be92c, overlapped 0x17be910): stub
fixme:ieframe:ClOleCommandTarget_QueryStatus (0x1446c0)->((null) 1 0x33781c (nil))
fixme:ieframe:ClOleCommandTarget_QueryStatus command_0: 27, 0x0
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented cmdid 25
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented cmdid 26
fixme:ole:TLB_ReadTypeLib Header type magic 0x00905a4d not supported.
err:ole:TLB_ReadTypeLib Loading of typelib L"Z:\\\\mnt\\\\Startup.exe" failed with error 0
fixme:ole:TLB_ReadTypeLib Header type magic 0x00905a4d not supported.
err:ole:TLB_ReadTypeLib Loading of typelib L"Z:\\\\mnt\\\\Startup.exe" failed with error 0
fixme:ole:TLB_ReadTypeLib Header type magic 0x00905a4d not supported.
err:ole:TLB_ReadTypeLib Loading of typelib L"Z:\\\\mnt\\\\Startup.exe" failed with error 0
fixme:ole:TLB_ReadTypeLib Header type magic 0x00905a4d not supported.
err:ole:TLB_ReadTypeLib Loading of typelib L"Z:\\\\mnt\\\\Startup.exe" failed with error 0
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented group {000214d1-0000-0000-c000-000000000046}
fixme:ntdll:NtLockFile I/O completion on lock not implemented yet
fixme:ieframe:ClientSite_GetContainer (0x1446c0)->(0x33782c)
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented group {000214d1-0000-0000-c000-000000000046}
fixme:ieframe:ClientSite_GetContainer (0x1446c0)->(0x33866c)
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented cmdid 25
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented cmdid 26
fixme:ieframe:navigate_url Unsupported args (Flags 0x339c40:3; TargetFrameName 0x339bf0:0)
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented cmdid 29
fixme:ieframe:DocHostUIHandler_GetDropTarget (0x1446c0)
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented group {000214d0-0000-0000-c000-000000000046}
fixme:ieframe:PropertyNotifySink_OnChanged unimplemented dispid 1005
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented group {000214d0-0000-0000-c000-000000000046}
fixme:win:EnumDisplayDevicesW ((null),0,0x339118,0x00000000), stub!
fixme:resource:GetGuiResources (0xffffffff,0): stub
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented group {000214d1-0000-0000-c000-000000000046}
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented group {000214d1-0000-0000-c000-000000000046}
fixme:ieframe:ClientSite_GetContainer (0x1446c0)->(0x339c14)
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented group {000214d1-0000-0000-c000-000000000046}
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented cmdid 25
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented cmdid 26
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented cmdid 29
fixme:ieframe:DocHostUIHandler_GetDropTarget (0x1446c0)
fixme:jscript:JScriptProperty_SetProperty Unimplemented property 70000001
fixme:jscript:JScriptProperty_SetProperty Unimplemented property 70000002
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented group {000214d0-0000-0000-c000-000000000046}
fixme:ieframe:PropertyNotifySink_OnChanged unimplemented dispid 1005
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented group {000214d0-0000-0000-c000-000000000046}
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented cmdid 26
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented cmdid 29
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented group {000214d1-0000-0000-c000-000000000046}
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented group {de4ba900-59ca-11cf-9592-444553540000}
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented cmdid 35
fixme:ieframe:ClOleCommandTarget_Exec Unimplemented cmdid 28
fixme:ieframe:DocObjectService_FireDocumentComplete 0x15940e8 0x1593680 0


We are now left with a blue window.

Closing it produces this error:
fixme:ieframe:ControlSite_OnFocus (0x1446c0)->(1)
err:mshtml:handle_htmlevent Could not get nsIDOMNode: 80004002
fixme:ieframe:ViewObject_SetAdvise (0x144610)->(1 00000000 (nil))
fixme:ieframe:OleObject_Unadvise (0x144610)->(0)
fixme:ieframe:ControlSite_OnFocus (0x1446c0)->(0)
fixme:ieframe:InPlaceSite_OnInPlaceDeactivateEx fNoRedraw (1) ignored
fixme:mshtml:HlinkTarget_SetBrowseContext (0x17d728)->((nil))
[POL_Wine] Message: Wine return: 0


From this, we obviously know that there is an error with OLE, msxml and something called ieframe.

Anyone wanna have a try at this?
Howy Friday 9 December 2011 at 16:51
HowyAnonymous

Ok, I think I know why Halo 2 won't run. When reading instructions and checking installs on Windows, there is one common part: the UAC. It's a bit like gaining root permissions in Unix I guess. This, however, seems to be something the installer will look for to see if it's available. Typical program procedure. And in this case, it seems they use it to protect the installation's data, so we won't be getting far unless we can circumvent the UAC somehow.

EDIT (22.01.11):
Upon further inspection of the files on the disc... I found... HTML.
The installer uses HTML, guys. All these errors are probably causes because there is no Internet Explorer version that is compatible. (IE6 was never used in Vista, right?)
Soo... If I can install IE7 in the Wine prefix... We might get some action going.
Okay... We got some steps closer. Less OLE errors, more specific ones.
You apparently need the wintrust package along with msasn1.dll file. (All installable.)
You also need IE7, of course.
This is the output:
fixme:crypt:I_CryptCreateLruCache (0x33fcf4, 0x76c5a018): stub!
fixme:crypt:I_CryptInstallAsn1Module (0x13b948 00000000 (nil)): stub
fixme:ole:CoInitializeSecurity ((nil),0,(nil),(nil),1,3,(nil),0,(nil)) - stub!
fixme:msxml:domdoc_get_parseError (0x149454)->(0x33a530): creating a dummy parseError
fixme:msxml:domdoc_get_parseError (0x14b3b4)->(0x33a530): creating a dummy parseError
fixme:crypt:I_CryptGetAsn1Decoder (00000001): stub
fixme:crypt:CryptMsgVerifyCountersignatureEncodedEx (00000000, 00010001, 0x153f20, 1223, 0x158bd4, 524, 2, 0x1503d8, 00000000, (nil)): stub
fixme:ras:RasEnumConnectionsA (0x630607a8,0x337048,0x6305f610),stub!
fixme:ras:RasEnumConnectionsA RAS support is not implemented! Configure program to use LAN connection/winsock instead!
fixme:service:EnumServicesStatusW resume handle not supported
fixme:commctrl:TaskDialogIndirect 0x339cd0, 0x339cc4, (nil), (nil)
fixme:commctrl:TaskDialogIndirect dwCommonButtons=20 uType=0 ret=1

This time I decided to go for a Windows XP loader. It could be essential for this to work, because on a regular Vista/7 system UAC is used through the installation.
But from the output we see that we're mainly having issues with encryption, which needs to be solved by the developers behind the wintrust package.
But basically, we should focus on these errors, if they are errors at all. I've seen Wine programs run despite output like this appearing, but it's hard to know.
fixme:crypt:I_CryptCreateLruCache (0x33fcf4, 0x76c5a018): stub!
fixme:crypt:I_CryptInstallAsn1Module (0x13b948 00000000 (nil)): stub
fixme:ole:CoInitializeSecurity ((nil),0,(nil),(nil),1,3,(nil),0,(nil)) - stub!

fixme:crypt:I_CryptGetAsn1Decoder (00000001): stub
fixme:crypt:CryptMsgVerifyCountersignatureEncodedEx (00000000, 00010001, 0x153f20, 1223, 0x158bd4, 524, 2, 0x1503d8, 00000000, (nil)): stub
fixme:ras:RasEnumConnectionsA (0x630607a8,0x337048,0x6305f610),stub!
fixme:ras:RasEnumConnectionsA RAS support is not implemented! Configure program to use LAN connection/winsock instead!
I'm sure there is something we can do about these errors at the moment. I circumvented a lot of errors through switching and mixing libraries.
And as soon as we get the installer working, we're a step closer to run Halo 2 on our much-appreciated Linux systems. :)

The installer is apparently a bit complicated from Microsoft's side. What you're presented with is a webpage, which through Javascript communicates back to the program with special commands. I'm unfortunately not allowed to share this nor do I have javascript knowledge. (I'm a PHP guy.)

Ok, through variation of libraries, I've come to a vast list of errors/fixmes regarding typelib2 and a couple of errors with d3d and ddraw. A good sign. Also, there is an unreadable error from Internet Explorer, which means it is loading correctly, but there is some error with a library. Also, the main window is white now, which means there was an error loading the HTML file.
Specifically, it seems like we need to use the native mshtml library and integrated jscript library.
It amazes me how Windows works with all these errors popping up. I wouldn't say it's a positive selling-point.
Ok, end result for the day:
A white Halo 2 installer window and an all-white Internet Explorer window without anything in it, and no title. How descriptive. :)

Edited by Howy