-
Notifications
You must be signed in to change notification settings - Fork 93
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Halo 2 For Windows Vista Issues #291
Comments
Can you try with the latest build. Just replace the dxwrapper.dll file with the one in this package: dxwrapper.zip |
Same crash as far as I can tell. Attached is the log generated from that build. |
Just from the logs it looks like the game is creating a second device before releasing the first. Can you try with the debug log and send the full log back? Here is the debug log. Just pull the dxwrapper.dll file from this: dxwrapper.zip |
Sure, here ya go. |
Just saw the commit, tried it and it still crashed. Here's the debug log. |
Thanks! I fixed an issue that I found from your logs. I see what is happening now. The game creates a |
I don't really have a good way to test this use case but I put a fix (just a hack for now) in for it. Let me know if you still have issues with the latest build. |
That did fix it! The game does start now. |
Ok, great. Thanks for the confirmation. |
I put a proper fix in for this. If you have a chance I would appreciate it if you can test with the latest build to make sure it still works. Thanks! |
That seems to crash on my end. |
That is the same place it crashed before. Let me see what I did wrong here. |
Using the build that was working with the D3d9Wrapper before, I went ahead and tested a few things, and it looks like the game still has the same few issues as I was having natively. On modern Nvidia cards (seemingly a driver related thing), there are two issues with the game visually. First is that anti-aliasing enabled through the game's settings causes seams throughout the map, and secondly, on the singleplayer campaign level Delta Halo, leaves on a few trees near the start of the level don't render at all. Both of these issues seem to be fixed with dgVoodoo2, but that has a fair share of it's own issues with the game. Here are some screenshots showing the issues: |
Yeah. This is an issue with vertices that the game uses. I have been meaning to put a fix in for this but it is lower on my priority. See this thread for a better explanation. I see this with a number of games, including Knight Rider 2 and Star Trek: Armada 1. Older games, but the same issue. Keep in mind that the MSAA uses edge aliasing which can make the edges semi or full transparent, thus showing this issue. A better solution is to use SSAA, but I have not built an engine for that here. I did build one for Silent Hill 2 Enhanced Edition.
My D3d9Wrapper does not have too many fixes in it for Direct3D9. Most of the fixes I have are for older games Direct3D8 and older. I would need to figure out what is causing this and then put a fix in. I am just wrapping the dll and then calling the native APIs with not many changes. dgVoodoo2 is actually converting all the functions to Direct3D11/12. It is closed source so I cannot really see what is happening and I am not good at debugging compiled code to check it out. However, this is not really needed as there is a way to cover them all to Direct3D12, built into Windows. See here. I added support for this in dxwrapper already. However, I do want to fix the crash in my wrapper. Can you try with this debug version. I added extra logging to try and see what is going on: dxwrapper.zip |
Here's the crash log you requested. I understand you on the other two bits, but quick note on those two issues if it changes anything, I'm pretty sure they both only happen on Nvidia, and work fine on AMD, can't test that myself with an Nvidia card though. |
Tried the latest commit, still crashes. |
Can you send me a debug log from one that does not crash? |
For some reason, with the debug build, I can't get in game, but with the release one, I can. I'll attach both logs to see if that'll help. |
I am not sure I understand what the game is trying to do here. It is switching between the IDirect3DDevice9 and the IDirect3DDevice9Ex interfaces. Anyways, I reverted most of the recent changes to try and put it back to the working condition and added the code to that. My other ways of trying to fix this did not work.
Yeah, I had a bug in the debug build then. It has been fixed.
Yes, I have seen a number of these. In the Silent Hill 2 Enhanced Edition project we put a number of fixes in specific to Nvidia. Maybe Nvidia is more struct with the interpretation of how things should work, whereas some of these older games are more loose about it. I will look into these other issues at some point, but I cannot promise when. I am currently really focused on the |
BTW: if you get a chance please test the latest build to make sure that works. I just want to make sure I fully fix this. |
Debug build still crashes, but release works. I'll still include both logs though. Issue with release that I noticed though is that I need to start up my desktop with the resolution set higher than 1080p, the limit for the game, or else the game will crash, even with release. The game auto switches to 1080p and if it crashes, the desktop resolution will stick at 1080p. Including a 1080p release log (crashes) and one with my desktop set to 4k (works), as well as a debug build log (crashes no matter what). dxwrapper-halo2-1080p.log |
Thanks for all your testing. This is kind of frustrating because I don't quite understand how Direct3D9 works when a game switches between the two interfaces like this game does. And Microsoft does not have good documentation on this. Anyways, I appreciate all your testing. I will review this and see if I can figure out what is happening.
Does this happen even with the very first build that worked? |
Yes. |
I think maybe the crash in the debug build is happening because of imgui. I disabled that in the latest build. Hopefully this will work in the debug build.
This happens because either the game or Windows does not reset the screen after the game crashes because the code is bypassed from the crash. I added a feature to solve this issue. If you add the below line to the ini file it should fix this issue. ResetScreenRes = 1 |
So, the new build works fine as far as I can tell! I did notice an issue with it is that it doesn't play the intro video correctly, still just showing the Halo 2 boot logo while the Bungie logo audio plays in the background, and it'll also just skip to the menu part way through said intro. Was going to upload the log here for this issue, but it actually made a 135 MB log! Here's that uploaded to Mega. |
I found a copy of Halo 2 and installed it. There appears to be three issues with this game. I am working on a fix.
Issue 1 caused the first crash, which I fixed several times in different ways. |
I just checked in the fixes for the wrapper for this game. Note: there is no need to use the |
From looking at the picture it appears that what is happening is that the video was record at a lower resolution and then stretched to fit a larger window size. In the native case it uses linear scaling. In the dxwrapper case it uses point (or nearest neighbor) scaling. Frankly, from the pictures in GitHub the native one looks more bleary to me. I am not sire what could cause this. Let me look into it. |
They actually did this as an XP blocker, to sell the whole "for Vista", nonsense, the game was made to work on XP within days of launch because it was a simple matter of stubbing the interface out :D
The addition of bitmap alpha_white to text_bump_alpha_single_pass when porting H2X to PC introduced this, Project Cartographer has long since resolved it. (and 343 for MCC) |
Attempting to play Halo 2 for Windows Vista with dxwrapper and EnableD3d9Wrapper set to 1 crashes the game past the initial "Halo 2" logo that shows upon booting the game. Attached is my dxwrapper log.
dxwrapper-halo2.log
The text was updated successfully, but these errors were encountered: