Finally got an opportunity to fiddle around with Cxbx on Windows 7 to verify a few things I've been curious about, thanks to my neighbour who needed me to reinstall windows for him. The results were disappointing but at least now I know what I'm dealing with. As much as I really hate to say it, Cxbx appears to be most compatible with Windows Vista and Windows 7 just appears to give me the same issues Windows XP usually does. Panzer Dragoon ORTA still hangs and not even the demo worked like it did in XP. The multithreading nightmare continues...
A bit of good news did arise though. I managed to get Zapper to get passed the intro videos. I have no idea why it didn't crash at that particular moment. It did when I was approaching ingame though. Strange. Even stranger, when I tried running it again, it crashed with the same exception again. I never could figure out what was wrong with this game let alone find out what API is causing the crash. It looks like an internal issue with Windows user mode runtime .dlls, I guess. Oh well, I was looking forward to playing this game on PC too. Too bad my debugging skills suck, otherwise maybe we wouldn't have this issue as games that use the Blitz engine have the same issue it seems like.
Shogun.
What is the error being reported by it when crashing? Have a hex reference?
ReplyDeleteThis game, as well as other games using the Blitz game engine during that time, it's kind of tricky finding out where the crash really occurs. Turns out that on XP, the game will crash at one point, then continuously crash again somewhere else in 0x7xxxxxxx until Cxbx just exits and the crash dump is never seen. I went over the KrnlDbg.txt file and found this pattern. On Win7, it just crashes with an error message and that's it.
DeleteI've taken a further look into what's happening. I found out that there's an infinite recursion going on in the exception handler which causes the real crash point never to be revealed in XP, but Vista and later just shows that it crashes when the error is being reported (something wrong when MessageBox() is called). In the NTSC version, the actual crash point is 0xD99E2. It's right after some vertex buffer creation routine. It creates a vertex buffer, then locks it, after that it dies. I doubt it matters, but the vertex buffer size wasn't specified either.
I can't believe I missed this. Cxbx's implementation of D3DVertexBuffer_Lock2() lacks error checking of any kind, so I will investigate this. Thanks for asking!
Shogun
An example of the bug hunting method known as 'explain it to Blogger' or rubber duck debugging.
DeleteGood to see!http://blog.regehr.org/archives/208
Are you running Win7 32 bit or 64 bit? I'm getting ramped up on this code and want to work toward getting it working in the 64 bit environment. Curious if you've made any progress on this before I get going.
ReplyDeleteIt only works in 32-bit. None of us have been successful in getting this working in 64-bit.
DeleteThis definitely a great project you have going here. Glad to see people still working. How exactly would I go about getting involved in assisting the emulation project?
ReplyDeleteBeen a fan of it since 2003, and wanted to help ever since! When progress started dying down, I jumped in head first!
DeleteWell what can I do to help?
DeleteFirst game mmorpg what i play was liero, this was seocnd and i think its great.
ReplyDelete